**Maintenance in progress, block data might not be up to date**

Contract 0x811dd5f5d9cf3fc82850f438b667d28fcf88a850

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xce63eb1231737cb84db985af1c72cd6f5f2166cf809747616431facfee78b4c5Approve125907262021-11-12 16:50:4476 days 9 hrs ago0xeac33ced3b01dc8f454c0eb0ee70e0fa4c8f55e7 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00012655
0xfd27f5124a256f693b9d4a2bbdc488b9fc39c37d30bfab13eaf25b944bbe8768Approve125907182021-11-12 16:50:1776 days 9 hrs ago0xeac33ced3b01dc8f454c0eb0ee70e0fa4c8f55e7 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x740636b32f43ab94064596a1e23eba0adf8b656b089b209d84cab87760c1ea40Approve125299892021-11-10 12:22:1478 days 14 hrs ago0x3d9a34cc4756f578b481aa946d3c234f363e8f96 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x9a3d9f33e20aafa330dbc9bd79f9a40a317b51193a6a5ac0990a6dd1c0e58913Approve124763482021-11-08 14:34:3480 days 12 hrs ago0xdfc3690f241b67d4c14b04863f33ba1916b13ff6 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x793718aa00b2408cd1ca53469490945d52814c42aad5bb7a05ab7c18bdb183b9Approve124761802021-11-08 14:26:1080 days 12 hrs ago0x1a3f798771c91c1ddfdd1d1806759ca8b4489abf IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x856fc7dec43257018fec3d3083ddfc3ec3837d3829b8198c3057c851d80824f5Approve124755722021-11-08 13:53:0880 days 12 hrs ago0x60b5570dafd4ee66cde0af526436301761e559a3 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x28aab034fe80c61e417150cf87d94906572b29b919ee70ab77f9c6a70b8cc661Approve123724582021-11-04 23:13:2584 days 3 hrs ago0x0b01e5473745cab8ae526609f960c9e37051a25e IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0xae28405749f465630b24376bc1fd3b42f0e8e5050a2732056625e85d235e7ba8Approve122589162021-10-31 21:16:2588 days 5 hrs ago0x6b852a15fa7648a466d6ece9436e8d0cac718133 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x62f781372f79d77fc4c0513766f648ceb1f15fe6cef126492c462cfc36011052Approve121108382021-10-26 15:45:5593 days 10 hrs ago0x502dabcd5eab42f7ce544cebf946b3c2317c1274 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0xcda03c960353adf00dfecaa22d5d807b522f90aa0f22e6df9558732c8afca7afApprove117527802021-10-14 2:14:38106 days 25 mins ago0xa8580e7584a9ca6de3af5e017ad057bb121e805b IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00031157
0x84f96e0e8413a9eeef8ebfe28dad33b3e8c7b80ff9ef793141da6f4e1eae7db5Approve116602602021-10-10 19:50:05109 days 6 hrs ago0xaacf457cc07771a6f15bbe1efb8653a7e596cd56 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0xbf6cf28fd9c1b17338a9b258c6143a7e083a340a81a0faaac7df663e205c843fApprove115155072021-10-05 18:54:22114 days 7 hrs ago0xd95e1aeb0b8eff4af1e97504d250bd8b5aa43658 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x3f9f82e5be7a3d7dce1f9d1c70f6fcb50eb2032b5de00f71a556ba1ff6efa487Approve113659382021-09-30 13:26:21119 days 13 hrs ago0xa373b67f1a0c90dd6e51169d5f1ed5dbb9c34cb2 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x1f3032febcf5ac5238f42d0ea2232b3267bc024f593896d438a586fe713d058cApprove113421402021-09-29 17:24:25120 days 9 hrs ago0x8f675518afeb306df80faa4f0a13f2ca300f2c44 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x29c97868cdba26107f29f45ea1686634d317235b9cbe60d21f8ebd067c96e440Approve113353372021-09-29 11:41:35120 days 14 hrs ago0x8b8a87baee3c6dd69ecc55f76e6e40b1c6ff1b36 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x243f9644e85ee657a3e13783b46ee48544c2ba8f1d8c2a81bfab32b501b4209cApprove110924522021-09-20 23:44:02129 days 2 hrs ago0xc619d67433c8e79e98fde500558e1905110e082f IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00031157
0x7a736bc96024d2d13f0b7a9cf48aaf1135007a7a788edabb396643c958175fd6Approve110145252021-09-18 6:26:40131 days 20 hrs ago0xfa2259e989a2c4169766bd434c29d8ee902655c3 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x4043cbff0c10e1a0412d8c33a5aeaf76b0467935a1a1562d19d5a37f816310c9Approve109996492021-09-17 18:01:37132 days 8 hrs ago0xcff423288743c1a781311967a52c7de3bf53140c IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00026706
0x6ce7d14cbfc4f8c684303f1f7969ea086540df03cda6062c91e9ad36c0a1245dTransfer109636412021-09-16 11:58:30133 days 14 hrs ago0x63634f34746cf902fd1117efb249a88cf3693525 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00066801
0x95504337b90b0622faedc5f384ea1dd28943fc4466b81c0c9d19bbcd1c98bc7bApprove109561622021-09-16 5:42:48133 days 20 hrs ago0x3887768856d284de490cb1e55a53f66b5421b106 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x1caa5b65579bd9205b111b5b687c0b597234887389e9a03b5eee722e1d72fc23Approve108414102021-09-12 5:51:00137 days 20 hrs ago0x519b506f9600a80363231f6b280f4df818f12289 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00012655
0x225d0faaa102c6d22220c36a08e07bc6fcff1c2f1787fb7a178daefca04d2b2aApprove108414072021-09-12 5:50:51137 days 20 hrs ago0x519b506f9600a80363231f6b280f4df818f12289 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x6afd981c25c41dcb195be6722cd8bafe623c00c56ca330c6651a371c0770a7a4Approve107031142021-09-07 9:10:09142 days 17 hrs ago0x5b8d77fa95c35b5fbd3a9a957327742cb762f203 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0x8e4b122e98c061746292621d22c6bffe22db707b635fc8069dbc9ef5304058fcApprove106678392021-09-06 3:29:39143 days 23 hrs ago0x4564bcd208abb811e60ba2de51b76df2220cae73 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
0xd2b2a998ff7a802e053084f33cc041f04fe430a9dce32d675cb02554c4955d37Approve106509782021-09-05 13:25:26144 days 13 hrs ago0x7d99677fad4c0471209a5ea805413147cd7d0653 IN  0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500 BNB0.00022255
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x284542f445c75085e60f951ef722a96e163794357fc11ab7392cb3d9f56adb3a103178842021-08-24 20:32:22156 days 6 hrs ago 0x811dd5f5d9cf3fc82850f438b667d28fcf88a8500x51e46fddf884518d96ebea18023f7b2d0a82582a0.76 BNB
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xa0f67af7a704deda149823100acc51a78179d55b

Contract Name:
CoinToken

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-06-05
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.2;


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

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

/**
 * @dev Interface of the BEP20 standard as defined in the EIP.
 */
interface IBEP20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    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);
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * 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);
            }
        }
    }
}

