Contract 0xf813970f9d18a8e8260d902f1719d47b707327a9 1

Contract Overview

Balance:
0 BNB
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc4c235a29b744799156f9ca33ec903a64eed693c1920a5fdaef4a62ce6408962Approve134750922021-10-23 11:53:162 days 1 hr ago0xadb15d659bec5afa35cd8cc829814c56bd37aa1d IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0xf1b8121b98085aba840d5641d152a54ddbacda45e679a90ae2d6cba3ed04b74dApprove134679312021-10-23 5:55:062 days 7 hrs ago0x0fdabc27f91b93bff87289780524a4088720e66c IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000293
0x26d6615a40d39bfcec93ff901229de95591f47c9fccd5e13bb3a7d07af71a497Approve134678552021-10-23 5:51:162 days 7 hrs ago0x055a163c78e4f5246c9b78cea484eaeaa6afcba6 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x892121d0333e47ea045f08bdd480b35bba668c0dc6a196f7b997effd45a4c53bApprove134620752021-10-23 1:02:162 days 12 hrs ago0x2094b78238859a16ef827f3de91ba39c8202c4d2 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x46681829087a489b094d22cb840234bf86933e9c3586474afb6930f52ed9607dApprove134506422021-10-22 15:30:232 days 21 hrs ago0x5882e5bec3b34f46ec516b7e4f7ed5c604e8f42b IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0xe137cbf368974d46c2990a274a2f0481786283b4d75cdebc52fb6f65377d5fa9Approve133366482021-10-18 15:49:096 days 21 hrs ago0xad71f0e22c0bfd47a264f83efa6a00cbef128c8a IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0xa53ea7128470dd930326ab5b0e6e7ba0dab4b5e639bf08750ccaa18bbd74982dApprove133098372021-10-17 17:22:117 days 19 hrs ago0xb0912cd89db651b05cc587cf66400d71a40e5e01 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0xccfc61a71765b27090d501192c1701ac227c88886898d951cb234ab68ef0dca9Approve133046682021-10-17 13:03:448 days 2 mins ago0x45c4405fc2de12cbb51b39617dc43d7448fea800 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x54910da9df070e67307585a89186eb44fa550ba12e4a67d4efaabb827df6f56bApprove132818612021-10-16 18:03:238 days 19 hrs ago0x562f94e9d7036234362ea630a40796050b292684 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x00baa7fedae39fca7c155922cced8eed4bd721989c6e62d7e673ce918e3978e5Approve132250712021-10-14 18:43:4110 days 18 hrs ago0x9763771312dfed5bd8f14c224626be2af6c4102a IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x58a880ccb7d8ecb24cff4985bac3132857e97ec549c5fe76c6080715fa5f13f3Approve131997652021-10-13 21:19:1311 days 15 hrs ago0x7c93f25bf0334565d3166c0586797c34aec0c7d0 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x28880499cecbabd7ae45932fc3fcc96da09172a76daf1ef18933ffe7cbf36e2bApprove131956742021-10-13 17:54:4011 days 19 hrs ago0x562f94e9d7036234362ea630a40796050b292684 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x692ef944b150326f75dfb2ce6f16a3cd1ae8440b94ead35bc9da69e0c86b2328Approve131661892021-10-12 17:09:4712 days 19 hrs ago0x2aaf013e1fae58b213e82f122c91dfe2ec67ec4a IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x20d0869cdce8e8a50722d49fb97c95c83251dc5ffffb4ce893345c4925456f51Approve131658622021-10-12 16:53:2612 days 20 hrs ago0xc2093cfc2351b990553308f4af8679be3adeeb20 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0xde1ba9a7b4701c5e881fc0545ed11c7a8988540d0d67b5d4d1425db669acfb0cApprove131533782021-10-12 6:27:2513 days 6 hrs ago0x1070298571b9156c9497827e116a75d1e383cb6c IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0xade23a96a3c30708517a94a97d51a5b43b8a2becd1cf48e1c7ed465dadee69e1Approve131532412021-10-12 6:20:3413 days 6 hrs ago0x1070298571b9156c9497827e116a75d1e383cb6c IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x05b7f5184dd5080961d21efe1798857be8a15f12601333b8d78ce88589b2965cApprove131402232021-10-11 19:17:0713 days 17 hrs ago0xf3046616c0954285861dae1a30ff79655c3c6fe7 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x08627a04725f0a48d26dfecf1f4b30ad7a89b5d50aa7ffe6768a7327afdc9d00Approve131348992021-10-11 14:47:3613 days 22 hrs ago0x9c678caa951a9247fab677525d49adf7c6510e76 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x6cb5b72af8124f48fa67aa913ef6a9bb1e0d090467825ac235af2aa54dfbb1c5Approve131062472021-10-10 14:54:0314 days 22 hrs ago0x1655e0b5c0bd4a1c6b6aec104d2a7549143f65b1 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x80ad017229b488a109bb7a46bfb38a75971759a930d6e1afc83ecbf1146645beApprove130729222021-10-09 11:07:4816 days 1 hr ago0x5386c155c78d2562581bcbce99653d21efca5f55 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x710b418bbbbb16fe69938c13f2ccae0187df7b3bd98a4388934d17259bee6514Approve130464752021-10-08 13:04:3617 days 1 min ago0x1bb7be7f94e344f18dd014c33328500d35c58b53 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x4a8d3ef40f65335724dd0b69d939ea3a9fbc70d67c57ae5a61898012cb8aca6dApprove130219822021-10-07 16:37:3217 days 20 hrs ago0x3a4985fcfa8ed8c84521cf86a5c04faa9810055f IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x20695e8365e70b8c4a57da657ced807b64148d4e48aa5eb6dad45df33ade75daApprove130095292021-10-07 6:14:4218 days 6 hrs ago0xc2626924ddbcdfefcedf632f61da9b829a758d00 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000251
0x58e1f4f9399d3be64e3d10d13945747149b2b9004700f0fe3e081905e47e5318Approve130095242021-10-07 6:14:2718 days 6 hrs ago0xc2626924ddbcdfefcedf632f61da9b829a758d00 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
0x55b5aa83fa35bd97ed0ae59819549d0647088602335928843737fa553c33346aApprove130094932021-10-07 6:12:5418 days 6 hrs ago0xc2626924ddbcdfefcedf632f61da9b829a758d00 IN  0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB0.000443
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xdc9b39e67652c3e7bec8e9b8dcd2e472f67c5f1db268d35392b6269d6f23f789135288332021-10-25 8:41:174 hrs 24 mins ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x6f5e31347f80da0db8e80425530d338f4c22ac320352882567a6b9dd7981ed69135288222021-10-25 8:40:444 hrs 25 mins ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x7d4903ba2fc010be10d93654571a74981a3352c52726d6a8cd9a226fd951b30e134856902021-10-23 20:43:131 day 16 hrs ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x8721344a71c815c9b42e4b5117d399fb881258b2473e566b1c8cb53fcd5fb693134751302021-10-23 11:55:102 days 1 hr ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xadbb46433a414c73415d1dc47e86d729f60ab154e4d7e93c363168891b007bd4134734972021-10-23 10:33:312 days 2 hrs ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x5b4b9e519754c594e326e46afbcc0d0a29b378f4ee8185a412ec103d8d5345f3134621132021-10-23 1:04:102 days 12 hrs ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x5b4b9e519754c594e326e46afbcc0d0a29b378f4ee8185a412ec103d8d5345f3134621132021-10-23 1:04:102 days 12 hrs ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x5b4b9e519754c594e326e46afbcc0d0a29b378f4ee8185a412ec103d8d5345f3134621132021-10-23 1:04:102 days 12 hrs ago 0x2d4ee064ebb491b1e6db6ea1962db59d1d0e0741 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xbaf7b3867d2739e11976f4944ae0699be1399c4486c6ba311dc8703a6fe644ff134620352021-10-23 1:00:162 days 12 hrs ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x24461619cd53c2ffad01e4926593b42f1314f61afa1b05854c0a44d55aebb613134466352021-10-22 12:09:583 days 55 mins ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x24461619cd53c2ffad01e4926593b42f1314f61afa1b05854c0a44d55aebb613134466352021-10-22 12:09:583 days 55 mins ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x24461619cd53c2ffad01e4926593b42f1314f61afa1b05854c0a44d55aebb613134466352021-10-22 12:09:583 days 55 mins ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xa24ae6f32416ec2363e43de6c1ccc564a3340090f53addfca2d1dda696562fbe134426722021-10-22 8:51:493 days 4 hrs ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x2f596e48290a7857427d0479adb368120e5362cca2401d414ae89001ca574792134400422021-10-22 6:40:193 days 6 hrs ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x356e50f36bd89986b8028faf985bc2a2c9d10248a55a6409f47663268f4c1a25134184112021-10-21 12:34:224 days 31 mins ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x86bd375e85e82a046e32240a3845fdd638971fa6c6c4fe27534f8937c18f46be133857972021-10-20 8:48:225 days 4 hrs ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xecb5d2946f088363f8f1966ece9e5a49e9ed2bc4752b23319d15da8176db769b133802442021-10-20 4:10:435 days 8 hrs ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xecb5d2946f088363f8f1966ece9e5a49e9ed2bc4752b23319d15da8176db769b133802442021-10-20 4:10:435 days 8 hrs ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xecb5d2946f088363f8f1966ece9e5a49e9ed2bc4752b23319d15da8176db769b133802442021-10-20 4:10:435 days 8 hrs ago 0x2d4ee064ebb491b1e6db6ea1962db59d1d0e0741 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x342b5bbf238f3f5b7fe17668efad34374c8742ae578f934d68449b0e149f90cd133802282021-10-20 4:09:555 days 8 hrs ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xc79a232e930b7d3731911844786c5dbd6d653a8d391b81408ebd2fc8f6a26062133774602021-10-20 1:51:315 days 11 hrs ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xc79a232e930b7d3731911844786c5dbd6d653a8d391b81408ebd2fc8f6a26062133774602021-10-20 1:51:315 days 11 hrs ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xc79a232e930b7d3731911844786c5dbd6d653a8d391b81408ebd2fc8f6a26062133774602021-10-20 1:51:315 days 11 hrs ago 0x2d4ee064ebb491b1e6db6ea1962db59d1d0e0741 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0xaa511e494217cc3507c6e5b1cf197c63da38c9c74a284481fbf60f5cbac4b61d133774482021-10-20 1:50:555 days 11 hrs ago 0xe175bf6c18c2f90c8a12f4e26e785a092e509cb5 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
0x1d024ffe4006c247d01f1ae23393a973f15d5a076778df91430ca3a79265612d133774172021-10-20 1:49:225 days 11 hrs ago 0xf9250f89cfe95f8e564f097862d5c4f45af3fda4 0xf813970f9d18a8e8260d902f1719d47b707327a90 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x3084f20bd972Cec3d4Ba5561B91F9761844Dcd04

