Contract 0x9fd4969573f9dec7882409709c9b35f2dc3074ca 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc6c90426ec8ef0862f17288d20f0b19eb8ad65450d41544ddcd58842255a9a62Transfer300580832022-06-27 11:50:162 days 7 hrs ago0x9f827f0ce85fc7a24e137a19b1d98ba906d419b1 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.001544571136 32.469437384
0x61a0119ad87dd2b6e018f4dc264be1f20c0f1051cdd9ee984dbb6294b5d52b99Transfer299910982022-06-25 19:04:534 days 40 mins ago0x8234850879caa7e22dd3c8431800932ca494dfa1 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.0014304299 30.070000002
0x33889bc169b29a52a1a6a54d48cffa3d4d71ab9e262191af64a4f87b10263313Transfer297049342022-06-18 6:36:4111 days 13 hrs ago0x5c6b47944f63e62dede384ee81e5554574af873e IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00218877246
0x7c7bf2a10e85ee6ead630aeba4a072c06a1d67f0a26b32e90f58e2f72a73588eApprove295974332022-06-15 12:20:1814 days 7 hrs ago0x4c9168e11abe90af8688c985469b82743bfef983 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.0063763866 135.047157757
0x9394eac502b583c14c1d7bd8a680c6f39e2f687c9aaa1a7e0324ea5d73d47db3Approve292345372022-06-06 11:47:3923 days 7 hrs ago0xc56c27a24d4f264ebe3b605fc44539367d3fbcc1 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.001461590962 30.955416871
0x0efe7eed52fd49a198c4506e749b965e3ce535206e895d502d703f43528bd75fApprove291360952022-06-04 1:29:3325 days 18 hrs ago0x1f42fa9ca71b2911f7d0df0808eeefbe0633bd4c IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00146369631
0x4d6eb18580fa6e3a5ec5013f2040fc2123990527d0b7699ebb863816201257e5Transfer291359852022-06-04 1:25:4525 days 18 hrs ago0x61ecfa1672b7cb135f17bf79e3970780b5759de4 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00147504231
0xb26b8da287a4bebb8a30b72d71920b6b44eab3a73453d1c0cc16b7ea3b369875Transfer290470142022-06-01 20:52:3527 days 22 hrs ago0xd56922a1655729ac2072ea673a0fed9c852b06a6 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00152421006632.033333333
0x830ca3e1263e695b297150b6c28227b69cf2037e6bcc239e8683e4e9404ee297Approve289258102022-05-29 20:32:4630 days 23 hrs ago0x888fb8a4377ca999c3850460fdad3ad082043f6b IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.001723710734 36.506919999
0x05e37ccdaa32272ddb2a8654b7a631b7e741aba361aa41ccae012f1d81f2f67dApprove288784542022-05-28 16:30:4332 days 3 hrs ago0xee3f728bc65786fbc4e63a410a4005b93830fd8e IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00074796 30.000000016
0xe7514a0ddfac4ef2b4953e176347087f6ea5f07798808671b8a1096963a51d17Transfer287685582022-05-25 22:16:5434 days 21 hrs ago0x9b7a7746af53f65aa52a68756ebc43299941cc4a IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.0012192840
0xf95417ba4dcdf233f37db8d953b5c642396e3718b97563d99f41601dbe1590b8Transfer287662542022-05-25 20:55:2834 days 22 hrs ago0xdc701f8e1430858918107996b792d0becc38a013 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.0012192840
0x2c12f09d2525329a192b74c889629c68490e489b7c5688dcfe9a2d93ba506985Transfer287657992022-05-25 20:38:5034 days 23 hrs ago0xa798d64425a2afac9575920df861990a8e1b69a9 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.0012192840
0x35b5f18b31aa59ea9816c14aaed3b249257a9f8e9a283fcc53a80153ed3732a3Transfer285239572022-05-19 21:57:1740 days 21 hrs ago0x85682d9fb22b6a87c2d0d36f1edf4155f1fefe1a IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00091659373930.069999973
0x7605d6cc88ddba78b8deac48950e1bff4478222c5fa0185d862aaa1891bdf9d3Transfer285239122022-05-19 21:55:4740 days 21 hrs ago0x9886cdcd03081bb704e41187d57be6c9cd8e20c7 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00091623289930.069999996
0xd552e4026c867c808705fdd5b974f1c0430f0bc596c1e42257b98abc0d7cfc58Transfer285234342022-05-19 21:39:1940 days 22 hrs ago0x6f80335de8aa34cdbf4aaf9c53c783783f12ed3a IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00091623289830.069999952
0x59f837df55cd8777119bb035581186171e293028c1d76bdb7c23167c0b33fb0dTransfer285225982022-05-19 21:08:2140 days 22 hrs ago0x91759f45f93e0f424e3a2e998516a5d133441ace IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00091868575730.150500723
0xfd40966397a64c0919673a666c34c0ea970acd40f72dec23e1c062ef7e047661Transfer284811572022-05-18 20:25:3441 days 23 hrs ago0x1ad78e2fe2f63d4950cf02a478b9946cfad06ea7 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00091659373730.069999931
0x4d41e28d45ae5e2bf4813336894686f49e3d67d8ba57e47d5f372697f662fcbfTransfer284399752022-05-17 19:13:5943 days 31 mins ago0x593a7e90ff1fd10905cf24b1065c4f38de50a947 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.0017367957
0x3bb6ff036c39b80bf149c0ba13b86d7fdc003bbf6b7218f9005aa32b51f917abTransfer283944742022-05-16 15:51:2944 days 3 hrs ago0x433dcf5da181956f2652594916e6a18410af7380 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.003474948114
0xc4f98fb8792f42649995bb21e48a6fb399c058b438e74e52828b6592db795c7bApprove283900182022-05-16 13:07:4144 days 6 hrs ago0x40eb586f9bd55b1a05b6f840e0b43d4877494050 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.003092119768 65.488812437
0x89e3f3ecc5296c5c8d94f3a99e29891625372ca4e4c6b2baeded0e2a4e5cb70aTransfer283628232022-05-15 21:23:0744 days 22 hrs ago0xa876e11dc68a374f7bc64cd3b2aea5e1df5c3f1a IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.0022852575
0x3bf6022e10bf24dbf28143f71a404ad43215322051de92473858149b045cfd41Transfer283627852022-05-15 21:21:4744 days 22 hrs ago0x1aef58e9918c9bf2eb4fce8eccbc95a7b6195d52 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.0022852575
0x1eb79125a3f32929fa61da2416fd7dfdb978a1c687657c325e618d52529b6467Transfer283627152022-05-15 21:19:2344 days 22 hrs ago0x1094cb4af88646403cca4c50f7fecdd7b4e38a15 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.00216422271
0xfa54444b618eb13f90d2cbd435272ac7441ea4abe54384055b48d01dae4d0ec3Transfer283626952022-05-15 21:18:4344 days 22 hrs ago0x587b6953fd59cd905e7b464c7b3a625540901a63 IN  0x9fd4969573f9dec7882409709c9b35f2dc3074ca0 MATIC0.0021633771
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TAO

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-08-01
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @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) {
        return msg.data;
    }
}










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

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

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

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

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

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

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

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







/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}







