ETH Price: $2,453.63 (-5.69%)

Token

Rewardus (RWD)
 

Overview

Max Total Supply

100,000,000,000,000,000 RWD

Holders

81 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
861,968,105,417,418.134146109 RWD

Value
$0.00
0x9acdbe7b8b7c5d9941747a5a63956decc0747305
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Rewardus is an ERC20 token that Rewardus its investors with a portion of the transaction fees generated on all buys and sells. As a holder of Rewardus, you'll earn Rewardus just for holding your Rewardus in your wallet.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
RewardusERC20

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-03
*/

// SPDX-License-Identifier: Unlicensed

//
//  $$$$$$$\                                                    $$\                     
//  $$  __$$\                                                   $$ |                    
//  $$ |  $$ | $$$$$$\  $$\  $$\  $$\  $$$$$$\   $$$$$$\   $$$$$$$ |$$\   $$\  $$$$$$$\ 
//  $$$$$$$  |$$  __$$\ $$ | $$ | $$ | \____$$\ $$  __$$\ $$  __$$ |$$ |  $$ |$$  _____|
//  $$  __$$< $$$$$$$$ |$$ | $$ | $$ | $$$$$$$ |$$ |  \__|$$ /  $$ |$$ |  $$ |\$$$$$$\  
//  $$ |  $$ |$$   ____|$$ | $$ | $$ |$$  __$$ |$$ |      $$ |  $$ |$$ |  $$ | \____$$\ 
//  $$ |  $$ |\$$$$$$$\ \$$$$$\$$$$  |\$$$$$$$ |$$ |      \$$$$$$$ |\$$$$$$  |$$$$$$$  |
//  \__|  \__| \_______| \_____\____/  \_______|\__|       \_______| \______/ \_______/ .WTF
//                                                                                     
//  twitter:  https://twitter.com/RewardusToken
//  telegram: https://t.me/rewardus
//  website:  https://rewardus.wtf
// 