Contract Name:
TokenTemplate

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 7: TokenTemplate.sol
pragma solidity ^0.7.4;
// "SPDX-License-Identifier: Apache License 2.0"

import "./ERC20Detailed.sol";
import "./ERC20Burnable.sol";
import "./Ownable.sol";

contract TokenTemplate is ERC20Burnable, ERC20Detailed, Ownable {

    /**
     * @dev Constructor that gives the specified address all of existing tokens.
     */
    constructor(
        string memory name, 
        string memory symbol, 
        uint8 decimals, 
        address beneficiary, 
        uint256 supply) 
        ERC20Detailed(name, symbol, decimals) {
        _mint(beneficiary, supply);
        
    }
    
    fallback() external {
        revert();
    }

    function mintTokens(address beneficiary, uint256 amount) public onlyOwner {
        _mint(beneficiary, amount);
    }

}

File 2 of 7: ERC20.sol
pragma solidity ^0.7.4;
// "SPDX-License-Identifier: Apache License 2.0"

import "./IERC20.sol";
import "./SafeMath.sol";

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
 * Originally based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 *
 * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for
 * all accounts just by listening to said events. Note that this isn't required by the specification, and other
 * compliant implementations may not do it.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    /**
    * @dev Total number of tokens in existence
    */
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param owner The address to query the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address owner) public view override returns (uint256) {
        return _balances[owner];
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param owner address The address which owns the funds.
     * @param spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowed[owner][spender];
    }

    /**
    * @dev Transfer token for a specified address
    * @param to The address to transfer to.
    * @param value The amount to be transferred.
    */
    function transfer(address to, uint256 value) public override returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * 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
     * @param spender The address which will spend the funds.
     * @param value The amount of tokens to be spent.
     */
    function approve(address spender, uint256 value) public override returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another.
     * Note that while this function emits an Approval event, this is not required as per the specification,
     * and other compliant implementations may not emit the event.
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address from, address to, uint256 value) public override returns (bool) {
        _transfer(from, to, value);
        _approve(from, msg.sender, _allowed[from][msg.sender].sub(value));
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
    * @dev Transfer token for a specified addresses
    * @param from The address to transfer from.
    * @param to The address to transfer to.
    * @param value The amount to be transferred.
    */
    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0));

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    /**
     * @dev Internal function that mints an amount of the token and assigns it to
     * an account. This encapsulates the modification of balances such that the
     * proper events are emitted.
     * @param account The account that will receive the created tokens.
     * @param value The amount that will be created.
     */
    function _mint(address account, uint256 value) internal {
        require(account != address(0));

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

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account.
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0));

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

    /**
     * @dev Approve an address to spend another addresses' tokens.
     * @param owner The address that owns the tokens.
     * @param spender The address that will spend the tokens.
     * @param value The number of tokens that can be spent.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(spender != address(0));
        require(owner != address(0));

        _allowed[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account, deducting from the sender's allowance for said account. Uses the
     * internal burn function.
     * Emits an Approval event (reflecting the reduced allowance).
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burnFrom(address account, uint256 value) internal {
        _burn(account, value);
        _approve(account, msg.sender, _allowed[account][msg.sender].sub(value));
    }
}

File 3 of 7: ERC20Burnable.sol
pragma solidity ^0.7.4;
// "SPDX-License-Identifier: Apache License 2.0"

import "./ERC20.sol";

/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract ERC20Burnable is ERC20 {
    /**
     * @dev Burns a specific amount of tokens.
     * @param value The amount of token to be burned.
     */
    function burn(uint256 value) public {
        _burn(msg.sender, value);
    }

    /**
     * @dev Burns a specific amount of tokens from the target address and decrements allowance
     * @param from address The address which you want to send tokens from
     * @param value uint256 The amount of token to be burned
     */
    function burnFrom(address from, uint256 value) public {
        _burnFrom(from, value);
    }
}

