ETH Price: $3,479.16 (+0.80%)

Token

FEG Wrapped ETH (fETH)
 

Overview

Max Total Supply

383.99645746548589244 fETH

Holders

4,319

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.009888810534332721 fETH

Value
$0.00
0x92f22c8a84b9dd64b6df00048ec0baa187f03bc2
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
fETH

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-04-01
*/

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

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.1;
library EnumerableSet {
    // To implement this library for multiple types with as little code
    // repetition as possible, we write it in terms of a generic Set type with
    // bytes32 values.
    // The Set implementation uses private functions, and user-facing
    // implementations (such as AddressSet) are just wrappers around the
    // underlying Set.
    // This means that we can only create new EnumerableSets for types that fit
    // in bytes32.

    struct Set {
        // Storage of set values
        bytes32[] _values;

        // Position of the value in the `values` array, plus 1 because index 0
        // means a value is not in the set.
        mapping (bytes32 => uint256) _indexes;
    }

    /**
     * @dev Add a value to a set. O(1).
     *
     * Returns true if the value was added to the set, that is if it was not
     * already present.
     */
    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            // The value is stored at length-1, but we add 1 to all indexes
            // and use 0 as a sentinel value
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    /**
     * @dev Removes a value from a set. O(1).
     *
     * Returns true if the value was removed from the set, that is if it was
     * present.
     */
    function _remove(Set storage set, bytes32 value) private returns (bool) {
        // We read and store the value's index to prevent multiple reads from the same storage slot
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) { // Equivalent to contains(set, value)
            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in
            // the array, and then remove the last element (sometimes called as 'swap and pop').
            // This modifies the order of the array, as noted in {at}.

            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs
            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.

            bytes32 lastvalue = set._values[lastIndex];

            // Move the last value to the index where the value to delete is
            set._values[toDeleteIndex] = lastvalue;
            // Update the index for the moved value
            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based

            // Delete the slot where the moved value was stored
            set._values.pop();

            // Delete the index for the deleted slot
            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    /**
     * @dev Returns the number of values on the set. O(1).
     */
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

   /**
    * @dev Returns the value stored at position `index` in the set. O(1).
    *
    * Note that there are no guarantees on the ordering of values inside the
    * array, and it may change when more values are added or removed.
    *
    * Requirements:
    *
    * - `index` must be strictly less than {length}.
    */
    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    // Bytes32Set

    struct Bytes32Set {
        Set _inner;
    }

    /**
     * @dev Add a value to a set. O(1).
     *
     * Returns true if the value was added to the set, that is if it was not
     * already present.
     */
    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    /**
     * @dev Removes a value from a set. O(1).
     *
     * Returns true if the value was removed from the set, that is if it was
     * present.
     */
    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    /**
     * @dev Returns the number of values in the set. O(1).
     */
    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

   /**
    * @dev Returns the value stored at position `index` in the set. O(1).
    *
    * Note that there are no guarantees on the ordering of values inside the
    * array, and it may change when more values are added or removed.
    *
    * Requirements:
    *
    * - `index` must be strictly less than {length}.
    */
    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    // AddressSet

    struct AddressSet {
        Set _inner;
    }

    /**
     * @dev Add a value to a set. O(1).
     *
     * Returns true if the value was added to the set, that is if it was not
     * already present.
     */
    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    /**
     * @dev Removes a value from a set. O(1).
     *
     * Returns true if the value was removed from the set, that is if it was
     * present.
     */
    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    /**
     * @dev Returns the number of values in the set. O(1).
     */
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

   /**
    * @dev Returns the value stored at position `index` in the set. O(1).
    *
    * Note that there are no guarantees on the ordering of values inside the
    * array, and it may change when more values are added or removed.
    *
    * Requirements:
    *
    * - `index` must be strictly less than {length}.
    */
    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }


    // UintSet

    struct UintSet {
        Set _inner;
    }

    /**
     * @dev Add a value to a set. O(1).
     *
     * Returns true if the value was added to the set, that is if it was not
     * already present.
     */
    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    /**
     * @dev Removes a value from a set. O(1).
     *
     * Returns true if the value was removed from the set, that is if it was
     * present.
     */
    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    /**
     * @dev Returns the number of values on the set. O(1).
     */
    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

   /**
    * @dev Returns the value stored at position `index` in the set. O(1).
    *
    * Note that there are no guarantees on the ordering of values inside the
    * array, and it may change when more values are added or removed.
    *
    * Requirements:
    *
    * - `index` must be strictly less than {length}.
    */
    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}



// File: openzeppelin-solidity\contracts\token\ERC20\IERC20.sol

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);
}

// File: openzeppelin-solidity\contracts\utils\Address.sol


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


