Contract 0x3953AFf0D69e8e9f3C06b1a468783C3F4B0F6F16 2

Token Contract 
 

Contract Overview

Shikage: Old SHKG Token
Balance:
0.000180400364825834 Ether

EtherValue:
$0.23 (@ $1,289.43/ETH)

Token:
 
Txn Hash
Method
Block
From
To
Value
0x45e2ec8e131d3faaba4ddf5b2b14cb9c506d6564fd01b1c153be0c16cbaf63edTransfer158797162022-11-02 3:41:3528 days 23 hrs ago0x7069d1630bdbd823545547427ed49b1c8cbcf882 IN  Shikage: Old SHKG Token0 Ether0.00132904 14.94355389
0x8f07ebbca0c8686e4e51742a4b70c72b6899aac2d8319becd57b4fcf2be8d751Transfer158739062022-11-01 8:10:3529 days 19 hrs ago0xe05014a71ce832ee7974cf11d12f7392c25c945c IN  Shikage: Old SHKG Token0 Ether0.00110056 12.37617119
0x0621ed387c5dcc38467a57322f8daafbfc55e56dde80922bb0de78445778ed0aTransfer158678912022-10-31 11:57:4730 days 15 hrs ago0x7e3759ad9f259342db1536fdf523297d9ed5cd70 IN  Shikage: Old SHKG Token0 Ether0.00130807 19.27885839
0xaa14767e90cdded70d88c1aeb0d10c6e677ba553202948da3c8fc31c9fc3a01dApprove156938362022-10-07 4:28:2354 days 22 hrs agoENS Name globalvr.eth IN  Shikage: Old SHKG Token0 Ether0.00010161 4.1834699
0x255607e6a72c719bf9667d9ce5cde2ebf21930c4aa4a2583096ad8af7043678aTransfer155952512022-09-23 9:48:1168 days 17 hrs ago0x572e3e74c389a41539b7baf1fb8bdd115bd483d3 IN  Shikage: Old SHKG Token0 Ether0.00170494 19.1675044
0xad8c962ce180d0533efc2358e62a8ba0ade3d06e57e3ad3ff7faf13214b547d0Approve155584152022-09-18 5:41:2373 days 21 hrs ago0x71cc64f80e99e753dbca4d42ae1441065de36a54 IN  Shikage: Old SHKG Token0 Ether0.00013214 5.4406492
0x1064f26f2a7f8e702016e7a115ac5b9e259708b36d83f42f13ca7f89067fe72fApprove151879502022-07-21 19:51:19132 days 7 hrs ago0x55c299713030e2e5b14533b303393834b3a44ad0 IN  Shikage: Old SHKG Token0 Ether0.0003669 15.10577674
0x6f9c0a4a59093114c3f5f1a8ffb57bcecfefd023f9d951685103f0f5b034c17aApprove150632762022-07-02 13:05:16151 days 14 hrs agoENS Name getfuckedyouscammingcunt.eth IN  Shikage: Old SHKG Token0 Ether0.00018626 7.66866604
0xfdd3dbc41dc439e026acfd6b7cf4c6b3f82a25ddc719e932581b3c7347978569Transfer149871532022-06-18 21:17:27165 days 6 hrs agoENS Name cartoonapes.eth IN  Shikage: Old SHKG Token0 Ether0.00694085 78.04150415
0xcba37bb96320b969494a66de12bbc53e6a97058613efd34ff6be5ec03e5fe8f4Transfer149794422022-06-17 13:35:28166 days 13 hrs ago0x5a9b02794eb482f2b06948e460b5b9e9479ac218 IN  Shikage: Old SHKG Token0 Ether0.00284222 31.96164064
0x1db6b108154b184eba69df90e23e8fd6ec2a9cfa272d161b1f6d6481f3915ab2Transfer149603882022-06-14 6:42:32169 days 20 hrs ago0xd62b22e0bef4a01c63c7d41531ab2e0dfe0a03b6 IN  Shikage: Old SHKG Token0 Ether0.00438675 49.31707805
0x84573d59aba8fa82ef64990d82816b35a2f3bbf38dad3bc2946a7008367aacafTransfer146412362022-04-23 13:05:26221 days 14 hrs ago0x2619538efab2ced67b266ed551ab58d092b6f0e0 IN  Shikage: Old SHKG Token0 Ether0.00248648 27.95747222
0x1caa56562edd0f79b0d212431336821dba929d44596d7517046cfa9ebea74f11Approve145325412022-04-06 13:08:45238 days 14 hrs ago0x79c118c196be792e77e3b537e491c8494799031a IN  Shikage: Old SHKG Token0 Ether0.0007982332.86398866
0x16de52f4c659c6c5b7c57d110db24c56cf8366e8f25825cfccd378bc136a6e03Transfer144844202022-03-30 0:42:57246 days 2 hrs ago0xcc7a312dc2d20f90086a00b94bf650c3e8d8ed17 IN  Shikage: Old SHKG Token0 Ether0.00484014 54.42151277
0x48bb8f16eba535f44c3baa39b7054d9a0afc742f6b5ab5a7f427be540e1a264eTransfer144582142022-03-25 22:55:49250 days 4 hrs ago0x917e21ad39a0142435fe457c81426c1f5482ac37 IN  Shikage: Old SHKG Token0 Ether0.00440603 49.54716279
0xa81a9a5f30fbcc002cd62d041c8c697feeb69c45f2106c798c81b76e7a95a851Transfer144217652022-03-20 7:04:24255 days 20 hrs ago0xa0fc9b22458b544001202eadd6e16cec1924fc06 IN  Shikage: Old SHKG Token0 Ether0.00124968 17.39297547
0x790e29c57d537875edc7ebd6388f17bc4bd8518959ebce226cc7769ed58b5fd0Transfer144209702022-03-20 3:56:02255 days 23 hrs ago0xfcf9c19841cd8c6cd7114e638b02e62189a89601 IN  Shikage: Old SHKG Token0 Ether0.00091887 12.79086811
0xb621a984f94ed80c437291ef5c658f9bcac3bdf3932014e601bfec284a7e8f36Transfer144158672022-03-19 8:44:47256 days 18 hrs ago0x8e461fc622b03c8e8f30c47eae6afd3fe4041a61 IN  Shikage: Old SHKG Token0 Ether0.00152651 21.24588125
0xcc2b114c99553c5f7300d4b132033611e4a852802b785ae98c8b3bfb815094caTransfer144037562022-03-17 11:30:57258 days 15 hrs ago0x2f7c8846e37f8bcd89775b5d3e6217a72e6762e6 IN  Shikage: Old SHKG Token0 Ether0.00147053 20.46675688
0xb9f1bf2914aca366f4bff92d4833c3137f9b1b22545a711510bd13aefd39128cTransfer144026162022-03-17 7:18:42258 days 20 hrs ago0x2577926cdf7d4f5120db2d1a334b3da151339a1c IN  Shikage: Old SHKG Token0 Ether0.00137534 19.14504561
0xaa30e611cba6e8067c067317635de9a41fc85398bafaf7c350d7da8d63a6b80eTransfer144005892022-03-16 23:47:14259 days 3 hrs ago0x9907ca5ca181af549d935625369317bba23f3603 IN  Shikage: Old SHKG Token0 Ether0.0047330165.88461572
0xcf3865bce20799e9947f9ecca25c0f1dff4893164ca8c63bcf74cae642162b5cTransfer143994372022-03-16 19:16:58259 days 8 hrs ago0x9e4671ce6669fc4132233bf54dbd7668be6b9135 IN  Shikage: Old SHKG Token0 Ether0.00422714 58.84272776
0x11d70cb97eb0a6ea3e4e948eea433fe7dc87547629a038353a667918851da2d8Transfer143989192022-03-16 17:14:41259 days 10 hrs ago0xe2f6297b21bdebd0d4dce1fedac0fd3daa1825c6 IN  Shikage: Old SHKG Token0 Ether0.00217593 30.28438527
0xb92f8492ace9bda615bde33e76a6603e9a72a7186bfff818d4da958034fa0bccTransfer143979782022-03-16 13:56:17259 days 13 hrs ago0xce25b860d6eb2c8c5c4d2612f24938ec7c0a18c8 IN  Shikage: Old SHKG Token0 Ether0.00277213 38.58875219
0x847a6b09224d5ef03ed1bd3e00e28b69b6a131d42a79682acde66383ca3d10abTransfer143977692022-03-16 13:08:05259 days 14 hrs ago0x8234c6f336ee48073858c9606cf40ba5744108d6 IN  Shikage: Old SHKG Token0 Ether0.00220847 30.74239168
[ Download CSV Export 

OVERVIEW

Shikage has migrated to 0x66f873e4776fa0adad5dbd0c6dc11afc40ab4c2c

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x9549ff21839fb127a90b2e279dfd2b55b7c8cb5eaaabf463ad7002879ec7f2c4141740372022-02-09 20:31:15294 days 6 hrs ago Shikage: Old SHKG Token0x592ab8ed942c7eb84cb27616f1dcb57669dfd9010.26409995 Ether
0x9549ff21839fb127a90b2e279dfd2b55b7c8cb5eaaabf463ad7002879ec7f2c4141740372022-02-09 20:31:15294 days 6 hrs ago Shikage: Old SHKG Token0x51fe1edbc149556ef2867115e58616428aa2c19a0.26409995 Ether
0x9549ff21839fb127a90b2e279dfd2b55b7c8cb5eaaabf463ad7002879ec7f2c4141740372022-02-09 20:31:15294 days 6 hrs ago Uniswap V2: Router 2 Shikage: Old SHKG Token0.0001804 Ether
0x9549ff21839fb127a90b2e279dfd2b55b7c8cb5eaaabf463ad7002879ec7f2c4141740372022-02-09 20:31:15294 days 6 hrs ago Shikage: Old SHKG Token Uniswap V2: Router 20.06602498 Ether
0x9549ff21839fb127a90b2e279dfd2b55b7c8cb5eaaabf463ad7002879ec7f2c4141740372022-02-09 20:31:15294 days 6 hrs ago Uniswap V2: Router 2 Shikage: Old SHKG Token0.59419499 Ether
0x4942ab272e2652a05942b6f9be275a21cf85a63acefbac9e1f654ec254f1beb6141733362022-02-09 17:56:11294 days 9 hrs ago Shikage: Old SHKG Token0x592ab8ed942c7eb84cb27616f1dcb57669dfd9010.1728628 Ether
0x4942ab272e2652a05942b6f9be275a21cf85a63acefbac9e1f654ec254f1beb6141733362022-02-09 17:56:11294 days 9 hrs ago Shikage: Old SHKG Token0x51fe1edbc149556ef2867115e58616428aa2c19a0.1728628 Ether
0x4942ab272e2652a05942b6f9be275a21cf85a63acefbac9e1f654ec254f1beb6141733362022-02-09 17:56:11294 days 9 hrs ago Uniswap V2: Router 2 Shikage: Old SHKG Token0.0000299 Ether
0x4942ab272e2652a05942b6f9be275a21cf85a63acefbac9e1f654ec254f1beb6141733362022-02-09 17:56:11294 days 9 hrs ago Shikage: Old SHKG Token Uniswap V2: Router 20.0432157 Ether
0x4942ab272e2652a05942b6f9be275a21cf85a63acefbac9e1f654ec254f1beb6141733362022-02-09 17:56:11294 days 9 hrs ago Uniswap V2: Router 2 Shikage: Old SHKG Token0.38894131 Ether
0x77cb766ed5cf3aafa6f7dbb252274990b5327048d1e67c4e63212f0fda30cedd141733352022-02-09 17:55:02294 days 9 hrs ago Shikage: Old SHKG Token0x592ab8ed942c7eb84cb27616f1dcb57669dfd9010.04722628 Ether
0x77cb766ed5cf3aafa6f7dbb252274990b5327048d1e67c4e63212f0fda30cedd141733352022-02-09 17:55:02294 days 9 hrs ago Shikage: Old SHKG Token0x51fe1edbc149556ef2867115e58616428aa2c19a0.04722628 Ether
0x77cb766ed5cf3aafa6f7dbb252274990b5327048d1e67c4e63212f0fda30cedd141733352022-02-09 17:55:02294 days 9 hrs ago Shikage: Old SHKG Token Uniswap V2: Router 20.01180657 Ether
0x77cb766ed5cf3aafa6f7dbb252274990b5327048d1e67c4e63212f0fda30cedd141733352022-02-09 17:55:02294 days 9 hrs ago Uniswap V2: Router 2 Shikage: Old SHKG Token0.10619865 Ether
0x61f00dc866c7ca63107c81bb740455d9c9141d2271c4da18968d7a1e5786ed50141732572022-02-09 17:37:55294 days 9 hrs ago Shikage: Old SHKG Token0x592ab8ed942c7eb84cb27616f1dcb57669dfd9010.07786272 Ether
0x61f00dc866c7ca63107c81bb740455d9c9141d2271c4da18968d7a1e5786ed50141732572022-02-09 17:37:55294 days 9 hrs ago Shikage: Old SHKG Token0x51fe1edbc149556ef2867115e58616428aa2c19a0.07786272 Ether
0x61f00dc866c7ca63107c81bb740455d9c9141d2271c4da18968d7a1e5786ed50141732572022-02-09 17:37:55294 days 9 hrs ago Uniswap V2: Router 2 Shikage: Old SHKG Token0.00006049 Ether
0x61f00dc866c7ca63107c81bb740455d9c9141d2271c4da18968d7a1e5786ed50141732572022-02-09 17:37:55294 days 9 hrs ago Shikage: Old SHKG Token Uniswap V2: Router 20.01946568 Ether
0x61f00dc866c7ca63107c81bb740455d9c9141d2271c4da18968d7a1e5786ed50141732572022-02-09 17:37:55294 days 9 hrs ago Uniswap V2: Router 2 Shikage: Old SHKG Token0.17440994 Ether
0x26b2b6c5d7546d86c619956cbbb6ed1c6cd8efcb38cde1f7e06a001c3bae9019141725552022-02-09 14:55:38294 days 12 hrs ago Shikage: Old SHKG Token0x592ab8ed942c7eb84cb27616f1dcb57669dfd9010.46458993 Ether
0x26b2b6c5d7546d86c619956cbbb6ed1c6cd8efcb38cde1f7e06a001c3bae9019141725552022-02-09 14:55:38294 days 12 hrs ago Shikage: Old SHKG Token0x51fe1edbc149556ef2867115e58616428aa2c19a0.46458993 Ether
0x26b2b6c5d7546d86c619956cbbb6ed1c6cd8efcb38cde1f7e06a001c3bae9019141725552022-02-09 14:55:38294 days 12 hrs ago Uniswap V2: Router 2 Shikage: Old SHKG Token0.00078118 Ether
0x26b2b6c5d7546d86c619956cbbb6ed1c6cd8efcb38cde1f7e06a001c3bae9019141725552022-02-09 14:55:38294 days 12 hrs ago Shikage: Old SHKG Token Uniswap V2: Router 20.11614748 Ether
0x26b2b6c5d7546d86c619956cbbb6ed1c6cd8efcb38cde1f7e06a001c3bae9019141725552022-02-09 14:55:38294 days 12 hrs ago Uniswap V2: Router 2 Shikage: Old SHKG Token1.04532734 Ether
0x5495c763759a26f2b7c89b91d9a53891046faf8884b8dfc09132cf435032ac31141720392022-02-09 12:59:27294 days 14 hrs ago Shikage: Old SHKG Token0x592ab8ed942c7eb84cb27616f1dcb57669dfd9010.04805891 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Shikage

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-09
*/

/*
Shikage SHKG

Telegram: https://t.me/shikageofficial
Website: https://shikage.space/
Facebook: https://www.facebook.com/Shikage.ETH/
Instagram: https://www.instagram.com/shikage_token/
Twitter: https://twitter.com/ShikageEth
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.11;


library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * C U ON THE MOON
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    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);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    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");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    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);
            }
        }
    }
}

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 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

interface IDEXRouter {
    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 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;
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
     /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IAntiSnipe {
  function setTokenOwner(address owner) external;

  function onPreTransferCheck(
    address from,
    address to,
    uint256 amount
  ) external returns (bool checked);
}

contract Shikage is IERC20, Ownable {
    using Address for address;
    
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Shikage";
    string constant _symbol = "SHKG";
    uint8 constant _decimals = 9;

    uint256 constant _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 1) / 200;
    uint256 public _maxWalletSize = (_totalSupply * 1) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) lastBuy;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 liquidityFee = 20;
    uint256 marketingFee = 50;
    uint256 devFee = 30;
    uint256 totalFee = 100;
    uint256 sellBias = 0;
    uint256 sellPercent = 250;
    uint256 sellPeriod = 72 hours;
    uint256 feeDenominator = 1000;

    address public constant liquidityReceiver = 0x51FE1EDbC149556eF2867115E58616428aA2C19A;
    address payable public constant marketingReceiver = payable(0x51FE1EDbC149556eF2867115E58616428aA2C19A);
    address payable public constant devReceiver = payable(0x592Ab8ED942c7Eb84cB27616f1Dcb57669DFD901);

    uint256 targetLiquidity = 40;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public immutable router;
    
    address constant routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    mapping (address => bool) liquidityPools;
    mapping (address => bool) liquidityProviders;

    address public immutable pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    bool public pauseDisabled = false;
    
    IAntiSnipe public antisnipe;
    bool public protectionEnabled = true;
    bool public protectionDisabled = false;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 400;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;
        
        isFeeExempt[owner()] = true;
        liquidityProviders[msg.sender] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;

        _balances[owner()] = _totalSupply;
        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(msg.sender, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

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

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

    function setProtection(bool _protect) external onlyOwner {
        if (_protect)
            require(!protectionDisabled);
        protectionEnabled = _protect;
    }
    
    function setProtection(address _protection, bool _call) external onlyOwner {
        if (_protection != address(antisnipe)){
            require(!protectionDisabled);
            antisnipe = IAntiSnipe(_protection);
        }
        if (_call)
            antisnipe.setTokenOwner(msg.sender);
    }
    
    function disableProtection() external onlyOwner {
        protectionDisabled = true;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(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] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(_balances[sender] >= amount, "Insufficient balance");
        require(amount > 0, "Zero amount transferred");

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        checkTxLimit(sender, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) checkWalletLimit(recipient, amount);
        }

        if(!launched()){ require(liquidityProviders[sender] || liquidityProviders[recipient], "Contract not launched yet."); }

        _balances[sender] -= amount;

        uint256 amountReceived = shouldTakeFee(sender) && shouldTakeFee(recipient) ? takeFee(sender, recipient, amount) : amount;
        
        if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); }
        
        _balances[recipient] += amountReceived;
            
        if(launched() && protectionEnabled)
            antisnipe.onPreTransferCheck(sender, recipient, amount);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }
    
    function setLiquidityProvider(address _provider) external onlyOwner {
        isFeeExempt[_provider] = true;
        liquidityProviders[_provider] = true;
        isTxLimitExempt[_provider] = true;
    }

    function getTotalFee(bool selling, bool inHighPeriod) public view returns (uint256) {
        if(launchedAt + 1 > block.number){ return feeDenominator - 1; }
        if (selling) return inHighPeriod ? (totalFee * sellPercent) / 100 : totalFee + sellBias;
        return inHighPeriod ? (totalFee * sellPercent) / 100 : totalFee - sellBias;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = (amount * getTotalFee(liquidityPools[recipient], !liquidityPools[sender] && lastBuy[sender] + sellPeriod > block.timestamp)) / feeDenominator;
        
        if (liquidityPools[sender] && lastBuy[recipient] == 0)
            lastBuy[recipient] = block.timestamp;

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

        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !liquidityPools[msg.sender]
        && !isFeeExempt[msg.sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum &&
        totalFee > 0;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = ((amountToSwap * dynamicLiquidityFee) / totalFee) / 2;
        amountToSwap -= amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 contractBalance = address(this).balance;
        uint256 totalETHFee = totalFee - dynamicLiquidityFee / 2;

        uint256 amountLiquidity = (contractBalance * dynamicLiquidityFee) / totalETHFee / 2;
        uint256 amountMarketing = (contractBalance * marketingFee) / totalETHFee;
        uint256 amountDev = contractBalance - (amountLiquidity + amountMarketing);

        if(amountToLiquify > 0) {
            router.addLiquidityETH{value: amountLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountLiquidity, amountToLiquify);
        }
        
        if (amountMarketing > 0)
            marketingReceiver.transfer(amountMarketing);
            
        if (amountDev > 0)
            devReceiver.transfer(amountDev);

    }

    function setSellPeriod(uint256 _sellPercentIncrease, uint256 _period) external onlyOwner {
        require((totalFee * _sellPercentIncrease) / 100 <= 400, "Sell tax too high");
        require(_period <= 7 days, "Sell period too long");
        sellPercent = _sellPercentIncrease;
        sellPeriod = _period;
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() external onlyOwner {
        require (launchedAt == 0);
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

    function setTxLimit(uint256 numerator, uint256 divisor) external onlyOwner {
        require(numerator > 0 && divisor > 0 && (numerator * 1000) / divisor >= 5);
        _maxTxAmount = (_totalSupply * numerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        sellBias = _sellBias;
        totalFee = _liquidityFee + _marketingFee + _devFee;
        feeDenominator = _feeDenominator;
        require(totalFee <= feeDenominator / 4);
        require(sellBias <= totalFee);
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator, uint256 _denominatorMin) external onlyOwner {
        require(_denominator > 0 && _denominatorMin > 0);
        swapEnabled = _enabled;
        swapMinimum = _totalSupply / _denominatorMin;
        swapThreshold = _totalSupply / _denominator;
    }

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
    }

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

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

    function addLiquidityPool(address _pool, bool _enabled) external onlyOwner {
        liquidityPools[_pool] = _enabled;
    }

	function airdrop(address[] calldata _addresses, uint256[] calldata _amount) external onlyOwner
    {
        require(_addresses.length == _amount.length);
        bool previousSwap = swapEnabled;
        swapEnabled = false;
        //This function may run out of gas intentionally to prevent partial airdrops
        for (uint256 i = 0; i < _addresses.length; i++) {
            require(!liquidityPools[_addresses[i]]);
            _transferFrom(msg.sender, _addresses[i], _amount[i] * (10 ** _decimals));
        }
        swapEnabled = previousSwap;
    }

    event AutoLiquify(uint256 amount, uint256 amountToken);
    //C U ON THE MOON
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","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":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":[],"name":"antisnipe","outputs":[{"internalType":"contract IAntiSnipe","name":"","type":"address"}],"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"bool","name":"selling","type":"bool"},{"internalType":"bool","name":"inHighPeriod","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_sellBias","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_provider","type":"address"}],"name":"setLiquidityProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_protection","type":"address"},{"internalType":"bool","name":"_call","type":"bool"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellPercentIncrease","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setSellPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_denominatorMin","type":"uint256"}],"name":"setSwapBackSettings","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":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pure","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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260c8620000146009600a62000646565b6200002490633b9aca006200065e565b620000319060016200065e565b6200003d919062000680565b6001556064620000506009600a62000646565b6200006090633b9aca006200065e565b6200006d9060016200065e565b62000079919062000680565b600255601460085560326009908155601e600a9081556064600b8190556000600c5560fa600d556203f480600e556103e8600f5560286010556011556016805460ff62ffffff60a81b0119166201000160a81b17905561019091620000de9162000646565b620000ee90633b9aca006200065e565b620000fa919062000680565b6017556127106200010e6009600a62000646565b6200011e90633b9aca006200065e565b6200012a919062000680565b6018553480156200013a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f89190620006a3565b6001600160a01b031663c9c653966080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000247573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026d9190620006a3565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e09190620006a3565b6001600160a01b031660a08190526000908152601260205260408120805460ff1916600117905560001990600490620003216000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120737a250d5630b4cf539739df2c5dacb4c659f2488d80835290845282822094909455308152600483528181209381529290915281206000199055600190600690620003926000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055338152601383528181208054851660019081179091553082526007938490529181208054909416821790935591620003fe6000546001600160a01b031690565b6001600160a01b031681526020808201929092526040016000908120805493151560ff19948516179055737a250d5630b4cf539739df2c5dacb4c659f2488d9052600790527ffd21a1ac9a14dff647460ce8ad2ccecb794a59a4cfbb8678b1f9900a6a99551f805490911660011790556200047c6009600a62000646565b6200048c90633b9aca006200065e565b60036000620004a36000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055620004d06000546001600160a01b031690565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200050a6009600a62000646565b6200051a90633b9aca006200065e565b60405190815260200160405180910390a3620006ce565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005885781600019048211156200056c576200056c62000531565b808516156200057a57918102915b93841c93908002906200054c565b509250929050565b600082620005a15750600162000640565b81620005b05750600062000640565b8160018114620005c95760028114620005d457620005f4565b600191505062000640565b60ff841115620005e857620005e862000531565b50506001821b62000640565b5060208310610133831016604e8410600b841016171562000619575081810a62000640565b62000625838362000547565b80600019048211156200063c576200063c62000531565b0290505b92915050565b60006200065760ff84168362000590565b9392505050565b60008160001904831182151516156200067b576200067b62000531565b500290565b6000826200069e57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006b657600080fd5b81516001600160a01b03811681146200065757600080fd5b60805160a0516129186200071060003960008181610771015261138c01526000818161095201528181611fd00152818161208801526121c401526129186000f3fe6080604052600436106102e85760003560e01c806370a0823111610190578063abe57e70116100dc578063d5d035f511610095578063f2fde38b1161006f578063f2fde38b146108ea578063f84ba65d1461090a578063f8821a621461092a578063f887ea401461094057600080fd5b8063d5d035f514610864578063dd62ed3e14610884578063e624c4bc146108ca57600080fd5b8063abe57e70146107b3578063b9576244146107d3578063bf56b371146107ed578063c5363caa14610803578063d088935814610824578063d51ed1c81461084457600080fd5b80638da5cb5b11610149578063a457c2d711610123578063a457c2d71461073f578063a5949bcf14610472578063a8aa1b311461075f578063a9059cbb1461079357600080fd5b80638da5cb5b146106de5780638f9a55c0146106fc57806395d89b411461071257600080fd5b806370a0823114610637578063715018a61461066d5780637516baec146106825780637d1db4a5146106a3578063882cfb3f146106b9578063893d20e8146106de57600080fd5b80632b112e491161024f5780635804f1e411610208578063659b1c7c116101e2578063659b1c7c146105ae57806367243482146105ce5780636ddd1713146105ee5780636f9a880e1461060f57600080fd5b80635804f1e4146105585780636419b6f91461056e578063658d4b7f1461058e57600080fd5b80632b112e49146104b2578063313ce567146104c757806339509351146104e3578063421dd7c714610503578063492a937b14610518578063571ac8b01461053857600080fd5b80631161ae39116102a15780631161ae39146103dd57806318160ddd146103fd5780631faf723b14610412578063201e79911461043257806323b872dd14610452578063264d26dd1461047257600080fd5b806301339c21146102f45780630445b6671461030b57806304a66b481461033457806306fdde0314610354578063095ea7b31461038d5780630f4f7bfe146103bd57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b50610309610974565b005b34801561031757600080fd5b5061032160175481565b6040519081526020015b60405180910390f35b34801561034057600080fd5b5061030961034f366004612320565b6109be565b34801561036057600080fd5b506040805180820190915260078152665368696b61676560c81b60208201525b60405161032b919061235b565b34801561039957600080fd5b506103ad6103a83660046123c8565b610a4a565b604051901515815260200161032b565b3480156103c957600080fd5b506103096103d83660046123f4565b610ab7565b3480156103e957600080fd5b506103ad6103f83660046123f4565b610b95565b34801561040957600080fd5b50610321610ba9565b34801561041e57600080fd5b5061030961042d3660046123f4565b610bca565b34801561043e57600080fd5b5061030961044d3660046123f4565b610c67565b34801561045e57600080fd5b506103ad61046d366004612416565b610c9c565b34801561047e57600080fd5b5061049a7351fe1edbc149556ef2867115e58616428aa2c19a81565b6040516001600160a01b03909116815260200161032b565b3480156104be57600080fd5b50610321610d31565b3480156104d357600080fd5b506040516009815260200161032b565b3480156104ef57600080fd5b506103ad6104fe3660046123c8565b610db1565b34801561050f57600080fd5b50610309610df6565b34801561052457600080fd5b50610309610533366004612465565b610e35565b34801561054457600080fd5b506103ad61055336600461249e565b610e8a565b34801561056457600080fd5b5061032160155481565b34801561057a57600080fd5b506103216105893660046124bb565b610e98565b34801561059a57600080fd5b506103096105a9366004612465565b610f38565b3480156105ba57600080fd5b506103096105c93660046124d9565b610f8d565b3480156105da57600080fd5b506103096105e9366004612542565b610ff2565b3480156105fa57600080fd5b506016546103ad90600160b81b900460ff1681565b34801561061b57600080fd5b5061049a73592ab8ed942c7eb84cb27616f1dcb57669dfd90181565b34801561064357600080fd5b5061032161065236600461249e565b6001600160a01b031660009081526003602052604090205490565b34801561067957600080fd5b50610309611133565b34801561068e57600080fd5b506016546103ad90600160a81b900460ff1681565b3480156106af57600080fd5b5061032160015481565b3480156106c557600080fd5b5060165461049a9061010090046001600160a01b031681565b3480156106ea57600080fd5b506000546001600160a01b031661049a565b34801561070857600080fd5b5061032160025481565b34801561071e57600080fd5b5060408051808201909152600481526353484b4760e01b6020820152610380565b34801561074b57600080fd5b506103ad61075a3660046123c8565b6111a7565b34801561076b57600080fd5b5061049a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561079f57600080fd5b506103ad6107ae3660046123c8565b611240565b3480156107bf57600080fd5b506103096107ce3660046123f4565b61124d565b3480156107df57600080fd5b506016546103ad9060ff1681565b3480156107f957600080fd5b5061032160145481565b34801561080f57600080fd5b506016546103ad90600160b01b900460ff1681565b34801561083057600080fd5b5061030961083f3660046125ae565b6112c9565b34801561085057600080fd5b5061032161085f3660046125e3565b611378565b34801561087057600080fd5b5061030961087f366004612465565b6113cf565b34801561089057600080fd5b5061032161089f3660046125fc565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108d657600080fd5b506103096108e536600461249e565b6114b7565b3480156108f657600080fd5b5061030961090536600461249e565b61152c565b34801561091657600080fd5b50610309610925366004612465565b611616565b34801561093657600080fd5b5061032160185481565b34801561094c57600080fd5b5061049a7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031633146109a75760405162461bcd60e51b815260040161099e9061262a565b60405180910390fd5b601454156109b457600080fd5b4360145542601555565b6000546001600160a01b031633146109e85760405162461bcd60e51b815260040161099e9061262a565b60088590556009849055600a839055600c82905582610a078587612675565b610a119190612675565b600b55600f819055610a2460048261268d565b600b541115610a3257600080fd5b600b54600c541115610a4357600080fd5b5050505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610aa59086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610ae15760405162461bcd60e51b815260040161099e9061262a565b610190606483600b54610af491906126af565b610afe919061268d565b1115610b405760405162461bcd60e51b81526020600482015260116024820152700a6cad8d840e8c2f040e8dede40d0d2ced607b1b604482015260640161099e565b62093a80811115610b8a5760405162461bcd60e51b815260206004820152601460248201527353656c6c20706572696f6420746f6f206c6f6e6760601b604482015260640161099e565b600d91909155600e55565b600082610ba183611378565b119392505050565b6000610bb76009600a6127b2565b610bc590633b9aca006126af565b905090565b6000546001600160a01b03163314610bf45760405162461bcd60e51b815260040161099e9061262a565b600082118015610c045750600081115b8015610c275750600581610c1a846103e86126af565b610c24919061268d565b10155b610c3057600080fd5b8082610c3e6009600a6127b2565b610c4c90633b9aca006126af565b610c5691906126af565b610c60919061268d565b6001555050565b6000546001600160a01b03163314610c915760405162461bcd60e51b815260040161099e9061262a565b601091909155601155565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610d1c576001600160a01b0384166000908152600460209081526040808320338452909152902054610cf79083906127c1565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b610d2784848461166b565b90505b9392505050565b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead60009081527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c549091610d8d91612675565b610d996009600a6127b2565b610da790633b9aca006126af565b610bc591906127c1565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610ded918590610de8908690612675565b611a04565b50600192915050565b6000546001600160a01b03163314610e205760405162461bcd60e51b815260040161099e9061262a565b6016805460ff60b01b1916600160b01b179055565b6000546001600160a01b03163314610e5f5760405162461bcd60e51b815260040161099e9061262a565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000610ab182600019610a4a565b6000436014546001610eaa9190612675565b1115610ec6576001600f54610ebf91906127c1565b9050610ab1565b8215610f025781610ee657600c54600b54610ee19190612675565b610ebf565b6064600d54600b54610ef891906126af565b610ebf919061268d565b81610f1c57600c54600b54610f1791906127c1565b610d2a565b6064600d54600b54610f2e91906126af565b610d2a919061268d565b6000546001600160a01b03163314610f625760405162461bcd60e51b815260040161099e9061262a565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610fb75760405162461bcd60e51b815260040161099e9061262a565b8015610fd457601654600160b01b900460ff1615610fd457600080fd5b60168054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b0316331461101c5760405162461bcd60e51b815260040161099e9061262a565b82811461102857600080fd5b6016805460ff60b81b198116909155600160b81b900460ff1660005b848110156111105760126000878784818110611062576110626127d8565b9050602002016020810190611077919061249e565b6001600160a01b0316815260208101919091526040016000205460ff161561109e57600080fd5b6110fd338787848181106110b4576110b46127d8565b90506020020160208101906110c9919061249e565b6110d56009600a6127b2565b8787868181106110e7576110e76127d8565b905060200201356110f891906126af565b61166b565b5080611108816127ee565b915050611044565b5060168054911515600160b81b0260ff60b81b1990921691909117905550505050565b6000546001600160a01b0316331461115d5760405162461bcd60e51b815260040161099e9061262a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156112295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161099e565b6112363385858403611a04565b5060019392505050565b6000610d2a33848461166b565b6000546001600160a01b031633146112775760405162461bcd60e51b815260040161099e9061262a565b60008111801561128957506127108111155b61129257600080fd5b80826112a06009600a6127b2565b6112ae90633b9aca006126af565b6112b891906126af565b6112c2919061268d565b6002555050565b6000546001600160a01b031633146112f35760405162461bcd60e51b815260040161099e9061262a565b6000821180156113035750600081115b61130c57600080fd5b6016805460ff60b81b1916600160b81b85151502179055806113306009600a6127b2565b61133e90633b9aca006126af565b611348919061268d565b601855816113586009600a6127b2565b61136690633b9aca006126af565b611370919061268d565b601755505050565b6000611382610d31565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600360205260409020546113c590846126af565b610ab1919061268d565b6000546001600160a01b031633146113f95760405162461bcd60e51b815260040161099e9061262a565b6016546001600160a01b03838116610100909204161461144b57601654600160b01b900460ff161561142a57600080fd5b60168054610100600160a81b0319166101006001600160a01b038516021790555b80156114b3576016546040516318e02bd960e01b81523360048201526101009091046001600160a01b0316906318e02bd990602401600060405180830381600087803b15801561149a57600080fd5b505af11580156114ae573d6000803e3d6000fd5b505050505b5050565b6000546001600160a01b031633146114e15760405162461bcd60e51b815260040161099e9061262a565b6001600160a01b031660009081526006602090815260408083208054600160ff1991821681179092556013845282852080548216831790556007909352922080549091169091179055565b6000546001600160a01b031633146115565760405162461bcd60e51b815260040161099e9061262a565b6001600160a01b0381166115bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116405760405162461bcd60e51b815260040161099e9061262a565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b0383166000908152600360205260408120548211156116ca5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640161099e565b6000821161171a5760405162461bcd60e51b815260206004820152601760248201527f5a65726f20616d6f756e74207472616e73666572726564000000000000000000604482015260640161099e565b60195460ff161561173757611730848484611b28565b9050610d2a565b6117418483611bdd565b6001600160a01b03831660009081526012602052604090205460ff1615801561177557506001600160a01b03831661dead14155b156117a4576001600160a01b03831660009081526007602052604090205460ff166117a4576117a48383611c46565b601454611836576001600160a01b03841660009081526013602052604090205460ff16806117ea57506001600160a01b03831660009081526013602052604090205460ff165b6118365760405162461bcd60e51b815260206004820152601a60248201527f436f6e7472616374206e6f74206c61756e63686564207965742e000000000000604482015260640161099e565b6001600160a01b0384166000908152600360205260408120805484929061185e9084906127c1565b90915550506001600160a01b03841660009081526006602052604081205460ff161580156118a557506001600160a01b03841660009081526006602052604090205460ff16155b6118af57826118ba565b6118ba858585611cd0565b90506118c584611e29565b156118d95782156118d9576118d983611ed1565b6001600160a01b03841660009081526003602052604081208054839290611901908490612675565b9091555050601454151580156119205750601654600160a81b900460ff165b156119ac5760165460405163090ec10b60e31b81526001600160a01b038781166004830152868116602483015260448201869052610100909204909116906348760858906064016020604051808303816000875af1158015611986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119aa9190612809565b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119f191815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316611a665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161099e565b6001600160a01b038216611ac75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161099e565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316600090815260036020526040812080548391908390611b529084906127c1565b90915550506001600160a01b03831660009081526003602052604081208054849290611b7f908490612675565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bcb91815260200190565b60405180910390a35060019392505050565b60015481111580611c0657506001600160a01b03821660009081526007602052604090205460ff165b6114b35760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161099e565b6002546001600160a01b0383166000908152600360205260409020548190611c6f908490612675565b1115611ccb5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b606482015260840161099e565b505050565b600f546001600160a01b03808416600090815260126020526040808220549287168252812054909283929091611d3c9160ff90811691161580156105895750600e546001600160a01b0389166000908152600560205260409020544291611d3691612675565b11610e98565b611d4690856126af565b611d50919061268d565b6001600160a01b03861660009081526012602052604090205490915060ff168015611d9157506001600160a01b038416600090815260056020526040902054155b15611db2576001600160a01b03841660009081526005602052604090204290555b3060009081526003602052604081208054839290611dd1908490612675565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611e2081846127c1565b95945050505050565b3360009081526012602052604081205460ff16158015611e5957503360009081526006602052604090205460ff16155b8015611e68575060195460ff16155b8015611e7d5750601654600160b81b900460ff165b8015611ea157506001600160a01b03821660009081526012602052604090205460ff165b8015611ebe57506018543060009081526003602052604090205410155b8015610ab157506000600b541192915050565b6019805460ff191660011790556017546000908210611ef257601754611ef4565b815b30600090815260036020526040902054909150811115611f205750306000908152600360205260409020545b6000611f30601054601154610b95565b611f3c57600854611f3f565b60005b905060006002600b548385611f5491906126af565b611f5e919061268d565b611f68919061268d565b9050611f7481846127c1565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110611fae57611fae6127d8565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561202c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120509190612826565b81600181518110612063576120636127d8565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac947906120c8908790600090869030904290600401612843565b600060405180830381600087803b1580156120e257600080fd5b505af11580156120f6573d6000803e3d6000fd5b504792506000915061210b905060028661268d565b600b5461211891906127c1565b9050600060028261212988866126af565b612133919061268d565b61213d919061268d565b90506000826009548561215091906126af565b61215a919061268d565b905060006121688284612675565b61217290866127c1565b905086156122785760405163f305d71960e01b81523060048201526024810188905260006044820181905260648201527351fe1edbc149556ef2867115e58616428aa2c19a60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990859060c40160606040518083038185885af1158015612216573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061223b91906128b4565b505060408051858152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b81156122c1576040517351fe1edbc149556ef2867115e58616428aa2c19a9083156108fc029084906000818181858888f193505050501580156122bf573d6000803e3d6000fd5b505b801561230a5760405173592ab8ed942c7eb84cb27616f1dcb57669dfd9019082156108fc029083906000818181858888f19350505050158015612308573d6000803e3d6000fd5b505b50506019805460ff191690555050505050505050565b600080600080600060a0868803121561233857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156123885785810183015185820160400152820161236c565b8181111561239a576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146123c557600080fd5b50565b600080604083850312156123db57600080fd5b82356123e6816123b0565b946020939093013593505050565b6000806040838503121561240757600080fd5b50508035926020909101359150565b60008060006060848603121561242b57600080fd5b8335612436816123b0565b92506020840135612446816123b0565b929592945050506040919091013590565b80151581146123c557600080fd5b6000806040838503121561247857600080fd5b8235612483816123b0565b9150602083013561249381612457565b809150509250929050565b6000602082840312156124b057600080fd5b8135610d2a816123b0565b600080604083850312156124ce57600080fd5b823561248381612457565b6000602082840312156124eb57600080fd5b8135610d2a81612457565b60008083601f84011261250857600080fd5b50813567ffffffffffffffff81111561252057600080fd5b6020830191508360208260051b850101111561253b57600080fd5b9250929050565b6000806000806040858703121561255857600080fd5b843567ffffffffffffffff8082111561257057600080fd5b61257c888389016124f6565b9096509450602087013591508082111561259557600080fd5b506125a2878288016124f6565b95989497509550505050565b6000806000606084860312156125c357600080fd5b83356125ce81612457565b95602085013595506040909401359392505050565b6000602082840312156125f557600080fd5b5035919050565b6000806040838503121561260f57600080fd5b823561261a816123b0565b91506020830135612493816123b0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156126885761268861265f565b500190565b6000826126aa57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156126c9576126c961265f565b500290565b600181815b808511156127095781600019048211156126ef576126ef61265f565b808516156126fc57918102915b93841c93908002906126d3565b509250929050565b60008261272057506001610ab1565b8161272d57506000610ab1565b8160018114612743576002811461274d57612769565b6001915050610ab1565b60ff84111561275e5761275e61265f565b50506001821b610ab1565b5060208310610133831016604e8410600b841016171561278c575081810a610ab1565b61279683836126ce565b80600019048211156127aa576127aa61265f565b029392505050565b6000610d2a60ff841683612711565b6000828210156127d3576127d361265f565b500390565b634e487b7160e01b600052603260045260246000fd5b60006000198214156128025761280261265f565b5060010190565b60006020828403121561281b57600080fd5b8151610d2a81612457565b60006020828403121561283857600080fd5b8151610d2a816123b0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128935784516001600160a01b03168352938301939183019160010161286e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156128c957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f0e0c7301ced57b800e899ddf6cd968da182a8c48f78f3df02de80d9cd43d49264736f6c634300080b0033

Deployed ByteCode Sourcemap

13247:14842:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24946:158;;;;;;;;;;;;;:::i;:::-;;15229:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;15229:49:0;;;;;;;;25826:481;;;;;;;;;;-1:-1:-1;25826:481:0;;;;;:::i;:::-;;:::i;16395:71::-;;;;;;;;;;-1:-1:-1;16458:5:0;;;;;;;;;;;;-1:-1:-1;;;16458:5:0;;;;16395:71;;;;;;;:::i;16801:216::-;;;;;;;;;;-1:-1:-1;16801:216:0;;;;;:::i;:::-;;:::i;:::-;;;1878:14:1;;1871:22;1853:41;;1841:2;1826:18;16801:216:0;1713:187:1;24519:321:0;;;;;;;;;;-1:-1:-1;24519:321:0;;;;;:::i;:::-;;:::i;27142:150::-;;;;;;;;;;-1:-1:-1;27142:150:0;;;;;:::i;:::-;;:::i;16143:88::-;;;;;;;;;;;;;:::i;25112:230::-;;;;;;;;;;-1:-1:-1;25112:230:0;;;;;:::i;:::-;;:::i;26642:182::-;;;;;;;;;;-1:-1:-1;26642:182:0;;;;;:::i;:::-;;:::i;18943:341::-;;;;;;;;;;-1:-1:-1;18943:341:0;;;;;:::i;:::-;;:::i;14294:86::-;;;;;;;;;;;;14338:42;14294:86;;;;;-1:-1:-1;;;;;2783:32:1;;;2765:51;;2753:2;2738:18;14294:86:0;2619:203:1;26832:138:0;;;;;;;;;;;;;:::i;16237:71::-;;;;;;;;;;-1:-1:-1;16237:71:0;;13582:1;2969:36:1;;2957:2;2942:18;16237:71:0;2827:184:1;17025:211:0;;;;;;;;;;-1:-1:-1;17025:211:0;;;;;:::i;:::-;;:::i;18679:92::-;;;;;;;;;;;;;:::i;27300:126::-;;;;;;;;;;-1:-1:-1;27300:126:0;;;;;:::i;:::-;;:::i;18049:122::-;;;;;;;;;;-1:-1:-1;18049:122:0;;;;;:::i;:::-;;:::i;14988:27::-;;;;;;;;;;;;;;;;21507:348;;;;;;;;;;-1:-1:-1;21507:348:0;;;;;:::i;:::-;;:::i;25564:119::-;;;;;;;;;;-1:-1:-1;25564:119:0;;;;;:::i;:::-;;:::i;18179:170::-;;;;;;;;;;-1:-1:-1;18179:170:0;;;;;:::i;:::-;;:::i;27431:569::-;;;;;;;;;;-1:-1:-1;27431:569:0;;;;;:::i;:::-;;:::i;15192:30::-;;;;;;;;;;-1:-1:-1;15192:30:0;;;;-1:-1:-1;;;15192:30:0;;;;;;14497:97;;;;;;;;;;;;14551:42;14497:97;;16549:105;;;;;;;;;;-1:-1:-1;16549:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;16633:18:0;16615:7;16633:18;;;:9;:18;;;;;;;16549:105;12485:148;;;;;;;;;;;;;:::i;15102:36::-;;;;;;;;;;-1:-1:-1;15102:36:0;;;;-1:-1:-1;;;15102:36:0;;;;;;13664:54;;;;;;;;;;;;;;;;15068:27;;;;;;;;;;-1:-1:-1;15068:27:0;;;;;;;-1:-1:-1;;;;;15068:27:0;;;16472:71;;;;;;;;;;-1:-1:-1;16515:7:0;11909:6;-1:-1:-1;;;;;11909:6:0;16472:71;16143:88;13725:56;;;;;;;;;;;;;;;;16314:75;;;;;;;;;;-1:-1:-1;16379:7:0;;;;;;;;;;;;-1:-1:-1;;;16379:7:0;;;;16314:75;;17244:409;;;;;;;;;;-1:-1:-1;17244:409:0;;;;;:::i;:::-;;:::i;14918:29::-;;;;;;;;;;;;;;;18779:156;;;;;;;;;;-1:-1:-1;18779:156:0;;;;;:::i;:::-;;:::i;25354:202::-;;;;;;;;;;-1:-1:-1;25354:202:0;;;;;:::i;:::-;;:::i;15022:33::-;;;;;;;;;;-1:-1:-1;15022:33:0;;;;;;;;14956:25;;;;;;;;;;;;;;;;15145:38;;;;;;;;;;-1:-1:-1;15145:38:0;;;;-1:-1:-1;;;15145:38:0;;;;;;26315:319;;;;;;;;;;-1:-1:-1;26315:319:0;;;;;:::i;:::-;;:::i;26978:156::-;;;;;;;;;;-1:-1:-1;26978:156:0;;;;;:::i;:::-;;:::i;18361:306::-;;;;;;;;;;-1:-1:-1;18361:306:0;;;;;:::i;:::-;;:::i;16660:133::-;;;;;;;;;;-1:-1:-1;16660:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;16762:19:0;;;16744:7;16762:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16660:133;21292:207;;;;;;;;;;-1:-1:-1;21292:207:0;;;;;:::i;:::-;;:::i;12788:244::-;;;;;;;;;;-1:-1:-1;12788:244:0;;;;;:::i;:::-;;:::i;25691:127::-;;;;;;;;;;-1:-1:-1;25691:127:0;;;;;:::i;:::-;;:::i;15285:49::-;;;;;;;;;;;;;;;;14687:34;;;;;;;;;;;;;;;24946:158;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;;;;;;;;;25003:10:::1;::::0;:15;24994:25:::1;;;::::0;::::1;;25043:12;25030:10;:25:::0;25081:15:::1;25066:12;:30:::0;24946:158::o;25826:481::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;25980:12:::1;:28:::0;;;26019:12:::1;:28:::0;;;26058:6:::1;:16:::0;;;26085:8:::1;:20:::0;;;26067:7;26127:29:::1;26034:13:::0;25995;26127:29:::1;:::i;:::-;:39;;;;:::i;:::-;26116:8;:50:::0;26177:14:::1;:32:::0;;;26240:18:::1;26257:1;26194:15:::0;26240:18:::1;:::i;:::-;26228:8;;:30;;26220:39;;;::::0;::::1;;26290:8;;26278;;:20;;26270:29;;;::::0;::::1;;25826:481:::0;;;;;:::o;16801:216::-;16905:10;16876:4;16893:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16893:32:0;;;;;;;;;;:41;;;16950:37;16876:4;;16893:32;;16950:37;;;;16928:6;160:25:1;;148:2;133:18;;14:177;16950:37:0;;;;;;;;-1:-1:-1;17005:4:0;16801:216;;;;;:::o;24519:321::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;24670:3:::1;24663;24639:20;24628:8;;:31;;;;:::i;:::-;24627:39;;;;:::i;:::-;:46;;24619:76;;;::::0;-1:-1:-1;;;24619:76:0;;8414:2:1;24619:76:0::1;::::0;::::1;8396:21:1::0;8453:2;8433:18;;;8426:30;-1:-1:-1;;;8472:18:1;;;8465:47;8529:18;;24619:76:0::1;8212:341:1::0;24619:76:0::1;24725:6;24714:7;:17;;24706:50;;;::::0;-1:-1:-1;;;24706:50:0;;8760:2:1;24706:50:0::1;::::0;::::1;8742:21:1::0;8799:2;8779:18;;;8772:30;-1:-1:-1;;;8818:18:1;;;8811:50;8878:18;;24706:50:0::1;8558:344:1::0;24706:50:0::1;24767:11;:34:::0;;;;24812:10:::1;:20:::0;24519:321::o;27142:150::-;27222:4;27278:6;27246:29;27266:8;27246:19;:29::i;:::-;:38;;27142:150;-1:-1:-1;;;27142:150:0:o;16143:88::-;16198:7;13641:15;13582:1;13641:2;:15;:::i;:::-;13624:33;;:13;:33;:::i;:::-;16209:19;;16143:88;:::o;25112:230::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;25218:1:::1;25206:9;:13;:28;;;;;25233:1;25223:7;:11;25206:28;:65;;;;-1:-1:-1::0;25270:1:0::1;25259:7:::0;25239:16:::1;:9:::0;25251:4:::1;25239:16;:::i;:::-;25238:28;;;;:::i;:::-;:33;;25206:65;25198:74;;;::::0;::::1;;25327:7:::0;25314:9;13641:15:::1;13582:1;13641:2;:15;:::i;:::-;13624:33;::::0;:13:::1;:33;:::i;:::-;25299:24;;;;:::i;:::-;25298:36;;;;:::i;:::-;25283:12;:51:::0;-1:-1:-1;;25112:230:0:o;26642:182::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;26739:15:::1;:25:::0;;;;26775:26:::1;:41:::0;26642:182::o;18943:341::-;-1:-1:-1;;;;;19063:19:0;;19043:4;19063:19;;;:11;:19;;;;;;;;19083:10;19063:31;;;;;;;;-1:-1:-1;;19063:52:0;19060:157;;-1:-1:-1;;;;;19165:19:0;;;;;;:11;:19;;;;;;;;19185:10;19165:31;;;;;;;;:40;;19199:6;;19165:40;:::i;:::-;-1:-1:-1;;;;;19131:19:0;;;;;;:11;:19;;;;;;;;19151:10;19131:31;;;;;;;:74;19060:157;19236:40;19250:6;19258:9;19269:6;19236:13;:40::i;:::-;19229:47;;18943:341;;;;;;:::o;26832:138::-;16633:9;:18;;;;13352:42;26885:7;16633:18;;;;;26885:7;;26928:33;;;:::i;:::-;13641:15;13582:1;13641:2;:15;:::i;:::-;13624:33;;:13;:33;:::i;:::-;26912:50;;;;:::i;17025:211::-;17139:10;17113:4;17160:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17160:32:0;;;;;;;;;;17113:4;;17130:76;;17151:7;;17160:45;;17195:10;;17160:45;:::i;:::-;17130:8;:76::i;:::-;-1:-1:-1;17224:4:0;17025:211;;;;:::o;18679:92::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;18738:18:::1;:25:::0;;-1:-1:-1;;;;18738:25:0::1;-1:-1:-1::0;;;18738:25:0::1;::::0;;18679:92::o;27300:126::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27386:21:0;;;::::1;;::::0;;;:14:::1;:21;::::0;;;;:32;;-1:-1:-1;;27386:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27300:126::o;18049:122::-;18104:4;18128:35;18136:7;-1:-1:-1;;18128:7:0;:35::i;21507:348::-;21582:7;21622:12;21605:10;;21618:1;21605:14;;;;:::i;:::-;:29;21602:63;;;21661:1;21644:14;;:18;;;;:::i;:::-;21637:25;;;;21602:63;21679:7;21675:87;;;21695:12;:67;;21754:8;;21743;;:19;;;;:::i;:::-;21695:67;;;21737:3;21722:11;;21711:8;;:22;;;;:::i;:::-;21710:30;;;;:::i;21675:87::-;21780:12;:67;;21839:8;;21828;;:19;;;;:::i;:::-;21780:67;;;21822:3;21807:11;;21796:8;;:22;;;;:::i;:::-;21795:30;;;;:::i;25564:119::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25647:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;25647:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25564:119::o;18179:170::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;18251:8:::1;18247:55;;;18283:18;::::0;-1:-1:-1;;;18283:18:0;::::1;;;18282:19;18274:28;;;::::0;::::1;;18313:17;:28:::0;;;::::1;;-1:-1:-1::0;;;18313:28:0::1;-1:-1:-1::0;;;;18313:28:0;;::::1;::::0;;;::::1;::::0;;18179:170::o;27431:569::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;27550:35;;::::1;27542:44;;;::::0;::::1;;27617:11;::::0;;-1:-1:-1;;;;27639:19:0;::::1;::::0;;;-1:-1:-1;;;27617:11:0;::::1;;;-1:-1:-1::0;27755:201:0::1;27775:21:::0;;::::1;27755:201;;;27827:14;:29;27842:10;;27853:1;27842:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27827:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;27827:29:0;;::::1;;27826:30;27818:39;;;::::0;::::1;;27872:72;27886:10;27898;;27909:1;27898:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;27927:15;13582:1;27927:2;:15;:::i;:::-;27913:7;;27921:1;27913:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;27872:13;:72::i;:::-;-1:-1:-1::0;27798:3:0;::::1;::::0;::::1;:::i;:::-;;;;27755:201;;;-1:-1:-1::0;27966:11:0::1;:26:::0;;;::::1;;-1:-1:-1::0;;;27966:26:0::1;-1:-1:-1::0;;;;27966:26:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;27431:569:0:o;12485:148::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;12592:1:::1;12576:6:::0;;12555:40:::1;::::0;-1:-1:-1;;;;;12576:6:0;;::::1;::::0;12555:40:::1;::::0;12592:1;;12555:40:::1;12623:1;12606:19:::0;;-1:-1:-1;;;;;;12606:19:0::1;::::0;;12485:148::o;17244:409::-;17393:10;17337:4;17381:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17381:32:0;;;;;;;;;;17432:35;;;;17424:85;;;;-1:-1:-1;;;17424:85:0;;10894:2:1;17424:85:0;;;10876:21:1;10933:2;10913:18;;;10906:30;10972:34;10952:18;;;10945:62;-1:-1:-1;;;11023:18:1;;;11016:35;11068:19;;17424:85:0;10692:401:1;17424:85:0;17545:65;17554:10;17566:7;17594:15;17575:16;:34;17545:8;:65::i;:::-;-1:-1:-1;17641:4:0;;17244:409;-1:-1:-1;;;17244:409:0:o;18779:156::-;18859:4;18883:44;18897:10;18909:9;18920:6;18883:13;:44::i;25354:202::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;25462:1:::1;25452:7;:11;:31;;;;;25478:5;25467:7;:16;;25452:31;25444:40;;;::::0;::::1;;25541:7:::0;25528:9;13641:15:::1;13582:1;13641:2;:15;:::i;:::-;13624:33;::::0;:13:::1;:33;:::i;:::-;25513:24;;;;:::i;:::-;25512:36;;;;:::i;:::-;25495:14;:53:::0;-1:-1:-1;;25354:202:0:o;26315:319::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;26459:1:::1;26444:12;:16;:39;;;;;26482:1;26464:15;:19;26444:39;26436:48;;;::::0;::::1;;26495:11;:22:::0;;-1:-1:-1;;;;26495:22:0::1;-1:-1:-1::0;;;26495:22:0;::::1;;;;::::0;;26557:15;13641::::1;13582:1;13641:2;:15;:::i;:::-;13624:33;::::0;:13:::1;:33;:::i;:::-;26542:30;;;;:::i;:::-;26528:11;:44:::0;26614:12;13641:15:::1;13582:1;13641:2;:15;:::i;:::-;13624:33;::::0;:13:::1;:33;:::i;:::-;26599:27;;;;:::i;:::-;26583:13;:43:::0;-1:-1:-1;;;26315:319:0:o;26978:156::-;27046:7;27104:22;:20;:22::i;:::-;-1:-1:-1;;;;;27095:4:0;16633:18;16615:7;16633:18;;;:9;:18;;;;;;27074:26;;:8;:26;:::i;:::-;27073:53;;;;:::i;18361:306::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;18474:9:::1;::::0;-1:-1:-1;;;;;18451:33:0;;::::1;18474:9;::::0;;::::1;;18451:33;18447:143;;18509:18;::::0;-1:-1:-1;;;18509:18:0;::::1;;;18508:19;18500:28;;;::::0;::::1;;18543:9;:35:::0;;-1:-1:-1;;;;;;18543:35:0::1;;-1:-1:-1::0;;;;;18543:35:0;::::1;;;::::0;;18447:143:::1;18604:5;18600:59;;;18624:9;::::0;:35:::1;::::0;-1:-1:-1;;;18624:35:0;;18648:10:::1;18624:35;::::0;::::1;2765:51:1::0;18624:9:0::1;::::0;;::::1;-1:-1:-1::0;;;;;18624:9:0::1;::::0;:23:::1;::::0;2738:18:1;;18624:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18600:59;18361:306:::0;;:::o;21292:207::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21371:22:0::1;;::::0;;;:11:::1;:22;::::0;;;;;;;:29;;21396:4:::1;-1:-1:-1::0;;21371:29:0;;::::1;::::0;::::1;::::0;;;21411:18:::1;:29:::0;;;;;:36;;;::::1;::::0;::::1;::::0;;21458:15:::1;:26:::0;;;;;:33;;;;::::1;::::0;;::::1;::::0;;21292:207::o;12788:244::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12877:22:0;::::1;12869:73;;;::::0;-1:-1:-1;;;12869:73:0;;11300:2:1;12869:73:0::1;::::0;::::1;11282:21:1::0;11339:2;11319:18;;;11312:30;11378:34;11358:18;;;11351:62;-1:-1:-1;;;11429:18:1;;;11422:36;11475:19;;12869:73:0::1;11098:402:1::0;12869:73:0::1;12979:6;::::0;;12958:38:::1;::::0;-1:-1:-1;;;;;12958:38:0;;::::1;::::0;12979:6;::::1;::::0;12958:38:::1;::::0;::::1;13007:6;:17:::0;;-1:-1:-1;;;;;;13007:17:0::1;-1:-1:-1::0;;;;;13007:17:0;;;::::1;::::0;;;::::1;::::0;;12788:244::o;25691:127::-;12056:6;;-1:-1:-1;;;;;12056:6:0;6546:10;12056:22;12048:67;;;;-1:-1:-1;;;12048:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25778:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;25778:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25691:127::o;19292:1178::-;-1:-1:-1;;;;;19409:17:0;;19384:4;19409:17;;;:9;:17;;;;;;:27;-1:-1:-1;19409:27:0;19401:60;;;;-1:-1:-1;;;19401:60:0;;11707:2:1;19401:60:0;;;11689:21:1;11746:2;11726:18;;;11719:30;-1:-1:-1;;;11765:18:1;;;11758:50;11825:18;;19401:60:0;11505:344:1;19401:60:0;19489:1;19480:6;:10;19472:46;;;;-1:-1:-1;;;19472:46:0;;12056:2:1;19472:46:0;;;12038:21:1;12095:2;12075:18;;;12068:30;12134:25;12114:18;;;12107:53;12177:18;;19472:46:0;11854:347:1;19472:46:0;19534:6;;;;19531:63;;;19550:41;19565:6;19573:9;19584:6;19550:14;:41::i;:::-;19543:48;;;;19531:63;19606:28;19619:6;19627;19606:12;:28::i;:::-;-1:-1:-1;;;;;19660:25:0;;;;;;:14;:25;;;;;;;;19659:26;:47;;;;-1:-1:-1;;;;;;19689:17:0;;13352:42;19689:17;;19659:47;19655:148;;;-1:-1:-1;;;;;19728:26:0;;;;;;:15;:26;;;;;;;;19723:68;;19756:35;19773:9;19784:6;19756:16;:35::i;:::-;24915:10;;19815:118;;-1:-1:-1;;;;;19840:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;19870:29:0;;;;;;:18;:29;;;;;;;;19840:59;19832:98;;;;-1:-1:-1;;;19832:98:0;;12408:2:1;19832:98:0;;;12390:21:1;12447:2;12427:18;;;12420:30;12486:28;12466:18;;;12459:56;12532:18;;19832:98:0;12206:350:1;19832:98:0;-1:-1:-1;;;;;19945:17:0;;;;;;:9;:17;;;;;:27;;19966:6;;19945:17;:27;;19966:6;;19945:27;:::i;:::-;;;;-1:-1:-1;;;;;;;21253:19:0;;19985:22;21253:19;;;:11;:19;;;;;;;;21252:20;20010:49;;;;-1:-1:-1;;;;;;21253:19:0;;21228:4;21253:19;;;:11;:19;;;;;;;;21252:20;20035:24;20010:95;;20099:6;20010:95;;;20062:34;20070:6;20078:9;20089:6;20062:7;:34::i;:::-;19985:120;;20129:25;20144:9;20129:14;:25::i;:::-;20126:66;;;20161:10;;20157:32;;20173:16;20182:6;20173:8;:16::i;:::-;-1:-1:-1;;;;;20212:20:0;;;;;;:9;:20;;;;;:38;;20236:14;;20212:20;:38;;20236:14;;20212:38;:::i;:::-;;;;-1:-1:-1;;24915:10:0;;:15;;20278:31;;;;-1:-1:-1;20292:17:0;;-1:-1:-1;;;20292:17:0;;;;20278:31;20275:104;;;20324:9;;:55;;-1:-1:-1;;;20324:55:0;;-1:-1:-1;;;;;12819:15:1;;;20324:55:0;;;12801:34:1;12871:15;;;12851:18;;;12844:43;12903:18;;;12896:34;;;20324:9:0;;;;;;;;:28;;12736:18:1;;20324:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20275:104;20414:9;-1:-1:-1;;;;;20397:43:0;20406:6;-1:-1:-1;;;;;20397:43:0;;20425:14;20397:43;;;;160:25:1;;148:2;133:18;;14:177;20397:43:0;;;;;;;;-1:-1:-1;20458:4:0;;19292:1178;-1:-1:-1;;;;19292:1178:0:o;17661:380::-;-1:-1:-1;;;;;17797:19:0;;17789:68;;;;-1:-1:-1;;;17789:68:0;;13393:2:1;17789:68:0;;;13375:21:1;13432:2;13412:18;;;13405:30;13471:34;13451:18;;;13444:62;-1:-1:-1;;;13522:18:1;;;13515:34;13566:19;;17789:68:0;13191:400:1;17789:68:0;-1:-1:-1;;;;;17876:21:0;;17868:68;;;;-1:-1:-1;;;17868:68:0;;13798:2:1;17868:68:0;;;13780:21:1;13837:2;13817:18;;;13810:30;13876:34;13856:18;;;13849:62;-1:-1:-1;;;13927:18:1;;;13920:32;13969:19;;17868:68:0;13596:398:1;17868:68:0;-1:-1:-1;;;;;17949:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18001:32;;160:25:1;;;18001:32:0;;133:18:1;18001:32:0;;;;;;;17661:380;;;:::o;20478:259::-;-1:-1:-1;;;;;20588:17:0;;20571:4;20588:17;;;:9;:17;;;;;:27;;20609:6;;20588:17;20571:4;;20588:27;;20609:6;;20588:27;:::i;:::-;;;;-1:-1:-1;;;;;;;20626:20:0;;;;;;:9;:20;;;;;:30;;20650:6;;20626:20;:30;;20650:6;;20626:30;:::i;:::-;;;;;;;;20689:9;-1:-1:-1;;;;;20672:35:0;20681:6;-1:-1:-1;;;;;20672:35:0;;20700:6;20672:35;;;;160:25:1;;148:2;133:18;;14:177;20672:35:0;;;;;;;;-1:-1:-1;20725:4:0;20478:259;;;;;:::o;20992:166::-;21089:12;;21079:6;:22;;:49;;;-1:-1:-1;;;;;;21105:23:0;;;;;;:15;:23;;;;;;;;21079:49;21071:79;;;;-1:-1:-1;;;21071:79:0;;14201:2:1;21071:79:0;;;14183:21:1;14240:2;14220:18;;;14213:30;-1:-1:-1;;;14259:18:1;;;14252:47;14316:18;;21071:79:0;13999:341:1;20749:235:0;20857:14;;-1:-1:-1;;;;;20890:20:0;;20835:19;20890:20;;;:9;:20;;;;;;20857:14;;20890:29;;20913:6;;20890:29;:::i;:::-;:44;;20882:94;;;;-1:-1:-1;;;20882:94:0;;14547:2:1;20882:94:0;;;14529:21:1;14586:2;14566:18;;;14559:30;14625:34;14605:18;;;14598:62;-1:-1:-1;;;14676:18:1;;;14669:35;14721:19;;20882:94:0;14345:401:1;20882:94:0;20824:160;20749:235;;:::o;21863:546::-;22116:14;;-1:-1:-1;;;;;22011:25:0;;;21949:7;22011:25;;;:14;:25;;;;;;;22039:22;;;;;;;;21949:7;;;;22116:14;;21999:113;;22011:25;;;;;22039:22;22038:23;:73;;;;-1:-1:-1;22083:10:0;;-1:-1:-1;;;;;22065:15:0;;;;;;:7;:15;;;;;;22096;;22065:28;;;:::i;:::-;:46;21999:11;:113::i;:::-;21990:122;;:6;:122;:::i;:::-;21989:141;;;;:::i;:::-;-1:-1:-1;;;;;22155:22:0;;;;;;:14;:22;;;;;;21969:161;;-1:-1:-1;22155:22:0;;:49;;;;-1:-1:-1;;;;;;22181:18:0;;;;;;:7;:18;;;;;;:23;22155:49;22151:104;;;-1:-1:-1;;;;;22219:18:0;;;;;;:7;:18;;;;;22240:15;22219:36;;22151:104;22286:4;22268:24;;;;:9;:24;;;;;:37;;22296:9;;22268:24;:37;;22296:9;;22268:37;:::i;:::-;;;;-1:-1:-1;;22321:42:0;;160:25:1;;;22346:4:0;;-1:-1:-1;;;;;22321:42:0;;;;;148:2:1;133:18;22321:42:0;;;;;;;22383:18;22392:9;22383:6;:18;:::i;:::-;22376:25;21863:546;-1:-1:-1;;;;;21863:546:0:o;22417:321::-;22523:10;22483:4;22508:26;;;:14;:26;;;;;;;;22507:27;:64;;;;-1:-1:-1;22560:10:0;22548:23;;;;:11;:23;;;;;;;;22547:24;22507:64;:84;;;;-1:-1:-1;22585:6:0;;;;22584:7;22507:84;:108;;;;-1:-1:-1;22604:11:0;;-1:-1:-1;;;22604:11:0;;;;22507:108;:146;;;;-1:-1:-1;;;;;;22628:25:0;;;;;;:14;:25;;;;;;;;22507:146;:198;;;;-1:-1:-1;22694:11:0;;22684:4;22666:24;;;;:9;:24;;;;;;:39;;22507:198;:223;;;;;22729:1;22718:8;;:12;22500:230;22417:321;-1:-1:-1;;22417:321:0:o;22746:1765::-;15381:6;:13;;-1:-1:-1;;15381:13:0;15390:4;15381:13;;;22841::::1;::::0;15381:6;;22832:22;::::1;:47;;22866:13;;22832:47;;;22857:6;22832:47;22912:4;22894:24;::::0;;;:9:::1;:24;::::0;;;;;22809:70;;-1:-1:-1;22894:39:0;-1:-1:-1;22890:84:0::1;;;-1:-1:-1::0;22968:4:0::1;22950:24;::::0;;;:9:::1;:24;::::0;;;;;22890:84:::1;22985:27;23015:60;23031:15;;23048:26;;23015:15;:60::i;:::-;:79;;23082:12;;23015:79;;;23078:1;23015:79;22985:109;;23105:23;23183:1;23171:8;;23148:19;23133:12;:34;;;;:::i;:::-;23132:47;;;;:::i;:::-;23131:53;;;;:::i;:::-;23105:79:::0;-1:-1:-1;23195:31:0::1;23105:79:::0;23195:31;::::1;:::i;:::-;23263:16;::::0;;23277:1:::1;23263:16:::0;;;;;::::1;::::0;;23195:31;;-1:-1:-1;23239:21:0::1;::::0;23263:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23263:16:0::1;23239:40;;23308:4;23290;23295:1;23290:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23290:23:0::1;;;-1:-1:-1::0;;;;;23290:23:0::1;;;::::0;::::1;23334:6;-1:-1:-1::0;;;;;23334:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23324:4;23329:1;23324:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23324:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23368:188:::1;::::0;-1:-1:-1;;;23368:188:0;;:6:::1;:57:::0;;::::1;::::0;::::1;::::0;:188:::1;::::0;23440:12;;23467:1:::1;::::0;23483:4;;23510::::1;::::0;23530:15:::1;::::0;23368:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;23595:21:0::1;::::0;-1:-1:-1;23569:23:0::1;::::0;-1:-1:-1;23660:23:0::1;::::0;-1:-1:-1;23682:1:0::1;23660:19:::0;:23:::1;:::i;:::-;23649:8;;:34;;;;:::i;:::-;23627:56:::0;-1:-1:-1;23696:23:0::1;23778:1;23627:56:::0;23723:37:::1;23741:19:::0;23723:15;:37:::1;:::i;:::-;23722:53;;;;:::i;:::-;:57;;;;:::i;:::-;23696:83;;23790:23;23851:11;23835:12;;23817:15;:30;;;;:::i;:::-;23816:46;;;;:::i;:::-;23790:72:::0;-1:-1:-1;23873:17:0::1;23912:33;23790:72:::0;23912:15;:33:::1;:::i;:::-;23893:53;::::0;:15;:53:::1;:::i;:::-;23873:73:::0;-1:-1:-1;23962:19:0;;23959:353:::1;;23998:237;::::0;-1:-1:-1;;;23998:237:0;;24071:4:::1;23998:237;::::0;::::1;16465:34:1::0;16515:18;;;16508:34;;;24129:1:0::1;16558:18:1::0;;;16551:34;;;16601:18;;;16594:34;14338:42:0::1;16644:19:1::0;;;16637:44;24205:15:0::1;16697:19:1::0;;;16690:35;23998:6:0::1;-1:-1:-1::0;;;;;23998:22:0::1;::::0;::::1;::::0;24028:15;;16399:19:1;;23998:237:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24255:45:0::1;::::0;;17221:25:1;;;17277:2;17262:18;;17255:34;;;24255:45:0::1;::::0;-1:-1:-1;17194:18:1;24255:45:0::1;;;;;;;23959:353;24336:19:::0;;24332:81:::1;;24370:43;::::0;14447:42:::1;::::0;24370:43;::::1;;;::::0;24397:15;;24370:43:::1;::::0;;;24397:15;14447:42;24370:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24332:81;24442:13:::0;;24438:63:::1;;24470:31;::::0;14551:42:::1;::::0;24470:31;::::1;;;::::0;24491:9;;24470:31:::1;::::0;;;24491:9;14551:42;24470:31;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24438:63;-1:-1:-1::0;;15399:6:0;:14;;-1:-1:-1;;15399:14:0;;;-1:-1:-1;;;;;;;;22746:1765:0:o;196:454:1:-;291:6;299;307;315;323;376:3;364:9;355:7;351:23;347:33;344:53;;;393:1;390;383:12;344:53;-1:-1:-1;;416:23:1;;;486:2;471:18;;458:32;;-1:-1:-1;537:2:1;522:18;;509:32;;588:2;573:18;;560:32;;-1:-1:-1;639:3:1;624:19;611:33;;-1:-1:-1;196:454:1;-1:-1:-1;196:454:1:o;655:597::-;767:4;796:2;825;814:9;807:21;857:6;851:13;900:6;895:2;884:9;880:18;873:34;925:1;935:140;949:6;946:1;943:13;935:140;;;1044:14;;;1040:23;;1034:30;1010:17;;;1029:2;1006:26;999:66;964:10;;935:140;;;1093:6;1090:1;1087:13;1084:91;;;1163:1;1158:2;1149:6;1138:9;1134:22;1130:31;1123:42;1084:91;-1:-1:-1;1236:2:1;1215:15;-1:-1:-1;;1211:29:1;1196:45;;;;1243:2;1192:54;;655:597;-1:-1:-1;;;655:597:1:o;1257:131::-;-1:-1:-1;;;;;1332:31:1;;1322:42;;1312:70;;1378:1;1375;1368:12;1312:70;1257:131;:::o;1393:315::-;1461:6;1469;1522:2;1510:9;1501:7;1497:23;1493:32;1490:52;;;1538:1;1535;1528:12;1490:52;1577:9;1564:23;1596:31;1621:5;1596:31;:::i;:::-;1646:5;1698:2;1683:18;;;;1670:32;;-1:-1:-1;;;1393:315:1:o;1905:248::-;1973:6;1981;2034:2;2022:9;2013:7;2009:23;2005:32;2002:52;;;2050:1;2047;2040:12;2002:52;-1:-1:-1;;2073:23:1;;;2143:2;2128:18;;;2115:32;;-1:-1:-1;1905:248:1:o;2158:456::-;2235:6;2243;2251;2304:2;2292:9;2283:7;2279:23;2275:32;2272:52;;;2320:1;2317;2310:12;2272:52;2359:9;2346:23;2378:31;2403:5;2378:31;:::i;:::-;2428:5;-1:-1:-1;2485:2:1;2470:18;;2457:32;2498:33;2457:32;2498:33;:::i;:::-;2158:456;;2550:7;;-1:-1:-1;;;2604:2:1;2589:18;;;;2576:32;;2158:456::o;3016:118::-;3102:5;3095:13;3088:21;3081:5;3078:32;3068:60;;3124:1;3121;3114:12;3139:382;3204:6;3212;3265:2;3253:9;3244:7;3240:23;3236:32;3233:52;;;3281:1;3278;3271:12;3233:52;3320:9;3307:23;3339:31;3364:5;3339:31;:::i;:::-;3389:5;-1:-1:-1;3446:2:1;3431:18;;3418:32;3459:30;3418:32;3459:30;:::i;:::-;3508:7;3498:17;;;3139:382;;;;;:::o;3526:247::-;3585:6;3638:2;3626:9;3617:7;3613:23;3609:32;3606:52;;;3654:1;3651;3644:12;3606:52;3693:9;3680:23;3712:31;3737:5;3712:31;:::i;3778:376::-;3840:6;3848;3901:2;3889:9;3880:7;3876:23;3872:32;3869:52;;;3917:1;3914;3907:12;3869:52;3956:9;3943:23;3975:28;3997:5;3975:28;:::i;4159:241::-;4215:6;4268:2;4256:9;4247:7;4243:23;4239:32;4236:52;;;4284:1;4281;4274:12;4236:52;4323:9;4310:23;4342:28;4364:5;4342:28;:::i;4405:367::-;4468:8;4478:6;4532:3;4525:4;4517:6;4513:17;4509:27;4499:55;;4550:1;4547;4540:12;4499:55;-1:-1:-1;4573:20:1;;4616:18;4605:30;;4602:50;;;4648:1;4645;4638:12;4602:50;4685:4;4677:6;4673:17;4661:29;;4745:3;4738:4;4728:6;4725:1;4721:14;4713:6;4709:27;4705:38;4702:47;4699:67;;;4762:1;4759;4752:12;4699:67;4405:367;;;;;:::o;4777:773::-;4899:6;4907;4915;4923;4976:2;4964:9;4955:7;4951:23;4947:32;4944:52;;;4992:1;4989;4982:12;4944:52;5032:9;5019:23;5061:18;5102:2;5094:6;5091:14;5088:34;;;5118:1;5115;5108:12;5088:34;5157:70;5219:7;5210:6;5199:9;5195:22;5157:70;:::i;:::-;5246:8;;-1:-1:-1;5131:96:1;-1:-1:-1;5334:2:1;5319:18;;5306:32;;-1:-1:-1;5350:16:1;;;5347:36;;;5379:1;5376;5369:12;5347:36;;5418:72;5482:7;5471:8;5460:9;5456:24;5418:72;:::i;:::-;4777:773;;;;-1:-1:-1;5509:8:1;-1:-1:-1;;;;4777:773:1:o;6005:377::-;6079:6;6087;6095;6148:2;6136:9;6127:7;6123:23;6119:32;6116:52;;;6164:1;6161;6154:12;6116:52;6203:9;6190:23;6222:28;6244:5;6222:28;:::i;:::-;6269:5;6321:2;6306:18;;6293:32;;-1:-1:-1;6372:2:1;6357:18;;;6344:32;;6005:377;-1:-1:-1;;;6005:377:1:o;6387:180::-;6446:6;6499:2;6487:9;6478:7;6474:23;6470:32;6467:52;;;6515:1;6512;6505:12;6467:52;-1:-1:-1;6538:23:1;;6387:180;-1:-1:-1;6387:180:1:o;6572:388::-;6640:6;6648;6701:2;6689:9;6680:7;6676:23;6672:32;6669:52;;;6717:1;6714;6707:12;6669:52;6756:9;6743:23;6775:31;6800:5;6775:31;:::i;:::-;6825:5;-1:-1:-1;6882:2:1;6867:18;;6854:32;6895:33;6854:32;6895:33;:::i;7191:356::-;7393:2;7375:21;;;7412:18;;;7405:30;7471:34;7466:2;7451:18;;7444:62;7538:2;7523:18;;7191:356::o;7552:127::-;7613:10;7608:3;7604:20;7601:1;7594:31;7644:4;7641:1;7634:15;7668:4;7665:1;7658:15;7684:128;7724:3;7755:1;7751:6;7748:1;7745:13;7742:39;;;7761:18;;:::i;:::-;-1:-1:-1;7797:9:1;;7684:128::o;7817:217::-;7857:1;7883;7873:132;;7927:10;7922:3;7918:20;7915:1;7908:31;7962:4;7959:1;7952:15;7990:4;7987:1;7980:15;7873:132;-1:-1:-1;8019:9:1;;7817:217::o;8039:168::-;8079:7;8145:1;8141;8137:6;8133:14;8130:1;8127:21;8122:1;8115:9;8108:17;8104:45;8101:71;;;8152:18;;:::i;:::-;-1:-1:-1;8192:9:1;;8039:168::o;8907:422::-;8996:1;9039:5;8996:1;9053:270;9074:7;9064:8;9061:21;9053:270;;;9133:4;9129:1;9125:6;9121:17;9115:4;9112:27;9109:53;;;9142:18;;:::i;:::-;9192:7;9182:8;9178:22;9175:55;;;9212:16;;;;9175:55;9291:22;;;;9251:15;;;;9053:270;;;9057:3;8907:422;;;;;:::o;9334:806::-;9383:5;9413:8;9403:80;;-1:-1:-1;9454:1:1;9468:5;;9403:80;9502:4;9492:76;;-1:-1:-1;9539:1:1;9553:5;;9492:76;9584:4;9602:1;9597:59;;;;9670:1;9665:130;;;;9577:218;;9597:59;9627:1;9618:10;;9641:5;;;9665:130;9702:3;9692:8;9689:17;9686:43;;;9709:18;;:::i;:::-;-1:-1:-1;;9765:1:1;9751:16;;9780:5;;9577:218;;9879:2;9869:8;9866:16;9860:3;9854:4;9851:13;9847:36;9841:2;9831:8;9828:16;9823:2;9817:4;9814:12;9810:35;9807:77;9804:159;;;-1:-1:-1;9916:19:1;;;9948:5;;9804:159;9995:34;10020:8;10014:4;9995:34;:::i;:::-;10065:6;10061:1;10057:6;10053:19;10044:7;10041:32;10038:58;;;10076:18;;:::i;:::-;10114:20;;9334:806;-1:-1:-1;;;9334:806:1:o;10145:140::-;10203:5;10232:47;10273:4;10263:8;10259:19;10253:4;10232:47;:::i;10290:125::-;10330:4;10358:1;10355;10352:8;10349:34;;;10363:18;;:::i;:::-;-1:-1:-1;10400:9:1;;10290:125::o;10420:127::-;10481:10;10476:3;10472:20;10469:1;10462:31;10512:4;10509:1;10502:15;10536:4;10533:1;10526:15;10552:135;10591:3;-1:-1:-1;;10612:17:1;;10609:43;;;10632:18;;:::i;:::-;-1:-1:-1;10679:1:1;10668:13;;10552:135::o;12941:245::-;13008:6;13061:2;13049:9;13040:7;13036:23;13032:32;13029:52;;;13077:1;13074;13067:12;13029:52;13109:9;13103:16;13128:28;13150:5;13128:28;:::i;14883:251::-;14953:6;15006:2;14994:9;14985:7;14981:23;14977:32;14974:52;;;15022:1;15019;15012:12;14974:52;15054:9;15048:16;15073:31;15098:5;15073:31;:::i;15139:980::-;15401:4;15449:3;15438:9;15434:19;15480:6;15469:9;15462:25;15506:2;15544:6;15539:2;15528:9;15524:18;15517:34;15587:3;15582:2;15571:9;15567:18;15560:31;15611:6;15646;15640:13;15677:6;15669;15662:22;15715:3;15704:9;15700:19;15693:26;;15754:2;15746:6;15742:15;15728:29;;15775:1;15785:195;15799:6;15796:1;15793:13;15785:195;;;15864:13;;-1:-1:-1;;;;;15860:39:1;15848:52;;15955:15;;;;15920:12;;;;15896:1;15814:9;15785:195;;;-1:-1:-1;;;;;;;16036:32:1;;;;16031:2;16016:18;;16009:60;-1:-1:-1;;;16100:3:1;16085:19;16078:35;15997:3;15139:980;-1:-1:-1;;;15139:980:1:o;16736:306::-;16824:6;16832;16840;16893:2;16881:9;16872:7;16868:23;16864:32;16861:52;;;16909:1;16906;16899:12;16861:52;16938:9;16932:16;16922:26;;16988:2;16977:9;16973:18;16967:25;16957:35;;17032:2;17021:9;17017:18;17011:25;17001:35;;16736:306;;;;;:::o

Swarm Source

ipfs://f0e0c7301ced57b800e899ddf6cd968da182a8c48f78f3df02de80d9cd43d492
Block Transaction Difficulty Gas Used Reward
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.

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