ETH Price: $3,247.76 (+2.60%)
Gas: 1 Gwei

Token

AIRPLANE (AIR)
 

Overview

Max Total Supply

10,000,000 AIR

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
splashnaxx.eth
Balance
1,493.472352873 AIR

Value
$0.00
0x72eba299088937ceaaB3d7BDE6234AEE81a8BF76
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
AIRPLANE

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-21
*/

pragma solidity ^0.6.0;

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

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



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

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

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

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

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

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

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

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



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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

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

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

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

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

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

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        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 AIRPLANE 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 _tTotal = 1 * 10**7 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;

    string private _name = 'AIRPLANE';
    string private _symbol = 'AIR';
    uint8 private _decimals = 9;
    
    uint256 private _taxFee = 1;
    uint256 private _burnFee = 1;
    uint256 private _maxTxAmount = 9500e9;
    
    address private burner=0x0000000000000000000000000000000000000001;

    constructor () public {
        _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 view override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "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 totalBurn() public view returns (uint256) {
        return _tBurnTotal;
    }

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

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

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

    function excludeAccount(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        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(sender != owner() && recipient != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        
        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 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _reflectFee(rFee, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _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, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 rBurn, uint256 tFee, uint256 tBurn) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
        _tBurnTotal = _tBurnTotal.add(tBurn);
        _rOwned[burner]=_rOwned[burner].add(rBurn);
    }

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

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

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn);
        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);
    }
    
    function _getTaxFee() private view returns(uint256) {
        return _taxFee;
    }

    function _getMaxTxAmount() private view returns(uint256) {
        return _maxTxAmount;
    }
    
    function _setTaxFee(uint256 taxFee) external onlyOwner() {
        require(taxFee >= 1 && taxFee <= 6, 'taxFee should be in 1 - 6');
        _taxFee = taxFee;
    }
    
    function _setBurnFee(uint256 burnFee) external onlyOwner() {
        require(burnFee >= 1 && burnFee <= 3, 'burnFee should be in 1 - 3');
        _burnFee = burnFee;
    }
    
    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= 9000e9 , 'maxTxAmount should be greater than 9000e9');
        _maxTxAmount = maxTxAmount;
    }
}

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":"uint256","name":"burnFee","type":"uint256"}],"name":"_setBurnFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052662386f26fc10000600655600654600019816200001d57fe5b06600019036007556040518060400160405280600881526020017f414952504c414e45000000000000000000000000000000000000000000000000815250600a908051906020019062000072929190620002cb565b506040518060400160405280600381526020017f4149520000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000c0929190620002cb565b506009600c60006101000a81548160ff021916908360ff1602179055506001600d556001600e556508a3e4201800600f556001601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200014057600080fd5b50600062000153620002c360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506007546001600062000208620002c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000256620002c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000371565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030e57805160ff19168380011785556200033f565b828001600101855582156200033f579182015b828111156200033e57825182559160200191906001019062000321565b5b5090506200034e919062000352565b5090565b5b808211156200036d57600081600090555060010162000353565b5090565b613c0b80620003816000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80634549b039116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e14610745578063f2cc0c18146107bd578063f2fde38b14610801578063f84354f11461084557610173565b8063a457c2d714610623578063a9059cbb14610687578063cba0e996146106eb57610173565b80634549b0391461048e5780635880b873146104dc57806370a082311461050a578063715018a6146105625780638da5cb5b1461056c57806395d89b41146105a057610173565b80632d838119116101305780632d8381191461034d578063313ce5671461038f57806339509351146103b05780633b6b1961146104145780633bd5d173146104425780633c9f861d1461047057610173565b806306fdde0314610178578063095ea7b3146101fb57806313114a9d1461025f57806318160ddd1461027d5780631bbae6e01461029b57806323b872dd146102c9575b600080fd5b610180610889565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c05780820151818401526020810190506101a5565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102476004803603604081101561021157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092b565b60405180821515815260200191505060405180910390f35b610267610949565b6040518082815260200191505060405180910390f35b610285610953565b6040518082815260200191505060405180910390f35b6102c7600480360360208110156102b157600080fd5b810190808035906020019092919050505061095d565b005b610335600480360360608110156102df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a8e565b60405180821515815260200191505060405180910390f35b6103796004803603602081101561036357600080fd5b8101908080359060200190929190505050610b67565b6040518082815260200191505060405180910390f35b610397610beb565b604051808260ff16815260200191505060405180910390f35b6103fc600480360360408110156103c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c02565b60405180821515815260200191505060405180910390f35b6104406004803603602081101561042a57600080fd5b8101908080359060200190929190505050610cb5565b005b61046e6004803603602081101561045857600080fd5b8101908080359060200190929190505050610e0b565b005b610478610f9c565b6040518082815260200191505060405180910390f35b6104c6600480360360408110156104a457600080fd5b8101908080359060200190929190803515159060200190929190505050610fa6565b6040518082815260200191505060405180910390f35b610508600480360360208110156104f257600080fd5b810190808035906020019092919050505061105d565b005b61054c6004803603602081101561052057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111b3565b6040518082815260200191505060405180910390f35b61056a61129e565b005b610574611424565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105a861144d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e85780820151818401526020810190506105cd565b50505050905090810190601f1680156106155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066f6004803603604081101561063957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ef565b60405180821515815260200191505060405180910390f35b6106d36004803603604081101561069d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115bc565b60405180821515815260200191505060405180910390f35b61072d6004803603602081101561070157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115da565b60405180821515815260200191505060405180910390f35b6107a76004803603604081101561075b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611630565b6040518082815260200191505060405180910390f35b6107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b7565b005b6108436004803603602081101561081757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a6a565b005b6108876004803603602081101561085b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c75565b005b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109215780601f106108f657610100808354040283529160200191610921565b820191906000526020600020905b81548152906001019060200180831161090457829003601f168201915b5050505050905090565b600061093f610938611fff565b8484612007565b6001905092915050565b6000600854905090565b6000600654905090565b610965611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b65082f79cd9000811015610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613a576029913960400191505060405180910390fd5b80600f8190555050565b6000610a9b8484846121fe565b610b5c84610aa7611fff565b610b5785604051806060016040528060288152602001613ac960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b0d611fff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272e9092919063ffffffff16565b612007565b600190509392505050565b6000600754821115610bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806139e5602a913960400191505060405180910390fd5b6000610bce6127ee565b9050610be3818461281990919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610cab610c0f611fff565b84610ca68560036000610c20611fff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b612007565b6001905092915050565b610cbd611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015610d8f575060038111155b610e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6275726e4665652073686f756c6420626520696e2031202d203300000000000081525060200191505060405180910390fd5b80600e8190555050565b6000610e15611fff565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610eba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613b85602c913960400191505060405180910390fd5b6000610ec5836128eb565b50505050509050610f1e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f768160075461295390919063ffffffff16565b600781905550610f918360085461286390919063ffffffff16565b600881905550505050565b6000600954905090565b6000600654831115611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611040576000611030846128eb565b5050505050905080915050611057565b600061104b846128eb565b50505050915050809150505b92915050565b611065611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611137575060068111155b6111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7461784665652073686f756c6420626520696e2031202d20360000000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561124e57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611299565b611296600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b67565b90505b919050565b6112a6611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611366576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114e55780601f106114ba576101008083540402835291602001916114e5565b820191906000526020600020905b8154815290600101906020018083116114c857829003601f168201915b5050505050905090565b60006115b26114fc611fff565b846115ad85604051806060016040528060258152602001613bb16025913960036000611526611fff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272e9092919063ffffffff16565b612007565b6001905092915050565b60006115d06115c9611fff565b84846121fe565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116bf611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461177f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611818576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613b636022913960400191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156119ac57611968600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b67565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a72611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a0f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c7d611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611dfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600580549050811015611ffb578173ffffffffffffffffffffffffffffffffffffffff1660058281548110611e3057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611fee57600560016005805490500381548110611e8c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611ec457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480611fb457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611ffb565b8080600101915050611dff565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561208d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613b3f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612113576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613a356022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612284576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613b1a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561230a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806139c26023913960400191505060405180910390fd5b60008111612363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613af16029913960400191505060405180910390fd5b61236b611424565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123d957506123a9611424565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561243a57600f54811115612439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613a806028913960400191505060405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124dd5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124f2576124ed83838361299d565b612729565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125955750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125aa576125a5838383612c1b565b612728565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561264e5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126635761265e838383612e99565b612727565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127055750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561271a57612715838383613082565b612726565b612725838383612e99565b5b5b5b5b505050565b60008383111582906127db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127a0578082015181840152602081019050612785565b50505050905090810190601f1680156127cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006127fb613395565b91509150612812818361281990919063ffffffff16565b9250505090565b600061285b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613626565b905092915050565b6000808284019050838110156128e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006129088a600d54600e546136ec565b92509250925060006129186127ee565b9050600080600061292b8e878787613782565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061299583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061272e565b905092915050565b60006129a76127ee565b90506000806000806000806129bb886128eb565b95509550955095509550955060006129dc888361380b90919063ffffffff16565b9050612a3089600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac587600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b5a86600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ba985828585613891565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612c256127ee565b9050600080600080600080612c39886128eb565b9550955095509550955095506000612c5a888361380b90919063ffffffff16565b9050612cae87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d4384600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dd886600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2785828585613891565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612ea36127ee565b9050600080600080600080612eb7886128eb565b9550955095509550955095506000612ed8888361380b90919063ffffffff16565b9050612f2c87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fc186600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061301085828585613891565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b600061308c6127ee565b90506000806000806000806130a0886128eb565b95509550955095509550955060006130c1888361380b90919063ffffffff16565b905061311589600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131aa87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061323f84600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132d486600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061332385828585613891565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b600080600060075490506000600654905060005b6005805490508110156135e9578260016000600584815481106133c857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806134af575081600260006005848154811061344757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156134c65760075460065494509450505050613622565b61354f60016000600584815481106134da57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461295390919063ffffffff16565b92506135da600260006005848154811061356557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361295390919063ffffffff16565b915080806001019150506133a9565b5061360160065460075461281990919063ffffffff16565b82101561361957600754600654935093505050613622565b81819350935050505b9091565b600080831182906136d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561369757808201518184015260208101905061367c565b50505050905090810190601f1680156136c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816136de57fe5b049050809150509392505050565b600080600080613718606461370a888a61380b90919063ffffffff16565b61281990919063ffffffff16565b905060006137426064613734888b61380b90919063ffffffff16565b61281990919063ffffffff16565b9050600061376b8261375d858c61295390919063ffffffff16565b61295390919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061379b858961380b90919063ffffffff16565b905060006137b2868961380b90919063ffffffff16565b905060006137c9878961380b90919063ffffffff16565b905060006137f2826137e4858761295390919063ffffffff16565b61295390919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561381e576000905061388b565b600082840290508284828161382f57fe5b0414613886576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613aa86021913960400191505060405180910390fd5b809150505b92915050565b6138a68460075461295390919063ffffffff16565b6007819055506138c18260085461286390919063ffffffff16565b6008819055506138dc8160095461286390919063ffffffff16565b6009819055506139568360016000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b60016000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e203930303065395472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203720f0538fe0e80a3e62081097bb6aee6a5874a1bd5e62ee0ccc89f96718c9f464736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c80634549b039116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e14610745578063f2cc0c18146107bd578063f2fde38b14610801578063f84354f11461084557610173565b8063a457c2d714610623578063a9059cbb14610687578063cba0e996146106eb57610173565b80634549b0391461048e5780635880b873146104dc57806370a082311461050a578063715018a6146105625780638da5cb5b1461056c57806395d89b41146105a057610173565b80632d838119116101305780632d8381191461034d578063313ce5671461038f57806339509351146103b05780633b6b1961146104145780633bd5d173146104425780633c9f861d1461047057610173565b806306fdde0314610178578063095ea7b3146101fb57806313114a9d1461025f57806318160ddd1461027d5780631bbae6e01461029b57806323b872dd146102c9575b600080fd5b610180610889565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c05780820151818401526020810190506101a5565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102476004803603604081101561021157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092b565b60405180821515815260200191505060405180910390f35b610267610949565b6040518082815260200191505060405180910390f35b610285610953565b6040518082815260200191505060405180910390f35b6102c7600480360360208110156102b157600080fd5b810190808035906020019092919050505061095d565b005b610335600480360360608110156102df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a8e565b60405180821515815260200191505060405180910390f35b6103796004803603602081101561036357600080fd5b8101908080359060200190929190505050610b67565b6040518082815260200191505060405180910390f35b610397610beb565b604051808260ff16815260200191505060405180910390f35b6103fc600480360360408110156103c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c02565b60405180821515815260200191505060405180910390f35b6104406004803603602081101561042a57600080fd5b8101908080359060200190929190505050610cb5565b005b61046e6004803603602081101561045857600080fd5b8101908080359060200190929190505050610e0b565b005b610478610f9c565b6040518082815260200191505060405180910390f35b6104c6600480360360408110156104a457600080fd5b8101908080359060200190929190803515159060200190929190505050610fa6565b6040518082815260200191505060405180910390f35b610508600480360360208110156104f257600080fd5b810190808035906020019092919050505061105d565b005b61054c6004803603602081101561052057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111b3565b6040518082815260200191505060405180910390f35b61056a61129e565b005b610574611424565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105a861144d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e85780820151818401526020810190506105cd565b50505050905090810190601f1680156106155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066f6004803603604081101561063957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ef565b60405180821515815260200191505060405180910390f35b6106d36004803603604081101561069d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115bc565b60405180821515815260200191505060405180910390f35b61072d6004803603602081101561070157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115da565b60405180821515815260200191505060405180910390f35b6107a76004803603604081101561075b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611630565b6040518082815260200191505060405180910390f35b6107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b7565b005b6108436004803603602081101561081757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a6a565b005b6108876004803603602081101561085b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c75565b005b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109215780601f106108f657610100808354040283529160200191610921565b820191906000526020600020905b81548152906001019060200180831161090457829003601f168201915b5050505050905090565b600061093f610938611fff565b8484612007565b6001905092915050565b6000600854905090565b6000600654905090565b610965611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b65082f79cd9000811015610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613a576029913960400191505060405180910390fd5b80600f8190555050565b6000610a9b8484846121fe565b610b5c84610aa7611fff565b610b5785604051806060016040528060288152602001613ac960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b0d611fff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272e9092919063ffffffff16565b612007565b600190509392505050565b6000600754821115610bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806139e5602a913960400191505060405180910390fd5b6000610bce6127ee565b9050610be3818461281990919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610cab610c0f611fff565b84610ca68560036000610c20611fff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b612007565b6001905092915050565b610cbd611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015610d8f575060038111155b610e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6275726e4665652073686f756c6420626520696e2031202d203300000000000081525060200191505060405180910390fd5b80600e8190555050565b6000610e15611fff565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610eba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613b85602c913960400191505060405180910390fd5b6000610ec5836128eb565b50505050509050610f1e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f768160075461295390919063ffffffff16565b600781905550610f918360085461286390919063ffffffff16565b600881905550505050565b6000600954905090565b6000600654831115611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611040576000611030846128eb565b5050505050905080915050611057565b600061104b846128eb565b50505050915050809150505b92915050565b611065611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611137575060068111155b6111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7461784665652073686f756c6420626520696e2031202d20360000000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561124e57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611299565b611296600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b67565b90505b919050565b6112a6611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611366576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114e55780601f106114ba576101008083540402835291602001916114e5565b820191906000526020600020905b8154815290600101906020018083116114c857829003601f168201915b5050505050905090565b60006115b26114fc611fff565b846115ad85604051806060016040528060258152602001613bb16025913960036000611526611fff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272e9092919063ffffffff16565b612007565b6001905092915050565b60006115d06115c9611fff565b84846121fe565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116bf611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461177f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611818576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613b636022913960400191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156119ac57611968600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b67565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a72611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a0f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c7d611fff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611dfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600580549050811015611ffb578173ffffffffffffffffffffffffffffffffffffffff1660058281548110611e3057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611fee57600560016005805490500381548110611e8c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611ec457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480611fb457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611ffb565b8080600101915050611dff565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561208d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613b3f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612113576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613a356022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612284576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613b1a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561230a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806139c26023913960400191505060405180910390fd5b60008111612363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613af16029913960400191505060405180910390fd5b61236b611424565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123d957506123a9611424565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561243a57600f54811115612439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613a806028913960400191505060405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124dd5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124f2576124ed83838361299d565b612729565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125955750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125aa576125a5838383612c1b565b612728565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561264e5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126635761265e838383612e99565b612727565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127055750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561271a57612715838383613082565b612726565b612725838383612e99565b5b5b5b5b505050565b60008383111582906127db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127a0578082015181840152602081019050612785565b50505050905090810190601f1680156127cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006127fb613395565b91509150612812818361281990919063ffffffff16565b9250505090565b600061285b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613626565b905092915050565b6000808284019050838110156128e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006129088a600d54600e546136ec565b92509250925060006129186127ee565b9050600080600061292b8e878787613782565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061299583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061272e565b905092915050565b60006129a76127ee565b90506000806000806000806129bb886128eb565b95509550955095509550955060006129dc888361380b90919063ffffffff16565b9050612a3089600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac587600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b5a86600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ba985828585613891565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612c256127ee565b9050600080600080600080612c39886128eb565b9550955095509550955095506000612c5a888361380b90919063ffffffff16565b9050612cae87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d4384600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dd886600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2785828585613891565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612ea36127ee565b9050600080600080600080612eb7886128eb565b9550955095509550955095506000612ed8888361380b90919063ffffffff16565b9050612f2c87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fc186600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061301085828585613891565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b600061308c6127ee565b90506000806000806000806130a0886128eb565b95509550955095509550955060006130c1888361380b90919063ffffffff16565b905061311589600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131aa87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061323f84600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132d486600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061332385828585613891565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b600080600060075490506000600654905060005b6005805490508110156135e9578260016000600584815481106133c857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806134af575081600260006005848154811061344757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156134c65760075460065494509450505050613622565b61354f60016000600584815481106134da57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461295390919063ffffffff16565b92506135da600260006005848154811061356557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361295390919063ffffffff16565b915080806001019150506133a9565b5061360160065460075461281990919063ffffffff16565b82101561361957600754600654935093505050613622565b81819350935050505b9091565b600080831182906136d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561369757808201518184015260208101905061367c565b50505050905090810190601f1680156136c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816136de57fe5b049050809150509392505050565b600080600080613718606461370a888a61380b90919063ffffffff16565b61281990919063ffffffff16565b905060006137426064613734888b61380b90919063ffffffff16565b61281990919063ffffffff16565b9050600061376b8261375d858c61295390919063ffffffff16565b61295390919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061379b858961380b90919063ffffffff16565b905060006137b2868961380b90919063ffffffff16565b905060006137c9878961380b90919063ffffffff16565b905060006137f2826137e4858761295390919063ffffffff16565b61295390919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561381e576000905061388b565b600082840290508284828161382f57fe5b0414613886576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613aa86021913960400191505060405180910390fd5b809150505b92915050565b6138a68460075461295390919063ffffffff16565b6007819055506138c18260085461286390919063ffffffff16565b6008819055506138dc8160095461286390919063ffffffff16565b6009819055506139568360016000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286390919063ffffffff16565b60016000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e203930303065395472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203720f0538fe0e80a3e62081097bb6aee6a5874a1bd5e62ee0ccc89f96718c9f464736f6c634300060c0033

