# *   Copyright (C) 1998-2014, International Business Machines
# *   Corporation and others.  All Rights Reserved.
GENRB_CLDR_VERSION = 25
# A list of txt's to build
# Note:
#
#   If you are thinking of modifying this file, READ THIS.
#
# Instead of changing this file [unless you want to check it back in],
# you should consider creating a 'reslocal.mk' file in this same directory.
# Then, you can have your local changes remain even if you upgrade or
# reconfigure ICU.
#
# Example 'reslocal.mk' files:
#
#  * To add an additional locale to the list:
#    _____________________________________________________
#    |  GENRB_SOURCE_LOCAL =   myLocale.txt ...
#
#  * To REPLACE the default list and only build with a few
#    locales:
#    _____________________________________________________
#    |  GENRB_SOURCE = ar.txt ar_AE.txt en.txt de.txt zh.txt
#
#
# Generated by LDML2ICUConverter, from LDML source files.

# Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)
GENRB_SYNTHETIC_ALIAS = az_AZ.txt bs_BA.txt en_NH.txt en_RH.txt\
 ha_GH.txt ha_NE.txt ha_NG.txt in.txt in_ID.txt\
 iw.txt iw_IL.txt ja_JP_TRADITIONAL.txt kk_KZ.txt ks_IN.txt\
 ky_KG.txt mn_MN.txt mo.txt ms_BN.txt ms_MY.txt\
 ms_SG.txt no.txt no_NO.txt no_NO_NY.txt pa_IN.txt\
 pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\
 shi_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt sr_Cyrl_YU.txt\
 sr_Latn_CS.txt sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt\
 sr_YU.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt tzm_MA.txt\
 uz_AF.txt uz_UZ.txt vai_LR.txt zh_CN.txt zh_HK.txt\
 zh_MO.txt zh_SG.txt zh_TW.txt


# All aliases (to not be included under 'installed'), but not including root.
GENRB_ALIAS_SOURCE = $(GENRB_SYNTHETIC_ALIAS)


