From 470ba755e6fd3c6b6a6884c527d59ebd394697c9 Mon Sep 17 00:00:00 2001 From: Daniel Joaquin Trujillo <54636507+danieljtrujillo@users.noreply.github.com> Date: Sun, 30 Aug 2026 08:57:37 -0700 Subject: [PATCH 1/2] Embedded build: the cockpit runs inside a host app over http A second build target, dist-embed/, serves the same cockpit from a host application (theDAW's SWAY tab) while the desktop app stays untouched. `npm run build:renderer:embed` bundles src/renderer/embed.js, which installs a browser bridge before app.js runs; every window.swaycommand call site works unchanged. The embed differs from dist/ in four ways only: the entry point, a for the host's mount path, a CSP without the Electron-only frame-src gan:, and templates/docs copied in because there is no main process to read them off disk. The host channel (src/renderer/host/host-channel.js) relays MIDI bytes, audio analysis and tab visibility over postMessage. Windows lets one process hold a MIDI input, so embedded mode never opens the hardware itself; relayed bytes go through the same decode path as the wire. Host analysis frames enter audio.js as the raw read and fall through the same AGC, smoothing and beat detection, decaying back to the local analyser after 500 ms of silence. Three boot fixes found on the way: - requestMIDIAccess() never settles until Chromium's permission prompt is answered. Awaiting it bare left the blast door locked with #boot-status frozen and nothing logged. Bounded to 3 s in midi.js, 6 s per check in runDoctor(), with a late grant still picked up by onstatechange. - `available` reported false in relayed mode, so the splash said WebMIDI was unavailable while relayed MIDI was audibly playing. - The AudioContext built at boot starts suspended under autoplay policy. The ENTER click resumes it; without that the analyser read silence and every scene rendered flat. Plugin postMessage now checks e.source against the gan frame's contentWindow. Embedded, this window has a parent and siblings that can also post to it. --- .gitignore | 3 + package.json | 4 +- scripts/build-renderer.js | 191 ++++++++++-- src/renderer/app.js | 52 +++- src/renderer/embed.js | 8 + src/renderer/engine/audio.js | 17 +- src/renderer/host/bridge.js | 30 ++ src/renderer/host/browser-bridge.js | 455 ++++++++++++++++++++++++++++ src/renderer/host/host-channel.js | 150 +++++++++ src/renderer/midi/midi.js | 45 ++- 10 files changed, 924 insertions(+), 31 deletions(-) create mode 100644 src/renderer/embed.js create mode 100644 src/renderer/host/bridge.js create mode 100644 src/renderer/host/browser-bridge.js create mode 100644 src/renderer/host/host-channel.js diff --git a/.gitignore b/.gitignore index 10fde12..c4c5733 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ build/icon.png # tooling scratch .playwright-mcp/ + +# Embedded build consumed by a host app (npm run build:renderer:embed) +dist-embed/ diff --git a/package.json b/package.json index 72603d6..5fe0452 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,9 @@ "start": "npm run build:renderer && electron .", "dist:win": "npm run build:icon && npm run build:renderer && electron-builder --win", "dist:mac": "npm run build:icon && npm run build:renderer && electron-builder --mac", - "dist:linux": "npm run build:icon && npm run build:renderer && electron-builder --linux" + "dist:linux": "npm run build:icon && npm run build:renderer && electron-builder --linux", + "build:renderer:embed": "node scripts/build-renderer.js --embed --base=/sway-app/", + "build:all": "npm run build:renderer && npm run build:renderer:embed" }, "devDependencies": { "electron": "^43.4.1", diff --git a/scripts/build-renderer.js b/scripts/build-renderer.js index 68a68f8..6f0ef36 100644 --- a/scripts/build-renderer.js +++ b/scripts/build-renderer.js @@ -1,44 +1,201 @@ -// Bundle the renderer (app.js + three.js) into dist/ and copy static files. +// Bundle the renderer into dist/ (the Electron app) or dist-embed/ (a static +// bundle a host application serves over http) and copy the static files each +// one needs. +// +// node scripts/build-renderer.js -> dist/ +// node scripts/build-renderer.js --embed --base=/sway-app/ -> dist-embed/ +// +// The embed target exists so the same cockpit can run inside theDAW while +// SwayCommand stays a standalone desktop application. It differs from the +// desktop bundle in four ways and no others: +// +// - entry point src/renderer/embed.js, which installs the browser bridge +// (src/renderer/host/) before app.js runs. app.js itself is untouched. +// - a so every relative asset resolves under the host's mount +// path rather than the host's root. +// - a CSP without `frame-src gan:` (an Electron-only scheme) so plugin +// surfaces served over http still frame. +// - templates, docs and a prebuilt docs index copied in, because there is no +// main process to read them off disk. +// +// dist-embed/ is deliberately NOT under dist/: electron-builder packs +// `dist/**/*` into the asar, and a nested copy would ship the embed bundle +// inside the desktop app for no reason. 'use strict'; const path = require('node:path'); const fs = require('node:fs'); +const { execFileSync } = require('node:child_process'); const esbuild = require('esbuild'); const root = path.join(__dirname, '..'); -const dist = path.join(root, 'dist'); + +const argv = process.argv.slice(2); +const EMBED = argv.includes('--embed'); +const baseArg = argv.find((a) => a.startsWith('--base=')); +const BASE = baseArg ? baseArg.slice('--base='.length) : '/'; + +const outDir = path.join(root, EMBED ? 'dist-embed' : 'dist'); + +/** Documents the in-app viewer offers, in order. Mirrors DOC_ORDER in main.js. */ +const DOC_ORDER = [ + 'README.md', + 'docs/INDEX.md', + 'docs/OVERVIEW.md', + 'docs/INSTALLATION.md', + 'docs/DOCTOR.md', + 'docs/STUDIO.md', + 'docs/SYNTH.md', + 'docs/TROUBLESHOOTING.md', + 'docs/ARCHITECTURE.md', + 'docs/ENGINE.md', + 'docs/SCENE_CONTRACT.md', + 'docs/PROJECTS.md', + 'docs/MIDI.md', + 'docs/AUDIO.md', + 'docs/SWAY_INTEGRATION.md', + 'docs/BUILD.md', + 'docs/ENVIRONMENT.md', + 'docs/RESEARCH.md', +]; + +function copyDir(src, dst) { + if (!fs.existsSync(src)) return; + fs.mkdirSync(dst, { recursive: true }); + for (const entry of fs.readdirSync(src, { withFileTypes: true })) { + const from = path.join(src, entry.name); + const to = path.join(dst, entry.name); + if (entry.isDirectory()) copyDir(from, to); + else fs.copyFileSync(from, to); + } +} + +/** Package identity, stamped into the bundle and into build.json. */ +function buildInfo() { + const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8')); + let sha = 'unknown'; + try { + sha = execFileSync('git', ['rev-parse', 'HEAD'], { cwd: root }).toString().trim(); + } catch { + /* not a git checkout */ + } + return { + name: pkg.productName || pkg.name, + version: pkg.version, + sha, + builtAt: new Date().toISOString(), + }; +} + +/** The embed's index.html: base href, and a CSP without Electron-only schemes. */ +function embedHtml(html, info) { + let out = html; + + // Every asset load is relative, so one repoints the whole document at + // the host's mount path. Without it the AudioWorklet and the fonts resolve + // against the host's root and 404. + out = out.replace(//i, `\n `); + + // gan: is an Electron custom scheme; over http a plugin surface is a normal + // same-origin URL. + out = out.replace(/frame-src gan:/, "frame-src 'self'"); + + // The embed entry replaces the desktop bundle. + out = out.replace('./renderer.bundle.js', './embed.bundle.js'); + + // A marker for support and for the host's version display. + out = out.replace( + /<\/head>/i, + ` \n`, + ); + return out; +} async function main() { - fs.mkdirSync(dist, { recursive: true }); + fs.rmSync(outDir, { recursive: true, force: true }); + fs.mkdirSync(outDir, { recursive: true }); + const info = buildInfo(); await esbuild.build({ - entryPoints: [path.join(root, 'src', 'renderer', 'app.js')], + entryPoints: [path.join(root, 'src', 'renderer', EMBED ? 'embed.js' : 'app.js')], bundle: true, format: 'iife', platform: 'browser', target: 'chrome140', - outfile: path.join(dist, 'renderer.bundle.js'), - minify: false, + outfile: path.join(outDir, EMBED ? 'embed.bundle.js' : 'renderer.bundle.js'), + minify: EMBED, sourcemap: false, logLevel: 'info', + // Keep the third-party notices esbuild would otherwise drop; the bundle + // carries Apache-2.0 and MIT derived work. + legalComments: 'eof', + define: { + // Build identity, read by the browser bridge's info(). Defined for BOTH + // targets: esbuild does not fail a build on a missing define, it emits + // the bare identifier and the page throws ReferenceError at runtime. + __SWAY_EMBED_BUILD__: JSON.stringify(info), + }, }); - for (const f of ['index.html', 'styles.css']) { - fs.copyFileSync(path.join(root, 'src', 'renderer', f), path.join(dist, f)); - } + const rendererDir = path.join(root, 'src', 'renderer'); + const html = fs.readFileSync(path.join(rendererDir, 'index.html'), 'utf8'); + fs.writeFileSync( + path.join(outDir, 'index.html'), + EMBED ? embedHtml(html, info) : html, + 'utf8', + ); + fs.copyFileSync(path.join(rendererDir, 'styles.css'), path.join(outDir, 'styles.css')); + // The AudioWorklet module loads by URL beside the bundle (CSP: self only). - fs.copyFileSync(path.join(root, 'src', 'renderer', 'audio', 'dsp.worklet.js'), path.join(dist, 'dsp.worklet.js')); + fs.copyFileSync( + path.join(rendererDir, 'audio', 'dsp.worklet.js'), + path.join(outDir, 'dsp.worklet.js'), + ); + // Bundled display font — the CSP has no font-src, so remote fonts cannot load. - const fontsSrc = path.join(root, 'src', 'renderer', 'fonts'); - if (fs.existsSync(fontsSrc)) { - const fontsDist = path.join(dist, 'fonts'); - fs.mkdirSync(fontsDist, { recursive: true }); - for (const f of fs.readdirSync(fontsSrc)) { - fs.copyFileSync(path.join(fontsSrc, f), path.join(fontsDist, f)); + copyDir(path.join(rendererDir, 'fonts'), path.join(outDir, 'fonts')); + + if (EMBED) { + // No main process over http, so what it used to read off disk ships inside + // the bundle directory instead. + copyDir(path.join(root, 'projects', 'templates'), path.join(outDir, 'templates')); + + const docsOut = path.join(outDir, 'docs'); + const index = []; + for (const rel of DOC_ORDER) { + const abs = path.join(root, rel); + if (!fs.existsSync(abs)) continue; + const dest = path.join(docsOut, rel); + fs.mkdirSync(path.dirname(dest), { recursive: true }); + fs.copyFileSync(abs, dest); + let title = path.basename(rel, '.md'); + const head = fs.readFileSync(abs, 'utf8').slice(0, 4096); + const m = /^#\s+(.+)$/m.exec(head); + if (m) title = m[1].trim(); + index.push({ id: rel, title }); + } + fs.writeFileSync( + path.join(outDir, 'docs-index.json'), + `${JSON.stringify(index, null, 2)}\n`, + 'utf8', + ); + + for (const f of ['LICENSE', 'THIRD-PARTY-NOTICES.md']) { + const abs = path.join(root, f); + if (fs.existsSync(abs)) fs.copyFileSync(abs, path.join(outDir, f)); } + + // Provenance, so a stale artifact in the host reads as a version rather + // than a mystery cockpit that is missing a scene. + fs.writeFileSync( + path.join(outDir, 'build.json'), + `${JSON.stringify({ ...info, base: BASE, target: 'embed' }, null, 2)}\n`, + 'utf8', + ); } - console.log('[build] renderer bundled to dist/'); + + console.log(`[build] renderer bundled to ${path.relative(root, outDir)}/`); } main().catch((err) => { diff --git a/src/renderer/app.js b/src/renderer/app.js index da86071..c9b1a38 100644 --- a/src/renderer/app.js +++ b/src/renderer/app.js @@ -183,11 +183,44 @@ async function rendererChecks() { return checks; } +// A check that throws or never settles must not lock the blast door. Measured: +// navigator.requestMIDIAccess() inside rendererChecks() does not settle until +// the user answers Chromium's permission prompt, so awaiting it bare left +// #btn-enter disabled - it ships disabled in index.html - with #boot-status +// frozen on 'Checking your system' and nothing logged. That reads as a dead +// application. doctor.run() has the same exposure on the desktop, where it +// shells out to pnputil / Get-PnpDevice / lsusb. +function settleCheck(promise, fallback, label) { + const guard = new Promise((resolve) => { + setTimeout(() => resolve({ __timedOut: true }), 6000); + }); + return Promise.race([ + Promise.resolve(promise).catch((err) => { + console.warn(`[doctor] ${label} check failed:`, err); + return fallback; + }), + guard, + ]).then((value) => { + if (value && value.__timedOut) { + console.warn(`[doctor] ${label} check timed out after 6s`); + return fallback; + } + return value; + }); +} + async function runDoctor() { $('#boot-status').textContent = 'Checking your system…'; - const [main, local] = await Promise.all([window.swaycommand.doctor.run(), rendererChecks()]); - state.checks = [...main, ...local]; - renderChecks(); + const [main, local] = await Promise.all([ + settleCheck(window.swaycommand.doctor.run(), [], 'system'), + settleCheck(rendererChecks(), [], 'renderer'), + ]); + state.checks = [...(main || []), ...(local || [])]; + try { + renderChecks(); + } catch (err) { + console.warn('[doctor] renderChecks failed:', err); + } const worst = state.checks.some((c) => c.status === 'fail') ? 'fail' @@ -258,6 +291,14 @@ function enterCockpit() { closeModal('system'); if (state.entered) return; state.entered = true; + // createAudioEngine() builds its AudioContext at boot, which autoplay policy + // starts suspended (measured: repeated 'AudioContext was not allowed to + // start' warnings). This click is the one user gesture guaranteed to have + // happened, so resume here or the analyser reads silence and every scene + // renders flat. + if (state.audio && typeof state.audio.resume === 'function') { + Promise.resolve(state.audio.resume()).catch(() => {}); + } const door = $('#door'); door.classList.add('open'); setTimeout(() => door.classList.add('gone'), 1000); @@ -1365,6 +1406,11 @@ function wirePlugins() { // source (gan::[:axis]) and touches the assignment rail. let lastTouch = ''; window.addEventListener('message', (e) => { + // Only the plugin surface may drive plugin routes. Embedded, this window + // has a parent and siblings that can also post to it, so identify the + // sender rather than trusting any message that looks right. + const ganFrame = $('#gan-frame'); + if (!ganFrame || e.source !== ganFrame.contentWindow) return; const d = e.data; if (!d || d.type !== 'updateValue' || !plugins.activeId || typeof d.id !== 'string') return; const base = `gan:${plugins.activeId}:${d.id}`; diff --git a/src/renderer/embed.js b/src/renderer/embed.js new file mode 100644 index 0000000..5327ed2 --- /dev/null +++ b/src/renderer/embed.js @@ -0,0 +1,8 @@ +// Entry point for the embedded build (dist-embed), served over http by a host +// application instead of loaded from Electron. +// +// The only difference from the desktop entry is that the host bridge is +// installed first. app.js itself is imported unchanged, and every one of its +// window.swaycommand call sites works exactly as it does on the desktop. +import './host/bridge.js'; +import './app.js'; diff --git a/src/renderer/engine/audio.js b/src/renderer/engine/audio.js index cbca0e9..bdef0e9 100644 --- a/src/renderer/engine/audio.js +++ b/src/renderer/engine/audio.js @@ -1,4 +1,5 @@ // Audio analysis — WebAudio FFT split into smoothed bands with slow auto-gain +import { hostAudio } from '../host/host-channel.js'; // and a bass-onset beat detector (the Lasp/Akvj role in web form). // // "Just works" guarantee: if no microphone/line-in is available or permission @@ -186,11 +187,17 @@ export async function createAudioEngine() { } function update(dt) { - analyser.getByteFrequencyData(freqData); - - const rawBass = bandAvg(RANGES.bass); - const rawMid = bandAvg(RANGES.mid); - const rawHigh = bandAvg(RANGES.high); + // Embedded with the host as the source: theDAW analyses its own master and + // posts bands here. Treat them as the raw read and fall through to the same + // AGC, smoothing and beat detection, so nothing downstream can tell the + // difference. A stale frame (host paused, tab hidden) decays to the local + // analyser rather than freezing the visuals on the last value. + const hostFresh = hostAudio.active && performance.now() - hostAudio.t < 500; + if (!hostFresh) analyser.getByteFrequencyData(freqData); + + const rawBass = hostFresh ? hostAudio.bass : bandAvg(RANGES.bass); + const rawMid = hostFresh ? hostAudio.mid : bandAvg(RANGES.mid); + const rawHigh = hostFresh ? hostAudio.high : bandAvg(RANGES.high); const rawLevel = rawBass * 0.5 + rawMid * 0.35 + rawHigh * 0.15; // slow AGC so quiet rooms and loud rigs both land in 0..1 diff --git a/src/renderer/host/bridge.js b/src/renderer/host/bridge.js new file mode 100644 index 0000000..30e91fc --- /dev/null +++ b/src/renderer/host/bridge.js @@ -0,0 +1,30 @@ +// Decide, once and for all, which `window.swaycommand` the cockpit talks to. +// +// This module is imported FIRST by src/renderer/embed.js, ahead of app.js, and +// its only job is a top-level side effect. esbuild emits imported modules in +// dependency order and evaluates them before the importer's own body, so by the +// time app.js's `main()` is even defined the decision is made. That matters: +// main()'s first statement is `await window.swaycommand.info()`. +// +// The discriminator is the PRESENCE of window.swaycommand and nothing else. +// In Electron, preload.js installs the real contextBridge object at +// document-start, so this file is a no-op there and the desktop app is +// completely untouched. Served over http -- theDAW's SWAY tab, or any plain +// browser -- there is no preload, so the browser adapter stands in. +// +// Do NOT sniff `window.parent !== window`: SwayCommand may legitimately be +// framed inside its own shell. Do NOT sniff the user agent: Electron's UA +// contains "Chrome". + +import { createBrowserBridge } from './browser-bridge.js'; +import { installHostChannel } from './host-channel.js'; + +export const NATIVE = typeof window.swaycommand !== 'undefined'; + +if (!NATIVE) { + window.swaycommand = createBrowserBridge(); + // The embedding host (theDAW) relays MIDI, audio analysis and visibility over + // postMessage. Installed here, before app.js runs, so no frame is missed + // during boot. + installHostChannel(); +} diff --git a/src/renderer/host/browser-bridge.js b/src/renderer/host/browser-bridge.js new file mode 100644 index 0000000..18fa7c8 --- /dev/null +++ b/src/renderer/host/browser-bridge.js @@ -0,0 +1,455 @@ +// The browser implementation of the `window.swaycommand` surface. +// +// In Electron, preload.js installs that object at document-start over +// contextBridge. When the cockpit is served over http instead -- theDAW embeds +// it in an iframe at /sway-app/ -- there is no preload and no ipcRenderer, so +// this stands in with the same 8 namespaces and the same method signatures. +// Not one of the ~42 call sites in the renderer changes. +// +// Two rules govern everything below. +// +// 1. NOTHING MAY REJECT. app.js ends with `main().catch(err => document.body +// .innerHTML = )`, and main() awaits this bridge about a +// dozen times. One rejected promise replaces the entire cockpit with a +// stack dump inside theDAW's tab. Every method resolves, degraded if it +// must, and reports trouble through its return shape. +// +// 2. Shapes are copied from src/main/*, not invented. `project.readTemplate` +// returning `{doc, path, dir, warnings}` and `docs.list` returning +// `[{id, title}]` are contracts the UI already destructures. +// +// Capabilities that genuinely need a desktop process -- USB enumeration, the +// DFU driver installer, WASAPI loopback -- report themselves unsupported here +// rather than pretending. The desktop app remains the place for those. + +const BUILD = typeof __SWAY_EMBED_BUILD__ !== 'undefined' ? __SWAY_EMBED_BUILD__ : {}; + +const SETTINGS_KEY = 'sway:settings'; +const RECENTS_KEY = 'sway:recents'; +const PROJECTS_KEY = 'sway:projects'; + +/** Files handed to us by a picker or a drop, addressed by a synthetic path. */ +const fileRegistry = new Map(); +let fileSeq = 0; + +/** theDAW's API origin. Same-origin by construction, so a bare path works. */ +const api = (path) => path; + +/** Fetch JSON from theDAW, resolving to null instead of throwing. */ +async function apiJson(path, init) { + try { + const res = await fetch(api(path), init); + if (!res.ok) return null; + return await res.json(); + } catch { + return null; + } +} + +function readJson(key, fallback) { + try { + const raw = localStorage.getItem(key); + if (!raw) return fallback; + const parsed = JSON.parse(raw); + return parsed == null ? fallback : parsed; + } catch { + // A private window, cleared site data, or a browser blocking storage. + return fallback; + } +} + +function writeJson(key, value) { + try { + localStorage.setItem(key, JSON.stringify(value)); + return true; + } catch { + return false; + } +} + +// --- settings --------------------------------------------------------------- +// Mirrors main.js's readSettings/writeSettings, including its shallow-merge +// semantics: writeSettings(patch) merges and returns the whole object. + +function readSettings() { + return readJson(SETTINGS_KEY, {}); +} + +function writeSettings(patch) { + const next = { ...readSettings(), ...(patch || {}) }; + writeJson(SETTINGS_KEY, next); + return next; +} + +// --- templates and docs ----------------------------------------------------- +// Both ship inside the embed bundle, so they need no backend at all. The build +// copies projects/templates/ and the DOC_ORDER markdown into dist-embed/, plus +// a prebuilt docs-index.json so listing costs one request. + +async function fetchStatic(relPath) { + // Relative to the document base (), so this works + // under any mount point without knowing it. + const res = await fetch(`./${relPath}`); + if (!res.ok) throw new Error(`${relPath}: HTTP ${res.status}`); + return res; +} + +async function templateIndex() { + try { + const res = await fetchStatic('templates/index.json'); + const idx = await res.json(); + return Array.isArray(idx.order) ? idx.order : []; + } catch { + return []; + } +} + +async function listTemplates() { + const order = await templateIndex(); + const out = []; + for (const id of order) { + try { + const res = await fetchStatic(`templates/${id}.sway`); + const doc = await res.json(); + const meta = (doc.project && doc.project.meta) || {}; + out.push({ + id, + name: meta.name || id, + description: meta.description || '', + vibe: meta.vibe || '', + bpmHint: meta.bpmHint || 0, + palette: (doc.project && doc.project.palette) || [], + }); + } catch (err) { + console.error(`[templates] failed to load ${id}:`, err.message); + } + } + return out; +} + +async function readTemplate(id) { + const order = await templateIndex(); + if (!order.includes(id)) throw new Error(`Unknown template: ${id}`); + const res = await fetchStatic(`templates/${id}.sway`); + const raw = await res.json(); + // validateProject lives in src/shared and is bundled; the host module imports + // it lazily to keep this file free of a hard dependency cycle. + const { validateProject } = await import('../../shared/swayproject.js'); + const { doc, warnings } = validateProject(raw); + return { doc, path: null, dir: null, warnings }; +} + +async function listDocs() { + try { + const res = await fetchStatic('docs-index.json'); + const list = await res.json(); + return Array.isArray(list) ? list : []; + } catch { + return []; + } +} + +async function readDoc(id) { + const list = await listDocs(); + if (!list.some((d) => d.id === id)) throw new Error(`Unknown document: ${id}`); + const res = await fetchStatic(`docs/${id}`); + return await res.text(); +} + +// --- files ------------------------------------------------------------------ +// A browser has no real paths. Files reach us as File objects (a picker or a +// drop) and are addressed by a synthetic `swaydrop:` path. The EXTENSION is +// load-bearing: app.js regexes it to decide audio vs .gan, so it is preserved. + +function registerFile(file) { + const id = ++fileSeq; + const path = `swaydrop:/${id}/${file.name}`; + fileRegistry.set(path, file); + return path; +} + +function pickFiles({ multiple = true, accept = '' } = {}) { + return new Promise((resolve) => { + const input = document.createElement('input'); + input.type = 'file'; + input.multiple = multiple; + if (accept) input.accept = accept; + input.style.display = 'none'; + document.body.appendChild(input); + let settled = false; + const done = (paths) => { + if (settled) return; + settled = true; + input.remove(); + resolve(paths); + }; + input.addEventListener('change', () => { + done(Array.from(input.files || []).map(registerFile)); + }); + // A cancelled picker fires no 'change' in most browsers. Resolve empty on + // the next focus so a cancel never leaves the caller awaiting forever. + window.addEventListener( + 'focus', + () => setTimeout(() => done([]), 400), + { once: true }, + ); + input.click(); + }); +} + +async function readAudio(filePath) { + const file = fileRegistry.get(filePath); + if (file) { + return new Uint8Array(await file.arrayBuffer()); + } + // A path from a saved project: ask theDAW, which also transcodes formats + // Chromium cannot decode. + try { + const res = await fetch(api(`/api/project/clip-audio?path=${encodeURIComponent(filePath)}`)); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + return new Uint8Array(await res.arrayBuffer()); + } catch (err) { + throw new Error(`Cannot read ${filePath}: ${err.message}`); + } +} + +async function statAudio(filePath) { + const file = fileRegistry.get(filePath); + if (!file) return { size: 0, sha256: '', missing: true }; + const buf = await file.arrayBuffer(); + const digest = await crypto.subtle.digest('SHA-256', buf); + const sha256 = Array.from(new Uint8Array(digest)) + .map((b) => b.toString(16).padStart(2, '0')) + .join(''); + return { size: file.size, sha256, missing: false }; +} + +// --- projects --------------------------------------------------------------- +// Saved into localStorage under a virtual path, and additionally offered as a +// download so a project can leave the browser. Opening accepts a real file. + +function projectStore() { + return readJson(PROJECTS_KEY, {}); +} + +function pushRecent(path, name) { + const list = readJson(RECENTS_KEY, []).filter((r) => r && r.path !== path); + list.unshift({ path, name }); + writeJson(RECENTS_KEY, list.slice(0, 10)); +} + +async function openDialog() { + const paths = await pickFiles({ multiple: false, accept: '.sway,application/json' }); + return paths[0] || null; +} + +async function saveDialog(name) { + const safe = String(name || 'project').replace(/[\\/:*?"<>|]/g, '_'); + const withExt = safe.toLowerCase().endsWith('.sway') ? safe : `${safe}.sway`; + return `swayproject:/${withExt}`; +} + +async function readProject(filePath) { + const { validateProject } = await import('../../shared/swayproject.js'); + const file = fileRegistry.get(filePath); + let raw; + if (file) { + raw = JSON.parse(await file.text()); + } else { + const stored = projectStore()[filePath]; + if (!stored) throw new Error(`No such project: ${filePath}`); + raw = stored; + } + const { doc, warnings } = validateProject(raw); + pushRecent(filePath, filePath.split('/').pop() || filePath); + return { doc, path: filePath, dir: null, warnings }; +} + +async function writeProject(filePath, doc) { + const store = projectStore(); + store[filePath] = doc; + const ok = writeJson(PROJECTS_KEY, store); + pushRecent(filePath, filePath.split('/').pop() || filePath); + // Also hand the user a real file, since browser storage is not a place to + // keep work that matters. + try { + const blob = new Blob([JSON.stringify(doc, null, 2)], { type: 'application/json' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filePath.split('/').pop() || 'project.sway'; + a.click(); + setTimeout(() => URL.revokeObjectURL(url), 10000); + } catch { + /* the localStorage copy above is the durable half */ + } + return { + path: filePath, + warnings: ok ? [] : ['Browser storage is full; the downloaded copy is the only one.'], + }; +} + +// --- plugins and VST, through theDAW ---------------------------------------- + +async function listGan() { + const data = await apiJson('/api/plugin/list'); + if (!data) return []; + const items = Array.isArray(data) ? data : data.plugins || []; + return items.map((p) => ({ + id: p.id, + name: p.name || p.id, + url: p.entry_url || p.url || '', + manifest: p.manifest || p, + })); +} + +async function openGan(idOrPath) { + const data = await apiJson('/api/plugin/open', { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify( + typeof idOrPath === 'string' && idOrPath.includes('/') + ? { path: idOrPath } + : { id: idOrPath }, + ), + }); + if (!data) return null; + return { + id: data.id || idOrPath, + name: data.name || data.id || 'plugin', + url: data.entry_url || data.url || '', + manifest: data.manifest || data, + }; +} + +async function vstStatus() { + const data = await apiJson('/api/vst/scan'); + if (!data) { + return { ok: false, detail: 'theDAW VST host is not reachable.', plugins: [] }; + } + const plugins = Array.isArray(data) ? data : data.plugins || []; + return { ok: true, detail: 'pedalboard via theDAW', python: 'theDAW', plugins }; +} + +// --- the surface ------------------------------------------------------------ + +export function createBrowserBridge() { + const unsupported = (what) => async () => ({ + ok: false, + detail: `${what} is available in the SwayCommand desktop app.`, + }); + + return { + info: async () => ({ + name: BUILD.name || 'SwayCommand', + version: BUILD.version || '0.0.0', + platform: 'browser', + arch: 'wasm', + // Lets anything that cares tell the two hosts apart without sniffing. + mode: 'browser', + host: 'theDAW', + build: BUILD, + }), + + plugins: { + pickGan: async () => (await pickFiles({ multiple: false, accept: '.gan' }))[0] || null, + openGan, + listGan, + removeGan: async () => ({ ok: false }), + }, + + vst: { + status: vstStatus, + setPython: unsupported('Choosing a Python interpreter'), + pickPython: unsupported('Choosing a Python interpreter'), + scan: vstStatus, + params: async (pluginPath, state) => + (await apiJson('/api/vst/load', { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ path: pluginPath, state }), + })) || { ok: false, params: [] }, + render: async () => ({ + ok: false, + detail: 'Render through theDAW’s MIX chain while the cockpit is embedded.', + }), + editor: async (pluginPath) => + (await apiJson('/api/vst/open-editor', { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ path: pluginPath }), + })) || { ok: false, detail: 'theDAW VST host is not reachable.' }, + }, + + doctor: { + // Two honest rows. The renderer's own checks (WebGL2, Web MIDI ports, + // audio inputs) run alongside these and answer the questions that + // actually matter for playing. + run: async () => [ + { + id: 'platform', + label: 'Running inside theDAW', + status: 'ok', + detail: 'The cockpit is embedded. theDAW supplies MIDI and audio.', + }, + { + id: 'desktop-only', + label: 'Hardware checks', + status: 'info', + detail: + 'USB detection, driver installation and system-audio capture run in the SwayCommand desktop app.', + }, + ], + fix: async () => ({ ok: false, detail: 'Fixes run in the desktop app.' }), + onFixProgress: () => () => {}, + }, + + project: { + openDialog, + saveDialog, + read: readProject, + write: writeProject, + recent: async () => readJson(RECENTS_KEY, []), + templates: listTemplates, + readTemplate, + }, + + docs: { list: listDocs, read: readDoc }, + + files: { + pickAudio: () => pickFiles({ multiple: true, accept: 'audio/*' }), + readAudio, + statAudio, + // Synchronous by contract (app.js calls it inline during a drop). + pathOf: (file) => { + try { + return registerFile(file); + } catch { + return ''; + } + }, + }, + + platform: { + systemAudio: async () => ({ + supported: false, + detail: + 'Inside theDAW, choose "theDAW master" as the audio source to make the visuals follow what you are making, or pick a hardware input. System-audio capture is a desktop-app capability.', + }), + }, + + settings: { + get: async () => readSettings(), + set: async (patch) => writeSettings(patch), + }, + + openExternal: async (url) => { + try { + window.open(url, '_blank', 'noopener,noreferrer'); + return { ok: true }; + } catch { + return { ok: false }; + } + }, + }; +} diff --git a/src/renderer/host/host-channel.js b/src/renderer/host/host-channel.js new file mode 100644 index 0000000..e915e55 --- /dev/null +++ b/src/renderer/host/host-channel.js @@ -0,0 +1,150 @@ +// The postMessage channel to the embedding host (theDAW's SWAY tab). +// +// theDAW owns the only navigator.requestMIDIAccess() in its renderer, and +// Windows lets exactly one process hold a MIDI input, so the cockpit must not +// open the hardware itself when embedded -- it would either steal the port from +// theDAW or report PORT BUSY. Instead theDAW relays raw MIDI bytes here and the +// cockpit's own decoding (factory map, learned overrides, pad channels) applies +// to them unchanged. +// +// The same channel carries audio analysis (so the visuals follow whatever +// theDAW is playing) and a visibility signal (so a hidden tab stops rendering +// instead of burning the GPU for the rest of the session). +// +// Everything here is inert in the desktop app: bridge.js only installs it when +// there is no Electron preload. + +const PROTOCOL = 1; + +/** Set by the host handshake; used to pin outbound posts. */ +let hostOrigin = null; + +/** Latest analysis frame from the host, consumed by engine/audio.js. */ +export const hostAudio = { + active: false, + bass: 0, + mid: 0, + high: 0, + level: 0, + t: 0, +}; + +/** Raw MIDI frames from the host, consumed by midi/midi.js in bridge mode. */ +const midiListeners = new Set(); + +/** Visibility from the host, consumed by app.js to idle the render loop. */ +export const hostVisibility = { visible: true, known: false }; +const visibilityListeners = new Set(); + +export function onHostMidi(cb) { + midiListeners.add(cb); + return () => midiListeners.delete(cb); +} + +export function onHostVisibility(cb) { + visibilityListeners.add(cb); + return () => visibilityListeners.delete(cb); +} + +/** True when a host is driving this cockpit (i.e. we are embedded). */ +export function hasHost() { + return hostOrigin !== null; +} + +/** + * True when this document is framed by another page. + * + * Deliberately separate from hasHost(): the handshake completes a few frames + * after boot, but createMidi() runs DURING boot and has to decide there and + * then whether to open the hardware. Being framed is the synchronous, race-free + * signal that someone else owns the MIDI port -- and on Windows only one + * process may hold it. + */ +export function isFramed() { + try { + return window.parent !== window; + } catch { + // A cross-origin parent throws on access; that still means we are framed. + return true; + } +} + +export function postToHost(payload) { + if (!window.parent || window.parent === window) return; + try { + window.parent.postMessage({ ...payload, v: PROTOCOL }, hostOrigin || '*'); + } catch { + /* the host went away; nothing to do */ + } +} + +export function installHostChannel() { + window.addEventListener('message', (e) => { + // Only the embedder may drive this cockpit. Before the handshake we accept + // the parent frame alone; afterwards we also pin the origin it declared. + if (e.source !== window.parent) return; + if (hostOrigin !== null && e.origin !== hostOrigin) return; + const d = e.data; + if (!d || typeof d.type !== 'string' || !d.type.startsWith('sway/')) return; + + switch (d.type) { + case 'sway/host-ready': + hostOrigin = e.origin; + break; + + case 'sway/midi': { + if (!Array.isArray(d.data)) break; + for (const cb of midiListeners) { + try { + cb(d.data, d.t); + } catch (err) { + console.error('[host] midi listener threw:', err); + } + } + break; + } + + case 'sway/analysis': { + hostAudio.active = true; + hostAudio.bass = Number(d.bass) || 0; + hostAudio.mid = Number(d.mid) || 0; + hostAudio.high = Number(d.high) || 0; + hostAudio.level = Number(d.volume) || 0; + hostAudio.t = performance.now(); + break; + } + + case 'sway/audio-source': + // 'host' = theDAW's master feeds the analysis frames above. + // 'input' = the cockpit opens its own input device, as it does + // standalone, so stop honouring stale host frames. + hostAudio.active = d.source === 'host'; + break; + + case 'sway/visibility': { + hostVisibility.visible = d.visible !== false; + hostVisibility.known = true; + for (const cb of visibilityListeners) { + try { + cb(hostVisibility.visible); + } catch (err) { + console.error('[host] visibility listener threw:', err); + } + } + break; + } + + default: + break; + } + }); + + // Announce readiness. The host queues anything it wanted to send before this + // and flushes on receipt, so a race during boot loses nothing. + const announce = () => postToHost({ type: 'sway/ready', app: 'swaycommand' }); + if (document.readyState === 'complete') announce(); + else window.addEventListener('load', announce, { once: true }); + // Also announce immediately: the host tolerates duplicates, and 'load' can be + // late behind the bundle's own work. + announce(); +} diff --git a/src/renderer/midi/midi.js b/src/renderer/midi/midi.js index 02fb5d5..a097a38 100644 --- a/src/renderer/midi/midi.js +++ b/src/renderer/midi/midi.js @@ -8,6 +8,7 @@ // * keeps a small monitor ring buffer for the HUD. import { FACTORY_MAP, SWAY_PORT_NAME, createControlState } from './swaymap.js'; +import { isFramed, onHostMidi } from '../host/host-channel.js'; const MONITOR_SIZE = 14; @@ -20,10 +21,26 @@ export async function createMidi({ onEvent } = {}) { let learnTarget = null; let learnResolve = null; - const supported = typeof navigator.requestMIDIAccess === 'function'; - if (supported) { + // Embedded: the host owns the only MIDIAccess and relays raw bytes to us. + // Windows allows exactly ONE process to hold a MIDI input, so opening the + // port here would either take it away from the host or fail as PORT BUSY. + const relayed = isFramed(); + const supported = relayed || typeof navigator.requestMIDIAccess === 'function'; + if (!relayed && typeof navigator.requestMIDIAccess === 'function') { try { - access = await navigator.requestMIDIAccess({ sysex: false }); + // requestMIDIAccess does not settle until the user answers Chromium's + // permission prompt - measured hanging indefinitely when it is never + // answered. Awaiting it bare wedges main(), leaving the blast door + // locked with no error anywhere. Give it a bounded wait and carry on + // without MIDI if it does not arrive; a late grant is picked up by the + // statechange handler below. + access = await Promise.race([ + navigator.requestMIDIAccess({ sysex: false }), + new Promise((resolve) => setTimeout(() => resolve(null), 3000)), + ]); + if (!access) { + pushMonitor('MIDI permission not answered - continuing without it.'); + } } catch (err) { console.warn('[midi] access denied/unavailable:', err.message); } @@ -182,7 +199,21 @@ export async function createMidi({ onEvent } = {}) { control.portName = sway ? sway.name : targets.length ? targets.map((t) => t.name).join(', ') : null; } - if (access) { + if (relayed) { + // The host names the port so the link pill has something to show; every + // decode below is the hardware path, byte for byte. + control.connected = true; + control.isSway = true; + control.portName = 'theDAW (relayed)'; + pushMonitor('Linked to the host application - MIDI is relayed.'); + onHostMidi((data) => { + try { + handleMessage({ data }, 'theDAW'); + } catch (err) { + console.error('[midi] relayed frame failed:', err); + } + }); + } else if (access) { rescan(); access.onstatechange = () => rescan(); // hot-plug / hot-unplug } @@ -192,7 +223,11 @@ export async function createMidi({ onEvent } = {}) { monitor, supported, get available() { - return !!access; + // Embedded (relayed) mode never opens its own MIDIAccess — the host + // relays raw bytes — so `access` alone made the splash report "WebMIDI + // unavailable" while relayed MIDI was audibly playing. The relay IS + // availability. + return relayed || !!access; }, // Resolves when the next CC arrives; that CC becomes the binding. learn(target) { From 8b1fbdbdebf343d1ba90099c8440c6361f8d2cbd Mon Sep 17 00:00:00 2001 From: Daniel Joaquin Trujillo <54636507+danieljtrujillo@users.noreply.github.com> Date: Sun, 30 Aug 2026 09:41:37 -0700 Subject: [PATCH 2/2] README rebuilt around a rendered scene gallery, plus a LICENSE file The README now opens on a banner and a still from Miracle Mile, carries a sixteen-scene gallery with a one-line mechanism note under each image, and documents the parts that make the application an instrument rather than a feature list: the cockpit as a line-art diagram plus a region table, the recovered Sway factory map with its CC numbers, the target grammar every assignable destination answers, and the timeline's track chains and sections. Facts were re-checked against the source: sixteen scenes (five folded into the scenes that own their subject last pass), eleven templates, 38 rack parameters in five decks, 14 live track effect kinds, seven synth presets. The wormhole row is gone from the controls table, since the wormhole is an element of Will I Dream now and not a scene. The images are generated, not captured. docs/media/gallery.plan.json is the scene-harness plan behind every still, with the exact io snapshot each scene was photographed under; docs/media/README.md carries the provenance table and the regeneration command. Setup shots that only advance a scene into the state the next shot photographs are prefixed with an underscore. Stills render at 1280x720 and are re-encoded to WebP at 480x270 through a canvas in the same Electron runtime, which keeps the whole asset set at 472 KB. Making that render in the in-app documentation viewer took three small changes. markdown.js grows an image rule, placed ahead of the link rule that would otherwise eat the bracket pair and leave a stray '!'; only the bundle's own media directory resolves, so an external badge falls back to its alt text rather than drawing a broken-image icon under `img-src 'self' data:`. build-renderer.js copies docs/media/ to media/ beside index.html for both targets, images only. Both title derivations (listDocs in main.js, the embed's docs-index) fall back to a leading banner image's alt text, because the README now has no H1: a wordmark image followed by the same word as a heading titles the page twice. LICENSE was missing while package.json, the README and the embed build all declared MIT. It names Daniel Trujillo as the copyright holder and points at the per-file upstream notices for the derived work. --- LICENSE | 26 ++ README.md | 385 ++++++++++++++++++++++------- docs/media/README.md | 51 ++++ docs/media/banner.webp | Bin 0 -> 59198 bytes docs/media/gallery.plan.json | 347 ++++++++++++++++++++++++++ docs/media/hero.webp | Bin 0 -> 78834 bytes docs/media/scenes/beams.webp | Bin 0 -> 13286 bytes docs/media/scenes/chladni.webp | Bin 0 -> 18942 bytes docs/media/scenes/cymatic.webp | Bin 0 -> 10052 bytes docs/media/scenes/ferrofluid.webp | Bin 0 -> 8892 bytes docs/media/scenes/lattice.webp | Bin 0 -> 26110 bytes docs/media/scenes/mandelbulb.webp | Bin 0 -> 13772 bytes docs/media/scenes/miraclemile.webp | Bin 0 -> 11404 bytes docs/media/scenes/naturestomb.webp | Bin 0 -> 9914 bytes docs/media/scenes/nebula.webp | Bin 0 -> 29924 bytes docs/media/scenes/ribbons.webp | Bin 0 -> 5026 bytes docs/media/scenes/spectra.webp | Bin 0 -> 5746 bytes docs/media/scenes/swarm.webp | Bin 0 -> 33728 bytes docs/media/scenes/valley.webp | Bin 0 -> 6894 bytes docs/media/scenes/vjshader.webp | Bin 0 -> 21788 bytes docs/media/scenes/voxels.webp | Bin 0 -> 9132 bytes docs/media/scenes/willidream.webp | Bin 0 -> 52470 bytes scripts/build-renderer.js | 21 +- src/main/main.js | 5 +- src/renderer/markdown.js | 20 +- src/renderer/styles.css | 6 + 26 files changed, 767 insertions(+), 94 deletions(-) create mode 100644 LICENSE create mode 100644 docs/media/README.md create mode 100644 docs/media/banner.webp create mode 100644 docs/media/gallery.plan.json create mode 100644 docs/media/hero.webp create mode 100644 docs/media/scenes/beams.webp create mode 100644 docs/media/scenes/chladni.webp create mode 100644 docs/media/scenes/cymatic.webp create mode 100644 docs/media/scenes/ferrofluid.webp create mode 100644 docs/media/scenes/lattice.webp create mode 100644 docs/media/scenes/mandelbulb.webp create mode 100644 docs/media/scenes/miraclemile.webp create mode 100644 docs/media/scenes/naturestomb.webp create mode 100644 docs/media/scenes/nebula.webp create mode 100644 docs/media/scenes/ribbons.webp create mode 100644 docs/media/scenes/spectra.webp create mode 100644 docs/media/scenes/swarm.webp create mode 100644 docs/media/scenes/valley.webp create mode 100644 docs/media/scenes/vjshader.webp create mode 100644 docs/media/scenes/voxels.webp create mode 100644 docs/media/scenes/willidream.webp diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f9aee0b --- /dev/null +++ b/LICENSE @@ -0,0 +1,26 @@ +MIT License + +Copyright (c) 2026 Daniel Trujillo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Portions of this software are derived from third-party projects and remain +under their own licenses. Each derived file carries the upstream notice, the +license identifier and a statement of changes in its header. The principal +upstream sources are listed under Credits in README.md. diff --git a/README.md b/README.md index 988f826..86f6be8 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,325 @@ -# SwayCommand - -SwayCommand is a desktop application that renders real-time, audio-reactive visuals controlled by the Audima Labs Sway, a gesture-based MIDI controller. The application targets live performance: everything happens on one always-live cockpit page — stage, timeline, control deck, and instrument panels — it starts into a ready-to-play project, analyzes any audio input, and accepts control from the Sway, from any class-compliant MIDI controller, or from mouse and keyboard. - -SwayCommand is an independent project. It is not affiliated with or endorsed by Audima Labs Pty Ltd. It never redistributes Audima binaries; optional Audima components are downloaded from Audima's official CDN at the user's request. See [Legal](#legal). - -## Feature summary - -- A single-page cockpit: the stage renders from boot to quit while the scene bank, transport, timeline, assignment panel, and drawers work on top of it — no screen switching, no interrupted frames. -- Sixteen procedural visual scenes, each driven by audio analysis and gesture input, rendered with three.js on WebGL2 — every shader GLSL3, no autonomous rotation anywhere. -- Projects as `.sway` files: one JSON document carrying palette, engine settings, effects snapshot, synth patch, linked media, kit, timeline, and every control assignment. Save, open, and recent files live in the project menu; ten bundled templates (three tuned to pair with Audima's official Ableton demo packs — Garage, DNB, Hip Hop) provide starting points. -- A timeline with any number of audio tracks (stems — import or drop files and each becomes a track on the grid, tempo detected on the first import; waveform clips scheduled sample-accurately on one audio clock, the loop seam scheduled ahead so everything stays in sync) and a visual lane (scene clips with per-clip cut or fade entry), plus bar / beat grid with snap, loop region, locators, and scrubbing. -- Live music performance out of the box: every track carries an effect chain (filter, delay, reverb, distortion, bit crusher, trance gate, phaser, flanger, chorus, tremolo, auto filter, compressor, three band eq, pan); any parameter binds to a pad (a held punch), a knob (continuous) or a gesture with one BIND; Shift+drag marks a section of a track where an effect engages by itself; stems launch from pads phase-locked to the grid. -- theDAW's plugin world: `.gan` web-plugin surfaces from the Foundry load as route sources, and VST3 plugins are hosted through pedalboard in a sidecar and rendered onto tracks with a live wet / dry mix. -- An on-screen Sway deck — a line-art schematic of the hardware. Click any pad, knob, button, or gesture chip to assign it: pads fire samples, scene switches, a scene's own events, or momentary effect punches; knobs drive any engine, rack, synth, kit, or scene parameter with range and curve; buttons learn a hardware CC and toggle anything; the five gesture dimensions hold modulation routes. Touching a control on the hardware selects it on screen. -- Automated scene cycling with palette-synchronized crossfades (Auto-VJ), after the pattern established by Keijiro Takahashi's Akvj. -- A startup system check (the Doctor) that detects the Sway over USB, including firmware-update (DFU) mode, and offers one-click remediation for missing optional components. -- Factory-map support for the Sway, MIDI-learn for any continuous control, and per-control overrides persisted in settings and in the project; any class-compliant MIDI controller drives the same controls. -- Audio analysis from any input device or, on Windows, from system-audio loopback, with an internal fallback signal when no input exists. -- A built-in wavetable synth covering the ground Vital does, playable from the Sway, with seven factory presets and a modulation matrix. -- A sample kit on the deck's sixteen pads with one-shot, loop, and gate modes and choke groups; triggered samples, the synth, and timeline playback are all heard and drive the visuals. -- A 38-parameter effects rack (mirror, kaleidoscope, glitch, anaglyph, mosaic, color, trails, ASCII, and more) applied to the composited frame when enabled; driving any rack parameter from a knob switches the rack on. -- An in-application documentation viewer that renders the bundled Markdown documentation, including this file, without network access. -- Full offline operation. The application contains no telemetry. Its own network access is limited to Audima endpoints: a reachability check at startup and user-initiated downloads. Links the user follows are handed to the system browser, restricted to an allowlist of hosts. - -## Requirements - -| Platform | Minimum version | Package | +![SwayCommand](docs/media/banner.webp) + +![license MIT](https://img.shields.io/badge/license-MIT-2de1fc?style=flat-square&labelColor=0b0f17) +![Electron 43](https://img.shields.io/badge/electron-43-2de1fc?style=flat-square&labelColor=0b0f17) +![three.js r185](https://img.shields.io/badge/three.js-r185-2de1fc?style=flat-square&labelColor=0b0f17) +![GLSL3](https://img.shields.io/badge/shaders-GLSL3-ff2d95?style=flat-square&labelColor=0b0f17) +![platform windows macos linux](https://img.shields.io/badge/platform-windows%20macos%20linux-2de1fc?style=flat-square&labelColor=0b0f17) + +SwayCommand is a desktop VJ instrument built around the Audima Labs Sway, a +gesture MIDI controller whose sixteen infrared sensors read hand positions in +the air above it. Sixteen procedural scenes render on WebGL2 through three.js, +driven by live audio analysis and by those hands. The whole rig lives on one +page that renders from boot to quit: the scene bank, the timeline, the control +deck and the instrument drawers all work on top of a frame that never stops. + +The Sway is optional at every point. Audio arrives from any input device, from +Windows system loopback, or from stems on the built-in timeline. Control arrives +from the Sway, from any class-compliant MIDI controller, or from the mouse and +keyboard. With no peripherals attached at all, the analyser synthesises a +120 BPM groove into the analyser node and every scene still plays. + +> SwayCommand is an independent project. It is not affiliated with or endorsed +> by Audima Labs Pty Ltd, and it redistributes no Audima binary. Optional Audima +> components download from Audima's own CDN on request. See [Legal](#legal). + +![Miracle Mile](docs/media/hero.webp) + +*Miracle Mile, DETONATION act. Four acts sit on one knob, a noir city sits under +all of them, and every pad on the deck is its own re-entry vehicle.* + +## Scenes + +Sixteen modules in [src/renderer/engine/scenes/](src/renderer/engine/scenes/), +every shader GLSL3, none of them rotating on their own. Each one reads the same +five-colour palette, the same three audio bands and the same gesture snapshot, +and answers a pad strike with an event of its own: a mode jump, a geometry +advance, a re-seed. The interface they implement is +[SCENE_CONTRACT.md](docs/SCENE_CONTRACT.md). + +| Beam Sixteen | Swarm | Ribbons | Voxels | +|---|---|---|---| +| ![Beam Sixteen](docs/media/scenes/beams.webp) | ![Swarm](docs/media/scenes/swarm.webp) | ![Ribbons](docs/media/scenes/ribbons.webp) | ![Voxels](docs/media/scenes/voxels.webp) | +| One beam per IR sensor. Knob 4 crossfades hologram, laser, electricity. | A stateless GPU cloud orbiting an attractor that chases the hand. | Lissajous trails. A strike runs a whipcrack head to tail. | A box heightfield. Bass pumps rings, each pad drops a stone. | + +| Nebula | Mandelbulb | Cymatic Orb | Spectra | +|---|---|---|---| +| ![Nebula](docs/media/scenes/nebula.webp) | ![Mandelbulb](docs/media/scenes/mandelbulb.webp) | ![Cymatic Orb](docs/media/scenes/cymatic.webp) | ![Spectra](docs/media/scenes/spectra.webp) | +| Three fbm layers warping each other, mirror-folded, contoured into filaments. | A raymarched solid. Strikes jump between six distance estimators. | Three spherical modes summed in the vertex shader, nodal lines lit per pixel. | A mel-history terrain scrolling under the inferno ramp. | + +| VJ Shader | Ferrofluid Orb | Cymatic Plate | Chrome Valley | +|---|---|---|---| +| ![VJ Shader](docs/media/scenes/vjshader.webp) | ![Ferrofluid Orb](docs/media/scenes/ferrofluid.webp) | ![Cymatic Plate](docs/media/scenes/chladni.webp) | ![Chrome Valley](docs/media/scenes/valley.webp) | +| Five raymarch presets and eight materials, both picked from pads. | A Rosensweig spike field over a Fibonacci phyllotaxis cross-hatch. | A Chladni plate: sixteen mode pairs, adjacent modes blended. | An endless valley under a plasma sun, morphing into a spike field. | + +| Quantum Lattice | Will I Dream | Nature's Tomb | Miracle Mile | +|---|---|---|---| +| ![Quantum Lattice](docs/media/scenes/lattice.webp) | ![Will I Dream](docs/media/scenes/willidream.webp) | ![Nature's Tomb](docs/media/scenes/naturestomb.webp) | ![Miracle Mile](docs/media/scenes/miraclemile.webp) | +| 373 nodes and 756 beams morphing between four geometries. | A big bang on the downbeat, then hyperspace, wormhole, black hole. | Fifteen plates on one knob: life, its end, then weather. | Four acts on one knob: collider, fission, detonation, shockwave. | + +Three of the sixteen are shows rather than loops. Will I Dream opens dark on a +singularity, ignites on the first downbeat, and flies out through thirteen +celestial bodies and four things the flight can run into; the hand alone drives +the hyperspace jump, and whatever waits at the far end grows in as the star +trails come to rest. Nature's Tomb runs the order of life and then its end, from +a B-form double helix through the cell line, the mycelium and the slime mold to +the toxin, phagocytosis and decomposition, then out to the world: microscopy, +ocean currents, the day, and five weather systems. Miracle Mile starts inside a +particle detector and ends with a city under a mushroom cloud, and the wreck it +leaves persists until a rebuild. + +Stills in this section are rendered by the offscreen scene harness from +[docs/media/gallery.plan.json](docs/media/gallery.plan.json). Provenance and the +regeneration command: [docs/media/README.md](docs/media/README.md). + +## The cockpit + +One page, always live. The stage renders behind every panel, drawer and modal, +and nothing in the interface interrupts a frame. + +``` +┌──────────────────────────────────────────────────────────────────────────┐ +│ SWAYCOMMAND PROJECT PLAY STOP 01:24.6 LOOP MIRACLE MILE 58 fps │ +├────────────┬──────────────────────────────────────────┬──────────────────┤ +│ SCENES │ │ ASSIGNMENT │ +│ 16 tiles │ │ the selected │ +│ keys 1..9 │ │ pad, knob, │ +│ │ S T A G E │ button or │ +│ AUTO │ renders from boot to quit │ gesture │ +│ RUN │ ├──────────────────┤ +│ HOLD │ │ INPUT │ +│ 18..40 s │ │ source, meter, │ +│ FADE 4 s │ │ three bands │ +├────────────┴──────────────────────────────────────────┴──────────────────┤ +│ IMPORT +TRACK BPM 128 TAP SNAP beat 1 2 3 4 │ +│ SCENES │ [ voxels ][ miracle mile ][ will i dream ] │ +│ DRUMS │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ +│ BASS │ ~~~~~~~~~~~~~~[ section: filter cutoff ]~~~~~~~~~~~~~~~~~~~~~~~ │ +├──────────────────────────────────────────────────────────────────────────┤ +│ K1 K2 K3 K4 ( ( ( ( sixteen IR sensors ) ) ) ) K5 K6 K7 K8 │ +│ 00 01 02 03 OLED WHEEL PRESETS 08 09 10 11 │ +│ 04 05 06 07 12 13 14 15 │ +└──────────────────────────────────────────────────────────────────────────┘ +``` + +| Region | Contents | +|---|---| +| Top bar | Project menu, transport and clock, current scene, link and input pills, fps, and the SYNTH / RACK / KIT / DOCS / HELP buttons | +| Left rail | The scene bank, with digit hints on the first nine of the active pool, and the Auto-VJ group: RUN, a hold range in seconds, a crossfade time | +| Centre | The stage. A line-art blast door covers it while the Doctor runs, then opens once | +| Right rail | The assignment panel for the selected control, over the input box: analysis source, level meter, band display | +| Timeline band | Toolbar, one head per track, a bar and beat ruler with loop region and locators, a visual lane of scene clips, and one waveform lane per audio track | +| Deck | A stroke line-art schematic of the Sway. Clicking a control on it selects that control; touching the control on the hardware does the same | + +Every region resizes from a grip on its inner edge, collapses to a thin strip +from a corner chip, and restores its default on a double-click. Sizes and +collapsed states persist in the settings file and survive solo view, which hides +everything but the stage on `O`. + +## Playing it + +### The Sway + +The factory map was recovered from Audima's own artifacts (the Base Project V2 +`.swayproj`, the official Ableton Live remote scripts, the Cubase MIDI Remote +script) rather than from published documentation. Any binding can be replaced by +MIDI-learn, which is also what makes any other class-compliant controller work. + +| Surface | Factory MIDI | Role | |---|---|---| -| Windows | 10 (x64) | NSIS installer (`SwayCommand-Setup-.exe`) | -| macOS | 11 | DMG | -| Linux | glibc-based x64 distribution | AppImage | +| Hand position over the rail | CC 50 (X), CC 38 (Y) | Continuous steering of the active scene, and two modulation routes | +| Pulse | CC 35 | Vertical bounce energy: a brightness surge, plus any routes bound to it | +| Press | CC 36 | Press depth: each scene's own crush or dive | +| Sway | CC 37 | Lateral sway: morphs the active scene's generative parameters | +| X-trigger and Y-modulation region | CC 73, CC 74 | A paired region, available as routes | +| Knobs 1 to 8 | CC 20 to 27 | Unassigned by default. Any engine, rack, synth, kit, track or scene parameter, with range and curve | +| Pads 0 to 15 | Notes 24 to 39 chromatic, or the B minor Theory Engine grid | A sample, a scene switch, a scene event, a momentary effect punch, or a grid-locked stem launch. Every strike is also the active scene's morph event | +| Buttons | Unpublished CCs, learned | Toggle anything: rack, Auto-VJ, synth, transport, track mute or solo | +| Sleep and wake | Program 37, 38 | Link pill state | + +### Assignment -A WebGL2-capable GPU is required. A Sway, other MIDI hardware, and an audio input are optional; the application substitutes mouse/keyboard control and an internal analysis signal when they are absent. +Selecting a control on the deck opens its panel on the right rail. Every +assignable destination in the application answers one target string, so the same +grammar covers the engine, the post chain, the instruments, the timeline and +anything a scene chooses to publish. + +| Target | Reaches | +|---|---| +| `engine:hue`, `engine:intensity`, `engine:fadeTime` | Global palette rotation, output intensity, Auto-VJ crossfade time | +| `fx:` | One of the 38 rack parameters. A control reaching for the rack switches the rack on, and clearing it switches the rack off again | +| `synth:`, `sampler:` | The wavetable synth and the kit's four macro knobs | +| `scene::` | An action or parameter the scene declares in `meta.controls`. Actions fire only while that scene is on screen; parameters apply whenever they are set | +| `track::gain`, `:mute`, `:solo`, `:vstmix` | One timeline track | +| `track:::` | One parameter of one effect in that track's live chain | +| `transport:playPause`, `transport:stop` | The timeline | +| `gan::[:x\|y\|z]` | A `.gan` plugin surface as a control **source**, driving anything above | + +A knob carries a range and a curve. A gesture route wins over a knob on the same +target. Touching a control on the hardware selects it on screen, so binding is a +matter of reaching for the thing and pressing BIND. + +### Timeline and tracks + +The timeline holds any number of audio tracks and one visual lane. Dropping +files on the band creates one track per stem at the playhead, and tempo is +estimated on the first import. Clips are scheduled sample-accurately on the one +`AudioContext` clock, with the loop seam scheduled ahead so nothing drifts at +the wrap. + +Each track carries a live effect chain built from 14 kinds: filter, delay, +reverb, distortion, bit crusher, trance gate, phaser, flanger, chorus, tremolo, +auto filter, compressor, three-band EQ and pan. Any parameter binds to a pad as +a held punch, to a knob as a continuous control, or to a gesture. Shift-dragging +on a track marks a section, a region where an effect engages by itself while the +playhead is inside it. Pads can also launch stems phase-locked to the grid, at +the next beat, bar, two bars or four. + +VST3 plugins run through a pedalboard sidecar, rendered offline per track and +played back under a wet and dry mix. `.gan` surfaces from theDAW's Foundry load +in the plugins drawer and contribute their controls as route sources. + +### Projects + +A project is one JSON document with the `.sway` extension: palette, engine +settings, effects snapshot, synth patch, linked media, kit, timeline, linked +plugins, every control assignment and any MIDI overrides. Eleven templates ship +with the application, three of them tuned to pair with Audima's official Ableton +demo packs (Garage, DNB, Hip Hop). Format and schema: +[PROJECTS.md](docs/PROJECTS.md). + +### Everything else on the deck + +The rack is 38 post-processing parameters in five decks (Geometrics, +Corruption, Chromatics, Timecode, ASCII) applied to the composited frame. The +synth is a wavetable instrument with seven factory presets and a modulation +matrix, playable from the Sway or the keyboard row. The kit puts one sample per +pad across the sixteen pads with one-shot, loop and gate modes and choke groups. +Auto-VJ holds a scene for a randomised interval and then crossfades to another +from the project's pool, with the palette carried across the fade. ## Installation -Packaged builds install per-user and require no elevation. The Windows installer is a one-click NSIS package that launches the application when installation completes. Installation from source requires Node.js 18 or later; the repository includes double-click bootstrap scripts (`Install & Launch SwayCommand.bat` on Windows, `Install & Launch SwayCommand.command` on macOS, `install-launch.sh` on Linux) that install dependencies and start the application. Details, including silent installation and uninstallation: [docs/INSTALLATION.md](docs/INSTALLATION.md). +| Platform | Minimum | Package | +|---|---|---| +| Windows | 10 (x64) | NSIS installer, `SwayCommand-Setup-.exe` | +| macOS | 11 | DMG | +| Linux | glibc-based x64 | AppImage | + +A WebGL2 GPU is required. Packaged builds install per user and need no +elevation; the Windows installer is one click and launches on completion. + +Installing from source needs Node.js 18 or later. The repository carries +double-click bootstrap scripts that install dependencies and start the +application: `Install & Launch SwayCommand.bat` on Windows, +`Install & Launch SwayCommand.command` on macOS, `install-launch.sh` on Linux. +Silent installation and uninstallation are covered in +[INSTALLATION.md](docs/INSTALLATION.md). + +At first launch the Doctor checks the system: the Sway over USB (including +firmware-update mode), WebGL2, WebMIDI, audio input, and the optional Audima +components, each with a one-click fix where one exists. Details: +[DOCTOR.md](docs/DOCTOR.md). + +## Keys + +| Key | Action | +|---|---| +| `1` to `9` | Select a scene from the active project's pool, disabling Auto-VJ | +| `Space` | Crossfade to another scene from the pool | +| `A` | Auto-VJ on or off | +| `Z X C V B N M ,` | Pads 0 to 7 | +| `P` / `L` / `I` | Play or pause / loop on or off / import stems | +| `Delete`, `Left`, `Right` | Remove or nudge the selected timeline clip or section | +| `S` / `R` / `E` / `G` | Synth, rack, kit and plugins drawers | +| `F` / `O` | Fullscreen / solo view, stage only | +| `H` / `D` / `K` | Controls modal, documentation, MIDI monitor (`M` is a pad key) | +| `A W S E D F T G Y H U J K O L P ;` | Play the synth, only while the synth drawer is open | +| `Esc` | Close the topmost layer: popover, drawer, modal, then selection | + +Pointer input stands in for the Sway when none is bound: position on the stage +is XY, buttons are press, the wheel is pulse. In Will I Dream that means the +hyperspace jump is on the pointer too, since warp is the product of X and +closeness to the sensors, engaging past 0.55 and releasing under 0.25. ## Development ```sh npm install -npm start # build renderer bundle, launch Electron -npm run dist:win # Windows installer -npm run dist:mac # macOS DMG -npm run dist:linux # Linux AppImage +npm start # bundle the renderer, launch Electron +npm run build:renderer # dist/, the desktop bundle +npm run build:renderer:embed # dist-embed/, a static bundle a host app serves +npm run dist:win # Windows installer +npm run dist:mac # macOS DMG +npm run dist:linux # Linux AppImage ``` -Build-system details: [docs/BUILD.md](docs/BUILD.md). Environment variables and file locations: [docs/ENVIRONMENT.md](docs/ENVIRONMENT.md). +Scenes are verified without launching the application. The offscreen harness +compiles a scene in a hidden Electron window, drives its `update()` with a +patched input snapshot for a set number of frames, and returns a PNG, the cost +per frame and any shader error: -## Controls +```sh +node scripts/scene-harness.js +``` -| Input | Effect | -|---|---| -| Hand position over the Sway (XY) | Continuous steering of the active scene; assignable to any parameter as modulation routes | -| Pulse / Press / Sway gestures | Pulse surges brightness; press compresses — each scene's own crush or dive; sway morphs the active scene's generative parameters (mode numbers, field strengths, warp velocity). Each dimension also holds any number of modulation routes | -| Knobs 1–8 | Assignable. Nothing by default: no knob drives an effect, the intensity, or anything else until you assign it, and clearing a control resets the effect it drove (the rack switches off again if a control had switched it on). Templates carry their own knob tables | -| Pads 0–15 | Assignable: sample, scene switch (cut or fade entry), a scene event the active scene declares, or momentary effect punch — numbered 0–15 as the deck shows them (top rows first, left cluster then right, then the bottom rows). Every strike is also the active scene's morph event — a geometry advance, mode jump, or re-seed | -| Buttons 1–8 | Learned from the hardware, then toggle anything: rack, Auto-VJ, synth, transport | -| Wormhole scene | A pad strike toggles warp (stars streak with aberration and Doppler shift); sway sets the warp velocity; a press held deep (≥ 0.7 for 0.25 s) opens the wormhole — a ~4.2 s lensed transit that exits into a different sky | -| Mouse move / button / wheel on the stage | XY position / Press / Pulse when no Sway is bound | -| Click a control on the deck | Selects it in the assignment panel (touching it on the hardware does the same) | -| Panel grips / chips | Drag to resize the rails, timeline, deck, and input box; the corner chip collapses or expands a panel; double-click a grip resets it | -| `1`–`9` | Select a scene from the active project's pool (disables Auto-VJ) | -| `Space` | Crossfade to another scene from the project pool | -| `A` | Toggle Auto-VJ | -| `Z X C V B N M ,` | Pads 0–7 | -| `P` / `L` / `I` | Play or pause the timeline / toggle the loop / import stems | -| `G` | PLUGINS drawer (`.gan` surfaces, VST3 host) | -| `Delete`, `←` `→` | Remove / nudge the selected timeline clip or section | -| Timeline | Drop audio files on the band (one track per stem); click a track head to edit its effects and BIND them; Shift+drag on a track marks a section for an effect | -| `S` / `R` / `E` | Synth / rack / kit drawer | -| `F` | Toggle fullscreen | -| `O` | Solo view: hide the rails and bands, stage only | -| `H` | Controls modal (the SYSTEM check is reachable from it) | -| `K` | MIDI monitor (`M` is a pad key) | -| `D` | Documentation | -| `A W S E D F T G Y H U J K O L P ;` | Play the synth — only while the synth drawer is open | -| `Esc` | Close the topmost layer: popover, drawer, modal, then selection | +Build system: [BUILD.md](docs/BUILD.md). Environment variables, settings file +locations and network endpoints: [ENVIRONMENT.md](docs/ENVIRONMENT.md). ## Documentation -The documentation viewer inside the application renders this file and every document below from the copies bundled with the build, so the text always matches the installed version. The `D` key, or the DOCS button in the top bar, opens it. +Every document below ships inside the application and renders in the +documentation modal, opened with `D` or the DOCS button, so the text always +matches the installed version. | Document | Scope | |---|---| -| [docs/INDEX.md](docs/INDEX.md) | Documentation map and reading order | -| [docs/OVERVIEW.md](docs/OVERVIEW.md) | System overview, the cockpit, terminology, component map | -| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | Process model, module inventory, IPC surface, security model | -| [docs/INSTALLATION.md](docs/INSTALLATION.md) | Packaged and from-source installation, uninstallation | -| [docs/DOCTOR.md](docs/DOCTOR.md) | Every system check, detection method, and fix action | -| [docs/SYNTH.md](docs/SYNTH.md) | The built-in wavetable synth, its capability against Vital, and theDAW alignment | -| [docs/STUDIO.md](docs/STUDIO.md) | The drawers (synth, rack, kit), the sample pool, and control assignments | -| [docs/MIDI.md](docs/MIDI.md) | Device detection, factory map, MIDI-learn, the assignment router | -| [docs/AUDIO.md](docs/AUDIO.md) | Analysis chain, signal sources, beat detection, the timeline transport | -| [docs/ENGINE.md](docs/ENGINE.md) | Render pipeline, crossfade compositor, effects rack, Auto-VJ, ColorMaster | -| [docs/PROJECTS.md](docs/PROJECTS.md) | The `.sway` project format, templates, and the timeline model | -| [docs/SCENE_CONTRACT.md](docs/SCENE_CONTRACT.md) | Scene module interface and authoring rules | -| [docs/SWAY_INTEGRATION.md](docs/SWAY_INTEGRATION.md) | Sway USB identity, MIDI map, driver matrix, CDN interface | -| [docs/BUILD.md](docs/BUILD.md) | Build scripts, packaging, release artifacts | -| [docs/ENVIRONMENT.md](docs/ENVIRONMENT.md) | Environment variables, settings file, network endpoints | -| [docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md) | Known issues and resolutions | -| [docs/RESEARCH.md](docs/RESEARCH.md) | Source research record with citations | +| [INDEX.md](docs/INDEX.md) | Documentation map and reading order | +| [OVERVIEW.md](docs/OVERVIEW.md) | System overview, the cockpit, terminology, component map | +| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | Process model, module inventory, IPC surface, security model | +| [INSTALLATION.md](docs/INSTALLATION.md) | Packaged and from-source installation, uninstallation | +| [DOCTOR.md](docs/DOCTOR.md) | Every system check, detection method and fix action | +| [STUDIO.md](docs/STUDIO.md) | The drawers, the sample pool, tracks, sections and assignments | +| [SYNTH.md](docs/SYNTH.md) | The wavetable synth, its capability against Vital, theDAW alignment | +| [MIDI.md](docs/MIDI.md) | Device detection, factory map, MIDI-learn, the assignment router | +| [AUDIO.md](docs/AUDIO.md) | Analysis chain, signal sources, beat detection, the transport | +| [ENGINE.md](docs/ENGINE.md) | Render pipeline, crossfade compositor, effects rack, Auto-VJ, ColorMaster | +| [PROJECTS.md](docs/PROJECTS.md) | The `.sway` format, templates, the timeline model | +| [SCENE_CONTRACT.md](docs/SCENE_CONTRACT.md) | Scene module interface and authoring rules | +| [SWAY_INTEGRATION.md](docs/SWAY_INTEGRATION.md) | Sway USB identity, MIDI map, driver matrix, CDN interface | +| [BUILD.md](docs/BUILD.md) | Build scripts, packaging, release artifacts | +| [ENVIRONMENT.md](docs/ENVIRONMENT.md) | Environment variables, settings file, network endpoints | +| [TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md) | Known issues and resolutions | +| [RESEARCH.md](docs/RESEARCH.md) | Source research record with citations | + +## Privacy and network use + +The application collects no telemetry and works offline. Its own network access +reaches Audima hosts only: a reachability check when the Doctor runs, and +downloads the user asks for. The companion installer is verified against +Audima's published minisign signature before it is opened. Links followed from +the documentation are handed to the system browser and refused unless the +hostname is on an allowlist; renderer navigation is disabled outright. ## Credits -SwayCommand draws on three prior projects: [theDAW](https://github.com/gantasmo/theDAW) by GANTASMO (MIT) for the web-native VJ-engine approach and local-first design; [Akvj](https://github.com/keijiro/Akvj) and [MetavidoVFX](https://github.com/keijiro/MetavidoVFX) by Keijiro Takahashi (Unlicense) for the VfxController crossfade-cycling pattern, ColorMaster palette synchronization, and the runtime effect-switcher architecture, reimplemented here in three.js. +| Project | Author | License | Contribution | +|---|---|---|---| +| [theDAW](https://github.com/gantasmo/theDAW) | GANTASMO | MIT and Apache-2.0 in parts | The web-native VJ engine approach and local-first design. The cymatics work behind Ferrofluid Orb, Cymatic Plate and Chrome Valley, and the lattice engine behind Quantum Lattice | +| VJ-9000 | GANTASMO | Author's own work | The spectrogram terrain behind Spectra, and the five raymarch presets and eight materials behind VJ Shader | +| [Akvj](https://github.com/keijiro/Akvj), [MetavidoVFX](https://github.com/keijiro/MetavidoVFX) | Keijiro Takahashi | Unlicense | The VfxController crossfade-cycling pattern, ColorMaster palette synchronisation, and the runtime effect-switcher architecture, reimplemented in three.js | + +Individual scenes also carry ported CodePen work under MIT from Majid +Manzarpour, Matthias Hurrle, Luis Alberto Martinez Riancho, amCharts and others. +Every derived file states its upstream, its license and its changes in the file +header. ## Legal -SwayCommand is released under the MIT license. "Sway" and "Audima Labs" are the property of Audima Labs Pty Ltd. In accordance with Audima's terms and conditions, the application does not bundle or redistribute Audima software; the Doctor downloads Audima's official driver package and companion application directly from `cdn.audima.com.au` onto the local machine, and verifies the companion application against Audima's published minisign signature before opening the installer. +SwayCommand is released under the [MIT license](LICENSE). "Sway" and "Audima +Labs" are the property of Audima Labs Pty Ltd. In accordance with Audima's terms +and conditions the application bundles no Audima software: the Doctor downloads +the official driver package and companion application directly from +`cdn.audima.com.au` onto the local machine, and verifies the companion +application against Audima's published minisign signature before opening the +installer. diff --git a/docs/media/README.md b/docs/media/README.md new file mode 100644 index 0000000..622ea79 --- /dev/null +++ b/docs/media/README.md @@ -0,0 +1,51 @@ +# Media assets + +Images referenced by [README.md](../../README.md). Every file here is generated +from this repository's own code, not captured by hand. + +| File | Size | Source | +|---|---|---| +| `banner.webp` | 1280x400 | The `willidream` still under a scrim, with the wordmark in the bundled Source Code Pro | +| `hero.webp` | 1280x720 | The `miraclemile` still, DETONATION act | +| `scenes/.webp` | 480x270 | One still per registry scene, `` matching `meta.id` in `src/renderer/engine/scenes/` | + +## Regenerating the scene stills + +`gallery.plan.json` is the scene-harness plan the stills come from. It carries +one entry per scene in registry order, each with the exact `io` snapshot +(palette, bands, level, beat, knobs, gestures, strikes, transport) that the +scene was photographed under. + +```sh +node scripts/scene-harness.js docs/media/gallery.plan.json +``` + +The harness renders in a hidden Electron window and writes one PNG per shot to +`%TEMP%/swaycommand-harness` unless the plan sets `out`. Shots whose name starts +with an underscore exist to advance a scene into the state the next shot +photographs: `_willidream_bang` runs the universe from the singularity through +the big bang so that `willidream` can fire a hyperspace jump into a settled star +field, and `_miraclemile_open` moves the act knob off zero so that the act +change registers as a move rather than an initial value. + +Two properties of the harness affect what comes back. Scene instances are cached +across shots, so a scene's shots must stay contiguous and in order. The clock +`t` is shared by every shot in a run, so a scene's absolute time depends on what +ran before it; re-running the plan reproduces the setup exactly and the frame +approximately. + +The PNGs are then scaled and re-encoded to WebP at quality 0.80 (0.86 for the +hero) through a canvas in the same Electron runtime. There is no native image +dependency in this tree. + +Cold-cache warning: on a GPU shader cache that has never seen these scenes, +`miraclemile` and `naturestomb` block the calling thread for one to two minutes +on their first draw. That is the open compile regression recorded in +[HANDOFF.md](../../HANDOFF.md), not a harness fault. A second run is fast. + +## Replacing a still with a recording + +The README references each scene by path, so a recording replaces a still by +taking its name. An animated `scenes/.gif` supersedes `scenes/.webp` +once the link in README.md points at it. Keep the 16:9 frame and a width of 480 +so the gallery grid stays even. diff --git a/docs/media/banner.webp b/docs/media/banner.webp new file mode 100644 index 0000000000000000000000000000000000000000..fb7b0b1f7c0fb74506708d5c854f9aba3fdf559d GIT binary patch literal 59198 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

%tSghiFZrR%0l$eiaQsP1hH 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 IHZ1@E0Oh1m?*IS* literal 0 HcmV?d00001 diff --git a/docs/media/gallery.plan.json b/docs/media/gallery.plan.json new file mode 100644 index 0000000..3e3895e --- /dev/null +++ b/docs/media/gallery.plan.json @@ -0,0 +1,347 @@ +{ + "_comment": "Scene-harness plan behind docs/media/scenes/*.webp. See docs/media/README.md. Shots whose name starts with an underscore only set up the state the next shot photographs; their own PNGs are discarded.", + "width": 1280, + "height": 720, + "tier": "high", + "shots": [ + { + "name": "beams", + "scene": "beams", + "frames": 260, + "dt": 0.01667, + "io": { + "palette": ["#ff2d95", "#7a0bc0", "#2de1fc", "#f9f871", "#ff6b35"], + "knobs": { "3": 0.55 }, + "level": 0.62, + "bands": { "bass": 0.78, "mid": 0.52, "high": 0.44 }, + "beat": 0.85, + "xy": { "x": 0.5, "y": 0.62 }, + "gestures": { "pulse": 0.4, "press": 0.15, "sway": 0.3 }, + "strikes": [2, 6, 11], + "transport": { "playing": true, "time": 8 } + } + }, + { + "name": "swarm", + "scene": "swarm", + "frames": 300, + "dt": 0.01667, + "io": { + "palette": ["#4d1bff", "#00c2ff", "#ff2fb9", "#08f7fe", "#ffe66d"], + "level": 0.6, + "bands": { "bass": 0.72, "mid": 0.5, "high": 0.4 }, + "beat": 0.7, + "xy": { "x": 0.62, "y": 0.58 }, + "gestures": { "sway": 0.34, "press": 0.2, "pulse": 0.5 }, + "strike": 4, + "transport": { "playing": true, "time": 12 } + } + }, + { + "name": "_ribbons_settle", + "scene": "ribbons", + "frames": 300, + "dt": 0.01667, + "io": { + "palette": ["#ff2d95", "#7a0bc0", "#2de1fc", "#f9f871", "#ff6b35"], + "level": 0.8, + "bands": { "bass": 0.82, "mid": 0.9, "high": 0.5 }, + "beat": 0.7, + "xy": { "x": 0.5, "y": 0.55 }, + "gestures": { "sway": 0.12, "press": 0.62, "pulse": 0.6 }, + "transport": { "playing": true, "time": 14 } + } + }, + { + "name": "ribbons", + "scene": "ribbons", + "frames": 34, + "dt": 0.01667, + "io": { "beat": 0.95, "strikes": [3, 11] } + }, + { + "name": "voxels", + "scene": "voxels", + "frames": 260, + "dt": 0.01667, + "io": { + "palette": ["#ffb300", "#ff6f00", "#8d5524", "#fff3c4", "#e63946"], + "level": 0.6, + "bands": { "bass": 0.8, "mid": 0.45, "high": 0.3 }, + "beat": 0.9, + "xy": { "x": 0.62, "y": 0.55 }, + "gestures": { "press": 0.1, "pulse": 0.5 }, + "strikes": [3, 9], + "transport": { "playing": true, "time": 6 } + } + }, + { + "name": "nebula", + "scene": "nebula", + "frames": 300, + "dt": 0.01667, + "io": { + "palette": ["#4d1bff", "#00c2ff", "#ff2fb9", "#08f7fe", "#ffe66d"], + "level": 0.34, + "bands": { "bass": 0.4, "mid": 0.36, "high": 0.3 }, + "beat": 0.2, + "xy": { "x": 0.5, "y": 0.5 }, + "gestures": { "sway": 0.55, "press": 0.12, "pulse": 0.15 }, + "strike": 6, + "transport": { "playing": true, "time": 22 } + } + }, + { + "name": "mandelbulb", + "scene": "mandelbulb", + "frames": 300, + "dt": 0.01667, + "io": { + "palette": ["#4d1bff", "#00c2ff", "#ff2fb9", "#08f7fe", "#ffe66d"], + "knobs": { "3": 0.5, "4": 0.45, "5": 0.6, "6": 0.5, "7": 0.5 }, + "level": 0.55, + "bands": { "bass": 0.6, "mid": 0.5, "high": 0.45 }, + "beat": 0.5, + "xy": { "x": 0.55, "y": 0.52 }, + "gestures": { "sway": 0.42, "press": 0.25 }, + "strike": 0, + "transport": { "playing": true, "time": 16 } + } + }, + { + "name": "cymatic", + "scene": "cymatic", + "frames": 280, + "dt": 0.01667, + "io": { + "palette": ["#ffffff", "#9bf6ff", "#4361ee", "#7209b7", "#f72585"], + "knobs": { "3": 0.55, "4": 0.62 }, + "level": 0.6, + "bands": { "bass": 0.55, "mid": 0.66, "high": 0.6 }, + "beat": 0.7, + "xy": { "x": 0.58, "y": 0.55 }, + "gestures": { "sway": 0.35, "press": 0.12, "pulse": 0.5 }, + "strike": 5, + "transport": { "playing": true, "time": 9 } + } + }, + { + "name": "_spectra_bass", + "scene": "spectra", + "frames": 90, + "dt": 0.01667, + "io": { + "palette": ["#39ff14", "#0affef", "#ff3131", "#cfff04", "#7df9ff"], + "knobs": { "3": 0.5, "4": 0.6, "5": 0.5, "6": 0.5, "7": 0.6 }, + "level": 0.35, + "bands": { "bass": 0.7, "mid": 0.25, "high": 0.12 }, + "beat": 0.8, + "xy": { "x": 0.5, "y": 0.5 }, + "transport": { "playing": true, "time": 2 } + } + }, + { + "name": "_spectra_mid", + "scene": "spectra", + "frames": 70, + "dt": 0.01667, + "io": { "level": 0.7, "bands": { "bass": 0.4, "mid": 0.8, "high": 0.55 }, "beat": 0.3 } + }, + { + "name": "_spectra_high", + "scene": "spectra", + "frames": 70, + "dt": 0.01667, + "io": { "level": 0.5, "bands": { "bass": 0.85, "mid": 0.35, "high": 0.7 }, "beat": 0.9 } + }, + { + "name": "spectra", + "scene": "spectra", + "frames": 60, + "dt": 0.01667, + "io": { "level": 0.68, "bands": { "bass": 0.6, "mid": 0.62, "high": 0.5 }, "beat": 0.6 } + }, + { + "name": "_vjshader_pick", + "scene": "vjshader", + "frames": 120, + "dt": 0.01667, + "io": { + "palette": ["#080416", "#00c2ff", "#ff2fb9", "#4d1bff", "#ffe66d"], + "knobs": { "3": 0.38, "4": 0.5, "5": 0.44, "6": 0.5, "7": 0.35 }, + "level": 0.5, + "bands": { "bass": 0.55, "mid": 0.45, "high": 0.4 }, + "beat": 0.4, + "xy": { "x": 0.5, "y": 0.5 }, + "strikes": [3, 12], + "transport": { "playing": true, "time": 11 } + } + }, + { + "name": "vjshader", + "scene": "vjshader", + "frames": 220, + "dt": 0.01667, + "io": { "gestures": { "sway": 0.3, "press": 0.28 }, "beat": 0.5, "level": 0.58 } + }, + { + "name": "ferrofluid", + "scene": "ferrofluid", + "frames": 300, + "dt": 0.01667, + "io": { + "palette": ["#12002a", "#ff2d95", "#2de1fc", "#7a0bc0", "#fff3c4"], + "level": 0.72, + "bands": { "bass": 0.85, "mid": 0.6, "high": 0.62 }, + "beat": 0.8, + "xy": { "x": 0.58, "y": 0.5 }, + "gestures": { "sway": 0.3, "press": 0.12, "pulse": 0.6 }, + "strike": 6, + "transport": { "playing": true, "time": 13 } + } + }, + { + "name": "chladni", + "scene": "chladni", + "frames": 300, + "dt": 0.01667, + "io": { + "palette": ["#04121c", "#2de1fc", "#ff2d95", "#0f4c5c", "#e0fbfc"], + "level": 0.66, + "bands": { "bass": 0.6, "mid": 0.72, "high": 0.62 }, + "beat": 0.65, + "xy": { "x": 0.5, "y": 0.55 }, + "gestures": { "sway": 0.4, "press": 0.18, "pulse": 0.45 }, + "strike": 10, + "transport": { "playing": true, "time": 15 } + } + }, + { + "name": "valley", + "scene": "valley", + "frames": 420, + "dt": 0.01667, + "io": { + "palette": ["#3c1053", "#ffc371", "#a83279", "#ff5f6d", "#ffd9e8"], + "level": 0.55, + "bands": { "bass": 0.6, "mid": 0.48, "high": 0.38 }, + "beat": 0.5, + "xy": { "x": 0.5, "y": 0.44 }, + "gestures": { "sway": 0.2, "press": 0.08, "pulse": 0.3 }, + "transport": { "playing": true, "time": 20 } + } + }, + { + "name": "lattice", + "scene": "lattice", + "frames": 400, + "dt": 0.01667, + "io": { + "palette": ["#4d1bff", "#00c2ff", "#ff2fb9", "#08f7fe", "#ffe66d"], + "level": 0.6, + "bands": { "bass": 0.7, "mid": 0.55, "high": 0.48 }, + "beat": 0.7, + "xy": { "x": 0.56, "y": 0.55 }, + "gestures": { "sway": 0.3, "press": 0.15, "pulse": 0.5 }, + "strike": 3, + "transport": { "playing": true, "time": 18 } + } + }, + { + "name": "_willidream_bang", + "scene": "willidream", + "frames": 620, + "dt": 0.01667, + "io": { + "palette": ["#ffffff", "#9bf6ff", "#4361ee", "#7209b7", "#f72585"], + "level": 0.55, + "bands": { "bass": 0.6, "mid": 0.5, "high": 0.45 }, + "beat": 0.6, + "xy": { "x": 0.5, "y": 0.5 }, + "transport": { "playing": true, "time": 0 } + } + }, + { + "name": "willidream", + "scene": "willidream", + "frames": 200, + "dt": 0.01667, + "io": { + "level": 0.65, + "bands": { "bass": 0.75, "mid": 0.55, "high": 0.5 }, + "beat": 0.8, + "xy": { "x": 0.54, "y": 0.52 }, + "gestures": { "sway": 0.35, "press": 0.2, "pulse": 0.6 }, + "actions": ["hyperspace"], + "transport": { "playing": true, "time": 10 } + } + }, + { + "name": "_naturestomb_open", + "scene": "naturestomb", + "frames": 60, + "dt": 0.01667, + "io": { + "palette": ["#0f4c5c", "#5bc0be", "#9bf6ff", "#3a506b", "#e0fbfc"], + "knobs": { "4": 0.1, "5": 0.02, "6": 0.3 }, + "level": 0.5, + "bands": { "bass": 0.5, "mid": 0.45, "high": 0.4 }, + "transport": { "playing": true, "time": 1 } + } + }, + { + "name": "_naturestomb_plate", + "scene": "naturestomb", + "frames": 420, + "dt": 0.01667, + "io": { + "knobs": { "4": 0.7, "5": 0.15, "6": 0.35 }, + "level": 0.6, + "bands": { "bass": 0.62, "mid": 0.55, "high": 0.45 }, + "beat": 0.6, + "gestures": { "sway": 0.3 }, + "strikes": [2, 7] + } + }, + { + "name": "naturestomb", + "scene": "naturestomb", + "frames": 300, + "dt": 0.01667, + "io": { "knobs": { "4": 0.9 }, "level": 0.62, "beat": 0.7, "strikes": [4] } + }, + { + "name": "_miraclemile_open", + "scene": "miraclemile", + "frames": 90, + "dt": 0.01667, + "io": { + "palette": ["#2b0a1e", "#ffc371", "#ff5f6d", "#a83279", "#ffe9c9"], + "knobs": { "4": 0.3, "5": 0.05 }, + "level": 0.5, + "bands": { "bass": 0.55, "mid": 0.45, "high": 0.4 }, + "transport": { "playing": true, "time": 2 } + } + }, + { + "name": "_miraclemile_act", + "scene": "miraclemile", + "frames": 260, + "dt": 0.01667, + "io": { + "knobs": { "4": 0.7, "5": 0.62 }, + "level": 0.6, + "bands": { "bass": 0.68, "mid": 0.5, "high": 0.42 }, + "beat": 0.7, + "xy": { "x": 0.5, "y": 0.5 } + } + }, + { + "name": "miraclemile", + "scene": "miraclemile", + "frames": 150, + "dt": 0.01667, + "io": { "beat": 0.9, "level": 0.68, "strikes": [4, 9], "gestures": { "press": 0.9 } } + } + ] +} diff --git a/docs/media/hero.webp b/docs/media/hero.webp new file mode 100644 index 0000000000000000000000000000000000000000..46e28bc84518ec6802b7e2b5c1c79db0b44e116a GIT binary patch literal 78834 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�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 literal 0 HcmV?d00001 diff --git a/docs/media/scenes/beams.webp b/docs/media/scenes/beams.webp new file mode 100644 index 0000000000000000000000000000000000000000..572c391e02a77c38e94444c2c62b707476b7ee4c GIT binary patch literal 13286 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 literal 0 HcmV?d00001 diff --git a/docs/media/scenes/chladni.webp b/docs/media/scenes/chladni.webp new file mode 100644 index 0000000000000000000000000000000000000000..eeb93159020ca8446e58d9696b8d5ed311d5466d GIT binary patch literal 18942 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 W(EqY?vAxqorbH(5^M|W{<^KR0h|Z<} literal 0 HcmV?d00001 diff --git a/docs/media/scenes/ferrofluid.webp b/docs/media/scenes/ferrofluid.webp new file mode 100644 index 0000000000000000000000000000000000000000..a13da2c5c012d98c1e2564020a0e413dd5fc421d GIT binary patch literal 8892 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/media/scenes/mandelbulb.webp b/docs/media/scenes/mandelbulb.webp new file mode 100644 index 0000000000000000000000000000000000000000..800de1e864e02c19cfc87696dec611cb83f078c4 GIT binary patch literal 13772 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 literal 0 HcmV?d00001 diff --git a/docs/media/scenes/naturestomb.webp b/docs/media/scenes/naturestomb.webp new file mode 100644 index 0000000000000000000000000000000000000000..ab670b9d016c4f0411af86479c59af22445483c9 GIT binary patch literal 9914 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 DkLdV^ literal 0 HcmV?d00001 diff --git a/docs/media/scenes/ribbons.webp b/docs/media/scenes/ribbons.webp new file mode 100644 index 0000000000000000000000000000000000000000..0e46612de544693ead22c548d5e89ce90713de63 GIT binary patch literal 5026 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∓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 literal 0 HcmV?d00001 diff --git a/docs/media/scenes/swarm.webp b/docs/media/scenes/swarm.webp new file mode 100644 index 0000000000000000000000000000000000000000..f13f57cf03f491a215a1a5953706950019f1158c GIT binary patch literal 33728 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 literal 0 HcmV?d00001 diff --git a/docs/media/scenes/valley.webp b/docs/media/scenes/valley.webp new file mode 100644 index 0000000000000000000000000000000000000000..bf4429bb3d32c12e533225b69f7447f5b681ad03 GIT binary patch literal 6894 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 literal 0 HcmV?d00001 diff --git a/docs/media/scenes/vjshader.webp b/docs/media/scenes/vjshader.webp new file mode 100644 index 0000000000000000000000000000000000000000..e81bbc1ea8361f75b8911e2e2c85f13696274f24 GIT binary patch literal 21788 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

JP}FYunmf%ei!{<42T;W*T>E(-Wexra_BP`h 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 literal 0 HcmV?d00001 diff --git a/docs/media/scenes/voxels.webp b/docs/media/scenes/voxels.webp new file mode 100644 index 0000000000000000000000000000000000000000..9f7bfe0404a2862ce65c1346caf6d0808992202e GIT binary patch literal 9132 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 literal 0 HcmV?d00001 diff --git a/docs/media/scenes/willidream.webp b/docs/media/scenes/willidream.webp new file mode 100644 index 0000000000000000000000000000000000000000..6c2eac8958d08f612d892daac89971d2802ad979 GIT binary patch literal 52470 zcmaHxQ+Q@Uv+v&+6FU>zww;M>JDJ$V#1q@LZQHhO+j!4>dtdB*an7lJy4J6&|Ig~K zweIREB}sAd>q!7WT})U(O@UJb761Sc{+l}>0C*69q=<;ZD9FDh0A%z(9-I*Xu(5S^ zRQe@MsG+Gv2(=3U`8WQ{42_-a|C|1={-5f3`M{xO>Qe>3HO*yz8R_do3BZ14O}qwpVgR8bQ7$0q-n()@q1(f?v&d&mFiBmZf5 zZLD4XbJlV+Nvu5dqV%4xBw@B65tm=_&@poTmLh=d;oy+2><|#{hydo8UWA| z3;78tU$a20shBpr17M7D`o-r1gI^;sW~Sv!UzK3h zZ|i;S&Eb37YXFD|v|G%1B6#lU$o|NA>2c({^qYNx0alz{o!5PoT{3+jUZ}o}-GO|a z0L^cpnpc2814Q8WmVU1Q@I3oUCzN`a>_QlQ#p8O`g0YII9xnX`G9#JfWKKXqLEc>;7tv%;G)_nUt^j!Li2xJ0( z12eupz7VfUfWWUE&m3US%_qUvB=8FuxOejW0lfK``2;`1l=NOkq(DS+rM$!+L!-Rw zypEwT$7%9krkZsx&&_Wz4%4`he*%%lHlWg=dx*oJnex)G)x3&pO;^B_!em%1hKM< z+4AOBVu&?aM!NT%4Fe4X;}bAmI~Yjpn&tNzj>SHegE`tYY=I}k8=lm7s_j0m^YLhl zcUR!lLWoEAbqGNOpVNTRASoe0mC^T8J)tbhPZ za9%yZO*AW+uqfonky zkh&eTu)D3M3zduw_{!8TGgiUS+M`6aa@6|X8lhYb0)Pr(ANROAqfez~Z0BnQiD?08 z5>Dcx7XoeTN*_x#<;93pNLC5lj?K7@4%hzWkld0!?Yi-mEC)1@+SrrrI8!QJi+v+ zO(dO-XAy8EKW-L#lGdv`Am)jfqcSGhFr=898?MU8Jn#H7?_hV{DIkVS--#Z6=0`2( zEY7;@cl;ClEvqGplDSXd#t3Q?U;o8Uo)VVXnDA`BtgHSFn>}~d-6-M({^Dex{w@0F z9>KLy#P>~;`uQYq8_w5=2m?6gmj_%a=Ly)$EcQLdr@A9@My(ssKeq|w>WN*<;dVjSe(jHNrAE-F+di;O{OAJ_^*M!0Zo$L;Z=l=8!zgP)eLm&O`)FDcdCU|_L zU9Jk9OQ2f$VpY43M6s2VMWM`CYNWN5<6Mb(*3O*n=+m$YZMkqwd5ZKdfeB4Hq{cXi z1#i9?MPBb-9E8h-FWxw`;eNuHNj()Z5I^|GFQhSZ(BxQ$aL1V58N(uw-D%Ma4nSf+_l6@_CeuD^Nj z<%lx`do=`sO0B4A4~kzKAlWJ1r=t(pV8q%f8P!LPVK*Tey8T-4`;@nf)|djzJ38ycm{U{UfYUff`z16bi?$~5+{KG&%L(eto z=?K<$LV87b+c`s6Ah}-erl*?%LOy>df6}FAh)(#1xkx2`TUw)lDrylJaZ>YX$xZkT zxpANBFkz@BgB+Ut%;_Z;nGliZinL74LJ$5eIe+fmyt>R77n^&Ne0;SjHFYM6LJ>#ftsL~$H!4mMBe*Ux#Z)~R zP}3@awikmoR@n5oZfW=B_s6Pelna`k_i?O^984nZ&bPvFKvT(k-oblj;E|uctgAIX zuuY&^{T2%STWh*K!S6c)WJf3IGvbW5zeS`r|1f$s!q-AfnxHn#JCWkg3j=}%-bPxp zT9h2tiUilK;!bG` z2>f~K6q@sWyUGIm6uY|4+m_%({uBRtMw_`k3YjQ3(Te};LcsytPRdZwOy^EE+m1ST zIk}n{WF4|Uy9~x{e_sW`+{>k)EsOMoGVFdyBfLl_}$s-%q;>&}{m);>$NT2RW3`O4ag^XJ^Eor8n!c=Q6azEDa-yP2I?CV`P_>-O z%E|L)Csts98#;c&W#)T76Lj&a#ZnWLeB-rq;zbwpY^@Ub0s}NeJb@3GGtLpj>?eHzdoHTajli)uetCe5 zQ-y-JA>`#4nP`AyA%Z&fFo18kiXlQ>ijedw=BQOM6R1ohSGTRoIsU(>QU3Vyy3II>;c`lWpN|8M$dI!ovxC9Oh zjXrmOpdx-?WH{$Bou!h|D;)RnjDMzzdc`}u7$%2i(@EoCihRWK#Hot&axntF-_z(u zSWGDIyb+S-y^c_)4gVT^++S(O-=HTGV9Gb$C?ow2;BPoBVVXNuDibYy`_|OZfUd$S}!VGUR9nCI7qc3_Cf6b;1de zhyWA|VU!!`?RaSP{ws{qW&|QMhb4;a1W!ADiOJj)sY%6tFKPuPp(FVV{)v-|SwCHw zJr{b;NFYG}JTQ{$Et0w1LZA;quI@n!LV{G3ZiLnvy<7R;vlr^iOF;-EU zsh66|GKyYi!Bs&jdSQeG?f$Eg-?rC5AYtGW>Pn41(>jZ~xDFIfgsX_t_$5%3WLqpWym)c;V61{L9)Wg zNKtxq^XpW}<@x7^r#DPP5O1u z#d&j8_J(ECSUuyAmjwH&zZG;LfR@9^1A?j4%?Cg5wbvCN`p@ztTh0A!0%h0Kd-l3w ze9vB#qg{WC5Y%LbqaCn#K=kqZ#1KwNw&@vduGAJ4CnQmkeIfycZjbm3W5y+HqT$HF zwheq&Ho;n3F=S*1aT1`{xJ6oYD(x#)y4Q34j3ZZ@f_NK|JAgKc_}mY><-0#df+4n_ z$?^&J_VR+`JdZ&~jq9=441N)e7K1YBB~l{IK^@BVXnVnv&zYP0+FH5YqE83Hc5e|z z!n&09&%pFmO}9UOwz6p_R8ba*&iu{9&ycV`IG1N=p-(y+l+ul^Bsk}uTq|BJuRYrD(Ps?Cl?66>q&|gQqCt`hszVzKW=ELO$M)_)}pp20rl_l;Qpkc&$W5 z=6^zm`@!NKWpT4Lw|b#s&*`uNVz@j2X+&8nJ)9FP;Tg#uXUr374C@%!?Xq;mC+WG& zXA46d-Sjku;h2_>486JAivJGehxl`#jmlp4%E=ucMp>C_3vUkGi+xwpUE^tmF>IHxnMhHLwnSIBL}hgo zHl)wMZtG;0STGzz7xjsj8RBT5p6bC)lrj?AV`QuJ~Kv5uFR!3vWJmjzWW?6i+ku|!z z5Z*SQo@e;`3IEQ5E*fTr_Ye|@cAwtydpRHc>e`yKpKloEzCRz3r~FP+?{CS^$pI3h za{PE)2<&~J`(cwm-zMGOz7+cCW$r_9=r7H7>*U>E`V(AkI=Dvc>YGSzel5%7D=Ygc z=jDWRa)>xcG{OOqA7a2n%KM6FkMY4Ft%&^VMHk};s}U3eyPv=50DA;oCmp;Le%FCJ z3!jKa#|)ST-+sUZqBnKp&-8O3a6z{6RkN>N2d>#6_#r?mA_`o-DY}vv3VOWmK0`>x z*S3vsnZKLeu@r$8xELR#)ZW9y(#vqDzSHJ~6){RZJ3NxYd)OFt=;zDG;Rbsh6JL{4 z+~4L^&K?2MJzdh|(Y<|@V9{uXj`GlvK7B1mBjn-q24q*S`SlRw4`-`WnFKaJcU(2u zn^_vlTiE;b1D6;0safuS>TI{&Z>gSPHkbPLV{fA18&v(S*x_m3drTU|TDlKl*LQU3 z^MC+}O7P26_IO{9tZo9DV&6U9#-_V^)&*f>;?rzjyND^F2>fXo9!LbxLg<>&RYG?E zIU21IUr&}W5Y84FFV}=XTbrn#VjZ>sHwRY0sH*ggNc?p}Bdv=lGhY?3slG9brpxJ) zr4R>8(0kPn9I~B_PUNK(D$lw32?DP{H^t#}&dmJa>O0pu?mdxPAhxv(s~9%T(n9Zg z{Ls6T0VTaqXHHsNuK@84F?l`118V?luZtk2p7JRiBROF?Rh0-2?HX{y#zN=d6trns zBC7DqR3tDCYqY1@!k#kmtT2j_#cW~l$3kphxx8w80in08O4WN$ON~wtXqp9HA8RA~ z-S#HmnPJYYB+&}M5)9CniCH_D(e+r>8TPQi2ZqAax?CU6h(iO8)DtI-FS}*du^+B& z<#mb;1#*$jBfB>tLn8>H^nBiicM~n~=Zu9Hye>1w@^0*L|Dg3RBzBp3)05`(m6D<_jn z1!(k#VD8Nc=G&XXr}Dof`zt4b8vw4q5pwPf*>&=+)cH0yaBUS3ZKfy@M>f>sBVd6mZemv6*^0w^^sPb0r}Ew(djF%fvhu7 z8`VpxN8fe2-pVa;aSGqs5Btro;Qe5hVxKu` zioY3-_Lugr2U_n&yWTSG{03`JhW9#AzD~UW7FjR`K3g6QmD`A7`eoi|qZ-^IODf6J$AWWxztq1GBl_?jkl zyPE|cPH^w@8`NwSf<1TQ)B)PN*7r8Ic-DKBHA=cIb*(J}YlC$uKH|==60KT1hQqAm z-e>GX3dN<+!jRw=ftiQnZ*Vj3EzPl$B@hyW#Wa;KK&|BL$d(}DOZ1Wq_mJ?BGn-Bm z>?}S|F|fwg+N~gv9|;uG%il(A6V-C1aE&qU@^l+qzJqPJjFJs}y}p}VRc2VBAEdvU zI=$5+B5eE=*^bUuP57Ihph|Kyj)l4=Q?BW@Aj!d4Xdvg8LAHA{)z+-wa|jR^SE-;iIigBio9t08$NDokI2fSa$z@fO40FAc^^kknSZiHg8QY0s~;mJwIi zW>8;?$XH(ckw5Jju!RMn;mG_*Zl$D4Y`V#Fd{qaAr9+`YAjt_yz3(SdI?NBLj1hY$ z&yMH7*pH4zs-*Blen{I}{TZbH+b?^N1SOm!7u55{fzWPOC|Epq4+1R|`+AyDJ`PPO zO#9je%Fc(!mrJDbM7PC;QdZ;Vb^5;hCHr@-k`yCvjqTf5)Jw=1A)VxyvTQ&1a@fC= zn?+V)BDmtaXF!EueBBlZM|N?}JQHEOuI?}MUd!$#l62!thh@Gf5l93UA3P{hljl3} z!O81S6#%yZirtQX-Cm)>ywG(@T=YRBSiw2k-q-{Yqx4j+g*s5OvfqH-+@ zh)OQ+u_5lat2@HL)z@-^l$7!mM^rn<`o8R&VC<)naM$tZVy;h}u^8gKGt|}_3P0ix z0_CgX>7n}zJ}UxlI3}LXTqHqj$pmo_%qvdKU;K!!?S%qLcgT5&&skaN5(mas<+@b^ zIY98Wnafec_rM6#Omv62|E5*`TEGAN$7t#7mA*lo4sBFGpXW1PP;e$Mop-9`8r(c$ zFcM3*#sMS4DJAiFRK&vJt#FZ8h{MVZ-)e9=2mR#65Jp~eSL4k z(8aE8ORYhxtQggSw&v%YoF!O$do?QCy-!?2;k}2KJaV0)xy0jT`mHKH@n}xK%&FVp zcAb&D+5MxB1Wyo(drytLwTawNu-!gsYXxK#a;OizxS#c%iai98JQve0D;U&PD@m^I zhg}K2T&!gZwE!eb@`0;6obNMLO#$SCnGSgbP4m`_71HiU%{Uxb1Q$iWIR-wg*RLqR z_->g_c2KSwY$L``^L#?`)R{kHB&$q2_~HV-adzRp_ZZR~P&|qa&OEm|(itCL!>C}Y zHL7arE)ig(8Cm^3=oqex z624}j>Fbre=!~a|n>4AkP*RGGuGGaMx+NU#ojR?PIRs4Ud5b#%J#LpR(hfhrLfOS( zT$fS)=>G10^UhEduprb9_t0Wp&}w$VgG)8qa{X$}&=P=I`i;)Li?8jkYc8djdEYc8 zuHhh+BvhTu7JQ2LD73FP!#)UZP4*=NH{Tw27(`dPj{v--t*oO=)%55$&|6hb%UuyE zT5E02&2@{+vb96y~*b)>4597 z1$`?6k=&@7r73f-rMl4zrSD08q6l4{T}>+U>`RS6sCBIF*Oiulf%UK%S5Y?vJtZ^z zPN@hwUo*9qrwmjmBTq#I+gSTWY0u-=j)f>AwLR<+dd}$!77WAe%Y zWI%o+6aYlT1(f?L)zCL?!S)6-7I1N`tKLDxIXeXc6z!n$`0zrl;WOrdJ4TsKme2~4 z<|G1rC3_BEh4T2Rr!N%l~FD7P<3P2(*W z2uQzW^$rSUh(&4cT%dfA4pgb@M3u$i=;}Z!^jj$KVZ$4uyu(xmat(nkWA!&@NgkBW zj&<9A{mfkAXbQVgbq{ilteaC3-Po)!cC~mD3cetN;&+7DtwqgULaa>!_Eip5$^E2y zmY%U)At$l(7(6#o$x7JyXvIdTL{}QPepFv2Pg9_4W{aEJBE1`$XrHu#=1a7UTyM(c znG6b)A-;Bs>@vn-zMCU(bgD%|otU2sLCPewM-(y#d&AO5Ry8Hah@;U7EN?Ihr7v$|vGf;Q7);KGVw2NRqklYW(-wPfM=um0-IS1Tqfb;N90J zxPFo}Vkctm$owW(51&7}C_fD3{?+0pD`uN3`Qp3IUh3YZ@n_V$s`A1!=ZSNYmS*C| zr$FMd^*QC!d=$F)p{O$jz`5SY9AxoMCNv_8QXyRU8{DTCPnZkwy0l?e@JM zK}S%7nK2?>D)zU0vDRjKu5HW&z?H%V0S>yc$dV2o?a;3w+Ke3!3youH90jHTl@nd? zaZXv7`^_NbJ$KKtKcCf6XOgm1V%WJ^HC(m%Z5`21ab-9X?0E3YoqW?WRT$Fn?}9|N zbbgVYVXUyNp94*r=1oHP&{F=a)`z&wg;|(wr1GX`o+jCLgeVn)MVNa1;LK;1jD@?( zc}YiVgSnl0-Y8Vkfa8n)6_c#TR%w>qyGSV9>kN|t!tPYVOWPXy;LQ_M-pkjUXp8crS;(Eh0h20y4$Rg7$ebDax`wqvNuTR zLK&Hh?FxH5WLNirgkU7v26(JaDjac34yPBkb;eFH?BOp5+_}~*{89UNFMW)ERq%&e zAd(tev1)UqM1TYVzBsa(N2hnIy+XgMDq*Wk87!j%2m(2IQ&b|W%3V-B= zODvZ{4sg6ac7(^}kc5f|l8=g!S7Q5Q+rNWz&5}%6CCiHS1;fLr!Qi2_OuI?Y@pytw zq3ok2>R8Iee#6km`^%)*rlxo)*Da}p%o5(ye~!<+&&c!u)Bvd$mmRzEY`1%sYCR>Y zG(FQiuYy9obkR!Dt+*}-!oGlaXeZ~$K=XScQKvSJcngD#fpJ_zEQ5R=wl$x$8b039 z^J>zSMzp7&@|10ndy;Xzuh&3Uy-Fy&pmaq^xI&vyS8!#m$cK8R2mY=WqWq=Uy*u7z z$n-PJFrQ!}84tRy1?HgNk~t*&!V+{(jDGi{qlWIf?W%-zb8z6^PxwzA-R47^d1uCW zG~Q|Zcdm81Ke=#2lxZ>mnDql#Ob+2MlFZ{CXT2r_+> zg4nLnM70zM2n{dJ8|`s`c(JaoB02u9c&0vd1zLm46m*)kkf*k8D0NAq61`Q27mETf z8y3qJp+AlxVQ`5caQCIDKa!Q9Y4KZg^7oQt67<`%UC*R|DBzQLxyPEagkE)Chhkx2R*VP>B0`ZX$z}a9vW3++Wo3SJKizakdv5p#d~oVC-P2gwkpPTyD9t`y zI+WeGT3+3pdgM40+^ihAB@;5pow5|UBwUXu8T192DJPd_cvQeA1SQ*#^X;($d^pZ; z#_f6Z&*}Ae2}u>-$%*}BdvYNFM<&)(vwa~oeepg@eMX&J&_1P<3GuK)5_hot)^;Cq z+C8;iL9i78(+o1pq>|Vi%SPb_zmWX>x-x@`)~Gz~d*CT% zLO-on?|bHZTypRWvz9Yr-747(;jvVN(r^?d>H+m;4=?yI+QWF-Bnx`>1RZNkh#6Iw zL`V*^JsnIx;vuFM#OH<9Y8$0N&pdT^*fK-y>6?Q6gVPlqJg4C8Tg6xf)^@6`CDI;C zW9yTBgbPGPQz(G<=ow_W%VIY9kq>6Oa|dfEY>?zreCpA}_AIoxGQVc_)CC-e*?5p6 zYH`{~@6tj`+NvrlZ)djr0p-c3WN}hqJHYYvS8b=Hns5VC*-jn&!FSM>erIM}O3RR` za$<)?Q;1FY;rbc+7N)fTGFCC-wT#-ZNHsXK=w33!n+KCWVVq_GTm)KWr`S(RG%lH^ ztLO{s2DH4}Uj^IzOSE<171d8viDYQ{e>5TgXmsJ%Pjxu_D*Oq{v~f3Q{wFtEJBGsk zPL)7T(@AqWd1v1AS`c%GlpS0a9fX(Ef}&w{N@?qF)Y{Vl$uW${Kl`E>LYg6O zDN=+_(_7d%;tVxrat{|8r$z_hp=zPrj46ERADPJ4ce3EiyBZbGsmrX&JZIeAHk1c- z@ibQ7*#zl_{K0?wPqV^F90k-_niAkQ)u7v$TQnx4RyYDDY3!hWK`}LzY$q<=^Jp@6 zL~p){ehOt?ugu5YiedbS6jobNt~@Kas6~}7i%3@4=`e}=BT41`{SBh$bOdaT zdlxjV>edSXXZTotaJtJWY)7*~R}u|-iKy%N0@Ye}0}m_Lk`D=|-4Hp8 zz|3-A=@wv#<9^1A#B~SzN$H9ax$9!*2f%h$e_Gl!W>vc`&@oI2f@gDGGY1Xmb3iT; zaPPC=S#!S+t4PDq3pH9w7fo!EjqMJy!f*jY>0poIK%~uvD5?;%p0P~b@SChlc_Z{m z%WggKu+iq)gXB#!r-Lf38xW$Hut`5MKdjNZ7km`0J>E6wnU2QzCf1pHW1^fm66@y=VrVN#z|Wk$qdF-Tj*r}C{y?u zZRC}PsVbz`Fb;nX8I569_&79RYI>S?)Y7f?oxXqs?vtkpSa78Lv4`y(-pwV&SDE>T zH0HUK6?fq^;`uN_s;@#5d+cxpzI>kSDv9Q;VrC4ep1evl+C9Yn}^IBerh*yRjM5aD2yF28<8L zrXnk12NZ|8=HB95+1xWa7z!b2WkM1G>ZaW;jP#NHkJ$%QXDjZv-^aq@DqcD4$j+&GjG{;Y`ua94W=ekO|=&l9xj# zJRTKagtMOeX^ui^M+09iHK;pmDQtA%r^Br3J#3P+0-g(HiMooGE4&%QwA4c57wE_3 zokAMqs?VLOJYLvh8UmI&>Mjy_2;U9|Jz+Ectg+m`{!`@7izDvB+5l<|oT#FynD(n= z$xP!vi8?>F^>OzxJ?w?>fNXun%t!g6!42vi-+iW_Y%&s+E|SnA@5~e@;axmerb#{X zIP@ zv`22~Xj^t}o^b~52c1hO)oskc+V)E>DUg4zyzZlO)PzZwvXb0WdYdp7r_QO>WJag3 zLowmj9x%{)9S|Z@nJOX;XpVQCXj30N9BpiDF*X#5{#`7`-)=PnUpOJfEP!k9cziXV zCfpgX2>pPaa!hp`toTlk0p8H6bZS>!$B7QE=jB$g$MM`xk;cbm-EtFfns6hVT`Z-K zxqLJ|)T{F5w~3ha-p`+Ij}Y|Xo`IHPECK+z*tsPTg^72RW-G1=p2*``8jhx2D3(2N zIkobqCKUj_%7v*b&6M~zG`9j!xLz%bO?qs=h{7- zj0Pj&#OQE0?adz_l3B{;++HArB4QX?!f6WtCnNk*K z8f+dFLj}rzkh@1vlQBbrf46k39OHN7Y6wZke(eD$O|%4M|Jo)WDW&POz_eD}Tgq#s zt|0I=*fTO>qe^WQKZrth#Us>Z72Cg_&)}GA_+r;JoLmF;P^a{(U-hBpm(g#A00{mDsml&=Lu{kg)Jg4Dm!a5-8?|bGS}Ehk zMRdie_$9$#h${$rCtjt_1!H77c3d%gBILt(t=9Zf8tHEMrPN~KkCkuJd_~~K}p_M2)U8Ix6{g(t+ zM3=404S_cA^kPJgq-!y|T7(Ep)WmZrWhvneXaO z*LG`&dX7nHCJ+S>GG^$yi0fOawGgvp!gl3hGda()cz43|ke%DBc9QO>M<&{Uuu{6+ z&!q$;$u(E|eYr~bX)=)a-t$KBGTX61Z)1yp9);E@-bB@tU3q^k4cf70y@DcXFN&QX zzCFpRa4c7(wGQM%a#(dB>|p&3M-2Z#5(lP+H37dr7A`)~*?GezQV!4JkZP3pt$mk` zbgA&1UOqpNTVyMDk}vYYm(5F2#q%w0YL>!;0`qtB5aPk1tWzD3Q8CnpyrPaAh;R;Ja72v+f|WLS-s&jpsc(&2N>^d5NjbOsi1bCfQ07yyWNXA|rDVsFOQ_Yu>zXw1}$3_MLxaNi~EwnNPab+b}8CK=^&0 zHqOp!E0jp zfo6YPiDI6_+h4{u1J!v1rMmCc4)^YnEGMznliBqXS`oiNOA(Mjt%CHndZM&y!qeL5 zg9`|t(@seKmX5sFv4GX#in{GsGVxHqTGM2&mq!_0IBz+9?8f`t2tyB>&uO?;3c$ci zs&YJkndPny#lO{76!UKwol|gGr}?PlA`Yp;I0fl**7;5suzD2gBajh%4s$?A@`0k! zc$SlpRaoun>q`8-JFmsXi1Z}-YKKnp7O%w$CtPhxPk@#q5a2V8>1P7OMj`-Aml3xU zdfP4Jb1Mw4!Oj|2oVx?+v6L0cG*go})7{)AbZJDMeSymOD}-a>CW zt7FMLKOTdZ6bBAoVQ(FHK+NT?zqcfb~b+Kq?7KG2NIZb z(EB-E{i-sz)N_^y%V0bW-WV8A5`hOVBS+J8xo}UtxPs>|U+P_WFkGZ{sE76uh8_J? zK7kOjfoUu1jZ2^?w9Y#4!!N}R6MVg!LsC4wiX^sN7$gYu@ekM#r^(g((Eeb?#+sK4 z9dn*+dNmMj1FR}1F<8Pq!qjJzC5el> z?>(U0Z#d5v1T88J4FHoLQ3d9}FvyNpcL(L<=pPSOM90QjKQtXfmk5b7g0i7BgV9K)>ZBR=4ZRgA8z;lDU*4xkTKDrl>?_H5*jsBoP)~Z{pks{ zF68f1x*7kwYY03X=C`(YJz0MoojVR}kkvKU4N7*E2xhpnDvBL$1`2Iayj@1vgsiuf zX4TEwaK3$h=X7rSwKsV8H9`c#9 zH!|c$Y~H9Ortfw!-iv>Qm8|R1#L&M2pz}hs0yb+$M0h<})>Nu?#bh*D+61FMJ&S&j zdu9qoB z^v!})f1{mJ8GiHR+vlWf`1Gzo@;YkfR%coH zqX$bIA}vsYzr!X^rJ(mc7&hY}_8~6C6+=1k)0LWd|LkW#Z;0PEST>Dnk+O@ zc3ulkH?>6|CO)O?RF)srH0gkp$=)!p6Rf#Kl{gEpw5s`W{Te1Vi)JbGl_a|5;pU#B zd*GESq6%OW)H58jKUB%ju#4HUD8!fL{7xSZs;l~W-7Js`IlToG_5lh6|5xYibYLZ1 zuf}Yri89!tEOnk;jf9YlPEc+i7BCI7r{Z%;8?qLOfPRJ1Kl@O zF_P;v6d=zhx`r;fZ0^$r&x=Ms(){H+EIWVp7%C8H7b5P;I$AzU_9IgR3C;5<}LGyddNY{1iG+$@vP9gved5 zFTh1f_cQg9VIB<0OY0!*nqjOW3e^QI0=C_fjnD=2@v(Lq!-l2T*Sz4m@}maaG;RbX z5*5#yl@3^n%oUhA4Z-<17!{s1VD?-x{MoScfDSU|qKihuPnRB@XCiN#B9Lq-y_w@M zAiyzOd}uGl10$9FyUF=luQ)t;>*`38JG}+xKW@RI18~`}rq$j)4I$nsBH%H<=;BD^ zvXlN-CavtA(K6tYNSue8T|PdPNS?Q5yE?(U*h}NiP%4RUldURyRLz`I(4CTq-I6m? zf{oHwzRaEfqx9G3ULoa8@SM`O?ok02qU@+vOjK>b9L0>PgP@bP9_uc5<+#;oVn$j_+hRH=QHnrO#)s> zY?*(HDn18D9F(b-{7+Dm(wMG#iqazf{;=ea`Q?^X3)<{bW zM)8JeUbRYv@FS}c9~cQK$XyYd;9D zjRh7>N>%ldo3AxH-!TdNk`CWK=Gfi%?WcSJ6*gzLFEKZtlJSRRahv;y>=vhH4Wiky zJPH*X2ckf)e*Bl**w?>eyCFIO3mfafU;Q2a(Zmg2FvoHD)peoE#YdEnxaYxS!D>6!fW^7KZPPvH)pxI9&NOj5jgJ8 z#GbFH1NvvfCGj7Pt0I<>RTFQ^JRqpFu7IH!uU9BSNOaa#x?~3FpYuh6roN_2mNd5Z zj|9U9=vSs}!Bf-LaL-DKigXUvL+}3M-&950S9Y2b0oeN>VXbUBj7l{tW5Iuf=Z;|J z59pAeNYnmsaA6A>zr8$CdJN`kk$o7dmESb2l^heY56-e-SukCu0S z$5H5@kHv6AiRb1TB^*AAY6;~A1z$PV@9P!1>SgBnSyxDOot7E^+A&`%`yB2A#Zj3) z3bx6pg*2EEeOat0O^SGZ+F}WCLZ+xY%n-1=<*37^M}~hxW>o|7FgS3`O3C?R;Bjh^ zxgBXNh~qYGC;HrAx5R`jve)ma8jFt~Rm+~OMF}{=EFU$oqZIU&NoXv|mckf4l(Yu5 zl(XxDk$kWCRaU3X$(cP<90xHhaOw#8V)-7JRPCGceMbqZEH_@5ilz89Dnq-VCr|wV27$pg2;79Z`@k7 z=sE+Lu&UG#K*vY))E*C+_d;|EiJ%+yx0;_76;i^s46Icv2$%6kB*3#h;XmW;K(D_1 zRp(E(cl!3)w(=7n)H4kLNH2pSniXRS^3zgdf-8B$m=v1eg9PA0@MBw~@>=9Vwq!E} zqh-f@%A4zEf6vZX-w-O2wQ%IvkVVUTGOi4j6j!CsyJ!sYo6` zRwfG@VX7qMHl;y^X0OQ92zeB#EW|SIBFs*#kCOQnQGG_$uc`SNb~U9YMnz^6L=AZ~ zY0+vz6oOSo4w{fB4A_~hn31^7`}nNK;%3XtOcLhM&gZnUa!kUL!b8#{TEJGBhSLPI z$Ko*=-b!eTyg4(G)Acqe0rV3mtEt)+1sg{vGxJ}CJ1KJ>m;9?A`vK}xN-ka;>rl2y z;}Eb8_kXW4qmh#uVMtqe3^_{#lV!e}yFrsX+%Q<<4MhEBHQC`ZJUMs5<>vC{^hy8P z6-2?f8i1p&)`1s;lrs4oONiYohRa*ltRehOgq>giI6LU$<(y}oljm>AnIET~w|X38 z6-8&6;Y#>{P)CnMyDectSSVriIMm zDJKC}TdHYNUg_V6sFuv}>7E4qV_xe&o>*25o7KlUdsM9eh6bD|3lU~LzC~}2dbz#IPDy*u~_yUzwV%$<)+A9!Y}D zuF(ZFO>|Bq`e3R60*h3HGCTieG|Y3P?|G0-_Y4AHbENwJ0VP1%zi$#Pt$djk&s;cc zwpA1e*if{V$t0W~67EKjZwGxadoYbyVVEk?8eS;Inj3t8a6_j@(y7;_W%sdl`xv2> zkqpE|+_`cd3W%jD*9@ZB0TW;LJ}ycREwR6h{|Z^8K3L>5|5pV=MyF_KXT6G8>$6kM zYk1z--K_5N6XVckn14yXxgj=LPWyC3h*V*fZtAx~J~PmPCg@GWo))?6Vk$n-E{FAz40~)k2V10}a!#@lK zuvV#O@z8?&xMqki-0e=|F`y-f~1VQN%Xxf#qVPoa!RYM zIk1-2;BfZLvZ<>06z3ux^|4@dIu!JV<=p5-+Ra^FyLKc|g6S2}f?(asAJb0!O6Lg3 z>~+*yn|JJN3OLxaDWmEB>KJSnO<|Hp_6X735s6yKc>@c&gxI6e#}dMICTljkzWO!)%+GMek{C%$}p) zQDYh^n6FQCypJCuBcU@N{n|mEKXAaWl$(YBss**M4wt;mSZT?(QA;K2efmB`dPtB` zstQ}IfdZFO0B~Zgab_Sc$5(?Tj7eMT$iz{4HoII^6aCGSO>V8F-mFmOkSNWqjH^HsS z%s^zjMWxT!Qf`b3_vsh`*NqGlWHc$%J|5@hZDCN=BbpPSf+^81huqlOM%2W5@$Adl zQH4IE9aFIHrBXuNEnpG#QGc?)B!pF5cb_&1tej6sLuV&}dWD8YYPl9MeP1<8NVL_J+CgS$uAgSj8JcLr!lH;^B=!iwdVzV}+Nwv) z?Xp8Hs{PIgFJl`4_pR7%h`zceB9)z7o_~8OGETvrtP)m3=vEmgUF#H6~ z;8Rx6Q7bmS?hn(=?%N6_2 zHw07x-rCsZW;W9wa#DPAp*c>4guqs~U1?3F#$v^!3=LPp1+9gfPhukxDWU}#70u)# zz^Yl>Xh>0DP_i_N#0{7+MYZZ3wk9Q_HMe&kJw?;@chP?vlSighHCw%G?4iH)kRd1w zZM9@^<>Xf6d)gfaR}mKlpYu~X6jdQx-r%C~eh;#(9xcJfpo69qf#|VEzIe2bch3_< z*~Zf(;XsR`>I^yNsUM&7?h)pNlAjZ4@o;tSorw_G0@i|M<#x*mW1$#5z1h>G|n2ICQ(M{zYXc6 zf;f_a;LBq9KFI=I(^^8-4wZg6IoW?=k_UFF0WyPB%d>Qb8S61BsbNEkF>~>snDL5-vt8sMWYl%A~G15O|S5kv8CO z_3BGT_z(VS4^HQqW}ted=D~5I)h^Od$3btFCVsO0R)H&RvZ~UNwPsOM2aG?*2K2 z?)jzR8mI4h`wit_!4L^0Tb{ya$r!36R{7|e+Z*ZB zE<~V{(+(;T(6{QI&&{Qz7~6NgiGcl;c88-g4RN*p>A;{!8_}^W2q^rubo#mVSNiZU z6RsFbASWj1$``|V8(R-%?%;ivu2$qeNTUFqVv&p74_CekZ-X?d6{m{p33(J+hddv( zAR3MMGbcS_p{_SrT)SUQ^e0S4yvkLp!^(B`^qAes_>S%$<<8$EI9}j}TnZ1N03mYE@; z^)#8%@c^C3pJz`Aa#pq%?=0OH5 zbVSw4m@*1!6{gP&2>n*gK@>|@xE(|m*t_o8DzD`s$^{p9gT6zoMvWNt!@JtS?BF*P zJFdbOOW@Wau>#Uw@->MU@o!W&_6b(Qf}o@n_Ka@%n37abvf12~)42BeXx?4j_AH08 z4!ctwyU(#Yj=;@V@@0^KW?3@`wEz9pw!tcR_Bt!Kbb5t=VCrS7YXXPECff6-=8kLJg*=dSUc1Ip8L#2-97^N1jXWOU7+cramL_OREnku7D9%pRcQ_p$A3 z0BFr1y1~IW*5xcbJg(d&7>4}(s2I>UjuPxAG?68%?!<5B=49wQe;1V_;@g1! z;Es6W5L@9qb)|or;4~JQ_W(}uM11ymuNEfsn&YazE3JOyC>6EUx##&2@7DbJ!Bt?S z9}ln};4DRycTd_q>HAe8a-53<0#K&zxqS zok|GhT+}lig|Y-rkkpoFdEb!pz-tr~M;rJLDyOfm&M0NjO;@;X#qcqF`u(ejGVpCo z7tyt&ceB@MFaXokgyLGYt>mlZxL&n?QhTCB$!u5nBOBKLa`qx{VQzcts?Y7=9G(x9 z6;=eq4i7Y&sR_uUXE@kHC-~KanPRp{FE)&qdc3*lz z`6JFkYUledZvRl0JO+!%ghfW@elz`veXY%6>e}1pAcOJ={LD z?6Y822J}0K3XPTa>I>wKUI~-NJ{lWC^L_#R4WQJuHZO*`q9*`~(2X)8l|gs^A>=lK zD1t|`E|(I zQ-jAUsofps?R6|=t5?Nt&u}rVe&YA;xT4}xw51Rq~Z4?rnJ-5SEg^?e;K zWPDKB$%@D7gQ2$-11OUY+-k3GIF0E>DTP?4Q#zr|Yxm=?5&?i*YB8ZvcjC1+sF3#( z@>;3vw{+7Q-xu{Hynat&h&vqWq;9SLc^Pul7Dpq2=?|9TBI^4^{;U_-J#*XbTH`pH z31)2~r82o?tlqNTua3WnYFREGGo4k281|;?@_p8HtWO6e_rM$<{S=6Ox{2Kmlq=Pb z1=-cUKDS`#0=v^HS6eg?D@l%V(*UqY&%D$m#S>JJQ~vYkpyz|CH#P*ZA84H5CtV}; z3k)wTuLzs(aWiMEjn?Gq5P;0_toWltTsW528Pf8*V7QFDL8q9Er$o%I>FdmiP+$W~ zkIu$_p3!iYbbl(vv0&!bC8FnW8x|uXKh|IU6O)dowlFq!QGn&~c(J)nj(|>`m-m4y zyA01=o)%0uJu3kuSZ3h)d$;?k4!0}mnl#u$PrQDIM08v83Yv@Y4|Z?T`2Z(;AUn_; z#$w#s<`bH!!IWZ=9uY{3+=o7rX6|=5Hj)ABrq8`hpiKB2p+uKq;XZjDuQsj~S~?_d z5xj>|)qfA*eX5+d49dgAl)AUPelN)T5Th_yXc|{GXw98BCUsujyR@H+9`=ZQW(NXs z)}Q%T$2F{U+x+)0O_u-rHkh(%H&s-krf9-i>Ka!q;l$v|M`Bv}u-R3Nq*d}wjJ`w8 zwG~k^y_UHd-*@&+mH=13&$}!@6h%SVZ$CjV&Ezc;;W9Ym5|))K&(uHl;Asq4NC_Lo ztX_c(s?_GKg%x?9`8b~T#C6n6%rLruAG>iJ;PHN$8w`Aa@z^6{4%MK}O2~ag+Y%5( z@QfJ23i=FlS0w(vHyfcN(x>-P^9>h0y?O#@%KUh%8H$T+I&N*Woz2D@DiGhFLt`Fd zUwCNj>r!9P{3Pp-{|9u~{0!g8fU?q>1Q~>^aN5WGy&21qH%CN-_He{#bkh2qbP_WA z{q!l@^J!e6CHl*)bg{d3Ol)F=E%sz0MuNRe-FZaH-EM~z!MKH3_QFy0ppPZfVUhqR zE=w()zhSosVyNCsx}NiYnm7<5mu6O4FYY79L!uac>~JR!RKc=Bl}m888Q1ouKOPv& z;~~_z`qMjO#+Lo5z^NBuexw~C{3>*K-^4}a6(5Ut(riLSZk>={>W}a07#dMQZl?pn z1^g`E;$H_o>im)>tb&8ZoGSKnRKPyOD(yz;ew>7>$Fd!PV>w2v8&G-D1-g1%89vE_ zf9RpZ)cXDJbkAeZu<84Lg=tBD(ADsGeafuHx8`L`E1k1TdPk1#;H^ny0so$GlNPf) z7JA9NO=3LiLyIMD9>Jpu;*+WqI3crve2I4vBu5Ai(LL!Gb4(IauurI*&@s$IV3jia zkJAUf#x8YmqV1ya&ZMe<{)5yt7hFZ{LI;ivV66^8C$@6oY6qU-J^n{?8IFlpNvB|; zG(7APHAy4#P7p zn~XAsv%pUAw2e$%@y~Oy#wt=Cu+vz7R-*Mgdy20C2gcaPWF?>fxA=)v?cX3$*_8mI zSUmB&f(th$IpGyKh)HX>_KSWq%Y-D#i6d^)qY|SpU7J5UxN$A3kc}UjH2uSGC+xQw zl2~V7wzMp=*kW(=x~F={81B%CCG6HFdTh{fE>bPJ`99u_)j_}j{52itfIe|F zv@Khd{jLNu;2dmk4=az7EcKeZXPTXLBPu;^;_4wAbQBf2!f5^CNO$}##+3i$s|?uT zJRlK>>|ZdF3GIv;x3)uh2{aVEibs0tyspI3Weqg=8d-ajuJfIS2hOLmC)nny1SgP} z8>p9p_XFkS`N5|IvuV#cg__9-$Q%jK4H1y3+jg0Gsp{fXeO5x6#06%+?}*UM9N%aBRsP{ zp}QSJnn$U`@-MVMsfQKSF6+GXHcfK2>|tog%hw}@JwJslE$zQl^ri8Dt6^pnm7*3Z zN7%u}0ZS5?FFI)YS$qg}+hTPn8Av3st=fH}KbP(nh=?W`;k!eABl?k)@LDv+OwMZo zjX|XW?gc70Ti#jjxqzaBfT@bAWC{P;c|&d$k=Rv1i$`Zl($OF1$CgTmr6PhercKe= zhEsX;JqcO8cI$o*wFT1{8AlK=+6kb}SEzRBQSR)$hR_NSL}~-_8$}i+T2ug7i!liV z!Yz||K_&YV+l30Wa~^u^HY>pg&MgFuG>UrZT$Wv^aTlA(B<#wVV98XsW-Fm{3fTmz zW4J)86j5<`dCD2J8Acr(@$WSnawu$W*Somo@CPa8NZ0mHU8G}9jNfg@pI5l=o#hRx zfDX$?E&j&w=AF~W#80_TXpdsG9d=|8yAo1S18-ejoisBXk@q72Fe1XrzQCG2u)OOK z70&!uId8fwDtyFapD~;fZX??gekhK&TQ3dGJ0p|20`}IFuawp68LyecYW@f7kyjI6 zX?%_91N}Jzx4C!$=nRSB9#a4KAknu>89DCdRwr2>SkVy9c>jnLC&i#~%H?U^`;G*} zUrboY93@hHn!Nk9A$J*c>{)~fXQhy?><#ya7_E-;cFkAczd>u-C!L@XW<{qeMNa2; zZ#^|XUgNneL%QVHy|{jWmwP1zBQyOpqL;mFScC5o`*Y>nJ3-)9K&i8?bLJd@x?@Jq zs9}@M?8x@&v;#G@DGF8)P(ZDxhypfTZ;evTY0wpj%=gk~42|`)r@j3wu;Uo>;9}8+XWQ4(>;9cQ`m@9U-shMws-6W3 z&=|U2TX%6!CtiZT0qvl9^w9mc-YH0J7m-ke3`iM2<7M^ehFjfCckIrE&EJi#VGuoZ zkEvhiL`}X(Db`6k;){Z(kCXezzg7VW@Ub`UdJjAG*cKlsT|X#lY%nhfGNW?GY>PU zerme3g)0cRI;^5k*BX7>+aPiqig&5dMe~!jkcixW+K8&sVu-T>+c4z+c9@lCzoyb0 zUYaA@F%juZaR}4UxvxQ@%!KB(lBKW5$x^ikF>WCgPTIUHi)zg5y9L5DNM_B)uBB}ziZk2+R3l1Fyrl66j+G;< zagPxgkI=l`n|lemgTB;#cu(bYr-ho+?k2cuW=|=o`R_Yp7(;A1LN?d4`MmA>m%wVz z4Ov#I0r548Ov_z}=ldJx(Xi&0qfHU)pd&3M1oDRh$DgTGshBMHzOu@p)}k%8?9q3( zx+0p!Sy{z~@6W@~Zz~bC9?g(sD^&Pa9Q9p?L;Ce?w%R3jmO0UBF&CRX%RSxN`0uPNbcanRtiAD5EeAhueOp4WjtO z3yVhMjhBq-vLh|pl%AaOpU2JT)0K?sbm3zD%)EBV{KRpKg$lLV1yynW%Bujm`r3nN z_Xy1UQ?-aG?ZCGTAlT?~Bx*nIB#2r#Cpu@Bmulz+abGthv~zZ(+(P zyLwY&JjC-Y*0shS(ue7s6lZ&|jNrT=NHa-<Q7mhJ1(z&7~IwBo@_W8_1D-4s++5 z5XT+~^pvHtfoqA~?tB#hw7%2XT%9F*`SMDE4ESnHKSLD;uqnI5&i#hutHzh(v|hXh zY+fm{x2oOFxv9eMT8L>rs{tuCy~-E#i>K54muc zfOgotLx=iThIhix+c7K{3*E_@&Ctk@3ry?ggwF$ zsaL+KHR|$Q=_F#obtHpBZb7F$-%fcpR5Jx1;#t3}N<5GFvGSjPe>A+N#x+7pwDNWA z?v+Ti-j(y~w7>^M9Okr_))Bu(u&+e_O8;_nLbgLU$gO_A>f#eZyLblzZriE9$Ne)E zh<~D@iGjllhw?W#DjOb+NbEiLTBoc3(s)rk=0uDqbYMys6YE|qf`^HvlC2gdMIyyr z1vd&xlX{D&H%q1o5?xQLGk_D^FtG#gs{}P@?U+jkIV8s=2hIYVRG4139i<#XI%_KbmP= z(jeO^#9Y8_#D7n#RDZ0TDX4gP-t26Hw$zfAip`)&-CDkP+U<0JY@BOCMK(X3{gY*g z9<9d}wLm(R`2aR)INSt|_OG@Kc>x{0`6=~n|DH2Pi@>tW$Qb{AN|R-8W*@Ug#ZsmR ziFUM4czgmJQ|(p(T)M2Rrf#p&jpxXL!bZ~Hd+xCnc5}s7z`oN2BC%2&d{kbFOwH1Xr!=PJ4( zWa|L1rwmg;CSKNVK1#~t%siQ@m_B@2@TjG?WoI%-ACkFRL~rV*w)#CRR>L^)RZaYi z62l-HLd`n08Y50ITbNyKs{6-}2d9jEDv5Rw^#Wem)t@&usK5UQKLD1Mosniy+;*U= z>fg%UyJeVu8XI}A7KQFvg@gHN$VAxO@+&TZK+nK;GjGl8wXqrJd84&vj54B-hniQP zDZ;?C$3eGUOeFXQ#(8u_cxk(~J#gtYp>6^Jd(IlD{vs^ChI>)^x--M$E`Db`6t2@Y z9TyWu+M4E_d0x+)pV3TjE)P)51nkXve+8r=Y_R*E5gh^D6?>$CRT4?Z=H}LAOh)O7#y=TOF$&`>udTjEVn_Xmrv&ZKOZW3&oH2D8uJ3L7GEoLfQ~&^)RQU;F+-^s& zvO1h4BK5CBeWuGzJ);g#W+Dk`Ac=FU+0{N+Qa|1{N0N`-mXbP9H{_s&C9rJ41$=>P zb1QoIEJI94tP3Jd(Y-KEbTzi1cc#qHSpUhJkGqJyZObPK>DySE=Qv>^9ymq8#{!KM-}}>C4#xDt>&{S6jM-n zbC-a`F@&>BD)DLjIAH;V4i@Tyw%59?Qzn2KsKm2DGE=dJci;dQl8AphYAR{q%G`u^wgju2HUstR+F?gS ztGw{my%VyP)%+|IBPNY5b*cMAk+Qi$L*8#2wGm7>m17ZLlpT!+`;6j92+NN&KZw#P zdBHIRV@NZa4$~Re&Go3u%QynE0kL zWM;n@Ez2HnFMIEl(0Kvtj_t+JFHNt&xsLU((XfEMAOi~!HYI0n*3@#m2|4hvevn{N zL&<9FOeiG}zaS&WzcecWPC?m_>xT@JGLig>OkZtxEm7R@IR8QF^x>?lISv#KW(#@W zfXp$RCp&1Nk9bgIQ~f?`1lAkt^ZMy-ocg(PESf+=au;5G4ITJ!g+W>rpUW>nsz39; z!7y5@!t{&xs=fUzZgcz7$i9~BHB1fW$cidZ8W++t%E}%?Qfv11jmefd+RkJaz8gDj z!CXg-ADuAEHF>IdoP`FIs3RJi->b{QueA4BtDDV@Kwh5RxyyB_iI>%^s|MsI?^J;q zV{v%hO7%a&El+38{I2ZQMA+~86z?qd(Bj680><}Mthkb&5p@S!8NYfT4^gpgnc1M` z`1&JAl)M4gss~C7g3MTJtMtm~5Ucd(hdED-N#KwpNIQITTOXE!i>hkQ@Djuu(?QFK zqT(6|?%mw8(vE7Tk9)G-b*}2^)hL3!>bU!(0Dq3#c$O$*M2_%avIolYSW0Kb$b#T| zEh2XVF1*H*&9pU)U`ST*f?WTUMvck29Q%dTiC+A}{CtS8=w$rb34NJAsM&YG0bh40Rz^sDi2 za~kNwSK1q-iP2V;rwMhAW;(EzAg{J?Iq8xAn7Rqvpkw?P=EmlCKT4q)+B| zYA+(CGu(AK>TMGlx@@0u5A2V|k#(CsWE9Iw(+r<-67K!XgypZGOX>Gy)KYgpV^b!; zS2B*(IqJA;38}tm;Qynamsha;v(2>q)Z}oO1*n4mjMW_Xb_xuej{hZZVRQ4oga)hn z>D@d4pHI9kt!0d|#7YvMn-P1e7^+nccfu{Oyi3%xf&#QdKRC117DoHoQKB*8mz0D#v2+ z@a7j&>fyRQiPJ4M=562;%2Pme3ateZ51NGuAu*b6m6+W$qUFM|*uEcz=gqS8S>07v z(^?qT__FCy>*$)w%Y*{!SjV3=lsaHjq4#X_z(Ag4to3lbK-UE$QO*=!0fxh=XpYj# zn=|K)uca%pK(8Nd9YnIz^k@${V;!YNyYO*gX?Mnrn+5fdX!u;s^{{bD8>uw20uXcL z>BcuFsF(!9UT@?WXpjf}9G?!?M#HTrv43c2J|LHuW(yD)+b_yuJSzcWn#z_IC)p$N zS3joZE{Y*;kzi#kgOf@`Boh#qaXYwpd^S-BT-2gGKg=fk0#Thp3YO*l@jP;4M0et) zc{tW+h&PH(V=HFPa#Q(mOkNqQJ|5G|diWG=^r-T?U>$&Zos&}|>y}4k-yc!|`fImm zR7%@Q#uqO4iGlpN*_UGrFFb5J9$%Mf$o~ z^`Ar;@<>!CSZNsSx)*R#vQTf4-Cw+4dBmQm132(KLV|)5%#Z{Lb(%Gc4eenGkTtO9 zv{x2%LA($uND`dCmFyemV zJ|1wYz$c`NY~p|S9%5>o*?4Ru4@sQ;=qi<^Jq4Xckh_lQY7vC4dsC%b%v$ zrEfJb?{XvF6<&X}!*_04hD1Y9H*DfAor!AO9M_Es1_{^TTK=gkCHI|e zvM_9%#GDi(TN3X&E%UGofl*KVO%+k#$GyP(SGa|1BcUmO`P$CajYabyetHZEk6%y9 z{&J$s4eQYZR)ESSG6^hIX4rL8fHJ9XkrAP+N#%*-B!R%&rD>}t66n8@Wa9&P-o~WV z^*hi?WMg~#(S)7q>h};0`)3+=<*YRt`Y9}|)BZSutjH8}I;!MFWeU!@g0Pf-RF+c^ zI1~jZ9{NzE5h+IKCE{0JP%}*SIWBqfy{vLdRVL;*fg1=43YK#;P92V5upipP`<^qy z%kf5#j02>{0ckN+DA*oKl`|S?Gw6NS)>z&+M&hvkIW1E57l?>j6zd?X?Yzl zDoVvC(Ea=B*|EI_NF%{oJhOmn6t14mVaM=7eO}2}g3QMo8c~F8fV*L_*F{Ruob@i} zd@L`reO>JvF62F|tpBZbbu%WDej8=#WKt#4QRZ|y#9V4Eul{ethU2&n7l81gX_6p_ z)^g;1Kw5kKEjUYP!9nJCl(Q~6v4?p^G#NG53_my9^Q~Z2Zjj8@YCFI1a>ZY2rMNBz z5Knqv@wXU*cNXGkNW`;|hso6NGMg5P-8a2@P@z9u;7m1UTD2k?`$f(#@q3d=CpTA8 zYO48FxkZaz$;W|i=n-AH!ulVU3o3+5Z*7E=7h$mRbb2I-aV^dzm1?Vst0@2eFX2VR z!X$ZkmysdRZ7WOjh27B*di%}Bhgr6^Q*AFa2HfPc7o){L8eixT%u*1cA5yeGQW`4c zs9XxvYR;NDh6drh7ILr&q~gBWG0KQ0hme7Y1rlfq0f^$Veq4J2wx}$~0HtLvP0@f_ zrMI)f&hOnTYJ?~Gwf zo7_{J%-m?XV5SFVLMN%Q+yJa&n6_mlC$L!R4&Ob;xaR_Ol2fBf10H71=A^76g*b z%}w+i$B0a9Fmw4aB&wrJxwO!TzQY_vv%GeNHCN*baa6@wJg;AYzx|A6@yPfa^S1D` z_BLZ_`MF^NocrCEXF6}sQs0?%^=PCS>)rS)Kf)NDo)QmeA`_FXE}Z$cPgyOx;Dj(M zg95VGG4HcFqo>f7qI4l9P$~W1Jc?VRw1!|r`1LY~OK(T73+a@EV_Zj9{uu}>31tul}?w9(nI`2>8(?QzZ zl0d@$Sib5anENUa?73(^jQwVA{1|7c)oVk&YN&9Y`Y*ZKVO*CQ;ASV3RHA_x*Jq`R z6Ca?T(?F@E!0j`-EPM9@n4Dw^JC{|<6Pa+BUH{Lyrs9)5b3e!;GN__l2Sa`>#}a*L zD@2Js!c-Uii!O3)G<`AboUJq$pXJL||j~0;JMacQpRi2wm>)6w32?; z^h~Qpajm%r7e&lo?@Tow^;5rfjx&*`c3SQ(aHdx~37;KpaEfI+%IeoJxJTJqx1?tF zDWRRRCB|014yTAA85XNRZQ06qOk!h$UYc$|f)=-EuD!fQCA0R}PL;X%FzabCrLnJ^=z_tPvd$)kP+Z!nlbf5nzDFqLX9 zz12#Ez3V?1lp%pJ`r1K-t?gg2MR{*2khV)l9{W+;yF_lDTFZC$XXe-Kk}Ku~Wu%&Y zV&sKEL=rFAiIEl7WXsz5mTbzGWtAXnL_egkH=JL=uKczT4O`ucAU!4Mzl#Kqh zfd&WCA{UDc01H`3U1SQ0%J{X^6H%2JJ*^F%$tdC{hFPBE>D>G{?*i}S`h)yG{0WCs ze9rD2b49IQkew>H1<)&0f7uvp^{CadAObU1V zgjerOttIjCF#s$F)~R?9l{_IHK&=otB!uD$ajvx9RdNsI&s+yaZD99$&?yqra8;SV z>J%%76PRim!c;QpjUn2G?1V+9{{xoMw7|*ta-+edu8Pg`$-|};{1L^hePKFppAc}Z zMuF1XgEHz=#;UBG&$T#*#{71DTlu@D$tZ+il`|V8IxW2Oi%6y#vzNX!JOwcBwrr#^ zElT8>iVL@xBRge2mnAJRr0MEEv`5iKAq#S-z+3r7LyA;GA7uN`K_R+jp}ms7)|XvQ z3!f`&iX^*=X;8PwW;Q$(Y9Wmd#Z~98{2I^bcJqDC)`OJ#lx}5qI)W&`UyTe*fnAqp zE^~X0oBK3n&}ndl;CT~+cgJqDJjiop^CObq;h+F)E{?VCA4@`q5Z*=1y!MYslIpn_ zPWM#!6Wb|YnZRMFtxntx#mOW&e3`;%B9ul2#0(?1sw{qu3L3&BWF-%6nK?GAtC1Fr z^KQ54#nPNd#xu$>C-%+{&YJ3}L1!DP*9v*AQ+|f7OmMw6mwYnanJyeq#@P$3umIC* z;a*PQ+Q?S(oa*x<#!u$X6G3zu!b2$AaC)isXDcBaDc}_L@D*KSN>|ytOTJb+ytXJ@ zX06_J{P)<~9fcD}Nvf5Q8*M@F;%A-S3{enY*AXFE@A~?{wuZy< zeSbV+K=&dj#}n^zehT9x$0!5>68(EHk=y@SsIJ8t+yaTmg5imbz>@jMET1c-Dpiw@ zW{>WNq(q0+_esBK|BhwTs}T{tZ%kwQ@-Xsf_erq97DQr(--mD#VCEC;e@?RYU`O$C z9QsEFMboYT)M^RDrUNuU)_=fZlOJGj+Vdq&H) zZEmm5YlY6<-0}heYe-p4_{mBBW>5CbfB$vsVjHmam!9B{9)`70LPKq{d*EHr;>Rfs z;sqeg)=jX(VO>#&q zef!Z_yzGn&ZX)`BkxIGa&0n0|e}Hobv6>yEr6ehM3dR<8)%W2=xgjfnQ?dy0d{;%coJL&K#$e)j|0DCs?4 z2N#{Kz8H_`nj6fCItTi}jq;%4+GLqUnbs zw1019TIMi0Qi0Q})A(v$FvGhRyk-PJkR)gBOLZ0a^5BHeB#nS@)xQ}vxcyg?=IFJ9 z-lix8t;qE+$oz4!T9X2tcHH>hq9dF0pPyiDs9+fm+NBk_p(2Yvqf|!qlv@?p)ZD4b3c#i5f~SNCdLtM07p%{ubeq0*Kp7;-A=sde~H9oB<=L-bo_( z!b%N}PSU%NBcf>MbILV1np9;0@a*7L#+o)w1E9qDk{#M9=7$uQg0~8iBszl80<7=C-t5h zl;R=Pw;%NsLPI(44@wEhuw0`387qzM-_Y7`+|PZAdAx@%Su@s!PV9V9ER#)n4AOy#m+2 z0aDQTtrFmjiZ@>|Wc-w7lqm?JUlW!e7CgHJjY0I()c7;VzaE=+fW5Mi!+itEQN&Ik zer$o0`${G=43WkJ$7^J;BXItMYeo;oaA!_Pc%r9q{}O6#LaFu-5ag za?M0?y&Ij!J8EA6vp9FVdq8sPZsH0%OGd9XpgH27P_F z^vY_t2mC)94&GVJ11`1ka*F^vP16|)I98>#;4{OsP6`f@d(=8iu}3w5yK-EEcZT<( zUVSsMJ7EJtO{|qrK%JMpNuQW6%OkTCm7FEeBE|PwsH`LD>gS{CNh0;Im{4AAQ?7w5 zQZy-gVPd%$=Zob{r1u@iOXM29HJXN_x4knBJvJcUl|QKwgwlxMCUvBH*vkxQ<%g^} ze51xesm>PB8?VONk62c)HN-5m)yafm)d0YkMI;2u20bLl<7Jq}f5t6F9VCu7gI8&! z^49~to{0M)ZZA+n^x`nsQ;|_uc4vYQ#L`_2aCIQd-p|6P@LOe2*$mlyC|QfPculhS zfS*Sc0rKcJM}uJ%1emjJwKN4U-5BVJPc?4mHL)j;O|n`q!`>Q|n@XT$?x;jk`owJ` z0k5s{Hd>y_!xUENFSqh%%(*0Ay0^GRnt_iYj&>P&tcqR0wHi{ezjy*rBV8W-&p`C= zkX*q!^d{nV_df>oSt8DScWc<3UtobV%x%eli7z<|GQ3ECNW8kOMzN~0gfWeFlZ_afa?4Asn))1_$I%}#m0iATKeuTu8`QOWF@+*q zZ+^JYTRDnik*UN+S92ZNT0Op?9U}MP@-Y~Ha)tvJ`5wjnRRG(w9QB>&OH_2f6OF2M zTyN!h+O;~O@zfkCSMLibB|Vn2!1hhwL6tjdIcccEbbh8##oY&+$5a(r$?GkK_C8;~ zM%O|^*TV_O1wcnBLpA(A^16{(M-MY$wx1NoT^W6S|1j%{v-@C{U|3|+^fm2Hh79EW zqe;jvZZ_@AM*Ub%IUr5DlNx743IjOV1i+Idt|_j$@uB;{!#FSXok1NA0qxa?oIZp` zC{i&;vLO=t?Vp=E!D1hDjfr44J875J;AzKzXr#q*f$)K`Qh6LHduJkLlqdE;d>0`Jl0UO;F_>|=6@)a zUAvpfCdMkWMk5k<$Y0YkZbAbKBlLztReGCE^V?z4=%H7+Qgq@^fK zI)HXlo&`^?Y)E@cz^|5(e$!Kv&H^dnErB_zD4lp^@n;K5P_0NZF16u^%KaRk!rCKl z>=*g>gYbLiOH^4M6Ydj;7ovPp;bk@NePggEc&95SlZtyts2)XFOyJ0*wK!6e?o0Cc zh}0IKfe^<8+0H-#u*l(fK%E4T+}$5qRLRz?H@scBh3Mn-{8?f3MLKKdS1s_rX1hR9eXTh5FBEO^S7ZLc6;&EEd!To z#1*gSWQi{m38I3dzNjJS} zCpPGlsM4bO4ZEvLbBsEfq@ifC6>7L2xjBeG>3Y62u=Fk7In_R<7I$Vv5zz>G=W>k^ zWQNdK3ZVPiYZPwk^6z!J&Kw-(ACVTkRvi=LWx`ECxca#`ur=>lokCuSga?LVr;l>wBC;Rst)(O%`O#~A&-MoOqCyB6i8%d z{h>4K-m1+wvokLi;9_i8E)H9|49Y3WVO91C$CIFqcRFcsLpE-_m^gr)=2DJ?JIB{C1Jahu3RP1E1NwN0;`IPsn$- z130gBHT+JGmMl+<=oUK(Z^E}hE)*}zDRUNUf7|^)7?XXbaC5(bYEgtsI&@U>c`n`y zB%Q-|JIl(&<(KnI1tz);EaB53oIrIM{cG0wZ1?~@K*GPv{JVGL4Ba&Nbj=3xb44vv zb@YMCK3Y-Df-efJRWz=*`B!fr&$@U@q}UHt69+(nN!c; zI-tZ+nqVM54IC`fz1Fbx2QcNhuMiF-L0w^0ib;o=`Qp+E0#@5Dp*n|+W^OP|1n4K+ z*LgvHCko8+*E|IsA?-+wTPxOMfcIxMUUb`+7F8hlP_6Qd#W>71KwZ=L1_>2a zCu-10lZ{%KIE8mqLu`7`3s=8SD=je`d;;OWY6Iy3{k=tLK7uAU%jHa=9xc1 zptoc`+SmqVGYb-5>0(T?wPYRX{Rsntj;1SDFQR4C@4&GoS@fK*SMi-EI6sc~Ao(ow zt$lyF5-;nk1RM%P&o5XE7&J11#n7PaN)Gc6aAB)?Uj|QB(`tbN(oX7|VV8mmv`UW( zOM@Tm?Y(^`>h(XQjqG7n-NY~i3qLx)Iuvkah&#o4)=Gym1qgvOc1cP)fN0zY>Xcl6 zI=~cVK=jtviEWbUsM9+(5J59M7d&t-a1& zNhR#;@aR*Zs^Fx(@aKfEipw<*6D}2m;vzyq_1HlHI2c<{>4RH5Eqv|eOMUQ#1|1?2 z$b@HJ%Jj#D_4(p5b6@o)+XNBX%ZYRY?t9g67g$LAnw5p{f1C;Xs`=vc|G9B%Ey6z4 z^Cnout&qx@r^7rZQncL#m1E>2KbKr6rM~UtV7f|Rq3p>)m~I+NBF;1F?63Lapd2>D zAV`Qt)6a`0_5Xe~6q4Mq5GVxD1!AVAmv&{5=7Jcn10%YoK#4w3VX4YQzh5Y%>=cU~ z@~S#o!2+bN7j$v0z5-u+j;$DLa|{SxAuJkFdM%eoHNY+(Bd)RY*NK=9o1x{Y_FH+N zADixW_@;v#P8sSNPpvxjB<2Y0sp()yp_bkjId;1KU5L|U2y(fon2WeUCP(zN`Mi!w zF`j#SNLde}8OIR+%=!ZQ6Nb?=$@LRD!H7(?`_FURvU?G2a7r*6D{ZLa#jq}s=rhwH z^?ofjc4=oAq3q%T*^{>vua7iJ0to6R!PK6XePyM(ET>dWeVH2?sj($@ zD}1P142b1c0gjh&;krFU>;V=UtzRTqCeT$`scNaf#kE#ijxcWET1{+rFua+*7*t&> z&=+KSibN*7h|@AfE+3Bl^^lxhad?2=l0&mL_eKCUPbo`JIJ55jB4Z7*Oq!oESdmpu>YC*Qj&|+rW z&(t8T?BO~AS&&rgmk~15cV|JcTOV$b96v3+^NezM3)54>oHK;9i&kj*4USP{h1oWy z3St=+iuAlRVa$t;=Xp=2FYh5Qy!^Rkn718SsEUgY^q zMOH~ntSDMX_O>k7mJ#Qyeuq|J#35=ew_JFd(D!JePub*Z%CIRbsf_tr6}P&dpW-Ww z4-9f2_J*}Iy4vH4+Cr%6V%2>jQPx_LL{`aoi6R^<>vWNHLeLV436FE`fEC0t(e} z?R&PeG|-#3+&k7uj5d2TusH12Cr|XDln;rnm~3 zdIr#?noq)pV&gIH1g|0yq;n=h-Bg3BJXmmr5E8+g02s48H7P zC5B_9`BJWP_f|%~-KCz*?(x-9_Ov+@#JUnmLAV}Qku23`?0#rwW7>2I^8kc%ZML<~ zByDUNsmWuA)e+YbN=1?$x*SZ$>2*2x)9>(cDv(hP?XYagUE+&je;4pbK+M)kz@|xQ zxQ~%WR6CO%%d)Wij}lj7R*G|lxq~BXh!Lf{2A;Q!^*{#vZWmqYlz|o2ORaj8rV6o6 z>_toPBy68DPY|E(LJ3FxeiRvAE42=+E3kYeHSp3xA_#s=+4W!b3~u*qW?h^*P4`B} zdc4LVO90dQR)9IdI{8ZDW&5y3c_uZ-=?0{)hY2mGU$6@D@<>&C@P&~Ff6ns$?PEJ} zVxxVXg)h`RSTOgMI&1q^PhZkNuocj<4wMs2$K?d{bSFmrFrm$TQK>%B>OA@Mi-F6u zzEefaiaCru`7$T$;1BE)=lsm6y>xR)3d~X^!Ajk;BA#L^nR&GMHWQ?-&ut8ZMzsIY zJ-r%f&bY3OaDlffF*0fsvXg^-y1sX{ zH=S!KB|BbnRZ&hi`8?d(s0X{>(-V?b8cxX*t0&;%`&f_6i~|jqmq&}k(^Y{G7}!~E zq}r|Pg|*`Ip)*S-mIB(Pk62A*z7M9@e627!<8HmP$&C)s8iRoY*ZImWsRF@sVQ4n@ z0f9?nlNYTJKcWXb71s=}laGq)6`~y5yQB81Dti_6ExriZT4+2QWfm zp0T#}nMHgC^hT_ncP*AZa9yvC=Jxv~Zwg|8 z+MkA8642GJBfkzkwJ*uO5ZoM-LDcD+z0q%$hS61u0rtH$c~(QYD!1(cQ|fox|Jxp1 z3;2oUS!m(Ffh8m~8m;r23Z{cY_b_~RCQ@so#b|chX!SecKA5*kGQCWw(jD*0d>bKD z&t~4-Z~uAPHmGo%&{vt!rj?FtezuN*K8(J#W0pC&5ixHYrOUBc8=p`B_Iv`)1VXjx9FUJXom(9LF$Q;k*dCe`PFfY3YpmPCB2|e#JOJe3x zoox5xpeA(x2iGfswIk0Odt+Ml>J}J)6VMMX{N%{ zYEZ3!8Ud|TZYMe&zfJwJV({uP>9OFt_3E;c8o7S!9=X0kUE{Hvi5E$|cws{|k<3ZS zc0cL_OH;l5w$XKhou;Yr+RJTN9y;xAWTl&>0T3Nd?0BCoC@Z@XIAVaF-f_4@*ynU5 zrpQd%GZ>pNCE!qfd50gc(UD4oSx|5x3Cws`#}Acn1g5(qnU#3tjMrmn1gHfcAws_q zy!0bLKQ;IEi|iGuCS>-_$Jngn@h09Wp$(0wZ0kyDD3R#ZRIQqENdV+wxjn%4u8xV1rWNu6_IJ$=+YzrR9V5>DSM)VKQ`1dlqS zL}ehoX@zjdcvfq+n{pT`bf{yZ8t?u`7Xcd9i>v_o)HgUOa)#fW75wU38vZVepMFMF zfgAzBFKdC9l&oNe^JoT8OfpZpWvm8_kjt?#?cxGz2L&z|n(ydI7>4>~Ap1fMB1y@F zjAh*ofi3KK$}bry@-{G;|m_>j;8Q zDyXS!d7wG8unfjir&DaJ?8oXnw&3|ZFOEP7R~dY2eE9cWf5ozPN-L{|N%@%5X2&^e zoM{_<`tr4s0bXT#r)8&=iuUHazku5sstC06e8rygp{PSDO#hT`RJ{(qqM<`92Z>OZ z2H@)0*_UMji;T$=#w(`Gs5PuAbvx1&AqsL_=s4lIzHk8S?y)g>Y;6zJB2LQkdW}LY zLmd=4Aa@g2kOe3~kFSA|!y)@TW_@*$J!r7xLS5OaoJq6KN$RD1Bh+mhTs znjK8WhpEVK&~g$*_zPO)m@X_E#Z}ZI#Q2SUsJh}X9b#GF;9;u<2{YusMP%~#i=?6z zW{5bP`da)R<#}{fHd7u!P3TNsNouqS zy0~$Nj3WfyzPYcPuzhuOPqN(>%1gTo=&>O?y)VM>nV|_=dipPktJOZ`lNjJ@Mexls@!)6Y%4I)-#`$ za_qE%<{{)3@pF9lndDLyi0$p+YTR`Ko*X=XIPSU1s{Cs+Bv=N~6B8_QaIV*R@End| zSdc`MV;;52Bs*yOC{!0kM&fgLCe+{;$CtF#O1#)@d4rj#J+5eO*~I?}3i%;QZr)=f zSoFC2aCtN@V^Y9?(@MMaCH|QD$Rr@>0Lw*Y1(YA37CDmcGcmx!TGdnsY_Zc+O&b{q zebc4wXMA;87u?%phdOO;l7B{>DY0ihi6az@EDb%DK0)?^>9Us4C}3DI?M~vo=T@af z$ZAla1+~jN&slLPPTQn0=2+b?sQm}J>DhSGZ)loq;9ro|&EN1dRLM-ys#WbBW|SD4 z1jpvMTAJjqK>gB?NC#q3@6VFFXslr@xb*314Xn9ravRZ0Dbefj$(q`_6HE<|m=QIp5iA&qHE z1F?h(Z00#}vnuqxiutmRH>)D+l0^HwpVv{5zZ@oEGCKx3_5mZx3N{2`0^&2uiG z!H)GnMNBNNZi6S-B3=(RJJB5=`Ob&dC7q8Drh8C4RKS^*{PE=kv@Q)FbSu??+FZmD zIgV)}bCL$9eh<9x8#ZqT8hehihY2Z5bT!O@Lb$!MSkyF;viF^)x^jU{UU?SRm0&9h zf&??bJQ;E_E|mr+b-@PPNhl{b6p2XDiU1H#rC&Y zo))WWOb^s#pQsbdV|^o=f+zz)Z7-rf-;(sIY`Bcm^+X#Z$x}*pJ*@w2w#>8=@=0+? z#`%bl)>`g|R5?1oXrkE&8DKqGJe{R)p}=W(+-B{243 zTTVW}$EFR(SqFAZt*&g!HYmm>Toe!tMXP?C)aBgeJU)KFt`4+1l3;4x4@&4uQ<=}r zH9D@+wvrdX`DSE)stGFZ!RXc0tfhZuV}O=su@{)^<55c#iWW_<2n>y~zEYb7Vf4A% z_c3~x5X%M)cyc<*ibR86LXlEJE^QK2+1^EsA>k_T1oH)c;T3VD=ZITv?Os-_W|ImV+R_n{nU%#MsAbe5Y%pelE~5 zoGsI(?Uh&XFN__60Z*&tukYsgN%&4*FN=x=O-@FjJD+B!e#kZY1rbS&a6lXx{aS-a zsX~%;RPjKfSjv3~evzf7VarFiM@BLM<<+e`vXcrWr0cnenm>6B(H-3H;d^jFGgs^; zk>B`3-2hhVj=7L+;rJ4b{RaVsFg|(py|gE*Kw!bJZ?L==I)%lRyWh71 zD(`cGT4_%spVyS((;;y;@O{~FbFZI~aO_G3Iv`}J9pclO(PbFH0G-d*Jd9Ar6tjox zVw{fB5B-SDTH#9+7}JYw~tfdk#k#F;{~i@3+547?s%O_#9`@I^4e;nEp8PcRLRmvE{o3?f@DDcp5|}QkeFqT@iiBq zd8lzbfGHKAcX~9UHa$O!7b(Q(5M z35=%KPVs$hf;=iIkQ6((nmG!KI8@09d>AC4;@Ji;PV(_wKj8RS{e0Er%N66+b53nf z$!PY4&m6IpwH>S_v!0xEOIf;=N6#t`?{k_?)SK5{tE|xipQ++(^ zZ)lJbvy&i$Ho#0`pRkvl zVr0@jb|h$X-i~zRe9o+Nt-O5XV0B|QwKA@<`=*qZ^?PylQSLT%ezZT=@5{YrewP^D zmlMVStS?g^pTQYz!CQKF=?RG<_!@!S0@{iD)N`)7kOUt*iW4j+eI4A>u#&@y$MIl! ztckLik8f;~zAMhA4vr+EC&qJzXi!(_@A{sA>I)QBhYwr%zU~wNQ!Rhy>D!F9ZEK7{ zn~3e?g7RAlZSbA@ z);$8x&SN9n>?M3&c>!a3gZe|Hg6xOiDS1rQXWq8GWL!^0E5glM7gQj)^t+iOnafrGMcH=eOK+OQ%ZCZ=@wre?W>nby`XP?Q#9v_b>DN5CO z7_WfwIH@NweYhKrhO?M$bOy~OI-kPuMMx`=j7O#BaG1l6OJ41{RzW=AORQWb_c~NN z(&zm(y0T9MbuFU;KyrWRd>-EBOJaX;fa|r5MTF8EUe10<;ZZK~A-9EuL>w`P0Le$=o(#rc z^?WUtar~H4{bFN85Qj#^Hh7RQ-Z?VUI6ze-8!pkd!!YnRQPu~##IqR2g>f~5q?Hqf z1?(H>Wb~^15wB&yI3ZcV&mk9>@#OejSGN`=o^LYiuxa4YsUM~O*;VJG<#E@}z>M&W?YK0m(SK({n2BghJ)#h293p!FEZ_?cbpaYJBnSocpO7s9{L?H}V@Bful6 z#4K*T*LFwJ!5c384eaddC{PA)3+h~&sS3OGE@ms1Y3+L)65?x2RTXz0a~(A}d#M2q)o$S1j=6?7**Z0_h6 zSt4(7{2x=~Yg~$D@**Y~HpX#pLpB3SBHrzDzy@^EEuTZ@f(_XIRZpMx{!UKxnC6F& zR2lGOM-E*{WQ?*6cR9t9>p+HqToDuo%%OG(uKee7Yh=BZKlIuOy(w6&71!3254`v| z8?hJw2&uq|?V-Xiyfp~5(l24fwW*V&M!jDqdk!Wy2Q)gb_O3*fp`( zRm}=YShAx3W!No0-+Dj%2uz#J7+Wm2a(hfK>{iKey3qkU8^r_EyVP^#6I+BEMo6au z7nW&7i{C~&ZZ8W6;^tBcVi#E1ds;UliEh^WaDx=3UcS0=9Zp_`8#nMG#UI)bF~2*W zn)`TUCz4h!mwctgwFd@hZaaUaZCWDA&ZB41rg2(_FnCT+H4vXb!MYq|iX5X7bW0vY%#fwILx{M60x%ITRFtpPN( z=UeTEsa-X6n_#veWQ%4#SuH+w5UF!vKcsB*6MoD<3(b<%?OHJIkhyA^;5Tk=y77aw z-*~Tb67zIp&^n9a3YoNuZ+>4dQG5An`7BQ+u=oP^PSDN8eXTA=scvuY{5*Ai7=xsv zvz_l0lhJS!@tN0C_+*HWr?7R$ZzfNn-P9;*RnH#!CX-U-IYDBp-(bK$D{ zY%TEVkKmTD0Vq3Y&S(_X1{9l}t98NlK<(^Q#y`e%d_g34yEAC@d|~fayFHyO^je>e zqE3yb*5bQutrSCzf9^_dmbG2Vp=9uU(4%Me6A6|PD7-r#lMSTdaTQ;Ropo^N49X$I zY3!LLYwuBIn6TWl!`_|`GP!iF3!##iUE=2-|Hrm%PB^4A)p(#?3;NEHidY35HvtIS zy8T46c5{nO>#svISU_y?%+1ET4q?eM8?{76dr8*I3NX)^JSOdtwsf*|FmSb8P8ZCy z3D3zT5DVvJ$@0#~MXK|Vtb};@imBm`R{E5K?QSJ`{cI`OQt){gTM>;UVAwZ98D}Kx z$BYP@t_xY{JU@vY1nk!S-N&|+=d%2c=T?M*>)y`1eE&2N9%B;?>Bo78<8 z{ix(k_ACGv7C|*YG2eGQ)9OP!%SgKp=fwPGT~=cYyAPsFyi$jIRCdT5f%SICwBDoUBKRNf9m zxVK8BMt19``qy0uh>#>rU$aOJ|5&r@)8|+yjpvhAh!MbrAQ3?VqW@k%9jfOSgch>B zI};LZ9kg5eL=>M;>`z_kK1Uj=-{M#Wxbf*EkGpW-+KCqf^8bLzTMPN}C3Hy{#R3Wj zM_py?di^c$-oPIvdH*maOr4jq}ju#%#W z@Wv_C&infq&3c8?GSE3*t7@hjEY%KvpR@{3)DL`v0m~(M?Q+>yKfkr?4@<5Gw77>R zv&y=i+5Fr#K(;K$>jNrQv{X6&0$Oeo3BXIOkW?E6KS7AkO3xyidDfdlxSZOW5OCK% znr*ZLYB*EdDz&!5(OM3sh_#l4ST3GZ>xo3clzS}oKKN_6J2r~7?N`J`#6`!zEK;dC zpt;CFTpEYHF5hRi-`#L@f@8FjHrOef2Wt7xc>7a_tBk&r9^*hgE{`~}9K|T+^j)nR z;UfDe)vcCwqg2);qJ^$}u3l9fSk_ebT`dCTB@h{z$NniT2&B-Ymq1%5H{d ztu+(|QPgR)?d5{U%q#U2UW!t_8V`#HRuR>^X z@nnAx^}V&Fs5ogabj)i@9_j#SbV}yE_Lq5<(iI| zW?os{UG+6INwbEUm_o)+W`^cP=yc#=db(h*e|F6c-`1hAa{s%NIZYSw0QL^_dDH&< zbk|EV-14I5>g`J+-MqZ4J^Rhy+B6mOFiS_KL#4S<73}+`5$egzMg2*%4r$j{*$6Eb zC{FH5Sz%*$=;E!!LXkT%MSx+|jthLNLe6!ZJyXxC32B|8kRr%J_^FSMX|7r=+YbyB z&yjLm!%Q#M4Z*_K4kF#aM{qhXh13aN5gD&;;@ z*6C1JP*U_eO^x}E{4Gy~7s2hU#PJ4q@ZymcK{Qu=R<{)|0QVy1fbMMB67!AeI3&`Z zc^3}c{{4QoKggQ@{DnDeXW$=$^mTYaUscOIh_oNJ{R6teU2?vjcpf?>39q=o7{KVQ zxN41_YBJeKL#=Fy`5F)sQYJWSRMJI6i z){2%xF|{E!)^aD7rB>>(sN0WtipvK75pa7 zqb@#^G~$NcD_|AA>KhFu`b*-4axS$9M?SQ{nghx!Z|mci{SOcb$pL3C>jXV4Ei!>0 ztzeG&2{J&BHn9*Ih`w9)%%hV^@W!4dC}jCJJj+d5z0Zvlm;hs}#XKU&!^D`FB(7JrKp*ir<9v%d6xi?7{%|EFApOnRC}6); z%QJb|jKd>*^>qdJ`>R9VQW%YS4SoU1k~~Eth$)&Eh(KN=(_>N1STF40?UcyvA+;XJPk&IwAkU9pP zMI9y__z@R?4YXn7r2g+2EmWc)tmIjY_Z;-&onU`Z9gUc9Y>A~H28Nqumk37gB1Hm0 zY#aYsiovnc(%*@#&$elOOh74`pX-kd_WmJqO=qi%o|wZ)>WUY;afzaF=vAHH$ZKG? za8QG-3M??B@5^AAM{Y4-7U5$}cDqM1 zQu?nBrXzt|=E72Z>k1-a!*j4PMTpqbPjm=ll&i z7DWtz1pp%q%JHHPja!}2fU2zU;v+Rrnw+;Ij^5=-Z{+4n$=dfxDFlQ zd0aEp+WG_oy{1d7rk)}8(xIbh#JFusO6Rc|Kbf;0Z&b3jhV1Rxj0iuWm*@ytZfhFA zz3N^`?5}(+FICe_fvw{mVPsxcD7G42=xL0q)3kKLZU?UT9lVIqi5WZ}s6PCx@kr;O z8@~B{&AbG95effuiX0#p&{Z;L&c4|feB(QeSl6CcU9>Q|n=!yaozAyZ72F{{=iroi zfR)AATM0Rzg-@*(iEkTx`7zXq-`ecnO7oCfPK>I+7d})@OdRXTF90{{;gYbZLI5hBO^1ZDh_W zjlH8nMy+l?!UJeP5c&fUa2LqJ9V`m^M&4^Je}&X4jLnUPMc1kKi|(AhF$}C+tDVWw zF7a&4heDt4{j<&zfHM1+R;uU|9vSXu{7`{Z)91>Y8Kk5|t!>C#DI|GZfG45=dm(7~ zPggyM=?`862__SZTtg>vI*gDO(s_Y|c?;Yn!x1nefXft^?r+=E*!bgpy#fRBFF5Uk zjJ>s|Kk-Bw**_R>pbc1W+AH4C5!oV}Hdkz>ksI$3Fi@XJ6XBFoV#Y&bSZ{qZ_-x zJ{Fdt!-aEZ9ol$;-Lq*H?IZn^yIq&m;_@sm{878s&OA34?y=V?g(kC0kOMFl5O8x~ z;WcKb`pmvql42&k&iCCLGc-*{oIa&#={i@mbnMBb*8R~0q~QBq5HVQg%-a!O_&#(uUvbn}au5vFE5B!od>$N}GdMkWHO$RENreDdR18h#b1sp;;GNQQr6 zIX(O8tuQzMr~t-<6;&7p87iBoRNh8KzXCF|w59CL*e;%>h+;_$9;Cd`mGEGXJT$~} zqkI`Opl(2$8-r{``eM|bLA%p7gZQ}&mXTg$M)Jb0A}vS=(Q}S;hGB6uxjeQ7r}3$Z z2#D6z{sNosn2dU}aIpO2Q(G_oswyL(x!d!2p#ECJNvB>qPHx>Yz5Ze5|q1TXCXf-fM$#rP}KBc~nJ_+N?UrS2)lz zJ`m2Br5rl|s~s!doxuQFLkb=P><9HE2C`W^y$%{N3j47h24k~^R zFmSd^VMLF!i2{Y^w#8Hk>4{UpPyZ{tbZ=hE#?@odeCR2&C#MWrrixwGrecb^h$U-a z+AMyRDM0>sc66oJpC4w*_q^+vER##rbu6ow0=qFU=uV>WBUI-jaB+bEQYeP6iMR2s z%LfVqcavrnFUYQ1HUXsDnlJvOlLdkUb#@mFIOe)iRT`$|kl9a?6S4!yOw+6rx3PP$ z_aHigo#Lo_+Lba!zaNkCGrw?r9XkUju{eB4A-;<-%<`Uftn`yYeca3luTNjO+!?$S zBN$G_Y+6xT*&LJun)({2(3~aIIa6?%#ohoBOpVMGgi@X)t&29vnbSU_mIx2BIx$eK zxtyORK9=^*RS&I8=rmyn2L_Od{Ij$gmT0KS|#q$a@s8Y=Y(GUFoi z?L{8o175k$x5TOCV>#(a5bpF2*{z>9dkp-up>)%?$PE~eXN513A_(xSuwp#?d$O8?@QrTuO$ zSYsa;?iR|axXSB6gUFnlZ*%{iP=SZcp%3Ycfh4~~JD{xUI2T~oz@R%QQ5t{jaTsrJ z%aeP;snVwo*_~CeGV9{ny8ZLZ^lTjn0=t+=;{ON@6a`4{UaxL$jk5bfy&&u`yeuS|SJ#)y@okZDTIyr{P&X9wV)-wnDu zeyG4)>JpzqpSg6K34BRW^&q#O4Bqky61Q!M*1LcAp_&Rh`5Q2T48=&cueh0Z5T?GjxR_X!8og*J zeQ?}KQz~DNuB<#f`UOx4hJM)VF3T!2di$GoOJs&8GAQ7A#(cfWdER-oKef7SlqiqN z1CXb?%Y|D>J(AI5Fo3C*kPGUq_e<|R;bdQ>DKxN@ z4I?ZUfo$cOo04Q|=b}rv-IuG(FiJMWE2ZmNdgNAx)oYdK>Ysep8a757p7=FM6c7Sp zG|aDMjaJ8BX}2`!4?8s-|DIE4s)MUyv9HN3`$<32a+cl&hF;1!p!+IuL{(1L6B9d1 zjY6KfxKN)Y*C@G?HUjYE(h&rqj_7zUt8xU%nv`~i$~(}-OD&qkm(4Jgp_W_-glvSQ z$TrMTFXQnZ z;aj!B=Y*I+6`aCGMcJjq<`CXC`U=zlvr?FVT2A)TQpd7ZU?>Hbf)o>4I;(OXUR%W$ zO_{KcLTK2D){EH|Wd2_<+bs}?2VpDiDn<3CTwl0Q=Jx}UC`jCTi+19!MFD)SZKBc; zZ%V1cz3N5w2BTKSzVy_lNdEs9W=0h+F}a%`dW(!c=XGz@y~9|lqnA6uuw6$%sti-S z4>iH0gRFRacB@iOHh`?m0p+7h#5v4gqZ1vXa&#r~`Rx-Mz~V0bESNV>Guo#q+tYH- zA)IQdsLh8H0cES;3B0_;Bz(K`Q(*G(77oW^g1ptHje@8+o-46nk< zvsuT(rt?hz?Nw7?>DWzIiXEn`+OA-?n<>>x-~a4ON#J*_3f&{)A+#dh`dv1&oHP?~ zB{yu2+FB*d(q_~@hxlh5zw7mHTPa*@*eS~qaaf3@u(|J>J6|5bfT)Dt z!5<9(Ozy16dFDdS55sK$q|0U2DXVv8R4X_PBT|82&X1XFyVyEJ9g1|(w<_7>zSJbk z#&HnTgT;KLER&mjMj{1bkFrxrvxlofk@k$n?wHJOKT@fEWvI346R9>@`fZYDmQn3% zL=_eK7pBb4j`rYZ^xbD|(3GvoITvED%uV**=pN#>;fy%VYOQJ;OS{PF`5n#WW#EWT ziu>sniCL2VtsbDX@N%Z)KN&KZeW?D&oqey?E{IrSP7TCBWT)Vb$Lx?w9f$aLR z>0;cCn9E_`7`!-O1+J`3a1WKSLW)ePoE^8|S z>vH8|&y~0yY61F`)ivt?p(n?*Y*exT6JMlP0knt|ST9}07l3SghzkKR=*WL<>9s~5 zUGa|o&002gIIZ^#ly~#-r=j$xe|r6P@x8$@-TR6=%rH5o(z&{18CJAvkiMnj=`MJT z{X@fVKVqP3yl}tb>Yg~r%@hlRMwqkqa|L4)e7_aHsDdf_p$)sgMXHbvo?_?J>Wle1 z~fgr zBnIVQj&m3uR0r|)(!|Ge+m25BA&&RC>&Chz9qm1#GngZlCtsg7t30b{{k~t$b`Hmt@E>A1s%%W9+c_{UxKktSt|00R@ zMk_noZF6axibKvV)JtRGCnBL)BVqOunV9o0Gv;)m)Ek)I7E#QD9jg0M(fIq56e%Wt zCn!wbVOj35HnCZLeqTbu3L4GX^ai%F{)fuk07`56(^^9_<)onFr5h&B29Qrgdn{&r zZyVn}m6xVl%(-yNSpfHvZH`s<(-<4<*D@KX0rmR0YjY2<fo}9YY3ju9DX~d}9{uIW#|XgFKkj8Zl9o`NJDqFS z1DHgzGV9SN0+OA+I=?_wcEy7y2NSs-5lys7r|0=v)1~5w4eUp5)fqN8tf2xBFfLpu zn({N>gH+4-(wtpy1#=xbsaLx4;YNjHNGhAU<*+`9(jgGe{L)E0!Y5U%)uEteY%8o$ z_W)X4R1HqBmaCOM3Y%_5I=>faak9W~aci?z*qfrtkgcXP5Ss14Mp+B)#JuK|Sk9pK zFKh{}Jpk)B7DUnxLPi$Z2*!j8ly80laPE;995LS84im3GFIB!imLamdPdgnOEqGbm$l_E z;1LZeY`@G&{>9rOGAWAYS;RJlp z0`3L`mzSR1Q#nf?kQaKorLqTbD)&=QXKAY%NL92G3fer{2$&TvnVqyW4TCNp%TQSc z#VxMuD>g5IG*=a~zH@nbic0nZ(`?pdM+8%Lb8Q1UBztLI(0f3! zv1Ud2G_IpOyU#Dimk}*_nz5_puA{jZmaCnXK%PKFOn*bq*)6+XNC=9iuSiX3y>Z6% zzd$(wQsD{n?rD*uvABiHz6_<*HIeFSOy6cAwAXWwYc-x^;@u5(8ejplYw4V|HF%Z7 z$F3aKg$NCDTpF|BiS)bQT;*00;7wYae2U_a@mx{`1o+aBEik+n^wGVjq(xDPPDsi5 z@m?W7H%5+()nSc^N2!L&d6ijFgc_zYOrsmHo~RNVz+yrXA1_OM?$d!9mMvE~no{zGfCmWhoeGZ00NyoeVS z@CptY1dCo-uA*za1TZ6Nk1TAAvzaxcB6wfos&so2=_%4l zfbo!6#fglF2v^}iwP&4*ABw$>?*pCDm)I9ajmVx^aLlN=Da3D&TAhYP?Yy9N9xbXVmAq}uf zW@B-X=hj3uSF|ixz0g)fsTiLkm=}~nY=4-ma7&uw-y6}wOnYl5!+p4v{N?Y` z!0^BDJ8T2RTqXS7+Det@WS0d<#{+aDCT&_+ zJ{LNG=*W`sKao(xgXf?zOV`yd+UWDVE3Y{AfArq*db<0$|CnVrIOphI&0uyJB&{gm z-?k09D?4n5ok(7PFP^1lDyz%q-%baFvuYB$^$8j21p*6`w zJ2u%s;pE;D9`q<D0bl zo$-)inh^tObZ~~flXKf@X-5e1H%TTrPU=i>(jaa_rL-iDy^b@lAplrSp*}9R7gjj) zd2SL%#(8w~D&{=YBy4y%HNe}Ros(;QoKN@^GGc6ra~#8%TXRvo^WLOfrdf& zene^E`$6fmTGwK8uiTf?E+4u`f~QX`tW9n!hdKIfdvZunTD=t*(b!?N9A&E7b#kmh znHBN&PTUMOFGxl3B`EZ!XBQ?Emy2#Rn#pnmBXXve!MUJ%Ep0Saj`AA7G-sqQkv; zWyrSpR6R`ySl0K%UrMSFn;8+itSL>&z=;fkR$t;aB9=*3wv@Mr{0!35(^>1NrH4P7 z*q8k;V*W%ZmKrQlY@3_`C>NOgwi|9T!)?TFdfJpV?3U$`eqEg4fsp{w4}Fpcxz zxP>ScnNe0VW(itvk#8P*TC4?Kb?8ANadAhJzj+?v6}udSs(+od8K~doYN)lMeSY?9 zV#jmRw5FSzWY`N8SEBado%L8G+^riDWP$4%9ZAvmyLd}+Xw`DOp`&J6S&Z#bu4HWw zXP`fmp2IiG`?aS)xbi68;)^5cLu0fh^C z^kqd}ClF}S#s6T2=3Gj_Eu+LRPO>b;Hz#~#e6EJ%n3%2v%enHmic|2l13MWRhfA}(3Sm^sVzM?=5uGM&0; z+}xPer*TO5#c%;!RnL{1V$JyZY17u9*}z&0r?OBF^eXBc;0XIK+J_xEdq1`vr3Qe^ z!>vTzhjnRW%ec%T>A1Zsux)BH?W@(29GUWs#arR8c+Em7+J1*R-x#gO|V({OW0 zLpT|oNJ@A=HoX}x9;J|WEEO1-3a0>@q?|GsO*T+5VVSXwMsnpainKFEN{&d~)Uoo- zRy$`GxUhv0Hb}`;EHb zt44U&Y9|MuJdF1mqgs$YbAIDf`k?H;Wgg$s;hQB_C&L2XcIgqf%ovEER7HSXWS_|5w5yREgIo=WAyFpRqb-z5w?w;&GU zE?`PQOrG6}Jk3q+8BUbyEDpPdJ~o}nDb?52p_R*m;tRM8)|pH^@jL=V!?cTf@uy!gV+5O)kSX_YYw1@aRjb+0MB0QZg3_9W zk#YrAoUSv{WYtuV`Vuyo-O4Y7){w2vk z0$}H*nOC&6VVdNxN_+}YoCAC)iHHvY=h5dNOU!f!U}+znI}J>Wv;%S8@8vqFTdjzWkFCtgNtSD& z{bu3cj1`XZ66H->{731Y*3G}<)M(!^;`CVGX%C-Ed{L9yI zYm!CWtylZc!$*>6HVv17Q_cA+hC-&*wjHbKlfNz4w6|BTTX?noPgU1oy;%cT)nj1aLf3c?4hm>Iw zb+ONu&|$`zQP?n3Z3Ztmx;_g`LY;7q6*=(P%zF1xc(C`m7-9%D32&MSHSWCH2i_&O zv-VNRfClw%&jqXJm<0G2IGtf~FpbEMV(h9b8h47606^!o-ilEV z(d*7uHtNpj1G9;=pHG!%8BvW5!p3xLBAY=qMi;Q$+)ebXhHXK{;iHl#;bX;b(N$F$ zEar)4y8E5wvO{ALpiS;N_RaT-KQw zRg=!e{OofwR-vdD1)kx`G5Q?h?R96Y2Ft1OK?qy@UV#Z$s_dmb)@^+Vld(9xe&x9H zw}4hiGcQ!g#BD^PYSa~%285Ysl2hz@Okd~;fkH5749#brO>sRa<2MyvQdnJvcLimqh!C=hg-XI8#xV#?}WFYI7< z0AC7Gsfh%$msTevtd}Bh-%E{>5y<5sP7{r0 zq+1$eRrCca5~!9vp1fv3LxPdRUs_*xwJIWdIYEO3m+=0R!P>N=Pgr6$>9 znL-{F`lnqr_*e6!stKFXFc$6IHAt1g45)HiS4B6l;qQRxmvVEt%?F{PCC`}y$ANE* zj|6>Oi~7eSUWG+hOi}IAJ|^I+sv&FAI;Wk0q#wkq>btLf90rEsS5=#V7kYAue&_|8 zLB`AI8_fhnQrfNlen{NK4=teB?;(DbYg6Eg2>)Z`j8Iv`0^Oxcq|_3p$`7*Diw&K* z-c|$B;AouIB@PSwf|xDzTxeWaB`Q(?004a6*^dAK literal 0 HcmV?d00001 diff --git a/scripts/build-renderer.js b/scripts/build-renderer.js index 6f0ef36..44d2c33 100644 --- a/scripts/build-renderer.js +++ b/scripts/build-renderer.js @@ -60,14 +60,14 @@ const DOC_ORDER = [ 'docs/RESEARCH.md', ]; -function copyDir(src, dst) { +function copyDir(src, dst, keep) { if (!fs.existsSync(src)) return; fs.mkdirSync(dst, { recursive: true }); for (const entry of fs.readdirSync(src, { withFileTypes: true })) { const from = path.join(src, entry.name); const to = path.join(dst, entry.name); - if (entry.isDirectory()) copyDir(from, to); - else fs.copyFileSync(from, to); + if (entry.isDirectory()) copyDir(from, to, keep); + else if (!keep || keep(entry.name)) fs.copyFileSync(from, to); } } @@ -156,6 +156,17 @@ async function main() { // Bundled display font — the CSP has no font-src, so remote fonts cannot load. copyDir(path.join(rendererDir, 'fonts'), path.join(outDir, 'fonts')); + // Images the documentation viewer draws. It renders README.md, whose scene + // gallery points at docs/media/; markdown.js rewrites that to ./media/, which + // is why the directory lands beside index.html rather than under docs/. + // Both targets need it: the desktop viewer and the embedded one render the + // same Markdown. + copyDir( + path.join(root, 'docs', 'media'), + path.join(outDir, 'media'), + (f) => /\.(webp|png|jpe?g|gif|svg)$/i.test(f), // not the provenance note or the harness plan + ); + if (EMBED) { // No main process over http, so what it used to read off disk ships inside // the bundle directory instead. @@ -171,7 +182,9 @@ async function main() { fs.copyFileSync(abs, dest); let title = path.basename(rel, '.md'); const head = fs.readFileSync(abs, 'utf8').slice(0, 4096); - const m = /^#\s+(.+)$/m.exec(head); + // Same fallback chain as listDocs() in main.js: first heading, else the + // alt text of a leading banner image, else the file name. + const m = /^#\s+(.+)$/m.exec(head) || /^!\[([^\]]+)\]\(/m.exec(head); if (m) title = m[1].trim(); index.push({ id: rel, title }); } diff --git a/src/main/main.js b/src/main/main.js index 678c2c4..35bab2a 100644 --- a/src/main/main.js +++ b/src/main/main.js @@ -167,7 +167,10 @@ function listDocs() { let title = path.basename(rel, '.md'); try { const head = fs.readFileSync(abs, 'utf8').slice(0, 4096); - const m = /^#\s+(.+)$/m.exec(head); + // The first heading names the document. README.md opens on a banner + // instead, because a wordmark image followed by the same word as an H1 + // titles the page twice, so its alt text names it there. + const m = /^#\s+(.+)$/m.exec(head) || /^!\[([^\]]+)\]\(/m.exec(head); if (m) title = m[1].trim(); } catch { /* fall back to the file name */ diff --git a/src/renderer/markdown.js b/src/renderer/markdown.js index d5a0cf8..17ccb02 100644 --- a/src/renderer/markdown.js +++ b/src/renderer/markdown.js @@ -1,9 +1,9 @@ // Minimal Markdown renderer for the in-app documentation viewer. // Supports the subset the SwayCommand documentation actually uses: ATX headings, // fenced code, pipe tables, ordered/unordered lists, blockquotes, horizontal -// rules, and the inline set (code spans, bold, italic, links). Source text is -// HTML-escaped before any markup is generated; code spans are extracted first -// so their contents are never re-processed. +// rules, and the inline set (code spans, bold, italic, links, images). Source +// text is HTML-escaped before any markup is generated; code spans are extracted +// first so their contents are never re-processed. const ESCAPES = { '&': '&', '<': '<', '>': '>', '"': '"' }; const escapeHtml = (s) => s.replace(/[&<>"]/g, (c) => ESCAPES[c]); @@ -34,6 +34,20 @@ function inline(src) { text = escapeHtml(text); + // Images: ![alt](src), and BEFORE the link rule, which would otherwise eat + // the bracket pair and leave a stray '!'. Only the bundle's own media + // directory resolves: build-renderer.js copies docs/media/ to media/ beside + // index.html, so a document's `docs/media/x.webp` becomes `./media/x.webp` + // whether it is read from the repository root (README.md) or from docs/. + // Anything else, an external badge above all, renders as its alt text: the + // renderer's CSP is `img-src 'self' data:`, so a remote src would only ever + // draw a broken-image icon. + text = text.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g, (_m, alt, src) => { + const local = /^(?:\.\/)?(?:docs\/)?(media\/[A-Za-z0-9._\/-]+)$/.exec(src); + if (!local || src.includes('..')) return alt; + return '' + alt + ''; + }); + // Links: [label](target). Targets are classified by the viewer at click time. text = text.replace(/\[([^\]]*)\]\(([^)\s]+)\)/g, (_m, label, href) => { const safe = href.replace(/"/g, '%22'); diff --git a/src/renderer/styles.css b/src/renderer/styles.css index a28b723..015714d 100644 --- a/src/renderer/styles.css +++ b/src/renderer/styles.css @@ -550,6 +550,12 @@ button { font-family: inherit; } color: var(--text-dim); padding: 10px 14px; border-bottom: 1px solid var(--panel-edge); white-space: nowrap; } .docs-body td { padding: 9px 14px; border-bottom: 1px solid rgba(255,255,255,.045); color: var(--text-dim); vertical-align: top; } + +/* Images the viewer draws (build-renderer copies docs/media/ to media/). + In a table cell the gallery thumbnails set the column width, so they are + capped there; standalone figures run to the prose measure. */ +.docs-body .doc-image { display: block; max-width: 100%; border: 1px solid var(--panel-edge); border-radius: var(--radius); margin: 0 0 14px; } +.docs-body td .doc-image { width: 100%; min-width: 120px; margin-bottom: 6px; } .docs-body tr:last-child td { border-bottom: none; } .docs-external-note { position: fixed; bottom: 22px; left: 50%; transform: translateX(-50%);