UNPKG

quran-meta

Version:

Library with meta data and functionality related to Holy Quran

2,263 lines (2,227 loc) 54.2 kB
/*! * Quran Meta library 3.2.1 * * Released under the MIT license */ const meta = Object.freeze({ numAyahs: 6236, numSurahs: 114, numPages: 604, numJuzs: 30, numHizbs: 60, numRubAlHizbs: 240, numSajdas: 15, numRukus: 556, numManzils: 7 }); const SurahList = [ [-1, -1, -1, -1, "", false, -1], [1, 7, 5, 1, "\u0627\u0644\u0641\u0627\u062A\u062D\u0629", true, 1], [8, 286, 87, 40, "\u0627\u0644\u0628\u0642\u0631\u0629", false, 2], [294, 200, 89, 20, "\u0622\u0644 \u0639\u0645\u0631\u0627\u0646", false, 50], [494, 176, 92, 24, "\u0627\u0644\u0646\u0633\u0627\u0621", false, 77], [670, 120, 112, 16, "\u0627\u0644\u0645\u0627\u0626\u062F\u0629", false, 107], [790, 165, 55, 20, "\u0627\u0644\u0623\u0646\u0639\u0627\u0645", true, 128], [955, 206, 39, 24, "\u0627\u0644\u0623\u0639\u0631\u0627\u0641", true, 151], [1161, 75, 88, 10, "\u0627\u0644\u0623\u0646\u0641\u0627\u0644", false, 177], [1236, 129, 113, 16, "\u0627\u0644\u062A\u0648\u0628\u0629", false, 187], [1365, 109, 51, 11, "\u064A\u0648\u0646\u0633", true, 208], [1474, 123, 52, 10, "\u0647\u0648\u062F", true, 222], [1597, 111, 53, 12, "\u064A\u0648\u0633\u0641", true, 236], [1708, 43, 96, 6, "\u0627\u0644\u0631\u0639\u062F", false, 249], [1751, 52, 72, 7, "\u0627\u0628\u0631\u0627\u0647\u064A\u0645", true, 256], [1803, 99, 54, 6, "\u0627\u0644\u062D\u062C\u0631", true, 262], [1902, 128, 70, 16, "\u0627\u0644\u0646\u062D\u0644", true, 268], [2030, 111, 50, 12, "\u0627\u0644\u0625\u0633\u0631\u0627\u0621", true, 282], [2141, 110, 69, 12, "\u0627\u0644\u0643\u0647\u0641", true, 294], [2251, 98, 44, 6, "\u0645\u0631\u064A\u0645", true, 305], [2349, 135, 45, 8, "\u0637\u0647", true, 313], [2484, 112, 73, 7, "\u0627\u0644\u0623\u0646\u0628\u064A\u0627\u0621", true, 322], [2596, 78, 103, 10, "\u0627\u0644\u062D\u062C", false, 332], [2674, 118, 74, 6, "\u0627\u0644\u0645\u0624\u0645\u0646\u0648\u0646", true, 342], [2792, 64, 102, 9, "\u0627\u0644\u0646\u0648\u0631", false, 350], [2856, 77, 42, 6, "\u0627\u0644\u0641\u0631\u0642\u0627\u0646", true, 360], [2933, 227, 47, 11, "\u0627\u0644\u0634\u0639\u0631\u0627\u0621", true, 367], [3160, 93, 48, 7, "\u0627\u0644\u0646\u0645\u0644", true, 377], [3253, 88, 49, 8, "\u0627\u0644\u0642\u0635\u0635", true, 386], [3341, 69, 85, 7, "\u0627\u0644\u0639\u0646\u0643\u0628\u0648\u062A", true, 397], [3410, 60, 84, 6, "\u0627\u0644\u0631\u0648\u0645", true, 405], [3470, 34, 57, 3, "\u0644\u0642\u0645\u0627\u0646", true, 411], [3504, 30, 75, 3, "\u0627\u0644\u0633\u062C\u062F\u0629", true, 415], [3534, 73, 90, 9, "\u0627\u0644\u0623\u062D\u0632\u0627\u0628", false, 418], [3607, 54, 58, 6, "\u0633\u0628\u0625", true, 428], [3661, 45, 43, 5, "\u0641\u0627\u0637\u0631", true, 435], [3706, 83, 41, 5, "\u064A\u0633", true, 441], [3789, 182, 56, 5, "\u0627\u0644\u0635\u0627\u0641\u0627\u062A", true, 446], [3971, 88, 38, 5, "\u0635", true, 453], [4059, 75, 59, 8, "\u0627\u0644\u0632\u0645\u0631", true, 459], [4134, 85, 60, 9, "\u063A\u0627\u0641\u0631", true, 468], [4219, 54, 61, 6, "\u0641\u0635\u0644\u062A", true, 477], [4273, 53, 62, 5, "\u0627\u0644\u0634\u0648\u0631\u0649", true, 483], [4326, 89, 63, 7, "\u0627\u0644\u0632\u062E\u0631\u0641", true, 490], [4415, 59, 64, 3, "\u0627\u0644\u062F\u062E\u0627\u0646", true, 496], [4474, 37, 65, 4, "\u0627\u0644\u062C\u0627\u062B\u064A\u0629", true, 499], [4511, 35, 66, 4, "\u0627\u0644\u0623\u062D\u0642\u0627\u0641", true, 503], [4546, 38, 95, 4, "\u0645\u062D\u0645\u062F", false, 507], [4584, 29, 111, 4, "\u0627\u0644\u0641\u062A\u062D", false, 511], [4613, 18, 106, 2, "\u0627\u0644\u062D\u062C\u0631\u0627\u062A", false, 516], [4631, 45, 34, 3, "\u0642", true, 518], [4676, 60, 67, 3, "\u0627\u0644\u0630\u0627\u0631\u064A\u0627\u062A", true, 521], [4736, 49, 76, 2, "\u0627\u0644\u0637\u0648\u0631", true, 524], [4785, 62, 23, 3, "\u0627\u0644\u0646\u062C\u0645", true, 526], [4847, 55, 37, 3, "\u0627\u0644\u0642\u0645\u0631", true, 529], [4902, 78, 97, 3, "\u0627\u0644\u0631\u062D\u0645\u0646", false, 532], [4980, 96, 46, 3, "\u0627\u0644\u0648\u0627\u0642\u0639\u0629", true, 535], [5076, 29, 94, 4, "\u0627\u0644\u062D\u062F\u064A\u062F", false, 538], [5105, 22, 105, 3, "\u0627\u0644\u0645\u062C\u0627\u062F\u0644\u0629", false, 542], [5127, 24, 101, 3, "\u0627\u0644\u062D\u0634\u0631", false, 546], [5151, 13, 91, 2, "\u0627\u0644\u0645\u0645\u062A\u062D\u0646\u0629", false, 549], [5164, 14, 109, 2, "\u0627\u0644\u0635\u0641", false, 552], [5178, 11, 110, 2, "\u0627\u0644\u062C\u0645\u0639\u0629", false, 553], [5189, 11, 104, 2, "\u0627\u0644\u0645\u0646\u0627\u0641\u0642\u0648\u0646", false, 555], [5200, 18, 108, 2, "\u0627\u0644\u062A\u063A\u0627\u0628\u0646", false, 556], [5218, 12, 99, 2, "\u0627\u0644\u0637\u0644\u0627\u0642", false, 558], [5230, 12, 107, 2, "\u0627\u0644\u062A\u062D\u0631\u064A\u0645", false, 560], [5242, 30, 77, 2, "\u0627\u0644\u0645\u0644\u0643", true, 562], [5272, 52, 2, 2, "\u0627\u0644\u0642\u0644\u0645", true, 565], [5324, 52, 78, 2, "\u0627\u0644\u062D\u0627\u0642\u0629", true, 567], [5376, 44, 79, 2, "\u0627\u0644\u0645\u0639\u0627\u0631\u062C", true, 569], [5420, 28, 71, 2, "\u0646\u0648\u062D", true, 571], [5448, 28, 40, 2, "\u0627\u0644\u062C\u0646", true, 572], [5476, 20, 3, 2, "\u0627\u0644\u0645\u0632\u0645\u0644", true, 574], [5496, 56, 4, 2, "\u0627\u0644\u0645\u062F\u062B\u0631", true, 576], [5552, 40, 31, 2, "\u0627\u0644\u0642\u064A\u0627\u0645\u0629", true, 578], [5592, 31, 98, 2, "\u0627\u0644\u0627\u0646\u0633\u0627\u0646", false, 579], [5623, 50, 33, 2, "\u0627\u0644\u0645\u0631\u0633\u0644\u0627\u062A", true, 581], [5673, 40, 80, 2, "\u0627\u0644\u0646\u0628\u0625", true, 582], [5713, 46, 81, 2, "\u0627\u0644\u0646\u0627\u0632\u0639\u0627\u062A", true, 584], [5759, 42, 24, 1, "\u0639\u0628\u0633", true, 585], [5801, 29, 7, 1, "\u0627\u0644\u062A\u0643\u0648\u064A\u0631", true, 586], [5830, 19, 82, 1, "\u0627\u0644\u0625\u0646\u0641\u0637\u0627\u0631", true, 587], [5849, 36, 86, 1, "\u0627\u0644\u0645\u0637\u0641\u0641\u064A\u0646", true, 588], [5885, 25, 83, 1, "\u0627\u0644\u0625\u0646\u0634\u0642\u0627\u0642", true, 589], [5910, 22, 27, 1, "\u0627\u0644\u0628\u0631\u0648\u062C", true, 590], [5932, 17, 36, 1, "\u0627\u0644\u0637\u0627\u0631\u0642", true, 591], [5949, 19, 8, 1, "\u0627\u0644\u0623\u0639\u0644\u0649", true, 592], [5968, 26, 68, 1, "\u0627\u0644\u063A\u0627\u0634\u064A\u0629", true, 592], [5994, 30, 10, 1, "\u0627\u0644\u0641\u062C\u0631", true, 593], [6024, 20, 35, 1, "\u0627\u0644\u0628\u0644\u062F", true, 594], [6044, 15, 26, 1, "\u0627\u0644\u0634\u0645\u0633", true, 595], [6059, 21, 9, 1, "\u0627\u0644\u0644\u064A\u0644", true, 596], [6080, 11, 11, 1, "\u0627\u0644\u0636\u062D\u0649", true, 596], [6091, 8, 12, 1, "\u0627\u0644\u0634\u0631\u062D", true, 596], [6099, 8, 28, 1, "\u0627\u0644\u062A\u064A\u0646", true, 597], [6107, 19, 1, 1, "\u0627\u0644\u0639\u0644\u0642", true, 597], [6126, 5, 25, 1, "\u0627\u0644\u0642\u062F\u0631", true, 598], [6131, 8, 100, 1, "\u0627\u0644\u0628\u064A\u0646\u0629", false, 599], [6139, 8, 93, 1, "\u0627\u0644\u0632\u0644\u0632\u0644\u0629", false, 599], [6147, 11, 14, 1, "\u0627\u0644\u0639\u0627\u062F\u064A\u0627\u062A", true, 600], [6158, 11, 30, 1, "\u0627\u0644\u0642\u0627\u0631\u0639\u0629", true, 600], [6169, 8, 16, 1, "\u0627\u0644\u062A\u0643\u0627\u062B\u0631", true, 600], [6177, 3, 13, 1, "\u0627\u0644\u0639\u0635\u0631", true, 601], [6180, 9, 32, 1, "\u0627\u0644\u0647\u0645\u0632\u0629", true, 601], [6189, 5, 19, 1, "\u0627\u0644\u0641\u064A\u0644", true, 601], [6194, 4, 29, 1, "\u0642\u0631\u064A\u0634", true, 602], [6198, 7, 17, 1, "\u0627\u0644\u0645\u0627\u0639\u0648\u0646", true, 602], [6205, 3, 15, 1, "\u0627\u0644\u0643\u0648\u062B\u0631", true, 602], [6208, 6, 18, 1, "\u0627\u0644\u0643\u0627\u0641\u0631\u0648\u0646", true, 603], [6214, 3, 114, 1, "\u0627\u0644\u0646\u0635\u0631", false, 603], [6217, 5, 6, 1, "\u0627\u0644\u0645\u0633\u062F", true, 603], [6222, 4, 22, 1, "\u0627\u0644\u0625\u062E\u0644\u0627\u0635", true, 604], [6226, 5, 20, 1, "\u0627\u0644\u0641\u0644\u0642", true, 604], [6231, 6, 21, 1, "\u0627\u0644\u0646\u0627\u0633", true, 604], [6237, 0, -1, -1, "", false, -1] ]; function getSurahMeta(surah) { checkValidSurah(surah); return SurahList[surah]; } function getAyahCountInSurah(surah) { return getSurahMeta(surah)[1]; } function checkValidSurah(surah, checkOnly = false) { if (typeof surah !== "number" || !Number.isInteger(surah)) { if (checkOnly) return false; throw new TypeError("Ayah ID must be an integer"); } if (surah < 1 || surah > meta.numSurahs) { if (checkOnly) return false; throw new RangeError("Surah must be between 1 and " + meta.numSurahs); } return true; } function checkValidSurahAyah(surah, ayah, checkOnly = false) { if (!checkValidSurah(surah, checkOnly)) return false; if (ayah < 1 || ayah > getAyahCountInSurah(surah)) { if (checkOnly) return false; throw new RangeError("Ayah must be between 1 and " + getAyahCountInSurah(surah)); } return true; } function checkValidAyahId(ayahId, checkOnly = false) { if (typeof ayahId !== "number" || !Number.isInteger(ayahId)) { if (checkOnly) return false; throw new TypeError("Ayah ID must be an integer"); } if (ayahId < 1 || ayahId > meta.numAyahs) { if (checkOnly) return false; throw new RangeError("Ayah ID must be between 1 and " + meta.numAyahs); } return true; } function ayahStringSplitter(str) { const [surahStr, ayahsStr] = str.trim().split(":"); const surah = parseInt(surahStr, 10); if (isNaN(surah)) { throw new Error("Error in surah format " + str); } if (!ayahsStr) { throw new Error("Error in data " + str); } let ayahs; if (ayahsStr.includes("-")) { ayahs = ayahsStr.split("-").map((a) => { const ayah = parseInt(a, 10); if (isNaN(ayah) || ayah === 0) { throw new Error("Error in ayah " + a); } return ayah; }); if (ayahs[0] > ayahs[1]) throw new Error("Error in ayah range " + str); } else { ayahs = parseInt(ayahsStr, 10); if (isNaN(ayahs) || ayahs === 0) { throw new Error("Error in data " + str); } checkValidSurahAyah(surah, ayahs); } return [surah, ayahs]; } function findAyahIdBySurah(surah, ayah) { checkValidSurahAyah(surah, ayah); const [startAyahId] = getSurahMeta(surah); return startAyahId + ayah - 1; } const JuzList = [ 0, 1, 149, 260, 386, 517, 641, 751, 900, 1042, 1201, 1328, 1479, 1649, 1803, 2030, 2215, 2484, 2674, 2876, 3215, 3386, 3564, 3733, 4090, 4265, 4511, 4706, 5105, 5242, 5673, 6237 ]; function findJuzByAyahId(ayahId) { checkValidAyahId(ayahId); return JuzList.findIndex((x) => x > ayahId) - 1; } function findJuz(surah, ayah = 1, ayahMode = false) { const ayahId = ayahMode ? ayah : checkValidSurahAyah(surah, ayah) && findAyahIdBySurah(surah, ayah); return findJuzByAyahId(ayahId); } function findSurahByAyahId(ayaId) { checkValidAyahId(ayaId); const suraNum = SurahList.findIndex((x) => x[0] > ayaId) - 1; return [suraNum, ayaId - SurahList[suraNum][0] + 1]; } function findJuzAndShift(surah, ayah, ayahMode = false) { const ayahId = ayahMode ? checkValidAyahId(ayah) && ayah : checkValidSurah(surah) && findAyahIdBySurah(surah, ayah); const juz = findJuzByAyahId(ayahId); const leftAyahId = JuzList[juz]; if (ayahMode) [surah] = findSurahByAyahId(ayahId); const [surahStartAyahId] = SurahList[surah]; return { juz, ayahsBetweenJuzSurah: surahStartAyahId - leftAyahId, leftAyahId }; } function findJuzMetaBySurah(surah, ayah = 1) { const { juz: leftjuz, ayahsBetweenJuzSurah, leftAyahId } = findJuzAndShift(surah, ayah); let rightJuz = leftjuz; while (rightJuz < meta.numJuzs && findSurahByAyahId(JuzList[rightJuz + 1])[0] === surah) { rightJuz++; } return { leftjuz, ayahsBetweenJuzSurah, rightJuz, leftAyahId, rightAyahId: JuzList[rightJuz + 1] }; } const PageList = [ 0, 1, 8, 13, 24, 32, 37, 45, 56, 65, 69, 77, 84, 91, 96, 101, 109, 113, 120, 127, 134, 142, 149, 153, 161, 171, 177, 184, 189, 194, 198, 204, 210, 218, 223, 227, 232, 238, 241, 245, 253, 256, 260, 264, 267, 272, 277, 282, 289, 290, 294, 303, 309, 316, 323, 331, 339, 346, 355, 364, 371, 377, 385, 394, 402, 409, 415, 426, 434, 442, 447, 451, 459, 467, 474, 480, 488, 494, 500, 505, 508, 513, 517, 520, 527, 531, 538, 545, 553, 559, 568, 573, 580, 585, 588, 595, 599, 607, 615, 621, 628, 634, 641, 648, 656, 664, 669, 672, 675, 679, 683, 687, 693, 701, 706, 711, 715, 720, 727, 734, 740, 746, 752, 759, 765, 773, 778, 783, 790, 798, 808, 817, 825, 834, 842, 849, 858, 863, 871, 880, 884, 891, 900, 908, 914, 921, 927, 932, 936, 941, 947, 955, 966, 977, 985, 992, 998, 1006, 1012, 1022, 1028, 1036, 1042, 1050, 1059, 1075, 1085, 1092, 1098, 1104, 1110, 1114, 1118, 1125, 1133, 1142, 1150, 1161, 1169, 1177, 1186, 1194, 1201, 1206, 1213, 1222, 1230, 1236, 1242, 1249, 1256, 1262, 1267, 1272, 1276, 1283, 1290, 1297, 1304, 1308, 1315, 1322, 1329, 1335, 1342, 1347, 1353, 1358, 1365, 1371, 1379, 1385, 1390, 1398, 1407, 1418, 1426, 1435, 1443, 1453, 1462, 1471, 1479, 1486, 1493, 1502, 1511, 1519, 1527, 1536, 1545, 1555, 1562, 1571, 1582, 1591, 1601, 1611, 1619, 1627, 1634, 1640, 1649, 1660, 1666, 1675, 1683, 1692, 1700, 1708, 1713, 1721, 1726, 1736, 1742, 1750, 1756, 1761, 1769, 1775, 1784, 1793, 1803, 1818, 1834, 1854, 1873, 1893, 1908, 1916, 1928, 1936, 1944, 1956, 1966, 1974, 1981, 1989, 1995, 2004, 2012, 2020, 2030, 2037, 2047, 2057, 2068, 2079, 2088, 2096, 2105, 2116, 2126, 2134, 2145, 2156, 2161, 2168, 2175, 2186, 2194, 2202, 2215, 2224, 2238, 2251, 2262, 2276, 2289, 2302, 2315, 2327, 2346, 2361, 2386, 2400, 2413, 2425, 2436, 2447, 2462, 2474, 2484, 2494, 2508, 2519, 2528, 2541, 2556, 2565, 2574, 2585, 2596, 2601, 2611, 2619, 2626, 2634, 2642, 2651, 2660, 2668, 2674, 2691, 2701, 2716, 2733, 2748, 2763, 2778, 2792, 2802, 2812, 2819, 2823, 2828, 2835, 2845, 2850, 2853, 2858, 2867, 2876, 2888, 2899, 2911, 2923, 2933, 2952, 2972, 2993, 3016, 3044, 3069, 3092, 3116, 3139, 3160, 3173, 3182, 3195, 3204, 3215, 3223, 3236, 3248, 3258, 3266, 3274, 3281, 3288, 3296, 3303, 3312, 3323, 3330, 3337, 3347, 3355, 3364, 3371, 3379, 3386, 3393, 3404, 3415, 3425, 3434, 3442, 3451, 3460, 3470, 3481, 3489, 3498, 3504, 3515, 3524, 3534, 3540, 3549, 3556, 3564, 3569, 3577, 3584, 3588, 3596, 3607, 3614, 3621, 3629, 3638, 3646, 3655, 3664, 3672, 3679, 3691, 3699, 3705, 3718, 3733, 3746, 3760, 3776, 3789, 3813, 3840, 3865, 3891, 3915, 3942, 3971, 3987, 3997, 4013, 4032, 4054, 4064, 4069, 4080, 4090, 4099, 4106, 4115, 4126, 4133, 4141, 4150, 4159, 4167, 4174, 4183, 4192, 4200, 4211, 4219, 4230, 4239, 4248, 4257, 4265, 4273, 4283, 4288, 4295, 4304, 4317, 4324, 4336, 4348, 4359, 4373, 4386, 4399, 4415, 4433, 4454, 4474, 4487, 4496, 4506, 4516, 4525, 4531, 4539, 4546, 4557, 4565, 4575, 4584, 4593, 4599, 4607, 4612, 4617, 4624, 4631, 4646, 4666, 4682, 4706, 4727, 4750, 4767, 4785, 4811, 4829, 4853, 4874, 4896, 4918, 4942, 4969, 4996, 5030, 5056, 5079, 5087, 5094, 5100, 5105, 5111, 5116, 5126, 5130, 5136, 5143, 5151, 5156, 5162, 5169, 5178, 5186, 5193, 5200, 5209, 5218, 5223, 5230, 5237, 5242, 5254, 5268, 5287, 5314, 5332, 5358, 5386, 5415, 5430, 5448, 5461, 5476, 5495, 5513, 5543, 5571, 5597, 5617, 5642, 5673, 5703, 5728, 5759, 5801, 5830, 5855, 5883, 5910, 5932, 5964, 5994, 6017, 6044, 6073, 6099, 6126, 6138, 6156, 6177, 6194, 6208, 6222, 6237 ]; function findPage(surah, ayah, ayahMode = false) { const ayahId = ayahMode ? checkValidAyahId(ayah) && ayah : checkValidSurah(surah) && findAyahIdBySurah(surah, ayah); return PageList.findIndex((x) => x > ayahId) - 1; } function findRangeAroundAyah(surah, ayah, mode, ayahMode = false) { const ayahId = ayahMode ? ayah : checkValidSurah(surah) && findAyahIdBySurah(surah, ayah); switch (mode) { case "juz": { const juz = findJuzByAyahId(ayahId); return [JuzList[juz], JuzList[juz + 1] - 1]; } case "surah": { return [SurahList[surah][0], SurahList[surah + 1][0] - 1]; } case "ayah": { return [ayahId, ayahId]; } case "page": { const page = findPage(-1, ayahId, true); return [PageList[page], PageList[page + 1] - 1]; } case "all": default: return [1, meta.numAyahs]; } } const HizbQuarterList = [ 0, 1, 33, 51, 67, 82, 99, 113, 131, 149, 165, 184, 196, 210, 226, 240, 250, 260, 270, 279, 290, 308, 326, 345, 368, 386, 406, 426, 446, 464, 479, 494, 505, 517, 529, 551, 567, 581, 593, 607, 628, 641, 656, 670, 681, 696, 710, 720, 736, 751, 766, 778, 802, 825, 848, 863, 884, 900, 916, 930, 940, 955, 985, 1001, 1019, 1042, 1071, 1096, 1110, 1125, 1143, 1161, 1182, 1201, 1221, 1236, 1254, 1269, 1281, 1295, 1310, 1328, 1346, 1357, 1375, 1390, 1417, 1435, 1454, 1479, 1497, 1514, 1534, 1557, 1581, 1603, 1626, 1649, 1673, 1697, 1712, 1726, 1742, 1760, 1778, 1803, 1852, 1902, 1931, 1952, 1976, 1991, 2012, 2030, 2052, 2079, 2099, 2128, 2157, 2172, 2191, 2215, 2239, 2272, 2309, 2349, 2403, 2431, 2459, 2484, 2512, 2534, 2566, 2596, 2614, 2633, 2655, 2674, 2709, 2748, 2792, 2812, 2826, 2844, 2856, 2876, 2908, 2933, 2984, 3043, 3113, 3160, 3186, 3215, 3241, 3264, 3281, 3303, 3328, 3341, 3366, 3386, 3410, 3440, 3463, 3491, 3514, 3534, 3551, 3564, 3584, 3593, 3616, 3630, 3652, 3675, 3701, 3733, 3765, 3810, 3871, 3933, 3991, 4022, 4066, 4090, 4111, 4134, 4154, 4174, 4199, 4227, 4243, 4265, 4285, 4299, 4323, 4349, 4382, 4431, 4485, 4511, 4531, 4555, 4578, 4601, 4613, 4626, 4657, 4706, 4759, 4810, 4855, 4902, 4980, 5054, 5091, 5105, 5118, 5137, 5157, 5178, 5192, 5218, 5230, 5242, 5272, 5324, 5394, 5448, 5495, 5552, 5610, 5673, 5759, 5830, 5885, 5949, 6024, 6091, 6155, 6237 ]; function findRubAlHizbByAyahId(ayahId) { checkValidAyahId(ayahId); return HizbQuarterList.findIndex((x) => x > ayahId) - 1; } function getRubAlHizbMeta(quarterIndex) { const juz = Math.floor((quarterIndex - 1) / 8) + 1; const hizbIndex = Math.floor((quarterIndex - 1) / 4) + 1; const juzPart = quarterIndex % 8 || 8; return { juz, hizbId: hizbIndex, juzPart, rubAlHizbId: quarterIndex }; } function getRubAlHizbMetaByAyahId(ayahId) { checkValidAyahId(ayahId); const quarterIndex = findRubAlHizbByAyahId(ayahId); return getRubAlHizbMeta(quarterIndex); } function findRubAlHizb(surah, ayah = 1, ayahMode = false) { const ayahId = ayahMode ? ayah : checkValidSurah(surah) && findAyahIdBySurah(surah, ayah); return getRubAlHizbMetaByAyahId(ayahId); } const SajdaList = [ // [ayahId, type] [1160, "recommended"], [1722, "recommended"], [1951, "recommended"], [2138, "recommended"], [2308, "recommended"], [2613, "recommended"], [2672, "recommended"], [2915, "recommended"], [3185, "recommended"], [3518, "obligatory"], [3994, "recommended"], [4256, "obligatory"], [4846, "obligatory"], [5905, "recommended"], [6125, "obligatory"] ]; function getAyahMeta(ayahId) { if (ayahId < 1 || ayahId > meta.numAyahs) throw new RangeError("ayahId must be between 1 and " + meta.numAyahs); const quarterData = getRubAlHizbMetaByAyahId(ayahId); const [surah, ayah] = findSurahByAyahId(ayahId); const page = findPage(-1, ayahId, true); const isSajdahAyah = SajdaList.some(([sajdaAyahId]) => sajdaAyahId === ayahId); const isStartOfSurah = SurahList[surah][0] === ayahId; const isStartOfPage = PageList[page] === ayahId; const isStartOfJuz = JuzList[quarterData.juz] === ayahId; const isStartOfQuarter = HizbQuarterList[quarterData.rubAlHizbId] === ayahId; const isEndOfSurah = SurahList[surah + 1][0] - 1 === ayahId; const isEndOfPage = PageList[page + 1] - 1 === ayahId; const isEndOfJuz = JuzList[quarterData.juz + 1] - 1 === ayahId; const isEndOfQuarter = HizbQuarterList[quarterData.rubAlHizbId + 1] - 1 === ayahId; return { ...quarterData, surah, ayah, isStartOfQuarter, isEndOfQuarter, isSajdahAyah, isStartOfPage, isEndOfPage, isStartOfJuz, isEndOfJuz, isStartOfSurah, isEndOfSurah }; } const ManzilList = [ 0, 1, 670, 1365, 2030, 2933, 3789, 4631, 6237 ]; const RukuList = [ 0, 1, 8, 15, 28, 37, 47, 54, 67, 69, 79, 90, 94, 104, 111, 120, 129, 137, 149, 155, 160, 171, 175, 184, 190, 196, 204, 218, 224, 229, 236, 239, 243, 250, 256, 261, 265, 268, 274, 281, 289, 291, 294, 303, 314, 324, 335, 348, 357, 365, 374, 385, 395, 403, 414, 423, 437, 442, 449, 465, 474, 483, 494, 504, 508, 516, 519, 527, 536, 544, 553, 564, 570, 581, 585, 590, 594, 598, 606, 609, 620, 628, 635, 646, 656, 665, 670, 675, 681, 689, 696, 704, 713, 720, 726, 736, 747, 756, 763, 770, 778, 785, 790, 800, 810, 820, 831, 840, 845, 850, 860, 872, 880, 884, 890, 900, 911, 919, 930, 934, 940, 944, 955, 965, 980, 986, 994, 1002, 1008, 1013, 1019, 1027, 1039, 1048, 1054, 1063, 1081, 1084, 1096, 1102, 1106, 1112, 1117, 1126, 1136, 1143, 1161, 1171, 1180, 1189, 1198, 1205, 1209, 1219, 1225, 1230, 1236, 1242, 1252, 1260, 1265, 1273, 1278, 1295, 1302, 1308, 1316, 1325, 1335, 1346, 1354, 1358, 1365, 1375, 1385, 1395, 1405, 1418, 1425, 1435, 1447, 1457, 1468, 1474, 1482, 1498, 1509, 1523, 1534, 1542, 1557, 1569, 1583, 1597, 1603, 1617, 1626, 1632, 1639, 1646, 1654, 1665, 1676, 1690, 1701, 1708, 1715, 1726, 1734, 1739, 1745, 1751, 1757, 1763, 1772, 1778, 1785, 1792, 1803, 1818, 1828, 1847, 1863, 1882, 1902, 1911, 1923, 1927, 1936, 1942, 1952, 1962, 1967, 1972, 1978, 1985, 1991, 2002, 2012, 2021, 2030, 2040, 2052, 2060, 2070, 2082, 2090, 2100, 2107, 2114, 2123, 2130, 2141, 2153, 2158, 2163, 2172, 2185, 2190, 2194, 2200, 2211, 2223, 2242, 2251, 2266, 2291, 2301, 2316, 2333, 2349, 2373, 2403, 2425, 2438, 2453, 2464, 2477, 2484, 2494, 2513, 2525, 2534, 2559, 2577, 2596, 2606, 2618, 2621, 2629, 2634, 2644, 2653, 2660, 2668, 2674, 2696, 2706, 2724, 2751, 2766, 2792, 2802, 2812, 2818, 2826, 2832, 2842, 2849, 2853, 2856, 2865, 2876, 2890, 2900, 2916, 2933, 2942, 2966, 2985, 3002, 3037, 3055, 3073, 3092, 3108, 3124, 3160, 3174, 3191, 3204, 3218, 3226, 3242, 3253, 3266, 3274, 3281, 3295, 3303, 3313, 3328, 3341, 3354, 3363, 3371, 3385, 3392, 3404, 3410, 3420, 3429, 3437, 3450, 3463, 3470, 3481, 3489, 3504, 3515, 3526, 3534, 3542, 3554, 3561, 3568, 3574, 3586, 3592, 3602, 3607, 3616, 3628, 3637, 3643, 3652, 3661, 3668, 3675, 3687, 3698, 3706, 3718, 3738, 3756, 3773, 3789, 3810, 3863, 3902, 3927, 3971, 3985, 3997, 4011, 4035, 4059, 4068, 4080, 4090, 4100, 4111, 4122, 4129, 4134, 4143, 4154, 4161, 4171, 4184, 4194, 4202, 4212, 4219, 4227, 4237, 4244, 4251, 4263, 4273, 4282, 4292, 4302, 4316, 4326, 4341, 4351, 4361, 4371, 4382, 4393, 4415, 4444, 4457, 4474, 4485, 4495, 4500, 4511, 4521, 4531, 4537, 4546, 4557, 4565, 4574, 4584, 4594, 4601, 4610, 4613, 4623, 4631, 4646, 4660, 4676, 4699, 4722, 4736, 4764, 4785, 4810, 4817, 4847, 4869, 4887, 4902, 4927, 4947, 4980, 5018, 5054, 5076, 5086, 5095, 5101, 5105, 5111, 5118, 5127, 5137, 5144, 5151, 5157, 5164, 5173, 5178, 5186, 5189, 5197, 5200, 5210, 5218, 5225, 5230, 5237, 5242, 5256, 5272, 5305, 5324, 5361, 5376, 5411, 5420, 5440, 5448, 5467, 5476, 5495, 5496, 5527, 5552, 5582, 5592, 5614, 5623, 5663, 5673, 5703, 5713, 5739, 5759, 5801, 5830, 5849, 5885, 5910, 5932, 5949, 5968, 5994, 6024, 6044, 6059, 6080, 6091, 6099, 6107, 6126, 6131, 6139, 6147, 6158, 6169, 6177, 6180, 6189, 6194, 6198, 6205, 6208, 6214, 6217, 6222, 6226, 6231, 6237 ]; const parts = { surah: SurahList, juz: JuzList, rubAlHizb: HizbQuarterList, page: PageList, manzil: ManzilList, ruku: RukuList }; function toPartFormatter(type) { return type === "surah" ? ([startAyahId, ayahCount]) => ({ startAyahId, ayahCount }) : (ayahId, index) => { const ayahCount = parts[type][index + 2] - ayahId; return { startAyahId: ayahId, ayahCount }; }; } function getList(type) { const list = parts[type]; return list.slice(1, list.length - 1).map(toPartFormatter(type)); } function getPageMeta(pageNum) { if (pageNum < 1 || pageNum > meta.numPages) throw new RangeError("pagenum must be between 1 and " + meta.numPages); const [curPage, nextPage] = [ PageList[pageNum], PageList[pageNum + 1] ]; return { pageNum, first: findSurahByAyahId(curPage), last: [...findSurahByAyahId(nextPage - 1)] }; } function binarySearch(ar, el, compare_fn = (a, b) => a - b) { let m = 0; let n = ar.length - 1; while (m <= n) { const k = n + m >> 1; const cmp = compare_fn(el, ar[k]); if (cmp > 0) { m = k + 1; } else if (cmp < 0) { n = k - 1; } else { return k; } } return -m - 1; } function isAyahJuzFirst(surah, ayah, ayahMode = false) { const ayahId = ayahMode ? checkValidAyahId(ayah) && ayah : checkValidSurah(surah) && findAyahIdBySurah(surah, ayah); return binarySearch(JuzList, ayahId); } function isAyahPageFirst(surah, ayah, ayahMode = false) { const ayahId = ayahMode ? checkValidAyahId(ayah) && ayah : checkValidSurah(surah) && findAyahIdBySurah(surah, ayah); return binarySearch(PageList, ayahId); } function nextAyah(surah, ayah) { if (surah < 1 || surah > meta.numSurahs) throw new RangeError("Surah must be between 1 and " + meta.numSurahs); const ayahId = findAyahIdBySurah(surah, ayah); return findSurahByAyahId(ayahId == meta.numAyahs ? 1 : ayahId + 1); } function prevAyah(surah, ayah) { checkValidSurah(surah); const ayahId = findAyahIdBySurah(surah, ayah); return findSurahByAyahId(ayahId == 1 ? meta.numAyahs : ayahId - 1); } const surahNamesAz = [ [], ["\u0259l-Fatih\u0259", "Kitab\u0131 a\xE7an "], ["\u0259l-B\u0259q\u0259r\u0259", "\u0130n\u0259k "], ["Ali-\u0130mran", "\u0130mran ail\u0259si "], ["\u0259n-Nisa", "Qad\u0131nlar "], ["\u0259l-Maid\u0259", "S\xFCfr\u0259 "], ["\u0259l-\u018Fnam", "Davar "], ["\u0259l-\u018Fraf", "S\u0259dd "], ["\u0259l-\u018Fnfal", "Q\u0259nim\u0259t "], ["\u0259t-Tovb\u0259", "T\xF6vb\u0259 "], ["Yunus", "Yunus"], ["Hud", "Hud"], ["Yusuf", "Yusif"], ["\u0259r-R\u0259d", "G\xF6y gurultusu "], ["\u0130brahim", "\u0130brahim"], ["\u0259l-Hicr", "Da\u015Fl\u0131 sah\u0259 "], ["\u0259n-N\u0259hl", "Bal ar\u0131s\u0131 "], ["\u0259l-\u0130sra", "\u0130srail o\u011Fullar\u0131 "], ["\u0259l-K\u0259hf", "Ma\u011Fara "], ["M\u0259ry\u0259m", "M\u0259ry\u0259m "], ["Ta ha", "Taha"], ["\u0259l-\u018Fnbiya", "Pey\u011F\u0259mb\u0259rl\u0259r "], ["\u0259l-H\u0259cc", "H\u0259cc "], ["\u0259l-Muminun", "M\xF6minl\u0259r "], ["\u0259n-Nur", "Nur "], ["\u0259l-Furqan", "F\u0259ql\u0259ndirm\u0259 "], ["\u0259\u015F-\u015Eu\u0259ra", "\u015Eairl\u0259r "], ["\u0259n-N\u0259ml", "Qar\u0131\u015Fqalar "], ["\u0259l-Q\u0259s\u0259s", "Hekay\u0259t "], ["\u0259l-\u018Fnk\u0259but", "H\xF6r\xFCm\xE7\u0259k "], ["\u0259r-Rum", "Rumlular "], ["Lo\u011Fman", "Lo\u011Fman"], ["\u0259s-S\u0259cd\u0259", "S\u0259cd\u0259 "], ["\u0259l-\u018Fhzab", "D\u0259st\u0259l\u0259r"], ["S\u0259ba", "S\u0259ba "], ["Fatir", "Yaradan "], ["Ya sin", "Yasin"], ["\u0259s-Saffat", "S\u0259f-S\u0259f duranlar "], ["Sad", "Sad"], ["\u0259z-Zum\u0259r", "Z\xFCmr\u0259l\u0259r "], ["\u011Eafir", "M\xF6min "], ["Fussil\u0259t", "M\xFCf\u0259ss\u0259l izah edilmi\u015F "], ["\u0259\u015F-\u015Eura", "\u015Eura "], ["\u0259z-Zuxruf", "Q\u0131z\u0131l b\u0259z\u0259kl\u0259r "], ["\u0259d-Duxan", "Duman "], ["\u0259l-Casiy\u0259", "Diz \xE7\xF6km\xFC\u015F camaat "], ["\u0259l-\u018Fhqaf", "Qumsal t\u0259p\u0259l\u0259r "], ["Muh\u0259mm\u0259d", "M\u0259h\u0259mm\u0259d"], ["\u0259l-F\u0259th", "F\u0259th "], ["\u0259l-Hucurat", "Otaqlar "], ["Qaf", "Qaf "], ["\u0259z-Zariyat", "Sovurub da\u011F\u0131dan k\xFCl\u0259kl\u0259r "], ["\u0259t-Tur", "Da\u011F "], ["\u0259n-N\u0259cm", "Ulduz "], ["\u0259l-Q\u0259m\u0259r", "Ay "], ["\u0259r-R\u0259hman", "R\u0259hmli olan "], ["\u0259l-Vaqi\u0259", "Vaqi\u0259 "], ["\u0259l-H\u0259did", "D\u0259mir "], ["\u0259l-Mucadil\u0259", "M\xFCcadil\u0259 "], ["\u0259l-H\u0259\u015Fr", "Toplanma "], ["\u0259l-Mumt\u0259h\u0259n\u0259", "\u0130mtahana \xE7\u0259kil\u0259n qad\u0131n "], ["\u0259s-Saff", "S\u0259f "], ["\u0259l-Cumu\u0259", "C\xFCm\u0259 "], ["\u0259l-Munafiqun", "M\xFCnafiql\u0259r "], ["\u0259t-T\u0259\u011Fabun", "Qar\u015F\u0131l\u0131ql\u0131 aldanma "], ["\u0259t-Talaq", "Bo\u015Fanma "], ["\u0259t-T\u0259hrim", "Qada\u011Fan "], ["\u0259l-Mulk", "M\xFClk "], ["\u0259l-Q\u0259l\u0259m", "Q\u0259l\u0259m "], ["\u0259l-Haqq\u0259", "Haqq olan qiyam\u0259t "], ["\u0259l-M\u0259aric", "D\u0259r\u0259c\u0259l\u0259r "], ["Nuh", "Nuh pey\u011F\u0259mb\u0259r "], ["\u0259l-Cinn", "Cinl\u0259r "], ["\u0259l-Muzz\u0259mmil", "\xD6rt\xFCn\xFCb b\xFCr\xFCn\u0259n "], ["\u0259l-Mudd\u0259ssir", "B\xFCr\xFCn\xFCb sar\u0131nan "], ["\u0259l-Qiyam\u0259", "Qiyam\u0259t "], ["\u0259l-\u0130nsan", "D\xF6vr "], ["\u0259l-Murs\u0259lat", "Bir-birinin ard\u0131nca g\xF6nd\u0259ril\u0259nl\u0259r "], ["\u0259n-N\u0259b\u0259", "B\xF6y\xFCk x\u0259b\u0259r "], ["\u0259n-Naziat", "Can alanlar "], ["\u018Fb\u0259s\u0259", "Qa\u015Fqaba\u011F\u0131n\u0131 t\xF6kd\xFC "], ["\u0259t-T\u0259kvir", "Sar\u0131nma "], ["\u0259l-\u0130nfitar", "Par\xE7alanma "], ["\u0259l-Mutaffifun", "\xC7\u0259kid\u0259 aldadanlar "], ["\u0259l-\u0130n\u015Fiqaq", "Yar\u0131lma "], ["\u0259l-Buruc", "B\xFCrcl\u0259r "], ["\u0259t-Tariq", "Gec\u0259 g\u0259l\u0259n "], ["\u0259l-\u018Fla", "\u018Fn uca "], ["\u0259l-\u011Ea\u015Fiy\u0259", "B\xFCr\xFCn\u0259n "], ["\u0259l-F\u0259cr", "Dan yeri "], ["\u0259l-B\u0259l\u0259d", "\u015E\u0259h\u0259r "], ["\u0259\u015F-\u015E\u0259ms", "G\xFCn\u0259\u015F "], ["\u0259l-Leyl", "Gec\u0259 "], ["\u0259d-Duha", "S\u0259h\u0259r"], ["\u0259\u015F-\u015E\u0259rh", "A\xE7\u0131lma"], ["\u0259t-Tin", "\u018Fncir "], ["\u0259l-\u018Fl\u0259q", "Laxtalanm\u0131\u015F qan "], ["\u0259l-Q\u0259dr", "Q\u0259dr gec\u0259si "], ["\u0259l-Beyyin\u0259", "A\xE7\u0131q-ayd\u0131n d\u0259lil "], ["\u0259z-Z\u0259lz\u0259l\u0259", "Z\u0259lz\u0259l\u0259 "], ["\u0259l-Adiyat", "Qa\xE7an atlar "], ["\u0259l-Qari\u0259", "Qiyam\u0259t "], ["\u0259t-T\u0259kasur", "\xC7oxluqla \xF6y\xFCnm\u0259 "], ["\u0259l-\u018Fsr", "Ax\u015Fam \xE7a\u011F\u0131 "], ["\u0259l-Hum\u0259z\u0259", "Qeyb\u0259t\xE7i "], ["\u0259l-Fil", "Fil "], ["Qurey\u015F", "Q\xFCrey\u015F"], ["\u0259l-Maun", "Z\u0259kat "], ["\u0259l-Kovs\u0259r", "K\xF6vs\u0259r "], ["\u0259l-Kafirun", "Kafirl\u0259r "], ["\u0259n-N\u0259sr", "K\xF6m\u0259k "], ["\u0259l-M\u0259s\u0259d", "Alov atas\u0131 "], ["\u0259l-\u0130xlas", "S\u0259mimiyy\u0259t"], ["\u0259l-F\u0259l\u0259q", "S\xFCbh \xE7a\u011Fl"], ["\u0259n-Nas", "\u0130nsanlar "] ]; const surahNamesEn = [ [], ["Al-Faatiha", "The Opening"], ["Al-Baqara", "The Cow"], ["Aal-i-Imraan", "The Family of Imraan"], ["An-Nisaa", "The Women"], ["Al-Maaida", "The Table"], ["Al-An'aam", "The Cattle"], ["Al-A'raaf", "The Heights"], ["Al-Anfaal", "The Spoils of War"], ["At-Tawba", "The Repentance"], ["Yunus", "Jonas"], ["Hud", "Hud"], ["Yusuf", "Joseph"], ["Ar-Ra'd", "The Thunder"], ["Ibrahim", "Abraham"], ["Al-Hijr", "The Rock"], ["An-Nahl", "The Bee"], ["Al-Israa", "The Night Journey"], ["Al-Kahf", "The Cave"], ["Maryam", "Mary"], ["Taa-Haa", "Taa-Haa"], ["Al-Anbiyaa", "The Prophets"], ["Al-Hajj", "The Pilgrimage"], ["Al-Muminoon", "The Believers"], ["An-Noor", "The Light"], ["Al-Furqaan", "The Criterion"], ["Ash-Shu'araa", "The Poets"], ["An-Naml", "The Ant"], ["Al-Qasas", "The Stories"], ["Al-Ankaboot", "The Spider"], ["Ar-Room", "The Romans"], ["Luqman", "Luqman"], ["As-Sajda", "The Prostration"], ["Al-Ahzaab", "The Clans"], ["Saba", "Sheba"], ["Faatir", "The Originator"], ["Yaseen", "Yaseen"], ["As-Saaffaat", "Those drawn up in Ranks"], ["Saad", "The letter Saad"], ["Az-Zumar", "The Groups"], ["Al-Ghaafir", "The Forgiver"], ["Fussilat", "Explained in detail"], ["Ash-Shura", "Consultation"], ["Az-Zukhruf", "Ornaments of gold"], ["Ad-Dukhaan", "The Smoke"], ["Al-Jaathiya", "Crouching"], ["Al-Ahqaf", "The Dunes"], ["Muhammad", "Muhammad"], ["Al-Fath", "The Victory"], ["Al-Hujuraat", "The Inner Apartments"], ["Qaaf", "The letter Qaaf"], ["Adh-Dhaariyat", "The Winnowing Winds"], ["At-Tur", "The Mount"], ["An-Najm", "The Star"], ["Al-Qamar", "The Moon"], ["Ar-Rahmaan", "The Beneficent"], ["Al-Waaqia", "The Inevitable"], ["Al-Hadid", "The Iron"], ["Al-Mujaadila", "The Pleading Woman"], ["Al-Hashr", "The Exile"], ["Al-Mumtahana", "She that is to be examined"], ["As-Saff", "The Ranks"], ["Al-Jumu'a", "Friday"], ["Al-Munaafiqoon", "The Hypocrites"], ["At-Taghaabun", "Mutual Disillusion"], ["At-Talaaq", "Divorce"], ["At-Tahrim", "The Prohibition"], ["Al-Mulk", "The Sovereignty"], ["Al-Qalam", "The Pen"], ["Al-Haaqqa", "The Reality"], ["Al-Ma'aarij", "The Ascending Stairways"], ["Nooh", "Noah"], ["Al-Jinn", "The Jinn"], ["Al-Muzzammil", "The Enshrouded One"], ["Al-Muddaththir", "The Cloaked One"], ["Al-Qiyaama", "The Resurrection"], ["Al-Insaan", "Man"], ["Al-Mursalaat", "The Emissaries"], ["An-Naba", "The Announcement"], ["An-Naazi'aat", "Those who drag forth"], ["Abasa", "He frowned"], ["At-Takwir", "The Overthrowing"], ["Al-Infitaar", "The Cleaving"], ["Al-Mutaffifin", "Defrauding"], ["Al-Inshiqaaq", "The Splitting Open"], ["Al-Burooj", "The Constellations"], ["At-Taariq", "The Morning Star"], ["Al-A'laa", "The Most High"], ["Al-Ghaashiya", "The Overwhelming"], ["Al-Fajr", "The Dawn"], ["Al-Balad", "The City"], ["Ash-Shams", "The Sun"], ["Al-Lail", "The Night"], ["Ad-Dhuhaa", "The Morning Hours"], ["Ash-Sharh", "The Consolation"], ["At-Tin", "The Fig"], ["Al-Alaq", "The Clot"], ["Al-Qadr", "The Power, Fate"], ["Al-Bayyina", "The Evidence"], ["Az-Zalzala", "The Earthquake"], ["Al-Aadiyaat", "The Chargers"], ["Al-Qaari'a", "The Calamity"], ["At-Takaathur", "Competition"], ["Al-Asr", "The Declining Day, Epoch"], ["Al-Humaza", "The Traducer"], ["Al-Fil", "The Elephant"], ["Quraish", "Quraysh"], ["Al-Maa'un", "Almsgiving"], ["Al-Kawthar", "Abundance"], ["Al-Kaafiroon", "The Disbelievers"], ["An-Nasr", "Divine Support"], ["Al-Masad", "The Palm Fibre"], ["Al-Ikhlaas", "Sincerity"], ["Al-Falaq", "The Dawn"], ["An-Naas", "Mankind"] ]; const surahNamesRu = [ [], ["\u0410\u043B\u044C-\u0424\u0430\u0442\u0438\u0445\u0430", "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0430\u044F \u041A\u043E\u0440\u0430\u043D"], ["\u0410\u043B\u044C-\u0411\u0430\u043A\u0430\u0440\u0430", "\u041A\u043E\u0440\u043E\u0432\u0430"], ["\u0410\u043B\u044C \u2018\u0418\u043C\u0440\u0430\u043D", "\u0421\u0435\u043C\u0435\u0439\u0441\u0442\u0432\u043E \u2018\u0418\u043C\u0440\u0430\u043D\u0430"], ["\u0410\u043D-\u041D\u0438\u0441\u0430", "\u0416\u0435\u043D\u0449\u0438\u043D\u044B"], ["\u0410\u043B\u044C-\u041C\u0430\u0438\u0434\u0430", "\u0422\u0440\u0430\u043F\u0435\u0437\u0430"], ["\u0410\u043B\u044C-\u0410\u043D\u2018\u0430\u043C", "\u0421\u043A\u043E\u0442"], ["\u0410\u043B\u044C-\u0410\u2018\u0440\u0430\u0444", "\u041E\u0433\u0440\u0430\u0434\u044B"], ["\u0410\u043B\u044C-\u0410\u043D\u0444\u0430\u043B\u044C", "\u0412\u043E\u0435\u043D\u043D\u0430\u044F \u0434\u043E\u0431\u044B\u0447\u0430"], ["\u0410\u0442-\u0422\u0430\u0443\u0431\u0430", "\u041F\u043E\u043A\u0430\u044F\u043D\u0438\u0435"], ["\u042E\u043D\u0443\u0441", "\u0418\u043E\u043D\u0430"], ["\u0425\u0443\u0434", "\u0425\u0443\u0434"], ["\u042E\u0441\u0443\u0444", "\u0418\u043E\u0441\u0438\u0444"], ["\u0410\u0440-\u0420\u0430\u2018\u0434", "\u0413\u0440\u043E\u043C"], ["\u0418\u0431\u0440\u0430\u0445\u0438\u043C", "\u0410\u0432\u0440\u0430\u0430\u043C"], ["\u0410\u043B\u044C-\u0425\u0438\u0434\u0436\u0440", "\u0425\u0438\u0434\u0436\u0440"], ["\u0410\u043D-\u041D\u0430\u0445\u043B\u044C", "\u041F\u0447\u0451\u043B\u044B"], ["\u0410\u043B\u044C-\u0418\u0441\u0440\u0430", "\u041D\u043E\u0447\u043D\u043E\u0439 \u043F\u0435\u0440\u0435\u043D\u043E\u0441"], ["\u0410\u043B\u044C-\u041A\u044F\u0445\u0444", "\u041F\u0435\u0449\u0435\u0440\u0430"], ["\u041C\u0430\u0440\u044C\u044F\u043C", "\u041C\u0430\u0440\u0438\u044F"], ["\u0422\u0430, \u0445\u0430", "\u0422\u0430, \u0445\u0430"], ["\u0410\u043B\u044C-\u0410\u043D\u0431\u0438\u044F", "\u041F\u0440\u043E\u0440\u043E\u043A\u0438"], ["\u0410\u043B\u044C-\u0425\u0430\u0434\u0436\u0436", "\u0425\u0430\u0434\u0436"], ["\u0410\u043B\u044C-\u041C\u0443\u2019\u043C\u0438\u043D\u0443\u043D", "\u0412\u0435\u0440\u0443\u044E\u0449\u0438\u0435"], ["\u0410\u043D-\u041D\u0443\u0440", "\u0421\u0432\u0435\u0442"], ["\u0410\u043B\u044C-\u0424\u0443\u0440\u043A\u0430\u043D", "\u0420\u0430\u0437\u043B\u0438\u0447\u0435\u043D\u0438\u0435"], ["\u0410\u0448-\u0428\u0443\u2018\u0430\u0440\u0430", "\u041F\u043E\u044D\u0442\u044B"], ["\u0410\u043D-\u041D\u0430\u043C\u043B\u044C", "\u041C\u0443\u0440\u0430\u0432\u044C\u0438"], ["\u0410\u043B\u044C-\u041A\u0430\u0441\u0430\u0441", "\u0420\u0430\u0441\u0441\u043A\u0430\u0437"], ["\u0410\u043B\u044C-\u2018\u0410\u043D\u043A\u0430\u0431\u0443\u0442", "\u041F\u0430\u0443\u043A"], ["\u0410\u0440-\u0420\u0443\u043C", "\u0420\u043E\u043C\u0435\u0438"], ["\u041B\u0443\u043A\u043C\u0430\u043D", "\u041B\u0443\u043A\u043C\u0430\u043D"], ["\u0410\u0441-\u0421\u0430\u0434\u0436\u0434\u0430", "\u0417\u0435\u043C\u043D\u043E\u0439 \u043F\u043E\u043A\u043B\u043E\u043D"], ["\u0410\u043B\u044C-\u0410\u0445\u0437\u0430\u0431", "\u041F\u043E\u043B\u0447\u0438\u0449\u0430"], ["\u0421\u0430\u0431\u0430\u2019", "\u0421\u0430\u0432\u0430"], ["\u0424\u0430\u0442\u044B\u0440", "\u0417\u0438\u0436\u0434\u0438\u0442\u0435\u043B\u044C"], ["\u0419\u0430, \u0441\u0438\u043D", "\u0419\u0430, \u0441\u0438\u043D"], ["\u0410\u0441-\u0421\u0430\u0444\u0444\u0430\u0442", "\u0421\u0442\u043E\u044F\u0449\u0438\u0435 \u0432 \u0440\u044F\u0434"], ["\u0421\u0430\u0434", "\u0421\u0430\u0434"], ["\u0410\u0437-\u0417\u0443\u043C\u0430\u0440", "\u0422\u043E\u043B\u043F\u044B"], ["\u0413\u0430\u0444\u0438\u0440", "\u041F\u0440\u043E\u0449\u0430\u044E\u0449\u0438\u0439"], ["\u0424\u0443\u0441\u0441\u044B\u043B\u044F\u0442", "\u0420\u0430\u0437\u044A\u044F\u0441\u043D\u0435\u043D\u044B"], ["\u0410\u0448-\u0428\u0443\u0440\u0430", "\u0421\u043E\u0432\u0435\u0442"], ["\u0410\u0437-\u0417\u0443\u0445\u0440\u0443\u0444", "\u0423\u043A\u0440\u0430\u0448\u0435\u043D\u0438\u044F"], ["\u0410\u0434-\u0414\u0443\u0445\u0430\u043D", "\u0414\u044B\u043C"], ["\u0410\u043B\u044C-\u0414\u0436\u0430\u0441\u0438\u044F", "\u041A\u043E\u043B\u0435\u043D\u043E\u043F\u0440\u0435\u043A\u043B\u043E\u043D\u0451\u043D\u043D\u044B\u0435"], ["\u0410\u043B\u044C-\u0410\u0445\u043A\u0430\u0444", "\u0411\u0430\u0440\u0445\u0430\u043D\u044B"], ["\u041C\u0443\u0445\u0430\u043C\u043C\u0430\u0434", "\u041C\u0443\u0445\u0430\u043C\u043C\u0430\u0434"], ["\u0410\u043B\u044C-\u0424\u0430\u0442\u0445", "\u041F\u043E\u0431\u0435\u0434\u0430"], ["\u0410\u043B\u044C-\u0425\u0443\u0434\u0436\u0443\u0440\u0430\u0442", "\u041F\u043E\u043A\u043E\u0438"], ["\u041A\u0430\u0444", "\u041A\u0430\u0444"], ["\u0410\u0437-\u0417\u0430\u0440\u0438\u044F\u0442", "\u0420\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u044E\u0449\u0438\u0435"], ["\u0410\u0442-\u0422\u0443\u0440", "\u0413\u043E\u0440\u0430"], ["\u0410\u043D-\u041D\u0430\u0434\u0436\u043C", "\u0417\u0432\u0435\u0437\u0434\u0430"], ["\u0410\u043B\u044C-\u041A\u0430\u043C\u0430\u0440", "\u041B\u0443\u043D\u0430"], ["\u0410\u0440-\u0420\u0430\u0445\u043C\u0430\u043D", "\u041C\u0438\u043B\u043E\u0441\u0442\u0438\u0432\u044B\u0439"], ["\u0410\u043B\u044C-\u0412\u0430\u043A\u0438\u2018\u0430", "\u041D\u0435\u0438\u0437\u0431\u0435\u0436\u043D\u043E\u0435"], ["\u0410\u043B\u044C-\u0425\u0430\u0434\u0438\u0434", "\u0416\u0435\u043B\u0435\u0437\u043E"], ["\u0410\u043B\u044C-\u041C\u0443\u0434\u0436\u0430\u0434\u0438\u043B\u044F", "\u041F\u0440\u0435\u043F\u0438\u0440\u0430\u044E\u0449\u0430\u044F\u0441\u044F"], ["\u0410\u043B\u044C-\u0425\u0430\u0448\u0440", "\u0421\u0431\u043E\u0440"], ["\u0410\u043B\u044C-\u041C\u0443\u043C\u0442\u0430\u0445\u0430\u043D\u0430", "\u0418\u0441\u043F\u044B\u0442\u0443\u0435\u043C\u0430\u044F"], ["\u0410\u0441-\u0421\u0430\u0444\u0444", "\u0420\u044F\u0434"], ["\u0410\u043B\u044C-\u0414\u0436\u0443\u043C\u0443\u2018\u0430", "\u0421\u043E\u0431\u0440\u0430\u043D\u0438\u0435"], ["\u0410\u043B\u044C-\u041C\u0443\u043D\u0430\u0444\u0438\u043A\u0443\u043D", "\u041B\u0438\u0446\u0435\u043C\u0435\u0440\u044B"], ["\u0410\u0442-\u0422\u0430\u0433\u0430\u0431\u0443\u043D", "\u041E\u0431\u0434\u0435\u043B\u0435\u043D\u0438\u0435"], ["\u0410\u0442-\u0422\u0430\u043B\u044F\u043A", "\u0420\u0430\u0437\u0432\u043E\u0434"], ["\u0410\u0442-\u0422\u0430\u0445\u0440\u0438\u043C", "\u0417\u0430\u043F\u0440\u0435\u0449\u0435\u043D\u0438\u0435"], ["\u0410\u043B\u044C-\u041C\u0443\u043B\u044C\u043A", "\u0412\u043B\u0430\u0441\u0442\u044C"], ["\u0410\u043B\u044C-\u041A\u0430\u043B\u044F\u043C", "\u041F\u0435\u0440\u043E"], ["\u0410\u043B\u044C-\u0425\u0430\u043A\u043A\u0430", "\u041D\u0435\u043C\u0438\u043D\u0443\u0435\u043C\u043E\u0435"], ["\u0410\u043B\u044C-\u041C\u0430\u2018\u0430\u0440\u0438\u0434\u0436", "\u0421\u0442\u0435\u043F\u0435\u043D\u0438"], ["\u041D\u0443\u0445", "\u041D\u043E\u0439"], ["\u0410\u043B\u044C-\u0414\u0436\u0438\u043D\u043D", "\u0414\u0436\u0438\u043D\u043D\u044B"], ["\u0410\u043B\u044C-\u041C\u0443\u0437\u0437\u0430\u043C\u043C\u0438\u043B\u044C", "\u0417\u0430\u043A\u0443\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044F"], ["\u0410\u043B\u044C-\u041C\u0443\u0434\u0434\u0430\u0441\u0441\u0438\u0440", "\u0417\u0430\u0432\u0435\u0440\u043D\u0443\u0432\u0448\u0438\u0439\u0441\u044F"], ["\u0410\u043B\u044C-\u041A\u0438\u044F\u043C\u0430", "\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u0438\u0435"], ["\u0410\u043B\u044C-\u0418\u043D\u0441\u0430\u043D", "\u0427\u0435\u043B\u043E\u0432\u0435\u043A"], ["\u0410\u043B\u044C-\u041C\u0443\u0440\u0441\u0430\u043B\u044F\u0442", "\u041F\u043E\u0441\u044B\u043B\u0430\u0435\u043C\u044B\u0435"], ["\u0410\u043D-\u041D\u0430\u0431\u0430\u2019", "\u0412\u0435\u0441\u0442\u044C"], ["\u0410\u043D-\u041D\u0430\u0437\u0438\u2018\u0430\u0442", "\u0412\u044B\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0435"], ["\u2018\u0410\u0431\u0430\u0441\u0430", "\u041D\u0430\u0445\u043C\u0443\u0440\u0438\u043B\u0441\u044F"], ["\u0410\u0442-\u0422\u0430\u043A\u0432\u0438\u0440", "\u0421\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435"], ["\u0410\u043B\u044C-\u0418\u043D\u0444\u0438\u0442\u0430\u0440", "\u0420\u0430\u0441\u043A\u0430\u043B\u044B\u0432\u0430\u043D\u0438\u0435"], ["\u0410\u043B\u044C-\u041C\u0443\u0442\u0430\u0444\u0444\u0438\u0444\u0438\u043D", "\u041E\u0431\u0432\u0435\u0448\u0438\u0432\u0430\u044E\u0449\u0438\u0435"], ["\u0410\u043B\u044C-\u0418\u043D\u0448\u0438\u043A\u0430\u043A", "\u0420\u0430\u0437\u0432\u0435\u0440\u0437\u043D\u0435\u0442\u0441\u044F"], ["\u0410\u043B\u044C-\u0411\u0443\u0440\u0443\u0434\u0436", "\u0421\u043E\u0437\u0432\u0435\u0437\u0434\u0438\u044F"], ["\u0410\u0442-\u0422\u0430\u0440\u0438\u043A", "\u041D\u043E\u0447\u043D\u043E\u0439 \u0433\u043E\u0441\u0442\u044C"], ["\u0410\u043B\u044C-\u0410\u2018\u043B\u044F", "\u0412\u0441\u0435\u0432\u044B\u0448\u043D\u0438\u0439"], ["\u0410\u043B\u044C-\u0413\u0430\u0448\u0438\u044F", "\u041F\u043E\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u0435"], ["\u0410\u043B\u044C-\u0424\u0430\u0434\u0436\u0440", "\u0417\u0430\u0440\u044F"], ["\u0410\u043B\u044C-\u0411\u0430\u043B\u044F\u0434", "\u0413\u043E\u0440\u043E\u0434"], ["\u0410\u0448-\u0428\u0430\u043C\u0441", "\u0421\u043E\u043B\u043D\u0446\u0435"], ["\u0410\u043B\u044C-\u041B\u0435\u0439\u043B\u044C", "\u041D\u043E\u0447\u044C"], ["\u0410\u0434-\u0414\u0443\u0445\u0430", "\u0423\u0442\u0440\u043E"], ["\u0410\u043B\u044C-\u0418\u043D\u0448\u0438\u0440\u0430\u0445", "\u0420\u0430\u0441\u043A\u0440\u044B\u0442\u0438\u0435"], ["\u0410\u0442-\u0422\u0438\u043D", "\u0421\u043C\u043E\u043A\u043E\u0432\u043D\u0438\u0446\u0430"], ["\u0410\u043B\u044C-\u2018\u0410\u043B\u044F\u043A", "\u0421\u0433\u0443\u0441\u0442\u043E\u043A \u043A\u0440\u043E\u0432\u0438"], ["\u0410\u043B\u044C-\u041A\u0430\u0434\u0440", "\u0412\u0435\u043B\u0438\u0447\u0438\u0435"], ["\u0410\u043B\u044C-\u0411\u0430\u0439\u0439\u0438\u043D\u0430", "\u042F\u0441\u043D\u044B\u0439 \u0434\u043E\u0432\u043E\u0434"], ["\u0410\u0437-\u0417\u0430\u043B\u044C\u0437\u0430\u043B\u044F", "\u0421\u043E\u0442\u0440\u044F\u0441\u0435\u043D\u0438\u0435"], ["\u0410\u043B\u044C-\u2018\u0410\u0434\u0438\u044F\u0442", "\u0421\u043A\u0430\u0447\u0443\u0449\u0438\u0435"], ["\u0410\u043B\u044C-\u041A\u0430\u0440\u0438\u2018\u0430", "\u041F\u043E\u0440\u0430\u0436\u0430\u044E\u0449\u0435\u0435"], ["\u0410\u0442-\u0422\u0430\u043A\u044F\u0441\u0443\u0440", "\u0421\u043E\u043F\u0435\u0440\u043D\u0438\u0447\u0435\u0441\u0442\u0432\u043E"], ["\u0410\u043B\u044C-\u2018\u0410\u0441\u0440", "\u041F\u0440\u0435\u0434\u0432\u0435\u0447\u0435\u0440\u043D\u0435\u0435 \u0432\u0440\u0435\u043C\u044F"], ["\u0410\u043B\u044C-\u0425\u0443\u043C\u0430\u0437\u0430", "\u0425\u0443\u043B\u0438\u0442\u0435\u043B\u044C"], ["\u0410\u043B\u044C-\u0424\u0438\u043B\u044C", "\u0421\u043B\u043E\u043D"], ["\u041A\u0443\u0440\u0430\u0439\u0448", "\u041A\u0443\u0440\u0430\u0439\u0448\u0438\u0442\u044B"], ["\u0410\u043B\u044C-\u041C\u0430\u2018\u0443\u043D", "\u0423\u0442\u0432\u0430\u0440\u044C"], ["\u0410\u043B\u044C-\u041A\u0430\u0443\u0441\u0430\u0440", "\u041A\u0430\u0443\u0441\u0430\u0440"], ["\u0410\u043B\u044C-\u041A\u044F\u0444\u0438\u0440\u0443\u043D", "\u041D\u0435\u0432\u0435\u0440\u0443\u044E\u0449\u0438\u0435"], ["\u0410\u043D-\u041D\u0430\u0441\u0440", "\u041F\u043E\u043C\u043E\u0449\u044C"], ["\u0410\u043B\u044C-\u041C\u0430\u0441\u0430\u0434", "\u041F\u0430\u043B\u044C\u043C\u043E\u0432\u044B\u0435 \u0432\u043E\u043B\u043E\u043A\u043D\u0430"], ["\u0410\u043B\u044C-\u0418\u0445\u043B\u044F\u0441", "\u041E\u0447\u0438\u0449\u0435\u043D\u0438\u0435 \u0432\u0435\u0440\u044B"], ["\u0410\u043B\u044C-\u0424\u0430\u043B\u044F\u043A", "\u0420\u0430\u0441\u0441\u0432\u0435\u0442"], ["\u0410\u043D-\u041D\u0430\u0441", "\u041B\u044E\u0434\u0438"] ]; const surahNamesTr = [ [], ["Fatiha", "A\xE7\u0131l\u0131\u015F"], ["Bakara", "S\u0131\u011F\u0131r"], ["Al-i \u0130mran", "\u0130mr\xE2n ailesi"], ["Nisa", "Kad\u0131nlar"], ["Maid