contract HeavenKimchiToken is ERC20, Ownable {
    mapping (address => bool) public kimchiMan;
    uint256 public kimchiStampStart = 1;
    uint256 public kimchiStampOff = 1;
    uint256 public initSupply = 1000000;
    
    IERC20 public originalKimchi = IERC20(0x1E18821E69B9FAA8e6e75DFFe54E7E25754beDa0);
    IERC20 public godKimchi = IERC20(0x4b7DfAe2567181E54776337C840e142ACb42AA1F);
    
    constructor() public ERC20("HEAVEN KIMCHI", "hKIMCHI") {
        _mintInit( msg.sender, initSupply*10**18 ); // hKIMCHI is limited KIMCHI, initial supply = total supply
        kimchiMan[ msg.sender ] = true; // yeah, obviously I am a king of kimchi man.
    }

    // you can prove you are a kimchi chad only when it's available
    function setKimchiManPeriod(uint256 _start, uint256 _end) public onlyOwner {
        require( block.number < _end, 'what do you want my chef?' );
        require( _start <= _end, 'what do you really want chef?' );
        kimchiStampStart = _start;
        kimchiStampOff = _end;
    }

    function isKimchiPeriod() public view returns(bool) {
        if (block.number <= kimchiStampOff && block.number >= kimchiStampStart) {
            return true;
        } else {
            return false;
        }
    }

    // everyone who calls this function is a KimchiMan, surely who has (or had) kimchi once.
    // No matter you have no KIMCHI in future. This is kind of a kimchi proof stamp.
    function IamKimchiMan() public {
        require( isKimchiPeriod(), "! you are not allow to be a kimchiman" );
        require( originalKimchi.balanceOf(msg.sender) >= 0, 'you do not have KIMCHI' );
        require( godKimchi.balanceOf(msg.sender) >= 0, 'you do not have gKIMCHI' );
        kimchiMan[msg.sender] = true;
    }
    
}
// hKIMCHI
// what will hKIMCHI chef cook?
function IamKimchiMan() public {
    require( isKimchiPeriod(), "! you are not allow to be a kimchiman" );
    require( originalKimchi.balanceOf(msg.sender) >= 0, 'you do not have KIMCHI' );
    require( godKimchi.balanceOf(msg.sender) >= 0, 'you do not have gKIMCHI' );
    kimchiMan[msg.sender] = true;
}

// everyone who calls this function is a KimchiMan, surely who has (or had) kimchi once.
// No matter you have no KIMCHI in future. This is kind of a kimchi proof stamp.