Contract 0x77f6a5f1b7a2b6d6c322af8581317d6bb0a52689

 

Contract Overview

Spore Engineering: SPORE Token
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x9fd63c7a593045b5bcc5d1337eea479a05d53c1afeedcee054cf0fc01fb93df353464102021-03-03 2:29:3139 mins ago0x24be7d398e09b054a00ae6c1914081da50ba2a4e IN  Spore Engineering: SPORE Token0 BNB0.0001456
0x85f6322d126507310c8c59253d4e11197b54fd4d07bdaf6d5475d5bdf936737953455072021-03-03 1:44:221 hr 24 mins ago0x34092af2e464bf6d5421f50f700fb4d739b1c3cf IN  Spore Engineering: SPORE Token0 BNB0.00044503
0x8f88ffed613a03356564f146f85e9c36b66dfbe0a5a1e856cef33d0ec6f1911553450752021-03-03 1:22:461 hr 46 mins ago0xa16759765cdc4ed6da59e31e94cb3640a2136ffd IN  Spore Engineering: SPORE Token0 BNB0.00044503
0xc5f95a79de2f2cc7fa955d0a3aaae0ae04afaab4520fdd55e6d5adeb3521ab5153441592021-03-03 0:36:572 hrs 32 mins ago0xef7ff2a2c078354540747a57fa0aa22bbb9c2fed IN  Spore Engineering: SPORE Token0 BNB0.00029215
0xf3df4345f5b6be3963ba875e17e9b77993607b330da6824a3ed3c3f607b4ac8753441272021-03-03 0:35:212 hrs 33 mins ago0xef7ff2a2c078354540747a57fa0aa22bbb9c2fed IN  Spore Engineering: SPORE Token0 BNB0.00044215
0xce8f653a7caa25c1db60082b409295bcee2bbc8d8acfa600b61418b20b82810e53440222021-03-03 0:30:062 hrs 38 mins ago0xf0e359a745a5c71e744d9ce4ebe47bb44aed8a86 IN  Spore Engineering: SPORE Token0 BNB0.00044215
0x5935d2420bf2fd37108b527897c87a63008f4f8fad3d19f5919dd3c9d2a60cdd53426272021-03-02 23:20:213 hrs 48 mins ago0x10ff4a7098c245a84e2ca64095f05d679571f739 IN  Spore Engineering: SPORE Token0 BNB0.00044503
0xfe763b912790d443fd2cb76cc287665c5101295227e7fc7fd4998ade039ee4ad53421292021-03-02 22:54:374 hrs 14 mins ago0x10ff4a7098c245a84e2ca64095f05d679571f739 IN  Spore Engineering: SPORE Token0 BNB0.00044215
0x1cefba9a718c0901672db44955c77ce9ddbb760acfd60dbfb45a3feedd3144d153420502021-03-02 22:50:404 hrs 18 mins ago0xe8fe4a8493deff37155f51a3f29aaebcb1398962 IN  Spore Engineering: SPORE Token0 BNB0.00044503
0x6c5047bccf528fb671a1a42d2f6147e66f52f9fd9881ace5e252fb61419645ba53416282021-03-02 22:29:344 hrs 39 mins ago0xf4a4dbeec88d215b9ca1e473892421d02fcfed63 IN  Spore Engineering: SPORE Token0 BNB0.00044503
0x2bbe2492bc8d6769e4af076f45b992d75ed040966db10c97d4a2a37f9424a0ff53400872021-03-02 21:12:315 hrs 56 mins ago0x861c566965ec941fa3487c80fba8988b3acd3fb8 IN  Spore Engineering: SPORE Token0 BNB0.0001456
0xca46a9c20859713e379c3e0af029927e724627f909b1a3ce03465bad888589b953397252021-03-02 20:54:256 hrs 14 mins ago0x44fcbcec79e91bcf843bcb14e74276803903d4e9 IN  Spore Engineering: SPORE Token0 BNB0.00025015
0x020f50ec845ad3c5bbe9206f9f2c6dfb05a3cedaac19339bb28c95675bad901653397082021-03-02 20:53:346 hrs 15 mins ago0x44fcbcec79e91bcf843bcb14e74276803903d4e9 IN  Spore Engineering: SPORE Token0 BNB0.00025015
0x178be64c40eeea704dd83a18fb65dd3a1169ab107ba1be014b2bd34b570bcdaa53396602021-03-02 20:51:106 hrs 17 mins ago0x44fcbcec79e91bcf843bcb14e74276803903d4e9 IN  Spore Engineering: SPORE Token0 BNB0.00025015
0x43d8ca6125a3d84a82548cb266c3adc1e985ad7f7edae0a846a407daa547b29a53396582021-03-02 20:51:046 hrs 17 mins ago0x44fcbcec79e91bcf843bcb14e74276803903d4e9 IN  Spore Engineering: SPORE Token0 BNB0.00044215
0xaf11fbe84a8a0803dc847cec59da47974bcc91fdd4b438b416a39818310f3ccb53396392021-03-02 20:50:076 hrs 18 mins ago0xc61cc53572f07062731b21685f07fb1d71495fc9 IN  Spore Engineering: SPORE Token0 BNB0.00036353
0x87dee1843b2acdcc19f5ccc4b3a5ffe4e867d54cc62640b0e396c8cfbbb2f35753390102021-03-02 20:18:406 hrs 50 mins ago0x15952d742a843d651c02ef2fd381a0d19fd0ce59 IN  Spore Engineering: SPORE Token0 BNB0.00036341
0xf58125cacf2d09a3db56ac4a8b0a3635ae49f772eb80b6156bcb87abc30c7a4853370842021-03-02 18:42:228 hrs 26 mins ago0x48633975386331abbb1bb7a1a9cdbad8882100a4 IN  Spore Engineering: SPORE Token0 BNB0.00044503
0xf653d2a005bbaff7934f2282a51b0198d1ca1edd087376bd9c7eb7505fee109f53366782021-03-02 18:22:048 hrs 46 mins ago0xd2c57fb1a6eea6000664290660967b411eb078cc IN  Spore Engineering: SPORE Token0 BNB0.00044503
0xbecc0a0f2571de9a2cd5c9d319723d916cec45ac8b2e76baefc08ef48d36876953365562021-03-02 18:15:588 hrs 53 mins ago0x55d0246c3ba398ce5facf2e73f41c94ae1583448 IN  Spore Engineering: SPORE Token0 BNB0.00044503
0x613d61bb8a24fc8790e2ac6fece68e06ffb8ae53ddd4851470c212c8aa81886c53351222021-03-02 17:04:1610 hrs 4 mins ago0x343d932f55356affa8f86fc861cbebe3e51df9c5 IN  Spore Engineering: SPORE Token0 BNB0.00044503
0x5c9ae00418ddd262a3d8f495ed2cbcbdf9b1c94aaeca2b23cae517d9b99ab9b453350602021-03-02 17:01:1010 hrs 7 mins ago0x51bf22a4a0374cdcaa1a41501ca4e359415d2777 IN  Spore Engineering: SPORE Token0 BNB0.00044503
0x56aa6e4b015c5ac676e90d988f7157d8344c402493a97a4d4c2ecd6f0452f0da53334402021-03-02 15:39:4911 hrs 29 mins ago0xad550ed1dea23eac07d6b1d9af391d4b643bb711 IN  Spore Engineering: SPORE Token0 BNB0.00044215
0xb68e6f1761bdc3d5453fa76043221a6a84607e624430c74b1acac12839270dad53331352021-03-02 15:24:3411 hrs 44 mins ago0x96e564c22ae769567b1d7680b2acd5167e841be5 IN  Spore Engineering: SPORE Token0 BNB0.00036317
0x50f115ed5d5ce2237b6f69adac81f56a5a26cf62d37ef54222d0875ca1d7c6a853328412021-03-02 15:09:5211 hrs 59 mins ago0x4ec0acc87689bbf97598c8a7dd6859846d520f5e IN  Spore Engineering: SPORE Token0 BNB0.00044215
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x83f8c03cc095aad6bf64920ab85bf3fd514d329bbde44c45417ec7d3e0475e6b53470462021-03-03 3:01:197 mins ago Spore Engineering: Staking Contract Spore Engineering: SPORE Token0 BNB
0xf0bfd6894d4bac11d54dee62cd9fc25f7b979c251f156a1de0e3017b0a5b0c9453470252021-03-03 3:00:168 mins ago Spore Engineering: BUSD Farm Spore Engineering: SPORE Token0 BNB
0x4976ecdaa1e37cdcc1cc0a47cc4eabbff5db6aa6645ef819d9cab941cdaaaf8a53468862021-03-03 2:53:1915 mins ago 0x0000000000b80b2b49630047c38f2810ab8fb946 Spore Engineering: SPORE Token0 BNB
0x4976ecdaa1e37cdcc1cc0a47cc4eabbff5db6aa6645ef819d9cab941cdaaaf8a53468862021-03-03 2:53:1915 mins ago 0x0000000000b80b2b49630047c38f2810ab8fb946 Spore Engineering: SPORE Token0 BNB
0x1dcf940125f62cc94dce339fc8454c1172b8790b7c53a7e94beac058c2663bae53468862021-03-03 2:53:1915 mins ago 0x0000000000b80b2b49630047c38f2810ab8fb946 Spore Engineering: SPORE Token0 BNB
0x1dcf940125f62cc94dce339fc8454c1172b8790b7c53a7e94beac058c2663bae53468862021-03-03 2:53:1915 mins ago 0x0000000000b80b2b49630047c38f2810ab8fb946 Spore Engineering: SPORE Token0 BNB
0x66430c9752f4bcd7e8018c7b56c7e29a0fe34e6ccf82c3cad3d9246428eee8bf53468862021-03-03 2:53:1915 mins ago 0x0000000000b80b2b49630047c38f2810ab8fb946 Spore Engineering: SPORE Token0 BNB
0x66430c9752f4bcd7e8018c7b56c7e29a0fe34e6ccf82c3cad3d9246428eee8bf53468862021-03-03 2:53:1915 mins ago 0x0000000000b80b2b49630047c38f2810ab8fb946 Spore Engineering: SPORE Token0 BNB
0x3b6128d24ccdad412060d24dcf9262293bc3014c8d0785c2ce1f351bf38140fd53468852021-03-03 2:53:1615 mins ago PancakeSwap: BUSD-T-SPORE Spore Engineering: SPORE Token0 BNB
0x3b6128d24ccdad412060d24dcf9262293bc3014c8d0785c2ce1f351bf38140fd53468852021-03-03 2:53:1615 mins ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0x3b6128d24ccdad412060d24dcf9262293bc3014c8d0785c2ce1f351bf38140fd53468852021-03-03 2:53:1615 mins ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0x9c013387af9d4145b27752df0504895ee67e9a8e473c643abc0f3ac3454247c953468852021-03-03 2:53:1615 mins ago PancakeSwap: SPORE-BUSD Spore Engineering: SPORE Token0 BNB
0x9c013387af9d4145b27752df0504895ee67e9a8e473c643abc0f3ac3454247c953468852021-03-03 2:53:1615 mins ago PancakeSwap: Cake-SPORE Spore Engineering: SPORE Token0 BNB
0x9c013387af9d4145b27752df0504895ee67e9a8e473c643abc0f3ac3454247c953468852021-03-03 2:53:1615 mins ago PancakeSwap: Cake-SPORE Spore Engineering: SPORE Token0 BNB
0x18b5362470d6ff543de12f41f5b65dccfd3ca37bd821090667d30dea1f7427cd53468852021-03-03 2:53:1615 mins ago PancakeSwap: DAI-SPORE Spore Engineering: SPORE Token0 BNB
0x18b5362470d6ff543de12f41f5b65dccfd3ca37bd821090667d30dea1f7427cd53468852021-03-03 2:53:1615 mins ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0x18b5362470d6ff543de12f41f5b65dccfd3ca37bd821090667d30dea1f7427cd53468852021-03-03 2:53:1615 mins ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0xac3c4c4be22f4e8efc58759e3379e56b6862b3ceafe6c4d391f04e856568ea3753468852021-03-03 2:53:1615 mins ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0xac3c4c4be22f4e8efc58759e3379e56b6862b3ceafe6c4d391f04e856568ea3753468852021-03-03 2:53:1615 mins ago PancakeSwap: Cake-SPORE Spore Engineering: SPORE Token0 BNB
0xac3c4c4be22f4e8efc58759e3379e56b6862b3ceafe6c4d391f04e856568ea3753468852021-03-03 2:53:1615 mins ago 0xe0f494dabc939e6b9bf5c9dfe9be9e136136eb1b Spore Engineering: SPORE Token0 BNB
0xac3c4c4be22f4e8efc58759e3379e56b6862b3ceafe6c4d391f04e856568ea3753468852021-03-03 2:53:1615 mins ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0x586c62c73294c2215a24c9e8d1d998570c83a13f40598859b3f65242f6b27dd653468842021-03-03 2:53:1315 mins ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0x586c62c73294c2215a24c9e8d1d998570c83a13f40598859b3f65242f6b27dd653468842021-03-03 2:53:1315 mins ago PancakeSwap: Router Spore Engineering: SPORE Token0 BNB
0xadc07c92654bd63472bc719c33acd0ce1db66da64ecc99796d14a03363d4594453468692021-03-03 2:52:2816 mins ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0xadc07c92654bd63472bc719c33acd0ce1db66da64ecc99796d14a03363d4594453468692021-03-03 2:52:2816 mins ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SporeToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-01-26
*/

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity >=0.7.6 <0.8.0;