Deployed Bytecode Sourcemap

16798:12405:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17862:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18774:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19885:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18139:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29001:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18943:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20909:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18048:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19264:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28815:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20080:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19984:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20465:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28636:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18242:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16244:148;;;:::i;:::-;;15602:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17953:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19490:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18448:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19767:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18623:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21170:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16547:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21621:478;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17862:83;17899:13;17932:5;17925:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17862:83;:::o;18774:161::-;18849:4;18866:39;18875:12;:10;:12::i;:::-;18889:7;18898:6;18866:8;:39::i;:::-;18923:4;18916:11;;18774:161;;;;:::o;19885:87::-;19927:7;19954:10;;19947:17;;19885:87;:::o;18139:95::-;18192:7;18219;;18212:14;;18139:95;:::o;29001:199::-;15824:12;:10;:12::i;:::-;15814:22;;:6;;;;;;;;;;:22;;;15806:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29102:6:::1;29087:11;:21;;29079:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29181:11;29166:12;:26;;;;29001:199:::0;:::o;18943:313::-;19041:4;19058:36;19068:6;19076:9;19087:6;19058:9;:36::i;:::-;19105:121;19114:6;19122:12;:10;:12::i;:::-;19136:89;19174:6;19136:89;;;;;;;;;;;;;;;;;:11;:19;19148:6;19136:19;;;;;;;;;;;;;;;:33;19156:12;:10;:12::i;:::-;19136:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19105:8;:121::i;:::-;19244:4;19237:11;;18943:313;;;;;:::o;20909:253::-;20975:7;21014;;21003;:18;;20995:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21079:19;21102:10;:8;:10::i;:::-;21079:33;;21130:24;21142:11;21130:7;:11;;:24;;;;:::i;:::-;21123:31;;;20909:253;;;:::o;18048:83::-;18089:5;18114:9;;;;;;;;;;;18107:16;;18048:83;:::o;19264:218::-;19352:4;19369:83;19378:12;:10;:12::i;:::-;19392:7;19401:50;19440:10;19401:11;:25;19413:12;:10;:12::i;:::-;19401:25;;;;;;;;;;;;;;;:34;19427:7;19401:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19369:8;:83::i;:::-;19470:4;19463:11;;19264:218;;;;:::o;28815:174::-;15824:12;:10;:12::i;:::-;15814:22;;:6;;;;;;;;;;:22;;;15806:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28904:1:::1;28893:7;:12;;:28;;;;;28920:1;28909:7;:12;;28893:28;28885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;28974:7;28963:8;:18;;;;28815:174:::0;:::o;20080:377::-;20132:14;20149:12;:10;:12::i;:::-;20132:29;;20181:11;:19;20193:6;20181:19;;;;;;;;;;;;;;;;;;;;;;;;;20180:20;20172:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20261:15;20285:19;20296:7;20285:10;:19::i;:::-;20260:44;;;;;;;20333:28;20353:7;20333;:15;20341:6;20333:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20315:7;:15;20323:6;20315:15;;;;;;;;;;;;;;;:46;;;;20382:20;20394:7;20382;;:11;;:20;;;;:::i;:::-;20372:7;:30;;;;20426:23;20441:7;20426:10;;:14;;:23;;;;:::i;:::-;20413:10;:36;;;;20080:377;;;:::o;19984:88::-;20026:7;20053:11;;20046:18;;19984:88;:::o;20465:436::-;20555:7;20594;;20583;:18;;20575:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20653:17;20648:246;;20688:15;20712:19;20723:7;20712:10;:19::i;:::-;20687:44;;;;;;;20753:7;20746:14;;;;;20648:246;20795:23;20826:19;20837:7;20826:10;:19::i;:::-;20793:52;;;;;;;20867:15;20860:22;;;20465:436;;;;;:::o;28636:167::-;15824:12;:10;:12::i;:::-;15814:22;;:6;;;;;;;;;;:22;;;15806:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28722:1:::1;28712:6;:11;;:26;;;;;28737:1;28727:6;:11;;28712:26;28704:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;28789:6;28779:7;:16;;;;28636:167:::0;:::o;18242:198::-;18308:7;18332:11;:20;18344:7;18332:20;;;;;;;;;;;;;;;;;;;;;;;;;18328:49;;;18361:7;:16;18369:7;18361:16;;;;;;;;;;;;;;;;18354:23;;;;18328:49;18395:37;18415:7;:16;18423:7;18415:16;;;;;;;;;;;;;;;;18395:19;:37::i;:::-;18388:44;;18242:198;;;;:::o;16244:148::-;15824:12;:10;:12::i;:::-;15814:22;;:6;;;;;;;;;;:22;;;15806:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16351:1:::1;16314:40;;16335:6;::::0;::::1;;;;;;;;16314:40;;;;;;;;;;;;16382:1;16365:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16244:148::o:0;15602:79::-;15640:7;15667:6;;;;;;;;;;;15660:13;;15602:79;:::o;17953:87::-;17992:13;18025:7;18018:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17953:87;:::o;19490:269::-;19583:4;19600:129;19609:12;:10;:12::i;:::-;19623:7;19632:96;19671:15;19632:96;;;;;;;;;;;;;;;;;:11;:25;19644:12;:10;:12::i;:::-;19632:25;;;;;;;;;;;;;;;:34;19658:7;19632:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19600:8;:129::i;:::-;19747:4;19740:11;;19490:269;;;;:::o;18448:167::-;18526:4;18543:42;18553:12;:10;:12::i;:::-;18567:9;18578:6;18543:9;:42::i;:::-;18603:4;18596:11;;18448:167;;;;:::o;19767:110::-;19825:4;19849:11;:20;19861:7;19849:20;;;;;;;;;;;;;;;;;;;;;;;;;19842:27;;19767:110;;;:::o;18623:143::-;18704:7;18731:11;:18;18743:5;18731:18;;;;;;;;;;;;;;;:27;18750:7;18731:27;;;;;;;;;;;;;;;;18724:34;;18623:143;;;;:::o;21170:443::-;15824:12;:10;:12::i;:::-;15814:22;;:6;;;;;;;;;;:22;;;15806:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21262:42:::1;21251:53;;:7;:53;;;;21243:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21363:11;:20;21375:7;21363:20;;;;;;;;;;;;;;;;;;;;;;;;;21362:21;21354:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21448:1;21429:7;:16;21437:7;21429:16;;;;;;;;;;;;;;;;:20;21426:108;;;21485:37;21505:7;:16;21513:7;21505:16;;;;;;;;;;;;;;;;21485:19;:37::i;:::-;21466:7;:16;21474:7;21466:16;;;;;;;;;;;;;;;:56;;;;21426:108;21567:4;21544:11;:20;21556:7;21544:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21582:9;21597:7;21582:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21170:443:::0;:::o;16547:244::-;15824:12;:10;:12::i;:::-;15814:22;;:6;;;;;;;;;;:22;;;15806:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16656:1:::1;16636:22;;:8;:22;;;;16628:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16746:8;16717:38;;16738:6;::::0;::::1;;;;;;;;16717:38;;;;;;;;;;;;16775:8;16766:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16547:244:::0;:::o;21621:478::-;15824:12;:10;:12::i;:::-;15814:22;;:6;;;;;;;;;;:22;;;15806:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21702:11:::1;:20;21714:7;21702:20;;;;;;;;;;;;;;;;;;;;;;;;;21694:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21770:9;21765:327;21789:9;:16;;;;21785:1;:20;21765:327;;;21847:7;21831:23;;:9;21841:1;21831:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;21827:254;;;21890:9;21919:1;21900:9;:16;;;;:20;21890:31;;;;;;;;;;;;;;;;;;;;;;;;;21875:9;21885:1;21875:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21959:1;21940:7;:16;21948:7;21940:16;;;;;;;;;;;;;;;:20;;;;22002:5;21979:11;:20;21991:7;21979:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22026:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22060:5;;21827:254;21807:3;;;;;;;21765:327;;;;21621:478:::0;:::o;60:106::-;113:15;148:10;141:17;;60:106;:::o;22107:337::-;22217:1;22200:19;;:5;:19;;;;22192:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22298:1;22279:21;;:7;:21;;;;22271:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22382:6;22352:11;:18;22364:5;22352:18;;;;;;;;;;;;;;;:27;22371:7;22352:27;;;;;;;;;;;;;;;:36;;;;22420:7;22404:32;;22413:5;22404:32;;;22429:6;22404:32;;;;;;;;;;;;;;;;;;22107:337;;;:::o;22452:1096::-;22567:1;22549:20;;:6;:20;;;;22541:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22651:1;22630:23;;:9;:23;;;;22622:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22721:1;22712:6;:10;22704:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22802:7;:5;:7::i;:::-;22792:17;;:6;:17;;;;:41;;;;;22826:7;:5;:7::i;:::-;22813:20;;:9;:20;;;;22792:41;22789:134;;;22866:12;;22856:6;:22;;22848:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22789:134;22948:11;:19;22960:6;22948:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;22972:11;:22;22984:9;22972:22;;;;;;;;;;;;;;;;;;;;;;;;;22971:23;22948:46;22944:597;;;23011:48;23033:6;23041:9;23052:6;23011:21;:48::i;:::-;22944:597;;;23082:11;:19;23094:6;23082:19;;;;;;;;;;;;;;;;;;;;;;;;;23081:20;:46;;;;;23105:11;:22;23117:9;23105:22;;;;;;;;;;;;;;;;;;;;;;;;;23081:46;23077:464;;;23144:46;23164:6;23172:9;23183:6;23144:19;:46::i;:::-;23077:464;;;23213:11;:19;23225:6;23213:19;;;;;;;;;;;;;;;;;;;;;;;;;23212:20;:47;;;;;23237:11;:22;23249:9;23237:22;;;;;;;;;;;;;;;;;;;;;;;;;23236:23;23212:47;23208:333;;;23276:44;23294:6;23302:9;23313:6;23276:17;:44::i;:::-;23208:333;;;23342:11;:19;23354:6;23342:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;23365:11;:22;23377:9;23365:22;;;;;;;;;;;;;;;;;;;;;;;;;23342:45;23338:203;;;23404:48;23426:6;23434:9;23445:6;23404:21;:48::i;:::-;23338:203;;;23485:44;23503:6;23511:9;23522:6;23485:17;:44::i;:::-;23338:203;23208:333;23077:464;22944:597;22452:1096;;;:::o;4878:192::-;4964:7;4997:1;4992;:6;;5000:12;4984:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5024:9;5040:1;5036;:5;5024:17;;5061:1;5054:8;;;4878:192;;;;;:::o;27692:163::-;27733:7;27754:15;27771;27790:19;:17;:19::i;:::-;27753:56;;;;27827:20;27839:7;27827;:11;;:20;;;;:::i;:::-;27820:27;;;;27692:163;:::o;6276:132::-;6334:7;6361:39;6365:1;6368;6361:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6354:46;;6276:132;;;;:::o;3975:181::-;4033:7;4053:9;4069:1;4065;:5;4053:17;;4094:1;4089;:6;;4081:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4147:1;4140:8;;;3975:181;;;;:::o;26440:468::-;26499:7;26508;26517;26526;26535;26544;26565:23;26590:12;26604:13;26621:39;26633:7;26642;;26651:8;;26621:11;:39::i;:::-;26564:96;;;;;;26671:19;26694:10;:8;:10::i;:::-;26671:33;;26716:15;26733:23;26758:12;26774:46;26786:7;26795:4;26801:5;26808:11;26774;:46::i;:::-;26715:105;;;;;;26839:7;26848:15;26865:4;26871:15;26888:4;26894:5;26831:69;;;;;;;;;;;;;;;;;;;26440:468;;;;;;;:::o;4439:136::-;4497:7;4524:43;4528:1;4531;4524:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4517:50;;4439:136;;;;:::o;24799:632::-;24901:19;24924:10;:8;:10::i;:::-;24901:33;;24946:15;24963:23;24988:12;25002:23;25027:12;25041:13;25058:19;25069:7;25058:10;:19::i;:::-;24945:132;;;;;;;;;;;;25088:13;25105:22;25115:11;25105:5;:9;;:22;;;;:::i;:::-;25088:39;;25156:28;25176:7;25156;:15;25164:6;25156:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25138:7;:15;25146:6;25138:15;;;;;;;;;;;;;;;:46;;;;25213:28;25233:7;25213;:15;25221:6;25213:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25195:7;:15;25203:6;25195:15;;;;;;;;;;;;;;;:46;;;;25273:39;25296:15;25273:7;:18;25281:9;25273:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25252:7;:18;25260:9;25252:18;;;;;;;;;;;;;;;:60;;;;25326:37;25338:4;25344:5;25351:4;25357:5;25326:11;:37::i;:::-;25396:9;25379:44;;25388:6;25379:44;;;25407:15;25379:44;;;;;;;;;;;;;;;;;;24799:632;;;;;;;;;;;:::o;24139:652::-;24239:19;24262:10;:8;:10::i;:::-;24239:33;;24284:15;24301:23;24326:12;24340:23;24365:12;24379:13;24396:19;24407:7;24396:10;:19::i;:::-;24283:132;;;;;;;;;;;;24426:13;24443:22;24453:11;24443:5;:9;;:22;;;;:::i;:::-;24426:39;;24494:28;24514:7;24494;:15;24502:6;24494:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24476:7;:15;24484:6;24476:15;;;;;;;;;;;;;;;:46;;;;24554:39;24577:15;24554:7;:18;24562:9;24554:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24533:7;:18;24541:9;24533:18;;;;;;;;;;;;;;;:60;;;;24625:39;24648:15;24625:7;:18;24633:9;24625:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24604:7;:18;24612:9;24604:18;;;;;;;;;;;;;;;:60;;;;24686:37;24698:4;24704:5;24711:4;24717:5;24686:11;:37::i;:::-;24756:9;24739:44;;24748:6;24739:44;;;24767:15;24739:44;;;;;;;;;;;;;;;;;;24139:652;;;;;;;;;;;:::o;23556:575::-;23654:19;23677:10;:8;:10::i;:::-;23654:33;;23699:15;23716:23;23741:12;23755:23;23780:12;23794:13;23811:19;23822:7;23811:10;:19::i;:::-;23698:132;;;;;;;;;;;;23841:13;23858:22;23868:11;23858:5;:9;;:22;;;;:::i;:::-;23841:39;;23909:28;23929:7;23909;:15;23917:6;23909:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23891:7;:15;23899:6;23891:15;;;;;;;;;;;;;;;:46;;;;23969:39;23992:15;23969:7;:18;23977:9;23969:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23948:7;:18;23956:9;23948:18;;;;;;;;;;;;;;;:60;;;;24026:37;24038:4;24044:5;24051:4;24057:5;24026:11;:37::i;:::-;24096:9;24079:44;;24088:6;24079:44;;;24107:15;24079:44;;;;;;;;;;;;;;;;;;23556:575;;;;;;;;;;;:::o;25439:708::-;25541:19;25564:10;:8;:10::i;:::-;25541:33;;25586:15;25603:23;25628:12;25642:23;25667:12;25681:13;25698:19;25709:7;25698:10;:19::i;:::-;25585:132;;;;;;;;;;;;25728:13;25745:22;25755:11;25745:5;:9;;:22;;;;:::i;:::-;25728:39;;25796:28;25816:7;25796;:15;25804:6;25796:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25778:7;:15;25786:6;25778:15;;;;;;;;;;;;;;;:46;;;;25853:28;25873:7;25853;:15;25861:6;25853:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25835:7;:15;25843:6;25835:15;;;;;;;;;;;;;;;:46;;;;25913:39;25936:15;25913:7;:18;25921:9;25913:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25892:7;:18;25900:9;25892:18;;;;;;;;;;;;;;;:60;;;;25984:39;26007:15;25984:7;:18;25992:9;25984:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25963:7;:18;25971:9;25963:18;;;;;;;;;;;;;;;:60;;;;26042:37;26054:4;26060:5;26067:4;26073:5;26042:11;:37::i;:::-;26112:9;26095:44;;26104:6;26095:44;;;26123:15;26095:44;;;;;;;;;;;;;;;;;;25439:708;;;;;;;;;;;:::o;27863:561::-;27913:7;27922;27942:15;27960:7;;27942:25;;27978:15;27996:7;;27978:25;;28025:9;28020:289;28044:9;:16;;;;28040:1;:20;28020:289;;;28110:7;28086;:21;28094:9;28104:1;28094:12;;;;;;;;;;;;;;;;;;;;;;;;;28086:21;;;;;;;;;;;;;;;;:31;:66;;;;28145:7;28121;:21;28129:9;28139:1;28129:12;;;;;;;;;;;;;;;;;;;;;;;;;28121:21;;;;;;;;;;;;;;;;:31;28086:66;28082:97;;;28162:7;;28171;;28154:25;;;;;;;;;28082:97;28204:34;28216:7;:21;28224:9;28234:1;28224:12;;;;;;;;;;;;;;;;;;;;;;;;;28216:21;;;;;;;;;;;;;;;;28204:7;:11;;:34;;;;:::i;:::-;28194:44;;28263:34;28275:7;:21;28283:9;28293:1;28283:12;;;;;;;;;;;;;;;;;;;;;;;;;28275:21;;;;;;;;;;;;;;;;28263:7;:11;;:34;;;;:::i;:::-;28253:44;;28062:3;;;;;;;28020:289;;;;28333:20;28345:7;;28333;;:11;;:20;;;;:::i;:::-;28323:7;:30;28319:61;;;28363:7;;28372;;28355:25;;;;;;;;28319:61;28399:7;28408;28391:25;;;;;;27863:561;;;:::o;6904:278::-;6990:7;7022:1;7018;:5;7025:12;7010:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7049:9;7065:1;7061;:5;;;;;;7049:17;;7173:1;7166:8;;;6904:278;;;;;:::o;26916:351::-;27009:7;27018;27027;27047:12;27062:28;27086:3;27062:19;27074:6;27062:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;27047:43;;27101:13;27117:29;27142:3;27117:20;27129:7;27117;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;27101:45;;27157:23;27183:28;27205:5;27183:17;27195:4;27183:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;27157:54;;27230:15;27247:4;27253:5;27222:37;;;;;;;;;26916:351;;;;;;;:::o;27275:409::-;27385:7;27394;27403;27423:15;27441:24;27453:11;27441:7;:11;;:24;;;;:::i;:::-;27423:42;;27476:12;27491:21;27500:11;27491:4;:8;;:21;;;;:::i;:::-;27476:36;;27523:13;27539:22;27549:11;27539:5;:9;;:22;;;;:::i;:::-;27523:38;;27572:23;27598:28;27620:5;27598:17;27610:4;27598:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;27572:54;;27645:7;27654:15;27671:4;27637:39;;;;;;;;;;27275:409;;;;;;;;:::o;5329:471::-;5387:7;5637:1;5632;:6;5628:47;;;5662:1;5655:8;;;;5628:47;5687:9;5703:1;5699;:5;5687:17;;5732:1;5727;5723;:5;;;;;;:10;5715:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5791:1;5784:8;;;5329:471;;;;;:::o;26155:277::-;26263:17;26275:4;26263:7;;:11;;:17;;;;:::i;:::-;26253:7;:27;;;;26304:20;26319:4;26304:10;;:14;;:20;;;;:::i;:::-;26291:10;:33;;;;26349:22;26365:5;26349:11;;:15;;:22;;;;:::i;:::-;26335:11;:36;;;;26398:26;26418:5;26398:7;:15;26406:6;;;;;;;;;;;26398:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;26382:7;:15;26390:6;;;;;;;;;;;26382:15;;;;;;;;;;;;;;;:42;;;;26155:277;;;;:::o

Swarm Source

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