contract fETH is IERC20 {
    using Address for address;
    enum TxType { FromExcluded, ToExcluded, BothExcluded, Standard }

    mapping (address => uint256) private rBnbBalance;
    mapping (address => uint256) private tBnbBalance;
    mapping (address => mapping (address => uint256)) private _allowances;

    EnumerableSet.AddressSet excluded;

    uint256 private tBnbSupply;
    uint256 private rBnbSupply;
    uint256 private feesAccrued;
 
    string private _name = 'FEG Wrapped ETH'; 
    string private _symbol = 'fETH';
    uint8  private _decimals = 18;
    
    address private op;
    address private op2;
    
    event  Deposit(address indexed dst, uint amount);
    event  Withdrawal(address indexed src, uint amount);

    receive() external payable {
        deposit();
    }

    constructor () {
        op = address(0x4c9BC793716e8dC05d1F48D8cA8f84318Ec3043C);
        op2 = op;
        EnumerableSet.add(excluded, address(0)); // stablity - zen.
        emit Transfer(address(0), msg.sender, 0);
    }

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (EnumerableSet.contains(excluded, account)) return tBnbBalance[account];
        (uint256 r, uint256 t) = currentSupply();
        return (rBnbBalance[account] * t)  / r;
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - 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) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] - subtractedValue);
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return EnumerableSet.contains(excluded, account);
    }

    function totalFees() public view returns (uint256) {
        return feesAccrued;
    }
    
    function deposit() public payable {
        require(msg.value > 0, "can't deposit nothing");
        (uint256 r, uint256 t) = currentSupply();
        tBnbSupply += msg.value;
        uint256 fee = msg.value / 100; 
        uint256 df = fee / 10;
        uint256 net = fee != 0 ? (msg.value - (fee)) : msg.value;
        if(isExcluded(msg.sender)){
            tBnbBalance[msg.sender] += (msg.value - fee);
        } 
        feesAccrued += fee;
        rBnbBalance[op] += ((df * r) / t);
        rBnbSupply += (((net + df) * r) / t);
        rBnbBalance[msg.sender] += ((net * r) / t);
        emit Deposit(msg.sender, msg.value);
    }

    function withdraw(uint amt) public {
        require(balanceOf(msg.sender) >= amt && amt <= totalSupply(), "invalid amt");
        (uint256 r, uint256 t) = currentSupply();
        uint256 fee = amt / 100;
        uint256 wf = fee / 8;
        uint256 net = amt - fee;
        if(isExcluded(msg.sender)) {
            tBnbBalance[msg.sender] -= amt;
            rBnbBalance[msg.sender] -= ((amt * r) / t);
        } else {
            rBnbBalance[msg.sender] -= ((amt * r) / t);
        }
        tBnbSupply -= (net + wf);
        rBnbSupply -= (((net + wf) * r ) / t);
        rBnbBalance[op] += ((wf * r) / t);
        feesAccrued += wf;
        payable(msg.sender).transfer(net); 
        emit Withdrawal(msg.sender, net);
    }
    
    function rBnbToEveryone(uint256 amt) public {
        require(!isExcluded(msg.sender), "not allowed");
        (uint256 r, uint256 t) = currentSupply();
        rBnbBalance[msg.sender] -= ((amt * r) / t);
        rBnbSupply -= ((amt * r) / t);
        feesAccrued += amt;
    }

    function excludeFromFees(address account) external {
        require(msg.sender == op2, "op only");
        require(!EnumerableSet.contains(excluded, account), "address excluded");
        if(rBnbBalance[account] > 0) {
            (uint256 r, uint256 t) = currentSupply();
            tBnbBalance[account] = (rBnbBalance[account] * (t)) / (r);
        }
        EnumerableSet.add(excluded, account);
    }

    function includeInFees(address account) external {
        require(msg.sender == op2, "op only");
        require(EnumerableSet.contains(excluded, account), "address excluded");
        tBnbBalance[account] = 0;
        EnumerableSet.remove(excluded, account);
    }
    
    function tBnbFromrBnb(uint256 rBnbAmount) external view returns (uint256) {
        (uint256 r, uint256 t) = currentSupply();
        return (rBnbAmount * t) / r;
    }


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

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

    function getTtype(address sender, address recipient) internal view returns (TxType t) {
        bool isSenderExcluded = EnumerableSet.contains(excluded, sender);
        bool isRecipientExcluded = EnumerableSet.contains(excluded, recipient);
        if (isSenderExcluded && !isRecipientExcluded) {
            t = TxType.FromExcluded;
        } else if (!isSenderExcluded && isRecipientExcluded) {
            t = TxType.ToExcluded;
        } else if (!isSenderExcluded && !isRecipientExcluded) {
            t = TxType.Standard;
        } else if (isSenderExcluded && isRecipientExcluded) {
            t = TxType.BothExcluded;
        } else {
            t = TxType.Standard;
        }
        return t;
    }
    function _transfer(address sender, address recipient, uint256 amt) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amt > 0, "Transfer amt must be greater than zero");
        (uint256 r, uint256 t) = currentSupply();
        uint256 fee = amt / 100;
        TxType tt = getTtype(sender, recipient);
        if (tt == TxType.ToExcluded) {
            rBnbBalance[sender] -= ((amt * r) / t);
            tBnbBalance[recipient] += (amt - fee);
            rBnbBalance[recipient] += (((amt - fee) * r) / t);
        } else if (tt == TxType.FromExcluded) {
            tBnbBalance[sender] -= (amt);
            rBnbBalance[sender] -= ((amt * r) / t);
            rBnbBalance[recipient] += (((amt - fee) * r) / t);
        } else if (tt == TxType.BothExcluded) {
            tBnbBalance[sender] -= (amt);
            rBnbBalance[sender] -= ((amt * r) / t);
            tBnbBalance[recipient] += (amt - fee);
            rBnbBalance[recipient] += (((amt - fee) * r) / t);
        } else {
            rBnbBalance[sender] -= ((amt * r) / t);
            rBnbBalance[recipient] += (((amt - fee) * r) / t);
        }
        rBnbSupply  -= ((fee * r) / t);
        feesAccrued += fee;
        emit Transfer(sender, recipient, amt - fee);
    }

    function currentSupply() public view returns(uint256, uint256) {
        if(rBnbSupply == 0 || tBnbSupply == 0) return (1000000000, 1);
        uint256 rSupply = rBnbSupply;
        uint256 tSupply = tBnbSupply;
        for (uint256 i = 0; i < EnumerableSet.length(excluded); i++) {
            if (rBnbBalance[EnumerableSet.at(excluded, i)] > rSupply || tBnbBalance[EnumerableSet.at(excluded, i)] > tSupply) return (rBnbSupply, tBnbSupply);
            rSupply -= (rBnbBalance[EnumerableSet.at(excluded, i)]);
            tSupply -= (tBnbBalance[EnumerableSet.at(excluded, i)]);
        }
        if (rSupply < rBnbSupply / tBnbSupply) return (rBnbSupply, tBnbSupply);
        return (rSupply, tSupply);
    }
    
    function setOp(address opper, address opper2) external {
        require(msg.sender == op, "only op can call");
        op = opper;
        op2 = opper2;
    }
}

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":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"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":"currentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"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":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFees","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":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"rBnbToEveryone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"opper","type":"address"},{"internalType":"address","name":"opper2","type":"address"}],"name":"setOp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rBnbAmount","type":"uint256"}],"name":"tBnbFromrBnb","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":"uint256","name":"amt","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600f60808190526e08c8a8e40aee4c2e0e0cac8408aa89608b1b60a090815262000032916008919062000198565b50604080518082019091526004808252630cc8aa8960e31b6020909201918252620000609160099162000198565b50600a805460ff191660121790553480156200007b57600080fd5b50600a8054744c9bc793716e8dc05d1f48d8ca8f84318ec3043c00610100600160a81b03199091161790819055600b80546001600160a01b0319166101009092046001600160a01b0316919091179055620000e86003600062000f1962000126602090811b91909117901c565b50604051600080825233917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200027b565b60006200013d836001600160a01b03841662000146565b90505b92915050565b60008181526001830160205260408120546200018f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000140565b50600062000140565b828054620001a6906200023e565b90600052602060002090601f016020900481019282620001ca576000855562000215565b82601f10620001e557805160ff191683800117855562000215565b8280016001018555821562000215579182015b8281111562000215578251825591602001919060010190620001f8565b506200022392915062000227565b5090565b5b8082111562000223576000815560010162000228565b600181811c908216806200025357607f821691505b602082108114156200027557634e487b7160e01b600052602260045260246000fd5b50919050565b6119dc806200028b6000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb14610332578063b9eb6bda14610352578063cba0e99614610372578063d0e30db014610392578063dd62ed3e1461039a578063e57f14e1146103e05761013d565b806370a0823114610293578063771282f6146102b35780638cf882a4146102dd57806395d89b41146102fd578063a457c2d7146103125761013d565b806323b872dd116100f257806323b872dd146101f15780632b414264146102115780632e1a7d4d14610231578063313ce5671461025157806339509351146102735761013d565b806306fdde0314610142578063095ea7b31461016d57806313114a9d1461019d57806316a2f82a146101bc57806318160ddd146101dc5761013d565b3661013d5761013b610400565b005b600080fd5b34801561014e57600080fd5b506101576105f6565b6040516101649190611879565b60405180910390f35b34801561017957600080fd5b5061018d610188366004611838565b610688565b6040519015158152602001610164565b3480156101a957600080fd5b506007545b604051908152602001610164565b3480156101c857600080fd5b5061013b6101d73660046117b1565b61069f565b3480156101e857600080fd5b506005546101ae565b3480156101fd57600080fd5b5061018d61020c3660046117fd565b610755565b34801561021d57600080fd5b5061013b61022c3660046117cb565b6107a7565b34801561023d57600080fd5b5061013b61024c366004611861565b610831565b34801561025d57600080fd5b50600a5460405160ff9091168152602001610164565b34801561027f57600080fd5b5061018d61028e366004611838565b610a92565b34801561029f57600080fd5b506101ae6102ae3660046117b1565b610ac9565b3480156102bf57600080fd5b506102c8610b44565b60408051928352602083019190915201610164565b3480156102e957600080fd5b5061013b6102f8366004611861565b610cb5565b34801561030957600080fd5b50610157610d8c565b34801561031e57600080fd5b5061018d61032d366004611838565b610d9b565b34801561033e57600080fd5b5061018d61034d366004611838565b610dd2565b34801561035e57600080fd5b506101ae61036d366004611861565b610ddf565b34801561037e57600080fd5b5061018d61038d3660046117b1565b610dfc565b61013b610400565b3480156103a657600080fd5b506101ae6103b53660046117cb565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156103ec57600080fd5b5061013b6103fb3660046117b1565b610e09565b6000341161044d5760405162461bcd60e51b815260206004820152601560248201527463616e2774206465706f736974206e6f7468696e6760581b60448201526064015b60405180910390fd5b600080610458610b44565b91509150346005600082825461046e91906118cc565b90915550600090506104816064346118e4565b90506000610490600a836118e4565b905060008261049f57346104a9565b6104a98334611923565b90506104b433610dfc565b156104e8576104c38334611923565b33600090815260016020526040812080549091906104e29084906118cc565b90915550505b82600760008282546104fa91906118cc565b9091555084905061050b8684611904565b61051591906118e4565b600a5461010090046001600160a01b0316600090815260208190526040812080549091906105449084906118cc565b909155508490508561055684846118cc565b6105609190611904565b61056a91906118e4565b6006600082825461057b91906118cc565b9091555084905061058c8683611904565b61059691906118e4565b33600090815260208190526040812080549091906105b59084906118cc565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a25050505050565b6060600880546106059061193a565b80601f01602080910402602001604051908101604052809291908181526020018280546106319061193a565b801561067e5780601f106106535761010080835404028352916020019161067e565b820191906000526020600020905b81548152906001019060200180831161066157829003601f168201915b5050505050905090565b6000610695338484610f35565b5060015b92915050565b600b546001600160a01b031633146106e35760405162461bcd60e51b81526020600482015260076024820152666f70206f6e6c7960c81b6044820152606401610444565b6106ee600382611059565b61072d5760405162461bcd60e51b815260206004820152601060248201526f1859191c995cdcc8195e18db1d59195960821b6044820152606401610444565b6001600160a01b03811660009081526001602052604081205561075160038261107b565b5050565b6000610762848484611090565b6001600160a01b03841660009081526002602090815260408083203380855292529091205461079d918691610798908690611923565b610f35565b5060019392505050565b600a5461010090046001600160a01b031633146107f95760405162461bcd60e51b815260206004820152601060248201526f1bdb9b1e481bdc0818d85b8818d85b1b60821b6044820152606401610444565b600a8054610100600160a81b0319166101006001600160a01b0394851602179055600b80546001600160a01b03191691909216179055565b8061083b33610ac9565b1015801561084b57506005548111155b6108855760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a5908185b5d60aa1b6044820152606401610444565b600080610890610b44565b909250905060006108a26064856118e4565b905060006108b16008836118e4565b905060006108bf8387611923565b90506108ca33610dfc565b156109335733600090815260016020526040812080548892906108ee908490611923565b909155508490506108ff8688611904565b61090991906118e4565b3360009081526020819052604081208054909190610928908490611923565b9091555061096d9050565b8361093e8688611904565b61094891906118e4565b3360009081526020819052604081208054909190610967908490611923565b90915550505b61097782826118cc565b600560008282546109889190611923565b909155508490508561099a84846118cc565b6109a49190611904565b6109ae91906118e4565b600660008282546109bf9190611923565b909155508490506109d08684611904565b6109da91906118e4565b600a5461010090046001600160a01b031660009081526020819052604081208054909190610a099084906118cc565b925050819055508160076000828254610a2291906118cc565b9091555050604051339082156108fc029083906000818181858888f19350505050158015610a54573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a2505050505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916106959185906107989086906118cc565b6000610ad6600383611059565b15610afa57506001600160a01b038116600090815260016020526040902054610b3f565b600080610b05610b44565b6001600160a01b03861660009081526020819052604090205491935091508290610b30908390611904565b610b3a91906118e4565b925050505b919050565b60008060065460001480610b585750600554155b15610b6c5750633b9aca0090506001610cb1565b60065460055460005b610b7f60036114f4565b811015610c825782600080610b956003856114fe565b6001600160a01b03166001600160a01b03168152602001908152602001600020541180610bf057508160016000610bcd6003856114fe565b6001600160a01b03166001600160a01b0316815260200190815260200160002054115b15610c075760065460055494509450505050610cb1565b600080610c156003846114fe565b6001600160a01b03168152602081019190915260400160002054610c399084611923565b925060016000610c4a6003846114fe565b6001600160a01b03168152602081019190915260400160002054610c6e9083611923565b915080610c7a81611975565b915050610b75565b50600554600654610c9391906118e4565b821015610cab57600654600554935093505050610cb1565b90925090505b9091565b610cbe33610dfc565b15610cf95760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401610444565b600080610d04610b44565b909250905080610d148385611904565b610d1e91906118e4565b3360009081526020819052604081208054909190610d3d908490611923565b90915550819050610d4e8385611904565b610d5891906118e4565b60066000828254610d699190611923565b925050819055508260076000828254610d8291906118cc565b9091555050505050565b6060600980546106059061193a565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610695918590610798908690611923565b6000610695338484611090565b6000806000610dec610b44565b909250905081610b308286611904565b6000610699600383611059565b600b546001600160a01b03163314610e4d5760405162461bcd60e51b81526020600482015260076024820152666f70206f6e6c7960c81b6044820152606401610444565b610e58600382611059565b15610e985760405162461bcd60e51b815260206004820152601060248201526f1859191c995cdcc8195e18db1d59195960821b6044820152606401610444565b6001600160a01b03811660009081526020819052604090205415610f1257600080610ec1610b44565b6001600160a01b03851660009081526020819052604090205491935091508290610eec908390611904565b610ef691906118e4565b6001600160a01b03841660009081526001602052604090205550505b6107516003825b6000610f2e836001600160a01b03841661150a565b9392505050565b6001600160a01b038316610f975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610444565b6001600160a01b038216610ff85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610444565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03811660009081526001830160205260408120541515610f2e565b6000610f2e836001600160a01b038416611559565b6001600160a01b0383166110f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610444565b6001600160a01b0382166111565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610444565b600081116111b55760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d74206d7573742062652067726561746572207468616044820152656e207a65726f60d01b6064820152608401610444565b6000806111c0610b44565b909250905060006111d26064856118e4565b905060006111e08787611676565b9050600181600381111561120457634e487b7160e01b600052602160045260246000fd5b14156112d857826112158587611904565b61121f91906118e4565b6001600160a01b03881660009081526020819052604081208054909190611247908490611923565b9091555061125790508286611923565b6001600160a01b0387166000908152600160205260408120805490919061127f9084906118cc565b90915550839050846112918488611923565b61129b9190611904565b6112a591906118e4565b6001600160a01b038716600090815260208190526040812080549091906112cd9084906118cc565b9091555061145d9050565b60008160038111156112fa57634e487b7160e01b600052602160045260246000fd5b141561136b576001600160a01b03871660009081526001602052604081208054879290611328908490611923565b909155508390506113398587611904565b61134391906118e4565b6001600160a01b0388166000908152602081905260408120805490919061127f908490611923565b600281600381111561138d57634e487b7160e01b600052602160045260246000fd5b14156113cc576001600160a01b038716600090815260016020526040812080548792906113bb908490611923565b909155508390506112158587611904565b826113d78587611904565b6113e191906118e4565b6001600160a01b03881660009081526020819052604081208054909190611409908490611923565b909155508390508461141b8488611923565b6114259190611904565b61142f91906118e4565b6001600160a01b038716600090815260208190526040812080549091906114579084906118cc565b90915550505b826114688584611904565b61147291906118e4565b600660008282546114839190611923565b92505081905550816007600082825461149c91906118cc565b90915550506001600160a01b038087169088167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114da8589611923565b60405190815260200160405180910390a350505050505050565b6000610699825490565b6000610f2e8383611706565b600081815260018301602052604081205461155157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610699565b506000610699565b6000818152600183016020526040812054801561166c57600061157d600183611923565b855490915060009061159190600190611923565b905060008660000182815481106115b857634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106115e957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001556116008360016118cc565b6000828152600189016020526040902055865487908061163057634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610699565b6000915050610699565b600080611684600385611059565b90506000611693600385611059565b90508180156116a0575080155b156116ae57600092506116fe565b811580156116b95750805b156116c757600192506116fe565b811580156116d3575080155b156116e157600392506116fe565b8180156116eb5750805b156116f957600292506116fe565b600392505b505092915050565b815460009082106117645760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610444565b82600001828154811061178757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b80356001600160a01b0381168114610b3f57600080fd5b6000602082840312156117c2578081fd5b610f2e8261179a565b600080604083850312156117dd578081fd5b6117e68361179a565b91506117f46020840161179a565b90509250929050565b600080600060608486031215611811578081fd5b61181a8461179a565b92506118286020850161179a565b9150604084013590509250925092565b6000806040838503121561184a578182fd5b6118538361179a565b946020939093013593505050565b600060208284031215611872578081fd5b5035919050565b6000602080835283518082850152825b818110156118a557858101830151858201604001528201611889565b818111156118b65783604083870101525b50601f01601f1916929092016040019392505050565b600082198211156118df576118df611990565b500190565b6000826118ff57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561191e5761191e611990565b500290565b60008282101561193557611935611990565b500390565b600181811c9082168061194e57607f821691505b6020821081141561196f57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561198957611989611990565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212200d521697d6e725482bdd76a2df9bf88279f042a93e0783dcdde9430263647bca64736f6c63430008030033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb14610332578063b9eb6bda14610352578063cba0e99614610372578063d0e30db014610392578063dd62ed3e1461039a578063e57f14e1146103e05761013d565b806370a0823114610293578063771282f6146102b35780638cf882a4146102dd57806395d89b41146102fd578063a457c2d7146103125761013d565b806323b872dd116100f257806323b872dd146101f15780632b414264146102115780632e1a7d4d14610231578063313ce5671461025157806339509351146102735761013d565b806306fdde0314610142578063095ea7b31461016d57806313114a9d1461019d57806316a2f82a146101bc57806318160ddd146101dc5761013d565b3661013d5761013b610400565b005b600080fd5b34801561014e57600080fd5b506101576105f6565b6040516101649190611879565b60405180910390f35b34801561017957600080fd5b5061018d610188366004611838565b610688565b6040519015158152602001610164565b3480156101a957600080fd5b506007545b604051908152602001610164565b3480156101c857600080fd5b5061013b6101d73660046117b1565b61069f565b3480156101e857600080fd5b506005546101ae565b3480156101fd57600080fd5b5061018d61020c3660046117fd565b610755565b34801561021d57600080fd5b5061013b61022c3660046117cb565b6107a7565b34801561023d57600080fd5b5061013b61024c366004611861565b610831565b34801561025d57600080fd5b50600a5460405160ff9091168152602001610164565b34801561027f57600080fd5b5061018d61028e366004611838565b610a92565b34801561029f57600080fd5b506101ae6102ae3660046117b1565b610ac9565b3480156102bf57600080fd5b506102c8610b44565b60408051928352602083019190915201610164565b3480156102e957600080fd5b5061013b6102f8366004611861565b610cb5565b34801561030957600080fd5b50610157610d8c565b34801561031e57600080fd5b5061018d61032d366004611838565b610d9b565b34801561033e57600080fd5b5061018d61034d366004611838565b610dd2565b34801561035e57600080fd5b506101ae61036d366004611861565b610ddf565b34801561037e57600080fd5b5061018d61038d3660046117b1565b610dfc565b61013b610400565b3480156103a657600080fd5b506101ae6103b53660046117cb565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156103ec57600080fd5b5061013b6103fb3660046117b1565b610e09565b6000341161044d5760405162461bcd60e51b815260206004820152601560248201527463616e2774206465706f736974206e6f7468696e6760581b60448201526064015b60405180910390fd5b600080610458610b44565b91509150346005600082825461046e91906118cc565b90915550600090506104816064346118e4565b90506000610490600a836118e4565b905060008261049f57346104a9565b6104a98334611923565b90506104b433610dfc565b156104e8576104c38334611923565b33600090815260016020526040812080549091906104e29084906118cc565b90915550505b82600760008282546104fa91906118cc565b9091555084905061050b8684611904565b61051591906118e4565b600a5461010090046001600160a01b0316600090815260208190526040812080549091906105449084906118cc565b909155508490508561055684846118cc565b6105609190611904565b61056a91906118e4565b6006600082825461057b91906118cc565b9091555084905061058c8683611904565b61059691906118e4565b33600090815260208190526040812080549091906105b59084906118cc565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a25050505050565b6060600880546106059061193a565b80601f01602080910402602001604051908101604052809291908181526020018280546106319061193a565b801561067e5780601f106106535761010080835404028352916020019161067e565b820191906000526020600020905b81548152906001019060200180831161066157829003601f168201915b5050505050905090565b6000610695338484610f35565b5060015b92915050565b600b546001600160a01b031633146106e35760405162461bcd60e51b81526020600482015260076024820152666f70206f6e6c7960c81b6044820152606401610444565b6106ee600382611059565b61072d5760405162461bcd60e51b815260206004820152601060248201526f1859191c995cdcc8195e18db1d59195960821b6044820152606401610444565b6001600160a01b03811660009081526001602052604081205561075160038261107b565b5050565b6000610762848484611090565b6001600160a01b03841660009081526002602090815260408083203380855292529091205461079d918691610798908690611923565b610f35565b5060019392505050565b600a5461010090046001600160a01b031633146107f95760405162461bcd60e51b815260206004820152601060248201526f1bdb9b1e481bdc0818d85b8818d85b1b60821b6044820152606401610444565b600a8054610100600160a81b0319166101006001600160a01b0394851602179055600b80546001600160a01b03191691909216179055565b8061083b33610ac9565b1015801561084b57506005548111155b6108855760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a5908185b5d60aa1b6044820152606401610444565b600080610890610b44565b909250905060006108a26064856118e4565b905060006108b16008836118e4565b905060006108bf8387611923565b90506108ca33610dfc565b156109335733600090815260016020526040812080548892906108ee908490611923565b909155508490506108ff8688611904565b61090991906118e4565b3360009081526020819052604081208054909190610928908490611923565b9091555061096d9050565b8361093e8688611904565b61094891906118e4565b3360009081526020819052604081208054909190610967908490611923565b90915550505b61097782826118cc565b600560008282546109889190611923565b909155508490508561099a84846118cc565b6109a49190611904565b6109ae91906118e4565b600660008282546109bf9190611923565b909155508490506109d08684611904565b6109da91906118e4565b600a5461010090046001600160a01b031660009081526020819052604081208054909190610a099084906118cc565b925050819055508160076000828254610a2291906118cc565b9091555050604051339082156108fc029083906000818181858888f19350505050158015610a54573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a2505050505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916106959185906107989086906118cc565b6000610ad6600383611059565b15610afa57506001600160a01b038116600090815260016020526040902054610b3f565b600080610b05610b44565b6001600160a01b03861660009081526020819052604090205491935091508290610b30908390611904565b610b3a91906118e4565b925050505b919050565b60008060065460001480610b585750600554155b15610b6c5750633b9aca0090506001610cb1565b60065460055460005b610b7f60036114f4565b811015610c825782600080610b956003856114fe565b6001600160a01b03166001600160a01b03168152602001908152602001600020541180610bf057508160016000610bcd6003856114fe565b6001600160a01b03166001600160a01b0316815260200190815260200160002054115b15610c075760065460055494509450505050610cb1565b600080610c156003846114fe565b6001600160a01b03168152602081019190915260400160002054610c399084611923565b925060016000610c4a6003846114fe565b6001600160a01b03168152602081019190915260400160002054610c6e9083611923565b915080610c7a81611975565b915050610b75565b50600554600654610c9391906118e4565b821015610cab57600654600554935093505050610cb1565b90925090505b9091565b610cbe33610dfc565b15610cf95760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401610444565b600080610d04610b44565b909250905080610d148385611904565b610d1e91906118e4565b3360009081526020819052604081208054909190610d3d908490611923565b90915550819050610d4e8385611904565b610d5891906118e4565b60066000828254610d699190611923565b925050819055508260076000828254610d8291906118cc565b9091555050505050565b6060600980546106059061193a565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610695918590610798908690611923565b6000610695338484611090565b6000806000610dec610b44565b909250905081610b308286611904565b6000610699600383611059565b600b546001600160a01b03163314610e4d5760405162461bcd60e51b81526020600482015260076024820152666f70206f6e6c7960c81b6044820152606401610444565b610e58600382611059565b15610e985760405162461bcd60e51b815260206004820152601060248201526f1859191c995cdcc8195e18db1d59195960821b6044820152606401610444565b6001600160a01b03811660009081526020819052604090205415610f1257600080610ec1610b44565b6001600160a01b03851660009081526020819052604090205491935091508290610eec908390611904565b610ef691906118e4565b6001600160a01b03841660009081526001602052604090205550505b6107516003825b6000610f2e836001600160a01b03841661150a565b9392505050565b6001600160a01b038316610f975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610444565b6001600160a01b038216610ff85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610444565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03811660009081526001830160205260408120541515610f2e565b6000610f2e836001600160a01b038416611559565b6001600160a01b0383166110f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610444565b6001600160a01b0382166111565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610444565b600081116111b55760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d74206d7573742062652067726561746572207468616044820152656e207a65726f60d01b6064820152608401610444565b6000806111c0610b44565b909250905060006111d26064856118e4565b905060006111e08787611676565b9050600181600381111561120457634e487b7160e01b600052602160045260246000fd5b14156112d857826112158587611904565b61121f91906118e4565b6001600160a01b03881660009081526020819052604081208054909190611247908490611923565b9091555061125790508286611923565b6001600160a01b0387166000908152600160205260408120805490919061127f9084906118cc565b90915550839050846112918488611923565b61129b9190611904565b6112a591906118e4565b6001600160a01b038716600090815260208190526040812080549091906112cd9084906118cc565b9091555061145d9050565b60008160038111156112fa57634e487b7160e01b600052602160045260246000fd5b141561136b576001600160a01b03871660009081526001602052604081208054879290611328908490611923565b909155508390506113398587611904565b61134391906118e4565b6001600160a01b0388166000908152602081905260408120805490919061127f908490611923565b600281600381111561138d57634e487b7160e01b600052602160045260246000fd5b14156113cc576001600160a01b038716600090815260016020526040812080548792906113bb908490611923565b909155508390506112158587611904565b826113d78587611904565b6113e191906118e4565b6001600160a01b03881660009081526020819052604081208054909190611409908490611923565b909155508390508461141b8488611923565b6114259190611904565b61142f91906118e4565b6001600160a01b038716600090815260208190526040812080549091906114579084906118cc565b90915550505b826114688584611904565b61147291906118e4565b600660008282546114839190611923565b92505081905550816007600082825461149c91906118cc565b90915550506001600160a01b038087169088167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114da8589611923565b60405190815260200160405180910390a350505050505050565b6000610699825490565b6000610f2e8383611706565b600081815260018301602052604081205461155157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610699565b506000610699565b6000818152600183016020526040812054801561166c57600061157d600183611923565b855490915060009061159190600190611923565b905060008660000182815481106115b857634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106115e957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001556116008360016118cc565b6000828152600189016020526040902055865487908061163057634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610699565b6000915050610699565b600080611684600385611059565b90506000611693600385611059565b90508180156116a0575080155b156116ae57600092506116fe565b811580156116b95750805b156116c757600192506116fe565b811580156116d3575080155b156116e157600392506116fe565b8180156116eb5750805b156116f957600292506116fe565b600392505b505092915050565b815460009082106117645760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610444565b82600001828154811061178757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b80356001600160a01b0381168114610b3f57600080fd5b6000602082840312156117c2578081fd5b610f2e8261179a565b600080604083850312156117dd578081fd5b6117e68361179a565b91506117f46020840161179a565b90509250929050565b600080600060608486031215611811578081fd5b61181a8461179a565b92506118286020850161179a565b9150604084013590509250925092565b6000806040838503121561184a578182fd5b6118538361179a565b946020939093013593505050565b600060208284031215611872578081fd5b5035919050565b6000602080835283518082850152825b818110156118a557858101830151858201604001528201611889565b818111156118b65783604083870101525b50601f01601f1916929092016040019392505050565b600082198211156118df576118df611990565b500190565b6000826118ff57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561191e5761191e611990565b500290565b60008282101561193557611935611990565b500390565b600181811c9082168061194e57607f821691505b6020821081141561196f57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561198957611989611990565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212200d521697d6e725482bdd76a2df9bf88279f042a93e0783dcdde9430263647bca64736f6c63430008030033

