use crate::Resolved;
use crate::data::YearFact;
use crate::raw_date::RawDate;
use crate::data::months;
pub(crate) const FIRST_YEAR: i32 = 1993;
pub(crate) const Y1993: YearFact = YearFact {
holidays: months! {
Mar: [24],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y1994: YearFact = YearFact {
holidays: months! {
Mar: [13],
Jul: [26],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y1995: YearFact = YearFact {
holidays: months! {
Mar: [2],
Jul: [26],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y1996: YearFact = YearFact {
holidays: months! {
Feb: [19],
Jul: [26],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y1997: YearFact = YearFact {
holidays: months! {
Feb: [8],
Jul: [26],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y1998: YearFact = YearFact {
holidays: months! {
Jan: [29],
Jul: [26],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y1999: YearFact = YearFact {
holidays: months! {
Jan: [18],
Jul: [26],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2000: YearFact = YearFact {
holidays: months! {
Jan: [8],
Mar: [16],
Jul: [26],
Dec: [27],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2001: YearFact = YearFact {
holidays: months! {
Mar: [5],
Jul: [26],
Dec: [16],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2002: YearFact = YearFact {
holidays: months! {
Feb: [22],
Jul: [26],
Dec: [5],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2003: YearFact = YearFact {
holidays: months! {
Feb: [11],
Jul: [26],
Nov: [25],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2004: YearFact = YearFact {
holidays: months! {
Feb: [1],
Jul: [26],
Nov: [14],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2005: YearFact = YearFact {
holidays: months! {
Jan: [21],
Jul: [26],
Nov: [3],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2006: YearFact = YearFact {
holidays: months! {
Jan: [10],
Jul: [26],
Oct: [23],
Dec: [31],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2007: YearFact = YearFact {
holidays: months! {
Jul: [26],
Oct: [13],
Dec: [20],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2008: YearFact = YearFact {
holidays: months! {
Jul: [26],
Oct: [1],
Dec: [8],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2009: YearFact = YearFact {
holidays: months! {
Jul: [26],
Sep: [20],
Nov: [27],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2010: YearFact = YearFact {
holidays: months! {
Jul: [26],
Sep: [10],
Nov: [16],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2011: YearFact = YearFact {
holidays: months! {
Jul: [26],
Aug: [30],
Sep: [15],
Nov: [6],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2012: YearFact = YearFact {
holidays: months! {
Jul: [26],
Aug: [19],
Sep: [15],
Oct: [26],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2013: YearFact = YearFact {
holidays: months! {
Jul: [26],
Aug: [8],
Sep: [15],
Oct: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2014: YearFact = YearFact {
holidays: months! {
Jul: [26, 28],
Sep: [15],
Oct: [4],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2015: YearFact = YearFact {
holidays: months! {
Jul: [17, 26],
Sep: [15, 23],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2016: YearFact = YearFact {
holidays: months! {
Jul: [6, 26],
Sep: [11, 15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2017: YearFact = YearFact {
holidays: months! {
Jun: [25],
Jul: [26],
Sep: [1, 15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2018: YearFact = YearFact {
holidays: months! {
Jun: [15],
Jul: [26],
Aug: [21],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2019: YearFact = YearFact {
holidays: months! {
Jun: [4],
Jul: [26],
Aug: [11],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2020: YearFact = YearFact {
holidays: months! {
May: [24],
Jul: [26, 31],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2021: YearFact = YearFact {
holidays: months! {
May: [13],
Jul: [20, 26],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2022: YearFact = YearFact {
holidays: months! {
May: [2],
Jul: [9, 26],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2023: YearFact = YearFact {
holidays: months! {
Apr: [21],
Jun: [28],
Jul: [26],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2024: YearFact = YearFact {
holidays: months! {
Apr: [10, 11, 12],
Jun: [17],
Jul: [26],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2025: YearFact = YearFact {
holidays: months! {
Mar: [31],
Apr: [1, 29],
Jun: [6],
Jul: [26],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
pub(crate) const Y2026: YearFact = YearFact {
holidays: months! {
Mar: [19, 20],
Apr: [13, 21],
May: [27, 28, 29],
Jul: [26],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
static YEARS: [YearFact; 34] = [
Y1993, Y1994, Y1995, Y1996, Y1997, Y1998, Y1999, Y2000, Y2001, Y2002, Y2003, Y2004, Y2005,
Y2006, Y2007, Y2008, Y2009, Y2010, Y2011, Y2012, Y2013, Y2014, Y2015, Y2016, Y2017, Y2018,
Y2019, Y2020, Y2021, Y2022, Y2023, Y2024, Y2025, Y2026,
];
static PREDICT: YearFact = YearFact {
holidays: months! {
Jul: [26],
Sep: [15],
},
extra_days_off: months! {},
working_days: months! {},
short_days: months! {},
transferred_days: months! {},
};
#[inline]
pub(crate) fn flags(date: RawDate) -> Resolved<crate::DayFlags> {
super::resolve(date, FIRST_YEAR, &YEARS, &PREDICT)
}