contract AerToken is Timelocked, MintableToken, BurnableToken {

  string public name;
  string public symbol;
  uint256 public decimals;
  
  constructor(address coldledger) public {
    name = "Aeryus Token";
    symbol = "AER";
    decimals = 18;
    totalSupply_ = 4166666663000000000000000000;
    balances[msg.sender] = totalSupply_;
    setColdLedger(coldledger);
    
    emit Transfer(address(0), msg.sender, totalSupply_);
  }
  
  /**
  * @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 notTimeLocked returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

    /**
   * @dev Transfer tokens from one address to another
   * @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 notTimeLocked
    returns (bool)
  {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

    // ------------------------------------------------------------------------

    // Do not accept ETH

    // ------------------------------------------------------------------------

    function () public payable {
        revert();
    }


    // ------------------------------------------------------------------------

    // Owner can transfer out any accidentally sent ERC20 tokens

    // ------------------------------------------------------------------------

    function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {

        return BasicToken(tokenAddress).transfer(owner, tokens);

    }
}
// ----------------------------------------------------------------------------
// The AER Token is fungible token asset of Aeryus protocol.
// As ERC-721 tokens are created to document transactions, AER tokens are burned at a rate based on
// the average transaction per second.
// Visit http://aeryus.ilhaus.com/ for full details. Thank you
//
//
// AER Token Contract
//
// Symbol      : AER
// Name        : Aeryus Token
// Total supply: 4,166,666,663.000000000000000000
// Decimals    : 18
// Website     : http://aeryus.ilhaus.com
// Company     : AERYUS
//
// ----------------------------------------------------------------------------
function transferFrom(
  address _from,
  address _to,
  uint256 _value
)
  public notTimeLocked
  returns (bool)
{
  require(_to != address(0));
  require(_value <= balances[_from]);
  require(_value <= allowed[_from][msg.sender]);

  balances[_from] = balances[_from].sub(_value);
  balances[_to] = balances[_to].add(_value);
  allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
  emit Transfer(_from, _to, _value);
  return true;
}

/**
 * @dev Transfer tokens from one address to another
 * @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
 */