/**
 * @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 public _owner;

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


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

contract CoinToken is Context, IBEP20, Ownable {
    using SafeMath for uint256;
    using Address for address;

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

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    
    string  private _NAME;
    string  private _SYMBOL;
    uint256   private _DECIMALS;
	address public FeeAddress;
   
    uint256 private _MAX = ~uint256(0);
    uint256 private _DECIMALFACTOR;
    uint256 private _GRANULARITY = 100;
    
    uint256 private _tTotal;
    uint256 private _rTotal;
    
    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;
    uint256 private _tCharityTotal;
    
    uint256 public     _TAX_FEE;
    uint256 public    _BURN_FEE;
    uint256 public _CHARITY_FEE;

    // Track original fees to bypass fees for charity account
    uint256 private ORIG_TAX_FEE;
    uint256 private ORIG_BURN_FEE;
    uint256 private ORIG_CHARITY_FEE;

    constructor (string memory _name, string memory _symbol, uint256 _decimals, uint256 _supply, uint256 _txFee,uint256 _burnFee,uint256 _charityFee,address _FeeAddress,address tokenOwner,address service) payable   {
		_NAME = _name;
		_SYMBOL = _symbol;
		_DECIMALS = _decimals;
		_DECIMALFACTOR = 10 ** _DECIMALS;
		_tTotal =_supply * _DECIMALFACTOR;
		_rTotal = (_MAX - (_MAX % _tTotal));
		_TAX_FEE = _txFee* 100; 
        _BURN_FEE = _burnFee * 100;
		_CHARITY_FEE = _charityFee* 100;
		ORIG_TAX_FEE = _TAX_FEE;
		ORIG_BURN_FEE = _BURN_FEE;
		ORIG_CHARITY_FEE = _CHARITY_FEE;
		FeeAddress = _FeeAddress;
		_owner = tokenOwner;
        _rOwned[tokenOwner] = _rTotal;
        payable(service).transfer(msg.value);
        emit Transfer(address(0),tokenOwner, _tTotal);
    }

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

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

    function decimals() public view returns (uint8) {
        return uint8(_DECIMALS);
    }

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

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

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

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

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

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

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

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

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }
    

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function totalBurn() public view returns (uint256) {
        return _tBurnTotal;
    }
    
    function totalCharity() public view returns (uint256) {
        return _tCharityTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

    function excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function setAsCharityAccount(address account) external onlyOwner() {
		FeeAddress = account;
    }

	
	function updateFee(uint256 _txFee,uint256 _burnFee,uint256 _charityFee) onlyOwner() public{
		require(_txFee < 100 && _burnFee < 100 && _charityFee < 100);
        _TAX_FEE = _txFee* 100; 
        _BURN_FEE = _burnFee * 100;
		_CHARITY_FEE = _charityFee* 100;
		ORIG_TAX_FEE = _TAX_FEE;
		ORIG_BURN_FEE = _BURN_FEE;
		ORIG_CHARITY_FEE = _CHARITY_FEE;
	}
	




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

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

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

        // Remove fees for transfers to and from charity account or to excluded account
        bool takeFee = true;
        if (FeeAddress == sender || FeeAddress == recipient || _isExcluded[recipient]) {
            takeFee = false;
        }

        if (!takeFee) removeAllFee();
        
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _standardTransferContent(sender, recipient, rAmount, rTransferAmount);
        _sendToCharity(tCharity, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tCharity);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _standardTransferContent(address sender, address recipient, uint256 rAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }
    
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _excludedFromTransferContent(sender, recipient, tTransferAmount, rAmount, rTransferAmount);        
        _sendToCharity(tCharity, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tCharity);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _excludedFromTransferContent(address sender, address recipient, uint256 tTransferAmount, uint256 rAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
    }
    

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _excludedToTransferContent(sender, recipient, tAmount, rAmount, rTransferAmount);
        _sendToCharity(tCharity, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tCharity);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _excludedToTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);  
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _bothTransferContent(sender, recipient, tAmount, rAmount, tTransferAmount, rTransferAmount);  
        _sendToCharity(tCharity, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tCharity);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _bothTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);  
    }

    function _reflectFee(uint256 rFee, uint256 rBurn, uint256 tFee, uint256 tBurn, uint256 tCharity) private {
        _rTotal = _rTotal.sub(rFee).sub(rBurn);
        _tFeeTotal = _tFeeTotal.add(tFee);
        _tBurnTotal = _tBurnTotal.add(tBurn);
        _tCharityTotal = _tCharityTotal.add(tCharity);
        _tTotal = _tTotal.sub(tBurn);
		emit Transfer(address(this), address(0), tBurn);
    }
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tFee, uint256 tBurn, uint256 tCharity) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _CHARITY_FEE);
        uint256 tTransferAmount = getTTransferAmount(tAmount, tFee, tBurn, tCharity);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate);
        uint256 rTransferAmount = _getRTransferAmount(rAmount, rFee, tBurn, tCharity, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tCharity);
    }
    
    function _getTBasics(uint256 tAmount, uint256 taxFee, uint256 burnFee, uint256 charityFee) private view returns (uint256, uint256, uint256) {
        uint256 tFee = ((tAmount.mul(taxFee)).div(_GRANULARITY)).div(100);
        uint256 tBurn = ((tAmount.mul(burnFee)).div(_GRANULARITY)).div(100);
        uint256 tCharity = ((tAmount.mul(charityFee)).div(_GRANULARITY)).div(100);
        return (tFee, tBurn, tCharity);
    }
    
    function getTTransferAmount(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) private pure returns (uint256) {
        return tAmount.sub(tFee).sub(tBurn).sub(tCharity);
    }
    
    function _getRBasics(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        return (rAmount, rFee);
    }
    
    function _getRTransferAmount(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tCharity, uint256 currentRate) private pure returns (uint256) {
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rCharity = tCharity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub(rCharity);
        return rTransferAmount;
    }

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _sendToCharity(uint256 tCharity, address sender) private {
        uint256 currentRate = _getRate();
        uint256 rCharity = tCharity.mul(currentRate);
        _rOwned[FeeAddress] = _rOwned[FeeAddress].add(rCharity);
        _tOwned[FeeAddress] = _tOwned[FeeAddress].add(tCharity);
        emit Transfer(sender, FeeAddress, tCharity);
    }

    function removeAllFee() private {
        if(_TAX_FEE == 0 && _BURN_FEE == 0 && _CHARITY_FEE == 0) return;
        
        ORIG_TAX_FEE = _TAX_FEE;
        ORIG_BURN_FEE = _BURN_FEE;
        ORIG_CHARITY_FEE = _CHARITY_FEE;
        
        _TAX_FEE = 0;
        _BURN_FEE = 0;
        _CHARITY_FEE = 0;
    }
    
    function restoreAllFee() private {
        _TAX_FEE = ORIG_TAX_FEE;
        _BURN_FEE = ORIG_BURN_FEE;
        _CHARITY_FEE = ORIG_CHARITY_FEE;
    }
    
    function _getTaxFee() private view returns(uint256) {
        return _TAX_FEE;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_txFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_charityFee","type":"uint256"},{"internalType":"address","name":"_FeeAddress","type":"address"},{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"service","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"FeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BURN_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_CHARITY_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setAsCharityAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCharity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_charityFee","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600019600a556064600c55604051620026663803806200266683398101604081905262000031916200032e565b8951620000469060069060208d0190620001b8565b5088516200005c9060079060208c0190620001b8565b5060088890556200006f88600a6200044c565b600b81905562000080908862000541565b600d819055600a54620000949190620005ba565b600a54620000a3919062000563565b600e55620000b386606462000541565b601255620000c385606462000541565b601355620000d384606462000541565b6014819055601254601555601354601655601755600980546001600160a01b038086166001600160a01b03199283161790925560008054858416921682178155600e5491815260016020526040808220929092559051918316913480156108fc0292909190818181858888f1935050505015801562000156573d6000803e3d6000fd5b50816001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d54604051620001a091815260200190565b60405180910390a35050505050505050505062000607565b828054620001c6906200057d565b90600052602060002090601f016020900481019282620001ea576000855562000235565b82601f106200020557805160ff191683800117855562000235565b8280016001018555821562000235579182015b828111156200023557825182559160200191906001019062000218565b506200024392915062000247565b5090565b5b8082111562000243576000815560010162000248565b80516001600160a01b03811681146200027657600080fd5b919050565b600082601f8301126200028c578081fd5b81516001600160401b0380821115620002a957620002a9620005f1565b604051601f8301601f19908116603f01168101908282118183101715620002d457620002d4620005f1565b81604052838152602092508683858801011115620002f0578485fd5b8491505b83821015620003135785820183015181830184015290820190620002f4565b838211156200032457848385830101525b9695505050505050565b6000806000806000806000806000806101408b8d0312156200034e578586fd5b8a516001600160401b038082111562000365578788fd5b620003738e838f016200027b565b9b5060208d015191508082111562000389578788fd5b50620003988d828e016200027b565b99505060408b0151975060608b0151965060808b0151955060a08b0151945060c08b01519350620003cc60e08c016200025e565b9250620003dd6101008c016200025e565b9150620003ee6101208c016200025e565b90509295989b9194979a5092959850565b80825b600180861162000413575062000443565b818704821115620004285762000428620005db565b808616156200043657918102915b9490941c93800262000402565b94509492505050565b60006200045d600019848462000464565b9392505050565b60008262000475575060016200045d565b8162000484575060006200045d565b81600181146200049d5760028114620004a857620004dc565b60019150506200045d565b60ff841115620004bc57620004bc620005db565b6001841b915084821115620004d557620004d5620005db565b506200045d565b5060208310610133831016604e8410600b841016171562000514575081810a838111156200050e576200050e620005db565b6200045d565b620005238484846001620003ff565b808604821115620005385762000538620005db565b02949350505050565b60008160001904831182151516156200055e576200055e620005db565b500290565b600082821015620005785762000578620005db565b500390565b6002810460018216806200059257607f821691505b60208210811415620005b457634e487b7160e01b600052602260045260246000fd5b50919050565b600082620005d657634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61204f80620006176000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637b7e8bac11610104578063b5862428116100a2578063f2cc0c1811610071578063f2cc0c18146103eb578063f2fde38b146103fe578063f84354f114610411578063fc061a4f14610424576101da565b8063b586242814610375578063cba0e9961461037e578063d608b3b2146103aa578063dd62ed3e146103b2576101da565b8063a457c2d7116100de578063a457c2d714610333578063a9059cbb14610346578063ae9dd5e014610359578063b2bdfa7b14610362576101da565b80637b7e8bac146102ef5780638da5cb5b1461031a57806395d89b411461032b576101da565b8063395093511161017c578063457bdf6c1161014b578063457bdf6c146102b857806370a08231146102cb578063715018a6146102de57806377ef7993146102e6576101da565b806339509351146102755780633bd5d173146102885780633c9f861d1461029d5780634549b039146102a5576101da565b806318160ddd116101b857806318160ddd1461023257806323b872dd1461023a5780632d8381191461024d578063313ce56714610260576101da565b806306fdde03146101df578063095ea7b3146101fd57806313114a9d14610220575b600080fd5b6101e7610437565b6040516101f49190611e66565b60405180910390f35b61021061020b366004611dc7565b6104c9565b60405190151581526020016101f4565b600f545b6040519081526020016101f4565b600d54610224565b610210610248366004611d8c565b6104e0565b61022461025b366004611df0565b610549565b60085460405160ff90911681526020016101f4565b610210610283366004611dc7565b6105d4565b61029b610296366004611df0565b61060a565b005b601054610224565b6102246102b3366004611e08565b6106f6565b61029b6102c6366004611d40565b610785565b6102246102d9366004611d40565b6107d1565b61029b610833565b61022460135481565b600954610302906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b6000546001600160a01b0316610302565b6101e76108a7565b610210610341366004611dc7565b6108b6565b610210610354366004611dc7565b610905565b61022460145481565b600054610302906001600160a01b031681565b61022460125481565b61021061038c366004611d40565b6001600160a01b031660009081526004602052604090205460ff1690565b601154610224565b6102246103c0366004611d5a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61029b6103f9366004611d40565b610912565b61029b61040c366004611d40565b610a65565b61029b61041f366004611d40565b610b4f565b61029b610432366004611e3b565b610d3f565b60606006805461044690611f5c565b80601f016020809104026020016040519081016040528092919081815260200182805461047290611f5c565b80156104bf5780601f10610494576101008083540402835291602001916104bf565b820191906000526020600020905b8154815290600101906020018083116104a257829003601f168201915b5050505050905090565b60006104d6338484610dce565b5060015b92915050565b60006104ed848484610ef6565b61053f843361053a856040518060600160405280602a8152602001611ff0602a91396001600160a01b038a16600090815260036020908152604080832033845290915290205491906111fd565b610dce565b5060019392505050565b6000600e548211156105b55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b60006105bf611237565b90506105cb838261125a565b9150505b919050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916104d691859061053a90866112a3565b3360008181526004602052604090205460ff161561067f5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016105ac565b600061068a83611302565b5050506001600160a01b0386166000908152600160205260409020549394506106b893925084915050611386565b6001600160a01b038316600090815260016020526040902055600e546106de9082611386565b600e55600f546106ee90846112a3565b600f55505050565b6000600d5483111561074a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016105ac565b8161076a57600061075a84611302565b509496506104da95505050505050565b600061077584611302565b509396506104da95505050505050565b6000546001600160a01b031633146107af5760405162461bcd60e51b81526004016105ac90611eb9565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526004602052604081205460ff161561081157506001600160a01b0381166000908152600260205260409020546105cf565b6001600160a01b0382166000908152600160205260409020546104da90610549565b6000546001600160a01b0316331461085d5760405162461bcd60e51b81526004016105ac90611eb9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606007805461044690611f5c565b60006104d6338461053a85604051806060016040528060278152602001611fc9602791393360009081526003602090815260408083206001600160a01b038d16845290915290205491906111fd565b60006104d6338484610ef6565b6000546001600160a01b0316331461093c5760405162461bcd60e51b81526004016105ac90611eb9565b6001600160a01b03811660009081526004602052604090205460ff16156109a55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016105ac565b6001600160a01b038116600090815260016020526040902054156109ff576001600160a01b0381166000908152600160205260409020546109e590610549565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b6000546001600160a01b03163314610a8f5760405162461bcd60e51b81526004016105ac90611eb9565b6001600160a01b038116610af45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b795760405162461bcd60e51b81526004016105ac90611eb9565b6001600160a01b03811660009081526004602052604090205460ff16610be15760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016105ac565b60005b600554811015610d3b57816001600160a01b031660058281548110610c1957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610d295760058054610c4490600190611f45565b81548110610c6257634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600580546001600160a01b039092169183908110610c9c57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556005805480610d0257634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610d3b565b80610d3381611f97565b915050610be4565b5050565b6000546001600160a01b03163314610d695760405162461bcd60e51b81526004016105ac90611eb9565b606483108015610d795750606482105b8015610d855750606481105b610d8e57600080fd5b610d99836064611f26565b601255610da7826064611f26565b601355610db5816064611f26565b6014819055601254601555601354601655601755505050565b6001600160a01b038316610e335760405162461bcd60e51b815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b6001600160a01b038216610e955760405162461bcd60e51b8152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105ac565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f5c5760405162461bcd60e51b815260206004820152602760248201527f544f4b454e32303a207472616e736665722066726f6d20746865207a65726f206044820152666164647265737360c81b60648201526084016105ac565b6001600160a01b038216610fc05760405162461bcd60e51b815260206004820152602560248201527f544f4b454e32303a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016105ac565b600081116110225760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ac565b6009546001906001600160a01b038581169116148061104e57506009546001600160a01b038481169116145b8061107157506001600160a01b03831660009081526004602052604090205460ff165b1561107a575060005b80611087576110876113c8565b6001600160a01b03841660009081526004602052604090205460ff1680156110c857506001600160a01b03831660009081526004602052604090205460ff16155b156110dd576110d8848484611411565b6111db565b6001600160a01b03841660009081526004602052604090205460ff1615801561111e57506001600160a01b03831660009081526004602052604090205460ff165b1561112e576110d88484846114d5565b6001600160a01b03841660009081526004602052604090205460ff1615801561117057506001600160a01b03831660009081526004602052604090205460ff16155b15611180576110d8848484611527565b6001600160a01b03841660009081526004602052604090205460ff1680156111c057506001600160a01b03831660009081526004602052604090205460ff165b156111d0576110d8848484611578565b6111db848484611527565b806111f7576111f7601554601255601654601355601754601455565b50505050565b600081848411156112215760405162461bcd60e51b81526004016105ac9190611e66565b50600061122e8486611f45565b95945050505050565b60008060006112446115cb565b9092509050611253828261125a565b9250505090565b600061129c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611788565b9392505050565b6000806112b08385611eee565b90508381101561129c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ac565b6000806000806000806000806000806113238b6012546013546014546117b6565b92509250925060006113378c858585611835565b90506000611343611237565b90506000806113538f888561184d565b9150915060006113668383898988611877565b929e50919c509a5091985093965091945092505050919395979092949650565b600061129c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111fd565b6012541580156113d85750601354155b80156113e45750601454155b156113ee5761140f565b60128054601555601380546016556014805460175560009283905590829055555b565b600061141b611237565b9050600080600080600080600061143189611302565b9650965096509650965096509650600061145489846118b390919063ffffffff16565b90506114638c8c8c8b8b611932565b61146d828d6119d6565b61147a8682868686611ab7565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516114bf91815260200190565b60405180910390a3505050505050505050505050565b60006114df611237565b905060008060008060008060006114f589611302565b9650965096509650965096509650600061151889846118b390919063ffffffff16565b90506114638c8c878b8b611b52565b6000611531611237565b9050600080600080600080600061154789611302565b9650965096509650965096509650600061156a89846118b390919063ffffffff16565b90506114638c8c8a8a611bda565b6000611582611237565b9050600080600080600080600061159889611302565b965096509650965096509650965060006115bb89846118b390919063ffffffff16565b90506114638c8c8c8b898c611c4e565b600e54600d546000918291825b6005548110156117565782600160006005848154811061160857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611681575081600260006005848154811061165a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561169857600e54600d5494509450505050611784565b6116ec60016000600584815481106116c057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611386565b9250611742600260006005848154811061171657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611386565b91508061174e81611f97565b9150506115d8565b50600d54600e546117669161125a565b82101561177e57600e54600d54935093505050611784565b90925090505b9091565b600081836117a95760405162461bcd60e51b81526004016105ac9190611e66565b50600061122e8486611f06565b6000806000806117e060646117da600c546117da8b8d6118b390919063ffffffff16565b9061125a565b9050600061180260646117da600c546117da8b8e6118b390919063ffffffff16565b9050600061182460646117da600c546117da8b8f6118b390919063ffffffff16565b929a91995091975095505050505050565b600061122e8261184785818989611386565b90611386565b6000808061185b86856118b3565b9050600061186986866118b3565b919791965090945050505050565b60008061188485846118b3565b9050600061189285856118b3565b905060006118a68261184785818d8d611386565b9998505050505050505050565b6000826118c2575060006104da565b60006118ce8385611f26565b9050826118db8583611f06565b1461129c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ac565b6001600160a01b0385166000908152600260205260409020546119559084611386565b6001600160a01b0386166000908152600260209081526040808320939093556001905220546119849083611386565b6001600160a01b0380871660009081526001602052604080822093909355908616815220546119b390826112a3565b6001600160a01b0390941660009081526001602052604090209390935550505050565b60006119e0611237565b905060006119ee84836118b3565b6009546001600160a01b0316600090815260016020526040902054909150611a1690826112a3565b600980546001600160a01b039081166000908152600160209081526040808320959095559254909116815260029091522054611a5290856112a3565b600980546001600160a01b03908116600090815260026020908152604091829020949094559154915187815291811692908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b611ad08461184787600e5461138690919063ffffffff16565b600e55600f54611ae090846112a3565b600f55601054611af090836112a3565b601055601154611b0090826112a3565b601155600d54611b109083611386565b600d5560405182815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6001600160a01b038516600090815260016020526040902054611b759083611386565b6001600160a01b03808716600090815260016020908152604080832094909455918716815260029091522054611bab90846112a3565b6001600160a01b0385166000908152600260209081526040808320939093556001905220546119b390826112a3565b6001600160a01b038416600090815260016020526040902054611bfd9083611386565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611c2c90826112a3565b6001600160a01b03909316600090815260016020526040902092909255505050565b6001600160a01b038616600090815260026020526040902054611c719085611386565b6001600160a01b038716600090815260026020908152604080832093909355600190522054611ca09084611386565b6001600160a01b03808816600090815260016020908152604080832094909455918816815260029091522054611cd690836112a3565b6001600160a01b038616600090815260026020908152604080832093909355600190522054611d0590826112a3565b6001600160a01b039095166000908152600160205260409020949094555050505050565b80356001600160a01b03811681146105cf57600080fd5b600060208284031215611d51578081fd5b61129c82611d29565b60008060408385031215611d6c578081fd5b611d7583611d29565b9150611d8360208401611d29565b90509250929050565b600080600060608486031215611da0578081fd5b611da984611d29565b9250611db760208501611d29565b9150604084013590509250925092565b60008060408385031215611dd9578182fd5b611de283611d29565b946020939093013593505050565b600060208284031215611e01578081fd5b5035919050565b60008060408385031215611e1a578182fd5b8235915060208301358015158114611e30578182fd5b809150509250929050565b600080600060608486031215611e4f578283fd5b505081359360208301359350604090920135919050565b6000602080835283518082850152825b81811015611e9257858101830151858201604001528201611e76565b81811115611ea35783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611f0157611f01611fb2565b500190565b600082611f2157634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611f4057611f40611fb2565b500290565b600082821015611f5757611f57611fb2565b500390565b600281046001821680611f7057607f821691505b60208210811415611f9157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611fab57611fab611fb2565b5060010190565b634e487b7160e01b600052601160045260246000fdfe544f4b454e32303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e32303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122013dc6a5ec76f15b737502438be35df52ea193ad6bdbb313d110a0bde11d50a4b64736f6c634300080200330000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000061e6800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000007ff653340299f09ec13ae25bc91bb4172e7e46400000000000000000000000007ff653340299f09ec13ae25bc91bb4172e7e46400000000000000000000000051e46fddf884518d96ebea18023f7b2d0a82582a00000000000000000000000000000000000000000000000000000000000000105265746972656d656e7420746f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065265746972650000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

16567:16248:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18465:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19384:161;;;;;;:::i;:::-;;:::i;:::-;;;2545:14:1;;2538:22;2520:41;;2508:2;2493:18;19384:161:0;2475:92:1;20505:87:0;20574:10;;20505:87;;;8784:25:1;;;8772:2;8757:18;20505:87:0;8739:76:1;18749:95:0;18829:7;;18749:95;;19553:315;;;;;;:::i;:::-;;:::i;21638:253::-;;;;;;:::i;:::-;;:::i;18651:90::-;18723:9;;18651:90;;8992:4:1;8980:17;;;8962:36;;8950:2;8935:18;18651:90:0;8917:87:1;19876:218:0;;;;;;:::i;:::-;;:::i;20806:378::-;;;;;;:::i;:::-;;:::i;:::-;;20604:88;20673:11;;20604:88;;21192:438;;;;;;:::i;:::-;;:::i;22725:100::-;;;;;;:::i;:::-;;:::i;18852:198::-;;;;;;:::i;:::-;;:::i;16013:148::-;;;:::i;17421:27::-;;;;;;17049:25;;;;;-1:-1:-1;;;;;17049:25:0;;;;;;-1:-1:-1;;;;;2336:32:1;;;2318:51;;2306:2;2291:18;17049:25:0;2273:102:1;15371:79:0;15409:7;15436:6;-1:-1:-1;;;;;15436:6:0;15371:79;;18556:87;;;:::i;20102:271::-;;;;;;:::i;:::-;;:::i;19058:167::-;;;;;;:::i;:::-;;:::i;17455:27::-;;;;;;15174:21;;;;;-1:-1:-1;;;;;15174:21:0;;;17387:27;;;;;;20381:110;;;;;;:::i;:::-;-1:-1:-1;;;;;20463:20:0;20439:4;20463:20;;;:11;:20;;;;;;;;;20381:110;20704:94;20776:14;;20704:94;;19233:143;;;;;;:::i;:::-;-1:-1:-1;;;;;19341:18:0;;;19314:7;19341:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19233:143;21899:332;;;;;;:::i;:::-;;:::i;16316:244::-;;;;;;:::i;:::-;;:::i;22239:478::-;;;;;;:::i;:::-;;:::i;22833:361::-;;;;;;:::i;:::-;;:::i;18465:83::-;18502:13;18535:5;18528:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18465:83;:::o;19384:161::-;19459:4;19476:39;193:10;19499:7;19508:6;19476:8;:39::i;:::-;-1:-1:-1;19533:4:0;19384:161;;;;;:::o;19553:315::-;19651:4;19668:36;19678:6;19686:9;19697:6;19668:9;:36::i;:::-;19715:123;19724:6;193:10;19746:91;19784:6;19746:91;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19746:19:0;;;;;;:11;:19;;;;;;;;193:10;19746:33;;;;;;;;;;:37;:91::i;:::-;19715:8;:123::i;:::-;-1:-1:-1;19856:4:0;19553:315;;;;;:::o;21638:253::-;21704:7;21743;;21732;:18;;21724:73;;;;-1:-1:-1;;;21724:73:0;;4196:2:1;21724:73:0;;;4178:21:1;4235:2;4215:18;;;4208:30;4274:34;4254:18;;;4247:62;-1:-1:-1;;;4325:18:1;;;4318:40;4375:19;;21724:73:0;;;;;;;;;21808:19;21831:10;:8;:10::i;:::-;21808:33;-1:-1:-1;21859:24:0;:7;21808:33;21859:11;:24::i;:::-;21852:31;;;21638:253;;;;:::o;19876:218::-;193:10;19964:4;20013:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20013:34:0;;;;;;;;;;19964:4;;19981:83;;20004:7;;20013:50;;20052:10;20013:38;:50::i;20806:378::-;193:10;20858:14;20907:19;;;:11;:19;;;;;;;;20906:20;20898:77;;;;-1:-1:-1;;;20898:77:0;;8427:2:1;20898:77:0;;;8409:21:1;8466:2;8446:18;;;8439:30;8505:34;8485:18;;;8478:62;-1:-1:-1;;;8556:18:1;;;8549:42;8608:19;;20898:77:0;8399:234:1;20898:77:0;20987:15;21012:19;21023:7;21012:10;:19::i;:::-;-1:-1:-1;;;;;;;;21060:15:0;;;;;;:7;:15;;;;;;20986:45;;-1:-1:-1;21060:28:0;;:15;-1:-1:-1;20986:45:0;;-1:-1:-1;;21060:19:0;:28::i;:::-;-1:-1:-1;;;;;21042:15:0;;;;;;:7;:15;;;;;:46;21109:7;;:20;;21121:7;21109:11;:20::i;:::-;21099:7;:30;21153:10;;:23;;21168:7;21153:14;:23::i;:::-;21140:10;:36;-1:-1:-1;;;20806:378:0:o;21192:438::-;21282:7;21321;;21310;:18;;21302:62;;;;-1:-1:-1;;;21302:62:0;;6082:2:1;21302:62:0;;;6064:21:1;6121:2;6101:18;;;6094:30;6160:33;6140:18;;;6133:61;6211:18;;21302:62:0;6054:181:1;21302:62:0;21380:17;21375:248;;21415:15;21440:19;21451:7;21440:10;:19::i;:::-;-1:-1:-1;21414:45:0;;-1:-1:-1;21474:14:0;;-1:-1:-1;;;;;;21474:14:0;21375:248;21523:23;21555:19;21566:7;21555:10;:19::i;:::-;-1:-1:-1;21521:53:0;;-1:-1:-1;21589:22:0;;-1:-1:-1;;;;;;21589:22:0;22725:100;15583:6;;-1:-1:-1;;;;;15583:6:0;193:10;15583:22;15575:67;;;;-1:-1:-1;;;15575:67:0;;;;;;;:::i;:::-;22797:10:::1;:20:::0;;-1:-1:-1;;;;;;22797:20:0::1;-1:-1:-1::0;;;;;22797:20:0;;;::::1;::::0;;;::::1;::::0;;22725:100::o;18852:198::-;-1:-1:-1;;;;;18942:20:0;;18918:7;18942:20;;;:11;:20;;;;;;;;18938:49;;;-1:-1:-1;;;;;;18971:16:0;;;;;;:7;:16;;;;;;18964:23;;18938:49;-1:-1:-1;;;;;19025:16:0;;;;;;:7;:16;;;;;;19005:37;;:19;:37::i;16013:148::-;15583:6;;-1:-1:-1;;;;;15583:6:0;193:10;15583:22;15575:67;;;;-1:-1:-1;;;15575:67:0;;;;;;;:::i;:::-;16120:1:::1;16104:6:::0;;16083:40:::1;::::0;-1:-1:-1;;;;;16104:6:0;;::::1;::::0;16083:40:::1;::::0;16120:1;;16083:40:::1;16151:1;16134:19:::0;;-1:-1:-1;;;;;;16134:19:0::1;::::0;;16013:148::o;18556:87::-;18595:13;18628:7;18621:14;;;;;:::i;20102:271::-;20195:4;20212:131;193:10;20235:7;20244:98;20283:15;20244:98;;;;;;;;;;;;;;;;;193:10;20244:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20244:34:0;;;;;;;;;;;;:38;:98::i;19058:167::-;19136:4;19153:42;193:10;19177:9;19188:6;19153:9;:42::i;21899:332::-;15583:6;;-1:-1:-1;;;;;15583:6:0;193:10;15583:22;15575:67;;;;-1:-1:-1;;;15575:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21981:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21980:21;21972:61;;;::::0;-1:-1:-1;;;21972:61:0;;5370:2:1;21972:61:0::1;::::0;::::1;5352:21:1::0;5409:2;5389:18;;;5382:30;5448:29;5428:18;;;5421:57;5495:18;;21972:61:0::1;5342:177:1::0;21972:61:0::1;-1:-1:-1::0;;;;;22047:16:0;::::1;22066:1;22047:16:::0;;;:7:::1;:16;::::0;;;;;:20;22044:108:::1;;-1:-1:-1::0;;;;;22123:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22103:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22084:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22044:108:::1;-1:-1:-1::0;;;;;22162:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22162:27:0::1;22185:4;22162:27:::0;;::::1;::::0;;;22200:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22200:23:0::1;::::0;;::::1;::::0;;21899:332::o;16316:244::-;15583:6;;-1:-1:-1;;;;;15583:6:0;193:10;15583:22;15575:67;;;;-1:-1:-1;;;15575:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16405:22:0;::::1;16397:73;;;::::0;-1:-1:-1;;;16397:73:0;;4607:2:1;16397:73:0::1;::::0;::::1;4589:21:1::0;4646:2;4626:18;;;4619:30;4685:34;4665:18;;;4658:62;-1:-1:-1;;;4736:18:1;;;4729:36;4782:19;;16397:73:0::1;4579:228:1::0;16397:73:0::1;16507:6;::::0;;16486:38:::1;::::0;-1:-1:-1;;;;;16486:38:0;;::::1;::::0;16507:6;::::1;::::0;16486:38:::1;::::0;::::1;16535:6;:17:::0;;-1:-1:-1;;;;;;16535:17:0::1;-1:-1:-1::0;;;;;16535:17:0;;;::::1;::::0;;;::::1;::::0;;16316:244::o;22239:478::-;15583:6;;-1:-1:-1;;;;;15583:6:0;193:10;15583:22;15575:67;;;;-1:-1:-1;;;15575:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22320:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22312:60;;;::::0;-1:-1:-1;;;22312:60:0;;5726:2:1;22312:60:0::1;::::0;::::1;5708:21:1::0;5765:2;5745:18;;;5738:30;5804:29;5784:18;;;5777:57;5851:18;;22312:60:0::1;5698:177:1::0;22312:60:0::1;22388:9;22383:327;22407:9;:16:::0;22403:20;::::1;22383:327;;;22465:7;-1:-1:-1::0;;;;;22449:23:0::1;:9;22459:1;22449:12;;;;;;-1:-1:-1::0;;;22449:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22449:12:0::1;:23;22445:254;;;22508:9;22518:16:::0;;:20:::1;::::0;22537:1:::1;::::0;22518:20:::1;:::i;:::-;22508:31;;;;;;-1:-1:-1::0;;;22508:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;22493:9:::1;:12:::0;;-1:-1:-1;;;;;22508:31:0;;::::1;::::0;22503:1;;22493:12;::::1;;;-1:-1:-1::0;;;22493:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22493:46:0::1;-1:-1:-1::0;;;;;22493:46:0;;::::1;;::::0;;22558:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22597:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22597:28:0::1;::::0;;22644:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;22644:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22644:15:0;;;;;-1:-1:-1;;;;;;22644:15:0::1;::::0;;;;;22678:5:::1;;22445:254;22425:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22383:327;;;;22239:478:::0;:::o;22833:361::-;15583:6;;-1:-1:-1;;;;;15583:6:0;193:10;15583:22;15575:67;;;;-1:-1:-1;;;15575:67:0;;;;;;;:::i;:::-;22945:3:::1;22936:6;:12;:30;;;;;22963:3;22952:8;:14;22936:30;:51;;;;;22984:3;22970:11;:17;22936:51;22928:60;;;::::0;::::1;;23010:11;:6:::0;23018:3:::1;23010:11;:::i;:::-;22999:8;:22:::0;23045:14:::1;:8:::0;23056:3:::1;23045:14;:::i;:::-;23033:9;:26:::0;23079:16:::1;:11:::0;23092:3:::1;23079:16;:::i;:::-;23064:12;:31:::0;;;23115:8:::1;::::0;23100:12:::1;:23:::0;23144:9:::1;::::0;23128:13:::1;:25:::0;23158:16:::1;:31:::0;-1:-1:-1;;;22833:361:0:o;23211:341::-;-1:-1:-1;;;;;23304:19:0;;23296:70;;;;-1:-1:-1;;;23296:70:0;;8020:2:1;23296:70:0;;;8002:21:1;8059:2;8039:18;;;8032:30;8098:34;8078:18;;;8071:62;-1:-1:-1;;;8149:18:1;;;8142:36;8195:19;;23296:70:0;7992:228:1;23296:70:0;-1:-1:-1;;;;;23385:21:0;;23377:70;;;;-1:-1:-1;;;23377:70:0;;7615:2:1;23377:70:0;;;7597:21:1;7654:2;7634:18;;;7627:30;7693:34;7673:18;;;7666:62;-1:-1:-1;;;7744:18:1;;;7737:34;7788:19;;23377:70:0;7587:226:1;23377:70:0;-1:-1:-1;;;;;23460:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23512:32;;8784:25:1;;;23512:32:0;;8757:18:1;23512:32:0;;;;;;;23211:341;;;:::o;23560:1290::-;-1:-1:-1;;;;;23657:20:0;;23649:72;;;;-1:-1:-1;;;23649:72:0;;3788:2:1;23649:72:0;;;3770:21:1;3827:2;3807:18;;;3800:30;3866:34;3846:18;;;3839:62;-1:-1:-1;;;3917:18:1;;;3910:37;3964:19;;23649:72:0;3760:229:1;23649:72:0;-1:-1:-1;;;;;23740:23:0;;23732:73;;;;-1:-1:-1;;;23732:73:0;;3382:2:1;23732:73:0;;;3364:21:1;3421:2;3401:18;;;3394:30;3460:34;3440:18;;;3433:62;-1:-1:-1;;;3511:18:1;;;3504:35;3556:19;;23732:73:0;3354:227:1;23732:73:0;23833:1;23824:6;:10;23816:64;;;;-1:-1:-1;;;23816:64:0;;7205:2:1;23816:64:0;;;7187:21:1;7244:2;7224:18;;;7217:30;7283:34;7263:18;;;7256:62;-1:-1:-1;;;7334:18:1;;;7327:39;7383:19;;23816:64:0;7177:231:1;23816:64:0;24016:10;;23997:4;;-1:-1:-1;;;;;24016:20:0;;;:10;;:20;;:47;;-1:-1:-1;24040:10:0;;-1:-1:-1;;;;;24040:23:0;;;:10;;:23;24016:47;:73;;;-1:-1:-1;;;;;;24067:22:0;;;;;;:11;:22;;;;;;;;24016:73;24012:121;;;-1:-1:-1;24116:5:0;24012:121;24150:7;24145:28;;24159:14;:12;:14::i;:::-;-1:-1:-1;;;;;24208:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;24232:22:0;;;;;;:11;:22;;;;;;;;24231:23;24208:46;24204:597;;;24271:48;24293:6;24301:9;24312:6;24271:21;:48::i;:::-;24204:597;;;-1:-1:-1;;;;;24342:19:0;;;;;;:11;:19;;;;;;;;24341:20;:46;;;;-1:-1:-1;;;;;;24365:22:0;;;;;;:11;:22;;;;;;;;24341:46;24337:464;;;24404:46;24424:6;24432:9;24443:6;24404:19;:46::i;24337:464::-;-1:-1:-1;;;;;24473:19:0;;;;;;:11;:19;;;;;;;;24472:20;:47;;;;-1:-1:-1;;;;;;24497:22:0;;;;;;:11;:22;;;;;;;;24496:23;24472:47;24468:333;;;24536:44;24554:6;24562:9;24573:6;24536:17;:44::i;24468:333::-;-1:-1:-1;;;;;24602:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;24625:22:0;;;;;;:11;:22;;;;;;;;24602:45;24598:203;;;24664:48;24686:6;24694:9;24705:6;24664:21;:48::i;24598:203::-;24745:44;24763:6;24771:9;24782:6;24745:17;:44::i;:::-;24818:7;24813:29;;24827:15;32612:12;;32601:8;:23;32647:13;;32635:9;:25;32686:16;;32671:12;:31;32557:153;24827:15;23560:1290;;;;:::o;4916:192::-;5002:7;5038:12;5030:6;;;;5022:29;;;;-1:-1:-1;;;5022:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5062:9:0;5074:5;5078:1;5074;:5;:::i;:::-;5062:17;4916:192;-1:-1:-1;;;;;4916:192:0:o;31119:163::-;31160:7;31181:15;31198;31217:19;:17;:19::i;:::-;31180:56;;-1:-1:-1;31180:56:0;-1:-1:-1;31254:20:0;31180:56;;31254:11;:20::i;:::-;31247:27;;;;31119:163;:::o;6314:132::-;6372:7;6399:39;6403:1;6406;6399:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6392:46;6314:132;-1:-1:-1;;;6314:132:0:o;4013:181::-;4071:7;;4103:5;4107:1;4103;:5;:::i;:::-;4091:17;;4132:1;4127;:6;;4119:46;;;;-1:-1:-1;;;4119:46:0;;5014:2:1;4119:46:0;;;4996:21:1;5053:2;5033:18;;;5026:30;5092:29;5072:18;;;5065:57;5139:18;;4119:46:0;4986:177:1;29170:652:0;29229:7;29238;29247;29256;29265;29274;29283;29304:12;29318:13;29333:16;29353:55;29365:7;29374:8;;29384:9;;29395:12;;29353:11;:55::i;:::-;29303:105;;;;;;29419:23;29445:50;29464:7;29473:4;29479:5;29486:8;29445:18;:50::i;:::-;29419:76;;29506:19;29529:10;:8;:10::i;:::-;29506:33;;29551:15;29568:12;29584:39;29596:7;29605:4;29611:11;29584;:39::i;:::-;29550:73;;;;29634:23;29660:64;29680:7;29689:4;29695:5;29702:8;29712:11;29660:19;:64::i;:::-;29743:7;;-1:-1:-1;29634:90:0;;-1:-1:-1;29769:4:0;-1:-1:-1;29775:15:0;;-1:-1:-1;29792:4:0;;-1:-1:-1;29798:5:0;;-1:-1:-1;29805:8:0;-1:-1:-1;;;29170:652:0;;;;;;;;;:::o;4477:136::-;4535:7;4562:43;4566:1;4569;4562:43;;;;;;;;;;;;;;;;;:3;:43::i;32225:320::-;32271:8;;:13;:31;;;;-1:-1:-1;32288:9:0;;:14;32271:31;:52;;;;-1:-1:-1;32306:12:0;;:17;32271:52;32268:64;;;32325:7;;32268:64;32367:8;;;32352:12;:23;32402:9;;;32386:13;:25;32441:12;;;32422:16;:31;-1:-1:-1;32474:12:0;;;;32497:13;;;;32521:16;32225:320;:::o;26735:606::-;26837:19;26860:10;:8;:10::i;:::-;26837:33;;26882:15;26899:23;26924:12;26938:23;26963:12;26977:13;26992:16;27012:19;27023:7;27012:10;:19::i;:::-;26881:150;;;;;;;;;;;;;;27042:13;27059:22;27069:11;27059:5;:9;;:22;;;;:::i;:::-;27042:39;;27092:80;27119:6;27127:9;27138:7;27147;27156:15;27092:26;:80::i;:::-;27183:32;27198:8;27208:6;27183:14;:32::i;:::-;27226:47;27238:4;27244:5;27251:4;27257:5;27264:8;27226:11;:47::i;:::-;27306:9;-1:-1:-1;;;;;27289:44:0;27298:6;-1:-1:-1;;;;;27289:44:0;;27317:15;27289:44;;;;8784:25:1;;8772:2;8757:18;;8739:76;27289:44:0;;;;;;;;26735:606;;;;;;;;;;;;:::o;25728:622::-;25828:19;25851:10;:8;:10::i;:::-;25828:33;;25873:15;25890:23;25915:12;25929:23;25954:12;25968:13;25983:16;26003:19;26014:7;26003:10;:19::i;:::-;25872:150;;;;;;;;;;;;;;26033:13;26050:22;26060:11;26050:5;:9;;:22;;;;:::i;:::-;26033:39;;26083:90;26112:6;26120:9;26131:15;26148:7;26157:15;26083:28;:90::i;24858:591::-;24956:19;24979:10;:8;:10::i;:::-;24956:33;;25001:15;25018:23;25043:12;25057:23;25082:12;25096:13;25111:16;25131:19;25142:7;25131:10;:19::i;:::-;25000:150;;;;;;;;;;;;;;25161:13;25178:22;25188:11;25178:5;:9;;:22;;;;:::i;:::-;25161:39;;25211:69;25236:6;25244:9;25255:7;25264:15;25211:24;:69::i;27694:619::-;27796:19;27819:10;:8;:10::i;:::-;27796:33;;27841:15;27858:23;27883:12;27897:23;27922:12;27936:13;27951:16;27971:19;27982:7;27971:10;:19::i;:::-;27840:150;;;;;;;;;;;;;;28001:13;28018:22;28028:11;28018:5;:9;;:22;;;;:::i;:::-;28001:39;;28051:91;28072:6;28080:9;28091:7;28100;28109:15;28126;28051:20;:91::i;31290:561::-;31387:7;;31423;;31340;;;;;31447:289;31471:9;:16;31467:20;;31447:289;;;31537:7;31513;:21;31521:9;31531:1;31521:12;;;;;;-1:-1:-1;;;31521:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31521:12:0;31513:21;;;;;;;;;;;;;:31;;:66;;;31572:7;31548;:21;31556:9;31566:1;31556:12;;;;;;-1:-1:-1;;;31556:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31556:12:0;31548:21;;;;;;;;;;;;;:31;31513:66;31509:97;;;31589:7;;31598;;31581:25;;;;;;;;;31509:97;31631:34;31643:7;:21;31651:9;31661:1;31651:12;;;;;;-1:-1:-1;;;31651:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31651:12:0;31643:21;;;;;;;;;;;;;31631:7;;:11;:34::i;:::-;31621:44;;31690:34;31702:7;:21;31710:9;31720:1;31710:12;;;;;;-1:-1:-1;;;31710:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31710:12:0;31702:21;;;;;;;;;;;;;31690:7;;:11;:34::i;:::-;31680:44;-1:-1:-1;31489:3:0;;;;:::i;:::-;;;;31447:289;;;-1:-1:-1;31772:7:0;;31760;;:20;;:11;:20::i;:::-;31750:7;:30;31746:61;;;31790:7;;31799;;31782:25;;;;;;;;31746:61;31826:7;;-1:-1:-1;31835:7:0;-1:-1:-1;31290:561:0;;;:::o;6942:278::-;7028:7;7063:12;7056:5;7048:28;;;;-1:-1:-1;;;7048:28:0;;;;;;;;:::i;:::-;-1:-1:-1;7087:9:0;7099:5;7103:1;7099;:5;:::i;29834:427::-;29947:7;29956;29965;29985:12;30000:50;30046:3;30001:39;30027:12;;30002:19;30014:6;30002:7;:11;;:19;;;;:::i;:::-;30001:25;;:39::i;30000:50::-;29985:65;;30061:13;30077:51;30124:3;30078:40;30105:12;;30079:20;30091:7;30079;:11;;:20;;;;:::i;30077:51::-;30061:67;;30139:16;30158:54;30208:3;30159:43;30189:12;;30160:23;30172:10;30160:7;:11;;:23;;;;:::i;30158:54::-;30231:4;;30237:5;;-1:-1:-1;30231:4:0;;-1:-1:-1;29834:427:0;-1:-1:-1;;;;;;29834:427:0:o;30273:191::-;30387:7;30414:42;30447:8;30414:28;30436:5;30414:28;:7;30426:4;30414:11;:17::i;:::-;:21;;:28::i;30476:254::-;30571:7;;;30618:24;:7;30630:11;30618;:24::i;:::-;30600:42;-1:-1:-1;30653:12:0;30668:21;:4;30677:11;30668:8;:21::i;:::-;30708:7;;;;-1:-1:-1;30476:254:0;;-1:-1:-1;;;;;30476:254:0:o;30742:369::-;30878:7;;30914:22;:5;30924:11;30914:9;:22::i;:::-;30898:38;-1:-1:-1;30947:16:0;30966:25;:8;30979:11;30966:12;:25::i;:::-;30947:44;-1:-1:-1;31002:23:0;31028:42;30947:44;31028:28;31050:5;31028:28;:7;31040:4;31028:11;:17::i;:42::-;31002:68;30742:369;-1:-1:-1;;;;;;;;;30742:369:0:o;5367:471::-;5425:7;5670:6;5666:47;;-1:-1:-1;5700:1:0;5693:8;;5666:47;5725:9;5737:5;5741:1;5737;:5;:::i;:::-;5725:17;-1:-1:-1;5770:1:0;5761:5;5765:1;5725:17;5761:5;:::i;:::-;:10;5753:56;;;;-1:-1:-1;;;5753:56:0;;6442:2:1;5753:56:0;;;6424:21:1;6481:2;6461:18;;;6454:30;6520:34;6500:18;;;6493:62;-1:-1:-1;;;6571:18:1;;;6564:31;6612:19;;5753:56:0;6414:223:1;27353:333:0;-1:-1:-1;;;;;27520:15:0;;;;;;:7;:15;;;;;;:28;;27540:7;27520:19;:28::i;:::-;-1:-1:-1;;;;;27502:15:0;;;;;;:7;:15;;;;;;;;:46;;;;27577:7;:15;;;;:28;;27597:7;27577:19;:28::i;:::-;-1:-1:-1;;;;;27559:15:0;;;;;;;:7;:15;;;;;;:46;;;;27637:18;;;;;;;:39;;27660:15;27637:22;:39::i;:::-;-1:-1:-1;;;;;27616:18:0;;;;;;;:7;:18;;;;;:60;;;;-1:-1:-1;;;;27353:333:0:o;31859:358::-;31936:19;31958:10;:8;:10::i;:::-;31936:32;-1:-1:-1;31979:16:0;31998:25;:8;31936:32;31998:12;:25::i;:::-;32064:10;;-1:-1:-1;;;;;32064:10:0;32056:19;;;;:7;:19;;;;;;31979:44;;-1:-1:-1;32056:33:0;;31979:44;32056:23;:33::i;:::-;32042:10;;;-1:-1:-1;;;;;32042:10:0;;;32034:19;;;;:7;:19;;;;;;;;:55;;;;32130:10;;;;;32122:19;;:7;:19;;;;;:33;;32146:8;32122:23;:33::i;:::-;32108:10;;;-1:-1:-1;;;;;32108:10:0;;;32100:19;;;;:7;:19;;;;;;;;;:55;;;;32188:10;;32171:38;;8784:25:1;;;32188:10:0;;;;32171:38;;;;;;8757:18:1;32171:38:0;;;;;;;31859:358;;;;:::o;28756:400::-;28882:28;28904:5;28882:17;28894:4;28882:7;;:11;;:17;;;;:::i;:28::-;28872:7;:38;28934:10;;:20;;28949:4;28934:14;:20::i;:::-;28921:10;:33;28979:11;;:22;;28995:5;28979:15;:22::i;:::-;28965:11;:36;29029:14;;:28;;29048:8;29029:18;:28::i;:::-;29012:14;:45;29078:7;;:18;;29090:5;29078:11;:18::i;:::-;29068:7;:28;29106:42;;8784:25:1;;;29138:1:0;;29123:4;;29106:42;;8772:2:1;8757:18;29106:42:0;;;;;;;28756:400;;;;;:::o;26362:359::-;-1:-1:-1;;;;;26539:15:0;;;;;;:7;:15;;;;;;:28;;26559:7;26539:19;:28::i;:::-;-1:-1:-1;;;;;26521:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;26599:18;;;;;:7;:18;;;;;:39;;26622:15;26599:22;:39::i;:::-;-1:-1:-1;;;;;26578:18:0;;;;;;:7;:18;;;;;;;;:60;;;;26670:7;:18;;;;:39;;26693:15;26670:22;:39::i;25461:255::-;-1:-1:-1;;;;;25609:15:0;;;;;;:7;:15;;;;;;:28;;25629:7;25609:19;:28::i;:::-;-1:-1:-1;;;;;25591:15:0;;;;;;;:7;:15;;;;;;:46;;;;25669:18;;;;;;;:39;;25692:15;25669:22;:39::i;:::-;-1:-1:-1;;;;;25648:18:0;;;;;;;:7;:18;;;;;:60;;;;-1:-1:-1;;;25461:255:0:o;28325:423::-;-1:-1:-1;;;;;28511:15:0;;;;;;:7;:15;;;;;;:28;;28531:7;28511:19;:28::i;:::-;-1:-1:-1;;;;;28493:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28568:7;:15;;;;:28;;28588:7;28568:19;:28::i;:::-;-1:-1:-1;;;;;28550:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;28628:18;;;;;:7;:18;;;;;:39;;28651:15;28628:22;:39::i;:::-;-1:-1:-1;;;;;28607:18:0;;;;;;:7;:18;;;;;;;;:60;;;;28699:7;:18;;;;:39;;28722:15;28699:22;:39::i;:::-;-1:-1:-1;;;;;28678:18:0;;;;;;;:7;:18;;;;;:60;;;;-1:-1:-1;;;;;28325:423:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:196;;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:270::-;;;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:338::-;;;;814:2;802:9;793:7;789:23;785:32;782:2;;;835:6;827;820:22;782:2;863:29;882:9;863:29;:::i;:::-;853:39;;911:38;945:2;934:9;930:18;911:38;:::i;:::-;901:48;;996:2;985:9;981:18;968:32;958:42;;772:234;;;;;:::o;1011:264::-;;;1140:2;1128:9;1119:7;1115:23;1111:32;1108:2;;;1161:6;1153;1146:22;1108:2;1189:29;1208:9;1189:29;:::i;:::-;1179:39;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;1098:177:1:o;1280:190::-;;1392:2;1380:9;1371:7;1367:23;1363:32;1360:2;;;1413:6;1405;1398:22;1360:2;-1:-1:-1;1441:23:1;;1350:120;-1:-1:-1;1350:120:1:o;1475:361::-;;;1601:2;1589:9;1580:7;1576:23;1572:32;1569:2;;;1622:6;1614;1607:22;1569:2;1663:9;1650:23;1640:33;;1723:2;1712:9;1708:18;1695:32;1770:5;1763:13;1756:21;1749:5;1746:32;1736:2;;1797:6;1789;1782:22;1736:2;1825:5;1815:15;;;1559:277;;;;;:::o;1841:326::-;;;;1987:2;1975:9;1966:7;1962:23;1958:32;1955:2;;;2008:6;2000;1993:22;1955:2;-1:-1:-1;;2036:23:1;;;2106:2;2091:18;;2078:32;;-1:-1:-1;2157:2:1;2142:18;;;2129:32;;1945:222;-1:-1:-1;1945:222:1:o;2572:603::-;;2713:2;2742;2731:9;2724:21;2774:6;2768:13;2817:6;2812:2;2801:9;2797:18;2790:34;2842:4;2855:140;2869:6;2866:1;2863:13;2855:140;;;2964:14;;;2960:23;;2954:30;2930:17;;;2949:2;2926:26;2919:66;2884:10;;2855:140;;;3013:6;3010:1;3007:13;3004:2;;;3083:4;3078:2;3069:6;3058:9;3054:22;3050:31;3043:45;3004:2;-1:-1:-1;3159:2:1;3138:15;-1:-1:-1;;3134:29:1;3119:45;;;;3166:2;3115:54;;2693:482;-1:-1:-1;;;2693:482:1:o;6642:356::-;6844:2;6826:21;;;6863:18;;;6856:30;6922:34;6917:2;6902:18;;6895:62;6989:2;6974:18;;6816:182::o;9009:128::-;;9080:1;9076:6;9073:1;9070:13;9067:2;;;9086:18;;:::i;:::-;-1:-1:-1;9122:9:1;;9057:80::o;9142:217::-;;9208:1;9198:2;;-1:-1:-1;;;9233:31:1;;9287:4;9284:1;9277:15;9315:4;9240:1;9305:15;9198:2;-1:-1:-1;9344:9:1;;9188:171::o;9364:168::-;;9470:1;9466;9462:6;9458:14;9455:1;9452:21;9447:1;9440:9;9433:17;9429:45;9426:2;;;9477:18;;:::i;:::-;-1:-1:-1;9517:9:1;;9416:116::o;9537:125::-;;9605:1;9602;9599:8;9596:2;;;9610:18;;:::i;:::-;-1:-1:-1;9647:9:1;;9586:76::o;9667:380::-;9752:1;9742:12;;9799:1;9789:12;;;9810:2;;9864:4;9856:6;9852:17;9842:27;;9810:2;9917;9909:6;9906:14;9886:18;9883:38;9880:2;;;9963:10;9958:3;9954:20;9951:1;9944:31;9998:4;9995:1;9988:15;10026:4;10023:1;10016:15;9880:2;;9722:325;;;:::o;10052:135::-;;-1:-1:-1;;10112:17:1;;10109:2;;;10132:18;;:::i;:::-;-1:-1:-1;10179:1:1;10168:13;;10099:88::o;10192:127::-;10253:10;10248:3;10244:20;10241:1;10234:31;10284:4;10281:1;10274:15;10308:4;10305:1;10298:15

Swarm Source

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