File 4 of 7: ERC20Detailed.sol
pragma solidity ^0.7.4;
// "SPDX-License-Identifier: Apache License 2.0"

import "./IERC20.sol";

/**
 * @title ERC20Detailed token
 * @dev The decimals are only for visualization purposes.
 * All the operations are done using the smallest and indivisible token unit,
 * just as on Ethereum all the operations are done in wei.
 */
abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

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

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

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

File 5 of 7: IERC20.sol
pragma solidity ^0.7.4;
// "SPDX-License-Identifier: MIT"

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    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);
}

File 6 of 7: Ownable.sol
pragma solidity ^0.7.4;
// "SPDX-License-Identifier: Apache License 2.0"

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
abstract contract Ownable {
    address private _owner;

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

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor () {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     * @notice Renouncing to ownership will leave the contract without an owner.
     * It will not be possible to call the functions with the `onlyOwner`
     * modifier anymore.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 7 of 7: SafeMath.sol
pragma solidity >=0.5.16;
// "SPDX-License-Identifier: Apache License 2.0"


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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"supply","type":"uint256"}],"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"},{"stateMutability":"nonpayable","type":"fallback"},{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burnFrom","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":"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":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTokens","outputs":[],"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":[],"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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"}]

60806040523480156200001157600080fd5b5060405162001ba738038062001ba7833981810160405260a08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919080519060200190929190805190602001909291905050508484848260039080519060200190620001f1929190620004ee565b5081600490805190602001906200020a929190620004ee565b5080600560006101000a81548160ff021916908360ff16021790555050505033600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620002f982826200030460201b60201c565b5050505050620005a4565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200033f57600080fd5b6200035b816002546200046560201b62000cbd1790919060201c565b600281905550620003b9816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200046560201b62000cbd1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015620004e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000526576000855562000572565b82601f106200054157805160ff191683800117855562000572565b8280016001018555821562000572579182015b828111156200057157825182559160200191906001019062000554565b5b50905062000581919062000585565b5090565b5b80821115620005a057600081600090555060010162000586565b5090565b6115f380620005b46000396000f3fe608060405234801561001057600080fd5b506004361061011a5760003560e01c806379cc6790116100a2578063a457c2d711610071578063a457c2d7146104e3578063a9059cbb14610547578063dd62ed3e146105ab578063f0dda65c14610623578063f2fde38b146106715761011b565b806379cc6790146103be5780638da5cb5b1461040c5780638f32d59b1461044057806395d89b41146104605761011b565b8063313ce567116100e9578063313ce567146102a957806339509351146102ca57806342966c681461032e57806370a082311461035c578063715018a6146103b45761011b565b806306fdde0314610120578063095ea7b3146101a357806318160ddd1461020757806323b872dd146102255761011b565b5b600080fd5b6101286106b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016857808201518184015260208101905061014d565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ef600480360360408110156101b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610757565b60405180821515815260200191505060405180910390f35b61020f61076e565b6040518082815260200191505060405180910390f35b6102916004803603606081101561023b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610778565b60405180821515815260200191505060405180910390f35b6102b1610829565b604051808260ff16815260200191505060405180910390f35b610316600480360360408110156102e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610840565b60405180821515815260200191505060405180910390f35b61035a6004803603602081101561034457600080fd5b81019080803590602001909291905050506108e5565b005b61039e6004803603602081101561037257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108f2565b6040518082815260200191505060405180910390f35b6103bc61093a565b005b61040a600480360360408110156103d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a0c565b005b610414610a1a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610448610a44565b60405180821515815260200191505060405180910390f35b610468610a9c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a857808201518184015260208101905061048d565b50505050905090810190601f1680156104d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61052f600480360360408110156104f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3e565b60405180821515815260200191505060405180910390f35b6105936004803603604081101561055d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610be3565b60405180821515815260200191505060405180910390f35b61060d600480360360408110156105c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bfa565b6040518082815260200191505060405180910390f35b61066f6004803603604081101561063957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c81565b005b6106b36004803603602081101561068757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ca0565b005b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561074d5780601f106107225761010080835404028352916020019161074d565b820191906000526020600020905b81548152906001019060200180831161073057829003601f168201915b5050505050905090565b6000610764338484610d45565b6001905092915050565b6000600254905090565b6000610785848484610ea4565b61081e843361081985600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106e90919063ffffffff16565b610d45565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006108db33846108d685600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cbd90919063ffffffff16565b610d45565b6001905092915050565b6108ef33826110b8565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610942610a44565b61094b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a16828261120a565b5050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b5050505050905090565b6000610bd93384610bd485600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106e90919063ffffffff16565b610d45565b6001905092915050565b6000610bf0338484610ea4565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c89610a44565b610c9257600080fd5b610c9c82826112b1565b5050565b610ca8610a44565b610cb157600080fd5b610cba81611403565b50565b600080828401905083811015610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d7f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610db957600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ede57600080fd5b610f2f816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106e90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fc2816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cbd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60006110b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114fd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f257600080fd5b6111078160025461106e90919063ffffffff16565b60028190555061115e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61121482826110b8565b6112ad82336112a884600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106e90919063ffffffff16565b610d45565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112eb57600080fd5b61130081600254610cbd90919063ffffffff16565b600281905550611357816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cbd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561143d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008383111582906115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561156f578082015181840152602081019050611554565b50505050905090810190601f16801561159c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fea2646970667358221220074236409807925fded1180b1d1363a04f55d8436ae464a3a3c6f3d92138756164736f6c6343000706003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000023e6b56b3874e53d43a065b2a5ebcceba22386350000000000000000000000000000000000000000204fce5e3e2502611000000000000000000000000000000000000000000000000000000000000000000000087465737420504f4c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000474504f4c00000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