Deployed Bytecode Sourcemap

18047:9157:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18853:9;:7;:9::i;:::-;18047:9157;;;;;19115:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20098:159;;;;;;;;;;-1:-1:-1;20098:159:0;;;;;:::i;:::-;;:::i;:::-;;;1640:14:1;;1633:22;1615:41;;1603:2;1588:18;20098:159:0;1570:92:1;21122:88:0;;;;;;;;;;-1:-1:-1;21191:11:0;;21122:88;;;6904:25:1;;;6892:2;6877:18;21122:88:0;6859:76:1;23356:271:0;;;;;;;;;;-1:-1:-1;23356:271:0;;;;;:::i;:::-;;:::i;19392:98::-;;;;;;;;;;-1:-1:-1;19472:10:0;;19392:98;;20265:262;;;;;;;;;;-1:-1:-1;20265:262:0;;;;;:::i;:::-;;:::i;27038:163::-;;;;;;;;;;-1:-1:-1;27038:163:0;;;;;:::i;:::-;;:::i;21882:749::-;;;;;;;;;;-1:-1:-1;21882:749:0;;;;;:::i;:::-;;:::i;19301:83::-;;;;;;;;;;-1:-1:-1;19367:9:0;;19301:83;;19367:9;;;;7335:36:1;;7323:2;7308:18;19301:83:0;7290:87:1;20535:211:0;;;;;;;;;;-1:-1:-1;20535:211:0;;;;;:::i;:::-;;:::i;19498:268::-;;;;;;;;;;-1:-1:-1;19498:268:0;;;;;:::i;:::-;;:::i;26305:721::-;;;;;;;;;;;;;:::i;:::-;;;;7114:25:1;;;7170:2;7155:18;;7148:34;;;;7087:18;26305:721:0;7069:119:1;22643:283:0;;;;;;;;;;-1:-1:-1;22643:283:0;;;;;:::i;:::-;;:::i;19206:87::-;;;;;;;;;;;;;:::i;20754:221::-;;;;;;;;;;-1:-1:-1;20754:221:0;;;;;:::i;:::-;;:::i;19774:165::-;;;;;;;;;;-1:-1:-1;19774:165:0;;;;;:::i;:::-;;:::i;23639:171::-;;;;;;;;;;-1:-1:-1;23639:171:0;;;;;:::i;:::-;;:::i;20983:131::-;;;;;;;;;;-1:-1:-1;20983:131:0;;;;;:::i;:::-;;:::i;21222:652::-;;;:::i;19947:143::-;;;;;;;;;;-1:-1:-1;19947:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;20055:18:0;;;20028:7;20055:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19947:143;22934:414;;;;;;;;;;-1:-1:-1;22934:414:0;;;;;:::i;:::-;;:::i;21222:652::-;21287:1;21275:9;:13;21267:47;;;;-1:-1:-1;;;21267:47:0;;3284:2:1;21267:47:0;;;3266:21:1;3323:2;3303:18;;;3296:30;-1:-1:-1;;;3342:18:1;;;3335:51;3403:18;;21267:47:0;;;;;;;;;21326:9;21337;21350:15;:13;:15::i;:::-;21325:40;;;;21390:9;21376:10;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;21410:11:0;;-1:-1:-1;21424:15:0;21436:3;21424:9;:15;:::i;:::-;21410:29;-1:-1:-1;21451:10:0;21464:8;21470:2;21410:29;21464:8;:::i;:::-;21451:21;-1:-1:-1;21483:11:0;21497:8;:42;;21530:9;21497:42;;;21509:17;21522:3;21509:9;:17;:::i;:::-;21483:56;;21553:22;21564:10;21553;:22::i;:::-;21550:97;;;21619:15;21631:3;21619:9;:15;:::i;:::-;21603:10;21591:23;;;;:11;:23;;;;;:44;;:23;;;:44;;;;;:::i;:::-;;;;-1:-1:-1;;21550:97:0;21673:3;21658:11;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;21718:1:0;;-1:-1:-1;21708:6:0;21713:1;21708:2;:6;:::i;:::-;21707:12;;;;:::i;:::-;21699:2;;;;;-1:-1:-1;;;;;21699:2:0;21687:11;:15;;;;;;;;;;:33;;:15;;:11;:33;;;;;:::i;:::-;;;;-1:-1:-1;21765:1:0;;-1:-1:-1;21760:1:0;21748:8;21754:2;21748:3;:8;:::i;:::-;21747:14;;;;:::i;:::-;21746:20;;;;:::i;:::-;21731:10;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;21818:1:0;;-1:-1:-1;21807:7:0;21813:1;21807:3;:7;:::i;:::-;21806:13;;;;:::i;:::-;21790:10;21778:11;:23;;;;;;;;;;:42;;:23;;:11;:42;;;;;:::i;:::-;;;;-1:-1:-1;;21836:30:0;;21856:9;6904:25:1;;21844:10:0;;21836:30;;6892:2:1;6877:18;21836:30:0;;;;;;;21222:652;;;;;:::o;19115:83::-;19152:13;19185:5;19178:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19115:83;:::o;20098:159::-;20173:4;20190:37;20199:10;20211:7;20220:6;20190:8;:37::i;:::-;-1:-1:-1;20245:4:0;20098:159;;;;;:::o;23356:271::-;23438:3;;-1:-1:-1;;;;;23438:3:0;23424:10;:17;23416:37;;;;-1:-1:-1;;;23416:37:0;;4722:2:1;23416:37:0;;;4704:21:1;4761:1;4741:18;;;4734:29;-1:-1:-1;;;4779:18:1;;;4772:37;4826:18;;23416:37:0;4694:156:1;23416:37:0;23472:41;23495:8;23505:7;23472:22;:41::i;:::-;23464:70;;;;-1:-1:-1;;;23464:70:0;;4037:2:1;23464:70:0;;;4019:21:1;4076:2;4056:18;;;4049:30;-1:-1:-1;;;4095:18:1;;;4088:46;4151:18;;23464:70:0;4009:166:1;23464:70:0;-1:-1:-1;;;;;23545:20:0;;23568:1;23545:20;;;:11;:20;;;;;:24;23580:39;23601:8;23557:7;23580:20;:39::i;:::-;;23356:271;:::o;20265:262::-;20363:4;20380:36;20390:6;20398:9;20409:6;20380:9;:36::i;:::-;-1:-1:-1;;;;;20456:19:0;;;;;;:11;:19;;;;;;;;20444:10;20456:31;;;;;;;;;20427:70;;20436:6;;20456:40;;20490:6;;20456:40;:::i;:::-;20427:8;:70::i;:::-;-1:-1:-1;20515:4:0;20265:262;;;;;:::o;27038:163::-;27126:2;;;;;-1:-1:-1;;;;;27126:2:0;27112:10;:16;27104:45;;;;-1:-1:-1;;;27104:45:0;;5803:2:1;27104:45:0;;;5785:21:1;5842:2;5822:18;;;5815:30;-1:-1:-1;;;5861:18:1;;;5854:46;5917:18;;27104:45:0;5775:166:1;27104:45:0;27160:2;:10;;-1:-1:-1;;;;;;27160:10:0;;-1:-1:-1;;;;;27160:10:0;;;;;;;27181:3;:12;;-1:-1:-1;;;;;;27181:12:0;;;;;;;;27038:163::o;21882:749::-;21961:3;21936:21;21946:10;21936:9;:21::i;:::-;:28;;:52;;;;-1:-1:-1;19472:10:0;;21968:3;:20;;21936:52;21928:76;;;;-1:-1:-1;;;21928:76:0;;5057:2:1;21928:76:0;;;5039:21:1;5096:2;5076:18;;;5069:30;-1:-1:-1;;;5115:18:1;;;5108:41;5166:18;;21928:76:0;5029:161:1;21928:76:0;22016:9;22027;22040:15;:13;:15::i;:::-;22015:40;;-1:-1:-1;22015:40:0;-1:-1:-1;22066:11:0;22080:9;22086:3;22080;:9;:::i;:::-;22066:23;-1:-1:-1;22100:10:0;22113:7;22119:1;22066:23;22113:7;:::i;:::-;22100:20;-1:-1:-1;22131:11:0;22145:9;22151:3;22145;:9;:::i;:::-;22131:23;;22168:22;22179:10;22168;:22::i;:::-;22165:216;;;22219:10;22207:23;;;;:11;:23;;;;;:30;;22234:3;;22207:23;:30;;22234:3;;22207:30;:::i;:::-;;;;-1:-1:-1;22292:1:0;;-1:-1:-1;22281:7:0;22287:1;22281:3;:7;:::i;:::-;22280:13;;;;:::i;:::-;22264:10;22252:11;:23;;;;;;;;;;:42;;:23;;:11;:42;;;;;:::i;:::-;;;;-1:-1:-1;22165:216:0;;-1:-1:-1;22165:216:0;;22367:1;22356:7;22362:1;22356:3;:7;:::i;:::-;22355:13;;;;:::i;:::-;22339:10;22327:11;:23;;;;;;;;;;:42;;:23;;:11;:42;;;;;:::i;:::-;;;;-1:-1:-1;;22165:216:0;22406:8;22412:2;22406:3;:8;:::i;:::-;22391:10;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;22461:1:0;;-1:-1:-1;22455:1:0;22443:8;22449:2;22443:3;:8;:::i;:::-;22442:14;;;;:::i;:::-;22441:21;;;;:::i;:::-;22426:10;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;22505:1:0;;-1:-1:-1;22495:6:0;22500:1;22495:2;:6;:::i;:::-;22494:12;;;;:::i;:::-;22486:2;;;;;-1:-1:-1;;;;;22486:2:0;22474:11;:15;;;;;;;;;;:33;;:15;;:11;:33;;;;;:::i;:::-;;;;;;;;22533:2;22518:11;;:17;;;;;;;:::i;:::-;;;;-1:-1:-1;;22546:33:0;;22554:10;;22546:33;;;;;22575:3;;22546:33;;;;22575:3;22554:10;22546:33;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22596:27:0;;6904:25:1;;;22607:10:0;;22596:27;;6892:2:1;6877:18;22596:27:0;;;;;;;21882:749;;;;;;:::o;20535:211::-;20649:10;20623:4;20670:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20670:32:0;;;;;;;;;;20623:4;;20640:76;;20661:7;;20670:45;;20705:10;;20670:45;:::i;19498:268::-;19564:7;19588:41;19611:8;19621:7;19588:22;:41::i;:::-;19584:74;;;-1:-1:-1;;;;;;19638:20:0;;;;;;:11;:20;;;;;;19631:27;;19584:74;19670:9;19681;19694:15;:13;:15::i;:::-;-1:-1:-1;;;;;19728:20:0;;:11;:20;;;;;;;;;;;19669:40;;-1:-1:-1;19669:40:0;-1:-1:-1;19669:40:0;;19728:24;;19669:40;;19728:24;:::i;:::-;19727:31;;;;:::i;:::-;19720:38;;;;19498:268;;;;:::o;26305:721::-;26350:7;26359;26382:10;;26396:1;26382:15;:34;;;-1:-1:-1;26401:10:0;;:15;26382:34;26379:61;;;-1:-1:-1;26426:10:0;;-1:-1:-1;26438:1:0;26418:22;;26379:61;26469:10;;26508;;26451:15;26529:373;26553:30;26574:8;26553:20;:30::i;:::-;26549:1;:34;26529:373;;;26654:7;26609:11;:42;26621:29;26638:8;26648:1;26621:16;:29::i;:::-;-1:-1:-1;;;;;26609:42:0;-1:-1:-1;;;;;26609:42:0;;;;;;;;;;;;;:52;:108;;;;26710:7;26665:11;:42;26677:29;26694:8;26704:1;26677:16;:29::i;:::-;-1:-1:-1;;;;;26665:42:0;-1:-1:-1;;;;;26665:42:0;;;;;;;;;;;;;:52;26609:108;26605:145;;;26727:10;;26739;;26719:31;;;;;;;;;26605:145;26777:11;:42;26789:29;26806:8;26816:1;26789:16;:29::i;:::-;-1:-1:-1;;;;;26777:42:0;;;;;;;;;;;;-1:-1:-1;26777:42:0;;26765:55;;;;:::i;:::-;;;26847:11;:42;26859:29;26876:8;26886:1;26859:16;:29::i;:::-;-1:-1:-1;;;;;26847:42:0;;;;;;;;;;;;-1:-1:-1;26847:42:0;;26835:55;;;;:::i;:::-;;-1:-1:-1;26585:3:0;;;;:::i;:::-;;;;26529:373;;;;26939:10;;26926;;:23;;;;:::i;:::-;26916:7;:33;26912:70;;;26959:10;;26971;;26951:31;;;;;;;;26912:70;27001:7;;-1:-1:-1;27010:7:0;-1:-1:-1;26305:721:0;;;:::o;22643:283::-;22707:22;22718:10;22707;:22::i;:::-;22706:23;22698:47;;;;-1:-1:-1;;;22698:47:0;;4382:2:1;22698:47:0;;;4364:21:1;4421:2;4401:18;;;4394:30;-1:-1:-1;;;4440:18:1;;;4433:41;4491:18;;22698:47:0;4354:161:1;22698:47:0;22757:9;22768;22781:15;:13;:15::i;:::-;22756:40;;-1:-1:-1;22756:40:0;-1:-1:-1;22756:40:0;22836:7;22756:40;22836:3;:7;:::i;:::-;22835:13;;;;:::i;:::-;22819:10;22807:11;:23;;;;;;;;;;:42;;:23;;:11;:42;;;;;:::i;:::-;;;;-1:-1:-1;22887:1:0;;-1:-1:-1;22876:7:0;22882:1;22876:3;:7;:::i;:::-;22875:13;;;;:::i;:::-;22860:10;;:29;;;;;;;:::i;:::-;;;;;;;;22915:3;22900:11;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;22643:283:0:o;19206:87::-;19245:13;19278:7;19271:14;;;;;:::i;20754:221::-;20873:10;20847:4;20894:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20894:32:0;;;;;;;;;;20847:4;;20864:81;;20885:7;;20894:50;;20929:15;;20894:50;:::i;19774:165::-;19852:4;19869:40;19879:10;19891:9;19902:6;19869:9;:40::i;23639:171::-;23704:7;23725:9;23736;23749:15;:13;:15::i;:::-;23724:40;;-1:-1:-1;23724:40:0;-1:-1:-1;23724:40:0;23783:14;23724:40;23783:10;:14;:::i;20983:131::-;21041:4;21065:41;21088:8;21098:7;21065:22;:41::i;22934:414::-;23018:3;;-1:-1:-1;;;;;23018:3:0;23004:10;:17;22996:37;;;;-1:-1:-1;;;22996:37:0;;4722:2:1;22996:37:0;;;4704:21:1;4761:1;4741:18;;;4734:29;-1:-1:-1;;;4779:18:1;;;4772:37;4826:18;;22996:37:0;4694:156:1;22996:37:0;23053:41;23076:8;23086:7;23053:22;:41::i;:::-;23052:42;23044:71;;;;-1:-1:-1;;;23044:71:0;;4037:2:1;23044:71:0;;;4019:21:1;4076:2;4056:18;;;4049:30;-1:-1:-1;;;4095:18:1;;;4088:46;4151:18;;23044:71:0;4009:166:1;23044:71:0;-1:-1:-1;;;;;23129:20:0;;23152:1;23129:20;;;;;;;;;;;:24;23126:168;;23171:9;23182;23195:15;:13;:15::i;:::-;-1:-1:-1;;;;;23249:20:0;;:11;:20;;;;;;;;;;;23170:40;;-1:-1:-1;23170:40:0;-1:-1:-1;23170:40:0;;23249:26;;23170:40;;23249:26;:::i;:::-;23248:34;;;;:::i;:::-;-1:-1:-1;;;;;23225:20:0;;;;;;:11;:20;;;;;:57;-1:-1:-1;;23126:168:0;23304:36;23322:8;23332:7;5980:152;6050:4;6074:50;6079:3;-1:-1:-1;;;;;6099:23:0;;6074:4;:50::i;:::-;6067:57;5980:152;-1:-1:-1;;;5980:152:0:o;23820:337::-;-1:-1:-1;;;;;23913:19:0;;23905:68;;;;-1:-1:-1;;;23905:68:0;;6148:2:1;23905:68:0;;;6130:21:1;6187:2;6167:18;;;6160:30;6226:34;6206:18;;;6199:62;-1:-1:-1;;;6277:18:1;;;6270:34;6321:19;;23905:68:0;6120:226:1;23905:68:0;-1:-1:-1;;;;;23992:21:0;;23984:68;;;;-1:-1:-1;;;23984:68:0;;3634:2:1;23984:68:0;;;3616:21:1;3673:2;3653:18;;;3646:30;3712:34;3692:18;;;3685:62;-1:-1:-1;;;3763:18:1;;;3756:32;3805:19;;23984:68:0;3606:224:1;23984:68:0;-1:-1:-1;;;;;24065:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24117:32;;6904:25:1;;;24117:32:0;;6877:18:1;24117:32:0;;;;;;;23820:337;;;:::o;6552:167::-;-1:-1:-1;;;;;6686:23:0;;6632:4;3361:19;;;:12;;;:19;;;;;;:24;;6656:55;3264:129;6308:158;6381:4;6405:53;6413:3;-1:-1:-1;;;;;6433:23:0;;6405:7;:53::i;24898:1399::-;-1:-1:-1;;;;;24992:20:0;;24984:70;;;;-1:-1:-1;;;24984:70:0;;5397:2:1;24984:70:0;;;5379:21:1;5436:2;5416:18;;;5409:30;5475:34;5455:18;;;5448:62;-1:-1:-1;;;5526:18:1;;;5519:35;5571:19;;24984:70:0;5369:227:1;24984:70:0;-1:-1:-1;;;;;25073:23:0;;25065:71;;;;-1:-1:-1;;;25065:71:0;;2880:2:1;25065:71:0;;;2862:21:1;2919:2;2899:18;;;2892:30;2958:34;2938:18;;;2931:62;-1:-1:-1;;;3009:18:1;;;3002:33;3052:19;;25065:71:0;2852:225:1;25065:71:0;25161:1;25155:3;:7;25147:58;;;;-1:-1:-1;;;25147:58:0;;6553:2:1;25147:58:0;;;6535:21:1;6592:2;6572:18;;;6565:30;6631:34;6611:18;;;6604:62;-1:-1:-1;;;6682:18:1;;;6675:36;6728:19;;25147:58:0;6525:228:1;25147:58:0;25217:9;25228;25241:15;:13;:15::i;:::-;25216:40;;-1:-1:-1;25216:40:0;-1:-1:-1;25267:11:0;25281:9;25287:3;25281;:9;:::i;:::-;25267:23;;25301:9;25313:27;25322:6;25330:9;25313:8;:27::i;:::-;25301:39;-1:-1:-1;25361:17:0;25355:2;:23;;;;;;-1:-1:-1;;;25355:23:0;;;;;;;;;;25351:815;;;25431:1;25420:7;25426:1;25420:3;:7;:::i;:::-;25419:13;;;;:::i;:::-;-1:-1:-1;;;;;25395:19:0;;:11;:19;;;;;;;;;;:38;;:19;;:11;:38;;;;;:::i;:::-;;;;-1:-1:-1;25475:9:0;;-1:-1:-1;25481:3:0;25475;:9;:::i;:::-;-1:-1:-1;;;;;25448:22:0;;;;;;:11;:22;;;;;:37;;:22;;;:37;;;;;:::i;:::-;;;;-1:-1:-1;25547:1:0;;-1:-1:-1;25542:1:0;25529:9;25535:3;25529;:9;:::i;:::-;25528:15;;;;:::i;:::-;25527:21;;;;:::i;:::-;-1:-1:-1;;;;;25500:22:0;;:11;:22;;;;;;;;;;:49;;:22;;:11;:49;;;;;:::i;:::-;;;;-1:-1:-1;25351:815:0;;-1:-1:-1;25351:815:0;;25577:19;25571:2;:25;;;;;;-1:-1:-1;;;25571:25:0;;;;;;;;;;25567:599;;;-1:-1:-1;;;;;25613:19:0;;;;;;:11;:19;;;;;:28;;25637:3;;25613:19;:28;;25637:3;;25613:28;:::i;:::-;;;;-1:-1:-1;25692:1:0;;-1:-1:-1;25681:7:0;25687:1;25681:3;:7;:::i;:::-;25680:13;;;;:::i;:::-;-1:-1:-1;;;;;25656:19:0;;:11;:19;;;;;;;;;;:38;;:19;;:11;:38;;;;;:::i;25567:599::-;25786:19;25780:2;:25;;;;;;-1:-1:-1;;;25780:25:0;;;;;;;;;;25776:390;;;-1:-1:-1;;;;;25822:19:0;;;;;;:11;:19;;;;;:28;;25846:3;;25822:19;:28;;25846:3;;25822:28;:::i;:::-;;;;-1:-1:-1;25901:1:0;;-1:-1:-1;25890:7:0;25896:1;25890:3;:7;:::i;25776:390::-;26088:1;26077:7;26083:1;26077:3;:7;:::i;:::-;26076:13;;;;:::i;:::-;-1:-1:-1;;;;;26052:19:0;;:11;:19;;;;;;;;;;:38;;:19;;:11;:38;;;;;:::i;:::-;;;;-1:-1:-1;26152:1:0;;-1:-1:-1;26147:1:0;26134:9;26140:3;26134;:9;:::i;:::-;26133:15;;;;:::i;:::-;26132:21;;;;:::i;:::-;-1:-1:-1;;;;;26105:22:0;;:11;:22;;;;;;;;;;:49;;:22;;:11;:49;;;;;:::i;:::-;;;;-1:-1:-1;;25776:390:0;26204:1;26193:7;26199:1;26193:3;:7;:::i;:::-;26192:13;;;;:::i;:::-;26176:10;;:30;;;;;;;:::i;:::-;;;;;;;;26232:3;26217:11;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;26251:38:0;;;;;;;26279:9;26285:3;26279;:9;:::i;:::-;26251:38;;6904:25:1;;;6892:2;6877:18;26251:38:0;;;;;;;24898:1399;;;;;;;:::o;6805:117::-;6868:7;6895:19;6903:3;3562:18;;3479:109;7266:158;7340:7;7391:22;7395:3;7407:5;7391:3;:22::i;1044:414::-;1107:4;3361:19;;;:12;;;:19;;;;;;1124:327;;-1:-1:-1;1167:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;1350:18;;1328:19;;;:12;;;:19;;;;;;:40;;;;1383:11;;1124:327;-1:-1:-1;1434:5:0;1427:12;;1634:1544;1700:4;1839:19;;;:12;;;:19;;;;;;1875:15;;1871:1300;;2237:21;2261:14;2274:1;2261:10;:14;:::i;:::-;2310:18;;2237:38;;-1:-1:-1;2290:17:0;;2310:22;;2331:1;;2310:22;:::i;:::-;2290:42;;2577:17;2597:3;:11;;2609:9;2597:22;;;;;;-1:-1:-1;;;2597:22:0;;;;;;;;;;;;;;;;;2577:42;;2743:9;2714:3;:11;;2726:13;2714:26;;;;;;-1:-1:-1;;;2714:26:0;;;;;;;;;;;;;;;;;;:38;2846:17;:13;2862:1;2846:17;:::i;:::-;2820:23;;;;:12;;;:23;;;;;:43;2972:17;;2820:3;;2972:17;;;-1:-1:-1;;;2972:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;3067:3;:12;;:19;3080:5;3067:19;;;;;;;;;;;3060:26;;;3110:4;3103:11;;;;;;;;1871:1300;3154:5;3147:12;;;;;24165:727;24241:8;24262:21;24286:40;24309:8;24319:6;24286:22;:40::i;:::-;24262:64;;24337:24;24364:43;24387:8;24397:9;24364:22;:43::i;:::-;24337:70;;24422:16;:40;;;;;24443:19;24442:20;24422:40;24418:448;;;24483:19;24479:23;;24418:448;;;24525:16;24524:17;:40;;;;;24545:19;24524:40;24520:346;;;24585:17;24581:21;;24520:346;;;24625:16;24624:17;:41;;;;;24646:19;24645:20;24624:41;24620:246;;;24686:15;24682:19;;24620:246;;;24723:16;:39;;;;;24743:19;24723:39;24719:147;;;24783:19;24779:23;;24719:147;;;24839:15;24835:19;;24719:147;24876:8;;24165:727;;;;:::o;3932:204::-;4027:18;;3999:7;;4027:26;-1:-1:-1;4019:73:0;;;;-1:-1:-1;;;4019:73:0;;2477:2:1;4019:73:0;;;2459:21:1;2516:2;2496:18;;;2489:30;2555:34;2535:18;;;2528:62;-1:-1:-1;;;2606:18:1;;;2599:32;2648:19;;4019:73:0;2449:224:1;4019:73:0;4110:3;:11;;4122:5;4110:18;;;;;;-1:-1:-1;;;4110:18:0;;;;;;;;;;;;;;;;;4103:25;;3932:204;;;;:::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;1667:603::-;;1808:2;1837;1826:9;1819:21;1869:6;1863:13;1912:6;1907:2;1896:9;1892:18;1885:34;1937:4;1950:140;1964:6;1961:1;1958:13;1950:140;;;2059:14;;;2055:23;;2049:30;2025:17;;;2044:2;2021:26;2014:66;1979:10;;1950:140;;;2108:6;2105:1;2102:13;2099:2;;;2178:4;2173:2;2164:6;2153:9;2149:22;2145:31;2138:45;2099:2;-1:-1:-1;2254:2:1;2233:15;-1:-1:-1;;2229:29:1;2214:45;;;;2261:2;2210:54;;1788:482;-1:-1:-1;;;1788:482:1:o;7382:128::-;;7453:1;7449:6;7446:1;7443:13;7440:2;;;7459:18;;:::i;:::-;-1:-1:-1;7495:9:1;;7430:80::o;7515:217::-;;7581:1;7571:2;;-1:-1:-1;;;7606:31:1;;7660:4;7657:1;7650:15;7688:4;7613:1;7678:15;7571:2;-1:-1:-1;7717:9:1;;7561:171::o;7737:168::-;;7843:1;7839;7835:6;7831:14;7828:1;7825:21;7820:1;7813:9;7806:17;7802:45;7799:2;;;7850:18;;:::i;:::-;-1:-1:-1;7890:9:1;;7789:116::o;7910:125::-;;7978:1;7975;7972:8;7969:2;;;7983:18;;:::i;:::-;-1:-1:-1;8020:9:1;;7959:76::o;8040:380::-;8119:1;8115:12;;;;8162;;;8183:2;;8237:4;8229:6;8225:17;8215:27;;8183:2;8290;8282:6;8279:14;8259:18;8256:38;8253:2;;;8336:10;8331:3;8327:20;8324:1;8317:31;8371:4;8368:1;8361:15;8399:4;8396:1;8389:15;8253:2;;8095:325;;;:::o;8425:135::-;;-1:-1:-1;;8485:17:1;;8482:2;;;8505:18;;:::i;:::-;-1:-1:-1;8552:1:1;8541:13;;8472:88::o;8565:127::-;8626:10;8621:3;8617:20;8614:1;8607:31;8657:4;8654:1;8647:15;8681:4;8678:1;8671:15

Swarm Source

ipfs://0d521697d6e725482bdd76a2df9bf88279f042a93e0783dcdde9430263647bca
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.