{"version":3,"sources":["../../../app/resources/vsop87/vsop87EarthSphericalDateReduced.ts","../../../app/resources/vsop87/vsop87EarthSphericalJ2000Reduced.ts","../../../app/utils/math.ts","../../../app/utils/angle.ts","../../../app/constants/earth.ts","../../../app/constants/math.ts","../../../app/constants/units.ts","../../../app/utils/distance.ts","../../../app/utils/sun.ts","../../../app/utils/moon.ts","../../../app/utils/earth.ts","../../../app/constants/epoch.ts","../../time/constants/deltaTReference.ts","../../time/utils/deltaT.ts","../../time/utils/dateTime.ts","../../../app/utils/siderealTime.ts","../../../app/utils/coordinateTransformation.ts","../../../app/utils/vsop87.ts","../../../app/utils/apparentPositionCorrections.ts","../../../app/utils/riseSetTransit.ts","../../time/models/TimeOfInterest.ts","../../core/models/models/AstronomicalObject.ts","../models/Earth.ts"],"sourcesContent":["import type {Vsop87Element, Vsop87Group} from '@app/types/Vsop87Types';\n\nconst VSOP87_L0: Vsop87Element = [\n    [1.75347045673],\n    [0.03341656456, 4.66925680417, 6283.0758499914],\n    [0.00034894275, 4.62610241759, 12566.1516999828],\n    [0.00003497056, 2.74411800971, 5753.3848848968],\n    [0.00003417571, 2.82886579606, 3.523118349],\n    [0.00003135896, 3.62767041758, 77713.7714681205],\n    [0.00002676218, 4.41808351397, 7860.4193924392],\n    [0.00002342687, 6.13516237631, 3930.2096962196],\n    [0.00001324292, 0.74246356352, 11506.7697697936],\n    [0.00001273166, 2.03709655772, 529.6909650946],\n    [0.00001199167, 1.10962944315, 1577.3435424478],\n    [0.0000099025, 5.23268129594, 5884.9268465832],\n    [0.00000901855, 2.04505443513, 26.2983197998],\n    [0.00000857223, 3.50849156957, 398.1490034082],\n    [0.00000779786, 1.17882652114, 5223.6939198022],\n    [0.00000753141, 2.53339053818, 5507.5532386674],\n    [0.00000505264, 4.58292563052, 18849.2275499742],\n    [0.00000492379, 4.20506639861, 775.522611324],\n    [0.00000356655, 2.91954116867, 0.0673103028],\n    [0.00000317087, 5.84901952218, 11790.6290886588],\n    [0.00000284125, 1.89869034186, 796.2980068164],\n    [0.00000271039, 0.31488607649, 10977.078804699],\n    [0.0000024281, 0.34481140906, 5486.777843175],\n    [0.0000020616, 4.80646606059, 2544.3144198834],\n    [0.00000205385, 1.86947813692, 5573.1428014331],\n    [0.00000202261, 2.45767795458, 6069.7767545534],\n    [0.00000155516, 0.83306073807, 213.299095438],\n    [0.00000132212, 3.41118275555, 2942.4634232916],\n    [0.00000126184, 1.0830263021, 20.7753954924],\n    [0.00000115132, 0.64544911683, 0.9803210682],\n    [0.00000102851, 0.63599846727, 4694.0029547076],\n    [0.00000101895, 0.97569221824, 15720.8387848784],\n    [0.00000101724, 4.26679821365, 7.1135470008],\n    [0.00000099206, 6.20992940258, 2146.1654164752],\n    [0.00000097607, 0.6810127227, 155.4203994342],\n    [0.00000085803, 5.98322631256, 161000.6857376741],\n    [0.00000085128, 1.29870743025, 6275.9623029906],\n    [0.00000084711, 3.67080093025, 71430.69561812909],\n    [0.00000079637, 1.807913307, 17260.1546546904],\n    [0.00000078756, 3.03698313141, 12036.4607348882],\n    [0.00000074651, 1.75508916159, 5088.6288397668],\n    [0.00000073874, 3.50319443167, 3154.6870848956],\n    [0.00000073547, 4.67926565481, 801.8209311238],\n    [0.00000069627, 0.83297596966, 9437.762934887],\n    [0.00000062449, 3.97763880587, 8827.3902698748],\n    [0.00000061148, 1.81839811024, 7084.8967811152],\n    [0.00000056963, 2.78430398043, 6286.5989683404],\n    [0.00000056116, 4.38694880779, 14143.4952424306],\n    [0.00000055577, 3.47006009062, 6279.5527316424],\n    [0.00000051992, 0.18914945834, 12139.5535091068],\n    [0.00000051605, 1.33282746983, 1748.016413067],\n    [0.00000051145, 0.28306864501, 5856.4776591154],\n    [0.00000049, 0.48735065033, 1194.4470102246],\n    [0.00000041036, 5.36817351402, 8429.2412664666],\n    [0.00000040938, 2.39850881707, 19651.048481098],\n    [0.000000392, 6.16832995016, 10447.3878396044],\n    [0.0000003677, 6.04133859347, 10213.285546211],\n    [0.00000036596, 2.56955238628, 1059.3819301892],\n    [0.00000035954, 1.70876111898, 2352.8661537718],\n    [0.00000035566, 1.77597314691, 6812.766815086],\n    [0.00000033291, 0.59309499459, 17789.845619785],\n    [0.00000030412, 0.44294464135, 83996.84731811189],\n    [0.00000030047, 2.73975123935, 1349.8674096588],\n    [0.00000025352, 3.16470953405, 4690.4798363586],\n];\n\nconst VSOP87_L1: Vsop87Element = [\n    [6283.31966747491],\n    [0.00206058863, 2.67823455584, 6283.0758499914],\n    [0.0000430343, 2.63512650414, 12566.1516999828],\n    [0.00000425264, 1.59046980729, 3.523118349],\n    [0.00000119261, 5.79557487799, 26.2983197998],\n    [0.00000108977, 2.96618001993, 1577.3435424478],\n    [0.00000093478, 2.59212835365, 18849.2275499742],\n    [0.00000072122, 1.13846158196, 529.6909650946],\n    [0.00000067768, 1.87472304791, 398.1490034082],\n    [0.00000067327, 4.40918235168, 5507.5532386674],\n    [0.00000059027, 2.8879703846, 5223.6939198022],\n    [0.00000055976, 2.17471680261, 155.4203994342],\n    [0.00000045407, 0.39803079805, 796.2980068164],\n    [0.00000036369, 0.46624739835, 775.522611324],\n    [0.00000028958, 2.64707383882, 7.1135470008],\n    [0.00000020844, 5.34138275149, 0.9803210682],\n    [0.00000019097, 1.84628332577, 5486.777843175],\n    [0.00000018508, 4.96855124577, 213.299095438],\n    [0.00000017293, 2.99116864949, 6275.9623029906],\n    [0.00000016233, 0.03216483047, 2544.3144198834],\n    [0.00000015832, 1.43049285325, 2146.1654164752],\n    [0.00000014615, 1.20532366323, 10977.078804699],\n    [0.00000012461, 2.83432285512, 1748.016413067],\n    [0.00000011877, 3.25804815607, 5088.6288397668],\n    [0.00000011808, 5.2737979048, 1194.4470102246],\n    [0.00000011514, 2.07502418155, 4694.0029547076],\n    [0.00000010641, 0.76614199202, 553.5694028424],\n    [0.00000009969, 1.30262991097, 6286.5989683404],\n    [0.00000009721, 4.23925472239, 1349.8674096588],\n    [0.00000009452, 2.69957062864, 242.728603974],\n    [0.00000008577, 5.64475868067, 951.7184062506],\n    [0.00000007576, 5.30062664886, 2352.8661537718],\n    [0.00000006385, 2.65033984967, 9437.762934887],\n    [0.00000006101, 4.66632584188, 4690.4798363586],\n];\n\nconst VSOP87_L2: Vsop87Element = [\n    [0.0005291887],\n    [0.00008719837, 1.07209665242, 6283.0758499914],\n    [0.00000309125, 0.86728818832, 12566.1516999828],\n    [0.00000027339, 0.05297871691, 3.523118349],\n    [0.00000016334, 5.18826691036, 26.2983197998],\n    [0.00000015752, 3.6845788943, 155.4203994342],\n    [0.00000009541, 0.75742297675, 18849.2275499742],\n    [0.00000008937, 2.05705419118, 77713.7714681205],\n    [0.00000006952, 0.8267330541, 775.522611324],\n    [0.00000005064, 4.66284525271, 1577.3435424478],\n    [0.00000004061, 1.03057162962, 7.1135470008],\n    [0.0000000381, 3.4405080349, 5573.1428014331],\n    [0.00000003463, 5.14074632811, 796.2980068164],\n    [0.00000003169, 6.05291851171, 5507.5532386674],\n    [0.0000000302, 1.19246506441, 242.728603974],\n    [0.00000002886, 6.11652627155, 529.6909650946],\n    [0.00000002714, 0.30637881025, 398.1490034082],\n    [0.00000002538, 2.27992810679, 553.5694028424],\n    [0.00000002371, 4.38118838167, 5223.6939198022],\n    [0.00000002079, 3.75435330484, 0.9803210682],\n];\n\nconst VSOP87_L3: Vsop87Element = [\n    [0.00000289226, 5.84384198723, 6283.0758499914],\n    [0.00000034955],\n    [0.00000016819, 5.48766912348, 12566.1516999828],\n    [0.00000002962, 5.19577265202, 155.4203994342],\n    [0.00000001288, 4.72200252235, 3.523118349],\n    [0.00000000714, 5.30045809128, 18849.2275499742],\n    [0.00000000635, 5.96925937141, 242.728603974],\n];\n\nconst VSOP87_L4: Vsop87Element = [\n    [0.00000007717, 4.13446589358, 6283.0758499914],\n    [0.00000000765, 3.83803776214, 12566.1516999828],\n    [0.0000000042, 0.41925861858, 155.4203994342],\n];\n\nconst VSOP87_L5: Vsop87Element = [[0.00000000172, 2.7657906951, 6283.0758499914]];\n\nconst VSOP87_B0: Vsop87Element = [\n    [0.0000027962, 3.19870156017, 84334.66158130829],\n    [0.00000101643, 5.42248619256, 5507.5532386674],\n    [0.00000080445, 3.88013204458, 5223.6939198022],\n    [0.00000043806, 3.70444689758, 2352.8661537718],\n    [0.00000031933, 4.00026369781, 1577.3435424478],\n];\n\nconst VSOP87_B1: Vsop87Element = [\n    [0.0000000903, 3.8972906189, 5507.5532386674],\n    [0.00000006177, 1.73038850355, 5223.6939198022],\n];\n\nconst VSOP87_B2: Vsop87Element = [];\n\nconst VSOP87_B3: Vsop87Element = [];\n\nconst VSOP87_B4: Vsop87Element = [];\n\nconst VSOP87_B5: Vsop87Element = [];\n\nconst VSOP87_R0: Vsop87Element = [\n    [1.00013988799],\n    [0.01670699626, 3.09846350771, 6283.0758499914],\n    [0.00013956023, 3.0552460962, 12566.1516999828],\n    [0.0000308372, 5.19846674381, 77713.7714681205],\n    [0.00001628461, 1.17387749012, 5753.3848848968],\n    [0.00001575568, 2.84685245825, 7860.4193924392],\n    [0.00000924799, 5.45292234084, 11506.7697697936],\n    [0.00000542444, 4.56409149777, 3930.2096962196],\n    [0.0000047211, 3.66100022149, 5884.9268465832],\n    [0.00000345983, 0.96368617687, 5507.5532386674],\n    [0.0000032878, 5.89983646482, 5223.6939198022],\n    [0.00000306784, 0.29867139512, 5573.1428014331],\n    [0.00000243189, 4.27349536153, 11790.6290886588],\n    [0.00000211829, 5.84714540314, 1577.3435424478],\n    [0.00000185752, 5.02194447178, 10977.078804699],\n    [0.00000174844, 3.01193636534, 18849.2275499742],\n    [0.00000109835, 5.05510636285, 5486.777843175],\n    [0.00000098316, 0.88681311277, 6069.7767545534],\n    [0.00000086499, 5.68959778254, 15720.8387848784],\n    [0.00000085825, 1.27083733351, 161000.6857376741],\n    [0.00000064903, 0.27250613787, 17260.1546546904],\n    [0.00000062916, 0.92177108832, 529.6909650946],\n    [0.00000057056, 2.01374292014, 83996.84731811189],\n    [0.00000055736, 5.24159798933, 71430.69561812909],\n    [0.00000049384, 3.24501240359, 2544.3144198834],\n    [0.00000046963, 2.57805070386, 775.522611324],\n    [0.00000044661, 5.53715807302, 9437.762934887],\n    [0.00000042515, 6.01110242003, 6275.9623029906],\n    [0.00000038968, 5.36071738169, 4694.0029547076],\n    [0.00000038245, 2.39255343974, 8827.3902698748],\n    [0.0000003749, 0.82952922332, 19651.048481098],\n    [0.00000036957, 4.90107591914, 12139.5535091068],\n    [0.0000003566, 1.67468058995, 12036.4607348882],\n    [0.00000034537, 1.84270693282, 2942.4634232916],\n    [0.00000033193, 0.24370300098, 7084.8967811152],\n    [0.00000031921, 0.18368229781, 5088.6288397668],\n    [0.00000031846, 1.77775642085, 398.1490034082],\n    [0.00000028464, 1.21344868176, 6286.5989683404],\n    [0.00000027793, 1.89934330904, 6279.5527316424],\n    [0.00000026275, 4.58896850401, 10447.3878396044],\n];\n\nconst VSOP87_R1: Vsop87Element = [\n    [0.00103018608, 1.10748969588, 6283.0758499914],\n    [0.00001721238, 1.06442301418, 12566.1516999828],\n    [0.00000032346, 1.02169059149, 18849.2275499742],\n    [0.00000030799, 2.84353804832, 5507.5532386674],\n    [0.00000024971, 1.31906709482, 5223.6939198022],\n    [0.00000018485, 1.42429748614, 1577.3435424478],\n    [0.00000010078, 5.91378194648, 10977.078804699],\n    [0.00000008654, 1.42046854427, 6275.9623029906],\n    [0.00000008634, 0.27146150602, 5486.777843175],\n    [0.00000005069, 1.68613426734, 5088.6288397668],\n];\n\nconst VSOP87_R2: Vsop87Element = [\n    [0.00004359385, 5.78455133738, 6283.0758499914],\n    [0.00000123633, 5.57934722157, 12566.1516999828],\n    [0.00000008792, 3.62777733395, 77713.7714681205],\n    [0.00000005689, 1.86958905084, 5573.1428014331],\n    [0.00000003301, 5.47027913302, 18849.2275499742],\n    [0.00000001471, 4.48028885617, 5507.5532386674],\n];\n\nconst VSOP87_R3: Vsop87Element = [\n    [0.00000144595, 4.27319435148, 6283.0758499914],\n    [0.00000006729, 3.91697608662, 12566.1516999828],\n];\n\nconst VSOP87_R4: Vsop87Element = [[0.00000003858, 2.56384387339, 6283.0758499914]];\n\nconst VSOP87_R5: Vsop87Element = [];\n\nexport const VSOP87_X: Vsop87Group = [VSOP87_L0, VSOP87_L1, VSOP87_L2, VSOP87_L3, VSOP87_L4, VSOP87_L5];\nexport const VSOP87_Y: Vsop87Group = [VSOP87_B0, VSOP87_B1, VSOP87_B2, VSOP87_B3, VSOP87_B4, VSOP87_B5];\nexport const VSOP87_Z: Vsop87Group = [VSOP87_R0, VSOP87_R1, VSOP87_R2, VSOP87_R3, VSOP87_R4, VSOP87_R5];\n","import type {Vsop87Element, Vsop87Group} from '@app/types/Vsop87Types';\n\nconst VSOP87_L0: Vsop87Element = [\n    [1.75347045673],\n    [0.03341656453, 4.66925680415, 6283.0758499914],\n    [0.00034894275, 4.62610242189, 12566.1516999828],\n    [0.00003497056, 2.74411783405, 5753.3848848968],\n    [0.00003417572, 2.82886579754, 3.523118349],\n    [0.00003135899, 3.62767041756, 77713.7714681205],\n    [0.00002676218, 4.41808345438, 7860.4193924392],\n    [0.00002342691, 6.13516214446, 3930.2096962196],\n    [0.00001324294, 0.74246341673, 11506.7697697936],\n    [0.00001273165, 2.03709657878, 529.6909650946],\n    [0.00001199167, 1.10962946234, 1577.3435424478],\n    [0.0000099025, 5.23268072088, 5884.9268465832],\n    [0.00000901854, 2.04505446477, 26.2983197998],\n    [0.00000857223, 3.50849152283, 398.1490034082],\n    [0.00000779786, 1.17882681962, 5223.6939198022],\n    [0.00000753141, 2.53339052847, 5507.5532386674],\n    [0.00000505267, 4.58292599973, 18849.2275499742],\n    [0.00000492392, 4.20505711826, 775.522611324],\n    [0.00000356672, 2.91954114478, 0.0673103028],\n    [0.00000317087, 5.84901948512, 11790.6290886588],\n    [0.00000284125, 1.89869240932, 796.2980068164],\n    [0.00000271112, 0.31486255375, 10977.078804699],\n    [0.00000242879, 0.34481445893, 5486.777843175],\n    [0.00000206217, 4.80646631478, 2544.3144198834],\n    [0.00000205478, 1.86953770281, 5573.1428014331],\n    [0.00000202318, 2.45767790232, 6069.7767545534],\n    [0.00000155516, 0.83306084617, 213.299095438],\n    [0.00000132212, 3.41118292683, 2942.4634232916],\n    [0.00000126225, 1.08295459501, 20.7753954924],\n    [0.00000115132, 0.64544911683, 0.9803210682],\n    [0.00000102851, 0.63599845579, 4694.0029547076],\n    [0.00000101895, 0.97569280312, 15720.8387848784],\n    [0.00000101724, 4.2667980198, 7.1135470008],\n    [0.00000099206, 6.20992926918, 2146.1654164752],\n    [0.00000097607, 0.68101342359, 155.4203994342],\n    [0.00000085803, 5.9832263126, 161000.6857376741],\n    [0.00000085128, 1.29870764804, 6275.9623029906],\n    [0.00000084711, 3.67080093031, 71430.69561812909],\n    [0.00000079637, 1.80791287082, 17260.1546546904],\n    [0.00000078757, 3.03697458703, 12036.4607348882],\n    [0.00000074651, 1.755089133, 5088.6288397668],\n    [0.00000073874, 3.50319414955, 3154.6870848956],\n    [0.00000073547, 4.67926633877, 801.8209311238],\n    [0.00000069627, 0.83297621398, 9437.762934887],\n    [0.00000062449, 3.97763912806, 8827.3902698748],\n    [0.00000061148, 1.81839892984, 7084.8967811152],\n    [0.00000056963, 2.78430458592, 6286.5989683404],\n    [0.00000056116, 4.38694865354, 14143.4952424306],\n    [0.00000055577, 3.47006059924, 6279.5527316424],\n    [0.00000051992, 0.18914947184, 12139.5535091068],\n    [0.00000051605, 1.33282739866, 1748.016413067],\n    [0.00000051145, 0.28306832879, 5856.4776591154],\n    [0.00000049, 0.48735014197, 1194.4470102246],\n    [0.00000041036, 5.36817592855, 8429.2412664666],\n    [0.00000040938, 2.39850938714, 19651.048481098],\n    [0.000000392, 6.16833020996, 10447.3878396044],\n    [0.0000003677, 6.04133863162, 10213.285546211],\n    [0.00000036596, 2.56957481827, 1059.3819301892],\n    [0.00000035954, 1.70875808777, 2352.8661537718],\n    [0.0000003557, 1.775968892, 6812.766815086],\n    [0.00000033296, 0.59310278598, 17789.845619785],\n    [0.00000030412, 0.44294464169, 83996.84731811189],\n    [0.00000030047, 2.73975124088, 1349.8674096588],\n    [0.00000025352, 3.16470891653, 4690.4798363586],\n];\n\nconst VSOP87_L1: Vsop87Element = [\n    [6283.0758499914],\n    [0.00206058863, 2.67823455808, 6283.0758499914],\n    [0.00004303419, 2.63512233481, 12566.1516999828],\n    [0.00000425264, 1.59046982018, 3.523118349],\n    [0.00000119305, 5.79555765566, 26.2983197998],\n    [0.00000109017, 2.96631010675, 1577.3435424478],\n    [0.00000093479, 2.59211109542, 18849.2275499742],\n    [0.00000072121, 1.13840581212, 529.6909650946],\n    [0.00000067784, 1.87453300345, 398.1490034082],\n    [0.0000006735, 4.40932832004, 5507.5532386674],\n    [0.00000059045, 2.88815790631, 5223.6939198022],\n    [0.00000055976, 2.17471740035, 155.4203994342],\n    [0.00000045411, 0.39799502896, 796.2980068164],\n    [0.00000036298, 0.46875437227, 775.522611324],\n    [0.00000028962, 2.64732254645, 7.1135470008],\n    [0.00000020844, 5.34138275149, 0.9803210682],\n    [0.00000019097, 1.84628376049, 5486.777843175],\n    [0.00000018508, 4.96855179468, 213.299095438],\n    [0.00000017293, 2.9911676063, 6275.9623029906],\n    [0.00000016233, 0.03216587315, 2544.3144198834],\n    [0.00000015832, 1.43049301283, 2146.1654164752],\n    [0.00000014608, 1.2046979369, 10977.078804699],\n    [0.00000012461, 2.83432282119, 1748.016413067],\n    [0.00000011877, 3.25805082007, 5088.6288397668],\n    [0.00000011808, 5.27379760438, 1194.4470102246],\n    [0.00000011514, 2.07502080082, 4694.0029547076],\n    [0.00000010641, 0.76614722966, 553.5694028424],\n    [0.00000009969, 1.30263423409, 6286.5989683404],\n    [0.00000009721, 4.2392586526, 1349.8674096588],\n    [0.00000009452, 2.69956827011, 242.728603974],\n    [0.00000008577, 5.6447608598, 951.7184062506],\n    [0.00000007576, 5.30056172859, 2352.8661537718],\n    [0.00000006385, 2.65034514038, 9437.762934887],\n    [0.00000006101, 4.66633726278, 4690.4798363586],\n];\n\nconst VSOP87_L2: Vsop87Element = [\n    [0.00008721859, 1.07253635559, 6283.0758499914],\n    [0.00000294833, 0.43717350256, 12566.1516999828],\n    [0.00000027338, 0.05295636147, 3.523118349],\n    [0.00000016333, 5.18820215724, 26.2983197998],\n    [0.00000015745, 3.68504712183, 155.4203994342],\n    [0.00000009425, 0.29667114694, 18849.2275499742],\n    [0.00000008938, 2.05706319592, 77713.7714681205],\n    [0.0000000694, 0.82691541038, 775.522611324],\n    [0.00000005061, 4.6624323168, 1577.3435424478],\n    [0.0000000406, 1.03067032318, 7.1135470008],\n    [0.00000003809, 3.44043369494, 5573.1428014331],\n    [0.00000003464, 5.14021224609, 796.2980068164],\n    [0.00000003172, 6.05479318507, 5507.5532386674],\n    [0.0000000302, 1.19240008524, 242.728603974],\n    [0.00000002885, 6.11705865396, 529.6909650946],\n    [0.00000002719, 0.30363248164, 398.1490034082],\n    [0.00000002538, 2.27966434314, 553.5694028424],\n    [0.00000002365, 4.37666117992, 5223.6939198022],\n    [0.00000002078, 3.75435095487, 0.9803210682],\n    [0.00000001675, 0.90149951436, 951.7184062506],\n];\n\nconst VSOP87_L3: Vsop87Element = [\n    [0.00000289058, 5.84173149732, 6283.0758499914],\n    [0.00000020712, 6.0498393902, 12566.1516999828],\n    [0.00000002962, 5.1956057957, 155.4203994342],\n    [0.00000001288, 4.7219761197, 3.523118349],\n    [0.00000000635, 5.96904899168, 242.728603974],\n    [0.0000000057, 5.54182903238, 18849.2275499742],\n    [0.00000000402, 3.78606612895, 553.5694028424],\n];\n\nconst VSOP87_L4: Vsop87Element = [\n    [0.00000007714, 4.14117321449, 6283.0758499914],\n    [0.00000001016, 3.27573644241, 12566.1516999828],\n    [0.0000000042, 0.41892851415, 155.4203994342],\n];\n\nconst VSOP87_L5: Vsop87Element = [[0.00000000172, 2.74854172392, 6283.0758499914]];\n\nconst VSOP87_B0: Vsop87Element = [\n    [0.0000027962, 3.19870156017, 84334.66158130829],\n    [0.00000101643, 5.42248619256, 5507.5532386674],\n    [0.00000080445, 3.88013204458, 5223.6939198022],\n    [0.00000043806, 3.70444689759, 2352.8661537718],\n    [0.00000031933, 4.00026369781, 1577.3435424478],\n];\n\nconst VSOP87_B1: Vsop87Element = [\n    [0.00227777722, 3.4137662053, 6283.0758499914],\n    [0.00003805678, 3.37063423795, 12566.1516999828],\n];\n\nconst VSOP87_B2: Vsop87Element = [];\n\nconst VSOP87_B3: Vsop87Element = [];\n\nconst VSOP87_B4: Vsop87Element = [];\n\nconst VSOP87_B5: Vsop87Element = [];\n\nconst VSOP87_R0: Vsop87Element = [\n    [1.00013988784],\n    [0.01670699632, 3.09846350258, 6283.0758499914],\n    [0.00013956024, 3.05524609456, 12566.1516999828],\n    [0.0000308372, 5.19846674381, 77713.7714681205],\n    [0.00001628463, 1.17387558054, 5753.3848848968],\n    [0.00001575572, 2.84685214877, 7860.4193924392],\n    [0.00000924799, 5.45292236722, 11506.7697697936],\n    [0.00000542439, 4.56409151453, 3930.2096962196],\n    [0.0000047211, 3.66100022149, 5884.9268465832],\n    [0.00000345969, 0.96368627272, 5507.5532386674],\n    [0.0000032878, 5.89983686142, 5223.6939198022],\n    [0.00000306784, 0.29867139512, 5573.1428014331],\n    [0.00000243181, 4.2734953079, 11790.6290886588],\n    [0.00000211836, 5.84714461348, 1577.3435424478],\n    [0.0000018574, 5.02199710705, 10977.078804699],\n    [0.00000174844, 3.01193636733, 18849.2275499742],\n    [0.00000109835, 5.0551063586, 5486.777843175],\n    [0.00000098316, 0.88681311278, 6069.7767545534],\n    [0.000000865, 5.68956418946, 15720.8387848784],\n    [0.00000085831, 1.27079125277, 161000.6857376741],\n    [0.00000064908, 0.27251341435, 17260.1546546904],\n    [0.00000062917, 0.92177053978, 529.6909650946],\n    [0.00000057056, 2.01374292245, 83996.84731811189],\n    [0.00000055736, 5.2415979917, 71430.69561812909],\n    [0.00000049384, 3.24501240359, 2544.3144198834],\n    [0.00000046966, 2.57799853213, 775.522611324],\n    [0.00000044666, 5.53715663816, 9437.762934887],\n    [0.0000004252, 6.01110257982, 6275.9623029906],\n    [0.00000038963, 5.36063832897, 4694.0029547076],\n    [0.00000038245, 2.39255343973, 8827.3902698748],\n    [0.00000037486, 0.82961281844, 19651.048481098],\n    [0.00000036957, 4.90107587287, 12139.5535091068],\n    [0.00000035661, 1.67447135798, 12036.4607348882],\n    [0.00000034537, 1.84270693281, 2942.4634232916],\n    [0.00000033193, 0.24370221704, 7084.8967811152],\n    [0.00000031922, 0.18368299942, 5088.6288397668],\n    [0.00000031846, 1.77775642078, 398.1490034082],\n    [0.00000028468, 1.21344887533, 6286.5989683404],\n    [0.00000027795, 1.89934427832, 6279.5527316424],\n    [0.00000026275, 4.58896863104, 10447.3878396044],\n];\n\nconst VSOP87_R1: Vsop87Element = [\n    [0.00103018607, 1.10748968172, 6283.0758499914],\n    [0.00001721238, 1.06442300386, 12566.1516999828],\n    [0.00000032345, 1.02168583254, 18849.2275499742],\n    [0.00000030801, 2.84358443952, 5507.5532386674],\n    [0.00000024978, 1.31906570344, 5223.6939198022],\n    [0.00000018487, 1.42428709076, 1577.3435424478],\n    [0.00000010077, 5.91385248388, 10977.078804699],\n    [0.00000008654, 1.42046854427, 6275.9623029906],\n    [0.00000008635, 0.27158192945, 5486.777843175],\n    [0.00000005069, 1.68613408916, 5088.6288397668],\n];\n\nconst VSOP87_R2: Vsop87Element = [\n    [0.00004359385, 5.78455133808, 6283.0758499914],\n    [0.00000123633, 5.57935427994, 12566.1516999828],\n    [0.00000008792, 3.62777893099, 77713.7714681205],\n    [0.00000005689, 1.86958905084, 5573.1428014331],\n    [0.00000003302, 5.47034879713, 18849.2275499742],\n    [0.00000001471, 4.47964125007, 5507.5532386674],\n];\n\nconst VSOP87_R3: Vsop87Element = [\n    [0.00000144595, 4.27319433901, 6283.0758499914],\n    [0.00000006729, 3.91706261708, 12566.1516999828],\n];\n\nconst VSOP87_R4: Vsop87Element = [[0.00000003858, 2.56389016346, 6283.0758499914]];\n\nconst VSOP87_R5: Vsop87Element = [];\n\nexport const VSOP87_X: Vsop87Group = [VSOP87_L0, VSOP87_L1, VSOP87_L2, VSOP87_L3, VSOP87_L4, VSOP87_L5];\nexport const VSOP87_Y: Vsop87Group = [VSOP87_B0, VSOP87_B1, VSOP87_B2, VSOP87_B3, VSOP87_B4, VSOP87_B5];\nexport const VSOP87_Z: Vsop87Group = [VSOP87_R0, VSOP87_R1, VSOP87_R2, VSOP87_R3, VSOP87_R4, VSOP87_R5];\n","export function round(value: number, decimals = 0): number {\n    const p = 10 ** decimals;\n\n    return Math.round(value * p) / p;\n}\n\nexport function pad(num: number | string, size: number): string {\n    let numStr = num.toString();\n\n    while (numStr.length < size) {\n        numStr = `0${numStr}`;\n    }\n\n    return numStr;\n}\n\nexport function sin2(number: number): number {\n    return Math.sin(number) * Math.sin(number);\n}\n\nexport function cos2(number: number): number {\n    return Math.cos(number) * Math.cos(number);\n}\n","import {pad, round} from './math';\n\nexport type AnglePrefixes = {\n    positivePrefix: string;\n    negativePrefix: string;\n};\n\n/**\n * @deprecated use decimal2degreeMinutesSeconds instead\n * @param deg\n * @param short\n */\nexport function deg2angle(deg: number, short = false): string {\n    return decimal2degreeMinutesSeconds(deg, short);\n}\n\nexport function decimal2degreeMinutes(decimal: number, short = false, prefixes?: AnglePrefixes): string {\n    const sign = getSignPrefix(decimal, prefixes);\n\n    decimal = Math.abs(decimal);\n\n    const degPart = Math.floor(decimal);\n    const min = round((decimal - degPart) * 60, 5);\n\n    const degString = `${degPart}° `;\n    const minString = `${pad(min, 2)}'`;\n\n    if (short && degPart === 0.0) {\n        return sign + minString;\n    }\n\n    return sign + degString + minString;\n}\n\nexport function decimal2degreeMinutesSeconds(decimal: number, short = false, prefixes?: AnglePrefixes): string {\n    const sign = getSignPrefix(decimal, prefixes);\n\n    decimal = Math.abs(decimal);\n\n    const degPart = Math.floor(decimal);\n    const min = Math.floor((decimal - degPart) * 60);\n    const sec = round((decimal - degPart - min / 60) * 3600, 3);\n    const secParts = sec.toString().split('.');\n\n    const degString = `${degPart}° `;\n    const minString = `${pad(min, 2)}' `;\n    const secString = `${secParts.length === 1 ? pad(sec, 2) : `${pad(secParts[0], 2)}.${secParts[1]}`}\"`;\n\n    if (short && degPart === 0.0 && min === 0.0) {\n        return sign + secString;\n    }\n\n    if (short && degPart === 0.0) {\n        return sign + minString + secString;\n    }\n\n    return sign + degString + minString + secString;\n}\n\nexport function angle2deg(angle: string): number {\n    const matches = angle.match(/(-?)(\\d+)°.*?(\\d+)'.*?([\\d.]+)\"/);\n\n    if (!matches) {\n        throw new Error('false angle format');\n    }\n\n    const sign = matches[1].trim() === '-' ? -1 : 1;\n    const deg = parseInt(matches[2], 10);\n    const min = parseInt(matches[3], 10);\n    const sec = parseFloat(matches[4]);\n\n    return sign * (deg + min / 60 + sec / 3600);\n}\n\nexport function deg2time(angle: number): string {\n    const sign = angle < 0 ? '-' : '';\n    const time = Math.abs(angle / 15);\n\n    const hour = Math.floor(time);\n    const min = Math.floor((time - hour) * 60);\n    const sec = round((time - hour - min / 60) * 3600, 3);\n    const secParts = sec.toString().split('.');\n\n    const hourString = sign + hour;\n    const minString = pad(min, 2);\n    const secString = secParts.length === 1 ? pad(sec, 2) : `${pad(secParts[0], 2)}.${secParts[1]}`;\n\n    return `${hourString}h ${minString}m ${secString}s`;\n}\n\nexport function time2deg(timeAngle: string): number {\n    const matches = timeAngle.match(/(-?)(\\d+)h.*?(\\d+)m.*?([\\d.]+)s/);\n\n    if (!matches) {\n        throw new Error('false time angle format');\n    }\n\n    const sign = matches[1].trim() === '-' ? -1 : 1;\n    const deg = parseInt(matches[2], 10);\n    const min = parseInt(matches[3], 10);\n    const sec = parseFloat(matches[4]);\n\n    const angleDeg = sign * (deg + min / 60 + sec / 3600);\n\n    return angleDeg * 15;\n}\n\nexport function normalizeAngle(degrees: number, baseAngle = 360.0): number {\n    let angle = degrees % baseAngle;\n\n    if (angle < 0) {\n        angle = angle + baseAngle;\n    }\n\n    return angle;\n}\n\nexport function sec2deg(seconds: number): number {\n    return seconds / 3600;\n}\n\nfunction getSignPrefix(decimal: number, prefixes?: AnglePrefixes): string {\n    if (prefixes) {\n        return decimal < 0 ? prefixes.negativePrefix : prefixes.positivePrefix;\n    }\n\n    return decimal < 0 ? '-' : '';\n}\n","export const EARTH_EQUATORIAL_RADIUS_METERS = 6_378_137;\nexport const EARTH_EQUATORIAL_DIAMETER_METERS = 2 * EARTH_EQUATORIAL_RADIUS_METERS;\nexport const EARTH_EQUATORIAL_RADIUS_KM = EARTH_EQUATORIAL_RADIUS_METERS / 1000;\nexport const EARTH_EQUATORIAL_DIAMETER_KM = 2 * EARTH_EQUATORIAL_RADIUS_KM;\n\nexport const EARTH_AXIS_RATIO = 0.996647189335;\n\nexport const EARTH_FLATTENING = 1 - EARTH_AXIS_RATIO;\nexport const EARTH_POLAR_RADIUS_RATIO = 1 - EARTH_FLATTENING;\nexport const ECCENTRICITY_SQUARED = 2 * EARTH_FLATTENING - EARTH_FLATTENING * EARTH_FLATTENING;\n\nexport const EARTH_ROTATION_DEG_PER_HOUR = 1.002738 * 15;\nexport const EARTH_SIDEREAL_ROTATION_PER_DAY = 360.985647;\n\n// Sun's centre altitude at sunrise/sunset: -(34' refraction + 16' semi-diameter). Meeus, chapter 15.\nexport const SUNRISE_SUNSET_ALTITUDE_DEG = -0.8333;\n\nexport const EARTH_ARGUMENTS_OF_NUTATION = [\n    [0, 0, 0, 0, 1, -171996, -174.2, 92025, 8.9],\n    [0, 0, 2, -2, 2, -13187, -1.6, 5736, -3.1],\n    [0, 0, 2, 0, 2, -2274, -0.2, 977, -0.5],\n    [0, 0, 0, 0, 2, 2062, 0.2, -895, 0.5],\n    [0, 1, 0, 0, 0, 1426, -3.4, 54, -0.1],\n    [1, 0, 0, 0, 0, 712, 0.1, -7, 0.0],\n    [0, 1, 2, -2, 2, -517, 1.2, 224, -0.6],\n    [0, 0, 2, 0, 1, -386, -0.4, 200, 0.0],\n    [1, 0, 2, 0, 2, -301, 0.0, 129, -0.1],\n    [0, -1, 2, -2, 2, 217, -0.5, -95, 0.3],\n    [1, 0, 0, -2, 0, -158, 0.0, -1, 0.0],\n    [0, 0, 2, -2, 1, 129, 0.1, -70, 0.0],\n    [-1, 0, 2, 0, 2, 123, 0.0, -53, 0.0],\n    [0, 0, 0, 2, 0, 63, 0.0, -2, 0.0],\n    [1, 0, 0, 0, 1, 63, 0.1, -33, 0.0],\n    [-1, 0, 2, 2, 2, -59, 0.0, 26, 0.0],\n    [-1, 0, 0, 0, 1, -58, -0.1, 32, 0.0],\n    [1, 0, 2, 0, 1, -51, 0.0, 27, 0.0],\n    [2, 0, 0, -2, 0, 48, 0.0, 1, 0.0],\n    [-2, 0, 2, 0, 1, 46, 0.0, -24, 0.0],\n    [0, 0, 2, 2, 2, -38, 0.0, 16, 0.0],\n    [2, 0, 2, 0, 2, -31, 0.0, 13, 0.0],\n    [2, 0, 0, 0, 0, 29, 0.0, -1, 0.0],\n    [1, 0, 2, -2, 2, 29, 0.0, -12, 0.0],\n    [0, 0, 2, 0, 0, 26, 0.0, -1, 0.0],\n    [0, 0, 2, -2, 0, -22, 0.0, 0, 0.0],\n    [-1, 0, 2, 0, 1, 21, 0.0, -10, 0.0],\n    [0, 2, 0, 0, 0, 17, -0.1, 0, 0.0],\n    [0, 2, 2, -2, 2, -16, 0.1, 7, 0.0],\n    [-1, 0, 0, 2, 1, 16, 0.0, -8, 0.0],\n    [0, 1, 0, 0, 1, -15, 0.0, 9, 0.0],\n    [1, 0, 0, -2, 1, -13, 0.0, 7, 0.0],\n    [0, -1, 0, 0, 1, -12, 0.0, 6, 0.0],\n    [2, 0, -2, 0, 0, 11, 0.0, 0, 0.0],\n    [-1, 0, 2, 2, 1, -10, 0.0, 5, 0.0],\n    [1, 0, 2, 2, 2, -8, 0.0, 3, 0.0],\n    [1, 1, 0, -2, 0, -7, 0.0, 0, 0.0],\n    [0, 1, 2, 0, 2, 7, 0.0, -3, 0.0],\n    [0, -1, 2, 0, 2, -7, 0.0, 3, 0.0],\n    [0, 0, 2, 2, 1, -7, 0.0, 3, 0.0],\n    [-2, 0, 0, 2, 1, -6, 0.0, 3, 0.0],\n    [1, 0, 0, 2, 0, 6, 0.0, 0, 0.0],\n    [2, 0, 2, -2, 2, 6, 0.0, -3, 0.0],\n    [0, 0, 0, 2, 1, -6, 0.0, 3, 0.0],\n    [1, 0, 2, -2, 1, 6, 0.0, -3, 0.0],\n    [0, -1, 2, -2, 1, -5, 0.0, 3, 0.0],\n    [0, 0, 0, -2, 1, -5, 0.0, 3, 0.0],\n    [1, -1, 0, 0, 0, 5, 0.0, 0, 0.0],\n    [2, 0, 2, 0, 1, -5, 0.0, 3, 0.0],\n    [2, 0, 0, -2, 1, 4, 0.0, -2, 0.0],\n    [0, 1, 2, -2, 1, 4, 0.0, -2, 0.0],\n    [1, 0, 0, -1, 0, -4, 0.0, 0, 0.0],\n    [0, 1, 0, -2, 0, -4, 0.0, 0, 0.0],\n    [1, 0, -2, 0, 0, 4, 0.0, 0, 0.0],\n    [0, 0, 0, 1, 0, -4, 0.0, 0, 0.0],\n    [-2, 0, 2, 0, 2, -3, 0.0, 1, 0.0],\n    [1, -1, 0, -1, 0, -3, 0.0, 0, 0.0],\n    [1, 1, 0, 0, 0, -3, 0.0, 0, 0.0],\n    [1, 0, 2, 0, 0, 3, 0.0, 0, 0.0],\n    [1, -1, 2, 0, 2, -3, 0.0, 1, 0.0],\n    [-1, -1, 2, 2, 2, -3, 0.0, 1, 0.0],\n    [3, 0, 2, 0, 2, -3, 0.0, 1, 0.0],\n    [0, -1, 2, 2, 2, -3, 0.0, 1, 0.0],\n    [0, -2, 2, -2, 1, -2, 0.0, 1, 0.0],\n    [-2, 0, 0, 0, 1, -2, 0.0, 1, 0.0],\n    [1, 1, 2, 0, 2, 2, 0.0, -1, 0.0],\n    [-1, 0, 2, -2, 1, -2, 0.0, 1, 0.0],\n    [2, 0, 0, 0, 1, 2, 0.0, -1, 0.0],\n    [1, 0, 0, 0, 2, -2, 0.0, 1, 0.0],\n    [3, 0, 0, 0, 0, 2, 0.0, 0, 0.0],\n    [0, 0, 2, 1, 2, 2, 0.0, -1, 0.0],\n    [-1, 0, 2, 4, 2, -2, 0.0, 1, 0.0],\n    [2, 0, -2, 0, 1, 1, 0.0, 0, 0.0],\n    [2, 1, 0, -2, 0, 1, 0.0, 0, 0.0],\n    [0, 0, -2, 2, 1, 1, 0.0, 0, 0.0],\n    [0, 1, -2, 2, 0, -1, 0.0, 0, 0.0],\n    [0, 1, 0, 0, 2, 1, 0.0, 0, 0.0],\n    [-1, 0, 0, 1, 1, 1, 0.0, 0, 0.0],\n    [0, 1, 2, -2, 0, -1, 0.0, 0, 0.0],\n    [-1, 0, 0, 0, 2, 1, 0.0, -1, 0.0],\n    [1, 0, 0, -4, 0, -1, 0.0, 0, 0.0],\n    [-2, 0, 2, 2, 2, 1, 0.0, -1, 0.0],\n    [2, 0, 0, -4, 0, -1, 0.0, 0, 0.0],\n    [1, 1, 2, -2, 2, 1, 0.0, -1, 0.0],\n    [1, 0, 2, 2, 1, -1, 0.0, 1, 0.0],\n    [-2, 0, 2, 4, 2, -1, 0.0, 1, 0.0],\n    [-1, 0, 4, 0, 2, 1, 0.0, 0, 0.0],\n    [1, -1, 0, -2, 0, 1, 0.0, 0, 0.0],\n    [2, 0, 2, -2, 1, 1, 0.0, -1, 0.0],\n    [2, 0, 2, 2, 2, -1, 0.0, 0, 0.0],\n    [1, 0, 0, 2, 1, -1, 0.0, 0, 0.0],\n    [0, 0, 4, -2, 2, 1, 0.0, 0, 0.0],\n    [3, 0, 2, -2, 2, 1, 0.0, 0, 0.0],\n    [1, 0, 2, -2, 0, -1, 0.0, 0, 0.0],\n    [0, 1, 2, 0, 1, 1, 0.0, 0, 0.0],\n    [-1, -1, 0, 2, 1, 1, 0.0, 0, 0.0],\n    [0, 0, -2, 0, 1, -1, 0.0, 0, 0.0],\n    [0, 0, 2, -1, 2, -1, 0.0, 0, 0.0],\n    [0, 1, 0, 2, 0, -1, 0.0, 0, 0.0],\n    [1, 0, -2, -2, 0, -1, 0.0, 0, 0.0],\n    [0, -1, 2, 0, 1, -1, 0.0, 0, 0.0],\n    [1, 1, 0, -2, 1, -1, 0.0, 0, 0.0],\n    [1, 0, -2, 2, 0, -1, 0.0, 0, 0.0],\n    [2, 0, 0, 2, 0, 1, 0.0, 0, 0.0],\n    [0, 0, 2, 4, 2, -1, 0.0, 0, 0.0],\n    [0, 1, 0, 1, 0, 1, 0.0, 0, 0.0],\n];\n","export const DEG = Math.PI / 180;\nexport const RAD = 180 / Math.PI;\n","export const ASTRONOMICAL_UNIT_IN_METERS = 149_597_870_700.0;\nexport const LIGHT_SPEED_KM_PER_SEC = 299_792.458;\n","import {DEG} from '@app/constants/math';\nimport {EARTH_EQUATORIAL_RADIUS_METERS, EARTH_FLATTENING} from '../constants/earth';\nimport {ASTRONOMICAL_UNIT_IN_METERS} from '../constants/units';\nimport type {LatLon} from '../types/LocationTypes';\nimport {cos2, sin2} from './math';\n\nexport function au2km(R: number): number {\n    return R * (ASTRONOMICAL_UNIT_IN_METERS / 1000);\n}\n\nexport function km2au(km: number): number {\n    return km / (ASTRONOMICAL_UNIT_IN_METERS / 1000);\n}\n\nexport function getDistanceInKm(location1: LatLon, location2: LatLon): number {\n    const {lat: lat1, lon: lon1} = location1;\n    const {lat: lat2, lon: lon2} = location2;\n\n    // Meeus 11\n    const F = (lat1 + lat2) / 2;\n    const G = (lat1 - lat2) / 2;\n    const lambda = (lon2 - lon1) / 2;\n\n    const FRad = F * DEG;\n    const GRad = G * DEG;\n    const lambdaRad = lambda * DEG;\n\n    const S = sin2(GRad) * cos2(lambdaRad) + cos2(FRad) * sin2(lambdaRad);\n    const C = cos2(GRad) * cos2(lambdaRad) + sin2(FRad) * sin2(lambdaRad);\n\n    const omegaRad = Math.atan(Math.sqrt(S / C));\n\n    const R = Math.sqrt(S * C) / omegaRad;\n    const D = (2 * omegaRad * EARTH_EQUATORIAL_RADIUS_METERS) / 1000;\n    const H1 = (3 * R - 1) / (2 * C);\n    const H2 = (3 * R + 1) / (2 * S);\n\n    return D * (1 + EARTH_FLATTENING * H1 * sin2(FRad) * cos2(GRad) - EARTH_FLATTENING * H2 * cos2(FRad) * sin2(GRad));\n}\n","import {DEG} from '@app/constants/math';\nimport {normalizeAngle} from '@app/utils/angle';\n\nexport function getMeanAnomaly(T: number): number {\n    // Meeus 47.4\n    const M = 357.5291092 + 35999.0502909 * T - 0.0001536 * T ** 2 + T ** 3 / 2449000;\n\n    return normalizeAngle(M);\n}\n\nexport function getTrueAnomaly(T: number): number {\n    // Meeus 25.4\n    const M = getMeanAnomaly(T);\n    const C = getEquationOfCenter(T);\n\n    return M + C;\n}\n\nexport function getMeanLongitude(T: number): number {\n    const t = T / 10;\n\n    // Meeus 28.2\n    const L0 =\n        280.4664567 + 360007.6982779 * t + 0.03042028 * t ** 2 + t ** 3 / 49931 - t ** 4 / 15300 + t ** 5 / 2000000;\n\n    return normalizeAngle(L0);\n}\n\nexport function getTrueLongitude(T: number): number {\n    // Meeus 25.4\n    const L0 = getMeanLongitude(T);\n    const C = getEquationOfCenter(T);\n\n    return L0 + C;\n}\n\nexport function getApparentLongitude(T: number): number {\n    // Meeus 25.5\n    const o = getTrueLongitude(T);\n\n    const omega = 125.04 - 1934.136 * T;\n    const omegaRad = omega * DEG;\n\n    return o - 0.00569 - 0.00478 * Math.sin(omegaRad);\n}\n\nexport function getEquationOfCenter(T: number): number {\n    const M = getMeanAnomaly(T);\n\n    // Meeus 25.4\n    let C = (1.914602 - 0.004817 * T - 0.000014 * T ** 2) * Math.sin(M * DEG);\n    C += (0.019993 - 0.000101 * T) * Math.sin(2 * M * DEG);\n    C += 0.000289 * Math.sin(3 * M * DEG);\n\n    return C;\n}\n","import {DEG, RAD} from '@app/constants/math';\nimport {MOON_ARGUMENTS_B, MOON_ARGUMENTS_LR} from '@app/constants/moon';\nimport {normalizeAngle} from '@app/utils/angle';\nimport {km2au} from '@app/utils/distance';\nimport * as earth from '@app/utils/earth';\nimport * as sun from '@app/utils/sun';\n\nexport function getMeanElongation(T: number): number {\n    // Meeus 47.2\n    const D = 297.8501921 + 445267.1114034 * T - 0.0018819 * T ** 2 + T ** 3 / 545868 - T ** 4 / 113065000;\n\n    return normalizeAngle(D);\n}\n\nexport function getMeanAnomaly(T: number): number {\n    // Meeus 47.2\n    const Mmoon = 134.9633964 + 477198.8675055 * T + 0.0087414 * T ** 2 + T ** 3 / 69699 - T ** 4 / 1471200;\n\n    return normalizeAngle(Mmoon);\n}\n\nexport function getArgumentOfLatitude(T: number): number {\n    // Meeus 47.5\n    const F = 93.272095 + 483202.0175233 * T - 0.0036539 * T ** 2 - T ** 3 / 352600 + T ** 4 / 86331000;\n\n    return normalizeAngle(F);\n}\n\nexport function getMeanLongitude(T: number): number {\n    // Meeus 47.1\n    const L = 218.3164477 + 481267.88123421 * T - 0.0015786 * T ** 2 + T ** 3 / 538841 - T ** 4 / 65194000;\n\n    return normalizeAngle(L);\n}\n\nexport function getMeanLongitudeOfAscendingNode(T: number): number {\n    return 125.0445479 - 1934.1362891 * T + 0.0020754 * T ** 2 + T ** 3 / 467441 - T ** 4 / 60616000;\n}\n\nexport function getEquatorialHorizontalParallax(T: number): number {\n    const d = getDistanceToEarth(T);\n\n    // Meeus 47\n    return Math.asin(6378.14 / d) * RAD;\n}\n\nexport function getLongitude(T: number): number {\n    const L = getMeanLongitude(T);\n    const sumL = getSumL(T);\n\n    return L + sumL / 1000000;\n}\n\nexport function getLatitude(T: number): number {\n    const sumB = getSumB(T);\n\n    return sumB / 1000000;\n}\n\nexport function getRadiusVector(T: number): number {\n    return km2au(getDistanceToEarth(T));\n}\n\nexport function getDistanceToEarth(T: number): number {\n    const sumR = getSumR(T);\n\n    return 385000.56 + sumR / 1000;\n}\n\nfunction getSumR(T: number): number {\n    // Meeus 47.b\n    const D = getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = getMeanAnomaly(T);\n    const F = getArgumentOfLatitude(T);\n\n    // Action of jupiter\n    const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n\n    let sumR = 0;\n    MOON_ARGUMENTS_LR.forEach((args: Array<number>) => {\n        const argD = args[0];\n        const argMsun = args[1];\n        const argMmoon = args[2];\n        const argF = args[3];\n        const argSumR = args[5];\n\n        let tmpSumR = Math.cos((argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F) * DEG);\n\n        switch (argMsun) {\n            case 1:\n            case -1:\n                tmpSumR = tmpSumR * argSumR * E;\n                break;\n            case 2:\n            case -2:\n                tmpSumR = tmpSumR * argSumR * E * E;\n                break;\n            default:\n                tmpSumR = tmpSumR * argSumR;\n                break;\n        }\n\n        sumR += tmpSumR;\n    });\n\n    return sumR;\n}\n\nfunction getSumL(T: number): number {\n    // Meeus 47.b\n    const L = getMeanLongitude(T);\n    const D = getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = getMeanAnomaly(T);\n    const F = getArgumentOfLatitude(T);\n\n    // Action of venus\n    const A1 = 119.75 + 131.849 * T;\n    // Action of jupiter\n    const A2 = 53.09 + 479264.29 * T;\n    const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n\n    let sumL = 3958 * Math.sin(A1 * DEG) + 1962 * Math.sin((L - F) * DEG) + 318 * Math.sin(A2 * DEG);\n\n    MOON_ARGUMENTS_LR.forEach((args: Array<number>) => {\n        const argD = args[0];\n        const argMsun = args[1];\n        const argMmoon = args[2];\n        const argF = args[3];\n        const argSumL = args[4];\n\n        let tmpSumL = Math.sin((argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F) * DEG);\n\n        switch (argMsun) {\n            case 1:\n            case -1:\n                tmpSumL = tmpSumL * argSumL * E;\n                break;\n            case 2:\n            case -2:\n                tmpSumL = tmpSumL * argSumL * E * E;\n                break;\n            default:\n                tmpSumL = tmpSumL * argSumL;\n                break;\n        }\n\n        sumL += tmpSumL;\n    });\n\n    return sumL;\n}\n\nfunction getSumB(T: number): number {\n    // Meeus 47.B\n    const L = getMeanLongitude(T);\n    const D = getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = getMeanAnomaly(T);\n    const F = getArgumentOfLatitude(T);\n\n    // Action of venus\n    const A1 = 119.75 + 131.849 * T;\n    // Action of jupiter\n    const A3 = 313.45 + 481266.484 * T;\n    const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n\n    let sumB =\n        -2235 * Math.sin(L * DEG)\n        + 382 * Math.sin(A3 * DEG)\n        + 175 * Math.sin((A1 - F) * DEG)\n        + 175 * Math.sin((A1 + F) * DEG)\n        + 127 * Math.sin((L - Mmoon) * DEG)\n        - 115 * Math.sin((L + Mmoon) * DEG);\n\n    MOON_ARGUMENTS_B.forEach((args: Array<number>) => {\n        const argD = args[0];\n        const argMsun = args[1];\n        const argMmoon = args[2];\n        const argF = args[3];\n        const argSumB = args[4];\n\n        let tmpSumB = Math.sin((argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F) * DEG);\n\n        switch (argMsun) {\n            case 1:\n            case -1:\n                tmpSumB = tmpSumB * argSumB * E;\n                break;\n            case 2:\n            case -2:\n                tmpSumB = tmpSumB * argSumB * E ** 2;\n                break;\n            default:\n                tmpSumB = tmpSumB * argSumB;\n                break;\n        }\n\n        sumB += tmpSumB;\n    });\n\n    return sumB;\n}\n\nexport function getOpticalLiberationInLongitude(longitude: number, latitude: number, T: number): number {\n    const latRad = latitude * DEG;\n\n    const i = 1.54242;\n    const iRad = i * DEG;\n\n    const phi = earth.getNutationInLongitude(T);\n    const F = getArgumentOfLatitude(T);\n    const Omega = getMeanLongitudeOfAscendingNode(T);\n\n    // Meeus 53.1\n    const W = normalizeAngle(longitude - phi - Omega);\n    const WRad = W * DEG;\n\n    const ARad = Math.atan2(\n        Math.sin(WRad) * Math.cos(latRad) * Math.cos(iRad) - Math.sin(latRad) * Math.sin(iRad),\n        Math.cos(WRad) * Math.cos(latRad),\n    );\n    const A = normalizeAngle(ARad * RAD);\n\n    return A - F;\n}\n\nexport function getOpticalLiberationInLatitude(longitude: number, latitude: number, T: number): number {\n    const latRad = latitude * DEG;\n\n    const i = 1.54242;\n    const iRad = i * DEG;\n\n    const phi = earth.getNutationInLongitude(T);\n    const Omega = getMeanLongitudeOfAscendingNode(T);\n\n    // Meeus 53.1\n    const W = normalizeAngle(longitude - phi - Omega);\n    const WRad = W * DEG;\n\n    const bRad = Math.asin(-1 * Math.sin(WRad) * Math.cos(latRad) * Math.sin(iRad) - Math.sin(latRad) * Math.cos(iRad));\n\n    return bRad * RAD;\n}\n","import {EARTH_ARGUMENTS_OF_NUTATION} from '@app/constants/earth';\nimport {DEG} from '@app/constants/math';\nimport {normalizeAngle} from '@app/utils/angle';\nimport * as moon from '@app/utils/moon';\nimport * as sun from '@app/utils/sun';\n\nexport function getMeanAnomaly(T: number): number {\n    // Meeus 47.4\n    const M = 357.5291092 + 35999.0502909 * T - 0.0001536 * T ** 2 + T ** 3 / 2449000;\n\n    return normalizeAngle(M);\n}\n\nexport function getEccentricity(T: number): number {\n    // Meeus 25.4\n    return 0.016708634 - 0.000042037 * T - 0.0000001267 * T ** 2;\n}\n\nexport function getLongitudeOfPerihelionOfOrbit(T: number): number {\n    // Meeus 23\n    return 102.93735 + 1.71946 * T + 0.00046 * T ** 2;\n}\n\nexport function getMeanObliquityOfEcliptic(T: number): number {\n    const U = T / 100;\n\n    // Meeus 22.3\n    const eps0 =\n        84381.448\n        - 4680.93 * U\n        - 1.55 * U ** 2\n        + 1999.25 * U ** 3\n        - 51.38 * U ** 4\n        - 249.67 * U ** 5\n        - 39.05 * U ** 6\n        + 7.12 * U ** 7\n        + 27.87 * U ** 8\n        + 5.79 * U ** 9\n        + 2.45 * U ** 10;\n\n    return eps0 / 3600;\n}\n\nexport function getTrueObliquityOfEcliptic(T: number): number {\n    const eps0 = getMeanObliquityOfEcliptic(T);\n    const sumEps = getNutationInObliquity(T);\n\n    // Meeus chapter 22\n    return eps0 + sumEps;\n}\n\nexport function getNutationInLongitude(T: number): number {\n    // Meeus chapter 22\n    const D = moon.getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = moon.getMeanAnomaly(T);\n    const F = moon.getArgumentOfLatitude(T);\n\n    // Longitude of the ascending node of moon's mean orbit on ecliptic\n    const O = 125.04452 - 1934.136261 * T + 0.0020708 * T ** 2 + T ** 3 / 450000;\n\n    let sumPhi = 0;\n    EARTH_ARGUMENTS_OF_NUTATION.forEach((args) => {\n        const argMmoon = args[0]; // Mean anomaly of moon\n        const argMsun = args[1]; // Mean anomaly of sun\n        const argF = args[2]; // Mean argument of perigee\n        const argD = args[3]; // Mean elongation of moon\n        const argO = args[4]; // Mean length of ascending knot of moon's orbit\n        const argPhi1 = args[5];\n        const argPhi2 = args[6];\n\n        const tmpSum = argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F + argO * O;\n\n        sumPhi += Math.sin(tmpSum * DEG) * (argPhi1 + argPhi2 * T);\n    });\n\n    return (sumPhi * 0.0001) / 3600;\n}\n\nexport function getNutationInObliquity(T: number): number {\n    // Meeus chapter 22\n    const D = moon.getMeanElongation(T);\n    const Msun = sun.getMeanAnomaly(T);\n    const Mmoon = moon.getMeanAnomaly(T);\n    const F = moon.getArgumentOfLatitude(T);\n\n    // Longitude of the ascending node of moon's mean orbit on ecliptic\n    const O = 125.04452 - 1934.136261 * T + 0.0020708 * T ** 2 + T ** 3 / 450000;\n\n    let sumEps = 0;\n    EARTH_ARGUMENTS_OF_NUTATION.forEach((args) => {\n        const argMmoon = args[0]; // Mean anomaly of moon\n        const argMsun = args[1]; // Mean anomaly of sun\n        const argF = args[2]; // Mean argument of perigee\n        const argD = args[3]; // Mean elongation of moon\n        const argO = args[4]; // Mean length of ascending knot of moon's orbit\n        const argEps1 = args[7];\n        const argEps2 = args[8];\n\n        const tmpSum = argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F + argO * O;\n\n        sumEps += Math.cos(tmpSum * DEG) * (argEps1 + argEps2 * T);\n    });\n\n    return (sumEps * 0.0001) / 3600;\n}\n","export const EPOCH_J1900 = 2415020.0;\nexport const EPOCH_J1950 = 2433282.5;\nexport const EPOCH_J2000 = 2451545.0;\nexport const EPOCH_J2100 = 2488070.0;\n","// Observed and predicted ΔT (TT − UT1) in seconds as [decimalYear, ΔT] nodes, sorted by year.\n// The decimal year of each observed monthly value is its start-of-month instant, so intra-year\n// (monthly) queries interpolate between the true data points instead of between yearly averages.\n// 1657.0-1972.5 historic (½-yearly):  https://maia.usno.navy.mil/ser7/historic_deltat.data\n// 1973.1-2026.2 observed (monthly):   https://maia.usno.navy.mil/ser7/deltat.data\n// 2026.5-2033.8 predicted (¼-yearly): https://maia.usno.navy.mil/ser7/deltat.preds\n// biome-ignore format: dense data table, kept compact for readability\nexport const REFERENCE_DELTA_T: Array<[number, number]> = [\n    [1657, 44], [1657.5, 43], [1658, 43], [1658.5, 41], [1659, 40], [1659.5, 39],\n    [1660, 38], [1660.5, 37], [1661, 37], [1661.5, 36], [1662, 36], [1662.5, 36],\n    [1663, 37], [1663.5, 37], [1664, 38], [1664.5, 37], [1665, 36], [1665.5, 36],\n    [1666, 35], [1666.5, 35], [1667, 34], [1667.5, 33], [1668, 33], [1668.5, 32],\n    [1669, 32], [1669.5, 31], [1670, 31], [1670.5, 30], [1671, 30], [1671.5, 29],\n    [1672, 29], [1672.5, 29], [1673, 29], [1673.5, 29], [1674, 28], [1674.5, 28],\n    [1675, 27], [1675.5, 27], [1676, 26], [1676.5, 26], [1677, 25], [1677.5, 25],\n    [1678, 25], [1678.5, 26], [1679, 26], [1679.5, 26], [1680, 26], [1680.5, 25],\n    [1681, 25], [1681.5, 25], [1682, 24], [1682.5, 24], [1683, 24], [1683.5, 24],\n    [1684, 24], [1684.5, 24], [1685, 24], [1685.5, 24], [1686, 24], [1686.5, 24],\n    [1687, 23], [1687.5, 23], [1688, 23], [1688.5, 23], [1689, 22], [1689.5, 22],\n    [1690, 22], [1690.5, 22], [1691, 22], [1691.5, 21], [1692, 21], [1692.5, 21],\n    [1693, 21], [1693.5, 21], [1694, 21], [1694.5, 21], [1695, 21], [1695.5, 20],\n    [1696, 20], [1696.5, 20], [1697, 20], [1697.5, 20], [1698, 20], [1698.5, 20],\n    [1699, 20], [1699.5, 20], [1700, 21], [1700.5, 21], [1701, 21], [1701.5, 20],\n    [1702, 20], [1702.5, 20], [1703, 20], [1703.5, 20], [1704, 19], [1704.5, 19],\n    [1705, 19], [1705.5, 19], [1706, 19], [1706.5, 20], [1707, 20], [1707.5, 20],\n    [1708, 20], [1708.5, 19], [1709, 20], [1709.5, 20], [1710, 20], [1710.5, 20],\n    [1711, 20], [1711.5, 20], [1712, 21], [1712.5, 21], [1713, 21], [1713.5, 21],\n    [1714, 21], [1714.5, 21], [1715, 21], [1715.5, 21], [1716, 21], [1716.5, 21],\n    [1717, 21], [1717.5, 21], [1718, 21], [1718.5, 21], [1719, 21], [1719.5, 21],\n    [1720, 21.1], [1720.5, 21], [1721, 21], [1721.5, 21], [1722, 20.9], [1722.5, 20.8],\n    [1723, 20.7], [1723.5, 20.6], [1724, 20.4], [1724.5, 20.2], [1725, 20], [1725.5, 19.7],\n    [1726, 19.4], [1726.5, 19.1], [1727, 18.7], [1727.5, 18.3], [1728, 17.8], [1728.5, 17.4],\n    [1729, 17], [1729.5, 16.8], [1730, 16.6], [1730.5, 16.4], [1731, 16.1], [1731.5, 15.9],\n    [1732, 15.7], [1732.5, 15.5], [1733, 15.3], [1733.5, 15], [1734, 14.7], [1734.5, 14.5],\n    [1735, 14.3], [1735.5, 14.2], [1736, 14.1], [1736.5, 14.1], [1737, 14.1], [1737.5, 13.9],\n    [1738, 13.7], [1738.5, 13.6], [1739, 13.5], [1739.5, 13.5], [1740, 13.5], [1740.5, 13.5],\n    [1741, 13.4], [1741.5, 13.4], [1742, 13.4], [1742.5, 13.4], [1743, 13.3], [1743.5, 13.3],\n    [1744, 13.2], [1744.5, 13.2], [1745, 13.2], [1745.5, 13.1], [1746, 13.1], [1746.5, 13.1],\n    [1747, 13], [1747.5, 13.2], [1748, 13.3], [1748.5, 13.4], [1749, 13.5], [1749.5, 13.6],\n    [1750, 13.7], [1750.5, 13.8], [1751, 13.9], [1751.5, 14], [1752, 14], [1752.5, 14.1],\n    [1753, 14.1], [1753.5, 14.1], [1754, 14.1], [1754.5, 14.2], [1755, 14.3], [1755.5, 14.4],\n    [1756, 14.4], [1756.5, 14.5], [1757, 14.6], [1757.5, 14.6], [1758, 14.7], [1758.5, 14.7],\n    [1759, 14.7], [1759.5, 14.8], [1760, 14.8], [1760.5, 14.9], [1761, 14.9], [1761.5, 15],\n    [1762, 15], [1762.5, 15.1], [1763, 15.2], [1763.5, 15.3], [1764, 15.4], [1764.5, 15.5],\n    [1765, 15.6], [1765.5, 15.6], [1766, 15.6], [1766.5, 15.8], [1767, 15.9], [1767.5, 15.9],\n    [1768, 15.9], [1768.5, 15.8], [1769, 15.7], [1769.5, 15.8], [1770, 15.7], [1770.5, 15.7],\n    [1771, 15.7], [1771.5, 15.8], [1772, 15.9], [1772.5, 16.1], [1773, 16.1], [1773.5, 16],\n    [1774, 15.9], [1774.5, 15.9], [1775, 15.7], [1775.5, 15.4], [1776, 15.3], [1776.5, 15.4],\n    [1777, 15.5], [1777.5, 15.6], [1778, 15.6], [1778.5, 15.6], [1779, 15.6], [1779.5, 15.6],\n    [1780, 15.6], [1780.5, 15.6], [1781, 15.5], [1781.5, 15.5], [1782, 15.4], [1782.5, 15.3],\n    [1783, 15.2], [1783.5, 15.1], [1784, 14.9], [1784.5, 14.8], [1785, 14.6], [1785.5, 14.4],\n    [1786, 14.3], [1786.5, 14.2], [1787, 14.1], [1787.5, 14.2], [1788, 14.2], [1788.5, 13.9],\n    [1789, 13.7], [1789.5, 13.5], [1790, 13.3], [1790.5, 13.1], [1791, 13], [1791.5, 13.2],\n    [1792, 13.2], [1792.5, 13.1], [1793, 13.1], [1793.5, 13.2], [1794, 13.3], [1794.5, 13.5],\n    [1795, 13.5], [1795.5, 13.4], [1796, 13.2], [1796.5, 13.2], [1797, 13.1], [1797.5, 13.1],\n    [1798, 13], [1798.5, 12.8], [1799, 12.6], [1799.5, 12.7], [1800, 12.6], [1800.5, 12.3],\n    [1801, 12], [1801.5, 11.9], [1802, 11.8], [1802.5, 11.6], [1803, 11.4], [1803.5, 11.2],\n    [1804, 11.1], [1804.5, 11.1], [1805, 11.1], [1805.5, 11.1], [1806, 11.1], [1806.5, 11.2],\n    [1807, 11.1], [1807.5, 11.1], [1808, 11.2], [1808.5, 11.4], [1809, 11.5], [1809.5, 11.3],\n    [1810, 11.2], [1810.5, 11.4], [1811, 11.7], [1811.5, 11.9], [1812, 11.9], [1812.5, 11.9],\n    [1813, 11.8], [1813.5, 11.7], [1814, 11.8], [1814.5, 11.8], [1815, 11.8], [1815.5, 11.7],\n    [1816, 11.6], [1816.5, 11.6], [1817, 11.5], [1817.5, 11.5], [1818, 11.4], [1818.5, 11.4],\n    [1819, 11.3], [1819.5, 11.3], [1820, 11.13], [1820.5, 11.16], [1821, 10.94], [1821.5, 10.72],\n    [1822, 10.29], [1822.5, 10.04], [1823, 9.94], [1823.5, 9.91], [1824, 9.88], [1824.5, 9.86],\n    [1825, 9.72], [1825.5, 9.67], [1826, 9.66], [1826.5, 9.64], [1827, 9.51], [1827.5, 9.4],\n    [1828, 9.21], [1828.5, 9], [1829, 8.6], [1829.5, 8.29], [1830, 7.95], [1830.5, 7.73],\n    [1831, 7.59], [1831.5, 7.49], [1832, 7.36], [1832.5, 7.26], [1833, 7.1], [1833.5, 7],\n    [1834, 6.89], [1834.5, 6.82], [1835, 6.73], [1835.5, 6.64], [1836, 6.39], [1836.5, 6.28],\n    [1837, 6.25], [1837.5, 6.27], [1838, 6.25], [1838.5, 6.27], [1839, 6.22], [1839.5, 6.24],\n    [1840, 6.22], [1840.5, 6.27], [1841, 6.3], [1841.5, 6.36], [1842, 6.35], [1842.5, 6.37],\n    [1843, 6.32], [1843.5, 6.33], [1844, 6.33], [1844.5, 6.37], [1845, 6.37], [1845.5, 6.41],\n    [1846, 6.4], [1846.5, 6.44], [1847, 6.46], [1847.5, 6.51], [1848, 6.48], [1848.5, 6.51],\n    [1849, 6.53], [1849.5, 6.58], [1850, 6.55], [1850.5, 6.61], [1851, 6.69], [1851.5, 6.8],\n    [1852, 6.84], [1852.5, 6.94], [1853, 7.03], [1853.5, 7.13], [1854, 7.15], [1854.5, 7.22],\n    [1855, 7.26], [1855.5, 7.3], [1856, 7.23], [1856.5, 7.22], [1857, 7.21], [1857.5, 7.2],\n    [1858, 6.99], [1858.5, 6.98], [1859, 7.19], [1859.5, 7.36], [1860, 7.35], [1860.5, 7.39],\n    [1861, 7.41], [1861.5, 7.45], [1862, 7.36], [1862.5, 7.18], [1863, 6.95], [1863.5, 6.72],\n    [1864, 6.45], [1864.5, 6.24], [1865, 5.92], [1865.5, 5.59], [1866, 5.15], [1866.5, 4.67],\n    [1867, 4.11], [1867.5, 3.52], [1868, 2.94], [1868.5, 2.47], [1869, 1.97], [1869.5, 1.52],\n    [1870, 1.04], [1870.5, 0.6], [1871, 0.11], [1871.5, -0.34], [1872, -0.82], [1872.5, -1.25],\n    [1873, -1.7], [1873.5, -2.08], [1874, -2.48], [1874.5, -2.82], [1875, -3.19], [1875.5, -3.5],\n    [1876, -3.84], [1876.5, -4.14], [1877, -4.43], [1877.5, -4.59], [1878, -4.79], [1878.5, -4.92],\n    [1879, -5.09], [1879.5, -5.24], [1880, -5.36], [1880.5, -5.34], [1881, -5.37], [1881.5, -5.32],\n    [1882, -5.34], [1882.5, -5.33], [1883, -5.4], [1883.5, -5.47], [1884, -5.58], [1884.5, -5.66],\n    [1885, -5.74], [1885.5, -5.68], [1886, -5.69], [1886.5, -5.65], [1887, -5.67], [1887.5, -5.68],\n    [1888, -5.73], [1888.5, -5.72], [1889, -5.78], [1889.5, -5.79], [1890, -5.86], [1890.5, -5.89],\n    [1891, -6.01], [1891.5, -6.13], [1892, -6.28], [1892.5, -6.41], [1893, -6.53], [1893.5, -6.49],\n    [1894, -6.5], [1894.5, -6.45], [1895, -6.41], [1895.5, -6.26], [1896, -6.11], [1896.5, -5.9],\n    [1897, -5.63], [1897.5, -5.13], [1898, -4.68], [1898.5, -4.19], [1899, -3.72], [1899.5, -3.21],\n    [1900, -2.7], [1900.5, -2.09], [1901, -1.48], [1901.5, -0.75], [1902, -0.08], [1902.5, 0.62],\n    [1903, 1.26], [1903.5, 1.95], [1904, 2.59], [1904.5, 3.28], [1905, 3.92], [1905.5, 4.61],\n    [1906, 5.2], [1906.5, 5.73], [1907, 6.29], [1907.5, 7], [1908, 7.68], [1908.5, 8.45],\n    [1909, 9.13], [1909.5, 9.78], [1910, 10.38], [1910.5, 10.99], [1911, 11.64], [1911.5, 12.47],\n    [1912, 13.23], [1912.5, 14], [1913, 14.69], [1913.5, 15.38], [1914, 16], [1914.5, 16.64],\n    [1915, 17.19], [1915.5, 17.72], [1916, 18.19], [1916.5, 18.67], [1917, 19.13], [1917.5, 19.69],\n    [1918, 20.14], [1918.5, 20.54], [1919, 20.86], [1919.5, 21.14], [1920, 21.41], [1920.5, 21.78],\n    [1921, 22.06], [1921.5, 22.3], [1922, 22.51], [1922.5, 22.79], [1923, 23.01], [1923.5, 23.29],\n    [1924, 23.46], [1924.5, 23.55], [1925, 23.63], [1925.5, 23.8], [1926, 23.95], [1926.5, 24.25],\n    [1927, 24.39], [1927.5, 24.42], [1928, 24.34], [1928.5, 24.22], [1929, 24.1], [1929.5, 24.08],\n    [1930, 24.02], [1930.5, 24.04], [1931, 23.98], [1931.5, 23.91], [1932, 23.89], [1932.5, 23.95],\n    [1933, 23.93], [1933.5, 23.92], [1934, 23.88], [1934.5, 23.94], [1935, 23.91], [1935.5, 23.82],\n    [1936, 23.76], [1936.5, 23.87], [1937, 23.91], [1937.5, 23.95], [1938, 23.96], [1938.5, 24],\n    [1939, 24.04], [1939.5, 24.2], [1940, 24.35], [1940.5, 24.61], [1941, 24.82], [1941.5, 25.09],\n    [1942, 25.3], [1942.5, 25.56], [1943, 25.77], [1943.5, 26.05], [1944, 26.27], [1944.5, 26.54],\n    [1945, 26.76], [1945.5, 27.04], [1946, 27.27], [1946.5, 27.55], [1947, 27.77], [1947.5, 28.03],\n    [1948, 28.25], [1948.5, 28.5], [1949, 28.7], [1949.5, 28.95], [1950, 29.15], [1950.5, 29.38],\n    [1951, 29.57], [1951.5, 29.8], [1952, 29.97], [1952.5, 30.19], [1953, 30.36], [1953.5, 30.57],\n    [1954, 30.72], [1954.5, 30.93], [1955, 31.07], [1955.5, 31.24], [1956, 31.349], [1956.5, 31.516],\n    [1957, 31.677], [1957.5, 31.923], [1958, 32.166], [1958.5, 32.449], [1959, 32.671], [1959.5, 32.919],\n    [1960, 33.15], [1960.5, 33.397], [1961, 33.584], [1961.5, 33.804], [1962, 33.992], [1962.5, 34.24],\n    [1963, 34.466], [1963.5, 34.731], [1964, 35.03], [1964.5, 35.4], [1965, 35.738], [1965.5, 36.147],\n    [1966, 36.546], [1966.5, 36.995], [1967, 37.429], [1967.5, 37.879], [1968, 38.291], [1968.5, 38.753],\n    [1969, 39.204], [1969.5, 39.707], [1970, 40.182], [1970.5, 40.706], [1971, 41.17], [1971.5, 41.686],\n    [1972, 42.227], [1972.5, 42.825], [1973, 43.373], [1973.0833, 43.4724], [1973.1667, 43.5648], [1973.25, 43.6737],\n    [1973.3333, 43.7782], [1973.4167, 43.8763], [1973.5, 43.9562], [1973.5833, 44.0315], [1973.6667, 44.1132], [1973.75, 44.1982],\n    [1973.8333, 44.2952], [1973.9167, 44.3936], [1974, 44.4841], [1974.0833, 44.5646], [1974.1667, 44.6425], [1974.25, 44.7386],\n    [1974.3333, 44.837], [1974.4167, 44.9302], [1974.5, 44.9986], [1974.5833, 45.0584], [1974.6667, 45.1284], [1974.75, 45.2064],\n    [1974.8333, 45.298], [1974.9167, 45.3897], [1975, 45.4761], [1975.0833, 45.5632], [1975.1667, 45.645], [1975.25, 45.7375],\n    [1975.3333, 45.8284], [1975.4167, 45.9133], [1975.5, 45.982], [1975.5833, 46.0407], [1975.6667, 46.1067], [1975.75, 46.1825],\n    [1975.8333, 46.2789], [1975.9167, 46.3713], [1976, 46.4567], [1976.0833, 46.5445], [1976.1667, 46.6311], [1976.25, 46.7302],\n    [1976.3333, 46.8284], [1976.4167, 46.9247], [1976.5, 46.997], [1976.5833, 47.0709], [1976.6667, 47.1451], [1976.75, 47.2362],\n    [1976.8333, 47.3413], [1976.9167, 47.4319], [1977, 47.5214], [1977.0833, 47.6049], [1977.1667, 47.6837], [1977.25, 47.7781],\n    [1977.3333, 47.8771], [1977.4167, 47.9687], [1977.5, 48.0348], [1977.5833, 48.0942], [1977.6667, 48.1608], [1977.75, 48.246],\n    [1977.8333, 48.3439], [1977.9167, 48.4355], [1978, 48.5344], [1978.0833, 48.6325], [1978.1667, 48.7294], [1978.25, 48.8365],\n    [1978.3333, 48.9353], [1978.4167, 49.0319], [1978.5, 49.1013], [1978.5833, 49.1591], [1978.6667, 49.2286], [1978.75, 49.307],\n    [1978.8333, 49.4018], [1978.9167, 49.4945], [1979, 49.5861], [1979.0833, 49.6805], [1979.1667, 49.7602], [1979.25, 49.8556],\n    [1979.3333, 49.9489], [1979.4167, 50.0347], [1979.5, 50.1019], [1979.5833, 50.1622], [1979.6667, 50.226], [1979.75, 50.2968],\n    [1979.8333, 50.3831], [1979.9167, 50.4599], [1980, 50.5387], [1980.0833, 50.616], [1980.1667, 50.6866], [1980.25, 50.7658],\n    [1980.3333, 50.8454], [1980.4167, 50.9187], [1980.5, 50.9761], [1980.5833, 51.0278], [1980.6667, 51.0843], [1980.75, 51.1538],\n    [1980.8333, 51.2319], [1980.9167, 51.3063], [1981, 51.3808], [1981.0833, 51.4526], [1981.1667, 51.516], [1981.25, 51.5985],\n    [1981.3333, 51.6809], [1981.4167, 51.7573], [1981.5, 51.8133], [1981.5833, 51.8532], [1981.6667, 51.9014], [1981.75, 51.9603],\n    [1981.8333, 52.0328], [1981.9167, 52.0985], [1982, 52.1668], [1982.0833, 52.2316], [1982.1667, 52.2938], [1982.25, 52.368],\n    [1982.3333, 52.4465], [1982.4167, 52.518], [1982.5, 52.5751], [1982.5833, 52.6178], [1982.6667, 52.6668], [1982.75, 52.734],\n    [1982.8333, 52.8056], [1982.9167, 52.8792], [1983, 52.9565], [1983.0833, 53.0445], [1983.1667, 53.1268], [1983.25, 53.2197],\n    [1983.3333, 53.3024], [1983.4167, 53.3747], [1983.5, 53.4335], [1983.5833, 53.4778], [1983.6667, 53.53], [1983.75, 53.5845],\n    [1983.8333, 53.6523], [1983.9167, 53.7256], [1984, 53.7882], [1984.0833, 53.8367], [1984.1667, 53.883], [1984.25, 53.9443],\n    [1984.3333, 54.0042], [1984.4167, 54.0536], [1984.5, 54.0856], [1984.5833, 54.1084], [1984.6667, 54.1463], [1984.75, 54.1914],\n    [1984.8333, 54.2452], [1984.9167, 54.2958], [1985, 54.3427], [1985.0833, 54.3911], [1985.1667, 54.432], [1985.25, 54.4898],\n    [1985.3333, 54.5456], [1985.4167, 54.5977], [1985.5, 54.6355], [1985.5833, 54.6532], [1985.6667, 54.6776], [1985.75, 54.7174],\n    [1985.8333, 54.7741], [1985.9167, 54.8253], [1986, 54.8713], [1986.0833, 54.9161], [1986.1667, 54.9581], [1986.25, 54.9997],\n    [1986.3333, 55.0476], [1986.4167, 55.0912], [1986.5, 55.1132], [1986.5833, 55.1328], [1986.6667, 55.1532], [1986.75, 55.1898],\n    [1986.8333, 55.2416], [1986.9167, 55.2838], [1987, 55.3222], [1987.0833, 55.3613], [1987.1667, 55.4063], [1987.25, 55.4629],\n    [1987.3333, 55.5111], [1987.4167, 55.5524], [1987.5, 55.5812], [1987.5833, 55.6004], [1987.6667, 55.6262], [1987.75, 55.6656],\n    [1987.8333, 55.7168], [1987.9167, 55.7698], [1988, 55.8197], [1988.0833, 55.8615], [1988.1667, 55.913], [1988.25, 55.9663],\n    [1988.3333, 56.022], [1988.4167, 56.07], [1988.5, 56.0939], [1988.5833, 56.1105], [1988.6667, 56.1314], [1988.75, 56.1611],\n    [1988.8333, 56.2068], [1988.9167, 56.2583], [1989, 56.3], [1989.0833, 56.3399], [1989.1667, 56.379], [1989.25, 56.4283],\n    [1989.3333, 56.4804], [1989.4167, 56.5352], [1989.5, 56.5697], [1989.5833, 56.5983], [1989.6667, 56.6328], [1989.75, 56.6739],\n    [1989.8333, 56.7332], [1989.9167, 56.7972], [1990, 56.8553], [1990.0833, 56.9111], [1990.1667, 56.9755], [1990.25, 57.0471],\n    [1990.3333, 57.1136], [1990.4167, 57.1738], [1990.5, 57.2226], [1990.5833, 57.2597], [1990.6667, 57.3073], [1990.75, 57.3643],\n    [1990.8333, 57.4334], [1990.9167, 57.5016], [1991, 57.5653], [1991.0833, 57.6333], [1991.1667, 57.6973], [1991.25, 57.7711],\n    [1991.3333, 57.8407], [1991.4167, 57.9058], [1991.5, 57.9576], [1991.5833, 57.9975], [1991.6667, 58.0426], [1991.75, 58.1043],\n    [1991.8333, 58.1679], [1991.9167, 58.2389], [1992, 58.3092], [1992.0833, 58.3833], [1992.1667, 58.4537], [1992.25, 58.5401],\n    [1992.3333, 58.6228], [1992.4167, 58.6917], [1992.5, 58.741], [1992.5833, 58.7836], [1992.6667, 58.8406], [1992.75, 58.8986],\n    [1992.8333, 58.9714], [1992.9167, 59.0438], [1993, 59.1218], [1993.0833, 59.2003], [1993.1667, 59.2747], [1993.25, 59.3574],\n    [1993.3333, 59.4434], [1993.4167, 59.5242], [1993.5, 59.585], [1993.5833, 59.6343], [1993.6667, 59.6928], [1993.75, 59.7588],\n    [1993.8333, 59.8386], [1993.9167, 59.9111], [1994, 59.9845], [1994.0833, 60.0564], [1994.1667, 60.1231], [1994.25, 60.2042],\n    [1994.3333, 60.2804], [1994.4167, 60.353], [1994.5, 60.4012], [1994.5833, 60.444], [1994.6667, 60.49], [1994.75, 60.5578],\n    [1994.8333, 60.6324], [1994.9167, 60.7059], [1995, 60.7853], [1995.0833, 60.8664], [1995.1667, 60.9387], [1995.25, 61.0277],\n    [1995.3333, 61.1103], [1995.4167, 61.187], [1995.5, 61.2454], [1995.5833, 61.2881], [1995.6667, 61.3378], [1995.75, 61.4036],\n    [1995.8333, 61.476], [1995.9167, 61.5525], [1996, 61.6287], [1996.0833, 61.6846], [1996.1667, 61.7433], [1996.25, 61.8132],\n    [1996.3333, 61.8823], [1996.4167, 61.9497], [1996.5, 61.9969], [1996.5833, 62.0343], [1996.6667, 62.0714], [1996.75, 62.1202],\n    [1996.8333, 62.181], [1996.9167, 62.2382], [1997, 62.295], [1997.0833, 62.3506], [1997.1667, 62.3995], [1997.25, 62.4754],\n    [1997.3333, 62.5463], [1997.4167, 62.6136], [1997.5, 62.6571], [1997.5833, 62.6942], [1997.6667, 62.7383], [1997.75, 62.7926],\n    [1997.8333, 62.8567], [1997.9167, 62.9146], [1998, 62.9659], [1998.0833, 63.0217], [1998.1667, 63.0807], [1998.25, 63.1462],\n    [1998.3333, 63.2053], [1998.4167, 63.2599], [1998.5, 63.2844], [1998.5833, 63.2961], [1998.6667, 63.3126], [1998.75, 63.3422],\n    [1998.8333, 63.3871], [1998.9167, 63.4339], [1999, 63.4673], [1999.0833, 63.4979], [1999.1667, 63.5319], [1999.25, 63.5679],\n    [1999.3333, 63.6104], [1999.4167, 63.6444], [1999.5, 63.6642], [1999.5833, 63.6739], [1999.6667, 63.6926], [1999.75, 63.7147],\n    [1999.8333, 63.7518], [1999.9167, 63.7927], [2000, 63.8285], [2000.0833, 63.8557], [2000.1667, 63.8804], [2000.25, 63.9075],\n    [2000.3333, 63.9393], [2000.4167, 63.9691], [2000.5, 63.9799], [2000.5833, 63.9833], [2000.6667, 63.9938], [2000.75, 64.0093],\n    [2000.8333, 64.04], [2000.9167, 64.067], [2001, 64.0908], [2001.0833, 64.1068], [2001.1667, 64.1282], [2001.25, 64.1584],\n    [2001.3333, 64.1833], [2001.4167, 64.2094], [2001.5, 64.2117], [2001.5833, 64.2073], [2001.6667, 64.2116], [2001.75, 64.2223],\n    [2001.8333, 64.25], [2001.9167, 64.2761], [2002, 64.2998], [2002.0833, 64.3192], [2002.1667, 64.345], [2002.25, 64.3735],\n    [2002.3333, 64.3943], [2002.4167, 64.4151], [2002.5, 64.4132], [2002.5833, 64.4118], [2002.6667, 64.4097], [2002.75, 64.4168],\n    [2002.8333, 64.4329], [2002.9167, 64.4511], [2003, 64.4734], [2003.0833, 64.4893], [2003.1667, 64.5053], [2003.25, 64.5269],\n    [2003.3333, 64.5471], [2003.4167, 64.5597], [2003.5, 64.5512], [2003.5833, 64.5371], [2003.6667, 64.5359], [2003.75, 64.5415],\n    [2003.8333, 64.5544], [2003.9167, 64.5654], [2004, 64.5736], [2004.0833, 64.5891], [2004.1667, 64.6015], [2004.25, 64.6176],\n    [2004.3333, 64.6374], [2004.4167, 64.6549], [2004.5, 64.653], [2004.5833, 64.6379], [2004.6667, 64.6372], [2004.75, 64.64],\n    [2004.8333, 64.6543], [2004.9167, 64.6723], [2005, 64.6876], [2005.0833, 64.7052], [2005.1667, 64.7313], [2005.25, 64.7575],\n    [2005.3333, 64.7811], [2005.4167, 64.8001], [2005.5, 64.7995], [2005.5833, 64.7876], [2005.6667, 64.7831], [2005.75, 64.7921],\n    [2005.8333, 64.8096], [2005.9167, 64.8311], [2006, 64.8452], [2006.0833, 64.8597], [2006.1667, 64.885], [2006.25, 64.9175],\n    [2006.3333, 64.948], [2006.4167, 64.9794], [2006.5, 64.9895], [2006.5833, 65.0028], [2006.6667, 65.0138], [2006.75, 65.0371],\n    [2006.8333, 65.0773], [2006.9167, 65.1122], [2007, 65.1464], [2007.0833, 65.1833], [2007.1667, 65.2145], [2007.25, 65.2494],\n    [2007.3333, 65.2921], [2007.4167, 65.3279], [2007.5, 65.3413], [2007.5833, 65.3452], [2007.6667, 65.3496], [2007.75, 65.3711],\n    [2007.8333, 65.3972], [2007.9167, 65.4296], [2008, 65.4573], [2008.0833, 65.4868], [2008.1667, 65.5152], [2008.25, 65.545],\n    [2008.3333, 65.5781], [2008.4167, 65.6127], [2008.5, 65.6288], [2008.5833, 65.637], [2008.6667, 65.6493], [2008.75, 65.676],\n    [2008.8333, 65.7097], [2008.9167, 65.7461], [2009, 65.7768], [2009.0833, 65.8025], [2009.1667, 65.8237], [2009.25, 65.8595],\n    [2009.3333, 65.8973], [2009.4167, 65.9323], [2009.5, 65.9509], [2009.5833, 65.9534], [2009.6667, 65.9628], [2009.75, 65.9839],\n    [2009.8333, 66.0147], [2009.9167, 66.042], [2010, 66.0699], [2010.0833, 66.0961], [2010.1667, 66.131], [2010.25, 66.1683],\n    [2010.3333, 66.2072], [2010.4167, 66.2356], [2010.5, 66.2409], [2010.5833, 66.2335], [2010.6667, 66.2349], [2010.75, 66.2441],\n    [2010.8333, 66.2751], [2010.9167, 66.3054], [2011, 66.3246], [2011.0833, 66.3406], [2011.1667, 66.3624], [2011.25, 66.3957],\n    [2011.3333, 66.4289], [2011.4167, 66.4619], [2011.5, 66.4749], [2011.5833, 66.4751], [2011.6667, 66.4829], [2011.75, 66.5056],\n    [2011.8333, 66.5383], [2011.9167, 66.5706], [2012, 66.603], [2012.0833, 66.634], [2012.1667, 66.6569], [2012.25, 66.6925],\n    [2012.3333, 66.7289], [2012.4167, 66.7579], [2012.5, 66.7708], [2012.5833, 66.774], [2012.6667, 66.7846], [2012.75, 66.8103],\n    [2012.8333, 66.84], [2012.9167, 66.8779], [2013, 66.9069], [2013.0833, 66.9443], [2013.1667, 66.9763], [2013.25, 67.0258],\n    [2013.3333, 67.0716], [2013.4167, 67.11], [2013.5, 67.1266], [2013.5833, 67.1331], [2013.6667, 67.1458], [2013.75, 67.1717],\n    [2013.8333, 67.2091], [2013.9167, 67.246], [2014, 67.281], [2014.0833, 67.3136], [2014.1667, 67.3457], [2014.25, 67.389],\n    [2014.3333, 67.4318], [2014.4167, 67.4666], [2014.5, 67.4858], [2014.5833, 67.4989], [2014.6667, 67.5111], [2014.75, 67.5353],\n    [2014.8333, 67.5711], [2014.9167, 67.607], [2015, 67.6439], [2015.0833, 67.6765], [2015.1667, 67.7117], [2015.25, 67.7591],\n    [2015.3333, 67.8012], [2015.4167, 67.8402], [2015.5, 67.8606], [2015.5833, 67.8822], [2015.6667, 67.912], [2015.75, 67.9546],\n    [2015.8333, 68.0055], [2015.9167, 68.0514], [2016, 68.1024], [2016.0833, 68.1577], [2016.1667, 68.2044], [2016.25, 68.2665],\n    [2016.3333, 68.3188], [2016.4167, 68.3704], [2016.5, 68.3964], [2016.5833, 68.4094], [2016.6667, 68.4305], [2016.75, 68.463],\n    [2016.8333, 68.5078], [2016.9167, 68.5537], [2017, 68.5927], [2017.0833, 68.6298], [2017.1667, 68.6671], [2017.25, 68.7135],\n    [2017.3333, 68.7623], [2017.4167, 68.8033], [2017.5, 68.8245], [2017.5833, 68.8373], [2017.6667, 68.8477], [2017.75, 68.8689],\n    [2017.8333, 68.9006], [2017.9167, 68.9355], [2018, 68.9676], [2018.0833, 68.9875], [2018.1667, 69.0176], [2018.25, 69.0499],\n    [2018.3333, 69.0823], [2018.4167, 69.107], [2018.5, 69.1134], [2018.5833, 69.1142], [2018.6667, 69.1207], [2018.75, 69.1356],\n    [2018.8333, 69.1646], [2018.9167, 69.1964], [2019, 69.2202], [2019.0833, 69.2452], [2019.1667, 69.2733], [2019.25, 69.3032],\n    [2019.3333, 69.3326], [2019.4167, 69.3541], [2019.5, 69.3582], [2019.5833, 69.3442], [2019.6667, 69.3376], [2019.75, 69.3377],\n    [2019.8333, 69.3432], [2019.9167, 69.354], [2020, 69.3612], [2020.0833, 69.3752], [2020.1667, 69.389], [2020.25, 69.4092],\n    [2020.3333, 69.4265], [2020.4167, 69.4386], [2020.5, 69.4241], [2020.5833, 69.3921], [2020.6667, 69.3693], [2020.75, 69.3575],\n    [2020.8333, 69.3593], [2020.9167, 69.363], [2021, 69.3594], [2021.0833, 69.351], [2021.1667, 69.3538], [2021.25, 69.3582],\n    [2021.3333, 69.3673], [2021.4167, 69.3679], [2021.5, 69.3514], [2021.5833, 69.3273], [2021.6667, 69.3033], [2021.75, 69.2892],\n    [2021.8333, 69.2881], [2021.9167, 69.2908], [2022, 69.2945], [2022.0833, 69.2914], [2022.1667, 69.2861], [2022.25, 69.2835],\n    [2022.3333, 69.2816], [2022.4167, 69.2799], [2022.5, 69.2527], [2022.5833, 69.2213], [2022.6667, 69.1975], [2022.75, 69.1891],\n    [2022.8333, 69.1942], [2022.9167, 69.2036], [2023, 69.2039], [2023.0833, 69.1986], [2023.1667, 69.1993], [2023.25, 69.2084],\n    [2023.3333, 69.2183], [2023.4167, 69.23], [2023.5, 69.2201], [2023.5833, 69.1988], [2023.6667, 69.1814], [2023.75, 69.1723],\n    [2023.8333, 69.1727], [2023.9167, 69.1724], [2024, 69.1752], [2024.0833, 69.1797], [2024.1667, 69.1874], [2024.25, 69.1983],\n    [2024.3333, 69.2018], [2024.4167, 69.2044], [2024.5, 69.1879], [2024.5833, 69.1588], [2024.6667, 69.1322], [2024.75, 69.125],\n    [2024.8333, 69.1304], [2024.9167, 69.1345], [2025, 69.1377], [2025.0833, 69.1366], [2025.1667, 69.1384], [2025.25, 69.1471],\n    [2025.3333, 69.1542], [2025.4167, 69.155], [2025.5, 69.1406], [2025.5833, 69.1219], [2025.6667, 69.0994], [2025.75, 69.0909],\n    [2025.8333, 69.0909], [2025.9167, 69.1042], [2026, 69.1099], [2026.0833, 69.1133], [2026.1667, 69.1168], [2026.25, 69.133],\n    [2026.5, 69.11], [2026.75, 69.09], [2027, 69.14], [2027.25, 69.21], [2027.5, 69.26], [2027.75, 69.26],\n    [2028, 69.34], [2028.25, 69.44], [2028.5, 69.51], [2028.75, 69.54], [2029, 69.63], [2029.25, 69.75],\n    [2029.5, 69.83], [2029.75, 69.87], [2030, 69.97], [2030.25, 70.08], [2030.5, 70.17], [2030.75, 70.21],\n    [2031, 70.32], [2031.25, 70.42], [2031.5, 70.51], [2031.75, 70.53], [2032, 70.62], [2032.25, 70.72],\n    [2032.5, 70.82], [2032.75, 70.86], [2033, 70.98], [2033.25, 71.1], [2033.5, 71.2], [2033.75, 71.25],\n];\n","import {REFERENCE_DELTA_T} from '../constants/deltaTReference';\n\nconst REFERENCE_MIN_YEAR = Math.floor(REFERENCE_DELTA_T[0][0]);\nconst REFERENCE_MAX_YEAR = Math.floor(REFERENCE_DELTA_T[REFERENCE_DELTA_T.length - 1][0]);\n\n// Cubic least-squares fit to the most recent reference years, used to extrapolate ΔT beyond the tabulated years.\nconst FUTURE_FIT_START_YEAR = 2005;\nconst FUTURE_DELTA_T_COEFFICIENTS = fitPolynomial(\n    yearlyReferenceValues(FUTURE_FIT_START_YEAR, REFERENCE_MAX_YEAR).map((deltaT, index) => [\n        FUTURE_FIT_START_YEAR + index - 2000,\n        deltaT,\n    ]),\n    3,\n);\n\nexport function getDeltaT(year: number, month = 0): number {\n    // https://eclipse.gsfc.nasa.gov/SEcat5/deltatpoly.html\n    const y = year + (month - 0.5) / 12;\n\n    if (year >= REFERENCE_MIN_YEAR && year <= REFERENCE_MAX_YEAR) {\n        return getReferenceDeltaT(y);\n    }\n\n    if (year > REFERENCE_MAX_YEAR) {\n        return evaluatePolynomial(FUTURE_DELTA_T_COEFFICIENTS, y - 2000);\n    }\n\n    let t: number;\n    let deltaT = 0;\n\n    if (year < -500) {\n        t = (y - 1820) / 100;\n        deltaT = -20 + 32 * t ** 2;\n    }\n\n    if (year >= -500 && year < 500) {\n        t = y / 100;\n        deltaT =\n            10583.6\n            - 1014.41 * t\n            + 33.78311 * t ** 2\n            - 5.952053 * t ** 3\n            - 0.1798452 * t ** 4\n            + 0.022174192 * t ** 5\n            + 0.0090316521 * t ** 6;\n    }\n\n    if (year >= 500 && year < 1600) {\n        t = (y - 1000) / 100;\n        deltaT =\n            1574.2\n            - 556.01 * t\n            + 71.23472 * t ** 2\n            + 0.319781 * t ** 3\n            - 0.8503463 * t ** 4\n            - 0.005050998 * t ** 5\n            + 0.0083572073 * t ** 6;\n    }\n\n    if (year >= 1600 && year < 1700) {\n        t = y - 1600;\n        deltaT = 120 - 0.9808 * t - 0.01532 * t ** 2 + t ** 3 / 7129;\n    }\n\n    if (year >= 1700 && year < 1800) {\n        t = y - 1700;\n        deltaT = 8.83 + 0.1603 * t - 0.0059285 * t ** 2 + 0.00013336 * t ** 3 - t ** 4 / 1174000;\n    }\n\n    if (year >= 1800 && year < 1860) {\n        t = y - 1800;\n        deltaT =\n            13.72\n            - 0.332447 * t\n            + 0.0068612 * t ** 2\n            + 0.0041116 * t ** 3\n            - 0.00037436 * t ** 4\n            + 0.0000121272 * t ** 5\n            - 0.0000001699 * t ** 6\n            + 0.000000000875 * t ** 7;\n    }\n\n    if (year >= 1860 && year < 1900) {\n        t = y - 1860;\n\n        deltaT = 7.62 + 0.5737 * t - 0.251754 * t ** 2 + 0.01680668 * t ** 3 - 0.0004473624 * t ** 4 + t ** 5 / 233174;\n    }\n\n    if (year >= 1900 && year < 1920) {\n        t = y - 1900;\n        deltaT = -2.79 + 1.494119 * t - 0.0598939 * t ** 2 + 0.0061966 * t ** 3 - 0.000197 * t ** 4;\n    }\n\n    if (year >= 1920 && year < 1941) {\n        t = y - 1920;\n        deltaT = 21.2 + 0.84493 * t - 0.0761 * t ** 2 + 0.0020936 * t ** 3;\n    }\n\n    if (year >= 1941 && year < 1961) {\n        t = y - 1950;\n        deltaT = 29.07 + 0.407 * t - t ** 2 / 233 + t ** 3 / 2547;\n    }\n\n    if (year >= 1961 && year < 1986) {\n        t = y - 1975;\n        deltaT = 45.45 + 1.067 * t - t ** 2 / 260 - t ** 3 / 718;\n    }\n\n    if (year >= 1986 && year < 2005) {\n        t = y - 2000;\n        deltaT =\n            63.86 + 0.3345 * t - 0.060374 * t ** 2 + 0.0017275 * t ** 3 + 0.000651814 * t ** 4 + 0.00002373599 * t ** 5;\n    }\n\n    return deltaT;\n}\n\nfunction getReferenceDeltaT(y: number): number {\n    const first = REFERENCE_DELTA_T[0];\n    const last = REFERENCE_DELTA_T[REFERENCE_DELTA_T.length - 1];\n    const clamped = Math.max(first[0], Math.min(last[0], y));\n\n    let low = 0;\n    let high = REFERENCE_DELTA_T.length - 1;\n    while (high - low > 1) {\n        const mid = (low + high) >> 1;\n        if (REFERENCE_DELTA_T[mid][0] <= clamped) {\n            low = mid;\n        } else {\n            high = mid;\n        }\n    }\n\n    const [year0, deltaT0] = REFERENCE_DELTA_T[low];\n    const [year1, deltaT1] = REFERENCE_DELTA_T[high];\n    const fraction = (clamped - year0) / (year1 - year0);\n\n    return deltaT0 + fraction * (deltaT1 - deltaT0);\n}\n\nfunction yearlyReferenceValues(from: number, to: number): number[] {\n    const values: number[] = [];\n    for (let year = from; year <= to; year++) {\n        values.push(getReferenceDeltaT(year));\n    }\n\n    return values;\n}\n\nfunction evaluatePolynomial(coefficients: number[], x: number): number {\n    return coefficients.reduce((sum, coefficient, power) => sum + coefficient * x ** power, 0);\n}\n\nfunction fitPolynomial(points: Array<[number, number]>, degree: number): number[] {\n    const size = degree + 1;\n    const matrix: number[][] = [];\n    const vector: number[] = [];\n\n    for (let i = 0; i < size; i++) {\n        matrix[i] = [];\n        for (let j = 0; j < size; j++) {\n            matrix[i][j] = points.reduce((sum, [x]) => sum + x ** (i + j), 0);\n        }\n        vector[i] = points.reduce((sum, [x, value]) => sum + value * x ** i, 0);\n    }\n\n    for (let i = 0; i < size; i++) {\n        let pivot = i;\n        for (let row = i + 1; row < size; row++) {\n            if (Math.abs(matrix[row][i]) > Math.abs(matrix[pivot][i])) {\n                pivot = row;\n            }\n        }\n        [matrix[i], matrix[pivot]] = [matrix[pivot], matrix[i]];\n        [vector[i], vector[pivot]] = [vector[pivot], vector[i]];\n\n        for (let row = 0; row < size; row++) {\n            if (row === i) {\n                continue;\n            }\n            const factor = matrix[row][i] / matrix[i][i];\n            for (let col = i; col < size; col++) {\n                matrix[row][col] -= factor * matrix[i][col];\n            }\n            vector[row] -= factor * vector[i];\n        }\n    }\n\n    return matrix.map((_, i) => vector[i] / matrix[i][i]);\n}\n","import {EPOCH_J2000} from '@app/constants/epoch';\nimport {DAYS_PER_JULIAN_CENTURY, HOURS_PER_DAY, MINUTES_PER_DAY, SECONDS_PER_DAY} from '@app/constants/time';\nimport {round} from '@app/utils/math';\nimport type {Time} from '../types/TimeTypes';\nimport {getDeltaT} from './deltaT';\n\nexport function sec2string(sec: number, short = false): string {\n    const sign = sec < 0 ? '-' : '';\n    sec = Math.abs(sec);\n\n    const hour = Math.floor(sec / 3600);\n    const min = Math.floor((sec - hour * 3600) / 60);\n    const secPart = round(sec - hour * 3600 - min * 60, 2);\n\n    if (short && hour === 0.0 && min === 0.0) {\n        return `${sign + secPart}s`;\n    }\n\n    if (short && hour === 0.0) {\n        return `${sign + min}m ${secPart}s`;\n    }\n\n    return `${sign + hour}h ${min}m ${secPart}s`;\n}\n\nexport function time2julianDay(time: Time): number {\n    const tmpYear = parseFloat(`${time.year}.${getDayOfYear(time)}`);\n\n    let Y: number;\n    let M: number;\n\n    if (time.month > 2) {\n        Y = time.year;\n        M = time.month;\n    } else {\n        Y = time.year - 1;\n        M = time.month + 12;\n    }\n\n    const D = time.day;\n    const H = time.hour / HOURS_PER_DAY + time.min / MINUTES_PER_DAY + time.sec / SECONDS_PER_DAY;\n\n    let A: number;\n    let B: number;\n\n    if (tmpYear >= 1582.288) {\n        // YYYY-MM-DD >= 1582-10-15\n        A = Math.floor(Y / 100);\n        B = 2 - A + Math.floor(A / 4);\n    } else if (tmpYear <= 1582.277) {\n        // YY-MM-DD <= 1582-10-04\n        B = 0;\n    } else {\n        throw new Error('Date between 1582-10-04 and 1582-10-15 is not defined.');\n    }\n\n    // Meeus 7.1\n    return Math.floor(365.25 * (Y + 4716)) + Math.floor(30.6001 * (M + 1)) + D + H + B - 1524.5;\n}\n\nexport function dateStringToJulianDay(dateStr: string): number {\n    const isoDate = parseIsoDateString(dateStr);\n\n    if (isoDate !== null) {\n        const {offsetMinutes, ...time} = isoDate;\n        return time2julianDay(time) - offsetMinutes / MINUTES_PER_DAY;\n    }\n\n    const date = new Date(dateStr);\n\n    return time2julianDay({\n        year: date.getUTCFullYear(),\n        month: date.getUTCMonth() + 1,\n        day: date.getUTCDate(),\n        hour: date.getUTCHours(),\n        min: date.getUTCMinutes(),\n        sec: date.getUTCSeconds(),\n    });\n}\n\nfunction parseIsoDateString(dateStr: string): (Time & {offsetMinutes: number}) | null {\n    const match =\n        /^([+-]?\\d+)-(\\d{2})-(\\d{2})(?:[T ](\\d{2})(?::(\\d{2})(?::(\\d{2}(?:\\.\\d+)?))?)?(?:Z|([+-])(\\d{2}):?(\\d{2}))?)?$/.exec(\n            dateStr,\n        );\n\n    if (!match) {\n        return null;\n    }\n\n    const [, year, month, day, hour = '0', min = '0', sec = '0', offsetSign, offsetHour = '0', offsetMin = '0'] = match;\n    const offsetFactor = offsetSign === '-' ? -1 : 1;\n\n    return {\n        year: Number(year),\n        month: Number(month),\n        day: Number(day),\n        hour: Number(hour),\n        min: Number(min),\n        sec: Number(sec),\n        offsetMinutes: offsetSign ? offsetFactor * (Number(offsetHour) * 60 + Number(offsetMin)) : 0,\n    };\n}\n\nexport function julianDay2time(jd: number): Time {\n    jd = jd + 0.5;\n\n    const Z = Math.floor(jd);\n    const F = jd - Z;\n\n    let A = Z;\n    if (Z >= 2299161) {\n        const a = Math.floor((Z - 1867216.25) / 36524.25);\n        A = Z + 1 + a - Math.floor(a / 4);\n    }\n\n    const B = A + 1524;\n    const C = Math.floor((B - 122.1) / 365.25);\n    const D = Math.floor(365.25 * C);\n    const E = Math.floor((B - D) / 30.6001);\n\n    const dayOnMonth = B - D - Math.floor(30.6001 * E) + F;\n    const month = E < 14 ? E - 1 : E - 13;\n    const year = month > 2 ? C - 4716 : C - 4715;\n    const hour = (dayOnMonth - Math.floor(dayOnMonth)) * 24;\n    const min = (hour - Math.floor(hour)) * 60;\n    const sec = (min - Math.floor(min)) * 60;\n\n    return {\n        year: Math.floor(year),\n        month: Math.floor(month),\n        day: Math.floor(dayOnMonth),\n        hour: Math.floor(hour),\n        min: Math.floor(min),\n        sec: Math.floor(sec),\n    };\n}\n\nexport function julianDay2julianDay0(jd: number): number {\n    return Math.floor(jd + 0.5) - 0.5;\n}\n\nexport function julianDay2ModifiedJulianDay(jd: number): number {\n    return jd - 2400000.5;\n}\n\nexport function julianDay2julianCenturiesJ2000(jd: number): number {\n    return (jd - EPOCH_J2000) / DAYS_PER_JULIAN_CENTURY;\n}\n\nexport function julianCenturiesJ20002julianDay(T: number): number {\n    return T * DAYS_PER_JULIAN_CENTURY + EPOCH_J2000;\n}\n\nexport function julianDay2julianMillenniaJ2000(jd: number): number {\n    const T = julianDay2julianCenturiesJ2000(jd);\n\n    return T / 10;\n}\n\nexport function julianMillenniaJ20002julianDay(t: number): number {\n    const T = t * 10;\n\n    return julianCenturiesJ20002julianDay(T);\n}\n\nexport function julianDay2julianDayEphemeris(jd: number): number {\n    const {year, month} = julianDay2time(jd);\n\n    return jd + getDeltaT(year, month) / SECONDS_PER_DAY;\n}\n\nexport function julianDayEphemeris2julianDay(jde: number): number {\n    const {year, month} = julianDay2time(jde);\n\n    return jde - getDeltaT(year, month) / SECONDS_PER_DAY;\n}\n\nexport function dayOfYear2time(year: number, dayOfYear: number): Time {\n    // Meeus 7\n    const K = isLeapYear(year) ? 1 : 2;\n    const month = dayOfYear < 32 ? 1 : Math.floor((9 * (K + dayOfYear)) / 275 + 0.98);\n    const day = Math.floor(dayOfYear - Math.floor((275 * month) / 9) + K * Math.floor((month + 9) / 12) + 30);\n\n    const hourFloat = 24 * (dayOfYear - Math.floor(dayOfYear));\n    const hour = Math.floor(hourFloat);\n    const minFloat = 60 * (hourFloat - hour);\n    const min = Math.floor(minFloat);\n    const sec = round(60 * (minFloat - min));\n\n    return {year, month, day, hour, min, sec};\n}\n\nexport function getDecimalYear(time: Time): number {\n    const daysInYear = isLeapYear(time.year) ? 366 : 365;\n    const dayOfYear =\n        getDayOfYear(time) - 1 + time.hour / HOURS_PER_DAY + time.min / MINUTES_PER_DAY + time.sec / SECONDS_PER_DAY;\n\n    return time.year + dayOfYear / daysInYear;\n}\n\nexport function getDayOfYear(time: Time): number {\n    const K = isLeapYear(time.year) ? 1 : 2;\n    const M = time.month;\n    const D = time.day;\n\n    // Meeus 7.f\n    return Math.floor((275 * M) / 9) - K * Math.floor((M + 9) / 12) + D - 30;\n}\n\nexport function getDayOfWeek(time: Time): number {\n    const jd = time2julianDay(time);\n\n    // Meeus 7.e\n    return Math.floor((jd + 1.5) % 7);\n}\n\nexport function isLeapYear(year: number): boolean {\n    if (year / 4 !== Math.floor(year / 4)) {\n        return false;\n    } else if (year / 100 !== Math.floor(year / 100)) {\n        return true;\n    } else if (year / 400 !== Math.floor(year / 400)) {\n        return false;\n    } else {\n        return true;\n    }\n}\n\nexport function shortYear2longYear(shortYearString: string): number {\n    const currentDate = new Date(Date.now());\n    const currentYear = currentDate.getFullYear();\n    const currentYearStr = currentYear.toString();\n\n    const currentYearFirstDigitsStr = currentYearStr.substr(0, currentYearStr.length - 2);\n    const currentYearFirstDigits = parseInt(currentYearFirstDigitsStr, 10);\n\n    const year1Str = currentYearFirstDigits + shortYearString;\n    const year1 = parseInt(year1Str, 10);\n    const year2Str = (currentYearFirstDigits - 1).toString() + shortYearString;\n    const year2 = parseInt(year2Str, 10);\n\n    return year1 <= currentYear ? year1 : year2;\n}\n","import {EPOCH_J2000} from '@app/constants/epoch';\nimport {DEG} from '@app/constants/math';\nimport {normalizeAngle} from '@app/utils/angle';\nimport * as earth from '@app/utils/earth';\nimport {julianCenturiesJ20002julianDay} from '@package/time/utils/dateTime';\n\nexport function getGreenwichMeanSiderealTime(T: number): number {\n    const jd = julianCenturiesJ20002julianDay(T);\n\n    // Meeus 12.4\n    const GMST = 280.46061837 + 360.98564736629 * (jd - EPOCH_J2000) + 0.000387933 * T ** 2 + T ** 3 / 38710000;\n\n    return normalizeAngle(GMST);\n}\n\nexport function getGreenwichApparentSiderealTime(T: number): number {\n    const GMST = getGreenwichMeanSiderealTime(T);\n    const p = earth.getNutationInLongitude(T);\n    const e = earth.getTrueObliquityOfEcliptic(T);\n    const eRad = e * DEG;\n\n    // Meeus 12\n    return GMST + p * Math.cos(eRad);\n}\n\nexport function getLocalMeanSiderealTime(T: number, lon: number): number {\n    const GMST = getGreenwichMeanSiderealTime(T);\n\n    const LMST = GMST + lon;\n\n    return normalizeAngle(LMST);\n}\n\nexport function getLocalApparentSiderealTime(T: number, lon: number): number {\n    const GAST = getGreenwichApparentSiderealTime(T);\n\n    // Meeus 12\n    return GAST + lon;\n}\n\nexport function getLocalHourAngle(T: number, lon: number, rightAscension: number): number {\n    const LAST = getLocalApparentSiderealTime(T, lon);\n\n    return normalizeAngle(LAST - rightAscension);\n}\n","import {EARTH_AXIS_RATIO, EARTH_EQUATORIAL_RADIUS_METERS} from '@app/constants/earth';\nimport {DEG, RAD} from '@app/constants/math';\nimport type {Location} from '@app/types/LocationTypes';\nimport {normalizeAngle, sec2deg} from '@app/utils/angle';\nimport * as earth from '@app/utils/earth';\nimport {correctPrecessionForEclipticCoordinates} from '@app/utils/precession';\nimport {getLocalApparentSiderealTime, getLocalHourAngle} from '@app/utils/siderealTime';\nimport {julianCenturiesJ20002julianDay} from '@package/time/utils/dateTime';\nimport type {\n    EclipticSphericalCoordinates,\n    EquatorialSphericalCoordinates,\n    LocalHorizontalCoordinates,\n    RectangularCoordinates,\n} from '../types/CoordinateTypes';\n\nexport function rectangular2spherical(coords: RectangularCoordinates): EclipticSphericalCoordinates {\n    const {x, y, z} = coords;\n\n    // Meeus 33.2\n    const lonRad = Math.atan2(y, x);\n    const lon = normalizeAngle(lonRad * RAD);\n\n    const latRad = Math.atan(z / Math.sqrt(x ** 2 + y ** 2));\n    const lat = latRad * RAD;\n\n    const radiusVector = Math.sqrt(x ** 2 + y ** 2 + z ** 2);\n\n    return {lon, lat, radiusVector};\n}\n\nexport function spherical2rectangular(coords: EclipticSphericalCoordinates): RectangularCoordinates {\n    const {lon, lat, radiusVector} = coords;\n\n    const lonRad = lon * DEG;\n    const latRad = lat * DEG;\n\n    const x = radiusVector * Math.cos(latRad) * Math.cos(lonRad);\n    const y = radiusVector * Math.cos(latRad) * Math.sin(lonRad);\n    const z = radiusVector * Math.sin(latRad);\n\n    return {x, y, z};\n}\n\nexport function equatorialSpherical2topocentricSpherical(\n    coords: EquatorialSphericalCoordinates,\n    location: Location,\n    T: number,\n): EquatorialSphericalCoordinates {\n    const {rightAscension, declination, radiusVector} = coords;\n    let {lat, lon, elevation} = location;\n\n    const dRad = declination * DEG;\n\n    elevation = elevation || 0.0;\n    const rhoSinLat = getRhoSinLat(lat, elevation);\n    const rhoCosLat = getRhoCosLat(lat, elevation);\n\n    const pi = getEquatorialParallax(radiusVector);\n    const piRad = pi * DEG;\n\n    const LAST = getLocalApparentSiderealTime(T, lon);\n    const H = getLocalHourAngle(T, lon, rightAscension);\n    const HRad = H * DEG;\n\n    // Meeus 40.6\n    const A = Math.cos(dRad) * Math.sin(HRad);\n    const B = Math.cos(dRad) * Math.cos(HRad) - rhoCosLat * Math.sin(piRad);\n    const C = Math.sin(dRad) - rhoSinLat * Math.sin(piRad);\n\n    // Meeus 40.7\n    const q = Math.sqrt(A * A + B * B + C * C);\n\n    const HTopo = Math.atan2(A, B) * RAD;\n    const dTopoRad = Math.asin(C / q);\n\n    return {\n        rightAscension: normalizeAngle(LAST - HTopo),\n        declination: dTopoRad * RAD,\n        radiusVector: q * radiusVector,\n    };\n}\n\nexport function equatorialSpherical2topocentricHorizontal(\n    coords: EquatorialSphericalCoordinates,\n    location: Location,\n    T: number,\n): LocalHorizontalCoordinates {\n    const {lat, lon} = location;\n\n    const topoCoords = equatorialSpherical2topocentricSpherical(coords, location, T);\n    const H = getLocalHourAngle(T, lon, topoCoords.rightAscension);\n\n    return equatorialSpherical2topocentricHorizontalByLocalHourAngle(\n        H,\n        topoCoords.declination,\n        lat,\n        topoCoords.radiusVector,\n    );\n}\n\nexport function equatorialSpherical2topocentricHorizontalByLocalHourAngle(\n    localHourAngle: number,\n    declination: number,\n    lat: number,\n    radiusVector = 0,\n): LocalHorizontalCoordinates {\n    const HRad = localHourAngle * DEG;\n    const dRad = declination * DEG;\n    const latRad = lat * DEG;\n\n    // Meeus 13.5\n    const ARad = Math.atan2(Math.sin(HRad), Math.cos(HRad) * Math.sin(latRad) - Math.tan(dRad) * Math.cos(latRad));\n\n    // Meeus 13.6\n    const hRad = Math.asin(Math.sin(latRad) * Math.sin(dRad) + Math.cos(latRad) * Math.cos(dRad) * Math.cos(HRad));\n\n    return {\n        azimuth: normalizeAngle(ARad * RAD + 180),\n        altitude: hRad * RAD,\n        radiusVector: radiusVector,\n    };\n}\n\nexport function equatorialSpherical2topocentricSphericalByLocalHourAngle(\n    localHourAngle: number,\n    declination: number,\n    radiusVector: number,\n    location: Location,\n): {localHourAngle: number; declination: number; radiusVector: number} {\n    const rhoSinLat = getRhoSinLat(location.lat, location.elevation);\n    const rhoCosLat = getRhoCosLat(location.lat, location.elevation);\n    const piRad = getEquatorialParallax(radiusVector) * DEG;\n\n    const HRad = localHourAngle * DEG;\n    const dRad = declination * DEG;\n\n    const A = Math.cos(dRad) * Math.sin(HRad);\n    const B = Math.cos(dRad) * Math.cos(HRad) - rhoCosLat * Math.sin(piRad);\n    const C = Math.sin(dRad) - rhoSinLat * Math.sin(piRad);\n\n    const q = Math.sqrt(A * A + B * B + C * C);\n\n    return {\n        localHourAngle: normalizeAngle(Math.atan2(A, B) * RAD + 180) - 180,\n        declination: Math.asin(C / q) * RAD,\n        radiusVector: q * radiusVector,\n    };\n}\n\nexport function eclipticSpherical2equatorialSpherical(\n    coords: EclipticSphericalCoordinates,\n    T: number,\n    normalize = true,\n): EquatorialSphericalCoordinates {\n    const {lon, lat, radiusVector} = coords;\n\n    const eps = earth.getTrueObliquityOfEcliptic(T);\n    const epsRad = eps * DEG;\n    const lonRad = lon * DEG;\n    const latRad = lat * DEG;\n\n    // Meeus 13.3\n    const n = Math.sin(lonRad) * Math.cos(epsRad) - (Math.sin(latRad) / Math.cos(latRad)) * Math.sin(epsRad);\n    const d = Math.cos(lonRad);\n    const rightAscensionRad = Math.atan2(n, d);\n    const rightAscension = normalize ? normalizeAngle(rightAscensionRad * RAD) : rightAscensionRad * RAD;\n\n    // Meeus 13.4\n    const declinationRad = Math.asin(\n        Math.sin(latRad) * Math.cos(epsRad) + Math.cos(latRad) * Math.sin(epsRad) * Math.sin(lonRad),\n    );\n    const declination = declinationRad * RAD;\n\n    return {rightAscension, declination, radiusVector};\n}\n\nexport function equatorialSpherical2eclipticSpherical(\n    coords: EquatorialSphericalCoordinates,\n    T: number,\n): EclipticSphericalCoordinates {\n    const {rightAscension, declination, radiusVector} = coords;\n\n    const eps = earth.getTrueObliquityOfEcliptic(T);\n    const epsRad = eps * DEG;\n    const rightAscensionRad = rightAscension * DEG;\n    const declinationRad = declination * DEG;\n\n    // Meeus 13.1\n    const n = Math.sin(rightAscensionRad) * Math.cos(epsRad) + Math.tan(declinationRad) * Math.sin(epsRad);\n    const d = Math.cos(rightAscensionRad);\n    const lonRad = Math.atan2(n, d);\n    const lon = normalizeAngle(lonRad * RAD);\n\n    // Meeus 13.2\n    const latRad = Math.asin(\n        Math.sin(declinationRad) * Math.cos(epsRad)\n            - Math.cos(declinationRad) * Math.sin(epsRad) * Math.sin(rightAscensionRad),\n    );\n    const lat = latRad * RAD;\n\n    return {lon, lat, radiusVector};\n}\n\nexport function rectangularHeliocentric2rectangularGeocentric(\n    heliocentricCoords: RectangularCoordinates,\n    heliocentricCoordsEarth: RectangularCoordinates,\n): RectangularCoordinates {\n    return {\n        x: heliocentricCoords.x - heliocentricCoordsEarth.x,\n        y: heliocentricCoords.y - heliocentricCoordsEarth.y,\n        z: heliocentricCoords.z - heliocentricCoordsEarth.z,\n    };\n}\n\nexport function rectangularGeocentric2rectangularHeliocentric(\n    geocentricCoords: RectangularCoordinates,\n    heliocentricCoordsEarth: RectangularCoordinates,\n): RectangularCoordinates {\n    return {\n        x: geocentricCoords.x + heliocentricCoordsEarth.x,\n        y: geocentricCoords.y + heliocentricCoordsEarth.y,\n        z: geocentricCoords.z + heliocentricCoordsEarth.z,\n    };\n}\n\nexport function earthEclipticSpherical2sunEclipticSpherical(\n    coordsEarth: EclipticSphericalCoordinates,\n): EclipticSphericalCoordinates {\n    const {lon, lat, radiusVector} = coordsEarth;\n\n    return {\n        lon: normalizeAngle(lon + 180),\n        lat: -1 * lat,\n        radiusVector: radiusVector,\n    };\n}\n\n/**\n * @deprecated Use correctPrecessionForEclipticCoordinates()\n */\nexport function eclipticJ20002eclipticDate(\n    lon: number,\n    lat: number,\n    radiusVector: number,\n    T: number,\n): EclipticSphericalCoordinates {\n    const jd = julianCenturiesJ20002julianDay(T);\n\n    return correctPrecessionForEclipticCoordinates({lon, lat, radiusVector}, jd);\n}\n\nexport function getEquatorialParallax(d: number): number {\n    // Meeus 40.1\n    const angle = sec2deg(8.794) * DEG;\n    const piRad = Math.asin(Math.sin(angle) / d);\n\n    return piRad * RAD;\n}\n\nexport function getRhoSinLat(lat: number, elevation: number): number {\n    const latRad = lat * DEG;\n\n    // Meeus 11\n    const uRad = Math.atan(EARTH_AXIS_RATIO * Math.tan(latRad));\n\n    return EARTH_AXIS_RATIO * Math.sin(uRad) + (elevation / EARTH_EQUATORIAL_RADIUS_METERS) * Math.sin(latRad);\n}\n\nexport function getRhoCosLat(lat: number, elevation: number): number {\n    const latRad = lat * DEG;\n\n    // Meeus 11\n    const uRad = Math.atan(EARTH_AXIS_RATIO * Math.tan(latRad));\n\n    return Math.cos(uRad) + (elevation / EARTH_EQUATORIAL_RADIUS_METERS) * Math.cos(latRad);\n}\n","import {RAD} from '@app/constants/math';\n\nexport function calculateVSOP87Angle(terms: Array<Array<Array<number>>>, t: number): number {\n    const result = calculateVSOP87(terms, t);\n\n    return result * RAD;\n}\n\nexport function calculateVSOP87(terms: Array<Array<Array<number>>>, t: number): number {\n    let result = 0.0;\n\n    terms.forEach((term: Array<Array<number>>, key: number) => {\n        result += sumUpTerm(term, t) * t ** key;\n    });\n\n    return result;\n}\n\nfunction sumUpTerm(terms: Array<Array<number>>, t: number): number {\n    let result = 0.0;\n\n    terms.forEach((term: Array<number>) => {\n        const a = term[0] || 0;\n        const b = term[1] || 0;\n        const c = term[2] || 0;\n\n        result += a * Math.cos(b + c * t);\n    });\n\n    return result;\n}\n","import {DEG} from '@app/constants/math';\nimport {sec2deg} from '@app/utils/angle';\nimport * as earth from '@app/utils/earth';\nimport * as sun from '@app/utils/sun';\nimport type {EclipticSphericalCoordinates} from '../types/CoordinateTypes';\n\nexport function getLightTimeCorrectedJulianDay(jd: number, d: number): number {\n    // Meeus 33.3\n    const theta = 0.0057755183 * d;\n\n    return jd - theta;\n}\n\nexport function correctEffectOfNutation(coords: EclipticSphericalCoordinates, T: number): EclipticSphericalCoordinates {\n    const phi = earth.getNutationInLongitude(T);\n\n    return {\n        lon: coords.lon + phi,\n        lat: coords.lat,\n        radiusVector: coords.radiusVector,\n    };\n}\n\nexport function correctEffectOfAberration(\n    coords: EclipticSphericalCoordinates,\n    T: number,\n): EclipticSphericalCoordinates {\n    // TODO Better formula with Ron-Vondrak expression\n    const lonSun = sun.getTrueLongitude(T);\n    const e = earth.getEccentricity(T);\n    const pi = earth.getLongitudeOfPerihelionOfOrbit(T);\n    const k = sec2deg(20.49552);\n\n    const lonRad = coords.lon * DEG;\n    const latRad = coords.lat * DEG;\n    const lonSunRad = lonSun * DEG;\n    const piRad = pi * DEG;\n\n    const dLon = (-1 * k * Math.cos(lonSunRad - lonRad) + e * k * Math.cos(piRad - lonRad)) / Math.cos(latRad);\n    const dLat = -1 * k * Math.sin(latRad) * (Math.sin(lonSunRad - lonRad) - e * Math.sin(piRad - lonRad));\n\n    return {\n        lon: coords.lon + dLon,\n        lat: coords.lat + dLat,\n        radiusVector: coords.radiusVector,\n    };\n}\n\nexport function correctEffectOfRefraction(altitude: number): number {\n    if (altitude < -5) {\n        return altitude;\n    }\n\n    // Meeus 16.4\n    const R = 1.02 / Math.tan((altitude + 10.3 / (altitude + 5.11)) * DEG);\n\n    return altitude + R / 60;\n}\n","import {EARTH_SIDEREAL_ROTATION_PER_DAY} from '@app/constants/earth';\nimport {DEG, RAD} from '@app/constants/math';\nimport {LimbAlignment} from '@app/enums/limb';\nimport type {EquatorialSphericalCoordinates} from '@app/types/CoordinateTypes';\nimport type {EventOptions} from '@app/types/EventTypes';\nimport type {Location} from '@app/types/LocationTypes';\nimport {normalizeAngle} from '@app/utils/angle';\nimport {\n    equatorialSpherical2topocentricHorizontalByLocalHourAngle,\n    equatorialSpherical2topocentricSphericalByLocalHourAngle,\n} from '@app/utils/coordinateTransformation';\nimport {getGreenwichApparentSiderealTime} from '@app/utils/siderealTime';\nimport {julianDay2julianCenturiesJ2000} from '@package/time/utils/dateTime';\n\nexport type EquatorialCoordinatesProvider = (jd: number) => EquatorialSphericalCoordinates;\n\n// Mean atmospheric refraction at the horizon (34'), Meeus chapter 15.\nconst REFRACTION_AT_HORIZON = 0.5667;\n\nconst CONVERGENCE_LIMIT = 0.00001;\nconst MAX_ITERATIONS = 100;\n\nexport function getTransit(location: Location, jd0: number, getCoords: EquatorialCoordinatesProvider): number {\n    const GAST = getGreenwichSiderealTimeAtMidnight(jd0);\n\n    const {rightAscension} = getCoords(jd0);\n\n    // Meeus 15.2\n    let m = normalizeAngle((rightAscension - location.lon - GAST) / 360, 1);\n    let dm = 0;\n\n    let cnt = 0;\n    do {\n        const coords = getCoords(jd0 + m);\n        const H = getLocalHourAngle(coords.rightAscension, location.lon, GAST, m);\n\n        dm = -H / 360;\n        m += dm;\n\n        if (cnt++ > MAX_ITERATIONS) {\n            throw new Error(`Astronomical object has no transit on given day ${jd0}.`);\n        }\n    } while (Math.abs(dm) > CONVERGENCE_LIMIT);\n\n    if (m < 0 || m >= 1) {\n        throw new Error(`Astronomical object has no transit on given day ${jd0}.`);\n    }\n\n    return jd0 + m;\n}\n\nexport function getRise(location: Location, jd0: number, h0: number, getCoords: EquatorialCoordinatesProvider): number {\n    return getRiseSet(location, jd0, h0, getCoords, -1, 'rise');\n}\n\nexport function getSet(location: Location, jd0: number, h0: number, getCoords: EquatorialCoordinatesProvider): number {\n    return getRiseSet(location, jd0, h0, getCoords, 1, 'set');\n}\n\n// Standard altitude h0 of the body's center at the moment of the event, Meeus chapter 15.\nexport function getStandardAltitude(options: EventOptions = {}, angularDiameter = 0): number {\n    const {isRefractionConsidered = true, alignment = LimbAlignment.Center} = options;\n\n    const refraction = isRefractionConsidered ? REFRACTION_AT_HORIZON : 0;\n    const semiDiameter = angularDiameter / 2;\n\n    let h0 = -refraction;\n\n    if (alignment === LimbAlignment.UpperLimb) {\n        h0 -= semiDiameter;\n    } else if (alignment === LimbAlignment.LowerLimb) {\n        h0 += semiDiameter;\n    }\n\n    return h0;\n}\n\nfunction getRiseSet(\n    location: Location,\n    jd0: number,\n    h0: number,\n    getCoords: EquatorialCoordinatesProvider,\n    sign: number,\n    event: 'rise' | 'set',\n): number {\n    const GAST = getGreenwichSiderealTimeAtMidnight(jd0);\n\n    const {rightAscension, declination} = getCoords(jd0);\n\n    const mTransit = normalizeAngle((rightAscension - location.lon - GAST) / 360, 1);\n    const halfDiurnalArc = getHalfDiurnalArc(declination, location.lat, h0);\n\n    if (Number.isNaN(halfDiurnalArc)) {\n        throw new Error(`Astronomical object cannot ${event} on given day ${jd0}.`);\n    }\n\n    let m = normalizeAngle(mTransit + sign * halfDiurnalArc, 1);\n    let dm = 0;\n\n    let cnt = 0;\n    do {\n        const coords = getCoords(jd0 + m);\n        const geocentricH = getLocalHourAngle(coords.rightAscension, location.lon, GAST, m);\n\n        // Reduce the geocentric position to the observer's location. This matters for the\n        // Moon, whose horizontal parallax (~1°) shifts rise and set by several minutes.\n        const {localHourAngle: H, declination} = equatorialSpherical2topocentricSphericalByLocalHourAngle(\n            geocentricH,\n            coords.declination,\n            coords.radiusVector,\n            location,\n        );\n\n        const {altitude} = equatorialSpherical2topocentricHorizontalByLocalHourAngle(H, declination, location.lat);\n\n        // Meeus 15, correction to m\n        dm = (altitude - h0) / (360 * Math.cos(declination * DEG) * Math.cos(location.lat * DEG) * Math.sin(H * DEG));\n        m += dm;\n\n        if (cnt++ > MAX_ITERATIONS) {\n            throw new Error(`Astronomical object cannot ${event} on given day ${jd0}.`);\n        }\n    } while (Math.abs(dm) > CONVERGENCE_LIMIT);\n\n    if (m < 0) {\n        throw new Error(\n            `Astronomical object cannot ${event} on given day ${jd0}. The ${event} happens the day before.`,\n        );\n    }\n\n    if (m >= 1) {\n        throw new Error(`Astronomical object cannot ${event} on given day ${jd0}. The ${event} happens the next day.`);\n    }\n\n    return jd0 + m;\n}\n\nfunction getHalfDiurnalArc(declination: number, lat: number, h0: number): number {\n    const latRad = lat * DEG;\n    const dRad = declination * DEG;\n    const h0Rad = h0 * DEG;\n\n    const cosH0 = (Math.sin(h0Rad) - Math.sin(latRad) * Math.sin(dRad)) / (Math.cos(latRad) * Math.cos(dRad));\n\n    if (Math.abs(cosH0) > 1) {\n        return NaN;\n    }\n\n    const H0 = Math.acos(cosH0) * RAD;\n\n    return H0 / 360;\n}\n\nfunction getLocalHourAngle(rightAscension: number, lon: number, GAST: number, m: number): number {\n    const theta0 = GAST + EARTH_SIDEREAL_ROTATION_PER_DAY * m;\n\n    const H = theta0 + lon - rightAscension;\n\n    return normalizeAngle(H + 180) - 180;\n}\n\nfunction getGreenwichSiderealTimeAtMidnight(jd0: number): number {\n    const T = julianDay2julianCenturiesJ2000(jd0);\n\n    return getGreenwichApparentSiderealTime(T);\n}\n","import type {LatLon} from '@app/types/LocationTypes';\nimport {pad} from '@app/utils/math';\nimport {\n    getGreenwichApparentSiderealTime,\n    getGreenwichMeanSiderealTime,\n    getLocalApparentSiderealTime,\n    getLocalMeanSiderealTime,\n} from '@app/utils/siderealTime';\nimport type {Time} from '../types/TimeTypes';\nimport {\n    dayOfYear2time,\n    getDayOfWeek,\n    getDayOfYear,\n    getDecimalYear,\n    isLeapYear,\n    julianCenturiesJ20002julianDay,\n    julianDay2julianCenturiesJ2000,\n    julianDay2julianDay0,\n    julianDay2julianDayEphemeris,\n    julianDay2julianMillenniaJ2000,\n    julianDay2time,\n    julianDayEphemeris2julianDay,\n    time2julianDay,\n} from '../utils/dateTime';\nimport {getDeltaT} from '../utils/deltaT';\n\nexport default class TimeOfInterest {\n    public readonly jd: number = 0.0;\n\n    public readonly jde: number = 0.0;\n\n    public readonly T: number = 0.0;\n\n    public constructor(public readonly time: Time) {\n        this.jd = time2julianDay(time);\n        this.jde = julianDay2julianDayEphemeris(this.jd);\n        this.T = julianDay2julianCenturiesJ2000(this.jd);\n    }\n\n    public static fromCurrentTime(): TimeOfInterest {\n        const date = new Date(Date.now());\n\n        return new TimeOfInterest({\n            year: date.getUTCFullYear(),\n            month: date.getUTCMonth() + 1,\n            day: date.getUTCDate(),\n            hour: date.getUTCHours(),\n            min: date.getUTCMinutes(),\n            sec: date.getUTCSeconds(),\n        });\n    }\n\n    public static fromTime(year: number, month: number, day: number, hour = 0, min = 0, sec = 0): TimeOfInterest {\n        return new TimeOfInterest({year, month, day, hour, min, sec});\n    }\n\n    public static fromDate(date: Date): TimeOfInterest {\n        return new TimeOfInterest({\n            year: date.getUTCFullYear(),\n            month: date.getUTCMonth() + 1,\n            day: date.getUTCDate(),\n            hour: date.getUTCHours(),\n            min: date.getUTCMinutes(),\n            sec: date.getUTCSeconds(),\n        });\n    }\n\n    public static fromYearOfDay(year: number, dayOfYear: number): TimeOfInterest {\n        const time = dayOfYear2time(year, dayOfYear);\n\n        return new TimeOfInterest(time);\n    }\n\n    public static fromJulianDay(jd: number): TimeOfInterest {\n        const time = julianDay2time(jd);\n\n        return new TimeOfInterest(time);\n    }\n\n    public static fromJulianDayEphemeris(jde: number): TimeOfInterest {\n        return TimeOfInterest.fromJulianDay(julianDayEphemeris2julianDay(jde));\n    }\n\n    public static fromJulianCenturiesJ2000(T: number): TimeOfInterest {\n        const jd = julianCenturiesJ20002julianDay(T);\n        const time = julianDay2time(jd);\n\n        return new TimeOfInterest(time);\n    }\n\n    public getTime(): Time {\n        return this.time;\n    }\n\n    public getString(): string {\n        const {year, month, day, hour, min, sec} = this.time;\n\n        return `${year}-${pad(month, 2)}-${pad(day, 2)} ${pad(hour, 2)}:${pad(min, 2)}:${pad(sec, 2)}`;\n    }\n\n    public getDate(): Date {\n        const {year, month, day, hour, min, sec} = this.time;\n\n        return new Date(Date.UTC(year, month - 1, day, hour, min, sec));\n    }\n\n    public getDecimalYear(): number {\n        return getDecimalYear(this.time);\n    }\n\n    public getDayOfYear(): number {\n        return getDayOfYear(this.time);\n    }\n\n    public getDayOfWeek(): number {\n        return getDayOfWeek(this.time);\n    }\n\n    public isLeapYear(): boolean {\n        return isLeapYear(this.time.year);\n    }\n\n    public getJulianDay(): number {\n        return this.jd;\n    }\n\n    public getJulianDay0(): number {\n        return julianDay2julianDay0(this.jd);\n    }\n\n    public getJulianDayEphemeris(): number {\n        return this.jde;\n    }\n\n    public getJulianCenturiesJ2000(): number {\n        return this.T;\n    }\n\n    public getJulianCenturiesJ2000Ephemeris(): number {\n        return julianDay2julianCenturiesJ2000(this.jde);\n    }\n\n    public getJulianMillenniaJ2000(): number {\n        return julianDay2julianMillenniaJ2000(this.jd);\n    }\n\n    public getJulianMillenniaJ2000Ephemeris(): number {\n        return julianDay2julianMillenniaJ2000(this.jde);\n    }\n\n    public getGreenwichMeanSiderealTime(): number {\n        return getGreenwichMeanSiderealTime(this.T);\n    }\n\n    public getGreenwichApparentSiderealTime(): number {\n        return getGreenwichApparentSiderealTime(this.T);\n    }\n\n    public getLocalMeanSiderealTime(location: LatLon): number {\n        return getLocalMeanSiderealTime(this.T, location.lon);\n    }\n\n    public getLocalApparentSiderealTime(location: LatLon): number {\n        return getLocalApparentSiderealTime(this.T, location.lon);\n    }\n\n    public getDeltaT(): number {\n        const {year, month} = this.time;\n\n        return getDeltaT(year, month);\n    }\n}\n","import {LIGHT_SPEED_KM_PER_SEC} from '@app/constants/units';\nimport {LimbAlignment} from '@app/enums/limb';\nimport type {\n    EclipticSphericalCoordinates,\n    EquatorialSphericalCoordinates,\n    LocalHorizontalCoordinates,\n    RectangularCoordinates,\n} from '@app/types/CoordinateTypes';\nimport type {Location} from '@app/types/LocationTypes';\nimport {correctEffectOfRefraction} from '@app/utils/apparentPositionCorrections';\nimport {\n    eclipticSpherical2equatorialSpherical,\n    equatorialSpherical2topocentricHorizontal,\n    equatorialSpherical2topocentricSpherical,\n    spherical2rectangular,\n} from '@app/utils/coordinateTransformation';\nimport {au2km} from '@app/utils/distance';\nimport {getRise, getSet, getStandardAltitude, getTransit} from '@app/utils/riseSetTransit';\nimport TimeOfInterest from '@package/time/models/TimeOfInterest';\nimport type {AstronomicalObjectInterface} from './AstronomicalObjectInterface';\n\nexport default abstract class AstronomicalObject implements AstronomicalObjectInterface {\n    protected readonly jd0: number = 0.0;\n\n    protected readonly jd: number = 0.0;\n\n    // Julian Centuries J2000 in Dynamical Time (TT), for ephemeris series\n    protected readonly Te: number = 0.0;\n\n    // Julian Millennia J2000 in Dynamical Time (TT), for ephemeris series\n    protected readonly te: number = 0.0;\n\n    // Julian Centuries J2000 in Universal Time (UT), for sidereal time\n    protected readonly T: number = 0.0;\n\n    protected constructor(\n        protected readonly toi: TimeOfInterest = TimeOfInterest.fromCurrentTime(),\n        public readonly name = 'astronomical object',\n    ) {\n        this.jd0 = toi.getJulianDay0();\n        this.jd = toi.getJulianDay();\n        this.T = toi.getJulianCenturiesJ2000();\n        this.Te = toi.getJulianCenturiesJ2000Ephemeris();\n        this.te = toi.getJulianMillenniaJ2000Ephemeris();\n    }\n\n    public getTimeOfInterest(): TimeOfInterest {\n        return this.toi;\n    }\n\n    public abstract getHeliocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates;\n\n    public abstract getHeliocentricEclipticRectangularDateCoordinates(): RectangularCoordinates;\n\n    public abstract getHeliocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates;\n\n    public abstract getHeliocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates;\n\n    public abstract getGeocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates;\n\n    public abstract getGeocentricEclipticRectangularDateCoordinates(): RectangularCoordinates;\n\n    public abstract getGeocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates;\n\n    public abstract getGeocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates;\n\n    public getGeocentricEquatorialSphericalJ2000Coordinates(): EquatorialSphericalCoordinates {\n        const coords = this.getGeocentricEclipticSphericalJ2000Coordinates();\n\n        return eclipticSpherical2equatorialSpherical(coords, this.Te);\n    }\n\n    public getGeocentricEquatorialSphericalDateCoordinates(): EquatorialSphericalCoordinates {\n        const coords = this.getGeocentricEclipticSphericalDateCoordinates();\n\n        return eclipticSpherical2equatorialSpherical(coords, this.Te);\n    }\n\n    public getApparentGeocentricEclipticRectangularCoordinates(): RectangularCoordinates {\n        const coords = this.getApparentGeocentricEclipticSphericalCoordinates();\n\n        return spherical2rectangular(coords);\n    }\n\n    public abstract getApparentGeocentricEclipticSphericalCoordinates(): EclipticSphericalCoordinates;\n\n    public getApparentGeocentricEquatorialSphericalCoordinates(): EquatorialSphericalCoordinates {\n        const coords = this.getApparentGeocentricEclipticSphericalCoordinates();\n\n        return eclipticSpherical2equatorialSpherical(coords, this.Te);\n    }\n\n    public getApparentTopocentricEquatorialSphericalCoordinates(location: Location): EquatorialSphericalCoordinates {\n        const coords = this.getApparentGeocentricEquatorialSphericalCoordinates();\n\n        return equatorialSpherical2topocentricSpherical(coords, location, this.T);\n    }\n\n    public getApparentTopocentricHorizontalCoordinates(location: Location): LocalHorizontalCoordinates {\n        const coords = this.getApparentGeocentricEquatorialSphericalCoordinates();\n\n        return equatorialSpherical2topocentricHorizontal(coords, location, this.T);\n    }\n\n    public getRefractionCorrectedTopocentricHorizontalCoordinates(location: Location): LocalHorizontalCoordinates {\n        const {azimuth, altitude, radiusVector} = this.getApparentTopocentricHorizontalCoordinates(location);\n\n        return {\n            azimuth: azimuth,\n            altitude: correctEffectOfRefraction(altitude),\n            radiusVector: radiusVector,\n        };\n    }\n\n    public getDistanceToEarth(): number {\n        const coords = this.getGeocentricEclipticSphericalDateCoordinates();\n\n        return au2km(coords.radiusVector);\n    }\n\n    public getApparentDistanceToEarth(): number {\n        const coords = this.getApparentGeocentricEclipticSphericalCoordinates();\n\n        return au2km(coords.radiusVector);\n    }\n\n    public getTopocentricDistanceToEarth(location: Location): number {\n        const coords = this.getApparentTopocentricEquatorialSphericalCoordinates(location);\n\n        return au2km(coords.radiusVector);\n    }\n\n    public getLightTime(): number {\n        const {radiusVector} = this.getGeocentricEclipticSphericalDateCoordinates();\n\n        return au2km(radiusVector) / LIGHT_SPEED_KM_PER_SEC;\n    }\n\n    public getAngularDiameter(): number {\n        return 0;\n    }\n\n    public getTransit(location: Location): TimeOfInterest {\n        const jd = getTransit(location, this.jd0, (jd: number) => this.getApparentEquatorialCoordinatesAtJulianDay(jd));\n\n        return TimeOfInterest.fromJulianDay(jd);\n    }\n\n    public getGeometricRise(location: Location, limbAlignment: LimbAlignment = LimbAlignment.Center): TimeOfInterest {\n        return this.getRiseSet(getRise, location, limbAlignment, false);\n    }\n\n    public getApparentRise(location: Location, limbAlignment: LimbAlignment = LimbAlignment.Center): TimeOfInterest {\n        return this.getRiseSet(getRise, location, limbAlignment, true);\n    }\n\n    public getGeometricSet(location: Location, limbAlignment: LimbAlignment = LimbAlignment.Center): TimeOfInterest {\n        return this.getRiseSet(getSet, location, limbAlignment, false);\n    }\n\n    public getApparentSet(location: Location, limbAlignment: LimbAlignment = LimbAlignment.Center): TimeOfInterest {\n        return this.getRiseSet(getSet, location, limbAlignment, true);\n    }\n\n    private getRiseSet(\n        riseSet: typeof getRise,\n        location: Location,\n        limbAlignment: LimbAlignment,\n        isRefractionConsidered: boolean,\n    ): TimeOfInterest {\n        const h0 = getStandardAltitude({isRefractionConsidered, alignment: limbAlignment}, this.getAngularDiameter());\n        const jd = riseSet(location, this.jd0, h0, (jd: number) =>\n            this.getApparentEquatorialCoordinatesAtJulianDay(jd),\n        );\n\n        return TimeOfInterest.fromJulianDay(jd);\n    }\n\n    private getApparentEquatorialCoordinatesAtJulianDay(jd: number): EquatorialSphericalCoordinates {\n        const toi = TimeOfInterest.fromJulianDay(jd);\n        const AstronomicalObjectClass = this.constructor as new (toi: TimeOfInterest) => AstronomicalObject;\n        const object = new AstronomicalObjectClass(toi);\n\n        return object.getApparentGeocentricEquatorialSphericalCoordinates();\n    }\n\n    // public getConjunctionInRightAscensionTo(\n    //     astronomicalObjectConstructor: AstronomicalObjectConstructor,\n    // ): Conjunction {\n    //     return getConjunctionInRightAscension(\n    //         this.constructor as AstronomicalObjectConstructor,\n    //         astronomicalObjectConstructor,\n    //         this.jd0,\n    //     );\n    // }\n    //\n    // public getConjunctionInLongitudeTo(\n    //     astronomicalObjectConstructor: AstronomicalObjectConstructor,\n    // ): Conjunction {\n    //     return getConjunctionInLongitude(\n    //         this.constructor as AstronomicalObjectConstructor,\n    //         astronomicalObjectConstructor,\n    //         this.jd0,\n    //     );\n    // }\n}\n","import * as vsop87DateDefault from '@app/resources/vsop87/vsop87EarthSphericalDateReduced';\nimport * as vsop87J2000Default from '@app/resources/vsop87/vsop87EarthSphericalJ2000Reduced';\nimport type {EclipticSphericalCoordinates, RectangularCoordinates} from '@app/types/CoordinateTypes';\nimport type {Vsop87} from '@app/types/Vsop87Types';\nimport {normalizeAngle} from '@app/utils/angle';\nimport {spherical2rectangular} from '@app/utils/coordinateTransformation';\nimport * as earth from '@app/utils/earth';\nimport {calculateVSOP87, calculateVSOP87Angle} from '@app/utils/vsop87';\nimport AstronomicalObject from '@package/core/models/models/AstronomicalObject';\nimport type TimeOfInterest from '@package/time/models/TimeOfInterest';\n\nexport default class Earth extends AstronomicalObject {\n    public constructor(\n        toi?: TimeOfInterest,\n        private readonly vsop87Date: Vsop87 = vsop87DateDefault,\n        private readonly vsop87J2000: Vsop87 = vsop87J2000Default,\n    ) {\n        super(toi, 'earth');\n    }\n\n    public static create(toi?: TimeOfInterest): Earth {\n        return new Earth(toi);\n    }\n\n    public getHeliocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates {\n        return spherical2rectangular(this.getHeliocentricEclipticSphericalJ2000Coordinates());\n    }\n\n    public getHeliocentricEclipticRectangularDateCoordinates(): RectangularCoordinates {\n        return spherical2rectangular(this.getHeliocentricEclipticSphericalDateCoordinates());\n    }\n\n    public getHeliocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates {\n        return {\n            lon: normalizeAngle(calculateVSOP87Angle(this.vsop87J2000.VSOP87_X, this.te)),\n            lat: calculateVSOP87Angle(this.vsop87J2000.VSOP87_Y, this.te),\n            radiusVector: calculateVSOP87(this.vsop87J2000.VSOP87_Z, this.te),\n        };\n    }\n\n    public getHeliocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates {\n        return {\n            lon: normalizeAngle(calculateVSOP87Angle(this.vsop87Date.VSOP87_X, this.te)),\n            lat: calculateVSOP87Angle(this.vsop87Date.VSOP87_Y, this.te),\n            radiusVector: calculateVSOP87(this.vsop87Date.VSOP87_Z, this.te),\n        };\n    }\n\n    public getGeocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates {\n        return {x: 0, y: 0, z: 0};\n    }\n\n    public getGeocentricEclipticRectangularDateCoordinates(): RectangularCoordinates {\n        return {x: 0, y: 0, z: 0};\n    }\n\n    public getGeocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates {\n        return {lon: 0, lat: 0, radiusVector: 0};\n    }\n\n    public getGeocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates {\n        return {lon: 0, lat: 0, radiusVector: 0};\n    }\n\n    public getApparentGeocentricEclipticSphericalCoordinates(): EclipticSphericalCoordinates {\n        return {lon: 0, lat: 0, radiusVector: 0};\n    }\n\n    public getNutationInLongitude(): number {\n        return earth.getNutationInLongitude(this.Te);\n    }\n\n    public getNutationInObliquity(): number {\n        return earth.getNutationInObliquity(this.Te);\n    }\n\n    public getMeanObliquityOfEcliptic(): number {\n        return earth.getMeanObliquityOfEcliptic(this.Te);\n    }\n\n    public getTrueObliquityOfEcliptic(): number {\n        return earth.getTrueObliquityOfEcliptic(this.Te);\n    }\n}\n"],"mappings":"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AI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI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,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAC3E,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACjF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EACnF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EACrF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,EAAE,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,EAAE,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACrF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EAAG,CAAC,KAAM,IAAI,EAAG,CAAC,OAAQ,IAAI,EACvF,CAAC,KAAM,IAAI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","names":["vsop87EarthSphericalDateReduced_exports","__export","VSOP87_X","VSOP87_Y","VSOP87_Z","VSOP87_L0","VSOP87_L1","VSOP87_L2","VSOP87_L3","VSOP87_L4","VSOP87_L5","VSOP87_B0","VSOP87_B1","VSOP87_B2","VSOP87_B3","VSOP87_B4","VSOP87_B5","VSOP87_R0","VSOP87_R1","VSOP87_R2","VSOP87_R3","VSOP87_R4","VSOP87_R5","vsop87EarthSphericalJ2000Reduced_exports","__export","VSOP87_X","VSOP87_Y","VSOP87_Z","VSOP87_L0","VSOP87_L1","VSOP87_L2","VSOP87_L3","VSOP87_L4","VSOP87_L5","VSOP87_B0","VSOP87_B1","VSOP87_B2","VSOP87_B3","VSOP87_B4","VSOP87_B5","VSOP87_R0","VSOP87_R1","VSOP87_R2","VSOP87_R3","VSOP87_R4","VSOP87_R5","round","value","decimals","p","pad","num","size","numStr","normalizeAngle","degrees","baseAngle","angle","sec2deg","seconds","EARTH_AXIS_RATIO","EARTH_FLATTENING","EARTH_POLAR_RADIUS_RATIO","ECCENTRICITY_SQUARED","EARTH_ROTATION_DEG_PER_HOUR","EARTH_SIDEREAL_ROTATION_PER_DAY","EARTH_ARGUMENTS_OF_NUTATION","DEG","RAD","LIGHT_SPEED_KM_PER_SEC","au2km","R","getMeanAnomaly","T","M","normalizeAngle","getMeanElongation","T","D","normalizeAngle","getMeanAnomaly","Mmoon","getArgumentOfLatitude","F","getMeanObliquityOfEcliptic","T","U","getTrueObliquityOfEcliptic","eps0","sumEps","getNutationInObliquity","getNutationInLongitude","D","getMeanElongation","Msun","getMeanAnomaly","Mmoon","F","getArgumentOfLatitude","O","sumPhi","EARTH_ARGUMENTS_OF_NUTATION","args","argMmoon","argMsun","argF","argD","argO","argPhi1","argPhi2","tmpSum","DEG","argEps1","argEps2","EPOCH_J2000","REFERENCE_DELTA_T","REFERENCE_MIN_YEAR","REFERENCE_DELTA_T","REFERENCE_MAX_YEAR","FUTURE_FIT_START_YEAR","FUTURE_DELTA_T_COEFFICIENTS","fitPolynomial","yearlyReferenceValues","deltaT","index","getDeltaT","year","month","y","getReferenceDeltaT","evaluatePolynomial","t","first","last","clamped","low","high","mid","year0","deltaT0","year1","deltaT1","fraction","from","to","values","coefficients","x","sum","coefficient","power","points","degree","size","matrix","vector","i","j","value","pivot","row","factor","col","_","time2julianDay","time","tmpYear","getDayOfYear","Y","M","D","H","A","B","julianDay2time","jd","Z","F","A","a","B","C","D","E","dayOnMonth","month","year","hour","min","sec","julianDay2julianDay0","julianDay2julianCenturiesJ2000","jd","EPOCH_J2000","julianCenturiesJ20002julianDay","T","julianDay2julianMillenniaJ2000","julianDay2julianDayEphemeris","jd","year","month","julianDay2time","getDeltaT","julianDayEphemeris2julianDay","jde","dayOfYear2time","dayOfYear","K","isLeapYear","day","hourFloat","hour","minFloat","min","sec","round","getDecimalYear","time","daysInYear","getDayOfYear","M","D","getDayOfWeek","time2julianDay","getGreenwichMeanSiderealTime","T","GMST","julianCenturiesJ20002julianDay","EPOCH_J2000","normalizeAngle","getGreenwichApparentSiderealTime","p","getNutationInLongitude","eRad","getTrueObliquityOfEcliptic","DEG","getLocalMeanSiderealTime","lon","LMST","getLocalApparentSiderealTime","getLocalHourAngle","rightAscension","LAST","spherical2rectangular","coords","lon","lat","radiusVector","lonRad","DEG","latRad","x","y","z","equatorialSpherical2topocentricSpherical","location","T","rightAscension","declination","elevation","dRad","rhoSinLat","getRhoSinLat","rhoCosLat","getRhoCosLat","piRad","getEquatorialParallax","LAST","getLocalApparentSiderealTime","HRad","getLocalHourAngle","A","B","C","q","HTopo","RAD","dTopoRad","normalizeAngle","equatorialSpherical2topocentricHorizontal","topoCoords","H","equatorialSpherical2topocentricHorizontalByLocalHourAngle","localHourAngle","ARad","hRad","equatorialSpherical2topocentricSphericalByLocalHourAngle","eclipticSpherical2equatorialSpherical","normalize","epsRad","getTrueObliquityOfEcliptic","n","d","rightAscensionRad","getEquatorialParallax","d","angle","sec2deg","DEG","RAD","getRhoSinLat","lat","elevation","latRad","uRad","EARTH_AXIS_RATIO","getRhoCosLat","calculateVSOP87Angle","terms","t","calculateVSOP87","RAD","result","term","key","sumUpTerm","a","b","c","correctEffectOfRefraction","altitude","R","DEG","REFRACTION_AT_HORIZON","CONVERGENCE_LIMIT","MAX_ITERATIONS","getTransit","location","jd0","getCoords","GAST","getGreenwichSiderealTimeAtMidnight","rightAscension","m","normalizeAngle","dm","cnt","coords","getLocalHourAngle","getRise","h0","getRiseSet","getSet","getStandardAltitude","options","angularDiameter","isRefractionConsidered","alignment","refraction","semiDiameter","sign","event","declination","mTransit","halfDiurnalArc","getHalfDiurnalArc","geocentricH","H","equatorialSpherical2topocentricSphericalByLocalHourAngle","altitude","equatorialSpherical2topocentricHorizontalByLocalHourAngle","DEG","lat","latRad","dRad","h0Rad","cosH0","RAD","lon","EARTH_SIDEREAL_ROTATION_PER_DAY","T","julianDay2julianCenturiesJ2000","getGreenwichApparentSiderealTime","TimeOfInterest","_TimeOfInterest","time","time2julianDay","julianDay2julianDayEphemeris","julianDay2julianCenturiesJ2000","date","year","month","day","hour","min","sec","dayOfYear","dayOfYear2time","jd","julianDay2time","jde","julianDayEphemeris2julianDay","T","julianCenturiesJ20002julianDay","pad","getDecimalYear","getDayOfYear","getDayOfWeek","isLeapYear","julianDay2julianDay0","julianDay2julianMillenniaJ2000","getGreenwichMeanSiderealTime","getGreenwichApparentSiderealTime","location","getLocalMeanSiderealTime","getLocalApparentSiderealTime","getDeltaT","AstronomicalObject","toi","TimeOfInterest","name","coords","eclipticSpherical2equatorialSpherical","spherical2rectangular","location","equatorialSpherical2topocentricSpherical","equatorialSpherical2topocentricHorizontal","azimuth","altitude","radiusVector","correctEffectOfRefraction","au2km","LIGHT_SPEED_KM_PER_SEC","jd","getTransit","limbAlignment","getRise","getSet","riseSet","isRefractionConsidered","h0","getStandardAltitude","AstronomicalObjectClass","Earth","_Earth","AstronomicalObject","toi","vsop87Date","vsop87EarthSphericalDateReduced_exports","vsop87J2000","vsop87EarthSphericalJ2000Reduced_exports","spherical2rectangular","normalizeAngle","calculateVSOP87Angle","calculateVSOP87","getNutationInLongitude","getNutationInObliquity","getMeanObliquityOfEcliptic","getTrueObliquityOfEcliptic"]}