library EnumerableSet {

    struct Set {
        bytes32[] _values;

        mapping (bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            bytes32 lastvalue = set._values[lastIndex];

            set._values[toDeleteIndex] = lastvalue;
            set._indexes[lastvalue] = toDeleteIndex + 1;

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }
    
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)));
    }
    
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint256(_at(set._inner, index)));
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

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

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

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

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

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (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 {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

abstract contract AccessControl is Context {
    using EnumerableSet for EnumerableSet.AddressSet;
    using Address for address;

    struct RoleData {
        EnumerableSet.AddressSet members;
        bytes32 adminRole;
    }

    mapping (bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    function hasRole(bytes32 role, address account) public view returns (bool) {
        return _roles[role].members.contains(account);
    }

    function getRoleMemberCount(bytes32 role) public view returns (uint256) {
        return _roles[role].members.length();
    }

    function getRoleMember(bytes32 role, uint256 index) public view returns (address) {
        return _roles[role].members.at(index);
    }

    function getRoleAdmin(bytes32 role) public view returns (bytes32) {
        return _roles[role].adminRole;
    }

    function grantRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant");

        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke");

        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);
        _roles[role].adminRole = adminRole;
    }

    function _grantRole(bytes32 role, address account) private {
        if (_roles[role].members.add(account)) {
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (_roles[role].members.remove(account)) {
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

interface IBEP20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC20 is Context, IBEP20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual 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 _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);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

contract SporeToken is ERC20, AccessControl {
    
    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
    
    constructor() ERC20("Spore Token", "SPORE") {
        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
        _setupRole(MINTER_ROLE, _msgSender());
    }
    
    function mint(address to, uint256 amount) public virtual {
        require(hasRole(MINTER_ROLE, _msgSender()), "must have minter role to mint");
        _mint(to, amount);
    }
    
    function burn(address to, uint256 amount) public virtual {
        require(hasRole(MINTER_ROLE, _msgSender()), "must have minter role to mint");
        _burn(to, amount);
    }
}

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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","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"}]

60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f53706f726520546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f53504f5245000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620002d0565b508060049080519060200190620000af929190620002d0565b506012600560006101000a81548160ff021916908360ff1602179055505050620000f26000801b620000e66200013960201b60201c565b6200014160201b60201c565b620001337f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620001276200013960201b60201c565b6200014160201b60201c565b62000386565b600033905090565b6200015382826200015760201b60201c565b5050565b620001868160066000858152602001908152602001600020600001620001fb60201b6200112a1790919060201c565b15620001f7576200019c6200013960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006200022b836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200023360201b60201c565b905092915050565b6000620002478383620002ad60201b60201c565b620002a2578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620002a7565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000308576000855562000354565b82601f106200032357805160ff191683800117855562000354565b8280016001018555821562000354579182015b828111156200035357825182559160200191906001019062000336565b5b50905062000363919062000367565b5090565b5b808211156200038257600081600090555060010162000368565b5090565b61212c80620003966000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80639010d07c116100b8578063a457c2d71161007c578063a457c2d71461068e578063a9059cbb146106f2578063ca15c87314610756578063d539139314610798578063d547741f146107b6578063dd62ed3e1461080457610142565b80639010d07c146104d957806391d148541461053b57806395d89b411461059f5780639dc29fac14610622578063a217fddf1461067057610142565b80632f2ff15d1161010a5780632f2ff15d14610312578063313ce5671461036057806336568abe1461038157806339509351146103cf57806340c10f191461043357806370a082311461048157610142565b806306fdde0314610147578063095ea7b3146101ca57806318160ddd1461022e57806323b872dd1461024c578063248a9ca3146102d0575b600080fd5b61014f61087c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018f578082015181840152602081019050610174565b50505050905090810190601f1680156101bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610216600480360360408110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061091e565b60405180821515815260200191505060405180910390f35b61023661093c565b6040518082815260200191505060405180910390f35b6102b86004803603606081101561026257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610946565b60405180821515815260200191505060405180910390f35b6102fc600480360360208110156102e657600080fd5b8101908080359060200190929190505050610a1f565b6040518082815260200191505060405180910390f35b61035e6004803603604081101561032857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a3f565b005b610368610ac9565b604051808260ff16815260200191505060405180910390f35b6103cd6004803603604081101561039757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae0565b005b61041b600480360360408110156103e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b79565b60405180821515815260200191505060405180910390f35b61047f6004803603604081101561044957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c2c565b005b6104c36004803603602081101561049757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cdd565b6040518082815260200191505060405180910390f35b61050f600480360360408110156104ef57600080fd5b810190808035906020019092919080359060200190929190505050610d25565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105876004803603604081101561055157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d57565b60405180821515815260200191505060405180910390f35b6105a7610d89565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e75780820151818401526020810190506105cc565b50505050905090810190601f1680156106145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066e6004803603604081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e2b565b005b610678610edc565b6040518082815260200191505060405180910390f35b6106da600480360360408110156106a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b60405180821515815260200191505060405180910390f35b61073e6004803603604081101561070857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fb0565b60405180821515815260200191505060405180910390f35b6107826004803603602081101561076c57600080fd5b8101908080359060200190929190505050610fce565b6040518082815260200191505060405180910390f35b6107a0610ff5565b6040518082815260200191505060405180910390f35b610802600480360360408110156107cc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611019565b005b6108666004803603604081101561081a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a3565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109145780601f106108e957610100808354040283529160200191610914565b820191906000526020600020905b8154815290600101906020018083116108f757829003601f168201915b5050505050905090565b600061093261092b61115a565b8484611162565b6001905092915050565b6000600254905090565b6000610953848484611359565b610a148461095f61115a565b610a0f8560405180606001604052806028815260200161201160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c561115a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161a9092919063ffffffff16565b611162565b600190509392505050565b600060066000838152602001908152602001600020600201549050919050565b610a666006600084815260200190815260200160002060020154610a6161115a565b610d57565b610abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f48602f913960400191505060405180910390fd5b610ac582826116da565b5050565b6000600560009054906101000a900460ff16905090565b610ae861115a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806120c8602f913960400191505060405180910390fd5b610b75828261176e565b5050565b6000610c22610b8661115a565b84610c1d8560016000610b9761115a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461180290919063ffffffff16565b611162565b6001905092915050565b610c5d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610c5861115a565b610d57565b610ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000081525060200191505060405180910390fd5b610cd9828261188a565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610d4f8260066000868152602001908152602001600020600001611a5190919063ffffffff16565b905092915050565b6000610d818260066000868152602001908152602001600020600001611a6b90919063ffffffff16565b905092915050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e215780601f10610df657610100808354040283529160200191610e21565b820191906000526020600020905b815481529060010190602001808311610e0457829003601f168201915b5050505050905090565b610e5c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610e5761115a565b610d57565b610ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000081525060200191505060405180910390fd5b610ed88282611a9b565b5050565b6000801b81565b6000610fa6610ef061115a565b84610fa1856040518060600160405280602581526020016120a36025913960016000610f1a61115a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161a9092919063ffffffff16565b611162565b6001905092915050565b6000610fc4610fbd61115a565b8484611359565b6001905092915050565b6000610fee60066000848152602001908152602001600020600001611c5f565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611040600660008481526020019081526020016000206002015461103b61115a565b610d57565b611095576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611fe16030913960400191505060405180910390fd5b61109f828261176e565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000611152836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611c74565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061207f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561126e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611f996022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061205a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611465576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611f256023913960400191505060405180910390fd5b611470838383611ce4565b6114db81604051806060016040528060268152602001611fbb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061156e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461180290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561168c578082015181840152602081019050611671565b50505050905090810190601f1680156116b95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b611702816006600085815260200190815260200160002060000161112a90919063ffffffff16565b1561176a5761170f61115a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6117968160066000858152602001908152602001600020600001611ce990919063ffffffff16565b156117fe576117a361115a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080828401905083811015611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561192d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61193960008383611ce4565b61194e8160025461180290919063ffffffff16565b6002819055506119a5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461180290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611a608360000183611d19565b60001c905092915050565b6000611a93836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611d9c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120396021913960400191505060405180910390fd5b611b2d82600083611ce4565b611b9881604051806060016040528060228152602001611f77602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bef81600254611dbf90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611c6d82600001611e09565b9050919050565b6000611c808383611d9c565b611cd9578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611cde565b600090505b92915050565b505050565b6000611d11836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611e1a565b905092915050565b600081836000018054905011611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611f036022913960400191505060405180910390fd5b826000018281548110611d8957fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000611e0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061161a565b905092915050565b600081600001805490509050919050565b60008083600101600084815260200190815260200160002054905060008114611ef65760006001820390506000600186600001805490500390506000866000018281548110611e6557fe5b9060005260206000200154905080876000018481548110611e8257fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480611eba57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611efc565b60009150505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220a3971de797ad1fb303f73787f2d6e3b4974d2b8e40aa1ada06a49e027b1df24864736f6c63430007060033

Deployed ByteCode Sourcemap

16846:674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13073:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13927:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13350:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14104:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10370:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10492:227;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13259:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10965:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14433:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17145:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13458:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10224:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9942:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13164:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17337:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9576:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14659:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13585:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10089:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16903:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10727:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13768:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13073:83;13110:13;13143:5;13136:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13073:83;:::o;13927:169::-;14010:4;14027:39;14036:12;:10;:12::i;:::-;14050:7;14059:6;14027:8;:39::i;:::-;14084:4;14077:11;;13927:169;;;;:::o;13350:100::-;13403:7;13430:12;;13423:19;;13350:100;:::o;14104:321::-;14210:4;14227:36;14237:6;14245:9;14256:6;14227:9;:36::i;:::-;14274:121;14283:6;14291:12;:10;:12::i;:::-;14305:89;14343:6;14305:89;;;;;;;;;;;;;;;;;:11;:19;14317:6;14305:19;;;;;;;;;;;;;;;:33;14325:12;:10;:12::i;:::-;14305:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14274:8;:121::i;:::-;14413:4;14406:11;;14104:321;;;;;:::o;10370:114::-;10427:7;10454:6;:12;10461:4;10454:12;;;;;;;;;;;:22;;;10447:29;;10370:114;;;:::o;10492:227::-;10576:45;10584:6;:12;10591:4;10584:12;;;;;;;;;;;:22;;;10608:12;:10;:12::i;:::-;10576:7;:45::i;:::-;10568:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10686:25;10697:4;10703:7;10686:10;:25::i;:::-;10492:227;;:::o;13259:83::-;13300:5;13325:9;;;;;;;;;;;13318:16;;13259:83;:::o;10965:209::-;11063:12;:10;:12::i;:::-;11052:23;;:7;:23;;;11044:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11140:26;11152:4;11158:7;11140:11;:26::i;:::-;10965:209;;:::o;14433:218::-;14521:4;14538:83;14547:12;:10;:12::i;:::-;14561:7;14570:50;14609:10;14570:11;:25;14582:12;:10;:12::i;:::-;14570:25;;;;;;;;;;;;;;;:34;14596:7;14570:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;14538:8;:83::i;:::-;14639:4;14632:11;;14433:218;;;;:::o;17145:180::-;17221:34;16941:24;17242:12;:10;:12::i;:::-;17221:7;:34::i;:::-;17213:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17300:17;17306:2;17310:6;17300:5;:17::i;:::-;17145:180;;:::o;13458:119::-;13524:7;13551:9;:18;13561:7;13551:18;;;;;;;;;;;;;;;;13544:25;;13458:119;;;:::o;10224:138::-;10297:7;10324:30;10348:5;10324:6;:12;10331:4;10324:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;10317:37;;10224:138;;;;:::o;9942:139::-;10011:4;10035:38;10065:7;10035:6;:12;10042:4;10035:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;10028:45;;9942:139;;;;:::o;13164:87::-;13203:13;13236:7;13229:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13164:87;:::o;17337:180::-;17413:34;16941:24;17434:12;:10;:12::i;:::-;17413:7;:34::i;:::-;17405:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17492:17;17498:2;17502:6;17492:5;:17::i;:::-;17337:180;;:::o;9576:49::-;9621:4;9576:49;;;:::o;14659:269::-;14752:4;14769:129;14778:12;:10;:12::i;:::-;14792:7;14801:96;14840:15;14801:96;;;;;;;;;;;;;;;;;:11;:25;14813:12;:10;:12::i;:::-;14801:25;;;;;;;;;;;;;;;:34;14827:7;14801:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;14769:8;:129::i;:::-;14916:4;14909:11;;14659:269;;;;:::o;13585:175::-;13671:4;13688:42;13698:12;:10;:12::i;:::-;13712:9;13723:6;13688:9;:42::i;:::-;13748:4;13741:11;;13585:175;;;;:::o;10089:127::-;10152:7;10179:29;:6;:12;10186:4;10179:12;;;;;;;;;;;:20;;:27;:29::i;:::-;10172:36;;10089:127;;;:::o;16903:62::-;16941:24;16903:62;:::o;10727:230::-;10812:45;10820:6;:12;10827:4;10820:12;;;;;;;;;;;:22;;;10844:12;:10;:12::i;:::-;10812:7;:45::i;:::-;10804:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10923:26;10935:4;10941:7;10923:11;:26::i;:::-;10727:230;;:::o;13768:151::-;13857:7;13884:11;:18;13896:5;13884:18;;;;;;;;;;;;;;;:27;13903:7;13884:27;;;;;;;;;;;;;;;;13877:34;;13768:151;;;;:::o;2396:143::-;2466:4;2490:41;2495:3;:10;;2523:5;2515:14;;2507:23;;2490:4;:41::i;:::-;2483:48;;2396:143;;;;:::o;8927:106::-;8980:15;9015:10;9008:17;;8927:106;:::o;16295:346::-;16414:1;16397:19;;:5;:19;;;;16389:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16495:1;16476:21;;:7;:21;;;;16468:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16579:6;16549:11;:18;16561:5;16549:18;;;;;;;;;;;;;;;:27;16568:7;16549:27;;;;;;;;;;;;;;;:36;;;;16617:7;16601:32;;16610:5;16601:32;;;16626:6;16601:32;;;;;;;;;;;;;;;;;;16295:346;;;:::o;14936:539::-;15060:1;15042:20;;:6;:20;;;;15034:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15144:1;15123:23;;:9;:23;;;;15115:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15199:47;15220:6;15228:9;15239:6;15199:20;:47::i;:::-;15279:71;15301:6;15279:71;;;;;;;;;;;;;;;;;:9;:17;15289:6;15279:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;15259:9;:17;15269:6;15259:17;;;;;;;;;;;;;;;:91;;;;15384:32;15409:6;15384:9;:20;15394:9;15384:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15361:9;:20;15371:9;15361:20;;;;;;;;;;;;;;;:55;;;;15449:9;15432:35;;15441:6;15432:35;;;15460:6;15432:35;;;;;;;;;;;;;;;;;;14936:539;;;:::o;7699:192::-;7785:7;7818:1;7813;:6;;7821:12;7805:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7845:9;7861:1;7857;:5;7845:17;;7882:1;7875:8;;;7699:192;;;;;:::o;11509:188::-;11583:33;11608:7;11583:6;:12;11590:4;11583:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;11579:111;;;11665:12;:10;:12::i;:::-;11638:40;;11656:7;11638:40;;11650:4;11638:40;;;;;;;;;;11579:111;11509:188;;:::o;11705:192::-;11780:36;11808:7;11780:6;:12;11787:4;11780:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;11776:114;;;11865:12;:10;:12::i;:::-;11838:40;;11856:7;11838:40;;11850:4;11838:40;;;;;;;;;;11776:114;11705:192;;:::o;7366:181::-;7424:7;7444:9;7460:1;7456;:5;7444:17;;7485:1;7480;:6;;7472:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7538:1;7531:8;;;7366:181;;;;:::o;15483:378::-;15586:1;15567:21;;:7;:21;;;;15559:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15637:49;15666:1;15670:7;15679:6;15637:20;:49::i;:::-;15714:24;15731:6;15714:12;;:16;;:24;;;;:::i;:::-;15699:12;:39;;;;15770:30;15793:6;15770:9;:18;15780:7;15770:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;15749:9;:18;15759:7;15749:18;;;;;;;;;;;;;;;:51;;;;15837:7;15816:37;;15833:1;15816:37;;;15846:6;15816:37;;;;;;;;;;;;;;;;;;15483:378;;:::o;2999:149::-;3073:7;3116:22;3120:3;:10;;3132:5;3116:3;:22::i;:::-;3108:31;;3093:47;;2999:149;;;;:::o;2708:158::-;2788:4;2812:46;2822:3;:10;;2850:5;2842:14;;2834:23;;2812:9;:46::i;:::-;2805:53;;2708:158;;;;:::o;15869:418::-;15972:1;15953:21;;:7;:21;;;;15945:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16025:49;16046:7;16063:1;16067:6;16025:20;:49::i;:::-;16108:68;16131:6;16108:68;;;;;;;;;;;;;;;;;:9;:18;16118:7;16108:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;16087:9;:18;16097:7;16087:18;;;;;;;;;;;;;;;:89;;;;16202:24;16219:6;16202:12;;:16;;:24;;;;:::i;:::-;16187:12;:39;;;;16268:1;16242:37;;16251:7;16242:37;;;16272:6;16242:37;;;;;;;;;;;;;;;;;;15869:418;;:::o;2874:117::-;2937:7;2964:19;2972:3;:10;;2964:7;:19::i;:::-;2957:26;;2874:117;;;:::o;217:291::-;280:4;302:21;312:3;317:5;302:9;:21::i;:::-;297:204;;340:3;:11;;357:5;340:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:3;:11;;:18;;;;378:3;:12;;:19;391:5;378:19;;;;;;;;;;;:40;;;;440:4;433:11;;;;297:204;484:5;477:12;;217:291;;;;;:::o;16747:92::-;;;;:::o;2547:149::-;2620:4;2644:44;2652:3;:10;;2680:5;2672:14;;2664:23;;2644:7;:44::i;:::-;2637:51;;2547:149;;;;:::o;1390:204::-;1457:7;1506:5;1485:3;:11;;:18;;;;:26;1477:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:3;:11;;1580:5;1568:18;;;;;;;;;;;;;;;;1561:25;;1390:204;;;;:::o;1132:129::-;1205:4;1252:1;1229:3;:12;;:19;1242:5;1229:19;;;;;;;;;;;;:24;;1222:31;;1132:129;;;;:::o;7555:136::-;7613:7;7640:43;7644:1;7647;7640:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7633:50;;7555:136;;;;:::o;1273:109::-;1329:7;1356:3;:11;;:18;;;;1349:25;;1273:109;;;:::o;516:608::-;582:4;599:18;620:3;:12;;:19;633:5;620:19;;;;;;;;;;;;599:40;;670:1;656:10;:15;652:465;;688:21;725:1;712:10;:14;688:38;;741:17;782:1;761:3;:11;;:18;;;;:22;741:42;;800:17;820:3;:11;;832:9;820:22;;;;;;;;;;;;;;;;800:42;;888:9;859:3;:11;;871:13;859:26;;;;;;;;;;;;;;;:38;;;;954:1;938:13;:17;912:3;:12;;:23;925:9;912:23;;;;;;;;;;;:43;;;;972:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;1013:3;:12;;:19;1026:5;1013:19;;;;;;;;;;;1006:26;;;1056:4;1049:11;;;;;;;;652:465;1100:5;1093:12;;;516:608;;;;;:::o

Swarm Source

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