Contract 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1756a89cec7e639d9be05488811dd7d445681dc340f1ff9de00b1d59f6e5e83aApprove145447352022-01-21 0:47:396 days 16 hrs ago0x94b9e591e4c789f119ca6634456ce7103eae089e IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.0000755196
0x06461706f003e17c0f5ce3c037413d65e0b15f1f0eee4653f40400ce0fd87515Approve145074382022-01-19 17:41:057 days 23 hrs ago0x2c59e747e822807dcec17c59601ec8ac0b55fecd IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000221005
0x1400fefa7863c9a46dfda5b663fee9fa295594b9ee5118ddb7a6715f031dababApprove135146822021-12-16 3:43:1842 days 13 hrs ago0x55e9e536faf114ed4e074e55ba1e64bac3bc604b IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.0000755196
0x6ed78c24e52eae914661695d1bfc006e4d7aa425908773849eb040bf6935628dApprove129706972021-11-26 13:02:4162 days 3 hrs ago0x6750edbecfba09550b505e2e385407db43a2f0aa IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000222145
0x2dcecbfd7ce2d158b0412d40bf7a3908b5f43f24a6e3bae395d45e50c2695169Transfer128825362021-11-23 6:04:3465 days 10 hrs ago0x0ef3cc065cff8fcd1e71a321e6fb80671842aaa3 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.00036744
0xfc3460f8fa5a5a25746107b590a5f2fc86c56f847bd8745ed4ddb02a1f0fc22aApprove126503562021-11-14 20:00:2973 days 21 hrs ago0x06dea781b0ca4d07e02bede743af0c74531ddc7b IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000266574
0xe53244c9c0700e15bea41278ee05c5e687d31d29e7034b11a605a6bf25c5a213Transfer125163712021-11-10 0:19:3578 days 16 hrs ago0xffe231ec752fd2b20acc3614ccf92ae04162c99f IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0.001580058241615 BNB0.000105275
0x5c70695d5183a34ad85512dc2516c8028202aaa9c458a4620250a5da3bbee2bdApprove125072452021-11-09 16:40:5579 days 21 mins ago0xb9694c5853e94c2a220f30b17a884770af669b32 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000221005
0x8e65925742376c85024f4b34dec5945699c6049b03b6ea75ee20f63a542dc313Give Me Welfare ...122982852021-11-02 7:02:3886 days 9 hrs ago0x7f421a4a31f2b2109941ba63dbfcc0e2eed2fac5 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.00036641
0x66c492544ed5351b561d4524ecf9f57e2cdf535fcab3410a6f6c81f19a1f76e8Manual Depost122981962021-11-02 6:58:1186 days 10 hrs ago0x7f421a4a31f2b2109941ba63dbfcc0e2eed2fac5 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000111305
0x325f9a744fae38a26292e4d32d27522226d7bce6b799790bd114e0350184e1fdGive Me Welfare ...122048352021-10-29 23:49:5489 days 17 hrs ago0x01baa289120bf59e8406462762f3507f2fd6a18e IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000153755
0xd76171dec513b65291c086b445c76bd41a7d489675f45b2a8f4dd27172a444f2Approve121304512021-10-27 8:15:5392 days 8 hrs ago0x995a6721c34d8a7fc1ee36329960dc0074a19750 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000072615
0xea7a8af74cb8f065cf28e39c8d4b25677022ae8f00b5e497afffe8490c49bf7dApprove119170992021-10-19 20:13:0299 days 20 hrs ago0x6f5adfb32418726dab19f66853ffbec20092e1be IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000072615
0x29127349038a51494d5384241fde1385c94c79e3bebc87ac5454aff408298273Approve118103572021-10-16 2:23:48103 days 14 hrs ago0x3d964cdaf72adcd26d7750d2db891720755d5d8e IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.0000740673
0x124c5681741df0f800f2bc6eb89e0421b9f2c56d3ce310e6d45bf62375a6ada6Approve117778702021-10-14 23:13:48104 days 17 hrs ago0x1f3fc3b700ab5623e4711656557050a766d80487 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000221005
0x1ae4a10a81cadf5ea570a68b1ba1cf09f2b6f7bd98006b08af86e09c3e5fdc9fApprove117260192021-10-13 3:28:14106 days 13 hrs ago0x3d964cdaf72adcd26d7750d2db891720755d5d8e IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000221005
0x21fdb70ba97a3bf7e1e871e4258f46062d519b10a9955b88efc4904a8ed3dccfApprove116928702021-10-11 23:43:07107 days 17 hrs ago0x0a733ec4476233066359864c6a9b547104fa5167 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000220705
0xf9b830daf65f8ac99dcf8fc1d37c6df6e924104a267b1f40c791bfa28a8dcf20Approve116810362021-10-11 13:10:57108 days 3 hrs ago0x0a733ec4476233066359864c6a9b547104fa5167 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000220705
0x4396459905a1fe3a1d5b7e0452e6f7e3f52ecf9d5cc44d76c8a9a2948387e90dApprove116627662021-10-10 21:55:23108 days 19 hrs ago0xc47ecc082638d30451dd7f354a914d4ff5b4a449 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000072615
0xf676391ccf01c450a1f36df35c5003733e57fec25e265eb243f0fd606c036b10Approve116430162021-10-10 5:21:57109 days 11 hrs ago0x19c987645a6e5e8ae6ccc812cc1511fa05694b66 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000072615
0xb24b563850306756383efeb94c8c27da0bc264509c91414c5ee1519449060a71Approve116245232021-10-09 13:56:18110 days 3 hrs ago0xffe231ec752fd2b20acc3614ccf92ae04162c99f IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000124765
0x7523bba294a6e2b3eb8966b89da290133c572e4b8fd0f6917177917405195d2fApprove116245212021-10-09 13:56:12110 days 3 hrs ago0xffe231ec752fd2b20acc3614ccf92ae04162c99f IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000124765
0xec862556c599e387d1a622328dd8bf6ac9e987bbbf95c9796ac5380c57a9af14Approve116245182021-10-09 13:56:03110 days 3 hrs ago0xffe231ec752fd2b20acc3614ccf92ae04162c99f IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000220765
0x25802a6ec96a4161e37345bdfa0d8b10771d499d58e9b6fd62b27cd789779b41Approve115989932021-10-08 16:33:42111 days 28 mins ago0x0a733ec4476233066359864c6a9b547104fa5167 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000220765
0xd3b11bd40e4271fea28ae65d57a4db7faff0d92a1ed0f84851c0fe0fc4f35c6fApprove115622382021-10-07 9:54:13112 days 7 hrs ago0x0a733ec4476233066359864c6a9b547104fa5167 IN  0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0 BNB0.000220765
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xeb7ae1f69d464d38c2275cc0a0bda76a93fa7bb96cce442ae34eb974702e64c9112873412021-09-27 19:13:39121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d0.002225389980850536 BNB
0xeb7ae1f69d464d38c2275cc0a0bda76a93fa7bb96cce442ae34eb974702e64c9112873412021-09-27 19:13:39121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c0.001483593320567024 BNB
0xeb7ae1f69d464d38c2275cc0a0bda76a93fa7bb96cce442ae34eb974702e64c9112873412021-09-27 19:13:39121 days 21 hrs ago PancakeSwap: Router v2 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0.00370898330141756 BNB
0x50fecc8fe92735b321138f322e1cdad0efd1bf9c550cb81a0fa3db6de1d8e6f9112873102021-09-27 19:12:06121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d0.008388100686251529 BNB
0x50fecc8fe92735b321138f322e1cdad0efd1bf9c550cb81a0fa3db6de1d8e6f9112873102021-09-27 19:12:06121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c0.005592067124167686 BNB
0x50fecc8fe92735b321138f322e1cdad0efd1bf9c550cb81a0fa3db6de1d8e6f9112873102021-09-27 19:12:06121 days 21 hrs ago PancakeSwap: Router v2 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0.013980167810419215 BNB
0x5281b9eee846006bb4356a12c04e6f98a4f1f1dee4d4eca09d818a81165bed7e112872882021-09-27 19:11:00121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d0.002132224835659303 BNB
0x5281b9eee846006bb4356a12c04e6f98a4f1f1dee4d4eca09d818a81165bed7e112872882021-09-27 19:11:00121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c0.00142148322377287 BNB
0x5281b9eee846006bb4356a12c04e6f98a4f1f1dee4d4eca09d818a81165bed7e112872882021-09-27 19:11:00121 days 21 hrs ago PancakeSwap: Router v2 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0.003553708059432173 BNB
0x96284f887385cce5265be56ed373371f56e0b0e471d355e9563831de040a2f51112872642021-09-27 19:09:48121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d0.008540370038476768 BNB
0x96284f887385cce5265be56ed373371f56e0b0e471d355e9563831de040a2f51112872642021-09-27 19:09:48121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c0.00569358002565118 BNB
0x96284f887385cce5265be56ed373371f56e0b0e471d355e9563831de040a2f51112872642021-09-27 19:09:48121 days 21 hrs ago PancakeSwap: Router v2 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0.014233950064127948 BNB
0x16f21ebb238886761f395c926454c1d76f138d0bc2ea61e1b547f00bc05e9770112872462021-09-27 19:08:52121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d0.004591197944045837 BNB
0x16f21ebb238886761f395c926454c1d76f138d0bc2ea61e1b547f00bc05e9770112872462021-09-27 19:08:52121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c0.003060798629363892 BNB
0x16f21ebb238886761f395c926454c1d76f138d0bc2ea61e1b547f00bc05e9770112872462021-09-27 19:08:52121 days 21 hrs ago PancakeSwap: Router v2 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0.007651996573409729 BNB
0x22d9ebc3cc308624269434a796a7602e535e2f5fdf03c171e371c5eb09965314112871492021-09-27 19:04:01121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d0.008202214012178397 BNB
0x22d9ebc3cc308624269434a796a7602e535e2f5fdf03c171e371c5eb09965314112871492021-09-27 19:04:01121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c0.005468142674785599 BNB
0x22d9ebc3cc308624269434a796a7602e535e2f5fdf03c171e371c5eb09965314112871492021-09-27 19:04:01121 days 21 hrs ago PancakeSwap: Router v2 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0.013670356686963996 BNB
0x874cfb5bf42074162b4394e885e72b28346c8244b44c8c7e4442d20eb133c12d112871382021-09-27 19:03:28121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d0.008853436957957057 BNB
0x874cfb5bf42074162b4394e885e72b28346c8244b44c8c7e4442d20eb133c12d112871382021-09-27 19:03:28121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c0.005902291305304705 BNB
0x874cfb5bf42074162b4394e885e72b28346c8244b44c8c7e4442d20eb133c12d112871382021-09-27 19:03:28121 days 21 hrs ago PancakeSwap: Router v2 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0.014755728263261762 BNB
0xe1cc1dbe41b4d887aea7972b726ef93eea3ca4470dadd2b5564a3ce44e6bf738112871312021-09-27 19:03:07121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d0.008985117392003338 BNB
0xe1cc1dbe41b4d887aea7972b726ef93eea3ca4470dadd2b5564a3ce44e6bf738112871312021-09-27 19:03:07121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c0.005990078261335559 BNB
0xe1cc1dbe41b4d887aea7972b726ef93eea3ca4470dadd2b5564a3ce44e6bf738112871312021-09-27 19:03:07121 days 21 hrs ago PancakeSwap: Router v2 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff0.014975195653338897 BNB
0xff6092a2330ec9eaae40fbf820f605f620dab467f65ea1d1a96e2963f63123e8112871232021-09-27 19:02:43121 days 21 hrs ago 0x9f65ff855e7bffc4416e2bbc5c3dccce08cacfff 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d0.009119758884298671 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ReflectionToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-08-02
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

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

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

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



