/*
 *******************************************************************************
 * Copyright (C) 2006, Google, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */
package com.ibm.icu.impl.data;
import java.util.ListResourceBundle;
class DateData { // extracted from CLDR 1.4
 public static class MyDateResources_af extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/second","Sekonde"},
     {"field/hour","Uur"},
     {"field/day","Dag"},
     {"field/month","Maand"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/MMdd","MM-dd"},
     {"field/year","Jaar"},
     {"field/zone","Tydsone"},
     {"pattern/yyyyMM","yyyy-MM"},
     {"field/week","Week"},
     {"field/era","Tydperk"},
     {"field/weekday","Dag van die week"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"field/minute","Minuut"},
 };}}
 public static class MyDateResources_af_ZA extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","yyyy/MM"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/MMdd","MM/dd"},
 };}}
 public static class MyDateResources_am extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","\u1230\u12D3\u1275"},
     {"pattern/MMdd","dd/MM"},
     {"field/minute","\u12F0\u1242\u1243"},
     {"field/day","\u1240\u1295"},
     {"field/month","\u12C8\u122D"},
     {"pattern/MMMMd","MMMM d"},
     {"field/year","\u12D3\u1218\u1275"},
     {"pattern/yyMM","MM/yy"},
     {"field/week","\u1233\u121D\u1295\u1275"},
     {"field/era","\u12D8\u1218\u1295"},
 };}}
 public static class MyDateResources_am_ET extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_ar extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","\u0627\u0644\u0633\u0627\u0639\u0627\u062A"},
     {"pattern/yyyyMM","MM/yyyy"},
     {"field/weekday","\u0627\u0644\u064A\u0648\u0645"},
     {"field/minute","\u0627\u0644\u062F\u0642\u0627\u0626\u0642"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/MMdd","dd/MM"},
     {"field/zone","\u0627\u0644\u062A\u0648\u0642\u064A\u062A"},
     {"field/second","\u0627\u0644\u062B\u0648\u0627\u0646\u064A"},
     {"field/day","\u0627\u0644\u064A\u0648\u0645"},
     {"field/month","\u0627\u0644\u0634\u0647\u0631"},
     {"field/year","\u0627\u0644\u0633\u0646\u0629"},
     {"field/week","\u0627\u0644\u0623\u0633\u0628\u0648\u0639"},
     {"field/era","\u0627\u0644\u0639\u0635\u0631"},
     {"pattern/yyyyMMMM","MMMM, yyyy"},
 };}}
 public static class MyDateResources_as_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM, yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_be extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyM","M.yyyy"},
     {"pattern/Md","d.M"},
     {"pattern/mmss","mm.ss"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_bg extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/hmmss","h:mm:ss a"},
     {"field/hour","\u0447\u0430\u0441"},
     {"pattern/mmss","mm:ss"},
     {"pattern/hmm","h:mm a"},
     {"pattern/MMdd","dd.MM"},
     {"field/zone","\u0437\u043E\u043D\u0430"},
     {"pattern/yyyyMM","MM.yyyy"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/yyyyQQQQ","QQQQ yyyy\u00A0'\u0433'."},
     {"field/weekday","\u0414\u0435\u043D \u043E\u0442 \u0441\u0435\u0434\u043C\u0438\u0446\u0430\u0442\u0430"},
     {"field/minute","\u043C\u0438\u043D\u0443\u0442\u0430"},
     {"field/second","\u0441\u0435\u043A\u0443\u043D\u0434\u0430"},
     {"field/day","\u0414\u0435\u043D"},
     {"field/month","\u043C\u0435\u0441\u0435\u0446"},
     {"field/year","\u0433\u043E\u0434\u0438\u043D\u0430"},
     {"pattern/MMMMdd","dd MMMM"},
     {"field/week","\u0441\u0435\u0434\u043C\u0438\u0446\u0430"},
     {"field/era","\u0435\u0440\u0430"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_bn_BD extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_bn_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_byn_ER extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_ca extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/hhmm","hh:mm a"},
     {"pattern/mmss","mm:ss"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_cs extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/Md","d.M"},
     {"pattern/MMMMd","d. MMMM"},
     {"pattern/yyyyM","M.yyyy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_cy extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/HHmm","HH:mm"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/yyMMdd","yy-MM-dd"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/MMdd","MM-dd"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/yyQQQQ","QQQQ yy"},
 };}}
 public static class MyDateResources_cy_GB extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_da extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","time"},
     {"pattern/mmss","mm.ss"},
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/yyyyMMM","MMM yyyy"},
     {"field/weekday","ugedag"},
     {"field/minute","minut"},
     {"field/dayperiod","dagtid"},
     {"pattern/MMdd","dd/MM"},
     {"field/zone","zone"},
     {"field/second","sekund"},
     {"field/day","dag"},
     {"field/month","m\u00E5ned"},
     {"field/year","\u00E5r"},
     {"pattern/MMMd","d. MMM"},
     {"field/week","uge"},
     {"field/era","tid"},
 };}}
 public static class MyDateResources_de extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","Stunde"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/MMdd","dd.MM"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"field/weekday","Wochentag"},
     {"field/second","Sekunde"},
     {"field/day","Tag"},
     {"field/month","Monat"},
     {"pattern/MMMMd","d. MMMM"},
     {"field/year","Jahr"},
     {"pattern/yyMM","MM.yy"},
     {"field/week","Woche"},
     {"field/dayperiod","Tagesh\u00E4lfte"},
     {"field/era","Epoche"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_de_AT extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMdd","dd. MMMM"},
     {"pattern/yyMMdd","dd.MM.yy"},
 };}}
 public static class MyDateResources_de_BE extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMd","d/MM"},
     {"pattern/MMMMd","d MMMM"},
 };}}
 public static class MyDateResources_de_CH extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMdd","MM-dd"},
 };}}
 public static class MyDateResources_de_LI extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMMdd","dd.MM.yy"},
 };}}
 public static class MyDateResources_de_LU extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMMdd","dd.MM.yy"},
 };}}
 public static class MyDateResources_dv_MV extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_el extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMdd","dd/MM"},
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_en extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"field/day","Tomorrow"},
     {"field/day","Today"},
     {"pattern/yyyyMMM","MMM yyyy"},
     {"pattern/Md","M/d"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/MMMMd","MMMM d"},
     {"pattern/yyMM","MM/yy"},
     {"field/day","Yesterday"},
     {"field/dayperiod","AM/PM"},
     {"pattern/yyQQQQ","QQQQ yy"},
 };}}
 public static class MyDateResources_en_AU extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_en_BE extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMdd","dd/MM"},
     {"pattern/MMMdd","dd MMM"},
 };}}
 public static class MyDateResources_en_BW extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_en_BZ extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_en_CA extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMMM","MMM-yy"},
     {"pattern/MMdd","dd/MM"},
     {"pattern/MMMd","d-MMM"},
 };}}
 public static class MyDateResources_en_GB extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_en_HK extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_en_IE extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/hhmmss","hh:mm:ss a"},
 };}}
 public static class MyDateResources_en_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_en_MT extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_en_NZ extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMd","d/MM"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_en_PH extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMd","MM d"},
 };}}
 public static class MyDateResources_en_PK extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_en_SG extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_en_ZA extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","yyyy/MM"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","MM/dd"},
 };}}
 public static class MyDateResources_en_ZW extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/yyyyM","M/yyyy"},
     {"pattern/Md","d/M"},
 };}}
 public static class MyDateResources_es extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","hora"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"field/zone","zona"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/MMMdd","dd-MMM"},
     {"field/weekday","d\u00EDa de la semana"},
     {"pattern/yyMMM","MMM-yy"},
     {"pattern/MMd","d/MM"},
     {"field/minute","minuto"},
     {"field/second","segundo"},
     {"field/day","d\u00EDa"},
     {"field/month","mes"},
     {"field/year","a\u00F1o"},
     {"pattern/yyMM","MM/yy"},
     {"field/week","semana"},
     {"field/dayperiod","periodo del d\u00EDa"},
     {"field/era","era"},
     {"pattern/yyQQQQ","QQQQ yy"},
 };}}
 public static class MyDateResources_es_AR extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_BO extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_CL extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
 };}}
 public static class MyDateResources_es_CO extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_CR extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_DO extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_EC extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_ES extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_es_GT extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_HN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_MX extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_NI extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_PA extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMdd","MM/dd"},
 };}}
 public static class MyDateResources_es_PR extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMdd","MM/dd"},
 };}}
 public static class MyDateResources_es_PY extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_SV extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_US extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMd","MMM d"},
     {"pattern/Md","M/d"},
 };}}
 public static class MyDateResources_es_UY extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_es_VE extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
 };}}
 public static class MyDateResources_et extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM.yyyy"},
     {"pattern/mmss","mm:ss"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/MMdd","dd.MM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_fa extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","\u0633\u0627\u0639\u062A"},
     {"pattern/mmss","mm:ss"},
     {"pattern/HHmmZ","HH:mm (Z)"},
     {"field/zone","\u0645\u0646\u0637\u0642\u0647\u0654 \u0632\u0645\u0627\u0646\u06CC"},
     {"pattern/Md","M/d"},
     {"field/weekday","\u0631\u0648\u0632 \u0647\u0641\u062A\u0647"},
     {"pattern/yyyyMMMMEEEEd","EEEE d MMMM yyyy"},
     {"field/minute","\u062F\u0642\u06CC\u0642\u0647"},
     {"field/second","\u062B\u0627\u0646\u06CC\u0647"},
     {"field/day","\u0631\u0648\u0632"},
     {"field/month","\u0645\u0627\u0647"},
     {"pattern/MMMMd","d MMMM"},
     {"field/year","\u0633\u0627\u0644"},
     {"pattern/yyyyM","yyyy/M"},
     {"field/week","\u0647\u0641\u062A\u0647"},
     {"pattern/GGGGyyyyMMMMd","d MMMM yyyy GGGG"},
     {"append/Day-Of-Week","{1} {0}"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_fi extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","tunti"},
     {"pattern/mmss","mm.ss"},
     {"field/zone","aikavy\u00F6hyke"},
     {"pattern/yyyyMEEEd","EEE d.M.yyyy"},
     {"pattern/Md","d.M"},
     {"pattern/yyyyQQQQ","QQQQ yyyy"},
     {"field/weekday","viikonp\u00E4iv\u00E4"},
     {"field/minute","minuutti"},
     {"field/second","sekunti"},
     {"field/day","p\u00E4iv\u00E4"},
     {"field/month","kuukausi"},
     {"pattern/MMMMd","d. MMMM'ta'"},
     {"field/year","vuosi"},
     {"pattern/yyyyM","M.yyyy"},
     {"field/week","viikko"},
     {"field/dayperiod","ap/ip-valinta"},
     {"field/era","aikakausi"},
     {"pattern/yyyyMMMM","MMMM'ta 'yyyy"},
 };}}
 public static class MyDateResources_fo extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMd","d. MMM"},
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/yyyyMMM","MMM yyyy"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/MMdd","dd-MM"},
     {"pattern/HHmmss","HH:mm:ss"},
 };}}
 public static class MyDateResources_fr extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/hhmm","hh:mm a"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyMM","MM/yy"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/MMdd","dd/MM"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_fr_BE extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMMM","MMM-yy"},
     {"pattern/yyMMMEEEd","EEE d MMM yy"},
     {"pattern/MMMdd","dd-MMM"},
     {"pattern/MMd","d/MM"},
 };}}
 public static class MyDateResources_fr_CA extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","yy-MM"},
     {"pattern/MMdd","MM-dd"},
 };}}
 public static class MyDateResources_fr_CH extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM.yy"},
     {"pattern/MMdd","dd.MM"},
     {"pattern/yyMMMd","d. MMM yy"},
 };}}
 public static class MyDateResources_fur extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/second","secont"},
     {"field/hour","ore"},
     {"field/day","d\u00EC"},
     {"field/month","m\u00EAs"},
     {"pattern/MMMMd","d MMMM"},
     {"field/year","an"},
     {"field/zone","zone"},
     {"pattern/yyMM","MM/yy"},
     {"field/week","setemane"},
     {"field/dayperiod","toc dal d\u00EC"},
     {"field/era","ere"},
     {"field/weekday","d\u00EC de setemane"},
     {"pattern/MMd","d/MM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"field/minute","min\u00FBt"},
 };}}
 public static class MyDateResources_ga extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
 };}}
 public static class MyDateResources_ga_IE extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_gez_ER extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_gez_ET extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_gl_ES extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_gu_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_gv_GB extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/mmss","mm:ss"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_haw_US extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/yyM","M/yy"},
     {"pattern/Md","d/M"},
 };}}
 public static class MyDateResources_he extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","\u05E9\u05E2\u05D4"},
     {"pattern/MMdd","dd/MM"},
     {"field/zone","\u05D0\u05D6\u05D5\u05E8"},
     {"pattern/yyyyMM","MM/yyyy"},
     {"field/weekday","\u05D9\u05D5\u05DD \u05D1\u05E9\u05D1\u05D5\u05E2"},
     {"field/minute","\u05D3\u05E7\u05D4"},
     {"field/second","\u05E9\u05E0\u05D9"},
     {"field/day","\u05D9\u05D5\u05DD"},
     {"field/month","\u05D7\u05D5\u05D3\u05E9"},
     {"pattern/MMMMd","d MMMM"},
     {"field/year","\u05E9\u05E0\u05D4"},
     {"field/week","\u05E9\u05D1\u05D5\u05E2"},
     {"field/era","\u05EA\u05E7\u05D5\u05E4\u05D4"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_hi extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMMMd","MMM d, yy"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/yyMMMEEEd","EEE, MMM d, yy"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/yyMMdd","dd-MM-yy"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/MMMdd","MMM dd"},
     {"pattern/GGGGyMMMMEEEEdd","EEEE,dd MMMM GGGGy"},
 };}}
 public static class MyDateResources_hi_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_hr extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/hhmm","hh:mm a"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/MMdd","MM.dd"},
     {"pattern/MMMMdd","MMMM dd"},
     {"pattern/yyyyMM","yyyy.MM"},
     {"pattern/yyMMMEEEd","EEE yy.MMM d"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"pattern/yyyyMMMM","yyyy. MMMM"},
 };}}
 public static class MyDateResources_hu extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","\u00F3ra"},
     {"pattern/mmss","mm:ss"},
     {"pattern/MMdd","MM.dd."},
     {"field/zone","z\u00F3na"},
     {"pattern/yyyyMM","yyyy.MM"},
     {"field/weekday","h\u00E9t napja"},
     {"field/minute","perc"},
     {"field/second","m\u00E1sodperc"},
     {"field/day","nap"},
     {"field/month","h\u00F3nap"},
     {"pattern/MMMMd","MMMM d."},
     {"field/year","\u00E9v"},
     {"field/week","h\u00E9t"},
     {"field/dayperiod","napszak"},
     {"field/era","\u00E9ra"},
     {"pattern/yyyyMMMM","yyyy. MMMM"},
 };}}
 public static class MyDateResources_hy extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMdd","MM/dd"},
     {"pattern/MMMMdd","MMMM dd"},
 };}}
 public static class MyDateResources_id_ID extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/mmss","mm:ss"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_is extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/Md","d.M"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/MMMMd","d. MMMM"},
     {"pattern/yyyyM","M.yyyy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_it extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","ora"},
     {"pattern/hhmm","hh.mm a"},
     {"pattern/hhmmss","hh.mm.ss a"},
     {"pattern/MMdd","dd/MM"},
     {"field/zone","zona"},
     {"pattern/HHmm","HH.mm"},
     {"pattern/HHmmss","HH.mm.ss"},
     {"field/weekday","giorno della settimana"},
     {"field/minute","minuto"},
     {"field/second","secondo"},
     {"field/day","giorno"},
     {"field/month","mese"},
     {"field/year","anno"},
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"field/week","settimana"},
     {"field/dayperiod","periodo del giorno"},
     {"field/era","era"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_it_CH extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM.yy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/MMdd","dd.MM"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/hhmmss","hh:mm:ss a"},
 };}}
 public static class MyDateResources_ja extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","yyyy/MM"},
     {"pattern/GGGGyMd","GGGGy'\u5E74'M'\u6708'd'\u65E5'"},
     {"pattern/MMdd","MM/dd"},
 };}}
 public static class MyDateResources_ka extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/second","\u10EC\u10D0\u10DB\u10D8"},
     {"pattern/yyMMMd","d MMM, yy"},
     {"field/hour","\u10E1\u10D0\u10D0\u10D7\u10D8"},
     {"pattern/hhmm","hh:mm a"},
     {"field/day","\u10D3\u10E6\u10D4"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"field/month","\u10D7\u10D5\u10D4"},
     {"pattern/MMdd","MM-dd"},
     {"field/year","\u10EC\u10D4\u10DA\u10D8"},
     {"field/zone","\u10D6\u10DD\u10DC\u10D0"},
     {"pattern/yyMM","MM/yy"},
     {"pattern/yyMMMEEEd","EEE, d MMM, yy"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/yyMMdd","dd/MM/yy"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"field/week","\u10D9\u10D5\u10D8\u10E0\u10D0"},
     {"pattern/MMMdd","dd MMM"},
     {"field/dayperiod","\u10D3\u10E6\u10D8\u10E1 \u10DE\u10D4\u10E0\u10D8\u10DD\u10D3\u10D8"},
     {"field/era","\u10EE\u10D0\u10DC\u10D0"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"field/weekday","\u10D9\u10D5\u10D8\u10E0\u10D8\u10E1 \u10D3\u10E6\u10D4"},
     {"field/minute","\u10EC\u10E3\u10D7\u10D8"},
 };}}
 public static class MyDateResources_kk extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM.yyyy"},
     {"pattern/yyyyMMMM","MMMM yyyy '\u0436.'"},
     {"pattern/MMdd","dd.MM"},
 };}}
 public static class MyDateResources_kl_GL extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_km extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/Md","d/M"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/mmss","mm:ss"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyM","M/yyyy"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_kn_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_ko extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMdd","MM. dd"},
     {"pattern/yyyyMM","yyyy. MM"},
     {"pattern/Hms","H'\uC2DC' m'\uBD84' s'\uCD08'"},
 };}}
 public static class MyDateResources_ko_KR extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyQ","yy'\uB144\uB3C4 \uC81C'Q'\uC0AC\uBD84\uAE30'"},
 };}}
 public static class MyDateResources_kok_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_ku extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/day","roj"},
     {"field/second","\u00E7irke"},
     {"field/year","sal"},
     {"field/week","hefte"},
     {"field/month","meh"},
     {"field/hour","demjim\u00EAr"},
     {"field/minute","xulek"},
 };}}
 public static class MyDateResources_kw_GB extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_lo extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/Md","d/M"},
     {"pattern/yyyyM","M/yyyy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_lt extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/second","Sekund\u0117"},
     {"field/hour","valanda"},
     {"pattern/hhmm","hh:mm a"},
     {"field/day","diena"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"field/month","m\u0117nuo"},
     {"pattern/MMdd","MM.dd"},
     {"field/year","metai"},
     {"field/zone","juosta"},
     {"pattern/yyyyMM","yyyy.MM"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"field/week","savait\u0117"},
     {"pattern/MMMdd","MMM-dd"},
     {"field/dayperiod","dienos metas"},
     {"field/era","era"},
     {"field/weekday","savait\u0117s diena"},
     {"field/minute","minut\u0117"},
 };}}
 public static class MyDateResources_lv extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/Md","d.M"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
 };}}
 public static class MyDateResources_mk extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/Mdd","dd.M"},
     {"pattern/yyyyM","M.yyyy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_ml_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_mr_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_ms_BN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/Hmm","H:mm"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_ms_MY extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_mt extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","Sieg\u0127a"},
     {"pattern/MMdd","dd/MM"},
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/yyyyMMM","MMM yyyy"},
     {"field/minute","Minuta"},
     {"field/second","Sekonda"},
     {"field/day","Jum"},
     {"field/month","Xahar"},
     {"pattern/MMMMd","d 'ta\u2019' MMMM"},
     {"field/year","Sena"},
     {"field/week","\u0120img\u0127a"},
     {"field/era","Epoka"},
 };}}
 public static class MyDateResources_nb extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","time"},
     {"pattern/mmss","mm.ss"},
     {"pattern/MMdd","dd.MM"},
     {"field/zone","sone"},
     {"field/weekday","ukedag"},
     {"field/minute","minutt"},
     {"field/second","sekund"},
     {"field/day","dag"},
     {"field/month","m\u00E5ned"},
     {"pattern/MMMMd","d. MMMM"},
     {"field/year","\u00E5r"},
     {"pattern/yyMM","MM.yy"},
     {"field/week","uke"},
     {"field/dayperiod","f.m./e.m.-valg"},
     {"field/era","tidsalder"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_nb_NO extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/HHmm","HH.mm"},
     {"pattern/MMdd","dd. MM"},
     {"pattern/HHmmss","HH.mm.ss"},
 };}}
 public static class MyDateResources_nl extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","Uur"},
     {"pattern/mmss","mm:ss"},
     {"pattern/MMdd","dd-MM"},
     {"field/weekday","Dag van de week"},
     {"field/minute","Minuut"},
     {"field/second","Seconde"},
     {"field/day","Dag"},
     {"field/month","Maand"},
     {"pattern/MMMMd","d MMMM"},
     {"field/year","Jaar"},
     {"pattern/yyMM","MM-yy"},
     {"field/dayperiod","Dagdeel"},
     {"field/era","Tijdperk"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_nl_BE extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMd","d/MM"},
     {"pattern/MMMd","d-MMM"},
     {"pattern/yyMM","MM/yy"},
     {"pattern/yyMMM","MMM-yy"},
 };}}
 public static class MyDateResources_nn extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","time"},
     {"pattern/mmss","mm.ss"},
     {"pattern/MMdd","dd.MM"},
     {"field/zone","sone"},
     {"field/weekday","vekedag"},
     {"field/minute","minutt"},
     {"field/second","sekund"},
     {"field/day","dag"},
     {"field/month","m\u00E5nad"},
     {"pattern/MMMMd","d. MMMM"},
     {"field/year","\u00E5r"},
     {"pattern/yyMM","MM.yy"},
     {"field/week","veke"},
     {"field/dayperiod","f.m./e.m.-val"},
     {"field/era","\u00E6ra"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_om_ET extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_om_KE extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_or_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_pa extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/day","\u0A26\u0A3F\u0A28"},
     {"field/weekday","\u0A39\u0A2B\u0A3C\u0A24\u0A47 \u0A26\u0A3E \u0A26\u0A3F\u0A28"},
     {"field/year","\u0A38\u0A3E\u0A32"},
     {"field/week","\u0A39\u0A2B\u0A3C\u0A24\u0A3E"},
     {"field/month","\u0A2E\u0A39\u0A40\u0A28\u0A3E"},
     {"field/hour","\u0A18\u0A70\u0A1F\u0A3E"},
     {"field/zone","\u0A16\u0A47\u0A24\u0A30"},
     {"field/minute","\u0A2E\u0A3F\u0A70\u0A1F"},
 };}}
 public static class MyDateResources_pa_Arab extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/day","\u062F\u0626\u0646"},
     {"field/month","\u0645\u06C1\u064A\u0646\u0627"},
     {"field/hour","\u06AF\u06BE\u0646\u0679\u0627"},
     {"field/weekday","\u06C1\u0641\u062A\u06D2 \u062F\u0627 \u062F\u0646"},
     {"field/year","\u0648\u0631\u06BE\u0627"},
     {"field/week","\u06C1\u0641\u062A\u06C1"},
     {"field/zone","\u0679\u067E\u06C1"},
     {"field/minute","\u0645\u0646\u0679"},
 };}}
 public static class MyDateResources_pa_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_pl extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/hhmm","hh:mm a"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/MMdd","MM-dd"},
     {"pattern/yyyyMM","yyyy-MM"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_pl_PL extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/second","Sekunda"},
     {"field/hour","Godzina"},
     {"field/day","Dzie\u0144"},
     {"field/month","Miesi\u0105c"},
     {"field/year","Rok"},
     {"field/zone","Strefa"},
     {"field/week","Tydzie\u0144"},
     {"field/weekday","Dzie\u0144 tygodnia"},
     {"field/minute","Minuta"},
 };}}
 public static class MyDateResources_ps extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyM","yyyy/M"},
     {"pattern/Md","M/d"},
     {"pattern/mmss","mm:ss"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","\u062F yyyy \u062F MMMM"},
 };}}
 public static class MyDateResources_pt extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/yyyyMMM","MMM/yyyy"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
 };}}
 public static class MyDateResources_pt_BR extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/second","Segundo"},
     {"field/year","Ano"},
     {"field/week","Semana"},
     {"field/hour","Hora"},
     {"field/zone","Fuso"},
     {"field/dayperiod","Per\u00EDodo do dia"},
     {"field/day","Dia"},
     {"field/weekday","Dia da semana"},
     {"field/month","M\u00EAs"},
     {"field/minute","Minuto"},
 };}}
 public static class MyDateResources_pt_PT extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","yyyy/MM"},
     {"pattern/yyMMMEEEd","EEE, d 'de' MMM 'de' yy"},
     {"pattern/yyMMMd","d 'de' MMM 'de' yy"},
     {"field/hour","Hora"},
     {"field/day","Dia"},
     {"field/month","M\u00EAs"},
     {"pattern/MMdd","MM/dd"},
     {"field/year","Ano"},
     {"field/week","Semana"},
     {"field/zone","Zona"},
     {"field/dayperiod","Per\u00EDodo do dia"},
     {"field/weekday","Dia da semana"},
     {"field/minute","Minuto"},
 };}}
 public static class MyDateResources_ro extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMd","d MMMM"},
     {"pattern/MMdd","dd.MM"},
     {"pattern/yyyyMM","MM.yyyy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"append/Hour","{0} ({2}: {1})"},
     {"field/second","Second"},
     {"append/Week","{0} ({2}: {1})"},
     {"field/hour","Hour"},
     {"pattern/yyQ","Q yy"},
     {"field/day","Day"},
     {"field/month","Month"},
     {"append/Era","{0} {1}"},
     {"field/year","Year"},
     {"field/zone","Zone"},
     {"append/Quarter","{0} ({2}: {1})"},
     {"append/Minute","{0} ({2}: {1})"},
     {"append/Year","{0} {1}"},
     {"append/Timezone","{0} {1}"},
     {"append/Second","{0} ({2}: {1})"},
     {"field/week","Week"},
     {"append/Day","{0} ({2}: {1})"},
     {"field/dayperiod","Dayperiod"},
     {"field/era","Era"},
     {"field/weekday","Day of the Week"},
     {"append/Month","{0} ({2}: {1})"},
     {"append/Day-Of-Week","{0} {1}"},
     {"field/minute","Minute"},
 };}}
 public static class MyDateResources_ru extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/MMdd","dd.MM"},
     {"pattern/yyyyMM","MM.yyyy"},
     {"pattern/yyyyQQQQ","QQQQ yyyy '\u0433.'"},
     {"field/weekday","\u0414\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438"},
     {"field/day","\u0414\u0435\u043D\u044C"},
     {"pattern/yyyyLLLL","LLLL yyyy"},
     {"pattern/yyMMMEEEd","EEE, d MMM yy"},
     {"pattern/MMMd","d MMM"},
 };}}
 public static class MyDateResources_ru_UA extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_sa_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_se_NO extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/second","sekunda"},
     {"field/year","j\u00E1hki"},
     {"field/week","v\u00E1hkku"},
     {"field/hour","tiibmu"},
     {"field/zone","sone"},
     {"field/day","beaivi"},
     {"field/weekday","v\u00E1hkkubeaivi"},
     {"field/month","m\u00E1nnu"},
     {"field/minute","minuhtta"},
 };}}
 public static class MyDateResources_sid extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_sk extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/Md","d.M"},
     {"pattern/MMMMd","d. MMMM"},
     {"pattern/yyyyM","M.yyyy"},
     {"pattern/yyQQQQ","QQQQ yy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_sl extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/MMMMdd","dd. MMMM"},
     {"pattern/Md","d.M"},
     {"pattern/yyyyM","M.yyyy"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_so extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMdd","dd/MM"},
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_sq extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","yyyy-MM"},
     {"pattern/MMdd","MM-dd"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_sr extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMMMd","d. MMM yy"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/mmss","mm.ss"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/MMdd","MM-dd"},
     {"pattern/yyMM","MM.yy"},
     {"pattern/MMMdd","dd.MMM"},
     {"pattern/yyQQQQ","QQQQ yy"},
 };}}
 public static class MyDateResources_sr_Cyrl_BA extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","yyyy-MM"},
     {"pattern/MMMMdd","dd. MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy."},
 };}}
 public static class MyDateResources_sr_Latn extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMMdd","dd.MM.yy"},
 };}}
 public static class MyDateResources_sr_Latn_BA extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","yyyy-MM"},
     {"pattern/MMMMdd","dd. MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy."},
 };}}
 public static class MyDateResources_sv extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","timme"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/mmss","mm.ss"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"pattern/MMdd","MM-dd"},
     {"field/zone","tidszon"},
     {"pattern/yyyyMM","yyyy-MM"},
     {"pattern/yyyyMMM","MMM yyyy"},
     {"pattern/yyyyQQQQ","QQQQ',' yyyy"},
     {"field/weekday","veckodag"},
     {"field/minute","minut"},
     {"field/second","sekund"},
     {"field/day","dag"},
     {"field/month","m\u00E5nad"},
     {"field/year","\u00E5r"},
     {"pattern/MMMd","d MMM"},
     {"field/week","vecka"},
     {"field/dayperiod","dagsperiod"},
     {"field/era","era"},
 };}}
 public static class MyDateResources_sv_SE extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/MMd","d/MM"},
     {"pattern/MMMMEEEd","EEE d MMMM"},
     {"pattern/hhmm","hh.mm a"},
     {"pattern/yyyyQQQQ","QQQQ yyyy"},
     {"pattern/hhmmss","hh.mm.ss a"},
     {"field/dayperiod","tidsvisning"},
 };}}
 public static class MyDateResources_syr_SY extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","MM/yyyy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM, yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_ta_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_te_IN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_th extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","\u0E0A\u0E31\u0E48\u0E27\u0E42\u0E21\u0E07"},
     {"pattern/mmss","mm:ss"},
     {"field/zone","\u0E40\u0E02\u0E15"},
     {"pattern/Md","d/M"},
     {"field/weekday","\u0E27\u0E31\u0E19\u0E43\u0E19\u0E2A\u0E31\u0E1B\u0E14\u0E32\u0E2B\u0E4C"},
     {"field/minute","\u0E19\u0E32\u0E17\u0E35"},
     {"field/second","\u0E27\u0E34\u0E19\u0E32\u0E17\u0E35"},
     {"field/day","\u0E27\u0E31\u0E19"},
     {"field/month","\u0E40\u0E14\u0E37\u0E2D\u0E19"},
     {"pattern/MMMMd","d MMMM"},
     {"field/year","\u0E1B\u0E35"},
     {"pattern/yyyyM","M/yyyy"},
     {"field/week","\u0E2A\u0E31\u0E1B\u0E14\u0E32\u0E2B\u0E4C"},
     {"field/dayperiod","\u0E0A\u0E48\u0E27\u0E07\u0E27\u0E31\u0E19"},
     {"field/era","\u0E2A\u0E21\u0E31\u0E22"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_ti_ER extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_ti_ET extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_tig_ER extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_tr extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","Saat"},
     {"pattern/hhmm","hh:mm a"},
     {"pattern/hhmmss","hh:mm:ss a"},
     {"field/zone","Saat Dilimi"},
     {"pattern/HHmm","HH:mm"},
     {"pattern/HHmmss","HH:mm:ss"},
     {"field/weekday","Haftan\u0131n G\u00FCn\u00FC"},
     {"field/minute","Dakika"},
     {"field/second","Saniye"},
     {"field/day","G\u00FCn"},
     {"field/month","Ay"},
     {"field/year","Y\u0131l"},
     {"field/week","Hafta"},
     {"field/dayperiod","G\u00FCn\u00FCn B\u00F6l\u00FCm\u00FC"},
     {"field/era","Miladi D\u00F6nem"},
     {"pattern/yyQQQQ","QQQQ yy"},
 };}}
 public static class MyDateResources_tt_RU extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/mmss","mm:ss"},
     {"pattern/yyyyMM","MM.yyyy"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/Hmm","H:mm"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd.MM"},
 };}}
 public static class MyDateResources_uk extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/hour","\u0413\u043E\u0434\u0438\u043D\u0430"},
     {"field/weekday","\u0414\u0435\u043D\u044C \u0442\u0438\u0436\u043D\u044F"},
     {"field/minute","\u0425\u0432\u0438\u043B\u0438\u043D\u0430"},
     {"pattern/MMMMd","d MMMM"},
     {"pattern/yyMM","MM.yy"},
     {"field/dayperiod","\u0427\u0430\u0441\u0442\u0438\u043D\u0430 \u0434\u043E\u0431\u0438"},
     {"pattern/MMdd","dd.MM"},
     {"pattern/yyyyQQQQ","QQQQ yyyy '\u0440.'"},
     {"field/second","\u0421\u0435\u043A\u0443\u043D\u0434\u0430"},
     {"field/day","\u0414\u0435\u043D\u044C"},
     {"field/month","\u041C\u0456\u0441\u044F\u0446\u044C"},
     {"field/year","\u0420\u0456\u043A"},
     {"field/week","\u0422\u0438\u0436\u0434\u0435\u043D\u044C"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_uz_Arab extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyM","yyyy/M"},
     {"pattern/Md","M/d"},
     {"pattern/mmss","mm:ss"},
     {"pattern/MMMMd","d \u0646\u0686\u06CC MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
 };}}
 public static class MyDateResources_vi extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyMM","MM-yyyy"},
     {"pattern/MMdd","dd-MM"},
 };}}
 public static class MyDateResources_wal_ET extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_zh extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/Md","M'\u6708'd'\u65E5'"},
     {"pattern/yyyyM","yyyy'\u5E74'M'\u6708'"},
 };}}
 public static class MyDateResources_zh_Hans extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/second","\u79D2\u949F"},
     {"field/hour","\u5C0F\u65F6"},
     {"field/day","\u65E5"},
     {"field/month","\u6708"},
     {"field/year","\u5E74"},
     {"field/zone","\u533A\u57DF"},
     {"field/week","\u5468"},
     {"field/dayperiod","\u4E0A\u5348/\u4E0B\u5348"},
     {"field/era","\u65F6\u671F"},
     {"field/weekday","\u5468\u5929"},
     {"field/minute","\u5206\u949F"},
 };}}
 public static class MyDateResources_zh_Hans_CN extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyyyM","yyyy-M"},
     {"pattern/Md","M-d"},
 };}}
 public static class MyDateResources_zh_Hans_SG extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/yyMM","MM/yy"},
     {"pattern/MMMMdd","dd MMMM"},
     {"pattern/yyyyMMMM","MMMM yyyy"},
     {"pattern/MMdd","dd/MM"},
 };}}
 public static class MyDateResources_zh_Hant extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"pattern/Md","M/d"},
     {"pattern/yyyyM","yyyy/M"},
 };}}
 public static class MyDateResources_zh_Hant_TW extends ListResourceBundle {
  protected Object[][] getContents() {
   return new Object[][] {
     {"field/second","\u79D2"},
     {"field/hour","\u5C0F\u6642"},
     {"field/day","\u6574\u65E5"},
     {"field/month","\u6708"},
     {"field/year","\u5E74"},
     {"field/week","\u9031"},
     {"field/zone","\u5340\u57DF"},
     {"field/dayperiod","\u65E5\u9593"},
     {"field/era","\u5E74\u4EE3"},
     {"field/weekday","\u9031\u5929"},
     {"field/minute","\u5206\u9418"},
 };}}
}
