contract YUAN is YUANToken {
    /**
     * @notice Initialize the new money market
     * @param name_ ERC-20 name of this token
     * @param symbol_ ERC-20 symbol of this token
     * @param decimals_ ERC-20 decimal precision of this token
     */
    function initialize(
        string memory name_,
        string memory symbol_,
        uint8 decimals_,
        address initial_owner,
        uint256 initTotalSupply_
    ) public {
        super.initialize(name_, symbol_, decimals_);

        yuansScalingFactor = BASE;
        initSupply = _fragmentToYuan(initTotalSupply_);
        totalSupply = initTotalSupply_;
        _yuanBalances[initial_owner] = initSupply;

        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                DOMAIN_TYPEHASH,
                keccak256(bytes(name)),
                getChainId(),
                address(this)
            )
        );
    }
}
function initialize(
    string memory name_,
    string memory symbol_,
    uint8 decimals_,
    address initial_owner,
    uint256 initTotalSupply_
) public {
    super.initialize(name_, symbol_, decimals_);

    yuansScalingFactor = BASE;
    initSupply = _fragmentToYuan(initTotalSupply_);
    totalSupply = initTotalSupply_;
    _yuanBalances[initial_owner] = initSupply;

    DOMAIN_SEPARATOR = keccak256(
        abi.encode(
            DOMAIN_TYPEHASH,
            keccak256(bytes(name)),
            getChainId(),
            address(this)
        )
    );
}

/**
 * @notice Initialize the new money market
 * @param name_ ERC-20 name of this token
 * @param symbol_ ERC-20 symbol of this token
 * @param decimals_ ERC-20 decimal precision of this token
 */