/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. 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 mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. 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 mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }


    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function allPairs(uint) external view returns (address lpPair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint 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 WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface Cashier {
    function whomst() external view returns(address);
    function setReflectionCriteria(uint256 _minPeriod, uint256 _minReflection) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    function giveMeWelfarePlease(address hobo) external;
    function getTotalDistributed() external view returns(uint256);
}

contract ReflectionToken is IERC20 {
    using SafeMath for uint256;

    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) _tOwned;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) _isFeeExcluded;
    mapping (address => bool) _isDividendExcluded;

    mapping (address => bool) private _isBlacklisted;
    mapping (address => bool) private _liquidityHolders;

    uint256 private constant startingSupply = 1_000_000_000; // 1 Billion, underscores aid readability

    uint8 private _decimals = 18;
    uint256 private _decimalsMul = _decimals;
    uint256 private _tTotal = startingSupply * (10 ** _decimalsMul);

    string constant _name = "AlmightyCake";
    string constant _symbol = "AlmightyCake";

    uint256 public _liquidityFee = 300;
    uint256 public maxLiquidityFee = 600;
    uint256 public _reflectionFee = 1500;
    uint256 public maxReflectionFee = 2000;
    uint256 public _marketingFee = 200;
    uint256 public maxMarketingFee = 500;
    uint256 public _totalFee = _liquidityFee + _reflectionFee + _marketingFee;
    uint256 public masterTaxDivisor = 10000;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // PCS ROUTER
    address private _routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;

    address private WBNB;
    address public burnAddress = 0x000000000000000000000000000000000000dEaD;
    address private ZERO = 0x0000000000000000000000000000000000000000;

    address payable private _marketingWallet = payable(0xEbFc2a7D6c96b34A987Cd1eb9d1f203C9D410A3f);

    // Max TX amount is 0.5% of the total supply.
    uint256 private maxTxPercent = 5; // Less fields to edit
    uint256 private maxTxDivisor = 1000;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    uint256 private _previousMaxTxAmount = _maxTxAmount;
    uint256 public maxTxAmountUI = (startingSupply * maxTxPercent) / maxTxDivisor; // Actual amount for UI's
    // Maximum wallet size is 1.5% of the total supply.
    uint256 private maxWalletPercent = 15; // Less fields to edit
    uint256 private maxWalletDivisor = 1000;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    uint256 private _previousMaxWalletSize = _maxWalletSize;
    uint256 public maxWalletSizeUI = (startingSupply * maxWalletPercent) / maxWalletDivisor; // Actual amount for UI's

    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    Cashier reflector;
    uint256 reflectorGas = 500000;

    bool public swapAndLiquifyEnabled = true;
    bool public processReflect = true;
    uint256 public swapThreshold = _tTotal / 20000;
    uint256 public swapAmount = _maxTxAmount;
    bool public initialSubEnabled = true;
    bool inSwap;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private immutable snipeBlockAmt;
    uint256 public snipersCaught = 0;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountBNB, uint256 amount);
    event SniperCaught(address sniperAddress);

    constructor (uint256 _snipeBlockAmt, address cInitializer) payable {
        address msgSender = msg.sender;
        _tOwned[msgSender] = _tTotal;

        // Set the owner.
        _owner = msgSender;

        // Set the amount of blocks to count a sniper.
        snipeBlockAmt = _snipeBlockAmt;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        WBNB = dexRouter.WETH();

        reflector = Cashier(cInitializer);

        _isFeeExcluded[owner()] = true;
        _isFeeExcluded[address(this)] = true;
        _isDividendExcluded[owner()] = true;
        _isDividendExcluded[lpPair] = true;
        _isDividendExcluded[address(this)] = true;
        _isDividendExcluded[burnAddress] = true;
        _isDividendExcluded[ZERO] = true;
        // DxLocker Address (BSC)
        _isFeeExcluded[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true;
        _isDividendExcluded[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true;

        // Approve the owner for PancakeSwap, timesaver.
        approveMax(_routerAddress);

        // Ever-growing sniper/tool blacklist
        _isBlacklisted[0xE4882975f933A199C92b5A925C9A8fE65d599Aa8] = true;
        _isBlacklisted[0x86C70C4a3BC775FB4030448c9fdb73Dc09dd8444] = true;
        _isBlacklisted[0xa4A25AdcFCA938aa030191C297321323C57148Bd] = true;
        _isBlacklisted[0x20C00AFf15Bb04cC631DB07ee9ce361ae91D12f8] = true;
        _isBlacklisted[0x0538856b6d0383cde1709c6531B9a0437185462b] = true;

        emit Transfer(ZERO, msg.sender, _tTotal);
        emit OwnershipTransferred(address(0), msgSender);
    }

    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        
        _allowances[_owner][newOwner] = _tOwned[_owner];
        _transfer(_owner, newOwner, _tOwned[_owner]);

        _isFeeExcluded[_owner] = false;
        _isDividendExcluded[_owner] = false;
        _isFeeExcluded[newOwner] = true;
        _isDividendExcluded[newOwner] = true;
        
        if (_marketingWallet == payable(_owner))
            _marketingWallet = payable(newOwner);
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        _isFeeExcluded[_owner] = false;
        _isDividendExcluded[_owner] = false;
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }

    receive() external payable {}

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transfer(sender, recipient, amount);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return _isBlacklisted[account];
    }

    function isFeeExcluded(address account) public view returns(bool) {
        return _isFeeExcluded[account];
    }

    function isDividendExcluded(address account) public view returns(bool) {
        return _isDividendExcluded[account];
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
        _isBlacklisted[account] = enabled;
    }

    function setSniperProtectionEnabled(bool enabled) external onlyOwner() {
        require(enabled != sniperProtection, "Already set.");
        sniperProtection = enabled;
    }

    function setDividendExcluded(address holder, bool enabled) public onlyOwner {
        require(holder != address(this) && holder != lpPair);
        _isDividendExcluded[holder] = enabled;
        if (enabled) {
            reflector.setShare(holder, 0);
        } else {
            reflector.setShare(holder, _tOwned[holder]);
        }
    }

    function setExcludeFromFees(address account, bool enabled) public onlyOwner {
        _isFeeExcluded[account] = enabled;
    }

    function setTaxes(uint256 liquidityFee, uint256 reflectionFee, uint256 marketingFee, uint256 divisor) external onlyOwner {
        require(liquidityFee <= maxLiquidityFee
                && reflectionFee <= maxReflectionFee
                && marketingFee <= maxMarketingFee);
        require(liquidityFee + reflectionFee + marketingFee <= (divisor / 2));
        _liquidityFee = liquidityFee;
        _reflectionFee = reflectionFee;
        _marketingFee = marketingFee;
        _totalFee = liquidityFee + reflectionFee + marketingFee;
        masterTaxDivisor = divisor;
    }

    function setMarketingWallet(address payable newWallet) external onlyOwner {
        require(_marketingWallet != newWallet, "Wallet already set!");
        _marketingWallet = payable(newWallet);
    }

    function setSwapBackSettings(bool _enabled, bool processReflectEnabled) external onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        processReflect = processReflectEnabled;
    }

    function setSwapThreshold(uint256 percent, uint256 divisor) external onlyOwner() {
        swapThreshold = _tTotal.mul(percent).div(divisor);
    }

    function setSwapAmount(uint256 percent, uint256 divisor) external onlyOwner {
        swapAmount = _tTotal.mul(percent).div(divisor);
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setReflectionCriteria(uint256 _minPeriod, uint256 _minReflection, uint256 minReflectionMultiplier) external onlyOwner {
        _minReflection = _minReflection * 10**minReflectionMultiplier;
        reflector.setReflectionCriteria(_minPeriod, _minReflection);
    }

    function setReflectorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000);
        reflectorGas = gas;
    }

    function setInitialSubEnabled(bool enabled) external onlyOwner() {
        initialSubEnabled = enabled;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _tTotal - balanceOf(burnAddress) - balanceOf(ZERO);
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy * balanceOf(lpPair) * 2 / getCirculatingSupply();
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function giveMeWelfarePlease() external {
        reflector.giveMeWelfarePlease(msg.sender);
    }

    function getTotalReflected() external view returns (uint256) {
        return reflector.getTotalDistributed();
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner() {
        require(divisor <= 10000); // Cannot set lower than 0.01%
        _maxTxAmount = _tTotal.mul(percent).div(divisor);
        maxTxAmountUI = startingSupply.mul(percent).div(divisor);
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner() {
        require(divisor <= 1000); // Cannot set lower than 0.1%
        _maxWalletSize = _tTotal.mul(percent).div(divisor);
        maxWalletSizeUI = startingSupply.mul(percent).div(divisor);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != burnAddress
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        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(_hasLimits(from, to))
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        if(_hasLimits(from, to)
            && to != _routerAddress 
            && to != lpPair
        ) {
            uint256 contractBalanceRecepient = balanceOf(to);
            require(contractBalanceRecepient + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
        }

        bool takeFee = true;
        
        if(_isFeeExcluded[from] || _isFeeExcluded[to]){
            takeFee = false;
        }

        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) internal returns (bool) {
        // Failsafe, disable the whole system if needed.
        if (sniperProtection){
            // If sender is a sniper address, reject the transfer.
            if (isBlacklisted(from) || isBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            // Check if this is the liquidity adding tx to startup.
            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                    if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                        revert("Only owner can transfer at this time.");
                    }
            } else {
                if (_liqAddBlock > 0 
                    && from == lpPair 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] = _tOwned[from].sub(amount, "Insufficient Balance");

        if (inSwap) {
            return _basicTransfer(from, to, amount);
        }

        uint256 contractTokenBalance = _tOwned[address(this)];
        if(contractTokenBalance >= swapAmount)
            contractTokenBalance = swapAmount;

        if (!inSwap
            && from != lpPair
            && swapAndLiquifyEnabled
            && contractTokenBalance >= swapThreshold
        ) {
            swapBack(contractTokenBalance);
        }

        uint256 amountReceived = amount;

        if (takeFee) {
            amountReceived = takeTaxes(from, amount);
        }

        _tOwned[to] = _tOwned[to].add(amountReceived);

        if (processReflect)
            processTokenReflect(from, to);

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != lpPair
            && !inSwap
            && swapAndLiquifyEnabled
            && _tOwned[address(this)] >= swapThreshold;
    }

    function processTokenReflect(address from, address to) internal {
        // Process TOKEN Reflect.
        if (!_isDividendExcluded[from]) {
            try reflector.setShare(from, _tOwned[from]) {} catch {}
        }
        if (!_isDividendExcluded[to]) {
            try reflector.setShare(to, _tOwned[to]) {} catch {}
        }
        try reflector.process(reflectorGas) {} catch {}
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _tOwned[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !_isFeeExcluded[sender];
    }

    function getTotalFee() public view returns (uint256) {
        return _totalFee;
    }

    function takeTaxes(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount * getTotalFee() / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);

        return amount - feeAmount;
    }

    function swapBack(uint256 numTokensToSwap) internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : _liquidityFee;
        uint256 amountToLiquify = numTokensToSwap * dynamicLiquidityFee / _totalFee / 2;
        uint256 amountToSwap = numTokensToSwap - amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

        uint256 balanceBefore = address(this).balance;

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance;
        if (initialSubEnabled) 
            amountBNB = address(this).balance - balanceBefore;
        uint256 totalBNBFee = _totalFee - dynamicLiquidityFee / 2;
        uint256 amountBNBLiquidity = amountBNB * dynamicLiquidityFee / totalBNBFee / 2;
        uint256 amountBNBReflection = amountBNB * _reflectionFee / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB.sub(amountBNBLiquidity).sub(amountBNBReflection);
        _marketingWallet.transfer(amountBNBMarketing);

        if (amountToLiquify > 0) {
            dexRouter.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                burnAddress,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        } else {
            // If we are not liquifying we add the bnb to busd buys.
            amountBNBReflection += amountBNBLiquidity;
        }

        try reflector.deposit{value: amountBNBReflection}() {} catch {}
    }

    function manualDepost() external onlyOwner() {
        try reflector.deposit{value: address(this).balance}() {} catch {}
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddBlock = block.number;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_snipeBlockAmt","type":"uint256"},{"internalType":"address","name":"cInitializer","type":"address"}],"stateMutability":"payable","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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","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":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveMeWelfarePlease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialSubEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isDividendExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isFeeExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDepost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"masterTaxDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processReflect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setDividendExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setInitialSubEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minReflection","type":"uint256"},{"internalType":"uint256","name":"minReflectionMultiplier","type":"uint256"}],"name":"setReflectionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setReflectorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSniperProtectionEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"processReflectEnabled","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526007805460ff1916601290811790915560088190556200002690600a6200092b565b6200003690633b9aca00620009e7565b60095561012c600a55610258600b556105dc600c556107d0600d5560c8600e556101f4600f55600e54600c54600a54620000719190620008a6565b6200007d9190620008a6565b601055612710601155601480546001600160a01b03199081167310ed43c718714eb63d5aa57b78b54704e256024e1790915560168054821661dead17905560178054821690556018805490911673ebfc2a7d6c96b34a987cd1eb9d1f203c9d410a3f179055600560198190556103e8601a81905560095490916200010191620009e7565b6200010d9190620008c1565b601b819055601c55601a546019546200012b90633b9aca00620009e7565b620001379190620008c1565b601d55600f601e556103e8601f55601f54601e546009546200015a9190620009e7565b620001669190620008c1565b6020819055602155601f54601e546200018490633b9aca00620009e7565b620001909190620008c1565b602255601960235560646024556207a1206026556027805461ffff1916610101179055600954620001c590614e2090620008c1565b602855601b54602955602a805463ffff00ff1916620100011790556000602b819055602c819055602d556040516200371f38819003908190833981016040819052620002119162000878565b6009543360008181526001602090815260408083209490945581546001600160a01b031990811684179092556080869052601454601280546001600160a01b03909216919093168117909255835163c45a015560e01b815293519293919263c45a0155926004808201939291829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cd919062000854565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032a57600080fd5b505afa1580156200033f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000365919062000854565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620003ad57600080fd5b505af1158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e8919062000854565b601380546001600160a01b0319166001600160a01b039283161790553060009081526002602090815260408083206012805486168552908352928190206000199055915482516315ab88c960e31b8152925193169263ad5c4648926004808201939291829003018186803b1580156200046057600080fd5b505afa15801562000475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049b919062000854565b601580546001600160a01b03199081166001600160a01b039384161790915560258054909116918416919091179055600160036000620004e36000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260039092528120805490921660019081179092556004906200053c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556013548216815260048085528382208054871660019081179091553083528483208054881682179055601654841683528483208054881682179055601754841683529382208054871685179055732d045410f002a95efcee67759a92518fa3fce6779091527f1b0844a815a73dbe3402e9201f6e793f2b0ad765d868c9891ebcaa049e93e4cc80548616841790559092527f137770924af7d4236b634bc21927d1b6769edf364887342a2c7f4f3b339962b4805490931617909155601454620006349116620007b4565b5060056020527ffb5b5b4ba1c48b2e69f63b29d8becdbd27e876755dfb261bf5b98e2aa40f71f1805460ff1990811660019081179092557f730f44978e3e41650e25cd6c958f4b9d3d69f0acf606bddc21129f344501487880548216831790557fed1985f8be08a5472acdd33b4cc358aed34319deeab5e1e762c829410b97aa0f80548216831790557f1dc48be3597163d3eccc89951d79d410aac0c57e6d731b3364c4a7d4e0e33bbb8054821683179055730538856b6d0383cde1709c6531b9a0437185462b6000527f336851990a57e4d42427a1b297c95c2156a35fada8ba2451e3b5721e7f0270fd8054909116909117905560175460095460405133926001600160a01b0316917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200076d91815260200190565b60405180910390a36040516001600160a01b038216906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350505062000a1f565b6000620007c482600019620007ca565b92915050565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620008269086815260200190565b60405180910390a350600192915050565b80516001600160a01b03811681146200084f57600080fd5b919050565b60006020828403121562000866578081fd5b620008718262000837565b9392505050565b600080604083850312156200088b578081fd5b825191506200089d6020840162000837565b90509250929050565b60008219821115620008bc57620008bc62000a09565b500190565b600082620008dd57634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156200092357816000190482111562000907576200090762000a09565b808516156200091557918102915b93841c9390800290620008e7565b509250929050565b60006200087183836000826200094457506001620007c4565b816200095357506000620007c4565b81600181146200096c5760028114620009775762000997565b6001915050620007c4565b60ff8411156200098b576200098b62000a09565b50506001821b620007c4565b5060208310610133831016604e8410600b8410161715620009bc575081810a620007c4565b620009c88383620008e2565b8060001904821115620009df57620009df62000a09565b029392505050565b600081600019048311821515161562000a045762000a0462000a09565b500290565b634e487b7160e01b600052601160045260246000fd5b608051612ce462000a3b6000396000611d640152612ce46000f3fe6080604052600436106103905760003560e01c806364038409116101dc578063d4e43fb311610102578063e79d4160116100a0578063f6540ec71161006f578063f6540ec714610a47578063f7727e1414610a5d578063f7c245ea14610a72578063fe575a8714610a8757600080fd5b8063e79d4160146109d2578063ea4a1454146109e8578063eec2744e14610a08578063efe7dc9014610a2857600080fd5b8063d7124d9f116100dc578063d7124d9f1461092c578063dd62ed3e1461094c578063e0edd58614610992578063e1795033146109b257600080fd5b8063d4e43fb3146108cc578063d51ed1c8146108ec578063d63cad221461090c57600080fd5b8063893d20e81161017a578063a12a7d6111610149578063a12a7d6114610833578063a9059cbb14610853578063bca238aa14610873578063d0b1449d146108ac57600080fd5b8063893d20e8146108005780638da5cb5b1461080057806395d89b41146103c55780639dc676151461081e57600080fd5b806370a08231116101b657806370a082311461078057806370d5ae05146107b6578063715018a6146107d65780637ae316d0146107eb57600080fd5b806364038409146107345780636b639a251461074a5780636bc87c3a1461076a57600080fd5b8063255a2e54116102c15780633f3cf56c1161025f57806350a8e0161161022e57806350a8e016146106b957806352d80fac146106da578063571ac8b0146106f45780635d098b381461071457600080fd5b80633f3cf56c1461063f578063452ed4f11461065f5780634a74bb021461067f5780634fb2e45d1461069957600080fd5b80632b112e491161029b5780632b112e49146105dc5780632e8fa821146105f1578063313ce567146106075780633206b4aa1461062957600080fd5b8063255a2e541461056d57806326003957146105a6578063283f7820146105c657600080fd5b806312907bea1161032e5780631db414ad116103085780631db414ad14610501578063201e79911461051757806322976e0d1461053757806323b872dd1461054d57600080fd5b806312907bea146104c057806318160ddd146104d65780631d6167ac146104eb57600080fd5b806309094d661161036a57806309094d6614610438578063095ea7b31461044e57806309a8f1791461047e5780631161ae39146104a057600080fd5b80630445b6671461039c57806306fdde03146103c55780630758d9241461040057600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b260285481565b6040519081526020015b60405180910390f35b3480156103d157600080fd5b50604080518082018252600c81526b416c6d696768747943616b6560a01b602082015290516103bc9190612a17565b34801561040c57600080fd5b50601254610420906001600160a01b031681565b6040516001600160a01b0390911681526020016103bc565b34801561044457600080fd5b506103b2600f5481565b34801561045a57600080fd5b5061046e6104693660046128dd565b610ac0565b60405190151581526020016103bc565b34801561048a57600080fd5b5061049e61049936600461298e565b610b2d565b005b3480156104ac57600080fd5b5061046e6104bb36600461296d565b610be0565b3480156104cc57600080fd5b506103b2600b5481565b3480156104e257600080fd5b506009546103b2565b3480156104f757600080fd5b506103b260115481565b34801561050d57600080fd5b506103b2600d5481565b34801561052357600080fd5b5061049e61053236600461296d565b610bf4565b34801561054357600080fd5b506103b2600e5481565b34801561055957600080fd5b5061046e610568366004612869565b610c29565b34801561057957600080fd5b5061046e610588366004612815565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105b257600080fd5b5061049e6105c136600461296d565b610ce9565b3480156105d257600080fd5b506103b260105481565b3480156105e857600080fd5b506103b2610d5d565b3480156105fd57600080fd5b506103b260295481565b34801561061357600080fd5b5060075460405160ff90911681526020016103bc565b34801561063557600080fd5b506103b2600c5481565b34801561064b57600080fd5b5061049e61065a36600461296d565b610daf565b34801561066b57600080fd5b50601354610420906001600160a01b031681565b34801561068b57600080fd5b5060275461046e9060ff1681565b3480156106a557600080fd5b5061049e6106b4366004612815565b610e1d565b3480156106c557600080fd5b50602a5461046e906301000000900460ff1681565b3480156106e657600080fd5b50602a5461046e9060ff1681565b34801561070057600080fd5b5061046e61070f366004612815565b610fe7565b34801561072057600080fd5b5061049e61072f366004612815565b610ff5565b34801561074057600080fd5b506103b2601d5481565b34801561075657600080fd5b5061049e6107653660046128a9565b611095565b34801561077657600080fd5b506103b2600a5481565b34801561078c57600080fd5b506103b261079b366004612815565b6001600160a01b031660009081526001602052604090205490565b3480156107c257600080fd5b50601654610420906001600160a01b031681565b3480156107e257600080fd5b5061049e6111d4565b3480156107f757600080fd5b506010546103b2565b34801561080c57600080fd5b506000546001600160a01b0316610420565b34801561082a57600080fd5b5061049e611275565b34801561083f57600080fd5b5061049e61084e3660046129e6565b6112d4565b34801561085f57600080fd5b5061046e61086e3660046128dd565b611383565b34801561087f57600080fd5b5061046e61088e366004612815565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156108b857600080fd5b5061049e6108c736600461293d565b611397565b3480156108d857600080fd5b5061049e6108e7366004612922565b6113d5565b3480156108f857600080fd5b506103b261090736600461293d565b611423565b34801561091857600080fd5b5061049e6109273660046128a9565b611467565b34801561093857600080fd5b5061049e610947366004612908565b6114bc565b34801561095857600080fd5b506103b2610967366004612831565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561099e57600080fd5b5061049e6109ad36600461296d565b611554565b3480156109be57600080fd5b5061049e6109cd366004612908565b61159e565b3480156109de57600080fd5b506103b2602d5481565b3480156109f457600080fd5b5061049e610a0336600461296d565b6115db565b348015610a1457600080fd5b5061049e610a233660046128a9565b611625565b348015610a3457600080fd5b5060275461046e90610100900460ff1681565b348015610a5357600080fd5b506103b260225481565b348015610a6957600080fd5b5061049e61167a565b348015610a7e57600080fd5b506103b2611709565b348015610a9357600080fd5b5061046e610aa2366004612815565b6001600160a01b031660009081526005602052604090205460ff1690565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b1b9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b605760405162461bcd60e51b8152600401610b5790612a6a565b60405180910390fd5b610b6b81600a612b8a565b610b759083612c32565b60255460405163466bf81760e11b815260048101869052602481018390529193506001600160a01b031690638cd7f02e90604401600060405180830381600087803b158015610bc357600080fd5b505af1158015610bd7573d6000803e3d6000fd5b50505050505050565b600082610bec83611423565b119392505050565b6000546001600160a01b03163314610c1e5760405162461bcd60e51b8152600401610b5790612a6a565b602391909155602455565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610cd6576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600282528381203382529091529190912054610cb1918490611786565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610ce18484846117c0565b949350505050565b6000546001600160a01b03163314610d135760405162461bcd60e51b8152600401610b5790612a6a565b6103e8811115610d2257600080fd5b610d4181610d3b84600954611a8290919063ffffffff16565b90611b01565b602055610d5681610d3b633b9aca0085611a82565b6022555050565b6017546001600160a01b03166000908152600160205260408120546016546001600160a01b0316600090815260016020526040902054600954610da09190612c51565b610daa9190612c51565b905090565b6000546001600160a01b03163314610dd95760405162461bcd60e51b8152600401610b5790612a6a565b612710811115610de857600080fd5b610e0181610d3b84600954611a8290919063ffffffff16565b601b55610e1681610d3b633b9aca0085611a82565b601d555050565b6000546001600160a01b03163314610e475760405162461bcd60e51b8152600401610b5790612a6a565b6001600160a01b038116610ec35760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b57565b600080546001600160a01b039081168252600160208181526040808520546002835281862087861687528352818620558454909316808552919052912054610f0d919083906117c0565b50600080546001600160a01b039081168252600360208181526040808520805460ff1990811690915585548516865260048084528287208054831690558786168752938352818620805482166001908117909155939092528420805490911690911790559054601854821691161415610f9c57601880546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610b2782600019610ac0565b6000546001600160a01b0316331461101f5760405162461bcd60e51b8152600401610b5790612a6a565b6018546001600160a01b03828116911614156110735760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610b57565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110bf5760405162461bcd60e51b8152600401610b5790612a6a565b6001600160a01b03821630148015906110e657506013546001600160a01b03838116911614155b6110ef57600080fd5b6001600160a01b0382166000908152600460205260409020805460ff1916821580159190911790915561118757602554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561116b57600080fd5b505af115801561117f573d6000803e3d6000fd5b505050505050565b6025546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611151565b5050565b6000546001600160a01b031633146111fe5760405162461bcd60e51b8152600401610b5790612a6a565b600080546001600160a01b039081168252600360209081526040808420805460ff19908116909155845490931684526004909152808320805490921690915581546001600160a01b03191682555181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b602554604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146112fe5760405162461bcd60e51b8152600401610b5790612a6a565b600b5484111580156113125750600d548311155b80156113205750600f548211155b61132957600080fd5b611334600282612b27565b8261133f8587612b0f565b6113499190612b0f565b111561135457600080fd5b600a849055600c839055600e8290558161136e8486612b0f565b6113789190612b0f565b601055601155505050565b60006113903384846117c0565b9392505050565b6000546001600160a01b031633146113c15760405162461bcd60e51b8152600401610b5790612a6a565b620b71b081106113d057600080fd5b602655565b6000546001600160a01b031633146113ff5760405162461bcd60e51b8152600401610b5790612a6a565b6027805461ffff191692151561ff0019169290921761010091151591909102179055565b600061142d610d5d565b6013546001600160a01b03166000908152600160205260409020546114529084612c32565b61145d906002612c32565b610b279190612b27565b6000546001600160a01b031633146114915760405162461bcd60e51b8152600401610b5790612a6a565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114e65760405162461bcd60e51b8152600401610b5790612a6a565b602a60029054906101000a900460ff16151581151514156115385760405162461bcd60e51b815260206004820152600c60248201526b20b63932b0b23c9039b2ba1760a11b6044820152606401610b57565b602a8054911515620100000262ff000019909216919091179055565b6000546001600160a01b0316331461157e5760405162461bcd60e51b8152600401610b5790612a6a565b61159781610d3b84600954611a8290919063ffffffff16565b6028555050565b6000546001600160a01b031633146115c85760405162461bcd60e51b8152600401610b5790612a6a565b602a805460ff1916911515919091179055565b6000546001600160a01b031633146116055760405162461bcd60e51b8152600401610b5790612a6a565b61161e81610d3b84600954611a8290919063ffffffff16565b6029555050565b6000546001600160a01b0316331461164f5760405162461bcd60e51b8152600401610b5790612a6a565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116a45760405162461bcd60e51b8152600401610b5790612a6a565b602560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156116f457600080fd5b505af193505050508015611706575060015b50565b60255460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa58916004808301926020929190829003018186803b15801561174e57600080fd5b505afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daa9190612955565b600081848411156117aa5760405162461bcd60e51b8152600401610b579190612a17565b5060006117b78486612c51565b95945050505050565b60006001600160a01b0384166118265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b57565b6001600160a01b0383166118885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b57565b600082116118ea5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b57565b6118f48484611b43565b1561195c57601b5482111561195c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b57565b6119668484611b43565b801561198057506014546001600160a01b03848116911614155b801561199a57506013546001600160a01b03848116911614155b15611a2b576001600160a01b0383166000908152600160205260408120546020549091506119c88483612b0f565b1115611a295760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b57565b505b6001600160a01b03841660009081526003602052604090205460019060ff1680611a6d57506001600160a01b03841660009081526003602052604090205460ff165b15611a76575060005b6117b785858584611c00565b600082611a9157506000610b27565b6000611a9d8385612c32565b905082611aaa8583612b27565b146113905760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b57565b600061139083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fc9565b600080546001600160a01b03848116911614801590611b7057506000546001600160a01b03838116911614155b8015611b9557506001600160a01b03821660009081526006602052604090205460ff16155b8015611bba57506001600160a01b03831660009081526006602052604090205460ff16155b8015611bd457506016546001600160a01b03838116911614155b8015611be857506001600160a01b03821615155b8015611390575050506001600160a01b031630141590565b602a5460009062010000900460ff1615611e0a576001600160a01b03851660009081526005602052604090205460ff1680611c5357506001600160a01b03841660009081526005602052604090205460ff165b15611c935760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b6044820152606401610b57565b602a546301000000900460ff16611d2d57611cae8585611ff7565b602a546301000000900460ff16158015611ccd5750611ccd8585611b43565b15611d285760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610b57565b611e0a565b6000602b54118015611d4c57506013546001600160a01b038681169116145b8015611d5d5750611d5d8585611b43565b15611e0a577f0000000000000000000000000000000000000000000000000000000000000000602b5443611d919190612c51565b1015611e0a576001600160a01b0384166000908152600560205260408120805460ff19166001179055602d805491611dc883612c68565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260019091529190912054611e5c918590611786565b6001600160a01b038616600090815260016020526040902055602a54610100900460ff1615611e9757611e9085858561210c565b9050610ce1565b306000908152600160205260409020546029548110611eb557506029545b602a54610100900460ff16158015611edb57506013546001600160a01b03878116911614155b8015611ee9575060275460ff165b8015611ef757506028548110155b15611f0557611f0581612194565b838315611f1957611f16878661253c565b90505b6001600160a01b038616600090815260016020526040902054611f3c90826125d2565b6001600160a01b038716600090815260016020526040902055602754610100900460ff1615611f6f57611f6f8787612631565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fb491815260200190565b60405180910390a35060019695505050505050565b60008183611fea5760405162461bcd60e51b8152600401610b579190612a17565b5060006117b78486612b27565b602a546301000000900460ff161561205d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b57565b6120678282611b43565b15801561208157506013546001600160a01b038281169116145b156111d0576001600160a01b038216600090815260066020908152604091829020805460ff199081166001908117909255602a805463ff0000001916630100000017905543602b5542602c55602780549091168217905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b6001600160a01b038216600090815260016020526040812080548391908390612136908490612b0f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161218291815260200190565b60405180910390a35060019392505050565b602a805461ff0019166101001790556023546024546000916121b591610be0565b6121c157600a546121c4565b60005b90506000600260105483856121d99190612c32565b6121e39190612b27565b6121ed9190612b27565b905060006121fb8285612c51565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061224357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260155482519116908290600190811061228257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac947906122cc908690600090879030904290600401612a9f565b600060405180830381600087803b1580156122e657600080fd5b505af11580156122fa573d6000803e3d6000fd5b5050602a5447925060ff16159050612319576123168247612c51565b90505b6000612326600288612b27565b6010546123339190612c51565b905060006002826123448a86612c32565b61234e9190612b27565b6123589190612b27565b9050600082600c548561236b9190612c32565b6123759190612b27565b9050600061238d8261238787866127be565b906127be565b6018546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156123c8573d6000803e3d6000fd5b5088156124b45760125460165460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b15801561243a57600080fd5b505af115801561244e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061247391906129b9565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a16124c1565b6124be8383612b0f565b91505b602560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561251157600080fd5b505af193505050508015612523575060015b505050602a805461ff0019169055505050505050505050565b60008060115461254b60105490565b6125559085612c32565b61255f9190612b27565b30600090815260016020526040812080549293508392909190612583908490612b0f565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610ce18184612c51565b6000806125df8385612b0f565b9050838110156113905760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b57565b6001600160a01b03821660009081526004602052604090205460ff166126c2576025546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156126af57600080fd5b505af19250505080156126c0575060015b505b6001600160a01b03811660009081526004602052604090205460ff16612753576025546001600160a01b0382811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561274057600080fd5b505af1925050508015612751575060015b505b6025546026546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161278b9160040190815260200190565b600060405180830381600087803b1580156127a557600080fd5b505af19250505080156127b6575060015b6111d0575050565b600061139083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611786565b8035801515811461281057600080fd5b919050565b600060208284031215612826578081fd5b813561139081612c99565b60008060408385031215612843578081fd5b823561284e81612c99565b9150602083013561285e81612c99565b809150509250929050565b60008060006060848603121561287d578081fd5b833561288881612c99565b9250602084013561289881612c99565b929592945050506040919091013590565b600080604083850312156128bb578182fd5b82356128c681612c99565b91506128d460208401612800565b90509250929050565b600080604083850312156128ef578182fd5b82356128fa81612c99565b946020939093013593505050565b600060208284031215612919578081fd5b61139082612800565b60008060408385031215612934578182fd5b6128c683612800565b60006020828403121561294e578081fd5b5035919050565b600060208284031215612966578081fd5b5051919050565b6000806040838503121561297f578182fd5b50508035926020909101359150565b6000806000606084860312156129a2578283fd5b505081359360208301359350604090920135919050565b6000806000606084860312156129cd578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156129fb578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b81811015612a4357858101830151858201604001528201612a27565b81811115612a545783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612aee5784516001600160a01b031683529383019391830191600101612ac9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612b2257612b22612c83565b500190565b600082612b4257634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115612b82578160001904821115612b6857612b68612c83565b80851615612b7557918102915b93841c9390800290612b4c565b509250929050565b60006113908383600082612ba057506001610b27565b81612bad57506000610b27565b8160018114612bc35760028114612bcd57612be9565b6001915050610b27565b60ff841115612bde57612bde612c83565b50506001821b610b27565b5060208310610133831016604e8410600b8410161715612c0c575081810a610b27565b612c168383612b47565b8060001904821115612c2a57612c2a612c83565b029392505050565b6000816000190483118215151615612c4c57612c4c612c83565b500290565b600082821015612c6357612c63612c83565b500390565b6000600019821415612c7c57612c7c612c83565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461170657600080fdfea264697066735822122045015e0737fd88e3f4e3db38bf05c8518deef65aed67d3cc3f256c4adcbaee9f64736f6c63430008040033000000000000000000000000000000000000000000000000000000000000000200000000000000000000000045aadd0c5d57eecc8c3e63ce73ca387a18f7725d

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

000000000000000000000000000000000000000000000000000000000000000200000000000000000000000045aadd0c5d57eecc8c3e63ce73ca387a18f7725d

-----Decoded View---------------
Arg [0] : _snipeBlockAmt (uint256): 2
Arg [1] : cInitializer (address): 0x45aadd0c5d57eecc8c3e63ce73ca387a18f7725d

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [1] : 00000000000000000000000045aadd0c5d57eecc8c3e63ce73ca387a18f7725d


Deployed ByteCode Sourcemap

19996:20422:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22760:46;;;;;;;;;;;;;;;;;;;12412:25:1;;;12400:2;12385:18;22760:46:0;;;;;;;;26979:80;;;;;;;;;;-1:-1:-1;27051:5:0;;;;;;;;;;;-1:-1:-1;;;27051:5:0;;;;26979:80;;;;27051:5;26979:80;:::i;21229:35::-;;;;;;;;;;-1:-1:-1;21229:35:0;;;;-1:-1:-1;;;;;21229:35:0;;;;;;-1:-1:-1;;;;;4576:32:1;;;4558:51;;4546:2;4531:18;21229:35:0;4513:102:1;21058:36:0;;;;;;;;;;;;;;;;27401:216;;;;;;;;;;-1:-1:-1;27401:216:0;;;;;:::i;:::-;;:::i;:::-;;;5963:14:1;;5956:22;5938:41;;5926:2;5911:18;27401:216:0;5893:92:1;31341:277:0;;;;;;;;;;-1:-1:-1;31341:277:0;;;;;:::i;:::-;;:::i;:::-;;32202:150;;;;;;;;;;-1:-1:-1;32202:150:0;;;;;:::i;:::-;;:::i;20886:36::-;;;;;;;;;;;;;;;;26714:83;;;;;;;;;;-1:-1:-1;26787:7:0;;26714:83;;21181:39;;;;;;;;;;;;;;;;20972:38;;;;;;;;;;;;;;;;31151:182;;;;;;;;;;-1:-1:-1;31151:182:0;;;;;:::i;:::-;;:::i;21017:34::-;;;;;;;;;;;;;;;;28262:368;;;;;;;;;;-1:-1:-1;28262:368:0;;;;;:::i;:::-;;:::i;28885:125::-;;;;;;;;;;-1:-1:-1;28885:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;28974:28:0;28950:4;28974:28;;;:19;:28;;;;;;;;;28885:125;32883:284;;;;;;;;;;-1:-1:-1;32883:284:0;;;;;:::i;:::-;;:::i;21101:73::-;;;;;;;;;;;;;;;;31888:138;;;;;;;;;;;;;:::i;22813:40::-;;;;;;;;;;;;;;;;26803:80;;;;;;;;;;-1:-1:-1;26871:9:0;;26803:80;;26871:9;;;;13831:36:1;;13819:2;13804:18;26803:80:0;13786:87:1;20929:36:0;;;;;;;;;;;;;;;;32594:281;;;;;;;;;;-1:-1:-1;32594:281:0;;;;;:::i;:::-;;:::i;21271:21::-;;;;;;;;;;-1:-1:-1;21271:21:0;;;;-1:-1:-1;;;;;21271:21:0;;;22673:40;;;;;;;;;;-1:-1:-1;22673:40:0;;;;;;;;25733:691;;;;;;;;;;-1:-1:-1;25733:691:0;;;;;:::i;:::-;;:::i;22966:36::-;;;;;;;;;;-1:-1:-1;22966:36:0;;;;;;;;;;;22860;;;;;;;;;;-1:-1:-1;22860:36:0;;;;;;;;27625:120;;;;;;;;;;-1:-1:-1;27625:120:0;;;;;:::i;:::-;;:::i;30436:202::-;;;;;;;;;;-1:-1:-1;30436:202:0;;;;;:::i;:::-;;:::i;21976:77::-;;;;;;;;;;;;;;;;29346:350;;;;;;;;;;-1:-1:-1;29346:350:0;;;;;:::i;:::-;;:::i;20845:34::-;;;;;;;;;;;;;;;;27151:103;;;;;;;;;;-1:-1:-1;27151:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;27235:16:0;27217:7;27235:16;;;:7;:16;;;;;;;27151:103;21431:71;;;;;;;;;;-1:-1:-1;21431:71:0;;;;-1:-1:-1;;;;;21431:71:0;;;26432:237;;;;;;;;;;;;;:::i;37533:88::-;;;;;;;;;;-1:-1:-1;37604:9:0;;37533:88;;27065:80;;;;;;;;;;-1:-1:-1;27117:7:0;25711:6;-1:-1:-1;;;;;25711:6:0;27065:80;31888:138;32360:100;;;;;;;;;;;;;:::i;29840:588::-;;;;;;;;;;-1:-1:-1;29840:588:0;;;;;:::i;:::-;;:::i;28102:152::-;;;;;;;;;;-1:-1:-1;28102:152:0;;;;;:::i;:::-;;:::i;28762:115::-;;;;;;;;;;-1:-1:-1;28762:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;28846:23:0;28822:4;28846:23;;;:14;:23;;;;;;;;;28762:115;31626:131;;;;;;;;;;-1:-1:-1;31626:131:0;;;;;:::i;:::-;;:::i;30646:191::-;;;;;;;;;;-1:-1:-1;30646:191:0;;;;;:::i;:::-;;:::i;32034:160::-;;;;;;;;;;-1:-1:-1;32034:160:0;;;;;:::i;:::-;;:::i;29704:128::-;;;;;;;;;;-1:-1:-1;29704:128:0;;;;;:::i;:::-;;:::i;29159:179::-;;;;;;;;;;-1:-1:-1;29159:179:0;;;;;:::i;:::-;;:::i;27260:133::-;;;;;;;;;;-1:-1:-1;27260:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;27362:19:0;;;27344:7;27362:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;27260:133;30845:149;;;;;;;;;;-1:-1:-1;30845:149:0;;;;;:::i;:::-;;:::i;31765:111::-;;;;;;;;;;-1:-1:-1;31765:111:0;;;;;:::i;:::-;;:::i;23133:32::-;;;;;;;;;;;;;;;;31002:141;;;;;;;;;;-1:-1:-1;31002:141:0;;;;;:::i;:::-;;:::i;29018:133::-;;;;;;;;;;-1:-1:-1;29018:133:0;;;;;:::i;:::-;;:::i;22720:33::-;;;;;;;;;;-1:-1:-1;22720:33:0;;;;;;;;;;;22405:87;;;;;;;;;;;;;;;;39799:128;;;;;;;;;;;;;:::i;32468:118::-;;;;;;;;;;;;;:::i;28638:116::-;;;;;;;;;;-1:-1:-1;28638:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;28723:23:0;28699:4;28723:23;;;:14;:23;;;;;;;;;28638:116;27401:216;27505:10;27476:4;27493:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;27493:32:0;;;;;;;;;;:41;;;27550:37;27476:4;;27493:32;;27550:37;;;;27528:6;12412:25:1;;12400:2;12385:18;;12367:76;27550:37:0;;;;;;;;-1:-1:-1;27605:4:0;27401:216;;;;;:::o;31341:277::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;;;;;;;;;31513:27:::1;31517:23:::0;31513:2:::1;:27;:::i;:::-;31496:44;::::0;:14;:44:::1;:::i;:::-;31551:9;::::0;:59:::1;::::0;-1:-1:-1;;;31551:59:0;;::::1;::::0;::::1;13610:25:1::0;;;13651:18;;;13644:34;;;31479:61:0;;-1:-1:-1;;;;;;31551:9:0::1;::::0;:31:::1;::::0;13583:18:1;;31551:59:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31341:277:::0;;;:::o;32202:150::-;32282:4;32338:6;32306:29;32326:8;32306:19;:29::i;:::-;:38;;32202:150;-1:-1:-1;;;32202:150:0:o;31151:182::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;31248:15:::1;:25:::0;;;;31284:26:::1;:41:::0;31151:182::o;28262:368::-;-1:-1:-1;;;;;28383:19:0;;28362:4;28383:19;;;:11;:19;;;;;;;;28403:10;28383:31;;;;;;;;-1:-1:-1;;28383:52:0;28379:188;;28486:69;;;;;;;;;;;-1:-1:-1;;;28486:69:0;;;;;;;;-1:-1:-1;;;;;28486:19:0;;-1:-1:-1;28486:19:0;;;:11;:19;;;;;28506:10;28486:31;;;;;;;;;;:69;;28522:6;;28486:35;:69::i;:::-;-1:-1:-1;;;;;28452:19:0;;;;;;:11;:19;;;;;;;;28472:10;28452:31;;;;;;;:103;28379:188;28586:36;28596:6;28604:9;28615:6;28586:9;:36::i;:::-;28579:43;28262:368;-1:-1:-1;;;;28262:368:0:o;32883:284::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;32994:4:::1;32983:7;:15;;32975:24;;;::::0;::::1;;33057:33;33082:7;33057:20;33069:7;33057;;:11;;:20;;;;:::i;:::-;:24:::0;::::1;:33::i;:::-;33040:14;:50:::0;33119:40:::1;33151:7:::0;33119:27:::1;20533:13;33138:7:::0;33119:18:::1;:27::i;:40::-;33101:15;:58:::0;-1:-1:-1;;32883:284:0:o;31888:138::-;32013:4;;-1:-1:-1;;;;;32013:4:0;31941:7;27235:16;;;:7;:16;;;;;;31988:11;;-1:-1:-1;;;;;31988:11:0;27217:7;27235:16;;;:7;:16;;;;;;31968:7;;:32;;;;:::i;:::-;:50;;;;:::i;:::-;31961:57;;31888:138;:::o;32594:281::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;32704:5:::1;32693:7;:16;;32685:25;;;::::0;::::1;;32767:33;32792:7;32767:20;32779:7;32767;;:11;;:20;;;;:::i;:33::-;32752:12;:48:::0;32827:40:::1;32859:7:::0;32827:27:::1;20533:13;32846:7:::0;32827:18:::1;:27::i;:40::-;32811:13;:56:::0;-1:-1:-1;;32594:281:0:o;25733:691::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25814:22:0;::::1;25806:96;;;::::0;-1:-1:-1;;;25806:96:0;;12038:2:1;25806:96:0::1;::::0;::::1;12020:21:1::0;12077:2;12057:18;;;12050:30;12116:34;12096:18;;;12089:62;12187:31;12167:18;;;12160:59;12236:19;;25806:96:0::1;12010:251:1::0;25806:96:0::1;25955:15;25963:6:::0;;-1:-1:-1;;;;;25963:6:0;;::::1;25955:15:::0;;:7:::1;:15;::::0;;;;;;;;25923:11:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:47;25991:6;;;;::::1;26009:15:::0;;;;;;;;;25981:44:::1;::::0;25991:6;25943:8;;25981:9:::1;:44::i;:::-;-1:-1:-1::0;26063:5:0::1;26053:6:::0;;-1:-1:-1;;;;;26053:6:0;;::::1;26038:22:::0;;:14:::1;:22;::::0;;;;;;;:30;;-1:-1:-1;;26038:30:0;;::::1;::::0;;;26099:6;;;::::1;26079:27:::0;;:19:::1;:27:::0;;;;;;:35;;;::::1;::::0;;26125:24;;::::1;::::0;;;;;;;;:31;;;::::1;26053:6:::0;26125:31;;::::1;::::0;;;26167:29;;;;;;:36;;;;::::1;::::0;;::::1;::::0;;26256:6;;26228:16:::1;::::0;;::::1;26256:6:::0;::::1;26228:35;26224:90;;;26278:16;:36:::0;;-1:-1:-1;;;;;;26278:36:0::1;-1:-1:-1::0;;;;;26278:36:0;::::1;;::::0;;26224:90:::1;26335:6;:17:::0;;-1:-1:-1;;;;;;26335:17:0::1;-1:-1:-1::0;;;;;26335:17:0;::::1;::::0;;::::1;::::0;;26368:38:::1;::::0;26335:17;;;;26368:38:::1;::::0;26335:6;26368:38:::1;25733:691:::0;:::o;27625:120::-;27678:4;27702:35;27710:7;-1:-1:-1;;27702:7:0;:35::i;30436:202::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;30529:16:::1;::::0;-1:-1:-1;;;;;30529:29:0;;::::1;:16:::0;::::1;:29;;30521:61;;;::::0;-1:-1:-1;;;30521:61:0;;8946:2:1;30521:61:0::1;::::0;::::1;8928:21:1::0;8985:2;8965:18;;;8958:30;-1:-1:-1;;;9004:18:1;;;8997:49;9063:18;;30521:61:0::1;8918:169:1::0;30521:61:0::1;30593:16;:37:::0;;-1:-1:-1;;;;;;30593:37:0::1;-1:-1:-1::0;;;;;30593:37:0;;;::::1;::::0;;;::::1;::::0;;30436:202::o;29346:350::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29441:23:0;::::1;29459:4;29441:23;::::0;::::1;::::0;:43:::1;;-1:-1:-1::0;29478:6:0::1;::::0;-1:-1:-1;;;;;29468:16:0;;::::1;29478:6:::0;::::1;29468:16;;29441:43;29433:52;;;::::0;::::1;;-1:-1:-1::0;;;;;29496:27:0;::::1;;::::0;;;:19:::1;:27;::::0;;;;:37;;-1:-1:-1;;29496:37:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;29544:145:::1;;29572:9;::::0;:29:::1;::::0;-1:-1:-1;;;29572:29:0;;-1:-1:-1;;;;;4820:32:1;;;29572:29:0::1;::::0;::::1;4802:51:1::0;29572:9:0::1;4869:18:1::0;;;4862:34;29572:9:0;;::::1;::::0;:18:::1;::::0;4775::1;;29572:29:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29346:350:::0;;:::o;29544:145::-:1;29634:9;::::0;-1:-1:-1;;;;;29661:15:0;;::::1;29634:9;29661:15:::0;;;29634:9;29661:15:::1;::::0;;;;;;;29634:43;;-1:-1:-1;;;29634:43:0;;::::1;::::0;::::1;4802:51:1::0;;;;4869:18;;;4862:34;29634:9:0;::::1;::::0;:18:::1;::::0;4775::1;;29634:43:0::1;4757:145:1::0;29544::0::1;29346:350:::0;;:::o;26432:237::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;26524:5:::1;26514:6:::0;;-1:-1:-1;;;;;26514:6:0;;::::1;26499:22:::0;;:14:::1;:22;::::0;;;;;;;:30;;-1:-1:-1;;26499:30:0;;::::1;::::0;;;26560:6;;;;::::1;26540:27:::0;;:19:::1;:27:::0;;;;;;:35;;;;::::1;::::0;;;26586:19;;-1:-1:-1;;;;;;26586:19:0::1;::::0;;26621:40;26524:5;;26621:40:::1;::::0;26524:5;;26621:40:::1;26432:237::o:0;32360:100::-;32411:9;;:41;;-1:-1:-1;;;32411:41:0;;32441:10;32411:41;;;4558:51:1;-1:-1:-1;;;;;32411:9:0;;;;:29;;4531:18:1;;32411:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32360:100::o;29840:588::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;29996:15:::1;;29980:12;:31;;:85;;;;;30049:16;;30032:13;:33;;29980:85;:137;;;;;30102:15;;30086:12;:31;;29980:137;29972:146;;;::::0;::::1;;30185:11;30195:1;30185:7:::0;:11:::1;:::i;:::-;30168:12:::0;30137:28:::1;30152:13:::0;30137:12;:28:::1;:::i;:::-;:43;;;;:::i;:::-;:60;;30129:69;;;::::0;::::1;;30209:13;:28:::0;;;30248:14:::1;:30:::0;;;30289:13:::1;:28:::0;;;30305:12;30340:28:::1;30265:13:::0;30225:12;30340:28:::1;:::i;:::-;:43;;;;:::i;:::-;30328:9;:55:::0;30394:16:::1;:26:::0;-1:-1:-1;;;29840:588:0:o;28102:152::-;28182:4;28206:40;28216:10;28228:9;28239:6;28206:9;:40::i;:::-;28199:47;28102:152;-1:-1:-1;;;28102:152:0:o;31626:131::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;31713:6:::1;31707:3;:12;31699:21;;;::::0;::::1;;31731:12;:18:::0;31626:131::o;30646:191::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;30748:21:::1;:32:::0;;-1:-1:-1;;30791:38:0;30748:32;::::1;;-1:-1:-1::0;;30791:38:0;;;;;30748:32:::1;30791:38:::0;::::1;;::::0;;;::::1;;::::0;;30646:191::o;32034:160::-;32102:7;32164:22;:20;:22::i;:::-;32150:6;;-1:-1:-1;;;;;32150:6:0;27217:7;27235:16;;;:7;:16;;;;;;32129:28;;:8;:28;:::i;:::-;:32;;32160:1;32129:32;:::i;:::-;:57;;;;:::i;29704:128::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29791:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:33;;-1:-1:-1;;29791:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29704:128::o;29159:179::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;29260:16:::1;;;;;;;;;;;29249:27;;:7;:27;;;;29241:52;;;::::0;-1:-1:-1;;;29241:52:0;;7439:2:1;29241:52:0::1;::::0;::::1;7421:21:1::0;7478:2;7458:18;;;7451:30;-1:-1:-1;;;7497:18:1;;;7490:42;7549:18;;29241:52:0::1;7411:162:1::0;29241:52:0::1;29304:16;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;29304:26:0;;::::1;::::0;;;::::1;::::0;;29159:179::o;30845:149::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;30953:33:::1;30978:7;30953:20;30965:7;30953;;:11;;:20;;;;:::i;:33::-;30937:13;:49:::0;-1:-1:-1;;30845:149:0:o;31765:111::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;31841:17:::1;:27:::0;;-1:-1:-1;;31841:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31765:111::o;31002:141::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;31102:33:::1;31127:7;31102:20;31114:7;31102;;:11;;:20;;;;:::i;:33::-;31089:10;:46:::0;-1:-1:-1;;31002:141:0:o;29018:133::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29110:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:33;;-1:-1:-1;;29110:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29018:133::o;39799:128::-;23311:6;;-1:-1:-1;;;;;23311:6:0;23321:10;23311:20;23303:65;;;;-1:-1:-1;;;23303:65:0;;;;;;;:::i;:::-;39859:9:::1;;;;;;;;;-1:-1:-1::0;;;;;39859:9:0::1;-1:-1:-1::0;;;;;39859:17:0::1;;39884:21;39859:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;39855:65:::0;39799:128::o;32468:118::-;32547:9;;:31;;;-1:-1:-1;;;32547:31:0;;;;32520:7;;-1:-1:-1;;;;;32547:9:0;;:29;;:31;;;;;;;;;;;;;;:9;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5156:192::-;5242:7;5278:12;5270:6;;;;5262:29;;;;-1:-1:-1;;;5262:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5302:9:0;5314:5;5318:1;5314;:5;:::i;:::-;5302:17;5156:192;-1:-1:-1;;;;;5156:192:0:o;33513:958::-;33592:4;-1:-1:-1;;;;;33617:18:0;;33609:68;;;;-1:-1:-1;;;33609:68:0;;11632:2:1;33609:68:0;;;11614:21:1;11671:2;11651:18;;;11644:30;11710:34;11690:18;;;11683:62;-1:-1:-1;;;11761:18:1;;;11754:35;11806:19;;33609:68:0;11604:227:1;33609:68:0;-1:-1:-1;;;;;33696:16:0;;33688:64;;;;-1:-1:-1;;;33688:64:0;;7035:2:1;33688:64:0;;;7017:21:1;7074:2;7054:18;;;7047:30;7113:34;7093:18;;;7086:62;-1:-1:-1;;;7164:18:1;;;7157:33;7207:19;;33688:64:0;7007:225:1;33688:64:0;33780:1;33771:6;:10;33763:64;;;;-1:-1:-1;;;33763:64:0;;10877:2:1;33763:64:0;;;10859:21:1;10916:2;10896:18;;;10889:30;10955:34;10935:18;;;10928:62;-1:-1:-1;;;11006:18:1;;;10999:39;11055:19;;33763:64:0;10849:231:1;33763:64:0;33841:20;33852:4;33858:2;33841:10;:20::i;:::-;33838:113;;;33894:12;;33884:6;:22;;33876:75;;;;-1:-1:-1;;;33876:75:0;;9294:2:1;33876:75:0;;;9276:21:1;9333:2;9313:18;;;9306:30;9372:34;9352:18;;;9345:62;-1:-1:-1;;;9423:18:1;;;9416:38;9471:19;;33876:75:0;9266:230:1;33876:75:0;33965:20;33976:4;33982:2;33965:10;:20::i;:::-;:57;;;;-1:-1:-1;34008:14:0;;-1:-1:-1;;;;;34002:20:0;;;34008:14;;34002:20;;33965:57;:87;;;;-1:-1:-1;34046:6:0;;-1:-1:-1;;;;;34040:12:0;;;34046:6;;34040:12;;33965:87;33962:298;;;-1:-1:-1;;;;;27235:16:0;;34079:32;27235:16;;;:7;:16;;;;;;34187:14;;34079:48;;-1:-1:-1;34150:33:0;34177:6;34079:48;34150:33;:::i;:::-;:51;;34142:106;;;;-1:-1:-1;;;34142:106:0;;9703:2:1;34142:106:0;;;9685:21:1;9742:2;9722:18;;;9715:30;9781:34;9761:18;;;9754:62;-1:-1:-1;;;9832:18:1;;;9825:40;9882:19;;34142:106:0;9675:232:1;34142:106:0;33962:298;;-1:-1:-1;;;;;34315:20:0;;34272:12;34315:20;;;:14;:20;;;;;;34287:4;;34315:20;;;:42;;-1:-1:-1;;;;;;34339:18:0;;;;;;:14;:18;;;;;;;;34315:42;34312:88;;;-1:-1:-1;34383:5:0;34312:88;34419:44;34437:4;34443:2;34447:6;34455:7;34419:17;:44::i;5607:471::-;5665:7;5910:6;5906:47;;-1:-1:-1;5940:1:0;5933:8;;5906:47;5965:9;5977:5;5981:1;5977;:5;:::i;:::-;5965:17;-1:-1:-1;6010:1:0;6001:5;6005:1;5965:17;6001:5;:::i;:::-;:10;5993:56;;;;-1:-1:-1;;;5993:56:0;;10114:2:1;5993:56:0;;;10096:21:1;10153:2;10133:18;;;10126:30;10192:34;10172:18;;;10165:62;-1:-1:-1;;;10243:18:1;;;10236:31;10284:19;;5993:56:0;10086:223:1;6554:132:0;6612:7;6639:39;6643:1;6646;6639:39;;;;;;;;;;;;;;;;;:3;:39::i;33175:330::-;33243:4;25711:6;;-1:-1:-1;;;;;33267:15:0;;;25711:6;;33267:15;;;;:45;;-1:-1:-1;25684:7:0;25711:6;-1:-1:-1;;;;;33299:13:0;;;25711:6;;33299:13;;33267:45;:84;;;;-1:-1:-1;;;;;;33330:21:0;;;;;;:17;:21;;;;;;;;33329:22;33267:84;:125;;;;-1:-1:-1;;;;;;33369:23:0;;;;;;:17;:23;;;;;;;;33368:24;33267:125;:159;;;;-1:-1:-1;33415:11:0;;-1:-1:-1;;;;;33409:17:0;;;33415:11;;33409:17;;33267:159;:192;;;;-1:-1:-1;;;;;;33443:16:0;;;;33267:192;:230;;;;-1:-1:-1;;;;;;;;33476:21:0;33492:4;33476:21;;;33175:330::o;34479:2055::-;34659:16;;34580:4;;34659:16;;;;;34655:984;;;-1:-1:-1;;;;;28723:23:0;;28699:4;28723:23;;;:14;:23;;;;;;;;34763:40;;;-1:-1:-1;;;;;;28723:23:0;;28699:4;28723:23;;;:14;:23;;;;;;;;34786:17;34759:107;;;34824:26;;-1:-1:-1;;;34824:26:0;;11287:2:1;34824:26:0;;;11269:21:1;11326:2;11306:18;;;11299:30;-1:-1:-1;;;11345:18:1;;;11338:46;11401:18;;34824:26:0;11259:166:1;34759:107:0;34956:16;;;;;;;34951:677;;34993:28;35012:4;35018:2;34993:18;:28::i;:::-;35049:16;;;;;;;35048:17;:41;;;;;35069:20;35080:4;35086:2;35069:10;:20::i;:::-;35044:145;;;35118:47;;-1:-1:-1;;;35118:47:0;;8540:2:1;35118:47:0;;;8522:21:1;8579:2;8559:18;;;8552:30;8618:34;8598:18;;;8591:62;-1:-1:-1;;;8669:18:1;;;8662:35;8714:19;;35118:47:0;8512:227:1;35044:145:0;34951:677;;;35248:1;35233:12;;:16;:56;;;;-1:-1:-1;35283:6:0;;-1:-1:-1;;;;;35275:14:0;;;35283:6;;35275:14;35233:56;:102;;;;;35315:20;35326:4;35332:2;35315:10;:20::i;:::-;35229:384;;;35412:13;35397:12;;35382;:27;;;;:::i;:::-;:43;35378:216;;;-1:-1:-1;;;;;35454:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;35454:25:0;35475:4;35454:25;;;35506:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;35554:16:0;;-1:-1:-1;;;;;4576:32:1;;4558:51;;35554:16:0;;4546:2:1;4531:18;35554:16:0;;;;;;;35378:216;35667:49;;;;;;;;;;;-1:-1:-1;;;35667:49:0;;;;;;;;-1:-1:-1;;;;;35667:13:0;;-1:-1:-1;35667:13:0;;;:7;:13;;;;;;;;:49;;35685:6;;35667:17;:49::i;:::-;-1:-1:-1;;;;;35651:13:0;;;;;;:7;:13;;;;;:65;35733:6;;;;;;;35729:78;;;35763:32;35778:4;35784:2;35788:6;35763:14;:32::i;:::-;35756:39;;;;35729:78;35866:4;35819:28;35850:22;;;:7;:22;;;;;;35910:10;;35886:34;;35883:85;;-1:-1:-1;35958:10:0;;35883:85;35986:6;;;;;;;35985:7;:38;;;;-1:-1:-1;36017:6:0;;-1:-1:-1;;;;;36009:14:0;;;36017:6;;36009:14;;35985:38;:76;;;;-1:-1:-1;36040:21:0;;;;35985:76;:130;;;;;36102:13;;36078:20;:37;;35985:130;35981:203;;;36142:30;36151:20;36142:8;:30::i;:::-;36221:6;36240:80;;;;36285:23;36295:4;36301:6;36285:9;:23::i;:::-;36268:40;;36240:80;-1:-1:-1;;;;;36346:11:0;;;;;;:7;:11;;;;;;:31;;36362:14;36346:15;:31::i;:::-;-1:-1:-1;;;;;36332:11:0;;;;;;:7;:11;;;;;:45;36394:14;;;;;;;36390:62;;;36423:29;36443:4;36449:2;36423:19;:29::i;:::-;36485:2;-1:-1:-1;;;;;36470:34:0;36479:4;-1:-1:-1;;;;;36470:34:0;;36489:14;36470:34;;;;12412:25:1;;12400:2;12385:18;;12367:76;36470:34:0;;;;;;;;-1:-1:-1;36522:4:0;;34479:2055;-1:-1:-1;;;;;;34479:2055:0:o;7183:278::-;7269:7;7304:12;7297:5;7289:28;;;;-1:-1:-1;;;7289:28:0;;;;;;;;:::i;:::-;-1:-1:-1;7328:9:0;7340:5;7344:1;7340;:5;:::i;39935:480::-;40017:16;;;;;;;40016:17;40008:65;;;;-1:-1:-1;;;40008:65:0;;7780:2:1;40008:65:0;;;7762:21:1;7819:2;7799:18;;;7792:30;7858:34;7838:18;;;7831:62;-1:-1:-1;;;7909:18:1;;;7902:33;7952:19;;40008:65:0;7752:225:1;40008:65:0;40089:20;40100:4;40106:2;40089:10;:20::i;:::-;40088:21;:37;;;;-1:-1:-1;40119:6:0;;-1:-1:-1;;;;;40113:12:0;;;40119:6;;40113:12;40088:37;40084:324;;;-1:-1:-1;;;;;40142:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;40142:30:0;;;40168:4;40142:30;;;;;;40187:16;:23;;-1:-1:-1;;40187:23:0;;;;;40240:12;40225;:27;40282:15;40267:12;:30;40314:21;:28;;;;;;;;;40362:34;;5938:41:1;;;40362:34:0;;5911:18:1;40362:34:0;;;;;;;39935:480;;:::o;37181:219::-;-1:-1:-1;;;;;37291:18:0;;37274:4;37291:18;;;:7;:18;;;;;:28;;37313:6;;37291:18;37274:4;;37291:28;;37313:6;;37291:28;:::i;:::-;;;;;;;;37352:9;-1:-1:-1;;;;;37335:35:0;37344:6;-1:-1:-1;;;;;37335:35:0;;37363:6;37335:35;;;;12412:25:1;;12400:2;12385:18;;12367:76;37335:35:0;;;;;;;;-1:-1:-1;37388:4:0;37181:219;;;;;:::o;37939:1852::-;23205:6;:13;;-1:-1:-1;;23205:13:0;;;;;38057:15:::1;::::0;38074:26:::1;::::0;23205:13;;38041:60:::1;::::0;:15:::1;:60::i;:::-;:80;;38108:13;;38041:80;;;38104:1;38041:80;38011:110;;38132:23;38210:1;38198:9;;38176:19;38158:15;:37;;;;:::i;:::-;:49;;;;:::i;:::-;:53;;;;:::i;:::-;38132:79:::0;-1:-1:-1;38222:20:0::1;38245:33;38132:79:::0;38245:15;:33:::1;:::i;:::-;38315:16;::::0;;38329:1:::1;38315:16:::0;;;;;::::1;::::0;;38222:56;;-1:-1:-1;38291:21:0::1;::::0;38315:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;38315:16:0::1;38291:40;;38360:4;38342;38347:1;38342:7;;;;;;-1:-1:-1::0;;;38342:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;38342:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;38386:4:::1;::::0;38376:7;;38386:4;::::1;::::0;38376;;38386;;38376:7;::::1;;;-1:-1:-1::0;;;38376:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;38376:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;38461:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;38461:191:0;;38427:21:::1;::::0;38461:9;;;::::1;::::0;:60:::1;::::0;:191:::1;::::0;38536:12;;38403:21:::1;::::0;38579:4;;38606::::1;::::0;38626:15:::1;::::0;38461:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;38721:17:0::1;::::0;38685:21:::1;::::0;-1:-1:-1;38721:17:0::1;;38717:86;::::0;-1:-1:-1;38717:86:0::1;;38766:37;38790:13:::0;38766:21:::1;:37;:::i;:::-;38754:49;;38717:86;38814:19;38848:23;38870:1;38848:19:::0;:23:::1;:::i;:::-;38836:9;;:35;;;;:::i;:::-;38814:57:::0;-1:-1:-1;38882:26:0::1;38959:1;38814:57:::0;38911:31:::1;38923:19:::0;38911:9;:31:::1;:::i;:::-;:45;;;;:::i;:::-;:49;;;;:::i;:::-;38882:78;;38971:27;39030:11;39013:14;;39001:9;:26;;;;:::i;:::-;:40;;;;:::i;:::-;38971:70:::0;-1:-1:-1;39052:26:0::1;39081:58;38971:70:::0;39081:33:::1;:9:::0;39095:18;39081:13:::1;:33::i;:::-;:37:::0;::::1;:58::i;:::-;39150:16;::::0;:45:::1;::::0;39052:87;;-1:-1:-1;;;;;;39150:16:0::1;::::0;:45;::::1;;;::::0;39052:87;;39150:16:::1;:45:::0;:16;:45;39052:87;39150:16;:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;39212:19:0;;39208:501:::1;;39248:9;::::0;39425:11:::1;::::0;39248:237:::1;::::0;-1:-1:-1;;;39248:237:0;;39327:4:::1;39248:237;::::0;::::1;5527:34:1::0;5577:18;;;5570:34;;;39248:9:0::1;5620:18:1::0;;;5613:34;;;5663:18;;;5656:34;-1:-1:-1;;;;;39425:11:0;;::::1;5706:19:1::0;;;5699:44;39455:15:0::1;5759:19:1::0;;;5752:35;39248:9:0;::::1;::::0;:25:::1;::::0;39281:18;;5461:19:1;;39248:237:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;39505:48:0::1;::::0;;13610:25:1;;;13666:2;13651:18;;13644:34;;;39505:48:0::1;::::0;-1:-1:-1;13583:18:1;39505:48:0::1;;;;;;;39208:501;;;39656:41;39679:18:::0;39656:41;::::1;:::i;:::-;;;39208:501;39725:9;;;;;;;;;-1:-1:-1::0;;;;;39725:9:0::1;-1:-1:-1::0;;;;;39725:17:0::1;;39750:19;39725:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;39721:63:::0;-1:-1:-1;;23241:6:0;:14;;-1:-1:-1;;23241:14:0;;;-1:-1:-1;;;;;;;;;37939:1852:0:o;37629:302::-;37698:7;37718:17;37763:16;;37747:13;37604:9;;;37533:88;37747:13;37738:22;;:6;:22;:::i;:::-;:41;;;;:::i;:::-;37808:4;37792:22;;;;:7;:22;;;;;:35;;37718:61;;-1:-1:-1;37718:61:0;;37792:22;;;:35;;37718:61;;37792:35;:::i;:::-;;;;-1:-1:-1;;37843:42:0;;12412:25:1;;;37868:4:0;;-1:-1:-1;;;;;37843:42:0;;;;;12400:2:1;12385:18;37843:42:0;;;;;;;37905:18;37914:9;37905:6;:18;:::i;4253:181::-;4311:7;;4343:5;4347:1;4343;:5;:::i;:::-;4331:17;;4372:1;4367;:6;;4359:46;;;;-1:-1:-1;;;4359:46:0;;8184:2:1;4359:46:0;;;8166:21:1;8223:2;8203:18;;;8196:30;8262:29;8242:18;;;8235:57;8309:18;;4359:46:0;8156:177:1;36769:404:0;-1:-1:-1;;;;;36884:25:0;;;;;;:19;:25;;;;;;;;36879:113;;36930:9;;-1:-1:-1;;;;;36955:13:0;;;36930:9;36955:13;;;36930:9;36955:13;;;;;;;;36930:39;;-1:-1:-1;;;36930:39:0;;;;;4802:51:1;;;;4869:18;;;4862:34;36930:9:0;;;:18;;4775::1;;36930:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36926:55;;-1:-1:-1;;;;;37007:23:0;;;;;;:19;:23;;;;;;;;37002:107;;37051:9;;-1:-1:-1;;;;;37074:11:0;;;37051:9;37074:11;;;37051:9;37074:11;;;;;;;;37051:35;;-1:-1:-1;;;37051:35:0;;;;;4802:51:1;;;;4869:18;;;4862:34;37051:9:0;;;:18;;4775::1;;37051:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37047:51;;37123:9;;37141:12;;37123:31;;-1:-1:-1;;;;;;37123:31:0;;-1:-1:-1;;;;;37123:9:0;;;;:17;;:31;;;;12412:25:1;;;12400:2;12385:18;;12367:76;37123:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37119:47;;29346:350;;:::o;4717:136::-;4775:7;4802:43;4806:1;4809;4802:43;;;;;;;;;;;;;;;;;:3;:43::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;711:398::-;779:6;787;840:2;828:9;819:7;815:23;811:32;808:2;;;861:6;853;846:22;808:2;905:9;892:23;924:31;949:5;924:31;:::i;:::-;974:5;-1:-1:-1;1031:2:1;1016:18;;1003:32;1044:33;1003:32;1044:33;:::i;:::-;1096:7;1086:17;;;798:311;;;;;:::o;1114:466::-;1191:6;1199;1207;1260:2;1248:9;1239:7;1235:23;1231:32;1228:2;;;1281:6;1273;1266:22;1228:2;1325:9;1312:23;1344:31;1369:5;1344:31;:::i;:::-;1394:5;-1:-1:-1;1451:2:1;1436:18;;1423:32;1464:33;1423:32;1464:33;:::i;:::-;1218:362;;1516:7;;-1:-1:-1;;;1570:2:1;1555:18;;;;1542:32;;1218:362::o;1585:325::-;1650:6;1658;1711:2;1699:9;1690:7;1686:23;1682:32;1679:2;;;1732:6;1724;1717:22;1679:2;1776:9;1763:23;1795:31;1820:5;1795:31;:::i;:::-;1845:5;-1:-1:-1;1869:35:1;1900:2;1885:18;;1869:35;:::i;:::-;1859:45;;1669:241;;;;;:::o;1915:325::-;1983:6;1991;2044:2;2032:9;2023:7;2019:23;2015:32;2012:2;;;2065:6;2057;2050:22;2012:2;2109:9;2096:23;2128:31;2153:5;2128:31;:::i;:::-;2178:5;2230:2;2215:18;;;;2202:32;;-1:-1:-1;;;2002:238:1:o;2245:190::-;2301:6;2354:2;2342:9;2333:7;2329:23;2325:32;2322:2;;;2375:6;2367;2360:22;2322:2;2403:26;2419:9;2403:26;:::i;2440:258::-;2502:6;2510;2563:2;2551:9;2542:7;2538:23;2534:32;2531:2;;;2584:6;2576;2569:22;2531:2;2612:26;2628:9;2612:26;:::i;2703:190::-;2762:6;2815:2;2803:9;2794:7;2790:23;2786:32;2783:2;;;2836:6;2828;2821:22;2783:2;-1:-1:-1;2864:23:1;;2773:120;-1:-1:-1;2773:120:1:o;2898:194::-;2968:6;3021:2;3009:9;3000:7;2996:23;2992:32;2989:2;;;3042:6;3034;3027:22;2989:2;-1:-1:-1;3070:16:1;;2979:113;-1:-1:-1;2979:113:1:o;3097:258::-;3165:6;3173;3226:2;3214:9;3205:7;3201:23;3197:32;3194:2;;;3247:6;3239;3232:22;3194:2;-1:-1:-1;;3275:23:1;;;3345:2;3330:18;;;3317:32;;-1:-1:-1;3184:171:1:o;3360:326::-;3437:6;3445;3453;3506:2;3494:9;3485:7;3481:23;3477:32;3474:2;;;3527:6;3519;3512:22;3474:2;-1:-1:-1;;3555:23:1;;;3625:2;3610:18;;3597:32;;-1:-1:-1;3676:2:1;3661:18;;;3648:32;;3464:222;-1:-1:-1;3464:222:1:o;3691:316::-;3779:6;3787;3795;3848:2;3836:9;3827:7;3823:23;3819:32;3816:2;;;3869:6;3861;3854:22;3816:2;3903:9;3897:16;3887:26;;3953:2;3942:9;3938:18;3932:25;3922:35;;3997:2;3986:9;3982:18;3976:25;3966:35;;3806:201;;;;;:::o;4012:395::-;4098:6;4106;4114;4122;4175:3;4163:9;4154:7;4150:23;4146:33;4143:2;;;4197:6;4189;4182:22;4143:2;-1:-1:-1;;4225:23:1;;;4295:2;4280:18;;4267:32;;-1:-1:-1;4346:2:1;4331:18;;4318:32;;4397:2;4382:18;4369:32;;-1:-1:-1;4133:274:1;-1:-1:-1;4133:274:1:o;6225:603::-;6337:4;6366:2;6395;6384:9;6377:21;6427:6;6421:13;6470:6;6465:2;6454:9;6450:18;6443:34;6495:4;6508:140;6522:6;6519:1;6516:13;6508:140;;;6617:14;;;6613:23;;6607:30;6583:17;;;6602:2;6579:26;6572:66;6537:10;;6508:140;;;6666:6;6663:1;6660:13;6657:2;;;6736:4;6731:2;6722:6;6711:9;6707:22;6703:31;6696:45;6657:2;-1:-1:-1;6812:2:1;6791:15;-1:-1:-1;;6787:29:1;6772:45;;;;6819:2;6768:54;;6346:482;-1:-1:-1;;;6346:482:1:o;10314:356::-;10516:2;10498:21;;;10535:18;;;10528:30;10594:34;10589:2;10574:18;;10567:62;10661:2;10646:18;;10488:182::o;12448:983::-;12710:4;12758:3;12747:9;12743:19;12789:6;12778:9;12771:25;12815:2;12853:6;12848:2;12837:9;12833:18;12826:34;12896:3;12891:2;12880:9;12876:18;12869:31;12920:6;12955;12949:13;12986:6;12978;12971:22;13024:3;13013:9;13009:19;13002:26;;13063:2;13055:6;13051:15;13037:29;;13084:4;13097:195;13111:6;13108:1;13105:13;13097:195;;;13176:13;;-1:-1:-1;;;;;13172:39:1;13160:52;;13267:15;;;;13232:12;;;;13208:1;13126:9;13097:195;;;-1:-1:-1;;;;;;;13348:32:1;;;;13343:2;13328:18;;13321:60;-1:-1:-1;;;13412:3:1;13397:19;13390:35;13309:3;12719:712;-1:-1:-1;;;12719:712:1:o;13878:128::-;13918:3;13949:1;13945:6;13942:1;13939:13;13936:2;;;13955:18;;:::i;:::-;-1:-1:-1;13991:9:1;;13926:80::o;14011:217::-;14051:1;14077;14067:2;;-1:-1:-1;;;14102:31:1;;14156:4;14153:1;14146:15;14184:4;14109:1;14174:15;14067:2;-1:-1:-1;14213:9:1;;14057:171::o;14233:422::-;14322:1;14365:5;14322:1;14379:270;14400:7;14390:8;14387:21;14379:270;;;14459:4;14455:1;14451:6;14447:17;14441:4;14438:27;14435:2;;;14468:18;;:::i;:::-;14518:7;14508:8;14504:22;14501:2;;;14538:16;;;;14501:2;14617:22;;;;14577:15;;;;14379:270;;;14383:3;14297:358;;;;;:::o;14660:131::-;14720:5;14749:36;14776:8;14770:4;14845:5;14875:8;14865:2;;-1:-1:-1;14916:1:1;14930:5;;14865:2;14964:4;14954:2;;-1:-1:-1;15001:1:1;15015:5;;14954:2;15046:4;15064:1;15059:59;;;;15132:1;15127:130;;;;15039:218;;15059:59;15089:1;15080:10;;15103:5;;;15127:130;15164:3;15154:8;15151:17;15148:2;;;15171:18;;:::i;:::-;-1:-1:-1;;15227:1:1;15213:16;;15242:5;;15039:218;;15341:2;15331:8;15328:16;15322:3;15316:4;15313:13;15309:36;15303:2;15293:8;15290:16;15285:2;15279:4;15276:12;15272:35;15269:77;15266:2;;;-1:-1:-1;15378:19:1;;;15410:5;;15266:2;15457:34;15482:8;15476:4;15457:34;:::i;:::-;15527:6;15523:1;15519:6;15515:19;15506:7;15503:32;15500:2;;;15538:18;;:::i;:::-;15576:20;;14855:747;-1:-1:-1;;;14855:747:1:o;15607:168::-;15647:7;15713:1;15709;15705:6;15701:14;15698:1;15695:21;15690:1;15683:9;15676:17;15672:45;15669:2;;;15720:18;;:::i;:::-;-1:-1:-1;15760:9:1;;15659:116::o;15780:125::-;15820:4;15848:1;15845;15842:8;15839:2;;;15853:18;;:::i;:::-;-1:-1:-1;15890:9:1;;15829:76::o;15910:135::-;15949:3;-1:-1:-1;;15970:17:1;;15967:2;;;15990:18;;:::i;:::-;-1:-1:-1;16037:1:1;16026:13;;15957:88::o;16050:127::-;16111:10;16106:3;16102:20;16099:1;16092:31;16142:4;16139:1;16132:15;16166:4;16163:1;16156:15;16182:131;-1:-1:-1;;;;;16257:31:1;;16247:42;;16237:2;;16303:1;16300;16293:12

Swarm Source

ipfs://45015e0737fd88e3f4e3db38bf05c8518deef65aed67d3cc3f256c4adcbaee9f
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.