@hebcal/core 5.9.2 → 5.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +223 -200
- package/dist/bundle.js.map +1 -1
- package/dist/bundle.min.js +17 -19
- package/dist/bundle.min.js.map +1 -1
- package/dist/esm/DailyLearning.js +1 -1
- package/dist/esm/HebrewDateEvent.js +1 -1
- package/dist/esm/HolidayEvent.js +1 -1
- package/dist/esm/MevarchimChodeshEvent.js +1 -1
- package/dist/esm/ParshaEvent.js +1 -1
- package/dist/esm/TimedEvent.js +1 -1
- package/dist/esm/YomKippurKatanEvent.js +1 -1
- package/dist/esm/ashkenazi.po.js +1 -1
- package/dist/esm/calendar.js +1 -1
- package/dist/esm/candles.js +1 -1
- package/dist/esm/event.js +1 -1
- package/dist/esm/getStartAndEnd.js +1 -1
- package/dist/esm/hallel.js +1 -1
- package/dist/esm/he.po.js +2 -2
- package/dist/esm/he.po.js.map +1 -1
- package/dist/esm/hebcal.js +1 -1
- package/dist/esm/holidays.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/locale.js +1 -1
- package/dist/esm/location.js +1 -1
- package/dist/esm/modern.js +1 -1
- package/dist/esm/molad.js +1 -1
- package/dist/esm/omer.d.ts +15 -3
- package/dist/esm/omer.js +210 -12
- package/dist/esm/omer.js.map +1 -1
- package/dist/esm/parshaName.js +1 -1
- package/dist/esm/parshaYear.js +1 -1
- package/dist/esm/pkgVersion.d.ts +1 -1
- package/dist/esm/pkgVersion.js +2 -2
- package/dist/esm/pkgVersion.js.map +1 -1
- package/dist/esm/reformatTimeStr.js +1 -1
- package/dist/esm/sedra.js +1 -1
- package/dist/esm/staticHolidays.js +1 -1
- package/dist/esm/tachanun.js +1 -1
- package/dist/esm/zmanim.js +1 -1
- package/dist/index.cjs +211 -13
- package/dist/index.cjs.map +1 -1
- package/dist/omer.d.ts +15 -3
- package/dist/pkgVersion.d.ts +1 -1
- package/package.json +8 -8
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/pkgVersion.ts","../src/ashkenazi.po.ts","../src/he.po.ts","../src/locale.ts","../src/event.ts","../src/HebrewDateEvent.ts","../src/location.ts","../src/zmanim.ts","../src/reformatTimeStr.ts","../src/TimedEvent.ts","../src/staticHolidays.ts","../src/HolidayEvent.ts","../src/candles.ts","../src/molad.ts","../src/omer.ts","../src/parshaName.ts","../node_modules/quick-lru/index.js","../src/sedra.ts","../src/ParshaEvent.ts","../src/parshaYear.ts","../src/modern.ts","../src/YomKippurKatanEvent.ts","../src/holidays.ts","../src/MevarchimChodeshEvent.ts","../src/DailyLearning.ts","../src/hallel.ts","../src/tachanun.ts","../src/getStartAndEnd.ts","../src/calendar.ts","../src/hebcal.ts"],"sourcesContent":["/** DO NOT EDIT THIS AUTO-GENERATED FILE! */\nexport const version = '5.9.2';\n","export default {\"headers\":{\"plural-forms\":\"nplurals=2; plural=(n > 1);\",\"language\":\"en_CA@ashkenazi\"},\"contexts\":{\"\":{\"Shabbat\":[\"Shabbos\"],\"Achrei Mot\":[\"Achrei Mos\"],\"Bechukotai\":[\"Bechukosai\"],\"Beha'alotcha\":[\"Beha’aloscha\"],\"Bereshit\":[\"Bereshis\"],\"Chukat\":[\"Chukas\"],\"Erev Shavuot\":[\"Erev Shavuos\"],\"Erev Sukkot\":[\"Erev Sukkos\"],\"Ki Tavo\":[\"Ki Savo\"],\"Ki Teitzei\":[\"Ki Seitzei\"],\"Ki Tisa\":[\"Ki Sisa\"],\"Matot\":[\"Matos\"],\"Purim Katan\":[\"Purim Koton\"],\"Shabbat Chazon\":[\"Shabbos Chazon\"],\"Shabbat HaChodesh\":[\"Shabbos HaChodesh\"],\"Shabbat HaGadol\":[\"Shabbos HaGadol\"],\"Shabbat Nachamu\":[\"Shabbos Nachamu\"],\"Shabbat Parah\":[\"Shabbos Parah\"],\"Shabbat Shekalim\":[\"Shabbos Shekalim\"],\"Shabbat Shuva\":[\"Shabbos Shuvah\"],\"Shabbat Zachor\":[\"Shabbos Zachor\"],\"Shavuot\":[\"Shavuos\"],\"Shavuot I\":[\"Shavuos I\"],\"Shavuot II\":[\"Shavuos II\"],\"Shemot\":[\"Shemos\"],\"Shmini Atzeret\":[\"Shmini Atzeres\"],\"Simchat Torah\":[\"Simchas Torah\"],\"Sukkot\":[\"Sukkos\"],\"Sukkot I\":[\"Sukkos I\"],\"Sukkot II\":[\"Sukkos II\"],\"Sukkot II (CH''M)\":[\"Sukkos II (CH’’M)\"],\"Sukkot III (CH''M)\":[\"Sukkos III (CH’’M)\"],\"Sukkot IV (CH''M)\":[\"Sukkos IV (CH’’M)\"],\"Sukkot V (CH''M)\":[\"Sukkos V (CH’’M)\"],\"Sukkot VI (CH''M)\":[\"Sukkos VI (CH’’M)\"],\"Sukkot VII (Hoshana Raba)\":[\"Sukkos VII (Hoshana Raba)\"],\"Ta'anit Bechorot\":[\"Ta’anis Bechoros\"],\"Ta'anit Esther\":[\"Ta’anis Esther\"],\"Toldot\":[\"Toldos\"],\"Vaetchanan\":[\"Vaeschanan\"],\"Yitro\":[\"Yisro\"],\"Vezot Haberakhah\":[\"Vezos Haberakhah\"],\"Parashat\":[\"Parshas\"],\"Leil Selichot\":[\"Leil Selichos\"],\"Shabbat Mevarchim Chodesh\":[\"Shabbos Mevorchim Chodesh\"],\"Shabbat Shirah\":[\"Shabbos Shirah\"],\"Asara B'Tevet\":[\"Asara B’Teves\"],\"Alot HaShachar\":[\"Alos HaShachar\"],\"Kriat Shema, sof zeman\":[\"Krias Shema, sof zman\"],\"Tefilah, sof zeman\":[\"Tefilah, sof zman\"],\"Kriat Shema, sof zeman (MGA)\":[\"Krias Shema, sof zman (MGA)\"],\"Tefilah, sof zeman (MGA)\":[\"Tefilah, sof zman (MGA)\"],\"Chatzot HaLailah\":[\"Chatzos HaLailah\"],\"Chatzot hayom\":[\"Chatzos\"],\"Tzeit HaKochavim\":[\"Tzeis HaKochavim\"],\"Birkat Hachamah\":[\"Birkas Hachamah\"],\"Shushan Purim Katan\":[\"Shushan Purim Koton\"]}}}","export default {\"headers\":{\"plural-forms\":\"nplurals=2; plural=(n > 1);\",\"language\":\"he_IL\"},\"contexts\":{\"\":{\"Shabbat\":[\"שַׁבָּת\"],\"Daf Yomi\":[\"דַף יוֹמִי\"],\"Parashat\":[\"פָּרָשַׁת\"],\"Achrei Mot\":[\"אַחֲרֵי מוֹת\"],\"Balak\":[\"בָּלָק\"],\"Bamidbar\":[\"בְּמִדְבַּר\"],\"Bechukotai\":[\"בְּחֻקֹּתַי\"],\"Beha'alotcha\":[\"בְּהַעֲלֹתְךָ\"],\"Behar\":[\"בְּהַר\"],\"Bereshit\":[\"בְּרֵאשִׁית\"],\"Beshalach\":[\"בְּשַׁלַּח\"],\"Bo\":[\"בֹּא\"],\"Chayei Sara\":[\"חַיֵּי שָֹרָה\"],\"Chukat\":[\"חֻקַּת\"],\"Devarim\":[\"דְּבָרִים\"],\"Eikev\":[\"עֵקֶב\"],\"Emor\":[\"אֱמוֹר\"],\"Ha'azinu\":[\"הַאֲזִינוּ\"],\"Kedoshim\":[\"קְדשִׁים\"],\"Ki Tavo\":[\"כִּי־תָבוֹא\"],\"Ki Teitzei\":[\"כִּי־תֵצֵא\"],\"Ki Tisa\":[\"כִּי תִשָּׂא\"],\"Korach\":[\"קוֹרַח\"],\"Lech-Lecha\":[\"לֶךְ־לְךָ\"],\"Masei\":[\"מַסְעֵי\"],\"Matot\":[\"מַּטּוֹת\"],\"Metzora\":[\"מְּצֹרָע\"],\"Miketz\":[\"מִקֵּץ\"],\"Mishpatim\":[\"מִּשְׁפָּטִים\"],\"Nasso\":[\"נָשׂא\"],\"Nitzavim\":[\"נִצָּבִים\"],\"Noach\":[\"נֹחַ\"],\"Pekudei\":[\"פְקוּדֵי\"],\"Pinchas\":[\"פִּינְחָס\"],\"Re'eh\":[\"רְאֵה\"],\"Sh'lach\":[\"שְׁלַח־לְךָ\"],\"Shemot\":[\"שְׁמוֹת\"],\"Shmini\":[\"שְּׁמִינִי\"],\"Shoftim\":[\"שׁוֹפְטִים\"],\"Tazria\":[\"תַזְרִיעַ\"],\"Terumah\":[\"תְּרוּמָה\"],\"Tetzaveh\":[\"תְּצַוֶּה\"],\"Toldot\":[\"תּוֹלְדוֹת\"],\"Tzav\":[\"צַו\"],\"Vaera\":[\"וָאֵרָא\"],\"Vaetchanan\":[\"וָאֶתְחַנַּן\"],\"Vayakhel\":[\"וַיַּקְהֵל\"],\"Vayechi\":[\"וַיְחִי\"],\"Vayeilech\":[\"וַיֵּלֶךְ\"],\"Vayera\":[\"וַיֵּרָא\"],\"Vayeshev\":[\"וַיֵּשֶׁב\"],\"Vayetzei\":[\"וַיֵּצֵא\"],\"Vayigash\":[\"וַיִּגַּשׁ\"],\"Vayikra\":[\"וַיִּקְרָא\"],\"Vayishlach\":[\"וַיִּשְׁלַח\"],\"Vezot Haberakhah\":[\"וְזֹאת הַבְּרָכָה\"],\"Yitro\":[\"יִתְרוֹ\"],\"Asara B'Tevet\":[\"עֲשָׂרָה בְּטֵבֵת\"],\"Candle lighting\":[\"הַדְלָקַת נֵרוֹת\"],\"Chanukah\":[\"חֲנוּכָּה\"],\"Chanukah: 1 Candle\":[\"חֲנוּכָּה: א׳ נֵר\"],\"Chanukah: 2 Candles\":[\"חֲנוּכָּה: ב׳ נֵרוֹת\"],\"Chanukah: 3 Candles\":[\"חֲנוּכָּה: ג׳ נֵרוֹת\"],\"Chanukah: 4 Candles\":[\"חֲנוּכָּה: ד׳ נֵרוֹת\"],\"Chanukah: 5 Candles\":[\"חֲנוּכָּה: ה׳ נֵרוֹת\"],\"Chanukah: 6 Candles\":[\"חֲנוּכָּה: ו׳ נֵרוֹת\"],\"Chanukah: 7 Candles\":[\"חֲנוּכָּה: ז׳ נֵרוֹת\"],\"Chanukah: 8 Candles\":[\"חֲנוּכָּה: ח׳ נֵרוֹת\"],\"Chanukah: 8th Day\":[\"חֲנוּכָּה: יוֹם ח׳\"],\"Days of the Omer\":[\"סְפִירַת הָעוֹמֶר\"],\"Omer\":[\"עוֹמֶר\"],\"day of the Omer\":[\"בָּעוֹמֶר\"],\"Erev Pesach\":[\"עֶרֶב פֶּסַח\"],\"Erev Purim\":[\"עֶרֶב פּוּרִים\"],\"Erev Rosh Hashana\":[\"עֶרֶב רֹאשׁ הַשָּׁנָה\"],\"Erev Shavuot\":[\"עֶרֶב שָׁבוּעוֹת\"],\"Erev Simchat Torah\":[\"עֶרֶב שִׂמְחַת תּוֹרָה\"],\"Erev Sukkot\":[\"עֶרֶב סוּכּוֹת\"],\"Erev Tish'a B'Av\":[\"עֶרֶב תִּשְׁעָה בְּאָב\"],\"Erev Yom Kippur\":[\"עֶרֶב יוֹם כִּפּוּר\"],\"Havdalah\":[\"הַבְדָּלָה\"],\"Lag BaOmer\":[\"ל״ג בָּעוֹמֶר\"],\"Leil Selichot\":[\"סליחות\"],\"Pesach\":[\"פֶּסַח\"],\"Pesach I\":[\"פֶּסַח א׳\"],\"Pesach II\":[\"פֶּסַח ב׳\"],\"Pesach II (CH''M)\":[\"פֶּסַח ב׳ (חוה״מ)\"],\"Pesach III (CH''M)\":[\"פֶּסַח ג׳ (חוה״מ)\"],\"Pesach IV (CH''M)\":[\"פֶּסַח ד׳ (חוה״מ)\"],\"Pesach Sheni\":[\"פֶּסַח שני\"],\"Pesach V (CH''M)\":[\"פֶּסַח ה׳ (חוה״מ)\"],\"Pesach VI (CH''M)\":[\"פֶּסַח ו׳ (חוה״מ)\"],\"Pesach VII\":[\"פֶּסַח ז׳\"],\"Pesach VIII\":[\"פֶּסַח ח׳\"],\"Purim\":[\"פּוּרִים\"],\"Purim Katan\":[\"פּוּרִים קָטָן\"],\"Rosh Chodesh %s\":[\"רֹאשׁ חוֹדֶשׁ %s\"],\"Rosh Chodesh\":[\"רֹאשׁ חוֹדֶשׁ\"],\"Rosh Hashana\":[\"רֹאשׁ הַשָּׁנָה\"],\"Rosh Hashana I\":[\"רֹאשׁ הַשָּׁנָה א׳\"],\"Rosh Hashana II\":[\"רֹאשׁ הַשָּׁנָה ב׳\"],\"Shabbat Chazon\":[\"שַׁבָּת חֲזוֹן\"],\"Shabbat HaChodesh\":[\"שַׁבָּת הַחֹדֶשׁ\"],\"Shabbat HaGadol\":[\"שַׁבָּת הַגָּדוֹל\"],\"Shabbat Nachamu\":[\"שַׁבָּת נַחֲמוּ\"],\"Shabbat Parah\":[\"שַׁבָּת פּרה\"],\"Shabbat Shekalim\":[\"שַׁבָּת שְׁקָלִים\"],\"Shabbat Shuva\":[\"שַׁבָּת שׁוּבָה\"],\"Shabbat Zachor\":[\"שַׁבָּת זָכוֹר\"],\"Shavuot\":[\"שָׁבוּעוֹת\"],\"Shavuot I\":[\"שָׁבוּעוֹת א׳\"],\"Shavuot II\":[\"שָׁבוּעוֹת ב׳\"],\"Shmini Atzeret\":[\"שְׁמִינִי עֲצֶרֶת\"],\"Shushan Purim\":[\"שׁוּשָׁן פּוּרִים\"],\"Sigd\":[\"סיגד\"],\"Simchat Torah\":[\"שִׂמְחַת תּוֹרָה\"],\"Sukkot\":[\"סוּכּוֹת\"],\"Sukkot I\":[\"סוּכּוֹת א׳\"],\"Sukkot II\":[\"סוּכּוֹת ב׳\"],\"Sukkot II (CH''M)\":[\"סוּכּוֹת ב׳ (חוה״מ)\"],\"Sukkot III (CH''M)\":[\"סוּכּוֹת ג׳ (חוה״מ)\"],\"Sukkot IV (CH''M)\":[\"סוּכּוֹת ד׳ (חוה״מ)\"],\"Sukkot V (CH''M)\":[\"סוּכּוֹת ה׳ (חוה״מ)\"],\"Sukkot VI (CH''M)\":[\"סוּכּוֹת ו׳ (חוה״מ)\"],\"Sukkot VII (Hoshana Raba)\":[\"סוּכּוֹת ז׳ (הוֹשַׁעְנָא רַבָּה)\"],\"Ta'anit Bechorot\":[\"תַּעֲנִית בְּכוֹרוֹת\"],\"Ta'anit Esther\":[\"תַּעֲנִית אֶסְתֵּר\"],\"Tish'a B'Av\":[\"תִּשְׁעָה בְּאָב\"],\"Tu B'Av\":[\"טוּ בְּאָב\"],\"Tu BiShvat\":[\"טוּ בִּשְׁבָט\"],\"Tu B'Shvat\":[\"טוּ בִּשְׁבָט\"],\"Tzom Gedaliah\":[\"צוֹם גְּדַלְיָה\"],\"Tzom Tammuz\":[\"צוֹם תָּמוּז\"],\"Yom HaAtzma'ut\":[\"יוֹם הָעַצְמָאוּת\"],\"Yom HaShoah\":[\"יוֹם הַשּׁוֹאָה\"],\"Yom HaZikaron\":[\"יוֹם הַזִּכָּרוֹן\"],\"Yom Kippur\":[\"יוֹם כִּפּוּר\"],\"Yom Yerushalayim\":[\"יוֹם יְרוּשָׁלַיִם\"],\"Yom HaAliyah\":[\"יוֹם הַעֲלִיָּה\"],\"Yom HaAliyah School Observance\":[\"שְׁמִירָת בֵּית הַסֵפֶר לְיוֹם הַעֲלִיָּה\"],\"Rosh Chodesh Adar\":[\"רֹאשׁ חוֹדֶשׁ אַדָר\"],\"Rosh Chodesh Adar I\":[\"רֹאשׁ חוֹדֶשׁ אַדָר א׳\"],\"Rosh Chodesh Adar II\":[\"רֹאשׁ חוֹדֶשׁ אַדָר ב׳\"],\"Rosh Chodesh Av\":[\"רֹאשׁ חוֹדֶשׁ אָב\"],\"Rosh Chodesh Cheshvan\":[\"רֹאשׁ חוֹדֶשׁ חֶשְׁוָן\"],\"Rosh Chodesh Elul\":[\"רֹאשׁ חוֹדֶשׁ אֱלוּל\"],\"Rosh Chodesh Iyyar\":[\"רֹאשׁ חוֹדֶשׁ אִיָיר\"],\"Rosh Chodesh Kislev\":[\"רֹאשׁ חוֹדֶשׁ כִּסְלֵו\"],\"Rosh Chodesh Nisan\":[\"רֹאשׁ חוֹדֶשׁ נִיסָן\"],\"Rosh Chodesh Sh'vat\":[\"רֹאשׁ חוֹדֶשׁ שְׁבָט\"],\"Rosh Chodesh Sivan\":[\"רֹאשׁ חוֹדֶשׁ סִיוָן\"],\"Rosh Chodesh Tamuz\":[\"רֹאשׁ חוֹדֶשׁ תָּמוּז\"],\"Rosh Chodesh Tevet\":[\"רֹאשׁ חוֹדֶשׁ טֵבֵת\"],\"min\":[\"דַּקּוֹת\"],\"Fast begins\":[\"תחילת הַצוֹם\"],\"Fast ends\":[\"סִיּוּם הַצוֹם\"],\"Rosh Hashana LaBehemot\":[\"רֹאשׁ הַשָּׁנָה לְמַעְשַׂר בְּהֵמָה\"],\"Tish'a B'Av (observed)\":[\"תִּשְׁעָה בְּאָב נִדחֶה\"],\"Shabbat Mevarchim Chodesh\":[\"שַׁבָּת מְבָרְכִים חוֹדֶשׁ\"],\"Shabbat Shirah\":[\"שַׁבָּת שִׁירָה\"],\"Chatzot HaLailah\":[\"חֲצוֹת הַלַיְלָה\"],\"Alot haShachar\":[\"עֲלוֹת הַשַּׁחַר\"],\"Misheyakir\":[\"מִשֶּׁיַּכִּיר\"],\"Misheyakir Machmir\":[\"מִשֶּׁיַּכִּיר מַחמִיר\"],\"Dawn\":[\"דִּימְדּוּמֵי בּוֹקֵר\"],\"Sunrise\":[\"הַנֵץ הַחַמָּה\"],\"Kriat Shema, sof zeman\":[\"סוֹף זְמַן קְרִיאַת שְׁמַע גר״א\"],\"Tefilah, sof zeman\":[\"סוֹף זְמַן תְּפִלָּה גר״א\"],\"Kriat Shema, sof zeman (MGA)\":[\"סוֹף זְמַן קְרִיאַת שְׁמַע מג״א\"],\"Tefilah, sof zeman (MGA)\":[\"סוֹף זְמַן תְּפִלָּה מג״א\"],\"Chatzot hayom\":[\"חֲצוֹת הַיּוֹם\"],\"Mincha Gedolah\":[\"מִנְחָה גְּדוֹלָה\"],\"Mincha Ketanah\":[\"מִנְחָה קְטַנָּה\"],\"Plag HaMincha\":[\"פְּלַג הַמִּנְחָה\"],\"Dusk\":[\"דִּימְדּוּמֵי עֶרֶב\"],\"Sunset\":[\"שְׁקִיעָה\"],\"Nightfall - End of ordained fasts\":[\"לַיְלָה - גמר תעניות דרבנן\"],\"Tzeit HaKochavim\":[\"צֵאת הַכּוֹכָבִים\"],\"Lovingkindness\":[\"חֶֽסֶד\"],\"Might\":[\"גְבוּרָה\"],\"Beauty\":[\"תִּפאֶרֶת\"],\"Eternity\":[\"נֶּֽצַח\"],\"Splendor\":[\"הוֹד\"],\"Foundation\":[\"יְּסוֹד\"],\"Majesty\":[\"מַּלְכוּת\"],\"day\":[\"יוֹם\"],\"Yom Kippur Katan\":[\"יוֹם כִּפּוּר קָטָן\"],\"Yizkor\":[\"יִזְכּוֹר\"],\"Family Day\":[\"יוֹם הַמִּשׁפָּחָה\"],\"Yitzhak Rabin Memorial Day\":[\"יוֹם הַזִּכָּרוֹן ליצחק רבין\"],\"Jabotinsky Day\":[\"יוֹם ז׳בוטינסקי\"],\"Herzl Day\":[\"יוֹם הרצל\"],\"Ben-Gurion Day\":[\"יוֹם בן־גוריון\"],\"Hebrew Language Day\":[\"יוֹם הַשָׂפָה הַעִברִית\"],\"Birkat Hachamah\":[\"בִרְכַּת הַחַמָּה\"],\"Shushan Purim Katan\":[\"שׁוּשָׁן פּוּרִים קָטָן\"],\"Purim Meshulash\":[\"פּוּרִים מְשׁוּלָּשׁ\"],\"after sunset\":[\"לְאַחַר הַשְׁקִיעָה\"],\"Yerushalmi\":[\"יְרוּשַׁלְמִי\"],\"Chag HaBanot\":[\"חַג הַבָּנוֹת\"],\"Joshua\":[\"יְהוֹשׁוּעַ\"],\"Judges\":[\"שׁוֹפְטִים\"],\"I Samuel\":[\"שְׁמוּאֵל רִאשׁוֹן\"],\"II Samuel\":[\"שְׁמוּאֵל שֵׁנִי\"],\"I Kings\":[\"מְלָכִים רִאשׁוֹן\"],\"II Kings\":[\"מְלָכִים שֵׁנִי\"],\"Isaiah\":[\"יְשַׁעְיָהוּ\"],\"Jeremiah\":[\"יִרְמְיָהוּ\"],\"Ezekiel\":[\"יְחֶזְקֵאל\"],\"Hosea\":[\"הוֹשֵׁעַ\"],\"Joel\":[\"יוֹאֵל\"],\"Amos\":[\"עָמוּס\"],\"Obadiah\":[\"עוֹבַדְיָה\"],\"Jonah\":[\"יוֹנָה\"],\"Micah\":[\"מִיכָה\"],\"Nachum\":[\"נַחוּם\"],\"Habakkuk\":[\"חֲבַקּוּק\"],\"Zephaniah\":[\"צְפַנְיָה\"],\"Haggai\":[\"חַגַּי\"],\"Zechariah\":[\"זְכַרְיָה\"],\"Malachi\":[\"מַלְאָכִי\"],\"Psalms\":[\"תְּהִלִּים\"],\"Proverbs\":[\"מִשְׁלֵי\"],\"Job\":[\"אִיּוֹב\"],\"Song of Songs\":[\"שִׁיר הַשִּׁירִים\"],\"Ruth\":[\"רוּת\"],\"Lamentations\":[\"אֵיכָה\"],\"Ecclesiastes\":[\"קֹהֶלֶת\"],\"Esther\":[\"אֶסְתֵּר\"],\"Daniel\":[\"דָּנִיֵּאל\"],\"Ezra\":[\"עֶזְרָא\"],\"Nehemiah\":[\"נְחֶמְיָה\"],\"I Chronicles\":[\"דִברֵי הַיָמִים רִאשׁוֹן\"],\"II Chronicles\":[\"דִברֵי הַיָמִים שֵׁנִי\"],\"Molad\":[\"מוֹלָד הָלְּבָנָה\"],\"chalakim\":[\"חֲלָקִים\"],\"Pirkei Avot\":[\"פִּרְקֵי אָבוֹת\"]}}}","import {Locale, LocaleData, StringArrayMap} from '@hebcal/hdate';\nimport poAshkenazi from './ashkenazi.po';\nimport poHe from './he.po';\n\nexport {Locale};\n\nLocale.addTranslations('he', poHe);\nLocale.addTranslations('h', poHe);\nLocale.addTranslations('ashkenazi', poAshkenazi);\nLocale.addTranslations('a', poAshkenazi);\n\n/* Hebrew without nikkud */\nconst heStrs = poHe.contexts[''];\nconst heNoNikud: StringArrayMap = {};\nfor (const [key, val] of Object.entries(heStrs)) {\n heNoNikud[key] = [Locale.hebrewStripNikkud(val[0])];\n}\nconst poHeNoNikud: LocaleData = {\n headers: poHe.headers,\n contexts: {'': heNoNikud},\n} as const;\nLocale.addTranslations('he-x-NoNikud', poHeNoNikud);\n","import {HDate, Locale} from '@hebcal/hdate';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Holiday flags for Event. These flags are typically\n * combined using bitwise arithmetic to form a mask.\n * @readonly\n * @enum {number}\n */\nexport const flags = {\n /** Chag, yontiff, yom tov */\n CHAG: 0x000001,\n /** Light candles 18 minutes before sundown */\n LIGHT_CANDLES: 0x000002,\n /** End of holiday (end of Yom Tov) */\n YOM_TOV_ENDS: 0x000004,\n /** Observed only in the Diaspora (chutz l'aretz) */\n CHUL_ONLY: 0x000008,\n /** Observed only in Israel */\n IL_ONLY: 0x000010,\n /** Light candles in the evening at Tzeit time (3 small stars) */\n LIGHT_CANDLES_TZEIS: 0x000020,\n /** Candle-lighting for Chanukah */\n CHANUKAH_CANDLES: 0x000040,\n /** Rosh Chodesh, beginning of a new Hebrew month */\n ROSH_CHODESH: 0x000080,\n /** Minor fasts like Tzom Tammuz, Ta'anit Esther, ... */\n MINOR_FAST: 0x000100,\n /** Shabbat Shekalim, Zachor, ... */\n SPECIAL_SHABBAT: 0x000200,\n /** Weekly sedrot on Saturdays */\n PARSHA_HASHAVUA: 0x000400,\n /** Daily page of Talmud (Bavli) */\n DAF_YOMI: 0x000800,\n /** Days of the Omer */\n OMER_COUNT: 0x001000,\n /** Yom HaShoah, Yom HaAtzma'ut, ... */\n MODERN_HOLIDAY: 0x002000,\n /** Yom Kippur and Tish'a B'Av */\n MAJOR_FAST: 0x004000,\n /** On the Saturday before Rosh Chodesh */\n SHABBAT_MEVARCHIM: 0x008000,\n /** Molad */\n MOLAD: 0x010000,\n /** Yahrzeit or Hebrew Anniversary */\n USER_EVENT: 0x020000,\n /** Daily Hebrew date (\"11th of Sivan, 5780\") */\n HEBREW_DATE: 0x040000,\n /** A holiday that's not major, modern, rosh chodesh, or a fast day */\n MINOR_HOLIDAY: 0x080000,\n /** Evening before a major or minor holiday */\n EREV: 0x100000,\n /** Chol haMoed, intermediate days of Pesach or Sukkot */\n CHOL_HAMOED: 0x200000,\n /** Mishna Yomi */\n MISHNA_YOMI: 0x400000,\n /** Yom Kippur Katan, minor day of atonement on the day preceeding each Rosh Chodesh */\n YOM_KIPPUR_KATAN: 0x800000,\n /** Daily page of Jerusalem Talmud (Yerushalmi) */\n YERUSHALMI_YOMI: 0x1000000,\n /** Nach Yomi */\n NACH_YOMI: 0x2000000,\n /** Daily Learning */\n DAILY_LEARNING: 0x4000000,\n /** Yizkor */\n YIZKOR: 0x8000000,\n} as const;\n\nconst flagToCategory = [\n [flags.MAJOR_FAST, 'holiday', 'major', 'fast'],\n [flags.CHANUKAH_CANDLES, 'holiday', 'major'],\n [flags.HEBREW_DATE, 'hebdate'],\n [flags.MINOR_FAST, 'holiday', 'fast'],\n [flags.MINOR_HOLIDAY, 'holiday', 'minor'],\n [flags.MODERN_HOLIDAY, 'holiday', 'modern'],\n [flags.MOLAD, 'molad'],\n [flags.OMER_COUNT, 'omer'],\n [flags.PARSHA_HASHAVUA, 'parashat'], // backwards-compat\n [flags.ROSH_CHODESH, 'roshchodesh'],\n [flags.SHABBAT_MEVARCHIM, 'mevarchim'],\n [flags.SPECIAL_SHABBAT, 'holiday', 'shabbat'],\n [flags.USER_EVENT, 'user'],\n [flags.YIZKOR, 'yizkor'],\n] as const;\n\n/**\n * Represents an Event with a title, date, and flags.\n *\n * Events are used to represent holidays, candle-lighting times,\n * Torah readings, and more.\n *\n * To get the title of the event a language other than English\n * with Sephardic transliterations, use the `render()` method.\n */\nexport class Event {\n /** Hebrew date of this event */\n readonly date: HDate;\n /**\n * Untranslated title of this event. Note that these description\n * strings are always in English and will remain stable across releases.\n * To get the title of the event in another language, use the\n * `render()` method.\n */\n readonly desc: string;\n /** Bitmask of optional event flags. See {@link flags} */\n readonly mask: number;\n /** Optional emoji character such as ✡️, 🕯️, 🕎, 🕍, 🌒 */\n emoji?: string;\n /** Optional longer description or memo text */\n memo?: string;\n /** Alarms are used by iCalendar feeds */\n alarm?: Date | string | boolean;\n /**\n * Constructs Event\n * @param date Hebrew date event occurs\n * @param desc Description (not translated)\n * @param [mask=0] optional bitmask of holiday flags (see {@link flags})\n * @param [attrs={}] optional additional attributes (e.g. `eventTimeStr`, `cholHaMoedDay`)\n */\n constructor(date: HDate, desc: string, mask = 0, attrs?: object) {\n if (!HDate.isHDate(date)) {\n throw new TypeError(`Invalid Event date: ${date}`);\n } else if (typeof desc !== 'string') {\n throw new TypeError(`Invalid Event description: ${desc}`);\n }\n this.date = date;\n this.desc = desc;\n this.mask = +mask;\n if (typeof attrs === 'object' && attrs !== null) {\n Object.assign(this, attrs);\n }\n }\n /**\n * Hebrew date of this event\n */\n getDate(): HDate {\n return this.date;\n }\n /**\n * Untranslated title of this event. Note that these description\n * strings are always in English and will remain stable across releases.\n * To get the title of the event in another language, use the\n * `render()` method.\n */\n getDesc(): string {\n return this.desc;\n }\n /**\n * Bitmask of optional event flags. See {@link flags}\n */\n getFlags(): number {\n return this.mask;\n }\n /**\n * Returns (translated) description of this event\n * @example\n * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);\n * ev.render('en'); // 'Shavuot'\n * ev.render('he'); // 'שָׁבוּעוֹת'\n * ev.render('ashkenazi'); // 'Shavuos'\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return Locale.gettext(this.desc, locale);\n }\n /**\n * Returns a brief (translated) description of this event.\n * For most events, this is the same as render(). For some events, it procudes\n * a shorter text (e.g. without a time or added description).\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n return this.render(locale);\n }\n /**\n * Optional holiday-specific Emoji or `null`.\n */\n getEmoji(): string | null {\n return this.emoji || null;\n }\n /**\n * Returns a simplified (untranslated) description for this event. For example,\n * the `HolidayEvent` class supports\n * \"Erev Pesach\" => \"Pesach\", and \"Sukkot III (CH''M)\" => \"Sukkot\".\n * For many holidays the basename and the event description are the same.\n */\n basename(): string {\n return this.getDesc();\n }\n /**\n * Returns a URL to hebcal.com or sefaria.org for more detail on the event.\n * Returns `undefined` for events with no detail page.\n */\n url(): string | undefined {\n return undefined;\n }\n /**\n * Is this event observed in Israel?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedInIsrael(); // false\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedInIsrael(); // true\n */\n observedInIsrael(): boolean {\n return !(this.mask & flags.CHUL_ONLY);\n }\n /**\n * Is this event observed in the Diaspora?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedInDiaspora(); // true\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedInDiaspora(); // true\n */\n observedInDiaspora(): boolean {\n return !(this.mask & flags.IL_ONLY);\n }\n /**\n * Is this event observed in Israel/Diaspora?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedIn(false); // true\n * ev1.observedIn(true); // false\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedIn(false); // true\n * ev2.observedIn(true); // true\n * @param il\n */\n observedIn(il: boolean): boolean {\n return il ? this.observedInIsrael() : this.observedInDiaspora();\n }\n /**\n * Makes a clone of this Event object\n * @deprecated\n */\n clone(): Event {\n const ev = new Event(this.date, this.desc, this.mask);\n // overwrite all enumerable properties\n Object.assign(ev, this);\n return ev;\n }\n /**\n * Returns a list of event categories\n */\n getCategories(): string[] {\n const mask = this.getFlags();\n for (const attrs of flagToCategory) {\n const attr0 = attrs[0] as number;\n if (mask & attr0) {\n return attrs.slice(1) as string[];\n }\n }\n return ['unknown'];\n }\n}\n","import {HDate, gematriya, months, Locale} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Daily Hebrew date (\"11th of Sivan, 5780\") */\nexport class HebrewDateEvent extends Event {\n /**\n * @param date\n */\n constructor(date: HDate) {\n super(date, date.toString(), flags.HEBREW_DATE);\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n * @example\n * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n *\n * const hd = new HDate(15, months.CHESHVAN, 5769);\n * const ev = new HebrewDateEvent(hd);\n * console.log(ev.render('en')); // '15th of Cheshvan, 5769'\n * console.log(ev.render('he')); // 'ט״ו חֶשְׁוָן תשס״ט'\n */\n render(locale?: string): string {\n const locale1 = locale?.toLowerCase();\n const locale0 = locale1 ?? Locale.getLocaleName();\n const hd = this.getDate();\n switch (locale0) {\n case 'h':\n case 'he':\n return hd.renderGematriya(false);\n case 'he-x-nonikud':\n return hd.renderGematriya(true);\n default:\n return hd.render(locale0, true);\n }\n }\n /**\n * @private\n * @param locale\n */\n private renderBriefHebrew(locale: string): string {\n const hd = this.getDate();\n const dd = hd.getDate();\n const mm = Locale.gettext(hd.getMonthName(), locale);\n return gematriya(dd) + ' ' + mm;\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n * @example\n * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n *\n * const hd = new HDate(15, months.CHESHVAN, 5769);\n * const ev = new HebrewDateEvent(hd);\n * console.log(ev.renderBrief()); // '15th of Cheshvan'\n * console.log(ev.renderBrief('he')); // 'ט״ו חֶשְׁוָן'\n */\n renderBrief(locale?: string): string {\n const locale1 = locale?.toLowerCase();\n const locale0 = locale1 ?? Locale.getLocaleName();\n const hd = this.getDate();\n if (hd.getMonth() === months.TISHREI && hd.getDate() === 1) {\n return this.render(locale0);\n }\n switch (locale0) {\n case 'h':\n case 'he':\n case 'he-x-nonikud':\n return this.renderBriefHebrew(locale0);\n default:\n return hd.render(locale0, false);\n }\n }\n}\n","/*\n Hebcal - A Jewish Calendar Generator\n Copyright (c) 1994-2020 Danny Sadinoff\n Portions copyright Eyal Schachter and Michael J. Radwin\n\n https://github.com/hebcal/hebcal-es6\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU General Public License\n as published by the Free Software Foundation; either version 2\n of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {GeoLocation} from '@hebcal/noaa';\n\nconst classicCities0: [string, string, number, number, string, number][] = [\n ['Ashdod', 'IL', 31.79213, 34.64966, 'Asia/Jerusalem', 27],\n ['Atlanta', 'US', 33.749, -84.38798, 'America/New_York', 336],\n ['Austin', 'US', 30.26715, -97.74306, 'America/Chicago', 165],\n ['Baghdad', 'IQ', 33.34058, 44.40088, 'Asia/Baghdad', 41],\n ['Beer Sheva', 'IL', 31.25181, 34.7913, 'Asia/Jerusalem', 285],\n ['Berlin', 'DE', 52.52437, 13.41053, 'Europe/Berlin', 43],\n ['Baltimore', 'US', 39.29038, -76.61219, 'America/New_York', 35],\n ['Bogota', 'CO', 4.60971, -74.08175, 'America/Bogota', 2582],\n ['Boston', 'US', 42.35843, -71.05977, 'America/New_York', 38],\n ['Budapest', 'HU', 47.49801, 19.03991, 'Europe/Budapest', 104],\n [\n 'Buenos Aires',\n 'AR',\n -34.61315,\n -58.37723,\n 'America/Argentina/Buenos_Aires',\n 31,\n ],\n ['Buffalo', 'US', 42.88645, -78.87837, 'America/New_York', 191],\n ['Chicago', 'US', 41.85003, -87.65005, 'America/Chicago', 180],\n ['Cincinnati', 'US', 39.162, -84.45689, 'America/New_York', 267],\n ['Cleveland', 'US', 41.4995, -81.69541, 'America/New_York', 204],\n ['Dallas', 'US', 32.78306, -96.80667, 'America/Chicago', 139],\n ['Denver', 'US', 39.73915, -104.9847, 'America/Denver', 1636],\n ['Detroit', 'US', 42.33143, -83.04575, 'America/Detroit', 192],\n ['Eilat', 'IL', 29.55805, 34.94821, 'Asia/Jerusalem', 63],\n ['Gibraltar', 'GI', 36.14474, -5.35257, 'Europe/Gibraltar', 11],\n ['Haifa', 'IL', 32.81841, 34.9885, 'Asia/Jerusalem', 40],\n ['Hawaii', 'US', 21.30694, -157.85833, 'Pacific/Honolulu', 18],\n ['Helsinki', 'FI', 60.16952, 24.93545, 'Europe/Helsinki', 26],\n ['Houston', 'US', 29.76328, -95.36327, 'America/Chicago', 30],\n ['Jerusalem', 'IL', 31.76904, 35.21633, 'Asia/Jerusalem', 786],\n ['Johannesburg', 'ZA', -26.20227, 28.04363, 'Africa/Johannesburg', 1767],\n ['Kiev', 'UA', 50.45466, 30.5238, 'Europe/Kiev', 187],\n ['La Paz', 'BO', -16.5, -68.15, 'America/La_Paz', 3782],\n ['Livingston', 'US', 40.79593, -74.31487, 'America/New_York', 98],\n ['Las Vegas', 'US', 36.17497, -115.13722, 'America/Los_Angeles', 613],\n ['London', 'GB', 51.50853, -0.12574, 'Europe/London', 25],\n ['Los Angeles', 'US', 34.05223, -118.24368, 'America/Los_Angeles', 96],\n ['Marseilles', 'FR', 43.29695, 5.38107, 'Europe/Paris', 28],\n ['Miami', 'US', 25.77427, -80.19366, 'America/New_York', 25],\n ['Minneapolis', 'US', 44.97997, -93.26384, 'America/Chicago', 262],\n ['Melbourne', 'AU', -37.814, 144.96332, 'Australia/Melbourne', 25],\n ['Mexico City', 'MX', 19.42847, -99.12766, 'America/Mexico_City', 2240],\n ['Montreal', 'CA', 45.50884, -73.58781, 'America/Toronto', 216],\n ['Moscow', 'RU', 55.75222, 37.61556, 'Europe/Moscow', 144],\n ['New York', 'US', 40.71427, -74.00597, 'America/New_York', 57],\n ['Omaha', 'US', 41.25861, -95.93779, 'America/Chicago', 315],\n ['Ottawa', 'CA', 45.41117, -75.69812, 'America/Toronto', 71],\n ['Panama City', 'PA', 8.9936, -79.51973, 'America/Panama', 17],\n ['Paris', 'FR', 48.85341, 2.3488, 'Europe/Paris', 42],\n ['Pawtucket', 'US', 41.87871, -71.38256, 'America/New_York', 0], // -11\n ['Petach Tikvah', 'IL', 32.08707, 34.88747, 'Asia/Jerusalem', 54],\n ['Philadelphia', 'US', 39.95233, -75.16379, 'America/New_York', 8],\n ['Phoenix', 'US', 33.44838, -112.07404, 'America/Phoenix', 366],\n ['Pittsburgh', 'US', 40.44062, -79.99589, 'America/New_York', 239],\n ['Providence', 'US', 41.82399, -71.41283, 'America/New_York', 0], // -15\n ['Portland', 'US', 45.52345, -122.67621, 'America/Los_Angeles', 15],\n ['Saint Louis', 'US', 38.62727, -90.19789, 'America/Chicago', 149],\n ['Saint Petersburg', 'RU', 59.93863, 30.31413, 'Europe/Moscow', 11],\n ['San Diego', 'US', 32.71533, -117.15726, 'America/Los_Angeles', 20],\n ['San Francisco', 'US', 37.77493, -122.41942, 'America/Los_Angeles', 28],\n ['Sao Paulo', 'BR', -23.5475, -46.63611, 'America/Sao_Paulo', 769],\n ['Seattle', 'US', 47.60621, -122.33207, 'America/Los_Angeles', 56],\n ['Sydney', 'AU', -33.86785, 151.20732, 'Australia/Sydney', 58],\n ['Tel Aviv', 'IL', 32.08088, 34.78057, 'Asia/Jerusalem', 15],\n ['Tiberias', 'IL', 32.79221, 35.53124, 'Asia/Jerusalem', 0], // -140\n ['Toronto', 'CA', 43.70011, -79.4163, 'America/Toronto', 175],\n ['Vancouver', 'CA', 49.24966, -123.11934, 'America/Vancouver', 70],\n ['White Plains', 'US', 41.03399, -73.76291, 'America/New_York', 82],\n ['Washington DC', 'US', 38.89511, -77.03637, 'America/New_York', 6],\n ['Worcester', 'US', 42.26259, -71.80229, 'America/New_York', 164],\n];\nconst classicCities = new Map<string, Location>();\n\n// Zip-Codes.com TimeZone IDs\nconst ZIPCODES_TZ_MAP: Record<string, string> = {\n '0': 'UTC',\n '4': 'America/Puerto_Rico', // Atlantic (GMT -04:00)\n '5': 'America/New_York', // Eastern (GMT -05:00)\n '6': 'America/Chicago', // Central (GMT -06:00)\n '7': 'America/Denver', // Mountain (GMT -07:00)\n '8': 'America/Los_Angeles', // Pacific (GMT -08:00)\n '9': 'America/Anchorage', // Alaska (GMT -09:00)\n '10': 'Pacific/Honolulu', // Hawaii-Aleutian Islands (GMT -10:00)\n '11': 'Pacific/Pago_Pago', // American Samoa (GMT -11:00)\n '13': 'Pacific/Funafuti', // Marshall Islands (GMT +12:00)\n '14': 'Pacific/Guam', // Guam (GMT +10:00)\n '15': 'Pacific/Palau', // Palau (GMT +9:00)\n '16': 'Pacific/Chuuk', // Micronesia (GMT +11:00)\n} as const;\n\n/** @private */\nconst timeFormatCache = new Map<string, Intl.DateTimeFormat>();\n\n/**\n * Gets a 24-hour time formatter (e.g. 07:41 or 20:03) from cache\n * or makes a new one if needed\n * @private\n */\nfunction getFormatter(tzid: string): Intl.DateTimeFormat {\n const fmt = timeFormatCache.get(tzid);\n if (fmt) return fmt;\n const f = new Intl.DateTimeFormat('en-US', {\n timeZone: tzid,\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n });\n timeFormatCache.set(tzid, f);\n return f;\n}\n\n/** Class representing Location */\nexport class Location extends GeoLocation {\n private readonly il: boolean;\n private readonly cc?: string;\n private readonly geoid?: string | number;\n /**\n * Initialize a Location instance\n * @param latitude - Latitude as a decimal, valid range -90 thru +90 (e.g. 41.85003)\n * @param longitude - Longitude as a decimal, valid range -180 thru +180 (e.g. -87.65005)\n * @param il - in Israel (true) or Diaspora (false)\n * @param tzid - Olson timezone ID, e.g. \"America/Chicago\"\n * @param [cityName] - optional descriptive city name\n * @param [countryCode] - ISO 3166 alpha-2 country code (e.g. \"FR\")\n * @param [geoid] - optional string or numeric geographic ID\n * @param [elevation] - in meters (default `0`)\n */\n constructor(\n latitude: number,\n longitude: number,\n il: boolean,\n tzid: string,\n cityName?: string,\n countryCode?: string,\n geoid?: string | number,\n elevation?: number\n ) {\n const lat = typeof latitude === 'number' ? latitude : parseFloat(latitude);\n if (isNaN(lat) || lat < -90 || lat > 90) {\n throw new RangeError(`Latitude ${latitude} out of range [-90,90]`);\n }\n const long =\n typeof longitude === 'number' ? longitude : parseFloat(longitude);\n if (isNaN(long) || long < -180 || long > 180) {\n throw new RangeError(`Longitude ${longitude} out of range [-180,180]`);\n }\n const elev = typeof elevation === 'number' && elevation > 0 ? elevation : 0;\n super(cityName || null, lat, long, elev, tzid);\n this.il = Boolean(il);\n this.cc = countryCode;\n this.geoid = geoid;\n }\n\n getIsrael(): boolean {\n return this.il;\n }\n\n getName(): string | null {\n return this.getLocationName();\n }\n\n /**\n * Returns the location name, up to the first comma\n */\n getShortName(): string | null {\n const name = this.getLocationName();\n if (!name) return name;\n const comma = name.indexOf(', ');\n if (comma === -1) return name;\n if (this.cc === 'US' && name[comma + 2] === 'D') {\n if (name[comma + 3] === 'C') {\n return name.substring(0, comma + 4);\n } else if (name[comma + 3] === '.' && name[comma + 4] === 'C') {\n return name.substring(0, comma + 6);\n }\n }\n return name.substring(0, comma);\n }\n\n getCountryCode(): string | undefined {\n return this.cc;\n }\n\n getTzid(): string {\n return this.getTimeZone();\n }\n\n /**\n * Gets a 24-hour time formatter (e.g. 07:41 or 20:03) for this location\n */\n getTimeFormatter(): Intl.DateTimeFormat {\n return getFormatter(this.getTimeZone());\n }\n\n getGeoId(): string | number | undefined {\n return this.geoid;\n }\n\n /**\n * Creates a location object from one of 60 \"classic\" Hebcal city names.\n * The following city names are supported:\n * 'Ashdod', 'Atlanta', 'Austin', 'Baghdad', 'Beer Sheva',\n * 'Berlin', 'Baltimore', 'Bogota', 'Boston', 'Budapest',\n * 'Buenos Aires', 'Buffalo', 'Chicago', 'Cincinnati', 'Cleveland',\n * 'Dallas', 'Denver', 'Detroit', 'Eilat', 'Gibraltar', 'Haifa',\n * 'Hawaii', 'Helsinki', 'Houston', 'Jerusalem', 'Johannesburg',\n * 'Kiev', 'La Paz', 'Livingston', 'Las Vegas', 'London', 'Los Angeles',\n * 'Marseilles', 'Miami', 'Minneapolis', 'Melbourne', 'Mexico City',\n * 'Montreal', 'Moscow', 'New York', 'Omaha', 'Ottawa', 'Panama City',\n * 'Paris', 'Pawtucket', 'Petach Tikvah', 'Philadelphia', 'Phoenix',\n * 'Pittsburgh', 'Providence', 'Portland', 'Saint Louis', 'Saint Petersburg',\n * 'San Diego', 'San Francisco', 'Sao Paulo', 'Seattle', 'Sydney',\n * 'Tel Aviv', 'Tiberias', 'Toronto', 'Vancouver', 'White Plains',\n * 'Washington DC', 'Worcester'\n * @param name\n */\n static lookup(name: string): Location | undefined {\n return classicCities.get(name.toLowerCase());\n }\n\n toString(): string {\n return JSON.stringify(this);\n }\n\n /**\n * Converts legacy Hebcal timezone to a standard Olson tzid.\n * @param tz integer, GMT offset in hours\n * @param dst 'none', 'eu', 'usa', or 'israel'\n */\n static legacyTzToTzid(tz: number, dst: string): string | undefined {\n tz = +tz;\n if (dst === 'none') {\n if (tz === 0) {\n return 'UTC';\n } else {\n const plus = tz > 0 ? '+' : '';\n return `Etc/GMT${plus}${tz}`;\n }\n } else if (tz === 2 && dst === 'israel') {\n return 'Asia/Jerusalem';\n } else if (dst === 'eu') {\n switch (tz) {\n case -2:\n return 'Atlantic/Cape_Verde';\n case -1:\n return 'Atlantic/Azores';\n case 0:\n return 'Europe/London';\n case 1:\n return 'Europe/Paris';\n case 2:\n return 'Europe/Athens';\n default:\n break;\n }\n } else if (dst === 'usa') {\n return ZIPCODES_TZ_MAP[String(tz * -1)];\n }\n return undefined;\n }\n\n /**\n * Converts timezone info from Zip-Codes.com to a standard Olson tzid.\n * @example\n * Location.getUsaTzid('AZ', 7, 'Y') // 'America/Denver'\n * @param state two-letter all-caps US state abbreviation like 'CA'\n * @param tz positive number, 5=America/New_York, 8=America/Los_Angeles\n * @param dst single char 'Y' or 'N'\n */\n static getUsaTzid(state: string, tz: number, dst: string): string {\n tz = +tz;\n if (tz === 10 && state === 'AK') {\n return 'America/Adak';\n } else if (tz === 7 && state === 'AZ') {\n return dst === 'Y' ? 'America/Denver' : 'America/Phoenix';\n } else {\n return ZIPCODES_TZ_MAP[tz];\n }\n }\n\n /**\n * Adds a location name for `Location.lookup()` only if the name isn't\n * already being used. Returns `false` if the name is already taken\n * and `true` if successfully added.\n */\n static addLocation(cityName: string, location: Location): boolean {\n const name = cityName.toLowerCase();\n if (classicCities.has(name)) {\n return false;\n }\n classicCities.set(name, location);\n return true;\n }\n}\n\nfor (const city of classicCities0) {\n const location = new Location(\n city[2],\n city[3],\n city[1] === 'IL',\n city[4],\n city[0],\n city[1],\n undefined,\n city[5]\n );\n Location.addLocation(city[0], location);\n}\n","import 'temporal-polyfill/global';\nimport {GeoLocation, NOAACalculator} from '@hebcal/noaa';\nimport {\n HDate,\n getPseudoISO,\n getTimezoneOffset,\n isDate,\n pad2,\n} from '@hebcal/hdate';\n\n/**\n * @private\n */\nfunction zdtToDate(zdt: Temporal.ZonedDateTime | null): Date {\n if (zdt === null) {\n return new Date(NaN);\n }\n const res = new Date(zdt.epochMilliseconds);\n res.setMilliseconds(0);\n return res;\n}\n\nfunction getDate(date: Date | HDate): Date {\n if (isDate(date)) return date as Date;\n if (HDate.isHDate(date)) return (date as HDate).greg();\n throw new TypeError(`invalid date: ${date}`);\n}\n\n/**\n * Calculate halachic times (zmanim / זְמַנִּים) for a given day and location.\n * Calculations are available for tzeit / tzais (nightfall),\n * shkiah (sunset) and more.\n *\n * Zmanim are estimated using an algorithm published by the US National Oceanic\n * and Atmospheric Administration. The NOAA solar calculator is based on equations\n * from _Astronomical Algorithms_ by Jean Meeus.\n *\n * The sunrise and sunset results are theoretically accurate to within a minute for\n * locations between +/- 72° latitude, and within 10 minutes outside of those latitudes.\n * However, due to variations in atmospheric composition, temperature, pressure and\n * conditions, observed values may vary from calculations.\n * https://gml.noaa.gov/grad/solcalc/calcdetails.html\n *\n * @example\n * const {GeoLocation, Zmanim} = require('@hebcal/core');\n * const latitude = 41.822232;\n * const longitude = -71.448292;\n * const tzid = 'America/New_York';\n * const friday = new Date(2023, 8, 8);\n * const gloc = new GeoLocation(null, latitude, longitude, 0, tzid);\n * const zmanim = new Zmanim(gloc, friday, false);\n * const candleLighting = zmanim.sunsetOffset(-18, true);\n * const timeStr = Zmanim.formatISOWithTimeZone(tzid, candleLighting);\n */\nexport class Zmanim {\n private readonly date: Date;\n private readonly gloc: GeoLocation;\n private readonly noaa: NOAACalculator;\n private useElevation: boolean;\n /**\n * Initialize a Zmanim instance.\n * @param gloc GeoLocation including latitude, longitude, and timezone\n * @param date Regular or Hebrew Date. If `date` is a regular `Date`,\n * hours, minutes, seconds and milliseconds are ignored.\n * @param useElevation use elevation for calculations (default `false`).\n * If `true`, use elevation to affect the calculation of all sunrise/sunset based\n * zmanim. Note: there are some zmanim such as degree-based zmanim that are driven\n * by the amount of light in the sky and are not impacted by elevation.\n * These zmanim intentionally do not support elevation adjustment.\n */\n constructor(gloc: GeoLocation, date: Date | HDate, useElevation: boolean) {\n const dt = getDate(date);\n this.date = dt;\n this.gloc = gloc;\n const plainDate = Temporal.PlainDate.from({\n year: dt.getFullYear(),\n month: dt.getMonth() + 1,\n day: dt.getDate(),\n });\n this.noaa = new NOAACalculator(gloc, plainDate);\n this.useElevation = Boolean(useElevation);\n }\n /**\n * Returns `true` if elevation adjustment is enabled\n * for zmanim support elevation adjustment\n */\n getUseElevation(): boolean {\n return this.useElevation;\n }\n /**\n * Enables or disables elevation adjustment for zmanim support elevation adjustment\n * @param useElevation\n */\n setUseElevation(useElevation: boolean) {\n this.useElevation = useElevation;\n }\n /**\n * Convenience function to get the time when sun is above or below the horizon\n * for a certain angle (in degrees).\n * This function does not support elevation adjustment.\n * @param angle\n * @param rising\n */\n timeAtAngle(angle: number, rising: boolean): Date {\n const offsetZenith = 90 + angle;\n const zdt = rising\n ? this.noaa.getSunriseOffsetByDegrees(offsetZenith)\n : this.noaa.getSunsetOffsetByDegrees(offsetZenith);\n return zdtToDate(zdt);\n }\n /**\n * Upper edge of the Sun appears over the eastern horizon in the morning (0.833° above horizon)\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n sunrise(): Date {\n const zdt = this.useElevation\n ? this.noaa.getSunrise()\n : this.noaa.getSeaLevelSunrise();\n return zdtToDate(zdt);\n }\n /**\n * Upper edge of the Sun appears over the eastern horizon in the morning (0.833° above horizon).\n * This function does not support elevation adjustment.\n */\n seaLevelSunrise(): Date {\n const zdt = this.noaa.getSeaLevelSunrise();\n return zdtToDate(zdt);\n }\n /**\n * When the upper edge of the Sun disappears below the horizon (0.833° below horizon).\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n sunset(): Date {\n const zdt = this.useElevation\n ? this.noaa.getSunset()\n : this.noaa.getSeaLevelSunset();\n return zdtToDate(zdt);\n }\n /**\n * When the upper edge of the Sun disappears below the horizon (0.833° below horizon).\n * This function does not support elevation adjustment.\n */\n seaLevelSunset(): Date {\n const zdt = this.noaa.getSeaLevelSunset();\n return zdtToDate(zdt);\n }\n /**\n * Civil dawn; Sun is 6° below the horizon in the morning.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n dawn(): Date {\n const zdt = this.noaa.getBeginCivilTwilight();\n return zdtToDate(zdt);\n }\n /**\n * Civil dusk; Sun is 6° below the horizon in the evening.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n dusk(): Date {\n const zdt = this.noaa.getEndCivilTwilight();\n return zdtToDate(zdt);\n }\n /**\n * Returns sunset for the previous day.\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n gregEve(): Date {\n const prev = new Date(this.date);\n prev.setDate(prev.getDate() - 1);\n const zman = new Zmanim(this.gloc, prev, this.useElevation);\n return zman.sunset();\n }\n /**\n * @private\n */\n nightHour(): number {\n return (this.sunrise().getTime() - this.gregEve().getTime()) / 12; // ms in hour\n }\n /**\n * Midday – Chatzot; Sunrise plus 6 halachic hours\n */\n chatzot(): Date {\n const startOfDay = this.noaa.getSeaLevelSunrise();\n const endOfDay = this.noaa.getSeaLevelSunset();\n const zdt = this.noaa.getSunTransit(startOfDay, endOfDay);\n return zdtToDate(zdt);\n }\n /**\n * Midnight – Chatzot; Sunset plus 6 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n chatzotNight(): Date {\n return new Date(this.sunrise().getTime() - this.nightHour() * 6);\n }\n /**\n * Dawn – Alot haShachar; Sun is 16.1° below the horizon in the morning.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n alotHaShachar(): Date {\n return this.timeAtAngle(16.1, true);\n }\n /**\n * Earliest talis & tefillin – Misheyakir; Sun is 11.5° below the horizon in the morning.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n misheyakir(): Date {\n return this.timeAtAngle(11.5, true);\n }\n /**\n * Earliest talis & tefillin – Misheyakir Machmir; Sun is 10.2° below the horizon in the morning.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n misheyakirMachmir(): Date {\n return this.timeAtAngle(10.2, true);\n }\n /**\n * Utility method for using elevation-aware sunrise/sunset\n * @private\n * @param hours\n */\n getShaahZmanisBasedZman(hours: number): Date {\n const startOfDay = this.useElevation\n ? this.noaa.getSunrise()\n : this.noaa.getSeaLevelSunrise();\n const endOfDay = this.useElevation\n ? this.noaa.getSunset()\n : this.noaa.getSeaLevelSunset();\n const temporalHour = this.noaa.getTemporalHour(startOfDay, endOfDay);\n const offset = Math.round(temporalHour * hours);\n const zdt = NOAACalculator.getTimeOffset(startOfDay, offset);\n return zdtToDate(zdt);\n }\n /**\n * Latest Shema (Gra); Sunrise plus 3 halachic hours, according to the Gra.\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n sofZmanShma(): Date {\n // Gra\n return this.getShaahZmanisBasedZman(3);\n }\n /**\n * Latest Shacharit (Gra); Sunrise plus 4 halachic hours, according to the Gra.\n *\n * This method returns the latest *zman tfila* (time to recite shema in the morning)\n * that is 4 *shaos zmaniyos* (solar hours) after sunrise or sea level sunrise\n * (depending on the `useElevation` setting), according\n * to the [GRA](https://en.wikipedia.org/wiki/Vilna_Gaon).\n *\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n sofZmanTfilla(): Date {\n // Gra\n return this.getShaahZmanisBasedZman(4);\n }\n /**\n * Returns an array with alot (Date) and ms in hour (number)\n * @private\n */\n getTemporalHour72(forceSeaLevel: boolean): [Date, number] {\n const alot72 = this.sunriseOffset(-72, false, forceSeaLevel);\n const tzeit72 = this.sunsetOffset(72, false, forceSeaLevel);\n const temporalHour = (tzeit72.getTime() - alot72.getTime()) / 12;\n return [alot72, temporalHour];\n }\n /**\n * Returns an array with alot (Date) and ms in hour (number)\n * @private\n */\n getTemporalHourByDeg(angle: number): [Date, number] {\n const alot = this.timeAtAngle(angle, true);\n const tzeit = this.timeAtAngle(angle, false);\n const temporalHour = (tzeit.getTime() - alot.getTime()) / 12;\n return [alot, temporalHour];\n }\n /**\n * Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn being fixed 72 minutes before sea-level sunrise, and nightfall is fixed\n * 72 minutes after sea-level sunset.\n */\n sofZmanShmaMGA(): Date {\n // Magen Avraham\n const [alot72, temporalHour] = this.getTemporalHour72(true);\n const offset = Math.floor(3 * temporalHour);\n return new Date(alot72.getTime() + offset);\n }\n /**\n * Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn to nightfall with both being 16.1° below the horizon.\n */\n sofZmanShmaMGA16Point1(): Date {\n const [alot, temporalHour] = this.getTemporalHourByDeg(16.1);\n const offset = Math.floor(3 * temporalHour);\n return new Date(alot.getTime() + offset);\n }\n /**\n * Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn to nightfall with both being 19.8° below the horizon.\n *\n * This calculation is based on the position of the sun 90 minutes after sunset in Jerusalem\n * around the equinox / equilux which calculates to 19.8° below geometric zenith.\n * https://kosherjava.com/2022/01/12/equinox-vs-equilux-zmanim-calculations/\n */\n sofZmanShmaMGA19Point8(): Date {\n const [alot, temporalHour] = this.getTemporalHourByDeg(19.8);\n const offset = Math.floor(3 * temporalHour);\n return new Date(alot.getTime() + offset);\n }\n /**\n * Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham\n */\n sofZmanTfillaMGA(): Date {\n // Magen Avraham\n const [alot72, temporalHour] = this.getTemporalHour72(true);\n const offset = Math.floor(4 * temporalHour);\n return new Date(alot72.getTime() + offset);\n }\n /**\n * Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn to nightfall with both being 16.1° below the horizon.\n */\n sofZmanTfillaMGA16Point1(): Date {\n const [alot, temporalHour] = this.getTemporalHourByDeg(16.1);\n const offset = Math.floor(4 * temporalHour);\n return new Date(alot.getTime() + offset);\n }\n /**\n * Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn to nightfall with both being 19.8° below the horizon.\n *\n * This calculation is based on the position of the sun 90 minutes after sunset in Jerusalem\n * around the equinox / equilux which calculates to 19.8° below geometric zenith.\n * https://kosherjava.com/2022/01/12/equinox-vs-equilux-zmanim-calculations/\n */\n sofZmanTfillaMGA19Point8(): Date {\n const [alot, temporalHour] = this.getTemporalHourByDeg(19.8);\n const offset = Math.floor(4 * temporalHour);\n return new Date(alot.getTime() + offset);\n }\n /**\n * Earliest Mincha – Mincha Gedola (GRA); Sunrise plus 6.5 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n *\n * This method returns the latest mincha gedola, the earliest time one can pray mincha\n * that is 6.5 shaos zmaniyos (solar hours) after sunrise or sea level sunrise\n * (depending on the `useElevation` setting), according\n * to the [GRA](https://en.wikipedia.org/wiki/Vilna_Gaon).\n *\n * The Ramba\"m is of the opinion that it is better to delay *mincha* until\n * *mincha ketana* while the Ra\"sh, Tur, GRA and others are of the\n * opinion that *mincha* can be prayed *lechatchila* starting at *mincha gedola*.\n */\n minchaGedola(): Date {\n return this.getShaahZmanisBasedZman(6.5);\n }\n /**\n * Earliest Mincha – Mincha Gedola (MGA); Sunrise plus 6.5 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n *\n * This method returns the time of *mincha gedola* according to the Magen Avraham\n * with the day starting 72 minutes before sunrise and ending 72 minutes after sunset.\n * This is the earliest time to pray *mincha*.\n */\n minchaGedolaMGA(): Date {\n const [alot72, temporalHour] = this.getTemporalHour72(false);\n const offset = Math.floor(6.5 * temporalHour);\n return new Date(alot72.getTime() + offset);\n }\n /**\n * Preferable earliest time to recite Minchah – Mincha Ketana; Sunrise plus 9.5 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n *\n * This method returns *mincha ketana*, the preferred earliest time to pray *mincha* in the\n * opinion of the [Rambam](https://en.wikipedia.org/wiki/Maimonides) and others,\n * that is 9.5 *shaos zmaniyos* (solar hours) after sunrise or sea level sunrise\n * (depending on the `useElevation` setting), according\n * to the [GRA](https://en.wikipedia.org/wiki/Vilna_Gaon).\n */\n minchaKetana(): Date {\n return this.getShaahZmanisBasedZman(9.5);\n }\n /**\n * This method returns the time of *mincha ketana* according to the Magen Avraham\n * with the day starting 72 minutes before sunrise and ending 72 minutes after sunset.\n * This is the preferred earliest time to pray *mincha* according to the opinion of\n * the [Rambam](https://en.wikipedia.org/wiki/Maimonides) and others.\n *\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n minchaKetanaMGA(): Date {\n const [alot72, temporalHour] = this.getTemporalHour72(false);\n return new Date(alot72.getTime() + Math.floor(9.5 * temporalHour));\n }\n /**\n * Plag haMincha; Sunrise plus 10.75 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n plagHaMincha(): Date {\n return this.getShaahZmanisBasedZman(10.75);\n }\n /**\n * @param [angle=8.5] optional time for solar depression.\n * Default is 8.5 degrees for 3 small stars, use 7.083 degrees for 3 medium-sized stars.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n tzeit(angle = 8.5): Date {\n return this.timeAtAngle(angle, false);\n }\n /**\n * Alias for sunrise\n */\n neitzHaChama(): Date {\n return this.sunrise();\n }\n /**\n * Alias for sunset\n */\n shkiah(): Date {\n return this.sunset();\n }\n /**\n * Rabbeinu Tam holds that bein hashmashos is a specific time\n * between sunset and tzeis hakochavim.\n * One opinion on how to calculate this time is that\n * it is 13.5 minutes before tzies 7.083.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n beinHaShmashos(): Date {\n const tzeit = this.tzeit(7.083);\n const millis = tzeit.getTime();\n if (isNaN(millis)) {\n return tzeit;\n }\n return new Date(millis - 13.5 * 60 * 1000);\n }\n /**\n * Uses timeFormat to return a date like '20:34'\n */\n static formatTime(dt: Date, timeFormat: Intl.DateTimeFormat): string {\n const time = timeFormat.format(dt);\n const hm = time.split(':');\n if (hm[0] === '24') {\n return '00:' + hm[1];\n }\n return time;\n }\n\n /**\n * Discards seconds, rounding to nearest minute.\n * @param dt\n */\n static roundTime(dt: Date): Date {\n const millis = dt.getTime();\n if (isNaN(millis)) {\n return dt;\n }\n // Round up to next minute if needed\n const millisOnly = dt.getMilliseconds();\n const seconds = dt.getSeconds();\n if (seconds === 0 && millisOnly === 0) {\n return dt;\n }\n const secAndMillis = seconds * 1000 + millisOnly;\n const delta =\n secAndMillis >= 30000 ? 60000 - secAndMillis : -1 * secAndMillis;\n return new Date(millis + delta);\n }\n\n /**\n * Get offset string (like \"+05:00\" or \"-08:00\") from tzid (like \"Europe/Moscow\")\n * @param tzid\n * @param date\n */\n static timeZoneOffset(tzid: string, date: Date): string {\n const offset = getTimezoneOffset(tzid, date);\n const offsetAbs = Math.abs(offset);\n const hours = Math.floor(offsetAbs / 60);\n const minutes = offsetAbs % 60;\n return (offset < 0 ? '+' : '-') + pad2(hours) + ':' + pad2(minutes);\n }\n\n /**\n * Returns a string like \"2022-04-01T13:06:00-11:00\"\n * @param tzid\n * @param date\n */\n static formatISOWithTimeZone(tzid: string, date: Date): string {\n if (isNaN(date.getTime())) {\n return '0000-00-00T00:00:00Z';\n }\n return (\n getPseudoISO(tzid, date).substring(0, 19) +\n Zmanim.timeZoneOffset(tzid, date)\n );\n }\n\n /**\n * Returns sunrise + `offset` minutes (either positive or negative).\n * If elevation is enabled, this function will include elevation in the calculation\n * unless `forceSeaLevel` is `true`.\n * @param offset minutes\n * @param roundMinute round time to nearest minute (default true)\n * @param forceSeaLevel use sea-level sunrise (default false)\n */\n sunriseOffset(\n offset: number,\n roundMinute = true,\n forceSeaLevel = false\n ): Date {\n const sunrise = forceSeaLevel ? this.seaLevelSunrise() : this.sunrise();\n if (isNaN(sunrise.getTime())) {\n return sunrise;\n }\n if (roundMinute) {\n // For positive offsets only, round up to next minute if needed\n if (offset > 0 && sunrise.getSeconds() >= 30) {\n offset++;\n }\n sunrise.setSeconds(0, 0);\n }\n return new Date(sunrise.getTime() + offset * 60 * 1000);\n }\n\n /**\n * Returns sunset + `offset` minutes (either positive or negative).\n * If elevation is enabled, this function will include elevation in the calculation\n * unless `forceSeaLevel` is `true`.\n * @param offset minutes\n * @param roundMinute round time to nearest minute (default true)\n * @param forceSeaLevel use sea-level sunset (default false)\n */\n sunsetOffset(\n offset: number,\n roundMinute = true,\n forceSeaLevel = false\n ): Date {\n const sunset = forceSeaLevel ? this.seaLevelSunset() : this.sunset();\n if (isNaN(sunset.getTime())) {\n return sunset;\n }\n if (roundMinute) {\n // For Havdalah only, round up to next minute if needed\n if (offset > 0 && sunset.getSeconds() >= 30) {\n offset++;\n }\n sunset.setSeconds(0, 0);\n }\n return new Date(sunset.getTime() + offset * 60 * 1000);\n }\n /**\n * Returns the Hebrew date relative to the specified location and Gregorian date,\n * taking into consideration whether the time is before or after sunset.\n *\n * For example, if the given date and is `2024-09-22T10:35` (before sunset), and\n * sunset for the specified location is **19:04**, then this function would\n * return a Hebrew date of `19th of Elul, 5784`.\n * If the given date is the same Gregorian day after sunset\n * (for example `2024-09-22T20:07`), this function would return a\n * Hebrew date of `20th of Elul, 5784`.\n * @example\n * const {GeoLocation, Zmanim, HDate} = require('@hebcal/core');\n * const latitude = 48.85341;\n * const longitude = 2.3488;\n * const timezone = 'Europe/Paris';\n * const gloc = new GeoLocation(null, latitude, longitude, 0, timezone);\n * const before = Zmanim.makeSunsetAwareHDate(gloc, new Date('2024-09-22T17:38:46.123Z'), false);\n * console.log(before.toString()); // '19 Elul 5784'\n * const after = Zmanim.makeSunsetAwareHDate(gloc, new Date('2024-09-22T23:45:18.345Z'), false);\n * console.log(after.toString()); // '20 Elul 5784'\n */\n static makeSunsetAwareHDate(\n gloc: GeoLocation,\n date: Date,\n useElevation: boolean\n ): HDate {\n const zmanim = new Zmanim(gloc, date, useElevation);\n const sunset = zmanim.sunset();\n let hd = new HDate(date);\n const sunsetMillis = sunset.getTime();\n if (isNaN(sunsetMillis)) {\n return hd;\n }\n if (date.getTime() >= sunsetMillis) {\n hd = hd.next();\n }\n return hd;\n }\n}\n","import {CalOptions} from './CalOptions';\n\nconst hour12cc: Record<string, number> = {\n US: 1,\n CA: 1,\n BR: 1,\n AU: 1,\n NZ: 1,\n DO: 1,\n PR: 1,\n GR: 1,\n IN: 1,\n KR: 1,\n NP: 1,\n ZA: 1,\n} as const;\n\n/**\n * @private\n * @param timeStr - original time like \"20:30\"\n * @param suffix - \"p\" or \"pm\" or \" P.M.\". Add leading space if you want it\n * @param options\n */\nexport function reformatTimeStr(\n timeStr: string,\n suffix: string,\n options?: CalOptions\n): string {\n if (typeof timeStr !== 'string')\n throw new TypeError(`Bad timeStr: ${timeStr}`);\n const cc = options?.location?.getCountryCode() || (options?.il ? 'IL' : 'US');\n const hour12 = options?.hour12;\n if (typeof hour12 !== 'undefined' && !hour12) {\n return timeStr;\n }\n if (!hour12 && typeof hour12cc[cc] === 'undefined') {\n return timeStr;\n }\n const hm = timeStr.split(':');\n let hour: string | number = parseInt(hm[0], 10);\n if (hour < 12 && suffix) {\n suffix = suffix.replace('p', 'a').replace('P', 'A');\n if (hour === 0) {\n hour = 12;\n }\n } else if (hour > 12) {\n hour = hour % 12;\n } else if (hour === 0) {\n hour = '00';\n }\n return `${hour}:${hm[1]}${suffix}`;\n}\n","import {HDate, Locale} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\nimport {Location} from './location';\nimport {Event} from './event';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport {Zmanim} from './zmanim';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** An event that has an `eventTime` and `eventTimeStr` */\nexport class TimedEvent extends Event {\n readonly eventTime: Date;\n readonly location: Location;\n readonly eventTimeStr: string;\n readonly fmtTime: string;\n readonly linkedEvent?: Event;\n /**\n * @param desc Description (not translated)\n */\n constructor(\n date: HDate,\n desc: string,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, desc, mask);\n this.eventTime = Zmanim.roundTime(eventTime);\n this.location = location;\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n const opts = {...options, location};\n this.fmtTime = reformatTimeStr(this.eventTimeStr, 'pm', opts);\n if (typeof linkedEvent !== 'undefined') {\n this.linkedEvent = linkedEvent;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Candle lighting\" without the time.\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale);\n }\n\n getCategories(): string[] {\n const desc = this.getDesc();\n switch (desc) {\n // LIGHT_CANDLES or LIGHT_CANDLES_TZEIS\n case 'Candle lighting':\n return ['candles'];\n // YOM_TOV_ENDS\n case 'Havdalah':\n return ['havdalah'];\n // flags.MINOR_FAST or flags.MAJOR_FAST\n case 'Fast begins':\n case 'Fast ends':\n return ['zmanim', 'fast'];\n }\n /* NOTREACHED */\n return ['unknown'];\n }\n}\n\n/** Candle lighting before Shabbat or holiday */\nexport class CandleLightingEvent extends TimedEvent {\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(\n date,\n 'Candle lighting',\n mask,\n eventTime,\n location,\n linkedEvent,\n options\n );\n }\n\n getEmoji(): string {\n return '🕯️';\n }\n}\n\n/** Havdalah after Shabbat or holiday */\nexport class HavdalahEvent extends TimedEvent {\n private readonly havdalahMins?: number;\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n havdalahMins?: number,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, 'Havdalah', mask, eventTime, location, linkedEvent, options);\n if (havdalahMins) {\n this.havdalahMins = havdalahMins;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return this.renderBrief(locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Havdalah\" without the time.\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n let str = Locale.gettext(this.getDesc(), locale);\n if (this.havdalahMins) {\n const min = Locale.gettext('min', locale);\n str += ` (${this.havdalahMins} ${min})`;\n }\n return str;\n }\n\n getEmoji(): string {\n return '✨';\n }\n}\n","import {months} from '@hebcal/hdate';\nimport {flags} from './event';\n\nconst Nisan = months.NISAN;\nconst Iyyar = months.IYYAR;\nconst Sivan = months.SIVAN;\nconst Tamuz = months.TAMUZ;\nconst Av = months.AV;\nconst Elul = months.ELUL;\nconst Tishrei = months.TISHREI;\nconst Cheshvan = months.CHESHVAN;\nconst Kislev = months.KISLEV;\nconst Shvat = months.SHVAT;\nconst Adar2 = months.ADAR_II;\n\nconst CHAG = flags.CHAG;\nconst LIGHT_CANDLES = flags.LIGHT_CANDLES;\nconst YOM_TOV_ENDS = flags.YOM_TOV_ENDS;\nconst CHUL_ONLY = flags.CHUL_ONLY;\nconst IL_ONLY = flags.IL_ONLY;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\nconst CHANUKAH_CANDLES = flags.CHANUKAH_CANDLES;\nconst MAJOR_FAST = flags.MAJOR_FAST;\nconst MINOR_HOLIDAY = flags.MINOR_HOLIDAY;\nconst EREV = flags.EREV;\nconst CHOL_HAMOED = flags.CHOL_HAMOED;\n\nconst emojiPesach = '🫓';\nconst emojiSukkot = '🌿🍋';\n\nconst ROSH_HASHANA_II = 'Rosh Hashana II';\nconst EREV_YOM_KIPPUR = 'Erev Yom Kippur';\nconst YOM_KIPPUR = 'Yom Kippur';\nconst EREV_SUKKOT = 'Erev Sukkot';\nconst SUKKOT_I = 'Sukkot I';\nconst SUKKOT_II = 'Sukkot II';\nconst SUKKOT_III_CHM = \"Sukkot III (CH''M)\";\nconst SUKKOT_IV_CHM = \"Sukkot IV (CH''M)\";\nconst SUKKOT_V_CHM = \"Sukkot V (CH''M)\";\nconst SUKKOT_VI_CHM = \"Sukkot VI (CH''M)\";\nconst SHMINI_ATZERET = 'Shmini Atzeret';\nconst SIMCHAT_TORAH = 'Simchat Torah';\nconst SUKKOT_II_CHM = \"Sukkot II (CH''M)\";\nconst SUKKOT_VII_HOSHANA_RABA = 'Sukkot VII (Hoshana Raba)';\nconst CHANUKAH_1_CANDLE = 'Chanukah: 1 Candle';\nconst TU_BISHVAT = 'Tu BiShvat';\nconst EREV_PURIM = 'Erev Purim';\nconst PURIM = 'Purim';\nconst SHUSHAN_PURIM = 'Shushan Purim';\nconst EREV_PESACH = 'Erev Pesach';\nconst PESACH_I = 'Pesach I';\nconst PESACH_II = 'Pesach II';\nconst PESACH_II_CHM = \"Pesach II (CH''M)\";\nconst PESACH_III_CHM = \"Pesach III (CH''M)\";\nconst PESACH_IV_CHM = \"Pesach IV (CH''M)\";\nconst PESACH_V_CHM = \"Pesach V (CH''M)\";\nconst PESACH_VI_CHM = \"Pesach VI (CH''M)\";\nconst PESACH_VII = 'Pesach VII';\nconst PESACH_VIII = 'Pesach VIII';\nconst PESACH_SHENI = 'Pesach Sheni';\nconst LAG_BAOMER = 'Lag BaOmer';\nconst EREV_SHAVUOT = 'Erev Shavuot';\nconst SHAVUOT = 'Shavuot';\nconst SHAVUOT_I = 'Shavuot I';\nconst SHAVUOT_II = 'Shavuot II';\nconst TU_BAV = \"Tu B'Av\";\nconst ROSH_HASHANA_LABEHEMOT = 'Rosh Hashana LaBehemot';\nconst EREV_ROSH_HASHANA = 'Erev Rosh Hashana';\nconst YOM_YERUSHALAYIM = 'Yom Yerushalayim';\nconst BEN_GURION_DAY = 'Ben-Gurion Day';\nconst FAMILY_DAY = 'Family Day';\nconst YITZHAK_RABIN_MEMORIAL_DAY = 'Yitzhak Rabin Memorial Day';\nconst HERZL_DAY = 'Herzl Day';\nconst JABOTINSKY_DAY = 'Jabotinsky Day';\nconst SIGD = 'Sigd';\nconst YOM_HAALIYAH = 'Yom HaAliyah';\nconst YOM_HAALIYAH_SCHOOL_OBSERVANCE = 'Yom HaAliyah School Observance';\nconst HEBREW_LANGUAGE_DAY = 'Hebrew Language Day';\n\n/**\n * Transliterated names of holidays, used by `Event.getDesc()`\n * @readonly\n * @enum {string}\n */\nexport const holidayDesc = {\n /** Asara B'Tevet */\n ASARA_BTEVET: \"Asara B'Tevet\",\n /** Birkat Hachamah */\n BIRKAT_HACHAMAH: 'Birkat Hachamah',\n /** Chag HaBanot */\n CHAG_HABANOT: 'Chag HaBanot',\n /** Chanukah: 8th Day */\n CHANUKAH_8TH_DAY: 'Chanukah: 8th Day',\n /** Erev Tish'a B'Av */\n EREV_TISHA_BAV: \"Erev Tish'a B'Av\",\n /** Leil Selichot */\n LEIL_SELICHOT: 'Leil Selichot',\n /** Purim Katan */\n PURIM_KATAN: 'Purim Katan',\n /** Purim Meshulash */\n PURIM_MESHULASH: 'Purim Meshulash',\n /** Shabbat Chazon */\n SHABBAT_CHAZON: 'Shabbat Chazon',\n /** Shabbat HaChodesh */\n SHABBAT_HACHODESH: 'Shabbat HaChodesh',\n /** Shabbat HaGadol */\n SHABBAT_HAGADOL: 'Shabbat HaGadol',\n /** Shabbat Nachamu */\n SHABBAT_NACHAMU: 'Shabbat Nachamu',\n /** Shabbat Parah */\n SHABBAT_PARAH: 'Shabbat Parah',\n /** Shabbat Shekalim */\n SHABBAT_SHEKALIM: 'Shabbat Shekalim',\n /** Shabbat Shirah */\n SHABBAT_SHIRAH: 'Shabbat Shirah',\n /** Shabbat Shuva */\n SHABBAT_SHUVA: 'Shabbat Shuva',\n /** Shabbat Zachor */\n SHABBAT_ZACHOR: 'Shabbat Zachor',\n /** Shushan Purim Katan */\n SHUSHAN_PURIM_KATAN: 'Shushan Purim Katan',\n /** Ta'anit Bechorot */\n TAANIT_BECHOROT: \"Ta'anit Bechorot\",\n /** Ta'anit Esther */\n TAANIT_ESTHER: \"Ta'anit Esther\",\n /** Tish'a B'Av */\n TISHA_BAV: \"Tish'a B'Av\",\n /** Tzom Gedaliah */\n TZOM_GEDALIAH: 'Tzom Gedaliah',\n /** Tzom Tammuz */\n TZOM_TAMMUZ: 'Tzom Tammuz',\n /** Yom HaAtzma'ut */\n YOM_HAATZMA_UT: \"Yom HaAtzma'ut\",\n /** Yom HaShoah */\n YOM_HASHOAH: 'Yom HaShoah',\n /** Yom HaZikaron */\n YOM_HAZIKARON: 'Yom HaZikaron',\n\n /** Ben-Gurion Day */\n BEN_GURION_DAY,\n /** Chanukah: 1 Candle */\n CHANUKAH_1_CANDLE,\n /** Erev Pesach */\n EREV_PESACH,\n /** Erev Purim */\n EREV_PURIM,\n /** Erev Rosh Hashana */\n EREV_ROSH_HASHANA,\n /** Erev Shavuot */\n EREV_SHAVUOT,\n /** Erev Sukkot */\n EREV_SUKKOT,\n /** Erev Yom Kippur */\n EREV_YOM_KIPPUR,\n /** Family Day */\n FAMILY_DAY,\n /** Hebrew Language Day */\n HEBREW_LANGUAGE_DAY,\n /** Herzl Day */\n HERZL_DAY,\n /** Jabotinsky Day */\n JABOTINSKY_DAY,\n /** Lag BaOmer */\n LAG_BAOMER,\n /** Pesach I */\n PESACH_I,\n /** Pesach II */\n PESACH_II,\n /** Pesach III (CH''M) */\n PESACH_III_CHM,\n /** Pesach II (CH''M) */\n PESACH_II_CHM,\n /** Pesach IV (CH''M) */\n PESACH_IV_CHM,\n /** Pesach Sheni */\n PESACH_SHENI,\n /** Pesach VII */\n PESACH_VII,\n /** Pesach VIII */\n PESACH_VIII,\n /** Pesach VI (CH''M) */\n PESACH_VI_CHM,\n /** Pesach V (CH''M) */\n PESACH_V_CHM,\n /** Purim */\n PURIM,\n /** Rosh Hashana II */\n ROSH_HASHANA_II,\n /** Rosh Hashana LaBehemot */\n ROSH_HASHANA_LABEHEMOT,\n /** Shavuot */\n SHAVUOT,\n /** Shavuot I */\n SHAVUOT_I,\n /** Shavuot II */\n SHAVUOT_II,\n /** Shmini Atzeret */\n SHMINI_ATZERET,\n /** Shushan Purim */\n SHUSHAN_PURIM,\n /** Sigd */\n SIGD,\n /** Simchat Torah */\n SIMCHAT_TORAH,\n /** Sukkot I */\n SUKKOT_I,\n /** Sukkot II */\n SUKKOT_II,\n /** Sukkot III (CH''M) */\n SUKKOT_III_CHM,\n /** Sukkot II (CH''M) */\n SUKKOT_II_CHM,\n /** Sukkot IV (CH''M) */\n SUKKOT_IV_CHM,\n /** Sukkot VII (Hoshana Raba) */\n SUKKOT_VII_HOSHANA_RABA,\n /** Sukkot VI (CH''M) */\n SUKKOT_VI_CHM,\n /** Sukkot V (CH''M) */\n SUKKOT_V_CHM,\n /** Tu B\\'Av */\n TU_BAV,\n /** Tu BiShvat */\n TU_BISHVAT,\n /** Yitzhak Rabin Memorial Day */\n YITZHAK_RABIN_MEMORIAL_DAY,\n /** Yom HaAliyah */\n YOM_HAALIYAH,\n /** Yom HaAliyah School Observance */\n YOM_HAALIYAH_SCHOOL_OBSERVANCE,\n /** Yom Kippur */\n YOM_KIPPUR,\n /** Yom Yerushalayim */\n YOM_YERUSHALAYIM,\n} as const;\n\nexport interface Holiday {\n mm: number; // This should be an enum `Month` eventually\n dd: number;\n desc: string;\n flags: number;\n chmDay?: number;\n emoji?: string;\n}\n\nexport const staticHolidays: Holiday[] = [\n {\n mm: Tishrei,\n dd: 2,\n desc: ROSH_HASHANA_II,\n flags: CHAG | YOM_TOV_ENDS,\n emoji: '🍏🍯',\n },\n {mm: Tishrei, dd: 9, desc: EREV_YOM_KIPPUR, flags: EREV | LIGHT_CANDLES},\n {\n mm: Tishrei,\n dd: 10,\n desc: YOM_KIPPUR,\n flags: CHAG | MAJOR_FAST | YOM_TOV_ENDS,\n },\n\n {\n mm: Tishrei,\n dd: 14,\n desc: EREV_SUKKOT,\n flags: CHUL_ONLY | EREV | LIGHT_CANDLES,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 15,\n desc: SUKKOT_I,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 16,\n desc: SUKKOT_II,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 17,\n desc: SUKKOT_III_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 1,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 18,\n desc: SUKKOT_IV_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 2,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 19,\n desc: SUKKOT_V_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 3,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 20,\n desc: SUKKOT_VI_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 4,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 22,\n desc: SHMINI_ATZERET,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n },\n {\n mm: Tishrei,\n dd: 23,\n desc: SIMCHAT_TORAH,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n },\n\n {\n mm: Tishrei,\n dd: 14,\n desc: EREV_SUKKOT,\n flags: IL_ONLY | EREV | LIGHT_CANDLES,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 15,\n desc: SUKKOT_I,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 16,\n desc: SUKKOT_II_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 1,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 17,\n desc: SUKKOT_III_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 2,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 18,\n desc: SUKKOT_IV_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 3,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 19,\n desc: SUKKOT_V_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 4,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 20,\n desc: SUKKOT_VI_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 5,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 22,\n desc: SHMINI_ATZERET,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n },\n\n {\n mm: Tishrei,\n dd: 21,\n desc: SUKKOT_VII_HOSHANA_RABA,\n flags: LIGHT_CANDLES | CHOL_HAMOED,\n chmDay: -1,\n emoji: emojiSukkot,\n },\n {\n mm: Kislev,\n dd: 24,\n desc: CHANUKAH_1_CANDLE,\n flags: EREV | MINOR_HOLIDAY | CHANUKAH_CANDLES,\n emoji: '🕎1️⃣',\n },\n {mm: Shvat, dd: 15, desc: TU_BISHVAT, flags: MINOR_HOLIDAY, emoji: '🌳'},\n {\n mm: Adar2,\n dd: 13,\n desc: EREV_PURIM,\n flags: EREV | MINOR_HOLIDAY,\n emoji: '🎭️📜',\n },\n {mm: Adar2, dd: 14, desc: PURIM, flags: MINOR_HOLIDAY, emoji: '🎭️📜'},\n {\n mm: Adar2,\n dd: 15,\n desc: SHUSHAN_PURIM,\n flags: MINOR_HOLIDAY,\n emoji: '🎭️📜',\n },\n // Pesach Israel\n {\n mm: Nisan,\n dd: 14,\n desc: EREV_PESACH,\n flags: IL_ONLY | EREV | LIGHT_CANDLES,\n emoji: '🫓🍷',\n },\n {\n mm: Nisan,\n dd: 15,\n desc: PESACH_I,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 16,\n desc: PESACH_II_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 1,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 17,\n desc: PESACH_III_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 2,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 18,\n desc: PESACH_IV_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 3,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 19,\n desc: PESACH_V_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 4,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 20,\n desc: PESACH_VI_CHM,\n flags: IL_ONLY | CHOL_HAMOED | LIGHT_CANDLES,\n chmDay: 5,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 21,\n desc: PESACH_VII,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiPesach,\n },\n // Pesach chutz l'aretz\n {\n mm: Nisan,\n dd: 14,\n desc: EREV_PESACH,\n flags: CHUL_ONLY | EREV | LIGHT_CANDLES,\n emoji: '🫓🍷',\n },\n {\n mm: Nisan,\n dd: 15,\n desc: PESACH_I,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n emoji: '🫓🍷',\n },\n {\n mm: Nisan,\n dd: 16,\n desc: PESACH_II,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 17,\n desc: PESACH_III_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 1,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 18,\n desc: PESACH_IV_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 2,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 19,\n desc: PESACH_V_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 3,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 20,\n desc: PESACH_VI_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED | LIGHT_CANDLES,\n chmDay: 4,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 21,\n desc: PESACH_VII,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 22,\n desc: PESACH_VIII,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiPesach,\n },\n\n {mm: Iyyar, dd: 14, desc: PESACH_SHENI, flags: MINOR_HOLIDAY},\n {mm: Iyyar, dd: 18, desc: LAG_BAOMER, flags: MINOR_HOLIDAY, emoji: '🔥'},\n {\n mm: Sivan,\n dd: 5,\n desc: EREV_SHAVUOT,\n flags: EREV | LIGHT_CANDLES,\n emoji: '⛰️🌸',\n },\n {\n mm: Sivan,\n dd: 6,\n desc: SHAVUOT,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: '⛰️🌸',\n },\n {\n mm: Sivan,\n dd: 6,\n desc: SHAVUOT_I,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n emoji: '⛰️🌸',\n },\n {\n mm: Sivan,\n dd: 7,\n desc: SHAVUOT_II,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: '⛰️🌸',\n },\n {mm: Av, dd: 15, desc: TU_BAV, flags: MINOR_HOLIDAY, emoji: '❤️'},\n {\n mm: Elul,\n dd: 1,\n desc: ROSH_HASHANA_LABEHEMOT,\n flags: MINOR_HOLIDAY,\n emoji: '🐑',\n },\n {\n mm: Elul,\n dd: 29,\n desc: EREV_ROSH_HASHANA,\n flags: EREV | LIGHT_CANDLES,\n emoji: '🍏🍯',\n },\n] as const;\n\nexport interface ModernHoliday {\n firstYear: number;\n mm: number; // This should be an enum `Month` eventually\n dd: number;\n desc: string;\n chul?: boolean;\n suppressEmoji?: boolean;\n satPostponeToSun?: boolean;\n friPostponeToSun?: boolean;\n friSatMovetoThu?: boolean;\n}\n\nexport const staticModernHolidays: ModernHoliday[] = [\n {firstYear: 5727, mm: Iyyar, dd: 28, desc: YOM_YERUSHALAYIM, chul: true},\n {\n firstYear: 5737,\n mm: Kislev,\n dd: 6,\n desc: BEN_GURION_DAY,\n satPostponeToSun: true,\n friPostponeToSun: true,\n },\n {firstYear: 5750, mm: Shvat, dd: 30, desc: FAMILY_DAY},\n {\n firstYear: 5758,\n mm: Cheshvan,\n dd: 12,\n desc: YITZHAK_RABIN_MEMORIAL_DAY,\n friSatMovetoThu: true,\n },\n {firstYear: 5764, mm: Iyyar, dd: 10, desc: HERZL_DAY, satPostponeToSun: true},\n {\n firstYear: 5765,\n mm: Tamuz,\n dd: 29,\n desc: JABOTINSKY_DAY,\n satPostponeToSun: true,\n },\n {\n firstYear: 5769,\n mm: Cheshvan,\n dd: 29,\n desc: SIGD,\n chul: true,\n suppressEmoji: true,\n friSatMovetoThu: true,\n },\n {firstYear: 5777, mm: Nisan, dd: 10, desc: YOM_HAALIYAH, chul: true},\n {firstYear: 5777, mm: Cheshvan, dd: 7, desc: YOM_HAALIYAH_SCHOOL_OBSERVANCE},\n // https://www.gov.il/he/departments/policies/2012_des5234\n {\n firstYear: 5773,\n mm: months.TEVET,\n dd: 21,\n desc: HEBREW_LANGUAGE_DAY,\n friSatMovetoThu: true,\n },\n] as const;\n","import {HDate, Locale, isoDateString} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {holidayDesc as hdesc} from './staticHolidays';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */\nexport class HolidayEvent extends Event {\n /** During Sukkot or Pesach */\n cholHaMoedDay?: number;\n chanukahDay?: number;\n /**\n * `true` if the fast day was postponed a day to avoid Shabbat.\n * - Tish'a B'Av postponed from the 9th to the 10th\n * - Tzom Tammuz postponed from the 17th to the 18th\n */\n observed?: boolean;\n\n basename(): string {\n return this.getDesc()\n .replace(/ \\d{4}$/, '')\n .replace(/ \\(CH''M\\)$/, '')\n .replace(/ \\(observed\\)$/, '')\n .replace(/ \\(Hoshana Raba\\)$/, '')\n .replace(/ [IV]+$/, '')\n .replace(/: \\d Candles?$/, '')\n .replace(/: 8th Day$/, '')\n .replace(/^Erev /, '');\n }\n\n url(): string | undefined {\n const year = this.getDate().greg().getFullYear();\n if (year < 100) {\n return undefined;\n }\n const url =\n 'https://www.hebcal.com/holidays/' +\n this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\n '-' +\n this.urlDateSuffix();\n return this.getFlags() & flags.IL_ONLY ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const year = this.getDate().greg().getFullYear();\n return String(year);\n }\n\n getEmoji(): string {\n if (this.emoji) {\n return this.emoji;\n } else if (this.getFlags() & flags.SPECIAL_SHABBAT) {\n return '🕍';\n } else {\n return '✡️';\n }\n }\n\n getCategories(): string[] {\n if (this.cholHaMoedDay) {\n return ['holiday', 'major', 'cholhamoed'];\n }\n const cats = super.getCategories();\n if (cats[0] !== 'unknown') {\n return cats;\n }\n // Don't depend on flags.MINOR_HOLIDAY always being set. Look for minor holidays.\n const desc = this.getDesc();\n switch (desc) {\n case hdesc.LAG_BAOMER:\n case hdesc.LEIL_SELICHOT:\n case hdesc.PESACH_SHENI:\n case hdesc.EREV_PURIM:\n case hdesc.PURIM_KATAN:\n case hdesc.SHUSHAN_PURIM:\n case hdesc.TU_BAV:\n case hdesc.TU_BISHVAT:\n case hdesc.ROSH_HASHANA_LABEHEMOT:\n return ['holiday', 'minor'];\n }\n\n return ['holiday', 'major'];\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n const str = super.render(locale);\n return str.replace(/'/g, '’');\n }\n /**\n * Returns a brief (translated) description of this event.\n * For most events, this is the same as render(). For some events, it procudes\n * a shorter text (e.g. without a time or added description).\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n const str = super.renderBrief(locale);\n return str.replace(/'/g, '’');\n }\n /**\n * Makes a clone of this Event object\n * @deprecated\n */\n clone(): HolidayEvent {\n const ev = new HolidayEvent(this.date, this.desc, this.mask);\n // overwrite all enumerable properties\n Object.assign(ev, this);\n return ev;\n }\n}\n\n/**\n * Because Asara B'Tevet often occurs twice in the same Gregorian year,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class AsaraBTevetEvent extends HolidayEvent {\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.getDate().greg());\n return isoDate.replace(/-/g, '');\n }\n}\n\n/**\n * Because Chanukah sometimes starts in December and ends in January,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class ChanukahEvent extends HolidayEvent {\n urlDateSuffix(): string {\n const dt = this.getDate().greg();\n let year = dt.getFullYear();\n if (dt.getMonth() === 0) {\n year--;\n }\n return String(year);\n }\n}\n\n/** Represents Rosh Hashana, the Jewish New Year */\nexport class RoshHashanaEvent extends HolidayEvent {\n private readonly hyear: number;\n /**\n * @private\n * @param date Hebrew date event occurs\n * @param hyear Hebrew year\n * @param mask optional holiday flags\n */\n constructor(date: HDate, hyear: number, mask: number) {\n super(date, `Rosh Hashana ${hyear}`, mask);\n this.hyear = hyear;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return Locale.gettext('Rosh Hashana', locale) + ' ' + this.hyear;\n }\n\n getEmoji(): string {\n return '🍏🍯';\n }\n}\n\nconst roshChodeshStr = 'Rosh Chodesh';\n\n/** Represents Rosh Chodesh, the beginning of a new month */\nexport class RoshChodeshEvent extends HolidayEvent {\n /**\n * Constructs Rosh Chodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n */\n constructor(date: HDate, monthName: string) {\n super(date, `${roshChodeshStr} ${monthName}`, flags.ROSH_CHODESH);\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n const monthName = this.getDesc().substring(roshChodeshStr.length + 1);\n const monthName0 = Locale.gettext(monthName, locale);\n const monthName1 = monthName0.replace(/'/g, '’');\n return Locale.gettext(roshChodeshStr, locale) + ' ' + monthName1;\n }\n\n basename(): string {\n return this.getDesc();\n }\n\n getEmoji(): string {\n return this.emoji || '🌒';\n }\n}\n","/* eslint-disable max-len */\nimport {HDate, months} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\nimport {Location} from './location';\nimport {Event, flags} from './event';\nimport {ChanukahEvent, HolidayEvent} from './HolidayEvent';\nimport {Zmanim} from './zmanim';\nimport {TimedEvent, CandleLightingEvent, HavdalahEvent} from './TimedEvent';\n\nconst LIGHT_CANDLES = flags.LIGHT_CANDLES;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\n\n/**\n * @private\n */\nexport function makeCandleEvent(\n ev: Event | undefined,\n hd: HDate,\n options: CalOptions,\n isFriday: boolean,\n isSaturday: boolean\n): TimedEvent | undefined {\n let havdalahTitle = false;\n let useHavdalahOffset = isSaturday;\n let mask = ev ? ev.getFlags() : LIGHT_CANDLES;\n if (typeof ev !== 'undefined') {\n // if linked event && dow == FRI, use Candle lighting time & title\n if (!isFriday) {\n if (mask & (LIGHT_CANDLES_TZEIS | flags.CHANUKAH_CANDLES)) {\n useHavdalahOffset = true;\n } else if (mask & flags.YOM_TOV_ENDS) {\n havdalahTitle = true;\n useHavdalahOffset = true;\n }\n }\n } else if (isSaturday) {\n havdalahTitle = true;\n mask = LIGHT_CANDLES_TZEIS;\n }\n // if Havdalah offset is 0 or undefined, we'll use tzeit time\n const offset = useHavdalahOffset\n ? Number(options.havdalahMins)\n : Number(options.candleLightingMins);\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd, useElevation);\n const time =\n useHavdalahOffset && !offset\n ? zmanim.tzeit(options.havdalahDeg)\n : zmanim.sunsetOffset(offset, true);\n if (isNaN(time.getTime())) {\n return undefined; // no sunset\n }\n if (havdalahTitle) {\n return new HavdalahEvent(\n hd,\n mask,\n time,\n location,\n options.havdalahMins,\n ev,\n options\n );\n } else {\n mask |= LIGHT_CANDLES;\n return new CandleLightingEvent(hd, mask, time, location, ev, options);\n }\n}\n\nconst FAST_BEGINS = 'Fast begins';\nconst FAST_ENDS = 'Fast ends';\n\n/** A fast day also contains a start and end time */\nexport class FastDayEvent extends HolidayEvent {\n /** original event */\n readonly linkedEvent: HolidayEvent;\n /** this will be a \"Fast begins\" event */\n readonly startEvent?: TimedEvent;\n /** this will be a \"Fast ends\" event */\n readonly endEvent?: TimedEvent;\n constructor(\n linkedEvent: HolidayEvent,\n startEvent?: TimedEvent,\n endEvent?: TimedEvent\n ) {\n super(linkedEvent.getDate(), linkedEvent.getDesc(), linkedEvent.getFlags());\n this.linkedEvent = linkedEvent;\n this.startEvent = startEvent;\n this.endEvent = endEvent;\n }\n render(locale?: string): string {\n return this.linkedEvent.render(locale);\n }\n renderBrief(locale?: string): string {\n return this.linkedEvent.renderBrief(locale);\n }\n urlDateSuffix(): string {\n return this.linkedEvent.urlDateSuffix();\n }\n url(): string | undefined {\n return this.linkedEvent.url();\n }\n getEmoji(): string {\n return this.linkedEvent.getEmoji();\n }\n getCategories(): string[] {\n return this.linkedEvent.getCategories();\n }\n}\n\n/**\n * Makes a pair of events representing fast start and end times\n * @private\n */\nexport function makeFastStartEnd(\n ev: HolidayEvent,\n options: CalOptions\n): FastDayEvent {\n const desc = ev.getDesc();\n if (desc === 'Yom Kippur') {\n throw new RangeError('YK does not require this function');\n }\n const hd = ev.getDate();\n const dt = hd.greg();\n const location = options.location as Location;\n const fastEndDeg = options.fastEndDeg;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, dt, useElevation);\n let startEvent;\n let endEvent;\n if (desc === \"Erev Tish'a B'Av\") {\n const sunset = zmanim.sunset();\n if (!isNaN(sunset.getTime())) {\n startEvent = makeTimedEvent(ev, sunset, FAST_BEGINS, options);\n }\n } else if (desc.startsWith(\"Tish'a B'Av\")) {\n const tzeit = zmanim.tzeit(fastEndDeg);\n if (!isNaN(tzeit.getTime())) {\n endEvent = makeTimedEvent(ev, tzeit, FAST_ENDS, options);\n }\n } else {\n const dawn = zmanim.alotHaShachar();\n if (!isNaN(dawn.getTime())) {\n startEvent = makeTimedEvent(ev, dawn, FAST_BEGINS, options);\n }\n if (\n dt.getDay() !== 5 &&\n !(hd.getDate() === 14 && hd.getMonth() === months.NISAN)\n ) {\n const tzeit = zmanim.tzeit(fastEndDeg);\n if (!isNaN(tzeit.getTime())) {\n endEvent = makeTimedEvent(ev, tzeit, FAST_ENDS, options);\n }\n }\n }\n const ev2 = new FastDayEvent(ev, startEvent, endEvent);\n // copy properties such as memo or emoji\n Object.assign(ev2, ev);\n return ev2;\n}\n\n/**\n * @private\n */\nfunction makeTimedEvent(\n ev: Event,\n time: Date,\n desc: string,\n options: CalOptions\n): TimedEvent {\n const location = options.location as Location;\n const hd = ev.getDate();\n return new TimedEvent(hd, desc, ev.getFlags(), time, location, ev, options);\n}\n\nexport class TimedChanukahEvent extends ChanukahEvent {\n eventTime: Date;\n eventTimeStr: string;\n readonly location: Location;\n constructor(\n date: HDate,\n desc: string,\n mask: number,\n eventTime: Date,\n location: Location\n ) {\n super(date, desc, mask);\n this.eventTime = Zmanim.roundTime(eventTime);\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n this.location = location;\n }\n}\n\n/**\n * Makes a candle-lighting event for Chankah (not on Friday/Saturday).\n * At one point this used civil dusk (6 degrees below horizon).\n * Another source suggests 4.6667 degrees below horizon.\n * @private\n */\nexport function makeWeekdayChanukahCandleLighting(\n ev: HolidayEvent,\n hd: HDate,\n options: CalOptions\n): TimedChanukahEvent | null {\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd.greg(), useElevation);\n const candleLightingTime = zmanim.beinHaShmashos();\n if (isNaN(candleLightingTime.getTime())) {\n return null;\n }\n const ev2 = new TimedChanukahEvent(\n hd,\n ev.getDesc(),\n ev.getFlags(),\n candleLightingTime,\n location\n );\n ev2.emoji = ev.emoji;\n ev2.chanukahDay = ev.chanukahDay;\n return ev2;\n}\n","/* eslint-disable camelcase */\nimport {Event, flags} from './event';\nimport {CalOptions} from './CalOptions';\nimport {HDate, Locale, molad, Molad as MoladBase} from '@hebcal/hdate';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst shortDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nconst heDayNames = [\n 'רִאשׁוֹן',\n 'שֵׁנִי',\n 'שְׁלִישִׁי',\n 'רְבִיעִי',\n 'חֲמִישִׁי',\n 'שִׁישִּׁי',\n 'שַׁבָּת',\n];\nconst frDayNames = ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'];\nconst night = 'בַּלַּ֥יְלָה';\n\nfunction getHebrewTimeOfDay(hour: number): string {\n if (hour < 5) return night;\n else if (hour < 12) return 'בַּבֹּקֶר';\n else if (hour < 17) return 'בַּצׇּהֳרַיִים';\n else if (hour < 21) return 'בָּעֶרֶב';\n return night;\n}\n\n/**\n * Represents a molad, the moment when the new moon is \"born\"\n */\nexport class Molad {\n private readonly m: MoladBase;\n /**\n * Calculates the molad for a Hebrew month\n * @param year\n * @param month\n */\n constructor(year: number, month: number) {\n this.m = molad(year, month);\n }\n /**\n */\n getYear(): number {\n return this.m.year;\n }\n /**\n */\n getMonth(): number {\n return this.m.month;\n }\n /**\n */\n getMonthName(): string {\n return HDate.getMonthName(this.m.month, this.m.year);\n }\n /**\n * @returns Day of Week (0=Sunday, 6=Saturday)\n */\n getDow(): number {\n return this.m.dayOfWeek;\n }\n /**\n * @returns hour of day (0-23)\n */\n getHour(): number {\n return this.m.hour;\n }\n /**\n * @returns minutes past hour (0-59)\n */\n getMinutes(): number {\n return this.m.minutes;\n }\n /**\n * @returns parts of a minute (0-17)\n */\n getChalakim(): number {\n return this.m.chalakim;\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale)\n * @param options\n */\n render(locale?: string, options?: CalOptions): string {\n locale = locale ?? Locale.getLocaleName();\n if (typeof locale === 'string') {\n locale = locale.toLowerCase();\n }\n const isHebrewLocale =\n locale === 'he' || locale === 'he-x-nonikud' || locale === 'h';\n const isFrenchLocale = locale === 'fr';\n const monthName = Locale.gettext(this.getMonthName(), locale);\n const dayNames = isHebrewLocale ? heDayNames : (isFrenchLocale ? frDayNames : shortDayNames);\n const dow = dayNames[this.getDow()];\n const minutes = this.getMinutes();\n const hour = this.getHour();\n const chalakim = this.getChalakim();\n const moladStr = Locale.gettext('Molad', locale);\n const minutesStr = Locale.lookupTranslation('min', locale) ?? 'minutes';\n const chalakimStr = Locale.gettext('chalakim', locale);\n const and = Locale.gettext('and', locale);\n const after = Locale.gettext('after', locale);\n if (isHebrewLocale) {\n const ampm = getHebrewTimeOfDay(hour);\n const result =\n `${moladStr} ${monthName} יִהְיֶה בַּיּוֹם ${dow} בשָׁבוּעַ, ` +\n `בְּשָׁעָה ${hour} ${ampm}, ` +\n `ו-${minutes} ${minutesStr} ` +\n `ו-${chalakim} ${chalakimStr}`;\n if (locale === 'he-x-nonikud') {\n return Locale.hebrewStripNikkud(result);\n }\n return result;\n }\n const fmtTime = reformatTimeStr(`${hour}:00`, 'pm', options);\n const month = monthName.replace(/'/g, '’');\n return `${moladStr} ${month}: ${dow}, ${minutes} ${minutesStr} ${and} ${chalakim} ${chalakimStr} ${after} ${fmtTime}`;\n }\n}\n\n/** Represents a Molad announcement on Shabbat Mevarchim */\nexport class MoladEvent extends Event {\n readonly molad: Molad;\n private readonly options: CalOptions;\n /**\n * @param date Hebrew date event occurs\n * @param hyear molad year\n * @param hmonth molad month\n * @param options\n */\n constructor(date: HDate, hyear: number, hmonth: number, options: CalOptions) {\n const m = new Molad(hyear, hmonth);\n const monthName = m.getMonthName();\n super(date, `Molad ${monthName} ${hyear}`, flags.MOLAD);\n this.molad = m;\n this.options = options;\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return this.molad.render(locale, this.options);\n }\n}\n","import {\n HDate,\n Locale,\n OmerLang,\n gematriya,\n omerEmoji,\n omerSefira,\n omerTodayIs,\n} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Represents a day 1-49 of counting the Omer from Pesach to Shavuot */\nexport class OmerEvent extends Event {\n private readonly weekNumber: number;\n private readonly daysWithinWeeks: number;\n readonly omer: number;\n emoji?: string;\n\n /**\n * @param date\n * @param omerDay\n */\n constructor(date: HDate, omerDay: number) {\n super(date, `Omer ${omerDay}`, flags.OMER_COUNT);\n if (omerDay < 1 || omerDay > 49) {\n throw new RangeError(`Invalid Omer day ${omerDay}`);\n }\n this.weekNumber = Math.floor((omerDay - 1) / 7) + 1;\n this.daysWithinWeeks = omerDay % 7 || 7;\n this.omer = omerDay;\n }\n /**\n * @param lang\n */\n sefira(lang = 'en'): string {\n if (lang !== 'he' && lang !== 'translit') {\n lang = 'en';\n }\n return omerSefira(this.omer, lang as OmerLang);\n }\n /**\n * @todo use gettext()\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n locale = locale ?? Locale.getLocaleName();\n if (typeof locale === 'string') {\n locale = locale.toLowerCase();\n }\n const isHebrewLocale =\n locale === 'he' || locale === 'he-x-nonikud' || locale === 'h';\n const omer = this.omer;\n const nth = isHebrewLocale ? gematriya(omer) : Locale.ordinal(omer, locale);\n return nth + ' ' + Locale.gettext('day of the Omer', locale);\n }\n /**\n * Returns translation of \"Omer day 22\" without ordinal numbers.\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n return (\n Locale.gettext('Omer', locale) +\n ' ' +\n Locale.gettext('day', locale) +\n ' ' +\n this.omer\n );\n }\n\n getEmoji(): string {\n if (typeof this.emoji === 'string') return this.emoji;\n return omerEmoji(this.omer);\n }\n\n getWeeks(): number {\n const day7 = this.daysWithinWeeks === 7;\n return day7 ? this.weekNumber : this.weekNumber - 1;\n }\n\n getDaysWithinWeeks(): number {\n return this.daysWithinWeeks;\n }\n /**\n * @param locale\n */\n getTodayIs(locale: string): string {\n locale = locale ?? Locale.getLocaleName();\n if (typeof locale === 'string') {\n locale = locale.toLowerCase();\n }\n const omerLang = locale === 'he' || locale === 'he-x-nonikud' ? 'he' : 'en';\n const str = omerTodayIs(this.omer, omerLang) as string;\n if (locale === 'he-x-nonikud') {\n return Locale.hebrewStripNikkud(str);\n }\n return str;\n }\n\n url(): string {\n return `https://www.hebcal.com/omer/${this.getDate().getFullYear()}/${this.omer}`;\n }\n}\n","import {Locale} from './locale';\n\n/** @private */\nexport function renderParshaName(parsha: string[], locale?: string): string {\n const locale0 = locale ?? Locale.getLocaleName();\n let name = Locale.gettext(parsha[0], locale0);\n if (parsha.length === 2) {\n const hyphen = locale0 === 'he' ? '־' : '-';\n name += hyphen + Locale.gettext(parsha[1], locale0);\n }\n name = name.replace(/'/g, '’');\n const str = Locale.gettext('Parashat', locale) + ' ' + name;\n return str.normalize();\n}\n","export default class QuickLRU extends Map {\n\tconstructor(options = {}) {\n\t\tsuper();\n\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tif (typeof options.maxAge === 'number' && options.maxAge === 0) {\n\t\t\tthrow new TypeError('`maxAge` must be a number greater than 0');\n\t\t}\n\n\t\t// TODO: Use private class fields when ESLint supports them.\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.maxAge = options.maxAge || Number.POSITIVE_INFINITY;\n\t\tthis.onEviction = options.onEviction;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t// TODO: Use private class methods when targeting Node.js 16.\n\t_emitEvictions(cache) {\n\t\tif (typeof this.onEviction !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const [key, item] of cache) {\n\t\t\tthis.onEviction(key, item.value);\n\t\t}\n\t}\n\n\t_deleteIfExpired(key, item) {\n\t\tif (typeof item.expiry === 'number' && item.expiry <= Date.now()) {\n\t\t\tif (typeof this.onEviction === 'function') {\n\t\t\t\tthis.onEviction(key, item.value);\n\t\t\t}\n\n\t\t\treturn this.delete(key);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t_getOrDeleteIfExpired(key, item) {\n\t\tconst deleted = this._deleteIfExpired(key, item);\n\t\tif (deleted === false) {\n\t\t\treturn item.value;\n\t\t}\n\t}\n\n\t_getItemValue(key, item) {\n\t\treturn item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value;\n\t}\n\n\t_peek(key, cache) {\n\t\tconst item = cache.get(key);\n\n\t\treturn this._getItemValue(key, item);\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\t\t\tthis._emitEvictions(this.oldCache);\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\t_moveToRecent(key, item) {\n\t\tthis.oldCache.delete(key);\n\t\tthis._set(key, item);\n\t}\n\n\t* _entriesAscending() {\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield item;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\tconst item = this.cache.get(key);\n\n\t\t\treturn this._getItemValue(key, item);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst item = this.oldCache.get(key);\n\t\t\tif (this._deleteIfExpired(key, item) === false) {\n\t\t\t\tthis._moveToRecent(key, item);\n\t\t\t\treturn item.value;\n\t\t\t}\n\t\t}\n\t}\n\n\tset(key, value, {maxAge = this.maxAge} = {}) {\n\t\tconst expiry =\n\t\t\ttypeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY ?\n\t\t\t\tDate.now() + maxAge :\n\t\t\t\tundefined;\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, {\n\t\t\t\tvalue,\n\t\t\t\texpiry\n\t\t\t});\n\t\t} else {\n\t\t\tthis._set(key, {value, expiry});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn !this._deleteIfExpired(key, this.cache.get(key));\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn !this._deleteIfExpired(key, this.oldCache.get(key));\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this._peek(key, this.cache);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this._peek(key, this.oldCache);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\tresize(newSize) {\n\t\tif (!(newSize && newSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tconst items = [...this._entriesAscending()];\n\t\tconst removeCount = items.length - newSize;\n\t\tif (removeCount < 0) {\n\t\t\tthis.cache = new Map(items);\n\t\t\tthis.oldCache = new Map();\n\t\t\tthis._size = items.length;\n\t\t} else {\n\t\t\tif (removeCount > 0) {\n\t\t\t\tthis._emitEvictions(items.slice(0, removeCount));\n\t\t\t}\n\n\t\t\tthis.oldCache = new Map(items.slice(removeCount));\n\t\t\tthis.cache = new Map();\n\t\t\tthis._size = 0;\n\t\t}\n\n\t\tthis.maxSize = newSize;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesDescending() {\n\t\tlet items = [...this.cache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\titems = [...this.oldCache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesAscending() {\n\t\tfor (const [key, value] of this._entriesAscending()) {\n\t\t\tyield [key, value.value];\n\t\t}\n\t}\n\n\tget size() {\n\t\tif (!this._size) {\n\t\t\treturn this.oldCache.size;\n\t\t}\n\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this._size + oldCacheSize, this.maxSize);\n\t}\n\n\tentries() {\n\t\treturn this.entriesAscending();\n\t}\n\n\tforEach(callbackFunction, thisArgument = this) {\n\t\tfor (const [key, value] of this.entriesAscending()) {\n\t\t\tcallbackFunction.call(thisArgument, value, key, this);\n\t\t}\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn JSON.stringify([...this.entriesAscending()]);\n\t}\n}\n","/*\n Hebcal - A Jewish Calendar Generator\n Copyright (c) 1994-2020 Danny Sadinoff\n Portions copyright Eyal Schachter and Michael J. Radwin\n\n https://github.com/hebcal/hebcal-es6\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU General Public License\n as published by the Free Software Foundation; either version 2\n of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*\n * Many of the following algorithms were taken from hebrew calendar\n * routines by Maimonedes, from his Mishneh Torah, and implemented by\n * Nachum Dershowitz Department of Computer Science\n * (217) 333-4219 University of Illinois at Urbana-Champaign\n * nachum@cs.uiuedu 1304 West Springfield Avenue\n * Urbana, Illinois 61801\n *\n * The routines were included in the emacs 19 distribution.\n *\n */\nimport {HDate, months} from '@hebcal/hdate';\nimport {renderParshaName} from './parshaName';\nimport QuickLRU from 'quick-lru';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst INCOMPLETE = 0;\nconst REGULAR = 1;\nconst COMPLETE = 2;\n\nfunction yearType(hyear: number): number {\n const longC = HDate.longCheshvan(hyear);\n const shortK = HDate.shortKislev(hyear);\n if (longC && !shortK) {\n return COMPLETE;\n } else if (!longC && shortK) {\n return INCOMPLETE;\n } else {\n return REGULAR;\n }\n}\n\n/** The result from `Sedra.lookup()` */\nexport type SedraResult = {\n /**\n * Name of the parsha (or parshiyot) read on\n * Hebrew date, e.g. `['Noach']` or `['Matot', 'Masei']`\n */\n parsha: string[];\n /**\n * True if this is a regular parasha HaShavua\n * Torah reading, false if it's a special holiday reading\n */\n chag: boolean;\n /**\n * The parsha number (or numbers) using 1-indexing.\n * A `number` for a regular (single) parsha, and a `number[]`\n * for a doubled parsha.\n * For Parashat *Bereshit*, `num` would be equal to `1`, and for\n * *Matot-Masei* it would be `[42, 43]`\n */\n num?: number | number[];\n /** The date of the Shabbat this parsha is read */\n hdate: HDate;\n};\n\n/**\n * Represents Parashah HaShavua for an entire Hebrew year\n */\nexport class Sedra {\n private readonly year: number;\n private readonly il: boolean;\n private readonly firstSaturday: number;\n private readonly theSedraArray: readonly NumberOrString[];\n /**\n * Caculates the Parashah HaShavua for an entire Hebrew year\n * @param hyear - Hebrew year (e.g. 5749)\n * @param il - Use Israel sedra schedule (false for Diaspora)\n */\n constructor(hyear: number, il: boolean) {\n hyear = +hyear;\n this.year = hyear;\n\n const rh0 = new HDate(1, months.TISHREI, hyear);\n const rh = rh0.abs();\n const rhDay = rh0.getDay() + 1;\n\n // find the first Saturday on or after Rosh Hashana\n this.firstSaturday = HDate.dayOnOrBefore(6, rh + 6);\n const leap = +HDate.isLeapYear(hyear);\n this.il = Boolean(il);\n\n const type = yearType(hyear);\n let key = `${leap}${rhDay}${type}`;\n if (types[key]) {\n this.theSedraArray = types[key];\n } else {\n key = key + +this.il; // cast to num, then concat\n this.theSedraArray = types[key];\n }\n\n if (!this.theSedraArray) {\n throw new Error(\n `improper sedra year type ${key} calculated for ${hyear}`\n );\n }\n }\n\n /**\n * Returns the parsha (or parshiyot) read on Hebrew date\n * @deprecated Use {@link lookup} instead\n * @param hd Hebrew date or R.D. days\n */\n get(hd: HDate | number): string[] {\n return this.lookup(hd).parsha;\n }\n\n /**\n * Looks up parsha for the date, then returns a translated or transliterated string\n * @deprecated Use {@link lookup} instead\n * @param hd Hebrew date or R.D. days\n * @param [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale\n */\n getString(hd: HDate | number, locale?: string): string {\n const parsha = this.get(hd);\n return renderParshaName(parsha, locale);\n }\n\n /**\n * Checks to see if this day would be a regular parasha HaShavua\n * Torah reading or special holiday reading\n * @deprecated Use {@link lookup} instead\n * @param hd Hebrew date or R.D. days\n */\n isParsha(hd: HDate | number): boolean {\n return !this.lookup(hd).chag;\n }\n\n /**\n * Returns the date that a parsha occurs\n * or `null` if the parsha doesn't occur this year\n * @param parsha if a `string`, specified with Sephardic transliterations\n * like `'Noach'` or `'Matot-Masei'`. If an array, must be a 1- or 2-element\n * array such as `['Noach']` or `['Matot', 'Masei']`. If a `number`, should\n * be a 0-based parsha index (`0` for Bereshit, `1` for Noach) or a negative\n * number for a doubled parsha (e.g. `-21` for Vayakhel-Pekudei)\n */\n find(parsha: number | string | string[]): HDate | null {\n if (typeof parsha === 'number') {\n if (parsha >= parshiot.length || (parsha < 0 && !isValidDouble(parsha))) {\n throw new RangeError(`Invalid parsha number: ${parsha}`);\n }\n return this.findInternal(parsha);\n } else if (typeof parsha === 'string') {\n const num = parsha2id.get(parsha);\n if (typeof num === 'number') {\n return this.find(num);\n } else if (parsha.indexOf('-') !== -1) {\n if (parsha === CHMPESACH || parsha === CHMSUKOT) {\n return this.findInternal(parsha);\n }\n return this.find(parsha.split('-'));\n } else {\n // try to find Saturday holiday like 'Yom Kippur'\n return this.findInternal(parsha);\n }\n } else if (Array.isArray(parsha)) {\n const plen = parsha.length;\n if ((plen !== 1 && plen !== 2) || typeof parsha[0] !== 'string') {\n throw new TypeError(\n `Invalid parsha argument: ${JSON.stringify(parsha)}`\n );\n }\n if (plen === 1) {\n return this.find(parsha[0]);\n }\n const p1 = parsha[0];\n const p2 = parsha[1];\n const num1 = parsha2id.get(p1);\n const num2 = parsha2id.get(p2);\n if (\n typeof num1 !== 'number' ||\n typeof num2 !== 'number' ||\n num2 !== num1 + 1 ||\n !isValidDouble(-num1)\n ) {\n throw new RangeError(`Unrecognized parsha name: ${p1}-${p2}`);\n }\n return this.find(-num1);\n }\n return null; /* NOTREACHED */\n }\n\n private findInternal(parsha: NumberOrString): HDate | null {\n const idx = this.theSedraArray.indexOf(parsha);\n if (idx === -1) {\n return null; // doesn't occur this year\n }\n return new HDate(this.firstSaturday + idx * 7);\n }\n\n /**\n * Returns the date that a parsha (or its doubled or undoubled counterpart)\n * occurs, or `null` if the parsha doesn't occur this year\n */\n findContaining(parsha: number | string): HDate | null {\n const hdate = this.find(parsha);\n if (hdate) {\n return hdate;\n }\n if (typeof parsha === 'number') {\n // a valid negative number (double parsha in a year where they are\n // combined) would've been found above, and a invalid negative number\n // would've thrown an error, so this parsha must be a positive number\n // representing either p1 or p2\n const p1 = -parsha;\n if (isValidDouble(p1)) {\n return this.find(p1);\n } else {\n // this must be the second individual parsha of a doubled pair\n // for example 29 for Kedoshim, so check for -28 for Achrei Mot-Kedoshim\n return this.find(p1 + 1);\n }\n } else {\n const num = parsha2id.get(parsha);\n if (num) {\n // parsha is either the first or second individual parsha of\n // a pair that is doubled this year\n const p1 = -num;\n if (isValidDouble(p1)) {\n return this.find(p1);\n } else {\n return this.find(p1 + 1);\n }\n } else {\n // this was indeed a doubled parsha, so return date of the first half\n const [p1] = parsha.split('-');\n return this.find(p1);\n }\n }\n }\n\n /**\n * Returns the underlying annual sedra schedule.\n * Used by `@hebcal/triennial`\n */\n getSedraArray(): readonly NumberOrString[] {\n return this.theSedraArray;\n }\n\n /**\n * R.D. date of the first Saturday on or after Rosh Hashana\n */\n getFirstSaturday(): number {\n return this.firstSaturday;\n }\n\n getYear(): number {\n return this.year;\n }\n\n /**\n * Returns an object describing the parsha on the first Saturday on or after `hd`\n * @param hd Hebrew date or R.D. days\n */\n lookup(hd: HDate | number): SedraResult {\n const abs =\n typeof hd === 'number' ? hd : HDate.isHDate(hd) ? hd.abs() : NaN;\n\n if (isNaN(abs)) {\n throw new TypeError(`Bad date argument: ${hd}`);\n }\n\n // find the first saturday on or after today's date\n const saturday = HDate.dayOnOrBefore(6, abs + 6);\n\n const weekNum = (saturday - this.firstSaturday) / 7;\n const index = this.theSedraArray[weekNum];\n\n if (typeof index === 'undefined') {\n const sedra = getSedra(this.year + 1, this.il);\n return sedra.lookup(saturday); // must be next year\n }\n const hdate = new HDate(saturday);\n if (typeof index === 'string') {\n // Shabbat has a chag. Return a description\n return {parsha: [index], chag: true, hdate};\n }\n if (index >= 0) {\n return {parsha: [parshiot[index]], chag: false, num: index + 1, hdate};\n }\n\n const p1 = D(index); // undouble the parsha\n return {\n parsha: [parshiot[p1], parshiot[p1 + 1]],\n chag: false,\n num: [p1 + 1, p1 + 2],\n hdate,\n };\n }\n}\n\n/**\n * The 54 parshiyot of the Torah as transilterated strings.\n * parshiot[0] == 'Bereshit', parshiot[1] == 'Noach', parshiot[52] == \"Ha'azinu\".\n * @readonly\n * @type {string[]}\n */\nexport const parshiot: readonly string[] = [\n 'Bereshit',\n 'Noach',\n 'Lech-Lecha',\n 'Vayera',\n 'Chayei Sara',\n 'Toldot',\n 'Vayetzei',\n 'Vayishlach',\n 'Vayeshev',\n 'Miketz',\n 'Vayigash',\n 'Vayechi',\n 'Shemot',\n 'Vaera',\n 'Bo',\n 'Beshalach',\n 'Yitro',\n 'Mishpatim',\n 'Terumah',\n 'Tetzaveh',\n 'Ki Tisa',\n 'Vayakhel',\n 'Pekudei',\n 'Vayikra',\n 'Tzav',\n 'Shmini',\n 'Tazria',\n 'Metzora',\n 'Achrei Mot',\n 'Kedoshim',\n 'Emor',\n 'Behar',\n 'Bechukotai',\n 'Bamidbar',\n 'Nasso',\n \"Beha'alotcha\",\n \"Sh'lach\",\n 'Korach',\n 'Chukat',\n 'Balak',\n 'Pinchas',\n 'Matot',\n 'Masei',\n 'Devarim',\n 'Vaetchanan',\n 'Eikev',\n \"Re'eh\",\n 'Shoftim',\n 'Ki Teitzei',\n 'Ki Tavo',\n 'Nitzavim',\n 'Vayeilech',\n \"Ha'azinu\",\n] as const;\n\n// 0-based parsha IDs\nconst parsha2id = new Map<string, number>();\nfor (let id = 0; id < parshiot.length; id++) {\n const name = parshiot[id];\n parsha2id.set(name, id);\n}\n\n// 0-based parsha IDs\nconst doubles = [\n 21, // Vayakhel-Pekudei\n 26, // Tazria-Metzora\n 28, // Achrei Mot-Kedoshim\n 31, // Behar-Bechukotai\n 38, // Chukat-Balak\n 41, // Matot-Masei\n 50, // Nitzavim-Vayeilech\n];\n\n/**\n * @private\n * @param id a negative number\n */\nfunction isValidDouble(id: number): boolean {\n return doubles.includes(-id);\n}\n\n/**\n * parsha doubler/undoubler\n * @private\n * @param p\n */\nfunction D(p: number): number {\n return -p;\n}\n\nconst RH = 'Rosh Hashana'; // 0\nconst YK = 'Yom Kippur'; // 1\n\nconst SUKKOT = 'Sukkot'; // 0\nconst CHMSUKOT = 'Sukkot Shabbat Chol ha-Moed'; // 0\nconst SHMINI = 'Shmini Atzeret'; // 0\n\nconst PESACH = 'Pesach'; // 25\nconst PESACH1 = 'Pesach I';\nconst CHMPESACH = 'Pesach Shabbat Chol ha-Moed'; // 25\nconst PESACH7 = 'Pesach VII'; // 25\nconst PESACH8 = 'Pesach VIII';\nconst SHAVUOT = 'Shavuot'; // 33\n\n/**\n * Returns an array from start to end\n * @private\n * @param start beginning number, inclusive\n * @param stop ending number, inclusive\n */\nfunction range(start: number, stop: number): readonly number[] {\n return Array.from({length: stop - start + 1}, (v, k) => k + start);\n}\n\ntype NumberOrString = number | string;\n\nconst yearStartVayeilech: readonly NumberOrString[] = [51, 52, CHMSUKOT];\nconst yearStartHaazinu: readonly NumberOrString[] = [52, YK, CHMSUKOT];\nconst yearStartRH: readonly NumberOrString[] = [RH, 52, SUKKOT, SHMINI];\nconst r020 = range(0, 20);\nconst r027 = range(0, 27);\nconst r3340 = range(33, 40);\nconst r4349 = range(43, 49);\nconst r4350 = range(43, 50);\n\n/**\n * The ordinary year types (keviot)\n * names are leap/nonleap - day - incomplete/regular/complete - diaspora/Israel\n * @private\n * @readonly\n */\nconst types: Record<string, readonly NumberOrString[]> = {\n /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n * Kislev each have 29 days), and has Passover start on Tuesday. */\n // e.g. 5753\n '020': yearStartVayeilech.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\n // e.g. 5756\n '0220': yearStartVayeilech.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n 33,\n SHAVUOT,\n range(34, 37),\n D(38),\n 40,\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n // e.g. 5701\n '0510': yearStartHaazinu.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH1,\n PESACH8,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n // e.g. 5745\n '0511': yearStartHaazinu.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH,\n 25,\n D(26),\n D(28),\n range(30, 40),\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Sunday. */\n // e.g. 5754\n '052': yearStartHaazinu.concat(\n range(0, 24),\n PESACH7,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev\n * each have 29 days), and has Passover start on Sunday. */\n // e.g. 5761\n '070': yearStartRH.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH7,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Tuesday. */\n // e.g. 5716\n '072': yearStartRH.concat(\n r020,\n D(21),\n 23,\n 24,\n CHMPESACH,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4349,\n D(50)\n ),\n\n /* -- The leap year types (keviot) -- */\n /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n * Kislev each have 29 days), and has Passover start on Thursday. */\n // e.g. 5746\n '1200': yearStartVayeilech.concat(\n r027,\n CHMPESACH,\n range(28, 33),\n SHAVUOT,\n range(34, 37),\n D(38),\n 40,\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n * Kislev each have 29 days), and has Passover start on Thursday. */\n // e.g. 5746\n '1201': yearStartVayeilech.concat(\n r027,\n CHMPESACH,\n range(28, 40),\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Saturday. */\n // e.g.5752\n '1220': yearStartVayeilech.concat(\n r027,\n PESACH1,\n PESACH8,\n range(28, 40),\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Saturday. */\n // e.g.5752\n '1221': yearStartVayeilech.concat(r027, PESACH, range(28, 50)),\n\n /* Hebrew year that starts on Thursday, is `incomplete' (Heshvan and\n * Kislev both have 29 days), and has Passover start on Sunday. */\n // e.g. 5768\n '150': yearStartHaazinu.concat(range(0, 28), PESACH7, range(29, 50)),\n\n /* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n * Kislev both have 30 days), and has Passover start on Tuesday. */\n // eg. 5771\n '152': yearStartHaazinu.concat(range(0, 28), CHMPESACH, range(29, 49), D(50)),\n\n /* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and\n * Kislev each have 29 days), and has Passover start on Tuesday. */\n // e.g.5757\n '170': yearStartRH.concat(\n r027,\n CHMPESACH,\n range(28, 40),\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\n '1720': yearStartRH.concat(\n r027,\n CHMPESACH,\n range(28, 33),\n SHAVUOT,\n range(34, 37),\n D(38),\n 40,\n D(41),\n r4349,\n D(50)\n ),\n} as const;\n\n/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['0221'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\n// e.g. 5715\ntypes['0310'] = types['0220'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\ntypes['0311'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n// e.g. 5715\ntypes['1310'] = types['1220'];\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\ntypes['1311'] = types['1221'];\n\n/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['1721'] = types['170'];\n\nconst sedraCache = new QuickLRU<string, Sedra>({maxSize: 400});\n\n/**\n * Convenience function to create an instance of `Sedra` or reuse a previously\n * created and cached instance.\n * @param hyear\n * @param il\n */\nexport function getSedra(hyear: number, il: boolean): Sedra {\n const cacheKey = `${hyear}-${il ? 1 : 0}`;\n let sedra = sedraCache.get(cacheKey);\n if (!sedra) {\n sedra = new Sedra(hyear, il);\n sedraCache.set(cacheKey, sedra);\n }\n return sedra;\n}\n","import {Event, flags} from './event';\nimport {HDate, isoDateString} from '@hebcal/hdate';\nimport {renderParshaName} from './parshaName';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Represents one of 54 weekly Torah portions, always on a Saturday\n */\nexport class ParshaEvent extends Event {\n readonly parsha: string[];\n readonly il: boolean;\n readonly num: number | number[];\n /**\n * @param parsha - untranslated name of single or double parsha,\n * such as ['Bereshit'] or ['Achrei Mot', 'Kedoshim']\n */\n constructor(\n date: HDate,\n parsha: string[],\n il = false,\n num: number | number[] = -1\n ) {\n if (!Array.isArray(parsha) || parsha.length === 0 || parsha.length > 2) {\n throw new TypeError('Bad parsha argument');\n }\n const desc = 'Parashat ' + parsha.join('-');\n super(date, desc, flags.PARSHA_HASHAVUA);\n this.parsha = parsha;\n this.il = Boolean(il);\n this.num = num || -1;\n }\n /**\n * @param [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.\n */\n render(locale?: string): string {\n return renderParshaName(this.parsha, locale);\n }\n\n basename(): string {\n return this.parsha.join('-');\n }\n\n url(): string | undefined {\n const year = this.getDate().greg().getFullYear();\n if (year < 100) {\n return undefined;\n }\n const dt = this.urlDateSuffix();\n const url =\n 'https://www.hebcal.com/sedrot/' +\n this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\n '-' +\n dt;\n return this.il ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.getDate().greg());\n return isoDate.replace(/-/g, '');\n }\n}\n","import {HDate, months} from '@hebcal/hdate';\nimport {Event} from './event';\nimport {ParshaEvent} from './ParshaEvent';\nimport {getSedra} from './sedra';\n\n/**\n * Calculates weekly Torah Reading on Saturdays for entire year\n * @param year Hebrew year\n * @param il Israel (false for Diaspora)\n * @returns an array of `ParshaEvent` occurring on Saturdays that contain a regular\n * (non-holiday) Parashat HaShavua\n */\nexport function parshaYear(year: number, il: boolean): Event[] {\n const sedra = getSedra(year, il);\n const startAbs = sedra.getFirstSaturday();\n const endAbs = HDate.hebrew2abs(year, months.ELUL, 29);\n const events: Event[] = [];\n for (let absDt = startAbs; absDt <= endAbs; absDt += 7) {\n const parsha = sedra.lookup(absDt);\n if (!parsha.chag) {\n const ev = new ParshaEvent(parsha.hdate, parsha.parsha, il, parsha.num);\n events.push(ev);\n }\n }\n return events;\n}\n","import {HDate, months} from '@hebcal/hdate';\n\nconst SUN = 0;\nconst TUE = 2;\nconst FRI = 5;\nconst SAT = 6;\n\nconst NISAN = months.NISAN;\nconst IYYAR = months.IYYAR;\n\n/**\n * Yom HaShoah first observed in 1951.\n * When the actual date of Yom Hashoah falls on a Friday, the\n * state of Israel observes Yom Hashoah on the preceding\n * Thursday. When it falls on a Sunday, Yom Hashoah is observed\n * on the following Monday.\n * http://www.ushmm.org/remembrance/dor/calendar/\n * @private\n * @param year\n */\nexport function dateYomHaShoah(year: number): HDate | null {\n if (year < 5711) {\n return null;\n }\n let nisan27dt = new HDate(27, NISAN, year);\n if (nisan27dt.getDay() === FRI) {\n nisan27dt = new HDate(26, NISAN, year);\n } else if (nisan27dt.getDay() === SUN) {\n nisan27dt = new HDate(28, NISAN, year);\n }\n return nisan27dt;\n}\n\n/**\n * Yom HaAtzma'ut only celebrated after 1948\n * @private\n * @param year\n */\nexport function dateYomHaZikaron(year: number): HDate | null {\n if (year < 5708) {\n return null;\n }\n let day;\n const pesach = new HDate(15, NISAN, year);\n const pdow = pesach.getDay();\n if (pdow === SUN) {\n day = 2;\n } else if (pdow === SAT) {\n day = 3;\n } else if (year < 5764) {\n day = 4;\n } else if (pdow === TUE) {\n day = 5;\n } else {\n day = 4;\n }\n return new HDate(day, IYYAR, year);\n}\n","import {HDate, Locale} from '@hebcal/hdate';\nimport {flags} from './event';\nimport {HolidayEvent} from './HolidayEvent';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst ykk = 'Yom Kippur Katan';\n\n/** YKK is minor day of atonement on the day preceeding each Rosh Chodesh */\nexport class YomKippurKatanEvent extends HolidayEvent {\n private readonly nextMonthName: string;\n /**\n * @private\n * @param date Hebrew date event occurs\n * @param nextMonthName name of the upcoming month\n */\n constructor(date: HDate, nextMonthName: string) {\n super(\n date,\n `${ykk} ${nextMonthName}`,\n flags.MINOR_FAST | flags.YOM_KIPPUR_KATAN\n );\n this.nextMonthName = nextMonthName;\n this.memo = `Minor Day of Atonement on the day preceeding Rosh Chodesh ${nextMonthName}`;\n }\n\n basename(): string {\n return this.getDesc();\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n const monthName0 = Locale.gettext(this.nextMonthName, locale);\n const monthName = monthName0.replace(/'/g, '’');\n return Locale.gettext(ykk, locale) + ' ' + monthName;\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n return Locale.gettext(ykk, locale);\n }\n\n url(): string | undefined {\n return undefined;\n }\n}\n","/*\n Hebcal - A Jewish Calendar Generator\n Copyright (c) 1994-2020 Danny Sadinoff\n Portions copyright Eyal Schachter and Michael J. Radwin\n\n https://github.com/hebcal/hebcal-es6\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU General Public License\n as published by the Free Software Foundation; either version 2\n of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {HDate, months} from '@hebcal/hdate';\nimport QuickLRU from 'quick-lru';\nimport {Event, flags} from './event';\nimport {dateYomHaShoah, dateYomHaZikaron} from './modern';\nimport {getSedra} from './sedra';\nimport {\n staticHolidays,\n staticModernHolidays,\n holidayDesc as hdesc,\n} from './staticHolidays';\nimport {YomKippurKatanEvent} from './YomKippurKatanEvent';\nimport {\n HolidayEvent,\n ChanukahEvent,\n AsaraBTevetEvent,\n RoshHashanaEvent,\n RoshChodeshEvent,\n} from './HolidayEvent';\n\n/** @private */\nfunction observedInIsrael(ev: Event): boolean {\n return ev.observedInIsrael();\n}\n\n/** @private */\nfunction observedInDiaspora(ev: Event): boolean {\n return ev.observedInDiaspora();\n}\n\n/** @private */\nfunction holidayFilter(il: boolean) {\n return il ? observedInIsrael : observedInDiaspora;\n}\n\n/**\n * Returns an array of Events on this date (or `undefined` if no events)\n * @param date Hebrew Date, Gregorian date, or absolute R.D. day number\n * @param [il] use the Israeli schedule for holidays\n */\nexport function getHolidaysOnDate(\n date: HDate | Date | number,\n il?: boolean\n): HolidayEvent[] | undefined {\n const hd = HDate.isHDate(date) ? (date as HDate) : new HDate(date);\n const hdStr = hd.toString();\n const yearMap = getHolidaysForYear_(hd.getFullYear());\n const events = yearMap.get(hdStr);\n // if il isn't a boolean return both diaspora + IL for day\n if (typeof il === 'undefined' || typeof events === 'undefined') {\n return events;\n }\n const filtered = events.filter(holidayFilter(il));\n return filtered;\n}\n\nconst CHAG = flags.CHAG;\nconst IL_ONLY = flags.IL_ONLY;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\nconst CHANUKAH_CANDLES = flags.CHANUKAH_CANDLES;\nconst MINOR_FAST = flags.MINOR_FAST;\nconst SPECIAL_SHABBAT = flags.SPECIAL_SHABBAT;\nconst MODERN_HOLIDAY = flags.MODERN_HOLIDAY;\nconst MAJOR_FAST = flags.MAJOR_FAST;\nconst MINOR_HOLIDAY = flags.MINOR_HOLIDAY;\nconst EREV = flags.EREV;\n\nconst SUN = 0;\nconst TUE = 2;\nconst THU = 4;\nconst FRI = 5;\nconst SAT = 6;\n\nconst NISAN = months.NISAN;\nconst TAMUZ = months.TAMUZ;\nconst AV = months.AV;\nconst TISHREI = months.TISHREI;\nconst KISLEV = months.KISLEV;\nconst TEVET = months.TEVET;\nconst ADAR_I = months.ADAR_I;\nconst ADAR_II = months.ADAR_II;\n\nconst emojiIsraelFlag = {emoji: '🇮🇱'} as const;\nconst chanukahEmoji = '🕎';\nexport type HolidayYearMap = Map<string, HolidayEvent[]>;\nconst yearCache = new QuickLRU<number, HolidayYearMap>({maxSize: 400});\n\nconst KEYCAP_DIGITS = [\n '0️⃣',\n '1️⃣',\n '2️⃣',\n '3️⃣',\n '4️⃣',\n '5️⃣',\n '6️⃣',\n '7️⃣',\n '8️⃣',\n '9️⃣',\n] as const;\n\n/**\n * Lower-level holidays interface, which returns a `Map` of `Event`s indexed by\n * `HDate.toString()`. These events must filtered especially for `flags.IL_ONLY`\n * or `flags.CHUL_ONLY` depending on Israel vs. Diaspora holiday scheme.\n * @private\n */\nexport function getHolidaysForYear_(year: number): HolidayYearMap {\n if (typeof year !== 'number') {\n throw new TypeError(`bad Hebrew year: ${year}`);\n } else if (year < 1 || year > 32658) {\n throw new RangeError(`Hebrew year ${year} out of range 1-32658`);\n }\n const cached = yearCache.get(year);\n if (cached) {\n return cached;\n }\n\n const RH = new HDate(1, TISHREI, year);\n const pesach = new HDate(15, NISAN, year);\n\n const map = new Map<string, HolidayEvent[]>();\n function add(...events: HolidayEvent[]) {\n for (const ev of events) {\n const key = ev.date.toString();\n const arr = map.get(key);\n if (typeof arr === 'object') {\n if (arr[0].getFlags() & EREV) {\n arr.unshift(ev);\n } else {\n arr.push(ev);\n }\n } else {\n map.set(key, [ev]);\n }\n }\n }\n\n for (const h of staticHolidays) {\n const hd = new HDate(h.dd, h.mm, year);\n const ev = new HolidayEvent(hd, h.desc, h.flags);\n if (h.emoji) ev.emoji = h.emoji;\n if (h.chmDay) ev.cholHaMoedDay = h.chmDay;\n add(ev);\n }\n\n // standard holidays that don't shift based on year\n add(new RoshHashanaEvent(RH, year, CHAG | LIGHT_CANDLES_TZEIS));\n\n // Variable date holidays\n const tzomGedaliahDay: number = RH.getDay() === THU ? 4 : 3;\n add(\n new HolidayEvent(\n new HDate(tzomGedaliahDay, TISHREI, year),\n hdesc.TZOM_GEDALIAH,\n MINOR_FAST\n )\n );\n // first SAT after RH\n add(\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, 7 + RH.abs())),\n hdesc.SHABBAT_SHUVA,\n SPECIAL_SHABBAT\n )\n );\n const rchTevet = HDate.shortKislev(year)\n ? new HDate(1, TEVET, year)\n : new HDate(30, KISLEV, year);\n add(new HolidayEvent(rchTevet, hdesc.CHAG_HABANOT, MINOR_HOLIDAY));\n // yes, we know Kislev 30-32 are wrong\n // HDate() corrects the month automatically\n for (let candles = 2; candles <= 8; candles++) {\n const hd = new HDate(23 + candles, KISLEV, year);\n add(\n new ChanukahEvent(\n hd,\n `Chanukah: ${candles} Candles`,\n MINOR_HOLIDAY | CHANUKAH_CANDLES,\n {\n chanukahDay: candles - 1,\n emoji: chanukahEmoji + KEYCAP_DIGITS[candles],\n }\n )\n );\n }\n add(\n new ChanukahEvent(\n new HDate(32, KISLEV, year),\n hdesc.CHANUKAH_8TH_DAY,\n MINOR_HOLIDAY,\n {chanukahDay: 8, emoji: chanukahEmoji}\n )\n );\n add(\n new AsaraBTevetEvent(\n new HDate(10, TEVET, year),\n hdesc.ASARA_BTEVET,\n MINOR_FAST\n )\n );\n const pesachAbs = pesach.abs();\n add(\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, pesachAbs - 43)),\n hdesc.SHABBAT_SHEKALIM,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, pesachAbs - 30)),\n hdesc.SHABBAT_ZACHOR,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n new HDate(pesachAbs - (pesach.getDay() === TUE ? 33 : 31)),\n hdesc.TAANIT_ESTHER,\n MINOR_FAST\n )\n );\n const haChodeshAbs = HDate.dayOnOrBefore(SAT, pesachAbs - 14);\n add(\n new HolidayEvent(\n new HDate(haChodeshAbs - 7),\n hdesc.SHABBAT_PARAH,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n new HDate(haChodeshAbs),\n hdesc.SHABBAT_HACHODESH,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, pesachAbs - 1)),\n hdesc.SHABBAT_HAGADOL,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n // if the fast falls on Shabbat, move to Thursday\n pesach.prev().getDay() === SAT\n ? pesach.onOrBefore(THU)\n : new HDate(14, NISAN, year),\n hdesc.TAANIT_BECHOROT,\n MINOR_FAST\n )\n );\n add(\n new HolidayEvent(\n new HDate(\n HDate.dayOnOrBefore(SAT, new HDate(1, TISHREI, year + 1).abs() - 4)\n ),\n hdesc.LEIL_SELICHOT,\n MINOR_HOLIDAY,\n {emoji: '🕍'}\n )\n );\n\n if (pesach.getDay() === SUN) {\n add(\n new HolidayEvent(\n new HDate(16, ADAR_II, year),\n hdesc.PURIM_MESHULASH,\n MINOR_HOLIDAY\n )\n );\n }\n\n if (HDate.isLeapYear(year)) {\n add(\n new HolidayEvent(\n new HDate(14, ADAR_I, year),\n hdesc.PURIM_KATAN,\n MINOR_HOLIDAY,\n {emoji: '🎭️'}\n )\n );\n add(\n new HolidayEvent(\n new HDate(15, ADAR_I, year),\n hdesc.SHUSHAN_PURIM_KATAN,\n MINOR_HOLIDAY,\n {emoji: '🎭️'}\n )\n );\n }\n\n const nisan27dt = dateYomHaShoah(year);\n if (nisan27dt) {\n add(new HolidayEvent(nisan27dt, hdesc.YOM_HASHOAH, MODERN_HOLIDAY));\n }\n\n const yomHaZikaronDt = dateYomHaZikaron(year);\n if (yomHaZikaronDt) {\n add(\n new HolidayEvent(\n yomHaZikaronDt,\n hdesc.YOM_HAZIKARON,\n MODERN_HOLIDAY,\n emojiIsraelFlag\n ),\n new HolidayEvent(\n yomHaZikaronDt.next(),\n hdesc.YOM_HAATZMA_UT,\n MODERN_HOLIDAY,\n emojiIsraelFlag\n )\n );\n }\n\n for (const h of staticModernHolidays) {\n if (year >= h.firstYear) {\n let hd = new HDate(h.dd, h.mm, year);\n const dow = hd.getDay();\n if (h.friSatMovetoThu && (dow === FRI || dow === SAT)) {\n hd = hd.onOrBefore(THU);\n } else if (h.friPostponeToSun && dow === FRI) {\n hd = new HDate(hd.abs() + 2);\n } else if (h.satPostponeToSun && dow === SAT) {\n hd = hd.next();\n }\n const mask = h.chul ? MODERN_HOLIDAY : MODERN_HOLIDAY | IL_ONLY;\n const ev = new HolidayEvent(hd, h.desc, mask);\n if (!h.suppressEmoji) {\n ev.emoji = '🇮🇱';\n }\n add(ev);\n }\n }\n\n let tamuz17 = new HDate(17, TAMUZ, year);\n let tamuz17attrs;\n if (tamuz17.getDay() === SAT) {\n tamuz17 = new HDate(18, TAMUZ, year);\n tamuz17attrs = {observed: true};\n }\n add(new HolidayEvent(tamuz17, hdesc.TZOM_TAMMUZ, MINOR_FAST, tamuz17attrs));\n\n let av9dt = new HDate(9, AV, year);\n let av9title = hdesc.TISHA_BAV;\n let av9attrs;\n if (av9dt.getDay() === SAT) {\n av9dt = av9dt.next();\n av9attrs = {observed: true};\n av9title += ' (observed)';\n }\n const av9abs = av9dt.abs();\n add(\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, av9abs)),\n hdesc.SHABBAT_CHAZON,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n av9dt.prev(),\n hdesc.EREV_TISHA_BAV,\n EREV | MAJOR_FAST,\n av9attrs\n ),\n new HolidayEvent(av9dt, av9title, MAJOR_FAST, av9attrs),\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, av9abs + 7)),\n hdesc.SHABBAT_NACHAMU,\n SPECIAL_SHABBAT\n )\n );\n\n const monthsInYear = HDate.monthsInYear(year);\n for (let month = 1; month <= monthsInYear; month++) {\n const monthName = HDate.getMonthName(month, year);\n if (\n (month === NISAN\n ? HDate.daysInMonth(HDate.monthsInYear(year - 1), year - 1)\n : HDate.daysInMonth(month - 1, year)) === 30\n ) {\n add(new RoshChodeshEvent(new HDate(1, month, year), monthName));\n add(new RoshChodeshEvent(new HDate(30, month - 1, year), monthName));\n } else if (month !== TISHREI) {\n add(new RoshChodeshEvent(new HDate(1, month, year), monthName));\n }\n }\n\n // Begin: Yom Kippur Katan\n // start at Iyyar because one may not fast during Nisan\n for (let month = months.IYYAR; month <= monthsInYear; month++) {\n const nextMonth = month + 1;\n // Yom Kippur Katan is not observed on the day before Rosh Hashanah.\n // Not observed prior to Rosh Chodesh Cheshvan because Yom Kippur has just passed.\n // Not observed before Rosh Chodesh Tevet, because that day is Hanukkah.\n if (\n nextMonth === TISHREI ||\n nextMonth === months.CHESHVAN ||\n nextMonth === TEVET\n ) {\n continue;\n }\n let ykk = new HDate(29, month, year);\n const dow = ykk.getDay();\n if (dow === FRI || dow === SAT) {\n ykk = ykk.onOrBefore(THU);\n }\n\n const nextMonthName = HDate.getMonthName(nextMonth, year);\n const ev = new YomKippurKatanEvent(ykk, nextMonthName);\n add(ev);\n }\n\n const sedra = getSedra(year, false);\n const beshalachHd = sedra.find(15) as HDate;\n add(new HolidayEvent(beshalachHd, hdesc.SHABBAT_SHIRAH, SPECIAL_SHABBAT));\n\n // Birkat Hachamah appears only once every 28 years\n const birkatHaChama = getBirkatHaChama(year);\n if (birkatHaChama) {\n const hd = new HDate(birkatHaChama);\n add(\n new HolidayEvent(hd, hdesc.BIRKAT_HACHAMAH, MINOR_HOLIDAY, {emoji: '☀️'})\n );\n }\n\n yearCache.set(year, map);\n return map;\n}\n\n/**\n * Birkat Hachamah appears only once every 28 years.\n * Although almost always in Nisan, it can occur in Adar II.\n * - 27 Adar II 5461 (Gregorian year 1701)\n * - 29 Adar II 5993 (Gregorian year 2233)\n *\n * Due to drift, this will eventually slip into Iyyar\n * - 2 Iyyar 7141 (Gregorian year 3381)\n * @private\n */\nfunction getBirkatHaChama(year: number): number {\n const leap = HDate.isLeapYear(year);\n const startMonth = leap ? ADAR_II : NISAN;\n const startDay = leap ? 20 : 1;\n const baseRd = HDate.hebrew2abs(year, startMonth, startDay);\n for (let day = 0; day <= 40; day++) {\n const abs = baseRd + day;\n const elapsed = abs + 1373429;\n if (elapsed % 10227 === 172) {\n return abs;\n }\n }\n return 0;\n}\n\n/**\n * Returns an array of holidays for the year\n * @param year Hebrew year\n * @param il use the Israeli schedule for holidays\n */\nexport function getHolidaysForYearArray(\n year: number,\n il: boolean\n): HolidayEvent[] {\n const yearMap = getHolidaysForYear_(year);\n const startAbs = HDate.hebrew2abs(year, TISHREI, 1);\n const endAbs = HDate.hebrew2abs(year + 1, TISHREI, 1) - 1;\n let events: HolidayEvent[] = [];\n const myFilter = il ? observedInIsrael : observedInDiaspora;\n for (let absDt = startAbs; absDt <= endAbs; absDt++) {\n const hd = new HDate(absDt);\n const holidays = yearMap.get(hd.toString());\n if (holidays) {\n const filtered: HolidayEvent[] = holidays.filter(myFilter);\n events = events.concat(filtered);\n }\n }\n return events;\n}\n","import {HDate, Locale, months} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {Molad} from './molad';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst mevarchimChodeshStr = 'Shabbat Mevarchim Chodesh';\n\n/** Represents Mevarchim haChodesh, the announcement of the new month */\nexport class MevarchimChodeshEvent extends Event {\n readonly monthName: string;\n /**\n * Constructs Mevarchim haChodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n * @param [memo]\n * @param locale Optional locale name\n */\n constructor(date: HDate, monthName: string, memo: string, locale?: string) {\n super(date, `${mevarchimChodeshStr} ${monthName}`, flags.SHABBAT_MEVARCHIM);\n this.monthName = Locale.gettext(monthName, locale);\n if (memo) {\n this.memo = memo;\n } else {\n const hyear = date.getFullYear();\n const hmonth = date.getMonth();\n const monNext =\n hmonth === HDate.monthsInYear(hyear) ? months.NISAN : hmonth + 1;\n const molad = new Molad(hyear, monNext);\n this.memo = molad.render('en', {hour12: false});\n }\n }\n\n basename(): string {\n return this.getDesc();\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n const monthName0 = Locale.gettext(this.monthName, locale);\n const monthName = monthName0.replace(/'/g, '’');\n return Locale.gettext(mevarchimChodeshStr, locale) + ' ' + monthName;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n const str = this.render(locale);\n const space = str.indexOf(' ');\n return str.substring(space + 1);\n }\n}\n","import {HDate} from '@hebcal/hdate';\nimport {Event} from './event';\n\ntype LearningCalendar = {\n fn: Function;\n startDate?: HDate;\n};\nconst cals = new Map<string, LearningCalendar>();\n\n/**\n * Plug-ins for daily learning calendars such as Daf Yomi, Mishna Yomi, Nach Yomi, etc.\n *\n * Learning schedules are provided by the `@hebcal/learning` package.\n */\nexport class DailyLearning {\n /**\n * Register a new learning calendar.\n * @param name case insensitive\n * @param calendar a function that returns an `Event` or `null`\n * @param startDate the first date for which this calendar is valid\n */\n static addCalendar(name: string, calendar: Function, startDate?: HDate) {\n if (typeof calendar !== 'function') {\n throw new TypeError(`Invalid calendar function: ${calendar}`);\n }\n cals.set(name.toLowerCase(), {\n fn: calendar,\n startDate: startDate,\n });\n }\n\n /**\n * Returns an event from daily calendar for a given date. Returns `null` if there\n * is no learning from this calendar on this date.\n * @param name case insensitive\n * @param hd Hebrew Date\n * @param il true for Israel, false for Diaspora\n */\n static lookup(name: string, hd: HDate, il: boolean): Event | null {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.fn(hd, il);\n }\n return null;\n }\n\n static getStartDate(name: string): HDate | undefined {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.startDate;\n }\n return undefined;\n }\n\n /**\n * Tests to see if learning calendar has been registered\n * @param name case insensitive\n */\n static has(name: string): boolean {\n return cals.has(name.toLowerCase());\n }\n\n /** Returns the names of all calendars registered */\n static getCalendars(): string[] {\n return Array.from(cals.keys());\n }\n}\n","import {HDate, months} from '@hebcal/hdate';\nimport {Event, flags} from './event';\n\nconst NONE = 0;\nconst HALF = 1;\nconst WHOLE = 2;\n\n/**\n * @private\n */\nexport function hallel_(events: Event[], hdate: HDate): number {\n const whole = events\n .filter(ev => {\n const desc: string = ev.getDesc();\n const hd: HDate = ev.getDate();\n const month = hd.getMonth();\n const mday = hd.getDate();\n return (\n desc.startsWith('Chanukah') ||\n desc.startsWith('Shavuot') ||\n desc.startsWith('Sukkot') ||\n (month === months.NISAN &&\n (mday === 15 || mday === 16) &&\n ev.getFlags() & flags.CHAG) || // Pesach\n desc === \"Yom HaAtzma'ut\" ||\n desc === 'Yom Yerushalayim'\n );\n })\n .map(ev => {\n return ev.getDate().abs();\n });\n\n const abs = hdate.abs();\n if (whole.includes(abs)) {\n return WHOLE;\n }\n\n const half = events\n .filter(ev => {\n const desc = ev.getDesc();\n return (\n ev.getFlags() & flags.ROSH_CHODESH ||\n (desc.startsWith('Pesach') &&\n desc !== 'Pesach I' &&\n desc !== 'Pesach II')\n );\n })\n .map(ev => {\n return ev.getDate().abs();\n });\n\n if (half.includes(abs)) {\n return HALF;\n }\n\n return NONE;\n}\n","import {HDate, months} from '@hebcal/hdate';\nimport {dateYomHaZikaron} from './modern';\n\nfunction range(start: number, end: number): readonly number[] {\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n}\n\n/**\n * Is *tachanun* said today?\n */\nexport type TachanunResult = {\n /** Tachanun is said at Shacharit */\n shacharit: boolean;\n /** Tachanun is said at Mincha */\n mincha: boolean;\n /** All congregations say Tachanun on the day */\n allCongs: boolean;\n};\n\nconst NONE: TachanunResult = {\n shacharit: false,\n mincha: false,\n allCongs: false,\n} as const;\n\n/**\n * Return details on what Tachanun (or Tzidchatcha on Shabbat) is said on `hdate`.\n *\n * Tachanun is not said on Rosh Chodesh, the month of Nisan, Lag Baomer,\n * Rosh Chodesh Sivan until Isru Chag, Tisha B'av, 15 Av, Erev Rosh Hashanah,\n * Rosh Hashanah, Erev Yom Kippur until after Simchat Torah, Chanukah,\n * Tu B'shvat, Purim and Shushan Purim, and Purim and Shushan Purim Katan.\n *\n * In some congregations Tachanun is not said until from Rosh Chodesh Sivan\n * until 14th Sivan, Sukkot until after Rosh Chodesh Cheshvan, Pesach Sheini,\n * Yom Ha'atzmaut, and Yom Yerushalayim.\n *\n * Tachanun is not said at Mincha on days before it is not said at Shacharit.\n *\n * Tachanun is not said at Shacharit on Shabbat, but is at Mincha, usually.\n */\nexport function tachanun(hdate: HDate, il: boolean): TachanunResult {\n return tachanun0(hdate, il, true);\n}\n\nfunction tachanun0(\n hdate: HDate,\n il: boolean,\n checkNext: boolean\n): TachanunResult {\n const year = hdate.yy;\n const dates = tachanunYear(year, il);\n const abs = hdate.abs();\n if (dates.none.indexOf(abs) > -1) {\n return NONE;\n }\n const dow = hdate.getDay();\n const ret: TachanunResult = {\n shacharit: false,\n mincha: false,\n allCongs: false,\n };\n if (dates.some.indexOf(abs) === -1) {\n ret.allCongs = true;\n }\n if (dow !== 6) {\n ret.shacharit = true;\n }\n const tomorrow = abs + 1;\n if (checkNext && dates.yesPrev.indexOf(tomorrow) === -1) {\n const tmp = tachanun0(new HDate(tomorrow), il, false);\n ret.mincha = tmp.shacharit;\n } else {\n ret.mincha = dow !== 5;\n }\n if (ret.allCongs && !ret.mincha && !ret.shacharit) {\n return NONE;\n }\n return ret;\n}\n\ntype TachanunYear = {\n none: number[];\n some: number[];\n yesPrev: number[];\n};\n\nfunction tachanunYear(year: number, il: boolean): TachanunYear {\n const leap = HDate.isLeapYear(year);\n const monthsInYear = HDate.monthsInYear(year);\n let av9dt = new HDate(9, months.AV, year);\n if (av9dt.getDay() === 6) {\n av9dt = av9dt.next();\n }\n let shushPurim = new HDate(15, months.ADAR_II, year);\n if (shushPurim.getDay() === 6) {\n shushPurim = shushPurim.next();\n }\n const none: readonly HDate[] = [\n new HDate(2, months.TISHREI, year), // Rosh Hashana II\n ].concat(\n // Rosh Chodesh - 1st of every month. Also includes RH day 1 (1 Tishrei)\n range(1, monthsInYear).map(month => new HDate(1, month, year)),\n // Rosh Chodesh - 30th of months that have one\n range(1, monthsInYear)\n .filter(month => HDate.daysInMonth(month, year) === 30)\n .map(month => new HDate(30, month, year)),\n // entire month of Nisan\n range(1, HDate.daysInMonth(months.NISAN, year)).map(\n mday => new HDate(mday, months.NISAN, year)\n ),\n new HDate(18, months.IYYAR, year), // Lag BaOmer\n // Rosh Chodesh Sivan thru Isru Chag\n range(1, 8 - (il ? 1 : 0)).map(mday => new HDate(mday, months.SIVAN, year)),\n av9dt, // Tisha B'Av\n new HDate(15, months.AV, year), // Tu B'Av\n new HDate(29, months.ELUL, year), // Erev Rosh Hashanah\n // Erev Yom Kippur thru Isru Chag\n range(9, 24 - (il ? 1 : 0)).map(\n mday => new HDate(mday, months.TISHREI, year)\n ),\n // Chanukah\n range(25, 33).map(mday => new HDate(mday, months.KISLEV, year)),\n new HDate(15, months.SHVAT, year), // Tu BiShvat\n new HDate(14, months.ADAR_II, year), // Purim\n shushPurim,\n leap ? new HDate(14, months.ADAR_I, year) : [] // Purim Katan\n );\n const some: readonly HDate[] = [\n new HDate(14, months.IYYAR, year), // Pesach Sheini\n ].concat(\n // Until 14 Sivan\n range(1, 13).map(mday => new HDate(mday, months.SIVAN, year)),\n // Until after Rosh Chodesh Cheshvan\n range(20, 31).map(mday => new HDate(mday, months.TISHREI, year)),\n // Yom HaAtzma'ut, which changes based on day of week\n year >= 5708 ? (dateYomHaZikaron(year) as HDate).next() : [],\n // Yom Yerushalayim\n year >= 5727 ? new HDate(28, months.IYYAR, year) : []\n );\n const yesPrev: readonly HDate[] = [\n new HDate(29, months.ELUL, year - 1), // Erev Rosh Hashanah\n new HDate(9, months.TISHREI, year), // Erev Yom Kippur\n new HDate(14, months.IYYAR, year), // Pesach Sheini\n ];\n return {\n none: none.map(hd => hd.abs()).sort((a, b) => a - b),\n some: some.map(hd => hd.abs()).sort((a, b) => a - b),\n yesPrev: yesPrev.map(hd => hd.abs()).sort((a, b) => a - b),\n };\n}\n","import {greg2abs, isDate, daysInGregMonth, HDate, months} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\n\nconst TISHREI = months.TISHREI;\n\n/**\n * Gets the R.D. days for a number, Date, or HDate\n * @private\n */\nfunction getAbs(d: Date | HDate | number): number {\n if (typeof d === 'number') return d;\n if (isDate(d)) return greg2abs(d as Date);\n if (HDate.isHDate(d)) return (d as HDate).abs();\n throw new TypeError(`Invalid date type: ${d}`);\n}\n\nfunction getYear(options: CalOptions): number {\n if (typeof options.year !== 'undefined') {\n return Number(options.year);\n }\n return options.isHebrewYear\n ? new HDate().getFullYear()\n : new Date().getFullYear();\n}\n\n/**\n * Parse options object to determine start & end days\n * @private\n */\nexport function getStartAndEnd(options: CalOptions): number[] {\n if ((options.start && !options.end) || (options.end && !options.start)) {\n throw new TypeError('Both options.start and options.end are required');\n } else if (options.start && options.end) {\n return [getAbs(options.start), getAbs(options.end)];\n }\n const isHebrewYear = Boolean(options.isHebrewYear);\n const theYear = getYear(options);\n if (isNaN(theYear)) {\n throw new RangeError(`Invalid year ${options.year}`);\n } else if (isHebrewYear && theYear < 1) {\n throw new RangeError(`Invalid Hebrew year ${theYear}`);\n }\n const theMonth = getMonth(options);\n const numYears = Number(options.numYears) || 1;\n if (isHebrewYear) {\n return startEndHebrew(theMonth, theYear, numYears);\n } else {\n return startEndGregorian(theMonth, theYear, numYears);\n }\n}\n\nfunction getMonth(options: CalOptions): number {\n if (options.month) {\n if (options.isHebrewYear) {\n return HDate.monthNum(options.month);\n } else if (typeof options.month === 'number') {\n return options.month;\n }\n }\n return NaN;\n}\n\nfunction startEndGregorian(\n theMonth: number,\n theYear: number,\n numYears: number\n): number[] {\n const gregMonth = theMonth ? theMonth - 1 : 0;\n const startGreg = new Date(theYear, gregMonth, 1);\n if (theYear < 100) {\n startGreg.setFullYear(theYear);\n }\n const startAbs = greg2abs(startGreg);\n let endAbs;\n if (theMonth) {\n endAbs = startAbs + daysInGregMonth(theMonth, theYear) - 1;\n } else {\n const endYear = theYear + numYears;\n const endGreg = new Date(endYear, 0, 1);\n if (endYear < 100) {\n endGreg.setFullYear(endYear);\n }\n endAbs = greg2abs(endGreg) - 1;\n }\n return [startAbs, endAbs];\n}\n\nfunction startEndHebrew(\n theMonth: number,\n theYear: number,\n numYears: number\n): number[] {\n const startDate = new HDate(1, theMonth || TISHREI, theYear);\n let startAbs = startDate.abs();\n const endAbs = theMonth\n ? startAbs + startDate.daysInMonth()\n : new HDate(1, TISHREI, theYear + numYears).abs() - 1;\n // for full Hebrew year, start on Erev Rosh Hashana which\n // is technically in the previous Hebrew year\n // (but conveniently lets us get candle-lighting time for Erev)\n if (!theMonth && theYear > 1) {\n startAbs--;\n }\n return [startAbs, endAbs];\n}\n","import {Locale} from './locale';\nimport {abs2greg, HDate, months} from '@hebcal/hdate';\nimport {CalOptions, DailyLearningValue} from './CalOptions';\nimport {\n makeCandleEvent,\n makeFastStartEnd,\n makeWeekdayChanukahCandleLighting,\n} from './candles';\nimport {Event, flags} from './event';\nimport {getStartAndEnd} from './getStartAndEnd';\nimport {HebrewDateEvent} from './HebrewDateEvent';\nimport {HolidayYearMap, getHolidaysForYear_} from './holidays';\nimport {ParshaEvent} from './ParshaEvent';\nimport {Sedra, getSedra} from './sedra';\nimport {TimedEvent, HavdalahEvent} from './TimedEvent';\nimport {DailyLearning} from './DailyLearning';\nimport {HolidayEvent} from './HolidayEvent';\nimport {MevarchimChodeshEvent} from './MevarchimChodeshEvent';\nimport {MoladEvent, Molad} from './molad';\nimport {OmerEvent} from './omer';\nimport {Zmanim} from './zmanim';\nimport {Location} from './location';\n\n/**\n * Calculates holidays and other Hebrew calendar events based on {@link CalOptions}.\n *\n * Each holiday is represented by an {@link Event} object which includes a date,\n * a description, flags and optional attributes.\n * If given no options, returns holidays for the Diaspora for the current Gregorian year.\n *\n * The date range returned by this function can be controlled by:\n * * `options.year` - Gregorian (e.g. 1993) or Hebrew year (e.g. 5749)\n * * `options.isHebrewYear` - to interpret `year` as Hebrew year\n * * `options.numYears` - generate calendar for multiple years (default 1)\n * * `options.month` - Gregorian or Hebrew month (to filter results to a single month)\n *\n * Alternatively, specify start and end days with `Date` or {@link HDate} instances:\n * * `options.start` - use specific start date (requires `end` date)\n * * `options.end` - use specific end date (requires `start` date)\n *\n * Unless `options.noHolidays == true`, default holidays include:\n * * Major holidays - Rosh Hashana, Yom Kippur, Pesach, Sukkot, etc.\n * * Minor holidays - Purim, Chanukah, Tu BiShvat, Lag BaOmer, etc.\n * * Minor fasts - Ta'anit Esther, Tzom Gedaliah, etc. (unless `options.noMinorFast`)\n * * Special Shabbatot - Shabbat Shekalim, Zachor, etc. (unless `options.noSpecialShabbat`)\n * * Modern Holidays - Yom HaShoah, Yom HaAtzma'ut, etc. (unless `options.noModern`)\n * * Rosh Chodesh (unless `options.noRoshChodesh`)\n *\n * Holiday and Torah reading schedules differ between Israel and the Disapora.\n * Set `options.il=true` to use the Israeli schedule.\n *\n * Additional non-default event types can be specified:\n * * Parashat HaShavua - weekly Torah Reading on Saturdays (`options.sedrot`)\n * * Counting of the Omer (`options.omer`)\n * * Shabbat Mevarchim HaChodesh on Saturday before Rosh Chodesh (`options.shabbatMevarchim`)\n * * Molad announcement on Saturday before Rosh Chodesh (`options.molad`)\n * * Yom Kippur Katan (`options.yomKippurKatan`)\n * * Yizkor (`options.yizkor`)\n *\n * Daily Study of texts are supported by the\n * {@link https://github.com/hebcal/hebcal-learning @hebcal/learning} package,\n * for example:\n * * Babylonian Talmud Daf Yomi (`options.dailyLearning.dafYomi`)\n * * Jerusalem Talmud (Yerushalmi) Yomi (`options.dailyLearning.yerushalmi`)\n * * Mishna Yomi (`options.dailyLearning.mishnaYomi`)\n * * Nach Yomi (`options.dailyLearning.nachYomi`)\n *\n * Candle-lighting and Havdalah times are approximated using latitude and longitude\n * specified by the {@link Location} class. The `Location` class contains a small\n * database of cities with their associated geographic information and time-zone information.\n * If you ever have any doubts about Hebcal's times, consult your local halachic authority.\n * If you enter geographic coordinates above the arctic circle or antarctic circle,\n * the times are guaranteed to be wrong.\n *\n * To add candle-lighting options, set `options.candlelighting=true` and set\n * `options.location` to an instance of `Location`. By default, candle lighting\n * time is 18 minutes before sundown (40 minutes for Jerusalem,\n * 30 minutes for Haifa and Zikhron Ya'akov) and Havdalah is\n * calculated according to Tzeit Hakochavim - Nightfall (the point when 3 small stars\n * are observable in the night time sky with the naked eye). The default Havdalah\n * option (Tzeit Hakochavim) is calculated when the sun is 8.5° below the horizon.\n * These defaults can be changed using these options:\n * * `options.candleLightingMins` - minutes before sundown to light candles\n * * `options.havdalahMins` - minutes after sundown for Havdalah (typical values are 42, 50, or 72).\n * Havdalah times are suppressed when `options.havdalahMins=0`.\n * * `options.havdalahDeg` - degrees for solar depression for Havdalah.\n * Default is 8.5 degrees for 3 small stars. Use 7.083 degrees for 3 medium-sized stars.\n * Havdalah times are suppressed when `options.havdalahDeg=0`.\n *\n * If both `options.candlelighting=true` and `options.location` is specified,\n * Chanukah candle-lighting times and minor fast start/end times will also be generated.\n * Chanukah candle-lighting is at Bein HaShmashos (13.5 minutes before\n * the sun is 7.083° below the horizon in the evening)\n * on weekdays, at regular candle-lighting time on Fridays, and at regular Havdalah time on\n * Saturday night (see above).\n *\n * Minor fasts begin at Alot HaShachar (sun is 16.1° below the horizon in the morning) and\n * end when 3 medium-sized stars are observable in the night sky (sun is 7.083° below the horizon\n * in the evening).\n *\n * Two options also exist for generating an Event with the Hebrew date:\n * * `options.addHebrewDates` - print the Hebrew date for the entire date range\n * * `options.addHebrewDatesForEvents` - print the Hebrew date for dates with some events\n *\n * Lastly, translation and transliteration of event titles is controlled by\n * `options.locale` and the {@link Locale} API.\n * `@hebcal/core` supports three locales by default:\n * * `en` - default, Sephardic transliterations (e.g. \"Shabbat\")\n * * `ashkenazi` - Ashkenazi transliterations (e.g. \"Shabbos\")\n * * `he` - Hebrew (e.g. \"שַׁבָּת\")\n *\n * Additional locales (such as `ru` or `fr`) are supported by the\n * {@link https://github.com/hebcal/hebcal-locales @hebcal/locales} package\n *\n * @example\n * import {HebrewCalendar, HDate, Location, Event} from '@hebcal/core';\n * const options: CalOptions = {\n * year: 1981,\n * isHebrewYear: false,\n * candlelighting: true,\n * location: Location.lookup('San Francisco'),\n * sedrot: true,\n * omer: true,\n * };\n * const events = HebrewCalendar.calendar(options);\n * for (const ev of events) {\n * const hd = ev.getDate();\n * const date = hd.greg();\n * console.log(date.toLocaleDateString(), ev.render('en'), hd.toString());\n * }\n */\nexport function calendar(options: CalOptions = {}): Event[] {\n options = {...options}; // so we can modify freely\n checkCandleOptions(options);\n const location = (options.location = options.location || defaultLocation);\n const il = (options.il = options.il || location.getIsrael() || false);\n const hasUserMask = typeof options.mask === 'number';\n options.mask = getMaskFromOptions(options);\n if (options.ashkenazi || options.locale) {\n if (options.locale && typeof options.locale !== 'string') {\n throw new TypeError(`Invalid options.locale: ${options.locale}`);\n }\n const locale = options.ashkenazi ? 'ashkenazi' : (options.locale as string);\n const translationObj = Locale.useLocale(locale);\n if (!translationObj) {\n throw new TypeError(\n `Locale '${locale}' not found; did you forget to import @hebcal/locales?`\n );\n }\n } else {\n Locale.useLocale('en');\n }\n\n const evts: Event[] = [];\n let sedra: Sedra | undefined;\n let holidaysYear: HolidayYearMap | undefined;\n let beginOmer = -1;\n let endOmer = -1;\n let currentYear = -1;\n const startAndEnd = getStartAndEnd(options);\n warnUnrecognizedOptions(options);\n const startAbs = startAndEnd[0];\n const endAbs = startAndEnd[1];\n const startGreg = abs2greg(startAbs);\n if (startGreg.getFullYear() < 100) {\n options.candlelighting = false;\n }\n for (let abs = startAbs; abs <= endAbs; abs++) {\n const hd = new HDate(abs);\n const hyear = hd.getFullYear();\n if (hyear !== currentYear) {\n currentYear = hyear;\n holidaysYear = getHolidaysForYear_(currentYear);\n if (options.sedrot) {\n sedra = getSedra(currentYear, il);\n }\n if (options.omer) {\n beginOmer = HDate.hebrew2abs(currentYear, NISAN, 16);\n endOmer = HDate.hebrew2abs(currentYear, SIVAN, 5);\n }\n }\n const prevEventsLength = evts.length;\n const dow = hd.getDay();\n const isFriday = dow === FRI;\n const isSaturday = dow === SAT;\n let candlesEv: TimedEvent | undefined;\n const holidays = holidaysYear!.get(hd.toString()) || [];\n for (const ev of holidays) {\n candlesEv = appendHolidayAndRelated(\n candlesEv,\n evts,\n ev,\n options,\n isFriday,\n isSaturday,\n hasUserMask\n );\n }\n if (options.sedrot && isSaturday) {\n const parsha0 = sedra!.lookup(abs);\n if (!parsha0.chag) {\n evts.push(new ParshaEvent(hd, parsha0.parsha, il, parsha0.num));\n }\n }\n if (options.yizkor) {\n const mm = hd.getMonth();\n const dd = hd.getDate();\n if (\n (mm === months.TISHREI && (dd === 10 || dd === 22)) ||\n (mm === NISAN && dd === (il ? 21 : 22)) ||\n (mm === SIVAN && dd === (il ? 6 : 7))\n ) {\n const linkedEvent = holidays.filter(ev => ev.observedIn(il))[0];\n const ev = new Event(hd, 'Yizkor', flags.YIZKOR, {\n emoji: '🕯️',\n linkedEvent,\n });\n evts.push(ev);\n }\n }\n const dailyLearning = options.dailyLearning;\n let numDailyLearning = 0;\n if (typeof dailyLearning === 'object') {\n const events = makeDailyLearning(hd, dailyLearning, il);\n numDailyLearning = events.length;\n if (numDailyLearning) {\n evts.push(...events);\n }\n }\n if (options.omer && abs >= beginOmer && abs <= endOmer) {\n const omer = abs - beginOmer + 1;\n const omerEv = makeOmerEvent(hd, omer, options);\n evts.push(omerEv);\n }\n if (isSaturday && (options.molad || options.shabbatMevarchim)) {\n const events = makeMoladAndMevarchimChodesh(hd, options);\n evts.push(...events);\n }\n if (!candlesEv && options.candlelighting && (isFriday || isSaturday)) {\n candlesEv = makeCandleEvent(undefined, hd, options, isFriday, isSaturday);\n if (isFriday && candlesEv && sedra) {\n const parsha = sedra.lookup(abs);\n const pe = new ParshaEvent(hd.next(), parsha.parsha, il, parsha.num);\n candlesEv.memo = pe.render(options.locale);\n }\n }\n // suppress Havdalah when options.havdalahMins=0 or options.havdalahDeg=0\n if (\n candlesEv instanceof HavdalahEvent &&\n (options.havdalahMins === 0 || options.havdalahDeg === 0)\n ) {\n candlesEv = undefined;\n }\n if (candlesEv) {\n evts.push(candlesEv);\n }\n if (\n options.addHebrewDates ||\n (options.addHebrewDatesForEvents &&\n prevEventsLength !== evts.length - numDailyLearning)\n ) {\n const e2 = new HebrewDateEvent(hd);\n if (prevEventsLength === evts.length) {\n evts.push(e2);\n } else {\n evts.splice(prevEventsLength, 0, e2);\n }\n }\n }\n return evts;\n}\n\nconst FRI = 5;\nconst SAT = 6;\n\nconst NISAN = months.NISAN;\nconst SIVAN = months.SIVAN;\nconst ELUL = months.ELUL;\n\nconst LIGHT_CANDLES = flags.LIGHT_CANDLES;\nconst YOM_TOV_ENDS = flags.YOM_TOV_ENDS;\nconst CHUL_ONLY = flags.CHUL_ONLY;\nconst IL_ONLY = flags.IL_ONLY;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\nconst CHANUKAH_CANDLES = flags.CHANUKAH_CANDLES;\nconst MINOR_FAST = flags.MINOR_FAST;\nconst SPECIAL_SHABBAT = flags.SPECIAL_SHABBAT;\nconst MODERN_HOLIDAY = flags.MODERN_HOLIDAY;\nconst MAJOR_FAST = flags.MAJOR_FAST;\nconst ROSH_CHODESH = flags.ROSH_CHODESH;\nconst PARSHA_HASHAVUA = flags.PARSHA_HASHAVUA;\nconst DAF_YOMI = flags.DAF_YOMI;\nconst MISHNA_YOMI = flags.MISHNA_YOMI;\nconst NACH_YOMI = flags.NACH_YOMI;\nconst YERUSHALMI_YOMI = flags.YERUSHALMI_YOMI;\nconst OMER_COUNT = flags.OMER_COUNT;\nconst SHABBAT_MEVARCHIM = flags.SHABBAT_MEVARCHIM;\nconst MINOR_HOLIDAY = flags.MINOR_HOLIDAY;\nconst EREV = flags.EREV;\nconst CHOL_HAMOED = flags.CHOL_HAMOED;\nconst YOM_KIPPUR_KATAN = flags.YOM_KIPPUR_KATAN;\nconst YIZKOR = flags.YIZKOR;\n\ntype StringIntMap = Record<string, number>;\n\nconst unrecognizedAlreadyWarned = new Set<string>();\nconst RECOGNIZED_OPTIONS: StringIntMap = {\n location: 1,\n year: 1,\n isHebrewYear: 1,\n month: 1,\n numYears: 1,\n start: 1,\n end: 1,\n candlelighting: 1,\n candleLightingMins: 1,\n havdalahMins: 1,\n havdalahDeg: 1,\n fastEndDeg: 1,\n sedrot: 1,\n il: 1,\n noMinorFast: 1,\n noModern: 1,\n shabbatMevarchim: 1,\n noRoshChodesh: 1,\n noSpecialShabbat: 1,\n noHolidays: 1,\n omer: 1,\n molad: 1,\n ashkenazi: 1,\n locale: 1,\n addHebrewDates: 1,\n addHebrewDatesForEvents: 1,\n mask: 1,\n yomKippurKatan: 1,\n hour12: 1,\n dailyLearning: 1,\n useElevation: 1,\n yizkor: 1,\n} as const satisfies Record<keyof CalOptions, 1>;\n\n/**\n * @private\n */\nfunction warnUnrecognizedOptions(options: CalOptions) {\n for (const k of Object.keys(options)) {\n if (\n typeof RECOGNIZED_OPTIONS[k] === 'undefined' &&\n !unrecognizedAlreadyWarned.has(k)\n ) {\n console.warn(`Ignoring unrecognized HebrewCalendar option: ${k}`);\n unrecognizedAlreadyWarned.add(k);\n }\n }\n if (options.dailyLearning) {\n for (const k of Object.keys(options.dailyLearning)) {\n if (!unrecognizedAlreadyWarned.has(k) && !DailyLearning.has(k)) {\n console.warn(`Ignoring unrecognized DailyLearning calendar: ${k}`);\n unrecognizedAlreadyWarned.add(k);\n }\n }\n }\n}\n\nconst israelCityOffset: StringIntMap = {\n Jerusalem: 40,\n Haifa: 30,\n \"Zikhron Ya'aqov\": 30,\n \"Zikhron Ya'akov\": 30,\n 'Zikhron Yaakov': 30,\n \"Zichron Ya'akov\": 30,\n 'Zichron Yaakov': 30,\n} as const;\n\nconst geoIdCandleOffset: StringIntMap = {\n '281184': 40, // Jerusalem\n '294801': 30, // Haifa\n '293067': 30, // Zikhron Yaakov\n} as const;\n\n/**\n * @private\n * @constant\n * This calculation is based on the position of the sun 36 minutes after sunset in Jerusalem\n * around the equinox / equilux, which is 8.5° below geometric zenith.\n * The Ohr Meir considers this the time that 3 small stars are visible,\n * which is later than the required 3 medium stars.\n * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ZmanimCalendar.html#ZENITH_8_POINT_5}\n */\nconst TZEIT_3SMALL_STARS = 8.5;\n\n/**\n * @private\n * @constant\n * This calculation is based on observation of 3 medium sized stars by Dr. Baruch Cohen\n * in his calendar published in in 1899 in Strasbourg, France.\n * This calculates to 7.0833333° below geometric zenith.\n * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#ZENITH_7_POINT_083}\n */\nconst TZEIT_3MEDIUM_STARS = 7.0833333;\n\n/**\n * Modifies options in-place\n * @private\n */\nfunction checkCandleOptions(options: CalOptions) {\n if (!options.candlelighting) {\n return;\n }\n const location = options.location;\n if (typeof location === 'undefined' || !(location instanceof Location)) {\n throw new TypeError(\n 'options.candlelighting requires valid options.location'\n );\n }\n if (\n typeof options.havdalahMins === 'number' &&\n typeof options.havdalahDeg === 'number'\n ) {\n throw new TypeError(\n 'options.havdalahMins and options.havdalahDeg are mutually exclusive'\n );\n }\n\n const min0 = options.candleLightingMins;\n let min = typeof min0 === 'number' && !isNaN(min0) ? Math.trunc(min0) : 18;\n if (location.getIsrael() && Math.abs(min) === 18) {\n min = overrideIsraelCandleMins(location, min);\n }\n options.candleLightingMins = -1 * Math.abs(min);\n\n if (typeof options.havdalahMins === 'number') {\n options.havdalahMins = Math.trunc(Math.abs(options.havdalahMins));\n } else if (typeof options.havdalahDeg === 'number') {\n options.havdalahDeg = Math.abs(options.havdalahDeg);\n } else {\n options.havdalahDeg = TZEIT_3SMALL_STARS;\n }\n if (typeof options.fastEndDeg !== 'number') {\n options.fastEndDeg = TZEIT_3MEDIUM_STARS;\n }\n}\n\nfunction overrideIsraelCandleMins(location: Location, min: number) {\n const geoid = location.getGeoId();\n if (geoid) {\n const offset = geoIdCandleOffset[geoid];\n if (typeof offset === 'number') {\n return offset;\n }\n }\n const shortName = location.getShortName();\n if (shortName) {\n const offset = israelCityOffset[shortName];\n if (typeof offset === 'number') {\n return offset;\n }\n }\n return min;\n}\n\n/**\n * Mask to filter Holiday array\n * @private\n */\nfunction getMaskFromOptions(options: CalOptions): number {\n if (typeof options.mask === 'number') {\n return setOptionsFromMask(options);\n }\n const il = options.il || options.location?.getIsrael() || false;\n let mask = 0;\n\n // default options\n if (!options.noHolidays) {\n mask |=\n ROSH_CHODESH |\n YOM_TOV_ENDS |\n MINOR_FAST |\n SPECIAL_SHABBAT |\n MODERN_HOLIDAY |\n MAJOR_FAST |\n MINOR_HOLIDAY |\n EREV |\n CHOL_HAMOED |\n LIGHT_CANDLES |\n LIGHT_CANDLES_TZEIS |\n CHANUKAH_CANDLES;\n }\n if (options.candlelighting) {\n mask |= LIGHT_CANDLES | LIGHT_CANDLES_TZEIS | YOM_TOV_ENDS;\n }\n // suppression of defaults\n if (options.noRoshChodesh) {\n mask &= ~ROSH_CHODESH;\n }\n if (options.noModern) {\n mask &= ~MODERN_HOLIDAY;\n }\n if (options.noMinorFast) {\n mask &= ~MINOR_FAST;\n }\n if (options.noSpecialShabbat) {\n mask &= ~SPECIAL_SHABBAT;\n mask &= ~SHABBAT_MEVARCHIM;\n }\n if (il) {\n mask |= IL_ONLY;\n } else {\n mask |= CHUL_ONLY;\n }\n // non-default options\n if (options.sedrot) {\n mask |= PARSHA_HASHAVUA;\n }\n if (options.omer) {\n mask |= OMER_COUNT;\n }\n if (options.shabbatMevarchim) {\n mask |= SHABBAT_MEVARCHIM;\n }\n if (options.yomKippurKatan) {\n mask |= YOM_KIPPUR_KATAN;\n }\n if (options.yizkor) {\n mask |= YIZKOR;\n }\n if (options.dailyLearning) {\n const dailyLearning = options.dailyLearning;\n if (dailyLearning.dafYomi) {\n mask |= DAF_YOMI;\n }\n if (dailyLearning.mishnaYomi) {\n mask |= MISHNA_YOMI;\n }\n if (dailyLearning.nachYomi) {\n mask |= NACH_YOMI;\n }\n if (dailyLearning.yerushalmi) {\n mask |= YERUSHALMI_YOMI;\n }\n }\n\n return mask;\n}\n\nconst MASK_LIGHT_CANDLES =\n LIGHT_CANDLES | LIGHT_CANDLES_TZEIS | CHANUKAH_CANDLES | YOM_TOV_ENDS;\n\nconst defaultLocation = new Location(0, 0, false, 'UTC');\n\n/**\n * @private\n */\nfunction setOptionsFromMask(options: CalOptions): number {\n const m = options.mask || 0;\n if (m & ROSH_CHODESH) delete options.noRoshChodesh;\n if (m & MODERN_HOLIDAY) delete options.noModern;\n if (m & MINOR_FAST) delete options.noMinorFast;\n if (m & SPECIAL_SHABBAT) delete options.noSpecialShabbat;\n if (m & PARSHA_HASHAVUA) options.sedrot = true;\n if (m & (DAF_YOMI | MISHNA_YOMI | NACH_YOMI | YERUSHALMI_YOMI)) {\n options.dailyLearning = options.dailyLearning || {};\n if (m & DAF_YOMI) {\n options.dailyLearning.dafYomi = true;\n }\n if (m & MISHNA_YOMI) {\n options.dailyLearning.mishnaYomi = true;\n }\n if (m & NACH_YOMI) {\n options.dailyLearning.nachYomi = true;\n }\n if (m & YERUSHALMI_YOMI) {\n options.dailyLearning.yerushalmi = 1;\n }\n }\n if (m & OMER_COUNT) options.omer = true;\n if (m & SHABBAT_MEVARCHIM) options.shabbatMevarchim = true;\n if (m & YOM_KIPPUR_KATAN) options.yomKippurKatan = true;\n if (m & YIZKOR) options.yizkor = true;\n return m;\n}\n\n/**\n * Appends the Event `ev` to the `events` array. Also may add related\n * timed events like candle-lighting or fast start/end\n * @private\n */\nfunction appendHolidayAndRelated(\n candlesEv: TimedEvent | undefined,\n events: Event[],\n ev: HolidayEvent,\n options: CalOptions,\n isFriday: boolean,\n isSaturday: boolean,\n hasUserMask: boolean\n): TimedEvent | undefined {\n const il = options.il || false;\n if (!ev.observedIn(il)) {\n return candlesEv; // holiday isn't observed here; bail out early\n }\n const eFlags = ev.getFlags();\n if (\n (!options.yomKippurKatan && eFlags & YOM_KIPPUR_KATAN) ||\n (options.noModern && eFlags & MODERN_HOLIDAY)\n ) {\n return candlesEv; // bail out early\n }\n const isMajorFast = Boolean(eFlags & MAJOR_FAST);\n const isMinorFast = Boolean(eFlags & MINOR_FAST);\n let fastEv;\n if (\n options.candlelighting &&\n (isMajorFast || isMinorFast) &&\n ev.getDesc() !== 'Yom Kippur'\n ) {\n ev = fastEv = makeFastStartEnd(ev, options);\n if (\n fastEv.startEvent &&\n (isMajorFast || (isMinorFast && !options.noMinorFast))\n ) {\n events.push(fastEv.startEvent);\n }\n }\n if (eFlags & Number(options.mask) || (!eFlags && !hasUserMask)) {\n if (options.candlelighting && eFlags & MASK_LIGHT_CANDLES) {\n const hd = ev.getDate();\n candlesEv = makeCandleEvent(ev, hd, options, isFriday, isSaturday);\n if (eFlags & CHANUKAH_CANDLES && candlesEv && !options.noHolidays) {\n // Replace Chanukah event with a clone that includes candle lighting time.\n // For clarity, allow a \"duplicate\" candle lighting event to remain for Shabbat\n const chanukahEv = makeWeekdayChanukahCandleLighting(ev, hd, options);\n if (chanukahEv) {\n if (isFriday || isSaturday) {\n chanukahEv.eventTime = candlesEv.eventTime;\n chanukahEv.eventTimeStr = candlesEv.eventTimeStr;\n }\n ev = chanukahEv;\n }\n candlesEv = undefined;\n }\n }\n if (\n !options.noHolidays ||\n (options.yomKippurKatan && eFlags & YOM_KIPPUR_KATAN)\n ) {\n events.push(ev); // the original event itself\n }\n }\n if (\n (isMajorFast || (isMinorFast && !options.noMinorFast)) &&\n fastEv &&\n fastEv.endEvent\n ) {\n events.push(fastEv.endEvent);\n }\n return candlesEv;\n}\n\nfunction makeMoladAndMevarchimChodesh(hd: HDate, options: CalOptions): Event[] {\n const evts: Event[] = [];\n const hmonth = hd.getMonth();\n const hdate = hd.getDate();\n if (hmonth !== ELUL && hdate >= 23 && hdate <= 29) {\n const hyear = hd.getFullYear();\n const monNext = hmonth === HDate.monthsInYear(hyear) ? NISAN : hmonth + 1;\n if (options.molad) {\n evts.push(new MoladEvent(hd, hyear, monNext, options));\n }\n if (options.shabbatMevarchim) {\n const nextMonthName = HDate.getMonthName(monNext, hyear);\n const molad = new Molad(hyear, monNext);\n const memo = molad.render(options.locale || 'en', options);\n evts.push(\n new MevarchimChodeshEvent(hd, nextMonthName, memo, options.locale)\n );\n }\n }\n return evts;\n}\n\nfunction dailyLearningName(key: string, val: DailyLearningValue): string {\n if (key === 'yerushalmi') {\n return val === 2 ? 'yerushalmi-schottenstein' : 'yerushalmi-vilna';\n }\n return key;\n}\n\nfunction makeDailyLearning(\n hd: HDate,\n dailyLearning: Record<string, DailyLearningValue>,\n il: boolean\n): Event[] {\n const evts: Event[] = [];\n for (const [key, val] of Object.entries(dailyLearning)) {\n if (val) {\n const name = dailyLearningName(key, val);\n const learningEv = DailyLearning.lookup(name, hd, il);\n if (learningEv) {\n evts.push(learningEv);\n }\n }\n }\n return evts;\n}\n\nfunction makeOmerEvent(hd: HDate, omerDay: number, options: CalOptions) {\n const omerEv = new OmerEvent(hd, omerDay);\n if (options.candlelighting) {\n const location = options.location!;\n const zmanim = new Zmanim(location, hd.prev(), false);\n const tzeit = zmanim.tzeit(7.0833);\n if (!isNaN(tzeit.getTime())) {\n omerEv.alarm = tzeit;\n }\n }\n return omerEv;\n}\n","/*\n Hebcal - A Jewish Calendar Generator\n Copyright (c) 1994-2020 Danny Sadinoff\n Portions copyright Eyal Schachter and Michael J. Radwin\n\n https://github.com/hebcal/hebcal-es6\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU General Public License\n as published by the Free Software Foundation; either version 2\n of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {getBirthdayHD, getYahrzeitHD, HDate} from '@hebcal/hdate';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\nimport {CalOptions} from './CalOptions';\nimport {version as pkgVersion} from './pkgVersion';\nimport {Event, flags} from './event';\nimport {Sedra, getSedra} from './sedra';\nimport {hallel_} from './hallel';\nimport {\n getHolidaysForYear_,\n getHolidaysForYearArray,\n getHolidaysOnDate,\n HolidayYearMap,\n} from './holidays';\nimport {HolidayEvent} from './HolidayEvent';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport {TachanunResult, tachanun} from './tachanun';\nimport {calendar} from './calendar';\n\n/**\n * HebrewCalendar is the main interface to the `@hebcal/core` library.\n * This namespace is used to calculate holidays, rosh chodesh, candle lighting & havdalah times,\n * Parashat HaShavua, Daf Yomi, days of the omer, and the molad.\n * Event names can be rendered in several languges using the `locale` option.\n */\nexport class HebrewCalendar {\n private constructor() {}\n /**\n * Calculates holidays and other Hebrew calendar events based on {@link CalOptions}.\n *\n * Each holiday is represented by an {@link Event} object which includes a date,\n * a description, flags and optional attributes.\n * If given no options, returns holidays for the Diaspora for the current Gregorian year.\n *\n * The date range returned by this function can be controlled by:\n * * `options.year` - Gregorian (e.g. 1993) or Hebrew year (e.g. 5749)\n * * `options.isHebrewYear` - to interpret `year` as Hebrew year\n * * `options.numYears` - generate calendar for multiple years (default 1)\n * * `options.month` - Gregorian or Hebrew month (to filter results to a single month)\n *\n * Alternatively, specify start and end days with `Date` or {@link HDate} instances:\n * * `options.start` - use specific start date (requires `end` date)\n * * `options.end` - use specific end date (requires `start` date)\n *\n * Unless `options.noHolidays == true`, default holidays include:\n * * Major holidays - Rosh Hashana, Yom Kippur, Pesach, Sukkot, etc.\n * * Minor holidays - Purim, Chanukah, Tu BiShvat, Lag BaOmer, etc.\n * * Minor fasts - Ta'anit Esther, Tzom Gedaliah, etc. (unless `options.noMinorFast`)\n * * Special Shabbatot - Shabbat Shekalim, Zachor, etc. (unless `options.noSpecialShabbat`)\n * * Modern Holidays - Yom HaShoah, Yom HaAtzma'ut, etc. (unless `options.noModern`)\n * * Rosh Chodesh (unless `options.noRoshChodesh`)\n *\n * Holiday and Torah reading schedules differ between Israel and the Disapora.\n * Set `options.il=true` to use the Israeli schedule.\n *\n * Additional non-default event types can be specified:\n * * Parashat HaShavua - weekly Torah Reading on Saturdays (`options.sedrot`)\n * * Counting of the Omer (`options.omer`)\n * * Shabbat Mevarchim HaChodesh on Saturday before Rosh Chodesh (`options.shabbatMevarchim`)\n * * Molad announcement on Saturday before Rosh Chodesh (`options.molad`)\n * * Yom Kippur Katan (`options.yomKippurKatan`)\n * * Yizkor (`options.yizkor`)\n *\n * Daily Study of texts are supported by the\n * {@link https://github.com/hebcal/hebcal-learning @hebcal/learning} package,\n * for example:\n * * Babylonian Talmud Daf Yomi (`options.dailyLearning.dafYomi`)\n * * Jerusalem Talmud (Yerushalmi) Yomi (`options.dailyLearning.yerushalmi`)\n * * Mishna Yomi (`options.dailyLearning.mishnaYomi`)\n * * Nach Yomi (`options.dailyLearning.nachYomi`)\n *\n * Candle-lighting and Havdalah times are approximated using latitude and longitude\n * specified by the {@link Location} class. The `Location` class contains a small\n * database of cities with their associated geographic information and time-zone information.\n * If you ever have any doubts about Hebcal's times, consult your local halachic authority.\n * If you enter geographic coordinates above the arctic circle or antarctic circle,\n * the times are guaranteed to be wrong.\n *\n * To add candle-lighting options, set `options.candlelighting=true` and set\n * `options.location` to an instance of `Location`. By default, candle lighting\n * time is 18 minutes before sundown (40 minutes for Jerusalem,\n * 30 minutes for Haifa and Zikhron Ya'akov) and Havdalah is\n * calculated according to Tzeit Hakochavim - Nightfall (the point when 3 small stars\n * are observable in the night time sky with the naked eye). The default Havdalah\n * option (Tzeit Hakochavim) is calculated when the sun is 8.5° below the horizon.\n * These defaults can be changed using these options:\n * * `options.candleLightingMins` - minutes before sundown to light candles\n * * `options.havdalahMins` - minutes after sundown for Havdalah (typical values are 42, 50, or 72).\n * Havdalah times are suppressed when `options.havdalahMins=0`.\n * * `options.havdalahDeg` - degrees for solar depression for Havdalah.\n * Default is 8.5 degrees for 3 small stars. Use 7.083 degrees for 3 medium-sized stars.\n * Havdalah times are suppressed when `options.havdalahDeg=0`.\n *\n * If both `options.candlelighting=true` and `options.location` is specified,\n * Chanukah candle-lighting times and minor fast start/end times will also be generated.\n * Chanukah candle-lighting is at Bein HaShmashos (13.5 minutes before\n * the sun is 7.083° below the horizon in the evening)\n * on weekdays, at regular candle-lighting time on Fridays, and at regular Havdalah time on\n * Saturday night (see above).\n *\n * Minor fasts begin at Alot HaShachar (sun is 16.1° below the horizon in the morning) and\n * end when 3 medium-sized stars are observable in the night sky (sun is 7.083° below the horizon\n * in the evening).\n *\n * Two options also exist for generating an Event with the Hebrew date:\n * * `options.addHebrewDates` - print the Hebrew date for the entire date range\n * * `options.addHebrewDatesForEvents` - print the Hebrew date for dates with some events\n *\n * Lastly, translation and transliteration of event titles is controlled by\n * `options.locale` and the {@link Locale} API.\n * `@hebcal/core` supports three locales by default:\n * * `en` - default, Sephardic transliterations (e.g. \"Shabbat\")\n * * `ashkenazi` - Ashkenazi transliterations (e.g. \"Shabbos\")\n * * `he` - Hebrew (e.g. \"שַׁבָּת\")\n *\n * Additional locales (such as `ru` or `fr`) are supported by the\n * {@link https://github.com/hebcal/hebcal-locales @hebcal/locales} package\n *\n * @example\n * import {HebrewCalendar, HDate, Location, Event} from '@hebcal/core';\n * const options: CalOptions = {\n * year: 1981,\n * isHebrewYear: false,\n * candlelighting: true,\n * location: Location.lookup('San Francisco'),\n * sedrot: true,\n * omer: true,\n * };\n * const events = HebrewCalendar.calendar(options);\n * for (const ev of events) {\n * const hd = ev.getDate();\n * const date = hd.greg();\n * console.log(date.toLocaleDateString(), ev.render('en'), hd.toString());\n * }\n */\n static calendar(options: CalOptions = {}): Event[] {\n return calendar(options);\n }\n\n /**\n * Calculates a birthday or anniversary (non-yahrzeit).\n * `hyear` must be after original `gdate` of anniversary.\n * Returns `undefined` when requested year preceeds or is same as original year.\n *\n * Hebcal uses the algorithm defined in \"Calendrical Calculations\"\n * by Edward M. Reingold and Nachum Dershowitz.\n *\n * The birthday of someone born in Adar of an ordinary year or Adar II of\n * a leap year is also always in the last month of the year, be that Adar\n * or Adar II. The birthday in an ordinary year of someone born during the\n * first 29 days of Adar I in a leap year is on the corresponding day of Adar;\n * in a leap year, the birthday occurs in Adar I, as expected.\n *\n * Someone born on the thirtieth day of Marcheshvan, Kislev, or Adar I\n * has his birthday postponed until the first of the following month in\n * years where that day does not occur. [Calendrical Calculations p. 111]\n * @example\n * import {HebrewCalendar} from '@hebcal/core';\n * const dt = new Date(2014, 2, 2); // '2014-03-02' == '30 Adar I 5774'\n * const hd = HebrewCalendar.getBirthdayOrAnniversary(5780, dt); // '1 Nisan 5780'\n * console.log(hd.greg().toLocaleDateString('en-US')); // '3/26/2020'\n * @param hyear Hebrew year\n * @param gdate Gregorian or Hebrew date of event\n * @returns anniversary occurring in `hyear`\n */\n static getBirthdayOrAnniversary(\n hyear: number,\n gdate: Date | HDate\n ): HDate | undefined {\n const dt = getBirthdayHD(hyear, gdate);\n if (typeof dt === 'undefined') {\n return dt;\n }\n return new HDate(dt);\n }\n\n /**\n * Calculates yahrzeit.\n * `hyear` must be after original `gdate` of death.\n * Returns `undefined` when requested year preceeds or is same as original year.\n *\n * Hebcal uses the algorithm defined in \"Calendrical Calculations\"\n * by Edward M. Reingold and Nachum Dershowitz.\n *\n * The customary anniversary date of a death is more complicated and depends\n * also on the character of the year in which the first anniversary occurs.\n * There are several cases:\n *\n * * If the date of death is Marcheshvan 30, the anniversary in general depends\n * on the first anniversary; if that first anniversary was not Marcheshvan 30,\n * use the day before Kislev 1.\n * * If the date of death is Kislev 30, the anniversary in general again depends\n * on the first anniversary — if that was not Kislev 30, use the day before\n * Tevet 1.\n * * If the date of death is Adar II, the anniversary is the same day in the\n * last month of the Hebrew year (Adar or Adar II).\n * * If the date of death is Adar I 30, the anniversary in a Hebrew year that\n * is not a leap year (in which Adar only has 29 days) is the last day in\n * Shevat.\n * * In all other cases, use the normal (that is, same month number) anniversary\n * of the date of death. [Calendrical Calculations p. 113]\n * @example\n * import {HebrewCalendar} from '@hebcal/core';\n * const dt = new Date(2014, 2, 2); // '2014-03-02' == '30 Adar I 5774'\n * const hd = HebrewCalendar.getYahrzeit(5780, dt); // '30 Sh\\'vat 5780'\n * console.log(hd.greg().toLocaleDateString('en-US')); // '2/25/2020'\n * @param hyear Hebrew year\n * @param gdate Gregorian or Hebrew date of death\n * @returns anniversary occurring in hyear\n */\n static getYahrzeit(hyear: number, gdate: Date | HDate): HDate | undefined {\n const dt = getYahrzeitHD(hyear, gdate);\n if (typeof dt === 'undefined') {\n return dt;\n }\n return new HDate(dt);\n }\n\n /**\n * Lower-level holidays interface, which returns a `Map` of `Event`s indexed by\n * `HDate.toString()`. These events must filtered especially for `flags.IL_ONLY`\n * or `flags.CHUL_ONLY` depending on Israel vs. Diaspora holiday scheme.\n * @param year Hebrew year\n */\n static getHolidaysForYear(year: number): HolidayYearMap {\n return getHolidaysForYear_(year);\n }\n\n /**\n * Returns an array of holidays for the year\n * @param year Hebrew year\n * @param il use the Israeli schedule for holidays\n */\n static getHolidaysForYearArray(year: number, il: boolean): HolidayEvent[] {\n return getHolidaysForYearArray(year, il);\n }\n\n /**\n * Returns an array of Events on this date (or `undefined` if no events)\n * @param date Hebrew Date, Gregorian date, or absolute R.D. day number\n * @param [il] use the Israeli schedule for holidays\n */\n static getHolidaysOnDate(\n date: HDate | Date | number,\n il?: boolean\n ): HolidayEvent[] | undefined {\n return getHolidaysOnDate(date, il);\n }\n\n /**\n * Eruv Tavshilin\n */\n static eruvTavshilin(date: Date | HDate, il: boolean): boolean {\n if (date.getDay() < 3 || date.getDay() > 4) {\n return false;\n }\n const today = new HDate(date);\n const friday = today.after(5);\n const tomorrow = today.next();\n if (!isChag(friday, il) || isChag(today, il) || !isChag(tomorrow, il)) {\n return false;\n }\n return true;\n }\n\n /**\n * Helper function to format a 23-hour (00:00-23:59) time in US format (\"8:13pm\") or\n * keep as \"20:13\" for any other locale/country. Uses {@link CalOptions} to determine\n * locale.\n * If `options.hour12` is `false`, locale is ignored and always returns 24-hour time.\n * If `options.hour12` is `true`, locale is ignored and always returns 12-hour time.\n * @param timeStr - original time like \"20:30\"\n * @param suffix - \"p\" or \"pm\" or \" P.M.\". Add leading space if you want it\n * @param options\n */\n static reformatTimeStr(\n timeStr: string,\n suffix: string,\n options: CalOptions\n ): string {\n return reformatTimeStr(timeStr, suffix, options);\n }\n\n static version(): string {\n return pkgVersion;\n }\n\n /**\n * Convenience function to create an instance of `Sedra` or reuse a previously\n * created and cached instance.\n */\n static getSedra(hyear: number, il: boolean): Sedra {\n return getSedra(hyear, il);\n }\n\n /**\n * Return a number containing information on what Hallel is said on that day.\n *\n * Whole Hallel is said on Chanukah, the first Yom Tov of Pesach, Shavuot, Sukkot,\n * Yom Ha'atzmaut, and Yom Yerushalayim.\n *\n * Half Hallel is said on Rosh Chodesh (not Rosh Hashanah), and the last 6 days of Pesach.\n *\n * The number is one of the following values:\n *\n * 0 - No Hallel\n * 1 - Half Hallel\n * 2 - Whole Hallel\n */\n static hallel(hdate: HDate, il: boolean): number {\n const events = getHolidaysForYearArray(hdate.getFullYear(), il);\n return hallel_(events, hdate);\n }\n\n /**\n * Return details on what Tachanun (or Tzidchatcha on Shabbat) is said on `hdate`.\n *\n * Tachanun is not said on Rosh Chodesh, the month of Nisan, Lag Baomer,\n * Rosh Chodesh Sivan until Isru Chag, Tisha B'av, 15 Av, Erev Rosh Hashanah,\n * Rosh Hashanah, Erev Yom Kippur until after Simchat Torah, Chanukah,\n * Tu B'shvat, Purim and Shushan Purim, and Purim and Shushan Purim Katan.\n *\n * In some congregations Tachanun is not said until from Rosh Chodesh Sivan\n * until 14th Sivan, Sukkot until after Rosh Chodesh Cheshvan, Pesach Sheini,\n * Yom Ha'atzmaut, and Yom Yerushalayim.\n *\n * Tachanun is not said at Mincha on days before it is not said at Shacharit.\n *\n * Tachanun is not said at Shacharit on Shabbat, but is at Mincha, usually.\n */\n static tachanun(hdate: HDate, il: boolean): TachanunResult {\n return tachanun(hdate, il);\n }\n}\n\n/**\n * @private\n */\nfunction isChag(date: HDate, il: boolean): boolean {\n const events = getHolidaysOnDate(date, il) || [];\n const chag = events.filter(ev => ev.getFlags() & flags.CHAG);\n return chag.length !== 0;\n}\n"],"names":["Locale","HDate","gematriya","months","GeoLocation","isDate","NOAACalculator","getTimezoneOffset","pad2","getPseudoISO","CHAG","LIGHT_CANDLES","YOM_TOV_ENDS","CHUL_ONLY","IL_ONLY","LIGHT_CANDLES_TZEIS","CHANUKAH_CANDLES","MAJOR_FAST","MINOR_HOLIDAY","EREV","CHOL_HAMOED","SHAVUOT","hdesc","isoDateString","molad","omerSefira","omerEmoji","omerTodayIs","hdate","range","SUN","TUE","FRI","SAT","NISAN","MINOR_FAST","SPECIAL_SHABBAT","MODERN_HOLIDAY","TISHREI","NONE","greg2abs","daysInGregMonth","abs2greg","getBirthdayHD","getYahrzeitHD","pkgVersion"],"mappings":"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","x_google_ignoreList":[16]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/pkgVersion.ts","../src/ashkenazi.po.ts","../src/he.po.ts","../src/locale.ts","../src/event.ts","../src/HebrewDateEvent.ts","../src/location.ts","../src/zmanim.ts","../src/reformatTimeStr.ts","../src/TimedEvent.ts","../src/staticHolidays.ts","../src/HolidayEvent.ts","../src/candles.ts","../src/molad.ts","../src/omer.ts","../src/parshaName.ts","../node_modules/quick-lru/index.js","../src/sedra.ts","../src/ParshaEvent.ts","../src/parshaYear.ts","../src/modern.ts","../src/YomKippurKatanEvent.ts","../src/holidays.ts","../src/MevarchimChodeshEvent.ts","../src/DailyLearning.ts","../src/hallel.ts","../src/tachanun.ts","../src/getStartAndEnd.ts","../src/calendar.ts","../src/hebcal.ts"],"sourcesContent":["/** DO NOT EDIT THIS AUTO-GENERATED FILE! */\nexport const version = '5.9.3';\n","export default {\"headers\":{\"plural-forms\":\"nplurals=2; plural=(n > 1);\",\"language\":\"en_CA@ashkenazi\"},\"contexts\":{\"\":{\"Shabbat\":[\"Shabbos\"],\"Achrei Mot\":[\"Achrei Mos\"],\"Bechukotai\":[\"Bechukosai\"],\"Beha'alotcha\":[\"Beha’aloscha\"],\"Bereshit\":[\"Bereshis\"],\"Chukat\":[\"Chukas\"],\"Erev Shavuot\":[\"Erev Shavuos\"],\"Erev Sukkot\":[\"Erev Sukkos\"],\"Ki Tavo\":[\"Ki Savo\"],\"Ki Teitzei\":[\"Ki Seitzei\"],\"Ki Tisa\":[\"Ki Sisa\"],\"Matot\":[\"Matos\"],\"Purim Katan\":[\"Purim Koton\"],\"Shabbat Chazon\":[\"Shabbos Chazon\"],\"Shabbat HaChodesh\":[\"Shabbos HaChodesh\"],\"Shabbat HaGadol\":[\"Shabbos HaGadol\"],\"Shabbat Nachamu\":[\"Shabbos Nachamu\"],\"Shabbat Parah\":[\"Shabbos Parah\"],\"Shabbat Shekalim\":[\"Shabbos Shekalim\"],\"Shabbat Shuva\":[\"Shabbos Shuvah\"],\"Shabbat Zachor\":[\"Shabbos Zachor\"],\"Shavuot\":[\"Shavuos\"],\"Shavuot I\":[\"Shavuos I\"],\"Shavuot II\":[\"Shavuos II\"],\"Shemot\":[\"Shemos\"],\"Shmini Atzeret\":[\"Shmini Atzeres\"],\"Simchat Torah\":[\"Simchas Torah\"],\"Sukkot\":[\"Sukkos\"],\"Sukkot I\":[\"Sukkos I\"],\"Sukkot II\":[\"Sukkos II\"],\"Sukkot II (CH''M)\":[\"Sukkos II (CH’’M)\"],\"Sukkot III (CH''M)\":[\"Sukkos III (CH’’M)\"],\"Sukkot IV (CH''M)\":[\"Sukkos IV (CH’’M)\"],\"Sukkot V (CH''M)\":[\"Sukkos V (CH’’M)\"],\"Sukkot VI (CH''M)\":[\"Sukkos VI (CH’’M)\"],\"Sukkot VII (Hoshana Raba)\":[\"Sukkos VII (Hoshana Raba)\"],\"Ta'anit Bechorot\":[\"Ta’anis Bechoros\"],\"Ta'anit Esther\":[\"Ta’anis Esther\"],\"Toldot\":[\"Toldos\"],\"Vaetchanan\":[\"Vaeschanan\"],\"Yitro\":[\"Yisro\"],\"Vezot Haberakhah\":[\"Vezos Haberakhah\"],\"Parashat\":[\"Parshas\"],\"Leil Selichot\":[\"Leil Selichos\"],\"Shabbat Mevarchim Chodesh\":[\"Shabbos Mevorchim Chodesh\"],\"Shabbat Shirah\":[\"Shabbos Shirah\"],\"Asara B'Tevet\":[\"Asara B’Teves\"],\"Alot HaShachar\":[\"Alos HaShachar\"],\"Kriat Shema, sof zeman\":[\"Krias Shema, sof zman\"],\"Tefilah, sof zeman\":[\"Tefilah, sof zman\"],\"Kriat Shema, sof zeman (MGA)\":[\"Krias Shema, sof zman (MGA)\"],\"Tefilah, sof zeman (MGA)\":[\"Tefilah, sof zman (MGA)\"],\"Chatzot HaLailah\":[\"Chatzos HaLailah\"],\"Chatzot hayom\":[\"Chatzos\"],\"Tzeit HaKochavim\":[\"Tzeis HaKochavim\"],\"Birkat Hachamah\":[\"Birkas Hachamah\"],\"Shushan Purim Katan\":[\"Shushan Purim Koton\"]}}}","export default {\"headers\":{\"plural-forms\":\"nplurals=2; plural=(n > 1);\",\"language\":\"he_IL\"},\"contexts\":{\"\":{\"Shabbat\":[\"שַׁבָּת\"],\"Daf Yomi\":[\"דַף יוֹמִי\"],\"Parashat\":[\"פָּרָשַׁת\"],\"Achrei Mot\":[\"אַחֲרֵי מוֹת\"],\"Balak\":[\"בָּלָק\"],\"Bamidbar\":[\"בְּמִדְבַּר\"],\"Bechukotai\":[\"בְּחֻקֹּתַי\"],\"Beha'alotcha\":[\"בְּהַעֲלֹתְךָ\"],\"Behar\":[\"בְּהַר\"],\"Bereshit\":[\"בְּרֵאשִׁית\"],\"Beshalach\":[\"בְּשַׁלַּח\"],\"Bo\":[\"בֹּא\"],\"Chayei Sara\":[\"חַיֵּי שָֹרָה\"],\"Chukat\":[\"חֻקַּת\"],\"Devarim\":[\"דְּבָרִים\"],\"Eikev\":[\"עֵקֶב\"],\"Emor\":[\"אֱמוֹר\"],\"Ha'azinu\":[\"הַאֲזִינוּ\"],\"Kedoshim\":[\"קְדשִׁים\"],\"Ki Tavo\":[\"כִּי־תָבוֹא\"],\"Ki Teitzei\":[\"כִּי־תֵצֵא\"],\"Ki Tisa\":[\"כִּי תִשָּׂא\"],\"Korach\":[\"קוֹרַח\"],\"Lech-Lecha\":[\"לֶךְ־לְךָ\"],\"Masei\":[\"מַסְעֵי\"],\"Matot\":[\"מַּטּוֹת\"],\"Metzora\":[\"מְּצֹרָע\"],\"Miketz\":[\"מִקֵּץ\"],\"Mishpatim\":[\"מִּשְׁפָּטִים\"],\"Nasso\":[\"נָשׂא\"],\"Nitzavim\":[\"נִצָּבִים\"],\"Noach\":[\"נֹחַ\"],\"Pekudei\":[\"פְקוּדֵי\"],\"Pinchas\":[\"פִּינְחָס\"],\"Re'eh\":[\"רְאֵה\"],\"Sh'lach\":[\"שְׁלַח־לְךָ\"],\"Shemot\":[\"שְׁמוֹת\"],\"Shmini\":[\"שְּׁמִינִי\"],\"Shoftim\":[\"שׁוֹפְטִים\"],\"Tazria\":[\"תַזְרִיעַ\"],\"Terumah\":[\"תְּרוּמָה\"],\"Tetzaveh\":[\"תְּצַוֶּה\"],\"Toldot\":[\"תּוֹלְדוֹת\"],\"Tzav\":[\"צַו\"],\"Vaera\":[\"וָאֵרָא\"],\"Vaetchanan\":[\"וָאֶתְחַנַּן\"],\"Vayakhel\":[\"וַיַּקְהֵל\"],\"Vayechi\":[\"וַיְחִי\"],\"Vayeilech\":[\"וַיֵּלֶךְ\"],\"Vayera\":[\"וַיֵּרָא\"],\"Vayeshev\":[\"וַיֵּשֶׁב\"],\"Vayetzei\":[\"וַיֵּצֵא\"],\"Vayigash\":[\"וַיִּגַּשׁ\"],\"Vayikra\":[\"וַיִּקְרָא\"],\"Vayishlach\":[\"וַיִּשְׁלַח\"],\"Vezot Haberakhah\":[\"וְזֹאת הַבְּרָכָה\"],\"Yitro\":[\"יִתְרוֹ\"],\"Asara B'Tevet\":[\"עֲשָׂרָה בְּטֵבֵת\"],\"Candle lighting\":[\"הַדְלָקַת נֵרוֹת\"],\"Chanukah\":[\"חֲנוּכָּה\"],\"Chanukah: 1 Candle\":[\"חֲנוּכָּה: א׳ נֵר\"],\"Chanukah: 2 Candles\":[\"חֲנוּכָּה: ב׳ נֵרוֹת\"],\"Chanukah: 3 Candles\":[\"חֲנוּכָּה: ג׳ נֵרוֹת\"],\"Chanukah: 4 Candles\":[\"חֲנוּכָּה: ד׳ נֵרוֹת\"],\"Chanukah: 5 Candles\":[\"חֲנוּכָּה: ה׳ נֵרוֹת\"],\"Chanukah: 6 Candles\":[\"חֲנוּכָּה: ו׳ נֵרוֹת\"],\"Chanukah: 7 Candles\":[\"חֲנוּכָּה: ז׳ נֵרוֹת\"],\"Chanukah: 8 Candles\":[\"חֲנוּכָּה: ח׳ נֵרוֹת\"],\"Chanukah: 8th Day\":[\"חֲנוּכָּה: יוֹם ח׳\"],\"Days of the Omer\":[\"סְפִירַת הָעוֹמֶר\"],\"Omer\":[\"עוֹמֶר\"],\"day of the Omer\":[\"בָּעוֹמֶר\"],\"Erev Pesach\":[\"עֶרֶב פֶּסַח\"],\"Erev Purim\":[\"עֶרֶב פּוּרִים\"],\"Erev Rosh Hashana\":[\"עֶרֶב רֹאשׁ הַשָּׁנָה\"],\"Erev Shavuot\":[\"עֶרֶב שָׁבוּעוֹת\"],\"Erev Simchat Torah\":[\"עֶרֶב שִׂמְחַת תּוֹרָה\"],\"Erev Sukkot\":[\"עֶרֶב סוּכּוֹת\"],\"Erev Tish'a B'Av\":[\"עֶרֶב תִּשְׁעָה בְּאָב\"],\"Erev Yom Kippur\":[\"עֶרֶב יוֹם כִּפּוּר\"],\"Havdalah\":[\"הַבְדָּלָה\"],\"Lag BaOmer\":[\"ל״ג בָּעוֹמֶר\"],\"Leil Selichot\":[\"סליחות\"],\"Pesach\":[\"פֶּסַח\"],\"Pesach I\":[\"פֶּסַח א׳\"],\"Pesach II\":[\"פֶּסַח ב׳\"],\"Pesach II (CH''M)\":[\"פֶּסַח ב׳ (חוה״מ)\"],\"Pesach III (CH''M)\":[\"פֶּסַח ג׳ (חוה״מ)\"],\"Pesach IV (CH''M)\":[\"פֶּסַח ד׳ (חוה״מ)\"],\"Pesach Sheni\":[\"פֶּסַח שני\"],\"Pesach V (CH''M)\":[\"פֶּסַח ה׳ (חוה״מ)\"],\"Pesach VI (CH''M)\":[\"פֶּסַח ו׳ (חוה״מ)\"],\"Pesach VII\":[\"פֶּסַח ז׳\"],\"Pesach VIII\":[\"פֶּסַח ח׳\"],\"Purim\":[\"פּוּרִים\"],\"Purim Katan\":[\"פּוּרִים קָטָן\"],\"Rosh Chodesh %s\":[\"רֹאשׁ חוֹדֶשׁ %s\"],\"Rosh Chodesh\":[\"רֹאשׁ חוֹדֶשׁ\"],\"Rosh Hashana\":[\"רֹאשׁ הַשָּׁנָה\"],\"Rosh Hashana I\":[\"רֹאשׁ הַשָּׁנָה א׳\"],\"Rosh Hashana II\":[\"רֹאשׁ הַשָּׁנָה ב׳\"],\"Shabbat Chazon\":[\"שַׁבָּת חֲזוֹן\"],\"Shabbat HaChodesh\":[\"שַׁבָּת הַחֹדֶשׁ\"],\"Shabbat HaGadol\":[\"שַׁבָּת הַגָּדוֹל\"],\"Shabbat Nachamu\":[\"שַׁבָּת נַחֲמוּ\"],\"Shabbat Parah\":[\"שַׁבָּת פּרה\"],\"Shabbat Shekalim\":[\"שַׁבָּת שְׁקָלִים\"],\"Shabbat Shuva\":[\"שַׁבָּת שׁוּבָה\"],\"Shabbat Zachor\":[\"שַׁבָּת זָכוֹר\"],\"Shavuot\":[\"שָׁבוּעוֹת\"],\"Shavuot I\":[\"שָׁבוּעוֹת א׳\"],\"Shavuot II\":[\"שָׁבוּעוֹת ב׳\"],\"Shmini Atzeret\":[\"שְׁמִינִי עֲצֶרֶת\"],\"Shushan Purim\":[\"שׁוּשָׁן פּוּרִים\"],\"Sigd\":[\"סיגד\"],\"Simchat Torah\":[\"שִׂמְחַת תּוֹרָה\"],\"Sukkot\":[\"סוּכּוֹת\"],\"Sukkot I\":[\"סוּכּוֹת א׳\"],\"Sukkot II\":[\"סוּכּוֹת ב׳\"],\"Sukkot II (CH''M)\":[\"סוּכּוֹת ב׳ (חוה״מ)\"],\"Sukkot III (CH''M)\":[\"סוּכּוֹת ג׳ (חוה״מ)\"],\"Sukkot IV (CH''M)\":[\"סוּכּוֹת ד׳ (חוה״מ)\"],\"Sukkot V (CH''M)\":[\"סוּכּוֹת ה׳ (חוה״מ)\"],\"Sukkot VI (CH''M)\":[\"סוּכּוֹת ו׳ (חוה״מ)\"],\"Sukkot VII (Hoshana Raba)\":[\"סוּכּוֹת ז׳ (הוֹשַׁעְנָא רַבָּה)\"],\"Ta'anit Bechorot\":[\"תַּעֲנִית בְּכוֹרוֹת\"],\"Ta'anit Esther\":[\"תַּעֲנִית אֶסְתֵּר\"],\"Tish'a B'Av\":[\"תִּשְׁעָה בְּאָב\"],\"Tu B'Av\":[\"טוּ בְּאָב\"],\"Tu BiShvat\":[\"טוּ בִּשְׁבָט\"],\"Tu B'Shvat\":[\"טוּ בִּשְׁבָט\"],\"Tzom Gedaliah\":[\"צוֹם גְּדַלְיָה\"],\"Tzom Tammuz\":[\"צוֹם תָּמוּז\"],\"Yom HaAtzma'ut\":[\"יוֹם הָעַצְמָאוּת\"],\"Yom HaShoah\":[\"יוֹם הַשּׁוֹאָה\"],\"Yom HaZikaron\":[\"יוֹם הַזִּכָּרוֹן\"],\"Yom Kippur\":[\"יוֹם כִּפּוּר\"],\"Yom Yerushalayim\":[\"יוֹם יְרוּשָׁלַיִם\"],\"Yom HaAliyah\":[\"יוֹם הַעֲלִיָּה\"],\"Yom HaAliyah School Observance\":[\"שְׁמִירָת בֵּית הַסֵפֶר לְיוֹם הַעֲלִיָּה\"],\"Rosh Chodesh Adar\":[\"רֹאשׁ חוֹדֶשׁ אַדָר\"],\"Rosh Chodesh Adar I\":[\"רֹאשׁ חוֹדֶשׁ אַדָר א׳\"],\"Rosh Chodesh Adar II\":[\"רֹאשׁ חוֹדֶשׁ אַדָר ב׳\"],\"Rosh Chodesh Av\":[\"רֹאשׁ חוֹדֶשׁ אָב\"],\"Rosh Chodesh Cheshvan\":[\"רֹאשׁ חוֹדֶשׁ חֶשְׁוָן\"],\"Rosh Chodesh Elul\":[\"רֹאשׁ חוֹדֶשׁ אֱלוּל\"],\"Rosh Chodesh Iyyar\":[\"רֹאשׁ חוֹדֶשׁ אִיָיר\"],\"Rosh Chodesh Kislev\":[\"רֹאשׁ חוֹדֶשׁ כִּסְלֵו\"],\"Rosh Chodesh Nisan\":[\"רֹאשׁ חוֹדֶשׁ נִיסָן\"],\"Rosh Chodesh Sh'vat\":[\"רֹאשׁ חוֹדֶשׁ שְׁבָט\"],\"Rosh Chodesh Sivan\":[\"רֹאשׁ חוֹדֶשׁ סִיוָן\"],\"Rosh Chodesh Tamuz\":[\"רֹאשׁ חוֹדֶשׁ תָּמוּז\"],\"Rosh Chodesh Tevet\":[\"רֹאשׁ חוֹדֶשׁ טֵבֵת\"],\"min\":[\"דַּקּוֹת\"],\"Fast begins\":[\"תחילת הַצוֹם\"],\"Fast ends\":[\"סִיּוּם הַצוֹם\"],\"Rosh Hashana LaBehemot\":[\"רֹאשׁ הַשָּׁנָה לְמַעְשַׂר בְּהֵמָה\"],\"Tish'a B'Av (observed)\":[\"תִּשְׁעָה בְּאָב נִדחֶה\"],\"Shabbat Mevarchim Chodesh\":[\"שַׁבָּת מְבָרְכִים חוֹדֶשׁ\"],\"Shabbat Shirah\":[\"שַׁבָּת שִׁירָה\"],\"Chatzot HaLailah\":[\"חֲצוֹת הַלַיְלָה\"],\"Alot haShachar\":[\"עֲלוֹת הַשַּׁחַר\"],\"Misheyakir\":[\"מִשֶּׁיַּכִּיר\"],\"Misheyakir Machmir\":[\"מִשֶּׁיַּכִּיר מַחמִיר\"],\"Dawn\":[\"דִּימְדּוּמֵי בּוֹקֵר\"],\"Sunrise\":[\"הַנֵץ הַחַמָּה\"],\"Kriat Shema, sof zeman\":[\"סוֹף זְמַן קְרִיאַת שְׁמַע גר״א\"],\"Tefilah, sof zeman\":[\"סוֹף זְמַן תְּפִלָּה גר״א\"],\"Kriat Shema, sof zeman (MGA)\":[\"סוֹף זְמַן קְרִיאַת שְׁמַע מג״א\"],\"Tefilah, sof zeman (MGA)\":[\"סוֹף זְמַן תְּפִלָּה מג״א\"],\"Chatzot hayom\":[\"חֲצוֹת הַיּוֹם\"],\"Mincha Gedolah\":[\"מִנְחָה גְּדוֹלָה\"],\"Mincha Ketanah\":[\"מִנְחָה קְטַנָּה\"],\"Plag HaMincha\":[\"פְּלַג הַמִּנְחָה\"],\"Dusk\":[\"דִּימְדּוּמֵי עֶרֶב\"],\"Sunset\":[\"שְׁקִיעָה\"],\"Nightfall - End of ordained fasts\":[\"לַיְלָה - גמר תעניות דרבנן\"],\"Tzeit HaKochavim\":[\"צֵאת הַכּוֹכָבִים\"],\"Lovingkindness\":[\"חֶֽסֶד\"],\"Might\":[\"גְבוּרָה\"],\"Beauty\":[\"תִּפְאֶֽרֶת\"],\"Eternity\":[\"נֶּֽצַח\"],\"Splendor\":[\"הוֹד\"],\"Foundation\":[\"יְּסוֹד\"],\"Majesty\":[\"מַּלְכוּת\"],\"day\":[\"יוֹם\"],\"Yom Kippur Katan\":[\"יוֹם כִּפּוּר קָטָן\"],\"Yizkor\":[\"יִזְכּוֹר\"],\"Family Day\":[\"יוֹם הַמִּשׁפָּחָה\"],\"Yitzhak Rabin Memorial Day\":[\"יוֹם הַזִּכָּרוֹן ליצחק רבין\"],\"Jabotinsky Day\":[\"יוֹם ז׳בוטינסקי\"],\"Herzl Day\":[\"יוֹם הרצל\"],\"Ben-Gurion Day\":[\"יוֹם בן־גוריון\"],\"Hebrew Language Day\":[\"יוֹם הַשָׂפָה הַעִברִית\"],\"Birkat Hachamah\":[\"בִרְכַּת הַחַמָּה\"],\"Shushan Purim Katan\":[\"שׁוּשָׁן פּוּרִים קָטָן\"],\"Purim Meshulash\":[\"פּוּרִים מְשׁוּלָּשׁ\"],\"after sunset\":[\"לְאַחַר הַשְׁקִיעָה\"],\"Yerushalmi\":[\"יְרוּשַׁלְמִי\"],\"Chag HaBanot\":[\"חַג הַבָּנוֹת\"],\"Joshua\":[\"יְהוֹשׁוּעַ\"],\"Judges\":[\"שׁוֹפְטִים\"],\"I Samuel\":[\"שְׁמוּאֵל רִאשׁוֹן\"],\"II Samuel\":[\"שְׁמוּאֵל שֵׁנִי\"],\"I Kings\":[\"מְלָכִים רִאשׁוֹן\"],\"II Kings\":[\"מְלָכִים שֵׁנִי\"],\"Isaiah\":[\"יְשַׁעְיָהוּ\"],\"Jeremiah\":[\"יִרְמְיָהוּ\"],\"Ezekiel\":[\"יְחֶזְקֵאל\"],\"Hosea\":[\"הוֹשֵׁעַ\"],\"Joel\":[\"יוֹאֵל\"],\"Amos\":[\"עָמוּס\"],\"Obadiah\":[\"עוֹבַדְיָה\"],\"Jonah\":[\"יוֹנָה\"],\"Micah\":[\"מִיכָה\"],\"Nachum\":[\"נַחוּם\"],\"Habakkuk\":[\"חֲבַקּוּק\"],\"Zephaniah\":[\"צְפַנְיָה\"],\"Haggai\":[\"חַגַּי\"],\"Zechariah\":[\"זְכַרְיָה\"],\"Malachi\":[\"מַלְאָכִי\"],\"Psalms\":[\"תְּהִלִּים\"],\"Proverbs\":[\"מִשְׁלֵי\"],\"Job\":[\"אִיּוֹב\"],\"Song of Songs\":[\"שִׁיר הַשִּׁירִים\"],\"Ruth\":[\"רוּת\"],\"Lamentations\":[\"אֵיכָה\"],\"Ecclesiastes\":[\"קֹהֶלֶת\"],\"Esther\":[\"אֶסְתֵּר\"],\"Daniel\":[\"דָּנִיֵּאל\"],\"Ezra\":[\"עֶזְרָא\"],\"Nehemiah\":[\"נְחֶמְיָה\"],\"I Chronicles\":[\"דִברֵי הַיָמִים רִאשׁוֹן\"],\"II Chronicles\":[\"דִברֵי הַיָמִים שֵׁנִי\"],\"Molad\":[\"מוֹלָד הָלְּבָנָה\"],\"chalakim\":[\"חֲלָקִים\"],\"Pirkei Avot\":[\"פִּרְקֵי אָבוֹת\"]}}}","import {Locale, LocaleData, StringArrayMap} from '@hebcal/hdate';\nimport poAshkenazi from './ashkenazi.po';\nimport poHe from './he.po';\n\nexport {Locale};\n\nLocale.addTranslations('he', poHe);\nLocale.addTranslations('h', poHe);\nLocale.addTranslations('ashkenazi', poAshkenazi);\nLocale.addTranslations('a', poAshkenazi);\n\n/* Hebrew without nikkud */\nconst heStrs = poHe.contexts[''];\nconst heNoNikud: StringArrayMap = {};\nfor (const [key, val] of Object.entries(heStrs)) {\n heNoNikud[key] = [Locale.hebrewStripNikkud(val[0])];\n}\nconst poHeNoNikud: LocaleData = {\n headers: poHe.headers,\n contexts: {'': heNoNikud},\n} as const;\nLocale.addTranslations('he-x-NoNikud', poHeNoNikud);\n","import {HDate, Locale} from '@hebcal/hdate';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Holiday flags for Event. These flags are typically\n * combined using bitwise arithmetic to form a mask.\n * @readonly\n * @enum {number}\n */\nexport const flags = {\n /** Chag, yontiff, yom tov */\n CHAG: 0x000001,\n /** Light candles 18 minutes before sundown */\n LIGHT_CANDLES: 0x000002,\n /** End of holiday (end of Yom Tov) */\n YOM_TOV_ENDS: 0x000004,\n /** Observed only in the Diaspora (chutz l'aretz) */\n CHUL_ONLY: 0x000008,\n /** Observed only in Israel */\n IL_ONLY: 0x000010,\n /** Light candles in the evening at Tzeit time (3 small stars) */\n LIGHT_CANDLES_TZEIS: 0x000020,\n /** Candle-lighting for Chanukah */\n CHANUKAH_CANDLES: 0x000040,\n /** Rosh Chodesh, beginning of a new Hebrew month */\n ROSH_CHODESH: 0x000080,\n /** Minor fasts like Tzom Tammuz, Ta'anit Esther, ... */\n MINOR_FAST: 0x000100,\n /** Shabbat Shekalim, Zachor, ... */\n SPECIAL_SHABBAT: 0x000200,\n /** Weekly sedrot on Saturdays */\n PARSHA_HASHAVUA: 0x000400,\n /** Daily page of Talmud (Bavli) */\n DAF_YOMI: 0x000800,\n /** Days of the Omer */\n OMER_COUNT: 0x001000,\n /** Yom HaShoah, Yom HaAtzma'ut, ... */\n MODERN_HOLIDAY: 0x002000,\n /** Yom Kippur and Tish'a B'Av */\n MAJOR_FAST: 0x004000,\n /** On the Saturday before Rosh Chodesh */\n SHABBAT_MEVARCHIM: 0x008000,\n /** Molad */\n MOLAD: 0x010000,\n /** Yahrzeit or Hebrew Anniversary */\n USER_EVENT: 0x020000,\n /** Daily Hebrew date (\"11th of Sivan, 5780\") */\n HEBREW_DATE: 0x040000,\n /** A holiday that's not major, modern, rosh chodesh, or a fast day */\n MINOR_HOLIDAY: 0x080000,\n /** Evening before a major or minor holiday */\n EREV: 0x100000,\n /** Chol haMoed, intermediate days of Pesach or Sukkot */\n CHOL_HAMOED: 0x200000,\n /** Mishna Yomi */\n MISHNA_YOMI: 0x400000,\n /** Yom Kippur Katan, minor day of atonement on the day preceeding each Rosh Chodesh */\n YOM_KIPPUR_KATAN: 0x800000,\n /** Daily page of Jerusalem Talmud (Yerushalmi) */\n YERUSHALMI_YOMI: 0x1000000,\n /** Nach Yomi */\n NACH_YOMI: 0x2000000,\n /** Daily Learning */\n DAILY_LEARNING: 0x4000000,\n /** Yizkor */\n YIZKOR: 0x8000000,\n} as const;\n\nconst flagToCategory = [\n [flags.MAJOR_FAST, 'holiday', 'major', 'fast'],\n [flags.CHANUKAH_CANDLES, 'holiday', 'major'],\n [flags.HEBREW_DATE, 'hebdate'],\n [flags.MINOR_FAST, 'holiday', 'fast'],\n [flags.MINOR_HOLIDAY, 'holiday', 'minor'],\n [flags.MODERN_HOLIDAY, 'holiday', 'modern'],\n [flags.MOLAD, 'molad'],\n [flags.OMER_COUNT, 'omer'],\n [flags.PARSHA_HASHAVUA, 'parashat'], // backwards-compat\n [flags.ROSH_CHODESH, 'roshchodesh'],\n [flags.SHABBAT_MEVARCHIM, 'mevarchim'],\n [flags.SPECIAL_SHABBAT, 'holiday', 'shabbat'],\n [flags.USER_EVENT, 'user'],\n [flags.YIZKOR, 'yizkor'],\n] as const;\n\n/**\n * Represents an Event with a title, date, and flags.\n *\n * Events are used to represent holidays, candle-lighting times,\n * Torah readings, and more.\n *\n * To get the title of the event a language other than English\n * with Sephardic transliterations, use the `render()` method.\n */\nexport class Event {\n /** Hebrew date of this event */\n readonly date: HDate;\n /**\n * Untranslated title of this event. Note that these description\n * strings are always in English and will remain stable across releases.\n * To get the title of the event in another language, use the\n * `render()` method.\n */\n readonly desc: string;\n /** Bitmask of optional event flags. See {@link flags} */\n readonly mask: number;\n /** Optional emoji character such as ✡️, 🕯️, 🕎, 🕍, 🌒 */\n emoji?: string;\n /** Optional longer description or memo text */\n memo?: string;\n /** Alarms are used by iCalendar feeds */\n alarm?: Date | string | boolean;\n /**\n * Constructs Event\n * @param date Hebrew date event occurs\n * @param desc Description (not translated)\n * @param [mask=0] optional bitmask of holiday flags (see {@link flags})\n * @param [attrs={}] optional additional attributes (e.g. `eventTimeStr`, `cholHaMoedDay`)\n */\n constructor(date: HDate, desc: string, mask = 0, attrs?: object) {\n if (!HDate.isHDate(date)) {\n throw new TypeError(`Invalid Event date: ${date}`);\n } else if (typeof desc !== 'string') {\n throw new TypeError(`Invalid Event description: ${desc}`);\n }\n this.date = date;\n this.desc = desc;\n this.mask = +mask;\n if (typeof attrs === 'object' && attrs !== null) {\n Object.assign(this, attrs);\n }\n }\n /**\n * Hebrew date of this event\n */\n getDate(): HDate {\n return this.date;\n }\n /**\n * Untranslated title of this event. Note that these description\n * strings are always in English and will remain stable across releases.\n * To get the title of the event in another language, use the\n * `render()` method.\n */\n getDesc(): string {\n return this.desc;\n }\n /**\n * Bitmask of optional event flags. See {@link flags}\n */\n getFlags(): number {\n return this.mask;\n }\n /**\n * Returns (translated) description of this event\n * @example\n * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);\n * ev.render('en'); // 'Shavuot'\n * ev.render('he'); // 'שָׁבוּעוֹת'\n * ev.render('ashkenazi'); // 'Shavuos'\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return Locale.gettext(this.desc, locale);\n }\n /**\n * Returns a brief (translated) description of this event.\n * For most events, this is the same as render(). For some events, it procudes\n * a shorter text (e.g. without a time or added description).\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n return this.render(locale);\n }\n /**\n * Optional holiday-specific Emoji or `null`.\n */\n getEmoji(): string | null {\n return this.emoji || null;\n }\n /**\n * Returns a simplified (untranslated) description for this event. For example,\n * the `HolidayEvent` class supports\n * \"Erev Pesach\" => \"Pesach\", and \"Sukkot III (CH''M)\" => \"Sukkot\".\n * For many holidays the basename and the event description are the same.\n */\n basename(): string {\n return this.getDesc();\n }\n /**\n * Returns a URL to hebcal.com or sefaria.org for more detail on the event.\n * Returns `undefined` for events with no detail page.\n */\n url(): string | undefined {\n return undefined;\n }\n /**\n * Is this event observed in Israel?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedInIsrael(); // false\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedInIsrael(); // true\n */\n observedInIsrael(): boolean {\n return !(this.mask & flags.CHUL_ONLY);\n }\n /**\n * Is this event observed in the Diaspora?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedInDiaspora(); // true\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedInDiaspora(); // true\n */\n observedInDiaspora(): boolean {\n return !(this.mask & flags.IL_ONLY);\n }\n /**\n * Is this event observed in Israel/Diaspora?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedIn(false); // true\n * ev1.observedIn(true); // false\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedIn(false); // true\n * ev2.observedIn(true); // true\n * @param il\n */\n observedIn(il: boolean): boolean {\n return il ? this.observedInIsrael() : this.observedInDiaspora();\n }\n /**\n * Makes a clone of this Event object\n * @deprecated\n */\n clone(): Event {\n const ev = new Event(this.date, this.desc, this.mask);\n // overwrite all enumerable properties\n Object.assign(ev, this);\n return ev;\n }\n /**\n * Returns a list of event categories\n */\n getCategories(): string[] {\n const mask = this.getFlags();\n for (const attrs of flagToCategory) {\n const attr0 = attrs[0] as number;\n if (mask & attr0) {\n return attrs.slice(1) as string[];\n }\n }\n return ['unknown'];\n }\n}\n","import {HDate, gematriya, months, Locale} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Daily Hebrew date (\"11th of Sivan, 5780\") */\nexport class HebrewDateEvent extends Event {\n /**\n * @param date\n */\n constructor(date: HDate) {\n super(date, date.toString(), flags.HEBREW_DATE);\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n * @example\n * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n *\n * const hd = new HDate(15, months.CHESHVAN, 5769);\n * const ev = new HebrewDateEvent(hd);\n * console.log(ev.render('en')); // '15th of Cheshvan, 5769'\n * console.log(ev.render('he')); // 'ט״ו חֶשְׁוָן תשס״ט'\n */\n render(locale?: string): string {\n const locale1 = locale?.toLowerCase();\n const locale0 = locale1 ?? Locale.getLocaleName();\n const hd = this.getDate();\n switch (locale0) {\n case 'h':\n case 'he':\n return hd.renderGematriya(false);\n case 'he-x-nonikud':\n return hd.renderGematriya(true);\n default:\n return hd.render(locale0, true);\n }\n }\n /**\n * @private\n * @param locale\n */\n private renderBriefHebrew(locale: string): string {\n const hd = this.getDate();\n const dd = hd.getDate();\n const mm = Locale.gettext(hd.getMonthName(), locale);\n return gematriya(dd) + ' ' + mm;\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n * @example\n * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n *\n * const hd = new HDate(15, months.CHESHVAN, 5769);\n * const ev = new HebrewDateEvent(hd);\n * console.log(ev.renderBrief()); // '15th of Cheshvan'\n * console.log(ev.renderBrief('he')); // 'ט״ו חֶשְׁוָן'\n */\n renderBrief(locale?: string): string {\n const locale1 = locale?.toLowerCase();\n const locale0 = locale1 ?? Locale.getLocaleName();\n const hd = this.getDate();\n if (hd.getMonth() === months.TISHREI && hd.getDate() === 1) {\n return this.render(locale0);\n }\n switch (locale0) {\n case 'h':\n case 'he':\n case 'he-x-nonikud':\n return this.renderBriefHebrew(locale0);\n default:\n return hd.render(locale0, false);\n }\n }\n}\n","/*\n Hebcal - A Jewish Calendar Generator\n Copyright (c) 1994-2020 Danny Sadinoff\n Portions copyright Eyal Schachter and Michael J. Radwin\n\n https://github.com/hebcal/hebcal-es6\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU General Public License\n as published by the Free Software Foundation; either version 2\n of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {GeoLocation} from '@hebcal/noaa';\n\nconst classicCities0: [string, string, number, number, string, number][] = [\n ['Ashdod', 'IL', 31.79213, 34.64966, 'Asia/Jerusalem', 27],\n ['Atlanta', 'US', 33.749, -84.38798, 'America/New_York', 336],\n ['Austin', 'US', 30.26715, -97.74306, 'America/Chicago', 165],\n ['Baghdad', 'IQ', 33.34058, 44.40088, 'Asia/Baghdad', 41],\n ['Beer Sheva', 'IL', 31.25181, 34.7913, 'Asia/Jerusalem', 285],\n ['Berlin', 'DE', 52.52437, 13.41053, 'Europe/Berlin', 43],\n ['Baltimore', 'US', 39.29038, -76.61219, 'America/New_York', 35],\n ['Bogota', 'CO', 4.60971, -74.08175, 'America/Bogota', 2582],\n ['Boston', 'US', 42.35843, -71.05977, 'America/New_York', 38],\n ['Budapest', 'HU', 47.49801, 19.03991, 'Europe/Budapest', 104],\n [\n 'Buenos Aires',\n 'AR',\n -34.61315,\n -58.37723,\n 'America/Argentina/Buenos_Aires',\n 31,\n ],\n ['Buffalo', 'US', 42.88645, -78.87837, 'America/New_York', 191],\n ['Chicago', 'US', 41.85003, -87.65005, 'America/Chicago', 180],\n ['Cincinnati', 'US', 39.162, -84.45689, 'America/New_York', 267],\n ['Cleveland', 'US', 41.4995, -81.69541, 'America/New_York', 204],\n ['Dallas', 'US', 32.78306, -96.80667, 'America/Chicago', 139],\n ['Denver', 'US', 39.73915, -104.9847, 'America/Denver', 1636],\n ['Detroit', 'US', 42.33143, -83.04575, 'America/Detroit', 192],\n ['Eilat', 'IL', 29.55805, 34.94821, 'Asia/Jerusalem', 63],\n ['Gibraltar', 'GI', 36.14474, -5.35257, 'Europe/Gibraltar', 11],\n ['Haifa', 'IL', 32.81841, 34.9885, 'Asia/Jerusalem', 40],\n ['Hawaii', 'US', 21.30694, -157.85833, 'Pacific/Honolulu', 18],\n ['Helsinki', 'FI', 60.16952, 24.93545, 'Europe/Helsinki', 26],\n ['Houston', 'US', 29.76328, -95.36327, 'America/Chicago', 30],\n ['Jerusalem', 'IL', 31.76904, 35.21633, 'Asia/Jerusalem', 786],\n ['Johannesburg', 'ZA', -26.20227, 28.04363, 'Africa/Johannesburg', 1767],\n ['Kiev', 'UA', 50.45466, 30.5238, 'Europe/Kiev', 187],\n ['La Paz', 'BO', -16.5, -68.15, 'America/La_Paz', 3782],\n ['Livingston', 'US', 40.79593, -74.31487, 'America/New_York', 98],\n ['Las Vegas', 'US', 36.17497, -115.13722, 'America/Los_Angeles', 613],\n ['London', 'GB', 51.50853, -0.12574, 'Europe/London', 25],\n ['Los Angeles', 'US', 34.05223, -118.24368, 'America/Los_Angeles', 96],\n ['Marseilles', 'FR', 43.29695, 5.38107, 'Europe/Paris', 28],\n ['Miami', 'US', 25.77427, -80.19366, 'America/New_York', 25],\n ['Minneapolis', 'US', 44.97997, -93.26384, 'America/Chicago', 262],\n ['Melbourne', 'AU', -37.814, 144.96332, 'Australia/Melbourne', 25],\n ['Mexico City', 'MX', 19.42847, -99.12766, 'America/Mexico_City', 2240],\n ['Montreal', 'CA', 45.50884, -73.58781, 'America/Toronto', 216],\n ['Moscow', 'RU', 55.75222, 37.61556, 'Europe/Moscow', 144],\n ['New York', 'US', 40.71427, -74.00597, 'America/New_York', 57],\n ['Omaha', 'US', 41.25861, -95.93779, 'America/Chicago', 315],\n ['Ottawa', 'CA', 45.41117, -75.69812, 'America/Toronto', 71],\n ['Panama City', 'PA', 8.9936, -79.51973, 'America/Panama', 17],\n ['Paris', 'FR', 48.85341, 2.3488, 'Europe/Paris', 42],\n ['Pawtucket', 'US', 41.87871, -71.38256, 'America/New_York', 0], // -11\n ['Petach Tikvah', 'IL', 32.08707, 34.88747, 'Asia/Jerusalem', 54],\n ['Philadelphia', 'US', 39.95233, -75.16379, 'America/New_York', 8],\n ['Phoenix', 'US', 33.44838, -112.07404, 'America/Phoenix', 366],\n ['Pittsburgh', 'US', 40.44062, -79.99589, 'America/New_York', 239],\n ['Providence', 'US', 41.82399, -71.41283, 'America/New_York', 0], // -15\n ['Portland', 'US', 45.52345, -122.67621, 'America/Los_Angeles', 15],\n ['Saint Louis', 'US', 38.62727, -90.19789, 'America/Chicago', 149],\n ['Saint Petersburg', 'RU', 59.93863, 30.31413, 'Europe/Moscow', 11],\n ['San Diego', 'US', 32.71533, -117.15726, 'America/Los_Angeles', 20],\n ['San Francisco', 'US', 37.77493, -122.41942, 'America/Los_Angeles', 28],\n ['Sao Paulo', 'BR', -23.5475, -46.63611, 'America/Sao_Paulo', 769],\n ['Seattle', 'US', 47.60621, -122.33207, 'America/Los_Angeles', 56],\n ['Sydney', 'AU', -33.86785, 151.20732, 'Australia/Sydney', 58],\n ['Tel Aviv', 'IL', 32.08088, 34.78057, 'Asia/Jerusalem', 15],\n ['Tiberias', 'IL', 32.79221, 35.53124, 'Asia/Jerusalem', 0], // -140\n ['Toronto', 'CA', 43.70011, -79.4163, 'America/Toronto', 175],\n ['Vancouver', 'CA', 49.24966, -123.11934, 'America/Vancouver', 70],\n ['White Plains', 'US', 41.03399, -73.76291, 'America/New_York', 82],\n ['Washington DC', 'US', 38.89511, -77.03637, 'America/New_York', 6],\n ['Worcester', 'US', 42.26259, -71.80229, 'America/New_York', 164],\n];\nconst classicCities = new Map<string, Location>();\n\n// Zip-Codes.com TimeZone IDs\nconst ZIPCODES_TZ_MAP: Record<string, string> = {\n '0': 'UTC',\n '4': 'America/Puerto_Rico', // Atlantic (GMT -04:00)\n '5': 'America/New_York', // Eastern (GMT -05:00)\n '6': 'America/Chicago', // Central (GMT -06:00)\n '7': 'America/Denver', // Mountain (GMT -07:00)\n '8': 'America/Los_Angeles', // Pacific (GMT -08:00)\n '9': 'America/Anchorage', // Alaska (GMT -09:00)\n '10': 'Pacific/Honolulu', // Hawaii-Aleutian Islands (GMT -10:00)\n '11': 'Pacific/Pago_Pago', // American Samoa (GMT -11:00)\n '13': 'Pacific/Funafuti', // Marshall Islands (GMT +12:00)\n '14': 'Pacific/Guam', // Guam (GMT +10:00)\n '15': 'Pacific/Palau', // Palau (GMT +9:00)\n '16': 'Pacific/Chuuk', // Micronesia (GMT +11:00)\n} as const;\n\n/** @private */\nconst timeFormatCache = new Map<string, Intl.DateTimeFormat>();\n\n/**\n * Gets a 24-hour time formatter (e.g. 07:41 or 20:03) from cache\n * or makes a new one if needed\n * @private\n */\nfunction getFormatter(tzid: string): Intl.DateTimeFormat {\n const fmt = timeFormatCache.get(tzid);\n if (fmt) return fmt;\n const f = new Intl.DateTimeFormat('en-US', {\n timeZone: tzid,\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n });\n timeFormatCache.set(tzid, f);\n return f;\n}\n\n/** Class representing Location */\nexport class Location extends GeoLocation {\n private readonly il: boolean;\n private readonly cc?: string;\n private readonly geoid?: string | number;\n /**\n * Initialize a Location instance\n * @param latitude - Latitude as a decimal, valid range -90 thru +90 (e.g. 41.85003)\n * @param longitude - Longitude as a decimal, valid range -180 thru +180 (e.g. -87.65005)\n * @param il - in Israel (true) or Diaspora (false)\n * @param tzid - Olson timezone ID, e.g. \"America/Chicago\"\n * @param [cityName] - optional descriptive city name\n * @param [countryCode] - ISO 3166 alpha-2 country code (e.g. \"FR\")\n * @param [geoid] - optional string or numeric geographic ID\n * @param [elevation] - in meters (default `0`)\n */\n constructor(\n latitude: number,\n longitude: number,\n il: boolean,\n tzid: string,\n cityName?: string,\n countryCode?: string,\n geoid?: string | number,\n elevation?: number\n ) {\n const lat = typeof latitude === 'number' ? latitude : parseFloat(latitude);\n if (isNaN(lat) || lat < -90 || lat > 90) {\n throw new RangeError(`Latitude ${latitude} out of range [-90,90]`);\n }\n const long =\n typeof longitude === 'number' ? longitude : parseFloat(longitude);\n if (isNaN(long) || long < -180 || long > 180) {\n throw new RangeError(`Longitude ${longitude} out of range [-180,180]`);\n }\n const elev = typeof elevation === 'number' && elevation > 0 ? elevation : 0;\n super(cityName || null, lat, long, elev, tzid);\n this.il = Boolean(il);\n this.cc = countryCode;\n this.geoid = geoid;\n }\n\n getIsrael(): boolean {\n return this.il;\n }\n\n getName(): string | null {\n return this.getLocationName();\n }\n\n /**\n * Returns the location name, up to the first comma\n */\n getShortName(): string | null {\n const name = this.getLocationName();\n if (!name) return name;\n const comma = name.indexOf(', ');\n if (comma === -1) return name;\n if (this.cc === 'US' && name[comma + 2] === 'D') {\n if (name[comma + 3] === 'C') {\n return name.substring(0, comma + 4);\n } else if (name[comma + 3] === '.' && name[comma + 4] === 'C') {\n return name.substring(0, comma + 6);\n }\n }\n return name.substring(0, comma);\n }\n\n getCountryCode(): string | undefined {\n return this.cc;\n }\n\n getTzid(): string {\n return this.getTimeZone();\n }\n\n /**\n * Gets a 24-hour time formatter (e.g. 07:41 or 20:03) for this location\n */\n getTimeFormatter(): Intl.DateTimeFormat {\n return getFormatter(this.getTimeZone());\n }\n\n getGeoId(): string | number | undefined {\n return this.geoid;\n }\n\n /**\n * Creates a location object from one of 60 \"classic\" Hebcal city names.\n * The following city names are supported:\n * 'Ashdod', 'Atlanta', 'Austin', 'Baghdad', 'Beer Sheva',\n * 'Berlin', 'Baltimore', 'Bogota', 'Boston', 'Budapest',\n * 'Buenos Aires', 'Buffalo', 'Chicago', 'Cincinnati', 'Cleveland',\n * 'Dallas', 'Denver', 'Detroit', 'Eilat', 'Gibraltar', 'Haifa',\n * 'Hawaii', 'Helsinki', 'Houston', 'Jerusalem', 'Johannesburg',\n * 'Kiev', 'La Paz', 'Livingston', 'Las Vegas', 'London', 'Los Angeles',\n * 'Marseilles', 'Miami', 'Minneapolis', 'Melbourne', 'Mexico City',\n * 'Montreal', 'Moscow', 'New York', 'Omaha', 'Ottawa', 'Panama City',\n * 'Paris', 'Pawtucket', 'Petach Tikvah', 'Philadelphia', 'Phoenix',\n * 'Pittsburgh', 'Providence', 'Portland', 'Saint Louis', 'Saint Petersburg',\n * 'San Diego', 'San Francisco', 'Sao Paulo', 'Seattle', 'Sydney',\n * 'Tel Aviv', 'Tiberias', 'Toronto', 'Vancouver', 'White Plains',\n * 'Washington DC', 'Worcester'\n * @param name\n */\n static lookup(name: string): Location | undefined {\n return classicCities.get(name.toLowerCase());\n }\n\n toString(): string {\n return JSON.stringify(this);\n }\n\n /**\n * Converts legacy Hebcal timezone to a standard Olson tzid.\n * @param tz integer, GMT offset in hours\n * @param dst 'none', 'eu', 'usa', or 'israel'\n */\n static legacyTzToTzid(tz: number, dst: string): string | undefined {\n tz = +tz;\n if (dst === 'none') {\n if (tz === 0) {\n return 'UTC';\n } else {\n const plus = tz > 0 ? '+' : '';\n return `Etc/GMT${plus}${tz}`;\n }\n } else if (tz === 2 && dst === 'israel') {\n return 'Asia/Jerusalem';\n } else if (dst === 'eu') {\n switch (tz) {\n case -2:\n return 'Atlantic/Cape_Verde';\n case -1:\n return 'Atlantic/Azores';\n case 0:\n return 'Europe/London';\n case 1:\n return 'Europe/Paris';\n case 2:\n return 'Europe/Athens';\n default:\n break;\n }\n } else if (dst === 'usa') {\n return ZIPCODES_TZ_MAP[String(tz * -1)];\n }\n return undefined;\n }\n\n /**\n * Converts timezone info from Zip-Codes.com to a standard Olson tzid.\n * @example\n * Location.getUsaTzid('AZ', 7, 'Y') // 'America/Denver'\n * @param state two-letter all-caps US state abbreviation like 'CA'\n * @param tz positive number, 5=America/New_York, 8=America/Los_Angeles\n * @param dst single char 'Y' or 'N'\n */\n static getUsaTzid(state: string, tz: number, dst: string): string {\n tz = +tz;\n if (tz === 10 && state === 'AK') {\n return 'America/Adak';\n } else if (tz === 7 && state === 'AZ') {\n return dst === 'Y' ? 'America/Denver' : 'America/Phoenix';\n } else {\n return ZIPCODES_TZ_MAP[tz];\n }\n }\n\n /**\n * Adds a location name for `Location.lookup()` only if the name isn't\n * already being used. Returns `false` if the name is already taken\n * and `true` if successfully added.\n */\n static addLocation(cityName: string, location: Location): boolean {\n const name = cityName.toLowerCase();\n if (classicCities.has(name)) {\n return false;\n }\n classicCities.set(name, location);\n return true;\n }\n}\n\nfor (const city of classicCities0) {\n const location = new Location(\n city[2],\n city[3],\n city[1] === 'IL',\n city[4],\n city[0],\n city[1],\n undefined,\n city[5]\n );\n Location.addLocation(city[0], location);\n}\n","import 'temporal-polyfill/global';\nimport {GeoLocation, NOAACalculator} from '@hebcal/noaa';\nimport {\n HDate,\n getPseudoISO,\n getTimezoneOffset,\n isDate,\n pad2,\n} from '@hebcal/hdate';\n\n/**\n * @private\n */\nfunction zdtToDate(zdt: Temporal.ZonedDateTime | null): Date {\n if (zdt === null) {\n return new Date(NaN);\n }\n const res = new Date(zdt.epochMilliseconds);\n res.setMilliseconds(0);\n return res;\n}\n\nfunction getDate(date: Date | HDate): Date {\n if (isDate(date)) return date as Date;\n if (HDate.isHDate(date)) return (date as HDate).greg();\n throw new TypeError(`invalid date: ${date}`);\n}\n\n/**\n * Calculate halachic times (zmanim / זְמַנִּים) for a given day and location.\n * Calculations are available for tzeit / tzais (nightfall),\n * shkiah (sunset) and more.\n *\n * Zmanim are estimated using an algorithm published by the US National Oceanic\n * and Atmospheric Administration. The NOAA solar calculator is based on equations\n * from _Astronomical Algorithms_ by Jean Meeus.\n *\n * The sunrise and sunset results are theoretically accurate to within a minute for\n * locations between +/- 72° latitude, and within 10 minutes outside of those latitudes.\n * However, due to variations in atmospheric composition, temperature, pressure and\n * conditions, observed values may vary from calculations.\n * https://gml.noaa.gov/grad/solcalc/calcdetails.html\n *\n * @example\n * const {GeoLocation, Zmanim} = require('@hebcal/core');\n * const latitude = 41.822232;\n * const longitude = -71.448292;\n * const tzid = 'America/New_York';\n * const friday = new Date(2023, 8, 8);\n * const gloc = new GeoLocation(null, latitude, longitude, 0, tzid);\n * const zmanim = new Zmanim(gloc, friday, false);\n * const candleLighting = zmanim.sunsetOffset(-18, true);\n * const timeStr = Zmanim.formatISOWithTimeZone(tzid, candleLighting);\n */\nexport class Zmanim {\n private readonly date: Date;\n private readonly gloc: GeoLocation;\n private readonly noaa: NOAACalculator;\n private useElevation: boolean;\n /**\n * Initialize a Zmanim instance.\n * @param gloc GeoLocation including latitude, longitude, and timezone\n * @param date Regular or Hebrew Date. If `date` is a regular `Date`,\n * hours, minutes, seconds and milliseconds are ignored.\n * @param useElevation use elevation for calculations (default `false`).\n * If `true`, use elevation to affect the calculation of all sunrise/sunset based\n * zmanim. Note: there are some zmanim such as degree-based zmanim that are driven\n * by the amount of light in the sky and are not impacted by elevation.\n * These zmanim intentionally do not support elevation adjustment.\n */\n constructor(gloc: GeoLocation, date: Date | HDate, useElevation: boolean) {\n const dt = getDate(date);\n this.date = dt;\n this.gloc = gloc;\n const plainDate = Temporal.PlainDate.from({\n year: dt.getFullYear(),\n month: dt.getMonth() + 1,\n day: dt.getDate(),\n });\n this.noaa = new NOAACalculator(gloc, plainDate);\n this.useElevation = Boolean(useElevation);\n }\n /**\n * Returns `true` if elevation adjustment is enabled\n * for zmanim support elevation adjustment\n */\n getUseElevation(): boolean {\n return this.useElevation;\n }\n /**\n * Enables or disables elevation adjustment for zmanim support elevation adjustment\n * @param useElevation\n */\n setUseElevation(useElevation: boolean) {\n this.useElevation = useElevation;\n }\n /**\n * Convenience function to get the time when sun is above or below the horizon\n * for a certain angle (in degrees).\n * This function does not support elevation adjustment.\n * @param angle\n * @param rising\n */\n timeAtAngle(angle: number, rising: boolean): Date {\n const offsetZenith = 90 + angle;\n const zdt = rising\n ? this.noaa.getSunriseOffsetByDegrees(offsetZenith)\n : this.noaa.getSunsetOffsetByDegrees(offsetZenith);\n return zdtToDate(zdt);\n }\n /**\n * Upper edge of the Sun appears over the eastern horizon in the morning (0.833° above horizon)\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n sunrise(): Date {\n const zdt = this.useElevation\n ? this.noaa.getSunrise()\n : this.noaa.getSeaLevelSunrise();\n return zdtToDate(zdt);\n }\n /**\n * Upper edge of the Sun appears over the eastern horizon in the morning (0.833° above horizon).\n * This function does not support elevation adjustment.\n */\n seaLevelSunrise(): Date {\n const zdt = this.noaa.getSeaLevelSunrise();\n return zdtToDate(zdt);\n }\n /**\n * When the upper edge of the Sun disappears below the horizon (0.833° below horizon).\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n sunset(): Date {\n const zdt = this.useElevation\n ? this.noaa.getSunset()\n : this.noaa.getSeaLevelSunset();\n return zdtToDate(zdt);\n }\n /**\n * When the upper edge of the Sun disappears below the horizon (0.833° below horizon).\n * This function does not support elevation adjustment.\n */\n seaLevelSunset(): Date {\n const zdt = this.noaa.getSeaLevelSunset();\n return zdtToDate(zdt);\n }\n /**\n * Civil dawn; Sun is 6° below the horizon in the morning.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n dawn(): Date {\n const zdt = this.noaa.getBeginCivilTwilight();\n return zdtToDate(zdt);\n }\n /**\n * Civil dusk; Sun is 6° below the horizon in the evening.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n dusk(): Date {\n const zdt = this.noaa.getEndCivilTwilight();\n return zdtToDate(zdt);\n }\n /**\n * Returns sunset for the previous day.\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n gregEve(): Date {\n const prev = new Date(this.date);\n prev.setDate(prev.getDate() - 1);\n const zman = new Zmanim(this.gloc, prev, this.useElevation);\n return zman.sunset();\n }\n /**\n * @private\n */\n nightHour(): number {\n return (this.sunrise().getTime() - this.gregEve().getTime()) / 12; // ms in hour\n }\n /**\n * Midday – Chatzot; Sunrise plus 6 halachic hours\n */\n chatzot(): Date {\n const startOfDay = this.noaa.getSeaLevelSunrise();\n const endOfDay = this.noaa.getSeaLevelSunset();\n const zdt = this.noaa.getSunTransit(startOfDay, endOfDay);\n return zdtToDate(zdt);\n }\n /**\n * Midnight – Chatzot; Sunset plus 6 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n chatzotNight(): Date {\n return new Date(this.sunrise().getTime() - this.nightHour() * 6);\n }\n /**\n * Dawn – Alot haShachar; Sun is 16.1° below the horizon in the morning.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n alotHaShachar(): Date {\n return this.timeAtAngle(16.1, true);\n }\n /**\n * Earliest talis & tefillin – Misheyakir; Sun is 11.5° below the horizon in the morning.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n misheyakir(): Date {\n return this.timeAtAngle(11.5, true);\n }\n /**\n * Earliest talis & tefillin – Misheyakir Machmir; Sun is 10.2° below the horizon in the morning.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n misheyakirMachmir(): Date {\n return this.timeAtAngle(10.2, true);\n }\n /**\n * Utility method for using elevation-aware sunrise/sunset\n * @private\n * @param hours\n */\n getShaahZmanisBasedZman(hours: number): Date {\n const startOfDay = this.useElevation\n ? this.noaa.getSunrise()\n : this.noaa.getSeaLevelSunrise();\n const endOfDay = this.useElevation\n ? this.noaa.getSunset()\n : this.noaa.getSeaLevelSunset();\n const temporalHour = this.noaa.getTemporalHour(startOfDay, endOfDay);\n const offset = Math.round(temporalHour * hours);\n const zdt = NOAACalculator.getTimeOffset(startOfDay, offset);\n return zdtToDate(zdt);\n }\n /**\n * Latest Shema (Gra); Sunrise plus 3 halachic hours, according to the Gra.\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n sofZmanShma(): Date {\n // Gra\n return this.getShaahZmanisBasedZman(3);\n }\n /**\n * Latest Shacharit (Gra); Sunrise plus 4 halachic hours, according to the Gra.\n *\n * This method returns the latest *zman tfila* (time to recite shema in the morning)\n * that is 4 *shaos zmaniyos* (solar hours) after sunrise or sea level sunrise\n * (depending on the `useElevation` setting), according\n * to the [GRA](https://en.wikipedia.org/wiki/Vilna_Gaon).\n *\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n sofZmanTfilla(): Date {\n // Gra\n return this.getShaahZmanisBasedZman(4);\n }\n /**\n * Returns an array with alot (Date) and ms in hour (number)\n * @private\n */\n getTemporalHour72(forceSeaLevel: boolean): [Date, number] {\n const alot72 = this.sunriseOffset(-72, false, forceSeaLevel);\n const tzeit72 = this.sunsetOffset(72, false, forceSeaLevel);\n const temporalHour = (tzeit72.getTime() - alot72.getTime()) / 12;\n return [alot72, temporalHour];\n }\n /**\n * Returns an array with alot (Date) and ms in hour (number)\n * @private\n */\n getTemporalHourByDeg(angle: number): [Date, number] {\n const alot = this.timeAtAngle(angle, true);\n const tzeit = this.timeAtAngle(angle, false);\n const temporalHour = (tzeit.getTime() - alot.getTime()) / 12;\n return [alot, temporalHour];\n }\n /**\n * Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn being fixed 72 minutes before sea-level sunrise, and nightfall is fixed\n * 72 minutes after sea-level sunset.\n */\n sofZmanShmaMGA(): Date {\n // Magen Avraham\n const [alot72, temporalHour] = this.getTemporalHour72(true);\n const offset = Math.floor(3 * temporalHour);\n return new Date(alot72.getTime() + offset);\n }\n /**\n * Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn to nightfall with both being 16.1° below the horizon.\n */\n sofZmanShmaMGA16Point1(): Date {\n const [alot, temporalHour] = this.getTemporalHourByDeg(16.1);\n const offset = Math.floor(3 * temporalHour);\n return new Date(alot.getTime() + offset);\n }\n /**\n * Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn to nightfall with both being 19.8° below the horizon.\n *\n * This calculation is based on the position of the sun 90 minutes after sunset in Jerusalem\n * around the equinox / equilux which calculates to 19.8° below geometric zenith.\n * https://kosherjava.com/2022/01/12/equinox-vs-equilux-zmanim-calculations/\n */\n sofZmanShmaMGA19Point8(): Date {\n const [alot, temporalHour] = this.getTemporalHourByDeg(19.8);\n const offset = Math.floor(3 * temporalHour);\n return new Date(alot.getTime() + offset);\n }\n /**\n * Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham\n */\n sofZmanTfillaMGA(): Date {\n // Magen Avraham\n const [alot72, temporalHour] = this.getTemporalHour72(true);\n const offset = Math.floor(4 * temporalHour);\n return new Date(alot72.getTime() + offset);\n }\n /**\n * Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn to nightfall with both being 16.1° below the horizon.\n */\n sofZmanTfillaMGA16Point1(): Date {\n const [alot, temporalHour] = this.getTemporalHourByDeg(16.1);\n const offset = Math.floor(4 * temporalHour);\n return new Date(alot.getTime() + offset);\n }\n /**\n * Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham.\n * Based on the opinion of the MGA that the day is calculated from\n * dawn to nightfall with both being 19.8° below the horizon.\n *\n * This calculation is based on the position of the sun 90 minutes after sunset in Jerusalem\n * around the equinox / equilux which calculates to 19.8° below geometric zenith.\n * https://kosherjava.com/2022/01/12/equinox-vs-equilux-zmanim-calculations/\n */\n sofZmanTfillaMGA19Point8(): Date {\n const [alot, temporalHour] = this.getTemporalHourByDeg(19.8);\n const offset = Math.floor(4 * temporalHour);\n return new Date(alot.getTime() + offset);\n }\n /**\n * Earliest Mincha – Mincha Gedola (GRA); Sunrise plus 6.5 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n *\n * This method returns the latest mincha gedola, the earliest time one can pray mincha\n * that is 6.5 shaos zmaniyos (solar hours) after sunrise or sea level sunrise\n * (depending on the `useElevation` setting), according\n * to the [GRA](https://en.wikipedia.org/wiki/Vilna_Gaon).\n *\n * The Ramba\"m is of the opinion that it is better to delay *mincha* until\n * *mincha ketana* while the Ra\"sh, Tur, GRA and others are of the\n * opinion that *mincha* can be prayed *lechatchila* starting at *mincha gedola*.\n */\n minchaGedola(): Date {\n return this.getShaahZmanisBasedZman(6.5);\n }\n /**\n * Earliest Mincha – Mincha Gedola (MGA); Sunrise plus 6.5 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n *\n * This method returns the time of *mincha gedola* according to the Magen Avraham\n * with the day starting 72 minutes before sunrise and ending 72 minutes after sunset.\n * This is the earliest time to pray *mincha*.\n */\n minchaGedolaMGA(): Date {\n const [alot72, temporalHour] = this.getTemporalHour72(false);\n const offset = Math.floor(6.5 * temporalHour);\n return new Date(alot72.getTime() + offset);\n }\n /**\n * Preferable earliest time to recite Minchah – Mincha Ketana; Sunrise plus 9.5 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n *\n * This method returns *mincha ketana*, the preferred earliest time to pray *mincha* in the\n * opinion of the [Rambam](https://en.wikipedia.org/wiki/Maimonides) and others,\n * that is 9.5 *shaos zmaniyos* (solar hours) after sunrise or sea level sunrise\n * (depending on the `useElevation` setting), according\n * to the [GRA](https://en.wikipedia.org/wiki/Vilna_Gaon).\n */\n minchaKetana(): Date {\n return this.getShaahZmanisBasedZman(9.5);\n }\n /**\n * This method returns the time of *mincha ketana* according to the Magen Avraham\n * with the day starting 72 minutes before sunrise and ending 72 minutes after sunset.\n * This is the preferred earliest time to pray *mincha* according to the opinion of\n * the [Rambam](https://en.wikipedia.org/wiki/Maimonides) and others.\n *\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n minchaKetanaMGA(): Date {\n const [alot72, temporalHour] = this.getTemporalHour72(false);\n return new Date(alot72.getTime() + Math.floor(9.5 * temporalHour));\n }\n /**\n * Plag haMincha; Sunrise plus 10.75 halachic hours.\n * If elevation is enabled, this function will include elevation in the calculation.\n */\n plagHaMincha(): Date {\n return this.getShaahZmanisBasedZman(10.75);\n }\n /**\n * @param [angle=8.5] optional time for solar depression.\n * Default is 8.5 degrees for 3 small stars, use 7.083 degrees for 3 medium-sized stars.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n tzeit(angle = 8.5): Date {\n return this.timeAtAngle(angle, false);\n }\n /**\n * Alias for sunrise\n */\n neitzHaChama(): Date {\n return this.sunrise();\n }\n /**\n * Alias for sunset\n */\n shkiah(): Date {\n return this.sunset();\n }\n /**\n * Rabbeinu Tam holds that bein hashmashos is a specific time\n * between sunset and tzeis hakochavim.\n * One opinion on how to calculate this time is that\n * it is 13.5 minutes before tzies 7.083.\n * Because degree-based functions estimate the amount of light in the sky,\n * the result is not impacted by elevation.\n */\n beinHaShmashos(): Date {\n const tzeit = this.tzeit(7.083);\n const millis = tzeit.getTime();\n if (isNaN(millis)) {\n return tzeit;\n }\n return new Date(millis - 13.5 * 60 * 1000);\n }\n /**\n * Uses timeFormat to return a date like '20:34'\n */\n static formatTime(dt: Date, timeFormat: Intl.DateTimeFormat): string {\n const time = timeFormat.format(dt);\n const hm = time.split(':');\n if (hm[0] === '24') {\n return '00:' + hm[1];\n }\n return time;\n }\n\n /**\n * Discards seconds, rounding to nearest minute.\n * @param dt\n */\n static roundTime(dt: Date): Date {\n const millis = dt.getTime();\n if (isNaN(millis)) {\n return dt;\n }\n // Round up to next minute if needed\n const millisOnly = dt.getMilliseconds();\n const seconds = dt.getSeconds();\n if (seconds === 0 && millisOnly === 0) {\n return dt;\n }\n const secAndMillis = seconds * 1000 + millisOnly;\n const delta =\n secAndMillis >= 30000 ? 60000 - secAndMillis : -1 * secAndMillis;\n return new Date(millis + delta);\n }\n\n /**\n * Get offset string (like \"+05:00\" or \"-08:00\") from tzid (like \"Europe/Moscow\")\n * @param tzid\n * @param date\n */\n static timeZoneOffset(tzid: string, date: Date): string {\n const offset = getTimezoneOffset(tzid, date);\n const offsetAbs = Math.abs(offset);\n const hours = Math.floor(offsetAbs / 60);\n const minutes = offsetAbs % 60;\n return (offset < 0 ? '+' : '-') + pad2(hours) + ':' + pad2(minutes);\n }\n\n /**\n * Returns a string like \"2022-04-01T13:06:00-11:00\"\n * @param tzid\n * @param date\n */\n static formatISOWithTimeZone(tzid: string, date: Date): string {\n if (isNaN(date.getTime())) {\n return '0000-00-00T00:00:00Z';\n }\n return (\n getPseudoISO(tzid, date).substring(0, 19) +\n Zmanim.timeZoneOffset(tzid, date)\n );\n }\n\n /**\n * Returns sunrise + `offset` minutes (either positive or negative).\n * If elevation is enabled, this function will include elevation in the calculation\n * unless `forceSeaLevel` is `true`.\n * @param offset minutes\n * @param roundMinute round time to nearest minute (default true)\n * @param forceSeaLevel use sea-level sunrise (default false)\n */\n sunriseOffset(\n offset: number,\n roundMinute = true,\n forceSeaLevel = false\n ): Date {\n const sunrise = forceSeaLevel ? this.seaLevelSunrise() : this.sunrise();\n if (isNaN(sunrise.getTime())) {\n return sunrise;\n }\n if (roundMinute) {\n // For positive offsets only, round up to next minute if needed\n if (offset > 0 && sunrise.getSeconds() >= 30) {\n offset++;\n }\n sunrise.setSeconds(0, 0);\n }\n return new Date(sunrise.getTime() + offset * 60 * 1000);\n }\n\n /**\n * Returns sunset + `offset` minutes (either positive or negative).\n * If elevation is enabled, this function will include elevation in the calculation\n * unless `forceSeaLevel` is `true`.\n * @param offset minutes\n * @param roundMinute round time to nearest minute (default true)\n * @param forceSeaLevel use sea-level sunset (default false)\n */\n sunsetOffset(\n offset: number,\n roundMinute = true,\n forceSeaLevel = false\n ): Date {\n const sunset = forceSeaLevel ? this.seaLevelSunset() : this.sunset();\n if (isNaN(sunset.getTime())) {\n return sunset;\n }\n if (roundMinute) {\n // For Havdalah only, round up to next minute if needed\n if (offset > 0 && sunset.getSeconds() >= 30) {\n offset++;\n }\n sunset.setSeconds(0, 0);\n }\n return new Date(sunset.getTime() + offset * 60 * 1000);\n }\n /**\n * Returns the Hebrew date relative to the specified location and Gregorian date,\n * taking into consideration whether the time is before or after sunset.\n *\n * For example, if the given date and is `2024-09-22T10:35` (before sunset), and\n * sunset for the specified location is **19:04**, then this function would\n * return a Hebrew date of `19th of Elul, 5784`.\n * If the given date is the same Gregorian day after sunset\n * (for example `2024-09-22T20:07`), this function would return a\n * Hebrew date of `20th of Elul, 5784`.\n * @example\n * const {GeoLocation, Zmanim, HDate} = require('@hebcal/core');\n * const latitude = 48.85341;\n * const longitude = 2.3488;\n * const timezone = 'Europe/Paris';\n * const gloc = new GeoLocation(null, latitude, longitude, 0, timezone);\n * const before = Zmanim.makeSunsetAwareHDate(gloc, new Date('2024-09-22T17:38:46.123Z'), false);\n * console.log(before.toString()); // '19 Elul 5784'\n * const after = Zmanim.makeSunsetAwareHDate(gloc, new Date('2024-09-22T23:45:18.345Z'), false);\n * console.log(after.toString()); // '20 Elul 5784'\n */\n static makeSunsetAwareHDate(\n gloc: GeoLocation,\n date: Date,\n useElevation: boolean\n ): HDate {\n const zmanim = new Zmanim(gloc, date, useElevation);\n const sunset = zmanim.sunset();\n let hd = new HDate(date);\n const sunsetMillis = sunset.getTime();\n if (isNaN(sunsetMillis)) {\n return hd;\n }\n if (date.getTime() >= sunsetMillis) {\n hd = hd.next();\n }\n return hd;\n }\n}\n","import {CalOptions} from './CalOptions';\n\nconst hour12cc: Record<string, number> = {\n US: 1,\n CA: 1,\n BR: 1,\n AU: 1,\n NZ: 1,\n DO: 1,\n PR: 1,\n GR: 1,\n IN: 1,\n KR: 1,\n NP: 1,\n ZA: 1,\n} as const;\n\n/**\n * @private\n * @param timeStr - original time like \"20:30\"\n * @param suffix - \"p\" or \"pm\" or \" P.M.\". Add leading space if you want it\n * @param options\n */\nexport function reformatTimeStr(\n timeStr: string,\n suffix: string,\n options?: CalOptions\n): string {\n if (typeof timeStr !== 'string')\n throw new TypeError(`Bad timeStr: ${timeStr}`);\n const cc = options?.location?.getCountryCode() || (options?.il ? 'IL' : 'US');\n const hour12 = options?.hour12;\n if (typeof hour12 !== 'undefined' && !hour12) {\n return timeStr;\n }\n if (!hour12 && typeof hour12cc[cc] === 'undefined') {\n return timeStr;\n }\n const hm = timeStr.split(':');\n let hour: string | number = parseInt(hm[0], 10);\n if (hour < 12 && suffix) {\n suffix = suffix.replace('p', 'a').replace('P', 'A');\n if (hour === 0) {\n hour = 12;\n }\n } else if (hour > 12) {\n hour = hour % 12;\n } else if (hour === 0) {\n hour = '00';\n }\n return `${hour}:${hm[1]}${suffix}`;\n}\n","import {HDate, Locale} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\nimport {Location} from './location';\nimport {Event} from './event';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport {Zmanim} from './zmanim';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** An event that has an `eventTime` and `eventTimeStr` */\nexport class TimedEvent extends Event {\n readonly eventTime: Date;\n readonly location: Location;\n readonly eventTimeStr: string;\n readonly fmtTime: string;\n readonly linkedEvent?: Event;\n /**\n * @param desc Description (not translated)\n */\n constructor(\n date: HDate,\n desc: string,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, desc, mask);\n this.eventTime = Zmanim.roundTime(eventTime);\n this.location = location;\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n const opts = {...options, location};\n this.fmtTime = reformatTimeStr(this.eventTimeStr, 'pm', opts);\n if (typeof linkedEvent !== 'undefined') {\n this.linkedEvent = linkedEvent;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Candle lighting\" without the time.\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale);\n }\n\n getCategories(): string[] {\n const desc = this.getDesc();\n switch (desc) {\n // LIGHT_CANDLES or LIGHT_CANDLES_TZEIS\n case 'Candle lighting':\n return ['candles'];\n // YOM_TOV_ENDS\n case 'Havdalah':\n return ['havdalah'];\n // flags.MINOR_FAST or flags.MAJOR_FAST\n case 'Fast begins':\n case 'Fast ends':\n return ['zmanim', 'fast'];\n }\n /* NOTREACHED */\n return ['unknown'];\n }\n}\n\n/** Candle lighting before Shabbat or holiday */\nexport class CandleLightingEvent extends TimedEvent {\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(\n date,\n 'Candle lighting',\n mask,\n eventTime,\n location,\n linkedEvent,\n options\n );\n }\n\n getEmoji(): string {\n return '🕯️';\n }\n}\n\n/** Havdalah after Shabbat or holiday */\nexport class HavdalahEvent extends TimedEvent {\n private readonly havdalahMins?: number;\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n havdalahMins?: number,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, 'Havdalah', mask, eventTime, location, linkedEvent, options);\n if (havdalahMins) {\n this.havdalahMins = havdalahMins;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return this.renderBrief(locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Havdalah\" without the time.\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n let str = Locale.gettext(this.getDesc(), locale);\n if (this.havdalahMins) {\n const min = Locale.gettext('min', locale);\n str += ` (${this.havdalahMins} ${min})`;\n }\n return str;\n }\n\n getEmoji(): string {\n return '✨';\n }\n}\n","import {months} from '@hebcal/hdate';\nimport {flags} from './event';\n\nconst Nisan = months.NISAN;\nconst Iyyar = months.IYYAR;\nconst Sivan = months.SIVAN;\nconst Tamuz = months.TAMUZ;\nconst Av = months.AV;\nconst Elul = months.ELUL;\nconst Tishrei = months.TISHREI;\nconst Cheshvan = months.CHESHVAN;\nconst Kislev = months.KISLEV;\nconst Shvat = months.SHVAT;\nconst Adar2 = months.ADAR_II;\n\nconst CHAG = flags.CHAG;\nconst LIGHT_CANDLES = flags.LIGHT_CANDLES;\nconst YOM_TOV_ENDS = flags.YOM_TOV_ENDS;\nconst CHUL_ONLY = flags.CHUL_ONLY;\nconst IL_ONLY = flags.IL_ONLY;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\nconst CHANUKAH_CANDLES = flags.CHANUKAH_CANDLES;\nconst MAJOR_FAST = flags.MAJOR_FAST;\nconst MINOR_HOLIDAY = flags.MINOR_HOLIDAY;\nconst EREV = flags.EREV;\nconst CHOL_HAMOED = flags.CHOL_HAMOED;\n\nconst emojiPesach = '🫓';\nconst emojiSukkot = '🌿🍋';\n\nconst ROSH_HASHANA_II = 'Rosh Hashana II';\nconst EREV_YOM_KIPPUR = 'Erev Yom Kippur';\nconst YOM_KIPPUR = 'Yom Kippur';\nconst EREV_SUKKOT = 'Erev Sukkot';\nconst SUKKOT_I = 'Sukkot I';\nconst SUKKOT_II = 'Sukkot II';\nconst SUKKOT_III_CHM = \"Sukkot III (CH''M)\";\nconst SUKKOT_IV_CHM = \"Sukkot IV (CH''M)\";\nconst SUKKOT_V_CHM = \"Sukkot V (CH''M)\";\nconst SUKKOT_VI_CHM = \"Sukkot VI (CH''M)\";\nconst SHMINI_ATZERET = 'Shmini Atzeret';\nconst SIMCHAT_TORAH = 'Simchat Torah';\nconst SUKKOT_II_CHM = \"Sukkot II (CH''M)\";\nconst SUKKOT_VII_HOSHANA_RABA = 'Sukkot VII (Hoshana Raba)';\nconst CHANUKAH_1_CANDLE = 'Chanukah: 1 Candle';\nconst TU_BISHVAT = 'Tu BiShvat';\nconst EREV_PURIM = 'Erev Purim';\nconst PURIM = 'Purim';\nconst SHUSHAN_PURIM = 'Shushan Purim';\nconst EREV_PESACH = 'Erev Pesach';\nconst PESACH_I = 'Pesach I';\nconst PESACH_II = 'Pesach II';\nconst PESACH_II_CHM = \"Pesach II (CH''M)\";\nconst PESACH_III_CHM = \"Pesach III (CH''M)\";\nconst PESACH_IV_CHM = \"Pesach IV (CH''M)\";\nconst PESACH_V_CHM = \"Pesach V (CH''M)\";\nconst PESACH_VI_CHM = \"Pesach VI (CH''M)\";\nconst PESACH_VII = 'Pesach VII';\nconst PESACH_VIII = 'Pesach VIII';\nconst PESACH_SHENI = 'Pesach Sheni';\nconst LAG_BAOMER = 'Lag BaOmer';\nconst EREV_SHAVUOT = 'Erev Shavuot';\nconst SHAVUOT = 'Shavuot';\nconst SHAVUOT_I = 'Shavuot I';\nconst SHAVUOT_II = 'Shavuot II';\nconst TU_BAV = \"Tu B'Av\";\nconst ROSH_HASHANA_LABEHEMOT = 'Rosh Hashana LaBehemot';\nconst EREV_ROSH_HASHANA = 'Erev Rosh Hashana';\nconst YOM_YERUSHALAYIM = 'Yom Yerushalayim';\nconst BEN_GURION_DAY = 'Ben-Gurion Day';\nconst FAMILY_DAY = 'Family Day';\nconst YITZHAK_RABIN_MEMORIAL_DAY = 'Yitzhak Rabin Memorial Day';\nconst HERZL_DAY = 'Herzl Day';\nconst JABOTINSKY_DAY = 'Jabotinsky Day';\nconst SIGD = 'Sigd';\nconst YOM_HAALIYAH = 'Yom HaAliyah';\nconst YOM_HAALIYAH_SCHOOL_OBSERVANCE = 'Yom HaAliyah School Observance';\nconst HEBREW_LANGUAGE_DAY = 'Hebrew Language Day';\n\n/**\n * Transliterated names of holidays, used by `Event.getDesc()`\n * @readonly\n * @enum {string}\n */\nexport const holidayDesc = {\n /** Asara B'Tevet */\n ASARA_BTEVET: \"Asara B'Tevet\",\n /** Birkat Hachamah */\n BIRKAT_HACHAMAH: 'Birkat Hachamah',\n /** Chag HaBanot */\n CHAG_HABANOT: 'Chag HaBanot',\n /** Chanukah: 8th Day */\n CHANUKAH_8TH_DAY: 'Chanukah: 8th Day',\n /** Erev Tish'a B'Av */\n EREV_TISHA_BAV: \"Erev Tish'a B'Av\",\n /** Leil Selichot */\n LEIL_SELICHOT: 'Leil Selichot',\n /** Purim Katan */\n PURIM_KATAN: 'Purim Katan',\n /** Purim Meshulash */\n PURIM_MESHULASH: 'Purim Meshulash',\n /** Shabbat Chazon */\n SHABBAT_CHAZON: 'Shabbat Chazon',\n /** Shabbat HaChodesh */\n SHABBAT_HACHODESH: 'Shabbat HaChodesh',\n /** Shabbat HaGadol */\n SHABBAT_HAGADOL: 'Shabbat HaGadol',\n /** Shabbat Nachamu */\n SHABBAT_NACHAMU: 'Shabbat Nachamu',\n /** Shabbat Parah */\n SHABBAT_PARAH: 'Shabbat Parah',\n /** Shabbat Shekalim */\n SHABBAT_SHEKALIM: 'Shabbat Shekalim',\n /** Shabbat Shirah */\n SHABBAT_SHIRAH: 'Shabbat Shirah',\n /** Shabbat Shuva */\n SHABBAT_SHUVA: 'Shabbat Shuva',\n /** Shabbat Zachor */\n SHABBAT_ZACHOR: 'Shabbat Zachor',\n /** Shushan Purim Katan */\n SHUSHAN_PURIM_KATAN: 'Shushan Purim Katan',\n /** Ta'anit Bechorot */\n TAANIT_BECHOROT: \"Ta'anit Bechorot\",\n /** Ta'anit Esther */\n TAANIT_ESTHER: \"Ta'anit Esther\",\n /** Tish'a B'Av */\n TISHA_BAV: \"Tish'a B'Av\",\n /** Tzom Gedaliah */\n TZOM_GEDALIAH: 'Tzom Gedaliah',\n /** Tzom Tammuz */\n TZOM_TAMMUZ: 'Tzom Tammuz',\n /** Yom HaAtzma'ut */\n YOM_HAATZMA_UT: \"Yom HaAtzma'ut\",\n /** Yom HaShoah */\n YOM_HASHOAH: 'Yom HaShoah',\n /** Yom HaZikaron */\n YOM_HAZIKARON: 'Yom HaZikaron',\n\n /** Ben-Gurion Day */\n BEN_GURION_DAY,\n /** Chanukah: 1 Candle */\n CHANUKAH_1_CANDLE,\n /** Erev Pesach */\n EREV_PESACH,\n /** Erev Purim */\n EREV_PURIM,\n /** Erev Rosh Hashana */\n EREV_ROSH_HASHANA,\n /** Erev Shavuot */\n EREV_SHAVUOT,\n /** Erev Sukkot */\n EREV_SUKKOT,\n /** Erev Yom Kippur */\n EREV_YOM_KIPPUR,\n /** Family Day */\n FAMILY_DAY,\n /** Hebrew Language Day */\n HEBREW_LANGUAGE_DAY,\n /** Herzl Day */\n HERZL_DAY,\n /** Jabotinsky Day */\n JABOTINSKY_DAY,\n /** Lag BaOmer */\n LAG_BAOMER,\n /** Pesach I */\n PESACH_I,\n /** Pesach II */\n PESACH_II,\n /** Pesach III (CH''M) */\n PESACH_III_CHM,\n /** Pesach II (CH''M) */\n PESACH_II_CHM,\n /** Pesach IV (CH''M) */\n PESACH_IV_CHM,\n /** Pesach Sheni */\n PESACH_SHENI,\n /** Pesach VII */\n PESACH_VII,\n /** Pesach VIII */\n PESACH_VIII,\n /** Pesach VI (CH''M) */\n PESACH_VI_CHM,\n /** Pesach V (CH''M) */\n PESACH_V_CHM,\n /** Purim */\n PURIM,\n /** Rosh Hashana II */\n ROSH_HASHANA_II,\n /** Rosh Hashana LaBehemot */\n ROSH_HASHANA_LABEHEMOT,\n /** Shavuot */\n SHAVUOT,\n /** Shavuot I */\n SHAVUOT_I,\n /** Shavuot II */\n SHAVUOT_II,\n /** Shmini Atzeret */\n SHMINI_ATZERET,\n /** Shushan Purim */\n SHUSHAN_PURIM,\n /** Sigd */\n SIGD,\n /** Simchat Torah */\n SIMCHAT_TORAH,\n /** Sukkot I */\n SUKKOT_I,\n /** Sukkot II */\n SUKKOT_II,\n /** Sukkot III (CH''M) */\n SUKKOT_III_CHM,\n /** Sukkot II (CH''M) */\n SUKKOT_II_CHM,\n /** Sukkot IV (CH''M) */\n SUKKOT_IV_CHM,\n /** Sukkot VII (Hoshana Raba) */\n SUKKOT_VII_HOSHANA_RABA,\n /** Sukkot VI (CH''M) */\n SUKKOT_VI_CHM,\n /** Sukkot V (CH''M) */\n SUKKOT_V_CHM,\n /** Tu B\\'Av */\n TU_BAV,\n /** Tu BiShvat */\n TU_BISHVAT,\n /** Yitzhak Rabin Memorial Day */\n YITZHAK_RABIN_MEMORIAL_DAY,\n /** Yom HaAliyah */\n YOM_HAALIYAH,\n /** Yom HaAliyah School Observance */\n YOM_HAALIYAH_SCHOOL_OBSERVANCE,\n /** Yom Kippur */\n YOM_KIPPUR,\n /** Yom Yerushalayim */\n YOM_YERUSHALAYIM,\n} as const;\n\nexport interface Holiday {\n mm: number; // This should be an enum `Month` eventually\n dd: number;\n desc: string;\n flags: number;\n chmDay?: number;\n emoji?: string;\n}\n\nexport const staticHolidays: Holiday[] = [\n {\n mm: Tishrei,\n dd: 2,\n desc: ROSH_HASHANA_II,\n flags: CHAG | YOM_TOV_ENDS,\n emoji: '🍏🍯',\n },\n {mm: Tishrei, dd: 9, desc: EREV_YOM_KIPPUR, flags: EREV | LIGHT_CANDLES},\n {\n mm: Tishrei,\n dd: 10,\n desc: YOM_KIPPUR,\n flags: CHAG | MAJOR_FAST | YOM_TOV_ENDS,\n },\n\n {\n mm: Tishrei,\n dd: 14,\n desc: EREV_SUKKOT,\n flags: CHUL_ONLY | EREV | LIGHT_CANDLES,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 15,\n desc: SUKKOT_I,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 16,\n desc: SUKKOT_II,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 17,\n desc: SUKKOT_III_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 1,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 18,\n desc: SUKKOT_IV_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 2,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 19,\n desc: SUKKOT_V_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 3,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 20,\n desc: SUKKOT_VI_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 4,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 22,\n desc: SHMINI_ATZERET,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n },\n {\n mm: Tishrei,\n dd: 23,\n desc: SIMCHAT_TORAH,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n },\n\n {\n mm: Tishrei,\n dd: 14,\n desc: EREV_SUKKOT,\n flags: IL_ONLY | EREV | LIGHT_CANDLES,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 15,\n desc: SUKKOT_I,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 16,\n desc: SUKKOT_II_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 1,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 17,\n desc: SUKKOT_III_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 2,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 18,\n desc: SUKKOT_IV_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 3,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 19,\n desc: SUKKOT_V_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 4,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 20,\n desc: SUKKOT_VI_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 5,\n emoji: emojiSukkot,\n },\n {\n mm: Tishrei,\n dd: 22,\n desc: SHMINI_ATZERET,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n },\n\n {\n mm: Tishrei,\n dd: 21,\n desc: SUKKOT_VII_HOSHANA_RABA,\n flags: LIGHT_CANDLES | CHOL_HAMOED,\n chmDay: -1,\n emoji: emojiSukkot,\n },\n {\n mm: Kislev,\n dd: 24,\n desc: CHANUKAH_1_CANDLE,\n flags: EREV | MINOR_HOLIDAY | CHANUKAH_CANDLES,\n emoji: '🕎1️⃣',\n },\n {mm: Shvat, dd: 15, desc: TU_BISHVAT, flags: MINOR_HOLIDAY, emoji: '🌳'},\n {\n mm: Adar2,\n dd: 13,\n desc: EREV_PURIM,\n flags: EREV | MINOR_HOLIDAY,\n emoji: '🎭️📜',\n },\n {mm: Adar2, dd: 14, desc: PURIM, flags: MINOR_HOLIDAY, emoji: '🎭️📜'},\n {\n mm: Adar2,\n dd: 15,\n desc: SHUSHAN_PURIM,\n flags: MINOR_HOLIDAY,\n emoji: '🎭️📜',\n },\n // Pesach Israel\n {\n mm: Nisan,\n dd: 14,\n desc: EREV_PESACH,\n flags: IL_ONLY | EREV | LIGHT_CANDLES,\n emoji: '🫓🍷',\n },\n {\n mm: Nisan,\n dd: 15,\n desc: PESACH_I,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 16,\n desc: PESACH_II_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 1,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 17,\n desc: PESACH_III_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 2,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 18,\n desc: PESACH_IV_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 3,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 19,\n desc: PESACH_V_CHM,\n flags: IL_ONLY | CHOL_HAMOED,\n chmDay: 4,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 20,\n desc: PESACH_VI_CHM,\n flags: IL_ONLY | CHOL_HAMOED | LIGHT_CANDLES,\n chmDay: 5,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 21,\n desc: PESACH_VII,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiPesach,\n },\n // Pesach chutz l'aretz\n {\n mm: Nisan,\n dd: 14,\n desc: EREV_PESACH,\n flags: CHUL_ONLY | EREV | LIGHT_CANDLES,\n emoji: '🫓🍷',\n },\n {\n mm: Nisan,\n dd: 15,\n desc: PESACH_I,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n emoji: '🫓🍷',\n },\n {\n mm: Nisan,\n dd: 16,\n desc: PESACH_II,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 17,\n desc: PESACH_III_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 1,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 18,\n desc: PESACH_IV_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 2,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 19,\n desc: PESACH_V_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED,\n chmDay: 3,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 20,\n desc: PESACH_VI_CHM,\n flags: CHUL_ONLY | CHOL_HAMOED | LIGHT_CANDLES,\n chmDay: 4,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 21,\n desc: PESACH_VII,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n emoji: emojiPesach,\n },\n {\n mm: Nisan,\n dd: 22,\n desc: PESACH_VIII,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: emojiPesach,\n },\n\n {mm: Iyyar, dd: 14, desc: PESACH_SHENI, flags: MINOR_HOLIDAY},\n {mm: Iyyar, dd: 18, desc: LAG_BAOMER, flags: MINOR_HOLIDAY, emoji: '🔥'},\n {\n mm: Sivan,\n dd: 5,\n desc: EREV_SHAVUOT,\n flags: EREV | LIGHT_CANDLES,\n emoji: '⛰️🌸',\n },\n {\n mm: Sivan,\n dd: 6,\n desc: SHAVUOT,\n flags: IL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: '⛰️🌸',\n },\n {\n mm: Sivan,\n dd: 6,\n desc: SHAVUOT_I,\n flags: CHUL_ONLY | CHAG | LIGHT_CANDLES_TZEIS,\n emoji: '⛰️🌸',\n },\n {\n mm: Sivan,\n dd: 7,\n desc: SHAVUOT_II,\n flags: CHUL_ONLY | CHAG | YOM_TOV_ENDS,\n emoji: '⛰️🌸',\n },\n {mm: Av, dd: 15, desc: TU_BAV, flags: MINOR_HOLIDAY, emoji: '❤️'},\n {\n mm: Elul,\n dd: 1,\n desc: ROSH_HASHANA_LABEHEMOT,\n flags: MINOR_HOLIDAY,\n emoji: '🐑',\n },\n {\n mm: Elul,\n dd: 29,\n desc: EREV_ROSH_HASHANA,\n flags: EREV | LIGHT_CANDLES,\n emoji: '🍏🍯',\n },\n] as const;\n\nexport interface ModernHoliday {\n firstYear: number;\n mm: number; // This should be an enum `Month` eventually\n dd: number;\n desc: string;\n chul?: boolean;\n suppressEmoji?: boolean;\n satPostponeToSun?: boolean;\n friPostponeToSun?: boolean;\n friSatMovetoThu?: boolean;\n}\n\nexport const staticModernHolidays: ModernHoliday[] = [\n {firstYear: 5727, mm: Iyyar, dd: 28, desc: YOM_YERUSHALAYIM, chul: true},\n {\n firstYear: 5737,\n mm: Kislev,\n dd: 6,\n desc: BEN_GURION_DAY,\n satPostponeToSun: true,\n friPostponeToSun: true,\n },\n {firstYear: 5750, mm: Shvat, dd: 30, desc: FAMILY_DAY},\n {\n firstYear: 5758,\n mm: Cheshvan,\n dd: 12,\n desc: YITZHAK_RABIN_MEMORIAL_DAY,\n friSatMovetoThu: true,\n },\n {firstYear: 5764, mm: Iyyar, dd: 10, desc: HERZL_DAY, satPostponeToSun: true},\n {\n firstYear: 5765,\n mm: Tamuz,\n dd: 29,\n desc: JABOTINSKY_DAY,\n satPostponeToSun: true,\n },\n {\n firstYear: 5769,\n mm: Cheshvan,\n dd: 29,\n desc: SIGD,\n chul: true,\n suppressEmoji: true,\n friSatMovetoThu: true,\n },\n {firstYear: 5777, mm: Nisan, dd: 10, desc: YOM_HAALIYAH, chul: true},\n {firstYear: 5777, mm: Cheshvan, dd: 7, desc: YOM_HAALIYAH_SCHOOL_OBSERVANCE},\n // https://www.gov.il/he/departments/policies/2012_des5234\n {\n firstYear: 5773,\n mm: months.TEVET,\n dd: 21,\n desc: HEBREW_LANGUAGE_DAY,\n friSatMovetoThu: true,\n },\n] as const;\n","import {HDate, Locale, isoDateString} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {holidayDesc as hdesc} from './staticHolidays';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */\nexport class HolidayEvent extends Event {\n /** During Sukkot or Pesach */\n cholHaMoedDay?: number;\n chanukahDay?: number;\n /**\n * `true` if the fast day was postponed a day to avoid Shabbat.\n * - Tish'a B'Av postponed from the 9th to the 10th\n * - Tzom Tammuz postponed from the 17th to the 18th\n */\n observed?: boolean;\n\n basename(): string {\n return this.getDesc()\n .replace(/ \\d{4}$/, '')\n .replace(/ \\(CH''M\\)$/, '')\n .replace(/ \\(observed\\)$/, '')\n .replace(/ \\(Hoshana Raba\\)$/, '')\n .replace(/ [IV]+$/, '')\n .replace(/: \\d Candles?$/, '')\n .replace(/: 8th Day$/, '')\n .replace(/^Erev /, '');\n }\n\n url(): string | undefined {\n const year = this.getDate().greg().getFullYear();\n if (year < 100) {\n return undefined;\n }\n const url =\n 'https://www.hebcal.com/holidays/' +\n this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\n '-' +\n this.urlDateSuffix();\n return this.getFlags() & flags.IL_ONLY ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const year = this.getDate().greg().getFullYear();\n return String(year);\n }\n\n getEmoji(): string {\n if (this.emoji) {\n return this.emoji;\n } else if (this.getFlags() & flags.SPECIAL_SHABBAT) {\n return '🕍';\n } else {\n return '✡️';\n }\n }\n\n getCategories(): string[] {\n if (this.cholHaMoedDay) {\n return ['holiday', 'major', 'cholhamoed'];\n }\n const cats = super.getCategories();\n if (cats[0] !== 'unknown') {\n return cats;\n }\n // Don't depend on flags.MINOR_HOLIDAY always being set. Look for minor holidays.\n const desc = this.getDesc();\n switch (desc) {\n case hdesc.LAG_BAOMER:\n case hdesc.LEIL_SELICHOT:\n case hdesc.PESACH_SHENI:\n case hdesc.EREV_PURIM:\n case hdesc.PURIM_KATAN:\n case hdesc.SHUSHAN_PURIM:\n case hdesc.TU_BAV:\n case hdesc.TU_BISHVAT:\n case hdesc.ROSH_HASHANA_LABEHEMOT:\n return ['holiday', 'minor'];\n }\n\n return ['holiday', 'major'];\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n const str = super.render(locale);\n return str.replace(/'/g, '’');\n }\n /**\n * Returns a brief (translated) description of this event.\n * For most events, this is the same as render(). For some events, it procudes\n * a shorter text (e.g. without a time or added description).\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n const str = super.renderBrief(locale);\n return str.replace(/'/g, '’');\n }\n /**\n * Makes a clone of this Event object\n * @deprecated\n */\n clone(): HolidayEvent {\n const ev = new HolidayEvent(this.date, this.desc, this.mask);\n // overwrite all enumerable properties\n Object.assign(ev, this);\n return ev;\n }\n}\n\n/**\n * Because Asara B'Tevet often occurs twice in the same Gregorian year,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class AsaraBTevetEvent extends HolidayEvent {\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.getDate().greg());\n return isoDate.replace(/-/g, '');\n }\n}\n\n/**\n * Because Chanukah sometimes starts in December and ends in January,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class ChanukahEvent extends HolidayEvent {\n urlDateSuffix(): string {\n const dt = this.getDate().greg();\n let year = dt.getFullYear();\n if (dt.getMonth() === 0) {\n year--;\n }\n return String(year);\n }\n}\n\n/** Represents Rosh Hashana, the Jewish New Year */\nexport class RoshHashanaEvent extends HolidayEvent {\n private readonly hyear: number;\n /**\n * @private\n * @param date Hebrew date event occurs\n * @param hyear Hebrew year\n * @param mask optional holiday flags\n */\n constructor(date: HDate, hyear: number, mask: number) {\n super(date, `Rosh Hashana ${hyear}`, mask);\n this.hyear = hyear;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return Locale.gettext('Rosh Hashana', locale) + ' ' + this.hyear;\n }\n\n getEmoji(): string {\n return '🍏🍯';\n }\n}\n\nconst roshChodeshStr = 'Rosh Chodesh';\n\n/** Represents Rosh Chodesh, the beginning of a new month */\nexport class RoshChodeshEvent extends HolidayEvent {\n /**\n * Constructs Rosh Chodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n */\n constructor(date: HDate, monthName: string) {\n super(date, `${roshChodeshStr} ${monthName}`, flags.ROSH_CHODESH);\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n const monthName = this.getDesc().substring(roshChodeshStr.length + 1);\n const monthName0 = Locale.gettext(monthName, locale);\n const monthName1 = monthName0.replace(/'/g, '’');\n return Locale.gettext(roshChodeshStr, locale) + ' ' + monthName1;\n }\n\n basename(): string {\n return this.getDesc();\n }\n\n getEmoji(): string {\n return this.emoji || '🌒';\n }\n}\n","/* eslint-disable max-len */\nimport {HDate, months} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\nimport {Location} from './location';\nimport {Event, flags} from './event';\nimport {ChanukahEvent, HolidayEvent} from './HolidayEvent';\nimport {Zmanim} from './zmanim';\nimport {TimedEvent, CandleLightingEvent, HavdalahEvent} from './TimedEvent';\n\nconst LIGHT_CANDLES = flags.LIGHT_CANDLES;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\n\n/**\n * @private\n */\nexport function makeCandleEvent(\n ev: Event | undefined,\n hd: HDate,\n options: CalOptions,\n isFriday: boolean,\n isSaturday: boolean\n): TimedEvent | undefined {\n let havdalahTitle = false;\n let useHavdalahOffset = isSaturday;\n let mask = ev ? ev.getFlags() : LIGHT_CANDLES;\n if (typeof ev !== 'undefined') {\n // if linked event && dow == FRI, use Candle lighting time & title\n if (!isFriday) {\n if (mask & (LIGHT_CANDLES_TZEIS | flags.CHANUKAH_CANDLES)) {\n useHavdalahOffset = true;\n } else if (mask & flags.YOM_TOV_ENDS) {\n havdalahTitle = true;\n useHavdalahOffset = true;\n }\n }\n } else if (isSaturday) {\n havdalahTitle = true;\n mask = LIGHT_CANDLES_TZEIS;\n }\n // if Havdalah offset is 0 or undefined, we'll use tzeit time\n const offset = useHavdalahOffset\n ? Number(options.havdalahMins)\n : Number(options.candleLightingMins);\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd, useElevation);\n const time =\n useHavdalahOffset && !offset\n ? zmanim.tzeit(options.havdalahDeg)\n : zmanim.sunsetOffset(offset, true);\n if (isNaN(time.getTime())) {\n return undefined; // no sunset\n }\n if (havdalahTitle) {\n return new HavdalahEvent(\n hd,\n mask,\n time,\n location,\n options.havdalahMins,\n ev,\n options\n );\n } else {\n mask |= LIGHT_CANDLES;\n return new CandleLightingEvent(hd, mask, time, location, ev, options);\n }\n}\n\nconst FAST_BEGINS = 'Fast begins';\nconst FAST_ENDS = 'Fast ends';\n\n/** A fast day also contains a start and end time */\nexport class FastDayEvent extends HolidayEvent {\n /** original event */\n readonly linkedEvent: HolidayEvent;\n /** this will be a \"Fast begins\" event */\n readonly startEvent?: TimedEvent;\n /** this will be a \"Fast ends\" event */\n readonly endEvent?: TimedEvent;\n constructor(\n linkedEvent: HolidayEvent,\n startEvent?: TimedEvent,\n endEvent?: TimedEvent\n ) {\n super(linkedEvent.getDate(), linkedEvent.getDesc(), linkedEvent.getFlags());\n this.linkedEvent = linkedEvent;\n this.startEvent = startEvent;\n this.endEvent = endEvent;\n }\n render(locale?: string): string {\n return this.linkedEvent.render(locale);\n }\n renderBrief(locale?: string): string {\n return this.linkedEvent.renderBrief(locale);\n }\n urlDateSuffix(): string {\n return this.linkedEvent.urlDateSuffix();\n }\n url(): string | undefined {\n return this.linkedEvent.url();\n }\n getEmoji(): string {\n return this.linkedEvent.getEmoji();\n }\n getCategories(): string[] {\n return this.linkedEvent.getCategories();\n }\n}\n\n/**\n * Makes a pair of events representing fast start and end times\n * @private\n */\nexport function makeFastStartEnd(\n ev: HolidayEvent,\n options: CalOptions\n): FastDayEvent {\n const desc = ev.getDesc();\n if (desc === 'Yom Kippur') {\n throw new RangeError('YK does not require this function');\n }\n const hd = ev.getDate();\n const dt = hd.greg();\n const location = options.location as Location;\n const fastEndDeg = options.fastEndDeg;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, dt, useElevation);\n let startEvent;\n let endEvent;\n if (desc === \"Erev Tish'a B'Av\") {\n const sunset = zmanim.sunset();\n if (!isNaN(sunset.getTime())) {\n startEvent = makeTimedEvent(ev, sunset, FAST_BEGINS, options);\n }\n } else if (desc.startsWith(\"Tish'a B'Av\")) {\n const tzeit = zmanim.tzeit(fastEndDeg);\n if (!isNaN(tzeit.getTime())) {\n endEvent = makeTimedEvent(ev, tzeit, FAST_ENDS, options);\n }\n } else {\n const dawn = zmanim.alotHaShachar();\n if (!isNaN(dawn.getTime())) {\n startEvent = makeTimedEvent(ev, dawn, FAST_BEGINS, options);\n }\n if (\n dt.getDay() !== 5 &&\n !(hd.getDate() === 14 && hd.getMonth() === months.NISAN)\n ) {\n const tzeit = zmanim.tzeit(fastEndDeg);\n if (!isNaN(tzeit.getTime())) {\n endEvent = makeTimedEvent(ev, tzeit, FAST_ENDS, options);\n }\n }\n }\n const ev2 = new FastDayEvent(ev, startEvent, endEvent);\n // copy properties such as memo or emoji\n Object.assign(ev2, ev);\n return ev2;\n}\n\n/**\n * @private\n */\nfunction makeTimedEvent(\n ev: Event,\n time: Date,\n desc: string,\n options: CalOptions\n): TimedEvent {\n const location = options.location as Location;\n const hd = ev.getDate();\n return new TimedEvent(hd, desc, ev.getFlags(), time, location, ev, options);\n}\n\nexport class TimedChanukahEvent extends ChanukahEvent {\n eventTime: Date;\n eventTimeStr: string;\n readonly location: Location;\n constructor(\n date: HDate,\n desc: string,\n mask: number,\n eventTime: Date,\n location: Location\n ) {\n super(date, desc, mask);\n this.eventTime = Zmanim.roundTime(eventTime);\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n this.location = location;\n }\n}\n\n/**\n * Makes a candle-lighting event for Chankah (not on Friday/Saturday).\n * At one point this used civil dusk (6 degrees below horizon).\n * Another source suggests 4.6667 degrees below horizon.\n * @private\n */\nexport function makeWeekdayChanukahCandleLighting(\n ev: HolidayEvent,\n hd: HDate,\n options: CalOptions\n): TimedChanukahEvent | null {\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd.greg(), useElevation);\n const candleLightingTime = zmanim.beinHaShmashos();\n if (isNaN(candleLightingTime.getTime())) {\n return null;\n }\n const ev2 = new TimedChanukahEvent(\n hd,\n ev.getDesc(),\n ev.getFlags(),\n candleLightingTime,\n location\n );\n ev2.emoji = ev.emoji;\n ev2.chanukahDay = ev.chanukahDay;\n return ev2;\n}\n","/* eslint-disable camelcase */\nimport {Event, flags} from './event';\nimport {CalOptions} from './CalOptions';\nimport {HDate, Locale, molad, Molad as MoladBase} from '@hebcal/hdate';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst shortDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nconst heDayNames = [\n 'רִאשׁוֹן',\n 'שֵׁנִי',\n 'שְׁלִישִׁי',\n 'רְבִיעִי',\n 'חֲמִישִׁי',\n 'שִׁישִּׁי',\n 'שַׁבָּת',\n];\nconst frDayNames = ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'];\nconst night = 'בַּלַּ֥יְלָה';\n\nfunction getHebrewTimeOfDay(hour: number): string {\n if (hour < 5) return night;\n else if (hour < 12) return 'בַּבֹּקֶר';\n else if (hour < 17) return 'בַּצׇּהֳרַיִים';\n else if (hour < 21) return 'בָּעֶרֶב';\n return night;\n}\n\n/**\n * Represents a molad, the moment when the new moon is \"born\"\n */\nexport class Molad {\n private readonly m: MoladBase;\n /**\n * Calculates the molad for a Hebrew month\n * @param year\n * @param month\n */\n constructor(year: number, month: number) {\n this.m = molad(year, month);\n }\n /**\n */\n getYear(): number {\n return this.m.year;\n }\n /**\n */\n getMonth(): number {\n return this.m.month;\n }\n /**\n */\n getMonthName(): string {\n return HDate.getMonthName(this.m.month, this.m.year);\n }\n /**\n * @returns Day of Week (0=Sunday, 6=Saturday)\n */\n getDow(): number {\n return this.m.dayOfWeek;\n }\n /**\n * @returns hour of day (0-23)\n */\n getHour(): number {\n return this.m.hour;\n }\n /**\n * @returns minutes past hour (0-59)\n */\n getMinutes(): number {\n return this.m.minutes;\n }\n /**\n * @returns parts of a minute (0-17)\n */\n getChalakim(): number {\n return this.m.chalakim;\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale)\n * @param options\n */\n render(locale?: string, options?: CalOptions): string {\n locale = locale ?? Locale.getLocaleName();\n if (typeof locale === 'string') {\n locale = locale.toLowerCase();\n }\n const isHebrewLocale =\n locale === 'he' || locale === 'he-x-nonikud' || locale === 'h';\n const isFrenchLocale = locale === 'fr';\n const monthName = Locale.gettext(this.getMonthName(), locale);\n const dayNames = isHebrewLocale ? heDayNames : (isFrenchLocale ? frDayNames : shortDayNames);\n const dow = dayNames[this.getDow()];\n const minutes = this.getMinutes();\n const hour = this.getHour();\n const chalakim = this.getChalakim();\n const moladStr = Locale.gettext('Molad', locale);\n const minutesStr = Locale.lookupTranslation('min', locale) ?? 'minutes';\n const chalakimStr = Locale.gettext('chalakim', locale);\n const and = Locale.gettext('and', locale);\n const after = Locale.gettext('after', locale);\n if (isHebrewLocale) {\n const ampm = getHebrewTimeOfDay(hour);\n const result =\n `${moladStr} ${monthName} יִהְיֶה בַּיּוֹם ${dow} בשָׁבוּעַ, ` +\n `בְּשָׁעָה ${hour} ${ampm}, ` +\n `ו-${minutes} ${minutesStr} ` +\n `ו-${chalakim} ${chalakimStr}`;\n if (locale === 'he-x-nonikud') {\n return Locale.hebrewStripNikkud(result);\n }\n return result;\n }\n const fmtTime = reformatTimeStr(`${hour}:00`, 'pm', options);\n const month = monthName.replace(/'/g, '’');\n return `${moladStr} ${month}: ${dow}, ${minutes} ${minutesStr} ${and} ${chalakim} ${chalakimStr} ${after} ${fmtTime}`;\n }\n}\n\n/** Represents a Molad announcement on Shabbat Mevarchim */\nexport class MoladEvent extends Event {\n readonly molad: Molad;\n private readonly options: CalOptions;\n /**\n * @param date Hebrew date event occurs\n * @param hyear molad year\n * @param hmonth molad month\n * @param options\n */\n constructor(date: HDate, hyear: number, hmonth: number, options: CalOptions) {\n const m = new Molad(hyear, hmonth);\n const monthName = m.getMonthName();\n super(date, `Molad ${monthName} ${hyear}`, flags.MOLAD);\n this.molad = m;\n this.options = options;\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n return this.molad.render(locale, this.options);\n }\n}\n","import {HDate, Locale, gematriya} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Language for counting the Omer can be English or Hebrew.\n * Lang for the Sefira can be English, Hebrew, or Hebrew in Sephardic transliteration.\n */\ntype OmerLang = 'en' | 'he' | 'translit';\n\nconst sefirot = {\n en: {\n infix: 'within ',\n infix26: 'within ',\n words: [\n '',\n 'Lovingkindness',\n 'Might',\n 'Beauty',\n 'Eternity',\n 'Splendor',\n 'Foundation',\n 'Majesty',\n ],\n },\n he: {\n infix: 'שֶׁבְּ',\n infix26: 'שֶׁבִּ',\n words: [\n '',\n 'חֶֽסֶד',\n 'גְבוּרָה',\n 'תִּפְאֶֽרֶת',\n 'נֶּֽצַח',\n 'הוֹד',\n 'יְּסוֹד',\n 'מַּלְכוּת',\n ],\n },\n translit: {\n infix: \"sheb'\",\n infix26: 'shebi',\n words: [\n '',\n 'Chesed',\n 'Gevurah',\n 'Tiferet',\n 'Netzach',\n 'Hod',\n 'Yesod',\n 'Malkhut',\n ],\n },\n} as const;\n\nfunction checkDay(omerDay: number): void {\n if (omerDay < 1 || omerDay > 49) {\n throw new RangeError(`Invalid Omer day ${omerDay}`);\n }\n}\n\nfunction getWeeks(omerDay: number): number[] {\n const weekNum: number = Math.floor((omerDay - 1) / 7) + 1;\n const daysWithinWeeks: number = omerDay % 7 || 7;\n return [weekNum, daysWithinWeeks];\n}\n\nfunction omerTodayIsEn(omerDay: number): string {\n const [weekNumber, daysWithinWeeks]: number[] = getWeeks(omerDay);\n\n const totalDaysStr: string = omerDay === 1 ? 'day' : 'days';\n let str = `Today is ${omerDay} ${totalDaysStr}`;\n\n if (weekNumber > 1 || omerDay === 7) {\n const day7: boolean = daysWithinWeeks === 7;\n const numWeeks: number = day7 ? weekNumber : weekNumber - 1;\n const weeksStr: string = numWeeks === 1 ? 'week' : 'weeks';\n str += `, which is ${numWeeks} ${weeksStr}`;\n if (!day7) {\n const daysStr: string = daysWithinWeeks === 1 ? 'day' : 'days';\n str += ` and ${daysWithinWeeks} ${daysStr}`;\n }\n }\n return str + ' of the Omer';\n}\n\n// adapted from pip hdate package (GPL)\n// https://github.com/py-libhdate/py-libhdate/blob/master/hdate/date.py\n\nconst tens = ['', 'עֲשָׂרָה', 'עֶשְׂרִים', 'שְׁלוֹשִׁים', 'אַרְבָּעִים'];\nconst ones = [\n '',\n 'אֶחָד',\n 'שְׁנַיִם',\n 'שְׁלוֹשָׁה',\n 'אַרְבָּעָה',\n 'חֲמִשָּׁה',\n 'שִׁשָּׁה',\n 'שִׁבְעָה',\n 'שְׁמוֹנָה',\n 'תִּשְׁעָה',\n];\n\nconst shnei = 'שְׁנֵי';\nconst yamim = 'יָמִים';\nconst shneiYamim = shnei + ' ' + yamim;\nconst shavuot = 'שָׁבוּעוֹת';\nconst yom = 'יוֹם';\nconst yomEchad = yom + ' ' + ones[1];\nconst asar = 'עָשָׂר';\n\nfunction omerTodayIsHe(omerDay: number): string {\n const ten: number = Math.floor(omerDay / 10);\n const one: number = omerDay % 10;\n let str = 'הַיּוֹם ';\n if (omerDay === 11) {\n str += 'אַחַד ' + asar;\n } else if (omerDay === 12) {\n str += 'שְׁנֵים ' + asar;\n } else if (12 < omerDay && omerDay < 20) {\n str += ones[one] + ' ' + asar;\n } else if (omerDay > 9) {\n str += ones[one];\n if (one) {\n str += ' ';\n str += ten === 3 ? 'וּ' : 'וְ';\n }\n }\n if (omerDay > 2) {\n if (omerDay > 20 || omerDay === 10 || omerDay === 20) {\n str += tens[ten];\n }\n if (omerDay < 11) {\n str += ones[one] + ' ' + yamim + ' ';\n } else {\n str += ' ' + yom + ' ';\n }\n } else if (omerDay === 1) {\n str += yomEchad + ' ';\n } else {\n // omer == 2\n str += shneiYamim + ' ';\n }\n if (omerDay > 6) {\n str = str.trim(); // remove trailing space before comma\n str += ', שְׁהֵם ';\n const weeks: number = Math.floor(omerDay / 7);\n const days: number = omerDay % 7;\n if (weeks > 2) {\n str += ones[weeks] + ' ' + shavuot + ' ';\n } else if (weeks === 1) {\n str += 'שָׁבֽוּעַ' + ' ' + ones[1] + ' ';\n } else {\n // weeks == 2\n str += shnei + ' ' + shavuot + ' ';\n }\n if (days) {\n if (days === 2 || days === 3) {\n str += 'וּ';\n } else if (days === 5) {\n str += 'וַ';\n } else {\n str += 'וְ';\n }\n if (days > 2) {\n str += ones[days] + ' ' + yamim + ' ';\n } else if (days === 1) {\n str += yomEchad + ' ';\n } else {\n // days == 2\n str += shneiYamim + ' ';\n }\n }\n }\n str += 'לָעֽוֹמֶר';\n return str.normalize();\n}\n\n/** Represents a day 1-49 of counting the Omer from Pesach to Shavuot */\nexport class OmerEvent extends Event {\n private readonly weekNumber: number;\n private readonly daysWithinWeeks: number;\n readonly omer: number;\n emoji?: string;\n\n /**\n * @param date\n * @param omerDay\n */\n constructor(date: HDate, omerDay: number) {\n super(date, `Omer ${omerDay}`, flags.OMER_COUNT);\n checkDay(omerDay);\n this.weekNumber = Math.floor((omerDay - 1) / 7) + 1;\n this.daysWithinWeeks = omerDay % 7 || 7;\n this.omer = omerDay;\n }\n\n /**\n * Returns the sefira. For example, on day 8:\n * * חֶֽסֶד שֶׁבִּגְבוּרָה\n * * Chesed shebiGevurah\n * * Lovingkindness within Might\n * @param lang `en` (English), `he` (Hebrew with nikud), or `translit` (Hebrew in Sephardic transliteration)\n * @returns a string such as `Lovingkindness within Might` or `חֶֽסֶד שֶׁבִּגְבוּרָה`\n */\n sefira(lang = 'en'): string {\n if (lang !== 'he' && lang !== 'translit') {\n lang = 'en';\n }\n const [weekNum, daysWithinWeeks]: number[] = getWeeks(this.omer);\n const config = sefirot[lang as OmerLang];\n const week = config.words[weekNum];\n const dayWithinWeek = config.words[daysWithinWeeks];\n const infix =\n weekNum === 2 || weekNum === 6 ? config.infix26 : config.infix;\n return (dayWithinWeek + ' ' + infix + week).normalize();\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n locale = locale ?? Locale.getLocaleName();\n if (typeof locale === 'string') {\n locale = locale.toLowerCase();\n }\n const isHebrewLocale =\n locale === 'he' || locale === 'he-x-nonikud' || locale === 'h';\n const omer = this.omer;\n const nth = isHebrewLocale ? gematriya(omer) : Locale.ordinal(omer, locale);\n return nth + ' ' + Locale.gettext('day of the Omer', locale);\n }\n /**\n * Returns translation of \"Omer day 22\" without ordinal numbers.\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n return (\n Locale.gettext('Omer', locale) +\n ' ' +\n Locale.gettext('day', locale) +\n ' ' +\n this.omer\n );\n }\n /**\n * Returns an emoji number symbol with a circle, for example `㊲`\n * from the “Enclosed CJK Letters and Months” block of the Unicode standard\n * @param omerDay the day of the omer, 1-49 inclusive\n * @returns a single Unicode character from `①` through `㊾`\n */\n getEmoji(): string {\n if (typeof this.emoji === 'string') return this.emoji;\n let codePoint: number;\n const omerDay = this.omer;\n if (omerDay <= 20) {\n codePoint = 9312 + omerDay - 1;\n } else if (omerDay <= 35) {\n // between 21 and 35 inclusive\n codePoint = 12881 + omerDay - 21;\n } else {\n // between 36 and 49 inclusive\n codePoint = 12977 + omerDay - 36;\n }\n return String.fromCodePoint(codePoint);\n }\n\n getWeeks(): number {\n const day7 = this.daysWithinWeeks === 7;\n return day7 ? this.weekNumber : this.weekNumber - 1;\n }\n\n getDaysWithinWeeks(): number {\n return this.daysWithinWeeks;\n }\n /**\n * Returns a sentence with that evening's omer count\n * @returns a string such as `Today is 10 days, which is 1 week and 3 days of the Omer`\n * or `הַיוֹם עֲשָׂרָה יָמִים, שְׁהֵם שָׁבוּעַ אֶחָד וְשְׁלוֹשָׁה יָמִים לָעוֹמֶר`\n */\n getTodayIs(locale: string): string {\n locale = locale ?? Locale.getLocaleName();\n if (typeof locale === 'string') {\n locale = locale.toLowerCase();\n }\n const isHebrew = locale === 'he' || locale === 'he-x-nonikud';\n const str = isHebrew ? omerTodayIsHe(this.omer) : omerTodayIsEn(this.omer);\n if (locale === 'he-x-nonikud') {\n return Locale.hebrewStripNikkud(str);\n }\n return str;\n }\n\n url(): string {\n return `https://www.hebcal.com/omer/${this.getDate().getFullYear()}/${this.omer}`;\n }\n}\n","import {Locale} from './locale';\n\n/** @private */\nexport function renderParshaName(parsha: string[], locale?: string): string {\n const locale0 = locale ?? Locale.getLocaleName();\n let name = Locale.gettext(parsha[0], locale0);\n if (parsha.length === 2) {\n const hyphen = locale0 === 'he' ? '־' : '-';\n name += hyphen + Locale.gettext(parsha[1], locale0);\n }\n name = name.replace(/'/g, '’');\n const str = Locale.gettext('Parashat', locale) + ' ' + name;\n return str.normalize();\n}\n","export default class QuickLRU extends Map {\n\tconstructor(options = {}) {\n\t\tsuper();\n\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tif (typeof options.maxAge === 'number' && options.maxAge === 0) {\n\t\t\tthrow new TypeError('`maxAge` must be a number greater than 0');\n\t\t}\n\n\t\t// TODO: Use private class fields when ESLint supports them.\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.maxAge = options.maxAge || Number.POSITIVE_INFINITY;\n\t\tthis.onEviction = options.onEviction;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t// TODO: Use private class methods when targeting Node.js 16.\n\t_emitEvictions(cache) {\n\t\tif (typeof this.onEviction !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const [key, item] of cache) {\n\t\t\tthis.onEviction(key, item.value);\n\t\t}\n\t}\n\n\t_deleteIfExpired(key, item) {\n\t\tif (typeof item.expiry === 'number' && item.expiry <= Date.now()) {\n\t\t\tif (typeof this.onEviction === 'function') {\n\t\t\t\tthis.onEviction(key, item.value);\n\t\t\t}\n\n\t\t\treturn this.delete(key);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t_getOrDeleteIfExpired(key, item) {\n\t\tconst deleted = this._deleteIfExpired(key, item);\n\t\tif (deleted === false) {\n\t\t\treturn item.value;\n\t\t}\n\t}\n\n\t_getItemValue(key, item) {\n\t\treturn item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value;\n\t}\n\n\t_peek(key, cache) {\n\t\tconst item = cache.get(key);\n\n\t\treturn this._getItemValue(key, item);\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\t\t\tthis._emitEvictions(this.oldCache);\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\t_moveToRecent(key, item) {\n\t\tthis.oldCache.delete(key);\n\t\tthis._set(key, item);\n\t}\n\n\t* _entriesAscending() {\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield item;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\tconst item = this.cache.get(key);\n\n\t\t\treturn this._getItemValue(key, item);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst item = this.oldCache.get(key);\n\t\t\tif (this._deleteIfExpired(key, item) === false) {\n\t\t\t\tthis._moveToRecent(key, item);\n\t\t\t\treturn item.value;\n\t\t\t}\n\t\t}\n\t}\n\n\tset(key, value, {maxAge = this.maxAge} = {}) {\n\t\tconst expiry =\n\t\t\ttypeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY ?\n\t\t\t\tDate.now() + maxAge :\n\t\t\t\tundefined;\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, {\n\t\t\t\tvalue,\n\t\t\t\texpiry\n\t\t\t});\n\t\t} else {\n\t\t\tthis._set(key, {value, expiry});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn !this._deleteIfExpired(key, this.cache.get(key));\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn !this._deleteIfExpired(key, this.oldCache.get(key));\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this._peek(key, this.cache);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this._peek(key, this.oldCache);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\tresize(newSize) {\n\t\tif (!(newSize && newSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tconst items = [...this._entriesAscending()];\n\t\tconst removeCount = items.length - newSize;\n\t\tif (removeCount < 0) {\n\t\t\tthis.cache = new Map(items);\n\t\t\tthis.oldCache = new Map();\n\t\t\tthis._size = items.length;\n\t\t} else {\n\t\t\tif (removeCount > 0) {\n\t\t\t\tthis._emitEvictions(items.slice(0, removeCount));\n\t\t\t}\n\n\t\t\tthis.oldCache = new Map(items.slice(removeCount));\n\t\t\tthis.cache = new Map();\n\t\t\tthis._size = 0;\n\t\t}\n\n\t\tthis.maxSize = newSize;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesDescending() {\n\t\tlet items = [...this.cache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\titems = [...this.oldCache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesAscending() {\n\t\tfor (const [key, value] of this._entriesAscending()) {\n\t\t\tyield [key, value.value];\n\t\t}\n\t}\n\n\tget size() {\n\t\tif (!this._size) {\n\t\t\treturn this.oldCache.size;\n\t\t}\n\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this._size + oldCacheSize, this.maxSize);\n\t}\n\n\tentries() {\n\t\treturn this.entriesAscending();\n\t}\n\n\tforEach(callbackFunction, thisArgument = this) {\n\t\tfor (const [key, value] of this.entriesAscending()) {\n\t\t\tcallbackFunction.call(thisArgument, value, key, this);\n\t\t}\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn JSON.stringify([...this.entriesAscending()]);\n\t}\n}\n","/*\n Hebcal - A Jewish Calendar Generator\n Copyright (c) 1994-2020 Danny Sadinoff\n Portions copyright Eyal Schachter and Michael J. Radwin\n\n https://github.com/hebcal/hebcal-es6\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU General Public License\n as published by the Free Software Foundation; either version 2\n of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*\n * Many of the following algorithms were taken from hebrew calendar\n * routines by Maimonedes, from his Mishneh Torah, and implemented by\n * Nachum Dershowitz Department of Computer Science\n * (217) 333-4219 University of Illinois at Urbana-Champaign\n * nachum@cs.uiuedu 1304 West Springfield Avenue\n * Urbana, Illinois 61801\n *\n * The routines were included in the emacs 19 distribution.\n *\n */\nimport {HDate, months} from '@hebcal/hdate';\nimport {renderParshaName} from './parshaName';\nimport QuickLRU from 'quick-lru';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst INCOMPLETE = 0;\nconst REGULAR = 1;\nconst COMPLETE = 2;\n\nfunction yearType(hyear: number): number {\n const longC = HDate.longCheshvan(hyear);\n const shortK = HDate.shortKislev(hyear);\n if (longC && !shortK) {\n return COMPLETE;\n } else if (!longC && shortK) {\n return INCOMPLETE;\n } else {\n return REGULAR;\n }\n}\n\n/** The result from `Sedra.lookup()` */\nexport type SedraResult = {\n /**\n * Name of the parsha (or parshiyot) read on\n * Hebrew date, e.g. `['Noach']` or `['Matot', 'Masei']`\n */\n parsha: string[];\n /**\n * True if this is a regular parasha HaShavua\n * Torah reading, false if it's a special holiday reading\n */\n chag: boolean;\n /**\n * The parsha number (or numbers) using 1-indexing.\n * A `number` for a regular (single) parsha, and a `number[]`\n * for a doubled parsha.\n * For Parashat *Bereshit*, `num` would be equal to `1`, and for\n * *Matot-Masei* it would be `[42, 43]`\n */\n num?: number | number[];\n /** The date of the Shabbat this parsha is read */\n hdate: HDate;\n};\n\n/**\n * Represents Parashah HaShavua for an entire Hebrew year\n */\nexport class Sedra {\n private readonly year: number;\n private readonly il: boolean;\n private readonly firstSaturday: number;\n private readonly theSedraArray: readonly NumberOrString[];\n /**\n * Caculates the Parashah HaShavua for an entire Hebrew year\n * @param hyear - Hebrew year (e.g. 5749)\n * @param il - Use Israel sedra schedule (false for Diaspora)\n */\n constructor(hyear: number, il: boolean) {\n hyear = +hyear;\n this.year = hyear;\n\n const rh0 = new HDate(1, months.TISHREI, hyear);\n const rh = rh0.abs();\n const rhDay = rh0.getDay() + 1;\n\n // find the first Saturday on or after Rosh Hashana\n this.firstSaturday = HDate.dayOnOrBefore(6, rh + 6);\n const leap = +HDate.isLeapYear(hyear);\n this.il = Boolean(il);\n\n const type = yearType(hyear);\n let key = `${leap}${rhDay}${type}`;\n if (types[key]) {\n this.theSedraArray = types[key];\n } else {\n key = key + +this.il; // cast to num, then concat\n this.theSedraArray = types[key];\n }\n\n if (!this.theSedraArray) {\n throw new Error(\n `improper sedra year type ${key} calculated for ${hyear}`\n );\n }\n }\n\n /**\n * Returns the parsha (or parshiyot) read on Hebrew date\n * @deprecated Use {@link lookup} instead\n * @param hd Hebrew date or R.D. days\n */\n get(hd: HDate | number): string[] {\n return this.lookup(hd).parsha;\n }\n\n /**\n * Looks up parsha for the date, then returns a translated or transliterated string\n * @deprecated Use {@link lookup} instead\n * @param hd Hebrew date or R.D. days\n * @param [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale\n */\n getString(hd: HDate | number, locale?: string): string {\n const parsha = this.get(hd);\n return renderParshaName(parsha, locale);\n }\n\n /**\n * Checks to see if this day would be a regular parasha HaShavua\n * Torah reading or special holiday reading\n * @deprecated Use {@link lookup} instead\n * @param hd Hebrew date or R.D. days\n */\n isParsha(hd: HDate | number): boolean {\n return !this.lookup(hd).chag;\n }\n\n /**\n * Returns the date that a parsha occurs\n * or `null` if the parsha doesn't occur this year\n * @param parsha if a `string`, specified with Sephardic transliterations\n * like `'Noach'` or `'Matot-Masei'`. If an array, must be a 1- or 2-element\n * array such as `['Noach']` or `['Matot', 'Masei']`. If a `number`, should\n * be a 0-based parsha index (`0` for Bereshit, `1` for Noach) or a negative\n * number for a doubled parsha (e.g. `-21` for Vayakhel-Pekudei)\n */\n find(parsha: number | string | string[]): HDate | null {\n if (typeof parsha === 'number') {\n if (parsha >= parshiot.length || (parsha < 0 && !isValidDouble(parsha))) {\n throw new RangeError(`Invalid parsha number: ${parsha}`);\n }\n return this.findInternal(parsha);\n } else if (typeof parsha === 'string') {\n const num = parsha2id.get(parsha);\n if (typeof num === 'number') {\n return this.find(num);\n } else if (parsha.indexOf('-') !== -1) {\n if (parsha === CHMPESACH || parsha === CHMSUKOT) {\n return this.findInternal(parsha);\n }\n return this.find(parsha.split('-'));\n } else {\n // try to find Saturday holiday like 'Yom Kippur'\n return this.findInternal(parsha);\n }\n } else if (Array.isArray(parsha)) {\n const plen = parsha.length;\n if ((plen !== 1 && plen !== 2) || typeof parsha[0] !== 'string') {\n throw new TypeError(\n `Invalid parsha argument: ${JSON.stringify(parsha)}`\n );\n }\n if (plen === 1) {\n return this.find(parsha[0]);\n }\n const p1 = parsha[0];\n const p2 = parsha[1];\n const num1 = parsha2id.get(p1);\n const num2 = parsha2id.get(p2);\n if (\n typeof num1 !== 'number' ||\n typeof num2 !== 'number' ||\n num2 !== num1 + 1 ||\n !isValidDouble(-num1)\n ) {\n throw new RangeError(`Unrecognized parsha name: ${p1}-${p2}`);\n }\n return this.find(-num1);\n }\n return null; /* NOTREACHED */\n }\n\n private findInternal(parsha: NumberOrString): HDate | null {\n const idx = this.theSedraArray.indexOf(parsha);\n if (idx === -1) {\n return null; // doesn't occur this year\n }\n return new HDate(this.firstSaturday + idx * 7);\n }\n\n /**\n * Returns the date that a parsha (or its doubled or undoubled counterpart)\n * occurs, or `null` if the parsha doesn't occur this year\n */\n findContaining(parsha: number | string): HDate | null {\n const hdate = this.find(parsha);\n if (hdate) {\n return hdate;\n }\n if (typeof parsha === 'number') {\n // a valid negative number (double parsha in a year where they are\n // combined) would've been found above, and a invalid negative number\n // would've thrown an error, so this parsha must be a positive number\n // representing either p1 or p2\n const p1 = -parsha;\n if (isValidDouble(p1)) {\n return this.find(p1);\n } else {\n // this must be the second individual parsha of a doubled pair\n // for example 29 for Kedoshim, so check for -28 for Achrei Mot-Kedoshim\n return this.find(p1 + 1);\n }\n } else {\n const num = parsha2id.get(parsha);\n if (num) {\n // parsha is either the first or second individual parsha of\n // a pair that is doubled this year\n const p1 = -num;\n if (isValidDouble(p1)) {\n return this.find(p1);\n } else {\n return this.find(p1 + 1);\n }\n } else {\n // this was indeed a doubled parsha, so return date of the first half\n const [p1] = parsha.split('-');\n return this.find(p1);\n }\n }\n }\n\n /**\n * Returns the underlying annual sedra schedule.\n * Used by `@hebcal/triennial`\n */\n getSedraArray(): readonly NumberOrString[] {\n return this.theSedraArray;\n }\n\n /**\n * R.D. date of the first Saturday on or after Rosh Hashana\n */\n getFirstSaturday(): number {\n return this.firstSaturday;\n }\n\n getYear(): number {\n return this.year;\n }\n\n /**\n * Returns an object describing the parsha on the first Saturday on or after `hd`\n * @param hd Hebrew date or R.D. days\n */\n lookup(hd: HDate | number): SedraResult {\n const abs =\n typeof hd === 'number' ? hd : HDate.isHDate(hd) ? hd.abs() : NaN;\n\n if (isNaN(abs)) {\n throw new TypeError(`Bad date argument: ${hd}`);\n }\n\n // find the first saturday on or after today's date\n const saturday = HDate.dayOnOrBefore(6, abs + 6);\n\n const weekNum = (saturday - this.firstSaturday) / 7;\n const index = this.theSedraArray[weekNum];\n\n if (typeof index === 'undefined') {\n const sedra = getSedra(this.year + 1, this.il);\n return sedra.lookup(saturday); // must be next year\n }\n const hdate = new HDate(saturday);\n if (typeof index === 'string') {\n // Shabbat has a chag. Return a description\n return {parsha: [index], chag: true, hdate};\n }\n if (index >= 0) {\n return {parsha: [parshiot[index]], chag: false, num: index + 1, hdate};\n }\n\n const p1 = D(index); // undouble the parsha\n return {\n parsha: [parshiot[p1], parshiot[p1 + 1]],\n chag: false,\n num: [p1 + 1, p1 + 2],\n hdate,\n };\n }\n}\n\n/**\n * The 54 parshiyot of the Torah as transilterated strings.\n * parshiot[0] == 'Bereshit', parshiot[1] == 'Noach', parshiot[52] == \"Ha'azinu\".\n * @readonly\n * @type {string[]}\n */\nexport const parshiot: readonly string[] = [\n 'Bereshit',\n 'Noach',\n 'Lech-Lecha',\n 'Vayera',\n 'Chayei Sara',\n 'Toldot',\n 'Vayetzei',\n 'Vayishlach',\n 'Vayeshev',\n 'Miketz',\n 'Vayigash',\n 'Vayechi',\n 'Shemot',\n 'Vaera',\n 'Bo',\n 'Beshalach',\n 'Yitro',\n 'Mishpatim',\n 'Terumah',\n 'Tetzaveh',\n 'Ki Tisa',\n 'Vayakhel',\n 'Pekudei',\n 'Vayikra',\n 'Tzav',\n 'Shmini',\n 'Tazria',\n 'Metzora',\n 'Achrei Mot',\n 'Kedoshim',\n 'Emor',\n 'Behar',\n 'Bechukotai',\n 'Bamidbar',\n 'Nasso',\n \"Beha'alotcha\",\n \"Sh'lach\",\n 'Korach',\n 'Chukat',\n 'Balak',\n 'Pinchas',\n 'Matot',\n 'Masei',\n 'Devarim',\n 'Vaetchanan',\n 'Eikev',\n \"Re'eh\",\n 'Shoftim',\n 'Ki Teitzei',\n 'Ki Tavo',\n 'Nitzavim',\n 'Vayeilech',\n \"Ha'azinu\",\n] as const;\n\n// 0-based parsha IDs\nconst parsha2id = new Map<string, number>();\nfor (let id = 0; id < parshiot.length; id++) {\n const name = parshiot[id];\n parsha2id.set(name, id);\n}\n\n// 0-based parsha IDs\nconst doubles = [\n 21, // Vayakhel-Pekudei\n 26, // Tazria-Metzora\n 28, // Achrei Mot-Kedoshim\n 31, // Behar-Bechukotai\n 38, // Chukat-Balak\n 41, // Matot-Masei\n 50, // Nitzavim-Vayeilech\n];\n\n/**\n * @private\n * @param id a negative number\n */\nfunction isValidDouble(id: number): boolean {\n return doubles.includes(-id);\n}\n\n/**\n * parsha doubler/undoubler\n * @private\n * @param p\n */\nfunction D(p: number): number {\n return -p;\n}\n\nconst RH = 'Rosh Hashana'; // 0\nconst YK = 'Yom Kippur'; // 1\n\nconst SUKKOT = 'Sukkot'; // 0\nconst CHMSUKOT = 'Sukkot Shabbat Chol ha-Moed'; // 0\nconst SHMINI = 'Shmini Atzeret'; // 0\n\nconst PESACH = 'Pesach'; // 25\nconst PESACH1 = 'Pesach I';\nconst CHMPESACH = 'Pesach Shabbat Chol ha-Moed'; // 25\nconst PESACH7 = 'Pesach VII'; // 25\nconst PESACH8 = 'Pesach VIII';\nconst SHAVUOT = 'Shavuot'; // 33\n\n/**\n * Returns an array from start to end\n * @private\n * @param start beginning number, inclusive\n * @param stop ending number, inclusive\n */\nfunction range(start: number, stop: number): readonly number[] {\n return Array.from({length: stop - start + 1}, (v, k) => k + start);\n}\n\ntype NumberOrString = number | string;\n\nconst yearStartVayeilech: readonly NumberOrString[] = [51, 52, CHMSUKOT];\nconst yearStartHaazinu: readonly NumberOrString[] = [52, YK, CHMSUKOT];\nconst yearStartRH: readonly NumberOrString[] = [RH, 52, SUKKOT, SHMINI];\nconst r020 = range(0, 20);\nconst r027 = range(0, 27);\nconst r3340 = range(33, 40);\nconst r4349 = range(43, 49);\nconst r4350 = range(43, 50);\n\n/**\n * The ordinary year types (keviot)\n * names are leap/nonleap - day - incomplete/regular/complete - diaspora/Israel\n * @private\n * @readonly\n */\nconst types: Record<string, readonly NumberOrString[]> = {\n /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n * Kislev each have 29 days), and has Passover start on Tuesday. */\n // e.g. 5753\n '020': yearStartVayeilech.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\n // e.g. 5756\n '0220': yearStartVayeilech.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n 33,\n SHAVUOT,\n range(34, 37),\n D(38),\n 40,\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n // e.g. 5701\n '0510': yearStartHaazinu.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH1,\n PESACH8,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n // e.g. 5745\n '0511': yearStartHaazinu.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH,\n 25,\n D(26),\n D(28),\n range(30, 40),\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Sunday. */\n // e.g. 5754\n '052': yearStartHaazinu.concat(\n range(0, 24),\n PESACH7,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev\n * each have 29 days), and has Passover start on Sunday. */\n // e.g. 5761\n '070': yearStartRH.concat(\n r020,\n D(21),\n 23,\n 24,\n PESACH7,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Tuesday. */\n // e.g. 5716\n '072': yearStartRH.concat(\n r020,\n D(21),\n 23,\n 24,\n CHMPESACH,\n 25,\n D(26),\n D(28),\n 30,\n D(31),\n r3340,\n D(41),\n r4349,\n D(50)\n ),\n\n /* -- The leap year types (keviot) -- */\n /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n * Kislev each have 29 days), and has Passover start on Thursday. */\n // e.g. 5746\n '1200': yearStartVayeilech.concat(\n r027,\n CHMPESACH,\n range(28, 33),\n SHAVUOT,\n range(34, 37),\n D(38),\n 40,\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n * Kislev each have 29 days), and has Passover start on Thursday. */\n // e.g. 5746\n '1201': yearStartVayeilech.concat(\n r027,\n CHMPESACH,\n range(28, 40),\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Saturday. */\n // e.g.5752\n '1220': yearStartVayeilech.concat(\n r027,\n PESACH1,\n PESACH8,\n range(28, 40),\n D(41),\n r4350\n ),\n\n /* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Saturday. */\n // e.g.5752\n '1221': yearStartVayeilech.concat(r027, PESACH, range(28, 50)),\n\n /* Hebrew year that starts on Thursday, is `incomplete' (Heshvan and\n * Kislev both have 29 days), and has Passover start on Sunday. */\n // e.g. 5768\n '150': yearStartHaazinu.concat(range(0, 28), PESACH7, range(29, 50)),\n\n /* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n * Kislev both have 30 days), and has Passover start on Tuesday. */\n // eg. 5771\n '152': yearStartHaazinu.concat(range(0, 28), CHMPESACH, range(29, 49), D(50)),\n\n /* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and\n * Kislev each have 29 days), and has Passover start on Tuesday. */\n // e.g.5757\n '170': yearStartRH.concat(\n r027,\n CHMPESACH,\n range(28, 40),\n D(41),\n r4349,\n D(50)\n ),\n\n /* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\n '1720': yearStartRH.concat(\n r027,\n CHMPESACH,\n range(28, 33),\n SHAVUOT,\n range(34, 37),\n D(38),\n 40,\n D(41),\n r4349,\n D(50)\n ),\n} as const;\n\n/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['0221'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\n// e.g. 5715\ntypes['0310'] = types['0220'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\ntypes['0311'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n// e.g. 5715\ntypes['1310'] = types['1220'];\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\ntypes['1311'] = types['1221'];\n\n/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['1721'] = types['170'];\n\nconst sedraCache = new QuickLRU<string, Sedra>({maxSize: 400});\n\n/**\n * Convenience function to create an instance of `Sedra` or reuse a previously\n * created and cached instance.\n * @param hyear\n * @param il\n */\nexport function getSedra(hyear: number, il: boolean): Sedra {\n const cacheKey = `${hyear}-${il ? 1 : 0}`;\n let sedra = sedraCache.get(cacheKey);\n if (!sedra) {\n sedra = new Sedra(hyear, il);\n sedraCache.set(cacheKey, sedra);\n }\n return sedra;\n}\n","import {Event, flags} from './event';\nimport {HDate, isoDateString} from '@hebcal/hdate';\nimport {renderParshaName} from './parshaName';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Represents one of 54 weekly Torah portions, always on a Saturday\n */\nexport class ParshaEvent extends Event {\n readonly parsha: string[];\n readonly il: boolean;\n readonly num: number | number[];\n /**\n * @param parsha - untranslated name of single or double parsha,\n * such as ['Bereshit'] or ['Achrei Mot', 'Kedoshim']\n */\n constructor(\n date: HDate,\n parsha: string[],\n il = false,\n num: number | number[] = -1\n ) {\n if (!Array.isArray(parsha) || parsha.length === 0 || parsha.length > 2) {\n throw new TypeError('Bad parsha argument');\n }\n const desc = 'Parashat ' + parsha.join('-');\n super(date, desc, flags.PARSHA_HASHAVUA);\n this.parsha = parsha;\n this.il = Boolean(il);\n this.num = num || -1;\n }\n /**\n * @param [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.\n */\n render(locale?: string): string {\n return renderParshaName(this.parsha, locale);\n }\n\n basename(): string {\n return this.parsha.join('-');\n }\n\n url(): string | undefined {\n const year = this.getDate().greg().getFullYear();\n if (year < 100) {\n return undefined;\n }\n const dt = this.urlDateSuffix();\n const url =\n 'https://www.hebcal.com/sedrot/' +\n this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\n '-' +\n dt;\n return this.il ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.getDate().greg());\n return isoDate.replace(/-/g, '');\n }\n}\n","import {HDate, months} from '@hebcal/hdate';\nimport {Event} from './event';\nimport {ParshaEvent} from './ParshaEvent';\nimport {getSedra} from './sedra';\n\n/**\n * Calculates weekly Torah Reading on Saturdays for entire year\n * @param year Hebrew year\n * @param il Israel (false for Diaspora)\n * @returns an array of `ParshaEvent` occurring on Saturdays that contain a regular\n * (non-holiday) Parashat HaShavua\n */\nexport function parshaYear(year: number, il: boolean): Event[] {\n const sedra = getSedra(year, il);\n const startAbs = sedra.getFirstSaturday();\n const endAbs = HDate.hebrew2abs(year, months.ELUL, 29);\n const events: Event[] = [];\n for (let absDt = startAbs; absDt <= endAbs; absDt += 7) {\n const parsha = sedra.lookup(absDt);\n if (!parsha.chag) {\n const ev = new ParshaEvent(parsha.hdate, parsha.parsha, il, parsha.num);\n events.push(ev);\n }\n }\n return events;\n}\n","import {HDate, months} from '@hebcal/hdate';\n\nconst SUN = 0;\nconst TUE = 2;\nconst FRI = 5;\nconst SAT = 6;\n\nconst NISAN = months.NISAN;\nconst IYYAR = months.IYYAR;\n\n/**\n * Yom HaShoah first observed in 1951.\n * When the actual date of Yom Hashoah falls on a Friday, the\n * state of Israel observes Yom Hashoah on the preceding\n * Thursday. When it falls on a Sunday, Yom Hashoah is observed\n * on the following Monday.\n * http://www.ushmm.org/remembrance/dor/calendar/\n * @private\n * @param year\n */\nexport function dateYomHaShoah(year: number): HDate | null {\n if (year < 5711) {\n return null;\n }\n let nisan27dt = new HDate(27, NISAN, year);\n if (nisan27dt.getDay() === FRI) {\n nisan27dt = new HDate(26, NISAN, year);\n } else if (nisan27dt.getDay() === SUN) {\n nisan27dt = new HDate(28, NISAN, year);\n }\n return nisan27dt;\n}\n\n/**\n * Yom HaAtzma'ut only celebrated after 1948\n * @private\n * @param year\n */\nexport function dateYomHaZikaron(year: number): HDate | null {\n if (year < 5708) {\n return null;\n }\n let day;\n const pesach = new HDate(15, NISAN, year);\n const pdow = pesach.getDay();\n if (pdow === SUN) {\n day = 2;\n } else if (pdow === SAT) {\n day = 3;\n } else if (year < 5764) {\n day = 4;\n } else if (pdow === TUE) {\n day = 5;\n } else {\n day = 4;\n }\n return new HDate(day, IYYAR, year);\n}\n","import {HDate, Locale} from '@hebcal/hdate';\nimport {flags} from './event';\nimport {HolidayEvent} from './HolidayEvent';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst ykk = 'Yom Kippur Katan';\n\n/** YKK is minor day of atonement on the day preceeding each Rosh Chodesh */\nexport class YomKippurKatanEvent extends HolidayEvent {\n private readonly nextMonthName: string;\n /**\n * @private\n * @param date Hebrew date event occurs\n * @param nextMonthName name of the upcoming month\n */\n constructor(date: HDate, nextMonthName: string) {\n super(\n date,\n `${ykk} ${nextMonthName}`,\n flags.MINOR_FAST | flags.YOM_KIPPUR_KATAN\n );\n this.nextMonthName = nextMonthName;\n this.memo = `Minor Day of Atonement on the day preceeding Rosh Chodesh ${nextMonthName}`;\n }\n\n basename(): string {\n return this.getDesc();\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n const monthName0 = Locale.gettext(this.nextMonthName, locale);\n const monthName = monthName0.replace(/'/g, '’');\n return Locale.gettext(ykk, locale) + ' ' + monthName;\n }\n /**\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n return Locale.gettext(ykk, locale);\n }\n\n url(): string | undefined {\n return undefined;\n }\n}\n","/*\n Hebcal - A Jewish Calendar Generator\n Copyright (c) 1994-2020 Danny Sadinoff\n Portions copyright Eyal Schachter and Michael J. Radwin\n\n https://github.com/hebcal/hebcal-es6\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU General Public License\n as published by the Free Software Foundation; either version 2\n of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {HDate, months} from '@hebcal/hdate';\nimport QuickLRU from 'quick-lru';\nimport {Event, flags} from './event';\nimport {dateYomHaShoah, dateYomHaZikaron} from './modern';\nimport {getSedra} from './sedra';\nimport {\n staticHolidays,\n staticModernHolidays,\n holidayDesc as hdesc,\n} from './staticHolidays';\nimport {YomKippurKatanEvent} from './YomKippurKatanEvent';\nimport {\n HolidayEvent,\n ChanukahEvent,\n AsaraBTevetEvent,\n RoshHashanaEvent,\n RoshChodeshEvent,\n} from './HolidayEvent';\n\n/** @private */\nfunction observedInIsrael(ev: Event): boolean {\n return ev.observedInIsrael();\n}\n\n/** @private */\nfunction observedInDiaspora(ev: Event): boolean {\n return ev.observedInDiaspora();\n}\n\n/** @private */\nfunction holidayFilter(il: boolean) {\n return il ? observedInIsrael : observedInDiaspora;\n}\n\n/**\n * Returns an array of Events on this date (or `undefined` if no events)\n * @param date Hebrew Date, Gregorian date, or absolute R.D. day number\n * @param [il] use the Israeli schedule for holidays\n */\nexport function getHolidaysOnDate(\n date: HDate | Date | number,\n il?: boolean\n): HolidayEvent[] | undefined {\n const hd = HDate.isHDate(date) ? (date as HDate) : new HDate(date);\n const hdStr = hd.toString();\n const yearMap = getHolidaysForYear_(hd.getFullYear());\n const events = yearMap.get(hdStr);\n // if il isn't a boolean return both diaspora + IL for day\n if (typeof il === 'undefined' || typeof events === 'undefined') {\n return events;\n }\n const filtered = events.filter(holidayFilter(il));\n return filtered;\n}\n\nconst CHAG = flags.CHAG;\nconst IL_ONLY = flags.IL_ONLY;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\nconst CHANUKAH_CANDLES = flags.CHANUKAH_CANDLES;\nconst MINOR_FAST = flags.MINOR_FAST;\nconst SPECIAL_SHABBAT = flags.SPECIAL_SHABBAT;\nconst MODERN_HOLIDAY = flags.MODERN_HOLIDAY;\nconst MAJOR_FAST = flags.MAJOR_FAST;\nconst MINOR_HOLIDAY = flags.MINOR_HOLIDAY;\nconst EREV = flags.EREV;\n\nconst SUN = 0;\nconst TUE = 2;\nconst THU = 4;\nconst FRI = 5;\nconst SAT = 6;\n\nconst NISAN = months.NISAN;\nconst TAMUZ = months.TAMUZ;\nconst AV = months.AV;\nconst TISHREI = months.TISHREI;\nconst KISLEV = months.KISLEV;\nconst TEVET = months.TEVET;\nconst ADAR_I = months.ADAR_I;\nconst ADAR_II = months.ADAR_II;\n\nconst emojiIsraelFlag = {emoji: '🇮🇱'} as const;\nconst chanukahEmoji = '🕎';\nexport type HolidayYearMap = Map<string, HolidayEvent[]>;\nconst yearCache = new QuickLRU<number, HolidayYearMap>({maxSize: 400});\n\nconst KEYCAP_DIGITS = [\n '0️⃣',\n '1️⃣',\n '2️⃣',\n '3️⃣',\n '4️⃣',\n '5️⃣',\n '6️⃣',\n '7️⃣',\n '8️⃣',\n '9️⃣',\n] as const;\n\n/**\n * Lower-level holidays interface, which returns a `Map` of `Event`s indexed by\n * `HDate.toString()`. These events must filtered especially for `flags.IL_ONLY`\n * or `flags.CHUL_ONLY` depending on Israel vs. Diaspora holiday scheme.\n * @private\n */\nexport function getHolidaysForYear_(year: number): HolidayYearMap {\n if (typeof year !== 'number') {\n throw new TypeError(`bad Hebrew year: ${year}`);\n } else if (year < 1 || year > 32658) {\n throw new RangeError(`Hebrew year ${year} out of range 1-32658`);\n }\n const cached = yearCache.get(year);\n if (cached) {\n return cached;\n }\n\n const RH = new HDate(1, TISHREI, year);\n const pesach = new HDate(15, NISAN, year);\n\n const map = new Map<string, HolidayEvent[]>();\n function add(...events: HolidayEvent[]) {\n for (const ev of events) {\n const key = ev.date.toString();\n const arr = map.get(key);\n if (typeof arr === 'object') {\n if (arr[0].getFlags() & EREV) {\n arr.unshift(ev);\n } else {\n arr.push(ev);\n }\n } else {\n map.set(key, [ev]);\n }\n }\n }\n\n for (const h of staticHolidays) {\n const hd = new HDate(h.dd, h.mm, year);\n const ev = new HolidayEvent(hd, h.desc, h.flags);\n if (h.emoji) ev.emoji = h.emoji;\n if (h.chmDay) ev.cholHaMoedDay = h.chmDay;\n add(ev);\n }\n\n // standard holidays that don't shift based on year\n add(new RoshHashanaEvent(RH, year, CHAG | LIGHT_CANDLES_TZEIS));\n\n // Variable date holidays\n const tzomGedaliahDay: number = RH.getDay() === THU ? 4 : 3;\n add(\n new HolidayEvent(\n new HDate(tzomGedaliahDay, TISHREI, year),\n hdesc.TZOM_GEDALIAH,\n MINOR_FAST\n )\n );\n // first SAT after RH\n add(\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, 7 + RH.abs())),\n hdesc.SHABBAT_SHUVA,\n SPECIAL_SHABBAT\n )\n );\n const rchTevet = HDate.shortKislev(year)\n ? new HDate(1, TEVET, year)\n : new HDate(30, KISLEV, year);\n add(new HolidayEvent(rchTevet, hdesc.CHAG_HABANOT, MINOR_HOLIDAY));\n // yes, we know Kislev 30-32 are wrong\n // HDate() corrects the month automatically\n for (let candles = 2; candles <= 8; candles++) {\n const hd = new HDate(23 + candles, KISLEV, year);\n add(\n new ChanukahEvent(\n hd,\n `Chanukah: ${candles} Candles`,\n MINOR_HOLIDAY | CHANUKAH_CANDLES,\n {\n chanukahDay: candles - 1,\n emoji: chanukahEmoji + KEYCAP_DIGITS[candles],\n }\n )\n );\n }\n add(\n new ChanukahEvent(\n new HDate(32, KISLEV, year),\n hdesc.CHANUKAH_8TH_DAY,\n MINOR_HOLIDAY,\n {chanukahDay: 8, emoji: chanukahEmoji}\n )\n );\n add(\n new AsaraBTevetEvent(\n new HDate(10, TEVET, year),\n hdesc.ASARA_BTEVET,\n MINOR_FAST\n )\n );\n const pesachAbs = pesach.abs();\n add(\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, pesachAbs - 43)),\n hdesc.SHABBAT_SHEKALIM,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, pesachAbs - 30)),\n hdesc.SHABBAT_ZACHOR,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n new HDate(pesachAbs - (pesach.getDay() === TUE ? 33 : 31)),\n hdesc.TAANIT_ESTHER,\n MINOR_FAST\n )\n );\n const haChodeshAbs = HDate.dayOnOrBefore(SAT, pesachAbs - 14);\n add(\n new HolidayEvent(\n new HDate(haChodeshAbs - 7),\n hdesc.SHABBAT_PARAH,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n new HDate(haChodeshAbs),\n hdesc.SHABBAT_HACHODESH,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, pesachAbs - 1)),\n hdesc.SHABBAT_HAGADOL,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n // if the fast falls on Shabbat, move to Thursday\n pesach.prev().getDay() === SAT\n ? pesach.onOrBefore(THU)\n : new HDate(14, NISAN, year),\n hdesc.TAANIT_BECHOROT,\n MINOR_FAST\n )\n );\n add(\n new HolidayEvent(\n new HDate(\n HDate.dayOnOrBefore(SAT, new HDate(1, TISHREI, year + 1).abs() - 4)\n ),\n hdesc.LEIL_SELICHOT,\n MINOR_HOLIDAY,\n {emoji: '🕍'}\n )\n );\n\n if (pesach.getDay() === SUN) {\n add(\n new HolidayEvent(\n new HDate(16, ADAR_II, year),\n hdesc.PURIM_MESHULASH,\n MINOR_HOLIDAY\n )\n );\n }\n\n if (HDate.isLeapYear(year)) {\n add(\n new HolidayEvent(\n new HDate(14, ADAR_I, year),\n hdesc.PURIM_KATAN,\n MINOR_HOLIDAY,\n {emoji: '🎭️'}\n )\n );\n add(\n new HolidayEvent(\n new HDate(15, ADAR_I, year),\n hdesc.SHUSHAN_PURIM_KATAN,\n MINOR_HOLIDAY,\n {emoji: '🎭️'}\n )\n );\n }\n\n const nisan27dt = dateYomHaShoah(year);\n if (nisan27dt) {\n add(new HolidayEvent(nisan27dt, hdesc.YOM_HASHOAH, MODERN_HOLIDAY));\n }\n\n const yomHaZikaronDt = dateYomHaZikaron(year);\n if (yomHaZikaronDt) {\n add(\n new HolidayEvent(\n yomHaZikaronDt,\n hdesc.YOM_HAZIKARON,\n MODERN_HOLIDAY,\n emojiIsraelFlag\n ),\n new HolidayEvent(\n yomHaZikaronDt.next(),\n hdesc.YOM_HAATZMA_UT,\n MODERN_HOLIDAY,\n emojiIsraelFlag\n )\n );\n }\n\n for (const h of staticModernHolidays) {\n if (year >= h.firstYear) {\n let hd = new HDate(h.dd, h.mm, year);\n const dow = hd.getDay();\n if (h.friSatMovetoThu && (dow === FRI || dow === SAT)) {\n hd = hd.onOrBefore(THU);\n } else if (h.friPostponeToSun && dow === FRI) {\n hd = new HDate(hd.abs() + 2);\n } else if (h.satPostponeToSun && dow === SAT) {\n hd = hd.next();\n }\n const mask = h.chul ? MODERN_HOLIDAY : MODERN_HOLIDAY | IL_ONLY;\n const ev = new HolidayEvent(hd, h.desc, mask);\n if (!h.suppressEmoji) {\n ev.emoji = '🇮🇱';\n }\n add(ev);\n }\n }\n\n let tamuz17 = new HDate(17, TAMUZ, year);\n let tamuz17attrs;\n if (tamuz17.getDay() === SAT) {\n tamuz17 = new HDate(18, TAMUZ, year);\n tamuz17attrs = {observed: true};\n }\n add(new HolidayEvent(tamuz17, hdesc.TZOM_TAMMUZ, MINOR_FAST, tamuz17attrs));\n\n let av9dt = new HDate(9, AV, year);\n let av9title = hdesc.TISHA_BAV;\n let av9attrs;\n if (av9dt.getDay() === SAT) {\n av9dt = av9dt.next();\n av9attrs = {observed: true};\n av9title += ' (observed)';\n }\n const av9abs = av9dt.abs();\n add(\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, av9abs)),\n hdesc.SHABBAT_CHAZON,\n SPECIAL_SHABBAT\n ),\n new HolidayEvent(\n av9dt.prev(),\n hdesc.EREV_TISHA_BAV,\n EREV | MAJOR_FAST,\n av9attrs\n ),\n new HolidayEvent(av9dt, av9title, MAJOR_FAST, av9attrs),\n new HolidayEvent(\n new HDate(HDate.dayOnOrBefore(SAT, av9abs + 7)),\n hdesc.SHABBAT_NACHAMU,\n SPECIAL_SHABBAT\n )\n );\n\n const monthsInYear = HDate.monthsInYear(year);\n for (let month = 1; month <= monthsInYear; month++) {\n const monthName = HDate.getMonthName(month, year);\n if (\n (month === NISAN\n ? HDate.daysInMonth(HDate.monthsInYear(year - 1), year - 1)\n : HDate.daysInMonth(month - 1, year)) === 30\n ) {\n add(new RoshChodeshEvent(new HDate(1, month, year), monthName));\n add(new RoshChodeshEvent(new HDate(30, month - 1, year), monthName));\n } else if (month !== TISHREI) {\n add(new RoshChodeshEvent(new HDate(1, month, year), monthName));\n }\n }\n\n // Begin: Yom Kippur Katan\n // start at Iyyar because one may not fast during Nisan\n for (let month = months.IYYAR; month <= monthsInYear; month++) {\n const nextMonth = month + 1;\n // Yom Kippur Katan is not observed on the day before Rosh Hashanah.\n // Not observed prior to Rosh Chodesh Cheshvan because Yom Kippur has just passed.\n // Not observed before Rosh Chodesh Tevet, because that day is Hanukkah.\n if (\n nextMonth === TISHREI ||\n nextMonth === months.CHESHVAN ||\n nextMonth === TEVET\n ) {\n continue;\n }\n let ykk = new HDate(29, month, year);\n const dow = ykk.getDay();\n if (dow === FRI || dow === SAT) {\n ykk = ykk.onOrBefore(THU);\n }\n\n const nextMonthName = HDate.getMonthName(nextMonth, year);\n const ev = new YomKippurKatanEvent(ykk, nextMonthName);\n add(ev);\n }\n\n const sedra = getSedra(year, false);\n const beshalachHd = sedra.find(15) as HDate;\n add(new HolidayEvent(beshalachHd, hdesc.SHABBAT_SHIRAH, SPECIAL_SHABBAT));\n\n // Birkat Hachamah appears only once every 28 years\n const birkatHaChama = getBirkatHaChama(year);\n if (birkatHaChama) {\n const hd = new HDate(birkatHaChama);\n add(\n new HolidayEvent(hd, hdesc.BIRKAT_HACHAMAH, MINOR_HOLIDAY, {emoji: '☀️'})\n );\n }\n\n yearCache.set(year, map);\n return map;\n}\n\n/**\n * Birkat Hachamah appears only once every 28 years.\n * Although almost always in Nisan, it can occur in Adar II.\n * - 27 Adar II 5461 (Gregorian year 1701)\n * - 29 Adar II 5993 (Gregorian year 2233)\n *\n * Due to drift, this will eventually slip into Iyyar\n * - 2 Iyyar 7141 (Gregorian year 3381)\n * @private\n */\nfunction getBirkatHaChama(year: number): number {\n const leap = HDate.isLeapYear(year);\n const startMonth = leap ? ADAR_II : NISAN;\n const startDay = leap ? 20 : 1;\n const baseRd = HDate.hebrew2abs(year, startMonth, startDay);\n for (let day = 0; day <= 40; day++) {\n const abs = baseRd + day;\n const elapsed = abs + 1373429;\n if (elapsed % 10227 === 172) {\n return abs;\n }\n }\n return 0;\n}\n\n/**\n * Returns an array of holidays for the year\n * @param year Hebrew year\n * @param il use the Israeli schedule for holidays\n */\nexport function getHolidaysForYearArray(\n year: number,\n il: boolean\n): HolidayEvent[] {\n const yearMap = getHolidaysForYear_(year);\n const startAbs = HDate.hebrew2abs(year, TISHREI, 1);\n const endAbs = HDate.hebrew2abs(year + 1, TISHREI, 1) - 1;\n let events: HolidayEvent[] = [];\n const myFilter = il ? observedInIsrael : observedInDiaspora;\n for (let absDt = startAbs; absDt <= endAbs; absDt++) {\n const hd = new HDate(absDt);\n const holidays = yearMap.get(hd.toString());\n if (holidays) {\n const filtered: HolidayEvent[] = holidays.filter(myFilter);\n events = events.concat(filtered);\n }\n }\n return events;\n}\n","import {HDate, Locale, months} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {Molad} from './molad';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst mevarchimChodeshStr = 'Shabbat Mevarchim Chodesh';\n\n/** Represents Mevarchim haChodesh, the announcement of the new month */\nexport class MevarchimChodeshEvent extends Event {\n readonly monthName: string;\n /**\n * Constructs Mevarchim haChodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n * @param [memo]\n * @param locale Optional locale name\n */\n constructor(date: HDate, monthName: string, memo: string, locale?: string) {\n super(date, `${mevarchimChodeshStr} ${monthName}`, flags.SHABBAT_MEVARCHIM);\n this.monthName = Locale.gettext(monthName, locale);\n if (memo) {\n this.memo = memo;\n } else {\n const hyear = date.getFullYear();\n const hmonth = date.getMonth();\n const monNext =\n hmonth === HDate.monthsInYear(hyear) ? months.NISAN : hmonth + 1;\n const molad = new Molad(hyear, monNext);\n this.memo = molad.render('en', {hour12: false});\n }\n }\n\n basename(): string {\n return this.getDesc();\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n render(locale?: string): string {\n const monthName0 = Locale.gettext(this.monthName, locale);\n const monthName = monthName0.replace(/'/g, '’');\n return Locale.gettext(mevarchimChodeshStr, locale) + ' ' + monthName;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to active locale).\n */\n renderBrief(locale?: string): string {\n const str = this.render(locale);\n const space = str.indexOf(' ');\n return str.substring(space + 1);\n }\n}\n","import {HDate} from '@hebcal/hdate';\nimport {Event} from './event';\n\ntype LearningCalendar = {\n fn: Function;\n startDate?: HDate;\n};\nconst cals = new Map<string, LearningCalendar>();\n\n/**\n * Plug-ins for daily learning calendars such as Daf Yomi, Mishna Yomi, Nach Yomi, etc.\n *\n * Learning schedules are provided by the `@hebcal/learning` package.\n */\nexport class DailyLearning {\n /**\n * Register a new learning calendar.\n * @param name case insensitive\n * @param calendar a function that returns an `Event` or `null`\n * @param startDate the first date for which this calendar is valid\n */\n static addCalendar(name: string, calendar: Function, startDate?: HDate) {\n if (typeof calendar !== 'function') {\n throw new TypeError(`Invalid calendar function: ${calendar}`);\n }\n cals.set(name.toLowerCase(), {\n fn: calendar,\n startDate: startDate,\n });\n }\n\n /**\n * Returns an event from daily calendar for a given date. Returns `null` if there\n * is no learning from this calendar on this date.\n * @param name case insensitive\n * @param hd Hebrew Date\n * @param il true for Israel, false for Diaspora\n */\n static lookup(name: string, hd: HDate, il: boolean): Event | null {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.fn(hd, il);\n }\n return null;\n }\n\n static getStartDate(name: string): HDate | undefined {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.startDate;\n }\n return undefined;\n }\n\n /**\n * Tests to see if learning calendar has been registered\n * @param name case insensitive\n */\n static has(name: string): boolean {\n return cals.has(name.toLowerCase());\n }\n\n /** Returns the names of all calendars registered */\n static getCalendars(): string[] {\n return Array.from(cals.keys());\n }\n}\n","import {HDate, months} from '@hebcal/hdate';\nimport {Event, flags} from './event';\n\nconst NONE = 0;\nconst HALF = 1;\nconst WHOLE = 2;\n\n/**\n * @private\n */\nexport function hallel_(events: Event[], hdate: HDate): number {\n const whole = events\n .filter(ev => {\n const desc: string = ev.getDesc();\n const hd: HDate = ev.getDate();\n const month = hd.getMonth();\n const mday = hd.getDate();\n return (\n desc.startsWith('Chanukah') ||\n desc.startsWith('Shavuot') ||\n desc.startsWith('Sukkot') ||\n (month === months.NISAN &&\n (mday === 15 || mday === 16) &&\n ev.getFlags() & flags.CHAG) || // Pesach\n desc === \"Yom HaAtzma'ut\" ||\n desc === 'Yom Yerushalayim'\n );\n })\n .map(ev => {\n return ev.getDate().abs();\n });\n\n const abs = hdate.abs();\n if (whole.includes(abs)) {\n return WHOLE;\n }\n\n const half = events\n .filter(ev => {\n const desc = ev.getDesc();\n return (\n ev.getFlags() & flags.ROSH_CHODESH ||\n (desc.startsWith('Pesach') &&\n desc !== 'Pesach I' &&\n desc !== 'Pesach II')\n );\n })\n .map(ev => {\n return ev.getDate().abs();\n });\n\n if (half.includes(abs)) {\n return HALF;\n }\n\n return NONE;\n}\n","import {HDate, months} from '@hebcal/hdate';\nimport {dateYomHaZikaron} from './modern';\n\nfunction range(start: number, end: number): readonly number[] {\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n}\n\n/**\n * Is *tachanun* said today?\n */\nexport type TachanunResult = {\n /** Tachanun is said at Shacharit */\n shacharit: boolean;\n /** Tachanun is said at Mincha */\n mincha: boolean;\n /** All congregations say Tachanun on the day */\n allCongs: boolean;\n};\n\nconst NONE: TachanunResult = {\n shacharit: false,\n mincha: false,\n allCongs: false,\n} as const;\n\n/**\n * Return details on what Tachanun (or Tzidchatcha on Shabbat) is said on `hdate`.\n *\n * Tachanun is not said on Rosh Chodesh, the month of Nisan, Lag Baomer,\n * Rosh Chodesh Sivan until Isru Chag, Tisha B'av, 15 Av, Erev Rosh Hashanah,\n * Rosh Hashanah, Erev Yom Kippur until after Simchat Torah, Chanukah,\n * Tu B'shvat, Purim and Shushan Purim, and Purim and Shushan Purim Katan.\n *\n * In some congregations Tachanun is not said until from Rosh Chodesh Sivan\n * until 14th Sivan, Sukkot until after Rosh Chodesh Cheshvan, Pesach Sheini,\n * Yom Ha'atzmaut, and Yom Yerushalayim.\n *\n * Tachanun is not said at Mincha on days before it is not said at Shacharit.\n *\n * Tachanun is not said at Shacharit on Shabbat, but is at Mincha, usually.\n */\nexport function tachanun(hdate: HDate, il: boolean): TachanunResult {\n return tachanun0(hdate, il, true);\n}\n\nfunction tachanun0(\n hdate: HDate,\n il: boolean,\n checkNext: boolean\n): TachanunResult {\n const year = hdate.yy;\n const dates = tachanunYear(year, il);\n const abs = hdate.abs();\n if (dates.none.indexOf(abs) > -1) {\n return NONE;\n }\n const dow = hdate.getDay();\n const ret: TachanunResult = {\n shacharit: false,\n mincha: false,\n allCongs: false,\n };\n if (dates.some.indexOf(abs) === -1) {\n ret.allCongs = true;\n }\n if (dow !== 6) {\n ret.shacharit = true;\n }\n const tomorrow = abs + 1;\n if (checkNext && dates.yesPrev.indexOf(tomorrow) === -1) {\n const tmp = tachanun0(new HDate(tomorrow), il, false);\n ret.mincha = tmp.shacharit;\n } else {\n ret.mincha = dow !== 5;\n }\n if (ret.allCongs && !ret.mincha && !ret.shacharit) {\n return NONE;\n }\n return ret;\n}\n\ntype TachanunYear = {\n none: number[];\n some: number[];\n yesPrev: number[];\n};\n\nfunction tachanunYear(year: number, il: boolean): TachanunYear {\n const leap = HDate.isLeapYear(year);\n const monthsInYear = HDate.monthsInYear(year);\n let av9dt = new HDate(9, months.AV, year);\n if (av9dt.getDay() === 6) {\n av9dt = av9dt.next();\n }\n let shushPurim = new HDate(15, months.ADAR_II, year);\n if (shushPurim.getDay() === 6) {\n shushPurim = shushPurim.next();\n }\n const none: readonly HDate[] = [\n new HDate(2, months.TISHREI, year), // Rosh Hashana II\n ].concat(\n // Rosh Chodesh - 1st of every month. Also includes RH day 1 (1 Tishrei)\n range(1, monthsInYear).map(month => new HDate(1, month, year)),\n // Rosh Chodesh - 30th of months that have one\n range(1, monthsInYear)\n .filter(month => HDate.daysInMonth(month, year) === 30)\n .map(month => new HDate(30, month, year)),\n // entire month of Nisan\n range(1, HDate.daysInMonth(months.NISAN, year)).map(\n mday => new HDate(mday, months.NISAN, year)\n ),\n new HDate(18, months.IYYAR, year), // Lag BaOmer\n // Rosh Chodesh Sivan thru Isru Chag\n range(1, 8 - (il ? 1 : 0)).map(mday => new HDate(mday, months.SIVAN, year)),\n av9dt, // Tisha B'Av\n new HDate(15, months.AV, year), // Tu B'Av\n new HDate(29, months.ELUL, year), // Erev Rosh Hashanah\n // Erev Yom Kippur thru Isru Chag\n range(9, 24 - (il ? 1 : 0)).map(\n mday => new HDate(mday, months.TISHREI, year)\n ),\n // Chanukah\n range(25, 33).map(mday => new HDate(mday, months.KISLEV, year)),\n new HDate(15, months.SHVAT, year), // Tu BiShvat\n new HDate(14, months.ADAR_II, year), // Purim\n shushPurim,\n leap ? new HDate(14, months.ADAR_I, year) : [] // Purim Katan\n );\n const some: readonly HDate[] = [\n new HDate(14, months.IYYAR, year), // Pesach Sheini\n ].concat(\n // Until 14 Sivan\n range(1, 13).map(mday => new HDate(mday, months.SIVAN, year)),\n // Until after Rosh Chodesh Cheshvan\n range(20, 31).map(mday => new HDate(mday, months.TISHREI, year)),\n // Yom HaAtzma'ut, which changes based on day of week\n year >= 5708 ? (dateYomHaZikaron(year) as HDate).next() : [],\n // Yom Yerushalayim\n year >= 5727 ? new HDate(28, months.IYYAR, year) : []\n );\n const yesPrev: readonly HDate[] = [\n new HDate(29, months.ELUL, year - 1), // Erev Rosh Hashanah\n new HDate(9, months.TISHREI, year), // Erev Yom Kippur\n new HDate(14, months.IYYAR, year), // Pesach Sheini\n ];\n return {\n none: none.map(hd => hd.abs()).sort((a, b) => a - b),\n some: some.map(hd => hd.abs()).sort((a, b) => a - b),\n yesPrev: yesPrev.map(hd => hd.abs()).sort((a, b) => a - b),\n };\n}\n","import {greg2abs, isDate, daysInGregMonth, HDate, months} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\n\nconst TISHREI = months.TISHREI;\n\n/**\n * Gets the R.D. days for a number, Date, or HDate\n * @private\n */\nfunction getAbs(d: Date | HDate | number): number {\n if (typeof d === 'number') return d;\n if (isDate(d)) return greg2abs(d as Date);\n if (HDate.isHDate(d)) return (d as HDate).abs();\n throw new TypeError(`Invalid date type: ${d}`);\n}\n\nfunction getYear(options: CalOptions): number {\n if (typeof options.year !== 'undefined') {\n return Number(options.year);\n }\n return options.isHebrewYear\n ? new HDate().getFullYear()\n : new Date().getFullYear();\n}\n\n/**\n * Parse options object to determine start & end days\n * @private\n */\nexport function getStartAndEnd(options: CalOptions): number[] {\n if ((options.start && !options.end) || (options.end && !options.start)) {\n throw new TypeError('Both options.start and options.end are required');\n } else if (options.start && options.end) {\n return [getAbs(options.start), getAbs(options.end)];\n }\n const isHebrewYear = Boolean(options.isHebrewYear);\n const theYear = getYear(options);\n if (isNaN(theYear)) {\n throw new RangeError(`Invalid year ${options.year}`);\n } else if (isHebrewYear && theYear < 1) {\n throw new RangeError(`Invalid Hebrew year ${theYear}`);\n }\n const theMonth = getMonth(options);\n const numYears = Number(options.numYears) || 1;\n if (isHebrewYear) {\n return startEndHebrew(theMonth, theYear, numYears);\n } else {\n return startEndGregorian(theMonth, theYear, numYears);\n }\n}\n\nfunction getMonth(options: CalOptions): number {\n if (options.month) {\n if (options.isHebrewYear) {\n return HDate.monthNum(options.month);\n } else if (typeof options.month === 'number') {\n return options.month;\n }\n }\n return NaN;\n}\n\nfunction startEndGregorian(\n theMonth: number,\n theYear: number,\n numYears: number\n): number[] {\n const gregMonth = theMonth ? theMonth - 1 : 0;\n const startGreg = new Date(theYear, gregMonth, 1);\n if (theYear < 100) {\n startGreg.setFullYear(theYear);\n }\n const startAbs = greg2abs(startGreg);\n let endAbs;\n if (theMonth) {\n endAbs = startAbs + daysInGregMonth(theMonth, theYear) - 1;\n } else {\n const endYear = theYear + numYears;\n const endGreg = new Date(endYear, 0, 1);\n if (endYear < 100) {\n endGreg.setFullYear(endYear);\n }\n endAbs = greg2abs(endGreg) - 1;\n }\n return [startAbs, endAbs];\n}\n\nfunction startEndHebrew(\n theMonth: number,\n theYear: number,\n numYears: number\n): number[] {\n const startDate = new HDate(1, theMonth || TISHREI, theYear);\n let startAbs = startDate.abs();\n const endAbs = theMonth\n ? startAbs + startDate.daysInMonth()\n : new HDate(1, TISHREI, theYear + numYears).abs() - 1;\n // for full Hebrew year, start on Erev Rosh Hashana which\n // is technically in the previous Hebrew year\n // (but conveniently lets us get candle-lighting time for Erev)\n if (!theMonth && theYear > 1) {\n startAbs--;\n }\n return [startAbs, endAbs];\n}\n","import {Locale} from './locale';\nimport {abs2greg, HDate, months} from '@hebcal/hdate';\nimport {CalOptions, DailyLearningValue} from './CalOptions';\nimport {\n makeCandleEvent,\n makeFastStartEnd,\n makeWeekdayChanukahCandleLighting,\n} from './candles';\nimport {Event, flags} from './event';\nimport {getStartAndEnd} from './getStartAndEnd';\nimport {HebrewDateEvent} from './HebrewDateEvent';\nimport {HolidayYearMap, getHolidaysForYear_} from './holidays';\nimport {ParshaEvent} from './ParshaEvent';\nimport {Sedra, getSedra} from './sedra';\nimport {TimedEvent, HavdalahEvent} from './TimedEvent';\nimport {DailyLearning} from './DailyLearning';\nimport {HolidayEvent} from './HolidayEvent';\nimport {MevarchimChodeshEvent} from './MevarchimChodeshEvent';\nimport {MoladEvent, Molad} from './molad';\nimport {OmerEvent} from './omer';\nimport {Zmanim} from './zmanim';\nimport {Location} from './location';\n\n/**\n * Calculates holidays and other Hebrew calendar events based on {@link CalOptions}.\n *\n * Each holiday is represented by an {@link Event} object which includes a date,\n * a description, flags and optional attributes.\n * If given no options, returns holidays for the Diaspora for the current Gregorian year.\n *\n * The date range returned by this function can be controlled by:\n * * `options.year` - Gregorian (e.g. 1993) or Hebrew year (e.g. 5749)\n * * `options.isHebrewYear` - to interpret `year` as Hebrew year\n * * `options.numYears` - generate calendar for multiple years (default 1)\n * * `options.month` - Gregorian or Hebrew month (to filter results to a single month)\n *\n * Alternatively, specify start and end days with `Date` or {@link HDate} instances:\n * * `options.start` - use specific start date (requires `end` date)\n * * `options.end` - use specific end date (requires `start` date)\n *\n * Unless `options.noHolidays == true`, default holidays include:\n * * Major holidays - Rosh Hashana, Yom Kippur, Pesach, Sukkot, etc.\n * * Minor holidays - Purim, Chanukah, Tu BiShvat, Lag BaOmer, etc.\n * * Minor fasts - Ta'anit Esther, Tzom Gedaliah, etc. (unless `options.noMinorFast`)\n * * Special Shabbatot - Shabbat Shekalim, Zachor, etc. (unless `options.noSpecialShabbat`)\n * * Modern Holidays - Yom HaShoah, Yom HaAtzma'ut, etc. (unless `options.noModern`)\n * * Rosh Chodesh (unless `options.noRoshChodesh`)\n *\n * Holiday and Torah reading schedules differ between Israel and the Disapora.\n * Set `options.il=true` to use the Israeli schedule.\n *\n * Additional non-default event types can be specified:\n * * Parashat HaShavua - weekly Torah Reading on Saturdays (`options.sedrot`)\n * * Counting of the Omer (`options.omer`)\n * * Shabbat Mevarchim HaChodesh on Saturday before Rosh Chodesh (`options.shabbatMevarchim`)\n * * Molad announcement on Saturday before Rosh Chodesh (`options.molad`)\n * * Yom Kippur Katan (`options.yomKippurKatan`)\n * * Yizkor (`options.yizkor`)\n *\n * Daily Study of texts are supported by the\n * {@link https://github.com/hebcal/hebcal-learning @hebcal/learning} package,\n * for example:\n * * Babylonian Talmud Daf Yomi (`options.dailyLearning.dafYomi`)\n * * Jerusalem Talmud (Yerushalmi) Yomi (`options.dailyLearning.yerushalmi`)\n * * Mishna Yomi (`options.dailyLearning.mishnaYomi`)\n * * Nach Yomi (`options.dailyLearning.nachYomi`)\n *\n * Candle-lighting and Havdalah times are approximated using latitude and longitude\n * specified by the {@link Location} class. The `Location` class contains a small\n * database of cities with their associated geographic information and time-zone information.\n * If you ever have any doubts about Hebcal's times, consult your local halachic authority.\n * If you enter geographic coordinates above the arctic circle or antarctic circle,\n * the times are guaranteed to be wrong.\n *\n * To add candle-lighting options, set `options.candlelighting=true` and set\n * `options.location` to an instance of `Location`. By default, candle lighting\n * time is 18 minutes before sundown (40 minutes for Jerusalem,\n * 30 minutes for Haifa and Zikhron Ya'akov) and Havdalah is\n * calculated according to Tzeit Hakochavim - Nightfall (the point when 3 small stars\n * are observable in the night time sky with the naked eye). The default Havdalah\n * option (Tzeit Hakochavim) is calculated when the sun is 8.5° below the horizon.\n * These defaults can be changed using these options:\n * * `options.candleLightingMins` - minutes before sundown to light candles\n * * `options.havdalahMins` - minutes after sundown for Havdalah (typical values are 42, 50, or 72).\n * Havdalah times are suppressed when `options.havdalahMins=0`.\n * * `options.havdalahDeg` - degrees for solar depression for Havdalah.\n * Default is 8.5 degrees for 3 small stars. Use 7.083 degrees for 3 medium-sized stars.\n * Havdalah times are suppressed when `options.havdalahDeg=0`.\n *\n * If both `options.candlelighting=true` and `options.location` is specified,\n * Chanukah candle-lighting times and minor fast start/end times will also be generated.\n * Chanukah candle-lighting is at Bein HaShmashos (13.5 minutes before\n * the sun is 7.083° below the horizon in the evening)\n * on weekdays, at regular candle-lighting time on Fridays, and at regular Havdalah time on\n * Saturday night (see above).\n *\n * Minor fasts begin at Alot HaShachar (sun is 16.1° below the horizon in the morning) and\n * end when 3 medium-sized stars are observable in the night sky (sun is 7.083° below the horizon\n * in the evening).\n *\n * Two options also exist for generating an Event with the Hebrew date:\n * * `options.addHebrewDates` - print the Hebrew date for the entire date range\n * * `options.addHebrewDatesForEvents` - print the Hebrew date for dates with some events\n *\n * Lastly, translation and transliteration of event titles is controlled by\n * `options.locale` and the {@link Locale} API.\n * `@hebcal/core` supports three locales by default:\n * * `en` - default, Sephardic transliterations (e.g. \"Shabbat\")\n * * `ashkenazi` - Ashkenazi transliterations (e.g. \"Shabbos\")\n * * `he` - Hebrew (e.g. \"שַׁבָּת\")\n *\n * Additional locales (such as `ru` or `fr`) are supported by the\n * {@link https://github.com/hebcal/hebcal-locales @hebcal/locales} package\n *\n * @example\n * import {HebrewCalendar, HDate, Location, Event} from '@hebcal/core';\n * const options: CalOptions = {\n * year: 1981,\n * isHebrewYear: false,\n * candlelighting: true,\n * location: Location.lookup('San Francisco'),\n * sedrot: true,\n * omer: true,\n * };\n * const events = HebrewCalendar.calendar(options);\n * for (const ev of events) {\n * const hd = ev.getDate();\n * const date = hd.greg();\n * console.log(date.toLocaleDateString(), ev.render('en'), hd.toString());\n * }\n */\nexport function calendar(options: CalOptions = {}): Event[] {\n options = {...options}; // so we can modify freely\n checkCandleOptions(options);\n const location = (options.location = options.location || defaultLocation);\n const il = (options.il = options.il || location.getIsrael() || false);\n const hasUserMask = typeof options.mask === 'number';\n options.mask = getMaskFromOptions(options);\n if (options.ashkenazi || options.locale) {\n if (options.locale && typeof options.locale !== 'string') {\n throw new TypeError(`Invalid options.locale: ${options.locale}`);\n }\n const locale = options.ashkenazi ? 'ashkenazi' : (options.locale as string);\n const translationObj = Locale.useLocale(locale);\n if (!translationObj) {\n throw new TypeError(\n `Locale '${locale}' not found; did you forget to import @hebcal/locales?`\n );\n }\n } else {\n Locale.useLocale('en');\n }\n\n const evts: Event[] = [];\n let sedra: Sedra | undefined;\n let holidaysYear: HolidayYearMap | undefined;\n let beginOmer = -1;\n let endOmer = -1;\n let currentYear = -1;\n const startAndEnd = getStartAndEnd(options);\n warnUnrecognizedOptions(options);\n const startAbs = startAndEnd[0];\n const endAbs = startAndEnd[1];\n const startGreg = abs2greg(startAbs);\n if (startGreg.getFullYear() < 100) {\n options.candlelighting = false;\n }\n for (let abs = startAbs; abs <= endAbs; abs++) {\n const hd = new HDate(abs);\n const hyear = hd.getFullYear();\n if (hyear !== currentYear) {\n currentYear = hyear;\n holidaysYear = getHolidaysForYear_(currentYear);\n if (options.sedrot) {\n sedra = getSedra(currentYear, il);\n }\n if (options.omer) {\n beginOmer = HDate.hebrew2abs(currentYear, NISAN, 16);\n endOmer = HDate.hebrew2abs(currentYear, SIVAN, 5);\n }\n }\n const prevEventsLength = evts.length;\n const dow = hd.getDay();\n const isFriday = dow === FRI;\n const isSaturday = dow === SAT;\n let candlesEv: TimedEvent | undefined;\n const holidays = holidaysYear!.get(hd.toString()) || [];\n for (const ev of holidays) {\n candlesEv = appendHolidayAndRelated(\n candlesEv,\n evts,\n ev,\n options,\n isFriday,\n isSaturday,\n hasUserMask\n );\n }\n if (options.sedrot && isSaturday) {\n const parsha0 = sedra!.lookup(abs);\n if (!parsha0.chag) {\n evts.push(new ParshaEvent(hd, parsha0.parsha, il, parsha0.num));\n }\n }\n if (options.yizkor) {\n const mm = hd.getMonth();\n const dd = hd.getDate();\n if (\n (mm === months.TISHREI && (dd === 10 || dd === 22)) ||\n (mm === NISAN && dd === (il ? 21 : 22)) ||\n (mm === SIVAN && dd === (il ? 6 : 7))\n ) {\n const linkedEvent = holidays.filter(ev => ev.observedIn(il))[0];\n const ev = new Event(hd, 'Yizkor', flags.YIZKOR, {\n emoji: '🕯️',\n linkedEvent,\n });\n evts.push(ev);\n }\n }\n const dailyLearning = options.dailyLearning;\n let numDailyLearning = 0;\n if (typeof dailyLearning === 'object') {\n const events = makeDailyLearning(hd, dailyLearning, il);\n numDailyLearning = events.length;\n if (numDailyLearning) {\n evts.push(...events);\n }\n }\n if (options.omer && abs >= beginOmer && abs <= endOmer) {\n const omer = abs - beginOmer + 1;\n const omerEv = makeOmerEvent(hd, omer, options);\n evts.push(omerEv);\n }\n if (isSaturday && (options.molad || options.shabbatMevarchim)) {\n const events = makeMoladAndMevarchimChodesh(hd, options);\n evts.push(...events);\n }\n if (!candlesEv && options.candlelighting && (isFriday || isSaturday)) {\n candlesEv = makeCandleEvent(undefined, hd, options, isFriday, isSaturday);\n if (isFriday && candlesEv && sedra) {\n const parsha = sedra.lookup(abs);\n const pe = new ParshaEvent(hd.next(), parsha.parsha, il, parsha.num);\n candlesEv.memo = pe.render(options.locale);\n }\n }\n // suppress Havdalah when options.havdalahMins=0 or options.havdalahDeg=0\n if (\n candlesEv instanceof HavdalahEvent &&\n (options.havdalahMins === 0 || options.havdalahDeg === 0)\n ) {\n candlesEv = undefined;\n }\n if (candlesEv) {\n evts.push(candlesEv);\n }\n if (\n options.addHebrewDates ||\n (options.addHebrewDatesForEvents &&\n prevEventsLength !== evts.length - numDailyLearning)\n ) {\n const e2 = new HebrewDateEvent(hd);\n if (prevEventsLength === evts.length) {\n evts.push(e2);\n } else {\n evts.splice(prevEventsLength, 0, e2);\n }\n }\n }\n return evts;\n}\n\nconst FRI = 5;\nconst SAT = 6;\n\nconst NISAN = months.NISAN;\nconst SIVAN = months.SIVAN;\nconst ELUL = months.ELUL;\n\nconst LIGHT_CANDLES = flags.LIGHT_CANDLES;\nconst YOM_TOV_ENDS = flags.YOM_TOV_ENDS;\nconst CHUL_ONLY = flags.CHUL_ONLY;\nconst IL_ONLY = flags.IL_ONLY;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\nconst CHANUKAH_CANDLES = flags.CHANUKAH_CANDLES;\nconst MINOR_FAST = flags.MINOR_FAST;\nconst SPECIAL_SHABBAT = flags.SPECIAL_SHABBAT;\nconst MODERN_HOLIDAY = flags.MODERN_HOLIDAY;\nconst MAJOR_FAST = flags.MAJOR_FAST;\nconst ROSH_CHODESH = flags.ROSH_CHODESH;\nconst PARSHA_HASHAVUA = flags.PARSHA_HASHAVUA;\nconst DAF_YOMI = flags.DAF_YOMI;\nconst MISHNA_YOMI = flags.MISHNA_YOMI;\nconst NACH_YOMI = flags.NACH_YOMI;\nconst YERUSHALMI_YOMI = flags.YERUSHALMI_YOMI;\nconst OMER_COUNT = flags.OMER_COUNT;\nconst SHABBAT_MEVARCHIM = flags.SHABBAT_MEVARCHIM;\nconst MINOR_HOLIDAY = flags.MINOR_HOLIDAY;\nconst EREV = flags.EREV;\nconst CHOL_HAMOED = flags.CHOL_HAMOED;\nconst YOM_KIPPUR_KATAN = flags.YOM_KIPPUR_KATAN;\nconst YIZKOR = flags.YIZKOR;\n\ntype StringIntMap = Record<string, number>;\n\nconst unrecognizedAlreadyWarned = new Set<string>();\nconst RECOGNIZED_OPTIONS: StringIntMap = {\n location: 1,\n year: 1,\n isHebrewYear: 1,\n month: 1,\n numYears: 1,\n start: 1,\n end: 1,\n candlelighting: 1,\n candleLightingMins: 1,\n havdalahMins: 1,\n havdalahDeg: 1,\n fastEndDeg: 1,\n sedrot: 1,\n il: 1,\n noMinorFast: 1,\n noModern: 1,\n shabbatMevarchim: 1,\n noRoshChodesh: 1,\n noSpecialShabbat: 1,\n noHolidays: 1,\n omer: 1,\n molad: 1,\n ashkenazi: 1,\n locale: 1,\n addHebrewDates: 1,\n addHebrewDatesForEvents: 1,\n mask: 1,\n yomKippurKatan: 1,\n hour12: 1,\n dailyLearning: 1,\n useElevation: 1,\n yizkor: 1,\n} as const satisfies Record<keyof CalOptions, 1>;\n\n/**\n * @private\n */\nfunction warnUnrecognizedOptions(options: CalOptions) {\n for (const k of Object.keys(options)) {\n if (\n typeof RECOGNIZED_OPTIONS[k] === 'undefined' &&\n !unrecognizedAlreadyWarned.has(k)\n ) {\n console.warn(`Ignoring unrecognized HebrewCalendar option: ${k}`);\n unrecognizedAlreadyWarned.add(k);\n }\n }\n if (options.dailyLearning) {\n for (const k of Object.keys(options.dailyLearning)) {\n if (!unrecognizedAlreadyWarned.has(k) && !DailyLearning.has(k)) {\n console.warn(`Ignoring unrecognized DailyLearning calendar: ${k}`);\n unrecognizedAlreadyWarned.add(k);\n }\n }\n }\n}\n\nconst israelCityOffset: StringIntMap = {\n Jerusalem: 40,\n Haifa: 30,\n \"Zikhron Ya'aqov\": 30,\n \"Zikhron Ya'akov\": 30,\n 'Zikhron Yaakov': 30,\n \"Zichron Ya'akov\": 30,\n 'Zichron Yaakov': 30,\n} as const;\n\nconst geoIdCandleOffset: StringIntMap = {\n '281184': 40, // Jerusalem\n '294801': 30, // Haifa\n '293067': 30, // Zikhron Yaakov\n} as const;\n\n/**\n * @private\n * @constant\n * This calculation is based on the position of the sun 36 minutes after sunset in Jerusalem\n * around the equinox / equilux, which is 8.5° below geometric zenith.\n * The Ohr Meir considers this the time that 3 small stars are visible,\n * which is later than the required 3 medium stars.\n * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ZmanimCalendar.html#ZENITH_8_POINT_5}\n */\nconst TZEIT_3SMALL_STARS = 8.5;\n\n/**\n * @private\n * @constant\n * This calculation is based on observation of 3 medium sized stars by Dr. Baruch Cohen\n * in his calendar published in in 1899 in Strasbourg, France.\n * This calculates to 7.0833333° below geometric zenith.\n * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#ZENITH_7_POINT_083}\n */\nconst TZEIT_3MEDIUM_STARS = 7.0833333;\n\n/**\n * Modifies options in-place\n * @private\n */\nfunction checkCandleOptions(options: CalOptions) {\n if (!options.candlelighting) {\n return;\n }\n const location = options.location;\n if (typeof location === 'undefined' || !(location instanceof Location)) {\n throw new TypeError(\n 'options.candlelighting requires valid options.location'\n );\n }\n if (\n typeof options.havdalahMins === 'number' &&\n typeof options.havdalahDeg === 'number'\n ) {\n throw new TypeError(\n 'options.havdalahMins and options.havdalahDeg are mutually exclusive'\n );\n }\n\n const min0 = options.candleLightingMins;\n let min = typeof min0 === 'number' && !isNaN(min0) ? Math.trunc(min0) : 18;\n if (location.getIsrael() && Math.abs(min) === 18) {\n min = overrideIsraelCandleMins(location, min);\n }\n options.candleLightingMins = -1 * Math.abs(min);\n\n if (typeof options.havdalahMins === 'number') {\n options.havdalahMins = Math.trunc(Math.abs(options.havdalahMins));\n } else if (typeof options.havdalahDeg === 'number') {\n options.havdalahDeg = Math.abs(options.havdalahDeg);\n } else {\n options.havdalahDeg = TZEIT_3SMALL_STARS;\n }\n if (typeof options.fastEndDeg !== 'number') {\n options.fastEndDeg = TZEIT_3MEDIUM_STARS;\n }\n}\n\nfunction overrideIsraelCandleMins(location: Location, min: number) {\n const geoid = location.getGeoId();\n if (geoid) {\n const offset = geoIdCandleOffset[geoid];\n if (typeof offset === 'number') {\n return offset;\n }\n }\n const shortName = location.getShortName();\n if (shortName) {\n const offset = israelCityOffset[shortName];\n if (typeof offset === 'number') {\n return offset;\n }\n }\n return min;\n}\n\n/**\n * Mask to filter Holiday array\n * @private\n */\nfunction getMaskFromOptions(options: CalOptions): number {\n if (typeof options.mask === 'number') {\n return setOptionsFromMask(options);\n }\n const il = options.il || options.location?.getIsrael() || false;\n let mask = 0;\n\n // default options\n if (!options.noHolidays) {\n mask |=\n ROSH_CHODESH |\n YOM_TOV_ENDS |\n MINOR_FAST |\n SPECIAL_SHABBAT |\n MODERN_HOLIDAY |\n MAJOR_FAST |\n MINOR_HOLIDAY |\n EREV |\n CHOL_HAMOED |\n LIGHT_CANDLES |\n LIGHT_CANDLES_TZEIS |\n CHANUKAH_CANDLES;\n }\n if (options.candlelighting) {\n mask |= LIGHT_CANDLES | LIGHT_CANDLES_TZEIS | YOM_TOV_ENDS;\n }\n // suppression of defaults\n if (options.noRoshChodesh) {\n mask &= ~ROSH_CHODESH;\n }\n if (options.noModern) {\n mask &= ~MODERN_HOLIDAY;\n }\n if (options.noMinorFast) {\n mask &= ~MINOR_FAST;\n }\n if (options.noSpecialShabbat) {\n mask &= ~SPECIAL_SHABBAT;\n mask &= ~SHABBAT_MEVARCHIM;\n }\n if (il) {\n mask |= IL_ONLY;\n } else {\n mask |= CHUL_ONLY;\n }\n // non-default options\n if (options.sedrot) {\n mask |= PARSHA_HASHAVUA;\n }\n if (options.omer) {\n mask |= OMER_COUNT;\n }\n if (options.shabbatMevarchim) {\n mask |= SHABBAT_MEVARCHIM;\n }\n if (options.yomKippurKatan) {\n mask |= YOM_KIPPUR_KATAN;\n }\n if (options.yizkor) {\n mask |= YIZKOR;\n }\n if (options.dailyLearning) {\n const dailyLearning = options.dailyLearning;\n if (dailyLearning.dafYomi) {\n mask |= DAF_YOMI;\n }\n if (dailyLearning.mishnaYomi) {\n mask |= MISHNA_YOMI;\n }\n if (dailyLearning.nachYomi) {\n mask |= NACH_YOMI;\n }\n if (dailyLearning.yerushalmi) {\n mask |= YERUSHALMI_YOMI;\n }\n }\n\n return mask;\n}\n\nconst MASK_LIGHT_CANDLES =\n LIGHT_CANDLES | LIGHT_CANDLES_TZEIS | CHANUKAH_CANDLES | YOM_TOV_ENDS;\n\nconst defaultLocation = new Location(0, 0, false, 'UTC');\n\n/**\n * @private\n */\nfunction setOptionsFromMask(options: CalOptions): number {\n const m = options.mask || 0;\n if (m & ROSH_CHODESH) delete options.noRoshChodesh;\n if (m & MODERN_HOLIDAY) delete options.noModern;\n if (m & MINOR_FAST) delete options.noMinorFast;\n if (m & SPECIAL_SHABBAT) delete options.noSpecialShabbat;\n if (m & PARSHA_HASHAVUA) options.sedrot = true;\n if (m & (DAF_YOMI | MISHNA_YOMI | NACH_YOMI | YERUSHALMI_YOMI)) {\n options.dailyLearning = options.dailyLearning || {};\n if (m & DAF_YOMI) {\n options.dailyLearning.dafYomi = true;\n }\n if (m & MISHNA_YOMI) {\n options.dailyLearning.mishnaYomi = true;\n }\n if (m & NACH_YOMI) {\n options.dailyLearning.nachYomi = true;\n }\n if (m & YERUSHALMI_YOMI) {\n options.dailyLearning.yerushalmi = 1;\n }\n }\n if (m & OMER_COUNT) options.omer = true;\n if (m & SHABBAT_MEVARCHIM) options.shabbatMevarchim = true;\n if (m & YOM_KIPPUR_KATAN) options.yomKippurKatan = true;\n if (m & YIZKOR) options.yizkor = true;\n return m;\n}\n\n/**\n * Appends the Event `ev` to the `events` array. Also may add related\n * timed events like candle-lighting or fast start/end\n * @private\n */\nfunction appendHolidayAndRelated(\n candlesEv: TimedEvent | undefined,\n events: Event[],\n ev: HolidayEvent,\n options: CalOptions,\n isFriday: boolean,\n isSaturday: boolean,\n hasUserMask: boolean\n): TimedEvent | undefined {\n const il = options.il || false;\n if (!ev.observedIn(il)) {\n return candlesEv; // holiday isn't observed here; bail out early\n }\n const eFlags = ev.getFlags();\n if (\n (!options.yomKippurKatan && eFlags & YOM_KIPPUR_KATAN) ||\n (options.noModern && eFlags & MODERN_HOLIDAY)\n ) {\n return candlesEv; // bail out early\n }\n const isMajorFast = Boolean(eFlags & MAJOR_FAST);\n const isMinorFast = Boolean(eFlags & MINOR_FAST);\n let fastEv;\n if (\n options.candlelighting &&\n (isMajorFast || isMinorFast) &&\n ev.getDesc() !== 'Yom Kippur'\n ) {\n ev = fastEv = makeFastStartEnd(ev, options);\n if (\n fastEv.startEvent &&\n (isMajorFast || (isMinorFast && !options.noMinorFast))\n ) {\n events.push(fastEv.startEvent);\n }\n }\n if (eFlags & Number(options.mask) || (!eFlags && !hasUserMask)) {\n if (options.candlelighting && eFlags & MASK_LIGHT_CANDLES) {\n const hd = ev.getDate();\n candlesEv = makeCandleEvent(ev, hd, options, isFriday, isSaturday);\n if (eFlags & CHANUKAH_CANDLES && candlesEv && !options.noHolidays) {\n // Replace Chanukah event with a clone that includes candle lighting time.\n // For clarity, allow a \"duplicate\" candle lighting event to remain for Shabbat\n const chanukahEv = makeWeekdayChanukahCandleLighting(ev, hd, options);\n if (chanukahEv) {\n if (isFriday || isSaturday) {\n chanukahEv.eventTime = candlesEv.eventTime;\n chanukahEv.eventTimeStr = candlesEv.eventTimeStr;\n }\n ev = chanukahEv;\n }\n candlesEv = undefined;\n }\n }\n if (\n !options.noHolidays ||\n (options.yomKippurKatan && eFlags & YOM_KIPPUR_KATAN)\n ) {\n events.push(ev); // the original event itself\n }\n }\n if (\n (isMajorFast || (isMinorFast && !options.noMinorFast)) &&\n fastEv &&\n fastEv.endEvent\n ) {\n events.push(fastEv.endEvent);\n }\n return candlesEv;\n}\n\nfunction makeMoladAndMevarchimChodesh(hd: HDate, options: CalOptions): Event[] {\n const evts: Event[] = [];\n const hmonth = hd.getMonth();\n const hdate = hd.getDate();\n if (hmonth !== ELUL && hdate >= 23 && hdate <= 29) {\n const hyear = hd.getFullYear();\n const monNext = hmonth === HDate.monthsInYear(hyear) ? NISAN : hmonth + 1;\n if (options.molad) {\n evts.push(new MoladEvent(hd, hyear, monNext, options));\n }\n if (options.shabbatMevarchim) {\n const nextMonthName = HDate.getMonthName(monNext, hyear);\n const molad = new Molad(hyear, monNext);\n const memo = molad.render(options.locale || 'en', options);\n evts.push(\n new MevarchimChodeshEvent(hd, nextMonthName, memo, options.locale)\n );\n }\n }\n return evts;\n}\n\nfunction dailyLearningName(key: string, val: DailyLearningValue): string {\n if (key === 'yerushalmi') {\n return val === 2 ? 'yerushalmi-schottenstein' : 'yerushalmi-vilna';\n }\n return key;\n}\n\nfunction makeDailyLearning(\n hd: HDate,\n dailyLearning: Record<string, DailyLearningValue>,\n il: boolean\n): Event[] {\n const evts: Event[] = [];\n for (const [key, val] of Object.entries(dailyLearning)) {\n if (val) {\n const name = dailyLearningName(key, val);\n const learningEv = DailyLearning.lookup(name, hd, il);\n if (learningEv) {\n evts.push(learningEv);\n }\n }\n }\n return evts;\n}\n\nfunction makeOmerEvent(hd: HDate, omerDay: number, options: CalOptions) {\n const omerEv = new OmerEvent(hd, omerDay);\n if (options.candlelighting) {\n const location = options.location!;\n const zmanim = new Zmanim(location, hd.prev(), false);\n const tzeit = zmanim.tzeit(7.0833);\n if (!isNaN(tzeit.getTime())) {\n omerEv.alarm = tzeit;\n }\n }\n return omerEv;\n}\n","/*\n Hebcal - A Jewish Calendar Generator\n Copyright (c) 1994-2020 Danny Sadinoff\n Portions copyright Eyal Schachter and Michael J. Radwin\n\n https://github.com/hebcal/hebcal-es6\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU General Public License\n as published by the Free Software Foundation; either version 2\n of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {getBirthdayHD, getYahrzeitHD, HDate} from '@hebcal/hdate';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\nimport {CalOptions} from './CalOptions';\nimport {version as pkgVersion} from './pkgVersion';\nimport {Event, flags} from './event';\nimport {Sedra, getSedra} from './sedra';\nimport {hallel_} from './hallel';\nimport {\n getHolidaysForYear_,\n getHolidaysForYearArray,\n getHolidaysOnDate,\n HolidayYearMap,\n} from './holidays';\nimport {HolidayEvent} from './HolidayEvent';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport {TachanunResult, tachanun} from './tachanun';\nimport {calendar} from './calendar';\n\n/**\n * HebrewCalendar is the main interface to the `@hebcal/core` library.\n * This namespace is used to calculate holidays, rosh chodesh, candle lighting & havdalah times,\n * Parashat HaShavua, Daf Yomi, days of the omer, and the molad.\n * Event names can be rendered in several languges using the `locale` option.\n */\nexport class HebrewCalendar {\n private constructor() {}\n /**\n * Calculates holidays and other Hebrew calendar events based on {@link CalOptions}.\n *\n * Each holiday is represented by an {@link Event} object which includes a date,\n * a description, flags and optional attributes.\n * If given no options, returns holidays for the Diaspora for the current Gregorian year.\n *\n * The date range returned by this function can be controlled by:\n * * `options.year` - Gregorian (e.g. 1993) or Hebrew year (e.g. 5749)\n * * `options.isHebrewYear` - to interpret `year` as Hebrew year\n * * `options.numYears` - generate calendar for multiple years (default 1)\n * * `options.month` - Gregorian or Hebrew month (to filter results to a single month)\n *\n * Alternatively, specify start and end days with `Date` or {@link HDate} instances:\n * * `options.start` - use specific start date (requires `end` date)\n * * `options.end` - use specific end date (requires `start` date)\n *\n * Unless `options.noHolidays == true`, default holidays include:\n * * Major holidays - Rosh Hashana, Yom Kippur, Pesach, Sukkot, etc.\n * * Minor holidays - Purim, Chanukah, Tu BiShvat, Lag BaOmer, etc.\n * * Minor fasts - Ta'anit Esther, Tzom Gedaliah, etc. (unless `options.noMinorFast`)\n * * Special Shabbatot - Shabbat Shekalim, Zachor, etc. (unless `options.noSpecialShabbat`)\n * * Modern Holidays - Yom HaShoah, Yom HaAtzma'ut, etc. (unless `options.noModern`)\n * * Rosh Chodesh (unless `options.noRoshChodesh`)\n *\n * Holiday and Torah reading schedules differ between Israel and the Disapora.\n * Set `options.il=true` to use the Israeli schedule.\n *\n * Additional non-default event types can be specified:\n * * Parashat HaShavua - weekly Torah Reading on Saturdays (`options.sedrot`)\n * * Counting of the Omer (`options.omer`)\n * * Shabbat Mevarchim HaChodesh on Saturday before Rosh Chodesh (`options.shabbatMevarchim`)\n * * Molad announcement on Saturday before Rosh Chodesh (`options.molad`)\n * * Yom Kippur Katan (`options.yomKippurKatan`)\n * * Yizkor (`options.yizkor`)\n *\n * Daily Study of texts are supported by the\n * {@link https://github.com/hebcal/hebcal-learning @hebcal/learning} package,\n * for example:\n * * Babylonian Talmud Daf Yomi (`options.dailyLearning.dafYomi`)\n * * Jerusalem Talmud (Yerushalmi) Yomi (`options.dailyLearning.yerushalmi`)\n * * Mishna Yomi (`options.dailyLearning.mishnaYomi`)\n * * Nach Yomi (`options.dailyLearning.nachYomi`)\n *\n * Candle-lighting and Havdalah times are approximated using latitude and longitude\n * specified by the {@link Location} class. The `Location` class contains a small\n * database of cities with their associated geographic information and time-zone information.\n * If you ever have any doubts about Hebcal's times, consult your local halachic authority.\n * If you enter geographic coordinates above the arctic circle or antarctic circle,\n * the times are guaranteed to be wrong.\n *\n * To add candle-lighting options, set `options.candlelighting=true` and set\n * `options.location` to an instance of `Location`. By default, candle lighting\n * time is 18 minutes before sundown (40 minutes for Jerusalem,\n * 30 minutes for Haifa and Zikhron Ya'akov) and Havdalah is\n * calculated according to Tzeit Hakochavim - Nightfall (the point when 3 small stars\n * are observable in the night time sky with the naked eye). The default Havdalah\n * option (Tzeit Hakochavim) is calculated when the sun is 8.5° below the horizon.\n * These defaults can be changed using these options:\n * * `options.candleLightingMins` - minutes before sundown to light candles\n * * `options.havdalahMins` - minutes after sundown for Havdalah (typical values are 42, 50, or 72).\n * Havdalah times are suppressed when `options.havdalahMins=0`.\n * * `options.havdalahDeg` - degrees for solar depression for Havdalah.\n * Default is 8.5 degrees for 3 small stars. Use 7.083 degrees for 3 medium-sized stars.\n * Havdalah times are suppressed when `options.havdalahDeg=0`.\n *\n * If both `options.candlelighting=true` and `options.location` is specified,\n * Chanukah candle-lighting times and minor fast start/end times will also be generated.\n * Chanukah candle-lighting is at Bein HaShmashos (13.5 minutes before\n * the sun is 7.083° below the horizon in the evening)\n * on weekdays, at regular candle-lighting time on Fridays, and at regular Havdalah time on\n * Saturday night (see above).\n *\n * Minor fasts begin at Alot HaShachar (sun is 16.1° below the horizon in the morning) and\n * end when 3 medium-sized stars are observable in the night sky (sun is 7.083° below the horizon\n * in the evening).\n *\n * Two options also exist for generating an Event with the Hebrew date:\n * * `options.addHebrewDates` - print the Hebrew date for the entire date range\n * * `options.addHebrewDatesForEvents` - print the Hebrew date for dates with some events\n *\n * Lastly, translation and transliteration of event titles is controlled by\n * `options.locale` and the {@link Locale} API.\n * `@hebcal/core` supports three locales by default:\n * * `en` - default, Sephardic transliterations (e.g. \"Shabbat\")\n * * `ashkenazi` - Ashkenazi transliterations (e.g. \"Shabbos\")\n * * `he` - Hebrew (e.g. \"שַׁבָּת\")\n *\n * Additional locales (such as `ru` or `fr`) are supported by the\n * {@link https://github.com/hebcal/hebcal-locales @hebcal/locales} package\n *\n * @example\n * import {HebrewCalendar, HDate, Location, Event} from '@hebcal/core';\n * const options: CalOptions = {\n * year: 1981,\n * isHebrewYear: false,\n * candlelighting: true,\n * location: Location.lookup('San Francisco'),\n * sedrot: true,\n * omer: true,\n * };\n * const events = HebrewCalendar.calendar(options);\n * for (const ev of events) {\n * const hd = ev.getDate();\n * const date = hd.greg();\n * console.log(date.toLocaleDateString(), ev.render('en'), hd.toString());\n * }\n */\n static calendar(options: CalOptions = {}): Event[] {\n return calendar(options);\n }\n\n /**\n * Calculates a birthday or anniversary (non-yahrzeit).\n * `hyear` must be after original `gdate` of anniversary.\n * Returns `undefined` when requested year preceeds or is same as original year.\n *\n * Hebcal uses the algorithm defined in \"Calendrical Calculations\"\n * by Edward M. Reingold and Nachum Dershowitz.\n *\n * The birthday of someone born in Adar of an ordinary year or Adar II of\n * a leap year is also always in the last month of the year, be that Adar\n * or Adar II. The birthday in an ordinary year of someone born during the\n * first 29 days of Adar I in a leap year is on the corresponding day of Adar;\n * in a leap year, the birthday occurs in Adar I, as expected.\n *\n * Someone born on the thirtieth day of Marcheshvan, Kislev, or Adar I\n * has his birthday postponed until the first of the following month in\n * years where that day does not occur. [Calendrical Calculations p. 111]\n * @example\n * import {HebrewCalendar} from '@hebcal/core';\n * const dt = new Date(2014, 2, 2); // '2014-03-02' == '30 Adar I 5774'\n * const hd = HebrewCalendar.getBirthdayOrAnniversary(5780, dt); // '1 Nisan 5780'\n * console.log(hd.greg().toLocaleDateString('en-US')); // '3/26/2020'\n * @param hyear Hebrew year\n * @param gdate Gregorian or Hebrew date of event\n * @returns anniversary occurring in `hyear`\n */\n static getBirthdayOrAnniversary(\n hyear: number,\n gdate: Date | HDate\n ): HDate | undefined {\n const dt = getBirthdayHD(hyear, gdate);\n if (typeof dt === 'undefined') {\n return dt;\n }\n return new HDate(dt);\n }\n\n /**\n * Calculates yahrzeit.\n * `hyear` must be after original `gdate` of death.\n * Returns `undefined` when requested year preceeds or is same as original year.\n *\n * Hebcal uses the algorithm defined in \"Calendrical Calculations\"\n * by Edward M. Reingold and Nachum Dershowitz.\n *\n * The customary anniversary date of a death is more complicated and depends\n * also on the character of the year in which the first anniversary occurs.\n * There are several cases:\n *\n * * If the date of death is Marcheshvan 30, the anniversary in general depends\n * on the first anniversary; if that first anniversary was not Marcheshvan 30,\n * use the day before Kislev 1.\n * * If the date of death is Kislev 30, the anniversary in general again depends\n * on the first anniversary — if that was not Kislev 30, use the day before\n * Tevet 1.\n * * If the date of death is Adar II, the anniversary is the same day in the\n * last month of the Hebrew year (Adar or Adar II).\n * * If the date of death is Adar I 30, the anniversary in a Hebrew year that\n * is not a leap year (in which Adar only has 29 days) is the last day in\n * Shevat.\n * * In all other cases, use the normal (that is, same month number) anniversary\n * of the date of death. [Calendrical Calculations p. 113]\n * @example\n * import {HebrewCalendar} from '@hebcal/core';\n * const dt = new Date(2014, 2, 2); // '2014-03-02' == '30 Adar I 5774'\n * const hd = HebrewCalendar.getYahrzeit(5780, dt); // '30 Sh\\'vat 5780'\n * console.log(hd.greg().toLocaleDateString('en-US')); // '2/25/2020'\n * @param hyear Hebrew year\n * @param gdate Gregorian or Hebrew date of death\n * @returns anniversary occurring in hyear\n */\n static getYahrzeit(hyear: number, gdate: Date | HDate): HDate | undefined {\n const dt = getYahrzeitHD(hyear, gdate);\n if (typeof dt === 'undefined') {\n return dt;\n }\n return new HDate(dt);\n }\n\n /**\n * Lower-level holidays interface, which returns a `Map` of `Event`s indexed by\n * `HDate.toString()`. These events must filtered especially for `flags.IL_ONLY`\n * or `flags.CHUL_ONLY` depending on Israel vs. Diaspora holiday scheme.\n * @param year Hebrew year\n */\n static getHolidaysForYear(year: number): HolidayYearMap {\n return getHolidaysForYear_(year);\n }\n\n /**\n * Returns an array of holidays for the year\n * @param year Hebrew year\n * @param il use the Israeli schedule for holidays\n */\n static getHolidaysForYearArray(year: number, il: boolean): HolidayEvent[] {\n return getHolidaysForYearArray(year, il);\n }\n\n /**\n * Returns an array of Events on this date (or `undefined` if no events)\n * @param date Hebrew Date, Gregorian date, or absolute R.D. day number\n * @param [il] use the Israeli schedule for holidays\n */\n static getHolidaysOnDate(\n date: HDate | Date | number,\n il?: boolean\n ): HolidayEvent[] | undefined {\n return getHolidaysOnDate(date, il);\n }\n\n /**\n * Eruv Tavshilin\n */\n static eruvTavshilin(date: Date | HDate, il: boolean): boolean {\n if (date.getDay() < 3 || date.getDay() > 4) {\n return false;\n }\n const today = new HDate(date);\n const friday = today.after(5);\n const tomorrow = today.next();\n if (!isChag(friday, il) || isChag(today, il) || !isChag(tomorrow, il)) {\n return false;\n }\n return true;\n }\n\n /**\n * Helper function to format a 23-hour (00:00-23:59) time in US format (\"8:13pm\") or\n * keep as \"20:13\" for any other locale/country. Uses {@link CalOptions} to determine\n * locale.\n * If `options.hour12` is `false`, locale is ignored and always returns 24-hour time.\n * If `options.hour12` is `true`, locale is ignored and always returns 12-hour time.\n * @param timeStr - original time like \"20:30\"\n * @param suffix - \"p\" or \"pm\" or \" P.M.\". Add leading space if you want it\n * @param options\n */\n static reformatTimeStr(\n timeStr: string,\n suffix: string,\n options: CalOptions\n ): string {\n return reformatTimeStr(timeStr, suffix, options);\n }\n\n static version(): string {\n return pkgVersion;\n }\n\n /**\n * Convenience function to create an instance of `Sedra` or reuse a previously\n * created and cached instance.\n */\n static getSedra(hyear: number, il: boolean): Sedra {\n return getSedra(hyear, il);\n }\n\n /**\n * Return a number containing information on what Hallel is said on that day.\n *\n * Whole Hallel is said on Chanukah, the first Yom Tov of Pesach, Shavuot, Sukkot,\n * Yom Ha'atzmaut, and Yom Yerushalayim.\n *\n * Half Hallel is said on Rosh Chodesh (not Rosh Hashanah), and the last 6 days of Pesach.\n *\n * The number is one of the following values:\n *\n * 0 - No Hallel\n * 1 - Half Hallel\n * 2 - Whole Hallel\n */\n static hallel(hdate: HDate, il: boolean): number {\n const events = getHolidaysForYearArray(hdate.getFullYear(), il);\n return hallel_(events, hdate);\n }\n\n /**\n * Return details on what Tachanun (or Tzidchatcha on Shabbat) is said on `hdate`.\n *\n * Tachanun is not said on Rosh Chodesh, the month of Nisan, Lag Baomer,\n * Rosh Chodesh Sivan until Isru Chag, Tisha B'av, 15 Av, Erev Rosh Hashanah,\n * Rosh Hashanah, Erev Yom Kippur until after Simchat Torah, Chanukah,\n * Tu B'shvat, Purim and Shushan Purim, and Purim and Shushan Purim Katan.\n *\n * In some congregations Tachanun is not said until from Rosh Chodesh Sivan\n * until 14th Sivan, Sukkot until after Rosh Chodesh Cheshvan, Pesach Sheini,\n * Yom Ha'atzmaut, and Yom Yerushalayim.\n *\n * Tachanun is not said at Mincha on days before it is not said at Shacharit.\n *\n * Tachanun is not said at Shacharit on Shabbat, but is at Mincha, usually.\n */\n static tachanun(hdate: HDate, il: boolean): TachanunResult {\n return tachanun(hdate, il);\n }\n}\n\n/**\n * @private\n */\nfunction isChag(date: HDate, il: boolean): boolean {\n const events = getHolidaysOnDate(date, il) || [];\n const chag = events.filter(ev => ev.getFlags() & flags.CHAG);\n return chag.length !== 0;\n}\n"],"names":["Locale","HDate","gematriya","months","GeoLocation","isDate","NOAACalculator","getTimezoneOffset","pad2","getPseudoISO","CHAG","LIGHT_CANDLES","YOM_TOV_ENDS","CHUL_ONLY","IL_ONLY","LIGHT_CANDLES_TZEIS","CHANUKAH_CANDLES","MAJOR_FAST","MINOR_HOLIDAY","EREV","CHOL_HAMOED","SHAVUOT","hdesc","isoDateString","molad","hdate","range","SUN","TUE","FRI","SAT","NISAN","MINOR_FAST","SPECIAL_SHABBAT","MODERN_HOLIDAY","TISHREI","NONE","greg2abs","daysInGregMonth","abs2greg","getBirthdayHD","getYahrzeitHD","pkgVersion"],"mappings":";;;;;;;AAAA;AACO,MAAM,OAAO,GAAG;;ACDvB,kBAAe,EAAC,SAAS,EAAC,EAAC,cAAc,EAAC,6BAA6B,EAAC,UAAU,EAAC,iBAAiB,EAAC,EAAC,UAAU,EAAC,EAAC,EAAE,EAAC,EAAC,SAAS,EAAC,CAAC,SAAS,CAAC,EAAC,YAAY,EAAC,CAAC,YAAY,CAAC,EAAC,YAAY,EAAC,CAAC,YAAY,CAAC,EAAC,cAAc,EAAC,CAAC,cAAc,CAAC,EAAC,UAAU,EAAC,CAAC,UAAU,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,cAAc,EAAC,CAAC,cAAc,CAAC,EAAC,aAAa,EAAC,CAAC,aAAa,CAAC,EAAC,SAAS,EAAC,CAAC,SAAS,CAAC,EAAC,YAAY,EAAC,CAAC,YAAY,CAAC,EAAC,SAAS,EAAC,CAAC,SAAS,CAAC,EAAC,OAAO,EAAC,CAAC,OAAO,CAAC,EAAC,aAAa,EAAC,CAAC,aAAa,CAAC,EAAC,gBAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAC,mBAAmB,EAAC,CAAC,mBAAmB,CAAC,EAAC,iBAAiB,EAAC,CAAC,iBAAiB,CAAC,EAAC,iBAAiB,EAAC,CAAC,iBAAiB,CAAC,EAAC,eAAe,EAAC,CAAC,eAAe,CAAC,EAAC,kBAAkB,EAAC,CAAC,kBAAkB,CAAC,EAAC,eAAe,EAAC,CAAC,gBAAgB,CAAC,EAAC,gBAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAC,SAAS,EAAC,CAAC,SAAS,CAAC,EAAC,WAAW,EAAC,CAAC,WAAW,CAAC,EAAC,YAAY,EAAC,CAAC,YAAY,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,gBAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAC,eAAe,EAAC,CAAC,eAAe,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAC,CAAC,UAAU,CAAC,EAAC,WAAW,EAAC,CAAC,WAAW,CAAC,EAAC,mBAAmB,EAAC,CAAC,mBAAmB,CAAC,EAAC,oBAAoB,EAAC,CAAC,oBAAoB,CAAC,EAAC,mBAAmB,EAAC,CAAC,mBAAmB,CAAC,EAAC,kBAAkB,EAAC,CAAC,kBAAkB,CAAC,EAAC,mBAAmB,EAAC,CAAC,mBAAmB,CAAC,EAAC,2BAA2B,EAAC,CAAC,2BAA2B,CAAC,EAAC,kBAAkB,EAAC,CAAC,kBAAkB,CAAC,EAAC,gBAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,YAAY,EAAC,CAAC,YAAY,CAAC,EAAC,OAAO,EAAC,CAAC,OAAO,CAAC,EAAC,kBAAkB,EAAC,CAAC,kBAAkB,CAAC,EAAC,UAAU,EAAC,CAAC,SAAS,CAAC,EAAC,eAAe,EAAC,CAAC,eAAe,CAAC,EAAC,2BAA2B,EAAC,CAAC,2BAA2B,CAAC,EAAC,gBAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAC,eAAe,EAAC,CAAC,eAAe,CAAC,EAAC,gBAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAC,wBAAwB,EAAC,CAAC,uBAAuB,CAAC,EAAC,oBAAoB,EAAC,CAAC,mBAAmB,CAAC,EAAC,8BAA8B,EAAC,CAAC,6BAA6B,CAAC,EAAC,0BAA0B,EAAC,CAAC,yBAAyB,CAAC,EAAC,kBAAkB,EAAC,CAAC,kBAAkB,CAAC,EAAC,eAAe,EAAC,CAAC,SAAS,CAAC,EAAC,kBAAkB,EAAC,CAAC,kBAAkB,CAAC,EAAC,iBAAiB,EAAC,CAAC,iBAAiB,CAAC,EAAC,qBAAqB,EAAC,CAAC,qBAAqB,CAAC,EAAC,EAAC,EAAC;;ACAlhE,WAAe,EAAC,SAAS,EAAC,EAAC,cAAc,EAAC,6BAA6B,EAAC,UAAU,EAAC,OAAO,EAAC,EAAC,UAAU,EAAC,EAAC,EAAE,EAAC,EAAC,SAAS,EAAC,CAAC,SAAS,CAAC,EAAC,UAAU,EAAC,CAAC,YAAY,CAAC,EAAC,UAAU,EAAC,CAAC,WAAW,CAAC,EAAC,YAAY,EAAC,CAAC,cAAc,CAAC,EAAC,OAAO,EAAC,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAC,CAAC,aAAa,CAAC,EAAC,YAAY,EAAC,CAAC,aAAa,CAAC,EAAC,cAAc,EAAC,CAAC,eAAe,CAAC,EAAC,OAAO,EAAC,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAC,CAAC,aAAa,CAAC,EAAC,WAAW,EAAC,CAAC,YAAY,CAAC,EAAC,IAAI,EAAC,CAAC,MAAM,CAAC,EAAC,aAAa,EAAC,CAAC,eAAe,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,SAAS,EAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAC,CAAC,YAAY,CAAC,EAAC,UAAU,EAAC,CAAC,UAAU,CAAC,EAAC,SAAS,EAAC,CAAC,aAAa,CAAC,EAAC,YAAY,EAAC,CAAC,YAAY,CAAC,EAAC,SAAS,EAAC,CAAC,cAAc,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,YAAY,EAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,CAAC,SAAS,CAAC,EAAC,OAAO,EAAC,CAAC,UAAU,CAAC,EAAC,SAAS,EAAC,CAAC,UAAU,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,WAAW,EAAC,CAAC,eAAe,CAAC,EAAC,OAAO,EAAC,CAAC,OAAO,CAAC,EAAC,UAAU,EAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,SAAS,EAAC,CAAC,UAAU,CAAC,EAAC,SAAS,EAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,CAAC,OAAO,CAAC,EAAC,SAAS,EAAC,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAC,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,CAAC,YAAY,CAAC,EAAC,SAAS,EAAC,CAAC,YAAY,CAAC,EAAC,QAAQ,EAAC,CAAC,WAAW,CAAC,EAAC,SAAS,EAAC,CAAC,WAAW,CAAC,EAAC,UAAU,EAAC,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAC,CAAC,YAAY,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,SAAS,CAAC,EAAC,YAAY,EAAC,CAAC,cAAc,CAAC,EAAC,UAAU,EAAC,CAAC,YAAY,CAAC,EAAC,SAAS,EAAC,CAAC,SAAS,CAAC,EAAC,WAAW,EAAC,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAC,CAAC,UAAU,CAAC,EAAC,UAAU,EAAC,CAAC,WAAW,CAAC,EAAC,UAAU,EAAC,CAAC,UAAU,CAAC,EAAC,UAAU,EAAC,CAAC,YAAY,CAAC,EAAC,SAAS,EAAC,CAAC,YAAY,CAAC,EAAC,YAAY,EAAC,CAAC,aAAa,CAAC,EAAC,kBAAkB,EAAC,CAAC,mBAAmB,CAAC,EAAC,OAAO,EAAC,CAAC,SAAS,CAAC,EAAC,eAAe,EAAC,CAAC,mBAAmB,CAAC,EAAC,iBAAiB,EAAC,CAAC,kBAAkB,CAAC,EAAC,UAAU,EAAC,CAAC,WAAW,CAAC,EAAC,oBAAoB,EAAC,CAAC,mBAAmB,CAAC,EAAC,qBAAqB,EAAC,CAAC,sBAAsB,CAAC,EAAC,qBAAqB,EAAC,CAAC,sBAAsB,CAAC,EAAC,qBAAqB,EAAC,CAAC,sBAAsB,CAAC,EAAC,qBAAqB,EAAC,CAAC,sBAAsB,CAAC,EAAC,qBAAqB,EAAC,CAAC,sBAAsB,CAAC,EAAC,qBAAqB,EAAC,CAAC,sBAAsB,CAAC,EAAC,qBAAqB,EAAC,CAAC,sBAAsB,CAAC,EAAC,mBAAmB,EAAC,CAAC,oBAAoB,CAAC,EAAC,kBAAkB,EAAC,CAAC,mBAAmB,CAAC,EAAC,MAAM,EAAC,CAAC,QAAQ,CAAC,EAAC,iBAAiB,EAAC,CAAC,WAAW,CAAC,EAAC,aAAa,EAAC,CAAC,cAAc,CAAC,EAAC,YAAY,EAAC,CAAC,gBAAgB,CAAC,EAAC,mBAAmB,EAAC,CAAC,uBAAuB,CAAC,EAAC,cAAc,EAAC,CAAC,kBAAkB,CAAC,EAAC,oBAAoB,EAAC,CAAC,wBAAwB,CAAC,EAAC,aAAa,EAAC,CAAC,gBAAgB,CAAC,EAAC,kBAAkB,EAAC,CAAC,wBAAwB,CAAC,EAAC,iBAAiB,EAAC,CAAC,qBAAqB,CAAC,EAAC,UAAU,EAAC,CAAC,YAAY,CAAC,EAAC,YAAY,EAAC,CAAC,eAAe,CAAC,EAAC,eAAe,EAAC,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAC,CAAC,WAAW,CAAC,EAAC,WAAW,EAAC,CAAC,WAAW,CAAC,EAAC,mBAAmB,EAAC,CAAC,mBAAmB,CAAC,EAAC,oBAAoB,EAAC,CAAC,mBAAmB,CAAC,EAAC,mBAAmB,EAAC,CAAC,mBAAmB,CAAC,EAAC,cAAc,EAAC,CAAC,YAAY,CAAC,EAAC,kBAAkB,EAAC,CAAC,mBAAmB,CAAC,EAAC,mBAAmB,EAAC,CAAC,mBAAmB,CAAC,EAAC,YAAY,EAAC,CAAC,WAAW,CAAC,EAAC,aAAa,EAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,CAAC,UAAU,CAAC,EAAC,aAAa,EAAC,CAAC,gBAAgB,CAAC,EAAC,iBAAiB,EAAC,CAAC,kBAAkB,CAAC,EAAC,cAAc,EAAC,CAAC,eAAe,CAAC,EAAC,cAAc,EAAC,CAAC,iBAAiB,CAAC,EAAC,gBAAgB,EAAC,CAAC,oBAAoB,CAAC,EAAC,iBAAiB,EAAC,CAAC,oBAAoB,CAAC,EAAC,gBAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAC,mBAAmB,EAAC,CAAC,kBAAkB,CAAC,EAAC,iBAAiB,EAAC,CAAC,mBAAmB,CAAC,EAAC,iBAAiB,EAAC,CAAC,iBAAiB,CAAC,EAAC,eAAe,EAAC,CAAC,cAAc,CAAC,EAAC,kBAAkB,EAAC,CAAC,mBAAmB,CAAC,EAAC,eAAe,EAAC,CAAC,iBAAiB,CAAC,EAAC,gBAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAC,SAAS,EAAC,CAAC,YAAY,CAAC,EAAC,WAAW,EAAC,CAAC,eAAe,CAAC,EAAC,YAAY,EAAC,CAAC,eAAe,CAAC,EAAC,gBAAgB,EAAC,CAAC,mBAAmB,CAAC,EAAC,eAAe,EAAC,CAAC,mBAAmB,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,eAAe,EAAC,CAAC,kBAAkB,CAAC,EAAC,QAAQ,EAAC,CAAC,UAAU,CAAC,EAAC,UAAU,EAAC,CAAC,aAAa,CAAC,EAAC,WAAW,EAAC,CAAC,aAAa,CAAC,EAAC,mBAAmB,EAAC,CAAC,qBAAqB,CAAC,EAAC,oBAAoB,EAAC,CAAC,qBAAqB,CAAC,EAAC,mBAAmB,EAAC,CAAC,qBAAqB,CAAC,EAAC,kBAAkB,EAAC,CAAC,qBAAqB,CAAC,EAAC,mBAAmB,EAAC,CAAC,qBAAqB,CAAC,EAAC,2BAA2B,EAAC,CAAC,kCAAkC,CAAC,EAAC,kBAAkB,EAAC,CAAC,sBAAsB,CAAC,EAAC,gBAAgB,EAAC,CAAC,oBAAoB,CAAC,EAAC,aAAa,EAAC,CAAC,kBAAkB,CAAC,EAAC,SAAS,EAAC,CAAC,YAAY,CAAC,EAAC,YAAY,EAAC,CAAC,eAAe,CAAC,EAAC,YAAY,EAAC,CAAC,eAAe,CAAC,EAAC,eAAe,EAAC,CAAC,iBAAiB,CAAC,EAAC,aAAa,EAAC,CAAC,cAAc,CAAC,EAAC,gBAAgB,EAAC,CAAC,mBAAmB,CAAC,EAAC,aAAa,EAAC,CAAC,iBAAiB,CAAC,EAAC,eAAe,EAAC,CAAC,mBAAmB,CAAC,EAAC,YAAY,EAAC,CAAC,eAAe,CAAC,EAAC,kBAAkB,EAAC,CAAC,oBAAoB,CAAC,EAAC,cAAc,EAAC,CAAC,iBAAiB,CAAC,EAAC,gCAAgC,EAAC,CAAC,2CAA2C,CAAC,EAAC,mBAAmB,EAAC,CAAC,qBAAqB,CAAC,EAAC,qBAAqB,EAAC,CAAC,wBAAwB,CAAC,EAAC,sBAAsB,EAAC,CAAC,wBAAwB,CAAC,EAAC,iBAAiB,EAAC,CAAC,mBAAmB,CAAC,EAAC,uBAAuB,EAAC,CAAC,wBAAwB,CAAC,EAAC,mBAAmB,EAAC,CAAC,sBAAsB,CAAC,EAAC,oBAAoB,EAAC,CAAC,sBAAsB,CAAC,EAAC,qBAAqB,EAAC,CAAC,wBAAwB,CAAC,EAAC,oBAAoB,EAAC,CAAC,sBAAsB,CAAC,EAAC,qBAAqB,EAAC,CAAC,sBAAsB,CAAC,EAAC,oBAAoB,EAAC,CAAC,sBAAsB,CAAC,EAAC,oBAAoB,EAAC,CAAC,uBAAuB,CAAC,EAAC,oBAAoB,EAAC,CAAC,qBAAqB,CAAC,EAAC,KAAK,EAAC,CAAC,UAAU,CAAC,EAAC,aAAa,EAAC,CAAC,cAAc,CAAC,EAAC,WAAW,EAAC,CAAC,gBAAgB,CAAC,EAAC,wBAAwB,EAAC,CAAC,qCAAqC,CAAC,EAAC,wBAAwB,EAAC,CAAC,yBAAyB,CAAC,EAAC,2BAA2B,EAAC,CAAC,4BAA4B,CAAC,EAAC,gBAAgB,EAAC,CAAC,iBAAiB,CAAC,EAAC,kBAAkB,EAAC,CAAC,kBAAkB,CAAC,EAAC,gBAAgB,EAAC,CAAC,kBAAkB,CAAC,EAAC,YAAY,EAAC,CAAC,gBAAgB,CAAC,EAAC,oBAAoB,EAAC,CAAC,wBAAwB,CAAC,EAAC,MAAM,EAAC,CAAC,uBAAuB,CAAC,EAAC,SAAS,EAAC,CAAC,gBAAgB,CAAC,EAAC,wBAAwB,EAAC,CAAC,iCAAiC,CAAC,EAAC,oBAAoB,EAAC,CAAC,2BAA2B,CAAC,EAAC,8BAA8B,EAAC,CAAC,iCAAiC,CAAC,EAAC,0BAA0B,EAAC,CAAC,2BAA2B,CAAC,EAAC,eAAe,EAAC,CAAC,gBAAgB,CAAC,EAAC,gBAAgB,EAAC,CAAC,mBAAmB,CAAC,EAAC,gBAAgB,EAAC,CAAC,kBAAkB,CAAC,EAAC,eAAe,EAAC,CAAC,mBAAmB,CAAC,EAAC,MAAM,EAAC,CAAC,qBAAqB,CAAC,EAAC,QAAQ,EAAC,CAAC,WAAW,CAAC,EAAC,mCAAmC,EAAC,CAAC,4BAA4B,CAAC,EAAC,kBAAkB,EAAC,CAAC,mBAAmB,CAAC,EAAC,gBAAgB,EAAC,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAC,CAAC,UAAU,CAAC,EAAC,QAAQ,EAAC,CAAC,aAAa,CAAC,EAAC,UAAU,EAAC,CAAC,SAAS,CAAC,EAAC,UAAU,EAAC,CAAC,MAAM,CAAC,EAAC,YAAY,EAAC,CAAC,SAAS,CAAC,EAAC,SAAS,EAAC,CAAC,WAAW,CAAC,EAAC,KAAK,EAAC,CAAC,MAAM,CAAC,EAAC,kBAAkB,EAAC,CAAC,qBAAqB,CAAC,EAAC,QAAQ,EAAC,CAAC,WAAW,CAAC,EAAC,YAAY,EAAC,CAAC,oBAAoB,CAAC,EAAC,4BAA4B,EAAC,CAAC,8BAA8B,CAAC,EAAC,gBAAgB,EAAC,CAAC,iBAAiB,CAAC,EAAC,WAAW,EAAC,CAAC,WAAW,CAAC,EAAC,gBAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAC,qBAAqB,EAAC,CAAC,yBAAyB,CAAC,EAAC,iBAAiB,EAAC,CAAC,mBAAmB,CAAC,EAAC,qBAAqB,EAAC,CAAC,yBAAyB,CAAC,EAAC,iBAAiB,EAAC,CAAC,sBAAsB,CAAC,EAAC,cAAc,EAAC,CAAC,qBAAqB,CAAC,EAAC,YAAY,EAAC,CAAC,eAAe,CAAC,EAAC,cAAc,EAAC,CAAC,eAAe,CAAC,EAAC,QAAQ,EAAC,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAC,CAAC,YAAY,CAAC,EAAC,UAAU,EAAC,CAAC,oBAAoB,CAAC,EAAC,WAAW,EAAC,CAAC,kBAAkB,CAAC,EAAC,SAAS,EAAC,CAAC,mBAAmB,CAAC,EAAC,UAAU,EAAC,CAAC,iBAAiB,CAAC,EAAC,QAAQ,EAAC,CAAC,cAAc,CAAC,EAAC,UAAU,EAAC,CAAC,aAAa,CAAC,EAAC,SAAS,EAAC,CAAC,YAAY,CAAC,EAAC,OAAO,EAAC,CAAC,UAAU,CAAC,EAAC,MAAM,EAAC,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAC,CAAC,QAAQ,CAAC,EAAC,SAAS,EAAC,CAAC,YAAY,CAAC,EAAC,OAAO,EAAC,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAC,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAC,CAAC,WAAW,CAAC,EAAC,WAAW,EAAC,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAC,CAAC,QAAQ,CAAC,EAAC,WAAW,EAAC,CAAC,WAAW,CAAC,EAAC,SAAS,EAAC,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAC,CAAC,YAAY,CAAC,EAAC,UAAU,EAAC,CAAC,UAAU,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,CAAC,EAAC,eAAe,EAAC,CAAC,mBAAmB,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,cAAc,EAAC,CAAC,QAAQ,CAAC,EAAC,cAAc,EAAC,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,CAAC,UAAU,CAAC,EAAC,QAAQ,EAAC,CAAC,YAAY,CAAC,EAAC,MAAM,EAAC,CAAC,SAAS,CAAC,EAAC,UAAU,EAAC,CAAC,WAAW,CAAC,EAAC,cAAc,EAAC,CAAC,0BAA0B,CAAC,EAAC,eAAe,EAAC,CAAC,wBAAwB,CAAC,EAAC,OAAO,EAAC,CAAC,mBAAmB,CAAC,EAAC,UAAU,EAAC,CAAC,UAAU,CAAC,EAAC,aAAa,EAAC,CAAC,iBAAiB,CAAC,EAAC,EAAC,EAAC;;ACM1tPA,YAAM,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;AAClCA,YAAM,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;AACjCA,YAAM,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC;AAChDA,YAAM,CAAC,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC;AAExC;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChC,MAAM,SAAS,GAAmB,EAAE;AACpC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/C,IAAA,SAAS,CAAC,GAAG,CAAC,GAAG,CAACA,YAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD;AACA,MAAM,WAAW,GAAe;IAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,IAAA,QAAQ,EAAE,EAAC,EAAE,EAAE,SAAS,EAAC;CACjB;AACVA,YAAM,CAAC,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC;;AClBnD;;;;;AAKG;AACU,MAAA,KAAK,GAAG;;AAEnB,IAAA,IAAI,EAAE,QAAQ;;AAEd,IAAA,aAAa,EAAE,QAAQ;;AAEvB,IAAA,YAAY,EAAE,QAAQ;;AAEtB,IAAA,SAAS,EAAE,QAAQ;;AAEnB,IAAA,OAAO,EAAE,QAAQ;;AAEjB,IAAA,mBAAmB,EAAE,QAAQ;;AAE7B,IAAA,gBAAgB,EAAE,QAAQ;;AAE1B,IAAA,YAAY,EAAE,QAAQ;;AAEtB,IAAA,UAAU,EAAE,QAAQ;;AAEpB,IAAA,eAAe,EAAE,QAAQ;;AAEzB,IAAA,eAAe,EAAE,QAAQ;;AAEzB,IAAA,QAAQ,EAAE,QAAQ;;AAElB,IAAA,UAAU,EAAE,QAAQ;;AAEpB,IAAA,cAAc,EAAE,QAAQ;;AAExB,IAAA,UAAU,EAAE,QAAQ;;AAEpB,IAAA,iBAAiB,EAAE,QAAQ;;AAE3B,IAAA,KAAK,EAAE,QAAQ;;AAEf,IAAA,UAAU,EAAE,QAAQ;;AAEpB,IAAA,WAAW,EAAE,QAAQ;;AAErB,IAAA,aAAa,EAAE,QAAQ;;AAEvB,IAAA,IAAI,EAAE,QAAQ;;AAEd,IAAA,WAAW,EAAE,QAAQ;;AAErB,IAAA,WAAW,EAAE,QAAQ;;AAErB,IAAA,gBAAgB,EAAE,QAAQ;;AAE1B,IAAA,eAAe,EAAE,SAAS;;AAE1B,IAAA,SAAS,EAAE,SAAS;;AAEpB,IAAA,cAAc,EAAE,SAAS;;AAEzB,IAAA,MAAM,EAAE,SAAS;;AAGnB,MAAM,cAAc,GAAG;IACrB,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAC9C,IAAA,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC;AAC5C,IAAA,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC;AAC9B,IAAA,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;AACrC,IAAA,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC;AACzC,IAAA,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC3C,IAAA,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AACtB,IAAA,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;AAC1B,IAAA,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC;AACnC,IAAA,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC;AACnC,IAAA,CAAC,KAAK,CAAC,iBAAiB,EAAE,WAAW,CAAC;AACtC,IAAA,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC;AAC7C,IAAA,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;AAC1B,IAAA,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC;CAChB;AAEV;;;;;;;;AAQG;MACU,KAAK,CAAA;AAkBhB;;;;;;AAMG;IACH,WAAY,CAAA,IAAW,EAAE,IAAY,EAAE,IAAI,GAAG,CAAC,EAAE,KAAc,EAAA;QAC7D,IAAI,CAACC,WAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACxB,YAAA,MAAM,IAAI,SAAS,CAAC,uBAAuB,IAAI,CAAA,CAAE,CAAC;;AAC7C,aAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACnC,YAAA,MAAM,IAAI,SAAS,CAAC,8BAA8B,IAAI,CAAA,CAAE,CAAC;;AAE3D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI;QACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC/C,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;;;AAG9B;;AAEG;IACH,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;;AAElB;;;;;AAKG;IACH,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;;AAElB;;AAEG;IACH,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,IAAI;;AAElB;;;;;;;;AAQG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,OAAOD,YAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;;AAE1C;;;;;AAKG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;;AAE5B;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI;;AAE3B;;;;;AAKG;IACH,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;AAEvB;;;AAGG;IACH,GAAG,GAAA;AACD,QAAA,OAAO,SAAS;;AAElB;;;;;;;AAOG;IACH,gBAAgB,GAAA;QACd,OAAO,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;;AAEvC;;;;;;;AAOG;IACH,kBAAkB,GAAA;QAChB,OAAO,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;;AAErC;;;;;;;;;;AAUG;AACH,IAAA,UAAU,CAAC,EAAW,EAAA;AACpB,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE;;AAEjE;;;AAGG;IACH,KAAK,GAAA;AACH,QAAA,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;;AAErD,QAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;AACvB,QAAA,OAAO,EAAE;;AAEX;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;AAClC,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAW;AAChC,YAAA,IAAI,IAAI,GAAG,KAAK,EAAE;AAChB,gBAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAa;;;QAGrC,OAAO,CAAC,SAAS,CAAC;;AAErB;;AC3PD;AACM,MAAO,eAAgB,SAAQ,KAAK,CAAA;AACxC;;AAEG;AACH,IAAA,WAAA,CAAY,IAAW,EAAA;AACrB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC;;AAEjD;;;;;;;;;AASG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,MAAM,OAAO,GAAG,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,WAAW,EAAE;AACrC,QAAA,MAAM,OAAO,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAP,OAAO,GAAIA,YAAM,CAAC,aAAa,EAAE;AACjD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QACzB,QAAQ,OAAO;AACb,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;AAClC,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;AACjC,YAAA;gBACE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;;;AAGrC;;;AAGG;AACK,IAAA,iBAAiB,CAAC,MAAc,EAAA;AACtC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AACzB,QAAA,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;AACvB,QAAA,MAAM,EAAE,GAAGA,YAAM,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC;QACpD,OAAOE,eAAS,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE;;AAEjC;;;;;;;;;AASG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;QACzB,MAAM,OAAO,GAAG,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,WAAW,EAAE;AACrC,QAAA,MAAM,OAAO,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAP,OAAO,GAAIF,YAAM,CAAC,aAAa,EAAE;AACjD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AACzB,QAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAKG,YAAM,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;QAE7B,QAAQ,OAAO;AACb,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACxC,YAAA;gBACE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;;;AAGvC;;ACxED;;;;;;;;;;;;;;;;;;;AAmBG;AAGH,MAAM,cAAc,GAAuD;IACzE,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC;AAC1D,IAAA,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC;AAC7D,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,CAAC;IAC7D,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,CAAC;IACzD,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC;IAC9D,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC;AACzD,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAChE,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC;AAC5D,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,CAAC;IAC7D,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC;AAC9D,IAAA;QACE,cAAc;QACd,IAAI;AACJ,QAAA,SAAS;AACT,QAAA,SAAS;QACT,gCAAgC;QAChC,EAAE;AACH,KAAA;AACD,IAAA,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC;AAC/D,IAAA,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,CAAC;AAC9D,IAAA,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC;AAChE,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC;AAChE,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,CAAC;AAC7D,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC;AAC7D,IAAA,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,CAAC;IAC9D,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC;AACzD,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,CAAC;IAC/D,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC;AACxD,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE,CAAC;IAC9D,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,CAAC;AAC7D,IAAA,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC;IAC7D,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,CAAC;AAC9D,IAAA,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,qBAAqB,EAAE,IAAI,CAAC;IACxE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC;AACrD,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC;AACvD,IAAA,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACjE,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,CAAC;AACrE,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC;AACzD,IAAA,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,CAAC;IACtE,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC;AAC3D,IAAA,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAC5D,IAAA,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,CAAC;AAClE,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,EAAE,CAAC;AAClE,IAAA,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,CAAC;AACvE,IAAA,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,CAAC;IAC/D,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,CAAC;AAC1D,IAAA,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAC/D,IAAA,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,CAAC;AAC5D,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC;AAC5D,IAAA,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,CAAC;IAC9D,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;AACrD,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC/D,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC;AACjE,IAAA,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAClE,IAAA,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,CAAC;AAC/D,IAAA,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC;AAClE,IAAA,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,IAAA,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,CAAC;AACnE,IAAA,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,CAAC;IAClE,CAAC,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC;AACnE,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,CAAC;AACpE,IAAA,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,CAAC;AACxE,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,GAAG,CAAC;AAClE,IAAA,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,CAAC;AAClE,IAAA,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,CAAC;IAC9D,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC;AAC5D,IAAA,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC3D,IAAA,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC;AAC7D,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,CAAC;AAClE,IAAA,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACnE,IAAA,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACnE,IAAA,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC;CAClE;AACD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB;AAEjD;AACA,MAAM,eAAe,GAA2B;AAC9C,IAAA,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,mBAAmB;IACxB,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,eAAe;CACb;AAEV;AACA,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+B;AAE9D;;;;AAIG;AACH,SAAS,YAAY,CAAC,IAAY,EAAA;IAChC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,IAAA,IAAI,GAAG;AAAE,QAAA,OAAO,GAAG;IACnB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AACzC,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,KAAK;AACd,KAAA,CAAC;AACF,IAAA,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5B,IAAA,OAAO,CAAC;AACV;AAEA;AACM,MAAO,QAAS,SAAQC,gBAAW,CAAA;AAIvC;;;;;;;;;;AAUG;AACH,IAAA,WAAA,CACE,QAAgB,EAChB,SAAiB,EACjB,EAAW,EACX,IAAY,EACZ,QAAiB,EACjB,WAAoB,EACpB,KAAuB,EACvB,SAAkB,EAAA;AAElB,QAAA,MAAM,GAAG,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AAC1E,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE;AACvC,YAAA,MAAM,IAAI,UAAU,CAAC,YAAY,QAAQ,CAAA,sBAAA,CAAwB,CAAC;;AAEpE,QAAA,MAAM,IAAI,GACR,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AACnE,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE;AAC5C,YAAA,MAAM,IAAI,UAAU,CAAC,aAAa,SAAS,CAAA,wBAAA,CAA0B,CAAC;;AAExE,QAAA,MAAM,IAAI,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC;AAC3E,QAAA,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC9C,QAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,EAAE,GAAG,WAAW;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;IAGpB,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,EAAE;;IAGhB,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE;;AAG/B;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAChC,IAAI,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;YAC/C,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;;AAC9B,iBAAA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC7D,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;;;QAGvC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;;IAGjC,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,EAAE;;IAGhB,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAG3B;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;;IAGzC,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;AAGnB;;;;;;;;;;;;;;;;;AAiBG;IACH,OAAO,MAAM,CAAC,IAAY,EAAA;QACxB,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;;IAG9C,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;AAG7B;;;;AAIG;AACH,IAAA,OAAO,cAAc,CAAC,EAAU,EAAE,GAAW,EAAA;QAC3C,EAAE,GAAG,CAAC,EAAE;AACR,QAAA,IAAI,GAAG,KAAK,MAAM,EAAE;AAClB,YAAA,IAAI,EAAE,KAAK,CAAC,EAAE;AACZ,gBAAA,OAAO,KAAK;;iBACP;AACL,gBAAA,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;AAC9B,gBAAA,OAAO,CAAU,OAAA,EAAA,IAAI,CAAG,EAAA,EAAE,EAAE;;;aAEzB,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,QAAQ,EAAE;AACvC,YAAA,OAAO,gBAAgB;;AAClB,aAAA,IAAI,GAAG,KAAK,IAAI,EAAE;YACvB,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE;AACL,oBAAA,OAAO,qBAAqB;AAC9B,gBAAA,KAAK,EAAE;AACL,oBAAA,OAAO,iBAAiB;AAC1B,gBAAA,KAAK,CAAC;AACJ,oBAAA,OAAO,eAAe;AACxB,gBAAA,KAAK,CAAC;AACJ,oBAAA,OAAO,cAAc;AACvB,gBAAA,KAAK,CAAC;AACJ,oBAAA,OAAO,eAAe;;;AAIrB,aAAA,IAAI,GAAG,KAAK,KAAK,EAAE;YACxB,OAAO,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;;AAEzC,QAAA,OAAO,SAAS;;AAGlB;;;;;;;AAOG;AACH,IAAA,OAAO,UAAU,CAAC,KAAa,EAAE,EAAU,EAAE,GAAW,EAAA;QACtD,EAAE,GAAG,CAAC,EAAE;QACR,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;AAC/B,YAAA,OAAO,cAAc;;aAChB,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE;YACrC,OAAO,GAAG,KAAK,GAAG,GAAG,gBAAgB,GAAG,iBAAiB;;aACpD;AACL,YAAA,OAAO,eAAe,CAAC,EAAE,CAAC;;;AAI9B;;;;AAIG;AACH,IAAA,OAAO,WAAW,CAAC,QAAgB,EAAE,QAAkB,EAAA;AACrD,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC3B,YAAA,OAAO,KAAK;;AAEd,QAAA,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;AACjC,QAAA,OAAO,IAAI;;AAEd;AAED,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;IACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAChB,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,EACT,IAAI,CAAC,CAAC,CAAC,CACR;IACD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AACzC;;AClUA;;AAEG;AACH,SAAS,SAAS,CAAC,GAAkC,EAAA;AACnD,IAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,QAAA,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC;;IAEtB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC3C,IAAA,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AACtB,IAAA,OAAO,GAAG;AACZ;AAEA,SAAS,OAAO,CAAC,IAAkB,EAAA;IACjC,IAAIC,YAAM,CAAC,IAAI,CAAC;AAAE,QAAA,OAAO,IAAY;AACrC,IAAA,IAAIJ,WAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AAAE,QAAA,OAAQ,IAAc,CAAC,IAAI,EAAE;AACtD,IAAA,MAAM,IAAI,SAAS,CAAC,iBAAiB,IAAI,CAAA,CAAE,CAAC;AAC9C;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MACU,MAAM,CAAA;AAKjB;;;;;;;;;;AAUG;AACH,IAAA,WAAA,CAAY,IAAiB,EAAE,IAAkB,EAAE,YAAqB,EAAA;AACtE,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,YAAA,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;AACtB,YAAA,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC;AACxB,YAAA,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE;AAClB,SAAA,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAIK,mBAAc,CAAC,IAAI,EAAE,SAAS,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;;AAE3C;;;AAGG;IACH,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;AAE1B;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;;AAElC;;;;;;AAMG;IACH,WAAW,CAAC,KAAa,EAAE,MAAe,EAAA;AACxC,QAAA,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK;QAC/B,MAAM,GAAG,GAAG;cACR,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,YAAY;cAChD,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC;AACpD,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAEvB;;;AAGG;IACH,OAAO,GAAA;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC;AACf,cAAE,IAAI,CAAC,IAAI,CAAC,UAAU;AACtB,cAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAEvB;;;AAGG;IACH,eAAe,GAAA;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1C,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAEvB;;;AAGG;IACH,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC;AACf,cAAE,IAAI,CAAC,IAAI,CAAC,SAAS;AACrB,cAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjC,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAEvB;;;AAGG;IACH,cAAc,GAAA;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACzC,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAEvB;;;;AAIG;IACH,IAAI,GAAA;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC7C,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAEvB;;;;AAIG;IACH,IAAI,GAAA;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC3C,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAEvB;;;AAGG;IACH,OAAO,GAAA;QACL,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;;AAEtB;;AAEG;IACH,SAAS,GAAA;QACP,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;;AAEpE;;AAEG;IACH,OAAO,GAAA;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC9C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC;AACzD,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAEvB;;;AAGG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;;AAElE;;;;AAIG;IACH,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;;AAErC;;;;AAIG;IACH,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;;AAErC;;;;AAIG;IACH,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;;AAErC;;;;AAIG;AACH,IAAA,uBAAuB,CAAC,KAAa,EAAA;AACnC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC;AACtB,cAAE,IAAI,CAAC,IAAI,CAAC,UAAU;AACtB,cAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;AACpB,cAAE,IAAI,CAAC,IAAI,CAAC,SAAS;AACrB,cAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QAC/C,MAAM,GAAG,GAAGA,mBAAc,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC;AAC5D,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAEvB;;;AAGG;IACH,WAAW,GAAA;;AAET,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;;AAExC;;;;;;;;;AASG;IACH,aAAa,GAAA;;AAEX,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;;AAExC;;;AAGG;AACH,IAAA,iBAAiB,CAAC,aAAsB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC;AAC3D,QAAA,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE;AAChE,QAAA,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;;AAE/B;;;AAGG;AACH,IAAA,oBAAoB,CAAC,KAAa,EAAA;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;AAC5C,QAAA,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AAC5D,QAAA,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;;AAE7B;;;;;AAKG;IACH,cAAc,GAAA;;AAEZ,QAAA,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC;QAC3C,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;;AAE5C;;;;AAIG;IACH,sBAAsB,GAAA;AACpB,QAAA,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC;QAC3C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;;AAE1C;;;;;;;;AAQG;IACH,sBAAsB,GAAA;AACpB,QAAA,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC;QAC3C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;;AAE1C;;AAEG;IACH,gBAAgB,GAAA;;AAEd,QAAA,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC;QAC3C,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;;AAE5C;;;;AAIG;IACH,wBAAwB,GAAA;AACtB,QAAA,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC;QAC3C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;;AAE1C;;;;;;;;AAQG;IACH,wBAAwB,GAAA;AACtB,QAAA,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC;QAC3C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;;AAE1C;;;;;;;;;;;;AAYG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;;AAE1C;;;;;;;AAOG;IACH,eAAe,GAAA;AACb,QAAA,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC;QAC7C,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;;AAE5C;;;;;;;;;AASG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;;AAE1C;;;;;;;AAOG;IACH,eAAe,GAAA;AACb,QAAA,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC5D,QAAA,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;;AAEpE;;;AAGG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;AAE5C;;;;;AAKG;IACH,KAAK,CAAC,KAAK,GAAG,GAAG,EAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;;AAEvC;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;AAEvB;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;;AAEtB;;;;;;;AAOG;IACH,cAAc,GAAA;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE;AAC9B,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACjB,YAAA,OAAO,KAAK;;QAEd,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;;AAE5C;;AAEG;AACH,IAAA,OAAO,UAAU,CAAC,EAAQ,EAAE,UAA+B,EAAA;QACzD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAClB,YAAA,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;;AAEtB,QAAA,OAAO,IAAI;;AAGb;;;AAGG;IACH,OAAO,SAAS,CAAC,EAAQ,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACjB,YAAA,OAAO,EAAE;;;AAGX,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC,eAAe,EAAE;AACvC,QAAA,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE;QAC/B,IAAI,OAAO,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE;AACrC,YAAA,OAAO,EAAE;;AAEX,QAAA,MAAM,YAAY,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU;AAChD,QAAA,MAAM,KAAK,GACT,YAAY,IAAI,KAAK,GAAG,KAAK,GAAG,YAAY,GAAG,EAAE,GAAG,YAAY;AAClE,QAAA,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;AAGjC;;;;AAIG;AACH,IAAA,OAAO,cAAc,CAAC,IAAY,EAAE,IAAU,EAAA;QAC5C,MAAM,MAAM,GAAGC,uBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AACxC,QAAA,MAAM,OAAO,GAAG,SAAS,GAAG,EAAE;QAC9B,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,UAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAGA,UAAI,CAAC,OAAO,CAAC;;AAGrE;;;;AAIG;AACH,IAAA,OAAO,qBAAqB,CAAC,IAAY,EAAE,IAAU,EAAA;QACnD,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACzB,YAAA,OAAO,sBAAsB;;AAE/B,QAAA,QACEC,kBAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;;AAIrC;;;;;;;AAOG;IACH,aAAa,CACX,MAAc,EACd,WAAW,GAAG,IAAI,EAClB,aAAa,GAAG,KAAK,EAAA;AAErB,QAAA,MAAM,OAAO,GAAG,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QACvE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;AAC5B,YAAA,OAAO,OAAO;;QAEhB,IAAI,WAAW,EAAE;;YAEf,IAAI,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;AAC5C,gBAAA,MAAM,EAAE;;AAEV,YAAA,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;;AAE1B,QAAA,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;;AAGzD;;;;;;;AAOG;IACH,YAAY,CACV,MAAc,EACd,WAAW,GAAG,IAAI,EAClB,aAAa,GAAG,KAAK,EAAA;AAErB,QAAA,MAAM,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACpE,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE;AAC3B,YAAA,OAAO,MAAM;;QAEf,IAAI,WAAW,EAAE;;YAEf,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;AAC3C,gBAAA,MAAM,EAAE;;AAEV,YAAA,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;;AAEzB,QAAA,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;;AAExD;;;;;;;;;;;;;;;;;;;;AAoBG;AACH,IAAA,OAAO,oBAAoB,CACzB,IAAiB,EACjB,IAAU,EACV,YAAqB,EAAA;QAErB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC;AACnD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;AAC9B,QAAA,IAAI,EAAE,GAAG,IAAIR,WAAK,CAAC,IAAI,CAAC;AACxB,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,QAAA,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;AACvB,YAAA,OAAO,EAAE;;AAEX,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,YAAY,EAAE;AAClC,YAAA,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;;AAEhB,QAAA,OAAO,EAAE;;AAEZ;;ACplBD,MAAM,QAAQ,GAA2B;AACvC,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;CACG;AAEV;;;;;AAKG;SACa,eAAe,CAC7B,OAAe,EACf,MAAc,EACd,OAAoB,EAAA;;IAEpB,IAAI,OAAO,OAAO,KAAK,QAAQ;AAC7B,QAAA,MAAM,IAAI,SAAS,CAAC,gBAAgB,OAAO,CAAA,CAAE,CAAC;AAChD,IAAA,MAAM,EAAE,GAAG,CAAA,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,cAAc,EAAE,MAAK,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,EAAE,IAAG,IAAI,GAAG,IAAI,CAAC;IAC7E,MAAM,MAAM,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,MAAM;IAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,EAAE;AAC5C,QAAA,OAAO,OAAO;;IAEhB,IAAI,CAAC,MAAM,IAAI,OAAO,QAAQ,CAAC,EAAE,CAAC,KAAK,WAAW,EAAE;AAClD,QAAA,OAAO,OAAO;;IAEhB,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7B,IAAI,IAAI,GAAoB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/C,IAAA,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,EAAE;AACvB,QAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACnD,QAAA,IAAI,IAAI,KAAK,CAAC,EAAE;YACd,IAAI,GAAG,EAAE;;;AAEN,SAAA,IAAI,IAAI,GAAG,EAAE,EAAE;AACpB,QAAA,IAAI,GAAG,IAAI,GAAG,EAAE;;AACX,SAAA,IAAI,IAAI,KAAK,CAAC,EAAE;QACrB,IAAI,GAAG,IAAI;;IAEb,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,EAAE,CAAC,CAAC,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE;AACpC;;AC3CA;AACM,MAAO,UAAW,SAAQ,KAAK,CAAA;AAMnC;;AAEG;AACH,IAAA,WAAA,CACE,IAAW,EACX,IAAY,EACZ,IAAY,EACZ,SAAe,EACf,QAAkB,EAClB,WAAmB,EACnB,OAAoB,EAAA;AAEpB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,EAAE;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;AACjE,QAAA,MAAM,IAAI,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAE,EAAA,EAAA,QAAQ,GAAC;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7D,QAAA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AACtC,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW;;;AAGlC;;AAEG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;AACpB,QAAA,OAAOD,YAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO;;AAErE;;;AAGG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;QACzB,OAAOA,YAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;;IAG/C,aAAa,GAAA;AACX,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;QAC3B,QAAQ,IAAI;;AAEV,YAAA,KAAK,iBAAiB;gBACpB,OAAO,CAAC,SAAS,CAAC;;AAEpB,YAAA,KAAK,UAAU;gBACb,OAAO,CAAC,UAAU,CAAC;;AAErB,YAAA,KAAK,aAAa;AAClB,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;;;QAG7B,OAAO,CAAC,SAAS,CAAC;;AAErB;AAED;AACM,MAAO,mBAAoB,SAAQ,UAAU,CAAA;IACjD,WACE,CAAA,IAAW,EACX,IAAY,EACZ,SAAe,EACf,QAAkB,EAClB,WAAmB,EACnB,OAAoB,EAAA;AAEpB,QAAA,KAAK,CACH,IAAI,EACJ,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,OAAO,CACR;;IAGH,QAAQ,GAAA;AACN,QAAA,OAAO,KAAK;;AAEf;AAED;AACM,MAAO,aAAc,SAAQ,UAAU,CAAA;AAE3C,IAAA,WAAA,CACE,IAAW,EACX,IAAY,EACZ,SAAe,EACf,QAAkB,EAClB,YAAqB,EACrB,WAAmB,EACnB,OAAoB,EAAA;AAEpB,QAAA,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC;QACxE,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;;;AAGpC;;AAEG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO;;AAEvD;;;AAGG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,GAAG,GAAGA,YAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,GAAG,GAAGA,YAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;YACzC,GAAG,IAAI,KAAK,IAAI,CAAC,YAAY,CAAI,CAAA,EAAA,GAAG,GAAG;;AAEzC,QAAA,OAAO,GAAG;;IAGZ,QAAQ,GAAA;AACN,QAAA,OAAO,GAAG;;AAEb;;ACrID,MAAM,KAAK,GAAGG,YAAM,CAAC,KAAK;AAC1B,MAAM,KAAK,GAAGA,YAAM,CAAC,KAAK;AAC1B,MAAM,KAAK,GAAGA,YAAM,CAAC,KAAK;AAC1B,MAAM,KAAK,GAAGA,YAAM,CAAC,KAAK;AAC1B,MAAM,EAAE,GAAGA,YAAM,CAAC,EAAE;AACpB,MAAM,IAAI,GAAGA,YAAM,CAAC,IAAI;AACxB,MAAM,OAAO,GAAGA,YAAM,CAAC,OAAO;AAC9B,MAAM,QAAQ,GAAGA,YAAM,CAAC,QAAQ;AAChC,MAAM,MAAM,GAAGA,YAAM,CAAC,MAAM;AAC5B,MAAM,KAAK,GAAGA,YAAM,CAAC,KAAK;AAC1B,MAAM,KAAK,GAAGA,YAAM,CAAC,OAAO;AAE5B,MAAMO,MAAI,GAAG,KAAK,CAAC,IAAI;AACvB,MAAMC,eAAa,GAAG,KAAK,CAAC,aAAa;AACzC,MAAMC,cAAY,GAAG,KAAK,CAAC,YAAY;AACvC,MAAMC,WAAS,GAAG,KAAK,CAAC,SAAS;AACjC,MAAMC,SAAO,GAAG,KAAK,CAAC,OAAO;AAC7B,MAAMC,qBAAmB,GAAG,KAAK,CAAC,mBAAmB;AACrD,MAAMC,kBAAgB,GAAG,KAAK,CAAC,gBAAgB;AAC/C,MAAMC,YAAU,GAAG,KAAK,CAAC,UAAU;AACnC,MAAMC,eAAa,GAAG,KAAK,CAAC,aAAa;AACzC,MAAMC,MAAI,GAAG,KAAK,CAAC,IAAI;AACvB,MAAMC,aAAW,GAAG,KAAK,CAAC,WAAW;AAErC,MAAM,WAAW,GAAG,IAAI;AACxB,MAAM,WAAW,GAAG,MAAM;AAE1B,MAAM,eAAe,GAAG,iBAAiB;AACzC,MAAM,eAAe,GAAG,iBAAiB;AACzC,MAAM,UAAU,GAAG,YAAY;AAC/B,MAAM,WAAW,GAAG,aAAa;AACjC,MAAM,QAAQ,GAAG,UAAU;AAC3B,MAAM,SAAS,GAAG,WAAW;AAC7B,MAAM,cAAc,GAAG,oBAAoB;AAC3C,MAAM,aAAa,GAAG,mBAAmB;AACzC,MAAM,YAAY,GAAG,kBAAkB;AACvC,MAAM,aAAa,GAAG,mBAAmB;AACzC,MAAM,cAAc,GAAG,gBAAgB;AACvC,MAAM,aAAa,GAAG,eAAe;AACrC,MAAM,aAAa,GAAG,mBAAmB;AACzC,MAAM,uBAAuB,GAAG,2BAA2B;AAC3D,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,MAAM,UAAU,GAAG,YAAY;AAC/B,MAAM,UAAU,GAAG,YAAY;AAC/B,MAAM,KAAK,GAAG,OAAO;AACrB,MAAM,aAAa,GAAG,eAAe;AACrC,MAAM,WAAW,GAAG,aAAa;AACjC,MAAM,QAAQ,GAAG,UAAU;AAC3B,MAAM,SAAS,GAAG,WAAW;AAC7B,MAAM,aAAa,GAAG,mBAAmB;AACzC,MAAM,cAAc,GAAG,oBAAoB;AAC3C,MAAM,aAAa,GAAG,mBAAmB;AACzC,MAAM,YAAY,GAAG,kBAAkB;AACvC,MAAM,aAAa,GAAG,mBAAmB;AACzC,MAAM,UAAU,GAAG,YAAY;AAC/B,MAAM,WAAW,GAAG,aAAa;AACjC,MAAM,YAAY,GAAG,cAAc;AACnC,MAAM,UAAU,GAAG,YAAY;AAC/B,MAAM,YAAY,GAAG,cAAc;AACnC,MAAMC,SAAO,GAAG,SAAS;AACzB,MAAM,SAAS,GAAG,WAAW;AAC7B,MAAM,UAAU,GAAG,YAAY;AAC/B,MAAM,MAAM,GAAG,SAAS;AACxB,MAAM,sBAAsB,GAAG,wBAAwB;AACvD,MAAM,iBAAiB,GAAG,mBAAmB;AAC7C,MAAM,gBAAgB,GAAG,kBAAkB;AAC3C,MAAM,cAAc,GAAG,gBAAgB;AACvC,MAAM,UAAU,GAAG,YAAY;AAC/B,MAAM,0BAA0B,GAAG,4BAA4B;AAC/D,MAAM,SAAS,GAAG,WAAW;AAC7B,MAAM,cAAc,GAAG,gBAAgB;AACvC,MAAM,IAAI,GAAG,MAAM;AACnB,MAAM,YAAY,GAAG,cAAc;AACnC,MAAM,8BAA8B,GAAG,gCAAgC;AACvE,MAAM,mBAAmB,GAAG,qBAAqB;AAEjD;;;;AAIG;AACU,MAAA,WAAW,GAAG;;AAEzB,IAAA,YAAY,EAAE,eAAe;;AAE7B,IAAA,eAAe,EAAE,iBAAiB;;AAElC,IAAA,YAAY,EAAE,cAAc;;AAE5B,IAAA,gBAAgB,EAAE,mBAAmB;;AAErC,IAAA,cAAc,EAAE,kBAAkB;;AAElC,IAAA,aAAa,EAAE,eAAe;;AAE9B,IAAA,WAAW,EAAE,aAAa;;AAE1B,IAAA,eAAe,EAAE,iBAAiB;;AAElC,IAAA,cAAc,EAAE,gBAAgB;;AAEhC,IAAA,iBAAiB,EAAE,mBAAmB;;AAEtC,IAAA,eAAe,EAAE,iBAAiB;;AAElC,IAAA,eAAe,EAAE,iBAAiB;;AAElC,IAAA,aAAa,EAAE,eAAe;;AAE9B,IAAA,gBAAgB,EAAE,kBAAkB;;AAEpC,IAAA,cAAc,EAAE,gBAAgB;;AAEhC,IAAA,aAAa,EAAE,eAAe;;AAE9B,IAAA,cAAc,EAAE,gBAAgB;;AAEhC,IAAA,mBAAmB,EAAE,qBAAqB;;AAE1C,IAAA,eAAe,EAAE,kBAAkB;;AAEnC,IAAA,aAAa,EAAE,gBAAgB;;AAE/B,IAAA,SAAS,EAAE,aAAa;;AAExB,IAAA,aAAa,EAAE,eAAe;;AAE9B,IAAA,WAAW,EAAE,aAAa;;AAE1B,IAAA,cAAc,EAAE,gBAAgB;;AAEhC,IAAA,WAAW,EAAE,aAAa;;AAE1B,IAAA,aAAa,EAAE,eAAe;;IAG9B,cAAc;;IAEd,iBAAiB;;IAEjB,WAAW;;IAEX,UAAU;;IAEV,iBAAiB;;IAEjB,YAAY;;IAEZ,WAAW;;IAEX,eAAe;;IAEf,UAAU;;IAEV,mBAAmB;;IAEnB,SAAS;;IAET,cAAc;;IAEd,UAAU;;IAEV,QAAQ;;IAER,SAAS;;IAET,cAAc;;IAEd,aAAa;;IAEb,aAAa;;IAEb,YAAY;;IAEZ,UAAU;;IAEV,WAAW;;IAEX,aAAa;;IAEb,YAAY;;IAEZ,KAAK;;IAEL,eAAe;;IAEf,sBAAsB;;aAEtBA,SAAO;;IAEP,SAAS;;IAET,UAAU;;IAEV,cAAc;;IAEd,aAAa;;IAEb,IAAI;;IAEJ,aAAa;;IAEb,QAAQ;;IAER,SAAS;;IAET,cAAc;;IAEd,aAAa;;IAEb,aAAa;;IAEb,uBAAuB;;IAEvB,aAAa;;IAEb,YAAY;;IAEZ,MAAM;;IAEN,UAAU;;IAEV,0BAA0B;;IAE1B,YAAY;;IAEZ,8BAA8B;;IAE9B,UAAU;;IAEV,gBAAgB;;AAYX,MAAM,cAAc,GAAc;AACvC,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,eAAe;QACrB,KAAK,EAAEX,MAAI,GAAGE,cAAY;AAC1B,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA,EAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAEO,MAAI,GAAGR,eAAa,EAAC;AACxE,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAED,MAAI,GAAGO,YAAU,GAAGL,cAAY;AACxC,KAAA;AAED,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAEC,WAAS,GAAGM,MAAI,GAAGR,eAAa;AACvC,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAEE,WAAS,GAAGH,MAAI,GAAGK,qBAAmB;AAC7C,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAEF,WAAS,GAAGH,MAAI,GAAGE,cAAY;AACtC,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,cAAc;QACpB,KAAK,EAAEC,WAAS,GAAGO,aAAW;AAC9B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;QACnB,KAAK,EAAEP,WAAS,GAAGO,aAAW;AAC9B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,YAAY;QAClB,KAAK,EAAEP,WAAS,GAAGO,aAAW;AAC9B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;QACnB,KAAK,EAAEP,WAAS,GAAGO,aAAW;AAC9B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,KAAK,EAAEP,WAAS,GAAGH,MAAI,GAAGK,qBAAmB;AAC9C,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAEF,WAAS,GAAGH,MAAI,GAAGE,cAAY;AACvC,KAAA;AAED,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAEE,SAAO,GAAGK,MAAI,GAAGR,eAAa;AACrC,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAEG,SAAO,GAAGJ,MAAI,GAAGE,cAAY;AACpC,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;QACnB,KAAK,EAAEE,SAAO,GAAGM,aAAW;AAC5B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,cAAc;QACpB,KAAK,EAAEN,SAAO,GAAGM,aAAW;AAC5B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;QACnB,KAAK,EAAEN,SAAO,GAAGM,aAAW;AAC5B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,YAAY;QAClB,KAAK,EAAEN,SAAO,GAAGM,aAAW;AAC5B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;QACnB,KAAK,EAAEN,SAAO,GAAGM,aAAW;AAC5B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,KAAK,EAAEN,SAAO,GAAGJ,MAAI,GAAGE,cAAY;AACrC,KAAA;AAED,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAED,eAAa,GAAGS,aAAW;QAClC,MAAM,EAAE,EAAE;AACV,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,MAAM;AACV,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,KAAK,EAAED,MAAI,GAAGD,eAAa,GAAGF,kBAAgB;AAC9C,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,EAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAEE,eAAa,EAAE,KAAK,EAAE,IAAI,EAAC;AACxE,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,UAAU;QAChB,KAAK,EAAEC,MAAI,GAAGD,eAAa;AAC3B,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,EAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAEA,eAAa,EAAE,KAAK,EAAE,OAAO,EAAC;AACtE,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAEA,eAAa;AACpB,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;;AAED,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAEJ,SAAO,GAAGK,MAAI,GAAGR,eAAa;AACrC,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAEG,SAAO,GAAGJ,MAAI,GAAGE,cAAY;AACpC,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;QACnB,KAAK,EAAEE,SAAO,GAAGM,aAAW;AAC5B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,cAAc;QACpB,KAAK,EAAEN,SAAO,GAAGM,aAAW;AAC5B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;QACnB,KAAK,EAAEN,SAAO,GAAGM,aAAW;AAC5B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,YAAY;QAClB,KAAK,EAAEN,SAAO,GAAGM,aAAW;AAC5B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAEN,SAAO,GAAGM,aAAW,GAAGT,eAAa;AAC5C,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAEG,SAAO,GAAGJ,MAAI,GAAGE,cAAY;AACpC,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;;AAED,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAEC,WAAS,GAAGM,MAAI,GAAGR,eAAa;AACvC,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAEE,WAAS,GAAGH,MAAI,GAAGK,qBAAmB;AAC7C,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAEF,WAAS,GAAGH,MAAI,GAAGE,cAAY;AACtC,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,cAAc;QACpB,KAAK,EAAEC,WAAS,GAAGO,aAAW;AAC9B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;QACnB,KAAK,EAAEP,WAAS,GAAGO,aAAW;AAC9B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,YAAY;QAClB,KAAK,EAAEP,WAAS,GAAGO,aAAW;AAC9B,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAEP,WAAS,GAAGO,aAAW,GAAGT,eAAa;AAC9C,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAEE,WAAS,GAAGH,MAAI,GAAGK,qBAAmB;AAC7C,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAEF,WAAS,GAAGH,MAAI,GAAGE,cAAY;AACtC,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AAED,IAAA,EAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAEM,eAAa,EAAC;AAC7D,IAAA,EAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAEA,eAAa,EAAE,KAAK,EAAE,IAAI,EAAC;AACxE,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,YAAY;QAClB,KAAK,EAAEC,MAAI,GAAGR,eAAa;AAC3B,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAEU,SAAO;AACb,QAAA,KAAK,EAAEP,SAAO,GAAGJ,MAAI,GAAGE,cAAY;AACpC,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAEC,WAAS,GAAGH,MAAI,GAAGK,qBAAmB;AAC7C,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAEF,WAAS,GAAGH,MAAI,GAAGE,cAAY;AACtC,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAEM,eAAa,EAAE,KAAK,EAAE,IAAI,EAAC;AACjE,IAAA;AACE,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,KAAK,EAAEA,eAAa;AACpB,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAEC,MAAI,GAAGR,eAAa;AAC3B,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;CACO;AAcH,MAAM,oBAAoB,GAAoB;AACnD,IAAA,EAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAC;AACxE,IAAA;AACE,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,EAAE,EAAE,MAAM;AACV,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,gBAAgB,EAAE,IAAI;AACtB,QAAA,gBAAgB,EAAE,IAAI;AACvB,KAAA;AACD,IAAA,EAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAC;AACtD,IAAA;AACE,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,EAAE,EAAE,QAAQ;AACZ,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,0BAA0B;AAChC,QAAA,eAAe,EAAE,IAAI;AACtB,KAAA;AACD,IAAA,EAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAC;AAC7E,IAAA;AACE,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,gBAAgB,EAAE,IAAI;AACvB,KAAA;AACD,IAAA;AACE,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,EAAE,EAAE,QAAQ;AACZ,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,eAAe,EAAE,IAAI;AACtB,KAAA;AACD,IAAA,EAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAC;AACpE,IAAA,EAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAC;;AAE5E,IAAA;AACE,QAAA,SAAS,EAAE,IAAI;QACf,EAAE,EAAER,YAAM,CAAC,KAAK;AAChB,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,eAAe,EAAE,IAAI;AACtB,KAAA;CACO;;ACzoBV;AACM,MAAO,YAAa,SAAQ,KAAK,CAAA;IAWrC,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,OAAO,CAAC,SAAS,EAAE,EAAE;AACrB,aAAA,OAAO,CAAC,aAAa,EAAE,EAAE;AACzB,aAAA,OAAO,CAAC,gBAAgB,EAAE,EAAE;AAC5B,aAAA,OAAO,CAAC,oBAAoB,EAAE,EAAE;AAChC,aAAA,OAAO,CAAC,SAAS,EAAE,EAAE;AACrB,aAAA,OAAO,CAAC,gBAAgB,EAAE,EAAE;AAC5B,aAAA,OAAO,CAAC,YAAY,EAAE,EAAE;AACxB,aAAA,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;;IAG1B,GAAG,GAAA;AACD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAChD,QAAA,IAAI,IAAI,GAAG,GAAG,EAAE;AACd,YAAA,OAAO,SAAS;;QAElB,MAAM,GAAG,GACP,kCAAkC;AAClC,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YAClE,GAAG;YACH,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG;;IAG9D,aAAa,GAAA;AACX,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAChD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC;;IAGrB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,KAAK;;aACZ,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,eAAe,EAAE;AAClD,YAAA,OAAO,IAAI;;aACN;AACL,YAAA,OAAO,IAAI;;;IAIf,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC;;AAE3C,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,EAAE;AAClC,QAAA,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACzB,YAAA,OAAO,IAAI;;;AAGb,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;QAC3B,QAAQ,IAAI;YACV,KAAKmB,WAAK,CAAC,UAAU;YACrB,KAAKA,WAAK,CAAC,aAAa;YACxB,KAAKA,WAAK,CAAC,YAAY;YACvB,KAAKA,WAAK,CAAC,UAAU;YACrB,KAAKA,WAAK,CAAC,WAAW;YACtB,KAAKA,WAAK,CAAC,aAAa;YACxB,KAAKA,WAAK,CAAC,MAAM;YACjB,KAAKA,WAAK,CAAC,UAAU;YACrB,KAAKA,WAAK,CAAC,sBAAsB;AAC/B,gBAAA,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;;AAG/B,QAAA,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;;AAE7B;;;AAGG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAChC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;AAE/B;;;;;AAKG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QACrC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;AAE/B;;;AAGG;IACH,KAAK,GAAA;AACH,QAAA,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;;AAE5D,QAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;AACvB,QAAA,OAAO,EAAE;;AAEZ;AAED;;;AAGG;AACG,MAAO,gBAAiB,SAAQ,YAAY,CAAA;IAChD,aAAa,GAAA;AACX,QAAA,MAAM,OAAO,GAAGC,mBAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QACpD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;;AAEnC;AAED;;;AAGG;AACG,MAAO,aAAc,SAAQ,YAAY,CAAA;IAC7C,aAAa,GAAA;QACX,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE;AAChC,QAAA,IAAI,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE;AAC3B,QAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;AACvB,YAAA,IAAI,EAAE;;AAER,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC;;AAEtB;AAED;AACM,MAAO,gBAAiB,SAAQ,YAAY,CAAA;AAEhD;;;;;AAKG;AACH,IAAA,WAAA,CAAY,IAAW,EAAE,KAAa,EAAE,IAAY,EAAA;QAClD,KAAK,CAAC,IAAI,EAAE,CAAA,aAAA,EAAgB,KAAK,CAAE,CAAA,EAAE,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAEpB;;;AAGG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;AACpB,QAAA,OAAOvB,YAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK;;IAGlE,QAAQ,GAAA;AACN,QAAA,OAAO,MAAM;;AAEhB;AAED,MAAM,cAAc,GAAG,cAAc;AAErC;AACM,MAAO,gBAAiB,SAAQ,YAAY,CAAA;AAChD;;;;AAIG;IACH,WAAY,CAAA,IAAW,EAAE,SAAiB,EAAA;AACxC,QAAA,KAAK,CAAC,IAAI,EAAE,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAE,KAAK,CAAC,YAAY,CAAC;;AAEnE;;;AAGG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;AACpB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QACrE,MAAM,UAAU,GAAGA,YAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;QACpD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAChD,QAAA,OAAOA,YAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,UAAU;;IAGlE,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;IAGvB,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI;;AAE5B;;AClMD;AASA,MAAMW,eAAa,GAAG,KAAK,CAAC,aAAa;AACzC,MAAMI,qBAAmB,GAAG,KAAK,CAAC,mBAAmB;AAErD;;AAEG;AACG,SAAU,eAAe,CAC7B,EAAqB,EACrB,EAAS,EACT,OAAmB,EACnB,QAAiB,EACjB,UAAmB,EAAA;IAEnB,IAAI,aAAa,GAAG,KAAK;IACzB,IAAI,iBAAiB,GAAG,UAAU;AAClC,IAAA,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,GAAGJ,eAAa;AAC7C,IAAA,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE;;QAE7B,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,IAAI,IAAII,qBAAmB,GAAG,KAAK,CAAC,gBAAgB,CAAC,EAAE;gBACzD,iBAAiB,GAAG,IAAI;;AACnB,iBAAA,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE;gBACpC,aAAa,GAAG,IAAI;gBACpB,iBAAiB,GAAG,IAAI;;;;SAGvB,IAAI,UAAU,EAAE;QACrB,aAAa,GAAG,IAAI;QACpB,IAAI,GAAGA,qBAAmB;;;IAG5B,MAAM,MAAM,GAAG;AACb,UAAE,MAAM,CAAC,OAAO,CAAC,YAAY;AAC7B,UAAE,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACtC,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAoB;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,CAAC;AACrD,IAAA,MAAM,IAAI,GACR,iBAAiB,IAAI,CAAC;UAClB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;UAChC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;IACvC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;QACzB,OAAO,SAAS,CAAC;;IAEnB,IAAI,aAAa,EAAE;AACjB,QAAA,OAAO,IAAI,aAAa,CACtB,EAAE,EACF,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,OAAO,CAAC,YAAY,EACpB,EAAE,EACF,OAAO,CACR;;SACI;QACL,IAAI,IAAIJ,eAAa;AACrB,QAAA,OAAO,IAAI,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC;;AAEzE;AAEA,MAAM,WAAW,GAAG,aAAa;AACjC,MAAM,SAAS,GAAG,WAAW;AAE7B;AACM,MAAO,YAAa,SAAQ,YAAY,CAAA;AAO5C,IAAA,WAAA,CACE,WAAyB,EACzB,UAAuB,EACvB,QAAqB,EAAA;AAErB,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC3E,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAE1B,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;;AAExC,IAAA,WAAW,CAAC,MAAe,EAAA;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC;;IAE7C,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;;IAEzC,GAAG,GAAA;AACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;;IAE/B,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;;IAEpC,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;;AAE1C;AAED;;;AAGG;AACa,SAAA,gBAAgB,CAC9B,EAAgB,EAChB,OAAmB,EAAA;AAEnB,IAAA,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE;AACzB,IAAA,IAAI,IAAI,KAAK,YAAY,EAAE;AACzB,QAAA,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC;;AAE3D,IAAA,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;AACvB,IAAA,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;AACpB,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAoB;AAC7C,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,CAAC;AACrD,IAAA,IAAI,UAAU;AACd,IAAA,IAAI,QAAQ;AACZ,IAAA,IAAI,IAAI,KAAK,kBAAkB,EAAE;AAC/B,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE;YAC5B,UAAU,GAAG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;;;AAE1D,SAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;YAC3B,QAAQ,GAAG,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC;;;SAErD;AACL,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;YAC1B,UAAU,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC;;AAE7D,QAAA,IACE,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;AACjB,YAAA,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAKR,YAAM,CAAC,KAAK,CAAC,EACxD;YACA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;gBAC3B,QAAQ,GAAG,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC;;;;IAI9D,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC;;AAEtD,IAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AACtB,IAAA,OAAO,GAAG;AACZ;AAEA;;AAEG;AACH,SAAS,cAAc,CACrB,EAAS,EACT,IAAU,EACV,IAAY,EACZ,OAAmB,EAAA;AAEnB,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAoB;AAC7C,IAAA,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;IACvB,OAAO,IAAI,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC;AAC7E;AAEM,MAAO,kBAAmB,SAAQ,aAAa,CAAA;IAInD,WACE,CAAA,IAAW,EACX,IAAY,EACZ,IAAY,EACZ,SAAe,EACf,QAAkB,EAAA;AAElB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;AAC5C,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,EAAE;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAE3B;AAED;;;;;AAKG;SACa,iCAAiC,CAC/C,EAAgB,EAChB,EAAS,EACT,OAAmB,EAAA;AAEnB,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAoB;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;AAClD,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC;AAC5D,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,cAAc,EAAE;IAClD,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI;;IAEb,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAChC,EAAE,EACF,EAAE,CAAC,OAAO,EAAE,EACZ,EAAE,CAAC,QAAQ,EAAE,EACb,kBAAkB,EAClB,QAAQ,CACT;AACD,IAAA,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK;AACpB,IAAA,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW;AAChC,IAAA,OAAO,GAAG;AACZ;;AC9NA;AAOA,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACvE,MAAM,UAAU,GAAG;IACjB,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,WAAW;IACX,WAAW;IACX,SAAS;CACV;AACD,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACpE,MAAM,KAAK,GAAG,cAAc;AAE5B,SAAS,kBAAkB,CAAC,IAAY,EAAA;IACtC,IAAI,IAAI,GAAG,CAAC;AAAE,QAAA,OAAO,KAAK;SACrB,IAAI,IAAI,GAAG,EAAE;AAAE,QAAA,OAAO,WAAW;SACjC,IAAI,IAAI,GAAG,EAAE;AAAE,QAAA,OAAO,gBAAgB;SACtC,IAAI,IAAI,GAAG,EAAE;AAAE,QAAA,OAAO,UAAU;AACrC,IAAA,OAAO,KAAK;AACd;AAEA;;AAEG;MACU,KAAK,CAAA;AAEhB;;;;AAIG;IACH,WAAY,CAAA,IAAY,EAAE,KAAa,EAAA;QACrC,IAAI,CAAC,CAAC,GAAGqB,WAAK,CAAC,IAAI,EAAE,KAAK,CAAC;;AAE7B;AACG;IACH,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI;;AAEpB;AACG;IACH,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK;;AAErB;AACG;IACH,YAAY,GAAA;AACV,QAAA,OAAOvB,WAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;;AAEtD;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,SAAS;;AAEzB;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI;;AAEpB;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO;;AAEvB;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ;;AAExB;;;AAGG;IACH,MAAM,CAAC,MAAe,EAAE,OAAoB,EAAA;;QAC1C,MAAM,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAN,MAAM,GAAID,YAAM,CAAC,aAAa,EAAE;AACzC,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;;AAE/B,QAAA,MAAM,cAAc,GAClB,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,GAAG;AAChE,QAAA,MAAM,cAAc,GAAG,MAAM,KAAK,IAAI;AACtC,QAAA,MAAM,SAAS,GAAGA,YAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC;QAC7D,MAAM,QAAQ,GAAG,cAAc,GAAG,UAAU,IAAI,cAAc,GAAG,UAAU,GAAG,aAAa,CAAC;QAC5F,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;QACnC,MAAM,QAAQ,GAAGA,YAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;AAChD,QAAA,MAAM,UAAU,GAAG,CAAA,EAAA,GAAAA,YAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,SAAS;QACvE,MAAM,WAAW,GAAGA,YAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;QACtD,MAAM,GAAG,GAAGA,YAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;QACzC,MAAM,KAAK,GAAGA,YAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7C,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;YACrC,MAAM,MAAM,GACV,CAAG,EAAA,QAAQ,IAAI,SAAS,CAAA,kBAAA,EAAqB,GAAG,CAAc,YAAA,CAAA;gBAC9D,CAAa,UAAA,EAAA,IAAI,CAAI,CAAA,EAAA,IAAI,CAAI,EAAA,CAAA;gBAC7B,CAAK,EAAA,EAAA,OAAO,CAAI,CAAA,EAAA,UAAU,CAAG,CAAA,CAAA;AAC7B,gBAAA,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE;AAChC,YAAA,IAAI,MAAM,KAAK,cAAc,EAAE;AAC7B,gBAAA,OAAOA,YAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC;;AAEzC,YAAA,OAAO,MAAM;;AAEf,QAAA,MAAM,OAAO,GAAG,eAAe,CAAC,CAAG,EAAA,IAAI,CAAK,GAAA,CAAA,EAAE,IAAI,EAAE,OAAO,CAAC;QAC5D,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;QAC1C,OAAO,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,KAAK,KAAK,GAAG,CAAA,EAAA,EAAK,OAAO,CAAI,CAAA,EAAA,UAAU,IAAI,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAI,CAAA,EAAA,WAAW,IAAI,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE;;AAExH;AAED;AACM,MAAO,UAAW,SAAQ,KAAK,CAAA;AAGnC;;;;;AAKG;AACH,IAAA,WAAA,CAAY,IAAW,EAAE,KAAa,EAAE,MAAc,EAAE,OAAmB,EAAA;QACzE,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;AAClC,QAAA,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,EAAE;AAClC,QAAA,KAAK,CAAC,IAAI,EAAE,CAAA,MAAA,EAAS,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,KAAK,CAAC,KAAK,CAAC;AACvD,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;AAExB;;AAEG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;;AAEjD;;ACtID,MAAM,OAAO,GAAG;AACd,IAAA,EAAE,EAAE;AACF,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,KAAK,EAAE;YACL,EAAE;YACF,gBAAgB;YAChB,OAAO;YACP,QAAQ;YACR,UAAU;YACV,UAAU;YACV,YAAY;YACZ,SAAS;AACV,SAAA;AACF,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE;YACL,EAAE;YACF,QAAQ;YACR,UAAU;YACV,aAAa;YACb,SAAS;YACT,MAAM;YACN,SAAS;YACT,WAAW;AACZ,SAAA;AACF,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,KAAK,EAAE;YACL,EAAE;YACF,QAAQ;YACR,SAAS;YACT,SAAS;YACT,SAAS;YACT,KAAK;YACL,OAAO;YACP,SAAS;AACV,SAAA;AACF,KAAA;CACO;AAEV,SAAS,QAAQ,CAAC,OAAe,EAAA;IAC/B,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,EAAE;AAC/B,QAAA,MAAM,IAAI,UAAU,CAAC,oBAAoB,OAAO,CAAA,CAAE,CAAC;;AAEvD;AAEA,SAAS,QAAQ,CAAC,OAAe,EAAA;AAC/B,IAAA,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;AACzD,IAAA,MAAM,eAAe,GAAW,OAAO,GAAG,CAAC,IAAI,CAAC;AAChD,IAAA,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC;AACnC;AAEA,SAAS,aAAa,CAAC,OAAe,EAAA;IACpC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAa,QAAQ,CAAC,OAAO,CAAC;AAEjE,IAAA,MAAM,YAAY,GAAW,OAAO,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM;AAC3D,IAAA,IAAI,GAAG,GAAG,CAAA,SAAA,EAAY,OAAO,CAAI,CAAA,EAAA,YAAY,EAAE;IAE/C,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;AACnC,QAAA,MAAM,IAAI,GAAY,eAAe,KAAK,CAAC;AAC3C,QAAA,MAAM,QAAQ,GAAW,IAAI,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC;AAC3D,QAAA,MAAM,QAAQ,GAAW,QAAQ,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO;AAC1D,QAAA,GAAG,IAAI,CAAc,WAAA,EAAA,QAAQ,CAAI,CAAA,EAAA,QAAQ,EAAE;QAC3C,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,OAAO,GAAW,eAAe,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM;AAC9D,YAAA,GAAG,IAAI,CAAQ,KAAA,EAAA,eAAe,CAAI,CAAA,EAAA,OAAO,EAAE;;;IAG/C,OAAO,GAAG,GAAG,cAAc;AAC7B;AAEA;AACA;AAEA,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC;AACxE,MAAM,IAAI,GAAG;IACX,EAAE;IACF,OAAO;IACP,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,UAAU;IACV,UAAU;IACV,WAAW;IACX,WAAW;CACZ;AAED,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,UAAU,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK;AACtC,MAAM,OAAO,GAAG,YAAY;AAC5B,MAAM,GAAG,GAAG,MAAM;AAClB,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACpC,MAAM,IAAI,GAAG,QAAQ;AAErB,SAAS,aAAa,CAAC,OAAe,EAAA;IACpC,MAAM,GAAG,GAAW,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC5C,IAAA,MAAM,GAAG,GAAW,OAAO,GAAG,EAAE;IAChC,IAAI,GAAG,GAAG,UAAU;AACpB,IAAA,IAAI,OAAO,KAAK,EAAE,EAAE;AAClB,QAAA,GAAG,IAAI,QAAQ,GAAG,IAAI;;AACjB,SAAA,IAAI,OAAO,KAAK,EAAE,EAAE;AACzB,QAAA,GAAG,IAAI,UAAU,GAAG,IAAI;;SACnB,IAAI,EAAE,GAAG,OAAO,IAAI,OAAO,GAAG,EAAE,EAAE;QACvC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI;;AACxB,SAAA,IAAI,OAAO,GAAG,CAAC,EAAE;AACtB,QAAA,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAChB,IAAI,GAAG,EAAE;YACP,GAAG,IAAI,GAAG;AACV,YAAA,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI;;;AAGlC,IAAA,IAAI,OAAO,GAAG,CAAC,EAAE;AACf,QAAA,IAAI,OAAO,GAAG,EAAE,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,EAAE;AACpD,YAAA,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;;AAElB,QAAA,IAAI,OAAO,GAAG,EAAE,EAAE;YAChB,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG;;aAC/B;AACL,YAAA,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG;;;AAEnB,SAAA,IAAI,OAAO,KAAK,CAAC,EAAE;AACxB,QAAA,GAAG,IAAI,QAAQ,GAAG,GAAG;;SAChB;;AAEL,QAAA,GAAG,IAAI,UAAU,GAAG,GAAG;;AAEzB,IAAA,IAAI,OAAO,GAAG,CAAC,EAAE;AACf,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,GAAG,IAAI,WAAW;QAClB,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC7C,QAAA,MAAM,IAAI,GAAW,OAAO,GAAG,CAAC;AAChC,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG;;AACnC,aAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACtB,GAAG,IAAI,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;;aACnC;;YAEL,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG;;QAEpC,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;gBAC5B,GAAG,IAAI,IAAI;;AACN,iBAAA,IAAI,IAAI,KAAK,CAAC,EAAE;gBACrB,GAAG,IAAI,IAAI;;iBACN;gBACL,GAAG,IAAI,IAAI;;AAEb,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE;gBACZ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG;;AAChC,iBAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACrB,gBAAA,GAAG,IAAI,QAAQ,GAAG,GAAG;;iBAChB;;AAEL,gBAAA,GAAG,IAAI,UAAU,GAAG,GAAG;;;;IAI7B,GAAG,IAAI,WAAW;AAClB,IAAA,OAAO,GAAG,CAAC,SAAS,EAAE;AACxB;AAEA;AACM,MAAO,SAAU,SAAQ,KAAK,CAAA;AAMlC;;;AAGG;IACH,WAAY,CAAA,IAAW,EAAE,OAAe,EAAA;QACtC,KAAK,CAAC,IAAI,EAAE,CAAQ,KAAA,EAAA,OAAO,CAAE,CAAA,EAAE,KAAK,CAAC,UAAU,CAAC;QAChD,QAAQ,CAAC,OAAO,CAAC;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;;AAGrB;;;;;;;AAOG;IACH,MAAM,CAAC,IAAI,GAAG,IAAI,EAAA;QAChB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,UAAU,EAAE;YACxC,IAAI,GAAG,IAAI;;AAEb,QAAA,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,GAAa,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAChE,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAgB,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAClC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;QACnD,MAAM,KAAK,GACT,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK;AAChE,QAAA,OAAO,CAAC,aAAa,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,EAAE,SAAS,EAAE;;AAEzD;;AAEG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,MAAM,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAN,MAAM,GAAIA,YAAM,CAAC,aAAa,EAAE;AACzC,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;;AAE/B,QAAA,MAAM,cAAc,GAClB,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,GAAG;AAChE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;QACtB,MAAM,GAAG,GAAG,cAAc,GAAGE,eAAS,CAAC,IAAI,CAAC,GAAGF,YAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3E,QAAA,OAAO,GAAG,GAAG,GAAG,GAAGA,YAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;;AAE9D;;;AAGG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;QACzB,QACEA,YAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;YAC9B,GAAG;AACH,YAAAA,YAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;YAC7B,GAAG;YACH,IAAI,CAAC,IAAI;;AAGb;;;;;AAKG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,KAAK;AACrD,QAAA,IAAI,SAAiB;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI;AACzB,QAAA,IAAI,OAAO,IAAI,EAAE,EAAE;AACjB,YAAA,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,CAAC;;AACzB,aAAA,IAAI,OAAO,IAAI,EAAE,EAAE;;AAExB,YAAA,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,EAAE;;aAC3B;;AAEL,YAAA,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,EAAE;;AAElC,QAAA,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;;IAGxC,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,KAAK,CAAC;AACvC,QAAA,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;;IAGrD,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;;AAE7B;;;;AAIG;AACH,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,MAAM,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAN,MAAM,GAAIA,YAAM,CAAC,aAAa,EAAE;AACzC,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;;QAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,cAAc;QAC7D,MAAM,GAAG,GAAG,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1E,QAAA,IAAI,MAAM,KAAK,cAAc,EAAE;AAC7B,YAAA,OAAOA,YAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC;;AAEtC,QAAA,OAAO,GAAG;;IAGZ,GAAG,GAAA;AACD,QAAA,OAAO,CAA+B,4BAAA,EAAA,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,EAAE;;AAEpF;;ACrSD;AACgB,SAAA,gBAAgB,CAAC,MAAgB,EAAE,MAAe,EAAA;AAChE,IAAA,MAAM,OAAO,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAN,MAAM,GAAIA,YAAM,CAAC,aAAa,EAAE;AAChD,IAAA,IAAI,IAAI,GAAGA,YAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AAC7C,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,QAAA,MAAM,MAAM,GAAG,OAAO,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG;AAC3C,QAAA,IAAI,IAAI,MAAM,GAAGA,YAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;;IAErD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAC9B,IAAA,MAAM,GAAG,GAAGA,YAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI;AAC3D,IAAA,OAAO,GAAG,CAAC,SAAS,EAAE;AACxB;;ACbe,MAAM,QAAQ,SAAS,GAAG,CAAC;AAC1C,CAAC,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC3B,EAAE,KAAK,EAAE;;AAET,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE;AACjD,GAAG,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC;AACnE;;AAEA,EAAE,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAClE,GAAG,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC;AAClE;;AAEA;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;AAChC,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB;AAC1D,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;AACtC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE;AACxB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE;AAC3B,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;AAChB;;AAEA;AACA,CAAC,cAAc,CAAC,KAAK,EAAE;AACvB,EAAE,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;AAC7C,GAAG;AACH;;AAEA,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE;AACnC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;AACnC;AACA;;AAEA,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE;AAC7B,EAAE,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AACpE,GAAG,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;AAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;AACpC;;AAEA,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1B;;AAEA,EAAE,OAAO,KAAK;AACd;;AAEA,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,EAAE;AAClC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AAClD,EAAE,IAAI,OAAO,KAAK,KAAK,EAAE;AACzB,GAAG,OAAO,IAAI,CAAC,KAAK;AACpB;AACA;;AAEA,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1B,EAAE,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;AACzE;;AAEA,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE;AACnB,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;;AAE7B,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC;AACtC;;AAEA,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE;AAClB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,KAAK,EAAE;;AAEd,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;AAClC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;AACjB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK;AAC7B,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE;AACzB;AACA;;AAEA,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1B,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;AAC3B,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AACtB;;AAEA,CAAC,EAAE,iBAAiB,GAAG;AACvB,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI;AAC5B,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;AACrD,IAAI,IAAI,OAAO,KAAK,KAAK,EAAE;AAC3B,KAAK,MAAM,IAAI;AACf;AACA;AACA;;AAEA,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACjC,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI;AAC5B,GAAG,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;AACpD,GAAG,IAAI,OAAO,KAAK,KAAK,EAAE;AAC1B,IAAI,MAAM,IAAI;AACd;AACA;AACA;;AAEA,CAAC,GAAG,CAAC,GAAG,EAAE;AACV,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3B,GAAG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;;AAEnC,GAAG,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC;AACvC;;AAEA,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC9B,GAAG,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE;AACnD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC;AACjC,IAAI,OAAO,IAAI,CAAC,KAAK;AACrB;AACA;AACA;;AAEA,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE;AAC9C,EAAE,MAAM,MAAM;AACd,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,CAAC,iBAAiB;AACpE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM;AACvB,IAAI,SAAS;AACb,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3B,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;AACvB,IAAI,KAAK;AACT,IAAI;AACJ,IAAI,CAAC;AACL,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClC;;AAEA,EAAE,OAAO,IAAI;AACb;;AAEA,CAAC,GAAG,CAAC,GAAG,EAAE;AACV,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1D;;AAEA,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC9B,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D;;AAEA,EAAE,OAAO,KAAK;AACd;;AAEA,CAAC,IAAI,CAAC,GAAG,EAAE;AACX,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3B,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;AACrC;;AAEA,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC9B,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;AACxC;AACA;;AAEA,CAAC,MAAM,CAAC,GAAG,EAAE;AACb,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AACxC,EAAE,IAAI,OAAO,EAAE;AACf,GAAG,IAAI,CAAC,KAAK,EAAE;AACf;;AAEA,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO;AAC7C;;AAEA,CAAC,KAAK,GAAG;AACT,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AACpB,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACvB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;AAChB;;AAEA,CAAC,MAAM,CAAC,OAAO,EAAE;AACjB,EAAE,IAAI,EAAE,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE;AACjC,GAAG,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC;AACnE;;AAEA,EAAE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7C,EAAE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO;AAC5C,EAAE,IAAI,WAAW,GAAG,CAAC,EAAE;AACvB,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AAC9B,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE;AAC5B,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM;AAC5B,GAAG,MAAM;AACT,GAAG,IAAI,WAAW,GAAG,CAAC,EAAE;AACxB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACpD;;AAEA,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpD,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE;AACzB,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;AACjB;;AAEA,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO;AACxB;;AAEA,CAAC,EAAE,IAAI,GAAG;AACV,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;AAC5B,GAAG,MAAM,GAAG;AACZ;AACA;;AAEA,CAAC,EAAE,MAAM,GAAG;AACZ,EAAE,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;AAChC,GAAG,MAAM,KAAK;AACd;AACA;;AAEA,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG;AACvB,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACjC,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI;AAC5B,GAAG,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;AACpD,GAAG,IAAI,OAAO,KAAK,KAAK,EAAE;AAC1B,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;AAC5B;AACA;;AAEA,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI;AAC5B,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;AACrD,IAAI,IAAI,OAAO,KAAK,KAAK,EAAE;AAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;AAC7B;AACA;AACA;AACA;;AAEA,CAAC,EAAE,iBAAiB,GAAG;AACvB,EAAE,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;AAC9C,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI;AAC5B,GAAG,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;AACpD,GAAG,IAAI,OAAO,KAAK,KAAK,EAAE;AAC1B,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;AAC5B;AACA;;AAEA,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;AAC9C,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI;AAC5B,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;AACrD,IAAI,IAAI,OAAO,KAAK,KAAK,EAAE;AAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;AAC7B;AACA;AACA;AACA;;AAEA,CAAC,EAAE,gBAAgB,GAAG;AACtB,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AACvD,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;AAC3B;AACA;;AAEA,CAAC,IAAI,IAAI,GAAG;AACZ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;AAC5B;;AAEA,EAAE,IAAI,YAAY,GAAG,CAAC;AACtB,EAAE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;AAC1C,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7B,IAAI,YAAY,EAAE;AAClB;AACA;;AAEA,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;AAC1D;;AAEA,CAAC,OAAO,GAAG;AACX,EAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE;AAChC;;AAEA,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,GAAG,IAAI,EAAE;AAChD,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACtD,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AACxD;AACA;;AAEA,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,GAAG;AAC5B,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACrD;AACA;;AC1RA;;;;;;;;;;;;;;;;;;;AAmBG;AAEH;;;;;;;;;;AAUG;AAMH,MAAM,UAAU,GAAG,CAAC;AACpB,MAAM,OAAO,GAAG,CAAC;AACjB,MAAM,QAAQ,GAAG,CAAC;AAElB,SAAS,QAAQ,CAAC,KAAa,EAAA;IAC7B,MAAM,KAAK,GAAGC,WAAK,CAAC,YAAY,CAAC,KAAK,CAAC;IACvC,MAAM,MAAM,GAAGA,WAAK,CAAC,WAAW,CAAC,KAAK,CAAC;AACvC,IAAA,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;AACpB,QAAA,OAAO,QAAQ;;AACV,SAAA,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE;AAC3B,QAAA,OAAO,UAAU;;SACZ;AACL,QAAA,OAAO,OAAO;;AAElB;AA0BA;;AAEG;MACU,KAAK,CAAA;AAKhB;;;;AAIG;IACH,WAAY,CAAA,KAAa,EAAE,EAAW,EAAA;QACpC,KAAK,GAAG,CAAC,KAAK;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AAEjB,QAAA,MAAM,GAAG,GAAG,IAAIA,WAAK,CAAC,CAAC,EAAEE,YAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AAC/C,QAAA,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE;QACpB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;;AAG9B,QAAA,IAAI,CAAC,aAAa,GAAGF,WAAK,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,CAACA,WAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AAErB,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,GAAG,GAAG,CAAG,EAAA,IAAI,GAAG,KAAK,CAAA,EAAG,IAAI,CAAA,CAAE;AAClC,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC;;aAC1B;YACL,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC;;AAGjC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,MAAM,IAAI,KAAK,CACb,CAAA,yBAAA,EAA4B,GAAG,CAAmB,gBAAA,EAAA,KAAK,CAAE,CAAA,CAC1D;;;AAIL;;;;AAIG;AACH,IAAA,GAAG,CAAC,EAAkB,EAAA;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM;;AAG/B;;;;;AAKG;IACH,SAAS,CAAC,EAAkB,EAAE,MAAe,EAAA;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3B,QAAA,OAAO,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;;AAGzC;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,EAAkB,EAAA;QACzB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI;;AAG9B;;;;;;;;AAQG;AACH,IAAA,IAAI,CAAC,MAAkC,EAAA;AACrC,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE;AACvE,gBAAA,MAAM,IAAI,UAAU,CAAC,0BAA0B,MAAM,CAAA,CAAE,CAAC;;AAE1D,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;AAC3B,aAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YACrC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACjC,YAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3B,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;iBAChB,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;gBACrC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,EAAE;AAC/C,oBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;gBAElC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;iBAC9B;;AAEL,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;;AAE7B,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM;AAC1B,YAAA,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC/D,gBAAA,MAAM,IAAI,SAAS,CACjB,CAAA,yBAAA,EAA4B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAE,CAAA,CACrD;;AAEH,YAAA,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;AAE7B,YAAA,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACpB,YAAA,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IACE,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,IAAI,KAAK,QAAQ;gBACxB,IAAI,KAAK,IAAI,GAAG,CAAC;AACjB,gBAAA,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EACrB;gBACA,MAAM,IAAI,UAAU,CAAC,CAAA,0BAAA,EAA6B,EAAE,CAAI,CAAA,EAAA,EAAE,CAAE,CAAA,CAAC;;AAE/D,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;;QAEzB,OAAO,IAAI,CAAC;;AAGN,IAAA,YAAY,CAAC,MAAsB,EAAA;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9C,QAAA,IAAI,GAAG,KAAK,EAAE,EAAE;YACd,OAAO,IAAI,CAAC;;QAEd,OAAO,IAAIA,WAAK,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,CAAC,CAAC;;AAGhD;;;AAGG;AACH,IAAA,cAAc,CAAC,MAAuB,EAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;;;;;AAK9B,YAAA,MAAM,EAAE,GAAG,CAAC,MAAM;AAClB,YAAA,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;AACrB,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;;iBACf;;;gBAGL,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;;;aAErB;YACL,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YACjC,IAAI,GAAG,EAAE;;;AAGP,gBAAA,MAAM,EAAE,GAAG,CAAC,GAAG;AACf,gBAAA,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;AACrB,oBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;;qBACf;oBACL,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;;;iBAErB;;gBAEL,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;;;;AAK1B;;;AAGG;IACH,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,aAAa;;AAG3B;;AAEG;IACH,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAG3B,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;;AAGlB;;;AAGG;AACH,IAAA,MAAM,CAAC,EAAkB,EAAA;AACvB,QAAA,MAAM,GAAG,GACP,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,GAAGA,WAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;AAElE,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACd,YAAA,MAAM,IAAI,SAAS,CAAC,sBAAsB,EAAE,CAAA,CAAE,CAAC;;;AAIjD,QAAA,MAAM,QAAQ,GAAGA,WAAK,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAEzC,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAChC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;AAEhC,QAAA,MAAMwB,OAAK,GAAG,IAAIxB,WAAK,CAAC,QAAQ,CAAC;AACjC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;AAE7B,YAAA,OAAO,EAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,SAAEwB,OAAK,EAAC;;AAE7C,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,OAAO,EAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,SAAEA,OAAK,EAAC;;QAGxE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO;AACL,YAAA,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxC,YAAA,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;mBACrBA,OAAK;SACN;;AAEJ;AAED;;;;;AAKG;AACU,MAAA,QAAQ,GAAsB;IACzC,UAAU;IACV,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,UAAU;IACV,SAAS;IACT,QAAQ;IACR,OAAO;IACP,IAAI;IACJ,WAAW;IACX,OAAO;IACP,WAAW;IACX,SAAS;IACT,UAAU;IACV,SAAS;IACT,UAAU;IACV,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,UAAU;IACV,MAAM;IACN,OAAO;IACP,YAAY;IACZ,UAAU;IACV,OAAO;IACP,cAAc;IACd,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,SAAS;IACT,OAAO;IACP,OAAO;IACP,SAAS;IACT,YAAY;IACZ,OAAO;IACP,OAAO;IACP,SAAS;IACT,YAAY;IACZ,SAAS;IACT,UAAU;IACV,WAAW;IACX,UAAU;;AAGZ;AACA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB;AAC3C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC3C,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC;AACzB,IAAA,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACzB;AAEA;AACA,MAAM,OAAO,GAAG;AACd,IAAA,EAAE;AACF,IAAA,EAAE;AACF,IAAA,EAAE;AACF,IAAA,EAAE;AACF,IAAA,EAAE;AACF,IAAA,EAAE;AACF,IAAA,EAAE;CACH;AAED;;;AAGG;AACH,SAAS,aAAa,CAAC,EAAU,EAAA;AAC/B,IAAA,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AAC9B;AAEA;;;;AAIG;AACH,SAAS,CAAC,CAAC,CAAS,EAAA;IAClB,OAAO,CAAC,CAAC;AACX;AAEA,MAAM,EAAE,GAAG,cAAc,CAAC;AAC1B,MAAM,EAAE,GAAG,YAAY,CAAC;AAExB,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AAC/C,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,OAAO,GAAG,UAAU;AAC1B,MAAM,SAAS,GAAG,6BAA6B,CAAC;AAChD,MAAM,OAAO,GAAG,YAAY,CAAC;AAC7B,MAAM,OAAO,GAAG,aAAa;AAC7B,MAAM,OAAO,GAAG,SAAS,CAAC;AAE1B;;;;;AAKG;AACH,SAASC,OAAK,CAAC,KAAa,EAAE,IAAY,EAAA;IACxC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACpE;AAIA,MAAM,kBAAkB,GAA8B,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC;AACxE,MAAM,gBAAgB,GAA8B,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC;AACtE,MAAM,WAAW,GAA8B,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC;AACvE,MAAM,IAAI,GAAGA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACzB,MAAM,IAAI,GAAGA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACzB,MAAM,KAAK,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAC3B,MAAM,KAAK,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAC3B,MAAM,KAAK,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAE3B;;;;;AAKG;AACH,MAAM,KAAK,GAA8C;AACvD;AACmE;;IAEnE,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAC9B,IAAI,EACJ,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,EAAE,EACF,MAAM,EACN,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,CACN;AAED;AACoE;;AAEpE,IAAA,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAC/B,IAAI,EACJ,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,EAAE,EACF,MAAM,EACN,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,OAAO,EACPA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACb,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,CACN;AAED;AACuE;;IAEvE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAC7B,IAAI,EACJ,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,EAAE,EACF,OAAO,EACP,OAAO,EACP,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,CACN;AAED;AACuE;;AAEvE,IAAA,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAC7B,IAAI,EACJ,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,EAAE,EACF,MAAM,EACN,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,CAAC,CAAC,EAAE,CAAC,EACLA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACb,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,CACN;AAED;AACkE;;AAElE,IAAA,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAC5BA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EACZ,OAAO,EACP,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,CACN;AAED;AAC2D;;IAE3D,KAAK,EAAE,WAAW,CAAC,MAAM,CACvB,IAAI,EACJ,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,EAAE,EACF,OAAO,EACP,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,CACN;AAED;AACmE;;IAEnE,KAAK,EAAE,WAAW,CAAC,MAAM,CACvB,IAAI,EACJ,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,EAAE,EACF,SAAS,EACT,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,CACN;;AAGD;AACoE;;AAEpE,IAAA,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAC/B,IAAI,EACJ,SAAS,EACTA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACb,OAAO,EACPA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACb,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,CACN;AAED;AACoE;;IAEpE,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAC/B,IAAI,EACJ,SAAS,EACTA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACb,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,CACN;AAED;AACoE;;IAEpE,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAC/B,IAAI,EACJ,OAAO,EACP,OAAO,EACPA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACb,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,CACN;AAED;AACoE;;AAEpE,IAAA,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAEA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAE9D;AACkE;;IAElE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAACA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAEA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAEpE;AACmE;;IAEnE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAACA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAEA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAE7E;AACmE;;IAEnE,KAAK,EAAE,WAAW,CAAC,MAAM,CACvB,IAAI,EACJ,SAAS,EACTA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACb,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,CACN;AAED;AACoE;AACpE,IAAA,MAAM,EAAE,WAAW,CAAC,MAAM,CACxB,IAAI,EACJ,SAAS,EACTA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACb,OAAO,EACPA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACb,CAAC,CAAC,EAAE,CAAC,EACL,EAAE,EACF,CAAC,CAAC,EAAE,CAAC,EACL,KAAK,EACL,CAAC,CAAC,EAAE,CAAC,CACN;CACO;AAEV;AACoE;AACpE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;AAE5B;AACuE;AACvE;AACA,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AAE7B;AACuE;AACvE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;AAE5B;AACuE;AACvE;AACA,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B;AACuE;AACvE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AAE7B;AACoE;AACpE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;AAE5B,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAgB,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC;AAE9D;;;;;AAKG;AACa,SAAA,QAAQ,CAAC,KAAa,EAAE,EAAW,EAAA;AACjD,IAAA,MAAM,QAAQ,GAAG,CAAG,EAAA,KAAK,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;IACzC,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;AAC5B,QAAA,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;;AAEjC,IAAA,OAAO,KAAK;AACd;;ACpsBA;;AAEG;AACG,MAAO,WAAY,SAAQ,KAAK,CAAA;AAIpC;;;AAGG;IACH,WACE,CAAA,IAAW,EACX,MAAgB,EAChB,EAAE,GAAG,KAAK,EACV,GAAyB,GAAA,EAAE,EAAA;QAE3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACtE,YAAA,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC;;QAE5C,MAAM,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3C,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE;;AAEtB;;AAEG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;;IAG9C,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;;IAG9B,GAAG,GAAA;AACD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAChD,QAAA,IAAI,IAAI,GAAG,GAAG,EAAE;AACd,YAAA,OAAO,SAAS;;AAElB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;QAC/B,MAAM,GAAG,GACP,gCAAgC;AAChC,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YAClE,GAAG;AACH,YAAA,EAAE;AACJ,QAAA,OAAO,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG;;IAGtC,aAAa,GAAA;AACX,QAAA,MAAM,OAAO,GAAGH,mBAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QACpD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;;AAEnC;;ACvDD;;;;;;AAMG;AACa,SAAA,UAAU,CAAC,IAAY,EAAE,EAAW,EAAA;IAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AAChC,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAE;AACzC,IAAA,MAAM,MAAM,GAAGtB,WAAK,CAAC,UAAU,CAAC,IAAI,EAAEE,YAAM,CAAC,IAAI,EAAE,EAAE,CAAC;IACtD,MAAM,MAAM,GAAY,EAAE;AAC1B,IAAA,KAAK,IAAI,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;QACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAChB,YAAA,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;AACvE,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;;;AAGnB,IAAA,OAAO,MAAM;AACf;;ACvBA,MAAMwB,KAAG,GAAG,CAAC;AACb,MAAMC,KAAG,GAAG,CAAC;AACb,MAAMC,KAAG,GAAG,CAAC;AACb,MAAMC,KAAG,GAAG,CAAC;AAEb,MAAMC,OAAK,GAAG5B,YAAM,CAAC,KAAK;AAC1B,MAAM,KAAK,GAAGA,YAAM,CAAC,KAAK;AAE1B;;;;;;;;;AASG;AACG,SAAU,cAAc,CAAC,IAAY,EAAA;AACzC,IAAA,IAAI,IAAI,GAAG,IAAI,EAAE;AACf,QAAA,OAAO,IAAI;;IAEb,IAAI,SAAS,GAAG,IAAIF,WAAK,CAAC,EAAE,EAAE8B,OAAK,EAAE,IAAI,CAAC;AAC1C,IAAA,IAAI,SAAS,CAAC,MAAM,EAAE,KAAKF,KAAG,EAAE;QAC9B,SAAS,GAAG,IAAI5B,WAAK,CAAC,EAAE,EAAE8B,OAAK,EAAE,IAAI,CAAC;;AACjC,SAAA,IAAI,SAAS,CAAC,MAAM,EAAE,KAAKJ,KAAG,EAAE;QACrC,SAAS,GAAG,IAAI1B,WAAK,CAAC,EAAE,EAAE8B,OAAK,EAAE,IAAI,CAAC;;AAExC,IAAA,OAAO,SAAS;AAClB;AAEA;;;;AAIG;AACG,SAAU,gBAAgB,CAAC,IAAY,EAAA;AAC3C,IAAA,IAAI,IAAI,GAAG,IAAI,EAAE;AACf,QAAA,OAAO,IAAI;;AAEb,IAAA,IAAI,GAAG;IACP,MAAM,MAAM,GAAG,IAAI9B,WAAK,CAAC,EAAE,EAAE8B,OAAK,EAAE,IAAI,CAAC;AACzC,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE;AAC5B,IAAA,IAAI,IAAI,KAAKJ,KAAG,EAAE;QAChB,GAAG,GAAG,CAAC;;AACF,SAAA,IAAI,IAAI,KAAKG,KAAG,EAAE;QACvB,GAAG,GAAG,CAAC;;AACF,SAAA,IAAI,IAAI,GAAG,IAAI,EAAE;QACtB,GAAG,GAAG,CAAC;;AACF,SAAA,IAAI,IAAI,KAAKF,KAAG,EAAE;QACvB,GAAG,GAAG,CAAC;;SACF;QACL,GAAG,GAAG,CAAC;;IAET,OAAO,IAAI3B,WAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;AACpC;;ACpDA,MAAM,GAAG,GAAG,kBAAkB;AAE9B;AACM,MAAO,mBAAoB,SAAQ,YAAY,CAAA;AAEnD;;;;AAIG;IACH,WAAY,CAAA,IAAW,EAAE,aAAqB,EAAA;AAC5C,QAAA,KAAK,CACH,IAAI,EACJ,CAAG,EAAA,GAAG,IAAI,aAAa,CAAA,CAAE,EACzB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAC1C;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,IAAI,GAAG,CAA6D,0DAAA,EAAA,aAAa,EAAE;;IAG1F,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;AAEvB;;AAEG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;AACpB,QAAA,MAAM,UAAU,GAAGD,YAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;QAC7D,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAC/C,QAAA,OAAOA,YAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,SAAS;;AAEtD;;AAEG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;QACzB,OAAOA,YAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;;IAGpC,GAAG,GAAA;AACD,QAAA,OAAO,SAAS;;AAEnB;;AC9CD;;;;;;;;;;;;;;;;;;;AAmBG;AAoBH;AACA,SAAS,gBAAgB,CAAC,EAAS,EAAA;AACjC,IAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE;AAC9B;AAEA;AACA,SAAS,kBAAkB,CAAC,EAAS,EAAA;AACnC,IAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE;AAChC;AAEA;AACA,SAAS,aAAa,CAAC,EAAW,EAAA;IAChC,OAAO,EAAE,GAAG,gBAAgB,GAAG,kBAAkB;AACnD;AAEA;;;;AAIG;AACa,SAAA,iBAAiB,CAC/B,IAA2B,EAC3B,EAAY,EAAA;IAEZ,MAAM,EAAE,GAAGC,WAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAI,IAAc,GAAG,IAAIA,WAAK,CAAC,IAAI,CAAC;AAClE,IAAA,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;;IAEjC,IAAI,OAAO,EAAE,KAAK,WAAW,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC9D,QAAA,OAAO,MAAM;;IAEf,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACjD,IAAA,OAAO,QAAQ;AACjB;AAEA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AACvB,MAAMa,SAAO,GAAG,KAAK,CAAC,OAAO;AAC7B,MAAMC,qBAAmB,GAAG,KAAK,CAAC,mBAAmB;AACrD,MAAMC,kBAAgB,GAAG,KAAK,CAAC,gBAAgB;AAC/C,MAAMgB,YAAU,GAAG,KAAK,CAAC,UAAU;AACnC,MAAMC,iBAAe,GAAG,KAAK,CAAC,eAAe;AAC7C,MAAMC,gBAAc,GAAG,KAAK,CAAC,cAAc;AAC3C,MAAMjB,YAAU,GAAG,KAAK,CAAC,UAAU;AACnC,MAAMC,eAAa,GAAG,KAAK,CAAC,aAAa;AACzC,MAAMC,MAAI,GAAG,KAAK,CAAC,IAAI;AAEvB,MAAM,GAAG,GAAG,CAAC;AACb,MAAM,GAAG,GAAG,CAAC;AACb,MAAM,GAAG,GAAG,CAAC;AACb,MAAMU,KAAG,GAAG,CAAC;AACb,MAAMC,KAAG,GAAG,CAAC;AAEb,MAAMC,OAAK,GAAG5B,YAAM,CAAC,KAAK;AAC1B,MAAM,KAAK,GAAGA,YAAM,CAAC,KAAK;AAC1B,MAAM,EAAE,GAAGA,YAAM,CAAC,EAAE;AACpB,MAAMgC,SAAO,GAAGhC,YAAM,CAAC,OAAO;AAC9B,MAAM,MAAM,GAAGA,YAAM,CAAC,MAAM;AAC5B,MAAM,KAAK,GAAGA,YAAM,CAAC,KAAK;AAC1B,MAAM,MAAM,GAAGA,YAAM,CAAC,MAAM;AAC5B,MAAM,OAAO,GAAGA,YAAM,CAAC,OAAO;AAE9B,MAAM,eAAe,GAAG,EAAC,KAAK,EAAE,MAAM,EAAU;AAChD,MAAM,aAAa,GAAG,IAAI;AAE1B,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAyB,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC;AAEtE,MAAM,aAAa,GAAG;IACpB,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACG;AAEV;;;;;AAKG;AACG,SAAU,mBAAmB,CAAC,IAAY,EAAA;AAC9C,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,QAAA,MAAM,IAAI,SAAS,CAAC,oBAAoB,IAAI,CAAA,CAAE,CAAC;;SAC1C,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE;AACnC,QAAA,MAAM,IAAI,UAAU,CAAC,eAAe,IAAI,CAAA,qBAAA,CAAuB,CAAC;;IAElE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC,IAAI,MAAM,EAAE;AACV,QAAA,OAAO,MAAM;;IAGf,MAAM,EAAE,GAAG,IAAIF,WAAK,CAAC,CAAC,EAAEkC,SAAO,EAAE,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,IAAIlC,WAAK,CAAC,EAAE,EAAE8B,OAAK,EAAE,IAAI,CAAC;AAEzC,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B;IAC7C,SAAS,GAAG,CAAC,GAAG,MAAsB,EAAA;AACpC,QAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;YACvB,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB,YAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBAC3B,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAGZ,MAAI,EAAE;AAC5B,oBAAA,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;;qBACV;AACL,oBAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;;;iBAET;gBACL,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;;;;AAKxB,IAAA,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE;AAC9B,QAAA,MAAM,EAAE,GAAG,IAAIlB,WAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;AACtC,QAAA,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,CAAC,KAAK;AAAE,YAAA,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;QAC/B,IAAI,CAAC,CAAC,MAAM;AAAE,YAAA,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM;QACzC,GAAG,CAAC,EAAE,CAAC;;;AAIT,IAAA,GAAG,CAAC,IAAI,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,GAAGc,qBAAmB,CAAC,CAAC;;AAG/D,IAAA,MAAM,eAAe,GAAW,EAAE,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;IAC3D,GAAG,CACD,IAAI,YAAY,CACd,IAAId,WAAK,CAAC,eAAe,EAAEkC,SAAO,EAAE,IAAI,CAAC,EACzCb,WAAK,CAAC,aAAa,EACnBU,YAAU,CACX,CACF;;AAED,IAAA,GAAG,CACD,IAAI,YAAY,CACd,IAAI/B,WAAK,CAACA,WAAK,CAAC,aAAa,CAAC6B,KAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EACjDR,WAAK,CAAC,aAAa,EACnBW,iBAAe,CAChB,CACF;AACD,IAAA,MAAM,QAAQ,GAAGhC,WAAK,CAAC,WAAW,CAAC,IAAI;UACnC,IAAIA,WAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI;UACxB,IAAIA,WAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC;AAC/B,IAAA,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAEqB,WAAK,CAAC,YAAY,EAAEJ,eAAa,CAAC,CAAC;;;AAGlE,IAAA,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE;AAC7C,QAAA,MAAM,EAAE,GAAG,IAAIjB,WAAK,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;AAChD,QAAA,GAAG,CACD,IAAI,aAAa,CACf,EAAE,EACF,CAAa,UAAA,EAAA,OAAO,CAAU,QAAA,CAAA,EAC9BiB,eAAa,GAAGF,kBAAgB,EAChC;YACE,WAAW,EAAE,OAAO,GAAG,CAAC;AACxB,YAAA,KAAK,EAAE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;AAC9C,SAAA,CACF,CACF;;AAEH,IAAA,GAAG,CACD,IAAI,aAAa,CACf,IAAIf,WAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAC3BqB,WAAK,CAAC,gBAAgB,EACtBJ,eAAa,EACb,EAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAC,CACvC,CACF;IACD,GAAG,CACD,IAAI,gBAAgB,CAClB,IAAIjB,WAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAC1BqB,WAAK,CAAC,YAAY,EAClBU,YAAU,CACX,CACF;AACD,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE;AAC9B,IAAA,GAAG,CACD,IAAI,YAAY,CACd,IAAI/B,WAAK,CAACA,WAAK,CAAC,aAAa,CAAC6B,KAAG,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,EACnDR,WAAK,CAAC,gBAAgB,EACtBW,iBAAe,CAChB,EACD,IAAI,YAAY,CACd,IAAIhC,WAAK,CAACA,WAAK,CAAC,aAAa,CAAC6B,KAAG,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,EACnDR,WAAK,CAAC,cAAc,EACpBW,iBAAe,CAChB,EACD,IAAI,YAAY,CACd,IAAIhC,WAAK,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAC1DqB,WAAK,CAAC,aAAa,EACnBU,YAAU,CACX,CACF;AACD,IAAA,MAAM,YAAY,GAAG/B,WAAK,CAAC,aAAa,CAAC6B,KAAG,EAAE,SAAS,GAAG,EAAE,CAAC;AAC7D,IAAA,GAAG,CACD,IAAI,YAAY,CACd,IAAI7B,WAAK,CAAC,YAAY,GAAG,CAAC,CAAC,EAC3BqB,WAAK,CAAC,aAAa,EACnBW,iBAAe,CAChB,EACD,IAAI,YAAY,CACd,IAAIhC,WAAK,CAAC,YAAY,CAAC,EACvBqB,WAAK,CAAC,iBAAiB,EACvBW,iBAAe,CAChB,EACD,IAAI,YAAY,CACd,IAAIhC,WAAK,CAACA,WAAK,CAAC,aAAa,CAAC6B,KAAG,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,EAClDR,WAAK,CAAC,eAAe,EACrBW,iBAAe,CAChB,EACD,IAAI,YAAY;;AAEd,IAAA,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,KAAKH;AACzB,UAAE,MAAM,CAAC,UAAU,CAAC,GAAG;AACvB,UAAE,IAAI7B,WAAK,CAAC,EAAE,EAAE8B,OAAK,EAAE,IAAI,CAAC,EAC9BT,WAAK,CAAC,eAAe,EACrBU,YAAU,CACX,CACF;IACD,GAAG,CACD,IAAI,YAAY,CACd,IAAI/B,WAAK,CACPA,WAAK,CAAC,aAAa,CAAC6B,KAAG,EAAE,IAAI7B,WAAK,CAAC,CAAC,EAAEkC,SAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CACpE,EACDb,WAAK,CAAC,aAAa,EACnBJ,eAAa,EACb,EAAC,KAAK,EAAE,IAAI,EAAC,CACd,CACF;AAED,IAAA,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,EAAE;QAC3B,GAAG,CACD,IAAI,YAAY,CACd,IAAIjB,WAAK,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAC5BqB,WAAK,CAAC,eAAe,EACrBJ,eAAa,CACd,CACF;;AAGH,IAAA,IAAIjB,WAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QAC1B,GAAG,CACD,IAAI,YAAY,CACd,IAAIA,WAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAC3BqB,WAAK,CAAC,WAAW,EACjBJ,eAAa,EACb,EAAC,KAAK,EAAE,KAAK,EAAC,CACf,CACF;QACD,GAAG,CACD,IAAI,YAAY,CACd,IAAIjB,WAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAC3BqB,WAAK,CAAC,mBAAmB,EACzBJ,eAAa,EACb,EAAC,KAAK,EAAE,KAAK,EAAC,CACf,CACF;;AAGH,IAAA,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC;IACtC,IAAI,SAAS,EAAE;AACb,QAAA,GAAG,CAAC,IAAI,YAAY,CAAC,SAAS,EAAEI,WAAK,CAAC,WAAW,EAAEY,gBAAc,CAAC,CAAC;;AAGrE,IAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC;IAC7C,IAAI,cAAc,EAAE;AAClB,QAAA,GAAG,CACD,IAAI,YAAY,CACd,cAAc,EACdZ,WAAK,CAAC,aAAa,EACnBY,gBAAc,EACd,eAAe,CAChB,EACD,IAAI,YAAY,CACd,cAAc,CAAC,IAAI,EAAE,EACrBZ,WAAK,CAAC,cAAc,EACpBY,gBAAc,EACd,eAAe,CAChB,CACF;;AAGH,IAAA,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE;AACpC,QAAA,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE;AACvB,YAAA,IAAI,EAAE,GAAG,IAAIjC,WAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;AACpC,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,CAAC,eAAe,KAAK,GAAG,KAAK4B,KAAG,IAAI,GAAG,KAAKC,KAAG,CAAC,EAAE;AACrD,gBAAA,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;;iBAClB,IAAI,CAAC,CAAC,gBAAgB,IAAI,GAAG,KAAKD,KAAG,EAAE;gBAC5C,EAAE,GAAG,IAAI5B,WAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;iBACvB,IAAI,CAAC,CAAC,gBAAgB,IAAI,GAAG,KAAK6B,KAAG,EAAE;AAC5C,gBAAA,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;;AAEhB,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAGI,gBAAc,GAAGA,gBAAc,GAAGpB,SAAO;AAC/D,YAAA,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;AAC7C,YAAA,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE;AACpB,gBAAA,EAAE,CAAC,KAAK,GAAG,MAAM;;YAEnB,GAAG,CAAC,EAAE,CAAC;;;IAIX,IAAI,OAAO,GAAG,IAAIb,WAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC;AACxC,IAAA,IAAI,YAAY;AAChB,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK6B,KAAG,EAAE;QAC5B,OAAO,GAAG,IAAI7B,WAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC;AACpC,QAAA,YAAY,GAAG,EAAC,QAAQ,EAAE,IAAI,EAAC;;AAEjC,IAAA,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,EAAEqB,WAAK,CAAC,WAAW,EAAEU,YAAU,EAAE,YAAY,CAAC,CAAC;IAE3E,IAAI,KAAK,GAAG,IAAI/B,WAAK,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;AAClC,IAAA,IAAI,QAAQ,GAAGqB,WAAK,CAAC,SAAS;AAC9B,IAAA,IAAI,QAAQ;AACZ,IAAA,IAAI,KAAK,CAAC,MAAM,EAAE,KAAKQ,KAAG,EAAE;AAC1B,QAAA,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;AACpB,QAAA,QAAQ,GAAG,EAAC,QAAQ,EAAE,IAAI,EAAC;QAC3B,QAAQ,IAAI,aAAa;;AAE3B,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;AAC1B,IAAA,GAAG,CACD,IAAI,YAAY,CACd,IAAI7B,WAAK,CAACA,WAAK,CAAC,aAAa,CAAC6B,KAAG,EAAE,MAAM,CAAC,CAAC,EAC3CR,WAAK,CAAC,cAAc,EACpBW,iBAAe,CAChB,EACD,IAAI,YAAY,CACd,KAAK,CAAC,IAAI,EAAE,EACZX,WAAK,CAAC,cAAc,EACpBH,MAAI,GAAGF,YAAU,EACjB,QAAQ,CACT,EACD,IAAI,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAEA,YAAU,EAAE,QAAQ,CAAC,EACvD,IAAI,YAAY,CACd,IAAIhB,WAAK,CAACA,WAAK,CAAC,aAAa,CAAC6B,KAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAC/CR,WAAK,CAAC,eAAe,EACrBW,iBAAe,CAChB,CACF;IAED,MAAM,YAAY,GAAGhC,WAAK,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7C,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,EAAE,EAAE;QAClD,MAAM,SAAS,GAAGA,WAAK,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;QACjD,IACE,CAAC,KAAK,KAAK8B;AACT,cAAE9B,WAAK,CAAC,WAAW,CAACA,WAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC;AAC1D,cAAEA,WAAK,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAC9C;AACA,YAAA,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAIA,WAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/D,YAAA,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAIA,WAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;;AAC/D,aAAA,IAAI,KAAK,KAAKkC,SAAO,EAAE;AAC5B,YAAA,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAIlC,WAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;;;;;AAMnE,IAAA,KAAK,IAAI,KAAK,GAAGE,YAAM,CAAC,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,EAAE,EAAE;AAC7D,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;;;;QAI3B,IACE,SAAS,KAAKgC,SAAO;YACrB,SAAS,KAAKhC,YAAM,CAAC,QAAQ;YAC7B,SAAS,KAAK,KAAK,EACnB;YACA;;QAEF,IAAI,GAAG,GAAG,IAAIF,WAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC;AACpC,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE;QACxB,IAAI,GAAG,KAAK4B,KAAG,IAAI,GAAG,KAAKC,KAAG,EAAE;AAC9B,YAAA,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;;QAG3B,MAAM,aAAa,GAAG7B,WAAK,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC;QACzD,MAAM,EAAE,GAAG,IAAI,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC;;IAGT,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACnC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAU;AAC3C,IAAA,GAAG,CAAC,IAAI,YAAY,CAAC,WAAW,EAAEqB,WAAK,CAAC,cAAc,EAAEW,iBAAe,CAAC,CAAC;;AAGzE,IAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC;IAC5C,IAAI,aAAa,EAAE;AACjB,QAAA,MAAM,EAAE,GAAG,IAAIhC,WAAK,CAAC,aAAa,CAAC;AACnC,QAAA,GAAG,CACD,IAAI,YAAY,CAAC,EAAE,EAAEqB,WAAK,CAAC,eAAe,EAAEJ,eAAa,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAC1E;;AAGH,IAAA,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AACxB,IAAA,OAAO,GAAG;AACZ;AAEA;;;;;;;;;AASG;AACH,SAAS,gBAAgB,CAAC,IAAY,EAAA;IACpC,MAAM,IAAI,GAAGjB,WAAK,CAAC,UAAU,CAAC,IAAI,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,GAAG,OAAO,GAAG8B,OAAK;IACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAA,MAAM,MAAM,GAAG9B,WAAK,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;AAC3D,IAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;AAClC,QAAA,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG;AACxB,QAAA,MAAM,OAAO,GAAG,GAAG,GAAG,OAAO;AAC7B,QAAA,IAAI,OAAO,GAAG,KAAK,KAAK,GAAG,EAAE;AAC3B,YAAA,OAAO,GAAG;;;AAGd,IAAA,OAAO,CAAC;AACV;AAEA;;;;AAIG;AACa,SAAA,uBAAuB,CACrC,IAAY,EACZ,EAAW,EAAA;AAEX,IAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACzC,IAAA,MAAM,QAAQ,GAAGA,WAAK,CAAC,UAAU,CAAC,IAAI,EAAEkC,SAAO,EAAE,CAAC,CAAC;AACnD,IAAA,MAAM,MAAM,GAAGlC,WAAK,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,EAAEkC,SAAO,EAAE,CAAC,CAAC,GAAG,CAAC;IACzD,IAAI,MAAM,GAAmB,EAAE;IAC/B,MAAM,QAAQ,GAAG,EAAE,GAAG,gBAAgB,GAAG,kBAAkB;AAC3D,IAAA,KAAK,IAAI,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK,EAAE,EAAE;AACnD,QAAA,MAAM,EAAE,GAAG,IAAIlC,WAAK,CAAC,KAAK,CAAC;QAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC3C,IAAI,QAAQ,EAAE;YACZ,MAAM,QAAQ,GAAmB,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1D,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;;;AAGpC,IAAA,OAAO,MAAM;AACf;;ACneA,MAAM,mBAAmB,GAAG,2BAA2B;AAEvD;AACM,MAAO,qBAAsB,SAAQ,KAAK,CAAA;AAE9C;;;;;;AAMG;AACH,IAAA,WAAA,CAAY,IAAW,EAAE,SAAiB,EAAE,IAAY,EAAE,MAAe,EAAA;AACvE,QAAA,KAAK,CAAC,IAAI,EAAE,CAAA,EAAG,mBAAmB,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAE,KAAK,CAAC,iBAAiB,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAGD,YAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;QAClD,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;aACX;AACL,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC9B,MAAM,OAAO,GACX,MAAM,KAAKC,WAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAGE,YAAM,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC;YAClE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AACvC,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC;;;IAInD,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;AAEvB;;;AAGG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;AACpB,QAAA,MAAM,UAAU,GAAGH,YAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;QACzD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAC/C,QAAA,OAAOA,YAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,SAAS;;AAEtE;;;AAGG;AACH,IAAA,WAAW,CAAC,MAAe,EAAA;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QAC9B,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;;AAElC;;AC9CD,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B;AAEhD;;;;AAIG;MACU,aAAa,CAAA;AACxB;;;;;AAKG;AACH,IAAA,OAAO,WAAW,CAAC,IAAY,EAAE,QAAkB,EAAE,SAAiB,EAAA;AACpE,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAClC,YAAA,MAAM,IAAI,SAAS,CAAC,8BAA8B,QAAQ,CAAA,CAAE,CAAC;;AAE/D,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAC3B,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,SAAS,EAAE,SAAS;AACrB,SAAA,CAAC;;AAGJ;;;;;;AAMG;AACH,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,EAAS,EAAE,EAAW,EAAA;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;;AAEvB,QAAA,OAAO,IAAI;;IAGb,OAAO,YAAY,CAAC,IAAY,EAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,GAAG,CAAC,SAAS;;AAEtB,QAAA,OAAO,SAAS;;AAGlB;;;AAGG;IACH,OAAO,GAAG,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;;;AAIrC,IAAA,OAAO,YAAY,GAAA;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;AAEjC;;AC/DD,MAAMoC,MAAI,GAAG,CAAC;AACd,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,KAAK,GAAG,CAAC;AAEf;;AAEG;AACa,SAAA,OAAO,CAAC,MAAe,EAAEX,OAAY,EAAA;IACnD,MAAM,KAAK,GAAG;SACX,MAAM,CAAC,EAAE,IAAG;AACX,QAAA,MAAM,IAAI,GAAW,EAAE,CAAC,OAAO,EAAE;AACjC,QAAA,MAAM,EAAE,GAAU,EAAE,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE;AACzB,QAAA,QACE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACzB,aAAC,KAAK,KAAKtB,YAAM,CAAC,KAAK;AACrB,iBAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC5B,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;AAC7B,YAAA,IAAI,KAAK,gBAAgB;YACzB,IAAI,KAAK,kBAAkB;AAE/B,KAAC;SACA,GAAG,CAAC,EAAE,IAAG;AACR,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE;AAC3B,KAAC,CAAC;AAEJ,IAAA,MAAM,GAAG,GAAGsB,OAAK,CAAC,GAAG,EAAE;AACvB,IAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK;;IAGd,MAAM,IAAI,GAAG;SACV,MAAM,CAAC,EAAE,IAAG;AACX,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE;QACzB,QACE,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,YAAY;AAClC,aAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACxB,gBAAA,IAAI,KAAK,UAAU;AACnB,gBAAA,IAAI,KAAK,WAAW,CAAC;AAE3B,KAAC;SACA,GAAG,CAAC,EAAE,IAAG;AACR,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE;AAC3B,KAAC,CAAC;AAEJ,IAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtB,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAOW,MAAI;AACb;;ACrDA,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAA;IACvC,MAAM,GAAG,GAAG,EAAE;AACd,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACjC,QAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;;AAEb,IAAA,OAAO,GAAG;AACZ;AAcA,MAAM,IAAI,GAAmB;AAC3B,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,QAAQ,EAAE,KAAK;CACP;AAEV;;;;;;;;;;;;;;;AAeG;AACa,SAAA,QAAQ,CAAC,KAAY,EAAE,EAAW,EAAA;IAChD,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC;AACnC;AAEA,SAAS,SAAS,CAChBX,OAAY,EACZ,EAAW,EACX,SAAkB,EAAA;AAElB,IAAA,MAAM,IAAI,GAAGA,OAAK,CAAC,EAAE;IACrB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;AACpC,IAAA,MAAM,GAAG,GAAGA,OAAK,CAAC,GAAG,EAAE;AACvB,IAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE;AAChC,QAAA,OAAO,IAAI;;AAEb,IAAA,MAAM,GAAG,GAAGA,OAAK,CAAC,MAAM,EAAE;AAC1B,IAAA,MAAM,GAAG,GAAmB;AAC1B,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;KAChB;AACD,IAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;AAClC,QAAA,GAAG,CAAC,QAAQ,GAAG,IAAI;;AAErB,IAAA,IAAI,GAAG,KAAK,CAAC,EAAE;AACb,QAAA,GAAG,CAAC,SAAS,GAAG,IAAI;;AAEtB,IAAA,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC;AACxB,IAAA,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE;AACvD,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,IAAIxB,WAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC;AACrD,QAAA,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS;;SACrB;AACL,QAAA,GAAG,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC;;AAExB,IAAA,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;AACjD,QAAA,OAAO,IAAI;;AAEb,IAAA,OAAO,GAAG;AACZ;AAQA,SAAS,YAAY,CAAC,IAAY,EAAE,EAAW,EAAA;IAC7C,MAAM,IAAI,GAAGA,WAAK,CAAC,UAAU,CAAC,IAAI,CAAC;IACnC,MAAM,YAAY,GAAGA,WAAK,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7C,IAAA,IAAI,KAAK,GAAG,IAAIA,WAAK,CAAC,CAAC,EAAEE,YAAM,CAAC,EAAE,EAAE,IAAI,CAAC;AACzC,IAAA,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACxB,QAAA,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;;AAEtB,IAAA,IAAI,UAAU,GAAG,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AACpD,IAAA,IAAI,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AAC7B,QAAA,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE;;AAEhC,IAAA,MAAM,IAAI,GAAqB;QAC7B,IAAIF,WAAK,CAAC,CAAC,EAAEE,YAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AACnC,KAAA,CAAC,MAAM;;IAEN,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAIF,WAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;;AAE9D,IAAA,KAAK,CAAC,CAAC,EAAE,YAAY;AAClB,SAAA,MAAM,CAAC,KAAK,IAAIA,WAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACrD,SAAA,GAAG,CAAC,KAAK,IAAI,IAAIA,WAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;;IAE3C,KAAK,CAAC,CAAC,EAAEA,WAAK,CAAC,WAAW,CAACE,YAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CACjD,IAAI,IAAI,IAAIF,WAAK,CAAC,IAAI,EAAEE,YAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAC5C,EACD,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,KAAK,EAAE,IAAI,CAAC;;AAEjC,IAAA,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAIF,WAAK,CAAC,IAAI,EAAEE,YAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAC3E,KAAK;IACL,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,EAAE,EAAE,IAAI,CAAC;IAC9B,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,IAAI,EAAE,IAAI,CAAC;;AAEhC,IAAA,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAC7B,IAAI,IAAI,IAAIF,WAAK,CAAC,IAAI,EAAEE,YAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAC9C;;AAED,IAAA,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAIF,WAAK,CAAC,IAAI,EAAEE,YAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAC/D,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,KAAK,EAAE,IAAI,CAAC;IACjC,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,OAAO,EAAE,IAAI,CAAC;IACnC,UAAU,EACV,IAAI,GAAG,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;KAC/C;AACD,IAAA,MAAM,IAAI,GAAqB;QAC7B,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,KAAK,EAAE,IAAI,CAAC;AAClC,KAAA,CAAC,MAAM;;IAEN,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAIF,WAAK,CAAC,IAAI,EAAEE,YAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;IAE7D,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAIF,WAAK,CAAC,IAAI,EAAEE,YAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;;AAEhE,IAAA,IAAI,IAAI,IAAI,GAAI,gBAAgB,CAAC,IAAI,CAAW,CAAC,IAAI,EAAE,GAAG,EAAE;;IAE5D,IAAI,IAAI,IAAI,GAAG,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CACtD;AACD,IAAA,MAAM,OAAO,GAAqB;AAChC,QAAA,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;QACpC,IAAIF,WAAK,CAAC,CAAC,EAAEE,YAAM,CAAC,OAAO,EAAE,IAAI,CAAC;QAClC,IAAIF,WAAK,CAAC,EAAE,EAAEE,YAAM,CAAC,KAAK,EAAE,IAAI,CAAC;KAClC;IACD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC3D;AACH;;ACvJA,MAAM,OAAO,GAAGA,YAAM,CAAC,OAAO;AAE9B;;;AAGG;AACH,SAAS,MAAM,CAAC,CAAwB,EAAA;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAAE,QAAA,OAAO,CAAC;IACnC,IAAIE,YAAM,CAAC,CAAC,CAAC;AAAE,QAAA,OAAOgC,cAAQ,CAAC,CAAS,CAAC;AACzC,IAAA,IAAIpC,WAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,QAAA,OAAQ,CAAW,CAAC,GAAG,EAAE;AAC/C,IAAA,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAA,CAAE,CAAC;AAChD;AAEA,SAAS,OAAO,CAAC,OAAmB,EAAA;AAClC,IAAA,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE;AACvC,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;;IAE7B,OAAO,OAAO,CAAC;AACb,UAAE,IAAIA,WAAK,EAAE,CAAC,WAAW;AACzB,UAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC9B;AAEA;;;AAGG;AACG,SAAU,cAAc,CAAC,OAAmB,EAAA;IAChD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtE,QAAA,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC;;SACjE,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE;AACvC,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;;IAErD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;AAClD,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAChC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;QAClB,MAAM,IAAI,UAAU,CAAC,CAAA,aAAA,EAAgB,OAAO,CAAC,IAAI,CAAE,CAAA,CAAC;;AAC/C,SAAA,IAAI,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE;AACtC,QAAA,MAAM,IAAI,UAAU,CAAC,uBAAuB,OAAO,CAAA,CAAE,CAAC;;AAExD,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9C,IAAI,YAAY,EAAE;QAChB,OAAO,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;;SAC7C;QACL,OAAO,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;;AAEzD;AAEA,SAAS,QAAQ,CAAC,OAAmB,EAAA;AACnC,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,OAAOA,WAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;;AAC/B,aAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC5C,OAAO,OAAO,CAAC,KAAK;;;AAGxB,IAAA,OAAO,GAAG;AACZ;AAEA,SAAS,iBAAiB,CACxB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAAA;AAEhB,IAAA,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AACjD,IAAA,IAAI,OAAO,GAAG,GAAG,EAAE;AACjB,QAAA,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;;AAEhC,IAAA,MAAM,QAAQ,GAAGoC,cAAQ,CAAC,SAAS,CAAC;AACpC,IAAA,IAAI,MAAM;IACV,IAAI,QAAQ,EAAE;QACZ,MAAM,GAAG,QAAQ,GAAGC,qBAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC;;SACrD;AACL,QAAA,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ;QAClC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,IAAI,OAAO,GAAG,GAAG,EAAE;AACjB,YAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;;AAE9B,QAAA,MAAM,GAAGD,cAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;;AAEhC,IAAA,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC3B;AAEA,SAAS,cAAc,CACrB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAAA;AAEhB,IAAA,MAAM,SAAS,GAAG,IAAIpC,WAAK,CAAC,CAAC,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,CAAC;AAC5D,IAAA,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE;IAC9B,MAAM,MAAM,GAAG;AACb,UAAE,QAAQ,GAAG,SAAS,CAAC,WAAW;AAClC,UAAE,IAAIA,WAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;;;;AAIvD,IAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE;AAC5B,QAAA,QAAQ,EAAE;;AAEZ,IAAA,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC3B;;ACjFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2GG;AACa,SAAA,QAAQ,CAAC,OAAA,GAAsB,EAAE,EAAA;AAC/C,IAAA,OAAO,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,CAAC;IACvB,kBAAkB,CAAC,OAAO,CAAC;AAC3B,IAAA,MAAM,QAAQ,IAAI,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC;AACzE,IAAA,MAAM,EAAE,IAAI,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,KAAK,CAAC;IACrE,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;AACpD,IAAA,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC;IAC1C,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE;QACvC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;YACxD,MAAM,IAAI,SAAS,CAAC,CAAA,wBAAA,EAA2B,OAAO,CAAC,MAAM,CAAE,CAAA,CAAC;;AAElE,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,WAAW,GAAI,OAAO,CAAC,MAAiB;QAC3E,MAAM,cAAc,GAAGD,YAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QAC/C,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,MAAM,IAAI,SAAS,CACjB,WAAW,MAAM,CAAA,sDAAA,CAAwD,CAC1E;;;SAEE;AACL,QAAAA,YAAM,CAAC,SAAS,CAAC,IAAI,CAAC;;IAGxB,MAAM,IAAI,GAAY,EAAE;AACxB,IAAA,IAAI,KAAwB;AAC5B,IAAA,IAAI,YAAwC;AAC5C,IAAA,IAAI,SAAS,GAAG,EAAE;AAClB,IAAA,IAAI,OAAO,GAAG,EAAE;AAChB,IAAA,IAAI,WAAW,GAAG,EAAE;AACpB,IAAA,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC;IAC3C,uBAAuB,CAAC,OAAO,CAAC;AAChC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;AAC/B,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;AAC7B,IAAA,MAAM,SAAS,GAAGuC,cAAQ,CAAC,QAAQ,CAAC;AACpC,IAAA,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE;AACjC,QAAA,OAAO,CAAC,cAAc,GAAG,KAAK;;AAEhC,IAAA,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;AAC7C,QAAA,MAAM,EAAE,GAAG,IAAItC,WAAK,CAAC,GAAG,CAAC;AACzB,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,EAAE;AAC9B,QAAA,IAAI,KAAK,KAAK,WAAW,EAAE;YACzB,WAAW,GAAG,KAAK;AACnB,YAAA,YAAY,GAAG,mBAAmB,CAAC,WAAW,CAAC;AAC/C,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;;AAEnC,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,SAAS,GAAGA,WAAK,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC;gBACpD,OAAO,GAAGA,WAAK,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;;;AAGrD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM;AACpC,QAAA,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE;AACvB,QAAA,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG;AAC5B,QAAA,MAAM,UAAU,GAAG,GAAG,KAAK,GAAG;AAC9B,QAAA,IAAI,SAAiC;AACrC,QAAA,MAAM,QAAQ,GAAG,YAAa,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;AACvD,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;AACzB,YAAA,SAAS,GAAG,uBAAuB,CACjC,SAAS,EACT,IAAI,EACJ,EAAE,EACF,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,CACZ;;AAEH,QAAA,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE;YAChC,MAAM,OAAO,GAAG,KAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACjB,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;;;AAGnE,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE;AACxB,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;AACvB,YAAA,IACE,CAAC,EAAE,KAAKE,YAAM,CAAC,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAClD,iBAAC,EAAE,KAAK,KAAK,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACvC,iBAAC,EAAE,KAAK,KAAK,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EACrC;gBACA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,gBAAA,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE;AAC/C,oBAAA,KAAK,EAAE,KAAK;oBACZ,WAAW;AACZ,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;;;AAGjB,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa;QAC3C,IAAI,gBAAgB,GAAG,CAAC;AACxB,QAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC;AACvD,YAAA,gBAAgB,GAAG,MAAM,CAAC,MAAM;YAChC,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;;;AAGxB,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,EAAE;AACtD,YAAA,MAAM,IAAI,GAAG,GAAG,GAAG,SAAS,GAAG,CAAC;YAChC,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;AAEnB,QAAA,IAAI,UAAU,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE;YAC7D,MAAM,MAAM,GAAG,4BAA4B,CAAC,EAAE,EAAE,OAAO,CAAC;AACxD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;;AAEtB,QAAA,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,cAAc,KAAK,QAAQ,IAAI,UAAU,CAAC,EAAE;AACpE,YAAA,SAAS,GAAG,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC;AACzE,YAAA,IAAI,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE;gBAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;gBAChC,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;gBACpE,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;;;;QAI9C,IACE,SAAS,YAAY,aAAa;AAClC,aAAC,OAAO,CAAC,YAAY,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,EACzD;YACA,SAAS,GAAG,SAAS;;QAEvB,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;QAEtB,IACE,OAAO,CAAC,cAAc;aACrB,OAAO,CAAC,uBAAuB;gBAC9B,gBAAgB,KAAK,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,EACtD;AACA,YAAA,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;AAClC,YAAA,IAAI,gBAAgB,KAAK,IAAI,CAAC,MAAM,EAAE;AACpC,gBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;;iBACR;gBACL,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;;;;AAI1C,IAAA,OAAO,IAAI;AACb;AAEA,MAAM,GAAG,GAAG,CAAC;AACb,MAAM,GAAG,GAAG,CAAC;AAEb,MAAM,KAAK,GAAGA,YAAM,CAAC,KAAK;AAC1B,MAAM,KAAK,GAAGA,YAAM,CAAC,KAAK;AAC1B,MAAM,IAAI,GAAGA,YAAM,CAAC,IAAI;AAExB,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa;AACzC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY;AACvC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS;AACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;AAC7B,MAAM,mBAAmB,GAAG,KAAK,CAAC,mBAAmB;AACrD,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB;AAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU;AACnC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe;AAC7C,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc;AAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU;AACnC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY;AACvC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe;AAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;AAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW;AACrC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS;AACjC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe;AAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU;AACnC,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB;AACjD,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa;AACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AACvB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW;AACrC,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB;AAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAI3B,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAU;AACnD,MAAM,kBAAkB,GAAiB;AACvC,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,kBAAkB,EAAE,CAAC;AACrB,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,gBAAgB,EAAE,CAAC;AACnB,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,gBAAgB,EAAE,CAAC;AACnB,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,uBAAuB,EAAE,CAAC;AAC1B,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,MAAM,EAAE,CAAC;CACqC;AAEhD;;AAEG;AACH,SAAS,uBAAuB,CAAC,OAAmB,EAAA;IAClD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACpC,QAAA,IACE,OAAO,kBAAkB,CAAC,CAAC,CAAC,KAAK,WAAW;AAC5C,YAAA,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EACjC;AACA,YAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA,CAAE,CAAC;AACjE,YAAA,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;;;AAGpC,IAAA,IAAI,OAAO,CAAC,aAAa,EAAE;AACzB,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC9D,gBAAA,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA,CAAE,CAAC;AAClE,gBAAA,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;;;;AAIxC;AAEA,MAAM,gBAAgB,GAAiB;AACrC,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,gBAAgB,EAAE,EAAE;CACZ;AAEV,MAAM,iBAAiB,GAAiB;IACtC,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;CACJ;AAEV;;;;;;;;AAQG;AACH,MAAM,kBAAkB,GAAG,GAAG;AAE9B;;;;;;;AAOG;AACH,MAAM,mBAAmB,GAAG,SAAS;AAErC;;;AAGG;AACH,SAAS,kBAAkB,CAAC,OAAmB,EAAA;AAC7C,IAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC3B;;AAEF,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACjC,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,EAAE,QAAQ,YAAY,QAAQ,CAAC,EAAE;AACtE,QAAA,MAAM,IAAI,SAAS,CACjB,wDAAwD,CACzD;;AAEH,IAAA,IACE,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ;AACxC,QAAA,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,EACvC;AACA,QAAA,MAAM,IAAI,SAAS,CACjB,qEAAqE,CACtE;;AAGH,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB;IACvC,IAAI,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;AAC1E,IAAA,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;AAChD,QAAA,GAAG,GAAG,wBAAwB,CAAC,QAAQ,EAAE,GAAG,CAAC;;AAE/C,IAAA,OAAO,CAAC,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAE/C,IAAA,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE;AAC5C,QAAA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;AAC5D,SAAA,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE;QAClD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;;SAC9C;AACL,QAAA,OAAO,CAAC,WAAW,GAAG,kBAAkB;;AAE1C,IAAA,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC1C,QAAA,OAAO,CAAC,UAAU,GAAG,mBAAmB;;AAE5C;AAEA,SAAS,wBAAwB,CAAC,QAAkB,EAAE,GAAW,EAAA;AAC/D,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE;IACjC,IAAI,KAAK,EAAE;AACT,QAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC;AACvC,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,OAAO,MAAM;;;AAGjB,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE;IACzC,IAAI,SAAS,EAAE;AACb,QAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,OAAO,MAAM;;;AAGjB,IAAA,OAAO,GAAG;AACZ;AAEA;;;AAGG;AACH,SAAS,kBAAkB,CAAC,OAAmB,EAAA;;AAC7C,IAAA,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AACpC,QAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC;;AAEpC,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,KAAI,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,0CAAE,SAAS,EAAE,CAAA,IAAI,KAAK;IAC/D,IAAI,IAAI,GAAG,CAAC;;AAGZ,IAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;QACvB,IAAI;YACF,YAAY;gBACZ,YAAY;gBACZ,UAAU;gBACV,eAAe;gBACf,cAAc;gBACd,UAAU;gBACV,aAAa;gBACb,IAAI;gBACJ,WAAW;gBACX,aAAa;gBACb,mBAAmB;AACnB,gBAAA,gBAAgB;;AAEpB,IAAA,IAAI,OAAO,CAAC,cAAc,EAAE;AAC1B,QAAA,IAAI,IAAI,aAAa,GAAG,mBAAmB,GAAG,YAAY;;;AAG5D,IAAA,IAAI,OAAO,CAAC,aAAa,EAAE;QACzB,IAAI,IAAI,CAAC,YAAY;;AAEvB,IAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;QACpB,IAAI,IAAI,CAAC,cAAc;;AAEzB,IAAA,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,IAAI,IAAI,CAAC,UAAU;;AAErB,IAAA,IAAI,OAAO,CAAC,gBAAgB,EAAE;QAC5B,IAAI,IAAI,CAAC,eAAe;QACxB,IAAI,IAAI,CAAC,iBAAiB;;IAE5B,IAAI,EAAE,EAAE;QACN,IAAI,IAAI,OAAO;;SACV;QACL,IAAI,IAAI,SAAS;;;AAGnB,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,IAAI,IAAI,eAAe;;AAEzB,IAAA,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,IAAI,IAAI,UAAU;;AAEpB,IAAA,IAAI,OAAO,CAAC,gBAAgB,EAAE;QAC5B,IAAI,IAAI,iBAAiB;;AAE3B,IAAA,IAAI,OAAO,CAAC,cAAc,EAAE;QAC1B,IAAI,IAAI,gBAAgB;;AAE1B,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,IAAI,IAAI,MAAM;;AAEhB,IAAA,IAAI,OAAO,CAAC,aAAa,EAAE;AACzB,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa;AAC3C,QAAA,IAAI,aAAa,CAAC,OAAO,EAAE;YACzB,IAAI,IAAI,QAAQ;;AAElB,QAAA,IAAI,aAAa,CAAC,UAAU,EAAE;YAC5B,IAAI,IAAI,WAAW;;AAErB,QAAA,IAAI,aAAa,CAAC,QAAQ,EAAE;YAC1B,IAAI,IAAI,SAAS;;AAEnB,QAAA,IAAI,aAAa,CAAC,UAAU,EAAE;YAC5B,IAAI,IAAI,eAAe;;;AAI3B,IAAA,OAAO,IAAI;AACb;AAEA,MAAM,kBAAkB,GACtB,aAAa,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,YAAY;AAEvE,MAAM,eAAe,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;AAExD;;AAEG;AACH,SAAS,kBAAkB,CAAC,OAAmB,EAAA;AAC7C,IAAA,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC;IAC3B,IAAI,CAAC,GAAG,YAAY;QAAE,OAAO,OAAO,CAAC,aAAa;IAClD,IAAI,CAAC,GAAG,cAAc;QAAE,OAAO,OAAO,CAAC,QAAQ;IAC/C,IAAI,CAAC,GAAG,UAAU;QAAE,OAAO,OAAO,CAAC,WAAW;IAC9C,IAAI,CAAC,GAAG,eAAe;QAAE,OAAO,OAAO,CAAC,gBAAgB;IACxD,IAAI,CAAC,GAAG,eAAe;AAAE,QAAA,OAAO,CAAC,MAAM,GAAG,IAAI;AAC9C,IAAA,IAAI,CAAC,IAAI,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,EAAE;QAC9D,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE;AACnD,QAAA,IAAI,CAAC,GAAG,QAAQ,EAAE;AAChB,YAAA,OAAO,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI;;AAEtC,QAAA,IAAI,CAAC,GAAG,WAAW,EAAE;AACnB,YAAA,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI;;AAEzC,QAAA,IAAI,CAAC,GAAG,SAAS,EAAE;AACjB,YAAA,OAAO,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI;;AAEvC,QAAA,IAAI,CAAC,GAAG,eAAe,EAAE;AACvB,YAAA,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC;;;IAGxC,IAAI,CAAC,GAAG,UAAU;AAAE,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI;IACvC,IAAI,CAAC,GAAG,iBAAiB;AAAE,QAAA,OAAO,CAAC,gBAAgB,GAAG,IAAI;IAC1D,IAAI,CAAC,GAAG,gBAAgB;AAAE,QAAA,OAAO,CAAC,cAAc,GAAG,IAAI;IACvD,IAAI,CAAC,GAAG,MAAM;AAAE,QAAA,OAAO,CAAC,MAAM,GAAG,IAAI;AACrC,IAAA,OAAO,CAAC;AACV;AAEA;;;;AAIG;AACH,SAAS,uBAAuB,CAC9B,SAAiC,EACjC,MAAe,EACf,EAAgB,EAChB,OAAmB,EACnB,QAAiB,EACjB,UAAmB,EACnB,WAAoB,EAAA;AAEpB,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,KAAK;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;QACtB,OAAO,SAAS,CAAC;;AAEnB,IAAA,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC5B,IACE,CAAC,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM,GAAG,gBAAgB;SACpD,OAAO,CAAC,QAAQ,IAAI,MAAM,GAAG,cAAc,CAAC,EAC7C;QACA,OAAO,SAAS,CAAC;;IAEnB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;AAChD,IAAA,IAAI,MAAM;IACV,IACE,OAAO,CAAC,cAAc;SACrB,WAAW,IAAI,WAAW,CAAC;AAC5B,QAAA,EAAE,CAAC,OAAO,EAAE,KAAK,YAAY,EAC7B;QACA,EAAE,GAAG,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC;QAC3C,IACE,MAAM,CAAC,UAAU;AACjB,aAAC,WAAW,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EACtD;AACA,YAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;;;AAGlC,IAAA,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE;QAC9D,IAAI,OAAO,CAAC,cAAc,IAAI,MAAM,GAAG,kBAAkB,EAAE;AACzD,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;AACvB,YAAA,SAAS,GAAG,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC;YAClE,IAAI,MAAM,GAAG,gBAAgB,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;;;gBAGjE,MAAM,UAAU,GAAG,iCAAiC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC;gBACrE,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,QAAQ,IAAI,UAAU,EAAE;AAC1B,wBAAA,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS;AAC1C,wBAAA,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY;;oBAElD,EAAE,GAAG,UAAU;;gBAEjB,SAAS,GAAG,SAAS;;;QAGzB,IACE,CAAC,OAAO,CAAC,UAAU;aAClB,OAAO,CAAC,cAAc,IAAI,MAAM,GAAG,gBAAgB,CAAC,EACrD;AACA,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;;IAGpB,IACE,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACrD,MAAM;QACN,MAAM,CAAC,QAAQ,EACf;AACA,QAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;;AAE9B,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,4BAA4B,CAAC,EAAS,EAAE,OAAmB,EAAA;IAClE,MAAM,IAAI,GAAY,EAAE;AACxB,IAAA,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE;AAC5B,IAAA,MAAMsB,OAAK,GAAG,EAAE,CAAC,OAAO,EAAE;AAC1B,IAAA,IAAI,MAAM,KAAK,IAAI,IAAIA,OAAK,IAAI,EAAE,IAAIA,OAAK,IAAI,EAAE,EAAE;AACjD,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,EAAE;QAC9B,MAAM,OAAO,GAAG,MAAM,KAAKxB,WAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC;AACzE,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;;AAExD,QAAA,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAC5B,MAAM,aAAa,GAAGA,WAAK,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;YACxD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AACvC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,OAAO,CAAC;AAC1D,YAAA,IAAI,CAAC,IAAI,CACP,IAAI,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CACnE;;;AAGL,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,iBAAiB,CAAC,GAAW,EAAE,GAAuB,EAAA;AAC7D,IAAA,IAAI,GAAG,KAAK,YAAY,EAAE;QACxB,OAAO,GAAG,KAAK,CAAC,GAAG,0BAA0B,GAAG,kBAAkB;;AAEpE,IAAA,OAAO,GAAG;AACZ;AAEA,SAAS,iBAAiB,CACxB,EAAS,EACT,aAAiD,EACjD,EAAW,EAAA;IAEX,MAAM,IAAI,GAAY,EAAE;AACxB,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACtD,IAAI,GAAG,EAAE;YACP,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC;AACxC,YAAA,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;YACrD,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;;;AAI3B,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,aAAa,CAAC,EAAS,EAAE,OAAe,EAAE,OAAmB,EAAA;IACpE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC;AACzC,IAAA,IAAI,OAAO,CAAC,cAAc,EAAE;AAC1B,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAS;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AAC3B,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK;;;AAGxB,IAAA,OAAO,MAAM;AACf;;AC5sBA;;;;;;;;;;;;;;;;;;;AAmBG;AAoBH;;;;;AAKG;MACU,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2GG;AACH,IAAA,OAAO,QAAQ,CAAC,OAAA,GAAsB,EAAE,EAAA;AACtC,QAAA,OAAO,QAAQ,CAAC,OAAO,CAAC;;AAG1B;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACH,IAAA,OAAO,wBAAwB,CAC7B,KAAa,EACb,KAAmB,EAAA;QAEnB,MAAM,EAAE,GAAGuC,mBAAa,CAAC,KAAK,EAAE,KAAK,CAAC;AACtC,QAAA,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE;AAC7B,YAAA,OAAO,EAAE;;AAEX,QAAA,OAAO,IAAIvC,WAAK,CAAC,EAAE,CAAC;;AAGtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCG;AACH,IAAA,OAAO,WAAW,CAAC,KAAa,EAAE,KAAmB,EAAA;QACnD,MAAM,EAAE,GAAGwC,mBAAa,CAAC,KAAK,EAAE,KAAK,CAAC;AACtC,QAAA,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE;AAC7B,YAAA,OAAO,EAAE;;AAEX,QAAA,OAAO,IAAIxC,WAAK,CAAC,EAAE,CAAC;;AAGtB;;;;;AAKG;IACH,OAAO,kBAAkB,CAAC,IAAY,EAAA;AACpC,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC;;AAGlC;;;;AAIG;AACH,IAAA,OAAO,uBAAuB,CAAC,IAAY,EAAE,EAAW,EAAA;AACtD,QAAA,OAAO,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC;;AAG1C;;;;AAIG;AACH,IAAA,OAAO,iBAAiB,CACtB,IAA2B,EAC3B,EAAY,EAAA;AAEZ,QAAA,OAAO,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;;AAGpC;;AAEG;AACH,IAAA,OAAO,aAAa,CAAC,IAAkB,EAAE,EAAW,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;AAC1C,YAAA,OAAO,KAAK;;AAEd,QAAA,MAAM,KAAK,GAAG,IAAIA,WAAK,CAAC,IAAI,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE;AACrE,YAAA,OAAO,KAAK;;AAEd,QAAA,OAAO,IAAI;;AAGb;;;;;;;;;AASG;AACH,IAAA,OAAO,eAAe,CACpB,OAAe,EACf,MAAc,EACd,OAAmB,EAAA;QAEnB,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;;AAGlD,IAAA,OAAO,OAAO,GAAA;AACZ,QAAA,OAAOyC,OAAU;;AAGnB;;;AAGG;AACH,IAAA,OAAO,QAAQ,CAAC,KAAa,EAAE,EAAW,EAAA;AACxC,QAAA,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;;AAG5B;;;;;;;;;;;;;AAaG;AACH,IAAA,OAAO,MAAM,CAAC,KAAY,EAAE,EAAW,EAAA;QACrC,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC;AAC/D,QAAA,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;;AAG/B;;;;;;;;;;;;;;;AAeG;AACH,IAAA,OAAO,QAAQ,CAAC,KAAY,EAAE,EAAW,EAAA;AACvC,QAAA,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;;AAE7B;AAED;;AAEG;AACH,SAAS,MAAM,CAAC,IAAW,EAAE,EAAW,EAAA;IACtC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;AAChD,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;AAC5D,IAAA,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC;AAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[16]}
|