pragma solidity ^0.8.19;

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

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {
    /**
     * @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 Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract RewardusERC20 is Context, IERC20, 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;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000 * 10**6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = 'Rewardus';
    string private _symbol = 'RWD';
    uint8 private _decimals = 9;

    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _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 _decimals;
    }

    function totalSupply() public pure 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, "ERC20: 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, "ERC20: 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 reflect(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 excluded");
        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 _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        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);
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
    }

    function _getTValues(uint256 tAmount) private pure returns (uint256, uint256) {
        uint256 tFee = tAmount.div(100).mul(2);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee);
        return (rAmount, rTransferAmount, rFee);
    }

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

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":"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":[{"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":"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"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526a52b7d2dcc80cd2e40000006000196200001f9190620002b7565b6000196200002e91906200031e565b6006556040518060400160405280600881526020017f526577617264757300000000000000000000000000000000000000000000000081525060089081620000779190620005c9565b506040518060400160405280600381526020017f525744000000000000000000000000000000000000000000000000000000000081525060099081620000be9190620005c9565b506009600a60006101000a81548160ff021916908360ff160217905550348015620000e857600080fd5b506000620000fb6200027660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460016000620001b06200027660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001fe6200027660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a52b7d2dcc80cd2e4000000604051620002689190620006c1565b60405180910390a3620006de565b600033905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620002c4826200027e565b9150620002d1836200027e565b925082620002e457620002e362000288565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200032b826200027e565b915062000338836200027e565b9250828203905081811115620003535762000352620002ef565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003db57607f821691505b602082108103620003f157620003f062000393565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200045b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200041c565b6200046786836200041c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620004aa620004a46200049e846200027e565b6200047f565b6200027e565b9050919050565b6000819050919050565b620004c68362000489565b620004de620004d582620004b1565b84845462000429565b825550505050565b600090565b620004f5620004e6565b62000502818484620004bb565b505050565b5b818110156200052a576200051e600082620004eb565b60018101905062000508565b5050565b601f82111562000579576200054381620003f7565b6200054e846200040c565b810160208510156200055e578190505b620005766200056d856200040c565b83018262000507565b50505b505050565b600082821c905092915050565b60006200059e600019846008026200057e565b1980831691505092915050565b6000620005b983836200058b565b9150826002028217905092915050565b620005d48262000359565b67ffffffffffffffff811115620005f057620005ef62000364565b5b620005fc8254620003c2565b620006098282856200052e565b600060209050601f8311600181146200064157600084156200062c578287015190505b620006388582620005ab565b865550620006a8565b601f1984166200065186620003f7565b60005b828110156200067b5784890151825560018201915060208501945060208101905062000654565b868310156200069b578489015162000697601f8916826200058b565b8355505b6001600288020188555050505b505050505050565b620006bb816200027e565b82525050565b6000602082019050620006d86000830184620006b0565b92915050565b61389380620006ee6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b806323b872dd116100ff57806323b872dd146101e25780632d83811914610212578063313ce5671461024257806339509351146102605780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806313114a9d146101a657806318160ddd146101c4575b600080fd5b61015660048036038101906101519190612b95565b61044a565b005b6101606105c4565b60405161016d9190612c52565b60405180910390f35b610190600480360381019061018b9190612cd2565b610656565b60405161019d9190612d2d565b60405180910390f35b6101ae610674565b6040516101bb9190612d57565b60405180910390f35b6101cc61067e565b6040516101d99190612d57565b60405180910390f35b6101fc60048036038101906101f79190612d72565b610691565b6040516102099190612d2d565b60405180910390f35b61022c60048036038101906102279190612b95565b61076a565b6040516102399190612d57565b60405180910390f35b61024a6107d8565b6040516102579190612de1565b60405180910390f35b61027a60048036038101906102759190612cd2565b6107ef565b6040516102879190612d2d565b60405180910390f35b6102aa60048036038101906102a59190612e28565b6108a2565b6040516102b79190612d57565b60405180910390f35b6102da60048036038101906102d59190612e68565b61092d565b6040516102e79190612d57565b60405180910390f35b6102f8610a18565b005b610302610b6b565b60405161030f9190612ea4565b60405180910390f35b610320610b94565b60405161032d9190612c52565b60405180910390f35b610350600480360381019061034b9190612cd2565b610c26565b60405161035d9190612d2d565b60405180910390f35b610380600480360381019061037b9190612cd2565b610cf3565b60405161038d9190612d2d565b60405180910390f35b6103b060048036038101906103ab9190612e68565b610d11565b6040516103bd9190612d2d565b60405180910390f35b6103e060048036038101906103db9190612ebf565b610d67565b6040516103ed9190612d57565b60405180910390f35b610410600480360381019061040b9190612e68565b610dee565b005b61042c60048036038101906104279190612e68565b6110a2565b005b61044860048036038101906104439190612e68565b611263565b005b60006104546115b1565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90612f71565b60405180910390fd5b60006104ee836115b9565b50505050905061054681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061059e8160065461161190919063ffffffff16565b6006819055506105b98360075461165b90919063ffffffff16565b600781905550505050565b6060600880546105d390612fc0565b80601f01602080910402602001604051908101604052809291908181526020018280546105ff90612fc0565b801561064c5780601f106106215761010080835404028352916020019161064c565b820191906000526020600020905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b600061066a6106636115b1565b84846116b9565b6001905092915050565b6000600754905090565b60006a52b7d2dcc80cd2e4000000905090565b600061069e848484611882565b61075f846106aa6115b1565b61075a8560405180606001604052806028815260200161381160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107106115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c979092919063ffffffff16565b6116b9565b600190509392505050565b60006006548211156107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a890613063565b60405180910390fd5b60006107bb611cfb565b90506107d08184611d2690919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b60006108986107fc6115b1565b84610893856003600061080d6115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b6116b9565b6001905092915050565b60006a52b7d2dcc80cd2e40000008311156108f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e9906130cf565b60405180910390fd5b81610911576000610902846115b9565b50505050905080915050610927565b600061091c846115b9565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109c857600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a13565b610a10600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076a565b90505b919050565b610a206115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa49061313b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610ba390612fc0565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcf90612fc0565b8015610c1c5780601f10610bf157610100808354040283529160200191610c1c565b820191906000526020600020905b815481529060010190602001808311610bff57829003601f168201915b5050505050905090565b6000610ce9610c336115b1565b84610ce4856040518060600160405280602581526020016138396025913960036000610c5d6115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c979092919063ffffffff16565b6116b9565b6001905092915050565b6000610d07610d006115b1565b8484611882565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610df66115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a9061313b565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f07906131a7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610fe457610fa0600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110aa6115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e9061313b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d90613239565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61126b6115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef9061313b565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b906131a7565b60405180910390fd5b60005b6005805490508110156115ad578173ffffffffffffffffffffffffffffffffffffffff16600582815481106113bf576113be613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361159a576005600160058054905061141991906132b7565b8154811061142a57611429613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061146957611468613259565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806115605761155f6132eb565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115ad565b80806115a59061331a565b915050611387565b5050565b600033905090565b60008060008060008060006115cd88611d70565b9150915060006115db611cfb565b905060008060006115ed8c8686611dc2565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600061165383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c97565b905092915050565b600080828461166a9190613362565b9050838110156116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a6906133e2565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90613474565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613506565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118759190612d57565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613598565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579061362a565b60405180910390fd5b600081116119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a906136bc565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a465750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a5b57611a56838383611e20565b611c92565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611afe5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b1357611b0e838383612073565b611c91565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bb75750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bcc57611bc78383836122c6565b611c90565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c6e5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c8357611c7e838383612484565b611c8f565b611c8e8383836122c6565b5b5b5b5b505050565b6000838311158290611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd69190612c52565b60405180910390fd5b5060008385611cee91906132b7565b9050809150509392505050565b6000806000611d0861276c565b91509150611d1f8183611d2690919063ffffffff16565b9250505090565b6000611d6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a43565b905092915050565b6000806000611d9c6002611d8e606487611d2690919063ffffffff16565b612aa690919063ffffffff16565b90506000611db3828661161190919063ffffffff16565b90508082935093505050915091565b600080600080611ddb8588612aa690919063ffffffff16565b90506000611df28688612aa690919063ffffffff16565b90506000611e09828461161190919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611e31866115b9565b94509450945094509450611e8d86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fb784600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120048382612b20565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120619190612d57565b60405180910390a35050505050505050565b6000806000806000612084866115b9565b945094509450945094506120e085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061217582600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061220a84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122578382612b20565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122b49190612d57565b60405180910390a35050505050505050565b60008060008060006122d7866115b9565b9450945094509450945061233385600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c884600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124158382612b20565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124729190612d57565b60405180910390a35050505050505050565b6000806000806000612495866115b9565b945094509450945094506124f186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061261b82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126b084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126fd8382612b20565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161275a9190612d57565b60405180910390a35050505050505050565b6000806000600654905060006a52b7d2dcc80cd2e4000000905060005b6005805490508110156129f4578260016000600584815481106127af576127ae613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061289d575081600260006005848154811061283557612834613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156128bd576006546a52b7d2dcc80cd2e400000094509450505050612a3f565b61294d60016000600584815481106128d8576128d7613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461161190919063ffffffff16565b92506129df600260006005848154811061296a57612969613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361161190919063ffffffff16565b915080806129ec9061331a565b915050612789565b50612a156a52b7d2dcc80cd2e4000000600654611d2690919063ffffffff16565b821015612a36576006546a52b7d2dcc80cd2e4000000935093505050612a3f565b81819350935050505b9091565b60008083118290612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a819190612c52565b60405180910390fd5b5060008385612a99919061370b565b9050809150509392505050565b6000808303612ab85760009050612b1a565b60008284612ac6919061373c565b9050828482612ad5919061370b565b14612b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0c906137f0565b60405180910390fd5b809150505b92915050565b612b358260065461161190919063ffffffff16565b600681905550612b508160075461165b90919063ffffffff16565b6007819055505050565b600080fd5b6000819050919050565b612b7281612b5f565b8114612b7d57600080fd5b50565b600081359050612b8f81612b69565b92915050565b600060208284031215612bab57612baa612b5a565b5b6000612bb984828501612b80565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bfc578082015181840152602081019050612be1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c2482612bc2565b612c2e8185612bcd565b9350612c3e818560208601612bde565b612c4781612c08565b840191505092915050565b60006020820190508181036000830152612c6c8184612c19565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c9f82612c74565b9050919050565b612caf81612c94565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b60008060408385031215612ce957612ce8612b5a565b5b6000612cf785828601612cbd565b9250506020612d0885828601612b80565b9150509250929050565b60008115159050919050565b612d2781612d12565b82525050565b6000602082019050612d426000830184612d1e565b92915050565b612d5181612b5f565b82525050565b6000602082019050612d6c6000830184612d48565b92915050565b600080600060608486031215612d8b57612d8a612b5a565b5b6000612d9986828701612cbd565b9350506020612daa86828701612cbd565b9250506040612dbb86828701612b80565b9150509250925092565b600060ff82169050919050565b612ddb81612dc5565b82525050565b6000602082019050612df66000830184612dd2565b92915050565b612e0581612d12565b8114612e1057600080fd5b50565b600081359050612e2281612dfc565b92915050565b60008060408385031215612e3f57612e3e612b5a565b5b6000612e4d85828601612b80565b9250506020612e5e85828601612e13565b9150509250929050565b600060208284031215612e7e57612e7d612b5a565b5b6000612e8c84828501612cbd565b91505092915050565b612e9e81612c94565b82525050565b6000602082019050612eb96000830184612e95565b92915050565b60008060408385031215612ed657612ed5612b5a565b5b6000612ee485828601612cbd565b9250506020612ef585828601612cbd565b9150509250929050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000612f5b602c83612bcd565b9150612f6682612eff565b604082019050919050565b60006020820190508181036000830152612f8a81612f4e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fd857607f821691505b602082108103612feb57612fea612f91565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061304d602a83612bcd565b915061305882612ff1565b604082019050919050565b6000602082019050818103600083015261307c81613040565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006130b9601f83612bcd565b91506130c482613083565b602082019050919050565b600060208201905081810360008301526130e8816130ac565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613125602083612bcd565b9150613130826130ef565b602082019050919050565b6000602082019050818103600083015261315481613118565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613191601b83612bcd565b915061319c8261315b565b602082019050919050565b600060208201905081810360008301526131c081613184565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613223602683612bcd565b915061322e826131c7565b604082019050919050565b6000602082019050818103600083015261325281613216565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132c282612b5f565b91506132cd83612b5f565b92508282039050818111156132e5576132e4613288565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061332582612b5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361335757613356613288565b5b600182019050919050565b600061336d82612b5f565b915061337883612b5f565b92508282019050808211156133905761338f613288565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006133cc601b83612bcd565b91506133d782613396565b602082019050919050565b600060208201905081810360008301526133fb816133bf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061345e602483612bcd565b915061346982613402565b604082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f0602283612bcd565b91506134fb82613494565b604082019050919050565b6000602082019050818103600083015261351f816134e3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613582602583612bcd565b915061358d82613526565b604082019050919050565b600060208201905081810360008301526135b181613575565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613614602383612bcd565b915061361f826135b8565b604082019050919050565b6000602082019050818103600083015261364381613607565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136a6602983612bcd565b91506136b18261364a565b604082019050919050565b600060208201905081810360008301526136d581613699565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061371682612b5f565b915061372183612b5f565b925082613731576137306136dc565b5b828204905092915050565b600061374782612b5f565b915061375283612b5f565b925082820261376081612b5f565b9150828204841483151761377757613776613288565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006137da602183612bcd565b91506137e58261377e565b604082019050919050565b60006020820190508181036000830152613809816137cd565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f3414b0055b7fffda071ca1ad8a1feba42044646b8b96fd29844e0bdb8e648fc64736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b806323b872dd116100ff57806323b872dd146101e25780632d83811914610212578063313ce5671461024257806339509351146102605780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806313114a9d146101a657806318160ddd146101c4575b600080fd5b61015660048036038101906101519190612b95565b61044a565b005b6101606105c4565b60405161016d9190612c52565b60405180910390f35b610190600480360381019061018b9190612cd2565b610656565b60405161019d9190612d2d565b60405180910390f35b6101ae610674565b6040516101bb9190612d57565b60405180910390f35b6101cc61067e565b6040516101d99190612d57565b60405180910390f35b6101fc60048036038101906101f79190612d72565b610691565b6040516102099190612d2d565b60405180910390f35b61022c60048036038101906102279190612b95565b61076a565b6040516102399190612d57565b60405180910390f35b61024a6107d8565b6040516102579190612de1565b60405180910390f35b61027a60048036038101906102759190612cd2565b6107ef565b6040516102879190612d2d565b60405180910390f35b6102aa60048036038101906102a59190612e28565b6108a2565b6040516102b79190612d57565b60405180910390f35b6102da60048036038101906102d59190612e68565b61092d565b6040516102e79190612d57565b60405180910390f35b6102f8610a18565b005b610302610b6b565b60405161030f9190612ea4565b60405180910390f35b610320610b94565b60405161032d9190612c52565b60405180910390f35b610350600480360381019061034b9190612cd2565b610c26565b60405161035d9190612d2d565b60405180910390f35b610380600480360381019061037b9190612cd2565b610cf3565b60405161038d9190612d2d565b60405180910390f35b6103b060048036038101906103ab9190612e68565b610d11565b6040516103bd9190612d2d565b60405180910390f35b6103e060048036038101906103db9190612ebf565b610d67565b6040516103ed9190612d57565b60405180910390f35b610410600480360381019061040b9190612e68565b610dee565b005b61042c60048036038101906104279190612e68565b6110a2565b005b61044860048036038101906104439190612e68565b611263565b005b60006104546115b1565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90612f71565b60405180910390fd5b60006104ee836115b9565b50505050905061054681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061059e8160065461161190919063ffffffff16565b6006819055506105b98360075461165b90919063ffffffff16565b600781905550505050565b6060600880546105d390612fc0565b80601f01602080910402602001604051908101604052809291908181526020018280546105ff90612fc0565b801561064c5780601f106106215761010080835404028352916020019161064c565b820191906000526020600020905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b600061066a6106636115b1565b84846116b9565b6001905092915050565b6000600754905090565b60006a52b7d2dcc80cd2e4000000905090565b600061069e848484611882565b61075f846106aa6115b1565b61075a8560405180606001604052806028815260200161381160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107106115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c979092919063ffffffff16565b6116b9565b600190509392505050565b60006006548211156107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a890613063565b60405180910390fd5b60006107bb611cfb565b90506107d08184611d2690919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b60006108986107fc6115b1565b84610893856003600061080d6115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b6116b9565b6001905092915050565b60006a52b7d2dcc80cd2e40000008311156108f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e9906130cf565b60405180910390fd5b81610911576000610902846115b9565b50505050905080915050610927565b600061091c846115b9565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109c857600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a13565b610a10600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076a565b90505b919050565b610a206115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa49061313b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610ba390612fc0565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcf90612fc0565b8015610c1c5780601f10610bf157610100808354040283529160200191610c1c565b820191906000526020600020905b815481529060010190602001808311610bff57829003601f168201915b5050505050905090565b6000610ce9610c336115b1565b84610ce4856040518060600160405280602581526020016138396025913960036000610c5d6115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c979092919063ffffffff16565b6116b9565b6001905092915050565b6000610d07610d006115b1565b8484611882565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610df66115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a9061313b565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f07906131a7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610fe457610fa0600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110aa6115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e9061313b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d90613239565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61126b6115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef9061313b565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b906131a7565b60405180910390fd5b60005b6005805490508110156115ad578173ffffffffffffffffffffffffffffffffffffffff16600582815481106113bf576113be613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361159a576005600160058054905061141991906132b7565b8154811061142a57611429613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061146957611468613259565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806115605761155f6132eb565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115ad565b80806115a59061331a565b915050611387565b5050565b600033905090565b60008060008060008060006115cd88611d70565b9150915060006115db611cfb565b905060008060006115ed8c8686611dc2565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600061165383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c97565b905092915050565b600080828461166a9190613362565b9050838110156116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a6906133e2565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90613474565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613506565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118759190612d57565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613598565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579061362a565b60405180910390fd5b600081116119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a906136bc565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a465750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a5b57611a56838383611e20565b611c92565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611afe5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b1357611b0e838383612073565b611c91565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bb75750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bcc57611bc78383836122c6565b611c90565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c6e5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c8357611c7e838383612484565b611c8f565b611c8e8383836122c6565b5b5b5b5b505050565b6000838311158290611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd69190612c52565b60405180910390fd5b5060008385611cee91906132b7565b9050809150509392505050565b6000806000611d0861276c565b91509150611d1f8183611d2690919063ffffffff16565b9250505090565b6000611d6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a43565b905092915050565b6000806000611d9c6002611d8e606487611d2690919063ffffffff16565b612aa690919063ffffffff16565b90506000611db3828661161190919063ffffffff16565b90508082935093505050915091565b600080600080611ddb8588612aa690919063ffffffff16565b90506000611df28688612aa690919063ffffffff16565b90506000611e09828461161190919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611e31866115b9565b94509450945094509450611e8d86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fb784600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120048382612b20565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120619190612d57565b60405180910390a35050505050505050565b6000806000806000612084866115b9565b945094509450945094506120e085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061217582600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061220a84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122578382612b20565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122b49190612d57565b60405180910390a35050505050505050565b60008060008060006122d7866115b9565b9450945094509450945061233385600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c884600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124158382612b20565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124729190612d57565b60405180910390a35050505050505050565b6000806000806000612495866115b9565b945094509450945094506124f186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061261b82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126b084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126fd8382612b20565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161275a9190612d57565b60405180910390a35050505050505050565b6000806000600654905060006a52b7d2dcc80cd2e4000000905060005b6005805490508110156129f4578260016000600584815481106127af576127ae613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061289d575081600260006005848154811061283557612834613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156128bd576006546a52b7d2dcc80cd2e400000094509450505050612a3f565b61294d60016000600584815481106128d8576128d7613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461161190919063ffffffff16565b92506129df600260006005848154811061296a57612969613259565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361161190919063ffffffff16565b915080806129ec9061331a565b915050612789565b50612a156a52b7d2dcc80cd2e4000000600654611d2690919063ffffffff16565b821015612a36576006546a52b7d2dcc80cd2e4000000935093505050612a3f565b81819350935050505b9091565b60008083118290612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a819190612c52565b60405180910390fd5b5060008385612a99919061370b565b9050809150509392505050565b6000808303612ab85760009050612b1a565b60008284612ac6919061373c565b9050828482612ad5919061370b565b14612b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0c906137f0565b60405180910390fd5b809150505b92915050565b612b358260065461161190919063ffffffff16565b600681905550612b508160075461165b90919063ffffffff16565b6007819055505050565b600080fd5b6000819050919050565b612b7281612b5f565b8114612b7d57600080fd5b50565b600081359050612b8f81612b69565b92915050565b600060208284031215612bab57612baa612b5a565b5b6000612bb984828501612b80565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bfc578082015181840152602081019050612be1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c2482612bc2565b612c2e8185612bcd565b9350612c3e818560208601612bde565b612c4781612c08565b840191505092915050565b60006020820190508181036000830152612c6c8184612c19565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c9f82612c74565b9050919050565b612caf81612c94565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b60008060408385031215612ce957612ce8612b5a565b5b6000612cf785828601612cbd565b9250506020612d0885828601612b80565b9150509250929050565b60008115159050919050565b612d2781612d12565b82525050565b6000602082019050612d426000830184612d1e565b92915050565b612d5181612b5f565b82525050565b6000602082019050612d6c6000830184612d48565b92915050565b600080600060608486031215612d8b57612d8a612b5a565b5b6000612d9986828701612cbd565b9350506020612daa86828701612cbd565b9250506040612dbb86828701612b80565b9150509250925092565b600060ff82169050919050565b612ddb81612dc5565b82525050565b6000602082019050612df66000830184612dd2565b92915050565b612e0581612d12565b8114612e1057600080fd5b50565b600081359050612e2281612dfc565b92915050565b60008060408385031215612e3f57612e3e612b5a565b5b6000612e4d85828601612b80565b9250506020612e5e85828601612e13565b9150509250929050565b600060208284031215612e7e57612e7d612b5a565b5b6000612e8c84828501612cbd565b91505092915050565b612e9e81612c94565b82525050565b6000602082019050612eb96000830184612e95565b92915050565b60008060408385031215612ed657612ed5612b5a565b5b6000612ee485828601612cbd565b9250506020612ef585828601612cbd565b9150509250929050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000612f5b602c83612bcd565b9150612f6682612eff565b604082019050919050565b60006020820190508181036000830152612f8a81612f4e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fd857607f821691505b602082108103612feb57612fea612f91565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061304d602a83612bcd565b915061305882612ff1565b604082019050919050565b6000602082019050818103600083015261307c81613040565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006130b9601f83612bcd565b91506130c482613083565b602082019050919050565b600060208201905081810360008301526130e8816130ac565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613125602083612bcd565b9150613130826130ef565b602082019050919050565b6000602082019050818103600083015261315481613118565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613191601b83612bcd565b915061319c8261315b565b602082019050919050565b600060208201905081810360008301526131c081613184565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613223602683612bcd565b915061322e826131c7565b604082019050919050565b6000602082019050818103600083015261325281613216565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132c282612b5f565b91506132cd83612b5f565b92508282039050818111156132e5576132e4613288565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061332582612b5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361335757613356613288565b5b600182019050919050565b600061336d82612b5f565b915061337883612b5f565b92508282019050808211156133905761338f613288565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006133cc601b83612bcd565b91506133d782613396565b602082019050919050565b600060208201905081810360008301526133fb816133bf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061345e602483612bcd565b915061346982613402565b604082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f0602283612bcd565b91506134fb82613494565b604082019050919050565b6000602082019050818103600083015261351f816134e3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613582602583612bcd565b915061358d82613526565b604082019050919050565b600060208201905081810360008301526135b181613575565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613614602383612bcd565b915061361f826135b8565b604082019050919050565b6000602082019050818103600083015261364381613607565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136a6602983612bcd565b91506136b18261364a565b604082019050919050565b600060208201905081810360008301526136d581613699565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061371682612b5f565b915061372183612b5f565b925082613731576137306136dc565b5b828204905092915050565b600061374782612b5f565b915061375283612b5f565b925082820261376081612b5f565b9150828204841483151761377757613776613288565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006137da602183612bcd565b91506137e58261377e565b604082019050919050565b60006020820190508181036000830152613809816137cd565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f3414b0055b7fffda071ca1ad8a1feba42044646b8b96fd29844e0bdb8e648fc64736f6c63430008130033

Deployed Bytecode Sourcemap

16550:10162:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19519:376;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17401:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18313:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19424:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17678:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18482:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20345:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17587:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18803:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19903:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17781:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15996:148;;;:::i;:::-;;15354:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17492:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19029:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17987:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19306:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18162:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20606:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16299:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20946:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19519:376;19571:14;19588:12;:10;:12::i;:::-;19571:29;;19620:11;:19;19632:6;19620:19;;;;;;;;;;;;;;;;;;;;;;;;;19619:20;19611:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;19700:15;19723:19;19734:7;19723:10;:19::i;:::-;19699:43;;;;;;19771:28;19791:7;19771;:15;19779:6;19771:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19753:7;:15;19761:6;19753:15;;;;;;;;;;;;;;;:46;;;;19820:20;19832:7;19820;;:11;;:20;;;;:::i;:::-;19810:7;:30;;;;19864:23;19879:7;19864:10;;:14;;:23;;;;:::i;:::-;19851:10;:36;;;;19560:335;;19519:376;:::o;17401:83::-;17438:13;17471:5;17464:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17401:83;:::o;18313:161::-;18388:4;18405:39;18414:12;:10;:12::i;:::-;18428:7;18437:6;18405:8;:39::i;:::-;18462:4;18455:11;;18313:161;;;;:::o;19424:87::-;19466:7;19493:10;;19486:17;;19424:87;:::o;17678:95::-;17731:7;17030:28;17751:14;;17678:95;:::o;18482:313::-;18580:4;18597:36;18607:6;18615:9;18626:6;18597:9;:36::i;:::-;18644:121;18653:6;18661:12;:10;:12::i;:::-;18675:89;18713:6;18675:89;;;;;;;;;;;;;;;;;:11;:19;18687:6;18675:19;;;;;;;;;;;;;;;:33;18695:12;:10;:12::i;:::-;18675:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18644:8;:121::i;:::-;18783:4;18776:11;;18482:313;;;;;:::o;20345:253::-;20411:7;20450;;20439;:18;;20431:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20515:19;20538:10;:8;:10::i;:::-;20515:33;;20566:24;20578:11;20566:7;:11;;:24;;;;:::i;:::-;20559:31;;;20345:253;;;:::o;17587:83::-;17628:5;17653:9;;;;;;;;;;;17646:16;;17587:83;:::o;18803:218::-;18891:4;18908:83;18917:12;:10;:12::i;:::-;18931:7;18940:50;18979:10;18940:11;:25;18952:12;:10;:12::i;:::-;18940:25;;;;;;;;;;;;;;;:34;18966:7;18940:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18908:8;:83::i;:::-;19009:4;19002:11;;18803:218;;;;:::o;19903:434::-;19993:7;17030:28;20021:7;:18;;20013:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20091:17;20086:244;;20126:15;20149:19;20160:7;20149:10;:19::i;:::-;20125:43;;;;;;20190:7;20183:14;;;;;20086:244;20232:23;20262:19;20273:7;20262:10;:19::i;:::-;20230:51;;;;;;20303:15;20296:22;;;19903:434;;;;;:::o;17781:198::-;17847:7;17871:11;:20;17883:7;17871:20;;;;;;;;;;;;;;;;;;;;;;;;;17867:49;;;17900:7;:16;17908:7;17900:16;;;;;;;;;;;;;;;;17893:23;;;;17867:49;17934:37;17954:7;:16;17962:7;17954:16;;;;;;;;;;;;;;;;17934:19;:37::i;:::-;17927:44;;17781:198;;;;:::o;15996:148::-;15576:12;:10;:12::i;:::-;15566:22;;:6;;;;;;;;;;:22;;;15558:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16103:1:::1;16066:40;;16087:6;::::0;::::1;;;;;;;;16066:40;;;;;;;;;;;;16134:1;16117:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15996:148::o:0;15354:79::-;15392:7;15419:6;;;;;;;;;;;15412:13;;15354:79;:::o;17492:87::-;17531:13;17564:7;17557:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17492:87;:::o;19029:269::-;19122:4;19139:129;19148:12;:10;:12::i;:::-;19162:7;19171:96;19210:15;19171:96;;;;;;;;;;;;;;;;;:11;:25;19183:12;:10;:12::i;:::-;19171:25;;;;;;;;;;;;;;;:34;19197:7;19171:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19139:8;:129::i;:::-;19286:4;19279:11;;19029:269;;;;:::o;17987:167::-;18065:4;18082:42;18092:12;:10;:12::i;:::-;18106:9;18117:6;18082:9;:42::i;:::-;18142:4;18135:11;;17987:167;;;;:::o;19306:110::-;19364:4;19388:11;:20;19400:7;19388:20;;;;;;;;;;;;;;;;;;;;;;;;;19381:27;;19306:110;;;:::o;18162:143::-;18243:7;18270:11;:18;18282:5;18270:18;;;;;;;;;;;;;;;:27;18289:7;18270:27;;;;;;;;;;;;;;;;18263:34;;18162:143;;;;:::o;20606:332::-;15576:12;:10;:12::i;:::-;15566:22;;:6;;;;;;;;;;:22;;;15558:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20688:11:::1;:20;20700:7;20688:20;;;;;;;;;;;;;;;;;;;;;;;;;20687:21;20679:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20773:1;20754:7;:16;20762:7;20754:16;;;;;;;;;;;;;;;;:20;20751:108;;;20810:37;20830:7;:16;20838:7;20830:16;;;;;;;;;;;;;;;;20810:19;:37::i;:::-;20791:7;:16;20799:7;20791:16;;;;;;;;;;;;;;;:56;;;;20751:108;20892:4;20869:11;:20;20881:7;20869:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20907:9;20922:7;20907:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20606:332:::0;:::o;16299:244::-;15576:12;:10;:12::i;:::-;15566:22;;:6;;;;;;;;;;:22;;;15558:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16408:1:::1;16388:22;;:8;:22;;::::0;16380:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16498:8;16469:38;;16490:6;::::0;::::1;;;;;;;;16469:38;;;;;;;;;;;;16527:8;16518:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16299:244:::0;:::o;20946:478::-;15576:12;:10;:12::i;:::-;15566:22;;:6;;;;;;;;;;:22;;;15558:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21027:11:::1;:20;21039:7;21027:20;;;;;;;;;;;;;;;;;;;;;;;;;21019:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21095:9;21090:327;21114:9;:16;;;;21110:1;:20;21090:327;;;21172:7;21156:23;;:9;21166:1;21156:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;21152:254:::1;;21215:9;21244:1;21225:9;:16;;;;:20;;;;:::i;:::-;21215:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21200:9;21210:1;21200:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21284:1;21265:7;:16;21273:7;21265:16;;;;;;;;;;;;;;;:20;;;;21327:5;21304:11;:20;21316:7;21304:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21351:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;21385:5;;21152:254;21132:3;;;;;:::i;:::-;;;;21090:327;;;;20946:478:::0;:::o;1049:115::-;1102:15;1145:10;1130:26;;1049:115;:::o;24978:411::-;25037:7;25046;25055;25064;25073;25094:23;25119:12;25135:20;25147:7;25135:11;:20::i;:::-;25093:62;;;;25166:19;25189:10;:8;:10::i;:::-;25166:33;;25211:15;25228:23;25253:12;25269:39;25281:7;25290:4;25296:11;25269;:39::i;:::-;25210:98;;;;;;25327:7;25336:15;25353:4;25359:15;25376:4;25319:62;;;;;;;;;;;;;;;;24978:411;;;;;;;:::o;4778:136::-;4836:7;4863:43;4867:1;4870;4863:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4856:50;;4778:136;;;;:::o;4314:181::-;4372:7;4392:9;4408:1;4404;:5;;;;:::i;:::-;4392:17;;4433:1;4428;:6;;4420:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4486:1;4479:8;;;4314:181;;;;:::o;21432:337::-;21542:1;21525:19;;:5;:19;;;21517:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21623:1;21604:21;;:7;:21;;;21596:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21707:6;21677:11;:18;21689:5;21677:18;;;;;;;;;;;;;;;:27;21696:7;21677:27;;;;;;;;;;;;;;;:36;;;;21745:7;21729:32;;21738:5;21729:32;;;21754:6;21729:32;;;;;;:::i;:::-;;;;;;;;21432:337;;;:::o;21777:931::-;21892:1;21874:20;;:6;:20;;;21866:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21976:1;21955:23;;:9;:23;;;21947:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22046:1;22037:6;:10;22029:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22108:11;:19;22120:6;22108:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;22132:11;:22;22144:9;22132:22;;;;;;;;;;;;;;;;;;;;;;;;;22131:23;22108:46;22104:597;;;22171:48;22193:6;22201:9;22212:6;22171:21;:48::i;:::-;22104:597;;;22242:11;:19;22254:6;22242:19;;;;;;;;;;;;;;;;;;;;;;;;;22241:20;:46;;;;;22265:11;:22;22277:9;22265:22;;;;;;;;;;;;;;;;;;;;;;;;;22241:46;22237:464;;;22304:46;22324:6;22332:9;22343:6;22304:19;:46::i;:::-;22237:464;;;22373:11;:19;22385:6;22373:19;;;;;;;;;;;;;;;;;;;;;;;;;22372:20;:47;;;;;22397:11;:22;22409:9;22397:22;;;;;;;;;;;;;;;;;;;;;;;;;22396:23;22372:47;22368:333;;;22436:44;22454:6;22462:9;22473:6;22436:17;:44::i;:::-;22368:333;;;22502:11;:19;22514:6;22502:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;22525:11;:22;22537:9;22525:22;;;;;;;;;;;;;;;;;;;;;;;;;22502:45;22498:203;;;22564:48;22586:6;22594:9;22605:6;22564:21;:48::i;:::-;22498:203;;;22645:44;22663:6;22671:9;22682:6;22645:17;:44::i;:::-;22498:203;22368:333;22237:464;22104:597;21777:931;;;:::o;5217:192::-;5303:7;5336:1;5331;:6;;5339:12;5323:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5363:9;5379:1;5375;:5;;;;:::i;:::-;5363:17;;5400:1;5393:8;;;5217:192;;;;;:::o;25977:163::-;26018:7;26039:15;26056;26075:19;:17;:19::i;:::-;26038:56;;;;26112:20;26124:7;26112;:11;;:20;;;;:::i;:::-;26105:27;;;;25977:163;:::o;6615:132::-;6673:7;6700:39;6704:1;6707;6700:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6693:46;;6615:132;;;;:::o;25397:230::-;25457:7;25466;25486:12;25501:23;25522:1;25501:16;25513:3;25501:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;25486:38;;25535:23;25561:17;25573:4;25561:7;:11;;:17;;;;:::i;:::-;25535:43;;25597:15;25614:4;25589:30;;;;;;25397:230;;;:::o;25635:334::-;25730:7;25739;25748;25768:15;25786:24;25798:11;25786:7;:11;;:24;;;;:::i;:::-;25768:42;;25821:12;25836:21;25845:11;25836:4;:8;;:21;;;;:::i;:::-;25821:36;;25868:23;25894:17;25906:4;25894:7;:11;;:17;;;;:::i;:::-;25868:43;;25930:7;25939:15;25956:4;25922:39;;;;;;;;;25635:334;;;;;;;:::o;23713:509::-;23816:15;23833:23;23858:12;23872:23;23897:12;23913:19;23924:7;23913:10;:19::i;:::-;23815:117;;;;;;;;;;23961:28;23981:7;23961;:15;23969:6;23961:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23943:7;:15;23951:6;23943:15;;;;;;;;;;;;;;;:46;;;;24018:28;24038:7;24018;:15;24026:6;24018:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24000:7;:15;24008:6;24000:15;;;;;;;;;;;;;;;:46;;;;24078:39;24101:15;24078:7;:18;24086:9;24078:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24057:7;:18;24065:9;24057:18;;;;;;;;;;;;;;;:60;;;;24131:23;24143:4;24149;24131:11;:23::i;:::-;24187:9;24170:44;;24179:6;24170:44;;;24198:15;24170:44;;;;;;:::i;:::-;;;;;;;;23804:418;;;;;23713:509;;;:::o;23176:529::-;23277:15;23294:23;23319:12;23333:23;23358:12;23374:19;23385:7;23374:10;:19::i;:::-;23276:117;;;;;;;;;;23422:28;23442:7;23422;:15;23430:6;23422:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23404:7;:15;23412:6;23404:15;;;;;;;;;;;;;;;:46;;;;23482:39;23505:15;23482:7;:18;23490:9;23482:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23461:7;:18;23469:9;23461:18;;;;;;;;;;;;;;;:60;;;;23553:39;23576:15;23553:7;:18;23561:9;23553:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23532:7;:18;23540:9;23532:18;;;;;;;;;;;;;;;:60;;;;23614:23;23626:4;23632;23614:11;:23::i;:::-;23670:9;23653:44;;23662:6;23653:44;;;23681:15;23653:44;;;;;;:::i;:::-;;;;;;;;23265:440;;;;;23176:529;;;:::o;22716:452::-;22815:15;22832:23;22857:12;22871:23;22896:12;22912:19;22923:7;22912:10;:19::i;:::-;22814:117;;;;;;;;;;22960:28;22980:7;22960;:15;22968:6;22960:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22942:7;:15;22950:6;22942:15;;;;;;;;;;;;;;;:46;;;;23020:39;23043:15;23020:7;:18;23028:9;23020:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22999:7;:18;23007:9;22999:18;;;;;;;;;;;;;;;:60;;;;23077:23;23089:4;23095;23077:11;:23::i;:::-;23133:9;23116:44;;23125:6;23116:44;;;23144:15;23116:44;;;;;;:::i;:::-;;;;;;;;22803:365;;;;;22716:452;;;:::o;24230:585::-;24333:15;24350:23;24375:12;24389:23;24414:12;24430:19;24441:7;24430:10;:19::i;:::-;24332:117;;;;;;;;;;24478:28;24498:7;24478;:15;24486:6;24478:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24460:7;:15;24468:6;24460:15;;;;;;;;;;;;;;;:46;;;;24535:28;24555:7;24535;:15;24543:6;24535:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24517:7;:15;24525:6;24517:15;;;;;;;;;;;;;;;:46;;;;24595:39;24618:15;24595:7;:18;24603:9;24595:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24574:7;:18;24582:9;24574:18;;;;;;;;;;;;;;;:60;;;;24666:39;24689:15;24666:7;:18;24674:9;24666:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24645:7;:18;24653:9;24645:18;;;;;;;;;;;;;;;:60;;;;24724:23;24736:4;24742;24724:11;:23::i;:::-;24780:9;24763:44;;24772:6;24763:44;;;24791:15;24763:44;;;;;;:::i;:::-;;;;;;;;24321:494;;;;;24230:585;;;:::o;26148:561::-;26198:7;26207;26227:15;26245:7;;26227:25;;26263:15;17030:28;26263:25;;26310:9;26305:289;26329:9;:16;;;;26325:1;:20;26305:289;;;26395:7;26371;:21;26379:9;26389:1;26379:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26371:21;;;;;;;;;;;;;;;;:31;:66;;;;26430:7;26406;:21;26414:9;26424:1;26414:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26406:21;;;;;;;;;;;;;;;;:31;26371:66;26367:97;;;26447:7;;17030:28;26439:25;;;;;;;;;26367:97;26489:34;26501:7;:21;26509:9;26519:1;26509:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26501:21;;;;;;;;;;;;;;;;26489:7;:11;;:34;;;;:::i;:::-;26479:44;;26548:34;26560:7;:21;26568:9;26578:1;26568:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26560:21;;;;;;;;;;;;;;;;26548:7;:11;;:34;;;;:::i;:::-;26538:44;;26347:3;;;;;:::i;:::-;;;;26305:289;;;;26618:20;17030:28;26618:7;;:11;;:20;;;;:::i;:::-;26608:7;:30;26604:61;;;26648:7;;17030:28;26640:25;;;;;;;;26604:61;26684:7;26693;26676:25;;;;;;26148:561;;;:::o;7243:278::-;7329:7;7361:1;7357;:5;7364:12;7349:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7388:9;7404:1;7400;:5;;;;:::i;:::-;7388:17;;7512:1;7505:8;;;7243:278;;;;;:::o;5668:471::-;5726:7;5976:1;5971;:6;5967:47;;6001:1;5994:8;;;;5967:47;6026:9;6042:1;6038;:5;;;;:::i;:::-;6026:17;;6071:1;6066;6062;:5;;;;:::i;:::-;:10;6054:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6130:1;6123:8;;;5668:471;;;;;:::o;24823:147::-;24901:17;24913:4;24901:7;;:11;;:17;;;;:::i;:::-;24891:7;:27;;;;24942:20;24957:4;24942:10;;:14;;:20;;;;:::i;:::-;24929:10;:33;;;;24823:147;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:231::-;7230:34;7226:1;7218:6;7214:14;7207:58;7299:14;7294:2;7286:6;7282:15;7275:39;7090:231;:::o;7327:366::-;7469:3;7490:67;7554:2;7549:3;7490:67;:::i;:::-;7483:74;;7566:93;7655:3;7566:93;:::i;:::-;7684:2;7679:3;7675:12;7668:19;;7327:366;;;:::o;7699:419::-;7865:4;7903:2;7892:9;7888:18;7880:26;;7952:9;7946:4;7942:20;7938:1;7927:9;7923:17;7916:47;7980:131;8106:4;7980:131;:::i;:::-;7972:139;;7699:419;;;:::o;8124:180::-;8172:77;8169:1;8162:88;8269:4;8266:1;8259:15;8293:4;8290:1;8283:15;8310:320;8354:6;8391:1;8385:4;8381:12;8371:22;;8438:1;8432:4;8428:12;8459:18;8449:81;;8515:4;8507:6;8503:17;8493:27;;8449:81;8577:2;8569:6;8566:14;8546:18;8543:38;8540:84;;8596:18;;:::i;:::-;8540:84;8361:269;8310:320;;;:::o;8636:229::-;8776:34;8772:1;8764:6;8760:14;8753:58;8845:12;8840:2;8832:6;8828:15;8821:37;8636:229;:::o;8871:366::-;9013:3;9034:67;9098:2;9093:3;9034:67;:::i;:::-;9027:74;;9110:93;9199:3;9110:93;:::i;:::-;9228:2;9223:3;9219:12;9212:19;;8871:366;;;:::o;9243:419::-;9409:4;9447:2;9436:9;9432:18;9424:26;;9496:9;9490:4;9486:20;9482:1;9471:9;9467:17;9460:47;9524:131;9650:4;9524:131;:::i;:::-;9516:139;;9243:419;;;:::o;9668:181::-;9808:33;9804:1;9796:6;9792:14;9785:57;9668:181;:::o;9855:366::-;9997:3;10018:67;10082:2;10077:3;10018:67;:::i;:::-;10011:74;;10094:93;10183:3;10094:93;:::i;:::-;10212:2;10207:3;10203:12;10196:19;;9855:366;;;:::o;10227:419::-;10393:4;10431:2;10420:9;10416:18;10408:26;;10480:9;10474:4;10470:20;10466:1;10455:9;10451:17;10444:47;10508:131;10634:4;10508:131;:::i;:::-;10500:139;;10227:419;;;:::o;10652:182::-;10792:34;10788:1;10780:6;10776:14;10769:58;10652:182;:::o;10840:366::-;10982:3;11003:67;11067:2;11062:3;11003:67;:::i;:::-;10996:74;;11079:93;11168:3;11079:93;:::i;:::-;11197:2;11192:3;11188:12;11181:19;;10840:366;;;:::o;11212:419::-;11378:4;11416:2;11405:9;11401:18;11393:26;;11465:9;11459:4;11455:20;11451:1;11440:9;11436:17;11429:47;11493:131;11619:4;11493:131;:::i;:::-;11485:139;;11212:419;;;:::o;11637:177::-;11777:29;11773:1;11765:6;11761:14;11754:53;11637:177;:::o;11820:366::-;11962:3;11983:67;12047:2;12042:3;11983:67;:::i;:::-;11976:74;;12059:93;12148:3;12059:93;:::i;:::-;12177:2;12172:3;12168:12;12161:19;;11820:366;;;:::o;12192:419::-;12358:4;12396:2;12385:9;12381:18;12373:26;;12445:9;12439:4;12435:20;12431:1;12420:9;12416:17;12409:47;12473:131;12599:4;12473:131;:::i;:::-;12465:139;;12192:419;;;:::o;12617:225::-;12757:34;12753:1;12745:6;12741:14;12734:58;12826:8;12821:2;12813:6;12809:15;12802:33;12617:225;:::o;12848:366::-;12990:3;13011:67;13075:2;13070:3;13011:67;:::i;:::-;13004:74;;13087:93;13176:3;13087:93;:::i;:::-;13205:2;13200:3;13196:12;13189:19;;12848:366;;;:::o;13220:419::-;13386:4;13424:2;13413:9;13409:18;13401:26;;13473:9;13467:4;13463:20;13459:1;13448:9;13444:17;13437:47;13501:131;13627:4;13501:131;:::i;:::-;13493:139;;13220:419;;;:::o;13645:180::-;13693:77;13690:1;13683:88;13790:4;13787:1;13780:15;13814:4;13811:1;13804:15;13831:180;13879:77;13876:1;13869:88;13976:4;13973:1;13966:15;14000:4;13997:1;13990:15;14017:194;14057:4;14077:20;14095:1;14077:20;:::i;:::-;14072:25;;14111:20;14129:1;14111:20;:::i;:::-;14106:25;;14155:1;14152;14148:9;14140:17;;14179:1;14173:4;14170:11;14167:37;;;14184:18;;:::i;:::-;14167:37;14017:194;;;;:::o;14217:180::-;14265:77;14262:1;14255:88;14362:4;14359:1;14352:15;14386:4;14383:1;14376:15;14403:233;14442:3;14465:24;14483:5;14465:24;:::i;:::-;14456:33;;14511:66;14504:5;14501:77;14498:103;;14581:18;;:::i;:::-;14498:103;14628:1;14621:5;14617:13;14610:20;;14403:233;;;:::o;14642:191::-;14682:3;14701:20;14719:1;14701:20;:::i;:::-;14696:25;;14735:20;14753:1;14735:20;:::i;:::-;14730:25;;14778:1;14775;14771:9;14764:16;;14799:3;14796:1;14793:10;14790:36;;;14806:18;;:::i;:::-;14790:36;14642:191;;;;:::o;14839:177::-;14979:29;14975:1;14967:6;14963:14;14956:53;14839:177;:::o;15022:366::-;15164:3;15185:67;15249:2;15244:3;15185:67;:::i;:::-;15178:74;;15261:93;15350:3;15261:93;:::i;:::-;15379:2;15374:3;15370:12;15363:19;;15022:366;;;:::o;15394:419::-;15560:4;15598:2;15587:9;15583:18;15575:26;;15647:9;15641:4;15637:20;15633:1;15622:9;15618:17;15611:47;15675:131;15801:4;15675:131;:::i;:::-;15667:139;;15394:419;;;:::o;15819:223::-;15959:34;15955:1;15947:6;15943:14;15936:58;16028:6;16023:2;16015:6;16011:15;16004:31;15819:223;:::o;16048:366::-;16190:3;16211:67;16275:2;16270:3;16211:67;:::i;:::-;16204:74;;16287:93;16376:3;16287:93;:::i;:::-;16405:2;16400:3;16396:12;16389:19;;16048:366;;;:::o;16420:419::-;16586:4;16624:2;16613:9;16609:18;16601:26;;16673:9;16667:4;16663:20;16659:1;16648:9;16644:17;16637:47;16701:131;16827:4;16701:131;:::i;:::-;16693:139;;16420:419;;;:::o;16845:221::-;16985:34;16981:1;16973:6;16969:14;16962:58;17054:4;17049:2;17041:6;17037:15;17030:29;16845:221;:::o;17072:366::-;17214:3;17235:67;17299:2;17294:3;17235:67;:::i;:::-;17228:74;;17311:93;17400:3;17311:93;:::i;:::-;17429:2;17424:3;17420:12;17413:19;;17072:366;;;:::o;17444:419::-;17610:4;17648:2;17637:9;17633:18;17625:26;;17697:9;17691:4;17687:20;17683:1;17672:9;17668:17;17661:47;17725:131;17851:4;17725:131;:::i;:::-;17717:139;;17444:419;;;:::o;17869:224::-;18009:34;18005:1;17997:6;17993:14;17986:58;18078:7;18073:2;18065:6;18061:15;18054:32;17869:224;:::o;18099:366::-;18241:3;18262:67;18326:2;18321:3;18262:67;:::i;:::-;18255:74;;18338:93;18427:3;18338:93;:::i;:::-;18456:2;18451:3;18447:12;18440:19;;18099:366;;;:::o;18471:419::-;18637:4;18675:2;18664:9;18660:18;18652:26;;18724:9;18718:4;18714:20;18710:1;18699:9;18695:17;18688:47;18752:131;18878:4;18752:131;:::i;:::-;18744:139;;18471:419;;;:::o;18896:222::-;19036:34;19032:1;19024:6;19020:14;19013:58;19105:5;19100:2;19092:6;19088:15;19081:30;18896:222;:::o;19124:366::-;19266:3;19287:67;19351:2;19346:3;19287:67;:::i;:::-;19280:74;;19363:93;19452:3;19363:93;:::i;:::-;19481:2;19476:3;19472:12;19465:19;;19124:366;;;:::o;19496:419::-;19662:4;19700:2;19689:9;19685:18;19677:26;;19749:9;19743:4;19739:20;19735:1;19724:9;19720:17;19713:47;19777:131;19903:4;19777:131;:::i;:::-;19769:139;;19496:419;;;:::o;19921:228::-;20061:34;20057:1;20049:6;20045:14;20038:58;20130:11;20125:2;20117:6;20113:15;20106:36;19921:228;:::o;20155:366::-;20297:3;20318:67;20382:2;20377:3;20318:67;:::i;:::-;20311:74;;20394:93;20483:3;20394:93;:::i;:::-;20512:2;20507:3;20503:12;20496:19;;20155:366;;;:::o;20527:419::-;20693:4;20731:2;20720:9;20716:18;20708:26;;20780:9;20774:4;20770:20;20766:1;20755:9;20751:17;20744:47;20808:131;20934:4;20808:131;:::i;:::-;20800:139;;20527:419;;;:::o;20952:180::-;21000:77;20997:1;20990:88;21097:4;21094:1;21087:15;21121:4;21118:1;21111:15;21138:185;21178:1;21195:20;21213:1;21195:20;:::i;:::-;21190:25;;21229:20;21247:1;21229:20;:::i;:::-;21224:25;;21268:1;21258:35;;21273:18;;:::i;:::-;21258:35;21315:1;21312;21308:9;21303:14;;21138:185;;;;:::o;21329:410::-;21369:7;21392:20;21410:1;21392:20;:::i;:::-;21387:25;;21426:20;21444:1;21426:20;:::i;:::-;21421:25;;21481:1;21478;21474:9;21503:30;21521:11;21503:30;:::i;:::-;21492:41;;21682:1;21673:7;21669:15;21666:1;21663:22;21643:1;21636:9;21616:83;21593:139;;21712:18;;:::i;:::-;21593:139;21377:362;21329:410;;;;:::o;21745:220::-;21885:34;21881:1;21873:6;21869:14;21862:58;21954:3;21949:2;21941:6;21937:15;21930:28;21745:220;:::o;21971:366::-;22113:3;22134:67;22198:2;22193:3;22134:67;:::i;:::-;22127:74;;22210:93;22299:3;22210:93;:::i;:::-;22328:2;22323:3;22319:12;22312:19;;21971:366;;;:::o;22343:419::-;22509:4;22547:2;22536:9;22532:18;22524:26;;22596:9;22590:4;22586:20;22582:1;22571:9;22567:17;22560:47;22624:131;22750:4;22624:131;:::i;:::-;22616:139;;22343:419;;;:::o

Swarm Source

ipfs://f3414b0055b7fffda071ca1ad8a1feba42044646b8b96fd29844e0bdb8e648fc
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.