ascii-side-of-the-moon 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -2
- package/dist/cli.cjs +490 -311
- package/dist/index.cjs +9 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +22 -2
- package/dist/index.d.ts +22 -2
- package/dist/index.mjs +9 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
package/dist/cli.cjs
CHANGED
|
@@ -6,9 +6,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
6
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __esm = (fn, res) => function __init() {
|
|
10
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
11
|
-
};
|
|
12
9
|
var __export = (target, all) => {
|
|
13
10
|
for (var name in all)
|
|
14
11
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -31,18 +28,56 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
31
28
|
));
|
|
32
29
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
33
30
|
|
|
31
|
+
// src/cli.ts
|
|
32
|
+
var cli_exports = {};
|
|
33
|
+
__export(cli_exports, {
|
|
34
|
+
main: () => main
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(cli_exports);
|
|
37
|
+
|
|
34
38
|
// src/core/astronomy.ts
|
|
39
|
+
var AstronomyNS = __toESM(require("astronomy-engine"), 1);
|
|
40
|
+
var Astronomy = AstronomyNS.default ?? AstronomyNS;
|
|
35
41
|
function addDays(d, days) {
|
|
36
42
|
const n = new Date(d.getTime());
|
|
37
43
|
n.setDate(n.getDate() + days);
|
|
38
44
|
return n;
|
|
39
45
|
}
|
|
46
|
+
function normalizeDegrees(angle) {
|
|
47
|
+
return (angle % 360 + 360) % 360;
|
|
48
|
+
}
|
|
49
|
+
function normalizeHourAngle(hours) {
|
|
50
|
+
let h = (hours % 24 + 24) % 24;
|
|
51
|
+
if (h > 12) h -= 24;
|
|
52
|
+
return h;
|
|
53
|
+
}
|
|
40
54
|
function isWaxingAt(date) {
|
|
41
55
|
const today = Astronomy.Illumination(Astronomy.Body.Moon, date).phase_fraction;
|
|
42
56
|
const tomorrow = Astronomy.Illumination(Astronomy.Body.Moon, addDays(date, 1)).phase_fraction;
|
|
43
57
|
return tomorrow > today;
|
|
44
58
|
}
|
|
45
|
-
function
|
|
59
|
+
function calculateParallacticAngle(date, location, eq) {
|
|
60
|
+
const siderealTimeHours = Astronomy.SiderealTime(date);
|
|
61
|
+
const longitudeHours = location.longitude / 15;
|
|
62
|
+
const hourAngleHours = normalizeHourAngle(longitudeHours + siderealTimeHours - eq.ra);
|
|
63
|
+
const hourAngleRad = hourAngleHours * 15 * Astronomy.DEG2RAD;
|
|
64
|
+
const latitudeRad = location.latitude * Astronomy.DEG2RAD;
|
|
65
|
+
const declinationRad = eq.dec * Astronomy.DEG2RAD;
|
|
66
|
+
const numerator = Math.sin(hourAngleRad);
|
|
67
|
+
const denominator = Math.tan(latitudeRad) * Math.cos(declinationRad) - Math.sin(declinationRad) * Math.cos(hourAngleRad);
|
|
68
|
+
return Math.atan2(numerator, denominator) * Astronomy.RAD2DEG;
|
|
69
|
+
}
|
|
70
|
+
function computeMoonPosition(date, location) {
|
|
71
|
+
const observer = new Astronomy.Observer(location.latitude, location.longitude, location.elevationMeters ?? 0);
|
|
72
|
+
const eq = Astronomy.Equator(Astronomy.Body.Moon, date, observer, true, true);
|
|
73
|
+
const horizon = Astronomy.Horizon(date, observer, eq.ra, eq.dec, "normal");
|
|
74
|
+
return {
|
|
75
|
+
azimuth: normalizeDegrees(horizon.azimuth),
|
|
76
|
+
altitude: horizon.altitude,
|
|
77
|
+
parallacticAngle: calculateParallacticAngle(date, location, eq)
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function getMoonState(date, observerLocation) {
|
|
46
81
|
const illum = Astronomy.Illumination(Astronomy.Body.Moon, date);
|
|
47
82
|
const lib = Astronomy.Libration(date);
|
|
48
83
|
return {
|
|
@@ -59,58 +94,27 @@ function getMoonState(date) {
|
|
|
59
94
|
libration: {
|
|
60
95
|
elon: lib.elon,
|
|
61
96
|
elat: lib.elat
|
|
62
|
-
}
|
|
97
|
+
},
|
|
98
|
+
position: observerLocation ? computeMoonPosition(date, observerLocation) : void 0
|
|
63
99
|
};
|
|
64
100
|
}
|
|
65
|
-
function getMoonPhase(moonState) {
|
|
66
|
-
const { phaseAngleDeg, illuminatedFraction } = moonState.phase;
|
|
67
|
-
const waxing = moonState.phase.isWaxing ?? phaseAngleDeg > 90;
|
|
68
|
-
const a0 = (phaseAngleDeg % 360 + 360) % 360;
|
|
69
|
-
const a = a0 > 180 ? 360 - a0 : a0;
|
|
70
|
-
const FULL_EPS = 10;
|
|
71
|
-
const NEW_EPS = 10;
|
|
72
|
-
const QUARTER_EPS = 8;
|
|
73
|
-
const NEAR_FULL_FRAC = 0.98;
|
|
74
|
-
const NEAR_NEW_FRAC = 0.02;
|
|
75
|
-
const NEAR_HALF_FRAC = 0.02;
|
|
76
|
-
if (a <= FULL_EPS || illuminatedFraction >= NEAR_FULL_FRAC) return "Full Moon";
|
|
77
|
-
if (a >= 180 - NEW_EPS || illuminatedFraction <= NEAR_NEW_FRAC) return "New Moon";
|
|
78
|
-
if (Math.abs(a - 90) <= QUARTER_EPS || Math.abs(illuminatedFraction - 0.5) <= NEAR_HALF_FRAC) {
|
|
79
|
-
return waxing ? "First Quarter" : "Last Quarter";
|
|
80
|
-
}
|
|
81
|
-
if (a < 90) {
|
|
82
|
-
return waxing ? "Waxing Gibbous" : "Waning Gibbous";
|
|
83
|
-
}
|
|
84
|
-
return waxing ? "Waxing Crescent" : "Waning Crescent";
|
|
85
|
-
}
|
|
86
|
-
var AstronomyNS, Astronomy;
|
|
87
|
-
var init_astronomy = __esm({
|
|
88
|
-
"src/core/astronomy.ts"() {
|
|
89
|
-
"use strict";
|
|
90
|
-
AstronomyNS = __toESM(require("astronomy-engine"), 1);
|
|
91
|
-
Astronomy = AstronomyNS.default ?? AstronomyNS;
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
101
|
|
|
95
102
|
// src/render/ascii.json
|
|
96
|
-
var ascii_default
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
libration_elat: 5.044,
|
|
112
|
-
libration_elon: 0.661,
|
|
113
|
-
ascii: `
|
|
103
|
+
var ascii_default = {
|
|
104
|
+
moons: [
|
|
105
|
+
{
|
|
106
|
+
index: 0,
|
|
107
|
+
distance_km: 405493.5,
|
|
108
|
+
libration_elat: -0.888,
|
|
109
|
+
libration_elon: -0.412,
|
|
110
|
+
ascii: ' \n \n ._ . - . \n ,_++> a, +. `-. \n zr\' ^ ~")ssy_ss_. e__ \n ^\' w3$B$#R$2tBW&`x. \n M@$@@E@@$YAm5Q@s<T \n _*4Fk ;_ . : _r 4$g$B` `T!~4Z HDb*y_ \n 7w=:-yyXm#sg@$$@$#Z . R$@$@R$?@` \n ,Z$Kj9@W@$@@@@@@BG@w., / e$$0@5@Bbl" \n } z$@@y@@@@@@@@@$$@@@B@w$L cyM%H$$WP=K* \n /^ 9M@@@@@@@@@@@@@@@@@$@@$~ y, ?#$$; \'L \n MF. ?E@$$@@@@$@@@@@@@@@@g *z\'_. ,Z@@ + \n >w% E@@@@@@@@@@@@@@$@@@$$$%>$k- `y*.~$xtv \n ##y$_-_y_aL` ~@@@@@@@@@@$@$@@@@@$@$$yB@$$/~ ~^Q+ \n kXB@@_g@@@A`wgy@@$@@@@@@@@@@@$@@@$B@@@$@$I ~_ \n "_K@$Rb$^ ~MW$@$B@@@@@@$@$@@$@B$$@@@@5%sW v$v+ \n #U@W$9@W_ .yd@$@@$@@$@$@@@$$$@$$M$M@2B@&@zgM `"+ \n [F*$E$@g@d@RR$E@@@$$@R@@@@@Rg@B$@$@0$@2@@_ypJ~ \n \\\'MB@PR$@$@@$$$@g@@@@@@$$$$$@E0@G$@g@$$A$MgV( \n ^>Y$W3$@05$@B$$$@@@@M@$@R@@@BR$0$a@$@$@$@K? \n ~4&BWB@@@@@@@$@@@@$@@@@@B@$$@B$NEBgW$~^" \n `^^T&~v$R$B@@$@BB$$y@$$E@$$@A&N0M"~~ \n \'Nv?52EMJ!_@$5g@@$R@RA$@E@7nF"^ \n "^ 74~0~#<ERggkA=s3p4yyL. ` \n ` ``^^ ^@n8m+"`^ \n \n \n'
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
index: 1,
|
|
114
|
+
distance_km: 361882.7,
|
|
115
|
+
libration_elat: 5.044,
|
|
116
|
+
libration_elon: 0.661,
|
|
117
|
+
ascii: `
|
|
114
118
|
. -r..
|
|
115
119
|
_1{ *~ ML1W>u, _ . ^..,
|
|
116
120
|
y/ ^w@@$@sEgg_9u_{_
|
|
@@ -139,41 +143,41 @@ var init_ascii = __esm({
|
|
|
139
143
|
\`T^^+{$)$2a73I9;@%RcM\`"
|
|
140
144
|
~'"\`'~
|
|
141
145
|
`
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
index: 2,
|
|
149
|
+
distance_km: 363474.7,
|
|
150
|
+
libration_elat: -4.493,
|
|
151
|
+
libration_elon: 2.394,
|
|
152
|
+
ascii: " _ \n . .- T - -, \n -bZ?-aLrw*j_ : . \n : _$Y^ ~ ^-XRyw|,, ~- \n F`` _#@@dgsgs _2_! \n _ : . y@@@@$zE$AD21ftW' \n _yWBxm' *- : . __ \"N$@@UOF4@b\\%sB7WR.' \n `s;wd__1 W_;Vn@yyag@$@5 `~ ,s,<%[gs/k \n t$$2AW@@@$@@$$@$$@@E$# r . \"@@$D$Wjny \n -:; . q@@@$$$$@$$$@@@@@@$@@@W _ K@5@$5E55Z \n v2K ~0@@@@@@@@@@@@@@@@@@B@@$$ylD y$@@5d@~Ewx \n _V$(. 7HB@$@@@@@@@@@@@@@$@@5$$@@F~ T d@gs | \n /v a; ; ```@@@$@@@@@@@B@@@$@@@@@$@ ,, ' ^T0$ \n L0@@$ v@$@@@@@@@@@@$@@@@@$@$@B;y: y,. +^ A$ , \n \\b2Y$$E{x2gz@L=_D5@@@@@@@@@@@$@@@@@$@@@$y_tw$@_ u\"^ ^W%' \n WLA$$@$%@@@@@B`Y=L@@$@@@@@@@@@$$@@@@@@$@$E@R@$@E \"{ \n ]y@NB@@@$$F ^B@@@B$@@@@@@$@@@@@$$@@@@@$@s0$@Z . \n {4X$@$@aR=e _R$@$@$$@@@@@@@$$$B@@@$@@@@E5@PYE\\ y) \n @*AgMB$$R5aR@@R$g@@@@@@@@@@@@@$@$@@B$$#$@Qjm@TdW/ j\"/ \n #aZW$MBMR@0@@@$@A@$@$@@@@$@$@@@W@$@E$@@$$WgHP%^~hu` \n `%$0$F$@$0@@@@B$$@@@@@@$@B@@E$@@@%@$@@@@$@W$@$BZ~ \n 4?9@dB$$R$@@$B$MB$@@@$$$$@$$@5@$@g@g@B$9b$@AZG \n *E@R$MR$$@@AZ$$R$@@$R$5$@@@D@$$$$$@ZE3@@a`^ \n AA-j_^AT$$E@E@$@$@$RB2@Wa@$@%R@@$5BT~v \n ^@V%@5@Q5WXE@@@R2@@RWR$b@$4@$WXMW] \n r'AF)[%st$@BEc$E@Bx?t5_@\"T`^ \n ~^ !7iT5$Z@@R0HW~4! \n ~ ~~ ` \n"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
index: 3,
|
|
156
|
+
distance_km: 363808.5,
|
|
157
|
+
libration_elat: -0.275,
|
|
158
|
+
libration_elon: 0.915,
|
|
159
|
+
ascii: " \n \\ l.r \n ._u:UK4 ^v w_ ~ ^\\ . \n . . v> ` ` `^4@Rj_Qx__ MBm \n .(~ 2g@$@@zgWi9%Qd|4 \n {0@@$5@@@B~D#gmHgk\"M \n _$g.y = _ _gDg$M\" `TYr~Z^ 1RvqF^ \n \"~`K'.:,_L _w_s2@y$$$@@R` !@%g@R*Mz#{ \n . &yg^YR@@s@$B$@@@@@W0Z ,@$0@$BRXU \\ \n w@@$f$$$$@@@@A@@@$B$@@&_ G; @@@B@@Zj0k#x \n M g@@@@@$@@@@@@@@@@@@@@@$@@@$+- -MM~~W@$# `!v \n !Xe =#$@@@@@0$@@@@@@B@$@@@$@@. =r . 44$$ ' \n M]| . \"@@@@@@@@@@$$@@@@@@@@@@$xfi m . wu=Az. $ \n `[#< J@@@@@@@@@@@@@@@@@@@@$@@g@_42s_ y?% ^K}@! \n <my$yy} ww,a_ .~$$@@@@@@@@@$@@@@@@@@R$$@B@@@$zs' ~`~ \n XNv9$@p$$@$$E3L*y0@@@@@@@@$@@@@@@@@@@$@@$@W2@gM- -. \n 'Vd@$Z@@@@\"` $$@@E@@@@@@@@@@@$@@@$$$@$@@$@$NKc . ,j1, \n wkBQR@@%k,! ,z@R$@@@@@@@@@@@@@@@@M@@@@@@$$@Wg\\$g* %>V \n `VJ$$s&0Bv_J$$0B0@$$$@$@@@@$@@$@$@$@$@@$$$@@@f@YF_L` ' \n ??K#gZ@@$@@@$s2$$@@@$@@@$$@@@B$@$$$@@G@R@ERBB@g#Xfuf \n twZRW2$@@@$$$@@@@$@@$$@$@B$@@$E@$0@@@E@M$@M5$@WyL \n ~\"E@@yE@@$@@$@@$@$@B@$$$@$E@@@$@$@$@$@@@@ER@27>\" \n ^!F5#g@@$@$$@EE$$@@@@$W@@M@@$$@0@@gKzBBK%9~ \n `'^~~^T~7R@g@R$$@B$@MQ$a$BE@@$gE@$HJP5(~ \n ` '}K$@g#R#0$15$@$Z@R@@BRz@$@V[Qe\\ \n `f='^4ysMh$54T$W42@PE~FfW&9~~ \n '~=\\ <?^F0%~>BR$?)^T\"` \n ` ~ ~~ \n"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
index: 4,
|
|
163
|
+
distance_km: 364350.7,
|
|
164
|
+
libration_elat: -5.105,
|
|
165
|
+
libration_elon: -1.866,
|
|
166
|
+
ascii: " \n . - ``` e . \n , -zq{^o{.1n, = \":\"y . \n . _Z0~ ` -ZAmLi,.. '_, \n M\" X@yygyw-x_2/Gk. \n . . . jg$@@$$g@@$1?V#WR}^_ \n s*R W M/ ;.. 4$5W$$RF@$WgEZ99@2q'\\ \n . 'w._w_y_7__-z@$ym@@@$2' T~~_$'/@2@*7j, \n y@ghT@@@$@@@@$@@@@$$W<- 7$E#@B$g4N \n ,} . y@@@W2B$@B@@@@@@@@$g@$ , / ug$$@B$@@8w; \n /|r 5B@@@@@@@@@R@@g@@@$@@@@@_w@ 7A@$@K@C45)|! \n hM: ^4$$@@@$$@@@@@@@$@@@B@@@@=^k _:4'~~@@$w'~`m; \n ^\"Z' ` . ~ 4@@@@@@@@@@@@@@$@@$@@@$ j_f^ =@@@ '\\ \n (g@@ _. 5@@@@@@@@@@@$@@@@@@$@@$4BW_yL _ 4YT@s .\\ \n eRZ$9@,Wgs$g,-{V$@@@@@@@@@@$@@@@@@$@$@@@zy@@_.\\#FF RB@~^ \n '|@@@sB@$$@B P=yg@@$@@@@@@@@@@@@@@@@$@@$$@$$@$F\" ^U . \n \\wAb@B@@$` $@@@@@@@@@@@$@@@@@$@$@$B@@@@WB$C\\. Q \n 3FB$A@m@ y$@@@@$$$@@@@@@@@B$$$@$$@@@Z@@B$m; {yX{ \n ^4H@0@@@KRy$@Ta@@@@@$@@@@@@$B@$@@Q$B@B@EB@@$$46z: ]EZ+ \n \\\"w@E3R@$@E$$@@@@@@R$@@@$@@@@$@$$$$@@@0@@$KMB\"3L(^;^ \n ~<%@E%W@B@R5@@$$$@$@@@@$@$$0@@@4R$B@W$@@0gB@b@@` \" \n nM%4$$g$E@@@@$@@@$$@$$@@$$B$@E$@$E$$RMBZ$$N%$V \n `=4EMT@Q@g@S2g@$@@$@@BE$@$0@@@$$$M@gW$@4Z9~/ \n !_3w~P#KB$@@g@@R5@@R$$@@@@$@RR$a44%44v^ \n 't\"Y#$XM@_\"55$$B@$@EgB$@$awR4MzG~| \n !-`z%T4@>ME&b~E9B$rT>4_-$4Y' \n ` `TWD13d~A2fK~Wv^= \n ` ''` \n"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
index: 5,
|
|
170
|
+
distance_km: 366333.9,
|
|
171
|
+
libration_elat: 0.278,
|
|
172
|
+
libration_elon: -3.312,
|
|
173
|
+
ascii: " \n ~' ^ _. . \n __*^w<-xr=<w ` ' '?, \n gf` ''\\KAy@-_w__ _)Mg, \n \" u2$$$R$gn&w@sB_M~(_ \n $@@$@B@@@@@$mg@gRk*>Y \n __ _! r _ _4@@@$~ ~R^~gE,sgm$GI}\\ \n ' ~ ,_y _k ,R@yW@@$@K`, $@&@@@a1&$K\". \n , al~_$@@@gBBg@g@@$00{ . @ \"$$$5B$$sMy\\u, \n .4@$4$@$$@@@@@@$@@@@@$y_VR }E@@@$W@s~wW7l. \n s$@@B@@@@$$@@@@@@$@@@@$$$@Y* {4rT~BM$qB \", \n N fd@E@@@@0@@@@@@@@@$@$@@$E_4_gF f=@M$ Rr \n 7! 9@@@@@@@@@@$@@@@@@@$@$$m$y@g___ +F*Y&m ,X \n VwL b@@$@$@@@@$@@@@@@@@@@@@@@b@$$R_1aB3^`4mWk{ \n J$Wz_L ._yx fB@@@@@@@@@$@@@$@@@@@$@@@@$@@2gF_ '^\"n) \n l4@$+E$$@@`E*y4@$@@$@@@@@@$@@@@@@@@M@$$@@$@@a. 7>o' \n R@RK@$$F`' 2$@@@@@@@@$@@@@@$@@$$@$$@@@B@$0@$k ,.nyd> \n lY$E@y4. ygR$@E#$@@@@@$$$$@$$@@$@@R$@$$$0a@@gM,%^> \n #q8@g@$wy2g$~$$@@$$@@@@@@@@@@@@@$@@0@$$W$@K@6D@LL\" +/ \n ^jJ0@@@g@@@gK$P@@@@$@@@@$@@$B$$$@$@Wg@g@@g$$g$E2B(<~ \n VWM64k$@$2@$@@$$@@@@@@$@$$@$@@$$B$@@$$R%@$@$@E$*( \n `=X@LZ$gB@$$@$g@$$@$@W@M@$@@$@W0B$@@$@$@$@$$@RV \n ^KM?N9$@@$@W5BB@#B$$$$$$R$@@$@@@Dd@%BMAmkWx^ \n 'H\"'%_RF2@$@Bg@@#GA$$5$R@@@@W$$BRkK1|`' \n <V=H@Z#$__3$bgA$Fe$RYR@R2Wy=%V` ^ \n `=L~YGT$6$49TEygg$gw1dse< '\" \n ~'!\"T~A4_EtR00>V~-~ \n ` ` \n"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
index: 6,
|
|
177
|
+
distance_km: 366534.2,
|
|
178
|
+
libration_elat: 5.395,
|
|
179
|
+
libration_elon: -3.121,
|
|
180
|
+
ascii: `
|
|
177
181
|
. : ' 7 __.
|
|
178
182
|
+ : =c_ws_ . . "",>
|
|
179
183
|
|'\` ~NEmszz$_E_a2wcju.
|
|
@@ -202,48 +206,48 @@ var init_ascii = __esm({
|
|
|
202
206
|
~^~YMa.5~$_yWTKBa4=r^\`
|
|
203
207
|
\`\`
|
|
204
208
|
`
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
index: 7,
|
|
212
|
+
distance_km: 368573.4,
|
|
213
|
+
libration_elat: 5.829,
|
|
214
|
+
libration_elon: 3.778,
|
|
215
|
+
ascii: " \n . T r \n +_:X ={_r;_ , ~ - \n _y^ `` ' `^X@ygRBy=. ]ZC; \n u'^ _w%$@Rp$g*=E#7Vy,,\\ \n ' ~@KR@$F~M$V*_2'4$%]/}. \n _. , x ., . , ,g$m$@` $ewsP05k$M \n w75,F ;_ _w_/j$4$@$S@} t$@@@R@G@y \n 4gGJ<@@@@w@@@@@$0@@$s g $bdB@K6FGfs- \n H@@_@$@@$@@@@A@@@@@@$@Wg$y. \"N/~~@@@@ `~? \n i q@$@$@@$@@@@@@@@@$@@E2@$@k W S=@@) \\ \n ,_ M$B@@@@@@$@@$@$9@$$@@@R@@@w}\" _ ` 4^?@x. w \n $t ~?@$B@@@@@@@@@@@@@@@$@$@yyK X$4_. v'! ~*]^ \n ^W`w . - $@@@@@@@@@@@$@@@$@@@@@@@$$g$@@Wg~ '.7+ \n K$wG_ ._ _TM@@@@@@@@@$@@@@@@@@@$$$B@@$@0@Q* zl \n ;bWagg2'W@@@@$V\"*g@@@@@@@@@@@@@@@@@@@@@$@@$$@@4R/ zv| \n `vN4$$$$@@@FF~ 4$$$@W@@$@@@@@@$$@W$$$$@@$@$@B#4%@mP xJX \n {W@W$$@$@F y$@@@@@@@@$@@@$@@@$@@$$$@@@@@$%@B~_wa Y \n @Y@E$2@@@\"y ug@$@@@@@$$@@@$@@@@@W$$$@@W$#M$B@@@@B$?x \n {mKW@$@$@$@$@@@$0@@@$$B@$@@$@$@@@$$@@$@@yMAEE$0H5X \n [/aM@$R@B@@#$@$$@5$$@@$@@$$@@@@@#@@@$@E@@$@@@WX\\ \n ^t&W@$%T0@$@@g$@m@$@$@@@$$@$W@@BB@@@$@gbNR5k5L` \n [UZ$Z23@@@$B$@B5$@@@@$T@d5@@0@@$PM$$KRkW^^` \n '\\@PBKtYKTP@@M@g@@$@$gR$g$BWB$Bh3~8X' ` \n 'f?k>@ghg@MBT@8RE@fd$RnZs#?1w)[!: \n '\"~$J~m#?Bd$M4@gE@Z$0a3GGV1' ~ \n T^~^T`^j4Zlu*M4T ' ` \n \n"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
index: 8,
|
|
219
|
+
distance_km: 368792.8,
|
|
220
|
+
libration_elat: 1.882,
|
|
221
|
+
libration_elon: 4.299,
|
|
222
|
+
ascii: " \n .: . - \n ,_*_q -/nvu`. ' ' x \n jj+~ '` `'^hUyygZl _1r. \n <^~ w@B$M$$$g./5BY, \n .4@E@@a0@@#.1&$#$i{., \n u_: s r..4$@@@~ ~\" '$_,R@WQ,; \n -F'h~ _.y_4y1_Fd$gg@$@TL R$@MBE0M# \n :@z=w9@@@@@@@$$$M@$$$ / n$@g$BR${, \n '. 4@@$#@@@@B@@@@B@$@@@@gy_4+ `9e#@%g$\\\\~\\ \n r_ . 9$@$@@@$@@$@@@@@@@@@@R@@RBK `/ #g@5 ^ \n XQ? \"A@@@$@@@$$@@@@$@$@@@@@$@@ ? .\"^$&i \n /VzL . ..\"M@@@@@@@@@@@$@@@@@@@@@@[\"_ __ _. `V^#\\, : \n ^J,$y n@@@@@@@@@@@@@@@@@@@@@@$$y_WggwLjT` ~$w \n )S@@@L______ywJ.5@@@@@@@$@@@@@@B@@@@@@@@@@@B@g0i 'Y \n ^9650g@$2s@$$@F@*g#@$@@@@@@@@@@@@@@$$B$EBg@B$@Hf. ?| \n #3@M@$@@$@F~~ a@$@@$@$$@@@$@@@@@@@@@@$@@@V$@EO?; ?s4 \n Jjg@$$N$5Z., w$@@@@@@@@@@$@$@@@@0BW@$@RR$$$9@ZR$ x. \n ^4N%7W@R@y$wB9W@$@$@@@$@@@B@B@@@$$@@@@A$@B$Bdg@_jW: \n \\@$B$@@$g2@@@gE$W$@@@@B@@@$@@5@@$@E$@W$@@$gM@@@2k,` \n \"Wfj@$s@gg@@2@$$@@$@B$@@$@@$@@@$@$R$@@2@E22@EA$@# \n \"@BG0L$@B@@$@$@$$@R@$$@@E@$$@@@@g@R$$@@$$@MFt~ \n `fT$$%@R@$@$$d2sg$$@@$@@@@g$@$@@HRRM@ETT7+\" \n ?X@W~YT{WT#@B$$@@@$@$g0B@@W$#@@#$$dWn \n !8Hg@mE$EBVT&0y%$@0#sNEWAmpV*4M ~ \n ~n'__@2#Ga-BE@$sglEE(NNZJZ \n ^ ^ {3'9i@V_zM+>-~~ \n \n"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
index: 9,
|
|
226
|
+
distance_km: 370979.8,
|
|
227
|
+
libration_elat: -5.57,
|
|
228
|
+
libration_elon: 4.616,
|
|
229
|
+
ascii: ' \n . r F^. , ,. \n 7 , _mvpaW..,_.^ -r> , \n z$"``~ `r ~-zR9_ ` ` +. \n \' {Y~^ ~3Bwyak. .QU \n . . )gg$@R9g@R/Rtmu. \n , . _g@WyZ.xsv. , u7@E@AaK@@W"H%)__^ \n ; `T`$__ yw).f__.WRwya@$g@$` "?^-~_/X#!: \n < _ g@@*5g@@$$0@$@@$g@@53 4@@p@aRi< \n Jjp , ~g$@@$@@$@@@@@@@@@0@@@l , T@@E5@KL \n _4g@ R@$B@@@@@@@@@@$g$@$@@$$a_,\\ 2@$$$g8@\\ \n T>@{; 4M@@@@@@@@$@@@@$@@@@@@$$EePh "~~`~5$V/". \n _*@LZX . `$@@@R@@@@@@$@$$@@@$@@$K *R@; `: \n |$P@W%_ w _ r.@@@@@@@@@@@@@@@@@@@@@@@~ -, .n:01 > \n )XjE5B@@~aZ$gg$ya$$@@@@@@@@@@@$@@@@@$B@$gW _yN_ .X! 4M/` \n JD$@B@@@R0@@@$M~Fx@g@@@@@@@@@@@@g@@@@@@@$@Ws@@B(^ `>\' \n 7$4$P@$$$@F" R@$@@@@$@@@@W$@$@@$$@$$W$@$y@gL+ . \n !2BR$@6@@WMg __m$$@@@@@@@@@@@$@@@@@@B$@@@@E$@$%\\ . > \n 7*>M$@B@@0@Em$@@@@@@@@@@@@B@@@@$@@B$@@$$dRE@MRyy M \n ^!@$yEgZQ@$$@$@@@s@@@@$@@@@@g@@@gR@@ZB@@@@0BW@~~_v \n "9BR$@T#$@@gE@@$@@@$$$@B@@#@@@@g$$@@$s$g@@#$g$GR! \n \'M&@@@D@@R@@@@B@@$@R@@s@@@@$$@@@@BB@RR@WM0@@B" \n ~0B#@Bt@@@RCgy@E$@@@@$$$@@$E$@B@@@@$3@@<P \n \'2[@g_{iE@$Z@@0BKEE0$R$@$$#@5@$$$@@MT \n ~<[F8g(EzaZM$#@yM$4yB$$@$d4MW4W~^ \n \'R@/2Sy<MRg$W5D$^>OT\'" ~ \n ~r!7/4%E@@5vr*?^" \n \n'
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
index: 10,
|
|
233
|
+
distance_km: 372936.5,
|
|
234
|
+
libration_elat: -5.822,
|
|
235
|
+
libration_elon: -5.197,
|
|
236
|
+
ascii: " \n ; -: . \n _, >c +___' ,`i + ._ \n ._Nw^~\"~T~ ;\\ 9M_., \"`4o_ \n ^>~ . ^$@$2%2Wiu zRzq \n ` Lg@@@$@@ge$d$gZ2~aL \n _vW<> ;-' g$@$RZ&@B$4@K$$4R%_%M_ \n ` | ,,.: . _,xgEyX@@g$$M` \"4Y?$$~-MB]*K_g \n _zW*32@@g5y$@@R@$@@@@Kv '$$$W$m#mggJk \n :2@$WgBg@@$@@@@$@@$@@h_./yG j@@$@$WBw4M-, \n [ '4@@@$@@@@@@@@@@@$@@@$g2@$E,: ;@$$$@@@2#MIo( \n < ^w5@@@@$@@@@@@@@@@@@@@$@$@k j\"@@VF@@@@KM~\"|> \n rj $@$@@@@@@@@B@@$@@@@@@M~$y@Y ` R@$@% !| \n 5\\E , _@@@@@@@@@@@@@@@@@@@@$EK@@@$_, .eX#b> j \n \"KEN~;zyy$_, `0R$@$@@@@@@@@@@@@@$@R@@y@$$$~ -aA<^W1nV' \n #E0R@@$B##~F_yg@g@@@@@@@@@@@@@@@@@@$@$$@$@Z=\"~ ,'MI`' \n cMF$@B@' =#$@5@K$@@@@@@@@@@@$@$$$B@@$@@R$ .' \n w\\a@@m_, yz$5$@M~$@@@@$@@@$$@@@@$@@@@$@$s@t LyA'; \n i,kRR$@ma@@$gW@@@@@$$@@@@E@@$@$@@$$$@@@@$@@gwm ;%XP \n }44$KB@@@@g@$$$@@$@@@@@$@$@$@@$B@@@$@@@R@B@R$yX^,/^ \n YVAYT@@$Z@$@@@$@@@0@B$@@@@$$$@B@$$@@$$B@@W#ER4_~ \n SK@2@B@$B@@@@Z$5$@5@R@@@B@$D5@@200@MM@$4@E~_ \n ^I\"<Z24B@9y@g5$@@@@$g@@@$$@$@R@@$$R@@@Y?k` \n ~^j._;4$Ta@s@@@5@ER$$2@$$@gBsyAH4@O- \n `\"';tK/RyvR@Nq@@#$@$QE$@@E7$d\\J= + \n ~ Yg+F=9fP$12$F*+$)@~j~?` \n T~zE$45[~K=\"~ \n \n"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
index: 11,
|
|
240
|
+
distance_km: 376361.2,
|
|
241
|
+
libration_elat: 2,
|
|
242
|
+
libration_elon: -5.764,
|
|
243
|
+
ascii: ' \n ; .. _ \n .- yxw__ `\'( ` n> \n - ~"F M@g_-m\\_,, _W<x, \n l` . __$@$@@RK9>4$d$%,qn_ \n mg@$@@D@@$2D#g@sgMyJ4} \n .._ 4$@@@F~ ~F\\~k5~x$@@WMswt, \n ^r . ywyE@@@$;, #R$$@S$g$H*m . \n $ . @$y$UNg@LZ@@@@$ ~, \\ .g@@@$@$$$$dF;; \n js@ug@$@@$@@@@@$@$$@ysx$E{ ZR$$@$@RQ@M%)N^ \n . -@@@m$@@@@$@$@@$$@@R@@@@$#* [^M8F.$$@$@ ~MN \n _: 4ZR5@@@@@@@@@B$$@@@@@$@@@@B$@j ."^5g$_ >| \n (. *y@R@@@@@@@@@@@@@@@@@$@@$@@$zy.r3<VH@z_ *j \n \'_ )Z@R@@@@@@@@@@@@@@@$@@@$@@@B$sy$$\'M `AgWi^? \n Wd, . j ~Ey2@@@@@@@@@@@@@@@@@@@$@$$@$#E . ~?]X: \n X;0>)_g@RK7.ggA@@@@@@@@@@@@@@$@@@@@@$$g@@AB_ . _,j\' \n \\@ME@@$F~ .$@@$$T$$@@@@@@$$@@@@@@$@@@$@0@@ga1_$*@wK<_ \n 7#%BB$ y#j$$Za$@@@@@$$@@@@@@B@@$@@@$gEg@@@ ~&>\\ \n `,N4Rgy/jggR4W@@@$$@@@@@$$@@@$@B@@@@$@0@$@gg9$WW_j5r \n V\\2W$$AgR$y@$@@@@@@$@$@@@@@@BB@$g@@@$$E$WB$@AK@7+ \n YXnbM5@@d$@@@@a@$$@@$@@@@@$@0$@@@@@@B@$0$%@HK%2\' \n \'42K^RB@B$$$$@$@@@@$@@$M@$@$R$@$@@@@@@BW@$#{" \n ^"Z@0E@@BgM@$@@@$$E@@$@@B@$$B@@d$Zm@R#{~" \n `x`.U +$$@B@W@@@@gM$$@$#g$40A#gF[~$"M \n K@cm$M8wK@gG3g$R@g$s4@M7xH~4j^ ~ \n " -~~&CTp9=$$@9U$RE?kv7+ur \n `~` `T"-"<M5PT \n \n'
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
index: 12,
|
|
247
|
+
distance_km: 377700.5,
|
|
248
|
+
libration_elat: 5.801,
|
|
249
|
+
libration_elon: -5.923,
|
|
250
|
+
ascii: `
|
|
247
251
|
-
|
|
248
252
|
.,_ .. ~ ~ '" ^g:,
|
|
249
253
|
; ^~ ' \`$$WyzQLw: j8yG=-
|
|
@@ -272,55 +276,55 @@ var init_ascii = __esm({
|
|
|
272
276
|
"^ \`\`"+M= -T~^'\`
|
|
273
277
|
|
|
274
278
|
`
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
index: 13,
|
|
282
|
+
distance_km: 378113.4,
|
|
283
|
+
libration_elat: -2.581,
|
|
284
|
+
libration_elon: -5.835,
|
|
285
|
+
ascii: ' \n . . .. \n . `, ,_. -7`". \n /J^~T ~ " z4$_ ._ `":- \n 4-\' . . [@$@x@Wyy y@$iu. \n jy$@@@$g@A@g$DARB}@w_ \n _*_ . 790$$g$MA@@a@W@NRBRk^% \n \' .~ +_ *$_yx@B@E= ^`~JBsm$$HWbyQ^, \n Jy-"@@g@_a@@@#@@$5gTn "ZM@$$$g$@@w^. \n _@@@$Gg@$@@@@@B$@E@$;$gys\' _9@@@g0$Ra@j_~. \n q@@@$@@@@@@@@@@@$$@@@@$g## _vQ@R@B@Ew#&~nr2 \n .T `#2@@@$@@@@@@$@@@@G@@$@$@%_z:7F^ W@@B^ (*l \n } =D@@@@@@@@@@@@$@@@@@@@N@#Wy ,`_5@#w \\. \n #PL . 5g@M@@@@@@@@@@@@@@@@@@@$gR@$pu,_%7"R$L KU\' \n \\ Pz\\_y-gb "05L@@@@@$@$@@@@@@@@$@R@@g$@@$g>~ ~KAD\'@ \n 7|B$)g@@$@ Y=y$@g@$@@@@@@@@@@@$@$$@@@@@@@BR_ r\' \n \'YK$$N@" PF@EgM@$@@@$$$$@@@@@@$g@@@@@R$@z. _)z7 \n :kR@$0;_ g@W@$_yg@@@@g@@@@$@$B@$@@@@@$5R_$*.iH9R? \n TQ@@$d1w$@9#$@@@@@@@@@@@@@@$@B@@@$$@@@g$BgB@@wMk:T \n {%AP5@@0@@s@@$@@@@@@@$@@$B$@$B@$@M$@$RRg@dyw@#W};` \n ^y5XA@$MRB$@@@$R$@@@B@$@@@@$@@B@@$@@@@RA@@B@YQ;~ \n `6%RGBB@@@@$W$$@$$@$@E$@$@@$@$B$@$$$@@@$%5"` \n `\\X3~~2@ER$$B@@$$$E0RB$h$R$@$@a$aA@%R@%9 \n >Un _{6$RA@$@RW$g@0$$@@ygWKMM$@@W^~ \n ~n1M5&*#_a0@@@AR@$@$$$EXU7YMf^? \n ` ~^~k[c5s%MAYqMFFM@"VZ \' \n ^-^*F^~?~`~` \n \n'
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
index: 14,
|
|
289
|
+
distance_km: 379658.1,
|
|
290
|
+
libration_elat: 5.491,
|
|
291
|
+
libration_elon: 6.128,
|
|
292
|
+
ascii: ' \n , - ,. \n , __ _x` , , \n ,+Y\'=\' .^?=PywwM__., _.- \n -s- lE@@$@g@__L_$>. . \n " ` >$$@$$44@F<Ma YX_(:. \n . _. 4@W$R "" ^wyy9$%BZ \n ,#RoP ` k \\\\;_a@m@@@#ET ~@@#$%syV; \n ~a_bX$@$$3@$$@W@9$g@L , W$@@RzFC}t \n . ~@$@$$@@$@@@@@$$$$@@$N%y___ ~g?~5$Bw^"| \n ^ y$$@@$$@@@@@@@@@@@$@@Q@@RP^ ` "R$@_ : \n ..W ~@@@@@@@@@$@@@@$@$@@@@@$@$. u /m=Ey . \n ^jR "~?@@@$@@@@@@@@@@@@@@@@@$w_< `gy; j~) tyl \n xV^> {+2@$@@@@@@@@@@@@@@@@@@$@B@_@R$$W~ "?Y \n \'&W$z . y[_?@@@@@@@@@@@@@@B@@@@@@$$@@@@0@Ek !\' \n ^N26@9g_pdg$$$M$*@@@@@@@@@$@@@@@@@$@$@@@@@*@$Rb\\ :d/ \n ^ARj@@$$$@@@~~.}9$@@$@@@$@@@@@$$@B$@$@@@$$g@@@PgKL *" \n 4M*$$$@@$$__ x$@@@@@@@@@$@$$@$$$$B@@$$@@W@R$E~_j!u \n ^0MN@@@@$$wmys2@@@$@@@@@@$@@$$$$@0@@@@$$@s@@BR@@KK \' \n "\\3@@$R$@$$@$@@$@$@@$@@$@@@$@@$$@@@@@a@@B@E@E$0_\\ \n ~WR#W@$s0@$@@K@@@@@@@$@@$f@@@M@@@@$g@K@$B$@0$P"" \n ~^@QB@$~b$R@g$B@@@0$$@@@@@@gBB$$@@@B@@B@54M~ \n )=W&@A4M@@$@@E@W@@2@B@gWK@gD@@@gEW${$#^ \n /@TEEE`&A$#0y$@@Z$MM@$p$@0BtP5%@<l \n \'~XmT$E$W@MgyR$$aRs9gS4WW9/~ \n ` f=L"0EZW$@RPG%#$R{Rx{&\'\'~ \n `^`^ \'`"\\"?~ \' \n \n'
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
index: 15,
|
|
296
|
+
distance_km: 381331.9,
|
|
297
|
+
libration_elat: 0.836,
|
|
298
|
+
libration_elon: 6.123,
|
|
299
|
+
ascii: " \n . _, \n __ . _ \" < \n wz?^^\\^ `r={*_, _. ` ,, \n .4fT '80@Ma<w% <,). \n gg$$$$B@%K$YJi[ = \n ___y, ^ji . . _ 'J$g$0F~~5\"*J:`6x\"i: \n . #T5ZY ;`-,'_n-;)wyWB$@$\" aygg5B4W \n ' g@9e@@@@Ea$$g@$@$R$$ j@0@@@KR \n 2 +@@@y$$@$$@@@@@@@$@@RL_ * \\$@RRwgT^I \n /jw 4$@@@$@@@@$@@@@@@$$@@@@E@$+ \"4\"'7Ak@^ w \n .%g$ `@A@@@@@@$@@@@@RR@$@@@$@$E | TT@5 ' \n ,&X<> `~?@@@$B@@@@@@@$@@@@@@$@@ _; ? MW { \n 'MtJz. +^$@@@@@@@@@@@@@@@@@@@@$gG| _ay, *` ~GV \n 5yjE@$yz(ny_y$ -@@@@@@@@@@@@@@$$$@@@@$$@ga@R$@T `\"- \n IJEW#$@B4@@@@@KS1g@@@@@@@@@@@@@@@$@@@#@@@$B$R@7 '- \n 2ZW@E$@&&$F~~. VB$@$@$@@@@$@@@$$@@$$E@$@@Z0$$$> y)' \n ?%&$@$@$g@x{ _,m@M@@@@@@@@@$@$@$@@@$gB@R$$*$$Y@M 2 \n ` %2@$BB@Rb$L@@@@@@@$$@@@@@@$@@@@@R@@$@$R$$$I2l_y> \n `Wkg#@@R@$@@@@@@R@@@$$$$@$@$@$%@@@B$a$Rg@@@g@@Pp+' \n 74&$R@WM@B@@$RR@@$W@$@@@@@g@@@@$gRbEB@@W@@E@@&; \n +E#@$am@0@B$@@@@$$$@$$@@@gW$5@@$@@$d@@BgRR^^ \n `\"@S@$MM$3RRE@$@@$$$MW@R$$BR#@$@@@%$%@< \n ` J8MqG_3=AM$$a@@@W$@@@$@@$aR@R?Tx~' \n \"|QT4RARm4$*ARQsGW@EaRP7$TTP~` \n ~- zMeeE65tsF0g12$Lb9X^ \n ` ' T~F~~ ~^`` \n \n"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
index: 16,
|
|
303
|
+
distance_km: 381859.3,
|
|
304
|
+
libration_elat: -2.705,
|
|
305
|
+
libration_elon: 5.978,
|
|
306
|
+
ascii: ' \n . . \n . ___ L._ ^; - ( \n mze^^`" \'~~RX_ " . \n .tv? `B$@lglu- | . \n . pggR@@$@EZ:dFR, \n wax_. y_ R0ER$@f4$WyCW?w:v \n !. ~TT%~_."u_Jw__j*E_x$@g@H ~"\'J_ jQtjj \n [ $$bdB@@@@W$@0$E@@@Q$ . \'@$@zNBcX \n [| ";g$@@@$@@B@@@@@@$E$@@@ :. 4@B5@R%(` \n jyMy t@$@@@@@@@@$@@@@@@@@@B@%y1_ . Zf$RK@CG# \n vNt` Pg@@@@@@@$@@@@@@@@@@gB@$F\'~ F WB@\' \n 8j@~w - ~f@@@$@@@@@@@@@@$@@@$@@L. \' `"?_ \n AM$@Zy . . .`w@@@@@@@@@@@@@@@@$@@B@$_i yL " yN).P \n )jy@0@h@~LsgyggaR@@@@@@@@@@$@@@@@@@@$@@@g_g$$v;^ 7N \n !VH#$B$g$$$@@@$7k4$@@@@@@@@@$@@$@@@@@@@$@$@R@@a ". \n \'5SBBR$Bg$$F {f$@@S@@@@@$@@$B@@@B@@$g$@B$$$[, 4` \n 1X@8@@2@@$hg __W@B@@@@@$@@@@@$@@@@$@$@@@@W@B$y_ M/ \n JQRB$D@$$@2$g$$@@@@@@@$@@@@$@@@@@$$@$@@R@@WWkFV {" \n \'@@fF$@0@@gR@@@@B$@@B@@$@@@$@$R@sM$@@@$$@$$@WwgW" \n `@V$4$ER$$E$$@@$@@g$0@@$@@@$@B@$$@$5@B5@@@NT3~; \n {~$M@@E$@$@@@$@@$@@@$$@s$$9@$@@2$@4@@RK$T@@^ \n ^ FqR#mZ3JH@Wgs$$EBW$@Z@0MWg@B@@$WM$B55? \n ~^k/1ayDgW$$#$00B@$@$2Kg@$$Eg$$$\\$\' ` \n ^+K^YG#%gWa9Ra@@9MT$$EZ@@~wO="\' \n ~ `-%Hy~T@@M?a4%M$"^k( ` \n ~\' `~P!+^^ ~` \n \n'
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
index: 17,
|
|
310
|
+
distance_km: 383889.6,
|
|
311
|
+
libration_elat: -5.925,
|
|
312
|
+
libration_elon: 6.256,
|
|
313
|
+
ascii: ' \n _ . \n . \' _,._ \' .:_ \n .nzF\'~-^`Fnrj__ . \n aF~ ~ `!Hyw_g_ w. \n . ` xygg@@W#k,=|l. \n _gwa; _wJ ($@9@@d@@\\W^@K_ . \n _ t~"$~_ ,_W_z+\'_jz. y$@W@" ~~kfX#~5i; \n /\\ \'.3@$@@$$@$$@ss@B$W@$MC 4m9p6b>{ \n G5[ _. ,$@@@D$$@@$@@@@$@@0@0@~ 0@$$B$$ \n .}2A> 9$@@@@$@@@@@@@@@@$@@@BaL ( \\$FgY$HX; \n M@@Bq . H@@@$@@@@@@@@@@@@@@@@$W@s "NV^?$g_"M \n jW@%y@ ~ . r ~@@@@$@@@@@@$$@$@$@@$@@ *#$m \n &U*&WMW y _pG$@@@@@@@@@@@@$@@@$@$@@F " =\'$, \' \n (T$Rg$@@E$w@g$@W$@@@@@@@@@@@@@@@@@$@E$@gy _y_ | `v</ \n &&mV$RB@@R@@$##K$s@@@@@@@@@@@$@@$@@@@@@g@ya@$Em ? \n `5VA$@$@g$RE`, @B@@@$@@@@@@@$$@@@@$$g@$B@y$$" _ \n v<Aqs@R@B@E9_yy@@@@@@@@@@@@@@$$@@@@B$@g@@E@@@$\\ ,> \n $AR$Bg@@$$@sR$@@$@$@@@@B@@@@@B@@$@@$@$MG$0@GlWw ; \n ~~qZ$BRgZ@@@@$$$@$@@E@@@@@$B@@$$@@@$@M@@$aRfM~,, \n ^R*@@zZ$@$@h$$@$@g$B@E$$@@$$A@@@@$@$BWWE@@B@) \n 79@@gW$@gg@@@R@$@$@R$D$@@@$@@@WB$$RXBBgM5[ \n {JGKRHk~@@g$$R@$Ez@@$$$@$@0$@$@$EB@@RMX~ \n &@R2$4yKBbAER@@R$$dW@@g@@@D$m@@XN`" \n ~^u"?F4KPEz$$$Z$#@g0$&@@55M@v"~ \n `~-Xw7PPe=TA4jzFW<_t^\' \n "^r-^^^ " ` \n \n'
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
index: 18,
|
|
317
|
+
distance_km: 389306.6,
|
|
318
|
+
libration_elat: -5.818,
|
|
319
|
+
libration_elon: -6.036,
|
|
320
|
+
ascii: ' \n . _ \n . ; ``( }. \n w;MP|* =n>fsL ^ . \n *|| `^RE@_}y_ 4ym, \n . ,yAg@M$R2@L$RMw< \n _w , . g@$$B@R@@m@y%B$@y,(k \n ``~\' x _yy.J$E@@BM~T@T@A$TM$gWg"VL \n .$x_gg$J0@a@@@@@@$@si aM$RB@AWMe/, \n . . .g@F*g$@@@@@@@$@R@g@\',_ z j$@$$@5$$W]`; \n / j@$$@$@@@@@@@@@$@@$@@ygz@_ #@@@g@$@BEa<u \n . . Jk4@@@$@@@@@@@$@@@@$@@$@$E ,7$2=@g$z&"^KTL \n /j A@@@@@@@@@g@@@$@@@$@BEgys\\ \' HB$@N ~P \n h0L . >@$@$@@@@@@$@@@@@$@$@M@@6$_ .we{@0 .l \n %>E$ -gsWw_^`RME@@@@@@@$@@@@@@B@@@$%#@$@~ y@# 4@*X|, \n MRQ@K@@@hff $y$@$@@@@@@@@@@@@@@@@@@$$@@BE$" "4> j \n L45B@MF . ~ZR@K@#B@@@@@@$@@@@@@$$@@@@0@R$ . x9r \n {5S0g$_ , g$T9@y_@@@$@@@@$@@$$@$@@@$@$BWN\\ xkx \' \n "VM$g@$@R@TJ$$@@$@$@@@$@@$$@@R@@@@@$@0%@gg$$^;M<:X \n \\ t@@g$$$@R$@@@@@@@@$$@@@B@$$$@@@@$$$E@@$M$yW`j+ \n \'jj`R5@@@$@@$@$@$$@@$@$@$@@@$B$@@Wgg@$B@@W@>/` \n \\^48R$@@$@$@$@@@@E@$K@@g@@@@@$@Z$$BW#sP#^| \n \'-:, {$MA@$@EZ5@@@@@$$@B$@@@$@g5$@Em9/^ \n z~*gT6GfTA$H$@z5$Z$KREBa@3GW5#9"^\' \n " +?L$"3f@@@1$E5$5F5$=Dj?$>?"` \n ~` ?tJjg#E@gH@~W$:` \n \'"``"\' \n \n'
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
index: 19,
|
|
324
|
+
distance_km: 390509.1,
|
|
325
|
+
libration_elat: 1.475,
|
|
326
|
+
libration_elon: -5.963,
|
|
327
|
+
ascii: `
|
|
324
328
|
_
|
|
325
329
|
- _ \` ... .
|
|
326
330
|
_r -- ~^<_)$w _,_ \` jy.
|
|
@@ -349,97 +353,98 @@ var init_ascii = __esm({
|
|
|
349
353
|
\`T~'"\`"
|
|
350
354
|
|
|
351
355
|
`
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
}
|
|
440
|
-
});
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
index: 20,
|
|
359
|
+
distance_km: 391670,
|
|
360
|
+
libration_elat: 5.642,
|
|
361
|
+
libration_elon: -5.869,
|
|
362
|
+
ascii: ' \n \n x`! \n | ;! ^\\+e%*_,<- ,_ _pK+ \n ..F ggg$Z%92kyBWWyC /. \n wg@$E$$@@K@Rg$7QRvx$t,_ \n . a@@B$" ~~"WRux$$@g@@$}L \n i ` jLyA$@@$ "0@@@@s@KRM*W{, \n _ gg-N<gyg^@@@R@> _ J X@#$@$@05&3x2=. \n _@_7&$E$$@@@@y@@@@$ggg0= . 9@$P5$$gb#~ \\M$. \n _ag$W@@@@0@@@@@@@@B$@@$@R\'yy.^~ R@BK/ &) \n . .F@@@@@$$@@@@@@@$@@@@$$$g@g@gw_ .w*y#@K_ }W \n k ` ]y@@@@$@@$@@@@@@@@$@$@@$@@@gF/g@t=\'4@$$/O \n t5$M$@@@@$@@$@@@@@@@@@$@$@$@ERF` ^~1.4/ \n jy . `E_2R@@@$@@@@@@@@@@B@@@@@E@$$gQ ]<W L \n 4;,-ag@$4.gg$R@$@@@@$@@$@@$@B@@@$@@@@@sBFy_ ua9mm7W \n "Y#@%$@^~ 0A@$$M4R$$@@@@@$$@@@@@@@@@@$@@W@$@r&MMMx# \n ^@K$g@ a$*R$gg$@@@$$@@@$@@@@@$@@@R@$@@@E$$$0V$R \n 0W$@ja\\_$@`$$B$@$$@@$$@@@$$$$$@$@$$B@$@@$@22@$@t\\ \n <P4m$W@@@$@2@@@@g@@@@@$$@@$@@@@$@@B$2R@@@$@Eh(` \n `TSsW@@R$$@@$$$$$@$@5$@@@$$$@$@$B@$@@@$gRRs5\' \n `^}&`$b$$@gH$@@$@@@$M@RM$g@@$@@%$N@R@5\\R"^ \n >j?"T#M$0#@@@g@R@@Dg@$$@$$$@b0B@E@#^` \n `? <L. k45k~F@E#@@0$T@BE@#5@$?6m-, \n 4K?4Y($GE4zR@5g$$EEgBngK"_>-~ \n `~>?^4 MMKqZR@Ds!=`(\' ` \n `\' ` ` \n \n'
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
index: 21,
|
|
366
|
+
distance_km: 393407.6,
|
|
367
|
+
libration_elat: 5.513,
|
|
368
|
+
libration_elon: 5.636,
|
|
369
|
+
ascii: " \n \n . ^ \n LNV' `T~{$b_ -, \" . \n _j@' <R@$mW$wxt!mn \n ~ g@@@$@$@@'Yq\\as;' \n g@@$6^ `P ~<\"_M@yMj \n _g%n- z+ sEyg$@$@' ~M$g$M$sX \n \" 'a(_ra@g@@$@$g2$$$@@ f4g$gA@4M \n `$@@y$Z@$@@@@$$B@@@@g$_y, *@7M?$$N~'\". \n ^ _H@@@@@@$@@@@@@@@@@@$$@@5~ ,. `B@N_ \n ;yK `gR@@@@@@R@@@@@@@@@@@@@$$_ ` w=~@L . \n <$\\ ~?@@$$@@@@@@@@$@@@@$@$@@yk `W@! ,I? YP( \n -JMw - 3B@@@@@@@@@@$@$@@@@@$@@@Mz@B@#! \"^ \n \\Xw$g _ . yJ_\"BB@@@@@@@@@@@@@@@@$@@@5@$@2BR[ ./ \n FP@w@g$_n@$@@M@*y$@@@@@@@@$@@@@@@@B@@2$@M@@@e> .W' \n y#@$@@@@$$~~ ~4$@@$@@@@@@@@@@$$$@@@@@$$@MBER$%< <^' \n l6$d@@@B@L a@@@@@$@@@@@@@@$@@@@E@$$@$B@Rm@\"_/, \n BM$g$@5gmezvB$$$@@@@$$@@@@R@@$$@@@$@#$@@@@R$$@(.` \n ~12KMy@R@@$@$@R@$$@@@@@@$E@@@AB$A@@@AR@@@@KE@Gz \n '@kRM@$@$@$gR8@@@@$B$@R@g@g@@$@@$@@$Ra$@@@$Z` \n ^?WE@x@@@@@@@@$$b$@g@@@@@gB4@$R$BBMRMyTT' \n \"4QB@@@M@$R$@$@@@$@RE@@@A5$R@BQM@M#P\\ \n ~^@j@&_gm$@%4T$B@@@W$@@UK@#W7~7' \n CtHP@$02WR@14@5Z2FA#3j\\J: \n '\"r'F5$~(G@7_$TM$4>^ \n ' \n \n"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
index: 22,
|
|
373
|
+
distance_km: 395633.7,
|
|
374
|
+
libration_elat: -2.548,
|
|
375
|
+
libration_elon: -5.238,
|
|
376
|
+
ascii: " \n \n `` , ;/ >_, \n ,_ +,P> * y _ ~ 'u_ \n :{T` `~=$WWk_r, _#P+ \n ~ _yD$@@g0Es&#ZB@'x. \n _ , @@@@Ea8@@bEY$@@sGL2t \n f^ Y '' . .w_ _$@@B@' `=3'25Zp$$>a#Iu \n g_:.g$_RMzy$U$@@$#E7 . Rg$@$@HgaEK` \n $@wR$@@@@$@$@$@$$@!y- g! .g@BB@$@$$M,3 \n . -@@@@@@@@@@@$@@$$@@@$@s$L ?BB$$B$@RMXFW, \n ` ~C$$$@@@@@@@@@@@@@@@$@@@?E_;]=^ 1@@WE {( \n >M `RZ$$@@@@@@$@$@@@@@@@0RgB2r ~M@$_ 4' \n (@+ . %@@@@@@@@@@@@@@@$@@@B$$$R@$w+ ~A_52v_xr \n ~^MkFwa-wK `XF2@@@@@@@@@@@@@@@$@$$@@@$$sA^ ' ~@$}'^ \n w$$$g$@$N`wty@@@$@@@@@@@$@@@@$@@@@@$@B$#_ `_' \n M$@B$g^ AB$@$R$R@@@@@@$@@$@@@@@$$@@$@G( y,]\" \n ~sf#R@,_ y$H@@$B@@@@@@@@@$@@@$@@$@$@$5R$yyw-^W4h; \n I}V5@K@@ME+R@@@$@$@@@@@@@@$$$@@@$@@R$$BgF4@_'T#_ \n m\"y*$@$#@@@@$@$@K@@@$@@@$@@@5$@5@@@B$B@@@RQ@_X` \n ~\"$~@g$$R$@@$$@@@@@@$@$g$@$R$@B$g@E$Z@@@$sx. \n ^FP$@$@@@@@@$@@@$a@@$$$@@$$g@@A@@g$@@@5VF \n ^ ~/`~$@K@@$@@@@$AE$@0@@B@$B$@a4?P@P\" \n uW&\\@m@ETRDH@Hg$sRgS@E&N@5@%6^X \n ' u3@#pME@RS@PQ4RWKRMkz@ `. \n r{^M=Fi@9#KEP(K7~/ \n `~ \n \n"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
index: 23,
|
|
380
|
+
distance_km: 396804,
|
|
381
|
+
libration_elat: -5.205,
|
|
382
|
+
libration_elon: 5.066,
|
|
383
|
+
ascii: " \n \n T - \n .x*zZTn>-- _ . . \n .. a_0F ~` n4M_;. ~u. \n '~ ,^@g$$gw_;kw, \n . ._w{ , __' r@$R$R#@$tfU~_x;. \n . ?X?E$`_~G _: __+ _@E$@^~~?kic%\"$/$ \n p @B%<#$$y@$W@$@@6@$@F y@_z@sl| \n n__ _M@@$z#$$@@@@@@@@4$0@ `A$@@g$( \n 4JK& , g@@@@@@@@@@@@$$@@@$@@$( # 9gKzgW&\\ \n jD@z_ +#@@@@@@@@@@@@@@@@@@B@W@m hN~\"5#F^ \n ?7#.@ 1 \\r ~$@@$$@@@@@@$$$@$@@@@@ < 'MRy V \n N%P#Rg _ ~W@@@@@@@@@@@@@@@@@@@g$,' -. r~$, j \n NGqQ@@$Ejy$gg$2s@@@@@@@@$@@@@@@@@@@5@@a,{Zg, ; ^ 0< \n (3H4@@B@$@@$#=~t0@@@@@@@@@$@@@$@@@@$@@$@@$@$$ ' \n `4Hg$B@@@$F`. \"4@@@@@@@@@@@@@@@@@@@@E$@$$e@W, j \n KR$$bR$$@gZ_vzg$@@@@@@$@@@@BB@$@E@@gB@$-g@E$) \\` \n Eeb@@$@$WgW@@Eg$$@@@@@R@$@$@$@@$@@@$B@$f@R)P@ . \n ~75RR#$@$@@@B$@@$$@@@@@@@@@@@$W@M$$BB@$@E2B_jn^ \n =W%B@_@@$B@@$$@@$@$@@B$@R@B@@$@@M$@D$$@RMBX \n ~~#M@0@M@@@@@@$s@@$$$BE@#@@$@W$@$g@B@B@>~^ \n ~#w7%,wRG$@M$$@@@$@$&$@$@@$@@M$gRR@^^ \n Ry$aG0$#MM45$$ZZR@$a3@@0@$R@2pM` \n `'=4Kh5M$K4AN*@tSd$sT&C^~} '` \n \" ~TF_75@RgmF4`~ \n ``~``` \n \n"
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
index: 24,
|
|
387
|
+
distance_km: 396918.3,
|
|
388
|
+
libration_elat: 1.016,
|
|
389
|
+
libration_elon: 4.987,
|
|
390
|
+
ascii: ' \n \n ~ r .:c . \n . ju ]>_^*Y=yL \' ` . \n .W> m@wy+l_ M~ \n ` ,ggm@Eg$WRwx_!_ \n . L$Eg@K`4$_dW$ \\wY \n _R4B$ ~).{. ,.sELgB@$E. ` yWw4aggy: \n `7kp>_ggy#Tg@$M@$@Wg . `4@$@R$@y \n ,$@$g$@@$$@@@@@B$@@$y_ - ?ER@22R]>, \n >. ,. 1z@@@$@@@@@@@$@@@@@@@@$@gp `"@~~2$$Y^~) \n vZr BW@@@@@@@$@@@@@@@B@g@@gB 7 jY$l \n 4v$y . ` ~@@@$@@@@$@@$@@@$@@@@@. - \\Y4w ) \n }A_z, \' ;;@@@@@@@@@@@@@@@@@@@@g$sI W*_ ,{^ ^@L\' \n T@#R@yy).y__$W-y@@@@@@@@@$@@@@@@@@@@@@$g@@$$( "I \n .X@9a$@gy$@@@$$=$g@@@@@@@@$$@@@@@@$$$@0$@@$#f >J \n 9D$$@$@R$R JB@$@@@@@@@$@$@@$@@@B@g@@G0@@D_ N \n :s$E@a@$@my _ggB$$@@@@@$$@$B$@$B$@@@BE@E0MQmM / \n 7X@@@R$@@@@ggR@@@@@@@@@@$@$@$@d@@M$@$$W@@g@Ly$M) \n myX$$K$@@@@@B@$@g$@$@@$@@$$@@@$@$@$M$$@@@$@g/l \n "?-&@@Z5$@@g@$@@@Q$g@$@$$@@@@$$@@R$@@W@@@gMG^ \n "7#5@0E@@@@Z@B@$B@$@@@$@$B@@@@B@$5$$$@R$\'" \n "0M$M4FD@@$@$@$$@@RB@@$@$E$RN0$PW0~~ \n ~5@<X@$0j@$#~$B@ZE@$gR%RA0EM7?"~ \n \'*TT3m4aH@2@RW$3M$P=BzR)^: \n ` A<?X%f_WmPg@EM-`" \n ` \n \n'
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
index: 25,
|
|
394
|
+
distance_km: 402200.1,
|
|
395
|
+
libration_elat: 0.434,
|
|
396
|
+
libration_elon: -3.119,
|
|
397
|
+
ascii: " \n \n \\ r \n ___< *r z_ ? \n . ~ `''P0wvzkyu _M:n. \n v __$B$MRM#%e$XgZLn_ \n ` 'd@$B@b4@$%%%@M@4drY- \n +A 5 ~ .___a$@$$~ ^``R$w$$#@@G~, \n v2x a@y*HkW$R$$$8yP 4$@bB$$@$@w: \n g@_D@$@@@@@$@@2$$@_.Jy\\ BR$@@@$E6Rw& \n ug@@$$@@@@@@$@@@@@@$@@@$:, &#MF2R$EW~'/W \n x `E$B@@@$@@@@@$@$@@$@@@@%~(ye ` 44$#F 'r \n !, 5y@@@@@@@@@@@$$@@@@@@y$$yw . ,*YMEG > \n 4[$ j 32@$@@@@@@@@@@@@@@@@@@@@@$MM`_mMF =bb^\" \n 45tgy: _ g_ .\"R$$@@@@@@@@@@@@@@@@@@$$@@@@$` . ''4* \n (j@$aDB@@%X Ly$@@@@@@@$@@@@$@@@$@@$@@g@$a_ W, \n (@0R@E@' `5@@@@$$$@@@$@$@@$@$B$@@@W@$M$PL_ yr/. \n Jm4XR@9;_ _ggF0@@@$@$@@@@$@@$$$$@@@@@$$@KZM@';e!j^ \n 3Y@M@$@wy$E_5$@@@@@$@@@@@$$$@$$@@@@@@@$@$WZ$$~i^ \n t)753M$@#@@$@$@@@@@@R@@@@@$@E$@@$$B@$W@B@@$Gl' \n V@G~@g$$0@@@B@$$@@@@@@$$B@@$@$$$@$WR$WW$W<( \n ~%p2#B$@$@N05@W@@@$$$$$$@@@@$@g$@@@M@Wz \n ^~`/`^PW@@@@$@B$$E@$@$@$BBg@@WERKC,\" \n 'V?hg$q#E2A@M42@g@GRMg@*wK@l~)' \n {7$k$n5HMDA@wBF$%bwmyI + ~ \n 'Y~~ *bv@4$$K'?~ '\" \n \n \n"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
index: 26,
|
|
401
|
+
distance_km: 402352.2,
|
|
402
|
+
libration_elat: 5.638,
|
|
403
|
+
libration_elon: -2.986,
|
|
404
|
+
ascii: " \n \n . . \n __| -;<pN__ _ ~ g.. \n xP' @R$@SpJV.$U4+^ \n r~ _@@@BBR@@Z@HeP$@yl^t. \n j@s$0\"`~R\\F$E,g$$gmQJi \n - . ,. (_j$@@@\" MW@$0mA@E&n_ \n ``, ysg\\%ygP5@$@$F /_ 4@$$@@0R@a\\j. \n 2L @W$@a@$$@@g@$@@a~u@ %TBFg@$Z}'^`X \n y$@z$@@@@@@@@@@@@$$@$@@~'.u.^ <@gK@ \". \n . -@$@g@@@@@@B@@$@@$$@@@@$W$M-_ _>aMgz, 3' \n ' `'~2B$@@@@@@@@@@@@@@$@@@@Bg@$@^`aE*~^kmz~ \n F .D$$R@@@@@@@$@@@@@$@@@$$$@@@gg' ^$)(; \n ,p y 'sF@$@@@@@@@@@@$@$@@@$$@@D2@y> ?^}, \n !{P@_;A$@T$=L$@@@@@@@$@@@@@@@$@@$$@@@@B#RN_,x7Aw7 \n 't$$R@@F~ `TE$#@E@@@@@@@$@@@@@@@@$@@E@@$0$@@P2|ctx \n j$B@$# +@Mg@gg@$@@@@@@@@$$@@@@@@$g$@g@g$$$9vy! \n >rQ@0EgWw@@%M$R@@@@@@@@@@B@@@@@$$@@@R$$@E@@@MPF/ \n \"9?a$@@@@B@@@@@$@$@$@@@@@B@@$WRg@$R@$B@$$@WM6F \n N~(@v$$g@ZB@$@@@@B@$$@@E@@@@@@b@E@@n$@ME2Vl` \n `\"W@y0@B@$@$$@@Q$$$@@@BEB@@@@M@g@$R$$PV' \n ~2@@~^TK$@#@@#@@@g@@ME$@$E$4#E@$4< ~ \n \") u*yv2$2V5RW@W$RBW$g@RA[f(*`: \n /*_\"<sd9t($5$$g$7RbJR*&7 ~ \n ~~ #<`+MLN%~DJM/^ ` \n \n \n"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
index: 27,
|
|
408
|
+
distance_km: 402371.7,
|
|
409
|
+
libration_elat: -5.458,
|
|
410
|
+
libration_elon: -2.965,
|
|
411
|
+
ascii: " \n \n ..~ . . y , \n ._wIq;ws _._ !`P- , \n ,p4 ~ ^r*$_w... `\"5s. \n ^ ,X@@$gWWm_aEKv \n __; , .$@$$B9@@@$<@g$Wf\"x \n -^??K `; _.. @@B@E\"~fMQ$a@=$RS_l. \n , z__g@gWasw0@y$E@@RA yWa|B$4&jF \n .g@$j@$$@@@$@@$@@$g$'' t@g@6@@%e ; \n m+ @@$@@@@@@@@$E@@@$@@$yWu#~ K$g$B@#RPW\\ \n v$. P3@@@$@@@@@@@@@B@@@@@@g9- ^4@YM@@g@! /: \n >,_ ! 5$@E@@@@@$@$@@$$@@$@B\"p_* . 0$W# ' \n v$g , / @@@@@@@@@@@@@@@@@@@@$N$j.$_ ,*=X@_ y \n /a&yE)awgBw_M4@$@@@@@@@@$@@@$@$@@@@NK$$_'veMr^Z$Q` \n #$N$$N@@MP M3L9$@@$@@$@@@$@@@@@@@@@@@M@$0~ `\"^ \n #Z@$@$$^ 4y@@@M@@@@@$B@@@@@$@$Rg@R$@@yM \\\\ \n K~@RBs`w_,j$F@@$Eg$@@@R@@@$$@@@@B@@6@@$$(, .qWe \n x#W$$@$@@@$i$@@@@$$@@@@g@$@@$@@@@@@$5@B@Z0@ K{. \n \\eM$A@$$$@@@$$@@@R@@@@@R$@$$$@@@9A$$$gBy_aa\\ \" \n o7k@0BREA@@@@$$@@@$@$@@$$R$$W$@@@@$$g@P@b} \n '83yFBA@$$M@$@R@$$@#R$@$@@$$$@@R@$g#bQH' \n ^!w_'V@$@@Bg$$F@dM5$$@@@R$Z$@$@@@E/!' \n =>fmMWEPSZM5RB5@A@B0$Ba$0$T\\A+(~ \n ^ ^#~fAIf@@@h$M5p@JEkX^F'' \n `' `P^@degNB+M?P\" \n \n \n"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
index: 28,
|
|
415
|
+
distance_km: 403437.1,
|
|
416
|
+
libration_elat: 5.803,
|
|
417
|
+
libration_elon: 2.179,
|
|
418
|
+
ascii: " \n \n . ; . . \n . , >; =_z/r_ `^r- \n .:=~ ~d@ywgyg_Ll]-1 , \n >^ yg$$@4@@JWTg$9Gx\"; \n gm&@M~~~#?\"EW_k@yG' \n . ,+;_ r x ,Lym@R@s' $@g$@Ay?#._ \n ~`<_ +gzwsAsAgs@@$z$* i N$$6R@$@/_. \n ysGyBE@@@@@$@@$@$@Byw_r MDRBB@@^^\"t, \n u$@@y@@@@$@@@@@@@@@5@$$F~^.+'' ABg( `- \n . #P$@@@@$@@@@@@@@$@@@$@$L,w\" ; _-fR1 > \n Ae ~~@E@$@@@@@@@@@@@@@@@@$LmmyEZY uz&\\\"H*X~ \n .N^ - JD@$@$@@@@@@$@$@@@@@@@$@$$M@WZ ^^X \n tzg _J rT$@@@@@@@@@@@@@@@@@$@@@@$0$$R_ ^C \n v%W4g~e$$@@[E=L$B@@@@@@$@$@$@@@$@$E$@@$$BRP_ ym/ \n ^y@$$N@@@~~ 'fE$@@@$@@@@@$$$@@@B@$@B@@@@@@$@Wi G\"+ \n Kf$$@$9$_! q$@@@@$@@@@@@@@$@@@@@@@@@@g@BXgy2${z \n !t2@eQ0gggN@@@R$B@$$@@@@$$@@@@@@@$@$$$$gA$A$gEm| \n `@k2W$@@@R$@Bs@@@$@$@@@@@@@R@@$@$@@@BgW@@@R2{\" \n T3za@@0$$$$@$$@$E$@$@$@$0W@@@$@$$$R$ZR@B@Fs~ \n `zRMy$@@0@@@$@@@E@@@@EhM@@@@@$2p@5gW$~~\" \n `^?&$W@5Q0m@@@@$@$@@$$$3$k@@@$PGR$F~ \n `]U_#x$2$@$Iy$@k0M5F@@kY@%mr~^~' \n \"k?RK@F4@$&Gg$RMF4C@XV? \n ` '^-~'~'7MA*Z%T~~ \n \n \n"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
index: 29,
|
|
422
|
+
distance_km: 403723.3,
|
|
423
|
+
libration_elat: -1.613,
|
|
424
|
+
libration_elon: 1.645,
|
|
425
|
+
ascii: " \n \n .. : ;-. \n +y__ Jv/ , {! .. \n _W~ ` ''YIg>*g,.,,{<. \n J\" ug@@@@0@fvN2R_, \n R@@$@R$@$5M#WhE. ; \n x04s* ^l __ :_, 4$g@$' `P\\^fPjAbyK}. \n 2_>iWayKQysg$@$@$#@ R$@ZAW05_ \n $@KZ@@B@@@@@@@$@R$w / v@@$@@5@x^ \n ._ g$@@@@@@@@@@W@@@$@@@gy4} <g9@MMMZXR^. \n |$ ~B$@@@@@@@@@@@@@$@@D$@@@~\" : ~ #S@k \"! \n jTg, ~4@@$@@@@@@@$@@@@@$@@g,z \" J~$w \n ty%* ' 14@@$@@@@@@@@@@@@@@@$@KmYx*_u wm'%xuU \n \\RA$x*Y_vygy-JF@@@@@@@@@@@@@@@@@$@@$by@WRmk^ 7N \n ^@$@@@@@@B@TJ-$y@@@@@@@@@@@@@@@@@D@@@@B#@Y\\ : \n 1W$#R$@@P . 7Hg@$@@@@B@@@$@@@$@$@B@$@K$@$*_ .GK \n Y&2AMBgEi_._zgR$@@@$@@@$@$@@@$@$@@@@@@@@$@$g+ R~ \n ?y2#MMW$@$$@BB$@@@@@$@@@@$@@@@$@B@$@$@gP$@~yy_': \n =Wg@$@$@$$@B@B@@R@@@@@$$@$$$@@R$@$@$@@@$@R0@'< \n ~%|A#Z$$@@2@@@@@$@@@@g@@0@@@$M@@@@R$@0@$@@U` \n ~=Zy$$@@B$$$#@0B$$@$@R@$@@@@B@@R@@$ByZY~ \n \"V~15P{24@0$@$@@R$Q@mBm0@@@g%8@B6M^~` \n oFe$9Z52g$$$5EE#M$@@RKRVRmVY \n ' \"Aw9@R4g$M$g$$$@9yjC~`~ \n ' ^!`!~P%$%s-fr\"`~ \n \n \n"
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
index: 30,
|
|
429
|
+
distance_km: 404313.4,
|
|
430
|
+
libration_elat: -5.652,
|
|
431
|
+
libration_elon: 1.402,
|
|
432
|
+
ascii: ' \n \n +. - _ \n ,-m1_yz_.l~ !]~J \n _$#` "` "r|kz__L ` : \n ^ ` .X@@$mWgy.ym?. \n y_ , ug@@$H2g@R{MYW*r \n +=hP# ft ._,. _ "$$@$=~4@YByB?sHx \n , .$K@VKyy$ssg@$a$$@@$T `` Zsi#R$64 \n ^, -@@$2@$$@$@@@@g@@@$E . 7g@zag@/> \n em" .s@@@@@@@@@@$$B$$@E@@$y:u) /$@m$B@$X\' \n 3nM; t@@@@@@@$@@@@@@@@@@@@gQw {0~~$B#M"\'_ \n dtyk ^$@@@@@@@@@$B@B@$@@@@E -/ ` M4E$ ~ \n @mHA_ . r @@@@@@@@@@@@$@@@@$@@@>" uX@ \n K@3B@$y-$g$g.{A$@@@@@@@@@@@@@@@@@@@$@ D$E _ <~@e( \n &Q$BBR#$@R== \\BW@@@@@@@@@@@@@$@@@$@$$$$$@$E # \n z8M0M@@@E R@$$@@$@@@@$@@@@$@@@@$@@M4R5r -` \n ?MBys$@$a_;wZ@@@@$$$@@@@@$$@$@$$@@$@R$@$$X< *# \n tX)A@@$@$@$@W@@$@$$@$@@@$@$@@$$$$$@@$d$P6R@F r" \n ^AK@$A$$$gA@@R@@@@@$@@@D@$@@@@$@$QMZ@$@7e_am \n ~b8kB$$BRB@@$$@@@B@@$g@@g$$@$$$$H$$$W$MMs( \n `"?4@@K4@g$@$@$@W$@$@@$g@$@$gB@@s@W$&@2l? \n `0}3y_`M$@$$@$$BPd@50@@@@@@@$@@@TWT\' \n ^z"4R$JBR_$5aR?@@2$@$@HBMA0#BF^ \n `^ FTT"$A#$RW$Z$y=Y%1@ \' \' \n \'~~A\'FZ7I0~7?^^\' \n \n \n'
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
index: 31,
|
|
436
|
+
distance_km: 404638.4,
|
|
437
|
+
libration_elat: 2.826,
|
|
438
|
+
libration_elon: 0.232,
|
|
439
|
+
ascii: " \n \n . . >r - \n ._:z m;-y., = . \n n\\F` ^ `'3ggLtg$ p w5,r \n ` jygM@Ea@GWyYMZ$_ i \n M@E$$R`4@Z@dM^$RxI': \n _qN$ \"_ . __pA@@$F `` a#92@@&8K? \n `L- jyggSss_$B@@@D$ ^ @$$$$@$gC \n ;@m_dR@@$@@@$@$$@@0yr R ;1@$@@@V3~?< \n _0@@$@@@@@@@$@@@$$@@$g@$>+ Mt\" z@@0~ , \n .j t@$@@@@@@@@@@@@$@$@@@$@m _4^. .~~@@_ ' \n </ . ~@M$@@@@@@@@@@@@@@$@@$M$-xw,, '1J~#>,=| \n +_' 1$@@$$@@@@@@@@@@@@@@$@@M$a@gu$Y ~TV\" \n >Z@__, __y' r~@@@@@@@@@@@@@@@@@@@@@$$@$@HL ` \n h4N@@JM$@$E^ ty@@@$@@@@@@@@@@@@@$@@@@@@@@R{ ,`( \n \"R#B@$$$F` '@@$@@$@@@@@@@@@@@@@$@#@@$@B@W7gy {Y, \n A$T@$$2- -gK$$$@@@@@@@@@@$@@$@@@@@@$@@IRF4yU~: \n tdaN$@$@ym@&@@@@@@@$@$@@@0$@$$W@$@@@R@6$g@BD/+' \n \" V8PMRB@@$@@@B@$@@@$@@$$@@@@$$@E@$R$Kb$A0s$W/ \n ~wX@@MB$B@A@B@B@@M$Bg@$$@@@B@@@R@@@$B#B@MM\"' \n 'Js$d@$$@$@@%$@$@@@$@$@$$@@$$R@9$MBMG#!' \n ~4MR+e~Tb@@@@@@@$@@a@@R$@@9$m$Qm[Xn \n `!~E6$5gM5W_RW@@@R$ER@b0bCs\"Q~ \n `~-'UR?@9@-ER$@@5g2_wuhX - \n 'FFF'\"Z\"@MGR^^'` \n \n \n"
|
|
440
|
+
}
|
|
441
|
+
]
|
|
442
|
+
};
|
|
441
443
|
|
|
442
444
|
// src/render/renderer.ts
|
|
445
|
+
var FRAME_W = 60;
|
|
446
|
+
var FRAME_H = 29;
|
|
447
|
+
var BASE_ANGLE_OFFSET = 90;
|
|
443
448
|
function asciiMoonDim(asciiArt) {
|
|
444
449
|
const lines = asciiArt.split("\n");
|
|
445
450
|
let minX = Infinity;
|
|
@@ -536,7 +541,38 @@ function findNearestMoonState(state) {
|
|
|
536
541
|
}
|
|
537
542
|
return ascii_default.moons[bestIndex];
|
|
538
543
|
}
|
|
544
|
+
var CHAR_ASPECT = 22 / 10;
|
|
545
|
+
function rotateCharacters(ascii, angleDeg, centerX, centerY) {
|
|
546
|
+
const angle = (angleDeg % 360 + 360) % 360;
|
|
547
|
+
if (Math.abs(angle) < 0.1) return ascii;
|
|
548
|
+
const lines = ascii.split("\n");
|
|
549
|
+
const height = lines.length;
|
|
550
|
+
const width = lines[0]?.length ?? 0;
|
|
551
|
+
const cx = centerX ?? (width - 1) / 2;
|
|
552
|
+
const cy = centerY ?? (height - 1) / 2;
|
|
553
|
+
const rads = angle * Math.PI / 180;
|
|
554
|
+
const cosA = Math.cos(rads);
|
|
555
|
+
const sinA = Math.sin(rads);
|
|
556
|
+
const output = Array.from({ length: height }, () => Array(width).fill(" "));
|
|
557
|
+
for (let outY = 0; outY < height; outY++) {
|
|
558
|
+
for (let outX = 0; outX < width; outX++) {
|
|
559
|
+
const dx = outX - cx;
|
|
560
|
+
const dy = (outY - cy) * CHAR_ASPECT;
|
|
561
|
+
const srcDx = dx * cosA - dy * sinA;
|
|
562
|
+
const srcDy = dx * sinA + dy * cosA;
|
|
563
|
+
const srcX = Math.round(srcDx + cx);
|
|
564
|
+
const srcY = Math.round(srcDy / CHAR_ASPECT + cy);
|
|
565
|
+
if (srcX >= 0 && srcX < width && srcY >= 0 && srcY < height) {
|
|
566
|
+
const char = lines[srcY]?.[srcX] ?? " ";
|
|
567
|
+
output[outY][outX] = char;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
return output.map((row) => row.join("")).join("\n");
|
|
572
|
+
}
|
|
539
573
|
function renderMoon(state, _options = {}) {
|
|
574
|
+
const options = _options ?? {};
|
|
575
|
+
const showHorizon = options.showHorizon !== false;
|
|
540
576
|
const nearestMoon = findNearestMoonState(state);
|
|
541
577
|
const asciiLines = nearestMoon.ascii.split("\n");
|
|
542
578
|
const dim = asciiMoonDim(nearestMoon.ascii);
|
|
@@ -607,59 +643,202 @@ function renderMoon(state, _options = {}) {
|
|
|
607
643
|
}
|
|
608
644
|
out.push(row);
|
|
609
645
|
}
|
|
610
|
-
|
|
646
|
+
const composed = out.join("\n");
|
|
647
|
+
let finalArt = composed;
|
|
648
|
+
if (state.position?.parallacticAngle !== void 0) {
|
|
649
|
+
const rotationCenter = dim;
|
|
650
|
+
finalArt = rotateCharacters(
|
|
651
|
+
composed,
|
|
652
|
+
state.position.parallacticAngle + BASE_ANGLE_OFFSET,
|
|
653
|
+
rotationCenter.centerX,
|
|
654
|
+
rotationCenter.centerY
|
|
655
|
+
);
|
|
656
|
+
}
|
|
657
|
+
return showHorizon ? overlayHorizon(finalArt, state, dim) : finalArt;
|
|
611
658
|
}
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
659
|
+
function overlayHorizon(art, state, moonDim) {
|
|
660
|
+
const pos = state.position;
|
|
661
|
+
if (!pos) return art;
|
|
662
|
+
if (state.size.angularDiameterDeg <= 0) return art;
|
|
663
|
+
const altitude = pos.altitude ?? 0;
|
|
664
|
+
const radiusDeg = state.size.angularDiameterDeg / 2;
|
|
665
|
+
const topAlt = altitude + radiusDeg;
|
|
666
|
+
const bottomAlt = altitude - radiusDeg;
|
|
667
|
+
if (bottomAlt >= 0) {
|
|
668
|
+
return art;
|
|
619
669
|
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
"src/index.ts"() {
|
|
631
|
-
"use strict";
|
|
632
|
-
init_astronomy();
|
|
633
|
-
init_renderer();
|
|
670
|
+
const lines = art.split("\n");
|
|
671
|
+
const degreesPerChar = state.size.angularDiameterDeg / Math.max(1, moonDim.height);
|
|
672
|
+
let horizonRow = moonDim.centerY + altitude / degreesPerChar;
|
|
673
|
+
horizonRow = Math.round(clamp(horizonRow, 0, FRAME_H - 1));
|
|
674
|
+
let label;
|
|
675
|
+
if (topAlt <= 0) {
|
|
676
|
+
const below = Math.abs(altitude).toFixed(1).replace(/\.0$/, "");
|
|
677
|
+
label = `${below}-deg-below-horizon`;
|
|
678
|
+
} else {
|
|
679
|
+
label = "horizon";
|
|
634
680
|
}
|
|
635
|
-
|
|
681
|
+
lines[horizonRow] = makeHorizonLine(label);
|
|
682
|
+
return lines.join("\n");
|
|
683
|
+
}
|
|
684
|
+
function makeHorizonLine(label) {
|
|
685
|
+
const normalized = label.trim().replace(/\s+/g, "-");
|
|
686
|
+
let content = `--${normalized}--`;
|
|
687
|
+
if (content.length > FRAME_W) {
|
|
688
|
+
content = content.slice(0, FRAME_W);
|
|
689
|
+
}
|
|
690
|
+
if (content.length === FRAME_W) return content;
|
|
691
|
+
const remaining = FRAME_W - content.length;
|
|
692
|
+
const left = Math.floor(remaining / 2);
|
|
693
|
+
const right = remaining - left;
|
|
694
|
+
return "-".repeat(left) + content + "-".repeat(right);
|
|
695
|
+
}
|
|
636
696
|
|
|
637
|
-
// src/cli.ts
|
|
638
|
-
var
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
697
|
+
// src/cli-args.ts
|
|
698
|
+
var DATE_ONLY_REGEX = /^\d{4}-\d{2}-\d{2}$/;
|
|
699
|
+
var DATE_WITH_TIME_NO_TZ_REGEX = /^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}$/;
|
|
700
|
+
var DATE_WITH_TIME_REGEX = /^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}/;
|
|
701
|
+
var TIME_ONLY_REGEX = /^\d{2}:\d{2}$/;
|
|
702
|
+
function normalizeDateInput(input) {
|
|
703
|
+
const trimmed = input.trim();
|
|
704
|
+
if (DATE_ONLY_REGEX.test(trimmed)) {
|
|
705
|
+
return `${trimmed}T00:00:00Z`;
|
|
706
|
+
}
|
|
707
|
+
if (DATE_WITH_TIME_NO_TZ_REGEX.test(trimmed)) {
|
|
708
|
+
const iso = trimmed.replace(" ", "T");
|
|
709
|
+
return `${iso}:00Z`;
|
|
710
|
+
}
|
|
711
|
+
if (trimmed.includes(" ")) {
|
|
712
|
+
return trimmed.replace(" ", "T");
|
|
713
|
+
}
|
|
714
|
+
return trimmed;
|
|
715
|
+
}
|
|
716
|
+
function parseDateOrThrow(value) {
|
|
717
|
+
const normalized = normalizeDateInput(value);
|
|
718
|
+
const parsed = new Date(normalized);
|
|
719
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
720
|
+
throw new Error(`Invalid date format: ${value}. Use YYYY-MM-DD or YYYY-MM-DDTHH:MM.`);
|
|
721
|
+
}
|
|
722
|
+
return parsed;
|
|
723
|
+
}
|
|
724
|
+
function parseNumberOrThrow(rawValue, label) {
|
|
725
|
+
if (rawValue === void 0) {
|
|
726
|
+
throw new Error(`Missing value for ${label}.`);
|
|
727
|
+
}
|
|
728
|
+
const numericValue = Number(rawValue);
|
|
729
|
+
if (!Number.isFinite(numericValue)) {
|
|
730
|
+
throw new Error(`Invalid ${label} value: ${rawValue}.`);
|
|
731
|
+
}
|
|
732
|
+
return numericValue;
|
|
733
|
+
}
|
|
734
|
+
function expectRange(value, min, max, label) {
|
|
735
|
+
if (value < min || value > max) {
|
|
736
|
+
throw new Error(`${label} must be between ${min} and ${max}.`);
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
function readFlagValue(args, index, inlineValue) {
|
|
740
|
+
if (inlineValue !== void 0) {
|
|
741
|
+
return { value: inlineValue, nextIndex: index };
|
|
742
|
+
}
|
|
743
|
+
const next = args[index + 1];
|
|
744
|
+
if (next === void 0 || next.startsWith("--")) {
|
|
745
|
+
throw new Error(`Missing value for ${args[index]}.`);
|
|
746
|
+
}
|
|
747
|
+
return { value: next, nextIndex: index + 1 };
|
|
748
|
+
}
|
|
749
|
+
function combineDateAndTime(datePart, timePart) {
|
|
750
|
+
if (!timePart) {
|
|
751
|
+
return datePart;
|
|
752
|
+
}
|
|
753
|
+
if (DATE_WITH_TIME_REGEX.test(datePart)) {
|
|
754
|
+
throw new Error("Date argument already contains time; remove the standalone HH:MM value.");
|
|
755
|
+
}
|
|
756
|
+
return `${datePart}T${timePart}`;
|
|
757
|
+
}
|
|
758
|
+
function parseCliArgs(args, options = {}) {
|
|
759
|
+
const nowProvider = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
760
|
+
let datePart;
|
|
761
|
+
let timePart;
|
|
762
|
+
let latitude;
|
|
763
|
+
let longitude;
|
|
764
|
+
let elevation;
|
|
765
|
+
for (let i = 0; i < args.length; i++) {
|
|
766
|
+
const arg = args[i];
|
|
767
|
+
if (arg.startsWith("--")) {
|
|
768
|
+
const [flag, inline] = arg.split("=", 2);
|
|
769
|
+
const key = flag.slice(2);
|
|
770
|
+
switch (key) {
|
|
771
|
+
case "lat": {
|
|
772
|
+
const { value, nextIndex } = readFlagValue(args, i, inline);
|
|
773
|
+
latitude = parseNumberOrThrow(value, "Latitude");
|
|
774
|
+
expectRange(latitude, -90, 90, "Latitude");
|
|
775
|
+
i = nextIndex;
|
|
776
|
+
break;
|
|
777
|
+
}
|
|
778
|
+
case "lon":
|
|
779
|
+
case "long":
|
|
780
|
+
case "longitude": {
|
|
781
|
+
const { value, nextIndex } = readFlagValue(args, i, inline);
|
|
782
|
+
longitude = parseNumberOrThrow(value, "Longitude");
|
|
783
|
+
expectRange(longitude, -180, 180, "Longitude");
|
|
784
|
+
i = nextIndex;
|
|
785
|
+
break;
|
|
786
|
+
}
|
|
787
|
+
case "elev":
|
|
788
|
+
case "elevation": {
|
|
789
|
+
const { value, nextIndex } = readFlagValue(args, i, inline);
|
|
790
|
+
elevation = parseNumberOrThrow(value, "Elevation");
|
|
791
|
+
i = nextIndex;
|
|
792
|
+
break;
|
|
793
|
+
}
|
|
794
|
+
default:
|
|
795
|
+
throw new Error(`Unknown flag: ${flag}`);
|
|
796
|
+
}
|
|
797
|
+
} else if (!datePart) {
|
|
798
|
+
if (TIME_ONLY_REGEX.test(arg)) {
|
|
799
|
+
throw new Error("Cannot specify time without a date. Provide YYYY-MM-DD first.");
|
|
800
|
+
}
|
|
801
|
+
datePart = arg;
|
|
802
|
+
} else if (!timePart && TIME_ONLY_REGEX.test(arg)) {
|
|
803
|
+
timePart = arg;
|
|
804
|
+
} else {
|
|
805
|
+
throw new Error(`Unexpected argument: ${arg}`);
|
|
649
806
|
}
|
|
650
|
-
date = parsedDate;
|
|
651
|
-
} else {
|
|
652
|
-
date = /* @__PURE__ */ new Date();
|
|
653
807
|
}
|
|
808
|
+
const combinedDateInput = datePart ? combineDateAndTime(datePart, timePart) : void 0;
|
|
809
|
+
const date = combinedDateInput ? parseDateOrThrow(combinedDateInput) : nowProvider();
|
|
810
|
+
if (latitude === void 0 !== (longitude === void 0)) {
|
|
811
|
+
throw new Error("Latitude and longitude must be provided together.");
|
|
812
|
+
}
|
|
813
|
+
if (elevation !== void 0 && latitude === void 0) {
|
|
814
|
+
throw new Error("Elevation requires latitude and longitude.");
|
|
815
|
+
}
|
|
816
|
+
const observer = latitude !== void 0 && longitude !== void 0 ? {
|
|
817
|
+
latitude,
|
|
818
|
+
longitude,
|
|
819
|
+
elevationMeters: elevation
|
|
820
|
+
} : void 0;
|
|
821
|
+
return {
|
|
822
|
+
date,
|
|
823
|
+
observer
|
|
824
|
+
};
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
// src/cli.ts
|
|
828
|
+
function main(argv = process.argv.slice(2)) {
|
|
654
829
|
try {
|
|
655
|
-
const
|
|
656
|
-
const
|
|
830
|
+
const args = parseCliArgs(argv);
|
|
831
|
+
const moonState = getMoonState(args.date, args.observer);
|
|
832
|
+
const asciiMoon = renderMoon(moonState);
|
|
657
833
|
console.log(asciiMoon);
|
|
658
834
|
} catch (error) {
|
|
659
|
-
|
|
835
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
836
|
+
console.error("Error:", message);
|
|
660
837
|
process.exit(1);
|
|
661
838
|
}
|
|
662
839
|
}
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
840
|
+
main();
|
|
841
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
842
|
+
0 && (module.exports = {
|
|
843
|
+
main
|
|
844
|
+
});
|