{"id":3026,"date":"2026-01-17T13:17:12","date_gmt":"2026-01-17T18:17:12","guid":{"rendered":"https:\/\/steely.org\/celnav\/?page_id=3026"},"modified":"2026-03-05T09:42:40","modified_gmt":"2026-03-05T14:42:40","slug":"sunlines-example","status":"publish","type":"page","link":"https:\/\/steely.org\/celnav\/sunlines-example\/","title":{"rendered":"Sunlines Example"},"content":{"rendered":"\n<!-- Display a Loading message while canvas loads so users wait -->\n<div id=\"gs-loading\" style=\"text-align:center; margin-top:-20px;\">\n    <div class=\"spinner\"><\/div>\n    <div style=\"color:#ff6600; font-size:1.1em; margin-top:8px;\">\n        Rendering interactive 3D&#8230;&#8230;.\n    <\/div>\n<\/div>\n\n\n\n<!-- Reload page when browser window width is changed so everything gets resized -->\n<script>\n\/\/ Reliable cross\u2011platform orientation detection for WordPress + GlowScript\n(function() {\n\n    function getOrientation() {\n        return window.matchMedia(\"(orientation: portrait)\").matches\n            ? \"portrait\"\n            : \"landscape\";\n    }\n\n    let lastOrientation = getOrientation();\n\n    \/\/ Debounced resize handler\n    let resizeTimer = null;\n\n    window.addEventListener(\"resize\", function() {\n        clearTimeout(resizeTimer);\n        resizeTimer = setTimeout(function() {\n            const current = getOrientation();\n            if (current !== lastOrientation) {\n                lastOrientation = current;\n                location.reload();\n            }\n        }, 150);\n    });\n\n})();\n<\/script>\n\n<script>\nconst waitForCanvas = setInterval(() => {\n    const canvas = document.querySelector(\".glowscript canvas\");\n    if (canvas) {\n        clearInterval(waitForCanvas);\n\n        \/\/ Delay hiding the loading message\n        setTimeout(() => {\n            const el = document.getElementById(\"gs-loading\");\n            if (el) el.style.display = \"none\";\n        }, 2000);\n    }\n}, 50);\n<\/script>\n\n\n<div style=\"text-align: justify;\">\n\n\n<p>This is a rendering is of an actual sun sight. Think of it as a visual dictionary of celestial navigation terms. The image is generated from spherical trigonometry. Rotate it and use the checkboxes to manipulate it as desired. Download a PNG file of the current image with the Snapshot button. Refreshing the browser is sometimes helpful to recenter the page in the browser window. Browser refresh and orientation changes regenerates the image to the initial view.<\/p>\n\n\n<div>\n<div style=\"text-align: justify;\">\n\n\n<p>PC: Rotate: use buttons or hold down right mouse button and drag. Zoom: use buttons or a mouse scroll wheel. Scroll footer: use right scroll bar. Best viewing on a PC.<\/p>\n\n\n<div>\n<div style=\"text-align: justify;\">\n\n\n<p>Mobile: Rotate: use buttons or touch and drag image. Zoom: use butons or two-finger spread\/pinch. Scroll footer: drag footer up and down. Scroll page: drag page margin up and down.<\/p>\n\n\n<div>\n\n\n\n\n<div id=\"glowscript\" class=\"glowscript\">\n<meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\">\n<link type=\"text\/css\" href=\"https:\/\/www.glowscript.org\/css\/redmond\/2.1\/jquery-ui.custom.css\" rel=\"stylesheet\" \/>\n<link type=\"text\/css\" href=\"https:\/\/www.glowscript.org\/css\/ide.css\" rel=\"stylesheet\" \/>\n<script type=\"text\/javascript\" src=\"https:\/\/www.glowscript.org\/lib\/jquery\/2.1\/jquery.min.js\"><\/script>\n<script type=\"text\/javascript\" src=\"https:\/\/www.glowscript.org\/lib\/jquery\/2.1\/jquery-ui.custom.min.js\"><\/script>\n<script type=\"text\/javascript\" src=\"https:\/\/www.glowscript.org\/package\/glow.3.2.min.js\"><\/script>\n<script type=\"text\/javascript\" src=\"https:\/\/www.glowscript.org\/package\/RSrun.3.2.min.js\"><\/script>\n<script type=\"text\/javascript\"><!--\/\/--><![CDATA[\/\/><!--\n\n\/\/ START JAVASCRIPT\n;(function() {;\nvar \u03c1\u03c3_modules = {};\nvar camera_rad, dev_txt_height, apcb_state, eccb_state, ap_n_card, ap_e_card, ap_w_card, ap_s_card, ap_n_lbl, ap_e_lbl, ap_w_lbl, ap_s_lbl, ap_horizon_triangles, ob_horizon_triangles, Ho_sector_tris, Ho_label, Hc_sector_tris, Hc_label, alt_line, ob_n_card, ob_e_card, ob_w_card, ob_s_card, ob_n_lbl, ob_e_lbl, ob_w_lbl, ob_s_lbl, ob_ap_horiz_triangles, ob_ap_alt_line, Hs_sector_tris, Hs_label;\n\u03c1\u03c3_modules.pythonize = {};\n\n(function(){\n    function strings() {\n        var string_funcs, exclude, name;\n        string_funcs = set(\"capitalize strip lstrip rstrip islower isupper isspace lower upper swapcase center count endswith startswith find rfind index rindex format join ljust rjust partition rpartition replace split rsplit splitlines zfill\".split(\" \"));\n        if (!arguments.length) {\n            exclude = (function(){\n                var s = \u03c1\u03c3_set();\n                s.jsset.add(\"split\");\n                s.jsset.add(\"replace\");\n                return s;\n            })();\n        } else if (arguments[0]) {\n            exclude = Array.prototype.slice.call(arguments);\n        } else {\n            exclude = null;\n        }\n        if (exclude) {\n            string_funcs = string_funcs.difference(set(exclude));\n        }\n        var \u03c1\u03c3_Iter0 = string_funcs;\n        \u03c1\u03c3_Iter0 = ((typeof \u03c1\u03c3_Iter0[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter0 instanceof Map ? \u03c1\u03c3_Iter0.keys() : \u03c1\u03c3_Iter0) : Object.keys(\u03c1\u03c3_Iter0));\n        for (var \u03c1\u03c3_Index0 of \u03c1\u03c3_Iter0) {\n            name = \u03c1\u03c3_Index0;\n            (\u03c1\u03c3_expr_temp = String.prototype)[(typeof name === \"number\" && name < 0) ? \u03c1\u03c3_expr_temp.length + name : name] = (\u03c1\u03c3_expr_temp = \u03c1\u03c3_str.prototype)[(typeof name === \"number\" && name < 0) ? \u03c1\u03c3_expr_temp.length + name : name];\n        }\n    };\n    if (!strings.__module__) Object.defineProperties(strings, {\n        __module__ : {value: \"pythonize\"}\n    });\n\n    \u03c1\u03c3_modules.pythonize.strings = strings;\n})();\nasync function __main__() {\n\"use strict\";\n    var display = canvas;\n    var scene = canvas();\n\n    function round(num, n=0) {return Number(num.toFixed(n))}\n    fontloading();\n    await waitforfonts();\n\n    var version, print, arange, __name__, type, \u03c1\u03c3_ls, alat, alon, olat, olon, hsdeg, hadeg, hodeg, gp_dec, gp_gha, ll_vector, ob_vector, scene_brightness, bg_color, draw_globe, globe_opacity, R, globe_shininess, globe_texture, globe_color, all_text_labels, center_pt_color, center_pt_radius, draw_lat_lon, lat_lon_color, draw_cel_sphere, cel_sphere_color, cel_sphere_dia, draw_equator, equator_color, equator_thickness, draw_prime_meridian, prime_mer_color, prime_mer_thickness, draw_axis, axis_color, axis_length, ua, isMobile, isPortrait, isLandscape, scene, offset, txt, dev_lbl_height, dev_txt_height, earth, center_point, lats, lons, alpha, dalpha, r, y, theta, dtheta, raxis, i, eq, earth_axis, k, tmp, e1, e2, dir_180, eq_label_pos, label_offset, eq_label, axis, segments, pts, x, p_curve, pm_label_pos, pm_label_offset, pm_label, dec, az, cel_sphere_rad, upbn, dnbn, lfbn, rtbn, zinbn, zoutbn, rsbn, lmcb, llcb, axcb, eqcb, pmcb, cpcb, pncb, cscb, eccb, eqncb, csaphcb, csobhcb, apcb, drcb, apccb, aphcb, aphccb, zncbcb, znpcbcb, obcb, obccb, obhcb, obhscb, obhocb, obaphcb, obaphocb, gpcb, gpghacb, gpdeccb, pdcb, clcb, lhacb, lopcb, avcb, transp_label, transp_slider, ssbn, mpbn, zncb, znpcb, camera_rad, lha, hcrad, hcdeg, zdeg, zn_deg, aval, avaldeg, avalmin, tora, tora_letter, ap_radius, ap_color, alat_alon, alat_alon_pt, ap_label_pos, up_ref, left_dir, left_shift, AP_label, gp_radius, gp_color, gp_vec, gp, gp_label_pos, right_dir, right_shift, GP_label, ob_radius, ob_color, ob_pt, ob_label_offset, ob_label_pos, OB_label, \u03c1\u03c3_unpack, zenith_marker, zenith_line, zenith_label, arc_pts, az_line, label_pos, zn_label_pos, Zn_label, ap_vec, rad_ang_dist, deg_ang_dist, nm_length, ob_rad_ang_dist, ob_deg_ang_dist, ob_nm_length, np_radius, np_vec, np_pt, np_label_offset, np_label_pos, Pn_label, sp_radius, sp_vec, sp_pt, sp_label_offset, sp_label_pos, Ps_label, bearing, ob_bearing, ho_line, hc_line, ap_horiz_label, ob_horizon_triangles, ob_horiz, North, East, U, obs_horiz_label, ap_horiz, az_dir, Ho_sector_tris, Ho_label, Hc_sector_tris, ap_circ, ap_circ_lbl, ob_circ, ob_circ_lbl, ap_line, colat_arc, cl_label_pos, cl_label_offset, cl_label, pd_arc, pd_label_pos, pd_label_offset, pd_label, gp_gha_line, gp_gha_lbl, gp_gha_tris, gp_dec_line, gp_dec_lbl, gp_dec_tris, ap_cel_horiz_curve, ap_cel_horiz_label, ob_cel_horiz_curve, ob_cel_horiz_label, cel_equator, cel_equator_lbl, ob_ap_horiz, ob_ap_horiz_label, ho_ap_ho_line, ob_ap_sector_tris, ob_ap_sect_label, ecliptic, ecl_lbl, vernal, autumnal, veq_lbl, aeq_lbl, lha_tris, lha_label, zn_plane_tris, zn_plane_label, lop_curve, lop_lbl, P_lop, a_cyl, a_arrow, a_label, dr_lat, dr_lat_lbl, dr_lon, dr_lon_lbl, hs_line, Hs_label;\n    version = \u03c1\u03c3_list_decorate([ \"3.2\", \"glowscript\" ]);\n    Array.prototype['+'] = function(r) {return this.concat(r)}\n    Array.prototype['*'] = function(r) {return __array_times_number(this, r)}\n    window.__GSlang = \"vpython\";\n    print = GSprint;\n    arange = range;\n    __name__ = \"__main__\";\n    type = pytype;\n    var strings = \u03c1\u03c3_modules.pythonize.strings;\n\n    strings();\n    \"9\";\n    alat = 27;\n    \"10\";\n    alon = 1[\"-u\"]()[\"*\"](77.53);\n    \"11\";\n    olat = 27.491;\n    \"12\";\n    olon = 1[\"-u\"]()[\"*\"](77.413667);\n    \"13\";\n    hsdeg = 33.621667;\n    \"14\";\n    hadeg = 33.585;\n    \"15\";\n    hodeg = 33.831667;\n    \"16\";\n    gp_dec = 1[\"-u\"]()[\"*\"](21.3183);\n    \"17\";\n    gp_gha = 48.53;\n    \"18\";\n    ll_vector = (await latlon_to_vector(alat, alon));\n    \"19\";\n    ob_vector = (await latlon_to_vector(olat, olon));\n    \"21\";\n    scene_brightness = .3;\n    \"23\";\n    bg_color = color.black;\n    \"24\";\n    draw_globe = true;\n    \"25\";\n    globe_opacity = 1;\n    \"26\";\n    R = 1;\n    \"27\";\n    globe_shininess = 0;\n    \"28\";\n    globe_texture = textures.earth;\n    \"30\";\n    globe_color = vector(.401, .772, .991);\n    \"32\";\n    all_text_labels = \u03c1\u03c3_list_decorate([]);\n    \"34\";\n    center_pt_color = color.white;\n    \"35\";\n    center_pt_radius = .015;\n    \"37\";\n    draw_lat_lon = true;\n    \"38\";\n    lat_lon_color = color.gray(.9);\n    \"40\";\n    draw_cel_sphere = true;\n    \"41\";\n    cel_sphere_color = color.gray(.2);\n    \"42\";\n    cel_sphere_dia = 2;\n    \"44\";\n    draw_equator = true;\n    \"45\";\n    equator_color = color.blue;\n    \"46\";\n    equator_thickness = .005;\n    \"48\";\n    draw_prime_meridian = true;\n    \"49\";\n    prime_mer_color = color.blue;\n    \"50\";\n    prime_mer_thickness = .005;\n    \"52\";\n    draw_axis = true;\n    \"53\";\n    axis_color = color.blue;\n    \"54\";\n    axis_length = 2;\n    \"57\";\n    ua = window.navigator.userAgent.lower();\n    \"58\";\n    isMobile = \u03c1\u03c3_in(\"mobile\", ua) || \u03c1\u03c3_in(\"android\", ua) || \u03c1\u03c3_in(\"iphone\", ua);\n    \"60\";\n    isPortrait = window.innerHeight[\">=\"](window.innerWidth);\n    \"61\";\n    isLandscape = window.innerWidth[\">\"](window.innerHeight);\n    \"64\";\n    scene.lights = \u03c1\u03c3_list_decorate([]);\n    \"67\";\n    if (isMobile) {\n        \"68\";\n        if (isPortrait) {\n            \"69\";\n            scene = \u03c1\u03c3_interpolate_kwargs.call(this, canvas, [\u03c1\u03c3_desugar_kwargs({width: window.innerWidth[\"-\"](1[\"*\"](56)), height: 300, align: \"none\", pixel_ratio: 2, background: bg_color})]);\n            \"70\";\n        } else {\n            \"71\";\n            scene = \u03c1\u03c3_interpolate_kwargs.call(this, canvas, [\u03c1\u03c3_desugar_kwargs({width: window.innerWidth[\"-\"](1[\"*\"](56)), height: window.innerHeight, align: \"none\", pixel_ratio: 2, background: bg_color})]);\n            \"72\";\n        }\n    } else {\n        \"73\";\n        if (isPortrait) {\n            \"74\";\n            offset = 100;\n            \"75\";\n            scene = \u03c1\u03c3_interpolate_kwargs.call(this, canvas, [\u03c1\u03c3_desugar_kwargs({width: window.innerWidth[\"-\"](1[\"*\"](100)), height: window.innerHeight, align: \"none\", pixel_ratio: 2, background: bg_color})]);\n            \"76\";\n        } else {\n            \"77\";\n            scene = \u03c1\u03c3_interpolate_kwargs.call(this, canvas, [\u03c1\u03c3_desugar_kwargs({width: window.innerWidth[\"-\"](1[\"*\"](300)), height: window.innerHeight, align: \"none\", pixel_ratio: 2, background: bg_color})]);\n        }\n    }\n    \"79\";\n    scene.range = 2;\n    \"80\";\n    scene.ambient = color.white[\"*\"](scene_brightness);\n    \"83\";\n    txt = \u03c1\u03c3_interpolate_kwargs.call(this, label, [\u03c1\u03c3_desugar_kwargs({text: \"https:\/\/steely.org\", pixel_pos: true, pos: vector(scene.width[\"-\"](1[\"*\"](65)), 20, 0), height: 12, box: false, opacity: 0, pixel_scale: true, color: color.gray(.5)})]);\n    \"93\";\n    if (isMobile) {\n        \"94\";\n        dev_lbl_height = 11;\n        \"95\";\n    } else {\n        \"96\";\n        dev_lbl_height = 14;\n        \"99\";\n    }\n    if (isMobile) {\n        \"100\";\n        dev_txt_height = .05;\n        \"101\";\n    } else {\n        \"102\";\n        dev_txt_height = .04;\n        \"104\";\n    }\n    if (isMobile) {\n        \"105\";\n        \u03c1\u03c3_interpolate_kwargs.call(this, print_options, [\u03c1\u03c3_desugar_kwargs({width: window.innerWidth, height: 125})]);\n        \"106\";\n    } else {\n        \"107\";\n        \u03c1\u03c3_interpolate_kwargs.call(this, print_options, [\u03c1\u03c3_desugar_kwargs({width: window.innerWidth[\"-\"](1[\"*\"](17)), height: 125})]);\n    }\n    \"109\";\n    \u03c1\u03c3_interpolate_kwargs.call(this, distant_light, [\u03c1\u03c3_desugar_kwargs({direction: vector(1[\"-u\"]()[\"*\"](1), 0, 0)})]);\n    \"110\";\n    \u03c1\u03c3_interpolate_kwargs.call(this, distant_light, [\u03c1\u03c3_desugar_kwargs({direction: vector(1, 2, 3)})]);\n    \"111\";\n    \u03c1\u03c3_interpolate_kwargs.call(this, distant_light, [\u03c1\u03c3_desugar_kwargs({direction: vector(1[\"-u\"]()[\"*\"](1), 1[\"-u\"]()[\"*\"](2), 1[\"-u\"]()[\"*\"](1))})]);\n    \"113\";\n    async function rotate_camera(x_angle_deg, y_angle_deg) {\n        var \u03c1\u03c3_ls, x_angle, y_angle;\n        \"120\";\n        try {\n            \"122\";\n            x_angle = (await radians(x_angle_deg));\n            \"123\";\n            y_angle = (await radians(y_angle_deg));\n            \"126\";\n            \u03c1\u03c3_interpolate_kwargs.call(scene.camera, scene.camera.rotate, [\u03c1\u03c3_desugar_kwargs({angle: x_angle, axis: vector(1, 0, 0), origin: vector(0, 0, 0)})]);\n            \"129\";\n            \u03c1\u03c3_interpolate_kwargs.call(scene.camera, scene.camera.rotate, [\u03c1\u03c3_desugar_kwargs({angle: y_angle, axis: vector(0, 1, 0), origin: vector(0, 0, 0)})]);\n            \"131\";\n        } catch (\u03c1\u03c3_Exception) {\n            \u03c1\u03c3_last_exception = \u03c1\u03c3_Exception;\n            if (\u03c1\u03c3_Exception instanceof Error) {\n                var e = \u03c1\u03c3_Exception;\n                \"132\";\n                print(\"Error rotating camera: \"[\"+\"](\u03c1\u03c3_str.format(\"{}\", e))[\"+\"](\"\"));\n            } else {\n                throw \u03c1\u03c3_Exception;\n            }\n        }\n    };\n    if (!rotate_camera.__argnames__) Object.defineProperties(rotate_camera, {\n        __argnames__ : {value: [\"x_angle_deg\", \"y_angle_deg\"]},\n        __module__ : {value: null}\n    });\n\n    \"135\";\n    (await rotate_camera(1[\"-u\"]()[\"*\"](4), 1[\"-u\"]()[\"*\"](92)));\n    \"138\";\n    if (draw_globe) {\n        \"139\";\n        earth = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 0, 0), radius: R, texture: globe_texture, shininess: globe_shininess, opacity: globe_opacity, color: globe_color, res: 128})]);\n        \"140\";\n        scene.center = earth.pos;\n    }\n    \"143\";\n    center_point = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 0, 0), radius: center_pt_radius, color: center_pt_color})]);\n    \"150\";\n    if (draw_lat_lon) {\n        \"151\";\n        lats = \u03c1\u03c3_list_decorate([]);\n        \"152\";\n        lons = \u03c1\u03c3_list_decorate([]);\n        \"155\";\n        alpha = 0;\n        \"156\";\n        dalpha = 10[\"*\"](pi)[\"\/\"](180);\n        \"159\";\n        while (alpha[\"<\"](pi[\"\/\"](2))) {\n            \"160\";\n            r = R[\"*\"](cos(alpha));\n            \"161\";\n            y = R[\"*\"](sin(alpha));\n            \"162\";\n            lats = lats[\"+\"](\u03c1\u03c3_list_decorate([ \u03c1\u03c3_interpolate_kwargs.call(this, ring, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, y, 0), axis: vector(0, 1, 0), radius: r, thickness: R[\"\/\"](300), color: lat_lon_color, res: 128, shininess: 0})]) ]));\n            \"163\";\n            lats = lats[\"+\"](\u03c1\u03c3_list_decorate([ \u03c1\u03c3_interpolate_kwargs.call(this, ring, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 1[\"-u\"]()[\"*\"](y), 0), axis: vector(0, 1, 0), radius: r, thickness: R[\"\/\"](300), color: lat_lon_color, res: 128, shininess: 0})]) ]));\n            \"164\";\n            alpha = alpha[\"+\"](dalpha);\n        }\n        \"167\";\n        theta = 0;\n        \"168\";\n        dtheta = 10[\"*\"](pi)[\"\/\"](180);\n        \"170\";\n        while (theta[\"<\"](pi)) {\n            \"171\";\n            raxis = vector(cos(theta), 0, sin(theta));\n            \"172\";\n            lons = lons[\"+\"](\u03c1\u03c3_list_decorate([ \u03c1\u03c3_interpolate_kwargs.call(this, ring, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 0, 0), axis: raxis, radius: R, thickness: R[\"\/\"](300), color: lat_lon_color, res: 128, shininess: 0})]) ]));\n            \"173\";\n            theta = theta[\"+\"](dtheta);\n        }\n        \"176\";\n        var \u03c1\u03c3_Iter1 = range(len(lats));\n        \u03c1\u03c3_Iter1 = ((typeof \u03c1\u03c3_Iter1[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter1 instanceof Map ? \u03c1\u03c3_Iter1.keys() : \u03c1\u03c3_Iter1) : Object.keys(\u03c1\u03c3_Iter1));\n        for (var \u03c1\u03c3_Index1 of \u03c1\u03c3_Iter1) {\n            i = \u03c1\u03c3_Index1;\n            \"177\";\n            \u03c1\u03c3_getitem(lats, i).visible = false;\n        }\n        \"178\";\n        var \u03c1\u03c3_Iter2 = range(len(lons));\n        \u03c1\u03c3_Iter2 = ((typeof \u03c1\u03c3_Iter2[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter2 instanceof Map ? \u03c1\u03c3_Iter2.keys() : \u03c1\u03c3_Iter2) : Object.keys(\u03c1\u03c3_Iter2));\n        for (var \u03c1\u03c3_Index2 of \u03c1\u03c3_Iter2) {\n            i = \u03c1\u03c3_Index2;\n            \"179\";\n            \u03c1\u03c3_getitem(lons, i).visible = false;\n            \"182\";\n        }\n    }\n    if (draw_equator) {\n        \"183\";\n        eq = \u03c1\u03c3_interpolate_kwargs.call(this, ring, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 0, 0), axis: vector(0, 1, 0), radius: R, thickness: equator_thickness, color: equator_color, res: 128, shininess: 0})]);\n    }\n    \"185\";\n    earth_axis = vector(0, 1, 0);\n    \"187\";\n    k = norm(earth_axis);\n    \"189\";\n    tmp = vector(1, 0, 0);\n    \"190\";\n    if (abs(dot(tmp, k))[\">\"](.9)) {\n        \"191\";\n        tmp = vector(0, 1, 0);\n    }\n    \"193\";\n    e1 = norm(cross(k, tmp));\n    \"194\";\n    e2 = cross(k, e1);\n    \"196\";\n    theta = pi[\"\/\"](2);\n    \"197\";\n    dir_180 = cos(theta)[\"*\"](e1)[\"+\"](sin(theta)[\"*\"](e2));\n    \"199\";\n    eq_label_pos = R[\"*\"](dir_180)[\"+\"](.05[\"*\"](k));\n    \"200\";\n    label_offset = 1.1;\n    \"201\";\n    eq_label_pos = norm(eq_label_pos)[\"*\"](R)[\"*\"](label_offset);\n    \"203\";\n    eq_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: eq_label_pos, text: \"Equator\", height: dev_txt_height, color: color.blue, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n    \"212\";\n    all_text_labels.append(eq_label);\n    \"215\";\n    if (draw_axis) {\n        \"216\";\n        axis = \u03c1\u03c3_interpolate_kwargs.call(this, cylinder, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 1[\"-u\"]()[\"*\"](axis_length)[\"*\"](R), 0), axis: vector(0, axis_length[\"*\"](2)[\"*\"](R), 0), radius: .005, color: axis_color, res: 128, shininess: 0})]);\n        \"219\";\n        axis.visible = false;\n    }\n    \"225\";\n    async function rotate_curve_points() {\n        var curve_obj = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var angle = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var axis = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? rotate_curve_points.__defaults__.axis : arguments[2];\n        var origin = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? rotate_curve_points.__defaults__.origin : arguments[3];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"axis\")){\n            axis = \u03c1\u03c3_kwargs_obj.axis;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"origin\")){\n            origin = \u03c1\u03c3_kwargs_obj.origin;\n        }\n        var \u03c1\u03c3_ls, new_positions, rel, rotated, i;\n        \"237\";\n        try {\n            \"239\";\n            axis = axis.norm();\n            \"240\";\n        } catch (\u03c1\u03c3_Exception) {\n            \u03c1\u03c3_last_exception = \u03c1\u03c3_Exception;\n            if (\u03c1\u03c3_Exception instanceof ZeroDivisionError) {\n                \"241\";\n                throw new (await ValueError(\"Rotation axis cannot be a zero vector.\"));\n            } else {\n                throw \u03c1\u03c3_Exception;\n            }\n        }\n        \"244\";\n        new_positions = \u03c1\u03c3_list_decorate([]);\n        \"245\";\n        for (var \u03c1\u03c3_Index3 = 0; \u03c1\u03c3_Index3[\"<\"](curve_obj.npoints); \u03c1\u03c3_Index3++) {\n            i = \u03c1\u03c3_Index3;\n            \"246\";\n            rel = curve_obj.point(i).pos;\n            \"247\";\n            rotated = \u03c1\u03c3_interpolate_kwargs.call(this, rotate, [rel].concat([\u03c1\u03c3_desugar_kwargs({angle: angle, axis: axis})]));\n            \"248\";\n            \u03c1\u03c3_interpolate_kwargs.call(curve_obj, curve_obj.modify, [i].concat([\u03c1\u03c3_desugar_kwargs({pos: rotated})]));\n        }\n    };\n    if (!rotate_curve_points.__defaults__) Object.defineProperties(rotate_curve_points, {\n        __defaults__ : {value: {axis:vector(0, 1, 0), origin:vector(0, 0, 0)}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"curve_obj\", \"angle\", \"axis\", \"origin\"]},\n        __module__ : {value: null}\n    });\n\n    \"251\";\n    async function linspace() {\n        var start = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var stop = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var num = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? linspace.__defaults__.num : arguments[2];\n        var endpoint = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? linspace.__defaults__.endpoint : arguments[3];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"num\")){\n            num = \u03c1\u03c3_kwargs_obj.num;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"endpoint\")){\n            endpoint = \u03c1\u03c3_kwargs_obj.endpoint;\n        }\n        var \u03c1\u03c3_ls, step;\n        \"261\";\n        if (num[\"<=\"](0)) {\n            \"262\";\n            throw new (await ValueError(\"num must be a positive integer\"));\n            \"263\";\n        }\n        if ((num === 1 || typeof num === \"object\" && \u03c1\u03c3_equals(num, 1))) {\n            \"264\";\n            return \u03c1\u03c3_list_decorate([ float(start) ]);\n        }\n        \"266\";\n        step = (endpoint) ? stop[\"-\"](1[\"*\"](start))[\"\/\"](num[\"-\"](1[\"*\"](1))) : stop[\"-\"](1[\"*\"](start))[\"\/\"](num);\n        \"267\";\n        return (function() {\n            var \u03c1\u03c3_Iter = range(num), \u03c1\u03c3_Result = [], i;\n            \u03c1\u03c3_Iter = ((typeof \u03c1\u03c3_Iter[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter instanceof Map ? \u03c1\u03c3_Iter.keys() : \u03c1\u03c3_Iter) : Object.keys(\u03c1\u03c3_Iter));\n            for (var \u03c1\u03c3_Index of \u03c1\u03c3_Iter) {\n                i = \u03c1\u03c3_Index;\n                \u03c1\u03c3_Result.push(start[\"+\"](step[\"*\"](i)));\n            }\n            \u03c1\u03c3_Result = \u03c1\u03c3_list_constructor(\u03c1\u03c3_Result);\n            return \u03c1\u03c3_Result;\n        })();\n        \"270\";\n    };\n    if (!linspace.__defaults__) Object.defineProperties(linspace, {\n        __defaults__ : {value: {num:50, endpoint:true}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"start\", \"stop\", \"num\", \"endpoint\"]},\n        __module__ : {value: null}\n    });\n\n    if (draw_prime_meridian) {\n        \"273\";\n        segments = 100;\n        \"274\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"276\";\n        var \u03c1\u03c3_Iter4 = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, linspace, [\u03c1\u03c3_desugar_kwargs({start: 0, stop: pi, num: segments, endpoint: true})]));\n        \u03c1\u03c3_Iter4 = ((typeof \u03c1\u03c3_Iter4[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter4 instanceof Map ? \u03c1\u03c3_Iter4.keys() : \u03c1\u03c3_Iter4) : Object.keys(\u03c1\u03c3_Iter4));\n        for (var \u03c1\u03c3_Index4 of \u03c1\u03c3_Iter4) {\n            theta = \u03c1\u03c3_Index4;\n            \"277\";\n            x = R[\"*\"](cos(theta));\n            \"278\";\n            y = R[\"*\"](sin(theta));\n            \"279\";\n            \u03c1\u03c3_interpolate_kwargs.call(pts, pts.append, [\u03c1\u03c3_desugar_kwargs({pos: vector(y, x, 0), color: prime_mer_color, radius: prime_mer_thickness})]);\n        }\n        \"282\";\n        p_curve = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, radius: prime_mer_thickness, color: prime_mer_color, shininess: 0})]);\n        \"283\";\n        await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, rotate_curve_points, [p_curve].concat([\u03c1\u03c3_desugar_kwargs({angle: (await radians(1[\"-u\"]()[\"*\"](90))), axis: vector(0, 1, 0), origin: vector(0, 0, 0)})])));\n        \"285\";\n        pm_label_pos = \u03c1\u03c3_getitem(p_curve.point(30), \"pos\");\n        \"286\";\n        pm_label_offset = 1.1;\n        \"287\";\n        pm_label_pos = norm(pm_label_pos)[\"*\"](R)[\"*\"](pm_label_offset);\n        \"289\";\n        pm_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: pm_label_pos, text: \"Prime Mer.\", height: dev_txt_height, color: color.blue, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"299\";\n        all_text_labels.append(pm_label);\n        \"302\";\n    }\n    if (draw_cel_sphere) {\n        \"303\";\n        dec = \u03c1\u03c3_list_decorate([]);\n        \"304\";\n        az = \u03c1\u03c3_list_decorate([]);\n        \"305\";\n        cel_sphere_rad = cel_sphere_dia[\"*\"](R);\n        \"308\";\n        alpha = 0;\n        \"309\";\n        dalpha = 10[\"*\"](pi)[\"\/\"](180);\n        \"311\";\n        while (alpha[\"<\"](pi[\"\/\"](2))) {\n            \"312\";\n            r = cel_sphere_rad[\"*\"](cos(alpha));\n            \"313\";\n            y = cel_sphere_rad[\"*\"](sin(alpha));\n            \"314\";\n            dec = dec[\"+\"](\u03c1\u03c3_list_decorate([ \u03c1\u03c3_interpolate_kwargs.call(this, ring, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, y, 0), axis: vector(0, 1, 0), radius: r, thickness: R[\"\/\"](300), color: cel_sphere_color, res: 128, shininess: 0})]) ]));\n            \"315\";\n            dec = dec[\"+\"](\u03c1\u03c3_list_decorate([ \u03c1\u03c3_interpolate_kwargs.call(this, ring, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 1[\"-u\"]()[\"*\"](y), 0), axis: vector(0, 1, 0), radius: r, thickness: R[\"\/\"](300), color: cel_sphere_color, res: 128, shininess: 0})]) ]));\n            \"316\";\n            alpha = alpha[\"+\"](dalpha);\n        }\n        \"319\";\n        theta = 0;\n        \"320\";\n        dtheta = 10[\"*\"](pi)[\"\/\"](180);\n        \"322\";\n        while (theta[\"<\"](pi)) {\n            \"323\";\n            raxis = vector(cos(theta), 0, sin(theta));\n            \"324\";\n            az = az[\"+\"](\u03c1\u03c3_list_decorate([ \u03c1\u03c3_interpolate_kwargs.call(this, ring, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 0, 0), axis: raxis, radius: cel_sphere_rad, thickness: R[\"\/\"](300), color: cel_sphere_color, res: 128, shininess: 0})]) ]));\n            \"325\";\n            theta = theta[\"+\"](dtheta);\n        }\n        \"328\";\n        var \u03c1\u03c3_Iter5 = range(len(dec));\n        \u03c1\u03c3_Iter5 = ((typeof \u03c1\u03c3_Iter5[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter5 instanceof Map ? \u03c1\u03c3_Iter5.keys() : \u03c1\u03c3_Iter5) : Object.keys(\u03c1\u03c3_Iter5));\n        for (var \u03c1\u03c3_Index5 of \u03c1\u03c3_Iter5) {\n            i = \u03c1\u03c3_Index5;\n            \"329\";\n            \u03c1\u03c3_getitem(dec, i).visible = false;\n        }\n        \"330\";\n        var \u03c1\u03c3_Iter6 = range(len(az));\n        \u03c1\u03c3_Iter6 = ((typeof \u03c1\u03c3_Iter6[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter6 instanceof Map ? \u03c1\u03c3_Iter6.keys() : \u03c1\u03c3_Iter6) : Object.keys(\u03c1\u03c3_Iter6));\n        for (var \u03c1\u03c3_Index6 of \u03c1\u03c3_Iter6) {\n            i = \u03c1\u03c3_Index6;\n            \"331\";\n            \u03c1\u03c3_getitem(az, i).visible = false;\n        }\n    }\n    \"335\";\n    async function dec_az_to_cartesian() {\n        var dec_deg = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var az_deg = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var globe_radius = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? dec_az_to_cartesian.__defaults__.globe_radius : arguments[2];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"globe_radius\")){\n            globe_radius = \u03c1\u03c3_kwargs_obj.globe_radius;\n        }\n        var \u03c1\u03c3_ls, dec_rads, az_rads, x, y, z, vec_rot_x, vec_rot_y;\n        \"346\";\n        if (!((1[\"-u\"]()[\"*\"](90)[\"<=\"](dec_deg) && dec_deg[\"<=\"](90)))) {\n            \"347\";\n            throw new (await ValueError(\"Declination must be between -90 and 90 degrees.\"));\n            \"348\";\n        }\n        if (!((0[\"<=\"](az_deg) && az_deg[\"<=\"](360)))) {\n            \"349\";\n            throw new (await ValueError(\"Azimuth must be between 0 and 360 degrees.\"));\n            \"350\";\n        }\n        if (globe_radius[\"<\"](0)) {\n            \"351\";\n            throw new (await ValueError(\"Globe radius must be non-negative.\"));\n        }\n        \"354\";\n        dec_rads = (await radians(dec_deg));\n        \"355\";\n        az_rads = (await radians(az_deg));\n        \"358\";\n        x = globe_radius[\"*\"](cos(dec_rads))[\"*\"](sin(az_rads));\n        \"359\";\n        y = globe_radius[\"*\"](cos(dec_rads))[\"*\"](cos(az_rads));\n        \"360\";\n        z = globe_radius[\"*\"](sin(dec_rads));\n        \"363\";\n        vec_rot_x = (await rotate_around_x(vector(x, y, z), (await radians(1[\"-u\"]()[\"*\"](90)))));\n        \"364\";\n        vec_rot_y = (await rotate_around_y(vec_rot_x, pi));\n        \"366\";\n        return vec_rot_y;\n        \"369\";\n    };\n    if (!dec_az_to_cartesian.__annotations__) Object.defineProperties(dec_az_to_cartesian, {\n        __annotations__ : {value: {dec_deg: float, az_deg: float, globe_radius: float}},\n        __defaults__ : {value: {globe_radius:1}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"dec_deg\", \"az_deg\", \"globe_radius\"]},\n        __module__ : {value: null}\n    });\n\n    if (isLandscape) {\n        \"371\";\n        upbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"<svg width='14' height='14'><polygon points='7,2 2,11 12,11' fill='orange'\/><\\\/svg>\", bind: rotate_up, color: color.orange, background: color.black})]);\n        \"372\";\n        scene.append_to_caption(\" \");\n        \"373\";\n        dnbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"<svg width='14' height='14'><polygon points='2,3 12,3 7,12' fill='orange'\/><\/svg>\", bind: rotate_down, color: color.orange, background: color.black})]);\n        \"374\";\n        scene.append_to_caption(\" \");\n        \"375\";\n        lfbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"<svg width='14' height='14'><polygon points='11,2 3,7 11,12' fill='orange'\/><\/svg>\", bind: rotate_left, color: color.orange, background: color.black})]);\n        \"376\";\n        scene.append_to_caption(\" \");\n        \"377\";\n        rtbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"<svg width='14' height='14'><polygon points='3,2 11,7 3,12' fill='orange'\/><\/svg>\", bind: rotate_right, color: color.orange, background: color.black})]);\n        \"378\";\n        scene.append_to_caption(\" \");\n        \"379\";\n        zinbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"\uff0b\", bind: zoom_in, color: color.orange, background: color.black})]);\n        \"380\";\n        scene.append_to_caption(\" \");\n        \"381\";\n        zoutbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"\uff0d\", bind: zoom_out, color: color.orange, background: color.black})]);\n        \"382\";\n        scene.append_to_caption(\" \");\n        \"383\";\n        \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"A +\", bind: bigger, color: color.orange, background: color.black})]);\n        \"384\";\n        scene.append_to_caption(\" \");\n        \"385\";\n        \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"A \u2013\", bind: smaller, color: color.orange, background: color.black})]);\n        \"386\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"387\";\n        rsbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"Reset\", bind: reset_page, color: color.orange, background: color.black})]);\n        \"388\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"390\";\n        lmcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: lm_cb_handler, text: \"Land Mass\", checked: true})]);\n        \"391\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"392\";\n        llcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ll_cb_handler, text: \"Latitudes \/ Longitudes\", checked: false})]);\n        \"393\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"394\";\n        axcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ax_cb_handler, text: \"Axis\", checked: false})]);\n        \"395\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"396\";\n        eqcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: eq_cb_handler, text: \"Equator\", checked: true})]);\n        \"397\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"398\";\n        pmcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: pm_cb_handler, text: \"Prime Meridian\", checked: true})]);\n        \"399\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"400\";\n        cpcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: cp_cb_handler, text: \"Center Point\", checked: true})]);\n        \"401\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"402\";\n        pncb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: p_cb_handler, text: \"Earth Poles\", checked: true})]);\n        \"403\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"404\";\n        cscb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: cs_cb_handler, text: \"Celestial Sphere\", checked: false})]);\n        \"405\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"406\";\n        eccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ec_cb_handler, text: \"Ecliptic\", checked: false})]);\n        \"407\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"408\";\n        eqncb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: eqn_cb_handler, text: \"Equinoxes\", checked: false})]);\n        \"409\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"410\";\n        csaphcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: csaph_cb_handler, text: \"Assumed Celestial Horizon\", checked: false})]);\n        \"411\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"412\";\n        csobhcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: csobh_cb_handler, text: \"Observer Apparent Celestial Horizon\", checked: false})]);\n        \"413\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"414\";\n        apcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ap_cb_handler, text: \"Assumed Position AP\", checked: true})]);\n        \"415\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"416\";\n        drcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: dr_cb_handler, text: \"Dead Reckoning Lat \/ Lon\", checked: false})]);\n        \"417\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"418\";\n        apccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: apc_cb_handler, text: \"Assumed Equal Altitudes\", checked: false})]);\n        \"419\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"420\";\n        aphcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: aph_cb_handler, text: \"Assumed Apparent Horizon\", checked: false})]);\n        \"421\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"422\";\n        aphccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: aphc_cb_handler, text: \"Assumed Computed Height Hc\", checked: false})]);\n        \"423\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"424\";\n        zncbcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: zn_cb_handler, text: \"Azimuth Zn Curve\", checked: true})]);\n        \"425\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"426\";\n        znpcbcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: znp_cb_handler, text: \"Azimuth Zn Plane\", checked: false})]);\n        \"427\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"428\";\n        obcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ob_cb_handler, text: \"Observer Z\", checked: false})]);\n        \"429\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"430\";\n        obccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obc_cb_handler, text: \"Observer Equal Altitudes\", checked: false})]);\n        \"431\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"432\";\n        obhcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obh_cb_handler, text: \"Observer Visual Horizon\", checked: false})]);\n        \"433\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"434\";\n        obhscb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obhs_cb_handler, text: \"Observer Sextant Height Hs\", checked: false})]);\n        \"435\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"436\";\n        obhocb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obho_cb_handler, text: \"Observer Observed Height Ho\", checked: false})]);\n        \"437\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"438\";\n        obaphcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obaph_cb_handler, text: \"Observer Apparent Horizon\", checked: false})]);\n        \"439\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"440\";\n        obaphocb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obapho_cb_handler, text: \"Observer Apparent Ho\", checked: false})]);\n        \"441\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"442\";\n        gpcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: gp_cb_handler, text: \"Geographical Position GP\", checked: true})]);\n        \"443\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"444\";\n        gpghacb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: gpgha_cb_handler, text: \"GP Greenwich Hour Angle\", checked: false})]);\n        \"445\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"446\";\n        gpdeccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: gpdec_cb_handler, text: \"GP Declination\", checked: false})]);\n        \"447\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"448\";\n        pdcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: pd_cb_handler, text: \"Polar Distance\", checked: true})]);\n        \"449\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"450\";\n        clcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: cl_cb_handler, text: \"Colatitude\", checked: true})]);\n        \"451\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"452\";\n        lhacb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: lha_cb_handler, text: \"Local Hour Angle\", checked: false})]);\n        \"453\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"454\";\n        lopcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: lop_cb_handler, text: \"Line of Position\", checked: true})]);\n        \"455\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"456\";\n        avcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: av_cb_handler, text: \"A-Value Intercept\", checked: false})]);\n        \"457\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"458\";\n        scene.append_to_caption(\"<p><\/p>\");\n        \"461\";\n        earth.opacity = .5;\n        \"462\";\n        transp_label = \u03c1\u03c3_interpolate_kwargs.call(this, wtext, [\u03c1\u03c3_desugar_kwargs({text: \"Opacity: \"[\"+\"](\u03c1\u03c3_str.format(\"{:.2f}\", earth.opacity))[\"+\"](\"\")})]);\n        \"463\";\n        transp_slider = \u03c1\u03c3_interpolate_kwargs.call(this, slider, [\u03c1\u03c3_desugar_kwargs({min: 0, max: 1, value: earth.opacity, step: .01, bind: update_transparency, length: 350})]);\n        \"468\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"469\";\n        ssbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({bind: ss_bn_handler, text: \"Snapshot\", background: color.gray(.5), color: color.white})]);\n        \"470\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"471\";\n        mpbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({bind: mp_bn_handler, text: \"Main Page\", background: color.gray(.5), color: color.white})]);\n        \"472\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"473\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"475\";\n    } else {\n        \"477\";\n        upbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"<svg width='14' height='14'><polygon points='7,2 2,11 12,11' fill='orange'\/><\/svg>\", bind: rotate_up, color: color.orange, background: color.black})]);\n        \"478\";\n        scene.append_to_caption(\" \");\n        \"479\";\n        dnbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"<svg width='14' height='14'><polygon points='2,3 12,3 7,12' fill='orange'\/><\/svg>\", bind: rotate_down, color: color.orange, background: color.black})]);\n        \"480\";\n        scene.append_to_caption(\" \");\n        \"481\";\n        lfbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"<svg width='14' height='14'><polygon points='11,2 3,7 11,12' fill='orange'\/><\/svg>\", bind: rotate_left, color: color.orange, background: color.black})]);\n        \"482\";\n        scene.append_to_caption(\" \");\n        \"483\";\n        rtbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"<svg width='14' height='14'><polygon points='3,2 11,7 3,12' fill='orange'\/><\/svg>\", bind: rotate_right, color: color.orange, background: color.black})]);\n        \"484\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"485\";\n        zinbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"\uff0b\", bind: zoom_in, color: color.orange, background: color.black})]);\n        \"486\";\n        scene.append_to_caption(\" \");\n        \"487\";\n        zoutbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"\uff0d\", bind: zoom_out, color: color.orange, background: color.black})]);\n        \"488\";\n        scene.append_to_caption(\" \");\n        \"489\";\n        \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"A +\", bind: bigger, color: color.orange, background: color.black})]);\n        \"490\";\n        scene.append_to_caption(\" \");\n        \"491\";\n        \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"A \u2013\", bind: smaller, color: color.orange, background: color.black})]);\n        \"492\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"493\";\n        rsbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({text: \"Reset\", bind: reset_page, color: color.orange, background: color.black})]);\n        \"494\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"496\";\n        lmcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: lm_cb_handler, text: \"Land Mass\", checked: true})]);\n        \"497\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"498\";\n        llcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ll_cb_handler, text: \"Latitudes \/ Longitudes\", checked: false})]);\n        \"499\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"500\";\n        axcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ax_cb_handler, text: \"Axis\", checked: false})]);\n        \"501\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"502\";\n        eqcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: eq_cb_handler, text: \"Equator\", checked: true})]);\n        \"503\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"504\";\n        pmcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: pm_cb_handler, text: \"Prime Meridian\", checked: true})]);\n        \"505\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"506\";\n        cpcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: cp_cb_handler, text: \"Center Point\", checked: true})]);\n        \"507\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"508\";\n        pncb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: p_cb_handler, text: \"Earth Poles\", checked: true})]);\n        \"509\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"510\";\n        cscb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: cs_cb_handler, text: \"Celestial Sphere\", checked: false})]);\n        \"511\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"512\";\n        eccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ec_cb_handler, text: \"Ecliptic\", checked: false})]);\n        \"513\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"514\";\n        eqncb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: eqn_cb_handler, text: \"Equinoxes\", checked: false})]);\n        \"515\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"516\";\n        csaphcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: csaph_cb_handler, text: \"Assumed Celestial Horizon\", checked: false})]);\n        \"517\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"518\";\n        csobhcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: csobh_cb_handler, text: \"Observer Apparent Celestial Horizon\", checked: false})]);\n        \"519\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"520\";\n        apcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ap_cb_handler, text: \"Assumed Position AP\", checked: true})]);\n        \"521\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"522\";\n        drcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: dr_cb_handler, text: \"Dead Reckoning Lat \/ Lon\", checked: false})]);\n        \"523\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"524\";\n        apccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: apc_cb_handler, text: \"Assumed Equal Altitudes\", checked: false})]);\n        \"525\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"526\";\n        aphcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: aph_cb_handler, text: \"Assumed Horizon\", checked: false})]);\n        \"527\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"528\";\n        aphccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: aphc_cb_handler, text: \"Assumed Computed Height Hc\", checked: false})]);\n        \"529\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"530\";\n        zncb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: zn_cb_handler, text: \"Azimuth Zn Curve\", checked: true})]);\n        \"531\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"532\";\n        znpcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: znp_cb_handler, text: \"Azimuth Zn Plane\", checked: false})]);\n        \"533\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"534\";\n        obcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: ob_cb_handler, text: \"Observer Z\", checked: false})]);\n        \"535\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"536\";\n        obccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obc_cb_handler, text: \"Observer Equal Altitudes\", checked: false})]);\n        \"537\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"538\";\n        obhcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obh_cb_handler, text: \"Observer Visual Horizon\", checked: false})]);\n        \"539\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"540\";\n        obhscb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obhs_cb_handler, text: \"Observer Sextant Height Hs\", checked: false})]);\n        \"541\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"542\";\n        obhocb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obho_cb_handler, text: \"Observer Observed Height Ho\", checked: false})]);\n        \"543\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"544\";\n        obaphcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obaph_cb_handler, text: \"Observer Apparent Horizon\", checked: false})]);\n        \"545\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"546\";\n        obaphocb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: obapho_cb_handler, text: \"Observer Apparent Ho\", checked: false})]);\n        \"547\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"548\";\n        gpcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: gp_cb_handler, text: \"Geographical Position GP\", checked: true})]);\n        \"549\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"550\";\n        gpghacb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: gpgha_cb_handler, text: \"GP Greenwich Hour Angle\", checked: false})]);\n        \"551\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"552\";\n        gpdeccb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: gpdec_cb_handler, text: \"GP Declination\", checked: false})]);\n        \"553\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"554\";\n        pdcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: pd_cb_handler, text: \"Polar Distance\", checked: true})]);\n        \"555\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"556\";\n        clcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: cl_cb_handler, text: \"Colatitude\", checked: true})]);\n        \"557\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"558\";\n        lhacb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: lha_cb_handler, text: \"Local Hour Angle\", checked: false})]);\n        \"559\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"560\";\n        lopcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: lop_cb_handler, text: \"Line of Position\", checked: true})]);\n        \"561\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"562\";\n        avcb = \u03c1\u03c3_interpolate_kwargs.call(this, checkbox, [\u03c1\u03c3_desugar_kwargs({bind: av_cb_handler, text: \"A-Value Intercept\", checked: false})]);\n        \"563\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"564\";\n        scene.append_to_caption(\"<p><\/p>\");\n        \"567\";\n        earth.opacity = .5;\n        \"568\";\n        transp_label = \u03c1\u03c3_interpolate_kwargs.call(this, wtext, [\u03c1\u03c3_desugar_kwargs({text: \"Opacity: \"[\"+\"](\u03c1\u03c3_str.format(\"{:.2f}\", earth.opacity))[\"+\"](\"\")})]);\n        \"569\";\n        transp_slider = \u03c1\u03c3_interpolate_kwargs.call(this, slider, [\u03c1\u03c3_desugar_kwargs({min: 0, max: 1, value: earth.opacity, step: .01, bind: update_transparency, length: 225})]);\n        \"574\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"575\";\n        ssbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({bind: ss_bn_handler, text: \"Snapshot \", background: color.gray(.5), color: color.white})]);\n        \"576\";\n        scene.append_to_caption(\"\\n\\n\");\n        \"577\";\n        mpbn = \u03c1\u03c3_interpolate_kwargs.call(this, button, [\u03c1\u03c3_desugar_kwargs({bind: mp_bn_handler, text: \"Main Page\", background: color.gray(.5), color: color.white})]);\n        \"578\";\n        scene.append_to_caption(\"\\n\\n\");\n    }\n    \"582\";\n    camera_rad = mag(scene.camera.pos);\n    \"584\";\n    async function rotate_left(evt) {\n        \"585\";\n        scene.camera.pos = \u03c1\u03c3_interpolate_kwargs.call(this, rotate, [scene.camera.pos].concat([\u03c1\u03c3_desugar_kwargs({angle: (await radians(1)), axis: vector(0, 1, 0)})]));\n        \"587\";\n        scene.camera.pos = norm(scene.camera.pos)[\"*\"](camera_rad);\n        \"588\";\n        scene.camera.axis = 1[\"-u\"]()[\"*\"](scene.camera.pos);\n    };\n    if (!rotate_left.__argnames__) Object.defineProperties(rotate_left, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"590\";\n    async function rotate_right(evt) {\n        \"591\";\n        scene.camera.pos = \u03c1\u03c3_interpolate_kwargs.call(this, rotate, [scene.camera.pos].concat([\u03c1\u03c3_desugar_kwargs({angle: 1[\"-u\"]()[\"*\"]((await radians(1))), axis: vector(0, 1, 0)})]));\n        \"592\";\n        scene.camera.pos = norm(scene.camera.pos)[\"*\"](camera_rad);\n        \"593\";\n        scene.camera.axis = 1[\"-u\"]()[\"*\"](scene.camera.pos);\n    };\n    if (!rotate_right.__argnames__) Object.defineProperties(rotate_right, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"595\";\n    async function rotate_down(evt) {\n        var \u03c1\u03c3_ls, right;\n        \"596\";\n        right = cross(scene.camera.pos, vector(0, 1, 0));\n        \"597\";\n        scene.camera.pos = \u03c1\u03c3_interpolate_kwargs.call(this, rotate, [scene.camera.pos].concat([\u03c1\u03c3_desugar_kwargs({angle: (await radians(1)), axis: right})]));\n        \"598\";\n        scene.camera.pos = norm(scene.camera.pos)[\"*\"](camera_rad);\n        \"599\";\n        scene.camera.axis = 1[\"-u\"]()[\"*\"](scene.camera.pos);\n    };\n    if (!rotate_down.__argnames__) Object.defineProperties(rotate_down, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"601\";\n    async function rotate_up(evt) {\n        var \u03c1\u03c3_ls, right;\n        \"602\";\n        right = cross(scene.camera.pos, vector(0, 1, 0));\n        \"603\";\n        scene.camera.pos = \u03c1\u03c3_interpolate_kwargs.call(this, rotate, [scene.camera.pos].concat([\u03c1\u03c3_desugar_kwargs({angle: 1[\"-u\"]()[\"*\"]((await radians(1))), axis: right})]));\n        \"604\";\n        scene.camera.pos = norm(scene.camera.pos)[\"*\"](camera_rad);\n        \"605\";\n        scene.camera.axis = 1[\"-u\"]()[\"*\"](scene.camera.pos);\n    };\n    if (!rotate_up.__argnames__) Object.defineProperties(rotate_up, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"609\";\n    async function zoom_in(evt) {\n        \"610\";\n        \"611\";\n        scene.camera.pos = scene.camera.pos[\"*\"](.95);\n        \"612\";\n        camera_rad = mag(scene.camera.pos);\n    };\n    if (!zoom_in.__argnames__) Object.defineProperties(zoom_in, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"614\";\n    async function zoom_out(evt) {\n        \"615\";\n        \"616\";\n        scene.camera.pos = scene.camera.pos[\"*\"](1.05);\n        \"617\";\n        camera_rad = mag(scene.camera.pos);\n    };\n    if (!zoom_out.__argnames__) Object.defineProperties(zoom_out, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"620\";\n    async function reset_page(evt) {\n        \"621\";\n        window.location.reload();\n    };\n    if (!reset_page.__argnames__) Object.defineProperties(reset_page, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"624\";\n    async function bigger(evt) {\n        var \u03c1\u03c3_ls, L;\n        \"625\";\n        \"626\";\n        dev_txt_height=dev_txt_height[\"*\"](1.1);\n        \"627\";\n        var \u03c1\u03c3_Iter7 = all_text_labels;\n        \u03c1\u03c3_Iter7 = ((typeof \u03c1\u03c3_Iter7[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter7 instanceof Map ? \u03c1\u03c3_Iter7.keys() : \u03c1\u03c3_Iter7) : Object.keys(\u03c1\u03c3_Iter7));\n        for (var \u03c1\u03c3_Index7 of \u03c1\u03c3_Iter7) {\n            L = \u03c1\u03c3_Index7;\n            \"628\";\n            L.height = dev_txt_height;\n            \"629\";\n            L.length=L.length[\"*\"](1.1);\n        }\n    };\n    if (!bigger.__argnames__) Object.defineProperties(bigger, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"631\";\n    async function smaller(evt) {\n        var \u03c1\u03c3_ls, ratio_length, L;\n        \"632\";\n        \"633\";\n        dev_txt_height=dev_txt_height[\"\/\"](1.1);\n        \"634\";\n        var \u03c1\u03c3_Iter8 = all_text_labels;\n        \u03c1\u03c3_Iter8 = ((typeof \u03c1\u03c3_Iter8[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter8 instanceof Map ? \u03c1\u03c3_Iter8.keys() : \u03c1\u03c3_Iter8) : Object.keys(\u03c1\u03c3_Iter8));\n        for (var \u03c1\u03c3_Index8 of \u03c1\u03c3_Iter8) {\n            L = \u03c1\u03c3_Index8;\n            \"635\";\n            ratio_length = L.height[\"\/\"](L.length);\n            \"636\";\n            L.height = dev_txt_height;\n            \"637\";\n            L.length=L.length[\"\/\"](1.1);\n        }\n    };\n    if (!smaller.__argnames__) Object.defineProperties(smaller, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"640\";\n    async function lm_cb_handler(evt) {\n        \"641\";\n        if (evt.checked) {\n            \"642\";\n            earth.texture = textures.earth;\n            \"643\";\n        } else {\n            \"644\";\n            earth.texture = null;\n        }\n    };\n    if (!lm_cb_handler.__argnames__) Object.defineProperties(lm_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"647\";\n    async function ll_cb_handler(evt) {\n        var \u03c1\u03c3_ls, i;\n        \"648\";\n        if (evt.checked) {\n            \"649\";\n            var \u03c1\u03c3_Iter9 = range(len(lats));\n            \u03c1\u03c3_Iter9 = ((typeof \u03c1\u03c3_Iter9[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter9 instanceof Map ? \u03c1\u03c3_Iter9.keys() : \u03c1\u03c3_Iter9) : Object.keys(\u03c1\u03c3_Iter9));\n            for (var \u03c1\u03c3_Index9 of \u03c1\u03c3_Iter9) {\n                i = \u03c1\u03c3_Index9;\n                \"650\";\n                \u03c1\u03c3_getitem(lats, i).visible = true;\n            }\n            \"651\";\n            var \u03c1\u03c3_Iter10 = range(len(lons));\n            \u03c1\u03c3_Iter10 = ((typeof \u03c1\u03c3_Iter10[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter10 instanceof Map ? \u03c1\u03c3_Iter10.keys() : \u03c1\u03c3_Iter10) : Object.keys(\u03c1\u03c3_Iter10));\n            for (var \u03c1\u03c3_Index10 of \u03c1\u03c3_Iter10) {\n                i = \u03c1\u03c3_Index10;\n                \"652\";\n                \u03c1\u03c3_getitem(lons, i).visible = true;\n                \"653\";\n            }\n        } else {\n            \"654\";\n            var \u03c1\u03c3_Iter11 = range(len(lats));\n            \u03c1\u03c3_Iter11 = ((typeof \u03c1\u03c3_Iter11[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter11 instanceof Map ? \u03c1\u03c3_Iter11.keys() : \u03c1\u03c3_Iter11) : Object.keys(\u03c1\u03c3_Iter11));\n            for (var \u03c1\u03c3_Index11 of \u03c1\u03c3_Iter11) {\n                i = \u03c1\u03c3_Index11;\n                \"655\";\n                \u03c1\u03c3_getitem(lats, i).visible = false;\n            }\n            \"656\";\n            var \u03c1\u03c3_Iter12 = range(len(lons));\n            \u03c1\u03c3_Iter12 = ((typeof \u03c1\u03c3_Iter12[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter12 instanceof Map ? \u03c1\u03c3_Iter12.keys() : \u03c1\u03c3_Iter12) : Object.keys(\u03c1\u03c3_Iter12));\n            for (var \u03c1\u03c3_Index12 of \u03c1\u03c3_Iter12) {\n                i = \u03c1\u03c3_Index12;\n                \"657\";\n                \u03c1\u03c3_getitem(lons, i).visible = false;\n            }\n        }\n    };\n    if (!ll_cb_handler.__argnames__) Object.defineProperties(ll_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"660\";\n    async function eq_cb_handler(evt) {\n        \"661\";\n        if (evt.checked) {\n            \"662\";\n            eq.visible = true;\n            \"663\";\n            eq_label.visible = true;\n            \"664\";\n        } else {\n            \"665\";\n            eq.visible = false;\n            \"666\";\n            eq_label.visible = false;\n        }\n    };\n    if (!eq_cb_handler.__argnames__) Object.defineProperties(eq_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"669\";\n    async function ax_cb_handler(evt) {\n        \"670\";\n        if (evt.checked) {\n            \"671\";\n            axis.visible = true;\n            \"672\";\n        } else {\n            \"673\";\n            axis.visible = false;\n        }\n    };\n    if (!ax_cb_handler.__argnames__) Object.defineProperties(ax_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"676\";\n    async function pm_cb_handler(evt) {\n        \"677\";\n        if (evt.checked) {\n            \"678\";\n            p_curve.visible = true;\n            \"679\";\n            pm_label.visible = true;\n            \"680\";\n        } else {\n            \"681\";\n            p_curve.visible = false;\n            \"682\";\n            pm_label.visible = false;\n        }\n    };\n    if (!pm_cb_handler.__argnames__) Object.defineProperties(pm_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"685\";\n    async function cs_cb_handler(evt) {\n        var \u03c1\u03c3_ls, i;\n        \"686\";\n        if (evt.checked) {\n            \"687\";\n            cel_equator.visible = true;\n            \"688\";\n            cel_equator_lbl.visible = true;\n            \"689\";\n            var \u03c1\u03c3_Iter13 = range(len(dec));\n            \u03c1\u03c3_Iter13 = ((typeof \u03c1\u03c3_Iter13[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter13 instanceof Map ? \u03c1\u03c3_Iter13.keys() : \u03c1\u03c3_Iter13) : Object.keys(\u03c1\u03c3_Iter13));\n            for (var \u03c1\u03c3_Index13 of \u03c1\u03c3_Iter13) {\n                i = \u03c1\u03c3_Index13;\n                \"690\";\n                \u03c1\u03c3_getitem(dec, i).visible = true;\n            }\n            \"691\";\n            var \u03c1\u03c3_Iter14 = range(len(az));\n            \u03c1\u03c3_Iter14 = ((typeof \u03c1\u03c3_Iter14[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter14 instanceof Map ? \u03c1\u03c3_Iter14.keys() : \u03c1\u03c3_Iter14) : Object.keys(\u03c1\u03c3_Iter14));\n            for (var \u03c1\u03c3_Index14 of \u03c1\u03c3_Iter14) {\n                i = \u03c1\u03c3_Index14;\n                \"692\";\n                \u03c1\u03c3_getitem(az, i).visible = true;\n                \"694\";\n            }\n        } else {\n            \"695\";\n            var \u03c1\u03c3_Iter15 = range(len(dec));\n            \u03c1\u03c3_Iter15 = ((typeof \u03c1\u03c3_Iter15[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter15 instanceof Map ? \u03c1\u03c3_Iter15.keys() : \u03c1\u03c3_Iter15) : Object.keys(\u03c1\u03c3_Iter15));\n            for (var \u03c1\u03c3_Index15 of \u03c1\u03c3_Iter15) {\n                i = \u03c1\u03c3_Index15;\n                \"696\";\n                \u03c1\u03c3_getitem(dec, i).visible = false;\n            }\n            \"697\";\n            var \u03c1\u03c3_Iter16 = range(len(az));\n            \u03c1\u03c3_Iter16 = ((typeof \u03c1\u03c3_Iter16[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter16 instanceof Map ? \u03c1\u03c3_Iter16.keys() : \u03c1\u03c3_Iter16) : Object.keys(\u03c1\u03c3_Iter16));\n            for (var \u03c1\u03c3_Index16 of \u03c1\u03c3_Iter16) {\n                i = \u03c1\u03c3_Index16;\n                \"698\";\n                \u03c1\u03c3_getitem(az, i).visible = false;\n                \"701\";\n            }\n            if ((eqncb.checked === false || typeof eqncb.checked === \"object\" && \u03c1\u03c3_equals(eqncb.checked, false))) {\n                \"703\";\n                cel_equator.visible = false;\n                \"704\";\n                cel_equator_lbl.visible = false;\n            }\n        }\n    };\n    if (!cs_cb_handler.__argnames__) Object.defineProperties(cs_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"707\";\n    async function csaph_cb_handler(evt) {\n        \"708\";\n        if (evt.checked) {\n            \"709\";\n            ap_cel_horiz_curve.visible = true;\n            \"710\";\n            ap_cel_horiz_label.visible = true;\n            \"711\";\n        } else {\n            \"712\";\n            ap_cel_horiz_curve.visible = false;\n            \"713\";\n            ap_cel_horiz_label.visible = false;\n        }\n    };\n    if (!csaph_cb_handler.__argnames__) Object.defineProperties(csaph_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"716\";\n    async function csobh_cb_handler(evt) {\n        \"717\";\n        if (evt.checked) {\n            \"718\";\n            ob_cel_horiz_curve.visible = true;\n            \"719\";\n            ob_cel_horiz_label.visible = true;\n            \"720\";\n            zenith_marker.visible = true;\n            \"721\";\n            zenith_line.visible = true;\n            \"722\";\n            zenith_label.visible = true;\n            \"723\";\n            ob_pt.visible = true;\n            \"724\";\n            OB_label.visible = true;\n            \"725\";\n        } else {\n            \"726\";\n            ob_cel_horiz_curve.visible = false;\n            \"727\";\n            ob_cel_horiz_label.visible = false;\n            \"728\";\n            zenith_marker.visible = false;\n            \"729\";\n            zenith_line.visible = false;\n            \"730\";\n            zenith_label.visible = false;\n            \"731\";\n            if ((obcb.checked !== true && (typeof obcb.checked !== \"object\" || \u03c1\u03c3_not_equals(obcb.checked, true)))) {\n                \"732\";\n                ob_pt.visible = false;\n                \"733\";\n                OB_label.visible = false;\n            }\n        }\n    };\n    if (!csobh_cb_handler.__argnames__) Object.defineProperties(csobh_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"736\";\n    async function apc_cb_handler(evt) {\n        \"737\";\n        if (evt.checked) {\n            \"738\";\n            ap_circ.visible = true;\n            \"739\";\n            ap_circ_lbl.visible = true;\n            \"740\";\n        } else {\n            \"741\";\n            ap_circ.visible = false;\n            \"742\";\n            ap_circ_lbl.visible = false;\n        }\n    };\n    if (!apc_cb_handler.__argnames__) Object.defineProperties(apc_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"745\";\n    async function obc_cb_handler(evt) {\n        \"746\";\n        if (evt.checked) {\n            \"747\";\n            ob_circ.visible = true;\n            \"748\";\n            ob_circ_lbl.visible = true;\n            \"749\";\n        } else {\n            \"750\";\n            ob_circ.visible = false;\n            \"751\";\n            ob_circ_lbl.visible = false;\n        }\n    };\n    if (!obc_cb_handler.__argnames__) Object.defineProperties(obc_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"754\";\n    async function aph_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"755\";\n        if (evt.checked) {\n            \"756\";\n            ap_horiz.visible = true;\n            \"757\";\n            ap_horiz_label.visible = true;\n            \"758\";\n            ap_n_card.visible = true;\n            \"759\";\n            ap_n_lbl.visible = true;\n            \"760\";\n            ap_e_card.visible = true;\n            \"761\";\n            ap_e_lbl.visible = true;\n            \"762\";\n            ap_w_card.visible = true;\n            \"763\";\n            ap_w_lbl.visible = true;\n            \"764\";\n            ap_s_card.visible = true;\n            \"765\";\n            ap_s_lbl.visible = true;\n            \"766\";\n            var \u03c1\u03c3_Iter17 = ap_horizon_triangles;\n            \u03c1\u03c3_Iter17 = ((typeof \u03c1\u03c3_Iter17[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter17 instanceof Map ? \u03c1\u03c3_Iter17.keys() : \u03c1\u03c3_Iter17) : Object.keys(\u03c1\u03c3_Iter17));\n            for (var \u03c1\u03c3_Index17 of \u03c1\u03c3_Iter17) {\n                tri = \u03c1\u03c3_Index17;\n                \"767\";\n                tri.visible = true;\n                \"768\";\n            }\n        } else {\n            \"769\";\n            ap_horiz.visible = false;\n            \"770\";\n            ap_horiz_label.visible = false;\n            \"771\";\n            ap_n_card.visible = false;\n            \"772\";\n            ap_n_lbl.visible = false;\n            \"773\";\n            ap_e_card.visible = false;\n            \"774\";\n            ap_e_lbl.visible = false;\n            \"775\";\n            ap_w_card.visible = false;\n            \"776\";\n            ap_w_lbl.visible = false;\n            \"777\";\n            ap_s_card.visible = false;\n            \"778\";\n            ap_s_lbl.visible = false;\n            \"779\";\n            var \u03c1\u03c3_Iter18 = ap_horizon_triangles;\n            \u03c1\u03c3_Iter18 = ((typeof \u03c1\u03c3_Iter18[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter18 instanceof Map ? \u03c1\u03c3_Iter18.keys() : \u03c1\u03c3_Iter18) : Object.keys(\u03c1\u03c3_Iter18));\n            for (var \u03c1\u03c3_Index18 of \u03c1\u03c3_Iter18) {\n                tri = \u03c1\u03c3_Index18;\n                \"780\";\n                tri.visible = false;\n            }\n        }\n    };\n    if (!aph_cb_handler.__argnames__) Object.defineProperties(aph_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"783\";\n    async function obh_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"784\";\n        if (evt.checked) {\n            \"785\";\n            ob_horiz.visible = true;\n            \"786\";\n            obs_horiz_label.visible = true;\n            \"787\";\n            var \u03c1\u03c3_Iter19 = ob_horizon_triangles;\n            \u03c1\u03c3_Iter19 = ((typeof \u03c1\u03c3_Iter19[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter19 instanceof Map ? \u03c1\u03c3_Iter19.keys() : \u03c1\u03c3_Iter19) : Object.keys(\u03c1\u03c3_Iter19));\n            for (var \u03c1\u03c3_Index19 of \u03c1\u03c3_Iter19) {\n                tri = \u03c1\u03c3_Index19;\n                \"788\";\n                tri.visible = true;\n                \"789\";\n            }\n        } else {\n            \"790\";\n            ob_horiz.visible = false;\n            \"791\";\n            obs_horiz_label.visible = false;\n            \"792\";\n            var \u03c1\u03c3_Iter20 = ob_horizon_triangles;\n            \u03c1\u03c3_Iter20 = ((typeof \u03c1\u03c3_Iter20[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter20 instanceof Map ? \u03c1\u03c3_Iter20.keys() : \u03c1\u03c3_Iter20) : Object.keys(\u03c1\u03c3_Iter20));\n            for (var \u03c1\u03c3_Index20 of \u03c1\u03c3_Iter20) {\n                tri = \u03c1\u03c3_Index20;\n                \"793\";\n                tri.visible = false;\n            }\n        }\n    };\n    if (!obh_cb_handler.__argnames__) Object.defineProperties(obh_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"796\";\n    async function obaph_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"797\";\n        if (evt.checked) {\n            \"798\";\n            ob_ap_horiz.visible = true;\n            \"799\";\n            ob_ap_horiz_label.visible = true;\n            \"800\";\n            ob_n_card.visible = true;\n            \"801\";\n            ob_n_lbl.visible = true;\n            \"802\";\n            ob_e_card.visible = true;\n            \"803\";\n            ob_e_lbl.visible = true;\n            \"804\";\n            ob_w_card.visible = true;\n            \"805\";\n            ob_w_lbl.visible = true;\n            \"806\";\n            ob_s_card.visible = true;\n            \"807\";\n            ob_s_lbl.visible = true;\n            \"808\";\n            var \u03c1\u03c3_Iter21 = ob_ap_horiz_triangles;\n            \u03c1\u03c3_Iter21 = ((typeof \u03c1\u03c3_Iter21[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter21 instanceof Map ? \u03c1\u03c3_Iter21.keys() : \u03c1\u03c3_Iter21) : Object.keys(\u03c1\u03c3_Iter21));\n            for (var \u03c1\u03c3_Index21 of \u03c1\u03c3_Iter21) {\n                tri = \u03c1\u03c3_Index21;\n                \"809\";\n                tri.visible = true;\n                \"810\";\n            }\n        } else {\n            \"811\";\n            ob_ap_horiz.visible = false;\n            \"812\";\n            ob_ap_horiz_label.visible = false;\n            \"813\";\n            ob_n_card.visible = false;\n            \"814\";\n            ob_n_lbl.visible = false;\n            \"815\";\n            ob_e_card.visible = false;\n            \"816\";\n            ob_e_lbl.visible = false;\n            \"817\";\n            ob_w_card.visible = false;\n            \"818\";\n            ob_w_lbl.visible = false;\n            \"819\";\n            ob_s_card.visible = false;\n            \"820\";\n            ob_s_lbl.visible = false;\n            \"821\";\n            var \u03c1\u03c3_Iter22 = ob_ap_horiz_triangles;\n            \u03c1\u03c3_Iter22 = ((typeof \u03c1\u03c3_Iter22[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter22 instanceof Map ? \u03c1\u03c3_Iter22.keys() : \u03c1\u03c3_Iter22) : Object.keys(\u03c1\u03c3_Iter22));\n            for (var \u03c1\u03c3_Index22 of \u03c1\u03c3_Iter22) {\n                tri = \u03c1\u03c3_Index22;\n                \"822\";\n                tri.visible = false;\n            }\n        }\n    };\n    if (!obaph_cb_handler.__argnames__) Object.defineProperties(obaph_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"825\";\n    async function obapho_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"826\";\n        if (evt.checked) {\n            \"827\";\n            ho_ap_ho_line.visible = true;\n            \"828\";\n            var \u03c1\u03c3_Iter23 = ob_ap_sector_tris;\n            \u03c1\u03c3_Iter23 = ((typeof \u03c1\u03c3_Iter23[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter23 instanceof Map ? \u03c1\u03c3_Iter23.keys() : \u03c1\u03c3_Iter23) : Object.keys(\u03c1\u03c3_Iter23));\n            for (var \u03c1\u03c3_Index23 of \u03c1\u03c3_Iter23) {\n                tri = \u03c1\u03c3_Index23;\n                \"829\";\n                tri.visible = true;\n            }\n            \"830\";\n            ob_ap_alt_line.visible = true;\n            \"831\";\n            ob_ap_sect_label.visible = true;\n            \"832\";\n        } else {\n            \"833\";\n            ho_ap_ho_line.visible = false;\n            \"834\";\n            var \u03c1\u03c3_Iter24 = ob_ap_sector_tris;\n            \u03c1\u03c3_Iter24 = ((typeof \u03c1\u03c3_Iter24[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter24 instanceof Map ? \u03c1\u03c3_Iter24.keys() : \u03c1\u03c3_Iter24) : Object.keys(\u03c1\u03c3_Iter24));\n            for (var \u03c1\u03c3_Index24 of \u03c1\u03c3_Iter24) {\n                tri = \u03c1\u03c3_Index24;\n                \"835\";\n                tri.visible = false;\n            }\n            \"836\";\n            ob_ap_alt_line.visible = false;\n            \"837\";\n            ob_ap_sect_label.visible = false;\n        }\n    };\n    if (!obapho_cb_handler.__argnames__) Object.defineProperties(obapho_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"840\";\n    async function obho_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"841\";\n        if (evt.checked) {\n            \"842\";\n            Ho_label.visible = true;\n            \"843\";\n            ho_line.visible = true;\n            \"844\";\n            var \u03c1\u03c3_Iter25 = Ho_sector_tris;\n            \u03c1\u03c3_Iter25 = ((typeof \u03c1\u03c3_Iter25[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter25 instanceof Map ? \u03c1\u03c3_Iter25.keys() : \u03c1\u03c3_Iter25) : Object.keys(\u03c1\u03c3_Iter25));\n            for (var \u03c1\u03c3_Index25 of \u03c1\u03c3_Iter25) {\n                tri = \u03c1\u03c3_Index25;\n                \"845\";\n                tri.visible = true;\n                \"846\";\n            }\n        } else {\n            \"847\";\n            Ho_label.visible = false;\n            \"848\";\n            ho_line.visible = false;\n            \"849\";\n            var \u03c1\u03c3_Iter26 = Ho_sector_tris;\n            \u03c1\u03c3_Iter26 = ((typeof \u03c1\u03c3_Iter26[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter26 instanceof Map ? \u03c1\u03c3_Iter26.keys() : \u03c1\u03c3_Iter26) : Object.keys(\u03c1\u03c3_Iter26));\n            for (var \u03c1\u03c3_Index26 of \u03c1\u03c3_Iter26) {\n                tri = \u03c1\u03c3_Index26;\n                \"850\";\n                tri.visible = false;\n            }\n        }\n    };\n    if (!obho_cb_handler.__argnames__) Object.defineProperties(obho_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"853\";\n    async function obhs_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"854\";\n        if (evt.checked) {\n            \"855\";\n            Hs_label.visible = true;\n            \"856\";\n            hs_line.visible = true;\n            \"857\";\n            var \u03c1\u03c3_Iter27 = Hs_sector_tris;\n            \u03c1\u03c3_Iter27 = ((typeof \u03c1\u03c3_Iter27[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter27 instanceof Map ? \u03c1\u03c3_Iter27.keys() : \u03c1\u03c3_Iter27) : Object.keys(\u03c1\u03c3_Iter27));\n            for (var \u03c1\u03c3_Index27 of \u03c1\u03c3_Iter27) {\n                tri = \u03c1\u03c3_Index27;\n                \"858\";\n                tri.visible = true;\n                \"859\";\n            }\n        } else {\n            \"860\";\n            Hs_label.visible = false;\n            \"861\";\n            hs_line.visible = false;\n            \"862\";\n            var \u03c1\u03c3_Iter28 = Hs_sector_tris;\n            \u03c1\u03c3_Iter28 = ((typeof \u03c1\u03c3_Iter28[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter28 instanceof Map ? \u03c1\u03c3_Iter28.keys() : \u03c1\u03c3_Iter28) : Object.keys(\u03c1\u03c3_Iter28));\n            for (var \u03c1\u03c3_Index28 of \u03c1\u03c3_Iter28) {\n                tri = \u03c1\u03c3_Index28;\n                \"863\";\n                tri.visible = false;\n            }\n        }\n    };\n    if (!obhs_cb_handler.__argnames__) Object.defineProperties(obhs_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"866\";\n    async function aphc_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"867\";\n        if (evt.checked) {\n            \"868\";\n            Hc_label.visible = true;\n            \"869\";\n            hc_line.visible = true;\n            \"870\";\n            alt_line.visible = true;\n            \"871\";\n            var \u03c1\u03c3_Iter29 = Hc_sector_tris;\n            \u03c1\u03c3_Iter29 = ((typeof \u03c1\u03c3_Iter29[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter29 instanceof Map ? \u03c1\u03c3_Iter29.keys() : \u03c1\u03c3_Iter29) : Object.keys(\u03c1\u03c3_Iter29));\n            for (var \u03c1\u03c3_Index29 of \u03c1\u03c3_Iter29) {\n                tri = \u03c1\u03c3_Index29;\n                \"872\";\n                tri.visible = true;\n                \"873\";\n            }\n        } else {\n            \"874\";\n            Hc_label.visible = false;\n            \"875\";\n            hc_line.visible = false;\n            \"876\";\n            alt_line.visible = false;\n            \"877\";\n            var \u03c1\u03c3_Iter30 = Hc_sector_tris;\n            \u03c1\u03c3_Iter30 = ((typeof \u03c1\u03c3_Iter30[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter30 instanceof Map ? \u03c1\u03c3_Iter30.keys() : \u03c1\u03c3_Iter30) : Object.keys(\u03c1\u03c3_Iter30));\n            for (var \u03c1\u03c3_Index30 of \u03c1\u03c3_Iter30) {\n                tri = \u03c1\u03c3_Index30;\n                \"878\";\n                tri.visible = false;\n            }\n        }\n    };\n    if (!aphc_cb_handler.__argnames__) Object.defineProperties(aphc_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"881\";\n    async function zn_cb_handler(evt) {\n        \"882\";\n        if (evt.checked) {\n            \"883\";\n            az_line.visible = true;\n            \"884\";\n            Zn_label.visible = true;\n            \"885\";\n        } else {\n            \"886\";\n            az_line.visible = false;\n            \"887\";\n            Zn_label.visible = false;\n        }\n    };\n    if (!zn_cb_handler.__argnames__) Object.defineProperties(zn_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"890\";\n    async function znp_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"891\";\n        if (evt.checked) {\n            \"892\";\n            var \u03c1\u03c3_Iter31 = zn_plane_tris;\n            \u03c1\u03c3_Iter31 = ((typeof \u03c1\u03c3_Iter31[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter31 instanceof Map ? \u03c1\u03c3_Iter31.keys() : \u03c1\u03c3_Iter31) : Object.keys(\u03c1\u03c3_Iter31));\n            for (var \u03c1\u03c3_Index31 of \u03c1\u03c3_Iter31) {\n                tri = \u03c1\u03c3_Index31;\n                \"893\";\n                tri.visible = true;\n            }\n            \"894\";\n            zn_plane_label.visible = true;\n            \"895\";\n        } else {\n            \"896\";\n            var \u03c1\u03c3_Iter32 = zn_plane_tris;\n            \u03c1\u03c3_Iter32 = ((typeof \u03c1\u03c3_Iter32[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter32 instanceof Map ? \u03c1\u03c3_Iter32.keys() : \u03c1\u03c3_Iter32) : Object.keys(\u03c1\u03c3_Iter32));\n            for (var \u03c1\u03c3_Index32 of \u03c1\u03c3_Iter32) {\n                tri = \u03c1\u03c3_Index32;\n                \"897\";\n                tri.visible = false;\n            }\n            \"898\";\n            zn_plane_label.visible = false;\n        }\n    };\n    if (!znp_cb_handler.__argnames__) Object.defineProperties(znp_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"901\";\n    async function p_cb_handler(evt) {\n        \"902\";\n        if (evt.checked) {\n            \"903\";\n            np_pt.visible = true;\n            \"904\";\n            sp_pt.visible = true;\n            \"905\";\n            Pn_label.visible = true;\n            \"906\";\n            Ps_label.visible = true;\n            \"907\";\n        } else {\n            \"908\";\n            np_pt.visible = false;\n            \"909\";\n            sp_pt.visible = false;\n            \"910\";\n            Pn_label.visible = false;\n            \"911\";\n            Ps_label.visible = false;\n        }\n    };\n    if (!p_cb_handler.__argnames__) Object.defineProperties(p_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"914\";\n    async function ap_cb_handler(evt) {\n        \"915\";\n        if (evt.checked) {\n            \"916\";\n            ap_line.visible = true;\n            \"917\";\n            alat_alon_pt.visible = true;\n            \"918\";\n            AP_label.visible = true;\n            \"919\";\n        } else {\n            \"920\";\n            ap_line.visible = false;\n            \"921\";\n            alat_alon_pt.visible = false;\n            \"922\";\n            AP_label.visible = false;\n        }\n    };\n    if (!ap_cb_handler.__argnames__) Object.defineProperties(ap_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"925\";\n    async function dr_cb_handler(evt) {\n        \"926\";\n        if (evt.checked) {\n            \"927\";\n            dr_lat.visible = true;\n            \"928\";\n            dr_lon.visible = true;\n            \"929\";\n            dr_lat_lbl.visible = true;\n            \"930\";\n            dr_lon_lbl.visible = true;\n            \"931\";\n        } else {\n            \"932\";\n            dr_lat.visible = false;\n            \"933\";\n            dr_lon.visible = false;\n            \"934\";\n            dr_lat_lbl.visible = false;\n            \"935\";\n            dr_lon_lbl.visible = false;\n        }\n    };\n    if (!dr_cb_handler.__argnames__) Object.defineProperties(dr_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"938\";\n    async function ob_cb_handler(evt) {\n        \"939\";\n        if (evt.checked) {\n            \"940\";\n            ob_pt.visible = true;\n            \"941\";\n            OB_label.visible = true;\n            \"942\";\n        } else {\n            \"943\";\n            ob_pt.visible = false;\n            \"944\";\n            OB_label.visible = false;\n        }\n    };\n    if (!ob_cb_handler.__argnames__) Object.defineProperties(ob_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"947\";\n    async function gp_cb_handler(evt) {\n        \"948\";\n        if (evt.checked) {\n            \"949\";\n            gp.visible = true;\n            \"950\";\n            GP_label.visible = true;\n            \"951\";\n        } else {\n            \"952\";\n            gp.visible = false;\n            \"953\";\n            GP_label.visible = false;\n        }\n    };\n    if (!gp_cb_handler.__argnames__) Object.defineProperties(gp_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"956\";\n    async function cp_cb_handler(evt) {\n        \"957\";\n        if (evt.checked) {\n            \"958\";\n            center_point.visible = true;\n            \"959\";\n        } else {\n            \"960\";\n            center_point.visible = false;\n        }\n    };\n    if (!cp_cb_handler.__argnames__) Object.defineProperties(cp_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"963\";\n    async function pd_cb_handler(evt) {\n        \"964\";\n        if (evt.checked) {\n            \"965\";\n            pd_arc.visible = true;\n            \"966\";\n            pd_label.visible = true;\n            \"967\";\n        } else {\n            \"968\";\n            pd_arc.visible = false;\n            \"969\";\n            pd_label.visible = false;\n        }\n    };\n    if (!pd_cb_handler.__argnames__) Object.defineProperties(pd_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"972\";\n    async function cl_cb_handler(evt) {\n        \"973\";\n        if (evt.checked) {\n            \"974\";\n            colat_arc.visible = true;\n            \"975\";\n            cl_label.visible = true;\n            \"976\";\n        } else {\n            \"977\";\n            colat_arc.visible = false;\n            \"978\";\n            cl_label.visible = false;\n        }\n    };\n    if (!cl_cb_handler.__argnames__) Object.defineProperties(cl_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"981\";\n    async function lop_cb_handler(evt) {\n        \"982\";\n        if (evt.checked) {\n            \"983\";\n            lop_curve.visible = true;\n            \"984\";\n            lop_lbl.visible = true;\n            \"985\";\n        } else {\n            \"986\";\n            lop_curve.visible = false;\n            \"987\";\n            lop_lbl.visible = false;\n        }\n    };\n    if (!lop_cb_handler.__argnames__) Object.defineProperties(lop_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"990\";\n    async function av_cb_handler(evt) {\n        \"991\";\n        \"993\";\n        if (evt.checked) {\n            \"994\";\n            a_cyl.visible = true;\n            \"995\";\n            a_arrow.visible = true;\n            \"996\";\n            a_label.visible = true;\n            \"999\";\n            if ((apcb.checked === true || typeof apcb.checked === \"object\" && \u03c1\u03c3_equals(apcb.checked, true))) {\n                \"1000\";\n                apcb_state = true;\n                \"1001\";\n            } else {\n                \"1002\";\n                apcb_state = false;\n            }\n            \"1004\";\n            alat_alon_pt.opacity = .2;\n            \"1005\";\n            ap_line.opacity = .2;\n            \"1006\";\n            ap_line.visible = true;\n            \"1007\";\n            alat_alon_pt.visible = true;\n            \"1008\";\n            AP_label.visible = true;\n            \"1010\";\n        } else {\n            \"1011\";\n            a_cyl.visible = false;\n            \"1012\";\n            a_arrow.visible = false;\n            \"1013\";\n            a_label.visible = false;\n            \"1015\";\n            alat_alon_pt.opacity = 1;\n            \"1016\";\n            ap_line.opacity = 1;\n            \"1019\";\n            if ((apcb_state === false || typeof apcb_state === \"object\" && \u03c1\u03c3_equals(apcb_state, false))) {\n                \"1021\";\n                apcb.checked = false;\n                \"1022\";\n                ap_line.visible = false;\n                \"1023\";\n                alat_alon_pt.visible = false;\n                \"1024\";\n                AP_label.visible = false;\n            }\n        }\n    };\n    if (!av_cb_handler.__argnames__) Object.defineProperties(av_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"1027\";\n    async function lha_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"1028\";\n        if (evt.checked) {\n            \"1029\";\n            lha_label.visible = true;\n            \"1030\";\n            var \u03c1\u03c3_Iter33 = lha_tris;\n            \u03c1\u03c3_Iter33 = ((typeof \u03c1\u03c3_Iter33[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter33 instanceof Map ? \u03c1\u03c3_Iter33.keys() : \u03c1\u03c3_Iter33) : Object.keys(\u03c1\u03c3_Iter33));\n            for (var \u03c1\u03c3_Index33 of \u03c1\u03c3_Iter33) {\n                tri = \u03c1\u03c3_Index33;\n                \"1031\";\n                tri.visible = true;\n            }\n            \"1032\";\n            gp_gha_tris.visible = true;\n            \"1033\";\n        } else {\n            \"1034\";\n            lha_label.visible = false;\n            \"1035\";\n            var \u03c1\u03c3_Iter34 = lha_tris;\n            \u03c1\u03c3_Iter34 = ((typeof \u03c1\u03c3_Iter34[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter34 instanceof Map ? \u03c1\u03c3_Iter34.keys() : \u03c1\u03c3_Iter34) : Object.keys(\u03c1\u03c3_Iter34));\n            for (var \u03c1\u03c3_Index34 of \u03c1\u03c3_Iter34) {\n                tri = \u03c1\u03c3_Index34;\n                \"1036\";\n                tri.visible = false;\n            }\n        }\n    };\n    if (!lha_cb_handler.__argnames__) Object.defineProperties(lha_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"1039\";\n    async function gpgha_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"1040\";\n        if (evt.checked) {\n            \"1041\";\n            gp_gha_line.visible = true;\n            \"1042\";\n            gp_gha_lbl.visible = true;\n            \"1043\";\n            var \u03c1\u03c3_Iter35 = gp_gha_tris;\n            \u03c1\u03c3_Iter35 = ((typeof \u03c1\u03c3_Iter35[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter35 instanceof Map ? \u03c1\u03c3_Iter35.keys() : \u03c1\u03c3_Iter35) : Object.keys(\u03c1\u03c3_Iter35));\n            for (var \u03c1\u03c3_Index35 of \u03c1\u03c3_Iter35) {\n                tri = \u03c1\u03c3_Index35;\n                \"1044\";\n                tri.visible = true;\n            }\n            \"1045\";\n            gp_gha_tris.visible = true;\n            \"1046\";\n        } else {\n            \"1047\";\n            gp_gha_line.visible = false;\n            \"1048\";\n            gp_gha_lbl.visible = false;\n            \"1049\";\n            var \u03c1\u03c3_Iter36 = gp_gha_tris;\n            \u03c1\u03c3_Iter36 = ((typeof \u03c1\u03c3_Iter36[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter36 instanceof Map ? \u03c1\u03c3_Iter36.keys() : \u03c1\u03c3_Iter36) : Object.keys(\u03c1\u03c3_Iter36));\n            for (var \u03c1\u03c3_Index36 of \u03c1\u03c3_Iter36) {\n                tri = \u03c1\u03c3_Index36;\n                \"1050\";\n                tri.visible = false;\n            }\n        }\n    };\n    if (!gpgha_cb_handler.__argnames__) Object.defineProperties(gpgha_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"1053\";\n    async function gpdec_cb_handler(evt) {\n        var \u03c1\u03c3_ls, tri;\n        \"1054\";\n        if (evt.checked) {\n            \"1055\";\n            gp_dec_line.visible = true;\n            \"1056\";\n            gp_dec_lbl.visible = true;\n            \"1057\";\n            var \u03c1\u03c3_Iter37 = gp_dec_tris;\n            \u03c1\u03c3_Iter37 = ((typeof \u03c1\u03c3_Iter37[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter37 instanceof Map ? \u03c1\u03c3_Iter37.keys() : \u03c1\u03c3_Iter37) : Object.keys(\u03c1\u03c3_Iter37));\n            for (var \u03c1\u03c3_Index37 of \u03c1\u03c3_Iter37) {\n                tri = \u03c1\u03c3_Index37;\n                \"1058\";\n                tri.visible = true;\n                \"1059\";\n            }\n        } else {\n            \"1060\";\n            gp_dec_line.visible = false;\n            \"1061\";\n            gp_dec_lbl.visible = false;\n            \"1062\";\n            var \u03c1\u03c3_Iter38 = gp_dec_tris;\n            \u03c1\u03c3_Iter38 = ((typeof \u03c1\u03c3_Iter38[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter38 instanceof Map ? \u03c1\u03c3_Iter38.keys() : \u03c1\u03c3_Iter38) : Object.keys(\u03c1\u03c3_Iter38));\n            for (var \u03c1\u03c3_Index38 of \u03c1\u03c3_Iter38) {\n                tri = \u03c1\u03c3_Index38;\n                \"1063\";\n                tri.visible = false;\n            }\n        }\n    };\n    if (!gpdec_cb_handler.__argnames__) Object.defineProperties(gpdec_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"1066\";\n    async function ec_cb_handler(evt) {\n        \"1067\";\n        if (evt.checked) {\n            \"1068\";\n            ecliptic.visible = true;\n            \"1069\";\n            ecl_lbl.visible = true;\n            \"1070\";\n        } else {\n            \"1071\";\n            ecliptic.visible = false;\n            \"1072\";\n            ecl_lbl.visible = false;\n        }\n    };\n    if (!ec_cb_handler.__argnames__) Object.defineProperties(ec_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"1075\";\n    async function eqn_cb_handler(evt) {\n        \"1076\";\n        \"1078\";\n        if (evt.checked) {\n            \"1080\";\n            vernal.visible = true;\n            \"1081\";\n            autumnal.visible = true;\n            \"1082\";\n            veq_lbl.visible = true;\n            \"1083\";\n            aeq_lbl.visible = true;\n            \"1086\";\n            cel_equator.visible = true;\n            \"1087\";\n            cel_equator_lbl.visible = true;\n            \"1090\";\n            if ((eccb.checked === true || typeof eccb.checked === \"object\" && \u03c1\u03c3_equals(eccb.checked, true))) {\n                \"1091\";\n                eccb_state = true;\n                \"1092\";\n            } else {\n                \"1093\";\n                eccb_state = false;\n                \"1096\";\n                ecliptic.visible = true;\n                \"1097\";\n                ecl_lbl.visible = true;\n                \"1098\";\n                eccb.checked = true;\n                \"1101\";\n            }\n            if ((cscb.checked === false || typeof cscb.checked === \"object\" && \u03c1\u03c3_equals(cscb.checked, false))) {\n                \"1102\";\n                cel_equator.visible = true;\n                \"1104\";\n            }\n        } else {\n            \"1106\";\n            vernal.visible = false;\n            \"1107\";\n            autumnal.visible = false;\n            \"1108\";\n            veq_lbl.visible = false;\n            \"1109\";\n            aeq_lbl.visible = false;\n            \"1112\";\n            if ((cscb.checked === false || typeof cscb.checked === \"object\" && \u03c1\u03c3_equals(cscb.checked, false))) {\n                \"1114\";\n                cel_equator.visible = false;\n                \"1115\";\n                cel_equator_lbl.visible = false;\n                \"1118\";\n            }\n            if ((eccb_state === false || typeof eccb_state === \"object\" && \u03c1\u03c3_equals(eccb_state, false))) {\n                \"1120\";\n                ecliptic.visible = false;\n                \"1121\";\n                ecl_lbl.visible = false;\n                \"1122\";\n                eccb.checked = false;\n            }\n        }\n    };\n    if (!eqn_cb_handler.__argnames__) Object.defineProperties(eqn_cb_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"1125\";\n    async function update_transparency(s) {\n        \"1126\";\n        try {\n            \"1127\";\n            earth.opacity = s.value;\n            \"1128\";\n            transp_label.text = \"Opacity: \"[\"+\"](\u03c1\u03c3_str.format(\"{:.2f}\", earth.opacity))[\"+\"](\"\");\n            \"1129\";\n        } catch (\u03c1\u03c3_Exception) {\n            \u03c1\u03c3_last_exception = \u03c1\u03c3_Exception;\n            if (\u03c1\u03c3_Exception instanceof Error) {\n                var e = \u03c1\u03c3_Exception;\n                \"1130\";\n                print(\"Error updating transparency: \"[\"+\"](\u03c1\u03c3_str.format(\"{}\", e))[\"+\"](\"\"));\n            } else {\n                throw \u03c1\u03c3_Exception;\n            }\n        }\n    };\n    if (!update_transparency.__argnames__) Object.defineProperties(update_transparency, {\n        __argnames__ : {value: [\"s\"]},\n        __module__ : {value: null}\n    });\n\n    \"1133\";\n    async function ss_bn_handler(evt) {\n        \"1134\";\n        (await scene.capture(\"CNMM_Snapshot\"));\n        \"1136\";\n        ssbn.background = color.white;\n        \"1137\";\n        (await sleep(.1));\n        \"1138\";\n        ssbn.background = color.gray(.5);\n    };\n    if (!ss_bn_handler.__argnames__) Object.defineProperties(ss_bn_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"1141\";\n    async function mp_bn_handler(evt) {\n        \"1143\";\n        mpbn.background = color.white;\n        \"1144\";\n        (await sleep(.1));\n        \"1145\";\n        mpbn.background = color.gray(.5);\n        \"1147\";\n        window.open(\"https:\/\/steely.org\/celnav\", \"_blank\");\n    };\n    if (!mp_bn_handler.__argnames__) Object.defineProperties(mp_bn_handler, {\n        __argnames__ : {value: [\"evt\"]},\n        __module__ : {value: null}\n    });\n\n    \"1151\";\n    async function normalize(angle) {\n        \"1152\";\n        return angle[\"%\"](360)[\"+\"](360)[\"%\"](360);\n    };\n    if (!normalize.__argnames__) Object.defineProperties(normalize, {\n        __argnames__ : {value: [\"angle\"]},\n        __module__ : {value: null}\n    });\n\n    \"1157\";\n    async function local_hour_angle(gha, longitude) {\n        var \u03c1\u03c3_ls, LHA;\n        \"1159\";\n        LHA = gha[\"+\"](longitude);\n        \"1161\";\n        return (await normalize(LHA));\n    };\n    if (!local_hour_angle.__argnames__) Object.defineProperties(local_hour_angle, {\n        __argnames__ : {value: [\"gha\", \"longitude\"]},\n        __module__ : {value: null}\n    });\n\n    \"1163\";\n    lha = (await local_hour_angle(gp_gha, alon));\n    \"1166\";\n    hcrad = asin(sin((await radians(gp_dec)))[\"*\"](sin((await radians(alat))))[\"+\"](cos((await radians(alat)))[\"*\"](cos((await radians(gp_dec))))[\"*\"](cos((await radians(lha))))));\n    \"1167\";\n    hcdeg = (await degrees(hcrad));\n    \"1168\";\n    zdeg = (await degrees(acos(sin((await radians(gp_dec)))[\"-\"](1[\"*\"](sin((await radians(alat))))[\"*\"](sin(hcrad)))[\"\/\"](cos((await radians(alat)))[\"*\"](cos(hcrad))))));\n    \"1171\";\n    async function convert_z_to_zn(alat, lha, zdeg) {\n        var \u03c1\u03c3_ls, zn_deg;\n        \"1173\";\n        if (alat[\">=\"](0)) {\n            \"1174\";\n            if (lha[\">\"](180)) {\n                \"1175\";\n                zn_deg = zdeg;\n                \"1176\";\n            } else {\n                \"1177\";\n                zn_deg = 360[\"-\"](1[\"*\"](zdeg));\n                \"1178\";\n            }\n        } else {\n            \"1179\";\n            if (lha[\">\"](180)) {\n                \"1180\";\n                zn_deg = 180[\"-\"](1[\"*\"](zdeg));\n                \"1181\";\n            } else {\n                \"1182\";\n                zn_deg = 180[\"+\"](zdeg);\n            }\n        }\n        \"1184\";\n        return zn_deg;\n    };\n    if (!convert_z_to_zn.__argnames__) Object.defineProperties(convert_z_to_zn, {\n        __argnames__ : {value: [\"alat\", \"lha\", \"zdeg\"]},\n        __module__ : {value: null}\n    });\n\n    \"1186\";\n    zn_deg = (await convert_z_to_zn(alat, lha, zdeg));\n    \"1187\";\n    aval = abs(hodeg[\"-\"](1[\"*\"](hcdeg)));\n    \"1188\";\n    avaldeg = int(aval);\n    \"1189\";\n    avalmin = aval[\"-\"](1[\"*\"](avaldeg));\n    \"1190\";\n    avalmin = avalmin[\"*\"](60);\n    \"1192\";\n    if (hcdeg[\">\"](hodeg)) {\n        \"1193\";\n        tora = \"Away\";\n        \"1194\";\n        tora_letter = \"A\";\n        \"1195\";\n    } else {\n        \"1196\";\n        tora = \"Toward\";\n        \"1197\";\n        tora_letter = \"T\";\n    }\n    \"1199\";\n    print(\"Sun lower limb, Nov. 28, 2019, UTC: 150200\");\n    \"1200\";\n    print(\"Observer Latitude \/ Longitude:\", olat, \"\/\", olon, \", AP Latitude \/ Longitude:\", alat, \"\/\", alon);\n    \"1201\";\n    print(\"Hs:\", hsdeg, \", Ha:\", hadeg, \", Ho:\", hodeg);\n    \"1202\";\n    print(\"Hc:\", hcdeg, \", Z:\", zdeg, \"\u00b0\", \", Zn:\", zn_deg, \"\u00b0\", \", A-value:\", avaldeg, \"\u00b0\", avalmin, \"'\", tora);\n    \"1203\";\n    print(\"GP Declination \/ GHA:\", gp_dec, \"\/\", gp_gha, \", LHA:\", lha, \"\u00b0\");\n    \"1220\";\n    async function latlon_to_vector(lat_deg, lon_deg) {\n        var \u03c1\u03c3_ls, lat_rads, lon_rads, x, y, z, ll_vec, vec_rot_x, vec_rot_y;\n        \"1226\";\n        lat_rads = (await radians(lat_deg));\n        \"1227\";\n        lon_rads = (await radians(lon_deg));\n        \"1229\";\n        x = cos(lat_rads)[\"*\"](cos(lon_rads));\n        \"1230\";\n        y = cos(lat_rads)[\"*\"](sin(lon_rads));\n        \"1231\";\n        z = sin(lat_rads);\n        \"1232\";\n        ll_vec = vector(x, y, z);\n        \"1235\";\n        vec_rot_x = (await rotate_around_x(ll_vec, (await radians(1[\"-u\"]()[\"*\"](90)))));\n        \"1236\";\n        vec_rot_y = (await rotate_around_y(vec_rot_x, (await radians(1[\"-u\"]()[\"*\"](90)))));\n        \"1238\";\n        return vec_rot_y;\n    };\n    if (!latlon_to_vector.__argnames__) Object.defineProperties(latlon_to_vector, {\n        __argnames__ : {value: [\"lat_deg\", \"lon_deg\"]},\n        __module__ : {value: null}\n    });\n\n    \"1240\";\n    async function great_circle_arc_latlon() {\n        var lat1 = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var lon1 = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var lat2 = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var lon2 = ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[3];\n        var radius = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? great_circle_arc_latlon.__defaults__.radius : arguments[4];\n        var n = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? great_circle_arc_latlon.__defaults__.n : arguments[5];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"radius\")){\n            radius = \u03c1\u03c3_kwargs_obj.radius;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"n\")){\n            n = \u03c1\u03c3_kwargs_obj.n;\n        }\n        var \u03c1\u03c3_ls, a, b, cos_theta, theta, pts, t, w1, w2, p, i;\n        \"1246\";\n        a = (await latlon_to_vector(lat1, lon1));\n        \"1247\";\n        b = (await dec_az_to_cartesian(lat2, lon2, R));\n        \"1250\";\n        cos_theta = dot(a, b);\n        \"1251\";\n        cos_theta = max(1[\"-u\"]()[\"*\"](1), min(1, cos_theta));\n        \"1252\";\n        theta = acos(cos_theta);\n        \"1254\";\n        if ((theta === 0 || typeof theta === \"object\" && \u03c1\u03c3_equals(theta, 0))) {\n            \"1255\";\n            return \u03c1\u03c3_list_decorate([ radius[\"*\"](a) ]);\n        }\n        \"1257\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"1258\";\n        for (var \u03c1\u03c3_Index39 = 0; \u03c1\u03c3_Index39[\"<\"](n[\"+\"](1)); \u03c1\u03c3_Index39++) {\n            i = \u03c1\u03c3_Index39;\n            \"1259\";\n            t = i[\"\/\"](n);\n            \"1260\";\n            w1 = sin(1[\"-\"](1[\"*\"](t))[\"*\"](theta))[\"\/\"](sin(theta));\n            \"1261\";\n            w2 = sin(t[\"*\"](theta))[\"\/\"](sin(theta));\n            \"1262\";\n            p = w1[\"*\"](a)[\"+\"](w2[\"*\"](b));\n            \"1263\";\n            pts.append(radius[\"*\"](p));\n        }\n        \"1265\";\n        return pts;\n    };\n    if (!great_circle_arc_latlon.__defaults__) Object.defineProperties(great_circle_arc_latlon, {\n        __defaults__ : {value: {radius:1, n:200}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"lat1\", \"lon1\", \"lat2\", \"lon2\", \"radius\", \"n\"]},\n        __module__ : {value: null}\n    });\n\n    \"1268\";\n    ap_radius = .015;\n    \"1269\";\n    ap_color = color.red;\n    \"1272\";\n    alat_alon = (await latlon_to_vector(alat, alon));\n    \"1274\";\n    alat_alon_pt = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: alat_alon, radius: ap_radius, color: ap_color, res: 128, shininess: 0})]);\n    \"1277\";\n    label_offset = 1.05;\n    \"1278\";\n    ap_label_pos = norm(ll_vector)[\"*\"](R)[\"*\"](label_offset);\n    \"1281\";\n    up_ref = vec(0, 1, 0);\n    \"1282\";\n    left_dir = cross(norm(ll_vector), up_ref);\n    \"1283\";\n    left_dir = norm(left_dir);\n    \"1284\";\n    left_shift = .05[\"*\"](R);\n    \"1285\";\n    ap_label_pos = norm(ll_vector)[\"*\"](R)[\"*\"](label_offset)[\"+\"](left_dir[\"*\"](left_shift));\n    \"1287\";\n    AP_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: ap_label_pos, text: \"AP\", height: dev_txt_height, color: color.red, align: \"right\", depth: 0, billboard: true, emissive: true})]);\n    \"1297\";\n    all_text_labels.append(AP_label);\n    \"1300\";\n    gp_radius = .015;\n    \"1301\";\n    gp_color = color.yellow;\n    \"1304\";\n    gp_vec = (await dec_az_to_cartesian(gp_dec, gp_gha, R));\n    \"1306\";\n    gp = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: gp_vec, radius: gp_radius, color: gp_color, res: 128, shininess: 0})]);\n    \"1308\";\n    label_offset = 1.05;\n    \"1309\";\n    gp_label_pos = norm(gp_vec)[\"*\"](R)[\"*\"](label_offset);\n    \"1312\";\n    up_ref = vec(0, 1, 0);\n    \"1313\";\n    left_dir = cross(norm(gp_vec), up_ref);\n    \"1314\";\n    left_dir = norm(left_dir);\n    \"1315\";\n    right_dir = 1[\"-u\"]()[\"*\"](left_dir);\n    \"1316\";\n    right_shift = .05[\"*\"](R);\n    \"1317\";\n    gp_label_pos = norm(gp_vec)[\"*\"](R)[\"*\"](label_offset)[\"+\"](right_dir[\"*\"](right_shift));\n    \"1319\";\n    GP_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: gp_label_pos, text: \"GP\", height: dev_txt_height, color: gp_color, align: \"left\", depth: 0, billboard: true, emissive: true})]);\n    \"1329\";\n    all_text_labels.append(GP_label);\n    \"1332\";\n    ob_radius = .015;\n    \"1333\";\n    ob_color = color.green;\n    \"1335\";\n    ob_pt = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: ob_vector, radius: ob_radius, color: ob_color, res: 128, shininess: 0})]);\n    \"1338\";\n    ob_label_offset = 1.05;\n    \"1341\";\n    up_ref = vec(0, 1, 0);\n    \"1342\";\n    right_dir = cross(vec(0, 1, 0), norm(ob_vector));\n    \"1343\";\n    right_dir = norm(right_dir);\n    \"1344\";\n    right_shift = .05[\"*\"](R);\n    \"1346\";\n    ob_label_pos = norm(ll_vector)[\"*\"](R)[\"*\"](ob_label_offset)[\"+\"](right_dir[\"*\"](right_shift));\n    \"1348\";\n    OB_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: ob_label_pos, text: \"OB\", height: dev_txt_height, color: color.green, align: \"left\", depth: 0, billboard: true, emissive: true})]);\n    \"1358\";\n    all_text_labels.append(OB_label);\n    \"1361\";\n    ob_pt.visible = false;\n    \"1362\";\n    OB_label.visible = false;\n    \"1365\";\n    async function add_zenith() {\n        var OP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var earth_radius = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? add_zenith.__defaults__.earth_radius : arguments[1];\n        var sky_radius = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? add_zenith.__defaults__.sky_radius : arguments[2];\n        var color_zenith = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? add_zenith.__defaults__.color_zenith : arguments[3];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"earth_radius\")){\n            earth_radius = \u03c1\u03c3_kwargs_obj.earth_radius;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"sky_radius\")){\n            sky_radius = \u03c1\u03c3_kwargs_obj.sky_radius;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color_zenith\")){\n            color_zenith = \u03c1\u03c3_kwargs_obj.color_zenith;\n        }\n        var \u03c1\u03c3_ls, P_obs, P_zen, zenith_marker, zenith_line, zenith_label_offset, zenith_label_pos, zenith_label;\n        \"1368\";\n        P_obs = vector(0, 0, 0);\n        \"1371\";\n        P_zen = norm(OP)[\"*\"](sky_radius);\n        \"1374\";\n        zenith_marker = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: P_zen, radius: sky_radius[\"*\"](.01), color: color_zenith, emissive: true, res: 128})]);\n        \"1382\";\n        zenith_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: \u03c1\u03c3_list_decorate([ P_obs, P_zen ]), color: color_zenith, radius: sky_radius[\"*\"](.005), res: 128})]);\n        \"1388\";\n        zenith_label_offset = 1.05;\n        \"1389\";\n        zenith_label_pos = norm(ob_vector)[\"*\"](R)[\"*\"](2)[\"*\"](zenith_label_offset);\n        \"1391\";\n        zenith_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: zenith_label_pos, text: \"Observer's Zenith\", height: dev_txt_height, color: color_zenith, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"1401\";\n        all_text_labels.append(zenith_label);\n        \"1404\";\n        zenith_line.visible = false;\n        \"1405\";\n        zenith_marker.visible = false;\n        \"1406\";\n        zenith_label.visible = false;\n        \"1408\";\n        return [zenith_marker, zenith_line, zenith_label];\n    };\n    if (!add_zenith.__defaults__) Object.defineProperties(add_zenith, {\n        __defaults__ : {value: {earth_radius:1, sky_radius:2, color_zenith:color.green}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"OP\", \"earth_radius\", \"sky_radius\", \"color_zenith\"]},\n        __module__ : {value: null}\n    });\n\n    \"1410\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, add_zenith, [ob_vector].concat([\u03c1\u03c3_desugar_kwargs({earth_radius: 1, sky_radius: 2, color_zenith: color.green})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(3, \u03c1\u03c3_unpack);\n    zenith_marker = \u03c1\u03c3_unpack[0];\n    zenith_line = \u03c1\u03c3_unpack[1];\n    zenith_label = \u03c1\u03c3_unpack[2];\n    \"1414\";\n    arc_pts = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, great_circle_arc_latlon, [alat, alon, gp_dec, gp_gha].concat([\u03c1\u03c3_desugar_kwargs({radius: R, n: 300})])));\n    \"1415\";\n    az_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: arc_pts, color: color.cyan, radius: .005, res: 128, shininess: 0})]);\n    \"1417\";\n    label_pos = \u03c1\u03c3_getitem(az_line.point(150), \"pos\");\n    \"1418\";\n    label_offset = 1.1;\n    \"1419\";\n    zn_label_pos = norm(label_pos)[\"*\"](R)[\"*\"](label_offset);\n    \"1421\";\n    Zn_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: zn_label_pos, text: \"Zn \/ Zenith Dist.\", height: dev_txt_height, color: color.cyan, align: \"center\", billboard: true, depth: 0, emissive: true})]);\n    \"1430\";\n    all_text_labels.append(Zn_label);\n    \"1433\";\n    async function angle_between_vectors(vec1, vec2) {\n        var \u03c1\u03c3_ls, angle_rads;\n        \"1434\";\n        angle_rads = acos(dot(vec1, vec2)[\"\/\"](mag(vec1)[\"*\"](mag(vec2))));\n        \"1436\";\n        return angle_rads;\n    };\n    if (!angle_between_vectors.__argnames__) Object.defineProperties(angle_between_vectors, {\n        __argnames__ : {value: [\"vec1\", \"vec2\"]},\n        __module__ : {value: null}\n    });\n\n    \"1440\";\n    ap_vec = (await latlon_to_vector(alat, alon));\n    \"1441\";\n    gp_vec = (await dec_az_to_cartesian(gp_dec, gp_gha, R));\n    \"1442\";\n    rad_ang_dist = (await angle_between_vectors(ap_vec, gp_vec));\n    \"1443\";\n    deg_ang_dist = (await degrees(rad_ang_dist));\n    \"1444\";\n    nm_length = deg_ang_dist[\"*\"](60);\n    \"1448\";\n    ob_rad_ang_dist = (await angle_between_vectors(ob_vector, gp_vec));\n    \"1449\";\n    ob_deg_ang_dist = (await degrees(ob_rad_ang_dist));\n    \"1450\";\n    ob_nm_length = ob_deg_ang_dist[\"*\"](60);\n    \"1453\";\n    np_radius = .015;\n    \"1454\";\n    np_vec = (await get_scene_north_pole());\n    \"1456\";\n    np_pt = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: np_vec, radius: np_radius, color: color.white, res: 129, shininess: 0})]);\n    \"1458\";\n    np_label_offset = 1.05;\n    \"1459\";\n    np_label_pos = norm(np_vec)[\"*\"](R)[\"*\"](np_label_offset);\n    \"1461\";\n    Pn_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: np_label_pos, text: \"Pn\", height: dev_txt_height, color: color.white, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n    \"1471\";\n    all_text_labels.append(Pn_label);\n    \"1473\";\n    sp_radius = .015;\n    \"1474\";\n    sp_vec = (await get_scene_south_pole());\n    \"1475\";\n    sp_pt = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: sp_vec, radius: sp_radius, color: color.white, res: 129, shininess: 0})]);\n    \"1477\";\n    sp_label_offset = 1.1;\n    \"1478\";\n    sp_label_pos = norm(sp_vec)[\"*\"](R)[\"*\"](sp_label_offset);\n    \"1480\";\n    Ps_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: sp_label_pos, text: \"Ps\", height: dev_txt_height, color: color.white, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n    \"1490\";\n    all_text_labels.append(Ps_label);\n    \"1492\";\n    bearing = (await azimuth_from_vectors(ll_vector, gp_vec, np_vec));\n    \"1493\";\n    ob_bearing = (await azimuth_from_vectors(ob_vector, gp_vec, np_vec));\n    \"1494\";\n    print(\"AP to GP Distance Nautical Miles: \", nm_length, \", Bearing: \", bearing, \"\u00b0\");\n    \"1495\";\n    print(\"Observer to GP Distance Nautical Miles: \", ob_nm_length, \", Bearing: \", ob_bearing, \"\u00b0\");\n    \"1497\";\n    async function azimuth_from_vectors(ap_vec, gp_vec, np_vec) {\n        var \u03c1\u03c3_ls, A_hat, G_hat, d, d_hat, n_raw, n_hat, e_hat, dN, dE, Z_rad, Z_deg;\n        \"1505\";\n        A_hat = ap_vec.norm();\n        \"1506\";\n        G_hat = gp_vec.norm();\n        \"1509\";\n        d = G_hat[\"-\"](1[\"*\"](dot(G_hat, A_hat))[\"*\"](A_hat));\n        \"1510\";\n        d_hat = d.norm();\n        \"1513\";\n        n_raw = np_vec[\"-\"](1[\"*\"](dot(np_vec, A_hat))[\"*\"](A_hat));\n        \"1514\";\n        n_hat = n_raw.norm();\n        \"1517\";\n        e_hat = cross(np_vec, A_hat).norm();\n        \"1520\";\n        dN = dot(d_hat, n_hat);\n        \"1521\";\n        dE = dot(d_hat, e_hat);\n        \"1524\";\n        Z_rad = atan2(dE, dN);\n        \"1525\";\n        Z_deg = (await degrees(Z_rad));\n        \"1528\";\n        if (Z_deg[\"<\"](0)) {\n            \"1529\";\n            Z_deg=Z_deg[\"+\"](360);\n        }\n        \"1531\";\n        return Z_deg;\n    };\n    if (!azimuth_from_vectors.__argnames__) Object.defineProperties(azimuth_from_vectors, {\n        __argnames__ : {value: [\"ap_vec\", \"gp_vec\", \"np_vec\"]},\n        __module__ : {value: null}\n    });\n\n    \"1533\";\n    async function draw_Ho_line(ho_vector, GP, Ho_deg) {\n        var \u03c1\u03c3_ls, HOu, GPu, U, GP_horiz, Ho, Ho_dir, start, end, ho_line;\n        \"1541\";\n        HOu = norm(ho_vector);\n        \"1542\";\n        GPu = norm(GP);\n        \"1545\";\n        U = HOu;\n        \"1546\";\n        GP_horiz = GPu[\"-\"](1[\"*\"](dot(GPu, U))[\"*\"](U));\n        \"1547\";\n        GP_horiz = norm(GP_horiz);\n        \"1550\";\n        Ho = (await radians(Ho_deg));\n        \"1551\";\n        Ho_dir = cos(Ho)[\"*\"](GP_horiz)[\"+\"](sin(Ho)[\"*\"](U));\n        \"1552\";\n        Ho_dir = norm(Ho_dir);\n        \"1555\";\n        start = HOu;\n        \"1556\";\n        end = HOu[\"+\"](.8[\"*\"](Ho_dir));\n        \"1559\";\n        ho_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: \u03c1\u03c3_list_decorate([ start, end ]), color: color.green, radius: .005})]);\n        \"1562\";\n        ho_line.visible = false;\n        \"1564\";\n        return ho_line;\n    };\n    if (!draw_Ho_line.__argnames__) Object.defineProperties(draw_Ho_line, {\n        __argnames__ : {value: [\"ho_vector\", \"GP\", \"Ho_deg\"]},\n        __module__ : {value: null}\n    });\n\n    \"1567\";\n    ho_line = (await draw_Ho_line(ob_vector, gp_vec, hodeg));\n    \"1569\";\n    async function draw_Hc_ray_from_center(AP, GP, Hc_deg) {\n        var \u03c1\u03c3_ls, U, GP_horiz, Hc, Hc_dir, origin, Body, hc_line;\n        \"1581\";\n        AP = norm(AP);\n        \"1582\";\n        GP = norm(GP);\n        \"1585\";\n        U = AP;\n        \"1588\";\n        GP_horiz = GP[\"-\"](1[\"*\"](dot(GP, U))[\"*\"](U));\n        \"1589\";\n        GP_horiz = norm(GP_horiz);\n        \"1592\";\n        Hc = (await radians(Hc_deg));\n        \"1595\";\n        Hc_dir = cos(Hc)[\"*\"](GP_horiz)[\"+\"](sin(Hc)[\"*\"](U));\n        \"1596\";\n        Hc_dir = norm(Hc_dir);\n        \"1599\";\n        origin = vector(0, 0, 0);\n        \"1600\";\n        Body = Hc_dir;\n        \"1603\";\n        hc_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: \u03c1\u03c3_list_decorate([ origin, Body ]), color: color.red, radius: .005})]);\n        \"1606\";\n        hc_line.visible = false;\n        \"1608\";\n        return hc_line;\n    };\n    if (!draw_Hc_ray_from_center.__argnames__) Object.defineProperties(draw_Hc_ray_from_center, {\n        __argnames__ : {value: [\"AP\", \"GP\", \"Hc_deg\"]},\n        __module__ : {value: null}\n    });\n\n    \"1611\";\n    hc_line = (await draw_Hc_ray_from_center(ll_vector, gp_vec, hcdeg));\n    \"1613\";\n    async function draw_ap_horizon() {\n        var axis_vec = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var NP_rot = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var circ_color = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var cardinals = ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[3];\n        var opacity = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ap_horizon.__defaults__.opacity : arguments[4];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, U, NP, N, E, ap_plane, pts, R, a, p, deg, ap_horiz, marker_size;\n        \"1623\";\n        \"1624\";\n        \"1627\";\n        U = norm(axis_vec);\n        \"1628\";\n        NP = norm(NP_rot);\n        \"1631\";\n        N = NP[\"-\"](1[\"*\"](dot(NP, U))[\"*\"](U));\n        \"1632\";\n        N = norm(N);\n        \"1635\";\n        E = norm(cross(N, U));\n        \"1637\";\n        ap_plane = (await draw_horizon_fill(axis_vec, circ_color, opacity));\n        \"1640\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"1642\";\n        R = 1;\n        \"1644\";\n        for (var \u03c1\u03c3_Index40 = 0; \u03c1\u03c3_Index40[\"<\"](361); \u03c1\u03c3_Index40++) {\n            deg = \u03c1\u03c3_Index40;\n            \"1645\";\n            a = (await radians(deg));\n            \"1646\";\n            p = R[\"*\"](cos(a)[\"*\"](N)[\"+\"](sin(a)[\"*\"](E)));\n            \"1647\";\n            pts.append(p);\n        }\n        \"1649\";\n        ap_horiz = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: circ_color, radius: .005})]);\n        \"1651\";\n        if ((cardinals === true || typeof cardinals === \"object\" && \u03c1\u03c3_equals(cardinals, true))) {\n            \"1653\";\n            marker_size = .015;\n            \"1656\";\n            ap_n_card = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: R[\"*\"](N), radius: marker_size, color: circ_color})]);\n            \"1657\";\n            ap_n_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: 1.1[\"*\"](R)[\"*\"](N), text: \"N\", height: dev_txt_height, color: circ_color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n            \"1667\";\n            all_text_labels.append(ap_n_lbl);\n            \"1670\";\n            ap_e_card = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: R[\"*\"](E), radius: marker_size, color: circ_color})]);\n            \"1671\";\n            ap_e_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: 1.1[\"*\"](R)[\"*\"](E), text: \"E\", height: dev_txt_height, color: circ_color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n            \"1681\";\n            all_text_labels.append(ap_e_lbl);\n            \"1684\";\n            ap_s_card = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: 1[\"-u\"]()[\"*\"](R)[\"*\"](N), radius: marker_size, color: circ_color})]);\n            \"1685\";\n            ap_s_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: 1[\"-u\"]()[\"*\"](1.1)[\"*\"](R)[\"*\"](N), text: \"S\", height: dev_txt_height, color: circ_color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n            \"1694\";\n            all_text_labels.append(ap_s_lbl);\n            \"1697\";\n            ap_w_card = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: 1[\"-u\"]()[\"*\"](R)[\"*\"](E), radius: marker_size, color: circ_color})]);\n            \"1698\";\n            ap_w_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: 1[\"-u\"]()[\"*\"](1.1)[\"*\"](R)[\"*\"](E), text: \"W\", height: dev_txt_height, color: circ_color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n            \"1707\";\n            all_text_labels.append(ap_w_lbl);\n            \"1710\";\n            ap_n_card.visible = false;\n            \"1711\";\n            ap_n_lbl.visible = false;\n            \"1712\";\n            ap_e_card.visible = false;\n            \"1713\";\n            ap_e_lbl.visible = false;\n            \"1714\";\n            ap_w_card.visible = false;\n            \"1715\";\n            ap_w_lbl.visible = false;\n            \"1716\";\n            ap_s_card.visible = false;\n            \"1717\";\n            ap_s_lbl.visible = false;\n        }\n        \"1720\";\n        ap_horiz.visible = false;\n        \"1722\";\n        return ap_horiz;\n    };\n    if (!draw_ap_horizon.__defaults__) Object.defineProperties(draw_ap_horizon, {\n        __defaults__ : {value: {opacity:.5}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"axis_vec\", \"NP_rot\", \"circ_color\", \"cardinals\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"1724\";\n    async function draw_horizon_fill() {\n        var axis_vec = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var color_val = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var opacity = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_horizon_fill.__defaults__.opacity : arguments[2];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, U, temp, E, N, R, center, triangles_list, steps, a1, a2, p1, p2, tri, i;\n        \"1731\";\n        \"1732\";\n        ap_horizon_triangles = \u03c1\u03c3_list_decorate([]);\n        \"1734\";\n        U = norm(axis_vec);\n        \"1737\";\n        temp = vector(0, 0, 1);\n        \"1738\";\n        if (abs(dot(temp, U))[\">\"](.99)) {\n            \"1739\";\n            temp = vector(1, 0, 0);\n        }\n        \"1741\";\n        E = norm(cross(U, temp));\n        \"1742\";\n        N = norm(cross(E, U));\n        \"1744\";\n        R = 1;\n        \"1745\";\n        center = vector(0, 0, 0);\n        \"1748\";\n        triangles_list = \u03c1\u03c3_list_decorate([]);\n        \"1750\";\n        steps = 90;\n        \"1751\";\n        for (var \u03c1\u03c3_Index41 = 0; \u03c1\u03c3_Index41[\"<\"](steps); \u03c1\u03c3_Index41++) {\n            i = \u03c1\u03c3_Index41;\n            \"1752\";\n            a1 = 2[\"*\"](pi)[\"*\"](i)[\"\/\"](steps);\n            \"1753\";\n            a2 = 2[\"*\"](pi)[\"*\"](i[\"+\"](1))[\"\/\"](steps);\n            \"1755\";\n            p1 = R[\"*\"](cos(a1)[\"*\"](N)[\"+\"](sin(a1)[\"*\"](E)));\n            \"1756\";\n            p2 = R[\"*\"](cos(a2)[\"*\"](N)[\"+\"](sin(a2)[\"*\"](E)));\n            \"1758\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: center, color: color_val, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: p1, color: color_val, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: p2, color: color_val, opacity: opacity})])})]);\n            \"1763\";\n            ap_horizon_triangles.append(tri);\n        }\n        \"1766\";\n        var \u03c1\u03c3_Iter42 = ap_horizon_triangles;\n        \u03c1\u03c3_Iter42 = ((typeof \u03c1\u03c3_Iter42[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter42 instanceof Map ? \u03c1\u03c3_Iter42.keys() : \u03c1\u03c3_Iter42) : Object.keys(\u03c1\u03c3_Iter42));\n        for (var \u03c1\u03c3_Index42 of \u03c1\u03c3_Iter42) {\n            tri = \u03c1\u03c3_Index42;\n            \"1767\";\n            tri.visible = false;\n        }\n        \"1769\";\n        return ap_horizon_triangles;\n    };\n    if (!draw_horizon_fill.__defaults__) Object.defineProperties(draw_horizon_fill, {\n        __defaults__ : {value: {opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"axis_vec\", \"color_val\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"1771\";\n    async function label_AP_horizon() {\n        var AP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var R_horizon = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? label_AP_horizon.__defaults__.R_horizon : arguments[1];\n        var offset = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? label_AP_horizon.__defaults__.offset : arguments[2];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R_horizon\")){\n            R_horizon = \u03c1\u03c3_kwargs_obj.R_horizon;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"offset\")){\n            offset = \u03c1\u03c3_kwargs_obj.offset;\n        }\n        var \u03c1\u03c3_ls, up, temp, horiz, label_pos, ap_hor_lbl;\n        \"1773\";\n        up = norm(AP);\n        \"1777\";\n        temp = vector(1, 0, 0);\n        \"1778\";\n        if (abs(dot(temp, up))[\">\"](.9)) {\n            \"1779\";\n            temp = vector(0, 1, 0);\n        }\n        \"1782\";\n        horiz = norm(cross(up, temp));\n        \"1785\";\n        label_pos = horiz[\"*\"](R_horizon)[\"*\"](offset);\n        \"1787\";\n        ap_hor_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"AP Horizon\", height: dev_txt_height, color: color.red, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"1797\";\n        all_text_labels.append(ap_hor_lbl);\n        \"1800\";\n        ap_hor_lbl.visible = false;\n        \"1802\";\n        return ap_hor_lbl;\n    };\n    if (!label_AP_horizon.__defaults__) Object.defineProperties(label_AP_horizon, {\n        __defaults__ : {value: {R_horizon:2, offset:1.05}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"AP\", \"R_horizon\", \"offset\"]},\n        __module__ : {value: null}\n    });\n\n    \"1804\";\n    ap_horiz_label = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, label_AP_horizon, [ll_vector].concat([\u03c1\u03c3_desugar_kwargs({R_horizon: .6, offset: 1.05})])));\n    \"1807\";\n    ob_horizon_triangles = \u03c1\u03c3_list_decorate([]);\n    \"1809\";\n    async function draw_observer_horizon() {\n        var OP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var R = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_observer_horizon.__defaults__.R : arguments[1];\n        var opacity = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_observer_horizon.__defaults__.opacity : arguments[2];\n        var color_val = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_observer_horizon.__defaults__.color_val : arguments[3];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color_val\")){\n            color_val = \u03c1\u03c3_kwargs_obj.color_val;\n        }\n        var \u03c1\u03c3_ls, U, temp, E, N, steps, pts, a, p, i, ob_horiz, a1, a2, p1, p2, tri;\n        \"1815\";\n        \"1816\";\n        ob_horizon_triangles = \u03c1\u03c3_list_decorate([]);\n        \"1818\";\n        U = norm(OP);\n        \"1820\";\n        temp = vector(0, 0, 1);\n        \"1821\";\n        if (abs(dot(temp, U))[\">\"](.99)) {\n            \"1822\";\n            temp = vector(1, 0, 0);\n        }\n        \"1824\";\n        E = norm(cross(U, temp));\n        \"1825\";\n        N = norm(cross(E, U));\n        \"1827\";\n        steps = 180;\n        \"1828\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"1829\";\n        for (var \u03c1\u03c3_Index43 = 0; \u03c1\u03c3_Index43[\"<\"](steps[\"+\"](1)); \u03c1\u03c3_Index43++) {\n            i = \u03c1\u03c3_Index43;\n            \"1830\";\n            a = 2[\"*\"](pi)[\"*\"](i)[\"\/\"](steps);\n            \"1831\";\n            p = OP[\"+\"](R[\"*\"](cos(a)[\"*\"](N)[\"+\"](sin(a)[\"*\"](E))));\n            \"1832\";\n            pts.append(p);\n        }\n        \"1834\";\n        ob_horiz = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color_val, radius: .003})]);\n        \"1836\";\n        for (var \u03c1\u03c3_Index44 = 0; \u03c1\u03c3_Index44[\"<\"](steps); \u03c1\u03c3_Index44++) {\n            i = \u03c1\u03c3_Index44;\n            \"1837\";\n            a1 = 2[\"*\"](pi)[\"*\"](i)[\"\/\"](steps);\n            \"1838\";\n            a2 = 2[\"*\"](pi)[\"*\"](i[\"+\"](1))[\"\/\"](steps);\n            \"1840\";\n            p1 = OP[\"+\"](R[\"*\"](cos(a1)[\"*\"](N)[\"+\"](sin(a1)[\"*\"](E))));\n            \"1841\";\n            p2 = OP[\"+\"](R[\"*\"](cos(a2)[\"*\"](N)[\"+\"](sin(a2)[\"*\"](E))));\n            \"1843\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: OP, color: color_val, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: p1, color: color_val, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: p2, color: color_val, opacity: opacity})])})]);\n            \"1848\";\n            ob_horizon_triangles.append(tri);\n        }\n        \"1851\";\n        ob_horiz.visible = false;\n        \"1852\";\n        var \u03c1\u03c3_Iter45 = ob_horizon_triangles;\n        \u03c1\u03c3_Iter45 = ((typeof \u03c1\u03c3_Iter45[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter45 instanceof Map ? \u03c1\u03c3_Iter45.keys() : \u03c1\u03c3_Iter45) : Object.keys(\u03c1\u03c3_Iter45));\n        for (var \u03c1\u03c3_Index45 of \u03c1\u03c3_Iter45) {\n            tri = \u03c1\u03c3_Index45;\n            \"1853\";\n            tri.visible = false;\n        }\n        \"1855\";\n        return [ob_horiz, ob_horizon_triangles, N, E, U];\n    };\n    if (!draw_observer_horizon.__defaults__) Object.defineProperties(draw_observer_horizon, {\n        __defaults__ : {value: {R:1, opacity:.25, color_val:color.green}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"OP\", \"R\", \"opacity\", \"color_val\"]},\n        __module__ : {value: null}\n    });\n\n    \"1857\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_observer_horizon, [ob_vector].concat([\u03c1\u03c3_desugar_kwargs({R: .8, opacity: .15, color_val: color.green})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(5, \u03c1\u03c3_unpack);\n    ob_horiz = \u03c1\u03c3_unpack[0];\n    ob_horizon_triangles = \u03c1\u03c3_unpack[1];\n    North = \u03c1\u03c3_unpack[2];\n    East = \u03c1\u03c3_unpack[3];\n    U = \u03c1\u03c3_unpack[4];\n    \"1859\";\n    async function place_label_on_horizon() {\n        var OP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var N = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var E = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var az_deg = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? place_label_on_horizon.__defaults__.az_deg : arguments[3];\n        var R = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? place_label_on_horizon.__defaults__.R : arguments[4];\n        var color_val = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? place_label_on_horizon.__defaults__.color_val : arguments[5];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"az_deg\")){\n            az_deg = \u03c1\u03c3_kwargs_obj.az_deg;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color_val\")){\n            color_val = \u03c1\u03c3_kwargs_obj.color_val;\n        }\n        var \u03c1\u03c3_ls, a, dir_vec, pos, ob_hor_lbl;\n        \"1866\";\n        a = (await radians(az_deg));\n        \"1867\";\n        dir_vec = cos(a)[\"*\"](N)[\"+\"](sin(a)[\"*\"](E));\n        \"1868\";\n        pos = OP[\"+\"](R[\"*\"](dir_vec));\n        \"1870\";\n        ob_hor_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: pos, text: \"Observer Visual Horizon\", height: dev_txt_height, color: color_val, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"1880\";\n        all_text_labels.append(ob_hor_lbl);\n        \"1883\";\n        ob_hor_lbl.visible = false;\n        \"1885\";\n        return ob_hor_lbl;\n    };\n    if (!place_label_on_horizon.__defaults__) Object.defineProperties(place_label_on_horizon, {\n        __defaults__ : {value: {az_deg:0, R:.6, color_val:color.green}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"OP\", \"N\", \"E\", \"az_deg\", \"R\", \"color_val\"]},\n        __module__ : {value: null}\n    });\n\n    \"1887\";\n    obs_horiz_label = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, place_label_on_horizon, [ob_vector, North, East].concat([\u03c1\u03c3_desugar_kwargs({az_deg: 90, color_val: color.green})])));\n    \"1890\";\n    ap_horiz = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_ap_horizon, [ll_vector, np_vec, color.red].concat([\u03c1\u03c3_desugar_kwargs({cardinals: true, opacity: .4})])));\n    \"1892\";\n    async function az_dir_from_GP(OP, GP) {\n        var \u03c1\u03c3_ls, proj;\n        \"1893\";\n        proj = GP[\"-\"](1[\"*\"](dot(GP, OP))[\"*\"](OP));\n        \"1895\";\n        return norm(proj);\n    };\n    if (!az_dir_from_GP.__argnames__) Object.defineProperties(az_dir_from_GP, {\n        __argnames__ : {value: [\"OP\", \"GP\"]},\n        __module__ : {value: null}\n    });\n\n    \"1897\";\n    az_dir = (await az_dir_from_GP(ob_vector, gp_vec));\n    \"1899\";\n    Ho_sector_tris = \u03c1\u03c3_list_decorate([]);\n    \"1901\";\n    async function draw_Ho_sector() {\n        var OP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var az_dir = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var Ho = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var R = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Ho_sector.__defaults__.R : arguments[3];\n        var N = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Ho_sector.__defaults__.N : arguments[4];\n        var color = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Ho_sector.__defaults__.color : arguments[5];\n        var opacity = (arguments[6] === undefined || ( 6 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Ho_sector.__defaults__.opacity : arguments[6];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"N\")){\n            N = \u03c1\u03c3_kwargs_obj.N;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, vertical, horizontal, t1, t2, ang1, ang2, d1, d2, v1, v2, tri, i, mid_ang, label_dir, label_pos;\n        \"1902\";\n        \"1903\";\n        Ho_sector_tris = \u03c1\u03c3_list_decorate([]);\n        \"1904\";\n        \"1906\";\n        OP = norm(OP);\n        \"1907\";\n        az_dir = norm(az_dir);\n        \"1913\";\n        vertical = OP;\n        \"1914\";\n        horizontal = az_dir;\n        \"1917\";\n        for (var \u03c1\u03c3_Index46 = 0; \u03c1\u03c3_Index46[\"<\"](N); \u03c1\u03c3_Index46++) {\n            i = \u03c1\u03c3_Index46;\n            \"1918\";\n            t1 = i[\"\/\"](N);\n            \"1919\";\n            t2 = i[\"+\"](1)[\"\/\"](N);\n            \"1922\";\n            ang1 = t1[\"*\"](Ho);\n            \"1923\";\n            ang2 = t2[\"*\"](Ho);\n            \"1925\";\n            d1 = norm(cos(ang1)[\"*\"](horizontal)[\"+\"](sin(ang1)[\"*\"](vertical)));\n            \"1926\";\n            d2 = norm(cos(ang2)[\"*\"](horizontal)[\"+\"](sin(ang2)[\"*\"](vertical)));\n            \"1928\";\n            v1 = OP[\"+\"](R[\"*\"](d1));\n            \"1929\";\n            v2 = OP[\"+\"](R[\"*\"](d2));\n            \"1931\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: OP, color: color, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v1, color: color, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v2, color: color, opacity: opacity})])})]);\n            \"1936\";\n            Ho_sector_tris.append(tri);\n        }\n        \"1939\";\n        \"1940\";\n        try {\n            \"1941\";\n            Ho_label.visible = false;\n            \"1942\";\n        } catch (\u03c1\u03c3_Exception) {\n            \u03c1\u03c3_last_exception = \u03c1\u03c3_Exception;\n            {\n                \"1943\";\n            } \n        }\n        \"1946\";\n        mid_ang = Ho[\"\/\"](2);\n        \"1947\";\n        label_dir = norm(cos(mid_ang)[\"*\"](horizontal)[\"+\"](sin(mid_ang)[\"*\"](vertical)));\n        \"1950\";\n        label_pos = OP[\"+\"](R[\"*\"](.6)[\"*\"](label_dir));\n        \"1952\";\n        Ho_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"Alt. Ho\", height: dev_txt_height, color: color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"1962\";\n        all_text_labels.append(Ho_label);\n        \"1965\";\n        var \u03c1\u03c3_Iter47 = Ho_sector_tris;\n        \u03c1\u03c3_Iter47 = ((typeof \u03c1\u03c3_Iter47[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter47 instanceof Map ? \u03c1\u03c3_Iter47.keys() : \u03c1\u03c3_Iter47) : Object.keys(\u03c1\u03c3_Iter47));\n        for (var \u03c1\u03c3_Index47 of \u03c1\u03c3_Iter47) {\n            tri = \u03c1\u03c3_Index47;\n            \"1966\";\n            tri.visible = false;\n        }\n        \"1967\";\n        Ho_label.visible = false;\n        \"1969\";\n        return Ho_label;\n    };\n    if (!draw_Ho_sector.__defaults__) Object.defineProperties(draw_Ho_sector, {\n        __defaults__ : {value: {R:1, N:40, color:color.white, opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"OP\", \"az_dir\", \"Ho\", \"R\", \"N\", \"color\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"1972\";\n    Ho_label = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_Ho_sector, [ob_vector, az_dir, radians(hodeg)].concat([\u03c1\u03c3_desugar_kwargs({R: .8, N: 40, color: color.green, opacity: .3})])));\n    \"1974\";\n    async function draw_Hc_sector() {\n        var AP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var GP = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var Hc = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var R = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Hc_sector.__defaults__.R : arguments[3];\n        var N = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Hc_sector.__defaults__.N : arguments[4];\n        var color = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Hc_sector.__defaults__.color : arguments[5];\n        var opacity = (arguments[6] === undefined || ( 6 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Hc_sector.__defaults__.opacity : arguments[6];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"N\")){\n            N = \u03c1\u03c3_kwargs_obj.N;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, C, vertical, dGP, axis, horizontal, t1, t2, ang1, ang2, d1, d2, p1, p2, tri, i, arc_pts, t, ang, u, mid_ang, label_dir, label_pos;\n        \"1975\";\n        \"1976\";\n        Hc_sector_tris = \u03c1\u03c3_list_decorate([]);\n        \"1977\";\n        \"1978\";\n        \"1980\";\n        C = vec(0, 0, 0);\n        \"1983\";\n        vertical = norm(AP[\"-\"](1[\"*\"](C)));\n        \"1986\";\n        dGP = norm(GP[\"-\"](1[\"*\"](C)));\n        \"1987\";\n        axis = cross(vertical, dGP);\n        \"1988\";\n        if (mag(axis)[\"<\"](1e-8)) {\n            \"1989\";\n            return;\n        }\n        \"1991\";\n        axis = norm(axis);\n        \"1994\";\n        horizontal = norm(\u03c1\u03c3_interpolate_kwargs.call(this, rotate, [vertical].concat([\u03c1\u03c3_desugar_kwargs({angle: pi[\"\/\"](2), axis: axis})])));\n        \"1997\";\n        for (var \u03c1\u03c3_Index48 = 0; \u03c1\u03c3_Index48[\"<\"](N); \u03c1\u03c3_Index48++) {\n            i = \u03c1\u03c3_Index48;\n            \"1998\";\n            t1 = i[\"\/\"](N);\n            \"1999\";\n            t2 = i[\"+\"](1)[\"\/\"](N);\n            \"2001\";\n            ang1 = t1[\"*\"](Hc);\n            \"2002\";\n            ang2 = t2[\"*\"](Hc);\n            \"2004\";\n            d1 = norm(cos(ang1)[\"*\"](horizontal)[\"+\"](sin(ang1)[\"*\"](vertical)));\n            \"2005\";\n            d2 = norm(cos(ang2)[\"*\"](horizontal)[\"+\"](sin(ang2)[\"*\"](vertical)));\n            \"2007\";\n            p1 = C[\"+\"](R[\"*\"](d1));\n            \"2008\";\n            p2 = C[\"+\"](R[\"*\"](d2));\n            \"2010\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: C, color: color, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: p1, color: color, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: p2, color: color, opacity: opacity})])})]);\n            \"2015\";\n            Hc_sector_tris.append(tri);\n        }\n        \"2018\";\n        arc_pts = \u03c1\u03c3_list_decorate([]);\n        \"2019\";\n        for (var \u03c1\u03c3_Index49 = 0; \u03c1\u03c3_Index49[\"<\"](N[\"+\"](1)); \u03c1\u03c3_Index49++) {\n            i = \u03c1\u03c3_Index49;\n            \"2020\";\n            t = i[\"\/\"](N);\n            \"2021\";\n            ang = t[\"*\"](Hc);\n            \"2022\";\n            u = norm(cos(ang)[\"*\"](horizontal)[\"+\"](sin(ang)[\"*\"](vertical)));\n            \"2023\";\n            arc_pts.append(C[\"+\"](R[\"*\"](u)));\n        }\n        \"2025\";\n        alt_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: arc_pts, color: color, radius: .005})]);\n        \"2028\";\n        try {\n            \"2029\";\n            Hc_label.visible = false;\n            \"2030\";\n        } catch (\u03c1\u03c3_Exception) {\n            \u03c1\u03c3_last_exception = \u03c1\u03c3_Exception;\n            {\n                \"2031\";\n            } \n        }\n        \"2034\";\n        mid_ang = Hc[\"\/\"](2);\n        \"2035\";\n        label_dir = norm(cos(mid_ang)[\"*\"](horizontal)[\"+\"](sin(mid_ang)[\"*\"](vertical)));\n        \"2036\";\n        label_pos = C[\"+\"](R[\"*\"](.6)[\"*\"](label_dir));\n        \"2038\";\n        Hc_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"Alt. Hc\", height: dev_txt_height, color: color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"2048\";\n        all_text_labels.append(Hc_label);\n        \"2051\";\n        var \u03c1\u03c3_Iter50 = Hc_sector_tris;\n        \u03c1\u03c3_Iter50 = ((typeof \u03c1\u03c3_Iter50[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter50 instanceof Map ? \u03c1\u03c3_Iter50.keys() : \u03c1\u03c3_Iter50) : Object.keys(\u03c1\u03c3_Iter50));\n        for (var \u03c1\u03c3_Index50 of \u03c1\u03c3_Iter50) {\n            tri = \u03c1\u03c3_Index50;\n            \"2052\";\n            tri.visible = false;\n        }\n        \"2053\";\n        alt_line.visible = false;\n        \"2054\";\n        Hc_label.visible = false;\n    };\n    if (!draw_Hc_sector.__defaults__) Object.defineProperties(draw_Hc_sector, {\n        __defaults__ : {value: {R:1, N:40, color:color.red, opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"AP\", \"GP\", \"Hc\", \"R\", \"N\", \"color\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"2057\";\n    Hc_sector_tris = \u03c1\u03c3_list_decorate([]);\n    \"2058\";\n    await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_Hc_sector, [ll_vector, gp_vec, radians(hcdeg)].concat([\u03c1\u03c3_desugar_kwargs({R: 1, N: 40, color: color.red, opacity: .3})])));\n    \"2061\";\n    async function rotate_around_x(v, angle_rad) {\n        \"2062\";\n        return \u03c1\u03c3_interpolate_kwargs.call(v, v.rotate, [\u03c1\u03c3_desugar_kwargs({angle: angle_rad, axis: vector(1, 0, 0)})]);\n    };\n    if (!rotate_around_x.__argnames__) Object.defineProperties(rotate_around_x, {\n        __argnames__ : {value: [\"v\", \"angle_rad\"]},\n        __module__ : {value: null}\n    });\n\n    \"2063\";\n    async function rotate_around_y(v, angle_rad) {\n        \"2064\";\n        return \u03c1\u03c3_interpolate_kwargs.call(v, v.rotate, [\u03c1\u03c3_desugar_kwargs({angle: angle_rad, axis: vector(0, 1, 0)})]);\n    };\n    if (!rotate_around_y.__argnames__) Object.defineProperties(rotate_around_y, {\n        __argnames__ : {value: [\"v\", \"angle_rad\"]},\n        __module__ : {value: null}\n    });\n\n    \"2065\";\n    async function rotate_around_z(v, angle_rad) {\n        \"2066\";\n        return \u03c1\u03c3_interpolate_kwargs.call(v, v.rotate, [\u03c1\u03c3_desugar_kwargs({angle: angle_rad, axis: vector(0, 0, 1)})]);\n    };\n    if (!rotate_around_z.__argnames__) Object.defineProperties(rotate_around_z, {\n        __argnames__ : {value: [\"v\", \"angle_rad\"]},\n        __module__ : {value: null}\n    });\n\n    \"2068\";\n    async function rotate_like_earth(v) {\n        var \u03c1\u03c3_ls, v1, v2;\n        \"2070\";\n        v1 = (await rotate_around_x(v, (await radians(1[\"-u\"]()[\"*\"](90)))));\n        \"2071\";\n        v2 = (await rotate_around_y(v1, pi));\n        \"2072\";\n        return v2;\n    };\n    if (!rotate_like_earth.__argnames__) Object.defineProperties(rotate_like_earth, {\n        __argnames__ : {value: [\"v\"]},\n        __module__ : {value: null}\n    });\n\n    \"2075\";\n    async function get_scene_north_pole() {\n        var \u03c1\u03c3_ls, NP, NP_rot;\n        \"2076\";\n        NP = vector(0, 0, 1);\n        \"2077\";\n        NP_rot = (await rotate_like_earth(NP));\n        \"2079\";\n        return NP_rot.norm();\n    };\n    if (!get_scene_north_pole.__module__) Object.defineProperties(get_scene_north_pole, {\n        __module__ : {value: null}\n    });\n\n    \"2082\";\n    async function get_scene_south_pole() {\n        var \u03c1\u03c3_ls, SP, SP_rot;\n        \"2083\";\n        SP = vector(0, 0, 1[\"-u\"]()[\"*\"](1));\n        \"2084\";\n        SP_rot = (await rotate_like_earth(SP));\n        \"2086\";\n        return SP_rot.norm();\n    };\n    if (!get_scene_south_pole.__module__) Object.defineProperties(get_scene_south_pole, {\n        __module__ : {value: null}\n    });\n\n    \"2088\";\n    async function draw_small_circle_on_earth(GP, center, circ_color, lbl_text, lbl_pos) {\n        var \u03c1\u03c3_ls, R, theta, temp, U, V, pts, a, p, deg, ea_circ, label_pos, label_offset, ea_label;\n        \"2096\";\n        GP = norm(GP);\n        \"2097\";\n        center = norm(center);\n        \"2099\";\n        R = 1;\n        \"2102\";\n        theta = acos(dot(GP, center));\n        \"2105\";\n        temp = vector(0, 0, 1);\n        \"2106\";\n        if (abs(dot(temp, GP))[\">\"](.99)) {\n            \"2107\";\n            temp = vector(1, 0, 0);\n        }\n        \"2109\";\n        U = norm(cross(GP, temp));\n        \"2110\";\n        V = norm(cross(GP, U));\n        \"2113\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"2114\";\n        for (var \u03c1\u03c3_Index51 = 0; \u03c1\u03c3_Index51[\"<\"](361); \u03c1\u03c3_Index51++) {\n            deg = \u03c1\u03c3_Index51;\n            \"2115\";\n            a = (await radians(deg));\n            \"2116\";\n            p = R[\"*\"](cos(theta)[\"*\"](GP)[\"+\"](sin(theta)[\"*\"](cos(a)[\"*\"](U)[\"+\"](sin(a)[\"*\"](V)))));\n            \"2117\";\n            pts.append(p);\n        }\n        \"2120\";\n        ea_circ = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: circ_color, radius: .005})]);\n        \"2122\";\n        label_pos = \u03c1\u03c3_getitem(ea_circ.point(lbl_pos), \"pos\");\n        \"2123\";\n        label_offset = 1.1;\n        \"2124\";\n        label_pos = norm(label_pos)[\"*\"](R)[\"*\"](label_offset);\n        \"2126\";\n        ea_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: lbl_text, height: dev_txt_height, color: circ_color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"2136\";\n        all_text_labels.append(ea_label);\n        \"2139\";\n        ea_circ.visible = false;\n        \"2140\";\n        ea_label.visible = false;\n        \"2142\";\n        return [ea_circ, ea_label];\n    };\n    if (!draw_small_circle_on_earth.__argnames__) Object.defineProperties(draw_small_circle_on_earth, {\n        __argnames__ : {value: [\"GP\", \"center\", \"circ_color\", \"lbl_text\", \"lbl_pos\"]},\n        __module__ : {value: null}\n    });\n\n    \"2145\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_small_circle_on_earth, [gp_vec, ll_vector, color.red].concat([\u03c1\u03c3_desugar_kwargs({lbl_text: \"AP Eq. Alt.\", lbl_pos: 45})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    ap_circ = \u03c1\u03c3_unpack[0];\n    ap_circ_lbl = \u03c1\u03c3_unpack[1];\n    \"2146\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_small_circle_on_earth, [gp_vec, ob_vector, color.green].concat([\u03c1\u03c3_desugar_kwargs({lbl_text: \"OB Eq. Alt\", lbl_pos: 65})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    ob_circ = \u03c1\u03c3_unpack[0];\n    ob_circ_lbl = \u03c1\u03c3_unpack[1];\n    \"2149\";\n    async function draw_center_to_AP() {\n        var AP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var color = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_center_to_AP.__defaults__.color : arguments[1];\n        var radius = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_center_to_AP.__defaults__.radius : arguments[2];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"radius\")){\n            radius = \u03c1\u03c3_kwargs_obj.radius;\n        }\n        \"2154\";\n        return \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: \u03c1\u03c3_list_decorate([ vector(0, 0, 0), AP ]), color: color, radius: radius})]);\n    };\n    if (!draw_center_to_AP.__defaults__) Object.defineProperties(draw_center_to_AP, {\n        __defaults__ : {value: {color:color.red, radius:.005}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"AP\", \"color\", \"radius\"]},\n        __module__ : {value: null}\n    });\n\n    \"2158\";\n    ap_line = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_center_to_AP, [ll_vector].concat([\u03c1\u03c3_desugar_kwargs({color: color.red, radius: .005})])));\n    \"2160\";\n    async function draw_arc_from_pn() {\n        var np_vec = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var sec_pt_vec = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var steps = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_arc_from_pn.__defaults__.steps : arguments[2];\n        var color = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_arc_from_pn.__defaults__.color : arguments[3];\n        var radius = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_arc_from_pn.__defaults__.radius : arguments[4];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"steps\")){\n            steps = \u03c1\u03c3_kwargs_obj.steps;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"radius\")){\n            radius = \u03c1\u03c3_kwargs_obj.radius;\n        }\n        var \u03c1\u03c3_ls, theta, pts, t, v, i;\n        \"2166\";\n        theta = acos(dot(np_vec, sec_pt_vec));\n        \"2168\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"2169\";\n        for (var \u03c1\u03c3_Index52 = 0; \u03c1\u03c3_Index52[\"<\"](steps[\"+\"](1)); \u03c1\u03c3_Index52++) {\n            i = \u03c1\u03c3_Index52;\n            \"2170\";\n            t = i[\"\/\"](steps);\n            \"2172\";\n            if ((theta !== 0 && (typeof theta !== \"object\" || \u03c1\u03c3_not_equals(theta, 0)))) {\n                \"2173\";\n                v = sin(1[\"-\"](1[\"*\"](t))[\"*\"](theta))[\"\/\"](sin(theta))[\"*\"](np_vec)[\"+\"](sin(t[\"*\"](theta))[\"\/\"](sin(theta))[\"*\"](sec_pt_vec));\n                \"2174\";\n            } else {\n                \"2175\";\n                v = np_vec;\n            }\n            \"2176\";\n            pts.append(v.norm());\n        }\n        \"2178\";\n        return \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color, radius: radius})]);\n    };\n    if (!draw_arc_from_pn.__defaults__) Object.defineProperties(draw_arc_from_pn, {\n        __defaults__ : {value: {steps:100, color:color.cyan, radius:.005}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"np_vec\", \"sec_pt_vec\", \"steps\", \"color\", \"radius\"]},\n        __module__ : {value: null}\n    });\n\n    \"2181\";\n    colat_arc = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_arc_from_pn, [np_vec, ll_vector].concat([\u03c1\u03c3_desugar_kwargs({steps: 100, color: color.cyan, radius: .005, res: 128, shininess: 0})])));\n    \"2183\";\n    cl_label_pos = \u03c1\u03c3_getitem(colat_arc.point(70), \"pos\");\n    \"2184\";\n    cl_label_offset = 1.1;\n    \"2185\";\n    cl_label_pos = norm(cl_label_pos)[\"*\"](R)[\"*\"](cl_label_offset);\n    \"2187\";\n    cl_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: cl_label_pos, text: \"Colatitude\", height: dev_txt_height, color: color.cyan, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n    \"2197\";\n    all_text_labels.append(cl_label);\n    \"2200\";\n    pd_arc = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_arc_from_pn, [np_vec, gp_vec].concat([\u03c1\u03c3_desugar_kwargs({steps: 100, color: color.cyan, radius: .005, res: 128, shininess: 0})])));\n    \"2202\";\n    pd_label_pos = \u03c1\u03c3_getitem(pd_arc.point(60), \"pos\");\n    \"2203\";\n    pd_label_offset = 1.1;\n    \"2204\";\n    pd_label_pos = norm(pd_label_pos)[\"*\"](R)[\"*\"](pd_label_offset);\n    \"2206\";\n    pd_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: pd_label_pos, text: \"Polar Dist.\", height: dev_txt_height, color: color.cyan, align: \"center\", billboard: true, depth: 0, emissive: true, shininess: 0})]);\n    \"2217\";\n    all_text_labels.append(pd_label);\n    \"2220\";\n    async function draw_GHA_line() {\n        var GP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var N_rot = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var color = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_GHA_line.__defaults__.color : arguments[2];\n        var thickness = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_GHA_line.__defaults__.thickness : arguments[3];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"thickness\")){\n            thickness = \u03c1\u03c3_kwargs_obj.thickness;\n        }\n        var \u03c1\u03c3_ls, tmp, G0, phi0, G_ref, GP_proj, lon, N, pts, frac, lam, pt, i, gp_gha_line, mid_index, mid_pt, lift, label_pos, label_offset, gp_gha_lbl;\n        \"2229\";\n        tmp = vec(1, 0, 0);\n        \"2230\";\n        if (abs(dot(tmp, N_rot))[\">\"](.9)) {\n            \"2231\";\n            tmp = vec(0, 1, 0);\n        }\n        \"2233\";\n        G0 = norm(tmp[\"-\"](1[\"*\"](dot(tmp, N_rot))[\"*\"](N_rot)));\n        \"2236\";\n        phi0 = 1[\"-u\"]()[\"*\"](pi)[\"\/\"](2);\n        \"2237\";\n        G_ref = G0[\"*\"](cos(phi0))[\"+\"](cross(N_rot, G0)[\"*\"](sin(phi0)))[\"+\"](N_rot[\"*\"](dot(N_rot, G0))[\"*\"](1[\"-\"](1[\"*\"](cos(phi0)))));\n        \"2242\";\n        GP_proj = norm(GP[\"-\"](1[\"*\"](dot(GP, N_rot))[\"*\"](N_rot)));\n        \"2244\";\n        lon = atan2(dot(cross(G_ref, GP_proj), N_rot), dot(G_ref, GP_proj));\n        \"2247\";\n        N = 100;\n        \"2248\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"2249\";\n        for (var \u03c1\u03c3_Index53 = 0; \u03c1\u03c3_Index53[\"<\"](N[\"+\"](1)); \u03c1\u03c3_Index53++) {\n            i = \u03c1\u03c3_Index53;\n            \"2250\";\n            frac = i[\"\/\"](N);\n            \"2251\";\n            lam = frac[\"*\"](lon);\n            \"2252\";\n            pt = G_ref[\"*\"](cos(lam))[\"+\"](cross(N_rot, G_ref)[\"*\"](sin(lam)))[\"+\"](N_rot[\"*\"](dot(N_rot, G_ref))[\"*\"](1[\"-\"](1[\"*\"](cos(lam)))));\n            \"2255\";\n            pts.append(pt);\n        }\n        \"2257\";\n        gp_gha_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color, radius: thickness})]);\n        \"2260\";\n        mid_index = Math.floor(N[\"\/\"](2));\n        \"2261\";\n        mid_pt = \u03c1\u03c3_getitem(pts, mid_index);\n        \"2263\";\n        lift = .07[\"*\"](norm(earth_axis));\n        \"2264\";\n        label_pos = mid_pt[\"-\"](1[\"*\"](lift));\n        \"2265\";\n        label_offset = 1.05;\n        \"2266\";\n        label_pos = norm(label_pos)[\"*\"](R)[\"*\"](label_offset);\n        \"2268\";\n        gp_gha_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"GHA\", height: dev_txt_height, color: color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"2278\";\n        all_text_labels.append(gp_gha_lbl);\n        \"2281\";\n        gp_gha_line.visible = false;\n        \"2282\";\n        gp_gha_lbl.visible = false;\n        \"2284\";\n        return [gp_gha_line, gp_gha_lbl];\n    };\n    if (!draw_GHA_line.__defaults__) Object.defineProperties(draw_GHA_line, {\n        __defaults__ : {value: {color:color.yellow, thickness:.01}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"GP\", \"N_rot\", \"color\", \"thickness\"]},\n        __module__ : {value: null}\n    });\n\n    \"2286\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_GHA_line, [gp_vec, np_vec].concat([\u03c1\u03c3_desugar_kwargs({color: color.yellow, thickness: .005})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    gp_gha_line = \u03c1\u03c3_unpack[0];\n    gp_gha_lbl = \u03c1\u03c3_unpack[1];\n    \"2288\";\n    async function draw_GHA_sector() {\n        var GHA = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var N_rot = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var R = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_GHA_sector.__defaults__.R : arguments[2];\n        var N = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_GHA_sector.__defaults__.N : arguments[3];\n        var color = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_GHA_sector.__defaults__.color : arguments[4];\n        var opacity = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_GHA_sector.__defaults__.opacity : arguments[5];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"N\")){\n            N = \u03c1\u03c3_kwargs_obj.N;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, tmp, G0, phi0, G_ref, O, gp_gha_tris, t1, t2, lam1, lam2, d1, d2, v1, v2, tri, i;\n        \"2291\";\n        tmp = vec(1, 0, 0);\n        \"2292\";\n        if (abs(dot(tmp, N_rot))[\">\"](.9)) {\n            \"2293\";\n            tmp = vec(0, 1, 0);\n        }\n        \"2295\";\n        G0 = norm(tmp[\"-\"](1[\"*\"](dot(tmp, N_rot))[\"*\"](N_rot)));\n        \"2298\";\n        phi0 = 1[\"-u\"]()[\"*\"](pi)[\"\/\"](2);\n        \"2299\";\n        G_ref = G0[\"*\"](cos(phi0))[\"+\"](cross(N_rot, G0)[\"*\"](sin(phi0)))[\"+\"](N_rot[\"*\"](dot(N_rot, G0))[\"*\"](1[\"-\"](1[\"*\"](cos(phi0)))));\n        \"2304\";\n        O = vec(0, 0, 0);\n        \"2305\";\n        gp_gha_tris = \u03c1\u03c3_list_decorate([]);\n        \"2307\";\n        for (var \u03c1\u03c3_Index54 = 0; \u03c1\u03c3_Index54[\"<\"](N); \u03c1\u03c3_Index54++) {\n            i = \u03c1\u03c3_Index54;\n            \"2308\";\n            t1 = i[\"\/\"](N);\n            \"2309\";\n            t2 = i[\"+\"](1)[\"\/\"](N);\n            \"2311\";\n            lam1 = 1[\"-u\"]()[\"*\"](t1)[\"*\"](GHA);\n            \"2312\";\n            lam2 = 1[\"-u\"]()[\"*\"](t2)[\"*\"](GHA);\n            \"2315\";\n            d1 = G_ref[\"*\"](cos(lam1))[\"+\"](cross(N_rot, G_ref)[\"*\"](sin(lam1)))[\"+\"](N_rot[\"*\"](dot(N_rot, G_ref))[\"*\"](1[\"-\"](1[\"*\"](cos(lam1)))));\n            \"2319\";\n            d2 = G_ref[\"*\"](cos(lam2))[\"+\"](cross(N_rot, G_ref)[\"*\"](sin(lam2)))[\"+\"](N_rot[\"*\"](dot(N_rot, G_ref))[\"*\"](1[\"-\"](1[\"*\"](cos(lam2)))));\n            \"2323\";\n            v1 = O[\"+\"](R[\"*\"](d1));\n            \"2324\";\n            v2 = O[\"+\"](R[\"*\"](d2));\n            \"2326\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: O, color: color, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v1, color: color, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v2, color: color, opacity: opacity})])})]);\n            \"2331\";\n            gp_gha_tris.append(tri);\n        }\n        \"2334\";\n        var \u03c1\u03c3_Iter55 = gp_gha_tris;\n        \u03c1\u03c3_Iter55 = ((typeof \u03c1\u03c3_Iter55[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter55 instanceof Map ? \u03c1\u03c3_Iter55.keys() : \u03c1\u03c3_Iter55) : Object.keys(\u03c1\u03c3_Iter55));\n        for (var \u03c1\u03c3_Index55 of \u03c1\u03c3_Iter55) {\n            tri = \u03c1\u03c3_Index55;\n            \"2335\";\n            tri.visible = false;\n        }\n        \"2337\";\n        return gp_gha_tris;\n    };\n    if (!draw_GHA_sector.__defaults__) Object.defineProperties(draw_GHA_sector, {\n        __defaults__ : {value: {R:1, N:80, color:color.yellow, opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"GHA\", \"N_rot\", \"R\", \"N\", \"color\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"2339\";\n    gp_gha_tris = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_GHA_sector, [radians(gp_gha), np_vec].concat([\u03c1\u03c3_desugar_kwargs({R: 1, N: 100, color: color.yellow, opacity: .3})])));\n    \"2342\";\n    async function draw_gp_declination() {\n        var GP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var N_rot = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var color = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_gp_declination.__defaults__.color : arguments[2];\n        var thickness = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_gp_declination.__defaults__.thickness : arguments[3];\n        var offset_deg = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_gp_declination.__defaults__.offset_deg : arguments[4];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"thickness\")){\n            thickness = \u03c1\u03c3_kwargs_obj.thickness;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"offset_deg\")){\n            offset_deg = \u03c1\u03c3_kwargs_obj.offset_deg;\n        }\n        var \u03c1\u03c3_ls, decl, GP_equator, axis, offset, GP_equator_offset, N, pts, frac, phi, pt, i, gp_dec_line, mid_pt, label_pos, label_offset, gp_dec_lbl;\n        \"2350\";\n        decl = asin(dot(GP, N_rot));\n        \"2353\";\n        GP_equator = GP[\"-\"](1[\"*\"](dot(GP, N_rot))[\"*\"](N_rot));\n        \"2354\";\n        GP_equator = norm(GP_equator);\n        \"2357\";\n        axis = norm(cross(GP_equator, N_rot));\n        \"2361\";\n        offset = (await radians(offset_deg));\n        \"2362\";\n        GP_equator_offset = GP_equator[\"*\"](cos(offset))[\"+\"](cross(N_rot, GP_equator)[\"*\"](sin(offset)))[\"+\"](N_rot[\"*\"](dot(N_rot, GP_equator))[\"*\"](1[\"-\"](1[\"*\"](cos(offset)))));\n        \"2369\";\n        N = 100;\n        \"2370\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"2371\";\n        for (var \u03c1\u03c3_Index56 = 0; \u03c1\u03c3_Index56[\"<\"](N[\"+\"](1)); \u03c1\u03c3_Index56++) {\n            i = \u03c1\u03c3_Index56;\n            \"2372\";\n            frac = i[\"\/\"](N);\n            \"2373\";\n            phi = frac[\"*\"](decl);\n            \"2375\";\n            pt = GP_equator_offset[\"*\"](cos(phi))[\"+\"](cross(axis, GP_equator_offset)[\"*\"](sin(phi)))[\"+\"](axis[\"*\"](dot(axis, GP_equator_offset))[\"*\"](1[\"-\"](1[\"*\"](cos(phi)))));\n            \"2379\";\n            pts.append(pt);\n        }\n        \"2381\";\n        gp_dec_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color, radius: thickness})]);\n        \"2384\";\n        mid_pt = \u03c1\u03c3_getitem(pts, Math.floor(N[\"\/\"](2)));\n        \"2385\";\n        label_pos = mid_pt;\n        \"2386\";\n        label_offset = 1.1;\n        \"2387\";\n        label_pos = norm(label_pos)[\"*\"](R)[\"*\"](label_offset);\n        \"2389\";\n        gp_dec_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"Declination\", height: dev_txt_height, color: color, align: \"left\", depth: 0, billboard: true, emissive: true})]);\n        \"2399\";\n        all_text_labels.append(gp_dec_lbl);\n        \"2402\";\n        gp_dec_line.visible = false;\n        \"2403\";\n        gp_dec_lbl.visible = false;\n        \"2405\";\n        return [gp_dec_line, gp_dec_lbl];\n    };\n    if (!draw_gp_declination.__defaults__) Object.defineProperties(draw_gp_declination, {\n        __defaults__ : {value: {color:color.yellow, thickness:.005, offset_deg:2}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"GP\", \"N_rot\", \"color\", \"thickness\", \"offset_deg\"]},\n        __module__ : {value: null}\n    });\n\n    \"2407\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_gp_declination, [gp_vec, np_vec].concat([\u03c1\u03c3_desugar_kwargs({color: color.yellow, thickness: .005, offset_deg: .7})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    gp_dec_line = \u03c1\u03c3_unpack[0];\n    gp_dec_lbl = \u03c1\u03c3_unpack[1];\n    \"2409\";\n    async function draw_dec_sector() {\n        var GP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var N_rot = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var R = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_dec_sector.__defaults__.R : arguments[2];\n        var N = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_dec_sector.__defaults__.N : arguments[3];\n        var color = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_dec_sector.__defaults__.color : arguments[4];\n        var opacity = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_dec_sector.__defaults__.opacity : arguments[5];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"N\")){\n            N = \u03c1\u03c3_kwargs_obj.N;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, O, GP_proj, dec, axis, gp_dec_tris, t1, t2, lam1, lam2, d1, d2, v1, v2, tri, i;\n        \"2415\";\n        O = vec(0, 0, 0);\n        \"2418\";\n        GP_proj = norm(GP[\"-\"](1[\"*\"](dot(GP, N_rot))[\"*\"](N_rot)));\n        \"2421\";\n        dec = asin(dot(GP, N_rot));\n        \"2424\";\n        axis = norm(cross(GP_proj, N_rot));\n        \"2426\";\n        gp_dec_tris = \u03c1\u03c3_list_decorate([]);\n        \"2428\";\n        for (var \u03c1\u03c3_Index57 = 0; \u03c1\u03c3_Index57[\"<\"](N); \u03c1\u03c3_Index57++) {\n            i = \u03c1\u03c3_Index57;\n            \"2429\";\n            t1 = i[\"\/\"](N);\n            \"2430\";\n            t2 = i[\"+\"](1)[\"\/\"](N);\n            \"2432\";\n            lam1 = t1[\"*\"](dec);\n            \"2433\";\n            lam2 = t2[\"*\"](dec);\n            \"2436\";\n            d1 = GP_proj[\"*\"](cos(lam1))[\"+\"](cross(axis, GP_proj)[\"*\"](sin(lam1)))[\"+\"](axis[\"*\"](dot(axis, GP_proj))[\"*\"](1[\"-\"](1[\"*\"](cos(lam1)))));\n            \"2440\";\n            d2 = GP_proj[\"*\"](cos(lam2))[\"+\"](cross(axis, GP_proj)[\"*\"](sin(lam2)))[\"+\"](axis[\"*\"](dot(axis, GP_proj))[\"*\"](1[\"-\"](1[\"*\"](cos(lam2)))));\n            \"2444\";\n            v1 = O[\"+\"](R[\"*\"](d1));\n            \"2445\";\n            v2 = O[\"+\"](R[\"*\"](d2));\n            \"2447\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: O, color: color, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v1, color: color, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v2, color: color, opacity: opacity})])})]);\n            \"2452\";\n            gp_dec_tris.append(tri);\n        }\n        \"2455\";\n        var \u03c1\u03c3_Iter58 = gp_dec_tris;\n        \u03c1\u03c3_Iter58 = ((typeof \u03c1\u03c3_Iter58[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter58 instanceof Map ? \u03c1\u03c3_Iter58.keys() : \u03c1\u03c3_Iter58) : Object.keys(\u03c1\u03c3_Iter58));\n        for (var \u03c1\u03c3_Index58 of \u03c1\u03c3_Iter58) {\n            tri = \u03c1\u03c3_Index58;\n            \"2456\";\n            tri.visible = false;\n        }\n        \"2458\";\n        return gp_dec_tris;\n    };\n    if (!draw_dec_sector.__defaults__) Object.defineProperties(draw_dec_sector, {\n        __defaults__ : {value: {R:1, N:80, color:color.yellow, opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"GP\", \"N_rot\", \"R\", \"N\", \"color\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"2460\";\n    gp_dec_tris = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_dec_sector, [gp_vec, np_vec].concat([\u03c1\u03c3_desugar_kwargs({R: 1, N: 80, color: color.yellow, opacity: .3})])));\n    \"2463\";\n    async function draw_ap_celestial_horizon_with_label() {\n        var ap_vec = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var R = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ap_celestial_horizon_with_label.__defaults__.R : arguments[1];\n        var color_horizon = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ap_celestial_horizon_with_label.__defaults__.color_horizon : arguments[2];\n        var thickness = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ap_celestial_horizon_with_label.__defaults__.thickness : arguments[3];\n        var N = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ap_celestial_horizon_with_label.__defaults__.N : arguments[4];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color_horizon\")){\n            color_horizon = \u03c1\u03c3_kwargs_obj.color_horizon;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"thickness\")){\n            thickness = \u03c1\u03c3_kwargs_obj.thickness;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"N\")){\n            N = \u03c1\u03c3_kwargs_obj.N;\n        }\n        var \u03c1\u03c3_ls, n, tmp, e1, e2, pts, theta, p, i, ap_cel_horiz_curve, label_pos, ap_cel_horiz_label;\n        \"2472\";\n        n = norm(ap_vec);\n        \"2476\";\n        if (abs(dot(n, vector(0, 0, 1)))[\"<\"](.9)) {\n            \"2477\";\n            tmp = vector(0, 0, 1);\n            \"2478\";\n        } else {\n            \"2479\";\n            tmp = vector(0, 1, 0);\n        }\n        \"2481\";\n        e1 = norm(cross(n, tmp));\n        \"2482\";\n        e2 = cross(n, e1);\n        \"2485\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"2486\";\n        for (var \u03c1\u03c3_Index59 = 0; \u03c1\u03c3_Index59[\"<\"](N[\"+\"](1)); \u03c1\u03c3_Index59++) {\n            i = \u03c1\u03c3_Index59;\n            \"2487\";\n            theta = 2[\"*\"](pi)[\"*\"](i)[\"\/\"](N);\n            \"2488\";\n            p = R[\"*\"](cos(theta)[\"*\"](e1)[\"+\"](sin(theta)[\"*\"](e2)));\n            \"2489\";\n            pts.append(p);\n        }\n        \"2491\";\n        ap_cel_horiz_curve = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color_horizon, radius: thickness})]);\n        \"2493\";\n        label_pos = 1.05[\"*\"](R)[\"*\"](e2)[\"+\"](.03[\"*\"](n));\n        \"2495\";\n        ap_cel_horiz_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"AP Celestial Horizon\", height: dev_txt_height, color: color_horizon, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"2505\";\n        all_text_labels.append(ap_cel_horiz_label);\n        \"2508\";\n        ap_cel_horiz_curve.visible = false;\n        \"2509\";\n        ap_cel_horiz_label.visible = false;\n        \"2511\";\n        return [ap_cel_horiz_curve, ap_cel_horiz_label];\n    };\n    if (!draw_ap_celestial_horizon_with_label.__defaults__) Object.defineProperties(draw_ap_celestial_horizon_with_label, {\n        __defaults__ : {value: {R:2, color_horizon:color.red, thickness:.01, N:200}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"ap_vec\", \"R\", \"color_horizon\", \"thickness\", \"N\"]},\n        __module__ : {value: null}\n    });\n\n    \"2513\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_ap_celestial_horizon_with_label, [ll_vector].concat([\u03c1\u03c3_desugar_kwargs({R: 2, color_horizon: color.red, thickness: .005, N: 200})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    ap_cel_horiz_curve = \u03c1\u03c3_unpack[0];\n    ap_cel_horiz_label = \u03c1\u03c3_unpack[1];\n    \"2516\";\n    async function draw_ob_celestial_horizon_with_label() {\n        var ob_vec = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var R = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ob_celestial_horizon_with_label.__defaults__.R : arguments[1];\n        var color_horizon = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ob_celestial_horizon_with_label.__defaults__.color_horizon : arguments[2];\n        var thickness = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ob_celestial_horizon_with_label.__defaults__.thickness : arguments[3];\n        var N = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ob_celestial_horizon_with_label.__defaults__.N : arguments[4];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color_horizon\")){\n            color_horizon = \u03c1\u03c3_kwargs_obj.color_horizon;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"thickness\")){\n            thickness = \u03c1\u03c3_kwargs_obj.thickness;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"N\")){\n            N = \u03c1\u03c3_kwargs_obj.N;\n        }\n        var \u03c1\u03c3_ls, n, tmp, e1, e2, pts, theta, p, i, ob_cel_horiz_curve, label_pos, ob_cel_horiz_label;\n        \"2525\";\n        n = norm(ob_vec);\n        \"2529\";\n        if (abs(dot(n, vector(0, 0, 1)))[\"<\"](.9)) {\n            \"2530\";\n            tmp = vector(0, 0, 1);\n            \"2531\";\n        } else {\n            \"2532\";\n            tmp = vector(0, 1, 0);\n        }\n        \"2534\";\n        e1 = norm(cross(n, tmp));\n        \"2535\";\n        e2 = cross(n, e1);\n        \"2538\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"2539\";\n        for (var \u03c1\u03c3_Index60 = 0; \u03c1\u03c3_Index60[\"<\"](N[\"+\"](1)); \u03c1\u03c3_Index60++) {\n            i = \u03c1\u03c3_Index60;\n            \"2540\";\n            theta = 2[\"*\"](pi)[\"*\"](i)[\"\/\"](N);\n            \"2541\";\n            p = R[\"*\"](cos(theta)[\"*\"](e1)[\"+\"](sin(theta)[\"*\"](e2)));\n            \"2542\";\n            pts.append(p);\n        }\n        \"2544\";\n        ob_cel_horiz_curve = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color_horizon, radius: thickness})]);\n        \"2546\";\n        label_pos = 1.05[\"*\"](R)[\"*\"](e2)[\"-\"](1[\"*\"](.5)[\"*\"](n));\n        \"2548\";\n        ob_cel_horiz_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"Observer's Apparent Cel. Horizon\", height: dev_txt_height, color: color_horizon, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"2558\";\n        all_text_labels.append(ob_cel_horiz_label);\n        \"2561\";\n        ob_cel_horiz_curve.visible = false;\n        \"2562\";\n        ob_cel_horiz_label.visible = false;\n        \"2564\";\n        return [ob_cel_horiz_curve, ob_cel_horiz_label];\n    };\n    if (!draw_ob_celestial_horizon_with_label.__defaults__) Object.defineProperties(draw_ob_celestial_horizon_with_label, {\n        __defaults__ : {value: {R:2, color_horizon:color.green, thickness:.01, N:200}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"ob_vec\", \"R\", \"color_horizon\", \"thickness\", \"N\"]},\n        __module__ : {value: null}\n    });\n\n    \"2566\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_ob_celestial_horizon_with_label, [ob_vector].concat([\u03c1\u03c3_desugar_kwargs({R: 2, color_horizon: color.green, thickness: .005, N: 200})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    ob_cel_horiz_curve = \u03c1\u03c3_unpack[0];\n    ob_cel_horiz_label = \u03c1\u03c3_unpack[1];\n    \"2569\";\n    async function draw_celestial_equator() {\n        var R = (arguments[0] === undefined || ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_celestial_equator.__defaults__.R : arguments[0];\n        var n_steps = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_celestial_equator.__defaults__.n_steps : arguments[1];\n        var color_val = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_celestial_equator.__defaults__.color_val : arguments[2];\n        var thickness = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_celestial_equator.__defaults__.thickness : arguments[3];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"n_steps\")){\n            n_steps = \u03c1\u03c3_kwargs_obj.n_steps;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color_val\")){\n            color_val = \u03c1\u03c3_kwargs_obj.color_val;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"thickness\")){\n            thickness = \u03c1\u03c3_kwargs_obj.thickness;\n        }\n        var \u03c1\u03c3_ls, pts, theta, x, y, z, i, cel_equator, base_pos, x0, y0, z0, front_pos, label_pos, cel_equator_lbl;\n        \"2576\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"2577\";\n        for (var \u03c1\u03c3_Index61 = 0; \u03c1\u03c3_Index61[\"<\"](n_steps[\"+\"](1)); \u03c1\u03c3_Index61++) {\n            i = \u03c1\u03c3_Index61;\n            \"2578\";\n            theta = 2[\"*\"](pi)[\"*\"](i)[\"\/\"](n_steps);\n            \"2579\";\n            x = R[\"*\"](cos(theta));\n            \"2580\";\n            y = 0;\n            \"2581\";\n            z = R[\"*\"](sin(theta));\n            \"2582\";\n            pts.append(vector(x, y, z));\n        }\n        \"2584\";\n        cel_equator = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color_val, radius: thickness})]);\n        \"2587\";\n        base_pos = vector(R, 0, 0);\n        \"2590\";\n        theta = (await radians(15));\n        \"2593\";\n        x0 = 1[\"-u\"]()[\"*\"](base_pos.x);\n        \"2594\";\n        y0 = base_pos.y;\n        \"2595\";\n        z0 = 1[\"-u\"]()[\"*\"](base_pos.z);\n        \"2598\";\n        front_pos = vector(x0[\"*\"](cos(theta))[\"+\"](z0[\"*\"](sin(theta))), y0, 1[\"-u\"]()[\"*\"](x0)[\"*\"](sin(theta))[\"+\"](z0[\"*\"](cos(theta))));\n        \"2601\";\n        label_pos = front_pos[\"+\"](vector(0, .02[\"*\"](R), 0));\n        \"2603\";\n        cel_equator_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"Celestial Equator\", height: dev_txt_height, color: color_val, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"2613\";\n        all_text_labels.append(cel_equator_lbl);\n        \"2616\";\n        cel_equator.visible = false;\n        \"2617\";\n        cel_equator_lbl.visible = false;\n        \"2619\";\n        return [cel_equator, cel_equator_lbl];\n    };\n    if (!draw_celestial_equator.__defaults__) Object.defineProperties(draw_celestial_equator, {\n        __defaults__ : {value: {R:2, n_steps:200, color_val:color.white, thickness:.01}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"R\", \"n_steps\", \"color_val\", \"thickness\"]},\n        __module__ : {value: null}\n    });\n\n    \"2621\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_celestial_equator, [\u03c1\u03c3_desugar_kwargs({R: 2, n_steps: 200, color_val: color.white, thickness: .005})]));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    cel_equator = \u03c1\u03c3_unpack[0];\n    cel_equator_lbl = \u03c1\u03c3_unpack[1];\n    \"2624\";\n    async function draw_ob_ap_horizon() {\n        var axis_vec = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var NP_rot = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var circ_color = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var cardinals = ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[3];\n        var opacity = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ob_ap_horizon.__defaults__.opacity : arguments[4];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, U, NP, N, E, ob_ap_plane, pts, R, a, p, deg, ob_ap_horiz, marker_size;\n        \"2634\";\n        \"2635\";\n        \"2638\";\n        U = norm(axis_vec);\n        \"2639\";\n        NP = norm(NP_rot);\n        \"2642\";\n        N = NP[\"-\"](1[\"*\"](dot(NP, U))[\"*\"](U));\n        \"2643\";\n        N = norm(N);\n        \"2646\";\n        E = norm(cross(N, U));\n        \"2648\";\n        ob_ap_plane = (await draw_ob_ap_horizon_fill(axis_vec, circ_color, opacity));\n        \"2651\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"2652\";\n        R = 1;\n        \"2654\";\n        for (var \u03c1\u03c3_Index62 = 0; \u03c1\u03c3_Index62[\"<\"](361); \u03c1\u03c3_Index62++) {\n            deg = \u03c1\u03c3_Index62;\n            \"2655\";\n            a = (await radians(deg));\n            \"2656\";\n            p = R[\"*\"](cos(a)[\"*\"](N)[\"+\"](sin(a)[\"*\"](E)));\n            \"2657\";\n            pts.append(p);\n        }\n        \"2659\";\n        ob_ap_horiz = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: circ_color, radius: .005})]);\n        \"2662\";\n        if ((cardinals === true || typeof cardinals === \"object\" && \u03c1\u03c3_equals(cardinals, true))) {\n            \"2664\";\n            marker_size = .015;\n            \"2667\";\n            ob_n_card = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: R[\"*\"](N), radius: marker_size, color: circ_color})]);\n            \"2668\";\n            ob_n_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: 1.1[\"*\"](R)[\"*\"](N), text: \"N\", height: dev_txt_height, color: circ_color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n            \"2678\";\n            all_text_labels.append(ob_n_lbl);\n            \"2681\";\n            ob_e_card = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: R[\"*\"](E), radius: marker_size, color: circ_color})]);\n            \"2682\";\n            ob_e_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: 1.1[\"*\"](R)[\"*\"](E), text: \"E\", height: dev_txt_height, color: circ_color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n            \"2692\";\n            all_text_labels.append(ob_e_lbl);\n            \"2695\";\n            ob_s_card = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: 1[\"-u\"]()[\"*\"](R)[\"*\"](N), radius: marker_size, color: circ_color})]);\n            \"2696\";\n            ob_s_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: 1[\"-u\"]()[\"*\"](1.1)[\"*\"](R)[\"*\"](N), text: \"S\", height: dev_txt_height, color: circ_color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n            \"2705\";\n            all_text_labels.append(ob_s_lbl);\n            \"2708\";\n            ob_w_card = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: 1[\"-u\"]()[\"*\"](R)[\"*\"](E), radius: marker_size, color: circ_color})]);\n            \"2709\";\n            ob_w_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: 1[\"-u\"]()[\"*\"](1.1)[\"*\"](R)[\"*\"](E), text: \"W\", height: dev_txt_height, color: circ_color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n            \"2718\";\n            all_text_labels.append(ob_w_lbl);\n            \"2721\";\n            ob_n_card.visible = false;\n            \"2722\";\n            ob_n_lbl.visible = false;\n            \"2723\";\n            ob_e_card.visible = false;\n            \"2724\";\n            ob_e_lbl.visible = false;\n            \"2725\";\n            ob_w_card.visible = false;\n            \"2726\";\n            ob_w_lbl.visible = false;\n            \"2727\";\n            ob_s_card.visible = false;\n            \"2728\";\n            ob_s_lbl.visible = false;\n        }\n        \"2731\";\n        ob_ap_horiz.visible = false;\n        \"2733\";\n        return ob_ap_horiz;\n    };\n    if (!draw_ob_ap_horizon.__defaults__) Object.defineProperties(draw_ob_ap_horizon, {\n        __defaults__ : {value: {opacity:.5}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"axis_vec\", \"NP_rot\", \"circ_color\", \"cardinals\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"2735\";\n    async function draw_ob_ap_horizon_fill() {\n        var axis_vec = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var color_val = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var opacity = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ob_ap_horizon_fill.__defaults__.opacity : arguments[2];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, U, temp, E, N, R, center, triangles_list, steps, a1, a2, p1, p2, tri, i;\n        \"2742\";\n        \"2743\";\n        ob_ap_horiz_triangles = \u03c1\u03c3_list_decorate([]);\n        \"2745\";\n        U = norm(axis_vec);\n        \"2748\";\n        temp = vector(0, 0, 1);\n        \"2749\";\n        if (abs(dot(temp, U))[\">\"](.99)) {\n            \"2750\";\n            temp = vector(1, 0, 0);\n        }\n        \"2752\";\n        E = norm(cross(U, temp));\n        \"2753\";\n        N = norm(cross(E, U));\n        \"2755\";\n        R = 1;\n        \"2756\";\n        center = vector(0, 0, 0);\n        \"2759\";\n        triangles_list = \u03c1\u03c3_list_decorate([]);\n        \"2761\";\n        steps = 90;\n        \"2762\";\n        for (var \u03c1\u03c3_Index63 = 0; \u03c1\u03c3_Index63[\"<\"](steps); \u03c1\u03c3_Index63++) {\n            i = \u03c1\u03c3_Index63;\n            \"2763\";\n            a1 = 2[\"*\"](pi)[\"*\"](i)[\"\/\"](steps);\n            \"2764\";\n            a2 = 2[\"*\"](pi)[\"*\"](i[\"+\"](1))[\"\/\"](steps);\n            \"2766\";\n            p1 = R[\"*\"](cos(a1)[\"*\"](N)[\"+\"](sin(a1)[\"*\"](E)));\n            \"2767\";\n            p2 = R[\"*\"](cos(a2)[\"*\"](N)[\"+\"](sin(a2)[\"*\"](E)));\n            \"2769\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: center, color: color_val, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: p1, color: color_val, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: p2, color: color_val, opacity: opacity})])})]);\n            \"2774\";\n            ob_ap_horiz_triangles.append(tri);\n        }\n        \"2777\";\n        var \u03c1\u03c3_Iter64 = ob_ap_horiz_triangles;\n        \u03c1\u03c3_Iter64 = ((typeof \u03c1\u03c3_Iter64[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter64 instanceof Map ? \u03c1\u03c3_Iter64.keys() : \u03c1\u03c3_Iter64) : Object.keys(\u03c1\u03c3_Iter64));\n        for (var \u03c1\u03c3_Index64 of \u03c1\u03c3_Iter64) {\n            tri = \u03c1\u03c3_Index64;\n            \"2778\";\n            tri.visible = false;\n        }\n        \"2780\";\n        return ob_ap_horiz_triangles;\n    };\n    if (!draw_ob_ap_horizon_fill.__defaults__) Object.defineProperties(draw_ob_ap_horizon_fill, {\n        __defaults__ : {value: {opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"axis_vec\", \"color_val\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"2782\";\n    async function label_OB_AP_horizon() {\n        var OB = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var R_horizon = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? label_OB_AP_horizon.__defaults__.R_horizon : arguments[1];\n        var offset = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? label_OB_AP_horizon.__defaults__.offset : arguments[2];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R_horizon\")){\n            R_horizon = \u03c1\u03c3_kwargs_obj.R_horizon;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"offset\")){\n            offset = \u03c1\u03c3_kwargs_obj.offset;\n        }\n        var \u03c1\u03c3_ls, up, temp, horiz, label_pos, ob_hor_lbl;\n        \"2784\";\n        up = norm(OB);\n        \"2788\";\n        temp = vector(1, 0, 0);\n        \"2789\";\n        if (abs(dot(temp, up))[\">\"](.9)) {\n            \"2790\";\n            temp = vector(0, 1, 0);\n        }\n        \"2793\";\n        horiz = norm(cross(up, temp));\n        \"2796\";\n        label_pos = horiz[\"*\"](R_horizon)[\"*\"](offset)[\"-\"](1[\"*\"](scene.up)[\"*\"](.5));\n        \"2798\";\n        ob_hor_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"OB Apparent Horiz.\", height: dev_txt_height, color: color.green, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"2808\";\n        all_text_labels.append(ob_hor_lbl);\n        \"2811\";\n        ob_hor_lbl.visible = false;\n        \"2813\";\n        return ob_hor_lbl;\n    };\n    if (!label_OB_AP_horizon.__defaults__) Object.defineProperties(label_OB_AP_horizon, {\n        __defaults__ : {value: {R_horizon:2, offset:1.05}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"OB\", \"R_horizon\", \"offset\"]},\n        __module__ : {value: null}\n    });\n\n    \"2815\";\n    ob_ap_horiz = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_ob_ap_horizon, [ob_vector, np_vec, color.green].concat([\u03c1\u03c3_desugar_kwargs({cardinals: true, opacity: .3})])));\n    \"2816\";\n    ob_ap_horiz_label = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, label_OB_AP_horizon, [ob_vector].concat([\u03c1\u03c3_desugar_kwargs({R_horizon: .6, offset: 1.05})])));\n    \"2819\";\n    async function draw_OB_AP_Ho_line(OB, GP, Ho_deg) {\n        var \u03c1\u03c3_ls, U, GP_horiz, Ho, Ho_dir, origin, Body, ho_line;\n        \"2831\";\n        OB = norm(OB);\n        \"2832\";\n        GP = norm(GP);\n        \"2835\";\n        U = OB;\n        \"2838\";\n        GP_horiz = GP[\"-\"](1[\"*\"](dot(GP, U))[\"*\"](U));\n        \"2839\";\n        GP_horiz = norm(GP_horiz);\n        \"2842\";\n        Ho = (await radians(Ho_deg));\n        \"2845\";\n        Ho_dir = cos(Ho)[\"*\"](GP_horiz)[\"+\"](sin(Ho)[\"*\"](U));\n        \"2846\";\n        Ho_dir = norm(Ho_dir);\n        \"2849\";\n        origin = vector(0, 0, 0);\n        \"2850\";\n        Body = Ho_dir;\n        \"2853\";\n        ho_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: \u03c1\u03c3_list_decorate([ origin, Body ]), color: color.green, radius: .005})]);\n        \"2856\";\n        ho_line.visible = false;\n        \"2858\";\n        return ho_line;\n    };\n    if (!draw_OB_AP_Ho_line.__argnames__) Object.defineProperties(draw_OB_AP_Ho_line, {\n        __argnames__ : {value: [\"OB\", \"GP\", \"Ho_deg\"]},\n        __module__ : {value: null}\n    });\n\n    \"2860\";\n    ho_ap_ho_line = (await draw_OB_AP_Ho_line(ob_vector, gp_vec, hodeg));\n    \"2862\";\n    async function draw_OB_AP_sector() {\n        var OP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var GP = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var Ho = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var R = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_OB_AP_sector.__defaults__.R : arguments[3];\n        var n_steps = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_OB_AP_sector.__defaults__.n_steps : arguments[4];\n        var color = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_OB_AP_sector.__defaults__.color : arguments[5];\n        var opacity = (arguments[6] === undefined || ( 6 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_OB_AP_sector.__defaults__.opacity : arguments[6];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"n_steps\")){\n            n_steps = \u03c1\u03c3_kwargs_obj.n_steps;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, U, temp, E, N, GP_proj, az_dir, horizontal, vertical, ob_ap_sector_tris, t1, t2, ang1, ang2, d1, d2, v1, v2, tri, i, C, arc_pts, t, ang, u, mid_ang, label_dir, label_pos, ob_ap_sect_label;\n        \"2870\";\n        \"2873\";\n        U = norm(OP);\n        \"2876\";\n        temp = vector(0, 0, 1);\n        \"2877\";\n        if (abs(dot(temp, U))[\">\"](.99)) {\n            \"2878\";\n            temp = vector(1, 0, 0);\n        }\n        \"2880\";\n        E = norm(cross(U, temp));\n        \"2881\";\n        N = norm(cross(E, U));\n        \"2884\";\n        GP_proj = GP[\"-\"](1[\"*\"](dot(GP, U))[\"*\"](U));\n        \"2885\";\n        if (mag(GP_proj)[\"<\"](1e-6)) {\n            \"2886\";\n            az_dir = N;\n            \"2887\";\n        } else {\n            \"2888\";\n            az_dir = norm(GP_proj);\n        }\n        \"2891\";\n        horizontal = az_dir;\n        \"2892\";\n        vertical = U;\n        \"2895\";\n        ob_ap_sector_tris = \u03c1\u03c3_list_decorate([]);\n        \"2896\";\n        for (var \u03c1\u03c3_Index65 = 0; \u03c1\u03c3_Index65[\"<\"](n_steps); \u03c1\u03c3_Index65++) {\n            i = \u03c1\u03c3_Index65;\n            \"2897\";\n            t1 = i[\"\/\"](n_steps);\n            \"2898\";\n            t2 = i[\"+\"](1)[\"\/\"](n_steps);\n            \"2900\";\n            ang1 = t1[\"*\"](Ho);\n            \"2901\";\n            ang2 = t2[\"*\"](Ho);\n            \"2903\";\n            d1 = norm(cos(ang1)[\"*\"](horizontal)[\"+\"](sin(ang1)[\"*\"](vertical)));\n            \"2904\";\n            d2 = norm(cos(ang2)[\"*\"](horizontal)[\"+\"](sin(ang2)[\"*\"](vertical)));\n            \"2906\";\n            v1 = R[\"*\"](d1);\n            \"2907\";\n            v2 = R[\"*\"](d2);\n            \"2909\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 0, 0), color: color, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v1, color: color, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v2, color: color, opacity: opacity})])})]);\n            \"2914\";\n            ob_ap_sector_tris.append(tri);\n        }\n        \"2917\";\n        C = vec(0, 0, 0);\n        \"2918\";\n        arc_pts = \u03c1\u03c3_list_decorate([]);\n        \"2919\";\n        for (var \u03c1\u03c3_Index66 = 0; \u03c1\u03c3_Index66[\"<\"](n_steps[\"+\"](1)); \u03c1\u03c3_Index66++) {\n            i = \u03c1\u03c3_Index66;\n            \"2920\";\n            t = i[\"\/\"](n_steps);\n            \"2921\";\n            ang = t[\"*\"](Ho);\n            \"2922\";\n            u = norm(cos(ang)[\"*\"](horizontal)[\"+\"](sin(ang)[\"*\"](vertical)));\n            \"2923\";\n            arc_pts.append(C[\"+\"](R[\"*\"](u)));\n        }\n        \"2925\";\n        ob_ap_alt_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: arc_pts, color: color, radius: .005})]);\n        \"2928\";\n        mid_ang = Ho[\"\/\"](2);\n        \"2929\";\n        label_dir = norm(cos(mid_ang)[\"*\"](horizontal)[\"+\"](sin(mid_ang)[\"*\"](vertical)));\n        \"2930\";\n        label_pos = R[\"*\"](.5)[\"*\"](label_dir);\n        \"2932\";\n        ob_ap_sect_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"Alt. Ho\", height: dev_txt_height, color: color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"2942\";\n        all_text_labels.append(ob_ap_sect_label);\n        \"2945\";\n        var \u03c1\u03c3_Iter67 = ob_ap_sector_tris;\n        \u03c1\u03c3_Iter67 = ((typeof \u03c1\u03c3_Iter67[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter67 instanceof Map ? \u03c1\u03c3_Iter67.keys() : \u03c1\u03c3_Iter67) : Object.keys(\u03c1\u03c3_Iter67));\n        for (var \u03c1\u03c3_Index67 of \u03c1\u03c3_Iter67) {\n            tri = \u03c1\u03c3_Index67;\n            \"2946\";\n            tri.visible = false;\n        }\n        \"2947\";\n        ob_ap_sect_label.visible = false;\n        \"2948\";\n        ob_ap_alt_line.visible = false;\n        \"2950\";\n        return [ob_ap_sector_tris, ob_ap_sect_label];\n    };\n    if (!draw_OB_AP_sector.__defaults__) Object.defineProperties(draw_OB_AP_sector, {\n        __defaults__ : {value: {R:1, n_steps:40, color:color.white, opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"OP\", \"GP\", \"Ho\", \"R\", \"n_steps\", \"color\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"2952\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_OB_AP_sector, [ob_vector, gp_vec, radians(hodeg)].concat([\u03c1\u03c3_desugar_kwargs({R: 1, n_steps: 40, color: color.green, opacity: .3})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    ob_ap_sector_tris = \u03c1\u03c3_unpack[0];\n    ob_ap_sect_label = \u03c1\u03c3_unpack[1];\n    \"2955\";\n    async function draw_ecliptic() {\n        var R = (arguments[0] === undefined || ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ecliptic.__defaults__.R : arguments[0];\n        var tilt = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_ecliptic.__defaults__.tilt : arguments[1];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"tilt\")){\n            tilt = \u03c1\u03c3_kwargs_obj.tilt;\n        }\n        var \u03c1\u03c3_ls, ecliptic_pole, ecliptic, base_pos, flipped_pos, final_pos, ecl_lbl;\n        \"2963\";\n        ecliptic_pole = \u03c1\u03c3_interpolate_kwargs.call(this, rotate, [vector(0, 1, 0)].concat([\u03c1\u03c3_desugar_kwargs({angle: 1[\"-u\"]()[\"*\"](tilt), axis: vector(1, 0, 0)})]));\n        \"2966\";\n        ecliptic = \u03c1\u03c3_interpolate_kwargs.call(this, ring, [\u03c1\u03c3_desugar_kwargs({pos: vector(0, 0, 0), axis: ecliptic_pole, radius: R, thickness: .005, color: color.yellow})]);\n        \"2974\";\n        base_pos = \u03c1\u03c3_interpolate_kwargs.call(this, rotate, [vector(R, 0, 0)].concat([\u03c1\u03c3_desugar_kwargs({angle: tilt, axis: vector(1, 0, 0)})]))[\"*\"](1.05);\n        \"2977\";\n        flipped_pos = \u03c1\u03c3_interpolate_kwargs.call(this, rotate, [base_pos].concat([\u03c1\u03c3_desugar_kwargs({angle: pi, axis: ecliptic_pole})]));\n        \"2978\";\n        final_pos = \u03c1\u03c3_interpolate_kwargs.call(this, rotate, [flipped_pos].concat([\u03c1\u03c3_desugar_kwargs({angle: 1[\"-u\"]()[\"*\"](10)[\"*\"](pi)[\"\/\"](180), axis: ecliptic_pole})]));\n        \"2980\";\n        ecl_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: final_pos, text: \"Ecliptic\", height: dev_txt_height, color: color.yellow, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"2991\";\n        all_text_labels.append(ecl_lbl);\n        \"2994\";\n        ecliptic.visible = false;\n        \"2995\";\n        ecl_lbl.visible = false;\n        \"2997\";\n        return [ecliptic, ecl_lbl];\n    };\n    if (!draw_ecliptic.__defaults__) Object.defineProperties(draw_ecliptic, {\n        __defaults__ : {value: {R:2, tilt:23.439[\"*\"](pi)[\"\/\"](180)}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"R\", \"tilt\"]},\n        __module__ : {value: null}\n    });\n\n    \"2999\";\n    \u03c1\u03c3_unpack = (await draw_ecliptic());\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    ecliptic = \u03c1\u03c3_unpack[0];\n    ecl_lbl = \u03c1\u03c3_unpack[1];\n    \"3004\";\n    async function add_equinox_markers(R) {\n        var \u03c1\u03c3_ls, ve, vernal, v_base_pos, v_label_pos, veq_lbl, ae, autumnal, a_base_pos, a_label_pos, aeq_lbl;\n        \"3011\";\n        ve = vec(1, 0, 0);\n        \"3012\";\n        vernal = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: R[\"*\"](ve), radius: .01[\"*\"](R), color: color.orange, emissive: true})]);\n        \"3014\";\n        v_base_pos = 1[\"-u\"]()[\"*\"](R)[\"*\"](ve);\n        \"3015\";\n        v_label_pos = 1.05[\"*\"](v_base_pos);\n        \"3016\";\n        v_label_pos.y=v_label_pos.y[\"-\"](.03[\"*\"](R));\n        \"3018\";\n        veq_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: v_label_pos, text: \"Vernal Equinox\/Aries\", height: dev_txt_height, color: color.orange, align: \"left\", depth: 0, billboard: true, emissive: true})]);\n        \"3028\";\n        all_text_labels.append(veq_lbl);\n        \"3031\";\n        ae = vec(1[\"-u\"]()[\"*\"](1), 0, 0);\n        \"3032\";\n        autumnal = \u03c1\u03c3_interpolate_kwargs.call(this, sphere, [\u03c1\u03c3_desugar_kwargs({pos: R[\"*\"](ae), radius: .01[\"*\"](R), color: color.orange, emissive: true})]);\n        \"3035\";\n        a_base_pos = R[\"*\"](ae);\n        \"3036\";\n        a_label_pos = 1[\"-u\"]()[\"*\"](1.05)[\"*\"](a_base_pos);\n        \"3037\";\n        a_label_pos.y=a_label_pos.y[\"-\"](.03[\"*\"](R));\n        \"3038\";\n        aeq_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: a_label_pos, text: \"Autumnal Equinox\", height: dev_txt_height, color: color.orange, align: \"left\", depth: 0, billboard: true, emissive: true})]);\n        \"3048\";\n        all_text_labels.append(aeq_lbl);\n        \"3051\";\n        vernal.visible = false;\n        \"3052\";\n        autumnal.visible = false;\n        \"3053\";\n        veq_lbl.visible = false;\n        \"3054\";\n        aeq_lbl.visible = false;\n        \"3056\";\n        return [vernal, autumnal, veq_lbl, aeq_lbl];\n    };\n    if (!add_equinox_markers.__argnames__) Object.defineProperties(add_equinox_markers, {\n        __argnames__ : {value: [\"R\"]},\n        __module__ : {value: null}\n    });\n\n    \"3058\";\n    \u03c1\u03c3_unpack = (await add_equinox_markers(2));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(4, \u03c1\u03c3_unpack);\n    vernal = \u03c1\u03c3_unpack[0];\n    autumnal = \u03c1\u03c3_unpack[1];\n    veq_lbl = \u03c1\u03c3_unpack[2];\n    aeq_lbl = \u03c1\u03c3_unpack[3];\n    \"3061\";\n    async function draw_LHA_sector_from_angle() {\n        var LHA = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var AP = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var N_rot = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var R = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_LHA_sector_from_angle.__defaults__.R : arguments[3];\n        var N = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_LHA_sector_from_angle.__defaults__.N : arguments[4];\n        var color = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_LHA_sector_from_angle.__defaults__.color : arguments[5];\n        var opacity = (arguments[6] === undefined || ( 6 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_LHA_sector_from_angle.__defaults__.opacity : arguments[6];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"N\")){\n            N = \u03c1\u03c3_kwargs_obj.N;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, O, AP_mer, lha_tris, t1, t2, lam1, lam2, d1, d2, v1, v2, tri, i, mid_angle, d_mid, label_pos, LHA_label;\n        \"3068\";\n        O = vec(0, 0, 0);\n        \"3071\";\n        AP_mer = norm(AP[\"-\"](1[\"*\"](dot(AP, N_rot))[\"*\"](N_rot)));\n        \"3074\";\n        LHA = 1[\"-u\"]()[\"*\"](LHA);\n        \"3076\";\n        lha_tris = \u03c1\u03c3_list_decorate([]);\n        \"3079\";\n        for (var \u03c1\u03c3_Index68 = 0; \u03c1\u03c3_Index68[\"<\"](N); \u03c1\u03c3_Index68++) {\n            i = \u03c1\u03c3_Index68;\n            \"3080\";\n            t1 = i[\"\/\"](N);\n            \"3081\";\n            t2 = i[\"+\"](1)[\"\/\"](N);\n            \"3083\";\n            lam1 = t1[\"*\"](LHA);\n            \"3084\";\n            lam2 = t2[\"*\"](LHA);\n            \"3087\";\n            d1 = AP_mer[\"*\"](cos(lam1))[\"+\"](cross(N_rot, AP_mer)[\"*\"](sin(lam1)))[\"+\"](N_rot[\"*\"](dot(N_rot, AP_mer))[\"*\"](1[\"-\"](1[\"*\"](cos(lam1)))));\n            \"3091\";\n            d2 = AP_mer[\"*\"](cos(lam2))[\"+\"](cross(N_rot, AP_mer)[\"*\"](sin(lam2)))[\"+\"](N_rot[\"*\"](dot(N_rot, AP_mer))[\"*\"](1[\"-\"](1[\"*\"](cos(lam2)))));\n            \"3095\";\n            v1 = O[\"+\"](R[\"*\"](d1));\n            \"3096\";\n            v2 = O[\"+\"](R[\"*\"](d2));\n            \"3098\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: O, color: color, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v1, color: color, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v2, color: color, opacity: opacity})])})]);\n            \"3103\";\n            lha_tris.append(tri);\n        }\n        \"3106\";\n        mid_angle = LHA[\"\/\"](4);\n        \"3108\";\n        d_mid = AP_mer[\"*\"](cos(mid_angle))[\"+\"](cross(N_rot, AP_mer)[\"*\"](sin(mid_angle)))[\"+\"](N_rot[\"*\"](dot(N_rot, AP_mer))[\"*\"](1[\"-\"](1[\"*\"](cos(mid_angle)))));\n        \"3113\";\n        label_pos = O[\"+\"](R[\"*\"](.6)[\"*\"](d_mid));\n        \"3115\";\n        LHA_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"LHA\", height: dev_txt_height, color: color.white, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"3125\";\n        all_text_labels.append(LHA_label);\n        \"3128\";\n        var \u03c1\u03c3_Iter69 = lha_tris;\n        \u03c1\u03c3_Iter69 = ((typeof \u03c1\u03c3_Iter69[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter69 instanceof Map ? \u03c1\u03c3_Iter69.keys() : \u03c1\u03c3_Iter69) : Object.keys(\u03c1\u03c3_Iter69));\n        for (var \u03c1\u03c3_Index69 of \u03c1\u03c3_Iter69) {\n            tri = \u03c1\u03c3_Index69;\n            \"3129\";\n            tri.visible = false;\n        }\n        \"3130\";\n        LHA_label.visible = false;\n        \"3132\";\n        return [lha_tris, LHA_label];\n    };\n    if (!draw_LHA_sector_from_angle.__defaults__) Object.defineProperties(draw_LHA_sector_from_angle, {\n        __defaults__ : {value: {R:1, N:80, color:color.white, opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"LHA\", \"AP\", \"N_rot\", \"R\", \"N\", \"color\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"3134\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_LHA_sector_from_angle, [radians(331), ll_vector, np_vec].concat([\u03c1\u03c3_desugar_kwargs({R: 1, N: 80, color: color.white, opacity: .3})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    lha_tris = \u03c1\u03c3_unpack[0];\n    lha_label = \u03c1\u03c3_unpack[1];\n    \"3137\";\n    async function draw_azimuth_sector() {\n        var AP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var GP = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var N_rot = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var Zn = ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[3];\n        var R = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_azimuth_sector.__defaults__.R : arguments[4];\n        var N = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_azimuth_sector.__defaults__.N : arguments[5];\n        var color = (arguments[6] === undefined || ( 6 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_azimuth_sector.__defaults__.color : arguments[6];\n        var opacity = (arguments[7] === undefined || ( 7 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_azimuth_sector.__defaults__.opacity : arguments[7];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"N\")){\n            N = \u03c1\u03c3_kwargs_obj.N;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, O, lift, north, east, zn_plane_tris, t1, t2, ang1, ang2, d1, d2, v1, v2, tri, i, mid, d_mid, label_pos, zn_plane_label;\n        \"3144\";\n        O = vec(0, 0, 0);\n        \"3147\";\n        lift = .03[\"*\"](R);\n        \"3151\";\n        north = N_rot[\"-\"](1[\"*\"](dot(N_rot, AP))[\"*\"](AP));\n        \"3152\";\n        north = norm(north);\n        \"3155\";\n        east = norm(cross(AP, north));\n        \"3158\";\n        Zn = 1[\"-u\"]()[\"*\"](Zn);\n        \"3160\";\n        zn_plane_tris = \u03c1\u03c3_list_decorate([]);\n        \"3163\";\n        for (var \u03c1\u03c3_Index70 = 0; \u03c1\u03c3_Index70[\"<\"](N); \u03c1\u03c3_Index70++) {\n            i = \u03c1\u03c3_Index70;\n            \"3164\";\n            t1 = i[\"\/\"](N);\n            \"3165\";\n            t2 = i[\"+\"](1)[\"\/\"](N);\n            \"3167\";\n            ang1 = t1[\"*\"](Zn);\n            \"3168\";\n            ang2 = t2[\"*\"](Zn);\n            \"3171\";\n            d1 = north[\"*\"](cos(ang1))[\"+\"](cross(AP, north)[\"*\"](sin(ang1)))[\"+\"](AP[\"*\"](dot(AP, north))[\"*\"](1[\"-\"](1[\"*\"](cos(ang1)))));\n            \"3175\";\n            d2 = north[\"*\"](cos(ang2))[\"+\"](cross(AP, north)[\"*\"](sin(ang2)))[\"+\"](AP[\"*\"](dot(AP, north))[\"*\"](1[\"-\"](1[\"*\"](cos(ang2)))));\n            \"3182\";\n            v1 = O[\"+\"](R[\"*\"](d1))[\"+\"](lift[\"*\"](AP));\n            \"3183\";\n            v2 = O[\"+\"](R[\"*\"](d2))[\"+\"](lift[\"*\"](AP));\n            \"3185\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: O, color: color, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v1, color: color, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v2, color: color, opacity: opacity})])})]);\n            \"3190\";\n            zn_plane_tris.append(tri);\n        }\n        \"3193\";\n        mid = Zn[\"\/\"](2);\n        \"3195\";\n        d_mid = north[\"*\"](cos(mid))[\"+\"](cross(AP, north)[\"*\"](sin(mid)))[\"+\"](AP[\"*\"](dot(AP, north))[\"*\"](1[\"-\"](1[\"*\"](cos(mid)))));\n        \"3199\";\n        label_pos = O[\"+\"](R[\"*\"](.6)[\"*\"](d_mid));\n        \"3201\";\n        zn_plane_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"Azimuth\/Zn\", height: dev_txt_height, color: color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"3211\";\n        all_text_labels.append(zn_plane_label);\n        \"3214\";\n        var \u03c1\u03c3_Iter71 = zn_plane_tris;\n        \u03c1\u03c3_Iter71 = ((typeof \u03c1\u03c3_Iter71[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter71 instanceof Map ? \u03c1\u03c3_Iter71.keys() : \u03c1\u03c3_Iter71) : Object.keys(\u03c1\u03c3_Iter71));\n        for (var \u03c1\u03c3_Index71 of \u03c1\u03c3_Iter71) {\n            tri = \u03c1\u03c3_Index71;\n            \"3215\";\n            tri.visible = false;\n        }\n        \"3216\";\n        zn_plane_label.visible = false;\n        \"3218\";\n        return [zn_plane_tris, zn_plane_label];\n    };\n    if (!draw_azimuth_sector.__defaults__) Object.defineProperties(draw_azimuth_sector, {\n        __defaults__ : {value: {R:1, N:80, color:color.cyan, opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"AP\", \"GP\", \"N_rot\", \"Zn\", \"R\", \"N\", \"color\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"3220\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_azimuth_sector, [ll_vector, gp_vec, np_vec, radians(146.938)].concat([\u03c1\u03c3_desugar_kwargs({R: 1, N: 80, color: color.cyan, opacity: .3})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    zn_plane_tris = \u03c1\u03c3_unpack[0];\n    zn_plane_label = \u03c1\u03c3_unpack[1];\n    \"3223\";\n    async function draw_lop() {\n        var AP_vec = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var GP_vec = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var a_deg = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_lop.__defaults__.a_deg : arguments[2];\n        var a_min = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_lop.__defaults__.a_min : arguments[3];\n        var direction = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_lop.__defaults__.direction : arguments[4];\n        var R = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_lop.__defaults__.R : arguments[5];\n        var curve_len = (arguments[6] === undefined || ( 6 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_lop.__defaults__.curve_len : arguments[6];\n        var steps = (arguments[7] === undefined || ( 7 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_lop.__defaults__.steps : arguments[7];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"a_deg\")){\n            a_deg = \u03c1\u03c3_kwargs_obj.a_deg;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"a_min\")){\n            a_min = \u03c1\u03c3_kwargs_obj.a_min;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"direction\")){\n            direction = \u03c1\u03c3_kwargs_obj.direction;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"curve_len\")){\n            curve_len = \u03c1\u03c3_kwargs_obj.curve_len;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"steps\")){\n            steps = \u03c1\u03c3_kwargs_obj.steps;\n        }\n        var \u03c1\u03c3_ls, A_hat, G_hat, a_total_deg, a_rad, plane_n, tmp, t_gc, north_dir, P_lop, t_lop, lop_dir, pts, s, angle, pt, i, lop_curve, index, label_pos, lop_lbl;\n        \"3228\";\n        A_hat = norm(AP_vec);\n        \"3229\";\n        G_hat = norm(GP_vec);\n        \"3232\";\n        a_total_deg = a_deg[\"+\"](a_min[\"\/\"](60));\n        \"3233\";\n        a_rad = a_total_deg[\"*\"](pi)[\"\/\"](180);\n        \"3235\";\n        if (\u03c1\u03c3_equals(direction.upper(), \"T\")) {\n            \"3236\";\n            a_rad = 1[\"-u\"]()[\"*\"](a_rad);\n        }\n        \"3239\";\n        plane_n = cross(A_hat, G_hat);\n        \"3242\";\n        if (mag(plane_n)[\"<\"](1e-8)) {\n            \"3243\";\n            tmp = vec(0, 1, 0);\n            \"3244\";\n            if (abs(dot(tmp, A_hat))[\">\"](.9)) {\n                \"3245\";\n                tmp = vec(1, 0, 0);\n            }\n            \"3246\";\n            plane_n = cross(A_hat, tmp);\n        }\n        \"3248\";\n        plane_n = norm(plane_n);\n        \"3251\";\n        t_gc = cross(plane_n, A_hat);\n        \"3252\";\n        t_gc = norm(t_gc);\n        \"3255\";\n        if (dot(t_gc, G_hat[\"-\"](1[\"*\"](A_hat)))[\"<\"](0)) {\n            \"3256\";\n            t_gc = 1[\"-u\"]()[\"*\"](t_gc);\n        }\n        \"3259\";\n        north_dir = 1[\"-u\"]()[\"*\"](t_gc);\n        \"3262\";\n        P_lop = A_hat[\"*\"](cos(a_rad))[\"+\"](north_dir[\"*\"](sin(a_rad)));\n        \"3263\";\n        P_lop = norm(P_lop)[\"*\"](R);\n        \"3266\";\n        t_lop = cross(plane_n, P_lop);\n        \"3267\";\n        t_lop = norm(t_lop);\n        \"3270\";\n        lop_dir = norm(cross(P_lop, t_lop));\n        \"3273\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"3274\";\n        for (var \u03c1\u03c3_Index72 = 0; \u03c1\u03c3_Index72[\"<\"](steps); \u03c1\u03c3_Index72++) {\n            i = \u03c1\u03c3_Index72;\n            \"3275\";\n            s = curve_len[\"*\"](2[\"*\"](i)[\"\/\"](steps[\"-\"](1[\"*\"](1)))[\"-\"](1[\"*\"](1)));\n            \"3276\";\n            angle = s[\"\/\"](R);\n            \"3277\";\n            pt = P_lop[\"*\"](cos(angle))[\"+\"](lop_dir[\"*\"](sin(angle)));\n            \"3278\";\n            pt = norm(pt)[\"*\"](R);\n            \"3279\";\n            pts.append(pt);\n        }\n        \"3281\";\n        lop_curve = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color.yellow, radius: .004, shininess: 0})]);\n        \"3284\";\n        index = int(.7[\"*\"](len(pts)));\n        \"3285\";\n        label_pos = \u03c1\u03c3_getitem(pts, index)[\"*\"](1.02);\n        \"3287\";\n        lop_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({text: \"LOP\", pos: label_pos, height: dev_txt_height, color: color.yellow, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"3296\";\n        all_text_labels.append(lop_lbl);\n        \"3302\";\n        return [lop_curve, lop_lbl, P_lop];\n    };\n    if (!draw_lop.__defaults__) Object.defineProperties(draw_lop, {\n        __defaults__ : {value: {a_deg:0, a_min:0, direction:\"A\", R:1, curve_len:.3, steps:200}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"AP_vec\", \"GP_vec\", \"a_deg\", \"a_min\", \"direction\", \"R\", \"curve_len\", \"steps\"]},\n        __module__ : {value: null}\n    });\n\n    \"3304\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_lop, [ll_vector, gp_vec, avaldeg, avalmin].concat([\u03c1\u03c3_desugar_kwargs({direction: tora_letter, R: 1, curve_len: .3, steps: 200})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(3, \u03c1\u03c3_unpack);\n    lop_curve = \u03c1\u03c3_unpack[0];\n    lop_lbl = \u03c1\u03c3_unpack[1];\n    P_lop = \u03c1\u03c3_unpack[2];\n    \"3307\";\n    async function draw_a_value_indicator() {\n        var AP_vec = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var P_lop = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var avaldeg = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var avalmin = ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[3];\n        var R = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_a_value_indicator.__defaults__.R : arguments[4];\n        var scale = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_a_value_indicator.__defaults__.scale : arguments[5];\n        var color = (arguments[6] === undefined || ( 6 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_a_value_indicator.__defaults__.color : arguments[6];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"scale\")){\n            scale = \u03c1\u03c3_kwargs_obj.scale;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        var \u03c1\u03c3_ls, p0, p1, a_cyl, mid, mid_dir, n, tangent, angle, tangent_rot, arrow_len, arrow_offset, arrow_start, arrow_axis, a_arrow, label_pos, lbl_text, a_label;\n        \"3316\";\n        p0 = AP_vec[\"*\"](R)[\"*\"](scale);\n        \"3317\";\n        p1 = P_lop[\"*\"](R)[\"*\"](scale);\n        \"3320\";\n        a_cyl = \u03c1\u03c3_interpolate_kwargs.call(this, cylinder, [\u03c1\u03c3_desugar_kwargs({pos: p0, axis: p1[\"-\"](1[\"*\"](p0)), radius: .005, color: color, shininess: 0})]);\n        \"3328\";\n        mid = p0[\"+\"](p1)[\"\/\"](2);\n        \"3329\";\n        mid_dir = norm(mid);\n        \"3332\";\n        n = norm(cross(AP_vec, P_lop));\n        \"3335\";\n        tangent = norm(cross(n, mid));\n        \"3338\";\n        angle = (await radians(115));\n        \"3339\";\n        tangent_rot = tangent[\"*\"](cos(angle))[\"+\"](cross(mid_dir, tangent)[\"*\"](sin(angle)))[\"+\"](mid_dir[\"*\"](dot(mid_dir, tangent))[\"*\"](1[\"-\"](1[\"*\"](cos(angle)))));\n        \"3344\";\n        tangent_rot = norm(tangent_rot);\n        \"3347\";\n        arrow_len = .15[\"*\"](R);\n        \"3348\";\n        arrow_offset = arrow_len[\"*\"](1.08);\n        \"3350\";\n        arrow_start = mid[\"+\"](tangent_rot[\"*\"](arrow_offset));\n        \"3351\";\n        arrow_axis = 1[\"-u\"]()[\"*\"](tangent_rot)[\"*\"](arrow_len);\n        \"3353\";\n        a_arrow = \u03c1\u03c3_interpolate_kwargs.call(this, arrow, [\u03c1\u03c3_desugar_kwargs({pos: arrow_start, axis: arrow_axis, color: color, shaftwidth: .006[\"*\"](R)})]);\n        \"3361\";\n        label_pos = arrow_start[\"+\"](tangent_rot[\"*\"](arrow_len)[\"*\"](.7));\n        \"3363\";\n        if (avaldeg[\">\"](0)) {\n            \"3364\";\n            lbl_text = \"a = \"[\"+\"](\u03c1\u03c3_str.format(\"{}\", avaldeg))[\"+\"](\"\u00b0 \")[\"+\"](\u03c1\u03c3_str.format(\"{:.2f}\", avalmin))[\"+\"](\"\u2032 \")[\"+\"](\u03c1\u03c3_str.format(\"{}\", tora_letter))[\"+\"](\"\");\n            \"3365\";\n        } else {\n            \"3366\";\n            lbl_text = \"a = \"[\"+\"](\u03c1\u03c3_str.format(\"{:.2f}\", avalmin))[\"+\"](\"\u2032 \")[\"+\"](\u03c1\u03c3_str.format(\"{}\", tora_letter))[\"+\"](\"\");\n        }\n        \"3368\";\n        a_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({text: lbl_text, pos: label_pos, height: dev_txt_height, color: color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"3378\";\n        all_text_labels.append(a_label);\n        \"3381\";\n        a_cyl.visible = false;\n        \"3382\";\n        a_arrow.visible = false;\n        \"3383\";\n        a_label.visible = false;\n        \"3385\";\n        return [a_cyl, a_arrow, a_label];\n    };\n    if (!draw_a_value_indicator.__defaults__) Object.defineProperties(draw_a_value_indicator, {\n        __defaults__ : {value: {R:1, scale:1.05, color:color.magenta}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"AP_vec\", \"P_lop\", \"avaldeg\", \"avalmin\", \"R\", \"scale\", \"color\"]},\n        __module__ : {value: null}\n    });\n\n    \"3387\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_a_value_indicator, [ll_vector, P_lop, avaldeg, avalmin].concat([\u03c1\u03c3_desugar_kwargs({R: 1, scale: 1.01, color: color.magenta})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(3, \u03c1\u03c3_unpack);\n    a_cyl = \u03c1\u03c3_unpack[0];\n    a_arrow = \u03c1\u03c3_unpack[1];\n    a_label = \u03c1\u03c3_unpack[2];\n    \"3390\";\n    async function draw_DR_latitude() {\n        var AP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var R = (arguments[1] === undefined || ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_DR_latitude.__defaults__.R : arguments[1];\n        var color = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_DR_latitude.__defaults__.color : arguments[2];\n        var thickness = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_DR_latitude.__defaults__.thickness : arguments[3];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"thickness\")){\n            thickness = \u03c1\u03c3_kwargs_obj.thickness;\n        }\n        var \u03c1\u03c3_ls, AP_hat, NP, AP_proj, AP_proj_hat, lat_angle, N, pts, f, angle, v, i, dr_lat, mid_index, midpoint, left_dir, left_shift, dr_label_pos, dr_lat_lbl;\n        \"3392\";\n        AP_hat = norm(AP);\n        \"3395\";\n        NP = vec(0, 1, 0);\n        \"3398\";\n        AP_proj = AP[\"-\"](1[\"*\"](dot(AP, NP))[\"*\"](NP));\n        \"3399\";\n        AP_proj_hat = norm(AP_proj);\n        \"3402\";\n        lat_angle = atan2(dot(AP, NP), mag(AP_proj));\n        \"3405\";\n        N = 60;\n        \"3406\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"3407\";\n        for (var \u03c1\u03c3_Index73 = 0; \u03c1\u03c3_Index73[\"<\"](N[\"+\"](1)); \u03c1\u03c3_Index73++) {\n            i = \u03c1\u03c3_Index73;\n            \"3408\";\n            f = i[\"\/\"](N);\n            \"3409\";\n            angle = f[\"*\"](lat_angle);\n            \"3411\";\n            v = AP_proj_hat[\"*\"](cos(angle))[\"+\"](NP[\"*\"](sin(angle)));\n            \"3412\";\n            pts.append(v[\"*\"](R));\n        }\n        \"3414\";\n        dr_lat = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color, radius: thickness, res: 128, shininess: 0})]);\n        \"3417\";\n        mid_index = Math.floor(len(pts)[\"\/\"](2));\n        \"3418\";\n        midpoint = \u03c1\u03c3_getitem(pts, mid_index);\n        \"3422\";\n        AP_hat = norm(AP);\n        \"3425\";\n        left_dir = cross(AP_hat, NP);\n        \"3426\";\n        left_dir = norm(left_dir);\n        \"3429\";\n        left_shift = .15[\"*\"](R);\n        \"3432\";\n        dr_label_pos = midpoint[\"+\"](left_dir[\"*\"](1[\"-u\"]())[\"*\"](left_shift));\n        \"3435\";\n        dr_label_pos = norm(dr_label_pos)[\"*\"](1.04)[\"*\"](R);\n        \"3437\";\n        dr_lat_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({text: \"DR Lat.\", pos: dr_label_pos, height: dev_txt_height, color: color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"3446\";\n        all_text_labels.append(dr_lat_lbl);\n        \"3449\";\n        dr_lat.visible = false;\n        \"3450\";\n        dr_lat_lbl.visible = false;\n        \"3452\";\n        return [dr_lat, dr_lat_lbl];\n    };\n    if (!draw_DR_latitude.__defaults__) Object.defineProperties(draw_DR_latitude, {\n        __defaults__ : {value: {R:1, color:color.red, thickness:.005}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"AP\", \"R\", \"color\", \"thickness\"]},\n        __module__ : {value: null}\n    });\n\n    \"3454\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_DR_latitude, [ll_vector].concat([\u03c1\u03c3_desugar_kwargs({R: 1, color: color.red, thickness: .005})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    dr_lat = \u03c1\u03c3_unpack[0];\n    dr_lat_lbl = \u03c1\u03c3_unpack[1];\n    \"3457\";\n    async function draw_DR_longitude() {\n        var AP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var NP = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var R = (arguments[2] === undefined || ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_DR_longitude.__defaults__.R : arguments[2];\n        var color = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_DR_longitude.__defaults__.color : arguments[3];\n        var thickness = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_DR_longitude.__defaults__.thickness : arguments[4];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"thickness\")){\n            thickness = \u03c1\u03c3_kwargs_obj.thickness;\n        }\n        var \u03c1\u03c3_ls, prime_meridian_dir, AP_proj, AP_proj_hat, lon_angle, equator_perp, lift, N, pts, f, angle, v, v_lifted, i, dr_lon, mid_index, midpoint, dr_lon_label_pos, dr_lon_lbl;\n        \"3459\";\n        prime_meridian_dir = vec(0, 0, 1);\n        \"3462\";\n        AP_proj = AP[\"-\"](1[\"*\"](dot(AP, NP))[\"*\"](NP));\n        \"3463\";\n        AP_proj_hat = norm(AP_proj);\n        \"3466\";\n        lon_angle = atan2(dot(cross(prime_meridian_dir, AP_proj_hat), NP), dot(prime_meridian_dir, AP_proj_hat));\n        \"3470\";\n        equator_perp = norm(cross(NP, prime_meridian_dir));\n        \"3473\";\n        lift = .01[\"*\"](R);\n        \"3475\";\n        N = 60;\n        \"3476\";\n        pts = \u03c1\u03c3_list_decorate([]);\n        \"3477\";\n        for (var \u03c1\u03c3_Index74 = 0; \u03c1\u03c3_Index74[\"<\"](N[\"+\"](1)); \u03c1\u03c3_Index74++) {\n            i = \u03c1\u03c3_Index74;\n            \"3478\";\n            f = i[\"\/\"](N);\n            \"3479\";\n            angle = f[\"*\"](lon_angle);\n            \"3480\";\n            v = prime_meridian_dir[\"*\"](cos(angle))[\"+\"](equator_perp[\"*\"](sin(angle)));\n            \"3482\";\n            v_lifted = norm(v[\"+\"](NP[\"*\"](lift)));\n            \"3484\";\n            pts.append(v_lifted[\"*\"](R));\n        }\n        \"3486\";\n        dr_lon = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: pts, color: color, radius: thickness, res: 128, shininess: 0})]);\n        \"3489\";\n        mid_index = Math.floor(len(pts)[\"\/\"](2));\n        \"3490\";\n        midpoint = \u03c1\u03c3_getitem(pts, mid_index);\n        \"3492\";\n        dr_lon_label_pos = norm(midpoint)[\"*\"](R)[\"*\"](1.05);\n        \"3493\";\n        dr_lon_label_pos = dr_lon_label_pos[\"+\"](NP[\"*\"](.04)[\"*\"](R));\n        \"3495\";\n        dr_lon_lbl = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({text: \"DR Lon.\", pos: dr_lon_label_pos, height: dev_txt_height, color: color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"3504\";\n        all_text_labels.append(dr_lon_lbl);\n        \"3507\";\n        dr_lon.visible = false;\n        \"3508\";\n        dr_lon_lbl.visible = false;\n        \"3510\";\n        return [dr_lon, dr_lon_lbl];\n    };\n    if (!draw_DR_longitude.__defaults__) Object.defineProperties(draw_DR_longitude, {\n        __defaults__ : {value: {R:1, color:color.red, thickness:.005}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"AP\", \"NP\", \"R\", \"color\", \"thickness\"]},\n        __module__ : {value: null}\n    });\n\n    \"3512\";\n    \u03c1\u03c3_unpack = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_DR_longitude, [ll_vector, np_vec].concat([\u03c1\u03c3_desugar_kwargs({R: 1, color: color.red, thickness: .005})])));\n\u03c1\u03c3_unpack = \u03c1\u03c3_unpack_asarray(2, \u03c1\u03c3_unpack);\n    dr_lon = \u03c1\u03c3_unpack[0];\n    dr_lon_lbl = \u03c1\u03c3_unpack[1];\n    \"3514\";\n    async function draw_Hs_line(ob_vector, GP, Hs_deg) {\n        var \u03c1\u03c3_ls, HSu, GPu, U, GP_horiz, Hs, Hs_dir, start, end, hs_line;\n        \"3521\";\n        HSu = norm(ob_vector);\n        \"3522\";\n        GPu = norm(GP);\n        \"3525\";\n        U = HSu;\n        \"3526\";\n        GP_horiz = GPu[\"-\"](1[\"*\"](dot(GPu, U))[\"*\"](U));\n        \"3527\";\n        GP_horiz = norm(GP_horiz);\n        \"3530\";\n        Hs = (await radians(Hs_deg));\n        \"3531\";\n        Hs_dir = cos(Hs)[\"*\"](GP_horiz)[\"+\"](sin(Hs)[\"*\"](U));\n        \"3532\";\n        Hs_dir = norm(Hs_dir);\n        \"3535\";\n        start = HSu;\n        \"3536\";\n        end = HSu[\"+\"](.8[\"*\"](Hs_dir));\n        \"3539\";\n        hs_line = \u03c1\u03c3_interpolate_kwargs.call(this, curve, [\u03c1\u03c3_desugar_kwargs({pos: \u03c1\u03c3_list_decorate([ start, end ]), color: color.purple, radius: .005})]);\n        \"3542\";\n        hs_line.visible = false;\n        \"3544\";\n        return hs_line;\n    };\n    if (!draw_Hs_line.__argnames__) Object.defineProperties(draw_Hs_line, {\n        __argnames__ : {value: [\"ob_vector\", \"GP\", \"Hs_deg\"]},\n        __module__ : {value: null}\n    });\n\n    \"3547\";\n    hs_line = (await draw_Hs_line(ob_vector, gp_vec, hsdeg));\n    \"3549\";\n    async function draw_Hs_sector() {\n        var OP = ( 0 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[0];\n        var az_dir = ( 1 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[1];\n        var Hs = ( 2 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true) ? undefined : arguments[2];\n        var R = (arguments[3] === undefined || ( 3 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Hs_sector.__defaults__.R : arguments[3];\n        var N = (arguments[4] === undefined || ( 4 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Hs_sector.__defaults__.N : arguments[4];\n        var color = (arguments[5] === undefined || ( 5 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Hs_sector.__defaults__.color : arguments[5];\n        var opacity = (arguments[6] === undefined || ( 6 === arguments.length[\"-\"](1) && arguments[arguments.length[\"-\"](1)] !== null && typeof arguments[arguments.length[\"-\"](1)] === \"object\" && arguments[arguments.length[\"-\"](1)] [\u03c1\u03c3_kwargs_symbol] === true)) ? draw_Hs_sector.__defaults__.opacity : arguments[6];\n        var \u03c1\u03c3_kwargs_obj = arguments[arguments.length[\"-\"](1)];\n        if (\u03c1\u03c3_kwargs_obj === null || typeof \u03c1\u03c3_kwargs_obj !== \"object\" || \u03c1\u03c3_kwargs_obj [\u03c1\u03c3_kwargs_symbol] !== true) \u03c1\u03c3_kwargs_obj = {};\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"R\")){\n            R = \u03c1\u03c3_kwargs_obj.R;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"N\")){\n            N = \u03c1\u03c3_kwargs_obj.N;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"color\")){\n            color = \u03c1\u03c3_kwargs_obj.color;\n        }\n        if (Object.prototype.hasOwnProperty.call(\u03c1\u03c3_kwargs_obj, \"opacity\")){\n            opacity = \u03c1\u03c3_kwargs_obj.opacity;\n        }\n        var \u03c1\u03c3_ls, vertical, horizontal, t1, t2, ang1, ang2, d1, d2, v1, v2, tri, i, mid_ang, label_dir, label_pos;\n        \"3550\";\n        \"3551\";\n        Hs_sector_tris = \u03c1\u03c3_list_decorate([]);\n        \"3552\";\n        \"3554\";\n        OP = norm(OP);\n        \"3555\";\n        az_dir = norm(az_dir);\n        \"3561\";\n        vertical = OP;\n        \"3562\";\n        horizontal = az_dir;\n        \"3565\";\n        for (var \u03c1\u03c3_Index75 = 0; \u03c1\u03c3_Index75[\"<\"](N); \u03c1\u03c3_Index75++) {\n            i = \u03c1\u03c3_Index75;\n            \"3566\";\n            t1 = i[\"\/\"](N);\n            \"3567\";\n            t2 = i[\"+\"](1)[\"\/\"](N);\n            \"3570\";\n            ang1 = t1[\"*\"](Hs);\n            \"3571\";\n            ang2 = t2[\"*\"](Hs);\n            \"3573\";\n            d1 = norm(cos(ang1)[\"*\"](horizontal)[\"+\"](sin(ang1)[\"*\"](vertical)));\n            \"3574\";\n            d2 = norm(cos(ang2)[\"*\"](horizontal)[\"+\"](sin(ang2)[\"*\"](vertical)));\n            \"3576\";\n            v1 = OP[\"+\"](R[\"*\"](d1));\n            \"3577\";\n            v2 = OP[\"+\"](R[\"*\"](d2));\n            \"3579\";\n            tri = \u03c1\u03c3_interpolate_kwargs.call(this, triangle, [\u03c1\u03c3_desugar_kwargs({v0: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: OP, color: color, opacity: opacity})]), v1: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v1, color: color, opacity: opacity})]), v2: \u03c1\u03c3_interpolate_kwargs.call(this, vertex, [\u03c1\u03c3_desugar_kwargs({pos: v2, color: color, opacity: opacity})])})]);\n            \"3584\";\n            Hs_sector_tris.append(tri);\n        }\n        \"3587\";\n        \"3588\";\n        try {\n            \"3589\";\n            Hs_label.visible = false;\n            \"3590\";\n        } catch (\u03c1\u03c3_Exception) {\n            \u03c1\u03c3_last_exception = \u03c1\u03c3_Exception;\n            {\n                \"3591\";\n            } \n        }\n        \"3594\";\n        mid_ang = Hs[\"\/\"](2);\n        \"3595\";\n        label_dir = norm(cos(mid_ang)[\"*\"](horizontal)[\"+\"](sin(mid_ang)[\"*\"](vertical)));\n        \"3598\";\n        label_pos = OP[\"+\"](R[\"*\"](.6)[\"*\"](label_dir));\n        \"3600\";\n        Hs_label = \u03c1\u03c3_interpolate_kwargs.call(this, text, [\u03c1\u03c3_desugar_kwargs({pos: label_pos, text: \"Alt. Hs\", height: dev_txt_height, color: color, align: \"center\", depth: 0, billboard: true, emissive: true})]);\n        \"3610\";\n        all_text_labels.append(Hs_label);\n        \"3613\";\n        var \u03c1\u03c3_Iter76 = Hs_sector_tris;\n        \u03c1\u03c3_Iter76 = ((typeof \u03c1\u03c3_Iter76[Symbol.iterator] === \"function\") ? (\u03c1\u03c3_Iter76 instanceof Map ? \u03c1\u03c3_Iter76.keys() : \u03c1\u03c3_Iter76) : Object.keys(\u03c1\u03c3_Iter76));\n        for (var \u03c1\u03c3_Index76 of \u03c1\u03c3_Iter76) {\n            tri = \u03c1\u03c3_Index76;\n            \"3614\";\n            tri.visible = false;\n        }\n        \"3615\";\n        Hs_label.visible = false;\n        \"3617\";\n        return Hs_label;\n    };\n    if (!draw_Hs_sector.__defaults__) Object.defineProperties(draw_Hs_sector, {\n        __defaults__ : {value: {R:1, N:40, color:color.purple, opacity:.3}},\n        __handles_kwarg_interpolation__ : {value: true},\n        __argnames__ : {value: [\"OP\", \"az_dir\", \"Hs\", \"R\", \"N\", \"color\", \"opacity\"]},\n        __module__ : {value: null}\n    });\n\n    \"3620\";\n    Hs_label = await \u03c1\u03c3_list_decorate(\u03c1\u03c3_interpolate_kwargs.call(this, draw_Hs_sector, [ob_vector, az_dir, radians(hsdeg)].concat([\u03c1\u03c3_desugar_kwargs({R: .8, N: 40, color: color.purple, opacity: .3})])));\n};\nif (!__main__.__module__) Object.defineProperties(__main__, {\n    __module__ : {value: null}\n});\n\n;$(function(){ window.__context = { glowscript_container: $(\"#glowscript\").removeAttr(\"id\") }; __main__() })})()\n\/\/ END JAVASCRIPT\n\n\/\/--><!]]><\/script>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rendering interactive 3D&#8230;&#8230;. This is a rendering is of an actual sun sight. Think of it as a visual dictionary of celestial navigation terms. The image is generated from spherical trigonometry. Rotate it and use the checkboxes to manipulate it as desired. Download a PNG file of the current image with the Snapshot button. Refreshing &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/steely.org\/celnav\/sunlines-example\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Sunlines Example&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3026","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/steely.org\/celnav\/wp-json\/wp\/v2\/pages\/3026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/steely.org\/celnav\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/steely.org\/celnav\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/steely.org\/celnav\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/steely.org\/celnav\/wp-json\/wp\/v2\/comments?post=3026"}],"version-history":[{"count":239,"href":"https:\/\/steely.org\/celnav\/wp-json\/wp\/v2\/pages\/3026\/revisions"}],"predecessor-version":[{"id":3429,"href":"https:\/\/steely.org\/celnav\/wp-json\/wp\/v2\/pages\/3026\/revisions\/3429"}],"wp:attachment":[{"href":"https:\/\/steely.org\/celnav\/wp-json\/wp\/v2\/media?parent=3026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}