// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Token {
    string public name = "Wrapped ETHO";
    string public symbol = "ETHO";
    uint8 public decimals = 18;
    uint256 public totalSupply = 0;

    address public owner;
    modifier restricted {
        require(msg.sender == owner, "This function is restricted to owner");
        _;
    }
    modifier issuerOnly {
        require(isIssuer[msg.sender], "You do not have issuer rights");
        _;
    }

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;
    mapping(address => bool) public isIssuer;

	event InitialCoindrop();
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event IssuerRights(address indexed issuer, bool value);
    event TransferOwnership(
        address indexed previousOwner,
        address indexed newOwner
    );

    function getOwner() public view returns (address) {
        return owner;
    }

    function mint(address _to, uint256 _amount)
        public
        issuerOnly
        returns (bool success)
    {
        totalSupply += _amount;
        balanceOf[_to] += _amount;
        emit Transfer(address(0), _to, _amount);
        return true;
    }

    function burn(uint256 _amount) public returns (bool success) {
        totalSupply -= _amount;
        balanceOf[msg.sender] -= _amount;
        emit Transfer(msg.sender, address(0), _amount);
        return true;
    }

    function burnFrom(address _from, uint256 _amount)
        public
        issuerOnly
        returns (bool success)
    {
        balanceOf[_from] -= _amount;
        totalSupply -= _amount;
        emit Transfer(_from, address(0), _amount);
        return true;
    }

    function approve(address _spender, uint256 _amount)
        public
        returns (bool success)
    {
        allowance[msg.sender][_spender] = _amount;
        emit Approval(msg.sender, _spender, _amount);
        return true;
    }

    function transfer(address _to, uint256 _amount)
        public
        returns (bool success)
    {
        balanceOf[msg.sender] -= _amount;
        balanceOf[_to] += _amount;
        emit Transfer(msg.sender, _to, _amount);
        return true;
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _amount
    ) public returns (bool success) {
        allowance[_from][msg.sender] -= _amount;
        balanceOf[_from] -= _amount;
        balanceOf[_to] += _amount;
        emit Transfer(_from, _to, _amount);
        return true;
    }

    function transferOwnership(address _newOwner) public restricted {
        require(_newOwner != address(0), "Invalid address: should not be 0x0");
        emit TransferOwnership(owner, _newOwner);
        owner = _newOwner;
    }

    function setIssuerRights(address _issuer, bool _value) public restricted {
        isIssuer[_issuer] = _value;
        emit IssuerRights(_issuer, _value);
    }
	
	function initialCoindrop() private {
	
		mint(0x0050faCd2C04930257438b213FE9E132a26E5a29,1448724083800000000000);
		mint(0x0125CD983d1769a7F0536c174ab3cbA6A9c57C00,1153455876900000000000);
		mint(0x0617bDe4672E8c54bFaFA6EaC7Aa18f5d2Df016B,2207278685100000000000);
		mint(0x0781644F9beB74fB75ca402450628be2074D055D,4044260760200000000000);
		mint(0x07abd3dCbB623793Bb7f9321A54Ef54F8D58dBFD,853898089200000000000);
		mint(0x0aEB69BE39691785aef48a8C8D1c099D1Ea2530E,1528464412500000000000);
		mint(0x0b9De5CF9d32b484312b9F61Ec4282788ebA3747,2408527991500000000000);
		mint(0x0C87552b2288eeCe692d1eFc8F116FAce5c7549F,800452065500000000000);
		mint(0x0Cf28aAe2687cF2E23fF2690dD8A1cA89AB67C99,11167352552600000000000);
		mint(0x0dF070E8c9829b665C2a8F00af78ac5eA58B03EF,2634545084700000000000);
		mint(0x0eB908C3C691EB821991d344DC719DE07dc39755,2621979932400000000000);
		mint(0x10291AF24A866437Eb0b375Ff84c02EEcDeBa014,300000000000000000000);
		mint(0x108545Ff27E22B3E4Ada80dF3618B7E8Eabac78E,1349266134500000000000);
		mint(0x116487deD7C8B4D67Ca98eB2BA0552152Cac3000,478203380300000000000);
		mint(0x11eDedebF63bef0ea2d2D071bdF88F71543ec6fB,366934610700000000000);
		mint(0x12c95179E77E04aA63AfeC405066BB7d6f19Aee1,8052206184700000000000);
		mint(0x130cD97FC3B3b7414F0B20123C6FA29a63DE2BB6,1000000000000000000000);
		mint(0x13B2A5c43059306ca3b5240eB5303976Ed1dc02c,3009532900000000000000);
		mint(0x15e57E4088Ffad94810BE0a3DeB18cFDC4D35e1b,21300000000000000000000);
		mint(0x168a9612E4837a95615479540b5c58a218C76d56,25839757149200000000000);
		mint(0x178C05Cf60526ea3E35Bc4ac05D3141027ee15ce,1091662500000000000000);
		mint(0x18d2571533F132F05d13f5f2C788A502747A3730,54711500000000000000000);
		mint(0x1b38a920a40f95478B64F8EE3a4500a7526fEE2A,2161518001000000000000);
		mint(0x1B66952b59399119b6B4e71909535452584e30d0,2553100491400000000000);
		mint(0x1b98d0177EA98C9e3515A1f316672b9c0cfa1684,406803313400000000000);
		mint(0x1c04e591bf9cAF762C7dc83384E92E8481dd44b3,1076000000000000000000);
		mint(0x1E43CA894993E71fD5D718598745A620D5eE04b9,1362356346200000000000);
		mint(0x1EB437701000882Aa79F8aB0CCB7888A17698595,309557223100000000000);
		mint(0x201C65096fD70C53568Dc515190ba29f0E0a0621,5953977044400000000000);
		mint(0x2543e9Dd96091Fb9f608D7471a4214569e17D8fB,32937235415100000000000);
		mint(0x263959358cCfe0329739fCDD273b9e5E84aecE97,2000400000000000000000000);
		mint(0x26835Ef626C41605E26e7C65dD34720E170222c4,415161166500000000000);
		mint(0x26b4aE8da1D2afE14458C8Bc726CCCd8b6EB6d52,2177923936700000000000);
		mint(0x294C9a5e1351CB43B8BD6A5E9b7bC82870Da088b,10946627857700000000000);
		mint(0x2a649883879F8c377081c65fD997819A40B5bd82,2132004035500000000000);
		mint(0x2fF701B8E3AE910464868F4f56882f5888a1de95,458999181900000000000);
		mint(0x310059809167B0A949af704fEa6b1264Ee154af4,771793100000000000000);
		mint(0x31A453Ea7CDD3901D4B3357790218d6d97558a9C,3700000000000000000000);
		mint(0x347f4D0DE6F4BAf24d59a8B5B70759e97a25153b,532876000000000000000);
		mint(0x34cC54f3C65E6e6CfD1f05E2AD0540624A5EfF24,333977695000000000000);
		mint(0x367d7af10CB65a4174b674a03615827E92D15912,25469379011000000000000);
		mint(0x3730c34Fe0942a70c7926FfEEe5AfFa3A7A0A048,735176559700000000000);
		mint(0x376179D2a336B20489aC5A551122FF52adfE58e7,1614454044900000000000);
		mint(0x37f560405122BfcdfDD1229Da10b22E0442c83EB,400000000000000000000);
		mint(0x38d0843c398ECd430A5B0843c886173ff6dAcDd4,1417012100000000000000);
		mint(0x3C8cbD613857965267bcd4bdEC7b794Dd53969A0,9800000000000000000000);
		mint(0x3CC245935BF3D3c12c8699A853e89406736CBa43,6660990140100000000000);
		mint(0x3cE945a615F667650F472441D0a6912e44851D49,399958943430800000000000);
		mint(0x3dD8D5F361F6c389DF35398e32B0810C8bb0dA88,803221400000000000000);
		mint(0x41C4c3321E325642917aBE84Ae2F8E4e9F2c55D7,4191830261400000000000);
		mint(0x42eFD97E47b989f1248BBe79E752147Af587d7e8,450000000000000000000);
		mint(0x4334ac2f30e3268fAb907708e55E8DB460A5A0fc,2194074961000000000000);
		mint(0x448FB05ab35af1CE2fe53ED6B011930704B5028a,760406657500000000000);
		mint(0x4870fF456050aB41be14Dd8663a617d1C7C52aF6,2028268182700000000000);
		mint(0x490FB8aAAeedd6F525F8bd5545f1aaF9b28Ea3bD,995766309700000000000);
		mint(0x49D5Dcd94af8E2521d3AF55823860878968638CF,190141898800000000000000);
		mint(0x4cA3aeCf694b92c31445e7F0c77938A0CcdEf786,806621292200000000000);
		mint(0x4D00AF255c2886dA69287c6FADf059AC874E1933,894686147000000000000);
		mint(0x4d1a70D6bE8Cf70478b056bF218205892dD3b888,721013108900000000000);
		mint(0x4ecC19a6fe615931eb844D059cEA62055EE5A08b,1770000000000000000000);
		mint(0x518d9aa324aC987858A65fadDB2e830483d742Df,452190449400000000000);
		mint(0x51b933999825375984F2ff0260C8ebeFc5A4bF84,49386910735000000000000);
		mint(0x52Fb80E8c250A953e26dD43b39521A97b5638743,1348602000000000000000);
		mint(0x54aEb6D0206916F810Ce26Ddf7D9206BEaf32241,810468733600000000000);
		mint(0x59B8a3829124028b92F3F5400Eb1bEA5dc9a2c78,605901837400000000000);
		mint(0x5A4BEc040B1EE6ce4369675a97f88A065cBFeD35,1144110406200000000000);
		mint(0x5c64d12096aa700a97cf50256bEE9b9a8c7321dD,1695176534800000000000);
		mint(0x5CBDd49C31AF104cAb243C8077C605fA4b240931,693432601700000000000);
		mint(0x5FBa0319272DFBa2E020a7a6109d80eB1199AC31,1418770100000000000000);
		mint(0x5fEedFc3C3C1d18e99a23a75abef01fb205cF8F4,1129796452200000000000);
		mint(0x60246c05EBe19741a0000ff24B1D77E636137496,30751810067800000000000);
		mint(0x60dEFa7384a380b8B241377273E22D06b8D0a8d7,4408044725500000000000);
		mint(0x6120f44a3135aa34D6A0974192e23dfc632f4154,646000000000000000000);
		mint(0x6129F4727C382814803680a6eb648F65BE8ffFb5,400000000000000000000);
		mint(0x61409CbEd3297A02a400BaB01330D2CEf110b1eA,400000000000000000000);
		mint(0x6280340C8ffc09190110793153137019aF48826e,841642171800000000000);
		mint(0x64Ac31F0396773dAb764E9d5864a278656053fbC,787311886600000000000);
		mint(0x6503952342d4C2110b6ca4c972e4131dC4C9902B,2999214271200000000000);
		mint(0x6668685991423444373955509583400957353773,136946081325900000000000);
		mint(0x6784bE0D2e729757E53002C0586c664e8183803d,9800000000000000000000);
		mint(0x6AE043D5096691A1241b62e6D867E3c4218D02F2,19743136382200000000000);
		mint(0x6B2cb0B5D765Ce33D843eC78142AD02A6cD8C0ea,132146999987600000000000);
		mint(0x6B87d7b444A5bBA3166d833F3E1D6Ace2EA664C1,14690835541600000000000);
		mint(0x6bFD255FD888a18A2eE2c98d08F9A3901d6CE719,33816170197600000000000);
		mint(0x6cAA8a6Db07A2f4698A2a2F50eF6eB3e0FBC7fA4,1405939469200000000000);
		mint(0x6cdEA838CE6eE6E9F02fe256A2411eb3B2514a91,500003261700000000000);
		mint(0x6Fc305D503dD762F022d6D6355d9d952519F3060,15044250572100000000000);
		mint(0x6fFc42e36E83e7E4048355279B3CAbb784CC7707,1349031355600000000000);
		mint(0x738cF6903E6c4e699D1C2dd9AB8b67fcDb3121eA,460722742401100000000000);
		mint(0x7450fad65C6eF7Ae0b57342382bbe14CcfF43EB4,3873520326900000000000);
		mint(0x74EdEbf787e9338aB3A0fEdafD0599D123992C26,229830000000000000000000);
		mint(0x77bcdb34C1C3ef81165d036E4bB88047B2F2d268,3488376900000000000000);
		mint(0x788505C75d4f6cD6c360910c87cdA31262efD03a,800000000000000000000);
		mint(0x79B084014e02574015b95aA6cdb0B63967509570,4401567483400000000000);
		mint(0x79d1459aA7167d0CdE56736fBBF8C9e32386c98F,3961287569800000000000);
		mint(0x7eCD18BA937FD750F8a25Ff8b70241E38849a233,19442175642100000000000);
		mint(0x7FBd6EADc4890CbaF6Cf010C6f1194C59cC46732,1400000000000000000000);
		mint(0x80E2002fA5bDbbf039a51F7c4772C6636C44De98,575923329300000000000);
		mint(0x818195e76dC8Bf993f1D41f3cd8395799b49b926,32841322100000000000000);
		mint(0x83fbdFB42df1eA8cD02a9B28a8F62Cb219D48561,9847514523700000000000);
		mint(0x887c5dA8Ab44217DEBB6612DA4FD340E79E4D1b5,304610386200000000000);
		mint(0x8bddc2c187F6B35AD24870a45025E35F560A76f1,3372497400000000000000);
		mint(0x8c22d7fdEd8252d86629eCA6c78b5f798471c5D1,1300000000000000000000);
		mint(0x8C726134A09D811C3609E3ad1654A518d75c6086,555744953400000000000);
		mint(0x8Df47d43476e58584AD534C915e104cfc18681Ec,48361572900000000000000);
		mint(0x90E079050bd431567112A2c7750110284Cb9713C,900000000000000000000);
		mint(0x92e8e91Ac7EbCB6F4B4c6e3e53f86e8CE6aCa735,1400000000000000000000);
		mint(0x92Ed346f1ADa1E802D6240C4F25F99FFCD0D66F1,3951676493800000000000);
		mint(0x9645f051677a3b6A4dc9d2a0eF68A6E88D08f6e2,27366592969000000000000);
		mint(0x97De81063E00f594Da857FB20C6c334FaAb6b110,25988605850600000000000);
		mint(0x97E12BD75bdee72d4975D6df410D2d145b3d8457,67577957903200000000000);
		mint(0x97FBCC420387Dc4A353E2EF62B30F694abbE2894,4800000000000000000000);
		mint(0x983656Ba415f52e721f2947f088BE6FfFB4736B5,19800000000000000000000);
		mint(0x9877d68FC8547e07f17D8178d760645189667505,7800000000000000000000);
		mint(0x99690f00028190b4962522eE556aD1424Ed8436f,38101145900000000000000);
		mint(0x9e7F08be3225EeC0270AEE5e9d1ca45697cDfA4E,2077314086800000000000);
		mint(0xA050b6d2DdA9860b98649A7a5EC45ae801E97E65,1274193548400000000000);
		mint(0xa250B82c7Ce100f12958757e43bD288A82c1182C,11369735400000000000000);
		mint(0xA2dE47954B57950Ae90F8f529DA557B876cEF3B3,5076997700000000000000);
		mint(0xa5Adc1df3C4c5Acbf686a8aE39bB4581be7BFDCB,742538779700000000000);
		mint(0xA978680D4B29243efDb08EEd936b6e20261C4717,744927968600000000000);
		mint(0xa9967880C75A5e0c21a52f1D426D89d900Ea851A,4649197214000000000000);
		mint(0xAa2CDdec43501994ef55d85F418F82D0Fb42eD27,9295418659500000000000);
		mint(0xaa7DDb95A8a80474589CE188325CF8EFbDeDA3Eb,1800000000000000000000);
		mint(0xabF6460B5C3bF6b06f7b5BF4D745884B05D412Dd,2645932438800000000000);
		mint(0xAD020deA04DC905fD05B9b026816E794Be61a382,25024027958400000000000);
		mint(0xAd6E5c43CeFe5cEa60Cb5f58782c5F8f1607A5cA,838508289900000000000);
		mint(0xAd70E7f6f9502AD64148a5C7e6a4E5C63DfcCba8,42958130736600000000000);
		mint(0xAd8f30a7bB3f7286b981Fa1E47537D31D92edA6F,1842010751600000000000);
		mint(0xB02aEF24EFEcD1547942958Af6A900CCc95d9998,10576968267600000000000);
		mint(0xB14aD6Ef81ae4c4Da73D9f82Fb9c0d4D0A645006,27678509510700000000000);
		mint(0xB299C5FF91BaaB1c6E07ff8E4c45eEc7A30d84cD,1841419522600000000000);
		mint(0xb3A9596Da2EcBeddB41203479e5346B29956d0B8,3584577676500000000000);
		mint(0xB479c5f39cd70320Af4C60Ba9E6A6b0621d532d0,6046800990900000000000);
		mint(0xb4aB21716847F6181C4F72c1ad5c05Aa6B8702e1,34663240066400000000000);
		mint(0xb4b124951742C517EcEdcb38Db657A9a27fb5589,2864115100000000000000);
		mint(0xb6585234cD31F2d0bAb995a6bb9f2610F9B10A45,161894307607200000000000);
		mint(0xb7F0502Efeb9c18A65e67BDfbfb879752E77e7a2,805429752200000000000);
		mint(0xbb681E2EFDa1FE3Cbf8222579507f296e9493f0C,9596734164400000000000);
		mint(0xbf5358F79e4Db0A873Eb3994a387313d69364087,16939019852500000000000);
		mint(0xC2D1B9Eb3Fc00Ec4Cf14654929A41B77b3E8cF7C,5258945910700000000000);
		mint(0xC495AAeFa10Cc3e0332dD6D330FEF0432AB87dc2,129800000000000000000000);
		mint(0xC4E910e717aa8aB17095E8Bb7C3F3566219954A9,3261804736200000000000);
		mint(0xC4FCe1f122117A1f4433c9Ea4d2b1CB075c19A0b,400000000000000000000);
		mint(0xc640caba272414689b21EbCd60d97b912359504D,19488038744600000000000);
		mint(0xc9f2c5955C2a2968Cf25e72aF0c6A0917dd7a56e,517386056100000000000);
		mint(0xCca3C3630d4a2E365aC7b27bF504251C6691481b,900160199200000000000);
		mint(0xCd53D0BC916cAD592c51C3DF050a313B0e148Ce6,800000000000000000000);
		mint(0xcd92071fE7122c9808B8714b38C7F005bFE797f3,1337797360800000000000);
		mint(0xce864729ab8b45b8464993E5F7D873e6F6fC9A56,4285177838800000000000);
		mint(0xD268057A9A9E82dC8dd31523AFe3812403f8117c,1102050693400000000000);
		mint(0xd4329b4224e55c1f24b3DC63291c7a727579f7e5,1800000000000000000000);
		mint(0xd5F1c1Ef62B7a6d324Dce7e4226ccED83DdcF05e,852120600000000000000);
		mint(0xd5FD729FCff77266247DBC77Ef5F69E8619c9e76,1676801767800000000000);
		mint(0xD6216fC19DB775Df9774a6E33526131dA7D19a2c,19659035000000000000000000);
		mint(0xDAC94FC70121215bE543BCEc22540dE0B9f61554,27477994000600000000000);
		mint(0xdc787BCdcb9F79aa87A5f55af2F1AE77799e4E22,11907224100000000000000);
		mint(0xdCb5b3570c77964C076b464C91f3DDBa26133B19,3025064266700000000000);
		mint(0xdf50D3f25BaF0F1833d815112a49a2F67fD570aa,12605338000000000000000);
		mint(0xdffEC40f5fcA63C63B23DCA6650D145a2639cB51,366985824200000000000);
		mint(0xe04A028C686cB11fb0f7DD121C90cb6E1b67Dfc8,4810000039900000000000);
		mint(0xE2bd7339a5C54268a66E795c6A1e056EFf7B1Ba9,55985900963300000000000);
		mint(0xe316288268F8A71F108280AfE5009a794CAF8c71,1607000000000000000000);
		mint(0xe470155DecB5827cB66BCB1C92a58CAaF82A4A1c,801977781000000000000);
		mint(0xe4bd35C6629118B93A0503B99ED0a764eB4CD07a,7920648100000000000000);
		mint(0xe4f2AFd24ABF0969397D8D27DE05b48366513800,414468744949700000000000);
		mint(0xE5b1AC8E4F04EB2247ECe0FEFcaF41e7E0Bbdd5b,800000000000000000000);
		mint(0xe71c0f7Ed199EFe869dfbD6657D86Bd2924C13c3,300000000000000000000);
		mint(0xE84E3d522299C66A63331b94Da75eF9EB368C534,8333780100000000000000);
		mint(0xe8508D6968905542B7DfC7D0445c20D2936A3e8c,418838019000000000000);
		mint(0xeae6072E7dBA26cE7679d5110Af0C9d16Ff274D6,365705105200000000000);
		mint(0xEC2C3D7F4541d2c473d9Ad0A53fA6F115CD8dB47,40262431961200000000000);
		mint(0xEc6AC3e82b5503F5bD13512f6361C6123de4e1c9,7166723200000000000000);
		mint(0xEE1827B581cC64F6d5Db2658084583d51fA9D18C,9800000000000000000000);
		mint(0xef50406A63078Eb427f95d0E265E1549B4524304,3201020800000000000000);
		mint(0xf16E9B0D03470827A95CDfd0Cb8a8A3b46969B91,3791799804638900000000000);
		mint(0xF24359636053928aA4fEb34cE528342F139fbc41,375056929900000000000);
		mint(0xF30A3301E2B45dF6E09b6081574e0015e243B1C2,24358818993200000000000);
		mint(0xF464CefAa65b29dA48742bc06C57f9ce0B52Eb7E,327459416500000000000);
		mint(0xF5FAdD52B6A1a627005968D66e9289Fb04844c8f,89179275300000000000000);
		mint(0xf75f3C97995a050322584C21ab02d581441A3E66,800000000000000000000);
		mint(0xFE76db0928ffdc791bb4C9e7EE88843fa9c22f2E,29800000000000000000000);
		mint(0xFF24475CC320D5392781Ff126c34191d1dB00275,38432191962700000000000);

		emit InitialCoindrop();
	}

    constructor() {
        owner = msg.sender;
        emit TransferOwnership(address(0), msg.sender);
		isIssuer[msg.sender] = true;
        emit IssuerRights(msg.sender, true);
		initialCoindrop();
    }
}