From 654934494616ee0302a44dc15dd661c91b8f31fe Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Mon, 19 Oct 2026 11:08:46 +0400 Subject: [PATCH 01/36] feat(sky): replace the blocky default sky box with catalogue stars MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cesium's default Tycho-2 sky box is six 1024² JPEGs stretched 3–6× around the whole-globe view, so space read as an over-compressed JPEG (HAL-627). The scene now draws its own sky in the Scene#skyBox slot: the 9,096 stars of the Yale Bright Star Catalogue as point sprites sized in CSS pixels (magnitude → width and opacity, B−V → colour), over a soft, star-free Milky Way cube map built from ESO/S. Brunier's panorama (CC BY 4.0). Both layers share one ICRF→Earth-fixed rotation at the scene clock, with the TEME rotation filling in until Cesium's IAU 2006 tables load. Assets total 482 KB, built by scripts/build-bright-stars.mjs and scripts/build-milky-way.mjs. Frame time and the idle render governor are unchanged. Co-Authored-By: Claude Opus 5.5 --- DATA_SOURCES.md | 16 + scripts/build-bright-stars.mjs | 158 + scripts/build-milky-way.mjs | 372 + scripts/format-scope.json | 7 +- scripts/package-boundaries.json | 11 +- src/app/viewer.js | 5 + src/data/dataCredits.js | 7 + src/data/local_data/sky/README.md | 65 + src/data/local_data/sky/bright_stars.json | 9099 +++++++++++++++++++++ src/data/local_data/sky/milkyway_nx.webp | Bin 0 -> 40374 bytes src/data/local_data/sky/milkyway_ny.webp | Bin 0 -> 42866 bytes src/data/local_data/sky/milkyway_nz.webp | Bin 0 -> 45584 bytes src/data/local_data/sky/milkyway_px.webp | Bin 0 -> 36318 bytes src/data/local_data/sky/milkyway_py.webp | Bin 0 -> 41812 bytes src/data/local_data/sky/milkyway_pz.webp | Bin 0 -> 39850 bytes src/sky/starrySky.js | 430 + src/sky/starrySky.test.mjs | 89 + src/sky/stars.js | 146 + src/sky/stars.test.mjs | 134 + src/tooling/skyAssets.test.mjs | 107 + 20 files changed, 10644 insertions(+), 2 deletions(-) create mode 100644 scripts/build-bright-stars.mjs create mode 100644 scripts/build-milky-way.mjs create mode 100644 src/data/local_data/sky/README.md create mode 100644 src/data/local_data/sky/bright_stars.json create mode 100644 src/data/local_data/sky/milkyway_nx.webp create mode 100644 src/data/local_data/sky/milkyway_ny.webp create mode 100644 src/data/local_data/sky/milkyway_nz.webp create mode 100644 src/data/local_data/sky/milkyway_px.webp create mode 100644 src/data/local_data/sky/milkyway_py.webp create mode 100644 src/data/local_data/sky/milkyway_pz.webp create mode 100644 src/sky/starrySky.js create mode 100644 src/sky/starrySky.test.mjs create mode 100644 src/sky/stars.js create mode 100644 src/sky/stars.test.mjs create mode 100644 src/tooling/skyAssets.test.mjs diff --git a/DATA_SOURCES.md b/DATA_SOURCES.md index d930bcb8f..079213634 100644 --- a/DATA_SOURCES.md +++ b/DATA_SOURCES.md @@ -198,6 +198,8 @@ The [Bhote Koshi event pack](public/events/bhote-koshi-2026/README.md), under `p | **DataSF Analysis Neighborhoods** (41 SF neighborhood polygons) | `neighborhoods/` | **PDDL 1.0** (public domain) | ✅ (no restrictions) | "City & County of San Francisco — DataSF" (courtesy — not legally required) | | **Natural Earth countries, states and provinces** (260 admin-0/map units + 4,587 admin-1 polygons) | `natural_earth/` | **Public domain** | ✅ (no restrictions) | "Made with Natural Earth" (courtesy credit — not legally required) | | **US Census Bureau counties** (3,235 county polygons) | `us_census_counties/` | **Public domain** | ✅ (no restrictions) | "U.S. Census Bureau" (courtesy — not legally required) | +| **Yale Bright Star Catalogue** (9,096 stars, sky background) | `sky/` | **Public domain** | ✅ (no restrictions) | "Yale Bright Star Catalogue (Hoffleit & Warren, via CDS)" (courtesy credit) | +| **ESO Milky Way panorama** (eso0932a, blurred cube map, sky background) | `sky/` | **CC BY 4.0** | ✅ (attribution; changes stated) | "ESO/S. Brunier" | | **CCTV ground heights** (3,445 cameras) | `cctv_ground_heights/` | Precomputed camera placement heights, aligned to work with Google Photorealistic 3D Tiles (folder README) | — | — | | **CCTV Camera Database** model-enrichment extract v2.26.0 (17 camera-model records) | `src/layers/cctv/modelSpecs.js` | **CC0-1.0** (public domain dedication) | ✅ (no restrictions) | "Specs: cctv-database.com" (courtesy — not legally required) | @@ -270,6 +272,20 @@ https://www.naturalearthdata.com/about/terms-of-use/). We credit anyway: "Made w Earth". Registration in the in-app `dataCredits.js` attribution list ships with the resolver wiring (see below). +### Sky background (`sky/`) + +The space behind the globe is drawn from two bundled sources (details, hashes +and build commands in [`sky/README.md`](src/data/local_data/sky/README.md)): + +- **Stars:** the Yale Bright Star Catalogue, 5th Revised Edition (Hoffleit & + Warren 1991, CDS catalogue V/50) — public domain; credited as a courtesy. +- **Milky Way glow:** ESO image eso0932a, "The Milky Way panorama" — **CC BY + 4.0, credit "ESO/S. Brunier"**. Modified: stars removed, blurred, reprojected + to ICRF cube faces and tone-mapped, as the folder README states. + +NASA SVS "Deep Star Maps 2020" was not used for the glow: its Milky Way layer +derives from Gaia DR2, which ESA licenses CC BY-NC 3.0 IGO. + ### DataSF Analysis Neighborhoods (`neighborhoods/`) `neighborhoods/san-francisco.json` bundles the City & County of San Francisco's official diff --git a/scripts/build-bright-stars.mjs b/scripts/build-bright-stars.mjs new file mode 100644 index 000000000..45a6aaab3 --- /dev/null +++ b/scripts/build-bright-stars.mjs @@ -0,0 +1,158 @@ +#!/usr/bin/env node +/** + * Build src/data/local_data/sky/bright_stars.json from the Yale Bright Star + * Catalogue, 5th Revised Edition (Hoffleit & Warren 1991). + * + * Source: CDS VizieR catalogue V/50, https://cdsarc.cds.unistra.fr/viz-bin/cat/V/50 + * Fetched: https://cdsarc.cds.unistra.fr/ftp/V/50/catalog.gz + * Format: fixed-width ASCII, 197 bytes per record, byte layout in + * https://cdsarc.cds.unistra.fr/ftp/V/50/ReadMe + * License: public domain (Yale University Observatory / NASA ADC); CDS asks + * for an acknowledgement, which DATA_SOURCES.md carries. + * + * Transform (deterministic): + * 1. J2000 RA/Dec (bytes 76-90), V magnitude (103-107) and B−V (110-114). + * 2. The 14 records without a J2000 position (novae and other objects later + * found not to be stars) are dropped. + * 3. RA/Dec rounded to 3 decimals of a degree (3.6″ — a fraction of a pixel + * at any field of view the globe uses), magnitudes to 2. + * 4. Missing B−V is stored as null; the renderer gives it a neutral colour. + * 5. Records keep catalogue (HR) order for a stable diff. + * + * Usage: + * node scripts/build-bright-stars.mjs [catalog | catalog.gz] + * With no argument it downloads the catalogue from CDS. + */ + +import fs from 'node:fs'; +import path from 'node:path'; +import zlib from 'node:zlib'; +import { fileURLToPath } from 'node:url'; + +const SOURCE_URL = 'https://cdsarc.cds.unistra.fr/ftp/V/50/catalog.gz'; +const OUT = path.join( + path.dirname(fileURLToPath(import.meta.url)), + '..', + 'src', + 'data', + 'local_data', + 'sky', + 'bright_stars.json', +); + +/** Slice 1-based inclusive byte columns the way the CDS ReadMe numbers them. */ +function columns(line, from, to) { + return line.slice(from - 1, to).trim(); +} + +/** Parse a fixed-width float; blank fields are null. */ +function parseField(text) { + if (text === '') return null; + const value = Number(text); + return Number.isFinite(value) ? value : null; +} + +/** + * Parse one BSC5 record. Returns null for records without a J2000 position + * or V magnitude. + */ +export function parseBscRecord(line) { + const hr = parseField(columns(line, 1, 4)); + const raH = parseField(columns(line, 76, 77)); + const raM = parseField(columns(line, 78, 79)); + const raS = parseField(columns(line, 80, 83)); + const sign = columns(line, 84, 84); + const deD = parseField(columns(line, 85, 86)); + const deM = parseField(columns(line, 87, 88)); + const deS = parseField(columns(line, 89, 90)); + const vmag = parseField(columns(line, 103, 107)); + const bv = parseField(columns(line, 110, 114)); + if ( + hr === null || + raH === null || + raM === null || + raS === null || + deD === null || + deM === null || + deS === null || + vmag === null || + (sign !== '+' && sign !== '-') + ) + return null; + const raDeg = (raH + raM / 60 + raS / 3600) * 15; + const decDeg = (sign === '-' ? -1 : 1) * (deD + deM / 60 + deS / 3600); + return { hr, raDeg, decDeg, vmag, bv }; +} + +const round = (value, decimals) => { + const scale = 10 ** decimals; + return Math.round(value * scale) / scale; +}; + +/** Build the committed pack from the raw catalogue text. */ +export function buildStarPack(text, { fetched = null } = {}) { + const stars = []; + let dropped = 0; + for (const line of text.split('\n')) { + if (line.trim() === '') continue; + const record = parseBscRecord(line); + if (!record) { + dropped += 1; + continue; + } + stars.push( + round(record.raDeg, 3), + round(record.decDeg, 3), + round(record.vmag, 2), + record.bv === null ? null : round(record.bv, 2), + ); + } + return { + meta: { + source: + 'Yale Bright Star Catalogue, 5th Revised Ed. (Hoffleit & Warren 1991), CDS V/50', + url: SOURCE_URL, + license: 'public domain', + fetched, + frame: 'ICRF/J2000, epoch 2000.0', + columns: ['raDeg', 'decDeg', 'vmag', 'bv'], + count: stars.length / 4, + dropped, + }, + stars, + }; +} + +async function readCatalogue(file) { + if (!file) { + const response = await fetch(SOURCE_URL); + if (!response.ok) throw new Error(`${SOURCE_URL}: HTTP ${response.status}`); + return zlib + .gunzipSync(Buffer.from(await response.arrayBuffer())) + .toString('latin1'); + } + const bytes = fs.readFileSync(file); + return (file.endsWith('.gz') ? zlib.gunzipSync(bytes) : bytes).toString( + 'latin1', + ); +} + +async function main() { + const [file] = process.argv.slice(2); + const text = await readCatalogue(file); + const pack = buildStarPack(text, { + fetched: new Date().toISOString().slice(0, 10), + }); + // One star per line keeps the JSON compact and the diff readable. + const rows = []; + for (let i = 0; i < pack.stars.length; i += 4) + rows.push(JSON.stringify(pack.stars.slice(i, i + 4)).slice(1, -1)); + const body = `{"meta":${JSON.stringify(pack.meta)},\n"stars":[\n${rows.join(',\n')}\n]}\n`; + fs.mkdirSync(path.dirname(OUT), { recursive: true }); + fs.writeFileSync(OUT, body); + console.log( + `wrote ${pack.meta.count} stars (${pack.meta.dropped} dropped) → ${path.relative(process.cwd(), OUT)} (${body.length} bytes)`, + ); +} + +if (process.argv[1] === fileURLToPath(import.meta.url)) await main(); diff --git a/scripts/build-milky-way.mjs b/scripts/build-milky-way.mjs new file mode 100644 index 000000000..4a482631d --- /dev/null +++ b/scripts/build-milky-way.mjs @@ -0,0 +1,372 @@ +#!/usr/bin/env node +/** + * Build the soft Milky Way cube map in src/data/local_data/sky/ from the ESO + * all-sky Milky Way panorama. + * + * Source page: https://www.eso.org/public/images/eso0932a/ + * Fetched: https://cdn.eso.org/images/original/eso0932a.tif + * (6000×3000 8-bit sRGB TIFF, 27.7 MB; sha256 in README.md) + * Credit: ESO/S. Brunier + * License: CC BY 4.0 (https://www.eso.org/public/outreach/copyright/). + * Modified: stars removed, blurred, reprojected to ICRF cube + * faces and tone-mapped, as below. + * Frame: plate carrée in galactic coordinates, centred on the Galactic + * Centre, galactic longitude increasing to the left. + * + * Transform (deterministic): + * 1. Resample to WORK_WIDTH×WORK_WIDTH/2 and convert sRGB to linear light. + * 2. Paint out the planets the 2008–2010 exposures caught (PLANETS): they + * sit where today's sky has nothing and are far brighter than any star. + * 3. Remove stars with a morphological opening (minimum, then maximum, over + * a (2·OPEN_RADIUS+1)² window): anything smaller than the window — every + * star — drops to the surrounding sky; the renderer draws catalogue stars + * itself, sharp and in the right place. + * 4. Blur with a three-pass box approximation of a Gaussian, σ = BLUR_DEG on + * the sky: rows wrap in longitude and widen by 1/cos(latitude) so the + * blur stays round towards the poles. + * 5. Resample into six FACE_SIZE² cube faces in the standard WebGL face + * orientation (the renderer uploads them without flipY), with the ICRF + * axes as the cube axes — +X to the March equinox, +Z to the north + * celestial pole — rotating each direction into galactic coordinates + * with the IAU J2000 matrix. + * 6. Map the darkest 25 % of the sky to black and the brightest 0.01 % to + * white, encode with gamma 1/2.2 and ±0.5 LSB dither against banding; + * WebP. + * + * Usage: + * node scripts/build-milky-way.mjs + * Needs the sharp dev dependency. + */ + +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +export const FACE_SIZE = 1024; +export const BLUR_DEG = 0.4; +const WORK_WIDTH = 4096; +const OPEN_RADIUS = 3; +const WEBP_QUALITY = 96; +// The darkest quarter of the sky is the black level: away from the galactic +// plane the panorama carries a mottled glow of unresolved stars that would +// read as grey fog around the globe. +const BLACK_PERCENTILE = 0.25; +const WHITE_PERCENTILE = 0.9999; +const OUT_DIR = path.join( + path.dirname(fileURLToPath(import.meta.url)), + '..', + 'src', + 'data', + 'local_data', + 'sky', +); + +/** + * Bright planets in the panorama, galactic longitude/latitude in degrees and + * the radius painted over with the surrounding sky. By position both are + * Jupiter, in Sagittarius (2008) and Aquarius (2010); no catalogue star lies + * under either. + */ +export const PLANETS = Object.freeze([ + { l: 13.4, b: -16.6, radiusDeg: 2.5 }, + { l: 69.0, b: -58.4, radiusDeg: 2.5 }, +]); + +/** Cube faces in WebGL upload order. */ +export const CUBE_FACES = Object.freeze([ + 'positiveX', + 'negativeX', + 'positiveY', + 'negativeY', + 'positiveZ', + 'negativeZ', +]); +export const FACE_FILE_SUFFIX = Object.freeze({ + positiveX: 'px', + negativeX: 'nx', + positiveY: 'py', + negativeY: 'ny', + positiveZ: 'pz', + negativeZ: 'nz', +}); + +/** + * ICRF (J2000 equatorial) → galactic rotation, rows = galactic axes + * (Hipparcos catalogue, ESA SP-1200 vol. 1 §1.5.3). + */ +export const ICRF_TO_GALACTIC = Object.freeze([ + [-0.0548755604162154, -0.873437090234885, -0.4838350155487132], + [0.4941094278755837, -0.4448296299600112, 0.7469822444972189], + [-0.867666149019004, -0.1980763734312015, 0.4559837761750669], +]); + +/** + * Direction (not normalized) that the WebGL cube-map lookup sends to texel + * coordinate (s, t) ∈ [0, 1]² of `face`, t = 0 being the first image row. + * Inverse of the OpenGL ES 3.0 §3.8.10 major-axis table. + */ +export function cubeFaceDirection(face, s, t) { + const sc = 2 * s - 1; + const tc = 2 * t - 1; + switch (face) { + case 'positiveX': + return [1, -tc, -sc]; + case 'negativeX': + return [-1, -tc, sc]; + case 'positiveY': + return [sc, 1, tc]; + case 'negativeY': + return [sc, -1, -tc]; + case 'positiveZ': + return [sc, -tc, 1]; + case 'negativeZ': + return [-sc, -tc, -1]; + default: + throw new RangeError(`Unknown cube face ${face}`); + } +} + +/** Rotate an ICRF direction into galactic coordinates. */ +export function icrfToGalactic([x, y, z]) { + return ICRF_TO_GALACTIC.map((row) => row[0] * x + row[1] * y + row[2] * z); +} + +/** + * Map a direction to (u, v) ∈ [0, 1)² of a plate carrée centred on + * longitude 0 with longitude increasing to the left and v = 0 at +90°. + */ +export function directionToPlateCarree(x, y, z) { + const longitude = Math.atan2(y, x); + const latitude = Math.atan2(z, Math.hypot(x, y)); + let u = 0.5 - longitude / (2 * Math.PI); + u -= Math.floor(u); + return [u, 0.5 - latitude / Math.PI]; +} + +/** Box widths whose three passes approximate a Gaussian of `sigma` (Kovesi). */ +function boxRadii(sigma) { + const ideal = Math.sqrt((12 * sigma * sigma) / 3 + 1); + let lower = Math.floor(ideal); + if (lower % 2 === 0) lower -= 1; + const upper = lower + 2; + const m = Math.round( + (12 * sigma * sigma - 3 * lower * lower - 12 * lower - 9) / + (-4 * lower - 4), + ); + return [0, 1, 2].map((i) => ((i < m ? lower : upper) - 1) / 2); +} + +/** Index along a line, wrapped or clamped at the ends. */ +function lineIndex(i, length, wrap) { + if (wrap) return ((i % length) + length) % length; + return i < 0 ? 0 : i >= length ? length - 1 : i; +} + +/** Running-sum box blur of one strided line. */ +function boxLine(src, dst, offset, stride, length, radius, wrap) { + if (radius < 1) { + for (let i = 0; i < length; i++) + dst[offset + i * stride] = src[offset + i * stride]; + return; + } + const r = wrap ? Math.min(radius, Math.floor((length - 1) / 2)) : radius; + const at = (i) => src[offset + lineIndex(i, length, wrap) * stride]; + let sum = 0; + for (let i = -r; i <= r; i++) sum += at(i); + const scale = 1 / (2 * r + 1); + for (let i = 0; i < length; i++) { + dst[offset + i * stride] = sum * scale; + sum += at(i + r + 1) - at(i - r); + } +} + +/** Minimum or maximum over a (2r+1) window of one strided line. */ +function extremumLine(src, dst, offset, stride, length, radius, wrap, pick) { + for (let i = 0; i < length; i++) { + let value = src[offset + lineIndex(i - radius, length, wrap) * stride]; + for (let k = -radius + 1; k <= radius; k++) + value = pick( + value, + src[offset + lineIndex(i + k, length, wrap) * stride], + ); + dst[offset + i * stride] = value; + } +} + +/** Separable minimum or maximum filter over a plate-carrée plane, in place. */ +function extremumPlane(plane, width, height, radius, pick) { + const scratch = new Float32Array(plane.length); + for (let y = 0; y < height; y++) + extremumLine(plane, scratch, y * width, 1, width, radius, true, pick); + for (let x = 0; x < width; x++) + extremumLine(scratch, plane, x, width, height, radius, false, pick); +} + +/** Blur one plate-carrée channel in place, round on the sphere. */ +function blurPlane(plane, width, height, sigmaPx) { + const scratch = new Float32Array(plane.length); + for (let y = 0; y < height; y++) { + const latitude = (0.5 - (y + 0.5) / height) * Math.PI; + const sigmaX = Math.min( + width / 4, + sigmaPx / Math.max(Math.cos(latitude), 1e-3), + ); + for (const radius of boxRadii(sigmaX)) { + boxLine(plane, scratch, y * width, 1, width, Math.round(radius), true); + plane.set(scratch.subarray(y * width, (y + 1) * width), y * width); + } + } + for (const radius of boxRadii(sigmaPx)) { + for (let x = 0; x < width; x++) + boxLine(plane, scratch, x, width, height, Math.round(radius), false); + plane.set(scratch); + } +} + +/** Unit vector for galactic longitude and latitude in degrees. */ +function galacticVector(l, b) { + const lr = (l * Math.PI) / 180; + const br = (b * Math.PI) / 180; + return [ + Math.cos(br) * Math.cos(lr), + Math.cos(br) * Math.sin(lr), + Math.sin(br), + ]; +} + +/** + * Replace a disc of the sky with the mean of the ring just outside it, per + * channel. The blur that follows hides the seam. + */ +function paintOut(planes, width, height, { l, b, radiusDeg }) { + const centre = galacticVector(l, b); + const inner = Math.cos((radiusDeg * Math.PI) / 180); + const outer = Math.cos(((radiusDeg + 0.5) * Math.PI) / 180); + const disc = []; + const ring = []; + const span = Math.ceil(((radiusDeg + 0.5) / 180) * height); + const row = Math.round((0.5 - b / 180) * height); + for (let y = Math.max(0, row - span); y < Math.min(height, row + span); y++) { + const latitude = 90 - ((y + 0.5) * 180) / height; + for (let x = 0; x < width; x++) { + const longitude = (0.5 - (x + 0.5) / width) * 360; + const p = galacticVector(longitude, latitude); + const cos = p[0] * centre[0] + p[1] * centre[1] + p[2] * centre[2]; + if (cos >= inner) disc.push(y * width + x); + else if (cos >= outer) ring.push(y * width + x); + } + } + for (const plane of planes) { + let sum = 0; + for (const index of ring) sum += plane[index]; + const mean = sum / ring.length; + for (const index of disc) plane[index] = mean; + } +} + +/** Bilinear sample with longitude wrap and latitude clamp. */ +function samplePlane(plane, width, height, u, v) { + const fx = u * width - 0.5; + const fy = Math.min(Math.max(v * height - 0.5, 0), height - 1); + const x0 = Math.floor(fx); + const y0 = Math.floor(fy); + const ax = fx - x0; + const ay = fy - y0; + const xa = ((x0 % width) + width) % width; + const xb = (xa + 1) % width; + const yb = Math.min(y0 + 1, height - 1); + const top = plane[y0 * width + xa] * (1 - ax) + plane[y0 * width + xb] * ax; + const bottom = + plane[yb * width + xa] * (1 - ax) + plane[yb * width + xb] * ax; + return top * (1 - ay) + bottom * ay; +} + +/** Deterministic hash noise in [-0.5, 0.5) for dithering. */ +function dither(index, channel) { + let h = (index * 374761393 + channel * 668265263) | 0; + h = Math.imul(h ^ (h >>> 13), 1274126177); + h ^= h >>> 16; + return (h >>> 0) / 4294967296 - 0.5; +} + +/** Value at `fraction` of the sorted luminance. */ +function luminancePercentile(planes, fraction) { + const [r, g, b] = planes; + const lum = new Float32Array(r.length); + for (let i = 0; i < lum.length; i++) lum[i] = (r[i] + g[i] + b[i]) / 3; + lum.sort(); + return lum[Math.min(lum.length - 1, Math.floor(fraction * lum.length))]; +} + +const srgbToLinear = (value) => + value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4; + +async function decodePanorama(sharp, file) { + const width = WORK_WIDTH; + const height = WORK_WIDTH / 2; + const raw = await sharp(file) + .resize(width, height, { fit: 'fill', kernel: 'lanczos3' }) + .removeAlpha() + .raw() + .toBuffer(); + const lut = Float32Array.from({ length: 256 }, (_, i) => + srgbToLinear(i / 255), + ); + const planes = [0, 1, 2].map(() => new Float32Array(width * height)); + for (let i = 0; i < width * height; i++) + for (let c = 0; c < 3; c++) planes[c][i] = lut[raw[i * 3 + c]]; + return { width, height, planes }; +} + +async function main() { + const [file] = process.argv.slice(2); + if (!file) throw new Error('usage: build-milky-way.mjs '); + const { default: sharp } = await import('sharp'); + const { width, height, planes } = await decodePanorama(sharp, file); + const sigmaPx = (BLUR_DEG / 180) * height; + for (const planet of PLANETS) paintOut(planes, width, height, planet); + for (const plane of planes) { + extremumPlane(plane, width, height, OPEN_RADIUS, Math.min); + extremumPlane(plane, width, height, OPEN_RADIUS, Math.max); + blurPlane(plane, width, height, sigmaPx); + } + const black = luminancePercentile(planes, BLACK_PERCENTILE); + const white = luminancePercentile(planes, WHITE_PERCENTILE); + let total = 0; + for (const face of CUBE_FACES) { + const pixels = Buffer.alloc(FACE_SIZE * FACE_SIZE * 3); + for (let j = 0; j < FACE_SIZE; j++) { + for (let i = 0; i < FACE_SIZE; i++) { + const direction = cubeFaceDirection( + face, + (i + 0.5) / FACE_SIZE, + (j + 0.5) / FACE_SIZE, + ); + const [u, v] = directionToPlateCarree(...icrfToGalactic(direction)); + const index = j * FACE_SIZE + i; + for (let c = 0; c < 3; c++) { + const linear = Math.max( + (samplePlane(planes[c], width, height, u, v) - black) / + (white - black), + 0, + ); + const encoded = Math.min(linear, 1) ** (1 / 2.2) * 255; + pixels[index * 3 + c] = Math.min( + 255, + Math.max(0, Math.round(encoded + dither(index, c))), + ); + } + } + } + const out = path.join(OUT_DIR, `milkyway_${FACE_FILE_SUFFIX[face]}.webp`); + const info = await sharp(pixels, { + raw: { width: FACE_SIZE, height: FACE_SIZE, channels: 3 }, + }) + .webp({ quality: WEBP_QUALITY, smartSubsample: true, effort: 6 }) + .toFile(out); + total += info.size; + console.log(`${path.relative(process.cwd(), out)}: ${info.size} bytes`); + } + console.log(`total ${total} bytes`); +} + +if (process.argv[1] === fileURLToPath(import.meta.url)) await main(); diff --git a/scripts/format-scope.json b/scripts/format-scope.json index 5ec1adb0c..9024224fe 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -1062,5 +1062,10 @@ "src/ui/flyToDataSource.test.mjs", "scripts/assemble-changelog.mjs", "src/tooling/changelogFragments.test.mjs", - "src/data/gbfsProxyRateLimit.test.mjs" + "src/data/gbfsProxyRateLimit.test.mjs", + "scripts/build-bright-stars.mjs", + "scripts/build-milky-way.mjs", + "src/sky/stars.test.mjs", + "src/sky/starrySky.test.mjs", + "src/tooling/skyAssets.test.mjs" ] diff --git a/scripts/package-boundaries.json b/scripts/package-boundaries.json index 43bc3d4de..61acc6a12 100644 --- a/scripts/package-boundaries.json +++ b/scripts/package-boundaries.json @@ -22,7 +22,14 @@ }, "viewer": { "exports": ["./application/viewer"], - "modules": ["src/app/viewer.js", "src/app/atmosphereCompat.js"], + "modules": [ + "src/app/viewer.js", + "src/app/atmosphereCompat.js", + "src/sky/starrySky.js", + "src/sky/stars.js", + "src/data/bundledJson.js", + "src/renderGovernor.js" + ], "external": ["cesium"] }, "vite-build": { @@ -1708,6 +1715,8 @@ "src/app/surfaceServices.js", "src/app/tools.js", "src/app/viewer.js", + "src/sky/starrySky.js", + "src/sky/stars.js", "src/app/atmosphereCompat.js", "src/bloom.js", "src/camera.js", diff --git a/src/app/viewer.js b/src/app/viewer.js index 9b6e7f631..582ecd9c5 100644 --- a/src/app/viewer.js +++ b/src/app/viewer.js @@ -1,5 +1,6 @@ import * as Cesium from 'cesium'; import { applyModelAtmosphereWorkaround } from './atmosphereCompat.js'; +import { StarrySky } from '../sky/starrySky.js'; const PINCH_ZOOM_MULTIPLIER = 8; const MAX_PINCH_PIXEL_DELTA = 120; @@ -119,6 +120,9 @@ export function createApplicationViewer({ container, creditContainer }) { selectionIndicator: false, infoBox: false, baseLayer: false, + // Replaced below: the default Tycho-2 cube map is too coarse for the + // whole-globe view and its JPEG blocks show around the Earth. + skyBox: false, creditContainer, msaaSamples: 4, contextOptions: { webgl: { preserveDrawingBuffer: true } }, @@ -130,6 +134,7 @@ export function createApplicationViewer({ container, creditContainer }) { // render loop. See app/atmosphereCompat.js. applyModelAtmosphereWorkaround(viewer.scene); viewer.scene.globe.show = false; + viewer.scene.skyBox = new StarrySky(); viewer.scene.skyAtmosphere.show = true; viewer.scene.skyAtmosphere.atmosphereLightIntensity = 18; viewer.scene.skyAtmosphere.saturationShift = -0.12; diff --git a/src/data/dataCredits.js b/src/data/dataCredits.js index 8d3949351..3fdf7aab8 100644 --- a/src/data/dataCredits.js +++ b/src/data/dataCredits.js @@ -386,6 +386,13 @@ export const DATA_CREDITS = [ 'ECMWF does not accept any liability whatsoever for any error or omission in the data, their availability, or for any loss or damage arising from their use.', }, // ── Bundled snapshots ─────────────────────────────────────────── + { + key: 'sky-background', + html: + 'Stars: Yale Bright Star Catalogue ' + + '(Hoffleit & Warren, via CDS). Milky Way: ESO/S. Brunier ' + + '(CC BY 4.0; stars removed, blurred and reprojected)', + }, { key: 'dams', html: 'Dams: Open Infrastructure Map', diff --git a/src/data/local_data/sky/README.md b/src/data/local_data/sky/README.md new file mode 100644 index 000000000..8c2d4a0d7 --- /dev/null +++ b/src/data/local_data/sky/README.md @@ -0,0 +1,65 @@ +# Sky background + +The space behind the globe (`src/sky/starrySky.js`): catalogue stars drawn as +sharp point sprites over a soft Milky Way cube map. It replaces Cesium's +default Tycho-2 sky box, whose six 1024² JPEGs stretch 3–6× around the +whole-globe view and show compression blocks. + +| File | Content | Size | +| ---- | ------- | ---- | +| `bright_stars.json` | 9,096 stars: J2000 RA/Dec, V magnitude, B−V | 235 KB | +| `milkyway_{px,nx,py,ny,pz,nz}.webp` | Milky Way glow, six 1024² cube faces, no stars | 247 KB | + +## Stars — Yale Bright Star Catalogue + +**Source:** Yale Bright Star Catalogue, 5th Revised Edition (Hoffleit & +Warren 1991), CDS VizieR catalogue +[V/50](https://cdsarc.cds.unistra.fr/viz-bin/cat/V/50), file +`https://cdsarc.cds.unistra.fr/ftp/V/50/catalog.gz` (sha256 +`3dc44b1e90be8fbe5bcc7656032560f51275f985c7e3f783c9028e1838ec7bed`, fetched +2026-10-19). + +**License:** public domain (Yale University Observatory / NASA Astronomical +Data Center). CDS asks for an acknowledgement; the in-app "Data attribution" +popover carries it. + +**Build:** `node scripts/build-bright-stars.mjs [catalog.gz]` — every record +with a J2000 position (14 novae and non-stellar entries dropped), RA/Dec +rounded to 0.001°, magnitudes to 0.01. The renderer maps magnitude to sprite +width and opacity and B−V to a desaturated black-body colour +(`src/sky/stars.js`). + +## Milky Way — ESO/S. Brunier + +**Source:** "The Milky Way panorama", ESO image +[eso0932a](https://www.eso.org/public/images/eso0932a/), full-size original +`https://cdn.eso.org/images/original/eso0932a.tif` (6000×3000 sRGB TIFF, sha256 +`10f209ab83e1fd89e7fa1ed70277ffc6ed19c43549f04ec637c6806d98aff035`, fetched +2026-10-19). Plate carrée in galactic coordinates, centred on the Galactic +Centre. + +**License:** [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) +(). **Credit: ESO/S. Brunier.** + +**Changes made** (CC BY 4.0 asks for them to be stated): resampled to +4096×2048, two planets (Jupiter, by position) painted over with the surrounding sky, +stars removed with a 7×7 morphological opening, blurred (σ = 0.4°), +reprojected from galactic coordinates to ICRF cube faces, black level set at +the darkest 25 % of the sky, gamma-encoded and saved as WebP. Build: +`node scripts/build-milky-way.mjs `. + +The panorama is a photographic mosaic, not an astrometric map: bright stars +sit up to ~2° from their catalogue positions. That is invisible in a glow +blurred this much, and every sharp star on screen comes from the catalogue. + +The NASA SVS "Deep Star Maps 2020" Milky Way layer was considered and not +used: it is derived from Gaia DR2, which ESA distributes under CC BY-NC 3.0 +IGO with prior authorization required for commercial use. + +## Frame + +Both layers are in ICRF/J2000. The cube faces use the standard WebGL face +layout with +X towards the March equinox and +Z towards the north celestial +pole, uploaded without `flipY`. At runtime one rotation — +`Transforms.computeIcrfToFixedMatrix` at the scene clock — turns both into +Earth-fixed coordinates. diff --git a/src/data/local_data/sky/bright_stars.json b/src/data/local_data/sky/bright_stars.json new file mode 100644 index 000000000..5bf6ea2dd --- /dev/null +++ b/src/data/local_data/sky/bright_stars.json @@ -0,0 +1,9099 @@ +{"meta":{"source":"Yale Bright Star Catalogue, 5th Revised Ed. (Hoffleit & Warren 1991), CDS V/50","url":"https://cdsarc.cds.unistra.fr/ftp/V/50/catalog.gz","license":"public domain","fetched":"2026-10-19","frame":"ICRF/J2000, epoch 2000.0","columns":["raDeg","decDeg","vmag","bv"],"count":9096,"dropped":14}, +"stars":[ +1.291,45.229,6.7,0.07, +1.266,-0.503,6.29,1.1, +1.334,-5.708,4.61,1.04, +1.425,13.396,5.51,0.9, +1.567,58.437,5.96,0.67, +1.579,-49.075,5.7,0.52, +1.61,64.196,5.59,-0.03, +1.653,29.021,6.13,0.75, +1.709,-23.107,6.18,0.38, +1.826,-17.386,6.19,0.14, +1.934,-2.549,6.43,-0.14, +1.945,-22.509,5.94,0.14, +2.015,-33.529,5.68,1.12, +2.05,-2.448,6.07,1.38, +2.097,29.091,2.06,-0.11, +2.073,-8.824,5.99,1.04, +2.171,36.627,6.19,0.48, +2.139,-17.577,6.06,1.67, +2.218,25.463,6.23,0.97, +2.334,79.715,6.01,0.19, +2.295,59.15,2.27,0.34, +2.26,18.212,5.53,1.04, +2.26,-54.002,6.33,0.74, +2.338,-27.988,5.42,0.42, +2.353,-45.747,3.88,1.03, +2.51,11.146,5.51,-0.07, +2.58,46.072,5.03,0.4, +2.624,57.166,6.74,-0.08, +2.578,-5.249,5.84,0.98, +2.509,-82.224,5.28,1.05, +2.678,-12.58,5.85,1.01, +2.661,-73.224,6.64,0.37, +2.816,-15.468,4.89,0.49, +2.893,-27.8,5.41,1.34, +2.933,-35.133,5.25,0.44, +2.996,48.152,6.16,1.45, +3.042,-17.938,5.25,1.48, +3.21,37.693,6.73,-0.13, +3.309,15.184,2.83,-0.23, +3.35,26.987,6.3,0.65, +3.378,41.035,5.72,0.31, +3.425,-26.022,5.94,1.55, +3.434,-26.285,6.31,1.48, +3.51,33.206,6.25,-0.01, +3.651,20.207,4.8,1.57, +3.615,-7.781,5.12,1.62, +3.331,-84.994,5.77,1.72, +3.66,-18.933,4.44,1.66, +3.734,22.284,6.24,-0.01, +3.745,8.821,5.79,0.31, +3.727,-9.57,5.75,-0.08, +3.779,31.536,6.45,null, +3.794,27.283,6.35,-0.02, +3.743,-34.904,6.17,1.34, +4.058,76.951,6.35,-0.07, +4.09,43.595,6.15,0.05, +4.037,-31.446,5.67,1.35, +3.98,-75.911,6.49,1, +4.142,8.24,6.11,0.92, +4.238,61.533,5.74,0.88, +4.177,-20.211,6.47,-0.09, +4.288,47.948,5.89,-0.09, +4.273,38.682,4.61,0.06, +4.204,-78.781,6.77,0.46, +4.429,51.433,6.14,-0.13, +4.386,-19.051,6.45,0.37, +4.449,1.689,6.17,0.94, +4.582,36.785,4.52,0.05, +4.572,11.206,6.05,1.03, +4.675,43.791,6.11,-0.08, +4.66,31.517,5.87,-0.01, +4.674,-8.053,6.46,0.68, +4.677,-43.235,6.33,1.21, +4.857,-8.824,3.56,1.22, +4.923,40.73,6.33,1.18, +5.022,48.865,6.52,null, +5.018,-64.875,4.23,0.58, +5.102,30.936,5.9,-0.1, +5.19,32.911,5.79,1.59, +5.15,8.19,5.37,1.34, +5.227,10.977,6.56,null, +5.28,37.969,5.18,0.42, +5.163,-69.625,5.51,-0.05, +5.38,-28.982,5.18,1, +5.443,-20.058,5.12,1.82, +5.606,13.483,6.23,1.22, +5.369,-77.427,5.97,1.4, +5.716,-12.209,6.39,0.66, +5.803,-31.036,6.55,0, +6.008,38.577,7.39,1.97, +6.065,52.02,5.57,-0.12, +6.198,61.831,5.4,0, +6.124,-2.219,6.07,1.22, +6.277,53.047,5.74,-0.06, +6.351,1.94,5.77,0.86, +6.438,-77.254,2.8,0.62, +6.571,-42.306,2.39,1.09, +6.551,-43.68,3.94,0.17, +6.656,-0.05,6.19,0.9, +6.811,-25.547,5.98,1.03, +7.012,17.893,5.06,1.65, +7.057,44.394,5.17,0.03, +6.982,-33.007,4.81,1.64, +7.053,16.445,6.06,1.58, +7.084,10.19,6.04,0.43, +7.088,-20.335,6.43,0.59, +7.11,-39.915,5.43,1.56, +7.236,36.9,6.26,0.92, +7.18,-50.533,6.26,1.09, +7.729,77.019,6.21,0.84, +7.583,59.977,5.94,0.01, +7.53,29.752,5.23,0.24, +7.466,-14.864,6.14,0.37, +7.454,-32.117,6.57,1.34, +7.51,-3.957,5.72,1.56, +7.595,-23.788,5.19,0.12, +7.616,-40.939,6.19,0.33, +7.609,-48.215,5.69,0.35, +7.855,66.519,6.18,-0.1, +7.857,33.582,5.87,1.14, +7.943,54.522,4.73,-0.1, +7.922,52.839,5.6,1.15, +7.854,-48.804,4.77,0.02, +7.886,-62.958,4.37,-0.07, +7.89,-62.966,4.54,0.15, +8.112,43.495,6.7,-0.01, +8.33,70.982,6.42,-0.01, +8.25,62.932,4.16,0.14, +8.148,20.294,5.38,1.08, +8.099,6.956,5.67,0, +8.144,27.581,6.67,null, +8.205,28.28,6.3,1, +8.293,54.895,5.93,1.04, +8.182,-63.031,5.09,0.04, +8.604,66.75,6.48,-0.08, +8.421,-29.558,5.55,1.27, +8.347,-71.266,6.13,0.23, +8.616,-52.373,5.57,0.47, +8.73,13.371,6.4,null, +8.812,-3.593,5.2,0.56, +8.887,-0.506,5.93,0.44, +9.035,54.169,5.08,-0.11, +8.978,13.207,6.41,0.52, +9.114,60.326,5.79,0.29, +8.921,-48.001,5.51,0.44, +8.889,-54.822,6.06,1.01, +9.083,27.255,6.5,-0.09, +9.013,-14.974,6.45,1.06, +9.029,-22.842,6.06,0.29, +9.194,44.489,5.13,1.6, +9.243,53.897,3.66,-0.2, +9.22,33.719,4.36,-0.14, +9.197,15.232,5.89,-0.15, +9.28,24.014,6.47,null, +9.338,35.399,5.48,0.88, +9.947,82.494,6.4,0.55, +9.336,-24.767,5.57,0.72, +9.156,-65.125,6.42,1.26, +9.377,3.135,6.39,1.33, +9.325,-54.394,6.41,1, +9.639,29.312,4.37,0.87, +9.791,49.354,5.43,1.64, +9.832,30.861,3.27,1.28, +9.841,21.251,5.87,0.85, +9.982,21.438,5.36,1.16, +10.127,56.537,2.23,1.17, +9.67,-73.137,6.85,0.11, +9.991,-33.962,6.69,0.51, +9.967,-44.797,6.01,1.14, +10.119,-16.517,6.49,0.92, +10.137,-23.804,6.14,0.7, +10.177,-4.352,5.91,1.1, +10.28,39.459,5.33,0.89, +10.11,-59.454,5.89,0.55, +10.514,66.148,5.83,1.04, +10.4,24.629,6.04,0.26, +10.516,50.513,4.8,-0.11, +10.332,-46.085,4.59,0.97, +10.63,58.753,6.17,-0.01, +10.443,-56.502,5.7,0.2, +10.867,47.025,4.94,0.18, +10.679,-38.463,6.06,-0.03, +10.674,-60.262,5.98,1.32, +10.618,-65.468,5.39,0.5, +10.898,-17.987,2.04,1.02, +11.11,47.864,5.67,-0.12, +10.959,-12.012,6.02,1.1, +10.838,-57.463,4.36,0, +11.413,74.988,5.66,0.05, +11.181,48.284,4.54,-0.07, +11.048,-10.609,4.76,1.01, +11.05,-38.422,5.9,1.16, +11.322,55.222,5.42,0.04, +11.185,-22.006,5.24,0.33, +11.238,-42.677,5.94,0.28, +11.135,-62.498,6.07,0.44, +11.663,69.325,6.33,null, +11.35,-4.629,6.15,1.62, +11.25,-53.715,6.15,0.53, +11.37,-12.881,6.15,0.61, +11.563,55.305,6.52,null, +11.545,44.861,6.05,-0.07, +11.424,-16.424,6.47,0.31, +11.677,59.574,6.39,1.09, +11.942,74.848,5.41,-0.08, +11.44,-47.552,5.8,0.64, +11.549,-22.522,5.5,0.98, +11.638,15.476,5.38,1.65, +12.038,72.675,5.87,1.01, +11.756,11.974,5.5,0.97, +11.807,19.579,6.13,0.27, +11.835,24.267,4.06,1.12, +11.848,6.741,5.99,0.94, +11.978,20.925,6.54,0.5, +11.93,-18.061,5.7,1.3, +12.275,57.816,3.44,0.57, +12.005,-21.722,5.57,-0.06, +12.073,7.3,5.93,1.1, +12.096,5.281,5.75,0.88, +12.209,50.968,4.89,-0.11, +12.171,7.585,4.43,1.5, +12.245,16.941,5.07,0.51, +12.453,41.079,4.53,-0.15, +12.357,-13.561,5.59,1.3, +12.308,-24.136,5.9,0.95, +12.236,-46.698,6.27,0.9, +12.47,27.711,7,0.36, +12.472,27.71,7.1,null, +12.389,-23.362,6.28,0.13, +12.682,64.248,5.39,0.49, +12.576,45.002,6.15,0.01, +12.532,-10.644,5.19,0.5, +12.148,-74.923,5.07,1.37, +12.818,61.806,6.07,1.88, +12.739,51.508,6.39,0.28, +12.515,-43.395,6.48,0.29, +13.721,83.707,5.62,0.09, +12.89,51.571,6.21,null, +12.672,-50.987,5.22,0.36, +12.826,3.385,6.37,1.07, +13.267,61.124,4.82,0.53, +12.967,-43.709,6.9,0.35, +13.223,38.549,6.69,0.02, +13.169,-24.006,5.46,1.24, +13.252,-1.144,4.77,1.57, +13.368,37.418,6.06,1.14, +13.448,52.689,6.27,0.19, +13.302,-24.777,6.46,0.44, +13.101,-69.504,6.22,0.56, +13.75,58.973,4.83,1.21, +13.647,19.188,5.74,-0.01, +13.573,-8.741,6.16,0.92, +13.772,48.679,6.27,1.68, +13.408,-62.871,5.7,1.56, +13.742,23.628,5.47,1, +13.811,24.557,6.2,1.62, +14.054,57.997,6.21,1.37, +14.232,68.776,6.37,0.38, +13.994,27.209,6.09,0.14, +13.927,-7.347,5.85,1.52, +14.177,60.717,2.47,-0.15, +14.166,59.181,4.63,0.96, +14.196,60.363,5.55,-0.07, +14.006,-11.267,5.31,1.52, +13.981,-27.776,6.1,1.67, +14.188,38.499,3.87,0.13, +13.751,-69.527,5.45,1.09, +14.302,23.418,4.42,0.94, +14.415,45.84,6.12,1.02, +14.63,66.352,5.97,-0.02, +14.459,28.992,5.42,1.08, +14.559,33.951,5.98,1, +14.477,13.696,6.32,0.89, +14.579,21.404,6.37,0.09, +15.129,70.983,6.39,0.13, +14.683,-11.38,5.61,0.97, +14.652,-29.357,4.31,-0.16, +14.593,-60.696,6.23,0.1, +15.014,44.711,6.84,null, +15.015,44.713,6.04,-0.01, +14.957,6.483,6.11,1.67, +17.186,86.257,4.25,1.21, +23.46,89.016,6.46,0.11, +15.577,51.035,6.47,null, +15.326,-38.917,5.59,1.18, +15.756,47.376,6.45,0.25, +15.726,41.345,5.98,0.16, +15.705,31.804,5.5,-0.05, +15.904,61.075,5.92,0.49, +15.61,-31.552,5.5,0.08, +15.736,7.89,4.28,0.96, +15.508,-57.002,6.11,0.94, +15.761,-4.837,5.43,1.11, +16.082,61.58,5.84,0.54, +16.01,52.502,5.99,1.47, +15.705,-46.397,5.36,0.9, +15.823,-29.526,6.29,0.93, +15.954,1.367,6.04,0.27, +16.195,51.01,6.54,-0.08, +16.115,29.659,6.19,0.43, +15.679,-65.456,6.21,1.64, +16.152,39.991,6.72,0.31, +19.056,87.145,6.25,1.12, +16.219,5.656,6,1.51, +16.273,14.946,5.68,0.41, +16.595,62.762,6.54,0.19, +16.42,21.473,5.34,-0.03, +16.424,21.465,5.56,-0.07, +17.301,80.012,6.29,null, +16.455,4.908,6.35,0.38, +16.464,4.909,7.25,0.49, +16.403,-9.979,6.12,1.01, +16.751,56.935,6.43,1.18, +16.521,-9.839,5.58,0.01, +16.79,53.498,6.38,null, +16.64,12.956,6.12,0.96, +16.532,-23.992,6.14,1.09, +17.068,54.92,5.17,0.69, +16.521,-46.719,3.31,0.89, +16.61,-35.661,6.61,0.14, +17.004,43.942,5.03,0.11, +16.805,-23.996,6.37,0.23, +17.139,58.264,5.79,-0.01, +17.005,32.012,6.25,0.4, +16.988,20.739,5.55,0.13, +16.943,-9.786,5.82,0.43, +17.093,5.65,5.52,0.34, +16.95,-41.487,5.21,0.16, +16.828,-61.775,5.37,0.88, +18.07,79.674,5.64,0.01, +17.148,-10.182,3.45,1.16, +17.376,47.242,4.25,-0.07, +17.664,68.779,5.29,-0.02, +17.433,35.621,2.06,1.58, +17.096,-55.246,3.92,-0.08, +17.455,19.659,5.55,0.69, +17.578,42.081,5.65,0.6, +17.581,25.458,5.8,1.47, +17.857,64.203,5.55,-0.07, +17.776,55.15,4.33,0.17, +17.548,15.674,6.06,1.49, +17.923,65.019,5.57,-0.09, +17.55,-8.906,6.4,1.04, +17.64,2.446,5.95,1.51, +17.793,37.724,5.81,-0.1, +17.778,31.425,5.16,0.23, +17.531,-57.694,6.41,0.89, +17.863,21.035,4.66,1.03, +17.915,30.09,4.51,1.09, +17.931,-2.251,5.94,1.4, +18.291,61.706,6.41,0.01, +18.142,45.338,6.11,1.64, +18.248,30.064,6.19,1, +19.128,79.91,6.26,0.42, +18.098,-30.802,6.52,0.48, +18.189,-37.856,5.92,0.28, +18.437,24.584,4.65,1.04, +18.433,7.575,5.24,0.32, +18.439,7.578,6.3,0.49, +18.521,28.53,6.43,1.7, +18.532,16.134,5.98,-0.08, +19.05,71.744,7.83,0.78, +18.6,-7.923,5.13,0.46, +18.677,6.995,6.03,1.08, +18.705,-0.974,5.7,0.42, +19.102,48.082,6.61,-0.05, +18.796,-45.531,4.96,0.58, +19.078,33.115,6.02,1.15, +19.271,44.902,6.34,null, +19.151,-2.5,5.41,0.9, +19.35,31.745,6.73,null, +20.081,77.571,6.31,0.92, +19.543,47.42,6.25,1.35, +18.942,-68.876,4.86,0.47, +19.45,3.614,5.16,0.07, +19.696,37.386,6.46,0.23, +19.265,-66.398,6.24,0.05, +20.496,76.239,6.38,0.28, +20.02,58.232,4.98,0.68, +19.867,27.264,4.76,0.03, +20.272,64.658,6.34,0.09, +19.951,-0.509,5.87,0.64, +20.945,78.726,6.07,0.39, +20.144,-3.247,6.23,1.02, +20.116,-11.239,6.15,1.11, +20.281,28.738,5.23,1.39, +20.585,45.529,4.88,1.08, +20.84,58.143,6.45,null, +20.654,1.726,6.2,1.52, +20.645,-0.45,6.49,1.08, +20.627,-19.081,6.35,0.48, +20.919,37.715,5.58,0.26, +20.906,34.246,6.29,0.83, +20.854,20.469,5.97,1.71, +21.444,70.98,6.49,null, +21.483,68.13,4.74,1.05, +20.879,-30.946,5.84,1.61, +21.01,-8.007,6.21,0.23, +21.006,-8.183,3.6,1.06, +21.454,60.235,2.68,0.13, +21.086,-6.915,5.91,0.41, +21.166,-15.66,6.14,0.91, +21.203,-2.849,6.15,0.96, +21.399,23.512,6.18,0.43, +21.17,-41.492,5.42,1.04, +21.578,43.458,5.96,0.49, +21.536,34.58,6.31,0.47, +21.175,-44.528,6.26,1.14, +21.405,-14.599,4.9,1.23, +21.564,19.172,5.38,0.39, +21.674,19.24,5.5,1.11, +21.776,34.378,6.27,0.46, +21.614,-0.399,6.41,1.24, +21.914,45.407,4.83,0.42, +21.861,41.101,6.46,0.27, +21.723,3.535,6.58,-0.04, +21.272,-64.369,5.93,1.56, +21.715,-13.057,5.66,0.35, +21.946,40.336,6.6,-0.04, +21.742,-32.543,5.79,3.86, +37.953,89.264,2.02,0.6, +21.944,-10.902,6.13,1.32, +22.095,7.961,6.2,1.12, +22.808,70.265,5.81,0.47, +22.718,66.098,6.14,0.08, +22.091,-43.318,3.41,1.57, +22.526,47.007,5.27,1, +22.18,-33.764,6.58,0.3, +22.47,18.356,6.02,0.14, +22.4,-21.629,5.12,0.02, +22.546,6.144,4.84,1.37, +22.377,-46.756,6.31,1.66, +22.595,-26.208,5.93,1.34, +22.871,15.346,3.62,0.97, +23.032,34.8,6.39,-0.12, +23.358,58.328,5.7,1.52, +22.813,-49.073,3.95,0.99, +22.93,-30.283,5.82,1.08, +23.483,59.232,4.71,1, +22.913,-45.576,6.17,0.06, +23.265,-9.015,6.59,-0.04, +23.233,-36.865,5.51,1.02, +23.569,37.237,5.88,-0.07, +23.151,-49.728,6.28,0.46, +23.429,-7.025,5.76,0.64, +24.344,74.301,6.58,0.03, +23.705,18.461,5.89,1.52, +23.658,-15.676,5.63,0.07, +23.969,41.076,6.38,1.11, +23.711,-31.892,6.12,1.11, +24.113,48.723,5.92,1.21, +23.943,14.661,6.22,-0.04, +24.629,73.04,5.28,0.96, +23.978,17.434,5.8,null, +24.199,41.406,4.09,0.54, +23.996,-15.4,5.42,1.21, +23.813,-58.139,6.01,0.38, +24.532,57.978,5.56,1.38, +24.035,-29.907,5.69,0.33, +24.275,12.142,5.57,0.35, +24.498,48.628,3.57,1.28, +24.632,45.4,6.36,0.04, +24.407,-9.404,6.24,0.53, +23.413,-78.505,6.11,0.97, +24.187,-58.271,6.18,1.61, +24.838,44.386,4.98,0.89, +25.055,53.868,6.39,1.61, +24.614,-36.528,5.94,1.05, +24.429,-57.237,0.46,-0.16, +24.716,-21.275,5.58,0.34, +24.708,-25.022,6.7,-0.08, +24.92,16.406,5.97,1.12, +25.166,43.298,5.61,0.21, +25.145,40.577,4.94,-0.09, +25.585,68.043,5.59,-0.07, +24.701,-53.439,6.84,0.44, +25.733,70.622,5.18,-0.04, +25.513,61.038,6.71,-0.03, +25.574,58.628,6.37,-0.02, +25.447,42.614,4.95,0.62, +25.327,25.746,6.17,0.44, +25.413,30.047,5.99,1.01, +24.948,-56.198,5.87,0.9, +24.949,-56.195,5.76,0.87, +25.743,61.422,6.34,0.01, +25.358,5.488,4.44,1.36, +25.515,35.246,5.64,-0.07, +25.832,60.551,5.78,-0.02, +25.436,-11.325,5.75,0.44, +25.624,20.269,5.24,0.84, +25.364,-38.133,6.17,0.42, +25.819,45.322,6.34,1.01, +25.915,50.689,4.07,-0.04, +25.536,-32.327,5.25,1.05, +25.513,-36.832,5.72,-0.01, +26.075,57.536,6.21,0.1, +25.681,-3.69,4.99,1.38, +25.421,-50.039,6.64,0.12, +26.192,57.089,6.25,0.04, +25.958,32.192,6.34,null, +26.11,46.14,6.35,null, +25.45,-60.789,5.71,1.27, +25.622,-53.741,5.52,0.53, +25.978,-4.766,6.19,1.54, +26.233,20.083,6.27,0.75, +26.017,-15.937,3.5,0.72, +26.348,9.158,4.26,0.96, +26.937,63.852,5.63,0.81, +24.482,-82.975,5.87,0.61, +26.497,-5.733,5.34,1.52, +26.412,-25.053,5.31,0.39, +26.647,17.413,6.55,0.25, +25.339,-79.148,6.33,0.94, +26.504,-27.349,6.39,0.36, +26.95,46.23,6.32,0.43, +26.524,-50.816,5.49,1.6, +26.526,-53.522,5.04,0.04, +27.162,37.953,5.94,0.97, +27.045,16.956,5.84,-0.03, +27.173,32.69,5.79,0.55, +26.82,-41.76,6.18,1.54, +24.367,-84.77,5.69,0.94, +27.315,47.897,5.82,0.29, +27.108,3.686,5.91,0.97, +26.949,-37.16,6.32,1.02, +27.738,51.933,5.9,0.43, +27.535,22.275,5.86,0.74, +27.396,-10.686,4.67,0.33, +27.331,-31.073,6.34,1.22, +27.997,55.148,5.52,-0.18, +27.717,11.043,5.94,0.3, +27.453,-38.404,6.37,0.52, +28.039,50.793,5.79,-0.07, +27.584,-47.816,6.14,1.01, +28.212,51.475,6.26,null, +27.865,-10.335,3.73,1.14, +28.452,55.598,6.45,0.18, +27.727,-50.206,5.94,0.14, +28.599,63.67,3.38,-0.15, +28.322,40.73,5.4,1.32, +28.27,29.579,3.41,0.49, +28.382,19.296,4.83,null, +28.382,19.294,4.75,-0.04, +28.217,-16.929,5.8,0.27, +29,68.685,4.99,-0.1, +28.389,3.188,4.62,0.94, +26.944,-80.177,6.06,0.34, +28.724,40.702,6.24,1.25, +28.74,37.128,6.26,1.17, +28.66,20.808,2.64,0.13, +28.347,-38.595,6.1,1.12, +28.412,-46.302,4.41,1.59, +28.977,37.278,5.89,1.63, +29.039,37.252,5.67,1.06, +28.592,-42.497,5.11,-0.06, +28.963,23.577,5.74,1.19, +28.974,1.85,6.01,0.56, +29.639,61.698,6.02,-0.04, +29.485,41.694,6.78,-0.06, +29.338,17.818,5.1,0.92, +29.432,27.804,5.82,1.6, +29.168,-22.527,4.85,1.42, +28.99,-51.609,3.7,0.85, +29.908,64.621,5.26,0.01, +29.64,49.204,5.69,1.01, +29.482,23.596,4.79,0.28, +28.734,-67.647,4.69,0.95, +28.943,-60.861,6.06,0.37, +30.738,77.916,6.04,1.14, +29.25,-51.766,6.1,0.48, +29.292,-47.385,4.83,0.88, +30.489,70.907,4.54,0.16, +29.611,-33.067,6.35,1.02, +29.899,21.058,5.87,1.03, +29.858,12.295,6.09,0.19, +30.794,73.851,6.23,null, +30.859,72.421,3.98,-0.01, +31.281,77.281,5.38,0.31, +30.038,3.097,5.88,0.62, +29.942,-20.824,5.41,1.65, +29.473,-65.425,6.37,0.9, +30.001,-21.078,4,1.57, +30.72,64.901,6,0.03, +30.112,-8.524,5.51,1.52, +29.912,-42.031,5.57,1.06, +30.751,64.39,5.58,0.38, +30.575,54.488,5.04,-0.08, +29.693,-61.57,2.86,0.28, +31.38,76.115,5.22,0.95, +28.96,-78.348,6.16,0.44, +30.311,-30.002,5.35,0.88, +30.512,2.764,5.23,null, +30.512,2.764,4.33,0.03, +32.355,81.296,6.05,0.11, +31.167,65.103,6.52,0, +30.742,33.284,5.5,0.03, +29.921,-66.066,6.1,1.17, +30.647,13.477,5.94,1.59, +30.427,-44.714,5.14,1.49, +30.975,42.33,2.26,1.37, +30.978,42.331,4.84,0.03, +30.914,25.936,5.63,0.54, +30.617,-29.665,6.42,0.14, +30.799,0.128,5.43,0.15, +30.744,-15.306,5.86,0.98, +30.927,18.253,6.21,1.42, +30.951,-0.34,5.93,0.88, +30.919,-4.104,5.62,1.59, +31.123,-29.297,4.69,-0.17, +31.641,22.648,5.03,0.11, +31.551,8.247,6.31,1.65, +31.705,25.705,6.15,-0.03, +31.622,0.035,6.28,0.9, +31.793,23.463,2,1.15, +32.169,58.424,5.67,0.61, +32.14,44.459,6.42,null, +32.122,37.859,4.82,0.12, +32.533,53.843,6.31,0.95, +32.386,34.987,3,0.14, +32.355,25.94,4.98,0.33, +32.346,17.224,6.43,null, +32.19,-17.779,6.1,1.61, +33.338,74.028,6.29,0.91, +32.871,57.646,6.36,0.33, +32.72,39.039,5.63,-0.02, +32.724,39.043,6.1,-0.07, +32.395,-24.346,6.48,0.29, +32.657,19.5,5.7,1.65, +32.289,-43.517,5.85,1.19, +32.8,25.937,6.02,1.36, +32.854,31.526,6.23,0.11, +32.838,8.57,5.63,0.56, +32.52,-43.816,6.32,0.9, +32.607,-50.824,6.12,0.82, +32.842,-10.052,6.01,0.39, +32.899,-1.825,5.93,0.97, +33.621,66.524,6.07,0.63, +33.423,58.561,6.44,0.6, +33.093,30.303,4.94,0.78, +33.305,44.232,4.83,1.48, +33.156,24.168,5.96,1.37, +33.401,51.066,5.31,0.93, +33.2,21.211,5.27,0.43, +33.511,47.484,6.06,0.4, +33.264,15.28,5.71,1.55, +33.25,8.847,4.37,0.89, +33.198,-2.394,5.54,0.57, +33.254,-21,5.86,1.01, +33.227,-30.724,5.28,-0.02, +33.991,47.811,6.33,null, +34.215,57.055,6.48,0.28, +33.984,33.359,5.28,-0.01, +33.942,25.783,5.79,0.44, +33.928,25.043,5.58,0.49, +33.868,-9.466,6.55,-0.02, +33.633,-41.167,5.91,0.97, +34.263,34.224,4.87,0.61, +34.5,57.9,5.75,1.17, +34.519,57.517,5.98,1.05, +34.389,44.307,6.7,null, +34.329,33.847,4.01,0.02, +34.293,23.768,6.55,1.02, +34.246,-6.422,5.51,0.96, +33.561,-67.842,5.55,1.55, +35.054,64.337,6.6,-0.03, +34.531,19.901,5.62,0.01, +34.82,47.38,5.3,-0.01, +34.795,46.473,6.21,null, +34.506,1.758,5.58,0.6, +34.845,48.955,6.37,null, +34.128,-51.512,3.56,-0.12, +34.738,28.643,5.03,0.04, +34.742,23.168,6.46,0.34, +34.905,39.835,6.63,-0.09, +33.869,-67.746,5.69,1.3, +35.173,47.311,6.11,-0.08, +35.018,30.188,6.47,null, +34.836,-2.977,3.04,1.42, +35.243,50.151,5.59,-0.13, +34.744,-25.946,6.34,0.73, +34.92,-4.346,6.5,0.08, +35.589,55.846,5.17,0.37, +34.853,-41.848,6.37,1.16, +35.71,41.396,5.82,0.27, +34.976,-55.945,5.81,1.55, +35.486,0.396,5.28,1.65, +35.966,55.364,6.28,0.86, +35.552,-0.885,5.42,0.31, +35.506,-10.778,5.46,0.35, +35.521,-17.662,5.87,1.23, +36.104,50.007,5.19,0.98, +35.636,-23.816,5.2,0.6, +36.317,56.61,6.25,0.31, +35.741,-18.354,6.22,0.94, +35.549,-43.2,6.31,1, +36.406,50.279,4.71,1.53, +35.777,-37.576,6.53,1.61, +35.728,-51.092,5.92,0.22, +36.204,10.611,5.47,-0.1, +36.084,-25.847,6.44,1.32, +36.243,-2.78,6.33,0, +35.437,-68.659,4.09,0.03, +36.141,-40.841,6.18,0.66, +37.267,67.403,4.52,0.12, +36.488,-12.291,4.89,-0.03, +36.966,50.57,6.12,0.41, +36.501,-15.341,5.83,0.15, +36.779,27.013,6.18,1.43, +36.865,31.801,5.54,1.12, +36.647,-20.043,5.88,1.26, +36.225,-60.312,5.35,0.39, +35.718,-73.646,5.01,1.09, +37.354,55.536,6.51,0.09, +37.042,29.669,5.29,null, +37.04,8.46,4.28,-0.06, +37,1.961,6.45,0.97, +37.202,29.932,5.89,0.58, +36.746,-47.704,4.25,-0.14, +36.36,-66.495,6.41,1.54, +37.307,23.469,6.19,0.15, +37.007,-33.811,5.14,0.1, +37.397,9.566,6.07,1.02, +37.569,33.834,6.25,1.07, +37.148,-31.103,6.11,1.11, +37.635,25.235,5.92,0.41, +37.66,19.855,6.15,0.25, +37.481,-22.683,6.77,0.19, +37.727,17.704,6.23,0.9, +37.688,0.255,6,0.17, +37.558,-25.186,6.51,0.29, +37.018,-64.3,6.37,-0.04, +37.637,-22.546,6.1,1.61, +38.026,36.147,5.15,1.47, +37.875,2.267,5.25,1.27, +38.219,34.543,5.83,1.07, +38.039,-1.035,5.35,1.02, +38.022,-15.245,4.75,0.45, +38.225,15.035,6.04,0.54, +38.062,-36.427,6.3,1.02, +39.508,72.818,5.16,0.88, +38.279,-34.65,5.9,1.06, +38.418,-20.002,6.21,1.1, +38.866,39.664,6.36,-0.1, +39.4,65.746,5.78,1.56, +38.912,37.312,5.71,1.39, +38.461,-28.232,4.9,-0.05, +38.945,34.688,5.35,1.66, +38.767,7.471,6.18,1.06, +38.678,-7.859,5.75,1.4, +39.02,6.887,5.82,0.98, +38.969,5.593,4.86,0.87, +38.477,-51.094,6.24,0.52, +39.238,38.733,5.9,0.48, +39.179,31.608,6.1,1.05, +39.26,34.264,5.3,1.55, +39,-7.832,5.53,1.59, +39.337,39.896,6.54,-0.12, +39.277,32.892,6.25,0.48, +38.39,-62.587,6.77,-0.06, +39.158,12.448,5.68,0.49, +39.24,24.648,7.09,0.5, +39.252,24.648,6.5,0.41, +39.146,7.73,5.81,1.04, +39.039,-30.045,5.75,1.02, +39.574,37.727,6.18,0.47, +39.616,38.089,6.3,-0.03, +39.503,7.695,6.39,0.44, +39.424,-3.396,5.65,1.02, +39.244,-34.578,5.79,0.66, +39.704,21.961,5.43,0.16, +41.948,81.448,5.78,1.3, +39.654,3.443,6.21,1, +37.919,-79.109,5.28,0.98, +39.578,-30.194,5.83,0.48, +39.352,-52.543,5.31,0.27, +39.871,0.329,4.07,-0.22, +39.603,-37.991,6.49,0.52, +39.891,-11.872,4.84,0.45, +40.171,27.061,5.3,0.09, +40.065,6.112,6.25,0.4, +40.051,-9.453,5.78,0.52, +40.762,55.106,5.77,-0.13, +40.01,-30.634,6.52,1.04, +40.749,53.526,5.84,1.12, +40.562,40.194,4.91,0.59, +39.95,-42.892,4.75,0.06, +40.308,-0.696,5.71,0.52, +41.207,67.825,5.95,0.1, +40.758,48.266,6.48,null, +40.592,20.012,5.69,-0.02, +40.167,-39.856,4.11,1.02, +40.451,-3.213,6.05,1.17, +40.392,-14.549,5.98,0.43, +40.62,10.742,6.3,0.06, +39.882,-64.282,6.55,-0.08, +41.05,49.228,4.12,0.49, +41.022,44.297,5.43,0.9, +40.863,27.707,4.66,-0.13, +40.165,-54.55,5.21,0.4, +40.963,25.638,6.35,0.08, +40.825,3.236,3.47,0.09, +40.528,-38.384,6.01,0.92, +39.898,-68.267,4.11,-0.06, +40.535,-46.524,6.1,0.88, +41.08,17.764,6.46,1.07, +41.137,15.312,5.77,-0.01, +40.64,-50.8,5.41,0.56, +41.031,-13.859,4.25,-0.14, +41.24,12.446,5.18,0.24, +41.235,10.114,4.27,0.31, +40.835,-40.527,6.36,-0.02, +42.231,69.634,6.18,0.18, +41.337,4.712,6.03,0.31, +41.085,-32.525,6.22,0.04, +41.276,-18.572,4.47,0.48, +41.743,35.984,6.25,0.93, +41.765,35.555,6.3,null, +41.045,-52.571,6.15,0.09, +41.319,-46.287,6.85,1.36, +40.861,-66.714,6.26,0.53, +41.977,29.247,4.51,1.11, +42.378,57.084,6.25,0.89, +41.688,-21.64,6.49,0.38, +41.797,-22.486,6.47,0.39, +42.134,18.284,5.82,1.2, +42.995,68.889,5.8,0.64, +42.191,25.188,5.86,-0.07, +42.363,37.326,6.45,0.43, +41.983,-12.461,6.9,1.56, +41.365,-63.704,5.74,0.93, +42.674,55.896,3.76,1.68, +41.89,-35.551,6.51,0.96, +42.323,17.464,5.22,-0.06, +41.386,-67.617,4.84,0.06, +42.496,27.261,3.63,-0.1, +42.94,58.315,6.45,0.1, +42.646,38.319,4.23,0.34, +42.272,-32.406,4.46,0.99, +42.924,46.842,5.88,0.89, +42.878,35.06,4.53,1.56, +42.463,-24.56,6.14,1.07, +42.476,-27.942,5.39,0.02, +43.217,52.998,6.36,0.07, +42.873,15.082,5.49,-0.09, +42.562,-35.844,5.92,0.9, +43.338,48.569,6.26,1.18, +42.76,-21.004,4.75,0.91, +42.668,-35.676,5.47,1.25, +42.256,-62.807,5.26,0.1, +42.7,-39.932,6.36,0.05, +43.565,52.763,3.95,0.74, +43.427,38.338,5.33,0.41, +43.299,16.483,6.31,null, +43.134,-12.769,6.04,0.87, +42.98,-30.814,6.4,0.48, +43.21,-9.441,6.32,0.19, +43.987,61.521,5.59,0.45, +44.103,64.332,6.24,2.03, +43.397,-22.376,5.95,1.04, +43.393,-38.437,5.92,0.44, +44.211,51.261,6.22,1.57, +44.139,47.164,6.02,1.34, +43.08,-62.91,6.03,1.25, +43.952,18.332,5.91,1.47, +43.47,-49.89,4,2.11, +44.109,18.023,5.63,0.43, +44.058,8.382,5.97,0.48, +43.527,-50.871,6.21,1.58, +42.619,-75.067,4.75,1.33, +44.322,31.934,5.11,-0.01, +44.107,-8.898,3.89,1.11, +44.156,-3.712,5.17,0.08, +44.51,38.615,6.04,1.41, +44.269,4.501,6.11,1.69, +44.522,20.669,5.8,0.41, +44.69,39.663,4.7,0.06, +43.587,-64.436,6.56,1.39, +46.533,79.419,5.49,1.57, +44.765,35.183,4.93,1.23, +44.349,-23.862,5.45,0.23, +44.305,-29.855,6.29,0.47, +44.958,47.221,5.47,0.89, +44.916,41.033,5.89,1.44, +44.803,21.34,4.63,0.04, +44.803,21.34,4.63,0.04, +44.524,-23.606,5.84,1.33, +45.218,52.352,5.28,-0.05, +45.223,52.352,6.74,0, +44.675,-2.782,5.23,0, +44.386,-38.191,6.41,-0.03, +45.049,38.132,6.11,-0.06, +44.698,-9.776,6.14,0.22, +44.929,8.908,4.7,-0.12, +44.565,-40.305,3.24,0.14, +44.568,-40.304,4.35,0.08, +44.922,-2.465,5.56,-0.08, +44.778,-28.907,6.14,1.04, +44.9,-25.274,5.71,0.4, +45.184,10.87,5.95,1.59, +44.91,-32.507,6.31,0, +45.213,-2.879,6.11,1.77, +45.475,26.462,5.9,0.14, +47.928,81.471,5.95,0.15, +45.292,-7.663,5.75,1.05, +45.468,5.336,6.25,1.05, +44.699,-64.071,4.99,0.13, +45.594,4.353,5.61,-0.1, +45.57,4.09,2.53,1.64, +45.484,-9.961,5.83,1.11, +45.539,-6.495,6.19,0.6, +45.407,-28.092,5.89,0.79, +46.199,53.506,2.93,0.7, +45.876,28.27,6.36,null, +45.676,-7.685,5.32,0.94, +46.385,56.706,4.76,1.02, +45.598,-23.624,4.09,0.16, +46.416,56.069,6.11,1.02, +46.294,38.84,3.39,1.65, +46.829,64.058,5.89,-0.03, +46.337,40.583,6.05,1.01, +46.17,15.856,6.49,null, +46.068,-7.601,5.26,0.2, +46.159,1.864,6.05,1.04, +46.361,25.255,6.8,-0.02, +46.361,25.255,7,null, +45.733,-46.975,5.82,1.3, +47.016,52.213,6.31,-0.01, +46.599,13.187,5.62,1.08, +47.985,74.394,4.87,0.02, +46.948,47.308,6.41,0.12, +45.903,-59.738,5.11,0.34, +46.64,-6.089,5.27,1.6, +47.042,40.956,2.12,-0.05, +47.267,49.613,4.05,0.59, +46.857,17.88,6.11,-0.12, +45.564,-71.902,5.53,-0.14, +47.088,18.795,6.27,1.58, +47.374,44.857,3.8,0.98, +47.161,8.471,6.28,1.06, +46.962,-27.831,6.19,0.16, +47.403,29.077,5.72,0.12, +47.537,27.82,6.42,0.01, +47.613,26.896,6.02,1.28, +47.823,39.612,4.63,1.11, +47.662,11.873,5.98,-0.06, +48.11,47.726,6.33,1.43, +48.04,42.376,6.15,-0.09, +47.908,19.727,4.35,1.03, +47.841,13.048,6.12,1.02, +47.648,-23.738,6.38,0.93, +48.059,27.257,5.79,-0.12, +47.828,-3.812,6.05,1.66, +48.35,48.177,5.9,0.97, +47.82,-16.025,6.26,1.2, +48.11,6.661,5.56,1.08, +46.955,-69.266,6.15,1.02, +47.614,-48.734,6.12,1.12, +50.082,77.735,5.45,0.19, +48.193,-1.196,5.06,0.57, +48.018,-28.987,3.87,0.52, +48.95,57.141,5.79,0.73, +53.084,84.911,5.61,0.92, +48.736,42.504,6.07,1.07, +49.382,65.659,6.36,0.09, +48.108,-44.42,5.93,0.44, +49.051,50.938,5.03,1.15, +48.256,-35.944,6.27,-0.08, +48.835,30.557,5.52,0.01, +48.725,21.044,4.89,-0.01, +49.02,45.346,6.16,1.67, +48.408,-29.804,6.16,1.05, +48.946,32.856,6.31,0.37, +49.008,34.689,6.25,0.28, +48.138,-57.322,5.74,2.28, +49.146,32.184,6.06,0.99, +49.298,40.483,6.45,null, +48.751,-26.1,6.25,0.04, +46.883,-78.989,5.57,0.3, +49.448,44.025,5.47,-0.06, +49.004,-5.919,6.17,-0.02, +48.958,-8.82,4.8,0.23, +49.998,65.652,4.84,-0.15, +49.441,39.283,5.96,0.07, +49.658,50.222,5.15,-0.06, +49.149,-9.154,6.14,0.4, +49.782,50.095,5.03,-0.06, +49.047,-30.827,6.65,-0.07, +49.683,34.223,4.82,1.49, +49.593,-0.93,5.38,1.04, +49.512,-28.797,5.91,0.33, +49.592,-22.511,4.88,0.9, +49.982,27.071,5.9,0.86, +49.84,3.37,4.83,0.68, +49.672,-18.56,5.71,0.37, +49.361,-47.752,5.85,1.24, +50.085,29.048,4.47,1.55, +50.107,25.663,6.12,1.24, +50.469,49.071,5.93,0.43, +50.36,43.329,4.95,0.04, +49.879,-21.758,3.69,1.62, +49.895,-24.123,5.61,1.66, +50.307,21.147,5.28,-0.07, +49.443,-62.575,5.54,0.64, +50.278,3.676,5.69,0.97, +49.982,-43.07,4.27,0.71, +51.169,64.586,5.23,2.08, +49.554,-62.506,5.24,0.6, +50.805,49.213,5.29,-0.07, +50.55,27.608,5.52,1.1, +50.188,-26.606,6.39,0.54, +49.496,-66.927,6.05,0.13, +50.688,20.742,5.09,1.24, +50.35,-23.635,5.52,0.88, +51.081,49.861,1.79,0.48, +50.568,-25.588,6.35,0.01, +51.124,33.536,5.61,-0.03, +51.452,53.922,6.51,0.29, +50.389,-47.777,6.39,1, +51.077,24.724,5.5,1.19, +50.913,4.882,6.38,0.86, +50.824,-7.794,6.2,0.7, +48.99,-77.388,5.52,0.44, +51.289,41.257,6.51,null, +51.109,20.804,6.08,-0.04, +51.042,12.629,6.04,1.23, +51.489,49.121,6.09,-0.07, +51.203,9.029,3.6,0.89, +50.936,-32.707,6.5,1.37, +52.581,71.864,6.32,1.8, +52.098,60.256,6.49,0.02, +52.013,49.063,4.98,-0.09, +52.267,59.94,4.21,0.41, +51.763,18.756,6.57,0.15, +52.218,49.848,5.58,-0.04, +51.793,9.733,3.74,-0.09, +51.828,12.735,6.28,-0.02, +52.479,58.879,4.54,0.56, +52.087,33.808,5.61,0.02, +51.482,-35.921,6.39,0.08, +52.547,59.366,6.13,0.08, +52.342,49.509,4.67,-0.09, +51.594,-27.317,5.93,0.94, +52.501,55.452,5.09,0.05, +52.359,46.938,6.24,0.13, +52.111,22.804,6.03,0.95, +51.549,-41.637,6.32,0.06, +52.004,-11.287,5.73,1.1, +52.654,48.104,5.82,-0.04, +52.644,47.995,4.36,1.35, +51.01,-69.625,6.15,0.48, +51.889,-35.681,5.71,1.29, +53.802,73.347,6.57,0.03, +52.873,49.21,6.29,0.09, +52.048,-35.853,6.5,0.13, +52.955,49.401,6.39,0.09, +52.413,-6.805,5.99,1.02, +52.602,11.336,5.14,-0.03, +52.4,-12.675,5.59,0.17, +53.036,48.024,5.47,-0.1, +51.401,-69.336,5.96,0.42, +52.837,27.572,5.96,null, +52.718,12.937,4.11,1.12, +52.689,6.189,5.94,0.96, +53.384,58.765,6.4,0.14, +53.11,46.057,5.31,0.4, +52.655,-5.075,4.73,-0.09, +53.422,57.869,6.37,0.51, +53.163,44.856,6.41,0.03, +53.412,54.975,5.98,0.11, +53.167,35.462,5.9,-0.06, +52.479,-42.634,5.78,0.22, +52.557,-41.37,6.12,0.48, +53.753,60.041,6.46,0.39, +53.396,39.899,5.81,0.11, +53.15,9.374,5.77,-0.08, +54.853,75.74,6.27,0.97, +52.654,-47.375,5.99,0.11, +52.975,-25.614,6.38,0.12, +52.345,-62.937,4.72,0.4, +53.232,-9.458,3.73,0.88, +53.535,17.833,6.17,0.89, +53.611,24.464,5.92,0.13, +54.123,48.193,4.23,-0.06, +53.447,-21.633,4.27,-0.11, +53.705,6.418,6.49,0.63, +53.145,-50.379,5.68,1.1, +53.656,-9.869,6.25,0.02, +52.715,-66.49,5.83,-0.06, +53.487,-31.08,6.2,0.48, +54.582,56.933,6.3,-0.13, +53.64,-31.875,6.4,1.4, +53.215,-61.017,6.41,1.04, +54.501,42.583,6.42,-0.06, +53.99,-11.194,5.57,0.91, +54.197,0.588,5.71,0.92, +54.073,-17.467,5.23,-0.13, +54.218,0.402,4.28,0.58, +54.449,15.431,6.39,0.17, +54.75,20.916,6.5,0.15, +53.603,-65.764,6.75,0.17, +55.539,63.217,5.1,1.63, +54.274,-40.275,4.58,1.04, +62.506,86.626,5.86,0.37, +54.622,-7.392,5.85,0.98, +52.495,-78.352,5.7,0.93, +54.857,16.537,6.16,1, +54.755,-5.626,5.96,0.92, +55.678,59.969,5.76,1.71, +55.283,37.58,5.57,-0.07, +54.699,-27.943,6.01,-0.02, +54.963,3.057,5.57,0.94, +54.91,-3.393,6.23,1.04, +54.856,-10.437,6.19,1.03, +55.193,25.329,6.11,0.06, +54.998,-1.121,6.12,1, +55.048,-15.227,6.33,0.88, +55.16,-5.211,5.53,-0.15, +55.731,47.788,3.01,-0.13, +55.594,33.965,4.97,-0.01, +56.504,67.202,5.8,0.35, +55.308,-11.803,6.49,0.36, +55.579,19.7,5.69,-0.01, +56.027,48.524,6.06,1.55, +55.343,-19.585,6.59,0.09, +56.51,63.345,4.8,0.8, +56.17,46.1,6.11,0.28, +56.08,32.288,3.83,0.05, +55.947,19.665,6.14,1.01, +56.131,36.46,5.59,0.06, +55.562,-31.938,5,-0.16, +56.298,42.579,3.77,0.42, +55.812,-9.763,3.54,0.92, +56.117,20.929,6.1,0.01, +57.307,70.871,5.44,0.09, +55.891,-10.486,5.6,0.22, +56.201,24.289,5.46,-0.04, +56.497,45.682,5.66,-0.07, +56.219,24.113,3.7,-0.11, +55.709,-37.314,4.59,1.2, +56.29,24.839,5.64,-0.07, +56.302,24.467,4.3,-0.11, +56.127,-1.163,5.25,-0.1, +56.884,55.923,6.1,-0.03, +57.59,71.332,4.63,0.03, +56.457,24.368,3.87,-0.07, +56.235,-0.297,5.55,1.42, +56.477,24.555,5.76,-0.04, +56.512,24.528,6.43,-0.02, +56.418,6.05,5.35,-0.12, +54.125,-78.323,6.29,1.15, +57.38,65.526,4.47,1.88, +56.582,23.948,4.18,-0.06, +56.026,-40.66,6.45,1.06, +57.403,63.297,5.85,0.18, +56.54,6.803,5.91,0.99, +57.076,50.737,6.14,0.06, +57.332,57.118,6.46,0.06, +56.535,-12.102,4.42,1.63, +56.969,33.6,6.57,0.08, +56.954,32.195,6.25,0.47, +56.871,24.105,2.87,-0.09, +57.924,68.508,6.32,-0.08, +56.211,-48.061,6.49,1.02, +56.141,-54.274,6.3,1.04, +56.316,-47.36,5.73,0.96, +57.284,43.963,6.02,0.29, +56.614,-29.338,5.9,0.12, +57.087,23.421,5.45,-0.07, +56.712,-23.25,4.23,0.42, +57.068,11.143,5.07,-0.13, +56.05,-64.807,3.85,1.13, +57.519,44.968,5.66,0.76, +57.386,33.091,5.11,0.07, +57.29,24.053,3.63,-0.09, +56.834,-29.902,6.55,0.49, +57.297,24.137,5.09,-0.08, +56.915,-23.875,5.24,0.07, +57.162,0.228,5.91,1.23, +57.431,23.712,6.17,-0.05, +56.983,-30.168,5.54,0.98, +57.479,22.244,6.07,-0.01, +56.957,-36.106,6.21,-0.1, +57.149,-20.903,5.81,1.64, +57.579,25.579,5.26,0.21, +57.148,-37.622,5.4,0.01, +57.15,-37.621,4.73,-0.03, +57.974,34.359,5.77,0, +58.43,57.975,5.8,0.18, +57.903,22.032,6.83,null, +57.816,13.046,6.3,-0.07, +57.364,-36.2,4.17,0.95, +59.126,71.822,6.34,0.3, +58.018,31.168,6.25,0.2, +58.411,48.651,5.76,1.05, +58.001,6.535,5.67,0.06, +57.657,-36.425,6.86,-0.04, +58.292,17.327,5.97,0.34, +58.173,-5.361,5.48,-0.1, +58.533,31.884,2.85,0.12, +59.356,63.072,5.03,-0.09, +59.285,61.109,5,1.45, +58.304,-18.434,6.22,0.88, +58.993,47.871,5.37,-0.08, +56.81,-74.239,3.24,1.62, +58.846,31.046,6.1,0.29, +59.152,50.695,5.28,0.41, +58.573,-2.953,6.14,0.09, +58.573,-2.955,4.79,0.94, +58.427,-24.612,4.65,-0.13, +58.412,-34.732,5.11,-0.13, +59.12,35.081,5.49,-0.03, +58.389,-46.894,5.93,1.24, +58.818,-12.099,6,0.32, +59.217,22.478,5.63,0.3, +58.597,-40.357,5.71,0.6, +59.463,40.01,2.89,-0.18, +59.266,23.176,6.06,0.02, +59.36,24.462,6.16,1.37, +59.513,34.814,6.53,0.23, +59.257,6.04,6.09,0.06, +59.158,-9.751,6.19,0.28, +59.621,38.84,6.3,1.08, +58.642,-52.691,6.46,0.16, +59.741,35.791,4.04,0.01, +59.917,38.821,6.38,0.1, +62.512,80.699,5.1,0.56, +59.508,-13.509,2.95,1.59, +59.718,-5.47,5.83,1, +59.92,10.331,6.37,0.42, +60.311,36.99,6.41,-0.01, +59.875,-12.574,5.6,1.48, +59.017,-63.464,6.14,1.1, +60.154,17.297,6.32,0.06, +60.203,18.194,5.89,0.32, +60.17,12.49,3.47,-0.12, +59.981,-24.016,4.66,-0.13, +61.513,68.68,5.87,1.54, +61.113,59.156,5.06,0.5, +60.442,9.998,5.67,0.02, +60.383,-1.55,5.28,-0.15, +59.679,-57.102,6.05,0.44, +60.17,-30.491,5.93,0.04, +59.686,-61.4,4.56,1.62, +61.662,65.521,6.17,0.14, +60.653,-0.269,5.38,0.5, +60.065,-51.565,6.51,1.64, +60.789,5.989,3.91,0.03, +61.09,24.106,5.47,0.86, +60.936,5.436,5.33,-0.08, +60.986,8.197,5.46,0.37, +61.652,54.009,6.31,0.99, +61.174,22.082,4.36,1.07, +61.041,2.827,5.36,0.5, +60.853,-20.144,6.46,-0.18, +60.903,-20.158,7.01,1.22, +61.963,62.33,6.99,0.42, +61.646,50.351,4.29,0.02, +61.334,22.009,5.9,0.62, +61.036,-16.589,6.39,1.26, +60.224,-62.159,4.51,1.65, +61.095,-12.792,5.61,1.08, +60.326,-61.079,4.97,1.42, +61.171,-20.382,6.13,1.16, +61.652,27.6,5.2,-0.13, +61.752,29.001,5.23,0.34, +62.365,59.908,6.28,1.14, +55.634,-85.262,6.41,-0.01, +61.485,-8.856,6.26,0.06, +62.165,47.713,4.04,-0.03, +61.445,-20.512,6.34,0.92, +61.406,-27.652,5.59,0.31, +62.343,54.829,6.18,null, +62.064,37.728,6.09,0.95, +62.153,38.04,5.51,0.46, +61.925,15.163,6.01,0.4, +61.997,17.34,5.89,1.5, +63.437,72.126,6.03,1.01, +63.215,68.502,6.32,1.18, +62.292,19.609,5.5,1.07, +62.257,13.398,5.95,0.05, +61.855,-42.917,6.59,0.93, +62.746,33.587,5.72,1.44, +62.708,26.481,5.41,0.34, +62.324,-16.386,5.37,-0.15, +67.054,83.808,5.57,-0.13, +62.594,-6.924,5.44,0.94, +62.141,-45.865,6.59,0.38, +62.835,5.523,5.72,0.36, +62.699,-8.82,5.7,1.06, +61.84,-64.222,6.38,0.64, +63.131,17.278,6.09,1.08, +63.757,57.46,6.08,0.61, +63.213,22.414,6.12,0.19, +62.966,-6.837,4.04,0.33, +62.691,-35.274,6.44,1.07, +62.901,-20.356,5.79,0.18, +63.498,37.967,6.45,null, +62.711,-41.994,4.93,0.33, +63.725,48.409,4.14,0.95, +67.5,83.341,5.46,0.87, +64.223,61.85,5.7,-0.14, +63.722,40.484,4.71,1.01, +63.395,10.212,6.23,0.05, +63.38,8.891,6.51,0.16, +63.388,7.716,5.29,0.36, +63.458,12.753,6.25,1.16, +63.485,9.264,4.84,0.8, +63.409,-1.15,6.44,-0.13, +64.284,57.861,5.71,1.09, +64.18,53.612,5.19,0.05, +63.651,10.011,5.22,-0.1, +63.132,-44.368,6.71,1.48, +66.762,80.824,5.43,1.17, +63.599,-10.256,4.87,1.17, +63.943,15.401,6.32,0.4, +63.884,8.892,4.29,-0.06, +63.858,6.2,6.93,0.7, +63.872,6.187,6.31,0.59, +63.399,-40.358,6.37,1.46, +64.561,50.296,4.61,0.04, +63.818,-7.653,4.43,0.82, +63.5,-42.294,3.86,1.1, +65.168,65.141,5.27,0.81, +64.534,42.141,6.22,-0.08, +64.315,20.579,4.94,0.26, +64.805,50.049,5.45,0.22, +64.597,21.579,5.65,0.28, +64.33,-6.472,5.94,1.08, +65.048,50.921,5.55,-0.01, +64.602,9.487,6.54,0.16, +65.448,60.736,5.39,1.49, +63.606,-62.474,3.35,0.91, +65.06,41.808,5.92,0.94, +64.007,-51.487,4.25,0.3, +64.859,21.142,5.35,-0.08, +63.703,-62.192,5.45,1.1, +64.903,21.774,5.38,-0.14, +65.466,56.507,5.88,null, +65.103,34.567,4.93,0.94, +65.042,31.953,6.16,1.71, +64.566,-20.716,6,1.67, +64.948,15.628,3.65,0.99, +64.474,-33.798,3.56,-0.12, +65.089,27.351,4.95,1.15, +64.906,10.121,6.31,1.43, +65.388,46.499,4.85,-0.03, +64.99,14.035,5.59,0.28, +65.741,59.616,6.19,null, +64.656,-22.97,6.07,0.3, +65.105,18.743,6.12,0.37, +64.12,-59.302,4.44,1.08, +65.151,15.095,5.26,0.22, +64.088,-60.949,6.37,0.07, +65.22,13.864,6.17,0.46, +64.763,-33.905,6.37,0.13, +65.172,6.131,5.77,0.92, +65.204,9.226,6.53,0.15, +65.161,-6.246,6.27,0.91, +65.178,-7.592,5.85,-0.13, +64.819,-44.268,5.34,1.08, +64.667,-52.86,6.09,0.49, +65.363,-0.098,5.86,1.32, +65.162,-20.64,5.38,-0.02, +65.515,14.077,5.72,0.32, +65.645,25.629,5.37,-0.05, +65.595,20.821,5.91,1.66, +65.9,42.428,6.23,0, +64.418,-63.256,5.87,-0.07, +65.734,17.543,3.76,0.98, +65.38,-25.728,6.01,0.35, +65.885,20.982,5.99,0.03, +65.854,16.777,5.64,0.3, +66.122,34.131,5.73,-0.06, +65.999,24.301,6.36,0.17, +66.156,33.96,5.76,0.4, +66.024,17.444,4.8,0.15, +65.966,9.461,5.12,0.07, +66.754,57.585,6.32,0.04, +65.92,-3.746,5.17,0.08, +65.774,-24.892,5.83,1.51, +66.238,19.042,5.98,0.37, +65.782,-35.545,6.39,1.24, +66.342,22.294,4.22,0.13, +66.354,22.2,5.28,0.25, +66.373,17.928,4.29,0.05, +66.526,31.439,5.28,0.97, +66.405,15.941,6.46,0.49, +66.577,22.814,4.28,0.26, +66.009,-34.017,3.96,1.49, +66.587,15.618,4.49,0.25, +65.472,-63.386,5.24,0.96, +66.652,14.714,4.69,0.98, +66.588,8.59,6.06,0.02, +66.235,-34.758,6.55,0.44, +66.823,22.996,5.53,-0.1, +66.753,2.079,6.23,1.09, +68.378,72.529,5.94,0.3, +66.87,11.212,5.88,0.05, +67.003,21.62,5.72,0.27, +66.33,-44.161,6.39,0.44, +66.051,-57.071,6.29,0.66, +67.216,30.361,6.4,0.52, +67.11,16.36,4.97,1.13, +67.098,14.741,5.9,0.32, +67.154,19.18,3.53,1.01, +66.738,-24.081,6.11,0.14, +67.144,15.962,3.84,0.95, +67.165,15.871,3.4,0.18, +67.015,1.859,6.15,1.02, +67.209,13.048,5.03,0.23, +67.134,1.381,5.55,-0.1, +66.272,-61.238,5.94,1.54, +68.008,53.911,5.77,0.18, +66.775,-46.947,6.1,0.46, +67.66,32.458,6.21,-0.04, +67.429,10.522,6.79,0.09, +67.163,-19.458,5.96,1.22, +67.536,15.638,5.58,0.32, +67.279,-13.048,5.6,-0.23, +67.85,40.01,6.26,0.04, +67.51,10.263,6.48,1.03, +64.496,-80.214,5.69,0.84, +67.64,16.194,4.78,0.17, +67.662,15.692,5.48,0.26, +67.039,-41.96,6.44,1.64, +67.655,13.724,5.4,0.26, +67.54,-13.592,6.24,1, +67.966,15.852,6.02,0.34, +67.333,-46.515,6.16,1.06, +68.354,43.064,6.09,0.38, +66.941,-62.521,5.75,1.01, +68.02,5.41,6.39,0.42, +67.97,-0.044,4.91,1.32, +67.858,-13.645,6.21,0.12, +67.668,-35.654,5.96,1, +69.101,64.262,5.94,-0.03, +68.156,-3.209,5.81,-0.14, +68.387,18.017,6.25,0.07, +67.709,-44.954,5.07,-0.19, +68.462,14.844,4.65,0.25, +68.658,28.961,5.88,-0.06, +68.45,9.413,6.01,1.06, +68.342,-10.786,6.06,1.38, +68.535,5.569,5.68,0.05, +68.478,-6.739,5.72,-0.13, +68.559,-6.838,6.09,1.38, +68.548,-8.231,5.11,1.7, +68.549,-8.97,5.26,1.47, +68.378,-29.767,4.51,0.98, +69.172,41.265,4.25,1.22, +68.928,19.882,6.36,null, +65.241,-81.58,5.79,0.35, +68.98,16.509,0.85,1.54, +68.914,10.161,4.25,0.18, +69.122,23.341,6.02,0.38, +68.808,-9.737,6.37,0.11, +68.752,-19.921,6.13,1.17, +69.007,-3.612,6.33,-0.1, +69.08,-3.352,3.93,-0.21, +68.887,-30.562,3.82,0.98, +68.499,-55.045,3.27,-0.1, +69.992,53.473,5.35,0.32, +69.978,53.08,5.05,1.07, +71.501,76.611,6.49,0.51, +69.307,0.998,5.31,-0.12, +69.623,26.94,6.47,null, +69.566,20.685,5.92,-0.05, +69.539,16.033,5.79,0.31, +69.54,12.511,4.27,0.12, +69.4,-2.473,5.23,0.28, +68.392,-62.824,5.79,1.04, +69.212,-30.717,6.3,-0.1, +69.846,25.218,6.22,0.16, +69.788,15.8,5.07,0.15, +69.819,15.918,4.69,0.15, +69.776,7.871,5.39,0.26, +69.545,-14.304,3.87,1.09, +70.35,48.301,5.67,-0.02, +69.723,-12.123,5.01,0.07, +70.014,12.198,5.46,-0.12, +65.712,-82.899,6.76,0.2, +70.825,59.521,6.5,null, +69.832,-14.359,5.45,1.06, +69.947,-1.053,6.1,0.94, +70.46,38.28,5.99,0.57, +70.333,28.615,5.78,-0.03, +72.21,75.941,6.06,0.28, +69.19,-62.077,5.4,1.58, +70.84,49.974,5.87,0.02, +70.726,43.365,5.29,0, +70.028,-24.482,5.58,0.92, +70.11,-19.672,4.32,1.61, +70.561,22.957,4.28,-0.13, +69.768,-51.673,6.44,1.32, +70.808,24.089,6.13,0.54, +71.054,40.787,6.08,0.06, +70.951,32.865,6.45,null, +70.14,-41.864,4.45,0.34, +70.515,-37.144,5.05,0.37, +70.076,-58.944,6.53,0.68, +70.894,-8.794,6.82,0.39, +70.896,-8.796,6.7,0.92, +71.108,11.146,5.4,0.25, +71.022,-8.504,5.9,-0.11, +70.789,-30.766,5.68,1.41, +72.652,70.942,6.37,-0.08, +72.001,56.757,5.3,0.25, +71.427,23.628,6.35,0.06, +71.033,-18.667,5.53,0.02, +71.685,40.313,5.97,0.93, +72.029,55.603,6.26,null, +70.693,-50.481,5.31,0.98, +71.57,18.735,6.01,1.21, +70.934,-41.065,6.25,1.46, +71.507,11.706,5.37,0.19, +71.375,-3.255,4.02,-0.15, +71.268,-21.284,5.72,1.47, +71.6,-2.954,6.33,0.04, +75.086,81.194,5.07,1.28, +71.457,-34.005,6.86,0, +71.608,-28.087,6.19,0.19, +71.481,-39.357,6.05,1.07, +73.022,63.505,5.44,1.57, +72.329,32.588,5.86,0.24, +72.303,31.437,5.58,1.12, +71.088,-59.733,5.27,0.2, +69.59,-77.656,6.05,1.1, +71.901,-16.934,5.51,0.63, +72.477,37.488,4.88,1.44, +72.186,3.588,6.03,1.19, +72.789,48.741,5.66,0.99, +72.151,-5.674,5.78,0.62, +72.434,15.904,6.08,1.6, +72.135,-16.329,5.77,0.55, +71.957,-30.02,6.37,1.07, +71.241,-63.23,6.46,1.08, +70.766,-70.931,5.54,-0.12, +73.513,66.343,4.29,0.03, +72.46,6.961,3.19,0.45, +72.653,8.9,4.36,0.01, +72.426,-13.77,6.26,0.44, +73.291,52.841,6.41,null, +72.844,18.84,5.1,0.21, +72.141,-43.98,6.72,0.95, +72.548,-16.217,5.03,0.98, +73.199,42.587,5.71,0.11, +73.158,36.703,4.78,1.41, +72.802,5.605,3.69,-0.17, +72.931,9.975,6.11,0.08, +73.196,27.898,5.97,0.37, +73.763,55.259,5.52,0.04, +73.133,14.251,4.74,1.84, +72.568,-41.321,6.07,0.37, +73.714,44.061,6.08,-0.02, +72.867,-34.906,5.86,0.08, +73.224,-5.453,4.39,0.25, +74.03,52.869,5.75,0.11, +73.345,2.508,5.33,1.64, +72.73,-53.461,5.61,0.33, +72.735,-53.46,6.42,null, +73.483,1.569,6.61,0.04, +73.743,19.485,6.37,0.29, +73.563,2.441,3.72,-0.18, +74.322,53.752,4.47,-0.02, +73.695,11.426,5.19,0.12, +73.724,10.151,4.65,0.09, +73.699,7.779,5.33,1.22, +75.584,74.269,6.06,1.57, +74.083,36.169,6.07,0.41, +73.711,0.468,5.99,-0.12, +74.065,24.592,6.37,0.33, +73.96,15.04,5.81,-0.08, +74.248,33.166,2.69,1.53, +73.993,5.399,6.5,0.02, +73.778,-16.741,5.7,0.96, +74.093,13.514,4.07,1.15, +73.828,-16.418,5.72,0.88, +74.101,-5.171,5.51,-0.13, +73.876,-25.728,6.72,0.27, +73.728,-39.629,6.1,1.42, +74.343,17.154,5.48,1.31, +74.453,23.949,5.79,1.11, +76.054,73.764,6.66,null, +74.943,53.156,6.08,1.46, +76.166,74.067,5.96,null, +74.539,25.05,5.81,0, +74.322,-1.067,6.23,0.42, +74.814,37.89,4.94,0.04, +75.4,61.078,6.03,0.41, +75.71,66.823,6.19,0.48, +74.437,-14.231,6.15,-0.21, +74.545,-2.213,6.35,0.1, +73.721,-58.547,6.12,0.44, +73.377,-66.676,6.41,1.63, +75.076,39.395,5.95,0.41, +74.748,14.543,6.09,0.04, +74.637,1.714,4.47,1.4, +75.097,39.655,6.58,null, +75.855,60.442,4.03,0.92, +74.755,-16.376,5.66,0.43, +75.492,43.823,2.99,0.54, +73.273,-72.407,6.28,0.52, +74.902,-14.806,7.71,5.74, +74.96,-10.263,5.38,0.8, +75.136,3.615,7.03,null, +75.141,3.616,6.66,-0.07, +74.983,-12.537,4.79,0.26, +75.62,41.076,3.75,1.22, +75.166,-2.066,6.32,0.28, +75.204,-5.753,6.22,1.06, +75.828,41.442,6.14,0.16, +82.95,85.939,6.51,0.32, +75.36,-7.174,4.81,-0.19, +75.46,0.722,5.92,1.27, +75.5,1.609,6.24,-0.04, +75.774,21.59,4.64,0.16, +75.357,-20.052,4.91,-0.05, +76.535,58.973,5.08,-0.08, +76.551,59.021,6.08,1.12, +76.624,61.17,6.04,1.37, +75.69,-4.21,5.85,1.21, +76.06,30.495,6.14,1.21, +76.154,32.32,6.62,0.27, +75.541,-26.275,5.02,1.07, +73.797,-74.937,5.47,1.52, +76.592,54.406,7.24,null, +75.394,-39.718,6.03,0.88, +76.158,27.696,6.6,0.24, +76.09,21.278,6.19,1.32, +75.687,-22.795,5.75,1.2, +75.595,-31.771,5.94,1.17, +77.403,69.639,6.41,1.11, +76.669,51.598,5,0.33, +76.142,15.404,4.68,-0.06, +76.504,35.936,6.52,0.16, +75.967,-14.369,6.41,-0.18, +76.629,41.234,3.17,-0.18, +76.384,19.806,6.44,0.21, +78.093,73.947,5.43,-0.12, +76.707,43.175,6.2,0.43, +75.972,-24.388,5.61,0.1, +76.227,-3.04,6.05,-0.11, +77.435,64.919,6.41,0.4, +76.349,1.178,6.17,3.45, +75.702,-49.151,5.38,0.42, +78.648,76.473,6.37,-0.02, +75.975,-41.745,6.31,0.53, +76.102,-35.483,4.55,1.2, +76.109,-35.705,6.34,0.3, +76.365,-22.371,3.19,1.46, +76.318,-26.152,5.73,1.17, +76.863,18.645,5,0.65, +76.69,-4.655,5.12,-0.06, +76.952,20.418,5.3,0.09, +77.028,24.265,5.5,0.06, +76.981,21.705,5.89,0.19, +76.653,-13.122,6.05,-0.06, +76.91,9.472,6.17,0.62, +76.242,-49.578,5.03,1.49, +76.97,8.498,5.34,0.33, +76.854,-12.491,5.97,0.6, +76.963,-5.086,2.79,0.13, +76.253,-54.407,6.27,1.54, +77.679,46.962,5.68,0.42, +77.579,37.302,6.02,0.72, +77.438,28.031,6.01,0.27, +77.084,-8.665,5.78,-0.06, +77.332,9.829,5.43,0.24, +77.182,-4.456,5.12,0.44, +76.378,-57.473,4.72,0.52, +78.263,61.85,6.17,0.02, +77.425,15.597,4.82,0.32, +75.679,-71.314,5.31,1, +78.38,62.691,6.5,0.21, +77.287,-8.754,4.27,-0.19, +77.062,-35.718,6.52,1.08, +77.513,-0.565,6.1,1.1, +75.055,-78.3,6.29,1.51, +79.555,73.268,5.74,null, +77.923,16.046,5.18,1.49, +77.742,-2.254,6.25,0.98, +80.64,79.231,5.05,0.47, +77.83,-2.491,5.9,0.46, +78.797,59.406,6.15,1.18, +78.357,38.484,4.86,0.18, +77.923,0.515,6.67,-0.07, +77.939,1.037,5.89,0.66, +78.685,53.214,6.2,0.07, +77.845,-11.849,5.68,1.46, +77.685,-25.909,6.41,1.25, +76.892,-63.4,5.2,1.65, +78.075,-11.869,4.45,-0.1, +78.201,-6.057,5.91,0.96, +78.323,2.861,4.46,1.19, +77.9,-37.395,6.57,1.62, +76.539,-73.038,6.27,-0.01, +78.382,1.968,6.09,0.42, +78.233,-16.206,3.31,-0.11, +78.447,0.56,6.32,1.46, +78.389,-8.148,6.37,-0.13, +78.308,-12.941,4.36,-0.1, +78.852,32.688,5.02,0.23, +79.324,53.586,6.5,1.66, +79.173,45.998,0.08,0.8, +78.684,5.156,5.5,1.37, +78.5,-14.607,6.21,0.37, +78.865,22.285,6.27,0.08, +79.076,34.312,5.96,0.22, +78.635,-8.202,0.12,-0.03, +85.953,85.668,6.6,null, +78.444,-35.826,6.98,1.47, +74.712,-82.471,5.85,0.93, +78.827,-1.409,6.15,0.39, +79.017,11.341,5.56,-0.04, +79.866,58.117,6.13,-0.03, +80.094,62.654,5.61,1.75, +78.62,-35.977,5.76,1.01, +79.566,42.792,5.48,1.65, +78.851,-26.943,5.07,-0.1, +79.171,1.947,6.42,-0.02, +79.668,40.465,6.18,1.37, +79.545,33.372,4.54,1.27, +78.472,-52.031,6.05,1.39, +79.579,33.767,6.14,-0.06, +79.785,40.099,4.71,0.63, +78.946,-34.927,6.66,0.15, +79.2,-17.142,6.56,-0.16, +79.75,33.748,5.41,-0.19, +80.01,44.426,6.62,null, +79.848,33.986,6.49,0.24, +79.402,-6.844,3.6,-0.11, +80.164,46.964,6.54,0.6, +79.418,-13.52,5.5,0.93, +80.062,41.086,5.52,0.11, +79.819,22.096,4.94,0.93, +80.004,33.958,5.03,0.27, +79.811,20.135,6.08,1.01, +78.912,-52.182,6.49,1.21, +79.371,-34.895,4.83,1, +78.439,-67.185,4.83,1.28, +82.357,77.978,6.56,0.14, +79.797,2.596,5.34,0.41, +79.71,-18.13,5.96,0.58, +79.897,-1.412,6.34,-0.11, +80.452,41.804,5.23,-0.15, +80.247,27.957,6.33,0.04, +80.866,57.544,5.28,-0.03, +80.303,29.57,5.76,0.06, +79.823,-18.52,6.36,-0.16, +79.826,-18.51,6.54,-0.11, +80.236,19.814,6.18,1.23, +79.894,-13.177,4.29,-0.26, +79.996,-12.316,5.3,-0.12, +79.849,-27.369,5.99,-0.04, +80.11,-5.367,6.39,-0.03, +80.71,41.029,5.54,0.12, +80.33,4.012,6.57,-0.09, +80.112,-21.239,4.71,-0.05, +80.432,8.429,5.8,-0.13, +80.383,-0.416,5.68,-0.12, +80.44,-0.382,4.73,-0.17, +80.086,-34.699,6.34,0.33, +79.842,-50.606,5.45,0.51, +80.845,28.937,6.46,-0.04, +80.463,-13.756,6.56,-0.09, +80.708,3.544,5,-0.15, +80.443,-24.773,5.06,0.67, +80.32,-34.345,6.09,-0.19, +81.163,37.386,4.99,1.42, +80.907,16.699,6.08,0.14, +81.16,31.224,6.28,1.24, +81.16,31.143,5.94,0.04, +80.88,5.323,6.35,0.12, +80.827,-8.416,5.9,-0.03, +81.304,34.855,6.55,1.11, +81.106,17.383,4.99,0.53, +80.926,-0.16,5.7,-0.21, +80.964,-0.867,6.11,0.5, +80.876,-13.927,5.25,-0.21, +80.987,-7.808,4.14,0.96, +80.8,-26.706,6.49,0.5, +81.151,2.353,6.32,-0.15, +81.12,-0.891,5.08,0.96, +81.119,-2.397,3.36,-0.17, +81.187,1.846,4.95,-0.2, +81.283,6.35,1.64,-0.22, +81.573,28.608,1.65,-0.13, +81.118,-16.976,5.65,0, +80.85,-39.679,5.71,1.62, +81.726,35.457,6.15,1.45, +81.704,34.392,5.94,0.14, +81.714,33.263,6.15,1.15, +80.913,-37.337,6.82,1.04, +81.524,16.7,6.25,-0.08, +81.257,-10.329,5.61,1.56, +81.38,-0.544,6.57,-0.05, +80.592,-56.134,6.11,-0.1, +82.543,63.067,5.42,1.71, +81.446,0.521,6.16,-0.18, +81.785,30.209,5.74,0.16, +81.912,34.476,5.07,1.4, +81.51,-5.518,6.23,-0.06, +81.662,6.869,6.42,-0.02, +81.792,17.962,5.42,-0.1, +81.808,15.258,6.16,0.08, +81.909,21.937,4.88,-0.15, +81.709,3.096,4.59,-0.21, +81.499,-19.696,5.89,0.4, +81.232,-44.226,6.08,1.2, +81.94,15.874,5.5,0.01, +78.107,-81.542,6.51,1.11, +82.007,17.239,5.77,1.63, +81.77,-11.901,6.35,0.51, +81.193,-52.316,6.27,0.07, +82.145,13.679,6.35,0.15, +82.007,1.298,6.41,-0.18, +82.319,25.151,5.47,-0.04, +82.419,29.186,6.24,0.45, +81.902,-21.376,6.07,1.04, +82.703,41.462,6,1.11, +82.688,39.826,6.37,0.97, +82.236,-3.307,6.39,-0.01, +81.772,-40.944,5.87,0.23, +83.141,57.221,6.48,0.57, +82.061,-20.759,2.84,0.82, +82.348,-3.446,5.79,1.15, +82.681,22.463,6.29,1.18, +82.609,15.36,5.94,0.14, +82.478,1.789,5.78,-0.2, +82.433,-1.092,4.71,1.57, +82.064,-37.231,5.57,0.02, +81.58,-58.912,5.14,1, +82.583,4.204,6.21,1.27, +82.278,-30.117,6.75,1.06, +82.696,5.948,4.2,-0.14, +82.586,-7.435,6.33,-0.19, +82.81,3.292,5.46,-0.18, +83.182,32.192,4.76,0.34, +84.932,75.044,6.17,1.57, +83.053,18.594,4.38,2.07, +83.37,42.109,6.55,-0.02, +83.059,17.058,5.46,-0.04, +82.837,-6.708,6.22,-0.17, +82.782,-20.864,5.55,0, +83.365,32.801,6.48,0.09, +83.002,-0.284,6.85,-0.16, +83.002,-0.299,2.23,-0.22, +84.318,66.696,6.26,null, +83.408,34.726,6.27,0.15, +82.983,-7.301,4.62,-0.26, +82.54,-47.078,5.46,0.62, +84.313,64.155,6.15,0.01, +83.382,18.54,5.69,0.01, +81.75,-68.623,6.03,0.34, +83.412,20.474,6.18,-0.07, +83.172,-1.592,5.35,-0.19, +82.803,-35.471,3.87,1.14, +83.28,-1.718,6.46,-0.09, +83.476,14.306,5.64,-0.14, +83.182,-17.822,2.58,0.21, +84.147,54.429,5.73,1.63, +82.322,-62.314,6.59,1.53, +83.381,-1.156,5.34,-0.18, +84.066,47.715,6.11,0.26, +82.9,-45.925,5.86,1.35, +83.49,1.408,6.59,-0.17, +83.57,3.767,5.36,0.05, +83.516,-1.036,6.22,-0.17, +83.517,-1.471,5.93,1.55, +83.863,24.039,5.38,-0.09, +83.705,9.489,4.41,-0.16, +83.214,-38.513,5.48,1.22, +83.981,27.662,6.27,1.54, +83.785,9.934,3.54,-0.18, +83.785,9.935,5.61,0.04, +83.281,-35.14,5.78,1.07, +82.566,-63.928,6.19,0.22, +83.806,10.24,5.6,0.12, +84.218,40.182,6.09,1.03, +90.334,85.182,6.11,1.57, +83.754,-6.009,5.67,-0.23, +83.761,-6.002,4.78,-0.25, +83.467,-29.849,6.53,-0.02, +84.126,25.939,6.49,0.43, +83.841,-4.493,6.56,-0.13, +83.844,-4.425,6.24,-0.15, +83.847,-4.838,4.59,-0.19, +83.816,-5.387,6.73,0.02, +83.817,-5.385,7.96,0.24, +83.819,-5.39,5.13,0.02, +83.822,-5.388,6.7,0.09, +83.845,-5.416,5.08,-0.09, +83.88,-4.365,6.38,-0.14, +83.858,-5.91,2.77,-0.24, +83.899,-3.253,6.4,-0.12, +83.915,-4.856,5.26,0.24, +84.287,26.924,5.83,-0.07, +84.053,-1.202,1.7,-0.19, +84.44,33.559,6.33,1.31, +84.266,17.04,5.54,0.22, +84.062,-5.648,6.54,-0.18, +84.226,9.291,4.09,0.95, +84.268,11.035,5.94,1.58, +83.814,-33.08,5.78,1.12, +84.411,21.143,3,-0.19, +84.149,-6.065,5.72,-0.22, +83.435,-54.902,6.43,0.55, +84.33,8.952,6.12,-0.17, +84.659,30.493,5.4,0.45, +84.043,-28.708,6.26,0.13, +85.61,65.698,5.6,1.24, +83.248,-64.228,5.34,1.04, +84.364,-5.938,6.05,-0.22, +84.287,-11.776,6.11,0.05, +84.505,7.541,5.88,-0.07, +84.739,26.618,6.37,null, +83.406,-62.49,3.76,0.82, +84.473,-4.814,6.19,-0.04, +84.827,29.215,5.96,0.16, +85.335,53.481,6.23,0.84, +84.319,-27.871,6.16,0.34, +84.011,-47.314,6.11,1.16, +84.934,25.897,5.18,-0.15, +84.863,21.763,6.34,0.06, +83.76,-58.871,6.75,1.45, +84.687,-2.6,3.81,-0.24, +84.696,-2.594,6.65,-0.19, +84.658,-6.574,5.96,-0.23, +84.796,4.121,4.57,-0.11, +84.436,-28.689,5.31,0.46, +83.74,-61.176,6.32,0.85, +84.721,-7.213,4.8,0.13, +85.15,31.358,6.04,0.04, +85.175,31.921,6.11,2.12, +84.88,-3.565,6,0.27, +85.757,56.582,6.05,0.95, +84.878,-9.707,6.5,-0.1, +86.036,61.477,6.15,0.9, +84.818,-17.849,6.38,-0.12, +85.338,29.488,6.43,-0.11, +85.324,16.534,4.86,-0.13, +84.682,-40.707,5.82,-0.09, +85.19,-1.943,2.05,-0.21, +85.19,-1.943,4.21,null, +85.155,-2.825,6.22,-0.2, +85.478,23.326,6.59,-0.06, +85.211,-1.129,4.95,-0.21, +82.97,-76.341,5.19,1.13, +85.516,22.66,6.36,null, +85.273,0.338,5.93,0.3, +84.912,-34.074,2.64,-0.12, +85.192,-10.409,6.52,-0.16, +84.958,-32.629,5.45,0.92, +85.418,-2.896,6.42,0.3, +84.228,-66.56,6.31,-0.07, +85.831,23.204,6.21,-0.06, +85.423,-16.726,6.21,-0.13, +85.619,1.475,4.91,1.17, +83.686,-73.741,5.78,1.71, +85.56,-17.53,6.15,1.38, +85.363,-33.401,6.34,-0.04, +85.724,-6.796,6.02,0.4, +85.558,-22.374,5.87,0.11, +86.627,56.116,5.94,0.17, +85.789,-1.613,6.31,1.47, +86.475,49.826,5.47,0.03, +85.548,-30.536,6.19,0.01, +85.563,-34.668,5.29,-0.05, +86.456,40.507,6.58,0.25, +85.84,-18.557,5.73,-0.01, +87.27,62.808,6.13,null, +86.414,20.695,6.95,3.03, +86.258,4.008,6.09,0.31, +86.811,42.527,6.29,1.35, +86.118,-20.126,6.34,0.58, +85.876,-39.407,6.25,0.37, +86.11,-22.422,6.15,0.94, +86.116,-22.448,3.6,0.47, +85.921,-45.833,6.39,0.29, +86.69,15.823,6,-0.06, +86.512,-4.268,6.34,1.05, +86.717,9.522,5.79,0.88, +86.646,1.168,5.95,0.78, +86.805,14.488,5.72,0.04, +86.859,17.729,5.49,0.3, +83.901,-78.821,6.05,-0.02, +87.642,56.919,6.54,null, +86.929,13.9,5.29,-0.17, +88.231,68.471,6.2,0.95, +87.294,39.181,4.52,0.94, +86.5,-32.306,5.17,-0.28, +87.093,20.869,6.07,-0.08, +86.739,-14.822,3.55,0.1, +87.001,6.454,5.27,0.23, +86.782,-16.238,6.17,0.89, +86.861,-10.533,6.03,0.16, +87.254,24.568,4.86,1.01, +87.735,51.515,6.29,1.05, +86.939,-9.67,2.06,-0.17, +86.77,-28.639,6.22,-0.15, +88.073,58.964,6.14,-0.04, +87.145,-4.095,5.97,0.64, +86.614,-46.597,5.31,1.04, +86.828,-35.675,6.32,1.18, +87.387,12.651,4.91,-0.07, +87.76,37.306,4.74,1.62, +87.873,39.149,3.97,1.13, +87.742,27.968,5.56,0.97, +87.511,9.871,5.8,0.87, +86.193,-65.736,4.35,0.21, +87.62,14.306,5.52,1.01, +86.992,-40.652,6.61,1.12, +87.857,32.125,6.25,1.75, +87.555,4.423,5.97,1.36, +86.821,-51.066,3.85,0.17, +87.402,-14.484,5.49,0.88, +84.291,-80.469,5.65,0.6, +86.804,-54.361,6.18,1.4, +87.625,2.024,5.98,0.91, +88.165,39.574,6.45,0.09, +87.473,-22.972,5.87,0.06, +88.741,59.888,5.2,0.02, +88.167,33.918,5.98,1.6, +88.712,55.707,4.99,0.05, +88.098,19.868,6.06,0.54, +87.842,-7.518,5.35,-0.2, +87.392,-44.875,6.38,1.27, +88.093,14.172,5.59,-0.05, +88.332,27.612,4.58,-0.02, +87.83,-20.879,3.81,0.99, +87.869,-22.926,6.17,1.02, +88.11,1.855,4.78,1.38, +88.33,20.299,6.71,-0.07, +88.032,-9.041,5.97,0.1, +87.74,-35.768,3.12,1.16, +89.396,66.096,6.25,1.36, +87.457,-56.167,4.51,1.1, +87.998,-29.449,6.45,1.48, +87.619,-52.768,6.35,0.76, +89.06,51.804,6.49,null, +88.746,31.702,5.9,0.14, +88.595,20.276,4.41,0.59, +88.556,10.587,6.12,1.47, +87.722,-52.109,5.17,0.99, +88.634,11.763,6.59,0.03, +88.565,3.225,6.31,1.29, +88.736,19.75,5.92,-0.17, +88.138,-37.631,5.63,1.04, +89.27,49.029,6.47,0.99, +88.199,-38.526,6.7,1.08, +88.279,-33.801,4.87,-0.15, +88.684,0.968,6,1.34, +88.645,-4.064,6.57,-0.18, +82.558,-84.785,6.2,-0.02, +88.489,-19.638,6.69,0.1, +88.793,7.407,0.5,1.85, +86.95,-72.702,6.53,1.08, +88.955,20.175,5.4,0.99, +87.473,-66.901,5.11,-0.14, +88.682,-11.774,5.66,1.53, +89.141,28.942,6.32,0.3, +89.015,13.925,6.6,0.65, +88.559,-29.148,6.36,0.37, +88.345,-42.921,6.55,1.37, +88.876,-4.616,5.87,1.18, +88.898,-4.788,6.28,0.06, +88.085,-57.156,5.94,0.66, +87.846,-64.034,6.36,0.86, +89.234,24.25,6.02,0.39, +89.117,9.51,5.99,-0.07, +89.206,11.521,5.87,1.1, +89.882,54.285,3.72,1, +91.289,75.586,6.4,null, +89.94,55.321,6.44,0.31, +89.95,54.547,6.14,1.2, +89.841,49.924,5.89,1.23, +88.719,-39.958,5.57,1.51, +88.545,-50.362,6.52,0.9, +89.499,25.954,4.82,-0.06, +89.101,-14.168,3.71,0.33, +89.06,-22.84,5.96,1.11, +88.875,-37.121,4.97,1.11, +89.882,44.948,1.9,0.03, +88.671,-49.627,6.1,-0.13, +89.144,-23.216,6.36,1.07, +89.984,45.937,4.26,1.72, +89.087,-31.382,5.5,null, +89.476,1.224,6.22,1.48, +88.709,-52.635,5.29,0.31, +89.93,37.213,2.62,-0.08, +90.079,44.592,6.22,null, +89.549,-0.994,6.22,1.14, +89.204,-31.976,6.44,1.07, +89.722,12.809,5.7,0.89, +89.602,1.837,5.9,0.21, +90.244,47.902,5.73,-0.01, +88.525,-63.09,4.65,1.05, +89.707,0.553,5.22,0.01, +88.55,-64.482,6.63,0.38, +90.43,48.959,5.96,1.45, +89.384,-35.283,4.36,-0.18, +89.754,-9.382,6.12,0.29, +89.768,-9.558,5.03,0.19, +89.907,-1.444,6.63,-0.07, +90.293,31.035,5.98,0.08, +90.252,27.572,6.05,0.25, +90.703,49.906,6.05,-0.06, +90.014,-3.074,4.53,1.22, +89.31,-53.426,6.45,1.48, +90.723,43.379,6.42,null, +90.423,22.401,6.37,-0.07, +89.657,-44.034,5.81,1.07, +90.074,-12.9,6.22,0.36, +90.825,42.912,6.1,0.97, +89.787,-42.815,3.96,1.14, +91.285,59.393,6.34,1.1, +90.73,32.636,6.24,0.42, +91.121,51.573,6.45,0.18, +90.596,9.647,4.12,0.16, +87.57,-79.361,5.47,-0.08, +91.663,63.454,6.39,null, +90.571,1.694,6.59,-0.05, +90.46,-10.598,4.95,-0.12, +90.305,-25.418,6.05,0.02, +90.864,19.691,5.14,-0.11, +90.318,-33.912,5.55,1.58, +91.264,42.982,5.87,0.3, +90.853,11.681,6.08,-0.04, +91.03,23.263,4.16,0.82, +90.98,20.138,4.63,0.28, +90.641,-14.497,6.2,0.96, +91.261,37.964,6.34,null, +90.205,-51.216,5.67,0.2, +91.392,33.599,6.23,-0.08, +90.815,-26.284,5.04,1.34, +91.535,35.388,6.12,0.6, +91.056,-6.709,5.21,-0.06, +91.646,38.483,5.36,0.25, +91.243,5.42,5.67,1.04, +91.243,4.159,5.63,1.04, +91.594,29.513,6.08,1.73, +91.862,41.854,6.12,1.22, +91.246,-16.484,4.93,0.24, +91.085,-32.172,5.65,-0.19, +91.363,-10.243,5.87,0.37, +90.538,-60.097,6.45,1.58, +92.496,58.936,5.36,1.09, +92.096,41.056,6.36,1.05, +91.661,-4.194,5.38,-0.13, +91.539,-14.935,4.67,0.05, +91.44,-24.196,6.95,1.63, +91.118,-45.037,6.35,0.52, +91.168,-45.079,5.93,0.49, +91.893,14.768,4.42,-0.17, +91.363,-35.514,5.8,0.02, +91.716,-11.174,6.66,-0.15, +91.195,-48.459,6.58,0.72, +91.633,-23.111,5.47,0.08, +91.523,-29.759,5.81,0.05, +93.213,65.718,5.32,1.34, +91.74,-21.813,5.78,1.64, +92.197,8.67,6.55,-0.07, +91.923,-19.166,5.31,1.68, +92.385,22.19,5.93,1.63, +91.765,-34.312,5.83,-0.13, +91.671,-42.299,6.12,0.25, +92.942,52.647,6.3,0.14, +92.433,23.113,5.75,0.21, +92.241,2.499,5.73,0.07, +92.902,48.713,6.82,null, +92.903,48.711,6.09,0.1, +91.882,-37.253,5.02,-0.11, +91.758,-45.091,6.51,1.16, +92.401,-5.711,6.17,0.34, +92.241,-22.428,5.5,-0.01, +91.97,-42.154,5.5,0, +92.335,-18.126,6.35,-0.03, +92.393,-14.584,5.56,1.16, +92.758,18.129,6.33,1.35, +92.885,24.42,5.8,1.11, +92.45,-22.774,5.71,0.44, +92.144,-44.356,6.27,-0.15, +93.439,51.173,6.04,1.06, +93.084,32.693,5.78,1.66, +92.964,21.869,6.56,2.25, +92.866,13.639,6.04,0, +92.447,-26.701,6.27,1.01, +93.005,19.791,5.75,-0.07, +91.539,-66.04,5.71,-0.03, +92.755,-6.754,6.15,0.01, +91.764,-62.155,5.05,1.25, +93.08,22.908,6.39,2.24, +93.014,16.131,4.95,-0.14, +92.985,14.209,4.48,-0.18, +92.644,-27.154,5.72,1.07, +93.919,59.999,5.35,1.34, +92.932,-4.666,6.18,-0.08, +92.543,-40.354,5.58,1.68, +92.347,-49.563,6.49,0.52, +92.966,-6.55,5.05,-0.2, +92.806,-26.482,6.09,-0.04, +93.389,18.68,6.58,-0.08, +93.303,10.628,6.45,0.67, +94.712,69.32,4.8,0.03, +93.185,-2.504,6.62,0.05, +92.666,-45.282,6.31,-0.03, +92.575,-54.969,4.81,-0.23, +93.193,-17.763,6.52,-0.17, +93.619,17.906,5.88,0.22, +94.478,61.515,4.98,1.83, +93.719,22.507,3.28,1.6, +93.913,36.149,6.92,0.45, +93.476,-3.741,5.83,0.94, +93.845,29.498,4.35,1.02, +93.712,19.156,5.2,0.44, +92.184,-68.843,5.06,-0.08, +93.785,13.851,5.91,-0.23, +93.855,16.143,5.3,-0.14, +93.653,-4.568,5.83,-0.17, +93.438,-23.862,6.39,0.72, +93.389,-29.396,6.54,-0.1, +93.714,-6.275,3.98,1.32, +94.395,46.424,6.52,0.27, +93.938,12.551,5.33,-0.02, +94.079,23.97,6.08,0.9, +93.917,6.066,6.07,-0.13, +93.946,4.284,6.64,-0.17, +93.893,-0.512,5.65,0.5, +93.874,-4.915,5.99,0.09, +94.099,17.181,6.39,1.58, +93.975,1.169,6.37,0.46, +93.858,-9.035,6.1,-0.08, +94.906,59.011,4.48,0.01, +94.57,46.361,6.38,1.11, +94.245,23.741,6.25,0.45, +94.111,12.272,5.04,0.42, +93.785,-20.272,5.91,1.32, +93.823,-18.477,5.99,1.06, +93.937,-13.718,5.01,-0.08, +92.813,-65.589,5.01,1.62, +94.088,1.08,6.63,-0.05, +94.277,9.943,5.39,0.1, +94.243,7.053,6.57,-0.12, +94.032,-16.618,5.92,-0.17, +94.389,14.058,6.59,-0.03, +94.317,5.1,5.71,0.61, +93.988,-29.788,6.67,1.55, +94.523,14.383,6.16,0.01, +94.265,-22.715,6.07,0.56, +94.397,-10.725,6.75,0.35, +94.138,-35.141,4.37,1, +95.515,59.372,5.94,null, +94.758,17.325,6.32,-0.07, +94.669,9.047,6.24,0.87, +94.424,-16.816,5.14,1.3, +92.56,-74.753,5.09,0.72, +94.148,-39.264,6,0.16, +94.255,-37.738,5.53,1.14, +95.442,53.452,5.36,0.43, +94.29,-37.253,5.87,0.14, +94.557,-19.967,5.52,-0.18, +94.711,-9.39,5.36,1.24, +94.703,-15.025,6.06,1.66, +95.017,14.651,5.69,1.61, +94.783,-8.586,6.22,-0.04, +94.746,-20.926,5.81,-0.15, +95.3,29.541,6.43,0.06, +94.928,-7.823,5.27,-0.19, +94.077,-59.214,6.43,0.59, +94.998,-2.944,4.9,1.6, +95.218,11.756,6.54,-0.1, +95.358,17.764,6.35,null, +94.465,-52.733,6.41,1.46, +94.921,-34.397,5.78,-0.08, +95.357,2.269,6.31,0.24, +94.695,-50.359,7.04,0.83, +95.078,-30.063,3.02,-0.19, +93.775,-71.703,6.64,0.56, +95.353,-11.773,5.64,-0.02, +97.061,70.536,5.97,null, +95.74,22.514,2.88,1.64, +95.652,12.57,6,null, +95.151,-34.144,5.53,-0.19, +96.225,49.288,4.91,1.97, +95.025,-48.741,6.6,0.66, +96.608,56.285,5.64,0.24, +95.827,3.764,6.4,-0.15, +96.704,58.417,5.21,1.53, +95.675,-17.956,1.98,-0.23, +95.845,-4.687,6.67,0.06, +95.528,-33.436,3.85,0.88, +96.219,29.707,6.71,-0.06, +95.942,4.593,4.44,0.18, +95.944,4.596,6.72,0.45, +96.01,8.885,6.26,-0.08, +95.9,-9.874,6.19,1.84, +96.22,16.057,6.33,1.08, +95.942,-15.072,6.24,1.53, +96.387,23.327,6.06,-0.03, +96.043,-11.53,5.22,1.24, +95.948,-19.785,6.6,-0.15, +95.81,-31.79,6.34,0.89, +96.367,14.722,6.24,2.34, +96.085,-12.962,6.12,-0.08, +96.305,7.086,5.98,1.22, +95.983,-25.578,5.63,1.56, +96.327,1.501,6.66,-0.04, +96.318,-0.946,5.87,0.56, +96.963,47.405,6.56,-0.04, +96.444,2.272,6.51,-0.03, +96.004,-36.708,5.62,1.04, +96.446,-3.889,6.35,1.02, +96.183,-28.78,6.39,0.62, +96.898,32.563,6.43,1.26, +95.733,-56.37,5.61,0.24, +96.495,-7.894,6.4,0.14, +95.907,-52.181,5.98,1.04, +96.185,-40.284,6.31,-0.05, +96.665,-1.507,5.87,0.08, +96.644,-4.597,6.15,-0.14, +95.988,-52.696,-0.72,0.15, +96.745,0.841,6.71,0.04, +96.687,-7.511,6.27,-0.04, +96.375,-35.064,6.25,1.36, +96.986,20.496,6.22,0.01, +97.697,58.163,5.88,0.94, +97.142,30.493,5.55,0.68, +96.835,2.908,5.55,1.04, +96.808,0.299,5.2,1.18, +96.815,-0.276,5.55,1.38, +95.945,-58.544,6.48,0.12, +95.755,-63.683,6.27,1.6, +97.513,46.686,5.9,1.44, +97.236,26.968,6.47,null, +97.117,16.238,6.23,0.9, +96.201,-52.806,6.51,1.7, +97.078,10.304,6.15,1.15, +97.241,20.212,4.15,-0.13, +96.99,-4.762,5.06,-0.17, +96.057,-60.281,5.8,0, +100.07,79.599,6.54,null, +97.07,1.912,6.48,-0.07, +96.432,-48.177,5.76,-0.06, +96.797,-25.857,6.07,0.53, +101.126,82.115,6.65,0.17, +97.25,11.019,6.59,null, +95.659,-69.984,5.56,1.51, +96.781,-37.896,6.48,0.39, +96.11,-63.429,6.46,0.66, +97.312,2.646,6.16,1.54, +97.204,-7.033,4.6,-0.1, +97.206,-7.034,5.4,-0.07, +97.206,-7.034,5.6,null, +97.155,-17.466,5.77,1.12, +96.232,-63.828,6.27,-0.13, +97.042,-32.58,4.48,-0.17, +97.523,9.029,6.57,0.14, +100.12,77.996,5.73,1.47, +97.163,-32.371,5.74,-0.17, +99.479,73.696,6.24,0.38, +97.792,16.939,6.2,1.16, +97.547,-10.081,5.93,1.38, +97.176,-41.074,6.32,0.4, +96.767,-58.002,5.82,1.28, +97.79,11.251,6.14,-0.08, +97.906,15.903,6.4,null, +98.113,32.455,5.87,0.14, +97.645,-13.148,6.16,-0.15, +97.913,11.792,6.65,-0.12, +97.951,11.544,5.23,0.15, +98.637,55.353,6.45,null, +96.369,-69.69,5.38,0.97, +98.097,11.674,6.03,1.07, +97.846,-12.392,5.15,1.27, +97.693,-27.769,5.93,-0.15, +97.959,-8.158,5.43,1.38, +98.08,4.856,5.84,0.99, +98.428,33.024,6.42,0.03, +97.455,-50.239,5.27,0.41, +98.226,7.333,4.5,0, +98.096,-5.869,5.6,0.25, +97.964,-23.418,4.33,-0.24, +97.804,-35.259,5.84,0.81, +97.369,-56.853,5.22,1.09, +97.749,-40.916,6.2,1.4, +98.4,14.155,5.53,1.11, +98.195,-11.166,6.24,1.11, +97.896,-36.94,6.34,1.63, +99.423,61.481,5.94,0.89, +98.408,-1.22,5.1,-0.14, +100.134,71.749,5.92,1.19, +98.163,-32.031,5.69,-0.17, +98.8,28.022,5.27,-0.03, +98.089,-37.697,5.24,1, +97.826,-51.826,5.6,0.54, +101.559,79.565,5.45,0.5, +99.41,56.858,5.85,null, +98.361,-20.924,6.4,0.83, +98.693,7.573,6.45,-0.02, +99.137,38.445,5.29,2.61, +98.823,9.988,5.88,1.51, +98.293,-38.625,6.44,1, +97.513,-65.568,6.29,0.33, +98.816,0.89,5.8,0, +97.794,-61.88,6.15,-0.15, +98.456,-36.232,5.42,1.44, +97.993,-58.754,5.7,-0.06, +99,4.498,6.55,-0.06, +98.764,-22.965,4.54,-0.05, +98.647,-32.716,5.62,-0.08, +98.359,-52.329,6.19,1.09, +99.363,24.591,6.44,0.1, +99.147,-5.211,5.52,-0.08, +99.665,39.391,5.69,1.35, +99.705,39.902,5.2,-0.07, +99.428,16.399,1.93,0, +99.35,6.135,6.06,0.05, +99.095,-18.66,5.7,0.85, +98.85,-36.78,5.59,-0.14, +99.596,28.984,5.79,0, +99.404,10.853,6.38,null, +99.833,42.489,4.79,1.23, +99.195,-13.321,5.97,1.56, +99.171,-19.256,3.95,1.06, +99.418,2.704,6.17,1.08, +98.975,-36.089,6.35,0.48, +99.47,4.957,6.15,0.14, +99.17,-22.615,6.35,-0.11, +99.992,44.014,6.41,null, +98.744,-52.976,4.39,-0.02, +99.772,22.031,6.04,1.03, +99.42,-12.985,6.12,1, +99.888,28.263,6.03,-0.08, +99.881,24.6,6.38,0.53, +99.585,-2.544,6.14,1.48, +99.706,4.701,6.57,-0.07, +99.659,1.614,6.21,0.15, +99.473,-18.237,4.43,1.15, +99.258,-38.147,6.04,1.03, +99.214,-41.557,6.34,1.15, +99.308,-36.991,5.71,-0.12, +99.448,-32.34,5.27,1.18, +99.647,-16.874,6.03,0.03, +99.948,12.983,5.97,0.06, +99.82,-14.146,4.82,1.5, +99.44,-43.196,3.17,-0.11, +100.407,35.932,6.46,0.49, +100.338,28.196,6.42,1.09, +100.133,6.372,6.51,-0.14, +99.901,-23.696,6.05,-0.03, +100.245,9.896,4.66,-0.25, +100.341,16.398,6.28,-0.01, +100.322,11.003,6.11,1.68, +100.771,44.524,5.02,1.48, +99.928,-30.47,5.71,1.14, +100.273,0.495,5.79,-0.1, +99.657,-48.22,4.93,0.87, +101.048,53.296,6.27,1.08, +100.808,37.147,6.19,1.03, +99.987,-38.159,6.58,1.18, +100.601,17.645,5.21,0.06, +100.497,6.345,6.37,-0.05, +99.503,-61.533,6.18,0.62, +100.485,-9.167,5.19,1.53, +101.559,59.442,4.87,0.08, +101.053,36.11,6.31,0.06, +100.983,25.131,2.98,1.4, +100.777,3.033,6.19,1.37, +100.309,-40.35,6.12,-0.14, +100.205,-47.675,6.65,1.58, +101.706,57.169,5.35,0.96, +100.997,13.228,4.49,1.16, +100.911,3.932,5.9,-0.02, +101.19,28.971,5.44,1.45, +100.691,-22.449,6.13,0.34, +100.568,-38.399,6.29,0.34, +101.685,43.578,5.25,0.56, +101.322,12.896,3.36,0.43, +102.054,55.704,6.33,null, +102.051,55.704,6.28,0.47, +101.915,48.789,5.22,1.12, +100.847,-39.193,6.3,0.26, +101.476,12.694,6.46,null, +102.738,67.572,5.14,-0.17, +101.287,-16.716,-1.46,0, +101.118,-31.071,5.2,-0.12, +101.216,-27.341,6.45,0.54, +101.635,8.587,5.93,-0.17, +101.347,-23.462,6.05,1.2, +101.26,-30.586,6.54,-0.11, +101.497,-14.796,5.32,0.07, +101.848,18.193,6.2,0.07, +101.345,-31.794,5.92,0.48, +101.38,-30.949,5.8,-0.19, +101.663,-10.107,5.66,-0.05, +101.833,8.037,4.77,1.4, +101.713,-14.426,5.29,-0.04, +100.241,-71.776,6.51,1.11, +101.965,2.412,4.47,1.11, +101.514,-39.54,6.62,-0.13, +101.905,-8.998,5.07,1.8, +101.756,-21.016,6.08,-0.19, +101.55,-37.776,6.21,-0.13, +103.426,68.888,5.12,-0.13, +102.422,32.607,5.71,1.29, +101.359,-52.201,6.57,1.08, +102.079,-1.319,5.75,0.28, +101.474,-52.41,5.8,1.53, +102.691,41.781,5.02,1.27, +102.265,1.002,6.15,-0.13, +101.839,-37.93,5.26,-0.08, +102.458,16.203,5.85,-0.13, +103.271,59.449,5.33,0.65, +102.318,-2.272,5.74,-0.1, +102.241,-15.145,5.39,-0.1, +101.72,-51.266,5.4,1.34, +101.673,-54.695,6.46,0.86, +102.606,13.413,5.65,1.34, +101.828,-55.54,5.61,1.52, +105.017,76.978,4.55,1.36, +102.433,-24.076,6.33,0.04, +102.887,21.761,5.27,-0.02, +102.708,-0.541,5.77,0.39, +100.903,-73.118,6.37,0.96, +103.282,44.839,6.26,0.21, +103,23.602,5.65,1.45, +102.676,-8.041,6.29,0, +102.591,-17.084,5.79,1.44, +101.234,-70.434,6.11,1.33, +102.525,-27.334,7.04,-0.18, +102.46,-32.509,3.96,-0.23, +103.256,38.869,6.12,0.37, +103.197,33.961,3.6,0.1, +103.306,38.438,6.3,0.49, +103.264,35.789,6.01,1.45, +102.914,3.042,6.38,0.04, +102.654,-25.778,6.33,-0.18, +102.597,-31.706,5.7,0.14, +102.491,-45.45,6.55,1.51, +103.487,38.505,6.48,-0.05, +102.477,-46.615,5.14,0.45, +102.718,-34.367,4.99,1.38, +102.048,-61.941,3.27,0.21, +103.206,8.38,5.77,0.26, +103.095,-5.316,6.3,0.99, +102.484,-50.615,2.93,1.2, +102.464,-53.622,4.4,0.92, +103.344,10.996,6.24,0.97, +103.813,45.826,6.34,0.94, +103.811,43.91,6.13,0.32, +102.926,-36.23,5.96,0.18, +100.011,-80.814,5.64,0.2, +104.319,58.423,4.35,0.85, +104.305,57.563,6.05,1.49, +102.505,-60.249,6.11,0.46, +102.887,-48.292,6.42,1.21, +103.661,13.178,4.65,0.3, +103.328,-19.033,5.64,0.28, +103.34,-18.933,6.14,0.15, +103.25,-26.957,6.4,1.53, +104.135,46.274,5.87,-0.06, +103.828,25.376,5.73,0.57, +103.535,-5.852,6.41,0.17, +103.387,-20.224,4.83,-0.21, +103.603,-1.127,5.45,0.18, +104.233,46.705,5.86,1.08, +103.548,-12.039,4.07,1.43, +103.165,-42.504,6.52,0.42, +103.391,-28.54,6.04,0.71, +103.675,-1.756,6.21,0.56, +103.48,-24.539,6.21,0.01, +103.196,-43.976,6.46,-0.1, +103.533,-24.184,3.87,1.73, +105.34,70.808,5.68,1.33, +103.745,-2.804,6.04,1.1, +103.554,-23.928,6.91,-0.28, +103.894,8.325,6.29,0.04, +104.405,45.094,4.9,0.03, +104.252,33.681,5.89,0.88, +103.195,-54.09,6.57,1.08, +103.761,-20.405,5.74,0.08, +104.108,9.956,5.92,-0.08, +103.906,-20.136,4.68,0.37, +103.611,-42.366,6.32,2.24, +103.189,-59.341,6.41,0.18, +104.028,-14.044,5,1.18, +103.51,-50.612,6.26,0.99, +103.945,-22.941,5.3,-0.18, +104.034,-17.054,4.37,-0.07, +104.357,11.908,6.27,0.34, +103.978,-31.79,6.36,null, +104.25,-8.179,6.34,0.64, +104.762,38.052,6,1.23, +104.698,26.081,6.1,0.46, +102.863,-70.963,5.4,-0.11, +104.312,-22.203,6.61,-0.19, +104.19,-35.342,6.29,1.29, +104.866,25.914,6.4,-0.11, +104.663,7.622,6.27,0.11, +104.391,-24.631,5.46,0.36, +104.067,-48.721,4.95,1.69, +115.127,87.02,5.07,1.63, +104.738,3.602,5.97,1.06, +104.427,-27.537,6.23,-0.14, +104.323,-35.507,6.23,0.46, +104.834,7.317,6.35,-0.11, +104.532,-27.165,6.37,-0.19, +105.066,16.079,5.68,1.66, +104.65,-25.414,5.59,-0.16, +106.466,70.732,6.5,null, +104.656,-28.972,1.5,-0.21, +104.605,-34.112,5.06,-0.16, +105.322,32.414,6.59,0.27, +104.683,-30.998,6.42,-0.14, +105.075,-5.367,6.3,0.57, +104.914,-21.603,6.26,-0.15, +105.099,-8.407,5.96,-0.08, +105.034,-20.159,6.31,-0.15, +104.674,-45.768,6.22,0, +105.164,-9.203,6.49,0.21, +105.08,-22.119,6.53,-0.17, +105.423,4.818,6.63,0.06, +105.603,24.215,5.18,0.94, +105.606,17.756,5.94,1.63, +105.572,15.336,5.74,null, +105.479,5.558,6.59,-0.02, +104.665,-55.729,6.27,1.16, +105.64,16.674,5.82,1.68, +105.47,-1.346,6.17,1.28, +105.178,-28.489,6.27,0.45, +104.651,-56.395,6.45,0.39, +105.485,-5.722,5.2,1.68, +105.275,-25.215,5.63,-0.17, +105.208,-33.465,6.4,1.05, +106.505,59.802,6.44,null, +105.877,29.337,5.93,0.6, +106.416,52.758,6.12,0.11, +106.288,47.775,6.38,-0.04, +105.43,-27.935,3.47,1.73, +105.825,9.138,5.97,0.12, +105.728,-4.239,4.99,-0.2, +105.908,10.952,5.13,1.39, +106.027,20.57,3.79,0.79, +105.965,12.594,5.98,1.58, +105.215,-51.402,5.14,1.61, +105.756,-23.833,3.02,-0.08, +106.084,1.488,6.57,0.01, +106.022,-5.324,5.62,1.29, +105.989,-10.124,6.45,-0.08, +105.94,-15.633,4.12,-0.12, +105.565,-43.404,6.43,-0.04, +106.327,22.637,6.02,-0.03, +106.548,34.474,5.55,0.91, +105.271,-58.94,6.02,0.3, +104.96,-67.916,5.17,1.4, +106.413,9.186,5.78,1.52, +106.196,-22.032,6.09,1.22, +106.843,34.009,5.91,1.51, +106.012,-42.337,5.2,0.2, +105.989,-43.608,5.54,0.64, +105.995,-43.612,6.79,0.8, +106.854,28.177,6.48,-0.09, +106.457,-10.661,6.49,-0.05, +106.839,22.704,7.68,2.21, +105.974,-49.584,4.93,0.13, +107.055,33.832,6.28,1.34, +105.815,-59.178,5.5,-0.11, +107.151,37.445,6.16,1.21, +106.777,4.91,6.11,-0.13, +106.383,-34.778,6.14,0.37, +106.67,-11.294,5.39,0.05, +106.65,-12.394,6.48,-0.1, +106.503,-30.656,6.34,-0.16, +108.492,71.817,6.35,1.12, +106.956,7.471,5.75,1.18, +106.076,-56.75,5.17,-0.04, +107.092,15.931,5.44,1.03, +106.51,-38.383,6.11,0.7, +106.718,-24.961,6.08,1.34, +106.319,-50.36,6.46,null, +106.75,-26.658,6.62,-0.17, +104.143,-79.42,5.45,0.05, +106.844,-23.84,5.71,-0.1, +106.78,-40.893,5.79,-0.17, +107.528,21.247,6.43,0.89, +107.098,-26.393,1.84,0.68, +107.335,-10.347,6.21,0.03, +107.205,-24.044,6.65,-0.19, +107.914,39.321,4.9,1.45, +107.785,30.245,4.41,1.26, +106.805,-51.968,5.96,1, +107.388,-16.235,6.03,0.06, +107.846,26.857,5.78,0.1, +107.557,-4.237,4.92,1.03, +107.213,-39.656,4.83,-0.18, +108.348,51.429,5.47,1.67, +107.429,-25.231,5.69,-0.16, +107.539,-18.685,6.23,0.4, +108.11,24.128,5.85,0.36, +107.848,-0.302,5.45,0.29, +107.581,-27.491,5.46,1, +111.341,81.258,6.31,-0.04, +107.964,5.655,6.09,-0.02, +108.204,27.225,6.43,0.49, +106.559,-68.837,6.47,1.04, +108.031,5.475,6.16,1.14, +107.966,-0.493,4.15,-0.01, +108.979,59.638,5.2,1.07, +107.923,-20.883,5.84,-0.04, +108.343,16.159,5,1.66, +108.051,-25.942,5.92,-0.17, +107.698,-48.932,5.14,1.24, +108.017,-30.822,6.1,0.27, +108.959,47.24,5.58,0.58, +108.611,24.711,6.89,-0.03, +108.28,-11.251,5.78,1.51, +108.1,-27.474,6.59,0.19, +108.675,24.885,5.82,1.56, +108.107,-36.544,5.96,-0.14, +108.066,-40.499,5.31,0.06, +108.636,12.116,5.62,1.01, +108.583,3.111,5.35,1.19, +108.35,-22.673,6.01,1.48, +108.546,-3.901,5.75,1.58, +108.565,-9.947,5.9,1.52, +108.451,-22.906,6.36,-0.21, +108.401,-27.356,6.12,-0.23, +107.176,-70.497,5.69,0.4, +107.187,-70.499,3.78,1.04, +109.39,52.131,5.92,1.26, +108.988,27.898,5.71,1.63, +108.617,-10.317,6.03,-0.18, +108.14,-46.759,4.49,0.32, +108.446,-31.084,6.6,-0.17, +112.768,82.411,4.96,1.66, +108.488,-30.34,6.33,-0.2, +108.83,-0.161,6.41,0.9, +108.563,-26.353,4.66,-0.19, +108.306,-45.183,4.89,-0.02, +108.914,7.978,5.82,1.6, +108.385,-44.64,5.1,1.56, +108.703,-26.773,3.85,-0.17, +108.713,-27.038,5.58,1.22, +109.633,49.465,5.05,0.08, +108.93,-10.584,5.95,1.18, +109.509,40.883,5.78,0.17, +108.008,-63.19,6.02,-0.02, +108.948,-23.741,6.32,null, +108.838,-30.686,5.36,-0.17, +109.517,30.956,6.24,-0.03, +109.06,-15.586,5.46,0.08, +108.738,-41.426,5.94,-0.16, +109.324,6.681,6.65,-0.11, +108.691,-46.85,5.72,-0.11, +108.659,-48.272,4.76,-0.1, +109.523,16.54,3.58,0.11, +109.153,-23.316,4.79,1.71, +109.382,-6.68,6.29,1.62, +109.146,-27.881,4.64,1.6, +108.838,-52.5,5.97,1.1, +109.238,-30.897,6.32,0.2, +109.133,-38.319,5.8,-0.13, +109.206,-36.593,5.03,-0.17, +109.065,-46.774,5.66,1.44, +110.572,59.902,6.35,null, +109.286,-37.098,2.7,1.62, +109.45,-26.798,6.46,-0.15, +110.263,42.656,6.35,1.46, +110.323,45.228,5.77,0.32, +110.031,21.982,3.53,0.34, +109.843,2.741,5.89,1.07, +109.948,7.143,5.91,0.53, +110.029,15.143,6.45,-0.02, +109.668,-24.559,4.98,-0.15, +109.677,-24.954,4.4,-0.15, +110.712,55.284,6.53,null, +110.717,55.281,5.45,null, +109.758,-19.28,6.09,0.62, +109.713,-26.586,5.28,0.96, +109.577,-36.734,4.66,-0.1, +109.867,-16.395,5.7,0.35, +109.518,-43.987,5.85,-0.12, +109.659,-36.743,5.11,-0.16, +109.64,-39.21,5.25,0.01, +110.556,38.996,6.4,1.22, +110.511,36.761,5.13,1.08, +109.807,-33.727,6.3,1.31, +110.487,20.444,5.1,1.52, +110.242,-14.36,5.45,0.98, +113.665,80.897,6.41,null, +110.32,-8.878,6.55,0.54, +110.222,-22.852,6.61,-0.15, +110.229,-26.964,6.01,-0.17, +110.515,0.177,5.99,-0.07, +110.268,-25.891,5.87,1.64, +109.208,-67.957,3.98,0.79, +111.238,51.887,5.8,1.61, +111.035,40.672,5.19,1.23, +110.508,-8.979,6.43,-0.19, +110.577,-2.979,6.23,0.68, +110.869,25.051,5.03,0.9, +111.858,66.332,6.47,-0.09, +110.868,22.945,6.02,-0.01, +110.606,-5.983,5.82,0.35, +110.556,-19.017,4.96,-0.04, +110.089,-52.312,6.05,0.42, +110.09,-52.31,6.6,0.59, +110.161,-52.086,5.39,-0.07, +111.139,27.638,5.76,0.34, +111.115,15.517,6.41,-0.18, +111.678,49.211,4.64,-0.02, +110.753,-31.924,5.43,-0.15, +111.243,11.67,5.3,0.1, +111.432,27.798,3.79,1.03, +110.871,-27.834,5.38,1.53, +110.883,-32.202,5.39,-0.18, +110.976,-30.217,6.6,-0.2, +111.167,-16.201,5.33,-0.05, +111.072,-22.913,6.19,-0.09, +111.024,-29.303,2.45,-0.08, +111.412,9.276,4.99,1.01, +110.993,-35.838,6.31,-0.15, +112.72,68.466,5.64,1.11, +111.211,-19.012,6.24,0.29, +111.285,-13.752,5.78,0.42, +111.463,-5.775,5.97,0.92, +111.183,-31.809,5.35,1.07, +111.709,21.536,6.54,0.46, +111.616,10.608,6.37,0.09, +111.735,20.257,5.93,0.3, +111.515,-4.537,6.76,-0.01, +111.333,-21.983,6.05,0.23, +111.672,11.009,6.41,-0.13, +111.355,-25.218,5.78,-0.1, +111.197,-37.29,6.97,0.22, +111.197,-37.291,6.84,0.27, +112.215,48.184,5.72,-0.1, +111.788,8.289,2.9,-0.09, +111.935,21.445,5.22,0.39, +111.429,-31.739,6.31,-0.17, +101.745,-87.025,6.47,0.42, +112.483,49.673,5.36,0.45, +111.67,-23.712,6.56,0.01, +112.009,6.942,5.25,0.22, +112.278,31.784,4.18,0.32, +111.783,-17.864,5.63,0.32, +112.041,8.926,4.32,1.43, +111.748,-23.086,5.61,-0.13, +111.676,-34.141,5.9,-0.17, +112.335,28.118,5.05,0.11, +112.197,15.109,6.22,-0.05, +111.965,-11.557,5.79,0.58, +111.929,-22.86,5.95,-0.09, +112.453,27.916,5.01,1.11, +111.591,-51.018,5.1,1.06, +111.997,-29.156,5.54,-0.08, +112.449,12.007,4.54,1.28, +112.328,-1.905,5.59,1.5, +112.357,-7.551,5.86,0.48, +112.342,-10.327,5.75,1.62, +112.341,-14.999,6.05,0.47, +112.095,-37.81,6.58,0.06, +112.214,-31.848,6.38,-0.17, +112.215,-31.847,7.13,-0.15, +112.982,38.896,6.54,0.07, +112.27,-31.456,5.77,-0.19, +112.464,-23.024,4.85,0.23, +112.274,-38.812,5.43,-0.16, +112.713,-5.226,6.24,1.18, +112.952,17.086,5.42,1.13, +112.308,-43.301,3.25,1.51, +113.211,22.888,6.54,1.01, +113.025,1.914,5.25,0.22, +112.677,-30.962,4.65,0.93, +112.677,-37.34,6.65,0.63, +113.024,-8.881,5.9,0.54, +112.498,-52.651,5.87,1.01, +112.858,-36.153,6.68,-0.12, +113.402,15.827,5.25,0.05, +113.298,3.29,5.59,0.31, +112.214,-64.51,6.39,1.56, +112.928,-35.888,6.61,-0.08, +113.65,31.889,2.88,0.04, +113.65,31.888,1.98,0.03, +112.629,-54.399,5.96,1.56, +113.521,10.568,6.28,-0.01, +114.196,55.755,5.92,1.12, +113.093,-35.961,6.3,-0.1, +113.786,30.961,5.33,1.01, +113.342,-14.338,6.21,-0.04, +113.983,43.031,6.3,null, +113.331,-19.412,5.66,1.12, +113.29,-24.711,5.85,0.17, +113.566,3.371,5.81,-0.02, +113.45,-14.524,4.97,1.41, +114.132,46.18,5.65,1.56, +113.692,2.725,6.55,0.22, +113.98,26.896,4.06,1.54, +113.513,-22.296,4.45,0.51, +113.306,-40.059,6.26,-0.12, +113.305,-43.086,6.52,0.92, +113.578,-23.474,5.83,0.44, +113.58,-23.475,5.87,null, +113.463,-36.338,5.54,-0.06, +113.62,-26.117,6.65,-0.01, +113.553,-33.463,6.11,0.29, +114.475,48.774,5.92,0.22, +114.324,40.025,6.38,null, +113.645,-27.012,5.77,1.06, +113.494,-39.906,6.76,1.13, +114.145,5.862,5.91,0.6, +111.408,-79.094,5.53,1.28, +114.069,-8.311,6.27,1.54, +114.016,-14.493,5.7,-0.12, +113.845,-28.369,4.64,-0.11, +114.033,-22.161,6.34,0.99, +114.637,35.049,5.56,0.93, +113.665,-51.475,6.28,0.08, +114.56,24.36,6.27,null, +114.32,-4.111,5.13,0.44, +114.171,-19.702,5.74,-0.19, +115.206,57.083,6.06,1.46, +114.791,34.584,4.9,0.4, +114.8,24.222,6.17,0.01, +114.412,-14.441,6.53,-0.01, +114.32,-23.775,6.37,0.54, +113.915,-52.534,4.94,1.4, +115.061,38.344,5.73,1.63, +114.975,32.01,6.17,0.35, +114.342,-34.969,4.53,-0.09, +114.869,17.675,5.05,1.56, +115.302,48.132,5.56,1.01, +114.183,-48.83,5.72,-0.06, +114.007,-55.887,6.39,1.18, +114.437,-35.277,6.6,1.14, +114.825,5.225,0.38,0.42, +114.575,-25.365,4.7,-0.11, +114.438,-38.011,6.38,1.48, +115.752,58.71,4.99,0.08, +114.78,-18.679,6.72,-0.1, +114.705,-26.802,4.5,-0.17, +114.708,-26.804,4.62,null, +115.029,5.231,6.02,-0.04, +115.244,23.019,5.89,1.58, +114.601,-39.991,6.59,-0.05, +115.197,13.771,6.24,null, +114.683,-36.497,5.8,-0.16, +114.636,-38.781,6.19,1.02, +114.862,-26.863,6.5,-0.1, +114.576,-48.601,5.68,0.65, +115.148,-8.186,6.01,0.15, +115.097,-15.264,4.94,1.56, +115.057,-19.661,5.93,1.16, +114.864,-38.308,4.84,-0.19, +115.681,34,6.02,null, +114.933,-38.139,5.73,-0.12, +114.949,-38.261,5.76,-0.07, +115.466,13.481,5.77,1.67, +115.397,3.625,5.94,-0.04, +115.513,14.208,5.56,1.64, +114.992,-37.579,6,-0.04, +116.018,50.434,5.27,0, +115.312,-9.551,3.93,1.02, +114.752,-53.273,6.06,-0.11, +115.181,-27.946,6.76,-0.16, +115.828,28.884,4.28,1.12, +115.22,-31.661,6.56,1.18, +116.667,65.456,5.92,1.18, +115.348,-22.337,6.18,1.62, +116.614,62.831,6.49,0.26, +115.843,22.399,6.21,0.93, +113.84,-74.276,7.16,-0.02, +113.841,-74.276,7.26,null, +115.316,-38.534,5.42,-0.15, +115.773,0.189,6.19,1.02, +116.029,25.784,5.31,1.54, +115.341,-44.632,6.41,0, +116.112,24.398,3.57,0.93, +115.492,-38.529,6.54,-0.09, +116.058,12.859,6.43,null, +115.7,-26.351,5.64,0.99, +116.031,2.405,6.47,0.2, +116.329,28.026,1.14,1, +116.289,20.316,6.33,0, +115.913,-25.504,6.55,0.06, +115.885,-28.411,4.59,1.63, +115.8,-36.05,5.6,-0.13, +115.779,-38.864,6.89,1.02, +115.952,-28.955,3.96,0.18, +119.072,80.266,6.56,0.73, +115.738,-45.173,5.06,0.78, +116.664,37.518,5.18,1.58, +114.017,-77.634,6.18,1.73, +115.929,-38.202,6.4,-0.16, +115.925,-40.934,5.17,1.1, +116.531,18.51,4.88,1.45, +116.142,-24.674,5.62,-0.19, +115.779,-49.993,6.57,0.07, +115.543,-58.631,6.43,-0.1, +116.04,-36.063,5.8,0.31, +116.568,10.768,5.3,0.01, +116.37,-14.686,6.89,null, +116.371,-14.691,6.07,0.11, +116.143,-37.943,5.88,-0.11, +115.722,-58.23,6.21,1.05, +116.876,33.416,5.14,1.6, +116.509,-6.772,5.49,1.38, +116.487,-14.564,5.04,0.33, +116.269,-37.888,6.54,-0.1, +116.314,-37.969,3.61,1.73, +116.396,-34.173,5.37,0.6, +116.687,-12.675,6.39,-0.02, +116.325,-43.752,6.03,-0.07, +117.14,23.141,6.18,null, +116.543,-37.934,5.88,-0.11, +116.802,-22.52,5.9,-0.19, +115.455,-72.606,3.95,1.04, +116.639,-40.06,6.57,-0.13, +116.91,-15.991,6.34,1.78, +116.938,-16.014,6.43,1.7, +117.774,54.129,6.02,0.46, +116.986,-12.193,5.48,0.48, +117.258,13.371,6.04,1.38, +116.398,-56.723,6.12,0.39, +116.774,-39.331,6.31,-0.17, +117.245,4.333,6.53,0.78, +117.022,-25.937,4.5,-0.05, +116.854,-38.511,5.08,-0.1, +116.183,-66.072,6.38,0.95, +116.881,-46.609,5.23,-0.14, +116.054,-69.821,6.18,-0.06, +118.153,55.209,6.38,null, +117.76,33.234,6.03,0.15, +117.035,-40.652,6.14,1.58, +117.369,-13.353,6.23,-0.09, +117.257,-24.912,5.33,0.76, +117.422,-17.228,5.18,1.28, +117.324,-24.86,3.34,1.24, +117.085,-47.078,4.71,1.06, +117.544,-9.183,5.61,1.44, +117.438,-20.207,6.56,0.58, +117.311,-35.243,5.93,-0.05, +117.697,3.277,6.18,1.12, +117.524,-19.524,6.12,1.26, +117.398,-33.289,5.6,1.61, +117.986,19.325,5.99,1.13, +117.73,-11.129,6.16,1.13, +117.31,-46.373,4.11,-0.18, +117.08,-56.471,6.33,1.01, +117.367,-44.752,6.32,0.96, +117.304,-46.858,5.84,-0.14, +117.925,1.767,5.14,-0.12, +117.75,-24.528,6.45,-0.01, +118.03,3.277,6.31,1.59, +117.278,-56.411,5.59,1.13, +117.92,-12.819,6.36,0.39, +117.943,-13.898,5.17,0.6, +118.622,47.386,6.25,1.15, +118.678,47.565,5.45,1.46, +118.374,26.766,4.97,0.09, +117.929,-21.174,5.63,0.96, +117.677,-44.58,6.45,0.9, +117.304,-60.284,5.78,0.42, +117.6,-50.51,5.91,1.09, +118.2,-5.428,5.76,0.41, +118.079,-14.846,5.69,0.37, +117.835,-43.096,6.32,-0.17, +120.049,73.918,5.41,1.42, +117.478,-60.051,6.72,1.24, +119.112,56.504,6.72,null, +117.918,-42.888,6.04,-0.18, +118.065,-34.705,5.01,0.44, +118.054,-40.576,3.73,1.04, +117.421,-66.196,5.79,-0.04, +121.196,79.48,5.42,-0.06, +118.92,35.413,6.23,0.28, +118.161,-38.863,4.49,-0.19, +118.265,-36.364,5.43,1.16, +118.916,19.884,5.35,-0.04, +118.881,8.863,5.86,0.35, +118.124,-54.367,5.7,-0.15, +118.265,-49.613,4.63,-0.23, +118.326,-48.103,4.24,-0.14, +118.546,-35.877,5.49,-0.19, +118.666,-34.847,6.15,1.53, +119.1,4.486,6.17,0.98, +119.569,43.978,6.34,1.06, +119.248,15.79,5.78,1.28, +118.807,-30.917,6.44,null, +119.316,8.641,6.05,1, +119.318,1.127,6.35,0.5, +119.095,-30.285,6.33,1.66, +118.752,-52.583,6.38,-0.01, +118.944,-43.845,6.02,-0.11, +119.215,-22.88,4.2,0.72, +119.524,7.214,6.41,-0.04, +119.631,16.519,5.99,1.47, +118.722,-57.303,5.63,1.3, +120.336,59.048,5.77,0.39, +119.101,-40.736,6.78,-0.18, +124.224,84.058,6.49,0.03, +120.427,60.324,6.01,0.14, +119.586,2.225,5.29,0.92, +119.241,-42.406,6.09,1.36, +120.628,63.09,6.4,0.59, +119.417,-30.335,4.79,0.15, +119.241,-43.5,5.35,-0.18, +119.896,13.242,6.02,1.32, +119.327,-44.11,5.09,-0.17, +119.195,-52.982,3.47,-0.18, +119.333,-47.89,6.22,-0.1, +120.649,57.274,6.49,0.62, +119.078,-60.526,5.74,1.55, +119.466,-45.578,5.17,1.27, +119.934,-3.68,4.93,1.21, +119.774,-23.311,5.11,1.12, +120.233,25.393,5.83,1.02, +120.2,19.816,6.25,1.11, +119.211,-59.126,6.25,2.08, +120.253,23.583,6.34,null, +120.197,17.309,5.55,1.32, +119.56,-49.245,4.41,-0.17, +120.48,35.413,6.34,1.56, +119.967,-18.399,4.61,0.08, +120.433,25.09,6.31,0.01, +119.589,-51.449,6.44,0.25, +120.376,16.455,5.99,-0.02, +120.184,-2.882,6.51,-0.07, +120.308,4.88,5.65,0, +119.758,-45.216,5.99,-0.14, +119.445,-60.303,5.6,0.57, +119.302,-63.297,6.14,-0.1, +119.868,-39.297,5.24,0.39, +120.305,-1.392,4.68,1.49, +119.801,-49.977,6.32,null, +119.806,-49.974,6.34,null, +120.461,8.914,6.22,0.57, +120.566,2.334,4.39,1.25, +120.082,-45.457,6.61,1.27, +119.71,-60.824,5.81,-0.09, +120.062,-48.981,6.02,0.04, +120.88,27.794,4.94,1.12, +120.608,-6.337,6.33,0.62, +120.12,-48.871,6.12,-0.11, +119.918,-60.207,6.33,-0.06, +119.907,-60.587,5.17,1.74, +120.406,-37.284,5.95,0.14, +120.526,-37.051,6.34,1.62, +120.208,-54.151,5.87,-0.14, +120.345,-54.515,6.1,-0.04, +121.188,18.842,6.15,-0.05, +120.083,-63.567,4.82,-0.17, +120.767,-32.464,5.82,1.22, +120.381,-55.455,6.28,-0.15, +120.687,-41.31,5.52,-0.15, +121.269,13.118,5.12,0.01, +121.404,27.53,6.21,0.01, +120.896,-40.003,2.25,-0.26, +120.873,-42.949,6.29,1.01, +121.791,43.26,6.26,-0.02, +121.173,-19.728,6.13,-0.16, +121.577,22.636,5.99,1.66, +121.068,-32.675,5.31,1.91, +119.817,-73.245,6.34,0.14, +121.457,-0.574,6.41,1.05, +122.114,51.507,4.84,0.05, +121.615,-9.245,6.23,-0.07, +122.516,58.248,5.93,1.39, +121.941,21.582,5.3,0.63, +121.437,-33.569,6.14,1.11, +121.177,-50.591,5.95,1.21, +121.335,-46.979,6.19,-0.15, +121.267,-53.108,5.53,1.34, +122.346,42.431,6.27,1.27, +123.203,68.474,5.32,1.04, +121.825,-20.555,5.38,0.1, +122.177,13.641,6.27,0.43, +121.886,-24.304,2.81,0.43, +121.179,-62.836,6.3,-0.1, +121.668,-45.266,5.05,1.5, +122.148,-2.984,4.34,0.97, +122.237,-11.34,6.32,0.01, +122.181,-20.363,6.36,0.16, +122.613,25.507,5.73,0.81, +122.257,-19.245,4.4,-0.15, +122.84,38.731,6.58,0.59, +122.369,-16.249,5.68,-0.17, +122.157,-37.681,6.37,-0.04, +122.278,-30.322,6.65,1.4, +126.137,82.431,6.32,0.01, +122.745,14.629,6.23,0.02, +122.293,-35.455,6.2,0.89, +123.459,56.452,5.85,1.01, +122.819,9.821,6.07,-0.1, +122.666,-13.799,5.54,0.49, +122.29,-48.684,5.7,-0.12, +122.4,-44.123,5.21,-0.19, +122.449,-42.641,6.26,-0.04, +122.372,-47.346,4.27,-0.23, +122.383,-47.337,1.78,-0.22, +123.053,17.648,5.63,0.54, +123.053,17.648,6.02,0.54, +123.055,17.648,6.2,0.6, +122.818,-12.927,4.72,0.95, +122.888,-7.772,5.36,0.89, +122.43,-47.937,5.23,-0.21, +123.092,14.004,6.54,null, +123.287,29.657,5.64,-0.07, +124.884,75.757,5.54,0.9, +122.102,-63.801,6.28,-0.06, +122.39,-56.086,5.66,0.21, +122.757,-37.292,6.44,-0.01, +122.253,-61.302,4.76,0.43, +123.96,60.381,6.45,0.2, +123.249,16.514,6.01,0.89, +121.983,-68.617,4.35,-0.11, +123.424,23.138,6.56,0.11, +122.84,-39.619,4.45,1.62, +122.858,-42.987,4.75,0.18, +122.796,-48.462,5.82,-0.15, +123.546,17.676,6.47,0.3, +123.333,-15.788,4.99,1.07, +123.192,-29.911,6.52,0.06, +123.587,13.048,6.38,null, +123,-46.644,5.76,0.59, +123.215,-37.924,6.43,0.1, +123.129,-46.264,6.03,-0.11, +124.46,59.571,5.64,0.16, +125.168,72.407,5.98,1.54, +123.373,-35.9,4.78,-0.11, +123.421,-33.569,6.37,1.14, +123.546,-32.141,6.06,-0.16, +123.493,-36.323,5.08,-0.19, +123.495,-36.341,6.11,-0.18, +123.555,-35.491,5.78,1.02, +123.512,-40.348,4.44,1.17, +123.401,-46.992,5.13,-0.14, +124.822,62.507,5.71,0.89, +124.566,54.144,6.27,1.54, +123.392,-50.196,5.51,1.61, +124.141,11.726,7.13,1.56, +124.129,9.186,3.52,1.48, +123.6,-45.834,5.83,-0.2, +123.969,-30.926,6.21,0.78, +124.382,8.866,6.29,0.98, +123.995,-35.903,6.16,1.55, +125.109,57.743,5.89,0.39, +124.226,-21.32,6.6,0.02, +123.847,-50.449,6.44,1.49, +124.346,-16.285,6.16,0.01, +125.121,53.574,6.49,0.28, +124.6,-12.632,5.98,0.76, +123.816,-62.916,5.16,0.09, +124.493,-30.003,6.45,1.04, +125.016,27.218,5.14,0.47, +125.684,60.631,6.41,0.97, +125.088,20.748,5.83,1.13, +124.813,-10.166,6.32,0.33, +124.573,-35.452,5.58,1.24, +124.553,-37.374,6.7,0.23, +125.134,24.022,5.98,-0.03, +124.958,3.948,6.05,0.97, +124.639,-36.659,4.45,0.22, +125.055,-0.909,6.18,0.6, +125.071,-5.329,6.13,1.33, +124.872,-34.59,6.43,-0.08, +124.482,-59.167,6.42,0.39, +125.709,43.188,4.25,1.55, +125.114,-22.925,6.13,1.04, +125.952,53.22,5.51,0.11, +125.334,-1.602,6.5,0.02, +125.338,-20.079,5.58,0.77, +124.579,-65.613,5.07,1.15, +125.478,-17.586,5.75,1.05, +125.346,-33.054,4.83,1.45, +125.337,-36.484,5.2,-0.19, +125.841,18.332,5.95,0.17, +125.626,-6.179,6.15,0.22, +125.351,-39.621,6.16,0.17, +126.178,42.005,6.02,1.59, +125.725,-7.543,5.96,1.67, +125.695,-13.055,6.11,1, +125.98,10.632,6.08,1.49, +125.708,-26.348,5.9,0.37, +126.27,35.011,6.06,1.27, +125.3,-57.973,5.97,-0.09, +125.632,-48.49,4.82,-0.15, +126.152,-4.717,6.01,0.46, +125.822,-38.286,6.32,1.63, +126.146,-3.751,5.61,0.46, +125.282,-64.106,6.12,0.93, +126.458,17.046,6.14,0.41, +125.73,-52.124,5.85,0.01, +124.954,-71.515,5.37,-0.06, +125.003,-71.505,5.65,-0.1, +127.442,67.298,5.88,0.97, +126.615,27.894,5.57,1.4, +126.398,2.102,5.73,1.53, +126.478,7.564,5.13,0.94, +125.628,-59.51,1.86,1.28, +126.23,-23.154,5.68,0.06, +126.903,45.653,6.32,0.62, +126.695,26.934,6.32,0.18, +126.696,26.935,6.3,0.18, +126.666,24.534,7.02,0.32, +126.667,24.535,7.81,0.52, +126.415,-3.906,3.9,-0.02, +126.265,-24.046,5.28,1.48, +126.33,-21.046,6.01,0.4, +126.414,-17.439,6.44,null, +124.632,-76.92,4.07,0.39, +126.683,12.654,5.5,1.6, +126.482,-14.93,5.98,0.17, +126.613,-3.988,5.59,0.22, +126.238,-42.769,5.98,-0.17, +127.566,60.718,3.36,0.84, +126.675,-12.534,5.54,1.19, +126.822,-6.41,6.59,0.51, +126.466,-42.153,5.47,-0.15, +126.573,-39.059,6.53,-0.09, +126.576,-39.06,7.25,0.08, +127.153,24.145,6.1,0.24, +126.379,-51.728,5.17,-0.16, +126.712,-29.215,6.73,-0.05, +128.223,69.32,6.31,1.35, +127.155,14.211,5.95,0.19, +125.518,-73.4,5.29,0.01, +126.889,-20.844,6.56,0.04, +126.818,-31.673,6.33,0.9, +127.122,-2.517,6.39,0.33, +127.082,-8.816,6.43,1.2, +126.973,-26.132,6.62,0.11, +125.16,-77.484,4.35,1.16, +126.605,-52.807,6.05,0.06, +127.212,-9.748,6,0.42, +126.997,-35.114,5.75,-0.15, +127.15,-23.072,6.51,0.05, +127.222,-20.95,6.67,-0.06, +126.465,-64.601,5.97,0.96, +126.434,-66.137,3.77,1.13, +127.833,37.266,6.18,-0.03, +126.864,-55.012,6.53,-0.02, +126.902,-53.089,5.09,0.25, +128.14,53.115,6.24,1.01, +129.203,74.724,6.31,null, +127.365,-27.332,6.7,-0.13, +128.651,65.145,5.47,0.18, +127.877,24.081,5.75,0.28, +127.282,-44.161,5.79,-0.16, +127.899,18.094,5.35,1.56, +127.27,-47.929,5.33,-0.14, +127.365,-44.725,4.99,-0.16, +128.229,38.016,5.9,1.11, +127.978,9.814,6.83,-0.07, +127.619,-32.159,5.65,1.49, +127.44,-46.332,5.99,-0.15, +127.623,-36.721,6.69,1.95, +128.341,36.436,6.24,0.36, +128.177,20.441,5.33,1.25, +127.879,-19.577,5.42,-0.06, +127.401,-55.191,6.36,0.8, +128.25,24.085,6.36,1.02, +126.82,-70.093,5.53,-0.03, +127.663,-44.737,6.3,-0.02, +128.166,10.066,6.46,-0.02, +127.853,-39.064,6.31,-0.15, +128.139,-15.029,6.38,0.27, +127.795,-47.867,6.39,-0.15, +128.438,13.257,6.28,1.17, +128.683,36.419,5.78,0.04, +128.431,4.757,5.87,1.07, +129.928,73.63,6.15,1.02, +128.555,8.452,6.03,0.33, +128.27,-24.606,6.19,0.27, +127.873,-54.394,6.34,1.31, +128.507,-2.152,5.81,0, +128.215,-31.501,6.38,0.79, +128.244,-34.634,6.36,0.95, +128.02,-53.212,5.69,0.58, +128.831,19.59,6.58,0.68, +128.333,-38.371,6.49,-0.18, +128.41,-38.849,5.96,-0.14, +128.377,-46.971,6.24,1.56, +129.799,65.021,5.64,0.62, +128.854,2.744,6.33,1.02, +126.083,-80.914,5.69,1.02, +129.032,15.314,6.32,null, +128.963,6.62,5.99,0.52, +128.964,6.623,7.25,0.71, +128.632,-32.599,6.43,0.75, +128.868,-7.982,5.72,-0.03, +128.622,-37.611,6.3,1.56, +129.593,53.401,5.66,0.96, +129.793,59.939,6.48,null, +128.87,-26.844,5.96,0.37, +130.053,64.328,4.6,1.17, +128.803,-39.97,6.47,0.58, +129.75,52.925,6.42,null, +129.274,9.656,5.88,0.09, +128.682,-49.944,5.01,1.33, +129.823,52.712,5.91,1.17, +129.579,32.802,5.94,1.12, +129.414,5.704,4.16,0, +129.363,-4.934,6.19,1.05, +129.522,9.575,6.53,-0.02, +128.967,-50.97,5.8,-0.13, +128.832,-58.009,4.86,1, +128.814,-58.225,5.26,-0.14, +129.585,-6.663,6.51,0.44, +128.176,-73.357,6.12,0.95, +129.689,3.341,4.44,1.21, +129.374,-33.746,6.48,0.33, +129.468,-26.255,5.27,-0.04, +129.333,-40.147,6.55,0.6, +130.255,45.834,5.37,0.99, +130.076,31.942,6.1,null, +129.852,8.017,6.45,1.08, +129.668,-19.737,6.33,1.59, +129.411,-42.989,4.14,0.11, +130.027,20.008,6.39,0.98, +130.092,19.67,6.44,1.02, +130.112,19.545,6.3,0.17, +129.783,-22.662,5.05,0.73, +130.006,-12.475,4.98,1.42, +129.328,-62.854,5.47,1.02, +129.927,-29.561,4.89,0.9, +129.842,-36.607,6.13,0.42, +129.687,-53.091,6.47,-0.1, +130.751,46.901,6.22,0.96, +130.257,-9.052,6.63,-0.02, +130.026,-35.308,3.97,0.94, +130.08,-40.264,5.2,-0.01, +129.849,-53.44,5.48,-0.16, +130.43,-15.943,4.88,1.06, +129.99,-53.055,5.19,-0.14, +129.805,-60.317,6.36,0, +130.147,-45.191,5.71,1.65, +130.157,-46.649,3.84,0.71, +130.541,-11.966,6.45,0.16, +130.073,-52.922,3.62,-0.18, +130.072,-53.015,5.61,-0.14, +130.821,21.469,4.66,0.02, +130.801,12.681,5.64,0.39, +131.042,36.918,6.33,null, +130.305,-47.317,4.77,0.12, +130.272,-48.922,5.9,-0.21, +130.806,3.399,4.3,-0.2, +130.182,-57.545,6.34,0.2, +130.487,-45.411,5.23,0.21, +130.154,-59.761,4.33,-0.11, +130.999,4.335,6.37,-0.06, +130.918,-7.234,4.62,0.84, +129.772,-70.387,5.2,0.01, +131.171,18.154,3.94,1.08, +130.567,-48.099,5.51,-0.18, +130.737,-35.943,6.42,0.02, +131.339,30.698,6.13,0.94, +131.187,10.082,5.66,-0.11, +130.579,-53.1,5.52,-0.15, +130.606,-53.114,4.86,-0.17, +130.898,-33.186,3.68,-0.18, +131.255,5.681,6.13,0.2, +132.206,66.708,6.2,-0.11, +130.587,-55.774,6.29,1.18, +131.337,-2.601,6.41,0.52, +131.23,-21.168,6.11,0.22, +131.667,28.765,6.57,0.04, +131.674,28.76,4.02,1.01, +130.918,-49.823,5.16,-0.2, +131.1,-42.649,4.07,0.87, +131.51,-2.049,5.7,1.1, +131.216,-37.147,5.76,-0.15, +131.529,-11.006,6.25,1.61, +131.733,12.11,5.87,0.11, +131.694,6.419,3.38,0.68, +131.455,-25.387,6.1,0.08, +131.594,-13.548,4.32,0.9, +131.176,-54.708,1.96,0.04, +131.813,-1.897,5.29,0.04, +131.507,-46.042,3.91,0, +131.599,-41.126,6.21,-0.05, +131.272,-58.725,6.21,-0.09, +131.705,-34.623,6.37,-0.13, +130.976,-68.212,6.32,1.5, +132.108,5.838,4.36,-0.04, +132.02,-6.559,6.09,1.28, +131.628,-45.913,5.46,0.27, +131.125,-65.826,6.05,0.2, +131.829,-46.156,5.75,0.56, +131.919,-41.737,6.36,0.58, +131.677,-56.77,4.49,-0.17, +132.634,33.285,6.25,0.49, +132.34,-3.443,5.31,-0.09, +132.037,-42.464,6.43,-0.2, +130.331,-78.963,5.47,-0.1, +132.001,-52.851,6.3,-0.1, +132.688,18.832,6.16,-0.01, +133.344,61.962,5.73,0.28, +133.275,59.056,6.25,null, +132.437,-21.049,6.47,0.23, +132.987,43.727,5.15,0.98, +133.048,45.313,5.99,1.26, +132.756,15.351,6.38,0.64, +133.042,42.003,5.99,1.25, +132.465,-32.781,5.21,0.87, +132.509,-29.463,5.87,0.95, +132.413,-40.321,5.48,0.06, +132.59,-28.618,6.17,-0.08, +132.468,-39.142,6.39,0.23, +132.633,-27.71,4.01,1.27, +133.144,32.474,5.66,0.22, +132.449,-45.308,4.93,0.05, +133.119,28.259,6.23,1.62, +133.149,28.331,5.95,0.87, +132.894,-7.177,5.54,0.15, +130.802,-79.07,6.05,0.23, +132.588,-42.09,6,-0.1, +133.101,5.34,6.33,0.12, +132.64,-46.529,5.1,-0.21, +133.482,35.538,6.14,0.04, +133.128,-13.234,6.13,1.14, +132.866,-42.504,6.55,0.04, +134.156,64.604,5.58,0.86, +133.561,30.579,5.39,1.05, +133.109,-32.509,6.5,1.46, +133.161,-36.546,6.42,0.56, +133.2,-38.724,5.82,1.5, +132.903,-57.634,5.59,-0.11, +132.645,-66.793,5.35,0.42, +133.575,-5.434,6,0.67, +133.161,-48.359,5.91,-0.15, +133.915,27.928,5.22,1, +133.845,17.231,6.64,3.36, +133.17,-52.129,6.39,0, +131.48,-79.504,5.79,1.6, +132.46,-72.551,6.11,0.2, +134.208,45.632,5.74,1.09, +134.127,40.202,5.89,0.35, +133.848,5.946,3.11,1, +133.461,-40.447,6.47,0.96, +133.266,-56.649,6.03,-0.02, +133.982,11.626,5.41,1.46, +133.461,-47.521,5.33,0.26, +133.873,-7.97,6.91,null, +133.873,-7.971,6.67,0.22, +133.802,-18.241,5.75,1.32, +134.236,32.91,5.45,0.12, +133.881,-27.682,4.89,0.11, +134.154,4.237,6.14,1, +134.284,17.144,6.17,1, +133.983,-23.818,6.39,0.16, +133.453,-60.354,5.78,-0.08, +134.312,15.323,5.2,0.15, +133.83,-45.042,6.26,-0.16, +134.495,30.234,6.29,0.43, +134.142,-16.709,5.96,1.54, +134.397,15.581,5.67,0.2, +134.615,35.802,6.51,-0.01, +134.425,9.388,6.19,0.98, +133.725,-58.24,6.38,-0.11, +134.802,48.042,3.14,0.19, +133.8,-54.966,5.71,0.48, +133.762,-60.645,3.84,-0.1, +134.622,11.858,4.25,0.14, +134.534,1.542,6.59,0.06, +134.081,-52.724,4.69,-0.12, +134.886,32.419,5.2,0.93, +135.636,67.63,4.76,1.53, +134.795,18.135,6.38,1.55, +134.683,-16.133,5.86,0.53, +135.16,41.783,3.97,0.44, +135.128,37.604,6.44,null, +138.838,84.181,6.33,0.3, +134.243,-59.229,4.92,-0.19, +134.483,-48.573,5.87,1.07, +134.916,-19.208,6.18,0.46, +134.815,-28.806,6.25,1, +135.419,39.713,6.36,0.3, +135.35,32.252,5.82,0, +134.718,-47.235,5.18,0.25, +135.454,27.903,6.07,null, +135.381,5.641,6.07,1.11, +135.023,-41.254,4.45,0.65, +136.002,54.284,5.75,0.02, +135.093,-43.173,6.07,-0.16, +135.906,47.157,3.6,0, +135.685,24.453,5.45,-0.04, +135.492,-0.483,5.67,1.15, +135.298,-26.664,6.2,1.13, +134.85,-59.084,5.16,0.42, +135.687,7.298,5.85,1.11, +135.337,-41.864,5.55,-0.14, +136.041,27.898,6.38,0, +135.527,-39.402,6.27,1, +136.35,48.53,5.95,0.45, +135.19,-60.964,5.79,1.21, +135.436,-52.188,5.23,-0.12, +136.23,32.377,6.46,0.24, +135.787,-25.504,6.74,-0.03, +136.68,59.344,6.45,0.04, +137.098,66.873,5.14,1.51, +135.285,-68.684,5.88,1.63, +135.772,-53.55,6.4,-0.09, +136.633,38.452,4.56,1.04, +136.493,5.092,4.97,1.22, +136.039,-47.098,3.75,1.2, +135.612,-66.396,4,0.14, +137.597,67.135,4.8,0.49, +136.862,22.981,6.4,null, +136.75,1.463,6.17,1.65, +137.218,51.605,4.48,0.27, +137.017,32.541,6.5,0.36, +137,29.654,5.43,0.89, +136.2,-57.852,6.44,0.25, +136.937,10.668,5.24,-0.11, +137.73,63.514,4.67,0.35, +137.213,33.882,5.93,0.6, +137.197,26.629,5.98,0.66, +137.34,22.046,5.14,0.97, +137.012,-25.858,4.58,1.59, +136.642,-55.803,6.11,-0.15, +137.176,-8.589,5.6,-0.06, +136.811,-51.212,6.73,1.62, +136.532,-64.5,6.37,1.35, +138.513,71.656,6.55,0.96, +136.999,-43.432,2.21,1.66, +137.443,11.564,6.48,0.34, +137.298,-12.358,5.77,0.94, +137.181,-26.768,6.15,0.17, +137.268,-18.329,5.73,0, +137.661,30.963,5.95,1.67, +137.587,21.996,6.01,0.9, +137.398,-8.788,5.46,1.01, +136.41,-70.539,4.71,-0.15, +136.287,-72.603,4.48,0.61, +137.485,-30.365,5.59,0.19, +138.969,72.946,5.96,0.18, +137.596,-23.177,6.53,0, +137.438,-49.425,6.48,0.17, +138.586,61.423,5.13,0.58, +137.982,5.468,6.35,0.32, +138.073,14.996,6.51,0.73, +138.054,3.867,6.14,-0.01, +138.451,43.218,5.32,-0.14, +137.995,-19.748,5.73,0.98, +137.768,-44.868,5,0.23, +138.108,-7.11,6.11,0.22, +137.921,-39.259,6,-0.11, +138.405,21.283,6.48,0.02, +137.888,-46.584,5.79,-0.21, +137.742,-58.967,3.44,-0.19, +138.958,56.741,5.27,1.56, +138.128,-43.614,5.57,-0.11, +139.047,54.022,4.83,0.19, +137.819,-62.317,3.97,-0.18, +138.81,34.634,5.97,0.86, +138.591,2.314,3.88,-0.06, +139.983,74.016,6.5,null, +138.358,-38.616,6.31,0, +138.328,-42.274,6.29,1.25, +138.808,14.941,5.34,1.32, +138.394,-47.339,5.92,-0.05, +138.534,-44.146,5.85,-0.12, +138.232,-59.414,5.54,0.85, +138.602,-43.227,5.25,-0.14, +138.854,-15.025,6.35,0.02, +139.38,46.817,5.97,0.04, +138.738,-37.602,5.86,0.83, +134.171,-85.663,5.42,0.31, +138.575,-55.57,5.27,0.99, +138.811,-45.556,6.25,-0.08, +139.174,-6.353,5.24,1.17, +138.903,-38.57,4.94,1.11, +139.172,-8.745,5.47,-0.09, +138.938,-37.413,4.62,0.45, +138.3,-69.717,1.68,0, +139.608,35.364,5.75,null, +139.281,-14.574,5.84,1.06, +139.018,-44.899,6.04,0.28, +139.464,11.501,6.41,0.07, +139.711,36.802,3.82,0.06, +138.823,-58.389,6.02,-0.1, +139.096,-44.266,5.12,1.67, +138.896,-57.578,6.32,1.04, +139.238,-39.401,5.33,1.17, +138.051,-76.663,6.14,1.09, +139.051,-57.541,4.34,1.63, +140.183,51.266,6.13,0.42, +140.43,56.699,5.47,1.61, +139.273,-59.275,2.25,0.18, +139.426,-54.495,6.33,1.41, +140.247,38.188,6.12,0.38, +139.89,-11.314,6.62,0.08, +139.524,-51.051,5.26,-0.07, +139.888,-15.834,5.78,1.29, +140.264,34.393,3.13,1.55, +139.943,-11.975,4.79,0.93, +140.363,32.902,6.16,1.09, +139.676,-51.561,5.87,0.54, +140.121,-9.556,4.8,0.93, +139.95,-34.103,6.39,-0.1, +140.314,15.371,6.53,-0.01, +139.322,-68.689,5.39,0.42, +139.465,-67.051,6.11,1.26, +140.231,-15.618,6.33,0.46, +140.184,-31.761,6.82,0, +140.123,-37.581,6.05,1.39, +139.886,-55.187,6.28,-0.1, +140.373,-25.966,4.72,1.63, +141.965,75.098,6.29,0.07, +139.356,-74.894,5.29,0.02, +139.364,-74.735,5.86,-0.02, +141.434,63.941,6.28,1.46, +140.883,25.183,6.41,0.82, +140.712,-9.839,6.53,0.22, +141.232,51.574,6.31,0.75, +140.462,-42.195,5.58,1.63, +141.094,36.587,6.67,0.21, +140.237,-62.405,4.81,0.94, +140.653,-39.775,6.54,1.13, +140.6,-46.047,5.75,0.92, +141.164,26.182,4.46,1.23, +140.458,-55.515,5.63,0.19, +140.801,-28.834,4.69,0.92, +140.528,-55.011,2.5,-0.18, +140.937,-37.757,6.48,0.18, +141.385,16.586,6.29,0.97, +141.068,-39.426,6.06,0.2, +141.35,-5.117,5.59,1.52, +140.998,-51.737,6.08,0.57, +140.864,-60.302,6.3,1.48, +141.593,-1.464,6.01,1.32, +141.024,-61.649,5.99,1.06, +142.167,45.601,5.41,0.98, +141.811,-9.224,6.54,0.05, +141.687,-28.787,6.1,-0.1, +141.619,-40.502,6.2,0.25, +142.448,55.746,6.45,null, +141.897,-8.659,1.98,1.44, +141.827,-22.344,4.69,1.14, +141.945,-6.071,5.38,0.64, +144.272,81.326,4.29,1.48, +141.363,-61.95,5.77,0.15, +141.575,-53.379,5.11,-0.11, +142.115,9.057,5.41,0.6, +142.122,8.188,5.71,1.04, +141.91,-35.008,6.65,0.2, +142.882,63.062,3.67,0.33, +142.259,-1.257,6.27,0.27, +142.287,-2.769,4.6,0.46, +142.352,-2.205,6.14,0.22, +141.684,-64.93,6.05,0.15, +142.385,-4.247,6.26,0.84, +142.303,-20.749,5.66,1.6, +142.68,33.656,5.85,1.05, +142.311,-35.951,4.51,1.44, +142.318,-38.404,6.19,0.22, +142.458,-23.345,6.24,1.57, +143.723,72.206,5.72,0.48, +142.885,35.103,5.37,1.53, +142.477,-26.59,5.48,1.36, +143.62,69.83,4.56,0.77, +142.594,-15.577,5.85,1.2, +142.93,22.968,4.31,1.54, +144.028,74.318,6.46,-0.1, +143.214,51.677,3.17,0.46, +142.196,-62.273,5.92,1.1, +141.777,-71.602,5.47,1.08, +143.28,49.439,6.76,null, +142.99,9.716,5.07,1.37, +142.689,-31.891,7,0.09, +142.692,-31.889,6.18,0.03, +142.986,11.3,4.97,1.05, +142.128,-66.702,5.91,0.01, +142.522,-51.517,5.45,-0.1, +142.912,-10.552,6.14,0.24, +142.675,-40.467,3.6,0.36, +142.995,-1.185,4.57,0.1, +142.983,-10.371,6.13,1.19, +142.884,-31.872,5.93,0.26, +142.887,-35.715,5.87,1.29, +143.376,36.487,6.18,1.27, +143.326,28.368,6.53,0.12, +142.598,-58.362,5.88,1.7, +143.172,1.864,6.11,0.62, +141.038,-80.787,5.36,0.45, +143.085,-19.4,5.74,0.14, +143.582,46.902,6.52,0.22, +143.077,-28.628,6.46,0.33, +143.706,52.051,4.5,0.01, +143.556,36.398,4.55,0.92, +143.259,-8.505,6.12,0.98, +143.233,-13.517,5.94,1.5, +142.805,-57.034,3.13,1.55, +143.496,23.454,6.25,1.46, +143.334,-7.19,6.24,1.17, +144.484,73.081,6.42,null, +143.08,-40.649,5.35,0.9, +143.302,-21.116,5.01,1.02, +143.766,39.621,4.81,0.99, +143.359,-22.864,5.91,0.02, +143.843,39.963,6.76,0.35, +143.283,-39.129,6.43,0.33, +142.887,-66.719,6.27,1.35, +143.636,-5.915,5.56,1.16, +143.915,35.81,5.41,0.77, +143.061,-62.789,6.1,1.43, +143.435,-49.005,5.12,-0.12, +143.97,14.38,6.36,0.01, +143.537,-51.255,5.01,-0.18, +144.179,31.162,5.56,1.59, +142.901,-73.081,5.47,1.56, +143.89,-19.584,6.31,0.06, +143.799,-35.824,6.49,0.42, +144.866,67.272,5.94,1.52, +143.611,-59.229,4.08,0.01, +144.261,16.438,5.69,1.25, +144.303,6.836,5,1.05, +144.14,-24.703,6.53,0.38, +144.59,40.24,5.25,0.22, +144.251,-25.297,5.7,1.12, +144.105,-48.751,6.17,0.27, +144.465,-9.424,6.4,-0.04, +144.291,-32.179,5.63,1.02, +144.614,4.649,4.68,1.32, +144.368,-36.096,5.98,1.12, +144.207,-49.355,4.35,0.17, +144.193,-52.944,6.19,1.05, +145.562,69.238,5.69,1.14, +145.738,72.253,5.17,1.04, +144.301,-53.669,5.45,0.15, +144.021,-64.951,6.56,0.1, +144.506,-43.191,5.5,1, +146.378,78.135,6.23,1.35, +144.67,-39.614,6.7,0.49, +144.964,-1.143,3.91,1.32, +144.948,-10.57,6.31,-0.03, +146.825,79.137,6.17,0.25, +145.084,-10.769,6.37,0.08, +145.077,-14.332,5.06,-0.15, +145.397,31.278,5.89,1.6, +145.501,39.758,5.62,0.95, +145.288,9.892,3.52,0.49, +145.41,25.913,6.24,1.25, +145.68,48.431,6.39,-0.01, +145.779,54.364,6.47,0.13, +144.838,-61.328,4.52,-0.07, +145.678,35.093,6.14,0.36, +145.321,-23.592,4.77,-0.12, +146.153,64.984,6.17,null, +143.472,-80.941,5.11,-0.14, +145.889,29.974,5.64,0.12, +145.56,-23.916,4.94,0.53, +145.177,-57.984,5.32,0.2, +145.259,-57.26,5.8,1.09, +146.481,63.653,6.34,0.31, +145.933,14.022,5.35,1.63, +145.672,-35.502,6.41,-0.06, +145.449,-55.214,6,-0.13, +146.125,18.864,6.5,null, +146.632,57.128,5.2,1.62, +146.05,-27.769,4.79,0.51, +145.865,-51.228,6.15,-0.1, +146.463,23.774,2.98,0.8, +146.066,-39.571,6.82,0.3, +145.926,-53.892,5.56,-0.04, +146.542,6.709,5.79,1.64, +146.597,11.81,5.63,1.49, +146.341,-30.203,6.45,-0.13, +146.598,1.786,5.65,0.34, +146.858,11.568,6.45,0.43, +147.148,46.021,5.09,0.62, +146.89,11.429,6.02,1.3, +146.419,-57.186,6.46,-0.11, +146.312,-62.508,3.69,1.22, +147.599,65.593,6.31,0.28, +146.627,-44.755,5.55,-0.18, +146.481,-58.794,6.22,0.46, +147.748,59.039,3.8,0.29, +147.459,21.179,6.09,0.25, +146.775,-65.072,3.01,0.28, +146.778,-65.072,6.26,0.08, +147.367,-37.186,5.97,1.24, +147.625,4.344,6.24,0.48, +148.027,54.064,4.59,0.03, +147.167,-56.412,6.06,0.94, +147.758,13.066,6.46,1.58, +147.464,-36.269,6.37,1.01, +147.488,-45.733,5.08,-0.1, +147.808,-4.243,6.01,0.17, +147.971,24.395,5.32,0.23, +147.84,-6.182,6.42,0.58, +146.586,-76.776,5.45,0.89, +147.87,-14.847,4.12,0.92, +147.675,-46.934,5.73,1.08, +148.191,26.007,3.88,1.22, +148.051,2.454,6.02,-0.04, +148.05,0.076,6.35,0.94, +147.998,-16.535,6.08,1.04, +148.127,-8.105,5.05,0.04, +147.832,-46.194,5.62,1.17, +148.764,61.116,6.27,1.05, +147.92,-46.548,4.58,1.2, +147.8,-59.426,5.79,1.36, +147.732,-62.745,5.57,1.32, +148.429,5.958,5.95,1.66, +148.242,-27.332,6.3,0.62, +148.929,49.82,5.27,0.07, +149.595,72.879,5.83,1.14, +148.551,-25.932,4.88,1.23, +148.25,-55.373,6.48,-0.14, +148.632,-22.488,6.24,0.04, +149.307,57.418,5.93,0.89, +148.718,-19.009,4.94,1.57, +148.459,-51.147,5.93,-0.15, +148.573,-45.284,5.71,-0.11, +149.108,8.933,5.85,1.13, +148.714,-50.244,5.72,-0.01, +149.421,41.056,5.14,0.46, +149.487,45.414,6.3,1.11, +149.023,-40.825,6.41,1.61, +149.194,-26.55,6.28,0.22, +149.148,-33.419,5.84,1.2, +149.225,-27.475,6.32,0.17, +152.143,83.918,6.37,1.52, +149.091,-51.336,6.37,-0.17, +149.609,27.759,6.3,null, +149.556,12.445,5.26,-0.04, +149.532,8.314,6.04,1.36, +149.965,56.812,5.48,1.46, +149.216,-54.568,3.54,-0.08, +149.295,-52.639,6.12,-0.13, +149.901,29.645,5.73,1.06, +149.427,-48.414,6.05,-0.14, +149.04,-71.389,6.35,-0.08, +149.93,3.385,6.7,0.27, +149.775,-23.95,6.21,-0.1, +149.718,-35.891,5.23,0.31, +149.313,-64.489,6.58,1.13, +149.249,-69.102,6.2,-0.1, +150.053,8.044,4.7,1.6, +150.253,31.924,5.36,0.66, +150.704,21.949,5.66,-0.19, +150.143,-56.947,6.52,0.98, +151.151,53.892,5.74,0.48, +150.419,-53.364,6.2,-0.13, +150.705,-30.577,6.54,1.19, +150.492,-57.35,6.2,1.12, +151.294,52.371,6.14,null, +150.921,-9.574,6.12,1.66, +150.5,-60.421,5.94,0.26, +151.035,3.201,6.45,0.4, +150.923,-25.317,6.7,0, +151.012,-18.102,5.86,-0.06, +150.835,-46.636,6.12,0.02, +151.088,-24.286,5.7,0.3, +150.75,-60.179,6.19,0.17, +150.706,-62.156,6.42,1.72, +151.098,-39.976,6.43,1.3, +151.42,15.758,6.37,0.37, +151.281,-13.065,4.6,-0.09, +150.893,-61.884,6.14,-0.04, +151.313,-36.384,6.27,1.11, +151.698,5.611,6.21,0.94, +151.858,35.245,4.48,0.18, +151.833,16.763,3.52,-0.03, +151.547,-47.37,5.08,0.88, +151.79,-17.142,5.6,1.5, +151.53,-52.188,6.52,0.98, +152.066,31.604,6.24,0.45, +151.976,9.997,4.37,1.45, +151.985,-0.372,4.49,-0.04, +152.093,11.967,1.35,-0.11, +150.182,-82.215,5.52,0.03, +152.007,-37.334,6.36,0.98, +152.19,-10.885,6.53,0.02, +152.148,-15.612,6.27,-0.01, +152.745,40.661,6.32,1.25, +152.485,-12.096,6.24,0.18, +152.531,-8.408,5.91,0.02, +152.235,-51.811,4.86,-0.12, +152.525,-12.816,5.31,0.36, +152.383,-35.857,6.13,0.6, +152.803,37.402,5.85,1.29, +152.647,-12.354,3.61,1.01, +152.178,-65.815,5.28,0.98, +152.733,-8.418,5.65,1.3, +151.032,-81.566,6.6,0.92, +152.909,13.355,6.44,0.46, +152.341,-61.549,5.6,1.6, +152.824,-7.317,6.25,0.01, +152.658,-41.715,5.98,1.24, +152.377,-68.683,5.81,0.02, +153.012,-28.606,6.28,0.01, +153.201,4.615,5.77,1.18, +153.158,-19.154,6.44,0.5, +153.457,27.136,6.04,0.85, +152.897,-58.828,6.4,1.66, +153.782,59.986,6.25,1.6, +152.944,-58.061,5.72,-0.08, +153.096,-52.163,6.16,1.17, +153.331,-27.029,6.25,0.31, +153.624,21.168,6.02,0.56, +153.353,-33.032,6.38,0.59, +153.776,31.468,6.46,null, +153.441,-40.346,5.9,1.21, +154.505,73.073,6.4,0.23, +153.345,-51.233,5.28,0.25, +153.255,-59.918,6.1,-0.08, +153.486,-40.311,6.35,0.94, +153.367,-51.756,5.78,0.14, +154.461,71.061,6.66,0.32, +153.338,-61.659,6.41,-0.11, +153.684,-42.122,3.85,0.05, +154.06,29.311,5.35,0.01, +153.378,-66.373,5.16,0.21, +154.508,65.108,5.82,0.12, +154.117,28.683,6.49,0.6, +154.067,17.74,6.55,null, +153.837,-36.518,6.19,1.06, +154.135,23.503,5.97,0.67, +154.173,23.417,3.44,0.31, +154.175,25.371,5.84,1.2, +154.274,42.914,3.45,0.03, +154.038,-11.203,6.08,1.1, +154.17,13.728,5.41,1.61, +153.881,-43.113,5.6,1.52, +153.434,-70.038,3.32,-0.08, +153.819,-54.974,6.16,-0.17, +154.311,23.106,5.82,0.5, +154.19,-20.671,6.57,0.48, +154.543,27.415,6.52,-0.02, +154.408,-8.069,5.24,0.31, +154.013,-59.903,6.22,0.2, +154.746,46.761,6.43,null, +154.168,-51.205,6.3,1.54, +154.862,48.397,6,1.02, +155.264,68.748,5.96,0.2, +154.753,24.712,6.4,null, +154.532,-28.992,5.34,0.24, +154.271,-61.332,3.4,1.54, +155.062,53.779,6.45,0.54, +155.13,54.217,6,1.13, +154.658,-36.805,6.3,1.28, +154.934,19.471,4.79,0.45, +154.82,-12.528,6,0.26, +154.618,-41.668,5.96,-0.06, +154.993,19.842,2.61,1.15, +154.994,19.841,3.8,null, +154.884,-5.106,6.37,0.9, +154.998,-9.059,6.32,0.33, +154.657,-56.11,5.81,0.48, +157.423,84.252,5.5,null, +154.903,-55.029,4.57,1.62, +155.258,2.29,6.66,-0.08, +154.77,-64.676,5.67,0.05, +155.07,-47.699,5.65,1.67, +155.544,41.229,5.76,0.54, +155.283,-17.985,6.51,0.4, +155.582,41.499,3.05,1.59, +155.46,14.976,6.12,0.02, +155.37,-23.711,6.5,0.2, +156.033,65.566,4.97,-0.06, +155.4,-22.528,6.51,0.07, +155.228,-56.043,4.5,-0.12, +155.776,33.908,5.9,0.14, +155.554,-19.867,6.13,0.03, +155.752,6.542,6.07,1.12, +155.924,29.616,6.39,1.09, +155.811,5.694,6.54,0.46, +155.582,-41.65,4.83,1.12, +156.036,33.719,5.5,1.18, +155.86,-4.074,5.97,-0.1, +155.805,-30.162,6.27,0.31, +157.769,82.559,5.26,0.37, +156.055,2.368,6.32,1, +155.872,-38.01,5.33,0.25, +155.918,-41.953,6.27,0.88, +156.313,8.785,5.61,1.62, +155.742,-66.902,4.99,-0.13, +156.479,33.796,4.74,0.25, +155.962,-57.954,6.35,1.52, +156.435,-7.06,5.57,1.52, +156.322,-42.468,6.18,1, +156.523,-16.836,3.81,1.48, +156.248,-58.576,5.95,0.32, +156.867,41.601,6.02,0.17, +156.752,19.364,6.15,1.14, +157.016,48.785,6.44,0.6, +156.54,-42.739,6.13,1.13, +156.971,36.707,4.21,0.9, +156.913,9.763,6.04,-0.06, +156.099,-74.032,4,0.35, +157.152,45.212,6.35,1.32, +156.788,-31.068,4.25,1.45, +156.185,-73.972,6.19,0.07, +157.476,65.626,6.32,1.14, +156.704,-54.877,5.58,1.56, +157.611,64.257,6.12,0.16, +157.183,-3.742,6.05,0.05, +156.852,-57.639,4.66,0.51, +157.008,-49.406,6.1,1.51, +157.657,55.981,4.84,0.52, +157.527,38.925,5.77,0.08, +156.97,-58.739,3.82,0.31, +156.855,-65.705,6.01,0.09, +157.37,-2.739,5.21,-0.06, +157.371,-29.664,5.58,1.42, +157.397,-30.607,5.56,-0.04, +157.573,-0.637,5.09,-0.14, +157.219,-64.172,5.29,1.86, +159.007,80.494,6.52,0.95, +157.745,-7.637,6.2,1.38, +157.749,-13.588,5.58,-0.04, +157.964,32.379,5.9,0.11, +157.714,-26.484,6.51,0.54, +158.773,75.713,4.84,0.96, +158.049,14.137,5.46,1.68, +157.663,-61.356,6.43,1.76, +157.536,-66.985,6.19,0.01, +157.953,-28.237,6.05,0.51, +158.432,53.498,6.45,null, +158.308,40.426,4.75,0.23, +158.203,9.307,3.85,-0.14, +157.841,-53.716,4.89,0.5, +157.99,-45.067,5.74,-0.15, +157.986,-45.069,6.09,-0.11, +158.379,34.989,5.58,0.02, +157.584,-71.993,4.74,0.04, +158.14,-44.619,5.91,0.92, +158.006,-61.685,3.32,-0.09, +158.79,57.083,5.16,0.34, +157.758,-73.222,4.93,1.68, +158.237,-47.003,5.02,1.04, +158.198,-58.667,6,0.32, +158.504,-23.745,5.08,1.6, +158.7,6.954,5.08,0.94, +158.355,-58.19,6.14,0.35, +158.759,8.65,5.67,0.05, +158.74,-23.176,6.1,0.5, +159.089,36.327,6.28,0.39, +158.554,-60.988,6.23,1.4, +158.912,-18.569,6.49,0.2, +158.804,-39.563,5.38,2.88, +158.794,-43.665,6.08,0.94, +159.073,-10.583,6.57,0.29, +159.07,-16.344,6.03,1.65, +159.019,-26.675,6.29,0.48, +159.135,-12.23,5.7,0.52, +158.897,-57.558,4.45,1.62, +159.298,-11.749,6.52,0.29, +157.963,-81.921,7.07,-0.08, +159.307,-27.412,4.89,1.62, +159.388,-13.384,4.82,2.68, +159.085,-59.565,5.08,1.18, +159.774,53.668,5.52,1.27, +159.68,31.976,4.71,0.81, +159.325,-48.226,3.84,0.3, +159.782,37.91,5.85,0.57, +159.362,-58.733,5.45,0.5, +158.853,-76.309,6.3,1.2, +159.646,-16.877,4.91,0.92, +159.71,-12.444,6.04,0, +159.51,-57.256,5.91,-0.14, +158.867,-78.608,4.11,1.58, +159.71,-42.754,6.11,0.66, +160.451,68.443,5.75,1.3, +159.688,-59.183,4.66,1.48, +160.486,65.716,5.12,1.2, +159.748,-58.817,5.92,1.65, +159.827,-55.603,4.28,1.04, +160.767,69.076,5,1.38, +160.351,-1.742,6.26,0.88, +160.215,-35.742,6.37,0.92, +160.547,31.697,6.02,1.62, +160.047,-65.101,5.52,-0.16, +159.819,-74.494,6.07,1.71, +160.93,57.199,5.8,-0.02, +160.323,-59.677,6.42,0.08, +160.758,26.326,5.51,0.17, +160.63,-13.975,6.24,1.54, +160.887,46.204,5.18,0.33, +160.854,23.188,5.08,0.04, +160.837,4.748,5.79,1.17, +160.68,-32.716,5.64,0, +161.267,67.411,6,2.39, +160.558,-64.466,4.82,-0.14, +161.06,19.759,6.27,0.17, +160.669,-59.216,5.38,0.26, +160.739,-64.394,2.76,-0.22, +160.884,-60.567,4.57,1.71, +161.289,2.488,6.28,1.21, +161.594,57.366,6.34,1.56, +161.466,30.682,5.24,-0.06, +160.963,-64.249,5.77,0, +161.029,-63.961,4.82,-0.13, +160.464,-79.783,5.97,-0.07, +161.524,6.373,6.37,1.12, +161.602,18.891,5.49,1.12, +161.605,14.195,5.48,0.91, +161.265,-59.684,6.21,0.61, +161.081,-70.86,6.26,0.2, +161.134,-70.855,6.46,0.23, +161.11,-72.444,6.27,0.49, +161.717,-17.297,5.42,0.11, +162.208,65.132,6.39,-0.02, +161.693,-49.42,2.69,0.9, +161.57,-60.603,6.25,0.04, +161.908,-15.262,6.67,-0.01, +161.569,-64.515,5.34,-0.1, +161.624,-64.263,5.23,-0.07, +161.74,-56.757,5.23,-0.08, +161.713,-64.383,4.85,-0.15, +162.238,29.416,6.15,1.15, +162.169,-1.959,5.93,1.6, +162.059,-31.688,5.88,0.03, +161.911,-57.468,6.36,1.62, +162.314,10.545,5.34,0.03, +162.023,-59.919,6,0.27, +162.322,-4.024,6.61,0.22, +162.474,27.974,6.04,0.37, +161.315,-80.47,5.47,0.95, +162.406,-16.194,3.11,1.25, +162.431,-9.853,5.86,1.07, +161.445,-80.54,4.45,-0.19, +162.796,56.582,5.67,1.12, +162.849,59.32,5.58,1.14, +162.575,-8.898,5.79,0.16, +162.487,-34.058,5.61,0.04, +162.35,-59.324,5.91,0, +162.773,-3.093,5.95,1.48, +163.128,52.565,6.65,null, +163.133,52.504,6.44,1.11, +163.378,69.854,5.93,0.99, +163.057,1.025,6.38,0.08, +163.15,-0.201,6.31,1.5, +163.394,54.585,5.1,1.36, +163.328,34.215,3.83,1.04, +163.495,43.19,4.71,-0.05, +163.354,-2.255,6.12,0.9, +163.129,-57.241,5.25,0.16, +163.373,-20.139,5.24,0.47, +163.387,-15.446,6.38,1.16, +163.432,-2.129,5.45,0.96, +163.676,25.491,6.2,0.28, +163.574,-13.758,5.66,0.83, +163.743,34.035,5.72,1.01, +163.373,-58.853,3.78,0.95, +163.935,33.507,5.03,1.1, +163.903,24.75,4.5,0.01, +163.905,24.749,6.3,null, +163.798,-20.665,6.44,1.1, +163.425,-70.72,5.99,-0.02, +163.754,-42.251,6.11,-0.08, +164.06,42.008,6.03,1.13, +163.927,0.737,5.91,0.42, +163.623,-61.827,5.93,1.75, +164.006,6.185,5.81,1.45, +163.115,-79.559,6.33,1.46, +164.07,22.352,6.14,1.55, +164.143,25.5,6.35,1.03, +163.822,-60.517,5.92,1.08, +164.987,77.77,6.2,0.97, +164.18,-37.138,4.6,1.03, +164.283,-50.765,5.91,0.18, +164.825,51.882,6.17,1.38, +164.452,-59.732,6.11,1.1, +164.867,40.43,5.05,0.61, +164.887,36.093,6,1.59, +164.315,-75.1,6.13,1.53, +165.061,45.526,5.47,1.47, +164.921,11.706,6.55,0.43, +164.808,-33.737,5.71,0.37, +165.107,51.502,6.43,null, +164.879,-16.354,5.89,1.63, +165.086,42.911,6.02,0.57, +165.274,63.421,6.39,0.16, +164.944,-18.299,4.08,1.09, +165.21,39.212,5.08,0.24, +165.048,-14.083,5.88,1.5, +164.808,-61.32,6.16,-0.06, +165.14,3.618,4.84,1.16, +164.998,-43.807,5.81,-0.08, +165.039,-42.226,4.39,0.11, +165.187,6.101,4.99,0.16, +165.46,56.383,2.37,-0.02, +165.036,-51.818,6.15,0.18, +165.238,-15.793,6.34,1.18, +165.17,-31.839,6.07,0.52, +165.457,-2.485,4.74,1.62, +165.582,20.18,4.42,0.05, +165.932,61.751,1.79,1.07, +165.602,-26.831,6.23,0.31, +165.811,-0.752,6.14,0.26, +164.804,-81.556,6.71,0.55, +165.812,-11.304,5.5,0.94, +165.903,-0.001,5.95,1.22, +165.817,-31.961,6.46,1.62, +165.902,-13.434,6.34,0.88, +166.13,38.241,6,0.16, +166.254,7.336,4.63,0.33, +166.13,-47.679,5.67,0.24, +164.807,-84.594,6.19,0.11, +166.226,-35.805,5.43,0.03, +166.333,-27.294,4.94,0.36, +166.392,-11.089,6.09,0.3, +166.268,-49.392,6.13,-0.02, +166.49,-27.288,5.71,-0.06, +166.524,-51.213,6.3,0.95, +166.726,1.956,5.52,0.97, +166.661,-28.728,6.77,0.04, +166.614,-50.957,6.32,1.16, +166.915,23.324,6.46,0.16, +166.622,-58.675,6.02,1.24, +166.785,-32.587,6.59,0.34, +166.635,-62.424,4.61,1.03, +166.601,-64.84,6.41,0.12, +166.819,-42.639,5.15,0.03, +166.977,-30.175,6.54,0.6, +166.708,-70.878,5.57,-0.05, +167.416,67.21,6.06,0.22, +167.066,-29.973,6.49,0.03, +167.205,24.658,5.68,0.06, +167.33,36.309,5.74,1.51, +167.183,-28.081,5.44,0.07, +167.416,44.499,3.01,1.14, +167.41,43.208,5.89,1.57, +167.147,-58.975,3.91,1.23, +167.142,-61.947,5.13,0.22, +167.473,-32.367,5.81,0.04, +168.046,68.272,6.4,null, +167.932,14.4,6.3,0.21, +167.728,-58.455,6.88,-0.08, +167.915,-22.826,4.48,0.03, +168.185,54.894,6.63,null, +168.134,35.814,6.41,0.61, +168.062,-32.434,6.38,1.7, +168.127,-18.5,6.13,-0.01, +168.144,-21.749,6.4,1.38, +167.873,-71.436,6.35,1.37, +168.138,-49.101,5.36,0.18, +168.418,41.089,6.33,1.15, +168.15,-60.317,4.6,0.55, +168.237,-49.736,6.11,1.06, +168.311,-44.372,5.8,1.66, +168.188,-64.17,5.23,-0.06, +168.44,-0.07,5.42,-0.03, +168.527,20.524,2.56,0.12, +168.508,8.061,5.79,1.12, +168.56,15.429,3.34,-0.01, +168.414,-53.232,5.76,1.32, +168.378,-59.619,5.74,-0.1, +168.801,23.096,4.63,1.66, +169.017,52.773,6.5,0.43, +168.725,-43.734,6.21,1.61, +168.966,13.308,5.32,1.2, +168.991,12.845,6.67,0.27, +169.175,49.476,5.88,1.08, +169.165,-3.652,4.47,0.21, +169.243,-7.135,6.14,0.2, +169.115,-45.88,6.31,0.4, +169.323,2.011,5.18,1.52, +169.299,-38.014,6.27,0.1, +169.413,-34.737,6.45,0.4, +169.545,31.529,4.87,null, +169.546,31.529,4.41,0.59, +169.429,-36.534,6.68,0.98, +169.62,33.094,3.48,1.4, +169.588,11.985,6.66,0.07, +169.329,-67.824,6.06,1.76, +169.783,38.186,4.78,0.12, +169.729,1.651,5.91,1.04, +169.835,-14.779,3.56,1.12, +170.224,67.101,6.21,1.01, +169.819,-64.582,5.99,0.46, +169.643,-79.669,6.35,0.26, +170.284,6.029,4.05,-0.06, +169.901,-75.143,6.27,-0.03, +170.455,57.075,6.43,0.15, +170.016,-71.994,6.41,0.05, +170.252,-54.491,3.89,-0.15, +170.714,64.331,6.02,0.09, +170.707,43.483,4.99,0.99, +170.596,-44.646,6.12,0.92, +170.825,0.132,6.05,1.46, +170.841,-18.78,5.09,0.42, +170.803,-36.165,5,1.46, +170.488,-77.608,6.43,0.2, +170.784,-56.779,5.79,0.01, +170.981,10.529,3.94,0.41, +171.01,1.408,5.39,0.94, +170.841,-64.955,5.11,-0.08, +171.153,-10.859,4.83,1.56, +171.092,-42.669,6.12,-0.18, +171.245,11.43,5.8,1.38, +171.22,-17.684,4.08,0.21, +171.046,-72.257,5.59,0.06, +171.488,55.851,5.75,null, +171.402,16.456,5.57,0.36, +171.372,-36.063,5.22,0.99, +171.458,3.86,6.37,0.33, +171.388,-37.748,5.89,1.54, +171.606,33.451,6.32,0.43, +171.43,-63.973,5.17,0.5, +171.689,3.013,6.5,0.79, +171.647,-61.115,5.3,-0.08, +171.79,-12.357,5.94,0.49, +171.697,-53.16,5.81,0.52, +171.984,2.856,4.95,1, +171.974,-1.7,6.25,1.04, +171.994,-35.329,6.45,null, +172.269,61.778,5.83,0.36, +172.267,39.337,5.31,0.01, +172.146,-42.674,5.08,-0.03, +172.431,56.738,6.28,0.15, +172.076,-72.474,6.09,0.16, +172.425,15.413,5.74,1.32, +172.554,54.362,6.41,null, +172.411,-24.463,5.76,0.07, +172.96,81.127,6.15,0.24, +172.604,46.658,6.35,1.27, +172.63,43.173,5.94,0.49, +172.579,-3.004,4.77,1.54, +172.621,18.41,5.52,1.05, +172.851,69.331,3.84,1.62, +172.72,47.929,6.42,0.88, +172.793,48.789,6.56,0.93, +172.937,14.364,6.2,0.57, +172.813,-61.278,6.38,0.52, +173.087,61.083,5.48,0.5, +172.948,-20.777,6.24,0.54, +172.942,-59.442,5.13,1.08, +172.953,-59.516,5.15,0.49, +173.067,-29.263,5.81,0.53, +173.068,-29.261,5.64,0.53, +173.097,-26.747,6.16,1.66, +173.198,-7.827,5.95,1.38, +173.2,-40.436,5.64,1.58, +173.083,-66.962,5.9,1.13, +173.225,-31.087,5.04,1.58, +173.25,-31.858,3.54,0.94, +173.311,-16.281,6.05,0.6, +173.485,36.816,6.4,1.05, +173.405,-40.587,5.39,0.12, +173.542,11.024,6.55,0.18, +173.592,3.06,5.77,0.46, +173.677,16.797,5.95,-0.16, +173.77,54.785,5.63,1.02, +173.623,-32.831,5.98,0.81, +173.766,20.441,6.45,1.01, +173.69,-54.264,4.62,-0.08, +174.012,69.323,5.2,1.01, +173.737,-49.137,5.5,1.04, +173.805,-47.372,5.71,1.66, +173.931,10.911,6.56,0.13, +174.075,27.781,5.8,0.23, +173.982,-47.642,5.25,0.25, +173.945,-63.02,3.13,-0.04, +174.17,-9.802,4.7,-0.08, +174.146,-33.57,5.74,1.02, +174.17,-37.238,6.31,0.06, +174.237,-0.824,4.3,1, +174.093,-61.052,5.83,-0.09, +174.255,-32.988,6.29,0.46, +174.471,50.618,6.14,1.07, +174.253,-61.283,5.15,1.12, +174.391,-47.747,5.44,1.24, +174.586,43.626,5.59,0.33, +174.541,8.884,6.17,1.08, +174.315,-75.897,5.65,0.35, +174.64,46.834,6.1,0.38, +174.705,64.347,6.46,null, +174.634,33.626,6.27,1.32, +174.615,8.134,5.36,1.57, +174.6,-2.436,6.22,1.12, +174.452,-67.62,5.96,1.02, +174.687,45.109,6.44,0.56, +174.53,-61.826,5.15,-0.02, +174.667,-13.202,5.48,0.52, +174.752,-24.721,6.42,0.82, +174.963,-14.469,6.21,0, +174.96,-16.62,6.19,1.62, +174.873,-65.398,5.17,0.8, +175.114,57.971,6.37,-0.12, +175.053,-34.745,4.7,-0.07, +175.196,21.353,5.26,0.98, +175.263,34.202,5.33,0.72, +175.178,-53.969,5.96,1.66, +175.285,-29.196,6.44,0.66, +175.223,-62.09,4.94,1.15, +175.432,55.173,6.27,1.49, +175.393,31.746,5.73,0.43, +175.333,-43.096,5.55,null, +175.433,-32.5,5.22,1.48, +175.618,66.745,5.3,1.28, +175.522,22.211,6.59,null, +175.515,-20.294,6.22,0.95, +175.255,-83.1,6.33,1.08, +175.863,-37.19,5.98,1.46, +175.731,-79.306,6.39,0.9, +175.98,-6.677,6.07,0.96, +175.88,-62.489,5.03,0.8, +176.055,25.218,6.02,1.53, +175.97,-62.878,6.1,0.06, +176.191,-18.351,4.73,0.97, +176.321,8.258,4.85,0.18, +176.303,-49.07,6.26,1.17, +176.465,6.529,4.03,1.51, +176.513,47.779,3.71,1.18, +176.433,-45.69,5.29,-0.12, +176.402,-66.729,3.64,0.16, +176.732,55.628,5.27,1.27, +176.628,-61.178,4.11,0.9, +176.63,-40.501,4.91,0.66, +176.779,-35.907,6.17,0.96, +176.815,-30.287,6.48,0.68, +176.83,-57.696,5.41,1.67, +176.996,20.219,4.53,0.55, +176.979,8.246,5.32,0.02, +177.098,-10.313,6.26,0.58, +177.06,-66.815,4.72,1.54, +177.161,14.284,5.88,0.29, +177.188,-26.75,5.11,1.6, +177.255,-0.319,6.15,0.52, +177.265,14.572,2.14,0.09, +177.312,16.243,6.04,0.27, +177.424,34.932,5.7,0.46, +177.421,-63.788,4.32,-0.15, +177.486,-70.226,4.97,1.4, +177.581,-15.864,6.13,0.95, +177.674,1.765,3.61,0.55, +177.613,-62.649,5.7,0.26, +177.655,-27.278,6.48,0.98, +177.73,12.279,6.35,0.27, +177.759,-5.333,5.64,1.06, +177.789,33.375,6.27,0.32, +177.786,-45.174,4.46,1.3, +177.841,-12.188,6.35,0.4, +177.923,-30.835,5.85,0.56, +177.963,-65.206,4.9,-0.11, +178.245,37.719,6.45,0.75, +178.042,-56.988,5.57,0.07, +178.228,-33.908,4.28,-0.1, +178.362,-35.067,6.17,0.08, +178.457,53.695,2.44,0, +178.46,0.552,6.3,0.2, +178.548,-57.41,6.06,0.05, +178.608,-37.749,6.46,0.52, +178.677,-25.714,5.3,0.88, +178.763,8.444,5.58,0.94, +178.774,46.477,6.54,0.1, +178.797,46.47,7.03,0.01, +178.809,36.756,6.49,1.58, +178.749,-63.279,5.91,0.19, +178.919,15.647,5.53,0.11, +178.917,-28.477,5.93,1.5, +178.993,56.599,5.84,1.1, +179.004,-17.151,5.18,-0.02, +178.978,-39.689,6.13,1.02, +179.222,61.549,6.22,0.96, +179.183,-47.073,6.26,0.4, +179.265,-33.315,6.21,-0.04, +179.311,40.344,6.62,0.46, +179.417,-62.449,5.57,-0.15, +179.53,32.274,6.42,0.29, +179.586,61.465,6.76,null, +179.563,-56.317,5.44,-0.08, +179.585,-40.947,6.79,0.97, +179.699,-64.339,5.61,0.18, +179.727,-25.909,6.43,0.03, +179.764,0.531,6.17,1.26, +179.823,33.168,5.96,1.15, +179.795,-51.697,6.05,1.28, +179.905,-78.222,4.91,-0.06, +179.988,34.035,6.5,0.22, +179.987,3.655,5.37,0, +180.078,80.853,6.17,1.61, +180.185,-10.446,5.55,0.77, +180.177,-21.837,6.28,1.22, +180.218,6.614,4.66,0.13, +180.213,-19.659,5.26,-0.2, +180.258,-1.768,6.31,1.21, +180.371,-57.504,6.16,0, +180.415,36.042,5.59,1.01, +180.528,43.046,5.21,0.26, +180.584,-85.632,6.05,1.29, +180.619,-71.489,6.42,1.17, +180.657,-69.192,5.89,-0.08, +180.715,-7.684,6.22,1.49, +180.756,-63.313,4.33,0.27, +180.915,-42.434,5.15,0.41, +180.935,-74.214,6.44,1.23, +181.069,21.459,5.87,0.22, +181.08,-63.166,4.72,-0.08, +181.161,-68.329,5.35,-0.01, +181.194,-76.519,5.04,1.49, +181.117,85.587,6.27,0.59, +181.238,-60.969,5.96,1.67, +181.302,8.733,4.12,0.98, +181.313,76.906,5.8,1.01, +181.415,62.933,6.13,1.17, +181.472,-65.547,6.33,0.22, +181.486,-35.694,6.23,-0.08, +181.499,-3.132,6.37,1, +181.582,-68.651,6.23,1.24, +181.596,-65.709,6.06,0.65, +181.72,-64.614,4.15,0.34, +181.957,-75.367,5.18,1.3, +182.022,-50.661,4.47,-0.15, +182.02,-50.763,6.37,-0.05, +182.061,-48.693,5.34,-0.01, +182.09,-50.723,2.6,-0.12, +182.103,-60.847,6.22,1.74, +182.103,-24.729,4.02,0.32, +182.224,-44.326,5.75,0.24, +182.227,-41.231,5.48,-0.07, +182.422,1.898,5.95,1.12, +182.447,74.661,6.35,0.5, +182.51,-34.705,6.17,0.03, +182.514,5.807,5.72,0.35, +182.531,-22.62,3,1.33, +182.641,-37.87,6.06,0.2, +182.632,16.809,6.39,0.06, +182.692,27.281,6.01,0.11, +182.77,-61.277,6.08,0.39, +182.766,-23.603,5.46,0.06, +182.762,-45.423,6.61,1.08, +182.881,-51.359,6.23,0.82, +182.913,-52.369,3.96,-0.15, +182.75,81.71,6,1.62, +182.963,25.87,5.66,1.41, +182.937,57.054,6.43,null, +183.005,28.536,6.49,0.36, +183.039,20.542,5.57,0.95, +183.092,-62.951,5.92,0.29, +183.195,-70.152,6.17,0.84, +183.05,77.616,5.14,0.33, +183.304,-34.126,6.5,1.66, +183.355,-38.929,5.76,-0.13, +183.482,-78.574,6.35,1.24, +183.358,10.262,5.85,0.27, +183.403,-33.793,6.33,0.08, +183.511,-45.724,5.31,1.43, +183.57,-64.409,6.22,0.12, +183.681,53.435,6.16,1.04, +183.748,-20.844,5.83,1.05, +183.786,-58.749,2.8,-0.23, +183.794,-10.312,6.11,0.46, +183.877,-41.913,6.26,1.01, +183.785,70.2,5.71,1.19, +183.857,57.033,3.31,0.08, +183.946,-23.354,6.54,0.45, +183.952,-17.542,2.59,-0.11, +184.001,14.899,5.1,0.06, +184.098,-72.615,6.22,-0.01, +183.922,72.551,6.29,1.14, +184.032,40.66,5.66,1.55, +184.085,23.945,4.95,0.97, +184.125,33.061,5,1.14, +184.275,-65.693,6.06,0.03, +184.264,-16.694,6.05,0.1, +184.392,-67.961,4.11,1.58, +184.373,53.191,5.81,1.3, +184.377,28.937,5.7,0.16, +184.586,-79.312,4.26,-0.12, +184.447,-36.094,6.15,0.01, +184.435,15.144,6.34,1.37, +184.538,-3.954,6.99,0.36, +184.54,-3.949,6.54,0.33, +184.609,-64.003,4.04,-0.17, +184.632,30.249,6.23,0.3, +184.668,-0.787,5.9,0.17, +184.749,-55.143,5,1.59, +184.214,86.436,6.33,0.43, +184.759,26.008,6.48,0.18, +184.83,23.035,6.27,0.17, +183.835,87.7,6.28,0.35, +184.708,75.161,5.38,-0.02, +184.873,28.157,6.33,0.5, +184.977,-0.667,3.89,0.02, +184.953,48.984,5.29,1.66, +185.045,-22.176,5.97,0.82, +185.117,-65.843,6.21,-0.04, +185.082,26.619,5.54,1.09, +185.074,26.002,6.15,0.3, +185.088,3.313,4.96,1.16, +185.14,-22.216,5.21,-0.1, +185.179,17.793,4.74,1.01, +185.172,27.055,7.13,0.36, +185.232,-13.566,5.14,1.05, +185.34,-60.401,3.59,1.42, +185.212,57.864,5.55,1.43, +185.49,-56.375,5.92,1.57, +185.53,-67.522,5.15,0.19, +185.55,-68.307,5.74,1.04, +185.545,24.774,6.19,-0.01, +185.705,-57.676,5.39,-0.1, +185.626,25.846,4.81,0.49, +185.633,5.306,6.4,0.6, +186.406,-86.151,6.33,1.08, +185.807,-67.632,6.36,0.89, +185.84,-24.841,5.68,1.16, +185.897,-35.413,5.32,-0.08, +185.904,-39.303,6.4,0.29, +185.937,-38.911,5.79,-0.08, +185.946,42.543,6.06,0.33, +186.006,51.562,4.8,0.87, +186.077,26.099,5.18,0.08, +186.186,-41.384,6.25,1.18, +186.111,25.583,6.42,0.27, +186.322,-65.771,6.3,0.96, +186.285,-42.514,6.11,0.65, +186.299,-11.61,5.95,0.03, +186.327,-27.749,6.09,1.27, +186.341,-35.186,5.73,-0.06, +186.313,23.926,6.03,1.1, +186.263,56.777,5.81,1.62, +186.277,63.803,6.32,0.91, +186.462,39.019,5.02,0.96, +186.629,-63.122,4.86,-0.12, +186.65,-63.099,1.33,-0.24, +186.652,-63.099,1.73,-0.26, +186.632,-51.451,4.82,-0.14, +186.6,27.268,4.95,0.27, +186.701,-48.913,6.26,0.68, +186.715,-32.83,5.55,0.01, +186.853,-63.789,6,0.07, +186.735,28.268,4.36,1.13, +186.747,26.826,5,0.08, +186.87,-58.992,5.5,1.45, +186.601,71.93,6.24,1.06, +186.925,8.61,6.37,0.93, +186.956,-16.632,6.35,0.84, +187.01,-50.231,3.91,-0.19, +187.079,-64.341,6.04,0.02, +186.896,55.713,5.7,1.55, +186.965,-4.615,6.22,0.44, +187.106,-61.795,6.22,1.26, +187.094,-39.041,5.44,-0.08, +187.139,-56.408,6.15,0.92, +187.159,26.227,6.54,0.17, +187.186,25.899,6.65,0.22, +187.228,25.913,5.29,-0.05, +187.362,24.109,5.48,0.43, +187.475,-56.525,5.8,1.56, +187.491,-41.736,6.02,1.52, +187.43,20.896,5.69,0.07, +187.466,-16.516,2.95,-0.05, +187.52,-13.393,6.35,0.56, +187.573,-23.697,5.63,1.67, +187.489,58.406,5.35,0.2, +187.512,51.536,6.21,0.51, +187.518,58.768,6.08,0.98, +187.791,-57.113,1.63,1.59, +187.82,-57.081,6.42,0.16, +187.528,69.201,4.95,1.62, +187.753,24.567,5.46,0.05, +187.709,53.077,6.21,0.54, +187.918,-59.424,5.48,0.63, +188.042,-73.002,5.88,1.11, +187.839,7.604,6.05,1.52, +187.983,-63.506,5.95,0.27, +187.911,-5.052,6.19,1.04, +188.117,-72.133,3.87,-0.15, +188.019,-32.534,6.46,0.2, +188.017,-16.196,4.31,0.38, +188.15,-13.859,5.74,0.4, +188.262,10.296,6.26,0.95, +188.343,-19.792,6.26,0.29, +188.393,-12.83,5.58,0.86, +188.392,24.283,6.29,0.11, +188.445,-9.452,5.48,-0.03, +188.497,-49.909,6.38,0.46, +188.412,33.248,5.42,1, +188.448,33.385,6.24,1.05, +188.435,41.358,4.26,0.59, +188.597,-23.397,2.65,0.89, +188.371,69.788,3.87,-0.13, +188.676,-44.673,5.77,0.7, +188.713,22.629,4.81,0, +188.871,-61.842,6.22,0.73, +188.776,18.377,6.56,0.25, +188.783,18.377,5.02,1.15, +188.784,21.881,5.85,1.22, +188.94,-41.022,5.13,0.22, +188.683,70.022,4.94,1.31, +189.005,-39.87,5.8,0.01, +188.994,-20.527,6.2,0.33, +189.296,-69.136,2.69,-0.2, +189.198,-5.832,5.87,0.07, +189.097,59.487,5.5,null, +189.243,17.089,5.68,1.41, +189.426,-48.541,3.86,0.05, +189.426,-27.139,5.45,0.32, +189.81,-75.369,6.49,0.08, +189.518,3.282,6.33,0.01, +189.719,-67.193,6.25,0.06, +189.593,1.855,5.71,1.6, +189.625,6.988,7.08,1.44, +189.686,-18.25,6,0.29, +189.765,-30.422,5.89,1.21, +189.693,40.874,6.37,0.18, +189.759,22.659,6.38,1.1, +189.812,-7.996,4.66,1.23, +189.982,-66.512,6.26,-0.05, +189.78,21.063,5.46,0.96, +189.82,35.952,6.45,0.06, +189.969,-39.988,4.64,-0.08, +190.346,-46.146,5.84,1.52, +190.379,-48.96,2.17,-0.01, +190.521,-69.407,6.33,0.78, +190.317,-13.014,6.08,null, +190.318,-13.015,5.98,0.42, +190.486,-59.686,4.93,-0.04, +190.393,10.426,6.19,0.19, +190.415,-1.449,3.65,0.36, +190.415,-1.449,3.68,null, +190.455,-19.759,6.03,0.39, +190.471,10.236,4.88,0.09, +190.488,6.807,5.59,0, +190.71,-63.059,5.31,0.27, +190.647,-48.813,4.66,1.09, +190.707,-55.947,6.08,-0.03, +190.391,62.713,6.07,0.01, +190.788,-56.176,6,-0.08, +190.868,-58.903,6.4,1.09, +190.86,-40.178,6.44,0.25, +190.909,-1.577,5.93,0.86, +190.995,-36.349,6.39,-0.06, +191.002,-28.324,5.48,1.34, +190.767,61.156,6.38,1.26, +191.257,-68.831,6.16,0.69, +191.408,-60.981,4.69,1.05, +191.113,44.103,6.33,0.43, +191.57,-68.108,3.05,-0.18, +191.248,39.279,5.95,0.55, +191.283,45.44,4.99,2.54, +191.405,7.673,5.22,0.33, +191.595,-56.489,4.65,-0.16, +191.594,9.54,5.67,0.99, +191.692,-33.316,5.86,1.34, +191.661,16.578,5.12,1.35, +191.108,80.621,6.4,0.12, +191.93,-59.689,1.25,-0.23, +191.76,5.951,6.34,-0.05, +191.807,11.958,6.07,0.12, +191.889,-6.302,6.26,0.55, +191.974,-24.852,6.44,-0.06, +191.964,3.573,6.41,1.6, +191.829,62.781,5.89,null, +192.11,-27.597,5.66,0.95, +192.06,13.553,6.56,0.01, +192.437,-71.986,5.55,1.17, +191.893,66.79,5.43,1.56, +192.196,24.84,6.31,0.7, +192.226,14.123,5.7,0.02, +192.174,48.467,6.27,0.18, +192.164,60.32,5.85,0.46, +192.55,-60.401,6.75,0.35, +192.323,27.552,5.78,0.03, +193.744,-85.123,5.46,1.02, +192.582,-48.46,6.24,0.05, +192.741,-52.787,5.73,0.13, +192.573,22.863,6.43,1, +192.672,-33.999,4.91,-0.04, +192.545,37.517,5.89,0.15, +192.824,-60.33,5.72,0.38, +192.845,-10.338,6.41,1.02, +192.904,3.057,6.02,1.29, +192.987,-39.681,5.98,-0.1, +193.022,-48.094,6.33,0.03, +192.991,-26.738,6.15,0.23, +193.103,-53.829,6.24,1.13, +192.925,27.541,4.94,0.67, +193.051,17.074,6.32,1.59, +193.266,-54.952,5.93,1.31, +193.115,16.122,6.3,0.16, +193.341,-60.329,5.76,0.33, +193.279,-48.943,4.33,1.37, +193.359,-40.179,4.27,0.21, +193.455,-60.377,5.9,0.2, +193.297,-3.553,6.11,0.5, +192.278,83.418,5.85,-0.06, +192.307,83.413,5.28,-0.03, +193.324,21.245,4.9,0.9, +193.592,-58.431,6.58,0.76, +193.409,-4.224,6.44,1.1, +193.663,-59.147,4.62,-0.15, +193.648,-57.178,4.03,-0.17, +193.653,-57.168,5.17,-0.12, +193.457,12.419,6.25,0.27, +193.578,-11.649,6,0.08, +193.588,-9.539,4.79,1.6, +193.744,-44.152,5.89,0.64, +193.555,33.534,6.26,0.2, +193.507,55.96,1.77,-0.02, +193.831,-42.916,5.47,1.68, +194.131,-72.185,5.93,1.13, +193.987,-56.836,5.32,0.01, +193.735,47.197,5.84,1.55, +193.901,3.398,3.38,1.58, +193.972,-15.327,6.17,0, +194.125,-26.46,6.62,0.68, +194.268,-51.199,5.16,-0.06, +194.002,38.315,5.6,0.34, +194.007,38.318,2.9,-0.12, +193.869,65.439,5.24,0.28, +194.073,54.099,5.82,0.19, +194.388,-22.754,6.31,1.07, +194.282,46.177,6.12,1.01, +194.731,17.409,4.78,1.56, +194.915,-3.812,5.79,0.18, +195.136,-33.505,6.02,0.38, +195.568,-71.549,3.62,1.18, +195.069,30.785,4.9,1.17, +195.15,-3.369,5.99,1.12, +195.162,18.373,6.2,0.42, +194.697,75.473,6.01,0.99, +194.98,66.597,5.32,1.29, +195.29,17.123,5.96,0.96, +195.772,-71.476,6.03,0.05, +195.183,56.366,4.93,0.36, +195.544,10.959,2.83,0.94, +195.888,-49.527,4.85,0.02, +195.445,63.61,6,0.41, +195.942,-20.583,5.58,0.56, +195.668,59.716,6.53,0.05, +195.977,-3.663,6.59,0.29, +196.2,-41.197,6.26,1.68, +196.378,-52.115,6.43,1.7, +196.57,-48.464,4.71,-0.14, +196.646,-41.589,5.59,1.05, +196.728,-49.906,4.27,-0.19, +196.435,35.799,5.25,-0.08, +196.851,-59.861,5.99,0.48, +196.468,45.269,5.63,1.13, +196.588,21.153,5.99,0.39, +196.726,-35.862,6.54,-0.02, +196.543,29.029,6.54,0.05, +196.594,22.616,5.6,1.59, +196.207,73.025,6.31,null, +196.91,-53.46,5.71,-0.07, +197.029,-65.306,5.51,-0.02, +196.595,62.042,6.14,0.99, +196.795,27.625,4.8,1.48, +196.974,-10.74,5.19,1.14, +196.973,27.556,6.19,1.36, +197.135,-8.984,5.55,1.18, +197.264,-23.118,4.95,1.05, +197.31,-9.538,6.32,1.02, +197.302,10.022,5.78,1, +197.439,-10.329,5.94,1.49, +197.449,16.849,5.91,1.45, +197.488,-5.539,4.38,-0.01, +197.411,37.423,6.02,1.15, +197.743,-52.567,6.06,-0.09, +197.965,-69.942,5.91,0.42, +197.425,38.534,6.28,-0.12, +197.497,17.529,5.22,0.45, +197.497,17.529,5.22,null, +197.787,-42.233,5.79,0.52, +197.513,38.499,5.91,0.29, +197.971,-63.303,6.33,0.44, +197.847,-43.369,5.25,1.05, +197.459,62.229,6.54,-0.02, +198.073,-59.921,4.6,-0.08, +198.572,-78.447,5.85,1.07, +198.204,-66.227,5.9,0.06, +197.913,-26.552,6.5,0.19, +198.013,-37.803,4.85,0.7, +198.233,-59.817,6.16,0.6, +198.015,-16.199,5.04,0.46, +198.212,-42.7,6.22,1.06, +197.968,27.878,4.26,0.57, +198.035,24.258,6.33,0.98, +198.348,-50.7,5.89,-0.02, +198.137,11.556,5.77,1.51, +198.15,18.752,6.53,0.88, +198.55,-58.684,5.89,1.08, +198.562,-59.103,4.92,0.48, +198.362,-18.827,6.28,0.09, +198.49,-43.139,6.16,1.38, +198.302,18.727,6.11,1.2, +198.812,-67.894,4.8,-0.08, +198.857,-69.68,6.37,1.21, +198.545,-19.931,5.33,0.87, +198.68,-48.957,5.89,1.06, +198.429,40.153,4.92,1.06, +198.63,11.332,5.67,1.5, +198.79,-36.371,6.19,0.97, +199.187,-65.138,6.07,0.44, +198.995,-19.943,5.22,1.03, +199.304,-66.784,4.87,1.5, +198.383,72.799,6.59,0.08, +198.883,40.855,5.79,0.19, +199.106,-1.391,6.68,0.31, +199.221,-31.506,5.1,0.96, +199.06,19.052,6.45,0.98, +199.308,-43.979,5.84,0.2, +198.106,80.471,6.25,0.94, +199.135,19.785,6.45,0.25, +199.194,9.424,5.22,0.59, +199.829,-72.036,6.04,1.35, +199.315,13.676,5.33,1.31, +199.375,-0.677,6.37,0.26, +199.401,5.47,4.8,1.67, +199.644,-51.286,6.19,0.01, +199.385,40.573,4.73,0.3, +199.119,68.408,6.2,-0.06, +199.601,-18.311,4.74,0.71, +199.73,-23.172,3,0.92, +199.713,3.688,6.62,0.06, +199.616,34.098,5.82,1.35, +199.56,49.682,5.15,-0.07, +200.145,-59.773,6.18,0.43, +199.767,35.128,6.02,0.24, +200.158,-52.748,5.48,-0.13, +200.201,-55.801,6.02,0.29, +200.149,-36.712,2.75,0.04, +200.24,-46.881,5.77,1.12, +200.719,-72.147,6.05,0.09, +200.173,2.942,6.26,0.1, +200.079,40.151,5.6,1.2, +200.375,-19.489,6.21,0.09, +200.649,-60.972,6.18,0.01, +200.658,-60.988,4.53,-0.13, +200.568,-52.183,5.83,0.12, +200.423,2.087,5.69,0.06, +200.72,-47.943,6.16,0.18, +200.761,-48.563,6.38,-0.07, +200.54,5.155,5.87,0.12, +201.002,-64.536,4.53,0.85, +201.28,-74.888,5.05,1.11, +200.786,-33.19,6.22,1.65, +200.755,-17.735,5.37,0.99, +200.516,43.903,6.35,0.24, +200.968,-49.823,6.48,0.96, +200.829,-4.924,5.89,1.43, +201.308,-64.485,5.31,0.4, +201.459,-70.627,5.67,-0.03, +201.138,-5.164,5.75,0.42, +201.826,-74.692,6.63,-0.06, +200.975,37.034,6.07,1.68, +201.127,12.432,6.44,1.06, +200.981,54.925,2.27,0.02, +200.985,54.922,3.95,0.13, +201.298,-11.161,0.98,-0.23, +201.278,23.854,5.78,0.06, +201.533,-39.755,5.09,1.2, +201.548,-1.193,5.97,0.19, +201.734,-41.498,5.69,1.47, +201.776,-49.144,6.31,null, +201.306,54.988,4.01,0.16, +201.837,-49.381,6.28,-0.12, +201.68,-12.708,5.25,1.52, +201.811,-40.163,6.4,0.98, +202.193,-69.628,6.2,0.02, +201.569,46.028,5.88,0.97, +201.863,-15.974,4.76,1.09, +202.282,-64.676,6.11,0.11, +201.5,63.261,6.5,0.74, +202.355,-51.165,5.06,0.07, +202.108,13.779,4.98,0.71, +201.534,72.391,5.79,1.63, +201.769,64.736,6.66,0.37, +201.795,64.719,7.04,0.39, +201.998,52.746,6.34,0.23, +202.109,40.73,6.47,0.92, +202.312,-1.364,6.43,1.11, +202.049,50.587,6.8,null, +202.428,-23.281,4.97,1.6, +202.304,10.818,5.65,1.05, +203.312,-77.568,6.48,0.48, +202.19,50.718,6.43,0.37, +205.231,-85.786,5.58,0.18, +202.113,59.946,5.4,-0.01, +202.5,7.179,6.17,1.47, +202.49,6.013,6.51,0.96, +202.607,-6.47,6.09,0.33, +202.761,-39.407,3.88,1.17, +202.889,-28.113,6.47,0.1, +201.736,78.644,5.77,0.77, +203.022,-38.399,6.16,1.04, +203.399,-65.632,6.37,-0.02, +203.012,-18.729,6.01,0.18, +202.991,-6.256,4.69,1.62, +202.816,42.106,6.08,1.05, +203.15,-28.693,5.69,0.04, +203.144,-29.565,6.45,0.44, +203.215,-15.363,5.55,1.23, +203.242,-10.165,5.21,0.96, +203.253,-7.195,6.68,1.28, +203.2,24.346,6.11,0.96, +203.62,-48.272,6.33,-0.05, +203.682,-33.311,6.44,1.26, +203.533,3.659,4.94,0.03, +203.669,-13.214,5.91,0.02, +203.673,-0.596,3.37,0.11, +203.591,38.789,6.37,0.21, +203.53,55.349,5.6,-0.03, +203.699,37.183,4.98,0.4, +203.88,-5.396,5.73,0.95, +203.614,49.016,4.7,0.12, +204.301,-61.692,5.63,0.5, +203.889,10.205,6.49,1.03, +204.8,-75.684,6.34,0.01, +203.809,44.197,6.84,0.2, +204.21,-34.468,6.5,1.03, +204.275,-44.143,5.98,0.94, +204.69,-70.445,6.1,1.42, +204.202,-26.495,5.78,0.22, +204.349,-46.428,5.9,-0.12, +204.532,-58.415,6.42,1.12, +204.246,24.613,5.74,1.55, +204.705,-57.623,6.01,1.14, +205.003,-70.788,6.59,1.3, +204.166,49.487,6.49,null, +204.365,36.295,4.82,0.23, +204.675,-29.561,5.83,0.4, +204.533,14.302,6.52,0.25, +205.045,-64.577,5.79,0.39, +203.678,76.547,6.57,null, +204.972,-53.466,2.3,-0.22, +204.429,50.715,6.48,1.55, +204.999,-49.95,6,1.5, +204.92,-39.748,6.27,1.66, +204.953,-40.052,5.6,1.3, +204.76,18.265,6.48,1.2, +204.894,10.746,5.57,0.33, +204.296,71.242,5.5,1.2, +205.505,-58.787,5.38,-0.03, +205.436,-54.56,5.01,-0.05, +204.877,52.921,5.46,0.1, +205.065,31.012,6.21,0.96, +205.169,19.956,5.75,0.01, +205.163,28.065,6.23,1.28, +205.379,-23.45,6.59,0.06, +205.44,-33.597,6.05,1.44, +205.097,50.519,6.32,0.54, +205.26,22.496,5.62,1.01, +205.403,-8.703,5.01,1.63, +205.734,-56.768,6,-0.08, +205.728,-50.791,6.41,1.67, +205.089,57.208,6.29,0.1, +205.185,54.682,4.66,1.64, +205.729,-41.401,5.98,1.02, +205.553,8.388,6.16,0.42, +205.917,-42.067,5.98,-0.08, +206.066,-51.013,6.47,-0.13, +205.765,3.538,5.36,1.11, +205.62,41.674,6.3,0.86, +205.681,34.989,5.98,0.85, +205.375,64.822,5.85,0.07, +205.976,-5.499,6.51,0.05, +205.938,22.7,6.13,1.42, +206.124,-16.179,5.6,0.81, +206.19,-25.501,6.21,1.38, +206.404,-26.116,5.81,0.02, +206.422,-33.044,4.23,0.38, +205.978,52.064,6.02,0, +206.396,-15.767,6.19,0.05, +206.795,-62.59,6.51,1.98, +206.664,-51.433,4.65,0.96, +206.485,-12.427,5.51,0.9, +206.735,-36.252,5.15,-0.02, +206.865,-50.249,5.91,0.29, +206.91,-50.321,5.45,1.36, +206.305,55.879,6.5,0.47, +206.806,-9.709,6.05,1.42, +206.556,41.089,5.87,0.21, +206.579,38.504,5.94,0.94, +206.856,-17.86,5.43,1.62, +206.68,25.702,5.95,0.49, +206.738,6.351,6.33,0.63, +205.664,78.064,5.91,1.01, +206.815,17.457,4.5,0.48, +206.749,38.543,5.5,1.03, +206.649,54.433,5.7,-0.08, +208.911,-82.666,5.95,1.46, +207.23,-35.704,6.53,0.57, +207.376,-41.688,3.41,-0.22, +206.885,49.313,1.86,-0.19, +207.361,-34.451,4.19,1.5, +207.404,-42.474,3.04,-0.17, +207.948,-69.401,5.75,1.73, +207.161,31.19,5.62,1.01, +207.468,-18.134,4.97,1.06, +207.527,-29.081,6.18,-0.03, +207.581,-39.901,6.44,0.99, +207.238,39.543,7.4,null, +207.369,15.798,4.07,1.52, +207.428,21.264,4.91,1.43, +207.644,-19.897,6.53,0.51, +205.596,82.753,5.98,1.01, +207.438,36.633,6.38,null, +207.603,5.497,6.01,0.9, +207.947,-46.899,5.77,-0.16, +208.02,-52.812,5.25,-0.09, +207.903,-36.433,6.35,0.48, +207.835,-24.391,6.45,0.69, +207.957,-32.994,4.56,-0.13, +207.959,-32.995,6.06,-0.04, +208.004,-31.619,6.12,0.48, +207.44,61.489,5.96,0.96, +207.769,34.773,6.65,0.12, +207.788,34.664,5.87,1.62, +207.615,58.539,6.46,0.09, +208.43,-53.374,5.89,0.01, +208.704,-67.652,5.71,1.49, +207.948,34.444,4.74,1.66, +208.077,12.165,6.04,0.04, +208.302,-31.928,4.73,-0.14, +208.387,-35.664,5.54,0.44, +208.487,-47.128,6.1,-0.07, +208.468,-35.314,6.19,1.02, +208.304,17.933,5.7,0.84, +207.858,64.723,4.65,1.58, +207.747,68.315,6.4,1.17, +208.569,-28.57,6.04,1.13, +208.293,28.648,5.9,0.2, +208.801,-52.161,5.71,-0.08, +208.885,-47.288,2.55,-0.22, +208.675,-1.503,5.15,1.08, +208.743,-8.059,6.19,0.53, +209.083,-54.132,6.14,0.07, +208.671,18.398,2.68,0.58, +209.138,-54.704,6,0.78, +208.935,-31.285,6.51,0.9, +208.462,53.729,5.7,-0.05, +209.081,-46.592,5.83,1.14, +210.137,-78.59,6.09,0.03, +209.412,-63.687,4.71,1.11, +209.63,-65.801,6.2,1.05, +208.958,14.056,6.16,0.5, +209.116,1.051,5.91,0.2, +209.044,32.033,6.32,0.37, +209.365,-23.023,6.14,1.43, +209.142,27.492,5.01,1.42, +209.568,-42.101,3.83,-0.21, +209.67,-44.804,3.87,-0.2, +209.63,-24.972,5.15,-0.1, +209.822,-50.37,5.91,0.96, +210.072,-61.481,6.49,0.33, +210.218,-66.269,5.97,0.35, +209.666,14.649,6,1.44, +209.662,21.696,5.76,-0.03, +209.384,61.493,6.37,null, +210,-25.01,5.77,0.48, +209.955,-3.55,6.4,0.49, +210.329,-40.222,6.13,1.25, +210.431,-45.604,4.34,0.6, +211.333,-76.797,5.5,1.55, +210.335,8.895,5.99,0.09, +210.294,27.387,6.23,0.17, +210.412,1.544,4.26,0.1, +210.595,-27.43,5.48,1.34, +210.859,-56.214,5.92,1.22, +210.956,-60.373,0.61,-0.23, +210.757,-31.684,6.18,0.48, +210.865,-41.423,6.11,-0.11, +210.633,9.686,6.2,0.9, +210.551,45.754,6.27,1.32, +210.971,-22.422,6.3,0.45, +210.885,10.787,6.3,0.74, +210.903,7.546,6.26,0.94, +210.983,4.901,6.24,0.39, +211.061,-5.381,6.39,1.32, +211.113,-14.972,6.28,1.08, +211.444,-54.669,6.17,0.23, +212.113,-74.85,6.02,0.58, +210.749,50.972,6.15,0.01, +211.605,-59.716,6.42,0.12, +210.461,68.679,6.34,1.4, +211.156,2.298,6.28,1.02, +211.308,-16.336,6.56,0.1, +211.512,-41.18,4.36,-0.19, +211.545,-43.092,6.2,0.98, +211.593,-26.682,3.27,1.12, +211.671,-36.37,2.06,1.01, +212.06,-63.208,6.4,1.02, +211.678,-9.313,5.46,0.34, +211.097,64.376,3.65,-0.05, +212.235,-59.277,6.34,0.05, +212.629,-70.306,6.05,1.74, +212.216,-43.471,6.17,-0.06, +212.758,-69.72,6.06,0.18, +212.396,-51.505,6,-0.06, +212.478,-53.439,4.75,0.94, +212.253,-10.334,6.47,1, +211.983,43.854,5.27,1.59, +212.072,49.458,5.25,1.65, +212.71,-16.302,4.91,1.72, +212.192,59.338,6.46,1.02, +214.558,-81.008,4.91,0.25, +212.6,25.092,4.83,0.54, +211.735,74.594,6.45,0.14, +214.229,-77.664,6.47,1.42, +212.88,1.362,6.43,0.48, +213.318,-53.666,5.56,1.44, +213.102,-24.364,6.34,1.35, +212.813,32.296,6.11,1.26, +213.416,-54.626,6.11,0.05, +213.192,-27.261,5.08,1.16, +213.066,2.409,5.01,-0.12, +213.305,-26.612,6.24,1.08, +213.224,-10.274,4.19,1.33, +213.737,-57.086,5.07,-0.08, +213.42,-0.846,5.91,0.47, +213.677,-41.838,5.61,0.93, +213.838,-53.51,6.39,1.57, +214.161,-66.588,5.75,-0.06, +212.212,77.548,4.82,1.36, +213.589,-5.948,6.36,0.6, +213.522,12.959,5.54,0.54, +213.755,-29.282,6.08,null, +213.912,-45.001,6.31,0.6, +214.143,-59.914,6.39,2.04, +216.097,-82.849,6.42,0.02, +213.365,51.788,6.69,0.39, +213.371,51.79,4.54,0.2, +213.712,10.101,5.29,1, +213.721,3.336,6.45,1.6, +213.85,-18.201,5.43,-0.03, +213.671,21.873,6.39,0.18, +213.017,69.433,5.24,1.58, +213.598,41.519,6.24,1.04, +215.595,-80.109,5.06,-0.1, +214.076,-33.241,6.55,0.3, +214.004,-6.001,4.08,0.52, +216.729,-83.668,4.32,1.31, +213.915,19.183,-0.04,1.23, +214.09,-6.622,6.44,0.28, +214.125,-3.196,6.15,-0.01, +214.018,18.912,5.98,0.26, +214.266,-18.585,6.22,0.98, +213.82,52.536,6.58,0.1, +214.137,20.121,6.25,0.49, +214.101,39.745,6.38,0.36, +214.599,-33.221,6.54,0.27, +214.965,-61.273,5.23,0.29, +214.041,51.367,4.75,0.2, +214.096,46.088,4.18,0.08, +214.368,15.263,5.8,1.71, +214.503,-7.542,6.47,0.73, +214.851,-46.058,3.55,-0.18, +214.66,-18.716,5.9,0, +214.753,-25.816,5.87,0.5, +214.85,-37.004,5.94,0.08, +215.081,-56.387,4.33,0.12, +214.778,-13.371,4.52,0.13, +214.338,51.307,6.2,0.04, +214.499,35.509,4.81,1.06, +215.04,-43.059,5.56,0.92, +214.455,48.002,6.32,0.44, +215.177,-45.187,4.77,0.31, +214.818,13.004,5.41,0.38, +214.885,-2.266,5.14,1.02, +215.139,-37.885,4.05,-0.03, +214.92,0.384,6.19,0.2, +214.732,38.768,6.86,1.06, +214.938,16.307,4.86,1.23, +215.654,-58.459,4.92,0.86, +214.733,54.864,6.53,null, +214.949,38.794,6.33,0.05, +215.036,30.429,6.44,0.15, +215.661,-48.32,6.09,-0.13, +215.582,-34.787,5.56,-0.09, +215.835,-50.772,6.02,1.36, +215.759,-39.512,4.42,-0.18, +216.276,-68.195,5.61,0.49, +215.952,-53.177,6,1.1, +215.774,-27.754,4.77,1.31, +216.415,-66.173,6.36,0.13, +215.857,-11.714,6.21,0.99, +215.814,1.242,6.27,0.63, +215.844,8.445,6.86,0.43, +215.845,8.447,5.12,-0.02, +215.778,25.338,6.22,0.37, +216.004,8.244,5.95,0.06, +217.403,-76.729,6.07,1.18, +216.203,-24.806,5.32,0.96, +216.78,-65.822,5.85,1.5, +216.047,5.82,5.1,0.12, +216.17,-11.67,6.49,0.42, +216.076,8.085,6.19,1.2, +216.534,-45.221,4.56,-0.15, +216.545,-45.379,4.35,0.43, +216.374,-19.97,6.61,0.14, +216.556,-42.319,6.32,1.19, +216.449,-26.853,6.48,0.94, +216.708,-39.874,6.35,-0.08, +216.801,-46.134,5.83,0.31, +216.372,38.393,6.27,1.23, +217.181,-59.198,6.45,0.14, +216.299,51.851,4.05,0.5, +216.614,19.227,5.39,0.23, +216.852,-6.12,6.17,0.09, +217.043,-29.492,4.97,-0.07, +217.819,-67.717,5.83,1, +217.05,-2.228,4.81,0.7, +217.174,-6.901,5.42,1.49, +216.864,41.025,6.63,0.37, +217.536,-45.322,5.5,-0.08, +217.587,-49.519,5.37,0.05, +217.131,28.289,7.62,-0.01, +217.139,28.291,7.12,-0.03, +217.068,36.197,6.1,null, +217.735,-40.845,6.39,1.44, +217.46,0.829,5.94,0.16, +217.795,-38.87,5.97,1.06, +217.158,49.845,5.59,0.85, +218.137,-56.888,6.93,0.91, +217.457,31.791,6.06,-0.03, +217.403,41.796,6.35,0.7, +217.689,4.772,6.02,1.42, +218.154,-50.457,4.42,-0.19, +218.385,-54.998,5.87,0.48, +218.375,-52.68,5.87,1.09, +218.29,-30.714,6.09,1.03, +217.958,30.371,3.58,1.3, +216.881,75.696,4.25,1.44, +218.533,-42.1,6.6,0.06, +218.822,-60.016,6.4,1.26, +218.084,26.677,6.01,0.22, +218.135,22.26,5.92,0.35, +218.02,38.308,3.03,0.19, +217.692,63.186,6.09,0.41, +217.928,60.226,6.27,0.24, +218.711,-20.439,6.5,0.14, +218.881,-41.517,5.87,-0.08, +218.877,-42.158,2.31,-0.19, +218.335,36.959,6.43,null, +218.129,55.398,5.76,1.5, +219.443,-67.932,6.04,0.5, +219.079,-46.245,5.55,1.48, +218.549,32.534,6.33,0.4, +219.101,-39.597,6.13,1.05, +218.67,29.745,4.46,0.36, +218.66,36.626,6.03,1.38, +219.184,-40.212,5.74,-0.12, +219.334,-46.134,5.41,1.01, +218.566,57.065,6.48,0.49, +218.665,49.368,5.74,1.56, +219.472,-49.426,4.05,-0.15, +219.029,23.25,6.38,1.06, +219.249,-12.305,6.2,0.46, +219.582,-38.794,6.02,1.43, +219.796,-46.584,6.07,0.51, +219.853,-49.056,6.39,0.44, +219.9,-60.835,-0.01,0.71, +219.9,-60.836,1.33,0.88, +220.137,-56.441,6.3,1.18, +219.558,18.298,5.91,1.1, +220.627,-64.975,3.19,0.24, +219.552,43.642,5.7,1.48, +220.482,-58.616,6.22,0.45, +220.256,-36.135,5.67,-0.08, +219.563,54.023,5.85,-0.01, +219.709,44.404,5.39,0, +220.483,-47.388,2.3,-0.2, +221.965,-79.045,3.83,1.43, +220.49,-37.794,4,-0.17, +220.091,21.976,6.1,0.4, +220.177,13.534,5.91,0.21, +220.463,-30.933,6.37,-0.09, +220.182,16.418,4.94,-0.03, +220.183,16.418,5.88,0.24, +220.287,13.728,4.83,null, +220.287,13.728,4.43,0.05, +218.41,79.66,6.26,1.3, +220.412,8.162,4.86,1, +220.431,11.661,5.56,0.94, +221.322,-62.876,5.36,0.29, +220.476,21.124,6.38,null, +220.807,-24.998,5.73,-0.01, +220.914,-35.174,4.05,1.35, +221.231,-58.478,6.11,1.02, +220.765,-5.658,3.88,0.38, +221.295,-55.602,6.1,-0.06, +221.247,-35.192,4.92,0.01, +220.856,26.528,4.81,1.66, +232.08,-88.133,6.48,0.3, +220.513,61.262,6.25,0.41, +220.935,40.459,5.73,1.39, +221.621,-47.441,5.74,0.07, +221.755,-52.384,5.21,0.98, +221.299,-1.418,6.07,1.61, +221.5,-25.443,4.94,0.35, +221.801,-52.206,6.07,0.09, +221.528,-23.153,5.81,0.98, +222.185,-66.594,5.91,-0.07, +221.376,0.717,5.69,-0.03, +221.31,16.964,4.6,0.98, +221.491,-15.46,6.33,1.19, +221.545,-21.176,6.4,0.58, +221.247,27.075,5.12,null, +221.247,27.074,2.7,0.97, +221.336,18.885,6.13,0.83, +221.771,-38.291,5.94,1.33, +221.884,-43.557,6.3,1.08, +221.307,32.788,6.28,1.58, +221.562,1.893,3.72,-0.01, +221.525,15.132,5.63,1.57, +221.807,-21.325,6.06,1.65, +221.844,-25.624,5.63,null, +222.279,-56.668,6.23,1.13, +221.937,-26.087,5.24,0.94, +221.99,-26.646,5.77,-0.02, +221.979,-12.84,6.35,1.1, +222.159,-36.635,6.04,1.54, +223.307,-73.19,5.6,0.82, +222.328,-24.252,5.68,1.3, +222.225,-0.848,6.14,-0.04, +222.33,-14.149,5.31,0.07, +222.097,24.367,6.14,0.48, +225.462,-83.228,5.65,0.95, +222.572,-27.96,4.41,1.4, +223.146,-63.81,5.87,0.72, +222.91,-43.576,4.32,-0.15, +222.278,37.811,6.16,0.36, +222.672,-15.997,5.15,0.41, +222.72,-16.042,2.75,0.15, +222.493,28.616,5.8,0.05, +222.328,46.116,5.74,0.48, +222.566,23.912,5.85,0.56, +222.754,-2.299,4.94,0.98, +222.75,-0.257,6.18,1.4, +222.385,51.375,6.51,0.4, +222.422,48.721,5.69,0.47, +223.677,-65.991,6.09,-0.06, +224.47,-76.663,5.34,1.45, +222.623,37.272,5.48,1.02, +223.138,-30.577,6.29,0.6, +223.213,-37.803,5.03,-0.16, +222.847,19.101,4.55,0.76, +226.195,-83.038,5.65,1.3, +223.894,-60.114,5.2,1.16, +225.049,-77.16,5.93,1.05, +223.584,-24.642,5.3,1.32, +223.658,-33.301,5.82,1.42, +223.347,15.704,6.4,0.57, +224.183,-62.781,5.11,0, +222.86,59.294,5.46,1.36, +223.349,19.153,6.01,0.83, +223.595,-11.898,5.8,0.97, +224.983,-75.032,6.2,-0.04, +224.072,-52.81,5.38,0.13, +227.785,-84.787,5.91,-0.06, +223.936,-33.856,5.32,0.04, +224.133,-47.879,5.64,-0.04, +224.256,-51.447,6.64,1.7, +224.149,-39.416,6.36,0.06, +224.129,-32.637,6.06,1.41, +222.676,74.156,2.08,1.47, +224.192,-11.41,5.46,1.49, +224.307,-29.158,6.29,-0.04, +224.537,-48.863,6.35,0.71, +224.055,14.446,5.77,-0.06, +224.367,-21.416,5.74,1.11, +223.995,32.3,6.12,0.1, +224.296,-4.346,4.49,0.32, +224.633,-43.134,2.68,-0.22, +224.653,-39.907,6.15,1.23, +224.389,-0.167,5.53,1.13, +224.265,21.555,6.49,-0.01, +224.299,16.388,5.71,0.94, +224.79,-42.104,3.13,-0.2, +224.663,-27.657,5.65,0.24, +224.556,-11.155,6.6,0.01, +224.808,-37.881,6.47,-0.08, +224.863,-43.16,6.1,0.6, +224.096,49.629,5.63,0.5, +224.723,-11.144,5.87,1.26, +224.72,-4.989,6.09,0.5, +224.846,4.568,5.93,1.6, +225.304,-38.058,5.89,1.24, +225.243,-8.519,4.92,0, +225.492,-34.359,6.22,0.24, +224.904,39.265,5.64,0.31, +224.396,65.933,4.6,1.59, +225.333,-2.755,5.52,1.68, +225.527,-28.061,5.85,0.16, +225.218,22.046,6.38,null, +226.201,-64.032,5.17,0.93, +225.454,-0.141,5.71,1.52, +225.747,-32.643,5.44,-0.12, +222.585,82.512,5.64,0.68, +225.161,47.278,6.37,-0.14, +226.786,-71.905,6.52,1.59, +225.687,-3.031,6.61,0.2, +225.527,25.008,4.81,1.5, +225.725,2.091,4.4,1.04, +225.487,40.391,3.5,0.97, +226.017,-25.282,3.29,1.7, +226.179,-40.861,6.41,1.46, +226.28,-47.051,4.72,-0.14, +226.28,-47.051,4.82,null, +226.33,-41.067,5.15,1.01, +225.363,60.204,5.93,0.09, +225.775,35.206,5.51,1.02, +226.027,5.493,6.5,0.31, +226.987,-65.276,6.17,1.47, +225.778,44.644,6.65,0.46, +225.902,34.566,6.59,1.02, +226.449,-25.79,6.67,-0.01, +226.558,-36.264,6.27,1.65, +226.111,26.948,4.54,1.24, +226.858,-49.088,5.77,0.92, +225.948,47.654,4.76,0.65, +226.639,-30.919,5.96,-0.08, +226.613,-22.032,6.17,1.05, +227.375,-67.084,5.76,0.69, +226.657,-16.257,5.2,1.58, +227.356,-63.643,6.28,0.06, +227.05,-40.584,5.79,-0.14, +227.163,-42.868,5.85,-0.11, +227.211,-45.28,4.05,-0.18, +226.358,48.151,5.57,0, +228.141,-72.77,6.01,0, +225.991,65.92,6.13,null, +226.646,36.456,6.35,0.52, +226.918,5.498,6.16,0.94, +227.686,-61.422,6.3,0.63, +226.835,18.442,6.02,0.06, +226.825,24.869,4.93,0.43, +226.57,54.556,5.25,0.96, +227.531,-38.792,5.98,null, +227.817,-55.346,5.54,1.14, +227.099,26.301,5.67,1.24, +227.223,13.235,6.1,0.96, +227.148,25.109,5.81,1.24, +227.578,-26.333,5.76,1.05, +227.895,-45.277,6.44,1.04, +227.883,-45.279,7.39,1.08, +228.58,-70.079,5.81,3.38, +228.254,-61.744,6.32,1.9, +227.984,-48.738,3.87,-0.05, +227.99,-48.744,5.69,0.14, +227.081,50.055,6.39,1.03, +228.071,-52.099,3.41,0.92, +228.13,-48.219,6.33,1.12, +228.206,-44.501,4.82,-0.17, +228.055,-19.792,4.54,-0.08, +228.281,-36.091,6.1,-0.08, +228.018,18.976,5.89,1.53, +228.323,-24.008,6.47,-0.04, +228.33,-19.647,6.08,0.12, +228.37,-25.309,6.45,0.7, +228.472,-26.194,5.84,1.14, +228.181,19.286,6.68,0.68, +228.655,-31.519,4.91,0.37, +229.152,-60.904,5.73,-0.08, +228.64,-17.769,6.17,-0.05, +228.974,-48.074,5.95,0.21, +229.236,-60.957,5.09,-0.06, +228.383,22.983,6.3,0.06, +229.412,-63.611,4.86,1.25, +229.017,-41.491,5.16,0.58, +229.044,-43.485,6.04,-0.14, +228.711,-5.503,6.28,1.47, +229.378,-58.801,4.07,0.09, +229.728,-68.679,2.89,0, +227.684,67.781,6.17,null, +228.398,38.265,6.2,1.2, +228.525,31.788,5.99,1.52, +228.798,4.939,5.33,1.09, +228.622,29.164,5.26,0.03, +228.543,42.171,6.13,1.66, +229.096,-22.399,5.5,1.38, +228.955,0.372,5.63,0.18, +229.704,-60.496,5.46,-0.1, +228.876,33.315,3.47,0.95, +229.539,-41.061,6.28,0.18, +229.633,-47.875,4.27,-0.08, +230.17,-67.481,6.28,-0.09, +229.252,-9.383,2.61,-0.11, +229.458,-30.149,4.34,1.1, +229.735,-40.788,5.59,-0.1, +229.672,-31.209,6.18,1.23, +229.882,-37.097,6.2,0.96, +229.609,-0.461,5.89,1.51, +228.66,67.347,5.13,0.53, +229.602,20.573,5.7,0.97, +228.716,68.945,6.51,null, +229.828,1.765,5.06,0.54, +230.343,-40.647,3.22,-0.22, +230.397,-40.75,6.2,0.07, +230.375,-38.219,6.48,-0.06, +230.535,-47.928,5,0.5, +230.451,-48.318,5.65,0.65, +230.793,-60.657,5.67,0.48, +230.224,-18.159,6.17,1.02, +229.876,32.515,6.32,0.24, +230.256,-15.548,6.3,0.41, +230.845,-59.321,4.51,0.19, +230.452,-36.261,3.56,1.54, +230.196,-2.413,6.35,1.06, +230.282,-5.825,5.54,1.04, +230.67,-44.689,3.37,-0.18, +230.035,29.616,5.51,1.02, +230.258,0.715,5.35,1.19, +230.279,24.958,6.39,1.23, +230.789,-36.859,4.54,-0.15, +231.561,-68.309,5.89,1.02, +229.275,71.824,5.02,1.37, +230.022,51.959,5.66,0.11, +230.173,44.434,6.19,0.39, +230.597,12.567,6.28,-0.02, +230.453,32.934,5.37,-0.07, +231.187,-39.71,5.37,-0.11, +230.968,-12.369,5.72,1.04, +230.932,-1.022,6.12,0.25, +231.278,-38.169,7.03,0.09, +231.05,-10.322,4.94,0.44, +231.334,-38.734,4.6,0, +231.888,-64.531,5.71,1.64, +230.656,39.581,5.5,1.59, +230.801,30.288,5.58,0.58, +230.801,30.288,6.08,null, +235.82,-84.465,5.57,0.11, +232.878,-73.389,5.49,-0.12, +230.655,62.047,5.98,-0.03, +231.021,45.271,6.01,1.2, +231.123,37.377,4.31,0.31, +231.129,37.348,6.5,0.59, +230.182,71.834,3.05,0.05, +231.826,-36.768,5.45,-0.15, +230.66,63.341,5.79,1.27, +232.113,-51.598,6.1,1.09, +231.448,15.428,5.17,1.66, +231.472,19.481,6.27,0.6, +231.573,34.336,5.46,1.4, +232.351,-46.733,5.24,1.74, +232.064,-16.716,5.64,1.55, +231.233,58.966,3.29,1.16, +231.912,25.102,6.02,1.62, +232.159,1.842,5.17,0.23, +231.957,29.106,3.68,0.28, +231.635,54.02,6.45,0.05, +232.651,-20.728,6.22,0.17, +232.668,-16.609,5.82,1.06, +233.018,-38.623,6.25,0.2, +232.185,47.201,6.15,0.1, +232.96,-32.881,6.46,0.09, +231.92,62.276,6.5,0.14, +231.964,60.67,5.9,1.44, +232.931,-20.165,6.22,0.22, +234.826,-77.918,6.18,1.2, +232.731,8.579,6.57,0.37, +232.237,55.195,6.43,0.08, +232.595,31.286,6.46,0.19, +232.616,36.804,6.37,null, +233.153,-19.671,5.52,0.18, +232.733,40.833,5.02,1.59, +233.23,-16.853,5.5,-0.14, +233.288,-24.489,7,0.27, +234.073,-65.613,6.51,0.35, +233.507,-40.066,5.82,1.68, +232.338,62.1,6.38,null, +232.843,36.616,6.38,0.5, +233.04,16.056,6.22,-0.05, +234.18,-66.317,4.11,1.17, +233.241,-1.186,5.51,1.09, +233.587,-39.349,6.36,-0.03, +232.946,40.899,5.02,0.07, +233.655,-28.047,5.15,1.3, +233.785,-41.167,2.78,-0.2, +233.545,-10.064,4.62,1.01, +233.233,31.359,4.14,-0.13, +233.587,-5.695,6.51,0.58, +233.611,-9.183,5.17,-0.09, +233.972,-44.959,4.54,-0.18, +235.088,-73.447,5.65,-0.04, +233.47,17.138,6.45,null, +234.05,-44.397,5.43,1.5, +232.732,64.209,5.79,0.96, +235.478,-76.082,5.95,-0.04, +233.882,-14.789,3.91,1.01, +233.7,10.538,3.8,0.26, +233.7,10.539,3.8,0.26, +234.048,-33.093,6.24,null, +233.769,1.669,6.56,0.28, +235.048,-70.228,6.44,0.08, +233.672,26.715,2.23,-0.02, +234.256,-28.135,3.58,1.38, +233.888,17.656,6.12,0.94, +233.973,11.266,6.07,1.09, +234.513,-42.567,4.33,1.42, +234.706,-52.373,5.44,0, +234.14,-0.562,6.51,0.72, +233.813,39.01,5.11,1.64, +234.369,-26.28,6.19,0.01, +234.123,10.01,5.26,0.95, +234.985,-59.908,5.95,0.48, +234.122,16.119,5.93,0.29, +234.636,-39.161,6.57,-0.07, +234.45,-23.142,5.78,1.1, +234.676,-39.128,6.04,0.21, +233.955,38.374,6.42,null, +234.565,-28.207,6.32,1.17, +234.568,-21.016,5.84,1.08, +233.818,53.922,5.97,1.18, +234.664,-29.778,3.66,-0.17, +234.223,29.991,6.52,null, +234.727,-19.302,5.38,0.86, +234.667,-8.794,6.5,0.53, +234.667,-8.791,6.48,0.52, +234.017,52.07,6.74,0.32, +233.988,54.631,5.74,null, +234.839,-23.15,6.34,0.02, +234.942,-34.412,4.67,0.99, +235.243,-47.736,6.23,1.63, +235.064,-31.214,6.34,1.43, +234.457,40.353,5.24,0.88, +235.07,-23.818,4.96,1.33, +235.297,-44.661,4.64,0.4, +232.854,77.349,4.96,1.58, +234.704,34.675,6.11,1.02, +234.383,54.509,5.87,1.07, +232.296,80.449,6.58,0.67, +234.568,46.798,5.75,0.36, +235.043,12.053,6.25,0.94, +235.655,-49.489,6.04,1.31, +234.843,36.637,6,null, +234.845,36.636,5.07,-0.12, +234.643,50.423,5.84,0.83, +235.98,-60.287,6.48,1.05, +235.66,-37.425,5.24,0.98, +235.487,-19.679,4.74,1.57, +235.671,-34.711,4.75,-0.14, +235.247,16.025,6.01,0.9, +234.79,57.924,6.45,1.09, +235.388,19.67,4.52,0.04, +235.448,12.848,5.33,0.04, +234.413,69.283,5.62,1.35, +235.478,18.464,5.81,0.2, +236.094,-41.819,5.94,0, +235.854,-15.043,6.31,1.16, +236.018,-15.673,5.41,0.23, +235.686,26.296,3.84,0, +235.794,13.668,6.48,0.86, +236.973,-65.443,6.18,0.22, +236.974,-65.443,6.39,0.24, +236.008,2.515,5.88,0.68, +236.067,6.426,2.65,1.17, +235.997,32.516,5.56,1.06, +236.553,-28.062,6.51,0.32, +235.711,52.361,5.51,-0.07, +236.175,17.264,6.14,0, +236.348,5.447,5.58,0.04, +236.684,-34.682,5.61,-0.11, +236.415,0.891,6.33,1.19, +236.856,-40.194,6.42,0.88, +236.523,-1.804,5.4,-0.03, +236.871,-37.916,6.01,0.72, +237.21,-52.438,6.07,1.38, +236.689,-6.12,6.24,1.17, +236.547,15.422,3.67,0.06, +236.611,7.353,4.43,0.6, +237.529,-53.209,5.77,-0.08, +236.822,14.115,5.71,0.09, +237.49,-48.912,5.84,0.07, +237.568,-45.402,6.12,0.29, +237.778,-55.056,5.73,0.06, +237.055,13.789,6,1.25, +237.237,-3.819,5.53,0.12, +238.236,-65.152,6.54,0.19, +237.008,31.736,6.44,null, +236.645,55.475,5.92,1.39, +237.185,18.142,4.09,1.62, +237.143,28.157,5.85,0.77, +237.405,-3.43,3.53,-0.04, +237.881,-47.061,6.01,1.16, +237.74,-33.627,3.95,-0.04, +238.345,-62.607,6.19,1.47, +237.745,-25.751,4.64,-0.05, +236.667,62.599,5.19,0.04, +236.908,55.377,5.86,0.25, +237.573,2.196,5.23,1.02, +237.399,26.068,4.63,0.8, +238.215,-50.615,6.6,1.53, +238.873,-68.603,5.09,1.13, +237.704,4.478,3.71,0.15, +238.053,-29.887,6.4,0.98, +237.674,15.134,5.2,null, +237.815,-3.091,5.11,0.12, +237.91,-14.134,6.19,1, +238.785,-63.431,2.85,0.29, +238.719,-60.743,6.15,0.1, +237.816,20.978,4.76,1.54, +238.885,-60.178,5.77,0.35, +237.808,35.658,4.82,1, +238.334,-20.167,5.03,-0.01, +236.015,77.794,4.32,0.04, +238.403,-25.327,4.59,-0.07, +239.025,-60.483,5.76,0.06, +238.474,-24.533,5.39,-0.02, +238.483,-23.978,5.42,-0.04, +238.456,-16.729,4.15,1.02, +238.234,17.404,6.36,null, +238.625,-27.339,6.14,-0.07, +238.3,13.197,6.1,0.6, +238.665,-25.244,5.87,-0.06, +238.395,16.075,6.09,null, +238.169,42.452,4.62,0.56, +238.751,-19.383,5.94,-0.01, +238.877,-31.084,6.21,1.37, +238.875,-26.266,5.62,0.15, +239.027,-39.864,6.03,0.15, +238.668,8.58,6.29,0.18, +239.742,-65.038,5.75,-0.06, +239.266,-48.162,6.31,0.38, +238.069,55.827,5.81,0.96, +239.058,-31.786,6.29,0.43, +238.644,20.311,5.44,1.59, +239.223,-33.966,5.12,0.12, +239.226,-33.964,5.62,0.05, +239.06,-14.399,6.37,0.48, +239.221,-29.214,3.88,-0.2, +239.339,-36.185,5.8,1.01, +239.139,-14.829,6.13,0.23, +238.916,18.621,6.26,-0.11, +238.658,43.139,5.37,1.65, +239.113,15.662,3.85,0.48, +239.418,-20.983,5.85,0.02, +239.628,-37.503,6.31,1.01, +238.948,37.947,5.45,0.33, +239.975,-54.021,6.1,0, +238.878,42.566,5.75,-0.11, +240.295,-63.777,6.41,0.78, +239.311,14.414,5.54,1.14, +239.548,-14.279,4.88,-0.1, +239.645,-24.831,5.43,-0.09, +239.876,-41.744,4.99,1, +239.713,-26.114,2.89,-0.19, +239.992,-40.653,6.49,1.52, +240.277,-54.578,6.13,0.25, +239.397,26.878,4.15,1.23, +240.03,-38.397,3.41,-0.22, +238.957,58.912,6.31,-0.02, +239.375,39.695,6.31,1.07, +240.718,-62.542,6.25,-0.04, +240.224,-40.435,6.21,0.01, +240.083,-22.622,2.32,-0.12, +240.082,-16.533,5.47,0.52, +241.482,-72.401,5.7,1.17, +240.331,-31.889,6.33,1.45, +239.74,36.644,5.62,1.49, +239.876,25.92,2,0.1, +240.198,-8.411,5.55,0.05, +239.448,54.75,4.95,0.26, +240.883,-57.775,4.63,0.24, +240.804,-49.23,4.65,0.92, +240.213,4.428,5.83,1, +239.768,49.881,6.05,0.29, +240.664,-29.136,6.03,1.31, +240.31,17.818,5.12,0.99, +240.851,-38.602,4.89,-0.14, +240.261,33.304,5.41,0.6, +240.836,-25.865,5,1.22, +240.893,-32.001,6.01,0.47, +240.361,29.851,4.99,-0.07, +240.574,22.804,4.83,0.07, +240.978,-24.726,6.21,1.38, +241.074,-33.214,6.1,0.34, +241.153,-37.863,5.9,0.4, +240.94,4.987,6.08,0.96, +241.092,-11.373,5.07,null, +241.092,-11.373,4.77,0.47, +241.85,-56.191,6.16,0.58, +241.623,-45.173,4.72,0.23, +240.523,52.916,5.93,1.48, +240.7,46.037,4.76,-0.11, +240.831,36.632,5.83,0.56, +241.359,-19.806,2.62,-0.07, +241.36,-19.802,4.92,-0.02, +240.472,58.565,4.01,0.52, +241.648,-36.802,4.23,-0.17, +241.526,-23.606,5.92,-0.08, +241.435,-6.292,6.53,0.48, +241.499,-6.139,6.41,1.03, +241.818,-36.756,5.73,0.29, +241.408,8.096,6.29,0.08, +241.702,-20.669,3.96,-0.04, +242.328,-57.934,5.57,-0.04, +240.789,59.411,6.19,1.58, +241.764,-14.071,6.32,0.66, +241.851,-20.869,4.32,0.84, +241.966,-24.462,6.33,-0.06, +242.142,-39.105,7.05,0.36, +242.143,-39.093,6.65,-0.07, +242.032,-26.327,5.38,1.65, +241.902,-12.746,5.78,0.01, +242.182,-23.686,5.88,0.02, +241.906,9.892,5.63,0.2, +241.842,21.822,6.14,1.37, +242.382,-32.65,6.19,0.79, +242.469,-33.546,5.54,-0.1, +242.019,17.047,5,0.95, +242.02,17.054,6.25,1.14, +242.117,8.534,5.73,1.61, +242.245,3.454,5.91,1.47, +242.48,-18.341,6.47,0.44, +242.194,17.206,6.14,0, +242.297,6.379,5.97,1, +242.824,-41.12,5.86,0.27, +242.46,-3.467,5.37,1.45, +242.758,-29.416,5.13,1.12, +242.243,36.491,4.76,1.01, +243.344,-55.541,5.81,0.34, +245.087,-78.696,4.68,1.69, +245.112,-78.667,5.27,1.41, +243.32,-53.672,5.83,1.96, +242.193,44.935,4.26,-0.07, +243.37,-54.631,4.94,1.04, +241.582,67.81,5.44,-0.02, +242.994,-19.45,6.3,0.13, +242.999,-19.461,4.01,0.04, +243.076,-27.926,4.59,-0.16, +243.066,-28.417,5.67,0.01, +243.86,-63.686,3.85,1.11, +243,-10.064,4.94,0.09, +242.874,9.712,6.53,0.24, +243.03,-8.547,5.43,0.12, +240.88,76.794,5.56,null, +242.87,16.666,6.08,0.02, +242.262,57.938,6.33,null, +244.273,-67.941,5.75,0.15, +242.358,55.829,6.49,null, +242.908,23.495,5.7,1.56, +243.957,-57.912,5.63,0.14, +243.235,-4.221,6.25,0.13, +243.44,-24.422,6.41,0.04, +242.915,33.343,6.29,1.2, +243.593,-33.011,5.92,1.02, +243.814,-47.372,5.14,-0.13, +242.95,36.425,5.63,1.34, +243.314,5.021,5.48,1.47, +243.462,-11.837,5.22,1.42, +243.85,-42.9,6.14,1.11, +242.948,42.374,5.87,1.45, +243.62,-21.107,6.41,-0.01, +243.189,26.671,6.5,0.39, +243.663,-18.535,6.32,1.09, +243.723,-25.477,6.05,0.04, +244.18,-53.811,5.44,1.73, +243.586,-3.694,2.74,1.58, +243.556,5.902,6.31,1.15, +244.254,-50.068,4.99,0.8, +244.337,-53.087,6.33,0.27, +243.905,-8.369,5.5,0.65, +243.965,-14.849,6.09,0.06, +244.716,-57.9,6.49,1, +243.67,33.859,5.64,0.51, +243.67,33.858,6.66,null, +243.87,18.808,5.69,1.12, +244.245,-21.304,6.61,0.02, +244.23,-3.953,6.18,0.31, +243.948,27.422,6.14,1.31, +243.105,67.144,6.21,0.99, +244.575,-28.614,4.78,0.02, +244.824,-42.674,5.45,0.1, +244.96,-50.156,4.02,1.08, +245.105,-55.14,5.77,0.97, +244.187,29.15,5.78,0.07, +244.58,-4.692,3.24,0.96, +244.782,-20.218,6.29,1.08, +244.886,-30.907,5.49,0.47, +244.752,-14.872,5.94,1.52, +242.706,75.878,5.48,-0.11, +245.136,-39.431,6.12,-0.07, +245.159,-24.169,4.55,0.84, +243.134,75.211,6.39,null, +245.617,-49.572,5.33,-0.04, +245.297,-25.593,2.89,0.13, +245.62,-43.912,5.88,1.16, +244.314,59.755,5.4,1.63, +245.018,21.133,6.05,0.94, +243.64,73.395,5.98,0.08, +246.342,-63.125,6.15,0.03, +244.797,49.038,5.91,1.37, +244.98,39.709,5.46,0.4, +244.935,46.313,3.89,-0.15, +245.518,1.029,4.82,0.34, +246.005,-39.193,5.4,0.62, +245.48,19.153,3.75,0.27, +245.662,-2.08,6.23,0.07, +245.986,-33.199,6.47,0.01, +247.117,-70.084,4.91,0.55, +246.226,-45.349,6.33,0.19, +246.132,-37.566,5.42,-0.11, +244.539,68.554,6.41,null, +248.363,-78.897,3.89,0.91, +245.524,30.892,4.85,0.97, +246.026,-20.037,4.5,1.01, +246.165,-29.703,6.63,0.59, +246.165,-29.705,5.84,0.59, +245.589,33.799,5.2,1.6, +245.622,33.704,5.39,1.53, +246.989,-64.058,5.27,0.36, +245.735,32.333,6.4,0.08, +246.045,6.948,5.85,-0.01, +246.397,-23.447,5.02,0.24, +246.396,-23.446,5.92,null, +247.063,-58.6,5.69,0, +246.796,-47.555,4.47,-0.07, +244.376,75.755,4.95,0.37, +246.354,14.033,4.57,0, +246.756,-18.456,4.42,0.28, +246.449,18.893,6.7,null, +247.438,-57.756,6.06,1.48, +246.548,11.408,6.11,1.03, +247.061,-37.179,5.79,1.1, +246.351,37.394,5.54,0.17, +246.709,2.348,6.07,0.92, +247.706,-61.634,5.2,1.23, +245.453,69.109,5.25,1.12, +246.105,55.205,5.74,0, +246.931,-7.598,5.23,1.72, +246.95,-8.372,4.63,0.17, +245.946,61.697,5.67,0.96, +247.426,-46.243,5.35,0.56, +245.998,61.514,2.74,0.91, +258.997,-87.566,6.57,0.91, +247.352,-26.432,0.96,1.83, +248.58,-70.988,5.5,1.22, +247.142,0.665,5.39,1.46, +247.204,-8.129,6.48,0.4, +251.473,-83.239,6.57,1.57, +255.244,-86.364,6.04,0.05, +247.445,-14.551,5.68,0.82, +247.552,-25.115,4.79,-0.11, +247.924,-41.817,5.33,0.33, +247.845,-34.704,4.23,-0.16, +247.625,-7.515,6.5,0.37, +247.845,-26.538,6.1,1.08, +247.16,41.882,5.04,1.52, +247.785,-16.613,4.28,0.92, +247.555,21.49,2.77,0.94, +247.728,1.984,3.82,0.01, +247.181,51.408,6.29,1.05, +248.937,-65.495,5.52,0.93, +247.64,20.479,5.25,1.29, +248.034,-21.466,4.45,0.13, +247.806,22.195,5.76,1.61, +248.521,-44.045,4.94,0.05, +247.525,48.961,6.45,0.03, +247.762,35.225,6.25,1.64, +248.149,5.521,5.63,-0.06, +248.151,11.488,4.84,1.49, +248.783,-45.245,6.46,1.34, +246.996,68.768,5,-0.06, +247.947,45.598,5.65,0.12, +250.769,-77.517,4.24,1.06, +249.094,-42.859,5.47,0.4, +248.971,-28.216,2.82,-0.25, +249.094,-35.256,4.16,1.57, +249.72,-60.99,6.18,-0.08, +248.526,42.437,4.2,-0.01, +248.86,17.057,6.41,0.05, +248.107,60.823,5.94,0.02, +249.09,-2.325,5.75,0.82, +250.347,-68.296,5.91,-0.08, +246.43,78.964,5.56,0.26, +249.609,-43.399,5.83,-0.02, +249.29,-10.567,2.56,0.02, +249.179,15.498,6.3,-0.11, +250.21,-60.446,6.18,0.48, +249.772,-37.217,5.91,0, +249.507,-6.538,6.09,0.16, +247.867,72.612,6.3,1.32, +249.45,13.687,6.31,0.41, +250.842,-67.432,6.03,0.02, +249.047,46.613,5.79,1.04, +249.048,52.9,5.53,-0.07, +249.057,52.924,5.08,-0.04, +249.059,52.924,6.53,-0.06, +250.335,-48.763,5.65,0.13, +250.418,-49.652,5.65,-0.03, +249.913,-9.554,6.35,0.48, +250.144,-20.409,6.26,1.08, +247.662,77.447,6.34,1, +250.44,-33.146,5.87,0.65, +250.401,-24.468,6.09,0.2, +250.146,4.207,6.93,0.13, +250.161,4.22,5.77,-0.02, +250.393,-17.742,4.96,1.11, +250.764,-46.071,6.23,0.85, +249.229,63.073,6.16,1.53, +249.502,56.016,5.29,1.08, +249.687,48.928,4.9,1.55, +250.298,-1.001,6.24,0.3, +250.474,-19.924,5.57,0.43, +250.214,12.395,6.08,0.05, +251.667,-67.11,5.13,-0.08, +250.427,1.181,5.74,0.32, +250.94,-41.119,6.2,0.14, +251.166,-53.152,5.96,1.26, +250.252,24.859,6.06,1.31, +250.975,-41.113,6.12,-0.07, +250.948,-38.157,6.05,-0.06, +250.911,-32.106,6.46,-0.08, +250.322,31.603,2.81,0.65, +250.403,26.917,5.92,0.4, +251.177,-40.84,5.71,-0.12, +251.588,-58.504,5.74,-0.09, +251.072,-27.456,6.58,0.1, +252.166,-69.028,1.92,1.44, +251.251,-28.51,6.02,0.09, +251.831,-58.341,5.58,-0.08, +250.724,38.922,3.53,0.92, +251.699,-39.377,5.48,0.98, +250.965,34.039,5.99,0.29, +250.23,64.589,4.83,1.22, +251.374,1.02,6.03,-0.02, +251.714,-25.529,6.71,1.18, +250.743,55.69,6.16,0.07, +251.344,15.745,5.56,1.66, +251.458,8.583,5.15,1.53, +252.446,-59.041,3.76,1.57, +251.299,43.217,6.05,1.4, +253.073,-67.682,6.32,1.28, +251.791,2.064,6.1,0.14, +252.975,-65.376,6.13,-0.02, +251.943,5.247,5.24,-0.02, +252.113,-14.909,6.03,0.2, +252.65,-50.046,6.47,0.31, +251.324,56.782,4.85,0.38, +249.47,78.918,6.32,1.14, +252.037,13.591,6.35,0.87, +252.366,-15.667,6.1,null, +252.541,-34.293,2.29,1.15, +251.833,42.239,5.87,1.61, +252.458,-10.783,4.65,0.47, +252.749,-37.514,6.11,0.12, +252.89,-41.231,5.22,0.07, +252.394,13.261,5.91,0.03, +252.968,-38.047,3.08,-0.2, +252.593,-2.654,6.32,0.42, +253.08,-41.854,6.49,0.23, +252.581,7.248,5.49,0.1, +253.502,-57.909,5.94,1.59, +253.084,-38.017,3.57,-0.21, +253.853,-63.27,6.02,0.05, +252.309,45.983,4.82,0.09, +252.854,1.216,5.51,0.05, +252.419,43.431,6.13,1.26, +253.427,-43.051,5.96,1.73, +252.663,29.807,5.72,1.6, +252.68,32.554,6.13,1.01, +253.507,-41.806,5.45,0.19, +253.495,-41.995,6.32,0.5, +253.499,-42.362,4.73,0.49, +253.549,-41.85,6.45,0.2, +252.65,41.897,6.29,1.08, +253.582,-41.82,6.59,0.21, +253.612,-42.479,5.88,0.64, +250.775,77.514,5.98,0.42, +253.02,14.974,6.52,-0.05, +253.355,-20.416,5.88,0.68, +252.939,24.656,5.04,1.25, +253.646,-42.361,3.62,1.37, +253.743,-41.151,5.77,0.15, +253.65,-30.587,6.35,0.21, +254.037,-50.675,6.33,-0.02, +254.12,-52.284,5.94,-0.08, +254.891,-69.268,5.79,-0.1, +253.544,-1.612,6.25,0.28, +253.668,-11.792,6.57,0.14, +253.242,31.702,5.32,0.29, +253.649,-6.154,5.25,1.08, +253.502,10.165,4.38,-0.08, +253.991,-33.507,6.37,1.71, +254.15,-40.824,6.15,0.26, +254.008,-16.806,6.37,0.92, +254.655,-55.99,3.13,1.6, +253.323,47.417,6,1.32, +253.73,20.959,5.41,0.97, +254.296,-33.259,5.48,1.59, +254.575,-50.641,5.55,0.02, +253.817,13.62,6.34,0.34, +254.2,-23.15,5.58,-0.02, +253.759,25.731,6.08,0.92, +253.843,18.433,5.35,1.41, +254.267,-19.54,6.27,0.07, +254.896,-53.161,4.06,1.45, +254.359,-10.963,6.19,1, +255.026,-54.597,5.65,0.19, +254.718,-37.621,6.09,0.19, +254.417,9.375,3.2,1.15, +255.113,-48.648,6,0.88, +254.383,13.884,6.37,0.94, +254.673,-14.87,6.59,0.4, +255.135,-45.452,6.65,1.8, +255.448,-58.958,6.11,-0.03, +254.379,25.353,6.28,0.9, +254.027,50.039,6.56,1.62, +254.426,24.381,6.32,1.1, +254.99,-25.092,5.86,1.62, +255.04,-24.989,5.75,0.41, +255.154,-35.934,5.97,1.16, +255.442,-51.131,6.45,0.27, +254.459,42.513,6.34,1.28, +255.787,-53.237,5.29,0.48, +254.007,65.135,4.89,0.48, +255.47,-32.144,5.03,-0.1, +255.123,6.584,6.59,0.23, +255.265,-4.222,4.82,1.48, +254.105,65.039,6.41,0.38, +256.103,-57.712,5.73,-0.1, +255.463,-18.886,6.26,1.38, +251.492,82.037,4.23,0.89, +255.924,-47.16,6.06,null, +255.073,30.926,3.92,-0.01, +255.242,22.632,5.65,1.33, +255.387,14.949,6.31,0.04, +255.962,-38.152,5.91,0.38, +255.29,27.196,6.55,0.41, +255.496,8.451,6.33,0.09, +254.84,56.689,6.03,1.16, +256.272,-45.502,6.28,0.07, +255.402,33.568,5.25,0.02, +255.578,25.506,5.75,1.02, +256.206,-34.123,4.87,0.26, +254.07,73.128,6.3,0.24, +255.572,31.885,6.36,1.13, +255.783,14.092,4.98,1.6, +256.453,-44.105,6.19,0.28, +255.793,14.511,6.52,0.76, +256.189,-20.495,6.3,-0.02, +255.914,13.605,5.93,0, +255.992,13.567,6.08,1.03, +255.97,19.691,6.35,1.52, +256.585,-37.227,5.98,0.07, +254.761,69.186,6.4,null, +255.876,35.414,6.69,null, +256.618,-35.451,6.13,0.5, +255.32,60.649,6.13,1, +256.32,0.702,6.01,0.58, +256.549,-21.565,6.3,0.13, +255.973,34.79,6.04,0.22, +256.172,19.599,6.17,-0.01, +256.385,-0.892,5.64,0.16, +256.722,-26.513,6.29,-0.04, +256.345,12.741,4.91,0.12, +257.526,-61.676,6.39,-0.04, +258.082,-70.721,6.22,1.06, +256.54,9.733,6.37,1.45, +256.555,10.454,6.37,0.87, +255.564,64.601,6.1,0.96, +256.72,-1.656,6.38,0.2, +256.271,43.812,6.43,0.09, +256.207,48.804,6.09,1.09, +256.575,22.084,5.56,1.3, +257.062,-17.609,5.99,1.01, +257.198,-30.404,5.97,0.25, +257.057,-1.079,6.06,0.08, +258.323,-67.197,5.89,1.06, +256.332,54.47,5.83,null, +256.332,54.47,5.8,0.48, +257.676,-44.557,5.08,0.86, +257.227,-3.883,6.36,0.69, +259.148,-74.533,6.25,-0.01, +257.912,-48.874,5.84,1.84, +257.45,-10.523,5.56,0.52, +256.945,40.516,6.34,0.03, +257.008,35.935,5.39,0.31, +257.595,-15.725,2.43,0.06, +255.418,75.297,6.21,null, +258.038,-43.239,3.33,0.41, +258.068,-39.507,5.67,0.04, +258.069,-38.822,6.3,1.05, +257.071,50.842,6.46,0, +258.555,-56.888,6.09,1.78, +257.691,12.467,6.57,0.08, +258.057,-25.255,6.54,-0.04, +258.104,-27.762,6.14,-0.04, +257.389,40.777,5.08,1.28, +258.245,-32.439,6.01,0.07, +257.938,7.895,6.33,1.04, +257.763,24.238,6.19,0.23, +258.615,-39.767,6.6,2.21, +258.116,10.585,5.33,1.59, +258.227,0.352,6.65,0.5, +257.628,52.409,6.29,0, +257.197,65.715,3.17,-0.12, +258.83,-33.548,5.53,-0.01, +258.9,-38.594,5.96,0.58, +257.918,49.747,6.04,null, +260.053,-70.046,6.53,0.6, +258.837,-26.603,5.11,0.86, +258.837,-26.601,5.07,0.85, +258.965,-30.211,6.21,-0.03, +258.835,-14.584,5.99,1.1, +259.09,-35.749,6.12,0.48, +258.662,14.39,3.48,1.44, +258.663,14.39,5.39,null, +259.802,-59.694,5.91,1.37, +259.265,-32.663,5.55,0.5, +258.758,24.839,3.14,0.08, +260.525,-70.123,5.41,-0.04, +259.059,2.186,6.17,0.22, +259.178,-6.245,6.09,1.1, +259.132,1.211,5.88,0.06, +259.153,-0.445,4.73,1.14, +259.763,-46.634,5.48,0.8, +260.498,-67.771,4.78,1.21, +258.762,36.809,3.16,1.44, +258.923,23.743,5.96,1.31, +259.7,-44.13,5.76,-0.05, +258.136,62.874,5.56,0.21, +259.585,-32.553,6.36,0.15, +259.876,-50.063,6.27,0.41, +259.503,-24.287,5.2,1.1, +259.502,-24.284,6.8,0.51, +259.738,-34.99,5.91,1.04, +259.852,-44.223,6.65,0.2, +259.58,-16.312,6.43,1.66, +262.864,-80.859,5.88,1.67, +259.4,23.091,6.45,null, +259.331,33.1,4.82,-0.17, +259.521,17.318,6,0.01, +259.654,10.864,5.03,1.55, +259.72,6.085,6.51,0.39, +259.972,-17.756,6.02,0.04, +259.418,37.292,4.65,0.05, +259.203,49.691,7.48,null, +260.729,-58.01,5.88,1.07, +259.998,-5.917,6.32,0.85, +261.005,-62.864,5.7,-0.14, +260.142,-19.333,6.52,0.58, +260.779,-56.525,5.8,1, +259.702,28.823,5.65,0.98, +259.597,38.811,5.94,1, +260.251,-21.113,4.39,0.39, +260.207,-12.847,4.33,0.03, +261.078,-60.674,5.77,-0.08, +259.123,60.671,6.32,1.09, +260.22,-10.696,6.46,0.33, +260.664,-37.805,6.41,0.64, +260.817,-47.468,5.25,-0.11, +260.079,18.057,5,1.62, +260.503,-24.999,3.27,-0.22, +260.658,-35.91,6.47,0.54, +260.041,25.538,5.38,0.03, +260.729,-37.221,5.93,1.08, +260.226,24.499,5.12,-0.03, +260.165,32.468,5.39,0.62, +260.84,-28.143,5.35,1.55, +261.054,-44.162,5.12,-0.06, +261.325,-55.53,2.85,1.46, +261.348,-56.377,3.34,-0.13, +260.389,16.731,6.35,1.61, +260.088,46.241,5.59,1.57, +260.714,-2.388,6.29,0.68, +260.38,28.758,6.35,0.7, +260.14,48.188,6.43,0.43, +261.5,-50.634,5.23,1.06, +260.432,39.974,5.51,0.68, +261.261,-34.696,6.16,0.02, +262.032,-63.036,6.24,-0.09, +261.175,-21.442,5.85,0.93, +261.155,-18.446,6.21,0.03, +261.276,-24.244,6.19,1.1, +261.735,-51.949,6.19,-0.03, +260.99,8.853,5.77,1.25, +261.715,-45.844,5.29,-0.07, +261.802,-50.63,5.92,0.08, +260.439,53.421,5.67,1.47, +261.027,22.96,5.74,0.21, +261.131,16.301,5.71,0.07, +261.141,15.606,6.35,-0.02, +261.99,-52.297,5.75,1.17, +260.92,37.147,5.47,null, +260.921,37.146,4.52,-0.03, +261.592,-24.175,4.17,0.28, +262.161,-55.17,5.94,1.11, +261.009,38.583,6.49,0.73, +261.491,-1.652,6.44,0.46, +261.73,-25.943,6.44,-0.06, +261.113,36.952,6.28,0.88, +261.839,-29.867,4.29,0.4, +261.658,-5.087,4.54,0.39, +261.906,-29.724,6,0, +261.477,16.918,5.98,1.62, +261.759,-12.512,6.21,0.51, +261.579,7.596,6.06,0.58, +261.629,4.14,4.34,1.5, +261.504,26.879,6.41,0.1, +262.775,-60.684,3.62,-0.1, +262.234,-36.778,6.02,1.11, +261.705,20.081,5.54,-0.13, +262.357,-38.517,6.39,0.09, +262.01,-8.208,6.37,0.58, +262.846,-56.921,5.95,-0.08, +261.693,34.696,5.94,-0.01, +262.207,0.331,5.44,0.22, +262.691,-37.296,2.69,-0.22, +261.684,48.26,5.85,0.12, +262.96,-49.876,2.95,-0.17, +261.422,60.048,5.65,0.03, +262.448,-5.92,6.37,0.93, +262.955,-46.036,6.03,0.83, +261.52,58.652,6.51,0.14, +262.599,-1.062,5.31,0.72, +262.948,-33.703,6.44,1.19, +261.251,67.306,6.43,0.76, +262.854,-23.963,4.81,0, +262.935,-26.27,6.05,-0.06, +262.593,11.925,6.39,0.06, +263.102,-34.28,6.17,0.35, +263.281,-41.174,5.84,0.06, +262.839,2.724,5.59,0.84, +263.895,-59.846,6.28,-0.08, +262.685,26.111,4.41,1.44, +263.402,-37.104,1.63,-0.22, +262.731,31.158,5.61,0.95, +259.904,80.136,5.72,1.5, +263.833,-53.353,6.1,0.02, +262.668,38.882,6.43,0.49, +263.063,11.93,6.42,-0.01, +262.957,28.408,5.62,0, +263.375,-5.745,5.62,0.18, +263.677,-32.582,5.7,0.04, +262.608,52.301,2.79,0.98, +263.915,-46.506,4.59,-0.03, +263.005,34.271,6.56,0.65, +263.929,-37.44,6.48,0.01, +262.683,57.876,6.4,null, +263.345,19.257,5.64,0.48, +263.414,16.317,5.69,1.01, +263.428,14.842,6.48,1.6, +263.693,-11.242,5.55,0.02, +263.827,-22.044,6.57,0.01, +264.137,-38.635,4.29,1.09, +264.363,-50.06,5.93,1.1, +263.653,9.587,5.81,0.02, +264.523,-54.5,5.25,0.2, +263.28,41.244,5.74,1.09, +263.613,16.504,6.4,null, +270.392,-85.215,6.45,0.44, +264.33,-42.998,1.87,0.4, +263.044,55.184,4.88,0.26, +263.067,55.173,4.87,0.28, +263.734,12.56,2.08,0.15, +264.362,-38.066,6.26,1.25, +264.535,-42.881,6.1,-0.06, +263.998,20.996,6.1,0.19, +263.382,57.559,6.17,0.59, +264.397,-15.399,3.54,0.26, +264.401,-15.571,5.94,0.37, +263.927,37.302,6.1,0.98, +264.033,28.185,6.38,null, +266.082,-72.221,6.49,0.48, +262.991,68.135,5.05,1.08, +264.461,-8.119,4.62,0.11, +264.54,-10.926,5.75,1.23, +265.098,-49.416,4.77,0.4, +264.153,30.785,6.02,0.16, +264.38,24.31,5.77,0.11, +265.318,-46.922,5.79,-0.01, +263.748,61.875,5.23,0.61, +264.157,48.586,5.37,1.15, +264.785,2.028,6.26,1.03, +265.516,-50.511,6.24,1.76, +264.741,13.329,6.12,0.56, +265.049,-2.152,6.19,1.67, +264.707,32.739,6.37,null, +265.622,-39.03,2.41,-0.22, +265.354,-12.875,4.26,0.08, +266.433,-64.724,3.62,1.19, +265.713,-36.946,5.54,1.55, +264.99,31.203,6.03,1.58, +266.036,-51.834,5.15,0.7, +266.233,-57.545,6.01,0.9, +265.779,-33.051,6.4,1.81, +264.866,46.006,3.8,-0.18, +265.296,15.178,6.34,0.03, +265.385,6.313,5.95,1.26, +265.172,31.288,6.28,1.05, +265.273,24.513,6.36,1.2, +265.824,-27.884,6.36,0.47, +265.495,15.952,5.52,0.38, +265.857,-21.683,4.87,0.47, +264.238,68.758,4.8,0.43, +266.175,-42.729,5.87,0.16, +264.165,69.571,6.42,0.58, +265.157,43.471,6.59,null, +265.953,-13.509,6.39,0.37, +265.946,-7.079,6.3,0.38, +265.618,24.564,5.52,1.46, +265.868,4.567,2.77,1.16, +265.842,14.295,6.24,0.42, +265.151,57.31,6.77,0.92, +264.287,72.456,5.86,1.01, +265.341,51.818,5.99,1.05, +265.84,24.328,5.71,0.65, +266.142,2.579,6.17,0.07, +266.148,2.579,6.56,null, +266.072,14.41,6.19,0.21, +265.773,44.084,6.34,1.54, +266.78,-38.112,6.43,-0.02, +267.159,-55.402,6.11,0.28, +266.896,-40.127,3.03,0.51, +266.89,-27.831,4.54,0.8, +266.94,-22.478,6.18,1.49, +265.997,53.802,5.75,0.01, +266.418,31.505,6.23,0, +266.903,-14.726,5.94,0.05, +267.116,-26.975,6.35,0.12, +267.618,-53.612,5.92,-0.08, +266.615,27.721,3.42,0.75, +267.898,-60.164,5.78,1, +266.474,38.881,6.52,1, +266.494,39.323,6.68,1.39, +266.783,17.697,5.72,0.01, +267.294,-31.703,4.83,-0.04, +266.973,2.707,3.75,0.04, +267.465,-37.043,3.21,1.17, +267.547,-40.091,4.81,0.26, +267.796,-53.131,6.09,0, +267.084,3.804,6.22,0.16, +268.327,-65.489,6.49,1.08, +269.424,-76.178,6.07,1.2, +265.485,72.149,4.58,0.42, +265.492,72.157,5.79,0.53, +267.103,20.566,5.69,0.94, +267.329,1.961,6.47,1.24, +267.935,-45.601,6.11,0.95, +266.784,47.612,6.43,0.11, +267.2,19.255,6.12,0.02, +267.887,-40.772,5.96,1.59, +267.205,25.623,5.12,1.16, +267.802,-30.557,6.66,0.04, +271.361,-81.486,6.35,1.5, +268.057,-34.799,5.9,-0.1, +268.082,-34.417,5.84,1.13, +268.22,-41.997,6.2,0.54, +267.681,11.947,6.17,1.25, +268.205,-34.114,6.06,1.23, +268.233,-35.019,6.45,0.02, +268.241,-35.624,6.03,0.34, +267.595,29.322,5.5,1.05, +267.702,22.316,5.98,null, +267.268,50.781,5.02,0.02, +268.332,-34.731,6.17,-0.03, +268.347,-34.895,5.6,1.14, +267.998,-1.237,6.35,1.12, +268.44,-34.786,6.38,0, +268.162,-6.144,6.21,1.4, +268.479,-34.752,5.96,-0.01, +268.492,-34.832,6.42,0.01, +267.514,48.394,6.68,-0.11, +267.994,15.326,6.46,null, +268.265,-10.9,6.18,1.11, +268.148,1.305,5.95,1.58, +268.613,-34.466,5.96,-0.01, +267.808,40.073,6.46,null, +268.309,6.101,5.77,0.42, +268.783,-36.476,6.06,0.08, +268.725,-24.887,6.2,0.04, +268.02,39.982,6.04,1.33, +268.004,46.643,6.38,1.09, +269.198,-44.342,4.86,1.21, +268.559,11.131,6.38,0.45, +268.325,40.008,5.16,1.18, +269.233,-40.306,6.43,1.43, +268.979,-18.802,6.52,0.05, +269.175,-28.065,5.8,0.21, +269.079,-15.812,5.89,0.05, +269.449,-41.716,4.88,1.65, +269.491,-39.137,6.29,0.01, +269.077,0.67,5.82,0.09, +268.855,26.05,5.46,0.34, +269.199,-4.082,5.47,1.16, +268.962,22.464,5.58,1.24, +268.382,56.873,3.75,1.18, +269.268,0.066,5.97,0.1, +269.233,6.488,6.29,0, +269.732,-36.858,5.74,0.9, +269.663,-28.759,6.01,-0.08, +269.772,-30.253,5.16,1.77, +269.773,-30.253,7.04,1.06, +269.063,37.251,3.86,1.35, +269.362,11.044,6.36,0.11, +269.31,23.996,6.3,0.63, +269.757,-9.774,3.34,0.99, +268.849,55.971,6.1,0.32, +269.948,-23.816,4.76,-0.04, +267.363,76.963,5.04,0.49, +269.202,45.351,6.02,1.64, +269.441,29.248,3.7,0.94, +270,-20.339,6.21,1.4, +269.152,51.489,2.23,1.52, +269.903,-4.821,5.87,1.56, +269.626,30.189,4.41,0.39, +270.451,-36.378,6.3,-0.03, +270.065,0.629,6.37,0.15, +270.121,-3.69,4.62,0.38, +269.676,36.288,6,0.94, +270.066,4.369,4.64,-0.03, +270.014,16.751,4.67,1.26, +270.161,2.932,3.97,0.02, +270.346,-17.157,6.28,1.8, +270.477,-22.781,5.77,0, +267.544,78.307,6.24,1.44, +269.718,45.476,6.48,-0.08, +270.22,6.268,6.34,-0.08, +270.115,19.506,6.5,-0.06, +283.695,-87.606,5.28,1.28, +270.238,15.093,6.26,0.69, +270.438,1.305,4.45,0.02, +270.713,-24.282,5.34,0.52, +268.797,72.005,5.45,0.3, +270.152,33.214,5.99,1.51, +270.757,-22.718,6.74,-0.05, +269.984,45.501,5.67,1.57, +270.375,21.595,5.18,0.95, +270.377,21.596,4.96,0.12, +272.815,-75.891,5.86,1.24, +270.693,-5.359,6.76,0.16, +270.771,-8.18,5.94,null, +270.77,-8.181,5.24,0.38, +268.611,75.171,6.36,0.98, +270.968,-24.361,5.97,0, +270.4,33.311,6.15,1.55, +270.596,20.834,5.28,-0.09, +271.21,-35.901,6,1.16, +271.951,-64.55,6.41,1.26, +270.625,22.923,6.21,-0.1, +271.255,-29.58,4.69,0.78, +271.658,-50.092,3.66,-0.08, +270.811,19.613,6.5,0.01, +272.145,-63.668,4.35,0.22, +271.452,-30.424,2.99,1, +271.155,1.919,6.14,0, +271.599,-36.02,5.95,0.62, +271.708,-43.425,5.77,0.22, +271.708,-43.425,5.77,null, +273.144,-73.672,5.85,0.46, +271.364,2.499,4.03,0.86, +270.788,48.464,6.21,0.03, +271.168,23.943,6.34,0.3, +271.531,-8.324,5.85,0.21, +271.563,-4.751,5.77,0.96, +271.531,-0.447,6.34,1.06, +271.43,12.004,7.04,0.3, +272.125,-45.767,6.15,-0.08, +272.49,-59.04,6.38,1.55, +272.609,-62.002,5.49,0.58, +271.798,-21.444,6.28,0.12, +271.376,21.647,6.15,1.23, +271.18,40.084,6.52,0.46, +271.508,22.219,5.06,1.58, +272.021,-28.457,4.57,0.94, +271.253,41.947,6.34,0.26, +271.457,32.231,5.71,1.16, +271.952,-17.154,5.52,1.11, +271.827,8.734,4.64,0.96, +271.838,9.564,3.73,0.12, +272.343,-36.672,6.58,-0.03, +272.225,-25.472,6.61,0.02, +273.6,-70.751,6.73,-0.03, +271.756,30.562,5.04,0.52, +271.952,13.071,6.63,0.07, +272.5,-32.72,6.43,1.02, +272.769,-47.513,6.07,1.2, +271.886,28.763,3.83,-0.03, +272.524,-30.729,5.53,0.97, +271.956,26.101,5.86,0.12, +271.956,26.098,5.9,0.14, +272.808,-45.954,4.53,1.01, +272.14,14.285,6.37,0.17, +272.431,-13.934,6.39,1.42, +272.773,-41.359,5.86,0.29, +272.19,20.814,4.36,-0.16, +272.73,-33.8,6.16,-0.14, +263.054,86.586,4.36,0.02, +271.723,50.823,6.29,1.04, +271.87,43.462,5,0.91, +271.776,49.711,6.32,null, +272.009,36.401,5.48,1.17, +272.22,20.045,5.1,0.15, +272.391,3.993,5.73,0.37, +273.568,-63.689,6.47,1.41, +272.475,3.12,5.69,0.47, +272.812,-19.842,6.36,0.16, +272.293,30.469,6.38,1.19, +272.668,3.324,5.51,1.19, +272.931,-23.701,4.98,1.05, +272.993,-28.901,6.51,-0.01, +272.536,16.477,6.09,null, +273.302,-41.336,5.47,-0.17, +273.92,-63.056,5.6,0.92, +272.406,38.458,6.4,0.87, +272.496,36.466,5.58,0.91, +274.504,-68.229,6.33,-0.04, +270.014,80.001,6.04,0.51, +270.038,80.004,5.68,0.5, +262.7,86.968,5.79,0.25, +273.441,-21.059,3.86,0.23, +273.292,-4.012,6.59,0.27, +272.938,33.447,5.88,0.01, +272.976,31.405,4.97,1.65, +273.566,-21.713,5.44,1.52, +272.632,54.287,5.95,0.94, +273.97,-44.207,5.46,0.96, +274.281,-56.023,5.33,-0.05, +273.319,21.88,6.12,1.47, +274.254,-51.068,6.06,-0.06, +273.804,-20.728,5.38,0.07, +273.804,-20.388,5.95,0.02, +273.177,41.147,6.36,1.03, +273.878,-18.661,6.07,0.2, +273.27,38.774,6.04,-0.08, +272.78,60.409,6.49,0, +274.918,-63.887,6.18,0.58, +275.9,-75.044,5.47,0.02, +273.992,-3.617,6.36,0.2, +273.683,29.207,6.56,0.54, +274.407,-36.762,3.11,1.56, +274.4,-34.107,6.16,-0.11, +274.023,2.378,6.01,1.59, +274.35,-28.652,6.19,0.18, +274.349,-28.289,6.4,0.54, +277.331,-80.233,5.95,1.16, +274.298,-17.374,5.75,1.58, +274.667,-42.288,6.3,-0.11, +274.221,-3.007,6,0.89, +274.369,-18.463,6.54,0.11, +274.513,-27.042,4.65,1.66, +274.351,-9.759,6.31,0.38, +274.27,1.006,6.63,0.31, +273.912,42.159,5.59,-0.1, +274.674,-25.605,6.51,1.34, +273.886,45.209,6.29,0.62, +274.68,-18.619,6.84,0.31, +273.671,56.588,6.37,0.34, +273.474,64.397,5.03,0.38, +274.512,13.777,6.3,-0.03, +274.532,18.131,5.99,0.03, +274.278,40.937,6.11,0.99, +274.532,23.297,6.63,null, +275.807,-61.494,4.36,1.48, +275.23,-37.488,6.45,1.31, +274.79,7.26,5.39,1.07, +275.037,-15.832,5.39,1.47, +275.249,-29.828,2.7,1.38, +274.795,24.446,5.27,1.53, +275.381,-24.915,6.25,1.84, +275.578,-38.657,5.1,1.49, +275.346,-18.86,5.75,0.94, +275.501,-28.43,6.16,0.26, +273.821,68.756,5.95,1.06, +275.217,3.377,4.86,0.91, +274.967,29.666,5.99,1.29, +275.075,21.961,4.95,1.59, +275.328,-2.899,3.26,0.94, +275.721,-36.669,5.34,-0.14, +276.381,-63.021,6.14,0.2, +274.965,36.064,4.33,1.17, +275.369,5.436,6.13,-0.04, +275.87,-36.238,5.55,1.02, +276.076,-44.11,5.25,-0.19, +275.238,29.859,5.63,0.21, +275.254,28.87,5.12,0.2, +275.759,-10.219,6.33,0.14, +276.043,-34.385,1.85,-0.03, +274.984,51.348,6.3,1.1, +275.801,-12.015,5.73,0.01, +275.536,23.285,5.41,1.6, +275.647,12.029,5.89,0.04, +275.915,-8.934,4.68,0.95, +275.704,17.827,5.25,1.27, +275.28,49.726,6.4,1.07, +275.762,16.688,6.22,1.2, +276.256,-30.757,5.6,1.14, +276.34,-35.992,6.15,1, +276.015,-3.583,6.38,0.34, +275.386,49.122,5.05,1.66, +276.175,-7.075,6.31,1.16, +276.478,-33.945,6.3,-0.08, +276.725,-48.117,5.46,0.84, +275.925,21.77,3.84,1.18, +276.338,-20.542,4.81,1.31, +276.743,-45.968,3.51,-0.17, +276.237,-1.579,6.15,0.37, +278.23,-73.966,5.89,0.98, +276.287,5.085,6.74,0.02, +275.989,38.739,6.36,null, +276.412,8.032,5.65,0.92, +276.057,39.507,5.12,0.03, +276.244,27.395,6.27,0.05, +277.208,-49.071,4.13,1.02, +276.481,14.967,6.37,0.01, +276.956,-29.816,5.92,0.52, +277.486,-57.523,5.76,0.98, +276.932,-26.635,6.31,0.26, +277.113,-38.996,5.64,0.13, +275.949,53.301,6.32,0.16, +280.559,-81.808,6.27,-0.13, +276.993,-25.422,2.81,1.04, +277.026,-26.757,6.27,0.16, +277.304,-43.846,6.36,0.9, +277.843,-62.278,4.64,-0.11, +276.495,29.829,5.83,0.06, +276.802,0.196,5.21,0.5, +276.985,-17.8,6.2,0.01, +275.19,71.338,4.22,-0.1, +277.32,-38.851,6.63,-0.02, +277.483,-47.22,5.7,1.26, +275.977,58.801,4.98,0.08, +276.67,26.449,6.53,-0.11, +276.96,3.749,6.07,1.62, +277.239,-26.582,6.5,0.11, +275.264,72.733,3.57,0.49, +276.995,6.194,5.73,-0.03, +277.342,-25.256,6.59,0.07, +277.3,-14.566,4.7,0.06, +277.763,-41.914,6.04,0.14, +277.445,-14.582,5.96,-0.04, +277.55,-18.729,5.66,1.06, +277.939,-45.915,4.96,-0.11, +277.421,-1.985,5.39,0.96, +277.77,-32.989,5.34,0.16, +277.984,-43.508,5.72,1.34, +278.008,-45.757,5.07,-0.14, +278.373,-58.709,6.44,0.68, +277.56,-5.724,6.28,0.95, +277.521,4.065,6.69,0.11, +278.089,-39.704,5.16,0.08, +277.399,23.866,5.9,-0.1, +277.86,-18.403,5.14,0, +276.496,65.564,4.82,1.19, +277.857,-10.796,5.72,0.24, +277.972,-19.125,6.68,1.13, +278.254,-39.892,6.22,0.42, +276.926,59.549,6.43,null, +277.673,20.815,6.5,0.79, +278.376,-42.312,4.64,1.01, +278.347,-38.72,6.32,null, +278.346,-38.726,5.65,-0.06, +278.63,-52.892,6.22,1.25, +277.768,16.929,5.77,0.04, +278.087,-14.644,6.37,0.22, +277.987,-1.003,5.94,0.16, +278.029,3.66,6.43,-0.04, +278.18,-14.866,5.5,1.97, +278.491,-33.017,5.28,-0.11, +278.473,-24.032,5.49,1.79, +278.413,-14.854,5.76,0.04, +278.345,-5.911,6.36,0.02, +282.991,-83.316,7.16,1.26, +278.637,-24.222,6.51,0.54, +278.193,23.617,5.84,1.46, +278.347,8.268,6.42,-0.03, +278.208,30.554,5.48,-0.1, +278.839,-20.841,6.48,0.28, +278.76,-10.977,5.14,0.92, +278.346,30.893,6.59,-0.12, +278.999,-29.699,6.37,1.27, +278.802,-8.244,3.85,1.33, +278.048,52.116,6.56,-0.07, +278.582,20.466,6.57,0.11, +278.698,10.892,6.4,0.08, +278.802,18.203,5.78,0, +278.144,57.046,4.77,0.61, +277.812,65.436,6.59,0.3, +278.877,23.606,5.61,1, +278.972,16.976,6.21,0.53, +280.759,-71.428,4.01,1.14, +278.486,52.354,5.36,1.09, +278.806,34.458,6.1,-0.11, +279.116,9.123,5.39,0.37, +279.81,-47.91,5.86,0.23, +279.163,6.672,5.45,0.37, +279.477,-21.398,5.94,0.19, +279.519,-14.005,6.47,0.21, +279.628,-23.505,5.81,0.02, +279.896,-43.186,5.37,1.68, +279.303,11.422,6.42,-0.02, +279.4,-0.309,5.75,0.07, +281.956,-77.867,6.39,0.6, +279.288,16.198,6.29,0.9, +280.594,-64.643,6.37,0.15, +279.155,33.469,5.42,-0.1, +279.722,-21.052,5.86,0.68, +279.599,-3.194,6.49,0.55, +279.58,-1.113,6.66,0.42, +279.235,38.784,0.03,0, +279.588,8.834,6.4,1.32, +279.19,43.222,6.2,0.24, +280.905,-64.551,5.78,0.96, +280.378,-48.095,6.49,1.22, +277.437,77.547,5.64,1.18, +280.002,-7.791,5.84,1.55, +279.904,5.264,6.38,0.78, +279.527,39.668,6.04,1.65, +279.965,7.358,6.28,0.96, +280.465,-23.833,6.23,0.23, +281.362,-64.871,4.79,0.2, +279.055,65.489,6.06,0.28, +280.427,-14.564,6.42,0.81, +281.298,-61.095,6.04,1.46, +280.008,30.849,6.36,null, +279.888,40.935,6.25,-0.06, +279.39,62.527,5.74,-0.06, +280.051,38.367,6.45,0.21, +280.568,-9.052,4.72,0.35, +280.945,-38.324,5.13,0.09, +281.349,-56.882,6.22,1.38, +280.73,-19.284,6.35,1.75, +280.65,-7.073,6.15,1, +276.038,83.175,6.17,0.05, +281.032,-36.719,6.32,0.98, +282.431,-72.995,6.06,0, +279.97,52.196,6,-0.07, +281.081,-35.642,4.87,-0.18, +280.422,31.618,6.41,-0.04, +281.238,-39.686,5.43,0.87, +280.88,-8.275,4.9,1.12, +280.534,34.747,6.47,-0.13, +280.964,-6.819,6.31,0.48, +281.207,-25.011,5.83,0.05, +282.158,-65.078,5.73,0.24, +281.746,-50.094,6.54,0.28, +281.328,-21.001,6.36,0.45, +281.414,-26.991,3.17,-0.11, +281.208,2.06,5.02,-0.06, +280.82,39.3,6.45,1.59, +280.235,62.75,6.09,0.98, +280.9,36.557,6.01,1.04, +280.965,31.927,5.7,0.34, +281.505,-19.606,6.42,1.65, +281.586,-22.392,5.37,1.64, +281.168,23.59,6.31,0.4, +281.368,5.5,5.83,0.04, +280.658,55.539,5.04,-0.09, +281.936,-40.406,5.24,0.78, +281.085,39.67,5.06,0.16, +281.085,39.671,6.02,null, +281.095,39.613,5.14,0.19, +281.095,39.613,5.37,null, +281.68,-10.125,5.71,0.59, +281.193,37.605,4.36,0.19, +281.201,37.594,5.73,0.28, +281.399,21.985,6.51,0.02, +281.619,-0.962,5.9,0.13, +280.871,53.872,6.11,0.12, +281.415,20.546,4.19,0.46, +282.21,-43.68,5.49,0.13, +281.794,-4.748,4.22,1.1, +281.519,26.662,4.83,1.2, +282.364,-45.81,5.81,0.9, +281.871,-5.705,5.2,1.47, +281.673,18.706,6.17,1.59, +282.396,-43.434,5.61,-0.08, +281.755,18.181,4.36,0.13, +282.322,-34.749,6.62,1.08, +281.231,54.897,6.23,0.82, +282.189,-18.601,6.47,null, +281.554,41.442,6.07,-0.13, +283.054,-62.187,4.22,-0.14, +281.076,61.048,5.99,0.96, +282.011,4.241,6.21,1.51, +282.398,-19.142,6.75,0.2, +282.417,-20.325,5.24,1.41, +282.068,23.514,6.15,0.49, +281.746,46.315,6.52,0.07, +281.99,31.757,6.06,-0.13, +280.793,70.793,6.44,null, +282.421,-5.913,5.99,1.6, +281.68,52.988,5.88,-0.09, +282.405,0.836,6.25,0.04, +282.222,19.329,5.88,0.03, +283.165,-52.107,5.17,0.94, +282.71,-22.162,6.61,0.38, +282.583,-7.908,6.8,3.09, +281.917,49.075,6.4,null, +282.31,25.046,6.59,null, +283.113,-46.595,5.54,1.63, +283.3,-51.931,6.31,-0.09, +282.744,-9.774,5.83,0.61, +283.26,-48.36,6.19,0.14, +282.067,48.768,6.12,0.21, +283.248,-46.586,6.19,0.03, +282.433,31.629,6.64,0.02, +282.69,10.976,6.55,null, +282.441,32.813,5.91,-0.16, +282.842,-3.318,6.1,0.3, +282.47,32.551,5.25,0.08, +283.119,-26.65,6.29,0.94, +283.154,-29.379,6.13,1.35, +283.174,-30.734,6.63,-0.05, +282.52,33.363,3.45,0, +284.238,-67.234,4.44,0.71, +283.635,-49.879,6.6,0.08, +283.008,13.966,6.14,0, +283.258,-9.576,6.34,0.2, +284.228,-62.801,6.48,1.53, +282.9,28.784,6.18,1.18, +283.068,21.425,5.48,-0.07, +283.5,-21.36,5.69,1.23, +282.902,36.539,6.09,-0.11, +283.543,-22.745,4.83,1.41, +281.445,74.086,5.27,0.92, +283.03,41.383,6.28,-0.09, +283.68,-15.603,5.1,0.17, +283.78,-22.671,4.99,1.33, +283.816,-26.297,2.02,-0.22, +284.07,-42.711,5.36,1, +282.896,52.975,5.51,0.84, +281.593,75.434,5.35,0.05, +282.8,59.388,4.66,1.19, +283.879,-16.377,5.79,0.36, +284.652,-60.201,5.14,1.37, +284.003,-23.174,5.93,-0.02, +284.169,-37.343,5.38,-0.14, +285.015,-66.653,6.01,0.97, +283.432,36.972,5.58,-0.15, +283.555,27.909,5.62,1.35, +283.687,22.645,4.59,0.78, +284.615,-52.939,4.87,-0.05, +283.865,6.615,5.57,1.04, +284.395,-39.823,6.31,0.2, +283.307,50.708,4.92,0.9, +283.56,41.226,7.3,null, +283.626,36.899,4.3,1.68, +283.719,33.969,6.02,0.91, +284.055,4.204,4.62,0.17, +284.061,4.202,4.98,0.2, +284.095,-1.8,6.22,-0.05, +284.107,2.471,6.15,0.97, +284.335,-20.656,5.08,0.13, +283.718,41.603,5.44,1.03, +284.016,17.995,6.63,-0.04, +284.026,18.105,5.69,1.09, +284.265,-5.846,4.83,1.08, +284.432,-21.107,3.51,1.18, +284.589,-31.036,6.12,1.35, +284.681,-37.107,4.87,0.41, +283.443,57.487,6.22,1.23, +283.696,48.86,5.77,0.43, +284.585,-24.877,6.62,0.08, +284.796,-39.535,6.49,-0.04, +283.834,43.946,4.04,1.59, +284.319,2.535,5.57,0, +284.602,-22.529,6.14,0.09, +281.409,79.943,6.39,0.28, +285.874,-68.755,5.88,0.56, +284.257,32.901,5.22,0.59, +284.599,6.24,6.21,0.46, +284.862,-18.567,6.37,0.99, +284.561,17.361,5.38,0.8, +284.849,-12.841,5.53,-0.04, +284.695,13.907,5.89,0.25, +285.103,-24.942,6.36,1.25, +285.263,-37.061,6.69,null, +285.268,-37.062,6.4,-0.03, +284.688,19.794,6.5,-0.04, +284.774,13.623,5.23,0.53, +284.823,10.141,6.75,0.25, +284.508,38.266,5.89,-0.17, +284.188,57.815,5.66,1.15, +284.906,15.068,4.02,1.08, +285.536,-41.91,6.23,0, +284.736,32.689,3.24,-0.05, +284.694,40.679,6.22,-0.16, +283.6,71.297,4.82,1.15, +284.94,26.231,5.27,1.24, +285.407,-22.696,6.24,1.66, +284.992,22.815,6.29,1.75, +284.368,58.225,6.46,0.08, +284.801,39.218,6.41,-0.17, +285.39,-15.282,6.32,1, +284.107,65.258,5.63,0.95, +285.779,-42.095,4.75,-0.02, +285.989,-51.019,5.93,1.24, +284.323,62.397,6.45,0.93, +285.004,32.146,4.93,1.47, +285.42,-5.739,4.02,1.09, +285.653,-29.88,2.6,0.08, +285.615,-24.847,5.65,1.23, +284.748,50.809,6.3,0.98, +285.824,-38.253,5.74,0.32, +285.273,19.31,6.39,null, +283.388,75.788,6.22,null, +285.344,20.834,6.69,0.02, +285.079,40.684,6.65,null, +285.323,26.291,5.69,-0.08, +285.766,-19.245,6.05,1.29, +285.23,33.802,6.01,0.97, +285.779,-19.103,6.37,0.48, +285.395,25.026,6.72,null, +285.456,22.264,6.4,0.16, +285.59,8.374,6.3,1.67, +285.727,-3.699,5.42,0, +285.057,50.534,5.38,-0.18, +286.105,-31.047,5.5,0.03, +285.451,33.621,6.39,-0.12, +286.583,-52.341,5.16,0.53, +285.884,1.819,5.83,0.18, +285.36,46.935,5.01,0.19, +285.719,19.661,6.09,1.34, +286.171,-21.742,3.77,1.01, +285.181,55.658,5.48,0.86, +286.045,3.331,6.73,0.13, +286.101,-5.685,6.9,4.19, +287.47,-68.425,5.33,0.91, +285.927,21.268,6.52,0.32, +286.732,-48.299,5.97,-0.02, +284.719,69.531,6.52,-0.15, +286.24,-4.031,5.42,1.12, +286.605,-37.063,4.93,0.52, +286.605,-37.063,4.99,0.52, +317.193,-88.956,5.47,0.27, +285.529,52.261,6.31,1, +286.422,-15.66,5.97,-0.02, +286.328,-1.513,6.53,0.35, +286.719,-37.81,6.16,0.72, +287.217,-55.72,6.49,1.1, +286.735,-27.671,3.32,1.19, +286.352,13.863,2.99,0.01, +286.562,-4.882,3.44,-0.09, +286.241,31.744,5.56,1.54, +286.243,30.733,6.06,1.55, +286.718,-16.229,6.03,-0.04, +286.879,-28.637,6.04,1.61, +286.785,-18.738,6.29,-0.04, +287.087,-40.497,4.59,1.09, +286.593,8.23,6.09,1.6, +286.446,29.922,6.31,1.65, +286.788,0.642,6.56,0.05, +287.061,-24.657,6.3,0.04, +284.488,77.051,6.54,0.38, +286.744,11.071,5.09,-0.07, +287.07,-19.29,5.54,-0.11, +286.66,24.251,5.77,0.09, +286.23,53.397,5.38,-0.01, +286.291,49.923,6.43,null, +286.657,28.629,5.55,0.29, +287.368,-37.904,4.11,0.04, +287.415,-39.828,6.46,1.06, +287.402,-36.165,6.56,-0.02, +287.491,-41.892,5.88,-0.08, +286.571,41.414,6.49,-0.15, +287.507,-39.341,4.11,1.2, +286.989,16.853,6.07,0.7, +286.857,32.502,5.23,0.34, +286.825,36.1,5.28,-0.11, +287.015,21.699,6.23,0.4, +287.441,-21.024,2.89,0.35, +287.45,-19.804,6.13,1.16, +287.25,6.073,5.22,0.35, +287.168,16.851,6.48,0.52, +287.758,-39.005,6.36,0.01, +287.465,-0.428,6.34,-0.04, +287.829,-29.502,6.3,-0.04, +288.192,-50.486,6.13,0.95, +287.268,34.601,6.74,0.63, +288.041,-37.583,6.57,1.02, +289.119,-69.191,6.27,0.17, +287.108,52.426,5.81,1.09, +288.117,-21.658,6.41,1.13, +288.307,-25.907,5.8,1.38, +289.3,-66.661,5.53,0.18, +288.17,-7.939,5.34,0.13, +287.879,26.736,6.36,0.41, +288.665,-45.193,5.92,0.9, +288.315,-12.282,5.51,1.44, +287.942,31.283,5.98,-0.07, +287.846,40.429,6.18,0.09, +288.143,16.846,6.73,-0.01, +288.153,21.554,5.93,0.03, +288.428,2.294,5.15,-0.07, +288.434,5.516,6.49,0.09, +289.09,-45.466,5.4,1.35, +287.441,65.979,6.25,0, +288.888,-24.179,6.25,0.54, +288.885,-25.257,4.85,0.56, +288.019,49.854,6.75,0.65, +288.021,49.856,6.57,0.65, +287.919,56.859,5.12,1.01, +289.137,-33.522,6.25,0.02, +289.539,-53.387,6.38,0.49, +288.44,39.146,4.39,-0.15, +288.761,20.203,6,0.88, +288.834,15.084,5.57,1.07, +288.823,21.232,5.64,0.11, +288.853,30.526,5.85,1.67, +289.129,4.835,5.59,0.08, +289.409,-18.953,4.96,1.02, +288.988,27.456,6.54,-0.06, +289.054,21.39,4.77,-0.05, +289.112,14.545,5.63,-0.02, +288.998,27.927,6.16,0.61, +288.48,57.705,4.99,1.16, +288.139,67.662,3.07,1, +288.83,50.071,6.27,null, +287.291,76.561,5.13,0.31, +289.451,2.032,6.19,0.02, +289.092,38.134,4.36,1.26, +289.454,11.595,5.28,0.2, +289.917,-35.421,5.59,-0.13, +289.75,-15.536,6.06,1.43, +289.432,23.026,5.43,0.02, +289.635,1.085,5.1,1.15, +291.023,-68.371,6.34,1.23, +289.712,0.339,6.41,1.05, +289.214,46.999,6,0.44, +290.109,-31.818,6.58,1.67, +289.503,31.022,6.68,0.08, +289.72,9.618,6.32,1.05, +289.702,19.611,6.58,0.03, +290.159,-22.402,5.58,0.27, +289.276,53.369,3.77,0.96, +290.713,-54.424,5.05,0.02, +290.375,-34.984,6.48,0.63, +289.914,12.375,5.53,0.26, +289.971,11.535,6.02,0.08, +290.137,-5.416,5.01,0.92, +290.54,-42.016,6.34,1.14, +289.766,33.389,6.6,-0.19, +290.149,-0.892,5.49,-0.04, +290.66,-44.459,4.01,-0.1, +289.755,37.445,6.22,-0.03, +290.405,-19.234,6.26,-0.1, +290.418,-17.847,3.93,0.22, +289.657,49.57,6.31,1.12, +290.432,-15.955,4.61,0.1, +290.805,-44.8,4.29,0.34, +290.462,-18.308,5.87,1.06, +289.912,37.331,6.31,0.68, +290.138,35.186,6.31,-0.12, +290.586,-8.201,6.31,-0.1, +290.972,-40.616,3.97,-0.1, +290.59,-0.252,5.83,1.09, +291.089,-43.723,6.17,1.6, +289.902,54.376,6.26,0.03, +288.888,73.356,4.45,1.25, +290.769,-7.4,6.32,1.45, +290.702,9.913,6.35,0.44, +291.125,-27.866,6.04,-0.13, +290.067,57.645,5.91,1.58, +290.784,14.921,6.64,0.27, +290.712,26.263,5.18,-0.12, +290.639,33.518,6.06,1.03, +291.267,-29.309,5.93,1.26, +289.942,64.391,6.52,-0.04, +291.319,-24.509,5.03,0.23, +291.374,-23.962,5.43,1.43, +290.945,20.264,6.4,0.01, +290.356,57.767,6.43,null, +291.257,-4.884,6.52,0.33, +291.34,-13.897,5.69,1.43, +290.892,33.222,6.37,0.81, +291.092,16.938,6.25,0.08, +291.95,-54.325,5.69,1.4, +290.167,65.715,4.59,0.02, +291.032,29.621,4.97,-0.1, +291.243,11.944,5.16,0.77, +291.093,28.088,6.53,-0.08, +291.58,-21.777,5.59,1.22, +291.025,36.452,6.36,null, +291.375,3.115,3.36,0.32, +291.546,-15.053,5.72,0.02, +291.603,-14.551,6.7,0.05, +291.735,-29.743,5.67,0, +290.849,50.271,6.51,-0.08, +290.985,43.388,5.84,0.92, +292.795,-68.434,5.96,1.64, +291.343,20.271,6.31,-0.02, +291.369,19.799,5.16,0.98, +291.358,24.913,6.19,0.51, +291.63,0.339,4.66,0.6, +292.469,-55.441,6.13,0.98, +291.6,13.024,5.74,0.47, +291.555,20.098,5.63,-0.01, +291.62,19.891,5.81,1.55, +292.35,-43.446,5.71,0.22, +292.644,-55.11,6.3,0.45, +259.237,89.038,6.38,1.57, +291.538,36.318,5.15,-0.12, +291.891,14.283,6.32,-0.06, +292.087,2.93,5.85,0.01, +292.468,-26.986,5.52,1.12, +292.561,-32.092,6.6,0.39, +292.254,1.95,5.8,0.08, +291.445,58.027,6.6,-0.15, +292.34,-7.044,6.61,1.1, +291.902,37.941,6.34,-0.14, +292.325,0.246,6.25,1.32, +292.176,24.665,4.44,1.5, +292.237,24.769,5.81,1.03, +292.342,14.596,5.56,1.05, +291.858,52.321,5.75,0, +292.337,20.28,6.33,-0.1, +292.725,-21.312,6.13,0.12, +293.224,-53.186,5.75,0.3, +292.544,2.904,6.09,1.82, +291.61,62.557,6.38,1.39, +292.666,-2.789,5.03,1.75, +292.638,3.444,6.05,0.01, +293.34,-45.272,5.61,-0.04, +292.68,27.96,3.08,1.13, +292.689,27.965,5.11,-0.1, +292.695,36.229,6.25,-0.04, +292.426,51.73,3.79,0.14, +292.841,26.617,5.87,0.93, +293.535,-40.035,5.89,0.09, +290.418,79.603,6.05,0.07, +293.804,-48.099,4.9,1.09, +288.783,83.463,6.53,0.1, +292.943,34.453,4.74,-0.14, +292.83,50.307,5.53,1.25, +292.807,55.732,6.37,1.16, +293.523,7.379,4.45,1.17, +293.78,-10.56,5.12,1.13, +294.007,-24.719,5.65,0.19, +293.874,-7.46,6.34,1.12, +293.89,-12.253,6.27,1.09, +294.608,-57.983,6.18,0.97, +294.967,-66.686,6.39,0.02, +293.402,38.762,6.61,0.03, +293.645,19.773,5,-0.09, +293.855,2.913,6.38,0.41, +294.109,-18.853,6.11,0.27, +294.177,-24.884,4.6,-0.07, +293.712,29.463,5.38,0.55, +293.423,49.263,5.96,1.64, +294.264,-18.231,5.64,1.26, +293.672,42.413,5.35,0.05, +294.033,11.15,6.68,null, +294.223,-7.027,4.95,0, +294.18,-1.286,4.36,-0.08, +293.292,60.159,6.29,1.57, +294.066,14.392,6.38,1.04, +292.751,70.989,6.07,1.41, +293.583,51.237,5.73,0.48, +294.035,22.586,6.32,-0.07, +293.666,48.165,6.67,0.24, +294.393,-14.302,5.47,0.5, +295.406,-65.854,6.09,1.55, +294.219,11.273,5.98,0.88, +293.951,36.944,6.05,-0.11, +294.157,20.333,7.14,1.32, +295.076,-54.417,6.26,1, +294.447,-4.647,5.46,0.43, +294.925,-45.278,6.25,0.28, +293.09,69.661,4.68,0.79, +294.323,16.463,5.66,1.02, +294.982,-39.433,6.61,0.23, +293.983,50.239,6.52,1.06, +294.289,29.334,6.43,-0.09, +294.236,38.384,6.5,-0.15, +294.158,44.695,5.17,0.93, +294.11,50.221,4.48,0.38, +294.956,-23.428,6.34,0.03, +294.704,3.382,6.35,0.04, +294.573,20.783,6.48,1.08, +295.03,-23.429,5.97,1.04, +294.798,5.398,5.17,0.03, +294.856,16.571,6.38,2.07, +295.181,-16.293,6.2,1.13, +294.486,49.284,6.47,0.99, +294.844,30.153,4.69,0.97, +295.024,18.014,4.37,0.78, +295.18,-0.621,5.67,0.11, +294.937,33.979,6.1,0.08, +295.118,20.477,6.5,0.39, +294.86,42.818,5.4,-0.08, +294.672,54.974,5.82,0.44, +295.165,23.717,6.64,0.01, +295.273,13.816,6.01,-0.08, +294.893,45.958,6.2,0.9, +295.262,17.476,4.37,1.05, +295.63,-16.124,5.06,0.33, +295.312,22.453,6.36,1.53, +295.907,-37.539,6.16,0.01, +295.172,43.078,6.16,1.56, +295.553,12.193,6.34,-0.03, +299.006,-81.35,6.39,1.4, +295.209,45.525,5.06,0.4, +295.89,-15.47,5.49,0.46, +295.642,11.827,5.27,0.57, +297.355,-72.503,5.41,0.22, +295.49,40.254,6.23,0.18, +295.054,60.507,6.51,0.22, +295.705,29.332,6.49,0.33, +295.686,32.427,5.94,0.11, +295.454,50.525,5.96,0.64, +295.467,50.518,6.2,0.66, +295.79,30.679,6.05,0, +295.929,25.772,5.49,0.93, +296.505,-31.909,5.52,0.02, +295.983,27.136,6.28,1.1, +295.517,55.463,6.48,1.61, +297.005,-56.363,5.35,0.2, +296.142,13.303,6.26,-0.03, +295.964,34.163,6.05,-0.06, +297.472,-66.813,6.45,1.48, +295.937,41.773,5.84,1.57, +296.59,-19.761,4.86,0.93, +296.468,-2.883,6.48,0.05, +296.069,37.354,4.89,0.95, +296.203,29.265,6.82,0.64, +296.416,7.613,5.91,0.18, +296.159,34.414,6.57,null, +297.23,-52.888,6.25,1.13, +295.811,58.016,6.22,0.56, +296.204,40.717,6.34,1.64, +297.755,-65.605,6.05,0.3, +296.565,10.613,2.72,1.52, +295.915,57.043,6.27,0.88, +297.59,-61.061,6.21,-0.14, +296.244,45.131,2.87,-0.03, +296.415,36.091,6.43,-0.03, +296.464,35.013,6.09,1.06, +297.687,-59.193,5.42,0.08, +297.013,-13.703,6.11,0.2, +296.665,25.134,6.62,0.27, +296.607,33.728,4.99,0.47, +296.646,32.889,6.18,1.13, +296.847,18.534,3.82,1.41, +297.557,-47.557,5.94,1.7, +297.298,-28.789,6.05,0.4, +296.953,25.384,5.95,0.99, +297.259,-10.871,6.04,1.24, +297.127,10.694,6.44,0.96, +296.866,38.408,5.77,-0.06, +297.175,11.816,5.72,null, +296.077,69.337,5.92,0.05, +297.245,19.142,5,0.1, +296.862,47.908,6.12,1.64, +298.157,-54.971,5.74,0.92, +298.163,-54.977,6.5,0.1, +297.183,35.311,6.53,0.44, +297.211,33.437,6.44,0.2, +297.961,-39.874,5.33,-0.06, +297.695,-10.764,5.39,0.38, +297.573,7.903,6.51,-0.1, +297.365,38.71,6.11,0.9, +297.477,28.441,6.38,-0.06, +297.696,8.868,0.77,0.22, +298.668,-61.171,6.24,0.16, +297.796,-2.461,6.13,1.57, +297.757,10.416,5.11,0.55, +298.05,-19.045,5.92,0.98, +297.824,9.63,6.25,0.1, +296.686,68.438,6.34,0.28, +297.641,32.914,4.23,1.82, +297.767,22.61,4.95,-0.14, +297.642,38.723,5.12,1.69, +297.655,40.6,5.69,-0.04, +297.696,37.826,6.06,1.7, +298.015,11.629,6.13,0.65, +298.118,1.006,3.9,0.89, +298.277,-14.603,6.48,0.14, +298.065,10.351,6.54,-0.01, +298.007,24.992,5.57,0.71, +298.091,18.672,6.23,0.01, +298.328,-3.114,5.65,0.2, +297.657,52.988,5.03,1.28, +297.831,47.377,6.2,0.36, +298.574,-23.941,6.18,1.02, +299.672,-69.164,5.75,0.23, +298.344,4.401,6.53,0.02, +298.815,-41.868,4.13,1.08, +297.043,70.268,3.83,0.89, +298.068,36.432,6.1,1.43, +298.534,-8.574,5.79,1.64, +298.771,-33.046,6.46,1.48, +299.24,-57.926,6.53,1.53, +299.276,-58.901,5.26,-0.01, +299.721,-68.762,6.39,0.16, +297.996,47.027,5.62,-0.07, +300.148,-72.911,3.96,-0.03, +298.03,47.932,5.91,-0.18, +298.365,24.08,4.58,-0.06, +298.657,-8.227,5.71,-0.08, +298.659,-8.237,6.49,-0.04, +298.562,8.461,4.71,1.05, +298.687,0.274,5.61,0.1, +298.96,-26.299,4.7,0.75, +298.668,7.14,6.15,0.03, +298.832,-6.734,6.51,0.39, +298.255,47.808,6.29,-0.11, +298.63,24.319,5.52,-0.02, +298.828,6.407,3.71,0.86, +300.096,-66.949,5.76,1.04, +299.237,-27.17,4.52,1.46, +299.422,-38.058,6.55,0.39, +298.701,36.996,5.76,0.75, +298.777,30.195,6.57,-0.08, +298.323,57.524,5.14,-0.13, +299.005,16.635,5.36,0.67, +299.06,11.424,5.28,-0.01, +298.398,59.709,6.06,0.02, +300.468,-66.944,5.31,1.22, +298.965,38.487,4.94,-0.08, +299.488,-15.491,5.02,0.05, +299.077,35.083,3.89,1.02, +299.251,20.998,6.48,0.07, +299.735,-30.538,6.28,1.05, +299.738,-26.196,4.83,0.9, +298.908,52.439,4.92,0.12, +299.184,36.251,6.02,-0.15, +300.105,-49.351,6.17,1.06, +299.439,16.789,5.53,-0.05, +299.934,-35.276,4.37,-0.15, +299.964,-34.698,5.3,0.17, +300.436,-59.376,5.13,1.53, +298.842,58.25,6.09,1.02, +300.11,-43.043,6.14,1.64, +299.308,40.368,5.45,-0.1, +300.066,-37.702,5.95,1, +300.201,-45.113,5.81,0.28, +300.085,-33.704,5.66,0.49, +299.188,50.902,6.43,-0.01, +298.981,58.846,4.96,1.59, +299.079,56.687,6.12,null, +299.689,19.492,3.47,1.57, +299.845,1.378,6.17,1.13, +299.948,-9.958,5.88,0.58, +299.484,42.261,6.43,null, +300.36,-40.814,6.29,0.11, +299.658,30.984,5.49,-0.06, +299.794,23.101,5.67,null, +299.643,38.106,6.32,-0.09, +300.35,-22.737,6.01,0.97, +301.387,-67.321,6.07,0.64, +300.014,17.517,5.37,1.67, +299.835,45.772,5.92,0.16, +299.98,37.043,5.19,-0.17, +300.245,8.558,5.91,1.52, +300.494,-13.637,5.71,0.08, +300.665,-27.71,4.58,1.65, +299.814,52.056,6.15,-0.19, +300.89,-37.941,4.77,1.41, +300.275,27.754,4.64,0.18, +299.62,63.534,5.96,0.09, +300.314,37.099,6.2,1.31, +300.436,24.8,5.88,-0.12, +300.506,24.938,5.22,0.36, +300.935,-22.596,6.45,0.5, +301.082,-32.056,4.99,1.21, +300.34,50.105,5.05,1.11, +301.005,-7.47,6.72,0.35, +300.818,18.501,5.96,1.42, +302.085,-66.355,6.45,1.58, +300.875,16.031,5.67,-0.1, +302.182,-66.182,3.56,0.76, +299.675,70.367,6.33,0.88, +301.097,-0.709,5.68,1.3, +301.384,-33,6.53,-0.08, +301.035,7.278,5.52,1.06, +300.906,29.897,5.71,0.73, +301.273,-11.599,6.34,0.52, +301.026,17.07,5.8,0.61, +301.847,-52.881,4.94,1.62, +301.896,-55.016,6.26,0.53, +301.36,-12.665,6.55,0.04, +300.369,64.821,5.27,1.56, +301.244,23.21,6.45,null, +301.15,32.219,5.64,0.54, +301.29,19.991,5.1,1.06, +301.36,15.5,6.34,1.64, +301.551,-4.078,6.47,1.16, +300.585,64.634,6.57,null, +301.291,38.478,6.19,0.64, +301.12,48.23,6.16,0.04, +300.705,67.874,4.51,1.32, +299.903,76.481,6.2,1.61, +301.278,51.839,6.14,1.6, +301.723,23.614,5.07,-0.18, +301.591,35.973,5.36,0.85, +302.008,-0.678,5.99,1.02, +302.78,-57.524,6.37,0.06, +301.34,56.341,6.21,0.43, +301.96,9.4,6.43,0.46, +302.13,-10.063,6.18,0.06, +301.186,63.891,6.26,0.1, +302.027,16.664,6.42,1.91, +301.558,53.166,5.85,0.39, +306.227,-83.311,6.17,0.2, +301.923,34.423,6.11,0.16, +302.16,10.726,6.31,-0.12, +301.387,61.996,5.39,1.18, +301.798,50.229,6.54,0.13, +302.8,-36.101,5.32,0.87, +301.222,68.027,6.28,1.65, +302.486,20.915,6.48,0.38, +303.1,-42.781,6.22,1.23, +303.612,-63.416,6.09,0.31, +302.357,36.84,4.93,-0.13, +302.792,-8.842,6.49,-0.15, +302.826,-0.821,3.23,-0.07, +302.64,26.904,5.52,0.08, +302.991,-12.392,6.34,1.21, +302.765,21.135,6.22,0.9, +303.579,-52.446,5.65,1.5, +303.108,-12.617,5.85,0.48, +302.838,21.876,6.26,-0.02, +303.147,0.868,6.27,0.02, +302.95,26.809,5.49,1.41, +303.003,26.479,5.92,-0.11, +303.308,-1.009,5.47,1.43, +303.016,47.737,6.92,-0.12, +303.823,-27.033,5.73,0.88, +303.419,24.239,6.56,0.29, +303.569,15.198,4.95,0.08, +303.961,-30.005,6.3,1.51, +303.132,51.464,6.01,1.14, +302.895,62.079,5.75,0.47, +304.099,-36.454,6.39,1.54, +304.11,-35.198,6.53,0.37, +303.325,46.816,4.83,0.09, +303.56,28.695,5.18,0.18, +304.763,-63.231,6.27,1.04, +303.428,43.379,6.14,1.5, +303.521,36.605,6.45,0, +303.408,46.741,3.79,1.28, +303.633,36.806,4.97,0.14, +303.59,42.104,6.71,-0.04, +304.095,-12.337,6.32,0.01, +303.816,25.592,4.78,-0.18, +303.35,56.568,4.3,0.11, +303.876,23.509,5.15,1.04, +303.365,60.641,5.79,1.47, +303.849,33.729,5.66,0.91, +303.942,27.814,4.52,1.26, +304.733,-47.711,6.31,1.67, +304.082,21.599,6.13,1.04, +304.412,-12.508,4.24,1.07, +304.506,-21.81,5.87,1, +304.825,-47.58,6.13,0.46, +302.222,77.711,4.39,-0.05, +303.868,47.714,3.98,1.52, +304.014,38.898,6.27,0.01, +304.196,24.671,5.32,0.95, +304.514,-12.545,3.57,0.94, +303.931,50.233,6.31,null, +304.002,45.579,5.91,0.38, +304.118,37.056,6.48,-0.09, +305.135,-55.051,6.27,1.59, +304.23,40.365,5.24,1.65, +304.381,29.148,6.22,1.01, +304.848,-19.119,5.28,1.4, +304.371,42.722,6.29,1.64, +304.447,38.033,4.81,0.42, +305.117,-29.197,6.3,0.17, +305.216,-35.674,6.46,1.31, +305.421,-49.999,6.27,0.55, +304.529,40.732,5.84,0.1, +304.93,-1.079,6.06,1.09, +304.619,37,5.58,0.06, +304.663,34.983,5.17,0.65, +304.872,13.217,6.21,1.63, +305.109,-6.362,6.63,1.55, +305.166,-12.759,4.76,-0.05, +305.001,13.548,5.95,0.31, +305.194,-14.785,6.1,-0.02, +305.253,-14.781,3.08,0.79, +304.707,46.323,6.45,-0.13, +305.085,14.569,6.13,0.91, +305.615,-42.05,5.59,0, +305.089,17.793,5.8,1.49, +304.603,55.397,5.76,0.11, +304.951,37.133,6.57,0, +304.38,66.854,5.93,0.58, +305.063,39.403,6.23,0.06, +308.323,-80.965,5.77,1.14, +304.984,46.838,6.5,-0.06, +305.972,-42.423,5.64,0.2, +305.753,-9.655,6.3,0.91, +305.514,24.446,5.54,-0.06, +306.412,-56.735,1.94,-0.2, +305.127,53.596,6.18,1.56, +304.903,62.258,5.72,-0.05, +305.718,14.551,6.17,0.51, +305.795,5.343,5.31,0.97, +305.513,41.131,6.39,1.07, +305.557,40.257,2.2,0.68, +305.656,31.265,6.09,1.35, +305.523,45.795,5.58,1.08, +306.45,-40.796,6.09,1.36, +305.689,41.026,5.93,1.6, +306.362,-28.663,5.85,1.1, +305.731,42.983,6.2,0.95, +306.156,1.069,6.15,-0.04, +305.025,68.88,5.55,1.59, +305.298,63.98,5.69,1.56, +305.965,32.19,4.43,1.33, +305.935,37.476,5.9,-0.2, +306.721,-37.403,6.25,0.97, +306.427,-2.8,6.11,1.19, +306.433,10.056,6.33,1.56, +306.419,21.41,5.66,0.93, +309.578,-81.289,5.91,1.71, +306.505,19.865,6.41,1.02, +306.83,-18.212,5.25,-0.07, +306.135,53.552,6.51,0.01, +306.597,17.316,6.22,1.01, +307.195,-35.596,6.1,-0.11, +306.271,59.6,6.44,0.09, +307.182,-15.742,6.41,0.99, +307.031,8.438,6.25,1.08, +307.104,-3.358,6.13,-0.06, +307.215,-17.814,4.78,0.38, +306.782,34.329,6.39,0.48, +307.07,2.937,6.21,0.9, +307.38,-22.392,6.16,1.55, +306.893,38.44,5.62,0.06, +306.598,56.639,6.36,0, +306.76,49.383,5.69,0.26, +307.469,-18.587,6.74,0.22, +307.475,-18.583,5.94,0.08, +307.413,-2.886,4.91,1.15, +307.737,-29.112,6.39,0.21, +307.338,20.088,6.55,0.23, +307.349,30.369,4.01,0.4, +307.335,36.455,5.88,0.52, +307.575,10.896,6.08,-0.03, +307.768,-15.056,6.12,0.79, +308.965,-69.611,6.11,1.29, +307.742,20.606,6.18,0.15, +307.804,11.261,7.11,0.03, +307.5,45.929,6.41,1.13, +308.218,-24.944,6.36,-0.01, +307.363,56.068,5.91,-0.04, +307.515,48.952,4.95,-0.09, +308.099,-9.853,5.65,0.69, +308.48,-44.516,5.11,1.01, +307.747,36.936,6.19,1.01, +308.895,-60.582,4.76,0.28, +307.993,25.804,6.34,0.26, +307.395,62.994,4.22,0.2, +307.828,49.22,5.44,1.55, +308.303,11.303,4.03,-0.13, +308.731,-38.09,6.44,0.26, +307.838,52.31,6.18,1.01, +308.549,-13.721,6.13,0.54, +308.698,-30.474,6.4,-0.08, +308.473,10.06,6.56,0.08, +308.488,13.027,5.38,0.07, +309.397,-61.53,4.88,0.43, +307.944,56.78,6.14,1.43, +308.218,43.192,6.6,-0.11, +308.542,20.985,6.48,-0.14, +310.512,-76.181,6,0.44, +310.432,-75.351,6.55,0.62, +308.884,-16.526,6.19,0.2, +308.476,35.251,4.61,1.6, +308.452,41.772,6.49,1, +307.503,72.532,6.27,1.35, +309.392,-47.291,3.11,1, +308.479,46.694,5.78,-0.16, +308.827,14.674,4.68,0.11, +309.964,-62.908,6.22,1.1, +309.182,-2.55,4.89,1.6, +309.035,25.883,6.41,0.21, +310.011,-60.549,5.12,0.53, +308.71,51.854,6.11,0.41, +309.467,-25.109,6.36,0.33, +309.326,0.097,6.22,-0.08, +307.877,74.955,5.2,0.07, +309.27,26.462,5.59,-0.07, +310.488,-66.761,5.15,-0.06, +309.388,14.595,3.63,0.44, +309.455,11.378,5.43,0.06, +309.585,-1.105,4.32,0.95, +309.383,31.572,6.32,-0.09, +309.477,18.269,6.25,1.48, +309.386,31.522,6.49,0.34, +309.348,38.329,6.2,0.99, +309.818,-14.955,5.22,-0.12, +309.805,-2.413,6.22,-0.1, +309.63,21.201,4.82,-0.02, +309.683,13.315,5.72,1.53, +310.083,-33.432,5.47,1.12, +309.633,24.116,5.04,-0.14, +309.646,23.681,5.91,0.98, +309.782,10.086,5.05,0.72, +309.854,0.486,5.16,1.06, +310.049,-23.774,6.37,0.72, +309.771,15.838,5.97,-0.14, +310.013,-18.139,5.1,1.66, +307.061,81.423,5.46,1.02, +310.15,-26.645,6.51,0.57, +309.794,21.817,6.08,-0.06, +309.748,30.334,5.68,1.09, +310.135,-16.124,5.8,1, +309.91,15.912,3.77,-0.06, +309.966,11.25,6.42,0.55, +307.365,81.091,5.96,0.92, +310.349,-31.598,5.76,1.53, +310.35,-26,6.28,1.22, +309.889,40.579,6.06,-0.16, +309.846,45.667,6.58,-0.06, +311.24,-66.203,3.42,0.16, +310.188,19.935,6.45,0.63, +310.721,-39.559,6.29,1.08, +309.751,56.005,6.48,null, +310.151,29.805,6.08,0.14, +310.318,14.583,5.99,1.24, +310.013,43.459,5.95,1.19, +311.01,-51.921,4.51,0.27, +310.261,32.307,5.51,0.88, +310.252,39.082,6.51,-0.12, +310.493,17.521,6.22,0.94, +310.358,45.28,1.25,0.09, +310.075,60.505,6.01,0.46, +310.485,41.717,5.67,-0.12, +310.593,35.456,6.66,-0.16, +310.865,15.074,4.43,0.32, +310.552,50.34,5.39,-0.1, +307.263,83.626,6.19,0.13, +311.305,-27.247,6.5,0.94, +310.851,35.588,6.47,1.23, +311.584,-39.199,5.5,-0.1, +312.325,-68.776,5.41,1.12, +311.578,-36.12,6.49,0.39, +311.524,-25.271,4.14,0.43, +311.542,-21.514,5.93,0.04, +310.665,60.601,6.15,0.01, +311.219,25.271,4.91,1.18, +310.806,57.114,6.32,0.33, +311.368,18.09,6.38,1.68, +311.415,30.72,4.22,1.05, +312.122,-43.989,5.11,0.35, +311.092,56.488,5.78,1.67, +310.796,66.658,5.58,0.22, +311.765,-2.487,6.27,1.55, +311.661,16.124,5.14,0.49, +311.665,16.124,4.27,1.04, +311.553,33.97,2.46,1.03, +311.919,-9.496,3.77,0, +311.934,-5.028,4.42,1.65, +312.371,-46.227,4.89,1.52, +311.951,6.008,5.58,-0.02, +311.949,3.307,6.4,-0.02, +311.338,57.58,4.51,0.54, +311.795,34.374,4.92,1.32, +311.323,61.839,3.43,0.92, +311.66,46.532,6.3,0.03, +312.91,-62.429,6.28,0.15, +312.912,-62.429,6.59,0.17, +312.323,-25.781,5.86,-0.07, +311.588,52.995,6.33,1.12, +311.852,36.491,4.53,-0.11, +312.335,-18.036,6.21,1.42, +312.492,-33.78,4.9,1, +311.837,45.58,6.4,1.61, +311.138,69.752,6.41,null, +312.875,-51.608,5.05,1.13, +311.955,47.832,5.57,1.46, +312.696,-32.054,6.36,1.54, +312.753,-37.913,5.52,1.38, +311.97,52.407,6.27,0.89, +312.408,12.545,5.98,0.43, +312.451,7.864,6.33,0.02, +312.496,5.545,6.21,0.98, +312.674,-12.545,5.88,1.07, +312.235,46.114,4.84,0.41, +312.178,51.911,6.29,-0.07, +312.995,-33.177,6.04,0.03, +312.955,-26.919,4.11,1.64, +312.654,18.051,6.52,0.04, +312.857,-5.626,5.99,0.46, +312.478,46.661,6.33,-0.07, +312.52,44.059,5.04,0.2, +313.036,-5.507,5.55,-0.08, +313.703,-58.454,3.65,1.25, +313.418,-39.81,5.35,1.32, +312.868,28.251,5.77,0.72, +313.255,-23.783,6.33,0.88, +313.163,-8.983,4.73,0.32, +313.354,-30.719,6.35,1.09, +313.646,-50.728,6.24,-0.12, +312.323,64.042,6.45,0.07, +313.273,-11.574,6.38,0.67, +313.032,27.097,4.59,0.83, +313.001,32.849,6.44,-0.15, +313.528,-27.926,6.41,1.6, +313.493,-6.89,6.44,0.37, +313.281,29.649,6.34,1.09, +313.7,-17.923,5.78,1.12, +313.312,44.387,4.78,-0.14, +310.647,82.531,5.75,0, +313.328,45.182,5.45,1.1, +313.36,42.41,6.66,-0.04, +313.475,33.438,5.47,1.52, +313.784,-1.373,6.55,0.29, +313.593,28.522,6.56,-0.13, +313.64,28.058,5.01,1.48, +313.593,40.703,6.7,-0.07, +313.92,4.533,6.05,0.82, +313.903,13.721,5.17,1.12, +313.911,12.569,5.58,0.12, +314.197,-26.296,5.7,0.5, +314.076,-3.561,6.57,-0.1, +314.225,-9.697,5.51,1.47, +311.889,80.552,5.39,1.12, +314.294,0.464,6.05,1.22, +314.419,-16.032,5.87,0.18, +315.367,-68.21,6.37,0.1, +313.958,47.418,5.67,0.47, +316.179,-77.024,5.15,0.49, +314.054,51.075,6.63,-0.1, +314.145,44.925,5.96,0.05, +314.675,-14.483,6.01,0.23, +314.106,50.729,5.81,0.3, +314.108,49.196,5.9,1.04, +315.09,-51.265,5.76,0.47, +314.293,41.167,3.94,0.02, +314.071,56.888,6.23,-0.18, +314.608,10.839,5.48,0.93, +314.999,-36.13,6.11,0.39, +314.568,22.326,5.31,1.4, +314.9,-19.035,6.25,-0.13, +314.768,4.294,5.23,0.46, +314.581,44.472,5.55,0.97, +314.628,41.94,6.16,-0.08, +314.962,16.824,6.66,0.38, +315.016,7.516,5.99,0.26, +315.323,-32.258,4.67,0.89, +314.625,50.462,5.61,-0.15, +315.141,-4.73,6.21,0.63, +315.553,-43.002,6.64,0.68, +313.685,75.926,6.05,0.93, +315.115,19.329,5.65,1.61, +315.439,-26.881,6.05,0.06, +315.613,-38.531,5.94,1.11, +314.957,47.521,4.74,-0.05, +315.742,-38.632,5.3,0.41, +314.856,59.439,5.51,1.4, +315.793,-27.732,6.25,0.95, +315.304,36.026,5.97,0.98, +317.2,-76.212,6.58,1.23, +315.295,46.156,5.37,-0.21, +315.748,-0.925,6.5,-0.1, +316.309,-54.727,5.16,1.21, +315.763,1.532,6.25,0.48, +315.758,14.73,6.31,1.67, +316.019,-5.823,7.31,null, +316.02,-5.823,5.89,0.68, +316.101,-19.855,4.84,0.17, +317.343,-73.173,5.68,0.59, +315.6,44.791,6.19,1.69, +315.77,38.658,6.07,1.01, +315.702,45.849,6.48,-0.15, +315.538,56.67,5.83,-0.07, +316.145,5.503,5.61,1.65, +316.174,2.942,6.42,1.05, +316.189,2.27,6.33,0.97, +316.606,-41.386,5.53,1.35, +316.505,-30.125,5.68,1.03, +315.967,41.628,6.33,0.38, +315.858,50.352,6.37,0.98, +317.137,-63.929,5.76,1.18, +315.93,46.862,6.32,0.25, +316.487,-17.233,4.07,-0.01, +316.603,-32.342,5.18,1.1, +316.361,5.958,5.94,0.54, +315.948,53.286,5.9,0.99, +316.233,43.928,3.72,1.65, +316.782,-25.006,4.5,1.61, +317.836,-72.544,6.2,1.08, +316.598,26.924,6.12,1.05, +316.936,-17.455,6.17,0.02, +316.626,31.185,5.82,0.56, +316.728,38.746,5.21,1.18, +316.73,38.743,6.03,1.37, +317.14,-21.194,5.3,0.01, +316.89,15.659,6.34,1.01, +316.65,47.648,4.55,1.57, +317.118,6.989,6.15,1.66, +317.387,-20.556,6.25,0.38, +318.335,-70.126,5.02,1.58, +317.399,-11.372,4.51,0.94, +317.162,30.206,5.59,-0.1, +317.493,2.943,6.45,0.37, +317.695,-9.354,6.27,1.16, +317.585,10.132,4.69,0.26, +317.63,10.049,6.07,0.02, +316.597,71.432,5.87,0.4, +318.057,-40.269,5.83,0.45, +317.633,22.455,6.68,0.03, +317.922,-14.472,6.48,0.28, +317.494,45.503,6.63,-0.16, +318.263,-39.425,5.26,0.44, +317.766,36.299,6.54,-0.14, +317.565,53.563,5.73,-0.12, +317.629,47.692,6.46,-0.01, +318.329,-36.424,5.96,0.98, +317.37,63.296,6.54,-0.13, +318.322,-27.619,5.42,1.42, +319.567,-75.347,6.63,0.03, +316.372,78.126,5.91,-0.07, +317.383,68.49,7.33,1.49, +318.941,-53.263,5.75,0.19, +318.234,30.227,3.2,0.99, +318.37,15.983,6.27,0.24, +318.811,-40.506,6.21,1.14, +318.57,-10.605,6.77,-0.08, +317.951,59.986,5.64,0.11, +318.36,36.634,6.05,0.21, +318.654,0.092,6.38,1.61, +318.778,-17.345,6.04,0.96, +318.62,10.007,4.49,0.5, +318.945,-36.211,6.12,1.37, +319.501,-64.682,6.31,-0.07, +318.543,29.901,6.17,1.09, +318.908,-20.652,5.24,1.17, +318.937,-15.171,5.28,1.64, +323.018,-84.81,6.45,1.4, +318.698,38.046,3.72,0.39, +318.956,5.248,3.92,0.53, +319.165,-1.608,6.48,0.98, +318.427,64.404,6.39,0.6, +319.306,-13.279,6.4,0.04, +319.485,-32.172,4.71,0.06, +318.903,47.974,6.46,-0.15, +319.489,-17.985,5.43,-0.12, +319.123,42.251,6.43,null, +319.565,-17.462,7.05,0.34, +319.967,-53.45,4.39,0.19, +319.546,-4.519,5.82,-0.13, +319.727,-28.766,6.4,0.97, +319.354,39.395,4.23,0.12, +319.347,42.683,6.19,-0.11, +320.04,-45.022,6,2.33, +319.48,34.897,4.43,-0.11, +319.258,53.998,6.13,0.05, +319.941,-26.353,6.56,0.73, +319.717,11.203,5.96,1.65, +319.31,55.798,5.98,1.45, +320.19,-40.81,4.82,0.02, +320.318,-49.938,6.38,1.32, +319.328,58.612,6.42,0.2, +319.613,43.946,5,-0.01, +319.73,41.041,6.15,0.3, +321.07,-69.734,6.41,2.82, +319.843,38.238,5.83,0.5, +320.058,22.026,6.29,-0.08, +321.325,-71.799,6.09,1.26, +320.268,-4.56,5.87,0.92, +319.87,49.51,5.76,-0.15, +319.645,62.586,2.44,0.22, +320.27,7.354,5.82,1.66, +319.816,58.624,5.66,1.38, +320.268,23.856,5.57,1.05, +320.209,32.453,5.68,1.08, +320.562,-16.834,4.28,0.9, +318.926,77.012,5.95,1.5, +320.342,32.613,6.04,0.03, +320.256,40.346,6.4,0.53, +319.843,64.872,5.18,-0.04, +320.752,-22.669,5.6,1.63, +320.522,19.804,4.08,1.11, +318.34,81.231,6.15,0.09, +320.735,-9.319,5.99,1.54, +323.477,-82.683,6.38,0.13, +321.087,-46.615,6.31,0.2, +320.723,6.811,5.16,0.05, +320.14,60.757,6.11,1, +321.103,-41.007,5.77,-0.05, +321.611,-65.366,4.22,0.49, +320.675,30.31,6.05,1.08, +321.04,-20.852,5.41,1.16, +321.033,-22.747,6.38,1.02, +320.502,49.389,5.69,1.1, +320.695,38.634,6.63,0.01, +321.048,-12.878,5.49,0.29, +321.564,-54.661,6.12,0.34, +320.846,37.407,6.58,null, +320.995,24.274,5.71,0.32, +321.102,10.174,6.35,0.47, +321.215,-3.398,6.36,0.33, +320.951,37.351,6.47,null, +321.031,25.312,6.15,null, +321.305,-9.749,5.7,0.2, +322.187,-69.505,5.34,1.55, +321.096,24.529,6.32,1.04, +321.142,26.174,5.68,0.31, +321.321,-3.557,5.49,1.46, +321.595,-37.829,5.63,1.19, +323.336,-80.039,6.47,0.04, +321.757,-42.548,5.51,0.39, +321.465,0.534,6.46,0.16, +321.667,-22.411,3.74,1, +321.617,1.103,6.13,0.44, +321.231,49.323,6.58,-0.03, +321.812,-21.196,5.78,1.44, +321.332,46.714,5.6,0.32, +321.446,36.668,5.94,-0.08, +321.611,19.376,6.07,0.22, +322.251,-53.706,6.39,1.14, +322.058,-11.568,6.61,0.49, +322.181,-21.807,4.51,0.91, +322.266,-31.239,6.5,0.03, +321.839,37.117,5.31,-0.14, +321.715,48.835,5.31,0.07, +321.917,27.609,5.41,0.04, +321.688,52.899,6.03,-0.12, +322.103,8.196,6.4,1.64, +322.035,32.225,5.8,0.32, +322.25,17.906,6.44,1.39, +322.498,-19.148,6.57,0.41, +322.25,22.179,5.93,1.53, +321.855,59.75,6.1,1.75, +322.487,23.639,4.57,1.62, +322.22,55.419,6.12,0.14, +321.942,66.809,5.44,-0.11, +322.363,46.541,5.24,0.97, +323.025,-41.179,5.29,1.1, +323.061,-33.945,5.97,0.05, +322.79,12.138,6.08,-0.05, +322.89,-5.571,2.91,0.83, +323.324,-52.738,6.41,1.48, +324.734,-79.443,6.18,0.46, +323.139,-24.591,6.43,0.2, +323.348,-44.849,5.57,1.04, +322.585,52.958,6.02,0.08, +322.165,70.561,3.23,-0.22, +321.207,80.525,5.97,0.92, +323.113,23.394,6.7,-0.09, +323.571,-42.925,6.32,1.09, +322.865,52.62,6.16,0.9, +322.747,60.459,5.53,0.12, +323.721,-29.696,6.41,-0.11, +323.713,-20.084,5.69,0.4, +323.236,49.978,5.75,-0.03, +323.816,-23.454,6.4,1.1, +323.325,45.854,6.25,1.81, +324.512,-64.824,6.2,0.03, +323.642,22.755,6.47,0.51, +323.823,-3.983,5.77,1.11, +323.495,45.592,4.02,0.89, +324.046,-26.171,5.73,0.22, +325.369,-77.39,3.76,1, +323.694,38.534,4.9,1.08, +324.204,-33.048,6.11,0.22, +323.829,28.197,6.31,0.35, +323.863,24.452,6.11,null, +323.615,51.698,6.15,0.02, +324.27,-19.466,4.68,-0.17, +324.058,30.056,6.36,null, +324.01,45.375,5.53,1.58, +324.391,-0.39,6.25,0.06, +324.438,-7.854,4.69,0.17, +324.432,6.618,6.18,0.02, +324.238,40.414,5.01,0.18, +324.439,19.319,5.45,0.3, +324.775,-33.679,6.28,0.92, +324.999,-52.359,6.21,0.6, +324.633,5.772,5.67,0.25, +325.14,-55.738,6.33,1.06, +324.366,44.697,6.2,0.19, +324.867,-10.577,6.08,1.03, +324.688,25.499,6.16,1.02, +324.411,54.042,6.15,0.99, +324.755,20.265,5.85,0.32, +324.889,2.244,5.1,1.04, +325.023,-16.662,3.68,0.32, +324.48,62.082,4.73,0.3, +327.726,-82.719,5.29,0.75, +324.74,57.489,5.62,0.21, +325.442,-25.102,6.49,1.19, +325.387,-14.047,5.18,0.65, +325.046,43.274,5.11,1.6, +325.503,-23.263,5.24,0.95, +326.37,-71.009,6.01,-0.1, +325.542,1.285,5.67,1.44, +325.665,-18.866,4.73,0.88, +325.565,5.68,5.3,1.64, +325.18,54.872,6.2,1.16, +325.393,40.805,6.11,0.07, +325.638,10.825,6.09,-0.11, +325.806,-19.621,6.22,0.27, +341.369,-88.818,6.57,0.28, +325.768,-14.4,5.88,0.25, +325.505,35.51,6.07,2.52, +325.535,45.766,6.17,1.55, +326.123,-38.552,6.3,1.12, +325.595,41.077,5.69,0.01, +325.524,51.19,4.67,-0.12, +326.004,-14.749,5.99,0.21, +326.329,-49.499,6.45,1.15, +325.662,49.6,6.09,1, +326.237,-33.026,4.34,-0.05, +325.777,41.155,5.49,1.59, +325.857,38.284,5.65,0, +326.047,9.875,2.39,1.53, +326.036,28.743,4.73,0.48, +326.035,28.743,6.08,0.36, +326.251,-9.082,5.09,1.11, +325.689,59.271,6.08,1.34, +326.128,17.35,4.34,1.17, +326.13,14.772,5.94,0.59, +326.161,25.645,4.13,0.43, +325.877,58.78,4.08,2.35, +325.48,71.311,4.56,1.1, +326.568,-9.276,6,1.66, +326.634,-11.366,5.58,-0.01, +326.435,35.857,6.4,1, +326.518,22.949,5.29,1.41, +326.76,-16.127,2.87,0.29, +327.066,-47.304,5.58,0.6, +325.767,72.32,5.17,1.05, +326.6,25.563,6.28,1.21, +326.934,-30.898,5.01,0.04, +326.222,62.461,5.95,0.31, +326.808,2.686,5.64,0, +326.569,43.061,6.54,0.28, +326.77,17.194,6.21,0.34, +327.5,-64.713,5.62,1.02, +326.909,-5.917,6.17,0.22, +327.696,-69.629,5.53,1.37, +326.362,61.121,4.29,0.52, +326.698,49.309,4.23,-0.12, +327.035,36.581,6.47,null, +327.421,-12.723,6.31,0.22, +327.123,38.649,6.12,-0.08, +326.855,60.693,5.52,1.52, +327.555,-16.845,6.38,1.42, +327.362,20.463,6.29,-0.1, +326.754,70.151,6.29,null, +327.461,30.174,5.04,-0.03, +327.536,17.286,5.29,0.37, +327.417,41.149,6.48,0.42, +327.924,-18.623,6.16,0.36, +327.329,61.273,6.17,1.67, +327.893,19.827,5.77,-0.1, +327.77,39.537,6.17,-0.08, +328.076,21.273,6.89,null, +328.324,-13.552,5.08,0.37, +328.798,-61.886,5.9,0.39, +328.482,-37.365,3.01,-0.12, +328.125,28.793,5.53,0.42, +328.4,-10.312,6.59,-0.12, +328.266,25.925,5.08,-0.17, +328.004,55.797,5.71,-0.13, +328.406,19.668,5.68,0.01, +328.491,6.864,6.15,0.8, +328.543,-4.276,5.71,1.18, +327.905,65.753,6.37,null, +329.058,-57.899,6.19,0.21, +328.65,-3.301,6.2,0.48, +328.573,19.718,6.39,0.97, +328.982,-30.606,6.41,0.93, +329.095,-37.254,5.46,0.08, +329.259,-37.747,6.18,0.33, +329.48,-54.992,4.4,0.28, +329.625,-59.012,6.12,0.46, +330.467,-77.663,6.41,0.22, +328.722,56.611,5.8,0.73, +329.1,21.24,6.4,1.7, +329.235,12.076,5.54,0.05, +328.836,61.542,6.13,1.6, +328.88,65.321,5.86,-0.06, +329.555,-5.425,6.33,0.37, +329.259,48.669,6.42,-0.08, +329.682,-21.183,6.12,1.65, +329.825,-38.395,5.5,1, +330.766,-76.119,5.95,0.39, +330.1,-55.883,6.01,-0.1, +329.729,-4.373,6.22,1, +329.163,63.626,4.91,1.77, +329.296,66.156,6.43,-0.05, +330.033,6.718,6,-0.12, +330.209,-28.454,5.42,-0.09, +330.84,-56.786,4.69,1.06, +329.722,62.698,5.93,1.67, +329.846,57.658,6.59,0.03, +330.271,0.605,5.58,1.28, +330.112,33.006,6.46,null, +330.273,13.12,5.6,0.34, +330.288,8.257,5.65,1.44, +330.55,-17.904,6.28,1.01, +329.463,74.997,6.35,1.56, +330.611,-16.964,6.37,0.42, +330.506,10.974,6.37,-0.1, +330.822,-29.904,7.1,0.32, +330.164,62.488,6.66,0.06, +329.813,73.18,5.03,0.44, +330.818,-6.522,5.54,0.96, +330.829,-2.155,4.69,-0.06, +330.461,52.882,5.78,-0.11, +330.829,11.386,5.8,-0.07, +331.1,-29.917,6.47,1.63, +330.519,58.001,5.56,0.06, +330.736,44.65,5.6,-0.03, +331.153,-26.822,5.96,-0.14, +331.462,-59.636,5.62,1.46, +331.198,-0.907,5.3,0.23, +331.529,-39.543,4.46,1.37, +331.143,32.942,6.38,1.1, +331.42,5.059,4.84,1.44, +331.446,-0.32,2.96,0.98, +331.297,26.674,5.78,1.25, +330.97,63.12,5.29,1.58, +330.948,64.628,4.29,0.34, +331.609,-13.87,4.27,-0.07, +331.395,28.964,5.7,-0.06, +332.677,-75.881,6.55,1.18, +331.318,46.745,6.13,1.61, +331.461,45.112,6.44,-0.03, +329.553,82.87,6.98,0.52, +331.508,45.014,5.14,1.57, +332.058,-46.961,1.74,-0.13, +331.252,62.786,5.27,1.41, +331.463,48.232,6.27,-0.06, +331.287,62.28,5.11,0.08, +331.552,45.249,6.19,0.09, +331.753,25.345,3.76,0.44, +332.096,-32.989,4.5,0.05, +332.98,-76.116,6.15,1, +332.108,-34.044,4.99,1.48, +331.556,56.343,6.39,-0.1, +331.869,19.476,5.75,null, +331.875,18.001,6.35,1.64, +332.178,-33.126,6.37,0.2, +331.96,21.703,5.78,-0.1, +332.246,-18.52,5.81,-0.17, +332.492,-48.107,6.43,1.39, +332.072,25.544,6.11,0.27, +331.79,58.841,6.32,0.88, +331.856,53.307,6.14,0.43, +332.482,-34.015,5.37,0.24, +332.069,49.796,6.42,null, +332.5,-28.292,6.44,0.15, +332.537,-32.548,4.92,0.48, +332.171,45.742,6.11,0.72, +332.307,33.172,5.58,1, +332.55,6.198,3.53,0.08, +332.588,-3.894,6.27,-0.01, +332.656,-11.565,5.46,-0.12, +332.641,-4.267,6.01,0.98, +332.497,33.178,4.29,0.46, +332.579,19.617,6.18,0.69, +332.593,14.63,6.33,1.08, +332.76,-21.232,6.09,0.5, +332.656,11.624,5.78,1.58, +332.626,20.978,6.46,0.12, +332.715,30.553,6.32,0.18, +332.964,16.041,5.95,0.95, +333.107,-14.194,6.03,0.38, +332.791,50.823,5.4,0.15, +333.24,-26.328,6.17,0.17, +332.714,58.201,3.35,1.57, +333.033,24.95,5.92,1.51, +333.182,-4.721,6.39,0.5, +332.452,72.341,4.79,0.92, +332.878,59.414,5.04,0.25, +333.435,-25.181,5.58,0.49, +334.46,-77.512,5.51,0.31, +332.953,56.839,5.24,0.51, +332.564,72.111,6.37,-0.06, +332.662,70.133,5.5,0.38, +333.199,34.605,5.33,1.13, +332.987,59.085,6.3,1.13, +333.661,-41.382,6.23,0.65, +333.578,-27.767,5.43,-0.16, +333.008,60.759,5.35,1.17, +333.575,-21.074,5.32,0.8, +335.006,-80.44,5.1,1.47, +333.411,28.608,5.89,1.15, +333.093,63.291,5.79,1.67, +333.896,-44.452,6.1,1.02, +333.47,39.715,4.49,1.39, +333.904,-41.347,4.79,0.8, +333.455,45.441,5.53,0.04, +334.111,-41.627,5.1,0.92, +333.685,42.954,5.71,0, +333.456,63.163,6.11,-0.08, +333.999,8.549,6.21,0.02, +334.156,-25.898,6.15,1.11, +333.22,73.307,6.08,1.01, +333.758,57.044,4.19,0.28, +334.14,-1.596,6.15,0.19, +334.2,-12.831,5.34,1.14, +334.249,-23.14,6.17,1.05, +333.993,37.749,4.13,1.46, +334.208,-7.783,4.16,0.98, +334.219,-9.04,5.79,1.16, +334.565,-53.628,5.37,0.6, +334.625,-60.26,2.86,1.39, +334.124,27.804,6.37,0.99, +334.277,-5.387,5.75,0.88, +337.906,-85.967,5.77,1.02, +334.11,57.22,5.88,0.93, +334.518,-0.238,6.39,0.44, +334.753,-13.305,5.95,1.06, +335.151,-57.51,6.34,1.37, +334.734,37.769,6.17,0.28, +334.553,62.804,5.75,1.26, +335.05,-7.821,5.37,-0.06, +335.115,5.789,5.37,-0.02, +335.232,8.187,6.17,0.44, +336.153,-72.256,5.29,0.65, +335.398,-21.598,5.13,1.07, +335.25,26.935,6.47,1.59, +335.414,-1.387,3.84,-0.05, +335.165,50.981,6.42,null, +335.38,12.205,5.01,-0.13, +335.683,-45.948,6.62,2.01, +335.33,28.331,4.81,0, +335.257,46.537,4.57,-0.1, +335.783,-45.929,5.62,0.36, +334.585,76.488,6.66,0, +336.463,-75.016,6.04,0.64, +336.294,-70.432,5.78,0.38, +335.462,42.078,6.41,-0.08, +335.879,-24.762,5.53,0.99, +335.884,-7.194,5.93,1, +336.235,-57.797,5.32,0.67, +335.915,20.848,6.04,null, +336.029,-4.837,5.78,-0.04, +336.113,-13.529,5.76,0.97, +335.751,57.284,6.16,-0.13, +335.976,38.574,6.22,0.49, +335.751,62.42,6.04,0.05, +335.89,52.229,4.43,1.02, +336.319,1.378,4.66,-0.03, +336.833,-64.966,4.48,-0.03, +336.129,49.476,4.57,0.09, +336.545,-23.682,6.29,-0.03, +336.42,18.444,6.26,1.22, +336.643,-16.741,6.57,null, +336.643,-16.742,6.35,0.61, +333.294,86.108,5.27,-0.03, +337.157,-67.489,5.55,0.2, +336.656,4.394,5.75,0.52, +336.69,37.444,6.46,-0.13, +335.922,78.243,6.76,-0.06, +336.965,4.696,4.79,1.05, +337.163,-39.132,5.47,0.95, +336.86,39.81,6.14,-0.14, +336.747,56.433,6.57,-0.1, +336.943,31.84,5.98,1.45, +337.318,-43.496,3.97,1.03, +336.503,70.771,5.47,1.2, +337.207,-0.02,4.59,null, +337.209,-0.02,4.42,0.38, +337.44,-43.749,4.11,1.57, +336.772,65.132,5.46,0.37, +337.283,9.129,5.58,1.55, +337.442,-27.107,5.95,0.33, +337.293,26.763,5.79,1.25, +337.506,-12.915,6.4,0.32, +337.492,4.432,5.48,0.38, +337.573,-14.586,6.37,-0.04, +337.082,64.086,6.29,1.08, +337.433,35.726,6.56,null, +337.724,-26.074,6.43,1.08, +337.293,58.415,3.75,0.6, +337.383,47.707,4.36,1.68, +337.662,-10.678,4.82,-0.06, +337.508,32.573,5.65,-0.04, +337.527,49.356,6.4,1.15, +337.876,-32.346,4.29,0.01, +338.86,-78.772,6.15,1.38, +336.677,78.786,5.83,0.15, +337.622,43.123,4.51,-0.09, +337.827,-2.911,6.16,1.08, +337.827,-6.555,6.14,0.56, +338.25,-61.982,4.81,1.61, +337.922,-10.906,6.38,0.28, +337.893,29.543,6.35,0.19, +337.823,50.283,3.77,0.01, +338.148,20.23,6.42,0.32, +338.195,15.863,6.32,1.19, +338.11,39.78,5.88,0.16, +338.078,54.038,6.35,null, +338.512,-1.574,5.89,0.99, +337.47,78.824,5.5,0.06, +338.673,-20.708,5.2,0.44, +338.97,-57.884,6.23,0.2, +338.419,56.625,5.71,0.96, +338.262,69.914,6.6,0.32, +338.902,-23.991,5.97,0.99, +338.839,-0.118,4.02,-0.09, +338.321,70.374,6.34,0, +338.068,76.226,5.68,0.05, +339.122,-40.583,6.28,0.12, +339.148,-31.664,5.82,1.09, +339.245,-40.591,5.86,0.06, +338.968,39.634,5.73,-0.15, +339.033,35.577,6.1,1, +339.152,11.697,6.4,0, +338.972,50.071,6.29,-0.05, +338.966,56.07,6.38,0.12, +339.27,12.577,6.3,null, +339.203,35.652,6.3,1.37, +339.439,-4.228,5.03,1.14, +339.785,-52.692,6.65,0.35, +339.593,-7.898,6.23,0.78, +339.343,51.545,4.63,0.24, +339.686,-28.748,6.47,1.04, +338.942,73.643,5.08,0.39, +339.715,-33.081,5.66,0.05, +339.573,45.183,6.4,null, +339.719,19.522,5.82,0.92, +339.933,-28.325,6.31,1.01, +340.204,-57.422,5.97,1.46, +339.658,56.796,5.21,1.58, +339.815,39.05,4.88,-0.2, +340.093,-30.659,5.87,1.3, +339.946,19.681,6.21,0, +339.304,75.372,5.79,1.57, +339.893,37.593,6.03,0.86, +339.663,63.584,5.19,0.06, +340.164,-27.044,4.17,-0.11, +340.2,-3.554,6.31,0.52, +341.514,-81.382,4.15,0.2, +340.22,14.549,5.71,0.72, +340.129,44.276,4.46,1.33, +340.077,53.846,5.93,0.93, +340.365,10.831,3.4,-0.09, +340.654,-47.211,5.98,0.58, +340.667,-46.885,2.1,1.6, +340.592,-29.361,6.17,1.54, +340.381,30.966,6.34,null, +340.68,-44.248,6.07,0.98, +340.369,40.226,5.25,-0.14, +340.439,29.308,4.79,-0.01, +340.489,14.516,5.9,1.11, +340.4,41.549,5.94,null, +340.875,-41.414,4.85,1.03, +340.765,-8.312,6.45,0.17, +341.069,-60.499,6.3,0.56, +340.81,-6.963,6.41,-0.04, +340.587,53.909,6.12,1.62, +340.897,-18.83,4.69,1.37, +340.75,30.221,2.94,0.86, +340.731,37.803,6.43,-0.09, +340.769,47.169,6.39,0.47, +340.928,10.939,6.51,0.46, +341.022,39.466,5.95,1.48, +341.408,-53.5,4.85,1.18, +341.023,41.819,5.08,0.96, +341.42,-46.547,5.51,1.32, +341.533,-48.979,6.62,0.63, +341.618,-49.686,6.48,1.14, +341.368,19.367,6.25,1.05, +341.205,52.517,6.55,null, +341.682,-46.939,6.56,0.3, +342.595,-80.124,5.35,-0.15, +342.42,-77.051,6.73,0.11, +341.673,12.173,4.19,0.5, +341.543,44.546,5.76,0.36, +341.633,23.566,3.95,1.07, +341.83,-34.161,6.28,1.16, +342.089,-61.684,6.37,1.06, +341.888,-19.613,5.26,0.94, +341.946,-38.222,6.71,0.48, +342.323,-70.348,6.34,0.07, +341.928,-14.056,5.66,-0.05, +341.984,-25.912,6.3,0.91, +342.139,-51.317,3.49,0.08, +342.126,-10.556,6.19,0.28, +341.847,58.483,6.36,-0.04, +342.045,37.417,5.9,1.03, +342.398,-13.593,4.01,1.57, +342.496,-32.805,6.33,0.31, +342.385,10.479,6.54,0.29, +342.199,54.415,6.12,-0.07, +342.184,62.938,6.06,1.2, +342.501,24.602,3.48,0.93, +342.759,-39.157,5.42,1.43, +342.937,-59.881,6.46,1.13, +342.253,68.57,6.19,null, +342.443,55.903,5.43,1.17, +343.041,-63.189,6.12,1.03, +342.591,41.954,5.92,0.08, +342.663,19.141,6.4,null, +342.543,50.677,6.21,1.14, +342.837,-29.536,5.97,0.91, +342.42,66.201,3.52,1.05, +343.132,-32.876,4.46,-0.04, +342.845,61.697,5.6,0.78, +343.1,9.836,5.16,0.48, +343.154,-7.58,3.74,1.64, +343.008,43.313,4.94,1.56, +343.408,-48.598,6.04,0.62, +343.664,-70.074,6.05,0.66, +341.871,83.154,4.74,1.26, +343.26,16.841,5.64,1.12, +343.37,-11.617,5.8,-0.08, +343.218,50.412,6.46,-0.04, +343.297,40.167,6.34,-0.08, +343.266,60.101,6.01,1.75, +343.417,44.749,5.81,0.26, +343.662,-15.821,3.27,0.05, +343.642,-7.205,6.19,1.28, +343.69,-16.272,5.56,1.14, +343.529,40.377,5.81,1.13, +343.812,-36.389,6.4,1.31, +343.649,16.942,6.12,1.77, +343.748,1.065,6.11,0.2, +343.796,-4.988,5.72,0.88, +343.807,8.816,4.9,0, +343.761,37.077,5.91,0.42, +343.964,-31.633,6.1,1.36, +343.987,-32.54,4.21,0.97, +344.1,-31.566,6.48,1.1, +344.199,-47.969,5.7,0.22, +343.935,36.352,5.74,-0.05, +344.215,11.848,6.51,0.18, +344.098,41.604,5.59,-0.14, +344.108,49.734,4.95,1.78, +344.322,-4.81,6.31,0.94, +344.413,-29.622,1.16,0.09, +344.366,20.769,5.49,0.67, +344.387,3.81,6.28,1.12, +344.269,48.684,5.43,-0.09, +344.646,-35.523,6.13,0.58, +344.42,39.309,6.18,-0.15, +344.565,-2.395,6.16,0.74, +344.599,-1.41,6.37,0.35, +342.759,85.374,5.9,1.32, +344.646,9.357,6.43,0.64, +344.677,7.34,6.33,0.06, +344.799,11.729,5.75,0.32, +344.899,-29.462,5.51,0.25, +344.899,-13.071,6.07,1.45, +344.864,0.963,5.43,0.98, +345.024,-25.164,5.65,1.25, +344.793,52.654,6.29,1.42, +344.788,59.815,6.43,0.03, +345.102,-25.627,6.29,1.13, +345.22,-52.754,4.12,0.98, +343.603,84.346,4.71,1.43, +345.281,-50.95,5.68,1.42, +345.158,0.186,6.21,0.89, +345.179,3.012,5.83,1.34, +345.021,56.945,5,1.42, +345.177,31.083,6.6,-0.04, +345.331,-28.854,5.55,1.35, +345.143,45.375,6.5,null, +345.346,-22.791,6.28,0.13, +345.348,-7.061,6.21,1.41, +345.228,38.708,6.54,-0.11, +345.382,-4.711,5.94,1, +345.642,-36.421,6.47,0.94, +345.378,57.106,6.2,1.5, +345.48,42.326,3.62,-0.09, +345.636,-6.574,6.15,1.58, +345.685,-20.871,5.97,0.94, +345.638,31.781,6.57,0.35, +345.651,42.758,5.1,0.09, +345.874,-34.749,5.11,0.29, +345.688,44.059,6.39,0, +346.218,-68.82,5.52,0.36, +345.683,55.236,6.5,-0.08, +345.998,-41.478,5.79,1.08, +345.989,-4.795,6.68,0.58, +345.969,3.82,4.53,-0.12, +346.165,-53.965,5.37,1.45, +345.944,28.083,2.42,1.67, +346.004,6.617,6.41,0.39, +345.849,60.445,6.74,-0.02, +345.84,58.565,6.43,0.9, +345.887,67.209,5.24,1.26, +346.046,50.052,4.65,1.06, +346.19,15.205,2.49,-0.04, +346.291,-7.694,5.43,0.3, +346.303,-17.079,6.14,1.37, +346.276,16.563,6.44,0.83, +346.323,1.307,6.39,0.94, +347.099,-79.481,6.12,0.14, +346.72,-43.521,4.28,0.42, +346.576,18.518,6.13,0.44, +346.67,-23.743,4.47,0.9, +346.723,-38.892,5.61,0.01, +346.79,-49.607,6.33,1.45, +346.633,19.911,6.3,0.49, +346.811,-50.686,5.83,0.48, +347.149,-73.586,6.15,1.42, +346.751,9.409,4.52,1.57, +346.778,25.468,4.76,1.34, +346.654,59.42,4.85,-0.03, +346.865,32.826,6.02,0.12, +346.87,21.134,5.99,0.26, +346.825,46.068,6.66,-0.05, +346.792,52.816,6.11,1.05, +347.088,-28.823,5.6,0.88, +346.793,59.728,6.4,-0.01, +346.914,46.387,5.33,1.41, +346.939,49.296,5.7,0.44, +347.051,44.562,6.56,0.17, +347.17,2.128,5.4,0.91, +346.949,63.633,6.26,-0.02, +347.549,-66.857,6.47,0.95, +348.05,-80.913,6.41,1.5, +346.988,64.223,6.21,1.1, +347.362,-21.172,3.66,1.22, +347.436,-28.089,5.87,1.31, +347.489,-42.861,5.81,0.48, +347.381,8.677,5.12,1.47, +347.457,-14.511,6.42,0.01, +347.478,-22.457,4.69,0.65, +347.541,-40.592,5.83,1.62, +346.975,75.388,4.41,0.8, +347.59,-45.247,3.9,1.02, +347.506,9.822,5.39,-0.08, +347.434,59.333,5.7,0.33, +347.694,-29.525,6.51,0.27, +347.678,17.594,5.71,1.34, +347.613,43.544,5.94,0.44, +347.934,8.72,5.16,0.13, +347.955,26.847,6.17,0.94, +348.313,-49.619,6.8,0.92, +348.528,-62.7,6.12,0.79, +348.138,49.406,4.52,0.29, +348.267,29.442,6.35,0.93, +348.321,57.168,5.56,1.01, +348.36,11.065,5.82,1.01, +348.581,-6.049,4.22,1.56, +348.744,-41.106,5.77,1.18, +348.668,-10.689,6.12,1.49, +348.56,50.618,6.31,null, +348.59,29.772,6.41,0.45, +348.652,24.103,6.36,null, +348.893,-3.496,5.55,0.06, +348.973,-9.088,4.21,1.11, +348.943,28.248,6.49,0.85, +349.24,-62.001,5.66,0.51, +348.655,74.231,5.84,null, +348.991,24.771,6.6,0.4, +349.165,-44.489,5.92,1.06, +349.208,-41.194,6.47,1.08, +349.358,-58.236,3.99,0.4, +349.784,-79.473,6.33,0.91, +349.212,-7.727,5.06,1.6, +348.908,70.888,5.56,0.24, +349.291,3.282,3.69,0.92, +349.176,53.214,5.54,0.52, +349.112,61.963,6.53,0.23, +349.583,-67.471,6.13,1.35, +349.417,-11.713,6.34,0.05, +349.319,45.164,6.43,1.07, +349.476,-9.182,4.39,-0.15, +349.541,-40.824,5.53,0.44, +349.436,49.015,4.85,1.67, +349.484,45.489,6.48,-0.03, +352.015,-87.482,5.49,1.27, +349.706,-32.532,4.41,1.13, +349.597,41.774,6.02,null, +349.74,-9.611,4.98,-0.02, +349.778,-13.459,5.08,0.8, +349.329,75.299,6.38,0.03, +349.85,-5.124,5.55,0.39, +349.85,-18.075,5.93,1.52, +349.76,45.137,6.5,null, +349.93,-33.708,6.37,1.3, +349.656,68.112,4.75,0.84, +349.864,34.793,6.32,-0.08, +349.874,48.625,5.44,1.03, +349.923,48.381,6.32,1.12, +349.968,42.078,5.79,1.48, +350.208,-50.307,6.05,0.42, +350.086,5.381,5.05,1.2, +350.17,-5.908,6.17,1.07, +350.159,23.74,4.6,0.17, +350.06,61.97,6.45,null, +350.207,30.415,5.59,1.5, +350.315,-26.987,5.64,0.82, +350.183,44.116,6.13,0.17, +350.222,38.182,5.77,0.46, +350.144,62.213,6.39,1.61, +350.479,31.813,5.32,-0.11, +350.493,26.609,6.62,0.37, +350.737,-60.056,6.09,1.6, +350.663,-15.039,5.2,0.2, +350.669,20.829,6.29,-0.04, +350.743,-20.101,3.97,1.1, +350.769,12.314,5.08,1.31, +350.635,60.134,5.56,1.68, +350.976,-53.808,6.15,0.26, +350.939,-43.124,6.1,1.46, +350.883,0.291,6.31,1.61, +351.055,-51.891,5.75,1.59, +350.948,32.531,6.69,0.45, +351.032,-18.687,6.19,1.02, +351.331,-56.849,5.59,1.07, +351.146,41.113,6.72,0.06, +351.212,32.385,5.57,-0.11, +351.21,62.283,4.98,1.68, +351.345,23.404,4.4,0.61, +351.512,-20.642,4.39,1.47, +351.653,-52.722,5.52,0.4, +351.78,-66.581,6.45,1.47, +351.813,-58.476,5.63,0.98, +351.788,-50.157,6.2,-0.08, +351.733,1.256,4.94,0.03, +351.812,1.123,6.25,1.02, +351.781,42.912,5.75,0, +352.003,-35.544,6.32,1.2, +351.918,25.167,5.98,-0.06, +351.992,6.379,4.28,1.07, +352.022,-11.45,6.37,0.9, +351.819,70.36,5.6,0.19, +352.254,-63.111,5.68,-0.17, +352.253,-44.498,6.43,1.18, +352.253,-9.266,6.18,1.44, +352.273,23.048,6.35,null, +352.289,12.761,4.55,0.94, +352.384,-4.533,6.25,1.09, +352.531,49.133,6.17,1.46, +352.508,58.549,4.91,-0.12, +352.665,38.662,6.05,0.99, +352.755,-6.288,6.39,1.26, +352.863,-44.844,6.02,1.02, +352.823,39.236,5.22,1.02, +352.881,-4.087,6.49,0.54, +352.925,-21.369,6.29,0.33, +352.93,28.404,6.41,0.01, +352.99,-1.086,6.38,1.18, +353.331,-77.385,5.81,0.68, +353.103,34.953,6.65,-0.06, +353.243,-37.818,4.37,-0.09, +351.753,87.307,5.58,0.23, +353.319,-20.914,4.71,0.02, +353.367,22.499,5.32,1.6, +353.428,45.058,6.24,0.98, +353.481,20.841,6.06,1.73, +353.488,31.325,4.98,1.38, +353.538,-1.247,5.87,0.3, +353.803,-64.689,7.4,null, +353.706,-15.246,5.96,1.36, +353.656,40.236,5.59,0.1, +353.659,33.497,5.63,1.03, +353.769,-42.615,4.71,0.08, +353.695,38.024,6.18,1.58, +353.884,-7.464,6.39,0.88, +353.746,71.642,5.84,1.8, +353.983,24.561,6.45,1.73, +354.097,2.102,5.68,0.44, +354.127,32.904,6.35,0.46, +354.273,-31.871,6.52,1.26, +354.6,-76.87,6,0.9, +354.415,-13.06,5.65,1.03, +354.463,-45.492,4.74,0.08, +354.416,16.826,6.26,0, +354.391,46.458,3.82,1.01, +354.383,44.429,5.8,-0.06, +354.487,18.401,5.53,0, +354.494,46.2,6.58,0.66, +354.534,43.268,4.29,-0.1, +354.867,-46.638,6.09,0.24, +354.785,50.472,5.3,-0.06, +354.946,-14.222,5,0.24, +354.987,5.626,4.13,0.51, +354.98,9.677,5.97,0.2, +354.793,75.293,5.95,0.13, +354.838,74.003,5.98,0.89, +355.012,37.652,6.53,0.35, +354.837,77.633,3.21,1.03, +355.159,-32.073,5.31,0.97, +355.102,44.334,4.14,-0.08, +355.169,36.721,6.23,0.39, +355.279,-24.16,6.6,1.57, +355.287,-11.681,5.89,1, +355.394,-18.027,5.34,1.57, +355.362,49.512,6.26,0.19, +355.441,-17.816,4.82,0.82, +355.486,7.251,5.89,0.1, +355.512,1.78,4.5,0.2, +355.477,57.26,6.24,null, +355.562,44.992,6.57,null, +355.616,-15.448,5.28,1.37, +355.68,-14.545,4.49,-0.04, +355.587,64.516,6.56,1.88, +355.631,61.679,6.4,1.24, +355.843,10.331,5.06,1.68, +355.956,-15.284,6.36,1.58, +356.006,-45.083,6.09,0.98, +356.106,-70.49,6.07,0.91, +356.17,-78.791,5.75,1.11, +356.05,-64.404,5.72,1.4, +355.998,29.362,4.93,0.95, +356.05,-18.277,5.24,-0.08, +356.12,-26.246,6.17,0.5, +356.201,55.8,6.51,null, +356.505,-40.182,6.31,0.2, +356.504,-18.678,5.29,0.28, +356.509,46.42,4.95,1.11, +356.598,3.487,5.04,2.6, +356.653,66.782,5.95,-0.04, +356.817,-50.227,5.18,-0.19, +356.847,-68.394,6.89,0.46, +356.765,58.652,4.87,1.11, +356.816,-11.911,5.73,1.08, +356.758,57.451,5.51,1.65, +356.888,46.833,6.07,-0.14, +356.985,-2.762,5.49,0.94, +356.978,67.807,5.04,-0.01, +357.135,-6.381,6.07,1.45, +357.205,2.214,6.46,0.44, +357.232,-28.13,4.57,0.01, +357.163,64.876,6.41,0.06, +357.209,62.214,5.43,0.67, +357.225,59.979,6.34,-0.01, +357.3,58.963,6.33,0.4, +357.382,-15.861,6.24,1.22, +357.365,1.076,5.77,0.16, +357.436,-62.839,6.59,1.48, +357.421,36.425,5.9,0.79, +357.414,28.842,5.97,0.19, +357.457,-25.331,6.42,0.12, +357.561,-9.974,5.94,1.13, +357.593,51.622,6.44,0.37, +357.639,-14.402,5.72,1.51, +357.838,9.313,5.79,1.66, +357.839,-18.909,5.18,-0.14, +358.027,-82.019,5.11,0.92, +357.991,2.93,5.55,1.53, +357.99,77.599,6.55,0.44, +358.097,21.671,6.11,1.59, +358.122,19.12,5.08,1.6, +358.125,-14.251,5.87,1.28, +358.105,75.545,6.39,0.98, +358.155,10.948,5.3,0.18, +358.21,-8.997,5.75,1.17, +358.232,-3.156,5.93,1.07, +358.27,2.091,6.28,-0.01, +358.337,-24.229,6.24,0.19, +358.589,-27.042,6.35,0.2, +358.596,57.499,4.54,1.22, +358.661,-40.3,6.03,0.57, +358.694,0.109,5.61,1.59, +358.783,7.071,6.21,-0.07, +358.819,-31.922,6.1,-0.08, +358.819,-31.884,6.83,-0.08, +358.846,25.955,6.54,null, +358.89,57.412,6,0.21, +358.89,47.356,6,1.16, +359.125,-24.737,6.31,0.92, +359.173,22.648,6.15,1.6, +359.115,83.191,6.59,0.05, +359.265,42.658,5.97,0.69, +359.285,-26.624,6.26,1.45, +359.285,55.706,5.55,0.49, +359.333,-62.956,5.97,0.11, +359.386,-82.17,5.73,1.05, +359.397,-64.298,5,0.06, +359.39,60.024,6.47,0.01, +359.44,25.141,4.66,1.59, +359.588,-15.847,6.26,1.08, +359.603,51.389,4.8,1.83, +359.668,-3.556,4.86,0.93, +359.705,32.382,6.52,-0.11, +359.732,-52.746,5.13,1.13, +359.694,46.413,6.54,-0.09, +359.752,55.755,4.88,-0.07, +359.828,6.863,4.01,0.42, +359.866,-29.485,5.62,1.6, +359.872,33.724,6.58,0.55, +359.872,33.724,6.58,null, +359.979,-65.577,4.5,-0.08, +0.08,-44.291,6.29,0.76, +0.1,26.918,6.46,0.5, +0.129,59.56,6.19,1.01, +0.182,45.253,6.38,-0.07, +0.269,-48.81,5.71,0.91, +0.333,-50.337,5.53,1.6, +0.33,49.982,6.22,0.97, +0.399,-77.066,4.78,1.27, +0.404,61.223,5.55,0.41, +0.433,42.367,6.25,-0.03, +0.456,-3.027,5.1,-0.12, +0.543,27.082,5.75,0.67, +0.49,-6.014,4.41,1.63, +0.53,-14.676,7.1,1.8, +0.583,-29.72,5.01,-0.15, +0.601,8.957,6.32,0.18, +0.624,8.486,5.63,0.29, +0.65,66.099,5.86,1.09, +0.74,-20.046,6.25,0.53, +0.782,-24.145,6.44,1.18, +0.857,63.642,6.24,0.33, +0.935,-17.336,4.55,-0.05, +0.966,66.712,6.29,1.67, +1.057,62.288,5.88,0.3, +1.082,-16.529,5.78,1.1, +1.085,-29.269,6.4,0, +1.125,-10.509,4.94,1.63, +1.175,67.167,5.67,1.07, +1.153,42.092,6.01,null, +1.128,-72.898,7.31,0.44, +1.224,34.66,6.12,0.62, +1.172,-71.437,5.59,-0.12, +1.233,26.649,6.25,1.4, +1.276,61.314,5.8,-0.09 +]} diff --git a/src/data/local_data/sky/milkyway_nx.webp b/src/data/local_data/sky/milkyway_nx.webp new file mode 100644 index 0000000000000000000000000000000000000000..6c6ca774ae57380799b04f181cf70e9aff121a5a GIT binary patch literal 40374 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�iVh!6+F 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 literal 0 HcmV?d00001 diff --git a/src/data/local_data/sky/milkyway_ny.webp b/src/data/local_data/sky/milkyway_ny.webp new file mode 100644 index 0000000000000000000000000000000000000000..8968f251f39532001c5c10184e36f397f5ff74e3 GIT binary patch literal 42866 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�>{mWR^N`hp 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 literal 0 HcmV?d00001 diff --git a/src/data/local_data/sky/milkyway_nz.webp b/src/data/local_data/sky/milkyway_nz.webp new file mode 100644 index 0000000000000000000000000000000000000000..31cc013e435ea6af53894f0e2dd4e641b6b08179 GIT binary patch literal 45584 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 Y)w*;cIl6U@@~0h78wcY>=?=^Q0Km1yCjbBd literal 0 HcmV?d00001 diff --git a/src/data/local_data/sky/milkyway_pz.webp b/src/data/local_data/sky/milkyway_pz.webp new file mode 100644 index 0000000000000000000000000000000000000000..a541fec696832e2f660fd9779f6711e474be93bd GIT binary patch literal 39850 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

J!y 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�m6DHzvY~VK}qNuuVH>e`+#|+ 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 literal 0 HcmV?d00001 diff --git a/src/sky/starrySky.js b/src/sky/starrySky.js new file mode 100644 index 000000000..daa24fabf --- /dev/null +++ b/src/sky/starrySky.js @@ -0,0 +1,430 @@ +import * as Cesium from 'cesium'; +import { loadBundledJson } from '../data/bundledJson.js'; +import { governorRequestRender } from '../renderGovernor.js'; +import { buildStarVertices, STAR_VERTEX_FLOATS } from './stars.js'; + +/** + * Space background: catalogue stars drawn as point sprites over a soft Milky + * Way cube map, replacing Cesium's default Tycho-2 sky box (six 1024² JPEGs + * stretched 3–6× on screen, which read as compression blocks around the + * globe). + * + * Narrow, version-tested engine adapter. It takes the `Scene#skyBox` slot: + * Cesium calls `update(frameState, useHdr)` once per frame and executes the + * returned command first in the environment pass, before the atmosphere, sun, + * moon and every globe or tile command — so the sky stays behind everything + * without depth testing. Only `execute()` and `derivedCommands` of that + * command are read. An engine upgrade must revalidate this adapter. + * + * Both layers share one ICRF→Earth-fixed rotation (IAU 2006 precession, + * nutation and Earth rotation at the scene clock), so stars and the Milky + * Way agree with each other and with the real sky over the globe. Until + * Cesium's ICRF tables load, the TEME approximation the default sky box uses + * fills in; the arrival renders one frame through the idle governor. + */ +export const STARRY_SKY_CESIUM_VERSION = '1.138.0'; + +/** Opacity of the Milky Way glow over black; the stars carry the sky. */ +export const MILKY_WAY_INTENSITY = 0.4; +/** Overall star brightness multiplier. */ +export const STAR_INTENSITY = 1; +/** Clock change, in seconds, below which the sky rotation is reused. */ +export const SKY_ROTATION_EPSILON_SECONDS = 1; + +const STAR_PACK_URL = new URL( + '../data/local_data/sky/bright_stars.json', + import.meta.url, +); +const MILKY_WAY_FACE_URLS = Object.freeze({ + positiveX: new URL( + '../data/local_data/sky/milkyway_px.webp', + import.meta.url, + ), + negativeX: new URL( + '../data/local_data/sky/milkyway_nx.webp', + import.meta.url, + ), + positiveY: new URL( + '../data/local_data/sky/milkyway_py.webp', + import.meta.url, + ), + negativeY: new URL( + '../data/local_data/sky/milkyway_ny.webp', + import.meta.url, + ), + positiveZ: new URL( + '../data/local_data/sky/milkyway_pz.webp', + import.meta.url, + ), + negativeZ: new URL( + '../data/local_data/sky/milkyway_nz.webp', + import.meta.url, + ), +}); + +// Directions, not points: w = 0 drops the camera translation, and z = w puts +// every fragment on the far plane, inside the clip volume at any frustum. +const SKY_DIRECTION_GLSL = ` +uniform mat3 u_icrfToFixed; +vec4 skyClipPosition(vec3 icrfDirection) +{ + vec3 eye = czm_viewRotation * (u_icrfToFixed * icrfDirection); + vec4 clip = czm_projection * vec4(eye, 0.0); + clip.z = clip.w * 0.99999; + return clip; +} +`; + +const MILKY_WAY_VS = `${SKY_DIRECTION_GLSL} +in vec3 position; +out vec3 v_direction; +void main() +{ + gl_Position = skyClipPosition(position); + v_direction = position; +} +`; + +const MILKY_WAY_FS = ` +uniform samplerCube u_milkyWay; +uniform float u_intensity; +in vec3 v_direction; +void main() +{ + vec3 color = czm_textureCube(u_milkyWay, normalize(v_direction)).rgb * u_intensity; + // Interleaved-gradient dither: the dim glow spans only a few 8-bit steps. + float noise = fract(52.9829189 * fract(dot(gl_FragCoord.xy, vec2(0.06711056, 0.00583715)))); + color = max(color + (noise - 0.5) / 255.0, 0.0); + out_FragColor = vec4(czm_gammaCorrect(color), 1.0); +} +`; + +const STAR_VS = `${SKY_DIRECTION_GLSL} +in vec3 position; +in float sigma; +in vec4 color; +out vec4 v_color; +out float v_sigma; +out float v_radius; +void main() +{ + gl_Position = skyClipPosition(position); + // σ is in CSS pixels; the sprite holds ±3σ plus a pixel of margin. + v_sigma = sigma * czm_pixelRatio; + v_radius = ceil(3.0 * v_sigma) + 1.0; + gl_PointSize = 2.0 * v_radius; + v_color = color; +} +`; + +const STAR_FS = ` +uniform float u_intensity; +in vec4 v_color; +in float v_sigma; +in float v_radius; +void main() +{ + vec2 offset = (gl_PointCoord - 0.5) * (2.0 * v_radius); + float alpha = v_color.a * u_intensity * + exp(-0.5 * dot(offset, offset) / (v_sigma * v_sigma)); + if (alpha < 1.0 / 512.0) discard; + out_FragColor = vec4(czm_gammaCorrect(v_color.rgb) * alpha, alpha); +} +`; + +/** Pick the ICRF→fixed rotation for `time`, or TEME while tables load. */ +export function computeSkyRotation( + time, + result, + transforms = Cesium.Transforms, +) { + const icrf = transforms.computeIcrfToFixedMatrix(time, result); + if (icrf) return { matrix: icrf, precise: true }; + return { + matrix: transforms.computeTemeToPseudoFixedMatrix(time, result), + precise: false, + }; +} + +/** Whether a cached rotation at `cachedTime` still serves `time`. */ +export function isSkyRotationCurrent(cachedTime, time) { + return ( + cachedTime !== undefined && + Math.abs(Cesium.JulianDate.secondsDifference(time, cachedTime)) < + SKY_ROTATION_EPSILON_SECONDS + ); +} + +export class StarrySky { + /** + * @param {object} [options] + * @param {() => void} [options.requestRender] renders one frame when an + * asset or the precise rotation arrives; the idle governor by default. + */ + constructor({ + requestRender = () => governorRequestRender('sky-assets'), + } = {}) { + /** Matches `SkyBox#show`. */ + this.show = true; + this.milkyWayIntensity = MILKY_WAY_INTENSITY; + this.starIntensity = STAR_INTENSITY; + this._requestRender = requestRender; + this._rotation = Cesium.Matrix3.clone(Cesium.Matrix3.IDENTITY); + this._rotationTime = undefined; + this._rotationPrecise = false; + this._icrfRequest = undefined; + this._icrfUnavailable = false; + this._loading = false; + this._starData = undefined; + this._faceImages = undefined; + this._cubeMap = undefined; + this._milkyWayCommand = undefined; + this._milkyWayAttributes = undefined; + this._starCommand = undefined; + this._useHdr = undefined; + this._destroyed = false; + const uniforms = { + u_icrfToFixed: () => this._rotation, + }; + this._milkyWayUniforms = { + ...uniforms, + u_milkyWay: () => this._cubeMap, + u_intensity: () => this.milkyWayIntensity, + }; + this._starUniforms = { + ...uniforms, + u_intensity: () => this.starIntensity, + }; + const commands = []; + this._commands = commands; + // The environment pass reads `derivedCommands` (log depth, HDR, picking) + // before calling `execute`; none apply to a far-plane background. + this._compositeCommand = { + derivedCommands: {}, + execute(context, passState) { + for (const command of commands) command.execute(context, passState); + }, + }; + } + + /** Start loading assets; failures leave a plain black sky. */ + _load() { + if (this._loading) return; + this._loading = true; + loadBundledJson(STAR_PACK_URL) + .then((pack) => { + if (this._destroyed) return; + this._starData = buildStarVertices(pack); + this._requestRender(); + }) + .catch((error) => + console.warn('[sky] star catalogue unavailable', error), + ); + const faces = Object.entries(MILKY_WAY_FACE_URLS); + Promise.all( + faces.map(([, url]) => Cesium.Resource.fetchImage({ url: url.href })), + ) + .then((images) => { + if (this._destroyed) return; + this._faceImages = Object.fromEntries( + faces.map(([face], index) => [face, images[index]]), + ); + this._requestRender(); + }) + .catch((error) => console.warn('[sky] Milky Way unavailable', error)); + } + + _updateRotation(time) { + // An approximate rotation is final only while nothing better can come. + const settled = + this._rotationPrecise || this._icrfRequest || this._icrfUnavailable; + if (settled && isSkyRotationCurrent(this._rotationTime, time)) return; + const { precise } = computeSkyRotation(time, this._rotation); + this._rotationPrecise = precise; + this._rotationTime = Cesium.JulianDate.clone(time, this._rotationTime); + if (!precise) this._preloadIcrf(time); + } + + /** Fetch Cesium's IAU 2006 tables around `time` once; retry on new spans. */ + _preloadIcrf(time) { + if (this._icrfRequest || this._icrfUnavailable) return; + const interval = new Cesium.TimeInterval({ + start: Cesium.JulianDate.addDays(time, -1, new Cesium.JulianDate()), + stop: Cesium.JulianDate.addDays(time, 1, new Cesium.JulianDate()), + }); + this._icrfRequest = Promise.resolve( + Cesium.Transforms.preloadIcrfFixed(interval), + ) + .then( + () => { + this._rotationTime = undefined; + }, + (error) => { + // TEME is within a fraction of a degree; do not retry every frame. + this._icrfUnavailable = true; + console.warn('[sky] ICRF tables unavailable, using TEME', error); + }, + ) + .finally(() => { + this._icrfRequest = undefined; + if (!this._destroyed) this._requestRender(); + }); + } + + _createMilkyWayCommand(context) { + const cubeMap = new Cesium.CubeMap({ + context, + source: this._faceImages, + flipY: false, + }); + cubeMap.generateMipmap(); + cubeMap.sampler = new Cesium.Sampler({ + minificationFilter: Cesium.TextureMinificationFilter.LINEAR_MIPMAP_LINEAR, + }); + this._cubeMap = cubeMap; + this._faceImages = undefined; + const geometry = Cesium.BoxGeometry.createGeometry( + Cesium.BoxGeometry.fromDimensions({ + dimensions: new Cesium.Cartesian3(2, 2, 2), + vertexFormat: Cesium.VertexFormat.POSITION_ONLY, + }), + ); + const attributeLocations = + Cesium.GeometryPipeline.createAttributeLocations(geometry); + this._milkyWayCommand = new Cesium.DrawCommand({ + owner: this, + vertexArray: Cesium.VertexArray.fromGeometry({ + context, + geometry, + attributeLocations, + bufferUsage: Cesium.BufferUsage.STATIC_DRAW, + }), + renderState: Cesium.RenderState.fromCache({}), + uniformMap: this._milkyWayUniforms, + }); + this._milkyWayAttributes = attributeLocations; + } + + _createStarCommand(context) { + const { count, vertices } = this._starData; + this._starData = undefined; + if (count === 0) return; + const vertexBuffer = Cesium.Buffer.createVertexBuffer({ + context, + typedArray: vertices, + usage: Cesium.BufferUsage.STATIC_DRAW, + }); + const stride = STAR_VERTEX_FLOATS * Float32Array.BYTES_PER_ELEMENT; + const attribute = (index, components, offsetFloats) => ({ + index, + vertexBuffer, + componentsPerAttribute: components, + componentDatatype: Cesium.ComponentDatatype.FLOAT, + offsetInBytes: offsetFloats * Float32Array.BYTES_PER_ELEMENT, + strideInBytes: stride, + }); + this._starCommand = new Cesium.DrawCommand({ + owner: this, + primitiveType: Cesium.PrimitiveType.POINTS, + count, + vertexArray: new Cesium.VertexArray({ + context, + attributes: [ + attribute(0, 3, 0), + attribute(1, 1, 3), + attribute(2, 4, 4), + ], + }), + // Premultiplied additive: starlight adds to the Milky Way glow and + // leaves the framebuffer alpha alone. + renderState: Cesium.RenderState.fromCache({ + blending: { + enabled: true, + equationRgb: Cesium.BlendEquation.ADD, + equationAlpha: Cesium.BlendEquation.ADD, + functionSourceRgb: Cesium.BlendFunction.ONE, + functionDestinationRgb: Cesium.BlendFunction.ONE, + functionSourceAlpha: Cesium.BlendFunction.ZERO, + functionDestinationAlpha: Cesium.BlendFunction.ONE, + }, + }), + uniformMap: this._starUniforms, + }); + } + + _updateShaders(context, useHdr) { + if (this._useHdr === useHdr) return; + this._useHdr = useHdr; + const defines = useHdr ? ['HDR'] : []; + for (const [command, vs, fs, attributeLocations] of [ + [ + this._milkyWayCommand, + MILKY_WAY_VS, + MILKY_WAY_FS, + this._milkyWayAttributes, + ], + [ + this._starCommand, + STAR_VS, + STAR_FS, + { position: 0, sigma: 1, color: 2 }, + ], + ]) { + if (!command) continue; + command.shaderProgram?.destroy(); + command.shaderProgram = Cesium.ShaderProgram.fromCache({ + context, + vertexShaderSource: vs, + fragmentShaderSource: new Cesium.ShaderSource({ + defines, + sources: [fs], + }), + attributeLocations, + }); + } + } + + /** `Scene#skyBox` contract: the command to draw this frame, if any. */ + update(frameState, useHdr) { + if (!this.show) return undefined; + const { mode, passes, context } = frameState; + if (mode !== Cesium.SceneMode.SCENE3D) return undefined; + if (!passes.render) return undefined; + this._load(); + let rebuilt = false; + if (this._faceImages && !this._milkyWayCommand) { + this._createMilkyWayCommand(context); + rebuilt = true; + } + if (this._starData && !this._starCommand) { + this._createStarCommand(context); + rebuilt = true; + } + if (rebuilt) this._useHdr = undefined; + this._updateShaders(context, Boolean(useHdr)); + this._commands.length = 0; + if (this._milkyWayCommand) this._commands.push(this._milkyWayCommand); + if (this._starCommand) this._commands.push(this._starCommand); + if (this._commands.length === 0) return undefined; + this._updateRotation(frameState.time); + return this._compositeCommand; + } + + isDestroyed() { + return this._destroyed; + } + + destroy() { + for (const command of [this._milkyWayCommand, this._starCommand]) { + if (!command) continue; + command.vertexArray?.destroy(); + command.shaderProgram?.destroy(); + } + this._cubeMap = this._cubeMap?.destroy(); + this._milkyWayCommand = undefined; + this._starCommand = undefined; + this._commands.length = 0; + this._destroyed = true; + return undefined; + } +} diff --git a/src/sky/starrySky.test.mjs b/src/sky/starrySky.test.mjs new file mode 100644 index 000000000..6575b1121 --- /dev/null +++ b/src/sky/starrySky.test.mjs @@ -0,0 +1,89 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import * as Cesium from 'cesium'; +import { + STARRY_SKY_CESIUM_VERSION, + SKY_ROTATION_EPSILON_SECONDS, + StarrySky, + computeSkyRotation, + isSkyRotationCurrent, +} from './starrySky.js'; + +test('the sky-box adapter was validated against this engine version', () => { + assert.equal( + Cesium.VERSION, + STARRY_SKY_CESIUM_VERSION, + 'engine upgrades require revalidating the Scene#skyBox contract', + ); +}); + +test('the ICRF rotation is preferred and TEME fills in while tables load', () => { + const time = Cesium.JulianDate.fromIso8601('2026-10-19T00:00:00Z'); + const icrf = Cesium.Matrix3.fromRotationZ(0.3); + const teme = Cesium.Matrix3.fromRotationZ(0.2); + const precise = computeSkyRotation(time, new Cesium.Matrix3(), { + computeIcrfToFixedMatrix: (_, result) => Cesium.Matrix3.clone(icrf, result), + computeTemeToPseudoFixedMatrix: () => assert.fail('TEME not needed'), + }); + assert.equal(precise.precise, true); + assert.ok(Cesium.Matrix3.equals(precise.matrix, icrf)); + const approximate = computeSkyRotation(time, new Cesium.Matrix3(), { + computeIcrfToFixedMatrix: () => undefined, + computeTemeToPseudoFixedMatrix: (_, result) => + Cesium.Matrix3.clone(teme, result), + }); + assert.equal(approximate.precise, false); + assert.ok(Cesium.Matrix3.equals(approximate.matrix, teme)); +}); + +test('the TEME fallback keeps the celestial pole on the Earth axis', () => { + // TEME only spins about Z; ICRF differs from it by precession (~0.36° by + // 2026), so the fallback sky is right up to a fraction of a degree. + const time = Cesium.JulianDate.fromIso8601('2026-10-19T00:00:00Z'); + const teme = Cesium.Transforms.computeTemeToPseudoFixedMatrix(time); + const pole = Cesium.Matrix3.multiplyByVector( + teme, + Cesium.Cartesian3.UNIT_Z, + new Cesium.Cartesian3(), + ); + assert.ok(Math.abs(pole.z - 1) < 1e-9); +}); + +test('the rotation is reused only within the clock epsilon', () => { + const time = Cesium.JulianDate.fromIso8601('2026-10-19T00:00:00Z'); + const later = (seconds) => + Cesium.JulianDate.addSeconds(time, seconds, new Cesium.JulianDate()); + assert.equal(isSkyRotationCurrent(undefined, time), false); + assert.equal(isSkyRotationCurrent(time, later(0.5)), true); + assert.equal(isSkyRotationCurrent(time, later(-0.5)), true); + assert.equal( + isSkyRotationCurrent(time, later(SKY_ROTATION_EPSILON_SECONDS)), + false, + ); +}); + +test('the sky draws nothing when hidden, outside 3D, or in a pick pass', () => { + const sky = new StarrySky({ requestRender: () => {} }); + const frameState = (overrides) => ({ + mode: Cesium.SceneMode.SCENE3D, + passes: { render: true }, + ...overrides, + }); + sky._loading = true; // keep the test off the network + sky.show = false; + assert.equal(sky.update(frameState()), undefined); + sky.show = true; + assert.equal( + sky.update(frameState({ mode: Cesium.SceneMode.SCENE2D })), + undefined, + ); + assert.equal( + sky.update(frameState({ passes: { render: false, pick: true } })), + undefined, + ); + // Nothing has loaded yet, so even a render pass has no command. + assert.equal(sky.update(frameState()), undefined); + assert.equal(sky.isDestroyed(), false); + assert.equal(sky.destroy(), undefined); + assert.equal(sky.isDestroyed(), true); +}); diff --git a/src/sky/stars.js b/src/sky/stars.js new file mode 100644 index 000000000..b7ef7aa41 --- /dev/null +++ b/src/sky/stars.js @@ -0,0 +1,146 @@ +/** + * Bright-star appearance: catalogue pack → GPU vertex data. + * + * Pure functions, no Cesium. The pack is `local_data/sky/bright_stars.json` + * (Yale Bright Star Catalogue, built by scripts/build-bright-stars.mjs): a + * flat `[raDeg, decDeg, vmag, bv, …]` array in ICRF/J2000. + * + * Every star is drawn as a point sprite holding a small Gaussian. Its width + * is set in CSS pixels and scaled by the device pixel ratio in the shader, so + * a star covers the same screen area at any DPR and stays a crisp dot rather + * than a texel stretched across several pixels. + * + * @module sky/stars + */ + +/** Faintest catalogue magnitude; also the reference for brightness. */ +export const STAR_LIMIT_MAGNITUDE = 6.5; +/** Gaussian σ of the faintest star, CSS pixels. */ +export const STAR_MIN_SIGMA_PX = 0.55; +/** Gaussian σ cap for the brightest star, CSS pixels. */ +export const STAR_MAX_SIGMA_PX = 1.35; +/** Peak opacity of the faintest star. */ +export const STAR_MIN_ALPHA = 0.22; +/** B−V for stars the catalogue gives no colour (a solar-type white). */ +export const STAR_DEFAULT_BV = 0.6; +/** Floats per star in the vertex buffer: xyz, σ, rgb, alpha. */ +export const STAR_VERTEX_FLOATS = 8; + +const DEG = Math.PI / 180; +// Fraction of the colour kept: the eye sees all but the most extreme stars +// as nearly white, and saturated dots read as UI markers on the globe. +const COLOR_SATURATION = 0.55; + +function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); +} + +/** ICRF unit vector for J2000 right ascension and declination in degrees. */ +export function raDecToUnitVector(raDeg, decDeg) { + const ra = raDeg * DEG; + const dec = decDeg * DEG; + const cosDec = Math.cos(dec); + return [cosDec * Math.cos(ra), cosDec * Math.sin(ra), Math.sin(dec)]; +} + +/** + * Perceived brightness relative to the limit magnitude. Flux grows 2.512× + * per magnitude; the square root compresses Sirius-to-6.5m (≈ 1600×) into a + * range a display can show without the bright stars turning into discs. + */ +export function starBrightness(vmag) { + const magnitude = Number.isFinite(vmag) ? vmag : STAR_LIMIT_MAGNITUDE; + return ( + 10 ** + (-0.2 * (Math.min(magnitude, STAR_LIMIT_MAGNITUDE) - STAR_LIMIT_MAGNITUDE)) + ); +} + +/** + * Sprite parameters for a visual magnitude: `sigmaPx` is the Gaussian σ in + * CSS pixels and `alpha` its peak opacity. Faint stars keep the minimum width + * and fade; bright stars saturate and grow slowly. + */ +export function starAppearance(vmag) { + const brightness = starBrightness(vmag); + return { + sigmaPx: clamp( + STAR_MIN_SIGMA_PX * brightness ** 0.3, + STAR_MIN_SIGMA_PX, + STAR_MAX_SIGMA_PX, + ), + alpha: clamp(STAR_MIN_ALPHA * brightness, STAR_MIN_ALPHA, 1), + }; +} + +/** Effective temperature from B−V (Ballesteros 2012). */ +export function bvToTemperature(bv) { + const index = clamp(Number.isFinite(bv) ? bv : STAR_DEFAULT_BV, -0.4, 2.0); + return 4600 * (1 / (0.92 * index + 1.7) + 1 / (0.92 * index + 0.62)); +} + +/** Black-body colour of a temperature, sRGB 0..1 (Helland's fit). */ +export function temperatureToRgb(kelvin) { + const t = clamp(kelvin, 1000, 40000) / 100; + const red = t <= 66 ? 255 : 329.698727446 * (t - 60) ** -0.1332047592; + const green = + t <= 66 + ? 99.4708025861 * Math.log(t) - 161.1195681661 + : 288.1221695283 * (t - 60) ** -0.0755148492; + const blue = + t >= 66 + ? 255 + : t <= 19 + ? 0 + : 138.5177312231 * Math.log(t - 10) - 305.0447927307; + return [red, green, blue].map((channel) => clamp(channel, 0, 255) / 255); +} + +/** + * Display colour for a B−V index: the black-body hue, desaturated towards + * white and normalized so the brightest channel is 1 (brightness belongs to + * the magnitude alone). + */ +export function bvToRgb(bv) { + const rgb = temperatureToRgb(bvToTemperature(bv)).map( + (channel) => 1 - COLOR_SATURATION + COLOR_SATURATION * channel, + ); + const peak = Math.max(...rgb); + return rgb.map((channel) => channel / peak); +} + +/** + * Decode a catalogue pack into interleaved vertex data, `STAR_VERTEX_FLOATS` + * per star. Malformed rows are skipped, never thrown on: a damaged pack must + * not take the globe down with it. + */ +export function buildStarVertices(pack) { + const stars = Array.isArray(pack?.stars) ? pack.stars : []; + const count = Math.floor(stars.length / 4); + const vertices = new Float32Array(count * STAR_VERTEX_FLOATS); + let written = 0; + for (let i = 0; i < count; i++) { + const [raDeg, decDeg, vmag, bv] = stars.slice(i * 4, i * 4 + 4); + if ( + !Number.isFinite(raDeg) || + !Number.isFinite(decDeg) || + !Number.isFinite(vmag) + ) + continue; + const [x, y, z] = raDecToUnitVector(raDeg, decDeg); + const { sigmaPx, alpha } = starAppearance(vmag); + const [r, g, b] = bvToRgb(bv); + vertices.set( + [x, y, z, sigmaPx, r, g, b, alpha], + written * STAR_VERTEX_FLOATS, + ); + written += 1; + } + return { + count: written, + vertices: + written === count + ? vertices + : vertices.slice(0, written * STAR_VERTEX_FLOATS), + }; +} diff --git a/src/sky/stars.test.mjs b/src/sky/stars.test.mjs new file mode 100644 index 000000000..6dba55971 --- /dev/null +++ b/src/sky/stars.test.mjs @@ -0,0 +1,134 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { readFileSync, statSync } from 'node:fs'; +import { + STAR_LIMIT_MAGNITUDE, + STAR_MAX_SIGMA_PX, + STAR_MIN_ALPHA, + STAR_MIN_SIGMA_PX, + STAR_VERTEX_FLOATS, + buildStarVertices, + bvToRgb, + bvToTemperature, + raDecToUnitVector, + starAppearance, + starBrightness, +} from './stars.js'; + +const close = (actual, expected, epsilon = 1e-9) => + assert.ok( + Math.abs(actual - expected) <= epsilon, + `${actual} is not within ${epsilon} of ${expected}`, + ); + +const skyFile = (name) => + new URL(`../data/local_data/sky/${name}`, import.meta.url); + +test('right ascension and declination map onto the ICRF axes', () => { + const equinox = raDecToUnitVector(0, 0); + close(equinox[0], 1); + close(equinox[1], 0); + close(equinox[2], 0); + const sixHours = raDecToUnitVector(90, 0); + close(sixHours[0], 0); + close(sixHours[1], 1); + const pole = raDecToUnitVector(123, 90); + close(pole[2], 1); + const south = raDecToUnitVector(200, -30); + close(Math.hypot(...south), 1); + close(south[2], -0.5); +}); + +test('brightness grows with each magnitude and stops at the catalogue limit', () => { + close(starBrightness(STAR_LIMIT_MAGNITUDE), 1); + close(starBrightness(STAR_LIMIT_MAGNITUDE + 1.5), 1); + close(starBrightness(STAR_LIMIT_MAGNITUDE - 5), 10); + close(starBrightness(Number.NaN), 1); +}); + +test('brighter stars are never smaller or fainter, and both ends clamp', () => { + let previous = starAppearance(8); + assert.deepEqual(previous, { + sigmaPx: STAR_MIN_SIGMA_PX, + alpha: STAR_MIN_ALPHA, + }); + for (let vmag = 7.5; vmag >= -1.5; vmag -= 0.25) { + const next = starAppearance(vmag); + assert.ok(next.sigmaPx >= previous.sigmaPx, `σ shrank at ${vmag}`); + assert.ok(next.alpha >= previous.alpha, `alpha dropped at ${vmag}`); + previous = next; + } + const sirius = starAppearance(-1.46); + assert.equal(sirius.alpha, 1); + assert.ok(sirius.sigmaPx <= STAR_MAX_SIGMA_PX); + assert.ok(sirius.sigmaPx > starAppearance(2).sigmaPx); + // Sprites stay point-like: ±3σ of the brightest star is a few pixels. + assert.ok(6 * STAR_MAX_SIGMA_PX < 10); +}); + +test('B−V colours run from blue-white to orange with the peak channel at 1', () => { + close(bvToTemperature(0.65), 5_800, 120); + close(bvToTemperature(0), 10_100, 200); + const hot = bvToRgb(-0.3); + const sunLike = bvToRgb(0.65); + const cool = bvToRgb(1.6); + for (const rgb of [hot, sunLike, cool]) { + close(Math.max(...rgb), 1); + assert.ok(Math.min(...rgb) > 0.5, 'colours stay desaturated'); + } + assert.ok(hot[2] > hot[0], 'hot stars are blue'); + assert.ok(cool[0] > cool[2], 'cool stars are orange'); + assert.deepEqual(bvToRgb(null), bvToRgb(0.6)); + assert.deepEqual(bvToRgb(9), bvToRgb(2)); +}); + +test('vertex data is interleaved per star and skips malformed rows', () => { + const { count, vertices } = buildStarVertices({ + stars: [0, 0, 1, 0.5, 'bad', 10, 2, 0, 90, 45, 3, null, 10, 20], + }); + assert.equal(count, 2); + assert.equal(vertices.length, 2 * STAR_VERTEX_FLOATS); + assert.deepEqual(Array.from(vertices.subarray(0, 3)), [1, 0, 0]); + close(vertices[STAR_VERTEX_FLOATS + 1], Math.SQRT1_2, 1e-6); + close(vertices[STAR_VERTEX_FLOATS + 2], Math.SQRT1_2, 1e-6); + close(vertices[3], starAppearance(1).sigmaPx, 1e-6); + close(vertices[7], starAppearance(1).alpha, 1e-6); + assert.deepEqual(buildStarVertices(null), { + count: 0, + vertices: new Float32Array(0), + }); +}); + +test('the committed catalogue holds the Yale Bright Star Catalogue', () => { + const pack = JSON.parse(readFileSync(skyFile('bright_stars.json'), 'utf8')); + assert.deepEqual(pack.meta.columns, ['raDeg', 'decDeg', 'vmag', 'bv']); + assert.equal(pack.stars.length, pack.meta.count * 4); + assert.equal(pack.meta.count, 9096); + let brightest = 0; + for (let i = 0; i < pack.stars.length; i += 4) { + const [ra, dec, vmag] = pack.stars.slice(i, i + 4); + assert.ok(ra >= 0 && ra < 360 && dec >= -90 && dec <= 90); + assert.ok(Number.isFinite(vmag)); + if (vmag < pack.stars[brightest + 2]) brightest = i; + } + // Sirius, α CMa: 06h45m08.9s −16°42′58″, V = −1.46. + assert.deepEqual( + pack.stars.slice(brightest, brightest + 4), + [101.287, -16.716, -1.46, 0], + ); + assert.equal(buildStarVertices(pack).count, pack.meta.count); +}); + +test('sky assets stay inside the 5 MB budget', () => { + const files = [ + 'bright_stars.json', + ...['px', 'nx', 'py', 'ny', 'pz', 'nz'].map( + (face) => `milkyway_${face}.webp`, + ), + ]; + const total = files.reduce( + (sum, name) => sum + statSync(skyFile(name)).size, + 0, + ); + assert.ok(total < 5 * 1024 * 1024, `${total} bytes`); +}); diff --git a/src/tooling/skyAssets.test.mjs b/src/tooling/skyAssets.test.mjs new file mode 100644 index 000000000..697c8f13e --- /dev/null +++ b/src/tooling/skyAssets.test.mjs @@ -0,0 +1,107 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { + buildStarPack, + parseBscRecord, +} from '../../scripts/build-bright-stars.mjs'; +import { + CUBE_FACES, + cubeFaceDirection, + directionToPlateCarree, + icrfToGalactic, +} from '../../scripts/build-milky-way.mjs'; +import { raDecToUnitVector } from '../sky/stars.js'; + +// Verbatim CDS V/50 records: HR 1, Sirius (HR 2491) and a nova with no J2000 +// position. Columns matter, so the padding is part of the fixture. +const HR_1 = + ' 1 BD+44 4550 3 36042 46 000001.1+444022000509.9+451345114.44-16.88 6.70 +0.07 +0.08 A1Vn -0.012-0.018 -018 195 4.2 21.6AC 3'; +const SIRIUS = + '2491 9Alp CMaBD-16 1591 48915151881 257I 5423 064044.6-163444064508.9-164258227.22-08.88-1.46 0.00 -0.05 -0.03 A1Vm -0.553-1.205 +.375-008SBO 13 10.3 11.2AB 4*'; +const NOVA = + ' 92 NOVA 1572 B Cas *'; + +const close = (actual, expected, epsilon = 1e-9) => + assert.ok( + Math.abs(actual - expected) <= epsilon, + `${actual} is not within ${epsilon} of ${expected}`, + ); + +test('BSC5 records parse J2000 position, V magnitude and B−V', () => { + const sirius = parseBscRecord(SIRIUS); + assert.equal(sirius.hr, 2491); + close(sirius.raDeg, (6 + 45 / 60 + 8.9 / 3600) * 15); + close(sirius.decDeg, -(16 + 42 / 60 + 58 / 3600)); + assert.equal(sirius.vmag, -1.46); + assert.equal(sirius.bv, 0); + const first = parseBscRecord(HR_1); + close(first.raDeg, (5 / 60 + 9.9 / 3600) * 15); + close(first.decDeg, 45 + 13 / 60 + 45 / 3600); + assert.equal(first.vmag, 6.7); + assert.equal(first.bv, 0.07); + assert.equal(parseBscRecord(NOVA), null); +}); + +test('the star pack is a flat, rounded column array that counts its drops', () => { + const pack = buildStarPack([HR_1, NOVA, SIRIUS, ''].join('\n'), { + fetched: '2026-10-19', + }); + assert.deepEqual( + pack.stars, + [1.291, 45.229, 6.7, 0.07, 101.287, -16.716, -1.46, 0], + ); + assert.equal(pack.meta.count, 2); + assert.equal(pack.meta.dropped, 1); + assert.equal(pack.meta.fetched, '2026-10-19'); +}); + +test('cube faces use the WebGL major-axis layout', () => { + // Each face centre looks down its own axis … + const axes = { + positiveX: [1, 0, 0], + negativeX: [-1, 0, 0], + positiveY: [0, 1, 0], + negativeY: [0, -1, 0], + positiveZ: [0, 0, 1], + negativeZ: [0, 0, -1], + }; + for (const face of CUBE_FACES) + assert.deepEqual( + cubeFaceDirection(face, 0.5, 0.5).map((v) => v + 0), + axes[face], + ); + // … and the first texel row and column follow OpenGL ES 3.0 §3.8.10: + // on +X, s grows towards −Z and t towards −Y. + assert.deepEqual(cubeFaceDirection('positiveX', 0, 0), [1, 1, 1]); + assert.deepEqual(cubeFaceDirection('positiveZ', 1, 1), [1, -1, 1]); + assert.deepEqual(cubeFaceDirection('negativeY', 0, 1), [-1, -1, -1]); + assert.throws(() => cubeFaceDirection('up', 0, 0), RangeError); +}); + +test('plate carrée is centred on longitude 0, growing to the left, north up', () => { + assert.deepEqual(directionToPlateCarree(1, 0, 0), [0.5, 0.5]); + const sixHours = directionToPlateCarree(0, 1, 0); + close(sixHours[0], 0.25); + const eighteenHours = directionToPlateCarree(0, -1, 0); + close(eighteenHours[0], 0.75); + close(directionToPlateCarree(0, 0, 1)[1], 0); + close(directionToPlateCarree(0, 0, -1)[1], 1); + const twelveHours = directionToPlateCarree(-1, 0, 0); + assert.ok(twelveHours[0] === 0 || twelveHours[0] === 1); +}); + +test('the galactic rotation puts the Galactic Centre and pole where the IAU does', () => { + // Sgr A*-adjacent origin l = b = 0 at RA 266.405°, Dec −28.936° (J2000). + const centre = icrfToGalactic(raDecToUnitVector(266.40499, -28.93617)); + close(centre[0], 1, 1e-6); + // North galactic pole at RA 192.85948°, Dec +27.12825°. + const pole = icrfToGalactic(raDecToUnitVector(192.85948, 27.12825)); + close(pole[2], 1, 1e-6); + // ESO's panorama: the Large Magellanic Cloud (l ≈ 280.5°, b ≈ −32.9°) sits + // right of and below the centre. + const [u, v] = directionToPlateCarree( + ...icrfToGalactic(raDecToUnitVector(80.894, -69.756)), + ); + close(u, 0.5 + (360 - 280.47) / 360, 2e-3); + close(v, 0.5 + 32.89 / 180, 2e-3); +}); From fb81e155b7dfd99b9bd156925b4c8ed6f3efb57d Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Mon, 19 Oct 2026 19:43:25 +0400 Subject: [PATCH 02/36] fix(sky): keep the Sun and Moon, settle outside the ICRF tables - Pass the custom sky box to the Viewer instead of `skyBox: false`, which also stopped CesiumWidget from creating the Sun and the Moon. Guarded by scripts/qa-sky-sun-moon.mjs. - Outside the IAU 2006 tables (before 1975, after ~2050) the preload resolves without data; remember that span and stay on TEME instead of preloading and rendering every frame. - The anime style no longer cel-shades the far plane, where four bands turned the faint Milky Way into blotches. - Paint the planets out after the star-removing opening and with the ring median, so no brighter plateau is left; faces rebuilt. Co-Authored-By: Claude Opus 5.5 --- scripts/build-milky-way.mjs | 29 ++++--- scripts/format-scope.json | 3 +- scripts/qa-sky-sun-moon.mjs | 96 +++++++++++++++++++++++ src/app/viewer.js | 8 +- src/data/local_data/sky/README.md | 9 ++- src/data/local_data/sky/milkyway_nx.webp | Bin 40374 -> 40384 bytes src/data/local_data/sky/milkyway_ny.webp | Bin 42866 -> 42904 bytes src/data/local_data/sky/milkyway_nz.webp | Bin 45584 -> 45580 bytes src/data/local_data/sky/milkyway_px.webp | Bin 36318 -> 36230 bytes src/data/local_data/sky/milkyway_py.webp | Bin 41812 -> 41794 bytes src/data/local_data/sky/milkyway_pz.webp | Bin 39850 -> 39850 bytes src/sky/starrySky.js | 26 +++++- src/sky/starrySky.test.mjs | 28 +++++++ src/styles/anime.js | 8 +- src/tooling/skyAssets.paintOut.test.mjs | 64 +++++++++++++++ 15 files changed, 243 insertions(+), 28 deletions(-) create mode 100644 scripts/qa-sky-sun-moon.mjs create mode 100644 src/tooling/skyAssets.paintOut.test.mjs diff --git a/scripts/build-milky-way.mjs b/scripts/build-milky-way.mjs index 4a482631d..19b2ea1e9 100644 --- a/scripts/build-milky-way.mjs +++ b/scripts/build-milky-way.mjs @@ -15,12 +15,12 @@ * * Transform (deterministic): * 1. Resample to WORK_WIDTH×WORK_WIDTH/2 and convert sRGB to linear light. - * 2. Paint out the planets the 2008–2010 exposures caught (PLANETS): they - * sit where today's sky has nothing and are far brighter than any star. - * 3. Remove stars with a morphological opening (minimum, then maximum, over + * 2. Remove stars with a morphological opening (minimum, then maximum, over * a (2·OPEN_RADIUS+1)² window): anything smaller than the window — every * star — drops to the surrounding sky; the renderer draws catalogue stars * itself, sharp and in the right place. + * 3. Paint out the planets the 2008–2010 exposures caught (PLANETS): they + * sit where today's sky has nothing and are far brighter than any star. * 4. Blur with a three-pass box approximation of a Gaussian, σ = BLUR_DEG on * the sky: rows wrap in longitude and widen by 1/cos(latitude) so the * blur stays round towards the poles. @@ -234,16 +234,18 @@ function galacticVector(l, b) { } /** - * Replace a disc of the sky with the mean of the ring just outside it, per - * channel. The blur that follows hides the seam. + * Replace a disc of the sky with the median of the ring just outside it, per + * channel. A median, not a mean: the planet's diffraction spikes reach far + * past the disc and would lift a mean well above the sky. The blur that + * follows hides the seam. */ function paintOut(planes, width, height, { l, b, radiusDeg }) { const centre = galacticVector(l, b); const inner = Math.cos((radiusDeg * Math.PI) / 180); - const outer = Math.cos(((radiusDeg + 0.5) * Math.PI) / 180); + const outer = Math.cos(((radiusDeg + 1) * Math.PI) / 180); const disc = []; const ring = []; - const span = Math.ceil(((radiusDeg + 0.5) / 180) * height); + const span = Math.ceil(((radiusDeg + 1) / 180) * height); const row = Math.round((0.5 - b / 180) * height); for (let y = Math.max(0, row - span); y < Math.min(height, row + span); y++) { const latitude = 90 - ((y + 0.5) * 180) / height; @@ -256,10 +258,9 @@ function paintOut(planes, width, height, { l, b, radiusDeg }) { } } for (const plane of planes) { - let sum = 0; - for (const index of ring) sum += plane[index]; - const mean = sum / ring.length; - for (const index of disc) plane[index] = mean; + const values = Float32Array.from(ring, (index) => plane[index]).sort(); + const median = values[values.length >> 1]; + for (const index of disc) plane[index] = median; } } @@ -323,12 +324,14 @@ async function main() { const { default: sharp } = await import('sharp'); const { width, height, planes } = await decodePanorama(sharp, file); const sigmaPx = (BLUR_DEG / 180) * height; - for (const planet of PLANETS) paintOut(planes, width, height, planet); for (const plane of planes) { extremumPlane(plane, width, height, OPEN_RADIUS, Math.min); extremumPlane(plane, width, height, OPEN_RADIUS, Math.max); - blurPlane(plane, width, height, sigmaPx); } + // After the opening: it sinks the starry sky to the dark gaps between + // stars, and a fill taken before it would stay brighter than the sky. + for (const planet of PLANETS) paintOut(planes, width, height, planet); + for (const plane of planes) blurPlane(plane, width, height, sigmaPx); const black = luminancePercentile(planes, BLACK_PERCENTILE); const white = luminancePercentile(planes, WHITE_PERCENTILE); let total = 0; diff --git a/scripts/format-scope.json b/scripts/format-scope.json index 9024224fe..fe15d0ea0 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -1067,5 +1067,6 @@ "scripts/build-milky-way.mjs", "src/sky/stars.test.mjs", "src/sky/starrySky.test.mjs", - "src/tooling/skyAssets.test.mjs" + "src/tooling/skyAssets.test.mjs", + "src/tooling/skyAssets.paintOut.test.mjs" ] diff --git a/scripts/qa-sky-sun-moon.mjs b/scripts/qa-sky-sun-moon.mjs new file mode 100644 index 000000000..12ec7e780 --- /dev/null +++ b/scripts/qa-sky-sun-moon.mjs @@ -0,0 +1,96 @@ +#!/usr/bin/env node +/** + * qa-sky-sun-moon — the custom sky must keep Cesium's Sun and Moon. + * + * CesiumWidget creates `scene.sun` and `scene.moon` only when the `skyBox` + * option is not `false`, so replacing the sky box the wrong way silently + * removes the Sun disc and its bloom. Points the camera at the Sun from + * 22 000 km and fails unless both bodies exist; saves a screenshot. + * + * Usage: node scripts/qa-sky-sun-moon.mjs [--url http://localhost:4317] [--out qa-shots/sky-sun.png] + */ +import puppeteer from 'puppeteer'; +import { mkdirSync } from 'node:fs'; +import path from 'node:path'; + +const argv = process.argv; +const option = (name, fallback) => + argv.includes(name) ? argv[argv.indexOf(name) + 1] : fallback; +const url = option('--url', 'http://localhost:4317'); +const out = option('--out', 'qa-shots/sky-sun.png'); +mkdirSync(path.dirname(out), { recursive: true }); + +const browser = await puppeteer.launch({ + headless: 'new', + args: ['--no-sandbox', '--ignore-gpu-blocklist'], +}); +try { + const page = await browser.newPage(); + await page.setViewport({ width: 1280, height: 800 }); + await page.evaluateOnNewDocument(() => + localStorage.setItem('gev:first-run-mission:v1', 'suppressed'), + ); + await page.goto(url, { waitUntil: 'domcontentloaded' }); + await page.waitForFunction(() => window.__godsEyeView?.viewer?.scene, { + timeout: 90_000, + }); + await new Promise((r) => setTimeout(r, 10_000)); + const info = await page.evaluate(async () => { + // The page's own Cesium instance, as Vite served it. + const entry = performance + .getEntriesByType('resource') + .map((e) => e.name) + .find((n) => /\.vite\/deps\/cesium\.js/.test(n)); + const C = await import(entry); + const { viewer } = window.__godsEyeView; + const scene = viewer.scene; + scene.camera.cancelFlight(); + const time = viewer.clock.currentTime; + const sun = C.Cartesian3.normalize( + C.Matrix3.multiplyByVector( + C.Transforms.computeTemeToPseudoFixedMatrix(time), + C.Simon1994PlanetaryPositions.computeSunPositionInEarthInertialFrame( + time, + ), + new C.Cartesian3(), + ), + new C.Cartesian3(), + ); + // Off to the side of the Earth, looking straight at the Sun. + const side = C.Cartesian3.normalize( + C.Cartesian3.cross(sun, C.Cartesian3.UNIT_Z, new C.Cartesian3()), + new C.Cartesian3(), + ); + const destination = C.Cartesian3.add( + C.Cartesian3.multiplyByScalar(side, 2.2e7, new C.Cartesian3()), + C.Cartesian3.multiplyByScalar(sun, -0.6e7, new C.Cartesian3()), + new C.Cartesian3(), + ); + const up = C.Cartesian3.normalize( + C.Cartesian3.cross( + C.Cartesian3.cross(sun, C.Cartesian3.UNIT_Z, new C.Cartesian3()), + sun, + new C.Cartesian3(), + ), + new C.Cartesian3(), + ); + scene.camera.setView({ destination, orientation: { direction: sun, up } }); + scene.requestRender(); + return { + sun: Boolean(scene.sun), + moon: Boolean(scene.moon), + skyBox: scene.skyBox?.constructor?.name, + }; + }); + await new Promise((r) => setTimeout(r, 4_000)); + await page.evaluate(() => window.__godsEyeView.viewer.scene.requestRender()); + await new Promise((r) => setTimeout(r, 1_500)); + await page.screenshot({ path: out }); + console.log(JSON.stringify({ url, ...info, screenshot: out })); + if (!info.sun || !info.moon) { + console.error('FAIL: scene.sun and scene.moon must both exist'); + process.exitCode = 1; + } +} finally { + await browser.close(); +} diff --git a/src/app/viewer.js b/src/app/viewer.js index 582ecd9c5..a09836775 100644 --- a/src/app/viewer.js +++ b/src/app/viewer.js @@ -120,9 +120,10 @@ export function createApplicationViewer({ container, creditContainer }) { selectionIndicator: false, infoBox: false, baseLayer: false, - // Replaced below: the default Tycho-2 cube map is too coarse for the - // whole-globe view and its JPEG blocks show around the Earth. - skyBox: false, + // Instead of the default Tycho-2 cube map, whose JPEG blocks show around + // the whole globe. Passed here, not assigned later: `skyBox: false` would + // also stop CesiumWidget from creating the Sun and the Moon. + skyBox: new StarrySky(), creditContainer, msaaSamples: 4, contextOptions: { webgl: { preserveDrawingBuffer: true } }, @@ -134,7 +135,6 @@ export function createApplicationViewer({ container, creditContainer }) { // render loop. See app/atmosphereCompat.js. applyModelAtmosphereWorkaround(viewer.scene); viewer.scene.globe.show = false; - viewer.scene.skyBox = new StarrySky(); viewer.scene.skyAtmosphere.show = true; viewer.scene.skyAtmosphere.atmosphereLightIntensity = 18; viewer.scene.skyAtmosphere.saturationShift = -0.12; diff --git a/src/data/local_data/sky/README.md b/src/data/local_data/sky/README.md index 8c2d4a0d7..e224e7bb0 100644 --- a/src/data/local_data/sky/README.md +++ b/src/data/local_data/sky/README.md @@ -42,10 +42,11 @@ Centre. (). **Credit: ESO/S. Brunier.** **Changes made** (CC BY 4.0 asks for them to be stated): resampled to -4096×2048, two planets (Jupiter, by position) painted over with the surrounding sky, -stars removed with a 7×7 morphological opening, blurred (σ = 0.4°), -reprojected from galactic coordinates to ICRF cube faces, black level set at -the darkest 25 % of the sky, gamma-encoded and saved as WebP. Build: +4096×2048, stars removed with a 7×7 morphological opening, two planets +(Jupiter, by position) painted over with the median of the surrounding sky, +blurred (σ = 0.4°), reprojected from galactic coordinates to ICRF cube faces, +black level set at the darkest 25 % of the sky, gamma-encoded and saved as +WebP. Build: `node scripts/build-milky-way.mjs `. The panorama is a photographic mosaic, not an astrometric map: bright stars diff --git a/src/data/local_data/sky/milkyway_nx.webp b/src/data/local_data/sky/milkyway_nx.webp index 6c6ca774ae57380799b04f181cf70e9aff121a5a..d74db8e5222e2a29d69eb961b040b2d202db49f5 100644 GIT binary patch delta 40178 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 C7VYK$ delta 40169 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

io0aL4C6?&OM<{$Zt_(cJty$yA+z-1h|Eaa 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 YX7TVqc4V%%g@A2HfaG(83bp3|0PSKx+yDRo literal 42866 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�>{mWR^N`hp zQ8Z;J3!LPh@yhua`pcLb!Q%M;Ov>c*y3$%bJ z?(IeECH_fEmH{!zo>_0oyXi}5*uj7I!SW~EgqE>p&qV}^g>`(;-1rfjGh~44Q1u4g zq-RzADA9@C^$HZv0fx|UN|;&~GMq20^v1|0LFDLyQfzO_=qlp_aT^vBWW?})A=lY9 z9tD@^dcFj}(#@uWX)P7Kg64^R^xrm4IbwVuM7#j{p7&IK`K?} zCZ)Pd>34w;8L#9l2q_aSZPRkCDoT{`+zciK#=|g6C^L zO{T3ZQ6jUgUFh6(j6m)=O3Sgc;~?=sUJgdj3HJ~Zfpm%_x_cUOV=y`GEE=r)YXkPF zs!BOP%MA6qWS|JSfSP9N_e{8YzzV6q1zyK>sD=&@qvijJ`ZFp-)d%MNab8SIl?-x8 zsM?cXS?P=Y*CVg(AB5QQKs_|svbD(i7^Ydd#4?Y1T=$UOH7&q;t3+}wvnO#-=D>zY zxzXte(g+Bo+nlpdGL!}s7gi^4ChlS*9g^mF%kXMe01wQM0Ga|5P%4gBN4055cV8j` zDe@5d3|LK_K>L4yqgL_Fd%|C2T*-9SOo|+2voCL07R;*fiAuTg@_iL%cw@-D z->e(9EFCO7)$s6;C}c>t@FV%*^Dw0>eIw>ikVLu38w2*uy80BLAkK$#+C|oG6y#EW z)hDI(pnu-GEisbF@^9E}Fn{uH?+ipY+P3pW*yG8p9xU3{aJ$B3gM4@c3e9l*bUnG{ zigyUY(Ey}j5$?AxlR9IwrSC-JTDX#JbsMMu?LX_|);Rs;ed$A|RJ*kEwf<75SOxpd5~|;0rKDz8lM)uo(qPj4g~V*1NxLIdmAuxOp|!W`p<~ zX$Z1}eGJ9s!+hJ07|u-}M!4@hq1fH-hRt|%TDkes{JOkXkqUCZ;8fO&=mNf?~n}ol1^Q9RnXg;KFe=in9zH>(i8P*HY36mMe_a z3)j>`)`Ex-7LFVtS+5jT3U5!hfaOr)^YQB~<=+@iZlb_Q9g+!7+XdYZszH+{%=v5r zZQc=o8pDm={1#hw-go?UXkP-v0V(VoMw`E^+0!8WAD1n|9XbBNQhuD@;w6>?1<*)x zNxk2i4ldgypu8Z4HpIWXC~H96C(V|dHXaQ_hJYDUANO!npQ z1-v}@^CBqhABD@9<6g`n_>;2`JRrP5r~`v&9j~x{XPYlQl0u1wJ%jS}s5Vx#e+lk* zX#UD``EI~i8+(f5#}KtOXVd_}DV zNe@;FKr1_K*=}99%~52cYCiR$gEGbT=+rajRhK_v_eItvY*{ zud#o_h0>P1QA?XXnN*!Rw+R@*H1OtK!oRhHiI;aLtx+%Z;ix(#tdCi~u3f6+8GCg# zBzCy#WaGMPujhlB8K87GfRjVza(X^oN3)!hJEzL{Mk#4NWk?SwlT$k!10*Q+AE>EZ zf9l`!Tt-b5j*XkX3BYiwQ#jdGEA!o{kNP6Wz|0zNdbUz56P6WPKIX zRB%z5*985+irwRDC5M?JzLlsVznybC)n@rt&9}XwqnoE3^f?4ZG&(fwb&H98&ok^P zU@amTYp|EMD%vv^1Anj3zlPMCHcz~r;w67wji0qy|5NR-(oM$Y;Y96AkXIL11Nnz- zkQ23rTpHp0>IUgB=;i_C!8{QpUGxtsJ*h|M3~|VDJ@nLG>}%w*z6u^*ZIgY zt-8sUq22pZvHcWj@+lMeO#G+I?%jz%fqu#ibnyBXtV*V{44PfmY@d9i8=Luh9pR$d zq(Xmm7ss^iZx75}+Iw(t35j7;gZ2hX_K1w+g^a*{0#yai028-9Ms~ay4Fi;>&pdJj zIhI&7-YojH`cAR9z2*|(JGSP2%{jXo(YU2k#aI;kJuGJ3sU#CSOm&aI(}8078zft; zjpXTT)D@1PUZ6L7np3A$ZkGbM4iQC0m8mQ1gnnOx&yqY7+waQ2RH>)dR{RDu8Zht4 z!&6zs1?n2KH|Zx$o}gPmP)sd{N2_+|0rvRH9h3jprFObaUx5FdIoX=H710M*Al23= z*xb%<1>%eESEhoo5{yx+E;T*4QqXD7WA~cFL^;#MYv>?kLG0|43Q$VL6YDDtItY9* zz8UKSHL1T-&=3Q26Jg4J@#lDRPE`ReBKcU;TyH2h)diQZxJ$piuo>52 zv?c{?yiHaPeV~VF(A6b^8}bN4G!a_1Z`sc>UHxBg1jT<42 z|HJl_PEw^=fzs?w<(K!_bjSF>8pdD{p;hV#WG+b~A!>6iltr8XwY{G{`iQb%;DLTm m>2UUN;9F<8q8S=@7j;t~1G}(Wzc^6Qbb&ZK_oy&HYybcmPyX5f diff --git a/src/data/local_data/sky/milkyway_nz.webp b/src/data/local_data/sky/milkyway_nz.webp index 31cc013e435ea6af53894f0e2dd4e641b6b08179..de654a4f2a9bae97d18dfa01a5a33df17c6477af 100644 GIT binary patch literal 45580 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 literal 45584 zcmV(xKAMM6+kP&gp`u>b(jO$VI;DgXok1U?lAgF&GZh-FYH0HRu3 zzWmb()MN}OLb?q_WLuIM}agWaf{%4|XAS&KRIohNCfB*IRpYmV8 z|NQ>P{eOC!`TD2-UYp+Y|9_sp|31b)xPSQdoAklz_x;yKH~;@j&HP@AumAqCeIOtI z{lEA^KlgwB^{w$A`al2w&Hvr&uj8NM|Ns71r{=`{>;L~ZKX)bv|L;uy0RQh_*Z=i4 zi}VGXGe00JiI9s}#atk6-GS|60C9cGJ9GbM80$-Yz*&!lw(&lFa^IG=KY_gl#m33# zKkRxwsHkYi_HUf$-F>I}*OmLX+=TaSJ`y>7dHS~KTSRalZ;Q!x6nk3ZUg2F0$fM(!E#TpU0ju(uW!{1ZKgp~_C zuKL(X;+BwdgYu<6@;c!AAKu1QTvc}f`Tno_Okd#Y#h;ZU{pqHre9fC)N_sYnU$~II z4nrn^;G2GDp4226lUL8kSfUSWP6KcW-suowso zk65KiF%m7@s#-s#LgW*u4g00dRk0i424F8VT={xml7gJeg7NDO_VE&1!{nbcol}#4 z?1WQ_6iq&trH7>{$-f-dH9j~`0l`jVQ>hcPlb$^tcPQ>aX&l?#U#7~DCe95mv+~AY zHXSp~R!Cg+WAeLQ4<-QZ%lGzK;?WfO1n3l=$4yz3Bkj^fh6b}n4kcuJnHuoAj&p2l z6Xuf0z@lRUpT%c3YMSH~ibwUb8(1%@Fi08kDcGlfgN?8pT0BLI#REfw-Vm zWc%x&Z9#iEeWO~jW~eysWDMX&Y#{w~Vi#}nCcQR#21WI!2i-lCPZU@}nZW$FO2bJ8 zsJ-glegx|e3(hagCv*Z4G`|aFzJIfv@!Lm7r`?99MikOUrnJk9_{s!4@1uDq9i^(g z#4Ct!^-^W8iNj~ft8160yVy38JSMC!DT;1)#EV>Akv?T#yP*P7UBvf|$tV|#us#E7 z7GLvx5PkVHwar4v-is%EKwYLxY{J~q5oG|@vTL#i0`yAlxEwxxtMwOnmDhz^H3Bn3 zEt=$r3eAqVi7tP49gCe_WpclJ9~{H398k<&RS9m|&;Sn&kr`kTog614&8se=?AiT- z@Hye$bUPkx?R@_Z9#_tVxOkw2@T)($YBN3zeg6qb$QWfp`i9APDj0IItzORm-sYBARQRLheRMGnzjiub;<3Sj)yZl`1n-+ zkACgY%t7noMu!D*`1)70whO^-F~fS`)Inzrf!-CEiBT94fkxWEIfn$D+%Ux-I;&>*4ghi zl~nk!f)~xHu{r9G1#%HU$kqLa96BDHBjnD7JAhF2rsy>&It#BU&w|91WJYV+An3me zcd&Q+MQr)G?y3_B44?6@7*j(3uCc^1LWqlc5+@0Kw?y3%NGqR)JFOf|QVHk<_4+a9 z6)pFTV@2M9`RJxX@`e2xq!@&*L!BBtEc#)7o&%!okU&HIAy-op;pg?vx%t=J&3p6N z5Z#!|fog_q&w$+Tdnbc~saj}Mly{qK;eWp@{m5Yhh1CZ#4LXN5^~#;0Vsun$d3O76 zdjkecabqDbZ52u*$>8=rz|u-0o*bzl!DO>vNg)OF`2~8=LPC<6Sp#SC?|x6MI;`3A z?dY@564>mwWK?GJ+DiBLAFX7whXYI>N9}{zp%-xFH_X9elc?h0l{?wv5yc^!_sX^4 z$3&BtAmEv&ntzuqTP$#sYAOp6C_nVb=^VFvr^58vd7Gh_fDq0Ab`SWN<@VBlg*sZi z>i=o+tJ6R~PgPEf;4j8&&UkS1N1kw{e<&Z#VC5W(D=~a52oJb6Th$H86azCXkIP~j zv1bS8WAl%4ft`mcn}il9G{RGum4fIzps!%NSwGf-xz5BuQXGb3}!5~!|Nm4VL=4%hs-wdy&I z^}-`4`W>CwnW_Ws#{vh(9e$*9cSJ zB}YnDbNz;_0q;Vr>3~`XDr?UI!oj{e5}k)E0DC7(_;I>gc-+1B)(&tNwJ^6^y+Oc( zuQfC;mqvdjTi_H@92=0Y){EA#`7~ffvFgnTFR@(ZoAdP4WuNwgrg%`G0zdVd6bJ%D zwuBktmGjO+73LWSZvyhBvP(&ke28IBp(5y;)kciyUk^<%DFMp4$2)o0;7%q;#AvjU zCEwR0@MX&S19~p(1bp~OZB<;wv6)bh3O$aYStRip7@gn(E^tzqt7t*Zcx@GjmpV+< zBP!e0OD)p2RC*d#x;ZPVJ(0Kan%X$=cKVp5z|M?~tjo?8!*hi*eyRg#R-*=3A0g&T z@Imf`ufG*|q5?gR(wco-0kJbe!ClxoDvl*a^30hE`ocmazj4ItS8{rJ@_%EuNnm)) z46~D6jHJ5q9|Ot5jmC&cvdTvY=Lc$5w%Nq)FFc18zgjKqH*1=}oP!+huTBq?paB~L z)pF}KfI@wD)9#WA4xuK~nQehK8h*;v0bmsD1s2_zF({<+jO&pj?O3f8)9(`!yo!=F>U zvqfP!i+k!<*8V5KbJj_mGgbsT$$s!gPwV#8|JvxFut7Y)dyUK9mqsi>9B>n{@pKQ^ z&9dZJQZ}lJSrc_=3gBNn_g+hLci2$T!4Fh4dmsSy_jSGfnL_Qd<5qQrUGBjTar81| zUr?keOQ`H4*K3>;EL0+Tz_By2Uuq(DvsHwWSw8(B2X$0-l%x!4(A^eze6cW}6VeB7 zxg1&z9gl#;hwZ6j_Z1g#cq2|ZHHO5@Sam2Ty?lYy&-jjX$-p-fPL0xFiKpca-fl0G z6Z6;cd9K$N;k61lK||X!>N;1&%MHA$UHq1wl`p=>l`?s}c{l9nWZdEfOSsIb3YPLS zBj45mab(stQ}Tbjj3R6{&NFQ9Lp-qL31gwLXHQcnwy_WIklTGoa|)9m>+?&jUoHQw zw>l&HCp=q>50JPh!%V`^aSnE8q5b2$WNMr2=lc7zp!uV4OZJHQrKB;1oPaouoY%w$ zNU`N;vciN>eO$ej8!H@f$EGsb5vFgk{r}UElFlG`t{m5#Vr1iKqwv!lU!jQ_d|jsT zVSa_fE&T&ZB8N4s+*TH(R}faYsqqF|pqVl+JfNlsW+^6f)^!+CcSq`C2HnOQ>x#D4 zSIUhx%V)4GJ9)N;dl}v}r$hw0_-zE!+9RIZi_yE|0TV2`;QL5+Proy$!Bzl)YzR&Lh%x z5a!p^{catYoOrW}UH|#vCbp>r=IdPCBX}Uc_CkGdivy5n1p~A`ioXVG#yx0Y!;c@b=L8+t8A_+w*kyDNkzdP zVCJXV=WB6s3PBW%)iqsvgR|LjjwT53eerRQCT@$Oh*41i*YqJV1bcoD9!5DWxx#bkxA%kF}AT1${n6X%Oql zqFjq`VIUfhfA(-efMlGQvjf4Rs`5}H^nBEE!7ePcY@tAZj`~Coj3dkR|9bCa9Pd>S z(b=A0u|1A_yr$suYVAj$fa?O*49h@7V#h`{B`@Od`vcFg*8Db2$gZFVS^UL+al)tR z+0$|7#AV3uANlhu2SDh-;$P*8ogJ5@82K+P4c{L2mqXrxKKnJ&;Nf$OLq-wf*tYDZ9X&t z_=Vs~h)Z)(R6;t0#0@{DpvapteM@3UH*wj)XgTN_QZ67vtjD(U zQSMKbn~msz`9v3)<;DJrZHq1EsMMua8-AT8`Br|BEii=r-6bAbQZmh2!N(WfwnWr^ ztrKC~*Sj6wILYMk4peDdvV}CDH{f2EfOD*(GVzaSX3C;W`EhkpP;{4Qv}_f9ZJs-; z475g>!GCM9TNY@yX+wWxGLF6(u)v5$VmMB@i*xSP$IeS*!7hwlf#!RJ{=MfF^jF~+iu5LEm!KDC+r*g^+^=Rz%xh}#+Ro&=hhYqtYfzGoiWW6r9fA{@qKaF#NB_rw z%N03*2>E#(#=vb_dzs?=h(}lk!~+5wl~smhrJT1YL~c{eMDy`_sf%RRy=)ZVC7l<2 zN#v{=o*CGLwpCwkpXc6pW2BLmQJ()0jRQ@iMS>d6vC}|~+msFI8SVir-^~?zw?Z)p)wKx+O~Po0 z5b)BC8}z=N$m6!2ZC$9v!3l70?r_qT5!xX!kGj&1NOJ`sg{FQ*8okS(NUzdt({Fzm zlVN8h-8|Jv5Ie4g4AV3k`Q8` zaj>zLw`GhX`n#mK55FCJXmxfbsOc&-dKT-O^MbO7?K>*y*eY|I ztD@BG6OJF}|FOs@?7PvYjKJ^AcSUl%eN&5j)6W#Hi<>+4 zre2|fSJwOw2t%`1gH8D+2(s^ClGbKCQAk`%KI@l?PMmrC=>3NJ&Kg^uY=Y%~?A9CH z6TaO*_ZMb`*CtjxgL){Rr;|%8s_VSo7b?aggeleRMH%V9H|E zS$F}q<9b->owccSy2PsR*bIDj|RvC~iRX%Jv&g zc+{UIVB4o@OZzgvR?9ej9|`-L!h99nJ@<8KZuI@TLY5}@;}bpB`CpCdKar^9-rcCH zDelq$+54?s#%t?FON5>W6XW2kh zGRGkRp!(6?ud4 z-`O!To15+1VV=Y)G`x-}H2h@zUQ7ZcxaDGekb%^+1L3uh7okCGwti^Pbc(<8oX!Lu zf0O`b%l4BJ7a00gwh$sAE0da9qYfbI5l+prymT<+gu&?fjda^3`GIUW@ex5F{Yjnx z277pS>S1F8NDx*RsQb*pkUr`QrHZh8F&zGK{SH#Lh4~2#|3BOf;BPwMmN= z6Ah7_$dqQ-ce6CT9^#64!V&5(-Nnw4WnE;*AEvi6{Hj_kJ{=<<&AeN0X!E^~5=0?) z&0S(yUL}ltMYa4~lVK`_sowKX4w)~*^6%In@AYdJ0OEiUlkEEoiMuH%p829DNgTt? zf6OlgRd~qFT2qcrUB_woIEJXMD-$mNgV7J}wkd&BdPX;QjWzM|6Sb~65836Uoz)5O ztE70EDh1h8<2kxgGu!bKhus3EJH^&_?A%}89-oT#z71A2Y%d>x6rCWr0lJ(%$`avL zmF@~{kamb7d&j?`w?(6%yaiWT##Qi5iozufCWmWU<%0$>4GsQ$Q6?3D`%GuvY*CFnaYZzcVub>c(X13 zqP7kxsd@6uE>a}e3jV$A5U)>C^RsE6I2)^TmVlkxncbe8-(-`9tov0V$LQFtQ7D12 z_@I&&SpH~E0@c#*%kX4MDWhh0Su|-BxCTvYSMTM-6^?U^9**i$Hibd` zaqoGpRS`2-wwFVqa=fuR0a5cBj)gmWM+b|8?k~)f7p<~F%!6ux8_t(GAJ>}JGfVBt z4T?fRQQ8o=wUU~hicFAZNJpl&9N{~VC*P<12VS=EwUhe6^yn>n@IVW@8&r`wkwMs3 z7BDQ#JpYkRHl>!8Uk1FknDzj8RUG#gKQ5&&l%viIrU>zQDMR1Y8_R|pT9VT7$MN7|1TshTA1d2X)IOVG0YQ?KiLI@m=;RQ zGryj@C$|SLFxy47AyF{%&}AdLk#dV_#0)*@FgAMOJv|*NBI?*r63numXqTE7KDyQV8XM9Mb|mSp zQL9Gz?*}<12*cW2|B=3*$u#@h#hfkX_QnBWuvc8 z2npxCAXff>yt~d`4&)#~A8kwyf~1oGCHVtz;Y&p_Cpo^T_meiqKrNeZi`9XzcjG_# zp&L?k<(8(BSStjP`)=g8a2VZQId+z++q&YU$Fn9lL;RrLc3 zyS!n-yNzbqCZhaEavyZ6kw;<>as=2rcmwr2iR8KK8|R^DlE7%-Vz$O26E<@QniRKY z94QcqRa-mdU!uk5*ds4>rD{H+x5Qw6Fbk^83XF3((CM_;z%kM%B*~3X{Y1PmRwWFX zmTDw(eD2Aw-i7tb@!daMvrZE3S9?WH|IULX=F0p%WPtQhC5++jU3)or;YFfesr#q=WW+rP0TMtCyl!m?e8FKox=wdSY*+MkDmXThEGcWq-{L zT!h;M3!H?1n~ErkdSz}%){Jh7l#=$UeVA;?{-Hi5PsFhbzpY+>T3-shYf_s6G2owy zuT0{lQySkX0WjdXQf)?I%Iw8s^`guTg(=V9)|1x0_5fY35Ek(&j`#bg z%#uJcfgr#YJq(N_)F6Wy9Cc{ z28U}lb~9QKO8U7B(+NIW)SW@iG99Ak9q006FaAqSrI=)-NQ2d$|9w!!Mp>}25hpj+ zHZ@*>L1=N>4}C>LUAAiyvI976iZ>Aq1T+L(#uUz%i&s~*veF=acIO4yl9Az8I|L2F z+3$lW8d-4RyC?sOMkKQk`UyGgnsfNKNkFjOXDPf@^td#yhZyp{IMUdFZD~N#EY=&j z5Su&dQPR)h?C#9`8}i(EG$rNwtX#L{wSjjHMn@hr@te2I8sOgI|CB5BrW7njq3i_Q z;$dqAVmWNK9@X@y>~QSanAXw7|DEgj814=K2BxXt0tCDGz`u-=^QdecpIAbh&OHVG zB5J2PJId7BK@>1mkFmMiMcC2&nzSDhy{{~f%>?#@jZ3AZx41i0R4e}vp0k8OUrLb+ zH*XP6!Z9ZCY=`pY-~22`gSPcQ<`o+|3b<**8n6mj0XhY7o%aYQ6`2F;eJr`E)FPSt zx3v#f?a&PLbEI7Tx!Y+V#bq>oQJVpRn4wGzJ$C+FM%Rb059=0YTL*@lW5ikoHNgK)z^t2(pd zIAxGTE+0Fsx>xIR-mG9?M1I#76knYNioMSe+&`!s?{;l1T?QkTBQIM+fD~oDIez14rO2L?34n)0dAR-;v{JDCsj#t--5gQ2gMaM z>IhwA|L_^N2n3P|3fdZovauf$OhJe_@M?XF$_>>fi;$w-(BAyqwg8oG(CEzGzFqOO z0i;_5rSt@dsPK;PCF{hZSWaIMuFdqcJZXr|nWChhRR_};d{pGx7G6=1mL)6Yl1Y9t z*99(Ee=E+II#N01$Yo4Zgi%WAY6dXi44JnLxFx+NcLs|3wprP`uXE;>puaJW_D|6F zSqpE|S?U(3C%&%%Fg6V{c&!&Sd@b|VS-$zvI|Z4gFc=ZBao}fZ4hw<8yGwutcwM&u z1j53zL^7cf!wsGPx7wJ5JR(ne`dUgO`eLxt&XtH{H4XzsGNn*0DXN$wkJgx{Qlm-K z#y~d$u`o1~U6~`)<^GFgy;X@+kl(c56{ZKJP8QzT0*By3x->eL8)=Pq44zS6DxI7_Em_{M0KGE}@~nzgLZ;`_*|E z#?W?&g!yhxxYc(X-8TqE2P}~+Llif!2ic!ROK$A!D+ky0=<0u#k3z|u380e$=g~D1 zCAQu-moP7gcMV=$E{MManL3XGhToj8vG~Ti+$k5Kj0H~Zn7~TcDxWCcA&_2$b*6-l zSBIxgBZ09Sx}X)y*l@o=L=`t&NmkKeb}YI$Y^B5Io&O2VwyJOuwawOd%)iI{;Elp2^vA8+CMA{Ecn%#d_CfY7=^Qf-a{lAf zgGpqwQGx?A+gj1`AF_&3(r`mru_XZs3PqGlTH8E34E{@AS4%-=t3V_3V`TqOrtcBUyO1MCJ<20Q;di<@~u zv3hNd5KX?+qwxZe@WljSy;PrFI>EGBhhR19&x|{;t_Z;?uM}O&QCP)<$A|26NJUks zgoo%sNluroT`Qr5ZL^O=bhSj`ew`W0ATtZ&e#`e3SJ%VENuXnI#i2piQs>$}32N8t zoX(w>u*W-MnL@9KDf)!_9C)-Zg9!c2Z8=jEB{TE)@)(RoeHnVbcoIA$l2*~E{q)>Z z)@u2%w5-o3<~?sT|CM0_@gQS=t0!BtXw`e(3mH z3v_15xTfW+=tU<3D^)?zAwV|Itz4CBAM408TTA`DbaUlf?eNv-{k>~4v%THdesr?_ zfOfB9k9yEH0E8s)_vdtcYMd4cK^^dss)y-Ru#X$^g)lO3NJGC*h?nB4&27H4;>|~@ zl~lATJp~0@{Tz8ZUQsvHzav`r?ggcL4w+=Bax&m3yaa6^WDM%alO)tS65Ea!eZ0M! zuH!K%E;PB@gx+H9Gto?n;VZ+>U~{yt1O` zH@~Kv8Ik%G7(Tbg&ozvuzCrHXh>F#$On!~whoT`w=qZPx<=XyNEd*6PCZnen%L{sA zyZh6pd5TEaqNG8f4PyfZS5nG`IfWnU0+(>-q4!qRPSjpDl$Pstb03G*z{+0Z2xaPz zJwou~Za7#(yJRF(14xt{;X2Ic27+xDM3M>nOf*AF1=S9QxyFdshtwx^k@&NV}FpS7HDJYk5>pM zF*PX+cIOs!PaIR3LkGhaUv2BaFq-vX2~riliRLo#!D^ikW0?(Y8ny9hcsBB0uQq~bXlNGNHeV+2_ji})J-)IoFb`o^LP?QdF8&o zlu9WRmg$52KDNYRNaxxme%}AFVIJE1yQ>j*9Omwd;X3S?YddLm4*MV^hd*(5vNzvh zuyzb9Giiz)#BR6^dc@i8K-Qb1YM`dFpw83XF32U3SsV$1@sClhZ$#`8{Ly(Rywn;u z3U_e4+ktTBNRzOTFHRkJ#+M$`lOoOf3YX(zL?)hvV1hwuc8hW#%jHlHG^X7fpMssn zJ=?g0>D<2g9Rh$UNf^{-%zxcER9p!tkdf66%K-yQtZooB4GwJN026i zo}JqpU=KuZMlo&g%(puJBJWw<-T^Aa8&O4i&$Izc0E8 zSHK6R57Xei?%f8yjf+KDQM4;PCk}$XRu2|S?#3KP3J2hb9g5PiuOztN_938nKBni_ zs7v-vwv1ro(}Vuu(Mh?U)*~eN_S;A%fc-#1{`amJR#o<5EKtZ|{I=UanJc!yDv8bj zQ=66zG)yK7K@`XTfO|Sa81+q*l;DmpAvB73(~N7<3J*L4q5h9n|`W9+X58&MzoH&m)vjR{uY~ z0kj_w|C<+ZiHPxX5lcrxIvD^kEFvOJ=40j??FSuv?R1c+IQAX;lapz|E8Iw4o0pVT z>&1*6b=iPli(N;oq!mXpacM{RF;2_gry31FsAMVzA1~ZLw#-_W<;7Ir$XmEkA`ZU# zaIs_|%4S^NRw7ydPXqdjA#c5oibgGMLzY^sT|=|! zMs1qRKR-};9$SK!1LV_8EcSB@He6k76HcJ8cZC`+3IIds0V0z8Fa=^l4&W{{1i;mR zuK!^>uE27rFi3Ogc5-brlAEBz?T*gG=cyqBWVmCwVJs4S*a)P41&_`HPE=4S_pM4g zRS(Ar7Fn-Z1w$-nAW1Wi8Y}9z~LC5ueYyI+7r2ZnHuZN%N z=L_BjnlrpnsaH$EyQ!z!UyN%4;08dZxX<|`54uh=4qe2JN6z+l+={jkBC0BGbu8ez z5?iD76Ev=^TM^%I*a}$hm3sKvC1lGtM^d)U!u;H>i*1orDucAN?yB;tiZsjTDL7;6_6vJFVtVB;FA6Jw@ zit~0WnQKucWKP2YelJ>I>F66WD*=rGe)>=?b;NG_7R^=y#1GL*vGSr7d#%l)&xr}y zTKJVLxQbsTb562W17OnjTYoyTwWa*n%D>bFs>jQf{{V~RV3Awc@Kn{B=`;uz2_dR0 zwmnQqZjb4e#M}6VtNH5Tbq%w}N+E_ZK#ikUU4z$T)un_;cg~|ZHrd9coL;rsAs+*K zeqo_a>pEhL&HpNQZC^_c)tKPu~%K~Lm2Cg67>Oqb8uK?g{;FjJNcPI;_@Ypl;&4LUoK!)4{+zc zMbpQYLWO(a8wqztZ~NGCoxg1kQOpWVlRd>A46_|7iDzu~4+f%_JxKC}fVi-NoHu1J7hdX)hh zfN!}4u{+cvMW5knTH*t~9VS#(H1RINviXY-sT$R)bI(-rskg4%n1jbCY~>Y+0ch!B zGD1B)S7Y(XAce1NnpVl-Fn=N)O61}l=-R+k_U1y}{V|G-3A0}t1sIK_@f;CejIh!i zq79Kezh9;7#zp>oZ;dUu)v*Rq_vK-e;fTk_B-n;#G$T6o*7ER(b-7U3_vhafZt z8I5yzdgD`HxvtPE2Pl)(r6c1gbE5MzQR%!)S7)J$7pnRd7Yl72R4OU-SNfijd&Nw9 z$%c+4%Ps}lOq^EIRLBdHR|yTo5evjSFDlJW;e&9+sXQ4P;4hpzVDU(F7R$P_$hMfM z3H&F$-f?aAR}Ht)FT;QtjV@j*-HByU(FU1J|M};b;)Qc)k_!$uEZp5z4={Ytl7{;SXzxoj`f=n$Mgj0)Flq=N6zb2b+Tdz(`+}6P-Qe9g$y6rM++ExGuYz)+Q8ABWLUx`Ig@$%9fmqF3Tpc zd9wt*kxTck>M!a~D4FLkecEG`X_xX6*Wfx!ALV<5)At4kjACuaZ0d4L^UP0=@!JCqMyq>fO%c zqMJkaULC{HTG}3vBG@o+)8V%*80-3o<7|`a#e~4WX;>6opLrmHRS_Axcix7^dg$(< z+SjG__DBS=0~SP&`Geb8l+{BT*)isBE_SaT-r9_-0C`~TeAyV0Uff=QMF@Qdhw0C2 z?$TL=iN$GCdX?v<68Al_4-P6TuXGL)TC?n=+z5kji$;o~*yap5%$EnVi?yPH)`9*c z;zR#>IEzON`ZWeGs@|Y}RWr{?ZAoafC&{ZuJ!E8po_( zrFU}hmTc+Lan9OW@S97EOUbc9E-Y6e#w`ITCGT_BHwmbWDv_9juvfs8wlfrL&1K5# zE+C<&P2ftbfbuH8G|MCX;6fuvs3eOXqzC63IB8XzXxTMdrJ6F9sV*6769s^HB$wbj zM4fSgwo$1G4Cjw=@gYwo@s}_ij7~qcd;~ZM5YRDSb9s|hB4AnCHq1@c-ImgKwx(}j zh$)8{z^6i02BYVIA(xO=*cEP=UIo)VqlCf-O^CZb4Ei#RLCHTxXk@k@v5aVV$>~=5 zG6gCs$=8VtKWki@m0?uAlK0{J1ajZv(}U4aNcU1f+;|P%qy7eD_VgR-@i?^9Dq3{n zf3bD;H!p}~5|C&EVY;7De{|qGKEzSBL=I(=Z^QeJ)1#*nb^3D?>Pp~nQ6;0+p*-`FIvR)t^19YnEo;(_NA*=+j*nt<{2Rcu@! zB+K#W3B(MksxULf0pM^y!=k@3CpDn3m;Y0>w|#9LNFc4vqH+mKup0iG_(Cm|&~*km zMrosw?Gc7$i2Sl9$b`8Rxg=N~+G^|4Y=UO7$eA9px_leZj~%~4(gG~8>;s~9y$*QMScJ1bUbz6B=NRYV<)Bwn zPa4O7-eUx;2Ka8NECbk$;i|uJFSf{0y<`VdI(W_=`vfdz&veU-I8x(lRq1du#gvLW zQb^bjA`O`#rAHH6EM~+MkD7WK){grdoc8yTrmPKLbZ#1T@HJOr3rG)|*vti=Mc7Cy zo*-pque5PfvxZuVCNhxIkF1YyLlU5X84Q8`&;7k7Qs;{_trG$I1wZO0C6R9X_-B$@ zh25SH2!0(Rg~n~M%|to5GGP7BM*~DvSNqO9^5dz{BxC2&tYiIWH`8S_D3a~#z8^O^ z9p)SutXi~xP6)>pX#3tt(pU4;yWCbiR%#%kyWmJioXD#0hXVZy95%Pv|*xwE!kl` z{BItpHC6htJ)BEuh#r@EVubkD9L8PiZb>ZwSQr{wugnn7shsPcXUo;={b?v|vP6+l z7iuw^r=AC+00TPRS3M+42IekY+<~{dWtF;@A^z-OOZU~L3hPR0;2F${(vZY5vI$YB zz`=lUEXwNWR5@1|4$5A&PjWQa@)X zjzgrurl~F>RVgI*wPsg@%DLm|T;MQuROMu0eqo;C87_b>T&&T9x>?a4O4k?##jVZ$ zpq$lG4TlT`gbhv)Y~J*cbOK@!zz{1X-PBBA-b)dd3Za|*ep{S2E=A#)vfwwceF2xg z{1DRwzh);}En@wAG|fn8;R2S#YnRHQ=zyeE#r6f#8m9| zxsZkTnN6$tWb6Ap;M(EB%f5@=CW{l3)p&>Ny@w=8_)lGlAA?iOF|zIL~>B{@7Ar;mYW?T1Phl?D-%( zvwE*+=Xd5T-hFi^>&g@wbn;iL>ZqG$xE?*E&Cmny*&#Su4cjEJGf+)ofrwQgx<7Ke zU@ql?z3@E7Q0ipOqn&{(rk6p}axU#XNmJz4rZ3*%{oy5o#Vo)YRvGjE_Kf3t9)!!U zhK

?UugjACGmX2sAJ`BnZ@cwszub)9$GZ^*p{}GyeCUWj#U^(;wm;Oy#U!Kqh#c zkUS|-`9JeqP)UR^|KXMi($g;2STxi@G#5Wo!|&m!2NzR3h~hc{o+?U&CsoxsG zc_wmKkPYpGc*s4rB(5*O^n{oKhoWro3g?yoOlBA`V8Md_O%nKzunI8fayO?K*BM;F z6p_M^wMgg{7YlD*ra#+`*>~cjNT(IMeF2j)vcb=ijORP_<+SsA6aUh#*}~f zO@SGw(?XUf$IVhq(AVbKt^Z5cbN&v``Wn~NIC6~b78zGtjT zL0KAeK8>^aCasy4%fb!r`LOm{KwNY$&UrKE|Gm{}>K|K?8eX68-6QKJJdtvYypju; zU?!9bO52H)sbpanogcFcmeePV(*ZN?O;mFZ7F+++G22P$pt5a zXCzN{?6{t13I}M6mqzyVinIO}%#aQl5aC^}k0X9HLIeReEclS^i*!CPnU9s=*HXb7 zDC4|WquJf%HGBv(vi&wLGQAvRO)YS(j#Sp%wvb8AnZw=67m;_ zFk+`mP?V%wEwR*|I|z>D|KA}-3Afbm)`%3CpePd~GwPamx=kp$wctm_pjP6<)MN9z zw)}B;q>&W9Ek8w{y0Na#?<-UuynJ{jlGx6A+~G3)y)7-Luhs_)5G&s~9#?fN<5fhT z8inZiC-|BLmVzyt1Ao4vE(SYsRoDd5^#-8MW*wiZ`JcoIJ>M4{z4EQY)q*}oj_ElG zGtjd~JquQWV!l>+=`#m_83Pv#M!!Ks=bxt(>tsYaP*lsy2h#S4HHQ@sQJvbbMTlIOjxn;O@qWkTRBcaY-zEvUdq;>{G${ps;HIM$ zzdDB+&pwa&9&8oH6JQd%TsS0UC#CUO+nXmz$G5(?ehO|1Dw{Z0o}3<&-=kpB5|MnkLg`v<%gYVtC4j&*Kfc2n_9SXpfM~9T^Q*1yU%yo1Kl|vhsoz zeSp*X2o&1?4Pf6A^Mj_X;h_=UUmiho4qc4fGMw+UZ&F-vQqtPUfjc$NDhj2|gRli} zNjIT4HGk{qOcW@`+OvQd8~g?tc96wwRw*Dt$c>-GvZTew%Zte~CXQzernCItz?9#A zT?&PZiZJ-35eXn@kqN*nOGp6z|NrY-D;{>~4I!}C(Pd10i&EI2r{;ibT%lMYmJZ4t z^$~B|l$V=L_b!)t5)DF{9xwbxvuR1jM`t`tI{{<5Re`6uR`>iK6rW%fU0K1+7K_+g z^knu0I_B=@tkaK}`T`?;OnR~>agHP%sF^w+Mfh5$p&vgr$op3wKhOV{3t;9DXKCmPrRl+SY zdfuD}Ebp>%R=SDuR)oaQ_auEKD0dEbz`_yB>l|NemaFI92aSLv+l;kf{cRJuNS(;^>$w!)$mFT)TWNx8uQ%E%zIVdQX!@$su&-7ve#QGJuy3t$ zDbZSySCwD~LM$+vGZ`>>3Tn7A4aLrJjq|JJL(*1ZX<#gRn2FC?uyTt%X@qFj)MVq! zk+EV50&4utWc@#{>xSmSg@lN-__?`=4i^pco86tXBb2WO>UKo+?nwt1Y%N(X{I)nZ zSA$ZehAsYHP>$pyHLN&2=K0XWp(Oe)MU!KtoT#afbq&w(^VM4_B3X*&Ym2f7uuTJs zGkse!;>8nk=&$rO`}*C{@D7hh8iWzYcR*#Fchpd73Kba|ez++RkLaBXc_69yhzGdB zT5-o&35Qhq$$NosO9U3MEckR2hy)m$=ixss<3Zu%I_l}tXG_c07PjB}h}gloiTs*Vl>_P4Z0nwQ>s^ul5`;JZ8&3P~D{)hUPbgfNh?J;n zs-H&vSXdj|jG0Z-7A_XHT&_Z|zd9+2MCxRrQyj+Gu&g~&jJ5<5;1DvIQ09XKPhZQp zB{y1wia~UZfGAZL!|ay~2ggz_0{`0UW!jIo*+MUkx~p$wnuqRDPL|aeAO69BE$W=w zE`t^N`j`l)b_2!+o>HDH&J!NgVc$w~TOVR4qRy+RH++rESNOA_RZ1(FVpPnae$dnp z9OtPTWUWn#hUK$%fB-fA*xQRwcv99kM9arNJx7SaS!{Z_GU+JPk`76rl7V%oq{D20Y@ELvF8!0aT=|J=lFVtC!j4_Tj zVfIDoPva1RTd5-5_v1St5`-ZZ(+XXYg?R%;%x=@>RixlELu>eE!B}`xgWtHG9}%+3I^2aPd%#n<@9Eqvcti9H(jj+3rq+g5zcf; z0#!4mEP&VL>6W`#({c0v+&Be28~LW|AzFwz0gG3{jJ*rH<3X=Z?kjc|i+K z%oMyU-#fvfBk9mwp}H?Vr{l41*UgAF#q0&UtI|SZSy-~BG5e=2Ex<=)HdxhUptl{!~cYpu@0G29+3kCav8pWI7wO&o8FCZ5@ zFqCtjBw4BQ&|Ja_m7!`M!~*bERSYRuls9-TN=OEJ`~Ae2BL@UsZ zvHF{q$U$2$rpPp_$iZ!z3{T%FXPi+pKS!^i>Yv=gWA+71HCHhBK`?hK<7hoXF&<18R8W8_meUFgoRNS zuZrU{h~iu=N)UaCH4ZFz-$1@i=SzP5pQJYb6WJC-F)g@Qx*I{EcJ6`QboQ(brT|&| zhg@B6uj6;dVNM`4E3zvGP-C1>{rR0Wg9#*uH$_gY3b)D8MUf1$M}iMt>yydHJe+Hh za?=-{5LWeITZ-v>sk!2x*0DI zOvcZtk+nmhMMP-RDO|=Q`Cey?2luAfemXmrjQ7&ph$_gu#2l_T2fiyJem8OijN(M% z_y6Ct9c2kynL{eoD>)pU(1`@bz>ZR#J*cYlC#S|=+{lNQpuMgSpi8)ST5}TcgvZyp zUlhZ4j@x>W0f25B6Zhc*#-uo{r?){QwhEj+d!Q>804E>7oR|Y_FxD0M;BZw*bAyZ%w>G~r!2?53aU2O zoc3Xs+==c2noZ#z8{EeRKl2a0D_;dYeBF^f?$F7l-JSlaoth#XC5^XLB>04Mx(Bn8 z@G3#8_~Wci)lfNzp&HgWaWC(Pj4t{6F$;E}cc%Lv?j#LKnVV-rW*8nHFeB&+q z|IM>_Vk$YQ*m(xP+Pc<}-B>XlM})eu=e5xN#Z>_qQ*#grZO&E5!^42+PApUEl;QGt z%r*TD@sT4NQaUvFugnBrJsD;P_B8)}bdYj_HiJ3#n0qvy0x6$uiueh)yUFV*-?<>( zntL#x^_JDKczGqp9VTU6e7I+u|0@b+sg)|NfC{KS$YRfuum<_G9y^qw+wc^`KowJCuMOI=%v8bG=g7F4jRR(LOC-T*k}35ap+i%* zw@Eo8^(GYE*Cra>)@TUN0fQfo9$2tHZ6DEzdrvvzwI)@wKvz!R!S5}cMSa>~e$8o!{~%&|fEW%}Z7_?5=>E0ue4=LMkydhaf`sJ~ zB=+sIY{}({)&Q)s30kCxEgO?*M)(^+c^&=x8n-4?^B2fE#Al2kA3z|L{J63XgiS&y z<3ie{)wrq5`1DG)bknc2AfaE>_bZyGoe}Q*OlP_CwV!m8Gu0^%$tbha%FSUU1j42L z2tjwPLio(0v~OJ%U5RU)Dhr4t!@!skn{&vpI_mIR2G)*-(i1Dxsa zCZjY3Hkmm9g2>C|XUmdPCK!DIb4M=P36i%iD5-OTq_Jdca70OnppF6#B%J|JX~amw zb+{#n1mxK|K@w$P;t$$wO{ZlcEO0IG%y%Le9!9KiK4hnYSW%GBQOo-UMl#eof0R{U zlc_3Ge9nBl=LT8hADdlU@Hy&7_VXRSq9tq50yfGQHtcQttE7F&I_wDqSaqi5b7clu zF?HqF&ICLzjmBI&^v>J<_$&qQ(MN_F4%2(9UYx;+xi6fk5 zw;Cs}TS+t!2)GEIxs|b!TLPV$R-CH*G`w6eb6XX19SEVku+k`;^DEw2u)Y?h#Rr;}{93_kSt# zOw1<)m2amT=wOXu9j9S6d$8Yey-56$AeH;$qlPx6zBZu(2t3wb_GH3Zw>3_j0P(p# zaqah1rTylNha2mKW!#2T*KDgYhah-ETc8*^GfCU=w zY?Id5Lw$+RzBGS=A=r!pZ*z+7{eF~elg^slqNAAddC?@y15M(dn(Ow(AH8^Xr#(au zciBrps+%RK2oE%+ryPCFG{-NdlPktY%>tw`Y)S=h(8w4WO7Yi_T?lQ^p8~`{q@M_v zNh)RC83f)}l_6C%8V605&>3GAgR0}fg4deM(n;^_SSLXZVz|vP5OtZ(Mg`wPfmhT7 z#5^>C=07Sd?2swNzOnF5egF(PHN>0!ndAu7!)+VHKyDv)^DVDoz%AXBI%9ldLZAP$ zRy166yHMM?Gn804Vdn*#iG#YjlMm~xen|~F9*>Fd$ZUYp*!|t1F^{)fwNlFDTCqqe z|0NCWZ?>DfeK?=&x~SdJL&c`)fcQhKR6G>~Avm4{8sX2`9sh_k4Hev?_`D|2#tjV} zia2v?R?|{R36hsg^#WLmhwxa~bvZmSJ%!l|pyDJqfhQ1|YJQc~ehv5{_W+c1z$4mS zK`>8)tHK~fyVzb;Vn={Y8Yrs{wP<>gTYod4tEfV99?kk1_c}n844HN+N$$B;K1nJs z@INF(2G5GkUW~xxAbB76D|Ax}yb)N&+hy$*7DC+Sfh9cslTCF3x$MDnW)jAiW? zE}hE|AY!{Kf~sIcvG0h+V`~jRlt8!h;+^SiHY6XMFD)^Hk|aCaW#7Liea8XS&SerdUv0k(b$T zaG@z@??d-Z7hHorNl>{9Mnej#BnP6G$M16Jk((+|W0?svo2=BX@1R_H@eiL_(vs`JqT%Og9XTtIWD(~M#;0;9o zUYAdGHn0Pa5rX0Ewn{>6=T)sx1re;I-i6nWW8*c%yWVV=$VmriG^-Csg! z6`_E<$2!IGd8S@wFu4kNg`+r!;{npl-_g;bj^ds|t+#EIm9jW{^GXw{Rc6C=9evgp z@*xLW_s9{N=sJ6^kXl9XIm{5DyXQ9*@!XY1XQp1ozAxYyi!F6%RRM51g!2Tig@YmM z=nc+B#VGO&k*K@2>mvVN6LDwj3Cpaq5Or^Qtrk36SaH{ zZnnyj?rl-AS#??KVea<>6{xJOZ&BvGDSKnl|v4&7ZgXi15Kpp^ie2jxgt}sUDdQqLm;IlMHQ_ zo8C7vrb>DKts=mt(Y)gvKc9xT9dKMYGh!pcgsa3U;=C{&TR6_sX51YI#5=bT6$f-u zOs~XZ2h#86omA!U7lGyDRN@YXyF%6U(pt%+N*hvQDUBKX{`R?N4FSgZST85gijd=Y zI%PSExNuJ0jUkg8Ue_Je-|7H{T&(UXm9S9Wji_t+<8UXv5Nko^^Li=DkMXI9F2jL+ zR=e8U1#Cd4i*L_l1h2MaDi@=~0ZVPw8x&66om@srGG0JMzTLXyko?8V1@!3%=uE>$ z!wixW0K-ju>hj9?`ejZX+1Uf)vIu$zCmTEO;_Dxs|AF**U>X{&IK#}W{jcvoU4?~l zLsG}c7FQB24jHSCdj80FT_Mc_F3uD6;=kYj2oJu(iG>zzidiEiU12O%=gQ;@h}uY$r++kJl6eK z90dV#&G1(nTR4Z0!7ivp%avCz6A zYNwfliKVA*zt7(NUaK*%1ZTu#6}xYMqnfGm>IhL5yUquiFg%YukHkSp)aqKQmoo^e z*`Ws0l(G}Q9V&wnyd5+4FbJwL0YkYM zfm(gGgd!-XHKR+GH)qnmVJ(@4OQ2;R^Th4>TIM)Fb=!BOyotYIE@Ehe7;KN#bJ5zj zV&nN^o;w=n4wtvg#W_9Yqjck>lw=q)??I7vI<@!pF;&ANDfe)&nS2Tn8E>Y>>S|(N3bP=Ff)_m z%87U))xR+6TL|4Fm;8{_huJ$_25lyXcxOFU8AA zglni5FE8`8#2!EuY%pUL0>WEC@Q0!m$VGR=`cr?{y{khkw0j}L2`Rs0p-a)1>h7M; zcp3zhJ{pw!=7d#@#Py$=Sj(bxv7mnN8`o>Hizo^o$#m>0=}N;#P;Sl81xA z1>Z!g@B%s84jf6d6k-THvX03qDjlz(F#xfOKIBZboxA;5F(dt`{!N!h`#ep!%x#~b zppP)X?;m5d+5hy8cyj_aT2n0!>0tdxdu1@L&K(1(Rt(yn_?&;qm)-G&d&5S7!nJ}n z^K-;mghLocXosWvKV$hKDNmYZ2M(H_BH%PXA(H0CDaK|peCj40_- ze{GE=?2jDi6`+#i3^zKa?8`(IK2$+l!R;6phsC?UfyxWfg7G1|2vHQ zjvy;#>aBiJGQKY6q|V_Y&Ly9Vv2-#l969|0SRx*dp|Lhvu~m(_ba2Hme>9P}EnVxf z-NZkGR7gX7?>$C4VoONBT>EI<^gYnfJ=<-;3vOus=O@R!hOs$U!gCyfN0StZ=!b2o zh8S{02$MKMD3c}w+k3*{!5rf|6ktk!tJMc#Bl9YIcB-6{hxhM(PxzQCzLZNZm#d`5 zKZ}n)1OSC>253h4|HQ;gKdauYgxCpsvItP( zcr=Yth7_Y`2XToboo?O()I#9;JGy$i zJi;31L{G`gX(-nSZLvAeS@FdMwJf_UVI^`n{n}6#XDC=)0T;13VJinW8Q;;<5AT3* zAHgjQOCut&PZ9@fyEdd#9W3Lp&tIxt-c|+^4{CBZk#VN7lepo}eokANr5ekHSl@A? z=AgmrHPE>;hqP_dD2?mOimsPf5?qp)+2x7oS2s-^cT+*Opf2KlqW^%l1>teoI{+LMsEuD5>!_7U7_5esimVyp^L;(V5JtES9 za{kLbT3vD+<5yldixuJ+KG@_u8V+J~pIoRaL-DP6quGhYS^M$%c7(gXAkDae!>Jqu z&V_V==1b1LbWc9vPG0CCf9J9)418f(S z3?7O2sC3tn$(>UJjM*vjBs3N8`s2Be#*MvdeeZ7EeJB$gP3jy#sEQ$2dr>60Y6={d zGTq881C==~qFnpmOy={ZVbOyl&qA&^w&Ld(BaMenAB5pk^_!y7A-j5t8RMpKYl=~6 zMP^!-($G>FvADzjvo;Lxy=Z@BWQG%%Jw7wKlb23fInQ?97P$l(_w@MheEc(yio#>; zdR^(uGjc0Jh0?V^ly?hxisPgaQDBVvXh7ffmn4$#Je)~hrj5elAZxhJm$V&Sytw|s zB2dw174hH_XQUTCENq+$4mR-#1eI3<(-gE1b_2zts`nF8Mn7$yH=P{(hSkhgjQ4-!HKT!6Bfj=q{ z#LZ`gxd5Ha|dbrW7ZwFzAhm07>~bhoB4O#{ln zCi27Ys(5#!4ygmx1KeRBj0PJuL)Lb-~G0M63uig5Ho#HJ4RJOTP7>Qm?O;P!RJaK`_k6sl7LGB*G1b}(l%mkh7M#?tG~X{N9VU0K_2f$gZ#wQprpuQ8rw ziccM%ed)Pd4y|YknP!&Zt!UR|MJ8CSrJVJPpK)fdF!ysNYFBHFBbBuUyP!X=<5x}R zhWV+YoGASUzH=wfcCbdIG)?5p0!tB5LmkS;N*VBI1l4~&ktjm~d&YH#{+g*N1D?2l zZ3}m>Z{t}G@Hy@Y&k*LvzB;-WEWM?lqqC( z{{>IP?ucHG+8aG4ZqEFHZkPdWAw%#v{#b`%W2#A@C7y!ZIsS0@3(ocF^0Ui=4sUtH z{fgJp$c43oU7FX?8G^*WCj7Ogs_@erH74z!*i%9%Adc!hq~_)Suosv49$G2;?;Zey z01^q33}jEp-z2|Q-8uU(C@nEhKcvE+ot`BVIRR5O(&4L=(BcQTYqd@;YR$>=d3CAc zW9cZ>k$xGuG)F9#*1<*Zcg*kkPZa^J3Yd$&Ok}WT;yOo2x3kEMd~(UicphOKqpAVA zmWHfn@GC2*ahZ=qe}gOQ58v_qYFaZR!1C68TS-b5MRJ$<-H;KWg!hk>7_s-+fPjayeevq~7 zHZ4&U6_u)+vqIyS!ja&@l^1O>8>0n=!_YMl9`syi$T3qTUdtsAs}V9xv$#5rIS>{B z_kHpbz+;*aZWZ@{qz3f=xd)3^+>xBZsfMStveOcmdn)1ojzG6hH7o0f10xMCaC}A3 zX=JiHOW1W9879hhLhfw@Ag-DD==bR<=aH2~Wub?{hp-bx9#VeNUsy>gN1HE|-lzk0dUZz-hbaf%djL||SrL2y(#$E%e zNfzb-7<)PqtZGAY_4rrg@I(1<e}ef97MhAXebu-6oN-OpzU}Z z3^Jb4Hh!#*PbA5M{DH8!18Xb`qoG;c0>I)NALr134VkLEBUeIs8nm6gKT@U0&cJmp z->WpI2!r`Y{DL0G=r$=SXJ>DAl|KJYdm~h#bqIRhR#+BrBs*V;q4qTC=~OA(35Y

#ZjxwE;4^P2y!}0fbfrLwST_BQ5nG8xL`97>{IK^n#6{l*Mi8 zCDEXjcOru<;Cq9-H!FK)MN@k~C7P|?WF{$hlQl--h^o>bY2Z63$f-g& zA&b}8>0bj*!GF9D2nCKJgVJ8m@FZCu*w^&!Ez3kS4+2S5U;Q4iYP+q{HgNn2rC3yC z0l|0KE<0ioEcH|ae=fbYn6R^kfplho=;3=v3XsA0vV!uQGvMP^O1}jRj4~Y)dp$JM zBmG%*xs2&d4?UR*CH*~CNj(F*wlykmw7D?-%*5L>G_@T9rO8zqP246VfzwcjdsQ$d zi{w7rQtw3L22Yl1nb1{-9c?vxULJ{l0|@rryPPey(ocWZ%6{))NGKLI$8ESJq;N0sSI)592B9bp!PhbLX=kmY4)XA23$dXR;biBQA*MiG8&_x|&l8hj(9qYdEHsk_4d z6;9zOcrm`z3Pnc*9>XZo&M%$K1~pAoYV62Bz9>4!qX-d-)0x)^b1m7F3mPPuSYx#P zxuBk9AZWoU~mVV8QyIF7=88!)8cZ1 z=DDWhaxn^;-j03J#hZ%qENy z&)n`Axy{kp^ioB5g;;kW>`~bKjNVjBT0A!N3#y64`g`~&ygjNmPtf`{q2OErmkwpQ z-%ZhhcCP=?v*2V3*mrW)>Xy>~C%>Yk!WxF~5;#$C=?!oIpMK)0m|33}@!~l_lxE0Q zPIz@NeEqIG#HzbNN%8MX;D26?a>ceWBjH%T! zKu3sM?=f!7*wPzU;CmroKSQBeIjXNfS_l*Z9dOb+y1+?P|*MZQC(j@DY*j9*8OzNjWlH^2)I92mV)VQ1GYAX(Z!rudPhy7fm4N$3752epX!!S%)nNizClpF{Y zLnYScM1=k`B4O1fj6fO1l%vtaL1Z}Y3XlidkUd5=GS?4VTpE6yxjTqX$}YPd$~Jhr zG)%$Le{Cm(NCDe0dBu%4OQ9b1!FsE2vZXjX-_AhY(_&02nX_1YY{vF6$(0vjInUt< zw!Xg1MOP8rS7wuZ4;*RkM9Uwom^9c+UfAY{;NKa{hId5jq$7(f!=$sL+$*~$VST=PM?+dz@pIgO4FqMc0ff-s6bix8#NTqiB%mePz=bkprJ8gw|Q4U|yse4V_WR zjCcfSB)Y_Y_Sa&Q@DbM1=oV}mG&|v|tEq))cY_I}Z8+GO?mj6eDaY~MH&lAQ9T%bx zQ~8LU-{9OHuU2T0+K{HZob9AfHCx~KD(Vyrg}R38XxJ6+(-7mGrz3{-0i_l2z(CrZ z2sus5)J=jxEQgXmcuD!Z^`*n~y`#dP;nl6>(m4V_#ez$C zhW$B=MkAX_g!`W%URac)Z6RBfcxZV-jc|SyPvb>^#NJY^bF~XzXdS`L=)lq=!OYYq8|{i<0#o{ zsnmOZtB~r&D*jy_3xXU2lFGTYA;49I_yAFu3f?*`ZL+7odArSC>jBX*h{DaeJO=2H zRj5>xMyU*(A2Uu>9k4C;)`PvKMq3~$heGfAUd@Y@kKG&8@G#ZL!h|_3R6*r0m-dl0 zTS!b>vHzhOiEdGx-&{o^bVV7oA{%!{Y?&o&L}c)}QS(Par1cUl!nO5)hJ;X~!fUUz z#Pk$$WcRevjvky|g}V$INPf|jREV68yFY)dZ8*kL9CqoNr56VH$dd6pspESlhz^%d z;>2-jhpuE$gv8$#Sj(-gRCa-r^E^nNCpW&V)8h0t*x`~ScRtZ<%22pmzmSD+vbF%^ z{2oifn3IVAPie2rVP;LcA#t*4*&UaHc~x(-n1^vPx+H zjhtlYaD3nO{zQ=_NuHvl4M_IH9?oR0g*zS{=2mFp-6r4>a>{OOfcfOB`3iX_^Vc#&XG4Q! zIC?DS%qU*7d#rYw@F%vo`=4pKEi4;gY}i zUE3tmnJlzWy)u{JVtvY1d19AwE$31>7EJ`x+8RSsD~W&5M??+x_a;&$eu&Pq(Y$-W zkV@KlPiU!DVGnV7crv zd$fxUjiYb!K5hb9cXto5{<5v#r-c=BInsq;QZmJZMrkYgRo+E7R290JpPsO^w>#@{ z1Er)Gf-c!Ctr;U4KpP^=nXeqsFM$qO-xt$m2r4B>C-sA!l;xQ!ye9x{*%0HWySVB5 z6!Y#&v$u9)^VeyMI_ULs1qSNoVB3P}9vKgPSZ zM)AYeyTgdFfmQDjmc&3;{Gp~LLq@>~ABUWME8|RW+NSE+Pc5_l3eNR=ehpUyVG;Av z%4gHbYRYd&rF8M9(D!g`Bl)v#3mdGrRIXy`E`*lieR9P@zHPGY`O^u^#aQ2Vw9*`9 zdjVTzH7{!ML>|F`Sn*~O+~B}dF8o&D!em=`L}^RYmXN943q2&66;M_7cD@?6I<;XMLpj?ePT^Dws8^Zcm0pj^01&F&J*`@gS_OJws#R~F{0;# z$;pBMd8io=}mgxPL}f!hRX;M z8=uvnK7#IFU7l0h&*KJX z@5ZSt%s;q|%{*7NC+8@ZKH;y(0YJ{4GJe`ffp;~5damhdMhROMqZh3Tcx(S_wg2FG z?1IUopwSRy2nCWBVHGec+NyF9JbIfhd6S5%=Z(3Z_Mtd9jC{8mFUrAVgJ_gp2RLi$ zivIdmEz5%JkxyOquSnY%K;p(r#JB7tbFYZ{`1s1Du7BONXA5lfQ#9s0O4x1+%qkq( zI!_QK?j^DdejQ?ZdrI=oMyQJzGtGh6=*s|-Fu5N+>W2)MG_k3t=wU1z8#r)Mj?=@f z{AA&jU-+F3__ok0h}UZ-g@#-`+&sUTH;(YT`AakBwl9kS`gZL4w9@Dlop)*jLk$5+ zHyrnfQJs4rLhR5`Jvl8gMFwKy$AnOfJJBl=b;*{yzJQ}BmdvoIOEx}QhtSKVHjMdx zyYDSQOOF(T0U%nsY36>;yf$hAy)8jFWB=F=Z}(WRIR!B{3&#qHvXi=0SmEAGRV zWCI)l_b7<>2>}0t)MQx6A{ktvV}!7GJnloiyWcf0CrUem;+7wED%;PyEZ~;} z7jjW2+GA>?c4|q7*&}V-=RNRvqy^AFZHE=Qq;Q0`!2UokYM=b{_HcS1|J41U>sv1^ zkU6QvdU% zEk8@38b>-#hTC;cAL#WgE1&o4IH_9=C2j#bVpQ{U1q63AB;EdaE(KxKhC0b4jxgeC zVaVC6>x+nyQqIYbSe!)IsFAE^PV-w%#8Q&lM{_7@h7TVxQ34CI6)a}nfb@Wts{&&* z`F0CrqdN0)F@qRPD+G2+Eq1G>_s2`n4x_Itoi`Pn7>PNO8v4~B5R~Yh-hs3ti?K;Y zrvB1N;lJ|JU>c#jUYKuo?v+N38wx`lOsg2VGM#x=!(@+;Uh=<5l$y9axiYnU_r%T` zWv9)jrLI+5<~{60jx<;RAy^HE(?<>*6?p6y`xf2mW90HY`~5uDVcthz(mw8)x~3u^ zsYS%OHc?rAQ`9~kvQ-_SLudl+wm(VCbX`c+e)mRrX|`GgZ&o()ITA3Fb~yGdB6Gg0 zZ7W>lUR#ghche@6vF3{hw+%g(U-|pGo-87-)i`QHWzEK1tn4r5-`ZY2$%}bn4XSE^ zs7UPLDdQV-=EBCqDKI2Wm{12l!+74we}X3$`sdv4 z7*-wmqYAJXo4_+HY-%apQ~-+W3!E_hyLHwonOpinJ-K$fAWTM!Jf^io)Nm3jWsOY# z2N`>nIJe13&V|A*AzPl{=!X_js)T`S6;2DF%|*y#=2+)`jv{eXG;imQL{F1{l0%cS z2&Ip(V8~=?zyH(>Bv$HM={^&moJNpAyPe?VNO#1&Y`)b9!`KFK7 zZ2ULyn?--061;Ub4|w#n{=8~4A^8YM3dTHKgXND2>1Yh<5qMBS3#*+KT}(gt3!~Fc zdFzu&4u7AKHezBZbN#2E@ivKxv#JA~k_FCdv0TERSogof@$@^|;eDJG6;kH!f%84>bsuZI*; zq%pbRN%Qpp0c~In%e~{ZFt%b(`wmCikxTnh36j4kW4@9WN5}={;giAb-OYy-n|B=8 z1S7!8GVca()uBN6&VqH=rl%P7lE`9fbE3AjQxd|z6w2~=E+J*3{~#?fd@k{ef+&EK7@(3cT`ZLt6z@P9^FSv+4s4D08%&Ju zc{@Eyfn$Rg|Gx)?*Hh>N5dgql;5K)KQX(+m*R<``aoC8?Lr-ZQ40gY6J9xC0#Jg`P z(c?d;hA4yAt&s->VTzDZkK|)BnU@q-7#Xv=JgUoezVfPGskb$3Rakg@S5MxkZe1NP zOd}?Q;=xDIQV6!BDX->dRsV@lN%d;;cgi$DRZv+hJia{dgr7(|$dyWGdKHkU51_=0 zVp@3~1lp+P1WB>1L$JLH72OL*^1G#jh8J;!)`$MH1H`g%$4YN5^F7ia>MG=S9Y8b5 zZctLwD)_RF%E|gTO9H8*fTaA1?3X2nn7jN_vy(_{W)Wv3PfwXBP>?oZ*~~!yKZ?MS z>@o}@Ww(HOQOMOe)$(Exq9c|cZ z;qmkC^ghrH$E;oZ`It<^v*#$u(n|@@sOVG(Q~$YjDbC5<_uMsfl>+f0d+$T^Ag7J( z;G=?cgl`~bmT2&M2q3n(89fwoWLQh9yHn||0;hq~WU}hfZ>FavYX5T-3TzE?t5)z> zR@h8C>YRc6bBvTC{9T3r&o*n6390Fkh&lc2?ex22_B$>BLrNQxwGV6Q0`P1j>qa(9T1PCq+AM0KP3I z2sGZ@u<~dQ@{8e#Y#?bR%84srbVtlL=JZj_q^zKnCntsj4=eT9P_sVXYvd*Z58>D1 zYF9qT478TvhXBrr(m*MEKwA)-MyQ~1W|yv3yioL&8P;uSx@<7yLOHP@7=t~OiMp({ z=v`hxgIyfWWR7u?Dph=fK;%|DMddzCRUz!`2`U3Gk4#XO&5_FtBj{GfZ9Pp$N*YuF zdby39KRrGz_Ud=D$|1`~zgS8;9b-gO>HNnnVc9tnwW9CrT7Ps0TMvMJswJ9lO+yp? zU1YqPJcSh6SRire6gUR5=t9l~V9pf9GjafgQqvwS=j@=abix(Gk3^YKXPT)n=c-~7 zfe-$GpV0H#xW=|bENM|WYg4>|G*%c9>toN-mGG9^6kH|v7lTU)!Ppw{lB+X(s^oh< zH5kp;&rtuQhc;c%9l>iZ3rWf1>FaOrFY4rvS>)9Kk&_8=_EBE(DeEt38-eX5^y(}( z1Y^Rc8NJ~M17i6HkJrA8qAzBl^x(QaYB)Jq;;XbQo+cYMn>Z<3cd*N2409?jJj_10 zR_j7Cfl|uk>fI!Irc0T|xk&8MHcU|&tA}|}&#~&9(bHyAC>Ey5%HOKsDQ>dRdFi^o z_Lc8$8GFb0_kYLY{_U2{F&LsjHt1zN@{2-<$9%xZYVcvONXTxAO?-(doTC&9! zl{@kX@~~9O1aUhRIOl?RNgT3YE-6yjP!i!52rxud3VBPk$5kVB%T$^v>LJ1Y0v*YI z0R&TC4*Qas8Up#6tY_5K5qv|a-9{`4{-*KOB)2=b0P4{@jI!iFjvS=rJ98&!^>a>V z`aqq3X)iv;1cmCzt8ZCJuh}o4&9pJsr0d4Rg!6R56bQ2YAz!S=l+11!I2jnhl0Vp= z4ZHm<{y9jYpP}80o{KOK_T`dO8#^!3N9ybVXt^GS>i-53f}X5D@Bj>4NwY8$w7@!z zRE0r4y?-M*k#Mt7O|%I*Q9qGp6lv1EBYWv2_5UnOtQE?!J{DJgBLlD6nl((?L6lug zh5nIrXSh34Pv1)2;iz;<)Uzn-ek0c6Cslu6$mZkc`wdw2hz!K_J5Ab%RSBT=U zjX`(mfyzuu{G`!-2eL0{E`?FTc5$Xvn}U5!45UHb%kdJ;{+Q60fbF=sT2RpXo-I() zt9s#C;~XLe)@`5=2y>FAyuhV!Rn@PKz-Y|=DPCawmb8kHxaPh0db?xjTx8r(V}eaW zh<%V7`j8s0tRPM%Py5Pnragy|P`r8haJ8`_rN3g9cGa{PWv>wHX_y@f`JzY!8BT3^ z0O!wYwhAvCzEksqjzvj0{z~M+n9&QyJk}SF?w>xXnu-hr0l=b`@1|S{?UwlaKPBj~ z@YMiJ6XDh>(*Xe^<1TkO60FQg!-hmKb`Yi~Q4&u%J^>wY1$U5a8CUXiE8_y9+7e^ON}`J-G*FAdO<1{`iTS4}9d3f~iCLnar;=}PYD}Or<*SZ5AtqP` zZqE;?l#Uw{*}GlP8T#lvQ;vLRQ6L}^P!LsZD~1K8%G1HbnzTX;lqxN**2;>VOo3I@-E())Q z`RsCq^@J9m>?*o~gFC_G!TfD1=8=oeDD*S9J5n*}$@r?uWVoAji+CPU=nS@5fb^+0 zK9s(lP9N&?#-e#zZp&h3)(AMZV)>6$`%hq)X=89DQ&p#(!*l4cj zA{p55;%p~gPG6ar(G!=|@XTVMJ0h2>fG_x2dw%@e{HQM#>|}IblyFcygRd)jQ1c%h zK3REGuF;~0QAvMTC9-zZiTYdB)Xe^O(xR?8r-anBm0k?t0*fFb)GR) zs!eK&Ma*|AJ^_Fq>Fqt+TCRr_vy-+&J@V)h= z2W{f5smfYx6E!6?po#$JbKYV}v`W)62f2p>wC{H`brI4p^Wk|Xbvyg&awUr3i0P&e zTG*Vp|50+6UtFX-Dv@!+M@Jhx8F82WH(o&ox~?93_NrpNwgK(nzdn zw=hInOFfIsSB`tKw-x3!0&G1cMiLey$7X zO=PKe8?;pM;vf^jqD17*P|sTjdAF0s;y;GC4@#5)?N!?^*yxD)WLB?cQGdTk`VGD6 zE*`TH)=Z9Vd(UVWFKHjLx63+wx z0IeGM6lDCN9JN;${mk(b!E!`PkU{EiPZG2-i}vnxt?{C>1q$_ZYxqQ*F1@Xt5o1r& zI(o1DpeI8S!ij?nZCJaVDZ`$-3LIO_<|aYs+xr&Wy3YE2{mEu^{@ucm+l&VzdvXV3Z3t{x=f$ zY|2}ejl53M3YqwmI*LU6{SLE}N}$(ezFQNBeekvfH}W#p(>baXGH5viyHdjG9Da8? zdIVs2qy59Eq)ky{6lu_?c+{&mFE9xn6)%$S(L&<6^o$c5qT$BZB#7jT zZvhYdxt`GM5;w^!!wB}2Y(b-v2%{@WK+37<^K(--CVpwom3IXbcWITlz;euQtWh{F zOccmRvTP#*jm57ecB+VZud%~ESz;Aq9AwK~HYMm^cS?!ARou<~Pr078`%u3+A?rgf zNVcIjlzDcs*|pX*-5|YH{b&u=T}4>Wq?_4;GM{K;@>I)uDhjdiMF4%X1+V4aLHwnM<+{B}C6Z zmLs2+y!sMeM31sdlYzl>dOpN*vd7GlvBCk?F)7a0+g8~D%!!4QyMlHY_I^BA;xT61 zkU9N^%4fajBb*S@(ywn)ms1guTa7TbwMPffTW&6`8~ypRRtwPMxw6v&g&J&4l*P~o z`U)C(5!Du$6Un}PD9XhMKx#$WX`O=Ldv_a@%-DB zqB*&+7$;EpPPU@S?$+YT70Oc=$ac4OtujJIE9a>ombNC@;GT!XfBqxTQgIbPMm7TdP}<*BdmD;{ z&RqSxY1X$yjJ|GJVtHgK0XsdV{J@_%`yTSRPL z&Jfla`mZ*XL`Hs+1<}FLiLWt}>Nukq;zu-VKmZ$RRAYbQI6MY>mG}}{0@Ym@8GHHx zcfw+;Ek?=o-^QHV;oUx)kqew9MPP3&(464@fJZY#=a;$Fglqg0>8&B-zfGC3-Mha5)Rw~DQRW>N*sJyZ#AA?tGGU;x@lZL$LVYC zXl0#q=TwgZ^_=!E4yfX0|B%&m404)^nt5uE`Dm`{!T^Y$qf5hn@);i?tnEUb_M0)= zv)>P%!x<=|E6+kyV3 z{1MPBzJ7nJf)uqA&f)tcl288Ou|MAgiBitP*m2B%^(_iX^&a}Lm&>kM$PzP^{$*F~58zmIx`XmQ{AR)_9l0G8k<>Z&!-zAHVr z4+7d>SR|>@V6>X-#UhesIPhm_=QE2=DSNFcS7p_$5favwV5S26s((cLE@6@JQvd*0 z**NXLFe;tVPaxi*GRZntEkr{I0Ft%$CTpay1fkjWrY?c!J0qHZ%s2}5!I++-QA1vq z*`!W|CYM;ZQ*T?z7L~VlmdUng=SE&e^7So^&>LDQtBUPN;w^H@>*`6Uo9!NHyCuDh z=b*Cg=?mKvBV>XLCleu*^xSM%O(++ms}=& zu?*b-3d`Hx<_r1Ce?139SgIWg3m&nC+QggW64C_&!Gw1M5RzgqTmm+OR9cf14p0)l8!aE9jFXCYk4kWcajSamkH6 zx>IgAA10SNo40c~gg=93wmsaE`L6N1SjVjGUUD?ua+lAwK=n$q^2tB_jkV6!1vJb5 zD(zbQYwMcR7|h{elTxRW9t?bB#je`u_Io_V5Ow$8#?H5~+K8lp}MKE+gs z6I463eT_-&kaeW-zHHPt?Hs|Rye}*)`Qd$wE^Q-8-T?X;yC({0 z${`!ge^ThapcLPslLhg+IvJQjYCYAYIk-~iE3-3BZjt^?uQvr;cNbID=1&iQq~*na z1F~&l3R%@KaA=wYD4m@k7Fgh+b{sNL$-WydbF4U}=+#{F*bV136Oq|)jv9jv5ibQr1Ui;+rej%s_QIFA} z-_RZ$GJkT6pKFh=gb6`W{FMs}?_`*e6`^EO%6|kH4eACTN(cKgy6oy_e3_HrhlLC< z8pA3Ose8;^K}#FS&MM5K)8Nu(;Ea;h`J&yso1V@`U8#dlaXvt}g6fhWq z{K9iY9^|*F&2cC&ici$?sO?KJxNUh;XY<;#u&B%vd-)uZz;Uk!Ii?(DwYF_apDn3{ zT?Ul`kCOD9KC!tiPo1>B?&Xw;-fPn!h>54|wQuwC$!WCe?tY^(?m*FobTo{|1`MlX zvY5Cpppge`^Y-Y zlF1I@Gr-A80w>Bc{y3d8{yd~V5g_#Gk%iVE=`rsKxA%zCVA*K1GoIsIlPv*G6THV6 ziXk^Fn0T**mVoH zzmTmc#ioGf6~q-EBmZQLt(ZkXDOcYgg2kO+p{Fv|=q$$VwG%IqKp_@n7)U-&E}Hdm zfpBr)ZrWIZ?Cq6VKaDZrkLJ1H(CQLIBdO%W!)e`lRpP2jo)znmLFwF|-(O1mXwFhy z&6LpBxN~kG0;4?qPP32fTLsqs7Im3He*;{$dIJB^90b6ODnzWct?@~jy40?WSFAOE z-(7yDrdq2pj%9QH2O5&j)}Tt=WfL5}9}aYH3IpAs8IDSZ$XI~blcaKx9u>XhfsKQH zslpgU0UzAG;zB&^!wHqok;LGWscpL2G$W~F3Zmh&pvIVXZlDFU_^oOM*oamhrkpU; ztG;(M;Tz49vvB*?5%Z&aBbv*vdu~-ZUHDQwko(xV*g#9k74@9x7lX3gN8v22EL6~S zSG-TYq&f>Th>wGfKi`#Y=*0@Wk2^nG?r6L&>?msiAGL2S=k^b{8FY6hAW}tmwqlIJ z0Cfyk0v)t@GmY{lx=C)yk~FMM-%C<+#w5Je(e3{M?9&KX0EPS7tz*auDjBa81}>0a zNsa~TS!Xk+f?0f@5E1|*Y6*-14p=%Y!g~_5fNCZ|W&#U=V)feGtUO9S%I#tnIH=pB zHxtf6Y(Vb91*>l7b(jL&YjW>{)?v#h#}y?y%OEQx`NRks;PYYW)UAPOfG@e#3~j~c z6_#Djo_PRYDrUX|^O9;V@$4O!4ZF5lc=II?J`NGo5bkR}6IK-@^suvl?GGd9;DcOA()C!fM zb_b0~RoqwaG({WzRD1M{G8NPS z;@`b89PK9&PwtzpVLlPxei>3?Q#r3T;5KiVTn=HpTQS@p{`}^KPL3H>o)}F`EB^9S z$%Ae;XpPKGu6dFCaf~d?r>SLa*d(NwUkMl$3c29Pxbp#lKZiG~dC=7&s8-G=BP>bE zy#%Y>W_je+N;eD_1}BRyllXRH>0 z{qM4~<>K0FeheRYHc>EDgTqtR{HTi0u0Dr_)lI9?MnrhiskXki1abwV0(A6g#$)q8rJ)HPu8t3qevE4yd(B7OhZ2my`^PQ<2U95^g%Q8-<`zSZ6k9;+?XBYvbyySmj`Wb@ zI$q2d^%8f~G2H;H>m*TMJmszEFOVx^KZ>s)N~mgZX=UD$%a5+P#?0I@$X4AV2#21i zh8*L360uJrA3uqjK5PHzw#(3=jYQ}1i7BR?u$?gtPa%e zBBe{UD-F)de+o@%$``jYfxZmB^cP^7(0|dSHIto3VA$a4qx^Ot;2j#I`Dj{J0nif2 z{e9*ClTQo$!n~_Vz}Oj-ukf2aVptI$rRH;s$#LDO$sPi()yuMB^%IvX?jFQlG}#z; zsi$SK=>t$?gy;9yYrNJ7TdRXIGs>Na#89YcBC+wX+2~uThGX*dHHuHe+TqT=UHbLw zBm;_(O-gF8qwXvivR0S@eRG(Mi5m(2(!9sUa<^R%kB*fiOs0llni5*R;06ec|4;xA zM>Fv_@7rfhm(ax1Rb=tto%#evZ~Er_sit9WyM}|=bU)f~WSW|sGLD-tKEXauAWm7u zyZ3Ez=|0C&A0teE?3(t8KLok&2^*=(6Y|ST>E@XEKt1)11G>J+Tp!7!x$tUtzr8eS z;({y$?*d?rRa4`aE7NA1p#ZqC!X8ZU4iWXwPinfgiZq+-(SVizV{SKA&d{g*_F+3x zC5tHKpg4q%BjQD|H5jiE3<+%$Y$^2U0xhp62PqT2)3VtTHYLVdDhlG~VU%S-?RiXX zvfd+b7gf|!4@Dr)O$NE`RbP8f@5{vYK*D=j_4j*I5v%8EoSc2aYf{?;-o!~n(hL9D zsu!p};rp>SM7sSquD@N&VB1{%kYnXOkVbHyclO(Sy~}~;@JuHPs(q1Qh-tND_^o+> z1G;EQ1aZMkmh9LueQgpnu)?7}9w$}n50aGx(PRXX0Eo~8FdWSvXHwCfYMf=q^%z?W zUT$tMw*=1UgY*^B#Q|Y@h$~$YN7mK^n=2QV+-`q_ebynXk>FYYw#P#i3Q14;m=!=F z+j(~g!4d%0f;(D->RJ_y;SPLEpaE?UpP?Lo?ea=A{(9ZXIQD4pFncpb$P}jbkDBqa zu%~>Np{UPcUUws{JkN?%a!`v^e3Y6Xprifh?upOg#Emz*2%nv8a+A~LOs$seH6W^b zC^nnCC9er&=5cx0&kwMTEHHT#Y;M^=2u#~3Py4fjxK%+0p5^&b9>}9Vp6K_&+pCLH z&oj=tU?=NFbR~9B9WaB6nLJ#pHNYpEI7|uhfDugePc8R?A34ZO*y#QA(aO!fD%sWE zyF2mFpz(`Ncr7nqG|XXHzBCiv0N0xV(BlN`KI) zqqC>PP$DFI)v>=wtD(z`d(TJ*`9a-Pn*ubtl0o&NMlhDylYF@W8KjUW$M+;ydDY`y;C<#m)Vrwz;+4X*Fe5*e`u{b>R{~000z-N1aEDxN6$6wd8r#7$04tY1R`d z(!dkzaUX`10VbteUn@!)^T|6W=GHd8 zW_p7+dXg`~TjMV+VqqTXM>w1ZA5KvQluP@l4L)&z(c3__kvsEPf?KN02;kWvUIEQ+ zj?)=j#xeH3wrRH_n(e0XG7TJWgnnL0<{N-^&b^d3Y66Fb&a-y*E(Vv#Bzq8 z)NCSgR+(xEYHC%G@Dl<`=}nI6a0Un4j!)n!jbS@t(*;EGWxBsW0RorBjEunsQgP9} zjXcG;LiMN}cO>#q{6k)zyOdq3QuiSM013i&U0RueZsG^OJ%S8i)__hD{}9NHWNcX7 zjISRP8U@-y=VlWAU;qG9NGP)a3{-=npa23`4#i++``|Z`pQyYbS8!p5n~?m2XfoVx z;gLJ7_#m-pR5|=?#Q?og;MpD?6*(?P@s1oB5|UV6$hC+8^mKugmu^iT1?e*uRUg=R zcY)~2nExH1s`B&TDwX*_OD7MCzG$p}LA4Ls9?)XPKru{$L@^N1IcW-0aMa6t%F8hv zx;^*s>4uyVU8ZkRhF1_<^2|F14wK82!_%T0;rKaE6JD(RJSj@FKFAbqOnw=?39vw*II*UPe}TwS$Qd(NmR9nSc+PgG+=_4tu#T4r^=@cB$xIhp@M+{m#t z1yu?cAM&_Jnm1Lx&MdS>zO1-`Xz$OD$K(@x?$A94Go5=11Yz}WV;If&|L%~H3CP#A z{~2Aqtn>o)nHt-FbKK5?LiHyd=MH+GK&^L|fum4y62fW_5MTnk=#PPTJ@Ps3dw&ahA z->6}}US;Yu0bK$rgu7lq^j#^M&}{|gFVvKoZHxZgqfD{V@F%9^(qFn#0~uN?y>oH`lQ}x`+7a zuXZ=5Zl1bfO7r^bf8GYD%9gfqxz^0WW45f@p1@tYGR6m$Nz}OHu|pPUagJoRh{)!D zI@9c^)s|%E*xW5(2Ij&XdsehQRjXz6iEfwg$$I{+$&jJkR_EXyzEO-4)J_dlk|jp| z6{S_LC1fQ6a(mGX?BgLHuLE4DwfJYYY?=KDyJIp4uNDA$7J(6u2KN6p_r)J+CTp!A zZ4rSwuYa4btC2^(M;Bu|xT#=y7`496XAd%6)Qt7G5OG z-v-0*3W~-!{H3!yY;K{zMFp{?QfHR)^-Z~{8YK7iC56I4UwK-62EA5uGY83(E74KU zwrxyDC%;P*(bTz<(M6|DZGby#kUw=F@cB-V$^s6-M{+?8l8eDaPiXz3o#rSP4~V@9 zke=&sH3{lQ1}nDtfh^hrSyGq=?$C$XGn+jPvzLYR^PX$phJQRF$UZs7sG_wxO37AeWW`EsiNHxf z(%7jZS_(|>TJOZ#)8MPwd>*2()`%r^9p(jNUE)=%Ku0LKj0C^u0Os0`F%NNdF9d>U zugVJg^D+f~4sv%Wu!DiqIm3Y7ME+O`P88G z{L}(t_1N1u{0ClO$W9P-nB|M!D zO7tMOPXzXD3aRSZyLP62YLZ@cbyZn?p{X~j6S*HdJ5t?q$Mb6d1`vzj(c?PZ@Eq^p zOO+lwrU`IPGky`2&zpAHJe>&yfc)<0HwbpTAk#QO8ls!DN|Xn6wqkaAkQ#)5b-&f0 z4Kn8Mw7S#0k0lrVn`>N0ehV01_6co_l^|%ADe(DUP02Iu4?|bW~W;7H%6`4JwtIH0}eP@+RuZ_+}&$_HU*d^ zb*y_8eBo-Ie<8;CfWXSWFYR8XCV|7s1^QjhIn_HckD z*uOu3xk{dh;5rRv=|0se(lin=#C`k`?ib6zUC$rNca%3R4>ulPbgO>_(B{09Lu_E|5uf|G*hMepMU zOcUytpy*o4eLyF)hk^`C{SCKR>)421SZ+5&BE~DdtFcnOp;+_mv%DlX{OKXZ#!BX+ zy;Cnz%!vwII4ZPD@JSxdf=EB`;WEiL{T+f z50taRdWCAynyV0Hu$|QZN_uEt{r!MI@}$mZxTg9g8GxF08B4inH^n13hFF78JB`u= zr>3NMv*vH(^n6d?>mB+<6991U06O%hxq_1-0cQBqW^2dT#-3x<-6ape(+w$%jT=^v zD32}hX0v5hOtzJ+lPcy7zJj={q3`&fLcTz}) z3V;AV;^p@;Gfg%7jTi{986K()WV;2msv{5~H!b#n9D&>)6N+U~e!dryn~=iB$Lwxv z(8cL1&oWE+4{Km!Yt-56LdwkjunY2o$mwZHP|m13WdY(V+Ofa0(rzSM!=v9Y7VV|G?9)`ses_mkhUkuV?*%qDGKqIi3Mf|=Y<$Uq z^Nn`WIM4t96U+U2ZNhB28dCu&ofRgI?x14S9b8Wxo8d`X&TJPZn5W|sMTqq##(7;8 z&bS56?dH$}Akp7-Mq`x#003ugV^~PdgFSHUG!8HHVxV>{oJuIxcZ}68u9s+S!j&gr zP#6#RYOIabP~o$y3bdeh-yJ|viWKKxbG@x9o8wclfp10B#}lFyLtaW7T*n5O_Q6LZ zDL#BY<~k^?eU?-nO#Eqs&gY76R#ld_dHjFbQMVpyNkiK*BcMTd^i3CtxH^WsD)=^B z&{(hjqPG!aT+!Rj5;^st^*Bh93r~reOM|3>OXJyR8LgJ$pzJ0Poq$h&BKrkd0uq^L zN*ODi@g5@9<8a)|(zt;8kep3P5|rI&PhJzGa-eDpTkN6_4pHV@0bmtI+94t+d`8dFI5Bn4N(?KFn4Y%tAjz!Kh97#qF~P#)(|&oJ=&@JYtP3IVQ#HAKDyTump}t^T z=cGhgJ^NV zK|SY0GOaoz^j_lung%xiqS06YfiZC7Ln2-^>=#;vJEeb9!i+x`>u60LLzP_$=ASHrThFJ$XcNw)buqBI|tE`s$VAJqU!~mlvlBB zj1J1|+HxN^a{_j<>PcrR8SR?&;8u_E1MH zE+9tGn3p`91uAYG{c&vK|1d8ADsmjt;KPmWfyx?;sl4u$n)j1`1jC%1IK+`lS#=Gy zh;-0~u=jyO&~R?X;d}(O`@Mfgm9@`^@+=Jw%)id8563{Z*1`?SrxK^x;`TgTkh4ea z+m@7QK-K~0jkQ$wk-K^s?kd0&R&4iPh6I(g=hNFqPP89rrkja&RgR(qO1FA~o+Gny z?5Z}IwTf}x^K<6s%5E5Cw@SuYtBip=0Ld%M+`qQ@U8bVmrn(!c$9@=0OY37<1|cu7 z+r8?@<&A2-KnD-K*c)4ZUf!|JN0O`}Fqe)MCIQ2{)Sc&O00Qq)*`{#?EA>Arin^o5 z3PUf5+1(EC@EawZMhBseur4~8! zx>Txta9N$K+mS>ByrL3g7*%dls7;0A0rJb@m$jyhKoSd;2zP}0&!pUf-+uwt{0Y+7 zK=v43SImD8(wR^$4fVS+ZUx5nI}ur4VU2mf(rGUGb*3l&P_0}xSevjD3(l2y8|F9A zG&3&n1Z1y*c`z4pcClRemrTUs6|e&)7fz=&lx5d`MB)g-IbkDM9;R{tkmdo02ke7I zSz`gWzxjygrwi!sD~b4B%(E%Pz376=SgF+3eOXAmhZ>04nl7CM6m>NDk0IO^NR0!Q zsqQ-U*KiU@!4px)ixb#^x5o$AfcGGXt|tF7!v;odMU5q`vBT&dMm}$PKh36;eK7Qn z`ebzAqc6hA007`baABm6!ARm3t|uxv zZ{^^M`MofA9ski`DLfbcA2fIJsHjpRD`T<%03%UlJjTTMA3JAJK!!q6&iV~L^zFwV zP&4#5Y_IL=iKS)dOBv!56N7f@pXW*GxqlZ1Ssp#lMW5K1CzU%;vqrp-n<;xoj^%N* z0uJ}8f^yfc+On`0ow%r`@^kvrM;4;bomrat+=*PNN|TY3>jD!~X%sLK%nvpb4q7`8 zu(rKG4#^c$(g)j-DJ}B0?C1RuLh+f(fIo(}R+1`Pj`3KMW0!%uYm#mZ7Mw_z^a@#k zBp0*7yDJg}U2Y9|aFmg6qcW3{!^~@8zXf&DXdndUfjU5NK>uM72q%OG%Ha-}p8=Mk z7RN}UwPYsdHhF(05KPZ{q)r`y46rUmmG21LN1N)Q)r?ATFV2dz)6^47L`oTTUU?Pq zJy7VH%klb}4-knUoe|k3dLkT=osdvtk;n$$PD%s$E`V{BM}%yie_+0^5jy{5-TBa>GwFCeb|B_Ip3O9i9dr+s1vDhFxCNF;7 zHe&&%PB6YH(TXeADqR6ThR88b;jTPEoz*O zUfeVcV~SEJB|=mJ>#C=QJT5t$UZA*kaZq+=zZtMHecw@-68ZAOHXat+sA>2lvW!Zt>9mz*(HkNWgKahJks)q2gwCgT5v6 zs#13KJI}B%vgdvb*B+X0)OV^q|+_@UFfGC821m!}}=A~haPRdsWz zk&1yg3%7P6JP^`uScEsr>uJ0DmKjeqn&Ii7*xPg#>OiH5d3~nwBrqC&o_^m7rg_i1 z>4#; zCwX)*0cxe7dkf_{B-yWbI{L5jX*vW7#f!^CthF~~BboK?#a(OlH+tMn<{<+P5*Q(8 zBU>Ir!XxYd%5P$^Doq#I2}{-8m)+Q=^y*HlFZI>xI*s;cjEy|m$U_!m6*rz?R*!lW zRE%o?01Jm2KmYkG3dMUdp)oMM{A!XfeYe%Dkto^HcPSFa z%hlH#l;S-!@ubc!sA>qhR-ai+T zq-&<2!6wCKjb6={y#m!IC$enxy``=qlfq3;q`;~de_~(7OSag~RYEj@tA}@cBBrSH zuCor+$aL@W*>7Q2+Q-rC+mCG5*wGSa|?D)57U)vBBPc21Rk~uzD(ORXW-Yl3R4(Kt*0aV%x_m>(ZZqa3b+( zB5IrLPk3#jr|9)v3U~~i$V;>hdNIZCBBEUQKOz9#whQNYLE_Tp(bTJm$dkgPydaOVLt#3=a%C0kc}+&$&Dl2P(ob+gNxj)rvF?2LBFm)}`emUqs*dJM71Ue1{4j3a`04uY zI_C(uKv7^b6$v__HExMn_|t>(%c?RV6rSbYgBNzvQoMItjpQjT#U#Nru|w6$@GvD` zPm9&6)C4D`(IxT5j5_HGi2GTqoF2!#GK@uE0|Vpq{n9zwOcSBFK=QG^j;rroo3vLd zw3T5Qs3p!MiV9IaG=Tki$`~^RK${04#Q6KkeaaXPan#OyJs3^Q zZOtV+4$Ng^!JGZIK%3qZBlYYif3;rsiOn!tjA!AfvO@b;=I!t*c`_x7Kf-#mfu@ot zi2(8~uT@Oak3_E%m$x0iYz-+b^M+?TyZ zFm|?zvJ2$dwBDTde{-b`l}d75G!}@Hrv{?9=4R|-S<#!r9H?Iko~|j+YbC!wf;U5D zLa-YdCr%z4uoa;Q&l*(MH(jg=%*h8~=oA9CxXP0DgJWvG+t+P`HzvNo52pk0ZSzkY zc3h~(_jE1IF3C^_#De1R4EK8+001_x@?RSKfz!S++ZK-Ig8&p~?|bP8FF5FQ&32)XIrp(G{_>ZSHmO_KM(H4)m@rNIMjeE@F{0{Lr8Ui%~7ETgpD zg5>+u6)dbMcf+4+*&>#vHv@QneAa+*a*csb>8r%Dx<9CPA!DD1$RAxFna+an63C!j z3ZxUX`~R9ich_JH#|jVAAiM)e_2ldcgYF^Jr5#J*xP)Am@z@vXotq60-_M zL|M>{7=N~Ag+#G0fCT5#)Beih*&>1_dzRz+aF*%O3NQ@B73Yp&8{F_)O=pc-xTJ0v zWCMTfTq%DIHS?$*BsoQXza<~u%Uh+O1n86e)t0DV2_FfTqM#(23IfQ0~0Cn48vhvhn8uuFpKjciS zZ=&F*(_;-IJ=v-0@*5A!3tDuzle&G#pw-xFr>S-QpO z>c<~`)U?7P$aUiiNw7;Xd#R< zPw%7M$G*FlAUjQyaMh(FI6t5d1@Ejb4K7|veIxL@|0YggHaB5IP zLAY<}PynfHfXiK6s5?xzTb$c?BW1mDx z@1_Db0n{0wy0gtbFv!+~$JTgrV!nv8k?-8ZG29X-6tTjj1X5{$T`c_=lyb0WbnO3* zv{}KiZ?ZRJcA@!zXy*u!@O+QBPTb`BTbkk%H%V2ezg8nn(Z>|K{NLI%K~RVfmrJn|4Ru$QAjbR69m%55V!eKuP1_LR(1frsgJ0l zv6VD=1hiPkm^* z?EnA%Kd1iC{ty4}Hve$u2mkLx{{a8<)iO@^)y4V%6Phr0U2*oX7&EfC#xmDqiGSuu z1D)$=U7YhYE%70x!#@vnvbp8U;tS!K=TiQvhd;?nM8b!=MmjFHOjWnf?sN;=byX-& zEdNCx>R;QyW%t?HPss1J9uHHzi#BaoVkc!KF=i;mfufu#rID#3a6EPiP(5S?>7GQx z8jO7RnPdhO_R_Hw!s&Bp87g1t9aQ{2C2F<_MQw5mzF6jT!Lm52uf|a_cbQ@4<8hKZ z$sGmTW8IAsJ|K}i^=Wc@Oqc2DURWa|)Dy&J=RCcIKM?@;vxjy{prWsc1z4WB%QUxw zcx4s;+fR#e{%qERwo=^(B}JFC^&*tB^jl`(=NLUre&iZZFropCNN|E2oNq*9Rgv2RfSd)mT~X=(`q6CsfI_CHM)L*fjz5ezKlv=loi`Tg5hePaYYWka zw|Y3}q;bP-Y+@DppNB!n=vlN&2Y_`mRd+riqKZ$&a`R)N|GH0a0NeMb(1KYM*L`(d zsNWi?v&abtx@7;_2lJfFwo#0UXQ~U|HWY2XBY_VUCTWBW_ksUbRjem!b9nqFagbDg zU<)O4nJkiMu?n;WIhb>yMFb?AK*oRJ-5uo+03mLGPOZ-x&AywW1fOHiQ|&rVCvp_N zGKbl8Ee`$GOXCl6g&L35$8dUwpRXf8{x40l4VPCZ*z43ZxhtBj(+VnCko25_SaDuJ5h(TJ#+_4PGXkZmwl=qT=j3A-gr@$?ekO?P zv$+7(U(_yx|AE)Q5{PUGqr5fZMr#mlp_{>>f2I>o(zVty1{&5b)^9I%L+&Bn#hB@= zI70H-;iH6I)K%TTVmT-MCFmx$-lorwB>AqeuFxs>p#&i3u$xv{^+Y)`qeign<(ZCv0 zk~HC&%0m_)mQ6w;Tr~3-9@EIFJ2MUtSY42VyHz)}9bWlil)5RJN<&Sjd8Agk7+O>7 z>5>Loo_5>V?f#Ccz&JzZB|hfE&qd30dt{nqea+j6qw(9{X$9a#weJzZojN)GAUX|L z*qnN=mvm8CSCMO7z^(~f5>LVIu>%HJ1wZf3)#Y_BqG$6i3H(m1*4%nW)K0KAoR@&( z;v=8YwE&4lvf?esXu{t2+L^kzssgtCHe+Vk&+OP-Y;lM17R|%yZ8??K<7aeQm`X4a z)G589|J-Sul8u6yTO?590wgFfg}`fPjHw=9pyqnEciN;VD_kT}4cN$D0;S6Qd7)Y! zschTB3R}vG5k#Gqpq;kw^^iNa(1?wL%N8uk8FO3na*1abrHo5;6!O9tMUsfjB$1P6))_OiWyd&Q+ zlUJ^4@VSFaZoJfdS$MUY5}=tQXoX@P(n20-&Aj6i*m+I!KA?U(x{u!tG(VGoBv;)$ z9FQp?smC5Oq3Tdo9p=RW^SUmI*3e`n2)a=I78t7;yDfmEi7b3gb-u>oRzq=+w~ZGl zfENeDUw)905ph@tfgO?0x4v||u{3L*jNnxCU^qH+2c2i`@_nOw9$83H! z!kBR#*1NwpVPbUUj>AYI{C(^c@tGtKi(13_w2bAxBhj3h<6T`}A4QA{^|9PwlY;eb z5t6h)MfS+(Jbxn35;^_g;S6#vmjbScaELh8F}y7vg47p{>)tIIab1A>_!D2?1eoIz zLFv~7#r!2v{xhXd6`ov!de~@3zQ6{Op`c$P6=I%1sBJO#FRgJr~pE3;c zMUrJZ4reA=;Il?MX1Ks6?rAW_IxhX()dxeq=)%9SoQbA1h6?@b-Y-vAs_{wINJd14 z&SIswQ6EH*|hwJpFy*qd^u{klwv2s>#9|>fAJ$DSxjr%EDDXA}( z?kJ9f)^!o3M$B!40O$Ou+~gDR(ArFwFlCJt8}m=KEo^Q~%G^Yue33`kO?{H@`v^z4 zo__L^ZTfqMLA#*;qAg2!zD#BYQ|M=@W@B!G{Q>t`$9fpkFrsY0tkcb5giO0LDf~d3 zuKq!{|Z|V~aX&oPFTu0v35;)}|k-XPT9IAcxYf-LBeLh|3^|Xkf zw?4;>2@he-u1<}n*hpR>6pfGo-iU0A`B71=A6s)R`9`Bm$8~=qdOB-A;D}?wKM?`a zd%H9A!ur3YWi(x9Ds{s%j+%<&7)R=iZWrlEaeMBQZX4%Uy{LCWawyN0QcgLl3KeC} zcAx(CN$`fcD8XhAAdE~iJ1{<+S#uY)$xNQ1}UDAJ@ z#NP}HFMOF3%+b@mYrd61=P-@;RIzZjezN_;#aJ0s9ANE3-qs)5f6*D%^>`Wpl#i4f zT@Ul#i_Gx*GH)P&Z|5z}yYbbP0Dy(z*d2j0WEEti$dWAF$bCA7c`KDj^k)k#F08K+ z4iz>pwpm#WtqYWAQ8Tx^1TFmjdp674jphR6B1}DP8L$q+x<4nG2Lie7hfhI0#I58uKOPR^JcXe7Kjc_-Ht6DX3Js@eLOZ zEUybKOc$Sixy$zbp?`bt;cR4C4+2yr%snz89%pw&nmR&zY0muyu7`xatcKNLo*D1n z1cTb@b_jM$ZEfWXj>;AcTzrEI?(|gjy_=N1B?g4gBHg>+!HA(e{|H2~r5D5;FJXbv z|8p>9W}Dszj^ud=+yA~3W(P|rVXh?)sgCUL-3sP|OWp(kEran&mehRO)h?4eN&Y&& z(N5Zyru^U~PwhqQ=3%wY0(89Y05mbtjiB|)rB4Na+!C%W5Z%;o*pYR{^h=r7*r;mN z%1iT0hI6iQ`{jICMhO+olN-&>hS)4bJ0}%N4rZC;uZU_)S3OQ~)wpYH#rF>%;vKw< zXK}(LUM%HQmxYlBnMx~zl_fsqNo#b)0@YmiHush&nD8$fskfWvB{7f+H42X0T*Gqv zKb4J?ot-XeA-%|jPtJjppXo9;A+ck+eSQuan=>8Gf^5NTS2@Gt6i{}#(=RIJL$S`osZOZOhCh?R)f0u|d8pd{1qxkCT0Bg`b$%J*%SHXM#Y#omFQTsT2 zn8tKZj_OO&`&hrDP0A?fd+<1RVWP3&i$4!yZZcjtR^VnxGjk0CKix0WvcI+poP1R2 z$o@_67m0@UNG-P{INTlcD?kGW|HH>ts%K?_tJ}7QCr|9oaZQ|P#njOTvzOmj7_p|1 zLh4wDj>jLLjJn&#fbm*|#t>i2?a`VMr#_NiU+^|${jfyv$q?a)WwnC}+$>ecFiNr15@houL42FjpaN%lpcVH6{s6_*NL-Kq>Iu38dW z9@H8T7(&4U*@(xj*M*(WB~$T0F1#2HU3Hb4cJ- z4KOfQs^kwYuBIb_>Qu3TOFmrb6zmFRN9VTV@2m{6C}tDM8a8w!ovwTDL4F}3;NK}d zwr8~teeE;VyL-l5A(=^pVWu*zQ;P%JK1}V$R!9fJTFR)KJLg?KJ5;%X_?j87;|QyY z_8$+4!{f`;J|ezk#MYoCv6=!)6Re3gS8#jIPKYfO%At#7t7l2Pl6VoytY)ZEF1^Y- z4sdcwEIkX=cNnwmO7<9hMZ`C<`K0xn-CYBGTO3a!3I(2L=TFNQW?+l#ic7(v^~g`y zknq#(vxL*;Ju4uhrGsRt65O}Tr;7%RoculWDQpJhi&eI@!Co}rie~>vG*RV&^|l!= zC(9}9-QOna<~wt6tvSd z@UUF2`p_DOA5h?IFLpw DO(1JhTQ$hB-3k@&D)b()+*@a@cg{r%{07d?|6OqfVO zfu}^|m~Sjj!=ujT0ij*VL8U+9uOVtt-_#uQFG(sDL~wnzM(1Cz%5zP8;_@hcRay$H z1{3nSYkZC2DCQ;G(+AZvu3K)qsZkS`m)*s|vZmpfxVL7;2 zTL3=_$}J@0pafB(g3%Z}KCL3Gq32oT?Fz|@px49ze zK3FcUqD18#OXUVlUP3*(`s18o4e_+yL4=F7D|wXcBy*6!_T7v{y55zM0cm7zdHY{u znGfi-8jK*JC$QkUKOi7uvczc-PfiO;=G;dFkvYfig^Pebc&RJo*h=Hjtt-goMyu*m zJ`(^XFH`843W*og3l#1hKumtDcmq3KfAus|ZyfA>ScSJa2xf2yZo_ibN9Jr$1#zdKqB~cX;nb(UEcL-HX$F-Q1oOe@TN$sYXGe8QA|gB8YT%8f`C;s zDi>qnz^p?~iqR4EevLe)!U;a6khI{d)U_8Nq?KAL~ znLIchh@53d-Mz3U0_)f7@2Dn(#+u>r)hxg`@e)cYT(Z2=+SRPC<1Kl(OK%>l$NdjR zRNi5OWX>!fy^;12ZAwU0;%Z&ml!njB6<>w_6CET5lTH*e{CbgrF+fDesh~UsTH5s# z@43i8+!Ttw4KlC>5?9`UqM>a7Uh1cy_k5`6{Jm}!s07c-Ugr}@q;;6tikPrU>Yy*( ze>j6aW9a2xt^n1P-@vs3e<>+lVcsb~wG!%_a3yor)XksC-R~R6S}sd?)w`*06JkQ9d3ZwFpn{>83NE9cVLmHu6!Vo*;f)%i2PYy=nHljI6iK2lK88^Ve zp*eQ2w^<-4)z3CX>WYO1&H+y%G)9_ZR1HM*>PK6mhWsP4`4R0FWB1-Aai-+fEPKX+ z=rdR1Or)1@%=Rnq&~1NjHh_4V*O`NicI(k$NsvRMY&Q;|ESxt5*x6ewmK0aNffo|b z*T@B+$NmO09~JmB0Rv~oC2i4;5>7R!cR+}yJy3poL!ZOw;=ZItm3J`fsFnUMR9xW#rHVZvUm<}E!4&$Z-#L9 zu^!)R!#sZwOR88uBO#bw{65ga)oYTjmDalU1~#pTwk+bg&&c~^w}6vf4jdf0qsK#d zSatFZfcv=pnQYYeoNBvIQxgJ=ps|?vU}~!!V?=bip;nS4YB$)O(O7zl=CM3ejFO9EY@i`0(4=4AEK{Ab6j` z$b0Gaj6a$Fp~tO#i9IPR*+e`+6iR<4MoF7`(}K zi$(*PTA#%Q9(JMw{DSG874wVdZtMl9Z_~#07D(Pl5YgGxP?3D$-G~kT!w*0Qco@RD z)nFeaW=(byshn0(i>HqyTN0(ZCGS4*Ty|ojOS@J|KfS5tA7y6}UZ$Dj8+C->lJ!*F zXxkEu)pf6kqvH7BHRKXMs0bYM8qT|*J%BcaUD##b2~qF4Sxco^np7U3%J5`p38vv2 z2tE*zgZgIqr;ll>jcY5ApyVK-q|qGDjhWmtGn{$jNy|$dIvzL}Lh+#hQ+HEtP?7St z`}Cxhiq?)=Xb|KEcBNhN*)5f{uK;sm8|iPMK7w=cBfVr~R{)_y4!xw;^ZWBLd7gzA zUlDNT>ic!Y(&S_`DTtgR8x|Gx48)G}?1<-8CRn}YV4nI93Np(xQwfW&a(buO8c0|B zI_~P4*EJz7w}jSXZS~ zHcPU2dimk4q~T=57P~PiGEq?T7Z~^u?aOVjJjq{kDD=~G=9=bRv{+oj&^o#V#7PHl z%Hm=sj2`CzSomXxf*+!_*>(`O-(Gd}R#%H*>;VM+9wCB}46Vf6w#bi<+(hQ zVn}P?qD-Ty`D$0YK&oD{!`N_{4EtunF9bp%|rdCLr&gq zA<$ch^6AQq(Pf9`$efKhr>n;P_uH@>VIvWu3y!9ROi)Smo)J#dh*XdV1)`p zmM+Y7vwD@)oE3&f|FY;6YH0gRO!D8=l#S(oZ`3ZWjwb^G%HjOoVg;RN`rnjxnC^rNsJY*CAl@EjPFd`#CZ(A(jb8}9PM1^}3 zyD6J?hL-37h*3aq+=repVQWlpf9B3oSgWbqMVL>=~^$gw@v5nc7Cec)bMu_S)1)= zsmqPcnazasOw>Nz|ADXRMFtRd!i@fdvZG0=Jo-i9GoiPkZw|hPp$@FG!RWYHZzIA*xzV_PO3YN;^^b*z zuu|nem9}I!n@jrL+LL2>TsEbqCuY|T+uF;%*qYd0%{z!oG$5g?O@O2lDM>%Zk301z z`RktNbGiY_6T=K0$!T|{u^R+Di0GNMxi|Ufdp+Q*>Jxy-gVj;c*0uNV#$^$9h)e%Pkjh5%yr1{G1jcRO=oJQ;DHY}md)Gpf1G_%?z^_1r`HxgE$2$7x2jt%jBKLN)`1o?qi zJ%);&u58T4qn3kqXj>;w*U^}MO&OZWaa2b+lA2tq}qD`H*UizbfPmK}^N_wB^hNV+gwcMCIl?ljZKuo!y8G zjKyRmKrFPZH7)R$b=dQGi-wW(MsLaZ`hVf+i#u<9E?1&OT6y(YWw8SM*b(Tj@judS zgu9c$KhaM05|9F6G68y`v2*iU6K=&AM@(!o)Hp_9(pbdxt2r;`&VjZ<*D+U$sX3;w z!Lfl6tS+Q*avz42QZaf+I_apT|Gfz)>#?c7V40?%!jGp1$FbB_-L2lQwhGP4(Nd!H zi$C4F?F+Rx0h-n`ui2o!^a^4_1>@;L+(DFkU%WwOo+=s)fZpkbIPO3*uXkYB5qKV5 zbpsr@`6;8ox8l`;1eR6f367nlQx?JNNk4H!tT%zoKE@4fRa+FYU-}UP;BF2^&*5EV z9u$ELKe`+7X&KMJD^+-~o$ z)OFXs`A&G40?n(BmB+oxyClb|vEa);8pb zySM=oag403W8U@{CnnjDA!u|rX~SZnEnu5dwm=X@p~g&{+IEfh|9ZsNHJ$V9kOBkG zju}j)80Er*O{12M&gr+nE>O|)KIa5AubJ*jPa-2y83?1<8$W1dMtcpT(Q(MXD&qzP zAg8l1e4x^*xA`7mPa{7=N>Pe6*J^(0Cy63?HY-={I_1!Y>kpdX;Q6GRnTVC?8r|EL zQ->|Ka(YfU*Dz%8>+A;473$n7h0$WSyUgA^aL7R%E~7+dA9I_}jb>k^!G-3UEU&7~ z`2BaUeadPT6fb@TwgWZ6FrM%I_wDCaRJN(d&U5+(QP=+i8`J);?d()=gv^W>2eHj-`KCEzosPSJ{HkOO7O7&!ll8X4&sZQ^T6Ht*tzI2eH?Tlez4u zlI0erNXV<5C0MQ?2U$G>E5f_Qx!U!{GmF^aU9u{{({GR$fvHb>Xg0o|ZP&?xCH8cy zmsA}=GL0=*v)b|#%3grc!n7KDSemu!qc|u^iLQ|=KFrnehSV_2O2H_=SI3R`Y|~gN+@>j9km7Y9`FdjiO=sd;t>wni079a zKB<$zeYML2$@v&Jose}Zt;*y1Rj;3NCP=DBpt|Q#kM0f1>I6@G2@I;Di;XYIBPHF7 z{~-r_)JaxesHaoN{vo39Ke)7lU%}vx1O!{z`VsH2>x|f@?+3&wTCa?{Hn>3MMb_3= z{BE}wc~}02&98Q0sE}#(`6BJm)h3gTjXW!M*jMKXZ|2dJ$JTFeJ!>^867VroB|Mh! zUufzdn1had;H@6>8}m<9gy8K0J)|4;FOp`fs>{k6Z7(3J8x_-vFw zmPX6i1X70sDthuEAzeH``;Y#pcqBX(Q)!B=e@ea>fHA;tTC(ydDT$~m>F4!*AX2g{ zMOwSowfXb5m&Ekg)P(yHDOmw9s7z^{XoNoGPqbTdKFJb@J!MLUMrqCEyv%#X4&)fB zuM0`Y7M<4ltcFts4BDAS1FF|!)^^rPsij{U?)lc{>p0Su#P${OOW`bK8K~DMG`E;s3*KI3{j-w51FAwTU_x2c^$6+w&O1gqw z0s5(?he*Xy-pZ{qy-3x`RtB-IP6#MypH3F4KNiN+tnQ~4e0=X9S8z#nZW>h-4m5=W zSj)hR-=d-3Bji@d-Qj~PqlY-^?(BC@>4jB9Hrqiki`H1v-oI^mSHN9SQ^KX1YC+v= zEuCdVw};{lH{lCM0kSD23Z8=poshatCLn1?`%v;+d5oBwUqUhp)$DSj-LZ*gN4IJK zIy>tSJ1lNOfUqq?DBNf)fjuS4mFrJMG3}ymvVFdBomR$N>MSubcEo`h$7=+bSQtTk z5r|H;bpHIo9e}pa*E49!d07M@WjR=-#nEeW=k-tQppaJZoU9_0sIqN?Zj+_E@&sv7 zqCinAL3I?dJ=J6fNPRfScKTY}$r{o1cec9(?6mp!yx`$V2e4O1Wo zppxvSzP$W5Y7+Yy!*-?3L74|5rq@yCH6c+#huP=ef8Nqju%!#M*6Ce%DJ$0il^3K_ zxk-?jmFnE2iG}+#jhhty#EKt2@(jw2ncz^vyeZi7N#Nz%-oCgPNR^`20)EHW24ppc zLAnZjsGGq2Y+8np_@zAhK>@(v<8xF1W&z*Km!;Xyykq#`+H~u01$0mx>>wy<-C9si z6<0i&^W*b_ra!wij$bI&QzL5hd~h;{c?w2bST2~&xmeO}<2W=fyQv#8R@~Jvvc;9B zQB%6A=8`d}k67sA1|x%foI$9okFqhTQ!D9{pf+y}If}D3FV1bZ>qUyn+%nJ}ZNpu3u!7VHc#U*r$xaZq^;CiAusRQEUMVn_ zXO^j0vjO{3#*$+g18t=_c>0fxMt5df2LM5p3${_v0r&iMM@Fr{UqvE1#>-Ez#yA>+V() zNimxVR3aPCxFTHxw;T2}KJk*^Y+OjAr0tnNbUGnl*|=lfU>uA<$~zusqVl?RYCq#N2-)hgF8soB(Gwom zcm7GIxi8=jvZW_zX|;Ot z$4$ZFRONfkrmol}&a5jE4!4F^HGA1{Iv)^06bfZRR|DqnbU%CpH`kbPAV=-3ADGhG z>EGh3JXRXut~Ry2bFpB5S{<&hLm7*|Ya=HSKH#5X;`kszTw3d+p3>ff#eQ^MzLhIl z4{>wh?K>!dV*S)^)A&mjS&mnjMJe{>!5PMr+@t5VPy9$W?C8@AYp$SNT6pw(buGC} zaQ_fDSz=9wl2{c?rq zMwt?`5IlwbAA`RaxshT=IVWopp(*T%aXH(UVE#FXO0mFKe2*Nd;zn1v%X^pT_G{VOATW2*L1*uPahi zt(xfj@86=m&L(()toU1BPXm~EN`3{yPB5J!g-MqNS?N|}_hnMgL&AU`3d5yFdB*<> z5zj+Ou^pHBlAd3wb+w!%uop^}Wg|0r>Zc4k!rZijgXHkp@ghmO%rxp!qS*@11kH4q zxL~%yng^=r#hCSL;@wPABk~AkSMiRl3G)$KPpee`43@yDdEDM)RTRZ_{WOz$|8yoN z*8@zNlt8TrreRS$7L7_n77ODv@@Wt7s>R>F^s5y+iQst3arEFX$^s8~#H4ZJ9cNOp z-hUkh4zZNmWmfqUgS4F0gaC}0ni9|07?k8}#jfByH*E&u4_Zu_PhCT5zignYjl4SWX1Z$RDIz+P$gI*$t& zQjruIY7hrDU$@yY5x@*fjG^Jf1F{HcV}I_JIIf)$F78_0uCea%(2ZNvVei>wOsE2a zvF|vPT2$U+h!&$7lpw+1^SHsJ!iv-xlw3z@6FKP$WWA97nk&Mp27z=<@l3Hu6dw+3lVJ33zRKoRNtVQG}_?SNGO9NIbEiuBUG zr0ZAFPMzWLM}xoSsb zuwMYJtTy)LG7!{BjtGHf3DCwY`X0k!(e~mTydCTVYvrwyd|dPZ0RH|jLO)6ZdsxY4 zY={6<+V^J%b#5&BaUrr*8`Hta9mg`}`j=L3hX{Ma?dgTc(v6t4DT4|f>C44dkM$W+ z#jsF6&xNB}+VYfVhSD!c+v;(xcKS84wEC03-lgD^@v{$6hMNIE4(D(*4~#Cz;~@ir zOk5x@&w0yj1V{B^og`L206Hjohy}tOiPMI4{urq40;Mb}O9*TQ304^JA6G!+uV&t5 z3vR>2pK^oZUjKupz3L!)d_=r$LCRWZ&wRtBmrHB9AEs3;v6MlLvU+iqVV^<4yhpf` zt4$a-Twng(_YR#FU7Q&zTC+k5tDdQQt50;cC_593b2u`Q;o;{UVuMAQcW(Isc$OL9 z00A@3=?A{fl2_)5c*{vLPi?!WTnXR?lQwa*A0cPRw+Q4*cAazrPQ~%rvyXCYoIc-g zc}ajANrkmpxRQjoCbXR9+HRULqk@q;DI=JX%sIbJc{5BR4sulfB2y&q#?A%!cc`Vg zbiFsJ@+HkL3E+_05Y=vf(9E2z?M(9p&$|1M30J<+N&2T78F2h zS1walTZ912&_=>u{v76F&u|1 zuua33^Z;O+vxO@ePjZdHPI(UuY+wms@cV&~`5BkhkHFZAp0|PYK)55IjkFf0pnKCj zKp$P`Xq*$aMB&7mO&eQUz1MHriS_k;3hEbwMqm-poT$8QQ)3wUF|yHJ1}slQlM0k~ zOiv!u$1+gkCeyqjlKuV$xFT40x&7H_WqE1G0-5*S7EbpJH_hl{bor-{UET*rQc)|K zPzc4eOXUCtw#fQ&F0s!H0T~bg0g3A>hJ+8gWDDf3W$J#4l4qWqG*q~u-EF@3AWvdaG^R2xp5@UW^XDKxJ|m-YJ-x4U zDl``E20TNV>BwOS7RWDj=RcM(&sR0~%h0MS$>4QMMfCDpGnlpvSbBu-N=TM48K*qh zEjrnhq!n@o0aZhLEyXuBRTBiA`InTbU!|@BoL&elq(n^9L9~1%!^LMiB_Lf-{!)|g zr;by3Y5&^z*J1+7EfWt1-c3K7`kZH5;7F3d#=yFvCaJJ@(}#oLWisLqH|rZbX-miX zlr;0&wwW+ZT^?3d3dIJSjSWx9znCe>2-n5VI>Z>Kl)4KtnS6?p`#6pB!gigVB)$14 zFf-BuuP<1&HU-6AP5BA$jTGQJClFel(}#nCtw>kiGFVn=f**owE zIO*R6%AHQ2b+|_H)x?ZX*)m$cQKtnR^V|+CzYi*3M>dck2i(`>0C}u1XWXvQym$BG zuiv<-1)KMH>kBVWNiSb01FygZDw`x8ymi?-7X(8KS9;-oXb)9(3)pq;NW;w zLMxV*XxW7|HMuzxZmNT>+iS^60qes(%QY-1ILVa3>96axSviNGtgNeia~DI-kOIvd zdg&V*H|};kOvO1onlJ#)5>n<3KM#`B8H|7u3Ngj0Vq%|5K;uZ1&12QW)#1Uf6AVQB z?}A$N-XgP|m&0hmIJy*yuUD3TsX=HU6XEtt3~T2gv>EE!7G2XxKPxO$E-fh}v6JD{ zz#%7##;se2g$AeK*WI2PeIg%?-ue+vnl$Y|91UYtdW$0HAhs)=2imeO!2GsdIx!s_ zEUn#rbeWExkBZ@I4Hvy-_A>?}6N)tP6WDikAPFsAzoPqMw{Fk-ecLh`xwpv?M-y=n z==Kt9l>F7%*FQIg5uV58JLM{t`Qf81)erDjXl5N>Jd|VNQZ`wJA!kd*I#DOMD>^)& z(ze2Kn%KpVKK$IVsKZLUvHV#xs^9Q!gW_b-fK~s{mW*oS}Vn*K!Dc|~HGB&62;Q|+`7=rh1U10=XZqwUG zMqn>J;%7%{5&KMx@=*Ne{id4JOfY<3t6V!1#?lzg=N=Xcd3rrye3Kp0u7|Y&KUHF| zxvzCdXK4o+8xb5M89e+Z_t}DzFk2!F>!b3BDgWXb#!V?GL|anZ2is_J9Y}vH=f*4o z&^&zFRSV+D##KsI&hz{)yD-Ru8SO%jBta$PPcxMk*9I~?KCh6HyV%wN6!J3kT+uep zpW2QVPtvJKxVi*T!qp_>)zqe!+vMb!0suI(QD71RHTZ0BP2`Jr9miki;?TgxGkGg8 ztmVfHlUa@)BuId%yrHxF?>j9Ee`0)d{vKqjo_}THcu0rVW@vUgtxHU62%2Mi{@q)!W>X3u|>+@N1 zo5!m6H9-Vs$gJ2D>Ypvf5tm#Z7;_(_g|eBp?|?{=STzx8!I@Hs77$Ll8cq1Ne^Ib{ zBaO@3*0R*msM%2}Hp$_!y+(`}JC(iW1VNgE(|%owOT-Lj&zUMm0!9-B8%ei?bG?3W zdjLlgf$-?Y`=wxO#3#$43^?jH*PJE}@A^Q>3%+Q6b;7QyY+RtkLxHp+z+ZA5ez|tv zYDyFSE?ZMksxo5@?KYkJ294mn4!C=$_;A)&`*%h)F~h2MYrrnTeR3=t;I82h2w-}S zc9A(}Q~_z&zL36^S=&G%g>{TrHNVj70Qq3LyGBacbNvcdmI#+yexdiS&Fkuq;1j`V zh8Y}=)-E_X;0?_w*PZx*uPHw3mjE=O^T99x`htnJmWb=4qT`R)?Sb}kEjCza5 z`1&POIX5+BAQ2*d7cp)=r2o9rYs-OHB4pSw`(1{`54cXBU6I?)q%Q~f2p{g(nEObO z3ZS~ggDT;@_y_(Z!9IPqk0Q(3m#TDnKCtCIqo*o4B{z&TP`ZQfA!&b~I|55yyz z3wrYGahQSuzyf72fU|C$ywtpXo#TJ3<9XPo(HnEF9B3g{fu zh>4)t?LD%)UYu&VI$)-lM5E9&j>X$;J$`LTbgrg#-9=I{Rl_R1_Cb~ot)7o#yNMB$ zz+|>{Az5edRmlnxrI)htV*n2@gm5+JU6HYN?57#~LO)hd1h&$nomESusEQokQ2jUG zAFCwUD>8N+tNJu?5<0B!Ur|?=^iU3y=S|F_NB?p}Mx1J*MqiBOe0Z;;$7xQ2<9_}J znr?N2#f??1pu1(KaTGqozbF6$oVf($kQKp!R#TNYUukI8>a{Jam z%yN7@X1*jK8l8gCX#=95silN=NXtJ5maZpQgG(LQ006{zTE{f^&BLJWth-{+K$=R5 zxW*_&Obe3mcsz`84_RI0ePRS`}W4ePlfE6DO%pt_1+dHr3Q>9Zb(0 z<`Bam?8e+4Z8|J$LTOGYhz89u2nb7-H;RHV6a7cS0`=zwu${&2I)gzX`NE((xGWi9 z0!|$BDM(WU0*>%Qgw3D|l`DYYTV|tSBQtq7y9z;+Xg6fVk~_(r ziisVK-RyzM#N1agbHV;eyhfwIJvE(hkV!MmU5+~`GJSZP0R2E?5}>2(Rl&#wZOKZW zC73Z2jshdWV#+9_1olkUJEq-cy)YHZVzJj+qQA?0u^>9Or(^CF40Lz4JrHC{2z`*r z9FG_VkIonjcg2e-#Dhw&LjSl5Zuz#II-U+U(uuY01Ox!#1HzG(;xH!oyJ~0^)XLe? z&+JL)UG2>_LY_E{WB&+V0iT~{iHKaWgoDjT!#t7te=Ki3@_&RA^077`Sb>Sd8AK?;RczXXtaajPIcz$t8XQZs&omYGJ2 zJxL}643{gmE0q-|nH70zMFDMX6HDJH$ueW}!IXTcQW6O&!rVDNg||*&4&1Ay?Y))x z*@Vjv9sYT=I9;WxAcsF40NxYM)IbtkZ?RFJeSgFxQe;FH#(cmQ)*_VNE##>S=tZ}w zZ$-U4xv6&4Ha*r@gA0DS8N4dk{Uth!WDW*^G0~;h=)1ngfcw6|nYeLhslZa}8%z>n zPWXCB0>g?StA=|Kf*)SNt0@((b>;)|hIXoBd{Bhp2C4R^lADGmLL$s2g*Pl97Dm_b zWonSpgn1Rv;4BNJ>mLOcBRAy+3NVAh7zk;NRjKld-&aV)OhFs00AEn@pXYnP9B$=oMgiQ z^SXJgjU2HA8`N!?rsoe`G4qAgsZ!I{cmf!1RL!N%C0s!?l2XUTC*(ud77k-9?R%UkbkdNYDYFsARV5P8 zpC_NFESY{|yZ=I-r%7im+Aw{UB4DpHF(USuv-oge@UO9-s&0?}XP zz>ysXG)C7EhDKIycCh1a$|(XF1~?K+!yY7M6nfOFkx2gb%C@FZke*>W06lyDVOVx` zs-O%F**ubgR^dwx{(EPsS%eq3c1q1cv%}dyACuf$0AT=2K(xQ6EoTEDx^WOJ`X0N4 zEw)v5Wou{sJY5A~?;qnfpYKK!lcZSb*U#~%>J~hF`8=cd6XTe4D{Q|Z?~A9Rndt{E zc0Ttx;R!b7MLLOKs0O+og)A?K`NKmAujr6SjW+aGCrKlTHc(Ihu%Z36k^ze1cIl@7 za*3e{IHr2S_D)7!j90;#q3f|lv3B({I<7K+Hz_k;sU>hIzwEi+z-#?cngp2c8xOlU zIYoR~D`bw@z~VWcdL8~1Gu=-IrvBB;|68NU7ABOGFBs;J!PC+D1~-)1r2} zLIF~eQ|xTHbXJj=`Y-e-Wh?4MF!8iGV6u2ys?&hocOXG5>DNySQd>J!>l=;HU{{6B zVNtmrhUoYfK4vX>avlC(9a!ypaJdNgh`<%jo9GK*Nucj- zO$z)wHB|wCpbjO+Npwmz!rYrRXWV7vH?SEln*>(r-?0vwjq_ zs+=LZ`RjC4HI*-mqtt7gU~`%wXp#d8i<+9VP=~QJ1ZWVyxk_wgCpps1CGur%H6T~b z_pg1K%6l5@q2qhUMF;ksWfM>9ZeiPVx4uF7l`9k)YmL{uy zvMfPQ=%wBcI#^@nab5n5Z+%0WFm};#qimNE!Fd>V9W*B89_m~K#l~XrY9|0ALPXpl zzdPvc2d}l?fe0iE!Fn+0Kxj`D^sDS$bzY5$T=SKCiGIS$@B-p$^tS2Odj4{uF{X!F z4o5xGJ$Q3>=WxgsZ8VQBL!ten0XST*2`Q+qP6P*3K2N4aLREy^b<)O<-Kms263k@R z2hu*!(q+`{0=fA-04xFQi77RlhaB^Of}!z7WM#dP2n!-Ik^N?7PUpaH*34|X9B{NB z4M!b!YhfE^P`MRFX&Md<+9_Ni?536Ftr(QUfA!H(8Y@>k`}DYEk1tRUIC+^FadKTD z+my-|dh}->D>`!+TA~V+2i%anC{b|HU~4MUi?ZnW>T-MICBq-^2tb+-OMb1e zS>p+2>p6^KoUeI*Tf{`cYU}>3^5C5PBSlYgW0z(VZ=*nlUxJv0{8LWcb1s0;H|8n*mR2(Oxa{JW{0_-BGLb;KANy6Awh3z-bh!?2zZ6OhFz4XXs6V_?+t}jgGEC6pWA@(j8PZ?+ zpYm;6TMtRs&lJraG_FR?){sxcc9W>lhOgE3KiWZ)@aD8w0$XFp(5%VyXbbFP2PSTk zE=m(0Xb@#|lT-DOp^EaxL3?!EpG3R4Wa3J+XiaR^HsJ-Cm*ZhFN=<-20l!F8CF(eJ z%>WAa6v0@^WJxqQiHx-f|cEY zV1#cemg-1RJ(?@pSuin6Hp3?my#WONK|bQ3=0{8+SgSWgZRO}N5n5w?XlLWfRE-&U zSvoWelzvrWC(>x=(46|l^Epsq0W49uoM`*51@+W@t7^v(I-gKAbFtq8t1fAYi=o{FAf4wH`fT=}u^D%~NBF7~Sq?Dqyo_-d6tdAzMw6L zJDJ4YOW{E^0pKAmN1V?&QWrqXTeUD6ES2%{oH9Z6;e#2m^{V>M`C|yr{DS}3vb$AJ z+#qIje7+Y-`5t_8-fag1*U9^%Ih97wgUU^3GE$YmJac(B2=0Ka{0I+oVn;p*R4ZLLij_^0k9&p^^)LhgooCX zjAZm=j~ou>KQp9!Lijhsf|wNURHrxFcph5oP^~0u!rth-FAaMHq)kU+7gYNe1M+tu z7%lZ$N3#Eu>NUZ@${I79nK6mr#@`9*O>SQa4^N_=M{LZ3!sYu}W&ys)ng>WIX1RN` z+sDo~oJFmOtIPL9O^nPd@9WhJjr+Hvo`)jI1s=kLo>xY0YvEw7bV#?FnW9jEX(<#F z(T{rKqkzP>2~5fK21D)I=Mt{wKX{Gq8*G^hN{YFl1V6Sw9mkTO+MeTMdQ3;awX{}% zyjk?dco^uR%~mU<#yqn*nG38!@`TU}Ps!0y-n5B!_Qp$ft)7hv%TfgbFCk@tX}h#X zo}anjc^_iQMAucBvCvG#{A`Ql9j{cdmLXrY_uw7) zo(dp>{=9y*%vd8_Ee{odAcj#f*&pO@O1FWihgqpVA4*9ls6dmT_lYZUDHV7DAgh%1 z@)dDrd4(aMwZtMlwRxnGPoj;dxbM{+YE%FGf@u`CXaMmR25%di|Jn2Z4|eaXAsO*; z@+a;fg2dpu2h%y34q}*qEx{tkqj^F;^A?6^Vpr8%$mRZ^7}9aKJBteZDoF~KxlCuT zMvYss)mWQ~W2`gg)#BfYBazJ+W5k>jU|Nvq^H@V*B;4@@N$Ue;@IOK?#cO4D%t|gA zuNNofB)a=x-Jfiwkeu7spo-b^m5$+Tq2ZwL?!^4}S@s`zPFdH5yxK78^YsMR>5)O`FOw{6t`U_1jUIx10IM zTYw;&8+!xdvQ?YK61VkF9B37&!t%GL5>HE{BpS%I-i*H%`x=^?4Lu@tJJWi>(HPE) zm~&x2^xC;S><6PLAw5+mVQ1N#cVi;))Gi4x4ghIMV*1diNT3PKlS0lLP z|LJn+lfD{&o9_*eQom!qQ}&T+NNMpaIou^|RR;*Vu4aQb`aAw}7N>L5CCE(XBxlb1 zkszcGmJxj^m_96P)t2o z)Z27omH0l#!k`^FGE8ilzoUR>XF%TMvXi127oWzd>rip80e083TgUjV-cB+tW(sBM zEsv4=#p$59ofrePV4)nzguHr$fs@w@@;Fr-rMK3n*m}JTUy6Vorz9UUP9*EE)&gpq z5saN~wqZR_R}s3l`ku-d16bFreA5f2=CDgV(s_znH@sQQmR#tR;fT$hkuEhWIIa0e z(C~J_aNjkTVX^Zi2eK&ip|T(w@VIWKygn6;?+*rcBR!b9Bs#7?a6$p9ijs&&HjWhm zpg64iuSCcHcv3oCpmXHZ`{fO-F&w})1&mZajw)P+fk)AMnOz22-tQY&NeJ-urTfsn z3U;;?_T9^>L=NQ zt#7;*^O8h7~+&g3U}6u`B8D>_>0raum` zz&0(K>lC{Vq&sFL`8u=;_d*DsV=SeH18UZ@AOh>2uj(X37f#|_u^59uK-tcBKyq+Qu6>3 z`143~WFoWp5g1E9|E`)W&{xz$jiddzmqzx9ZqdhJ{=C-j`{&w?4PCnJge9Rd1DIC$ zEG0yeuEv!i-midnR24Bd@UMuHZAbcHsFvsefM-e(4PLe%K=II!Y8^`THV9(-?b zeKOAVwF1KH4CD0qD(~d#U~HOZXm|q(t>%Brhzfy>D;pVCKA1ZbHdN-{rO6~xOBVn@*SrTPs%Xa4z-3A0 zSt}$)Yv^do8klN>qm|LTFlUJm-HLGt1u3bfjJR?EuE2>5jQboNmk`_)Zl$&a>J+bw zbvyqZc6I*fCV!^>7-X6h{Y(w$S^AG(yMgqeDHDMXLa`9vBC*568X=2jUPyL~>SBB~ z1Ae+_EHaIUvGi}#6#ZU^BE4cR185F7{reOo;s(xULs0ERegj(77iBAFmXwK$YO1}7 zXi}dRTmmA{Lnow9#M<08AQ6gH1%vc)lgJr(k2GP zW)URebj*DN?w~`-Tx~2=E|g9GGa7j-4m&*R%;lGPON;K$`I3JnW+HWvd&$JaUNZ~! zlb+)$fpeNXx0G~0iq6thIfsWH4)3Q{6d(n$$g5c{2lcVDn zd$R&8ZG6M@{TGmGoim&DB_RY3!Zt_8y&R!0JdRB@ddJ^(>0|2O?7S$d(0e_C9^lJ? z3Kaqa1!8{sZt32C+HVHjSjIwVBmhNO1AG&m*C7InnbYr#H{lD0hT!k2*fGp6C$m z{qSSGA$|C^drS`kyh0}2WxcTEN~KEc14MUgoml2up#c2DdxS5IfUe}6AmA?I-&|%O z##zU!cwdM+4}=wao~}C3+eE*eWul+8Qrl_)OmLW`LRfLQZ9TIxZ&KrpRf~aSM767> zK{TfXDfI7H(?e{iXdByz<=b#w>bJ^vL18g^c0aR1$X4`&cXQ`eS{K>`Nik{8Ocnds z+msB@OmLO9!U<nYwIM#EEE z`WfHF0JV07n;0)VDSe)&c?Zc5N~TA<^gl+X7OPeowIgf6>I$y({+Yb*sjXYy_lax= z9osC}CL1H$zKReVe&;#JC~f9GVl>0-PHhzzCJZ7`ML!Zu{UmF_#up9y=k6AFK;JhY zV@anRykjI$*k|OominupYY^<$&v-QI&1e6wveYgRi%7rEvK%K+eiUFztzB`$7hsLd zb%6P_0i0)gpSzRKaHUBfDr6i5 zmXwU#tD(RpBk!sD|K)bL2tHs5B~1#XKv5%u3=!CB>GIp1KW5idAU`y6XV+AAUWbNI zwZRl&gTCfS)OZGH2Gz!)+D1ha%m%%-#tPzb{hT?>m#j4|l-WyS@l@H)#f#pXYAgV< z#Ni*qMNb{y$r@Sx-6dH;Nk)Mmalj1LRF$Qka*y*SXsLz+hX}GR?nw{Q3X-b4tz~+@ zAcs&fnX=Yaq1c_ke0l9KW*{!m87sr=5+x+l^5V{8wu;UnZ9_UMZ76wEdB>VirTV~7Ci4f8h4#1$3}Yu}Jtvj*$am#*zt!aVCmrS@d%uS|yR`~3*U24H zf4;1r6&t2xqe(g3+)Us-J(qx=8^#i-RUGAy!85D0l#(E~I}Pv@hZsr#I|V;GCnzY6 z=7(#*5vtbaov`9ZiUey=4ZKIl^1Pf4RZ4`F%*%ToYK2e+f_c7_NI`_i#p#Fflo{K!A?)LuPnSn{u7?3RH#F%Y_?UcdMYEa8VUB^r<^; zhl-l_|56zD3kI1eg>d;N6+z|~JFUAUxb62{jER4@NR%nZY>M`b$rWL{-MfbO7-&no zFKr`E&c!1iZ6^8GSX=@xx(L|3auUp7vvP7C78pvq9UJWbH&ZOui;GLA*e1INPNH zKY$E@=eI5h7s;FQPsE>yDfPOZ?oAeTn%1~vHro)H89)xnaedE$@DhCW|048mjF+!0 z4&q%3;?_GhSM`R3#Ec{SrRgCRTM21Eu}-Eyu1)-V0@r%MMlu8T$`TDw?y{2vt)V7tC5Y>~gOZoADyt|)Q$g<4BggJ;(|8PXIVLJVb}+rTVFr3 z+{@_{P{+57007#)-`mR;H1{J;3XFcy0%PiprC{l-u8jN&K?qB9*AE`t_wVJnIkN7P zE0>3ZpO9OL624GlIuEfJw9F+aVP%zS*`>hY+S2z3TYVF)g4U)%D2eyK9QvuDGkI;m%pya2~`RIX2*C9Jg z$WJce__#yNaT)79qjecpzCxJri*c}_Q=1#Y_}dE{@CL1pLsLQe8jQWuC%ApJfC3!Z zRw?w7#5Pc822#T!o5?B{X3UAK*vpMt&nz1=u%E~!EvI1gpsB1r{UuT652G|cFzu1n z$FcHFuUTRif!jXe%#dc^M#Id(h<(k#(4c#6^~M*>FC>9Y5!DY`>k^H>#?uTMUXQh4 zO&Po#{blS@HRz~Lp(u@`(|6f7&8@&x%~>@y?fD2>e8IoGI>kEJpZYg-ECT8K4#aO2 zN8NSssepPn@52j1*x>h@M3RORk{V%#`g*Yr$Hxc5H*bhetzm!xrVz!`I z3ZX2qEwRCLg7gk-uNYALU|K@?b174ma$wX$?wW?frfsLsf!yik1z z4+=nWNwZp^`SS+WWNU`@9qx_P*QFM1=<(X52p}+IuB+En>L!Q!74qmY^D>jX05XwJ z;oC1i)L~9tqk-{EGlPONt26{u96KuvNOq9X^HtH-yNgpF8SCZncLF zKV}B8%y_=#)ky4I$Y^D0S&HXR6)sxR$#%-e>GE@RhJFIoJ%9g!(huj-XkC$7Z)QUYR_3#}$;YKOMDD}^Qf-oDC zw#85imG&8Fk@kQ0#dKumZ7qPq`riRnMf3y;1x@MYWtgf%0~5Xg=mPCyb7&_i8)W+K z^qczd|14MMhXgxC4Sqk<(l1e8$t5ojV8BL-ZY0?-Y*9_1(z4EW07SrePi3f~-mzv# zRrfG|X35*p88a1a7lZyBoCeEvCNvuGbxZkWyxMu*so?3%Kfk=0&IFs>&g`LN_s`Q}b+cCDtPRT3H_?O#kNNe0kfBx&4< zYz+9TgxLXe&k&Xye7wEHhW1yRLj5kS>JG_2TiOib&vX=S&bn=G<_vBQr(TE#Wi3J% zy9w;ZvNlYak)_!^;wB7KV&NQRqhst&)U?a_Yml?cA~*>Qge zwHZ@nosor6;9E+G12`^=#QtXn)uF}c()#Sw70P5|BK0B@?1A7|CU5Zc_MtpR&pW?) zH+9X3Qa9|CuxgUtwa0Kwa~eM?3~(EoAl5qA?A1`*JgqB@M1iOP1|%Ubs_KYW0NPiO zc+b%NKxd&NFP`gK$76^S|iDZHRNMyCGmv(!^)yuyNa%MpZg?q|MC zZ;?)pdT}t%GdZ3HZ02lSa}r@0yI(PPhfs}a|&uuADanjnWXu|MP=0hM_5ObDuRDu7jX)Z)VB`tBNgo?jL#KG9{g^M{M4fK!2%C1K6{v9X{>Hg!IC zsR~9cI_%$VI68Ck(Se9@Y2y>?WVl7spvh&#as_HP1`n_(X|;DpaO&9ys}P~r2xVE3j*_2I*sVhTt3B8FfQYe zA36%U`#(K@x7@ySEZgfKZLks?U=LiL#a&WP6diWOUoi}} zz14Q2`L&O_m!Ha=lIVQnt=9I8xEhgza5px~Eme3pz&uN_(z&w>AucIBf3N?re2D}e z%j^-rXK!|w8J>3}m6gqpIYqF#HzF6maHJ!1un1cCifu{fpJacm0l&ygRRiLyG5kq#i>E1jCiXBS*+-RS=!^)lc zXh8Hrtf2OZL)NPDr3aRNc9m4E`I287f@xUfdYg;V@=j-;vSl;!&9^`ZXLlqXD1o71 zF?Kz4bwxhiUY*EbINYY1%zooNs6PrYYk3(j$}IPp8A;z}s+)_je6V^LF@Lt`Dey>{ z_5`&Z$cP1v_>8K7?>-0zGFa;;H%TxWA?uIop!zd<#0NL25y1Dwl zsnsfw&vfg|+&t6~4p?FI2NX2oa|do}24ZjTJE3i~MsW86RG4;uW5V^oZzV|3-Q&BG zZ7~bP!|04RVlx?y1K_f*73bi?t6g<4O29S)j!(+^wr1crFBhsV0U@YwWxE!%Dd$U2 zK@4zb3c4W$wjcgIybS|q#)r=>lmWqNO+L6fiT3^yK1+**lx6=C15Rv|^p)4a>*-~g zWNOCttF*(Ng-Psx7Ut67BIt>a9zwr`x8}lzS{9m}{)7=UFaL14DmGfW5Y(RY^!vI>tQB7P2(ed5iW=ANf-~xb8&ZOz$P5K7#=ZO%&$5D zTZcJBHN;Dma|d6{^?r|of(S&E@VwbaaUKC8+YUpvr{2H!QtimUp|YXS9bYQ65;o%T z1W@;F%j_oGBe!EC(e+B#In9e8gg+Y)u*v2`t-gSw9drlQH`&{Bmx856@wd#4ZiU!h0^)uW*0M1pgb&bbkam|xG z2t^9e5Du+KBFpL&`RsN!w<=?|Fg$a_d+wu9O5P}NAjNUD*in9#FK6R~gzUU?hq=07 zKJ9R1%61*5yvpDwAxBk~??xzZvXIZEAXF*mm$ihgI_CJQ1rBQ9=-HOj_lTMr1(~zy zJwqbNptz4z$;qi9rPua)p#liP>*^F#du_0aR=cTUYFZ&11?&0~@z7#oRNDhY&lVXs zeW34lyA5a2fj?>xNAnoFc^DdW)b(c90zF9VBJS#w@%Nf_FkWzzWgHfB;rt z+fx_p7tHM2k9j>q7DpyTAm9GNP@vjuYN4ybPKkB9KJR>darlBuq-l254TI0TnPF4? zK+BRSrH%bB|1XDDrhtRIzaj_<-lVJXNxaE8KQk;75>VBO8`Oj(22|7xa9RO3mWi{g z?L+(eNHui8!x(%WJSp*R=+5On+DMxSo0O7g-wj5M-MZJxcj+Fa*0~{HfvW5LpJP8eVcR zKj+H(Xp(Br&F@NwZID|j339()m4`aj2j10iL6X-pYF;$7EXS366PJ`AwM%FQ#gi&- zemeLhZYKa0WGgYG$sm?p6Q-F32;MR)Y3Z;RM?*OkGM8fSuau6}O??lI7BV_-Cn_CkQ4g|c zx-NRCBMV!@I)-@@HjE1>Z)YXdru@s&@3>82+ceYr@7f9B7hFUK^3yi9ioTlGLh~$- zmhKKi4QuG=x$r=^@LUcm_;s^xjAMum03e?6pouRyp4u1R?BS0ZiefILow%EFJ$gi> zb@s}M7ZO&7a)uqf5BBeA9@vQbo3!GJi!~ES!Tij`8u*e9l?ruXth*wb-M1v8zN%+) z2X;d41L+1r3&kC_5vyeJ_^QH}f`H7On2^qT?DMB!icnx5db5{x!U74Q)EJ@2e4?9|1bv0Fg74XM%i8)!T4Y5M?Q zubHFJCq2drPJ_t9dJ#!a&IGz40vp1Zlz={kOnJg0N{MDkmAS zZ%lufS<*WUESNh@@j;V{14a&!*|SMn*7w(~3o8LyeA7gLr*fu@@}=@3(mj4lpAyLV zY;l63^ydpo84!2rqw(1IMUR=@?dw;z`tH~=$v{qOd4qgfT*|)>i1L7>$yMIfcRQgm zTV~CDPUhfLd2L4N!j2EELNYgzx**>eox@pYD(-2nDSEiWTwJ^3v2E<0ppOz^muKqZM`9|#5h0bn#3H9K(ud|V?W zI67#Iw{Tq|Gwk$suFYTRuHe~KJOK&~MUpeLED7#oc`WOyyl#Ln^Tz!a%cFF{G6`^e zPvI((B4?HCDq#^~#tJu@suzk*Y7AR+-{t8!DJrs6A$oS)Vlumlk|M&x;J+^=AkO3;JEauqgdDQKbJAQy&8woaX9uP( z$hyNxYo1D38~C6!Dv7Y(j7J?O!0U>YUwf_;;^Eg zPk>E6P_!D*>^OIfMf;WE0cX^ICCQgW55PS=OGjavRJulEj#-!hB@7kelKptQFuGtvI1vS>q|nDcO+K% zc9ADtG;91lub#b0MhQ}~*4+%jU;-5hBsvIfv;tH;q!tlkc!KlZw=u+3t*~c8fKRBV z{Q!i;ofE$1 z(9(mX$r4UVgSQvl{^prFw3$z?9gv)uQL~`huUAbN5%g`iC&j0R1i}@3bG=o~;|6fn zy<$jjx62Z%x=(#1;(9RLel>l-AYtq<<4|X}bgsl>i&F|&UO1U>2axX>@&y&)c^O&g zEHBc;N}-n8msFi#dCH$=MR_N8x2SO*-z=aWPW_~z=w&ab^?LIBObxOV{Vds~IqH%@ zT^9{2zi&Vk5(dHmh{kf8)oMv11s4)ERaYeic+CtvId_*o4+xW|uqXi{ZL$BJyb`uxJ)DgtQmxs!TqoG5 z2|kn~=j!6vrx8CESg<8)z~G{SMU#jh(7dYcREnluvoy8Lfg`&@aY*}c+@k9*?_4R& zxU@^P+7=c&D>OfJ?KKCB^voTmP|4E>Pt&Bckg97mfr8i^3P5%Zx@^Vac#TUIJoNm) z*Vj-7D6X&O-%0gb$Qa`N6kaLi*Wz z2bxn{P4dVH?v`h0=gHq#o!B^-=3<9QXJXOlsN8`EGC^v)kEqw>TUs|!8bR?fKncUE zj>jHH&|fM$(S4?x1k&w~9^rUCjRKPE2sRU=%GUbCwIY$e>YX82fO6db;hx`&cEsq68$`_LZprfd{lz zs=$$#zZ!9B_)&<06bZ_Jm#Olz+x*C^CEl@3#=t7EOq%6!d%?6R+KkACZWmtZ;hZLnx%Ri3_*c)k_^$Zh4r>bqX-lD5 zC-)1Hw+XHH1o_{!`k{SC?ga;tRWX`OfvpJ!eXYA1!?U58WeqehdI+(x;T#N6E`4hv zQL56k;L4Wj2?f}yy`VnHM>h|gr#|Eze_P%JBM>wSj9Fbw7| z)O_JqC2HTjQ4dAk=z<~PJ6Ad>HTIVlT|uBc66uWQ~~w^WM;ejs++hSi@s8M5lf8 zuTe;6JYi3=iqG$)H9rA@TC3*R+yXX$gVT}EE2;pTNU~O`~N4R?7s#@5qPzQe&M(!8ib$#`uHrJ6lVAZ~gJ^j1nAv8B?+vG_l}bX+x1JZjYhQZsGczK4>O7rI13R_i{yl4nqmdmNjhrX z%hX>lEV;^=L;X{DUEDUI{J*a6gXGQnk!6owyK)i7-|WPcm?(`IGAZ0?teDwQtOs_1 zKvXWZqkfZY2@CK6eypv+1u;C59rW>@=cKjpm4YO82;K4%5sJx`6!IZ+mcNo1S?ouo zLI>r)r*(&ID$QScywsliex1;_T@nG2w2$*)hBo@GSbUc=ktF2?zz63xNS2ft{(2G8 z=L^L9Ro=48Fs@Lz?yvW`C$ToXNDSOQuXaVh+N6~80SUV)9%hrJ?PE*=jK*U(QE(^ z0nW;_Uf}tn8?P;Z{8WXuZ;@f;G2G1pS=5}`Y!pYGan9}1dIo%x0605lXtp=I(s<|c zNQ$Rod7btM))u*Jm{yV%t@EBZ-`}B$?z(=25;Nm(ct4o(QOtyUtg9lw$u) zRJJMr`aR0zKQ!!7Et)sV1@MCso&BhTALff`?p^ZGpJle|cvubwuNyapEmBJ~ld2x` zzb41Kp5~hCxCo>kFlpXUd%403Pml8@;ZsP)Fe{7p&fi=cJ@uzF0Y-DYxe*NmPsBL9 z_+YC@&_JvrtSP9*ITy8#Wv9f(>{_oPFvtoHL_#lXVz%OFXEuIQJ91SI7gOj%h}5;1 zzhI@E0YmM=xsJwZh>is33LhBCf^Y~Vc!rm8NBW0grx(uMih(HpA`LJ1|9bZ}M64Iz zu&IRfga}8(uw`>k0mrYVUJAE1>$J^?%#6!eQ8V z@Kpywu1t$iCCOZx+zs+f=vMPnc~p@_c4AmhW_TyuzI z_~`qn5gW_`)z*4;D-I&BYj17cYs=z_8u2h|oI!5`rm- zVgPQiBo!ty>_*{PTPPEeU9td6Exit<4U#G!EfS=VPJIE~u?*$6f{^=QXdb2YtT}n$ zt0r7AfsrAK=O!0se6|e^mq58OFCxi$CZ0tvQH>EYTB?wT--{>w-_DWk;8`Qpb`8L? zVKcdw#+0stMtG5wR8FeV#^jGmKrEDa+Y;TxfG$(Q<3Hy!6pz~OL$rE6S*-g5kr=P& z13Y~;Vjpc&g({^acUn6lhlB|g9tkttpSBvw5k@TO#$zA}I4J|NId6DSBcrKSQ=_#AaO?ad^hnPZ)+OkQEjOmnDat zlyD8%O~2^$2>gB2nysVsQjlDlPI-8sX@kicM{$CIMvxnk^hg^8JJ zKmrLRO`bsPq7ZY9r1!$J}Csn*9OUUYm#Hn^z@G z$e53-Mcu^1{wy40{teG|*Yt*P6L*TF`f^xptslOx>5s&s1K-Q(0yvHh&7qXa%3rW5 zlPrG%3u$Uy=^iCe_zDg;xe5m>MM9PkAvZn@!V{8)W(jU5-(Z(+oeI;|6rR>-{Ffqi zQs51x?24%eDpo&jYDm#;4X9*L@n+leXigz@!bV59Lb?wDuNZ{1_$~Acz`E?C!wtlg zxS}Zbl7&wX8TgdzXM=N}T|eaBI1az5lh8-RP>9rFm2Q@!G-rMCjiYYuEfHJpPsNw} z`joA^B{vedbIK-lsZSBv()X4E0A;eKna#U0gpx$Qut{Yj_ZYY)-p==Qo1y(A>`sR) z)L5X}jP63;StJ^7X-lJAx+KO3pM0yV zZN?>$>JX-^lBt`IJFxh+jJK&zt8uMS?2f0*F_EiZOEM?lGtzac&4_jvllcma$uyC$ zrpFyj&)>Ivet|p&{hqbR9t}ldV&c05FgL(;vIXysHqUpF|aT*=~FOc z(lFjoz|?3+K*%NNU@@r79+qhPVEp#5;5Pe{f`$DVpo5U+&>3ZA^i(hf@By_{Tb@+F zA?!0^dYY21aN>qRl6st!jXXVylsgKIlpTzux_2o+Wsb&Q5U_Pfp4BTF!p_abfMM{| zf}=KtCTNQ1T6cBtx_YYj_kyrri2ozSy+yNHiYUl@gzj@{Z>4ZN@CDx4{Q=-1kzr@U zq5%&{kV^0>;#CL?;DP{B8Oma6FP_Yqu7zIEdFR#Tksz9sLl<9_K_h!uQZNM+FrAev zv!TUZUDl?L*So0DULJ!@LT&nS!`<5C6%hT^1bT`&GpEu9aF-X#YJrQ6v}Rr(^ez=_ zQtJ7g?9;BU1s$5z_N`6yww6g@Nk?bJ6rM-z=K~=Sa1?6@oj2JL%mN-68DN9a`W9VB zz++kqv-7M^UUomfTG}yPu8G-B2+cu;0Ast+lPFFc?Bsp;V-~dnAgDu+l+HqIFPySS zFe`20YY9^yfvFx|d(?<;6f&;>2X*Hkh&s##WGlC+ZkghM&G-y}Cr9cy5{+&gBbH0F znSKlwejj7;4g(l3BIZZiT+!(bCzgn-D$nWK>+P_AQ7jq>@|#6!U-bzIWu9Tzy^sQ9 zDnE??GY#eQ|4ROoCa1p+n?DT8Qz~U`QMe~Q#LPkPBbrE;@Kqh!i+&^_!eg!AB2(W8 zRqkod{kH&RDME&@$US%W0(2=6P;5j8^4UqAO(bsU(~E)om*dVBy=RVD4jGwDfDEr6)5xIxnoqBBZ1fPSXQcg` zDQcNTDPNUEg_uV+@cVJ!&5gdMLP27GxEd47VVZsKjD6KjZhWyE}PxVAqLfiExPV~&D zzo*9X{U5Av4lM-n?uWnt004#t;u!ci_^en}R|p4O=*UQNlnsxZ@Ys-TQiF@gG$taR zksKNLw`D+5Wgwd?3KYz)0!CEY!lVJO3AC|;_?CK#CU&h)-X-gG>Pj>c4{^{GPH#R; zbgt=Snv{|`E;3G%ogww4RT(q=Z*iiMP!G!#Howja>?hqU4#L?KjtZe;WBQ{=ZSx>A zwSceZqvZ_n&&7S$MXE_&@dMR53*PJUXtzmt9*~9mFS8#*>aqE>^l%48uo#U(>Iw{S zaG~n_kD0iZ8}(hFfVP0J3aYkZH-WpiNj!j%v4JAtDb?}phAy>#&ANM*Yf;V zcCH8%yjoh?@`Uk2p{bK9XHz#;QQtCzARq5kCCTxG(!vuQlP4*=L&2@+;cT*$HiKo% zWRs&I0oLq_18Z1V+7o^HIAxN2jvvO&f|FV#o%?lwk~_g-_Yi^u8p3RvhVx|utqfk| z$O2HM*9dK?x%~{NPmHz?pkE1=&W+ZE z5+MBlC=IpO(7ck~JZAbA?mM}O2N)qn6`;?P&ZK2(W z{i6VwoRspIL}H1Quwy;{jru84(%O#$HWpaz@ zhtbIbFFknqKm=u`vtipJbv{WZb-^xo>XpZi<2`LudOPKE_#IW9bKBHD>>8C_!FDyR28v)Sw7QRceQ2 zw(=$53X4>V77(yAOMji1U}$#-6`TgeA*i-4t9`LqNbds&i%yq-TJPVTm~B=AErmd% zSiwnjsHZfr@Fc@Vp3%bdG-KG^jAwDtlANW$Ug)>=Ko~pBd+u5oliWqI|GzESbxe6n zj3w}MFy>VTX`TS z1s|X~1~4@^8MLkmY_gzKA2cpBwCqe`-f|DF#krsW0%+0jSnmK4VWWG4(c5pt4X?=+ z0$U^Xg=Il+B8o0^UeqRVsvw>M+Q=YF<17eRu#%0W*utVz6}FS4;b@o0Vywdk+wkzA zr=~p-b3L*W_=*xaY%^-Y%*MZx9Rya9cYO~WBk&p&8+A&)R zOUZSQitUGi%cvUxY~yggkZc^qB;Hx!wR+NRkdEAM+8pZhp8~AR!xMr&5Uhl=w0LUTX@A=J0^%0_An-a7`bXr|!? zQSA+8+$rPdeA~J{AIDQ6kdp4wLtANrrX*MiAX>RTkFx)jQ)@~X@YGiq zh**noM{J*s)0@-uX~Au^x$0IK_~>heFP^C7Ckc0CK38?Q4H;DK@KETv?CPtz-YhV$ z3zROSHzay(K3V1zq7vcZ`zrWMe zxB4LMLBmD6X|g3&XL|u84cqdPa*1PpVSl@jQMa$0npw&$<+ZNCi!h00ct<%;{s$ZJ zeGf9#xy{H1(2+e4%t*|EQ}1CCS+(CE)s5>CAP2M^AIS1B%aVB0+AZN3>yCZT02@}2 z*6-=CZub48*bh&n%EISkmitY}SdBZDqvw3BltbSgRu0mYHnS_tv;B z$z;s2*qf(KA5WB!5-xIcSSVRq#*U?rF`pu^($KdVKpjJX!LGRc6>y)xIHecj;c&dd zVQ2+WJ8HI;XR__v1!E}{>i`1+XginbagqijH*)j@D|0n1je6(C|q zjwDQ<|AycDgR+w8V=mlMX3`Xo?ySxAe?i5l0h@O#w~9#+7~tS^I?_kA{(= zqrGR>FMv|u;O~tyK|j>7;NEF z%yOk#LcTZA6y}mJ)rK0Gvc3$3k zU0C|_dqvP5-1eb;tR_r@>SjkFKB%d3%Ui33uEZ2tBv_4z>ss`i-@R=UvaA4eXDXE;rY*UoF`NL zcnKFi9LD(1+AERkt3x2K8~EQ;t`KQ9#S2T=!Z1a^Z#vj(e(!OzN9S}lStp`*wb55&JHYog-8?Sce?KxU7!=z05pqZ#V zEYJ_=24myeKNjLVlievF87iQvoT+)>5aIs?o_~|_R2xAAWJ_YY{v~yfYOC6=?qoIX zU)cxA7~)#f+U%PyGwnaTk6ktIVuh@>rJHSlRTvb+e$A_21^&tQAUr+~wE}$v+k9o-|>aG+n+214`!ZN`Z z%gA64X8viT?E`F^q%N4o@;Qvq6TSF_wow`JNun)iIF3Jgi*pIDqf|o;AnowQpNjDR%x8~;g7cN`UU13am7;N7bZ->_1@A0gXyX&63D=$hdzDgqcp75N|m-azs)b3g;6ibx5LYlTJc zviNhtTy72C(IC~ zC?|{&or8MP^GN^|TLe99Bd#@5oX>GpHjRcz)I(k0=X5UTA9Ag4zf!Bxr!w(0b6Yc%BOj7_kZx8;2SqX^MS}!8y z9V~pO<5oIfORDj+Gm&+r(mbX~-?}h>e$ynrNVbRNOPaRa%aL3`d2pEo+Pn*+#Sg`# zGACm_!oj@9tz$qK5kj7Up7e9%K7*AXz8}4lTjb>yMzJU15~fIHJd6fPe&YM`>NkdK zLykS6r{g@=EH-p+`xNSd7h%p_e^W;RD1|6NrG#O>;lWE0(&OURmmqr;VrkoO@j#1U zD87y)@IEP?so!OoB`P%GInvP;(fy~Dk%-Q?4slfM0=NJnB@TD+vG-BDoI$%y&{lWx zxB%Cl_6oRn)3rQ^HWcqSYaxns=J{6Vx!(tLELI%GPYj;3SZ=-I_ecMw`6{@> zs9M4gkm8oG;et(r0(0;tpV>`uv&%!+pJCj|Vn0wU^5eG!VVqA(n#i7sck=)$Cjce5 z%&$HJ)Nd4G6lzvGMDXza^R8-*EoGFD8KhKODkylHdxPEr6 z)7o5j`Rm6S8Va~2QF2ldWm)dN@${=)a0Yx=i|@I^fhocs`vRtUV`f~?12XxKiJCri z3aGT}m(V~D7@D>V2y zU8VOo*vBA}PG5mRnaNcp>eX1wzOHb7dm3kvGWzHlFA8;ki79{UWca>=lUTGQ*0~I? zemEQ*r9VX@nMQHgGWV_mgg=7B?cH`5Fa>$gj*aNgTYHRwQA-mkIu0!x&F}J8CO)J% z(3C89)@{SP7KUGh3vViK^9)s1yx6^o`RJ;QBf_$m_CTfS1cErh6F8b2y&OAh+E^w|gplAJ0)%UP-Ly2$PLQN-3;60)rK} z-{=X-#y=)vn{K~w1g2vg<)kcyH(}>5`&SlM7z*(adOr1_bSo$s+Y;SVoF0g94%d(# z&Uk)?;j6#$f)H!_wRE{T(o>n>%7OKjQc;s~)^zKZQOg^M_*%_x!Hi(b`aMB(A!v;D z*(TRgmNwvOH=itby$GnGGL8c5)gjA!9hmR!F}~51v#A44x{8lwH@RK-nr@)Z!?ZMr@S`W%Ap#waB!vA_XTETa|R@r3)m;s7kbL$W6#SG0RR(SU)lpy_;s`x}YwHW0) zhKxFG7a7>bi2AGo{3a{PZ(u!vWj_*vnk#=uRx+LxUo^ARyiuB8cb%ZH%QmhISrW;; zz?*g{j(faS z4i4_E4rTxTqdnmXJ<=_H#LZM*it|~04myL;-KTh;p~)9bygpYytz(eps_oz{RY2ji zB?>Q>1ns{_Uo{8DdZRsiRKYw>NOw_UoCHW>cC)`wa}%j~m+ImQ)|djT|9~E5S0$=i zt0}Q2)s!XzY>Xy2G$JRLs+tZn%vXfZ_j$)=INhU4c@?&$Xk+ajJAxuN4)=e*Xn@{f z*&JsEr(;bhF1N_j3#0kd$ literal 36318 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 bGkng~x^y8qx^<57ryWll2jfNQ4$J@mcLTAB diff --git a/src/data/local_data/sky/milkyway_pz.webp b/src/data/local_data/sky/milkyway_pz.webp index a541fec696832e2f660fd9779f6711e474be93bd..8fecc2d52fdd4b717f51f24e830c87d000ecf1cd 100644 GIT binary patch delta 38478 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

{|YKB>W$fM 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�m6DHzvY~VL4Qf;8n0n~L;HYvr93su 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 { + // The tables cover roughly 1975–2050; outside them the preload + // resolves with nothing, and TEME stays for this span. + if (!Cesium.Transforms.computeIcrfToFixedMatrix(time)) { + this._icrfMissing = interval; + return; + } this._rotationTime = undefined; + if (!this._destroyed) this._requestRender(); }, (error) => { // TEME is within a fraction of a degree; do not retry every frame. @@ -267,7 +286,6 @@ export class StarrySky { ) .finally(() => { this._icrfRequest = undefined; - if (!this._destroyed) this._requestRender(); }); } diff --git a/src/sky/starrySky.test.mjs b/src/sky/starrySky.test.mjs index 6575b1121..10d483914 100644 --- a/src/sky/starrySky.test.mjs +++ b/src/sky/starrySky.test.mjs @@ -87,3 +87,31 @@ test('the sky draws nothing when hidden, outside 3D, or in a pick pass', () => { assert.equal(sky.destroy(), undefined); assert.equal(sky.isDestroyed(), true); }); + +const frame = () => new Promise((resolve) => setImmediate(resolve)); + +for (const iso of ['1970-01-01T00:00:00Z', '2060-01-01T00:00:00Z']) { + test(`a clock outside the IAU 2006 tables (${iso}) settles on TEME instead of re-rendering every frame`, async () => { + const time = Cesium.JulianDate.fromIso8601(iso); + let renders = 0; + let preloads = 0; + const original = Cesium.Transforms.preloadIcrfFixed; + Cesium.Transforms.preloadIcrfFixed = (interval) => { + preloads += 1; + return original(interval); + }; + try { + const sky = new StarrySky({ requestRender: () => (renders += 1) }); + for (let i = 0; i < 20; i += 1) { + sky._updateRotation(time); // what update() does once per frame + await frame(); + } + assert.ok( + renders <= 1 && preloads <= 1, + `20 frames at a frozen clock -> ${preloads} preloads, ${renders} render requests (expected <= 1 each)`, + ); + } finally { + Cesium.Transforms.preloadIcrfFixed = original; + } + }); +} diff --git a/src/styles/anime.js b/src/styles/anime.js index deb79c355..26504830b 100644 --- a/src/styles/anime.js +++ b/src/styles/anime.js @@ -12,6 +12,7 @@ export const animeShader = { }, fragmentShader: /* glsl */ ` uniform sampler2D colorTexture; + uniform sampler2D depthTexture; uniform vec2 colorTextureDimensions; uniform float intensity; uniform float saturation; @@ -38,9 +39,12 @@ export const animeShader = { vec2 texel = 1.0 / colorTextureDimensions; vec4 color = texture(colorTexture, uv); - // Cel-shade: quantize luminance into bands + // Cel-shade: quantize luminance into bands. Not the far plane: four + // bands turn the faint Milky Way behind the globe into blotches. Its + // packed depth reads a few 1e-7 short of 1.0. float luma = dot(color.rgb, vec3(0.299, 0.587, 0.114)); - float bands = mix(256.0, 4.0, intensity); + bool space = czm_readDepth(depthTexture, uv) > 0.99999; + float bands = space ? 256.0 : mix(256.0, 4.0, intensity); float celLuma = floor(luma * bands + 0.5) / bands; float lumaScale = (luma > 0.001) ? celLuma / luma : 1.0; vec3 celColor = color.rgb * lumaScale; diff --git a/src/tooling/skyAssets.paintOut.test.mjs b/src/tooling/skyAssets.paintOut.test.mjs new file mode 100644 index 000000000..ddb57589a --- /dev/null +++ b/src/tooling/skyAssets.paintOut.test.mjs @@ -0,0 +1,64 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import sharp from 'sharp'; +import { + CUBE_FACES, + FACE_FILE_SUFFIX, + PLANETS, + cubeFaceDirection, + icrfToGalactic, +} from '../../scripts/build-milky-way.mjs'; +import { raDecToUnitVector } from '../sky/stars.js'; + +const SKY = new URL('../data/local_data/sky/', import.meta.url); +// Allowed excess of the painted disc over the surrounding sky, in 8-bit +// levels of the encoded face: the blur and dither move values by a few. +const TOLERANCE = 4; + +test('painted-out planets leave no disc brighter than the sky around them', async () => { + const centres = PLANETS.map((planet) => ({ + planet, + vector: raDecToUnitVector(planet.l, planet.b), + disc: [], + ring: [], + })); + for (const face of CUBE_FACES) { + const { data, info } = await sharp( + new URL(`milkyway_${FACE_FILE_SUFFIX[face]}.webp`, SKY).pathname, + ) + .raw() + .toBuffer({ resolveWithObject: true }); + const size = info.width; + for (let j = 0; j < size; j++) { + for (let i = 0; i < size; i++) { + const d = cubeFaceDirection(face, (i + 0.5) / size, (j + 0.5) / size); + const n = Math.hypot(...d); + const g = icrfToGalactic(d.map((x) => x / n)); + for (const centre of centres) { + const cos = + g[0] * centre.vector[0] + + g[1] * centre.vector[1] + + g[2] * centre.vector[2]; + const degrees = (Math.acos(Math.min(1, cos)) * 180) / Math.PI; + const k = (j * size + i) * info.channels; + const luma = (data[k] + data[k + 1] + data[k + 2]) / 3; + if (degrees <= centre.planet.radiusDeg - 0.5) centre.disc.push(luma); + else if ( + degrees >= centre.planet.radiusDeg + 1 && + degrees <= centre.planet.radiusDeg + 3.5 + ) + centre.ring.push(luma); + } + } + } + } + const median = (values) => values.sort((a, b) => a - b)[values.length >> 1]; + for (const { planet, disc, ring } of centres) { + const discMean = disc.reduce((s, v) => s + v, 0) / disc.length; + const ringMedian = median(ring); + assert.ok( + discMean <= ringMedian + TOLERANCE, + `l=${planet.l} b=${planet.b}: disc mean ${discMean.toFixed(1)} vs surrounding sky ${ringMedian.toFixed(1)}`, + ); + } +}); From adeee122091086a73bbd9c03be1ee86d840f4323 Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Mon, 19 Oct 2026 20:11:32 +0400 Subject: [PATCH 03/36] docs(changelog): add the starfield sky entry Co-Authored-By: Claude Opus 5.5 --- changelog.d/1243-starfield-sky.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog.d/1243-starfield-sky.md diff --git a/changelog.d/1243-starfield-sky.md b/changelog.d/1243-starfield-sky.md new file mode 100644 index 000000000..91096628f --- /dev/null +++ b/changelog.d/1243-starfield-sky.md @@ -0,0 +1,5 @@ +- Replace the blocky JPEG sky around the globe with the 9,096 stars of the + Yale Bright Star Catalogue, drawn as sharp points where each star really is + at the scene clock, over a soft Milky Way built from ESO/S. Brunier's + panorama (CC BY 4.0). The Sun and Moon stay; the new assets weigh 482 KB + (gekh, #1243). From e652e50d5c0582d7103267f6d57f5f573d67ff1a Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Mon, 19 Oct 2026 22:27:28 +0400 Subject: [PATCH 04/36] fix(anime): fade the Milky Way out instead of masking the sky by depth The far-plane mask in the anime shader read the post-process depth, which cannot tell the sky from far geometry: with a layer that clamps the near plane to 0.1 m (satellites) the whole Earth lost its cel bands, keyless terrain above the ellipsoid horizon did too, and the atmosphere, Sun and Moon stopped banding. Restore the anime shader from main and fade the Milky Way glow with the style instead: VisualEffects sets skyBox.milkyWayVisibility to 1 - anime intensity. scripts/qa-anime-space-mask.mjs checks all three cases headless and that the anime sky shows no bands. Co-Authored-By: Claude Opus 5.5 --- scripts/qa-anime-space-mask.mjs | 310 ++++++++++++++++++++++++++++++++ src/sky/starrySky.js | 4 +- src/sky/starrySky.test.mjs | 12 ++ src/styles/anime.js | 8 +- src/ui/visualEffects.js | 9 + src/ui/visualEffects.test.mjs | 21 +++ 6 files changed, 357 insertions(+), 7 deletions(-) create mode 100644 scripts/qa-anime-space-mask.mjs diff --git a/scripts/qa-anime-space-mask.mjs b/scripts/qa-anime-space-mask.mjs new file mode 100644 index 000000000..c73561e94 --- /dev/null +++ b/scripts/qa-anime-space-mask.mjs @@ -0,0 +1,310 @@ +// Repro for revmain-opus-1 (+ revmain-opus-6, + a guard for the fix). +// Anime exempts "space" pixels from cel-shading (src/styles/anime.js). This +// script compiles the CURRENT anime fragment shader from the checkout with its +// last line swapped for a debug output (R = pixel exempt from quantization, +// G = raw depth 1.0), runs it as an extra post-process stage in the running app +// (headless) and counts misclassified pixels. +// +// Cases: +// satellites whole globe from 20 000 km with the satellites layer on +// (near clamps to 0.1 m): Earth pixels must NOT be exempt. [revmain-opus-1] +// keyless keyless stack, Denver 1700 m looking west: terrain above the +// ellipsoid horizon must NOT be exempt. [revmain-opus-6] +// milkyway the real anime style, looking away from the Earth at the +// Galactic Centre: the sky must show no cel bands (the faint +// glow used to turn into blotches; the glow now fades out +// with the style, src/ui/visualEffects.js). +// +// Usage: node scripts/qa-anime-space-mask.mjs --url http://localhost:4333/ [--case satellites|keyless|milkyway|all] +// [--space-expr ""] (try a candidate fix without editing anime.js) +// Exit: 0 all pass, 1 a case failed, 2 a scenario was not reached. +import { readFileSync } from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const opt = (name, fallback) => { + const i = process.argv.indexOf(`--${name}`); + return i > 0 && process.argv[i + 1] ? process.argv[i + 1] : fallback; +}; +const ROOT = path.resolve(opt('repo', process.cwd())); +const URL_ = opt('url', 'http://localhost:4333/'); +const CASES = + opt('case', 'all') === 'all' + ? ['satellites', 'keyless', 'milkyway'] + : [opt('case')]; +const SPACE_EXPR = opt('space-expr'); +// Run from the repository root, or pass --repo. +const { default: puppeteer } = await import( + path.join(ROOT, 'node_modules/puppeteer/lib/puppeteer/puppeteer.js') +); + +let fs = readFileSync(path.join(ROOT, 'src/styles/anime.js'), 'utf8'); +fs = fs + .slice(fs.indexOf('/* glsl */ `') + 12, fs.lastIndexOf('`')) + .replace('uniform float intensity;', 'const float intensity = 1.0;') + .replace('uniform float saturation;', 'const float saturation = 1.0;') + .replace('uniform float edgeThick;', 'const float edgeThick = 0.5;'); +if (!/uniform\s+sampler2D\s+depthTexture/.test(fs)) + fs = fs.replace( + 'uniform sampler2D colorTexture;', + 'uniform sampler2D colorTexture;\n uniform sampler2D depthTexture;', + ); +if (SPACE_EXPR) { + const m = fs.match(/bool space = ([^;]+);/); + if (!m) throw new Error('--space-expr: no `bool space = …;` in anime.js'); + fs = fs.replace(m[0], `bool space = ${SPACE_EXPR};`); +} +if (!/float bands\b/.test(fs)) + throw new Error( + 'anime.js has no `bands` variable: adapt the debug line of this script', + ); +fs = fs + .replace( + /out_FragColor = [^;]+;\s*}\s*$/, + `out_FragColor = mode < 0.5 ? texture(colorTexture, uv) + : vec4(bands > 255.0 ? 1.0 : 0.0, texture(depthTexture, uv).r >= 1.0 ? 1.0 : 0.0, 0.0, 1.0); + }`, + ) + .replace('void main()', 'uniform float mode;\n void main()'); + +const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); +const browser = await puppeteer.launch({ + headless: 'new', + args: ['--no-sandbox', '--ignore-gpu-blocklist'], +}); +let failed = false, + unreached = false; +try { + const page = await browser.newPage(); + page.on('pageerror', (e) => console.log('PAGEERR', String(e).slice(0, 300))); + await page.setViewport({ width: 1000, height: 700 }); + await page.evaluateOnNewDocument(() => + localStorage.setItem('gev:first-run-mission:v1', 'suppressed'), + ); + await page.goto(URL_, { waitUntil: 'domcontentloaded' }); + await page.waitForFunction(() => window.__godsEyeView?.viewer?.scene, { + timeout: 120000, + }); + await sleep(12000); + await page.evaluate(async (fs) => { + const entry = performance + .getEntriesByType('resource') + .map((e) => e.name) + .find((n) => /\.vite\/deps\/cesium\.js/.test(n)); + if (!entry) + throw new Error( + 'run against the Vite dev server (needs .vite/deps/cesium.js)', + ); + const C = (window.__C = await import(entry)); + window.__dbg = window.__godsEyeView.viewer.scene.postProcessStages.add( + new C.PostProcessStage({ fragmentShader: fs, uniforms: { mode: 1 } }), + ); + }, fs); + const setView = (v) => + page.evaluate((v) => { + const C = window.__C, + s = window.__godsEyeView.viewer.scene; + s.camera.cancelFlight(); + s.camera.setView({ + destination: C.Cartesian3.fromDegrees(v.lon, v.lat, v.h), + orientation: { + heading: C.Math.toRadians(v.heading ?? 0), + pitch: C.Math.toRadians(v.pitch), + roll: 0, + }, + }); + s.requestRender(); + }, v); + // returns per-pixel {exempt, raw1, ground?} counts + const measure = (truth) => + page.evaluate((truth) => { + const s = window.__godsEyeView.viewer.scene; + const read = () => { + s.requestRender(); + s.render(); + const gl = s.context._gl, + w = gl.drawingBufferWidth, + h = gl.drawingBufferHeight, + px = new Uint8Array(w * h * 4); + gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, px); + return px; + }; + window.__dbg.uniforms.mode = 1; + const px = read(); + let g; + if (truth) { + const keep = [s.skyAtmosphere, s.skyBox, s.sun, s.moon].map( + (o) => o && o.show, + ); + [s.skyAtmosphere, s.skyBox, s.sun, s.moon].forEach( + (o) => o && (o.show = false), + ); + window.__dbg.uniforms.mode = 0; + g = read(); + [s.skyAtmosphere, s.skyBox, s.sun, s.moon].forEach( + (o, i) => o && (o.show = keep[i]), + ); + window.__dbg.uniforms.mode = 1; + } + const r = { + total: px.length / 4, + near: s._view.frustumCommandsList[0]?.near ?? null, + frusta: s._view.frustumCommandsList.length, + geom: 0, + geomExempt: 0, + raw1: 0, + raw1Exempt: 0, + ground: 0, + groundRaw1: 0, + groundExempt: 0, + clearGlobeDepth: s._environmentState.clearGlobeDepth, + }; + for (let i = 0; i < px.length; i += 4) { + const ex = px[i] > 127, + raw1 = px[i + 1] > 127; + if (raw1) { + r.raw1++; + if (ex) r.raw1Exempt++; + } else { + r.geom++; + if (ex) r.geomExempt++; + } + if (g && g[i] + g[i + 1] + g[i + 2] > 6) { + r.ground++; + if (raw1) r.groundRaw1++; + if (ex) r.groundExempt++; + } + } + return r; + }, truth); + const verdict = (name, ok, reached, msg, r) => { + const tag = !reached ? 'UNREACHED' : ok ? 'PASS' : 'FAIL'; + if (!reached) unreached = true; + else if (!ok) failed = true; + console.log(`${tag} ${name}: ${msg}\n ${JSON.stringify(r)}`); + }; + + for (const c of CASES) { + if (c === 'satellites') { + await page.evaluate(() => + window.__godsEyeView.dataManager.setEnabled('satellites', true, { + origin: 'user', + }), + ); + await sleep(20000); + await setView({ lon: 10, lat: 20, h: 2.0e7, pitch: -90 }); + await sleep(5000); + const r = await measure(false); + verdict( + 'satellites', + r.geomExempt <= 0.01 * r.geom, + r.frusta > 0 && r.near !== null && r.near < 1 && r.geom > 50000, + `${r.geomExempt} of ${r.geom} Earth pixels exempt from cel-shading (near ${r.near} m)`, + r, + ); + await page.evaluate(() => + window.__godsEyeView.dataManager.setEnabled('satellites', false, { + origin: 'user', + }), + ); + await sleep(5000); + } else if (c === 'keyless') { + await setView({ + lon: -104.99, + lat: 39.74, + h: 1700, + heading: 270, + pitch: 0, + }); + await sleep(25000); + const r = await measure(true); + verdict( + 'keyless', + r.groundExempt <= 0.01 * r.ground, + r.clearGlobeDepth && r.groundRaw1 > 1000, + `${r.groundExempt} of ${r.ground} terrain pixels exempt (${r.groundRaw1} terrain pixels have raw depth 1.0)`, + r, + ); + } else if (c === 'milkyway') { + const r = await page.evaluate(async () => { + const C = window.__C, + g = window.__godsEyeView, + v = g.viewer, + s = v.scene; + window.__dbg.enabled = false; + g.styleManager.setStyle('anime', { userInitiated: true }); + const t = v.clock.currentTime; + await C.Transforms.preloadIcrfFixed( + new C.TimeInterval({ + start: C.JulianDate.addDays(t, -1, new C.JulianDate()), + stop: C.JulianDate.addDays(t, 1, new C.JulianDate()), + }), + ); + const m = C.Transforms.computeIcrfToFixedMatrix(t); + const ra = C.Math.toRadians(266.4), + dec = C.Math.toRadians(-29); + const look = C.Matrix3.multiplyByVector( + m, + new C.Cartesian3( + Math.cos(dec) * Math.cos(ra), + Math.cos(dec) * Math.sin(ra), + Math.sin(dec), + ), + new C.Cartesian3(), + ); + const north = C.Matrix3.multiplyByVector( + m, + C.Cartesian3.UNIT_Z, + new C.Cartesian3(), + ); + const right = C.Cartesian3.normalize( + C.Cartesian3.cross(look, north, new C.Cartesian3()), + new C.Cartesian3(), + ); + s.camera.cancelFlight(); + s.camera.setView({ + destination: C.Cartesian3.multiplyByScalar( + look, + 3e7, + new C.Cartesian3(), + ), + orientation: { + direction: look, + up: C.Cartesian3.cross(right, look, new C.Cartesian3()), + }, + }); + await new Promise((res) => setTimeout(res, 2500)); + s.requestRender(); + s.render(); + const gl = s.context._gl, + w = gl.drawingBufferWidth, + h = gl.drawingBufferHeight, + px = new Uint8Array(w * h * 4); + gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, px); + let banded = 0; + for (let i = 0; i < px.length; i += 4) + if (0.299 * px[i] + 0.587 * px[i + 1] + 0.114 * px[i + 2] >= 51) + banded++; + const out = { + total: px.length / 4, + banded, + visibility: s.skyBox.milkyWayVisibility, + anime: g.styleManager.currentStyle ?? null, + }; + g.styleManager.setStyle('normal', { userInitiated: true }); + window.__dbg.enabled = true; + return out; + }); + verdict( + 'milkyway', + r.banded <= 0.005 * r.total, + r.total > 0, + `${r.banded} of ${r.total} sky pixels at or above the first cel band (luma >= 0.2)`, + r, + ); + } + } +} finally { + await browser.close(); +} +process.exitCode = failed ? 1 : unreached ? 2 : 0; diff --git a/src/sky/starrySky.js b/src/sky/starrySky.js index 7cdc3b5d7..d77892d6a 100644 --- a/src/sky/starrySky.js +++ b/src/sky/starrySky.js @@ -167,6 +167,8 @@ export class StarrySky { /** Matches `SkyBox#show`. */ this.show = true; this.milkyWayIntensity = MILKY_WAY_INTENSITY; + /** 0..1 multiplier a style sets to hide the glow (see visualEffects.js). */ + this.milkyWayVisibility = 1; this.starIntensity = STAR_INTENSITY; this._requestRender = requestRender; this._rotation = Cesium.Matrix3.clone(Cesium.Matrix3.IDENTITY); @@ -190,7 +192,7 @@ export class StarrySky { this._milkyWayUniforms = { ...uniforms, u_milkyWay: () => this._cubeMap, - u_intensity: () => this.milkyWayIntensity, + u_intensity: () => this.milkyWayIntensity * this.milkyWayVisibility, }; this._starUniforms = { ...uniforms, diff --git a/src/sky/starrySky.test.mjs b/src/sky/starrySky.test.mjs index 10d483914..1d9d2f8a0 100644 --- a/src/sky/starrySky.test.mjs +++ b/src/sky/starrySky.test.mjs @@ -2,6 +2,7 @@ import test from 'node:test'; import assert from 'node:assert/strict'; import * as Cesium from 'cesium'; import { + MILKY_WAY_INTENSITY, STARRY_SKY_CESIUM_VERSION, SKY_ROTATION_EPSILON_SECONDS, StarrySky, @@ -9,6 +10,9 @@ import { isSkyRotationCurrent, } from './starrySky.js'; +const close = (actual, expected, epsilon = 1e-9) => + assert.ok(Math.abs(actual - expected) <= epsilon, `${actual} vs ${expected}`); + test('the sky-box adapter was validated against this engine version', () => { assert.equal( Cesium.VERSION, @@ -115,3 +119,11 @@ for (const iso of ['1970-01-01T00:00:00Z', '2060-01-01T00:00:00Z']) { } }); } + +test('the Milky Way glow scales with its visibility, for styles that hide it', () => { + const sky = new StarrySky({ requestRender: () => {} }); + close(sky._milkyWayUniforms.u_intensity(), MILKY_WAY_INTENSITY); + sky.milkyWayVisibility = 0; + assert.equal(sky._milkyWayUniforms.u_intensity(), 0); + sky.destroy(); +}); diff --git a/src/styles/anime.js b/src/styles/anime.js index 26504830b..deb79c355 100644 --- a/src/styles/anime.js +++ b/src/styles/anime.js @@ -12,7 +12,6 @@ export const animeShader = { }, fragmentShader: /* glsl */ ` uniform sampler2D colorTexture; - uniform sampler2D depthTexture; uniform vec2 colorTextureDimensions; uniform float intensity; uniform float saturation; @@ -39,12 +38,9 @@ export const animeShader = { vec2 texel = 1.0 / colorTextureDimensions; vec4 color = texture(colorTexture, uv); - // Cel-shade: quantize luminance into bands. Not the far plane: four - // bands turn the faint Milky Way behind the globe into blotches. Its - // packed depth reads a few 1e-7 short of 1.0. + // Cel-shade: quantize luminance into bands float luma = dot(color.rgb, vec3(0.299, 0.587, 0.114)); - bool space = czm_readDepth(depthTexture, uv) > 0.99999; - float bands = space ? 256.0 : mix(256.0, 4.0, intensity); + float bands = mix(256.0, 4.0, intensity); float celLuma = floor(luma * bands + 0.5) / bands; float lumaScale = (luma > 0.001) ? celLuma / luma : 1.0; vec3 celColor = color.rgb * lumaScale; diff --git a/src/ui/visualEffects.js b/src/ui/visualEffects.js index 6533bb748..da21b781c 100644 --- a/src/ui/visualEffects.js +++ b/src/ui/visualEffects.js @@ -112,6 +112,15 @@ export class VisualEffects { if (this.stopped || !stage) return; stage.uniforms.intensity = value; stage.enabled = value > 0.001; + // Anime's four luminance bands turn the faint Milky Way into blotches, and + // a post-process cannot tell the sky from far geometry reliably (near + // plane clamps, keyless terrain above the ellipsoid horizon): fade the + // glow out with the style instead. Stars survive as banded points. + if (stage === this.stages.anime) { + const sky = this.viewer.scene?.skyBox; + if (sky && 'milkyWayVisibility' in sky) + sky.milkyWayVisibility = 1 - value; + } if (stage.enabled && stage.uniforms.time !== undefined) this.startAnimationLoop(); this.requestRender('style-stage'); diff --git a/src/ui/visualEffects.test.mjs b/src/ui/visualEffects.test.mjs index 76615d0e8..62f9771d3 100644 --- a/src/ui/visualEffects.test.mjs +++ b/src/ui/visualEffects.test.mjs @@ -158,6 +158,27 @@ test('direct Cockpit intensity writes are reconciled before rendering', () => { f.effects.destroy(); }); +test('the anime stage fades the Milky Way out with its own intensity', () => { + const f = fixture(); + const sky = { milkyWayVisibility: 1 }; + f.effects.viewer.scene.skyBox = sky; + f.effects.initStyles(); + f.effects.setStageIntensity(f.effects.stages.thermal, 1); + assert.equal(sky.milkyWayVisibility, 1, 'other styles keep the glow'); + f.effects.setStageIntensity(f.effects.stages.anime, 0.25); + assert.equal(sky.milkyWayVisibility, 0.75); + f.effects.setStageIntensity(f.effects.stages.anime, 1); + assert.equal(sky.milkyWayVisibility, 0); + f.effects.setStageIntensity(f.effects.stages.anime, 0); + assert.equal(sky.milkyWayVisibility, 1); + // A sky box without the knob (Cesium's own) is left alone. + const plain = {}; + f.effects.viewer.scene.skyBox = plain; + f.effects.setStageIntensity(f.effects.stages.anime, 1); + assert.deepEqual(plain, {}); + f.effects.destroy(); +}); + test('bloom retains its dead zone, normalized intensity and independent toggle', () => { const f = fixture(); f.effects.initPostProcess(); From 8deb47560e05fb964f02e3f7ec14e347279b8ed1 Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Tue, 20 Oct 2026 00:42:22 +0400 Subject: [PATCH 05/36] fix(sky): restore the Milky Way on teardown, tidy the anime QA script - VisualEffects.destroy() puts skyBox.milkyWayVisibility back to 1, as it already restores the borrowed bloom stage, so a surviving viewer does not keep a faded sky. - Rename scripts/qa-anime-space-mask.mjs to qa-anime-sky.mjs: rewrite the header for the current approach, drop --space-expr and --repo, import puppeteer as a package, reject unknown cases and count the milkyway case as reached only while the anime stage is on. - Put both sky QA scripts under format:check. Co-Authored-By: Claude Opus 5.5 --- scripts/format-scope.json | 4 +- ...-anime-space-mask.mjs => qa-anime-sky.mjs} | 88 +++++++++++-------- src/ui/visualEffects.js | 10 ++- src/ui/visualEffects.test.mjs | 18 ++++ 4 files changed, 78 insertions(+), 42 deletions(-) rename scripts/{qa-anime-space-mask.mjs => qa-anime-sky.mjs} (80%) diff --git a/scripts/format-scope.json b/scripts/format-scope.json index 2c5009537..203fa7ed5 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -1076,5 +1076,7 @@ "src/sky/stars.test.mjs", "src/sky/starrySky.test.mjs", "src/tooling/skyAssets.test.mjs", - "src/tooling/skyAssets.paintOut.test.mjs" + "src/tooling/skyAssets.paintOut.test.mjs", + "scripts/qa-sky-sun-moon.mjs", + "scripts/qa-anime-sky.mjs" ] diff --git a/scripts/qa-anime-space-mask.mjs b/scripts/qa-anime-sky.mjs similarity index 80% rename from scripts/qa-anime-space-mask.mjs rename to scripts/qa-anime-sky.mjs index c73561e94..ae7ee69dc 100644 --- a/scripts/qa-anime-space-mask.mjs +++ b/scripts/qa-anime-sky.mjs @@ -1,44 +1,51 @@ -// Repro for revmain-opus-1 (+ revmain-opus-6, + a guard for the fix). -// Anime exempts "space" pixels from cel-shading (src/styles/anime.js). This -// script compiles the CURRENT anime fragment shader from the checkout with its -// last line swapped for a debug output (R = pixel exempt from quantization, -// G = raw depth 1.0), runs it as an extra post-process stage in the running app -// (headless) and counts misclassified pixels. -// -// Cases: -// satellites whole globe from 20 000 km with the satellites layer on -// (near clamps to 0.1 m): Earth pixels must NOT be exempt. [revmain-opus-1] -// keyless keyless stack, Denver 1700 m looking west: terrain above the -// ellipsoid horizon must NOT be exempt. [revmain-opus-6] -// milkyway the real anime style, looking away from the Earth at the -// Galactic Centre: the sky must show no cel bands (the faint -// glow used to turn into blotches; the glow now fades out -// with the style, src/ui/visualEffects.js). -// -// Usage: node scripts/qa-anime-space-mask.mjs --url http://localhost:4333/ [--case satellites|keyless|milkyway|all] -// [--space-expr ""] (try a candidate fix without editing anime.js) -// Exit: 0 all pass, 1 a case failed, 2 a scenario was not reached. +#!/usr/bin/env node +/** + * qa-anime-sky — the anime style must cel-shade the Earth, and leave the sky + * without bands. + * + * Earlier the anime shader exempted the far plane, judged from the + * post-process depth, from its luminance bands. That depth cannot tell the + * sky from far geometry, so the Earth lost its bands. The shader now matches + * main, and src/ui/visualEffects.js fades the Milky Way out with the style. + * Each case runs headless against a Vite dev server: + * + * satellites whole globe from 20 000 km with the satellites layer on + * (near clamps to 0.1 m): no Earth pixel may skip the bands. + * keyless keyless stack, Denver 1700 m looking west: no terrain pixel + * above the ellipsoid horizon may skip the bands. + * milkyway the real anime style, looking away from the Earth at the + * Galactic Centre: at most 0.5 % of the sky (the stars) may + * reach the first band. + * + * The first two cases compile the checkout's anime shader with a debug + * output (R = pixel skipped the bands, G = raw depth 1.0) as an extra stage. + * + * Usage: node scripts/qa-anime-sky.mjs [--url http://localhost:4333/] [--case satellites|keyless|milkyway|all] + * Exit: 0 all pass, 1 a case failed, 2 a scenario was not reached or the case is unknown. + */ +import puppeteer from 'puppeteer'; import { readFileSync } from 'node:fs'; -import path from 'node:path'; import { fileURLToPath } from 'node:url'; const opt = (name, fallback) => { const i = process.argv.indexOf(`--${name}`); return i > 0 && process.argv[i + 1] ? process.argv[i + 1] : fallback; }; -const ROOT = path.resolve(opt('repo', process.cwd())); const URL_ = opt('url', 'http://localhost:4333/'); -const CASES = - opt('case', 'all') === 'all' - ? ['satellites', 'keyless', 'milkyway'] - : [opt('case')]; -const SPACE_EXPR = opt('space-expr'); -// Run from the repository root, or pass --repo. -const { default: puppeteer } = await import( - path.join(ROOT, 'node_modules/puppeteer/lib/puppeteer/puppeteer.js') -); +const ALL_CASES = ['satellites', 'keyless', 'milkyway']; +const requested = opt('case', 'all'); +const CASES = requested === 'all' ? ALL_CASES : [requested]; +if (!CASES.every((c) => ALL_CASES.includes(c))) { + console.error( + `unknown case ${requested}; expected ${ALL_CASES.join('|')}|all`, + ); + process.exit(2); +} -let fs = readFileSync(path.join(ROOT, 'src/styles/anime.js'), 'utf8'); +let fs = readFileSync( + fileURLToPath(new URL('../src/styles/anime.js', import.meta.url)), + 'utf8', +); fs = fs .slice(fs.indexOf('/* glsl */ `') + 12, fs.lastIndexOf('`')) .replace('uniform float intensity;', 'const float intensity = 1.0;') @@ -49,11 +56,6 @@ if (!/uniform\s+sampler2D\s+depthTexture/.test(fs)) 'uniform sampler2D colorTexture;', 'uniform sampler2D colorTexture;\n uniform sampler2D depthTexture;', ); -if (SPACE_EXPR) { - const m = fs.match(/bool space = ([^;]+);/); - if (!m) throw new Error('--space-expr: no `bool space = …;` in anime.js'); - fs = fs.replace(m[0], `bool space = ${SPACE_EXPR};`); -} if (!/float bands\b/.test(fs)) throw new Error( 'anime.js has no `bands` variable: adapt the debug line of this script', @@ -289,7 +291,15 @@ try { total: px.length / 4, banded, visibility: s.skyBox.milkyWayVisibility, - anime: g.styleManager.currentStyle ?? null, + animeOn: (() => { + const stages = s.postProcessStages; + for (let i = 0; i < stages.length; i++) { + const stage = stages.get(i); + if (stage.name === 'godsEyeView_anime') + return stage.enabled && stage.uniforms.intensity > 0.99; + } + return false; + })(), }; g.styleManager.setStyle('normal', { userInitiated: true }); window.__dbg.enabled = true; @@ -298,7 +308,7 @@ try { verdict( 'milkyway', r.banded <= 0.005 * r.total, - r.total > 0, + r.total > 0 && r.animeOn, `${r.banded} of ${r.total} sky pixels at or above the first cel band (luma >= 0.2)`, r, ); diff --git a/src/ui/visualEffects.js b/src/ui/visualEffects.js index da21b781c..b4a3cec0b 100644 --- a/src/ui/visualEffects.js +++ b/src/ui/visualEffects.js @@ -115,7 +115,7 @@ export class VisualEffects { // Anime's four luminance bands turn the faint Milky Way into blotches, and // a post-process cannot tell the sky from far geometry reliably (near // plane clamps, keyless terrain above the ellipsoid horizon): fade the - // glow out with the style instead. Stars survive as banded points. + // glow out with the style instead. Bright stars survive as banded points. if (stage === this.stages.anime) { const sky = this.viewer.scene?.skyBox; if (sky && 'milkyWayVisibility' in sky) @@ -228,7 +228,7 @@ export class VisualEffects { this.transitions.clear(); } - /** Remove owned stages and restore the borrowed bloom stage after callers release it. */ + /** Remove owned stages and restore the borrowed bloom stage and sky after callers release them. */ destroy() { if (this.destroyed) return; this.stop(); @@ -240,5 +240,11 @@ export class VisualEffects { Object.assign(this.bloomStage.uniforms, this.previousBloom.uniforms); this.bloomStage.enabled = this.previousBloom.enabled; } + // Anime may have faded the Milky Way out; a surviving viewer gets it back. + const sky = this.viewer.scene.skyBox; + if (sky && 'milkyWayVisibility' in sky) { + sky.milkyWayVisibility = 1; + this.requestRender('style-stage'); + } } } diff --git a/src/ui/visualEffects.test.mjs b/src/ui/visualEffects.test.mjs index 62f9771d3..21f744985 100644 --- a/src/ui/visualEffects.test.mjs +++ b/src/ui/visualEffects.test.mjs @@ -179,6 +179,24 @@ test('the anime stage fades the Milky Way out with its own intensity', () => { f.effects.destroy(); }); +test('destroying the effects gives a surviving viewer its Milky Way back', () => { + const f = fixture(); + const sky = { milkyWayVisibility: 1 }; + f.effects.viewer.scene.skyBox = sky; + f.effects.initStyles(); + f.effects.startTransition('anime', 0, 1); + f.tick(250); + f.effects.stop(); + const frozen = sky.milkyWayVisibility; + assert.ok( + frozen > 0 && frozen < 1, + 'stop keeps the stages, and the fade, as they are', + ); + f.effects.destroy(); + assert.equal(sky.milkyWayVisibility, 1); + assert.equal(f.requests.at(-1), 'style-stage'); +}); + test('bloom retains its dead zone, normalized intensity and independent toggle', () => { const f = fixture(); f.effects.initPostProcess(); From e8fd1f2d0198bc69164c55b4ad786c7d1ec0dc4c Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Tue, 20 Oct 2026 00:42:23 +0400 Subject: [PATCH 06/36] fix(sky): ease the Milky Way black level in at the median sky Away from the galactic plane the ESO panorama keeps a mottled glow of unresolved stars and dust. With the black level at the darkest quarter of the sky and a hard cut, it showed as grey clouds with black holes around the globe. The black level now sits at the median sky and eases in with a soft knee on luminance, keeping each pixel's hue: high galactic latitudes are black, the band keeps its glow. Faces shrink from 247 to 85 KB. The changelog fragment also notes the anime fade and the new asset weight. Co-Authored-By: Claude Opus 5.5 --- changelog.d/1243-starfield-sky.md | 8 ++--- scripts/build-milky-way.mjs | 37 +++++++++++++++-------- src/data/local_data/sky/README.md | 5 +-- src/data/local_data/sky/milkyway_nx.webp | Bin 40384 -> 9118 bytes src/data/local_data/sky/milkyway_ny.webp | Bin 42904 -> 23212 bytes src/data/local_data/sky/milkyway_nz.webp | Bin 45580 -> 19634 bytes src/data/local_data/sky/milkyway_px.webp | Bin 36230 -> 5478 bytes src/data/local_data/sky/milkyway_py.webp | Bin 41794 -> 15028 bytes src/data/local_data/sky/milkyway_pz.webp | Bin 39850 -> 12354 bytes src/tooling/skyAssets.test.mjs | 16 ++++++++++ 10 files changed, 48 insertions(+), 18 deletions(-) diff --git a/changelog.d/1243-starfield-sky.md b/changelog.d/1243-starfield-sky.md index 91096628f..7d4557672 100644 --- a/changelog.d/1243-starfield-sky.md +++ b/changelog.d/1243-starfield-sky.md @@ -1,5 +1,5 @@ - Replace the blocky JPEG sky around the globe with the 9,096 stars of the - Yale Bright Star Catalogue, drawn as sharp points where each star really is - at the scene clock, over a soft Milky Way built from ESO/S. Brunier's - panorama (CC BY 4.0). The Sun and Moon stay; the new assets weigh 482 KB - (gekh, #1243). + Yale Bright Star Catalogue, drawn as sharp points at their catalogue + positions for the scene clock, over a soft Milky Way built from ESO/S. + Brunier's panorama (CC BY 4.0). The Sun and Moon stay, the anime style fades + the Milky Way out, and the new assets weigh 319 kB (gekh, #1243). diff --git a/scripts/build-milky-way.mjs b/scripts/build-milky-way.mjs index 19b2ea1e9..5e5d3d253 100644 --- a/scripts/build-milky-way.mjs +++ b/scripts/build-milky-way.mjs @@ -29,9 +29,9 @@ * axes as the cube axes — +X to the March equinox, +Z to the north * celestial pole — rotating each direction into galactic coordinates * with the IAU J2000 matrix. - * 6. Map the darkest 25 % of the sky to black and the brightest 0.01 % to - * white, encode with gamma 1/2.2 and ±0.5 LSB dither against banding; - * WebP. + * 6. Map the median sky to black, easing in with a soft knee, and the + * brightest 0.01 % to white (on luminance, keeping each pixel's hue), + * encode with gamma 1/2.2 and ±0.5 LSB dither against banding; WebP. * * Usage: * node scripts/build-milky-way.mjs @@ -46,10 +46,12 @@ export const BLUR_DEG = 0.4; const WORK_WIDTH = 4096; const OPEN_RADIUS = 3; const WEBP_QUALITY = 96; -// The darkest quarter of the sky is the black level: away from the galactic -// plane the panorama carries a mottled glow of unresolved stars that would -// read as grey fog around the globe. -const BLACK_PERCENTILE = 0.25; +// The median sky is the black level: away from the galactic plane the +// panorama carries a mottled glow of unresolved stars and dust that reads as +// grey blotches around the globe. A hard cut there draws edges of its own, so +// the level eases in over SOFT_KNEE (a fraction of the black-to-white range). +const BLACK_PERCENTILE = 0.5; +const SOFT_KNEE = 0.03; const WHITE_PERCENTILE = 0.9999; const OUT_DIR = path.join( path.dirname(fileURLToPath(import.meta.url)), @@ -289,6 +291,15 @@ function dither(index, channel) { return (h >>> 0) / 4294967296 - 0.5; } +/** + * Black level with a soft knee: 0 at and below the level, then a quadratic + * ease that joins the straight line, so faint sky fades out instead of + * ending in a contour. + */ +export function softBlack(x, knee = SOFT_KNEE) { + return x <= 0 ? 0 : (x * x) / (x + knee); +} + /** Value at `fraction` of the sorted luminance. */ function luminancePercentile(planes, fraction) { const [r, g, b] = planes; @@ -346,12 +357,14 @@ async function main() { ); const [u, v] = directionToPlateCarree(...icrfToGalactic(direction)); const index = j * FACE_SIZE + i; + const rgb = [0, 1, 2].map((c) => + samplePlane(planes[c], width, height, u, v), + ); + const luminance = (rgb[0] + rgb[1] + rgb[2]) / 3; + const level = softBlack((luminance - black) / (white - black)); for (let c = 0; c < 3; c++) { - const linear = Math.max( - (samplePlane(planes[c], width, height, u, v) - black) / - (white - black), - 0, - ); + // Scale every channel by the luminance curve to keep the hue. + const linear = luminance > 0 ? (rgb[c] / luminance) * level : 0; const encoded = Math.min(linear, 1) ** (1 / 2.2) * 255; pixels[index * 3 + c] = Math.min( 255, diff --git a/src/data/local_data/sky/README.md b/src/data/local_data/sky/README.md index e224e7bb0..175542da5 100644 --- a/src/data/local_data/sky/README.md +++ b/src/data/local_data/sky/README.md @@ -8,7 +8,7 @@ whole-globe view and show compression blocks. | File | Content | Size | | ---- | ------- | ---- | | `bright_stars.json` | 9,096 stars: J2000 RA/Dec, V magnitude, B−V | 235 KB | -| `milkyway_{px,nx,py,ny,pz,nz}.webp` | Milky Way glow, six 1024² cube faces, no stars | 247 KB | +| `milkyway_{px,nx,py,ny,pz,nz}.webp` | Milky Way glow, six 1024² cube faces, no stars | 85 KB | ## Stars — Yale Bright Star Catalogue @@ -45,7 +45,8 @@ Centre. 4096×2048, stars removed with a 7×7 morphological opening, two planets (Jupiter, by position) painted over with the median of the surrounding sky, blurred (σ = 0.4°), reprojected from galactic coordinates to ICRF cube faces, -black level set at the darkest 25 % of the sky, gamma-encoded and saved as +black level set at the median sky with a soft knee (the faint glow away +from the galactic plane fades to black), gamma-encoded and saved as WebP. Build: `node scripts/build-milky-way.mjs `. diff --git a/src/data/local_data/sky/milkyway_nx.webp b/src/data/local_data/sky/milkyway_nx.webp index d74db8e5222e2a29d69eb961b040b2d202db49f5..9c75115c513f0cc1b79c690018d4434858504772 100644 GIT binary patch literal 9118 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 a;*58%DaZSsBdJZeXoKjHrQQqp@B2R=;zJMs literal 40384 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 AXaE2J diff --git a/src/data/local_data/sky/milkyway_ny.webp b/src/data/local_data/sky/milkyway_ny.webp index bec3fb4d373c77578ee6b2e51feaa3fe6f974ab0..a85f3d47e2a864284f64c047109510208b3938a4 100644 GIT binary patch literal 23212 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

io0aL4C6?&OM<{$Zt_(cJty$yA+z-1h|Eaa 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 YX7TVqc4V%%g@A2HfaG(83bp3|0PSKx+yDRo diff --git a/src/data/local_data/sky/milkyway_nz.webp b/src/data/local_data/sky/milkyway_nz.webp index de654a4f2a9bae97d18dfa01a5a33df17c6477af..154e0454fc8354b10e50f7b3d9579ca2c627177a 100644 GIT binary patch literal 19634 zcmZ6yV}K@IvNigY?JnE4Z5v&-jV{}^ZQJg$ZChQoefym`bLM>aU;f%Va_@*0Ypuvs zk`xoGkO2VHM1>So6*vfT{yyK#gJc6y0YCwue5lYtg83w2&V~{sfC5de9%wFC4k=Hj zA0Df<<+RaKxuJI4*AkD=4;vCaW6wQ3%pLp(U*DB2^4_?v@E*ROSMHBT-`|C;D%tr0PVvEHCs$Gude@DkQQynax^8< zF3Og>Z!_Z)whL)y@1YOxan9AIW`msewFa^HlY}Av36dn79`*+rkw$=6D9eyl053trqJ~FHz;N z|A}JT7a~pYd$~f;rdxFgP^16e(f`%fAU)p$1@j=XLg`~QJ_wyhus~*ou#_^m>XNSu z_WxVn%f9`NnkQ>V-jib8zW_*yOu=(^H^1lL0BD28|5j5Q)IbDSeHJR*rNfm3tm=nB zp@_05xyZy^bB6J%K601`%>rZgdJC`id3oHjRSx-BS)ZhrBp;-jzvursZ@o6TKeFyD zLpZkX-Y^80Q!Uqil|IA%Cs=;TIsMr|vB=*+U|^X=3=C6N1RPa#SEyG4Uq+C3meS(g(m0WR2neNn>ml2 z1cyUMO2TDVsjfRj!KW$>Zl#V{KSrY?5USjHTtDjoBOt@Zf(proX4eTw?V{;&Yayyo z0ndumM6IS%v3xmFc_gp0vr@1n zniaz!P&EVNFc0AK%EK}oitm@)lgW`ye&0}Fk_+%9-clBwSm#-Z3;KQzEE(}&9Dten)v6y8 zJ8cHYEm@; zh-m2=sH#kyRsCIF&7!o7y6#dub=q4hgUme>^sMq$!~6`W&S2F}RrVc8bSiWOBLce1 zB(h+7Gl|L`#1&70Oc6{jg+LB@MIPc~p?^{^+cq2&pr>#;^w;We+lpJ7h5Cv>itDL4 zwojmF>w4|}uyS*_g?Y=%AVY(mLKG=9uqXFee*|yChu(3U6z~_Zh_2*jBRpeh?I$q5 z%!1jqlLj@oH6jVCXv8x z?<0H#QjFF9id5x_rONL0g@+M}U=BhXC+_3+Z+;!ko$WbsnV zn0)_LD-swiD$|^~9BZfS`lTo2h%8ocMgRT5aHls_{*bq}gX9&L!QF_L`spcBCZ|~a zK|(_~Ey{J55u}Nk_KL5OzzrR-K)V*^aihcFwKhd);_7AYC-xq`fSW|!6l9%;SfbRF z8Lo$w4J&zz!k64JCe{qgC5(eocGS@`HliY}mKq8oWK-XsO;gji`vkP;=TP?Dt)~in zuW=nn7eUf9LR~}~&}50-&M!08W1VI3*Xd43O6c2h_m^QX6aIP1+g(_%E-i?vHT{he-DoDlR+`Cbw~!TP9gWBR3D>8v`jFYsM=7wmhlRkb z@l~=&^79F(3qsKWlu7Q(0c%+}6*YjYt%nu5>*d{s;^J7x*DyY>`2?aLk?*0aT&?O3 zl82SYb&rLS5T zzE-ICwF2&3;i-y^?_tjnGyVhcDZ0&R?Ql26N1Q44z*JNPA&VfUe9f<-!QR|$H}FsQ zQ+OClKdU<-vkIPW?+VO}%VRfV5)wHp9`h+I3?ALpOWvc-kU_|g?nWr(k|CJKo!+w! z!RNBt9LeA;1WJHv)pKJUGyXQS17AQ%1kExY{!&^)$mmWaAMKx|0#y*B3o+#%RM&ty z&;bh`(SLU3E|d^P@+d%J&2UrJJp!b@o4*FVmRKAdrKtemv-D@g~=y`%p|ni0s0k*q-_ zUTb>rm;_T-sooq578fQ`2ljaYpVXqmXd$Bj${YzkB8^cu5hHj*?-_-m(Wk)mZQ*S% zJ%S#wfxk#v?r$!m(Xd*~}`NS0-%`x!eijsq{>NtiE>)Me)#-TfyNTk2%EjlyK( zEv_VABpEt3nS}5t-b_KI$auzeFEXe&8(HalS2QF@-Ln6wDl9qkjx|2>>ByLd6pg|M zWqe;$-uQxbKSB!6uwlxZs<)R7_rw7v-`yk3YtX@Khi+{eCediW6dGc!JdT!sb~U-A zQMQ&cGFr3xMFLixUFowK6J=cvTl~EZ>%jgme^Momp`rgvp2FWCEE47{Jv#b9L(io3 z1FPZE{^a8k4Q=}JBMe*Px|H9Sq<)mqPkZc|j@J|-=Rj!$E(MO!=0XgfrECuR4iGH? z2QCMqNmA=ys=5de15u?yb)jYsPqj4GpOX3ojyYi7w`-F5hv_aDO#Yi(NwJ93fep{v znCj(0grK>;3J2$X?eW$tBP)|ECk-3k@r9WZEr5fp1KUbV`&f0<$Bb(N3(0T}-;Brn zQBf1MXE`3K77Bvzwp56=O()#fZP$N{6@~`<>)8H7-@F{SX3*J>o5z5v1Rh&>f9K32 zb1m7aQSuv~{+RzI;qhCo#GxbNgxitH4XDlTdr9b#apN^4%bi_ks;88791`~as}9$& zx9E5REt+F}xTpf3A}e%`+HX)a4}I@14n9@+y#LeD3pOs&sn1~$Ul!!JJ0>@%NwC+b zLEkx#?u|YH>5U|N`130t#F$o;6sXnIl_yj|3uhV zyrM2qn}nYgA~&%4j1XUKW#Xnq{S4=T5Y=s{-28mQIO5y{uX~DA$^D0YEycqDYsp0R z5AsuiLI2FB)Ai~j{qA!Xv>9DuCl^oAxWtBvF3r|CAe#Z%8A}ig{sm zMeDFjy%v1AG74zP|6Qa7lCHm_01l~G!x67ERutLCx)e=&3#*}FFwp26!&73d_vvv2 z-{@;ALtYMM^7nvizbM(a?w$%uGSF~RRYu=wiMe5FiF4#i+)qF5cpt9PDTAEZ2EPIV zLaiPv;}s z>VXGkMU^bS1N$U$-+OIf<`A}#pEkZY;imiXxc?!ae_6=i8_sPG2@J@Rd#R_MUSzOY z{!5;15m>6Jcuy`5aTg(mMn3WtEB>_X@YE}^%(y%wLyObQd35Nb^^l(L-l^G>EBfNI z7?vTF4c$qxdE$CJAhDjvc`c$k+mM%D#L2`tqf*YvW{%+?r;2Q^uX}~rl}bDoZ2U(p zn4ryONQJJ~$;WU&n);06n{_Kh10KnM*G(bYqz8hvXnAwfNLsm+NLsqM`|k*}@34DD zqe2LX*ep1sU)58jsK9-Plaagbt)YwKkixPj&xut!PaDt$KYUq#C>Y#ZB(|A0CpbB1 z2mD9)$o5>h*{0&^@_#k~xsCYr_e z`$daS-$O^ztDVM*tJx3FQmtlZHEa%cA9I|4YWDyQtL|S?vc*#^dR0)jq@bpP6HwG) z&^3Y=FHmfk;?j?&ZfFE{iRJbPk^ebXign(jiKq(eP)qF*lFtvq`lgs??Q*m6xqutd z(Nd!Q;m;(KO6=~_q9l@r#;c~YjCEV}561pW%80hE5qMV;s(jWrSi6`kNd9K}&Id&) z1&QajM-x#-w<61^;g5Vqe1}}GhpJpm4gLX=NA5Q|K&2I3z{vc7O{iFam1VaVhY(tF zJ}#767jD+rr!6s(}LcDqs0c?n` zpM1nsXa#0~rNPNMZ@-NIk3G>QbY}5h>LaMzA`@|yu7B{b@*DPFV#-)rK`AVr{6rOu)bneZ`cuw|28pRlcC!uz?=$h}ji1m1G zfMUlpn(M@R?IFs)9F5p*A_>?{gBA|RqLcSDKYxsN$DGT)uC?im8j{n6WF+e}rzeW5 z+Lbq`EB^du-mso3e}}bo`}MYa((u@5o)zUrYc(O#A00icwoz4MhcG7J8nI|B$Gbs| zQaY?Ock&Kst;6zEd%P>I87}`gDGK6*e-C@i+vz%u<=H)xJU8Xt`Q&r_<3Fk+s zH+DR?WU3U1ST9?rg`s^n+J=Ax+{6gZo|GFWdjre z!4ApGgB5z9%DIddQJ< z?fh=eC*O&Ui4M+nyb5*qe=_V}g>3Y6GA?!KO%r5Wvj)&9J_vJmG}3Q53yW3r048SH zoAb-8Pz?;JpJ4|jdlVH508YCpp{mZ?vg76s7b&QGT2Nv!Rbpg$b0jpCDjSWgNww68 zW66Q600EPe?fHiDL^h&yGqSIT4}<|;`Q=of)@F6v%=rJfI`P!xT#Av$Uh|wsWt^QC z7{W-ix?hh->f6DTAR2cItEC7 zZ2dKUvsoN`#AJgZ<-xK?6u1rJK*?GcKUn>SMr(vW8gm0zg}pfkVNDam)XxekM&1d& z2$hlBl$K{mD8;vF$WiXJvHZ>Rt1GC6juMa73XmT#@r znpA!hjFB?=@Xk|_uc}mlNy0=SsgHl{GU##LXX(}a$l8_?Fr{3%snfm-pjIz$le}`b zA-glw0`t9iC6fGt2 zL5jLjC3a=~HO8MXwGO{_IYItmo&Pa+8~EAGi8Of7L;|9%pmz{qO!1a7JTfnBPn2 zI<<0fe<-LsdvTA^J2(E(+7Z9FEX?vGdJIRrnm@I_njwvsKL6R={oe?hDdU}fhPD6j zxo2P)MgAoDGi%V%$kgPIK&u%D#{Pd=j z&YtZC)g(}%w=FjbY#{}ypNt9V?>qZN_3H6L^NH)KogTKYqSybm-FFeNY4@S#6k2=eb+pm9ikR<=l6x_5z6(UAOE3;#Y@Gl^$y6}pRnCxxJrgg=h_=X z&1m)e8Tig%8$=oQjHapXw0v@;85da}rSP2~sHG+6OOZHn6pC@de`k%@iuBf^X)wlF zYqmg(E3K)E1JjQEe+=%}S&2|NYGb`EMff)$WgH~ipF-Dsogn6rq_Q4z2=yq5D)lf7 zu+?X#5|V@1WzNv2+=4rKD*ohx<2P`)+{SlXk`vSwLEDgFeF-IT;;tPbZfFUW_lpD5 zMEMPQwp~@(Ds;!Hfu7tzmjc7FYHu5g48dOO)_-lAoqw^qzw*cz=dk>mDfxjMPbFoe zdbbZks)+a3yxU=3`41^|t)NPji94`9vai+G)<4+>(c84M_Y@z6lU!h~m#;NiYSqzb z-5itfH?l=ak*vB_wa@S4w?SF1dN0wA(Nw32IU@cR2dNZC0;64*3nm!k{y27xu;Uf2;R{BfxWf4Kg5*11db4A-KZdhS+haB{HuV~t>MzTEiXz)q5-xv$*a6yGJ=Xg^SUM<zLGIqG;F%lm4O%G{CX4>YtYU+h^=2rp13IQRRX(p9nv^`hV~( z?e1BtgGsTh7GL~^>nIhIWH6GD$aZc)nL?!?o_F9~l@2)_$o2=@$XJBwIvmym_0_$t zPsBpz>Zcz{B}9~ikWOQsMdm()5Kt(p<9^>DR*9#EB}h((H)!CM#nXM`saQ%2n(4D- z-!CFaFQLvZD4HYU3QK)mXjIDsWpx$^6Q2V(l8AYV+j7U`R(s(|cM zG^v&iOfzN&aZS)`p)!gK;bf%(WEpix=@!Y+QlRywx3lpYnyozx*_MRg@F0?~55dq& z6jk9`FA3WwHW8jr(Ek;pqbTOYjL8_&JbO{rZ-gXRq3FKvs)^xcB5leb9rO{3HLI7@ zxCbk)nYSQO^-Ps=PD|{qJF4kFL!QOFG^k~sRHBHtho0||2X4-%3fX)<I8XBh&rL8}Ls>Fa5fHO5p6Yx&z4RA6(+NVr|40aK`ch7K_boB2uHNa6m}FH}<^9+t~0@Kft}Sw~5P^7ffD^iV~8h@v&cXGIVdF; zvVrSKHS4}lF$N`asC6BgG_a~>dZMRjH7UxdQ&Vr$TPlepZFDMX=$x=QVLJ z28xkr|J$utO15ILIlzlptW?i2LXtQoCGbuv6iAGJ78P~dm=`}tIhBz<)}pZ5KFO*u z8`zC_**XRkUx*S!*QD6qRvETqUAms4cH9uUL8i{{%>hCC&lFD;UzIrMR`?-cuJyE! zpTXpjylz~7Gg-bU+CO)Pe7bcc6>|`M4Ds(WZuj5*flf71;Do2SPW_jMF-(;DGW9t- z09hZmuH(d$GECVE7g^`9N{1~X25yx>%S9>p+dURK&=%9TWGf-<4%@2nJn^RVLYefVD8-$>ajqMr*r!GuK_ zzQ(9%_F%GH$*+fV4yW8~vq7YM ztsx9P+QgO^*W0IC&aqxZmlLRVIRqdkrlAx>k9P0Ugv|d9sJBjiFP*wm|6Ve0%C^2g zEW>&?C%=log8mPh7{a2w%9R2w1t|x`XGC-W->WBpzMmIi%)_nVl?HIiAZ#CeljkaNCY7Ps!zQTJ;Ra4c_U*MSpP*AKPNb`YgpDH0Jc-Ar zx*8sUhX)+T=cZZY+U*hMT=h%iB42cA*~DYY|is0FhNCKLUeHc)E) zCMcf4XZKHw=KW~}zCmESt6}?*INsL?GVP8;WKYu;R>8o-sjY;TQL_7S$m)wO) zYJ9v5G!@01;X@O6t`gD&g)(he*Jvg>KxH-|Jr}(jP<)31k-q?euGxbaQbU0S=5yL7~ zv7-=9DXxW6;WLF!9e>Yfs){XFu z77D^ju%#UF5L(rSV>OruLdV_NKsUUBb|N(c<3_R!4H3=kRqsfK9mMXvq%agIq0XUK z^sB^`z@n72+kJc@ON=N9i;x+ZGefKw5gem8Sj6%%RRByVRBS@EBs5B|GSHB;pQZcmnuxZ72GZ#`CC2rUQuY?i_a9=NUm~#5Wl0ucX ziH)r>iX#1x#@R7I5SV8R$5C_A-HzZ(<*JMl6mD@Dj=Z64oRf7w zUctNAu8q$5Z1m3LW6k`zEcSUyTb4M`hv-b8>w!9#M6G=XmO>H{@HKk;C}O9Qh%)-5 z49o*rw(Qh?)=SS=k(X5^fqGVhLDt0G{;(2f&$5xKrmJ^b!9S0}UEy1`&$w8KWqwSH zkBxHYZjvqt06KSCr$uTZ-&P*aTA=_oM4l~UfSYywxUD$Ok1Gs~-W-{F7S}J%NPSO6 z;Envq5gEDd7V4!TywQ#)aO>qm4HJqXIW20A%>lxJ^?AI0Dq)8j2o?VHgELGbv-#CU(UBh=@xoE z&duVuzaJL?mk88rqnkJ+N%W0I>#a4vzXkI%zG7wQ;f^;M9ehB&p!oMX^>}FuE^dhv zW;@wqjOmo=mdafMsr`!WfE{k3UzEX>u{TLJJ?C^(Ta;-P&>ERQX}(m6CxkfYfa7z4 z0bTNFBcBT)-zo(slkzzE^Ar7C-kG1r5sPgJ0F5-QIYhs&#X))My7?tzDUr2-xG4p6 zgLCm@u?9o_^&OUmgd<{Y$7Y0}>d|Dk5tfa~lki~H&02n7VS8@cN6-je@Vv&U(b6Ya z?vWSs+OxY_DD%PR7Z*M{_dz`p)W4RubVF+LjE0i5q!m)wEqF@B*_=R1?B6h@8IBzv zeC?<6Ab-Ev#V{<*!+68iG*F{272qmpo+)%po1(@qBuJpJePrqVQ311IBxs<{^?e>z z`RuJ5_9mei(h++*7n}ng)VW?;MCz*Cvt3#JxV4Qzzt&`|OANCry36VyT=5%=D9Med z*f|$V(RGMd^k+l^x4gb8@|h5?ehJy$28W4Fp0tu&7;?wd@UFYy?XlaA#c;=Mf;@+< z&CDeh~u0@&$n5@H@ys|C}fV}tuu16*!XZu%3(!-1F}W#Rq!i#~nB z&17?0dCz^aNc?6fRYX|jgYJ~tZu2ncZ$--bIv$Con|bdu!n9**G*14Ysa9o|roTqH zG52Nj5nW>NnJvn!n%+`?yagHe&&#AJN=mt^pDvG`HUUMJ<$c5#5`}E4|C2jkmrMXZ>qVcRcCKMvdLi$_P(;d)GJSMGjXM??X&OWuzDc+80gQ-E^K zWBpRs3GhCD*W4a%GrQbp0nr7rP@v$ClBH`wa5DpGo8WZ(^9ZUTUwLtcF@n8^MEv&$Tt#;)4^ND(WY zLg@^x)Qk>0T5pgpu9D?UoR}4adCPYP#YR@DpFBAcV$ek)IZ+}Vby_~Z2)QS!yxnSf z$*jWGzCG#cQMa%$Qw-LMds+U)xC_MSqmvwnHGf}9-t`tAFcwQLgOt0$-6{+Cif%%) z`3|PjS~AEX=Wyf~z-T@%u1f(r0R;GWTW6N0##p5i{1}*|3nby;#QpWrvaHK?)*jyC z)Nm~$yzo(V4}h_U42-ex8?P|oC{{`mg-;qz-xKp?U< zDG^}{S|`h!p{kS{D?M99YLvLj+ELiTO2c=z5Eki)rE01SyMkW<_CszIN;S#aKSXV> zg=4`>mO)boCiw<#P?73W#59~k?@R=y!8?hAp-V7+Z=gn!GStB_G_Sokn^~YtR8k`MwZXQIv&C%^01dLP#(CW5eX1`kY*Dh)Q5< z?6Umt1g9s%ePxc*jZL~;QKe8Y;T#Hg5W{!x zyL={Chy%5<{Yt+00Eljj-S}V(P1bsLe(M6$;spA;Fq>)BN09F|T{hkbjfb1&T+Sbm z4=_UB-N{CS(rJd$;T)*-3fZl5VHmPArpGK(LP!@X_6JNjriQmJL0OT4SgRO2FV7z@ zUb_cZB(ZMS8bTtiYhT5MjEOU>Tj^EuLt@=FPC_{UE2*|I2o zIKf2VV$o?8B!GZbfic21ojb$KTf`vWQi>`Q(@q&Zu}#B8Bk%X0_3xcp5z0q|MP8t{ zOi;SF1Pr>vDGd#SzwVfhnoYlj*h6O^1>$vo@m+0R7`Afx%)%HJ$#tqAIAPdn;2z1%88HC03_HUZ+K9*NEnK7^91IwOyam!r>fvYS+ObVTR4 z$U5vO%zYTeGzJCeb8Qri7~4NDb1qKcVnYR#@h|IlWn_?iKZ5xeMIctRtqaRGax_wW z;eV&5%&tZ1Gnt!{AnxDUyhZ)~g%kTzpCXFpTd7Aq4*=vbJZwCISc8G2#fdnJdj`VA zLEHD>4Y((A^4bJf8=>Cq>yL7h4>QH0mYGGLT=EBvKZ#z?{flOpw)%atgWrw8>4TQcGa=+{0 zA6e?77E-<$H+%w9&XoJoccmR(dBym{G;Xtdn9E-i;qx2xrZ!VGt6G%GB(A|vdE)1r z?VUORptD=xzk<<{L?exDMf;#zAbVv_jZnD>bC3`5R0i<2(Xo3f0e#X(M1JgfDzjZv zMLM=NVrnJB6;s}wOyNE!oNiR(uteqT*J3i^Y6Q`LNM#Ftr!QVx-OX9gi?8x-<`e$+bcAM2$w{eTEGe zt?uXY8SQKpnQt!^0_~+I2ZvyHF~;A1asa6uTwh>=YV?3GSG``A zT7Y<9v8tFMN$E#Oo#k3NA~Y}Mp}UU(kuhO_S~g)}48b(8@n!#DmAXB=b;U2M5Sv_Z zIa`{w^G!?cuuO5K&~bOMByXN&ppuRycGkE}-H-m*f##7_c>v2DW<=zGo!d|`te3sBx4vXe3@bWSW(f*DCk! zU_mR>yXh5CBBx0JJ&JyEMUtVT+sf%Am{1PHn|wf`_~R=)pb*WH4xoqPGUD>Pi2Hwi zsmCB_*b1_V7GbFGQlH@kW`20#`v-4wDiNyycoQWibW32y}^hk0$ zMQMxW)vt8vF*PF@imzK>G>^5eXrFQKawp925Xuj>0 zr#kDYIBaCQkN1YGo=6`>b8NK7LBzl&q5rgBMltj%IYzreoW@+!g#YTQ#OqpEoS`Mj zwTZtuL5nA2LZ*4hN`^Px)L?wz%^<8SHmQuZu!OT)*Gh$;#hG^icuCsL&UzD^>aQKf z*RAW2V<-$5?z7PTTGK0V;*)vu?B$qs5xr}4o8#eMp`P*m%=sP4fM=kqS$@~_;vB~y zxe-(d;_H_L!+?H+TdyOJhU}yLOmqeb;Zzo5dMjd+jsEL>X8~vC>l}EVXUuZ)f=-FW zBU}6@0v6N9gTSyiI2}glA=`F+No$V>`|YGXX$dSEh{pU6&Uvwl$LT<3kz)fNM>j)% zoq4ZGRy369#NN70d`({QK?mp^m}(tunVYD-;X-Dg4U0F7H*Z^%D|x(_B?kRct2tZt zh}MyJ+45(jc6F(>u|yy&emV&)6nI5!01z0&(*z|NdVih-e2?WgbXMjEUAIwy+!NYa zOE<^D7Cmb5wQ;5Cl+M5qOA4bK%&3l$GAQ!68Kv zi&R<8{#gQyu1MOGUmtkmychSPv$mVVYu9-cDu}BM`^~Hn76ocTn+LaeNE0$P6%su| zQaEp|sZX%CA|klOt)9FI*?hZTvv=Huo{Q?4lW_hLa8bBlU+^hherlu0foK4rhEw%W z&pW?F`m=IL$1w!~82y5vFtHhpj8J$yUwJ$ddatK|Us(H8H#Bd|<5RO|A6!^G)98=A z5BY*ExC)mj7v&xp-LJ%v&x58FsnP+xiU)j81Sc?!h2di>3_2c6m;!(7cDtw4#wmY~CKfA80bW-RwV|N z2d9-Hw~b|kt6Td^HW6@iN{s8p-=qw%wCOU z6;%)2M%N-)hP~I`O#&K<(w^GXC1H^yj7dG#=svnl^qzQ=`a{Mi5a~Jhp4_0N$1r=I zu~p@ju0>Mzm*P&!CzCzKv;jx3ploI8Pq7alSw8TK2s@etmE4U!XP|V-4$t4|?@^^$ zVIcJf;>G}?pDX8be9QzLkcRi9u3yxU)*M&!wr%nV(JT zmdYAG-iLI}s)4-_;WQ!KNobw6h3F7i`EEd0x56#GPfn)6!j=<;$KzvR)YFmHjq<&g z#Fw3*t?YX6U|J7-Ek!F|kvSzKN%&m#z>8p=kwhHkE>FcKW8sfkUtqMj(@8)2Vw;QO zLr=75g*)pwiySc2R`A$+iVC=2WlQLp?Fl@NZ=4#*@2!eN6&V;>SD z9USD|V1neRX8+G3DXj=(IZrD4MvMvi)vOg!8@bgeefwPWF_s0CT1cm453ILQU6@8c zjTJFTuTC=&zO@v-!$0cgH@EJm)yAUOVeZJIhVBBfrO2vCz0jE2>^^0?xyaP}zAmCW4NX6O6w@+q3eP&j zNkwo#NmLS<7&oO)Ol(FV{JG)$&ZLEz81pYoV^ttnp+N>}1sq zTB2%Qt~%YxCs|)~dE`RW(3$GOkgN$3x1pjMJP@k0+ewd4%Iy_9D~D8vK_JR6I+-BO z12!Sa*aQmz&tGuS;8-Cka|ONHNf{|+&9-LJO20IUWV2HEIiN%WV8K#y8q+6BxG?2A zj+BrNHcYby5+)2GM&2}W;ZrRX210+sd8_tqD(QSosF~V172V+J$)?Vg?uz!p$~Qw& z?~44)!rjDvBHP|j`z6K$t#>4lrPd)=6dr;mQ%0-mM&k|jBpQctXW4JMF#kjOC5EE} z0ygfWvr(s;U&qb7yD$`F2fA6+0RcwKXyv7OB`oTVpG<2x?bS8w?-a!%2l9K0Ump@~ zk$HfI>@@NuYbm6BpNXdHmcsNAQxG-6l6!3WqC8svSZ*T{{0Q7MiNG=PLnVJ(6^HhY)d%XG(*i0rrlmU!1d|>`aqODN~3EYhB z7&y+OnEbAS%%=O7Y$*O7;wwo|Nq^aW8QSsk{6(Tq47CeUPJ){yQkPW5gT|9-M6j!l z+eoJ=RGj%*Ji+DtllAQMrwrUEU2VV%0Yg1+?E>oXOr=R-7 zce)SClXp`}>Q4H*pj2kJcLVn-j&KEDnCDkvO5< zOHBuLBc+tP3ta3B+>fY^L_g=W;|0YoqV~M$Gs`dSE~cZmvP&iIEA{vH@kEsW03xZ9 zw|gz3aOxyB;y{3==IZl8QN6X0t5%)SbB(W>QNe8zxvQ_>q_U!OYd7^#LP`$c8jAZw zJw83RB|;2f{&@@jouA-q$ksFBHI>GgdfD3z6A8A*BuHsM?F?|F#~#18j6w-0O*@{) zY1BtX3_ynXqKd2aC@}>S(6YU$;Z=Tp-xqr#^hZ~bz^hn9^eocE4o4Urhj^~v3LGYS z%z|M;-J;cZ(wgpd%6H<{PtOtSNH+-F5)MdtfiO=12 z^ysu8Dz+Z#XcvlbkC~%BoC~)h8Tur&{aYz+l_2o;9E1orsSt^%M*8qgd;|X08ZHx0 zkQC9(BvgZPE1Ypz2YZ1^M8)PPxhgW(7CO)ur43&Qhowp0t0S*wKy5=es_3r@B!=Bd z0r#ZanhZ1;6>qKD5diak`oLm~buzgtgx@M9lK~j&zgE>Ch^A$gX#*TE=h_5*hav%Y z4P^cueIsF>XmB4xdeEG?qt-yS{P`IjwkmT(H;m=L*zqhx2LOqtk|{Grts+u=(;6n@ zMP=GmGuMMxUaF}&yfl9GC{f$e#+~A>9$_Zf(mvqO8>5TVIZh)d(PlGhs0; z8?q!gBXsm^#4U)rsm#Xhn<|p3pxwjzFIg*1)>j-M>+N2mkk|G(7e3-hBvzDQ;g!<@a|5M>~UBJ#8IBSLuS1pFUfG z*Ypj936Qn-GE}eiC<7<}G4Nv^<|+eFw6h!PqDy=r;h99G+)EY^TM1MXceQWrgkc^1edRaBX??)$9+p-li-gl6|%3j;OM*hXk)9Sp_et*Vyv@ zQ@^ou*~D${&DYf|37${z@Hke}dEEb2AXq5HLBBLc%cnKONg@>v&A2^gW{1RhR%71} z^Rrp*jU*Xa2O&7xb4S(z{A!+$tXYI{?kX3{X6hK~IRezA%&JkbSihMp2KFOng>;kK zvu4-j5GRJvGyxkUl=ZKcX;tWhfUw4=$6w_5wkGf8U-^`e-v~Hb0@n;JC<8S0ZYp_~ z*~gVbEokO1KZ9xY7_>-{5O691e7RG+akZ8NB!O#LQ3%hU|F+7dnLp0%3&Ax_=Rs2A> zO+;FIeqAqSiVT5~kejyYoY@^nH}76)OAF`&=s};~`JnT3bM94IcC7bqn484SYOl1b z=}vYwDO$*kNoq}kRl}js`z>?i3cL@0BU$xv^!x8DP3$y-@E(4t##L6mJ@n;V|0giu zMm6)XSRRZn6UJ|FTl|G{HtAhz6Zm7KiSW1N9rL9~eZEHz#rX86sIZcNQI2^y$Bd}@ z6?(oKFu%Wm$YN*}T7DZnqq!!51Vlxw%IcKJwc5D8W`Z$)FvL*1t&$Yau?-t&JbQ%7 zgMWX(+D`ID&u`T@QDUz*tM_3VuM+;uHs=zKBv(h&yJbMlIA){=&s>h!d&m3#1^fyF z^FTIpEBY%1DoT=sdZ&vno8MHMUztr;vhzjdPg z&=9G*>+;3xHF@!(%>&Kb24;UUfKJIJheq{ROVI5QmpEmsrc!CanHS^t_#cX-ID{0; zOCFFch!NO{Z{{ZR;b^A5Cy5nW8pSq`?)KOSi43M{dy>OzTP_yUZYy!3t(xg|?g zHt#X4*DThL;&5Om5Nj}>%}f(OiF#~@_Y6sn>5dT18pEe0`zH$zvuNnvGugVUVJ63Q z1~f;`SO5S3o`Iv2P0%S&*kp&k_vmLErhF|sBTtF|v}U8MZI31lfQVybXi!e+ic7QHjthyksj)r!}mJj-$io{|;rC z{4AEe05TNk0M_N%KE|`G+jmEIsUKVrcU)fw5THt8onsKsSpd|`q^xZ; z!uj{n{NNV)$20UFtRVFw^RZ6}>#cjLe($_$95lNyOkS(!X`TOZGRY#q$Xi?sKli{D zd#^_^2PBL};^Em<`T^WW1xSqS(R=G0&1E6krZN#;&q8;aOm>=%Y#(0gEU#1A+MKQ) z4Pnd2m9F`hVqkxB%m5h;e^lrGtZ0(y@E}lkw?;JsvUM~K+?K{ZCZq(YButi1(cy8; zgW{eKdY}Af#K?|11V_*SFr~aMx9zY%)0xPzYsTh+9<~tUp~AoEVYp z-NqHBO9ZXGL#uv8SCI*dT-&tfAj!|=U8_22Eai5#XWkRsl!Xt5uTNjDE{%}@!C;2` zW%m31qe*f~DO+yWsG?zq*>fa{1HTLfSPjPh%ph=9{BvHfL>2bDR?9qRbPW~Bj+r>| zt(rnwWMXd@u&S7kZW4T|vd++{H3;$d&hXxk;Ej0;oUp zkEWwh3-IXy&DbTR*x*`Drvw}|S%qH)r@X^ey~lItNaT$UD7yucHKJ=6j^TR;m>RA% zG^tsO3yt|CGGtlVxr-gybA)p@w5cJ&B=V-|d!QroD~tOTQs4ETb(I^5DNSUZ9|uns zaf>VaAJz^4em*jYm%&m&8uGFUhlE>*S;qm3&p7i*J#T{h{5ID8R*1#wXY#{w>p>TA zqXo*1GpDWq0BAjJes-$)=ME~OaZmm-Xuzq6ts$budqamI?Un-C!88@Vetdv3NO%MYRRGjftfiXvfXLAsKVu@;vIz-Cytfd4`|0vXW1O25sJ__p1_XWszCi~(&3jLihO3Z>D4uHh;rMgKlk6l$ zUa`}QN~LkotvYx}!HA*!z}H5yK`1;Afy&6;ieuI-5vP3xGTf8rFOs*$U`1y?co~2A@mlaG@_vMce0r$!nx^ZbCfLKI&v#E9KjUjR!~Y!GzrbS`^QEC z9*NCSda*29my__JRR!M7Z70aYZ8w8mQiO~1_MjhOxx`5@G^CX8@3J9;sv$q2rW8ll zFWyRn;+36})=*J{^JiOjTn{cK{uy~De5U9n3}G<65QwOdif*9*0!PE-mvyby{Z5j= z?CwQW!y1ggiWMiho`;jcLvS#p?=B~s8hgB@_f7r=G`zF|JA3fP>=}sm==Lmw z25dv{Sd7B872xE#56ko#*f<;hUK4&qz~}iND3_wGoxyu2=gD%iHp3?f16mw+OHN97 zo8fgwE*qh@g~OUqkka;4PmE}Y!RmU7?6&1z82tVdi+-Cnv{V%NZ61^$V_ZwU`fu1| z!qd;z@vcsaWht3Q6&DPkTc!Jkkw-GMc12|1Tf%0GZNzV&@n>)U zEb{d(v5-K{1sByZQl;MDXUM3I@c=S9M-{*JCZjPYV7$|&ngq)F#w(6Yc0qL3Cp#;~ zgmFh#oJ(;0i+u?k*nI#2BH+?S@GGj=1+|x0YLN3W_3pP_e!X>W(4E!#2ImB}NxbA* z6aE^%%gL6n$0}&TNU@7v3o9-{SP3Fz(+k85rDZcTk{O1%2}~LZ4Y&ed5bd@Qlye#9 zJ*bb={KD|#IbL9`-8AC@-TiD%ScM#N4}0f=(A(33OG4t=VK+g2tQH3XiMI?n@;}eF z0=n-xB4XWZHm6z$+6`I>OBv3mJJ)mQE`5gqY9{27DwA4)!7PS}+92Pgp;r&5(`V=k zoM_!2Gbi`&e*w^>1qgyWUV~GEfa=RbV63#cu3qtvB7DKe%HRM1D(A(}=xR(RE&MJt zKtAK&Q0;DzeL5!~cn@=I8p%K@*gEkElF)(~=$j-Rak~+&bptK1>qWYn7E}dL+4j!D z*n44}+UBgAUrF#5eI1x*A!5dT4N9NZ zAUCk_Hs8mkH6L>B=AMM6+kP&gp?u>b%NN(Y?*DgXok1U?lAgF&GZh-FYH0HRu3 zzWd7w(`kEu%MbAZ^x_e|HXosRR%gA^8!7g`*aM9Icc1Tl6e#`wHF5CgJ5+zq|Ng&I z{!92D|DV|ZukTZTKUDwg(|g{3@AKFH=h(;h5C0ysewaO8|GMbL|NrTEzl+gz|Nquc zqyzu|xBm!F{{R2pwZ0?&Pyhe;pZtAw{A>Il|Nq7G|JZ-LfB)v!?&QG#{po+;AN}k4 z|Nf=1et@%PXXFKOSv*ZbX>ftNb_cbL0mb($?a%$3W34Us0cJiH+r;_x%YIte{s#0L z7aJ#_|FP)$qM@T7*}ik1b@rd@URUnlaueOO_(zbmyX#>midsR+56YDP$m@gbe|s5KaaG&{=lZ|xF@J-r7JgKZ_okYe^EPbPb~u&J zFEHwl-u!r>OkQwFHdk7l9u6^Gi5X?Uij|}!os{Pl(019_FF9Qq&USBg7G7+!xr%Nr zB5D8WG2J_e`LiK%XhFdtJp}3le(7^nY)1G&mO}11=Z{BS$~%x6M>h9Y>9V9rvx7^l z{IQqKhfMQTk{3N#{I1tS$$&d@{r#4Bv_(HPE5EvrY%ODZb48U0|S3r zW$i;hfCB2GUPR?{7ff!se^qQ)pNTs%X{-4_o#)xXjn01ZREnQUjR|voPqcSkgVz#S zwC<6~=1XvWn=*c99X?ERzJe|ucICupwUCUSx0_(fZcvKt7C+kHMk5=dh4GVj%Kd-Y zDb(Vc=Ft6Ic;ai^(U;Xz6j&cIH5UvoGI1#kA6M|ScJhA+OX1q1 zOf%t)Aqd0uFB&bQ#0~JvsW>jwJ;}Avt>5ycOKhdTc^g?IM-qzM#5^#{Jpq%8(BY}x=cX-)#wmbn zuRDlJq1&XK1P$GfrUqq7xIpa89Dss1?6dopqch;g-|&>2freBssBD*lq6h7-_I=_X z0*fN&Xq#!sHXLD@3E98y(3aXl-7-$YptrDDe}hC~0nv;2bV342t6-BiT%OsO=yNl_ zkA+Y8_wL;c#2&sRXoM!Q(~YPZ&SyuX21m7P^`o+!E)q0dnc4}SM$bM%n1Hkf%^$4-*+`?=MVRp$Zp54jL4Yu^+ zNY%_QKF&--dwJq5a*o1{vNMkvr5)n=fV87bLm>CkcGFMBNfdE1!lttsG5K3Frm& z`Z4AeE%%LMMc#q==%zyQh5Z_&9Fong1E~@7v@m)`ESKPwLpl?V97k1MoL*NyI{TTg zetRMtvl(zLP|ca}8=dcD@Nji2O$w5Z^KG0j_vN3t3?Oj2pyolRQ0CsbQ?x8jij7Y$ z-)-+;V9AawWF_sQsYH1^9>>@kNkmh_l_VG}mTT!GAikd8Nd}6ueQL>zX%3@H-lLFiZ%)iF>kN zDNg4YMkD`K@R`w62l6VD#XRr`7WcSmdG-cs4AlYud>iIuZh0bA70VK^IpM+D|Ccts zM=`#*L}edCv%51jKz-QYK>4L?{#)5iDB!^`apF$TQYA>W>fyr!p&rSbu;^B*U3!0U z;$(lXS26cyO(HDdQQrP@jYx;mS_^3h2B%t$b5d5lFRC!2Y_yPa!(ubZNZ-=qNqadC zqSRh}DsfdmdVos>aWza3M#B1QS!pM8Nb3@#KC?R_-%UO z3VY81rBIafI6Z#x_b#K{m}MLrT|2C3Q!#HvUsvM;~`ra z4;g`$a%-`amtI5Qc{p*n(FrzLNZ}md?Ml|$IGx4kkm9%NMZJdYb669QW1ZFM!Sa*< zBVc;2U1qQdP)Nb^{ z?Ekpn&2@gT7wZhFXAYeBYa}439?JL(36$zWbrISp6d*#H%g ztT7>>w>7ewI)=IDrN%*8*G;-@Y03C= z>UWlCtS2#VeM1@3K}>e>V}VG03N>Xx4*L}UAA0m&akV!*dgvd zhD?j<6on~u9fW%AbAn}xgilx&CUz_BL{8Rfu#!tB-=qNUs*ci>fsHyFqR$VOCKKX% zK<)PVY z-bQ45`oJzMn#QVrPxq08O@`UVZJp?6mK=dBbT%yM>SXrTA^q|jZ>bJpQe*voX?2U` zzxB4~M1N%Gi*bSS7X=t;m|6}Y&dl^bymyR^Q+=HOUv_jKG;Rrg(H}IlhA^{`2NAQH z_<-paJgpX3P>L_Bm$IW}V~#lV## zR@%z>QKs2!_63J;Hqh^5JI1u=fR|qlpqhI`bK7xxH+xSQ`PWY4BRm0cr{rx$yoKQ; z2^qhYg#1rT7d@hsP`Tc{jUuLeXdtYGDQ$rzXg8gUYA~TC)rKNOEA#iEwawC(tn4|& zdQQR|+WMcZ!?P2Q7I90z|2!nt)gYYRYny~`1Q-6uPp%PQatz?0c8Aed;*VfJW!K(9 z7nag;Rclse`s04^Kfj`sMFQWzXA&o|HceSMqoAgmI<`n)^lN><+5X@Uke@lCGm zlZU}H86-qT*2dW)jUfo=AK5OPodiQ|w*lr?FX1MGs|wA6(>rdu-ZoWjmBm)zIfh9n zxFgIQ)caiRZZ086B9WS=tFLf&doD4=!5$C3E-}Q-(R5J?Dj+)kgeD-5Z^7fp$0fX} zXKnQ@SnYK@5l*l*#u03?uBK1;Kkxx1HtoOZaOVkQa0y}jlff{z24JgN-_9X4nRN%l zEZ_$y>gwY%Tt44G00HESdF*iw2ep8Se%w=G4l9Uuyr%-0>K;RQy+7+@&Ilh>E4X2w zk<*O9!h13~7EdF#W9y9USX4I29k3;{zatj8Uiz%)=Tf*+lkpzpNdbmqxD#g|GUjaqvMa*Hb2U|zuXe-L>APaY^L3VsQD?RS_@%)=#%FjC!(tAWmNp8?Y zl|Gch0pZL`Q90Z+v_apjd6>#0aRZGY^EBlRh3VwDmnq{Bpr`Jdm>er^u}$ z9eFfMk!}nm15xk(&Im9Jlam%;cr;aBN(6q7nvPf{#g>hfC=c=9NP+Q$d48YoUF?IM z>Y^GuGt3qzvCo&3+#YRRsPqsWU|PYMXb6m0=*GmQ{9XTGdG;FLhRL}V)Bx*0n6K_Q zRQ)?TZanymxgF#GK4oC&9T+@I{IOG`vh<@L-^^sl`z=ca=f<3iDB39dyi9Cu5YF=M zzzEr>@R~DE+Z|CE&~544Q?@~~9xmq=NtY?USB;?n6OtDS2!nb5@94>H;jK_ZzB%SP zffCte$a*|%k`MFRkn#BNb+U>$<^Whsc+=sOe?kN{4Gg>LW=BFvW*GsQNZ)_*JJt-1 zl)I(D{%JJZUAHmQs6P=EsL$vH9ox$dIZhvYRf$)Cc>(RY8{Z1-BbQhvhP_|kP~gYS zPL(7cx@AS^pS$_YWJ(LjsM5D(3TZ%Zz`ZX3=UGH$;~vn>l|-5H;_9TJ=`PV|*ed$l zJa<+ZXpJ+1{?}r*EY54Lp;PW+^Y&Ip%SyxrUII4pm%(x%($D5C{PEs>u%A8fcUTlA zVFz%o%4Xd(fs6<|8DWkwd7Um#w$xRSJB6lQsLcq){I=-gFos&HjpC_&h#cmZv+g^= zZoJ)+fQ~zt$_0qU-yn;MP`(Q>U-`7e$ojeClgBj6c7m=dN^%uce;{QHXFErn`htNT zNdAt>y0YlzgfB@SGN<{_=l8Lms1RcD-#q zQLw>A7)mKsNdem{PI_H31g1JNXxB#pLG5L^G@%vLPi6Ew7EG?Gqt?112tOsnYrY4? ztbG1j*r_LKp@e%0YUdY`gm4oY?(L=@XCCDcpToO0eF@I5jb1mN zN7sLCP>-QHBXxvIYL$WeiYE!J5j2LOo73ODIbyuH7-v-@S82~L9kmflj;kdyWJjro zaCF=zh;a`MDAB)5>D-PxY39}1j9d_x2L9&_DN!Aw6BzrgDCCDQQV3dT0-$~w0_)S6 zvx?grs78467m!}4SjIh=OI_3mtfZIGGdo{IVhAyTUqd1bz+eLRcEltYcn1wq%I|&b<4#kPCWi}e#3od4K2?$ zL2|$LYYpxR-)^9Li?c%OlPexUy%bN=$)%Q6b>43am17Y?6zcYJbG*#~F3X zU#QZ0mjY)2*C4kJF2A#3j8Ddn=5{c53S8TK(;MO3O*y++H3Dc9dNM4KUDY)E*lT{m zw}YavWp<=KO(oPG+SD4}INQTfIMS(4~pKIK*NBT)>3{w(2--xT+qe$Ie!eIz#Ks`H zq3(E28TL>W4IaS6+ND0ZDNOZB^FFG)l`H*x;fW5Et#ocVxb$E};NFZKJ=kpq_)hO5 z<{G{}puyaMEs5dojo2Pmj^&G=^kN1)SlAfHtv@e{bGwoOduKbiw&#hirMH|qsLeeob+fQ335ZO)*q3}i^onOpDCu{4tv%W9!ic~s#aP4fRh?w=r=AbUNs#xC!+#q!k z1)c`{dvlX+uSY(u3g!dLLYT?6v;Qm8xyjqpOktMq{y~6WLX28%#ZC+| z7K`CwJbLs=$zU9Q+?+z_EDzZC$tw(|=0VV~r}U^Y0r?mIm>>ly?XVH>byp9=1xk3; zji!DgtZQHo5{rLgGlN0gcR90<%exU4SH<$qAPryY9Sn{X zy);KUJYcIi{c5}t^W~Uaq)D(9{d?LWUY@1rX45`!H&*8@0Xw%dyFEF+$tMk2_NqgV z(Xm>hQ3GS~K_o1({Lq{QtEJzW-qjbubYC64;KgAUzsK^TV#cq2GsyJoi1`e zuQjexOpE`in@9^qMBa=NZ05IJ1Wc^S65(3JS^F=aFeA$vuT@^%HwY zKYFFD1~#v&2tbU0GcBh+0+hzRl=Y6UEMGVLRi9&^SD8ngkVU}%$>Q>jRVApjU3rCL zjMD?Qz1D`Jqx=P#_fd5U4MXjc07EaQV{i z39i2Qjhzg3$FqUgr}`Shu6O*hr*dy%NkDJuNM%V&)B_9ORG&SvNXMJ-m!>S-cu6Ep zh(SbxgT6|g!@a)T9K6GA7Sx4A!_PsKj_yUuEvpbP_oTqt>`JrpZ-%B}{^NS03^)b^ zStUK)Nxjf2W8fagyo1D2G@=VH;@jpzo0TM6P$;%=OrhpQ-l-V0m= zG54vm9>KmNocypr&50) zsWr)%Mt)fn4x~$Orh=a+d{&rlF-(oCQ zdjvR7Wlw?gI0dL4QAAVID{@A(V{}xcm$g&u!)8zQ3Gp(1C5To1YV-Qi_*LUtl-LoE z1pHNcXB8@#*7-;YhXu-$YBLU3W-A}97GP{CPJaHhp0)R|0_|{sw~17D$e=CWwzNo| zUdl^!uTAiEe1R0GSwk+7C=R0$3O1u%Q3VqQ`Z)QLE5nCHhtRcHMACov~W0>Dwm~uDu`DijFw;KNOF_hL& zS!8mbI6?CAfkW(Q_H$KQrEb6dH(_Wej8A9ZLQvQ!RIeX=c=D)Xqb%51h?AS^8yc@b zptLyc2fm`AuG=+tBNADNeFU8LO*#Bqq@Y-Cvy|Q{`dk`U!;E=f9BFJoHngB=7HbXMh)tdK zDCuYL_IGA}4f$?78WQsTRyXmB794bZ`2k!-1B?a{7v&ys|$u6WS6rE|!ws;O$XRulzoG&JhKDDnu;ZyhS?* z#GA#kAIq12@Ub2a+tmMpuTx6CK zy<&cp%FGm4^g!Kw`owHRaX44R@>Sk4;^E$mendFTiRv(sz?hHNSDV0O`;!0LR8(7P zF1raL=bz(_WrfK3SD{Pxwo9T0q5OD9QmjV+C*Ob);sb^|iG%;f6))6iWY3&tY=_H! zul6O8kML7uQs-gB{cPnX@Xt#m0AKI)vH zLrU~zs!#!KwBU7Ok^XHE=2iaA$v`Xs7U`KjB1VrQbyL4~)_T(!T6tIfKc6j?PqBGHx}?!^6kEC*-IHfz>vV2S*+xeVFq{|rjP1V2EB~mFpY3)vCwSlIxAh5m+*g$=8-A2IoIysR-WUU1yO*n+oWk45Xvv>rh+D;I zJy<-E@U0Ol2V@s{wh2t;9);b#i>{Ppfxohz7Nf*l+jSF_NJ%8W8Eb-|d*LQ|zMbKU z%ngG~-YZ4T9}9f-mT$gvPWJ|sAEn3a?mBGDyM_N{d^KI3%NIH!?2VuGhe74IKP^W? zSTQg}`VXr#y6%w2!XQP(Dkm|T8N^LHrp8J z)RujnbY*khO3ruy!eUW@ofsp$Oh5&r$rHs{4zGH)$FA zS(fXj>Ej6oEJIT3sqU^I*QA~%84KxZnl||RY^^ePimOlU4RMh*q~@*i<|M#H`8t83LvybxY2 z?s*gK_s^|3x};`R?-5z?3A+B?(~6Rv^yvg=_Ggea%(IItH*F88F;o`txe>)hc)-2| z72T;hb02!2AMLJy_R76DnuJ=tmrCuhlv{|>TW4mSVZDk{r$S&Unphg2%jEnvdrSfR zDfqs2;rPo;$Ux4`f4#p`8UkFEKOkGAn}w ziTdv~*Qb}sS~AGN6fHQoPkf2(_F2X|8$DXA*2il69M9Zy^MT_tBC*+jvU}DwUPG8H z-SbaGM)Mnj5qbSw!q^f)Bk}clF4SH1O{XjHLhF_y4z>pCF&0c_29$)d6>sLzXVJ09(T|(|-mfMA+%Q(*s&|ixj*Ri<9WuJPL6v?@8ngTDHTqGIH zYnUyNigH=Sz0j|`a^_4OxPH2i&C*)eRgcOBMQ;)#`yX4G-4{yCZVG=-&a3}$Cx&>= zAfKSoBH&kGZVfuGo?Q&n(ZB>8WZml|durCx@jt83iXX=Uc+be3H4qE4Sy5+b5m_zm zM!|>0i>X5PNn|3(UeKr!`-Bu@Q!La2u~x21wU71W8ZD*%-pq3mGFFmMK!EU774m_F z1Lny$a-M*@z8N{$17M34CL%ppT6e%N?u;T*VWp7MD1mrV)q4K7I6y=Pry zcd|+dl=tJHA?37~42_wLR*?1!&s-Ev!bF37&Or4OS!bJ#?8uHAg9y3*=;Sggl0UidA}H9Tw;|9DhUY6)e6 z1z_n{Qz|Cy*rgkkP?X&7|IS+4^i+&0HZ&9V?oMDh6^11Jm!G(a`v;aBaI3TRqvxzz zx!52)TyJ*WQ6Lzp1Z4OJ5)Jg@=J{SoZ^{YcaM!h1+82}2TdWJw{{*TC)1=Du=inyg zDNEmoDh!jZ*#}%FMut9p(kdLgz{5=D1Qp0H&XlPOqRM(^YBRe8Ea|f|Wxz{gInorn z$e%~0i+oH#7NBLS)xJMsUh0J4wE>Ul{S|p9Q~6|a-R7Lqj`wcR%9YZ?dC{&kd`tLg zyUIWO(X*t2@)C3+O#W@Az~E#@)nj&>B>5-5x2NRrNKlQG2cQcJ(FpI?O3|G0m>t3` zKr^I+h(cH|F&p3BW0P;U#TjDB?^#;s-G0oeQe^q92l0j{heHw(^G+>Kb9Rg00n@RT zKEPJ|zlMZ3yv-mq#JnsZtaS_}3HMg(95%Uq(0fh}-POggZ@lLJwb*9u)8k9vxI~P1 zurBX;$FzuQJja1FXX<@Ls;2SP?&zBhn;0!iI5abAxi^ABW0C+&qaBt5!B~XeRq#3V z+G`_$FkUh0HLd8Kf?t|1B^R25M&VBG7n^V{9O)8v5(VkQuNczf+Hz!Bzd=&`ZcEQ$ z-TK`q=ypBYa4ZuoAV@YM!eRIEOSVX1=xpr3f#GY6MU=mvG~Kbeq^U!U?AUkIEhUR1 zRQBsM`n$zLprw?%GT#W8L1c5sPmL7bDd3b0{bIcAuK$pF5;ak+D+z}^&w;a1p2iq_ zxiW5Bdp>QMtnH7jJ-4#yZ8&K=3mK2p-dqF`OGYnQ@6U9~em(`qsDQgYP5&qW0u*_) z?>)Sz6%hmeyO;q>mSFmv;e-hJ`#&68W~ABnfR9x3Wegz(tWwu%OxNAR?2ZQU!Pu(=m8U;2FXC0%7+Px zp5fYlYTua&4WjMr&OEXDDQ@R{wfw_S4b(3o%&ipqi29PvOsJ3#6WN_*zG`&c-WD!x~e0>D?6%Q#OdxQh5@>07ic|A^p5>SbOhSC=s zAVlk|-e|tv64C1&>4@#y=7W_~rH0pS9@j7QdSb%n9Kg5MlKrrF#ULF+>q(g zpq>Zy6hhy79f#?)uE_WXkHV#5c~$mbIA8htgNnJ%SRacDE0&C_{bZ^iRffMD!cG?* zSsvS(gkUHLfo95PqI+}UONuWt-IzbFUvm06lTds$f4z|1_HbACNm1;~KyPjgYizA$ zB*1*x>#*rj_@Rz$Bh;L_=pi2fj+lG zQNjp5b8>rOnW1+M#aCID*p*ohMpVaMC!p+mDfXt9L+QOrj0Z_b!V^C|>@>bzkS1uB zyWJ6!G*Ih&4zu&!X<(x&QXJ;9e>T(5sZsX>iOjZRy6yhgJHxWE#0;F#=g)1xmJz(22?J5 zQNG@J$Xs&vo;o1tdSms!jIn6~-*>8S?kw>alLnY}YzGY`EO*FqKs+w*TNivFza0{4 zWA`M23c^!3(HGBk0W=q@%UJTyigf~E?kwad5vfjD$cqQ#c@D$Ii&7V;*mfNpY#STq z1SrA?WfLB3>WncE_AQi2vcz`|*G}4=C=H=0c4;ni+fPNvz|3rX$f#K~kQ@c0M@%4H z6z>VU=1PWxZ*Bd*%cLOVE)g}uhAL;_s$(<>sSm#b68gCCptWbN7?%HX6JT!!-Uub7X#6`u#MWuN!a<{Lh(VbXF%Ie+E#^aOVxv24{~ zEJz%gG+b4L#SrivCU!arb|4ohlE+c(g+~EHRyya4Xi`9xnEUx7*bQ?lDRaLGjC>>Z z0d3ontG82{oM3cQ)`xC*$Ygn`B&B-c^#>$@H>kXN@+$0z96yn!SCDw?mNLb)6l|Kb zu!#=&)MqB!IMkH$`xv8-h7%c`E-(^n?76Z{4OSc5G)jBfrd1{q zkpW~V-YlTtDJ4OE+O!FKNw6oVoz!>f{j3&{4|I}anJP6N@D9y^DiL9Fa}k(1B6|)Fhlk6oLz%|!%U|G z_AO3*XbMjk1$X0IkpR70n@>}4^d1ve1C4q~dLvkYML=`)8$kN>t`LdjYTaye1`eM& z0>y1r*=DR$z3a?g~pH)IJ@Y<@x%28osb%pI0 zzt44UXM)(U%i<<*?C3TB@P*UV`o=LWz%J5c;(nN#7xfrvm0OIEKIZteamZrmnz^_@`OBoyK{}5u#j>xa3(%!f7+!tNVYZD45 z5wrFOoN`vKNgQMOaWHG98MvQI%);b+F8s1YFp69_!$}}lB+@TLC~6N}&@Wa0S|ee$<@Pw>U|FnlhHDE*WbR1%P-Y zm*6`@opFJ-QK<OQTeez=dD^UuP=}s~u`tK(#YiY0j5e}C)}(fMSHZ$o=)XMc^EvmU!gN;g zObq2gW}!z`>_&-Vu2AE>^>*hSD9kesN^VDZ3I5Z9cBb%i35zIz=9PEiI5fyUB6+SD-b2vW2L;DeY4t{Op0~ad@mh`Fu)#%lAz&kGyr7eX8doJwLE)q zB^~Z~R?`8nn?w069Pv37npGA&P$Qg&K)DwItY`N!$9Lze2VF{x6pCl&zh};-Q}cojmj?G5n+rVluYB=Xu+1 znYE9|9J|Wd>@Az!m5DwYTEWJ+fYp>;)@`J-|xOE_ug;K}{qyu18poODCXGQ`Krb@FWo};TM1}z+4DM-LYrQ zqO8AltUOIGs}Y{q#@{)9@PgSeEt%?5agvzbm1>ZKNQHV87=LmQN(A3D1wj=dxoslo z$0}qU!;vE*$C}6OE{e}r)O@Lf|Ig&o5+TN$4Tp1FZY5$24?55CU2;nCGJ_ECh&QU_I?d^t#xtRIj z#!`cT3`KHmQ)Uw|jLvr-Gp8^(9_F;5iAN9^Sh z$aI)A)g{DAr6ivAtjh42S3G?yoCXf6oUDv5%ro3WCC~-Sm6|DbSa=(5O3;&<*XncP z#m&)Fj|wIARVIW{_&@Cv@*u0+^ZtCjwGSq;X3!-|}-kv!A$(_ZOQS|PQ4<`y9L zTfCDC^3YX?PNy=)>8|A1ng*jRiPTR=EWn$nDc@35oZca1#Q6Z*FLl=*|y zW2}KDRRQ4X|6k=_7n&lb!wPfy z^*lSOl{itG8dLU=c(DXb4LbCg>rE^-DN6UQ(Krubt6}w5iDz2RZFe%)5|wT_1(S<} z;#^}XcGUd&)S>-0r^l+uU-obkce=*Xg-&fpkxW!^xw6pq(3|P~_&jbQs~1f02&xA? z2_*fYJ1`LaVlB!GQ>Rb#$DXD~s6okV(d9G!&k#D3-D|gGdQcGTATGZ{a}MF9JN{#Z zP>nPx=K>1db|KYV<+<1hTG<>KaTjW>_fRK&1`HT5V6LS4{6TpOovkLjEB$dNf^3zL z-7SA}G9AEk_B1&BwZ&%~XX)(nZv&{fmUME@z6OfTXd_r1N}bw`mPZK zclcGSHvTN?<@wZepvr!S8Vb`5z%Pb;en745jD2VhbQdl8U&}dAp zT5@aDD!w`L{CzwBfOm2^7+L00*?2~kCvrdEfryWghzR(c!hDFaI+pVcrKcd~VTEFS zs%jE$d^Ax~(0dq=L)))*Bg3y`<ROLzs(8L+XJ{Fd5a3t zGg)<{|9NE_pwwBA4jB;PU9OKKelQ zy5&hE0=vY1`$w(rH%+!W4QN0Ff_i}h;)uE7n@G^r0?q~uXJc`5<$5^o{O=NqPgRZ{ zz$P$R((Sl2M!us-2)4ISG9l{#BeEA762Kxzus2yI5fIZuO>neyGV2mGMlb`UJ0*aX zOgGQ;*tuq7I^g|-_@3!7z((~{4m+vN8o$(3UQH1Elfz>y#SJ1mBeLeU9yF za4GI*Y7!8m4MxMEd5sxR0CkNN_8u$kdaf|K<$Aq7OXc3+w+ z8`ga?5)ug`J7w2+^CEa_{{}3wO9X+k-=4i_?6=MH7eL{BPoCI?1v`aEQujX@&Idb= z>-!lvSq%3bLSXfcEVLG^b|=eLA>68rAmVdoX=J*{KQ7~bNkLI;nDa_<&ISS|I43^* zUn|@KjHue?pK{btJ{OE`$v@HpN1gq+Jq7X31eS2rw%tQ+%MyX+^p z;`3iK^;4cwjkij$PcnrUiSpuk`2)Z|8}67sDFi}D8YDt+3ewU50RI2~>stb8A>ga3 z&rN+3jZ&`C zGWj9A^F+|h1Okn}Rw@4jO7LCqIizR(j`$l$)aop;Ac((_H475-Aau6Et82*^^t1E< zQ>`67QazoObfw63hP4_n39lkK>eFG%v%x3ENmOOUMZ&k>fL-?@<06&;9m?!^Ct}SF zBM(VDr*U!H5A5xo%K>~axpd7ccyKh^CXv8PbGyEAJNlG2Vtv>LCsw|N- z>KiC`1+Rghy?^0rZEJ&U<8wDfe<|u(<%)fE3P^0-M9)Tu;*9UvnJ?z}4@I;@TtL@y zs`3jJ*IqtmAueDX_mSj0C*^%hY=f$;8Y=RrSh)I715A}2t(vwiv!a0(+Or%UIs?B* zT%#mK?xdtS>s6Iz0;`}t-Fyt1q|IOGh>`SKg)pC|_0ni{IPMo4_~d#}xHFM~JTX9w z+wD1HB(`1pU|@DG@kN#5{hHbsebxW-=cZp}$oFmovc0u-OTOv#Tk=QM?7Anat+{RS zu`S|;ISr|tSBD_1Sj6Eh-#q?6tb%x$?@2SlTN@l+kH4)=>)@#QfD$NpX8b@E z{w*(vrB{Fe1i$e%g$6K;1ViNa!n+)KdrVsWFI_yJ(zvEnr?9lmvK;Epl4sywleEI}IrJ3VO0oS@P9a^s zY8JV6nf^O9Ls|VY@2RP+0!19JZLL5k#B9&FYydF9_B84F?~fq-#pX5Syb@}aRlgNY z(e`xqN*X%Y*j$*2jNSn;B!*7XduU0&Nz5m!#lBzf-~a=#b|}ZGqo@>lsHPC$2_j-m z^@jim^Dq8joEK^8DTi+%l=Ku42*&b|A0EDeXsAZc=8;3Y^d>)cN0Sotec_khJ`W4B z7l$l*M${`DEsLjJitl)UKi+W8`|5U+aA9Yw9|%EXjfZ17p& zs@-zc*J*aDaQ5Gh2Mmz%DNFh_{2!Fnc1-~T*=~szK5OkitYt8Crps;S*Z3M@B zw=H2Y#2vNjW^l~Op&KN1i?m`h??)oQY}GN;XlTsJhe@-b+cpxzXq@&5gRBF}9NRy? z)1{p1x%IPz1_*6n@omI~qLYop7oh*{siK&#XLrPGDLwaP1MxVSBm#W~SMx*W;`P&> z35n_}j3E_}Y!foRrA-(BHR`^XXp{A@7tcyOAj>uP5iWr(9V{|WK?-0gYj4b5-|hic zwICY0O=Txckb2u>Ym(rAT}*g0(|4%NvZF(A^6{7lmPL zYmCN44uWv!X|Rv?fds^DfqJKTKq_RtT#g;{xZ2lhpVH;Xki20mC9(o@^CF;Hne&Y6 z0P0{DOrj3wcP9iOrDwJ`yP+A1(!=(&Wu*#lcvt{AK*qnQ%Lhyn6Cz#Pu%K;H2Ohew zo}W+wc0xInTRIsMpHiW;7|))ozKXp9gKrwjY}xIvrUjY5{lkFN&Mzg231ru@k5Lgw z6xF+JZWMr(vllmZb&L}u(sXe>N(F2UB>vj#ZdDNiMKzDs-lHF=@qM|w_t?MJj zQiJ}WO*DVG<%XrZvsN3fTmlqow)7j2fO#EA1%u_bbn5%8C26Lo^oo1WSvJ=}pQ*EA znkcX@$j9vCRbM~~Riie5fIgq5+q$>1)lCqe`%&B{a3nBrxxZIiGtPf!<#_l$gR8%9 z1t^TgybfCdp&9Aeu#MpL3zO!6G_42g%8_DW9d;7zAZHv{?(8eYpoTXjw3crv*zLEX zUDXo&vmZY+)NhancVKigaFWYY=w4?$ypsa%F4odeo%K!kGED%#urKA&+N0!2n=wGT z818FFDp_+8hSGVFmUqdmCPufr2CE6J-^K39r3J&p}c&#dP=^$ckNAkSSOdO8goJ-;uy%p>R zB|0tvPTp)QI4-%Exs2K*O_C{k8mLQF_IwhfBUVT%0j$b`?6@R}1QOau zAZ#ry@s6M*y13M>Py+%Mp?plFw=BLx3A&@9Rs4JBod@tO2i!IvI>{9z{%-T_{p`RG z?3&N_d~g?3f0vrLL+gq~RZ3n5DpeOXRVw>hiCSZ}p~gtw3v7yI>n$E-6WVWWQf+Tm zMf0VXz@iMG!t?NI35;c_s}R5kD%j~o1uD7w(Zz9Hb!bzRw;v$*M>G)W$AZTv^4iI1 z^EacCiDKpNv=|sLHdP@Mz1xdpA(^BA)1MJ@Y8U)pq025%QvpKorjZD`pET+k#Eslf zF>TBt<^m?HVas2#@t(UjUWkT1WtX3~NgPQZq9?^HL`*B4MqnLM1zZ%fe3@swR%|Q^ zi5Z{sf*g+m@1Tvq4;C$MSGHtSpYGuuu^E2U`)QiKh53Bqrwjr~+y^o>g3{D4*BPD8 zosh+z)3QKL_fDp-OQ^)b$Se}{(U6$tY9bV`>U7_}9FIG??T<9)?gMRS7H$J^B^t*? zVb76qH5nVyj8YYSbaBBXA5ooON_pjIU?5lQ`o5dK=dniM8%Nm}u(jbNbyldU`^ay~40zwRQ(n}H$66 zMy1od3U7|GSQ%4ao)yX)q8v_9B2BK_bIhJtuVk3ZAeE};KyYV}GMoAm-p3XfT6(LG zx;#{g0EfL^!S^3=B`yU37R7anx-{y6s0m;WSwtrIk;Nha%&!#3$%!##8P#$+_kcj0 z?)A_c1c&|@{E~}3Jgn9dMl%LaDn*e6B{6e=mKKwXSl=V6s1G)C*~bPbQ05Y@mf1Q} z#miM?6{D^q+t|Qu7-VxcCwJ2v+EU@#e7Ft3FoazDTY{_Gvn%C+lo&diAahd`J@_PD zic`@X8SDIleWaM8Vo6{6MNyTB?MYJ4Ooku0sVnmSb~#?xF3|14puf5IWS@O@uF;j3 z4AmZAOoK^*12s`Izctm#?6Of+e@>%m4-2?fRP@rtM$T>y0(Rl2s|3)u8xb;N`p2x? zE-!=^89U}@B?qI@7USrfmDBuJaxuZBcL_BB8i4wAl#dYFz;4_UHxDLz1+MYA3k{8RLj*W2hKa2NiaWeZ=ymX!a&=ua*z2jI8v}U8Ke#Z+e7f0k zG~f5&qJdb*vSO`HQ3t-RLCHH=#8dJlGG0;mTLoL55%y)M$Tz;$V_PB0DQC%{8x=pQ zhHxu%F}*8wP@-oX5^En;t=GTnW4U^!AH?$I9I?;YW+pnSq-W&0iW+GYH~$#x64F z17(e}!-DZgt2wHK>*S0PA^;+W<(CW&Z;dlkV5`nossoH1D9N~b3M%IH8{4xF1*5_b z0)>c@LB~~m#7;^UOku3jso~GFVY(R3>Lh-66o$P z6^P|0GZG3Jar>@Mb77|80!_DhL!*Z2PLmj+hy1rDWu2t_?e6^iGksFVPOKJS8G7tM znl%Kl!u@xtT^nOb{1OQeIZxHN1*591@kU!Qt}b`Og$+0W`()KmG!Axl_lW^@;x^lS zY+`Sbwifot@4(Gsn&9vS=Az8tQs3Hzb!|)x>EPd*i&C9<;rcvP_Ca-U*br|Es1|&g zKXhpT2X`&?h>@d-?2}ENZ_I=hKmJD1JfR4ZdDT}sW@2mexKIx%KfLZ+Kls0_nqfz0 zpK<4Mt9~fX0w(mgSX-V33jwkJ4+jGFn9xQ;wCq|%MbbmH`8*kbd0_@TxgM|C+BPB% zO@o7WPdNL1XfqLq@6Nq1!Tqd3;iJT)6~B@&QNkWsF#MD_lc{oONM0^o=g_y>j4Y`* z9pV4aVD>Ch=Ay14h1W!b$ko_cdABW?P8e+E7m@Ic9&sGk{?>mOmDEvBL&01VUg5;c z4Ld@-eB=JuIrC`^O7g5T>TKMvSN!ZStuYrE2L$;i_C~E@7Mwzb9@J2)W0hUzoXTzX zrw=%jUM+C&(O;r0uwi{qVUTJquiB zn~acf+v)XD_3EOY92D6uZaxW65m8AZCV#V&RL~iQ3^Ix!@Ql`U-SIP=@GsD~l*8LLhBhv3c?1I6&a%j)Ud69p~b{#a=-dybETGBVys`U&>@O zZZjRE-^Z7Wzy0J62Fzy?|521JE^oOCMQ4Zf9M8kN^eEb0P9nEO3mns?q! z?qk5|nGFvnMWt|?LXS>RfrLTkz;XahYd~G`OQ$h+NNMC`at3%>qU-o1HIyq;x-Og@1K&F;c;}@?fEkYoCRz(zl`qsWdSY2bR zLWeD_{Tfu>+Ik z`oE&hu}dSUtE?r8-x)q(aT`mCNNk4Ar&)a@d;nd?Kv8>W+8W3PSLe9;@4QSg&ujZO zGaV^{&?mVWzhxfUm}RaE;5(p%3e^gWQWXP0i@Y~v z>}w2`FzWPX;oGAy3s+7FUV>k%1a~Y!Bxn~vUQ>r+qhI+8n;|v%V~-7BlL3He zsz30RM7PC`Ghtp1Sl5rd+qpMI3}s>fs->jaVl`@x~Y{|QP=fW0UJHtfy*9xb{__HoBtH;sRvRnAykE3Xma#wldDSy1m12cH< z5e+oF^WOn-v5X%<7#FAGETy=W?#`tKz+)ro|8h9^Jt#JH!>rQS5A|$gtZr}3R%H_W zh^c9^&oYx4YY7+;h{8-^Rx^dY>gR+TtRyTl6jh$VtGuTiN=dUmOqtlXZjKch?Ld#mw*TfbO;%GWVU z0Fb+u0f<_;@HHs4R@hT1JjbX$yy$;DbOo_k8JwLD5mQv_Y#t@HHYkPRyR33JTQLA_ zxLR*bZfB}pa+Zrdg0AjwKht2^bR8odg@jOsHjITx^4?_cGVaZRip_ISDt3Qa#!peH zLR!G(&XLKE6yJk`U_zg$*6pc^b=NtB?fH zd37>BC;+TKNRo;8LzT_}+{b0e03&*Bl3vv5EC@V+D%fDgDg}Wi!{HA_0`5xhiS(xb zv3pi#JZSbqh7wbL$3mB*FV*qVVcFn=F)3{5NOqOa18IQ7-4W1*iJgsAI_X|z6dcgk zSc)a2-&HBkChB?kbN{l*1Zb11VtApo&Fz8)*6K2!XIDtFfcd@=wpSCdOdZdt0F#KLJoUD!76E1%y4hjv>h^c{)OLgfPS?}U+6p>P*iN7eeUa)AedL6a`3X#mb;#*Fs@-(R5?KkCP30Kc!jB;<^bVc{D_dkuhPPmQr} zH%>m;rM&sJGA0 z&Ay`yP$Yo-0_?}MzbK<^^9iyunQHjf{CabV#CpWI?!RtuGh*TQA2$n<_u_|o`i|!~ z0fl$)2xu&kHVn>%&k7ZIxacZ!1xz-S*x8cLL=JfQlOTy(4vwbOvQSat(hN84Jdkv4 zEXgo0dv$bc1Ak*?RHk3ll5jL6Jn#TW#!{6o$;OZ9M{pFbBO&T z;SHna4=NP*w)|q~-73dCgU17IZL-f^lbQVr6AN^`%_z7t~497nS4RmrzVF zPQfsak~O)NhTA2Tam?DNoO^qkk>IOF*NfI8A@t&g#C!#DO{D{D^zQrzq#-76;86Z) z9cQ^R=J&s8iQJd*NqV&`gf_UOPLqX+mLc*JqXi5lp|-^5JeV5dlB_m(snkNhutsS> zS%`L=c*;Eeu>?DRg4orpkREPi8X-|wG9Dq;X63waWh6T_T6)-lCxf!#$r(7LBU_NHKax`zM?vN@Y$mh-OURUA%gyR^n*Ym_ywXhXZ#wJf0 zAw3tiSd4pQ+>TpSABfo&9#U}ag{80V{+e0KL2U8vIGA7>+(-wal8mRpdZ>2+2(P-c zQj|RO*CPeRCqyJ!xrNG`sG&8Mp2~bUoR0qTh6*@e2Ey z9lGCq#@MxFt#@``{L{ENN7B2I-*Qc~bRj=|D{S=?=w+eQH@~=an^NlA-N&c|)*EPx zM0Z2~X8vuVI&&f6+hp0e4bK|wl?%D~WB{As( zExbP|U+EtiHFhLxs#cE5QzxyR!G*18R@J>_nM66B(?$2OA?coKD1oE}>xI?^8IIT@0Uo?I878x)2tA;RFj z>j8)Z6wbCE)o4a|<--vsXXaDHfk|$-3_Fo0eLAVY01#q-iga!TC{<|ce=N#8;w!i^ zQ3W+F5NA6`K9aNm-JoNw1UVOm~w~5dd z1FQ07u4R0vS;~RTM?v<;nwtYv!DKQ9p7qg#sn{}bn^0yx$Y*JdZIcYJ>~C%EJwE-X zvo>bM$+ceSJV{MPpL{o{GOlU87BA=q{ny6gT&eoso4QWRc>L?KY zP-`Et$Cfa5lI5~aX`b}Z$dAsI{@7TnNTtAXAkuA7{A2nT;HzdnFPGXf$oFIy}BO@3=P6Ej>9 z_=#trw+?@tK1}`-yn_eQ;Dejqaj_=73pa%zSTwh=s*{$CB^A+0&vj@N<%LMPMxlJa zEeDPNg@FRyOl$?^{zsOx|2xNkA8w}>gk_krP((ueLzID?hmX@VEas9OI};de5rX@8^Cjk?wv`{>VvPZ$4voY)jBoQQdPkKM4HPO?@Gubd8H$;XM(Si zTuJ@FwlW`IKca~L433*F9wHRmA!gwqW&Ulb^=nyJFOWIB)Q$Yh1@7HQV<00l7Rjq{ zT{>SHeOznRT{?MU*Y$cEyd1zvfH-dV4iK%z-UFav-~ABvNo~JF4qS+6%`@8doJzY` zWt>C^&nJK;934n`!WmhK{LE7zAgFPVtM>J>Bq=oQZ2E7KR4poEplScyKZ_WZN_h8MVIl0eZ=5!Y)H?JFz6d!Z#PyD_u;6Xs>#sjlj0V z1o0v}kv%X1F9IGiPs1jtCkv8N4#nnyA3l-@ZtAy@^lB8Lt)hv0XUF0Z-{3pvFi!9n zRs5qrPJ*C&UtI-WF>&qURH>RMm+3c_CowaRH#2-PT&^Hm^U%wjn$^YpM`f)mD(@#5S0%n?J7NWH z4h`O@f;dU;RL)c>O8ZJl@kyC739dgi!DM)#4aUOeemZQ0>04kDFkU)2FQ(SfzOskU z;CAuzO8imBX~hgAL0*_Hyv0jvH?(O$$iy$g&b!jSdVuRQZINJqkx4XE9M!kAzWqILwdL>P!vOYu%Dzdy3@+V|oiXYmo{)gPYoUWOfXx%>+$}fp` zoS?B2G}u=)=3B=E<78VFj_p)vZMtbk`d7o7yZrHy*N_QPm@YzEOFhs?9fyRg^PKuH zoJ?21y{^gIiVfzjLp8Ufl!kgWBF3pf7+>s<#&URCY=j3w_qWh&wX2Z&ntalm6!lrs zr}e7a3KH?Pw74;Cw;$l}oSs*s`ywkB7;0o7O|N&0)Vypgf$`~A)^N=b2_m?MXCVx# z4P#(7HT^`?E3{-O)Vk)EFmwbV-qlPAqWHjzWdMBhmC-~BrgRly$66TxaF367k+h>k zDAgDkrpkJ;L=n0`6scStY%r_}e^S-*eg^#hH9#MGkOg;?q3nu7TMNib_#{V5si?{9 z`0&WuXMgzaV)}O{&_FnqGAG5x?MtF2rNX?n?bacRGn*T*cKJ|)YFPeq>$+I`IlQ-v zi8(}^7c34-T*PW1RVTDzpabp{2g>X}X)SUrhKE=jMLYDDAR#2*Q8&=Bxah5|TDLU@ zsGOEhaMt!>wB~iM9-4z?X~u~rRv7ISkk&P?x4tZbjs{Bz6AvfQDe)~3@M zk-l&t)&!T1^9CLm$A;z7-p)`^_3!RHUda%vM^DuMR$dHs|~&;9x7 z@I%`Er!mf>JH3FFQdrZWvZ6P9>RS<^=_S;tAT)3#XO*ODyAQp6dZ!u;@?GeoKLlW! z-XHUbhR3q~4~nVX*C?e#ok0Yk_S2*nlPNfi3wELlZOE*QCebssdtO7{+h`LAw|~8f zbq`|6P)w{nCZ%wmpOJwR_|H9nZ1%EuQDjr`5kXd+H#m#|??n$kl6iZpRgM)aba zmbInxw{^fW&{X?_$_2<-;vi_PlcmWAs5_si@*;L=zGoMr)L%rTZ?oPlKfYgG@JmrT zfdrEH%99%@YSttBo$Y3d9fa0APaEb}NWc`UQoPDE$~g_|pqdFP7z(5G_`0dx68VwS zFBa1dreXuiRdyX8f4DvGNUa0Q_fQ>$NXGntDS?;7aUhFEnWl{FTb_k)ENo}%h{IC{ zfqmH?h^U?#K(rrV?E8p-whw%lhMkpjc^?*o?xkx5Yj+nmZiyR!>@0`47>~%8idRR9 zCtQb772jrvL){GP}7riOYu*Igc7N<;Ju?L|zxR7H9=M zaOe|^m|gy`o8`~jD1RnOd>iBBz9mVqYR*v+2*|fr>nmTKi9k+_uDvff|Eq>MT zHJ%n5QY>YoC&!D0IN+y%Z#sU^0NaGn945cIbMmLb+WO zeF?MCViENA1`is=Q!5kG4hBZ%5+GY+$d@AxYmn;2D*js-?ct-TINojQ^`DJHhN%pkA2Uu^9K||qcRWs_qF~w7?1QGx zls6?lh<==x>%#koo&%!`rV!dk#Ke6laY#&CqTa_yh{KQ{f=+3O>0`%WP02p`i;y)W zL&osAQS(Par1cUl!nN?J1o&-w_aI!KS6X$Y%qXE?+Z;fMw}1Fq_q3wnl~B61`Yl9e zu*HS%t8YHt9{eFBF)RGIwR5;OVRrHdyJ?6103^u00>=VLfkzne#)(E>5hfc{y?I-v zc}T`TDGJA<{N8Y6hqri6o>t6j8gpFor!N$2?n@R5OA9Nr6kN65 zWoC{YZi5`iPiER%={X_4qV&)i?G5DM3C`K`cy~%+Ab0l*uI^Cdv;^#wuRMm71%H@! zvxZVfG63Gl$1836?*yb-Y-q4awkEK_E#@wqf)WwMyJKN=J{Ti;y*6W#S>*H|Om%FJ)I=pgyaR}XM)TMazDT+BX<(``Y(!7?ehrAXL3W?4)%aOem2=;0EQYX zjxLPQo#nxvi1pwx4fF84v@tUd8J}x&hv|~P_g&jI)FW*+P`xsj;9`COJj~(ibP`fr zOsneqai1%-X7h=E(}5~{k^(-O5HpC*v(dbJz>qpirO$0&cyBO?9T5NMQLDaQc^~rD z75N+|;xrrS^4OQ{s4(S1qF3VRl&_E$#8f%v>qv7_Au`F5bHh)#Q1*^F6F;Hefa+@pLbbS!6Gq}pCW8qtmq|pymHoNM9)3Zpdfd)vfCq^WfMj6e{Zny zRQ8G-R9OI`@sk8d>!!qUb-b7;)bRMH31n4_ILW(zb+ zTNc4!)z0<(8gNB%>raE@j{O8j<>CVXAJYxbhD1#|{aYh=iKD%LgF(Q9X6!vUcsIZ4}fRS>F<4QoWXd2ZTe2@qwW$SrMlO==5buW;h?w zq;sW|K^e%Jp0)diDg-&$fsN!78R;Ru1#)q&Qw>_2qyiCBZaj`=u+{y$gJB=dn{Zh9 z?YgCQXGn0P-xKSWDdu(UWX-+iqp9iq4YYsPWJE`vuipZ(cDqIwZB;&sSJlNkQID(GMy0 z^2}=ed17YEDGaU%PAoY7>`PiCzDdT9*}`R1PXgPTEM3=+xPH50LcIQAMRrJO(ID1B zP6}Ow?LqtDNc>>ah;`r4;yg-OQorHB$1Lcv?#+t%j_U_WBuu&~_^+4BRu9)Y(k`C;D6URvw8Gn&)QThxJ_&TVfOD9 zb{Bnp93Kyc=K~G#OfhRrZx{zhEaSf~Um9cCOKqi4i0O~X$Lf1h!?cDiEvQT%n|xdn zmq^?&?0JwB@#-DEk0*}OZMPM)8nv%M*B}q|(t}t|Q3O*{Np29ztR`pRxgEL1$Di?o z?X{Mdxc5T^b$A`dl&fR*D5`2UVwXkPPhkW@4R3VIs<#q@J>bdZBkwKc13Gxg#tHT9 z>Z`xjcV-A1lE?Z@M6@a4unDf%2Z86UkD(fGut9)FOP9+NFu{A4^7QcnJyMroF&y(ePc^W_0eY9#+UZ;n)ShWZ?qd#2_N3 zJFvP{Cn($(T1vaI&y?s_qIYA~kED6h>QB{mg&cw7F0u7`?73mpJ9>@hBw>CKQK=h_ z=XjR^!y%rxCdds%DFy{JBu&`39_dj#>^Aaah6CYV7$f_H59vgt6l~FZ%8lgXYE*p{ z+)eTl>4-2adc*Rvxb)7T%idxD{7+#SRqn1DgL!>JfEU5Bo2>k7> z&b0=dxVFbCr;QM8CyWUzw)4MWTUo90igmCp`0>@}!YikFoi?aU+DUo7;g&=tY5*@q zozhAoxK%4aso=56ijlBDjHt|avIS%ar~$xG=M%t`5?&oclLEM(t11icqc|EnWq6C& z$n6aXfq%id6BcmE=YpE0c34<*Em6e6RW4wRMXUY`PMY2e0uPlKumkEdbA684YZD~F z8&t3thQX%94;nCu;9qtoRdE=aYvEwNgBi1CPV(FnnMtDMpU!3H0!HoJ=p9=|eI6Om zmsx7Yb}2sk!r0eld=pSTkvx~U2Nji33jPaBwEZrCX&k9OZEb~Q&%2cSu7BUG;-zda zoqH(m+Ctv-Ke)`$lXv;wt*-|)WTv_#$5GR_xdknSPl69NN-pO~elMD26O^h3auMnG z70WY-*TTq-%4(AuY5p6_J>z)D;*d|^#oo$?HIiE+9K20EO4+VMLK6@JdJ}Q9iV}+) zgko$US2oPV0g)a4nGH*NCh$QdcP_rP7171Tb!!>}J|}_d-=d3Ci&%e&D2*hv9YAQ~ zNHz(^*xG4>yY3 zBM;L{EG@g#$I0Y*`+j;210O&%91qGBr;RecZ5^!SM&dM*_pL1Q)T`?UQy>6M>zih11TX9-PL1*P zf3(6mQzdoY0o{($)V5l@+QnoMGuUA1nH9a zHII1z_gAnI&)~_cVKo%cw-iPC69yUBDe8rk%6 z1Q{s66X8*TBwbuCchkxnt?#X&XG-$VT8>7iiVb3E16-Ltzpf!M{KZ}l)8#F|UlcgK zKfRq(70jnpy4tfQD9b-{+wH_jrg~heF~bM-kV=Y_SbV5}eFI(8D%JAFQtj$m?_}y0 z)09jxQ0js?l7TcjJXu?oCAvts=o1!HOZORK3HIXB{vSr85kCjM;P@9f7W&xc2&y4X zo_Ns(t#8v6SizUnXzAU%gu?2b@2zV;a{k6E3WtwUgQ8c+7f~{5Y>l%>6VOnJ3cy@r z6yX^LYLaXnN_*+fZ-hp_W6W^>7apiNZnnWHl!LQ{wKrv>I0|rEME35B2e+*|K*xnS zt0D9%k)Z|U`JrN%8@gMDtD!wNk1qA*biA*xmTf#Am?9JudDPNskR*58OvE>bZ1g*^ zvrsf9l6X9`{OO)oLfW7!x zv4bQcY4SJ$!rSj$z^*1-4bQheX8!-CDGr;$k5>3i`PJn2e{citZy9p{K*O>U@A%`` zM?#-;d&bti1%^fBM}^aN{oZ;h4dKZ1*GuUv}NV&{E2rC9~@|&NdW$br&28 zo>nz#)nU9N58UH=tq2lAW9@m|6%31Ke7kOF*reC`&4)u$!Wx07ASnYc7s1&$vwDhW zJZhf0Bx6?9a!?VHrCy+iiy_m~hbg_n*Uwl0V-aaX*x#g(!$)kY=q&Wv=ib{jL2pS~ zUF|*I@&dfSN*$1MNzj6ILYDvG6hp@;az%^eDJU%oXfs8|Tq}RR{Qae*e8cUXcz65m zYn5M{)9K?lox>ZU$nezYizAVzetJgoK^)m63}FXL9{OF||Gjl1)pJHSu60|-+=8mQ z*f5M5#0_X2G^>=PMUR^$iaRxB2U8iGaO z2^(pRcXKPM`?Z9M<)>I+%mSN^+LGHEtBTuHe*D~${_(vjLX9i;;uf1*WB%i|!P^}- ztfSQ(e0;LJysWWuylI-Ld}u_h(q;+PM#t;m5*BCM&3uHxcL>}^ol57};g*u@P~aKS zI!FaChzjM#x*2s5k&+*Jz@9(dfjv$z`%dK;M!AVf@PW8qwjR@{3eV;nL?6K@^3MHf zz966wNF0jEMLeg;s;3j(h3YirCld)2L>!DzCzkweikZxudE-ieFIO?Mh$EPg&BnhX z$;~<_*ZK%4O*c)7_7|#Z{ArdF(A!>T`1(7l8RYb33R2yzz0iSn5S`aU>r!V!cI)`e$4FKFJd$yXUEa#c z62pHT)11|BB$@8fT&GZg016ZZm{Boye$X9oFOW9Jy5jl1Icfz)}K$PEX z@``LXo%j3X2+hjG0%fY>Y+Mzk$wE<^GWIBl*;FG8K^8f z)p|pdQ2SS!pO4#p*+Oi}z|oE9vd6i<&Qi0>izsi}tOE&Z#l{M1P8#dAPjiOCkJWq@ zmf%Bf(0^_)C4ln1=AJW?&@{GNOJ5WqOyD2lzQZ>FOv)%>&z%-|Uuo3~&rEc7MDL3V z7dGF_XNu_}tDlUasM{MdFWAn&FOo*dYG zQjs^CO+M-13_mU4fbwkPr9Z5%l=NV9cp@rRVeZfI}=M! ziN_+kK2H9KR&RwmaZuf7^w3}sVw9gvmJVph zTM*trw}7P~suvaGm_uW-7!UTpzLxGl1(|s95Yf$mcH77l9=SbY{(O;BHWgh# zL7m|7xK&yN-}gLYnu)+x>&et4m(ab|cjwEzkFUZaGCoKbKzdFy)Y2pJP~<5TKpfUl z`Xgeu@a=pT@nihRPE|~_NZ)9ibPGbh3{xcxJA?c?6w}jr^OZ&T>ItiJ5L%Nj$(D{a z)ucWq-FqntP3X><0hUCaU{u1v79}Fm$;v?=<~4Xt^$>MkhKlZqP6A6wdW=r42Xl{E zRSd=sjg9I`e|Ys?VT&<%J(%0-^G8O&Nc%d~a_2gepiBBl6fwp&_FQNevDtnv>jbt= z+K{JGQSpb{h!ft{ntA@$^h|1Xb0D;#;tiY)*H!^rqm*F&mV0K`|>5b=Tb4%tHUROWHj!(qqiJ z-D>oD{|@LQVsm;=AeI7Uj&B^|!+A&c1*B?ezA(33zlgHE){bw7L!8&J4I4ydYr&lmuo*&Bs2gm`Ll7W_BRw%m0sffPTD;= zm&6;bQxqYAaM7!Hi{}?jrsy5yQ6Riymq=+sWb|N;t@UKMoO%IS{Z$T5<2S7CX}KAs z`LRgJ?sZl6CSRzYkD#Bwf|AE6qULpb`7Gzy7RE zy>&L`%3d4>J;Rp_UCGD;C5A#iXa~QTjcZ|c$ly)K4EUYW2IV6s4EofbSIfHfu~4|% zgK%lNJmft~l0j74TNi8;4CSa5+*OzpGt5G*ZkIJBH*otK<+2~eASu#1b z)$O2Pv5#7rUNV91vY#$EZ~{G)FD&GmQ=1R6s$jOCZm%rZF~TP@aw$W~nMSfd=FK0` zos#>R0n|3u9x#GkObYo8*`h!N^MP6C9fRQr z9}LS%*r#hqlWNS3`4qC+THh^-HZJ&E0vq`><7FlOFd7^8k^G+-%ui*!?=>P98jH0Q ziK;9IvQvCgi7XJjNU8F#5&shAn_{wbZh|CXABBuwJxGDP&KjO_xajR>m^NF{;)#I8Bp& z0mFkb0yfu&wug`MeO8}?&?ztmIVF$b;w#LjC$=7b zkN;kSbVL2KiayE2OMWtCuAc@MPj~4J+f+ZG)0V20M|UnAqPhnR>8VY1@<${9 zH7XcT_eKtyWhTR z$!Q$o^L4~$1%Ziq_rD1oKC=OIb=yMRVqdK7>ed36P8E8<@w@cy8ybe00l+ao&SeNY zyGb@kks8T=;v8>X#XRVVAp?{=q5HVlqiOHD2t10;o_vEWZv$-=|8N_ih)2lbl5Sx) zFzsgiP`d~XNV`ohdC21EQ?{RSc_5LY{9S1`yRR`%&p|rf{B~1jACd>>YCQc9N-4N@f{vd zDcseG#n~63bQ*`k24}D0i$7;Tka?DctgqX5ueqjVtZW7Riq}9l@JEjEyr-)>tn96p z)oxcv$%fRoign42|^Y5##oRCCnda1$Lf6DiWT8O`UUV?vm%q`w` zIMuCx)F&fGNKA~;Jhe_*`qjw$YAzrMiTxT^R7AvRAnJb`DNtud-^mR?L2*E6xEM6x z_U(g^$~WEyhVpwtsY5At&1&5Cy}n4Zi_D-zAd!;n(Y$t#{Cs#7U|DN zc>`Bry@#Za6+m)_8__<_ipCIEY3^QR8|=n~!_rV~o=o(*NGwj`O$>vb^E!aYc}8RR zqELKBy4=u`X>XtPbp(mdEqU#cCfhL{ZIWKb!6(1Iz~CNXUP)@Q$1w&goNDNnTRU*)0* zv#K&YjCZL5o%_ySu&HGVaRg-zrdWSLGwcW6hvCDhEFng%b9p)f*V z>a(rx&9Vhd3IdL>w!hQ<*DZw_)S9^-h(GEka&FNOP9ISzXDFxxH=bA97oYW16N+aQ zncS+C{bv93Vb64k+W|1-2K4meJg#7Yk<+y2*I{h-MBrqr?-t@O2{k#IA^yd%^?nQ8 zvWF$^=!rk=9`!f>G}&8lcfo%98)&7g@mrX6!y}G?KCx$+5?g31!!zMsk4>hU~-`w4p<8Kd?vt` zw}nHRNe6cNyoS?!E-DHs9D|;J73pr`A)aij&=iE3_~woXz&1<60sCy4eo5gHgqC6r zNTJ(dS>vN!oi4ZNFS9e4Q~8CbJ!HcuRaRrZL}uYIUQr0%YxX42LW{q?oXYGU*W&)!K=;FA&Y7!+V}g~2febi`}gP}Z~U{I;>tQmCfA<^kV` z4!jm~qO}Zt@)7G1LS2_s@6OO!7SsAUJ7zwY+nm-cR5!!4I~$4?@2Vs^!{J;CQ0$I= zDJ|0gBhGMGr)D5?Ic8T7c7<^$n;4p*t&y1aGxhz5r;{T0P6oQgk_bcn5g=jtn&AOEYDB@5QKgMeF{ z>>@y0NkX5~gI-!*a$To`@E4|SthRsM_ivzQI=~9Jc9S8Sz_HFZS7?I4KQV;9G_`MJ z+pdCwQAI!odXt~s`2N8wR6XTwS#6hb=|3XIn~rn{k&nJsbS+-kosSajnu<_HlAxfd z1!G$0bRpmYis5<`W^udE7Ii?gHty}IS(XucxD^6JBU=c|N}mKI$pALWNZYAlqtTfb zS}_jJcWHJs6w_L@pzNg(LatAgRCe$3bp|NQr#qf>7j}>PNM&yFWH<2x>X56Dl>a3!pyp^i0xZGqJ>n7db4CE4v3EuTqz{La+)d}k|RDJ9T(#Jm*a z8oGb)%F5E)z!3V^37Fc=Q)qbCq}UJXbvV(nIEE-FAhzDo;v5wTWi3nca667LmfnN1 zHnwMT2hGY=d=~>G<32v-DM9Z`s|ad|U+y4zjmQCSf44W9aN0p@9sgX2+Ig+yfzBUj?E5kjo&YPACRV+hr8O^GxOF1@ z5mAQdNhv(K_VXsOzc9WS8o+vUtBQ}k{nPbXt;nuhLcinKN6L+yO%@5YFp}0XaoW1j@l>q9&??^m9kg`QHyK~xqY1reeHHg#3n z9Dvhx(A{-K|yAAg}E;OFUf~HfsWh0$yR36;Wq|AL*qK=04WZyQjw2XT( zZQog{rAZ&9I)2Fk>%(V<;nG@{P9UMW$x%|9@bSN(@i(X(&aBF;uPll7>npL6WniE> zB=`UXAq6T6)9~dGCMm{ODrl=z?awilKM|9YdI=um0?*M#W1F5MM!w}Dv5pX4s0E4P zf(f{W+RP%LgUYKMZ|Nrj+=zR$(%8?fKm|&PjUHN)?S^K^L=G1U+!cwyz2I)zSb{HL zAz--l6g#`hx!}<15~{B+-$r^~T%xSY4mYg<<$o?B_c0>*=-#|lq%aX< zs@Vt2-Qd?RH)M&Tubg)a5ao?BSw>J;(H9 zduUS18+X@ES$$@}FFfBX!4IlZ5%F?yEUi?gf&ec-r)n7T5aBq*HGy|5!p&?C-+P9G z-U^Vj$tez`NJxsqK4JdO-IejGsl1dz*}Bym$SZ>hh=uL3mjB!(V%qZg^Cp`UoNnA2Ab0Fj%jIYaqJIR6a+TF#<+qsIky?fqR zA#WNV|LeK(GuOFvfAd`>l#hV*4J{pvpu)*Z^u(Z(j~AF}8g4ot%L~S-`x;6Lm7vrF zC`VGOYAP^=>y~_YxkUGblT~V^ujnSw0z?_!m4#J38Lm7iNs(g`Sibq2JaQx{RRQAQ_+7zAoz0-Rr`O`V2a@APWEEchlm(1gOsaI0tq__~p#YmhM?a2%j{5-R<4i z$3cl6DO5&tn>9U-4>-9FieBkk3yYlhwf8v&=y10zCp*%d!W?|v@wAN73EmB5jM5Q%G2-!}kmyT~5{P z;H4})n9zbB#t-M2#;b4El(vM73ffZ?FaAlY+k0%KT11v**G)(;5tQ<)Bd!qtt?n9i zn;9!IqMSM3DuGo>l1x#mev@_loc~h|%hJ3yo)sy5P zB!#b_C=564ZkBIOWgYy_=ji$*L9^eCL}WLVbOP?$x_~VHa}yCkmB|!pq7}_fD<1#x z(xhpW(99EJO;_9i!4aS800NbFsy%9MmW&uF&w6X@Q0(D;C7$&K!in=@JXrPRM0c21*=zTWg==9Mb@Ivmf zZkFTOrsAIrxcmsE=^<;GTQ<1_Z#|#P2&wi9xQaDPQmK(O44r@T@O1)bWxGWVtI%0biVyM0E=tM!UTI; zalGl(xyHWDyEK2r+ED-Ji4P+iH61if6CwXAv@5(kY^So-jyxMgIMoDu#-rNLw&XV9 zVTYgxK$_CF@j0;)Q8a)5_G*%!J^N>OkDfe)?1YsjQqs$43eQWt+kB8 zStCKb;edrRi4Rg&2}5dJqX5?g4{GOR;EAQJRzc9;6q*O=V$fr z+PlGalTkr!rptvRWjX~>GbY3TP_5U+F>F&F3OU3;kzeE#a~J||3sc+auU9d#Ggns_ z4Mli`DhTq^Btt{=1E8uc)JFL1GZhK9rK6zfhix@O@p2nEnQQo(QRkyGeblX&x5PCR zUXZ<{y5%;M-xH`K!u4(xfM9>?+h5w@o;0ku_q{uR@Pe#+E-FmaT37jFuRo(HbB9HzYx<(wd{`tWf@$@=Z@-s#;=Yz#puxdjXrG? zAwM*T%V!lzHOf&nkz(?iFfhLs_~p6vfk%gnEM|_^WemF>r&jnF2R?{f>10m`@u8Ue zTh6b}{8iEbk2q^}Qh>f-o!8U|9$dS09HoR%wo;4|t?Wk$tnBMN?FI=6+0Nd__9R4g zOjk6c<`1gt!Y)bhg1lnyW|)zC^!B4Rj)$PoSZ!`N(CqbmJFdOtAbQ1$TcWCF^b{$< zBSe@`XXxpb1);6^6QD_i|5K-A0h@XaFex%FBz)o+tyF2qy^u?O89h_rX51_Q00WbS zeI-hFT#5y}#1pk80h2d*5>8aSrGtNYvylCKi^!XqZ-V}p_H?6zM&dF#@5KO+qg=m< z0UbjeVLJ%W?-y!_K)efcq|q>S8ffSIP#y*(1L^I=`V5sZnsx%OGdK)qd9gjUqw#UQ zY?FX&@1^nx`xd&R)JXd~xvA|jmCJWi{&Z%Waw)FaAHP9bmT0^)WmN~VPVc8+AQd?x zR4~!6i~{uOWbA4Wdf);%{xG?M%pniKe1EdEHsqb`0<%>@wQc+5t%vw;ih3C#N+|{- z?gUD4xDyd^E#1xE+;ct2@V&O_y+S91Y)$?;zS9>MgzfEcNaRH=W}5&FWd}J=riRNT zof)D+E)=Zv*{LBnSW|bgrTP}9Qa0Ez-%&@N`K5;hn<{DQab(EPJjIpjnK*Wbs(_RU zLZ&I}mhh0koqv+K5*a>5=Y9(YNxGk2%!ITt4WC1D){eQHK;-8@00CD%9ltcC7+2xg z>(0Tc+>@K87_xyfSxV{1+Ab?xlpLyWJGPHRt^fcF)dd$20h0l22mk;>3V2#P|C|Q$ zG&Q)dY|?;nwvw3&iUr%?;`EDk!1Eb@SURrHR!|!VNdu!RxQ2o{CFh0-%M>!Lsi0AS zZuP2mApDcP$N$$VbNd)KXiW+i?RFnW9W5#CPQ>I0nF4P$!`3D@9QK_op0f%op$&fR zLd)a@4Dj|_7s_ywAFHQ@M9zfRC}kqv63v^`xtE7JFJra`fk^nls6?i%gYp4Se&HzV95e8a^I!E#B zxC6qv9PkG$DA44YT0UCwbg5n|jxZfQ$HiteT@7?IR$DlG4USp^Ga3smG{RkU!jp8X z?uxWa17r2M^HT3HSJr8&alP5BzE4>|;iUb=n~BTO{Zp2kAkziux+0L{+<-(IR} z|7NM7^%53Z%6UuDyNR)ukMz_#u;ADv${fry7J9z?X6YsvuQ$rKMB9lk*HDh?4oLCg z8&kQgbd)V948O0MM=Tib!?`HWp%+oWnN>pyT=3F}sk02Hl;vcr#47kg05 zS{CKav$U%rl&DbS~$k1_4YD-#HlEX(dOXiNYN+1sVu${4Li!y z=s3MGIha07p3puk1EY~?{lL3#3+ z5_nw8-5(ff+A<;n#&x^jk%U!`T#R>6m_DkKa!kIEw3r+&06r9Yx!uri5bbzD`(;qr_xu29ylJZ^ z7*yPoA|6b$TLBNc0)zR?b$w?(45i57&&2Jv8oc64P$N4$fGDst{Au+Srngu?XBVK<}r6*!F_Rb39m!lhvY~o4uz+h09Kq9aR+);); z#hVM89n35q_%#1`Z-16Zz(jO$p|bAJjAK$F-~L?6CozxB2UlSKv%dKH{CS;A``~#5 zfIv+;1(uis;EE5+b7@h;47;CVn;!J(Vp8r~L}Yyivvp#7B`qLq!l~E52MXq%>O4J{ z=R3*^mWP{g7M9EW&w&dnjMhsngqX?; z#NU_9h)p_Rv`MELyW#lbE>9#{)fk68`3)Q4azdZ1*Uz7#2da-BffH(9^RCsMpet3{Z$D_0_9x zE^dV-^T8LCg+Xs0+D>v>j@d-{%`t3a8P#UD5>b(!ygsC_ zGoVP=i}|KpJ7HW0Grh&{R12cZvZbybx2#qeK3B%uXCk= zEr0?w6hz%8+fQ$*T#+$7Q_N~5IybgAP(|PX4^6x!(EzY100A=MAO=UeG6Sm+;@;Op z2pNBofCnUkt<2(?RM2yU-!4YL&H2pk!@Ry+2^4PAV7&*d&6}@tC-KMy*+sINEtxku zeLCL@lBZ=kNFiu^Ep+V$#Q7s4!@t1&E&K`-dNWz3ng-C#-;YWrVt9*cL-~S5m6cM1 zJeyN4wi3Men9%atgVy@zgI`aOtM9s*1m=nEHF7z+pNju4H={Kvq6qFE*_w&Nnc*A% z<|79k7`E++^F%mcx2?$W5Vv-MP{Zy{G^bb97N=!J3>;I%U@WB2s2Ajj2NKGm3NTRE z1WwWKgdx8Y72jC#-DnM2`=-u)4cCbM1KF(aBI}*Sq5zC?IoDvD0+eNqdog*7*{sx z{LMhv_4&9$zQ2S+yio6JLtZh;AT;g!f&I=+Caln8x{r%qq-)b`&~1}xeAR2cy5bMO z74{pINZcld?x#JjUMOAfW5kBY->;YxHMBgB>R%i=63hTh?nxbdh8y+i&{A&g+MtB< z@YHzrd9c(Oqe}^jrl%`YV2KN{+ z(hWelp}zqOF6ILOP7?0a-|qyE{Dd#RQtijl=rhBD)OKkfAy3(oAYxk{j zinY`GkzMxaE+|HO*aGQrB*Y3xZv(4l&5eHcY_AgYATLhST9(_Y01I2dL0YYPN^v5M zm6UW}dA~Pjvui3%h-$KW-p?v>nQvs=6+)Xkgjbxo-Yhw$YM*qWpi9XkZv!b5ZKZkwxB+W|2SXQpoBVxz1)69t!Tg2G zZ{~z44gmi0 ze-%L1JG%?wDH;EdY)qV>*}&xo83z4q-Ccb`o-#6KhS+T}w;aix7|KGFr5`>;pa}il z1Hzd)<4rS|>Lcx!*+99pA=y+w z%u)sYYzMze3hIqxRj$wttWa;eEdNPh0%RRWu?Xit^^S5pm0=Nxyg;^lEA$?>?Hu$wyRUR-@opuKQ?DXOw-!8zgJq&lk{@)Wip&&aJej}yZzLWH2`G9Y- z^PO#Kx0O&9!;L0l7~a0<4gY5J)O+bA`y57P7vU-bD* z&dhl=804#GDX7LymH)yMb$}rlM)8tsMN*iXC$ixb-+erm%{}FenuO~6gQP>a zdt$JzCvWe|#$A2*g%)L9hpDhIW}xCl!-6Obt>o-<`UY!_LG}V*%fg}(^jt;3gw)ZP z4D-f&eGVhzM`GN;UMbCY1Td*QltsVA;l!)YmMiAl(FufvgGOV_aDopP3Eqswt`em{ zHgss8iJZk_>Wd|kiM;wa*G+D#*W~{~K8U*ySULEeQ>3sKzEj8~SsuaX(wvJlRu`|jSeyQ7!QbWAr4yg_mU z)WunByLI%v68E0D6pDJIRtCVOE33$1MkEP8QDYUy8RvVoeQ*eW|EcvnX1X5(_kw@` z0O=uCV8Gg>T!gf87s50 zTZhgqa6Wk7Fdg>mpJ_~;Zr4DW>~OJCg@tqoe7X%Z>|X?jtQ%)~j!fBHPTuBhBpMt@ z>TnGK>KZ_D~NX z-rMAgML7lo&OffXx4#W~+EG@0$hib$b|>N9PWGEJ{Fx>YYb5rN;KV*O>Cb1choMD$Xm0V`! z+5nHs4f6{)g!I)z1{2dHpX$}=pY_7-Dn>?>bDTL*=ZI0oDHJm$<7c%@8Mu7D)Lgb} zdklj?=FQk%&>+HTC@*f!$(Onsg8&3QCG)CMcJ)80a#)V};}@(#$u2r`J#w5S zrDleaDpJB1Y=;4v#tP06wPyT6vMzf|k%gE0TUdzQQ4@m0)^HH|t@#ti6tqm=!T2wpriL20?90RBp?1@M=pW)E zo2xWOf0mboJ3oSi!c#FHA8<(8!L`IMtZQA)I}%(l(WI1lk_|zhO}rS0rxBBe=*@UP z2QzJI;BlLZtyjhOTreOT@$)-thgRw#nK1I?Re)v*A5FJVyi_VDkOfdHUwPVW&_Kp) zwUF$Z0M1*oOEf7MtBE(c1cRDSabF78fR3n=)N}C3HE4sg!EV zW%u2B@*%T4-K9RKTR^}wcPz{8Bdqr}aht_CD`|e8U;b5g#5=_0{zLUQhUN^}VadEj zUD44PL zi>$}2qTETb`s(|J!iaI{VYVp2)k+VVV8`xRVBoVRp5CLPFIMRn#o7BS1DYe+U{*PU ziFx!Vx-w`>V;DAgdIA1Ma3%?Z4rR3gD7iXF!m<}GWh@zN`IgzuC3Qnz${CUteNB`| zA`ol=<6SlE5e^8IhDzC3#cjS86oS$v1#P!h|9(SqSR2&j{8vmNM-HjM@(CfzCzTfp zq=Sb>=~E~U3UBkSl>2lDxTV;c)0i61r-I)K2u+bx5+iejB~b(Ejjm!f)zCqWP=3=3 zlS?vZMLdC&GxT~8D70i$5d-4572?A?IZxdbsk*58J`%dNLK_S7uVdy3ddLH1o%w7r zNclIao+KK#W1h}ohX#$>l%|7Z#P#VMMB?4R)}`X}GuLi;e#C&eA^(F)^s`35kGzoK9Lh+i3|P{G0@WZA;*9zU*3<;Fezh&h~VaFyW?- z;yPlHCom9lzyJUMjRI>m7Il-WYv~4m7=X&TXV398xJN2VF~E8y=KS>(o32sh-odk+X-Hl5q3S6gN!L&yP=Qg%o*4mBk` zsd2&Y>+*uwRME~3{vgcp66Y9&Nj+`ubl9ShY)6W;-TT26RJWxiornjDhtf@DYX z2^XS(rPJT=qi^1_J(+E&r2hx~cem`zMPF{1Wv3>?8|G$j3tmDIa&&xe#=#^`-3MmA zxraJP_XE;m3wwlpx=r#`_804MHHW&2JHLE(i}_=I3RQh&CrMI~Ux~>;BH$|p zqgA4;zU_05;=rq@Hzp(H*dBy`v4zR%w>Lf-WEo3kyWz@Y$705XEa)M%&Sd7Mvy{Od z{-LFk1GXf&-1gg_Kpo5ElwxFuHEVdh_wvx#{a1WdH8&k|gj_)V2{&}zR;iSp$2Wv4 z-t-L)03jF>R3Xe~)K2g5KVRmEQ>2I0@|B!09Wo<41u&=`el*E!ZOZx5iNNEtxzpY}XnVnz(?d_$ z=#p8a5+bbg0lt?jsFVHhdk2xboI414dzo-7TaFK-VCg$i(nVj159xM=$zPv)K>8gA zM)h$-tVUi>?em!#f}n$!?2$d*KM%_%;J9sY_%wh{2`Rt7@qQ+Mw=|V+yCl`$RR(c* zznFjPw05C?#%_3+%^mpL6{#lassE47;-f(dRNwr`{y^6hoW!4cWCa36abtGEuu7U| zPz3MLn)iEa2%@SpB*2R08m>zd;?=Yu>h|4!hR2@1Bmg@-LkO|?u?`P1iVXq$2I*%5)Q{niVaZLV_4JRi zQa-BclalF?qh{+UHyy9pEdSz)r`W- z-%1nvg8ij6@l5dOl;(kJ1xcP`)7;zDo@YA-Wx(Xh^<~tOpPABYMbSTSVK1609tS6Y zXW(ey00FhXlKB4Rrisq4JCmHvD1e8oAun4Z!FygH1D7_KuxY1&8q+Yb{`!^vsEl2& z7jf%z*vfeC{&E!IB8rQ9VWmvrxW`X`W{V#Mvdx_S zA!Abl;hZ1AgZKyO+YqN{#yEv~ssj$(2ajhB4f@K-m@Fqxyk2sJF^tkQdHa_#*&;n_ z{c-&Gr3RYxJ1;Gq*lzmt(rn6u8L;g>uU*coM8g^#bS!WGRHgHdEnyh=Vi+W@Z<=piWMl zuECC>-ai;cUBsm};62DXS_9^GS9-6 zGkhi`fKKwN5LsuJ-7UmAVajFuKPJNoWf<+k4xTiAq$u2an?ySQlX1;!e!`H>Ww5-~ z70V9mJ5iWiu_yol8YK;}d(ML6ux$k+>m@z@x0G2g60|{fL^k7Y^V0UfrR%Tx51C&ieWJ&l|B@lu+^rRJX?S`l#Sc3 zoww#t4!Nbek}KG+VZ90S31@`xaldxD-6NVd`eeN&(KVmM=<`b+Wg_3&<8Zgh$ty21ON6VQa%Bkb$79 zs?GVo%9enuD5e98oc2^XuGJ#MrZoPwRoC(5V+G}rr|$s=Zv{K5mEYxAmIELMKjZ^% zVqHX;RmoZP<$C-(Fz4B*8*nU$`fp>ZR!q0~4QQCcr}co?2MaU}kxI`4@GWX5D%V=8 zbWUhbb#%^zgdq7N%`-C5Wq{;z)+px0Ok*o^Bef7BXYY>;AN)XU{1Duur85`)U2bs*m{V^99=RT27k z6qsOckg|%t=JOj%#Wz&Y1?Nx?c83{Ot{7nr5?)5Nq|wZIuSB9)s}GR&`3#G3`|f&)aELvKJ-a4mC(;wQrmb_Dj|||7MOu{zb&8CmaXj6hrg=ASxJ)&$;EZJ w-ATzJi|r%BA8!Rq8Jl{r#|+uEFmQ=r8tyk~#Fd3CfVUg-TO}XV4wCo)0K6whx&QzG diff --git a/src/data/local_data/sky/milkyway_px.webp b/src/data/local_data/sky/milkyway_px.webp index 3c0aead6f7325e65ba6ac9cdc7838961dd9c06ce..2bbb491745b92a4d51a5b489d45e691a1d938732 100644 GIT binary patch literal 5478 zcmZWrby$<{*B>b*jXLQNN2jBEbccYHV<1RKN=P@1(WSybq*J;@T0%fN1QY@3md=;b zufOZvU(a>ze$IW)`P8E!FC$|_1_0a`lScr~moq z*z~6dGb5FXl$*<`$VI&hh`~R_O+q|d$g(RXVo8F^bM7cs%*=h(SaYqpxmpKXUvBl; zzjux>tz8zmZYlzB>%T5%PtN76gl|fh^x~n7wq}FpM-dloPh9rPpU3*zs_k-+Cl42) zb=(Pu57?M7V%A)%e;xHtZj5DEjv+_?3}%m?#x6!?JayIa#btc&<%gviWnNspP{Rcx zqnm}+O5YT?=+@0Qu1m$RG6CgsFC$24FmMF29db3#<@TCCO5L7fjiViszFH(Pd@g62 z-^0G=?<5_z5Qsxl%G~AQ_QOU`?rvbhXZbBtO-Dm`6$!yjTTcpiCavYgu{EyYSYs4l zU`mz5tv|4&*4G&7S7EXe6#@W6lT-R1LT zHRZWAc?GrW5xT%vm~kLoAC8c0+#i%HEOt$hK~2t5DXrb-7AxE>1I`9REGk$bAwkj) z6?Qg@C}`>wd`;^(ex)%SXYdZejW

F*RAHu;&FylDRD@l49QwSV~sO^Aw%pT;so! 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 diff --git a/src/data/local_data/sky/milkyway_py.webp b/src/data/local_data/sky/milkyway_py.webp index 44409300736940185a8a3ee997e8d1913de31106..779353c642cb97be7b9bed56df26cae61f6f2ef9 100644 GIT binary patch literal 15028 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 T_ySA3J5#y%kyk2W0O0=tCamzp literal 41794 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

QH1|y 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 { + assert.equal(softBlack(-0.2), 0); + assert.equal(softBlack(0), 0); + // Continuous, rising, with no step at the black level. + let previous = 0; + for (let x = 0.001; x <= 1; x += 0.001) { + const y = softBlack(x); + assert.ok(y > previous && y - previous < 0.0011, `step at ${x.toFixed(3)}`); + previous = y; + } + // Starts flat, then joins the straight line just below it. + assert.ok(softBlack(0.003) < 0.0003); + close(softBlack(1), 1 - 0.03, 1e-3); +}); From ac9cd4ab84e8d7858aaeafcf485c3da793b7ca2e Mon Sep 17 00:00:00 2001 From: Said Date: Mon, 19 Oct 2026 23:02:46 +0100 Subject: [PATCH 07/36] fix(overpass): bound query validation and reject cross-site requests --- docs/CURRENT-STATE.md | 15 +- scripts/format-scope.json | 3 +- scripts/package-boundaries.json | 2 + server/providers/overpass.js | 20 ++ server/providers/overpass/query.js | 36 +++- .../overpass/requestAdmission.test.mjs | 178 ++++++++++++++++++ 6 files changed, 243 insertions(+), 11 deletions(-) create mode 100644 server/providers/overpass/requestAdmission.test.mjs diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 60937dd05..bcc4e6fd3 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -2733,11 +2733,16 @@ down | auth-failed` (plus the unchanged `missing-key`/`unsupported`) with > first later successful fetch. Smaller chunks reduce timeout risk; complete > camera batches still wait for their sequential requests, and unresolved > placement continues to use the existing prior until real heights arrive. -> - **Overpass cache admission:** `/api/overpass` parses and sanitizes requests, -> then checks fresh memory, identical in-flight work, and fresh disk entries -> before invoking its local 90/min limiter. Cache and single-flight responses -> therefore do not spend quota; upstream-bound misses retain the existing -> limiter, configured-upstream, stale, and sanitization behavior. An unconfigured transport serves dated stale data or a non-retryable capability error. +> - **Overpass cache admission:** `/api/overpass` refuses cross-site and forwarded +> POSTs through the shared local-request gate, then limits requests to 300/min +> per socket peer and 900/min globally before reading or validating bodies. +> Tag-filter brackets are scanned once; nested or unmatched brackets return 400. +> It then checks fresh memory, identical in-flight work, and fresh disk entries +> before invoking its separate local 90/min upstream limiter. Cache and +> single-flight responses therefore do not spend upstream quota; upstream-bound +> misses retain the existing limiter, configured-upstream, stale, and sanitization +> behavior. An unconfigured transport serves dated stale data or a non-retryable +> capability error. > - **CCTV world-click focus:** clicking an in-world CCTV icon or ambient card > activates it and routes the camera flight through the panel FOCUS policy. > Aircraft/satellite tracking releases outside cockpit; cockpit retains the diff --git a/scripts/format-scope.json b/scripts/format-scope.json index 543b0f9a4..c7a95e6e3 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -1070,5 +1070,6 @@ "scripts/assemble-changelog.mjs", "src/tooling/changelogFragments.test.mjs", "src/data/gbfsProxyRateLimit.test.mjs", - "src/terrainHeightsBounds.test.mjs" + "src/terrainHeightsBounds.test.mjs", + "server/providers/overpass/requestAdmission.test.mjs" ] diff --git a/scripts/package-boundaries.json b/scripts/package-boundaries.json index ca5dc0c7f..55effa760 100644 --- a/scripts/package-boundaries.json +++ b/scripts/package-boundaries.json @@ -253,6 +253,7 @@ "server/providers/common/http.js", "server/providers/common/rate-limit.js", "server/providers/common/request.js", + "server/providers/common/same-site.js", "server/providers/overpass.js", "server/providers/overpass/cache.js", "server/providers/overpass/constants.js", @@ -262,6 +263,7 @@ "server/providers/places/routes.js", "src/data/placeProviderPayloads.js", "src/data/routeSteps.js", + "src/localRequestGate.mjs", "src/sources/httpBody.js", "src/i18n/marker.js", "src/sources/overpass.js", diff --git a/server/providers/overpass.js b/server/providers/overpass.js index e6631e889..3b5a2e575 100644 --- a/server/providers/overpass.js +++ b/server/providers/overpass.js @@ -1,5 +1,6 @@ import { makeRateLimiter, clientKey } from './common/rate-limit.js'; import { readRequestBodyCapped } from './common/request.js'; +import { admitSameSite } from './common/same-site.js'; import { OVERPASS_MAX_BODY_BYTES, OVERPASS_MAX_CONCURRENT, @@ -27,6 +28,14 @@ const _overpassInFlight = new Map(); let _overpassConcurrent = 0; +// Bound body-reading and validation work, including malformed requests and +// cache hits. Keep the tighter upstream budget below independent of this gate. +const _overpassRequestLimiter = makeRateLimiter({ + windowMs: 60_000, + max: 300, + globalMax: 900, +}); + const _overpassRateLimiter = makeRateLimiter({ windowMs: 60_000, max: 90, @@ -94,6 +103,17 @@ function overpassProxy({ routing = {} } = {}) { return; } + if (admitSameSite(req, res)) return; + if (!_overpassRequestLimiter(clientKey(req))) { + res.writeHead(429, { + 'Content-Type': 'application/json', + 'Cache-Control': 'no-store', + 'Retry-After': '60', + }); + res.end(JSON.stringify({ error: 'Rate limit exceeded' })); + return; + } + // Collect POST body with a hard byte cap (Overpass QL queries are small) let body; try { diff --git a/server/providers/overpass/query.js b/server/providers/overpass/query.js index cee444d3a..4091c9efd 100644 --- a/server/providers/overpass/query.js +++ b/server/providers/overpass/query.js @@ -18,6 +18,29 @@ function isOverpassBoundaryQuery(cacheKey) { return /is_in\s*\(|\bpivot\b/i.test(String(cacheKey || '')); } +// Input has already had quoted literals and comments removed. Consume each +// character once: a regex that searches for a closing bracket from every `[` is +// quadratic on an unterminated filter. Nested or unmatched brackets are invalid. +function stripTagFilters(text) { + const parts = []; + let start = 0; + let inFilter = false; + for (let i = 0; i < text.length; i += 1) { + if (text[i] === '[') { + if (inFilter) return null; + parts.push(text.slice(start, i), ' '); + inFilter = true; + } else if (text[i] === ']') { + if (!inFilter) return null; + inFilter = false; + start = i + 1; + } + } + if (inFilter) return null; + parts.push(text.slice(start)); + return parts.join(''); +} + /** * Validate + clamp an Overpass form body. Defends the generic proxy against * planet-scale abuse: requires exactly one `data` query in which EVERY element @@ -50,6 +73,10 @@ function sanitizeOverpassBody(rawBody) { // Blank quoted literals + strip comments in one lexer pass so a fake bound or a // `//` inside a string can't hide an unbounded selector (or satisfy a bound). const stripped = stripOverpassNoise(data); + const withoutTags = stripTagFilters(stripped); + if (withoutTags === null) { + return { ok: false, error: 'Malformed Overpass tag filter' }; + } // Reject oversized radii in EVERY around form — point `around:r,lat,lon` AND the // input-set form `around.set:r` — and parse the full numeric token so scientific @@ -93,20 +120,19 @@ function sanitizeOverpassBody(rawBody) { // statement. So `way[...]->.a` (global assigned to a set) is rejected, while the // app's `is_in(...)->.a; area.a[...]` and `area(id)->.x; rel(pivot.x)` validate. const boundedSets = new Set(); - for (let stmt of stripped.split(';')) { + for (let stmt of withoutTags.split(';')) { stmt = stmt.trim(); if (!stmt || stmt.startsWith('[') || /^out\b/.test(stmt)) continue; - // Strip output-set assignments (NOT input bounds), then strip bracket tag - // filters so a tag KEY/value (e.g. `way[is_in]`, `node[around]`) can never be + // Strip output-set assignments (NOT input bounds). Bracket tag filters were + // removed above so a tag KEY/value (e.g. `way[is_in]`, `node[around]`) cannot be // misread as a spatial bound. Bounds live in (...) / function calls / set // refs, never inside [...], so the probe loses nothing real. const outSets = []; - const body = stmt.replace(/->\s*\.(\w+)/g, (_, name) => { + const probe = stmt.replace(/->\s*\.(\w+)/g, (_, name) => { outSets.push(name); return ' '; }); - const probe = body.replace(/\[[^\]]*\]/g, ' '); // Reject element-in-area scans on the TAG-STRIPPED probe, so a tag filter // between the selector and the area filter (way["highway"](area.a)) can't hide diff --git a/server/providers/overpass/requestAdmission.test.mjs b/server/providers/overpass/requestAdmission.test.mjs new file mode 100644 index 000000000..ecd642320 --- /dev/null +++ b/server/providers/overpass/requestAdmission.test.mjs @@ -0,0 +1,178 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { Readable } from 'node:stream'; +import { spawnSync } from 'node:child_process'; +import { overpassProxy } from '../overpass.js'; +import { sanitizeOverpassBody } from './query.js'; + +const form = (query) => `data=${encodeURIComponent(query)}`; + +test('bracket validation rejects malformed filters without trusting their contents as bounds', () => { + for (const query of [ + 'node[', + 'node]', + 'node[[name]](around:20,1,1);out;', + 'node[name=around:20];out;', + 'node[is_in];out;', + 'node[name="(around:20,1,1)"];out;', + 'node(around:20,1,1);way[name];out;', + 'way[highway](area.a);out;', + 'node[->.a](around:20,1,1);way.a;out;', + ]) { + assert.equal(sanitizeOverpassBody(form(query)).ok, false, query); + } +}); + +test('bounded queries preserve quoted brackets, comments, multiple tags and timeout clamping', () => { + for (const query of [ + '[out:json][timeout:999];node[name="[Town]; ]"](around:20,1,1);out;', + '/* [ */way[highway][name](30.1,-97.9,30.5,-97.5);out geom;', + 'is_in(30.2,-97.7)->.a;area.a[boundary="administrative"];out tags;', + 'area(3600039152)->.x;rel(pivot.x);out geom;', + ]) { + const result = sanitizeOverpassBody(form(query)); + assert.equal(result.ok, true, query); + assert.equal( + new URLSearchParams(result.body).get('data'), + query.replace('[timeout:999]', '[timeout:30]'), + ); + } +}); + +test('a burst of maximum-size unterminated filters completes within a bounded process deadline', () => { + // A child deadline can stop synchronous regex backtracking; a test timeout in + // the same event loop cannot. The old parser takes several seconds for this. + const result = spawnSync( + process.execPath, + [ + '--input-type=module', + '-e', + `import { sanitizeOverpassBody } from ${JSON.stringify(new URL('./query.js', import.meta.url).href)}; + for (let i = 0; i < 20; i++) { + if (sanitizeOverpassBody('data=node' + '['.repeat(24000)).ok) process.exit(1); + }`, + ], + { timeout: 2000, encoding: 'utf8' }, + ); + assert.ifError(result.error); + assert.equal(result.status, 0, result.stderr); +}); + +function handler(hook = 'configureServer') { + let route; + overpassProxy()[hook]({ + middlewares: { + use(path, fn) { + if (path === '/api/overpass') route = fn; + }, + }, + }); + return route; +} + +async function call( + route, + { + headers = {}, + peer = '127.0.0.1', + body = 'data=node[', + forbidRead = false, + method = 'POST', + url = '/', + } = {}, +) { + let reads = 0; + const req = new Readable({ + read() { + reads++; + assert.equal(forbidRead, false, 'refused request must not read its body'); + this.push(Buffer.from(body)); + this.push(null); + }, + }); + Object.assign(req, { + method, + url, + headers: { host: 'localhost:4173', ...headers }, + socket: { remoteAddress: peer }, + }); + const res = { + statusCode: 200, + headers: {}, + setHeader(key, value) { + this.headers[key.toLowerCase()] = value; + }, + writeHead(status, values) { + this.statusCode = status; + for (const [key, value] of Object.entries(values)) + this.setHeader(key, value); + }, + end(value) { + this.body = value; + }, + }; + await route(req, res); + return { ...res, reads }; +} + +for (const hook of ['configureServer', 'configurePreviewServer']) { + test(`${hook}: cross-site requests are rejected before consuming a body or fetching`, async (t) => { + t.mock.method(globalThis, 'fetch', () => + assert.fail('unexpected upstream fetch'), + ); + const route = handler(hook); + for (const headers of [ + { origin: 'https://foreign.example', 'content-type': 'text/plain' }, + { 'sec-fetch-site': 'cross-site' }, + { 'sec-fetch-site': 'same-site' }, + { origin: 'null' }, + { 'x-forwarded-for': '127.0.0.1' }, + ]) { + const response = await call(route, { headers, forbidRead: true }); + assert.equal(response.statusCode, 403); + assert.equal(response.reads, 0); + assert.equal(response.headers['cache-control'], 'no-store'); + } + }); +} + +test('same-origin, LAN and non-browser requests still reach validation; GET status stays available', async () => { + const route = handler(); + for (const headers of [ + {}, + { origin: 'http://localhost:4173', 'sec-fetch-site': 'same-origin' }, + { host: '192.168.1.10:4173', origin: 'http://192.168.1.10:4173' }, + ]) { + const response = await call(route, { headers }); + assert.equal(response.statusCode, 400); + assert.equal(response.reads, 1); + assert.match(response.body, /Malformed Overpass tag filter/); + } + const response = await call(route, { + method: 'GET', + url: '/status', + forbidRead: true, + }); + assert.equal(response.statusCode, 200); + assert.equal(typeof JSON.parse(response.body).configured, 'boolean'); +}); + +test('invalid requests spend admission quota before parsing, including on an unconfigured server', async (t) => { + let now = Date.now() + 120000; + t.mock.method(Date, 'now', () => now); + t.mock.method(globalThis, 'fetch', () => + assert.fail('unexpected upstream fetch'), + ); + const route = handler(); + const peer = 'admission-limit-test'; + for (let i = 0; i < 300; i++) { + assert.equal((await call(route, { peer })).statusCode, 400); + } + const denied = await call(route, { peer, forbidRead: true }); + assert.equal(denied.statusCode, 429); + assert.equal(denied.reads, 0); + assert.equal(denied.headers['retry-after'], '60'); + assert.equal((await call(route, { peer: 'other-peer' })).statusCode, 400); + now += 60001; + assert.equal((await call(route, { peer })).statusCode, 400); +}); From c5086f8d6d1a7c155e46d792bf5491d8033d2912 Mon Sep 17 00:00:00 2001 From: Said Date: Mon, 19 Oct 2026 23:14:52 +0100 Subject: [PATCH 08/36] docs: add changelog entry for PR 1264 --- changelog.d/1264-overpass-request-admission.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog.d/1264-overpass-request-admission.md diff --git a/changelog.d/1264-overpass-request-admission.md b/changelog.d/1264-overpass-request-admission.md new file mode 100644 index 000000000..2a4794e1d --- /dev/null +++ b/changelog.d/1264-overpass-request-admission.md @@ -0,0 +1,3 @@ +- Prevent malformed Overpass filters from blocking the local server, and reject + cross-site or excessive query requests before reading their bodies + (asturksever, #1264; fixes #1248). From 84d96971df6c8279b74e6628acddc330abd11452 Mon Sep 17 00:00:00 2001 From: Said Turksever Date: Tue, 20 Oct 2026 00:15:49 +0100 Subject: [PATCH 09/36] fix: let keyless browser validation settle --- changelog.d/1264-overpass-request-admission.md | 3 +++ docs/CURRENT-STATE.md | 6 ++++++ scripts/qa-overpass-offload.mjs | 11 ++++++++++- src/maps/googleTokens.js | 5 ++++- src/maps/googleTokens.test.mjs | 17 +++++++++++++++++ 5 files changed, 40 insertions(+), 2 deletions(-) diff --git a/changelog.d/1264-overpass-request-admission.md b/changelog.d/1264-overpass-request-admission.md index 2a4794e1d..e49322df1 100644 --- a/changelog.d/1264-overpass-request-admission.md +++ b/changelog.d/1264-overpass-request-admission.md @@ -1,3 +1,6 @@ - Prevent malformed Overpass filters from blocking the local server, and reject cross-site or excessive query requests before reading their bodies (asturksever, #1264; fixes #1248). +- Release unread responses from the optional Google-token probe so keyless + browser validation can settle; the Overpass gate recognizes only that probe's + expected 404 as an unavailable capability (asturksever, #1264). diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 001967ce3..f59f6c5d9 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -4557,6 +4557,12 @@ Retry-After; absent delays back off from 30 seconds to five minutes. Empty remain. Malformed capability-probe responses remain unknown and are retried after the existing 30-second backoff; valid configured decisions remain memoized. Consumer capability misses never schedule automatic retries. +Keyless browser validation also probes the optional Google tiles-token route. +The token client cancels rejected response bodies before returning unavailable, +so they do not remain pending in browser network observation. The Overpass gate +accepts only that same-origin route's expected 404 console diagnostic; other +HTTP and JavaScript errors still fail acceptance. + Operator-configured Overpass area and focus-footprint queries use body-level `out geom` (with `center` for focus), preserving relation member outlines. Member geometry is printed only inside a box around the point (6 km for diff --git a/scripts/qa-overpass-offload.mjs b/scripts/qa-overpass-offload.mjs index e04a05b86..8f6594011 100644 --- a/scripts/qa-overpass-offload.mjs +++ b/scripts/qa-overpass-offload.mjs @@ -306,7 +306,16 @@ try { await observeNetwork(page); page.on('pageerror', (error) => result.errors.push(error.message)); page.on('console', (message) => { - if (message.type() === 'error' && result.consoleErrors.length < 30) + if (message.type() !== 'error') return; + // A keyless server does not offer optional Google tokens. Keep every other + // HTTP or JavaScript error visible, including failures of this route other + // than its expected capability-miss 404. + const optionalTokenMiss = + message.location().url === new URL('/api/google/tiles-token', url).href && + /^Failed to load resource: the server responded with a status of 404\b/.test( + message.text(), + ); + if (!optionalTokenMiss && result.consoleErrors.length < 30) result.consoleErrors.push(message.text()); }); page.on('requestfailed', (request) => { diff --git a/src/maps/googleTokens.js b/src/maps/googleTokens.js index 7896c8f5c..884c5b199 100644 --- a/src/maps/googleTokens.js +++ b/src/maps/googleTokens.js @@ -38,7 +38,10 @@ export function createGoogleTokenSource({ headers: { Accept: 'application/json' }, cache: 'no-store', }); - if (!response.ok) return null; + if (!response.ok) { + await response.body?.cancel(); + return null; + } return parseToken(await response.json(), now()); } catch { return null; diff --git a/src/maps/googleTokens.test.mjs b/src/maps/googleTokens.test.mjs index 87b7cf8dc..d8a1e84ed 100644 --- a/src/maps/googleTokens.test.mjs +++ b/src/maps/googleTokens.test.mjs @@ -50,6 +50,23 @@ test('requests refused for the same token renew it once', async () => { assert.equal(calls.length, 2); }); +test('a refused token response releases its unread body before returning', async () => { + for (const status of [404, 429, 500]) { + let cancelled = false; + const response = new Response( + new ReadableStream({ + cancel() { + cancelled = true; + }, + }), + { status }, + ); + const tokens = createGoogleTokenSource({ fetchImpl: async () => response }); + assert.equal(await tokens.token(), null); + assert.equal(cancelled, true, `HTTP ${status} body released`); + } +}); + test('a server that does not offer tokens yields none', async () => { for (const answer of [ new Response('Not found', { status: 404 }), From 69a87fe23807a3132b58e653ed947b1024c63083 Mon Sep 17 00:00:00 2001 From: Said Turksever Date: Tue, 20 Oct 2026 00:44:51 +0100 Subject: [PATCH 10/36] test: observe aircraft arrival before idle refresh --- .../1264-overpass-request-admission.md | 3 + docs/CURRENT-STATE.md | 2 +- scripts/format-scope.json | 3 +- scripts/track-regression.mjs | 85 ++++------ src/tooling/trackArrivalObservation.mjs | 100 ++++++++++++ src/tooling/trackArrivalObservation.test.mjs | 151 ++++++++++++++++++ 6 files changed, 291 insertions(+), 53 deletions(-) create mode 100644 src/tooling/trackArrivalObservation.mjs create mode 100644 src/tooling/trackArrivalObservation.test.mjs diff --git a/changelog.d/1264-overpass-request-admission.md b/changelog.d/1264-overpass-request-admission.md index e49322df1..c5e763e30 100644 --- a/changelog.d/1264-overpass-request-admission.md +++ b/changelog.d/1264-overpass-request-admission.md @@ -4,3 +4,6 @@ - Release unread responses from the optional Google-token probe so keyless browser validation can settle; the Overpass gate recognizes only that probe's expected 404 as an unavailable capability (asturksever, #1264). +- Make tracking arrival checks respect the aircraft update cadence while checking + orientation on the first reveal, avoiding false failures at faster render + rates (asturksever, #1264). diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index f59f6c5d9..16817cd44 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -5011,7 +5011,7 @@ pins and share links already supply complete boxes. - Fleet model eligibility is distance-based with on-screen priority and hard caps (`MODEL_MAX`, `MODEL_MAX_ALL`) to avoid draw-call explosions. Each model owns its own `modelMatrix`; shared scratch matrices are forbidden because they caused stacking/flicker. - Tracked aircraft use standalone model primitives driven from the already-settled dead-reckoned display position, while the tracked Cesium entity remains billboard-backed so `viewer.trackedEntity` always has a ready bounding sphere. - Flights and military layers mirror the same tracking invariants: no warm-up freeze/jump, altitude-scaled framing, trail head glued to the displayed plane, no pull-out when switching targets, and no cross-layer orphan when switching between commercial and military tracks. -- Regression surface: `npm run test:track` drives the real app headless with synthetic aircraft feeds and asserts the tracking invariants without depending on live OpenSky/adsb data. `src/data/trackedModelRegime.test.mjs` pins the tracked contact's threshold math, the enter/exit asymmetry, and the default-on / cockpit / TR-3B / deselect wiring in both layers. +- Regression surface: `npm run test:track` drives the real app headless with synthetic aircraft feeds and asserts the tracking invariants without depending on live OpenSky/adsb data. Arrival-rotation checks observe the first reveal within a bounded wall-clock window before the one-second idle fallback, rather than assuming the 80 ms fleet cadence fits inside four rendered frames; an incorrect first orientation fails immediately. `src/data/trackedModelRegime.test.mjs` pins the tracked contact's threshold math, the enter/exit asymmetry, and the default-on / cockpit / TR-3B / deselect wiring in both layers. ### TR-3B conversion Easter egg (August 2026) diff --git a/scripts/format-scope.json b/scripts/format-scope.json index c7a95e6e3..690a33f3e 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -1071,5 +1071,6 @@ "src/tooling/changelogFragments.test.mjs", "src/data/gbfsProxyRateLimit.test.mjs", "src/terrainHeightsBounds.test.mjs", - "server/providers/overpass/requestAdmission.test.mjs" + "server/providers/overpass/requestAdmission.test.mjs", + "src/tooling/trackArrivalObservation.test.mjs" ] diff --git a/scripts/track-regression.mjs b/scripts/track-regression.mjs index 756daccfc..044fdf74f 100644 --- a/scripts/track-regression.mjs +++ b/scripts/track-regression.mjs @@ -94,6 +94,7 @@ import fs from 'node:fs'; import puppeteer from 'puppeteer'; +import { arrivalRotationPassed } from '../src/tooling/trackArrivalObservation.mjs'; import { classifyAircraft, CLASS_SCALE_3D, CLASS_MODEL_REAL } from '../src/data/aircraftClass.js'; import { ensureGeoidReady, geoidHeight } from '../src/data/geoid.js'; @@ -2695,16 +2696,17 @@ async function main() { // reappear wearing its stale/creation-north nose for up to 1 s). // Staged deterministically: park the camera nadir over the synthetic // cluster, let rotations settle, TAMPER a billboard's rotation, then - // trigger each path with the camera idle. The idle-drift catch-up - // (ROTATION_REFRESH_MS = 1 s) can coincidentally mask a regression in a - // ~300 ms SwiftShader frame window, so a regression shows as an - // intermittent (not guaranteed) failure — never a false failure. + // trigger each path with the camera idle. The fleet runs every 80 ms, + // independently of rendered FPS. Observe the first completed settle and + // reveal frames within 500 ms of forcing moveEnd, before the 1 s idle + // rotation refresh can repair an incorrect first reveal. // ============================================================ console.log('\nChange 4 — arrival rotation: moveEnd settle pass + horizon-reveal pass'); const arrival = await evalPage(async () => { const v = window.__godsEyeView.viewer; const dm = window.__godsEyeView.dataManager; const { screenProjectedRotation } = await import(`${window.__gevQaSourceBase || '/src'}/data/iconOrientation.js`); + const { observeArrivalRotation } = await import(`${window.__gevQaSourceBase || '/src'}/tooling/trackArrivalObservation.mjs`); // 3D models OFF for this phase: a model-handed-off billboard is hidden // and skips rotation updates entirely — the probes need live billboards // (this is also the app's default state the field report came from). @@ -2766,39 +2768,29 @@ async function main() { const bb = findBB(id); if (!bb || !bb.show) return { error: `${id} missing/hidden` }; const r0 = bb.rotation; // settled tamper origin; correctness uses a fresh projection below - // (a) settle pass: tamper, then raise moveEnd with the camera IDLE — - // the pose signature is unchanged, so only the moveEnd hook can fix - // this before the 1 s catch-up. - bb.rotation = r0 + 1.5; - v.camera.moveEnd.raiseEvent(); - await nextFrames(2); - const afterMoveEnd = bb.rotation; - // A real-GPU fleet tick can land near the edge of the frame budget and - // advance the contact before the probe reads it. Compare with the - // production projection at the CURRENT position, not the now-stale r0. - const expectedMoveEnd = screenProjectedRotation(v.scene, bb.position, course, null); - // (b) reveal pass: tamper + hide — the next fleet tick must flip it - // visible AND correct the nose in that same tick (camera still idle, - // no moveEnd raised). Diagnostic fields (round 5): record WHICH frame - // the flip landed on (flipFrame; -1 = never within the extended - // window) and whether a 3D model owns this id — distinguishes "tick - // slow under load" from "occluder says hidden" from "model handoff". - bb.rotation = r0 + 1.5; - bb.show = false; - let flipFrame = -1; - for (let f = 1; f <= 6; f++) { - await nextFrames(1); - if (bb.show && flipFrame === -1) flipFrame = f; - if (f >= 2 && flipFrame !== -1) break; - } - const expectedReveal = screenProjectedRotation(v.scene, bb.position, course, null); + const observed = await observeArrivalRotation({ + scene: v.scene, + startMoveEnd() { + // Only moveEnd can repair the tampered angle at the idle pose. + bb.rotation = r0 + 1.5; + v.camera.moveEnd.raiseEvent(); + }, + startReveal() { + // Hide immediately after the confirmed settle frame. The next + // eligible fleet tick must reveal AND re-aim in that same tick. + bb.rotation = r0 + 1.5; + bb.show = false; + }, + read() { + return { + shown: bb.show, + rotationError: angDiff(bb.rotation, + screenProjectedRotation(v.scene, bb.position, course, null)), + }; + }, + }); const hasModel = !!(window.__g3dFindModel && window.__g3dFindModel(id)); - return { - r0, - dMoveEnd: angDiff(afterMoveEnd, expectedMoveEnd), - dReveal: angDiff(bb.rotation, expectedReveal), - shown: bb.show, flipFrame, hasModel, - }; + return { r0, ...observed, hasModel }; }; const flightCourse = window.__SYNTH.flights.find((f) => f.icao === 'aaa002')?.track ?? 0; const militaryCourse = window.__SYNTH.military.find((m) => m.hex === 'bbb101')?.track ?? 0; @@ -2807,22 +2799,13 @@ async function main() { military: await probe('bbb101', militaryCourse), }; }); - const fmtArr = (a) => (!a ? `no result (${arrival?.error || 'phase error'})` : a.error ? a.error - : `settle-err=${(a.dMoveEnd * 180 / Math.PI).toFixed(1)}° reveal-err=${(a.dReveal * 180 / Math.PI).toFixed(1)}° shown=${a.shown} flipFrame=${a.flipFrame} hasModel=${a.hasModel}`); + const fmtArr = (a) => (!a ? `no result (${arrival?.error || 'phase error'})` : a.error ? `${a.error}; elapsed=${Number(a.elapsedMs).toFixed(1)} ms` + : `settle-err=${(a.dMoveEnd * 180 / Math.PI).toFixed(1)}° reveal-err=${(a.dReveal * 180 / Math.PI).toFixed(1)}° shown=${a.shown} flipFrame=${a.flipFrame} settle=${a.moveEndMs.toFixed(1)} ms reveal=${a.revealMs.toFixed(1)} ms total=${a.elapsedMs.toFixed(1)} ms hasModel=${a.hasModel}`); const TAMPER_DEG = 1.5 * 180 / Math.PI; // ≈ 86° — an uncorrected nose stays this far off - // Reveal budget re-pinned 2 → 4 frames (round 5): the diagnostic probe - // shows the military flip consistently lands on frame 2 — the exact edge - // of the old budget — so any load hiccup flaked it (flights lands frame - // 1). The regression this protects against is a reveal that waits for - // the 1 s idle catch-up (~30-60 frames) or never re-aims; 4 frames still - // catches that with a wide margin, with zero-headroom flakes gone. - const arrOk = (a) => !!a && !a.error && a.shown - && (a.flipFrame === -1 ? false : a.flipFrame <= 4) - && a.dMoveEnd * 180 / Math.PI < 10 && a.dReveal * 180 / Math.PI < 10; - record(`arrival: moveEnd + reveal both re-aim within 4 frames, flights (tamper was ${TAMPER_DEG.toFixed(0)}°)`, - arrOk(arrival.flights), fmtArr(arrival.flights)); - record(`arrival: moveEnd + reveal both re-aim within 4 frames, military (tamper was ${TAMPER_DEG.toFixed(0)}°)`, - arrOk(arrival.military), fmtArr(arrival.military)); + record(`arrival: moveEnd + first reveal both re-aim before idle refresh, flights (tamper was ${TAMPER_DEG.toFixed(0)}°)`, + arrivalRotationPassed(arrival.flights), fmtArr(arrival.flights)); + record(`arrival: moveEnd + first reveal both re-aim before idle refresh, military (tamper was ${TAMPER_DEG.toFixed(0)}°)`, + arrivalRotationPassed(arrival.military), fmtArr(arrival.military)); // ============================================================ // DISPLAY FLOOR (2026-08-19): a grounded contact must never render below diff --git a/src/tooling/trackArrivalObservation.mjs b/src/tooling/trackArrivalObservation.mjs new file mode 100644 index 000000000..370624891 --- /dev/null +++ b/src/tooling/trackArrivalObservation.mjs @@ -0,0 +1,100 @@ +/** A reveal must beat the one-second idle rotation refresh, regardless of FPS. */ +export const ARRIVAL_OBSERVATION_MS = 500; + +/** + * Observe the first completed moveEnd frame and the first subsequent reveal. + * The deadline starts when moveEnd is forced, before its rotation baseline, so + * waiting for either frame cannot let the one-second idle refresh mask a bug. + * `read` snapshots visibility and rotation error against the current position. + */ +export function observeArrivalRotation({ + scene, + startMoveEnd, + startReveal, + read, + now = () => performance.now(), + setTimer = setTimeout, + clearTimer = clearTimeout, +}) { + return new Promise((resolve, reject) => { + const startedAt = now(); + let moveEnd = null; + let moveEndMs = null; + let revealFrames = 0; + let done = false; + let remove; + let timer; + const cleanup = () => { + done = true; + remove?.(); + clearTimer(timer); + }; + const finish = (result) => { + if (done) return; + cleanup(); + resolve(result); + }; + const expired = () => ({ + error: `arrival ${moveEnd ? 'reveal' : 'moveEnd'} observation exceeded ${ARRIVAL_OBSERVATION_MS} ms`, + elapsedMs: now() - startedAt, + moveEndMs, + flipFrame: -1, + }); + remove = scene.postRender.addEventListener(() => { + if (done) return; + try { + const elapsedMs = now() - startedAt; + if (elapsedMs >= ARRIVAL_OBSERVATION_MS) { + finish(expired()); + return; + } + const sample = read(); + if (moveEnd === null) { + moveEnd = sample; + moveEndMs = elapsedMs; + startReveal(); + } else { + revealFrames++; + if (sample.shown) { + // Keep the FIRST visible result, including a wrong angle. Never + // wait for a subsequent tick to repair a failed reveal. + finish({ + dMoveEnd: moveEnd.rotationError, + dReveal: sample.rotationError, + shown: sample.shown, + flipFrame: revealFrames, + moveEndMs, + revealMs: elapsedMs - moveEndMs, + elapsedMs, + }); + return; + } + } + scene.requestRender(); + } catch (error) { + cleanup(); + reject(error); + } + }); + timer = setTimer(() => finish(expired()), ARRIVAL_OBSERVATION_MS); + try { + startMoveEnd(); + scene.requestRender(); + } catch (error) { + cleanup(); + reject(error); + } + }); +} + +/** Test the captured frames without retrying a bad first observation. */ +export function arrivalRotationPassed(observation) { + return ( + !!observation && + !observation.error && + observation.shown === true && + observation.elapsedMs < ARRIVAL_OBSERVATION_MS && + (observation.dMoveEnd * 180) / Math.PI < 10 && + (observation.dReveal * 180) / Math.PI < 10 + ); +} diff --git a/src/tooling/trackArrivalObservation.test.mjs b/src/tooling/trackArrivalObservation.test.mjs new file mode 100644 index 000000000..7c140bf37 --- /dev/null +++ b/src/tooling/trackArrivalObservation.test.mjs @@ -0,0 +1,151 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { + ARRIVAL_OBSERVATION_MS, + arrivalRotationPassed, + observeArrivalRotation, +} from './trackArrivalObservation.mjs'; + +function fixture() { + let time = 0; + let state = { shown: true, rotationError: 0 }; + const listeners = new Set(); + const timers = new Map(); + let renders = 0; + let moveEnds = 0; + const observation = observeArrivalRotation({ + scene: { + postRender: { + addEventListener(listener) { + listeners.add(listener); + return () => listeners.delete(listener); + }, + }, + requestRender() { + renders++; + }, + }, + startMoveEnd() { + moveEnds++; + state.rotationError = 1.5; + }, + startReveal() { + state = { shown: false, rotationError: 1.5 }; + }, + read: () => ({ ...state }), + now: () => time, + setTimer(callback, delay) { + const handle = {}; + timers.set(handle, { callback, at: time + delay }); + return handle; + }, + clearTimer(handle) { + timers.delete(handle); + }, + }); + return { + observation, + frame(at, nextState) { + time = at; + state = { ...state, ...nextState }; + for (const listener of [...listeners]) listener(); + }, + expire(at) { + time = at; + for (const timer of [...timers.values()]) + if (timer.at <= at) timer.callback(); + }, + get resources() { + return { + listeners: listeners.size, + timers: timers.size, + renders, + moveEnds, + }; + }, + }; +} + +test('80 ms fleet scheduling passes after more than four fast rendered frames', async () => { + const f = fixture(); + f.frame(8, { shown: true, rotationError: 0 }); + // The forced fleet tick was at 8 ms. A 125 FPS renderer can complete nine + // more frames before the next 80 ms fleet interval becomes eligible. + for (let at = 16; at < 88; at += 8) f.frame(at); + f.frame(88, { shown: true, rotationError: 0 }); + const result = await f.observation; + assert.equal(result.flipFrame, 10); + assert.equal(result.moveEndMs, 8); + assert.equal(result.revealMs, 80); + assert.equal(result.elapsedMs, 88); + assert.equal(arrivalRotationPassed(result), true); + assert.equal(f.resources.listeners, 0); + assert.equal(f.resources.timers, 0); + assert.equal(f.resources.moveEnds, 1); +}); + +test('a wrong first visible angle fails even if the next frame corrects it', async () => { + const f = fixture(); + f.frame(8, { shown: true, rotationError: 0 }); + f.frame(88, { shown: true, rotationError: 1.5 }); + f.frame(96, { shown: true, rotationError: 0 }); + const result = await f.observation; + assert.equal(result.dReveal, 1.5); + assert.equal(result.flipFrame, 1); + assert.equal(result.elapsedMs, 88); + assert.equal(arrivalRotationPassed(result), false); +}); + +test('a wrong first moveEnd angle is retained rather than repaired by reveal', async () => { + const f = fixture(); + f.frame(8, { shown: true, rotationError: 1.5 }); + f.frame(88, { shown: true, rotationError: 0 }); + const result = await f.observation; + assert.equal(result.dMoveEnd, 1.5); + assert.equal(arrivalRotationPassed(result), false); +}); + +test('no reveal fails at a deadline before the one-second idle catch-up', async () => { + const f = fixture(); + assert.equal(ARRIVAL_OBSERVATION_MS, 500); + f.frame(8, { shown: true, rotationError: 0 }); + f.frame(480); + f.expire(500); + const result = await f.observation; + assert.match(result.error, /reveal.*500 ms/); + assert.equal(arrivalRotationPassed(result), false); + assert.equal(f.resources.listeners, 0); + assert.equal(f.resources.timers, 0); + f.frame(1000, { shown: true, rotationError: 0 }); + assert.equal(result.flipFrame, -1); +}); + +test('a late visible frame fails even if the timeout callback is delayed', async () => { + const f = fixture(); + f.frame(8, { shown: true, rotationError: 0 }); + f.frame(501, { shown: true, rotationError: 0 }); + const result = await f.observation; + assert.match(result.error, /reveal.*500 ms/); + assert.equal(result.elapsedMs, 501); + assert.equal(arrivalRotationPassed(result), false); +}); + +test('the deadline includes moveEnd setup rather than restarting when hidden', async () => { + const f = fixture(); + f.frame(400, { shown: true, rotationError: 0 }); + f.frame(600, { shown: true, rotationError: 0 }); + const result = await f.observation; + assert.equal(result.moveEndMs, 400); + assert.equal(result.elapsedMs, 600); + assert.equal(arrivalRotationPassed(result), false); +}); + +test('missing moveEnd frames fail without waiting for a render callback', async () => { + const f = fixture(); + f.expire(500); + const result = await f.observation; + assert.match(result.error, /moveEnd.*500 ms/); + assert.equal(arrivalRotationPassed(result), false); + assert.equal(f.resources.listeners, 0); + assert.equal(f.resources.timers, 0); +}); From 86ae5e9cf46680893147e57f24cc85db6d715ac0 Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Tue, 20 Oct 2026 13:02:48 +0400 Subject: [PATCH 11/36] fix(sky): blur the faint Milky Way glow wider so unresolved stars leave no clumps The fine 0.4 degree blur kept the residual glow of unresolved stars as mottled patches at the band's edges. Blend towards a 2 degree blur where the coarse copy is faint (smoothstep over 0.5-8 % of the range), so the core keeps its dust lanes and the faint sky goes smooth. Faces 85 -> 62 kB. Co-Authored-By: Claude Opus 5.5 --- changelog.d/1243-starfield-sky.md | 2 +- scripts/build-milky-way.mjs | 39 ++++++++++++++++++++++- src/data/local_data/sky/README.md | 5 +-- src/data/local_data/sky/milkyway_nx.webp | Bin 9118 -> 4638 bytes src/data/local_data/sky/milkyway_ny.webp | Bin 23212 -> 19124 bytes src/data/local_data/sky/milkyway_nz.webp | Bin 19634 -> 15880 bytes src/data/local_data/sky/milkyway_px.webp | Bin 5478 -> 3434 bytes src/data/local_data/sky/milkyway_py.webp | Bin 15028 -> 10138 bytes src/data/local_data/sky/milkyway_pz.webp | Bin 12354 -> 8264 bytes src/tooling/skyAssets.test.mjs | 9 ++++++ 10 files changed, 51 insertions(+), 4 deletions(-) diff --git a/changelog.d/1243-starfield-sky.md b/changelog.d/1243-starfield-sky.md index 7d4557672..d3ecbaf95 100644 --- a/changelog.d/1243-starfield-sky.md +++ b/changelog.d/1243-starfield-sky.md @@ -2,4 +2,4 @@ Yale Bright Star Catalogue, drawn as sharp points at their catalogue positions for the scene clock, over a soft Milky Way built from ESO/S. Brunier's panorama (CC BY 4.0). The Sun and Moon stay, the anime style fades - the Milky Way out, and the new assets weigh 319 kB (gekh, #1243). + the Milky Way out, and the new assets weigh 296 kB (gekh, #1243). diff --git a/scripts/build-milky-way.mjs b/scripts/build-milky-way.mjs index 5e5d3d253..e0703f882 100644 --- a/scripts/build-milky-way.mjs +++ b/scripts/build-milky-way.mjs @@ -23,7 +23,8 @@ * sit where today's sky has nothing and are far brighter than any star. * 4. Blur with a three-pass box approximation of a Gaussian, σ = BLUR_DEG on * the sky: rows wrap in longitude and widen by 1/cos(latitude) so the - * blur stays round towards the poles. + * blur stays round towards the poles. Faint glow blends to a second, + * FAINT_BLUR_DEG blur, so it carries no clumps of unresolved stars. * 5. Resample into six FACE_SIZE² cube faces in the standard WebGL face * orientation (the renderer uploads them without flipY), with the ICRF * axes as the cube axes — +X to the March equinox, +Z to the north @@ -43,6 +44,12 @@ import { fileURLToPath } from 'node:url'; export const FACE_SIZE = 1024; export const BLUR_DEG = 0.4; +// Faint glow takes a much wider blur: there the panorama is grain of +// unresolved stars, which a 0.4° blur leaves as clumps. Bright parts keep the +// fine blur and their dust lanes; FAINT_RANGE (fraction of black-to-white) +// is where the two blend. +export const FAINT_BLUR_DEG = 2; +const FAINT_RANGE = [0.005, 0.08]; const WORK_WIDTH = 4096; const OPEN_RADIUS = 3; const WEBP_QUALITY = 96; @@ -300,6 +307,26 @@ export function softBlack(x, knee = SOFT_KNEE) { return x <= 0 ? 0 : (x * x) / (x + knee); } +export function smoothstep(edge0, edge1, x) { + const t = Math.min(Math.max((x - edge0) / (edge1 - edge0), 0), 1); + return t * t * (3 - 2 * t); +} + +/** + * Per pixel, keep `fine` where `weight(luminance of coarse)` is 1 and take + * `coarse` where it is 0, blending in between. The weight follows the coarse + * copy, so it is smooth itself and draws no seams along dark lanes. Writes + * into `fine`. + */ +function blendByBrightness(fine, coarse, weight) { + const [r] = fine; + for (let i = 0; i < r.length; i++) { + const w = weight((coarse[0][i] + coarse[1][i] + coarse[2][i]) / 3); + for (let c = 0; c < 3; c++) + fine[c][i] = coarse[c][i] + (fine[c][i] - coarse[c][i]) * w; + } +} + /** Value at `fraction` of the sorted luminance. */ function luminancePercentile(planes, fraction) { const [r, g, b] = planes; @@ -342,9 +369,19 @@ async function main() { // After the opening: it sinks the starry sky to the dark gaps between // stars, and a fill taken before it would stay brighter than the sky. for (const planet of PLANETS) paintOut(planes, width, height, planet); + const wide = planes.map((plane) => Float32Array.from(plane)); for (const plane of planes) blurPlane(plane, width, height, sigmaPx); + for (const plane of wide) + blurPlane(plane, width, height, (FAINT_BLUR_DEG / 180) * height); const black = luminancePercentile(planes, BLACK_PERCENTILE); const white = luminancePercentile(planes, WHITE_PERCENTILE); + blendByBrightness(planes, wide, (luminance) => + smoothstep( + FAINT_RANGE[0], + FAINT_RANGE[1], + (luminance - black) / (white - black), + ), + ); let total = 0; for (const face of CUBE_FACES) { const pixels = Buffer.alloc(FACE_SIZE * FACE_SIZE * 3); diff --git a/src/data/local_data/sky/README.md b/src/data/local_data/sky/README.md index 175542da5..e20b1fb77 100644 --- a/src/data/local_data/sky/README.md +++ b/src/data/local_data/sky/README.md @@ -8,7 +8,7 @@ whole-globe view and show compression blocks. | File | Content | Size | | ---- | ------- | ---- | | `bright_stars.json` | 9,096 stars: J2000 RA/Dec, V magnitude, B−V | 235 KB | -| `milkyway_{px,nx,py,ny,pz,nz}.webp` | Milky Way glow, six 1024² cube faces, no stars | 85 KB | +| `milkyway_{px,nx,py,ny,pz,nz}.webp` | Milky Way glow, six 1024² cube faces, no stars | 62 KB | ## Stars — Yale Bright Star Catalogue @@ -44,7 +44,8 @@ Centre. **Changes made** (CC BY 4.0 asks for them to be stated): resampled to 4096×2048, stars removed with a 7×7 morphological opening, two planets (Jupiter, by position) painted over with the median of the surrounding sky, -blurred (σ = 0.4°), reprojected from galactic coordinates to ICRF cube faces, +blurred (σ = 0.4°, blending to σ = 2° in the faint glow so unresolved +stars leave no clumps), reprojected from galactic coordinates to ICRF cube faces, black level set at the median sky with a soft knee (the faint glow away from the galactic plane fades to black), gamma-encoded and saved as WebP. Build: diff --git a/src/data/local_data/sky/milkyway_nx.webp b/src/data/local_data/sky/milkyway_nx.webp index 9c75115c513f0cc1b79c690018d4434858504772..fb14fb996abdb5682b8fbd45603a7bd448fff628 100644 GIT binary patch literal 4638 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 a;*58%DaZSsBdJZeXoKjHrQQqp@B2R=;zJMs diff --git a/src/data/local_data/sky/milkyway_ny.webp b/src/data/local_data/sky/milkyway_ny.webp index a85f3d47e2a864284f64c047109510208b3938a4..fb0a48760534f7441499320af9aff841ea82c674 100644 GIT binary patch literal 19124 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 fMH688yZ}_K!D;yn1Vl269oHt*R|A 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 literal 19634 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 Peck$eGHpLqu+#nqZ73H4 literal 5478 zcmZWrby$<{*B>b*jXLQNN2jBEbccYHV<1RKN=P@1(WSybq*J;@T0%fN1QY@3md=;b zufOZvU(a>ze$IW)`P8E!FC$|_1_0a`lScr~moq z*z~6dGb5FXl$*<`$VI&hh`~R_O+q|d$g(RXVo8F^bM7cs%*=h(SaYqpxmpKXUvBl; zzjux>tz8zmZYlzB>%T5%PtN76gl|fh^x~n7wq}FpM-dloPh9rPpU3*zs_k-+Cl42) zb=(Pu57?M7V%A)%e;xHtZj5DEjv+_?3}%m?#x6!?JayIa#btc&<%gviWnNspP{Rcx zqnm}+O5YT?=+@0Qu1m$RG6CgsFC$24FmMF29db3#<@TCCO5L7fjiViszFH(Pd@g62 z-^0G=?<5_z5Qsxl%G~AQ_QOU`?rvbhXZbBtO-Dm`6$!yjTTcpiCavYgu{EyYSYs4l zU`mz5tv|4&*4G&7S7EXe6#@W6lT-R1LT zHRZWAc?GrW5xT%vm~kLoAC8c0+#i%HEOt$hK~2t5DXrb-7AxE>1I`9REGk$bAwkj) z6?Qg@C}`>wd`;^(ex)%SXYdZejW

F*RAHu;&FylDRD@l49QwSV~sO^Aw%pT;so! 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 MST=Lk{>M7~f8_JF1poj5 literal 15028 zcmZ8{V}K@W((K!|&1u`lv~AnAZQHhOO?%pyw(V)#=AE;9&hEGOSJkfvnURqZS*0i; zDq7720H}!w%B#wA5aj=PuLlFk0iptc0zi4uAcF)7kix%{U;+v?wR$j$O3hH?2w6)V z3nsan9u;9%i4{=pyRIJk7WlrtCeKbX{5&nm&91)Qa$G;?S-X5*0eoL?e%FD19}lG0 zb)P@)-r2u&zrC$rt<%5v`hA_(?O^BjLS1S#wBo~L-L))0q@qeRntL~l@^XCVw(7;f zwz-a&0Pn`@zEaTFfig+>vG9m#Vmx?>0(0^##du1JRlxh$F%*SPquyZnp9ccEu7ns! zod@CR0m_=l3EsH_fRH18y>GeJb^APW{_^9*%OV+)cWN&g1+;RK@X==~rw6Aq4nIbE z$az({05CYym|#)j@~>6(SeTMv^MLGj*k864#bQ9B{EK->*?zB~U9uBFF+oW|vig-d8cG%tDfcev3W8o=EM5o{4IuHe)z0uXsIJY#X9wip(>@qeiskZ%i?ipCFwxqIglwpSafw_R9%E6V1xQ9icC@Z7piayqh z`xSAW9^ARa+m~yTRWg2dHTJjMX};P5bpHn!|2{W&V-rJe*=1Q0$&t+-cl@jR=K%rF zfq6c&=cH|~(I|_mjt!$#&{^}~nyzt3p#X_D{0j=xf+1O3^&S_xYQWpqAZ6xB4G3YeYGnFiO=^Ny-OZHZdS-jyMM` z4Nhw2P;c2*bF*6b-G&sCN3FkD#LSw@SrHh0gNJDE5q{$HP*?xoB0{H8o4;JNRx%qI zF1e0a;RHa2%RJYDT|V5jLcxCRFL+_9)>3JyD11*J zh*RuMq&&Lii%goSJM;cYpBM8j`&6-3ue0Qa51>!>OO6y-(YkRuzs_b4y>@(PEkk=t z9%Ml)5dEK1vf7e@AQZ*r%V7O*62GdrdrOdLV~z3 z!SqGPO_wV+yp=YgngZ<4D&wTbF#XP@#V#p*%=clM^BUGH2`RuraP;bNc^kjymTQ|7 z(+(|3CXmJ|z=z;sGcG;lZ+4gQ8;g30dBG|n zL%$bugX0rK^kXs{X_Wh&VrKpq1AkS!=KFm(RUiIm0>f3=u&?8Q;XL88`2fsuwAPSu zI_@uO+?3DoEpLwJYdX1nU|88&p@JV;HAfCiz zPef{>n<{PNaRs`+x#uK!m5zit4(pd+F?bSc`aEyAxaivu5|wt%tbkz9Xf2!A(TKa| zow2}p9J7j1;AKT&sF*aOr}TITI?zXZlg4#}BI3WY{$JV}yoqL2wk%T`J1Uo#>Ts&iK*+U?9S=vAKR0Swt3e@6Jo5xx>hAbgz;pKP76gvb z$+{uEJ(d3O;XR3Nj=0_Nar6XNqft2&Gb*)d+VueuPuF__n*TR;{E*}*ng4QP{jT`L zT}F!zP?Q8Z1a77sY*y`t0)bO?>E+IfLTdKH$Kg)iM|#4U_Z93yAa+C`xpS_vv^e@J zhglJ!3PagP5=!_`3H}u6lSy~oEv7{Y$dZfz?e!bN%jxmIdY=36zlDqzRG?~YF!t;P zBt{r#3OU!4BA=fk;-#-Bkq}y}xc-?cdt1|-zg^0nLdrg3B<9lU!%Jh-Oxp>}QutOl z?rGD+6>Ue?TNz~6S}@UO714i0(OsM}B*&P?|QW1@hnOw0tBH13k#6jqHNRmE~VeP8iRQ>LSs0 zyo*O4PLI{ZoHSX(hQ)0*#|BIrG}JWxc0P4h!q&S%CLQxTOc4$s8MQc?ti~8J`kZp) zT^mZDrdui`WtF=>Sr63zr(+kg+yOmYkmWJNQcBX7R0kfFh!U2rDbHr}f9o1wauhiu z35mLgnAi#D3J{A8DOl|hHm6f{LS4?Cz*qi>+fMdQXWoCx1=&DtW_@KL`d1J7S2sm_ zV3x9_ov4D4gYnC;gMyy1HBDw7aeR_bq2#RBR3nPcLk*Cl&Jg{U;NJpP9O(Ux^0f!e zmmi#D2jqoROX14Wc)Ff;fB2L*lKP7R0WSH(a`Fhk*Dg&5fb|POCH_lw=so=rtKoUA z?La}{B0O4Kd5Z?C^%+4no;G0iKi^05@JWOe(LmF6n2~r_XYfun0C6Yi-lj9znaP=F zgVP7`>!#)}Tub$f@rS;^GVhx0TogpO3rq4r=iQ+=!%_YRf z1apnNta3F5w_%ya={~BJ!JG`Zr_`D-HZwlnW1;PvqPA0Lf~eAZiKa2)BcM&8s(6Xg z!)C&8XK*rZOwSFhkRG>6)J7;b54A-TLM~!Lma{W5OyuWT>tg6xP<>aVAN2G?h?~D` z{v$O9uTO;FF5D4NS`Y2{0vGQg%!!7?`Q6h7*zd=;f@aNn_fQW5_v@Q>lR>p`*_pn1 zqX zkuOz$DF_}POP9k8hBpTI*`4bBc@gCr$A}$X)QPBI-%(VzGk5ToM6%h(Tcb@HNldou< zy8N8;QwBm=?dKn&&Bag^!Ii_@T2{~5_J+#V%vf#rCsK}XNuQRIkN7r)Rtgvtc^i*P z>~%9} z+~*5AwU7|1Ai>QI(K(y`diQ0mrJqEezmo7oJAJdcz|E0;EoC|3sQl?*~S`@}tfd8hx(7g)}HKPpFn*&~&gRT;#O?hLYvp zhFO;m8*p&V0$0Nyr{`Vfbr_5uK*37Fcmo@XW<*$)=>fGPd`(xy#v{`fj{gkb!Hly; zlnGSfe3o-W>ha^sD0{mVgMQ3Xkp!0Jk3@Dp6Q%LpRecuqi8}D=@Qoxj5ty@)g(LgO{D+tziu@-sR zyApofmGzY}OuOcfpVWlxoMIB7^r#n9$Dieet@bvkl5B1=FQR`68@j+r;ZJGkroFcv zI0Frjz?3ZJ$+;i%2O zVJX??@vMxs4ts`Ablovbc&CXd+@*jo$)pLwd%;r0P+*fd_ina)OU|`Vsx={Kch|(l zpK_zKxaHvd8T%$^lQ*&R*w~H#4*pprv8R$b?e7-MVr(C!{_z}IlyidvnkAJ}3PlM& z*&F_+e*Zlq$i=WTCN~D&fjT4KB{P6qp3m=`Js5jYI`>X7{t-=~+hQ0jMo-_tA7UM> zo~tyZH{OmicJbR6h8V)tq~hOB_YV?fBWz%|ayMA-nN(r0E9J-OE*OXWOs5H=+ECtn zk-20#W5tU?x544l)6tc-TA?TL^ntZLXe*SS4~6-ug0DVVXWJkUzb z-%~1XxYj7`@ADtoQv5dmw!F^X?0)Mv{0t$&_QinOE|o*cY-?>R1cqjM>)++_ai2Lb zk*i~xg~}kZK}t8!a`K1HBz2QrT)4a>#KD^ujz%tnEfjXbvLnXy4fJU^YkyA|B41Lp zr-+3(Y3t$RZ3yq&bzlw#ksm!RLCZPEb3md8;pCp>g#CGQ&ECSW6MD&Nj1k}3g&)(@ zdc&l;l&KWtK^be3dMXaw1n=e)<@94<+Q4oGjPof#%#9>#8K%--p=ZOEQ$A6g}P~c@Q$msi)LPlNGkf1doZM1 z>`3$51;}mD>IYi%w+RFJ@9_)J-?X}_n{9rQ{*KRs!FGID3+}3HK47y zfWzV#a5_)gaqf4B_MLPYaJwZI^CWBF&v5?dMiccfhLaAzSMAfxiK|wo;(QMIe_afA zHK#IW`4_!Co@h7r9qL`j@NCdB7IVBlPgW_-A9vK8$OJ2fCT877Xmyk#LAmg)LlI2; zP)UlE>96f%hk~&2P&xelx9bt)JMs@~)qiv}kH5BE94@?tH_db#4~xKojzC_QC20v- zQ1r4O5t}@rL_4+{^%DNFHvG03tzh_+y~akw&2P!yj{vPjw>Opf&kPBjhP{Xi4OmJ< z{$-D@htq;ysU7%RYov=4Oy47mTF@~s4nCS91|^@2wpV}l}uJ- zZpN3;(*%$Laa!BP^SnRM@;Q7L!_6NfEA=KeRp))#HC0u$Gr<{sI7g^nkv7EjaW@@)YN$ujRjX2 zI{UXqtIJRWAuTFT;b+p^yoIeI#)R=xWpYpmZsD>p*%G(5dsu|}76JR_l_gsc89dL9 zx_*wk3Zl6z>q(P{Uc_qrZ>fC009xEegc70dL{yLfG=gnBpmXnqYqoYl7s{zwgknW$ z`D8m^tv#HU@$Nt+M=q7~2{fVCv&5*s{Bxr2C z`j>W>ULo)=lo=%NZarFFpSsK2@}Eqj9AMKkQ?P6R`}Ri^kD_O){jqD@<(%>1%sQ)?mOQ?uh_Q!FD3a-|`8&3IQZfuf zJy@y1DeIpboFql3ZFBPknU3{e-Z3Dc>a{K?df{iOz=|}FNrf$fD$F8H%*YjZv&I0Opq@W7BiR3!&$~Er@aC{9KGTRjL#rJAOVlN$gi&a(ZZy9(U?7lOsV}d5)6At zc^<_8008FGRMQ1C<=B!;9FrdUSULa2`j*CpELvx%ZNwLkFQ0roH;ZatQ7D&tn6LK53;bCj0)A zNl-tY+9P81cLh34KmV*C;w0CtW!;fS>`6W>Eyh1bP>&-iS;N+J!_V9^f-Lz}93AAP zs%kpuZ&ZY5V&sbW#22mYL?JSCchvTaQP674CXL z95?But0Rtx359O|XypOY=E%!$pCL|e%l84%`=A%7(soX>hC^4aCWJwL5@h%nzoVIZ-mLE9H|UpFA)u&o}MRWu3Hvu4G@2-*z9 ztkIat4hy0)o~ixi;=TC+4e|Lr7)ON``ypE+CxS(FURXvP>y=gLyFk+yPsgha1+nEVXx$eAQ>rlV?WP6M=z!3bzyq_0bswuq0n|9`dMT~;lnWS6ahrm z@1GhB0aX1_-E0q*(cE2Px;xV04M6xw$LbRB7{?u z0Dz{==03UaR!XT9g9RDOYMl55tcjtFJqFkvDl35{#=&f4l|^Oq2?p_CaEw^SXvL6S zu}(7H-u3T}&5@xM=Jnc@Z4jB5$lek-inLgQCdAq-v%jCMV5jr}VQNzZExN^I4oYZE z?wTUR3-LX;Jl5XQJL94H|3Mg_(o-PJj-WpbpA(h7idAXJYIv=y_BZnEv8N*|a#Tc| z9$9kjSMKJ*(x$#2I}e)dHOzC#$Ds2984;K6yp`efwDcZuD4Y!NYdReajI8A0Nu_b0 zH?;!-#FXqLe8CPa-{;7;Cw%G~3cP^Vg^=(+JA%QS+@W0HP93A`j5L8IZ4Budh9DeJ zf%gM3wXcXhCycz@V7J~YK~}~C3ucdKK|6zOV$?h3nrv&R!_~&%7aSnG=UUFu?;i?r z&*H*GWK0x&hsq=>-#gQ-;ynqdY5uMBiYxDI_5Oy*W4?thN|e5A)ce=AK~A~f%u7w+ zDt~{#xk`6|!O(*^3G#OtJ+7pO#EWo{vBjV>!SO6u7qTe_e^E&kn7t{y7c?ys^YV6= zh}IG5^g56Ce_SChwwdJOq%jZ}dP!^EJujQK{aG96{L%+aAM2!YK;5@^TE6Iawe$}$ zFv#v=K4^pPcWCdMWn5bc{?*k+m1HxU2k7kJj;HaRCGDCo86px~CKRu3_!ojH*GlhM z7k*L;^OPJGtoNbkD%M!ma{}3oAj~Xir?)8HmoH@iplk+!fB@(@faIL=F=88p*2(Da z>h)J^)=Z8aayY*fHfqxar4CJDvuIQVsbrwO(fY$as5~XR^Pil3R?_|vde0q=YwB|~odNn-4(c$iNzVw(wSo{F~ zaCCnm?bKv0-<0SiUhF>Fu6x6J`ZInQjYO7~JOOy>ltHa0S!^N?gPEvg*6_B*fNaWm zlV-@^k&L-->}MMuAd{NI)cr=IE%zD2eO)91Vl~VX{=G5j(w?G0InzijK7yDKRAHY5 zJKH4gB<^Y)0DupR3GL>Y@wD(z(ArN!jrM>ujHJdKH4orey{MZuSE}XxUzOD!_*_8@ z`PyBE+F#rqK4Z%z zxA><3`MXKy{NYUJ;GYW(yUbFS<6In42j7(aSjo1OLDEb1*Nh>%CMyyLk>cIYI&y@Bn7++r7#>j_`=8D4kPA zy8w`X?7U&~0t2lbkfYUC%l0R;318H)X7hd^1eSw{!CX8#SSn)cf*c4@6w!c%8!^S> z%t=Yj#)iN^z=ezHQ(heY%KHwNwqU#AF??+54v2ALh}D{W2traCBKH77HHqD(m`uGZ ziZq$&@QQhV8}M|gEs8Q`r_#Fj2LO zLArBpFp9ajMu~^LCKpRgi_<1rF-*)suNoOxW+PPqP=K6`rrE1d{ppbulHExwIcaqp zM1R<<0vY|T_#tuSI83b-2oD01IMm9{qqVy>U~m~neHN2ctcR0q9RtXFKw!}>sM;w#Yu*{3z!4p^&SOXdk=qnYxRRFUKVw5?$7Vi;QdprMsEiC zv38WECr{nc!R~*Ue{5qtIajbL=YS&4-QCecAM7jS1bGIOleNVsP}Y?%86s^2k>mTC zMMS=%yF!Q50--3TR73zmu#R)#JH~jNTOr3OL*!Il^t4gJd_0}HWV8BHs_cU!a*;^- zI34Lspmjlg{e-_Hf;U%Od~_4{pL>y=uNKcR&(*~Ty_T*_{2DhV)W&@tDWu+8TN(|el$HYRn|Cah|qF*%c0rxbs=_bO?wK(P#fRsiLZ%yTHiZPJx2XSOrFkDKV zXbh|a2C^~nGp;MFWD!odnz{5n!r@!iva`<98_%KGQ=~LWFIwXedlKdLSsMVvcOURt zx$(1hc1XRI5}p>P$TU-OCWBz2j`a?;(td zy1zw{F=)EY2?_;WIup7o0kr7Z`R>&P?Ala7g8%@a zV?u%5Dg1_ghHwTBF#)NvRQ1^}RmCdeT0?`Qj(8fVIXhzO4o)wS-JIxrH{#j=a} z`gb9B>AS9G6>^t}EGuCN$6#aN5b(svJAT#l5TlrmFX@F|CQ0-YPPa@S)iVpuob zImcEWT@bfU6z!KqUmsh>(*vqNo6}C{I$LQdV=Qg#qdGC-Ge6)zMe@s*!?PjW#gSmI)zy1Vx>pd+rOs5{k>IX)$T!;fpf_%fo>O8|NKC$G zp})KS@PbP^COF1g`kwjgoHk{CFeefgu1i zUJ4E%8Dz|zic8G5L*Z#l-dh%>aJo(sZiy20og?J@@zjO}bC;4SAi!QgZ3|7l?cI3SN~6XNUcl-Z)es2%L^WVB{rjF>ltR@-T_9L{ z2u=o50w2>fjD4hpKY+{zUjh1K%C?N45;Y@R6YQ%H)m{S3jTT8QYc!KjLa!R`8T!>! zz-6OSGMgsLWC&5_h-f`BL=F?OzQR7#G#9Scf86`(0SNZ;MX4obnbGya`O;3WoWe+j z&nOsCXi4<(`x}^*ny#d{m6*ki<^_s;^%QsX;J4sLw{vuiHFL@Ako=>(8~w4wWhQbo%6$M17BvuYT)gcaYn91&UcOo@AQA?7v-iD% zXwaAeUD;)@gX;p2+TM~`q(^o6gPsMKaMZXHHA15NofxD|)ges&(3ZUcG48d{ir%ZC zC!OCV_p^gc(gYOxBnaD)k!0a@D~VF%k84CG+O5$0a}tkIjq*Q`_>?wCRDk5c&yjH@JG#9Yn)3$H zGGVy-cAn$ki`o3aNNR9;nqUt()9K;DykG^Xkap=F)stPXVIl7y;i9$BbZkyVjX5zz zSbJOqwjJhwc3PuvB$Ye};)!6dw~4eYswGml?Y3k3L+vo!2QXg@r=)_B1(L80GX8R= zzwHsM=1Cg5+80ji_$Wh5IW=26GY0lCS$A77*$Z)y_Yv~90C(qTRgF!2IJ5sLs-%J@ zKAcPU^qYbE;YTcY{9x)WT%+|_DJr(}XU#-HA;JEQ5}P$irkWms^QxyIViq4K^C)?l zT$V^`N_t(W6t%e^UOWtMYyku5bn*dHW~p&->T2XXLeY9dK66R>E4Qcl7!asYBsp>= zl9uJ0W#U$E1u*w)i{?NM_T|nzqJMcb^Wq1a?u=!S1@9OVz#y?-dIt6-gL-lvtOdG_ z2^Jiig2&PnE3FFtbuClpdTNNOg8QC`LE8<8`GI$#afAKX3fosNaNMpveLsY=009xG z07}`pPx$6@bx3E{bSIDlTlTzqOv@%UnKbCh5xw3TM+l*vBruPX2)U#mK`g<4j3eA7 zWCq`H=flQde&E*{RFu6)56e_yOWX3PT~dWYlJuda1POL6NxDgK zL&ZG&yNz~*f4FK6AKC<5JM}o!`us+5Y4;@&-H2-~-_|ox9*L>@OeVbp6AVx}dAer{ zB4G|pGrf@mkpT|n!H(M@Mn@*#2P0j6%QR`#WWORph-!2{QP)=$)lMab_h*l=e9 zuu3cXU%ruwmCR;_Ae(d3NtjJb^{Y!mFmjNoHAo=oH6;q1lgpC&c*>dYV7P^g)27*t z2?d}P3!p=()eVqHh$c$jMEV;%NQ#{c33I${R8)8ZdX7AgxLVrtAW@ge?Qc&2kMQNt zhR4MZQp_=B4zfkuJy|0DEyQ0tgBEeL+>qzz;rHwOY;0Yct7RU$&rdC@H;prYM5hrX1n%G5pq##m4XY{a~jk>Z{tbW&+z&ra&imq*$|1O)pY>pD8e zYZBKgqs%2Ps_C{P29X-CrqgNesj{fR>JeVR61A=NIZ#%kNcj#PY2tM)OfXi z*Th;T4xK(%e1?>DhR5UExRI&L$)I-L1I-$HC!WJXrRHUm%p~#HCdYc0W|C<4{BbcS zkEOa?3=|)hWX~(3yrf5Xgjt5}YI{J8qsdQZL3xBt(r2+(WvfLU`A*{lGjC@KC~F<) zqeUrk!cuuhhd1K7HJkRJQ+bv_UzHEAPeRj@sdIQvU@&C{4&2c(WI;+Vp3e4*WwhgH zyO5KwHoSOAoAiD5^V}@6{)tyV;!aTBTAS78-0djbfah+x3o_`S1(P??`SuY^Q%5P`z0o#-aTc|G1D4?E5|h-)uB3olk_Bpk$XI3|XCji{{+iGr ziL8k|n5o|u)W(J5Wk;a$;t43FqXe!q1dsJBv$!2)P$p5e(23Z4=7#cW6OC@~E}FV< zJ6cAioro|nV%V&wu{x*uWd7hiao=ZYsQ20RSB}CyQQ0$n2U~h1u9YAaE*lIVd%9G` ziApq6wDE7tP;t;+v&crNE_SCFg2m`~-x6YQn9FZal=-MFwL5a7MQ$)~dM$|juD8EH zOKeSX7c7OninqSo7{92DIKA_M=4B*zCJ77XI$cATGM_}cw3}BkShoDb>iT^}J?c(W>Py@bo}Z2dYnHlALg#C&k5 zZ9Th`DL1RVHLuYSr0@sS>3g3(zp--Ni$+5df0iGgH>v)-a;yTH)>{s#U4#_AJ$%QzkCs>IhABqeQRz%so@{=gWlL=M)pw* zCx5!cGy*r-e&8lJMLxD79K2DVBYlb=j*|}Vtn@4dO0OkgBKgI7fzQ0aCb7V4j6C2X z?Wnx|LLSe2WnSj$`FgNE>H-ATcFIzdGoJ(>mjA_rpF_STf6=X{=|kYlg-ZGh4qQ zZv?0u8nO`j*9C>ywAcp;jIB#UB*Qxes3KTZ_X!F9ktU$7h zx5Gq>2v)Ek&QmLG7=vWJZcH5%Wli4qM|4$6W%pa|`5m};`hG8 zPWODkph0077C*{KPWE?}jDCJ2_b9&wb0 z(u$dZxo>V9L28_!OHk|%a6@CP0zV*ra|-M6fn{dkz53SYdAasdsFX47zof<^(u^a| z0q12rEj^Gm(xX!%r1Ym?3JSr`s@d4jhLVYv2pM07s^|_FIOBs6wzH;7wSN4&# z+>cR>E?dP*$JOMf8oVvOz;f5?F1Z!vFY!RK-q}l^mp~|T%HT&Y^X7;Lfgc7cA@mEG zza-+Sad>`bW7D`TXG0(P^LG@-S1M?cIyEaUSWs9jd<#{H%ltm1DQ*t-PO*#d5Q{B) zXZX?A@2$xRT`jYxvY46X$gd}6Lf2?^caa{kLh9U5g&rT@qJopq0VjxCD~Ax(>}(aC zpcN&GRL&0Phizm+nUc@@cb`}ql}Z^-l*hw$`>V{_dwJE^kA_s~^*sSwtk~U4502Na zLybU0fXnL$s_`P!iBqCsaFhy_Ni?qDasDr&=T1V*aaZAAxS}O0-9@e#_#Xn8hoHVI7d9OiF} z*ZO^8JbbKGBVH}$6{}rXXOtnzuq=Kbk7;wHaL8&m-LkwE!%;OwK|HkfHZ!uF8geM_ zq!A{%1jX=B#0V;|Ch31C6WnUj-6q6Px&9WM0H)zphSHU3-Lqqj`2hLcx-}owLK+re z^h3-)ObH8>f0?w<=fH2~?bO9<(Nh2k(@zrn=qz_k=g;h)lqOL44eX1wgft&TF+-3L zqLiI!-}7WrG=kBw?}`rX5lxURB+5Z#hj}kml@H!Q-x|&KF^>P|06=^n>QYBXMgkvVMuiz%Uw80U{%8vLM6La#(ahUe_SCI}HQOESn`Yc4^mUbiB z1fzS9DlUmZyuAGml|O*GzWS_Erz&7#1TMr|PGE^Uz^@AAdKmu|vgepV+rxMz;I|#) zO(_g0&Qy=~Fur|}?^$b!tI8phLI4_5Oq?6f$?^6p-aUKynSWV33D1~6$5L!+(zt?} z+G_EYQMn^EnA(wj$j`T#?|h6WaA`&jj$4b`5mdwCQ?TW#A|x(YXy2vx4G;A#P;sX^ z>^mtzzAb)0kD7qkd@5mE50L`AffU2PgwhdxA>{XCqW@MW#?ENa*_FS zJyvA*)f(B##Z)43Dr1fL>F0NOweJ8>eU5U@b z*rNIY$r{_}B}m?+5phZ1=12`anV!4NDs z)XyGQ9uWc1HNP9y@`IbN-5-?@Br&&+D2kzuLf0^fJX{xkTa4}D0BcoE`6W1y2GSPs zq%dq_W%{z<-I_FZR??aPA>znvqF1=3@Wft6iBd0nSo<1ezM{rvm!q5KBo^d-&f?qP zRX&vZI2VWNT^51T`Ng^k?SKqpG?piejm8;LYB0Pc=^5}J#^LyZfri19%)>;Yr{=UZ z=>w^4Unk`wttfdieW?ZHs?q|HP2PQaC~e>}RDXAZ2A->US035Co)WYSJu3PTk>r#p z;RhJg_1%Vn*9jk9ntUG_|Q`)BhmKd0Wf|AsNAB)%_4#kj2#>*sHII;5|crY z6{ZYH4JPeMLD!g6#;FJ@O9}gv7QL6MZ=-deiDWGIr-Zu{sh3f6F?%7;w-i$r(h&QF zMVy(6l=am?YbunTg$`MG;Yn)=Oz_@j2IO&H%b#N>xg24t?8NMlSZqG)i5rY+4JZ*sB$(Vo0`n6pXB!2nl ztA-A)FF%;9sDfj+(pt;ZWjg~Wnhfn0FW7xYVb!Eb_l!%sa9D@8LYU~F?)ua|xHPqx zA?cM5baLx;G9k|ofTYCa#7lGx`YZV+frRQ8ew9yGoQ190ar1V@9h%*Yhz!VL&e6uL!M=*LczDyRpfUTHO~DXMJ6CG^bnEbgUV0-kHpg66Tn*MuTD={YQ7iY?DRs2cRyV=PNUd zEMLYK=a;db^vZ_oh9x3tGH`hM<%pma5~B(1obnZm7FQor)vS@3bHn*-(!%APig!lM T_ySA3J5#y%kyk2W0O0=tCamzp diff --git a/src/data/local_data/sky/milkyway_pz.webp b/src/data/local_data/sky/milkyway_pz.webp index 50f0793a6f7715f024afa92ca1f8f8425fdf9c4c..06624bf210e18a7407e8d6ce494d8d72eccdaeff 100644 GIT binary patch literal 8264 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 bebG*&x!_y;aM9SMagP!sHG#r*b^zdi%26K@ literal 12354 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 { + assert.equal(smoothstep(0.1, 0.2, 0), 0); + assert.equal(smoothstep(0.1, 0.2, 0.1), 0); + close(smoothstep(0.1, 0.2, 0.15), 0.5, 1e-9); + assert.equal(smoothstep(0.1, 0.2, 0.2), 1); + assert.equal(smoothstep(0.1, 0.2, 9), 1); +}); From d94cc35c81a62722f13485befb61946428ca2f34 Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Tue, 20 Oct 2026 13:37:43 +0400 Subject: [PATCH 12/36] fix(sky): keep the Milky Way out of model lighting, test the sky wiring Scene reads skyBox._cubeMap as the environment map that lights models, in the TEME, flipY layout of Cesium's own sky box; the ICRF Milky Way would light them rotated. Rename the field so models keep Cesium's default. Test the anime fade on a real StarrySky and that the viewer gets the sky as an option (skyBox: false would drop the Sun and Moon). Correct three comments on the star limit and the Milky Way levels. Co-Authored-By: Claude Opus 5.5 --- scripts/build-milky-way.mjs | 6 +++++- src/app/application.test.mjs | 11 +++++++++++ src/app/viewer.js | 20 ++++++++++++++------ src/sky/starrySky.js | 11 +++++++---- src/sky/starrySky.test.mjs | 8 ++++++++ src/sky/stars.js | 2 +- src/ui/visualEffects.test.mjs | 13 ++++++++----- 7 files changed, 54 insertions(+), 17 deletions(-) diff --git a/scripts/build-milky-way.mjs b/scripts/build-milky-way.mjs index e0703f882..55c7f8225 100644 --- a/scripts/build-milky-way.mjs +++ b/scripts/build-milky-way.mjs @@ -31,7 +31,9 @@ * celestial pole — rotating each direction into galactic coordinates * with the IAU J2000 matrix. * 6. Map the median sky to black, easing in with a soft knee, and the - * brightest 0.01 % to white (on luminance, keeping each pixel's hue), + * brightest 0.01 % to about 97 % white, the knee's offset there (both + * levels taken before the faint-glow blend; on luminance, keeping each + * pixel's hue), * encode with gamma 1/2.2 and ±0.5 LSB dither against banding; WebP. * * Usage: @@ -373,6 +375,8 @@ async function main() { for (const plane of planes) blurPlane(plane, width, height, sigmaPx); for (const plane of wide) blurPlane(plane, width, height, (FAINT_BLUR_DEG / 180) * height); + // Levels from the fine blur, so the blend weight and the output share + // them; the blend moves the median only in the faint sky it smooths. const black = luminancePercentile(planes, BLACK_PERCENTILE); const white = luminancePercentile(planes, WHITE_PERCENTILE); blendByBrightness(planes, wide, (luminance) => diff --git a/src/app/application.test.mjs b/src/app/application.test.mjs index d3ef8c7cc..dcc937c75 100644 --- a/src/app/application.test.mjs +++ b/src/app/application.test.mjs @@ -219,6 +219,17 @@ test('the separate viewer export imports without constructing a browser viewer', assert.throws(() => createApplicationViewer({}), /containers are required/); }); +test('the viewer gets the starry sky as an option, which keeps the Sun and Moon', async () => { + const { applicationViewerOptions } = await import('./viewer.js'); + const { StarrySky } = await import('../sky/starrySky.js'); + const creditContainer = {}; + const options = applicationViewerOptions(creditContainer); + // CesiumWidget skips scene.sun and scene.moon when skyBox is false. + assert.ok(options.skyBox instanceof StarrySky); + assert.equal(options.creditContainer, creditContainer); + options.skyBox.destroy(); +}); + function pinchFixture({ zoomEventTypes } = {}) { const handlers = new Set(); const relayed = []; diff --git a/src/app/viewer.js b/src/app/viewer.js index a09836775..633616fef 100644 --- a/src/app/viewer.js +++ b/src/app/viewer.js @@ -103,11 +103,9 @@ export function installTrackpadPinchZoom( }; } -/** Create the standard globe viewer in caller-owned, visible containers. */ -export function createApplicationViewer({ container, creditContainer }) { - if (!container || !creditContainer) - throw new TypeError('Viewer and credit containers are required'); - const viewer = new Cesium.Viewer(container, { +/** Cesium.Viewer options of the standard globe viewer. */ +export function applicationViewerOptions(creditContainer) { + return { timeline: false, animation: false, baseLayerPicker: false, @@ -127,7 +125,17 @@ export function createApplicationViewer({ container, creditContainer }) { creditContainer, msaaSamples: 4, contextOptions: { webgl: { preserveDrawingBuffer: true } }, - }); + }; +} + +/** Create the standard globe viewer in caller-owned, visible containers. */ +export function createApplicationViewer({ container, creditContainer }) { + if (!container || !creditContainer) + throw new TypeError('Viewer and credit containers are required'); + const viewer = new Cesium.Viewer( + container, + applicationViewerOptions(creditContainer), + ); try { viewer.targetFrameRate = 60; // Before any tile builds a draw command: Cesium's per-vertex model diff --git a/src/sky/starrySky.js b/src/sky/starrySky.js index d77892d6a..d538d430d 100644 --- a/src/sky/starrySky.js +++ b/src/sky/starrySky.js @@ -180,7 +180,10 @@ export class StarrySky { this._loading = false; this._starData = undefined; this._faceImages = undefined; - this._cubeMap = undefined; + // Not `_cubeMap`: Scene reads `skyBox._cubeMap` as the environment map + // that lights models, in the TEME, flipY layout of its own sky box. This + // ICRF map would light them rotated, so models keep Cesium's default. + this._milkyWayCubeMap = undefined; this._milkyWayCommand = undefined; this._milkyWayAttributes = undefined; this._starCommand = undefined; @@ -191,7 +194,7 @@ export class StarrySky { }; this._milkyWayUniforms = { ...uniforms, - u_milkyWay: () => this._cubeMap, + u_milkyWay: () => this._milkyWayCubeMap, u_intensity: () => this.milkyWayIntensity * this.milkyWayVisibility, }; this._starUniforms = { @@ -301,7 +304,7 @@ export class StarrySky { cubeMap.sampler = new Cesium.Sampler({ minificationFilter: Cesium.TextureMinificationFilter.LINEAR_MIPMAP_LINEAR, }); - this._cubeMap = cubeMap; + this._milkyWayCubeMap = cubeMap; this._faceImages = undefined; const geometry = Cesium.BoxGeometry.createGeometry( Cesium.BoxGeometry.fromDimensions({ @@ -440,7 +443,7 @@ export class StarrySky { command.vertexArray?.destroy(); command.shaderProgram?.destroy(); } - this._cubeMap = this._cubeMap?.destroy(); + this._milkyWayCubeMap = this._milkyWayCubeMap?.destroy(); this._milkyWayCommand = undefined; this._starCommand = undefined; this._commands.length = 0; diff --git a/src/sky/starrySky.test.mjs b/src/sky/starrySky.test.mjs index 1d9d2f8a0..d6488fd1d 100644 --- a/src/sky/starrySky.test.mjs +++ b/src/sky/starrySky.test.mjs @@ -127,3 +127,11 @@ test('the Milky Way glow scales with its visibility, for styles that hide it', ( assert.equal(sky._milkyWayUniforms.u_intensity(), 0); sky.destroy(); }); + +test('the Milky Way stays out of the environment map that lights models', () => { + // Scene#render hands `skyBox._cubeMap` to image-based lighting, which + // expects Cesium's own TEME, flipY layout; this ICRF map would be rotated. + const sky = new StarrySky({ requestRender: () => {} }); + assert.equal('_cubeMap' in sky, false); + sky.destroy(); +}); diff --git a/src/sky/stars.js b/src/sky/stars.js index b7ef7aa41..203e1b2e5 100644 --- a/src/sky/stars.js +++ b/src/sky/stars.js @@ -13,7 +13,7 @@ * @module sky/stars */ -/** Faintest catalogue magnitude; also the reference for brightness. */ +/** Faintest magnitude drawn distinctly (fainter catalogue stars look like it); the brightness reference. */ export const STAR_LIMIT_MAGNITUDE = 6.5; /** Gaussian σ of the faintest star, CSS pixels. */ export const STAR_MIN_SIGMA_PX = 0.55; diff --git a/src/ui/visualEffects.test.mjs b/src/ui/visualEffects.test.mjs index 21f744985..3d86e3a48 100644 --- a/src/ui/visualEffects.test.mjs +++ b/src/ui/visualEffects.test.mjs @@ -1,6 +1,7 @@ import assert from 'node:assert/strict'; import test from 'node:test'; import { VisualEffects } from './visualEffects.js'; +import { MILKY_WAY_INTENSITY, StarrySky } from '../sky/starrySky.js'; import { GLOBAL_POST_DEFAULTS, STYLE_PRESET_DEFAULTS, @@ -160,17 +161,19 @@ test('direct Cockpit intensity writes are reconciled before rendering', () => { test('the anime stage fades the Milky Way out with its own intensity', () => { const f = fixture(); - const sky = { milkyWayVisibility: 1 }; + const sky = new StarrySky({ requestRender: () => {} }); + const glow = () => sky._milkyWayUniforms.u_intensity(); f.effects.viewer.scene.skyBox = sky; f.effects.initStyles(); f.effects.setStageIntensity(f.effects.stages.thermal, 1); - assert.equal(sky.milkyWayVisibility, 1, 'other styles keep the glow'); + assert.equal(glow(), MILKY_WAY_INTENSITY, 'other styles keep the glow'); f.effects.setStageIntensity(f.effects.stages.anime, 0.25); - assert.equal(sky.milkyWayVisibility, 0.75); + assert.equal(glow(), MILKY_WAY_INTENSITY * 0.75); f.effects.setStageIntensity(f.effects.stages.anime, 1); - assert.equal(sky.milkyWayVisibility, 0); + assert.equal(glow(), 0); f.effects.setStageIntensity(f.effects.stages.anime, 0); - assert.equal(sky.milkyWayVisibility, 1); + assert.equal(glow(), MILKY_WAY_INTENSITY); + sky.destroy(); // A sky box without the knob (Cesium's own) is left alone. const plain = {}; f.effects.viewer.scene.skyBox = plain; From b00c7c12c8bc73ff3d12e5067f463d079f21462f Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Tue, 20 Oct 2026 13:45:36 +0400 Subject: [PATCH 13/36] refactor(sky): cut what the sky does not need - qa-anime-sky keeps only the Milky Way case; the satellites and keyless cases checked an anime shader this branch no longer changes. - Drop qa-sky-sun-moon.mjs: the viewer-options unit test covers it. - VisualEffects sets the sky's visibility directly: the viewer always carries a StarrySky and never outlives the effects. - Drop the unused star intensity knob, the malformed-row tolerance for our own pack, the test-only Transforms parameter and a private-name test. - DATA_SOURCES points to sky/README.md instead of repeating it. Co-Authored-By: Claude Opus 5.5 --- DATA_SOURCES.md | 13 +- scripts/format-scope.json | 1 - scripts/qa-anime-sky.mjs | 369 ++++++++-------------------------- scripts/qa-sky-sun-moon.mjs | 96 --------- src/sky/starrySky.js | 44 +--- src/sky/starrySky.test.mjs | 40 ++-- src/sky/stars.js | 33 +-- src/sky/stars.test.mjs | 8 +- src/ui/visualEffects.js | 15 +- src/ui/visualEffects.test.mjs | 27 +-- 10 files changed, 131 insertions(+), 515 deletions(-) delete mode 100644 scripts/qa-sky-sun-moon.mjs diff --git a/DATA_SOURCES.md b/DATA_SOURCES.md index a46dd1106..c65bafd9e 100644 --- a/DATA_SOURCES.md +++ b/DATA_SOURCES.md @@ -276,17 +276,8 @@ wiring (see below). ### Sky background (`sky/`) -The space behind the globe is drawn from two bundled sources (details, hashes -and build commands in [`sky/README.md`](src/data/local_data/sky/README.md)): - -- **Stars:** the Yale Bright Star Catalogue, 5th Revised Edition (Hoffleit & - Warren 1991, CDS catalogue V/50) — public domain; credited as a courtesy. -- **Milky Way glow:** ESO image eso0932a, "The Milky Way panorama" — **CC BY - 4.0, credit "ESO/S. Brunier"**. Modified: stars removed, blurred, reprojected - to ICRF cube faces and tone-mapped, as the folder README states. - -NASA SVS "Deep Star Maps 2020" was not used for the glow: its Milky Way layer -derives from Gaia DR2, which ESA licenses CC BY-NC 3.0 IGO. +Sources, licences, the changes CC BY asks to state, hashes and build commands +are in [`sky/README.md`](src/data/local_data/sky/README.md). ### DataSF Analysis Neighborhoods (`neighborhoods/`) diff --git a/scripts/format-scope.json b/scripts/format-scope.json index 203fa7ed5..6d93c9e41 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -1077,6 +1077,5 @@ "src/sky/starrySky.test.mjs", "src/tooling/skyAssets.test.mjs", "src/tooling/skyAssets.paintOut.test.mjs", - "scripts/qa-sky-sun-moon.mjs", "scripts/qa-anime-sky.mjs" ] diff --git a/scripts/qa-anime-sky.mjs b/scripts/qa-anime-sky.mjs index ae7ee69dc..b3ac1cf2d 100644 --- a/scripts/qa-anime-sky.mjs +++ b/scripts/qa-anime-sky.mjs @@ -1,81 +1,26 @@ #!/usr/bin/env node /** - * qa-anime-sky — the anime style must cel-shade the Earth, and leave the sky - * without bands. + * qa-anime-sky — the anime style must leave the sky without bands. * - * Earlier the anime shader exempted the far plane, judged from the - * post-process depth, from its luminance bands. That depth cannot tell the - * sky from far geometry, so the Earth lost its bands. The shader now matches - * main, and src/ui/visualEffects.js fades the Milky Way out with the style. - * Each case runs headless against a Vite dev server: + * Anime's luminance bands turn the faint Milky Way into blotches, so + * src/ui/visualEffects.js fades the glow out with the style. Headless against + * a Vite dev server, the real anime style looks away from the Earth at the + * Galactic Centre: at most 0.5 % of the sky (the stars) may reach the first + * band. * - * satellites whole globe from 20 000 km with the satellites layer on - * (near clamps to 0.1 m): no Earth pixel may skip the bands. - * keyless keyless stack, Denver 1700 m looking west: no terrain pixel - * above the ellipsoid horizon may skip the bands. - * milkyway the real anime style, looking away from the Earth at the - * Galactic Centre: at most 0.5 % of the sky (the stars) may - * reach the first band. - * - * The first two cases compile the checkout's anime shader with a debug - * output (R = pixel skipped the bands, G = raw depth 1.0) as an extra stage. - * - * Usage: node scripts/qa-anime-sky.mjs [--url http://localhost:4333/] [--case satellites|keyless|milkyway|all] - * Exit: 0 all pass, 1 a case failed, 2 a scenario was not reached or the case is unknown. + * Usage: node scripts/qa-anime-sky.mjs [--url http://localhost:4333/] + * Exit: 0 pass, 1 fail, 2 the anime style was not reached. */ import puppeteer from 'puppeteer'; -import { readFileSync } from 'node:fs'; -import { fileURLToPath } from 'node:url'; -const opt = (name, fallback) => { - const i = process.argv.indexOf(`--${name}`); - return i > 0 && process.argv[i + 1] ? process.argv[i + 1] : fallback; -}; -const URL_ = opt('url', 'http://localhost:4333/'); -const ALL_CASES = ['satellites', 'keyless', 'milkyway']; -const requested = opt('case', 'all'); -const CASES = requested === 'all' ? ALL_CASES : [requested]; -if (!CASES.every((c) => ALL_CASES.includes(c))) { - console.error( - `unknown case ${requested}; expected ${ALL_CASES.join('|')}|all`, - ); - process.exit(2); -} +const i = process.argv.indexOf('--url'); +const URL_ = + i > 0 && process.argv[i + 1] ? process.argv[i + 1] : 'http://localhost:4333/'; -let fs = readFileSync( - fileURLToPath(new URL('../src/styles/anime.js', import.meta.url)), - 'utf8', -); -fs = fs - .slice(fs.indexOf('/* glsl */ `') + 12, fs.lastIndexOf('`')) - .replace('uniform float intensity;', 'const float intensity = 1.0;') - .replace('uniform float saturation;', 'const float saturation = 1.0;') - .replace('uniform float edgeThick;', 'const float edgeThick = 0.5;'); -if (!/uniform\s+sampler2D\s+depthTexture/.test(fs)) - fs = fs.replace( - 'uniform sampler2D colorTexture;', - 'uniform sampler2D colorTexture;\n uniform sampler2D depthTexture;', - ); -if (!/float bands\b/.test(fs)) - throw new Error( - 'anime.js has no `bands` variable: adapt the debug line of this script', - ); -fs = fs - .replace( - /out_FragColor = [^;]+;\s*}\s*$/, - `out_FragColor = mode < 0.5 ? texture(colorTexture, uv) - : vec4(bands > 255.0 ? 1.0 : 0.0, texture(depthTexture, uv).r >= 1.0 ? 1.0 : 0.0, 0.0, 1.0); - }`, - ) - .replace('void main()', 'uniform float mode;\n void main()'); - -const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); const browser = await puppeteer.launch({ headless: 'new', args: ['--no-sandbox', '--ignore-gpu-blocklist'], }); -let failed = false, - unreached = false; try { const page = await browser.newPage(); page.on('pageerror', (e) => console.log('PAGEERR', String(e).slice(0, 300))); @@ -87,8 +32,8 @@ try { await page.waitForFunction(() => window.__godsEyeView?.viewer?.scene, { timeout: 120000, }); - await sleep(12000); - await page.evaluate(async (fs) => { + await new Promise((r) => setTimeout(r, 12000)); + const r = await page.evaluate(async () => { const entry = performance .getEntriesByType('resource') .map((e) => e.name) @@ -97,224 +42,80 @@ try { throw new Error( 'run against the Vite dev server (needs .vite/deps/cesium.js)', ); - const C = (window.__C = await import(entry)); - window.__dbg = window.__godsEyeView.viewer.scene.postProcessStages.add( - new C.PostProcessStage({ fragmentShader: fs, uniforms: { mode: 1 } }), + const C = await import(entry), + g = window.__godsEyeView, + v = g.viewer, + s = v.scene; + g.styleManager.setStyle('anime', { userInitiated: true }); + const t = v.clock.currentTime; + await C.Transforms.preloadIcrfFixed( + new C.TimeInterval({ + start: C.JulianDate.addDays(t, -1, new C.JulianDate()), + stop: C.JulianDate.addDays(t, 1, new C.JulianDate()), + }), ); - }, fs); - const setView = (v) => - page.evaluate((v) => { - const C = window.__C, - s = window.__godsEyeView.viewer.scene; - s.camera.cancelFlight(); - s.camera.setView({ - destination: C.Cartesian3.fromDegrees(v.lon, v.lat, v.h), - orientation: { - heading: C.Math.toRadians(v.heading ?? 0), - pitch: C.Math.toRadians(v.pitch), - roll: 0, - }, - }); - s.requestRender(); - }, v); - // returns per-pixel {exempt, raw1, ground?} counts - const measure = (truth) => - page.evaluate((truth) => { - const s = window.__godsEyeView.viewer.scene; - const read = () => { - s.requestRender(); - s.render(); - const gl = s.context._gl, - w = gl.drawingBufferWidth, - h = gl.drawingBufferHeight, - px = new Uint8Array(w * h * 4); - gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, px); - return px; - }; - window.__dbg.uniforms.mode = 1; - const px = read(); - let g; - if (truth) { - const keep = [s.skyAtmosphere, s.skyBox, s.sun, s.moon].map( - (o) => o && o.show, - ); - [s.skyAtmosphere, s.skyBox, s.sun, s.moon].forEach( - (o) => o && (o.show = false), - ); - window.__dbg.uniforms.mode = 0; - g = read(); - [s.skyAtmosphere, s.skyBox, s.sun, s.moon].forEach( - (o, i) => o && (o.show = keep[i]), - ); - window.__dbg.uniforms.mode = 1; - } - const r = { - total: px.length / 4, - near: s._view.frustumCommandsList[0]?.near ?? null, - frusta: s._view.frustumCommandsList.length, - geom: 0, - geomExempt: 0, - raw1: 0, - raw1Exempt: 0, - ground: 0, - groundRaw1: 0, - groundExempt: 0, - clearGlobeDepth: s._environmentState.clearGlobeDepth, - }; - for (let i = 0; i < px.length; i += 4) { - const ex = px[i] > 127, - raw1 = px[i + 1] > 127; - if (raw1) { - r.raw1++; - if (ex) r.raw1Exempt++; - } else { - r.geom++; - if (ex) r.geomExempt++; - } - if (g && g[i] + g[i + 1] + g[i + 2] > 6) { - r.ground++; - if (raw1) r.groundRaw1++; - if (ex) r.groundExempt++; - } - } - return r; - }, truth); - const verdict = (name, ok, reached, msg, r) => { - const tag = !reached ? 'UNREACHED' : ok ? 'PASS' : 'FAIL'; - if (!reached) unreached = true; - else if (!ok) failed = true; - console.log(`${tag} ${name}: ${msg}\n ${JSON.stringify(r)}`); - }; - - for (const c of CASES) { - if (c === 'satellites') { - await page.evaluate(() => - window.__godsEyeView.dataManager.setEnabled('satellites', true, { - origin: 'user', - }), - ); - await sleep(20000); - await setView({ lon: 10, lat: 20, h: 2.0e7, pitch: -90 }); - await sleep(5000); - const r = await measure(false); - verdict( - 'satellites', - r.geomExempt <= 0.01 * r.geom, - r.frusta > 0 && r.near !== null && r.near < 1 && r.geom > 50000, - `${r.geomExempt} of ${r.geom} Earth pixels exempt from cel-shading (near ${r.near} m)`, - r, - ); - await page.evaluate(() => - window.__godsEyeView.dataManager.setEnabled('satellites', false, { - origin: 'user', - }), - ); - await sleep(5000); - } else if (c === 'keyless') { - await setView({ - lon: -104.99, - lat: 39.74, - h: 1700, - heading: 270, - pitch: 0, - }); - await sleep(25000); - const r = await measure(true); - verdict( - 'keyless', - r.groundExempt <= 0.01 * r.ground, - r.clearGlobeDepth && r.groundRaw1 > 1000, - `${r.groundExempt} of ${r.ground} terrain pixels exempt (${r.groundRaw1} terrain pixels have raw depth 1.0)`, - r, - ); - } else if (c === 'milkyway') { - const r = await page.evaluate(async () => { - const C = window.__C, - g = window.__godsEyeView, - v = g.viewer, - s = v.scene; - window.__dbg.enabled = false; - g.styleManager.setStyle('anime', { userInitiated: true }); - const t = v.clock.currentTime; - await C.Transforms.preloadIcrfFixed( - new C.TimeInterval({ - start: C.JulianDate.addDays(t, -1, new C.JulianDate()), - stop: C.JulianDate.addDays(t, 1, new C.JulianDate()), - }), - ); - const m = C.Transforms.computeIcrfToFixedMatrix(t); - const ra = C.Math.toRadians(266.4), - dec = C.Math.toRadians(-29); - const look = C.Matrix3.multiplyByVector( - m, - new C.Cartesian3( - Math.cos(dec) * Math.cos(ra), - Math.cos(dec) * Math.sin(ra), - Math.sin(dec), - ), - new C.Cartesian3(), - ); - const north = C.Matrix3.multiplyByVector( - m, - C.Cartesian3.UNIT_Z, - new C.Cartesian3(), - ); - const right = C.Cartesian3.normalize( - C.Cartesian3.cross(look, north, new C.Cartesian3()), - new C.Cartesian3(), - ); - s.camera.cancelFlight(); - s.camera.setView({ - destination: C.Cartesian3.multiplyByScalar( - look, - 3e7, - new C.Cartesian3(), - ), - orientation: { - direction: look, - up: C.Cartesian3.cross(right, look, new C.Cartesian3()), - }, - }); - await new Promise((res) => setTimeout(res, 2500)); - s.requestRender(); - s.render(); - const gl = s.context._gl, - w = gl.drawingBufferWidth, - h = gl.drawingBufferHeight, - px = new Uint8Array(w * h * 4); - gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, px); - let banded = 0; - for (let i = 0; i < px.length; i += 4) - if (0.299 * px[i] + 0.587 * px[i + 1] + 0.114 * px[i + 2] >= 51) - banded++; - const out = { - total: px.length / 4, - banded, - visibility: s.skyBox.milkyWayVisibility, - animeOn: (() => { - const stages = s.postProcessStages; - for (let i = 0; i < stages.length; i++) { - const stage = stages.get(i); - if (stage.name === 'godsEyeView_anime') - return stage.enabled && stage.uniforms.intensity > 0.99; - } - return false; - })(), - }; - g.styleManager.setStyle('normal', { userInitiated: true }); - window.__dbg.enabled = true; - return out; - }); - verdict( - 'milkyway', - r.banded <= 0.005 * r.total, - r.total > 0 && r.animeOn, - `${r.banded} of ${r.total} sky pixels at or above the first cel band (luma >= 0.2)`, - r, - ); + const m = C.Transforms.computeIcrfToFixedMatrix(t); + const ra = C.Math.toRadians(266.4), + dec = C.Math.toRadians(-29); + const look = C.Matrix3.multiplyByVector( + m, + new C.Cartesian3( + Math.cos(dec) * Math.cos(ra), + Math.cos(dec) * Math.sin(ra), + Math.sin(dec), + ), + new C.Cartesian3(), + ); + const north = C.Matrix3.multiplyByVector( + m, + C.Cartesian3.UNIT_Z, + new C.Cartesian3(), + ); + const right = C.Cartesian3.normalize( + C.Cartesian3.cross(look, north, new C.Cartesian3()), + new C.Cartesian3(), + ); + s.camera.cancelFlight(); + s.camera.setView({ + destination: C.Cartesian3.multiplyByScalar(look, 3e7, new C.Cartesian3()), + orientation: { + direction: look, + up: C.Cartesian3.cross(right, look, new C.Cartesian3()), + }, + }); + await new Promise((res) => setTimeout(res, 2500)); + s.requestRender(); + s.render(); + const gl = s.context._gl, + w = gl.drawingBufferWidth, + h = gl.drawingBufferHeight, + px = new Uint8Array(w * h * 4); + gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, px); + let banded = 0; + for (let i = 0; i < px.length; i += 4) + if (0.299 * px[i] + 0.587 * px[i + 1] + 0.114 * px[i + 2] >= 51) banded++; + let animeOn = false; + for (let i = 0; i < s.postProcessStages.length; i++) { + const stage = s.postProcessStages.get(i); + if (stage.name === 'godsEyeView_anime') + animeOn = stage.enabled && stage.uniforms.intensity > 0.99; } - } + return { + total: px.length / 4, + banded, + visibility: s.skyBox.milkyWayVisibility, + animeOn, + }; + }); + const tag = !r.animeOn + ? 'UNREACHED' + : r.banded <= 0.005 * r.total + ? 'PASS' + : 'FAIL'; + console.log( + `${tag}: ${r.banded} of ${r.total} sky pixels at or above the first cel band (luma >= 0.2)\n ${JSON.stringify(r)}`, + ); + process.exitCode = tag === 'PASS' ? 0 : tag === 'FAIL' ? 1 : 2; } finally { await browser.close(); } -process.exitCode = failed ? 1 : unreached ? 2 : 0; diff --git a/scripts/qa-sky-sun-moon.mjs b/scripts/qa-sky-sun-moon.mjs deleted file mode 100644 index 12ec7e780..000000000 --- a/scripts/qa-sky-sun-moon.mjs +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env node -/** - * qa-sky-sun-moon — the custom sky must keep Cesium's Sun and Moon. - * - * CesiumWidget creates `scene.sun` and `scene.moon` only when the `skyBox` - * option is not `false`, so replacing the sky box the wrong way silently - * removes the Sun disc and its bloom. Points the camera at the Sun from - * 22 000 km and fails unless both bodies exist; saves a screenshot. - * - * Usage: node scripts/qa-sky-sun-moon.mjs [--url http://localhost:4317] [--out qa-shots/sky-sun.png] - */ -import puppeteer from 'puppeteer'; -import { mkdirSync } from 'node:fs'; -import path from 'node:path'; - -const argv = process.argv; -const option = (name, fallback) => - argv.includes(name) ? argv[argv.indexOf(name) + 1] : fallback; -const url = option('--url', 'http://localhost:4317'); -const out = option('--out', 'qa-shots/sky-sun.png'); -mkdirSync(path.dirname(out), { recursive: true }); - -const browser = await puppeteer.launch({ - headless: 'new', - args: ['--no-sandbox', '--ignore-gpu-blocklist'], -}); -try { - const page = await browser.newPage(); - await page.setViewport({ width: 1280, height: 800 }); - await page.evaluateOnNewDocument(() => - localStorage.setItem('gev:first-run-mission:v1', 'suppressed'), - ); - await page.goto(url, { waitUntil: 'domcontentloaded' }); - await page.waitForFunction(() => window.__godsEyeView?.viewer?.scene, { - timeout: 90_000, - }); - await new Promise((r) => setTimeout(r, 10_000)); - const info = await page.evaluate(async () => { - // The page's own Cesium instance, as Vite served it. - const entry = performance - .getEntriesByType('resource') - .map((e) => e.name) - .find((n) => /\.vite\/deps\/cesium\.js/.test(n)); - const C = await import(entry); - const { viewer } = window.__godsEyeView; - const scene = viewer.scene; - scene.camera.cancelFlight(); - const time = viewer.clock.currentTime; - const sun = C.Cartesian3.normalize( - C.Matrix3.multiplyByVector( - C.Transforms.computeTemeToPseudoFixedMatrix(time), - C.Simon1994PlanetaryPositions.computeSunPositionInEarthInertialFrame( - time, - ), - new C.Cartesian3(), - ), - new C.Cartesian3(), - ); - // Off to the side of the Earth, looking straight at the Sun. - const side = C.Cartesian3.normalize( - C.Cartesian3.cross(sun, C.Cartesian3.UNIT_Z, new C.Cartesian3()), - new C.Cartesian3(), - ); - const destination = C.Cartesian3.add( - C.Cartesian3.multiplyByScalar(side, 2.2e7, new C.Cartesian3()), - C.Cartesian3.multiplyByScalar(sun, -0.6e7, new C.Cartesian3()), - new C.Cartesian3(), - ); - const up = C.Cartesian3.normalize( - C.Cartesian3.cross( - C.Cartesian3.cross(sun, C.Cartesian3.UNIT_Z, new C.Cartesian3()), - sun, - new C.Cartesian3(), - ), - new C.Cartesian3(), - ); - scene.camera.setView({ destination, orientation: { direction: sun, up } }); - scene.requestRender(); - return { - sun: Boolean(scene.sun), - moon: Boolean(scene.moon), - skyBox: scene.skyBox?.constructor?.name, - }; - }); - await new Promise((r) => setTimeout(r, 4_000)); - await page.evaluate(() => window.__godsEyeView.viewer.scene.requestRender()); - await new Promise((r) => setTimeout(r, 1_500)); - await page.screenshot({ path: out }); - console.log(JSON.stringify({ url, ...info, screenshot: out })); - if (!info.sun || !info.moon) { - console.error('FAIL: scene.sun and scene.moon must both exist'); - process.exitCode = 1; - } -} finally { - await browser.close(); -} diff --git a/src/sky/starrySky.js b/src/sky/starrySky.js index d538d430d..b31109fde 100644 --- a/src/sky/starrySky.js +++ b/src/sky/starrySky.js @@ -4,30 +4,16 @@ import { governorRequestRender } from '../renderGovernor.js'; import { buildStarVertices, STAR_VERTEX_FLOATS } from './stars.js'; /** - * Space background: catalogue stars drawn as point sprites over a soft Milky - * Way cube map, replacing Cesium's default Tycho-2 sky box (six 1024² JPEGs - * stretched 3–6× on screen, which read as compression blocks around the - * globe). - * - * Narrow, version-tested engine adapter. It takes the `Scene#skyBox` slot: - * Cesium calls `update(frameState, useHdr)` once per frame and executes the - * returned command first in the environment pass, before the atmosphere, sun, - * moon and every globe or tile command — so the sky stays behind everything - * without depth testing. Only `execute()` and `derivedCommands` of that - * command are read. An engine upgrade must revalidate this adapter. - * - * Both layers share one ICRF→Earth-fixed rotation (IAU 2006 precession, - * nutation and Earth rotation at the scene clock), so stars and the Milky - * Way agree with each other and with the real sky over the globe. Until - * Cesium's ICRF tables load, the TEME approximation the default sky box uses - * fills in; the arrival renders one frame through the idle governor. + * Space background in the `Scene#skyBox` slot: catalogue stars as point + * sprites over a soft Milky Way cube map, both turned by one ICRF→fixed + * rotation at the scene clock (TEME until Cesium's tables load). Scene runs + * the command from `update()` first in the environment pass, so the sky + * stays behind everything without depth. Revalidate on engine upgrades. */ export const STARRY_SKY_CESIUM_VERSION = '1.138.0'; /** Opacity of the Milky Way glow over black; the stars carry the sky. */ export const MILKY_WAY_INTENSITY = 0.4; -/** Overall star brightness multiplier. */ -export const STAR_INTENSITY = 1; /** Clock change, in seconds, below which the sky rotation is reused. */ export const SKY_ROTATION_EPSILON_SECONDS = 1; @@ -118,14 +104,13 @@ void main() `; const STAR_FS = ` -uniform float u_intensity; in vec4 v_color; in float v_sigma; in float v_radius; void main() { vec2 offset = (gl_PointCoord - 0.5) * (2.0 * v_radius); - float alpha = v_color.a * u_intensity * + float alpha = v_color.a * exp(-0.5 * dot(offset, offset) / (v_sigma * v_sigma)); if (alpha < 1.0 / 512.0) discard; out_FragColor = vec4(czm_gammaCorrect(v_color.rgb) * alpha, alpha); @@ -133,15 +118,12 @@ void main() `; /** Pick the ICRF→fixed rotation for `time`, or TEME while tables load. */ -export function computeSkyRotation( - time, - result, - transforms = Cesium.Transforms, -) { - const icrf = transforms.computeIcrfToFixedMatrix(time, result); +export function computeSkyRotation(time, result) { + const { Transforms } = Cesium; + const icrf = Transforms.computeIcrfToFixedMatrix(time, result); if (icrf) return { matrix: icrf, precise: true }; return { - matrix: transforms.computeTemeToPseudoFixedMatrix(time, result), + matrix: Transforms.computeTemeToPseudoFixedMatrix(time, result), precise: false, }; } @@ -169,7 +151,6 @@ export class StarrySky { this.milkyWayIntensity = MILKY_WAY_INTENSITY; /** 0..1 multiplier a style sets to hide the glow (see visualEffects.js). */ this.milkyWayVisibility = 1; - this.starIntensity = STAR_INTENSITY; this._requestRender = requestRender; this._rotation = Cesium.Matrix3.clone(Cesium.Matrix3.IDENTITY); this._rotationTime = undefined; @@ -197,10 +178,7 @@ export class StarrySky { u_milkyWay: () => this._milkyWayCubeMap, u_intensity: () => this.milkyWayIntensity * this.milkyWayVisibility, }; - this._starUniforms = { - ...uniforms, - u_intensity: () => this.starIntensity, - }; + this._starUniforms = uniforms; const commands = []; this._commands = commands; // The environment pass reads `derivedCommands` (log depth, HDR, picking) diff --git a/src/sky/starrySky.test.mjs b/src/sky/starrySky.test.mjs index d6488fd1d..c6e318519 100644 --- a/src/sky/starrySky.test.mjs +++ b/src/sky/starrySky.test.mjs @@ -25,19 +25,25 @@ test('the ICRF rotation is preferred and TEME fills in while tables load', () => const time = Cesium.JulianDate.fromIso8601('2026-10-19T00:00:00Z'); const icrf = Cesium.Matrix3.fromRotationZ(0.3); const teme = Cesium.Matrix3.fromRotationZ(0.2); - const precise = computeSkyRotation(time, new Cesium.Matrix3(), { - computeIcrfToFixedMatrix: (_, result) => Cesium.Matrix3.clone(icrf, result), - computeTemeToPseudoFixedMatrix: () => assert.fail('TEME not needed'), - }); - assert.equal(precise.precise, true); - assert.ok(Cesium.Matrix3.equals(precise.matrix, icrf)); - const approximate = computeSkyRotation(time, new Cesium.Matrix3(), { - computeIcrfToFixedMatrix: () => undefined, - computeTemeToPseudoFixedMatrix: (_, result) => - Cesium.Matrix3.clone(teme, result), - }); - assert.equal(approximate.precise, false); - assert.ok(Cesium.Matrix3.equals(approximate.matrix, teme)); + const { Transforms } = Cesium; + const original = { ...Transforms }; + try { + Transforms.computeIcrfToFixedMatrix = (_, result) => + Cesium.Matrix3.clone(icrf, result); + Transforms.computeTemeToPseudoFixedMatrix = () => + assert.fail('TEME not needed'); + const precise = computeSkyRotation(time, new Cesium.Matrix3()); + assert.equal(precise.precise, true); + assert.ok(Cesium.Matrix3.equals(precise.matrix, icrf)); + Transforms.computeIcrfToFixedMatrix = () => undefined; + Transforms.computeTemeToPseudoFixedMatrix = (_, result) => + Cesium.Matrix3.clone(teme, result); + const approximate = computeSkyRotation(time, new Cesium.Matrix3()); + assert.equal(approximate.precise, false); + assert.ok(Cesium.Matrix3.equals(approximate.matrix, teme)); + } finally { + Object.assign(Transforms, original); + } }); test('the TEME fallback keeps the celestial pole on the Earth axis', () => { @@ -127,11 +133,3 @@ test('the Milky Way glow scales with its visibility, for styles that hide it', ( assert.equal(sky._milkyWayUniforms.u_intensity(), 0); sky.destroy(); }); - -test('the Milky Way stays out of the environment map that lights models', () => { - // Scene#render hands `skyBox._cubeMap` to image-based lighting, which - // expects Cesium's own TEME, flipY layout; this ICRF map would be rotated. - const sky = new StarrySky({ requestRender: () => {} }); - assert.equal('_cubeMap' in sky, false); - sky.destroy(); -}); diff --git a/src/sky/stars.js b/src/sky/stars.js index 203e1b2e5..117823eb7 100644 --- a/src/sky/stars.js +++ b/src/sky/stars.js @@ -109,38 +109,17 @@ export function bvToRgb(bv) { return rgb.map((channel) => channel / peak); } -/** - * Decode a catalogue pack into interleaved vertex data, `STAR_VERTEX_FLOATS` - * per star. Malformed rows are skipped, never thrown on: a damaged pack must - * not take the globe down with it. - */ -export function buildStarVertices(pack) { - const stars = Array.isArray(pack?.stars) ? pack.stars : []; - const count = Math.floor(stars.length / 4); +/** Decode a catalogue pack into interleaved vertex data, `STAR_VERTEX_FLOATS` per star. */ +export function buildStarVertices({ stars }) { + const count = stars.length / 4; const vertices = new Float32Array(count * STAR_VERTEX_FLOATS); - let written = 0; for (let i = 0; i < count; i++) { const [raDeg, decDeg, vmag, bv] = stars.slice(i * 4, i * 4 + 4); - if ( - !Number.isFinite(raDeg) || - !Number.isFinite(decDeg) || - !Number.isFinite(vmag) - ) - continue; - const [x, y, z] = raDecToUnitVector(raDeg, decDeg); const { sigmaPx, alpha } = starAppearance(vmag); - const [r, g, b] = bvToRgb(bv); vertices.set( - [x, y, z, sigmaPx, r, g, b, alpha], - written * STAR_VERTEX_FLOATS, + [...raDecToUnitVector(raDeg, decDeg), sigmaPx, ...bvToRgb(bv), alpha], + i * STAR_VERTEX_FLOATS, ); - written += 1; } - return { - count: written, - vertices: - written === count - ? vertices - : vertices.slice(0, written * STAR_VERTEX_FLOATS), - }; + return { count, vertices }; } diff --git a/src/sky/stars.test.mjs b/src/sky/stars.test.mjs index 6dba55971..2a48c341b 100644 --- a/src/sky/stars.test.mjs +++ b/src/sky/stars.test.mjs @@ -82,9 +82,9 @@ test('B−V colours run from blue-white to orange with the peak channel at 1', ( assert.deepEqual(bvToRgb(9), bvToRgb(2)); }); -test('vertex data is interleaved per star and skips malformed rows', () => { +test('vertex data is interleaved per star', () => { const { count, vertices } = buildStarVertices({ - stars: [0, 0, 1, 0.5, 'bad', 10, 2, 0, 90, 45, 3, null, 10, 20], + stars: [0, 0, 1, 0.5, 90, 45, 3, null], }); assert.equal(count, 2); assert.equal(vertices.length, 2 * STAR_VERTEX_FLOATS); @@ -93,10 +93,6 @@ test('vertex data is interleaved per star and skips malformed rows', () => { close(vertices[STAR_VERTEX_FLOATS + 2], Math.SQRT1_2, 1e-6); close(vertices[3], starAppearance(1).sigmaPx, 1e-6); close(vertices[7], starAppearance(1).alpha, 1e-6); - assert.deepEqual(buildStarVertices(null), { - count: 0, - vertices: new Float32Array(0), - }); }); test('the committed catalogue holds the Yale Bright Star Catalogue', () => { diff --git a/src/ui/visualEffects.js b/src/ui/visualEffects.js index b4a3cec0b..f99ef3345 100644 --- a/src/ui/visualEffects.js +++ b/src/ui/visualEffects.js @@ -116,11 +116,8 @@ export class VisualEffects { // a post-process cannot tell the sky from far geometry reliably (near // plane clamps, keyless terrain above the ellipsoid horizon): fade the // glow out with the style instead. Bright stars survive as banded points. - if (stage === this.stages.anime) { - const sky = this.viewer.scene?.skyBox; - if (sky && 'milkyWayVisibility' in sky) - sky.milkyWayVisibility = 1 - value; - } + if (stage === this.stages.anime) + this.viewer.scene.skyBox.milkyWayVisibility = 1 - value; if (stage.enabled && stage.uniforms.time !== undefined) this.startAnimationLoop(); this.requestRender('style-stage'); @@ -228,7 +225,7 @@ export class VisualEffects { this.transitions.clear(); } - /** Remove owned stages and restore the borrowed bloom stage and sky after callers release them. */ + /** Remove owned stages and restore the borrowed bloom stage after callers release it. */ destroy() { if (this.destroyed) return; this.stop(); @@ -240,11 +237,5 @@ export class VisualEffects { Object.assign(this.bloomStage.uniforms, this.previousBloom.uniforms); this.bloomStage.enabled = this.previousBloom.enabled; } - // Anime may have faded the Milky Way out; a surviving viewer gets it back. - const sky = this.viewer.scene.skyBox; - if (sky && 'milkyWayVisibility' in sky) { - sky.milkyWayVisibility = 1; - this.requestRender('style-stage'); - } } } diff --git a/src/ui/visualEffects.test.mjs b/src/ui/visualEffects.test.mjs index 3d86e3a48..e2abbc35c 100644 --- a/src/ui/visualEffects.test.mjs +++ b/src/ui/visualEffects.test.mjs @@ -37,7 +37,9 @@ function fixture() { }, }; const effects = new VisualEffects({ - viewer: { scene: { postProcessStages: pipeline } }, + viewer: { + scene: { postProcessStages: pipeline, skyBox: { milkyWayVisibility: 1 } }, + }, requestRender: (reason) => requests.push(reason), holdRender: (reason) => holds.add(reason), releaseRender: (reason) => holds.delete(reason), @@ -174,32 +176,9 @@ test('the anime stage fades the Milky Way out with its own intensity', () => { f.effects.setStageIntensity(f.effects.stages.anime, 0); assert.equal(glow(), MILKY_WAY_INTENSITY); sky.destroy(); - // A sky box without the knob (Cesium's own) is left alone. - const plain = {}; - f.effects.viewer.scene.skyBox = plain; - f.effects.setStageIntensity(f.effects.stages.anime, 1); - assert.deepEqual(plain, {}); f.effects.destroy(); }); -test('destroying the effects gives a surviving viewer its Milky Way back', () => { - const f = fixture(); - const sky = { milkyWayVisibility: 1 }; - f.effects.viewer.scene.skyBox = sky; - f.effects.initStyles(); - f.effects.startTransition('anime', 0, 1); - f.tick(250); - f.effects.stop(); - const frozen = sky.milkyWayVisibility; - assert.ok( - frozen > 0 && frozen < 1, - 'stop keeps the stages, and the fade, as they are', - ); - f.effects.destroy(); - assert.equal(sky.milkyWayVisibility, 1); - assert.equal(f.requests.at(-1), 'style-stage'); -}); - test('bloom retains its dead zone, normalized intensity and independent toggle', () => { const f = fixture(); f.effects.initPostProcess(); From 8c33c6f34953d6e2f73b8927ef762e94ce8d914e Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Tue, 20 Oct 2026 13:56:44 +0400 Subject: [PATCH 14/36] docs(sky): shorten the sky comments and README, fix three stale ones The far-plane comment said z = w (the code puts z just under w), the Milky Way constant is a brightness, not an opacity, and the CDS acknowledgement lives in the Data attribution popover, not DATA_SOURCES.md. Co-Authored-By: Claude Opus 5.5 --- changelog.d/1243-starfield-sky.md | 8 ++-- scripts/build-bright-stars.mjs | 2 +- scripts/build-milky-way.mjs | 44 ++++++++------------- src/app/viewer.js | 5 +-- src/data/local_data/sky/README.md | 63 +++++++++++-------------------- src/sky/starrySky.js | 6 +-- src/sky/stars.js | 10 ++--- src/tooling/skyAssets.test.mjs | 2 +- src/ui/visualEffects.js | 6 +-- 9 files changed, 54 insertions(+), 92 deletions(-) diff --git a/changelog.d/1243-starfield-sky.md b/changelog.d/1243-starfield-sky.md index d3ecbaf95..04d0cfbf8 100644 --- a/changelog.d/1243-starfield-sky.md +++ b/changelog.d/1243-starfield-sky.md @@ -1,5 +1,5 @@ - Replace the blocky JPEG sky around the globe with the 9,096 stars of the - Yale Bright Star Catalogue, drawn as sharp points at their catalogue - positions for the scene clock, over a soft Milky Way built from ESO/S. - Brunier's panorama (CC BY 4.0). The Sun and Moon stay, the anime style fades - the Milky Way out, and the new assets weigh 296 kB (gekh, #1243). + Yale Bright Star Catalogue, drawn as sharp points where they are at the + scene time, over a soft Milky Way from ESO/S. Brunier (CC BY 4.0). The Sun + and Moon stay; the anime style hides the Milky Way. Assets: 296 kB (gekh, + #1243). diff --git a/scripts/build-bright-stars.mjs b/scripts/build-bright-stars.mjs index 45a6aaab3..95568935b 100644 --- a/scripts/build-bright-stars.mjs +++ b/scripts/build-bright-stars.mjs @@ -8,7 +8,7 @@ * Format: fixed-width ASCII, 197 bytes per record, byte layout in * https://cdsarc.cds.unistra.fr/ftp/V/50/ReadMe * License: public domain (Yale University Observatory / NASA ADC); CDS asks - * for an acknowledgement, which DATA_SOURCES.md carries. + * for an acknowledgement, which the Data attribution popover carries. * * Transform (deterministic): * 1. J2000 RA/Dec (bytes 76-90), V magnitude (103-107) and B−V (110-114). diff --git a/scripts/build-milky-way.mjs b/scripts/build-milky-way.mjs index 55c7f8225..a6af99dec 100644 --- a/scripts/build-milky-way.mjs +++ b/scripts/build-milky-way.mjs @@ -14,27 +14,16 @@ * Centre, galactic longitude increasing to the left. * * Transform (deterministic): - * 1. Resample to WORK_WIDTH×WORK_WIDTH/2 and convert sRGB to linear light. - * 2. Remove stars with a morphological opening (minimum, then maximum, over - * a (2·OPEN_RADIUS+1)² window): anything smaller than the window — every - * star — drops to the surrounding sky; the renderer draws catalogue stars - * itself, sharp and in the right place. - * 3. Paint out the planets the 2008–2010 exposures caught (PLANETS): they - * sit where today's sky has nothing and are far brighter than any star. - * 4. Blur with a three-pass box approximation of a Gaussian, σ = BLUR_DEG on - * the sky: rows wrap in longitude and widen by 1/cos(latitude) so the - * blur stays round towards the poles. Faint glow blends to a second, - * FAINT_BLUR_DEG blur, so it carries no clumps of unresolved stars. - * 5. Resample into six FACE_SIZE² cube faces in the standard WebGL face - * orientation (the renderer uploads them without flipY), with the ICRF - * axes as the cube axes — +X to the March equinox, +Z to the north - * celestial pole — rotating each direction into galactic coordinates - * with the IAU J2000 matrix. - * 6. Map the median sky to black, easing in with a soft knee, and the - * brightest 0.01 % to about 97 % white, the knee's offset there (both - * levels taken before the faint-glow blend; on luminance, keeping each - * pixel's hue), - * encode with gamma 1/2.2 and ±0.5 LSB dither against banding; WebP. + * 1. Resample to WORK_WIDTH×WORK_WIDTH/2, sRGB to linear light. + * 2. Remove stars with a morphological opening: the renderer draws + * catalogue stars itself, sharp and in the right place. + * 3. Paint out the planets the 2008–2010 exposures caught (PLANETS). + * 4. Blur, round on the sphere: σ = BLUR_DEG, widening to FAINT_BLUR_DEG + * in the faint glow so unresolved stars leave no clumps. + * 5. Resample into six WebGL cube faces (uploaded without flipY) with the + * ICRF axes: +X to the March equinox, +Z to the north celestial pole. + * 6. Median sky to black with a soft knee, brightest 0.01 % to ~97 % + * white, on luminance to keep the hue; gamma 1/2.2, dither, WebP. * * Usage: * node scripts/build-milky-way.mjs @@ -46,19 +35,16 @@ import { fileURLToPath } from 'node:url'; export const FACE_SIZE = 1024; export const BLUR_DEG = 0.4; -// Faint glow takes a much wider blur: there the panorama is grain of -// unresolved stars, which a 0.4° blur leaves as clumps. Bright parts keep the -// fine blur and their dust lanes; FAINT_RANGE (fraction of black-to-white) -// is where the two blend. +// Faint glow is grain of unresolved stars and needs the wide blur; bright +// parts keep the fine one and their dust lanes. FAINT_RANGE (fraction of +// black-to-white) is where the two blend. export const FAINT_BLUR_DEG = 2; const FAINT_RANGE = [0.005, 0.08]; const WORK_WIDTH = 4096; const OPEN_RADIUS = 3; const WEBP_QUALITY = 96; -// The median sky is the black level: away from the galactic plane the -// panorama carries a mottled glow of unresolved stars and dust that reads as -// grey blotches around the globe. A hard cut there draws edges of its own, so -// the level eases in over SOFT_KNEE (a fraction of the black-to-white range). +// The median sky is black: above it the glow away from the plane reads as +// grey blotches. SOFT_KNEE eases the cut in so it draws no edges. const BLACK_PERCENTILE = 0.5; const SOFT_KNEE = 0.03; const WHITE_PERCENTILE = 0.9999; diff --git a/src/app/viewer.js b/src/app/viewer.js index 633616fef..cedfbb020 100644 --- a/src/app/viewer.js +++ b/src/app/viewer.js @@ -118,9 +118,8 @@ export function applicationViewerOptions(creditContainer) { selectionIndicator: false, infoBox: false, baseLayer: false, - // Instead of the default Tycho-2 cube map, whose JPEG blocks show around - // the whole globe. Passed here, not assigned later: `skyBox: false` would - // also stop CesiumWidget from creating the Sun and the Moon. + // Replaces the blocky Tycho-2 default. An option, not `skyBox: false`, + // which would also stop CesiumWidget from creating the Sun and Moon. skyBox: new StarrySky(), creditContainer, msaaSamples: 4, diff --git a/src/data/local_data/sky/README.md b/src/data/local_data/sky/README.md index e20b1fb77..9bf106d31 100644 --- a/src/data/local_data/sky/README.md +++ b/src/data/local_data/sky/README.md @@ -1,9 +1,7 @@ # Sky background -The space behind the globe (`src/sky/starrySky.js`): catalogue stars drawn as -sharp point sprites over a soft Milky Way cube map. It replaces Cesium's -default Tycho-2 sky box, whose six 1024² JPEGs stretch 3–6× around the -whole-globe view and show compression blocks. +Catalogue stars over a soft Milky Way, drawn by `src/sky/starrySky.js` in +place of Cesium's blocky Tycho-2 sky box. | File | Content | Size | | ---- | ------- | ---- | @@ -12,57 +10,42 @@ whole-globe view and show compression blocks. ## Stars — Yale Bright Star Catalogue -**Source:** Yale Bright Star Catalogue, 5th Revised Edition (Hoffleit & -Warren 1991), CDS VizieR catalogue +**Source:** 5th Revised Edition (Hoffleit & Warren 1991), CDS catalogue [V/50](https://cdsarc.cds.unistra.fr/viz-bin/cat/V/50), file `https://cdsarc.cds.unistra.fr/ftp/V/50/catalog.gz` (sha256 `3dc44b1e90be8fbe5bcc7656032560f51275f985c7e3f783c9028e1838ec7bed`, fetched 2026-10-19). -**License:** public domain (Yale University Observatory / NASA Astronomical -Data Center). CDS asks for an acknowledgement; the in-app "Data attribution" -popover carries it. +**License:** public domain. CDS asks for an acknowledgement; the "Data +attribution" popover carries it. -**Build:** `node scripts/build-bright-stars.mjs [catalog.gz]` — every record -with a J2000 position (14 novae and non-stellar entries dropped), RA/Dec -rounded to 0.001°, magnitudes to 0.01. The renderer maps magnitude to sprite -width and opacity and B−V to a desaturated black-body colour -(`src/sky/stars.js`). +**Build:** `node scripts/build-bright-stars.mjs [catalog.gz]`. Drops the 14 +records without a J2000 position; rounds RA/Dec to 0.001° and magnitudes to +0.01. ## Milky Way — ESO/S. Brunier -**Source:** "The Milky Way panorama", ESO image -[eso0932a](https://www.eso.org/public/images/eso0932a/), full-size original +**Source:** ESO image [eso0932a](https://www.eso.org/public/images/eso0932a/), `https://cdn.eso.org/images/original/eso0932a.tif` (6000×3000 sRGB TIFF, sha256 `10f209ab83e1fd89e7fa1ed70277ffc6ed19c43549f04ec637c6806d98aff035`, fetched -2026-10-19). Plate carrée in galactic coordinates, centred on the Galactic -Centre. +2026-10-19). -**License:** [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) -(). **Credit: ESO/S. Brunier.** +**License:** [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +**Credit: ESO/S. Brunier.** -**Changes made** (CC BY 4.0 asks for them to be stated): resampled to -4096×2048, stars removed with a 7×7 morphological opening, two planets -(Jupiter, by position) painted over with the median of the surrounding sky, -blurred (σ = 0.4°, blending to σ = 2° in the faint glow so unresolved -stars leave no clumps), reprojected from galactic coordinates to ICRF cube faces, -black level set at the median sky with a soft knee (the faint glow away -from the galactic plane fades to black), gamma-encoded and saved as -WebP. Build: -`node scripts/build-milky-way.mjs `. +**Changes made** (CC BY 4.0 asks for them): resampled to 4096×2048; stars +removed; two images of Jupiter painted over; blurred (0.4°, 2° in the faint +glow); reprojected to ICRF cube faces; black level at the median sky; saved as +WebP. Build: `node scripts/build-milky-way.mjs `. -The panorama is a photographic mosaic, not an astrometric map: bright stars -sit up to ~2° from their catalogue positions. That is invisible in a glow -blurred this much, and every sharp star on screen comes from the catalogue. +The panorama's stars sit up to ~2° off; that is invisible in the blurred glow, +and every sharp star comes from the catalogue. -The NASA SVS "Deep Star Maps 2020" Milky Way layer was considered and not -used: it is derived from Gaia DR2, which ESA distributes under CC BY-NC 3.0 -IGO with prior authorization required for commercial use. +NASA SVS "Deep Star Maps 2020" was not used: it derives from Gaia DR2, which +ESA licenses CC BY-NC 3.0 IGO. ## Frame -Both layers are in ICRF/J2000. The cube faces use the standard WebGL face -layout with +X towards the March equinox and +Z towards the north celestial -pole, uploaded without `flipY`. At runtime one rotation — -`Transforms.computeIcrfToFixedMatrix` at the scene clock — turns both into -Earth-fixed coordinates. +Both layers are in ICRF/J2000. The cube faces use the WebGL face layout, +X +to the March equinox and +Z to the north celestial pole, uploaded without +`flipY`. diff --git a/src/sky/starrySky.js b/src/sky/starrySky.js index b31109fde..8cd7f5d58 100644 --- a/src/sky/starrySky.js +++ b/src/sky/starrySky.js @@ -12,7 +12,7 @@ import { buildStarVertices, STAR_VERTEX_FLOATS } from './stars.js'; */ export const STARRY_SKY_CESIUM_VERSION = '1.138.0'; -/** Opacity of the Milky Way glow over black; the stars carry the sky. */ +/** Brightness of the Milky Way glow; the stars carry the sky. */ export const MILKY_WAY_INTENSITY = 0.4; /** Clock change, in seconds, below which the sky rotation is reused. */ export const SKY_ROTATION_EPSILON_SECONDS = 1; @@ -48,8 +48,8 @@ const MILKY_WAY_FACE_URLS = Object.freeze({ ), }); -// Directions, not points: w = 0 drops the camera translation, and z = w puts -// every fragment on the far plane, inside the clip volume at any frustum. +// Directions, not points: w = 0 drops the camera translation, and z just +// under w keeps every fragment at the far plane, inside any frustum. const SKY_DIRECTION_GLSL = ` uniform mat3 u_icrfToFixed; vec4 skyClipPosition(vec3 icrfDirection) diff --git a/src/sky/stars.js b/src/sky/stars.js index 117823eb7..9fd5aa698 100644 --- a/src/sky/stars.js +++ b/src/sky/stars.js @@ -3,17 +3,13 @@ * * Pure functions, no Cesium. The pack is `local_data/sky/bright_stars.json` * (Yale Bright Star Catalogue, built by scripts/build-bright-stars.mjs): a - * flat `[raDeg, decDeg, vmag, bv, …]` array in ICRF/J2000. - * - * Every star is drawn as a point sprite holding a small Gaussian. Its width - * is set in CSS pixels and scaled by the device pixel ratio in the shader, so - * a star covers the same screen area at any DPR and stays a crisp dot rather - * than a texel stretched across several pixels. + * flat `[raDeg, decDeg, vmag, bv, …]` array in ICRF/J2000. Each star is a + * small Gaussian sprite, sized in CSS pixels so it stays a crisp dot at any DPR. * * @module sky/stars */ -/** Faintest magnitude drawn distinctly (fainter catalogue stars look like it); the brightness reference. */ +/** Brightness reference; fainter catalogue stars are drawn like it. */ export const STAR_LIMIT_MAGNITUDE = 6.5; /** Gaussian σ of the faintest star, CSS pixels. */ export const STAR_MIN_SIGMA_PX = 0.55; diff --git a/src/tooling/skyAssets.test.mjs b/src/tooling/skyAssets.test.mjs index 75e0ad063..07f7596a5 100644 --- a/src/tooling/skyAssets.test.mjs +++ b/src/tooling/skyAssets.test.mjs @@ -93,7 +93,7 @@ test('plate carrée is centred on longitude 0, growing to the left, north up', ( }); test('the galactic rotation puts the Galactic Centre and pole where the IAU does', () => { - // Sgr A*-adjacent origin l = b = 0 at RA 266.405°, Dec −28.936° (J2000). + // Galactic origin l = b = 0 at RA 266.405°, Dec −28.936° (J2000). const centre = icrfToGalactic(raDecToUnitVector(266.40499, -28.93617)); close(centre[0], 1, 1e-6); // North galactic pole at RA 192.85948°, Dec +27.12825°. diff --git a/src/ui/visualEffects.js b/src/ui/visualEffects.js index f99ef3345..24cff6189 100644 --- a/src/ui/visualEffects.js +++ b/src/ui/visualEffects.js @@ -112,10 +112,8 @@ export class VisualEffects { if (this.stopped || !stage) return; stage.uniforms.intensity = value; stage.enabled = value > 0.001; - // Anime's four luminance bands turn the faint Milky Way into blotches, and - // a post-process cannot tell the sky from far geometry reliably (near - // plane clamps, keyless terrain above the ellipsoid horizon): fade the - // glow out with the style instead. Bright stars survive as banded points. + // Anime's bands turn the faint Milky Way into blotches, and depth cannot + // tell the sky from far geometry, so the glow fades with the style. if (stage === this.stages.anime) this.viewer.scene.skyBox.milkyWayVisibility = 1 - value; if (stage.enabled && stage.uniforms.time !== undefined) From f6006358edc417781338de15803668928ca03f35 Mon Sep 17 00:00:00 2001 From: Said Turksever Date: Tue, 20 Oct 2026 13:23:44 +0100 Subject: [PATCH 15/36] fix(street-level): SINCE note on the value's line: ANY DATE (by upload date) The slim-down in #974 dropped --sl-text-small, which .sl-since-note still used, so with KartaView lit "KartaView: by upload date" rendered on its own line larger than the value. The note now sits beside the value in the same mono type and letter spacing, a size smaller (0.5rem), as "(by upload date)". One source is lit at a time, so the provider name is dropped. es/ru catalogs, tests, README, CURRENT-STATE and the registry JSDoc follow. Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- changelog.d/1286-since-note-inline.md | 4 ++++ docs/CURRENT-STATE.md | 4 ++-- src/i18n/locales/es.json | 2 +- src/i18n/locales/ru.json | 2 +- .../streetLevel/providers/kartaview/policy.js | 2 +- src/layers/streetLevel/registry.js | 2 +- src/layers/streetLevel/uiState.js | 12 +++++------- src/layers/streetLevel/uiState.test.mjs | 4 ++-- src/ui/streetLevelControls.test.mjs | 4 ++-- src/ui/styles/street-level.css | 15 ++++++++++++--- src/ui/templates/layer-panels.html | 6 ++++-- 12 files changed, 36 insertions(+), 23 deletions(-) create mode 100644 changelog.d/1286-since-note-inline.md diff --git a/README.md b/README.md index affe39fa3..a38fc893b 100644 --- a/README.md +++ b/README.md @@ -425,7 +425,7 @@ _The Space Missions layer replaying a Falcon 9 ascent — labeled `RECONSTRUCTED **Setup.** At [mapillary.com/dashboard/developers](https://www.mapillary.com/dashboard/developers), register an application with **Read** access and copy its **Client Token** (`MLY|…`). Paste it into **POWER UP → Mapillary**, or set `MAPILLARY_CLIENT_TOKEN` in `.env` and restart. Without it the panel reads **KEY REQUIRED**. **Google Street View** uses `GOOGLE_MAPS_API_KEY` with the **Maps JavaScript API** enabled for it in Google Cloud; its chip starts off, since every panorama is billed to the key. **KartaView** and **Panoramax** need nothing: their public APIs are keyless. -**Use.** Turn on **Street Level** under DATA LAYERS → Cameras, or with the pill in the STREET LEVEL panel header. Each provider has a chip in its own colour (Mapillary green), and one is lit at a time: lighting one switches the others off. Mapillary, which is free, is lit by default. Zoom in to street level (below 60 km) for the coverage lines; from orbit the panel says to zoom in. The **IMAGERY** (ALL / 360° / FLAT) and **SINCE** filters apply to Mapillary, KartaView and Panoramax; Street View panoramas are all 360°, so with Street View lit the filters are hidden. Click a coverage line for its image cones and a cone to open the photo. Light **KARTAVIEW** (purple) and zoom in below about 6 km: its lines are the streets KartaView has photos of, and a click on one opens the photo nearest the click, flat or 360° (drag to look around), with cones along its drive; **‹ ›** or ← → step through the drive (Shift+← →, ↑ ↓ and + − look around a 360° photo; pinch zooms on a phone). Photos KartaView has archived are skipped, and where all are archived the panel says so. For KartaView, **SINCE** goes by upload date, as KartaView's own map does (it can filter by nothing else), and the panel notes it under the slider; KartaView filters its lines on its own server, and a filtered area KartaView has not drawn before can take several seconds. Light **PANORAMAX** (orange) for the open, federated commons (strongest in France and Belgium): below about 60 km its lines are sequences. A click on a line opens that sequence's picture nearest the click without moving the camera, flat or 360°, with cones along the sequence around it; **‹ ›** or ← → step through it, and both filters apply. Its caption names the picture's authors (or the instance holding it) and licence (mostly CC BY-SA 4.0; pictures on the IGN instance are Licence Ouverte 2.0). On the **Google 3D** map (Google's terms keep Street View off other maps, where it does not appear), light **GOOGLE STREET VIEW** and click a street from below 3 km, or press **OPEN STREET VIEW** for the view centre, to open Google's panorama there; step along its arrows. Above the photo: **EXPAND** (full screen; Esc leaves) and **FIT / FILL** (Mapillary, and flat KartaView and Panoramax photos). The caption links to the image on the provider's site, and the globe credits each provider that is on ("© Mapillary contributors, CC BY-SA 4.0", "Street View imagery © Google", "© KartaView contributors, CC BY-SA 4.0", "© Panoramax contributors, licence per picture"). KartaView's own photo pages fail for signed-out visitors, so its link opens the full-size photo. +**Use.** Turn on **Street Level** under DATA LAYERS → Cameras, or with the pill in the STREET LEVEL panel header. Each provider has a chip in its own colour (Mapillary green), and one is lit at a time: lighting one switches the others off. Mapillary, which is free, is lit by default. Zoom in to street level (below 60 km) for the coverage lines; from orbit the panel says to zoom in. The **IMAGERY** (ALL / 360° / FLAT) and **SINCE** filters apply to Mapillary, KartaView and Panoramax; Street View panoramas are all 360°, so with Street View lit the filters are hidden. Click a coverage line for its image cones and a cone to open the photo. Light **KARTAVIEW** (purple) and zoom in below about 6 km: its lines are the streets KartaView has photos of, and a click on one opens the photo nearest the click, flat or 360° (drag to look around), with cones along its drive; **‹ ›** or ← → step through the drive (Shift+← →, ↑ ↓ and + − look around a 360° photo; pinch zooms on a phone). Photos KartaView has archived are skipped, and where all are archived the panel says so. For KartaView, **SINCE** goes by upload date, as KartaView's own map does (it can filter by nothing else), and the panel notes it beside the SINCE value (ANY DATE (by upload date)); KartaView filters its lines on its own server, and a filtered area KartaView has not drawn before can take several seconds. Light **PANORAMAX** (orange) for the open, federated commons (strongest in France and Belgium): below about 60 km its lines are sequences. A click on a line opens that sequence's picture nearest the click without moving the camera, flat or 360°, with cones along the sequence around it; **‹ ›** or ← → step through it, and both filters apply. Its caption names the picture's authors (or the instance holding it) and licence (mostly CC BY-SA 4.0; pictures on the IGN instance are Licence Ouverte 2.0). On the **Google 3D** map (Google's terms keep Street View off other maps, where it does not appear), light **GOOGLE STREET VIEW** and click a street from below 3 km, or press **OPEN STREET VIEW** for the view centre, to open Google's panorama there; step along its arrows. Above the photo: **EXPAND** (full screen; Esc leaves) and **FIT / FILL** (Mapillary, and flat KartaView and Panoramax photos). The caption links to the image on the provider's site, and the globe credits each provider that is on ("© Mapillary contributors, CC BY-SA 4.0", "Street View imagery © Google", "© KartaView contributors, CC BY-SA 4.0", "© Panoramax contributors, licence per picture"). KartaView's own photo pages fail for signed-out visitors, so its link opens the full-size photo. Share links carry the provider switches and filters (`0.m.0` Mapillary off, `0.m.0_0.r.google-1` Street View on, `0.m.0_0.r.google-0*kartaview-1*panoramax-0` KartaView on and `0.m.0_0.r.google-0*kartaview-0*panoramax-1` Panoramax on, as the app writes them (`0.m.0_0.r.kartaview-1` and `0.m.0_0.r.panoramax-1` work too; a link that leaves out `m` keeps Mapillary, the default, lit), `0.p.p` panoramas only, `0.s.365` the last year). To add a provider, implement the contract in `src/layers/streetLevel/registry.js` and register it in `src/app/layers/streetLevel.js`. diff --git a/changelog.d/1286-since-note-inline.md b/changelog.d/1286-since-note-inline.md new file mode 100644 index 000000000..f66467d67 --- /dev/null +++ b/changelog.d/1286-since-note-inline.md @@ -0,0 +1,4 @@ +- The Street Level SINCE note sits on the value's line, in its type and a + size smaller: with KartaView lit it reads ANY DATE (by upload date). It + had lost its size variable in the Street Level slim-down and rendered + larger than the value, on a line of its own (asturksever, #1286). diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 42f338ce5..83645c1fa 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -3648,8 +3648,8 @@ lookup asks the photo API for the projection (`SPHERE`/`PLANE`; it ignores `fieldOfView`) and upload date and checks each answer the same way (when photos are near but none passes, the panel says so), and the cones pass on each photo's projection and upload date. The provider declares -`sinceBasis: 'upload'`, so while it is lit the panel shows "KartaView: by -upload date" under the SINCE slider (`sinceNote` in the UI state). Tiles come uncompressed and +`sinceBasis: 'upload'`, so while it is lit the panel shows "(by +upload date)" beside the SINCE value, as ANY DATE (by upload date) (`sinceNote` in the UI state). Tiles come uncompressed and uncacheable, so the last 24 decoded tiles are kept for 10 minutes while KartaView is lit (`createTileCache`, dropped when it is switched off); one that does not answer in 20 s is asked once more, and one that is not a line diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index d86ab843d..76ed72b3d 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -945,7 +945,7 @@ "Image by {creator}": "Imagen de {creator}", "zoom in to see KartaView coverage": "acércate para ver la cobertura de KartaView", "no KartaView photos in view": "no hay fotos de KartaView a la vista", - "{names}: by upload date": "{names}: por fecha de subida", + "(by upload date)": "(por fecha de subida)", "{n} streets in view · click a line for its nearest photo": { "one": "{n} calle a la vista · haz clic en una línea para su foto más cercana", "many": "{n} calles a la vista · haz clic en una línea para su foto más cercana", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 7ee31fd1c..81cd13b55 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -954,7 +954,7 @@ "Image by {creator}": "Автор снимка: {creator}", "zoom in to see KartaView coverage": "приблизьтесь, чтобы увидеть покрытие KartaView", "no KartaView photos in view": "фотографий KartaView в зоне видимости нет", - "{names}: by upload date": "{names}: по дате загрузки", + "(by upload date)": "(по дате загрузки)", "{n} streets in view · click a line for its nearest photo": { "one": "{n} улица в кадре · щёлкните линию, чтобы открыть ближайшую фотографию", "few": "{n} улицы в кадре · щёлкните линию, чтобы открыть ближайшую фотографию", diff --git a/src/layers/streetLevel/providers/kartaview/policy.js b/src/layers/streetLevel/providers/kartaview/policy.js index 184d1ceb8..939e0ec1c 100644 --- a/src/layers/streetLevel/providers/kartaview/policy.js +++ b/src/layers/streetLevel/providers/kartaview/policy.js @@ -141,7 +141,7 @@ export const FILTERED_OUT_MESSAGE = msg( 'None of KartaView’s photos here pass the imagery filter', ); /** Under the SINCE slider while KartaView is lit. */ -export const SINCE_NOTE = 'KartaView: by upload date'; +export const SINCE_NOTE = '(by upload date)'; /** The UTC calendar day of `ms`, as KartaView's startDate reads it. */ function utcDay(ms) { diff --git a/src/layers/streetLevel/registry.js b/src/layers/streetLevel/registry.js index ba0f986f2..6770cd133 100644 --- a/src/layers/streetLevel/registry.js +++ b/src/layers/streetLevel/registry.js @@ -23,7 +23,7 @@ export function filtersOf(provider) { * @property {{kind: 'view-cone', color: string}} [marker] Default: GEV's pin. * @property {Array<'pano'|'since'>} [filters] Filters it honours (default both). * @property {{noun: string, action: string}} [coverageLabel] How the panel counts its lines and says what a click does (default: sequences, "click a line for its photos"). - * @property {'capture'|'upload'} [sinceBasis] What SINCE compares (default 'capture'); 'upload' puts a note under the slider while the provider is lit. + * @property {'capture'|'upload'} [sinceBasis] What SINCE compares (default 'capture'); 'upload' notes "(by upload date)" beside the SINCE value while the provider is lit. * @property {(context: ProviderContext) => ProviderInstance} create * * @typedef {object} ProviderContext Handed to `create()` once by the core. diff --git a/src/layers/streetLevel/uiState.js b/src/layers/streetLevel/uiState.js index efb0dd750..577bb8ae1 100644 --- a/src/layers/streetLevel/uiState.js +++ b/src/layers/streetLevel/uiState.js @@ -73,16 +73,14 @@ export function filterControls(providers) { } /** - * The note under SINCE when a lit provider dates its imagery by upload, - * e.g. "KartaView: by upload date", or null. + * The note beside the SINCE value when a lit provider dates its imagery by + * upload, "(by upload date)", or null. One source is lit at a time, so the + * note needs no provider name. * @param {Array} providers */ export function sinceNote(providers) { - const names = providers - .filter((p) => p.on && p.sinceBasis === 'upload') - .map((p) => p.name); - return names.length - ? t('{names}: by upload date', { names: names.join(', ') }) + return providers.some((p) => p.on && p.sinceBasis === 'upload') + ? t('(by upload date)') : null; } diff --git a/src/layers/streetLevel/uiState.test.mjs b/src/layers/streetLevel/uiState.test.mjs index 5b9b0bf41..009600026 100644 --- a/src/layers/streetLevel/uiState.test.mjs +++ b/src/layers/streetLevel/uiState.test.mjs @@ -67,7 +67,7 @@ test('the filter controls show only for a lit provider that honours them', () => ); }); -test('a lit provider that dates by upload puts a note under SINCE', () => { +test('a lit provider that dates by upload notes it beside the SINCE value', () => { const kartaView = provider({ id: 'kartaview', name: 'KartaView', @@ -75,7 +75,7 @@ test('a lit provider that dates by upload puts a note under SINCE', () => { }); const note = (providers) => composeUIState({ ...base, providers }).sinceNote; assert.equal(note([provider()]), null, 'Mapillary: capture date'); - assert.equal(note([kartaView]), 'KartaView: by upload date'); + assert.equal(note([kartaView]), '(by upload date)'); assert.equal(note([{ ...kartaView, on: false }]), null, 'only while lit'); }); diff --git a/src/ui/streetLevelControls.test.mjs b/src/ui/streetLevelControls.test.mjs index adeaf2ae4..6f7d35688 100644 --- a/src/ui/streetLevelControls.test.mjs +++ b/src/ui/streetLevelControls.test.mjs @@ -981,9 +981,9 @@ test('a note under SINCE says what date it compares, only while one is given', ( const { layer } = stubPanel(dom, state); const note = () => dom.root.querySelector('#sl-since-note'); assert.equal(note().hidden, true, 'none for Mapillary'); - layer.publish({ ...state, sinceNote: 'KartaView: by upload date' }); + layer.publish({ ...state, sinceNote: '(by upload date)' }); assert.equal(note().hidden, false); - assert.equal(note().textContent, 'KartaView: by upload date'); + assert.equal(note().textContent, '(by upload date)'); layer.publish(state); assert.equal(note().hidden, true); // The panel's own markup has it, read out with the slider. diff --git a/src/ui/styles/street-level.css b/src/ui/styles/street-level.css index c218765d9..e14f492de 100644 --- a/src/ui/styles/street-level.css +++ b/src/ui/styles/street-level.css @@ -291,10 +291,20 @@ html:not([lang='en']) .sl-meta-row .sl-nearest-btn { outline-offset: 3px; } -.sl-since-note { +/* The value and its note share a line: ANY DATE (by upload date). */ +.sl-since-value { grid-column: 2; + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: 0 6px; + min-width: 0; +} + +.sl-since-note { font-family: var(--font-mono); - font-size: var(--sl-text-small); + font-size: 0.5rem; + letter-spacing: 0.08em; color: var(--text-secondary); } @@ -303,7 +313,6 @@ html:not([lang='en']) .sl-meta-row .sl-nearest-btn { } .sl-since-label { - grid-column: 2; font-family: var(--font-mono); font-size: var(--sl-text); letter-spacing: 0.08em; diff --git a/src/ui/templates/layer-panels.html b/src/ui/templates/layer-panels.html index b170b01e3..cbc8f6e67 100644 --- a/src/ui/templates/layer-panels.html +++ b/src/ui/templates/layer-panels.html @@ -127,8 +127,10 @@

From f1c617ad275cae6a0337fff77637491a933c6e84 Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Tue, 20 Oct 2026 14:48:42 +0200 Subject: [PATCH 16/36] refactor(ui): share ordinary slider components --- docs/CURRENT-STATE.md | 9 ++ scripts/format-scope.json | 1 + scripts/package-boundaries.json | 5 + scripts/qa-visual-input.mjs | 32 ++++++ src/hudA11y.test.mjs | 2 +- src/ui/railCardBlocks.js | 12 +- src/ui/railTimeline.js | 18 +-- src/ui/recentImagery.js | 12 +- src/ui/slider.js | 32 ++++++ src/ui/styleParameters.js | 18 +-- src/ui/styles/controls.css | 152 ------------------------- src/ui/styles/recent-imagery.css | 10 -- src/ui/styles/slider.css | 70 ++++++++++++ src/ui/styles/street-level.css | 13 --- src/ui/styles/weather.css | 13 --- src/ui/templates/display-controls.html | 22 ++-- src/ui/templates/layer-panels.html | 2 +- src/ui/visualInput.test.mjs | 2 +- style.css | 1 + 19 files changed, 197 insertions(+), 229 deletions(-) create mode 100644 src/ui/slider.js create mode 100644 src/ui/styles/slider.css diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 42f338ce5..0b9b3de0d 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -1187,6 +1187,15 @@ The application supplies actions and retains effect settings, restore claims and rendering. Native keyboard editing, model modes and current defaults are preserved. Destroying the UI removes these listeners before asynchronous teardown. +Ordinary sliders share the native range component in `ui/slider.js` and the +`gev-quantitative-slider` surface in `ui/styles/slider.css`. Display, shader +parameters, volume, replay speed, weather settings/history, imagery opacity and +Street View's date filter use the same rail, thumb, value styling, keyboard focus and disabled state. +Generated controls use `createSlider`; static templates apply the same class. +Feature owners retain bounds, steps, formatted values, input/change timing and +listener cleanup. The radio tuning dial, imagery comparison divider and event +comparison/progression controls keep their specialized presentation and behavior. + ## Application shortcuts and shader parameter controls `ui/input` supplies the bubbling application shortcut listener and generated diff --git a/scripts/format-scope.json b/scripts/format-scope.json index fa5ebc3b2..3a4bba831 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -299,6 +299,7 @@ "src/ui/styles/status.css", "src/ui/styles/layers.css", "src/ui/styles/controls.css", + "src/ui/styles/slider.css", "src/ui/styles/cctv.css", "src/ui/styles/foundation.css", "src/ui/styles/first-run.css", diff --git a/scripts/package-boundaries.json b/scripts/package-boundaries.json index 5e3f3eb69..0c50be306 100644 --- a/scripts/package-boundaries.json +++ b/scripts/package-boundaries.json @@ -421,6 +421,7 @@ "src/ui/visualInput.js", "src/ui/applicationShortcuts.js", "src/ui/styleParameters.js", + "src/ui/slider.js", "src/i18n/index.js", "src/i18n/locale.js", "src/i18n/locales/es.json", @@ -479,6 +480,7 @@ "src/ui/weatherPanel.js", "src/ui/railCards.js", "src/ui/railCardBlocks.js", + "src/ui/slider.js", "src/ui/chipGroup.js", "src/ui/rowList.js", "src/ui/railTimeline.js", @@ -738,6 +740,7 @@ "src/ui/shellElements.js", "src/ui/shellFeedback.js", "src/ui/styleParameters.js", + "src/ui/slider.js", "src/ui/surfaceKeyboard.js", "src/ui/uiLifetime.js", "src/ui/visualEffects.js", @@ -2213,6 +2216,7 @@ "src/ui/shellElements.js", "src/ui/shellFeedback.js", "src/ui/styleParameters.js", + "src/ui/slider.js", "src/ui/surfaceKeyboard.js", "src/ui/uiLifetime.js", "src/ui/visualEffects.js", @@ -3206,6 +3210,7 @@ "src/ui/applicationShortcuts.js", "src/ui/effects.js", "src/ui/styleParameters.js", + "src/ui/slider.js", "src/ui/uiLifetime.js", "src/ui/visualEffects.js", "src/ui/visualInput.js", diff --git a/scripts/qa-visual-input.mjs b/scripts/qa-visual-input.mjs index 3117e1414..5e3991806 100644 --- a/scripts/qa-visual-input.mjs +++ b/scripts/qa-visual-input.mjs @@ -183,6 +183,38 @@ try { return manager.bloomEnabled !== before; }), ); + const sliders = await page.evaluate(() => { + const ordinary = [ + ...document.querySelectorAll('input[type="range"]'), + ].filter( + (input) => !input.matches('#radio-tuner-slider, .bhote-event-range'), + ); + return { + count: ordinary.length, + shared: ordinary.every((input) => + input.classList.contains('gev-quantitative-slider'), + ), + surface: ordinary.every((input) => { + const style = getComputedStyle(input); + return ( + style.height === '18px' && + style.appearance === 'none' && + style.padding === '0px' && + style.borderWidth === '0px' && + (!input.disabled || + (style.opacity === '0.42' && style.cursor === 'not-allowed')) + ); + }), + tunerSeparate: !document + .getElementById('radio-tuner-slider') + .classList.contains('gev-quantitative-slider'), + }; + }); + check( + 'ordinary sliders share one native surface', + sliders.count > 10 && sliders.shared && sliders.surface, + ); + check('radio tuning keeps its specialized control', sliders.tunerSeparate); fs.mkdirSync('qa-shots/visual-input', { recursive: true }); await page.screenshot({ path: 'qa-shots/visual-input/desktop.png' }); await page.setViewport({ width: 620, height: 900 }); diff --git a/src/hudA11y.test.mjs b/src/hudA11y.test.mjs index 0c0fd6fe2..a854b5964 100644 --- a/src/hudA11y.test.mjs +++ b/src/hudA11y.test.mjs @@ -29,5 +29,5 @@ test('the first-run checkbox keeps its native visible label', () => { test('generated style sliders use the visible parameter label as their name', () => { assert.match(parameters, /label\.textContent\s*=\s*t\(metadata\.label\);/); - assert.match(parameters, /slider\.setAttribute\(['"]aria-label['"],\s*t\(metadata\.label\)\)/); + assert.match(parameters, /ariaLabel:\s*t\(metadata\.label\)/); }); diff --git a/src/ui/railCardBlocks.js b/src/ui/railCardBlocks.js index e1d37356c..b63d0a6a0 100644 --- a/src/ui/railCardBlocks.js +++ b/src/ui/railCardBlocks.js @@ -2,6 +2,7 @@ import { t } from '../i18n/index.js'; import { syncChipGroup } from './chipGroup.js'; import { syncRowList } from './rowList.js'; import { formatScaleLabel, unitLabel } from './unitLabels.js'; +import { createSlider } from './slider.js'; const set = (node, key, value) => { if (node[key] !== value) node[key] = value; @@ -90,12 +91,11 @@ export function createRailCardBlocks({ container, cardId, onParams }) { 'rail-card-setting-range-label', block.rangeRow, ); - block.rangeInput = make( - 'input', - 'rail-card-setting-range', - block.rangeRow, - ); - block.rangeInput.type = 'range'; + block.rangeInput = createSlider({ + documentRef: document, + className: 'rail-card-setting-range', + }); + block.rangeRow.appendChild(block.rangeInput); block.rangeValue = make( 'span', 'rail-card-setting-range-value', diff --git a/src/ui/railTimeline.js b/src/ui/railTimeline.js index b96ded34e..181f9a73f 100644 --- a/src/ui/railTimeline.js +++ b/src/ui/railTimeline.js @@ -1,4 +1,5 @@ import { formatUtcDayMonth, t } from '../i18n/index.js'; +import { createSlider } from './slider.js'; const set = (node, key, value) => { if (node[key] !== value) node[key] = value; }; @@ -43,14 +44,15 @@ export function createRailTimeline({ return node; }; const previous = makeButton('‹', t('Earlier observation'), row); - const slider = document.createElement('input'); - slider.type = 'range'; - slider.className = `gev-quantitative-slider${sliderClassName ? ` ${sliderClassName}` : ''}`; - slider.min = '0'; - slider.max = '0'; - slider.step = '1'; - slider.value = '0'; - slider.setAttribute('aria-label', t('Observed history')); + const slider = createSlider({ + documentRef: document, + className: sliderClassName, + min: '0', + max: '0', + step: '1', + value: '0', + ariaLabel: t('Observed history'), + }); row.appendChild(slider); const next = makeButton('›', t('Later observation'), row); const controls = document.createElement('div'); diff --git a/src/ui/recentImagery.js b/src/ui/recentImagery.js index 857271c8b..3c305a3da 100644 --- a/src/ui/recentImagery.js +++ b/src/ui/recentImagery.js @@ -12,6 +12,7 @@ import { formatNumber, msg, t, tn, translateKnown } from '../i18n/index.js'; import { createRailCardBlocks } from './railCardBlocks.js'; import { createRailCards } from './railCards.js'; import { createImagerySplit } from './imagerySplit.js'; +import { createSlider } from './slider.js'; import { PRODUCTS, hhmm, @@ -318,16 +319,17 @@ export function createRecentImageryPanel({ const opacityLabel = el('label', 'ri-opacity-label', controls); el('span', '', opacityLabel, t('OPACITY')); const opacityValue = el('span', 'ri-opacity-value', opacityLabel, '100%'); - const opacity = el('input', 'ri-opacity', controls); - opacity.id = 'ri-opacity'; - Object.assign(opacity, { - type: 'range', + const opacity = createSlider({ + documentRef: document, + className: 'ri-opacity', min: '0', max: '100', step: '1', value: '100', + ariaLabel: t('Imagery opacity'), }); - opacity.setAttribute('aria-label', t('Imagery opacity')); + opacity.id = 'ri-opacity'; + controls.appendChild(opacity); opacityLabel.htmlFor = 'ri-opacity'; // Its slot is always there; it is only usable while a swipe is live. const swap = el('button', 'data-toggle-chip ri-swap', controls, t('SWAP')); diff --git a/src/ui/slider.js b/src/ui/slider.js new file mode 100644 index 000000000..1bb179b75 --- /dev/null +++ b/src/ui/slider.js @@ -0,0 +1,32 @@ +/** + * Build the shared native slider. Feature owners retain their input/change + * listeners, formatting and teardown; this component installs no handlers. + * Static sliders use the same gev-quantitative-slider class in their template. + * @param {object} options + * @param {Document} [options.documentRef] Document that owns the input. + * @param {string} [options.className] Additional feature/layout hooks. + * @param {number|string} [options.min] + * @param {number|string} [options.max] + * @param {number|string} [options.step] + * @param {number|string} [options.value] + * @param {string} [options.ariaLabel] Already translated accessible name. + * @returns {HTMLInputElement} + */ +export function createSlider({ + documentRef = globalThis.document, + className = '', + min, + max, + step, + value, + ariaLabel, +} = {}) { + const input = documentRef.createElement('input'); + input.type = 'range'; + input.className = `gev-quantitative-slider${className ? ` ${className}` : ''}`; + for (const [key, setting] of Object.entries({ min, max, step, value })) { + if (setting !== undefined) input[key] = setting; + } + if (ariaLabel !== undefined) input.setAttribute('aria-label', ariaLabel); + return input; +} diff --git a/src/ui/styleParameters.js b/src/ui/styleParameters.js index c88872d69..2ce1c32a1 100644 --- a/src/ui/styleParameters.js +++ b/src/ui/styleParameters.js @@ -1,4 +1,5 @@ import { formatNumber, t } from '../i18n/index.js'; +import { createSlider } from './slider.js'; /** A slider value in the UI language: 0.85 in English, 0,85 in Spanish. */ const formatParam = (value, digits) => @@ -41,14 +42,15 @@ export function createStyleParameters({ const label = documentRef.createElement('span'); label.className = 'param-label'; label.textContent = t(metadata.label); - const slider = documentRef.createElement('input'); - slider.type = 'range'; - slider.className = 'param-slider'; - slider.setAttribute('aria-label', t(metadata.label)); - slider.min = metadata.min; - slider.max = metadata.max; - slider.step = metadata.max <= 1 ? '0.01' : '0.1'; - slider.value = readValue(name); + const slider = createSlider({ + documentRef, + className: 'param-slider', + ariaLabel: t(metadata.label), + min: metadata.min, + max: metadata.max, + step: metadata.max <= 1 ? '0.01' : '0.1', + value: readValue(name), + }); const digits = metadata.max <= 1 ? 2 : 1; const valueDisplay = documentRef.createElement('span'); valueDisplay.className = 'param-value'; diff --git a/src/ui/styles/controls.css b/src/ui/styles/controls.css index f8a7906fe..36d3fb4f6 100644 --- a/src/ui/styles/controls.css +++ b/src/ui/styles/controls.css @@ -532,110 +532,7 @@ html:not([lang='en']) .panel-collapse-btn { .pp-slider { flex: 1; - -webkit-appearance: none; - appearance: none; - height: 3px; - background: rgba(255, 255, 255, 0.08); - border-radius: 2px; - outline: none; - cursor: pointer; - min-width: 60px; -} - -.pp-slider::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - width: 10px; - height: 10px; - border-radius: 50%; - background: var(--accent); - box-shadow: 0 0 6px var(--accent-glow); - cursor: pointer; -} - -.pp-slider::-moz-range-thumb { - width: 10px; - height: 10px; - border-radius: 50%; - background: var(--accent); - border: none; - box-shadow: 0 0 6px var(--accent-glow); - cursor: pointer; -} - -.pp-slider-value { - font-family: var(--font-mono); - font-size: 9px; - letter-spacing: 0.5px; - color: var(--accent); - min-width: 28px; - text-align: right; - flex-shrink: 0; -} - -/* Quantitative companion sliders share Display / Sharpen's visible rail, - * circular thumb, glow, and value treatment while retaining a taller hit area. */ -.gev-quantitative-slider { - width: 100%; min-width: 0; - height: 18px; - margin: 0; - -webkit-appearance: none; - appearance: none; - background: transparent; - outline: none; - cursor: pointer; -} -.gev-quantitative-slider::-webkit-slider-runnable-track { - height: 3px; - border-radius: 2px; - background: rgba(255, 255, 255, 0.08); -} -.gev-quantitative-slider::-webkit-slider-thumb { - width: 10px; - height: 10px; - margin-top: -3.5px; - border: 0; - border-radius: 50%; - -webkit-appearance: none; - appearance: none; - background: var(--accent); - box-shadow: 0 0 6px var(--accent-glow); - cursor: pointer; -} -.gev-quantitative-slider::-moz-range-track, -.gev-quantitative-slider::-moz-range-progress { - height: 3px; - border: 0; - border-radius: 2px; - background: rgba(255, 255, 255, 0.08); -} -.gev-quantitative-slider::-moz-range-thumb { - width: 10px; - height: 10px; - border: 0; - border-radius: 50%; - background: var(--accent); - box-shadow: 0 0 6px var(--accent-glow); - cursor: pointer; -} -.gev-quantitative-slider:focus-visible { - border-radius: 4px; - outline: 1px solid color-mix(in srgb, var(--accent) 80%, transparent); - outline-offset: 2px; -} -.gev-quantitative-slider:disabled { - opacity: 0.42; - cursor: not-allowed; -} -.gev-slider-value { - min-width: 28px; - color: var(--accent); - font-family: var(--font-mono); - font-size: 9px; - letter-spacing: 0.5px; - text-align: right; - flex-shrink: 0; } .pp-slider-mini-label { @@ -1028,12 +925,6 @@ body.gev-geo-import-drag #cesiumContainer { box-shadow: inset 0 0 0 4px #061014; } -.pp-slider:focus-visible, -.param-slider:focus-visible { - outline: 2px solid var(--text-primary); - outline-offset: 4px; -} - #clean-view-toggle { width: var(--pp-expanded-width); } @@ -1240,47 +1131,4 @@ html:not([lang='en']) .param-slider-row { .param-slider { flex: 1; min-width: 0; - -webkit-appearance: none; - appearance: none; - height: 3px; - background: rgba(255, 255, 255, 0.08); - border-radius: 2px; - outline: none; - cursor: pointer; -} - -.param-slider::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - width: 12px; - height: 12px; - border-radius: 50%; - background: var(--accent); - box-shadow: 0 0 6px var(--accent-glow); - cursor: pointer; - transition: box-shadow var(--transition-fast); -} - -.param-slider::-webkit-slider-thumb:hover { - box-shadow: 0 0 12px var(--accent-glow); -} - -.param-slider::-moz-range-thumb { - width: 12px; - height: 12px; - border-radius: 50%; - background: var(--accent); - border: none; - box-shadow: 0 0 6px var(--accent-glow); - cursor: pointer; -} - -.param-value { - font-family: var(--font-mono); - font-size: 10px; - letter-spacing: 0.5px; - color: var(--accent); - min-width: 32px; - text-align: right; - flex-shrink: 0; } diff --git a/src/ui/styles/recent-imagery.css b/src/ui/styles/recent-imagery.css index e04955e2f..72bb407c7 100644 --- a/src/ui/styles/recent-imagery.css +++ b/src/ui/styles/recent-imagery.css @@ -423,16 +423,6 @@ html:not([lang='en']) .recent-imagery-readout .ri-opacity-label { } .recent-imagery-readout .ri-opacity-value { font-variant-numeric: tabular-nums; - color: var(--text-secondary); -} -.recent-imagery-readout .ri-opacity { - width: 100%; - min-width: 0; - margin: 0; - accent-color: var(--accent); -} -.recent-imagery-readout .ri-opacity:disabled { - opacity: 0.35; } .recent-imagery-readout .ri-swap { width: 40px; diff --git a/src/ui/styles/slider.css b/src/ui/styles/slider.css new file mode 100644 index 000000000..4a5ee2ba2 --- /dev/null +++ b/src/ui/styles/slider.css @@ -0,0 +1,70 @@ +/* Shared ordinary slider surface; feature classes only own surrounding layout. + * Native range inputs retain keyboard, pointer, bounds and step behavior. */ +.gev-quantitative-slider { + width: 100%; + min-width: 0; + height: 18px; + margin: 0; + padding: 0; + border: 0; + -webkit-appearance: none; + appearance: none; + background: transparent; + outline: none; + cursor: pointer; +} +.gev-quantitative-slider::-webkit-slider-runnable-track { + height: 3px; + border-radius: 2px; + background: rgba(255, 255, 255, 0.08); +} +.gev-quantitative-slider::-webkit-slider-thumb { + width: 10px; + height: 10px; + margin-top: -3.5px; + border: 0; + border-radius: 50%; + -webkit-appearance: none; + appearance: none; + background: var(--accent); + box-shadow: 0 0 6px var(--accent-glow); + cursor: pointer; +} +.gev-quantitative-slider::-moz-range-track, +.gev-quantitative-slider::-moz-range-progress { + height: 3px; + border: 0; + border-radius: 2px; + background: rgba(255, 255, 255, 0.08); +} +.gev-quantitative-slider::-moz-range-thumb { + width: 10px; + height: 10px; + border: 0; + border-radius: 50%; + background: var(--accent); + box-shadow: 0 0 6px var(--accent-glow); + cursor: pointer; +} +.gev-quantitative-slider:focus-visible { + border-radius: 4px; + outline: 1px solid color-mix(in srgb, var(--accent) 80%, transparent); + outline-offset: 2px; +} +.gev-quantitative-slider:disabled { + opacity: 0.42; + cursor: not-allowed; +} +.pp-slider-value, +.param-value, +.ri-opacity-value, +.rail-card-setting-range-value, +.gev-slider-value { + min-width: 28px; + color: var(--accent); + font-family: var(--font-mono); + font-size: 9px; + letter-spacing: 0.5px; + text-align: right; + flex-shrink: 0; +} diff --git a/src/ui/styles/street-level.css b/src/ui/styles/street-level.css index c218765d9..c0623203d 100644 --- a/src/ui/styles/street-level.css +++ b/src/ui/styles/street-level.css @@ -278,19 +278,6 @@ html:not([lang='en']) .sl-meta-row .sl-nearest-btn { gap: 4px 10px; } -.sl-range { - width: 100%; - min-width: 0; - margin: 0; - accent-color: var(--sl-green); - cursor: pointer; -} - -.sl-range:focus-visible { - outline: 1px solid var(--accent); - outline-offset: 3px; -} - .sl-since-note { grid-column: 2; font-family: var(--font-mono); diff --git a/src/ui/styles/weather.css b/src/ui/styles/weather.css index c8b2d544c..a47fa87b1 100644 --- a/src/ui/styles/weather.css +++ b/src/ui/styles/weather.css @@ -362,22 +362,9 @@ html:not([lang='en']) .rail-card-setting { font: 8px var(--font-mono); white-space: nowrap; } -.rail-card-setting-range { - width: 100%; - min-width: 0; - accent-color: var(--accent); - cursor: pointer; -} -.rail-card-setting-range:focus-visible { - outline: 2px solid var(--text-primary); - outline-offset: 3px; -} .rail-card-setting-range-value { flex: 0 0 4ch; white-space: nowrap; - color: var(--text-primary); - font: 9px var(--font-mono); - text-align: right; } .rail-card-result { display: grid; diff --git a/src/ui/templates/display-controls.html b/src/ui/templates/display-controls.html index 220dc373b..aabba14ff 100644 --- a/src/ui/templates/display-controls.html +++ b/src/ui/templates/display-controls.html @@ -27,27 +27,27 @@
- + 8
- + 100%
- + 70%
- + 84%
- + 24°
@@ -58,7 +58,7 @@
- + 50%
@@ -70,12 +70,12 @@
- + 7%
- + 1%
@@ -117,7 +117,7 @@ mirrors SCOPE_FEATHER_RATIO_DEFAULT in src/scopeMask.js. Feather softens the black mask edge; label fading is the separate Fade slider. --> - + 11% @@ -172,7 +172,7 @@ Bloom
- + 0%
@@ -182,7 +182,7 @@ Sharpen
- + 49%
diff --git a/src/ui/templates/layer-panels.html b/src/ui/templates/layer-panels.html index b170b01e3..9869ea40c 100644 --- a/src/ui/templates/layer-panels.html +++ b/src/ui/templates/layer-panels.html @@ -126,7 +126,7 @@
- + ANY DATE
diff --git a/src/ui/visualInput.test.mjs b/src/ui/visualInput.test.mjs index 586c3086e..c69c935ba 100644 --- a/src/ui/visualInput.test.mjs +++ b/src/ui/visualInput.test.mjs @@ -176,7 +176,7 @@ test('parameter rows preserve labels, bounds, precision and initial values', () assert.equal(label.textContent, ''); assert.equal(slider.attributes.get('aria-label'), ''); assert.equal(slider.type, 'range'); - assert.equal(slider.className, 'param-slider'); + assert.equal(slider.className, 'gev-quantitative-slider param-slider'); assert.equal(slider.min, 0); assert.equal(slider.max, 1); assert.equal(slider.step, '0.01'); diff --git a/style.css b/style.css index 44b7e07bc..2cebd0e27 100644 --- a/style.css +++ b/style.css @@ -1,5 +1,6 @@ /* Preserve component and responsive rule order in one stylesheet entry. */ @import './src/ui/styles/foundation.css'; +@import './src/ui/styles/slider.css'; @import './src/ui/styles/controls.css'; @import './src/ui/styles/location.css'; @import './src/ui/styles/status.css'; From 64fd9ba1c23161e8535542b5d677eb18c85f4850 Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Tue, 20 Oct 2026 14:49:06 +0200 Subject: [PATCH 17/36] docs: add shared slider changelog fragment --- changelog.d/1287-shared-sliders.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog.d/1287-shared-sliders.md diff --git a/changelog.d/1287-shared-sliders.md b/changelog.d/1287-shared-sliders.md new file mode 100644 index 000000000..b5e5fb215 --- /dev/null +++ b/changelog.d/1287-shared-sliders.md @@ -0,0 +1,3 @@ +- Give ordinary sliders a shared native control and consistent track, thumb, + value, focus and disabled styling while preserving feature behavior and + specialized controls (mazy1998, #1287). From 40394ff76e408c8eb0bd49adf3aed16904265272 Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 13:07:51 +0200 Subject: [PATCH 18/36] Unify segmented selectors and fix compact panel spacing --- docs/CURRENT-STATE.md | 15 ++ scripts/format-scope.json | 3 + scripts/package-boundaries.json | 5 +- scripts/qa-segmented-controls.mjs | 286 +++++++++++++++++++++++++ scripts/qa-street-level.mjs | 41 ++++ src/annotations/drawTool.js | 20 +- src/ui/aircraftDisplay.js | 20 +- src/ui/displayControls.js | 27 ++- src/ui/recentImagery.js | 41 ++-- src/ui/segmentedControl.js | 109 ++++++++++ src/ui/segmentedControl.test.mjs | 174 +++++++++++++++ src/ui/streetLevelControls.js | 82 +++---- src/ui/styles/controls.css | 24 +-- src/ui/styles/cyber.css | 2 + src/ui/styles/layers.css | 4 +- src/ui/styles/recent-imagery.css | 1 - src/ui/styles/segmented-control.css | 51 +++++ src/ui/styles/street-level.css | 42 ---- src/ui/templates/display-controls.html | 20 +- src/ui/templates/layer-panels.html | 14 +- src/ui/visualSettings.js | 9 +- style.css | 1 + 22 files changed, 794 insertions(+), 197 deletions(-) create mode 100644 scripts/qa-segmented-controls.mjs create mode 100644 src/ui/segmentedControl.js create mode 100644 src/ui/segmentedControl.test.mjs create mode 100644 src/ui/styles/segmented-control.css diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index eacfa1147..419e3efb6 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -1224,6 +1224,21 @@ The application supplies actions and retains effect settings, restore claims and rendering. Native keyboard editing, model modes and current defaults are preserved. Destroying the UI removes these listeners before asynchronous teardown. +## Segmented selectors + +Segmented selectors use the controlled DOM adapter in `ui/segmentedControl.js` +and the shared `gev-segmented` / `gev-segment` surface. Model coverage, label +allocation, drawing shape, Street View fit/panorama filters and imagery mode keep +their feature-owned values, actions and persistence. Painting a restored value +does not emit a change or move focus. Existing keyboard policies remain explicit: +Street View uses arrows/Home/End with one tab stop, imagery mode uses arrows from +its controlled selection, and Display keeps its existing native button behavior. +Pure value navigation is separate from DOM rendering for reuse by a future view. +Segments keep their word minimum width: compact inline groups such as FIT/FILL +and ALL/360°/FLAT must not break short labels mid-word. Collapsed Weather follows +the same exclusive-rail hiding rule as the other readouts. +Browser acceptance: `QA_BASE_URL=http://127.0.0.1:4173 node scripts/qa-segmented-controls.mjs`. + ## Application shortcuts and shader parameter controls `ui/input` supplies the bubbling application shortcut listener and generated diff --git a/scripts/format-scope.json b/scripts/format-scope.json index 83e961d8b..b365c85c3 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -190,7 +190,10 @@ "src/ui/visualInput.js", "src/ui/visualInput.test.mjs", "scripts/qa-visual-input.mjs", + "scripts/qa-segmented-controls.mjs", "src/ui/displayControls.js", + "src/ui/segmentedControl.test.mjs", + "src/ui/styles/segmented-control.css", "src/ui/displayControls.test.mjs", "src/ui/cameraOrientationControls.js", "src/ui/cameraOrientationControls.test.mjs", diff --git a/scripts/package-boundaries.json b/scripts/package-boundaries.json index bf33bebc7..b4fd6ace2 100644 --- a/scripts/package-boundaries.json +++ b/scripts/package-boundaries.json @@ -431,7 +431,7 @@ }, "display-controls": { "exports": ["./ui/display"], - "modules": ["src/ui/displayControls.js"], + "modules": ["src/ui/displayControls.js", "src/ui/segmentedControl.js"], "external": [] }, "visual-effects": { @@ -701,6 +701,7 @@ "src/ui/contextSubscriptions.js", "src/ui/contextTransactions.js", "src/ui/displayControls.js", + "src/ui/segmentedControl.js", "src/ui/effects.js", "src/ui/frameRateMonitor.js", "src/ui/layerPanel.js", @@ -2176,6 +2177,7 @@ "src/ui/contextSubscriptions.js", "src/ui/contextTransactions.js", "src/ui/displayControls.js", + "src/ui/segmentedControl.js", "src/ui/effects.js", "src/ui/frameRateMonitor.js", "src/ui/layerPanel.js", @@ -3212,6 +3214,7 @@ "src/ui/visualInput.js", "src/ui/visualPresets.js", "src/ui/visualSettings.js", + "src/ui/segmentedControl.js", "src/i18n/index.js", "src/i18n/locale.js", "src/i18n/locales/es.json", diff --git a/scripts/qa-segmented-controls.mjs b/scripts/qa-segmented-controls.mjs new file mode 100644 index 000000000..cfa8e51d6 --- /dev/null +++ b/scripts/qa-segmented-controls.mjs @@ -0,0 +1,286 @@ +#!/usr/bin/env node +/** Run against a dev server or built preview with QA_BASE_URL (default :4179). */ +import fs from 'node:fs'; +import puppeteer from 'puppeteer'; + +const browser = await puppeteer.launch({ + executablePath: + process.env.PUPPETEER_EXECUTABLE_PATH || (await puppeteer.executablePath()), + headless: true, + args: ['--use-gl=angle', '--use-angle=swiftshader'], +}); +const page = await browser.newPage(); +const errors = []; +const failures = []; +page.on('pageerror', (error) => errors.push(error.message)); +const check = (name, passed, detail = '') => { + console.log( + `[${passed ? 'PASS' : 'FAIL'}] ${name}${detail ? ` — ${detail}` : ''}`, + ); + if (!passed) failures.push(name); +}; +const base = process.env.QA_BASE_URL || 'http://localhost:4179'; +const shots = process.env.QA_SHOTS_DIR || 'qa-shots/segmented-controls'; +fs.mkdirSync(shots, { recursive: true }); + +try { + await page.setViewport({ width: 1440, height: 900 }); + await page.goto(`${base}/?welcome=0`, { waitUntil: 'domcontentloaded' }); + await page.waitForFunction( + () => window.__godsEyeView?.styleManager?._applicationShortcuts, + { timeout: 60000 }, + ); + await page.waitForFunction( + () => + document.getElementById('loading-screen')?.classList.contains('hidden'), + { timeout: 60000 }, + ); + await page.evaluate(() => + window.__godsEyeView.styleManager.setPanelCollapsed('pp-toggles', false, { + persist: false, + syncShare: false, + }), + ); + + const surface = await page.evaluate(() => { + const groups = [...document.querySelectorAll('[role="radiogroup"]')]; + const buttons = groups.flatMap((group) => [ + ...group.querySelectorAll('[role="radio"]'), + ]); + return { + groups: groups.length, + buttons: buttons.length, + shared: + groups.every((g) => g.classList.contains('gev-segmented')) && + buttons.every((b) => { + const style = getComputedStyle(b); + return ( + b.classList.contains('gev-segment') && + style.fontSize === '9px' && + style.minHeight === '24px' && + style.borderRadius === '0px' + ); + }), + }; + }); + check( + 'all six one-of-many groups use the shared surface', + surface.groups === 6 && surface.buttons === 15 && surface.shared, + JSON.stringify(surface), + ); + + await page.evaluate(() => + document.getElementById('models3d-mode-all').click(), + ); + check( + 'model selection reaches both aircraft layers', + await page.evaluate(() => { + const dm = window.__godsEyeView.dataManager; + return ( + ['flights', 'military'].every( + (id) => dm.layers.get(id).module.getParams().models3dMode === 'all', + ) && + document + .getElementById('models3d-mode-all') + .getAttribute('aria-checked') === 'true' + ); + }), + ); + await page.focus('#models3d-mode-all'); + await page.keyboard.press('ArrowLeft'); + check( + 'Display retains its click-only arrow policy', + await page.evaluate( + () => + document + .getElementById('models3d-mode-all') + .getAttribute('aria-checked') === 'true', + ), + ); + await page.focus('#models3d-mode-proximity'); + await page.keyboard.press('Space'); + check( + 'native Space selects model coverage', + await page.evaluate( + () => + document + .getElementById('models3d-mode-proximity') + .getAttribute('aria-checked') === 'true', + ), + ); + await page.evaluate(() => + document.getElementById('detection-allocation-weighted').click(), + ); + check( + 'allocation selection still updates application tuning', + await page.evaluate( + () => + window.__godsEyeView.styleManager._detectionAllocationPreference === + 'WEIGHTED' && + document + .getElementById('detection-allocation-weighted') + .getAttribute('aria-checked') === 'true', + ), + ); + + await page.evaluate(() => + document.querySelector('[data-shape="pin"]').click(), + ); + check( + 'drawing shape still uses its existing feature action', + await page.evaluate( + () => + window.__gevDrawTool?.shape === 'pin' && + document + .querySelector('[data-shape="pin"]') + .getAttribute('aria-checked') === 'true', + ), + ); + + // Off-layer controls still own params; no catalog/provider request is needed. + await page.evaluate(() => + document.querySelector('[data-sl-pano="flat"]').click(), + ); + check( + 'panorama choice reaches the Street Level layer', + await page.evaluate( + () => + window.__godsEyeView.dataManager.layers + .get('street-level') + .module.getParams().pano === 'flat', + ), + ); + await page.evaluate(() => + document.querySelector('[data-sl-pano="flat"]').dispatchEvent( + new KeyboardEvent('keydown', { + key: 'Home', + bubbles: true, + cancelable: true, + }), + ), + ); + check( + 'Street Level Home retains selection and roving tab state', + await page.evaluate( + () => + window.__godsEyeView.dataManager.layers + .get('street-level') + .module.getParams().pano === 'all' && + document + .querySelector('[data-sl-pano="all"]') + .getAttribute('tabindex') === '0', + ), + ); + await page.evaluate(() => + document.querySelector('[data-sl-render="fill"]').click(), + ); + check( + 'fit/fill keeps its stored render preference', + await page.evaluate( + () => + localStorage.getItem('gev:street-level:render-mode') === 'fill' && + document + .querySelector('[data-sl-render="fill"]') + .getAttribute('aria-checked') === 'true', + ), + ); + + await page.evaluate(() => + document.querySelector('.ri-mode-btn[data-mode="ab"]').click(), + ); + check( + 'imagery mode reaches its controlled layer state', + await page.evaluate( + () => + window.__godsEyeView.dataManager.layers + .get('recent-imagery') + .module.getSnapshot().mode === 'ab', + ), + ); + await page.evaluate(() => + document.getElementById('ri-mode').dispatchEvent( + new KeyboardEvent('keydown', { + key: 'ArrowRight', + bubbles: true, + cancelable: true, + }), + ), + ); + check( + 'imagery arrows wrap from the current selected value', + await page.evaluate( + () => + window.__godsEyeView.dataManager.layers + .get('recent-imagery') + .module.getSnapshot().mode === 'image' && + document + .querySelector('.ri-mode-btn[data-mode="image"]') + .getAttribute('aria-checked') === 'true', + ), + ); + + await page.evaluate(() => { + const manager = window.__godsEyeView.styleManager; + manager._setDetectionAllocation('ELASTIC', { + syncShare: false, + persist: false, + }); + document + .getElementById('models3d-mode-proximity') + .scrollIntoView({ block: 'center' }); + }); + await page.screenshot({ path: `${shots}/desktop.png` }); + await page.setViewport({ width: 620, height: 900 }); + await page.evaluate(() => + document + .getElementById('models3d-mode-proximity') + .scrollIntoView({ block: 'center' }), + ); + await page.screenshot({ path: `${shots}/narrow.png` }); + check( + 'narrow selectors stay within their panel', + await page.evaluate(() => + [...document.querySelectorAll('.pp-mode-seg')] + .filter((g) => g.getClientRects().length) + .every((group) => group.scrollWidth <= group.clientWidth + 1), + ), + ); + const cyber = await page.evaluate(() => { + const root = document.documentElement; + const previous = root.getAttribute('data-ui-theme'); + root.setAttribute('data-ui-theme', 'cyber'); + const selected = [ + ...document.querySelectorAll('.gev-segment[aria-checked="true"]'), + ]; + // Check the final theme colors, independent of software-GL frame cadence. + for (const button of selected) + for (const animation of button.getAnimations()) animation.finish(); + const backgrounds = selected.map( + (button) => getComputedStyle(button).backgroundColor, + ); + const radii = [...document.querySelectorAll('.gev-segmented')].map( + (group) => getComputedStyle(group).borderRadius, + ); + const consistent = + selected.length === 6 && + backgrounds.every((color) => color === backgrounds[0]) && + radii.every((radius) => radius === '1px'); + if (previous === null) root.removeAttribute('data-ui-theme'); + else root.setAttribute('data-ui-theme', previous); + return { consistent, count: selected.length, backgrounds, radii }; + }); + check( + 'Cyber theme styles every selected segment consistently', + cyber.consistent, + JSON.stringify(cyber), + ); + check('no uncaught browser errors', errors.length === 0, errors.join(' | ')); +} catch (error) { + console.error('Browser errors:', errors); + await page.screenshot({ path: `${shots}/failure.png` }).catch(() => {}); + throw error; +} finally { + await browser.close(); +} +console.log(`RESULT: ${failures.length} failures`); +process.exitCode = failures.length ? 1 : 0; diff --git a/scripts/qa-street-level.mjs b/scripts/qa-street-level.mjs index d099ed9b5..1be1a80fa 100644 --- a/scripts/qa-street-level.mjs +++ b/scripts/qa-street-level.mjs @@ -661,6 +661,32 @@ async function main() { }, ); + await step( + 'FIT/FILL keeps native selection, keyboard focus and persistence with a photo open', + async () => { + await page.click('[data-sl-render="fill"]'); + await uiUntil(page, (u) => u.street.renderMode === 'fill'); + assert.equal( + await page.evaluate(() => + localStorage.getItem('gev:street-level:render-mode'), + ), + 'fill', + ); + await page.keyboard.press('Home'); + await uiUntil(page, (u) => u.street.renderMode === 'letterbox'); + assert.deepEqual( + await page.$eval('[data-sl-render="letterbox"]', (node) => ({ + selected: node.getAttribute('aria-checked'), + tabIndex: node.tabIndex, + focused: document.activeElement === node, + })), + { selected: 'true', tabIndex: 0, focused: true }, + ); + await page.keyboard.press('End'); + await uiUntil(page, (u) => u.street.renderMode === 'fill'); + }, + ); + await step('× closes the photo and deselects its sequence', async () => { await press(page, '#sl-viewer-close'); await uiUntil( @@ -673,6 +699,21 @@ async function main() { ); }); + await step( + 'panorama segments keep native arrow and Home navigation', + async () => { + await page.click('[data-sl-pano="flat"]'); + await uiUntil(page, (u) => u.filter.pano === 'flat'); + await page.keyboard.press('ArrowRight'); + await uiUntil(page, (u) => u.filter.pano === 'all'); + await page.keyboard.press('End'); + await uiUntil(page, (u) => u.filter.pano === 'flat'); + await page.keyboard.press('Home'); + await uiUntil(page, (u) => u.filter.pano === 'all'); + await waitForCoverage(page); + }, + ); + await keylessProviderStep({ id: 'kartaview', name: 'KartaView', diff --git a/src/annotations/drawTool.js b/src/annotations/drawTool.js index 91adb4d0d..0f4e0fc76 100644 --- a/src/annotations/drawTool.js +++ b/src/annotations/drawTool.js @@ -30,6 +30,7 @@ * at finish, deliberately and in one place — see `finishSpec` in drawMode.js. */ import * as Cesium from 'cesium'; +import { createSegmentedControl } from '../ui/segmentedControl.js'; import { pickWorldFromScreen } from './annotationResolver.js'; import { claimPointer, @@ -432,22 +433,21 @@ export function initDrawTool({ viewer, annotations }) { const shapeButtons = [ ...(modeRow?.querySelectorAll('.pp-mode-btn[data-shape]') || []), ]; - for (const btn of shapeButtons) { - listen(btn, 'click', () => { - shape = normalizeShape(btn.dataset.shape); - for (const other of shapeButtons) { - const on = other === btn; - other.classList.toggle('active', on); - other.setAttribute('aria-checked', String(on)); - } + const shapeControl = createSegmentedControl({ + buttons: shapeButtons, + valueOf: (button) => button.dataset.shape, + listen, + onChange: (value) => { + shape = normalizeShape(value); + shapeControl.update(shape); if (active) { generation += 1; session = createDrawSession(shape); cursor = null; syncPreview(); } - }); - } + }, + }); listen(colorSelect, 'change', () => { color = COLORS.includes(colorSelect.value) ? colorSelect.value : 'primary'; syncPreview(); diff --git a/src/ui/aircraftDisplay.js b/src/ui/aircraftDisplay.js index 2afc77579..ba325f6e9 100644 --- a/src/ui/aircraftDisplay.js +++ b/src/ui/aircraftDisplay.js @@ -1,3 +1,5 @@ +import { syncSegmentedControl } from './segmentedControl.js'; + /** Own the shared aircraft display preference and its controls. */ export class AircraftDisplay { constructor({ elements, readDataManager, layout }) { @@ -28,12 +30,9 @@ export class AircraftDisplay { this._models3dMode = options.models3dMode === 'all' ? 'all' : 'proximity'; this._syncModels3dButtonState(); this._models3dModeRow?.classList.toggle('visible', this._models3dEnabled); - for (const button of this._models3dModeBtns || []) { - if (!button) continue; - const active = button.dataset.mode === this._models3dMode; - button.classList.toggle('active', active); - button.setAttribute('aria-checked', String(active)); - } + syncSegmentedControl(this._models3dModeBtns, this._models3dMode, { + valueOf: (button) => button.dataset.mode, + }); this._layoutRightPanels(); } @@ -59,12 +58,9 @@ export class AircraftDisplay { const normalized = mode === 'all' ? 'all' : 'proximity'; this._models3dMode = normalized; this._setModels3dParams({ models3dMode: normalized }); - for (const button of this._models3dModeBtns) { - if (!button) continue; - const active = button.dataset.mode === normalized; - button.classList.toggle('active', active); - button.setAttribute('aria-checked', String(active)); - } + syncSegmentedControl(this._models3dModeBtns, normalized, { + valueOf: (button) => button.dataset.mode, + }); this._syncModels3dButtonState(); } diff --git a/src/ui/displayControls.js b/src/ui/displayControls.js index 09276db31..e0d76d338 100644 --- a/src/ui/displayControls.js +++ b/src/ui/displayControls.js @@ -1,3 +1,5 @@ +import { createSegmentedControl } from './segmentedControl.js'; + /** * Bind Display controls to application actions. Inputs remain native DOM controls; * the caller owns settings and effect state. Destroy before replacing the view. @@ -44,12 +46,25 @@ export function bindDisplayControls({ elements, actions }) { listen(elements[name], 'input', action, integer); for (const el of elements.styleButtons || []) listen(el, 'click', 'setStyle', (el) => el.dataset.style); - for (const el of elements.allocationButtons || []) - listen(el, 'click', 'setAllocation', (el) => el.dataset.allocation); - for (const el of elements.modelModeButtons || []) - listen(el, 'click', 'setModelsMode', (el) => - el.dataset.mode === 'all' ? 'all' : 'proximity', - ); + for (const [buttons, valueOf, action] of [ + [ + elements.allocationButtons || [], + (el) => el.dataset.allocation, + 'setAllocation', + ], + [ + elements.modelModeButtons || [], + (el) => (el.dataset.mode === 'all' ? 'all' : 'proximity'), + 'setModelsMode', + ], + ]) { + const control = createSegmentedControl({ + buttons, + valueOf, + onChange: (value) => actions[action](value), + }); + removers.push(() => control.destroy()); + } for (const el of elements.fadeSliders || []) listen(el, 'input', 'setFade'); return { destroy() { diff --git a/src/ui/recentImagery.js b/src/ui/recentImagery.js index 857271c8b..0706ad17d 100644 --- a/src/ui/recentImagery.js +++ b/src/ui/recentImagery.js @@ -12,6 +12,7 @@ import { formatNumber, msg, t, tn, translateKnown } from '../i18n/index.js'; import { createRailCardBlocks } from './railCardBlocks.js'; import { createRailCards } from './railCards.js'; import { createImagerySplit } from './imagerySplit.js'; +import { createSegmentedControl } from './segmentedControl.js'; import { PRODUCTS, hhmm, @@ -286,13 +287,13 @@ export function createRecentImageryPanel({ const selection = el('section', 'ri-block ri-selection', root); selection.id = 'ri-selection'; selection.setAttribute('aria-label', t('On the map')); - const modeGroup = el('div', 'ri-mode', selection); + const modeGroup = el('div', 'gev-segmented ri-mode', selection); modeGroup.id = 'ri-mode'; modeGroup.setAttribute('role', 'radiogroup'); modeGroup.setAttribute('aria-label', t('Mode')); const modeButtons = new Map( MODE_LABELS.map(([mode, label]) => { - const node = el('button', 'data-toggle-chip ri-mode-btn', modeGroup); + const node = el('button', 'gev-segment ri-mode-btn', modeGroup); node.type = 'button'; node.textContent = t(label); node.dataset.mode = mode; @@ -300,6 +301,15 @@ export function createRecentImageryPanel({ return [mode, node]; }), ); + const modeControl = createSegmentedControl({ + buttons: modeButtons.values(), + valueOf: (button) => button.dataset.mode, + onChange: (mode) => layer.setMode(mode), + keyboard: 'arrows', + keyTarget: modeGroup, + readValue: () => snapshot.mode, + listen, + }); const slotRows = {}; for (const slotId of ['a', 'b']) { const row = el('div', 'ri-slot', selection); @@ -668,12 +678,7 @@ export function createRecentImageryPanel({ function renderSelection() { const { mode } = snapshot; set(selection.dataset, 'mode', mode); - for (const [id, node] of modeButtons) { - const on = id === mode; - attribute(node, 'aria-checked', String(on)); - toggle(node, 'active', on); - set(node, 'tabIndex', on ? 0 : -1); - } + modeControl.update(mode, { rovingFocus: true }); const ab = mode === 'ab'; for (const slotId of ['a', 'b']) { const { row, tag, value, unpin } = slotRows[slotId]; @@ -1065,11 +1070,6 @@ export function createRecentImageryPanel({ strip.focus({ preventScroll: true }); return; } - const mode = target?.closest?.('.ri-mode-btn'); - if (mode) { - layer.setMode(mode.dataset.mode); - return; - } if (target?.closest?.('.ri-swap') && !swap.disabled) { layer.swapSides?.(); return; @@ -1086,21 +1086,6 @@ export function createRecentImageryPanel({ if (event.target === opacity) layer.setAlpha(Number(opacity.value) / 100); }); - listen(modeGroup, 'keydown', (event) => { - const order = MODE_LABELS.map(([mode]) => mode); - const step = - { ArrowLeft: -1, ArrowUp: -1, ArrowRight: 1, ArrowDown: 1 }[event.key] || - 0; - if (!step) return; - event.preventDefault(); - const next = - order[ - (order.indexOf(snapshot.mode) + step + order.length) % order.length - ]; - layer.setMode(next); - modeButtons.get(next)?.focus?.(); - }); - listen(strip, 'keydown', (event) => { const total = snapshot.candidates.length; const index = snapshot.focusIndex || 0; diff --git a/src/ui/segmentedControl.js b/src/ui/segmentedControl.js new file mode 100644 index 000000000..0ad785986 --- /dev/null +++ b/src/ui/segmentedControl.js @@ -0,0 +1,109 @@ +const STEPS = { ArrowRight: 1, ArrowDown: 1, ArrowLeft: -1, ArrowUp: -1 }; + +/** Pure value navigation, also usable by a future template-based view. */ +export function nextSegmentValue(values, value, key, { homeEnd = true } = {}) { + if (!values.length) return undefined; + if (homeEnd && key === 'Home') return values[0]; + if (homeEnd && key === 'End') return values.at(-1); + const step = STEPS[key]; + if (!step) return undefined; + return values[(values.indexOf(value) + step + values.length) % values.length]; +} + +/** Paint controlled selection without emitting changes or moving focus. */ +export function syncSegmentedControl( + buttons, + value, + { valueOf, activeClass = 'active', rovingFocus = false } = {}, +) { + for (const button of buttons || []) { + if (!button) continue; + const selected = valueOf(button) === value; + if (button.classList.contains(activeClass) !== selected) + button.classList.toggle(activeClass, selected); + const set = (name, content) => { + if (button.getAttribute?.(name) !== content) + button.setAttribute(name, content); + }; + set('aria-checked', String(selected)); + if (rovingFocus) set('tabindex', selected ? '0' : '-1'); + } +} + +/** + * Controlled segmented-selector DOM adapter. Feature owners supply values and + * receive changes; rendering a restored value never triggers the callback. + * `keyboard` retains each existing group's policy: none, arrows, or radio + * (arrows plus Home/End). Pointer and native Enter/Space share the click path. + * An injected listener owner keeps the feature's existing teardown boundary. + * @param {object} options + * @param {Iterable} options.buttons + * @param {Function} options.valueOf Maps a button to the feature's value. + * @param {Function} options.onChange Receives value and originating button. + * @param {'none'|'arrows'|'radio'} [options.keyboard] + * @param {HTMLElement} [options.keyTarget] Delegated keyboard target, if any. + * @param {Function} [options.readValue] Current controlled value for delegation. + * @param {Function} [options.listen] Feature-owned event registration. + * @returns {{ update: Function, destroy: Function }} + */ +export function createSegmentedControl({ + buttons, + valueOf, + onChange, + keyboard = 'none', + keyTarget, + readValue, + listen, +}) { + const options = [...buttons].filter(Boolean); + const removers = []; + let destroyed = false; + const bind = (target, type, handler) => { + const owned = (event) => { + if (!destroyed) handler(event); + }; + if (listen) listen(target, type, owned); + else { + target.addEventListener(type, owned); + removers.push(() => target.removeEventListener(type, owned)); + } + }; + for (const button of options) + bind(button, 'click', () => { + if (!button.disabled) onChange(valueOf(button), button); + }); + const navigate = (event, from) => { + const enabled = options.filter((button) => !button.disabled); + const values = enabled.map(valueOf); + const next = nextSegmentValue(values, from, event.key, { + homeEnd: keyboard === 'radio', + }); + if (next === undefined) return; + const button = enabled.find((option) => valueOf(option) === next); + event.preventDefault(); + if (keyTarget) { + button.click(); + button.focus(); + } else { + button.focus(); + if (next !== from) button.click(); + } + }; + if (keyboard !== 'none') { + if (keyTarget) + bind(keyTarget, 'keydown', (event) => navigate(event, readValue())); + else + for (const button of options) + bind(button, 'keydown', (event) => navigate(event, valueOf(button))); + } + return { + update(value, presentation) { + if (!destroyed) + syncSegmentedControl(options, value, { valueOf, ...presentation }); + }, + destroy() { + destroyed = true; + for (const remove of removers.splice(0)) remove(); + }, + }; +} diff --git a/src/ui/segmentedControl.test.mjs b/src/ui/segmentedControl.test.mjs new file mode 100644 index 000000000..ad194ddd8 --- /dev/null +++ b/src/ui/segmentedControl.test.mjs @@ -0,0 +1,174 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { railFixture } from './railTestFixture.mjs'; +import { + createSegmentedControl, + nextSegmentValue, +} from './segmentedControl.js'; + +function fixture(options = {}) { + let writes = 0; + const f = railFixture(() => writes++); + const buttons = ['a', 'b', 'c'].map((value) => { + const button = f.document.createElement('button'); + button.dataset.value = value; + f.container.appendChild(button); + return button; + }); + const calls = []; + const control = createSegmentedControl({ + buttons, + valueOf: (button) => button.dataset.value, + onChange: (value) => calls.push(value), + ...options, + }); + const key = (target, value) => { + const event = new Event('keydown', { cancelable: true }); + Object.defineProperty(event, 'key', { value }); + target.dispatchEvent(event); + return event.defaultPrevented; + }; + return { ...f, buttons, calls, control, key, writes: () => writes }; +} + +test('controlled restoration updates selection without emitting or stealing focus', () => { + const f = fixture(); + f.buttons[0].focus(); + f.control.update('b', { rovingFocus: true }); + assert.deepEqual(f.calls, []); + assert.equal(f.document.activeElement, f.buttons[0]); + assert.deepEqual( + f.buttons.map((b) => b.getAttribute('aria-checked')), + ['false', 'true', 'false'], + ); + assert.deepEqual( + f.buttons.map((b) => b.getAttribute('tabindex')), + ['-1', '0', '-1'], + ); + const before = f.writes(); + f.control.update('b', { rovingFocus: true }); + assert.equal( + f.writes(), + before, + 'unchanged renders must not retrigger rail observers', + ); + f.control.destroy(); +}); + +test('clicks emit current values once, including reselection; disabled controls do not emit', () => { + const f = fixture(); + f.control.update('a'); + f.buttons[0].click(); + f.buttons[0].click(); + f.buttons[1].dataset.value = 'renamed'; + f.buttons[1].click(); + f.buttons[2].disabled = true; + f.buttons[2].dispatchEvent(new Event('click')); + assert.deepEqual(f.calls, ['a', 'a', 'renamed']); + assert.equal( + f.buttons[0].getAttribute('aria-checked'), + 'true', + 'the owner controls selection', + ); + f.control.destroy(); +}); + +test('radio navigation wraps, skips disabled choices, and retains Home/End semantics', () => { + const f = fixture({ keyboard: 'radio' }); + f.buttons[1].disabled = true; + assert.equal(f.key(f.buttons[0], 'ArrowRight'), true); + assert.equal(f.document.activeElement, f.buttons[2]); + assert.deepEqual(f.calls, ['c']); + f.key(f.buttons[2], 'ArrowDown'); + assert.equal(f.document.activeElement, f.buttons[0]); + f.key(f.buttons[0], 'Home'); + assert.deepEqual( + f.calls, + ['c', 'a'], + 'Home on the first button does not reselect it', + ); + f.key(f.buttons[0], 'End'); + assert.equal(f.document.activeElement, f.buttons[2]); + assert.deepEqual(f.calls, ['c', 'a', 'c']); + f.control.destroy(); +}); + +test('legacy click-only groups leave arrows and tab order to their existing owner', () => { + const f = fixture(); + f.control.update('b'); + assert.equal(f.key(f.buttons[0], 'ArrowRight'), false); + assert.equal(f.key(f.buttons[0], 'Home'), false); + assert.deepEqual(f.calls, []); + assert.ok( + f.buttons.every((button) => button.getAttribute('tabindex') === null), + ); + f.control.destroy(); +}); + +test('delegated imagery keys navigate from the controlled value, not stale focus', () => { + const f = railFixture(); + const buttons = ['a', 'b', 'c'].map((value) => { + const button = f.document.createElement('button'); + button.dataset.value = value; + f.container.appendChild(button); + return button; + }); + let selected = 'c'; + const calls = []; + const control = createSegmentedControl({ + buttons, + valueOf: (b) => b.dataset.value, + onChange: (value) => { + calls.push(value); + selected = value; + }, + keyboard: 'arrows', + keyTarget: f.container, + readValue: () => selected, + }); + const event = new Event('keydown', { cancelable: true }); + Object.defineProperty(event, 'key', { value: 'ArrowRight' }); + f.container.dispatchEvent(event); + assert.deepEqual(calls, ['a']); + assert.equal(f.document.activeElement, buttons[0]); + const home = new Event('keydown', { cancelable: true }); + Object.defineProperty(home, 'key', { value: 'Home' }); + f.container.dispatchEvent(home); + assert.equal(home.defaultPrevented, false); + assert.deepEqual(calls, ['a']); + control.destroy(); +}); + +test('disposal revokes detached controls and replacement subscriptions fire once', () => { + const f = fixture({ keyboard: 'radio' }); + f.control.destroy(); + const next = []; + const replacement = createSegmentedControl({ + buttons: f.buttons, + valueOf: (b) => b.dataset.value, + onChange: (value) => next.push(value), + keyboard: 'radio', + }); + f.buttons[0].click(); + f.key(f.buttons[0], 'End'); + assert.deepEqual(f.calls, []); + assert.deepEqual(next, ['a', 'c']); + replacement.destroy(); + replacement.destroy(); + f.buttons[1].click(); + f.key(f.buttons[0], 'End'); + assert.deepEqual(next, ['a', 'c']); +}); + +test('pure value navigation can be reused without a DOM', () => { + assert.equal(nextSegmentValue(['fit', 'fill'], 'fill', 'ArrowRight'), 'fit'); + assert.equal(nextSegmentValue(['fit', 'fill'], 'fit', 'ArrowUp'), 'fill'); + assert.equal(nextSegmentValue(['fit', 'fill'], 'fill', 'Home'), 'fit'); + assert.equal(nextSegmentValue(['fit', 'fill'], 'fit', 'End'), 'fill'); + assert.equal( + nextSegmentValue(['fit', 'fill'], 'fit', 'Home', { homeEnd: false }), + undefined, + ); + assert.equal(nextSegmentValue([], 'fit', 'ArrowRight'), undefined); + assert.equal(nextSegmentValue(['fit'], 'fit', 'Escape'), undefined); +}); diff --git a/src/ui/streetLevelControls.js b/src/ui/streetLevelControls.js index 44bd18488..2c6b7e94d 100644 --- a/src/ui/streetLevelControls.js +++ b/src/ui/streetLevelControls.js @@ -1,5 +1,9 @@ import { isExplicitLayerStateOrigin } from '../data/layerState.js'; import { syncChipGroup } from './chipGroup.js'; +import { + createSegmentedControl, + syncSegmentedControl, +} from './segmentedControl.js'; import { presentStreetLevelPanel, SINCE_STOPS, @@ -9,12 +13,6 @@ import { t, translateKnown } from '../i18n/index.js'; const RENDER_MODE_KEY = 'gev:street-level:render-mode'; /** classes of the modes that hide every panel; an expanded photo leaves with them. */ const PANEL_HIDING_MODES = ['ui-clean-view', 'recording-mode', 'cockpit-mode']; -const RADIO_STEPS = Object.freeze({ - ArrowRight: 1, - ArrowDown: 1, - ArrowLeft: -1, - ArrowUp: -1, -}); // Renders run on every layer notification, and the rail's MutationObserver // relays out on each attribute write: write only what changed. @@ -106,13 +104,13 @@ export class StreetLevelControls { } this._toggleProvider(button.dataset.chipId); }); - for (const button of el.panoButtons) { - this.listen(button, 'click', () => - this._setParams({ pano: button.dataset.slPano }), - ); - } - this._bindRadioGroup(el.panoButtons); - this._bindRadioGroup(el.renderButtons); + createSegmentedControl({ + buttons: el.panoButtons, + valueOf: (button) => button.dataset.slPano, + onChange: (pano) => this._setParams({ pano }), + keyboard: 'radio', + listen: (target, type, handler) => this.listen(target, type, handler), + }); // The readout follows the thumb; coverage is rebuilt once, on release. const sinceDays = () => SINCE_STOPS[Number(el.sinceRange?.value) || 0]?.days ?? 0; @@ -160,17 +158,20 @@ export class StreetLevelControls { this._exitExpanded(); }); } else setProp(el.viewerExpand, 'hidden', true); - for (const button of el.renderButtons) { - this.listen(button, 'click', () => { - const mode = button.dataset.slRender; + createSegmentedControl({ + buttons: el.renderButtons, + valueOf: (button) => button.dataset.slRender, + keyboard: 'radio', + listen: (target, type, handler) => this.listen(target, type, handler), + onChange: (mode) => { this.layer.setViewerRenderMode?.(mode); try { localStorage.setItem(RENDER_MODE_KEY, mode); } catch { /* storage unavailable */ } - }); - } + }, + }); try { const stored = localStorage.getItem(RENDER_MODE_KEY); if (stored === 'fill' || stored === 'letterbox') @@ -185,24 +186,6 @@ export class StreetLevelControls { } } - /** ARIA radio keys. Selecting clicks the radio, so keys and pointer share a path. */ - _bindRadioGroup(buttons) { - buttons.forEach((button, index) => { - this.listen(button, 'keydown', (event) => { - let next = null; - if (event.key in RADIO_STEPS) { - const count = buttons.length; - next = buttons[(index + RADIO_STEPS[event.key] + count) % count]; - } else if (event.key === 'Home') next = buttons[0]; - else if (event.key === 'End') next = buttons[buttons.length - 1]; - if (!next) return; - event.preventDefault(); - next.focus(); - if (next !== button) next.click(); - }); - }); - } - /** * Refit the viewer once per frame. Skips a hidden (0×0) viewer, which would * ask for tiles at z=NaN; the observer fires again once it has a size. @@ -416,15 +399,6 @@ export class StreetLevelControls { setProp(el.errorText, 'textContent', view.error || ''); } - _renderRadios(buttons, isChecked) { - for (const button of buttons) { - const checked = isChecked(button); - button.classList.toggle('is-active', checked); - setAttr(button, 'aria-checked', String(checked)); - setAttr(button, 'tabindex', checked ? '0' : '-1'); - } - } - _renderFilters(view) { const el = this._elements; const shows = view.filterControls || { pano: true, since: true }; @@ -434,10 +408,11 @@ export class StreetLevelControls { setProp(el.sinceNote, 'textContent', view.sinceNote || ''); setProp(el.sinceNote, 'hidden', !view.sinceNote); setProp(el.controls, 'hidden', !shows.pano && !shows.since); - this._renderRadios( - el.panoButtons, - (button) => button.dataset.slPano === view.filter.pano, - ); + syncSegmentedControl(el.panoButtons, view.filter.pano, { + valueOf: (button) => button.dataset.slPano, + activeClass: 'is-active', + rovingFocus: true, + }); if (el.sinceRange) { // Never move the thumb under the user's hand; once the committed value // matches the thumb, show the full readout with its cut-off date. @@ -467,10 +442,11 @@ export class StreetLevelControls { setProp(wrap, 'hidden', !viewer.open); } setProp(el.viewerPlaceholder, 'hidden', !viewer.loading); - this._renderRadios( - el.renderButtons, - (button) => button.dataset.slRender === viewer.renderMode, - ); + syncSegmentedControl(el.renderButtons, viewer.renderMode, { + valueOf: (button) => button.dataset.slRender, + activeClass: 'is-active', + rovingFocus: true, + }); // Google's viewer always fills its frame: no FIT/FILL to offer. const renderGroup = el.renderButtons[0]?.parentElement; if (renderGroup) setProp(renderGroup, 'hidden', !viewer.renderModes); diff --git a/src/ui/styles/controls.css b/src/ui/styles/controls.css index f8a7906fe..49d6a1418 100644 --- a/src/ui/styles/controls.css +++ b/src/ui/styles/controls.css @@ -677,11 +677,6 @@ html:not([lang='en']) .pp-slider-row > .pp-slider-mini-label { padding: 5px 8px 6px; } -.detection-allocation-seg .pp-mode-btn { - font-size: 8px; - letter-spacing: 0.35px; -} - #hud-layout-row { min-width: 200px; } @@ -699,7 +694,7 @@ html:not([lang='en']) .pp-slider-row > .pp-slider-mini-label { min-width: 200px; } -.cyber-sonar-toggle-row .pp-mode-btn { +.cyber-sonar-toggle-row .pp-mode-btn:not(.gev-segment) { margin-left: auto; min-width: 48px; } @@ -851,11 +846,6 @@ html:not([lang='en']) .pp-slider-row > .pp-slider-mini-label { #draw-mode-row { min-width: 184px; } -/* Equal thirds with room around the label, so a long translated shape name - never runs edge to edge in its segment. */ -html:not([lang='en']) #draw-mode-row .pp-mode-btn { - padding: 0 4px; -} #draw-label-row { flex-wrap: wrap; row-gap: 6px; @@ -984,11 +974,8 @@ body.gev-geo-import-drag #cesiumContainer { .pp-mode-seg { display: flex; flex: 1; - border: 1px solid rgba(255, 255, 255, 0.14); - border-radius: 6px; - overflow: hidden; } -.pp-mode-btn { +.pp-mode-btn:not(.gev-segment) { flex: 1; height: 22px; background: rgba(255, 255, 255, 0.04); @@ -1003,14 +990,11 @@ body.gev-geo-import-drag #cesiumContainer { background-color var(--transition-fast), color var(--transition-fast); } -.pp-mode-btn + .pp-mode-btn { - border-left: 1px solid rgba(255, 255, 255, 0.14); -} -.pp-mode-btn:hover { +.pp-mode-btn:not(.gev-segment):hover { background: rgba(255, 255, 255, 0.08); color: var(--text-primary); } -.pp-mode-btn.active { +.pp-mode-btn:not(.gev-segment).active { background: var(--accent); color: #000; } diff --git a/src/ui/styles/cyber.css b/src/ui/styles/cyber.css index 04a1efa77..fc93abcb6 100644 --- a/src/ui/styles/cyber.css +++ b/src/ui/styles/cyber.css @@ -506,11 +506,13 @@ 0 0 12px rgba(196, 84, 84, 0.14); } +:root[data-ui-theme='cyber'] .gev-segmented, :root[data-ui-theme='cyber'] .pp-mode-seg { border-color: rgba(206, 222, 226, 0.24); border-radius: 1px; } +:root[data-ui-theme='cyber'] .gev-segment[aria-checked='true'], :root[data-ui-theme='cyber'] .pp-mode-btn.active { background: var(--cyber-red); color: #f7f8f7; diff --git a/src/ui/styles/layers.css b/src/ui/styles/layers.css index 4043751d4..ea64eefc5 100644 --- a/src/ui/styles/layers.css +++ b/src/ui/styles/layers.css @@ -184,8 +184,8 @@ max-height: 100%; pointer-events: auto; } -#right-context-rail > #weather-panel, -/* Collapsed, it must stay hideable by the rail's exclusive layout. */ +/* Collapsed readouts must stay hideable by the rail's exclusive layout. */ +#right-context-rail > #weather-panel:not(.collapsed), #right-context-rail > #recent-imagery-panel:not(.collapsed) { display: flex; flex-direction: column; diff --git a/src/ui/styles/recent-imagery.css b/src/ui/styles/recent-imagery.css index e04955e2f..95c149a3c 100644 --- a/src/ui/styles/recent-imagery.css +++ b/src/ui/styles/recent-imagery.css @@ -321,7 +321,6 @@ html:not([lang='en']) .recent-imagery-readout .ri-mode { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 4px; } .recent-imagery-readout .ri-selection .data-toggle-chip { height: 20px; diff --git a/src/ui/styles/segmented-control.css b/src/ui/styles/segmented-control.css new file mode 100644 index 000000000..bcf083e71 --- /dev/null +++ b/src/ui/styles/segmented-control.css @@ -0,0 +1,51 @@ +/* Shared one-of-many control. Feature classes retain surrounding placement. */ +.gev-segmented { + display: inline-flex; + min-width: 0; + border: 1px solid var(--glass-border-hover); + border-radius: 6px; + overflow: hidden; +} +.gev-segmented[hidden] { + display: none; +} +.gev-segment { + flex: 1; + min-width: min-content; + min-height: 24px; + margin: 0; + padding: 4px 8px; + border: 0; + border-radius: 0; + background: rgba(255, 255, 255, 0.04); + color: var(--text-secondary); + font: 9px/1.25 var(--font-mono); + letter-spacing: 0.6px; + text-transform: uppercase; + overflow-wrap: normal; + cursor: pointer; + transition: + background-color var(--transition-fast), + color var(--transition-fast); +} +.gev-segment + .gev-segment { + border-left: 1px solid var(--glass-border); +} +.gev-segment:hover:not(:disabled) { + background: rgba(255, 255, 255, 0.08); + color: var(--text-primary); +} +.gev-segment[aria-checked='true'] { + background: var(--accent); + color: #000; +} +.gev-segment:focus-visible { + position: relative; + outline: 2px solid var(--text-primary); + outline-offset: -3px; + box-shadow: inset 0 0 0 4px #061014; +} +.gev-segment:disabled { + opacity: 0.42; + cursor: not-allowed; +} diff --git a/src/ui/styles/street-level.css b/src/ui/styles/street-level.css index c218765d9..14b47524f 100644 --- a/src/ui/styles/street-level.css +++ b/src/ui/styles/street-level.css @@ -222,14 +222,6 @@ html:not([lang='en']) .sl-meta-row .sl-nearest-btn { flex-wrap: wrap; } -/* No overflow clipping: it would cut off the buttons' focus ring. The end - buttons round themselves instead. */ -.sl-seg { - display: inline-flex; - border: 1px solid var(--glass-border-hover); - border-radius: 999px; -} - .sl-seg[hidden], .sl-controls[hidden], .sl-filters[hidden], @@ -237,40 +229,6 @@ html:not([lang='en']) .sl-meta-row .sl-nearest-btn { display: none; } -.sl-seg-btn { - font-family: var(--font-mono); - font-size: var(--sl-text); - letter-spacing: 0.08em; - padding: 4px 9px; - border: 0; - background: transparent; - color: var(--text-secondary); - cursor: pointer; -} - -.sl-seg-btn:first-child { - border-radius: 999px 0 0 999px; -} - -.sl-seg-btn:last-child { - border-radius: 0 999px 999px 0; -} - -.sl-seg-btn + .sl-seg-btn { - border-left: 1px solid var(--glass-border); -} - -.sl-seg-btn:focus-visible { - position: relative; - outline: 1px solid var(--accent); - outline-offset: 2px; -} - -.sl-seg-btn.is-active { - background: rgba(5, 203, 99, 0.22); - color: var(--text-primary); -} - .sl-since { display: grid; grid-template-columns: auto 1fr; diff --git a/src/ui/templates/display-controls.html b/src/ui/templates/display-controls.html index 220dc373b..e067f68bd 100644 --- a/src/ui/templates/display-controls.html +++ b/src/ui/templates/display-controls.html @@ -63,9 +63,9 @@
Allocation -
- - +
+ +
@@ -99,9 +99,9 @@
Models -
- - +
+ +
@@ -128,10 +128,10 @@
Shape -
- - - +
+ + +
diff --git a/src/ui/templates/layer-panels.html b/src/ui/templates/layer-panels.html index b170b01e3..6f581ae91 100644 --- a/src/ui/templates/layer-panels.html +++ b/src/ui/templates/layer-panels.html @@ -87,9 +87,9 @@
-
- - +
+ +
@@ -118,10 +118,10 @@
IMAGERY -
- - - +
+ + +
diff --git a/src/ui/visualSettings.js b/src/ui/visualSettings.js index 2aab58f10..db074dda8 100644 --- a/src/ui/visualSettings.js +++ b/src/ui/visualSettings.js @@ -1,4 +1,5 @@ import { STYLE_STATUS_LABELS } from './visualPresets.js'; +import { syncSegmentedControl } from './segmentedControl.js'; import { t } from '../i18n/index.js'; import { UiLifetime } from './uiLifetime.js'; import { @@ -557,11 +558,9 @@ export class VisualSettings { const normalized = normalizeAllocationStrategy(raw); this._detectionAllocationPreference = normalized; setDetectionTuning({ allocationStrategy: normalized }); - for (const button of this._detectionAllocationBtns) { - const active = button.dataset.allocation === normalized; - button.classList.toggle('active', active); - button.setAttribute('aria-checked', String(active)); - } + syncSegmentedControl(this._detectionAllocationBtns, normalized, { + valueOf: (button) => button.dataset.allocation, + }); if (persist) { try { localStorage.setItem(DETECTION_ALLOCATION_STORAGE_KEY, normalized); diff --git a/style.css b/style.css index 44b7e07bc..693cccb67 100644 --- a/style.css +++ b/style.css @@ -27,4 +27,5 @@ @import './src/ui/styles/weather.css'; @import './src/ui/styles/panel-surfaces.css'; +@import './src/ui/styles/segmented-control.css'; @import './src/ui/styles/cyber.css'; From 7df8b369e4cd05db0a1104482859751ecf3a9d4e Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 13:08:35 +0200 Subject: [PATCH 19/36] Add changelog for shared segmented selectors --- changelog.d/1301-shared-segmented-selectors.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changelog.d/1301-shared-segmented-selectors.md diff --git a/changelog.d/1301-shared-segmented-selectors.md b/changelog.d/1301-shared-segmented-selectors.md new file mode 100644 index 000000000..96c1ee20d --- /dev/null +++ b/changelog.d/1301-shared-segmented-selectors.md @@ -0,0 +1,4 @@ +- Unify segmented selectors for model coverage, detection allocation, drawing + shape, Street View and imagery comparison while preserving their existing + behavior. Keep compact labels such as FILL and FLAT on one line, and let + collapsed Weather release space to the open rail panel (mazy1998, #1301). From 4bfee31fdb2ecdabed61fa73e291e6ff576e4ca7 Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 13:21:23 +0200 Subject: [PATCH 20/36] Reserve full height for imagery segmented controls --- .../1301-shared-segmented-selectors.md | 3 +- docs/CURRENT-STATE.md | 2 ++ scripts/qa-segmented-controls.mjs | 36 +++++++++++++++++++ src/ui/recentImagery.test.mjs | 6 ++-- src/ui/styles/recent-imagery.css | 4 +-- 5 files changed, 45 insertions(+), 6 deletions(-) diff --git a/changelog.d/1301-shared-segmented-selectors.md b/changelog.d/1301-shared-segmented-selectors.md index 96c1ee20d..379b8c716 100644 --- a/changelog.d/1301-shared-segmented-selectors.md +++ b/changelog.d/1301-shared-segmented-selectors.md @@ -1,4 +1,5 @@ - Unify segmented selectors for model coverage, detection allocation, drawing shape, Street View and imagery comparison while preserving their existing behavior. Keep compact labels such as FILL and FLAT on one line, and let - collapsed Weather release space to the open rail panel (mazy1998, #1301). + collapsed Weather release space to the open rail panel. Reserve the full mode + button height in Recent Imagery so keyboard focus is not clipped (mazy1998, #1301). diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 419e3efb6..224c9a02a 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -1237,6 +1237,8 @@ Pure value navigation is separate from DOM rendering for reuse by a future view. Segments keep their word minimum width: compact inline groups such as FIT/FILL and ALL/360°/FLAT must not break short labels mid-word. Collapsed Weather follows the same exclusive-rail hiding rule as the other readouts. +The imagery mode row reserves 26px for the 24px buttons and group borders so +the complete button and inset keyboard-focus outline remain visible. Browser acceptance: `QA_BASE_URL=http://127.0.0.1:4173 node scripts/qa-segmented-controls.mjs`. ## Application shortcuts and shader parameter controls diff --git a/scripts/qa-segmented-controls.mjs b/scripts/qa-segmented-controls.mjs index cfa8e51d6..8612c2f23 100644 --- a/scripts/qa-segmented-controls.mjs +++ b/scripts/qa-segmented-controls.mjs @@ -274,6 +274,42 @@ try { cyber.consistent, JSON.stringify(cyber), ); + await page.evaluate(async () => { + const { dataManager, styleManager } = window.__godsEyeView; + await dataManager.setEnabled('recent-imagery', true); + styleManager.setPanelCollapsed('recent-imagery-panel', false, { + persist: false, + syncShare: false, + }); + }); + for (const width of [1440, 620, 390]) { + await page.setViewport({ width, height: 900 }); + await page.focus('.ri-mode-btn[aria-checked="true"]'); + const modeLayout = await page.evaluate(() => { + const group = document.getElementById('ri-mode'); + const bounds = group.getBoundingClientRect(); + const style = getComputedStyle(group); + const top = bounds.top + parseFloat(style.borderTopWidth); + const bottom = bounds.bottom - parseFloat(style.borderBottomWidth); + const buttons = [...group.querySelectorAll('[role="radio"]')]; + return { + visible: bounds.width > 0 && bounds.height > 0, + contained: buttons.every((button) => { + const rect = button.getBoundingClientRect(); + return rect.top >= top - 0.5 && rect.bottom <= bottom + 0.5; + }), + groupHeight: bounds.height, + buttonHeights: buttons.map( + (button) => button.getBoundingClientRect().height, + ), + }; + }); + check( + `imagery mode buttons and focus outline fit their row at ${width}px`, + modeLayout.visible && modeLayout.contained, + JSON.stringify(modeLayout), + ); + } check('no uncaught browser errors', errors.length === 0, errors.join(' | ')); } catch (error) { console.error('Browser errors:', errors); diff --git a/src/ui/recentImagery.test.mjs b/src/ui/recentImagery.test.mjs index a77556797..fe9496688 100644 --- a/src/ui/recentImagery.test.mjs +++ b/src/ui/recentImagery.test.mjs @@ -412,7 +412,7 @@ test('the body is a fixed stack of seven blocks in a fixed order, each with a fi assert.match(rule('.recent-imagery-readout .ri-card'), /height: 112px/); assert.match( rule('.recent-imagery-readout .ri-selection'), - /grid-template-rows: 20px 20px 20px/, + /grid-template-rows: 26px 20px 20px/, ); assert.match(rule('.recent-imagery-readout .ri-slot'), /height: 20px/); assert.match(rule('.recent-imagery-readout .ri-controls'), /height: 22px/); @@ -445,7 +445,7 @@ test('no control changes place in the tree, no block is hidden and every fixed-h /** * Every block that must keep its height: the node carrying the class, that * class, and the rule it gets its height from. The mode row is the first - * 20 px track of the selection grid. The details header has no height of + * 26 px track of the selection grid. The details header has no height of * its own: it is the last block, so it moves nothing below it, and its * title is held to one line. */ @@ -491,7 +491,7 @@ test('no control changes place in the tree, no block is hidden and every fixed-h mode.parentNode.children[0] === mode ? mode.parentNode : null, 'ri-selection', readout('.ri-selection'), - /grid-template-rows: 20px 20px 20px/, + /grid-template-rows: 26px 20px 20px/, ], 'ri-slot-a': [ f.byId('ri-slot-a'), diff --git a/src/ui/styles/recent-imagery.css b/src/ui/styles/recent-imagery.css index 95c149a3c..66b351d26 100644 --- a/src/ui/styles/recent-imagery.css +++ b/src/ui/styles/recent-imagery.css @@ -309,10 +309,10 @@ html:not([lang='en']) display: none; } -/* 4. The selection bar: mode, then two rows that are always there. */ +/* 4. The selection bar: 24px mode buttons plus borders, then two stable rows. */ .recent-imagery-readout .ri-selection { display: grid; - grid-template-rows: 20px 20px 20px; + grid-template-rows: 26px 20px 20px; row-gap: 4px; padding: 5px; border: 1px solid var(--weather-card-border); From 538f2f1bc01ce95c1577faa8d952b73c648b40c9 Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 15:22:00 +0200 Subject: [PATCH 21/36] refactor(ui): share Scene and CCTV action buttons --- docs/CODE-BOUNDARIES.md | 9 + docs/CURRENT-STATE.md | 20 ++ scripts/format-scope.json | 2 + scripts/package-boundaries.json | 4 + scripts/qa-action-buttons.mjs | 335 +++++++++++++++++++++++++++++ scripts/qa-scene-controls.mjs | 3 +- src/keyboardFocusStyles.test.mjs | 2 +- src/ui/actionButton.js | 41 ++++ src/ui/scenePresentation.js | 18 +- src/ui/sceneSharing.js | 6 +- src/ui/styles/action-button.css | 59 +++++ src/ui/styles/cyber.css | 1 + src/ui/styles/scenes.css | 58 ----- src/ui/templates/layer-panels.html | 32 +-- style.css | 1 + 15 files changed, 505 insertions(+), 86 deletions(-) create mode 100644 scripts/qa-action-buttons.mjs create mode 100644 src/ui/actionButton.js create mode 100644 src/ui/styles/action-button.css diff --git a/docs/CODE-BOUNDARIES.md b/docs/CODE-BOUNDARIES.md index eb393a2da..6c2b6ee2a 100644 --- a/docs/CODE-BOUNDARIES.md +++ b/docs/CODE-BOUNDARIES.md @@ -374,6 +374,15 @@ renderer, persistence or services. The facade retains panel visibility, share restore claims and render scheduling. Both controls are destroyed before the facade's asynchronous teardown can yield. +## Ordinary action buttons + +`src/ui/actionButton.js` is a native, listener-free view helper used by Scene +presentation and sharing-toolbar owners. It receives translated text and explicit +presentation/accessibility properties. Feature controllers own action dispatch, +state, persistence and cleanup. Static Scenes/CCTV templates use the same CSS +surface and preserve IDs and layout hooks. The helper imports no application, +renderer, storage or services; it belongs to the consuming package closures. + ## Display controls `ui/display` owns Display button, selector and slider subscriptions. It receives diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index b3930264c..a7c00f287 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -1233,6 +1233,26 @@ Feature owners retain bounds, steps, formatted values, input/change timing and listener cleanup. The radio tuning dial, imagery comparison divider and event comparison/progression controls keep their specialized presentation and behavior. +## Ordinary action buttons + +Scene panel actions, shot LOAD/DEL actions, the EDIT DETAILS / SHARE SCENE +bar and one-shot CCTV actions use `ui/actionButton.js` and the shared +`gev-action-button` surface in `ui/styles/action-button.css`. Static templates +apply the same classes as generated buttons. The native builder accepts translated +text, default/danger variants, default/compact sizes and disabled/accessibility +properties; it installs no listeners and owns no application state. Feature +controllers retain callbacks, enable/disable rules, confirmation prompts, +persistence and teardown. The smaller shot actions retain their existing sizing +and hover treatment. Feature CSS still owns panel layout and translated wrapping. + +CCTV enable, coverage, auto-hop, projection and adjustment toggles, editable +calibration-value chips and the scene authoring dialogs retain their specialized +controls. Existing `scene-btn` hooks remain compatible with Street Level and +legacy toggles. The shared CSS, explicit input/action boundary and behavior tests +can carry to a Vue view while Vue replaces native DOM construction. +Browser acceptance: `QA_BASE_URL=http://127.0.0.1:4179 node scripts/qa-action-buttons.mjs`; +`qa-scene-controls.mjs` also covers real Scene authoring/playback with native Space capture. + ## Segmented selectors Segmented selectors use the controlled DOM adapter in `ui/segmentedControl.js` diff --git a/scripts/format-scope.json b/scripts/format-scope.json index a941b1d8f..0832ceeeb 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -281,6 +281,7 @@ "src/ui/scenePresentation.js", "src/ui/sceneControls.test.mjs", "scripts/qa-scene-controls.mjs", + "scripts/qa-action-buttons.mjs", "src/ui.js", "src/standalone/ui.js", "src/ui/applicationShell.js", @@ -305,6 +306,7 @@ "src/ui/styles/layers.css", "src/ui/styles/controls.css", "src/ui/styles/slider.css", + "src/ui/styles/action-button.css", "src/ui/styles/cctv.css", "src/ui/styles/foundation.css", "src/ui/styles/first-run.css", diff --git a/scripts/package-boundaries.json b/scripts/package-boundaries.json index 3a9950f39..c15a35eae 100644 --- a/scripts/package-boundaries.json +++ b/scripts/package-boundaries.json @@ -614,6 +614,7 @@ "src/ui/scenes.js", "src/ui/sceneControls.js", "src/ui/scenePresentation.js", + "src/ui/actionButton.js", "src/i18n/index.js", "src/i18n/locale.js", "src/i18n/locales/es.json", @@ -737,6 +738,7 @@ "src/ui/rightPanelRail.js", "src/ui/sceneControls.js", "src/ui/scenePresentation.js", + "src/ui/actionButton.js", "src/ui/scenes.js", "src/ui/shareRestoration.js", "src/ui/shellElements.js", @@ -849,6 +851,7 @@ "src/ui/scenes.js", "src/ui/sceneControls.js", "src/ui/scenePresentation.js", + "src/ui/actionButton.js", "src/contextModePolicy.js", "src/director/clock.js", "src/director/timeline.js", @@ -2214,6 +2217,7 @@ "src/ui/rightPanelRail.js", "src/ui/sceneControls.js", "src/ui/scenePresentation.js", + "src/ui/actionButton.js", "src/ui/scenes.js", "src/ui/shareRestoration.js", "src/ui/shellElements.js", diff --git a/scripts/qa-action-buttons.mjs b/scripts/qa-action-buttons.mjs new file mode 100644 index 000000000..ef11e8ff2 --- /dev/null +++ b/scripts/qa-action-buttons.mjs @@ -0,0 +1,335 @@ +#!/usr/bin/env node +/** + * Scenes/CCTV action-button acceptance against dev or production preview: + * QA_BASE_URL=http://127.0.0.1:4179 node scripts/qa-action-buttons.mjs + * Uses the installed CCTV controller with fixture camera/action ports to prove + * native dispatch/disabled/teardown without providers or world calibration writes. + * Real Scene authoring/playback remains covered by qa-scene-controls.mjs. + */ +import fs from 'node:fs'; +import puppeteer from 'puppeteer'; + +const browser = await puppeteer.launch({ + headless: true, + args: ['--use-gl=angle', '--use-angle=swiftshader'], +}); +const page = await browser.newPage(); +const errors = []; +page.on('pageerror', (error) => errors.push(error.message)); +let failures = 0; +const check = (name, passed, detail) => { + console.log(`[${passed ? 'PASS' : 'FAIL'}] ${name}`); + if (!passed) { + failures++; + console.log(JSON.stringify(detail)); + } +}; +const shots = 'qa-shots/action-buttons'; +fs.mkdirSync(shots, { recursive: true }); + +try { + await page.setViewport({ width: 1440, height: 900 }); + await page.goto( + `${process.env.QA_BASE_URL || 'http://127.0.0.1:4179'}/?welcome=0`, + { waitUntil: 'domcontentloaded' }, + ); + await page.waitForFunction( + () => + window.__godsEyeView?.styleManager?._cctvControls && + document.getElementById('loading-screen')?.classList.contains('hidden'), + { timeout: 60000 }, + ); + const inventory = await page.evaluate(() => { + const ids = [ + 'scene-new-btn', + 'scene-delete-btn', + 'scene-capture-btn', + 'scene-update-shot-btn', + 'scene-start-btn', + 'scene-stop-btn', + 'scene-next-btn', + 'scene-export-btn', + 'scene-import-btn', + 'scene-download-btn', + 'cctv-nearest-btn', + 'cctv-prev-btn', + 'cctv-next-btn', + 'cctv-focus-btn', + 'cctv-calib-save-btn', + 'cctv-calib-reset-btn', + ]; + const ordinary = ids.map((id) => document.getElementById(id)); + const generated = [ + ...document.querySelectorAll( + '.scene-shot-btn, [data-director-authoring] button', + ), + ]; + const toggles = [ + 'cctv-enable-btn', + 'cctv-coverage-btn', + 'cctv-auto-hop-btn', + 'cctv-projection-btn', + 'cctv-adjust-btn', + ].map((id) => document.getElementById(id)); + return { + shared: [...ordinary, ...generated].every( + (node) => + node?.type === 'button' && + node.classList.contains('gev-action-button'), + ), + generated: generated.length, + layout: ordinary.every((node) => { + const style = getComputedStyle(node); + return style.minWidth === '72px' && style.flexGrow === '1'; + }), + togglesSeparate: toggles.every( + (node) => node && !node.classList.contains('gev-action-button'), + ), + compactDanger: !!document.querySelector( + '.scene-shot-danger.gev-action-button--compact.gev-action-button--danger', + ), + }; + }); + check( + 'static and generated actions share the native component', + inventory.shared && inventory.generated >= 4 && inventory.compactDanger, + inventory, + ); + check( + 'persistent CCTV toggles retain their existing controls', + inventory.togglesSeparate, + ); + check('ordinary actions retain their panel sizing', inventory.layout); + + await page.evaluate(() => { + const manager = window.__godsEyeView.styleManager; + const owner = manager._cctvControls; + owner._cctvUnsubscribe?.(); + owner._cctvUnsubscribe = null; + window.__qaButtonCalls = []; + const record = (...args) => window.__qaButtonCalls.push(args); + owner.actions = { + ...owner.actions, + isEnabled: () => true, + toggleEnabled: async () => { + record('enable'); + return true; + }, + runExplicitFocus: (select, focus) => focus(select()), + setParams: (params, options) => record('params', params, options), + showToast: () => {}, + }; + owner.cctv = { + focusNearest: () => { + record('nearest'); + return 'a'; + }, + cycleCamera: (direction) => { + record('cycle', direction); + return 'b'; + }, + focusCamera: (id, seconds) => record('focus', id, seconds), + }; + window.__qaCameraState = { + enabled: true, + activeCameraId: 'a', + cameras: [ + { id: 'a', city: 'Fixture', name: 'A' }, + { id: 'b', city: 'Fixture', name: 'B' }, + ], + activeCamera: { id: 'a', name: 'A', basePose: {} }, + }; + owner._renderCctvState(window.__qaCameraState); + manager.setPanelCollapsed('cctv-panel', false, { + persist: false, + syncShare: false, + }); + }); + await page.focus('#cctv-next-btn'); + await page.keyboard.press('Space'); + await page.waitForFunction(() => window.__qaButtonCalls.length === 3); + check( + 'native Space dispatches Next and its focus once', + await page.evaluate( + () => + JSON.stringify(window.__qaButtonCalls) === + JSON.stringify([['enable'], ['cycle', 1], ['focus', 'b', 1.4]]), + ), + ); + check( + 'native keyboard activation keeps a visible focus ring', + await page.$eval( + '#cctv-next-btn', + (node) => + document.activeElement === node && + getComputedStyle(node).outlineStyle === 'solid', + ), + ); + await page.evaluate(() => { + window.__qaButtonCalls = []; + }); + await page.focus('#cctv-prev-btn'); + await page.keyboard.press('Enter'); + await page.waitForFunction(() => window.__qaButtonCalls.length === 3); + check( + 'native Enter dispatches Previous once', + await page.evaluate( + () => + JSON.stringify(window.__qaButtonCalls) === + JSON.stringify([['enable'], ['cycle', -1], ['focus', 'b', 1.4]]), + ), + ); + + for (const [id, expected] of [ + ['cctv-nearest-btn', [['enable'], ['nearest'], ['focus', 'a', 1.8]]], + [ + 'cctv-focus-btn', + [ + ['enable'], + ['focus', 'a', 1.9], + ['params', { selectedCameraId: 'a' }, { origin: 'user' }], + ], + ], + ]) { + await page.evaluate(() => { + window.__qaButtonCalls = []; + }); + await page.click(`#${id}`); + await page.waitForFunction(() => window.__qaButtonCalls.length === 3); + const calls = await page.evaluate(() => window.__qaButtonCalls); + check( + `${id} retains its existing action and focus timing`, + JSON.stringify(calls) === JSON.stringify(expected), + calls, + ); + } + + await page.evaluate(() => { + window.__qaButtonCalls = []; + }); + await page.click('#cctv-calib-save-btn'); + await page.click('#cctv-calib-reset-btn'); + const calibration = await page.evaluate(() => window.__qaButtonCalls); + check( + 'Save and Reset retain camera identity and user-origin dispatch', + JSON.stringify(calibration) === + JSON.stringify([ + [ + 'params', + { selectedCameraId: 'a', calibration: { cameraId: 'a', save: true } }, + { origin: 'user' }, + ], + [ + 'params', + { + selectedCameraId: 'a', + calibration: { cameraId: 'a', reset: true }, + }, + { origin: 'user' }, + ], + ]), + calibration, + ); + await page.evaluate(() => { + window.__qaButtonCalls = []; + window.__godsEyeView.styleManager._cctvControls._renderCctvState({ + enabled: false, + }); + }); + await page.click('#cctv-next-btn'); + await page.waitForFunction( + () => { + const node = document.getElementById('cctv-next-btn'); + return node.disabled && Number(getComputedStyle(node).opacity) === 0.45; + }, + { timeout: 3000 }, + ); + check( + 'disabled actions stay inert and keep disabled presentation', + await page.$eval( + '#cctv-next-btn', + (node) => + node.disabled && + getComputedStyle(node).opacity === '0.45' && + window.__qaButtonCalls.length === 0, + ), + ); + + for (const width of [1440, 620, 390]) { + await page.setViewport({ width, height: 900 }); + for (const panel of ['scene-panel', 'cctv-panel']) { + await page.evaluate((panel) => { + window.__godsEyeView.styleManager.setPanelCollapsed(panel, false, { + persist: false, + syncShare: false, + }); + }, panel); + const fit = await page.$eval(`#${panel}`, (root) => { + const buttons = [...root.querySelectorAll('.gev-action-button')]; + const rect = root.getBoundingClientRect(); + return { + count: buttons.length, + fits: + buttons.length > 0 && + buttons.every((button) => { + const box = button.getBoundingClientRect(); + return ( + box.width > 0 && + box.left >= rect.left && + box.right <= rect.right + 1 && + box.left >= 0 && + box.right <= innerWidth + 1 && + button.scrollWidth <= button.clientWidth + ); + }), + }; + }); + check(`${panel} actions fit at ${width}px`, fit.fits, fit); + if (width !== 620) + await page.screenshot({ path: `${shots}/${panel}-${width}.png` }); + } + } + await page.evaluate(() => { + const owner = window.__godsEyeView.styleManager._cctvControls; + owner.destroy(); + document.getElementById('cctv-next-btn').disabled = false; + window.__qaButtonCalls = []; + }); + await page.click('#cctv-next-btn'); + check( + 'destroyed controllers revoke action listeners', + await page.evaluate(() => window.__qaButtonCalls.length === 0), + ); + const localized = new URL(page.url()); + localized.searchParams.set('lang', 'ru'); + await page.goto(localized.href, { waitUntil: 'domcontentloaded' }); + await page.waitForFunction( + () => + window.__godsEyeView?.styleManager?._cctvControls && + document.getElementById('loading-screen')?.classList.contains('hidden'), + { timeout: 60000 }, + ); + for (const panel of ['scene-panel', 'cctv-panel']) { + await page.evaluate((panel) => { + window.__godsEyeView.styleManager.setPanelCollapsed(panel, false, { + persist: false, + syncShare: false, + }); + }, panel); + const translated = await page.$eval(`#${panel}`, (root) => { + const buttons = [...root.querySelectorAll('.gev-action-button')]; + return ( + document.documentElement.lang === 'ru' && + buttons.length > 0 && + buttons.every((node) => node.scrollWidth <= node.clientWidth) + ); + }); + check(`Russian ${panel} action labels fit at 390px`, translated); + await page.screenshot({ path: `${shots}/${panel}-ru-390.png` }); + } + check('no uncaught browser errors', errors.length === 0, errors); +} finally { + await browser.close(); +} +console.log(`RESULT: ${failures} failures`); +process.exitCode = failures ? 1 : 0; diff --git a/scripts/qa-scene-controls.mjs b/scripts/qa-scene-controls.mjs index 9dae69cdc..c7068f26c 100644 --- a/scripts/qa-scene-controls.mjs +++ b/scripts/qa-scene-controls.mjs @@ -66,7 +66,8 @@ try { ); }), ); - await page.click('#scene-capture-btn'); + await page.focus('#scene-capture-btn'); + await page.keyboard.press('Space'); await page.waitForFunction( () => document.querySelectorAll('.scene-shot-row').length === 1, ); diff --git a/src/keyboardFocusStyles.test.mjs b/src/keyboardFocusStyles.test.mjs index 5244cffdc..fc59481aa 100644 --- a/src/keyboardFocusStyles.test.mjs +++ b/src/keyboardFocusStyles.test.mjs @@ -69,7 +69,7 @@ test('focusable controls do not animate the global outline', () => { '#top-center-actions button {', '.data-toggle-chip {', '.scene-btn {', - '.scene-shot-btn {', + '.gev-action-button--compact {', ]) { assert.doesNotMatch( ruleBody(selector), diff --git a/src/ui/actionButton.js b/src/ui/actionButton.js new file mode 100644 index 000000000..f1b4b85f9 --- /dev/null +++ b/src/ui/actionButton.js @@ -0,0 +1,41 @@ +/** + * Create an ordinary native action button. Static templates use the same CSS + * classes. Labels are already translated; feature owners retain callbacks, + * disabled-state updates and listener cleanup. Construction binds no listeners. + * @param {object} options + * @param {Document} [options.documentRef] Document that owns the button. + * @param {string} options.label Visible text, never interpreted as markup. + * @param {string} [options.className] Additional feature/layout hooks. + * @param {'default'|'danger'} [options.variant] + * @param {'default'|'compact'} [options.size] + * @param {boolean} [options.disabled] + * @param {string} [options.ariaLabel] Accessible name when visible text needs context. + * @param {string} [options.title] + * @returns {HTMLButtonElement} + */ +export function createActionButton({ + documentRef = globalThis.document, + label, + className = '', + variant = 'default', + size = 'default', + disabled = false, + ariaLabel, + title, +}) { + const button = documentRef.createElement('button'); + button.type = 'button'; + button.className = [ + 'gev-action-button', + variant === 'danger' && 'gev-action-button--danger', + size === 'compact' && 'gev-action-button--compact', + className, + ] + .filter(Boolean) + .join(' '); + button.textContent = label; + button.disabled = disabled; + if (ariaLabel !== undefined) button.setAttribute('aria-label', ariaLabel); + if (title !== undefined) button.title = title; + return button; +} diff --git a/src/ui/scenePresentation.js b/src/ui/scenePresentation.js index 258ee5059..52e99796e 100644 --- a/src/ui/scenePresentation.js +++ b/src/ui/scenePresentation.js @@ -1,5 +1,6 @@ /** Scene panel elements and text-only project presentation. */ import { formatNumber, msg, t } from '../i18n/index.js'; +import { createActionButton } from './actionButton.js'; // Labels for what a shot stores; anything else shows as stored. Style names // match STYLE_STATUS_LABELS in visualPresets.js, which this package cannot @@ -121,13 +122,18 @@ export function renderSceneShots( }); const actions = document.createElement('div'); actions.className = 'scene-shot-actions'; - const loadButton = document.createElement('button'); - loadButton.className = 'scene-shot-btn'; - loadButton.textContent = t('LOAD'); + const loadButton = createActionButton({ + label: t('LOAD'), + className: 'scene-shot-btn', + size: 'compact', + }); listen(loadButton, 'click', () => load(scene.id, shot.id)); - const deleteButton = document.createElement('button'); - deleteButton.className = 'scene-shot-btn scene-shot-danger'; - deleteButton.textContent = t('DEL'); + const deleteButton = createActionButton({ + label: t('DEL'), + className: 'scene-shot-btn scene-shot-danger', + size: 'compact', + variant: 'danger', + }); listen(deleteButton, 'click', () => remove(scene.id, shot.id)); actions.appendChild(loadButton); actions.appendChild(deleteButton); diff --git a/src/ui/sceneSharing.js b/src/ui/sceneSharing.js index 245561b8d..8c9843eba 100644 --- a/src/ui/sceneSharing.js +++ b/src/ui/sceneSharing.js @@ -1,4 +1,5 @@ import { t, tn } from '../i18n/index.js'; +import { createActionButton } from './actionButton.js'; /** Small owned modal for scene authoring and import review; text never becomes markup. */ export function createSceneDialog(title, onClose) { @@ -185,10 +186,7 @@ export function mountSceneSharing( ]; const removers = []; for (const [text, fn] of entries) { - const b = document.createElement('button'); - b.type = 'button'; - b.textContent = text; - b.className = 'scene-btn'; + const b = createActionButton({ label: text, className: 'scene-btn' }); b.addEventListener('click', fn); removers.push(() => b.removeEventListener('click', fn)); bar.append(b); diff --git a/src/ui/styles/action-button.css b/src/ui/styles/action-button.css new file mode 100644 index 000000000..4da40cdb1 --- /dev/null +++ b/src/ui/styles/action-button.css @@ -0,0 +1,59 @@ +/* Ordinary actions share one surface; feature classes own placement and width. + * Legacy scene-btn hooks keep untouched toggles/Street Level controls stable. */ +.gev-action-button, +.scene-btn { + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.14); + border-radius: 7px; + color: var(--text-secondary); + font-family: var(--font-mono); + font-size: 9px; + letter-spacing: 1.2px; + padding: 6px 9px; + cursor: pointer; + transition: + background-color var(--transition-fast), + border-color var(--transition-fast), + color var(--transition-fast), + opacity var(--transition-fast); + white-space: nowrap; +} + +.gev-action-button:hover:not(:disabled), +.scene-btn:hover:not(:disabled) { + color: var(--accent); + border-color: var(--accent); + background: rgba(0, 212, 255, 0.14); +} + +.gev-action-button:disabled, +.scene-btn:disabled { + opacity: 0.45; + cursor: default; +} + +.gev-action-button--danger:hover:not(:disabled), +.scene-btn-danger:hover:not(:disabled) { + color: #ff7272; + border-color: #ff7272; + background: rgba(255, 88, 88, 0.15); +} + +/* Shot-row actions retain their smaller footprint and quieter hover treatment. */ +.gev-action-button--compact { + border-radius: 6px; + font-size: 8px; + letter-spacing: 0.8px; + padding: 4px 6px; +} + +.gev-action-button--compact:hover:not(:disabled) { + color: var(--text-primary); + border-color: var(--glass-border-hover); + background: rgba(255, 255, 255, 0.05); +} + +.gev-action-button--compact.gev-action-button--danger:hover:not(:disabled) { + color: #ff7e7e; + border-color: #ff7e7e; +} diff --git a/src/ui/styles/cyber.css b/src/ui/styles/cyber.css index fc93abcb6..cad6e69af 100644 --- a/src/ui/styles/cyber.css +++ b/src/ui/styles/cyber.css @@ -171,6 +171,7 @@ .dock-tray-toggle, .dock-popover, .scene-btn, + .gev-action-button:not(.gev-action-button--compact), .context-mode-button, .map-stack-chip, .key-setup-chip, diff --git a/src/ui/styles/scenes.css b/src/ui/styles/scenes.css index 287b8b842..8c8d663cd 100644 --- a/src/ui/styles/scenes.css +++ b/src/ui/styles/scenes.css @@ -184,21 +184,6 @@ html:not([lang='en']) #scene-panel .scene-controls .scene-btn { } .scene-btn { - background: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.14); - border-radius: 7px; - color: var(--text-secondary); - font-family: var(--font-mono); - font-size: 9px; - letter-spacing: 1.2px; - padding: 6px 9px; - cursor: pointer; - transition: - background-color var(--transition-fast), - border-color var(--transition-fast), - color var(--transition-fast), - opacity var(--transition-fast); - white-space: nowrap; flex: 1; min-width: 72px; } @@ -295,49 +280,6 @@ html:not([lang='en']) #scene-panel .scene-controls .scene-btn { gap: 6px; } -.scene-shot-btn { - border: 1px solid rgba(255, 255, 255, 0.14); - border-radius: 6px; - background: rgba(255, 255, 255, 0.05); - color: var(--text-secondary); - font-family: var(--font-mono); - font-size: 8px; - letter-spacing: 0.8px; - padding: 4px 6px; - cursor: pointer; - transition: - background-color var(--transition-fast), - border-color var(--transition-fast), - color var(--transition-fast); -} - -.scene-shot-btn:hover { - color: var(--text-primary); - border-color: var(--glass-border-hover); -} - -.scene-shot-btn.scene-shot-danger:hover { - color: #ff7e7e; - border-color: #ff7e7e; -} - -.scene-btn:hover:not(:disabled) { - color: var(--accent); - border-color: var(--accent); - background: rgba(0, 212, 255, 0.14); -} - -.scene-btn:disabled { - opacity: 0.45; - cursor: default; -} - -.scene-btn-danger:hover:not(:disabled) { - color: #ff7272; - border-color: #ff7272; - background: rgba(255, 88, 88, 0.15); -} - .scene-progress { margin-top: 8px; width: 100%; diff --git a/src/ui/templates/layer-panels.html b/src/ui/templates/layer-panels.html index 78ecfd777..283891a98 100644 --- a/src/ui/templates/layer-panels.html +++ b/src/ui/templates/layer-panels.html @@ -31,15 +31,15 @@
Enable CCTV to load camera intersections
- +
- + - +
- +
@@ -62,8 +62,8 @@
- - + +
SCENE SUMMARY
@@ -151,23 +151,23 @@
- - + +
- - + +
- - - + + +
- - - + + +
diff --git a/style.css b/style.css index 89d1371ae..13331b13d 100644 --- a/style.css +++ b/style.css @@ -1,5 +1,6 @@ /* Preserve component and responsive rule order in one stylesheet entry. */ @import './src/ui/styles/foundation.css'; +@import './src/ui/styles/action-button.css'; @import './src/ui/styles/slider.css'; @import './src/ui/styles/controls.css'; @import './src/ui/styles/location.css'; From 5a11bd9515824f035388e19597e7ecf60954f37e Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 15:22:21 +0200 Subject: [PATCH 22/36] docs: add shared action buttons changelog entry --- changelog.d/1302-shared-action-buttons.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog.d/1302-shared-action-buttons.md diff --git a/changelog.d/1302-shared-action-buttons.md b/changelog.d/1302-shared-action-buttons.md new file mode 100644 index 000000000..3c8318488 --- /dev/null +++ b/changelog.d/1302-shared-action-buttons.md @@ -0,0 +1,3 @@ +- Give ordinary Scene and CCTV actions shared native buttons with consistent + default, destructive and compact styling while preserving their existing + behavior and specialized controls (mazy1998, #1302). From 7932259dc4131bd346ff44d362c2bce1990cc96a Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 15:35:49 +0200 Subject: [PATCH 23/36] refactor(ui): share native dropdown and numeric field surfaces --- docs/CODE-BOUNDARIES.md | 10 + docs/CURRENT-STATE.md | 17 + scripts/format-scope.json | 2 + scripts/package-boundaries.json | 3 + scripts/qa-form-fields.mjs | 465 +++++++++++++++++++++++++ src/ui/cctvCalibration.js | 12 +- src/ui/cctvControls.test.mjs | 3 + src/ui/formField.js | 36 ++ src/ui/styles/cctv.css | 37 -- src/ui/styles/controls.css | 10 - src/ui/styles/form-field.css | 51 +++ src/ui/styles/scenes.css | 8 - src/ui/templates/context.html | 6 +- src/ui/templates/display-controls.html | 4 +- src/ui/templates/layer-panels.html | 4 +- style.css | 1 + 16 files changed, 602 insertions(+), 67 deletions(-) create mode 100644 scripts/qa-form-fields.mjs create mode 100644 src/ui/formField.js create mode 100644 src/ui/styles/form-field.css diff --git a/docs/CODE-BOUNDARIES.md b/docs/CODE-BOUNDARIES.md index eb393a2da..b1e8b6a0c 100644 --- a/docs/CODE-BOUNDARIES.md +++ b/docs/CODE-BOUNDARIES.md @@ -729,3 +729,13 @@ sources supply `{records, droppedCount, status, saturated}`; viewport filtering, exact-bound retry and rendering stay in the layer. Legacy cache saturation is decoded in the source. Source and geometry modules remain independent of Cesium, DOM and platform middleware. + +### Native form fields + +`src/ui/formField.js` constructs native numeric inputs without listeners or +application state. Static selects and number inputs use the same `gev-field` +surface, with explicit compact and inline densities. Feature owners retain +option identity/order, bounds, parsing, draft values, input/change timing and +teardown. CCTV effective-pose conversion and tuner/device operations remain +feature responsibilities. A Vue replacement can reuse this contract and CSS; +it replaces DOM construction, rather than adding a second state owner. diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index b3930264c..a67f6b740 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -5938,3 +5938,20 @@ datacenters, dams and the Nepal locator retain that shared credit while displaye Military fragments stitch by source identity. Different mapped parcels merge only when their footprints touch or contain one another, never across a seam tolerance gap. + +### Shared native dropdowns and numeric fields + +- Scene and CCTV selects share the default `gev-field` surface. HUD layout and + draw colour retain compact density. Radio filter, tuner gain and FM frequency + use the same base while retaining their feature-specific skins and layout. +- The CCTV inline number editor uses `createNumberInput` with its existing + precision and inline density. Enter/blur commit, Escape cancellation, frozen + camera base, camera-switch guards and disposal remain with CCTV controls. +- Options, values, native keyboard/typeahead, disabled attributes and browser + validity remain native. Frequency bounds, tuner commit timing and calibration + parsing are unchanged. Specialized tuner graphics and calibration chips + retain their own controls. Provider settings and scene-authoring dialogs are + outside this change. +- `scripts/qa-form-fields.mjs` exercises native selections, number validity, + calibration commit/cancel and stale-camera/disposal guards against an installed + controller with fixture ports, plus default/Cyber and narrow translated layouts. diff --git a/scripts/format-scope.json b/scripts/format-scope.json index a941b1d8f..9b8b5cf45 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -2,6 +2,8 @@ ".prettierrc.json", "package.json", "scripts/format-scope.json", + "src/ui/styles/form-field.css", + "scripts/qa-form-fields.mjs", "scripts/package-boundaries.json", "scripts/format.mjs", "scripts/next-layer-state-token.mjs", diff --git a/scripts/package-boundaries.json b/scripts/package-boundaries.json index 3a9950f39..b4fe8f0df 100644 --- a/scripts/package-boundaries.json +++ b/scripts/package-boundaries.json @@ -539,6 +539,7 @@ "src/ui/cctv.js", "src/ui/cctvBindings.js", "src/ui/cctvCalibration.js", + "src/ui/formField.js", "src/ui/cctvControls.js", "src/ui/cctvFrames.js", "src/ui/cctvVideo.js", @@ -675,6 +676,7 @@ "src/ui/cctv.js", "src/ui/cctvBindings.js", "src/ui/cctvCalibration.js", + "src/ui/formField.js", "src/ui/cctvControls.js", "src/ui/cctvFrames.js", "src/ui/cctvVideo.js", @@ -2151,6 +2153,7 @@ "src/ui/cctv.js", "src/ui/cctvBindings.js", "src/ui/cctvCalibration.js", + "src/ui/formField.js", "src/ui/cctvControls.js", "src/ui/cctvFrames.js", "src/ui/cctvVideo.js", diff --git a/scripts/qa-form-fields.mjs b/scripts/qa-form-fields.mjs new file mode 100644 index 000000000..3bbee3816 --- /dev/null +++ b/scripts/qa-form-fields.mjs @@ -0,0 +1,465 @@ +#!/usr/bin/env node +/** Native form-field regression gate. CCTV ports are fixtures, never live writes. */ +import fs from 'node:fs'; +import puppeteer from 'puppeteer'; + +const browser = await puppeteer.launch({ + headless: true, + args: ['--use-gl=angle', '--use-angle=swiftshader'], +}); +const page = await browser.newPage(); +page.setDefaultNavigationTimeout(60000); +let failures = 0; +const errors = []; +page.on('pageerror', (error) => errors.push(error.message)); +const check = (name, passed, detail) => { + console.log(`[${passed ? 'PASS' : 'FAIL'}] ${name}`); + if (!passed) { + failures++; + console.log(JSON.stringify(detail)); + } +}; +fs.mkdirSync('qa-shots/form-fields', { recursive: true }); +try { + await page.setViewport({ width: 1440, height: 900 }); + await page.goto( + `${process.env.QA_BASE_URL || 'http://127.0.0.1:4183'}/?welcome=0`, + { + waitUntil: 'domcontentloaded', + }, + ); + await page.waitForFunction( + () => + window.__godsEyeView?.styleManager?._cctvControls && + document.getElementById('loading-screen')?.classList.contains('hidden'), + { timeout: 60000 }, + ); + const inventory = await page.evaluate(() => { + const selects = [ + 'scene-select', + 'cctv-camera-select', + 'hud-layout-select', + 'draw-color-select', + 'radio-filter', + 'sdr-gain-select', + ].map((id) => document.getElementById(id)); + return { + ids: selects.map((node) => node.id), + shared: + selects.length === 6 && + selects.every((node) => node.classList.contains('gev-field')), + native: selects.every( + (node) => + node instanceof HTMLSelectElement && !node.hasAttribute('role'), + ), + dark: selects.every( + (node) => getComputedStyle(node).colorScheme === 'dark', + ), + }; + }); + check( + 'all six panel dropdowns retain native select semantics and shared surface', + inventory.shared && inventory.native, + inventory, + ); + check('native option menus keep the dark scheme', inventory.dark); + await page.evaluate(() => { + const manager = window.__godsEyeView.styleManager; + manager.setPanelCollapsed('pp-toggles', false, { + persist: false, + syncShare: false, + }); + manager.setPanelCollapsed('scene-panel', false, { + persist: false, + syncShare: false, + }); + manager.setPanelCollapsed('cctv-panel', false, { + persist: false, + syncShare: false, + }); + window.__qaFormChanges = []; + document + .getElementById('scene-select') + .addEventListener('change', (event) => + window.__qaFormChanges.push(event.target.value), + ); + }); + const ownerSetup = await page.evaluate(() => { + const owner = window.__godsEyeView.styleManager._cctvControls; + owner._cctvUnsubscribe?.(); + owner._cctvUnsubscribe = null; + window.__qaFormCalls = []; + owner.actions = { + ...owner.actions, + isEnabled: () => true, + toggleEnabled: async () => true, + setParams: (...args) => window.__qaFormCalls.push(args), + runExplicitFocus: (select, focus) => focus(select()), + showToast: () => {}, + }; + owner.cctv = { + setParams() {}, + focusCamera: (id) => window.__qaFormCalls.push(['focus', id]), + selectCamera: (id) => id, + }; + owner._cctvState = { + enabled: true, + activeCameraId: 'a', + cameras: [ + { id: 'a', name: 'A' }, + { id: 'b', name: 'B' }, + ], + activeCamera: { + id: 'a', + headingDeg: 30, + pitchDeg: -10, + fovDeg: 45, + rangeM: 120, + mountHeightM: 8, + calibration: {}, + basePose: { + headingDeg: 20, + pitchDeg: -10, + fovDeg: 45, + rangeM: 120, + mountHeightM: 8, + }, + }, + }; + owner._renderCctvState(owner._cctvState); + const input = document.getElementById('sdr-frequency-input'); + return { + min: input.min, + max: input.max, + step: input.step, + type: input.type, + shared: input.classList.contains('gev-field'), + }; + }); + check( + 'FM frequency retains native bounds, precision and shared surface', + ownerSetup.min === '87.5' && + ownerSetup.max === '108' && + ownerSetup.step === '0.1' && + ownerSetup.type === 'number' && + ownerSetup.shared, + ownerSetup, + ); + const validity = await page.$eval('#sdr-frequency-input', (input) => { + const original = input.value; + input.value = '87.4'; + const below = input.validity.rangeUnderflow; + input.value = '108.1'; + const above = input.validity.rangeOverflow; + input.value = '98.55'; + const step = input.validity.stepMismatch; + input.value = ''; + const empty = input.validity.valid; + input.value = original; + return below && above && step && empty; + }); + check( + 'native numeric validity preserves underflow, overflow, steps and empty drafts', + validity, + ); + await page.select('#cctv-camera-select', 'b'); + await page.waitForFunction(() => window.__qaFormCalls.length === 2); + const cameraSelection = await page.evaluate(() => window.__qaFormCalls); + check( + 'camera dropdown retains selection, focus and user-origin dispatch', + cameraSelection[0][0] === 'focus' && + cameraSelection[0][1] === 'b' && + cameraSelection[1][0].selectedCameraId === 'b' && + cameraSelection[1][1].origin === 'user', + cameraSelection, + ); + await page.evaluate(() => { + window.__qaFormCalls = []; + document.getElementById('cctv-camera-select').disabled = true; + }); + await page.focus('#scene-select'); + await page.focus('#cctv-camera-select'); + check( + 'disabled native selects cannot receive keyboard focus', + await page.evaluate( + () => document.activeElement.id !== 'cctv-camera-select', + ), + ); + await page.evaluate(() => { + document.getElementById('cctv-camera-select').disabled = false; + }); + const begin = async (field) => { + await page.evaluate((field) => { + const owner = window.__godsEyeView.styleManager._cctvControls; + owner._beginCctvCalValueEdit( + document.querySelector(`[data-cal-field="${field}"]`), + ); + }, field); + }; + for (const [field, step, value] of [ + ['heading', '0.1', '30.0'], + ['pitch', '0.1', '-10.0'], + ['fov', '1', '45'], + ['range', '1', '120'], + ['height', '1', '8'], + ['north', '0.1', '0.0'], + ['east', '0.1', '0.0'], + ]) { + await begin(field); + const result = await page.$eval('.cctv-cal-input', (input) => ({ + step: input.step, + value: input.value, + native: input.type === 'number', + shared: input.classList.contains('gev-field'), + label: input.getAttribute('aria-label'), + focus: document.activeElement === input, + })); + check( + `${field} editor retains precision, initial value and focus`, + result.step === step && + result.value === value && + result.native && + result.shared && + !!result.label && + result.focus, + result, + ); + await page.keyboard.press('Escape'); + } + check( + 'Escape cancels each field without a calibration write', + await page.evaluate(() => window.__qaFormCalls.length === 0), + ); + await begin('heading'); + await page.keyboard.press('Backspace'); + await page.type('.cctv-cal-input', '100'); + await page.evaluate(() => { + window.__godsEyeView.styleManager._cctvControls._cctvState.activeCamera.basePose.headingDeg = 60; + }); + await page.keyboard.press('Enter'); + const commit = await page.evaluate(() => window.__qaFormCalls); + check( + 'Enter commits once against the frozen camera base', + commit.length === 1 && + commit[0][0].calibration.patch.headingDeg === 80 && + commit[0][0].calibration.cameraId === 'a' && + commit[0][1].origin === 'user', + commit, + ); + await begin('north'); + await page.keyboard.press('Backspace'); + await page.type('.cctv-cal-input', '12.5'); + await page.$eval('.cctv-cal-input', (input) => input.blur()); + const blur = await page.evaluate(() => window.__qaFormCalls); + check( + 'blur commits a decimal offset exactly once', + blur.length === 2 && blur[1][0].calibration.patch.offsetNorthM === 12.5, + blur, + ); + await begin('east'); + await page.keyboard.press('Backspace'); + await page.keyboard.press('Enter'); + check( + 'an empty numeric draft does not write calibration', + await page.evaluate(() => window.__qaFormCalls.length === 2), + ); + await begin('heading'); + await page.type('.cctv-cal-input', '90'); + await page.evaluate(() => { + window.__godsEyeView.styleManager._cctvControls._cctvState.activeCameraId = + 'b'; + }); + await page.keyboard.press('Enter'); + check( + 'a stale camera editor cannot commit to the next camera', + await page.evaluate(() => window.__qaFormCalls.length === 2), + ); + + await page.evaluate(() => { + for (const panel of ['pp-toggles', 'scene-panel', 'cctv-panel']) + window.__godsEyeView.styleManager.setPanelCollapsed(panel, false, { + persist: false, + syncShare: false, + }); + }); + if ( + await page.$eval( + '#draw-toggle', + (node) => node.getAttribute('aria-pressed') !== 'true', + ) + ) + await page.click('#draw-toggle'); + for (const lang of ['en']) { + await page.evaluate((lang) => { + document.documentElement.lang = lang; + }, lang); + for (const width of [1440, 620, 390]) { + await page.setViewport({ width, height: 900 }); + const layout = await page.evaluate(() => { + const ids = [ + 'scene-select', + 'cctv-camera-select', + 'hud-layout-select', + 'draw-color-select', + ]; + return ids.map((id) => { + const node = document.getElementById(id), + rect = node.getBoundingClientRect(), + panel = node.closest('.panel-collapsible')?.getBoundingClientRect(); + return { + id, + width: rect.width, + fits: rect.width > 0 && rect.width <= (panel?.width || innerWidth), + radius: getComputedStyle(node).borderRadius, + }; + }); + }); + check( + `${lang} fields fit their panels at ${width}px`, + layout.every((item) => item.fits), + layout, + ); + if (width === 390) + await page.screenshot({ + path: `qa-shots/form-fields/${lang}-${width}.png`, + }); + } + } + await page.evaluate(() => { + document.documentElement.lang = 'en'; + document.documentElement.dataset.uiTheme = 'cyber'; + }); + const cyber = await page.$eval( + '#scene-select', + (node) => getComputedStyle(node).backgroundColor, + ); + check( + 'Cyber keeps its native field theme', + cyber === 'rgba(26, 35, 39, 0.96)', + cyber, + ); + await begin('heading'); + await page.evaluate(() => { + const owner = window.__godsEyeView.styleManager._cctvControls; + window.__qaDetachedInput = document.querySelector('.cctv-cal-input'); + owner.destroy(); + window.__qaDetachedInput.dispatchEvent(new Event('blur')); + }); + check( + 'disposal removes the editor and prevents late commits', + await page.evaluate( + () => + !document.querySelector('.cctv-cal-input') && + window.__qaFormCalls.length === 2, + ), + ); + // Scene selection can restore application settings. Exercise it after the + // fixture-owned CCTV phase so those asynchronous effects cannot replace ports. + page.once('dialog', (dialog) => dialog.accept('Baseline selection fixture')); + await page.click('#scene-new-btn'); + await page.waitForFunction(() => + [...document.querySelectorAll('#scene-select option')].some( + (option) => option.textContent === 'Baseline selection fixture', + ), + ); + page.once('dialog', (dialog) => dialog.accept('QA selection fixture')); + await page.click('#scene-new-btn'); + await page.waitForFunction( + () => document.querySelectorAll('#scene-select option').length > 1, + ); + const targetSceneId = await page.$eval( + '#scene-select', + (node) => + [...node.options].find( + (option) => option.textContent === 'QA selection fixture', + ).value, + ); + const baselineSceneId = await page.$eval( + '#scene-select', + (node) => + [...node.options].find( + (option) => option.textContent === 'Baseline selection fixture', + ).value, + ); + await page.select('#scene-select', baselineSceneId); + await page.waitForFunction( + (id) => window.__godsEyeView.sceneDirector._getSelectedScene().id !== id, + {}, + targetSceneId, + ); + await page.evaluate(() => { + window.__qaFormChanges = []; + }); + await page.focus('#scene-select'); + // Typeahead is native even when headless Chrome does not drive OS popups. + await page.keyboard.press('q'); + const sceneSelection = await page.evaluate(() => ({ + id: document.getElementById('scene-select').value, + selected: window.__godsEyeView.sceneDirector._getSelectedScene().id, + changes: window.__qaFormChanges, + focus: document.activeElement.id, + outline: getComputedStyle(document.activeElement).outlineStyle, + })); + check( + 'native typeahead reaches the Scene owner and keeps focus', + sceneSelection.id === targetSceneId && + sceneSelection.selected === targetSceneId && + sceneSelection.changes.at(-1) === targetSceneId && + sceneSelection.focus === 'scene-select', + sceneSelection, + ); + check('keyboard focus remains visible', sceneSelection.outline === 'solid'); + const localized = new URL(page.url()); + localized.searchParams.set('lang', 'ru'); + await page.goto(localized.href, { waitUntil: 'domcontentloaded' }); + await page.waitForFunction( + () => + window.__godsEyeView?.styleManager?._cctvControls && + document.getElementById('loading-screen')?.classList.contains('hidden'), + { timeout: 60000 }, + ); + await page.evaluate(() => { + for (const panel of ['pp-toggles', 'scene-panel', 'cctv-panel']) + window.__godsEyeView.styleManager.setPanelCollapsed(panel, false, { + persist: false, + syncShare: false, + }); + }); + await page.evaluate(() => { + for (const panel of ['pp-toggles', 'scene-panel', 'cctv-panel']) + window.__godsEyeView.styleManager.setPanelCollapsed(panel, false, { + persist: false, + syncShare: false, + }); + }); + if ( + await page.$eval( + '#draw-toggle', + (node) => node.getAttribute('aria-pressed') !== 'true', + ) + ) + await page.click('#draw-toggle'); + const translated = await page.evaluate(() => { + const nodes = [ + 'scene-select', + 'cctv-camera-select', + 'hud-layout-select', + 'draw-color-select', + ].map((id) => document.getElementById(id)); + return ( + document.documentElement.lang === 'ru' && + nodes.every( + (node) => + node.clientWidth > 0 && + node.getBoundingClientRect().width <= + node.closest('.panel-collapsible').getBoundingClientRect().width, + ) + ); + }); + check('real Russian labels and fields fit at 390px', translated); + await page.screenshot({ path: 'qa-shots/form-fields/ru-390.png' }); + check('no uncaught browser errors', errors.length === 0, errors); +} finally { + await browser.close(); +} +process.exitCode = failures ? 1 : 0; diff --git a/src/ui/cctvCalibration.js b/src/ui/cctvCalibration.js index 8144edd8a..9e51540c5 100644 --- a/src/ui/cctvCalibration.js +++ b/src/ui/cctvCalibration.js @@ -1,4 +1,5 @@ import { formatNumber, t, msg } from '../i18n/index.js'; +import { createNumberInput } from './formField.js'; /** Shortest-wrap signed degrees, for heading offsets typed as absolute values. */ const signedNormalizeDeg = (deg) => ((((deg + 180) % 360) + 360) % 360) - 180; @@ -117,11 +118,12 @@ export function _beginCctvCalValueEdit(chip) { const basePose = { ...activeCamera.basePose }; const editListeners = new AbortController(); const startValue = field.get(activeCamera); - const input = document.createElement('input'); - input.type = 'number'; - input.step = field.decimals > 0 ? '0.1' : '1'; - input.value = Number(startValue).toFixed(field.decimals); - input.className = 'cctv-cal-input'; + const input = createNumberInput({ + className: 'gev-field--inline cctv-cal-input', + step: field.decimals > 0 ? '0.1' : '1', + value: Number(startValue).toFixed(field.decimals), + ariaLabel: t(field.label), + }); chip.textContent = `${t(field.label)} `; chip.appendChild(input); input.focus(); diff --git a/src/ui/cctvControls.test.mjs b/src/ui/cctvControls.test.mjs index 5ab5a3280..6a47ff91f 100644 --- a/src/ui/cctvControls.test.mjs +++ b/src/ui/cctvControls.test.mjs @@ -105,6 +105,9 @@ function calibrationFixture(t) { Object.assign(input, { focus() {}, select() {}, + setAttribute(name, value) { + this[name] = value; + }, remove() { this.parent.input = null; }, diff --git a/src/ui/formField.js b/src/ui/formField.js new file mode 100644 index 000000000..8b2127b4d --- /dev/null +++ b/src/ui/formField.js @@ -0,0 +1,36 @@ +/** + * Build a native numeric field without listeners, parsing or commit policy. + * Owners retain drafts, validation, input/change timing and disposal. Static + * selects and number inputs share the gev-field surface in their templates; + * options remain owned by each feature (no replacement popup or keyboard code). + * @param {object} options + * @param {Document} [options.documentRef] + * @param {string} [options.className] Additional density/layout hooks. + * @param {number|string} [options.min] + * @param {number|string} [options.max] + * @param {number|string} [options.step] + * @param {number|string} [options.value] + * @param {boolean} [options.disabled] + * @param {string} [options.ariaLabel] Already translated accessible name. + * @returns {HTMLInputElement} + */ +export function createNumberInput({ + documentRef = globalThis.document, + className = '', + min, + max, + step, + value, + disabled = false, + ariaLabel, +} = {}) { + const input = documentRef.createElement('input'); + input.type = 'number'; + input.className = `gev-field${className ? ` ${className}` : ''}`; + for (const [key, setting] of Object.entries({ min, max, step, value })) { + if (setting !== undefined) input[key] = setting; + } + input.disabled = disabled; + if (ariaLabel !== undefined) input.setAttribute('aria-label', ariaLabel); + return input; +} diff --git a/src/ui/styles/cctv.css b/src/ui/styles/cctv.css index d6f895681..67f18212b 100644 --- a/src/ui/styles/cctv.css +++ b/src/ui/styles/cctv.css @@ -129,26 +129,6 @@ html:not([lang='en']) .cctv-controls .scene-btn { background: rgba(0, 212, 255, 0.08); } -.cctv-cal-input { - width: 58px; - font-family: var(--font-mono); - font-size: 9px; - letter-spacing: 0.7px; - color: var(--text-primary); - background: rgba(0, 212, 255, 0.1); - border: 1px solid rgba(0, 212, 255, 0.5); - border-radius: 4px; - padding: 1px 3px; - outline: none; - -moz-appearance: textfield; -} - -.cctv-cal-input::-webkit-outer-spin-button, -.cctv-cal-input::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} - .cctv-calibration-actions { margin-top: 8px; } @@ -162,26 +142,9 @@ html:not([lang='en']) .cctv-controls .scene-btn { #cctv-camera-select { flex: 1; min-width: 0; - background: rgba(255, 255, 255, 0.06); - border: 1px solid rgba(255, 255, 255, 0.14); - border-radius: 7px; - color: var(--text-primary); - padding: 6px 8px; - font-family: var(--font-sans); - font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - outline: none; -} - -#cctv-camera-select:focus-visible { - outline: 2px solid var(--text-primary); - outline-offset: -3px; -} - -#cctv-camera-select:disabled { - opacity: 0.45; } #cctv-enable-btn.active, diff --git a/src/ui/styles/controls.css b/src/ui/styles/controls.css index 7fdb51276..f11378bb9 100644 --- a/src/ui/styles/controls.css +++ b/src/ui/styles/controls.css @@ -727,16 +727,6 @@ html:not([lang='en']) .pp-slider-row > .pp-slider-mini-label { .pp-select { flex: 1; min-width: 0; - height: 24px; - background: rgba(255, 255, 255, 0.06); - border: 1px solid rgba(255, 255, 255, 0.14); - border-radius: 6px; - color: var(--text-primary); - font-family: var(--font-mono); - font-size: 10px; - letter-spacing: 0.6px; - padding: 2px 6px; - outline: none; } /* DISPLAY ▸ Draw: shape segment, label field, colour, and the one-line hint */ diff --git a/src/ui/styles/form-field.css b/src/ui/styles/form-field.css new file mode 100644 index 000000000..e0eec99b1 --- /dev/null +++ b/src/ui/styles/form-field.css @@ -0,0 +1,51 @@ +/* Native selects and numeric inputs. Features own options, constraints and + commit timing; density variants do not introduce custom keyboard behavior. */ +.gev-field { + min-width: 0; + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.14); + border-radius: 7px; + color: var(--text-primary); + padding: 6px 8px; + font-family: var(--font-sans); + font-size: 12px; + outline: none; +} + +.gev-field:focus-visible { + outline: 2px solid var(--text-primary); + outline-offset: -3px; +} + +.gev-field:disabled { + opacity: 0.45; +} + +.gev-field--compact { + height: 24px; + border-radius: 6px; + font-family: var(--font-mono); + font-size: 10px; + letter-spacing: 0.6px; + padding: 2px 6px; +} + +/* Effective-pose editors must fit inside CCTV value chips. Retain their + existing spinner-free surface; calibration conversion stays with the owner. */ +.gev-field--inline { + width: 58px; + font-family: var(--font-mono); + font-size: 9px; + letter-spacing: 0.7px; + background: rgba(0, 212, 255, 0.1); + border-color: rgba(0, 212, 255, 0.5); + border-radius: 4px; + padding: 1px 3px; + -moz-appearance: textfield; +} + +.gev-field--inline::-webkit-outer-spin-button, +.gev-field--inline::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} diff --git a/src/ui/styles/scenes.css b/src/ui/styles/scenes.css index 287b8b842..eef6f9ac3 100644 --- a/src/ui/styles/scenes.css +++ b/src/ui/styles/scenes.css @@ -153,14 +153,6 @@ #scene-select { flex: 1; min-width: 0; - background: rgba(255, 255, 255, 0.06); - border: 1px solid rgba(255, 255, 255, 0.14); - border-radius: 7px; - color: var(--text-primary); - padding: 6px 8px; - font-family: var(--font-sans); - font-size: 12px; - outline: none; } /* A translated scene name needs the width: the select takes its own row, diff --git a/src/ui/templates/context.html b/src/ui/templates/context.html index 290726417..9e88d20f4 100644 --- a/src/ui/templates/context.html +++ b/src/ui/templates/context.html @@ -121,7 +121,7 @@
-
@@ -180,7 +180,7 @@
- @@ -221,7 +221,7 @@
- +
diff --git a/src/ui/templates/display-controls.html b/src/ui/templates/display-controls.html index bcd54f572..f31453b6c 100644 --- a/src/ui/templates/display-controls.html +++ b/src/ui/templates/display-controls.html @@ -13,7 +13,7 @@
Layout - @@ -136,7 +136,7 @@
- diff --git a/src/ui/templates/layer-panels.html b/src/ui/templates/layer-panels.html index 78ecfd777..711bd98c6 100644 --- a/src/ui/templates/layer-panels.html +++ b/src/ui/templates/layer-panels.html @@ -35,7 +35,7 @@
- +
@@ -150,7 +150,7 @@
- +
diff --git a/style.css b/style.css index 89d1371ae..b8b2db315 100644 --- a/style.css +++ b/style.css @@ -1,5 +1,6 @@ /* Preserve component and responsive rule order in one stylesheet entry. */ @import './src/ui/styles/foundation.css'; +@import './src/ui/styles/form-field.css'; @import './src/ui/styles/slider.css'; @import './src/ui/styles/controls.css'; @import './src/ui/styles/location.css'; From b6623f65cde10d0d321a22029f62e144b88ae583 Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 17:11:56 +0200 Subject: [PATCH 24/36] docs: add shared native fields changelog entry --- changelog.d/1305-shared-native-form-fields.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog.d/1305-shared-native-form-fields.md diff --git a/changelog.d/1305-shared-native-form-fields.md b/changelog.d/1305-shared-native-form-fields.md new file mode 100644 index 000000000..129d81bcf --- /dev/null +++ b/changelog.d/1305-shared-native-form-fields.md @@ -0,0 +1,3 @@ +- Share native dropdown and numeric-field styling across Scene, CCTV, Display + and Radio controls, with a shared CCTV number-input builder that preserves + existing precision, validation and commit behavior (mazy1998, #1305). From f70bc0cabbc48ad75cb8f49539c8002d7cfb1d02 Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 18:10:09 +0200 Subject: [PATCH 25/36] refactor(ui): share read-only status badges --- docs/CODE-BOUNDARIES.md | 11 ++ docs/CURRENT-STATE.md | 21 +++ scripts/format-scope.json | 6 +- scripts/package-boundaries.json | 12 +- scripts/qa-status-badges.mjs | 276 +++++++++++++++++++++++++++++ src/ui/cctvBadges.test.mjs | 112 ++++++++++++ src/ui/cctvFrames.js | 11 +- src/ui/cctvPresentation.js | 13 +- src/ui/railCards.js | 18 +- src/ui/statusBadge.js | 39 ++++ src/ui/statusBadge.test.mjs | 78 ++++++++ src/ui/styles/cctv.css | 53 ++---- src/ui/styles/status-badge.css | 43 +++++ src/ui/styles/weather.css | 4 - src/ui/templates/layer-panels.html | 4 +- style.css | 1 + 16 files changed, 640 insertions(+), 62 deletions(-) create mode 100644 scripts/qa-status-badges.mjs create mode 100644 src/ui/cctvBadges.test.mjs create mode 100644 src/ui/statusBadge.js create mode 100644 src/ui/statusBadge.test.mjs create mode 100644 src/ui/styles/status-badge.css diff --git a/docs/CODE-BOUNDARIES.md b/docs/CODE-BOUNDARIES.md index 6b1c88ea8..8ca26d9f2 100644 --- a/docs/CODE-BOUNDARIES.md +++ b/docs/CODE-BOUNDARIES.md @@ -748,3 +748,14 @@ option identity/order, bounds, parsing, draft values, input/change timing and teardown. CCTV effective-pose conversion and tuner/device operations remain feature responsibilities. A Vue replacement can reuse this contract and CSS; it replaces DOM construction, rather than adding a second state owner. + +### Read-only status badges + +`src/ui/statusBadge.js` constructs/updates ordinary badges without listeners, +status inference or live-region policy. It consumes translated text and controlled +visibility; appearance variants share CSS rather than mapping machine states to +universal severity. CCTV owns frame/source and calibration rules and their data +attributes, while Weather owns coverage labels. The keyed rail-card owner keeps +node identity, header focus, disclosure and teardown. The shared adapter never +creates another state store or announces all card updates. A Vue view can replace +this adapter and retain these presentation inputs and styles. diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index c75aa1d3a..7f0dd1476 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -1233,6 +1233,27 @@ Feature owners retain bounds, steps, formatted values, input/change timing and listener cleanup. The radio tuning dial, imagery comparison divider and event comparison/progression controls keep their specialized presentation and behavior. +## Ordinary status badges + +CCTV source/frame labels, calibration provenance and Weather coverage labels use +`ui/statusBadge.js` and the `gev-status-badge` CSS surface. The listener-free +adapter accepts already-translated `label` and `hidden` values; pill, box and plain +appearances describe shape/density only. Static CCTV markup uses the same classes +as generated rail-card badges. Repeated identical updates do not rewrite text or +replace nodes. Empty coverage remains hidden. + +Feature owners retain the status rules, machine-state attributes, translations +and announcement policy. CCTV frame acquisition (`idle/loading/error/ready`) +remains separate from provider status: retained pixels do not imply a healthy +feed. Calibration still distinguishes manually saved, catalog-curated and raw +prior poses; unsaved edits override the label until save/reset. Coverage labels +remain geographic scope, not health claims. Existing colors and the source +badge's polite live region are preserved; coverage and calibration do not gain +live regions. Interactive layer toggles, progress indicators and world overlays +retain their specialized ownership. Vue can reuse the view contract and CSS while +replacing DOM construction. Browser acceptance: +`QA_BASE_URL=http://127.0.0.1:4189 node scripts/qa-status-badges.mjs`. + ## Ordinary action buttons Scene panel actions, shot LOAD/DEL actions, the EDIT DETAILS / SHARE SCENE diff --git a/scripts/format-scope.json b/scripts/format-scope.json index 34219f856..135954a84 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -1073,5 +1073,9 @@ "src/data/gbfsProxyRateLimit.test.mjs", "src/terrainHeightsBounds.test.mjs", "server/providers/overpass/requestAdmission.test.mjs", - "src/tooling/trackArrivalObservation.test.mjs" + "src/tooling/trackArrivalObservation.test.mjs", + "src/ui/styles/status-badge.css", + "src/ui/statusBadge.test.mjs", + "src/ui/cctvBadges.test.mjs", + "scripts/qa-status-badges.mjs" ] diff --git a/scripts/package-boundaries.json b/scripts/package-boundaries.json index 39ccf99b5..acdeff01e 100644 --- a/scripts/package-boundaries.json +++ b/scripts/package-boundaries.json @@ -500,7 +500,8 @@ "src/i18n/locales/ru.json", "src/ui/unitLabels.js", "src/ui/keyGuidance.js", - "src/ui/statusText.js" + "src/ui/statusText.js", + "src/ui/statusBadge.js" ], "external": [] }, @@ -550,7 +551,8 @@ "src/i18n/locale.js", "src/i18n/locales/es.json", "src/i18n/locales/ru.json", - "src/ui/unitLabels.js" + "src/ui/unitLabels.js", + "src/ui/statusBadge.js" ], "external": [] }, @@ -777,7 +779,8 @@ "src/ui/unitLabels.js", "src/ui/keyGuidance.js", "src/ui/layerNames.js", - "src/ui/statusText.js" + "src/ui/statusText.js", + "src/ui/statusBadge.js" ], "external": ["cesium"] }, @@ -2515,7 +2518,8 @@ "src/voice/providerCapabilities.js", "src/voice/geminiSession.js", "src/voice/geminiAudio.js", - "src/voice/geminiCaptureWorklet.js" + "src/voice/geminiCaptureWorklet.js", + "src/ui/statusBadge.js" ], "external": [ "hls.js", diff --git a/scripts/qa-status-badges.mjs b/scripts/qa-status-badges.mjs new file mode 100644 index 000000000..961fdba7f --- /dev/null +++ b/scripts/qa-status-badges.mjs @@ -0,0 +1,276 @@ +#!/usr/bin/env node +/** Badge acceptance on dev/preview. Camera state is a disposable controller fixture. */ +import fs from 'node:fs'; +import puppeteer from 'puppeteer'; + +const browser = await puppeteer.launch({ + headless: true, + args: ['--use-gl=angle', '--use-angle=swiftshader'], +}); +const page = await browser.newPage(); +page.setDefaultNavigationTimeout(60000); +const errors = []; +page.on('pageerror', (error) => errors.push(error.message)); +let checks = 0; +let failures = 0; +const check = (name, passed, detail) => { + checks++; + console.log(`[${passed ? 'PASS' : 'FAIL'}] ${name}`); + if (!passed) { + failures++; + console.log(JSON.stringify(detail)); + } +}; +const out = 'qa-shots/status-badges'; +fs.mkdirSync(out, { recursive: true }); +try { + for (const lang of ['en', 'ru']) { + await page.setViewport({ width: 1440, height: 900 }); + await page.goto( + `${process.env.QA_BASE_URL || 'http://127.0.0.1:4189'}/?welcome=0&lang=${lang}`, + { waitUntil: 'domcontentloaded' }, + ); + await page.waitForFunction( + () => + window.__godsEyeView?.styleManager?._cctvControls && + document.getElementById('loading-screen')?.classList.contains('hidden'), + { timeout: 60000 }, + ); + await page.evaluate(async () => { + const { dataManager, styleManager: manager } = window.__godsEyeView; + await dataManager.setEnabled('wind', true); + manager.setPanelCollapsed('weather-panel', false, { + persist: false, + syncShare: false, + }); + manager.setPanelCollapsed('cctv-panel', false, { + persist: false, + syncShare: false, + }); + const owner = manager._cctvControls; + owner._cctvUnsubscribe?.(); + owner._cctvUnsubscribe = null; + owner.actions = { ...owner.actions, isEnabled: () => true }; + owner._renderCctvState({ + enabled: true, + activeCameraId: 'badge-fixture', + cameras: [{ id: 'badge-fixture', city: 'QA', name: 'Badge fixture' }], + activeCamera: { + id: 'badge-fixture', + city: 'QA', + headingDeg: 30, + pitchDeg: -10, + fovDeg: 45, + rangeM: 120, + mountHeightM: 8, + sourceKind: 'snapshot', + sourceStatus: 'degraded', + calBadge: 'curated', + calDirty: false, + }, + }); + window.__qaBadgeText = + document.getElementById('cctv-source-badge').textContent; + }); + await page.waitForSelector('.weather-coverage.gev-status-badge'); + const inventory = await page.evaluate(() => { + const source = document.getElementById('cctv-source-badge'); + const quality = document.getElementById('cctv-quality-chip'); + const coverage = [...document.querySelectorAll('.weather-coverage')]; + return { + shared: [source, quality, ...coverage].every((node) => + node.classList.contains('gev-status-badge'), + ), + live: + source.getAttribute('role') === 'status' && + source.getAttribute('aria-live') === 'polite', + silent: [quality, ...coverage].every( + (node) => + !node.hasAttribute('aria-live') && + !node.hasAttribute('role') && + !node.hasAttribute('tabindex'), + ), + coverage: + coverage.length > 0 && + coverage.every( + (node) => + node.textContent && + !node.hidden && + node.classList.contains('gev-status-badge--plain'), + ), + source: source.textContent, + }; + }); + check( + `${lang}: CCTV and populated Weather badges share the view`, + inventory.shared && inventory.coverage, + inventory, + ); + check( + `${lang}: existing announcement and read-only semantics remain intact`, + inventory.live && inventory.silent, + inventory, + ); + check( + `${lang}: source wording uses the active locale`, + lang === 'en' + ? inventory.source === 'SNAPSHOT · DEGRADED' + : inventory.source !== 'SNAPSHOT · DEGRADED', + inventory, + ); + + for (const state of ['loading', 'error', 'retained', 'ready', 'idle']) { + const result = await page.evaluate((state) => { + const owner = window.__godsEyeView.styleManager._cctvControls; + owner._cctvFrame.dataset.loading = state === 'loading' ? 'true' : ''; + owner._cctvFrame.dataset.error = ['error', 'retained'].includes(state) + ? 'true' + : ''; + owner._cctvFrameWrap.classList.toggle( + 'has-frame', + state === 'retained', + ); + owner._syncCctvSourceBadge( + owner._cctvState.activeCamera, + state !== 'idle', + ); + const badge = document.getElementById('cctv-source-badge'); + return { + state: badge.dataset.frameState, + text: badge.textContent, + color: getComputedStyle(badge).color, + }; + }, state); + const expected = { + loading: ['loading', 'rgb(255, 229, 155)'], + error: ['error', 'rgb(255, 176, 176)'], + retained: ['ready', 'rgb(157, 239, 255)'], + ready: ['ready', 'rgb(157, 239, 255)'], + idle: ['idle', 'rgb(157, 239, 255)'], + }[state]; + check( + `${lang}: ${state} keeps its frame state and palette`, + result.state === expected[0] && + result.color === expected[1] && + (!['ready', 'retained'].includes(state) || + result.text === inventory.source), + result, + ); + } + for (const [calBadge, dirty, color] of [ + ['raw-prior', false, 'rgb(143, 231, 255)'], + ['curated', false, 'rgb(255, 230, 162)'], + ['calibrated', false, 'rgb(173, 255, 191)'], + ['curated', true, 'rgb(255, 208, 138)'], + ]) { + const result = await page.evaluate( + ({ calBadge, dirty }) => { + const owner = window.__godsEyeView.styleManager._cctvControls; + document.getElementById('cctv-next-btn').focus(); + owner._renderCctvState({ + ...owner._cctvState, + activeCamera: { + ...owner._cctvState.activeCamera, + calBadge, + calDirty: dirty, + }, + }); + const badge = document.getElementById('cctv-quality-chip'); + return { + state: badge.dataset.calBadge, + color: getComputedStyle(badge).color, + focus: document.activeElement.id, + }; + }, + { calBadge, dirty }, + ); + check( + `${lang}: ${dirty ? 'edited' : calBadge} keeps provenance color and control focus`, + result.state === (dirty ? 'edited' : calBadge) && + result.color === color && + result.focus === 'cctv-next-btn', + result, + ); + } + for (const theme of ['tactical', 'cyber']) { + await page.evaluate( + (theme) => window.__godsEyeView.styleManager._setHudVariant(theme), + theme, + ); + for (const width of [1440, 620, 390]) { + await page.setViewport({ width, height: 900 }); + for (const panelId of ['cctv-panel', 'weather-panel']) { + await page.evaluate(async (panelId) => { + const manager = window.__godsEyeView.styleManager; + for (const other of ['cctv-panel', 'weather-panel']) { + if (other !== panelId) + manager.setPanelCollapsed(other, true, { + persist: false, + syncShare: false, + }); + } + manager.setPanelCollapsed(panelId, false, { + persist: false, + syncShare: false, + }); + await new Promise((resolve) => + requestAnimationFrame(() => requestAnimationFrame(resolve)), + ); + }, panelId); + const layout = await page.evaluate((panelId) => { + const selector = + panelId === 'cctv-panel' + ? '#cctv-source-badge, #cctv-quality-chip' + : '.weather-coverage'; + return [...document.querySelectorAll(selector)].map((node) => { + const rect = node.getBoundingClientRect(); + const panel = node.closest(`#${panelId}`).getBoundingClientRect(); + return { + id: node.id || 'weather-coverage', + text: node.textContent, + width: rect.width, + height: rect.height, + scroll: node.scrollWidth, + client: node.clientWidth, + left: rect.left, + right: rect.right, + panelLeft: panel.left, + panelRight: panel.right, + fits: + rect.width > 0 && + rect.height > 0 && + rect.left >= panel.left - 1 && + rect.right <= panel.right + 1 && + node.scrollWidth <= node.clientWidth + 1, + }; + }); + }, panelId); + check( + `${lang}/${theme}: ${panelId} badges fit at ${width}px`, + layout.length >= (panelId === 'cctv-panel' ? 2 : 1) && + layout.every((node) => node.fits), + layout, + ); + if (width === 390) + await page.screenshot({ + path: `${out}/${lang}-${theme}-${panelId}-${width}.png`, + }); + } + } + } + const disposed = await page.evaluate(() => { + const owner = window.__godsEyeView.styleManager._cctvControls; + const badge = document.getElementById('cctv-quality-chip'); + const text = badge.textContent; + owner.destroy(); + owner._renderCctvState(null); + return badge.textContent === text; + }); + check(`${lang}: disposal prevents late state painting`, disposed); + } + check('no uncaught browser errors', errors.length === 0, errors); +} finally { + await browser.close(); +} +console.log(`${checks} checks; ${failures} failures`); +process.exitCode = failures ? 1 : 0; diff --git a/src/ui/cctvBadges.test.mjs b/src/ui/cctvBadges.test.mjs new file mode 100644 index 000000000..1703d5d54 --- /dev/null +++ b/src/ui/cctvBadges.test.mjs @@ -0,0 +1,112 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { CctvControls } from './cctvControls.js'; +import { railFixture } from './railTestFixture.mjs'; +import { setLocale, t } from '../i18n/index.js'; + +function fixture(t) { + const { document } = railFixture(); + const controls = new CctvControls({ + elements: { + _cctvQualityChip: document.createElement('span'), + _cctvSourceBadge: document.createElement('div'), + }, + cctv: {}, + actions: { isEnabled: () => true, setPanelCollapsed() {} }, + }); + t.after(() => controls.destroy()); + return { controls, document }; +} + +test('source and frame states retain their distinct meanings, including retained pixels', (testContext) => { + const { controls, document } = fixture(testContext); + const camera = { sourceKind: 'snapshot', sourceStatus: 'degraded' }; + controls._cctvFrame = document.createElement('img'); + controls._cctvFrameWrap = document.createElement('div'); + controls._cctvFrame.removeAttribute = () => {}; + for (const node of [controls._cctvFrame, controls._cctvFrameWrap]) { + node.classList.remove = (...names) => + names.forEach((name) => node.classList.toggle(name, false)); + } + const expect = (label, state, active = camera, enabled = true) => { + controls._syncCctvSourceBadge(active, enabled); + assert.equal(controls._cctvSourceBadge.textContent, label); + assert.equal(controls._cctvSourceBadge.dataset.frameState, state); + }; + expect('SOURCE · UNKNOWN', 'idle', camera, false); + expect('SOURCE · UNKNOWN', 'idle', null); + controls._cctvFrame.dataset.loading = 'true'; + expect('FRAME · LOADING', 'loading'); + controls._cctvFrame.dataset.loading = ''; + controls._cctvFrame.dataset.error = 'true'; + expect('FRAME · UNAVAILABLE', 'error'); + // A refresh failure keeps the settled pixels and the provider's source status. + controls._cctvFrameWrap.classList.toggle('has-frame', true); + expect('SNAPSHOT · DEGRADED', 'ready'); + controls._cctvFrame.dataset.loading = 'true'; + expect('SNAPSHOT · DEGRADED', 'ready'); + controls._cctvFrame.dataset.loading = ''; + controls._cctvFrame.dataset.error = ''; + for (const status of ['ok', 'error', 'unknown', 'vendor-specific']) { + expect(`SNAPSHOT · ${status.toUpperCase()}`, 'ready', { + ...camera, + sourceStatus: status, + }); + } + expect('LIVE · OK', 'ready', { feedType: 'live', sourceStatus: 'ok' }); +}); + +test('calibration labels follow supplied provenance and dirty/save/reset transitions without writes to the camera', (testContext) => { + const { controls } = fixture(testContext); + const cases = [ + ['raw-prior', false, 'CAL · RAW PRIOR'], + ['curated', false, 'CAL · CURATED'], + ['curated', true, 'CAL · EDITED (UNSAVED)'], + ['calibrated', false, 'CAL · CALIBRATED'], + ['calibrated', true, 'CAL · EDITED (UNSAVED)'], + ['raw-prior', false, 'CAL · RAW PRIOR'], + [null, false, 'CAL · --'], + ]; + for (const [calBadge, calDirty, label] of cases) { + const activeCamera = Object.freeze({ id: 'a', calBadge, calDirty }); + controls._renderCctvState({ + enabled: true, + activeCameraId: 'a', + activeCamera, + }); + assert.equal(controls._cctvQualityChip.textContent, label); + assert.equal( + controls._cctvQualityChip.dataset.calBadge, + calDirty ? 'edited' : calBadge || '', + ); + } + controls._renderCctvState(null); + assert.equal(controls._cctvQualityChip.textContent, 'CAL · --'); + assert.equal(controls._cctvQualityChip.dataset.calBadge, ''); +}); + +test('localization changes badge copy while preserving machine state ids', (testContext) => { + const { controls } = fixture(testContext); + testContext.after(() => setLocale('en')); + setLocale('ru'); + controls._syncCctvSourceBadge( + { sourceKind: 'snapshot', sourceStatus: 'degraded' }, + true, + ); + assert.equal( + controls._cctvSourceBadge.textContent, + `${t('SNAPSHOT')} · ${t('DEGRADED')}`, + ); + assert.notEqual(controls._cctvSourceBadge.textContent, 'SNAPSHOT · DEGRADED'); + assert.equal(controls._cctvSourceBadge.dataset.frameState, 'ready'); + controls._renderCctvState({ + enabled: true, + activeCameraId: 'a', + activeCamera: { id: 'a', calBadge: 'curated', calDirty: true }, + }); + assert.equal( + controls._cctvQualityChip.textContent, + t('CAL · EDITED (UNSAVED)'), + ); + assert.equal(controls._cctvQualityChip.dataset.calBadge, 'edited'); +}); diff --git a/src/ui/cctvFrames.js b/src/ui/cctvFrames.js index 7976d46c8..ee324e0ad 100644 --- a/src/ui/cctvFrames.js +++ b/src/ui/cctvFrames.js @@ -1,3 +1,4 @@ +import { updateStatusBadge } from './statusBadge.js'; import { msg, t } from '../i18n/index.js'; /** @@ -164,19 +165,21 @@ export function _settleCctvFrame(token, src, ok) { export function _syncCctvSourceBadge(activeCamera, enabled) { if (!this._cctvSourceBadge) return; if (!enabled || !activeCamera) { - this._cctvSourceBadge.textContent = t('SOURCE · UNKNOWN'); + updateStatusBadge(this._cctvSourceBadge, { label: t('SOURCE · UNKNOWN') }); this._cctvSourceBadge.dataset.frameState = 'idle'; return; } const hasDisplayedFrame = this._cctvFrameWrap?.classList.contains('has-frame'); if (this._cctvFrame?.dataset.loading === 'true' && !hasDisplayedFrame) { - this._cctvSourceBadge.textContent = t('FRAME · LOADING'); + updateStatusBadge(this._cctvSourceBadge, { label: t('FRAME · LOADING') }); this._cctvSourceBadge.dataset.frameState = 'loading'; return; } if (this._cctvFrame?.dataset.error === 'true' && !hasDisplayedFrame) { - this._cctvSourceBadge.textContent = t('FRAME · UNAVAILABLE'); + updateStatusBadge(this._cctvSourceBadge, { + label: t('FRAME · UNAVAILABLE'), + }); this._cctvSourceBadge.dataset.frameState = 'error'; return; } @@ -184,6 +187,6 @@ export function _syncCctvSourceBadge(activeCamera, enabled) { activeCamera.sourceKind || activeCamera.feedType || 'unknown', ); const status = cctvSourceStatusLabel(activeCamera.sourceStatus || 'unknown'); - this._cctvSourceBadge.textContent = `${kind} · ${status}`; + updateStatusBadge(this._cctvSourceBadge, { label: `${kind} · ${status}` }); this._cctvSourceBadge.dataset.frameState = 'ready'; } diff --git a/src/ui/cctvPresentation.js b/src/ui/cctvPresentation.js index 3e738e109..070c47f64 100644 --- a/src/ui/cctvPresentation.js +++ b/src/ui/cctvPresentation.js @@ -1,3 +1,4 @@ +import { updateStatusBadge } from './statusBadge.js'; import { t, tn } from '../i18n/index.js'; import { cctvSourceLabelText, cctvSourceMessageText } from './cctvFrames.js'; @@ -137,11 +138,13 @@ export function _renderCctvState(state) { // promotes to CALIBRATED, RESET CAL clears. const badge = activeCamera?.calBadge || null; const dirty = !!activeCamera?.calDirty; - this._cctvQualityChip.textContent = dirty - ? t('CAL · EDITED (UNSAVED)') - : t('CAL · {badge}', { - badge: this._calBadgeLabel(badge), - }); + updateStatusBadge(this._cctvQualityChip, { + label: dirty + ? t('CAL · EDITED (UNSAVED)') + : t('CAL · {badge}', { + badge: this._calBadgeLabel(badge), + }), + }); this._cctvQualityChip.dataset.calBadge = dirty ? 'edited' : badge || ''; } diff --git a/src/ui/railCards.js b/src/ui/railCards.js index 17f04436f..7317693be 100644 --- a/src/ui/railCards.js +++ b/src/ui/railCards.js @@ -1,4 +1,5 @@ import { createRailCardBlocks } from './railCardBlocks.js'; +import { createStatusBadge, updateStatusBadge } from './statusBadge.js'; const set = (node, key, value) => { if (node[key] !== value) node[key] = value; @@ -53,11 +54,12 @@ export function createRailCards({ 'rail-card-title rail-card-nowrap', heading, ); - const badge = make( - 'span', - `rail-card-badge${badgeClassName ? ` ${badgeClassName}` : ''}`, - labels, - ); + const badge = createStatusBadge({ + documentRef: document, + appearance: 'plain', + className: `rail-card-badge${badgeClassName ? ` ${badgeClassName}` : ''}`, + }); + labels.appendChild(badge); const disclosure = make('span', 'rail-card-disclosure', header); disclosure.setAttribute('aria-hidden', 'true'); const compact = make('span', 'rail-card-compact', header); @@ -90,8 +92,10 @@ export function createRailCards({ row.title.setAttribute('title', card.title); set(row.icon, 'textContent', card.icon || ''); set(row.icon, 'hidden', !card.icon); - set(row.badge, 'textContent', card.badge || ''); - set(row.badge, 'hidden', !card.badge); + updateStatusBadge(row.badge, { + label: card.badge || '', + hidden: !card.badge, + }); const open = card.open !== false; set(row.element.dataset, 'open', String(open)); row.element.classList.toggle('is-open', open); diff --git a/src/ui/statusBadge.js b/src/ui/statusBadge.js new file mode 100644 index 000000000..ec7f3019a --- /dev/null +++ b/src/ui/statusBadge.js @@ -0,0 +1,39 @@ +/** + * Ordinary read-only badge view. Labels are already translated. Feature owners + * retain status derivation, machine-state attributes and announcement policy. + * No listeners, timers, state inference or automatic live regions are installed. + * Vue can replace this DOM adapter while retaining the label/hidden contract + * and the gev-status-badge CSS surface. + * @param {object} options + * @param {Document} [options.documentRef] + * @param {string} [options.label] + * @param {'pill'|'box'|'plain'} [options.appearance] + * @param {string} [options.className] Feature/layout hooks. + * @param {boolean} [options.hidden] + * @returns {HTMLSpanElement} + */ +export function createStatusBadge({ + documentRef = globalThis.document, + label = '', + appearance = 'pill', + className = '', + hidden = false, +} = {}) { + const badge = documentRef.createElement('span'); + badge.className = [ + 'gev-status-badge', + appearance === 'box' && 'gev-status-badge--box', + appearance === 'plain' && 'gev-status-badge--plain', + className, + ] + .filter(Boolean) + .join(' '); + updateStatusBadge(badge, { label, hidden }); + return badge; +} + +/** Paint controlled text/visibility without replacing nodes or redundant writes. */ +export function updateStatusBadge(badge, { label, hidden = false }) { + if (badge.textContent !== label) badge.textContent = label; + if (badge.hidden !== hidden) badge.hidden = hidden; +} diff --git a/src/ui/statusBadge.test.mjs b/src/ui/statusBadge.test.mjs new file mode 100644 index 000000000..2e576af69 --- /dev/null +++ b/src/ui/statusBadge.test.mjs @@ -0,0 +1,78 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { createStatusBadge, updateStatusBadge } from './statusBadge.js'; +import { createRailCards } from './railCards.js'; +import { railFixture } from './railTestFixture.mjs'; + +test('badges paint literal translated text without installing announcement or interaction semantics', () => { + const { document } = railFixture(); + for (const appearance of ['pill', 'box', 'plain']) { + const badge = createStatusBadge({ + documentRef: document, + appearance, + className: 'feature-hook', + label: ' · НЕИЗВЕСТНО', + }); + assert.equal(badge.tagName, 'SPAN'); + assert.equal( + badge.textContent, + ' · НЕИЗВЕСТНО', + ); + assert.equal(badge.children.length, 0); + assert.equal(badge.classList.contains('gev-status-badge'), true); + assert.equal(badge.classList.contains('feature-hook'), true); + assert.equal(badge.getAttribute('role'), null); + assert.equal(badge.getAttribute('aria-live'), null); + assert.equal(badge.getAttribute('tabindex'), null); + assert.equal( + badge.classList.contains(`gev-status-badge--${appearance}`), + appearance !== 'pill', + ); + } +}); + +test('painting preserves feature state, live regions and focus with zero identical writes', () => { + let writes = 0; + const { document } = railFixture(() => writes++); + const badge = createStatusBadge({ documentRef: document, hidden: true }); + badge.setAttribute('role', 'status'); + badge.setAttribute('aria-live', 'polite'); + badge.dataset.frameState = 'ready'; + const focusOwner = document.createElement('button'); + focusOwner.focus(); + updateStatusBadge(badge, { label: 'SNAPSHOT · DEGRADED' }); + assert.equal(badge.hidden, false); + writes = 0; + updateStatusBadge(badge, { label: 'SNAPSHOT · DEGRADED' }); + assert.equal(writes, 0); + assert.equal(badge.getAttribute('role'), 'status'); + assert.equal(badge.getAttribute('aria-live'), 'polite'); + assert.equal(badge.dataset.frameState, 'ready'); + assert.equal(document.activeElement, focusOwner); +}); + +test('coverage badges keep keyed identity, hide empty coverage and never claim feed health', () => { + const f = railFixture(); + const view = createRailCards({ ...f, badgeClassName: 'weather-coverage' }); + const card = { id: 'radar', title: 'Rain radar', badge: 'CONUS', blocks: [] }; + view.update([card]); + const badge = f.find((node) => node.classList.contains('gev-status-badge')); + const header = f.container.children[0].children[0]; + header.focus(); + assert.equal(badge.classList.contains('gev-status-badge--plain'), true); + assert.equal(badge.classList.contains('weather-coverage'), true); + view.update([{ ...card, badge: '' }]); + assert.equal(badge.hidden, true); + view.update([{ ...card, badge: 'Global · 1° grid' }]); + assert.equal(badge.hidden, false); + assert.equal(badge.textContent, 'Global · 1° grid'); + assert.equal( + f.find((node) => node.classList.contains('gev-status-badge')), + badge, + ); + assert.deepEqual({ ...badge.dataset }, {}); + assert.equal(f.document.activeElement, header); + view.destroy(); + view.update([card]); + assert.equal(f.container.children.length, 0); +}); diff --git a/src/ui/styles/cctv.css b/src/ui/styles/cctv.css index 67f18212b..12c369a9e 100644 --- a/src/ui/styles/cctv.css +++ b/src/ui/styles/cctv.css @@ -157,41 +157,32 @@ html:not([lang='en']) .cctv-controls .scene-btn { } #cctv-quality-chip { - display: inline-flex; - align-items: center; - justify-content: center; min-width: 90px; - padding: 6px 8px; - border: 1px solid rgba(0, 212, 255, 0.2); - border-radius: 8px; - font-family: var(--font-mono); - font-size: 9px; - letter-spacing: 1px; - color: #8fe7ff; - background: rgba(0, 212, 255, 0.08); - text-transform: uppercase; + --status-badge-border: rgba(0, 212, 255, 0.2); + --status-badge-color: #8fe7ff; + --status-badge-background: rgba(0, 212, 255, 0.08); } /* CAL badge states (cctv-v2 §3b, amended by LOCKED §9.2 — panel-only, no in-world tint). Three visually distinct states: calibrated / curated / raw-prior. */ #cctv-quality-chip[data-cal-badge='calibrated'] { - color: #adffbf; - border-color: rgba(141, 255, 135, 0.42); - background: rgba(141, 255, 135, 0.12); + --status-badge-color: #adffbf; + --status-badge-border: rgba(141, 255, 135, 0.42); + --status-badge-background: rgba(141, 255, 135, 0.12); } #cctv-quality-chip[data-cal-badge='curated'] { - color: #ffe6a2; - border-color: rgba(255, 217, 122, 0.35); - background: rgba(255, 217, 122, 0.1); + --status-badge-color: #ffe6a2; + --status-badge-border: rgba(255, 217, 122, 0.35); + --status-badge-background: rgba(255, 217, 122, 0.1); } /* Unsaved live edits (save-gated persistence, viewshed design §3e). */ #cctv-quality-chip[data-cal-badge='edited'] { - color: #ffd08a; - border-color: rgba(255, 176, 82, 0.5); - background: rgba(255, 176, 82, 0.14); + --status-badge-color: #ffd08a; + --status-badge-border: rgba(255, 176, 82, 0.5); + --status-badge-background: rgba(255, 176, 82, 0.14); } .cctv-frame-wrap { @@ -309,26 +300,18 @@ html:not([lang='en']) .cctv-controls .scene-btn { #cctv-source-badge { align-self: flex-start; - border: 1px solid rgba(0, 212, 255, 0.32); - border-radius: 999px; - background: rgba(0, 212, 255, 0.09); - color: #9defff; - font-family: var(--font-mono); - font-size: 8px; - letter-spacing: 1.3px; - padding: 4px 8px; } #cctv-source-badge[data-frame-state='loading'] { - color: #ffe59b; - border-color: rgba(255, 205, 92, 0.45); - background: rgba(255, 205, 92, 0.1); + --status-badge-color: #ffe59b; + --status-badge-border: rgba(255, 205, 92, 0.45); + --status-badge-background: rgba(255, 205, 92, 0.1); } #cctv-source-badge[data-frame-state='error'] { - color: #ffb0b0; - border-color: rgba(255, 102, 102, 0.5); - background: rgba(255, 72, 72, 0.11); + --status-badge-color: #ffb0b0; + --status-badge-border: rgba(255, 102, 102, 0.5); + --status-badge-background: rgba(255, 72, 72, 0.11); } .cctv-summary-label { diff --git a/src/ui/styles/status-badge.css b/src/ui/styles/status-badge.css new file mode 100644 index 000000000..87459b013 --- /dev/null +++ b/src/ui/styles/status-badge.css @@ -0,0 +1,43 @@ +/* Read-only badges. Feature CSS supplies meaning through explicit colors; + appearance variants change density/shape without interpreting status codes. */ +.gev-status-badge { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 0; + max-width: 100%; + box-sizing: border-box; + padding: 4px 8px; + border: 1px solid var(--status-badge-border, rgba(0, 212, 255, 0.32)); + border-radius: 999px; + background: var(--status-badge-background, rgba(0, 212, 255, 0.09)); + color: var(--status-badge-color, #9defff); + font-family: var(--font-mono); + font-size: 8px; + letter-spacing: 1.3px; + overflow-wrap: anywhere; +} + +.gev-status-badge--box { + padding: 6px 8px; + border-radius: 8px; + font-size: 9px; + letter-spacing: 1px; + text-transform: uppercase; +} + +.gev-status-badge--plain { + padding: 0; + border: 0; + border-radius: 0; + background: none; + color: var(--status-badge-color, var(--text-dim)); + font-size: 9px; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +/* Explicitly beat the component display rule, including in older browsers. */ +.gev-status-badge[hidden] { + display: none; +} diff --git a/src/ui/styles/weather.css b/src/ui/styles/weather.css index a47fa87b1..f7cd999d3 100644 --- a/src/ui/styles/weather.css +++ b/src/ui/styles/weather.css @@ -133,7 +133,6 @@ margin-left: auto; text-align: right; } -.rail-card-badge, .rail-card-line, .rail-timeline-readout { font-family: var(--font-mono); @@ -304,9 +303,6 @@ html:not([lang='en']) .rail-card-zero::after { outline: 1px solid var(--accent); outline-offset: 3px; } -.rail-card-badge { - text-transform: uppercase; -} .rail-card-compact { grid-column: 1 / -1; min-width: 0; diff --git a/src/ui/templates/layer-panels.html b/src/ui/templates/layer-panels.html index a6dae6650..9d8d15a97 100644 --- a/src/ui/templates/layer-panels.html +++ b/src/ui/templates/layer-panels.html @@ -27,7 +27,7 @@ CCTV feed frame
-
SOURCE · UNKNOWN
+
SOURCE · UNKNOWN
Enable CCTV to load camera intersections
@@ -45,7 +45,7 @@
- CAL · -- + CAL · --
diff --git a/style.css b/style.css index e59db8df3..7f041cabe 100644 --- a/style.css +++ b/style.css @@ -2,6 +2,7 @@ @import './src/ui/styles/foundation.css'; @import './src/ui/styles/action-button.css'; @import './src/ui/styles/form-field.css'; +@import './src/ui/styles/status-badge.css'; @import './src/ui/styles/slider.css'; @import './src/ui/styles/controls.css'; @import './src/ui/styles/location.css'; From 83471ea6d78db8fb2cbf4f653b4f74a8df052aaa Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 18:10:46 +0200 Subject: [PATCH 26/36] docs: add release note for shared status badges --- changelog.d/1306-shared-status-badges.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changelog.d/1306-shared-status-badges.md diff --git a/changelog.d/1306-shared-status-badges.md b/changelog.d/1306-shared-status-badges.md new file mode 100644 index 000000000..007a028d1 --- /dev/null +++ b/changelog.d/1306-shared-status-badges.md @@ -0,0 +1,4 @@ +- Share read-only status badge presentation across CCTV source/frame labels, + calibration provenance and Weather coverage, preserving status meanings, + palettes, translations and announcements while preparing the view contract + for a future Vue migration (mazy1998, #1306). From 7103c291946bfdb53c5abfc0071cd2e55e240cab Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 18:41:17 +0200 Subject: [PATCH 27/36] refactor(ui): clarify shared field CSS ownership --- docs/CODE-BOUNDARIES.md | 8 ++++++++ docs/CURRENT-STATE.md | 11 +++++++++++ src/ui/styles/cctv.css | 4 ++++ src/ui/styles/cyber.css | 11 ++++++++++- src/ui/styles/form-field.css | 21 ++++++++++----------- src/ui/styles/radio.css | 16 ++++++++++------ 6 files changed, 53 insertions(+), 18 deletions(-) diff --git a/docs/CODE-BOUNDARIES.md b/docs/CODE-BOUNDARIES.md index 8ca26d9f2..a23ba3e0f 100644 --- a/docs/CODE-BOUNDARIES.md +++ b/docs/CODE-BOUNDARIES.md @@ -749,6 +749,14 @@ teardown. CCTV effective-pose conversion and tuner/device operations remain feature responsibilities. A Vue replacement can reuse this contract and CSS; it replaces DOM construction, rather than adding a second state owner. +The shared stylesheet owns field surfaces and disabled opacity; feature and theme +palettes use `--gev-field-background`, `--gev-field-border-color`, +`--gev-field-color` and `--gev-field-disabled-opacity`. Radio retains its own +compact density and arrow space. CCTV owns calibration editor width in +`cctv.css`; the shared inline density does not impose a feature-specific width. +Cyber supplies a shared-field palette explicitly and keeps its legacy native +field rules separate, so Radio's palette remains an intentional exception. + ### Read-only status badges `src/ui/statusBadge.js` constructs/updates ordinary badges without listeners, diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 7f0dd1476..922c285b6 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -1233,6 +1233,17 @@ Feature owners retain bounds, steps, formatted values, input/change timing and listener cleanup. The radio tuning dial, imagery comparison divider and event comparison/progression controls keep their specialized presentation and behavior. +## Shared control CSS ownership + +Shared styles own ordinary control surfaces and interaction states; feature CSS +owns surrounding layout and context-specific sizing. CCTV's calibration editor +width lives in `ui/styles/cctv.css`, while the shared inline field variant owns +only density and spinner treatment. Radio supplies its field palette and disabled +opacity through the `--gev-field-*` variables, retaining compact typography and +arrow space locally. Cyber supplies shared-field palette variables explicitly; +its legacy native-field palette rules exclude `.gev-field`. These ownership +boundaries preserve the current Tactical/Cyber appearance and native behavior. + ## Ordinary status badges CCTV source/frame labels, calibration provenance and Weather coverage labels use diff --git a/src/ui/styles/cctv.css b/src/ui/styles/cctv.css index 12c369a9e..1e8dced21 100644 --- a/src/ui/styles/cctv.css +++ b/src/ui/styles/cctv.css @@ -109,6 +109,10 @@ html:not([lang='en']) .cctv-controls .scene-btn { gap: 5px; } +.cctv-cal-input { + width: 58px; +} + .cctv-cal-value { font-family: var(--font-mono); font-size: 9px; diff --git a/src/ui/styles/cyber.css b/src/ui/styles/cyber.css index cad6e69af..e25bbae2d 100644 --- a/src/ui/styles/cyber.css +++ b/src/ui/styles/cyber.css @@ -544,12 +544,21 @@ text-shadow: none; } -:root[data-ui-theme='cyber'] :where(.pp-select, select, input, textarea) { +:root[data-ui-theme='cyber'] + :where(.pp-select, select, input, textarea):where(:not(.gev-field)) { border-color: rgba(206, 222, 226, 0.24); background-color: rgba(26, 35, 39, 0.96); color: var(--text-primary); } +/* Shared fields consume theme palettes through their own surface rule. + Feature palettes (Radio) retain precedence without restyling native fields. */ +:root[data-ui-theme='cyber'] .gev-field { + --gev-field-border-color: rgba(206, 222, 226, 0.24); + --gev-field-background: rgba(26, 35, 39, 0.96); + --gev-field-color: var(--text-primary); +} + :root[data-ui-theme='cyber'] :where( .panel-title, diff --git a/src/ui/styles/form-field.css b/src/ui/styles/form-field.css index e0eec99b1..1d7f2b34f 100644 --- a/src/ui/styles/form-field.css +++ b/src/ui/styles/form-field.css @@ -1,11 +1,11 @@ -/* Native selects and numeric inputs. Features own options, constraints and - commit timing; density variants do not introduce custom keyboard behavior. */ +/* Native selects and numeric inputs. This file owns the field surface/states; + features and themes supply palette variables and retain their own layout. */ .gev-field { min-width: 0; - background: rgba(255, 255, 255, 0.06); - border: 1px solid rgba(255, 255, 255, 0.14); + background: var(--gev-field-background, rgba(255, 255, 255, 0.06)); + border: 1px solid var(--gev-field-border-color, rgba(255, 255, 255, 0.14)); border-radius: 7px; - color: var(--text-primary); + color: var(--gev-field-color, var(--text-primary)); padding: 6px 8px; font-family: var(--font-sans); font-size: 12px; @@ -18,7 +18,7 @@ } .gev-field:disabled { - opacity: 0.45; + opacity: var(--gev-field-disabled-opacity, 0.45); } .gev-field--compact { @@ -30,15 +30,14 @@ padding: 2px 6px; } -/* Effective-pose editors must fit inside CCTV value chips. Retain their - existing spinner-free surface; calibration conversion stays with the owner. */ +/* Compact inline editors share density and hide native number spinners. + Their containing feature sets width to fit the surrounding readout. */ .gev-field--inline { - width: 58px; font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.7px; - background: rgba(0, 212, 255, 0.1); - border-color: rgba(0, 212, 255, 0.5); + --gev-field-background: rgba(0, 212, 255, 0.1); + --gev-field-border-color: rgba(0, 212, 255, 0.5); border-radius: 4px; padding: 1px 3px; -moz-appearance: textfield; diff --git a/src/ui/styles/radio.css b/src/ui/styles/radio.css index 568a60a9e..483321992 100644 --- a/src/ui/styles/radio.css +++ b/src/ui/styles/radio.css @@ -49,13 +49,15 @@ min-height: 36px; } #radio-filter { - min-width: 0; + /* Radio owns its compact density and arrow space; shared fields paint the + palette and disabled state, including this intentional theme exception. */ padding: 7px 24px 7px 8px; - border: 1px solid rgba(65, 220, 231, 0.28); border-radius: 5px; - color: #c5faff; - background: rgba(5, 24, 31, 0.88); font: 9px/1.2 var(--font-mono); + --gev-field-border-color: rgba(65, 220, 231, 0.28); + --gev-field-color: #c5faff; + --gev-field-background: rgba(5, 24, 31, 0.88); + --gev-field-disabled-opacity: 0.42; } .radio-station-card { display: grid; @@ -273,11 +275,13 @@ html:not([lang='en']) .radio-transport button { color: #fff; outline: none; } -.radio-transport button:disabled, -#radio-filter:disabled { +.radio-transport button:disabled { opacity: 0.42; cursor: not-allowed; } +#radio-filter:disabled { + cursor: not-allowed; +} #radio-play-btn.active { color: #fff; border-color: rgba(101, 247, 255, 0.8); From 4116082cb9aff4dddf8b427fd4b043d3796ba162 Mon Sep 17 00:00:00 2001 From: Mazeyar Moeini Feizabadi Date: Wed, 21 Oct 2026 18:41:39 +0200 Subject: [PATCH 28/36] docs: add release note for field CSS ownership --- changelog.d/1309-shared-field-css-ownership.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog.d/1309-shared-field-css-ownership.md diff --git a/changelog.d/1309-shared-field-css-ownership.md b/changelog.d/1309-shared-field-css-ownership.md new file mode 100644 index 000000000..1b8817bac --- /dev/null +++ b/changelog.d/1309-shared-field-css-ownership.md @@ -0,0 +1,3 @@ +- Clarify shared field CSS ownership: CCTV owns calibration editor sizing, + while Radio and Cyber supply explicit field palettes without changing the + current appearance or native control behavior (mazy1998, #1309). From 72e14699688d9cf6955bf74f9367483cea641be1 Mon Sep 17 00:00:00 2001 From: Sameh Khamis Date: Wed, 21 Oct 2026 15:07:00 -0700 Subject: [PATCH 29/36] Apply consistent API response headers Every /api response, including errors, partial responses, Host refusals and unknown routes, now carries a sandboxing Content-Security-Policy and X-Content-Type-Options: nosniff on the dev and preview servers. Vite's server and preview headers only reach the documents and assets it serves itself, so a small plugin sets them ahead of the Host check. A route's own policy is sent as an additional policy rather than replacing it. --- build/vite.js | 54 +++++++++++- src/tooling/viteBuild.test.mjs | 149 +++++++++++++++++++++++++++++++-- 2 files changed, 197 insertions(+), 6 deletions(-) diff --git a/build/vite.js b/build/vite.js index 4f2703e88..b560e7921 100644 --- a/build/vite.js +++ b/build/vite.js @@ -47,6 +47,56 @@ export const BROWSER_HEADERS = Object.freeze({ 'X-Content-Type-Options': 'nosniff', }); +/** + * Content-Security-Policy for every `/api` response. API routes return data, + * never a document, so a response opened directly in a tab gets no origin and + * can load nothing. + */ +export const API_CSP = "default-src 'none'; sandbox"; + +/** Response headers every `/api` response carries. */ +export const API_HEADERS = Object.freeze({ + 'Content-Security-Policy': API_CSP, + 'X-Content-Type-Options': 'nosniff', +}); + +/** Whether a request path is an API route (`/api` or `/api/...`). */ +function isApiPath(url) { + const path = String(url || '/').split(/[?#]/, 1)[0]; + return path === '/api' || path.startsWith('/api/'); +} + +/** + * Vite plugin that sets API_HEADERS on every API response before any other + * middleware runs, so success, error, partial, refused and unknown-route + * answers all carry them. Vite's `server.headers` and `preview.headers` only + * reach the documents and assets Vite serves itself. A route may still add + * headers; a route's own Content-Security-Policy is sent as an additional + * policy, which can only restrict further, never replace this one. + */ +export function apiResponseHeadersPlugin() { + const install = (server) => { + server.middlewares.use((req, res, next) => { + if (!isApiPath(req.url)) return next(); + for (const [name, value] of Object.entries(API_HEADERS)) + res.setHeader(name, value); + const setHeader = res.setHeader.bind(res); + res.setHeader = (name, value) => + String(name).toLowerCase() === 'content-security-policy' && + String(value) !== API_CSP + ? setHeader(name, `${API_CSP}, ${value}`) + : setHeader(name, value); + next(); + }); + }; + return { + name: 'api-response-headers', + enforce: 'pre', + configureServer: install, + configurePreviewServer: install, + }; +} + /** Build browser assets with explicit inputs; never load environment or providers. */ export function createBrowserViteConfig({ plugins = [], @@ -61,7 +111,9 @@ export function createBrowserViteConfig({ } = {}) { return { plugins: [ - // First, so no provider route answers a Host the server does not allow. + // First, so every API response, including a Host refusal, carries them. + apiResponseHeadersPlugin(), + // Next, so no provider route answers a Host the server does not allow. hostCheckPlugin(), cesium(), applicationHtmlPlugin(), diff --git a/src/tooling/viteBuild.test.mjs b/src/tooling/viteBuild.test.mjs index e1eb1aecd..655b819d0 100644 --- a/src/tooling/viteBuild.test.mjs +++ b/src/tooling/viteBuild.test.mjs @@ -1,9 +1,11 @@ import test from 'node:test'; import assert from 'node:assert/strict'; import { readFileSync } from 'node:fs'; +import { createServer, request } from 'node:http'; import { BROWSER_CSP, createBrowserViteConfig } from '../../build/vite.js'; import standaloneConfig, * as compatibility from '../../vite.config.js'; import * as providers from '../../server/providers/local.js'; +import { apiNotFoundPlugin } from '../../server/standalone/api-not-found.js'; test('explicit build inputs preserve browser-only defines, plugin order and loopback protections', () => { const plugin = { name: 'fixture-provider' }; @@ -12,10 +14,13 @@ test('explicit build inputs preserve browser-only defines, plugin order and loop googleApiKey: 'browser-fixture', cesiumToken: 'ion-fixture', }); - // The Host check runs before every other plugin's middleware. - assert.equal(config.plugins[0].name, 'host-check'); + // API response headers, then the Host check, run before every other + // plugin's middleware. + assert.equal(config.plugins[0].name, 'api-response-headers'); assert.equal(config.plugins[0].enforce, 'pre'); - assert.equal(config.plugins[3], plugin); + assert.equal(config.plugins[1].name, 'host-check'); + assert.equal(config.plugins[1].enforce, 'pre'); + assert.equal(config.plugins[4], plugin); assert.equal(config.server.host, 'localhost'); assert.equal(config.server.port, 4173); assert.deepEqual(config.server.allowedHosts, ['localhost', '127.0.0.1']); @@ -75,7 +80,7 @@ test('build helper does not discover environment values or construct local provi undefined, ); assert.deepEqual( - config.plugins.slice(3).map((plugin) => plugin.name), + config.plugins.slice(4).map((plugin) => plugin.name), ['embed-framing', 'panel-build'], ); } finally { @@ -89,7 +94,7 @@ test('root config retains existing named exports and standalone provider order', assert.equal(compatibility[name], value, name); const config = standaloneConfig({ mode: 'test' }); const standaloneProviders = config.plugins - .slice(3, -5) + .slice(4, -5) .map((plugin) => plugin.name); assert.equal( standaloneProviders.filter((name) => name === 'gemini-live-proxy').length, @@ -257,3 +262,137 @@ test('the CSP admits the event media embeds and the Maps JavaScript API, and no // X posts load in X's own frames. assert.ok(frames.includes('https://platform.twitter.com')); }); + +/** + * Serve plugins' middleware over real HTTP the way Vite's connect stack mounts + * it: in plugin order, a route prefix stripped from `req.url`. A request no + * middleware answers gets the app document stand-in. + */ +async function servePlugins(t, plugins, hook, config) { + const stack = []; + const server = { + config, + middlewares: { + use(route, handler) { + if (typeof route === 'function') + stack.push({ route: '', handler: route }); + else stack.push({ route, handler }); + }, + }, + }; + for (const plugin of plugins) plugin[hook]?.(server); + const http = createServer((req, res) => { + const original = req.url; + const path = original.split('?')[0]; + let index = 0; + const next = () => { + const layer = stack[index++]; + if (!layer) { + res.writeHead(200, { 'Content-Type': 'text/html' }); + res.end('app'); + return; + } + if ( + layer.route && + path !== layer.route && + !path.startsWith(`${layer.route}/`) + ) + return next(); + req.url = original.slice(layer.route.length) || '/'; + layer.handler(req, res, next); + }; + next(); + }); + await new Promise((resolve) => http.listen(0, '127.0.0.1', resolve)); + t.after(() => new Promise((resolve) => http.close(resolve))); + const { port } = http.address(); + return (path, host = `localhost:${port}`) => + new Promise((resolve, reject) => { + const req = request( + { host: '127.0.0.1', port, path, headers: { host } }, + (res) => { + res.resume(); + res.on('end', () => + resolve({ status: res.statusCode, headers: res.headers }), + ); + }, + ); + req.on('error', reject); + req.end(); + }); +} + +test('every API response carries the API policy and nosniff in dev and preview', async (t) => { + const policy = "default-src 'none'; sandbox"; + const install = (server) => { + server.middlewares.use('/api/fixture', (req, res) => { + const route = req.url.split('?')[0]; + if (route === '/ok') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end('{}'); + } else if (route === '/error') { + res.statusCode = 500; + res.setHeader('Content-Type', 'application/json'); + res.end('{"error":"fixture"}'); + } else if (route === '/partial') { + res.writeHead(206, { 'Content-Range': 'bytes 0-0/2' }); + res.end('x'); + } else if (route === '/own-policy') { + res.setHeader('Content-Security-Policy', "frame-ancestors 'none'"); + res.end('{}'); + } else { + res.writeHead(200, { 'Content-Security-Policy': 'default-src *' }); + res.end('{}'); + } + }); + }; + const fixture = { + name: 'fixture-provider', + configureServer: install, + configurePreviewServer: install, + }; + const built = createBrowserViteConfig({ plugins: [fixture] }); + const plugins = [ + ...built.plugins.filter( + (plugin) => + plugin === fixture || + ['api-response-headers', 'host-check'].includes(plugin.name), + ), + apiNotFoundPlugin(), + ]; + const config = { + server: { + allowedHosts: built.server.allowedHosts, + host: built.server.host, + }, + preview: { allowedHosts: built.server.allowedHosts }, + }; + for (const hook of ['configureServer', 'configurePreviewServer']) { + const get = await servePlugins(t, plugins, hook, config); + for (const [path, status, csp = policy, host] of [ + ['/api/fixture/ok', 200], + ['/api/fixture/error', 500], + ['/api/fixture/partial', 206], + ['/api/nope', 404], + ['/api', 404], + ['/api/fixture/ok?x=1', 200], + ['/api/fixture/ok', 403, policy, 'elsewhere.example'], + // A route's own policy is added to the API policy, never replaces it. + ['/api/fixture/own-policy', 200, `${policy}, frame-ancestors 'none'`], + ['/api/fixture/own-policy-head', 200, `${policy}, default-src *`], + ]) { + const res = await get(path, host); + const label = `${hook} ${path} ${host || ''}`; + assert.equal(res.status, status, label); + assert.equal(res.headers['content-security-policy'], csp, label); + assert.equal(res.headers['x-content-type-options'], 'nosniff', label); + } + // The app document and other paths are left to the server's own headers. + for (const path of ['/', '/apiary', '/src/api/x.js']) + assert.equal( + (await get(path)).headers['content-security-policy'], + undefined, + `${hook} ${path}`, + ); + } +}); From 0ad75095a777f471200226955585b6f5aa08cce3 Mon Sep 17 00:00:00 2001 From: Sameh Khamis Date: Wed, 21 Oct 2026 15:07:20 -0700 Subject: [PATCH 30/36] Validate provider response formats CCTV frames and the Street View fallback accept only JPEG, PNG, GIF, WebP and AVIF, parsed from the media type essence and sent under the canonical type; any other type is cancelled and falls through to the next fallback as a failed upstream does. Live media must match its feed kind (video/mp4, video/webm, or multipart/x-mixed-replace with a boundary) before the camera is reported healthy or any byte is relayed, and its redirects now stay on the registered origin like frames. Every /api/cctv route uses the same-site gate. The GBFS proxy relays only bodies that parse as JSON, re-serialized under a fixed application/json type. --- scripts/package-boundaries.json | 2 + server/providers/cctv.js | 66 ++++++--- server/providers/cctv/media.js | 94 ++++++++++++- server/providers/gbfs.js | 17 ++- src/data/cctvMediaFeedType.test.mjs | 210 +++++++++++++++++++++++++++- src/data/cctvProxy.test.mjs | 54 +++++++ src/data/gbfsProxy.test.mjs | 58 ++++++++ 7 files changed, 468 insertions(+), 33 deletions(-) diff --git a/scripts/package-boundaries.json b/scripts/package-boundaries.json index 65f79b332..9dc4bd27d 100644 --- a/scripts/package-boundaries.json +++ b/scripts/package-boundaries.json @@ -194,6 +194,8 @@ "exports": ["./server/providers/cctv"], "modules": [ "server/providers/cctv.js", + "server/providers/common/same-site.js", + "src/localRequestGate.mjs", "server/providers/cctv/cap.js", "server/providers/cctv/groundHeights.js", "server/providers/cctv/catalog.js", diff --git a/server/providers/cctv.js b/server/providers/cctv.js index e549753e8..1f1262709 100644 --- a/server/providers/cctv.js +++ b/server/providers/cctv.js @@ -6,6 +6,8 @@ import { } from './cctv/normalize.js'; import { buildSyntheticCctvSvg, + cctvLiveMediaType, + cctvRasterImageType, proxyMediaResponse, fetchCctvImageFromUpstream, fetchTxdotSnapshot, @@ -17,6 +19,7 @@ import { CCTV_MAX_SOURCES_CEILING, } from './cctv/constants.js'; import { sanitizeCctvRangeHeader } from './cctv/range.js'; +import { admitSameSite } from './common/same-site.js'; import { createHlsPuller } from './cctv/stream.js'; import { googleServerApiKey } from './places/google-key.js'; export { CCTV_FRAME_FETCH_TIMEOUT_MS, fetchCctvImageFromUpstream }; @@ -116,8 +119,15 @@ export function cctvProxy({ sourceRoot = process.cwd() } = {}) { headers: { 'User-Agent': 'gods-eye-view-cctv-proxy/1.0' }, signal: AbortSignal.timeout(CCTV_FRAME_FETCH_TIMEOUT_MS), }); - const svType = svResp.headers.get('content-type') || ''; - if (!svResp.ok || !svType.startsWith('image/')) return null; + const svType = cctvRasterImageType(svResp.headers.get('content-type')); + if (!svResp.ok || !svType) { + try { + await svResp.body?.cancel(); + } catch { + /* no-op */ + } + return null; + } return { ok: true, @@ -135,11 +145,13 @@ export function cctvProxy({ sourceRoot = process.cwd() } = {}) { }); server.middlewares.use('/api/cctv', async (req, res) => { try { + const url = new URL(req.url || '/', 'http://localhost'); + // Refuse cross-site requests before any catalog or upstream work. + if (admitSameSite(req, res)) return; const sources = await getCctvSources(); const sourceById = new Map( sources.map((source) => [source.id, source]), ); - const url = new URL(req.url || '/', 'http://localhost'); if (url.pathname === '/sources') { const body = { @@ -217,8 +229,8 @@ export function cctvProxy({ sourceRoot = process.cwd() } = {}) { const mediaUrl = source?.url || ''; const feedType = normalizeFeedType(source?.feedType || 'image'); // Live feeds only. A still camera is served by /frame, whose fetch - // keeps redirects on the registered origin, accepts only image/* and - // caps the body; relaying it here would bypass all three. + // keeps redirects on the registered origin, accepts only raster + // images and caps the body; relaying it here would bypass all three. if (!isVideoFeedType(feedType) && feedType !== 'mjpeg') { res.writeHead(404, { 'Content-Type': 'application/json', @@ -382,7 +394,6 @@ export function cctvProxy({ sourceRoot = process.cwd() } = {}) { } return; } - const contentType = upstream.headers.get('content-type') || ''; if (!upstream.ok) { try { await upstream.body?.cancel(); @@ -407,31 +418,42 @@ export function cctvProxy({ sourceRoot = process.cwd() } = {}) { return; } - if ( - isVideoFeedType(feedType) && - !( - contentType.startsWith('video/') || - contentType.includes('mpegurl') - ) - ) { + // The relayed type is the feed kind's own, checked before the + // camera counts as healthy and before any byte is relayed. + const contentType = cctvLiveMediaType( + feedType, + upstream.headers.get('content-type'), + ); + if (!contentType) { + try { + await upstream.body?.cancel(); + } catch { + /* already closed */ + } setHealth(cameraId, { status: 'degraded', sourceKind: 'upstream', label: source?.provider || 'Configured source', - message: `Unexpected media type ${contentType || 'unknown'}`, + message: 'Unexpected media type', }); - } else { - setHealth(cameraId, { - status: 'ok', - sourceKind: isVideoFeedType(feedType) ? 'live' : 'snapshot', - label: source?.provider || 'Configured source', - message: isVideoFeedType(feedType) - ? 'Live stream connected' - : 'Snapshot feed connected', + res.writeHead(502, { + 'Content-Type': 'application/json', + 'Cache-Control': 'no-store', }); + res.end(JSON.stringify({ error: 'Media proxy failed' })); + return; } + setHealth(cameraId, { + status: 'ok', + sourceKind: isVideoFeedType(feedType) ? 'live' : 'snapshot', + label: source?.provider || 'Configured source', + message: isVideoFeedType(feedType) + ? 'Live stream connected' + : 'Snapshot feed connected', + }); await proxyMediaResponse(res, upstream, { + contentType, sourceHeader: isVideoFeedType(feedType) ? 'live-media' : 'upstream-image', diff --git a/server/providers/cctv/media.js b/server/providers/cctv/media.js index 549e6cf06..fdb2a2176 100644 --- a/server/providers/cctv/media.js +++ b/server/providers/cctv/media.js @@ -93,6 +93,73 @@ export function toReadable(body) { return null; } +/** + * Split a Content-Type value into its lower-case essence and parameters. + * + * @param {string|null|undefined} value + * @returns {{essence:string,params:Map}|null} Null when the + * value is missing or is not a `type/subtype` media type. + */ +export function parseMediaType(value) { + const [head, ...rest] = String(value ?? '').split(';'); + const essence = head.trim().toLowerCase(); + if (!/^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/.test(essence)) return null; + const params = new Map(); + for (const part of rest) { + const eq = part.indexOf('='); + if (eq <= 0) continue; + const name = part.slice(0, eq).trim().toLowerCase(); + let paramValue = part.slice(eq + 1).trim(); + if (/^".*"$/.test(paramValue)) paramValue = paramValue.slice(1, -1); + if (name && !params.has(name)) params.set(name, paramValue); + } + return { essence, params }; +} + +/** Still-image types a camera frame may be served as. */ +const CCTV_RASTER_IMAGE_TYPES = new Set([ + 'image/jpeg', + 'image/png', + 'image/gif', + 'image/webp', + 'image/avif', +]); + +/** + * The canonical type of a raster camera frame, or null for any other type. + * + * @param {string|null|undefined} contentType + * @returns {string|null} + */ +export function cctvRasterImageType(contentType) { + const essence = parseMediaType(contentType)?.essence; + return CCTV_RASTER_IMAGE_TYPES.has(essence) ? essence : null; +} + +/** + * The type to relay a live feed as, or null when the upstream type does not + * match the feed kind. MJPEG keeps its part boundary, without which the body + * cannot be split into frames. + * + * @param {string} feedType - Normalized feed type (mp4, webm or mjpeg). + * @param {string|null|undefined} contentType + * @returns {string|null} + */ +export function cctvLiveMediaType(feedType, contentType) { + const parsed = parseMediaType(contentType); + if (!parsed) return null; + if (feedType === 'mp4' || feedType === 'webm') + return parsed.essence === `video/${feedType}` ? parsed.essence : null; + if (feedType !== 'mjpeg' || parsed.essence !== 'multipart/x-mixed-replace') + return null; + const boundary = parsed.params.get('boundary') || ''; + if (!/^[0-9A-Za-z'()+_,./:=? -]{0,69}[0-9A-Za-z'()+_,./:=?-]$/.test(boundary)) + return null; + return /^[0-9A-Za-z'+_.-]+$/.test(boundary) + ? `multipart/x-mixed-replace; boundary=${boundary}` + : `multipart/x-mixed-replace; boundary="${boundary}"`; +} + /** * Pipe an upstream fetch Response (image or video) to the client HTTP response. * @@ -104,6 +171,8 @@ export function toReadable(body) { * @param {Response} upstream - fetch() Response object. * @param {object} [opts] * @param {string} [opts.sourceHeader='upstream'] - Value for X-CCTV-Source header. + * @param {string} [opts.contentType] - Validated type to send instead of the + * upstream's own. * @param {number} [opts.idleTimeoutMs=CCTV_MEDIA_IDLE_TIMEOUT_MS] - Silence * allowed between upstream chunks before the stream is released. Injectable * only to keep the deadline unit-testable. @@ -114,10 +183,10 @@ export async function proxyMediaResponse( { sourceHeader = 'upstream', idleTimeoutMs = CCTV_MEDIA_IDLE_TIMEOUT_MS, + contentType = upstream.headers.get('content-type') || + 'application/octet-stream', } = {}, ) { - const contentType = - upstream.headers.get('content-type') || 'application/octet-stream'; const cacheControl = upstream.headers.get('cache-control') || 'no-store'; const contentLength = upstream.headers.get('content-length'); const contentRange = upstream.headers.get('content-range'); @@ -340,7 +409,14 @@ export async function fetchCctvMediaUpstream( if (downstream?.aborted) controller.abort(); else downstream?.addEventListener?.('abort', onDownstreamAbort); try { - return await fetchImpl(url, { headers, signal: controller.signal }); + // Redirects stay on the registered origin, as for frames. + const upstream = await fetchWithinHost( + url, + { headers, signal: controller.signal }, + fetchImpl, + ); + if (!upstream) throw new Error('Media redirect refused'); + return upstream; } finally { clearTimeout(timeoutId); downstream?.removeEventListener?.('abort', onDownstreamAbort); @@ -543,9 +619,15 @@ export async function fetchCctvImageFromUpstream( fetchImpl, ); if (!upstream) return null; - const contentType = upstream.headers.get('content-type') || ''; - if (!upstream.ok || !contentType.startsWith('image/')) { - controller.abort(); + const contentType = cctvRasterImageType( + upstream.headers.get('content-type'), + ); + if (!upstream.ok || !contentType) { + try { + await upstream.body?.cancel(); + } catch { + /* no-op */ + } return null; } const body = await readCappedResponseBytes(upstream, maxBytes); diff --git a/server/providers/gbfs.js b/server/providers/gbfs.js index c6e3ba4ec..7594bc1bf 100644 --- a/server/providers/gbfs.js +++ b/server/providers/gbfs.js @@ -236,13 +236,26 @@ export function gbfsProxy({ ratePerMinute = GBFS_RATE_PER_MIN } = {}) { } const upstream = await fetchGbfsUpstream(upstreamUrl.toString()); + // Only JSON is relayed, re-serialized under a fixed type: neither the + // upstream's text nor its declared type reaches the browser. + let payload; + try { + payload = JSON.parse(upstream.body); + } catch { + res.writeHead(502, { + 'Content-Type': 'application/json', + 'Cache-Control': 'no-store', + }); + res.end(JSON.stringify({ error: 'GBFS upstream returned non-JSON' })); + return; + } res.writeHead(upstream.status, { - 'Content-Type': upstream.contentType, + 'Content-Type': 'application/json; charset=utf-8', 'Cache-Control': gbfsCacheControl(upstreamUrl.pathname), 'X-GBFS-Upstream': upstreamUrl.hostname, 'X-GBFS-Cache': 'MISS', }); - res.end(upstream.body); + res.end(JSON.stringify(payload)); } catch (error) { if (error?.name === 'AbortError') { res.writeHead(504, { diff --git a/src/data/cctvMediaFeedType.test.mjs b/src/data/cctvMediaFeedType.test.mjs index 5791e433b..532f1ae45 100644 --- a/src/data/cctvMediaFeedType.test.mjs +++ b/src/data/cctvMediaFeedType.test.mjs @@ -33,6 +33,14 @@ const VIDEO = { feedType: 'video', url: 'https://cams.upstream.invalid/live.mp4', }; +const WEBM = { + id: 'webm-fixture', + name: 'WebM fixture', + lat: 30.27, + lon: -97.74, + feedType: 'webm', + url: 'https://cams.upstream.invalid/live.webm', +}; const MJPEG = { id: 'mjpeg-fixture', name: 'MJPEG fixture', @@ -69,7 +77,10 @@ function recordingResponse() { body: '', writeHead(status, headers) { res.statusCode = status; - res.headers = headers || {}; + res.headers = { ...res.headers, ...headers }; + }, + setHeader(name, value) { + res.headers[name] = value; }, write(chunk) { chunks.push(Buffer.from(chunk)); @@ -105,6 +116,7 @@ function mount(t, respond) { STILL, STILL_ALIAS, VIDEO, + WEBM, MJPEG, ]); process.env.CCTV_SOURCES_FILE = 'absent-source-file.json'; @@ -143,9 +155,9 @@ function mount(t, respond) { }); assert.ok(handler, 'the CCTV provider must mount a middleware'); - const call = async (path) => { + const call = async (path, headers = {}) => { const { res, done } = recordingResponse(); - await handler({ url: path, headers: {}, method: 'GET', on() {} }, res); + await handler({ url: path, headers, method: 'GET', on() {} }, res); await done; return res; }; @@ -268,3 +280,195 @@ test('/frame does not follow a still camera off its origin', async (t) => { [STILL.url], ); }); + +/** An upstream Response whose body records whether it was cancelled. */ +function trackedUpstream({ status = 200, headers = {}, body = 'payload' }) { + const state = { cancelled: false }; + const response = new Response( + new ReadableStream( + { + pull(controller) { + controller.enqueue(new TextEncoder().encode(body)); + controller.close(); + }, + cancel() { + state.cancelled = true; + }, + }, + { highWaterMark: 0 }, + ), + { status, headers }, + ); + return { response, state }; +} + +test('/media refuses an upstream type that does not match the feed kind', async (t) => { + let current; + const app = mount(t, () => current.response); + for (const [camera, contentType, body] of [ + [VIDEO, 'text/html', '

x

'], + [VIDEO, 'image/svg+xml', ''], + [VIDEO, 'application/vnd.apple.mpegurl', '#EXTM3U'], + [VIDEO, 'video/webm', 'video'], + [VIDEO, undefined, 'video'], + [WEBM, 'video/mp4', 'video'], + [MJPEG, 'multipart/x-mixed-replace', '--frame'], + [MJPEG, 'multipart/x-mixed-replace; boundary=', '--frame'], + [MJPEG, 'image/jpeg', 'jpeg'], + [MJPEG, 'text/html; boundary=frame', '

x

'], + ]) { + current = trackedUpstream({ + headers: contentType === undefined ? {} : { 'content-type': contentType }, + body, + }); + const label = `${camera.id}: ${contentType}`; + const res = await app.call(`/media/${camera.id}`); + assert.equal(res.statusCode, 502, label); + assert.equal(res.headers['Content-Type'], 'application/json', label); + assert.deepEqual(JSON.parse(res.body), { error: 'Media proxy failed' }); + assert.equal(current.state.cancelled, true, `${label}: upstream cancelled`); + const health = await app.health(camera.id); + assert.equal(health.status, 'degraded', label); + assert.equal(health.message, 'Unexpected media type', label); + } +}); + +test('/media relays each feed kind under its canonical type, including a partial response', async (t) => { + let current; + const app = mount(t, () => current); + for (const [camera, upstream, expected] of [ + [ + VIDEO, + { 'content-type': 'Video/MP4; codecs="avc1.42E01E"' }, + 'video/mp4', + ], + [ + VIDEO, + { + 'content-type': 'video/mp4', + 'content-range': 'bytes 0-4/100', + 'content-length': '5', + 'accept-ranges': 'bytes', + }, + 'video/mp4', + ], + [WEBM, { 'content-type': 'video/webm' }, 'video/webm'], + [ + MJPEG, + { 'content-type': 'multipart/x-mixed-replace;boundary="frame"' }, + 'multipart/x-mixed-replace; boundary=frame', + ], + [ + MJPEG, + { 'content-type': 'multipart/x-mixed-replace; boundary="a b"' }, + 'multipart/x-mixed-replace; boundary="a b"', + ], + ]) { + const status = upstream['content-range'] ? 206 : 200; + current = upstreamResponse({ status, headers: upstream, body: 'bytes' }); + const res = await app.call(`/media/${camera.id}`); + assert.equal(res.statusCode, status, camera.id); + assert.equal(res.headers['Content-Type'], expected); + assert.equal(res.body, 'bytes'); + if (status === 206) + assert.equal(res.headers['Content-Range'], 'bytes 0-4/100'); + assert.equal((await app.health(camera.id)).status, 'ok'); + } +}); + +test('/media does not follow a live camera off its origin', async (t) => { + const app = mount(t, ({ url }) => + url === VIDEO.url + ? upstreamResponse({ + status: 302, + headers: { location: 'https://elsewhere.invalid/live.mp4' }, + body: '', + }) + : upstreamResponse({ + headers: { 'content-type': 'video/mp4' }, + body: 'elsewhere', + }), + ); + const res = await app.call(`/media/${VIDEO.id}`); + assert.equal(res.statusCode, 502); + assert.doesNotMatch(res.body, /elsewhere/); + assert.deepEqual(app.requests, [{ url: VIDEO.url, redirect: 'manual' }]); +}); + +test('every CCTV route refuses cross-site requests and admits the app itself', async (t) => { + const app = mount(t, ({ url }) => + upstreamResponse({ + headers: { + 'content-type': url === VIDEO.url ? 'video/mp4' : 'image/jpeg', + }, + body: 'bytes', + }), + ); + const host = 'localhost:5173'; + const paths = [ + '/sources', + '/health', + `/stream/${STILL.id}`, + `/frame/${STILL.id}`, + `/media/${VIDEO.id}`, + ]; + for (const headers of [ + { host, 'sec-fetch-site': 'cross-site' }, + { host, 'sec-fetch-site': 'same-site' }, + { host, origin: 'https://elsewhere.example' }, + { host, origin: 'null' }, + ]) + for (const path of paths) { + const res = await app.call(path, headers); + assert.equal(res.statusCode, 403, `${path} ${JSON.stringify(headers)}`); + } + assert.deepEqual(app.requests, [], 'a refused request reached an upstream'); + for (const headers of [ + { host, 'sec-fetch-site': 'same-origin' }, + { host, origin: `http://${host}` }, + {}, + ]) { + const frame = await app.call(`/frame/${STILL.id}`, headers); + assert.equal(frame.statusCode, 200); + assert.equal(frame.headers['X-CCTV-Source'], 'upstream-image'); + const media = await app.call(`/media/${VIDEO.id}`, headers); + assert.equal(media.statusCode, 200); + assert.equal(media.headers['Content-Type'], 'video/mp4'); + } +}); + +test('/frame falls back past a non-raster upstream and Street View frame', async (t) => { + let streetViewType; + const app = mount(t, ({ url }) => + url.startsWith('https://maps.googleapis.com/') + ? trackedUpstream({ + headers: + streetViewType === undefined + ? {} + : { 'content-type': streetViewType }, + body: 'street-view', + }).response + : upstreamResponse({ + headers: { 'content-type': 'image/svg+xml' }, + body: '', + }), + ); + process.env.GOOGLE_MAPS_SERVER_API_KEY = 'fixture-key'; + for (const type of [ + 'image/svg+xml', + 'text/html', + 'application/xml', + undefined, + ]) { + streetViewType = type; + const res = await app.call(`/frame/${STILL.id}`); + assert.equal(res.statusCode, 200); + assert.equal(res.headers['X-CCTV-Source'], 'synthetic', String(type)); + assert.doesNotMatch(res.body, /street-view/); + } + streetViewType = 'image/JPEG; charset=x'; + const res = await app.call(`/frame/${STILL.id}`); + assert.equal(res.headers['X-CCTV-Source'], 'streetview'); + assert.equal(res.headers['Content-Type'], 'image/jpeg'); + assert.equal(res.body, 'street-view'); +}); diff --git a/src/data/cctvProxy.test.mjs b/src/data/cctvProxy.test.mjs index 54a5d09db..f197c9a97 100644 --- a/src/data/cctvProxy.test.mjs +++ b/src/data/cctvProxy.test.mjs @@ -259,3 +259,57 @@ test('rejected snapshot responses abort the upstream download', async () => { assert.equal(signal.aborted, true); } }); + +test('CCTV upstream frame fetch accepts only raster image types and sends their canonical type', async () => { + const frame = (contentType, body = 'frame') => { + const state = { cancelled: false }; + const headers = contentType === null ? {} : { 'Content-Type': contentType }; + const response = new Response(new ReadableStream({ + pull(controller) { + controller.enqueue(new TextEncoder().encode(body)); + controller.close(); + }, + cancel() { + state.cancelled = true; + }, + }, { highWaterMark: 0 }), { status: 200, headers }); + return { response, state }; + }; + for (const [contentType, canonical] of [ + ['image/jpeg', 'image/jpeg'], + ['image/JPEG; charset=x', 'image/jpeg'], + [' Image/PNG ', 'image/png'], + ['image/gif', 'image/gif'], + ['image/webp;q=1', 'image/webp'], + ['image/avif', 'image/avif'], + ]) { + const { response } = frame(contentType); + const result = await fetchCctvImageFromUpstream('https://example.com/frame.jpg', { + fetchImpl: async () => response, + }); + assert.equal(result?.contentType, canonical, contentType); + assert.equal(result.body.toString(), 'frame'); + } + for (const [contentType, body] of [ + ['image/svg+xml', ''], + ['Image/SVG+XML; charset=utf-8', ''], + ['text/html', '

x

'], + ['text/html; charset=utf-8', '

x

'], + ['application/xml', ''], + ['text/xml', ''], + [null, 'frame'], + ['', 'frame'], + ['image', 'frame'], + ['image/', 'frame'], + ['image/jpeg/x', 'frame'], + ['image/jpeg, text/html', 'frame'], + ['application/octet-stream', 'frame'], + ]) { + const { response, state } = frame(contentType, body); + const result = await fetchCctvImageFromUpstream('https://example.com/frame.jpg', { + fetchImpl: async () => response, + }); + assert.equal(result, null, String(contentType)); + assert.equal(state.cancelled, true, `${contentType}: body cancelled`); + } +}); diff --git a/src/data/gbfsProxy.test.mjs b/src/data/gbfsProxy.test.mjs index c95256137..d8c8e5fc3 100644 --- a/src/data/gbfsProxy.test.mjs +++ b/src/data/gbfsProxy.test.mjs @@ -304,3 +304,61 @@ test('GBFS rejects redirects and caps bodies through both server hooks', async ( globalThis.fetch = originalFetch; } }); + +test('GBFS relays only JSON, re-serialized under a fixed type, through both server hooks', async () => { + const { gbfsProxy } = await import('../../server/providers/gbfs.js'); + const originalFetch = globalThis.fetch; + try { + for (const hook of ['configureServer', 'configurePreviewServer']) { + let handler; + gbfsProxy()[hook]({ + middlewares: { + use(_path, callback) { + handler = callback; + }, + }, + }); + const request = async (response) => { + globalThis.fetch = async () => response; + const res = {}; + await handler( + { method: 'GET', url: '/' + encodeURIComponent(STATION_URL) }, + { + writeHead(code, headers) { + Object.assign(res, { status: code, headers }); + }, + end(value) { + res.body = value; + }, + }, + ); + return res; + }; + for (const [contentType, body] of [ + ['text/html', '

x

'], + ['application/json', '

x

'], + ['image/svg+xml', ''], + ['application/json', ''], + ]) { + const res = await request( + new Response(body, { headers: { 'Content-Type': contentType } }), + ); + assert.equal(res.status, 502, `${hook}: ${contentType} ${body}`); + assert.equal(res.headers['Content-Type'], 'application/json'); + assert.equal(typeof JSON.parse(res.body).error, 'string'); + assert.doesNotMatch(res.body, /doctype|svg/); + } + const res = await request( + new Response(' { "data" : { "stations" : [] } } ', { + headers: { 'Content-Type': 'text/html; charset=iso-8859-1' }, + }), + ); + assert.equal(res.status, 200); + assert.equal(res.headers['Content-Type'], 'application/json; charset=utf-8'); + assert.equal(res.headers['Cache-Control'], 'no-store'); + assert.equal(res.body, STATION_BODY); + } + } finally { + globalThis.fetch = originalFetch; + } +}); From 3e80afe7139f34a121c4d9f2ab1582f6bb59a8fe Mon Sep 17 00:00:00 2001 From: Sameh Khamis Date: Wed, 21 Oct 2026 15:07:40 -0700 Subject: [PATCH 31/36] Pin camera sources by parsed URL Camera catalog image URLs were pinned by string prefix, so a URL that only began with the agency's directory before dot segments or an encoded separator were resolved still counted as inside it. The pin now parses the URL and requires the same scheme, the exact host, no credentials, the default port and a normalized path inside the pinned directory. Redirects on a pinned host must stay inside the same directory. Document the response format checks and API response headers alongside the existing server hardening notes. --- SECURITY.md | 2 + .../0000-provider-response-hardening.md | 1 + docs/CURRENT-STATE.md | 16 +++ scripts/format-scope.json | 1 + server/providers/cctv/media.js | 45 +++++++- server/providers/cctv/normalize.js | 33 ++++++ server/providers/cctv/sources.js | 68 ++++++----- src/data/cctvSourcePins.test.mjs | 106 ++++++++++++++++++ 8 files changed, 241 insertions(+), 31 deletions(-) create mode 100644 changelog.d/0000-provider-response-hardening.md create mode 100644 src/data/cctvSourcePins.test.mjs diff --git a/SECURITY.md b/SECURITY.md index 30203ed94..9d4feb6d8 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -69,6 +69,8 @@ The data proxies under `server/providers/` are written so the browser cannot tur - **No verbatim client headers upstream.** The CCTV media route is the one route that relays a request header (`Range`, for video seeking). It is parsed and canonicalized before it is forwarded: one `bytes=` range only, with every accepted form — explicit span, open-ended and suffix — bounded to the same 64 MiB ceiling the relay applies to a declared response body. Multi-range, malformed, inverted and non-`bytes` values are dropped and the request proceeds without a `Range`, as RFC 7233 §3.1 prescribes. Bounding the request bounds what is asked for: a response that declares no length — live streamed media, or a chunked body from an upstream that ignores the `Range` — has no ceiling. An upstream request the browser has stopped waiting for is cancelled rather than left running, whether the viewer leaves before the headers arrive or during the body. - **Transit fetches registered feeds only.** `/api/transit/vehicles/` resolves the id against `src/data/transitFeeds.js`; the browser never supplies a URL, and a feed that is registered but disabled does not resolve at all. Redirects are followed manually and each hop is validated against the feed's own https origin before it is requested, so an off-origin or downgraded hop is refused rather than contacted. Bodies are capped at 8 MB, the protobuf is decoded server-side under entity-count and string-length ceilings, a differential feed is refused, and snapshots live 15 s in memory with no disk cache. A per-feed admission limiter and a failure cooldown ladder bound what this process can ask of any operator. - **Local receiver feeds are operator-configured and local-only.** `/api/local-receivers/aircraft` reads only the `aircraft.json` URLs in the server's `LOCAL_RECEIVER_FEEDS`; the browser never supplies an address. Each host must pass the shared tap address rule (`src/data/tapAddress.js`: loopback, RFC1918, `localhost`, `*.local`; no link-local, IPv6 or other names), the scheme must be http(s), the path must end in `aircraft.json`, and credentials, queries and fragments are refused. Invalid entries are logged at startup and never fetched. Reads use a 2 s timeout, refuse redirects, cap bodies at 2 MB and share one read per second; responses name each feed by band only and never carry upstream error text. +- **Validated response formats.** Proxied bodies are relayed only in the format the route serves. CCTV frames and the Street View fallback accept JPEG, PNG, GIF, WebP and AVIF only, sent under their canonical type; any other type falls through to the next fallback. Live CCTV media must match its feed kind (`video/mp4`, `video/webm`, or `multipart/x-mixed-replace` with a boundary) before it is relayed or the camera counts as healthy, and its redirects stay on the registered origin. GBFS bodies must parse as JSON and are re-serialized as `application/json; charset=utf-8`. Camera catalog URLs are pinned by parsed URL — scheme, exact host, no credentials, default port, and a normalized path inside the agency's image directory — and a redirect on a pinned host must stay inside the same directory. Every `/api/cctv` route uses the cross-site gate below. +- **Consistent API response headers.** Every `/api` response, including errors, partial content, Host refusals and unknown routes, carries `Content-Security-Policy: default-src 'none'; sandbox` and `X-Content-Type-Options: nosniff` (`apiResponseHeadersPlugin` in `build/vite.js`, installed ahead of the Host check). A route that sets its own policy adds it as a further policy; it never replaces this one. - **Response-size caps and timeouts** on proxied responses. - **Sanitized errors** — internal error details are not echoed back to clients. - **Coalesced OAuth refresh** and cached successful responses only (OpenSky). diff --git a/changelog.d/0000-provider-response-hardening.md b/changelog.d/0000-provider-response-hardening.md new file mode 100644 index 000000000..bddf3bb41 --- /dev/null +++ b/changelog.d/0000-provider-response-hardening.md @@ -0,0 +1 @@ +- Validate provider response formats, strengthen camera source checks, and apply consistent API response protections (samehkhamis). diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 7df2e0863..efedf3508 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -30,6 +30,15 @@ time. This clears obsolete contacts and settles startup without manufacturing position timestamps. Stale, incomplete and malformed empty results retain the existing recovery behavior. +Every `/api` response on the dev and preview servers carries +`Content-Security-Policy: default-src 'none'; sandbox` and +`X-Content-Type-Options: nosniff`. `apiResponseHeadersPlugin` sets them ahead of +the Host check, so errors, partial responses, Host refusals and unknown routes +are covered too; a route's own policy is sent as an additional policy, never in +place of it. The app document's policy is unchanged. The GBFS proxy relays only +bodies that parse as JSON, re-serialized as `application/json; charset=utf-8`; +anything else answers 502. + Catalog source contracts and their consuming layers are declared in `src/app/sourceComposition.js`. Omitted or null acquisition sources preserve layer registration and serialization, report unavailable, and are refused by the existing @@ -812,6 +821,13 @@ standalone entry supplies application-owned scene, ground and activation service Each layer owns its state and visibility listener; destruction cancels source reads and pending initialization. Malformed health responses retain prior health. Existing catalog fallback, camera poses, frame pacing and coverage controls remain. +CCTV frames and the Street View fallback accept only JPEG, PNG, GIF, WebP and +AVIF, sent under the canonical type; any other type falls through to the next +fallback. Live media must match its feed kind (`video/mp4`, `video/webm`, or +`multipart/x-mixed-replace` with a boundary) before health reports it connected, +and follows redirects only on the camera's origin. Catalog image URLs, and +redirects on those hosts, are pinned by parsed URL to the agency's image +directory. Every `/api/cctv` route uses the same-site gate. Traffic owns its rendered-surface observer only while enabled, removes it on disable/destroy, and caches surface identity without allocating on unchanged frames. diff --git a/scripts/format-scope.json b/scripts/format-scope.json index 05842f6a5..bfab00fde 100644 --- a/scripts/format-scope.json +++ b/scripts/format-scope.json @@ -121,6 +121,7 @@ "server/providers/cctv/normalize.js", "src/data/cctvMissingNumbers.test.mjs", "server/providers/cctv/sources.js", + "src/data/cctvSourcePins.test.mjs", "server/providers/radio.js", "server/providers/radio/catalog.js", "server/providers/radio/constants.js", diff --git a/server/providers/cctv/media.js b/server/providers/cctv/media.js index fdb2a2176..1323bc841 100644 --- a/server/providers/cctv/media.js +++ b/server/providers/cctv/media.js @@ -1,13 +1,21 @@ import { Readable } from 'node:stream'; -import { hashSeed, escapeXml } from './normalize.js'; +import { hashSeed, escapeXml, pinnedCameraUrl } from './normalize.js'; import { + CALGARY_IMAGE_ORIGIN, CCTV_FRAME_FETCH_TIMEOUT_MS, CCTV_FRAME_MAX_BODY_BYTES, CCTV_MEDIA_FETCH_TIMEOUT_MS, CCTV_MEDIA_IDLE_TIMEOUT_MS, CCTV_MEDIA_MAX_BODY_BYTES, + HK_IMAGE_ORIGIN, + KING_COUNTY_IMAGE_ORIGIN, NSW_IMAGE_ORIGIN, NSW_IMAGE_USER_AGENT, + TALLINN_IMAGE_ORIGIN, + TARKTEE_IMAGE_ORIGIN, + TFL_IMAGE_ORIGIN, + WARENDORF_IMAGE_ORIGINS, + WSDOT_IMAGE_ORIGIN, } from './constants.js'; /** * Generate a synthetic SVG billboard image for a CCTV camera placeholder. @@ -504,9 +512,40 @@ export async function fetchTxdotSnapshot( /** Redirect hops the frame path will follow, and only within the same host. */ const MAX_SAME_HOST_REDIRECTS = 2; +/** + * Directories camera catalogs are pinned to, by host. A redirect on one of + * these hosts must stay inside the pinned directory too, so a same-origin + * redirect cannot leave it (another bucket on a shared storage host). + */ +const CCTV_PINNED_PREFIXES_BY_HOST = new Map(); +for (const prefix of [ + TFL_IMAGE_ORIGIN, + TALLINN_IMAGE_ORIGIN, + TARKTEE_IMAGE_ORIGIN, + ...WARENDORF_IMAGE_ORIGINS, + NSW_IMAGE_ORIGIN, + CALGARY_IMAGE_ORIGIN, + HK_IMAGE_ORIGIN, + KING_COUNTY_IMAGE_ORIGIN, + WSDOT_IMAGE_ORIGIN, +]) { + const host = new URL(prefix).hostname; + CCTV_PINNED_PREFIXES_BY_HOST.set(host, [ + ...(CCTV_PINNED_PREFIXES_BY_HOST.get(host) || []), + prefix, + ]); +} + +/** Whether a redirect target stays inside its host's pinned directory. */ +function withinPinnedPrefix(url) { + const prefixes = CCTV_PINNED_PREFIXES_BY_HOST.get(url.hostname); + return !prefixes || prefixes.some((p) => pinnedCameraUrl(url.href, p)); +} + /** * Fetch a registered frame URL following redirects ONLY within the original - * origin (scheme, host and port; at most MAX_SAME_HOST_REDIRECTS hops). + * origin (scheme, host and port; at most MAX_SAME_HOST_REDIRECTS hops) and, + * on a pinned camera host, within its pinned directory. * Default redirect-following would let an upstream steer a host-pinned * request, and its host-specific headers, to any origin, another port, or a * plaintext downgrade. @@ -547,7 +586,7 @@ export async function fetchWithinHost(url, init, fetchImpl = fetch) { } catch { return null; } - if (next.origin !== origin) return null; + if (next.origin !== origin || !withinPinnedPrefix(next)) return null; current = next; } return null; diff --git a/server/providers/cctv/normalize.js b/server/providers/cctv/normalize.js index 0f84fc3e1..dd1a84516 100644 --- a/server/providers/cctv/normalize.js +++ b/server/providers/cctv/normalize.js @@ -659,3 +659,36 @@ export function isLikelyTorontoCoordinate(lat, lon) { lon <= -79.1 ); } + +/** + * A camera URL under a pinned directory, by parsed URL rather than string + * prefix: the same scheme and exact host as `prefix`, no credentials, the + * default port, and a normalized path inside the prefix's directory. Dot + * segments (including encoded ones) are resolved before the path is compared, + * and an encoded slash or backslash is refused. + * + * @param {string} raw - Camera URL from a catalog or redirect. + * @param {string} prefix - Pinned origin and directory, ending in `/`. + * @returns {string|null} The normalized URL, or null when it is not pinned. + */ +export function pinnedCameraUrl(raw, prefix) { + let url; + let pin; + try { + url = new URL(String(raw ?? '').trim()); + pin = new URL(prefix); + } catch { + return null; + } + if ( + url.protocol !== pin.protocol || + url.hostname !== pin.hostname || + url.username || + url.password || + url.port || + !url.pathname.startsWith(pin.pathname) || + /%2f|%5c|\\/i.test(url.pathname) + ) + return null; + return url.href; +} diff --git a/server/providers/cctv/sources.js b/server/providers/cctv/sources.js index fbd9cb99d..114a91979 100644 --- a/server/providers/cctv/sources.js +++ b/server/providers/cctv/sources.js @@ -149,6 +149,7 @@ import { cameraDisplayCode, rowArrayToObject, prioritizeSources, + pinnedCameraUrl, } from './normalize.js'; import { directionToHeading } from '../../../src/data/directionText.js'; import { @@ -310,9 +311,12 @@ export async function loadCaltransSourcesFromOpenData() { const lon = toFiniteNumber(loc.longitude); if (!Number.isFinite(lat) || !Number.isFinite(lon)) continue; - const imageUrl = String(cctv.imageData?.static?.currentImageURL || ''); // Official-host pin (see JSDoc). Also drops records with no still image. - if (!imageUrl.startsWith('https://cwwp2.dot.ca.gov/')) continue; + const imageUrl = pinnedCameraUrl( + cctv.imageData?.static?.currentImageURL, + 'https://cwwp2.dot.ca.gov/', + ); + if (!imageUrl) continue; const locationName = String(loc.locationName || '').trim(); // Leading token of locationName is the stable camera code ("TV102 -- I-580 : …"). @@ -417,8 +421,8 @@ export async function loadTflSourcesFromOpenData() { const lat = toFiniteNumber(place?.lat); const lon = toFiniteNumber(place?.lon); if (!Number.isFinite(lat) || !Number.isFinite(lon)) continue; - const imageUrl = String(props.imageUrl || ''); - if (!imageUrl.startsWith(TFL_IMAGE_ORIGIN)) continue; // official-bucket pin + const imageUrl = pinnedCameraUrl(props.imageUrl, TFL_IMAGE_ORIGIN); + if (!imageUrl) continue; // official-bucket pin // "JamCams_00002.00865" → "tfl-00002.00865" (provider-stable id). const rawId = String(place?.id || '').replace(/^JamCams_/, ''); @@ -1127,13 +1131,15 @@ export function loadTallinnSourcesFromCatalog({ // Rough Estonia/Tallinn metro sanity (allows nearby suburbs already in the pack). if (lat < 59.2 || lat > 59.7 || lon < 24.3 || lon > 25.4) continue; - const imageUrl = + const imageUrl = pinnedCameraUrl( typeof item.url === 'string' - ? item.url.trim() + ? item.url : typeof item.snapshotUrl === 'string' - ? item.snapshotUrl.trim() - : ''; - if (!imageUrl.startsWith(TALLINN_IMAGE_ORIGIN)) continue; + ? item.snapshotUrl + : '', + TALLINN_IMAGE_ORIGIN, + ); + if (!imageUrl) continue; const extractedHeading = toFiniteNumber(item.headingDeg, NaN); const hasHeading = Number.isFinite(extractedHeading); @@ -1235,8 +1241,8 @@ export function parseTarkteeDatexImages(xml) { body, ); if (!refMatch || !urlMatch) continue; - const url = urlMatch[1].trim(); - if (!url.startsWith(TARKTEE_IMAGE_ORIGIN)) continue; + const url = pinnedCameraUrl(urlMatch[1], TARKTEE_IMAGE_ORIGIN); + if (!url) continue; out.set(refMatch[1], url); } return out; @@ -1422,14 +1428,16 @@ export function loadWarendorfSourcesFromCatalog({ for (const item of rows) { if (!item || typeof item !== 'object') continue; const id = typeof item.id === 'string' ? item.id.trim() : ''; - const url = + const raw = typeof item.url === 'string' - ? item.url.trim() + ? item.url : typeof item.snapshotUrl === 'string' - ? item.snapshotUrl.trim() + ? item.snapshotUrl : ''; - if (!id || !WARENDORF_IMAGE_ORIGINS.some((o) => url.startsWith(o))) - continue; + const url = WARENDORF_IMAGE_ORIGINS.map((o) => + pinnedCameraUrl(raw, o), + ).find(Boolean); + if (!id || !url) continue; const lat = typeof item.lat === 'number' ? item.lat : NaN; const lon = typeof item.lon === 'number' ? item.lon : NaN; if (!isPlausibleLatLon(lat, lon)) continue; @@ -1483,8 +1491,8 @@ export function nswCameraToSource(feature) { const lat = typeof coords?.[1] === 'number' ? coords[1] : NaN; if (!isLikelyNswCoordinate(lat, lon)) return null; const props = feature?.properties || {}; - const url = String(props.href || '').trim(); - if (!url.startsWith(NSW_IMAGE_ORIGIN)) return null; + const url = pinnedCameraUrl(props.href, NSW_IMAGE_ORIGIN); + if (!url) return null; // "N-E" -> "NE" for the compass lookup. const direction = String(props.direction || '') .trim() @@ -1578,8 +1586,7 @@ export function normalizeCalgaryImageUrl(raw) { } if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') return null; parsed.protocol = 'https:'; - const upgraded = parsed.toString(); - return upgraded.startsWith(CALGARY_IMAGE_ORIGIN) ? upgraded : null; + return pinnedCameraUrl(parsed.toString(), CALGARY_IMAGE_ORIGIN); } /** @@ -2085,8 +2092,7 @@ export function normalizeHkImageUrl(raw) { } if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') return null; parsed.protocol = 'https:'; - const upgraded = parsed.toString(); - return upgraded.startsWith(HK_IMAGE_ORIGIN) ? upgraded : null; + return pinnedCameraUrl(parsed.toString(), HK_IMAGE_ORIGIN); } /** @@ -2423,10 +2429,16 @@ export async function loadKingCountySourcesFromOpenData() { // county image origin, so they are skipped. if (owner === 'WSDOT') continue; // The handler is served over HTTPS; the feed still writes http://. - const imageUrl = String(attrs.ImageURL || '') - .trim() - .replace(/^http:\/\/info\.kingcounty\.gov\//, KING_COUNTY_IMAGE_ORIGIN); - if (!imageUrl.startsWith(KING_COUNTY_IMAGE_ORIGIN)) continue; + const imageUrl = pinnedCameraUrl( + String(attrs.ImageURL || '') + .trim() + .replace( + /^http:\/\/info\.kingcounty\.gov\//, + KING_COUNTY_IMAGE_ORIGIN, + ), + KING_COUNTY_IMAGE_ORIGIN, + ); + if (!imageUrl) continue; const [lon, lat] = Array.isArray(row?.geometry?.coordinates) ? row.geometry.coordinates : []; @@ -2586,8 +2598,8 @@ export async function loadWsdotSourcesFromOpenData() { const attrs = row?.attributes; const rawId = attrs?.CameraID; if (!Number.isSafeInteger(rawId) || rawId <= 0) continue; - const imageUrl = String(attrs.ImageURL || '').trim(); - if (!imageUrl.startsWith(WSDOT_IMAGE_ORIGIN)) continue; + const imageUrl = pinnedCameraUrl(attrs.ImageURL, WSDOT_IMAGE_ORIGIN); + if (!imageUrl) continue; const x = row?.geometry?.x; const y = row?.geometry?.y; if (!Number.isFinite(x) || !Number.isFinite(y)) continue; diff --git a/src/data/cctvSourcePins.test.mjs b/src/data/cctvSourcePins.test.mjs new file mode 100644 index 000000000..3ab2536d7 --- /dev/null +++ b/src/data/cctvSourcePins.test.mjs @@ -0,0 +1,106 @@ +// Camera catalogs are pinned to their agency's image directory. The pin is a +// parsed-URL check, not a string prefix, so a path that only starts with the +// directory before dot segments, an encoded separator, credentials or another +// port are resolved never counts as inside it, and a redirect on a pinned host +// cannot leave the directory either. +// +// Run with: npm test (node --test) +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { loadTflSourcesFromOpenData } from '../../server/providers/cctv/sources.js'; +import { fetchWithinHost } from '../../server/providers/cctv/media.js'; + +const BUCKET = 'https://s3-eu-west-1.amazonaws.com/jamcams.tfl.gov.uk/'; + +/** One available JamCam whose frame is at `imageUrl`. */ +const jamCam = (n, imageUrl) => ({ + id: `JamCams_00001.0000${n}`, + commonName: `JamCam ${n}`, + lat: 51.5072, + lon: -0.1276, + additionalProperties: [ + { key: 'available', value: 'true' }, + { key: 'imageUrl', value: imageUrl }, + ], +}); + +test('TfL JamCams keep only frames inside the official bucket, by parsed URL', async (t) => { + t.mock.method(console, 'log', () => {}); + t.mock.method(console, 'warn', () => {}); + const accepted = [ + [`${BUCKET}00001.00001.jpg`, `${BUCKET}00001.00001.jpg`], + [`${BUCKET}00001.00002.jpg?t=1`, `${BUCKET}00001.00002.jpg?t=1`], + [ + 'https://s3-eu-west-1.amazonaws.com:443/jamcams.tfl.gov.uk/00001.00003.jpg', + `${BUCKET}00001.00003.jpg`, + ], + ]; + const rejected = [ + `${BUCKET}../other/x.jpg`, + `${BUCKET}%2e%2e/other/x.jpg`, + `${BUCKET}%2E%2E/other/x.jpg`, + `${BUCKET}.%2e/other/x.jpg`, + `${BUCKET}..%2fother/x.jpg`, + `${BUCKET}..%5Cother/x.jpg`, + `${BUCKET}..\\other\\x.jpg`, + 'https://s3-eu-west-1.amazonaws.com/jamcams.tfl.gov.uk.other/x.jpg', + 'https://s3-eu-west-1.amazonaws.com/jamcams.tfl.gov.uk-other/x.jpg', + 'https://s3-eu-west-1.amazonaws.com/other/jamcams.tfl.gov.uk/x.jpg', + 'https://user:pass@s3-eu-west-1.amazonaws.com/jamcams.tfl.gov.uk/x.jpg', + 'https://s3-eu-west-1.amazonaws.com:8443/jamcams.tfl.gov.uk/x.jpg', + 'http://s3-eu-west-1.amazonaws.com/jamcams.tfl.gov.uk/x.jpg', + 'https://s3-eu-west-1.amazonaws.com.other.example/jamcams.tfl.gov.uk/x.jpg', + 'not a url', + ]; + t.mock.method(globalThis, 'fetch', async () => + Response.json( + [...accepted.map(([url]) => url), ...rejected].map((url, i) => + jamCam(i + 1, url), + ), + ), + ); + const cameras = await loadTflSourcesFromOpenData(); + assert.deepEqual( + cameras.map((camera) => camera.url), + accepted.map(([, normalized]) => normalized), + ); +}); + +test('a redirect on a pinned camera host stays inside the pinned directory', async () => { + const redirectTo = (location) => async (url) => + url === `${BUCKET}00001.00001.jpg` + ? new Response(null, { status: 302, headers: { location } }) + : new Response('frame', { headers: { 'content-type': 'image/jpeg' } }); + for (const location of [ + '/jamcams.tfl.gov.uk.other/x.jpg', + '/other/x.jpg', + '/jamcams.tfl.gov.uk/../other/x.jpg', + '/jamcams.tfl.gov.uk/%2e%2e/other/x.jpg', + '/jamcams.tfl.gov.uk/..%2fother/x.jpg', + ]) + assert.equal( + await fetchWithinHost( + `${BUCKET}00001.00001.jpg`, + {}, + redirectTo(location), + ), + null, + location, + ); + const followed = await fetchWithinHost( + `${BUCKET}00001.00001.jpg`, + {}, + redirectTo('/jamcams.tfl.gov.uk/00001.00002.jpg'), + ); + assert.equal(await followed.text(), 'frame'); + // A host with no pinned directory keeps the same-origin rule alone. + const unpinned = await fetchWithinHost( + 'https://cams.example/a/frame.jpg', + {}, + async (url) => + url === 'https://cams.example/a/frame.jpg' + ? new Response(null, { status: 302, headers: { location: '/b/x.jpg' } }) + : new Response('frame'), + ); + assert.equal(await unpinned.text(), 'frame'); +}); From d80162bea253ccc0f83d1150d4af321aa454c899 Mon Sep 17 00:00:00 2001 From: Sameh Khamis Date: Wed, 21 Oct 2026 15:33:13 -0700 Subject: [PATCH 32/36] Match API paths the way the router does The router mounts /api without regard to letter case, accepts a '.' as well as '/' after the prefix, and routes absolute-form request targets, so the API response headers were missing on those spellings. Match the same way, on both the raw and the parsed path. The test now runs real dev and preview servers. --- build/vite.js | 19 +++- docs/CURRENT-STATE.md | 11 +- src/tooling/viteBuild.test.mjs | 189 ++++++++++++++++----------------- 3 files changed, 113 insertions(+), 106 deletions(-) diff --git a/build/vite.js b/build/vite.js index b560e7921..5498a8010 100644 --- a/build/vite.js +++ b/build/vite.js @@ -60,10 +60,23 @@ export const API_HEADERS = Object.freeze({ 'X-Content-Type-Options': 'nosniff', }); -/** Whether a request path is an API route (`/api` or `/api/...`). */ +/** + * Whether a request reaches an `/api` mount, by the router's own rule: the + * prefix compared without case and followed by the end, `/` or `.`. Both the + * raw path and the parsed one (which also covers an absolute-form target) are + * checked, so no spelling the router mounts can miss the headers. + */ function isApiPath(url) { - const path = String(url || '/').split(/[?#]/, 1)[0]; - return path === '/api' || path.startsWith('/api/'); + const raw = String(url || '/'); + let parsed = ''; + try { + parsed = new URL(raw, 'http://localhost').pathname; + } catch { + /* the raw path still decides */ + } + return [raw.split(/[?#]/, 1)[0], parsed].some((path) => + /^\/api(?:$|[/.])/i.test(path), + ); } /** diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index efedf3508..fd1569338 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -33,11 +33,12 @@ existing recovery behavior. Every `/api` response on the dev and preview servers carries `Content-Security-Policy: default-src 'none'; sandbox` and `X-Content-Type-Options: nosniff`. `apiResponseHeadersPlugin` sets them ahead of -the Host check, so errors, partial responses, Host refusals and unknown routes -are covered too; a route's own policy is sent as an additional policy, never in -place of it. The app document's policy is unchanged. The GBFS proxy relays only -bodies that parse as JSON, re-serialized as `application/json; charset=utf-8`; -anything else answers 502. +the Host check and matches `/api` the way the router mounts it (any letter case, a +`/` or `.` boundary, absolute-form targets), so errors, partial responses, Host +refusals and unknown routes are covered too; a route's own policy is sent as an +additional policy, never in place of it. The app document's policy is unchanged. +The GBFS proxy relays only bodies that parse as JSON, re-serialized as +`application/json; charset=utf-8`; anything else answers 502. Catalog source contracts and their consuming layers are declared in `src/app/sourceComposition.js`. Omitted or null acquisition sources preserve layer diff --git a/src/tooling/viteBuild.test.mjs b/src/tooling/viteBuild.test.mjs index 655b819d0..dcb2910a6 100644 --- a/src/tooling/viteBuild.test.mjs +++ b/src/tooling/viteBuild.test.mjs @@ -1,11 +1,15 @@ import test from 'node:test'; import assert from 'node:assert/strict'; import { readFileSync } from 'node:fs'; -import { createServer, request } from 'node:http'; +import { rm, writeFile } from 'node:fs/promises'; +import { request } from 'node:http'; +import path from 'node:path'; +import { build, createServer, preview } from 'vite'; import { BROWSER_CSP, createBrowserViteConfig } from '../../build/vite.js'; import standaloneConfig, * as compatibility from '../../vite.config.js'; import * as providers from '../../server/providers/local.js'; import { apiNotFoundPlugin } from '../../server/standalone/api-not-found.js'; +import { makeFixtureRoot } from './fixtureRoot.mjs'; test('explicit build inputs preserve browser-only defines, plugin order and loopback protections', () => { const plugin = { name: 'fixture-provider' }; @@ -263,70 +267,39 @@ test('the CSP admits the event media embeds and the Maps JavaScript API, and no assert.ok(frames.includes('https://platform.twitter.com')); }); -/** - * Serve plugins' middleware over real HTTP the way Vite's connect stack mounts - * it: in plugin order, a route prefix stripped from `req.url`. A request no - * middleware answers gets the app document stand-in. - */ -async function servePlugins(t, plugins, hook, config) { - const stack = []; - const server = { - config, - middlewares: { - use(route, handler) { - if (typeof route === 'function') - stack.push({ route: '', handler: route }); - else stack.push({ route, handler }); +/** A raw GET, so the Host header and an absolute-form target are sent as given. */ +function rawGet(port, target, headers = {}) { + return new Promise((resolve, reject) => { + const req = request( + { + host: '127.0.0.1', + port, + path: target, + headers: { host: `localhost:${port}`, ...headers }, }, - }, - }; - for (const plugin of plugins) plugin[hook]?.(server); - const http = createServer((req, res) => { - const original = req.url; - const path = original.split('?')[0]; - let index = 0; - const next = () => { - const layer = stack[index++]; - if (!layer) { - res.writeHead(200, { 'Content-Type': 'text/html' }); - res.end('app'); - return; - } - if ( - layer.route && - path !== layer.route && - !path.startsWith(`${layer.route}/`) - ) - return next(); - req.url = original.slice(layer.route.length) || '/'; - layer.handler(req, res, next); - }; - next(); + (res) => { + res.resume(); + res.on('end', () => + resolve({ status: res.statusCode, headers: res.headers }), + ); + }, + ); + req.on('error', reject); + req.end(); }); - await new Promise((resolve) => http.listen(0, '127.0.0.1', resolve)); - t.after(() => new Promise((resolve) => http.close(resolve))); - const { port } = http.address(); - return (path, host = `localhost:${port}`) => - new Promise((resolve, reject) => { - const req = request( - { host: '127.0.0.1', port, path, headers: { host } }, - (res) => { - res.resume(); - res.on('end', () => - resolve({ status: res.statusCode, headers: res.headers }), - ); - }, - ); - req.on('error', reject); - req.end(); - }); } -test('every API response carries the API policy and nosniff in dev and preview', async (t) => { +test('every API response carries the API policy and nosniff on real dev and preview servers', async (t) => { const policy = "default-src 'none'; sandbox"; + const root = await makeFixtureRoot('gev-api-headers-'); + t.after(() => rm(root, { recursive: true, force: true })); + await writeFile( + path.join(root, 'index.html'), + 'Fixture

x

', + ); const install = (server) => { server.middlewares.use('/api/fixture', (req, res) => { - const route = req.url.split('?')[0]; + const route = new URL(req.url, 'http://localhost').pathname; if (route === '/ok') { res.writeHead(200, { 'Content-Type': 'application/json' }); res.end('{}'); @@ -352,47 +325,67 @@ test('every API response carries the API policy and nosniff in dev and preview', configurePreviewServer: install, }; const built = createBrowserViteConfig({ plugins: [fixture] }); - const plugins = [ - ...built.plugins.filter( - (plugin) => - plugin === fixture || - ['api-response-headers', 'host-check'].includes(plugin.name), - ), - apiNotFoundPlugin(), - ]; - const config = { - server: { - allowedHosts: built.server.allowedHosts, - host: built.server.host, - }, - preview: { allowedHosts: built.server.allowedHosts }, + const base = { + root, + configFile: false, + envFile: false, + publicDir: false, + logLevel: 'silent', }; - for (const hook of ['configureServer', 'configurePreviewServer']) { - const get = await servePlugins(t, plugins, hook, config); - for (const [path, status, csp = policy, host] of [ - ['/api/fixture/ok', 200], - ['/api/fixture/error', 500], - ['/api/fixture/partial', 206], - ['/api/nope', 404], - ['/api', 404], - ['/api/fixture/ok?x=1', 200], - ['/api/fixture/ok', 403, policy, 'elsewhere.example'], - // A route's own policy is added to the API policy, never replaces it. - ['/api/fixture/own-policy', 200, `${policy}, frame-ancestors 'none'`], - ['/api/fixture/own-policy-head', 200, `${policy}, default-src *`], - ]) { - const res = await get(path, host); - const label = `${hook} ${path} ${host || ''}`; - assert.equal(res.status, status, label); - assert.equal(res.headers['content-security-policy'], csp, label); - assert.equal(res.headers['x-content-type-options'], 'nosniff', label); + await build(base); + for (const isPreview of [false, true]) { + const server = await (isPreview ? preview : createServer)({ + ...base, + plugins: [ + ...built.plugins.filter( + (plugin) => + plugin === fixture || + ['api-response-headers', 'host-check'].includes(plugin.name), + ), + apiNotFoundPlugin(), + ], + server: { host: '127.0.0.1', port: 0, hmr: false }, + preview: { host: '127.0.0.1', port: 0 }, + }); + if (!isPreview) await server.listen(); + const { port } = server.httpServer.address(); + const mode = isPreview ? 'preview' : 'dev'; + try { + for (const [target, status, csp = policy, headers] of [ + ['/api/fixture/ok', 200], + ['/api/fixture/error', 500], + ['/api/fixture/partial', 206], + ['/api/nope', 404], + ['/api', 404], + ['/api/fixture/ok?x=1', 200], + // Spellings the router mounts as the same routes. + ['/API/fixture/ok', 200], + ['/Api/fixture/error', 500], + ['/aPi/nope', 404], + ['/API', 404], + ['/api.x', 404], + [`http://localhost:${port}/api/fixture/ok`, 200], + [`http://localhost:${port}/API/nope`, 404], + ['/api/fixture/ok', 403, policy, { host: 'elsewhere.example' }], + // A route's own policy is added to the API policy, never replaces it. + ['/api/fixture/own-policy', 200, `${policy}, frame-ancestors 'none'`], + ['/api/fixture/own-policy-head', 200, `${policy}, default-src *`], + ]) { + const res = await rawGet(port, target, headers); + const label = `${mode} ${target} ${JSON.stringify(headers || {})}`; + assert.equal(res.status, status, label); + assert.equal(res.headers['content-security-policy'], csp, label); + assert.equal(res.headers['x-content-type-options'], 'nosniff', label); + } + // The app document and other paths keep the server's own headers. + for (const target of ['/', '/apiary', '/src/api/x.js']) + assert.notEqual( + (await rawGet(port, target)).headers['content-security-policy'], + policy, + `${mode} ${target}`, + ); + } finally { + await server.close(); } - // The app document and other paths are left to the server's own headers. - for (const path of ['/', '/apiary', '/src/api/x.js']) - assert.equal( - (await get(path)).headers['content-security-policy'], - undefined, - `${hook} ${path}`, - ); } }); From b1ed77c26ce59090996cba42d6307e686fd34158 Mon Sep 17 00:00:00 2001 From: Sameh Khamis Date: Wed, 21 Oct 2026 15:33:14 -0700 Subject: [PATCH 33/36] Keep camera routes reachable behind a reverse proxy The CCTV routes now use the keyless cross-site checks, which refuse cross-site browser requests but accept forwarding headers, so cameras work behind the documented reverse proxy. The Street View fallback is the one step that spends a key; a request with forwarding headers skips it and gets the placeholder frame, as when no key is configured. --- SECURITY.md | 4 +- docs/CURRENT-STATE.md | 4 +- server/providers/cctv.js | 28 ++++++++----- src/data/cctvMediaFeedType.test.mjs | 63 ++++++++++++++++++++++++++--- 4 files changed, 81 insertions(+), 18 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 9d4feb6d8..708bb1583 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -69,13 +69,13 @@ The data proxies under `server/providers/` are written so the browser cannot tur - **No verbatim client headers upstream.** The CCTV media route is the one route that relays a request header (`Range`, for video seeking). It is parsed and canonicalized before it is forwarded: one `bytes=` range only, with every accepted form — explicit span, open-ended and suffix — bounded to the same 64 MiB ceiling the relay applies to a declared response body. Multi-range, malformed, inverted and non-`bytes` values are dropped and the request proceeds without a `Range`, as RFC 7233 §3.1 prescribes. Bounding the request bounds what is asked for: a response that declares no length — live streamed media, or a chunked body from an upstream that ignores the `Range` — has no ceiling. An upstream request the browser has stopped waiting for is cancelled rather than left running, whether the viewer leaves before the headers arrive or during the body. - **Transit fetches registered feeds only.** `/api/transit/vehicles/` resolves the id against `src/data/transitFeeds.js`; the browser never supplies a URL, and a feed that is registered but disabled does not resolve at all. Redirects are followed manually and each hop is validated against the feed's own https origin before it is requested, so an off-origin or downgraded hop is refused rather than contacted. Bodies are capped at 8 MB, the protobuf is decoded server-side under entity-count and string-length ceilings, a differential feed is refused, and snapshots live 15 s in memory with no disk cache. A per-feed admission limiter and a failure cooldown ladder bound what this process can ask of any operator. - **Local receiver feeds are operator-configured and local-only.** `/api/local-receivers/aircraft` reads only the `aircraft.json` URLs in the server's `LOCAL_RECEIVER_FEEDS`; the browser never supplies an address. Each host must pass the shared tap address rule (`src/data/tapAddress.js`: loopback, RFC1918, `localhost`, `*.local`; no link-local, IPv6 or other names), the scheme must be http(s), the path must end in `aircraft.json`, and credentials, queries and fragments are refused. Invalid entries are logged at startup and never fetched. Reads use a 2 s timeout, refuse redirects, cap bodies at 2 MB and share one read per second; responses name each feed by band only and never carry upstream error text. -- **Validated response formats.** Proxied bodies are relayed only in the format the route serves. CCTV frames and the Street View fallback accept JPEG, PNG, GIF, WebP and AVIF only, sent under their canonical type; any other type falls through to the next fallback. Live CCTV media must match its feed kind (`video/mp4`, `video/webm`, or `multipart/x-mixed-replace` with a boundary) before it is relayed or the camera counts as healthy, and its redirects stay on the registered origin. GBFS bodies must parse as JSON and are re-serialized as `application/json; charset=utf-8`. Camera catalog URLs are pinned by parsed URL — scheme, exact host, no credentials, default port, and a normalized path inside the agency's image directory — and a redirect on a pinned host must stay inside the same directory. Every `/api/cctv` route uses the cross-site gate below. +- **Validated response formats.** Proxied bodies are relayed only in the format the route serves. CCTV frames and the Street View fallback accept JPEG, PNG, GIF, WebP and AVIF only, sent under their canonical type; any other type falls through to the next fallback. Live CCTV media must match its feed kind (`video/mp4`, `video/webm`, or `multipart/x-mixed-replace` with a boundary) before it is relayed or the camera counts as healthy, and its redirects stay on the registered origin. GBFS bodies must parse as JSON and are re-serialized as `application/json; charset=utf-8`. Camera catalog URLs are pinned by parsed URL — scheme, exact host, no credentials, default port, and a normalized path inside the agency's image directory — and a redirect on a pinned host must stay inside the same directory. Every `/api/cctv` route uses the keyless cross-site checks described below, so cameras stay reachable behind a reverse proxy; a request carrying forwarding headers never reaches the key-bearing Street View fallback and gets the placeholder frame instead, as when no key is configured. - **Consistent API response headers.** Every `/api` response, including errors, partial content, Host refusals and unknown routes, carries `Content-Security-Policy: default-src 'none'; sandbox` and `X-Content-Type-Options: nosniff` (`apiResponseHeadersPlugin` in `build/vite.js`, installed ahead of the Host check). A route that sets its own policy adds it as a further policy; it never replaces this one. - **Response-size caps and timeouts** on proxied responses. - **Sanitized errors** — internal error details are not echoed back to clients. - **Coalesced OAuth refresh** and cached successful responses only (OpenSky). - **Redacted debug logging.** The voice debug log (`.gev-logs/`, gitignored) strips API keys, bearer tokens, client secrets, and image data URLs before writing. -- **Cross-site gate on cost/log endpoints.** The cost-bearing (`/api/realtime/token`, `/api/openai/hud-summary`, `/api/google/nearby-places`, `/api/google/text-search`), quota-bearing (`/api/mapillary/*`, with a per-IP limit on tiles, and `/api/tomtom/*`, backed by its persistent daily tile budget) and log (`/api/realtime/debug-log`) endpoints refuse cross-site browser requests: a foreign or opaque `Origin`, a `Sec-Fetch-Site` other than `same-origin`/`none` (this is what blocks an ``/navigation that carries no `Origin`), or any reverse-proxy/CDN forwarding header returns `403`. Non-browser loopback tools (the repo QA harnesses POST the token endpoint with no `Origin`) and the explicit `HOST=0.0.0.0` LAN opt-in keep working — the gate deliberately does not require a loopback remote address; that stricter requirement belongs only to the credential panel (`admitKeySetupRequest`). The Host check (`allowedHosts`, applied by `hostCheckPlugin` ahead of every route, since Vite's own check runs only after plugin middleware) rejects a rebinding `Host` before any handler runs, in every mode, and the gate is defense in depth behind it: the LAN opt-in keeps that check and accepts only IP addresses, `localhost` and names listed in `GEV_ALLOWED_HOSTS`. **Limit:** a name you list there is trusted like the app's own address, so list only names you control. The keyless terrain route (`/api/terrain/heights`) uses the same cross-site checks, minus the forwarding-header refusal: it guards only the per-client quota and point cache, not a key or a bill, and the map needs it to render behind a reverse proxy. +- **Cross-site gate on cost/log endpoints.** The cost-bearing (`/api/realtime/token`, `/api/openai/hud-summary`, `/api/google/nearby-places`, `/api/google/text-search`), quota-bearing (`/api/mapillary/*`, with a per-IP limit on tiles, and `/api/tomtom/*`, backed by its persistent daily tile budget) and log (`/api/realtime/debug-log`) endpoints refuse cross-site browser requests: a foreign or opaque `Origin`, a `Sec-Fetch-Site` other than `same-origin`/`none` (this is what blocks an ``/navigation that carries no `Origin`), or any reverse-proxy/CDN forwarding header returns `403`. Non-browser loopback tools (the repo QA harnesses POST the token endpoint with no `Origin`) and the explicit `HOST=0.0.0.0` LAN opt-in keep working — the gate deliberately does not require a loopback remote address; that stricter requirement belongs only to the credential panel (`admitKeySetupRequest`). The Host check (`allowedHosts`, applied by `hostCheckPlugin` ahead of every route, since Vite's own check runs only after plugin middleware) rejects a rebinding `Host` before any handler runs, in every mode, and the gate is defense in depth behind it: the LAN opt-in keeps that check and accepts only IP addresses, `localhost` and names listed in `GEV_ALLOWED_HOSTS`. **Limit:** a name you list there is trusted like the app's own address, so list only names you control. The keyless terrain route (`/api/terrain/heights`) uses the same cross-site checks, minus the forwarding-header refusal: it guards only the per-client quota and point cache, not a key or a bill, and the map needs it to render behind a reverse proxy. The CCTV routes (`/api/cctv/*`) use the same keyless checks; their one key-bearing step, the Street View fallback, is skipped for any request with forwarding headers. - **Full Content-Security-Policy.** The dev and preview servers send a real CSP (`script-src 'self' 'unsafe-eval' blob:` plus the YouTube, Facebook and X scripts the Nepal event's embedded media loads and the Maps JavaScript API that Street View runs on, with a matching `frame-src` for their players and posts: no inline script and no other script origin; `blob:` covers the object URLs Cesium's bundled workers bootstrap through in the built app), alongside the existing `X-Frame-Options: DENY` and `frame-ancestors 'none'`. `'unsafe-eval'` stays because Knockout, bundled inside Cesium's widgets package, resolves the global object with `eval` at load time and the globe does not initialize without it; styles permit `'unsafe-inline'` and Google Fonts because Vite's dev client injects `

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