166:624:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;642:8;;;741:83:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2880:157:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1003:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3510:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1057:83:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4262:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;358:79:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1319:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1446:140:4;;;:::i;:::-;;696:95:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;733:79:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1068:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;891:87:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4985:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2084:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1773:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;666:119:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1763:109:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;741:83:2;778:13;811:5;804:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;741:83;:::o;2880:157:0:-;2954:4;2971:36;2980:10;2992:7;3001:5;2971:8;:36::i;:::-;3025:4;3018:11;;2880:157;;;;:::o;1003:100::-;1056:7;1083:12;;1076:19;;1003:100;:::o;3510:237::-;3598:4;3615:26;3625:4;3631:2;3635:5;3615:9;:26::i;:::-;3652:65;3661:4;3667:10;3679:37;3710:5;3679:8;:14;3688:4;3679:14;;;;;;;;;;;;;;;:26;3694:10;3679:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;3652:8;:65::i;:::-;3735:4;3728:11;;3510:237;;;;;:::o;1057:83:2:-;1098:5;1123:9;;;;;;;;;;;1116:16;;1057:83;:::o;4262:203:0:-;4342:4;4359:76;4368:10;4380:7;4389:45;4423:10;4389:8;:20;4398:10;4389:20;;;;;;;;;;;;;;;:29;4410:7;4389:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;4359:8;:76::i;:::-;4453:4;4446:11;;4262:203;;;;:::o;358:79:1:-;405:24;411:10;423:5;405;:24::i;:::-;358:79;:::o;1319:115:0:-;1383:7;1410:9;:16;1420:5;1410:16;;;;;;;;;;;;;;;;1403:23;;1319:115;;;:::o;1446:140:4:-;945:9;:7;:9::i;:::-;937:18;;;;;;1545:1:::1;1508:40;;1529:6;;;;;;;;;;;1508:40;;;;;;;;;;;;1576:1;1559:6;;:19;;;;;;;;;;;;;;;;;;1446:140::o:0;696:95:1:-;761:22;771:4;777:5;761:9;:22::i;:::-;696:95;;:::o;733:79:4:-;771:7;798:6;;;;;;;;;;;791:13;;733:79;:::o;1068:92::-;1108:4;1146:6;;;;;;;;;;;1132:20;;:10;:20;;;1125:27;;1068:92;:::o;891:87:2:-;930:13;963:7;956:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;891:87;:::o;4985:213:0:-;5070:4;5087:81;5096:10;5108:7;5117:50;5151:15;5117:8;:20;5126:10;5117:20;;;;;;;;;;;;;;;:29;5138:7;5117:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;5087:8;:81::i;:::-;5186:4;5179:11;;4985:213;;;;:::o;2084:149::-;2154:4;2171:32;2181:10;2193:2;2197:5;2171:9;:32::i;:::-;2221:4;2214:11;;2084:149;;;;:::o;1773:140::-;1854:7;1881:8;:15;1890:5;1881:15;;;;;;;;;;;;;;;:24;1897:7;1881:24;;;;;;;;;;;;;;;;1874:31;;1773:140;;;;:::o;666:119:6:-;945:9:4;:7;:9::i;:::-;937:18;;;;;;751:26:6::1;757:11;770:6;751:5;:26::i;:::-;666:119:::0;;:::o;1763:109:4:-;945:9;:7;:9::i;:::-;937:18;;;;;;1836:28:::1;1855:8;1836:18;:28::i;:::-;1763:109:::0;:::o;913:181:5:-;971:7;991:9;1007:1;1003;:5;991:17;;1032:1;1027;:6;;1019:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1085:1;1078:8;;;913:181;;;;:::o;7079:254:0:-;7191:1;7172:21;;:7;:21;;;;7164:30;;;;;;7230:1;7213:19;;:5;:19;;;;7205:28;;;;;;7273:5;7246:8;:15;7255:5;7246:15;;;;;;;;;;;;;;;:24;7262:7;7246:24;;;;;;;;;;;;;;;:32;;;;7310:7;7294:31;;7303:5;7294:31;;;7319:5;7294:31;;;;;;;;;;;;;;;;;;7079:254;;;:::o;5420:262::-;5522:1;5508:16;;:2;:16;;;;5500:25;;;;;;5556:26;5576:5;5556:9;:15;5566:4;5556:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5538:9;:15;5548:4;5538:15;;;;;;;;;;;;;;;:44;;;;5609:24;5627:5;5609:9;:13;5619:2;5609:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5593:9;:13;5603:2;5593:13;;;;;;;;;;;;;;;:40;;;;5664:2;5649:25;;5658:4;5649:25;;;5668:5;5649:25;;;;;;;;;;;;;;;;;;5420:262;;;:::o;1369:136:5:-;1427:7;1454:43;1458:1;1461;1454:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1447:50;;1369:136;;;;:::o;6537:269:0:-;6631:1;6612:21;;:7;:21;;;;6604:30;;;;;;6662:23;6679:5;6662:12;;:16;;:23;;;;:::i;:::-;6647:12;:38;;;;6717:29;6740:5;6717:9;:18;6727:7;6717:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;6696:9;:18;6706:7;6696:18;;;;;;;;;;;;;;;:50;;;;6788:1;6762:36;;6771:7;6762:36;;;6792:5;6762:36;;;;;;;;;;;;;;;;;;6537:269;;:::o;7732:182::-;7803:21;7809:7;7818:5;7803;:21::i;:::-;7835:71;7844:7;7853:10;7865:40;7899:5;7865:8;:17;7874:7;7865:17;;;;;;;;;;;;;;;:29;7883:10;7865:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;7835:8;:71::i;:::-;7732:182;;:::o;6034:269::-;6128:1;6109:21;;:7;:21;;;;6101:30;;;;;;6159:23;6176:5;6159:12;;:16;;:23;;;;:::i;:::-;6144:12;:38;;;;6214:29;6237:5;6214:9;:18;6224:7;6214:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;6193:9;:18;6203:7;6193:18;;;;;;;;;;;;;;;:50;;;;6280:7;6259:36;;6276:1;6259:36;;;6289:5;6259:36;;;;;;;;;;;;;;;;;;6034:269;;:::o;2022:187:4:-;2116:1;2096:22;;:8;:22;;;;2088:31;;;;;;2164:8;2135:38;;2156:6;;;;;;;;;;;2135:38;;;;;;;;;;;;2193:8;2184:6;;:17;;;;;;;;;;;;;;;;;;2022:187;:::o;1800:192:5:-;1886:7;1919:1;1914;:6;;1922:12;1906:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1946:9;1962:1;1958;:5;1946:17;;1983:1;1976:8;;;1800:192;;;;;:::o

Swarm Source

ipfs://074236409807925fded1180b1d1363a04f55d8436ae464a3a3c6f3d921387561
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading