Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x9052654c64E50f3684F2a2D5F7094CA5933cdB9a
Balance 0.000000000 ETH
Nonce 1
Code Size 10915 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

10915 bytes
0x60806040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610864578063095ea7b3146108f457806318160ddd146109595780631e89d5451461098457806323b872dd14610a2d578063313ce56714610ab2578063355274ea14610ae95780633950935114610b145780633c4badb014610b79578063518ab2a814610bd057806370a0823114610bfb57806389311e6f14610c525780638da5cb5b14610c69578063903a3ef614610cc057806395d89b4114610cd7578063a457c2d714610d67578063a6a6860614610dcc578063a9059cbb14610e0d578063bf58390314610e72578063c5ac0ded14610e9d578063c7876ea414610ec8578063cbcb317114610ef3578063dd62ed3e14610f1e578063f2fde38b14610f95575b6000806000806000806001600281111561015457fe5b600760149054906101000a900460ff16600281111561016f57fe5b14151561020a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f54686520636f696e206f66666572696e6720686173206e6f742073746172746581526020017f642079657400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000341180156102225750670de0b6b3a76400003411155b15156102bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f596f752063616e6e6f742073656e642030204574686572206f72206d6f72652081526020017f7468616e2031204574686572000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000600654111515610336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d75737420626520736f6d6520746f6b656e732072656d61696e696e6700000081525060200191505060405180910390fd5b339550349450610372670de0b6b3a76400006103646809c2007651b250000088610fd890919063ffffffff16565b61101090919063ffffffff16565b9350600092506103ca85600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102690919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061045f85600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102690919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a7640000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515156104f857600080fd5b6802b5e3af16b1880000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115151561054f57600080fd5b6901e7e4171bf4d3a0000061056f8560055461102690919063ffffffff16565b11156105ea576105946005546901e7e4171bf4d3a0000061104290919063ffffffff16565b91506105cc670de0b6b3a76400006105be6809c2007651b25000008561101090919063ffffffff16565b610fd890919063ffffffff16565b90506105e1818661104290919063ffffffff16565b92508094508193505b6105ff8460055461102690919063ffffffff16565b6005819055506106246005546901e7e4171bf4d3a0000061104290919063ffffffff16565b60068190555060008311156106e0573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610679573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610731846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36107ed8460025461102690919063ffffffff16565b600281905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f1935050505015801561085b573d6000803e3d6000fd5b50505050505050005b34801561087057600080fd5b5061087961105b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108b957808201518184015260208101905061089e565b50505050905090810190601f1680156108e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561090057600080fd5b5061093f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611094565b604051808215151515815260200191505060405180910390f35b34801561096557600080fd5b5061096e61122a565b6040518082815260200191505060405180910390f35b34801561099057600080fd5b50610a2b6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611234565b005b348015610a3957600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128e565b604051808215151515815260200191505060405180910390f35b348015610abe57600080fd5b50610ac7611876565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b348015610af557600080fd5b50610afe61187b565b6040518082815260200191505060405180910390f35b348015610b2057600080fd5b50610b5f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611889565b604051808215151515815260200191505060405180910390f35b348015610b8557600080fd5b50610bba600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b29565b6040518082815260200191505060405180910390f35b348015610bdc57600080fd5b50610be5611b72565b6040518082815260200191505060405180910390f35b348015610c0757600080fd5b50610c3c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b78565b6040518082815260200191505060405180910390f35b348015610c5e57600080fd5b50610c67611bc0565b005b348015610c7557600080fd5b50610c7e611d48565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ccc57600080fd5b50610cd5611d6e565b005b348015610ce357600080fd5b50610cec611eda565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d2c578082015181840152602081019050610d11565b50505050905090810190601f168015610d595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d7357600080fd5b50610db2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f13565b604051808215151515815260200191505060405180910390f35b348015610dd857600080fd5b50610df7600480360381019080803590602001909291905050506121a4565b6040518082815260200191505060405180910390f35b348015610e1957600080fd5b50610e58600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121f5565b604051808215151515815260200191505060405180910390f35b348015610e7e57600080fd5b50610e876125b3565b6040518082815260200191505060405180910390f35b348015610ea957600080fd5b50610eb26125b9565b6040518082815260200191505060405180910390f35b348015610ed457600080fd5b50610edd6125bf565b6040518082815260200191505060405180910390f35b348015610eff57600080fd5b50610f086125cc565b6040518082815260200191505060405180910390f35b348015610f2a57600080fd5b50610f7f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125da565b6040518082815260200191505060405180910390f35b348015610fa157600080fd5b50610fd6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612661565b005b600080831415610feb576000905061100a565b8183029050818382811515610ffc57fe5b0414151561100657fe5b8090505b92915050565b6000818381151561101d57fe5b04905092915050565b6000818301905082811015151561103957fe5b80905092915050565b600082821115151561105057fe5b818303905092915050565b6040805190810160405280600981526020017f4c455453464b4e474f000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561113a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f7420617070726f766520746f2061207a65726f206164647265737381525060200191505060405180910390fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b60008090505b82518110156112895761127b838281518110151561125457fe5b90602001906020020151838381518110151561126c57fe5b906020019060200201516121f5565b50808060010191505061123a565b505050565b60008060008060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411151515611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d75737420686176652073756666696369656e742062616c616e63650000000081525060200191505060405180910390fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411151515611463576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f5370656e646572206861732073756666696369656e74207370656e64696e672081526020017f62616c616e63650000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561152e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53656e646572206d7573742062652061206e6f6e2d7a65726f2061646472657381526020017f730000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61157f846000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461104290919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115ca846121a4565b91506115df828561104290919063ffffffff16565b9050611632816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102690919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116898260025461104290919063ffffffff16565b60028190555061171e84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461104290919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001925050509392505050565b601281565b6901e7e4171bf4d3a0000081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561192f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4d7573742062652061206e6f6e207a65726f206164647265737300000000000081525060200191505060405180910390fd5b6119be82600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102690919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60055481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d75737420626520616e206f776e65720000000000000000000000000000000081525060200191505060405180910390fd5b600280811115611c9157fe5b600760149054906101000a900460ff166002811115611cac57fe5b14151515611d22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b6001600760146101000a81548160ff02191690836002811115611d4157fe5b0217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d75737420626520616e206f776e65720000000000000000000000000000000081525060200191505060405180910390fd5b600280811115611e3f57fe5b600760149054906101000a900460ff166002811115611e5a57fe5b14151515611ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b611ed86128b1565b565b6040805190810160405280600381526020017f4c4647000000000000000000000000000000000000000000000000000000000081525081565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612024576000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120b8565b612037838261104290919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060006121be60045485612a3c90919063ffffffff16565b91506121e96127106121db60045485610fd890919063ffffffff16565b61101090919063ffffffff16565b90508092505050919050565b60008060008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111515156122b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420656e6f75676820746f6b656e7320746f207472616e7366657200000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561237b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5265636569766572206d7573742062652061206e6f6e2d7a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b612384846121a4565b9150612399828561104290919063ffffffff16565b90506123ec846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461104290919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061247f816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102690919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124d68260025461104290919063ffffffff16565b6002819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019250505092915050565b60065481565b60045481565b6809c2007651b250000081565b69032d26d12e980b60000081565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612726576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d75737420626520616e206f776e65720000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4e6577206f776e6572206d7573742062652061206e6f6e2d7a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600760146101000a81548160ff021916908360028111156128d057fe5b0217905550600060065411156129ba57612955600654600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102690919063ffffffff16565b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015612a39573d6000803e3d6000fd5b50565b6000806000612a4b8585611026565b9150612a58826001611042565b9050612a6d612a678286611010565b85610fd8565b92505050929150505600a165627a7a723058209df688ac8bd44a926265e13cf838c9e377b6ed201b5badfda917bacadbdc8aaa0029

Verified Source Code Partial Match

Compiler: v0.4.23+commit.124ca40d EVM: byzantium Optimization: No
LETSFKNGO.sol 267 lines
pragma solidity ^0.4.23;

library SafeMath {
  
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }
    
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
  
        return a / b;
    }

    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }

    function ceil(uint256 a, uint256 m) internal pure returns (uint256) {
        uint256 c = add(a,m);
        uint256 d = sub(c,1);
        return mul(div(d,m),m);
  }

}

contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

   constructor() public {
      owner = msg.sender;
    }
    
    modifier onlyOwner() {
      require(msg.sender == owner, "Must be an owner");
      _;
    }
    
    function transferOwnership(address newOwner) public onlyOwner {
      require(newOwner != address(0), "New owner must be a non-zero address");
      emit OwnershipTransferred(owner, newOwner);
      owner = newOwner;
    }
}

contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract BasicToken is ERC20Basic {
    using SafeMath for uint256;
    mapping(address => uint256) balances;
    mapping(address => uint256) ethBalances;
    
    uint256 totalSupply_;
    
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }

    function checkInvestedETH(address who) public view returns (uint256) {
        return ethBalances[who];
    }

}

contract StandardToken is ERC20, BasicToken {
    mapping (address => mapping (address => uint256)) internal allowed;
    uint256 public basePercent = 100;

    function findOnePercent(uint256 value) public view returns (uint256)  {
     uint256 roundValue = value.ceil(basePercent);
     uint256 onePercent = roundValue.mul(basePercent).div(10000);
     return onePercent;
    }

    function transfer(address to, uint256 value) public returns (bool) {
        require(value <= balances[msg.sender], "Not enough tokens to transfer");
        require(to != address(0), "Receiver must be a non-zero address");

        uint256 tokensToBurn = findOnePercent(value);
        uint256 tokensToTransfer = value.sub(tokensToBurn);

        balances[msg.sender] = balances[msg.sender].sub(value);
        balances[to] = balances[to].add(tokensToTransfer);

        totalSupply_ = totalSupply_.sub(tokensToBurn);

        emit Transfer(msg.sender, to, tokensToTransfer);
        emit Transfer(msg.sender, address(0), tokensToBurn);
        return true;
    }

    function multiTransfer(address[] memory receivers, uint256[] memory amounts) public {
        for (uint256 i = 0; i < receivers.length; i++) {
        transfer(receivers[i], amounts[i]);
        }
    }

    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        require(value <= balances[from], "Must have sufficient balance");
        require(value <= allowed[from][msg.sender], "Spender has sufficient spending balance");
        require(to != address(0), "Sender must be a non-zero address");

        balances[from] = balances[from].sub(value);

        uint256 tokensToBurn = findOnePercent(value);
        uint256 tokensToTransfer = value.sub(tokensToBurn);

        balances[to] = balances[to].add(tokensToTransfer);
        totalSupply_ = totalSupply_.sub(tokensToBurn);

        allowed[from][msg.sender] = allowed[from][msg.sender].sub(value);

        emit Transfer(from, to, tokensToTransfer);
        emit Transfer(from, address(0), tokensToBurn);

        return true;
    } 

    function approve(address spender, uint256 value) public returns (bool) {
        require(spender != address(0), "Cannot approve to a zero address");
        allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }
    
    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }
    
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        require(spender != address(0), "Must be a non zero address");
        allowed[msg.sender][spender] = (allowed[msg.sender][spender].add(addedValue));
        emit Approval(msg.sender, spender, allowed[msg.sender][spender]);
        return true;
    }

    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        uint oldValue = allowed[msg.sender][spender];
        if (subtractedValue > oldValue) {
            allowed[msg.sender][spender] = 0;
        } else {
            allowed[msg.sender][spender] = oldValue.sub(subtractedValue);
        }
        emit Approval(msg.sender, spender, allowed[msg.sender][spender]);
        return true;
    }

}

contract Configurable {
    uint256 public constant cap = 9000*10**18; 
    uint256 public constant basePrice = 180*10**18; 
    uint256 public tokensSold = 0;
    
    uint256 public constant tokenReserve = 15000*10**18;
    uint256 public remainingTokens = 0;
}

contract CrowdsaleToken is StandardToken, Configurable, Ownable {
  
     enum Stages {
        none,
        icoStart, 
        icoEnd
    }
    
    Stages currentStage;

    constructor() public {
        currentStage = Stages.none;
        balances[owner] = balances[owner].add(tokenReserve);
        totalSupply_ = totalSupply_.add(tokenReserve);
        remainingTokens = cap;
        emit Transfer(address(this), owner, tokenReserve);
    }

    function () public payable {
        require(currentStage == Stages.icoStart, "The coin offering has not started yet");
        require(msg.value > 0 && msg.value <= 1e18, "You cannot send 0 Ether or more than 1 Ether");
        require(remainingTokens > 0, "Must be some tokens remaining");
       
        address caller = msg.sender;
        uint256 weiAmount = msg.value;
        uint256 tokens = weiAmount.mul(basePrice).div(1 ether);
        uint256 returnWei = 0;
        
        ethBalances[caller] = ethBalances[caller].add(weiAmount);
        ethBalances[address(this)] = ethBalances[address(this)].add(weiAmount);
       
        require(ethBalances[caller] <= 1e18);
        require(ethBalances[address(this)] <= 50e18);

        if(tokensSold.add(tokens) > cap){
            uint256 newTokens = cap.sub(tokensSold);
            uint256 newWei = newTokens.div(basePrice).mul(1 ether);
            returnWei = weiAmount.sub(newWei);
            weiAmount = newWei;
            tokens = newTokens;
        }
        
        tokensSold = tokensSold.add(tokens); 
        remainingTokens = cap.sub(tokensSold);
        if(returnWei > 0){
            msg.sender.transfer(returnWei);
            emit Transfer(address(this), msg.sender, returnWei);
        }
        
        balances[msg.sender] = balances[msg.sender].add(tokens);
        emit Transfer(address(this), msg.sender, tokens);
        totalSupply_ = totalSupply_.add(tokens);
        owner.transfer(weiAmount);
    }

    function startIco() public onlyOwner {
        require(currentStage != Stages.icoEnd, "The coin offering has ended");
        currentStage = Stages.icoStart;
    }

    function endIco() internal {
        currentStage = Stages.icoEnd;
        if(remainingTokens > 0)
            balances[owner] = balances[owner].add(remainingTokens);
        owner.transfer(address(this).balance); 
    }

    function finalizeIco() public onlyOwner {
        require(currentStage != Stages.icoEnd, "The coin offering has ended");
        endIco();
    }
    
}

contract LETSFKNGO is CrowdsaleToken {
    string public constant name = "LETSFKNGO";
    string public constant symbol = "LFG";
    uint32 public constant decimals = 18;
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
basePercent 0xc5ac0ded → uint256
basePrice 0xc7876ea4 → uint256
cap 0x355274ea → uint256
checkInvestedETH 0x3c4badb0 → uint256
decimals 0x313ce567 → uint32
findOnePercent 0xa6a68606 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
remainingTokens 0xbf583903 → uint256
symbol 0x95d89b41 → string
tokenReserve 0xcbcb3171 → uint256
tokensSold 0x518ab2a8 → uint256
totalSupply 0x18160ddd → uint256

Write Contract 9 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 value
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
finalizeIco 0x903a3ef6
No parameters
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
multiTransfer 0x1e89d545
address[] receivers
uint256[] amounts
startIco 0x89311e6f
No parameters
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address