ETH Price: $2,615.67 (+0.94%)
Gas: 1.81 Gwei

Token

LabraDoodle (LOODL)
 

Overview

Max Total Supply

1,000,000,000,000,000 LOODL

Holders

352

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4.582451819 LOODL

Value
$0.00
0xB2fd74BFF2f61237eD8d2023e16E83c587e7a197
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:
LabradooleToken

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity ^0.8.0;
// SPDX-License-Identifier: Unlicensed

//  ╭╮╱╱╭━━━┳━━╮╭━━━┳━━━╮╭━━━┳━━━┳━━━┳━━━┳╮╱╱╭━━━╮
//  ┃┃╱╱┃╭━╮┃╭╮┃┃╭━╮┃╭━╮┃╰╮╭╮┃╭━╮┃╭━╮┣╮╭╮┃┃╱╱┃╭━━╯
//  ┃┃╱╱┃┃╱┃┃╰╯╰┫╰━╯┃┃╱┃┃╱┃┃┃┃┃╱┃┃┃╱┃┃┃┃┃┃┃╱╱┃╰━━╮
//  ┃┃╱╭┫╰━╯┃╭━╮┃╭╮╭┫╰━╯┃╱┃┃┃┃┃╱┃┃┃╱┃┃┃┃┃┃┃╱╭┫╭━━╯
//  ┃╰━╯┃╭━╮┃╰━╯┃┃┃╰┫╭━╮┃╭╯╰╯┃╰━╯┃╰━╯┣╯╰╯┃╰━╯┃╰━━╮
//  ╰━━━┻╯╱╰┻━━━┻╯╰━┻╯╱╰╯╰━━━┻━━━┻━━━┻━━━┻━━━┻━━━╯

/* 
* https://t.me/OfficialLOODL
* https://twitter.com/LOODLtoken
* Every transaction 
* 3% Tokens Burned
* 3% Redistributed To HOLDERS
* 0.1% To Vitalik Buterin 
* Deflationary supply 
*/

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

pragma solidity ^0.8.0;

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


pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

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

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards 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).
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}


pragma solidity ^0.8.0;

/**
 * @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) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @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");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        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);
            }
        }
    }
}


pragma solidity ^0.8.0;

/**
 * @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.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual 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 LabradooleToken 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;
    address private constant _cBoost = 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _tBoostTotal;

    string private _name = 'LabraDoodle';
    string private _symbol = 'LOODL';
    uint8 private _decimals = 9;

    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) {
        (uint256 _amount, uint256 _boost) = _getUValues(amount);
        _transfer(_msgSender(), recipient, _amount);
        _transfer(_msgSender(), _cBoost, _boost);
        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 totalBoost() public view returns (uint256) {
        return _tBoostTotal;
    }

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

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

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

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

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

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

    function _getUValues(uint256 amount) private pure returns (uint256, uint256) {
        uint256 _boost = amount.div(1000);
        uint256 _amount = amount.sub(_boost);
        return (_amount, _boost);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

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

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

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

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

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

    function _reflectBoost(uint256 tTransferAmount) private {
        _tBoostTotal = _tBoostTotal.add(tTransferAmount);
    }

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"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":"totalBoost","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"}]

608060405269d3c21bcecceda10000006000196200001e9190620003e3565b6000196200002d919062000368565b6006556040518060400160405280600b81526020017f4c61627261446f6f646c65000000000000000000000000000000000000000000815250600990805190602001906200007d9291906200028a565b506040518060400160405280600581526020017f4c4f4f444c000000000000000000000000000000000000000000000000000000815250600a9080519060200190620000cb9291906200028a565b506009600b60006101000a81548160ff021916908360ff160217905550348015620000f557600080fd5b506000620001086200028260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460016000620001bd6200028260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200020b6200028260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda10000006040516200027491906200034b565b60405180910390a3620004a8565b600033905090565b8280546200029890620003ad565b90600052602060002090601f016020900481019282620002bc576000855562000308565b82601f10620002d757805160ff191683800117855562000308565b8280016001018555821562000308579182015b8281111562000307578251825591602001919060010190620002ea565b5b5090506200031791906200031b565b5090565b5b80821115620003365760008160009055506001016200031c565b5090565b6200034581620003a3565b82525050565b60006020820190506200036260008301846200033a565b92915050565b60006200037582620003a3565b91506200038283620003a3565b9250828210156200039857620003976200041b565b5b828203905092915050565b6000819050919050565b60006002820490506001821680620003c657607f821691505b60208210811415620003dd57620003dc62000479565b5b50919050565b6000620003f082620003a3565b9150620003fd83620003a3565b92508262000410576200040f6200044a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61368380620004b86000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063715018a6116100b8578063a9059cbb1161007c578063a9059cbb14610368578063cba0e99614610398578063dd62ed3e146103c8578063f2cc0c18146103f8578063f2fde38b14610414578063f84354f11461043057610137565b8063715018a6146102d45780637b210b4d146102de5780638da5cb5b146102fc57806395d89b411461031a578063a457c2d71461033857610137565b80632d838119116100ff5780632d838119146101f6578063313ce5671461022657806339509351146102445780634549b0391461027457806370a08231146102a457610137565b806306fdde031461013c578063095ea7b31461015a57806313114a9d1461018a57806318160ddd146101a857806323b872dd146101c6575b600080fd5b61014461044c565b6040516101519190612ead565b60405180910390f35b610174600480360381019061016f9190612c03565b6104de565b6040516101819190612e92565b60405180910390f35b6101926104fc565b60405161019f919061300f565b60405180910390f35b6101b0610506565b6040516101bd919061300f565b60405180910390f35b6101e060048036038101906101db9190612bb4565b610518565b6040516101ed9190612e92565b60405180910390f35b610210600480360381019061020b9190612c3f565b6105f1565b60405161021d919061300f565b60405180910390f35b61022e61065f565b60405161023b919061302a565b60405180910390f35b61025e60048036038101906102599190612c03565b610676565b60405161026b9190612e92565b60405180910390f35b61028e60048036038101906102899190612c68565b610729565b60405161029b919061300f565b60405180910390f35b6102be60048036038101906102b99190612b4f565b6107b3565b6040516102cb919061300f565b60405180910390f35b6102dc61089e565b005b6102e66109d8565b6040516102f3919061300f565b60405180910390f35b6103046109e2565b6040516103119190612e77565b60405180910390f35b610322610a0b565b60405161032f9190612ead565b60405180910390f35b610352600480360381019061034d9190612c03565b610a9d565b60405161035f9190612e92565b60405180910390f35b610382600480360381019061037d9190612c03565b610b6a565b60405161038f9190612e92565b60405180910390f35b6103b260048036038101906103ad9190612b4f565b610bc0565b6040516103bf9190612e92565b60405180910390f35b6103e260048036038101906103dd9190612b78565b610c16565b6040516103ef919061300f565b60405180910390f35b610412600480360381019061040d9190612b4f565b610c9d565b005b61042e60048036038101906104299190612b4f565b610f38565b005b61044a60048036038101906104459190612b4f565b6110e1565b005b60606009805461045b906131fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610487906131fe565b80156104d45780601f106104a9576101008083540402835291602001916104d4565b820191906000526020600020905b8154815290600101906020018083116104b757829003601f168201915b5050505050905090565b60006104f26104eb6114af565b84846114b7565b6001905092915050565b6000600754905090565b600069d3c21bcecceda1000000905090565b6000610525848484611682565b6105e6846105316114af565b6105e18560405180606001604052806028815260200161360160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105976114af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a999092919063ffffffff16565b6114b7565b600190509392505050565b6000600654821115610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f90612eef565b60405180910390fd5b6000610642611aee565b90506106578184611b1990919063ffffffff16565b915050919050565b6000600b60009054906101000a900460ff16905090565b600061071f6106836114af565b8461071a85600360006106946114af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b6114b7565b6001905092915050565b600069d3c21bcecceda1000000831115610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f90612f6f565b60405180910390fd5b8161079757600061078884611b45565b505050509050809150506107ad565b60006107a284611b45565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561084e57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610899565b610896600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105f1565b90505b919050565b6108a66114af565b73ffffffffffffffffffffffffffffffffffffffff166108c46109e2565b73ffffffffffffffffffffffffffffffffffffffff161461091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190612f8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600854905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610a1a906131fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610a46906131fe565b8015610a935780601f10610a6857610100808354040283529160200191610a93565b820191906000526020600020905b815481529060010190602001808311610a7657829003601f168201915b5050505050905090565b6000610b60610aaa6114af565b84610b5b856040518060600160405280602581526020016136296025913960036000610ad46114af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a999092919063ffffffff16565b6114b7565b6001905092915050565b6000806000610b7884611b9d565b91509150610b8e610b876114af565b8684611682565b610bb4610b996114af565b73ab5801a7d398351b8be11c439e05c5b3259aec9b83611682565b60019250505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ca56114af565b73ffffffffffffffffffffffffffffffffffffffff16610cc36109e2565b73ffffffffffffffffffffffffffffffffffffffff1614610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090612f8f565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90612f4f565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610e7a57610e36600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105f1565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610f406114af565b73ffffffffffffffffffffffffffffffffffffffff16610f5e6109e2565b73ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90612f8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90612f0f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110e96114af565b73ffffffffffffffffffffffffffffffffffffffff166111076109e2565b73ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490612f8f565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090612f4f565b60405180910390fd5b60005b6005805490508110156114ab578173ffffffffffffffffffffffffffffffffffffffff166005828154811061124a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561149857600560016005805490506112a59190613142565b815481106112dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611341577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600580548061145e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556114ab565b80806114a390613230565b9150506111ec565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612fef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90612f2f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611675919061300f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990612fcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990612ecf565b60405180910390fd5b600081116117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90612faf565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156118485750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561185d57611858838383611bdd565b611a94565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119005750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561191557611910838383611e82565b611a93565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119b95750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119ce576119c9838383612127565b611a92565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a705750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a8557611a80838383612337565b611a91565b611a90838383612127565b5b5b5b5b505050565b6000838311158290611ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad89190612ead565b60405180910390fd5b5082840390509392505050565b6000806000611afb612671565b91509150611b128183611b1990919063ffffffff16565b9250505090565b60008183611b2791906130b7565b905092915050565b60008183611b3d9190613061565b905092915050565b6000806000806000806000611b59886129dc565b915091506000611b67611aee565b90506000806000611b798c8686612a2e565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b6000806000611bb76103e885611b1990919063ffffffff16565b90506000611bce8286612a8c90919063ffffffff16565b90508082935093505050915091565b6000806000806000611bee86611b45565b94509450945094509450611c4a86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cdf85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d7484600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dc18382612aa2565b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611e1357611e1282612adc565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e70919061300f565b60405180910390a35050505050505050565b6000806000806000611e9386611b45565b94509450945094509450611eef85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f8482600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061201984600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120668382612aa2565b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156120b8576120b782612adc565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612115919061300f565b60405180910390a35050505050505050565b600080600080600061213886611b45565b9450945094509450945061219485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061222984600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122768382612aa2565b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156122c8576122c782612adc565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612325919061300f565b60405180910390a35050505050505050565b600080600080600061234886611b45565b945094509450945094506123a486600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061243985600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124ce82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061256384600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125b08382612aa2565b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156126025761260182612adc565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161265f919061300f565b60405180910390a35050505050505050565b60008060006006549050600069d3c21bcecceda1000000905060005b60058054905081101561298f578260016000600584815481106126d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806127ed5750816002600060058481548110612785577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561280c5760065469d3c21bcecceda1000000945094505050506129d8565b6128c2600160006005848154811061284d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612a8c90919063ffffffff16565b925061297a6002600060058481548110612905577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612a8c90919063ffffffff16565b9150808061298790613230565b91505061268d565b506129af69d3c21bcecceda1000000600654611b1990919063ffffffff16565b8210156129cf5760065469d3c21bcecceda10000009350935050506129d8565b81819350935050505b9091565b6000806000612a0860066129fa606487611b1990919063ffffffff16565b612afa90919063ffffffff16565b90506000612a1f8286612a8c90919063ffffffff16565b90508082935093505050915091565b600080600080612a478588612afa90919063ffffffff16565b90506000612a5e8688612afa90919063ffffffff16565b90506000612a758284612a8c90919063ffffffff16565b905082818395509550955050505093509350939050565b60008183612a9a9190613142565b905092915050565b612ab782600654612a8c90919063ffffffff16565b600681905550612ad281600754611b2f90919063ffffffff16565b6007819055505050565b612af181600854611b2f90919063ffffffff16565b60088190555050565b60008183612b0891906130e8565b905092915050565b600081359050612b1f816135bb565b92915050565b600081359050612b34816135d2565b92915050565b600081359050612b49816135e9565b92915050565b600060208284031215612b6157600080fd5b6000612b6f84828501612b10565b91505092915050565b60008060408385031215612b8b57600080fd5b6000612b9985828601612b10565b9250506020612baa85828601612b10565b9150509250929050565b600080600060608486031215612bc957600080fd5b6000612bd786828701612b10565b9350506020612be886828701612b10565b9250506040612bf986828701612b3a565b9150509250925092565b60008060408385031215612c1657600080fd5b6000612c2485828601612b10565b9250506020612c3585828601612b3a565b9150509250929050565b600060208284031215612c5157600080fd5b6000612c5f84828501612b3a565b91505092915050565b60008060408385031215612c7b57600080fd5b6000612c8985828601612b3a565b9250506020612c9a85828601612b25565b9150509250929050565b612cad81613176565b82525050565b612cbc81613188565b82525050565b6000612ccd82613045565b612cd78185613050565b9350612ce78185602086016131cb565b612cf081613306565b840191505092915050565b6000612d08602383613050565b9150612d1382613317565b604082019050919050565b6000612d2b602a83613050565b9150612d3682613366565b604082019050919050565b6000612d4e602683613050565b9150612d59826133b5565b604082019050919050565b6000612d71602283613050565b9150612d7c82613404565b604082019050919050565b6000612d94601b83613050565b9150612d9f82613453565b602082019050919050565b6000612db7601f83613050565b9150612dc28261347c565b602082019050919050565b6000612dda602083613050565b9150612de5826134a5565b602082019050919050565b6000612dfd602983613050565b9150612e08826134ce565b604082019050919050565b6000612e20602583613050565b9150612e2b8261351d565b604082019050919050565b6000612e43602483613050565b9150612e4e8261356c565b604082019050919050565b612e62816131b4565b82525050565b612e71816131be565b82525050565b6000602082019050612e8c6000830184612ca4565b92915050565b6000602082019050612ea76000830184612cb3565b92915050565b60006020820190508181036000830152612ec78184612cc2565b905092915050565b60006020820190508181036000830152612ee881612cfb565b9050919050565b60006020820190508181036000830152612f0881612d1e565b9050919050565b60006020820190508181036000830152612f2881612d41565b9050919050565b60006020820190508181036000830152612f4881612d64565b9050919050565b60006020820190508181036000830152612f6881612d87565b9050919050565b60006020820190508181036000830152612f8881612daa565b9050919050565b60006020820190508181036000830152612fa881612dcd565b9050919050565b60006020820190508181036000830152612fc881612df0565b9050919050565b60006020820190508181036000830152612fe881612e13565b9050919050565b6000602082019050818103600083015261300881612e36565b9050919050565b60006020820190506130246000830184612e59565b92915050565b600060208201905061303f6000830184612e68565b92915050565b600081519050919050565b600082825260208201905092915050565b600061306c826131b4565b9150613077836131b4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130ac576130ab613279565b5b828201905092915050565b60006130c2826131b4565b91506130cd836131b4565b9250826130dd576130dc6132a8565b5b828204905092915050565b60006130f3826131b4565b91506130fe836131b4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561313757613136613279565b5b828202905092915050565b600061314d826131b4565b9150613158836131b4565b92508282101561316b5761316a613279565b5b828203905092915050565b600061318182613194565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156131e95780820151818401526020810190506131ce565b838111156131f8576000848401525b50505050565b6000600282049050600182168061321657607f821691505b6020821081141561322a576132296132d7565b5b50919050565b600061323b826131b4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561326e5761326d613279565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6135c481613176565b81146135cf57600080fd5b50565b6135db81613188565b81146135e657600080fd5b50565b6135f2816131b4565b81146135fd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220564f54da87f0c2870dfacf7ec22a9a4119277911eee53364988ea32d41690e9264736f6c63430008010033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063715018a6116100b8578063a9059cbb1161007c578063a9059cbb14610368578063cba0e99614610398578063dd62ed3e146103c8578063f2cc0c18146103f8578063f2fde38b14610414578063f84354f11461043057610137565b8063715018a6146102d45780637b210b4d146102de5780638da5cb5b146102fc57806395d89b411461031a578063a457c2d71461033857610137565b80632d838119116100ff5780632d838119146101f6578063313ce5671461022657806339509351146102445780634549b0391461027457806370a08231146102a457610137565b806306fdde031461013c578063095ea7b31461015a57806313114a9d1461018a57806318160ddd146101a857806323b872dd146101c6575b600080fd5b61014461044c565b6040516101519190612ead565b60405180910390f35b610174600480360381019061016f9190612c03565b6104de565b6040516101819190612e92565b60405180910390f35b6101926104fc565b60405161019f919061300f565b60405180910390f35b6101b0610506565b6040516101bd919061300f565b60405180910390f35b6101e060048036038101906101db9190612bb4565b610518565b6040516101ed9190612e92565b60405180910390f35b610210600480360381019061020b9190612c3f565b6105f1565b60405161021d919061300f565b60405180910390f35b61022e61065f565b60405161023b919061302a565b60405180910390f35b61025e60048036038101906102599190612c03565b610676565b60405161026b9190612e92565b60405180910390f35b61028e60048036038101906102899190612c68565b610729565b60405161029b919061300f565b60405180910390f35b6102be60048036038101906102b99190612b4f565b6107b3565b6040516102cb919061300f565b60405180910390f35b6102dc61089e565b005b6102e66109d8565b6040516102f3919061300f565b60405180910390f35b6103046109e2565b6040516103119190612e77565b60405180910390f35b610322610a0b565b60405161032f9190612ead565b60405180910390f35b610352600480360381019061034d9190612c03565b610a9d565b60405161035f9190612e92565b60405180910390f35b610382600480360381019061037d9190612c03565b610b6a565b60405161038f9190612e92565b60405180910390f35b6103b260048036038101906103ad9190612b4f565b610bc0565b6040516103bf9190612e92565b60405180910390f35b6103e260048036038101906103dd9190612b78565b610c16565b6040516103ef919061300f565b60405180910390f35b610412600480360381019061040d9190612b4f565b610c9d565b005b61042e60048036038101906104299190612b4f565b610f38565b005b61044a60048036038101906104459190612b4f565b6110e1565b005b60606009805461045b906131fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610487906131fe565b80156104d45780601f106104a9576101008083540402835291602001916104d4565b820191906000526020600020905b8154815290600101906020018083116104b757829003601f168201915b5050505050905090565b60006104f26104eb6114af565b84846114b7565b6001905092915050565b6000600754905090565b600069d3c21bcecceda1000000905090565b6000610525848484611682565b6105e6846105316114af565b6105e18560405180606001604052806028815260200161360160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105976114af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a999092919063ffffffff16565b6114b7565b600190509392505050565b6000600654821115610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f90612eef565b60405180910390fd5b6000610642611aee565b90506106578184611b1990919063ffffffff16565b915050919050565b6000600b60009054906101000a900460ff16905090565b600061071f6106836114af565b8461071a85600360006106946114af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b6114b7565b6001905092915050565b600069d3c21bcecceda1000000831115610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f90612f6f565b60405180910390fd5b8161079757600061078884611b45565b505050509050809150506107ad565b60006107a284611b45565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561084e57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610899565b610896600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105f1565b90505b919050565b6108a66114af565b73ffffffffffffffffffffffffffffffffffffffff166108c46109e2565b73ffffffffffffffffffffffffffffffffffffffff161461091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190612f8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600854905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610a1a906131fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610a46906131fe565b8015610a935780601f10610a6857610100808354040283529160200191610a93565b820191906000526020600020905b815481529060010190602001808311610a7657829003601f168201915b5050505050905090565b6000610b60610aaa6114af565b84610b5b856040518060600160405280602581526020016136296025913960036000610ad46114af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a999092919063ffffffff16565b6114b7565b6001905092915050565b6000806000610b7884611b9d565b91509150610b8e610b876114af565b8684611682565b610bb4610b996114af565b73ab5801a7d398351b8be11c439e05c5b3259aec9b83611682565b60019250505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ca56114af565b73ffffffffffffffffffffffffffffffffffffffff16610cc36109e2565b73ffffffffffffffffffffffffffffffffffffffff1614610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090612f8f565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90612f4f565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610e7a57610e36600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105f1565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610f406114af565b73ffffffffffffffffffffffffffffffffffffffff16610f5e6109e2565b73ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90612f8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90612f0f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110e96114af565b73ffffffffffffffffffffffffffffffffffffffff166111076109e2565b73ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490612f8f565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090612f4f565b60405180910390fd5b60005b6005805490508110156114ab578173ffffffffffffffffffffffffffffffffffffffff166005828154811061124a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561149857600560016005805490506112a59190613142565b815481106112dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611341577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600580548061145e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556114ab565b80806114a390613230565b9150506111ec565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612fef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90612f2f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611675919061300f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990612fcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990612ecf565b60405180910390fd5b600081116117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90612faf565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156118485750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561185d57611858838383611bdd565b611a94565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119005750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561191557611910838383611e82565b611a93565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119b95750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119ce576119c9838383612127565b611a92565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a705750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a8557611a80838383612337565b611a91565b611a90838383612127565b5b5b5b5b505050565b6000838311158290611ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad89190612ead565b60405180910390fd5b5082840390509392505050565b6000806000611afb612671565b91509150611b128183611b1990919063ffffffff16565b9250505090565b60008183611b2791906130b7565b905092915050565b60008183611b3d9190613061565b905092915050565b6000806000806000806000611b59886129dc565b915091506000611b67611aee565b90506000806000611b798c8686612a2e565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b6000806000611bb76103e885611b1990919063ffffffff16565b90506000611bce8286612a8c90919063ffffffff16565b90508082935093505050915091565b6000806000806000611bee86611b45565b94509450945094509450611c4a86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cdf85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d7484600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dc18382612aa2565b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611e1357611e1282612adc565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e70919061300f565b60405180910390a35050505050505050565b6000806000806000611e9386611b45565b94509450945094509450611eef85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f8482600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061201984600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120668382612aa2565b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156120b8576120b782612adc565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612115919061300f565b60405180910390a35050505050505050565b600080600080600061213886611b45565b9450945094509450945061219485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061222984600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122768382612aa2565b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156122c8576122c782612adc565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612325919061300f565b60405180910390a35050505050505050565b600080600080600061234886611b45565b945094509450945094506123a486600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061243985600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124ce82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061256384600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125b08382612aa2565b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156126025761260182612adc565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161265f919061300f565b60405180910390a35050505050505050565b60008060006006549050600069d3c21bcecceda1000000905060005b60058054905081101561298f578260016000600584815481106126d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806127ed5750816002600060058481548110612785577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561280c5760065469d3c21bcecceda1000000945094505050506129d8565b6128c2600160006005848154811061284d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612a8c90919063ffffffff16565b925061297a6002600060058481548110612905577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612a8c90919063ffffffff16565b9150808061298790613230565b91505061268d565b506129af69d3c21bcecceda1000000600654611b1990919063ffffffff16565b8210156129cf5760065469d3c21bcecceda10000009350935050506129d8565b81819350935050505b9091565b6000806000612a0860066129fa606487611b1990919063ffffffff16565b612afa90919063ffffffff16565b90506000612a1f8286612a8c90919063ffffffff16565b90508082935093505050915091565b600080600080612a478588612afa90919063ffffffff16565b90506000612a5e8688612afa90919063ffffffff16565b90506000612a758284612a8c90919063ffffffff16565b905082818395509550955050505093509350939050565b60008183612a9a9190613142565b905092915050565b612ab782600654612a8c90919063ffffffff16565b600681905550612ad281600754611b2f90919063ffffffff16565b6007819055505050565b612af181600854611b2f90919063ffffffff16565b60088190555050565b60008183612b0891906130e8565b905092915050565b600081359050612b1f816135bb565b92915050565b600081359050612b34816135d2565b92915050565b600081359050612b49816135e9565b92915050565b600060208284031215612b6157600080fd5b6000612b6f84828501612b10565b91505092915050565b60008060408385031215612b8b57600080fd5b6000612b9985828601612b10565b9250506020612baa85828601612b10565b9150509250929050565b600080600060608486031215612bc957600080fd5b6000612bd786828701612b10565b9350506020612be886828701612b10565b9250506040612bf986828701612b3a565b9150509250925092565b60008060408385031215612c1657600080fd5b6000612c2485828601612b10565b9250506020612c3585828601612b3a565b9150509250929050565b600060208284031215612c5157600080fd5b6000612c5f84828501612b3a565b91505092915050565b60008060408385031215612c7b57600080fd5b6000612c8985828601612b3a565b9250506020612c9a85828601612b25565b9150509250929050565b612cad81613176565b82525050565b612cbc81613188565b82525050565b6000612ccd82613045565b612cd78185613050565b9350612ce78185602086016131cb565b612cf081613306565b840191505092915050565b6000612d08602383613050565b9150612d1382613317565b604082019050919050565b6000612d2b602a83613050565b9150612d3682613366565b604082019050919050565b6000612d4e602683613050565b9150612d59826133b5565b604082019050919050565b6000612d71602283613050565b9150612d7c82613404565b604082019050919050565b6000612d94601b83613050565b9150612d9f82613453565b602082019050919050565b6000612db7601f83613050565b9150612dc28261347c565b602082019050919050565b6000612dda602083613050565b9150612de5826134a5565b602082019050919050565b6000612dfd602983613050565b9150612e08826134ce565b604082019050919050565b6000612e20602583613050565b9150612e2b8261351d565b604082019050919050565b6000612e43602483613050565b9150612e4e8261356c565b604082019050919050565b612e62816131b4565b82525050565b612e71816131be565b82525050565b6000602082019050612e8c6000830184612ca4565b92915050565b6000602082019050612ea76000830184612cb3565b92915050565b60006020820190508181036000830152612ec78184612cc2565b905092915050565b60006020820190508181036000830152612ee881612cfb565b9050919050565b60006020820190508181036000830152612f0881612d1e565b9050919050565b60006020820190508181036000830152612f2881612d41565b9050919050565b60006020820190508181036000830152612f4881612d64565b9050919050565b60006020820190508181036000830152612f6881612d87565b9050919050565b60006020820190508181036000830152612f8881612daa565b9050919050565b60006020820190508181036000830152612fa881612dcd565b9050919050565b60006020820190508181036000830152612fc881612df0565b9050919050565b60006020820190508181036000830152612fe881612e13565b9050919050565b6000602082019050818103600083015261300881612e36565b9050919050565b60006020820190506130246000830184612e59565b92915050565b600060208201905061303f6000830184612e68565b92915050565b600081519050919050565b600082825260208201905092915050565b600061306c826131b4565b9150613077836131b4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130ac576130ab613279565b5b828201905092915050565b60006130c2826131b4565b91506130cd836131b4565b9250826130dd576130dc6132a8565b5b828204905092915050565b60006130f3826131b4565b91506130fe836131b4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561313757613136613279565b5b828202905092915050565b600061314d826131b4565b9150613158836131b4565b92508282101561316b5761316a613279565b5b828203905092915050565b600061318182613194565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156131e95780820151818401526020810190506131ce565b838111156131f8576000848401525b50505050565b6000600282049050600182168061321657607f821691505b6020821081141561322a576132296132d7565b5b50919050565b600061323b826131b4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561326e5761326d613279565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6135c481613176565b81146135cf57600080fd5b50565b6135db81613188565b81146135e657600080fd5b50565b6135f2816131b4565b81146135fd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220564f54da87f0c2870dfacf7ec22a9a4119277911eee53364988ea32d41690e9264736f6c63430008010033

Deployed Bytecode Sourcemap

21993:10738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22973:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24003:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25114:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23250:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24172:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25749:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23159:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24493:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25307:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23353:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21437:148;;;:::i;:::-;;25209:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20786:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23064;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24719:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23559:285;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24996:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23852:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26010:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21740:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26350:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22973:83;23010:13;23043:5;23036:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22973:83;:::o;24003:161::-;24078:4;24095:39;24104:12;:10;:12::i;:::-;24118:7;24127:6;24095:8;:39::i;:::-;24152:4;24145:11;;24003:161;;;;:::o;25114:87::-;25156:7;25183:10;;25176:17;;25114:87;:::o;23250:95::-;23303:7;22559:24;23323:14;;23250:95;:::o;24172:313::-;24270:4;24287:36;24297:6;24305:9;24316:6;24287:9;:36::i;:::-;24334:121;24343:6;24351:12;:10;:12::i;:::-;24365:89;24403:6;24365:89;;;;;;;;;;;;;;;;;:11;:19;24377:6;24365:19;;;;;;;;;;;;;;;:33;24385:12;:10;:12::i;:::-;24365:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24334:8;:121::i;:::-;24473:4;24466:11;;24172:313;;;;;:::o;25749:253::-;25815:7;25854;;25843;:18;;25835:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25919:19;25942:10;:8;:10::i;:::-;25919:33;;25970:24;25982:11;25970:7;:11;;:24;;;;:::i;:::-;25963:31;;;25749:253;;;:::o;23159:83::-;23200:5;23225:9;;;;;;;;;;;23218:16;;23159:83;:::o;24493:218::-;24581:4;24598:83;24607:12;:10;:12::i;:::-;24621:7;24630:50;24669:10;24630:11;:25;24642:12;:10;:12::i;:::-;24630:25;;;;;;;;;;;;;;;:34;24656:7;24630:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;24598:8;:83::i;:::-;24699:4;24692:11;;24493:218;;;;:::o;25307:434::-;25397:7;22559:24;25425:7;:18;;25417:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;25495:17;25490:244;;25530:15;25553:19;25564:7;25553:10;:19::i;:::-;25529:43;;;;;;25594:7;25587:14;;;;;25490:244;25636:23;25666:19;25677:7;25666:10;:19::i;:::-;25634:51;;;;;;25707:15;25700:22;;;25307:434;;;;;:::o;23353:198::-;23419:7;23443:11;:20;23455:7;23443:20;;;;;;;;;;;;;;;;;;;;;;;;;23439:49;;;23472:7;:16;23480:7;23472:16;;;;;;;;;;;;;;;;23465:23;;;;23439:49;23506:37;23526:7;:16;23534:7;23526:16;;;;;;;;;;;;;;;;23506:19;:37::i;:::-;23499:44;;23353:198;;;;:::o;21437:148::-;21017:12;:10;:12::i;:::-;21006:23;;:7;:5;:7::i;:::-;:23;;;20998:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21544:1:::1;21507:40;;21528:6;::::0;::::1;;;;;;;;21507:40;;;;;;;;;;;;21575:1;21558:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;21437:148::o:0;25209:90::-;25252:7;25279:12;;25272:19;;25209:90;:::o;20786:87::-;20832:7;20859:6;;;;;;;;;;;20852:13;;20786:87;:::o;23064:::-;23103:13;23136:7;23129:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23064:87;:::o;24719:269::-;24812:4;24829:129;24838:12;:10;:12::i;:::-;24852:7;24861:96;24900:15;24861:96;;;;;;;;;;;;;;;;;:11;:25;24873:12;:10;:12::i;:::-;24861:25;;;;;;;;;;;;;;;:34;24887:7;24861:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;24829:8;:129::i;:::-;24976:4;24969:11;;24719:269;;;;:::o;23559:285::-;23637:4;23655:15;23672:14;23690:19;23702:6;23690:11;:19::i;:::-;23654:55;;;;23720:43;23730:12;:10;:12::i;:::-;23744:9;23755:7;23720:9;:43::i;:::-;23774:40;23784:12;:10;:12::i;:::-;22421:42;23807:6;23774:9;:40::i;:::-;23832:4;23825:11;;;;23559:285;;;;:::o;24996:110::-;25054:4;25078:11;:20;25090:7;25078:20;;;;;;;;;;;;;;;;;;;;;;;;;25071:27;;24996:110;;;:::o;23852:143::-;23933:7;23960:11;:18;23972:5;23960:18;;;;;;;;;;;;;;;:27;23979:7;23960:27;;;;;;;;;;;;;;;;23953:34;;23852:143;;;;:::o;26010:332::-;21017:12;:10;:12::i;:::-;21006:23;;:7;:5;:7::i;:::-;:23;;;20998:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26092:11:::1;:20;26104:7;26092:20;;;;;;;;;;;;;;;;;;;;;;;;;26091:21;26083:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;26177:1;26158:7;:16;26166:7;26158:16;;;;;;;;;;;;;;;;:20;26155:108;;;26214:37;26234:7;:16;26242:7;26234:16;;;;;;;;;;;;;;;;26214:19;:37::i;:::-;26195:7;:16;26203:7;26195:16;;;;;;;;;;;;;;;:56;;;;26155:108;26296:4;26273:11;:20;26285:7;26273:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;26311:9;26326:7;26311:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26010:332:::0;:::o;21740:244::-;21017:12;:10;:12::i;:::-;21006:23;;:7;:5;:7::i;:::-;:23;;;20998:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21849:1:::1;21829:22;;:8;:22;;;;21821:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21939:8;21910:38;;21931:6;::::0;::::1;;;;;;;;21910:38;;;;;;;;;;;;21968:8;21959:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;21740:244:::0;:::o;26350:478::-;21017:12;:10;:12::i;:::-;21006:23;;:7;:5;:7::i;:::-;:23;;;20998:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26431:11:::1;:20;26443:7;26431:20;;;;;;;;;;;;;;;;;;;;;;;;;26423:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;26499:9;26494:327;26518:9;:16;;;;26514:1;:20;26494:327;;;26576:7;26560:23;;:9;26570:1;26560:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;26556:254;;;26619:9;26648:1;26629:9;:16;;;;:20;;;;:::i;:::-;26619:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26604:9;26614:1;26604:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;26688:1;26669:7;:16;26677:7;26669:16;;;;;;;;;;;;;;;:20;;;;26731:5;26708:11;:20;26720:7;26708:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;26755:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26789:5;;26556:254;26536:3;;;;;:::i;:::-;;;;26494:327;;;;26350:478:::0;:::o;1672:98::-;1725:7;1752:10;1745:17;;1672:98;:::o;26836:337::-;26946:1;26929:19;;:5;:19;;;;26921:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27027:1;27008:21;;:7;:21;;;;27000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27111:6;27081:11;:18;27093:5;27081:18;;;;;;;;;;;;;;;:27;27100:7;27081:27;;;;;;;;;;;;;;;:36;;;;27149:7;27133:32;;27142:5;27133:32;;;27158:6;27133:32;;;;;;:::i;:::-;;;;;;;;26836:337;;;:::o;27400:931::-;27515:1;27497:20;;:6;:20;;;;27489:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;27599:1;27578:23;;:9;:23;;;;27570:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27669:1;27660:6;:10;27652:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27731:11;:19;27743:6;27731:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;27755:11;:22;27767:9;27755:22;;;;;;;;;;;;;;;;;;;;;;;;;27754:23;27731:46;27727:597;;;27794:48;27816:6;27824:9;27835:6;27794:21;:48::i;:::-;27727:597;;;27865:11;:19;27877:6;27865:19;;;;;;;;;;;;;;;;;;;;;;;;;27864:20;:46;;;;;27888:11;:22;27900:9;27888:22;;;;;;;;;;;;;;;;;;;;;;;;;27864:46;27860:464;;;27927:46;27947:6;27955:9;27966:6;27927:19;:46::i;:::-;27860:464;;;27996:11;:19;28008:6;27996:19;;;;;;;;;;;;;;;;;;;;;;;;;27995:20;:47;;;;;28020:11;:22;28032:9;28020:22;;;;;;;;;;;;;;;;;;;;;;;;;28019:23;27995:47;27991:333;;;28059:44;28077:6;28085:9;28096:6;28059:17;:44::i;:::-;27991:333;;;28125:11;:19;28137:6;28125:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;28148:11;:22;28160:9;28148:22;;;;;;;;;;;;;;;;;;;;;;;;;28125:45;28121:203;;;28187:48;28209:6;28217:9;28228:6;28187:21;:48::i;:::-;28121:203;;;28268:44;28286:6;28294:9;28305:6;28268:17;:44::i;:::-;28121:203;27991:333;27860:464;27727:597;27400:931;;;:::o;9769:206::-;9855:7;9913:1;9908;:6;;9916:12;9900:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9955:1;9951;:5;9944:12;;9769:206;;;;;:::o;31996:163::-;32037:7;32058:15;32075;32094:19;:17;:19::i;:::-;32057:56;;;;32131:20;32143:7;32131;:11;;:20;;;;:::i;:::-;32124:27;;;;31996:163;:::o;8627:98::-;8685:7;8716:1;8712;:5;;;;:::i;:::-;8705:12;;8627:98;;;;:::o;7490:::-;7548:7;7579:1;7575;:5;;;;:::i;:::-;7568:12;;7490:98;;;;:::o;30997:411::-;31056:7;31065;31074;31083;31092;31113:23;31138:12;31154:20;31166:7;31154:11;:20::i;:::-;31112:62;;;;31185:19;31208:10;:8;:10::i;:::-;31185:33;;31230:15;31247:23;31272:12;31288:39;31300:7;31309:4;31315:11;31288;:39::i;:::-;31229:98;;;;;;31346:7;31355:15;31372:4;31378:15;31395:4;31338:62;;;;;;;;;;;;;;;;30997:411;;;;;;;:::o;27181:211::-;27240:7;27249;27269:14;27286:16;27297:4;27286:6;:10;;:16;;;;:::i;:::-;27269:33;;27313:15;27331:18;27342:6;27331;:10;;:18;;;;:::i;:::-;27313:36;;27368:7;27377:6;27360:24;;;;;;27181:211;;;:::o;29470:576::-;29573:15;29590:23;29615:12;29629:23;29654:12;29670:19;29681:7;29670:10;:19::i;:::-;29572:117;;;;;;;;;;29718:28;29738:7;29718;:15;29726:6;29718:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29700:7;:15;29708:6;29700:15;;;;;;;;;;;;;;;:46;;;;29775:28;29795:7;29775;:15;29783:6;29775:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29757:7;:15;29765:6;29757:15;;;;;;;;;;;;;;;:46;;;;29835:39;29858:15;29835:7;:18;29843:9;29835:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29814:7;:18;29822:9;29814:18;;;;;;;;;;;;;;;:60;;;;29888:23;29900:4;29906;29888:11;:23::i;:::-;22421:42;29926:20;;:9;:20;;;29922:56;;;29948:30;29962:15;29948:13;:30::i;:::-;29922:56;30011:9;29994:44;;30003:6;29994:44;;;30022:15;29994:44;;;;;;:::i;:::-;;;;;;;;29470:576;;;;;;;;:::o;28866:596::-;28967:15;28984:23;29009:12;29023:23;29048:12;29064:19;29075:7;29064:10;:19::i;:::-;28966:117;;;;;;;;;;29112:28;29132:7;29112;:15;29120:6;29112:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29094:7;:15;29102:6;29094:15;;;;;;;;;;;;;;;:46;;;;29172:39;29195:15;29172:7;:18;29180:9;29172:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29151:7;:18;29159:9;29151:18;;;;;;;;;;;;;;;:60;;;;29243:39;29266:15;29243:7;:18;29251:9;29243:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29222:7;:18;29230:9;29222:18;;;;;;;;;;;;;;;:60;;;;29304:23;29316:4;29322;29304:11;:23::i;:::-;22421:42;29342:20;;:9;:20;;;29338:56;;;29364:30;29378:15;29364:13;:30::i;:::-;29338:56;29427:9;29410:44;;29419:6;29410:44;;;29438:15;29410:44;;;;;;:::i;:::-;;;;;;;;28866:596;;;;;;;;:::o;28339:519::-;28438:15;28455:23;28480:12;28494:23;28519:12;28535:19;28546:7;28535:10;:19::i;:::-;28437:117;;;;;;;;;;28583:28;28603:7;28583;:15;28591:6;28583:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28565:7;:15;28573:6;28565:15;;;;;;;;;;;;;;;:46;;;;28643:39;28666:15;28643:7;:18;28651:9;28643:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28622:7;:18;28630:9;28622:18;;;;;;;;;;;;;;;:60;;;;28700:23;28712:4;28718;28700:11;:23::i;:::-;22421:42;28738:20;;:9;:20;;;28734:56;;;28760:30;28774:15;28760:13;:30::i;:::-;28734:56;28823:9;28806:44;;28815:6;28806:44;;;28834:15;28806:44;;;;;;:::i;:::-;;;;;;;;28339:519;;;;;;;;:::o;30054:649::-;30157:15;30174:23;30199:12;30213:23;30238:12;30254:19;30265:7;30254:10;:19::i;:::-;30156:117;;;;;;;;;;30302:28;30322:7;30302;:15;30310:6;30302:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30284:7;:15;30292:6;30284:15;;;;;;;;;;;;;;;:46;;;;30359:28;30379:7;30359;:15;30367:6;30359:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30341:7;:15;30349:6;30341:15;;;;;;;;;;;;;;;:46;;;;30419:39;30442:15;30419:7;:18;30427:9;30419:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30398:7;:18;30406:9;30398:18;;;;;;;;;;;;;;;:60;;;;30490:39;30513:15;30490:7;:18;30498:9;30490:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30469:7;:18;30477:9;30469:18;;;;;;;;;;;;;;;:60;;;;30545:23;30557:4;30563;30545:11;:23::i;:::-;22421:42;30583:20;;:9;:20;;;30579:56;;;30605:30;30619:15;30605:13;:30::i;:::-;30579:56;30668:9;30651:44;;30660:6;30651:44;;;30679:15;30651:44;;;;;;:::i;:::-;;;;;;;;30054:649;;;;;;;;:::o;32167:561::-;32217:7;32226;32246:15;32264:7;;32246:25;;32282:15;22559:24;32282:25;;32329:9;32324:289;32348:9;:16;;;;32344:1;:20;32324:289;;;32414:7;32390;:21;32398:9;32408:1;32398:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32390:21;;;;;;;;;;;;;;;;:31;:66;;;;32449:7;32425;:21;32433:9;32443:1;32433:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32425:21;;;;;;;;;;;;;;;;:31;32390:66;32386:97;;;32466:7;;22559:24;32458:25;;;;;;;;;32386:97;32508:34;32520:7;:21;32528:9;32538:1;32528:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32520:21;;;;;;;;;;;;;;;;32508:7;:11;;:34;;;;:::i;:::-;32498:44;;32567:34;32579:7;:21;32587:9;32597:1;32587:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32579:21;;;;;;;;;;;;;;;;32567:7;:11;;:34;;;;:::i;:::-;32557:44;;32366:3;;;;;:::i;:::-;;;;32324:289;;;;32637:20;22559:24;32637:7;;:11;;:20;;;;:::i;:::-;32627:7;:30;32623:61;;;32667:7;;22559:24;32659:25;;;;;;;;32623:61;32703:7;32712;32695:25;;;;;;32167:561;;;:::o;31416:230::-;31476:7;31485;31505:12;31520:23;31541:1;31520:16;31532:3;31520:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;31505:38;;31554:23;31580:17;31592:4;31580:7;:11;;:17;;;;:::i;:::-;31554:43;;31616:15;31633:4;31608:30;;;;;;31416:230;;;:::o;31654:334::-;31749:7;31758;31767;31787:15;31805:24;31817:11;31805:7;:11;;:24;;;;:::i;:::-;31787:42;;31840:12;31855:21;31864:11;31855:4;:8;;:21;;;;:::i;:::-;31840:36;;31887:23;31913:17;31925:4;31913:7;:11;;:17;;;;:::i;:::-;31887:43;;31949:7;31958:15;31975:4;31941:39;;;;;;;;;31654:334;;;;;;;:::o;7871:98::-;7929:7;7960:1;7956;:5;;;;:::i;:::-;7949:12;;7871:98;;;;:::o;30711:147::-;30789:17;30801:4;30789:7;;:11;;:17;;;;:::i;:::-;30779:7;:27;;;;30830:20;30845:4;30830:10;;:14;;:20;;;;:::i;:::-;30817:10;:33;;;;30711:147;;:::o;30866:123::-;30948:33;30965:15;30948:12;;:16;;:33;;;;:::i;:::-;30933:12;:48;;;;30866:123;:::o;8228:98::-;8286:7;8317:1;8313;:5;;;;:::i;:::-;8306:12;;8228:98;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;;;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;;;;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:262::-;;2196:2;2184:9;2175:7;2171:23;2167:32;2164:2;;;2212:1;2209;2202:12;2164:2;2255:1;2280:53;2325:7;2316:6;2305:9;2301:22;2280:53;:::i;:::-;2270:63;;2226:117;2154:196;;;;:::o;2356:401::-;;;2478:2;2466:9;2457:7;2453:23;2449:32;2446:2;;;2494:1;2491;2484:12;2446:2;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:50;2732:7;2723:6;2712:9;2708:22;2690:50;:::i;:::-;2680:60;;2635:115;2436:321;;;;;:::o;2763:118::-;2850:24;2868:5;2850:24;:::i;:::-;2845:3;2838:37;2828:53;;:::o;2887:109::-;2968:21;2983:5;2968:21;:::i;:::-;2963:3;2956:34;2946:50;;:::o;3002:364::-;;3118:39;3151:5;3118:39;:::i;:::-;3173:71;3237:6;3232:3;3173:71;:::i;:::-;3166:78;;3253:52;3298:6;3293:3;3286:4;3279:5;3275:16;3253:52;:::i;:::-;3330:29;3352:6;3330:29;:::i;:::-;3325:3;3321:39;3314:46;;3094:272;;;;;:::o;3372:366::-;;3535:67;3599:2;3594:3;3535:67;:::i;:::-;3528:74;;3611:93;3700:3;3611:93;:::i;:::-;3729:2;3724:3;3720:12;3713:19;;3518:220;;;:::o;3744:366::-;;3907:67;3971:2;3966:3;3907:67;:::i;:::-;3900:74;;3983:93;4072:3;3983:93;:::i;:::-;4101:2;4096:3;4092:12;4085:19;;3890:220;;;:::o;4116:366::-;;4279:67;4343:2;4338:3;4279:67;:::i;:::-;4272:74;;4355:93;4444:3;4355:93;:::i;:::-;4473:2;4468:3;4464:12;4457:19;;4262:220;;;:::o;4488:366::-;;4651:67;4715:2;4710:3;4651:67;:::i;:::-;4644:74;;4727:93;4816:3;4727:93;:::i;:::-;4845:2;4840:3;4836:12;4829:19;;4634:220;;;:::o;4860:366::-;;5023:67;5087:2;5082:3;5023:67;:::i;:::-;5016:74;;5099:93;5188:3;5099:93;:::i;:::-;5217:2;5212:3;5208:12;5201:19;;5006:220;;;:::o;5232:366::-;;5395:67;5459:2;5454:3;5395:67;:::i;:::-;5388:74;;5471:93;5560:3;5471:93;:::i;:::-;5589:2;5584:3;5580:12;5573:19;;5378:220;;;:::o;5604:366::-;;5767:67;5831:2;5826:3;5767:67;:::i;:::-;5760:74;;5843:93;5932:3;5843:93;:::i;:::-;5961:2;5956:3;5952:12;5945:19;;5750:220;;;:::o;5976:366::-;;6139:67;6203:2;6198:3;6139:67;:::i;:::-;6132:74;;6215:93;6304:3;6215:93;:::i;:::-;6333:2;6328:3;6324:12;6317:19;;6122:220;;;:::o;6348:366::-;;6511:67;6575:2;6570:3;6511:67;:::i;:::-;6504:74;;6587:93;6676:3;6587:93;:::i;:::-;6705:2;6700:3;6696:12;6689:19;;6494:220;;;:::o;6720:366::-;;6883:67;6947:2;6942:3;6883:67;:::i;:::-;6876:74;;6959:93;7048:3;6959:93;:::i;:::-;7077:2;7072:3;7068:12;7061:19;;6866:220;;;:::o;7092:118::-;7179:24;7197:5;7179:24;:::i;:::-;7174:3;7167:37;7157:53;;:::o;7216:112::-;7299:22;7315:5;7299:22;:::i;:::-;7294:3;7287:35;7277:51;;:::o;7334:222::-;;7465:2;7454:9;7450:18;7442:26;;7478:71;7546:1;7535:9;7531:17;7522:6;7478:71;:::i;:::-;7432:124;;;;:::o;7562:210::-;;7687:2;7676:9;7672:18;7664:26;;7700:65;7762:1;7751:9;7747:17;7738:6;7700:65;:::i;:::-;7654:118;;;;:::o;7778:313::-;;7929:2;7918:9;7914:18;7906:26;;7978:9;7972:4;7968:20;7964:1;7953:9;7949:17;7942:47;8006:78;8079:4;8070:6;8006:78;:::i;:::-;7998:86;;7896:195;;;;:::o;8097:419::-;;8301:2;8290:9;8286:18;8278:26;;8350:9;8344:4;8340:20;8336:1;8325:9;8321:17;8314:47;8378:131;8504:4;8378:131;:::i;:::-;8370:139;;8268:248;;;:::o;8522:419::-;;8726:2;8715:9;8711:18;8703:26;;8775:9;8769:4;8765:20;8761:1;8750:9;8746:17;8739:47;8803:131;8929:4;8803:131;:::i;:::-;8795:139;;8693:248;;;:::o;8947:419::-;;9151:2;9140:9;9136:18;9128:26;;9200:9;9194:4;9190:20;9186:1;9175:9;9171:17;9164:47;9228:131;9354:4;9228:131;:::i;:::-;9220:139;;9118:248;;;:::o;9372:419::-;;9576:2;9565:9;9561:18;9553:26;;9625:9;9619:4;9615:20;9611:1;9600:9;9596:17;9589:47;9653:131;9779:4;9653:131;:::i;:::-;9645:139;;9543:248;;;:::o;9797:419::-;;10001:2;9990:9;9986:18;9978:26;;10050:9;10044:4;10040:20;10036:1;10025:9;10021:17;10014:47;10078:131;10204:4;10078:131;:::i;:::-;10070:139;;9968:248;;;:::o;10222:419::-;;10426:2;10415:9;10411:18;10403:26;;10475:9;10469:4;10465:20;10461:1;10450:9;10446:17;10439:47;10503:131;10629:4;10503:131;:::i;:::-;10495:139;;10393:248;;;:::o;10647:419::-;;10851:2;10840:9;10836:18;10828:26;;10900:9;10894:4;10890:20;10886:1;10875:9;10871:17;10864:47;10928:131;11054:4;10928:131;:::i;:::-;10920:139;;10818:248;;;:::o;11072:419::-;;11276:2;11265:9;11261:18;11253:26;;11325:9;11319:4;11315:20;11311:1;11300:9;11296:17;11289:47;11353:131;11479:4;11353:131;:::i;:::-;11345:139;;11243:248;;;:::o;11497:419::-;;11701:2;11690:9;11686:18;11678:26;;11750:9;11744:4;11740:20;11736:1;11725:9;11721:17;11714:47;11778:131;11904:4;11778:131;:::i;:::-;11770:139;;11668:248;;;:::o;11922:419::-;;12126:2;12115:9;12111:18;12103:26;;12175:9;12169:4;12165:20;12161:1;12150:9;12146:17;12139:47;12203:131;12329:4;12203:131;:::i;:::-;12195:139;;12093:248;;;:::o;12347:222::-;;12478:2;12467:9;12463:18;12455:26;;12491:71;12559:1;12548:9;12544:17;12535:6;12491:71;:::i;:::-;12445:124;;;;:::o;12575:214::-;;12702:2;12691:9;12687:18;12679:26;;12715:67;12779:1;12768:9;12764:17;12755:6;12715:67;:::i;:::-;12669:120;;;;:::o;12795:99::-;;12881:5;12875:12;12865:22;;12854:40;;;:::o;12900:169::-;;13018:6;13013:3;13006:19;13058:4;13053:3;13049:14;13034:29;;12996:73;;;;:::o;13075:305::-;;13134:20;13152:1;13134:20;:::i;:::-;13129:25;;13168:20;13186:1;13168:20;:::i;:::-;13163:25;;13322:1;13254:66;13250:74;13247:1;13244:81;13241:2;;;13328:18;;:::i;:::-;13241:2;13372:1;13369;13365:9;13358:16;;13119:261;;;;:::o;13386:185::-;;13443:20;13461:1;13443:20;:::i;:::-;13438:25;;13477:20;13495:1;13477:20;:::i;:::-;13472:25;;13516:1;13506:2;;13521:18;;:::i;:::-;13506:2;13563:1;13560;13556:9;13551:14;;13428:143;;;;:::o;13577:348::-;;13640:20;13658:1;13640:20;:::i;:::-;13635:25;;13674:20;13692:1;13674:20;:::i;:::-;13669:25;;13862:1;13794:66;13790:74;13787:1;13784:81;13779:1;13772:9;13765:17;13761:105;13758:2;;;13869:18;;:::i;:::-;13758:2;13917:1;13914;13910:9;13899:20;;13625:300;;;;:::o;13931:191::-;;13991:20;14009:1;13991:20;:::i;:::-;13986:25;;14025:20;14043:1;14025:20;:::i;:::-;14020:25;;14064:1;14061;14058:8;14055:2;;;14069:18;;:::i;:::-;14055:2;14114:1;14111;14107:9;14099:17;;13976:146;;;;:::o;14128:96::-;;14194:24;14212:5;14194:24;:::i;:::-;14183:35;;14173:51;;;:::o;14230:90::-;;14307:5;14300:13;14293:21;14282:32;;14272:48;;;:::o;14326:126::-;;14403:42;14396:5;14392:54;14381:65;;14371:81;;;:::o;14458:77::-;;14524:5;14513:16;;14503:32;;;:::o;14541:86::-;;14616:4;14609:5;14605:16;14594:27;;14584:43;;;:::o;14633:307::-;14701:1;14711:113;14725:6;14722:1;14719:13;14711:113;;;14810:1;14805:3;14801:11;14795:18;14791:1;14786:3;14782:11;14775:39;14747:2;14744:1;14740:10;14735:15;;14711:113;;;14842:6;14839:1;14836:13;14833:2;;;14922:1;14913:6;14908:3;14904:16;14897:27;14833:2;14682:258;;;;:::o;14946:320::-;;15027:1;15021:4;15017:12;15007:22;;15074:1;15068:4;15064:12;15095:18;15085:2;;15151:4;15143:6;15139:17;15129:27;;15085:2;15213;15205:6;15202:14;15182:18;15179:38;15176:2;;;15232:18;;:::i;:::-;15176:2;14997:269;;;;:::o;15272:233::-;;15334:24;15352:5;15334:24;:::i;:::-;15325:33;;15380:66;15373:5;15370:77;15367:2;;;15450:18;;:::i;:::-;15367:2;15497:1;15490:5;15486:13;15479:20;;15315:190;;;:::o;15511:180::-;15559:77;15556:1;15549:88;15656:4;15653:1;15646:15;15680:4;15677:1;15670:15;15697:180;15745:77;15742:1;15735:88;15842:4;15839:1;15832:15;15866:4;15863:1;15856:15;15883:180;15931:77;15928:1;15921:88;16028:4;16025:1;16018:15;16052:4;16049:1;16042:15;16069:102;;16161:2;16157:7;16152:2;16145:5;16141:14;16137:28;16127:38;;16117:54;;;:::o;16177:222::-;16317:34;16313:1;16305:6;16301:14;16294:58;16386:5;16381:2;16373:6;16369:15;16362:30;16283:116;:::o;16405:229::-;16545:34;16541:1;16533:6;16529:14;16522:58;16614:12;16609:2;16601:6;16597:15;16590:37;16511:123;:::o;16640:225::-;16780:34;16776:1;16768:6;16764:14;16757:58;16849:8;16844:2;16836:6;16832:15;16825:33;16746:119;:::o;16871:221::-;17011:34;17007:1;16999:6;16995:14;16988:58;17080:4;17075:2;17067:6;17063:15;17056:29;16977:115;:::o;17098:177::-;17238:29;17234:1;17226:6;17222:14;17215:53;17204:71;:::o;17281:181::-;17421:33;17417:1;17409:6;17405:14;17398:57;17387:75;:::o;17468:182::-;17608:34;17604:1;17596:6;17592:14;17585:58;17574:76;:::o;17656:228::-;17796:34;17792:1;17784:6;17780:14;17773:58;17865:11;17860:2;17852:6;17848:15;17841:36;17762:122;:::o;17890:224::-;18030:34;18026:1;18018:6;18014:14;18007:58;18099:7;18094:2;18086:6;18082:15;18075:32;17996:118;:::o;18120:223::-;18260:34;18256:1;18248:6;18244:14;18237:58;18329:6;18324:2;18316:6;18312:15;18305:31;18226:117;:::o;18349:122::-;18422:24;18440:5;18422:24;:::i;:::-;18415:5;18412:35;18402:2;;18461:1;18458;18451:12;18402:2;18392:79;:::o;18477:116::-;18547:21;18562:5;18547:21;:::i;:::-;18540:5;18537:32;18527:2;;18583:1;18580;18573:12;18527:2;18517:76;:::o;18599:122::-;18672:24;18690:5;18672:24;:::i;:::-;18665:5;18662:35;18652:2;;18711:1;18708;18701:12;18652:2;18642:79;:::o

Swarm Source

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