# Ordinary resources
GENRB_SOURCE = af.txt af_NA.txt af_ZA.txt agq.txt\
 agq_CM.txt ak.txt ak_GH.txt am.txt am_ET.txt\
 ar.txt ar_001.txt ar_AE.txt ar_BH.txt ar_DJ.txt\
 ar_DZ.txt ar_EG.txt ar_EH.txt ar_ER.txt ar_IL.txt\
 ar_IQ.txt ar_JO.txt ar_KM.txt ar_KW.txt ar_LB.txt\
 ar_LY.txt ar_MA.txt ar_MR.txt ar_OM.txt ar_PS.txt\
 ar_QA.txt ar_SA.txt ar_SD.txt ar_SO.txt ar_SS.txt\
 ar_SY.txt ar_TD.txt ar_TN.txt ar_YE.txt as.txt\
 as_IN.txt asa.txt asa_TZ.txt az.txt az_Cyrl.txt\
 az_Cyrl_AZ.txt az_Latn.txt az_Latn_AZ.txt bas.txt bas_CM.txt\
 be.txt be_BY.txt bem.txt bem_ZM.txt bez.txt\
 bez_TZ.txt bg.txt bg_BG.txt bm.txt bm_ML.txt\
 bn.txt bn_BD.txt bn_IN.txt bo.txt bo_CN.txt\
 bo_IN.txt br.txt br_FR.txt brx.txt brx_IN.txt\
 bs.txt bs_Cyrl.txt bs_Cyrl_BA.txt bs_Latn.txt bs_Latn_BA.txt\
 ca.txt ca_AD.txt ca_ES.txt ca_FR.txt ca_IT.txt\
 cgg.txt cgg_UG.txt chr.txt chr_US.txt cs.txt\
 cs_CZ.txt cy.txt cy_GB.txt da.txt da_DK.txt\
 da_GL.txt dav.txt dav_KE.txt de.txt de_AT.txt\
 de_BE.txt de_CH.txt de_DE.txt de_LI.txt de_LU.txt\
 dje.txt dje_NE.txt dua.txt dua_CM.txt dyo.txt\
 dyo_SN.txt dz.txt dz_BT.txt ebu.txt ebu_KE.txt\
 ee.txt ee_GH.txt ee_TG.txt el.txt el_CY.txt\
 el_GR.txt en.txt en_001.txt en_150.txt en_AG.txt\
 en_AI.txt en_AS.txt en_AU.txt en_BB.txt en_BE.txt\
 en_BM.txt en_BS.txt en_BW.txt en_BZ.txt en_CA.txt\
 en_CC.txt en_CK.txt en_CM.txt en_CX.txt en_DG.txt\
 en_DM.txt en_ER.txt en_FJ.txt en_FK.txt en_FM.txt\
 en_GB.txt en_GD.txt en_GG.txt en_GH.txt en_GI.txt\
 en_GM.txt en_GU.txt en_GY.txt en_HK.txt en_IE.txt\
 en_IM.txt en_IN.txt en_IO.txt en_JE.txt en_JM.txt\
 en_KE.txt en_KI.txt en_KN.txt en_KY.txt en_LC.txt\
 en_LR.txt en_LS.txt en_MG.txt en_MH.txt en_MO.txt\
 en_MP.txt en_MS.txt en_MT.txt en_MU.txt en_MW.txt\
 en_NA.txt en_NF.txt en_NG.txt en_NR.txt en_NU.txt\
 en_NZ.txt en_PG.txt en_PH.txt en_PK.txt en_PN.txt\
 en_PR.txt en_PW.txt en_RW.txt en_SB.txt en_SC.txt\
 en_SD.txt en_SG.txt en_SH.txt en_SL.txt en_SS.txt\
 en_SX.txt en_SZ.txt en_TC.txt en_TK.txt en_TO.txt\
 en_TT.txt en_TV.txt en_TZ.txt en_UG.txt en_UM.txt\
 en_US.txt en_US_POSIX.txt en_VC.txt en_VG.txt en_VI.txt\
 en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt en_ZW.txt\
 eo.txt es.txt es_419.txt es_AR.txt es_BO.txt\
 es_CL.txt es_CO.txt es_CR.txt es_CU.txt es_DO.txt\
 es_EA.txt es_EC.txt es_ES.txt es_GQ.txt es_GT.txt\
 es_HN.txt es_IC.txt es_MX.txt es_NI.txt es_PA.txt\
 es_PE.txt es_PH.txt es_PR.txt es_PY.txt es_SV.txt\
 es_US.txt es_UY.txt es_VE.txt et.txt et_EE.txt\
 eu.txt eu_ES.txt ewo.txt ewo_CM.txt fa.txt\
 fa_AF.txt fa_IR.txt ff.txt ff_SN.txt fi.txt\
 fi_FI.txt fil.txt fil_PH.txt fo.txt fo_FO.txt\
 fr.txt fr_BE.txt fr_BF.txt fr_BI.txt fr_BJ.txt\
 fr_BL.txt fr_CA.txt fr_CD.txt fr_CF.txt fr_CG.txt\
 fr_CH.txt fr_CI.txt fr_CM.txt fr_DJ.txt fr_DZ.txt\
 fr_FR.txt fr_GA.txt fr_GF.txt fr_GN.txt fr_GP.txt\
 fr_GQ.txt fr_HT.txt fr_KM.txt fr_LU.txt fr_MA.txt\
 fr_MC.txt fr_MF.txt fr_MG.txt fr_ML.txt fr_MQ.txt\
 fr_MR.txt fr_MU.txt fr_NC.txt fr_NE.txt fr_PF.txt\
 fr_PM.txt fr_RE.txt fr_RW.txt fr_SC.txt fr_SN.txt\
 fr_SY.txt fr_TD.txt fr_TG.txt fr_TN.txt fr_VU.txt\
 fr_WF.txt fr_YT.txt ga.txt ga_IE.txt gl.txt\
 gl_ES.txt gsw.txt gsw_CH.txt gsw_LI.txt gu.txt\
 gu_IN.txt guz.txt guz_KE.txt gv.txt gv_IM.txt\
 ha.txt ha_Latn.txt ha_Latn_GH.txt ha_Latn_NE.txt ha_Latn_NG.txt\
 haw.txt haw_US.txt he.txt he_IL.txt hi.txt\
 hi_IN.txt hr.txt hr_BA.txt hr_HR.txt hu.txt\
 hu_HU.txt hy.txt hy_AM.txt id.txt id_ID.txt\
 ig.txt ig_NG.txt ii.txt ii_CN.txt is.txt\
 is_IS.txt it.txt it_CH.txt it_IT.txt it_SM.txt\
 ja.txt ja_JP.txt jgo.txt jgo_CM.txt jmc.txt\
 jmc_TZ.txt ka.txt ka_GE.txt kab.txt kab_DZ.txt\
 kam.txt kam_KE.txt kde.txt kde_TZ.txt kea.txt\
 kea_CV.txt khq.txt khq_ML.txt ki.txt ki_KE.txt\
 kk.txt kk_Cyrl.txt kk_Cyrl_KZ.txt kkj.txt kkj_CM.txt\
 kl.txt kl_GL.txt kln.txt kln_KE.txt km.txt\
 km_KH.txt kn.txt kn_IN.txt ko.txt ko_KP.txt\
 ko_KR.txt kok.txt kok_IN.txt ks.txt ks_Arab.txt\
 ks_Arab_IN.txt ksb.txt ksb_TZ.txt ksf.txt ksf_CM.txt\
 kw.txt kw_GB.txt ky.txt ky_Cyrl.txt ky_Cyrl_KG.txt\
 lag.txt lag_TZ.txt lg.txt lg_UG.txt lkt.txt\
 lkt_US.txt ln.txt ln_AO.txt ln_CD.txt ln_CF.txt\
 ln_CG.txt lo.txt lo_LA.txt lt.txt lt_LT.txt\
 lu.txt lu_CD.txt luo.txt luo_KE.txt luy.txt\
 luy_KE.txt lv.txt lv_LV.txt mas.txt mas_KE.txt\
 mas_TZ.txt mer.txt mer_KE.txt mfe.txt mfe_MU.txt\
 mg.txt mg_MG.txt mgh.txt mgh_MZ.txt mgo.txt\
 mgo_CM.txt mk.txt mk_MK.txt ml.txt ml_IN.txt\
 mn.txt mn_Cyrl.txt mn_Cyrl_MN.txt mr.txt mr_IN.txt\
 ms.txt ms_Latn.txt ms_Latn_BN.txt ms_Latn_MY.txt ms_Latn_SG.txt\
 mt.txt mt_MT.txt mua.txt mua_CM.txt my.txt\
 my_MM.txt naq.txt naq_NA.txt nb.txt nb_NO.txt\
 nb_SJ.txt nd.txt nd_ZW.txt ne.txt ne_IN.txt\
 ne_NP.txt nl.txt nl_AW.txt nl_BE.txt nl_BQ.txt\
 nl_CW.txt nl_NL.txt nl_SR.txt nl_SX.txt nmg.txt\
 nmg_CM.txt nn.txt nn_NO.txt nnh.txt nnh_CM.txt\
 nus.txt nus_SD.txt nyn.txt nyn_UG.txt om.txt\
 om_ET.txt om_KE.txt or.txt or_IN.txt pa.txt\
 pa_Arab.txt pa_Arab_PK.txt pa_Guru.txt pa_Guru_IN.txt pl.txt\
 pl_PL.txt ps.txt ps_AF.txt pt.txt pt_AO.txt\
 pt_BR.txt pt_CV.txt pt_GW.txt pt_MO.txt pt_MZ.txt\
 pt_PT.txt pt_ST.txt pt_TL.txt rm.txt rm_CH.txt\
 rn.txt rn_BI.txt ro.txt ro_MD.txt ro_RO.txt\
 rof.txt rof_TZ.txt ru.txt ru_BY.txt ru_KG.txt\
 ru_KZ.txt ru_MD.txt ru_RU.txt ru_UA.txt rw.txt\
 rw_RW.txt rwk.txt rwk_TZ.txt saq.txt saq_KE.txt\
 sbp.txt sbp_TZ.txt seh.txt seh_MZ.txt ses.txt\
 ses_ML.txt sg.txt sg_CF.txt shi.txt shi_Latn.txt\
 shi_Latn_MA.txt shi_Tfng.txt shi_Tfng_MA.txt si.txt si_LK.txt\
 sk.txt sk_SK.txt sl.txt sl_SI.txt sn.txt\
 sn_ZW.txt so.txt so_DJ.txt so_ET.txt so_KE.txt\
 so_SO.txt sq.txt sq_AL.txt sq_MK.txt sq_XK.txt\
 sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt\
 sr_Cyrl_XK.txt sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_RS.txt\
 sr_Latn_XK.txt sv.txt sv_AX.txt sv_FI.txt sv_SE.txt\
 sw.txt sw_KE.txt sw_TZ.txt sw_UG.txt swc.txt\
 swc_CD.txt ta.txt ta_IN.txt ta_LK.txt ta_MY.txt\
 ta_SG.txt te.txt te_IN.txt teo.txt teo_KE.txt\
 teo_UG.txt th.txt th_TH.txt ti.txt ti_ER.txt\
 ti_ET.txt to.txt to_TO.txt tr.txt tr_CY.txt\
 tr_TR.txt twq.txt twq_NE.txt tzm.txt tzm_Latn.txt\
 tzm_Latn_MA.txt uk.txt uk_UA.txt ur.txt ur_IN.txt\
 ur_PK.txt uz.txt uz_Arab.txt uz_Arab_AF.txt uz_Cyrl.txt\
 uz_Cyrl_UZ.txt uz_Latn.txt uz_Latn_UZ.txt vai.txt vai_Latn.txt\
 vai_Latn_LR.txt vai_Vaii.txt vai_Vaii_LR.txt vi.txt vi_VN.txt\
 vun.txt vun_TZ.txt xog.txt xog_UG.txt yav.txt\
 yav_CM.txt yo.txt yo_BJ.txt yo_NG.txt zgh.txt\
 zgh_MA.txt zh.txt zh_Hans.txt zh_Hans_CN.txt zh_Hans_HK.txt\
 zh_Hans_MO.txt zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt\
 zh_Hant_TW.txt zu.txt zu_ZA.txt