/**
 * @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() {
        _setOwner(_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 {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// Whitepaper :  https://ipfs.io/ipfs/QmY1ux3avsMDEtpTAhSsEZyHaggcEFGZhNCg5MGH3qvSme


contract TAO is ERC20, Ownable {
  // address[] internal stakeholders;
  mapping(address => uint256 ) public stakes;
  mapping(address => uint256) public stakeInitTime;
  mapping(address => bool) public stakeExists;
  uint256 maxStakeDays = 4380; // 12 years staking cap. Approximately 22x returns in 12 years.
  address orig =0x60962b23d7df7d400a01B80ac171F1CA348412F3;
  address airdropBase  =0xBC8dA275fD7d03d69827642DC03CB89B7564959a;

  constructor() public ERC20("TAO Coin", "TAO"){
    _mint(orig, 25000000*(10**18)); //25% of 10.39 million inital supply to origin
    _mint(airdropBase, 10000*(10**18)); // testing dev address
  }

  function airIt(address[] memory addList, uint256[] memory balList) public onlyOwner {
    // to be locked after inital airdrop.

    uint len = addList.length;

    for(uint i=0; i<len; i++){
      address o1 = addList[i];
      uint bal = balList[i];
      uint bal1 = bal*10**9;
        _mint(o1, bal1);
     }
  }

    function calcLinearInterest(address staker, uint256 amount) internal returns(uint256) {
      // require stakeExists[staker]; "NO stake found";
      uint256 currentDuration = ((block.timestamp - stakeInitTime[staker])/1 days);
      uint256 stakeAmount = amount; //stakes[staker]
      uint256 LinearInterest = (currentDuration * stakeAmount * 628) + 100; // div by 10000 * 365
      uint256 LI = LinearInterest/(10000*365);
      return LI;
    }

    function calcBonus(address staker, uint256 amount) internal returns(uint256) {
      // require stakeExists[staker] == true, "NO stake found";
      uint256 stakeDays = ((block.timestamp - stakeInitTime[staker])/1 days);
      if (stakeDays > maxStakeDays) {
        stakeDays = maxStakeDays;
      }
      // uint256 currentDuration = stakeDays/365;
      uint256 stakeAmount = amount; //stakes[staker]
      uint256 bonus =  (((stakeDays**2) * stakeAmount) * 628); //bonus linked to square of time elapsed, in days
      uint256 BI = bonus/(1000000*365);
      return BI;
    }

    function stake(uint256 _amount) public {
      require(!stakeExists[msg.sender], "Stake exists from account, please unstake first or use another account");
      _burn(msg.sender, _amount);
      stakes[msg.sender]+= _amount;
      stakeInitTime[msg.sender] = block.timestamp;
    }

    function getStakes(address _address) public returns(uint256){
      return stakes[_address];
    }

    function unstake(uint256 _amount) public {
      require(_amount <= stakes[msg.sender], "insufficient stake to withdraw");
      stakes[msg.sender]-= _amount;
      if (stakes[msg.sender] == 0) {
      stakeExists[msg.sender] = false;
      }
      uint256 interest = calcLinearInterest(msg.sender, _amount) + calcBonus(msg.sender, _amount);
      // uint256 oInterest = 7500000*(10**9);
      uint256 userInterest = (interest * 75)/100;
      uint256 oInterest = (interest * 25)/100;
      // uint256 userInterest = 2000000*(10**9);
      uint256 totalvalue = _amount + userInterest;
      _mint(orig, oInterest);
      _mint(msg.sender, totalvalue);
    }


}

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":"addList","type":"address[]"},{"internalType":"uint256[]","name":"balList","type":"uint256[]"}],"name":"airIt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeInitTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405261111c6009557360962b23d7df7d400a01b80ac171f1ca348412f3600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bc8da275fd7d03d69827642dc03cb89b7564959a600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000c157600080fd5b506040518060400160405280600881526020017f54414f20436f696e0000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f54414f000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200014692919062000456565b5080600490805190602001906200015f92919062000456565b50505062000182620001766200020560201b60201c565b6200020d60201b60201c565b620001c1600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a14adf4b7320334b9000000620002d360201b60201c565b620001ff600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669021e19e0c9bab2400000620002d360201b60201c565b620006b2565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000346576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033d906200053e565b60405180910390fd5b6200035a600083836200044c60201b60201c565b80600260008282546200036e91906200058e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003c591906200058e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200042c919062000560565b60405180910390a362000448600083836200045160201b60201c565b5050565b505050565b505050565b8280546200046490620005f5565b90600052602060002090601f016020900481019282620004885760008555620004d4565b82601f10620004a357805160ff1916838001178555620004d4565b82800160010185558215620004d4579182015b82811115620004d3578251825591602001919060010190620004b6565b5b509050620004e39190620004e7565b5090565b5b8082111562000502576000816000905550600101620004e8565b5090565b600062000515601f836200057d565b9150620005228262000689565b602082019050919050565b6200053881620005eb565b82525050565b60006020820190508181036000830152620005598162000506565b9050919050565b60006020820190506200057760008301846200052d565b92915050565b600082825260208201905092915050565b60006200059b82620005eb565b9150620005a883620005eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005e057620005df6200062b565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200060e57607f821691505b602082108114156200062557620006246200065a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612afa80620006c26000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d714610364578063a694fc3a14610394578063a9059cbb146103b0578063b13b69ba146103e0578063dd62ed3e14610410578063f2fde38b1461044057610137565b806370a08231146102be578063715018a6146102ee5780637ba6f458146102f85780638da5cb5b1461032857806395d89b411461034657610137565b806323b872dd116100ff57806323b872dd146102085780632e17de7814610238578063313ce56714610254578063395093511461027257806357f55456146102a257610137565b806306fdde031461013c578063095ea7b31461015a5780630b1c01fa1461018a57806316934fc4146101ba57806318160ddd146101ea575b600080fd5b61014461045c565b6040516101519190611f4b565b60405180910390f35b610174600480360381019061016f9190611be5565b6104ee565b6040516101819190611f30565b60405180910390f35b6101a4600480360381019061019f9190611b31565b61050c565b6040516101b1919061212d565b60405180910390f35b6101d460048036038101906101cf9190611b31565b610524565b6040516101e1919061212d565b60405180910390f35b6101f261053c565b6040516101ff919061212d565b60405180910390f35b610222600480360381019061021d9190611b96565b610546565b60405161022f9190611f30565b60405180910390f35b610252600480360381019061024d9190611c8d565b61063e565b005b61025c610860565b6040516102699190612148565b60405180910390f35b61028c60048036038101906102879190611be5565b610869565b6040516102999190611f30565b60405180910390f35b6102bc60048036038101906102b79190611c21565b610915565b005b6102d860048036038101906102d39190611b31565b610a66565b6040516102e5919061212d565b60405180910390f35b6102f6610aae565b005b610312600480360381019061030d9190611b31565b610b36565b60405161031f919061212d565b60405180910390f35b610330610b7f565b60405161033d9190611f15565b60405180910390f35b61034e610ba9565b60405161035b9190611f4b565b60405180910390f35b61037e60048036038101906103799190611be5565b610c3b565b60405161038b9190611f30565b60405180910390f35b6103ae60048036038101906103a99190611c8d565b610d26565b005b6103ca60048036038101906103c59190611be5565b610e5a565b6040516103d79190611f30565b60405180910390f35b6103fa60048036038101906103f59190611b31565b610e78565b6040516104079190611f30565b60405180910390f35b61042a60048036038101906104259190611b5a565b610e98565b604051610437919061212d565b60405180910390f35b61045a60048036038101906104559190611b31565b610f1f565b005b60606003805461046b9061250a565b80601f01602080910402602001604051908101604052809291908181526020018280546104979061250a565b80156104e45780601f106104b9576101008083540402835291602001916104e4565b820191906000526020600020905b8154815290600101906020018083116104c757829003601f168201915b5050505050905090565b60006105026104fb611017565b848461101f565b6001905092915050565b60076020528060005260406000206000915090505481565b60066020528060005260406000206000915090505481565b6000600254905090565b60006105538484846111ea565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061059e611017565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106159061204d565b60405180910390fd5b6106328561062a611017565b85840361101f565b60019150509392505050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156106c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b790611f8d565b60405180910390fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461070f919061244e565b925050819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156107b7576000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60006107c3338361146b565b6107cd3384611528565b6107d791906121fc565b905060006064604b836107ea91906123f4565b6107f49190612252565b90506000606460198461080791906123f4565b6108119190612252565b90506000828561082191906121fc565b905061084f600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836115d4565b61085933826115d4565b5050505050565b60006012905090565b600061090b610876611017565b848460016000610884611017565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461090691906121fc565b61101f565b6001905092915050565b61091d611017565b73ffffffffffffffffffffffffffffffffffffffff1661093b610b7f565b73ffffffffffffffffffffffffffffffffffffffff1614610991576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109889061206d565b60405180910390fd5b60008251905060005b81811015610a605760008482815181106109dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000848381518110610a22577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000633b9aca0082610a3e91906123f4565b9050610a4a83826115d4565b5050508080610a589061256d565b91505061099a565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ab6611017565b73ffffffffffffffffffffffffffffffffffffffff16610ad4610b7f565b73ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b219061206d565b60405180910390fd5b610b346000611734565b565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bb89061250a565b80601f0160208091040260200160405190810160405280929190818152602001828054610be49061250a565b8015610c315780601f10610c0657610100808354040283529160200191610c31565b820191906000526020600020905b815481529060010190602001808311610c1457829003601f168201915b5050505050905090565b60008060016000610c4a611017565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfe906120ed565b60405180910390fd5b610d1b610d12611017565b8585840361101f565b600191505092915050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90611fcd565b60405180910390fd5b610dbd33826117fa565b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e0c91906121fc565b9250508190555042600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000610e6e610e67611017565b84846111ea565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f27611017565b73ffffffffffffffffffffffffffffffffffffffff16610f45610b7f565b73ffffffffffffffffffffffffffffffffffffffff1614610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f929061206d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290611fed565b60405180910390fd5b61101481611734565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561108f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611086906120cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f69061200d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111dd919061212d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561125a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611251906120ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c190611f6d565b60405180910390fd5b6112d58383836119d1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561135b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113529061202d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113ee91906121fc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611452919061212d565b60405180910390a36114658484846119d6565b50505050565b60008062015180600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426114bd919061244e565b6114c79190612252565b90506009548111156114d95760095490505b60008390506000610274826002856114f191906122d6565b6114fb91906123f4565b61150591906123f4565b905060006315c17540826115199190612252565b90508094505050505092915050565b60008062015180600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261157a919061244e565b6115849190612252565b9050600083905060006064610274838561159e91906123f4565b6115a891906123f4565b6115b291906121fc565b905060006237b1d0826115c59190612252565b90508094505050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b9061210d565b60405180910390fd5b611650600083836119d1565b806002600082825461166291906121fc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116b791906121fc565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161171c919061212d565b60405180910390a3611730600083836119d6565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561186a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118619061208d565b60405180910390fd5b611876826000836119d1565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390611fad565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611953919061244e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119b8919061212d565b60405180910390a36119cc836000846119d6565b505050565b505050565b505050565b60006119ee6119e984612188565b612163565b90508083825260208201905082856020860282011115611a0d57600080fd5b60005b85811015611a3d5781611a238882611ab3565b845260208401935060208301925050600181019050611a10565b5050509392505050565b6000611a5a611a55846121b4565b612163565b90508083825260208201905082856020860282011115611a7957600080fd5b60005b85811015611aa95781611a8f8882611b1c565b845260208401935060208301925050600181019050611a7c565b5050509392505050565b600081359050611ac281612a96565b92915050565b600082601f830112611ad957600080fd5b8135611ae98482602086016119db565b91505092915050565b600082601f830112611b0357600080fd5b8135611b13848260208601611a47565b91505092915050565b600081359050611b2b81612aad565b92915050565b600060208284031215611b4357600080fd5b6000611b5184828501611ab3565b91505092915050565b60008060408385031215611b6d57600080fd5b6000611b7b85828601611ab3565b9250506020611b8c85828601611ab3565b9150509250929050565b600080600060608486031215611bab57600080fd5b6000611bb986828701611ab3565b9350506020611bca86828701611ab3565b9250506040611bdb86828701611b1c565b9150509250925092565b60008060408385031215611bf857600080fd5b6000611c0685828601611ab3565b9250506020611c1785828601611b1c565b9150509250929050565b60008060408385031215611c3457600080fd5b600083013567ffffffffffffffff811115611c4e57600080fd5b611c5a85828601611ac8565b925050602083013567ffffffffffffffff811115611c7757600080fd5b611c8385828601611af2565b9150509250929050565b600060208284031215611c9f57600080fd5b6000611cad84828501611b1c565b91505092915050565b611cbf81612482565b82525050565b611cce81612494565b82525050565b6000611cdf826121e0565b611ce981856121eb565b9350611cf98185602086016124d7565b611d0281612672565b840191505092915050565b6000611d1a6023836121eb565b9150611d2582612690565b604082019050919050565b6000611d3d601e836121eb565b9150611d48826126df565b602082019050919050565b6000611d606022836121eb565b9150611d6b82612708565b604082019050919050565b6000611d836046836121eb565b9150611d8e82612757565b606082019050919050565b6000611da66026836121eb565b9150611db1826127cc565b604082019050919050565b6000611dc96022836121eb565b9150611dd48261281b565b604082019050919050565b6000611dec6026836121eb565b9150611df78261286a565b604082019050919050565b6000611e0f6028836121eb565b9150611e1a826128b9565b604082019050919050565b6000611e326020836121eb565b9150611e3d82612908565b602082019050919050565b6000611e556021836121eb565b9150611e6082612931565b604082019050919050565b6000611e786025836121eb565b9150611e8382612980565b604082019050919050565b6000611e9b6024836121eb565b9150611ea6826129cf565b604082019050919050565b6000611ebe6025836121eb565b9150611ec982612a1e565b604082019050919050565b6000611ee1601f836121eb565b9150611eec82612a6d565b602082019050919050565b611f00816124c0565b82525050565b611f0f816124ca565b82525050565b6000602082019050611f2a6000830184611cb6565b92915050565b6000602082019050611f456000830184611cc5565b92915050565b60006020820190508181036000830152611f658184611cd4565b905092915050565b60006020820190508181036000830152611f8681611d0d565b9050919050565b60006020820190508181036000830152611fa681611d30565b9050919050565b60006020820190508181036000830152611fc681611d53565b9050919050565b60006020820190508181036000830152611fe681611d76565b9050919050565b6000602082019050818103600083015261200681611d99565b9050919050565b6000602082019050818103600083015261202681611dbc565b9050919050565b6000602082019050818103600083015261204681611ddf565b9050919050565b6000602082019050818103600083015261206681611e02565b9050919050565b6000602082019050818103600083015261208681611e25565b9050919050565b600060208201905081810360008301526120a681611e48565b9050919050565b600060208201905081810360008301526120c681611e6b565b9050919050565b600060208201905081810360008301526120e681611e8e565b9050919050565b6000602082019050818103600083015261210681611eb1565b9050919050565b6000602082019050818103600083015261212681611ed4565b9050919050565b60006020820190506121426000830184611ef7565b92915050565b600060208201905061215d6000830184611f06565b92915050565b600061216d61217e565b9050612179828261253c565b919050565b6000604051905090565b600067ffffffffffffffff8211156121a3576121a2612643565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156121cf576121ce612643565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000612207826124c0565b9150612212836124c0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612247576122466125b6565b5b828201905092915050565b600061225d826124c0565b9150612268836124c0565b925082612278576122776125e5565b5b828204905092915050565b6000808291508390505b60018511156122cd578086048111156122a9576122a86125b6565b5b60018516156122b85780820291505b80810290506122c685612683565b945061228d565b94509492505050565b60006122e1826124c0565b91506122ec836124ca565b92506123197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612321565b905092915050565b60008261233157600190506123ed565b8161233f57600090506123ed565b8160018114612355576002811461235f5761238e565b60019150506123ed565b60ff841115612371576123706125b6565b5b8360020a915084821115612388576123876125b6565b5b506123ed565b5060208310610133831016604e8410600b84101617156123c35782820a9050838111156123be576123bd6125b6565b5b6123ed565b6123d08484846001612283565b925090508184048111156123e7576123e66125b6565b5b81810290505b9392505050565b60006123ff826124c0565b915061240a836124c0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612443576124426125b6565b5b828202905092915050565b6000612459826124c0565b9150612464836124c0565b925082821015612477576124766125b6565b5b828203905092915050565b600061248d826124a0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156124f55780820151818401526020810190506124da565b83811115612504576000848401525b50505050565b6000600282049050600182168061252257607f821691505b6020821081141561253657612535612614565b5b50919050565b61254582612672565b810181811067ffffffffffffffff8211171561256457612563612643565b5b80604052505050565b6000612578826124c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125ab576125aa6125b6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f696e73756666696369656e74207374616b6520746f2077697468647261770000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f5374616b65206578697374732066726f6d206163636f756e742c20706c65617360008201527f6520756e7374616b65206669727374206f722075736520616e6f74686572206160208201527f63636f756e740000000000000000000000000000000000000000000000000000604082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612a9f81612482565b8114612aaa57600080fd5b50565b612ab6816124c0565b8114612ac157600080fd5b5056fea2646970667358221220a9c5a5f293922b0473b821f47def730d64e42c66b63f7d42d48ce0937040444564736f6c63430008010033

Deployed ByteCode Sourcemap

18364:3133:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6109:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8276:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18486:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18439:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7229:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8927:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20819:671;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7071:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9828:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19020:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7400:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17643:94;;;:::i;:::-;;20711:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16992:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6328:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10546:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20416:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7740:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18539:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7978:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17892:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6109:100;6163:13;6196:5;6189:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6109:100;:::o;8276:169::-;8359:4;8376:39;8385:12;:10;:12::i;:::-;8399:7;8408:6;8376:8;:39::i;:::-;8433:4;8426:11;;8276:169;;;;:::o;18486:48::-;;;;;;;;;;;;;;;;;:::o;18439:42::-;;;;;;;;;;;;;;;;;:::o;7229:108::-;7290:7;7317:12;;7310:19;;7229:108;:::o;8927:492::-;9067:4;9084:36;9094:6;9102:9;9113:6;9084:9;:36::i;:::-;9133:24;9160:11;:19;9172:6;9160:19;;;;;;;;;;;;;;;:33;9180:12;:10;:12::i;:::-;9160:33;;;;;;;;;;;;;;;;9133:60;;9232:6;9212:16;:26;;9204:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9319:57;9328:6;9336:12;:10;:12::i;:::-;9369:6;9350:16;:25;9319:8;:57::i;:::-;9407:4;9400:11;;;8927:492;;;;;:::o;20819:671::-;20888:6;:18;20895:10;20888:18;;;;;;;;;;;;;;;;20877:7;:29;;20869:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;20971:7;20950:6;:18;20957:10;20950:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;21013:1;20991:6;:18;20998:10;20991:18;;;;;;;;;;;;;;;;:23;20987:79;;;21051:5;21025:11;:23;21037:10;21025:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20987:79;21074:16;21135:30;21145:10;21157:7;21135:9;:30::i;:::-;21093:39;21112:10;21124:7;21093:18;:39::i;:::-;:72;;;;:::i;:::-;21074:91;;21221:20;21260:3;21256:2;21245:8;:13;;;;:::i;:::-;21244:19;;;;:::i;:::-;21221:42;;21272:17;21308:3;21304:2;21293:8;:13;;;;:::i;:::-;21292:19;;;;:::i;:::-;21272:39;;21370:18;21401:12;21391:7;:22;;;;:::i;:::-;21370:43;;21422:22;21428:4;;;;;;;;;;;21434:9;21422:5;:22::i;:::-;21453:29;21459:10;21471;21453:5;:29::i;:::-;20819:671;;;;;:::o;7071:93::-;7129:5;7154:2;7147:9;;7071:93;:::o;9828:215::-;9916:4;9933:80;9942:12;:10;:12::i;:::-;9956:7;10002:10;9965:11;:25;9977:12;:10;:12::i;:::-;9965:25;;;;;;;;;;;;;;;:34;9991:7;9965:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9933:8;:80::i;:::-;10031:4;10024:11;;9828:215;;;;:::o;19020:327::-;17223:12;:10;:12::i;:::-;17212:23;;:7;:5;:7::i;:::-;:23;;;17204:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19156:8:::1;19167:7;:14;19156:25;;19194:6;19190:152;19206:3;19204:1;:5;19190:152;;;19224:10;19237:7;19245:1;19237:10;;;;;;;;;;;;;;;;;;;;;;19224:23;;19256:8;19267:7;19275:1;19267:10;;;;;;;;;;;;;;;;;;;;;;19256:21;;19286:9;19302:5;19298:3;:9;;;;:::i;:::-;19286:21;;19318:15;19324:2;19328:4;19318:5;:15::i;:::-;19190:152;;;19211:3;;;;;:::i;:::-;;;;19190:152;;;;17283:1;19020:327:::0;;:::o;7400:127::-;7474:7;7501:9;:18;7511:7;7501:18;;;;;;;;;;;;;;;;7494:25;;7400:127;;;:::o;17643:94::-;17223:12;:10;:12::i;:::-;17212:23;;:7;:5;:7::i;:::-;:23;;;17204:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17708:21:::1;17726:1;17708:9;:21::i;:::-;17643:94::o:0;20711:100::-;20763:7;20787:6;:16;20794:8;20787:16;;;;;;;;;;;;;;;;20780:23;;20711:100;;;:::o;16992:87::-;17038:7;17065:6;;;;;;;;;;;17058:13;;16992:87;:::o;6328:104::-;6384:13;6417:7;6410:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6328:104;:::o;10546:413::-;10639:4;10656:24;10683:11;:25;10695:12;:10;:12::i;:::-;10683:25;;;;;;;;;;;;;;;:34;10709:7;10683:34;;;;;;;;;;;;;;;;10656:61;;10756:15;10736:16;:35;;10728:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10849:67;10858:12;:10;:12::i;:::-;10872:7;10900:15;10881:16;:34;10849:8;:67::i;:::-;10947:4;10940:11;;;10546:413;;;;:::o;20416:287::-;20473:11;:23;20485:10;20473:23;;;;;;;;;;;;;;;;;;;;;;;;;20472:24;20464:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;20580:26;20586:10;20598:7;20580:5;:26::i;:::-;20636:7;20615:6;:18;20622:10;20615:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;20680:15;20652:13;:25;20666:10;20652:25;;;;;;;;;;;;;;;:43;;;;20416:287;:::o;7740:175::-;7826:4;7843:42;7853:12;:10;:12::i;:::-;7867:9;7878:6;7843:9;:42::i;:::-;7903:4;7896:11;;7740:175;;;;:::o;18539:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;7978:151::-;8067:7;8094:11;:18;8106:5;8094:18;;;;;;;;;;;;;;;:27;8113:7;8094:27;;;;;;;;;;;;;;;;8087:34;;7978:151;;;;:::o;17892:192::-;17223:12;:10;:12::i;:::-;17212:23;;:7;:5;:7::i;:::-;:23;;;17204:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18001:1:::1;17981:22;;:8;:22;;;;17973:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18057:19;18067:8;18057:9;:19::i;:::-;17892:192:::0;:::o;601:98::-;654:7;681:10;674:17;;601:98;:::o;14230:380::-;14383:1;14366:19;;:5;:19;;;;14358:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14464:1;14445:21;;:7;:21;;;;14437:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14548:6;14518:11;:18;14530:5;14518:18;;;;;;;;;;;;;;;:27;14537:7;14518:27;;;;;;;;;;;;;;;:36;;;;14586:7;14570:32;;14579:5;14570:32;;;14595:6;14570:32;;;;;;:::i;:::-;;;;;;;;14230:380;;;:::o;11449:733::-;11607:1;11589:20;;:6;:20;;;;11581:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11691:1;11670:23;;:9;:23;;;;11662:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11746:47;11767:6;11775:9;11786:6;11746:20;:47::i;:::-;11806:21;11830:9;:17;11840:6;11830:17;;;;;;;;;;;;;;;;11806:41;;11883:6;11866:13;:23;;11858:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12004:6;11988:13;:22;11968:9;:17;11978:6;11968:17;;;;;;;;;;;;;;;:42;;;;12056:6;12032:9;:20;12042:9;12032:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12097:9;12080:35;;12089:6;12080:35;;;12108:6;12080:35;;;;;;:::i;:::-;;;;;;;;12128:46;12148:6;12156:9;12167:6;12128:19;:46::i;:::-;11449:733;;;;:::o;19818:590::-;19886:7;19969:17;20032:6;20009:13;:21;20023:6;20009:21;;;;;;;;;;;;;;;;19991:15;:39;;;;:::i;:::-;19990:48;;;;:::i;:::-;19969:70;;20064:12;;20052:9;:24;20048:75;;;20101:12;;20089:24;;20048:75;20182:19;20204:6;20182:28;;20236:13;20287:3;20272:11;20267:1;20256:9;:12;;;;:::i;:::-;20255:28;;;;:::i;:::-;20254:36;;;;:::i;:::-;20236:55;;20350:10;20370:11;20363:5;:19;;;;:::i;:::-;20350:32;;20398:2;20391:9;;;;;;19818:590;;;;:::o;19355:455::-;19432:7;19507:23;19576:6;19553:13;:21;19567:6;19553:21;;;;;;;;;;;;;;;;19535:15;:39;;;;:::i;:::-;19534:48;;;;:::i;:::-;19507:76;;19592:19;19614:6;19592:28;;19646:22;19711:3;19704;19690:11;19672:15;:29;;;;:::i;:::-;:35;;;;:::i;:::-;19671:43;;;;:::i;:::-;19646:68;;19745:10;19774:9;19758:14;:26;;;;:::i;:::-;19745:39;;19800:2;19793:9;;;;;;19355:455;;;;:::o;12469:399::-;12572:1;12553:21;;:7;:21;;;;12545:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12623:49;12652:1;12656:7;12665:6;12623:20;:49::i;:::-;12701:6;12685:12;;:22;;;;;;;:::i;:::-;;;;;;;;12740:6;12718:9;:18;12728:7;12718:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;12783:7;12762:37;;12779:1;12762:37;;;12792:6;12762:37;;;;;;:::i;:::-;;;;;;;;12812:48;12840:1;12844:7;12853:6;12812:19;:48::i;:::-;12469:399;;:::o;18092:173::-;18148:16;18167:6;;;;;;;;;;;18148:25;;18193:8;18184:6;;:17;;;;;;;;;;;;;;;;;;18248:8;18217:40;;18238:8;18217:40;;;;;;;;;;;;18092:173;;:::o;13201:591::-;13304:1;13285:21;;:7;:21;;;;13277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13357:49;13378:7;13395:1;13399:6;13357:20;:49::i;:::-;13419:22;13444:9;:18;13454:7;13444:18;;;;;;;;;;;;;;;;13419:43;;13499:6;13481:14;:24;;13473:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13618:6;13601:14;:23;13580:9;:18;13590:7;13580:18;;;;;;;;;;;;;;;:44;;;;13662:6;13646:12;;:22;;;;;;;:::i;:::-;;;;;;;;13712:1;13686:37;;13695:7;13686:37;;;13716:6;13686:37;;;;;;:::i;:::-;;;;;;;;13736:48;13756:7;13773:1;13777:6;13736:19;:48::i;:::-;13201:591;;;:::o;15210:125::-;;;;:::o;15939:124::-;;;;:::o;24:623:1:-;;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;274:6;267:5;260:21;300:4;293:5;289:16;282:23;;325:6;375:3;367:4;359:6;355:17;350:3;346:27;343:36;340:2;;;392:1;389;382:12;340:2;420:1;405:236;430:6;427:1;424:13;405:236;;;497:3;525:37;558:3;546:10;525:37;:::i;:::-;520:3;513:50;592:4;587:3;583:14;576:21;;626:4;621:3;617:14;610:21;;465:176;452:1;449;445:9;440:14;;405:236;;;409:14;126:521;;;;;;;:::o;670:623::-;;791:81;807:64;864:6;807:64;:::i;:::-;791:81;:::i;:::-;782:90;;892:5;920:6;913:5;906:21;946:4;939:5;935:16;928:23;;971:6;1021:3;1013:4;1005:6;1001:17;996:3;992:27;989:36;986:2;;;1038:1;1035;1028:12;986:2;1066:1;1051:236;1076:6;1073:1;1070:13;1051:236;;;1143:3;1171:37;1204:3;1192:10;1171:37;:::i;:::-;1166:3;1159:50;1238:4;1233:3;1229:14;1222:21;;1272:4;1267:3;1263:14;1256:21;;1111:176;1098:1;1095;1091:9;1086:14;;1051:236;;;1055:14;772:521;;;;;;;:::o;1299:139::-;;1383:6;1370:20;1361:29;;1399:33;1426:5;1399:33;:::i;:::-;1351:87;;;;:::o;1461:303::-;;1581:3;1574:4;1566:6;1562:17;1558:27;1548:2;;1599:1;1596;1589:12;1548:2;1639:6;1626:20;1664:94;1754:3;1746:6;1739:4;1731:6;1727:17;1664:94;:::i;:::-;1655:103;;1538:226;;;;;:::o;1787:303::-;;1907:3;1900:4;1892:6;1888:17;1884:27;1874:2;;1925:1;1922;1915:12;1874:2;1965:6;1952:20;1990:94;2080:3;2072:6;2065:4;2057:6;2053:17;1990:94;:::i;:::-;1981:103;;1864:226;;;;;:::o;2096:139::-;;2180:6;2167:20;2158:29;;2196:33;2223:5;2196:33;:::i;:::-;2148:87;;;;:::o;2241:262::-;;2349:2;2337:9;2328:7;2324:23;2320:32;2317:2;;;2365:1;2362;2355:12;2317:2;2408:1;2433:53;2478:7;2469:6;2458:9;2454:22;2433:53;:::i;:::-;2423:63;;2379:117;2307:196;;;;:::o;2509:407::-;;;2634:2;2622:9;2613:7;2609:23;2605:32;2602:2;;;2650:1;2647;2640:12;2602:2;2693:1;2718:53;2763:7;2754:6;2743:9;2739:22;2718:53;:::i;:::-;2708:63;;2664:117;2820:2;2846:53;2891:7;2882:6;2871:9;2867:22;2846:53;:::i;:::-;2836:63;;2791:118;2592:324;;;;;:::o;2922:552::-;;;;3064:2;3052:9;3043:7;3039:23;3035:32;3032:2;;;3080:1;3077;3070:12;3032:2;3123:1;3148:53;3193:7;3184:6;3173:9;3169:22;3148:53;:::i;:::-;3138:63;;3094:117;3250:2;3276:53;3321:7;3312:6;3301:9;3297:22;3276:53;:::i;:::-;3266:63;;3221:118;3378:2;3404:53;3449:7;3440:6;3429:9;3425:22;3404:53;:::i;:::-;3394:63;;3349:118;3022:452;;;;;:::o;3480:407::-;;;3605:2;3593:9;3584:7;3580:23;3576:32;3573:2;;;3621:1;3618;3611:12;3573:2;3664:1;3689:53;3734:7;3725:6;3714:9;3710:22;3689:53;:::i;:::-;3679:63;;3635:117;3791:2;3817:53;3862:7;3853:6;3842:9;3838:22;3817:53;:::i;:::-;3807:63;;3762:118;3563:324;;;;;:::o;3893:693::-;;;4068:2;4056:9;4047:7;4043:23;4039:32;4036:2;;;4084:1;4081;4074:12;4036:2;4155:1;4144:9;4140:17;4127:31;4185:18;4177:6;4174:30;4171:2;;;4217:1;4214;4207:12;4171:2;4245:78;4315:7;4306:6;4295:9;4291:22;4245:78;:::i;:::-;4235:88;;4098:235;4400:2;4389:9;4385:18;4372:32;4431:18;4423:6;4420:30;4417:2;;;4463:1;4460;4453:12;4417:2;4491:78;4561:7;4552:6;4541:9;4537:22;4491:78;:::i;:::-;4481:88;;4343:236;4026:560;;;;;:::o;4592:262::-;;4700:2;4688:9;4679:7;4675:23;4671:32;4668:2;;;4716:1;4713;4706:12;4668:2;4759:1;4784:53;4829:7;4820:6;4809:9;4805:22;4784:53;:::i;:::-;4774:63;;4730:117;4658:196;;;;:::o;4860:118::-;4947:24;4965:5;4947:24;:::i;:::-;4942:3;4935:37;4925:53;;:::o;4984:109::-;5065:21;5080:5;5065:21;:::i;:::-;5060:3;5053:34;5043:50;;:::o;5099:364::-;;5215:39;5248:5;5215:39;:::i;:::-;5270:71;5334:6;5329:3;5270:71;:::i;:::-;5263:78;;5350:52;5395:6;5390:3;5383:4;5376:5;5372:16;5350:52;:::i;:::-;5427:29;5449:6;5427:29;:::i;:::-;5422:3;5418:39;5411:46;;5191:272;;;;;:::o;5469:366::-;;5632:67;5696:2;5691:3;5632:67;:::i;:::-;5625:74;;5708:93;5797:3;5708:93;:::i;:::-;5826:2;5821:3;5817:12;5810:19;;5615:220;;;:::o;5841:366::-;;6004:67;6068:2;6063:3;6004:67;:::i;:::-;5997:74;;6080:93;6169:3;6080:93;:::i;:::-;6198:2;6193:3;6189:12;6182:19;;5987:220;;;:::o;6213:366::-;;6376:67;6440:2;6435:3;6376:67;:::i;:::-;6369:74;;6452:93;6541:3;6452:93;:::i;:::-;6570:2;6565:3;6561:12;6554:19;;6359:220;;;:::o;6585:366::-;;6748:67;6812:2;6807:3;6748:67;:::i;:::-;6741:74;;6824:93;6913:3;6824:93;:::i;:::-;6942:2;6937:3;6933:12;6926:19;;6731:220;;;:::o;6957:366::-;;7120:67;7184:2;7179:3;7120:67;:::i;:::-;7113:74;;7196:93;7285:3;7196:93;:::i;:::-;7314:2;7309:3;7305:12;7298:19;;7103:220;;;:::o;7329:366::-;;7492:67;7556:2;7551:3;7492:67;:::i;:::-;7485:74;;7568:93;7657:3;7568:93;:::i;:::-;7686:2;7681:3;7677:12;7670:19;;7475:220;;;:::o;7701:366::-;;7864:67;7928:2;7923:3;7864:67;:::i;:::-;7857:74;;7940:93;8029:3;7940:93;:::i;:::-;8058:2;8053:3;8049:12;8042:19;;7847:220;;;:::o;8073:366::-;;8236:67;8300:2;8295:3;8236:67;:::i;:::-;8229:74;;8312:93;8401:3;8312:93;:::i;:::-;8430:2;8425:3;8421:12;8414:19;;8219:220;;;:::o;8445:366::-;;8608:67;8672:2;8667:3;8608:67;:::i;:::-;8601:74;;8684:93;8773:3;8684:93;:::i;:::-;8802:2;8797:3;8793:12;8786:19;;8591:220;;;:::o;8817:366::-;;8980:67;9044:2;9039:3;8980:67;:::i;:::-;8973:74;;9056:93;9145:3;9056:93;:::i;:::-;9174:2;9169:3;9165:12;9158:19;;8963:220;;;:::o;9189:366::-;;9352:67;9416:2;9411:3;9352:67;:::i;:::-;9345:74;;9428:93;9517:3;9428:93;:::i;:::-;9546:2;9541:3;9537:12;9530:19;;9335:220;;;:::o;9561:366::-;;9724:67;9788:2;9783:3;9724:67;:::i;:::-;9717:74;;9800:93;9889:3;9800:93;:::i;:::-;9918:2;9913:3;9909:12;9902:19;;9707:220;;;:::o;9933:366::-;;10096:67;10160:2;10155:3;10096:67;:::i;:::-;10089:74;;10172:93;10261:3;10172:93;:::i;:::-;10290:2;10285:3;10281:12;10274:19;;10079:220;;;:::o;10305:366::-;;10468:67;10532:2;10527:3;10468:67;:::i;:::-;10461:74;;10544:93;10633:3;10544:93;:::i;:::-;10662:2;10657:3;10653:12;10646:19;;10451:220;;;:::o;10677:118::-;10764:24;10782:5;10764:24;:::i;:::-;10759:3;10752:37;10742:53;;:::o;10801:112::-;10884:22;10900:5;10884:22;:::i;:::-;10879:3;10872:35;10862:51;;:::o;10919:222::-;;11050:2;11039:9;11035:18;11027:26;;11063:71;11131:1;11120:9;11116:17;11107:6;11063:71;:::i;:::-;11017:124;;;;:::o;11147:210::-;;11272:2;11261:9;11257:18;11249:26;;11285:65;11347:1;11336:9;11332:17;11323:6;11285:65;:::i;:::-;11239:118;;;;:::o;11363:313::-;;11514:2;11503:9;11499:18;11491:26;;11563:9;11557:4;11553:20;11549:1;11538:9;11534:17;11527:47;11591:78;11664:4;11655:6;11591:78;:::i;:::-;11583:86;;11481:195;;;;:::o;11682:419::-;;11886:2;11875:9;11871:18;11863:26;;11935:9;11929:4;11925:20;11921:1;11910:9;11906:17;11899:47;11963:131;12089:4;11963:131;:::i;:::-;11955:139;;11853:248;;;:::o;12107:419::-;;12311:2;12300:9;12296:18;12288:26;;12360:9;12354:4;12350:20;12346:1;12335:9;12331:17;12324:47;12388:131;12514:4;12388:131;:::i;:::-;12380:139;;12278:248;;;:::o;12532:419::-;;12736:2;12725:9;12721:18;12713:26;;12785:9;12779:4;12775:20;12771:1;12760:9;12756:17;12749:47;12813:131;12939:4;12813:131;:::i;:::-;12805:139;;12703:248;;;:::o;12957:419::-;;13161:2;13150:9;13146:18;13138:26;;13210:9;13204:4;13200:20;13196:1;13185:9;13181:17;13174:47;13238:131;13364:4;13238:131;:::i;:::-;13230:139;;13128:248;;;:::o;13382:419::-;;13586:2;13575:9;13571:18;13563:26;;13635:9;13629:4;13625:20;13621:1;13610:9;13606:17;13599:47;13663:131;13789:4;13663:131;:::i;:::-;13655:139;;13553:248;;;:::o;13807:419::-;;14011:2;14000:9;13996:18;13988:26;;14060:9;14054:4;14050:20;14046:1;14035:9;14031:17;14024:47;14088:131;14214:4;14088:131;:::i;:::-;14080:139;;13978:248;;;:::o;14232:419::-;;14436:2;14425:9;14421:18;14413:26;;14485:9;14479:4;14475:20;14471:1;14460:9;14456:17;14449:47;14513:131;14639:4;14513:131;:::i;:::-;14505:139;;14403:248;;;:::o;14657:419::-;;14861:2;14850:9;14846:18;14838:26;;14910:9;14904:4;14900:20;14896:1;14885:9;14881:17;14874:47;14938:131;15064:4;14938:131;:::i;:::-;14930:139;;14828:248;;;:::o;15082:419::-;;15286:2;15275:9;15271:18;15263:26;;15335:9;15329:4;15325:20;15321:1;15310:9;15306:17;15299:47;15363:131;15489:4;15363:131;:::i;:::-;15355:139;;15253:248;;;:::o;15507:419::-;;15711:2;15700:9;15696:18;15688:26;;15760:9;15754:4;15750:20;15746:1;15735:9;15731:17;15724:47;15788:131;15914:4;15788:131;:::i;:::-;15780:139;;15678:248;;;:::o;15932:419::-;;16136:2;16125:9;16121:18;16113:26;;16185:9;16179:4;16175:20;16171:1;16160:9;16156:17;16149:47;16213:131;16339:4;16213:131;:::i;:::-;16205:139;;16103:248;;;:::o;16357:419::-;;16561:2;16550:9;16546:18;16538:26;;16610:9;16604:4;16600:20;16596:1;16585:9;16581:17;16574:47;16638:131;16764:4;16638:131;:::i;:::-;16630:139;;16528:248;;;:::o;16782:419::-;;16986:2;16975:9;16971:18;16963:26;;17035:9;17029:4;17025:20;17021:1;17010:9;17006:17;16999:47;17063:131;17189:4;17063:131;:::i;:::-;17055:139;;16953:248;;;:::o;17207:419::-;;17411:2;17400:9;17396:18;17388:26;;17460:9;17454:4;17450:20;17446:1;17435:9;17431:17;17424:47;17488:131;17614:4;17488:131;:::i;:::-;17480:139;;17378:248;;;:::o;17632:222::-;;17763:2;17752:9;17748:18;17740:26;;17776:71;17844:1;17833:9;17829:17;17820:6;17776:71;:::i;:::-;17730:124;;;;:::o;17860:214::-;;17987:2;17976:9;17972:18;17964:26;;18000:67;18064:1;18053:9;18049:17;18040:6;18000:67;:::i;:::-;17954:120;;;;:::o;18080:129::-;;18141:20;;:::i;:::-;18131:30;;18170:33;18198:4;18190:6;18170:33;:::i;:::-;18121:88;;;:::o;18215:75::-;;18281:2;18275:9;18265:19;;18255:35;:::o;18296:311::-;;18463:18;18455:6;18452:30;18449:2;;;18485:18;;:::i;:::-;18449:2;18535:4;18527:6;18523:17;18515:25;;18595:4;18589;18585:15;18577:23;;18378:229;;;:::o;18613:311::-;;18780:18;18772:6;18769:30;18766:2;;;18802:18;;:::i;:::-;18766:2;18852:4;18844:6;18840:17;18832:25;;18912:4;18906;18902:15;18894:23;;18695:229;;;:::o;18930:99::-;;19016:5;19010:12;19000:22;;18989:40;;;:::o;19035:169::-;;19153:6;19148:3;19141:19;19193:4;19188:3;19184:14;19169:29;;19131:73;;;;:::o;19210:305::-;;19269:20;19287:1;19269:20;:::i;:::-;19264:25;;19303:20;19321:1;19303:20;:::i;:::-;19298:25;;19457:1;19389:66;19385:74;19382:1;19379:81;19376:2;;;19463:18;;:::i;:::-;19376:2;19507:1;19504;19500:9;19493:16;;19254:261;;;;:::o;19521:185::-;;19578:20;19596:1;19578:20;:::i;:::-;19573:25;;19612:20;19630:1;19612:20;:::i;:::-;19607:25;;19651:1;19641:2;;19656:18;;:::i;:::-;19641:2;19698:1;19695;19691:9;19686:14;;19563:143;;;;:::o;19712:848::-;;;19804:6;19795:15;;19828:5;19819:14;;19842:712;19863:1;19853:8;19850:15;19842:712;;;19958:4;19953:3;19949:14;19943:4;19940:24;19937:2;;;19967:18;;:::i;:::-;19937:2;20017:1;20007:8;20003:16;20000:2;;;20432:4;20425:5;20421:16;20412:25;;20000:2;20482:4;20476;20472:15;20464:23;;20512:32;20535:8;20512:32;:::i;:::-;20500:44;;19842:712;;;19785:775;;;;;;;:::o;20566:281::-;;20648:23;20666:4;20648:23;:::i;:::-;20640:31;;20692:25;20708:8;20692:25;:::i;:::-;20680:37;;20736:104;20773:66;20763:8;20757:4;20736:104;:::i;:::-;20727:113;;20630:217;;;;:::o;20853:1073::-;;21098:8;21088:2;;21119:1;21110:10;;21121:5;;21088:2;21147:4;21137:2;;21164:1;21155:10;;21166:5;;21137:2;21233:4;21281:1;21276:27;;;;21317:1;21312:191;;;;21226:277;;21276:27;21294:1;21285:10;;21296:5;;;21312:191;21357:3;21347:8;21344:17;21341:2;;;21364:18;;:::i;:::-;21341:2;21413:8;21410:1;21406:16;21397:25;;21448:3;21441:5;21438:14;21435:2;;;21455:18;;:::i;:::-;21435:2;21488:5;;;21226:277;;21612:2;21602:8;21599:16;21593:3;21587:4;21584:13;21580:36;21562:2;21552:8;21549:16;21544:2;21538:4;21535:12;21531:35;21515:111;21512:2;;;21668:8;21662:4;21658:19;21649:28;;21703:3;21696:5;21693:14;21690:2;;;21710:18;;:::i;:::-;21690:2;21743:5;;21512:2;21783:42;21821:3;21811:8;21805:4;21802:1;21783:42;:::i;:::-;21768:57;;;;21857:4;21852:3;21848:14;21841:5;21838:25;21835:2;;;21866:18;;:::i;:::-;21835:2;21915:4;21908:5;21904:16;21895:25;;20913:1013;;;;;;:::o;21932:348::-;;21995:20;22013:1;21995:20;:::i;:::-;21990:25;;22029:20;22047:1;22029:20;:::i;:::-;22024:25;;22217:1;22149:66;22145:74;22142:1;22139:81;22134:1;22127:9;22120:17;22116:105;22113:2;;;22224:18;;:::i;:::-;22113:2;22272:1;22269;22265:9;22254:20;;21980:300;;;;:::o;22286:191::-;;22346:20;22364:1;22346:20;:::i;:::-;22341:25;;22380:20;22398:1;22380:20;:::i;:::-;22375:25;;22419:1;22416;22413:8;22410:2;;;22424:18;;:::i;:::-;22410:2;22469:1;22466;22462:9;22454:17;;22331:146;;;;:::o;22483:96::-;;22549:24;22567:5;22549:24;:::i;:::-;22538:35;;22528:51;;;:::o;22585:90::-;;22662:5;22655:13;22648:21;22637:32;;22627:48;;;:::o;22681:126::-;;22758:42;22751:5;22747:54;22736:65;;22726:81;;;:::o;22813:77::-;;22879:5;22868:16;;22858:32;;;:::o;22896:86::-;;22971:4;22964:5;22960:16;22949:27;;22939:43;;;:::o;22988:307::-;23056:1;23066:113;23080:6;23077:1;23074:13;23066:113;;;23165:1;23160:3;23156:11;23150:18;23146:1;23141:3;23137:11;23130:39;23102:2;23099:1;23095:10;23090:15;;23066:113;;;23197:6;23194:1;23191:13;23188:2;;;23277:1;23268:6;23263:3;23259:16;23252:27;23188:2;23037:258;;;;:::o;23301:320::-;;23382:1;23376:4;23372:12;23362:22;;23429:1;23423:4;23419:12;23450:18;23440:2;;23506:4;23498:6;23494:17;23484:27;;23440:2;23568;23560:6;23557:14;23537:18;23534:38;23531:2;;;23587:18;;:::i;:::-;23531:2;23352:269;;;;:::o;23627:281::-;23710:27;23732:4;23710:27;:::i;:::-;23702:6;23698:40;23840:6;23828:10;23825:22;23804:18;23792:10;23789:34;23786:62;23783:2;;;23851:18;;:::i;:::-;23783:2;23891:10;23887:2;23880:22;23670:238;;;:::o;23914:233::-;;23976:24;23994:5;23976:24;:::i;:::-;23967:33;;24022:66;24015:5;24012:77;24009:2;;;24092:18;;:::i;:::-;24009:2;24139:1;24132:5;24128:13;24121:20;;23957:190;;;:::o;24153:180::-;24201:77;24198:1;24191:88;24298:4;24295:1;24288:15;24322:4;24319:1;24312:15;24339:180;24387:77;24384:1;24377:88;24484:4;24481:1;24474:15;24508:4;24505:1;24498:15;24525:180;24573:77;24570:1;24563:88;24670:4;24667:1;24660:15;24694:4;24691:1;24684:15;24711:180;24759:77;24756:1;24749:88;24856:4;24853:1;24846:15;24880:4;24877:1;24870:15;24897:102;;24989:2;24985:7;24980:2;24973:5;24969:14;24965:28;24955:38;;24945:54;;;:::o;25005:102::-;;25094:5;25091:1;25087:13;25066:34;;25056:51;;;:::o;25113:222::-;25253:34;25249:1;25241:6;25237:14;25230:58;25322:5;25317:2;25309:6;25305:15;25298:30;25219:116;:::o;25341:180::-;25481:32;25477:1;25469:6;25465:14;25458:56;25447:74;:::o;25527:221::-;25667:34;25663:1;25655:6;25651:14;25644:58;25736:4;25731:2;25723:6;25719:15;25712:29;25633:115;:::o;25754:294::-;25894:34;25890:1;25882:6;25878:14;25871:58;25963:34;25958:2;25950:6;25946:15;25939:59;26032:8;26027:2;26019:6;26015:15;26008:33;25860:188;:::o;26054:225::-;26194:34;26190:1;26182:6;26178:14;26171:58;26263:8;26258:2;26250:6;26246:15;26239:33;26160:119;:::o;26285:221::-;26425:34;26421:1;26413:6;26409:14;26402:58;26494:4;26489:2;26481:6;26477:15;26470:29;26391:115;:::o;26512:225::-;26652:34;26648:1;26640:6;26636:14;26629:58;26721:8;26716:2;26708:6;26704:15;26697:33;26618:119;:::o;26743:227::-;26883:34;26879:1;26871:6;26867:14;26860:58;26952:10;26947:2;26939:6;26935:15;26928:35;26849:121;:::o;26976:182::-;27116:34;27112:1;27104:6;27100:14;27093:58;27082:76;:::o;27164:220::-;27304:34;27300:1;27292:6;27288:14;27281:58;27373:3;27368:2;27360:6;27356:15;27349:28;27270:114;:::o;27390:224::-;27530:34;27526:1;27518:6;27514:14;27507:58;27599:7;27594:2;27586:6;27582:15;27575:32;27496:118;:::o;27620:223::-;27760:34;27756:1;27748:6;27744:14;27737:58;27829:6;27824:2;27816:6;27812:15;27805:31;27726:117;:::o;27849:224::-;27989:34;27985:1;27977:6;27973:14;27966:58;28058:7;28053:2;28045:6;28041:15;28034:32;27955:118;:::o;28079:181::-;28219:33;28215:1;28207:6;28203:14;28196:57;28185:75;:::o;28266:122::-;28339:24;28357:5;28339:24;:::i;:::-;28332:5;28329:35;28319:2;;28378:1;28375;28368:12;28319:2;28309:79;:::o;28394:122::-;28467:24;28485:5;28467:24;:::i;:::-;28460:5;28457:35;28447:2;;28506:1;28503;28496:12;28447:2;28437:79;:::o

Swarm Source

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