/*
 * Top level resource file for MS ACM
 *
 * Copyright 2000 Eric Pouech
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "wineacm.h"

#include "msacm_Cs.rc"
#include "msacm_Da.rc"
#include "msacm_De.rc"
#include "msacm_En.rc"
#include "msacm_Es.rc"
#include "msacm_Fr.rc"
#include "msacm_Hu.rc"
#include "msacm_It.rc"
#include "msacm_Ja.rc"
#include "msacm_Ko.rc"
#include "msacm_Nl.rc"
#include "msacm_No.rc"
#include "msacm_Pl.rc"
#include "msacm_Pt.rc"
#include "msacm_Ro.rc"
#include "msacm_Ru.rc"
#include "msacm_Si.rc"
#include "msacm_Sv.rc"
#include "msacm_Tr.rc"
#include "msacm_Zh.rc"
