diff --git a/README.md b/README.md index 30276e37aa66ba7faa79bfd013bf8bd69b0dc5dc..0351d70a32a83fe848822cbfdeaa8bc5072e34b3 100644 --- a/README.md +++ b/README.md @@ -14,105 +14,44 @@ custom_headers: # Inkvec -Exact vectors from logos, icons and flat artwork, entirely in the browser. Inkvec is -LogoLabs' tracer compiled to WebAssembly and served as a static page: drop an image, get an -SVG, nothing leaves your machine. - -Boundaries land where the anti-aliasing says they are, circles come back as circles, the -pieces of one colour are one path, and the number of coordinates is chosen by minimum -description length rather than a tolerance slider. Across 21 cases — 14 hash-selected real -icons across seven families, 4 hand-picked synthetic probes, and 3 real brand logos from an -external dataset (selection fixed from the seed `crosscompare-2026-09-15-v1`) — scored -against the source render, Inkvec's median colour error (dE00) is 11x lower than VTracer's -default output at roughly a quarter of the coordinates; the 3 brand logos are not part of the -repo, so a clean clone reproduces the other 18. Full numbers, sourced, are in the -[project README](https://github.com/logolabs/inkvec#results). - -Damaged input — a JPEG, a WebP, something an image model decoded — can be cleaned first by -the trained denoiser, which runs here on WebGPU. See [The denoiser](#the-denoiser). - -## Build - -``` -rustup target add wasm32-unknown-unknown -rustup toolchain install nightly --component rust-src -tools/build_wasm.sh -``` - -That writes two packages, and `web/worker.js` picks between them at load: - -| | `web/pkg/` | `web/pkg-threads/` | -|---|---|---| -| toolchain | stable | nightly, with `std` rebuilt for atomics | -| cores | one | one rayon worker per core | -| needs | nothing | a cross-origin isolated page | - -The tracer, its arithmetic and its output are the same in both — measured, by hashing the -SVGs from each: on a sixteen-core machine the threaded build is 3.7x to 4.3x faster on real -logos and returns the identical bytes. - -Isolation is what the `custom_headers` block in this README asks the Space for. Where it is -not granted the page loads the single-threaded package instead and everything still works. - -The page is `web/index.html`; serve it over HTTP (ES modules do not load from `file://`). - -## The denoiser - -The `--restore` pre-pass runs in the browser as well, off by default, with the same three -modes the command line has: - -| | | -|---|---| -| **No denoise** | what the page has always done | -| **Auto** | trace once, measure how far the raster disagrees with its own trace where the trace claims a flat interior, denoise and retrace only above the threshold | -| **On** | always denoise first | - -It is the same network, not a second one: `web/denoise.js` loads `restorer.onnx` from -[`Logolabs/inkvec-denoiser-001`](https://huggingface.co/Logolabs/inkvec-denoiser-001) — the -file the command line pulls, checked against the same SHA-256 the WebAssembly build reports — -into [ONNX Runtime Web](https://onnxruntime.ai/docs/tutorials/web/), pinned to 1.30.0. WebGPU -runs it where the browser has it, and ONNX Runtime's WebAssembly kernels where it does not; -which one ran is on the result line. - -Everything around the network is the tracer's own code, reached through WebAssembly rather -than rewritten in JavaScript: the compositing onto white, the pad to a multiple of 16, the -crop, the quantisation to 256 levels, the extreme-snapping (`inkvec_restore::network_input` -and `network_output`), the `auto` decision (`inkvec_restore::decide`) and the forced soft -intake for the trace that follows. `denoise.js` turns one Float32Array into another and does -nothing else. - -Measured against native ONNX Runtime on a 512-px JPEG, the WebAssembly kernels agree to -4.2e-7; after the 8-bit quantisation the tracer reads, one channel of one pixel in 786,432 -differs by one level. - -Turning it on downloads ONNX Runtime Web (~28 MB, from jsDelivr) and the weights (~80 MB, -from Hugging Face) once; the browser caches both. The image is still never uploaded. - -While a run is going the page shows its steps separately — the weights (counted in bytes, -because there is something real to count), the denoiser pass, and the trace — each with the -time it is taking. Neither the network pass nor the trace reports anything until it is done, -so their tracks sweep instead of inventing a percentage. - -## Deploy - -This folder is the Space. Create a Space under the LogoLabs org with the **static** SDK and -push these files (README, `index.html`, `worker.js`, `denoise.js`, `samples/`, the built -`pkg/` and `pkg-threads/`). Build the packages with `tools/build_wasm.sh`, then upload this -folder to the Space with `huggingface-cli` once you are logged in. ONNX Runtime and the -denoiser weights are not part of the upload: the page fetches them at run time. - -## Notes - -- Single-threaded in the browser (rayon runs its work on the calling thread when it cannot - spawn). A 768-px logo takes about eight seconds; the native binary uses every core and is - several times faster. Browser threads need cross-origin isolation headers the static SDK - cannot set; a `coi-serviceworker` shim is the usual workaround if that ever matters. -- Inputs above the "max dimension" setting are traced at that size and written at the - original size, so a 4000-px screenshot still finishes. -- The denoiser runs at the size the tracer will see — after "max dimension", after the - unblock — because that is where `--restore` sits in the pipeline, and it costs what a - 20-million-parameter network costs: seconds on a GPU, longer on the WebAssembly kernels. - A browser whose only WebGPU adapter is a software one (SwiftShader, lavapipe) is taken as - no GPU at all and the WebAssembly kernels run instead: measured in a headless Chromium, a - 512-px pass those kernels finished in about eight seconds had still not returned ten - minutes into the software adapter. +This Space has two pages. The front page presents Inkvec: before-and-after on real logos +with the geometry showing, the latest comparison with other tracers, what is new, and how it +works. **Inkvec Studio Lite**, under [`studio/`](studio/), is the editor itself. + +## Inkvec Studio Lite + +The Inkvec Studio editor, in your browser. Drop a logo, an icon or flat artwork and get an +exact SVG back: boundaries where the anti-aliasing says they are, circles as circles, one path +per colour, and the number of coordinates chosen by minimum description length rather than a +tolerance slider. Nothing is uploaded — the tracer runs in this tab, as WebAssembly, on your +own processor. + +It is the desktop app's interface and the desktop app's code, not a demo of them: + +- **Vectorize** with a live draft while you move a control and the full trace once you stop, + eight presets, the Custom wizard, the measured colour difference, the palette with colour + groups, snapping to a brand palette, and export (SVG, minified SVG, PNG sizes, a favicon set, + an asset pack) as a download. +- **Minify SVG**: rewrite an SVG you already have in fewer bytes, with the difference measured. +- **Fabricate**: vinyl sheets, stickers, stencils and laser cut lines, with a preflight. +- **Clean up damage**: the trained denoiser for JPEG and screenshot damage, downloaded once + into your browser and run on your GPU where there is one (ONNX Runtime Web). + +Use **Full screen** in the top bar, or **Open in its own tab** when the Space's frame will not +go full screen; its own tab also gives it every core. It is built for a laptop or desktop +screen. A logo dropped on the front page opens straight in the Studio, handed over inside +your browser. + +The desktop app, **Inkvec Studio** (Windows, macOS, Linux), is the same interface plus what a +browser cannot do: folders of images in one batch, the `inkvec` command line, the right-click +menu, and traces larger than 2048 px. Releases: . + +## How it runs + +The Studio's backend is a shared Rust core (`studio/core`) that the desktop app wraps in Tauri +and this page wraps in a Web Worker (`studio/wasm`). Two builds of that worker sit side by side: +one with a rayon thread pool, which needs the cross-origin isolation the headers above ask for, +and a single-threaded one for anywhere that isolation is not granted. Same code, same output. + +Source, benchmarks and licences: . Apache-2.0. Made by +LogoLabs. diff --git a/fonts/inter-latin.woff2 b/fonts/inter-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d15208de03cd1ad7c5199f0a0ce915fe841e4722 Binary files /dev/null and b/fonts/inter-latin.woff2 differ diff --git a/fonts/playfair-latin.woff2 b/fonts/playfair-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5a3fbbdae8f66414a2754017de622f3c74c536b0 Binary files /dev/null and b/fonts/playfair-latin.woff2 differ diff --git a/index.html b/index.html index d3ed734a00dad8269bfa2703c98a748de0879245..b513f78372a4ab538a41ac623d916e146fd5e1c8 100644 --- a/index.html +++ b/index.html @@ -1,702 +1,444 @@ - - - - - - -Inkvec - - - - - - -
- - Inkvecby LogoLabs - -
-
-

Exact vectors from your logo, in your browser.

-

Drop a PNG, JPEG, WebP, GIF, BMP or TIFF. The tracer runs as WebAssembly on your machine, so nothing is uploaded. Edges land where the anti-aliasing says they are, circles come back as circles, and every colour is one clean path.

-

This page is a demo. The same tracer, run natively as a command-line executable, is significantly faster.

- - -
Try one:
- -
-
- - - - -
- -
- - - -
- - loading the tracer… -
-

The denoiser is the trained --restore pre-pass, the same restorer.onnx the command line runs, on your GPU through WebGPU (CPU kernels where there is no GPU). It cleans JPEG, WebP and AI-decoder damage before the trace. Auto traces once and denoises only where the raster disagrees with its own trace; on always denoises, which costs a few percent of colour accuracy on already-clean art. Turning it on downloads the runtime and the weights once (~110 MB, cached afterwards). Your image still never leaves the machine.

-

Repeated shapes are harmonized by default — a copy is redrawn from the shared geometry only where that stays within 0.1 px of what was traced and saves parameters (CLI opt-out: --no-harmonize).

- -
Your input and the vector result appear here side by side. Scroll to zoom, drag to pan; both sides move together.
- - -
-
-
-
- - -
Advanced settings -
- - - - - - - - - - Presets set these for you. Precision is the price of a coordinate; the speckle floor absorbs regions below it; content units scale the fit tolerances with the raster for a smaller file at the cost of exact corners. -
-
- -
-

Before and after, with the geometry showing

-

Real brand logos rendered from the brand's own file at 1024 px, then traced. Input on the left, the vector on the right, moving together as you zoom. Switch the right side to VTracer's trace of the same raster, or the view to a wipe or an A/B flick. Anchors shows every on-curve point the tracer emitted; Handles adds each cubic's control points with their tangents.

- -
- -
-

Inkvec vs the field

-

21 cases — 14 hash-selected real icons across seven families, 4 hand-picked synthetic probes and 3 real brand logos from an external dataset (selection fixed from the seed crosscompare-2026-09-15-v1) — traced by every engine and scored against the source render with CIEDE2000 (colour), DISTS and DINOv3. VTracer is the widely used open-source tracer and the fastest thing here by a wide margin; that trade-off is shown too.

-
-
-
-
-

-
- -
-

How it works

-

Inkvec decides the geometry from the evidence in the pixels. It finds the inks by minimum description length, builds a planar map where every boundary is shared by exactly two shapes so there are never seams, solves every boundary at once against an exact coverage render of the image, then fits lines, curves, circles and gradients priced in parameters. The result carries the artist's structure: a word is one path, a circle is a <circle>, and the coordinate count tracks the artwork rather than a tolerance slider.

-

The native command line uses every core and is several times faster than this browser build, which runs single-threaded.

-
-
-
Runs entirely in your browser. Nothing is uploaded.Inkvec is built by LogoLabs for its work on logo generation using AI© LogoLabs
- - - - + + + + + +Inkvec + + + + + +
+ + Inkvecby LogoLabs + +
+
+ +
+
+

Exact vectors from your logo, in your browser.

+

Inkvec traces logos, icons and flat artwork to SVG the way an artist would draw them: edges where the anti-aliasing says they are, circles as circles, one clean path per colour, gradients as gradients. Inkvec Studio Lite is the whole editor, running here as WebAssembly on your own processor. Nothing is uploaded.

+ +

Best on a laptop or desktop screen. Inside the Studio, Full screen is in the top bar.

+
+ +
+ +
+

What's new in 0.2.0

+

The Studio grew from a tracer with a report into an editor for the whole job, and it now runs in the browser as well as on the desktop.

+
+
Palette

Colour groups, gradients included

Drag one ink onto another and they are drawn as one: the shapes between them join instead of keeping a traced seam. A group can become a chosen colour or one of its members, and a gradient member is extended over the whole group. Suggestions for near-duplicate inks are offered, never applied unasked.

+
Opening an image

Auto, or a short Custom wizard

Every image is traced at once. A card offers to keep that, or to walk through what the image is, clean-up, colours, detail and shape, with a live preview of each choice beside Auto's trace.

+
Fabricate

Ready for cutters and lasers

Layered vinyl with registration marks, inlay, print-then-cut stickers, stencils with bridges, and single-line paths for pens, scoring blades and lasers, in millimetres. A preflight shows what will not cut before anything is cut. SVG, DXF with true arcs, and GRBL G-code.

+
Honesty

Certainty bands

Where each traced boundary could be, measured from the pixels, drawn over the trace: sure, soft and unsure edges at a glance. On a clean 128-px emoji the median edge uncertainty is 0.09 px; the same image as a JPEG at quality 20 reads 0.50 px.

+
Transparency

Clear ground stays clear

Transparent images are traced as they are, and the clear ground no longer takes a slot from a colour cap: on ten emoji at four colours, mean dE00 went from 0.457 to 0.186. Side-by-side fills no longer let a hairline of background through.

+
Speed

Faster, with identical output

The curve fit and the ring repair run in parallel blocks, the palette and the boundary solve do only the work they read, and the Studio measures in parallel: on large images the slowest stages take a third to 70% less time, every change checked byte for byte against the build before.

+
+

Full list, with the measurements behind each figure: the changelog.

+
+ +
+

Before and after, with the geometry showing

+

Brand logos, a brand icon and emoji, each rendered from its source file and traced by Inkvec and by the other engines at their best settings. The raster on the left, a trace on the right, moving together as you zoom. Switch the right side between engines, or the view to a wipe or an A/B flick. Anchors shows every on-curve point; Handles adds each curve's control points with their tangents.

+
+
+ +
+

Inkvec vs the field

+

+
+
+
+
+

+
+ +
+

How it works

+

Inkvec decides the geometry from the evidence in the pixels. It finds the inks by minimum description length, builds a planar map where every boundary is shared by exactly two shapes so there are never gaps, solves every boundary at once against an exact coverage render of the image, then fits lines, arcs, curves, circles and gradients priced in parameters. The result carries the artist's structure: a word is one path, a circle is a <circle>, and the number of coordinates follows the artwork rather than a tolerance slider.

+

Inkvec Studio Lite is the desktop app's own interface and code: the Studio's Rust core compiled to WebAssembly, run in a Web Worker on a pool of threads, one per core (where the browser allows it: a page opened in its own tab does). The trained denoiser for JPEG and screenshot damage is downloaded once, if you ask for it, and runs on your GPU through ONNX Runtime Web.

+
+ +
+
+

Inkvec Studio for the desktop

The same editor for Windows, macOS and Linux, with folders of images traced in one batch, the inkvec command line, the right-click menu and traces up to 16384 px. Free and open source (Apache-2.0).

+ Download from GitHub +
+
+
+ + + + + diff --git a/logolabs-mark.svg b/logolabs-mark.svg deleted file mode 100644 index 597fc602acaaeb15697292b673ea903a8825ea75..0000000000000000000000000000000000000000 --- a/logolabs-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/pkg-threads/inkvec_wasm.d.ts b/pkg-threads/inkvec_wasm.d.ts deleted file mode 100644 index 43ab0c551ad40d7fd0f892b26c301548cf2c1878..0000000000000000000000000000000000000000 --- a/pkg-threads/inkvec_wasm.d.ts +++ /dev/null @@ -1,240 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ - -/** - * A decoded raster, prepared for tracing and held across a denoiser round trip. - * - * [`prepare`] makes one, [`Intake::trace`] finishes the job, and in between the denoiser - * exports hand the tensor out to the page's ONNX Runtime Web session and take its answer - * back. With no denoising in between, `prepare(...).trace()` is exactly what [`trace`] does - * — the same call, because [`trace`] *is* that pair. - * - * JavaScript owns it and must release it: `free()` after the last [`Intake::trace`], or - * [`Intake::trace_once`] instead of that last trace, which consumes the intake and leaves - * nothing to free. Not both -- `free()` on an intake `traceOnce` already took is a free of - * a null pointer. - */ -export class Intake { - private constructor(); - free(): void; - [Symbol.dispose](): void; - /** - * The tensor the denoiser network takes: composited onto white, planar, edge-padded. - * - * This is `inkvec_restore::network_input`, the same preparation the command line's - * in-process backends do, so the browser is not a second recipe — only a second - * runtime for the same `restorer.onnx`. - */ - denoiser_input(): Float32Array; - /** - * How far this raster disagrees with `svg` where the trace claims a flat interior — - * `inkvec_restore::decide`'s signal, and the one `--restore auto` decides on. Above - * [`denoiser_threshold`] the input is treated as damaged. `undefined` when the SVG - * could not be rendered or has no flat interior to measure. - */ - residual(svg: string): number | undefined; - /** - * The raster as RGBA8, for showing the page what the denoiser did. - */ - rgba8(): Uint8Array; - /** - * Take the network's output — the same `1 x 3 x height x width` planar layout — as the - * raster to trace: cropped back to size, quantised to 256 levels, extremes snapped, - * alpha carried through, all of it `inkvec_restore::network_output`. - * - * The trace that follows is then forced onto soft intake, as `--restore` forces it: a - * denoised raster can look clean enough that the edge-width and ringing detectors no - * longer open soft intake by themselves, and the network was validated with it open. - */ - take_denoiser_output(chw: Float32Array): void; - /** - * Trace it, consuming the intake. `trace` when the answer is only needed once. - */ - traceOnce(): string; - /** - * Trace it, without consuming: `auto` needs one trace before it can decide whether to - * denoise, and keeps that trace when the input turns out to be undamaged. - * - * The clone this takes is the raster only. It is the price of asking for the same trace - * twice, and it is small next to the trace. - */ - trace(): string; - /** - * The size of the tensor [`Intake::denoiser_input`] returns, as `[width, height]`: the - * raster's size rounded up to a multiple of 16, which is what the network's four 2x - * downsamplings require. The tensor itself is `1 x 3 x height x width`, planar. - */ - readonly denoiser_input_size: Uint32Array; - /** - * The height the tracer will see. - */ - readonly height: number; - /** - * The width the tracer will see, after `max_dim` and any intake normalisation. This is - * the size the denoiser runs at, which is the point of denoising here rather than - * before the decode: the network must see the raster the tracer sees. - */ - readonly width: number; -} - -/** - * The build target the contract fixtures key their SVG hashes by (`inkvec::build_target`): - * `wasm32-unknown` for both builds. - */ -export function build_target(): string; - -/** - * Every option at its default, as a JSON object. - */ -export function default_options_json(): string; - -/** - * The SHA-256 the weights must hash to, so a page can refuse a truncated or tampered - * download the way `inkvec_restore::pull_onnx_weights` refuses one. - */ -export function denoiser_model_sha256(): string; - -/** - * Where the denoiser weights come from: the same `restorer.onnx` the command line pulls, - * from the same Hugging Face repository. - */ -export function denoiser_model_url(): string; - -/** - * The interior residual above which `auto` denoises, `inkvec_restore::Options`' default. - */ -export function denoiser_threshold(): number; - -export function initThreadPool(num_threads: number): Promise; - -/** - * The JSON Schema of the options: byte for byte `bindings/options.schema.json`. - */ -export function options_schema_json(): string; - -/** - * Decode an image and run the pipeline up to the point the denoiser would see it, for a - * caller that wants to denoise it there. The arguments are [`trace`]'s. - * - * `trace(bytes, ...)` is `prepare(bytes, ...).traceOnce()`; the page calls this one instead - * when it has a denoiser to run in between. - */ -export function prepare(bytes: Uint8Array, precision: number, min_area: number, colors: number, merge: number, max_dim: number, time_budget: number, no_background: boolean, minify: boolean, margin: number, content_units: boolean, cutout: boolean): Intake; - -/** - * Whether this is the threaded build, whose pool `initThreadPool` starts. - * - * How many workers to start is left to JavaScript: only the page knows whether it is - * allowed to (`crossOriginIsolated`) and how many cores the visitor has agreed to give it. - */ -export function threads_available(): boolean; - -/** - * Trace image bytes to an SVG string. - * - * `precision`, `min_area`, `colors`, `merge` are the tracer's quality knobs (pass the - * defaults 0.1, 2, 64, 0.035 when unsure; the merge default is - * `inkvec_trace::color::DEFAULT_MERGE_DISTANCE`); `max_dim` and `time_budget` bound the - * work; `no_background`, `minify`, `margin`, `content_units` shape the output. `max_dim = 0` - * means no cap. `cutout` is `--cutout`: an input's transparency is carried into the SVG - * (holes stay holes, a flat wash keeps its opacity); it changes nothing for an opaque - * input. - */ -export function trace(bytes: Uint8Array, precision: number, min_area: number, colors: number, merge: number, max_dim: number, time_budget: number, no_background: boolean, minify: boolean, margin: number, content_units: boolean, cutout: boolean): string; - -/** - * Trace an encoded image (PNG, JPEG, WebP, GIF, BMP or TIFF) to an SVG string, with the - * options as a JSON object -- `inkvec::trace` with `inkvec::Options::from_json(options)`. - * Missing keys take their defaults; `""` and `"{}"` mean all defaults. - */ -export function trace_json(bytes: Uint8Array, options: string): string; - -/** - * Trace raw pixels -- straight RGBA8, row-major, exactly `width * height * 4` bytes, as in - * `ImageData.data` -- to an SVG string. `inkvec::trace_rgba`; the options as for - * [`trace_json`]. Byte-identical to [`trace_json`] on a PNG of the same pixels. - */ -export function trace_rgba_json(pixels: Uint8Array, width: number, height: number, options: string): string; - -/** - * The tracer's version, for the page footer. - */ -export function version(): string; - -export class wbg_rayon_PoolBuilder { - private constructor(); - free(): void; - [Symbol.dispose](): void; - build(): void; - numThreads(): number; - receiver(): number; -} - -export function wbg_rayon_start_worker(receiver: number): void; - -export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; - -export interface InitOutput { - readonly __wbg_intake_free: (a: number, b: number) => void; - readonly __wbg_wbg_rayon_poolbuilder_free: (a: number, b: number) => void; - readonly build_target: () => [number, number]; - readonly default_options_json: () => [number, number]; - readonly denoiser_model_sha256: () => [number, number]; - readonly denoiser_model_url: () => [number, number]; - readonly denoiser_threshold: () => number; - readonly initThreadPool: (a: number) => any; - readonly intake_denoiser_input: (a: number) => [number, number]; - readonly intake_denoiser_input_size: (a: number) => [number, number]; - readonly intake_height: (a: number) => number; - readonly intake_residual: (a: number, b: number, c: number) => [number, number]; - readonly intake_rgba8: (a: number) => [number, number]; - readonly intake_take_denoiser_output: (a: number, b: number, c: number) => [number, number]; - readonly intake_trace: (a: number) => [number, number, number, number]; - readonly intake_traceOnce: (a: number) => [number, number, number, number]; - readonly intake_width: (a: number) => number; - readonly options_schema_json: () => [number, number]; - readonly prepare: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number]; - readonly threads_available: () => number; - readonly trace: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number, number]; - readonly trace_json: (a: number, b: number, c: number, d: number) => [number, number, number, number]; - readonly trace_rgba_json: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number]; - readonly version: () => [number, number]; - readonly wbg_rayon_poolbuilder_build: (a: number) => void; - readonly wbg_rayon_poolbuilder_numThreads: (a: number) => number; - readonly wbg_rayon_poolbuilder_receiver: (a: number) => number; - readonly wbg_rayon_start_worker: (a: number) => void; - readonly memory: WebAssembly.Memory; - readonly __wbindgen_free: (a: number, b: number, c: number) => void; - readonly __wbindgen_exn_store: (a: number) => void; - readonly __externref_table_alloc: () => number; - readonly __wbindgen_externrefs: WebAssembly.Table; - readonly __wbindgen_malloc: (a: number, b: number) => number; - readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; - readonly __externref_table_dealloc: (a: number) => void; - readonly __wbindgen_thread_destroy: (a?: number, b?: number, c?: number) => void; - readonly __wbindgen_start: (a: number) => void; -} - -export type SyncInitInput = BufferSource | WebAssembly.Module; - -/** - * Instantiates the given `module`, which can either be bytes or - * a precompiled `WebAssembly.Module`. - * - * @param {{ module: SyncInitInput, memory?: WebAssembly.Memory, thread_stack_size?: number }} module - Passing `SyncInitInput` directly is deprecated. - * @param {WebAssembly.Memory} memory - Deprecated. - * - * @returns {InitOutput} - */ -export function initSync(module: { module: SyncInitInput, memory?: WebAssembly.Memory, thread_stack_size?: number } | SyncInitInput, memory?: WebAssembly.Memory): InitOutput; - -/** - * If `module_or_path` is {RequestInfo} or {URL}, makes a request and - * for everything else, calls `WebAssembly.instantiate` directly. - * - * @param {{ module_or_path: InitInput | Promise, memory?: WebAssembly.Memory, thread_stack_size?: number }} module_or_path - Passing `InitInput` directly is deprecated. - * @param {WebAssembly.Memory} memory - Deprecated. - * - * @returns {Promise} - */ -export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise, memory?: WebAssembly.Memory, thread_stack_size?: number } | InitInput | Promise, memory?: WebAssembly.Memory): Promise; diff --git a/pkg-threads/inkvec_wasm.js b/pkg-threads/inkvec_wasm.js deleted file mode 100644 index 015ad1c40021ae95fa740bc897428fbe82e980c4..0000000000000000000000000000000000000000 --- a/pkg-threads/inkvec_wasm.js +++ /dev/null @@ -1,868 +0,0 @@ -/* @ts-self-types="./inkvec_wasm.d.ts" */ -import { startWorkers } from './snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js'; - - -/** - * A decoded raster, prepared for tracing and held across a denoiser round trip. - * - * [`prepare`] makes one, [`Intake::trace`] finishes the job, and in between the denoiser - * exports hand the tensor out to the page's ONNX Runtime Web session and take its answer - * back. With no denoising in between, `prepare(...).trace()` is exactly what [`trace`] does - * — the same call, because [`trace`] *is* that pair. - * - * JavaScript owns it and must release it: `free()` after the last [`Intake::trace`], or - * [`Intake::trace_once`] instead of that last trace, which consumes the intake and leaves - * nothing to free. Not both -- `free()` on an intake `traceOnce` already took is a free of - * a null pointer. - */ -export class Intake { - static __wrap(ptr) { - const obj = Object.create(Intake.prototype); - obj.__wbg_ptr = ptr; - IntakeFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - IntakeFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_intake_free(ptr, 0); - } - /** - * The tensor the denoiser network takes: composited onto white, planar, edge-padded. - * - * This is `inkvec_restore::network_input`, the same preparation the command line's - * in-process backends do, so the browser is not a second recipe — only a second - * runtime for the same `restorer.onnx`. - * @returns {Float32Array} - */ - denoiser_input() { - const ret = wasm.intake_denoiser_input(this.__wbg_ptr); - var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; - } - /** - * The size of the tensor [`Intake::denoiser_input`] returns, as `[width, height]`: the - * raster's size rounded up to a multiple of 16, which is what the network's four 2x - * downsamplings require. The tensor itself is `1 x 3 x height x width`, planar. - * @returns {Uint32Array} - */ - get denoiser_input_size() { - const ret = wasm.intake_denoiser_input_size(this.__wbg_ptr); - var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; - } - /** - * The height the tracer will see. - * @returns {number} - */ - get height() { - const ret = wasm.intake_height(this.__wbg_ptr); - return ret >>> 0; - } - /** - * How far this raster disagrees with `svg` where the trace claims a flat interior — - * `inkvec_restore::decide`'s signal, and the one `--restore auto` decides on. Above - * [`denoiser_threshold`] the input is treated as damaged. `undefined` when the SVG - * could not be rendered or has no flat interior to measure. - * @param {string} svg - * @returns {number | undefined} - */ - residual(svg) { - const ptr0 = passStringToWasm0(svg, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.intake_residual(this.__wbg_ptr, ptr0, len0); - return ret[0] === 0 ? undefined : ret[1]; - } - /** - * The raster as RGBA8, for showing the page what the denoiser did. - * @returns {Uint8Array} - */ - rgba8() { - const ret = wasm.intake_rgba8(this.__wbg_ptr); - var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 1, 1); - return v1; - } - /** - * Take the network's output — the same `1 x 3 x height x width` planar layout — as the - * raster to trace: cropped back to size, quantised to 256 levels, extremes snapped, - * alpha carried through, all of it `inkvec_restore::network_output`. - * - * The trace that follows is then forced onto soft intake, as `--restore` forces it: a - * denoised raster can look clean enough that the edge-width and ringing detectors no - * longer open soft intake by themselves, and the network was validated with it open. - * @param {Float32Array} chw - */ - take_denoiser_output(chw) { - const ptr0 = passArrayF32ToWasm0(chw, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.intake_take_denoiser_output(this.__wbg_ptr, ptr0, len0); - if (ret[1]) { - throw takeFromExternrefTable0(ret[0]); - } - } - /** - * Trace it, consuming the intake. `trace` when the answer is only needed once. - * @returns {string} - */ - traceOnce() { - let deferred2_0; - let deferred2_1; - try { - const ptr = this.__destroy_into_raw(); - const ret = wasm.intake_traceOnce(ptr); - var ptr1 = ret[0]; - var len1 = ret[1]; - if (ret[3]) { - ptr1 = 0; len1 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred2_0 = ptr1; - deferred2_1 = len1; - return getStringFromWasm0(ptr1, len1); - } finally { - wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); - } - } - /** - * Trace it, without consuming: `auto` needs one trace before it can decide whether to - * denoise, and keeps that trace when the input turns out to be undamaged. - * - * The clone this takes is the raster only. It is the price of asking for the same trace - * twice, and it is small next to the trace. - * @returns {string} - */ - trace() { - let deferred2_0; - let deferred2_1; - try { - const ret = wasm.intake_trace(this.__wbg_ptr); - var ptr1 = ret[0]; - var len1 = ret[1]; - if (ret[3]) { - ptr1 = 0; len1 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred2_0 = ptr1; - deferred2_1 = len1; - return getStringFromWasm0(ptr1, len1); - } finally { - wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); - } - } - /** - * The width the tracer will see, after `max_dim` and any intake normalisation. This is - * the size the denoiser runs at, which is the point of denoising here rather than - * before the decode: the network must see the raster the tracer sees. - * @returns {number} - */ - get width() { - const ret = wasm.intake_width(this.__wbg_ptr); - return ret >>> 0; - } -} -if (Symbol.dispose) Intake.prototype[Symbol.dispose] = Intake.prototype.free; - -/** - * The build target the contract fixtures key their SVG hashes by (`inkvec::build_target`): - * `wasm32-unknown` for both builds. - * @returns {string} - */ -export function build_target() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.build_target(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * Every option at its default, as a JSON object. - * @returns {string} - */ -export function default_options_json() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.default_options_json(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * The SHA-256 the weights must hash to, so a page can refuse a truncated or tampered - * download the way `inkvec_restore::pull_onnx_weights` refuses one. - * @returns {string} - */ -export function denoiser_model_sha256() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.denoiser_model_sha256(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * Where the denoiser weights come from: the same `restorer.onnx` the command line pulls, - * from the same Hugging Face repository. - * @returns {string} - */ -export function denoiser_model_url() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.denoiser_model_url(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * The interior residual above which `auto` denoises, `inkvec_restore::Options`' default. - * @returns {number} - */ -export function denoiser_threshold() { - const ret = wasm.denoiser_threshold(); - return ret; -} - -/** - * @param {number} num_threads - * @returns {Promise} - */ -export function initThreadPool(num_threads) { - const ret = wasm.initThreadPool(num_threads); - return ret; -} - -/** - * The JSON Schema of the options: byte for byte `bindings/options.schema.json`. - * @returns {string} - */ -export function options_schema_json() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.options_schema_json(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * Decode an image and run the pipeline up to the point the denoiser would see it, for a - * caller that wants to denoise it there. The arguments are [`trace`]'s. - * - * `trace(bytes, ...)` is `prepare(bytes, ...).traceOnce()`; the page calls this one instead - * when it has a denoiser to run in between. - * @param {Uint8Array} bytes - * @param {number} precision - * @param {number} min_area - * @param {number} colors - * @param {number} merge - * @param {number} max_dim - * @param {number} time_budget - * @param {boolean} no_background - * @param {boolean} minify - * @param {number} margin - * @param {boolean} content_units - * @param {boolean} cutout - * @returns {Intake} - */ -export function prepare(bytes, precision, min_area, colors, merge, max_dim, time_budget, no_background, minify, margin, content_units, cutout) { - const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.prepare(ptr0, len0, precision, min_area, colors, merge, max_dim, time_budget, no_background, minify, margin, content_units, cutout); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return Intake.__wrap(ret[0]); -} - -/** - * Whether this is the threaded build, whose pool `initThreadPool` starts. - * - * How many workers to start is left to JavaScript: only the page knows whether it is - * allowed to (`crossOriginIsolated`) and how many cores the visitor has agreed to give it. - * @returns {boolean} - */ -export function threads_available() { - const ret = wasm.threads_available(); - return ret !== 0; -} - -/** - * Trace image bytes to an SVG string. - * - * `precision`, `min_area`, `colors`, `merge` are the tracer's quality knobs (pass the - * defaults 0.1, 2, 64, 0.035 when unsure; the merge default is - * `inkvec_trace::color::DEFAULT_MERGE_DISTANCE`); `max_dim` and `time_budget` bound the - * work; `no_background`, `minify`, `margin`, `content_units` shape the output. `max_dim = 0` - * means no cap. `cutout` is `--cutout`: an input's transparency is carried into the SVG - * (holes stay holes, a flat wash keeps its opacity); it changes nothing for an opaque - * input. - * @param {Uint8Array} bytes - * @param {number} precision - * @param {number} min_area - * @param {number} colors - * @param {number} merge - * @param {number} max_dim - * @param {number} time_budget - * @param {boolean} no_background - * @param {boolean} minify - * @param {number} margin - * @param {boolean} content_units - * @param {boolean} cutout - * @returns {string} - */ -export function trace(bytes, precision, min_area, colors, merge, max_dim, time_budget, no_background, minify, margin, content_units, cutout) { - let deferred3_0; - let deferred3_1; - try { - const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.trace(ptr0, len0, precision, min_area, colors, merge, max_dim, time_budget, no_background, minify, margin, content_units, cutout); - var ptr2 = ret[0]; - var len2 = ret[1]; - if (ret[3]) { - ptr2 = 0; len2 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred3_0 = ptr2; - deferred3_1 = len2; - return getStringFromWasm0(ptr2, len2); - } finally { - wasm.__wbindgen_free(deferred3_0, deferred3_1, 1); - } -} - -/** - * Trace an encoded image (PNG, JPEG, WebP, GIF, BMP or TIFF) to an SVG string, with the - * options as a JSON object -- `inkvec::trace` with `inkvec::Options::from_json(options)`. - * Missing keys take their defaults; `""` and `"{}"` mean all defaults. - * @param {Uint8Array} bytes - * @param {string} options - * @returns {string} - */ -export function trace_json(bytes, options) { - let deferred4_0; - let deferred4_1; - try { - const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ptr1 = passStringToWasm0(options, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - const ret = wasm.trace_json(ptr0, len0, ptr1, len1); - var ptr3 = ret[0]; - var len3 = ret[1]; - if (ret[3]) { - ptr3 = 0; len3 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred4_0 = ptr3; - deferred4_1 = len3; - return getStringFromWasm0(ptr3, len3); - } finally { - wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); - } -} - -/** - * Trace raw pixels -- straight RGBA8, row-major, exactly `width * height * 4` bytes, as in - * `ImageData.data` -- to an SVG string. `inkvec::trace_rgba`; the options as for - * [`trace_json`]. Byte-identical to [`trace_json`] on a PNG of the same pixels. - * @param {Uint8Array} pixels - * @param {number} width - * @param {number} height - * @param {string} options - * @returns {string} - */ -export function trace_rgba_json(pixels, width, height, options) { - let deferred4_0; - let deferred4_1; - try { - const ptr0 = passArray8ToWasm0(pixels, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ptr1 = passStringToWasm0(options, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - const ret = wasm.trace_rgba_json(ptr0, len0, width, height, ptr1, len1); - var ptr3 = ret[0]; - var len3 = ret[1]; - if (ret[3]) { - ptr3 = 0; len3 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred4_0 = ptr3; - deferred4_1 = len3; - return getStringFromWasm0(ptr3, len3); - } finally { - wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); - } -} - -/** - * The tracer's version, for the page footer. - * @returns {string} - */ -export function version() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.version(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -export class wbg_rayon_PoolBuilder { - static __wrap(ptr) { - const obj = Object.create(wbg_rayon_PoolBuilder.prototype); - obj.__wbg_ptr = ptr; - wbg_rayon_PoolBuilderFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - wbg_rayon_PoolBuilderFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_wbg_rayon_poolbuilder_free(ptr, 0); - } - build() { - wasm.wbg_rayon_poolbuilder_build(this.__wbg_ptr); - } - /** - * @returns {number} - */ - numThreads() { - const ret = wasm.wbg_rayon_poolbuilder_numThreads(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @returns {number} - */ - receiver() { - const ret = wasm.wbg_rayon_poolbuilder_receiver(this.__wbg_ptr); - return ret >>> 0; - } -} -if (Symbol.dispose) wbg_rayon_PoolBuilder.prototype[Symbol.dispose] = wbg_rayon_PoolBuilder.prototype.free; - -/** - * @param {number} receiver - */ -export function wbg_rayon_start_worker(receiver) { - wasm.wbg_rayon_start_worker(receiver); -} -function __wbg_get_imports(memory) { - const import0 = { - __proto__: null, - __wbg___wbindgen_is_undefined_8c687d0b90d5b524: function(arg0) { - const ret = arg0 === undefined; - return ret; - }, - __wbg___wbindgen_memory_3f8442e22540244f: function() { - const ret = wasm.memory; - return ret; - }, - __wbg___wbindgen_module_c2aeeb3b14bad631: function() { - const ret = wasmModule; - return ret; - }, - __wbg___wbindgen_throw_5d9e815e6fdf150f: function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }, - __wbg_error_757e9472f8410341: function(arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); - } - }, - __wbg_instanceof_Window_a3b8566f0a9c5d1a: function(arg0) { - let result; - try { - result = arg0 instanceof Window; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }, - __wbg_new_227d7c05414eb861: function() { - const ret = new Error(); - return ret; - }, - __wbg_new_a32a1ab6c6655abe: function(arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return ret; - }, - __wbg_now_e7c6795a7f81e10f: function(arg0) { - const ret = arg0.now(); - return ret; - }, - __wbg_performance_3fcf6e32a7e1ed0a: function(arg0) { - const ret = arg0.performance; - return ret; - }, - __wbg_set_a377297433dfea63: function() { return handleError(function (arg0, arg1, arg2) { - const ret = Reflect.set(arg0, arg1, arg2); - return ret; - }, arguments); }, - __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) { - const ret = arg1.stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, - __wbg_startWorkers_8b582d57e92bd2d4: function(arg0, arg1, arg2) { - const ret = startWorkers(arg0, arg1, wbg_rayon_PoolBuilder.__wrap(arg2)); - return ret; - }, - __wbg_static_accessor_GLOBAL_8eb4cd83130a11a0: function() { - const ret = typeof global === 'undefined' ? null : global; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, - __wbg_static_accessor_GLOBAL_THIS_1e7044f654e934db: function() { - const ret = typeof globalThis === 'undefined' ? null : globalThis; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, - __wbg_static_accessor_SELF_d8b50611246a6d92: function() { - const ret = typeof self === 'undefined' ? null : self; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, - __wbg_static_accessor_WINDOW_fd0bc376bf0f8b42: function() { - const ret = typeof window === 'undefined' ? null : window; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, - __wbg_timeOrigin_f3d5cb4f4a06c2b7: function(arg0) { - const ret = arg0.timeOrigin; - return ret; - }, - __wbindgen_generic_0000000000000001: function(arg0, arg1) { - // Cast intrinsic for `Ref(String) -> Externref`. - const ret = getStringFromWasm0(arg0, arg1); - return ret; - }, - __wbindgen_init_externref_table: function() { - const table = wasm.__wbindgen_externrefs; - const offset = table.grow(4); - table.set(0, undefined); - table.set(offset + 0, undefined); - table.set(offset + 1, null); - table.set(offset + 2, true); - table.set(offset + 3, false); - }, - memory: memory || new WebAssembly.Memory({initial:21,maximum:65536,shared:true}), - }; - return { - __proto__: null, - "./inkvec_wasm_bg.js": import0, - }; -} - -const IntakeFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_intake_free(ptr, 1)); -const wbg_rayon_PoolBuilderFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_wbg_rayon_poolbuilder_free(ptr, 1)); - -function addToExternrefTable0(obj) { - const idx = wasm.__externref_table_alloc(); - wasm.__wbindgen_externrefs.set(idx, obj); - return idx; -} - -function getArrayF32FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); -} - -function getArrayU32FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); -} - -function getArrayU8FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); -} - -let cachedDataViewMemory0 = null; -function getDataViewMemory0() { - if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) { - cachedDataViewMemory0 = new DataView(wasm.memory.buffer); - } - return cachedDataViewMemory0; -} - -let cachedFloat32ArrayMemory0 = null; -function getFloat32ArrayMemory0() { - if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.buffer !== wasm.memory.buffer) { - cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); - } - return cachedFloat32ArrayMemory0; -} - -function getStringFromWasm0(ptr, len) { - return decodeText(ptr >>> 0, len); -} - -let cachedUint32ArrayMemory0 = null; -function getUint32ArrayMemory0() { - if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.buffer !== wasm.memory.buffer) { - cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); - } - return cachedUint32ArrayMemory0; -} - -let cachedUint8ArrayMemory0 = null; -function getUint8ArrayMemory0() { - if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) { - cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8ArrayMemory0; -} - -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - const idx = addToExternrefTable0(e); - wasm.__wbindgen_exn_store(idx); - } -} - -function isLikeNone(x) { - return x === undefined || x === null; -} - -function passArray8ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 1, 1) >>> 0; - getUint8ArrayMemory0().set(arg, ptr / 1); - WASM_VECTOR_LEN = arg.length; - return ptr; -} - -function passArrayF32ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 4, 4) >>> 0; - getFloat32ArrayMemory0().set(arg, ptr / 4); - WASM_VECTOR_LEN = arg.length; - return ptr; -} - -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg); - const ptr = malloc(buf.length, 1) >>> 0; - getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr; - } - - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - - const mem = getUint8ArrayMemory0(); - - let offset = 0; - - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7F) break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); - const ret = cachedTextEncoder.encodeInto(arg, view); - - offset += ret.written; - ptr = realloc(ptr, len, offset, 1) >>> 0; - } - - WASM_VECTOR_LEN = offset; - return ptr; -} - -function takeFromExternrefTable0(idx) { - const value = wasm.__wbindgen_externrefs.get(idx); - wasm.__externref_table_dealloc(idx); - return value; -} - -let cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : undefined); -if (cachedTextDecoder) cachedTextDecoder.decode(); - -const MAX_SAFARI_DECODE_BYTES = 2146435072; -let numBytesDecoded = 0; -function decodeText(ptr, len) { - numBytesDecoded += len; - if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { - cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - cachedTextDecoder.decode(); - numBytesDecoded = len; - } - return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len)); -} - -const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder() : undefined); - -if (cachedTextEncoder) { - cachedTextEncoder.encodeInto = function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; - }; -} - -let WASM_VECTOR_LEN = 0; - -let wasmModule, wasmInstance, wasm; -function __wbg_finalize_init(instance, module, thread_stack_size) { - wasmInstance = instance; - wasm = instance.exports; - wasmModule = module; - cachedDataViewMemory0 = null; - cachedFloat32ArrayMemory0 = null; - cachedUint32ArrayMemory0 = null; - cachedUint8ArrayMemory0 = null; - if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { - throw new Error('invalid stack size'); - } - - wasm.__wbindgen_start(thread_stack_size); - return wasm; -} - -async function __wbg_load(module, imports) { - if (typeof Response === 'function' && module instanceof Response) { - if (!module.ok) { - throw new Error(`failed to fetch Wasm: ${module.status} ${module.statusText} fetching '${module.url}'`); - } - - if (typeof WebAssembly.instantiateStreaming === 'function') { - try { - return await WebAssembly.instantiateStreaming(module, imports); - } catch (e) { - const validResponse = expectedResponseType(module.type); - - if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - - } else { throw e; } - } - } - - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } else { - const instance = await WebAssembly.instantiate(module, imports); - - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } else { - return instance; - } - } - - function expectedResponseType(type) { - switch (type) { - case 'basic': case 'cors': case 'default': return true; - } - return false; - } -} - -function initSync(module, memory) { - if (wasm !== undefined) return wasm; - - let thread_stack_size - if (module !== undefined) { - if (Object.getPrototypeOf(module) === Object.prototype) { - ({module, memory, thread_stack_size} = module) - } else { - console.warn('using deprecated parameters for `initSync()`; pass a single object instead') - } - } - - const imports = __wbg_get_imports(memory); - if (!(module instanceof WebAssembly.Module)) { - module = new WebAssembly.Module(module); - } - const instance = new WebAssembly.Instance(module, imports); - return __wbg_finalize_init(instance, module, thread_stack_size); -} - -async function __wbg_init(module_or_path, memory) { - if (wasm !== undefined) return wasm; - - let thread_stack_size - if (module_or_path !== undefined) { - if (Object.getPrototypeOf(module_or_path) === Object.prototype) { - ({module_or_path, memory, thread_stack_size} = module_or_path) - } else { - console.warn('using deprecated parameters for the initialization function; pass a single object instead') - } - } - - if (module_or_path === undefined) { - module_or_path = new URL('inkvec_wasm_bg.wasm', import.meta.url); - } - const imports = __wbg_get_imports(memory); - - if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { - module_or_path = fetch(module_or_path); - } - - const { instance, module } = await __wbg_load(await module_or_path, imports); - - return __wbg_finalize_init(instance, module, thread_stack_size); -} - -export { initSync, __wbg_init as default }; diff --git a/pkg-threads/inkvec_wasm_bg.wasm b/pkg-threads/inkvec_wasm_bg.wasm deleted file mode 100644 index 3c0c5166d2c667fe55fa9a06c2407c47b98e696b..0000000000000000000000000000000000000000 --- a/pkg-threads/inkvec_wasm_bg.wasm +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b39e8d4fe32e4eb14fa45cbed0946a02a504da95211e690cc30e881a402d2366 -size 3361004 diff --git a/pkg-threads/inkvec_wasm_bg.wasm.d.ts b/pkg-threads/inkvec_wasm_bg.wasm.d.ts deleted file mode 100644 index 945d2cc078f10d4968be19fc9f7fc194c21236dd..0000000000000000000000000000000000000000 --- a/pkg-threads/inkvec_wasm_bg.wasm.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -export const __wbg_intake_free: (a: number, b: number) => void; -export const __wbg_wbg_rayon_poolbuilder_free: (a: number, b: number) => void; -export const build_target: () => [number, number]; -export const default_options_json: () => [number, number]; -export const denoiser_model_sha256: () => [number, number]; -export const denoiser_model_url: () => [number, number]; -export const denoiser_threshold: () => number; -export const initThreadPool: (a: number) => any; -export const intake_denoiser_input: (a: number) => [number, number]; -export const intake_denoiser_input_size: (a: number) => [number, number]; -export const intake_height: (a: number) => number; -export const intake_residual: (a: number, b: number, c: number) => [number, number]; -export const intake_rgba8: (a: number) => [number, number]; -export const intake_take_denoiser_output: (a: number, b: number, c: number) => [number, number]; -export const intake_trace: (a: number) => [number, number, number, number]; -export const intake_traceOnce: (a: number) => [number, number, number, number]; -export const intake_width: (a: number) => number; -export const options_schema_json: () => [number, number]; -export const prepare: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number]; -export const threads_available: () => number; -export const trace: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number, number]; -export const trace_json: (a: number, b: number, c: number, d: number) => [number, number, number, number]; -export const trace_rgba_json: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number]; -export const version: () => [number, number]; -export const wbg_rayon_poolbuilder_build: (a: number) => void; -export const wbg_rayon_poolbuilder_numThreads: (a: number) => number; -export const wbg_rayon_poolbuilder_receiver: (a: number) => number; -export const wbg_rayon_start_worker: (a: number) => void; -export const memory: WebAssembly.Memory; -export const __wbindgen_free: (a: number, b: number, c: number) => void; -export const __wbindgen_exn_store: (a: number) => void; -export const __externref_table_alloc: () => number; -export const __wbindgen_externrefs: WebAssembly.Table; -export const __wbindgen_malloc: (a: number, b: number) => number; -export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; -export const __externref_table_dealloc: (a: number) => void; -export const __wbindgen_thread_destroy: (a?: number, b?: number, c?: number) => void; -export const __wbindgen_start: (a: number) => void; diff --git a/pkg-threads/package.json b/pkg-threads/package.json deleted file mode 100644 index 2eaed80e7a6818cf4d6c5d85bcd8993514fc862b..0000000000000000000000000000000000000000 --- a/pkg-threads/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "inkvec-wasm", - "type": "module", - "collaborators": [ - "LogoLabs" - ], - "description": "Inkvec in the browser: the tracer compiled to WebAssembly", - "version": "0.1.4", - "license": "Apache-2.0", - "repository": { - "type": "git", - "url": "https://github.com/logolabs/inkvec" - }, - "files": [ - "inkvec_wasm_bg.wasm", - "inkvec_wasm.js", - "inkvec_wasm.d.ts" - ], - "main": "inkvec_wasm.js", - "types": "inkvec_wasm.d.ts", - "sideEffects": [ - "./snippets/*" - ] -} diff --git a/pkg/inkvec_wasm.d.ts b/pkg/inkvec_wasm.d.ts deleted file mode 100644 index 94435f140096fd5e90b194705cdf74f8981083cb..0000000000000000000000000000000000000000 --- a/pkg/inkvec_wasm.d.ts +++ /dev/null @@ -1,218 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ - -/** - * A decoded raster, prepared for tracing and held across a denoiser round trip. - * - * [`prepare`] makes one, [`Intake::trace`] finishes the job, and in between the denoiser - * exports hand the tensor out to the page's ONNX Runtime Web session and take its answer - * back. With no denoising in between, `prepare(...).trace()` is exactly what [`trace`] does - * — the same call, because [`trace`] *is* that pair. - * - * JavaScript owns it and must release it: `free()` after the last [`Intake::trace`], or - * [`Intake::trace_once`] instead of that last trace, which consumes the intake and leaves - * nothing to free. Not both -- `free()` on an intake `traceOnce` already took is a free of - * a null pointer. - */ -export class Intake { - private constructor(); - free(): void; - [Symbol.dispose](): void; - /** - * The tensor the denoiser network takes: composited onto white, planar, edge-padded. - * - * This is `inkvec_restore::network_input`, the same preparation the command line's - * in-process backends do, so the browser is not a second recipe — only a second - * runtime for the same `restorer.onnx`. - */ - denoiser_input(): Float32Array; - /** - * How far this raster disagrees with `svg` where the trace claims a flat interior — - * `inkvec_restore::decide`'s signal, and the one `--restore auto` decides on. Above - * [`denoiser_threshold`] the input is treated as damaged. `undefined` when the SVG - * could not be rendered or has no flat interior to measure. - */ - residual(svg: string): number | undefined; - /** - * The raster as RGBA8, for showing the page what the denoiser did. - */ - rgba8(): Uint8Array; - /** - * Take the network's output — the same `1 x 3 x height x width` planar layout — as the - * raster to trace: cropped back to size, quantised to 256 levels, extremes snapped, - * alpha carried through, all of it `inkvec_restore::network_output`. - * - * The trace that follows is then forced onto soft intake, as `--restore` forces it: a - * denoised raster can look clean enough that the edge-width and ringing detectors no - * longer open soft intake by themselves, and the network was validated with it open. - */ - take_denoiser_output(chw: Float32Array): void; - /** - * Trace it, consuming the intake. `trace` when the answer is only needed once. - */ - traceOnce(): string; - /** - * Trace it, without consuming: `auto` needs one trace before it can decide whether to - * denoise, and keeps that trace when the input turns out to be undamaged. - * - * The clone this takes is the raster only. It is the price of asking for the same trace - * twice, and it is small next to the trace. - */ - trace(): string; - /** - * The size of the tensor [`Intake::denoiser_input`] returns, as `[width, height]`: the - * raster's size rounded up to a multiple of 16, which is what the network's four 2x - * downsamplings require. The tensor itself is `1 x 3 x height x width`, planar. - */ - readonly denoiser_input_size: Uint32Array; - /** - * The height the tracer will see. - */ - readonly height: number; - /** - * The width the tracer will see, after `max_dim` and any intake normalisation. This is - * the size the denoiser runs at, which is the point of denoising here rather than - * before the decode: the network must see the raster the tracer sees. - */ - readonly width: number; -} - -/** - * The build target the contract fixtures key their SVG hashes by (`inkvec::build_target`): - * `wasm32-unknown` for both builds. - */ -export function build_target(): string; - -/** - * Every option at its default, as a JSON object. - */ -export function default_options_json(): string; - -/** - * The SHA-256 the weights must hash to, so a page can refuse a truncated or tampered - * download the way `inkvec_restore::pull_onnx_weights` refuses one. - */ -export function denoiser_model_sha256(): string; - -/** - * Where the denoiser weights come from: the same `restorer.onnx` the command line pulls, - * from the same Hugging Face repository. - */ -export function denoiser_model_url(): string; - -/** - * The interior residual above which `auto` denoises, `inkvec_restore::Options`' default. - */ -export function denoiser_threshold(): number; - -/** - * The JSON Schema of the options: byte for byte `bindings/options.schema.json`. - */ -export function options_schema_json(): string; - -/** - * Decode an image and run the pipeline up to the point the denoiser would see it, for a - * caller that wants to denoise it there. The arguments are [`trace`]'s. - * - * `trace(bytes, ...)` is `prepare(bytes, ...).traceOnce()`; the page calls this one instead - * when it has a denoiser to run in between. - */ -export function prepare(bytes: Uint8Array, precision: number, min_area: number, colors: number, merge: number, max_dim: number, time_budget: number, no_background: boolean, minify: boolean, margin: number, content_units: boolean, cutout: boolean): Intake; - -/** - * Whether this is the threaded build, whose pool `initThreadPool` starts. - * - * How many workers to start is left to JavaScript: only the page knows whether it is - * allowed to (`crossOriginIsolated`) and how many cores the visitor has agreed to give it. - */ -export function threads_available(): boolean; - -/** - * Trace image bytes to an SVG string. - * - * `precision`, `min_area`, `colors`, `merge` are the tracer's quality knobs (pass the - * defaults 0.1, 2, 64, 0.035 when unsure; the merge default is - * `inkvec_trace::color::DEFAULT_MERGE_DISTANCE`); `max_dim` and `time_budget` bound the - * work; `no_background`, `minify`, `margin`, `content_units` shape the output. `max_dim = 0` - * means no cap. `cutout` is `--cutout`: an input's transparency is carried into the SVG - * (holes stay holes, a flat wash keeps its opacity); it changes nothing for an opaque - * input. - */ -export function trace(bytes: Uint8Array, precision: number, min_area: number, colors: number, merge: number, max_dim: number, time_budget: number, no_background: boolean, minify: boolean, margin: number, content_units: boolean, cutout: boolean): string; - -/** - * Trace an encoded image (PNG, JPEG, WebP, GIF, BMP or TIFF) to an SVG string, with the - * options as a JSON object -- `inkvec::trace` with `inkvec::Options::from_json(options)`. - * Missing keys take their defaults; `""` and `"{}"` mean all defaults. - */ -export function trace_json(bytes: Uint8Array, options: string): string; - -/** - * Trace raw pixels -- straight RGBA8, row-major, exactly `width * height * 4` bytes, as in - * `ImageData.data` -- to an SVG string. `inkvec::trace_rgba`; the options as for - * [`trace_json`]. Byte-identical to [`trace_json`] on a PNG of the same pixels. - */ -export function trace_rgba_json(pixels: Uint8Array, width: number, height: number, options: string): string; - -/** - * The tracer's version, for the page footer. - */ -export function version(): string; - -export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; - -export interface InitOutput { - readonly memory: WebAssembly.Memory; - readonly __wbg_intake_free: (a: number, b: number) => void; - readonly build_target: () => [number, number]; - readonly default_options_json: () => [number, number]; - readonly denoiser_model_sha256: () => [number, number]; - readonly denoiser_model_url: () => [number, number]; - readonly denoiser_threshold: () => number; - readonly intake_denoiser_input: (a: number) => [number, number]; - readonly intake_denoiser_input_size: (a: number) => [number, number]; - readonly intake_height: (a: number) => number; - readonly intake_residual: (a: number, b: number, c: number) => [number, number]; - readonly intake_rgba8: (a: number) => [number, number]; - readonly intake_take_denoiser_output: (a: number, b: number, c: number) => [number, number]; - readonly intake_trace: (a: number) => [number, number, number, number]; - readonly intake_traceOnce: (a: number) => [number, number, number, number]; - readonly intake_width: (a: number) => number; - readonly options_schema_json: () => [number, number]; - readonly prepare: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number]; - readonly threads_available: () => number; - readonly trace: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number, number]; - readonly trace_json: (a: number, b: number, c: number, d: number) => [number, number, number, number]; - readonly trace_rgba_json: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number]; - readonly version: () => [number, number]; - readonly __wbindgen_free: (a: number, b: number, c: number) => void; - readonly __wbindgen_exn_store: (a: number) => void; - readonly __externref_table_alloc: () => number; - readonly __wbindgen_externrefs: WebAssembly.Table; - readonly __wbindgen_malloc: (a: number, b: number) => number; - readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; - readonly __externref_table_dealloc: (a: number) => void; - readonly __wbindgen_start: () => void; -} - -export type SyncInitInput = BufferSource | WebAssembly.Module; - -/** - * Instantiates the given `module`, which can either be bytes or - * a precompiled `WebAssembly.Module`. - * - * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated. - * - * @returns {InitOutput} - */ -export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput; - -/** - * If `module_or_path` is {RequestInfo} or {URL}, makes a request and - * for everything else, calls `WebAssembly.instantiate` directly. - * - * @param {{ module_or_path: InitInput | Promise }} module_or_path - Passing `InitInput` directly is deprecated. - * - * @returns {Promise} - */ -export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise } | InitInput | Promise): Promise; diff --git a/pkg/inkvec_wasm.js b/pkg/inkvec_wasm.js deleted file mode 100644 index ad45ca372c8ea15870c54a515f80a5c2741bf48b..0000000000000000000000000000000000000000 --- a/pkg/inkvec_wasm.js +++ /dev/null @@ -1,778 +0,0 @@ -/* @ts-self-types="./inkvec_wasm.d.ts" */ - -/** - * A decoded raster, prepared for tracing and held across a denoiser round trip. - * - * [`prepare`] makes one, [`Intake::trace`] finishes the job, and in between the denoiser - * exports hand the tensor out to the page's ONNX Runtime Web session and take its answer - * back. With no denoising in between, `prepare(...).trace()` is exactly what [`trace`] does - * — the same call, because [`trace`] *is* that pair. - * - * JavaScript owns it and must release it: `free()` after the last [`Intake::trace`], or - * [`Intake::trace_once`] instead of that last trace, which consumes the intake and leaves - * nothing to free. Not both -- `free()` on an intake `traceOnce` already took is a free of - * a null pointer. - */ -export class Intake { - static __wrap(ptr) { - const obj = Object.create(Intake.prototype); - obj.__wbg_ptr = ptr; - IntakeFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - IntakeFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_intake_free(ptr, 0); - } - /** - * The tensor the denoiser network takes: composited onto white, planar, edge-padded. - * - * This is `inkvec_restore::network_input`, the same preparation the command line's - * in-process backends do, so the browser is not a second recipe — only a second - * runtime for the same `restorer.onnx`. - * @returns {Float32Array} - */ - denoiser_input() { - const ret = wasm.intake_denoiser_input(this.__wbg_ptr); - var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; - } - /** - * The size of the tensor [`Intake::denoiser_input`] returns, as `[width, height]`: the - * raster's size rounded up to a multiple of 16, which is what the network's four 2x - * downsamplings require. The tensor itself is `1 x 3 x height x width`, planar. - * @returns {Uint32Array} - */ - get denoiser_input_size() { - const ret = wasm.intake_denoiser_input_size(this.__wbg_ptr); - var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; - } - /** - * The height the tracer will see. - * @returns {number} - */ - get height() { - const ret = wasm.intake_height(this.__wbg_ptr); - return ret >>> 0; - } - /** - * How far this raster disagrees with `svg` where the trace claims a flat interior — - * `inkvec_restore::decide`'s signal, and the one `--restore auto` decides on. Above - * [`denoiser_threshold`] the input is treated as damaged. `undefined` when the SVG - * could not be rendered or has no flat interior to measure. - * @param {string} svg - * @returns {number | undefined} - */ - residual(svg) { - const ptr0 = passStringToWasm0(svg, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.intake_residual(this.__wbg_ptr, ptr0, len0); - return ret[0] === 0 ? undefined : ret[1]; - } - /** - * The raster as RGBA8, for showing the page what the denoiser did. - * @returns {Uint8Array} - */ - rgba8() { - const ret = wasm.intake_rgba8(this.__wbg_ptr); - var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 1, 1); - return v1; - } - /** - * Take the network's output — the same `1 x 3 x height x width` planar layout — as the - * raster to trace: cropped back to size, quantised to 256 levels, extremes snapped, - * alpha carried through, all of it `inkvec_restore::network_output`. - * - * The trace that follows is then forced onto soft intake, as `--restore` forces it: a - * denoised raster can look clean enough that the edge-width and ringing detectors no - * longer open soft intake by themselves, and the network was validated with it open. - * @param {Float32Array} chw - */ - take_denoiser_output(chw) { - const ptr0 = passArrayF32ToWasm0(chw, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.intake_take_denoiser_output(this.__wbg_ptr, ptr0, len0); - if (ret[1]) { - throw takeFromExternrefTable0(ret[0]); - } - } - /** - * Trace it, consuming the intake. `trace` when the answer is only needed once. - * @returns {string} - */ - traceOnce() { - let deferred2_0; - let deferred2_1; - try { - const ptr = this.__destroy_into_raw(); - const ret = wasm.intake_traceOnce(ptr); - var ptr1 = ret[0]; - var len1 = ret[1]; - if (ret[3]) { - ptr1 = 0; len1 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred2_0 = ptr1; - deferred2_1 = len1; - return getStringFromWasm0(ptr1, len1); - } finally { - wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); - } - } - /** - * Trace it, without consuming: `auto` needs one trace before it can decide whether to - * denoise, and keeps that trace when the input turns out to be undamaged. - * - * The clone this takes is the raster only. It is the price of asking for the same trace - * twice, and it is small next to the trace. - * @returns {string} - */ - trace() { - let deferred2_0; - let deferred2_1; - try { - const ret = wasm.intake_trace(this.__wbg_ptr); - var ptr1 = ret[0]; - var len1 = ret[1]; - if (ret[3]) { - ptr1 = 0; len1 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred2_0 = ptr1; - deferred2_1 = len1; - return getStringFromWasm0(ptr1, len1); - } finally { - wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); - } - } - /** - * The width the tracer will see, after `max_dim` and any intake normalisation. This is - * the size the denoiser runs at, which is the point of denoising here rather than - * before the decode: the network must see the raster the tracer sees. - * @returns {number} - */ - get width() { - const ret = wasm.intake_width(this.__wbg_ptr); - return ret >>> 0; - } -} -if (Symbol.dispose) Intake.prototype[Symbol.dispose] = Intake.prototype.free; - -/** - * The build target the contract fixtures key their SVG hashes by (`inkvec::build_target`): - * `wasm32-unknown` for both builds. - * @returns {string} - */ -export function build_target() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.build_target(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * Every option at its default, as a JSON object. - * @returns {string} - */ -export function default_options_json() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.default_options_json(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * The SHA-256 the weights must hash to, so a page can refuse a truncated or tampered - * download the way `inkvec_restore::pull_onnx_weights` refuses one. - * @returns {string} - */ -export function denoiser_model_sha256() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.denoiser_model_sha256(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * Where the denoiser weights come from: the same `restorer.onnx` the command line pulls, - * from the same Hugging Face repository. - * @returns {string} - */ -export function denoiser_model_url() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.denoiser_model_url(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * The interior residual above which `auto` denoises, `inkvec_restore::Options`' default. - * @returns {number} - */ -export function denoiser_threshold() { - const ret = wasm.denoiser_threshold(); - return ret; -} - -/** - * The JSON Schema of the options: byte for byte `bindings/options.schema.json`. - * @returns {string} - */ -export function options_schema_json() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.options_schema_json(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} - -/** - * Decode an image and run the pipeline up to the point the denoiser would see it, for a - * caller that wants to denoise it there. The arguments are [`trace`]'s. - * - * `trace(bytes, ...)` is `prepare(bytes, ...).traceOnce()`; the page calls this one instead - * when it has a denoiser to run in between. - * @param {Uint8Array} bytes - * @param {number} precision - * @param {number} min_area - * @param {number} colors - * @param {number} merge - * @param {number} max_dim - * @param {number} time_budget - * @param {boolean} no_background - * @param {boolean} minify - * @param {number} margin - * @param {boolean} content_units - * @param {boolean} cutout - * @returns {Intake} - */ -export function prepare(bytes, precision, min_area, colors, merge, max_dim, time_budget, no_background, minify, margin, content_units, cutout) { - const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.prepare(ptr0, len0, precision, min_area, colors, merge, max_dim, time_budget, no_background, minify, margin, content_units, cutout); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return Intake.__wrap(ret[0]); -} - -/** - * Whether this is the threaded build, whose pool `initThreadPool` starts. - * - * How many workers to start is left to JavaScript: only the page knows whether it is - * allowed to (`crossOriginIsolated`) and how many cores the visitor has agreed to give it. - * @returns {boolean} - */ -export function threads_available() { - const ret = wasm.threads_available(); - return ret !== 0; -} - -/** - * Trace image bytes to an SVG string. - * - * `precision`, `min_area`, `colors`, `merge` are the tracer's quality knobs (pass the - * defaults 0.1, 2, 64, 0.035 when unsure; the merge default is - * `inkvec_trace::color::DEFAULT_MERGE_DISTANCE`); `max_dim` and `time_budget` bound the - * work; `no_background`, `minify`, `margin`, `content_units` shape the output. `max_dim = 0` - * means no cap. `cutout` is `--cutout`: an input's transparency is carried into the SVG - * (holes stay holes, a flat wash keeps its opacity); it changes nothing for an opaque - * input. - * @param {Uint8Array} bytes - * @param {number} precision - * @param {number} min_area - * @param {number} colors - * @param {number} merge - * @param {number} max_dim - * @param {number} time_budget - * @param {boolean} no_background - * @param {boolean} minify - * @param {number} margin - * @param {boolean} content_units - * @param {boolean} cutout - * @returns {string} - */ -export function trace(bytes, precision, min_area, colors, merge, max_dim, time_budget, no_background, minify, margin, content_units, cutout) { - let deferred3_0; - let deferred3_1; - try { - const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.trace(ptr0, len0, precision, min_area, colors, merge, max_dim, time_budget, no_background, minify, margin, content_units, cutout); - var ptr2 = ret[0]; - var len2 = ret[1]; - if (ret[3]) { - ptr2 = 0; len2 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred3_0 = ptr2; - deferred3_1 = len2; - return getStringFromWasm0(ptr2, len2); - } finally { - wasm.__wbindgen_free(deferred3_0, deferred3_1, 1); - } -} - -/** - * Trace an encoded image (PNG, JPEG, WebP, GIF, BMP or TIFF) to an SVG string, with the - * options as a JSON object -- `inkvec::trace` with `inkvec::Options::from_json(options)`. - * Missing keys take their defaults; `""` and `"{}"` mean all defaults. - * @param {Uint8Array} bytes - * @param {string} options - * @returns {string} - */ -export function trace_json(bytes, options) { - let deferred4_0; - let deferred4_1; - try { - const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ptr1 = passStringToWasm0(options, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - const ret = wasm.trace_json(ptr0, len0, ptr1, len1); - var ptr3 = ret[0]; - var len3 = ret[1]; - if (ret[3]) { - ptr3 = 0; len3 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred4_0 = ptr3; - deferred4_1 = len3; - return getStringFromWasm0(ptr3, len3); - } finally { - wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); - } -} - -/** - * Trace raw pixels -- straight RGBA8, row-major, exactly `width * height * 4` bytes, as in - * `ImageData.data` -- to an SVG string. `inkvec::trace_rgba`; the options as for - * [`trace_json`]. Byte-identical to [`trace_json`] on a PNG of the same pixels. - * @param {Uint8Array} pixels - * @param {number} width - * @param {number} height - * @param {string} options - * @returns {string} - */ -export function trace_rgba_json(pixels, width, height, options) { - let deferred4_0; - let deferred4_1; - try { - const ptr0 = passArray8ToWasm0(pixels, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ptr1 = passStringToWasm0(options, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - const ret = wasm.trace_rgba_json(ptr0, len0, width, height, ptr1, len1); - var ptr3 = ret[0]; - var len3 = ret[1]; - if (ret[3]) { - ptr3 = 0; len3 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred4_0 = ptr3; - deferred4_1 = len3; - return getStringFromWasm0(ptr3, len3); - } finally { - wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); - } -} - -/** - * The tracer's version, for the page footer. - * @returns {string} - */ -export function version() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.version(); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } -} -function __wbg_get_imports() { - const import0 = { - __proto__: null, - __wbg___wbindgen_is_undefined_8c687d0b90d5b524: function(arg0) { - const ret = arg0 === undefined; - return ret; - }, - __wbg___wbindgen_throw_5d9e815e6fdf150f: function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }, - __wbg_error_757e9472f8410341: function(arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); - } - }, - __wbg_new_227d7c05414eb861: function() { - const ret = new Error(); - return ret; - }, - __wbg_new_a32a1ab6c6655abe: function(arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return ret; - }, - __wbg_now_e7c6795a7f81e10f: function(arg0) { - const ret = arg0.now(); - return ret; - }, - __wbg_performance_3fcf6e32a7e1ed0a: function(arg0) { - const ret = arg0.performance; - return ret; - }, - __wbg_set_a377297433dfea63: function() { return handleError(function (arg0, arg1, arg2) { - const ret = Reflect.set(arg0, arg1, arg2); - return ret; - }, arguments); }, - __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) { - const ret = arg1.stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, - __wbg_static_accessor_GLOBAL_8eb4cd83130a11a0: function() { - const ret = typeof global === 'undefined' ? null : global; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, - __wbg_static_accessor_GLOBAL_THIS_1e7044f654e934db: function() { - const ret = typeof globalThis === 'undefined' ? null : globalThis; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, - __wbg_static_accessor_SELF_d8b50611246a6d92: function() { - const ret = typeof self === 'undefined' ? null : self; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, - __wbg_static_accessor_WINDOW_fd0bc376bf0f8b42: function() { - const ret = typeof window === 'undefined' ? null : window; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, - __wbindgen_generic_0000000000000001: function(arg0, arg1) { - // Cast intrinsic for `Ref(String) -> Externref`. - const ret = getStringFromWasm0(arg0, arg1); - return ret; - }, - __wbindgen_init_externref_table: function() { - const table = wasm.__wbindgen_externrefs; - const offset = table.grow(4); - table.set(0, undefined); - table.set(offset + 0, undefined); - table.set(offset + 1, null); - table.set(offset + 2, true); - table.set(offset + 3, false); - }, - }; - return { - __proto__: null, - "./inkvec_wasm_bg.js": import0, - }; -} - -const IntakeFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_intake_free(ptr, 1)); - -function addToExternrefTable0(obj) { - const idx = wasm.__externref_table_alloc(); - wasm.__wbindgen_externrefs.set(idx, obj); - return idx; -} - -function getArrayF32FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); -} - -function getArrayU32FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); -} - -function getArrayU8FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); -} - -let cachedDataViewMemory0 = null; -function getDataViewMemory0() { - if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { - cachedDataViewMemory0 = new DataView(wasm.memory.buffer); - } - return cachedDataViewMemory0; -} - -let cachedFloat32ArrayMemory0 = null; -function getFloat32ArrayMemory0() { - if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) { - cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); - } - return cachedFloat32ArrayMemory0; -} - -function getStringFromWasm0(ptr, len) { - return decodeText(ptr >>> 0, len); -} - -let cachedUint32ArrayMemory0 = null; -function getUint32ArrayMemory0() { - if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) { - cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); - } - return cachedUint32ArrayMemory0; -} - -let cachedUint8ArrayMemory0 = null; -function getUint8ArrayMemory0() { - if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { - cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8ArrayMemory0; -} - -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - const idx = addToExternrefTable0(e); - wasm.__wbindgen_exn_store(idx); - } -} - -function isLikeNone(x) { - return x === undefined || x === null; -} - -function passArray8ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 1, 1) >>> 0; - getUint8ArrayMemory0().set(arg, ptr / 1); - WASM_VECTOR_LEN = arg.length; - return ptr; -} - -function passArrayF32ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 4, 4) >>> 0; - getFloat32ArrayMemory0().set(arg, ptr / 4); - WASM_VECTOR_LEN = arg.length; - return ptr; -} - -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg); - const ptr = malloc(buf.length, 1) >>> 0; - getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr; - } - - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - - const mem = getUint8ArrayMemory0(); - - let offset = 0; - - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7F) break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); - const ret = cachedTextEncoder.encodeInto(arg, view); - - offset += ret.written; - ptr = realloc(ptr, len, offset, 1) >>> 0; - } - - WASM_VECTOR_LEN = offset; - return ptr; -} - -function takeFromExternrefTable0(idx) { - const value = wasm.__wbindgen_externrefs.get(idx); - wasm.__externref_table_dealloc(idx); - return value; -} - -let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); -cachedTextDecoder.decode(); -const MAX_SAFARI_DECODE_BYTES = 2146435072; -let numBytesDecoded = 0; -function decodeText(ptr, len) { - numBytesDecoded += len; - if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { - cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - cachedTextDecoder.decode(); - numBytesDecoded = len; - } - return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); -} - -const cachedTextEncoder = new TextEncoder(); - -if (!('encodeInto' in cachedTextEncoder)) { - cachedTextEncoder.encodeInto = function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; - }; -} - -let WASM_VECTOR_LEN = 0; - -let wasmModule, wasmInstance, wasm; -function __wbg_finalize_init(instance, module) { - wasmInstance = instance; - wasm = instance.exports; - wasmModule = module; - cachedDataViewMemory0 = null; - cachedFloat32ArrayMemory0 = null; - cachedUint32ArrayMemory0 = null; - cachedUint8ArrayMemory0 = null; - wasm.__wbindgen_start(); - return wasm; -} - -async function __wbg_load(module, imports) { - if (typeof Response === 'function' && module instanceof Response) { - if (!module.ok) { - throw new Error(`failed to fetch Wasm: ${module.status} ${module.statusText} fetching '${module.url}'`); - } - - if (typeof WebAssembly.instantiateStreaming === 'function') { - try { - return await WebAssembly.instantiateStreaming(module, imports); - } catch (e) { - const validResponse = expectedResponseType(module.type); - - if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - - } else { throw e; } - } - } - - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } else { - const instance = await WebAssembly.instantiate(module, imports); - - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } else { - return instance; - } - } - - function expectedResponseType(type) { - switch (type) { - case 'basic': case 'cors': case 'default': return true; - } - return false; - } -} - -function initSync(module) { - if (wasm !== undefined) return wasm; - - - if (module !== undefined) { - if (Object.getPrototypeOf(module) === Object.prototype) { - ({module} = module) - } else { - console.warn('using deprecated parameters for `initSync()`; pass a single object instead') - } - } - - const imports = __wbg_get_imports(); - if (!(module instanceof WebAssembly.Module)) { - module = new WebAssembly.Module(module); - } - const instance = new WebAssembly.Instance(module, imports); - return __wbg_finalize_init(instance, module); -} - -async function __wbg_init(module_or_path) { - if (wasm !== undefined) return wasm; - - - if (module_or_path !== undefined) { - if (Object.getPrototypeOf(module_or_path) === Object.prototype) { - ({module_or_path} = module_or_path) - } else { - console.warn('using deprecated parameters for the initialization function; pass a single object instead') - } - } - - if (module_or_path === undefined) { - module_or_path = new URL('inkvec_wasm_bg.wasm', import.meta.url); - } - const imports = __wbg_get_imports(); - - if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { - module_or_path = fetch(module_or_path); - } - - const { instance, module } = await __wbg_load(await module_or_path, imports); - - return __wbg_finalize_init(instance, module); -} - -export { initSync, __wbg_init as default }; diff --git a/pkg/inkvec_wasm_bg.wasm b/pkg/inkvec_wasm_bg.wasm deleted file mode 100644 index b008b8049691244529ae98f1b9344cb4bd06391d..0000000000000000000000000000000000000000 --- a/pkg/inkvec_wasm_bg.wasm +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:090c739132ede5b1858d30cb2afa6ac5a8bc9e90b2c3b044bfeeb3344d63ce7d -size 3374596 diff --git a/pkg/inkvec_wasm_bg.wasm.d.ts b/pkg/inkvec_wasm_bg.wasm.d.ts deleted file mode 100644 index 08a82bec74fc7b570876c4e3170475dd0bb3b314..0000000000000000000000000000000000000000 --- a/pkg/inkvec_wasm_bg.wasm.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -export const memory: WebAssembly.Memory; -export const __wbg_intake_free: (a: number, b: number) => void; -export const build_target: () => [number, number]; -export const default_options_json: () => [number, number]; -export const denoiser_model_sha256: () => [number, number]; -export const denoiser_model_url: () => [number, number]; -export const denoiser_threshold: () => number; -export const intake_denoiser_input: (a: number) => [number, number]; -export const intake_denoiser_input_size: (a: number) => [number, number]; -export const intake_height: (a: number) => number; -export const intake_residual: (a: number, b: number, c: number) => [number, number]; -export const intake_rgba8: (a: number) => [number, number]; -export const intake_take_denoiser_output: (a: number, b: number, c: number) => [number, number]; -export const intake_trace: (a: number) => [number, number, number, number]; -export const intake_traceOnce: (a: number) => [number, number, number, number]; -export const intake_width: (a: number) => number; -export const options_schema_json: () => [number, number]; -export const prepare: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number]; -export const threads_available: () => number; -export const trace: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number, number]; -export const trace_json: (a: number, b: number, c: number, d: number) => [number, number, number, number]; -export const trace_rgba_json: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number]; -export const version: () => [number, number]; -export const __wbindgen_free: (a: number, b: number, c: number) => void; -export const __wbindgen_exn_store: (a: number) => void; -export const __externref_table_alloc: () => number; -export const __wbindgen_externrefs: WebAssembly.Table; -export const __wbindgen_malloc: (a: number, b: number) => number; -export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; -export const __externref_table_dealloc: (a: number) => void; -export const __wbindgen_start: () => void; diff --git a/pkg/package.json b/pkg/package.json deleted file mode 100644 index 2eaed80e7a6818cf4d6c5d85bcd8993514fc862b..0000000000000000000000000000000000000000 --- a/pkg/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "inkvec-wasm", - "type": "module", - "collaborators": [ - "LogoLabs" - ], - "description": "Inkvec in the browser: the tracer compiled to WebAssembly", - "version": "0.1.4", - "license": "Apache-2.0", - "repository": { - "type": "git", - "url": "https://github.com/logolabs/inkvec" - }, - "files": [ - "inkvec_wasm_bg.wasm", - "inkvec_wasm.js", - "inkvec_wasm.d.ts" - ], - "main": "inkvec_wasm.js", - "types": "inkvec_wasm.d.ts", - "sideEffects": [ - "./snippets/*" - ] -} diff --git a/samples/1075thefan.png b/samples/1075thefan.png deleted file mode 100644 index 31e4d57b150fac7ddc5c00ce0e16ae01afa4db2a..0000000000000000000000000000000000000000 Binary files a/samples/1075thefan.png and /dev/null differ diff --git a/samples/365retailmarkets.png b/samples/365retailmarkets.png deleted file mode 100644 index 36651c1d2724eb4049907dc58094db2bb61bdc28..0000000000000000000000000000000000000000 Binary files a/samples/365retailmarkets.png and /dev/null differ diff --git a/samples/adamo.png b/samples/adamo.png deleted file mode 100644 index 9e91c9aac4b9297d23c6c8a0ec16b9179e1a40d9..0000000000000000000000000000000000000000 Binary files a/samples/adamo.png and /dev/null differ diff --git a/samples/tiny.png b/samples/tiny.png deleted file mode 100644 index 9d4d4715e8f645dad208260df04c244f0f91b647..0000000000000000000000000000000000000000 Binary files a/samples/tiny.png and /dev/null differ diff --git a/showcase.json b/showcase.json index 24487a84fb6f239da5334445f342289bd64e332c..b880823522e75651d3d92ad2af2817f9d33c035c 100644 --- a/showcase.json +++ b/showcase.json @@ -1 +1 @@ -{"size": 1024, "summary": {"ours": {"de00": 0.021926090121269226, "lpips": 0.0018256381466926542, "dino": 0.9992463976144791, "params": 0.9110830629861029, "kb": 5.74462890625, "sec": 1.374763005002751, "n": 20}, "vtracer": {"de00": 0.34526788741350173, "lpips": 0.0062507710710633544, "dino": 0.9945693999528885, "params": 6.599387068246666, "kb": 21.74521484375, "sec": 0.08643746001180261, "n": 20}, "wins": {"ours": 20, "vtracer": 0, "tie": 0}}, "logos": [{"name": "365retailmarkets", "png": "data:image/png;base64,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zeZDhw699dZbSUlJkoO5Zq+++mp0dLT6AdHhcFgsFrvdXrJkyTp16nTo0KFNmzaVKlWy2Wyu3t1kMsXHx7/22munT5+WbEfDJCcnqwOQMkzBcm+UlCb3scMle3a7PXPkuKvWIHd398DAwPHjx4eHhxfO27NRSyG9Pur1AwcO9PDwcDpE7Xa7h4fHE088UTg3283NbdeuXaGhofn7sitXrkxNTeVh41+bBvR6zXPzX/yNF/h1Z2WgJKZqB61XOt+nEcF54Ospn/WTGiXltfVit6v6wnRitcpbG6VeGalZSuPP21eT7vVkY6DGkOr9VyUoUmrn9xSNkJCQt99+Oy4uTn0vURpa6tWr9+STT7Zu3bpYsWJFixY1Go0WiyUxMTEyMvLAgQMrV668du2auiyQTqczGo3r1q3r3r37kCFDJNsZZ++8886pU6ecpofY7XabzVa8ePGuXbs+8cQT/v7+Hh4enp6eDocjISHhzp07e/fu/fnnn0NCQpS7o9PNMjIy8q233vrxxx99fX1zNUynbdu2derU0YxWkpsxK/k1eScnV58mTZpkc63R6/U3b96MiYlxOBxKG17msC31/e/QoUPvvffeggULuF3do+7du48bN27evHkZGRmZI9Xc3Nxeeumlli1bSmFtC7xy5cqWLVvycSh0RETEzp077/GEAv5DASghTTaeFbGrApBFujeQLrUK9a7xNMvLncWglzfWSrpN9REMEnRTPtslXw3WiHGeZhnRQnZclNT0v4cnvYRFy7aL+RyA7Hb7J598cvPmTfUoCqvVWq5cuQkTJowYMUKzxk+tWrXat28/fvz47777bt68eer2G71en56e/t1333Xp0qVUqVKutmHRokXbtm1zSj82m81gMAwaNGjq1Kn+/v5ON+PSpUvXqFGjTZs248eP//LLLxctWhQbG+v07mazeffu3d9///3kyZM17+XqfjRlfOKwYcOyT2xSyMaamM3m9evXZz9yy2azORyOqKio/fv3b9iwITAw8NatW+ohusp+++WXXx5++OF+/fpxmbsXJpNp+vTp1apVW758uTJ828/Pr/AfXQaDYcWKFWPGjMmvgo27du0KCgqi/wt0geXUvityJUr1Jg5xd5OhTcX3QSjhNq6tTOoqBr1WX5hBfj4qu10sc9G1ljxUQTUSSCdilR0XJTE9Pzfy1KlTv//+u3pa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qampTiOW/vjjj0mTJhUrlrunz6NHj54+fdrp8EhPT3/mmWc8PDzy0Pxjs9mWLFnyzjvvpKamah51OfnilHWaY2JiXnrpJaPRmNta5w6H4/jx48ePH1+9evV9WOhqz549L7zwQlhYmNPntVqt9evXX7RokeZgzTt37kyaNGnjxo0mk0lzPsddd5RSCiQtLe3jjz++cePGJ598ch+O8LNnz44ePTooKCibLzfzMqUcopqbbbfbp06dGhUVNX369ALtTCioC/3pWyI21cvrpKy3xkjhB0u3mvKBXmNme+ANSbeJp+qfyvmIt7tGIen4NLkZLw3LFaKPtnbt2jlz5qivCKmpqb169apdu7a6qdOp4cFms/n5+WV9no6IiPj888+3bNly7do1peXZaDQ65frk5OTAwMDDhw97eHgsXry4W7du48ePz0kMSkhIuHXrlrrdSDln1q5d++mnn546dUpZaCL7Fo7Q0NDFixcHBAR07tz5tddea9y48YN1WO7bty8jI8Mputntdi8vL82L0blz51ylH2XlWqVTyWg0KiMW7Xa7skCssua8UwxKT09/7733zGbzuHHjnNrnnJroXEUWV7Nj1D+32WxvvfXW7t271V+o8o5KR0DWjbRarcpAEHW09fDwWLlyZdmyZWfOnPmgNwJlZGR07NixevXqx48fz3rbMBqNZ8+e3bx585NPPpmroLBy5UqbzeY0xaF06dI9e/bMW9LduXPn+++/n5KSor6pW61Wu93udL9XjjplgWd1tfeYmJhp06bVrFmzbt26OX9k0ul0S5cuPXjwoPL/F+g3cu3atfHjx4eEhDjdxa1Wq6+v76efftqoUSPRaoafOHHib7/9prnKjTKVUjk3s/4wIyNDWbrRaViPw+FYvny5wWCYN29e5r5VziynIYOuOhOchg24WoYoNjZ2+vTpp06dUjfbWCwWvV6vXIT9/f2LFi2ampoaEhKSlpaWnp6uHGNZt0SJQQsWLKhZs+bo0aMfsACUYZOIRNUt3yFuRaSS74N+kZHyPlKtlFyJdC6ilJwhZ29JC9XYXx8P8fPUKCCUlCphhWaVglu3bi1duvTrr79OSkpyukmkp6fXqVNn7Nix6pvHuXPnlEyT9apUvXr1zLNow4YN77//fnBwsHJmupqarpwbZrPZ4XBcvHgxKCho48aN06ZN69evX/bx32KxaC5PbbPZ5syZM3PmzLS0tBxOLlWSWXJy8oYNG/bv3//mm28OHz68oBtgJf86Lg8fPqxuAbLZbPXq1VN3gcXGxk6ePPns2bOai8fp9fratWu3bNmyU6dO1atXVwYKxMXFHTlyRJnNERkZ6XTBMhgMVqt1xowZtWvX7tSpk/LDIkWKlC9fPutb2O32+Ph4dd1qnU5XtmxZzaH37u7uTj//8ssvNRdNs1qtJpOpTp06LVq0aN26dY0aNTJjwfnz5/ft23f48OGwsDD1TcVgMKxatapfv37Nmzd/0BuBvL29BwwY4FT8UK/XJyUlbdu2bcCAATmfIBkUFLRz506nsz4jI6N79+5Vq1bNQ3XNmzdvvv322/Hx8errQGpqaoUKFR566KHOnTs3bNhQ2UiHw3H79u0jR47s2bPn4sWLKSkpTmHdzc0tODh45cqVU6dOzXmrrcVi2b17t91udxrVrkxQUtqDrVZrUlJSNt3KOXHp0qXRo0er04/FYilduvSCBQvatWun/qv09PRp06Zt2rRJfeFS4mDlypUbN27cqVOnJk2aZL7giRMnDhw4cOLEibCwMKdRO8qTzI8//lizZs2JEycq/2Q2m5XKYVnfIjExMSUlRd3jWaJECeXirP7Wsn4jy5cv//XXX52umcoct/r16z/88MO9evVq3Lix8gjkcDjS09OvXbsWEBCwY8eO06dPO02G1+v1drt95syZLVq0yPOM5n8mAEUnSXyaqv/LId5uUs5HHnQli0qdsnLl9t8DkE7sDrkRqxGARKSSn6rkpE5saXIz7p/8IMqEz4sXL548eXL79u3Hjh1T1qJSt+i8//77mtNBo6Oj1b0kmc/ly5Yte+edd9Q939k/nym/HBYWNm7cuLNnz7722mvZtNxqPsMZjcY9e/YorVO5rd6m9OnExcW9+eab169fnzZtWp4nudxPy5cvP3PmjPq+ogyxdApADofj008/PXTokGb6KVmy5OTJk/v16+fv7+/0r126dBGRPXv2fP/99+vWrXNqvjYajQkJCW+//fbmzZuVrhblTpl5UdPpdDExMTNmzDh16lTWTVUeZ7/99ls3Nzf1RVZpzpEsPX0rVqxwmniofNKKFStOmjSpf//+6qJHrVu3Hj16dGBg4IIFC9atW2ez2bJeak0mU2ho6IoVKxo1avQvKPc3ZMiQuXPnJiQkZP123N3d//jjj6CgIM0mB00rV65MTU11KnBarFixvn37uru7uyoMI9lOgwoODnY6SpVu6EGDBj3//POaE1f79u2bkJAQEBDw8ccfq5t7TSbTmjVrhg0bVr16dcnl0MnMD5WRkVG6dOk2bdoUK1bMz8+vaNGiStPpvUxlvXTp0tixYwMDA9VtPz4+PvPmzevevbvmH27YsGHFihXqmG6z2dzd3ceMGTN8+HB1IGjVqtXzzz9/6tSpNWvWLF26NDExMeuOUsLEvHnz2rRp06JFCxGpVq3a0qVLnU63L774YtOmTeoH4ClTpjRo0EAdee12e61atTKXJFI2W93nNXz48Lfeekt9PTGZTA0aNGjQoMG4ceMWLlz4xRdfKI3NWS8pygy4BywA6fVaFaYd4maUIg/++gTe7lLeW6O+s90mp27KIK2eEy837YoA97M3cNeuXXPnzlWaIpXzMCEhISMjIzIyUlkvU72UqdVqrVChwkcffeSql12pDa1ePV5EVqxY8fbbbyclJWle7zLLV7hqhTYajXa7/auvvoqLi5s7d66rwdFK14a6F1kZxpT153a7PevUZeV9XU32VuZHLFq0SERmzZpVyEdGnzx58quvvlLaP9TtAV26dHF66D98+PAvv/yibuvOyMioXr363LlzM5twNHXs2LFp06b169efOXOmU+U9o9F4+vTpxYsXv/766yJSqlQppywSFxfn4+OjvpLq9fq2bdvmpFfl119/Vd9ErVarv7//V199pUQ0V5o2bfrFF1/4+vouWrTI6b2MRuOxY8fu3LlTvnz5B/0CVbZs2b59+y5dujTrrVev19+5c2fLli05DEARERE7d+5U17Fs0KBBx44d87BVN27c2Lhxo9MdV/mfL7744ptvvplNa6u3t/fIkSMrVao0cuTI+Ph4p0Pu6tWrf/75Z24DUOYnqlChwvjx47t06VKpUiUPD498mdwXHx8/YcKEI0eOqNOP0WicPn26qzIfERERixYtSkpKUv+hl5fXe++9N3r06GxOk0aNGjVo0KB169bjx4+PjY3N+lmMRmNkZOTnn3/+008/KcOTlSTkdOSon0DsdnvDhg2bNWuW/Uc+duzYpUuXnLYtLS1t8ODBn3/+efbtjmXKlHnvvfc8PT2nT5+ubuRbvnz55MmTC6g+UIGMWEzNkAybRgDydv83tACJSGkvrcXhRWJStH+/agnt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CEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAAAIQuwAAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAcN/9H4hRrueBPdEJAAAAAElFTkSuQmCC", "ours": {"svg": "", "m": {"de00": 0.01113954558968544, "lpips": 0.0001805540086934343, "dino": 0.9999954104423523, "params": 731, "bytes": 6228, "sec": 1.2686528000049293, "paths": 7, "cubics": 79, "lines": 115, "arcs": 0, "prims": 5, "gradients": 0}}, "vtracer": {"svg": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "m": {"de00": 0.372999906539917, "lpips": 0.004229877609759569, "dino": 0.9948815703392029, "params": 2346, "bytes": 16627, "sec": 0.07387200003722683, "paths": 26, "cubics": 391, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, "artist_paths": 18}, {"name": "115animal", "png": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwAAAAMACAIAAAAc45fZAACC3ElEQVR42u3dZXgc192G8XNmZnfFzJItWWZmdmLHYeak4bRNmiZlSPuWU+Y2DbZpsKGGHHA4ZmaSbbFFFjNLuzNz3g9KXMfelcVg379rr0Ii7c7OjGaeOfA/UiklAAAAziQauwAAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAAAYhdAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAgAAEAABCAAAAATlMGuwAAAPS3JnfrKwc+KWmonBY3Zk7SpMSQaAIQAAA4zTW2Nz+89b/7c3cFhcUnhUReNnHpd8+6NT4oUtAFBgAATldSykCnv3D6N7U1ZZQf+cu6Z87511c+zN5GAAIAAGcATRO6Q+iOzPLcu177xUeDlIEIQABw+nNbZlpZzluH13+Ss6OmtYEdgiHBcBTXld+14te5NUcZAzRAbKVqWxvq25rq25qa3K1tpjuv5qjHtnSpVbfUFzWU20pJTk30p1tnXHxWyszT8qtVNtf+Y8t/yxurNE33+TdoWxeMXXj91PM4E/r/cme/cWjtb9Y8lVGeYwophQhxBd49/+pvLLwxKSSG/YNBz0BHq4/+eu1TT13zM11qBKB+YdpWWlnO/tLs7OrCssbqgrrSo/UVRxsqmptrhRBCSiGkEEoIKSThB/1KCSFnJow/XQPQuxmb/rjmKdPydPanZNsb8vddOG5hiCuQE6Jf/XXTiz94/0GhlNA+vbvUttb/afWT63J3v3bLH0eGxrKLMMik9nHWtgNl2TPjxxOA+u4+o1RNa8PH2Vs35O3dU5pe2lhd2lBltjUIqQlN7/hP6XRx+mFg44+SQg7ws86AafG0vZe5yfS0C6dfZz+nq6zK/PczN39h2gWcEv3n/czND6x6QihbaMbxg1GF4dyRt/uXq5948pqfSsEjHwaVrpfXla3L3UMA6hv5tSV7StJfP7j64+xtda0Nlm0K2xaaJqSm8cSJQX/gOX2/2t6SzJWH1wuH69T7wPI8sePNqyctcxlOTon+4LHN/+7/uKW5RjgDvF3+Xc/vfe87i2+ZEpvKvsLgXhFty7OvLNO0LcN3vzkB6NQ+yt7yYdaWT3K2HyrPFbYlNUNKoWmGZMA3hlIAOl0z0MsHPna724ThOPWPavq+0qzNBfuXj57LKdEfiurKdxw9JHSnr0nJHsvaVLCPAIShcFFs9bR5bJMAJHo0x8HzTvr6f25/fW9pRk1DldB1TTNkV67CAPpISWPVi/s+EHrXLiyaXttQ+W7GJgJQP2n1tNW2NnQ+EquovpwdBTEEJsaXNdU0trf4Gy4CUDfUtTauObLzwc0vbC3cb5puoenG/4b1KM4rDD0dcwxPw5PzyZ1v1TXXfm64yaky0IqDq+9dcN3YyBGcFn0u2C8oLjiqoqFCCN37aDRNGx2RyI6CGBoTlWxlC8YAdd2HWZsf3vryB5mblbANTTcMJ8P5IBgDNBhqWhreObxB2Kob9cV0o6Aq/72MTd9efBNnRZ+LC4qYN2LygcIDQnd4zT8uh2P+iKnsKJyZV8VhPC6muKHirhUP3PrKj95PX6dL6dAM5q8Dg/k0kr01rTxb6N3swjecT+5622NZ7MA+59Qd1005NzwkWliek6fICrP9jlmXT4xOYUdBsBr8cNHQ3vTS/g9+v+7JwtoSTdOdDuaxg2edQdZqtq84tNbd2uR99rttCal5f0KRWnr5kXczN1w96RxOjD534dgFf77kO99+989NTbXCcAlNE0oJyxTKunjK8gfOvVvjsREEoOHiUHnOTz9+eGXmeqGE03BQwQLMAhsK9pdmrc3eJhxOr+knISyuqb2loa3JWwaStuV+ZvdKAlA/+fKcK6ICQp/bvXJDwf7q2lLh5z8lbvw1U869b/51sUER7B8QgIaHtw6v+clH/zhcnuV0+MlPr6QMc4YYhpWgTzevHlhV01QtHH5eulqU+sbCG3YXZ7y+/0Pvg1GE3FJwYFPB/iXJ0zk5+sOVk5aeN2bekdqSupYGp+GIC45KDotjt4AANDzUtTX+deOzf9v0bLvl9nP6c+QghnsXmDydFv+qe3bPu8Lr/FXbHBmZdOPU8xclz3jz0FpLWV6+uW5U11e8fXj9wpFTdQp29Y9Ap//U2NHsB2CYBaCC2pIffvi3Vw584HI4nRqlfUAX2NDy/L73a1vqfU1COCtl1qiIxPiQ6EmxqWklmcJroTNNf/PQ2vsWXDcqPIHTA4BgFpgQ4mh92dfe+fWraR/4GQ5NCCEUL16ny+t00ORufT1tlbBM4W01PsPhd9+C64QQfobz6wuu9/5jQgjdyK048mHWVi7KAGgBEkKIg2VZt7xyf3rVET8H453BLLCh6IPMLfuLM7y369jW2WPmzh8xpeP/nTtmXkp0Sn51kfdS0Zr+zO53vjznCqdOKy+AM7sFaH9pxu2v/V96Za5DMzpm0PLidTq9xGmx9vuKw2taWuuF5u1iouwvzr7i2LCeEaFxV0w6W9iWr6rQu4oPr83bzXUZwBkdgA6UZn7x9R+llWc5dQctP8DQlFNd9GHmFmF4q/1juqckTjgndY74X10+48pJy8KCI31lIGWa/9r2BnsVgDhju8Cyq/Jve/X+jKojfrohmOgOcVquBXY6eGbPu3VNNcI4ufyP0pS4atI5iSHRx//T5alz5o6Y8knGRh+rU4mthQd2HD08L2kSZwmAMy4AFdaVfGvlbzKrcl2DOhRAfTqIU6mO/+gCTWqDWFZVfbq9ouvryemaTuuaGKxZYMN/19e3N7+etsr7gB7LiotMvHbK8pP/zRdnXbYqe5vyMRS6rLZkxcE1c5MmMuYPwJkVgKpaar/33u/XHNnq0AZt25RSpm0poRyaEeQMSIlIDHIE2F1oiCqoLa5oqpYDfmezlG3ZlhTSZTjC/ENGRYw45TZIId2WJ6syr8XTKqmFjx55ad+HR+tKhfTalqMWJ0+fGjfm5H9x6YQlqZEjcisLvA8b0ox3Mzbet/C6kaHDr1Jfu+WpaanfV5p9tL5MCNHiaW8z3REBIbaygxz+k2JGp4THBzr9HLpBvDt2pTVtSwhhKsuy7Y6HXl3TDE3XBqQilBLKsq2OpehazXY/wymFHMgN6Cu2si3btpTd8bjebnl0TTOkLoTQpNQ13dB0TrmhHoD+uuHJd9JXuQznoFwgPLbpsTwuwzkmcsS4qNTloxdeMmFpUkhcFyPCd9797VM7X3UMVMOVEspteSzbigqMGBkaPyN+0lWTzz9r1FyX4ezK5pY3VV/9/FfTyrJ6NunGUlarp62LbWNDUIDTX5c6s8BELxb/enHfB8KyhaF76f8yXPfMu9ZrVcMQV+Bdc6/80cq/Cs3ltRHoUHH6mtxdd866bMC+S3Z1UVlDpfCytcqpOybGjApxBXby6/m1pRlV+W8fXv9JzvbiunKPsizb/l8hbCmFEFJKQ9N1qaWEJy4YOWV+0pSFI6ckhyeE+QX161dzW560spwWd6vXbxfsCpweP7ZbF9vev2FRffmRmuJthQcPVRxJK8/OrS42bY8QsmNXSSETQ2Kmx4+dnThhbtLk0RFJKeHxou+rq1QcrS/fV5q9rSgtu6pwX2mWEurTY6XUmKgRYyNHzkgYtzRl1ojQ2JSIhCEYWE3bKm6orGiqyajM31uSWVhfll9bWlBX2tzeIqT87LwTQqnwgNCxkSPGRyVPiEmZHjduTGRSYmhMVyqO1rc1HyjN9HqgpZTjIkfGDPOlVIZWAHrlwLv/3P6iy3Gs3s/AdRuZtmnZ9pTYsTMSJs9LmrYsdcH46NTuvpsupZBKStXPCygoy7Y9tulvuM5KmbMoedacxKkLRs6IDozs1rs5NEPr6QabykoOS7x6yoVBParKLaXm0AyPZSphD9bJ9sLet/Nri4zBaWjsGAM0vAe3fZy1bX9pptC9XUZte9bISYuTp/n63UvGLfp72EsVTZXeW49048mdb90x67IBu+f8du3Tz21+WRiOkzvyQkKj373jwbNSZnr9xZKGqmf3rHxp7weHynOFbQldF+L4e6XsuKN2XGU8pu0RIqMiN6Ms+9ltr4cGRy4cMXVZ6pwbpp3Xf+Ufq1vrr3/p//JKMr1+u+mjpu/82vPdam7vzRt+nL3trcPrtxWl7T16WNimkLqQ8uT7a3ZVfnbFkdf3fSA0Y3Lc6IsnLDk3de5F4xb2fm80trd8mL11dc72nUfT9xQfFqZbaMbJ25BWkp1WnLli/0dC0yfEjl48ctrS1NmXTTgr3D94KPzpFTdWrs3Z9UnOtr2lWRkV+Z72JqHpn55s3mJNa315SV3Z+pztwraFbkxLmDA7YfxZo2ZdNWlZ599oX2nmsgdvECdf5JUtdMfTN/z6i7MvJwD1jb0lh369+iG35XHoxsA0GJq2pUlpaEZkQOhF45ZdPH7plNhxiaFxvSlDIvuzndaybafuMDR9dtLUKyedv2DkjFHhSTFBUT1+zx5vsGVbyeGJP156X4DXpb9PpaKp+vW097+x8I6BOdZebcrfnVOdb2iGQPe1m54Vh9Y2Ndd5WfxLCGGZX513rZ/h9PXrk2JSL5t41tNb/iu8BmhN21qYtj5vz7JRswbm6zh1h3D6eVmnTLf8HX6+ukL+vfOtBze/fLg8R9iW0A3hs0i9/Px/S6FrQjfqWxs+PLzuw4wNT+1688Jxi398zhfjgyJF37c1Sn+Hy9e38/O6ekk/vOG6vD1/XPfs9qIDtQ1VQjeEbnhv/xPH7SIhhFCHSrMOHT38ZPCK88Yu/NnyL02LG9uz/eCxzH/uWPHs7pXplXmtzbVCdwjd8H72io4Bep9uQEZZTkbx4ef2vjc5JvXqycu/uejGwYpBtlIHK3Ie3PTfbQX7cmpLPK2NQjeE5vtbfO6gCSH0jokHB4oPHyg88J+97z+85ZUrJy27Z97VccGRvka1Cqe/twX+bEN3nAZ9akPl6l/dUveLVQ/m1BT4G35iQLqNIvzDksOT5iVNXz5m0bLU+aF+wX3SyNnn9V1M22q33E7NkRQWNy4qdXnqonPHLJwQM6avxkj1bIOVUuH+Id1qv7GVnVF5ZFxUiqEZVS01f974xMrM1Y9e8evUiBGDczWxrUEsxjPcu8AyqvLfzdjgfWVTy5yQMP68MfM7u+5o+uUTlry8/8NWd4u3RiBpm+2PbX3trJQZQ3NpsJqWhp988tg/t70ubFNohujZI5PUhMMlhMquyMuuyH/r0NrfXvi1G6ed7zq96kAWN1T8ecMLj217zeNuEZouutdmLIXuELqjrrXh9f3vv5+56d4F1/1o6Z2RAaGiO32172Vs/v26p/ccTf+0lc4Z0J0NMIRumJZn/9HD+4vTVxxa/Ytzv3L5hLMG+OFta2HaXze+8H7W5ta2po6iWaLHa2LqDqE7LNvce/Tg3qOHXtj33i/O/cqVE88O7rSfVzAGqP88tu0/q3M3+Ttcsh8Sz7EbsMcyA5z+c5KmzkmcNn/kzCXJs7vbbXSqnp1PX73f4E8HYiuVHJ501qi5M+InzUuaMTtxSp+vx9mzDVbCCnEFuXw/4ntJcpb5rZUPTIkd93/L7nPqDqfhWJOz+ab/fuPhKx6YlzRjECJIXxysM3YW2LsZG2saqoTD6+qn1iXjFyeFxHT+DstHz52ZMGHLkV1C9/ocKTcX7k8ry5kRP26offfMyoKvr/zzqsxNPY8+J9/jhThaV/rF136xMX/vL869+5R7b7jYU5Jxz5u/31WwVxhO0Z3LxclFMoXQW9wtf133zN7ijJ+c8+Xlo+d05ffSynN+s+bpNw+v9bjbhG54H3ffxbRqaEKIA8UZN770w++dffuPlt4Z2s/jt8Sn3ayVD2195d87VtQ0Vndklz66BmkdzWw5lQW3v/qLyyae9dsL7p0aO4YANOB/JMUHn9jxkuPTKdl9NjDiWLeRQzecuiM1IvXKSRecO3pRcnhibFB0fw4rUj2dzGV1TOZyGs7owIizRy24ZPw5k2LHpUaM6KeeGtnTRal6cKSchnNK7NhHtz6XWXXk/5beq0vpZzjTK7Juf/U7D1/xq/PHnCUGoW7AYC3IpYb77Pcnd77tZQiIEMI2o0Njrpl8jn6qO02IK/DaKcu35O0RQnlbH14vqyl+/eCaoRaADpTl3PbKzw4cPeQ9/PWGpttKPbn1tf2lWS/d+NsxkUnD/e7ycfb2+97+Q25FnjBcfXjPXpO56UBZzkNX3H/TtAtOFdM3fe/9v2eVZAqHn+irBhvdMC3rT+uey6jIf+76B/o7A63K3fnjjx7dWbBPSK1XCbLTE08Je+WBjzIr8/92yXcvnbCYADRwWj1tv1v3SG1Lnavvjq5lW27Lo0ktMTQuNSL5rJS5F49fNjl2/ACsMdSDXhVbKY/l8dhmXFDUiLCECdFjrp1y8aLk2SGu4P6eoN7jNRmkEIamd7fTcHbiVEPq+0sOFTeW17bUd5RNKqkv//Lr9//83G9/ac4NAznvdHDXoxjWXWArDq7Jryn23oRlq/kjpy9Ont6V9/nirMt/v/aZquYab28lbSFWZmz42oLr4oOjhsgX/yRnx5dff6Coprjv08+xZknD2Jm35/oXf/jyTb+dEJ0yfE+SrYVpN778f3XNdd6Dcm84/Koaq770+i+L6sq/f9YtXi8atlJ/2fjCA6v/1drW3POuIp+JQVNKvZ226gZP26NX/d+YiH6Jqh7LfGbPu/e//2BDS53QjX6+Zkjh8M8qz73l1Z/+bPld31l80/AqATCMA9DrB9/fkLfNaTh6f6/v6DbyWJ6RYYkzE6fMSZy2OGXuvKTpA3YspehGr4pSwlaWxzKD/YIWjpw5I2HyWSnzFyTPDPcLFUO+G8hWdkxQpN7NQXAp4UlKKJfhdGqORndjx3hJp2E0tDX+9OM/K2HfPffmgcwgg9wFNjwvGa2e9qd3vyNs02tTvDQcX5l3VRffKtw/+Mtzr/zj6ie8txAYzrSSzHVHdt80/cKh8MVX5e74yhu/LKop9v0groQSQtlCKXFCMdKO6TlSE/KU6VcKh9++owdveeVnL9746+GYgRyakV6Rd/ebv6n79M7dyY6yxf/qaKjP/ib1U/9l6kabp/1HH/zD0LTvLrnl5KvTnze88OMPH7KF8Nnwo5QQStj2p//jhOuCdmzxyU6iquPj9A13uNtW3Pqn2L6eDd7iafvVmif/tuF5j+XpTp/XsREfSqiTvpQQpzj9dEd9a8MP3vu7rez7z7qNANTviupKHt36TKun1WU4Ra/7BfwczqWjFl4y/pw5SdOTQuODnIFDuVfFoRvjo8dfMv6cC8ctTQiJiwmMFIPTF6N6tOftHswfcepOqSlLmZvytxuaduxzDV1rM1sfWPXXwrqSX5733YEKrHSB9cT6/D0HSrO9j6WwrcnxYy8cu6Dr73bN5OWPbvlvk/eiMkLZ9pO73rph2vmDOxTaZTi2FqXd/uovSutKvKcfyxRCSN0IcPqPjR4xPW7s6MgREQEhHcfZY1t5NUcPV+TtKc6ob2uyTLfo5Mb8WfjbU3jg5v/+dNVdj0cMjanXosvF5aua63744cOHjqZ7aSezTaGEpjuC/ALmjpg8OiJxTOSIAIdfR7G+6pb6orryrUUHsioK2i23sK1P56j7iCC2bf3k48dSI0dcNfHs4//NXza+8LOPHrGF8nJSKSVsU2i6Q3eMDI+fHjd2bNTIpJCYY23tJQ2V2dWF2woPljZUmqc8Ug7Xlvy9d6349Ypb/9yHlXttZf/wo0ce3fyyUh2Dn049oUPYlpBS6IZDN3RNHxEaExEQ+tl1RrZ42nKqj1q25bFNZXqEsoWme39nqdm29fOP/5kYEnPz9AslAahfvZL2zqGyDD+HX590pT13/d8vGr98cK+VXXyyN5V19+ybfn3BDwZ3GnZvuoF6UMKnzWwTSiUEx67P26pLTX7uqVFv9bQ9vPkp03L//Nzv+jv86AIbgjyW+Xra6obGKu/dCrZ15+wrutXRPCU29ZIJZ726+13htZ6Cpm/I27u96OCikdMG6ys7DUdaWe6j214rrS320lJlW8IykyIS5ydPv3bK8qWjZkYHhBu6l95hy7bq25t3Fae/vP+j9bm78qoKfN6EPstAewsPfOXN3z533QOBTj8xbJbX1v65/Y2VB1cLh/PE5OFpj49IWJwy87qpyy8YszDYFeB1HrXb8hTVlb+0/6NX0z45WJ4rLNNnBNH0tvbmH77/4LjIEZNiRnX8szcOrvnV6n97bNPLvrU8QndMSZhw7ZTlV09eNiF6lMNbueeOMQmbCva9uO+jVbnbiyoLhOHymcM0+e6htQ+s/vevzrunT249pm39fNW/Htn0kpCa0E51nVC28LQHB0emhMXPTpy4YOTUGfHjx0ePDHD4HT98QinRbrYX1ZfvLslck7PjQGl2Ts3RhsZKYbi87CVNb/O0fvXN3yWGRAf2ee8hAeiYssby/+x+zelw9kk3hKZp+bVHBzn9dLlXxbaszKojamisSNXd/a+EcOpGD1qA8mqKdE0vqCtyW56TB8kaUrOF+PfOlzSp/WT5twIc/swCG2pya46uTN9w4r3ts3N6RNTIqyYt7dYbBjj8Lptw1juH1rRZlpc9IqXpaXts2+uDFoCk1tje8sDqJwprvKUfT3tMWNxtsy69ZfpFMxPGn7JpJMI/5IIx8y8YMz+jMv8/e997Yvsb1U01nXVwGI6VB1f/a+S07y65eXicH5qWU1N0YGOO0B2fC/m25XC4bpx1ydcW3LBgxJRT1mQaHZn0s+VfvnfBtU/veufBTS+W1lf4zEC6I6s89wcfPLTi1j87deNw+ZFvv/e35vZmb+nHTI5IunfhDV+ec0VUQFinSzpKl+E8d/S8c0fP21+a9bt1z751eK3b0+4jrUohtUc2vbQgacrlE/tgJseL+z58eOPz/+u06uQy7HEHB4VfN+eqqyYtXZIyI8I/pNO9akyKSZ0Uk3rbjItbPe2rc3d+lL11xaE1JTUlwnCc+ESm6Y1tDV9/50/fWXKLOK0XShrMuPD24Y+LG0r7KrI4NH1V7oaurwMqBrmhWObXFh6pKRDDcgUfO8gZ0N0KAu9mrHpoy5Muw+GxPb6WjNU0TQj1xI7nH97ytIAYgrPfN1XUlXkv32y2Xznx7OSwbq9acOmEJWNiUjt6kbzeYNYe2ZVWljNYzzR1LQ2FNcUn3vxsS9j2ldPO++CLD/3l4m+dMv2cYEJ0yu8u+Nq7d/7j/HGLhWUKX+vJSM1tmX/a8OyeksxhcoLIsobKhraGz901TXdcSPSz1/3i6Wt+fsr0c7yogLAfnH3727f/fV7yNGF5fHYcG873Mja8mvaJEOJ7H/zjaFXhiQdLKWGb54yZ/8GXHvnh2bd3nn5OMD1+3LPX/+Ivl3wnxC9YmB5fDVENrfW/WPWvo/UVvdx9248e+u57f2tyt55iur5lalK7c/61H3/p0Sev+ckVE8/uPP2cwN/humzCkocvv//jLz1614LrNakJ2zx5Sb6D5bm/XvNvoTsFAajP1bbWvbx/hW1bUqg+eelS7i7a19DeNLjZoMtbq1c0VRwsyxjsFqAe7m1Nyq6XAfVY5m/W/P3uN76bV1OgS6l1+rm6lEKov218/Jld/7X7c6Ex2Yuv3yevYXexaGhv/uf2N7y3WNhWeEjsNZOX96A4bIR/yA1TzvPZGaTpJbUl72ZsGsx23RO2zfJEBoT8/fLvrbj1L7MSJvT4jReMmPrqLX/43tI7tU/H5Hof7VteV/67dc8Ml0e7T8d6/29fuePDE16+6Xc3T7+oZ5UD5yZNev2WP583fomwLJ8ZyLb/tP4/P/zw4U9ytp846UwpYZlfXXDDW7f/dWKPRpT7G65vLLzhrdv/Fh8eLywfGchw7S088MzulaJ31YDvXvGbmqbqzhoFlRKWOSl+3Bu3/Onp636xYMSU3oyYnByT+u9rfvrGLX8aG53qNd7lVxfTAtQvXk97N70iy2EYx3oievkSmvDY5vbC3YMbKLq4tbomG9oaMiqyB70PrId7+7j5Bqf0pw2PPLL1aUuZzq4dbl3TLGX9cvVf3k3/eGB6wQbnNdwuFu9lbD5Sc9T7s6myZyZOmD9ics/e+ZYZF4X6B3u/vUkplFpxeG1ZY/WQ2Au2GR8S88JNv/v24pt7P1o/zC/4Txd/8/vL7tSk5jMDGc53Dq9/P3PL8Lu9mJ6UiKT/3PDLZaNm9+ZtRoTG/PvqnyxImSksy1dMTCvP+dP65yzbPHHgs23ds+jGP1z0jZDelTk+J3X2E9f8JCowQtiWr/7Kx7a/nllV0IsF6Z5JK87odM6XEpbnqmnnvX37X6+atKyvLiBXTVr2xq1/XDp2vpd4p53mk+EH5+s1tTetPbK5zWzT+i5dakKatmdr4a7BHVLTjQ2W2uGKzMZBbrLqYbkBP4czxNmlCmArDr33yNanbGV3625haHpje+Ov1/w1vSJLYAjw2OaTu95S3p+AldCMO2dfHtDToeupEYlXT17us4vBcO4pTNtZfHgIpB8r1D/kyesfuGjsoj67cEn56/O++v2zbxe+24E87pZ/bPnvMDtjLDM+NPaJa39x3uh5vX+zlPD4hy7/fmhAqLDtzh5oTrgGW56lY+b/+ZJv9Um5wkvHLf7R8rs0TRdeW+OkVlZX9vTud3r25h9kbXly11udNbcoJSzPlxZc9/Q1P+/zykNTY8e8/IXfLh0zv7OuRgJQX8muzttWuNPPcMnjJuP0/mXZ5vbC3R5frZQDOKmqKy+X7tx1dF9xfelQmAXWrZcQKtDhHxkQLk496rnwT+sedptuXcrufopTdxypKfj1mr+1edqHznfvw9fwsv7Inj1HD3udrC6USolIvHHqeb15/ztmXeo0HL4SgK3UPza/bA1uN5CyAwznU9f94pJxi0QfL8Vq/OaCr94w/UIvQzE+6wfcVXRwVc6OYXTCGIbzF+d/9fwx8/rqDecmTfr9Rd/Qu/6XY7onx49/+tqfBndj5a/OG4zlNxbdcMWkZT4bgZR65/CG4obK7r5zq9n++PY3GhtrfM8KVMLy3Dn3mocuv7+flmKND4564cZfLx+30GczGwGor6zKWV/XWt8xEboPX7rUKpoqMypzxHDIE7qmlTeVH6nJH17p57OhM12qybXi4Ls51XlO3ejZBzl1Y1X2+jcOriQADS63Zb55aG1dY7X3C7Tp+fKcK3tZZn1m4oRzxi4SHZVXTqbrmwv27y0exLHAShPi60tuuXzC2aJ/igf+6aJvxIfFeW9d0PS6xqp30jdY9jC5OZnum2dc/OU5V/Ttu948/cLl4xYJT1tXSuME+wX/6vyvpvZpY4lDM3593leD/EO9N5PoRm5lwUdZ27r7tp9k71iVtaWz8uKWuWzcwl+d/9XA/qwPkhQS88+rfjw+drTvGQkEoD64mLrfOLjSqRtCqr59Gbpe0VyRUZE5qC0q3dhgh25sK9o1XLb2uJf49D87VdpQvjLjQyFt2dMPklLYwnph36u1rXX98PXVIL+GT1NzUX3Z+1mbvU9Ftq348Piruzn7/WShrsBLxi8SuuGjEUi2tbf8c8cbYvA6dGYkTb7/7Nuc/bYGeHJY3I+XfcnnvUc3NuTvLWuqEcOh8ys5auT9Z9/WgxHxpzhJ/IK+PPsKf7/gzjrCPmuuu2rquZdP6PsVBqfEjb5t5iXeu2ul9LhbthYdMLuTUz2W9es1T7a623z2f1lmalTK41f+aERobH8furGRIx66/PsOwynUsLk6DbMAtOHI1qL6Yk2Tff5IrUnZ0N54uCJTDd6tpbtNVpvyt3vswemzUz1uulAi0Blwyi6wPSUHDpQecunO3hxTh6bvLz30fuYqWoDEYA5/3pRfke89AJnuSyeePSEmpfefcsXEpWOjU3x2Awn1Se6O9Mr8wflb0R3/t/SObs2g7oFrp547c+RU7zdX3dhfnJE5OF+/m01lyr515qVTYkf3x7ufP3b+1PhxQlmdj1L09wv6wdm3Ofonrd4840KXK9B7RNCNrYVpxfXd6AXbmL9nd3G6z84vZQc6XH+59NsTopMH5vhdMHbB986+XQzeSJLTPACtyd1gWp5jS6307cuhOdLK0mtb6sRw6FTSNS23+kheTaEYVr1gSig/3RnsCu58oPQbae84etr5dXxGbHO3bsnf3udDu+Rn6+KQgcQp6ne7H9/+uo/mHzs0KPLKiUt1qffJQNdLJizx+RysG8XVR9/P3DwIu8C2F42cduXEpf39OXFBEReMXeC9F0xIYZubCw4M+eYfKyY84cqJZ/fT20f4h1w7ebnovIC+bV0yftHk/klgQogJ0aPmj5zqPSLoRnbFkYrmbjTUPb17pbI8Pk57JZS6Z9EXLh0/oCu0f2vxF6aPmOxzUoKgErTo+VySQ+XptrKE1Pvj/Z26kVZ2qLSxPKILQ3T75Unx096NLl8ulLmtcOe4qNGDc/xltzdYCCGlElLZnTazFdQVbS7YZmhad9/8ZC6HY/vRXZ9kr00KTbJU34yBcOiOJk+Trsneb95pvxbYyoyNGRV5Phb/MqfGj7tg7Py++qy751712LbXPKbX+4G0LPPNQ+tun3lpdGCYGNg+nbvnXd1/nV/Hh/KzU2b+MyiivrXB6xoF24sOWratD+nJyWpmwvgZ8eP67wPOHTPP0B2mz9AghG3eMv3i/is0EekfsmzUrA1ZXgsTSLe7Na08d27SpK68VVZV4caCvT4vCJaZEpX8tQXX93KAXfeDeOS986/7WunvLWWL03pZ+IEOQNlVuaVN5SesAyX6tMJyTWt1VmX25NgJPbovqV7+2XTryV4K4bY924t23T7rC0IMm2XJO3obO+/gf3n/643tDX2y0pmh6WWNZfe99T3Zd0UTpBCmslwDe1kZjmuBeWzz2d0rhW15L0+i6zfPuKgPr84To0ddNuGsNw984r3ByeHcnLd7W1Faf4zt6KQ5IT4ioVsljHtjwcgpI8Li6ltqhdBPfvLYW5ppKVsXQ/iepBnLU+c4+jMsTolLjQ4KK/XVzWRbI6OSJ8em9mf9MDk5drSff0ibp81LPtD0tNKuFnjbUnigvL7CZ/+X1G6beUlqROLAH8brp5772LbXDxQfFrpGF1ifSa/IrGyqNHSt/7oVdKlvL9rVrWFAeTX576V/9Mf1DxbUHh3gHiVhq+yqnG5VA6pqrt5wZPMf1//tk+w1vb8H96QLTNlBzsBwv1Bf71zdXL0ud6NSqu8Oq7SUaVqevnp5LE+fbt5p2wW2tTBt+9FD3h+1lZ0UFnfzjIv68nok5RdnX+67GooUSj2x8001kCM0Lc+S5Jkp4QkD82kR/qGjIhJ8XL1kVXNdVXPtUG7+MXTH/H4Oiw7NmJs4yecwIMucFJsaE9S/PQATY1JigiK8j8WWsqihoitV7E3b2lKwv721yVd1iVD/0HvmXTMoBzLCP/TyCWcJTReCLrC+k1GZ1djeGNCfa8waur6jaJdpmw7N0ckIFY/t2VeStq1w55bC7UX1xRVNlU3tzeeNWZYSPmIgVxg3dL2sqXx/adqSlIWis6lznoLawm1FO9Yd2ZRXU1jZXJlTlfvL839y/tjlvSyF3INbsZTCoRudFDb8JGddRmWmQ9f76iYvxbFBO6cROTyGP1fXlnlfqt0yb5t5WWjvCuyebF7S5Lkjp+3M33fimgafPV5/nLXtUMWRKbED12s8NW6MnzFwKyJNjxu38vB6XxeuovryhJDooZp/hEPXp8WN6d+ndqlNiRv9Ttoq78/vyk4KiQ11BfXrNkQHhgc5/X10XcmShgpLWZo0TvUoW5dWlisMw1dH3tWTlyUO3rH+8twr/7zxebfpPo1XwxjQANTY3phVla1rsl8XQtKkKKgrzKjMmho7+aQTrqq8qXJ/adr2ol07inaWN1Z6bI/HNjUhNU0LcLh6XZm628s86ZqsbKo4VJ5+cgBqbG8qbSzLrT6yvXDX2iMbjtYXm7bpttxCSF1qAQ6/3nc99GxdKimU8l2SLqsq56ldz7ktt1N3nFFFRbt5ngyDkUA5NUdfTVvle/hzxBemXdDnHxobFHHtlOW7C/bbn85TPDF9uz2tz+xe+ddLvj0wxQ8NV+CoiISB3O0jw+KE1MTJX18KU1nZVUXzB6o/rgf7KykkJqA/a9WIz6r2dXLIEkOjZT/fs2ODIiMCQn0MVxctnrau/G1XtdRlVeb5GtCtCXntlHMH8Vgmh8UtTp62NmdHPw3YPeMCUENbY1lDmaFp/Zwnpcf27Cjc1RGATNvKrMxMr8jcV3IgozIrvSKzuqVa1wxNapqUmtQ65mmrrhX36+sGICGFNG0rszLLtm1N04QQRXVFB8oOpZUdyqzMTis7WFhbZOgOXdM7wplTd8q+az7oWV+MFDLQR3FVS1m/Wv37g2UHXbqLmNO3Q68G3uqcHflVBd5H/5htF4+/aHRkUn987qXjFz+y9ZWjNSXes5dSbx1e/81FX0gOixuAZV+CXAFRAzvmekRojK7plrdyAEqpFrNNDOFVciIDQwfgzHZ0MriwO+s098vfr9TyakosyxKnGgGZWVlQ01glvOZF2xoRNWJ8VPIgHkxNaheNW7Q2a+tp3BE2oAGoyd1U3lim93OclEJYtrX+yMaxUWM2Htm0/ejuyqbKiubKxvZGQzMMzfAz/IbUMXDqjoNlBz/K+iSvtmBT/pbihtLyxoqa1hpNag7NEdBHddxFX4401xNDvD8TVzRWbCvY4dScAsOcxzIf2/a699EJth3gH3rNpOX9VJd2cuzoc0fPfa7mbV/z4QurClemb/z6wusHYD/46Y6Qvu7m61xkQJgmpKW832PV0G44HJjhWakRSd5bX5StOwM7ax8aEO6ulXbbefSwz2xheuYlTU4KixncLzJ/xBSh6UIoISQBqLdqWuvKmsr9Hf79/UEO3diYv3lLwVa35TFtU9d0TWqBp0oSfdJoemyx9G5N3c+uzv36O9+1bNNjm1JIXdO7srW93+DjV3fv3hggH+OrGtoblbClJk7bTuMzZvzPB1lb0spyfMx+t6YnTrh4/KL+2zlfnH3l83s/sJXlbVdJ03K/fnDVzTMujPAP6f9DNdCns+2zf1kK286tOsqfj7/vVSOkprl052D/dcuuVMIo76yutz0+OtnfGOR29PjgyKTwhKO1JadrI9CAzgIraSjR5P/GnfTrSwhlKVPXND/D6dB0Xcqu/aLoq1E13d1aW5lSSqfucOpGF7e294NI5HHjlrq1tb7GAKVGjooLilG2PTBHeZi/hvBzvBD/2fuesjzeo5puXDflvKD+nMpw9qiZC0ZO9bnigcO5JW/v1oGoCqg0KbUhVHdHNXtaCUCdtzOp4TD00FJWUX2pj/mVSnP4D8DCF+LUa48EJ4fFCWUxDb4PHC4/rA/UcKqOudMDfI+Rvd7agb8p9uATdSnDfawJYGjGxeMvNO0zooz6aWzX0cMb8/f6uvmEBYTcNvOS/j4tvzL3Kt+LMkqP5X5x/4cD8Pdh2bZnKK0NKWldPS1Ylp1fV+ZjArwd4AqMC4ocAgEoKCk0RliKANQHWj2tx/pchuarl9eWgd7gvuiw07q9i5SuafEhcb6uznfMvnVK3CS31T7Ej/VwP9n69fF6xaE1FbVl3scgW55vLLxxAGoxXzvl3IWj5/isx68Zbxxck1NNfxCGJVvZJQ2Vvq4CAU6/gejeFaccTKKH+gUJYQsGQYs+GDyriSHc8j8os8AGfRBJdzf4s2LZPp8JRoQl/fy8n37j7W9VN1cbusED67AbA1RUX/7m4fWdVKfNqS765ep/9/sdQqi2TmqQSOn2tD2x880/XfQNTiecZpya0ck4p4G7ZUs9MSRGKAJQr1m2VVCTr0sphmgHreqLDVN99D4Dtp5Utze4KwVsFicvfPzqh3/0wU9za3I1oemneznRnh67IdqwvDp3Z2ZplvBV+k83Xt71trAHZFiA4RKdLKqg7HfTN9w3/7qU8HhOKZxGlwc7yBUQFxx55kzrO/0DkBKq2dMipRyyVSUHaxZYDz9I64tZYD3aYF1q8cHxp5o/Of/5Lzz3yJZHV6avrG9rcBkuGoKGRQtQu+V5fPsbp5j04RgahSQ0Pasy/8OsrV+dfw1nFE4nupSGbrAfTqsxQB3hZ4i/BngtsMHaVNGr1da0sIBTDwFJDEn43YW/+cflDy4fvUwpu2Nyr+TVd0ewP2wpPLCr+JDQhsMKiFKzPO1vHl5b397MpRynE0spcygNvacFqE+eegeyh2hQusDEwHaBKTEIfXadTYM/OfKeO2b5nKTZ76a/+9jWx4obih2ao5M2QKVUR046rhSK1KRUQmhSSjGE2w8HofuyX/xr+wplekTfLfDezxcw57rsrXuLM5alzuZqjuF2FVC+kn1De3NJQ1ViSMzQ3UgC0FAeIzxYvRID9gX7thGou7/VyUKzwstcytBbZt5y7thz/7T2j+9nvm8r+/iR0Uooy7ZM27SVHegMjPSL0DQ92Blk6A4hVLvpbvW0CCFbPS2tntYWT7Nl27qm65quS72TBVkFXWDdt6s4Y33ebjGMxq1L6Tbdz+15jwCEYcehGW2iXfhYKL7ddA+F9FPaUCWG7WV2iAUgOXBDZAZlDNBAfsE+HLEkuzkNzND1hJBuLw8ZFxT3m4t+W9tWu/bI2o6VwpRSHXW6UyNGTYidNDpidFJYUlJokkNzxAXF+Tn8lFBN7U01LTVSytqWmtq2uurmqvKm8rLGsqL6oqK6otrWGk3quqZ9loSGTQORHHrbqoR66/Dastoy78uwD91rmOPNw2t/VnNX6sAuWQqI3i0olBwWd7AsWwgv4+1a3K1VLfWDvpFtpru2rUEIVoMHjiv207MVygIcATMTZn6c9aEuNEPXw/zCzk5ddumES1MjUmOCY/29rdEWFRCVEp5y0mLLLXWtdXVtdXk1R9LK0nYW7ciqyvJYHrfl1qRmaJzVPVHaWPV+5ubheD7Wt9Q/tfut355/HwcRw4UmZUxQpFDZ3tZ60ZrcrZXNtYO+kY3tzWWN1cNjROBwCEDH1lIYgvpkcYmB+4J9sZaC6tEGKyHsns+NVEqTclbizEsmXHrlpKvD/cN7MKwnwBEQ4AhICEmYFDPp0gmXmbZZVF+0tWDzquxPsquyjtYXO3RjwGqO9/Q8GXIjgT7O3r634IDwVX3EtoVtDnLw9tU0ZVtvHV7/ncU3RwWECWBY3Ho1PSUsXijbSwuQlKK9Jb+2ZNA3sqq5LqOygNXg+7gXbMh2gclhNA2+jwYBdXeDlRABzoAe76rZSXN+d9Efr5h0ZahfaN9dSoxR4aNGhY+6ecat+0v3vZf+7sr0dyqay5y6c8h2ig3BwXD/2fOe0HVfCSM2JHpM5AghBqcqiBTSUta2goPe95ruyC4/suLg2q/Mu5o7K4aL+JAonw9Bmn64Iq/Z3Rro9B/ELSxrrK5pqiEAnSkrYJ9pX1D2pAXHTghO6HFtw8UpSxanLOm/bzQ9fsb0+BnXT7vhxb3/WXHwjVaz1ZDG6TJ3rB+tz9u7qWC/9yudsnXNuP+s22+defEgBiCPbV7zwv07C9O8bKSUHk/7uxkbvzD9ghBXIEcTw8K8pMlCWUI4vJYb3VeSWdpYNSZyxCBu4baig5bpFkOgJjWzwFgKY0jMApNCOIf8HOmxUeMeOP83l064/B+b/76jcJuuDbn5YnKITcp/ZvfbHner97LLtpUak3z91HNjgyIGdzvvXXDdzvx93lOa4fwwa0taWc7i5OncWTEsjAyLCwqMaGpv8jLNStPzK/MOlOUMYgBSQr2bsUmc1vUYtUGZBXbark85wFs7SEdEDZO18eaOmP/IVY/fNf8ep+GwlTUUz7eh4VD5kdW5uzo5Sy6ZsHhkWNygb+fSlNmpMaO8LxEvpcfd9vKBj7mtYriID46aFj9G+Cp4qOmvH1w9iGV4MioL9pVmncYjoAc6AH2+8t7QfA27LzjQW6uEHeYfNlwK8IT5hX//7B/8dPkD4f5hbqv9tDvZ+sabh9aUVBV6HwCklMPhd/fcITG2Jjk87prJy30uQ6YbL+77oKSxijsrhoXowLBpcWN9ByDjvcxNg3g+P7fn3db25tN76Io2KGM/h+yrl/f1YbeWQk8+Uam4oPhhVIFQk/r1077w4BWPJ4cleyw362CcoKSx8vVDa2xf7Z+2ddG4RROjR4khsUCSdvmEsyJDor1nICnrmuue2Pkmd1YMk0uTtmDEVMM/2PvIOikbWuof3PTyoGxbdUv9uxmbBmjN4zMlAA3tzi8lVIu7V4sKDbMOu55tcBc+trqlek3uJx9lvV/dUj1ETvR5I+Y/eMVjMxJmum03/V/H21qYllaS6XPtdylvn3mpNmQ2d+HIqbMSJwrb9jVX/+1D62taG7i5YlhYljorOTzeZ4EJpV5J+ySrqnDgN+zFfR9mleUMmyVxhscYoCHc+aUJYSvz16t/+sAnP1p/ZG1De8+uocOxD6WbHyqVkJ199N7iXfeuuPNH73/nJx9+794Vdx6uOHTyz2wv2vrPbQ8NcDyaHDv1Dxf/bXLs5CHTFzb4bKH+tWOF8pUnTPfckVPPTpkxdC5YDt24beYlQje870BdP1yW9c7hDdxZMSwkh8UvSZ7h86FSN45WFT205b+2GtBhlwV1pY9vf81jecTpPn9Wo//r+FdudfZrB1765tt3XfnMeX9Y+8tthVsqmypYEP7zn6jign2Oh82qzPjpR99PK9vb7GlqN9sOlO753Zqft5ltx34gvfzgzz76wVdX3P73DX98L+OtAT7dR0WM/snyX0YFRNnKogtMCLGvJGtt7i4fdT6UptTlE8+OGezJXye4cdr5KRGJPnoNNHd768rMja1mOzdXDAtfnH25Zjh9PBFJpev/3vnmikPrBnKTHtr6akZpls9WYQLQ6ToLzKk7DM0QQlW3Vv5nz5N3vX7zt96551/bHjpckTYUu8AG46AopUL9wr2+VXZVxg/e/0Z+7RGX4TI0Xdc0l8NvX8nu19NeEkJkV2X+fePv73vri68deNG2LUPXD5TsUQNeVmZ24rzvnPVDP8OllBrk820I/P0/suUV09Pu/WSyrMSokVdPOmeoXbOcuuPLc68UpsdHG5FzXfb2/aVZ3FkxLJw9atb8EVN8jraRmtts/7+PHk6vyBuY7Xkrfd2/tr12JqSfQZkFJob88tJCSqlJzak7DU3bV7rrH5v//M237/7h+9/cV7LHGjKDwuTg7R+v0+Armyt+v+aBzMrDjuO6jaUQQtgv7HkmryY3o+Lwv7Y9XNlc4efwk1LqmlZYl2+pQZhRf/WU6y+feI2p3Gf4qZ5VVbAub7fwXfJy4chpk2NTh+CWXzVxaVx4vI+h0FpNU/WrB1ZxKcNwqUb7w6W3Ow2XzyKjUs8tz73nrd+X9v+MsP2l2d9/78HmtuYzoG7xIASgT1eeGj4v4dIdTt0obyx5L/3NL716/T0rbtuYt9b3WOmB3sK+WFDM7u6HGtqJI+PazbY/rP3F9qJNfobrhB92aEZBTc5jW/46f+TisdHj9U8/VGlCFtblNbsbB2Ve2C0zv5gaMdqy3YN4donBLn74xsG1eVUFPvu/HK57F1w3NK+C4yJHXjBuobB8NAIZrmf3vFvVUsfNFcPCBWMWXDn5HOHx3W9ruDbmbP/Oe39raG/uv80oa6r++so/5ZYfOb2LHzILzGePksd2dww3O/6fa1I6dMOhO5Swtxdu/ObbX/q/D771Sfb73ofUDJ9ZYD3bWiHshJDE49/Hsq0ndzz6cda7TsPh9Vf8HH4f57z/cdbKO2bdbSqr4zQQmjBtd1rZvkE578dEjbt91l2a1MSZ2gVW2VS7MmOjUMp7/5dtz0qcsDRl5tC8bDkNx9WTzgkKCBNeWxClrG2ue3LnO9xZMSz4O1z3zr82LDiys2nnhuOVve9/ZcXv+inZN7Q3f+fdv286svs0Xvhi8AdBD1lKKKfhvGf+N8dGjbOUadoer11jDt0hpFiV895PP/ru/e/dl15x8Az8cw1wBhz/fz/Jeu/5Pf/Wpe7rni6llEI8tfMRf0fAkpSlHqtdCKEJaSmrqK5gsL7F5ZOuGx8zyR7kFc4Hzc7iQ7sK9vvs6bfMr867ZiivoXbhuAXjfVWFFkIo67W0T5gPDzFs5sPPvm/RjaKzIQFS6I5X9rx7839/kl1d1Lefnlt99I7XHvjvnndP43VPmQV2qlk5yj5/7CUvfOHt+8/++YjQZLfZppTtpViikP6Gv9ts/Sjz7a+8/oXHtvy1sqnsjJoFdvzI5ZyqzEe2/KnV06xrWie/pUutqrniud3/XJZ6XlRAlG2bUgjbNrMqDw3eU5f/7TPvkkIKoeQZNgvMVvY/t7/h8fW4aZkTEsafN2b+kH5oNlx3zLzUZ1u91DPKc1fl7ODOCjE8RgLJH5x9+/yUWaLzCYwOxycZm8576r4X9n3otvrm4W3tkV3Xv/TDt/Z/JAzjTNvtA10HaCi/hFCm7fFz+N82+66Hr3zm1llfDnQEmJbb68geXWoO3dnsbnp861+//c5dG/NWCyE0KcWwGkTS7U9UymW4DPnp30mbp/WRzX8srMtzaMYpf9elO9Mr0jbkrZqdOF+TUgpl21ZOVabHGrTByAtTlk6Ln2la7jNtGNDB8iOrcnZ6X/tCCGFbl4xfnBQSM8QvXjdOvyA6KNL70FFNa2mtf/Pw2hZPGzdXDAuhrsDHrvzBqMiRPge3dVyzDWdhTcltr/z0njd/t6XwQG8+MaOq4HvvP3jlc9/dW3xYOFxnyMDnQZ0FNoSbgI4fVZMaOfaHy371yNXPzUyca9keU5lef17TpMvhSivb8+MPv/nHdT9ram/QNXkat//Y0ooMjApwBna8wUv7nlp35GOn4ezir7sM546izVUt5YmhI2xha5rW4mmqaRm0xW4iA6IWpyyzhS3OsFpAj257rc3XKj+2GRUac83kc/QhvwhiTGD4jdMv8D0U2u/DzC05fd1ZAPSfWQkTHrjgPn9ngOi8dUfThBDP7njj2he+f8Xz33s7fX1dW1PXl011W54N+Xvve/uPlzz9jb+te6axvUloJ7X9KNvf4frKvGvEaT1IwOCc8z3fW85ImPv4NS8+v+eJV/Y/V9lU7jRcPoZkuprdjf/d/5xDc+jaab5LDWl0DA3ZXbztxb1PdXeYiJTiUPmB6KDYYGdwfXt9fXttUX1BbHDCYH2dJaPOWXHwxYqmstP+wB1zpLb4k5xtPktRKzUrceLi5OnD4rvcOfPSp7avaLXavTzLaVpdU80ze979+yXf4WqG4eL2mZfk1hz93ap/m7bV2YgcKYXhLGuoXHlw9XvpGxJDY5eNnrM8dc6EqOQgV0CIK9B13PA+JVRNS0OTu+VITfHG/L3rjuzJqiowTbdQtvdRgMrWhPjZ8ruWjpr1xOaXxOl7bTQGpQFoyNZjEF5GigR8Zf63549Y8s9tf9tasN7QDemt2UyXuhBKKWvAJvf01Z7s1vtIIZSwdam3eJqf3/2vyuYyl+7X3Q9UStW31jh1ly61mpaqvJrsOUkLB+ugT46dNj56cnljiTwzyjgJId48tK6wqsjX6BmpO+6cddlwuX6Nj0q+cPzit/Z9KJx+XlcSeP3Aqh8vvTM6MJw7K4aLXyy/O9gZ8Js1/65vbTzFqGTNEELYQhXVlT6/8+3nt68QhiM6KDI+OCrYL+DYM44SKq+mpLypxna3CE0XUheaFJouhO4j/civLfrCdxffsqck/TR/nh/wGoNKSjUkd4WSUvm6LU1PmPOHSx59Ztejrx34T4u7yaE7Oy2wMjA78xRrcnXxTbp3RJQV7Ar2dwRsylu9KX+VS3f24GhKKTxWu8dq1zXZ4m6ubqkY1OMul6Wev7VwrRD2AM5MV4P1JFDb2vhe5ibL8gjNz+vs99To5EsnLBku168gV8Al4xevPLTWUraQ2slFEY/Wlf73wCffWHgDt1WIYbNKvPz+WbcGuQJ+8P6DjS31XSjKLIWUQtc61sirbKyqbKg4cWycpgupCcepnleVLWz73sU3//7Cr7sMh2nbjAGCEEKE+oV/e8lPf3PBQ4mhI93WGbrSkK1UhH9ks7vpyR0PKaF6PE1ayo6p8ULXjOyq9HZzMEeqzks+y6k5z5AjuKv48NrsHT5LfVieu+ZeGeIKHEbf6NIJSybEjfFZQMW2Xz3wMUuDYdj56rxrXrnp96NjUoWnrTvP1VJoutAdwnB+7qXpp14+yTINTf/mWbf+4/LvBTr9BIOgxRm2GOopnTPmoj9d8sS8pMW2bQql5DBfULMHn+jUnW8dermgLteQRu+332W4thase2rnP9TgTYmKD05MjRwnbFue7gOglVD/3LFCKNv75ysrJiz+knGLhtclLCE46pLxi7w0/3TQtX2lmR9nbeOGimHn4vGL37vjwcunXSBsW/T3KkyWJzIw7K+Xfe8vl3xLlxqzwPql12aIv7ryLSbFTvvDJY+fP/5yW5lK2EN8a/v2iOiaVtVStiZnpVJmn3wFTQrT9jyz65Hfrfmh7wVG+pcu9RkJc2xhDfThG/C+4EPlRz7M3OJzVIHHfdnEsybFpA67q9hX5l7jdPj5WB9eb2quW3Fobbvp4YaKYWd8dPKLN/zqmet/lRAaJyxTWGbfPxZZHmFb0xMnvnrrn7+58EaHZjANHp2JCIj+zQWP3DzzLk3KobM86gAwND2/NqeiuUzru0cETUpNiNcPPPeHdT+qbqkclO81NmqiEqf/cXxm18qW9ibvLeHK8g8Mu3zCEmMYloIdE5l07ZTlPufr6o53MzZkVhVw4cJwFOwKvHP2ZZvuefIbS24eGZEgPO3CdPfFYFMlTLcwzXExo/962Xe33PvM8tQ5Z9q+NQalC0wMn1lgPpsNNP3ri38cERD99M5/tJmtutSH43y6nh2RPh8sLKXmMlwfZLxR0VT64+V/Ghk2aoB3ZmLISNu2B/IYDvxfQV5tyRuH1gjL9P7hlmdmyoTlo+cO0wvZLdMvenXfh5bt/dvV1Je/cuDjqXGjfZ26trKFbXnpR7Mty7YGuH9WCWXZlrAtL1HVtmzV7XGplu3726mejHLt8zfswS4SHbvopDG8ltSUGojjZXWcM162QfXHU/GoiISHLr//y3Ovemnfh+uO7N5RlCYsj9CNz67Hsjs7TwnLFLqxKHXOpROW3DLjouSw+AHbzz7320CdPASgvrknOXXXHXO+FuQK/vuGX5i2OcAZqA/TjxwaleClZuws2vCj9+6+b/GPFqecKwZ2hHt0YGxDe/2AdX4P/G5Pr8hLDImODQr3OnRdKXXHzEuH1/Dn4y1Knn7H3Cv3lWQ6vE3vt5VKr8w3bctX8/6YyKQ5KdNPrgVl23ZUYPgA75YgZ+CC5GmmZXrJP7adGpHUrXdz6MbMhPFBTj9D9/LtpsaN1bp5Jvb5G/ZAiCtwZsoM50nTo2ylHLoRHTQQVQ+mxo5u87Q5dMdJf0rCz+HU+udKMj1u7PSLxpY0Vu0tzVx5eP37WVvKG6rcHXmiI1L876SR/2sl6kgqmi403anpI8ITLhyz4JIJi2cnTooLihjI/ezQjWmxY0zTc/LJY1rmtNgxjoFdiF4OTFgWQpi2ee+Kaw+U7Rr4xpIupmKH5nj8mjcmx3Z7BezX9j/9j82/Mm1TG8CxY83upm8u+dmX5/a8yFtNS+U33v5CVuWhTmf1DzTTcge6Qm6afvd10+6MCIgemA8tqM391js3lzYeHaiTUwkhf7jsD1dOvnnAdqxlW5ZSnUwEGe59/3bHk7f0Vd9ROU+6Vx3/VGrbtpffVUJKqUttINeFVUqZyvJ14mia1t2YbtqWUsrrnpFC9qDTs8/fsCe7yOuxVkJIoUtd6//j5XMnKCHkAP01tZvuovqKtUd2Ha44kl6RV9/WWN/eIqW0bbvZ0+pvuBy6oZTyMxzRgRETY1NTwxOWjZo9LjrZ5ftvob/3cyf7TUo5wF3wtAD1QZvKVVNurWouf2HvY0rZclg1IQzBI+LQne1m6793/GXX0U0XT7j+rFHnRwXG9veHBjgCIvyjSuoLpH7aLoasa7p+uldP0Xr6+KhLTde1oVOD3iGNvh261+djAQd/F+nGoA+IHPRTxWU4x0QmjYn8X6NgSWOVJqVpWdUtdWH+wX6G01Yq1C8owOE3RPbzkBplSADqgwDk0J13zv1WUX3empyVxgAGoN63QgzN2txSSJfu2luy9VDZntcPPDMjYd7cEWfPTlrkZ/jrmq71QyONrhku3W+Ad8WQ/UMAMEwlBEd1/I+k0Bj2xhBbCuN0TUBC+DsCfnzuX6payg+W7dIGphtFnuZHxGX4KaVyqg8fqUlfmf6yQ3NEBcWNCEsdHTlhZsLCmQkLXIZf3/YGCxIQABCAzsy1wGSvhi6GjIuanFa6XQ5IAJJCydM+kUrp1B1CKFtZ7aZ5tO5IUW3uhtwPXtAfuXPOt2+f/Y0+zEADvivUgK2aAgAY9C4w1fESQ3MtsF5vmFKWFGJgvmDvP+XY4ZBD/k4sP53dIIUUhqZbynp+90PT4+fNG7l0eJ6cSggpufwAgKAQIiC6UbvZbbZtyPtQDc9GFCWELrXowHgOJQCIM2Y1+KH75Nv7DZNi4L5gn3zQQG5wH5+4hiOvNsOyLaMvppsqpWxhDeSu0DQt1C+CCxAAnP4BSA75LjDRB51KYsC+oBxuG9znX9+2zb6KKy2expqWCk1qA9gFpmxhcwECAEEXGNCdNht7ZNjovppw12a21LVW6dqANoW5dD+OIwCI074FSH263sHp3AU2kF9Q9smKXHK4doEJoaYlLOir+rxN7Q0N7TV+RsAATvJ3JYQmcwECgDOkC+x0ngY/wFOp5RlQmMkXj+UeHz1tbtLZffWGZY2Fuhy49h9b2YmhyS7dxQUIAM6QOkBqCJc/6ZMNG7gv2EejVYbyEfFdsEDKC8dfHxOU0FcHPrPygHb82oH9/g3shJBkTZ7eS1MAAAFomMw5ksOuC0yK03tenvDe/OOZFDt7+ZgrRZ+1x5gHSrfpuj5g+0FJe1TEOEklIABgLbBhvhIGXWBiwDqPnIbr9tnfiwqM66v3rGgqLq3P1wawC0zZVkIIA4AAQDALDOhStR4hxC0zv7ko5fw+fNvDZbtM2z2AKVAZmiMxZBQHFADEmbMYqpRKSjVUR5Yo0cttG8AvKGWv6/dI2bG1Q/WInJh+LNtz3rjrbpxxX5+O/FLrj6w07XZDdw7MGCDTNlMjJkb2XQsWAIAuMGaBnVbz8o6xlCWUunjiTV9d+ECAI6gP3/loXe6R6kNyAMfjWLY7NWpiZEAMVx8AOINWg8eZTAkllJKyex2vbrMt2C/smqn33DHnfk32caftrqJ1ZY2FhhzQehCjIyc7mAMPAKwFJk6bWWCCWWCd9WE5NYem6Y3tdQ7NIaX+v3as47dAqWNpyVaWFNrsEUuvm3bvwuQL+nyTGtpqNhx521IefaCKMtu2FREQkxIxgUsPAJxRXWBDei0w2QdLa6mBXQusD4oADdgG28pcknrlddPu21u8YVPee7nVB23bspRpKcu27Y4kpoQthNSkrmuGn+43IWbW5ZO/NC1+UT+tG7qjaNXBsu1O3TVg56StzOiguPHRM7j0AABdYBBnQueXQ3dcNunOsVHTxkZNu3bqV6tbytNKtuTXZZY25Ne0VJi222O5/R1BDt0RH5wyMXb2tPhFMUEjdK2/qgW2eprfOPC4kEoO7DSACdEzw/2jOSUA4EybBXY6d4HJ4bYW2IBtsG1bE+PmTYmb3/F/dc2ICUo8d9z14n9Dgz0tnuZgV9iAHe4Vaf/MrTpo6AP5J6CchuvcsTdw3QEAusCGVheYHGZdYH3RZycHYoMt23PxhFs7yWy65hjI9JNdtf+9w88KOaBno63shNBRE2PncN0BAEEhRJz2TMs9Nnra9PglQ2R72s2WF3f/ubyp0NCMgV3Eo/3C8Tc7mf8FAII6QOK0WgpDiAGtAySHyRGxlTV/xIXRQfFD5EC/uv/h7YUf+xl+YmAX8Qj3j56VuJSLzgnaPI1tZouUUihl6M5AZzj7BOi0mKq7xV2vhBJCaUIL8ouSQrJbWAx1sMcADeQ0eK0PkssAbLBlmzHBSfOTzx8i0Xdd7orXDzysSTHAa5F6rLb5ydelREzkonO8Fnf9izvvP1K1U9MMoeTN8/4wOW45uwXoxKqMx9ZmPe3Q/U27/dzx95w/4V72ybCYBab6ZORKf01U6oMNU2LgvqAaOmOJOi3/Y0+MmT0pdt5QOMb7itc/uf3n7WaLoTkG8jxUygrxCz971JWG5uCic7zCmgNbj7zisdssZZ437p4xUQvYJ0AnyhqyPsn4V1lDjlL2hLizZ424jH0ybKbB0wU21PZkf2+wU3dcOP7WoXB895ds+MfGb1c1Fzs0pxjwpTymxi6amUT/14k+Sn/UVG5N6uNiFl0148cuI4B9AnT2FHf0g7LGXENzhvjH3Dzn95GBI9gnVIIeErWVB3gafO9p/bzBlrJGRUyelXTOoB/ctLItf9vw9YrGIqfuHIwaSK4rp9zt1P244hwvq2LLwdJPNKH5O0Ovn/WriIAk9gkgOqte1rAu+xlDc0opLp/6/THRtJgyCwxDlbKt88beNLj9PrayN+W9/ee1X6loLHIMePoRQpi2Z1bSspmJyzgfTqiMsCbz383ttUrKa2b8dELsWewToHOrM54oqj1oWu2LRt10/oT72CGCWWB0gQ3NDbZsMyE0dcHIiwb1galpxYGH3zz4eJun2TkY6cdWVogr/Oop90nJw8bn1LQUm7Z7XMyi8bFLzh5zBzsEOOXkr5qWo2NjFsYEjbpu5s+Z+TXsusBUx2uIFkKUqi8mVQ3QF5RSid5vcH8eEdNun5W0LDpo0Po1CmvTX9jz+20F7wuhDF0flNH3pu0+f9zNU+IWc605Qahf7G3z/q6EHeAMder+7BBAnGLEgn719J9ayvRzBPkZQewQ1gLDEGUrMzow4axRV+vaIJxjTe76jzOeezPtkdq2Sl0ag9X6YtmelPBJl0z8Yv+taNYnbVRKKCGELgf0SDkNf6cxzHKPpUyhlM5UPgxSAAr2i2I/MAuMLrChXghRKXtE+IRx0bMH+CC2W63b8t9bm/PqrqKPDc1wDOq9Sgp5xaR7EkJGD80T/nDZuiNVu8oacjpGagc4QhLDJk6KPycmaFTnv1jemHukcqcSQgqRGj03Nnh0DwaG51buKGvI0aVuKWta4gUhftG+fkYKGeIfPSH2bEenRbQrm/JzK3fYylZKxYWOHR3lfcmRI9W7y+qzOroPurjxedW7syq2ltZneex2IYRDcyWEThgfuyQ5Ylp3v3hu5Y6yxlwpVEzw6DHR83tX0Lw5vWxDc3udECrYL2pC3FmdN6TlVu4obcjWpW4rOyFs4qjImb52S1fG1YX6x05JOPeEU0II2fV2ViVEsF/klITzjv9QW1k781dYypJdO4ucuv/42CUnxAKP1XaodG1ze53mY36HEkLT9OjAlBERU07Z+ljWkJ1buVOTmmmbKZEzRoRPOflnWjz1h0vWuq02W1nxoeNGR83t5ckvvDdpHyisPiCljA4eNSZ6vib1LlYgO9XeUA7dLy5kTGLYpFO+Z8fekFLTpDY6el50UEpXtqGi8Uh2xVYhZIhf1JSE84bOeADWAjthLTA1rNYC63366ZcNVkI5defFE+50DeAjvmWbGeXbX0978GDpplZP02dTrgbtZPPY7nkjLz537M1D8Fw/UrV7Zdofcyq317SUCNGRZIQSymUExASNmpt8zaWTv+3vDPX165nlm5/f8V0llBTytnl/60EAsm1rQ85z67KfdRkBbrPlpxevOfkecOxnnLqfoTnuXvLk7BGXd/KeOZU7ntv2TdN2W8paPu7LvgLQtrxXV2X+S5N6Vza+sil/Zdqf0ko+qW4+atmez3aUbWjOyMCRUxPOvWrajyMCk7reIvjGvl8dLltvaEZM8OhfXbbF6EVFBqXsTbkv7Cx4y9Ccga7wH5y3Mil8sq8fbmyrfH3vAxnlGw3d5TZbv7rkqRMCUMdu6WIroMdqmxS37PgA1HFKHDuXutj0ODpq7qS4c45vJDZt9392fKfdau1KFLNsMzwg/r6znj0hALW469/c95vCujTfu1dJoQU4w6KDks8afevC1C84fM/QTC/b8Nz2bzl0v1ZP442zfu01ANW1lP13949rW0uVshNCJ3zrnFc6SQZdOfmFl+GMje8c+OPOgrd0qadEzf7m0pfCAuK7WGv0FHtDKU0zglwRMcGjlqTeOj/lGuNUe8PQnIbmvGPBQ10MQCvT/rz5yEtCiKjA5G8se2FE+DRxZq4GP8SbgLTeJVPZsUT7QDUB9TJHa1Lvvw3WNd3P8K9tLQ/3jxX9Ppy2LKty1zuHHs+s3GVa7ZrUnYbfYA9X9CSFjb1r/u+cxtBa+Uspe/ORl1/Z/eO61lJdczgNf8v22LYlpZRSF0qVNmS/feB3OZXbvrToMV9NQbayTKu9IwDZyupxd5JptetSN612pVTnP+O2Wl/b8/Ox0Qs6uVUoZZl2u2m5LWVZyuz8czsCUOcbf7hs3fPbv3u07rAmdUNzSCE73laXTk0aNc1Fa7OeyqrY+qWFj46LWSS6NO1/c0HNAVuZpq3KGrIOl66blnhBjw+lnyN4XMyi7flvWMpT01yUW7WzkwBU2VSQVbFVKbvdbAkPSEj+fPo5tluUtIQQtrCV6mxlaLfV6rHaPn9TN91my/EBSAkhpdQ+m2ishG1//j1tZXmsdq9LB5pWuxRSCaWU3UmkMm3TbbbawvY69s602oVSJ3+djjfUpF7bUlLTcjS7ctueo+9+ccGjoT6uVB1nuxSy49TydfZ1fKIm9YKafW8f+MOXFz3eSYbrysl/UiNKblrJqo6vk1u1I79mz4yAS7s+EvF/e+OkryClJmx3m6exsik/vWz94bK1X5j9e199bR17QyglhFJd+9tvbq/de/Q92zaFlKUNWYdK152hAWgo55+ODatvq65vq+ziGen1ujBgX1ATss3T2OSuMy13z7JaXWulZXv6owyQFNK0PL9ffdu4mNnjo+dOjV8yIXZBkLOPF3uvb6vKrtyTXbVn39HVWVV7lLA7blRiCIyqCXKG3Dn3l/EhqUPtPN9d+M6LO7/f4m5w6P62spRSoyJnx4eMa7eaa5qPFtQc0KSmaY5DpWue3nLvN5e9EuCtHUh23NqE6igj1fMAL7WO1yl/xpDOkvrMN/b+8o4FD2o+Wyk+e0OhOtmq/31upxufX7PvqS33VjbmOXSXEspjuZPCJyeFTRJC1DQXFdUdavc0O3S/0vrMp7fe981lrySEjj/lV84o31TfWtYx8smyPdvzX+9NABJCjI1eEB00srq5WNcc+4s/OnvMHb4WeDlStbPdanHqfh6zeXLcsuigZF+7RQgR5AjrfHiWx2o7IYm6HIERgUkntAC1my1tngYhpBIqwBHqZwSr41pkbWWF+sd4O4qfHh1dMwKdYZ10yli2GeYfZ2gun2/i/etIj9Va21La0YwhhNhd+K5S8osLHwrzj+/0RO3shDn2iQ7NtS3v1WmJF8xLvqY3J/8J0oo/aXHXdbRUmbZ7d+G7M5Iu7fLV/thnyXD/uBNOksa2qjZPk6E7dakLodbn/MeyzTsXPOznCDrVlnfpb39X0dvN7jpNM4QQlnAfLlu3dMyd/s4QAtDQikC2bT25/f9cun+P+01qWsoNzRiYL+hnBKzLeWV/8dqePoJLS3mqmov6aYOllEqo9LJtaSUb1mS/GB2UFBs0amLcgnHRs0aGT3bp/pqmd/feaSvLY7WVNuYfLtuSWbGzqDajsvlofVuFFJqhO+XQGNHf8dh62aR75424WAy9Kmqv7/tli7te1xyW7YkLGXvNjJ+NjV4Q7BfdsbxiZvnGtw78vrwhx6H7HSxd/faBP9w05/diqIwA1bbkvTwt8fzZI68cgNpRb+//XXljrlMPsJUZ6Ay/as6PpyddFOYXq4RocdeX1B9ese+32RVbDd15tPbwK3t+8s2lL3c+OLq+tSKtZNWxNmYlVE7l9urmwsjAkT3ezpER0+JCxlU2FRq6M71sfX1bmddbuKWsbflvGJpDCaVLx8iIab56fDpa9S6Y+LW5yVd12o6oXEbg8f9keuKFyRHTT/ix7Xmvv7n/N4bucpst547/yvJxdx9/aVVCufQAX/MDLNsTEzzqiwseDfaL7ORvTZeOiIDETgcanfx1pGV7Kpvy12c/u7/4Q03qhu7YW7RyUvzZF078Rp9c+zxW61v7fzcyfFpcyBjRR/37W/Ne0z/rw9I1Y9/RD+rbykP9Yrs5MsH1neWvnzCWrt1sKa47tCrj33nVu3TNYWjO7fkrpiVesCj1pj7Z+J35b5qWp6MGm6G70ss2lDfmppzUBnlmzALri8nb/XfzKm3IVr0YNfLZhKOB+IK6lHVtZTUtxb1IlNLQDCllP22wFMJhOBzC0eypa6yuPlK9f+fR9zTNCHCEJIWOiwkakRAyOjIwMTpopFP3C3AEeztX7BZPY6u78Wh9VmVTYUlDbn7Nwfq2aluZpu0RQn2+t0sNjfp+7nkjL7lxxv1DsPDP9vw3yhuydc2wlBkRmPTlhY+Pi/2078ahu/wdwYtSb4oLGfvg2usb26t06diW/9qClOtGRc0WQ2MKTLun+c39v0uOmBF1UgNG38qr2p1W8olD97Nt098Z8sWFj8w5LnW5jIDwgPiE0El/XX3l0dpDhu48XLpud+E781Ku7eQ9i+sPH6napevOjiivSb2yueBgyeqlY7/Yi45mx/SkC9PL1gsh2s2mg6VrlqTecvKPVTUeKajZK6WmlBURmDQ2ZmHnbxsRkJQQOqFbWxLgDAs4qYk3PCCh43JqKzvUL7YrjWSfG5mr+SWFTQx0RfTyaHr9OiPCp0xPvOjFnfevzvyXrjmUUHuL3l846qaQvphmpWuOotqDHx7+x23z/t4n02CzKjaXN2Z3tNwoZSuhmtzVuwtXLh93V3dHeYwIn3Jyo9qoyFmzRlz++MY79xd/ZGhOt9W6s+DNmSMu8/dyWe6e/Oq9xfXp2mdbLoRo8zTtPfr+mRiAhvgQICHE8FqrUpe6ruvDajuVbZtNbdWH27YcKrM7/pKVsh26KyIg/oRTQwphKau2pcy03R3DlaTQNKl1LOPuGJJHymO1T4xZeO+iBwdl8v8p7S1637ItQ9c1oS0fd/ex9HO81Kg5F0z82n93/chh+Fc15e85+u4QCUAdj4/5NXvfPfTXO+c/1K8ftKdopWl7NKnZwp454tI53tqcwgPir5n+s3+s+4ImZLO7Zk/RyhkjLvW92onamf+mrSxD6rayIgKT2j3Nta0lmeWbFqXe5OjFGimzki5bse+3bqvFtM204k+8BqBDZess2yOFsJQdHzouJWLGKWtY9FVfsNf/3fUMZNqePinJ4SOmGJdO+W562bqS+kxdcxbVHaxvLQ3pm3nm0tCdm4+8NCHu7AUp1/fJo4vHatc1h1Iq0BXu0FyVzQU7C95cOuaO7hZlMG2314lvAc6wq6b9OLNii8dqM6TjaH16Q2t57wPQwZJVVU0FDt0lhApwhQshmttrtuW9etmU7zqGQPUvbVACEK8z9SU1ITWpGVJ3aA6n7nLpfn5GgCa1mpbSmpaS41/VLSX1reW6pvsZAU7d5dCchmZoUtM+W75sqL08VvvoyJlfP+uR8IC4IZh+mttrapqLhBRKKEN3zU/xOUBh1ojL4kPHG5rLZQSW1me1ehrF4A/Rkx2Pj07db1POi7sLV/brx+XX7LNsjxLCoTtn+R5pMSZmwcTYs3TNCHCElzZkN7SVC9+dj7uK3tY1oyPxLxv7xZERUzWpp5WsqWjM682mRgWPGh0117YtIVR+zb7qpkIvea7wXdPydLSiTYpbSh2jY0L941Kj5naE3fqWslZPUx8lP1sK6Tbb3tr/2/rW8l6+W3VzYVbFlmNdEwtSrh8Xu9iyzdL6zPyafX24NwJcYUGuCKVsqem1zcUtnvpevmGLuy6jfGNHR6Rpu+eMvGLOyCttZVU15edU7mAWGPDp7U2X+nDefuG22+NCkr+19F+JoeOG5kbWtpS2mk1SSKFUiF9MhO9FpBNCJ/z+yj0dj+wd46vEYA8qjwpKGRk2ee/R96XU3FbLG/seSI2aFd7Z4I+ec5stze7ajuuULh0jTxrackyIX/T9579rqU9bKRyay3fb2wfN7TVCSKWs8IDEmYmX6JojvWxDTevRjPKNiWETe3PuzU2+6kDJx4bmrGk+ml21PTLoc4OKjtYeKm3IllIqIRy636wRl3HBOb7JP9AZqoR9rGup961NiaGTLGV19DWX1Ge8tvcXd87/h6H3fDZoZsXmisYjujSUUE7D/4qpP9hZ+Na2vFermgrSilelRs3pqzUxlFLK7virF6ovRhSU1mdllG8yNJcSStcc81OuV8pam/Wkx3avz35uYtzSM20xVCV58TrtXh67PS4o5WuLHx3ZiztZf2szG0yrvWNKTkRAguz0b9/QnE7d36n7O3TXUFhyyLI9F0/5zpjo+ZYyDc1RXJ/xcfpjpu0W/TNU3LTcHeMtpNTDA+M7He1hdOwop+7va9SXEmpb/mum5ZFC2sqODx2bGD5p1ojL/YxAQ3NsOfJyj6eddhgfuzjMP14I1eKpz6vafUJnU37NvrrWEk3TlW0nhE6I7+bgntOiPK3opJhkVXORJnQlVIArvPdLsti2FeIfc+2Mn/o7Q5WyNWnsyH9jV+Hboue96m2HS9a1ehqk1JRtJ0fMCPGPTY2aGxmYZCuVWb6xub2mDxuJG9urpNQs24oMTApwhPZyOsjeo++3my1SapblSY2amxw+NSF0woiwqZZt5tfsq24uoguMF6/h/TKttrig5PsWPzI1fumZfC/p72enUL/YG2b9xt8I6ehfWJf9dFbF5v7eUVLIXqYTIcTR2oNH6w4JKYVQumbMTb5Gk3p8yNjUqHlCiYKa/QU1e0WvBvkmjoteYNpuXRoZ5ZuO73Px2O2Z5RvbzGYpNEt5Zo24VBtmi/KqPpk/6OtfFdTsTy9b79BdptU+KnJ2ZGBin4T1iXHLLpr4ddP2aFJv9TR9ePih2paSnr1bVXPRodK1HfO2LOWZn3KtEGJk+NTYkHG6pmdWbC6uS+/m3jB8tbOuyfy322qTQtrKExM8Oqh3w6Es27Mt/7WOYbWW7RkTNS/AGR7qHzchbrFSVkVj7qHSNawFBgxjHqt9TNTsby97Nj44dbhss1J2TPAobbj1OVq2Z2zMgvMmfOWdA3/UdWeLu/6VXT+5//x3g3o9S6iTHRUdnKL1eom0Q6VrqhoLdN2hhPAzgmd/1gk1N/mqAyUfSat9e/4bKZGzRC8qIk6MX7q76B1NMwpq9lU25YcHJHT8q7rm0syKrYZ0KGH7OUKmJ17Ulei3Ne+VwpoDSlheR7cEOMMumPi1MP+4fp70Z9S1lr265+cuI0B4K3Vo2daEuLMWjrrx1A0b7vqGtsrPZynpMVtzq3e9sfdXLZ4GTepS6nNGXhniF9NX23/uhK+ml284WLLaofvlVu368PDDPasokVOxtbI536n728oK9osaF7OwY5bZnJFXZJStd1tte4reGx+7pOutMnWtpScM1VdKNbZXrc7817aC1wzNaSvbofsvHHVDYO8qtx0sWVXTXCyktJUV6h87MX5pRyGlqYkXbD3yam1raXrZhkWpN/WmGPqwWw3+s/GrwDCnlG0La2rCWXcveGgYpZ+OZ2qnESiH299hx0CN8yfcm1G+Oatis6E582v2vXvwL1+Y/TvRjyu2BvayB7DV3XC4bL0SlhROy/ZMjDs75LPaLeNjF4f5J9S1lKSVrLpsyvcDXeE9/pQxUfMiA5OqW4qVbR0uXXesMnV5Y25F4xFdM0zLPTZ6YRdW7ZBCiIzyjYfL1vlqJ4gISFw8+ub+D0Bas7t2U+7zvgajmLZHSHGqACSFEOuyn9539L3jW/KklM3ttUV1h4VQujQ8VtuckVctHHWD6LuloENcMZdNub+wJq3JXePQnasz/zU54ZxpCRd0d1DOptwXdenomL01PmZx9GfF2eclX/Pm/t80tdfsLnz7qmn/18nCNZ+rT2u7/7Xxyyc0iSlhlzfk1raWGZrR8UELUq6bPeKKXu6ErXmvmrbb0ByWbUUEJo2N+nTlu7FR8yMCkxraKtNKV5c35iaGTmQtMGB4tUaYUmrLRt988+xfhvnFDsNvoIbvtJ1rZ/z8r6uvtJQppbYh57nJccum9q6ecr/uqPLG3PSyDcanXRjm3OSrjkXPjq6rbQWvVTUXZJRv6E2Bx2MVEXXNsavgrcun3t8x1WtP0UrbNjXdadnmqMhZQa7I3n9rNYRO0y5tS0l9xtG6Q59/DBdSarpmWMq2lTU14fw7Fvyjzxdanxy/7Lzx97x54HdCSrfVumLvr5PDp4V2JziW1Kfn1+zVNF0pZWjOSfHnHKvOHOwXNT5m8c7Ct2pajmZUbJrZtarQStnp5RuO229SCiml7Kihb9keIbWFo66/de5fvZaB7rqqpsL86r0dHySlNj52ybF6ToGuiPGxi4vqDta3lGSVbz6DAhBwGjBtd6hf9NXTfnDxxK/K4TmwZrgNBPmciXFnXzz5O28f+KOhGY1tVW/u/92IiKleKyAPhR219+j7bZ5Gh+5nKys6MCUlYtbxXVeT4pftLlrZ0Fp5uHTdzBGX9bhf8riKiLK8Kfdo3eHkiOkeq3Xf0Q81zTjWB9HFrxMRkBToCvc6+Klj/QqH5jcAFdUdml98yAhdGsrHQ0hEQJeWoXUZAf+rrapsS5kdf7ZKqZHh084bf8/C1Bud/VKTRl48+VsHS1dnV2wzdEdu1Y73D/39xtm/7Xrj69a8V9s9zZpmmMoTG5x6/OqzQoj5o67fWfCmaXs25rwwM+mSLg7y8/9fsvnc3hBCpUbNWTb2S4s6XRq2i/YXf1jemNsxc82h+y0Z/bnyVHOTr1qb9aSQYlPui0vH3tn7Xma6wICBWObCtN1jo+fdOvs3E2MXD9NvIaWsay1TypbDNgZdMOG+gyWrsyu3O3W/3KodH6c/esOs3/TPjipX3gagiK4OEWvdlvdqR/Vnj9U2OeGcE2pYT0lYHhsyuqQu/VDpuuqmoujgFNHLiohms2m59xd/lBwxvaBmf0NbuSalaZmRQSOO9UGcqk1FXjDxa4tTb/ZVulCTemBfr+vndchXfPDY+87+T4hftK9x6J0vWHZsPuNt8/7asYhER23VD9MfLqpJ0zXDFtbk+HOWjr2z/76FnyP4hlm/fnj9LU3t1brmXJf97JSE86cmnCe6NifrUOlaW9maEEKp+NDxcSFjj/+BkeFTo4NSyhuPHK07WNaQHRcyrgd7492Dfymtz+qoUDV75JV9sjfcVktWxWaP1e4yAmxlJYZPTP587c3RUfPiQ8cX16UX1Owrqc9ICptCFxgwxKOPx6UHnD36CzfM/FnEZ4NMh2nVpbqWclvZ+rANQMF+UZdO+e6Tm+9pM5s0TV+d+cSMpIv7oV6RrG8p6yjA2DM5lTuqmvI7Zr8HOMKmJJx3wjJMcSHjRoRPLWvILq4/nFezpzcBqKMi4qHSNbayDpasumLqD3YUvGnabk0aQorE0EldWVOiYy3TAGdYn/cH9YCmOUL9YnuzJUooTepnjbn9hFa9f2/+ihJKKLWz4K2zRt+aGDap/77FuJhF54z90tsH/qDrjjZP42t7fjYqcmZXmvqyq7aXNWRrmi6EMnTnnOSrTmhvjgsZMylheVlmbnnjkYMla04ZgLzujab26v/u+lFHjf4tR15emHL9CXWkeqCiMf9gyVpnR7evbc4ZeeUJTY8O3W9hyo2v7PmpEGpjzgs3zfkDXWDAEGUr01b2+Oj5l0/59twRl58GpTz7qYLOQJoz8srDpes+yXjcobtaPA1v7f/d9KSLNWkI4e7bRiCP1d7jHoH12c95bLehOZWw/RyBxXXp63KesW3ruHu8IYXQNYdlm1uP/LeT9cO7XhFRl3pVc2F6+YYjVTst29J03dCc80dd160B/kPkuaOnKz2f0CDRenwP1/xR13+c/lh+9R5dMyoaczflvnD9rF/1Xy+MlNp5E+5JK1l1pHqXoTkLave/vveXStmdX0ZsZR0uXdfQWuFyBCqhdE2vaT66Nvup4xvDDN3psdqcur/baj1ctm7JmFv9jKDu7o2lY+9cm/VUeWOurjmKatPWZP/72hkP9HKKaHrZ+oa28o6/Gim1Znft+pxnLds8vnpWk7umo+BQetmGFk99L2sODZsARBcYhl3DT3TAiOXjvnT+uLv6b8b1wHyXY2MSK5vyTLu9kwXLimrTCqr367rDstyTEs7p4mCLAXbVtB9lV24trE0zNGdO5Y761kop+2Bt32M7qmPYcnlDTieroVU05uVUbRdKKGWPjJg2InzKcSsYFOXX7O14J03qTe7atw/8/uRsoUlD1wxdM9LLNlQ25kUHjxK9q4jY1F7Z2Fa1OuNf9a0VutSVUKF+MeNjFvPnfGzJ6osnf+vxDXd0jJ3amPvC/JTrelOGQHRh5P7VM3768LqbbGVqQt9R8Ia/I9TRaYNlTXPxoZI1uu7oaLK1bWvFvl/5Onmcul9G+abyhpzkU63yJrwMCQo5f+J9/9n2bU3XNWlsPfLq4tRbEnpRLdNW9qbcFzpmrnXU2n7/0N9P3nIptY4p9+WNuYdL1s5JvkpQCJEXr6Hw6hiCYCvToTnPHXPn95e/evXUHwzr9COECHFFO42AjknFbrMlr3q38F0K+fW9v3xyy1ef3HzPigO/bXE3DNFv5B9z9fSfODQ/oWyP3V5Sn+E223p/TQtyRTr1AKWUFNK0PNmV2zr54U8yHn1i013PbPvaE5vvrmzKO6H8T0XjEV03Oh7obduSQtOkccLr2NJR7Wbz7qKVfVER0WNa7fuOflDbUqJphmWb05MuCnCGCnxmSvy54+PO8ljtmtTrWstXZ/67vz9xeuKF547/isdql1JrdTdUNxd23spSXHeoqO5gR40cW1mWbXZ28kitobX8UOnanm3b7BGXJUfOMK12XTMqmwo2H3mpN9+0Y1iP1DpGLtm+tlwKzVaWJrWm9urM/qpoOuSWwujoZebFa+i+LNttWq0xQckXTbjvj5dvv3vhI8nh006Di35UUHKYf6xSthTSY7s35b7kq6djd+Hb+4s/FFK0mc3jYhZFB6UM2S81M+nS5eO/bClLCtEHjT+fPbPGh47rGCFuKXNX4dtus9XrTx4uW7s17zWl7FZPU2L4xOSImeK4Tsb0sg3tZosUmlJ2gDMsIjAxPCDh5FdEYKK/I1gIZdqenQVvmla76F1FRF0aUkpLmZ+ugq7UlPhzCT3HC3SFnzX6Nqfur4Tt0F3b8l4trD3Q3x960aRvjo6e15GBTtnHtCHn+WMjfrpw8ghDd23Le83To5MnPCBxyehbpGYooQzNsS7r2aqm/B5/zU25L7rNto6NdxmBnWx5gCNUCWVozn3FH1b24hOZBQb0ttiIEsqyTSHUiPDJMxMvXphyw8jwKafTt9Q1x4ykizuWlZZC7i58Z0biRSe3PG/Pf+2lnT/qGLcbHpCwfNzdx80i9j4nSAzmjDbtoknfzCjblF+zz+i7Rc4Xjrpxy5GXO1auOFK18+OMRy+b8v0Tfia7Yutz277d1Fata4ay1bzkayOOW0ihvDE3rXS1Q3cpoTTNcd3MB5LDp/mYUCYzyje+tufnuqZXNOVlV27rzSKRn1ZEbC7u6N+0lRkVlDKim2fyEKkSLoXsv4XrZ424ZF32nI6Kmu1W6weH/nHPkqf69euEByRcNe3H/9z0pTZPY+d7uLalJLNik6YZStguPfDSKd+dEHuW8jYcSgotvXzjin2/kkIrrk8vqNk3Jnp+D7Ztfsq1G3NeKKw5YOiOJnf1x+mP3zz3j6Inq4nVZpVvPvZkdf7Ee2ckXuz1tJdSP1K16839v21x15U35ORX7x2UBy2DxeBxxsYepSxbWUopQ3MEucLHxyw+e/RtSaGToj8/V/m0sXTsl7bnv55XvdfQnK2e+me3fyu3eteS1Fs6Jh8drT20KfeFrXmvtnrqNakrZZ87/u6x0Qs6f8/M8k1CCOV7sKqlrIiAhOlJF/fTl4oISLp6+k8f2XBzR0dSn7znpPhlc5Kv2pb3mkN3mrbn3YN/KWvIOWfcl5LCJkup1TQXbT3yyoac56tbjhqaw221jItesnzcl4//9KzyzfUtpQ7dz2O1TYidNz/52k4KPYf6x67Pfq6iMbe2peRw6dreBKD/VUQUhhDCY7VPjDu767cWOTSO6XGVoF8McIYKH02VSiinETA57pwQ/24vYRHgDD9n3Jdyq7Z3PA8cLFmVXbF1bMzCfv0DnJZ44eLUmz7OeKzzALSr8O3m9lopNdPyxISNWj7uLn9HiK8fTgibsDrzidqWEtNu35T7Ys8CUJh//OLUm47WHux4HNxZ+Oai0V9IOa5Fs4sOlq4ub8zVNb2j1fPccV8JC/BZoCslYsbWI69kV26TUtua9+rJ09yYBQb0wxIWyrKUKZQI8YsK9Y+LDEiakXjh3OQrw/zi5XCuEHhKgc6wuxb967GNdxTVHnLqfk3tVR8cenB1xj87BhNYyuOx2oSQUmgeq33OyCuvmPp/nRRt6/gXW/L+uyXvlU76njxW2+T4c/r1ZjlzxCXnjvvKh4cf7quZ8JrUb5rz+4a2isOl6w3d2eZp2pjz/Pb81zRpSCFtZbmtNiFsQzPcVltC6MTb5v/1+GWkbGVuyn1R04yOeeXTEi/ofJmL6KCUGUkXvX/o75o0DpdtOK+1ItQ/ptcVEYUSymUEjo1Z1J12FDlEjulna4H9VHRakD08IOHrS58P6dHuWjDqhk/SH++YDlbbWrIq81+jomb369JUmtSunfGLzPLNRbVpvg6KabXvLXrPtD0O3SU1bVrihZ2kHyGEvyNkwajrVqb9RZN6duXW+rayUL+erFKybNwX12U/3VG9sKLxyJrMJ++Y/2C3WuBsZWaUbWhy1/gZQablnjni0tCA+M7P1fkp1+RV7xJCHixdVddSEh6QKE7jMUCKISa8BuJlH3spZSll2spj2W7TbnNbzS4jICls0pJRX/jCrN98ZdET9y9/8wfnvn3BhPvC/RNP7/TTYUT41LsXPTEt8Xy32SaElFLzWO3tZnO72Wxabik027Y0aVww8b4vLny0k2liSqj/vZSllN3Zy/ut9H/v0FlePfXPCCHEBZO+NjJimsdq/+yHe/ueEQFJX1742OLUm23bFkJomm5abrfZ0m42e6w2KaRQwrLNGYkXfXPZy6M+P4eouC49v2avlJppm1GBI6fEn9eF8tbLgl3RmtRyKrf3cjzKrKTLnEaArWzLNsMD4kdFzuzqo0EfHFOf50m3bhPHbYY6xWb4qJGounCUO6aDdTwUOTS/3YXvpJeu7/G3OO5nVKctT6E3zPq1nyPYVpbX98yt2nm07pAmdVvZfkbggpTrunDEL/V3BGlSljfkHCxZ27O90TEdzLItIZRD99tZ8GZBzb5u7Y3KpsK0ktUOzdVRZHVByvWnbM+ZNfIKf2eYEspjtm498qo4vbvADE136MawW4YaYpgV+tM6ooxSKjZktEsPCHCGRQYkJUdMjwocGeSKCnSGhfrHOXW/M3P/pEbNufesZ3cXvv3BoX9UNRUpaSuhpBBSSIceMDp67kWTvjE5/pxOKqNIqRma47Oyeae+n+ne3kqThqE5Dc1ha05fTd/HfsaQjs6bx6MCky+c9PUXd9zvsd2GJjvZeE0ahubQpC6F7DzyxgSPvnPBQzNHXPzewb+XNmRZtqeju6TjFxNCJy8fd/fc5KtPbt3ZcuS/QgmH5jSFJyVq1siIqafcS1MTzh0RPjm7crsUYv/RD6fEn9vj1WqjgkeNjVl4uHStECI+dEJi2MQutrgYmkPvWjkcX8fU61RnQ3MYmrPrTxeG5rCUoyu9IVJqhu79J3XpMDSnrhmdjwybEn/upIRz0kvXG7rLtN1rs5+aHL9c0/TufgsppCEdhuawhXbKkkKTE5YvHXvnx+mPej35syq2NLRWdKydMi5mcUIXDl9C2MQJcWcfLP7EbbVllm+al3KNQ3P1YG/MHnHZppwXCmv2O3S/Vk/Dhpz/pETOPqGG4XF7w3HC3iis2V/VXOg0/E3LPT5mcVdGnnW0fXbMJDhQ8vGFk77ef6O+vB84Xwm6P5p/SuszWs0mySgg9GcPV5h/XLBf9LGHPPHZan/snJPLIRbVHCiqPdjqadI1I9AVNi5mcXhAwin3VWNbZWVTQdePiL8jJCHshMoiqrIpv761UpOareyk8Enearh9+jNSSofmjA8d5+h0wSZbeUrqMtvNViFEaEBMVKD3gVzVzYV1reUdV6HooORjp4rodFmGqubCzPLNre56XXP4O0NGRcyMDRnj62JdXJfe5mmUUlNChfnHRgaO7Nr6kQX1bRVCCD8jMCFsYm+uk9XNhXUt5UKKrn/68bulp8f0RA1tFZWN+VJqtrIiA0eEd6F+ulJ2fs2+LlZi7Ji1FBsy5oSTx7I9pfVZ7WaLlFJKLSViRifxq661pKqp6Ng5Pypy1gk/3JVv4bFaS+uzPLZbKOXvDIkNHtNJ66kQotldW9GQq4Q46eRXlY159W2VHYPwooNTju9aFZ2Om65uLpJC+jmD44LHHv/p3doblU359a0VHaFHSpkSMdPX3pBCRgenHL+8blVzQX1LuZSareww/5ioro08a2irrGzME0I6Df/E0PHa6RqAAAAAhgiNXQAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAACAAMQuAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAACAAAQAAEAAAgAAIAABAAAQgAAAAAhAAAAABCAAAAACEAAAAAEIAAAQgAAAAAhAAAAABCAAAIDTw/8DL2xfqzIjsa4AAAAASUVORK5CYII=", "ours": {"svg": "", "m": {"de00": 0.012538302689790726, "lpips": 0.0008486868464387953, "dino": 0.999984860420227, "params": 865, "bytes": 8444, "sec": 3.555389399989508, "paths": 12, "cubics": 59, "lines": 232, "arcs": 0, "prims": 9, "gradients": 2}}, "vtracer": {"svg": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "m": {"de00": 0.612904965877533, "lpips": 0.0061216801404953, "dino": 0.9619289636611938, "params": 3450, "bytes": 23123, "sec": 0.07821940002031624, "paths": 41, "cubics": 575, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, "artist_paths": 25}, {"name": "5corunafs", "png": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwAAAAMACAIAAAAc45fZAACpcElEQVR42uydd2AU1RbGz713ZksakFBC6L0jAipFwIYoioAIggKCiFQVURQVBLugNAEBkSqg4BNBFAtFQelIV3oPndCT3Z2Ze+/7Y0Pf3ZlNdjcbPL+XP3ya7E6/35zyHSKlBARBEARBkP8SFA8BgiAIgiAogBAEQRAEQVAAIQiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgCAogBEEQBEEQFEAIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgCAogBEEQBEEQFEAIgiAIgiAogBAEQRAEQVAAIQiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCICiAEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEFQACEIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgCAogBEEQBEEQFEAIgiAIgiAogBAEQRAEQVAAIQiCIAiCoABCEARBEAQFEIIgCIIgCAogBEEQBEEQFEAIgiAIgiAogBAEQRAEQVAAIQiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgCAogBEEQBEEQFEAIgiAIgiAogBAEQRAEQVAAIQiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQVAAIQiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgCAogBEEQBEEQFEAIgiAIgiAogBAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgCAogBEEQBEEQFEAIgiAIgiAogBAEQRAEQVAAIQiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgCAogBEEQBEEQFEAIgiAIgiAogBAEQRAEQVAAIQiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQFEAIgiAIgiAogBAEQRAEQVAAIQiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgCAogBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgCAogBEEQBEEQFEAIgiAIgiAogBAEQRAEQVAAIQiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCoABCEARBEARBAYQgCIIgCIICCEEQBEEQBAUQgiAIgiAICiAEQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEEBhIcAQRAEQRAUQAiCIAiCICiAEARBEARBUAAhCIIgCIKgAEIQBEEQBEEBhCAIgiAIggIIQRAEQRAEBRCCIAiCIAgKIARBEARBEBRACIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgKIAQBEEQBEFQACEIgiAIgqAAQhAEQRAEQQGEIAiCIAiCAghBEARBEAQFEIIgCIIgSFSh4CHIKSTIy/8k5fX/iQABcs0/IwiCIAiCAiiXSRzp/QevzJG+BI8VCCFACMn8Z68quvz/EQRBEAQJblnN0mKM+FU8l4+nlPKq4gnb2SOEZIqhK/+AIAiCIAgKoLAjpAApZWZoJ8yKJ7Aa8ibMCEUxhCAIgiAogCD0iS0JEsSVIE90QiklQDJjQwiCIAiCoADKiu6RUoKUUuS6I0YpBSCUEMCwEIIgCIKgALKoe65NcoX7yyBs0RqS+T9KKXofIAiCIIA+QIg/3cMNrnNhSCkioX44F/v3Q9jUibdA27tTQnIUvgiCIAgKIASuLWrmwuDCEEJAJCuYOZeHDkNE6nWEyNxHKUXOVW0jCIIgCKAPUBRIHyG8pc058/WcyyNHIlmmI6XkkhMghBBKGV4ACIIgCAog+I9VN4uIxnv86C+ZejjydcqZqTEuKKWEUOyfRxAEQVAA/Rd8C8Msfa6ktAgBQgLkHKUQ4uRJAACm3riZIOHajQxPjEoIASAoZQQ75xEEQRDALjC4ZRNeIuQVMJQCoVejOJID58A5CCEvXBB798n9++WxY2LvPnC75N69l0dlgPJUW7VrN1eTB8HjoRUrgc1GEvORlBSIjaElS5HkQrRIEWAMKAOFAVOu+4rQCzhCMSmGIAiCAEaAbrkyZyFCKn0YA6AEQGaky3Nn5blz8vx5SD3C//lH7tsn9h8U2/+F9HTgHAzj5viNBKA1bgNK4NIlsXadWLHyugASY0ApKAopUoQWK0oqVSQVKrIKFUhSIuTJSwonk9j4UIshKTAphiAIgqAAglun3EeIUDkZEgKUelNa8vgxsWGD2LBB/POvOHRQHj4sD6cG9WE0b16gzEcLmJRgGAAAmiZ37+a7d8PS3wFABwCnk5QoQW+rTsuUoaVLk4oVafXqJD7Bq/FAiOxnyrwykVFKCMVbBUEQBEEBlCvFz+WcV/bwpp8kB49H7NvHlyzlS5bIPXvlkSPi3Lmsh0ry5Qv6T1wuuWMH37HDACCUkoIFSeHCpGpV1rABa9CAliwBNhsQBiBB8GyIIckFJ0RQwrAwCEEQBEEBBP+tnBchQBUAkCeOy927jF8XGXO/k3v2gqZdY7WcRWhSIq1eDUBk1eIZQAh5/Lg8fhw2buQzZoCq0sqVWPPHlMYPkhLFSdHi2UyQSSm5NCil9NoKJwRBEAQBLIKG6DV0ztY+UgqEgebma9aKZX8YixaLFSuB8xBuJC1dyv7jj7RCeVe9+mLN2tAeAXrnnbTOXey++1ijhiRvYjazYwQIpRgKQhAEQQAjQHBr9nl5dQ8IeeKEMWOmMW++3LVLetvUQ05CAkkpHFpRdfUgrF0r1q41Jk+l5cuxBx5Qnu1Ey5YBZgOQwI0sGAdwYVBCsUcMQRAEAYwAQRQa/GS54seb7dI9YutW45s5xowZ8tixsG4trVPHuWoFeDyuRveEPAJ0I3Y7e/BBpUtnVqcOKVQYAIDrWQ0FYXE0giAIAhgBiqJWL561ih+v9HFn8KW/Gt9+y+f/IM+ejcQWe7vJIqNEPR6+YAFfsIA2aKA81ow1b07Llc9CeZD0FkdTYKiBEARBEBRAEBVpL57FhJeh8R/n6SNHiQ0b5fnzEdtmkj9/DhyoP//U/vyTTJigtG2rPt+VFCsBEHQ0SAouiKQUK6MRBEEQwGnwkFNpLy540OqHEGAqGAb/ZaG7WXP34634739ETP1IAAnAGt9/TSgosgdtz179/Q9cdepp7w4W+/cCU4GxYDvsDM5D4C+AIAiCIIA1QFno0xY86LQXYyAlX77cmDTZ+N934HKF+WATUqkSsdsgXz6akgJJSSQ2lthsSof2pFRpcLsybrtdHjhAq1aBmFiQAggFV4Y8cgQA5ImTYb8UKldWn39OeeYZkjcRhBFsSo5RhiVBCIIgCAogiOq0F2MAVOzZrY8Ywb/9nzx1KsTbpCigKEApe7wlrVSJVaoIefOBw04KFiIKA6eTJCSAI8br4iO9XoUZGekFCoGUjvnzaI3bgetACOi6PH8eCJFpaTI1VRxOlTt2iM1bxJ494HZnmkRDaCuy71JffUVp+ThQFqwMwu4wBEEQBAVQxEwOedDj3JkqL5zj//tOe3uQN74CoUhmkdhYWrIEyZOH1KqltH6CVqxInE5wOEBRbko1SpACpLwqLwiBjIz0gsnS5XL+uYzd3fByNOuG2hoBhuH94Rs2iHXr+Z9/yYMHZeoRefpUCIuyWZs2tjf702q3BVsfTQhlWBKEIAiCoAAKK1wYwW0/IUAVvn6d/u67fMGPEKJJqOzRR2jlyrRWLVavLilc5DqJ453nZWXDMjLSCyaDy2X/arrSvoPfeuQrJoSUeXWGPH9W/L1BbNzI16wRK1bJo6GRdKRkCfXlPkqXLiQ2PqjiaAKEMoYjVBEEQRAUQOFAci6k9fERhABV5MXz+sjPjAnj5ZGj2f1+h4PdXV95+ilSsSKtXJkk5AUAAJFFP8NrBJBtxHC1T58gXAopBcIIgEi/KA8eEps3Gd/M5sv/hHPnsl+0xB5+2PbRR7R69SBDQQRHqCIIgiAogMKgfkQwAy68gZ+VK7Q33xLLlmXrm2NjadUqSqtWytNPkQIFQLVnS/f4EkDqSy/Zhn9qNXTkw70agOvy5EljzrfG9/Pk1q3yzJlsbVvevLYPP1Cf7Qx2Z1ChIMYYAdRACIIgCAqgHBnvxRgYXJ86VR80WB7NeuCHFCzAWrdmD9zPHn6I2GNA8uuKeLIda7kigFi7to7p04BmwxqRECAECANh8KVLjB8X8vk/yAMHIBtVQUrnTrZBg0ix4sFpIGwNQxAEQVAARbrd3Zv2On1SH/i2PmUqeDxZXP2rV1N69WT16tGqVQEoCA4ht725RgDRu+s7Fy8CVQ2BusocYi/Ezl3811/0UZ/J/fshq59Ka9W0jx5N69YLKh1GKaOogRAEQRAUQNmyOuSW1Q+lQBhfu0Z78SWxZk0Wl/yKFZWX+6jtn4aYOADIgjtOFgQQqVIlZt0asNtDGV6iCoCUZ88Yc783Jk4U69YHO/si85MS86kffKB2eQ5UxXqVEsaBEARBEBRAEYn9UApCGNOma4MGy9TUrByXChXUDu2Vjh1IsRJh1D2+BBDY7bFpp8DpDP2XekNi58/y/32nj58g1q/Pyoeoqtr3ZfWNN0ieBOuVT6iBEARBEBRAWev54tKi+mEKCK5/Okwb/E4WzJ1JcrL6Wj/WvDktXQZABtGNFToB5NyyiZYvn93C6oAmkDL1sPHdd/rHQ+Tx41npDmvT2j5qJClU2HpJEObCEARBEMBZYBCc308Q6kdeuqS9+JL2ev+g1U9cnNK5s3P9WvXlvrR0GeB6hNTPjXvL5bFjYfQS5By4TooWU1/q41i7WuneLehprFLy2XPcbZ4Uu3cCU8GqYTcPwrYAQRAEQf7jAigIt0OmyuPHtW7d9HHjgz4Q9eraZ0y3T55MihQBrgc7Fz20AkUcOhx2M2WuA9dpsWL2cePs385hDz8U7AeI5X96nukkVvxlXQMFEcZDEARBkP+yABLW/X6YKvbs8nR+1pj1dXAVvjabOniQ47u5SvOWIIxwJZ4giPgKXLwQMbEF3GD33GufNdM2aiRJLhTc2Vm12tPxGbFsWXAaSKIGQhAEQVAABZrzJYTFhnOmin+3eVq34b/8Etz+N2zgWLXCNmgwSS4EXIfoWJvFzp0R/T6uk7z51Bdfcvz6K7v//uA2dd8+T+fOYtnvljWQt5gdQRAEQVAA+W56F8LiSslU8c82T/uOYtNmCKaSV+3/uuP7uaxm7Rwr9/G376dOR/oruQFcp9Vvs8/9zvb+eyRfviA00P797s5dxJ/LgtBAHDUQgiD/SUwTFELItDQ8TvAf7gKThkVFwlSxa6e7dRu5ZUsQH58nj23kCLVT58j1eVnvAgNgDRo4li/PmTokpgAQ/vNCz6uvyn+3ByGlS5e2T55MGzWyuNmUUuod3IEgCHJrI6Xx22/6zJli/36paaRgQaVePbV1a1q6NNCbwhC6ntG+Pcmf396vHy1ZEg/ef04AccGlleQXU0XqYU+LluLvv4NYqhs0sH06lN1ZJyyezqEQQLR2Ledff4bGDDqrdkHi8EGtVy/+40Lr20BLlbJPmUQb3WtRA6E5EIIgtzziyBFP//7a11/fWGAaE6M+/LCtWzdWvTopVOjaCNDF0qXFwYOsbFn7qFFq06Z4DP9DAkhIa8kvpsjjxz1dn+c//mj9w5VOz9g+HUaSknKyz8tUAFWu5PjtV1KkiKWKbEJ8lFFDCEJB8tw5Y+hQbfgI61NESKlSjmlTaINGljWQQgjB+xBBkFsS4/ff3W+8wQNOI1Dq11fuvZdWrkxLlABCxP79GR07eh/+pGBB55dfqs2a4ZH8TwggKSUXhqXl+fw5z1NP84U/Wy4qAvXFF+2ffmppjEP2V2Urn3AlGXy9ACJFi9q//47VvtO3jCAEKLvaJ3+zUTVTrv7XYOZ2+UiHGVwfO0YbMBAuXbL4R7RcOftXX9G77rKigQgQxhS8DxEEuaXQdb55szZ+vP7DD/LUKUsrht3uLb6U6eny4sVrBhAlxs6fz+6+Gw9qyFGiL/zDLU26cHv0AQOtqx9wOm3vvWt75RWQwpL6odk7MsIAjyegl48EQoAx3zrJ44FrboBrFQkBIoUhj6TKU6dkWprYu1/u3SPPnLn6XZTQihVpkSKkZElSID8pVIjExMmsDTLjBjCqvtSHlCqtPfusxbo8sXu355W+9smTaPmKphpIghSSYzEQgiC3Etrs2a5nngnq5VN6PD59+eWZM54vvoipWxcYPidvaQHErbj+UApc6CNH6BO/tBqLyZOgvv+e2vtFSyKAEnHgkP7ZZ9kyBPJ4ID0joP6RpFhxtf9rJCHBx01y6RKcPHXzbFdxYD//9VexYYPYslXs2AHnzkHAkRe0UiVatQq9/XbaoAGrWweABi2DhAAilccegy8naq+8Ivftt/RHK1Z6evR0/O9bkjev6SNACEEYIYDFQAiC3Cor6z33KA8/bPz0082JiKCSC6RwYXuvXurTT6P6gVs7BWa59Ec1/vetp1NnSE+3tIcFCthGjlSeagdCgLXCan3GV1qHjuHeX1q1qvPvdaCqIMQNKTAgYB/3udKtB3DdK33kiWP6J8OMHxfInbuycpoLF6a1aqo9urMHHwTFFrQMIgQoE+vXe9q2FXv3Wfwj1r69feIE4nBYkZKKZStFBEGQ6EeeOuV+803ty8wXdRIbqz77LKtWTaSm6vPni+3bQdNMHqGNGjk//ZTVro0H85b3AZJSWFIn/K/lnq7PW1U/yYXsM2coTz0VXMPXyROR2OO4OLDZfAoRKUEeP0G8VTicG//71t2gkT5sWNbUDwDIY8f4jz+5H2vhbtac/74EqBLc+4SUIDitfYd9zmxasbzFP+IzZugffAhC+ujz9GX5jXcjgiC3TnShQAHn+PG23r29D0Bbz57Ozz6zde3qeOed+HXr4v/5xz5oEKtdmyQkSJ82dR06xHz7Laqf/4QA4kKYT4liityzS+v9oknq58olVLy4fcpk1vhBEEFaPHu0SNwelAJQfxsmz18AAHn+vD5osOfp9mL37pAMvuC//OJp+5T+8UfywkUIqvpYShA6rVnb/tVXtGIFi39kjBnLv/0WLJT4CClwTBiCILcUjDmGDLH16AFOp9qu3dV/r6q0bFnH4MFxy5c7Z860d+/O6tUjyckSAJxOVr++Y9Qo5/jxtEABPIS3fgrMUvKLMen2aL16GZOnWFTf9klfsmaPBZ3uYar7iVb8u7nh3mu163O2LyZmlgnfkAIDUDp2UAcP0vr25fMXhMMNiDVpYhvzGS1bPmg7AKaKjX97WrexmAsjycmOXxbS22638EWEMUYAu+IRBLl1kOnpxtKl6kMPgeo30S+OH5dnzsgzZ0hMDClShBYqhMftvyKALM17Z6o+7nOtZy9LnxjjtI8epTzbNSutT0x13303X7Ei3HttGzFM7dPXnwCipUtLIeSBA+HbAHr33fbJX9JyFbKigVb+5X6shcW+MFqnjuPnn0jevKbFQGgPjSAIgsB/JAUmpLCifsTf6/TB71gd8jV4cBbVz2V3Ggh/aJSULgP+kz5i376wqh8AEH/95en0rDx0IOj+AmHQenfbJn1JrL2miDVr9A8/Ao9mWgwkhMBZ8UG/X14WzQiCIEiuEUBSSgvJL0WeOqm93FeePGnF7VB56UVbn5dB8KyoH0JACmmEvyCXUlKkCOR01YtYudLT9xV54ULwNdGG0ryF7bORoChWfl8f+7mxYIG1YiCshrYKX7cuvUkTff783LG5hgG6ft2PYeTmo88BZ/oiCKAPUDZav0xLhcEw9E8+4X/+ZWl/nnjC9slQUFg2nk0yEhO4GKXJhSAa8o/fzdWrVLENfBsoDaJRTkoQXGnTVu7ao73zjvlKlpGh9+/P6tcjyYUhoOSVUkopcs2MMM5BCHnmzI37cPaspZMrJeTJQ1Q1C1UF4sQJz1tv6b//rrZoEY1HJiNDHDsm09LE9u1i/35x/LjYvVteunSd8yelrEoVsNlY2bK0alWSlEQKFaJFikBUOdMfOybS0uSFC/LwYXn8uNi/X7pcQKk8fBgASLFiIARxOmnJkrRyZZIvHylQgBYuDA4HhMFc2HvJyYsXgfOrR1IIefEi6Lpf93lCpKZBRgaJj/cdhaUUEhIIYyAlOBwkNhYoDZnxjBDiwAESG3vjla+qvrdHCeWqJM+cAU2z6MtPChTw/e1CZC4o1icESBnKY3jtoPj0dEhP926J1HWglFz+FpKQAE5nmB508uxZ4JwkJvoevqSqKICCD/+YrriU8SWLDWueh/Suu+yfjyGKknX1Q4i8cAE0D0Rg+pczBqIj3WN8Po49cD9r0Ah4MEMzpABJ1D4vie3/GLO+Mb9z9+7T3hpgHz8BVBbYHZELobBcIID0OXOMn38GwxAHDlx3KqUU+/dbFECkaFHidAZryyRPnRKHDkmXiwBEl0NaRoaxdClfv55v28a3bBF790ohAiwafNWqqwZxMTGscmVWsyarXp3Vrs1q186xXcvIMFav5mvXij17xLZtfM8ecbncjfiPPXtbO1mFCrR6dVa5stKoEatbF2y2UD0u9fnz9XnzwDDksWNgGFfXIc7F8ePgcgUSQBkZ8vx56l3gb77YGCMpKcRuByFInjwkf35QFFK4MElIoCkpJH9+WrQoLVMGYmKysuWaltGxI7l5yXQ6aaFCN28PrVRJffbZUFUBa9OnG3PmWHHikLru+PBD5f77fR589zvvyIMHgxBANputWzd2xx0hUyDbtmnTp8Pp0zItTZ4+DYR4TysoypU3KJKSQgoUIPnzs7p11YceCqX+2bHD1bMn4ZyWKuVTAJEiRcj12ktKSUuVsj3zDAqgrCY7CAGPW//gQ2mh750ULWobOYIUKJStKaeEQHq69dmf2cIeLZJZnj6tfzyU1akD3lfAIE4hh7h49eOPxY5dYsMGc6U1Y6by8EOs9ZMAwkRb5Yb5GPLsWc/UqdmtGTtxAm4BpBQ7dmgzZxq//CJ275YXLlxxvLV4cAgAZGTw9euN9esJAE1JISVLqk2aqB060JIlITITc4Xg//6rT59uLF0qDhzwih6Le0GufML27cb27QSAFihASpSwPfWU0ro1LVo0BLMFHQ79f/+THk+Wj4UIMJTqyJFrldzVr1VVEhND8uYlSUm0XDmlUSPlnnto+fJBaFO7XXn0Ufcbb9x8GH0+a5SGDW0vvBCqU8oqVnStWmV6BiUASU72Gz5hDDRNmzHD+sORpqTYXnsttPE/fcoUcfq0qQoHgJhZs0J8a9hs8vBhvn+/DKY9yDFoEGAXmL8HJjev/lH1USO1Pi+bf5qq2idNVDs8k90Z74zJQ4fdTZqIHTvDe9yrVolZuwbs9kzBcVMXWHDEx9NKFWntWmBwuXev2LBRnj0b7OPV/s0spU3brBxApopNG9wPPmRl5h+tVtUxfx4pVcb0i3KFN7Q2ZYqrd2/IyMjBbXBOmGB7/nnIuSQgX79emzBBmznT1Nk2S+8JdlurVmr79uzOO0lSUrgeR5cu8b/+0iZO1H/8MeR7QQoUsLVrZ3vxRVqmTHavty+/dPfpI63ZwIbtgnOqDzxge+kl5d57rURWvLhfftk9ahQxW27sgwfb+/Yl8fEh3F53//7a6NEy4E2qPPZYzJQpJDExwIqlff11RseOxEp6gRD7u+86BgwI7YE3/vwzo1WrwI9ZWqFCzJdfhmNyqrFsWUarVhY7fwEg8wgQgkXQvtMcprXPYutmfcRIS/L0hd5qh44gsl9TSUXqYXn+fNiP++23hyppyurXt8+Y4Vj+h33sOPuELxyLl9hnzqA1awYrSI1Jk0HwrFyvXKc1ato+/hgcdvN30K3btM9GWyk2yhXV0Gq7dqxyZfivwrdtc/Xund64sTZlSljUDwB4PNqsWRktWmQ8+aQ+b57U9ZB/g/HTT64OHTIee0yfOzcceyFPnfJ89ln6ww97hgyRFy5k6z38ueeUxo1z+Ky7XPqCBRktWrj79ZOnT1v8I+Xxx2n+/OYtLI0bh1b9AIB94EB2zz0BN06x9+8fSP0AACGsRg2SN6/F90lWrVrID7zSoAGrUyfwAbS1axemufFKo0ZKw4ZWRX/evGqrVlGufnJMAAkpTBqgKAVd18eOkwcPmu9DzZrqgLdAitCU1KSnW30IKgo4HeB0BvcTH08qVmQNGwKl2d9g2rCBffY3ymOPEdUGXAeugzDYw03t06fRsmWDOymbt/C1a4FmKSsqudKhPbvW6jTAejPhC7F6FZgFeHJFSzxxOEj2sxu5swdKmzgxo3lzbfx4efFiuL9NapqxZIlXphi//x6yj01Lc/ftm/H001p4pNV11/Pu3e7+/TNateJbtmTrkktOjobzLy9d8gwf7urcWVrz5adlyxIzX2OamHhjrXRIblK7nRQoEOBRQlSVVa9u/jmxsSwlxWoudenSsCzYxYrl5OOueHHrbc4gBGAbfBYHPxHG//jDmGJu+kwSE+1jPiP5kkJ1uOW5c9LKKAxFsc/+Ovb4sdhTJ2JPHg/i59iRmA3r1U7PZF/9kKJF7eM+J0WKAr9m1oeUwHVapar6/rtBCXB54oRYsoRIkbUzCqrN9tprpEJ5K2+Q2qDB8uJ5MGv1yhWeQNHVtRSZxe/kSVenTq7nnxf79kV40TV++SX9wQddL74oDh3KroRbvz79/vs9I0bI8+cj9qJqLF6c8eCD+syZ2Wo8jBr0H3/MeOYZeemS+W1SuDDJk8c03RmymvGba67BpPjBSjYWEhKsHpmvv9ZvGgWfuxHC+v0uzpzh69ejAMpS6zsl4M7Q3v/APBKjquobr9O69UOR/MqsZJTbd1i5n0FR2F11wNt2GBMTxI/TCXZ7CGKDNpvaqyetWMn3vkuuPPYYqRVcIoyvXSuC9QS6NhFWsZJt0NtWulj5Xyv49/OAMgtZMPRFjLLQz4YNGU88oc2YATnnJ6SNHp3RooU2YQJfuZKvXMn/+sv45Rdx/Lj1R7k+c2ZGy5Z88+YcWEdOnHD17On59NMsvrNF2VuB8dNP2rBhViydiOmTQYbHgkRRTIZqWf9ey5snTp1yv/CCsXhxiGMwAfN0hFIStvFhfO1avmaN9ZVUnz4dov4NluaIjjS9UYwffhDLl5tv/W23qd26Z9HzMPsvWN4Gzmt/rvRrXHtf+fzx2eURZCxUadPGbx5NCHDGKh06BPdo3b8fzpzJ+lXBdeXJJ5XOnSyVEYwbJ48dMR3IKmQuiKP+h9TPpk2up582/vwzmy6goKqZP1l9E+AbN7p69Mho1SqjVauMJ55wDxhg/SHg+fxzV/fuIjU16xtvs4HDAaoKipKFXZAXLrjfeMPz7rtZ+f5oS7ly7vn00yh/3SeBIzexsVZPYjALjdi/P6NjxxBmbM3PPqXWY1RBp7ynTRMWvIivKuOVK/m6dYA+QDeEf0yGfhMqL13QR402/6y4OPuE8RCfkN3Or+uLyKRFd1pCSOxlIx9Kr/M41txgc2TGk7yfyg0Lzi6ng3ojpA3uJqVNeqmUunV1p9N6Z5ncv1+mnSalSmfjBlVs/fvz5cvlzl0mT4fVa4wfflC79TCVy5Tl2ulghITFyYYQ0HUJkR4by//919W6Nd+zJ9h7iubNS4oUoYUL02rVWJkyJDk58zkuJd+zB1wuvmeP2L9f7t8vjx0TR45Y3TUpr0R91EceoYULW/kjbfx490svBRt9oUWLkmLFWI0arFEjVqIExMbS4sXFrl3g8fB9+/i6dXz9erFvnzh5kliOY3mGDiVFitieey4oCWX+ik8ILVkSYq6zGSOxscSCN6P0eGR6OnAOFy6IEyck58RiPdCwYTGzZ1tvCoOILzyBTm6ZMsTCfUocDqtF0Fe+9tgx15NPOkaMUJ9+OmT3fk4ECPmmTfqcOSTI9gXP+PExd96JAiiY5i/K+NzvxcaNph+lvtCb3n57CNVP5rVlsRbSuyOUAlB5/oxYsYr//TdcvCjdbrhwAfLkIXY7sdtJtaq0Xl1atIQ3LQVS+JZ/hIojqUE8lCllbVqbpodIoYK0UkWxYaPlGov07HbYcp2ULqO+8IL2yqumdkr68JHKk0+SPAkgZEBTIEEojWYLHL9nqXRp+4ABYdFAbjf/+2/9hx/ksWOR2Uuxb5+rS5dg1Y/SqBFr1EipV4/WqOHT2u66rhZd55s38w0b+Nq1xl9/8Z07ieW6YMfrr1tSHb/84n7rLes3mgRQH3xQfeQR1qABq179hlPptbljd98NHTuCrhtr1ug//GDMmSMstG54h7i533iDFC6sPvpoaMtZHKNHs9q1r/1Nmj+/JYdlIcSpU2AY8uhR/s8/fNUq/aef5GWLoED38oIFfMsWVqNGbn1RsfJbcXHeYmoSpPeSq2dPeemSrVs3yLUuX9qECTf63VtZDZYsETt30goVUABdqWmVJmO/0k7rX31lGrSgNWuqvXoBoQA85Ck6SwqkYgVwOMSevfqwYWL1anngoDh37lqLKu9+EqeTlCxB8uZTunRWHmtO8icBZb6ntAYVSM+Th9WpG3imBEhOEhNJmTJgWQABAKRn29JGcLVDe2PGTLF6tcn1sGuXMWOm2vsFgECiU4BgEL0CKIA5DSlY0NapU7i+uGtXWrq0u3//CFTFSl33fPihsXo1sbyisEaN7P36KXfcEURRgqpmGkB37Sr27zd+/10bP55v2GB6S9p79qTlzavvxZ49rp49rT7HCWENGzr692d33UXy5bOy8crddyt33y06d/ZMnqyNHGmlLMbbhsZq1bIYvrK45bRgwSw6KVOa+YdFirA77oBOnWybN7tee43/9pvp674+b15uFUAW36+yWqIkL1xwv/IKqKrt2Wdz4+ER+/ZpX3+dldfhw4e12bMdb7+NNUDWyp+9mnHxEpNfstuUHt0zu59C+x5gaPLcOUtP+ZhYbeDbrlq1jfETxKbN3r+69g8z/6/LJbfvEKtWaV27ZZQo6enzMt+0AQyezSJoWq0aiY0xv13jEgL0KMlrfoAQUFVgTBw4kN26YykgIa/trTetPFaM8ePlyeOBq6GllNHcDhYoKy8EhLO52v7KK85p02jVquHeR33WLG3SJIuXLK1QwTllStyvv6pNm2axJJMQWrq0rUuXuL/+cn79NatXL8D9wu66y/bcc1ZSTu7XXhP791vs7HNOmRK3aJHy0EOW1M/1kxycn3wS+/PPFtWA2L3b/frr4HaHcjkPcpsDvZPedlvsnDns3nvND/DChRBmK4FwcfFiuMt1ZXq6++WX9dmzc+Ph8YwbB1Yag3z5LOvffpv9hs1bIwJkNvmLEOC6Pm68+T3ZsKH69NMQDqM8g1ucgyFWrRKXxxhZfXtwuYzPRhvTv7J/PlZp95TvOJDFp1LDhqCqJn8uJfFOhylRghRJ8UoekieBFCgAUgAQUrAgSUgAIYAxUrgw2O1g6LROnRAcWK6zR5qy1k/w2XNMDuOu3casWWqfvoEjeQIEg1xbCRQ+GLMFWeeelfv26FHvHANLCaPmzR1DhrBQBb3tdlubNmrTpvpXX3nGjBH//gs3hULtb75JLIRPtClT9O+/t+gs6hwxIptTnJQHHoj59ltXjx5W+oCM777TH3lEffLJ0LzHURraQmmSJ49j4MD0NWsCO57Lc+d4aiorVSr3RTh277ZY7ZSt++jCBfcbb5CkJOWBB3LTwdm505gzJ+t/vm2bsXhx1Ia+lChq/qIK/32pMB01Qqk6cCA4Y0Ic/rk8M1mmh3esgTx3TqxZA+2eytaWli4FhIHQzSSnoXRoz5o9erUJwjvqWUogBOxO4mMoj4WSbUubyGyvvOJetNgk46DrxvwflI4dSWJigFSOFEIySoAAEvn3v5EjLVYa2fv2dQweHHInXxIXZ+vRQ3n4YXffvjeIGLVdO/WRR8wfPgcOaCNGWHogNm3qnDSJhsJskJYt65w2LeOpp/iyZSb3aUaG9uWXyoMPklBFbkIdz2C33cbuuosHbGiSFy/K48chFwqgiNVue/vCYmbNUgI7U0cT2vTpPDU1O09ebcwYW4cO0TkuPnIpMLPmLwJSGlOnmgZRWdOmrF7dUBn/3Hg0zp+Vhw6G/Vhk2+yLWnzKSEmSk2nFyiSlSOZPYiLYbJmGY8KQXPf+wNWfEB1YyWmN21jrJ8wfCn8s42vXmV+KMhc+PUmuV2x840bdmuWPrWdP57BhIVc/Vw9zyZLOyZPVVq2uTQQ7P/zQvMZcCH3WLL59u+n1xe69N2bWLBo6q2WakhIzYwarX9+KQaKxZEnUXgYkTx5asqQ0m6ks9u4NMBNehjDNl2uRx45ldOiQXSOJCMbGtJkzA01wy5vX3q8f2O2BnyFadpw/bwEBZF7GQZnYspkv/d20+Fd9oz8wNVwpWyEiYbSavRcOEhdH4uKCsDXyyprMHw5CZP6ENe0tBKh2tUN7UiC/+dN/2jTTeJ65e3jOzYQH//Gt3P68NhYu5BYMBpWmTR0ffBD2ZThvXrVDB4iJ8c7udo4dayVkIo4etVLCSUuXdg4fbu5WHHyJmOPjj62McdXGjo1e4zjGLOlC/9sv0tJklupIbj1Eaqq7d2+xc2euuP0DtzTa2ra1DxjA6tcPfOFmrYns1hFA5tU/QPjPC8XRoya3YfPHWO3aELa1UKadFfsPhP05brOR7ISp4+PAgqVHFNzoBq1TjzVqZC7SFv4sjh4NrAslmLUQ5lCDqOHfsVPs2yct6mkpwTBA18EwomcVlMeO6d9/bzrBm5Ys6fjoo2AtUrKG0rAhK1WKMOZ4/33F2tBHvmSJ+OcfMAvKOvr3D1MTk3L33fa+fc0Xm1Wrotc4jnNLC1iAkCch5gFRK7+T+yEAfMuWjDZtgjWViPTtf/6857PPSMAGWNtzz5GEBLVVq8BGSvzvv40ffoD/Zg2QBPPwjzx6xJg7jwSuE4qNU1u1Aps99NU/V9PYFyD8o+CzawwTJsP4cBjkMEXp0cOYN9+kJfjCBWP2HNur/QBEwCCQpDRano/S7eabNunjxxu//AL+Da9vPlPy4kV58qQ8eVJeuCD+/VccOCDdbkhP5wcPgqaBzcZKlYKEBFa8OClRgpYqRQoUoMWKWTJxCfmqt2sX//tvk+PAmK1XLyuzJEOzeOTLZ+vXTxw9auvSxeKfaHPnmt4vSr16YTQsALD17q19+63YtAkCz72fMcMZncZxum469JTkz0/LlMlmljMyMjqMcbIqVcS2bVa8VPiWLa7WrZ2zZrFKlaJzb7QJEwIM/5KE2Lt2ZbVqAYDasqU2dqyPHoVrfDS0uXPVNm0gJgb+c0XQpvY/QMSmTcLMTJ3WvYs1bRqe6p8Iyn+7HUqXgv8IXGf3NGJNmnCzuYD8x5/ghRfApgQwRZQgIHoMgdLTXW3aiMOHTd5ovcKFc75lC1+7VuzeLXbv5tu3i9275eXXwZsGpf11pSqFUMoqVKB33KHcdZdy3320YsWInr3ly01t31jFiupTT0Vyq2wdO1qPE8gTJ7hpvQUhtldeCWuRJklIsL/4Ysazzwbebr56tTx/PuRpuOwjDh82VqwIvPEkPj67k+pzeQSIqKpz9GhjyRJt6FArBU980ybXc8/Fzp1LsmbaFNYzfuSINn16oBu/aNEr7wy0cGH1ySc9gwYFCnotXmwsX6489BD811Jg5vkvYRjz55u8pRGi9u6dOX4rfLjCXqZH4mJp4cL/oQmfVFF79zJfqLZv5+vXAVFyiyEQSUpSX3hBmkl/vmCBu3//S/fck9G8uat7d/ewYdoPP4jdu686RQUMlYMQfPt2bfp0V69e6U2burp04Vu3RizrYSxaZLocKY88QlNSotC314uxZEmgIi3vFVqrltqkSdjfNe+5x9QdQBw4wLdsicZgwKxZ0mx0GsmTh0XbnLLIIjknsbGOQYPsQ4ZYLPTkK1e6unSREUg7QPDVPzt2BLqen3zyWotnW8+egaN30uXyjBqVxQHAuVoAmSxaBOTFi/xHkwgBKVaMPdgYwl0JG2QFNClUiNWvp3TupPTuxVo0p3fdZV7tmJCHFE75Tz0WaPVq1GwuvTh5Uiz9nWSzlzCyOPr2tb/6qgyYJktv08YzZAj/6y9vrMhU9PhVQgBi/35t8uT0unVd3brxgM+m0Jy2jAzzCZeqanviiWi++IyVK81DSk88EYEeXVqqlNK4sUkj1Zkz0VYbK8+c8Xz6qee996w4QEZnqzNEMgVWogRQan/xRceoUSQ21sof6T/9lPHUUzItLapOuvbVVwFWQ5KUZH/55evOfv78pn6kxm+/GaaW4reYAJJCmhrG8N//kGadJrbX+hFnTNj9OjUtiFe6p5+yf/c/x18r7JOn2EePcXw/z7lqhX3ObKVd24CB4jiSXChbEzxyV6BYcJJSRDEzayEAfM1aee6M2Xx4EVXPO8dbb9kDj/gJdVOhTE/XvvjC1by5PmtWWF+n5KFDphXctFw5VrNmNF99fNs2k9+IjY2YKQurVi1wLZfkXJi161t5BhKnM7tnPzWVr1ihjR2b8eST7n79zC9jQtTHHvuPFzgTQuByf669Z0/7Rx8RayUvxsKFrs6d5YkT0fLa8OuvARLHEsDWs+fNcV+1XTsTC3IhPKNGScvDueEWqAES5is94d/NDfwoJ4mJtF49CLcPnjBYw7vt38wyfljAv58HQoBh+Lvz1fffs73yCjic11VkE8Luu5/VqwcFCxqjPvMTN3CSvHlByGy0qqXJjHTIPYP0AAh74AEy9vPAbzn8zz/Fvv20ZmLgOmhCJYmaJynJm9cxbBgYhjZpUoTLk13PP8///dc+YAAJT0sg37jR3JTrzjshiufUijNnTF+sWenSJIRzuMyGhNC8eeXp04FDoWAYgXRSbGzgwizp8aQ/8AAtW9bELJ4xefSoz0VXGgacPSvPnhWWl2RSuLDauHHg3u8oTPSEcTQypfZevYAQ90svWXlR0RcsgC5dnF9/beKkFYHbTdM8n3wSaBNKlLD5Gm7PqlZVmzfXpk4NcHEay5fzRYuUwFr5Fp4G7+MmPHzIvPy52aOkSpWwzL64wTYwKb/yZDulVSsY7xKnTsk9e8WGDXztOjh1Sho6GIZMzwDDUPu8pPbsBSBu7EeTErgODqdt4AC5datvWyPGgKnZamTTdDDryLjxniHsaviE8xzoh7/7blqzJl+0CAL2gvG1a2l0RxR8PPpjYx2jRoGqauPHR/J7ZXq654MP5IkTjs8+y/4bv88UmGmwgVWsGM2v9TI1FS5cMDl9RYte9UkPtwAqUYLkyxdAABEAsX+/SEsLMMrUvNNKCGPJEoisraL95ZchcO22ywXBxNdvBSi19+4NAJ7+/WV6upVcGH3jDfuQIQFyZ6xKFVDVsBqMaf/7H9+4MVD4p2VL3wPebTbbk0/qc+cGuOlkRoZn0iTlgQeipB1MCff0U7OqVSpWrhAHDgQsIaGsRg0Szu736xMWHCiF2FgaFwely7AHm6iXw9PS45an08Cj0TKlA03y4jpJKsBatjSW/0luav8Oidu92LWLPdjE6nyPM2fEP/+QxESSmASqQgoU8j8aNTzySEqgVGn3JF+8OPCaKhYuhC7PAmMBfk2CjLaZGCQ21vHxxyClNmFCVq0isrhL2pdfkkKFHIMHh7xP3rR22DvtIarfxi9ckAFH+0kAUqBAELai2bxO8ucHK99l1g4SXQcZQLnzTnMTASspsNxi8BGUNOzZE6T0vPGGFQ3kGTcOKLV//LHf3FmYI0DS5Qrs/E4TE9WWLf3qs0aNWO3afOnSQKUOixZFTzuYEu57w/RO5lu3SbebBDKHKMGaPRLR4g/vTSjldV9KCLE7SNFiAGBhXoRkD9xPixWTN02fpvXqhCI9sUnlhnd+iNkaxfj387S3BkBMDImJAUZJfAJQCkWLkKQk4owhZUqDlLRsWYiNJfny0jJlwtJqJzl75BHIkydw7Mr4Y5nt/HmSlBTIUlYIymgUzgoIIhemKCQ+nt52G6talZYsSRwOsNlACHC5+L59fOVKvm2bxaG8AOD59FNWo4Ya6mJkYdb1IwEiljwKY79YBBddEhdH4+ICP8jkqVOQnnsS3F6r608+IfnzZ3+xoEWL0pyyAAifrPTmws6dc7/9thUDfc/YsSClY9SoHEku80WLjICj61jdukrdugGKz2ydOrn8C6Ar7WDKgw9GQ/Zcycn+L0rl+bNiyxZiVmhJy5SPRPjHYjeOlWlZUpCSJUlS4o0CiDFaLQSWcWL5ctC0wBNYrpZYLVokT5400aOK4n1Fcyz+jTVoFPqjLSVJTGL16/GfFgb6tUuXxIoVrHmLgHpX5sZcmASgefPScuWUJk3UJk1ozZrEZvMdttF1cfy4NnOmMWdOgFj0tQZ67nffZbVr05IlI90RyaN0Pknu1WSmUauoiv2wUqWckycrDRuG5hOdzuzPSYSsOj2G0V6fUvtbb4mTJ7XPPzevBxLCM2YMANg//thiHxmEzttMmzRJZmQQ/yUr9j59Avf62dq29Xz6qQjo5uBtB4uGIBANdwrM5NuPHROBfU0oVZ5sE9HHk/eHUmAMmAJMzfwhRJ45Jw4esPhaSRwOYKrvPslsR7Pk/gNi+w6gzDT8I48f5VssOMd45zDoerhUuZSgKOa1b1Iav/xmmg4SIoo10Mcf21580edzwfn113ErVjjee4/dfTeJifGbtFJVWqyYo3//2MWLHR98QBITzXXI1q3a5Mkh3hkrY02juAI6GnsqOTetg6EFCkR62cviu7Ni69QpZsGCUPbQ5VAKTHIeeOJVSDSQY8gQW69eFm8Zz+efe954Q2ZkRDIByjdu1ANaf9EqVRTTyb6qau/ZU5qKvOhoB1NyLPzjPQ6HDstDhwNXSbMHHgh7+TMAMAVAAueg6yCEdLnkiRPi4EG5fTvftAUOH5ZuF7hc0uCOGdNpjdtN4kCESE3z8TuUkgIFQnCTc27Mnm2rWcvs2U6NBT/KACOab2rlCKcVPaE1a5K4uMAzEcWmjdLtInZbwFclAcAAonRutnPoUFKwoHvAgMxHid3uGDnS9swzwZYqk8RE+5tv0mrV3D17Bk5IEQDt889t3buH0JOQFS9uGg+Ve/eChVHnOei6ThRFBt6FU6fkpUuRmcAgz54VpgNB4+OtRXZzDodDeeABW69e6n33hThgk1PlTVJC+Ae1kpgYx0cfgRDa2LGQ1VyYOH06fOYXnkmTwL8okQC2Z58FCw8xpUkTVr682LULor4dTMnBEiCQnK9cadIAX6Z0aBRD4LuOC7FmhbFsmdh3QK5fLw4eAJc7czL8TUF+T5+XnQsXgsMeaKsIlfv2+RgfKCXExYZkd4y536s9epCSJf1KMaaIk8f0qVOttwyQihVIwYJhyzFJUro0rVePB/TCkqlH5PZ/ye21AsTJJER3paTd7njrLaIoroEDia4rjRrZ2rfPcqOW2qwZiY/PaNUq8DRKmZamT55sHzAglBEgsyIzYWFQfE4KoBIlIG9eOHIkcKeYvHAhQgLozBkwfet1OHJk7pt5gY43gfvww2rbtqx8+ewONPQXhw7T6m4qrSLiUExiY50jRogDBwyz0UD+cmEyNTVMeWe+caM+c2agGFZKisWkFS1ZUm3d2v3RRwGGe2a2gzVuDGHoYIVoSIGZrFKEgK6bjulRn+sKdkfYBRAh+sQv9TcH8C+/FJs2wdlz4HaDpvm81MSatfr06UCVgDcV4Ut/v3lQFClYkITo6Sb37tUnTgQhfMdUCQEgxthxYuWqIF7676pDCxQMl9224DRfPlq7tsmvnTxpWhaWK7D36+d87z0JQIoXJ9nr+VTuucf+5pvSwtgHCF35CC1VynSRM9atizZv+xs6VkzTSXzfvoiZ8PLdu73VeIF0RsmS1ELS04pksfJjdZBZt26ZCdx33mGVKmVF/TBGAmZ/CIA4flyEJxIjA7ohEEpJxMa5qKpz0iTl0UetRmX85cJCHv4ZNizAq7IEUFu0MJ3lcnUvO3ZkxYqZON8uWmQENkbJ3SkwYSKA5PkLYr3JrGlauRIQmi3fZAtCGxSVFCxotRXZ7dbfHkSrVWX1G3hNbq7TZ4wBULFvrzHxS3LT9UTvuiNkbvFS6p9/Tu+8U2neAhi7uhmEAFUAwPhigvbJp0HowPh4Vq+OBBIuuSmlpJSWKwsKA8PvCRWaJnbukt4d8bMl3qFgJMqNZSm19+sHhkEKFsx+rYztqaf0r78OPJtd7N/P9+xhVaqEZPOZVwAZgVK9fM0a0PXoTdkwxipX5mvXQsDCT75qFbv99ghsjtiyRVy8aDJctnDh7F4tiuIcM4ZWrmzpYTZwIA/Y9eO93ewDBtDszfmiKSmQkADHjgV+tIbF4cYwxKlTgW9VEsF5drRQoZipUzM6dDB+/jlK+sL41q3G778HNrmWFy5oU6YEfiBcp3fNigily+V+7724hx/OwQkqSs5FgKj4Z5tJw2dMDCmQHyLS3UXLlgXVBrolqy556pS7WXP752NYvXqkWHGglFx560q/JLZu0fq9LjZt8llEBooSspfmc+c9HZ+RH7ynPPIoKVGcMNV72MXO7cYXE/XRY4J6mpCKFWiDhuEutyIVK5ACBaX/5yABEP/+Ky+cIwkJAYO9EoDkAie0t94KyekmhQsrzZoZf/8dyAL43Dlx8GCoBBApWJCWKhV4IKI8ckRfvFg1m3OSkxLozjth2rTAml773/9szz8f7sSTvHiR//WXyTG32Uj2Tx8h7M47LUq6mC+/vHT33SZDGC5edL/9dszEidlKe9ls5n/uJ+geghIf03swsv2MJCkpZubMS/fdxzdtItZyYdIwHB9+GJaXDc71adPk0aMm79szZ+ozZ1p9Pbb2dsrXr9dmzjQ3kboVnaCJ3LEz8GXH7q5PSpWMQNuzBMmaNGGlSohdu63+zdmznnZP09tuo/Xqkjx5iN0OAFLXxe7dfOFCSM/ws4ylAGGh9DS6cEF74SVj7DjasAEtXBgIESdO8p9/kQf2B71UtGhB8uQNs92ApMWKQd68gV8Exa5dcOoUJOQNEPnLDfInxK1S7I47aEJCgGC+TE8PZTZHVVmDBoEFEAihz5ypNm0atX7QSsOG5nGsVav4v/+y6tXDuiVi61b9r78CHyZSoID1LENIKlpo2bKODz90Pf984EexMXeu0bKl0qxZdqJxpjeCPH4cLl4M/ZFPT5enTkXbBUry5Yv5+uuMp5/mGzZY2TZt/Hh57Bj1Vl+FVK7x7du1r7/Orj9nVn9ZmzBBfewxEoq0bxQJIGHhDuRmc49JhQokMX/YJ8ADADdIseLk9tvBugDy7ubmzWLzZnmTVVCA4GdYjvaOHWLHDmlhAwKN8nmuS9gPteCkUGGaL1/gr5G794hTp1iZciY9htG35oqDB41fflHbtiVh8HMj+fJBTEwgm3nOZeBQf5CBBKVhQ23iRGJWeMTXr2d33BG5g3zyJGRkWDQ9ouXL0xo1TIbtuN3a2LHOrLp4W8TzxRemczlY+fKsatXsnjfGzMdlXBuaad/eWLJEmzUrUHDx/Hn3oEExt9+e5UQYTUyk8fHCdHZbOFqjL10K5X0ROljFirEzZ6a3bSs2b7by+/r8+SQ2NuRVd8aCBSbhn7CuvX//bfzwg5pDQaCctPGQ//xj4jMbHw+ERsgZgkjb4EFZG1BCrvkxIZym+5Y2wN/bfp+XSMFkkCLs7aaKQmrebpqzlwGno0SnHaI8ccLVsaOrZ08e0AQsvC4pIS2hYLVq0eRkUzni+ewzq5UBIVESH36Y3qKF2LPHYhzL1rq1+dIyd65h1pCRzae8PmuW+fvoI4/kgBOgzeYYNMg08sQ3bvS8917Wn8aMmT79ZEaGMHsrzsp9c+6cic1Pzvl50ooVY774wnoFkkxPD+2CKNPStDFjcvK5qeueSZMCt7jmRgEkTJICF8/LU6cDP7lISkrkXvI5p+UrqD17hPVBA7FRMQHuRuVUuZLS9smISQpWrpz51bPtX5A8UGJFRpcGkufOuXr3NpYvl0KYpI2yvvJ7AusMwlhoazlZqVLqAw9IM9lt/O9/gecHhfKxsm+fMX8+37zZ1aOHxXyf8tBDpGBBk9N3+rT26afSLEKT5bG17kGDzLVpQoLaokVobP0sW39diZM53nnHtApKmzxZnzMnW64EptfSihUhf+MVBw6IgJcKSUkhOWfpye68M2batBDbuFt/qIwdK3Iu/JO59v71lxHQGyX3CSCzKWBM7N0XWPTRxER6220RXeIoUd94gzZ+IFwfX65smFJg2d3rnj1JsRKRSDV63YCqVzcthxT//hN4sZeWjDYjp57dH3ygzZ17pYg7LF+ybZsIOEmNxMaSpCQIreXdY4+ZOhhJt9v16quGWTNRaF4XZ8wQhw8TAGPxYs+wYZYWmMqVlWbNpIVZ3NrEiWFZY0aONH791fTX1McfDyp1FdpAoNqmjfrss2AWmnUPGpTlIA2z0JimL1gQ8kYw48cfTUqvUlJy1tNceeABxxdf0Ah2ol2pttSnT4+GJ6j7nXfk+fP/oRSYTE2FgDtM8uenZctGdAYq5yQxyT50KAnVY+gGSpSAfHmjLXfDWrZUnn0WQEQo1SgFrVLF1PxK7t6di+ZMaSNHap9+esX1S//tN2k2STQLRibGvHmBjwnJl4+VLh3a71WbN1fuustKIN31/PPcV+djCOsK9cmTPcOGXTkInk8+MebPtzi0gebLZ65i33xT//HHECu2WbO0jz82TxHGxNieew5y0FKZEMeAAaxGDdPCTfeAAeB2Z+VRU62aeR30wYOahVxhUCke/YcfzF5Ny+W4+aTauLFj9GiI5BQUzrWJE02ChU4nSU4mhQpl/Sc52TT+6i1j1cJchBfZLjBpfl3KDLMe+MTESNuscZ3WuN0+fpzW/w3x998h/vDjxyE9A/IlQdRAq1e3ffQhcTotTXgN1VTU+DhSorj8J1CYROzeAy53jk1GDOr9cskS9/vvXx+++jejXTv7e++FcEySPm+esXSpyYtsqVK0fHkIdd7W9sorxh9/WHmbzGjd2vHJJyHJ49xcgKKNH6998cWNAYmBA2Nuv52aTe1Q7r5badbM/GVX01zPPQcTJ6rZaXe69qzNnu3q2VNaMPdT27SJjBdRoKdBsWL2d97J6NgxwKspAdDnzdO++MLnwDsTAVSzJjidprPuteHDlfvvpwFt9KzjGT1aBuw5lQCsevVoaGNUH3/ceeqU+/XXIxML4Tt2mGhNVXWOHUsrVszWKkwIGIarZ08RsOQXALTp09X27SMcBlPC5HgX2ASIAMijR6XBA110CgObLVJ5mes0EHugseP78p433uQzQ/kuIjZvNpYtV59uH/Rf5smjduxAKlQAKUBImZoq09Lk8ePy2DGx/wC4XJkjO4IM4dBSpezjx9FyFcLc+u6jAowWL84DCiCQku/fx2rWCqDMJEiS051gYtcud9++8qbMlPHXX7xNG1vHjrZXXqGFC2dXY/3xh/u118wfoI88Eo5Ivtq0qdqypf799+ZHY88e17PPin/+sfXpE6qJnvLsWc9HH+lff81TU28+2ca2bdqYMY6hQ00/xzFwoPHbb9Jsdoc8ccL17LNyxAhb+/bZ2m5N8wwf7vnoIyt1RaRIEftLL2XTLjw05/qRR9R27fTx400SYe++q9x7L61WLdgxeeyOO7iZmObbtrnffts5Zkz2LyFjyRLdwuAtVrNmlLxN2bp1k1J6Xn1VmsnEEKhzM+8ftW1bW+fOIfkux3vvZTz5ZODkptixQ//6a/srr/w3fIAyMgIv2IQyCJ8rsZkGIsVKOKZP16tU0UePCfwCEczHCu3Fl2jJkqz+3dY1B23QwD5mDK1e7dpmcpASOAchQAh56pQ4cEDsPwD79vHduyH1iDyTJi+lQ/olee685L5VJq1a1T5mNK1bL9Lqx2sSWqKkuZFJGBxBQoymud95x1/Plzx1yjNsmD53rv3ll5VHH6WlSmXxIf7bb66uXU2s6gBIUpLtqafCN8ja2LBBWpiYLc+edQ8YoC9caO/bV7nvPmKaeArg3rtzp7FkiWfUKLFvnz9/ByKlNmmS2rIlq1vX1PDGOXRoxnPPmc5jl6dPuzp25GvX2vv2zVppKl+3zvPxx/rcuRZ/3/7qq6a5p4jdm84PP+TLlweuY5NpaRnPPx+7cGFw55cxtVkzUwEEUupTpxJdt7//ftZLg4XQ5893v/qqOH3aZKOqV6cW2jIihr17d8KYq3v3sGY/xL59N8ZTbypBsffvHzKd8eijtqef9kydSgKn5KZOVdu0CVXwL1oFEKXS0MXp0yYv75HMhl6bNSck858ps73xJqlUSevQUYZqQs2ZM542T9q+maU0aARCN00Usvvvs0+cSEqVvk6meLfwctKaFC/OSpRkjQgAeB3F5dFUefKkPHVKHk6VJ0+K1FR56JA8cUIeOw6aRpKT6f33qc93pRUq5YD6kRIYoyWKm+anxaHDLLrNDrUZM0ybYsT+/a4XX2Sff648/rj64IOsbl3reT2xc6c+ZYpn4kTTHlEJYO/Zk2Q71BSgSMLxwQeu7t0tDs3mK1dmrFypNGmiNm+u3H9/UIk5cegQ/+svY9Ei4+efhZns804YdX/wQayF2h2lVSvbypVa4PDG5atUGz2a//GH+vTTatu21Kx96cpFayxdavz0kz5zpum6e3WrWrSw9+oVPSPTSb58zqFDM9q2DfzQ46tXe957z/Hxx0HlqZUmTeD99+HsWfOba+ZMvmmT2qWL+tBDtFKloAM/332nf/WV6XNbAij332/q9RDpOFDXrnzvXu2TT8I4+H3kyACJNglg79aNVawYsotKVW29eukLFwaehSe2bTO+/z4L2dVoE0BmC7uhm77fBxtftT73FAi5qfpbAOeg62AY0u0WJ0/K3bvlps185Sp55owMaVeCPHpUa/0k+e5bVr9BYP1Bq1W1T55Mipe48dduiIpJeUOpOElJISlFr2YbQcpzZ+HSJXnhInCDxCeQkiUAaA6onyuNZ8WLmeukixfMfyfnBJLYu9f95psW/W/4jh38ww/1iRNJiRJKw4bKPfewWrVIUhIwBoxdXdIMA4SQ6el8zRr9hx+MX3/1Bj/MX62rVrWZtvBk86H85JPin388H30UxDr066/Gr7/S0qVp2bJKgwZKgwa0XDmSmHhdD6AQUgg4e5Zv3GisWcPXrBEHD4r9+6WmkaC+6I8/TCuuSEyM46OP+M6dPODYo2sHJPH+/bXJk5UGDdQWLVj9+iQ2FhQlM894OQorT5/mmzYZy5YZK1aI7duDcjRh9es7P/ssuFlI4U+OKA8+qHbq5BkzhphZO7IGDdSWLYPY37Jl1ebNtcCRgCvH/59/eN++2ujRrEYN5a672B13kORkUqqU1/EBKPXOuJBCgJRi2zaZmmqsXGmsWCF277ZokUCTk9W2bYMY8WGakQiRPHW++y6R0mMht5sFC2a+dWvgjDYrVUrt3Dm0+XRWu7baoYNm1rnpGTVKfeaZcBjJRrAGyIpTu5m2JUUKZzecQ6lX6JBrt0rzyPR0ef4cnDolL10Ct0eeSRNHjomdO+SWreKffzIHx3irasLmmOd+rIXjh/kBcmG0fDn71Kk+1I+1N9ErQyS8U0VJ3ryQN9/VihlhhHvml8n5KV7c1NBdbN8BUYsQ7vfflxbiE9f90alTcOoUX7/eM2oUKAotUICWKkVLlQKn02tyKPbtkydO8IMHISMjiMvPbne8+27YfUQUxfHee/LiRW3s2KAS02LfPrFvn/Hbb6Ao3hGJtEQJUFXvh8gjR2RamhQCDOPaXSZBPWoMwzNoEFu40LRqhOTNGzNxYnqrVnzzZmK5zEvbtUubOhViYljx4rRSpUyvgfR0vm8fnD7NDx0CXc/C44KWLu0YMiTYgL/Yu5eEf2K5/c03jRUrxMaNgaWY+9VXWdWqQaSQ7HZ7797Gzz9bv3fE/v1i/379+++90pMwBgCkaFGSPz8I4b1+AEB6r58gQyZq+/bKnXdafW6fPy+PHiWBxYfLBQ5HaNwphwwBxjxDhljfKWkY5p7O3slfAdtU1XbtWBhaoe19++rTpsmAwVFvbs7er9+tmwIjVF66ZB7cDvCQvVZlX8lYXRfUkaB5ZFqavHhRHk4Ve/bA0aNS08DjkWfPylOnRWqq3LUTXG7IKc6ccbd50jHnm6txoGvkNilY0DZuHK1ZKzRBGu+rajRB4hNI3rwmb2lmt30OGgEZ69YZZr21JgqVc5GaKlJTIZsGxIw53nsvqLfwbH3XkCEQE6ONGJEVsxbDAMOQHg+3nB4y2Zy77lLuvpvEx3vzqvLUKStls7RMmZivv8545hmxbl1wp+ziRf7PP9ysmcWq+ilZ0jl9ulK/fjhe8UOweYULO959N+Pxx00KV/ftc/fr55w6leTNa91e3Na9u+edd7Jy/VyWvHL3bti9O7v7WLmy49VXgzjwhiED9v9LzsW+faxWrVCdBcf770vOtU8/DULYeTzmzV+BJ3/lzWvr0iUsF1VKiq1jR8/w4YF/Tf/mG1uXLpGZDqbklPs1mM588YYlmXpT68/l8IyuS4ODxy3T0uT5C+LAATh0iK9aBWlnJDfAMCAjQ7o9cP68PH1aBvlmGQmOHvW0e9rx4w+0eg1vB01mPiUhwfblRHbffSAMuEUhcXGkQP5QTu6McABo+3Z27700f34AEKdPi02bxMGDkRwHcfVF8eWXI9k3QWJinO+9R1NS3AMH5mCVOilc2DFggNKixXVNs5ZVPqtUKXbePFfXrsbChTmy/axRI+fIkVksfI6U7lcffVTt3FkPWCrrtS6kn33mePvtICIBr78utmyx0lcYRoVXsqTziy9IsM60phmu0D4EKHW+9x4BCCIXZraF+tSpgaNESqNGNNR2YlcvqhYtPKNHB1bVfNu2iE0HU3JmDvyFC/KISaROnjwpjx6Vhw9Kjwc8GmgaZGSI48fl6dNi/3554KDYsAEEBwkgxNWuKP+N91GIPHzY06OHY/58kr8gXLwEUkJCgv3zsUqzx0AYICXcmghIiCfVq5Pz5yHDJTMyvFVWJIce9FmRHe3b2zp2zAzaCQGaZqxa5Rk7li9eHDk/09hYx6BB9ldfjbSFic1mf+klVqWKe+BAvnp1RO8XAFqokPL444633qJFivh+ZbL8Mho7f7578GDts8/ExYskgkdP7dDBOWxYlqscuJWysBBdEo433uDLl5uMdhFC++QTpXp1xbL/E3E6HWPGSLfb+PnnnBHQJUo4xo4NOvzmTdRGWJ56c2GKoo0ZY2lUS8AIEP/7b89nn5l8YfPmYTzy5cqxmjX5mjUQ2EJi4kQlIiPiIy6AvHfmxYvy6BEToTrhS75osdiwUXIetQomBFpg5WrtzbfsY8eCEKRgQduokcqTbTKLmkm07jSlmdXVWb4I8ue3jRguD6fC2TMy7Yw8ehQuXRInT8LZs+LESXn6NJw6ReJifRyEKFFF1/rGUgoOh3Lvvcq99xo//+wZNsxYsiTsZ6B8ecdHH6mPP56D5v0x1at7hg3TJ06UFpp6QnLMbR062Lp0yUrayF9V0/vvszvu8AwZwletioB6YxUq2F97LVvl6lKam4xLGSoXGVqypK13b/crrwReVuWlS65XX42pWNF63xBNSXFOmeIZPNgzfnyEH3Osfn3H0KFKvXpB/2V6euAmJm9em4Vhmx0ffAAA7g8/ND1W4vhxkNLn2pE5ky6gDYQEgKSk8Mb+LfTc8ZUrPR984Pjkk3CPKFEiKn2EkKmpfM9esW4trVkTCBXbtvkN21y8IP7eAKpKwmcHLCUYRs7pDAlcgBDG5CkkKT+7/z773O9Y3TqZBZWB4/mMAaEhnqphMXhLqTicKtNOZ0uUEiBMIYoChZJJ4cJwW3UQkl66BC6XvHQJ0tPlxYu0aFF56QLoBkgBQgBjxGbzFtJGrTRUHn6Y3XmnPnu2+8MP5ZEjEJ4CVVunTvZ+/XLcvIQWLOgcMsTWurX2xRfarFlh7E5yOpWHH7b36qU0aBBcw5TlWR/aV195RowImeMX+PAytT//vP3552nZstmcuWuYajXD4OvXK/feGxq5UKMGSUiQp06Zlma72rRxDBumNG5s9fopVMg5ciRr2NDzzjvhGALvs8Pf9uKLtu7ds9b3Ls+eFYHVpxB85041TLdbcjIxf6wC37FDnDjhcwc9I0aYzqQjAPqMGWrTpmGaDSJPnxbWirc8I0eCw+F4992gIrvBZ6PC8EotpBD+HJy9S7sQEgCEIA4HqDYQl9d7b3dYZCp2KZUXL4rdu3NmDB4hIKU8fFimnfHWNJDixfjMWfzvDeBxQ3pG4BEttEgKJOUPbVtTZgccWCsIDUckxlvPTmnmP0hJ4uNJQjzkyUPi40mFCuz++2mZ0qRMGRIX590AhakQlci0NM+YMfrXX4udO2WI4pe0aFFWt66tZ88QTtiA0A1q1aZMMX7+WezZI3WdhCJeQmw2VrEia9zY1qkTq1w53PepOHJEmzbN+OYbvnNnUE34gXZBUWjFispDD9m7d8/+oFOxa5fn7be12bOtmLw73n1XbdMmm8Nk5IkTGS+9ZMyZY/F+JzExtpdftvfpQ/IH8XSSFy/q06drX34p9u4NeTpSAhBVpWXLKg8/bHv2WValCmTJ8lQbP9747Tf9p5/Mj/yIEeqjj4Z22RaHD2c8/jhfv96S22TLlvYPPmDXmm/punvwYM9HH1k8j/YXXrB/+CGJiwvxLbZzp/v113Ur8/uusSa3Dx1qZYxuLhFAAEAZnD+njRkrd+6EggVpiRIkJYUkFwIJJCWFJCWSvInekvqw5zsIAUJzLPwD5MrKqI8YLo8cISVL6oPfyb2lwSEWqA0b2l59lRQqSIoWIcnJQJXMEngpr1wYUSuArnj6GQsXGqtW8bVr+Y4dJGtXSXy8UqeO0qCB8sgj0ePZ709DGEuX8hUr+Nq1fOtWaRgkC/vLGKtZk9Wrx+64Q3344cg0g1xrq6j//DNfs8ZYvJhv306yagKiVK/OatdmDRsqDz1Eg6209ee8MHDgzUkQ6T/BF796dTY7krTRozNefJEEufu29u2dI0YEpYEyx/0uW2b8+afYvJlv3ixOnCDZVp+sWjV2552sfn3lvvt8FI1Z1/dr16bff7+w5gLKiheP/eOPLDu/+8Q9eLA7mL459dFHYxcsuPJ/jVWrMpo1E8GsLDGjRoXWkFCmpWV06mQsWSIv9z8Ra2uk2q1bzOefh+n9JycEEFPF9n/c990vj5+4OvfU28uaJ4HExJCKlZQWzZVWj+dMbCbCxTSE6p99pvV/Q2n7pH3yFP7Tj56uz4cxFJ8jsS6v3R9jtFRJUqgQKVUKOOffzwtcL2wbNUJ9sU9m0bTwMayeAGFMyQVHwDDE4cPi4EGxcSPfvJlv3SoOHpSXLmUmf6/kYa+k9hgjMTG0Rg1WsSK74w5WowYtXjzCOiC7T4DUVHnsmNi9m2/ZYqxZI3btkmlpV/fXG0G8ssuUkthYWqUKq1aN1a3LKlQgRYpEeCaib/uZ1FSxebOxejXfuFEePiw9nkzxfSVZ7LXjAyCKAvny0aJFWe3arEYNWrEiLVGCFi0ayieYlOLIEbF9u9i167rRwvnzE59LuxDsttusd6f7Xvi3bOHLlgGlQKlMSxOHD2fehpTKjAyxbx9oGilQgBYrBkIAIaRoUXbbbbRIEVqpUpZHm8mzZ8XRo/LYMb5li9i3j2/fLs+elYcOQUaG9OnowRghBBSFlChBEhJYhQokJUW56y6SnEwKF6ZFi4ZEFoudO6XFIgFFYdWrk5BOMhC7dolgXMdIXNy1s3Xl6dMiNVVab9uUkqakZDNde+NHZmSIQ4fA7fZuhjxyRJ4+HbiYgZYtS/LmJYmJtGzZMJU95JAA2rLZ/eCD8sTJAHE8+9ezlNZtcs6tOCLqR0h97Fjt5b4ghPLcc/YJ44Aqxnffejp2goyMXLETmfkdRSGxsRATA/HxxOkgCQmQXJikFKbFipGCBUnJErRIEZKcnJnhsjnEP9vcDzaWxwLd0rYvxqtduwW4AHKNALqp7ExyLk+fziwSEoJv3QoxMaxkSVBVUBRaujRxOkFRwpSGj7z+A84zl08AmZ4uDhwAXQdVpWXKkJgYWqQIJCaSqN1fKUHXJefeIcQgJd+2zasDSNGiNCkJCKFVq2Z6E6sq/Ee4ImQpDWuVBhgGSCm93+V2i337QNczl0MpQVVpiRLeuUmZpyCKawSRaEPJsahA4GuUc7FpE7Ruc4urnzFjtDffuloGLiUIQ2nVGk6e0t54Q56/EIUbTpKSSGIiFChAChQgefPQ4sUhPp4ULEDyF4DEfKRQMsmbhyTm9+HedEVqEwJSmhRwM5bjMYBwXfmqSlSVFC0Kl99NTQd55vJnjAKKQlJSWC49oYSAzUYASLlyUK7crX++rB+WyAhWRfEOkwIAcDpDaDOIIGG5gkko/JrEnr237FFnDAD0sWO0N9/yEekRXOneA0Bqr/STpnaREchYFStOCieTwoVp2bKQJw+JiyUxMRAbC7FxxOkgNsf1hQgSQIYgbkcp5M8f4jY3BEEQBMnZCBDJk0AKp8hjxwP9UmoqSAG3pPpJz9AGDdKHj/Bd5S0FgFR69BJHj+kffghChj5jZbORuDhwOiE+jsTEkNjYQBmrzIGd9HplK71TVmWYcpSM0VKlbs0LAEEQBLl1BRAxWYUVBRx2k6U6/ZI8e4YkJkbbHKtsQRmkZ2j9++tjP79R/VwbEpMShGEbNAg8Hv3TYdnphiPJySQpEZKSSIGCJF8+WjgZEhNJ/iRSsBDky0cKFiBJSSQuIVDGyqvJREi1iDQzO5CSxMQE3nGCmX4EQRAkl9UAWbD0lWfPycOpJDH/lcHmubDDi90YMtEN7fXX9XHjb959eSQVuACFXT0+CrO9/x5JStI/+EBevOT3W7ylfwqjFSuS/AVIsaKkSBGSnExLlYKEeBIfT2JiICYG4uKI00mYemPGSorIV5rLCxfkmUD2waRs2fBWViIIgiAogHIAu4PkMevPzMiQIZoanQMwFTwusXkL37wZKKVlStMyZSA+QR80SB/7uT+LTBAcgF3nN6iq6uv9SZnS2uv9weOB+PjMjFXJUqRgflqiJElOJkWL0KJFSVKSt1s1Uw8RdlPuK5wZq1APqCf58pq3EGMACEEQBImuImhCCBC/fT5SkNgYkj/JzB70gjx+HHJnnkseO6a9M9iY/tWVoffskaZKp07G7DnBVYULASCUJ1rT6tXk+Yt+MlbXeQNe+atoPkIm5V8AtFhxCxEgVEAIgiBItEWAAszKFILYHKRw4cAjAqSmyxMnSK5rBKIUuKH162fMnHndv77zTlq9GsmTIIPxs8rE0AEoLVOaJOYHyXO/N5I0n5OVkGDaJ0hQACEIgiBZXq5zSiWYW5RKKU+dymX6hxAAon388XXqR1HUnj1sAweQ/PnB7sja4dInTnS3bCV27bwptwW5zz6EG2L7DpM9rlAemBIts98RBEEQFEAhagMDUrAgocQkhHT8hNS13DQQgyp80W/GsBHX/jul9RO2oUOBUJKYBFkYL+e1DTx3ni9f7unUSaxfCyyXu81yLlMPm+x0kSKY4UIQBEFyYwTI5JNJ4cIkPiHw78jDh+S5c7nG15ypYs8e7ZV+8ty5q//u4YdsI4ZDbCxwA4CQAlka4c6FPHqEAIhVqz1PtxfLluVuDWQYfMsWk8sjpbC5xkaBhCAIguSyFBgAKVUSzOY7yjNnICMjd0QCKJPnznp69xLbtl2rfuwzZ5BChYFnTtEjxYpl5cMFl2fPXp6Kt9vTubNY9ntu1UCEiEOH4NTpgD6ZeUhMrGmIEfUPgiAIEn0psMCrkzRoseIkn0kZkDx0SJ47lwtWOkrBMLT33xe//nZV/Tza1D55MsmXdG3NMi1aJEsCSMhDh66dU+3u3IUv+hWYmvvG/hEmtm4FPWAdd0phkifBQpIVJRCCIAgSdQKIBp4XD/EJtGw5EwF07ry8eDEXVPUSZkybZowZe13sZ9Ikklz4xo6tLKTApARVZU0fubYWSu7f73mqvTFrBlAFCM1d1xxfvSZwdTMtnALxCYHr30lu22sEQRAEU2CX17CK5c2rZQ8ezAWFz0sWa/3fAI/nusxXweSb+tUlLV8BVDULg7Hs48bav5pOSpS41jhR697TmPEVUJZr4kCEgK7LVatNfqt4MZI3Dw4CQxAEQXKlAKJmaTBav4Gp2R3/+28QRvQeP6aIXTs9vV+QaWkBMl9Xu98s2Nv4DgIRojz1tOPb2bRe/Wu8Ii9qvV8wZs0EquQODUSZ2LVDHjsWuEOQFitGbI7A08cw+4UgCIJEawTIJAvG2R21IMGk1IP/ugg0LUpXd6bIC+e1116TOzJdbdTnu9qnTPOR+bpcysNKlMhiV7+UwHV6x12OOV+zjh2u/uvz57UePS9roOjPChGxZas4HkgAEYWR4sWlWQMYpsAQBEGQKBVApm3KJDaWVqtmsu7v3i127Y7GpZ1SMLg++B0+/wfv/1V79rCNHUvy5w/k1GyzQf78Wf9SrpMixRyTvrR98D7Ex18ZLKp175ELcmGEAOdi9Wrp9gT6rYKFiNlV8R+M/8gjR8Q1hfBRtGEZGWLHjghbVoqdO+X58/j4RhAEonQYqukqpaqswd1i+fJAv6Pr/LffaPXbomsmPAEgTP9ynP75uMvqp7vt4yHAmMmcCkppkRSRmpodDQSUqm++RcqW0QYNljt2XsmFAaXKU0+DMKLUQJkymXqYr1oV+LogBQuyKpVAcrw5r673Bw5ktG6tNGnieP/9qNu2ffsynnjC3revrUsXC+PbIPsumvrUqZ7hwx2ff640anQLnWMhT54U+/eDlCCEPH2aJCYCY+B00pQUkpyMd8ENh0vs2CEOHJBnz8q0tEyXkLg4mj8/OBy0WDFSrBjNmucIggIoVBEgQoj0txhLCVRh9zTSP/jQ5Im3eIn6ar8oW8tV/vtS7Y03vYXPavduto+HQGxM4Ann3rEYpFRpWLM2u6PUhaG0aUvLlff07i1WrrqSCwMA5amnQfCorCAm4sgRsWmzyS8VKwpxeQLryGjIf4kdO4xly8JqUy7T0sSxY/LoUb5lC9+1S3300av/6dIlfdasQIYTUgKlts6dsyBKZEaGPm0aZGRAnjw3DNkl8fG0XDnQdZInD61SxavpZVqa+9VXtUmTWLlykJgYuHgr6+HD9HSxd690ucTWrRAbC4pyuVf0nPHjj/LSJWBMpqXd/HYhjxy5UqJ37Z1IS5eGmJgbtpYWLUqSkrxVd6x4cUhMBMZo8eIkT56stC8EHvVz6ZJYt85YvtzYuFEePw6XLskzZzL/U3o6cTqBUlBVkpAACQnsttuUhg2VJk1IYmLWAr1882Zt8mRit9MKFXyfI12nFSoo990XvYFkw+D//GPMm6cvXChPnZJnzkiXCzRNXk2gK0RRSN68kDcvSUpid9yhPvggq1OHJCSEQ53ztWu1L74gMTG0SpVAjwKPR3nkEVqqVJa/SJs6lf/5Jy1ViqSk+F5lNE15/HFauHAOnhx59qz+00+Qnm7yVOScliypNGkSDZeZAmEPlQRsZi5dilSoIHfuDBzuFjv+pRUrXbEThJx3fN6l9ekD585BbKzatYvtk09AUS1tHqWkQIGQPD1BGPT2mo4fftC6djW+n3clFwZCKO07gJDRFwcSfOFCEwcgANawQbbr6yNz6yju/v2vdf2OqJa02bTp0/mKFYGOZL16tmeeycJznzidIi3N/e675OaTRQgoClDqHDvW5hVAAKAo8vRpvnYtX7s2QrufJ8+1W6v/9JP+zTdBf8rvv5t2X2Y+yhlj1aqpzZqpLVvSqlWze++eOmUsW2bMnasvWyZPngTD93NDXrp0vXnEau2LL0jevGrTpkrbtkr9+iRfvuAOWlyc8fvvYuvWzOk64CNB7xgxQrn//uiUPsaqVZ7Bg40//7z5GUKu+TVpGPL4cTh+HAD4ihXa6NEQE6Pee6/yxBNK/fq0VKlQrrt2u/btt/LChcCfyGrUUB55JFsXfEKC/t138vx5f+eO5MsX27Ah5KwAEkKbNIn/8QeYZX4cn3yiPPTQrd8Gb7JQSU6LFGN16wReqOXx42LDxmgZfMAUefaM9vIrYstWsNttA96yDR8BjFlSP1ICZaRk8VC9QQLXSVKSfcYM29sDwOmM6r4wSiA93Zj3g+mSw5o8BCAg6ouAaNmy9rffjuhBvvbBZ7M5x4whZcv67aSrWNHx8cdZDFoQYu/Tx9aune+4ha7bunSxdewYLZeW3e4YOtS0mjBr6TbQddB1cLv5unXut99Ob9JEGzpUejxZfkXWRo7MeOKJjNatta+/lkeP+lM/foNGZ89qM2dmNGuW0a6dsWBBUC85tEwZ55gxkJDg76+U+++3PftsFIofsXev68UXM5o0MZYuNX2D8nESL17Uf/gho2PHjKZNXd2763PmiBC5q7DbbrP36WN6N9l69MhO+AcA1Mcfd7z7rrzhIXDN/a40b87KlcvhR2JSknLffdJsDKjasmX0XGY0/BGgQHlcsDtYzZoma4jbzf/4Q2qenJ+KSigIob37Lv/xRwBQu3ZV+7wMIIOJ+RMa2nQ+NyDGqQ4ebJswHvLkid6+MKLwVavkP/+YXI6VK9GyZQIfTxo1w3GVRx8l2SlpD7bq7PrvYjVqqPfe6+9xY3v8caVBg6x/XVyc2qKFzzuOqKqtc+cQ54Oy+RQrVuza/GAYV+KjR12vv+56/vksGLTq8+alN2nievllI3DVo8WAyK+/Zjz9tOu55+SJE0FcsQ0bsttu87vKNm1KHI5oUz98y5aMJ57Qxo2TLlc27yC+c6fniy9cnTqlP/hgepMmrh49tC+/5Js2ZSdYzqpVMzlojEFsbAjE1r33+ov5kTx51Mcfhyg4d/auXVnFiqaqkVzu4LnFBRAhhJi6Ad17r+mELPHbIrl/HxAGOdvERJk+caIxchQQovbsYRsxDBy2YCseSEpK6N9TAdQOHR0LFtBqVaO2L8yYMdO0Roo1fcT0No6eIagkPp76icGEI+MGeW8cHUOLFAkQF8nuoyElxWf6jCQlheSBHuIHWQSD//r06Z433wRNsx74cQ8YkNGqFV+3LoSbIS9e1CZPTm/UKKiP9bs+qSq7445oO63G8uXpjz7KN20KZU2GyyV27TJ++00bP97VtatnyJDsSCsSE0NstoBjnwyxe3cIChLsdurHNYYWKcLuuisazpe8dMn0vuBr1tyQ3v2POkF7y0JopUq0kolmFAcP8j//ClxOFAnH56VL9MGDgYDas4dt6FBginnVs48bJhbiYkPeEwHCYA0a2GfPZs0ejbpcGFPE/n38rxWmEpM1qA+EmTwsoiq1l1MpsND+sr+LKnwfHvLzkJQUya/TJk40li61dB5OnHB16eL54IOw1IYD8J07Mx5/XF+wIHIXRsQWhyNH3H37isOHw/gdqsruuYfExGT55dNYulRcuGAi437/PbO8PXuvW/6aAWlcHL2mKi4nBeuiRYF7nAmAsWKF2LMHbv02+MzaD8oDtDRLCUxlLVrw3xaZvHV9/Y3yTEdgLGduYKaKvXu1F16Ux0+oPbrbhljr+fJJTAxJSJCX0kO/OnKdVqpsnzZFG/yOMXpstPSFEQJA+Ny54uBBkwb46tVo9epmI8BI9ESAQAasNFeClp5EUW4oKgTOM8tEIn7Z03LlCGMyqJILb9UwpeT63JmUEjgH7+4EuE4Yy6zxpJTcFHyS3k/wUzRDihaV/jLulAZXCe79osBn3uPxDBmiPPAAKErAaYbnXF266D/9ZPHokZgYUqIEiYvztqGJ1FR56hSYlRyJ1FRX585kxgwrhaURVorZwT1oEP/770C3kM1GihZlFSrQokWvXDny4kWxd6/Yu1eeP29aMESLF1cffDDrEu3gQf3774lp6m3NGr51q3LPPdl9kPq7jB2O7Ed8Q9MF9t13phEgmZZm/PILq1HjPyGACKEmFj6SK61b6wMGBtbI4s8/xdat9PaaOeAQQxmkX9T69hX//qv27GEbNdJqz5dvIR9HCiXLo8fCsqlcJ/ny24cNo5Uq6W8PlqdO5XxfGKXy5HHj+++JWb2n0rgxKVYcBM81M1BtNm/tuY/tTEy0f/SRUrNmECqZEFq16rWaSZ49Kw8eNFav1qZN45s3+/io/Pn9dvRkn/h4SwJOCHnpEk1JUZo3Vx5+mCYnk8KFb1xl3W6xf784cYL/8482frzcu9fHZVKypGPMGFqgAOg6JCXRYsVu+Haxbx+cOaP9+qsxZYo4f/5GjeJ/U5XHH3f072+13JhScfSoPHqU79rFN27kq1b5e6Aby5fzv/8OkHqQly5lPPOMYap+HA52222sTh2lSRPlnnsIuyZtLYQ4dsz47Td94UK+fHmm242fRcXVq1fsTz9RswqM3OKOw9et06dNC1DQrXboYHvqKVq8OCjKdcpASjAM4Jzv2MHXrdN//ZWvXCmOHfN5fahPPZWd8mR95kyxb5/573k82uefZ1cARX1Uz1i2zFiyxMpvamPG2Hv1giioBFIgEiEA/25AXnORfHnZo48Y078K7IioT/vKXrN2pB0RKQXD0N57n//wg9qrh22IN/OV5YZ8CU4n5MsbzieHDpSq3XvSMmW1vq+Ibdu03r1z1CORilWrxYpVJr+VJw+7914As+U8qjrb8uShRYsaPjdKVVn16qx27WzdOE4npKSwunXVNm08o0eTm8pcSJ48hLHgOolCkgK7fhvsL7+sNmsWqILE6WT58jEAduedxrx53JcAgpgYdscd1L9JBKtSBQCcDRrwxx7Tv/uOJCZaLw9itWoFEca6pqdamzzZ/frrvs0OhNCXLvUrgDwe7eOPTdWP0qyZ7emn1Vat/EWSaMmStueftz3/vPHrr55Ro4yffw7gSOl66aWYGTOybrQRTdkx99ChPi9sCaC2bu14/31WvrzfSImqgqqyGjVYjRq2rl2NNWv0WbP0qVPl9bkqkpJi794966rj6FHP+PFWpdKCBWLHDlN5mqvRxo2z3kygffONrWvX/0QNEDUtXmYqa9vWfGX/7Texby8wBSKZviHMmDlD/3SY0u1525ChEBsTOERhapVA4uJowYIQ7tQM11njB+1zZtOmD8vzF7Ru3XKmHogQ0D36+Amm9Vu0XDl2371m4R9CIZoiQIFTYDxkSp0WKeL8+GMfb5BRsGLRIkUc775rtX5W1yGAM6q1I8buvNMxZAirUCG0Ss5nEtP2/PP2l17ye/79lzLw9es9I0YE2qN8+WKmTo2ZOVN98snAebTMbWnSJGbWLPtbbwW4hY3Fi/UZM7L8pheopj6yiP37xYYNvtXPvfc6P//cr/rxeejuuss5alTMTz/RaxrFJYC9T5/stKR4JkyQR49aFnRuz4gRt7D6Mf74wzA11rrmZtemTg3a0eAWLIK+fDxYrZq0fn2TX9qxw5g1kwgRuVWcKvznhZ6+rypdnrWPGQOxsdld1aQEh4MkRiQNz3VaqbLjq+lq3z7S5dZ69ea//gpUiXDluPHbb3zRIvOHVNsnwRFjVqj0n54BT6Igze87RAo5Y0QZoe9p0QL8FMn6reXUddeAATIjw6+Gq1w5btEi9ZlnguoHJnnzOt5/3zFihN9OSSHcn30mAvrK+vfnoBASj9aQPLrWrxe+tAVRFFunTjRL3hPK3XfHLl6sPPBA5v+9805bhw7ZcWk3/ve/4CTCb79FT/FvyKPFnuHDgxI0fNMmbe7c/4QAIoSYeLdwgxRMVh59xFTZ8P/NFUeOAGURKnzesV3r3Vtt09o+fLhVt0MzAUSoQvInRejNneskXz7bJ5/YRo0ERfF0e178uQyYGrnwj+DG+AmmqpEUKaK0fsK0TDt6HICQ/xB2O/HXYuMntqT/8ksAP1xaurTzm2+Cyspdi617d1uPHv50pzhwQJs5M4uhwahJgYmjR6Wv0iuSmEiyUbJDixd3TpxIq1aF+Hj74MHZmbCmzZzJd+/2sYX581M/0Sl+8KCe5VMT3fC1a/maNb5b98uW9anXZUaG/vXXOd4PTyM4PtRMbzzwgOkVKbZt44sXRyISwBR58oTWvTu95x7bsGHZzXxdH8UlhQsTxiKmzYEQtVdv+8yvQFHcbZ8Sf/weIQ1EFb5kCf/rL/OXsydakeJm5c8QTf1fyH8HTZP++pz9GNNpn30GAeYAjBvHsuFbTex2x+DB1E95GQHQpkyR58/n7mN+5oxvcUkIBDTdMX8mlSzpGD7c8eab6sMPZ/0Zfvy4/tVXPgMe6tNPO0eO9KmYiZTajBkyqybURFGi0KbSm+vXpk0TJ0/6WEVr1YpdsMBnvpIA8N9+C6HDU1QLIGravcx1WvsO9lAT81nQw0fA+bPh9TimFDyaNmQIKVfOPu7zEGS+biBvXlCVSMYnQRjswYccvy+lVSp7nunEl4VfA1EGF8/ro8fAufOm5c/KMx1NL0VCUf0gOfN2K9N9m1b4jOLw1av5Zr8Tf+0vvZSdvusrk6Ecr77qL14uU1P1X37J3QfdX37z3Dm+YkU2q/7Vxo3t/ftn5xP0H34w1q/3cV6Sk+2vv648/DDzo674nj36b79lef4dSUmR/soNOc+xG2TjRn3OHOLL1sH+6qu0YkX7W2/5vlBdrkCvCrdaBMi8cEeq3bqZCnyxbZv+zewwZ8GIsWA+IcQ2bBio9pAPYSWFCpH4BIhwuS7XabHi9jlz2FNPeV7qI7b/E14NRCj/8y++eLFpPIw9+ggtX8E0/xVdDfAQxmHXEDU2qQjfssUzZAjxkxpTmzf3cQ5XrBCnT/tL9aqdOoVkw9THHqP+k2jG/Pm5+rCTlBSfGkh6PJ6338547jlj/nzhKwMVCdxuz/DhxNejzPHmm15HcufgwT57vAmAZ/jwLMxRCez1IC5cENk2Wswy2qxZPi1slIcfVlu2BAC1RQvmxwJAnz+fr1z5nyiCpqYLmOC0Vi3WrJn5MjFxojx1EsKURaJUHD4kjxxRBw4kCQkgQt9jTOJisxnIzfLgMJI3r+3D99V+/bS3B4vt/4arpY4Q8Li0d98FM4954nQqzZtDbJyp/c8tnv8SAnRd++or96uviiw/H3On4W8kjq1hZI41tdIRxjnoujxzRhszxtW6tfDZtA+gPvYYq1795hWab9jgb2Kl2rQpC1UjtN1u797d3znmW7eKtLTce8ZYlSrMj2GjTE/Xpk3LaN8+/eGHL9Wrl9Gypat3b89HH2kTJujffstXreKbN8uLF8Httnq6gw3/LFjgs8ycVa2qtGiRuYZUqGBr3973xbhzp/bVV6G/wnMoAiSOHtV97o6q2vv2hct+afaXXpJ+8sueHA0CKRFsiCbmj2xFVbt34wsWBHaTFH9vMMZPsL31pgyTC5wE9fnnwekMeezHu/kkOZkkxMsjOfJKawCl6tPtadkyfPESUqggyZcv9I8JqugTxoo1a82fdHXrsGaPmppbEpLb1M/Fi9onn+gzZ1p6MFEKaWn80CG+bh0tV876kKlAAjQ6rPGjAWPu3EubNnmL4VixYpCU5PeCJwSE8Pov83//Bf9tXKRMGccHH9xciSxPnxa7dvm8WImqsgYNQvjaxurWpQUKyFOnfM7fEFu30vA574VbANWsScqXBz9zXgmAvHRJXroEe/fyG+4jSoEQoijgdNJy5WjRokqdOrRiRVqqFClShOTNrgGbzMjwjBrlq42Z2Tp1utZk0tarlz5njvQlQ/XPP7c9+WQusuQOgGfECOkr3qm2bMnq1LmqMxo1Uhs3Nny1AxvLlvF163JqDl1Em6IZZTxwKbEU7I7a7P77+M8mOWx94kTWqiWtXBW4HnI1TYsVDa2Py41WQHnzZX36TGgM7gS7qy6tUMGK639W6sf37NLHjAULTsrqgLeIw1RoEprb8l8yI0PPUhpCnjuX/c4IwhiJmpbmnA8AnThxZSnlq1eHJIUdM378taYy1wpfcfy4v+GyobX/pwULsipVDF/tZvLCBXHsWC4+Zzab/aWXMv78M/hiRwEAUtfB5eJr1vA1a/TvvpMArFAhWqOGUreu8vDD7M47syOmuS+DIlahgtqu3XX/pnx59emnPZ99drMa5rt2aTNmBPCXyjV31s6dxuzZ4KusU+3YkVzjkk/y5VPbtTP+/BPcbh8V5TNmsBo1QFXhFvcBIsSkgUtwyJNP6dXTVKrLw4f1YcOAG2HxBJLhnBohJMQnQGxcDl+8XCd58li30w3KOFsfMVJayNCzZs1Yo0am7XWU/Je63wkJ4pIOcJViCixMFCjgnDz5ip3MzRPapZ+4BcTGhlaVkoQE7wQ0H5uh6/LQoVx9mNWWLdXHHw9VB7I4ccL49Vf34MEZLVtmdO7sL61pOutKmz7dZ1rf1rEjvcFTUVXVNm18Wxbpuj5/foDBJrkF7auvuK/Rp0rNmmrjxjee0ObNWdmyfj0Fdu2CW94IkQAxt3IRhtL0EXrvveZifNpXxq+/RNrZL1SHomSJqKiNCHn4hzD+++/G9OlgYSis+tILQBXTpRrtf/w+kQ8ckGGag4H4i008+aTatKnfM+J2+xsfSxMTaaFCoQ2TsDJl/Mpfs/K7aIdSx+jRrEGD0NesTJ2a3qiR/u23Qb8zbtrkM95G8ue3dezoQwfUr89uv933R/3+u7F0ae4O/xw+rM+fT3w9vW09etxc5EoSE5VHHvHnKqmNHfufcIKmViqBCFH79jEvE+Zc/+RTeeJEhHwRQ90IdgsuDpTKC+e0gW+bzrqXAKxlC1azlgXzQwYIhnmiBn3KFM/gwTILTTdBxfay1xZk8p9yy+MkJcU5Zoy/VTNbi/eRI67nntMmTAjqr/yZHds6drx5Tl/mf+rWzZ9lpWf48BBU++Ucxvffi23bfJy1ihVVP51Mart2/kzM9RkzsuZgnutGYRAr7WCsbl322GPm1/HyP/WJXwChue5uJ8WLwa0HYfqoz4RPS9CbTP3V9u1Nm7+8UUNcdJEo0pzp6e533slo1Ypv3erTpZD4KWUIS6zuVs+BsurVY2bMsL/7Lgn1nDJ54YL7lVf0efOCmHXl011JVdXLzV8+/uNDD/nTRnzlSj3XuhXIc+d8FoMDgK1TJ38qh1WpwurW9Zc79gwbBrd2EfRVQ5fA7/1SAlNtgwa6//zTb0L9chLHGDqU1a3D7m8c+mrosB6E5GSgNBxdmjn3rFL54kXGZ6MtXXZPtWMPPWx6ygihJJe+yCoKLVoUYmMtrUOEgK7Ls2fFqVNRtLfsFom9kcREUrgwiYm5aqSblESLFr3x1Oi62LdPZmTIc+fg3Dlx9Kj0X7Fo/PGHq1WrmPnzaaVK1/2HuDiSlCR91UHLM2fEoUO0ePGQ7Ziu8/37/V5RCQm3yOnLm9cxcKC9Wzd9/nx9/nyxe7c8duyKVQTJnpb1fPABq1+fmtVmSY/H88knPg0YlcaN6W23+f3L2Fhbp06eDz7wHQQaNUp55JGcbIjJKtqUKWLfPp91acpDDwWaLtyihcvPzFR9wQJbxNvBckQAEUKIDLwwCINWrqp2e1579z2TS/PiJa3f647fapD8icBzi56QJCUFGLt1BBBTZOohbfA70o8F3HUXQIkStjfeME1+AQDLtdU/JF8+x6hRrE4dS6eYEHC5xIED2oQJ+i+/hObdPdvCUR49emtcn0rz5o6PP6aJiRbnp4rjx+Xhw3zTJmPZMn3uXH/FNHz3btfrr8d88821CxiJjSX58/sUQOLECfHvvyEUQDI9XZ486a/l3l/gIbfeUAUL2rp2tXXtKg4c4Fu2iIMH5cGD4sQJcfCgPH1apqXJtDTJebCSiG/erM+ZY+/Vy+TXVqzgq1b5TuXfeScJqDWVpk3dn35KPB4fH7thgzF3rurHMSh6V68zZ3xWUEkApW5d6q8uzftIb9gQ8uaFc+fA54CRiLeD5UwFMSWMS8MsCASs2/N0zhyxwyQ1KDZu1AYNso8ZDaaxpVCv+pnnPdgVSwpapkzQY7QpBcKuudhumLMmQfCciXsTAlJoQ4aKFSus/Lr62qukaDHT8A8lNBePf6eUFCxICxYMakoRq1WLTZqU/TdCyblPe5hgBx7JW0IAkdjY4E5EcjIkJ7M77rA984zRrZt74EC+bJnvdfHPP/nq1cp9911bD8vKlOHbtvlwCj5/nm/fHuj9GIKu5/U3SokkJNBbSwBde5vQkiWvBu3OnoX0dJmRARkZ0u0We/fC2bM8NVXs2CEOHhR794KmBdLxus5/+UW2b08C+GZxrv/vf+LsWeLrZV7u3atNnuzXM4UQmZbGEhN9uxK4XNr06cojjxA/Q+WiE+OHH7jPSSAA8vx5fcYMv8FjQuTZszQhQfgSQN52MPX551mVKre4ACKEEEJlYLHCOU0pqvZ/3dO5i+m6zqd/ZdSvrzz1NAgZIREgpTx2FIQEh50E0dMugRBQFBIfDzYb+Hot8Ct9DE0c2Adn0uTRYyI1NXM3KaVVq5L4eJJciKR47YsingqkivHVNOPzcZZEY+MHlCfbXi/gbtHZF8H7SJH4eHufPkFcwPnzg08vUCkh23bS0uXyvSVS5rL6kixvrc2mNGgQM2NGRps2PgMA4tw5Y8mS6wRQbCytVg181XYQKY2FC23PPktC5FHJN2wQx48TPz0WNBvzVnMNqnqjtL3SNcY5cC7PnDFWrtRnzzZ+/93fKwFfv14eORLgpPBNm/TZs/3MXZPajBkwY0agayxgLNZYtMhYulRt1SrHI77Wwz+eSZPAT6sjX73aFdhqK+B2etvBnJ9/fosLIG92wzDNWAlDadfOWPgLnzPH5KxcuqQNGEAqVmQ1a0VCARACHo/76fbgdpOEPKRAfuvPYlKkiK3/6xAbS4oXl//8Yym75HHz7+fxRYv4ylVy1y4fLzQJCbRqVVavrtK2La1VG4QRuSWKqXzlCq3/m1bSJSRfXrVvX5KU30r4h5D/avmz5R0nefIQxnyWJsizZ0EIyEYOkW/c6POTSUJClE6lDpO8L1rU1q2ba9Mmn7kwvnmzvHDh2iQIu+suGh/vc94TX7uWr12r3GSRAlmaUa9NnuzvQmHVqtFbwmhYut3EZsvKZcwYMEaSk9XHH1cff9z44w9X797C1/OWHz8uz58P8MTWJkwI1PRn+qQ1+wXP8OFqs2bZGo5kGBFzPTB++YX/9Vf43kb0GTPsL71EK1S4xQWQtx1MmFZD2xy2/q+7//xTmhmbyv0HPF2ecy7+jSTlD88Iixvrr8Wy5VkokqClSsoXXyAJCbRQQW4qgJgq/l6vvfEm9+WheZULF8TKlXzlSuOb2Wrfl9UXXwDGIjEdhqnyaKre7zV59Kilq61Hd9akiYXxaoSg90821BIB4Dt2yIsXsxNs8NeVSgoUgNjY/9QxVurVo4UL31z1SQDEzp3y5MlrBZDSsCEtXdrnQHh54YLnww+Ve++1WI0UaJ2YP5/7KSYFAMV/X1LuQhs3jiQl+XTZCe4M3nOP/fXXXZ063fzE9t4s/rqTxL592tdfh3Ufve1gauvWWRcVFy+K48evZgbDueppX34ZXsl78aJn2DDnF1/cqm3wQVq8CIPeXlN9rZ+08MiQmzZpnZ+F8+cj1MBit2flr5xOIAQYIyVKmgdX/vjd3eJxvmhRIPVzbQo2NVXr+4r28ivgcoc9KEopeFzagLctjvOltWur/fpZeQmglGL3u6VDWry4v+oBsX27PHkSsjHLjK9d69c/87/mPxQb6+9mlxcvyuvdXEhCgtKmTYBuas/o0ZDt6h/PRx/5fQ4ULepzTH2u6/vjGzZoH3/s+egjSE8Pwc2SnOz3kej/8z3jxkG2R9OY4hk1SvofPGd13G8Ewj+//WYsXx7ub9EXLODr1t36Asg7HczCVAqudHlWedBS3NhY+LM+ZChoOkR1CEECEHKDdfpNSSB57oynd2+ZethnayhJTgbmex/1L77QJ00GysKogSgFg2sff2xMmWIpTlE42fbJUJI30dT45z83+yI70Z88efwtzOLgwexYzeoLF/obF0CSknJj4252G+ICZElufjN65pkAd7fn/ff1BQuyNY/ztdf4xo3+niy2zp1JFt7NhLAYx40Yng8+ECdPih07NGsPGZOlYelSn0FxCUCKFfM768pP9YXM0k8AqWfMnRvlNUDS5fKMGuXvGPrYWcZIcrKPH7PyfG87mL8yI7hVUmBXjF6EWUu8IPF5bEOGuDdslH4GDV5beaqNGgWlSqhduwGJymrNzAuIkJTCJjMl5n4v//nXh4Xgm2+wBx8EhclTp/Vx430USHk8xpdfKs2bkWLFw5INJAQIM6ZO0j/82OJfqC+8wBo2spD8sqCJkSvHqlIlWrAgP3zY9/oxbJjapk0WGkzEmTPal1/6rGKRALRUKfIfGzWvz5/P/TWcJyTcrDZIkSL2Pn1cr71G/JSRujp3JtOmZcHjWF686HnzTc3nBMrLMzhtzzyTheVQegVQBNIoFvXK779f8Ql0Dxwojh+39+2b5dmFYtcu/bvv/DYJ+vEm0KZP56mpNx9K1qiR4733sjBKzD1ggPDln5kr2sH44sU+wz8kf37nkCE3zwYmDofvXDkhcP68vmiRNmaMvyh1xNrBcn6QFiWUS246uZNWrWYb8rGne3dwmSWDMjK0V18jyYWVZo9FtBz4sl8FLVcWKM0U/LExpFy5q4lnwyBFi4IzxtvPGfiT+AofqSVatYra77Wrt2L9eh6basyYeVM5/WnpcoUrkUQV4+tZ2iuvWrRyZ02aKL16AQXg0oIgxvAPWG9TopUr87//9v3Q3707o0OHmEmTgpq7ItPS3P36GYsX+01P3mD9d2sjhD51qjZqFPGTYqBlyhBfAy9tnTsbP/1k+Omfl2lp6S1aOD7+2Nali+ng52vTmq5XXzUWLgyQw7K/8kpgI5aIpcC8L6skOTkrf+vxeN5//0qwQZ475/ngA33qVHufPsojjwR7BYojR9yvv8537/b5NGQ1a/q0mRY7dmgzZ/qcdWXv0UPJ0pAyEhub/sQTPl1wQtYOFiKjZ/B4rntuaJr23XcyI4P4eg2zPfts0NdanTpKnTrpbduCrwJzmZbmGTo0Ztq0W18AEUIJkdLUv0dypXVrvnKlMcFCedSFC1rXrjBBKM1bRFgDsaYP26dMNS1sAgCSN0/gUmXpK/csDh7ka1axuy6X7Kl2tf/r8tIlsXUbuF2kUCFwOEhKitKqFS1ZEqQRjsJnsewPrc/L0lqjNSlT2vbZKJKQYCUWheGfYFGfeEL334Vr/PRTRqtWthdeUFu1Mi+8NQzj5589o0YZS5b4lb4FCyq1a+e2QBnLWhWUvnix8dNP2qRJgUba3Xmnz3gYyZ/fPngwb9fOb9DaMNyvvmosXmzr1Elt1gwCZBWl5Bs26N98o8+aJQJmqdRWrdR27bJ+oELX3Cf+/dfVq5fSqpW9d++sBBv++ONmpxlx5IirXz86cqTyyCOsZk12xx2sZk3ToIsxb55n7Fj+99/EzxlUmjb1aROl/+9/4uBBH94/RYooTZpkcbm9/35bjx6an/qtrLeDERKqcyeOHjV+/ln/3/+8ZeNXz8i//xo//EBCWnGvNG5se/ppzU9JnP7NN7xbN1av3i0ugLzLnsGliTeMEOB02N57V2zYKCxUSMkTJ7UuzwGlkY4DcQGGBort8u7ccM2Iq4onNo7kyytPp/mfBVj4ZnEkD6d6nmhDa9ak1aqy2rVp7Vq0XDn7tKlw9qz0eIjDAYoCCQkkLgGEAUKGOPNFFbFsmefZLhYLbElcrG3IEFq+ghVvgtynfsIx3jJYAfTAA7RKFZ9TCTPX2RUr+IYNnpEjWa1arFo1Vr06xMfTEiW8ekju2yfPnBFHjvD1643ly8XOnfLChUDnqFYtfwOuoxb++++uF18EKVnZshAT4x23zIoXh8TE63qCKJWHD4tTp+SRI3zXLrFzp9i9W6SnBzjBtFAhf3MfvZ1HjnffdXXvHqBX1PjlF/7HH57KlVnNmsqDD9KSJWmRIpAvH0gpjxyRhw/rS5fyFSvE7t3iyJHAu0nLlnWOGEHi4yGrrdTuXr1ozZo+t5bmz09uHh7iy1dQHDggT540li8X+/erbdtmcVsWLhQXLhA/4RzPF18QAFq0KClalBYvzqpVo2XK0NKlr5YnnjnDd+3iGzbwDRv4P/8EeMlklSrZO3Xy6QauTZzocwPszz9vPWjnQ2S++qo+bZrPcqvA7WDSMPy1wsi0NHeXLqxGDVK4MC1bNosG7hkZxurVfPNmsWOHkFK5fiSF/vXX8uxZX8WdhbPTo2fv00ebNg18PnM0zTN8eMx/QQB5bYG4aXks56RAIfvE8e7GD1kxupVpaZ4OHeGr6ZHUQGLHDn3s56AoIAQQQsuUvnYgFC1ThqSkZP7fmBhITAK/Akiyx5rp48bfbJYoU1N5air/4QedUlBVWqokbdxYebwlrVKFFCjkjZaFxQyJKuKP3z3PdhH+JhDdNPlFGTRIafWEldIfrzdmLhNAmhYx+w2/xMQ4Xnst49lnA7SBSJeLr17NvQZligKUkstBEck5CJH5YyFC4Bg4MJJG9daRqal+Hxtbt/oYXMqYjz4J79G4yWQ9QPiNBYyH2bp2lR6Pp39/6b/PSLrd3qVamzzZu1VeD4jMU2Otu4dWrBgza5ZJX4VZu4mxYgVYM3MPa2WuOHzYWLKEBGx3BQCRmgqpqXz1an3OHK+77HVvy1ZMQGJjHcOH+0zSeT79VBw65LMDIJtZKpKYaO/d2/3mm8FOB5Pnz4ujR4k/P+vNmzOdF3w6owa7kdeHA+Xx49r06b6v8J49faaArS4ppUvbnn5aG+fbRNdYssRYtCg0vllRLoCsJsK4Tm+raftkqKdXb0u9kefPRzgXJtat0/wHqGzDh6kvvwzcAJAkNobkT5K7/O2pwe65V+33qv7Bh343WwjweMSOnWLHTmP0GFq7tvJ4S6VzJ5KcAiBCHvsxvpmlvfmW3H/A6rX1dDtb794gLQ3ooCT3Jb/E+fPCV41khFFatFB/+UWfNcuqZ5oVH26fr2uvvMLuuiu7pszhsaeSZ86QYHsRsrcl7K67HG+/bX7QevYEKT0DB0rTPrLLMjTYs8Nq1XJOmGA1Mhf1/qJi507+779BX1dBNg2RhATH0KGqr8kk/O+/9a++8t1h17YtLV8++6ZE0m73Nx1Mnz3b1rlz1j3NQ7HGEUqvimkp3e+9d3MmVwIoDRvau3fP5nfZOnbU5syBtDSfpUj65MmsXj0SNuOxKHrnZpRZMv+VXGnfXn3pRau3xomT2nNd9S8mAGU5b3Rx9TVFQmwsMXFrlbYBb9mGfUqsmbqK9eu1N99yN3uML/wJmBqyJx2lQBVj1kytWw/r6oc2bGAbOhQcDiuhBaunPvoqZP0+djm3WCEegqdVfLxz5EiladOwfoutWze7n9fWINapS5dEeHqtZWRDcbRMGeeYMcTKiDFK7b16OadP91lpm33Uxx+PmTeP1aplvcgdon6QsNqmDatfn6SkhCncSBITHSNH2rp1893sPXy4zxQ/jYtT7r8/BJuUNy/1l0RzubTx44WZ628EPPqurJXGX3/pvrwACICtTZvshH8yv6paNbV+fX+qTZs3z/j551vWBygr45+EAEps773LnnnG6j1/+rTWo6f+6TBIz7g8wRRyfD4RcTpNlI0QYLOpL/d1LFmkdHqGWGvuEOv/9rRtZ3w5ESAUFSqMgST6lxO17j0CV4dcd1VVr2qfNIkUTLZS+Jwrk1+XX1D8ZQPl2bPiwIHI3TgFCsR8/bXarRuJj5chd6zKn9/+0UfOceOyb/8jNm+Wfpr25fHj/rynLQV0go0ZZOctpnHjmPnzmfVicErVxx6L/eMPtV07EhcXqs2gFSs6J0yImT2bFi1q/a8MX2MsowpWq1bMrFlxf/yRsG9f3Lp1thdfDGXjIWOsQYPYn37yF2UxvvvObzDVZstyHz5cb1MC/m0P+dq17rfe8pEzvXhRWqw9CCEul2foUHH6tM8ng7F8efZrAIiqBqr7drvd/fv7G/p7qwkgSqilVIgQQIh9xHD6kOVqfCG0fv20/v3luXM5qYGuxCeFIDYHKVhQmu4p1+ltt9mnTHX89KNt7BjlmY709tsDd/TIixe1gQP5qpVAlWyOu5fp6Z7339Oe7yYtD9ckpUvZv/ySli1nsQ4p93Z+GfPmCT/v05Jz/auvpK8HR7g0UEJCzLhxzhkzbG3aQKiMCvPls3XqFPPtt47+/UMgpt1uz/DhAXJY2mefBRq6FPANx1/DeWi1IK1a1fHppzHffZcFhxJWtqxz2jTnV18pzZtnZxSGBKAVKjjefz/2l19szz8f1Efps2fzbNhjRjQCoShgt7PbbnOOGhW7eLFz7FilWbNshfAZU5o0cU6cGPfrr6xOHX/2oe633gp0iQ4fnv2bmi9bJgI+TvUpU9wvvXRdFErXIx0ZIkSePet++23j55+JnzohfdGi7EsTY8kSY+nSAA8XsXdvRuvWRniuWyX6rnwqhYViICFIvkT72DGeZzoLy7PZ9HHjxKFD9kmTSP4C4SoJYiyQnr0+fGq1m4BzAE4rVGQVKsrnushjx+Tx43zjJr5wIV/6u89aKHn8hD58BLuzDrAs1cQRAlSRx496+r3Gv/4miE/Ik8f2+ef0jrusqh/GIHdOvTAWLPAMH078xMMJgLF8uWf0aMc770TymaU+9pjy4IP2f/4xfv5ZX7iQb9oEug6cWz2DhABjEBPDatWytWzJGjVilStnf3BV5hFbuZL//XeADIL+ww+sYUP7Sy8F/UY9frw8eDDzk71lRtm5tb0HgRAghDAGTietUYNVqqQ8+CC77TZaokR2XnbVFi2UBx7gGzfqs2frCxfK1FSrxSuqSuLiWIMGtnbt2J13Xm16sr7ubtvmHjhQulzhLWOXMuRjGWhKiq1nT7VDB7F1q/7LL8aPP/J//wVdN0+ve9tEypRRmjRRH32U3X57AKdB6fF4BgwQqamBLtEFC9iMGfY+fbK8L2LfPvewYcTsFGhTp5JSpRyX1Zj21Vfa2LE3btgNh1pRsvuWcqV4XEpis3k+/9wzahQQ4veAnD+vf/+9vzFqli6W8+fdb7whz50LfE2KPXvcAwfGVKpEzVykg74lZfR5JUspuTCsetLs2e3p/KwIZj4trV7d9tlI1uhekMLKZAbfj8iMjPSCyTcHAJV2be1jx4Dd7vvmVNWrywlTjcmTPN26gcEBgN51p/OP38Fmy3x2Uwo+g2GSX/33hiaOHtU/+ND45hu4cPHmgG3Mzh2kRPGguyIpBcL42tVa125iy5YgjkpSkm3KZKXZYxbVD6U0N9Y+X3mQiWPHSABxIATExbGqVXOs7NQwZHo637JF7N4tDhwQx4/L/fvBV+kl5M1LixYlBQrQUqVo6dKsWjUSHx8q3XP1eBw4II8dCzCjRgpB4uNZlSrBHjG+bRtcvAiUAiHS5RJ794KuZ/GwS+ldMonDATExtGRJ4r1nlTC8K2Zk8G3bjOXLjXXr4MgReeGC9JZmU+rdeOJwkMREUrIkq1xZqVuXVq1KnM4sR0HkqVN8714S5jpo6XLxLVuMhQuNRYuco0fbevYM/Xfoujx1yli3jm/bJo8eFYcP32gtGBNDixcnycm0WjWlTh1aqJAVcx2Zns7//ZdwHuj4CAFZukSvfsDJk2LPHmJ2EiXnJCGBVazovfDE3r3ixInr/ooQeemS2LUr84YSgpYvT+LisiP9xZkzYssWfe5cY+3amGnTlHr1xMmTgTZVSoiLy87RkJcu8S1biIVLWhoGq1496y4PuUgABa2Bdu9yP/aY3LEzKL9mte/LyosvEqcjK80gAQRQ+6ftX070K4CuzYIxlf8w39Ohg7xw8UYBRJk8eYIvWw7p6VcXDClJvnys+WNXp1ESApSBlNrrr+uffHqz2HIsXczubhDcNAzGQEpjylRt0OAArcU+D6ntiwnWu+0IoWh7iCDXZlikxwOGkVmCKiXNkwdy59g16XJpY8bQcuXUW2Uu/X8HceqUZ9gw5d571az6PeYiFIhShzlCKRNWwjNcp+XKO2bM8PTsJfzNr775/jx5Uuv/Bt+40fbxR7RkaZA86DBJgN+XMvPHlPxJEBPrI3hDKF+5ytOtO1y6dFVcS0mcTtvkL5Un2mSGgq70LJYt63szgnpZpBQIk2fT9Hff0yd8EVx1W548ti8nWvdbIoSg+kGQG1qTyC2zL06nvV8/f8Z9SDRDCxRwfvyx9BkqvvV2Nnq3zPpYKK7TWrXtM7+id98d1Ffw2XM8jzbjC38EIYEFkxenjP/7b7ZT3ZIkF4L4OL9BJl0HwwBdz/wxDHnxotb7BWPaVHn4kHS5wO2Wx47z+fP0oZ/4+ITkZFatmtUcH1NBgvHDPHfjJvrIUUGpH5KUZA/SbRLVD4Lc+oRutgYSaQl704hfwAgQRNwZiHOQVjz9uE7LlrdPnezp8IxYtcr6V4h//nW3bKU+10V5uQ8tWz6IymiRfadBSWLjiN0ufdpA33kHKZIid+2+2dbI06kzrXEbqVCBMCb27Rfr1/uUYmrnThATC6bl5N4BFwf2659+akyeEmxbY2bmKyj1k2sLnxEEQRDACFCk5hiyIOJAZco55sxmbdpAkAMN9M/HuZs+qo/+DDjProWg9b8VgiQVILFxPm2gSeEiSscOfv9002Y+e44x62uxerVP9UNr11Kfey5AwenlbhcVpDRmzXQ/8qgx9vNg1Q8tU9o+a0ZQLtuMMgI47x1BEARBAWQhF2Y1YMB1UrSYfcJ4pUf3YEWM3L1be/El9+NP8BV/AVWCy4hd6xpXuDA4Yqx6lisK+OuEl9z2aj/2WLMsBEtouXL24cNJ8RKByp+ZCoSIzZs8z3bxdHxGBu8jR++6y/7dd+z+xtbVDyUsl3oeIgiCICiAIPIF0cx6MS/XSZ4E++jRtgFvkoSEYL+L//ij5/FWnr4vi80b4f/t3XuQnWV9wPHf87zv2WwClHBJQhJNAsEUAamxFlAIyojFWkRsp1XBaVOo1RmxOlNnKh3xMp3+0csUvMwo2FqoBfuHF5xRsd4RlWAFawiIYgsIuFBDGHaTsNlz3vfpHychiQ2Qc3Y3CfD5DMNkwrDZ3cDkO8/tV3We4hDxnv7UT6OjaZCBLGnlMU/4wUdG5lx99cil74lDBvhC8pkvn3PNv+U1ZzzhXfSco+q0t96y7R3vnDzrlb1//eQQ9+DqCy4Y/dS1+TdeGE13L7/YlKqc1Q8AAmiA4bSDNFDbRk6d939gzpVX7HHSbzzVBbHeZZdPvua1295+cXvXz6Kq9rwplnPMnRt1HZ3Ozr/qOgb8M/7JBji3TZo/v/O+S0ev/0J90YVp4cIn++CdTn7R6pGPXzn675/Kv3XyHuqnv+FVdcr9909d+p7J157X+/BHhnnVNKX6z98+csVH09HH7P3M+ZxzpX4AOHDS4sB8B+gJ1kTaZu/fLcw5UtWu+962t13c3vrDIX/JQw/t/Nmb6ze9KZ90UkT6lb2esnFje9ddO6MkpZiaSkuW5mOP3fu7V91P/NPURW/ew0OIux9SjrZXNm1qv/Pd9vvfb9bfFo8+GqUtbUlVFUccXp2+Jp+xpjrpBTE6L6LsYeer6kRE+7Of9q69tnfFx8uwAynT4kWdS9/befOfRt3Z++eFcsrZtS8ABNA05uCUZrBn/Trlvp9Pvf8DvauuGvreVlqypHrdefXrzqtOOy1G5+18NCjn2O1ES4lIUdoBfqGq03z1PyZffU70ek8YQI9nUErxZO8mtzsfSNwtnqqI1Nx8U/OZz/au+3y5666hv/n5zJePfOD91ZqXDTRFJKVU5dr/aQAIoGk2UNsMdGal6sS2x7qf+JepSy6JR8eH/04dcXg67vj6wrX1ea9Nhx0Wqep/LtOaOlRVzY/WT558SkxNPUUADTqPLHJEia1bmptu6n3ymuYrX2nHxtI0PmDnrW/pvO+9acGivd/2eroPuwBAAB2AgzKaiDLYcKubvtu95K+aG7493SPZS5fWF5xfn3NOOnZlOmrJ9tWXZtiZYlu2bDly4cwE0I7xYWXTxnLPPb2vfK255pr2zjun+WBjWr585B/+rv79P4gUA03VyE49AyCAZmEvbJAGioiqUzb+b/djV/Qu/2B5+OGY9ipLPvXU6qUvzS/+zWrN6Wnx0p37UHt/CyylmJzcesKJ5Z57hwmg/tHsnPuH2cujj7Q//K/2W99q1q1rf3DLjHyN9dq1nXe+M5944kALP/07X049AyCAZqWB2rYtpR10b6j59g3d976vueGGmfgcIs0dzUcfk1/6kuq00/JLXpKXL4u6jnpk10/zCU8FpRRTU4+94hXt99Y9dQBtP3L0+EZWE91edLvNPfe0N36nvfHG9vY7ygMPlF/+cka+vfmkkzp/89f12WdHZ86g9ZNzlb33A4AAmr0Katu2HaiB+peqJh/rfvRj3Q9+sNx77ww+WBQjI+m5z82nnlKfeWY+8YQ0f37MPywdNj86c9LO1aqy/Yf9Kmqayde/ofncdbsFUEqPr+tERP/fLVs3x8RE2bQpxsfbX4y1Gza0//mD5pZbYuPGmJqayf8mFi6sL/yTzrv+Ih2xYIgxsXa+ABBA+0Lbtm1pBo6VXLcbNnQvv6x37acGHQGxt5e/jzkmLVueli1LRx2Vli5JS5ekIxekpUvT6JwdLwDliJh6xzu6H/rQ9gAaHY3IUZryi7EyNlY2PVzGHixjY+WRR9qf/7yMPVjuvrvcf/9MTCLbk7quX/+H9VvfUp1+xhDpE5GqqkrmfAEggPZRA5WmHaIJqk5MTTbrbu5++CPNdddNe7p7PNlOWUQcfHA66KA49NBU1xERv3ZIqjuRU9n0SLthQz7l5Lnf/U57771T776k3HdfjI+X8YnYurVMTJRuN2Z7fGjO1W+/snPxxdUrz4qR0UH3vCIipZxzVj8ACKA4oK+G7Xpzamqy+fKXu/94eXPzzTE5uV8+/3zKyXPXrWs+99nJ178xut19+Avn/OIXd979l/Vrzol6ZKiFH9teADzNPHNeqOuPDGvbZrCka9uINuq6Ove8fPbZzWc+2/v0p5svXR/btu2fHp2YGLjhprHhVf3uq+tzz61+73Vp/uHR9oZY+In+gHdHngEQQPtzZFiuh9kOKyWabhoZqc+/oHrNOe2tt3Y/dmXzpS/F+Pg+/hLKww+XXjPr20gjI/X5b6zXrs0vWp0OOTRKM1z6pJRyqlKy7QWAANrfcqoip9K2ZdCllLaNaNMhh1QvO7Nac0Z75497V1/dXP/l9o4fD/nO4RDGJ2L2NiXrOq9alc96Redtb8vHroxcR7TDpY8JXwAIoAOwgXJUqRn0laC+poloIqV8/PEjf/v35V3var54ffPNbzTf/Ga57/6YzT28mNpWNm2ajeWUtGRx9apXVWtOr84+Oy1euv3BxmHTJ0XK2cIPAALoQJSqXJWSmrYd5lRNKf0SSgsW1GvX1ue/of3vnzU3fq/5/Oebr389pqZmfp0mpTI1WTZtmsmPOXduXr26/uM/qtaclp+3KuqRiDJ09+wy3iuH214ACKAD+GR0rqs08GOJ8f8WhDqd/PwT8/NP7Fy4tn3ggfbr3+h94YvljtvbsQfL+PiMtcDktjK9U0clIs2bl5cvS6tWVa/+nerlZ+YVy2NkNCKGPuiz68JP2l4/ACCADvgKyrlKJbelGf7Of/+yWETknJctyxdeVF94Ubnnf5r168ttG9rbbmvWry8/vjOmt7QSW7YOPcArHX10Pu64vPqFefXq6tST03OWbx+X0U53ycd0CwAE0NP5knyq29K2bTPN54ailH4MpRVH1yuOSeeeV7ZubsfGytiD7e23t+vXtz/6UXvrD6PXi15voMmmZdtkTEzs5XHmqOv0nKX51FOrNWvyqlVp8eK04Mh0+JHbV4Ka7gweqEopO/EDgACKp+/h6FzlHTti0z7E0/T6u04xd25e+bxY+bzq9DXRdKNpysTm9id3tj/5adx9d3P7HeUXD8TE5rJlS2zdUiY2x9S20rSPz/naeQh6fLzcfXd5/OfrOnJOhxwcnZF02GFx8MFp8VFp5cq8YkU+/vn5149LRx4Rnc4ug1fbaHszeDjJYWcAwkvQzySllLYMdUdsby5z9f++20nhtjz4YNm4sWx8uDz0UGzeXMbGotcrjz1WHnooUmrv/EnU1ZyrrupedlmaNy/NmxcHHZQWHBl1Jy1aGPPm5RUr0sKF0Zmz25D5/u/dLPwOpkg5Z88bAiCAnpkZVMo0zkcPNnt153T3xxd+SkRMTUZVdz/xz72rrp77ta/2V3R2/tNdzze3Tcz+b5aTzgCELbBn/MGglKpUciltW8oszqDYcal+1+ta23U6kar8nOfGEUdE20ZdR9vbL1WaUkqRjfQCQAA9mzIo+stB7b4bxRU77pdVOS1aVL3gBZFytG3s8/pJKWfHnAEQQM/GDNolhNohxmhMS0lLl6TFi/d1e0XknFNIHwAE0LM+gyKlqsr9U9JRyr4ooaZJixal+fOjLXa7AEAA7d93g6r+Oek2Smln+aB0KemEE6KuZ3X/K6XUf9EnGWQBgFtgvgt7c18sImbr5nzsmLlRVbN2sSvZ6gIAATSdGNp+c76UmMlTOynN5BuGKUWEfS4AEEAzXUL9h4RK6e+UHRhTz1L/KUZvGAKAANpHe2Sl/8T0zK4MPdUN9p25k8LhHgAQQPs5itq2n0I7jg1tv1FWBr6YtvP16B2DNlJ/k0vuAIAAejrsmu3on7L7z+8+GPVXk0foAIAAAgCYBkdlAQABBAAggAAABBAAgAACABBAAAACCABAAAEACCAAAAEEACCAAAAEEACAAAIAEEAAAAIIAEAAAQACCABAAAEACCAAAAEEACCAAAAEEACAAAIAEEAAAAIIAEAAAQAIIAAAAQQAIIAAAAQQAIAAAgAEEACAAAIAEEAAAAIIAEAAAQAIIAAAAQQAIIAAAAQQAIAAAgAQQAAAAggAQAABAAggAAABBAAIIAAAAQQAIIAAAAQQAIAAAgAQQAAAAggAQAABAAggAAABBAAggAAABBAAgAACABBAAAACCAAQQAAAAggAQAABAAggAAABBAAggAAABBAAgAACABBAAAACCABAAAEACCAAAAEEACCAAAAEEAAggAAABBAAgAACABBAAAACCABAAAEACCAAAAEEACCAAAAEEACAAAIAEEAAAAIIAEAAAQAIIAAAAQQACCAAAAEEACCAAAAEEACAAAIAEEAAAAIIAEAAAQAIIAAAAQQAIIAAAAQQAIAAAgAQQAAAAggAEEAAAAIIAEAAAQAIIAAAAQQAIIAAAAQQAIAAAgAQQAAAAggAQAABAAggAAABBAAggAAABBAAIIAAAAQQAIAAAgAQQAAAAggAQAABAAggAAABBAAggAAABBAAgAACABBAAAACCABAAAEACCAAQAABAAggAAABBAAggAAABBAAgAACABBAAAACCABAAAEACCAAAAEEACCAAAAEEACAAAIAEEAAgAACABBAAAACCABAAAEACCAAAAEEACCAAAAEEACAAAIAEEAAAAIIAEAAAQAIIAAAAQQAIIAAAAHkWwAACCAAAAEEACCAAAAEEACAAAIAEEAAAAIIAEAAAQAIIAAAAQQAIIAAAAQQAIAAAgAQQAAAAggAEEAAAAIIAEAAAQAIIAAAAQQAIIAAAAQQAIAAAgAQQAAAAggAQAABAAggAAABBAAggAAABBAAIIAAAAQQAIAAAgAQQAAAAggAQAABAAggAAABBAAggAAABBAAgAACABBAAAACCABAAAEACCAAQAABAAggAAABBAAggAAABBAAgAACABBAAAACCABAAAEACCAAAAEEACCAAAAEEACAAAIAEEAAgAACABBAAAACCABAAAEACCAAAAEEACCAAAAEEACAAAIAEEAAAAIIAEAAAQAIIAAAAQQAIIAAAAEEACCAAAAEEACAAAIAEEAAAAIIAEAAAQAIIAAAAQQAIIAAAAQQAIAAAgAQQAAAAggAQAABAAggAEAAAQAIIAAAAQQAIIAAAAQQAIAAAgAQQAAAAggAQAABAAggAAABBAAggAAABBAAgAACABBAAIAAAgAQQAAAAggAQAABAAggAIAD3P8BnzKFZbJXepAAAAAASUVORK5CYII=", "ours": {"svg": "", "m": {"de00": 0.07628879696130753, "lpips": 0.0027767822612076998, "dino": 0.9913400411605835, "params": 1462, "bytes": 11366, "sec": 1.9279832000029273, "paths": 6, "cubics": 163, "lines": 233, "arcs": 0, "prims": 3, "gradients": 0}}, "vtracer": {"svg": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "m": {"de00": 0.45860040187835693, "lpips": 0.009660689160227776, "dino": 0.9977949857711792, "params": 6024, "bytes": 41418, "sec": 0.09205720003228635, "paths": 40, "cubics": 1004, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, "artist_paths": 12}, {"name": "abrinor", "png": "data:image/png;base64,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AAEAABCAAAAACEAAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAACEAAAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAEIAAAAAIQAAAAAQgAAIAABAAAQAACAAAgAAEAABCAAAAAxoz/H2cxJLRsbgmKAAAAAElFTkSuQmCC", "ours": {"svg": "", "m": {"de00": 0.011977591551840305, "lpips": 0.00018242624355480075, "dino": 0.9999648928642273, "params": 1316, "bytes": 11648, "sec": 1.1889451000024565, "paths": 19, "cubics": 131, "lines": 244, "arcs": 0, "prims": 8, "gradients": 0}}, "vtracer": {"svg": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "m": {"de00": 0.36384817957878113, "lpips": 0.00547429034486413, "dino": 0.9931083917617798, "params": 5082, "bytes": 34969, "sec": 0.0817490000044927, "paths": 54, "cubics": 847, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, "artist_paths": 30}], "all": [{"name": "365retailmarkets_com", "artist_paths": 18, "ours": {"de00": 0.01113954558968544, "lpips": 0.0001805540086934343, "dino": 0.9999954104423523, "params": 731, "bytes": 6228, "sec": 1.2686528000049293, "paths": 7, "cubics": 79, "lines": 115, "arcs": 0, "prims": 5, "gradients": 0}, "vtracer": {"de00": 0.372999906539917, "lpips": 0.004229877609759569, "dino": 0.9948815703392029, "params": 2346, "bytes": 16627, "sec": 0.07387200003722683, "paths": 26, "cubics": 391, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "3-gis_com", "artist_paths": 10, "ours": {"de00": 0.012719308026134968, "lpips": 0.0007896515890024602, "dino": 0.9995983242988586, "params": 524, "bytes": 4303, "sec": 0.7702832000213675, "paths": 4, "cubics": 51, "lines": 65, "arcs": 10, "prims": 4, "gradients": 0}, "vtracer": {"de00": 0.2502022385597229, "lpips": 0.0023608405608683825, "dino": 0.9908484220504761, "params": 2256, "bytes": 16222, "sec": 0.08760490000713617, "paths": 31, "cubics": 376, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "abrinor_fr", "artist_paths": 30, "ours": {"de00": 0.011977591551840305, "lpips": 0.00018242624355480075, "dino": 0.9999648928642273, "params": 1316, "bytes": 11648, "sec": 1.1889451000024565, "paths": 19, "cubics": 131, "lines": 244, "arcs": 0, "prims": 8, "gradients": 0}, "vtracer": {"de00": 0.36384817957878113, "lpips": 0.00547429034486413, "dino": 0.9931083917617798, "params": 5082, "bytes": 34969, "sec": 0.0817490000044927, "paths": 54, "cubics": 847, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "1jour1actu_com", "artist_paths": 3, "ours": {"de00": 0.005688590928912163, "lpips": 0.00011724380601663142, "dino": 0.9999987483024597, "params": 263, "bytes": 2459, "sec": 1.4282186000491492, "paths": 2, "cubics": 33, "lines": 19, "arcs": 0, "prims": 5, "gradients": 0}, "vtracer": {"de00": 0.2614158093929291, "lpips": 0.010551544837653637, "dino": 0.999821662902832, "params": 2460, "bytes": 19180, "sec": 0.11193179996917024, "paths": 9, "cubics": 410, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "9marks_org", "artist_paths": 7, "ours": {"de00": 0.03746702894568443, "lpips": 0.004718291573226452, "dino": 0.9991939067840576, "params": 784, "bytes": 6964, "sec": 1.3715078000095673, "paths": 4, "cubics": 90, "lines": 77, "arcs": 0, "prims": 16, "gradients": 0}, "vtracer": {"de00": 0.3520817458629608, "lpips": 0.008578050881624222, "dino": 0.9915611743927002, "params": 4230, "bytes": 27017, "sec": 0.0803229000302963, "paths": 84, "cubics": 705, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "abillionveg_com", "artist_paths": 5, "ours": {"de00": 0.0035533809568732977, "lpips": 4.597874794853851e-05, "dino": 0.9999511241912842, "params": 59, "bytes": 926, "sec": 1.5654212000081316, "paths": 1, "cubics": 6, "lines": 1, "arcs": 0, "prims": 5, "gradients": 0}, "vtracer": {"de00": 0.21880365908145905, "lpips": 0.0005196436541154981, "dino": 0.9998085498809814, "params": 462, "bytes": 3888, "sec": 0.06953660002909601, "paths": 6, "cubics": 77, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "abplastics_com", "artist_paths": 12, "ours": {"de00": 0.00932601559907198, "lpips": 0.0006373311043716967, "dino": 0.9999746680259705, "params": 636, "bytes": 5548, "sec": 1.1639711000025272, "paths": 9, "cubics": 63, "lines": 126, "arcs": 0, "prims": 1, "gradients": 0}, "vtracer": {"de00": 0.3501643240451813, "lpips": 0.005887424107640982, "dino": 0.9979124069213867, "params": 2928, "bytes": 21107, "sec": 0.08710770000470802, "paths": 23, "cubics": 488, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "5corunafs_com", "artist_paths": 12, "ours": {"de00": 0.07628879696130753, "lpips": 0.0027767822612076998, "dino": 0.9913400411605835, "params": 1462, "bytes": 11366, "sec": 1.9279832000029273, "paths": 6, "cubics": 163, "lines": 233, "arcs": 0, "prims": 3, "gradients": 0}, "vtracer": {"de00": 0.45860040187835693, "lpips": 0.009660689160227776, "dino": 0.9977949857711792, "params": 6024, "bytes": 41418, "sec": 0.09205720003228635, "paths": 40, "cubics": 1004, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "12onyourside_com", "artist_paths": 12, "ours": {"de00": 0.07869803160429001, "lpips": 0.008024539798498154, "dino": 0.9981340169906616, "params": 806, "bytes": 6527, "sec": 1.7960455999709666, "paths": 6, "cubics": 106, "lines": 76, "arcs": 0, "prims": 3, "gradients": 0}, "vtracer": {"de00": 0.39485684037208557, "lpips": 0.017935123294591904, "dino": 0.9984128475189209, "params": 5094, "bytes": 34795, "sec": 0.10829269996611401, "paths": 102, "cubics": 849, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "acs-logistics_at", "artist_paths": 2, "ours": {"de00": 0.009830333292484283, "lpips": 0.0001991789322346449, "dino": 0.9999986290931702, "params": 532, "bytes": 4734, "sec": 1.1906340999994427, "paths": 5, "cubics": 62, "lines": 67, "arcs": 0, "prims": 5, "gradients": 0}, "vtracer": {"de00": 0.35421812534332275, "lpips": 0.004313377197831869, "dino": 0.9994019269943237, "params": 1998, "bytes": 14618, "sec": 0.0812044000485912, "paths": 22, "cubics": 333, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "acmc_gov_au", "artist_paths": 3, "ours": {"de00": 0.025311263278126717, "lpips": 0.0025048130191862583, "dino": 0.999718189239502, "params": 770, "bytes": 6430, "sec": 0.9309489000006579, "paths": 10, "cubics": 41, "lines": 259, "arcs": 0, "prims": 1, "gradients": 0}, "vtracer": {"de00": 0.24070562422275543, "lpips": 0.0032775586005300283, "dino": 0.9996267557144165, "params": 1962, "bytes": 15197, "sec": 0.0872664000489749, "paths": 11, "cubics": 327, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "adamo_es", "artist_paths": 24, "ours": {"de00": 0.05401008576154709, "lpips": 0.0039726728573441505, "dino": 0.9998680949211121, "params": 1192, "bytes": 9963, "sec": 1.3416701999958605, "paths": 12, "cubics": 153, "lines": 125, "arcs": 0, "prims": 4, "gradients": 0}, "vtracer": {"de00": 0.43985092639923096, "lpips": 0.011699022725224495, "dino": 0.997603178024292, "params": 10740, "bytes": 68922, "sec": 0.09905199997592717, "paths": 219, "cubics": 1790, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "7forallmankind_eu", "artist_paths": 9, "ours": {"de00": 0.01643338054418564, "lpips": 0.00046315439976751804, "dino": 0.999876856803894, "params": 1050, "bytes": 8366, "sec": 2.029090400028508, "paths": 6, "cubics": 156, "lines": 49, "arcs": 0, "prims": 4, "gradients": 0}, "vtracer": {"de00": 0.37980660796165466, "lpips": 0.0041840095072984695, "dino": 0.9961073994636536, "params": 3168, "bytes": 22929, "sec": 0.07824190001701936, "paths": 25, "cubics": 528, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "5avshop_es", "artist_paths": 7, "ours": {"de00": 0.009763937443494797, "lpips": 0.0002909494796767831, "dino": 0.9999816417694092, "params": 370, "bytes": 3008, "sec": 0.9393927999772131, "paths": 1, "cubics": 43, "lines": 50, "arcs": 0, "prims": 2, "gradients": 0}, "vtracer": {"de00": 0.27328816056251526, "lpips": 0.0017831362783908844, "dino": 0.9995805621147156, "params": 978, "bytes": 7134, "sec": 0.07114389998605475, "paths": 13, "cubics": 163, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "aandeheikant_be", "artist_paths": 30, "ours": {"de00": 0.0032556827645748854, "lpips": 9.839553240453824e-05, "dino": 0.9999933242797852, "params": 546, "bytes": 5103, "sec": 1.117706699995324, "paths": 7, "cubics": 15, "lines": 207, "arcs": 0, "prims": 7, "gradients": 0}, "vtracer": {"de00": 0.38529452681541443, "lpips": 0.005379500798881054, "dino": 0.9992194175720215, "params": 2622, "bytes": 16557, "sec": 0.08270229998743162, "paths": 34, "cubics": 437, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "724canlidestek_com", "artist_paths": 4, "ours": {"de00": 0.038905322551727295, "lpips": 0.009318830445408821, "dino": 0.9974133372306824, "params": 112, "bytes": 1107, "sec": 0.7282997000147589, "paths": 2, "cubics": 13, "lines": 14, "arcs": 0, "prims": 1, "gradients": 0}, "vtracer": {"de00": 0.22156548500061035, "lpips": 0.005463592708110809, "dino": 0.9779409170150757, "params": 2766, "bytes": 20695, "sec": 0.10054440004751086, "paths": 33, "cubics": 461, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "115animal_com", "artist_paths": 25, "ours": {"de00": 0.012538302689790726, "lpips": 0.0008486868464387953, "dino": 0.999984860420227, "params": 865, "bytes": 8444, "sec": 3.555389399989508, "paths": 12, "cubics": 59, "lines": 232, "arcs": 0, "prims": 9, "gradients": 2}, "vtracer": {"de00": 0.612904965877533, "lpips": 0.0061216801404953, "dino": 0.9619289636611938, "params": 3450, "bytes": 23123, "sec": 0.07821940002031624, "paths": 41, "cubics": 575, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "12port_com", "artist_paths": 7, "ours": {"de00": 0.009192581288516521, "lpips": 0.0004053375159855932, "dino": 0.9999890327453613, "params": 356, "bytes": 3373, "sec": 1.3381418000208214, "paths": 7, "cubics": 38, "lines": 58, "arcs": 0, "prims": 2, "gradients": 0}, "vtracer": {"de00": 0.3435945510864258, "lpips": 0.004849237855523825, "dino": 0.9994003772735596, "params": 1296, "bytes": 9401, "sec": 0.0878676000284031, "paths": 14, "cubics": 216, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "acceleratetech_net", "artist_paths": 5, "ours": {"de00": 0.005754638463258743, "lpips": 0.0006676391931250691, "dino": 0.9999777674674988, "params": 242, "bytes": 2329, "sec": 0.9622492999769747, "paths": 3, "cubics": 17, "lines": 62, "arcs": 0, "prims": 3, "gradients": 0}, "vtracer": {"de00": 0.3111736476421356, "lpips": 0.00852267351001501, "dino": 0.9972852468490601, "params": 1458, "bytes": 10744, "sec": 0.07674529997166246, "paths": 11, "cubics": 243, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}, {"name": "aboutkidshealth_ca", "artist_paths": 22, "ours": {"de00": 0.0066679841838777065, "lpips": 0.0002703055797610432, "dino": 0.9999750852584839, "params": 1006, "bytes": 8824, "sec": 0.8807081999839284, "paths": 11, "cubics": 98, "lines": 182, "arcs": 0, "prims": 9, "gradients": 0}, "vtracer": {"de00": 0.31998202204704285, "lpips": 0.0042241476476192474, "dino": 0.9991432428359985, "params": 3066, "bytes": 20799, "sec": 0.09328680002363399, "paths": 38, "cubics": 511, "lines": 0, "arcs": 0, "prims": 0, "gradients": 0}}]} \ No newline at end of file +{"run":"crosscompare-competitors-2026-09-25","date":"2026-09-25","seed":"crosscompare-2026-09-15-v1","cases":21,"families":["brands","fluent-emoji","lucide","material-icons","noto-emoji","openmoji","simple-icons","synthetic","twemoji"],"engines":[{"id":"inkvec","name":"Inkvec","n":21,"de_mean":0.11598414710412423,"de_median":0.05346144735813141,"dists":0.01684944686435518,"dino":0.9947508147784642,"geometry_mean":1.4790657486960306,"geometry_median":1.038728897715988,"coordinates":467.7142857142857,"seconds_median":0.564837499987334,"seconds_mean":0.7060960714283976},{"id":"trazor-auto","name":"Trazor (PhenX/Trazor, MIT)","n":21,"de_mean":0.5182975897831577,"de_median":0.226552352309227,"dists":0.04785776989800589,"dino":0.9711342624255589,"geometry_mean":7.6338167938788475,"geometry_median":2.0961538461538463,"coordinates":1171.7142857142858,"seconds_median":1.7459360000211746,"seconds_mean":1.7677349666649076},{"id":"vtracer-1.0-simplify","name":"VTracer 1.0.0-alpha.4, best flags (--simplify)","n":21,"de_mean":1.264425209590367,"de_median":0.5786392688751221,"dists":0.06364915768305461,"dino":0.9538261265981764,"geometry_mean":4.957812730157383,"geometry_median":2.693048128342246,"coordinates":1239.3333333333333,"seconds_median":0.042943400010699406,"seconds_mean":0.04350283333943004},{"id":"vtracer-1.0-default","name":"VTracer 1.0.0-alpha.4 (default)","n":21,"de_mean":1.3025437990824382,"de_median":0.5983838438987732,"dists":0.050760584218161445,"dino":0.963265373593285,"geometry_mean":9.055890547225113,"geometry_median":4.34640522875817,"coordinates":1943.2380952380952,"seconds_median":0.04223419999470934,"seconds_mean":0.041051433332974},{"id":"vtracer-default","name":"VTracer 0.6.15 (PyPI, default)","n":21,"de_mean":1.3025041811522984,"de_median":0.5982004404067993,"dists":0.05079895257949829,"dino":0.9633089076905024,"geometry_mean":9.055285220348601,"geometry_median":4.34640522875817,"coordinates":1942.952380952381,"seconds_median":0.029981100000441074,"seconds_mean":0.034969528567411805}],"best_de_wins":{"inkvec":21},"gallery":[{"key":"brands__shinhancard_com","label":"Shinhan Card","what":"brand logo","artist":{"paths":12,"coordinates":1542,"geometry_params":1542},"input":"data:image/png;base64,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","engines":{"inkvec":{"svg":"\n\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.05410537123680115,"dists":0.014956772327423096,"dino":0.9994577169418335,"coordinates":356,"geometry_ratio":0.248378728923476,"paths":4,"bytes":3516,"seconds":0.6478184000006877,"gradients":0,"arcs":3,"cubics":16,"lines":110,"primitives":3},"vtracer-1.0-simplify":{"svg":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","de1024":0.5712850093841553,"dists":0.05452615022659302,"dino":0.9714457988739014,"coordinates":1254,"geometry_ratio":0.8132295719844358,"paths":17,"bytes":5546,"seconds":0.04579830000875518,"gradients":0,"arcs":0,"cubics":198,"lines":0,"primitives":0},"trazor-auto":{"svg":"","de1024":0.21315760910511017,"dists":0.02556788921356201,"dino":0.9954003691673279,"coordinates":886,"geometry_ratio":0.791828793774319,"paths":3,"bytes":7882,"seconds":1.6637012000137474,"gradients":0,"arcs":11,"cubics":68,"lines":139,"primitives":70}}},{"key":"brands__sangchaimeter_com","label":"SCM","what":"brand logo, halftone dots","artist":{"paths":176,"coordinates":1186,"geometry_params":2805},"input":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAC1nklEQVR42uy9d2Acx3n3/8xsu4reGwGQBAgWkAQ7KZFU7y6SbEuyJcc1xbEdJ053/CZxev3FsWPHvciWLRdZvRf2ChYQBEiARO8d17fMzO+PuTvcLQrLUoogzed19IIY3D7PfXd3ntnZmedBjDEQCAQCwbsPLCQQCAQCEQAEAoFAIAKAQCAQCEQAEAgEAoEIAAKBQCAQAUAgEAgEIgAIBAKBQAQAgUAgEIgAIBAIBAIRAAQCgUAgAoBAIBAIRAAQCAQCgQgAAoFAIBABQCAQCAQiAAgEAoFABACBQCAQiAAgEAgEAhEABAKBQCACgEAgEAhEABAIBAKBCAACgUAgEAFAIBAIBCIACAQCgUAEAIFAIBABQCAQCAQiAAgEAoFABACBQCAQiAAgEAgEAhEABAKBQCACgEAgEAhEABAIBAKBCAACgUAgEAFAIBAIBCIACAQCgUAEAIFAIBCIACAQCAQCEQAEAoFAIAKAQCAQCEQAEAgEAoEIAAKBQCAQAUAgEAgEIgAIBAKBQAQAgUAgEIgAIBAIBAIRAAQCgUAgAoBAIBAIRAAQCAQCEQAEAoFAIAKAQCAQCEQAEAgEAoEIAAKBQCAQAUAgEAgEIgAIBAKBQAQAgUAgEIgAIBAIBAIRAAQCgUAgAoBAIBAIRAAQCAQCgQgAAoFAIBABQCAQCAQiAAgEAoFABACBQCAQiAAgEAgEAhEABAKBQCACgEAgEAhEABAIBAKBCAACgUAgEAFAIBAIBCIACAQCgUAEAIFAIBCIACAQCAQiAAgEAoFABACBQCAQiAAgEAgEAhEABAKBQCACgEAgEAhEABAIBAKBCAACgUAgEAFAIBAIBCIACAQCgUAEAIFAIBCIACAQCAQCEQAEAoFAIAKAQCAQCEQAEAgEAoEIAAKBQCAQAUAgEAgEIgAIBAKBQAQAgUAgEIgAIBAIBAIRAAQCgUAgAoBAIBAIRAAQCAQCgQgAAoFAIAKAQCAQCEQAEAgEAoEIAAKBQCAQAUAgEAgEIgAIBAKBQAQAgUAgEIgAIBAIBAIRAAQCgUAgAoBAIBAIRAAQCAQCgQgAAoFAIBABQCAQCAQiAAgEAoFABACBQCAQiAAgEAgEAhEABAKBQCACgEAgEAhEABAIBAKBCAACgUAgEAFAIBAIBCIACAQCgUAEAIFAIBCIACAQCAQCEQAEAoFABACBQCAQiAAgEAgEAhEABAKBQCACgEAgEAhEABAIBAKBCAACgUAgEAFAIBAIBCIACAQCgUAEAIFAIBCIACAQCAQCEQAEAoFAIAKAQCAQCEQAEAgEAoEIAAKBQCB4k5GFBILLgTLGGAAAQoARsrdSxgAQAEKA0lsZA/5RBICQrREYY4wBb8UYXYVRAMBXbHSmdbZRxhjlRq/QpfhhGQCav/XN0IExxuYWnzLGZk4Nsh15YZco5R8FBAjjuY58VdeD4G0Fip9GgUAgELzLEFNAgktjEZr6T8MkqUNXkt6a+seEMvugMuU3tsMSQlOHI6lWbH/MGJhW2mdT/0lZmhUAIITN+TM3SlOMzj5s6gBpAR1ofKg9t0uzdSBvvg62w9pdImzO8f6cOvAv6Px6EIgnAMGihBAW1U0AcGuKJNkf6nWTmCbBGHlcyuzPRnWLECpJ2K3NMeUYiZmUMkWRNEWaz6imyoqM5zQKAB63MnsWghudzyVudE6XKGORqAkAC7s0pw6RmGlYVMZoztY3SQfTorphYYxcmmzTwbRoKGJQxjBCHrcy+8gL6BCJmVHdAgBJwlk+7RpeD4K3D+IdgOASUMowRi1d48fPDgLAxlXFa5bm8Y4s+TcHTvV3D0573er1DWXFuV7GWHLmNxA29p7sG50I5+d4b99eJSemoflhB8fD+070haPGkuLMGzdVpI6CJQknja6szt2yuoR/hA8zEULcKADs2lhRXZKZbAUAi7JXj/WMToS9bvX27VUZXpUxQAj4fwNh44WDneGokZ/jvfu66tRxuoRR12Bgz/EeAOAuJb/LJXUwLPrMvo6uwen8LDdvTXVpPh348Z3ocOLcUEvHuNetblxVZNPhxLmh5w90hqOm163sbChPfp3ZOsx26Zl9HcfODgJAfo7n4btWFed6HVwPIF4EiAAgWJyzhBjtO9n39L6LjS1DANDaNfGhW2o31BUlx8u/eePCM3svdA8GvG6la2D6gdtWVBRl8NbpkP7jZ1v2n+obnYzkZ3tGJsIP3Frnccn8sD1DgZ+9eG7/qb5w1FxSnDEV0t+3exkfw0oSbmwd+vnL57nRuqpcw6TXry+LP7ci9MLBzsdfPtc9GACAnqHgh26tXVGZCwAMgBD6o2fPvnSoa3Qy4nUrIxORB29fkZvpBgCEYHw6+tgL51463BmOmvnZHsMkd1+/VJExApAwOtc1/vOXzu890QsAS4ozDJPcvr3qcnQwLPr4S+e4S3lZ7tauid++d+3Ssqz5dLjvxppMn8a/i0Mdntl3sbVz3OtWWjvHP3LnyqTRobHwj59tefFQZyRqetxKz1CgJN/LVZqtw8hE+CN3ruI6IIRePdbz6HNnudG8bA8w+PxDG/gDxMI6EMqe3DPv9SAQAUCwyIiZ5G+/ffDImQHdIABw7Ozg6fPDL379g7y1a2D6T/+/1wdGwxahGKF9J/oMk3zpk9t4657G3i9/Y19Mt/jg+pXDXUvLsnY1lPPWHz1z9t9/fCymW5Sxw01434nedTX51aXx/usvvrb3UFPc6NHmgfPdE0//130uRQKA0cno5/7llf6REJ9fbmwZ6h8JfutLtwEAMDh7cfxP/vONSMwklGGE9p/sy/SrD9+5ih/2uQMdX/7GvmjMooxJGDW2DFaVZK6rKQAEAPAfjx5//KVzfOrjcBPef7LvwA8+kp/lvqQOZy+O/b9v7h8YCZmEShgdOzsIDP7l87vm0yEv0/2eXcuuiQ6DYyHDpBihvY294aiZNPrLV8//8OkzkZjFx+wDIyFZwnGVZunwyuGu9bWFXIeIbv35V/ecaR+NGRYADE9E/vF7h2/esqRhReEldehc8HoQvO2Gd0ICwcLsP9m353hPcDBghHQjpAcHA68e6W7tHOetv3jl/IWWochYyAjpsenoVM/E4y+fC0YM/nDwk+dbJrvGo5MRI6RHJyPjF8d++HQzf504Mhl5/OVzUz0TsemoEdIjY6ELLUO/eOU8P2xr5/irR7qTRkPDoT3He/af7OOtLx3uam8e5EaNkD7dN/X03gu9w0E+tv3Ob06PXxzjRmPT0cmu8R8+1cx7q5hBfvhU82TXODcanYxcaBl67IVWPkFxoXfq6b0Xpvum+GEjY6H25sEXDnRejg6PvdDacX44Nh0lMZO3/vq1tpHJyHw6/OT5Fq5DMGI41CE0HBd/um/q16+1cR240dBwiJoEKKMmiYyFnt57IRQ15tRh/OJYUofWzvFjp/pi01GgDCgjMXOqZ+LJN9ovR4fn9l+cfT2EY6a4j0QAECxKnnz9gmlRlOlCLhm5ZJTpIpQ9t/8ib/3Js2dRhgv5NeSSkUdBOd4zbSPtPZMAMB0yXjjQgXJ9yKsil4y8Ksr3/fKV89MhHQCaL4ydaRtBOV7kUZBLRn4NZbh+8uzZZD9CKJsxmqGZFn3y9fZEb9uCMhNGXTLKdg+NhfmENWPww6ebUX7CqEdBub5Xj3T1j4UAYGAs9OqRLpTrixv1qijD9bMXW/lKiD0neofGwijbHT+sX0OZrsdfar0cHX72YivyacijgCLx1os9k80XxubT4YUDHVyH9p5JpzpkJMTPdl/smeQ6TIf0w6f7UYYGEgaMQMLIrw2Nhdu6J+fWId+X1OGNYz1IlZBHAYwAI1AklON9ImF0YR1++fL52dfDyERE3EciAAgWJc0XR4ExjOJghIDBkeZBAIjo1rmuCf7LeCtGYJDG1mEA6B8JBqaiUrINIQmj4GSED1FbOsbAIBjPHBYhdK5rghs9fGYQGKQbZafbR+KtTQN2oxZt6RgHgMGxUHAiYjMKMetc5wQAtHdPQsxKbUUI9Q5O940EAeBM+yhY1ObSmQujl6ND72Ag9VMYIbBIS+f4fDoEpqNch8bW4Tl1iPBpqCvWgXAdugcDYJDUL4oRAkKPnh2cUwcJz+hwqKkfGKR+EGPUljg1C+tw8vzI7OthdDIq7iPxDkCwKBmeCCOMU9etI4x6h4IAENMt06SQvr1U8qgXeycBoG8kKGly6jJwCkxyKUNj4fpl+QOjIcmj2taMU8L4LHn/SBBhlG4UTwZi/OfxsRCkr2jEqtQ3HASA7qGA5FFtRmWf1jccAICOvknZp9lWpiOMB8dC5YX+0ckIViXbAnk+jXNJHRCGmc0HDABA0uT+4eB8OmBV5jpc7J2cU4eYbnk0+Up1kDSZ6zA+FcVuJfWDhAFWpL6h4Jw6UGBJHYbGw4BQ8uswACCMmOxydAiFdEjbb8wkjxoMG+I+Ek8AgkVJKGLEu7TkDZ/YFsQTBdhAib8OR4zZaQAYAJ9noIzNsTIQQThq8pmcWa1sxou5Pstnt4NhY84Fh9xoKDrHZDRCQOfZDYMAoonO6xI6zHFYRCidT4ekS2wOCQFQ/JhXrYNLk2dv8cEIZWe6LqlDToZLSk8agRCSE5HmUtcDmut6EJuNRAAQLE48moIgnimGrxGklJYV+AHApUrAmITj/RtPC2PFzJJ8HwBk+lxWxMCprRhRkxTkeACgKNdnxUyMZloljIAx/s+8LDelNJmfBiGEALkSm5Wycn2Q/CAARohaNMuvAUBxns+KmjajVtTMy3IDQH6224qmGcUYUd0qyvUCgM+jUJJqFAAhv991OTowMocOlSWZl9ShJH9uHVyqdKU6IIRIQofyQj8ChFOmpBBCVtRcV1twSR3W1RZyh5OfZZRWlWZe1vUAc+jg86jiPhIBQLAoWbM8H6HEOBQBAkAYbVhZxPuCglwv7ylnxnsS5ovNl5Rkgpw2kkQAHq9aXuQHgLqqXJBwyvgWAUIFuV6fWwGAldV5CCf6mERasWQftHFlEU5rA8Bo1dJ8AKirytF8qs0oSKiiOAMA6qrzQEKpg2oEoHnV8sIMAKgsyUw1CoAwgs2riy9Lh7w5dOCr4xfWYUXl3Dp4tMvSIbUNwYwOpQX+peVZ3CP+JxiB5lPrlxdcUodta0vjDic+izDamVi8exXXA4++AhEABIuPD966gkxFqWFhjBgDGjMRQrs3lvMh3n031ZLREDOJLGFGGA3qZcUZa5bl8bHt2roiMhVlhGGMGGFkKrq1vjTb7wKANcvyyoozaNiIt5qEjIbuu6mWjx5v3lqJEKIxkzHAGFHDIlPR+26u5S7dvXMpCcSYSeIuhQ23S+bbC2QJv2fXMjIRYYRxl8hUtKY6r7o0EwBqKrJrqvNoUJ9pnYi8Z9cyPuNx85ZK/gW5UWYSEoh96La6q9ahtjLHgQ5wOTrQkB43yoDGzKQOEkYfuq2OTEVp2KCGRcMGCcTes2sZ39OwsA4NKwrX1hWRiUj8s0GdMbj3ptqr0SFslBVnFOZ4xH0kAoBgUXLnddXF1blYlSmhwEByK5tXF69Zls9bH7l7tasoAynYMglgJGe67tm5jE8BeV3yQ3esVHO9gBElFDBSc70fvKWW9zIl+b57di6TfRpvRQp2FWU8cvdqftht9SWbVxdLbgUYUEKxKhdX5959/VLeesuWyqIlOUjB3CXZp+3eULGyOhcAGINPvK9eK/ABRtwlNdd73021fCdwtt913021cqYr2aoV+D7xvno+Rb1pZdG2+tKkUaTgoiU5d1639Kp14Cl03lQdCsuy40YZSG5lRgeAh+6oK67OlX0aVmXZpxUtyfnE++r5BxfWoTDH89AdK7UCX/yzma5t9aU7G8quRgefds/OZX4xBfR2Rfrrv/5roYJgAVRZKszztXVPjowENbeycWXxn398a33ihs/L9igy7uibnuqfzi3y37at6o8f2VyYE88bU1ro0w3S0T8VDem5ud6P3rP6E++rz/DGu4OK4oz2nsmpkB4N6ZVl2X/w4Y333lgjSxgAVEUqyPF09gdGpyJEt1bVFPzN7163MZFvINOnZfpdzRfGpiYjmlu5YWPFX316ezLfQGGu17JYa9d4dCSUW+T/6D2rf/u+tbmJWYjyQn/fSHBkMsJbP/PBhofuWKnKEh9xV5Vmne+e5EYry7L/8lPbb9xY/nbWAUuovWdyqn9ay9A2riz+ymeuj+vAICfTXZzvC4Z0l0upX57/Ox9suOu66mQ+uIV1KC30KbLkUiWXS9m+tvTPPra1dknOVeiwY23pX35yW1IHgQgAgkUDX9hBKF1XUzAxHXO55XW1hXddX/3wXasSdUSYIuO66typoA6avHtj+f031+5sKKeU8USz2RmuojxvJGYW5Hm31pd86t61tRU58VVAlBXleRkDn0cpyPPesGnJ5x/cwPtExoBSVleVG4lZPrdaXpJx53XVv//BBkIZAgTAZAmvXpY/MhHOzHCtqy289+bae65fmmzVVLmyNHMyENP8rt0byz9179rVS/N5hRLKWH62R1MlRca89bMPbijK9fI8cYTQpeVZSaM3bFryhx/ZKGE+o80IZVesA7sMHRgryr16HZaVZ0+HdNDkrWtK7rq++v6bapOtCMHa5QUMoKLIf11D+UfuXOlxKfycLqwDZSwnw1VVmpmV4aoo8t+ytfKO7dWU8nR6V3Y93LVz2a1bK0UyuLctIh20YF4IYTzNvaZIQ+PhUMSQMM7wqXw6xSKUJ5lBCA2NhYMRw+uSszNdPrfKGCOEEco0VYrq1uhkxDCJpkhFeT5FxjTR6lKlielYOGroJvG4FD5xxHPlU8o0VRqdjIQiJqE0w6vxNTPcKEJIkXH/SDCqWxLGOZmuTJ/Ge3DKmIQxYWxoLBSJWV6XzI0yxiwS/y7TIT0Q0sMxy+uSywoz+PJHQuJGRyYi4ahJKE26xI0ygGurQ9wlyjQHOmAEQ+PhYMTUFIm7lNSBqzQV1A2TaKrEc88xBhahXIepoB4I65F5dLAIDUdN3SAet+xzq1d3PWT4tMxZqaQFIgAI3u6kZhW2YVkUYzRfq2nR2TnrL6eVMSCUyhKe74MYgTRPq2ESWcYYXY1LFpnXKKEMGJvPKM93dnU6WBaVr1oHjKR5jC6gA6EMGMzO3X85OhgmkSQ8n1EnOghEABC8LQMAY3j+5/aFW1PrAczu3RaYDVjggwvHpIVdYgBwtS69eToAzGv3HaaDQAQAwWKCd0AtneONLUM9Q4GKoox7di3L8ml8GM4f8/ee6OU5f8qL/PffVGuYBCOEEoPTFw52NrYO5WW5aytzd28oj+mWLGEsIYxQKGq+dKizsWVoRVXuutrCNcvyDJPwbUcYo5HJyIsHO891jq+oyr15y5LiPB9v5flqjrcMNbYOjU1FV1Tm3rNrmYwRoQxjxOvCv3Cwk6elrK3MuXNHtW5YEo4bBYBfv9bWPRjwuOT1tYWbVxfHDEvGWJIQQigUNZ94rY1/03W1BWuW5ae6lDRq0wEASRLae6K3tXM8ErMuRwfeyl2ijP3m9fbWzvGKoow0HTDCaF4dbC7VVua8Z9fyuA6JU5PUYUVV7h3bq/j4PbntK6lDzZKcGzZW8FMzW4eGusJV1Xn8gYPLO9/1MKcOhFDGAM3/sCJ4OyByAQnmGhcgpBvkl6+cf/KN9tPnR9bWFvi92nt2Lk0+y/eOBH/wdPOTb1wAgHU1+csrctYuz09+/HT76Ld+ffqpN9qXlGTu2lC+tDyrvMCfHL2+cqT76z8/8dobFxo2lr939/Jl5VnJeoSGSZ7b3/HfP2s8cby3YWM5oezDd6xUEwtXwlHzpy+0PPnGhe6B6V0bynOzXLsaKhQ53r/0DAe/9evTexp7AWDXhvJVS/OWJNYFMYCm9tGv//zEqbbRLL/23t3LVi3N87rj1QoJoa8c6f7/fnqcf9P37l5eU5GjqXGjUd1KGp1Phz2NvVNB/Yp0YAz2nuj9+s9P7Gns5UYX1uGh2+uSOkRiaTrkZbkX0GFlde58OuzaUL6sItt2alJ1WFaWndThcq6HVB3ql+eLjv/tj1gFJJibX7zS9p+PHmvrniSB2GjYaO+Z2L2xIjfThRAilH35f/Y98Xr72HAwGjaGp6NdA9Pvv7GWzyDHDPJ7//Dinsa+6Hh4MmIOjIWmg/odO6r5g0V77+QX/u3Vk+eHzUBsNGp2DUxn+LQNdYXc6AsHO//uO4fOXhijIX00al7onVy1NK+qJL7x9R+/f+TRZ89290+zkD4c0ls6xm/bXp1cTPkH//baCwc6J0dD0bAxNBVt75n44K0reNPoZOQL//rqvpN9gYnIZEjvGwnFDLJ7Qznv9U62jf7pf71xum2Uf9OugenifD/fywYAP3i6+Ru/OMmN2nQAgL/6+r4nXm/vGwxEg7HL0eHWbVX8caR/NPS7//DS8ZYhYzLKjS6sQ1VJZk1iIeZ//+zEd39zxrkOc56a+XRY4HqYU4ebt1QmQ6zgbYt4OSOYA8MkP36muaN91LKomuWxLHr8cNcTr7Xxu71nOPDT51tHhoKSR5U8aiRiPv3KeZ6GHgCOnR18+pXzU5MRNcuDJDwyFPzp860T01H+YPHEa23HD3dFIqarwG9ZtKN99EfPNJsWBQCLsEefazlzos+yKG89c6Lvl4nSKBOB2PefPNPXPYkkrGZ5IhHz4J4Lzx3o4K3tvZM/ee7s1GSEuzQ1GfnVs2fPXBxLuDT09CvnIxFT8qhIwn3dk99/8sxUUAcAjNGvXj1//HBX8pt2tI/++Jl4ARnToj96pjlp1KbD+HSU64AkfJk69AwFeOtzBzoO7rkQiZhJo0kdAGC2Do8+15J8IvnB083XRAfu0thU2qmx6WCY5JLXw9jUnDoMiftIBADBoqRnOPhGYw/IGBgzLAKMgUv+7m+aeOuBk33jUxGQECE0nscYoZ8keqifPNcCCAECwyKMUpDQ+FTkhUPxulrf/U0TuGQA0E0LGAMZH2se7BkO8P70mX0XQZOBsXirJj+z7yLPjL/3RG/P0DTImFFqWAQAwK1894nT/LAvHuw0dQsQxF1CABg/miir8tQb7fz9JiGUUQoy7hma3peoq/XzF1vBJc98Uxm/0djDXeoZDhxrHpwxmq7DCwc7uQ6MXq4O+0/FjX73idPgVgAgaTSpQ0S35tQhZhAAaO2caO0YvzY6SGh8KvL8wY60U2PXIXjJ6+H5gx2zdXgqUUFMIAKAYJFxrnM8Oh2TXQqWMQBgGate7ULH+Ph0FAD2negDhCRVRggQAixj2aXwQuq8p5ZdiqRIAIAwllQZEHrjeC8ATAZiFzrGVa+GZcxY/IN6xDh1fgQAuganQ+NhxaMkWxWP0jMwPTgWAoC27klGmKzJCCdc8mknWod5t3j4zABWJEmRuEuSIike5XDTAHfp1aM9/LsgBAhjWZMZYUeaBwBgcCzc2TPJXeKHlV1KdDrW0T8NAKfPj+gRI82oV7vQMc4z8h841R/XAePL1OHgqX4+O3SidVj1pRlN6jA4FpqtQ2g8fLFvEgDOXBi1DOsqdTiWpgN36eS5YdupSdWhpWMMAFo6xua8HrgOJ88Nz9bh1WM94j4SAUCwKLnYNwWazLf28IlywySgSLxiVFvPRHwUyeK7VS1Ch8ZD/LND4yGLUF4whDHGh4S8SGTPcAAUyTBJ8rAWoaBIvHTi0GgI3IppzRg1LQoI8QonkZgJGFmE8nVr3CWLUF64vH8kyHdOcZcIZaZFA2Gdu9TRPxnfzMWAMWYRChjxai1tPRMgYbtLmjw0FgKAMxfGQJFsRkGR+FB9cDSU0IFdpg685FnMsCxC59Ohbzg4hw5u5ULvJAB0DUyBhK9Sh740HbhLk9OxeU+NJnf2TwFAZ//c1wPXYWI6NluHjr5JcR+JACBYlEyHYmp6qSk+Xc4LkJgWs+0nQghFohb/ORK1bCvNJYymgzEACEXN2YsCFRlPBWMAwABm7xiSJczrSekGmWObEqF8mUooYtqWxmOE+Pw1ADBqX+EuS5iXtLIIxXO5FIqYfFZqtg4SRrygCgNYWAfb0niMEf+mmipBegkwAFBlibeGo+ZsHRQZ81JlocgcrZerA7FvApAlHI5Z/NTM1kFVJMtiAGBZbM7rgeugG2S2DoyI9eUiAAgWJwXZXiNmLxpFCc3PdgNAaYGPmGn9F2PMn1iF4veqts0lhNCCHC8AZPtcxLJ3fKZBeLKwghyvaRBbq2USnsfN51Es096KFcmtygCQneGi6T0OpcylxVeh5Ga7bdtdLJMU5noBoCTfR8kcLmVnuACgrMA/Wwdi0WyfCwAKcjwL60BpukuE8W/qVmU8qz81dJO3Zvo0U7d/U1MnRXk+AMjyu2ardJk65Od6bafGMgkvIJPtc83WwYiZJQV+ACiZSwdK4jp43cpsHfJzRQI4EQAEi5N1KwpBt1RFkjDCGEkSVmSsaTKv7LF6aR4wpsiY71qSJSxhxHPfA0BtZY6EkZxslTEA2rS6GAAqijMUVVJkLEnxVkWWwCJra/MBgBdImTGKkapIwFhdZS4ALCvPBkIVWcKJVkXGyQygddW5KN0owmhJcby1oihDkbE8YxQDodVlmbxJ02Q54VLcKABfc7l9XWmaDhhpqqSoEi8vU1WSmaaDbNcBYbC5tClRXibVpbhRM6lDBjA2W4eKIj8ALCvPAovM6CDhy9dhBT816TrwTM4VxRmaJis2HXSLJwGtXZIz5/UQ16E0a7YOKxI6CEQAECwyVlTmllbmGNNRYhBqURIzzZC+s6GcJxO+bn2Z5lbMkE5NQi1qRU2iW+/dvZx/9r27lxPdssIGtSi1qBU2sIRu2VIJAD63csvWSjOkk5hJLUpNYgZj2Xk+3gcVZHvW1BQYUwmjBjGmog2rivkQdc3yfF+m2wzGuFFiEDOk37K1khu9ZUslIzTVKCP0ps1L4q1bK82gbkUTRkO6L9PdsKIQALwuZWdDuRU2uEvEIMZ0dE1NwdKyLACoX56fpoNB9InILVsredmyLWtK0nQIGzYdGGU2l7gONpe40YKSTK5DYY6nYXWxXYfVxfnZHq5Ddp5vRoeYaQYvV4e7dy4jumXTYdvaEn5qdjaUJ08Nd6m0MqeyhNdKy5jzeuA6bKufQ4e7dy4T95EIAIJFSaZXffiuVQDxuq6AEGjKp+5dy1u31ZdsqCuKlxnECBD4M93Jylkfuq3On+nmZRp564rKnC2Jke8ffHgjaEr8sBgBwO3bq4vzfACgKdJHbEYBPn3/Ov7B5eXZ168vA0geFoGmPHh73OhNm5aUFmWkGi0tynjP7ngf9ODtK0GTZ1oBXb++bG1NAW/91L1rkSanGv3IXauyfCoAZHhm6cC/AgAAbL+UDmWzXErq8ODtdTMuIQQA995Yk9Qh/q3TdeDRd3l59u3bq9N1kC9ThwduX5F2agBdv74smcr/U/eunTk1CAHAw3etyuYTRH5tgethTh0euH2FuI/e/oidwII5QAjystw9E5Fg1LQILS/OvP/WFZ96/1q3JiMEsoRVRRqajgYjJgAsr8p95O5V991YEw8ePi0Q1kMGmQzGZAmvqS38vQ82bF1TwqeGSwv8w5ORiaAe1S2fR92+sfwzH2pYXpHNP5uX7R6Yik6EdIvQvBzPbTuXfe7BDT6PyhMBuV3yaEifDOgAkJfjefCOlR97zxreLSoypgxGA7Gk0U/ft+6O7VWJw3qmgnogZgYjhs+jNqwu/v0HGvhwmzFWlOcbGAsFomZUt/JyPDu3Vn7+oQ15WfEqhqk65OV43nvris8+0CBhhBCS5TQd1tQWPnRHXaoOkZg1GTZSXUrW1crLcoeiFneJG/3MBxsqE3M1Rbne7rGwTYcMrwYAEkY+j9o/GeE6lBdnPnz36ofvWnU5OvBTMxbUU3VYnaLDRDDGT01chwc38JiEEJrnepDm16FW3EciAAgWK0V5vrLCjHDU9HvU3RuX/MlvbSnO8yaXkKytKZBlSTdIfrbn7p3LvvjRLS515q3mptUlABCOmuWFGQ/cXvf7H2pIxBUkS3htTeFUUFdkXFeV9zv3r7vruurkB/Oy3Cuqcsenon6PumlV8Z9+bGtNRXZy4UpdVW5Whms6ZORnezatKv7yp3cUZM8Um92+tlQ3SdLoHybG6QCAEdq+riwUMQlhdVV5H7lr1YOJcTpCyOOSl5ZnxwyiyHjTquLf/9CGZEoGmw6bVhV/5TM78zLdSZdSdXjg9rrff2BDqg5rawsA0JwuaYqUdIkb3bm+LNma4dVm65BsXVaeldRh98Ylf/t71yXzQCysAz81C+iQPDXcJR62F7weLksHwdt3qCeygQpSoYxZFqWMuVQ5FDXPXhybDupFed765fkAQAgjlBLK3JrcPxq60Dup66SyJKNmSQ5ljFLGa4a4Nbmjf+pCzxQArKjKqSjKoJRZlPLlmKoinTo/MjIRcWnS2tqCTK/GWyllmiITSo+3DAVCRpZf27y6GBJr0rnR8elo88UxXSfJVotQXsPE7bIbZYwRyvjqSU2VWjvHe4eCLk1aUZlbkONJuiRJiDLW0jE+Mh7J8mtraws0ReJGbTokjc6pQ/ybXkoHXuYFY1DkuEtpRimllCmyxBiz6UAoI7N0SJ6ay9GBu7SADrKE+alZWIeFr4ekUSQSRIsAIHhnQChDAHj+kiDz1RIBB/VY+Mai+YwSyhCCa14Ehh9ZuiqjTnQghM1XrWVhHfhWhv8DHa72ehC8fRAnSZAy/KfzjgYkjChboBWTWavIUz9rWvO2YoTmOzBCCxtFZP7dRpKErPldwhgRejVDHwmjBVW6hA4LuMTr8c6nA1vIJfwm6YAW1mHB60HcTeIJQLAoR/qHmvrDURMASvJ9vDQKn7tHCMamoue6xsNRU5WlJcUZ1WVZukkkjCSMEYLuwUBH35RhEUXGq6rzCnO9vIYJHwyeOj8yPBEGAI9L2bSqWJExoVTC8UKDydb8bE/98nx+VUoSwghFdauxdYi7tKQ4c0Vljm7wwyKE0MBo6HzXhGERVZaWVWSVF2Zwo0mXznWNA4DXpaytLfB7VMMicxpdV1vAcyTwpe6EssaWoclgbGEdAGB5efYV6dDeM9nRP5V0yeNSKGVSosTmVemAEYLZOthcSupQV52Xm+maU4csv7a2plCWkFMdRBWYRYIoCCNI48yFsS/822tdA9MA8N7dy//587tzMrTkZO5zBzr++7HGroHpLL/2yN2r/+S3tqgyRggxBrpJfvRM84+eaZ4K6ll+7a8+veORu1bxTVWMAQP2d985tKexBwAqSzK//eXb19UUSDje2jU4nWzdtaHiX76wu6o4MzmlcbR58Iv/+Tp36ZF7Vv/T53bxPUe8c/zVq+e/+lgjN/rZBzd87oENiiwhBIwxw2I/eqb5q481cqP/+oUbdm8oV2VulE2GjFSj//aHuyuLM1N1+Iuv7z19fmRhHQDgcw9u+NOPbV1YB0WRUKLY7zd/depHTzenusR7y6vXAebWIeGSXYcvfWr7e3ctm1OHtbUF//aFG9YlFshetQ7iPlosiFVAghkmg7G//dbB515ti/RNRcbCA1FTVSS++p4xdrFv6ivfPnjwaHekb2piMjIatUoLfCur8/j0xVN7Lnz98ZPnTvdHhgITk5FpkzTUFRZkexBCCMG//ujo9588M9U+GhkLD0xFdcpu2FjhUmX+2X/47qHHXzrHW/vCBmPs5q1VfEqkbyT499899PKeC9ylYYP4veqGuiL+waPNg//ywyNnjvdyo5OGVb+8oKzQz6dNfvZi6//+6nTXiV5uNGrRtcvzczLdCAFC6J9+cOQnz55NGg3HzBs2LeHT5VyHJ99oD3eOz9IB2nsm/u47h7gOkbHwqEVzMlz1ywsW0IHneEAIvvfUme880dTfNJB06datlZfUAQBGJiJ/++2Dc+sAV6ZDULc2riyaU4fuoB7Tya3bqrgOMcP6q//ZfxU6CBYLYqpOMMPxluEfPHEauWRckolLMofHw1/72YmJQIz3I796re31I93x1ixPc/vId3/TxIefjMF3f9PU3D6Cszy89fUj3T99oZUPBicCsb/53wPBiMEPi1zyD544fTRRMORC79Q3fnEq2RqMGN/4xSk+SYIQPH+g4/HnW5IudfRO/uejx/gsPAP4/tPNR04PJI0eOT3w/aeb+WEpY//z+Mnm9pGk0cefb/nNG+28Px0PxP79R0dTjX79J41nO8ZSdaCUzaUD/OaN9hkdSjKb20f+5/GTfCp1Ph34YccDsf989FhH72SqS5ejAwC80dhzpTrwJ6TZOjz7xoX5dKCU/eCJ0y0JHc5cGLs6HQQiAAgWH8/uuwgRAwAwQhghsGh//9SxlniJqx8+1Qy6xVsBAZhk/6n+8akoAIxORvaf6geTAEq06tbjL57jH2xsHYqMhYGy+GEBIGL8/MV4t/iLV86HJyIzrZSFJyJP77nAW3/87FmImqkutXSMH24eAICpoP7UngtgpBg1yFN7LgTCBgCcvTjW2DoEvAg7Nxo1k/XF9jb2hsfDqUYhbDyz92KaDmxuHX75yvmkDhghMElj61DXYGABHfhr2KPNAy0d42DRVJd+/tJl6fDYC62zdTjaMrSADnxafw4dYvPrwAAixnP7Oma+6SwdGluHLqmDQAQAweLjlcOdSrYHACxCLUKxKmFN3n+iDwDCUbO1dVj2abyVUia5lEAg1nRhFABau8YDgZjkUuLLximTfVpH5xh/Pfj6sR4ly40lzA8LAEq25+XDXfHedu8F2aclW7GEZZ/Gy6oYJjnc1K9kuZMuSZqMEDS2DAPA8ERkoH9K8qpJo5JXHeif6h0OAsCJc8O6TiSXMmM0y336/AjPjfzKkS7Z70o1quZ5Xz3anaoDwmi2DlHdOn1+JKmDRajkUnSd8Fou8+kwOhkFgMNNAwiBpMmpLr2UqJW2gA4AsKexd7YOvNLLfDq0907OqYOc4Tp9fiSqW7N1QBgp2Z4XEy49vefCbB1eP9bDZ4dOza+DQAQAweKjrWfSIjMP8ZQyStn57kkAONsxBhIidGbtH/+psWUIAFo7x5O/4RBKAWM+qXLq/DDfXAaJ+SKLsIGxeOGU/tGQlXJcyphF6HRI512bZVKbS4wy3joxHQWEKJ1Z40gpBYR6hwIA0DccAsZsRg2TDE9EAKCte8Jm1LRo/0goXQc2W4fOgWnDJHYdGONrbObToTvuUpBRllxFyl1KGl1ABz7Mn61D/0hwAR16BufWgVBqmKRzYHq2DowxizBe8AcA2ufSgVcQ6xoMmMa8OghEABAsPizCANLmcCUcLycSiVmSJqdO8DIGkoL5fEs0ZkmKZGvFqhSJWQAQDBvIviyQWZF4fnlFxvbCKQjx8akU30w0c1wGIMtSKGIAQCCkKy67S4pLDka4S6Yk4/RWBoD4MS1rjjowcmIfFplfB0IZALLrIGNeRH4+HbjDACDJOH2OnCXT9y+gAwAwk8zWIRIzF9CBL/CfSwcAiC//n0sHltxVQNkcOoRjJn8iRHheHQQiAAgWHyX59iIejEFpgR8Aygr9s3cMUQo8SX1ZoZ/N0cr4QpTyogyY/WowsT21MMdja2QAMkYAUJTjmb0ZiTImyxgAFFma7RKhLNvvAoBMvzbnDqeiHA8AlBT4Z7tUmBPPLFQ8vw4leb7Zx6QpKs2pA89oXZznY7O2ZPkSaXwW0IFHg9k6ZPldC+jAXZ1PB946pw4l+fHvWJw3hw7lhRkAkOV3sfl1EIgAIFh8LC3LZgx4gRdJQoqMacRYtTSP9wWaImGEpESrJGFmWLWVuQCwoiqXxkxJwpKE+D4gjJCmSLwH2biqmEYMRcaSFC8gwxhUlWclelsfM6y4UYwUGTPDqqvOAwCMUXG+nzGIVynhLgVi61cUAsCy8iwa0mUpfljuEg3pvCTL6mX5zLAUWUp1KdOv8QFvXVUujZncJX5YZpLiRMdXVZrFCONHtumQ5dcy/docOizJmVMHWcKaIi0pygCA6rKspA5SQgceQe06SGk6AEBVWRY/Nak6bFxVtIAOS0oyFtCBx6Q0HbhLhPFaCPHrgeuQNBozV1bnAkBBtps/ssypg0AEAMHiY/u6UmBgmYQQSkxq6kT2a+tqCwDA61LW1xVSQkmilZgkv8BfXZoFAJXFGYXFmcQkxKSEUGISSuj6ukKvK14wRPZrpk6ISSmhlkmAwR074klAN9QVYU2OGyXU1AnW5GQNk90bK4ABPyAxqalbWrZnW30pACwpziiuyLHM+GG5S8UVOeWFfgCoX56fX+A3dTPVpe1rS+NGVxZKHtXULWLGvylSJL6sHgCuX18OGPEjc6NJHSSMtq8tnUOHsrl1sEyyvq6Q13JZUZmb1IEkdNi1oWIOHUy7DndcV81PTaoOm1eVLKADr3k5nw5891lChxSXMNqxrnTmeuA6JFySPGpDXSEA8DSl8+kgEAFAsPi476YalyZD2ACDgG5BMHbz5iWrl8YHoR9/bz0Ag6gZb42a995Uw6dN/B714btXQdQE3QKDQNQEYB9/bz3/4OqleTdvXgLBGOgWWBTChkuTH757dcJo7eqleRDUwSBgEAjGVi/Nu2FjvFv88J0rXZoMURMsCroF07GH7lxZlBufq/niRzdD2IgfVrcgan7xo5sTMyree2+qgclIqkvJGiabVxVvXVMC0zHQLf5NK0sy77spnsL+kbtX5We7IajHW6fTdPjUvWuvQIewkdRh1dLcGR0MktBhVZoOKeKn6vDw3avjpyZFh+IFdfC7lcvVIcWl/Gz3/Qkd7rupJj/bnerS1jUlm1fFa9p89sEN8+kgWCyIncCCGQpzvee6JsYiBpIlb4arqDTr8w9t3LSqCAAYYyX5/rMd49MGkRTJm+GqX1n0hY9s4tMFjEFetvtUx3iEUEWTM3M8OzeU//FvbfG5VYRAUyQAdLJrAqkSknB+of+u65b+/gMb+CvPnEzXVFA/PxxgGGtupaQ8+6PvWX17ooZJYa63o39qKBBjCPkz3WVLcv7fp3dUlmTyufXlS7L3twyHLYIk7M90168s+ufP73ZrMkIIY+R1K0cujhMJJV36s49v5dkpPC4lqlttIyEmY7dPKyrNeuC2ug/eEu/48rLcnQPTQyFd0mS3TytbkvPZBzckdICyooyT50cuU4d1a0q+9KntPreCEHKpclIHRZNzC3x3Xbf0cw9u4LP7XIeW/qmk+Kk6lOT7+KkhAJepg9et8Gm0S+rQMjCddOnem2rjddkACnO93YPT/VPRpEu/c/+6XQ3l/HqoLss+cW54Th0EIgAIFhmUMQmjDXWFGCOfR11bk//hO1fde2ONpsYz9vjcyupleZSy3CzP2pr8Lzy8efuaElnGPFlxbqZ7eWWOYVqlBf7r1pf+0SObl5dnIwSUMYRQRVFGXrbb45IzvOr7b6z540c28zlo3lq7JMfjVhRZqi7L+sT76h+6vY53XpQxlyJvqCsMx0xVkbasKf6dD6y/cdMSPnsOAF63uramIBjWM7zqljXFX3h48+qleTwBDu+/Vi3NMy2SdInPxXOjS8uyqsuyePnyD9+56pG7V/k8arJ1bU2B36vmZLhWVOb8zgfW33XdUk2VGAPGmEuVVi2dX4cs9/IlMzr86ce21Fbk8LSmqTqUFvjv2FE9WwdCWVL8VB0wip8axthl6gCJPNJFl9IhP8eTdOkLH97IS4/x62FtTQEgSLr0wVtWuDWZMWAMNGVuHcSttIgQ2UAFwPu15HLApvbRjv4pn0ddX1uYm+kihPIBNW891NQ/PBH1eZSbNy+BWVnsXz7SFY5axXmeLatLID2h/NhU9NT5kaHx0PoVhauq8wihDCCZNb6jf6qpfZRXqc3NdFmE4hSjB5v6O/qmivJ8168v0xSJUIbRTM6xlw93DU+Ei/J8cZfSs9i/cqQ7FDW5S4wxyiDZGtGtg6f6AQH/pqZFk1k5uUsd/dMAEDdKqJSS496hDqGoubwii+sAMwte7eLbdDhzYfR028g112FkMtLUNpp0yabDbJfk+XVgDEQuOBEABIsuBszUbyKUAQNAkMxSyYDheVsZpKR/5EvIEYqXCuFD16QJyoAxJiU6LUpnog5PxQwAvBvlmXVSXeIezhiFGbM8lqS1prpEGbCFXAKY6QpTdUhuckrqwL/aNdEBGGAc/0Rq62zxU3WglNE3QQfKN3uluLTw9bCADoLFhXheE/D7GYWiZufAdCKfe7wTMS3KC2CNTER4bplkK2PMtCifb+kcmB4aD/Pumy9G5PULMULxOoJhnXdMsoQRiteHwTjeOhXSE+sXEQBYFuWJKkNRs6N/irvEFyMCgEUoQgiluiRh3mpziW9S4w5zl6yES50D09OhuEvJw6bqkCgqkKYDQjAyEeF7iefTIW40qQOhc+ogSWhGh4TRqZCeKn6qDvzU4MvWgVDGXTp7ceySOuBZLqXqMJdLc+tAqRhNincAgkVI1+D0/lN9R84M6ibJz/KoisRHl5KELUI7BqZfOdLd3jNFKMvOcMkSZowhjCSMYrq192TfnsbevuFQhk/1e1Se+J7PIQTDxstHul471hOJmW6XkuFTeRfB5xAmg7FXj3a/dqwnqpsl+T6XKvNCg5KEKWWdg4EDp+MuFeV6FVmilAEgCSPdJKfbRvef6m/vmWIAuZkuXh6AuxSKmvtP9e1p7J0IRF2anOXT+Jx1qktHzgxOBGPFeT41sXGXF7Gy66BKjBuVkEXoqfbRfSf72nsmF9BhIhBVVSnDqwKC5A6G2TowBskZsOmQ/srRriNnBieDMa4D70mvQgeU0AEjFImZ+071PXegMxIzVVXK9l9Ch9RT0zEwnTQ6+3qYTwcsZn8WG6IgjJj8YaGo+eX/2d98cSwcNbL9rntvqvniI5sRAl4T8HTb6J/81xvD42EAyM5w/fEjm9+zaxkk6gX++vW2r/60cTIYU2TpyTfa/vGzu1ZU5iTngv/1R0ef2XdxMhDLznBtrS/5+89cn+nV+AenQvoX//ONk+eGeevJ1pGv/N51COIHbuuZ/LOvvtEzFOQuffbBDR++YyVCcasvHer8lx8enQzEAKCiOONvf+e6jSuLABg/8jd+cfJXr5yfDMa8bnXV0ryv/dnNPreKUXzSg7sUjhpet7q3sfevPrU9y6chhOfSofaLj2xKGj3dNvrlb+zrHgwsrIPXrVYU+f/587trl+Sw+DTMJXT4m2/u33Oij7vEdQAHOrCEDj9+tuX7TzYNT0SyM1wVRf4ffuWuhXXI9GkYIa7DH/7bq0mjs6+HBXQQiAAgWGSTP0+81vbYC63WRARkDAYJx8z37l7Ot3TGdOunz7e89lwLaBIAgElK8n03bV7CV6dMBGI/frblyL4OUCWg9Gzz4KZVxX/+8W18NvhU28gPn27uOT8CCu4yaffA9HXryh66vY7bfW5/x/efPMOmorx1fCp63801vBYVY/CrV88/+XwrGIS7lJ3pvnlLJV9jHo6ajz7Xsv/V86BIAHC2Ra6rzF29NM+lyQAwOBb+0TPNzcd6QZXAomfaR2/ZsuSRu1fzHup461DcJRmDRTv7p3asK/vAzXz155w6LEvV4blX28CwZuswPh2d0cGiJ1Vp/YrCP/9YfKnlAjowBs/t7/jB081TfdPcJYc6rFmWz1dtne+e+NEzzUf2dYAmdZn0pCo9eWPN5ekAT7zWlmo09XqwCF1AB4F4ByBYZOgm+YfvHbYMC9wKqBJ4ldbOiSdeb+cTI61dE9978gz4NXAp4FLAqz277+LxREb4Fw527DneA14FVAlcCsj4e082jU1Feeu3f326dzgAbgVUGdzKxHT0qz89HtEtAIjo1ld/epyZJNnaOxz49q9P8w+OTkW/92QTyDjp0p7jPb9+tY23Np4benbfRfAmXMLoe0+eae2KJ7B89LmzrZ0TcZfcimVY//C9w7oZz1D2n48eT7gkgVuZmo5954nTV6ADRqk6JDPjP38gRQe3AjL+78dO8AygC+sQjplf/enxqelY0qUr0WF4AR2eeL39eMsQeONGQcZXpEOq0VQdeoYCs3VIXg8CEQAEi4zT7SPnW4ewIqleVXErqlcjuvXrV9v4dO6hpoGpgWnNryluRXErqk8LT0T2HO/hn312X0c0EFO98VbFrXR0TjRfGAUABvDMvouMMNWrypqselVA6EjzIM9g3DcSPNI8KKlSspUR9sy+i/wdYlP7SEfnhOJWki5FA7EXDsWrlLxypDs8EVF9caOyS5kamD7UNMBbf/7iOaJb3CXVq2JFOt86dLpthL9yePFgJ3eJtwJGB0/3j0xGLlMH2aWk6vDasbgOrx/vSerAPz7eM8lTQy+sw2QgdqR5EDBKusR14ElAF9bh5UOds3V47Vi8pMGvX20zIobq1bhRxa1crg5tI+dbh1KNpuqw/1T/bB2S14NABADBIuPQ6X5wq5QywySmRQ2TgIyPnY1Xvzp2dgD8mm4Q06LxVrfy+vF4lZJDTf2gyfyD/H+gSPtO9gFAIKT3DAYAI8MkFqFGYuzJyw22dowBAKFsphWjnsEAT39/4FQfKBI3FzeqyWfaR/kR9p3oBbeSNGoRCn7t2Nl4AGhsHQIZJz9IKQO3eqipHwC6BwPj01HuUvywAKGIyXvqy9HBIjRVB15IHQBOnhtO6sD/C5kunjd/YR2SFR9njGLUMxgYmYhcUof9p/pm67AvUUDm2NlBUKSkUdOil6tDUz+41TSjKTq8fqx7tg7J60EgAoBgkTE6GZUwSl2+wYv/8fFg73AwdX8TAEgYHW+JP/J3DwRs2eQxRsdbBgHgQt8UUJZ6XL6ctLVzAgDauidTdzDxVxFAWdfANACc65yYfdhk4ZTeoaBtybkkIV4FLBwzwSA43aiE0fhUjA+3IW1lfHwxe99w8Op0aO2Iz7ec75q0OSxL+ETr8CV1OHVuZE4d+kZCANC6oA7cYZsOo5ORGR2w3eHL0WF8KmY7LEYIDIvr0Nk/vcD1IFh0iJfA73bUWdnkKWMgxUuRWBZNlgfhEMp4oUcAAAS2pd+UslDEBIBwxAQEqdsM+YYy0yQAEI6aNH0HIl8uMxnQASCqW7MPa9D42Nki1OYwIcyyKPcWaRJNN0oSm5z5blubSwDAV75fhQ66Ga/WwguzpGIRGgjrl9RhKqTPqQMv76UbC+kwuwwAIUyRpRkdqN3hy9GBbxSw6YA0heuAMVroehCIJwDB4iLDp+L0UagkYTBIfpYHAHwelfcpSRQZV5dm8p+L83ypWQEQAlnCPCFwebEfzLRqUwghhGBZRTYAFOd5k1tSk2NbIDQ30wUABTkeWU5bUy5L2J8onOJ1K0p6whlFlngaH49LkTCW0lxCOJHVICfDDSkZL+JGGfBsPFehA8+3DABFud6r02FZRfacOlQUZwBAYa53AR38c7gk+TzKPDqALOPL0QFjJMvYpoMiY65DUa7PZlROuR4EIgAIFhm1lbnUJIxS3lFijEjMLCrJ9LhkAGhYUWgGYsluFCFkhvTr1pfxz65ammdFjeQHGQMrYly/vgwAygr8eQU+apKZVkoZg4YVhQDQUFfEGFBrxig1SUaWu7TQDwDXrS+zQgZjkGy1ovF6LACweXWxGdLTXArE+GEVGVeWZJKYmWqUmoRvTSjK87jdSqpL1KKyjJdX5FydDsnEyBtXFs2lQ/klddi0cm4divN8ALBpVfECOtTX5NtdCsTW1c6jAwMrZFyODisqc6yQYdOhOM83nw5W2EheDwIRAASLjPUrCrKzPQhjjBFPCQAI3XtTDW+9ZVslYJAwwmim9cbN8ST129eWAEKprZJb2bKmBAAUCd++oxpwohUjhPGS4kyeLnjt8vwlxZnAuxie7AyjXQ1l2T4NAG7esgS7FZvRW7dWcqPv3V1jMwoYbtkWb719R9VMK0YI4+xsD++hcvyujSuLU10CjFZW59ZUZF+dDjdtiVdruWlL5dXpUF2amaqDlNBBlTEAbKsvWUCHW7dV2V3CcOucOvAf3Mrl6HDd+jLsVmw67GyId/Hb1pYscD0IRAAQLDIKc7wP3l7HKLNGQ9ZE2BwJVi3J+fCdq/i8cP2y/Jt3LbMmItZE2JoIW1ORHVsqr1sX7w7u3FG9srbQHAryVhIx7r+5trI4g7d+8JYVWRlucyRoTYSt0RCj7KP3rOZTJaoiffSe1ZoqcaPWaCgrw/3Qnav4vERJnu/hu1eRiMEPaw4FV9YW8u2mPOrs2FJpTSVcmojcvGtZ/bJ83vqhW1dULcmJuzQaYpQ9eHsdr3+LMfroe1anuqSp0ifeX88nlK5CBz7GB4BbtlZenQ6yhFN1MEeCXAf+werSrAV02LyqKM2lOXUYmXHp4btXXY4OXPz5dFhZnWvTYcPakuT1IFh0iFxA73YQQEVRxtGzQyMRA7kV7FE/9t76T7xvDZ8EdqlyTqb7pRN9OkbIrWTn+//qU9t3bYh3fKUF/slAbO+5YeRSkFupXpLz95/dmSwJUpTnO9M+2jYS5IdtqCv6lz/YnenTeOuy8uyT54Z7pqK89c7rln7xkc18FysALK3IeulYz7RFkVvBPu2zDzQ8cFtd8h2Aqkh7mge5SzkF/n/63K765fGOr6Ioo3c4eLRzHLniRv/uM9cX5sQn65dVZKe6tLOh/B8/t0tTJIc6FGR73gwdZAkvoIPPo6a6NLcOF8eQO+7Sf/3pTZejAxf/aHOaDr/3gXVcB7dm1+ELH95427YqcR8t1ttfpIMWUMaeP9B5qKk/FDELc733XL909bK8ZGsgbDyz98LRs0N8APj+G5bzCrec9t7JFw52XuydAoCd68vuvH6pS515SXjgVP/ek33D42GfR9lWX3rXddU8zzD/76tHu18/3hOKmD6Pcsf26h3rSllKSplfv9q292QfACwtz7p9e9Xy8uzkYUcnI0+83t7SMc4HwnfvXJaReDUKAM0Xxl5v7LnYO8WN3rGjir9I5QdPdemGjRU3bV6STH38f65DYa535/qyZEneS+qQ6tKcOjy97yJP4rRzfVlyOuuSOgDAs/s7LlOHO3ZU8yLMAhEABIsSnrBsaDw8HdIrijLd2kzxk2SncL57AgB4QphkHv9kyZHU1mRJEP5nUZ30DE1n+rSiXK+tAADGiBud3coPknrYpK1kIvt0o3E/k56f757gh00tUcIPkupSapmXq9Yh+YNDHbjRZGsy8/5V68CN8lYnOiSLwCysg0AEAMHifhSID5Zn1XXiy9VTh9JpfVxK6wKHvdLWNKMLumQLZk6MvvN0cO7SZeogWHSIl8ACoIzpJmEMMEKEUF78JAmhLGYQvurDtChP2R8fPiDgmQZ4q26Q1M1HDMCwCC+HwhhwE6k9lJEwyhgYVtr+IsqYnjDK8xnYXDItyltjBknduIQQ8BQFSaNp+8LSXTLMWUb/T3UghF6pDkmX5tSBG4279OboYBEqen/xBCAQCASCRYZIBSFIDkUZowwxPrBNVMtNaQVISyBzua2JIQbi+2z5/zCeMQqA5vns3NMXjMVr4zIGjDlyaa7WeCldvmEXAa+TewmX5mslFBgFXhfmkkb5RMqcrXEBMcIz0i3kEmPA6y8zxii9Yh0QIITi9YUxQhhf7qkRiCcAgUAgECwKxDsAAQClzDSZrr91TxumyUwTrnTwYRGmG/8Hz0YxHUzryry1LGa+KSnSmK6DRRY+lUDINbZ4pV9fIJ4ABIuD1BUejNFACHSd6QaLRMGyrqUhTUOaijL8SFORS5vD+mU7TAMhFggCISwceVPuCq8HJAlpKmgazvCl6nNF3rJwhAaCoBsO/Yz743XjDD/I8ryepPyShSMsHGG6wQLBqzxTjr++4O2PeAfw7oZQRiykxncPkc5e48Ax0ttv9Q6YZ85BIHAtHzbLS6WKUm37JlxRqu3aGu9QCIn3aJd8RqEUyXLSSf3gMTYdtJpb35S7YnUdyvTL5SVSeam6Y5NUXRH31iKgyJd2lVCkyACgv7rfOHCc9PY79JP7o6yuVXdsVtatAgBmEWTzhDFmWUhRAABMS391v9V8zuodMA8cvbozZf/6hABjl3WyBOIJQLAIBv6UgiTx0aJ17gLpHzIPnzBONNGBYTI4Yo11MLiW42sM+VJeobJhjVRcqO3cKtfXKRvqL2tcmfgD0t1nnbtg7DlsnGgyG8+wUNiKdb4pAcBVhXxeqbgAlxSqDfXy+tVK3TJ59QoeMkHCl3TVauswDxyLPfuKceIMHRxx6Cf3R66pUhrqtVt2KmtXSkvKbI9u8Z9Ny2xqMQ4cN/Yesto6yOCIOdZ8dWcq+fWVrQ1ydUX864uHABEABO+QAMAYX1Kiv7w38oPH9T2H2NgEIxZQBpQC0MTyk2t2sQFgkCWEMciy6313+P/fH8o11UApYHzpABDTQ//9vcgPHycXuhixwCIADIC+OepgAAQYA0ZIkkGWPB/9oPfzn7y0t9xV3Qj87X+E/79vM9MEiwCjjv3EAAgkCUkSys/1ff6Tvj/+XXsAAACEzKOnQv/1ndgTzzHLAkKBUgBylWcq8fVRXo77vbf5v/yHuDDv0idLIKaABG93+G2MEOnuj/7meePVfcahRmusA4AicAHICGSQFXRNb3VmEaAWsyIULGZE9ZfeQIrs+cSD6vVbFhpXEgKSREfHI9/5afTxp82zpxlEELgQuAAwUl1vSnA0TADKqAHUolaM6Xrs6ZdYOOJ+8H3abbuBMpgz8wFlgBELR0L/9PXYr561Il0YvHE9nfkZ94fEKIlB/0j0p0/Iyypd778jVSIAiPzk1/pTL+mv7SfRHgQeABVdlen4mUp8fegfjj2NgDH3g+9Tr98iYoB4AhC8I54BQuHI934e/Nt/J+NDCFSQEm8XgQGDa7/qAwFfYc6X/YNlMdC9H/+tjL/5Y1xWvNAHCY08+qvAF/+Gjo0AVgGh+OMLwJu1NIVHoxmHEVgGA8Nz731Zj/43crsWcDX2zMsT938arBjIKl+Mfw38jPuD4i4RXbvphtwXfjIzI0+odfb85Me/YDQeRaCBJDs6j/Evnvj6AEBMBrr34x+79MkSLCpEJH9XDv8BWCgc/Jv/CH/zh2R8EMAEIIlelcGbNCRgif+P8Z8JAz32zCuhf/0GUDbvjAqA2dQa/s//JWNDDCygNO7kWxEhubd8DxdhoOuv7Q9/88cLfMJsag39/X9Ra5KBde19ZPEOnYFlHDpuHDsdH/4DmE2tgb/6F/N0C+OnMk3wqz1Ts75+/GS9eXFXIAKA4M0/55hForGnXop89zGz9SSSvFjJBqwCpUBpfND6Jt3hfIcqpUAIYFVS88nIQOQnvyZdvfONfOnEVPSxJ/TTh5HkRrIXEHrTnYTEC5IUb5HkktR8MjUW/cHPWTQ23/A/+tgTsWNvSEoWkjxASDxcOfdzxh8KlCLZyyIh/bUDwAAkiQWC0ceeiD71NFimpOYAVq+B6dSvTymSXJJWwE+WdeaceA8sAoBgkc77MAAwDhwP/sNX6eQEgAqEMMvijwVv8YMIM00EmI6P6y/tma+rij3xfOR7jyHQgFjxlYj/JxDCvTVb2qzWC3N+Hau9I/K9xxC4mWld261Ys50BAONwIzAK/B3+9x6Ln13zzTmVhDAjfrLC3/6JuI1EABAsThCCmB75/mPG2ZOAMFI88Sn1Kz2IJIEsgywvtCbycqKRpAGg6DMvzzGopAwojf7k19Z4N1Z8gPBVzmlgnHBVcho7JRWsmNV8bk4rkR/+whrvxqrPwe2IQJLi/1tglM0AsEI6ugFj0jcYtyt7AMtzn0qM48fE1+BkxZ5+iU4HxZ0kAoBgUWIcb4o+/hQGNzC4yi3+LDGNQ8i80/dXNJg91DhXmAGzpV3fcwiD/2ryRqR6SwhQcg2GxoQAyFZnzxxGAqHwt3+Cwc8MBxkgGCQm4uglvi+lLBIFgNiTL8SefQWDf6HHuMTckdPnJ0IAgHT3ke5ecR+JACBYhPM/hhX+nx8wMg1YusqZXIwBgLJJwgYIG6Bs2umiQIToxDgZHJ79+8j//pjRUHx50tUhSYyFCRsgdICy8WsweY0xDYRmC6s//xod73fkqiwzplM2Ttk4ZZOX3jrAGOkfiv7gcUYDC9mVJcbC/LCMBR09sfGHP2bQoVFxM70zEPsA3l3zP1Z7R/SXzyAp6+onqSkBAMlfxvP5sGiUhUKORhKMISTR/iGpuDDt14YZfewJJPkczacTHbuyJX85YAwxnU5PO61eRekcKZIQivz010jyOnLViiHZI3nzAIBRykLhhQfsUnGh/sLr+vFjSMpcwC6zdOzKRpoGPAdfJOzwZAHWWCgsbiYRAASLj9izrzAzhLDbSReIvBnez/yWunk9AOiv7Av9z/8i0BxGJmZato7GPHyCjo8BcnCJYsyo5brtBs9HP4D8PvPoqcBf/uM1eI4yZwUAyzL2HHI0G4Yxo1Ft3QbX++8EABoMRr7zUzo2sdCtW7M0/K1HASh/FTxPlMCMGNptd/OTZbW2hR/9EQKvUwne+iUDAhEABE4hNPb0S0j2LJRP+JJ9teZ2P/R+z8P3yytrAAAXFUQfe4JOTjvrUAxckGsLCfqeQ4AVR30NNdUd17s/ch/fNKusWBZ59JdWa7vDWIWzM+269g6Q6QkEihNX5SV17g/f677/bgCggSBp74z+6tmFPjE5ZRxtRLJvgaStjOiu3Te7P3KftrUBAMyWNv2VfWRoxNnJIuB2i5vpnYF4B/Augo6Mm0dPOen9ASGpbnnG3/2JXLuU/0LZsEZasdy5b1JFqe03xtGTfLrp6nF5/H/5B647b4xf66XF6vVbnDqKkFK33PawYuw7gpzeSsjz2w97PvYALi3GpcVy7VLXe25b+AP66wcQsIVTdiPFk/EPf+6680Z+WHXn1mugACCclyPuJvEEIFhUMGZd7KRG0NF0DaOuW3bhgjwA4AVPkKoiWXLomlRSFs9jnMS0rNMtgLCThSvK6hXaTdchVWGmCZQiTcN+n1MVaUxZXWsLCbEX3wBJAXL1Dys4J8d9310o059QRMLlJZcI56ERJPkXNqpev0XdtmHGU5eGMvxOu39NnR2tBSIACN7eIGQeP+10sh6Q686bEqNLJTkB4tA1ZdM6+6RK/xDp7Xd4WNddNyNVSXXVutDlVEVQpcpy+8PKweNOen8AkNfUyTXVaQp0913KE+8ljXoevt/2G+uC0wTauKhAKi4Q99M7AzEF9C7COHjc4ZJN5PMqDavBspIvPOnYJB12tihQwsralWkjfcbME2cAnNUjw9h1980AaW8sTYcvAADkFctnxulxBSZIn7MQiEDZuBYgUXSF79Y+duqSX/CSf6Ddtju+CYAfllDrbJvDYYRct1zcSuIJQLDYoNQ8ddbh+g2ptMg2h2C1nGfRiKORBDHl+pVpK/Rn3gBf/fwPzs9VVq9I1jwAAGYYpG/Q6cPKxnrbZgLr3EVHr1UAgDGNp1lO7lVmzDzceMkTekkFpOKCVAXoyCgdG3Z01zOqbm4QZWFEABAsMkj/kNMNnAjJa+psfZD+6n6HjjGwVF4aLPVh5cBRh9tWlXWrwZU232WdaoGIsxpnGCv1K20KGEdOADBH2wsUVd21NbVLpRPTzlcrKetW8x+SQcU4dNzpNghA6o6Novd/xyCmgN4dMGaeOccM3dlBiLZre9rAE2Nj72FAjl4CS/klUmlRmh3dsC52OUynrK5bZRsjG0dOOFWR6sq6VWmOYazvOQTI0X0klZXgrMyUnhpIVy+Lhhz6qq5blbZBDCFjz2HAiqPDIiSvqhX3kwgAgsUVAMA4cMz56E+76Trb1LN59rzDobq2a5ut0jrp7GFTzurRIyTX16W5yphx2GkAQICVtatsKppHTzpSACF1o+0BiJknmgAcrq1Ccn2dLf+dcfSUwzlAXJBn27AtEAFA8PY/z8g8dsrhQBX5/XJ1RVpP3TdIJ6YcuqY0rLFNqpinW5yWfGF09soi5wFAKq+wLYEnvQN0eMypq/Ur09bzIGQcagTsKAAgl2ZTgBmm1XbRYVhVN6+fuxymQAQAwdv4CYBZ5y84HKrLy6tAU9MGv0dOOE98L69ekX5JYmPfUYcPKyg7W15elSbAZIB0OF0BqWxaZ+v+zKMnHZcnQ/LalbYcbebxJqdD9eJCmwK0b5BOTDq8irRbd4qbSQQAwSLDOttGHSYAwJjnk0ntDpyPqUGS1M32obq+55Cj/h8hxfZWmTGztY05XFeKkH0LGGNmU4tDAZDfZ1OAjoxbFzsdusoTdaSdrOOnZ6pFXiVU3bRe1IMUAUCwyDAbTzPDcHbvm+q2DWk3P0LGkZNOr7+8XFyYn9ZTRWPWhU5Ho2pGtV3b0kbQCBlHTiLsbBMco/HV+imHNU+3Oo2A5SU2BczWdhZxlm6TEXVzg12BvYcdZdYDACxLleViCZAIAIJFBWPO+ykGVFm3Ju3mj+lmY5PTMfXalfZYdeIMxKIOR9Xq9o22Fx7JAopXj6qpO7emP6oYxokzjhVYlR5oqXHwuPNzru6YpcCBYw4H71JpMc4XWYBEABAsLhAyTzU7XaqYWyBVpGWnIQPDNDLlcEyt3bDdNtltnnTqKkiSXLc8bRLJtMyTZxzO1UsVpTh9DzDp6aez69hc6VB96wbbylrz6AmHK2uRyy2vqklVgOmG1dHtNFZtXOu0+I9ABADBW/0AEAwbZ8453Ve1aT3KykgbUR475SgBMh+q37DD1qdYZ1qdDlQL86WitEkVMjxGOnqcjqlt8z8AxvHTCyfjvBwFlK3r7Strm52urJWqlkjp00qko5sFnBby1W4Rb4DfaYidwO98rPYONj7hbJyAZ8/VGPuOIJfLURUUWZJnp1Z2PK0k19fZ5qlJdy8whlTVwbMKVerrgNLUztpscjqxhjMy5Jqlqb+hw2N0YMjZQZHakD5ZR6lx4JjD7cqM6er2jSIJhAgAgkWGcbzJ6coNSpT6WUkgXtnLYo7eVUplS3FGWn5mNjFltXU4e96h2s5ttn7K2HMImOWoXDsgZe1K+1D9tNMlQHLNUpz+XGWebuHV3h2cLGrvqTHWX93ndGWt5JKrKkTvLwKAYFHBmHXG+Rtg3TYBQofHjPNHGDjpUkFbfovtN+aZVhYMOXRW3WmveRL9xTMEHK2CReBW0lfBsumgeczZIiiMlS3rbX23ebjRaWYhIMrs2apjpx1eA8rqOpThE/eTCACCRQVC5slmpzMV/jxbDRBmWdqa6xy+rdXuuNE+VD/RDAg5el6RVbl2mW2gKi0pc9GbHKmY4bfvAe7pJ2PDDstAxlfWpgzVjSMnHJbBQZpHSh+qs3CEOJxWAlDWrxbzPyIACBYbumE6XKrIszWkZ9bEBXnZj33D4ZoQnJ+b1qEwZjU5fQMsl5fi3CzbLzP+5UtOdyynJ9UBxsxTzY7LQIKybrWtSzVOnXX6Brh2Gc7NTnuuamyCaNTRUwVPBCt6fxEABIsL62IXjU4jUB1dJbxYVcoAEGnqtc8KiZB5wvEb4DW1s/spW7Gtqx2wp7wBRsg4fMJhzXqUmSWl132kYxN0ZMyhAsqGenu+itMtgJCzvXVM3b5R3E3vPMQy0Hc4xokzjhdrgtOCJ5fZyQRC5tnzDg+iXrf5TbtX0vdVHT3pMF2PsnqFbVbdOHLC8bpSULfZe2qzqcXhHojZ+SoE4glAsAgg3X2AJYddldnSBqYFigymBbLEp+mZ6bSrQhJOrYFlnWllNObkYYUxXdu9fY6patNiDtdBIUgtW08np52uVsJY2bTervNhp6k1GNO1LevTFKDM2HvY6XNV7VKxBUwEAMEixLIc9v4AYJ45px84qu3ePpO4HyFeb/2agZD+xkGENEfvP2WPvLJmjqlqRb62s9fW+YssEHA0q04tddsG23of5yVrkOyWqtPfAI9PWm3tjqoLMKpuqLftgRC8MxBn9B0OyvBfg/s2Eg7+w3/ToVE+yGSG6TwL9GyMA05z4Cj1dcjrefOfqqhx+ITDLNAMLHXjWnu+iksWgr+kAqvrkM+b+kRgNJ9j4Dhlt61os0AEAMHieMSrWgLU6VwNIKy//Er0Z0+Szt742F+SgNJrmRmYMrPFaQoEpaH+rUhWLGHzsNN0PdiXbSuESQdHyNSYQ9eULQ2zMraeQJLbWSchKetXiwAgAoBgEQaAmmrHlSCB9ynBf/xq6D+/RQbjO6qYRYCQa9Xh0rEJ0jfoLEohpf4tWqpoNjldrKlsqE+rrsOYcaLJ6bpShNStDfZ1pYcaHT6u4fxcZf1qcSu9M/sHIcE7G6m8BHk8LKYDY86m113WyPnYE88jn0e78Tpl7UqcnxtvsyzAGBC6+s6XMaulDYjhbKqa2atLvjnQwRGnsQpA3dJg67udrysFxtStaYdlhmmdOuswqMjVS5BLE7eSeAIQLD6Q36vwN3gOh+oWwZBD+gZC//z14D/9d+zFN1KCjBQPAA56GX3vYYdl0FGGX7GVwXpzMI6edJyvYlYAuBbrSlGGX65dZo9VPX0OH/6UjevEfSSeAASLFc9vPRDb9xoGL1JkRmla/fEru1gUsGKUBswDxyIx3Trbpm5Z77rnlvhSTkqZRZAk2crbXm6vuvewwyQQSt1ylJ35pqtJqNXUAkAdDZ4wVmxD9VDEclhdEiF5eVXabB9j1rl2AMvhba7u2AiUiVrwIgAIFiGMud57m/L3K0lHJzWjCKSr77ksC7CKcQGL6fqBffqBo+67bkEuTWmoR34vcruQerVHptQ8e/4azKq/BclqJGw2tQKSnHiLc3OkksK0sNI/SMfHHQUVRrUdm23blc2jJwEpToVdv1r0/u9UxBTQOx2EcG6W/88/i3wZDCIMCFIVpCj25DaXHU6AUgAKwBhE9L2HA3/xj9N/+Nf6C6/P/Ilhgnllmw/IwPA1SIHwVr0BNhqdpdfmrqarajW1OFxXCgDqLTvtb4AdV5dEfp9UWS5uI/EEIFjMDwEfuNtsPKO/tp8MDpHgMAIMoCCkxmddLr8743+MZSRpGAENTuonu82TzSwaZZGovLJGXlaF/N7kuP6y3gwzZp1tA0ocrVZiRFn/lrwBHp8k/c4yazKqbm2wZxY6ctLpG2BJVtLrwDDDdFpcDCFl9YprvONPIAKA4K1+CMjM8H/lj5V1K2NPvRR97mUAHQFPw8Dio/krnLEBShkAAgnAD0D0518z9h9VGuq9n/24684bE30yQRhf+lGDMePAMaff0e2R1616C7TU3zgEhu5sZS1St260ZxY61OjwDTAuyJWKCtKeq7p6nWeB1m7bJW4gEQAEi/sJABDCeTmu99yKC/LlNXXm8VPW2TZzqA0AIXAjyQ0IgLIr7oMkGUsaswiNTtBoN315Crk1q6lF3blVXlkTr3VFCCC80CQyxvqeQ46S4CMkr1j+1gxUzRNnnJbW0lRbrGKhsHX+gsMYL1ctSROZMvNkM1DT2cpaU92+SZQBEAFAsLifAHgYwMWFrvff7nr/7bGnX4r95gX6G4NNTQNlQPhW4Su/yQllhAIAAo+EvECs2BPPxZ541vPwh1zvu931vtsAoct5AjBPO9tXxZi2e/tbo6XVfM7hEXBxoVSWtgfYau+k45MOY7xiW1eKkXHguMOVtQCyXLNU9P4iAAgW/0MAoSDHuwNt1zapqFC94Trj9f3GgePG+WMACIEHK14AYJRe2d5RPtGPMVgmgxCDWOzF162uHn3vIe3WXa47b0o+hczdpba2s+lpZ8Nqpl63+a0YqDLmtAwkQnJd+mYFSo2jpwCIs86auG7dZVPAbDztcGWtVFGKi/LF3SMCgGDxPwTIUnzunjKU4Vc2rVU2rVWWV0olRfCMRvsGWSBEjSAAQiABSFfQd/A3w5QCwkjKxhjRkWF9pFvfd4AMDstlJfKqmgWeA8zjTQ6LIAJCSv2Kt2CgSgdHyOCAo7uGUXXz+rRl9RgbhxoByY4UkBRlQ33aG+CYbnV0Oy2vtm4V0lRx94gAIHinhAFJQnimU5DXr/aUFLned3vs2Vf0F9+IHXwDgAK4seoCBoyQK3srwBgQwigCYAAYwNBf3DM1OpH1X1+R16yYd0zd1OKwn8JZWdKSsrfgKco4eMz5UdQdG+0Vu041Oy0DWVJsK1lsnmymo85W1mKsbhVVwEQAELyTAgD/L6GMEiAUuTSpvEQqL0EZfqkwH5eVkJY20ttvTQ8gwAjcgOUrjgGMgaRhyQ0AdHo09vqLkR+tyfinv5z7IQAh89RZQA4WwSMk1VSnVmt589TT9x4GrDoqA6m5baU0WShCHWZrQEhZs8K2B9g8eQaIo5W1jOrq1gbxBvidjdgI9q5EwkhRUjN8yUuXuB++P+ub/+T9w0+ru3dglAEgA1xthh9CmGEyw0SgYHCFv/Ej62L3nF08C0WcFyzUrt/y1shmHj3tcLGmVFUuFact1rTOnqdTAYeOqTs22cKw1dTqNN6BpK5eIXp/8QQgeOcSfytAkaoijxt53K47b5YK85WGNebhRv2NgyQ6jKXsq08fJCkIIRIeiD37iu8Ln57dbl1wvgDGUndteysGqqZltV10OlRfn7ZXCyg1j50CRh0N1ZmubE4vA4mxceKMwzcrUlkZys0Wt4h4AhC8g88/BllGqgqM8X0AuDBPu/Mm/5e/4P3cJ9SdWyUl11E2eUKYZWGcHf3ls3N2RuZxp2NqQLKydtVbMFAl3f10cspZrKLqjo02/fVDjU43FmCXfbEmpdb5i05TAG1tECmAxBOA4N0DA8qSQwL1us1+rydaXRH8xjcx8jpcpWOdaqZTAWzL1smY6XimAufn2SZV3hxtmP7GQeeLNdUNa20PK8bx0w5dU1bVSsVpizWNo6dYIOjwYWV2wmqBCACCt383fvX7aUFCQAijFChDPq96/Rbkcev7j1lnzjp6WCSURcJ0eMweAPgbYIfd34plyf0NThVIlWLWb/TXDzhcrIlUt1S9JG2xZjRGevudKtBQD+nvwI2Dxx3uAIgnLBKIACBYXL0/MwyHjwGAcTKtglJf5//Lz09++DPOq8Cz2XP9umGeaHI2/sfqtg1pv6GUmabT/l9WZlc1cL5cVapdivPSZtXNk2cgGnU0BYSQPDu36JlWp1FQc7015dUEIgAIrh0IIe0aVe/jBV5UxXXPLfLqFdZpZ0N1SaahsO131sVuGp5CcPVbjRjV1d3bbO8/r5kCqYZ0g/QNODw1SkO9PQfc4ZOAkKNFUIyqDavTFEDIPNns8PtKZcXI4xb30zse8RJYMO/gmj8HII/bvsrwasIJQ4p9tGHsOYTA0fp9BJK6cd1b8Qb4Yhdzvlhzm31flXn4hMMlsMjnU9akFUJgwbDZ7PTNirppnbgDxBOAYJFBpwLh//hfhwNVuaba/eF7k88BgLFU6PgtK7Ok4kLb7/T9RwBLTlYBSVWVKH1ShXR0R37wuMPIp922O21miVJj/1EA5nCxprolfbEmZcaRE05v4JqlKCcr1YzVfI6RmJPnKgCmbtuQVrFAIAKA4O2P1dYR+MrfOTyI9yOPzAQAjAGADI84fp6QcVmxffx7qsXhGlB10zr7oppjpx0rwLIry9MCAMb6q/udLtaU3PLSyrSh+sQU6elx+BSubkxLAQQI6W8cREhz9g4AqZvWid5fBADB4hr/U/PoKQYxh93f7NJa1ukWh65JpcXI50kzEwiRjm6nDyv1K9O6Pz7+daYAA0NZU2f75TVZrDlTKw0AGDObzzEgyEkAQEie7arj6jooM0NevULcTyIACBYVGOt7D0uuEocHcd1zS3r3b1mtbU4DQHmpbabeutjNYhGHZdCVtSttHaJx7JRDBZDHraxPL9gSjpCBYacBYEuD7VWtcfQkwpqjZyBGlPWr03/DzLPnna5WqihJi1UCEQAEiwLj4DGmO1oGigvybEXAre5+OjntcKguLa+y9VPGgaNOv63LrdqWKkZjxv6jDhVQNjfYZj/MxiaIOV2sqW5tsFdsd1wGEjS3bbEmHZsgvY5XK60TC0BFABAsNujwKB0cdrZlF6SqCkhdrsOYebrFYbIaYJZ23Rb7UH3vYUCSE2/lyjJcmJdiBayuPhqeQOByIqO6edZ7hSMnHb4AAMZs+6qYYZqnnC3WRCAvr0JuV6oVq/UCEMNZGUhLvAF+F80aCAneOcP/o6ecjigZqBvX2g974JjT7g8k7QZ7yUajscnhTIW6cW1aimkExvHTCJxuAphjqH7Y6VodlOGX65anReuhUdLd5/Bkabu228KqvveQ4zKQkrp5vej9RQAQLDKcl6sFYOr2jWn9MkLm8dMOF9rjbHvBFjo5RfsGHc5UyPUr7Qo0tQB21v1hbC+uS6jpcLEmQvLyKvvL6nMXgJlOT9b1m20h39h7xPnJkmuqxN0kAoBgkWGeOOP4GEhZvzqtBzEt60Kn08qCNUtt6Xqscxcdp6yY9QaYz1Y5ewbCOVlS+nJVOjFF+h0O1am6pQFoelg9dhKQ4vRkrV2ZNlRnzGw+5/Rk1S5Ffp+4m0QAECyu7t/S9xxy2v37vFJVRdpRT7fQkVGHY2p1yzpbT20cagSHW2AlWUnfrUqnAuaxUw6H6kp6uS5gzDx7zqmrfA9w+rjcOHjc6cnK9NtOFhkavQYnS+SAEwFAsOgg/UNkdMDhQZRVtWlFwBkzTzSBZTk6KDXiBVtS+lnjyAlAjq49qaI0LbcoA9LdR6acVcFlVN21Le0ZAiFj7xHAzgqjS5KyIa0ODDNN84zjofrSKtvJsk42X33pnvjJMtWtG65BOlWBCACCtw7GjMYm5HBNF0Labbvs41/H+foT49/0TQBNTtNVqtdvtbt64gxy+v4TaTddZ3v/qb+63+m0Un6unL4KlnT1kX6nr0DU6zbbFNBf3uP4YWXW3jqBCACCtzsIWU0tIDmbU2aWun1zWr+MsXnyjNOhekkZLkorV8J0g/Q7fVjRdm5J65cxMg83AnYUApGm2nbAMt1w+modIbm6EuT0lbWnzgI1HZ4szfZchbF+4JjDk4Wzc6TyYnE/iQAgWGSYp1ucPv6DJNcutY3+zJZ2p5UFN9mzddLBERYMO/y+yoZZqZWPOa0uiYsKcGpiNQA6OEInHJYsZrZ3FYCQceCY88WaSsMa+3NVu+PX9fV1yCf2AL+LEBvB3gmwUMTp+08AnJ2FU2srEmI2n2dTDvcAw+ysMlZ7BwB1OPiY2a7MGBBKJyatC51Oh+o1S219t9V20bGrJL6yNqWzNhtPO6zYhXNzpNKiNFXPXWDTzhJWY6xsXi/uJvEEIFhkkN4BMtDn8CDy6hUzLxUZA0nSXz/odDqYMXXDrNRyF7sBSU4v3KwMYCzescqSse8oC4WcuUrVHZvsL6sPHHPqKlbsK2sty7rY5XyxJqTXVzCPNzm9jKiliTfA4glAsOiwmlqcH0TdtJaZJkIIABihSFONw41OuwNVU3dts/cz4xPXpJdhhgGAkKoAQtHHnnCYrx+AabfutgU8/eU9ThOrlRTZNsFZ7V10ZNzhUN2+WJMxs9npe3UGRNlQL94AiycAwSLDOHbK6VJFAJThR4oCsgyyjDSVjk9aDiu2IySVFNpm1QEAYvo1eOjp7kOahjQVEDJeP6jvPeJwqI4UTVldk9Yh6oZ59rxDBZTVK5IFluM99YkzQBytrGVU13ZttW/YdpyvAmfmSsUF4m4SAUCwyDCbWp1mAeKvEFMHv8+/5nRWHUDdsHaubvEaXHWRR3+ViAT9wX/4Kh0dczpUryy37YAlnb0sEHKqwI6NtmG2cdBxvn7AypYNaRsLwhHjUKNTVzeuA1URd9O7CjEF9E6Ajo47P4h59GTkB4/Lq2sBwGo+H330V0B0R1cIzytJKEhpPT7yuh2+AgWA6ONP4dxs5HKZJ8/oew45fVWLkL1gL6Xm6Ran00rMVDanl4HEyDh6ChB28vWl8vL0NKiMdPRQI+A0DeoW8QZYBADBYuRaTKlb7ReDX/pn1/tuB4DYb14g/f2OLw9J2bzO1vsDAC4ucO6w1dQS+OJXcFYG6e8DkJw+yzKm3nx9upfY2H/EaRpUpMi1y+xp4No7nK6s3bjOFr2MoycRcjs9rEgCIQKAYDGSlhT+qvtAMK3+ztiTLwCA1d8JQBDyXX2fIks4L3d2bUUAkJcvdb4MlIFBwwM0PM4giiHL0ZgaIWBM3bLeNtzX9xwC5GhrrVRRitNn1a/BYk2ElFkra43DjQ5dBUkSTwAiAAgWJ26X80kVhF2AkNXXAwBI8gICsMjVd9BWTN21DWVlzHHNVVcAlh2+tECSB2MvowxjP7MsR9+dUVxaIpeVpPb+LBaz2jsdJlZQ1q1C6bPqxuETTs8Uo8qmtbbHF7OxKS3b6JWD83NxQZ64k95tiJfA74izmJ1py7d8ddMgQBI9PiGO9hVLEgDxPPT+ub3Ny5GqKtJquVwFlDKLACFOe3+EAGHthh3gSXuKMhvPQCzq7KxgxfZegbFrs7J2Z1p5NTo+abW2O32qWLdK3EciAAgWJcqK5cycdlrFiTFACEkuJDl7nsCYkZhcVq3u2DT3MF/C7vffwUgEELr6VefJXWAOe39GgVH3B++xHcc83eJwtRKjusYLwaeYc75YU6ooxZkZqTqQzl4Wc5Zag1Ft6wbnC8kEIgAI/g9Qr98MoFyDLTz8IYAQh4WFEUjuD9yNc7Pni0mejz2AXBnXxmGHICwvrdJu2z0rX2mL0yk1kJTVK9IWawbDTjcWAKgb622/MRtPO84shJQtDaIMpAgAgsX5BLB+jevGGykZBVkGWfq/uZMR4qYpmZDKytwP3btAry2vXO6651ZKg8AIKDJg/JZuQEUIMAZFBmYCQt7Pftw2Uw+M6fuOOB6ql6PUTXCMWRe7GXE2rQRMqV9pr1hwqNHhGUdul5gCEgFAsGjPYmGe57cflrRisAywTKDk/8AJRsEygVqSWuC65xZlY/28I2iEgDHvJx6UCysBMJgGUPKWpqBhDCgBUwekqFsavJ/+iO0NKpuYtlqcFlhWtzQARmk99dGTCDmsWY+U+lllIE+ccfoGuLjQlrJb8C5BrAJ6h6DdfL3vC5+e/qevAGAMHqQmNlsxYG9q34oAIQQYs1iMQgiB2/upD3t/++FLjsHV7Rt9X/zd0D9/zRq7gMCHJDeSJR4GGGPwJriMEAIEgBCzCCNRBtPKkg3+P/ssuF1AaeoKUPP8RQCWlsT/ysPh7GX15rFTSJadnA7kdSub16X+hk5MWd19jlwFsBfCFIgAIFhMUIpzsjyffCi27zC50EUnJqkRSOxiRY4niC9hmwEFIAj55YKlSsMazycelNesAIsstDCJMeT3eR75gHWhU3/+NToyTmMBRqxEL4zfjGdTBgSAATAAGbsycMly9313a++5BSzL1oHqbxwAAGY5ma5B6pb0AGBaxv4j1Iw4ul1Lq3F+btpRj5+mwXFncjFlSwNQKt4BiAAgWKRzQBgApOqK7O/8e+TRX+vPvWqcPMYgCiCjeAx487AYEABdrl7lfuD9nt/6gLykHABmbwC2zwIB4IJc/19+Xm2ojz72hH7gGDWH+QWJQHpzrkyTAQOwsFKobm3w/M4j6vVbAGD28Nk4cIyBo3xtCLuVhrQ82HR80jrXBuBopY2ybrXtN/q+ow6PCUDV7RtF7y8CgGAxQwhIkrximftD75GKC5STq+nACA0GmW5ck0xB84aeDD/K8Emlxcr61dqdN8nLqvho15atfs6nFsBYKi9x3Xsncqny2pWkrZMGgwDAAiEaCF57V/NzkaZiv1+qqVIb1rjedzvS1NnDfwBg0ZhcucyRreJC2/ZsOjoulZZeWpYF0W7YYRuqs0BQrqp18gYFaaqyskbcQCIACBYziX1VyqpauXYpEEK6+khXL52aNh1mdV7YbGW5XFmu7toKsoTkxFqay+nmEr0Yzst2P/h+1wffQzp7SVcvAFhd8R+uLcq6VTgrU6osl6rKkSTFnZxr9lzdvB5sdRyvVJaqCntQsSz3Q+93uNhJ273NNlSXV69wO0sEgrMycEGuuIHenSAmCgC9Y2CMmVbqikYWibFolPQNvolPALnZOCcbJbbRMtNE0mWvQ+XbDlK6YBaJAQCdmKTjk9fcVamsGLndKHXH71zDf+DVtZwN1XF2plRWnKoDGRqlI05zVisra2yOWW0dLBpz1AW4XXJNtbh7RAAQvCOgDBgFxgDjt25i17J4ToW0hY+XHbeAMmAMMHorHKYUKAOEACNR/WrmFAgp3pWIKaB3XkyP/99b+lqPJ3VAznx+axzGGBgF0d0JBOIJYJGP21ii+7X3ZwwAKGOMIWDAmK1vTu4N4B1vaiuL/794q+3Iaa0o8VE003dfwiXG5mkExgAYdxgQpO0DSN3JgNK9vbJWjBGC1AREfNfBHC5Z5Ip1sLUC4uugZj7IGM+vt4D4XEAG858aLCV+kTgwIdyPq1cJgdPEfALxBCB463t/QhljgACwBNjWQ1FGKWMACJAk2RMtMEoJZbwXkdNnQhBjhDLKGABghCTbas64UQaAJIxQ+oQPZYxylxBIeFanmXQJMQnb/I1/FgAwAmmmm4sbpSS+N0zCCGG7S4nWOVxilBHKABgCJM2a8+EaAgBCTE79prLkRAdgjBDGCOORMf5VeaqMVJfQHC5RQmeMzjo1FmWMAkCKvMm++/J1kMTcl0A8ASzy3t/WvVLKcOKeT/05Oc5N/j2hTEpppZShlN7Y9lmL0GTPGB+3pphNPRRlzNapp/7GZtR2qFQrNh/4GH0+o1ekg+3vZ+uA5//n20EHlu7StdJBIAKAYPGHhJTtXgvXsbW98Luify58KICr/MtraPQdrMOVuXTZOgjEFJBg8UEoe2bfxZGJiNet3H390gyvmkyPjxAMjoVeP94bjpoFOZ737lpmGzZe7Jt67VgPAFSVZt68eYltrHqoaaD54hgAbFldXL883zZofeVod2f/tNet3LCxvDjPlzq8DYSN14/3jExECnI8d1+/1DY+TbpkM8qP39Q+eqR5MGnUNo5+cs+FkYkIANy4qWJpWVaqS5evw507qhUZL6BD8rDcus2lhXWwPVtwlwpyPDdsrMjwqtdEB4TiRufUwbTocwc6LkeH1FMjEAFAsCingF450vWdJ5q6B6ezfJok4ffvXqYqEu8mDJM8vffio8+enQrpS4ozi/N9m+oKefckYRSKGL9+re3Hz54FgLU1BRVFGTUV2fywGKGO/umfPH9274k+AOjetayswJeT6U7aPdoy9MOnm0+3jWT5tFDE+PCdK70uJdkBPX+w89Fnz3YPTi8pznSp0o2blvAOFyEUjplJl9bWFGT4tM0ri/gHJYwmpqOPv3zuqT0XuFGfR60uzUw1yr8pAEwFY79979oMn3Y5OsR0K1UHj0u+efOSpA6BkL6wDqkuXZEOrx3r5i4tKc6MGeTeG5ZfEx3aeia50Tl1eKOx5zJ1cKnSrVsrxRSQQASAxdr79wwH/+Jre9t7JiNRU1Gkv//2wbxM102J4eS+k33/8eix7sGAaZKugWn9a9a3v3x7RWEGv+V/+MzZb/7yVPfANAAMjIQmpqO/+Nf3ebT4lfBP3z/89J4Lo5MRAJgK6lOB2Nf+7BbeNDIZ+dLX9p5oHZ4KxhRFGpmMaKr80bvjeeQbW4f//tsHuwanI1Gza2B6YDT49T+7deuaYt76y1faki4NjISGx8M//cd78hJd6pe/sf+pvRcHRoLc6MhE5Ftfuo03RWLWl7629/CZgUjUBIBv/vKUZdE///jWy9Hh+YOdqToEI3rNkpyKQj/v+77++Mnv/KYpVYdnv3p/UuR/+v7hFw52Jl1K1WFsOrqwDkmXugamuwemlxRlXBMdvvBvrx45MzgVjM2pw99/99CJ1uHL0WFgNLiiKjepg+DdjMgAtfhACD299+KJg53BqSghNBYxzjT2PPrcWUIYAFDKHn3u7PmmgVjEIIQGp6Ivv9H+9N6L/GafCMR+/OzZjnPDhFBC6Pho8LmXzh1qGuBHPnNx7Bcvnxvqn+KtvR1jP372LJ97AYC9J/pefqN9fDTIjZ5vGnj02bPhqMlnmX/5yrkzjT3cpeBU9MTBzl++co6/XzJM8uizMy6NjwZffqP95cNd8bgyEfnxs2d7O8aSRn/x8rkzF8d465HmwZffaOeHJYR2nBv+8XNnx6aiV6HDnoOdT++9yHu9iUDsx8/ZdTjWMpSqQ6pLqTq8fLhrtg6GSZI6JF0KTkXPNPb88pV4aYGFdRgeD8/WobljRofnXjrHjSZ1GJ+e0WHPLB2seXQ4kaKDQAQAweLje79pAp8Wz7iJEHjUX7x8fnQqCgCjU9FfvHwe3IkKkRIGWfreb5oSnXjvidYhSMxXgIRBkX7yXAv/169fbZsKxEBJrCxU5UBIf+FgB//XYy+0gCzNGHUr+072tnSOA0AkZj7+8jnwqPFWCYNPe/zlc5GYCQDdQ4F9J3ttLn33ibhLLxzsCIR0UOWk0alA7IlX2/i/fvLc2RmjAOBS2rom9pzovRwdnj/QkWYU41Qd2rombDp861en+b+e4DqkuJSqw3efaJqtQ/dQYEaHpEsSBo/6+MvnIrp1SR2en1uH9hkdFLsOfKYurgPGNh3GpiJz6+DTkjoIRAAQLDLGp6On20ZUjyrJGGOMZay41fBYuK1nAgDOXBgNj4UVt4JljDGWZCxr8um2kXDMBIADp/rNiKm4+CexpEqyWzl4Ot6PHDkzAAjJarxV1mRAaE9jvLfdf7Jf1mRJlRJGFT2oN18YA4CB0VBv37TijrskyVj1qL1900PjYQA4eW5YD+ozLqmSrMmHzwzwUfOexl5ASNbSjB5s6udGXznSLWty/JtirLhkYpDWjvEFdGjvmQCAsxfHopPR2TpMBmIAcKhpgBjEpsOexh5u9GBT/2yXuA6GSQ6fGZitw8lzwwAwNBbu7ZtKuiTJWHGrvX1THf1Tl9Th2Nmh2UZfP9Y9o4NbiRtN6HC8ZSipw4xKCR0u9E3NqYPqUZM6CEQAECwyeoeDlDLDJHynEqXMtAh41Y6+KR4AwKuaFqWUUcYIZRahlLLRySgAtPdMgiqZFqWMUcYIYZZFh8fD/MiDYyEAsEi81SIUAC72TSXmasIWoYQkjVLQZP5utn8kBDI2rbhLhDLDJCDjnqEgAJztGAdNnnGJMIvQcNTk42J+fJvRpEvdg9MWofFvyphpUZAxnwKaTwd+wNNtI+BWZuvQNRQAgHOdEyBjmw78zUfS+pw6RHQrHDVn63C2Y5y7BLKUdIlwl2TpQs/kJXXoH5lD/M6B6RkdrITRhA79I8GkDjMqJXRo75mcUwfDJEkdBCIACBYZkZg5exmfqkh8viUUNlTFvrOfrzABgGDEkCSU/kYBpoI6/3kyELNNDWOMQhEDAEJRc3bhWUXG/B1AJGbNdknCaGwyAgChiJFcfzkDA0Iob7VtU0IIGWaiyIlu2SarJYz46HU+HbjDQ+Ph2TpgjEYnIgAwPB6S8Lw6GCadTwdC6OxylYqMeev4dHT2N02qtLAOY1OR2TpEY2b8H1HTroOEozFrAR3GJiKX1EEgAoBgkZGd4SImTb3jEYARM7P8LgDIz/EYyV4j0UpM6lIlAMjP9hArrYAUY5DsPiRs3xhICc3L9gAAoRSw/cWhqZOcTBcAZPs1YtldIhb1eRQAyM/ymDqx9bYAoCgSAORleyixucQ0Nd5nyV7VtlWREMq70bgO6VltjKjJHc7JcBkx0+YStWiGV4t/lsyrg6ZK8+mgJNZW2nTIz/IAgEuVTN2yGTV1KzvDdUkdPC5ltg6+xB4CLdNl18EimX5tzusBAIyY6fUol9RBIAKAYJGxpCgDECiKxAeMGCNZxkBYaYEPAJZXZANhsoyTrYoiAYIlxZkAsGZZHsJYluJ9OcZIkXFlSXyxeWVJpiJj3ogQkiSMMFqzLJ93Tx6XrMgSxrwIPJIlDIwtr8gBgPKiDCxhbjTeKmMs4bqqXABYVpENjKW2KrLkccteTQGANcvyEUaShBFCCIGEkSLj/GxP3KXiDCXxQYRAljDCaGl51owOcZdQXAeL1i7JAYB1tQVz6IBRXVUOAGxZU7KADvnZnoQOyKaDV1M87nQdZAyMLavIBoCywgwwaapRWcZg0vLCjEvqsHpZ3mwdKovjLq1amp+iA5IlDICqy7IWuB5qLkMHgQgAgkWGx6VsXVtqTEWoRTFC1KJmUM8r8FeXZgHAisrcvAK/FTKSrcZUZOvaUq9bAYBdGyoYoVbEYJRihKhJzKB++454PZC7dy4zAzFiWIwBo5RETUbZzoYyAFAkfMPGCmMyQk3CGFCLWhEjI8vNu8WCHPfKpblmIEYtylvNQGzl0tyywgzexWdkublLjAE1iTEZuWFjBZ+M2tlQxigjUZPniiOGZQZit26t5C7dtr3KDOrcKGNgRQxG2XXrymZ04C5Ryo2WlGdVlWYCQP3ygrwCvxnUqUUlHNehYUVhpk8DgFu3VS2gw61bK+M6UGrTQZKQXYfQjA4VRRkl5VlcB26Uu1Ra4L+kDrdtq5qtw13XL427tK1yRgdKrYghSWj72tI5rwcrZOQV+Hn0XVgHgQgAgsXHp+9bCxIGjDBGPH/mnddVl+T7AKA413vnddUgodTWT9+3ln9w8+qiJaVZIGGUaMVe9YHbVvDWD966Ank1wBjzdJISqirN2rKmhLd+6r51NqO7N5YvK8sEAFWW7rup1tZ63021MkYAsKwsc/fGcptLn7pvHT/sljUlVaVZIKGESxh5tQdur+OtD9xWh70q/yDGCCRcVZq1ZXWxTQeUOOz9N9dmejUAKMz13Hldtc2lhxPbtTatXEiHB26v4zqgy9IBJXXI8qn332zX4f6ba7P96iV12L2xYrYOH7w17tLd1y9N6oAwAgmvXpa/dZYOSZfuvK66ONd7SR0E73Kkv/7rvxYqLC4YY0V53o7hUNfAtDEWcmW6d2wo/4MPb+RPAAihLL/W2jM5Ph3jrffcVPv5Bzf43ApCSMJYUaTekdDwRIRORXIK/J94/9qP3LVKlSUAyPCqEd3qGpwOjIVBlpYtyfndD66/ZUt8MF6Y6+0dD/ePhCJTUZdXq1ua96cf3VJbGS8nm5Pp7hoJ9o2EzJDu8mo376j63AMbCnO9fNohw6NeGJgen46ZIT0n1/v+2+p+9wPr3ZoMAF63YhLWORCYmI6xqFlamvk7H1h/743xMuW5We5A2LjQMxmZijKTrFlZ/Ml7116/viypw+B0rH8kFNUtlyZzo2WF/qQOXcPB4YmI0T/lyvHec1PtZz7UkOXXeB7my9IhbADAwjo0rCr+ww9v4joghHIz3X0T4b6REDea6tLCOsgSnk8HxlimXwtGzAu9k5GpKMjSmpqCL3x444aVRXNeDw2rir/4yObU62E+HcTdJAKACACLDISQ36NWFGV0DkwFCduypviT7197z86ZjG9VJZkWoVHd4q1/+YltdVW5/G5nDDavLp4K6cGIYcr4xs1L/u4zO3MzEhV9GexYX9bRPxU0rKXl2XdcV/3FRzbxPhEA3Jq8sjq3ZzhoAqytKbhn17KPv7c+mWmyMNebm+keHAtJmry2puDzD23kEzUAwABqluRwlyRN3r6u7Muf3l5e6E86vLa2YGQyYlrU69du3Vb1j5/bJUvxHGiqLK2tLWzvmTQBcvO8D9+96vc/1KBIEp8K93tU7pLXrdRW5nz+oY27N1Sk6qBp8mQg1hc2dm0o/8tPbFu7PP+KdJAkXFrgX1iHB26ve+iOlUkdSgv8XAduNNWlhXVgDNbNowNCyKXK62sL23omTYCl5dkfuKX2sw9s4IneZl8PD9xe94GbV1yODoJ3e2ci0kEvLviCblnGUd06fnZwbCpakONZWZ2Xl+VOLgZ3a3LXwHT3YGB0MlKQ49lWX6rIOLW1rXuiayAQCOvlhRlb1hQDACHUooxS5tbk461Dg6MhTZXLC/11VbmMAaGUECZhBAiOnR0am4pk+rSyQn91aRaljFBGKHWp8kQg1tQ2EowYmT6tYUWhz6OmuTQ43T0QCIT1gmwvN0opMwlljLlU+cyFscGxkG5Y5YUZ62oL4kYpQwCqIh083c/THqxampc0ynVgjB07OxSMGC5VShrlq/7dmjw4Fm7rnugbCZYX+q9Ch4npGADMqcPR5sHx6WimT1tanl2a74vrQKhLi+vQPxoqL/Rzl3jTwjoQwjwuuw7c2+Q6zn0n+6aCMU2Vl5Vn2XRIvR5SXZpPB3ErCUQAeOdgqyViw5bK2NaEAPA8rQsf1rKoPH9XQgiV5vksY4yxeY2aFpUlNN8Q9RIuvf10WOCzl9SB99SMAWNpdXtSW6+tDoJ3FWIgsKh6+fQl/GknEqGrC+USRpTO+0lZwhaZ16gkITL/ZxeoV4IQovO7q8iYJzK7CpcwftvpgBzowH/oHpruHgrYkjdIErpqHbDo/QXiCWAxcrZjvGtgyjBIdoZr8+oSVcGUMknCfEB35MzAwGgIAMqKMjatLIoZFkZIljDGKBwzG1uGxqeiqiotLcteUZkT1S1ZQnwt/PBE+Ez7aDBs+DxqXXVuWYFfN4iEEZYQRuhC7+T57gnDIDmZ7k2ril2qZBEa3woAcPL8cFf/NACUF2esXV7Aryhu1CL04Ol+brS8MKN+eb5uEIyBGw3HzEOn+4NhQ1Wkuurc6tKsmGFJGPPhf89QoK17gru0aVVxll/TDSJJCCOEMUrqwF3SFIlQyo2muVSUsXFlUUy3uLc2l5zosLamIMOrWoRKOF4x2KYDpYxvXLCJf/k6SBJCCO070fvS4S4A8LqV69aVXb++jOvAxZ/7epjt0iwdxK0kAFEPYBHBGBgW+eYvTz35RttUUF9XU/Dvf3TjppVFkNjn39Yz+fffPfxGYw8AvHf38n//wxvzs1zJ4efB0/1f+dbBU20jWX7to/es+YtPbHWpUrL1mX0X/+snjV2D05XFmZ9/aMMn3levqhICYIxFDeuHz5z94dNnUo2qWOIzGKNTsf949PiTb7Rzo3/1qe3Ly7OTQ96T50e+9PV93Oh7d9f82xd2q4qUbD14uv+P/v31rsHpLL/2+Yc2/NFHNmuKzItYAcAvXjn/w6eauUv//kc33LKlkm8PpozFzDl0kCTuErT3Tqa6ZNMh1SUnOvzVp7ffsqXyMnVIFf9KdGBtPRNf+vo+nvQNIXTj5iUbVha5NRkBMAb6/NfDJXUQCECsAlpMD2sI/uPR448+d7b3/IgxGu4N6cGIccPGCo9LAYBw1PyH7x164rW2UOeEMRkdiBrRmMW3UzEGI5ORv/rGvleOdOm9U4Hp6EjEzPBqDSsK+ZH3n+r/tx8dO36yzxgMjARj42GjZknOkqIM3un8+Jmz33miqePsYNLojrWlfo/KW//mWwd/+cq5qfYxbjQSM++4rpr3MePT0b/6xv7nD3Rwo0NhnVK4bl0p78QbW4f/7cdH9x3qMgYDgenoWMwqyvOtqMzh3/TJPRe+9vMTp88McJemY+ba5fm5WW6+Nfebvzz1/afOpOpw06YlfDElIPib/z3wmzfaky4ldQCAwbHQX//vgaRLTnSYDum7N5T73Cpfh7OADpOB2F98fW9SfJsOrZ3j//j9w/PogP71h0d/9mKrORa2woYZiPUHYzVLcvimM4Rgtg7J62FhHQSC+GSgkGCxMDoV/fcfH+3pn5ayPXJJJgD87KnmY2eTNUxGv/Pr0+GoKZdkyiWZYxPRr/70+PBkhPcULx/peurl8wAgl2RK2Z5zF8e++ctTPBkOY/CDp84cON6DXYpckoldyoHjPT946gwfhpsW/eYvT527OJZq9LXj8bTJw5ORr/70+NhENGn0O78+fb5rgrceOzv0s6eak0Z7+qf//cdHebJ+jNDPXzr31MvnuVEp23OiefBrPzvBp48YY1/72YkTzYNJl556+fwTr7fzl6CmRb/6WKNNh0NnBrnR810T3/n16VSXkjoAwGvHe1Jd4jqY1tXo8NTL51873sPH0wvrcOjMYKr4Nh2eeL19Ph0IoT98uhkApByPlOOR8rzhqPn9J+MujU5FZ+uQvB4W1kEgEAFgkXH07MDIUBAIZQAMgFEGhvX03gvxuYu9HbFADCjjrUCoPh19Zs9F3vqtX50Cg7Bkq0VPt400XRgFgMlg7Jl9F4GvxwSgjIFJntl3cTqsA8ChpoHTbSNgpRn96XOtCaMX9elo0iUgNBaI/fyleAGsp/deAMNiKS6NDAWPno1XH3tu/0Uw4ka5S4ea+nn9gKHxyKGmfrDojEsG+dWr5/kHXz/W3d49adPh5y/GXfr5S+digViqS/p09Jm9cR1++lxrmksWPd02wguiXbkO5DJ1+PmLrWnicx2a4zr86tXzc+kQAYCmC6PDI0GW+nqZskNNA5PBGL8eZuuQvB4W1kEgEAFgkXHgZL/kkiVNppQRQhHGarbntaPxgiGvHumSvRqWMS8ZiFVJznC9dqwbAGIG2XeiT8l0IYwJoZQyya0YhsXLiw9PRIaHArJPQwgIoQiB7NOGhwK9w0EAOHl+2DAsya2kGj1wqo+vP3n1SLec4cKqNGPUq72YqJz12tFuNdszY1STJZd84GQ/AAQjxoXeSSXTxY1SymSPGg4b57snAOBc13g4bMgeNemSkuk60z7G9+XuOdGLMNh0eOVIFzf64sEO2auluZThevVINwBYhB441ZfmklsxDOvk+eGr0EHJdB041RczyCV1eOVIV5r4miy55IOn+wEgEDbOtI/N1uFc1zgAnG4bwYqEMCbxzRYMyzgU1IcnIvx6mK1D8np44cC8OggEIgAsPtp6JnkvwP/JGDMtkqzWcrFvihc8iY8U6Uyll5HJCFBmxUeZAACUUGAwMBoGgInpKGBEaHw5It/uBBj1DgUAIBDWgUEyTTE3Oh3SeX2xofGQZaUbJXR4PJJ0ybRI0ih3vq1nEgBaO8cNg1hkZg0kn49q654EAB4GCJlxySLUskhLxzgADI2F2SwdhhIFZIbHI7N1GBoPAUA4Zk6H9FSXuA6BsH4VOliETof0kcnIJXUYGg+nis91uNAzBQAtHeOWNYcOXIGB0TAlLHWdHqUMEPDSDm09k2z+64EbnVMHgUAEgMUHnWvzTjK/fCRm4Fk1TIIRAwBUGQNGqWVMGICsSBOBGB+EKpqcuhiYMVA0OVHDxJQVKW2lMAOgTMIYACyL2hYUYjSzIt6MWTZvk2vtp4I6wpilu6SoEo9YgZAupRtlDAAh3SQAYFhUlu0VTiiZ6V5n68D3T0gYA2WzdQhFTK6DpF6xDqp8aR3orD0NEkaBiAEAukkgfQMHA5AUKRDSAWAqGLNV7wHeGjb49TBbh+T1oCrSfDoIBCIALD7KCvy2TUOMgT8jntQ3J8PN7K1MUyQAKMzx8J4lFZ6WAAA0VZq968oiNDfTDQCaItm2ODEAwIgnl87yu2YbzfDFa5j4M+w1TChjZQV+AMjLcgObbZTxw+ZleSido6viaXOy/S5C7bVc/AmjGT51tku8VI7XrQBGs3XgKmmqRGftq7qkDlzbS+jgU2frkJflTn6jWZGe5sXLy8izt4lRSvly2LIC/xw6JK6HwlzPfDoIBCIALD4qSzNZzOKFSqTEJqxkDZM1y/MZZbKEJYz4Zh9mkNXx9YIoO8OV3AEkSViRMQvpG1cWAcDy8mwWMWQJSxLGCEkSliXMYlZtZQ4AbFhZxEK6ImNJwskjZGe4+Nhy+ZJsZpBUlxhlVaVZ3KVVS/MAgLvEy5uwmFVZmgkAS4oz4t5ylzBSZIkFYquW5gPAsgp+WElKOCxL2K3JRbleAKirzmUR065DonBKVWlWUoe4UYMsX5INAAhgTh02JHXg3l6RDghdUgfum82lDXWFAFCU63Vr8owOElZkiRmEl5epq85lBpESQ3mEEl+nPDt+PczWIXE9lOT75tNBIBABYPGxemmu4lVN3SIWJRa1DAsYu2FTPNPkTZuXAEaWYRGLUkItw5Jdyk1blvCx6s6GMmpRy7AoocQkZsxy53h4gvvyQn9ZZY5lWMQklFJiEsuwSsuySvN9ALBlTYk7x2PGLGISflhqUV4aBQC21ZfKLiXNJYx2byjnrbduqwLGuEvEoqZuKV519dJcAMjNdNfXFlh6/LDEombM9OT76mvyAWBZeXZxcaYZM+OtJrF0a+OqYo9LBoCGukIt02XG0nXYHNdh94bypA7cqOxSttWX8taFdVi9LO9KdWCXocMNmyvSdIhZskvZvpbXtJE3riqe0cEkZswsLs5cVp4NAOtXFMouhZgk/lqCMlO3iosz+XPD6qW5WqZrvuth06riBXQQCEQAWGRsXFm8Y10ZhA0wCRAKuuVxqw/fFa/scfuO6qJcL0RNIBQog6hZX5O/u6Gcj3w/de86QAC6BZSBYUFIf/+NNQWJsou//6EG0C0wLAAAwwLd+uh71vCmgmzP+2+sgZAOhgWUgW4Bgk/du4637mooq6/Jn3Epahbleu+7KZ7K/76bajxuFXQLCAWTQNjYsa5s48p4DZPPPrgBYmb8sIRCIPbI3au4SwXZ7vtvqYVALN5qWBAzP/m++viDRXXerduqIKTPqcN9N9XM6GASCBv1Nfm7EhFrYR0+9t76K9UBXYYOD9+1akYHQiGk19fkr1oar6PwyffVz+hgWBCI3X9LbUG2GwCqijPra/LBsCQJu1QZYQRh4/5bapPXw63bqua7Hu6/qXYBHQQCjtgJvGhwa7Jl0bP9U0xCkiLl5fvef2PN794f74uzM91DY6H+6RgBQBiXlGV9+t61N21ewlvLCv0tHePTumUQlp3jKV+S86e/tWV5RTYAUMrKizJOXBiLWCRmktxc74b6sj/5rc35WR5enNbrVo5fHEOKZDEoKPTfvLXyjx7ZzPOUed1KOGpeGAlxl4pKMj9064pkEav8HE/nwPTQdJRh5PVpJeXZv/eB9TsSO2CXlGQ2XhgLGpbFwOVWalYUfulT2/m2W4yR36sdvTjGJGwxyM7xbN1Q8Wcf3+JxKQiBqkiShM70ThEEs3XI9GkDo3EduNFPvK/+5kQtl4V1KMrznbw4PqcOAOBxy8cvjl+FDiX5vo7+uA6qJlcvzfvYe9bsaijn8/IlBb4TF8e5Dtk5nqpl+X/6W1v5TI4s4XDUPNE+Gp6OWsEYyFL1svwvfXJ7WYEfIeTWZElCJzrH57wesvwL6SAQiACw+FhWkc0rsxfmeG/ZVvmlT27zeeJvGjFCDXWFCAEwyM5wPXRH3W/ft86lxXM9KTKurymgjBkm3b2x4iN3r75rR3UigzHK9P7/7d15dFxXnSfw373v1atVKpWkkmRJ1mJZsrzJlu14SWIH7DiGhECCAwkkpCFND93QNBl6epuhp2fmcLqB2WgGBg4zAxk6BLLRDSQxWcnmLd4XeZElWYsla99Ktb937/xxq56qSosdmZyOer6fE3KCrqt+V1/J7/fq1at7jYbawkTSCkcTe25e9tWHb2peUWKv5FxRklcc8HhcDs7Z3bct/9PPbC4v9tlTWllb7HU71JQ+vqvh0U9vUm/kqmvWW9YsCceSToe+uq74/jsaP/3hVeoNTCLmdTk2riqbDCc4Zw1VhX/1yNYdzZV20dIib225n3POOfvApqr/8Ie31Jb77btaasr9wUKvJeTMHNQ1IpWDKvp7d6+93hx8zhWz5aAWba4I5gULvQvIgYjsHKrK8r/0wMYH7liZnlJWDh/YVPXFTzbftmGpncPK2uIrg6EL3WPJUHzJ0sCf/97mj9623F56uqbc73LO/vswfw4Aqb+kWA30/U/t7KHWyOy6OtnSPhyOJpdV+jeuLLOEJCmFVOtK0rnLIy1tw1PR5M3ryldUF6qPa6mV9TlnR8/1n2kbrqv0N9WXFOQ5hZBCSC298v4bx3rOtA011Qd3bFiqiqqdRohoeCLa0j7ccWWiqb5448oyKaWQZK922d0/ebZ9OBxJNjUEM4tyRoyxI+eudvZOej2OpvpgZUmeGlX7XBGjN471dPRO+NyOe3bWOzSeWTSWMA+fvdpxZaKu0m9PyRJSfacjE9HDZ67OzEG9paxyyCm6sBwyF9YfmYidbRvq6M3NQb0O6O6fPNs2HI7OlwMR7d5aU5DntISUUmp8umhH70RdpX/bugo7B7UN8mtHul97p2twLLKsouChu1ZVluRdz+/DrDlgGwBAA1j0JBHJORfbVz/PeUbnHJr/aRc6qoaIEZv7gXNN+IamNHfRf84c3v13Ku1HzrGzwI3kAP+fw5vA73f2ph9m+qZvlj6ImJaw7NH0fzA2PTpLw2e5Tzs9lB6VUibNOYtmfhp55mMzP/KaOgVWU5q3aM6EZy06z5SychAZOdCN5qBGTSH2n+pVn86dNQf1yazryoFdo+jMUbXaKEvvkJYwrYXlYFk41YNceA/gfd+iOYvGzIHR8IFTfW6XblrS7dRNS8j0pivjodjwRPTA6T63S+ecGw4tdZlF40Q0NBbpvDrZ1jOuceZy6oxISGJEGueWkAMj4TNtwz0DIZehuV26WpKAMaZpLJ6whsYi+0/2JkzBGXO7HJYlJJHGGWdsKpocHIucbR9hjLTsooyx0YlYR9/E8QsDPo9D49yhc8uSxEjjXEoaHA2fbhvuGQgZOnc7HZLU1SSmcaampIqSJK/bYaaLateZw6npHOyiC8+Bs9GJ2BvHe5595WL/SLjQ7w7ku6SknBxePdJVkOdixJzGNXIwLcHSUxoYSeWgceZxOaR6XULTOZxpG2aM4glLfadCkLrmttAc8DIAcuFNoUVg34GOv3/i2MRU3O9z3r61+q8/fzMj4oypy8TfffLEy4c61eiffGrD3l0rOGeMmBByMpL46++/fbp1MGmKsiLvN75y2+plxTJ9+eNi1+hffPt1tYrOxlVlf/flHX6v0z5LfevElb9/4mjPQMjj0m9trvxPf7RdHYWFlJyxZ165+ONfnonEkh6XI1WUMcaYJaRpyW88dvjtEz2RmLm0NO9PPrVx99YazomIkaSegdBffeeN1u5RIqqvKvzmV25bWppnX5BRU1JFm+qD3/mL3RpnahkLlp3D7q3VX7t2DkQ3nMM3Hjv80sHLV4enPC7Ha+90/fBrH6oqy7cvIqkchsejxQXuz350zec+upbNm4PGU887PhX/6n/9rcqhrMj7P//tHUtL86SUmTn0j4Q9LsfmNUu+/qUdqt+os/l3//ugXicAoAEsNj39ocdfaHlz3zkyNEpYg6PhnZurb2mqUJeE95/u/ekLLRcOd6nRogLXLesrSwu96rrBUy9deOKFc6GuUeKMnPra+uDffOEWtfJBLGE9/nzLc/vOUdwkooudoxsaS//g4+vUcWJ4PPoPL7Q8t+8cJS0yRdfVyVubl350Rx0RMWInWwdTU9I5maKowLV5dfnSsjwi0hh7/u2On77Q0neun3R+yqEVFribG0vVygdE9PTLF57Yd45Gw0R0tLB/bX3wzx6+Sb3LOhVJpKaUtMgUZ9uGd2+r3buzYa4cPvi7yMEScp4cTrYO/vSFlr7WQXI7yBSdbUPPbK199MFN6mx6OgenTnHT4eBrlgdvWlV2zRwk0VMvTedATv3m9ZV2DvFkxo/GFG09Y1ubylUOUlL/SHhhvw8AeA9g8fnJ8y379l+mgId8Tgp4WrvHvv34UXv0248fbe0es0f37b/8zCsX1fuCsYT5zR8fCoXj5HdTvotc+veeOtHSMaIe2NIx/L2nTpBLp3wX5btC4fg3f3xIrW0pJe3b3/HMyxfJpZPPSX5339DUd56YLvr4C+feOn6FAh7Kd6miP3m+xR79zhNH+4amyO8mn5Nc+jMvX9y3v8Pew+S7Tx4jIVRREuJbjx3uvDqhHnjkXH9qSj4n+d2hcPzvfnQoEjff0xw6+ybmyeEfnm/pG5oin5McGrkcZOjfffLY0Fg0NwevQQHPW8ev/PDZk9eTw+BY5Js/PjSdg0v/1mOHO/sm0j+akekpBTx9Q1MZOchnXrm4sBwA0AAWGSnpqZcuxMajTp9heAynzxAJ65XDXYOjEXU8feVwl0hY9mhsPPrEvnPq7cJj5wc6Lg0RY06vYXgMh8sx2Tvxq9cvqWd+6cDlyd4Jh8theAzDYxBjHZeGDp3uIyLG6KmXL0RGwmrU6TVIyP0nr7R2jRLR2GTs12+0JabimUWfeumCWiC6tWt0/8krJKRdNDISfurlC+oM9NV3ujo7RrhDU0W5QxvvHn0lvUj9C2+321Nyeg1i7NiZvnMdw/PkMDweVa9XFpzDc2+1z5PDr99oIyENj6Ebuu7Sdafe2TFypm2QiMKxpJ2Dw+1w+ozEVHzf/o6xydg1czh0uq/j0pCdg8PlGO8efe1Iap+1X75+aToHn0FC2jkwxp7Yd25hOQCgASwy41Ox062DzOOIJ6xE0oonLNL5eCh2tmOYiM5cGhoPxUjn9ijzOA6e6lX3n/zmwGXmNdQlhUTSSpqCFbh+8Vpr6mi7v4MVuJKmSCStRNIiIuY11IYhUtKbx3uYz1Cj8aRFnMUS1tsne4mo8+pEa+coc+qZRU+3Dg6ORono7ZO9sYRFnE0X9RlvHu9RZ74vvNXOXA4hpCoqhGSFnuffSm2c8tLBTntKauVn0vgbx3rmyeH0pSEiOn0DOTzzysV5crjUNUacJZKWaQnTFKYlmMtxtm2IiAZHo3YOSVPEExZz6r2DU+oFzfw5vHq4i3kNO4ekKVih59fp7br+8bXW6RwSFnFm5yClPHiqd2E5AKABLDKXeyfItDLP4BhjJGRb9xgRnWkbIiFzRxPW2fYRIjp+vp9l3znOGbtwOXXp48LlEZ71QGLELnaOENHAWGQyFOc5Tyupd2iKiAZGwmRajGePJq3h8QgR9Q5NkcyqyhmbDMXVbrQ9AyGWMcaIOOet6b1zL3WP5UyJiE5cGJgnh5Otg+pa/Kw5nLs8es0czrUPz8zhUveoanU5RdUzq5s+h8cjZImsHDgjK7UJz/w5XOoeZdk37nPOj51Pbefb2jmaGz7RifMDRHTu8iglFpgDABrAIjMRTjBDExn33UspucbV9Zbh8SjXeM6OUczlGJ2MElEkZkrKOvnLvJteyqzb+aUkSTK140rCImLZo5JxZpqWelpu6JlTEkJylz4eihORaVqMZ326UD1PImGpPykz9gGQRJYl7Bvbo9FkzpQYY+FIcp4c1MYpk1PxWXNQx+L5c2CczcxhKpokoompODf03FX1KZXbeCjOHFpODkzXIjHzmjlMRZMyez8EyxLx9Lsd8biZGz5j4Zipuq96CbWAHADQABaZ4gK3FLkfANU0VpjvovTq9jnnp1JItZRYZUmevaRM+jSTBfJSG4ZUlubl3BiucR7IdxFRMOAmMWOLK05qwQOnoedcUlY3J6qPIDl0zrN/pzhnZMlgwJ0e5dnfCy9IT0l3aDlFdY1VlObNk4NaGHlpad6sORQHPNfOocSn5X6n3HBoRBQMeGbePMkZU5+osixBJDNnxBhxRk5Dv2YOhkPLzYGzyvTmMLPmoG6yKg54ZPY5vnrm68kBAA1gkaksyTMMTQrBOeOMqX8np+IN1YVE1FQfNCMJ++ucMymEYWgVJXlEtLY+aE7F1f3jnDGNM5G06qsL1TM3VBdacTNz1Iwk1LqYbqfu9TmFmS6qbmyPmWqXktpyv5Ww1NdTRSVZCUsdv5ZXBayYyTJGhSkChR61+1h9VcCKJjOLWtHkytrUwsi1Ff7MohpnyVB8XUPJPDmsqQ8S0Zo5clCHxXebgxVNqniDAbcwhf0RXMaIM2bFzaICt+qgjJiUNF1UkpWwasv918yhobowN4d4aueZ2XOYiq+oLlSH+Jk5mJHE9eQAgAawyBT4jLXLi5m6JMxSH/p3+JxqT6h1DSWGz5n6dJAa5Wzt8mKdMyJqaighPf3hIZY6gG1vTq0Iv35FCWmcMkc13txYqka3rCmndFFixBm5vM7mxjIiaqgOBINelnqUuo7PgkFvY00hETU3lrm8Tp4xSpx9cFNql5LtGypJY9lF2S3rU1PasWEpcTb9zIyRztUWMXPlUFdZQER1lQWz5lDgMxaUA9veXEFEhq6VFKk76NOn3IxI46uWFRNRY03hssoCnjEllUNDdeDaOTRXzMiBr19RkpUDZeWgevOsORjXlwMAGsAiwxh76K41UpI1HhXhhDUZs8ajj9zTVOh3EVGwwP3AnpXWeNSajIlwwhqPSkkP3bVGPbapvnjrhqXmYEiE4iKcsIanigo8e3elthPZs622ckm+NTwlwgkRilvDU+tWlW1Zs4SIpKTPfWyt26mroiIUtyZju7ZUq8X6dY0/dNdqazyaetrJmIglH7prtfoQU3VZ/q4t1dZkLDU6HnU79QfvXKWuS9+yrqK+tjhVNJywhqfqa4vtTQs+vqvB7dStkYgqag6GPnjzsoaqwHw55LuIqDDfNWsO6tT93eZQX1t8y7oKe0piKi6TFmNMWlKE4pVL8puWp7a6vH9Po4glU0UXlkN6SpVL8vdsq83KQYUfTpiDoa0blq5eVjxXDg/sWXk9OQDMhLWA3u+qlvgPnuodDCfIoeluR0lZ/g/+3Z5g+qrukqDv+cNdcUbM0B1eY/OaJf/xj7bneQwiyvMYliVeOXOVHBozdCPPedeOukc/vUk9sDzou9QzdubKODk0zak78pxffmDj3TuWq9PduqUFR1qudo9F1WiwLP/PP7tlfUOJag/V5fnPvtURk8QMXXc7GmqLvvXoB4r9HrVSDdf42y39cZma0s6bqv7ykW3qY7cFea6+oakjHcPk0LihG3nORz7W9MCeRvt7OdJytWc8VdTwu7/+xe1q4+L5c2CM/Q5zeORjTXZ7KCpw//rg5UjClEISZ7rb8cCHVn5qz0qVQ3nQ9+qxnomEteAcmKGrKd2/p/EP7l2XmYMKnxu60+/+y89tsfd6nJnDf/nTneoiz/w5AKABLDJCyHyvUVPud7t0v8+5raniC59o3nVTlToASSmDAXdFaZ7XZQQD7t1ba/74kxua6oOUvnVkSbG3vCTPaegVJb7PfGTNZ+5cXVHio/Tia0tL88qKfZyxtfXB+/es/PSHVhbkudSo06FVLfEbDs3vc66tDz5yT9Pd2+s8LgcRCSmL/O6yoFdIqijxbWuq+Fd716v9rVTzKCn0lBR6dZ1XlPh2b6354ieb1Q63akoVJXnBQg9nrLbC/5mPrHnww6vU6ghCSKehVS3xF/ndLqe+tj74+Xub7vlgg9oH+D3KQY3m5JA5peICj66xS93j42ORoiLvHdtq/+zhzaVFXpVDIN9VVux1Gnow4F5YDvlep5rSQx9enXradA4q/NoK/xc/2fzxnQ3qID5rDrs3V2sanz8HgNmvMeBDIovCsQsDLW3DS8vyPripSi0Qn/m6/rdHu3v6Q2uWF29oLBVSZt72Hk+KffvbJ6cSd966rLjAbVrC3oSEiIbGIvv2X873GbeurywucFtCqt1L1Epnqmi+z/jQLctcDk0dueyi//T6pcmphJoSZa+wH01YLx7omJxKqClZQmbUTBUlIjUlu6gabbsyfuBkb77PuPPWOkPnau259y4HNe25ciCiwbHIf/6/75xtG6oqy//wrcvu+UC9WnMtp+jCcth/qteekmUJnjF87Hx/S/sIET3woZWGznOKZuZgN5W5cuC4BARoAIvu3N9KbzVFRNG4GU9YTkNTt5GYlmDpBZ+JKBxNJk3hdTvUn0+aQtemDyWhcMISUt1tKYQ0LaFucyQiS8hQOKFrzJc+wcwcVUXtUUtIkTGliam4lDTrlKSkqUjCEnLWKamiRJSakpSmOV00aYpwNDlX0d9ZDlKapnCoN4dnyyFpCXW5RkjZ0x9KJC2noRXmu3weI2dKqujCcojEkpY1+49Gfad2SjeSAwAawGIiaXozk1jC8mXsLps0hdrtT/09d+jcPmQQUSJp2Qe1cDSpacxlpBZ8lZJMS6gjgmmJeMJyOXX7FngpybKEnh6VRI6Me+fV/oXq7U3TEkJKQ9eypsRSRx/TEpaQzuwp6XrqZhnTEur2xFmnlFs0vcb9e5dD6tDJmDbHlISQmU+rnll9ZQE52FOaP4ec7/SaOai3HObOQcMLAJgL3gN4X7ZlIiKKJa2TrYOXesZ8HsP+O69xxogYYwOjkSPn+8en4kUFHnvTWk3j6vP/F7tGz7QPT4TjFcHUPeAsY0uQoxf6L/WMCSHtVZoZI54x2j8S1jXNLsrTO1KpKfWPhLOKqnssGRsYjVzoGhkYDdtF01MixtjFrtHOqxPhaDKzqDZPUXUbfEYOlaV5WUVvIAd1oUZNKTLPlEbDDl3L3N6dc/4e5aC6vvrRZP7Er50Dmy8HHP0BrwAWn8GxyP/42bHW7rFIzKwszXvko2tuWr3EvhB87Hz///6nM1cGQh6XXl8V+OInmsuKvOpgQUS/eK31V2+0jUzEPC59501VD9+9xtA1zkhKMoV47FdnX32nKxIzi/yuu3cs37urwb76PBlO/OiXpw+e7iOiQr/7gTsab9u41L5y3Xl18v/846nW7jEiqq8KPPKxtcsqCuwpvXXiyhO/OT86ESWirWvLv/TJZvVxJHV4evyFc68c7ozGTbdT37W5+jN3rbYvhiRMS00pVXRP420bZikaiZn1VYFP7WnMzEEVfdc5EHHGfviLUwdO9aopzczhu08eO9U6RESBfNcndzfuvKnKfs0xI4emZRX+68iBMZaakp3DQ3etNtM5mEJ89+fHD57uUz/xj+6o+/Aty34nOQDMBRvCvC8vAUnat7/jGz8+bEYSxBhZwuPUNqwsUyenSVM8se/cD37yDmmcpNQ9RkN14cN3rVaPHRiLfO+pE6+92U6ckZTHzvWvqivevr5SnWkePn31W48dbm8fJsZIyJ6B0M3rKpYUe9VjXz/W/fX/dXBkMEREJGQiYd68rkJdmhBS/vL1S6kpEekeIxjwfPmBDeoQk0haj/3qzI9+fpw4I6JXD3dtXFm6I31LTO/Q1H//6dHjJ64QI5J0pm145+bqiqBPjR4+m55SumhjbVFpwKNymC7KGFmCkczMIVX03eZAdLZ95FuPHW5vG1ZTmpnDv//+21YkqaaUTFrbmytvPIerw+HUlNI5NDeWralLfRD6wMneVPiMkSUGRyMbVpXdeA4A88B7RO9HY6HYf3v8iDkZo6Sl/nnq5YtqRXh1eHrq5Yv2kDkZ++GzJ9XycELIFw9cPnS6zx5t7x77zs+O2Wuffednx9q7x+zRQ6f7fvLcWTU0FU1++6dHRwZD9uhzb7W/daJHjfYMhH7wzEl7SuZk7AfPnOy+OqlGXzzY+dxb7fYDRwZDf/ujQ/a38/2nT5xuHbRHT7cOfv/pE6kL3ELmTOm5t9pfPHBZvTAdGo9kFqW4mZNDZtF3lcP3npwzh1Ak8e2fHrUmYrPm0H11csE5/OS5s5lTOt06+L0nj9k5/O2PDmWG/9o7XS8euKzWfVtwDgBoAItPR+/E6WNXHH6XEfA4/C5nkfdK19ibx6+kjzKXr3SNOYu89h/Yf+KKWgKac/b0SxcjkYRR6FGjTOPPv9mutrgKRRLPv9nONK4eZRR6IpHEz188n7QEEZ2/PPLbQ52axzACHiPgcRZ5B/tDv3qjTRV942jPhbNX1XOqh184e1XtEEBET718YbA/5CzyqlHNY7z4ZtvFrlEiisbNn+07b5rCKPQYAY9R6DFN8bN958PRpOor9pTsok+/dFG9WXr0XL9d1OF3OUt8OTmoou82h2jcfPbVVqZxe0oqB7Wfe2v32G8PdRoFnllzePtk78JyMC3x8xfPqynZOTz7aqtaPbRnIPTim20qfPUTHx+LPP3SRfXCYsE5AKABLD4tbcPk1JOmSJqWqRZM1vlrR1I7Zx05e5V0njAt0xJJ00qagoR8+eBlNar+WDI9KoWIRpNqof/j5wei0aQUwh4lopb24ZHxKBHtP3mFJFmp57QSpkUa++3R1JnvL1+/RIamppQqamgvH+pMnYQe7SaNJVJDlmUJkvSbA5eJqLt/srNvgqRMP9AiKTv7Ji50jhLR8QvTU7KL2t/py4c67aKmJRJJi3T+2jsZOWhsATlc7BodGovYRe0chsdjRHTgVC9Jsr+XVA7p7boyp/Suchgej7W0D6sp2TkMjUUudKVysMNP/cQZ/U5yAEADWGTaesYcHgelPuZKUpLu1A+eSp1mtnSM6E7dHiIizdCPtFxVR9vIZIzr3B5lnHOdn+sYIaKTrYNc54xPj3KdJ+Nm/0iYiC50jupOnbHpopqhX+pK7SVypm3I4Z6eEhE53A57G9vewZBmTE+JMdJdjkvdY0Q0NBYVQmROietcCNHRO05El7pHc6akGXpkMqb2vDzXMZxZVOVw6EyfKnr+8mhmUSLSHNr15HD0XD8Rzcyhb2hKNQDdqWcW1Qy9/cq4KtrZN7GwHPqGppJxMycHImppH1I56C5HVvgOLTIZ6+6fvJEcANAAFp9QJGFfrVZMS1wdTm3rMTIeVRcrbJYlJqbi6toRzdg4RQip9owdm4wJIXM2DCGNq71cYnHTtETWximWiKZ3KVE7F2YWVXegp6uk9gOw/69pCfvWdWIsZ+MUYkxdAorGzJwpWZYgQ+sbniIitdtiTg7qME1EQ2MRKycHIa8nhysDIfWVnBwmw3Eiujo0NTNeNVsiYowWlsNkOE4az82BSL38isZmhC8kGVpH78SN5ACABrD4eFy5n+HUNG7fNu73OXN2ONE4y/c5iWhpaR4lLC17v0bOmfo0ab7PIMrdp5DSSxcYDm3GFjFMfdCUiHSN69lT0nWeecTKLkq6xl2Glvq6JJ5dlDHmcupE5DQ0zrP3a+SMElZJwENELkObmYPPbdhTysnBoXP1UV6VA58jB7XqTm4OQqr7/YMBT87t8xpnlD5wCykXloPX7SAhZ+71qNZfchqanl1U5aBWeXPoPDcHzq4nBwA0gMWnrrIgGTOzzukS5tamcvXfq5YVWYnsUVOsXR5UDzS8hpVxtiiFFKZYuayIiNSfkVknoYJxUmtq1lcFrOzTTMsUVWX56r9X1haZ2VMyY2ZlSWq0tNCbVVSSmTDrlhYQUVGBm3ESQmQWlUKojVPqKguEmXXmK0xheI3yoI+IllUGZuawbkVqdbP6qkBODsmYqbY0UDmIOXJQK4zm5KDpXH1ua2tTuZUws07GTVGavmm1siR/YTlUBPM0nWfmoCagdheoqywws4uqHNRC/yuqC3NzMMX15ACABrD4rF5eTJGE4dCchuZ0aE5Do6S186bUuvmbVpdR0rKHDIdGQt6cXsJ+x4alZAmnoal/GGcOQ2usKSKiTSvLCv1uxpl6lNPQiFh50KcW+r9lfSUJmVXUtDamV2O++7blFEsajoyisaS9lP/2jZVkTk9J1ziZ4tbmSiKqLssvD/qI2PTTEsv3OdVGYBtWljkMTdf49KiU9o3zW5vKZ+bwgfS2KrdtXJqbQyx5x9ba6RyktEczc1hZW2TnYE+pobqwOOBO5WBJTePTKZnWjg2pDWR2ba5eWA7FAXdDdWFmDoyzQr97ZW2hyoFMMVcOt2+tyc3BvN4cANAAFt8rgOVrliQmovHRSHw8Eh+JlJT7d2xMHQ7u2FpTUu6Pj0Ti45H4aCQxEW1es2RdQ5CIhJD37V7h87vjI5H4aCQ+GpGWuH1LjfpcaCDftXtrjbREfDSSGI/GRyNcY/fdvkJd+lhdV9ycXTRQ7Lt7R50qunNzdXVDSWIiahetbijZsTF1WPzE7SsCxT57SmY0ccuW6oaqQnXp477bV3CNpZ52NMI1tnfXinyvQUTVS/Jv31JjRhP2qNPtuG/3CnWBfsuaJTNzuGNrjd2TcnKobihR58UqB6fbYT9tZg4+t8POwZ7SfbevMHRORI01hZs3VFrRZCqlkUig2Hff7akdAnZsrFxYDobOc3KQlti9tUat81y9JP+WLdUzc1DvE8zMIVDsu54cANAAFp8iv+urD24ip06SSBJJee/OhqblwfRJaM29OxtIytSoU//C3nXlxT4i4pzdtb1ue3NlelRWlOY/+uAme1Wyz9/bVFGaT5KIJEnZWFP45U9tVEN+r/GFvesyi+7ZVqu2iCGi2nL/F/aunx516l/Yu35ZeYEa/cj2uj3bau0pef3ur33+Zvtq+Jc/tbGxptAebawp/Kvf36qGHBp/9MFNXr/bLrqhseyu7XXq+nhdZcHMHLasSV0K++Cmqhk5rM/3GHYOGxrL7NE5c5CkcnjkniY1VOBz/uuHbvIVuOyU9myr/cj2VCNcVl6w4BweuacpM4eK0vzP39tk5/C1z988Mwf1NkZpkTcnhz3baq8nB4D5YSmI92VbZuxjH6hv7R4bGImYlvB5HA/ducp+G9Dt1B+6c1UiaU1FkrrGS4s8d95aZ7/hWRn0/f49TWXF3ljc0jW2tj5oX74QQm5rKv/KgxtPXBiMJZI+t7GtqbyuosBeTf7OW+sefXizXfT+3Y3ejEXo9u5qGBwN9w5OqaJ7dzVoWqqox+X47N1r3C5dTamhOrBzc5W6D1JKWVdR8Mf3bzi4siyWsHSNb2+uqF8asNep37Gh8t88vLm1a8y0hMvQbt9SU5m+4K5rfGYOTkObK4e9uxrsDCuDvj+8b/3ypQWqaHNjyXQOcjoHVXRbU3nNknx7Kf89W2u+8ulNHVcmYolkQZ7r/t2NajMcItK0BedANUvyM3NobizZ1lRu57Bzc9VcOcz8fbh/d+N15gAwDywG9/4VT1r9I+FY3Cwr9vq9zpzRiXC8fzjscuplRV5n9pLFanQ8FHcZWmmhd+Yzd/VPjodiZUXemaPzF40nrc6+iXmKqilVp986zjQwGh4Pxeca7eqfjMXNgjznu53S/DncYNHxUKym3P8vIAcANIBFI3NXKZt9qpizOVTOQ2Z97DzsZ7M3IZh9NHvPqXTR1BdnndLMJ5nnK3N8L7MUvUYO6e/i3eZg13rvcpj1sdfza7CQ34fZvgsANIDFQe0IpjZSEUIyzjJvMLeElEJyziSREFLjLPMQYFqCJDHOpJRSUuauWFJK05KcM87UNi+UeYN5blFGmTeYq1FtjqKWJaQke0qZRSn9aSnOUqOZRe0pMSJ1Q6iu8d9ZDjRddNYcVNHcHKS07JSs9zCHeaZ0jRyypzR/DgBoAIvvRYC94a36EWWeA2Z+RUqZ/ammrK/M3BI28ys5ozOKZp2xZo/OW3TmKf/cRXP+fM5p8g3mwOYpOk8ORCTf5znMHJ0zBwA0gEXcBmb96yxTw7P/VZep/81+GURKkpS1Z/p1Fp3/+HKNKaXmdAOjC8jhxopKkuxfRA4AaAAAADANnwMAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAQANABAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAA/+z+H+S21KIQq2j0AAAAAElFTkSuQmCC","engines":{"inkvec":{"svg":"\n\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.23315152525901794,"dists":0.013688862323760986,"dino":0.9988150000572205,"coordinates":1540,"geometry_ratio":0.8188948306595365,"paths":3,"bytes":20883,"seconds":0.7802307000092696,"gradients":0,"arcs":123,"cubics":113,"lines":138,"primitives":64},"vtracer-1.0-simplify":{"svg":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","de1024":1.456026554107666,"dists":0.0950784683227539,"dino":0.9827569723129272,"coordinates":7554,"geometry_ratio":2.693048128342246,"paths":183,"bytes":34819,"seconds":0.047293700015870854,"gradients":0,"arcs":0,"cubics":1136,"lines":26,"primitives":0},"trazor-auto":{"svg":"","de1024":0.49879807233810425,"dists":0.03020763397216797,"dino":0.993212103843689,"coordinates":2302,"geometry_ratio":0.9536541889483066,"paths":30,"bytes":20035,"seconds":1.6750226999865845,"gradients":0,"arcs":39,"cubics":243,"lines":219,"primitives":83}}},{"key":"simple-icons__barclays","label":"Barclays eagle","what":"brand icon (Simple Icons)","artist":{"paths":1,"coordinates":424,"geometry_params":499},"input":"data:image/png;base64,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","engines":{"inkvec":{"svg":"\n\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.0347171314060688,"dists":0.0034703612327575684,"dino":0.9997870922088623,"coordinates":202,"geometry_ratio":0.5731462925851704,"paths":1,"bytes":2388,"seconds":0.6381394999916665,"gradients":0,"arcs":16,"cubics":25,"lines":8,"primitives":1},"vtracer-1.0-simplify":{"svg":"\n\n\n\n\n\n","de1024":0.4050329327583313,"dists":0.02310490608215332,"dino":0.9926386475563049,"coordinates":558,"geometry_ratio":1.1182364729458918,"paths":2,"bytes":3122,"seconds":0.04228449999936856,"gradients":0,"arcs":0,"cubics":92,"lines":0,"primitives":0},"trazor-auto":{"svg":"","de1024":0.16599281132221222,"dists":0.01217275857925415,"dino":0.9976681470870972,"coordinates":362,"geometry_ratio":0.875751503006012,"paths":1,"bytes":2101,"seconds":1.5065052999998443,"gradients":0,"arcs":15,"cubics":49,"lines":18,"primitives":0}}},{"key":"brands__jurlique_com_au","label":"Jurlique","what":"brand wordmark","artist":{"paths":5,"coordinates":740,"geometry_params":740},"input":"data:image/png;base64,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AIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAAgAAQAAAAAgAAAABAAB4l/x/E8mPzTK2To0AAAAASUVORK5CYII=","engines":{"inkvec":{"svg":"\n\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.07824061810970306,"dists":0.015002787113189697,"dino":0.9971367120742798,"coordinates":282,"geometry_ratio":0.4337837837837838,"paths":5,"bytes":3469,"seconds":0.564837499987334,"gradients":1,"arcs":7,"cubics":21,"lines":57,"primitives":1},"vtracer-1.0-simplify":{"svg":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","de1024":0.5383956432342529,"dists":0.08167964220046997,"dino":0.95943284034729,"coordinates":1348,"geometry_ratio":1.8216216216216217,"paths":22,"bytes":5677,"seconds":0.046780800010310486,"gradients":0,"arcs":0,"cubics":212,"lines":6,"primitives":0},"trazor-auto":{"svg":"","de1024":0.18039827048778534,"dists":0.045366883277893066,"dino":0.9916336536407471,"coordinates":1298,"geometry_ratio":1.864864864864865,"paths":8,"bytes":6974,"seconds":1.7459360000211746,"gradients":0,"arcs":6,"cubics":116,"lines":241,"primitives":13}}},{"key":"noto-emoji__emoji_u1f478_1f3fd","label":"Princess","what":"Noto emoji, gradients","artist":{"paths":29,"coordinates":1182,"geometry_params":1196},"input":"data:image/png;base64,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","engines":{"inkvec":{"svg":"\n\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.17755113542079926,"dists":0.018255233764648438,"dino":0.9955331683158875,"coordinates":1130,"geometry_ratio":1.1622073578595318,"paths":28,"bytes":13374,"seconds":1.2128170999931172,"gradients":4,"arcs":49,"cubics":78,"lines":236,"primitives":7},"vtracer-1.0-simplify":{"svg":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","de1024":0.8250677585601807,"dists":0.0352138876914978,"dino":0.9913966059684753,"coordinates":2148,"geometry_ratio":1.7959866220735785,"paths":37,"bytes":11259,"seconds":0.054767000023275614,"gradients":0,"arcs":0,"cubics":336,"lines":6,"primitives":0},"trazor-auto":{"svg":"","de1024":0.41937685012817383,"dists":0.03579515218734741,"dino":0.9913080334663391,"coordinates":2300,"geometry_ratio":2.0961538461538463,"paths":12,"bytes":12578,"seconds":2.0954551000031643,"gradients":0,"arcs":35,"cubics":324,"lines":104,"primitives":14}}},{"key":"fluent-emoji__Face_with_medical_mask_Color_face_with_medical_mask_color","label":"Face with mask","what":"Fluent emoji, gradients","artist":{"paths":23,"coordinates":468,"geometry_params":472},"input":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAEAAElEQVR42uz9eYBlZ3EejFfV6XW6Z6SZ0Yz2ZSQshKQBxGL2XWCBAS8sNhDHS4K/eIltki+xTex4iR3s5PvFCU7sBIxtsFkcjM1iFgvELsAgEKAd0GhfZtGsvXeft35/vFX11vuec27f7hlpRtI5Hotebnffe885tTz11PMgM0N/9Ed/9Ed/PPoO6t+C/uiP/uiPPgH0R3/0R3/0R58A+qM/+qM/+qNPAP3RH/3RH/3RJ4D+6I/+6I/+6BNAf/RHf/RHf/QJoD/6oz/6oz/6BNAf/dEf/dEffQLoj/7oj/7ojz4B9Ed/9Ed/9EefAPqjP/qjP/qjTwD90R/90R/90SeA/uiP/uiP/ugTQH/0R3/0R3/0CaA/+qM/+qM/+gTQH/3RH/3RH30C6I/+6I/+6I8+AfRHf/RHf/RHnwD6oz/6oz/6o08A/dEf/dEf/dEngP7oj/7oj/7oE0B/9Ed/9Ed/9AmgP/qjP/qjP/oE0B/90R/90SeA/uiP/uiP/ugTQH/0R3/0R3/0CaA/+qM/+qM/+gTQH/3RH/3RH30C6I/+6I/+6I8+AfRHf/RHf/RHnwD6oz/6oz/6o08A/dEf/dEf/dEngP7oj/7oj/7oE0B/9Ed/9Ed/9AmgP/qjP/qjP/oE0B/90R/90R99AuiP/uiP/uiPPgH0R3/0R3/0R58A+qM/+qM/+qNPAP3RH/3RH/3RJ4D+6I/+6I/+6BNAf/RHf/RHf/QJoD/6oz/6oz/6BNAf/dEf/dEffQLoj/7oj/7ojz4B9Ed/9Ed/9EefAPqjP/qjPx7tx0j/FvTHI/JYufvv2r6MgPIRH7wO6lkAgJEpPGknEnb8JgSA6vQf6t/S/njkHcjM/bvQHw+bsH7X3wIAz9wOC/fFr9Rzd0NYlo+XjgBKyNYLPA/riO4LCNieG+Q3ND9lBsBqbFq+XI3T5Jny8cTpNHUuAFSnvrI/Tf3RJ4D+6I/1HLy4u97zeQDgPV/S+L4UwhKvLMkjKA/xGqARoYj+ZVGfJYMB0X/1ZMD5n07/q9/A0XGiURjZROOnQDVNmy4GhGp7nxv6o08A/dEfeoTdV4XDt/KhG+uFPbx8JCzNuKCqURiL/y/Cro/40BnxMSv+BycDThG+rRVI/0v5p/I/+uMGNmXPk8amcXQjjZ2CUxfS1A7a/Oz+MuiPPgH0xyP/WLnr/eHwbTh7z8rsrrCyCPViFmERXcjF1tiaRXzMo3oT/GkG7uEK/O5Py7YDABgH5gZ9YulGw/QzclQTRKPV9A4YO5U2nFNtf3l/qfRHnwD642F/1Luvqvd+Lez/Zr2wP6wsIGro9XBN23+Kj9G1AunjDrgfuQX6H1DvD58MuD0hAQBCvI/cd7klLaH7Lrcmp/hbsBqrps6kyQuqk3bSyX2L0B99AuiPh0XE3//NlXs/AYe/V8/eWy8dsfgq4AymgNte42OM1e5bFtY14iN31fvYBf50JwNYVzLAHONJD2Ls7Bc0vhepSNsI5vQEOH88QjU2jePbqk1PoJOeTFOP6y+z/ugTQH+cMMDOfZ+s7/30ysGb6vn9CEHCGFrUto/RBUduj/iURVtqgj8Wvj2bB7mb+ZPX+wUuhPnj0iB3CFyoGe7R5QaXospWQO84BsxuPqQ0NWDuaA4AEKvxzdX0hdXmZ9DJz+ovv/7oE0B/HI9K/55P1PuuXZm5FyDE8J5CNSmejxrDXYWLvnCmJlCiIA9hBvcDt0wCcJV6HxvJANdY73Mb4whglXF0mRtyVIr983TvTPxQvkDUlQzSkJmqamJ7tfHiasvz+s6gP/oE0B8PSdCfvQ94xWIegi/zAa2SZQbfCnRHfAnV/luYRz0qQy0CtEZecOOCRvzHtaM9/lMeEP2ZO5MBuNeTnkkD58nyAWbNgT0gfZFRsSibLY9UE9tGtjyjOuXFOHJKf7n2R58A+uMYxf3b3rt071dDWETKwqeFYiQNtT5IGuKPLfiLh4Yw1dmNETHkGJF8SK1hHams/zsj/vqgfw/FtCSDxhyYW5qShPv7v+7DfaM54LIDQbbAz5CmynoKsJoY3fLEauvLaOqi/gLujz4B9Meaj5V7r1y59b3LB28P9QJgnOJaXS7sS8F5CK00TUgQGuSCzUiKwKneR4D2aI/up/RLVNb7jmw/AAs6iojf+a0O8Aea6Sqv5aH9mXB7c1CsmCFzObgOnD0mGytU4yObHjOy9XLa9Mz+ku6PPgH0xyrH8q731vdcubj/OxBqIEV3OKPZEHk2DKb1KywYPlmcNRREFnT9I9siPmIzvHKG/wxSfWjMftdb7w/xaWMO3PguZ8wlzqAhHrY54LzTAADm7PmzfYU9OoTAAFSNTJ07eurL+0zQH30C6I+Wen/xprcvH74brYRFQEY0IqZ9yBxRG8QS10GgAmZJfEm0NV1f42ebtIhtW1eDsCBsfdjaIv7RJYOY/TgtAQx+SphDO5i3DVjei9kUOk3Bs8iezQZsMKBfZIcOyWNoZOOO0e0vp03P6C/7/ugTwKP6qPd9Y2nXexfv+xLUKxbrY6WOpAxNq8eZpfz3oA6WcHwK+vodIiqj2nARv0nb6S69j7b8R6Sj7gy6oz80JwFktx5zIxk4UlCGICXEKx8Cc9E6gGegctFDxPM7MjG6+QnVqW+g0W39jdAngP54dB0L3/i95d1fWpnbl9B8BOREyHEEGkZwJT9hK8iTgx8IaEhRKlS7Iz40hgRrifjD7v1GEiqulgyGUqEAWLXeh/V9GkKJ8me4PzMAMpZbC3mZjwV3NEJDQjNF9j9YjW8e2frcke0/1t8UfQLoj0f4sXz3JxZvfNvykXuBA1LBy0ewQJ/TL9GD+9kGlgt/qVPI2JduQYAHiD20gDzrA3yaxP+uiP/g1ftriv7lgDr7bVzOdV1kN44Qtu2LZeiQ+23Y+LXxi0gj0+eNnPKDVQ8N9QmgPx6BJf81v7Nw91VhZUHKcvKYPTphNbZaHeVhHuZvB3kEP2HNArR6jZ8HWxyi4h62/Me2beF1MX/WF/3Xkgzao3/xxPLJQQbsaDhHA4jQDQjYPs0bAkzgEyt6JNMCqMamRzY+ZfSsN/a3TJ8A+uNhf9Rz9y5e89sLe6/jsELG2gSrjJXnQ1n4it8jxByP4Uyw05B91hSQ8B8eBmbBdUb88lvrifjHCvxZUzJYxYSgNfr7T20dLIXzLBlYXCe0mJ6jQ8V+mcOdOH2JEZBGRzdeOHLGG/sJQZ8A+uPhGfr3fWP+67+3ePjOCCEjxTId04aWshLR4ySIiED+UwsUVNIz5csyFuaB1TTkA4Nhiu5ByQDz5NQST4dKBscR/Flr9C8eQNCQFHXbYYL1cKE/AQWptOgtGACCMo1ikq8mt4+d8S9pQ79Q1ieA/ni4oD3ffuvSHR9cnj+MhucgkgA5SvZBF9UF6wHKN62k5Lf5LabQgGQlPA+HrTdK/nWV/+gFgmDIza8ht8CGTAaF/4yPsA9Z9G9ZnmD2fx9DAEOH2M53NgRGDyullMAxDfiGAKuxqbFtP1RteWl/c/UJoD9O4ND/td+Zvf3jwCvS6lMs55OqpqI6nCE8kaZf8HpM5cfivsdaaLhau53Pubbyv8k0XT2kDpUMyjiLeAzBn9WTQb4Ctr7oD4XyRvZrEZhtNYylIUC3HADF8rB7VvHxhMzpMUgjY5ufNXrGv+xvtD4B9MeJF/pv+zjzsl+3IkpAPxEkUUoUBN/0GhA7Sn72pbeBCt0htRG5unT/Vy3/W0CetZB/Bj0lHD4PDRfxj+UcGFu8YlYTps6fqjecSVkhhvSMNcTNWbFXH0JNG5ClgZHRsZOeNXrGv+hvuj4B9McJEvo/xmEFmdP2lgq0KS+TwSlz6jAAYmLwJX8qt7OSnyEzXxyi5C+ZQN2htmCCEq6d/DOo/HdPZC2z32NW7w/vPt/2adM7bJXo7z8stpRBVOTYNQSFjzH7WbI2BCkNyCiZAbEa6dNAnwD647iH/o9K6I8sHA0gROiJPTq4Jczr3wo5o/ArPoCYCdcgDlfytxi/wOrVtAea1lBl41FE/CGTwTEHf9Yc/ZtPsrQH6Iz+xfZDdqfHITEHye3p615ULuMaoXUQ+r/AgEgjY6dcMbr9tf3N2CeA/ngIQ/+3/sfszX/NoY6tOxJ5yERWcCPQr9g/OJQfAKvY5RN0oPzsdCCGBVv0D8AqCWDIkn9t217rwYIGxNn1gj/rngPjWubA3oeAB0Z//wz9rDiD+5k7uoHmeCClASH7MmA1OjV2yiv6EXGfAPrjQT+W7vz43NffsrJwxJXOaU+3qrRsNz9FbQuEt8NsIg1tJX8WrdqjatvHUvU3I1T5mRcCojWgLu1M0PVF/GNb/neH+DVFf4C1GdQ0npiP7J3dCSQ3hawhiPE9sG8IOruBBARJOog/Uo1OjZ/1K7Thwv4m7RNAfxz7o569e+5zv7Bw6E5d9yTAxORBAKqsjM8Jn5X1AyBAUQy+DE4pgXPZ/WHnq2ktoCv6Q9P2fYiSvyPOIh5b8s86tsBKk/oijK693j8G0b94bo4SOiAf2IAhpw8xM9ug2G8I2HZBWzcAHH9kdMO5o2f+Eo1u7W/YPgH0xzE7Zq/6mfm93+TAZJ4sEXLRoEqVgvXeh0W6AzY6DlVJLUBp7LxKWd3xcSmfuVoCWH/Jj7m143rJP6sCPqvQQNcP/rRH/zRrPabR3z8g3d3Yel7cDkGRxiIulLw9kzNBYgrZ+jECWwOBiIijJz957PRf7G/bPgH0x9EeC9/67zM3vZvDMnoLxoj7y14vx0WvrESORo0gQD8CkgPoNcpzYxK7Wmhr38LF9qiUhe/1lPxrmUCsIRl48+GjIAIdI/Anf24Mq4X7oaO//0rLXV48KycVN2w3AM7DQOMIB2GaIlUT219dbbmiv4X7BNAf6zmW7vzY3DVvWVa4H32FnwR9WNT20UJ9FONhQYIQCNV2t0Wjrc1qcShxTRym/Hf0oTUsfzV9H4+y/G+L+Gt7So0/vb7yf/jB7wC7+TVH/wynah0VuGTrGwJ2rUpg1w3435bNk8ElDgSAamTD+Fm/TJP9YKBPAP2xlmPmkz8zv+frXkJfh7kR949+XXGci8l6HTGOeWMMJZsApwXgLjh7CMyn8HUZmABa9sVg9VWAlhbkwWKCHrvZ7/DWNOuE/rOnxLz+6O+/kt34zd00t4/mdoMx2ARYJ0f6e1SbyLhDSi4SROi0X+hv6j4B9Mcwhf/Hj3z5d8PKnK3SpuVeif4MgFRZbhAeJOqdiNYicJwMo9P+Wg3zGUp5bWC5fZQl/5BRvpMJul665xo4SABHa01z1MlAmoO1Rv+Wwr8lArR0A2pKY91AWiVzgd/iifwHbTBAND5+5k9V00/rb/A+AfRH+1HP3DP/5d+c3f11SsBJio1G3hFhN8o8WpCFuU9VpHuiijxzV4Bzyj6D8J/VMZ91CP54g7CjKPnXywQ9ivL/2IM/6xr8IrSh/GuO/jmYAy0qdR3dAAMJEQiBy/kwWRoQIaIgwNHYpovGzvz3/Z3eJ4D+aBT+t7zr0DVvDWG5yjZ4MS3YkknfKwEnBn/mKNQs7H5hCKHjJeKgintIzGcwGXRQyPP54yhLfm4Hl45+2+uYRPxjUO8PN/gd+Kknaw4Z/bu7AWxDjZyfTPyYOXOVYVZP4wYiBETV+PgZP9m3An0C6I9U+M997t/O7b8JACpMN52L/oxIqu2TUCGKd5p+HVgfgDAgkJUE9iHV9jvwHywDGQ6OsDnoxN3RFhvay4NDLR/v8n9IStKDnAwAykXfoaJ/WfhbEG+Ei/TXbBUgMMpSMspZdanCK1CnVmB06pzRM3+Rqn5doE8Aj/LC//aPH/ribwZexujjhAnV0PAfeT6IBEb1RN3f9S0CoUk9rgnzKfGf1bxWvJvLgFUAbux/AcCaVgEKkKfVZYy6YRY4RsngKGe/D2b0h1U9yBxTs+tdaod9vO5Q2Q3kskJmIZDUQx1VVHsCkxzVDQOqxsdP71uBPgE8io+Zz75p9s5PAwAp2doCulkzCugTqT8kNzSalgODU4HjToY7Qp4Y1oj5ZNGNWjCfTu/DtRB71k5Maiv/cZhsNHTEXztUBUfvTDlcMhgu+md1fZP9OUQ+KNTn7JPCozgyTKNwdCYjETWoOX2irQABwNjmJ42d+vN9KOgTwKMO9jn80dctLRyKm7ppqZYSgxEJkzcv6aQ3zoAVcqUKnJAbDAX6d8Zc7I65VGI+HojnYVIOtHmbDEdMAlz7KgB0dgmgshjH1In+6Mr/4dGe9Uf/fOTbAQ2tqRswoN9+p5F/GBJhlfPhQTkVwJGxk8bOfXMPB/UJ4FED+9z8rgNf+e+AdSzqzbMPM/QFperH+KGYO4qzY9zwJUS1Xy9XrmA4omenFHNLNZ2mrzw40sVU1AyyrfjPWkv+ZgXdDJfNrMPpW+W7xEeL/g8P9x8t+HNson8nNNRMz13dQP7kvSKpiUU7qmg+HFZEyBOEEHFi+2uqk1/SB4c+ATzCj8Mf+vG5/TcTyroWMiCxX9fSHEDK4wQCMWSneC/ppDdV2DiQZzkQZ/d28O0VN6HTKOiIaJiH/6FFfrr1J/xraYu23Ii81DEkaHkHuC0Z8DEo/x8a8OdYRP88rHcW/sN3A6ZA16SKplbArwukViDa2ePYpseOnf7/9iGiTwCPUNhn9zcOfPIXV5bnCAGI1YydDfQ3oguhCL1h3KgndXRn1V1GxtWQlnbQfxDmkw8ALCq2BjifWngYzEc/ZlidjNQVfJHbyEi5EjWjhyga0VPTphLW2zoDPjbl/1DJYEgNIhg4CTiq6N8Qp4NOI+L8i40sUJT51g5IkOH0g5ztCsQsEIABq7EN4+f8xx4O6hPAIw72uemvDnzlvzPXRAAIUaYNq2jDC+gwEEJEElGHyOyJjYKGbE7y/932tquC/ojYzrnE4mfyyEVafZdWMI3YUQwGsLUvacfs1yP+U5b/+rq4Oxmge4wkA8xTJj8I5f+DDP6szX+4FeQZphvwIthFHkDOVOPy4bBPAZ4gpJMCBkSkidP/ZTX91D5o9AngEXLMX/3bh275kGD9BMQAxFp/MyAkgxbUcI+A3tIdU5mOrWF3LawbN2pAw3nSLYv5D5ArrlsMICHFTQe6rE3yAWGIqNo2Ch4ATCG3IP4p4XFLMmAdGGB6GcM9N1j/7HfdZmRrTQarR//0BLwt8KrdQOlKNmA4HKwVSELVWSsgcBCNn/zM0e0/1YeOPgE87I/Df/dDcwfvRObI5CEAQKbKAjobuV9WvZgBKZI7k+EjcGwOOsXrBw4DGv6LWMI4zeUuq9zb94nQOUzyUCpvvi2AIYmhHREWG3g6t5X2/slYxGf/y1VBqWiG2I2OM2TsKJPBOhaS4UGbAw92JYOk/zMQCMpcaKAYDmcFPzCw2Ej672A2GXZw0OjkOeNn/0YfQPoE8HA96pl7D3/49YsLh6JQDyHHypIqVjeuiOYDAGBFIt+PGPV8oi8vphp9lUDfDcH76J9bxTeCe2LjcLMAd2mBeJUoVgwGEDqKcW9a3xZVeS0R1icG9i9/cDLQl5YlA//COW9BeP3l/7rBn8HJANY6CVg9+q+tG0gPLrYG0BKDQ3soawXYPdLgIBkJTI2f/Rv9SKBPAA+/Y+m2Txz83G9xvRQDOUGCfRCN95m8uCvSZVmCJk5O2ERdmqA/DJj6ev2gtoIu7RZ06PlIHGyX4mFshGBcRXNiGOBi2GFA62RYdczKSUP+FiFnY+FMWNWhZJF0lHFbO4YE6474a6v3H6Lob592dgMtj+Tm044wUdYKsGsN5Pe3wEFIE+On/fNqqh8J9Ang4XPMf+2th771LoQaEo8ThPoZ93WlJmYgQGYiFKpPlPQhX0Jbidwpeow0uHLUzTFykc4/xhM9W3hBnP8VaGwJcDsSBYOf1Xrxn/QxDxdtjQnaJYyKWTLwbUH2FMxImbPxCQzN7zxmTvRHkQzWYErTkqvaNEfbP2EoVgbccFgr/ZBRSuNH1ISDAGli+6uqTS/uA0ufAB4Gx9znf/fQLR8kZCAUHicCEQNzVPQEYqWcMAJTRd5hV6g+kOpoROgIwauB/kLzb636BxA9W5p9p8VGEiubf5G73RapGSMQsDVCDSj5sSVmFeW/lzVuf1tw9WSAXHYM1EYnKocEDHAspEkfvGRwdNE/6wYAOl2gsSu8+F0BE4nD4eAgGN/8rNFTfrIPL8f2GOnfgmN7HPnoz87c+3VCBtvSjSSfWObHoM9WlTJVZANSiSQp+mfwOLa4buHg7J6ifyERrJV9m307ZuEMnIibfJHLh3BblIaONaKsnsx+vKXq76gupQyXr+cfIDQ2A/SbHsEH7I5crDzXmAkYOLYF+inaG4rAvgGiTJhowKuHYXAhGOqtGPZb643+bflAeiEeFPrtEnTD4bjGAqw1BwNHMXOWZQG5Z5gZEWMPgJHjG2DxwNVANLrlJ/og03cAJ+hx6P0/Mn/gDgDGyjAbJgJgpsriUiTyMwDTiBl8JaoPOm4/eif3nGufyyMXd6yOEShH53OI3H1ILihkhPpcQLSlL9D/7eJcYkeYWrcVDHbyfwqne+yIj0Xb0bl0VhT7/o/6IQFlOWX99gNDvg/D1/urhfu1jwHaCnwYdHlk2BG3TIY9HMTodoYlaTRHAtXEaRNn/W4favoEcEJG//13iMBDhA1IAj0iYqXQMjHGsTABklJ9qNiRTX4ADglyNzq1G70aOu8zh6v60QiOaMx3dKUyYtuf4CzUIrWmgHZ4ZJjx5iDMpyOudbk/+hjtU1q5jdyWFNH1JeA2L7LWJs9zBRu1eOGI7S4FsN7Z7/qhf1w9uOMqsM+AfFDShFrrEmgRkIiIUDsc5BsHGwkwMHOfA/oEcGId9ZF7D3/kZxaP7IG4xqW7XQhBJJ0rkD0AAMQg4v7i7wjoFA6wMfWFBvEG8xDcVERAJZRCqQaBYuOqhgL627loBZQMqhwNT0ctFwbatgEwGwx00VLXILHQGdfyNFPwo7jtLxafchsb1fOCsHsw7qfHSRsV881kGkKMeshkcIxagWMa/V007wz9CbordwWoaAUydhDny2JpLNzngD4BnEjRf//f/ni9OAOkW1bASECm8akpQZAfBMRo3xhnwpxbrGRT3ybtR32Bm+U/AgBWmAc+jfVZtM+rfvI/EtuHguxY4kKK5WJzwTZXgKB14j/lj3QsA7eX/HkAGlB6t86lLRciZUkCB4NRbqju3450crF97PxQgz/HLvq35QPmztDvX2zLZLg7B1iyzcfCjNXkRK8a1CeA4x/93//j9dJMHLhqxGeKMj7IoutALJR/ACRT++FUj4OjAEEn7Set/7bExwbskzAfFkSJc6EbaQmogec0QqqvbdG7A1g1jI2VKx4Y11rhAhwK/7GPm/Kf3BXvVouwniCbdUVY6o+uIkad0avklWaSc/wgl//DQ/9rjf64SoGf4jsMxoI64SAnGBqYIMsMAJnOKHNgpD4H9Ang+B1h5r59f/PaenlW2DakA0IIJJoP0eUREAOqgzuR0PzVvrHQ73FjV8JG9Id2djkCImVUH4f5aOSxkpaT9A266E5NqiUDZIU8+vknF0GfO4rrnG+T6e8Pp7fcXuZ3G9B3jR9ahBwa0RZzXAiKoXGmkj3oyTTn4e0aTUdd/j9Yc+B1Rn/wkRq65z0lHJRU5LJlsdCVA6wPmJg857eQtvThqE8AD3n0f+9r63o2BmoZ/CIAh4oMx4+4P5uyPxKTkgsTxuA7APJaze62JhwQa7AQeJDozCViIz4yrurP6O/Ufj97lQhudXfJCTCMnWG3C3/vxHwG8n+6sJ2uwNqiV+GjeaF0nSe/lre3mR66gSZD2JAHLNCt3Yn+KJLBGrCggdG/C/NBswSDDjgIm61ACxxUjoU1DfQ5oE8AxzP6v+c1dZi3jp8quUqrSAdnwCpyOhkREQ36j7V/HPymBICNoJ9/TJ3VLqUkoFFVp5QkHUiqu7GF9uOEJSwoluIKiIrvYkNHYZigz+tdBh4Q9Mt1BcOFOhIDd3B+7GNmB+A0JuRQDE4c+7MEeaD8W2WGwKQ/MZT9wJDJ4Oig/1Wj/xCFf/NJltGlrSFY00igPQfQxOS5fQ7oE8BDGP1XVuaRMFb3RAgYAKDSJV4kQAzC149YUNwBxqDBhJOGW4Pqk3+MHXLHTsEHc4Jj4vtgiflkQa1wgYeWVVt2Gs6YazBA1zg0V/2kDtWEoUB/WA3zgbb9A1iF8p8CdEl/yov9/OtlV8QljiSR3dkMUKMVgDRKccZkvK7yf0j/GTiKOfBRAUHgg3U3FlTmACTwAd9vCYA4CUvoCn0OONqD+rdgzdH/3a9ZWVlAFKVKUp/GKhbLrPE9ITpMEuYZOiJSd0/fsdsp2H5OebR5L+u2mS3uMjpqEDdgJQDAXfdQcVOiDAYM1HZrsVl3z/rPgfXxH/nvsmMTaYiUf9z+r4wT7u9wnmaKwF1sNCfjQQXB/JvGKA9I+qv2dU5fb2gDuRk7u2YIXFHvfbDcjJriO+mllqjjmugS3hmkwzM4+u/atfSgRf/28T4SDoj+gIhESKRvflqHtD5YVuu1X1bJLBTzvIoAFxfv+a99gOo7gAc7+r92ZWVehTVj+S+BPwo9ADFJGcjK9GdEllUvtEjCLbQfNwF2br1tsDKj03eLsA+DI/i71SUEhJl5uu0+3LMf9xzAXffS7DzE/zaPnY/hnY/h118RStU5hnIHyuMv7QPqgXz8NSuAQgazdODKTQOytr/OLWpx9hfRbW9x0ktqmM43NKILwSIvH9TeDaATGc2Zo2t6l2AoM7L3vOfgt69buO7bLWd9epp2nD8+PU3nnz++/dTRU08d2XH+xPQ0Hf0YoCSJdj7nQXCQjYV9H2CNhWFBAECj2yfO/J0+UvUJ4EE5Drz7R+YP3gWgO1zEiNGkRaM/AlFQ+qYU4UgBzdKXkjYiDqT9NKa+jrAozsCtsA/ZfXfdbdVt99B1t9J1u6rWWD/gOP8sftPrw/lnslPkd+QWblR8XRAQDjBUySmY68F8oGMZuEFFxdw0uDUZQGN3AZu9MmdDAs6pqBmYkw8bCqntFl1udE5k3JH/1u5LDAgIu3Yt/dEf7XWF/1DH9HS18/GTOx8/ef4FEzsfPzkw+q8S+vMubrCA1SojgZQDDA7qc0CfAB6y6I+QJrpIHOmXpPpuCEF8HNXpBVHZPigdg6pilbQfyChAVIrPuPsq6exjWd7uPlB99YbqKzfSdbdWR/l6pyfhrf8unLqV23GJ7OkV5jDYHV5bV3AHxjIeHPTbFoB9qG0ngEKLGTK0b1f44C+ZwPvGFAm4pWPzYqIdrFMBjgqVCz4mTvS7d6/80i/dMzMTjvJ62PmEDc945vTTnzF96mmjq0X/VeRdB4aczE6yNQcIPVSQwOBzQET6qomzx097cx+y+gRwzI6Zj/27w7d9RjexIn8/ivhDBbbf6+mekf0ZHR31Zie2K7xZ9Rvc2Zj6kmP4oP42I94wIO7eX/3TjdWnvz6y695jOdTZ+X38B/86NPCfthBsYbI11JYgDK8F8ym+XqxZDZDCLvaZi3aqy/DdU6EaX0cu1xrSaJd0rgtOCCjHx4ofxwYxib1LZQdHCGBNTvS/9uv3XffthWN4VZx/wcTlL9n09GdMn3r66AD+z+CUkEedFkxvbfRQTt8CgMBh7OTnjG5+Qx+4+gRwDI7Zz/zeoRs+KGC96DqItjOpx2+clxq3h8iiv4f+5WYm7YPTGnAn7QcTtZFV4NOB/ld9Y/TT14xet6t6kF77m14fLn9armiWBVDqDLvcJvc/QDNyUGhbFxbUIkDUJFx69be2IFsKw+WCzwX91LcIKSnmRCO5DKhFaCiz6/EXAK+7/P/Up2b+6I/2PkjXxs4nbLj8JSdd/pKTBhX+OGj2Ozj2rDkHxD4gxL4gjG++YuTkH+7D1+Cj9wNY5Vj63pWHbviQamxq9McIBam6Q5zlYbqjJfpjoXaflYyYzBr9TdHBZWS3GcA4Mw8f+dL4VV8f3XMAH9SXv+seL33sSDhYsIAgxX2LX+i+K0ykZmkPQ8g+D3ewMwbw3QZAVnezh604bynsJHWowgF3JrD0x1kxKE5UUeb0rFjhflQeVPOZRo4Qup8CbsVLOj6RF7VW3H9Nx3XfmrvuW3Pv+at9P/SjW170kpOnp4frBjJZw0FwkLTbpjWKFCN9tArIjAQQI26EGEsjJKwWD/wjjZ9Nk0/ug1ifANYf/fd94jcxI12yyDJEey+N/kSunkPuKoMSwItt92xL9MeCbj4zRx/50tiHrx6dnceH4B3YdY/jsbQEGg9tYxa/oKBpFsRM6Ahn3B7aVnmtDSZS+ussQbn5hnPO5/GaP9zxrBOuw+3RzaeBJAvKqZ+IKJAloVgi+Lk062XE7JA3bmkFBlE/9fTtWnywr5Dd9y+/7U92v+dd+37oR7e88ke3KHdo1al+aw5os6IzSxkpsyTgc2B9L7HMARB39Wh+9zsmzzyZRi/oQ1kPAa35CEfu2/vXPxZWFmLbTsrdjGYvSIzSySNV6paOQccAKrhfDH6NAtTgfeY7WZSqZmWOzszTR64ef+9VYw/lm7B9C/zFb9UdS61tYAtwY76aj0yzW3w4VYNBLBf3xQGNBTRAfISGFzyUrzFrHrJ8nONCHaMIbF0/LrhAlBGHIB8McPEYEAeJVd6W9PFP//Rde/asPJQXzBv++bZXvmrL9HS1auhvS/trg4MUCwLbCCt4QQDAODp51n/sF8S6jn4RrPPY+9c/HlYWBOBFrRjJgxSxJNHo70I8DrL146bLY177Z9PUGP2v+sbYr/zx9EMc/QHg/DM5C9dNKMLCPnsGpPPnQh9tI0bkDCYR2v/59TG/AIb+43znS77jd7t8aOXsqfudMmva/JaZa+gkovhALeiNbpa1YDiQNsIkSjVLdS3/02JwvjgGunLMpuHBA80sG6fv/PGH+IJ597v2/tL/s+tT/3gwy99dextoUoarFao55OjXxIRpLJv2FBc03dh+ef7u3jmgTwBrPA6861Ury3PxHUoqCkm0R2p/TLGOse06Rmygyjj44sbiOt91X/Uf3j71P94/+WDD/e0R5Kxc5a0gb6QImG5mRa4VCme3MVvuDOexuH0HGNtzAec/mJIBZ4No+wfdy6hcAFOYnpX/beCDfuOLAC2zBGxYGfsNaltRljSgf47dOjH7qUAbQ6kFSUwfn3/+2EN/zey+f/mP/su9v/Zv79j1vcW20J6XCD5NYONh7p8S4EznJM8BlkgIkVB3ZeIbtrS45y19TOsTwLDH7FW/P3vwTjJzLo3+pIwdchbjiJDXjY7BYzuh7UWNj/6Ngo4RgP/sY5O/8sfT1+06PqOaqUm4/GmcRCYstvlRcPMOTzG3DLGZigM3wmW6vSmr7dtbhPynyuTixSdahSg6MCLI00+S0OASqxEFiDxLxS9KoOe8KcjfhGKrLpX5Fvox6wnQPQa4CzEvjstfvHFq6vjc49d9c/Zf/z+3vu1/3b8KWJefAluiaT3pSOjXPmJKKHMAaLJI38J6/q7lA+/uI1ufAFY/lr535YHrP1wBudqffe2PybxXoCEfCTHjmHc2BDhYzIBx1330pv+18cNXjx3Ht+L1V/CpmwGa+EXzHu4o7p18kLb8XTGdMKviO35dW4HIA8rGLDc0gybnZbjhEuAr/RiFqVHha0uEjYYgFfIuDSBmzY3tRpDjR4lAkDKImByO5JhLSUQIBy3oAZx66sjr37D5OF5CH/rAA//6Z2/d9b2F1qo/O2Upyg+BBZmeSpTZQkp9NGYL9rFJR8Dlw18K81/v41v5fvZDYH+EI/ft/stXc1hRs0ZzdJFmk+KYV6V+UOtKkYNGE4Sz/S9VZHbTYA0yhd6DRX/6yFfG3vvpiYeG59N1vOj7+d+8IWjk6nAy4ab2jkbPAUIRJQ2fy5TY4sHbmS5XWweDdm017LAdpgavCZoy0YVHZtP8vSE0lGQeAJgzhdSM/t/cGrP+w/n5AGWP6XKf14//23/be9WnjhzHa2l6unrjL5x++RUnt5c7rbDc2lcEOEStCEi6EGlHLL7tYxNn/mY/EO4TQOex920vWZo7SFWMz4EAgFAXfZEogMh/AgKTbPZyC/OHUtA3RX50jsFQ6j0IpXRmnv747zZ85abR4/gmTE3Cm14fnvF4Tqo+2ECfm/oHg8zfuSMKr2sHeCDq7UpjF16L3MON1bBk8+KecyKGuiA7WAHC/5XmMrBXgOD8i+1y3yiAEpJ7GxHI5gHkrAhgwCrcl788+0f/bc/sbDiO19Uznr3pV371zOnpanDo7/QSKHNAaMkBUS8o6HpYIwdgddLEWf+5D3R9Amg5Dn/g547c9XVEUfBXL5cYspFQF4AlYgT1+PVET8xCPCUgPOlAEENu/W7d8a57R97y3qk9Bx4iXG5qUkk+6VPY+Rg+/0ye3pB36KngtUgELclgEDCNHdKe7X1+e3Dv0qKAogvprvqhIaIH3gmnkDVtSEpAM+15ZX8nhIeQLQNne92cDxKw3Y2SBrYCaPQhTOZlyJ1JEWFmJuzatXTdt+d37Vr0mWDXrYsPWWI49bSx3/hP557/fRMD4r7/rDM4cdEHcJkDdCU4ywEAEHhk+gmjW3+2D3d9AsiO+av/1/6vvhOJYqBPmL7gP1Lma0Uf7AFxCcCbontBCLtATRIOiTMXF9U733XvyG/8xfSDB/vsOIMf/xiemuSdF4TpGPoLzWTzSGFoKNC1RXZuqkPnwbRVuhkL7/W2oN+eGoYUAeVGpG7Rp86zRS4H3UK0dzo/3KUAkZuRsf/rTekkajGBSSU/liBVWStwo83y01Feh33mrlsXZ2bCddfNzc6Eb39r7rYHbYNserp6y38///zHTLTEfVwXFsQlNORzgArEZTlg7JRXV1Mv6INenwDkCEfuu+/PfiRqPCAGhWhs0stIYP5fYCpv0eLRVB9U6ifJhaJtsXPiO2NLArjqmxNv/bsND0bQ33lBePxjws4LrKjnHFjnbO0gKTl7ZjoNVHvOYY0sYDW/DrnzCawGAQ0D+7SqDmCHYt1q8FSTlJVBNB1OWwil9hFCY2WswIicSmicFZN7c8hNev2GYJoVsRMmarQCWc8xnGFy/q2ZmXDdt+eu+9b8t789d9utC8f8ynzTr511+RVbYGAfuIYckC7t6BPmcoDM8q0diDkAJs7+3X4Y0CcAOfb96UsWFw8RIJLYtaNueBFJzW5CQBLQJQFoZPezX/kNlhsg/1a+4gXwvs9OvvfTk8fw5WzfzE+/NFz+lPr8MwNiG0DcanWbra26UtTUCHxnUKy2NqNMlgywtVgfQjmyW665q6Sl9r+UJ4liH5iyrzc17LgQam7mISwNYTLLF5d0MZdWxVz21ZR/cHArUHzdkkHbWBhgvckADSP61JWHvnz1kT27l4/hVfqGnzr19T996ipA0Co5oPAJlpPFYiJc5ABOcnIAhCePn/V7fejrEwDMfOTfH/ruZ4GQAJFCVOj0Gp9UWRkXNCIxAFTG/GmqPnQkgNxBlgDgrX8/ddW1x2xd80VPqX/oOSvnn2HTaeqGcZqKXKRhi8uq3z3hErvojCbNv8UNbTVsD/qdWs1dGNFAP7IyUrclgyLocyPsDqsA0eioivfED6IJMvswxiRe1ML54XLrIp2OfEScmZGtJ+J3fWvX9xY++Hf7r7ry0LG6XC9/6eY3/drZ7XEfu3NA0yqUQ1sOAObQmgPi90annzWy5fV9AnhUJ4Cl71659yO/BRgIEZGR2Ix8o48jEQKaz1ZKACX+4+weMUn9ZB+YNLTdwMcq+k9NwNMvrV//4uVTtyRtycyINcWR1uhv4w6FuQvTxwKfaUJA3B1NSpmENgioiw86wHd+EMA9TNWPfuuibTDgnreBMH5Ry0hcXAwbmt2A4Tk5oRPaWoGCHVQ4w7T6xA1oBQrH+XUmgywY79698u537r3qyoPHKAds0RywLiyIPRCUQY0iFs2BQ/KEznMAjJ/+pke5VNyjPQHc/z9fUC/Pi3U7ga0UIgRAoIpi/U4SQ1NAJ1JAHwrmT4L+ByYAfOsHp49J9H/ls1de/+Ll6Q1eVNL4SA2qCXTbe7UTYyjLBNxws+IuwB2dQAK1Ae5r8oRZdRhQOII1lN2w6BW4EVIbJXDihkLD8jd/TJFosRtSQ5chMs5PRwLzHjVI5dm0F0XNdqoxFobVkvRaksHMTP2ed+770N89cGxywK+f3RqdBiH+jUzgREM1sglZqDMHEE2Nn/mHfQJ4lB6H3/9zR+66FgmQmapYyouPIyATUbzjSGXZ01CXEsjTmQBkZqCPR4sjAIAf/vLkOz5xtFPfneeHX/mxpVM3B0CtMb28RMkJabigIHRTRCAX9SwGAG2SZAPLxvxPDOMwDmvjgELXHKLpD9wBGbU//7YGKPGmcst4bjWA5MwNJvULnOI7d3F+cmcYn9FjU9KyTIAOiTLL4sZYeJVkMKwT/e77l//oD++57luzR3klv+nXz778pVuG6gKyPqCxdx5aiKHAg3LAyMSFo9t+qU8Aj7pj4Zr37Pv8W0WAAFmFfljsupCritS+0dF74v1UcZIfgZz5Q+xuFuWDVqkxBcSrrh1/6wenj+bJb9/Mb3zF0jMurSUct0f/LmCkscHLuQQxQIesnZFEIaOgDGAZlivBA/F97q702+0BcFAKwQaIlAU47qiCm9EWsxUBbLpa+l1fzIPygHIesqmv79Wa74x8ocqAHWtQEqREGfrvm48BWNBRJ4Mvf/HI2/7X/Xt2Lx1dDjhHcwCsgghxEwviwTmAA+tUOPGCjBQ0vvWnacOT+wTwKDrCkft2v+O1zMvATGLliJIJgIGAyJQ+g1bxcp051YcsAdjyV5EAzCg4RsyrvjlxlNH/RU9eeeMrFqcn/a6pmtYQ5FLyOAjzaSYDbgXcGzShrBZuGwAMpgD5uDmo6oehOaCwylAaoX1vwM8nKI9uhl95yJ5bPegbW77+BZJJCXGb0gOkaG6GwNjxzpCbQyQoibLTjQX6jy5hQMOqofWdG7b895/MzNZ/9Af3fOXqw0ebA142FDWTub0BSDARt+eAoNpUcTQsv6caGz/tNx6drNBHaQLY/66fnNv7HSKOt1va6sIABAhIlSE87C3dneqDu+WN+omO+QPG/EkrAld986hq/6kJeOMrFi9/8rKbGaLJ06OXqodctKA9oGOmSYnYgn6kKOnnAY0wl6bH0A7KF2G4kw+KneusQ8I+g6p+aPvr/pOG7A9zCcJwww5+cE2NHR1SdC9EbjyfnPPDtmTgt/ZyBQjC8myqskjGSqIcfWp5c7CFsrV6Mkgv8FOfOPi2/3Xf7Ex9LHIArpICuL0BSN9rywFS92sOSEDQ5IWjpzwagaBHoxro0i2fnNv7HUIGZifoL17tUV0weQDkFzwOYWaefz1947rbR48m+u84Pbz1V+Yuf/JyiwaDn1AW4pjcYSdrzrSQezeKq61DEjJvQu9bgskmmNuMYrz+AWAp2Y+QEWD8grF3ESil/724v+l9Fv8sebGTcTZR6PwPZU/Yq4fmLr5J8ZNL9xiA7NPSa8yJoQLkwtEh+yVMEFBfI0FQpCO4Jy/PKiQFU1RDLPTypcH80dPPBrMuwFKRO3NEKF7Jao4t7juXX7H5j//sMTses/6llj96y53fvnZ2iEkAYntziU4I1N0Dah6gSG+uGAqwMv+dMPdo1Ap9NHYA97/1BfXKAnKIwj5i52vyDwgVIWAoYBxwD3Aan64noGT9KAFGmD8AyDML9LP/4+TZhXUqPbzoSStvfOXi9ERIxZ0rtxE7QA+mXOLGak8sJW4yefocG2lR8c2rfmy4LbaT/YvM1M0HLZ/zQEvIIat+QFdudzCRSsX/Auv3Vo6Np5TOSOrFOmcSWUXPHXthKEhUU08i8a8KMbhiRwHzLQGhNKTxw2DEnzoWpDHf7W50aTMz9dv+531XfeLA+i716Y3VO/7mkumNVXsW4DYsqPBakBahrQ+IswDrA9wwAKup8TMedYygR10HcORD/75eXkDmWApIfBY/r5gPGhGluY85ZHZ14ewtf7PxaKL/r7x2YXoiuFjTRNsbpoOZc4ivlykVtkCJOe6L6/ix6R+BVqbx8VZBA6UF1+SegO2uAMC5RdcAd7BGUQ/Y/GWuS+jy/HJVv3coy8r5nNiT3LiKt674rXkzAVbUx05STWlR/WFC3nCQtSYs72jyRMv90QBLk0g7QdKmmlGBPxGogb4CjDVOJWczvQPUMNzMS37uttmxp9HWGUxPV//m185+0RXr9CGYOVL/3n/Y1XmP5aZA2ClBiNgxihf7ADBpFnF55Xp2Zf97+gTwSD6W7/rG4e99MSI/AzvawV0RZ1VjGgNkVyC5Auq9n91w/e3rdPX65Vcv/MprFjCTYnYR35qSgpnJ1Gag5TaDWCvEwoq2AdenAUBZ9hZGV5iK+hZGqUeBcrveQb4vbc4wLb4xUD7MB/SUvcB5eFmmgRbn4aIJKMyE/TP3MRf8b0MIKHG/aUoczP8SIAAEbol3jPqw+PgAECCwQEMJ4HHYDiMETQ8BJQ8FFIwomHt6TD8BMoMti/j6+5mdRYvzcy7xIpkwFC/h3/z62WnDa43HddfOvPvP74dOw+iMhoCYX7KdOaCgRzfwJICVuS9z2N8ngEfscfgffieHY135H+slwhwRzzRBh4f+s6v59tH3fW5y3dH/8icvYys8G5JrLAe7bZEZOVBci2EGZuQ47YrNbzxCJEOH9Cl7R17OHhmYGfMK1T5lDsjB+yZaiYnMyM2SnB1fPpXnRXDntHA7OCW0mET6VOFtIHWSkUX43Li4Neg3RwXgynNf76cWRyH+uD3OnF54jODp/YlYBGpYR66Ba4ikdUZ7w5kZOSRlMzl3gVnYLchBwY06MNccAteBA3MIXDPXzBw4IDNz+ivxB+MvCXaymSVFMAMHnZ2GzAotnlzbtcrbT0kGTulhzcd7/vy+b187A4PqtA7+LnSRx6B9GODzAfPynrf2CeCRecx/4U8WZvcAMzlIRy8CHK72L6AhLNJAKv9tYXIB3/J/N64z+r9q4fInxejP6bn6OpXA7R+hC3PBPSj4uKUGI44/Gks8snfE/YtIAjmmOboZadTFiNWhei5BnJVkdbalBT9W54EVfzHpzd/+YtjbMiUuIhK3pAe24A4uo7laOI0imlPfCHwRxAAJwYFmFvcRGCC4lCABE5gxBu1YdqBYlyhaJPGTAWqt+gNYwS+jXU44GyMEzTGpY0C5EoJ7ZwICBAgAIUi+0axTYitxsBz/gahjAaBki/jkzQyBkZm4ZT8LAbB7y3f14/fffOvMTN3tBZ3SAFKXGQ60D4QLIMg1AWF5X5j7TJ8AHmlHOHzfoWvep3ed47uhU/JHHhzxG+V/1+PTT7zl/64T+v/lH124/MnLmQiBLzG5qHmNEKIkPysgffSXIEVZpGNM9amZ1nqUiXNfciObkildcCoMQ1JdRKXRaqR1SSgL6K3poMsWuNsruBkmfKoYVEciMGXJwLNas3bP3n2NwkDK8Q8O7of0zmvfxAE5cZPiimFsw2ILpdR1riHUzOz86FHhoAjck3YS9kVMoI21YukD99YFzFsxfbaBICayAMW1BYgcGEIADjpwjjlMXhqyvb/IjM013ctfuvVNv37OOocBb97VQP2bmQAhXzgpiLmN1cjUB4BOxDUnAAAs7//7PgE80o4jH/9P9cqSj/6EuXFTG9cTW6Uti/Kfmt9S6P9zk+uD/n/5VfOXP3k53lIJPzZRGn+LerwqYCr6EQGZCRiIwZFajcIhbB9WcoQLFZxD5F4bLoPHLH5gmkCaAWaMBZkpJsiWXZpPQAkB+WzDrfzO4Tig4Gig7XPm/M/5oM8O0fJfQYfkiNBCAAxiOxIwhVf/+5MqLANImsAInwXgOmLxnE99NRMHhjqhQxD8wyAjhurpELjPLO2ZGeNX5IdToA8MAdzcghKjN+jLCckRO/GDdb6tT0SW5ZETvzW9yQgAfPlLN7/xX5+1nmHAN4588G/2tCX5lhUTbGsXsxyQtQYAEKUeyz6AQ1je99Y+ATxyjuU7vzFz57cGlPODyv+1Ev/1L+w+WL3v8+uB/l/4pOXLL1v2cIvc3RhNrxGAZN+YE9UnwvTiOo4UXc1ibw42HoigbaxGgRhAy0/SaYHYoRmWz0nzEiVwWw6wKhUT0iPwiE56LVjp70VoFvAFq6fYNE5BvKMVQG5/DLelEB9DuMFZ8r+HPcGGJb9GdR0KguwHhECuUerCtDT0B4XPAqqAMUIAqI2qbzNYN3hgT66NzYTgMJpF4leAA0nUrlHL+bhbIINizSoK26AuR4UAoZb5RDELiV8MDpfz0q1xSGB8YSZkU+ZEj+n98GtOedFL17Nq+/a33rX7vqX23g2b09yBfXujCei6kev57zxKpsGPigRw5Mo/AK4F+ovANbIT/gRH3l9j+Y+d5f9bPzK1jqf6oictv+lH51UZXmahzK4oRkSUW5kZE6wc0QiWsl800llpzy6wSXhRqMbtcdnnDCGh0tJ82MQyhX5KOgQeT7epAwppJM6o3YNYpohM3Vdgg9XTwvxphYB8MsgzBHIGLGGB72Nj9hByyqNyaSTut/VARsbS+AyBkYPGTJSMGxNChPjtCUvVD05PVEG8ODZI8gVaZCfIDrXwB4H2bYgfB8gxVeiwAAIBo15CImXF8gFDCDpXcD2fcIo472/k8pFZMesqZbzCXLMJDP/m189Zdw5oGwB0jHwHA0EOERXxF40LYMAQATCv7HtbnwAeCcfSzZ+a33+XKD2IcxdnOz3A3eX8Osv/6+4YXQf4c+mO+pdfNccmZ16s2HhmigI47EQohQsk7TkmjgpWqazz3HmodA8ADVyOJCLAykpXKR5Zo7YMejVFBcyKaizYgRynBVK8sg6aNVhHTqIuA3MHBNTdJbQPgfOSv+soH9Pc681JQQnksSVeLNehA0rs1dEHyllg5iAvEANAnV6jYTJpKCJgPUPQej/Evi0W48L5CRK+7aQogk/pfQj+DYzPkPQJojQEtT5f4yupowWnVo9zGhXmcF3Ko1J2WPSNvYbYovG/+fVzdz5xzcvwX/78wW9/YwbSdTIoByB23rdYyhlxWv0pgSCsF+4Ky7f2CeBhfxy68r8BrBLfW6t+7Kjx06ZYuemZLrB3fHLN4M/UBL/5DbPqIOiCUSAw9BVQxmzG1Y6RIotHwMF2fEwF0dQQyYkGsAATbF6XMWugq9cFWYrZIcY6jiACGI4AjjZOycw2At5p3oAOFMoms8xNLqYv3ofpDPIHYIO9U0QrbBD/0xwYUlgXJg8bjScbiqAV3IZ+s6BnUlMycIjhOzFQ2Ya6QaOqDvAZIQ4GmLnmhK6wCtcwMOi0mXWSAFKwKys3ziSUGlwzBOk8OEDKUoGhVvGJgNIwMrPmpDRJSPtpbkMt2CYg+JcvjxZxivSGyrQY+Dd+f8fUdLXmJuB/3FWCP911GnZpCLY81gbCLX90Ze9f9Ang4X0sfPV9S/MH4tmtYgPAYvkL0GL+urajlXsOcNW3xm+7f82X+JvfMDc9wen5YKy7lazOwGDgD4u2F8cq2jRelD+eYj4CE8uk0o8BYhqAEDAEuTPtLpWF+aC/XGgvMQmADgkggUOgGqqJBIKCEdnGbyZ1wHF1QH9RPjc1thM0O4DWL7Z2AN7cposalOcbmc8mEKxl58tmy6xYULYixglOYkNojDCqWBgbj5PSCq4QN4NieCmxutMp/wcBVN0MQx35RRjTBnCIOwCBIYT4AYcQJE9INgryf1ElX0EhFnQrpnJWnDGW8HKZOeUY5blK++IzdwCjBedjeGacnq5+4/d3rPXu2PXduU999IG2Zrv5qRJD27IANl197OuNaXBYOfCIp4Q+whPAgc//iXLAPPiDsJqcw7rL/5kFXEf5/7oXLu48b0l+nRK+Yy2ZRBPQtoLIoi0HZmQOyEwh3q0auBO+7wnywXwxwJEIdWVMKz4IyHFmicCMIZCnfAgHUgzPtPfXMM82L4VmXABZO0BtSDDj93FKG634flfVX8wALCC3skndEll6mF+kYKeLAAL9A2S8SVfw5k1MhF0QALmOrzgA1gDgXhfK1+MbgorvS40fIDAHhBjQa8HNGK0PlGcfN8EwLvTJplgcMBSYj1T9kifkRBPWSuqPM2QO2gPETKRrzODTDxhsJ6sLqU/1s4H0TsYKRkSJpJrBx1+28fU/ffraJwF3zhypu3PAsAotiNj6lQwI0unA8oGP9wng4XrMfewPQr0sIQcxRn9dAHQlacuwl4e/norjI1+bmF3EQUvsjX+X7lh53QvnRNJZy1FXFRoYH59TBQhxShs7WA4uFAkiFMtP1H/6cRDQJu4iMRAnVRpStIVCICNvxiLfFIQ5GI9Rn2FACeTg/YSRs0GADiT86m+0VGYs3nMdE7TuAfCgPQD/MOTu00cZ6x8cuTaS60U5mdOsm7EM+uhTSZqmY2y5WNbklMJPqtCpxTHqFwJzCHF/QiC2QLHhYgCoAXTjFwKEwDGpaOBG/Rgh6Fpw/EoNXJPu/Up8D44cqoa5qG2K7HCEGiB2DbVRBVyVEMmjdm4CJ7kIaOzigTzQtoiTIBPDG3769J2XTa/pNpmZqT/0/j0dQ7cWtAdxiLSADghCIKKiD4Awu7L/3X0CePgd4fD9+7/94fXBO6vOfrvK/z2H6G++OIlrOaYn4c1vmDUYiRlY6Z+sZnaMKEb1igCZ6kOsvAqdhhAwJKIPa93HTuuFGVA3/6H8BwYpI0e6CFrJD4hK7IybTYmMT6C4S/oy5+x4cKo1KjuaqKLIbm+KdNHZL2g3IKByOoAdy1+e+uOHEw18CW2TFlXIIaSMImNVTQYW/FMhEdk2grPrnrANkBXdCpo05AmIAAPUgUMNkqpBiLxSmcvvDKbaEElGURZCoBtj48sahq4cxAQTuJY5bWDdNgsoFKFg6wko4h+1ZApNTqpzJPCXAomyMJyrCdnpsIFxMFBSrvPf+L0LpjeOrOlmee+f37v7/uU13MitthPY0gQMOOq5r/QJ4OF3LH7pnRZjsAX84Ub5j52T4e7msTje94U1gz//4or56fEgRA5M1ZMowSvLnoFDADCUxtgmrJaVQVYBYrXoojmaLI+mDZsBIEPkkwg+AAL1xnIv3t5ReCYpYMaYLjBxRPKVS+M+iHNFc9FEmUsnsDgkAiUiiF6ZDAaAkZEzuTEcogPAYsCbf09oTuyMgjkBPjbRZQcEBQcN+Q6AE2rE0lAqASsp4nl2qeqviU90YJeNjWIj2yi6QMdShwcIJEx/U20Kqvkjig4xL8SdAFX+WalNw0c0f1aAQwgr0k8AgIoF6dMI2hswRhJazASguyNeOoKjXERgZhKeD9t0mly2U+kRTHPreE1MTVf/8hfXvB32of+7u7Sj6ardcE1AUJMRpNNhDisH390ngIfZcei6j8mwF8UKSTIBAAykB66b+jm7gP/0vdG1gj8vfOJi0lkIqLo6EqcYWMAZ/TSVmNYlxBAg7QIyY2CDromtnIzEwVqV3Vy9b+v8IVG6JfrrIzFNRgPaahdEPiKY+ltkrGOaC8g2MPlYnznfsuqSko4fvESnD6DMuWpxIyMwt8yEU90Xt3aN16gSzRTH6Tp2TiMBnxWcBDSYTQSzlbRB8BbpGJiLFT4bmUdOjixkc4qSHJhXAgdNoDXLbwrMEAI7S9ugU19GDhwYA0OI4m41c62Uf0aL76nni+e3Zo6dBoNkixogZg5AQIxiPw5cYkjDAxWuiNcKYi51p+N0a3qkeUzWN+wmCZdfseXSJ25c0y1z1Sf2zRyph/ANXeW2bUUOS4kI/Twc+ac+ATycjvmP/2G9sjxsezgY7WmUDF3LX//0vbG5RSzk1Ab/e93z5k3YSyieEjtIYx4priDRJkgtjxDYRDcDQyTzGBszsOpHBgiswD37ZWC3AxZ0YhlTgRJPNXlgyDlFHGNEkEiROKlKdNcZgFBOpZwkZHAVYrLATY5jSVFOpX4ZVY64VaozGwgX7i6Fw5czIfBaEULmoaTw40X8LYR5azANftqvRGqmZsIkss1JsVl5nNLUMHMdV3jZYSzEbtGXVQvOkgHUzDVL2V9L/wfSB1iWDEGgf+aAXKcmQCYctdKVROQ1yjfFfTWGmnklQAhcB0gjhPgSJbWAwE9omwfKT1XBkoAFpSv1VW6JOGa61//kaWu6ZeZm6q984eDaEN0h1wK6H8+88khtAkYeka/q0PUfAwRkBIpGj5nNaxvrHwfnw1XLfwD4h69PrKneeMETFi85bzlGEkSEwLqTKXNCDhi9xphZLOeloI4DPIoylHHGyBSpO2r5KnhFVHFkYXMGAIQb78S9B3DfIW1wAWYX4I7d8haddxpsSDgWbtsM206GS3YwBAJUKJhJqmkRdwCl82gRb9os8oRB+PJInKrr4JSFnLMBMrP8YsWA4honD5r6lkmZ89VcJ5VqE+YAaQJs/ulsZpnKaWpIA3F01EHr11CW6aTy5cwpJfjBVPz7DABAysp3/3F4UCVbYAbMR6gNiEOQqrpmNPSPjJClLmIMe/ev7H0g3PSdRVO7nZ3j2+9eiRfHxY+dsHtiwwY67+zRbaeMbt8OQKr4H+e9kejPzMRiUYYUJ9yMLDvLwhVmZGCK/OU8ayInY4ZKEKd4Unc+cfqFP7D101euQXfhIx/Yc/nLtg4j3LvapI9bmwB5t2M9pp+HI/8EJ7+hTwAPm/KfEGNJLbveYuLILuKv4QJCd3u1lv+37Rm5bW81PHFowwT/+HPm496mygRACvEAEFA5Ggmy0k0bTLyggICBgWI4E+MWmR0gB7ztfvr6d3FuAe7YTXfswbl5cEKozT4ab7qjPbxumAjnnYbnnYYbJuFxO/iSHTK0wGD2mJYGNA+grYMKQUY3lBFC/FwtD5M8tQIEkZfBabEYW/XfM5DH9bUMmak9BhXBxrTRmn4DZ5o/GgrKXWBIDCuQtBZ3XAOgCW06+xfW84oxCVAETGIaFhqOpKrYlllGRIYgyTnEmQLq0Ne2rznuFzs5OLztnpWvf3tp3/567/5w03eXVjnR311uPdEXP3Zy2ynVtlNGn/KkDeedOwYh7ssyhPjaSaIkMgBhDUzCfgXEqIvKWoQgq1FowMQBCigAWJTmZXzdPz/tn750aHZ2WCv5Xd+b2/XdufMfs2H4WxgRuMWlDmJ4bwOCOG7xpRzAKysH3z3yiMsBj0BP4Pv/6/PqepkAgZiQVeaViSSEqhaBuPhispdjZQGz04w2a99kDgzRWjV5gfEff2L6MzeMDf8kf+w586997pzc/XIDRb4laiWImhocqKLiD7GGBP1B3clkQAKGvYfwxjvp67fQjXfQ3GIGXTVjAuLgIUhOdXcJ7OIddPF5+JTHwfYtkiPt6aPF/ngXJe0tTaJIMtFOFNNGCZ9ksNFFeAbsmPdl9rbs0gDoaWYwwbzkFVPseXFmT5NbrenvI7Rbh50ScXQCCO75cBRmleUMbUF0XgIBkNIJFZaUKalpKRD7DIwj+qD6S9Ivzs7CNdct3vS9la9ftzg3z8f2RG/YgE990tTFF00+5cnT01N6QSIhid4sIEDlxBfibSLFVzwBCMRiRRnfXoJkd0zSnLznXbvf91f3D3/7vPAHtv7Kr58LWSuZLptsCG9JPhRfTyAV6/esGoiZNQRpwiDEtq4aO/utfQI4wcv//7L/mx9EiG4PAQkISNXfGACQbNTDyVIOpSmHNSaA+LOzi/Cv/uzk2cVh6/8N4/x/fuHAhvEagFDBDlH1QYwXJKZtKZIWW+tPHUICB4rMzJgY9h6Gz39r9PPX0b5D6EcWxeyiyY8eBrhqLaDiF7dthuddRs97Em7bDBLbs/gjujKIiqdHwxN7Yqyy9YTQrLozmx5EB8X4etYBco7aDxagvdl9bpXs+Dkmapn+pGtunMBNLGBVCMFmnuDVsMHEMZQsG/+X0kIvotmDpcJZdyNkAsQBxG6FUWfp8Ur43DWL//j5hTvuqR+aE33xRRPPf87G5z53k0CHhCJ1RJi8tYQVRfKB65eRWNRVybVzKFu7MzP1G3/ipuGbgKnp6u3vuXR6Y5URtyA3P8gTAHBKs6slAABA1tG7uR0xQLXxmY+wJuCRlgDu/6/Pi/gPAmPFFOsNBBSfpjUkAPSPR0HdwZp/97OfvmHsf165BomrH3zK/M9cPgPKhoFEfJGgDxz/cCwgK7GPUokBJq/Ny8B4wx0jn7im+vp3K0ddyEpBHwtafbRXjQzc+B9v/RE/fsrF+Pwn0VMeBzFUITEAYTBlHsTUX2vMp1QX65NQUjnpULbw3/Uf+tkNNtxvrL1gr1Xn6vnWzqPoJzgo3RM17ZDJr0Ht9pO9+iWp8qoMtyNoEkTwX7OFaSpDiPbw8ZRHAYmQUn4al8Pe/eELX1v6xBcW5ubhoT/RGzZUL33Jpuc9d+P2beMAAZGgkiV7FdZUub8Ij8WklRswpfeWUu56+/+59yN/v2/4m+iX//05L/qBrfn4p7UVyNqC5KSQuV/oeL5MDGySrnpTjo2d+Ud9AjhRy/+P/Zf93/oQMmAFyEMlACvtSSMIEvhLdpgE8Jt/u+mGu9cwTfnTf/XAtpMCWHxSbIGZhHspLTNzvI10yBb7Z+mrAwLBJ7428omvjew9TG2hv4gNWQXbDA2r4QKNENESI5gZtm2Glz6DfvBZaRBK6Py7mY1rJ/ynmC2y8MuuWGWItW9WoOdADUBKFE6dXp4lOmJ+qvpzV4AWmJwTwKdj+fgGcyr285mBQThxQipzRBXvYPlZRgZEYd8rQhbBZjZnLcYo2ykDkgCMvPcB/rtPLnzhmqX1n2jocNLtPtHcngz4ec/Z9OofPXnbKeOIrOv1hJX1XAwVgW+6MOUJndA7ewaAPXuW3/hTNw9/E136+On//N8uyBtBBk8daMOCmMsUN2wCUHRu9ORX0cYX9kPgE/GYueXzcdRYrH2Z5BgiDBD/y0MAdz0MC6Ughjv2VsOzfy45e3nbpmSiwQlNJiH8BETSgR/ERRupZ01qLTBc813666vG9h1S7B1z6nJLcZjVgd0xvwMnRtcdt9fMMrndd5Df9bHwiS/jT7yMvv8SsS9ARKvsI/jBMluMEh1x4IbJdTKFeIrbpijxA9hj8+mRlDSO0PCconfAbK2s0yqSvXypdCTx/Q0aKch1I+gXgzFVoizMJ0ZVgwgqf60TXVaeaFq1Q93jg1oEAQPMLvDfXbl45RcX4SE/0W5Wjv5Ef+4LRz73hcOv+pGtL7vipKkpkpNZmwY5YmBEBia2mUV8Y4kB41hYaUJAwLx9++jOnVPXXzc75H10+655ecsQsrhvclrDTIMTthgVmbhlGgwZI2jlyCfH+gRwAh5LN1+1tHDAwG+zeViTz3vzK4Ocg/SGmF2i4fk/L3vKPHC6uMS5RSv/GOhDYPHoiKphkWkRuXeMew/h//nYxM13EaTY7/5bRAQEp4bXXgRi56sv6kKELAMo1ZRzGAQAAPYe5P/fu+uLd+BP/eDIuWdgjOA65wyxZmQhsILkAOQEhwlZ0zD9iCc4ZTxTFgIN05wpMjgaKCSfRfIYUk4etR0Eir/b6e5B8l+RPxEYIJQUm4BMWi3GQW9QXjHXutYno2E93dbY1YyYhNhii8rAAT7xxcUPfmpxboEftBPNjVageaKRiwE5AAB84O/3f/wfD/7kPzvlec/dxMxQAcQlEYzvIQIGCMTISBhiPxUYKFiPC8xANWAFDC+8fMv1188NeR/NzgYX8zlrH6GF9LMq6NUKhGlicGjnyqGweCuNX9BDQCfWcfBtr5vbdxcgEAQgIHR7v4rqEElYkbEkSQkpoz5DerVpQEoO6qj6YoSZjMTsEv7ztw3rc7RtU/0nb3yA3cSSnTGKFsUAtlHFqg4ECAFmFunvrx79xNfHLBBg3tQ0P2yWhM3/rO1oAQbA8VjcB/rflz2LXv0impokhGB6vEhOslmbAYd5+z4gTgwEuzPD+UKL2fi0gFhUd/loGbOv56HO5TDVD7G/G5fFIpiDBYYgskFC6EogRIC43qVr1WA+bib5UGuiY1uUiyMfvP3e+m1/u3DnfeHEP9EXP27yJ//ZtnPPHUeSikBvLlHWBIosBxn6yCgYMMn2EQHDz/6LW/bsWRryCb77/RdPbxzJgzgmClVS1i0xnxT0hpoGm+iKTINpbNvIab/zyAibj5BN4HD4/tkH7owJzUt++vSOHXXQMNoP7fR/BgDYMME7ttVD7jG+4NIFd/+wrtcnW3ZRc5M9Xg5pU5dv21395/dOxOhv8li+HsT0X/tIHZIa38pUmNO/1medqy+bqRd6by/72H2g//Oxq8Pvvr2+417mSJxPqBfKwNQY7rHIRwvi3hdXJDMxo/GoIGUq/N1mWVw5DvqFYDe2bZhl/pCZyBBLNFDcHwDMvR0yqR/AyOFHEX9Td0QGCFVc6A1CKVEfX5Vi5lqagRAChwC1ujjW8LlrFv/z2+fuui/4s/lgnmg4mhN9403zv/P7d3/28wdFkVT86TRRBBEYRw6y/2CgjdluhgAAL7z85CFvpfMvmJyeHiklQOx3QjEoyhuctelDACR9CAaAemnfI8Yx+BGSAGY+/PuYj/IGmz4P7v8GqL+VHjAICPDU84eqWTaM80ufNM+uemI2thlCCChiO8wBQoAAaBJdX/vuyH/+m4k791bFPZ/d7llsgGSBLAg25oEg/Rb3r1WAJT3A/UAasGAjKKD/AAER77iff+fPVj57TVCfqKgoZw4sutrGIXJmIKC7ONkGOA5oV/KQdHXBLJRd+x/UAM1HdlV0CG5N2EvPqWlxrvns3Qg4uRuIYCugOKsEkV2Vk1mrjYIs9EZJD3XvghACRI8W08sJMDPPb/vbhbd/YGl+AbITDQ/qicZ1nGh/xufnw/9+2953/tU+AIimNBBtJGKWFI1CjAMddT8OMg+IMAuHV7zilA1TQ5kpPe3pm5wMUUrbOdGTB+l+lcMARmz1By3U5xCB6wN/2yeAE+iYu/v6VrcvgJaUUGaIgSX/MMfLn7iwYQJWLVpe9qS5qbGQbD3MfINJJd+jVqRJfjIECAx/ddX4//jg5PwiZfV+Vu6lGiWLCHbnWywoQsB6UENXG4L/7SlMARTxCgFwbgH+9AMr7/yHFWYOUe9TLYzl9wZgJlVo8HEcHa0zTg7ieFQ8cyBEBq0zdAw2bzC+LCYRUK/pH5xgtcFB0c4+IEZOZkwtIVldqWsYcOT6YOCYAWLeiOBPMF94UeiUr9SBuQ5JzxkhSrYFDnW47e76LW9f+MK1K2ZOW55oPIFONDZO9Mc/cfDX3nzX3n219EVBRYcQ1KweMHAAm+dEDVGK7+3UFL7ilaeseitNTY+84oe2qPAGZCOc7BzlodxhQW4JZdWisBCJY0AMc9/uE8CJcsx+7A9DveJjN3bn8IH4D7ZeDfazVDxOUYep8fCrLz88+KI9b/vKa542y84cj0WFUl3EVW4TOAjnjPHIAvzGO6ev/MZoea/pPd4ABWwMaFnCh4NjPkJysIDlVWxMJ9wT/PiXwq/+8crsfGBAJhAxMidjE/sAjjYsgZL3bCLnqAA9CjdWq/KQBoDWIbAr5JNve64DkabBpvbDwAEpCCOTMfFKzOFA/JJrqON4QM9qlAUNap8SzFsxucVHe95QBw7AIUjbAHz7PeEP/nzhzvuDD7P+RLtTX4T+E+hE33Hn4q+++Y47bltUF0uEEDhgHGzIKD2o8oU1WaInyq94+ck7dkwMvpt+/TfOnppWzaIkoOToP2UOaMBB3AX8tj6MifLBMtdh5iOPgOBZ/fZv//bDfvz74T8I9WJEDsj3rql7FZnvlAlMecxv8ht9CMGLRxcPkMd4ZjrB9k31eaeE7+4enVtq6a+fd/H8L11xeHQkcMKtSXnfKKgokqj4AiJAYJxdoLf83+k791Kz84bMJyOrBzF9kirElnu58W+Ve3/w45vRAQqGUqKpHJrhb32Hn/n4kdERo2qJNgcmwJVFSAIpDcXz+1SUjxBUkY7ywgZFeCAL944DmmbJ6PfNGLkgkSG66aI1JPpJ8koPuiYucv+BxbINtSNQ6D+ZK0SuKELg2+4Nf/iXS3OLDmnH8kT7txLhRDnRkHMSAGFlma/+8swTH7/hpJNGdOmbdZNO+rBs3Q7ZVvPGRqtnP3vjwUP17bcvNJ/NtlNHf+mXz3zSZdN5MZYzk5HLqi6Nhf1QsG0UDNBOFDWBKtP9WLq32vSSngV0nI+lm67a87e/TRUgBIq+bshmCW0ui1Rl9B5w/THY3q/qFqBYfbj9L08WAkZSHTM0HjMA8uwSfexbk5+9eWLvEXkGT9mx+LyL5p96/mLClkVohNhZJEURohASYfrIAv3h+6fu3FtBUWk5aAB8kAVs0gGHmXWv6fQP9UvKzbCSFBSRr3NPw//4xtGpSYibAsqzitpNpiqdZE0F02dCQo4i10g2P/Z0dZXzNHp4BxW+eAAjJIszlLRs8s5QME5jIwLJWNEYPmqiAGakA0LuDDLxNRFmRsaAzIx33Bv+8J2N6N9xogHbWZ8DztFab/KjPNGx6ZmcrH7rP5x57nnj5swRTzYCAxGo9BaYihT7LEv/9E+HPvO5Q1/96pH4F7ZtG33hC09+xcu3TE1X7lnmuwotT91ESSETCElPunsxuEgGDDLC1kHO6On/DsfO7xPA8TwOvf1fzOz5DgEDMamCTlcCMCUZNCUTcAvAbQkgY3/G67NKqruSOTQBKPYUFzxVNF5CerwEg3oiYTJrRLPTEkWgmUX8g7+ZvnNflRX+We3fVlw3+IDHKu4fVXQw6ZvOHICIxrVgkY8zgBtqYEIyOU8dCHOuMa/GaHGfLl8OciIOlhrZzZa9ry1jzjd1r8dlC9ZOQYJEkvYkZhAHFyWOQiTGMBpkzQYWAQSGL1xbv+8fV+YWGHMoL9vx82H/4XOiJyfpt/7DmeeeN4akdxtFySDZ5ZDWD/LdYHa9AbLV6ug3EZLuU/KTMHPRfJXNccZS/6dD/NCcE7QtBgMDoyQADrEIoInvG9n+pn4GcDyPI/d/1xdCrZcsEQ5/xftyesCFbza2GYfE2fYaBJ0ASRYOTPZPzdbNgCUEfMvfTN2xr0rj1Pboj3losPoffUffnGi3GyrywH9tj4XGjAWLhdKkElasMEleu+N+/t23L/sqi01tX/JnACCMUmuJukPJo5wRzXIk2G6RM3wvLIITTYhzZzExvQIIqGoR2p0p0dADDqx7viFwzWr+jiFw9FNnXeoG5hCiI2aIpPQQ/R2jdVfNd9zD7/jgcoz+aVW9M/oPPNGrnqYH6URD54menw+/8/v33HH7EocYp1EyX1yRC3HVkcRGhg0IYkgabC7Zx22+OOK3Wys4F09p0XJsR2183EviroGfyUQ3bnidBLiuKyzc2g+Bj+cx/+m3i/ADZFvdg+uXxndX94guLnfmJh+UTW6Q2EnNyQIRcdDdTiH+B+exB/pfYMa//uzEnXtHjE3jNbbSDQbN/2vdAc2W3xlandKTz3zXv9yRsYwkPh82ooOfGbbngD99/4oZKYImyLSFy+Yfheq1EmQrWno3qf05mfo6HRgLJSbrAI4JmpQnUH+GZGcYWPdJPcdQfNjV+1D9DaMzu1lgqj0wMHMN0ZEr1Ag1cA0AzHWIvK+9+8N/edfi4BONQ57oAYH7WJxoGHCicdCJnp+vf+f375k9EqCGEJy3fI3iXR9UhEHsP3W7wjlkCF/I3FK5YOImOS3XpAU94+y1vLOxMLtJwBpbp1iPhJnP9AnguB0z13/cZH9EoG3AeVs1Q/AA569yhYSdNjHr8pLGL4JUwZBGJoze2Rr3Sc2xOUSddwZm/vz1o5+8diyRq5OOVqL5IUIz+hfs70SYYO6ICHbbAw+uDR05PosRzTuF2dMF/by2IwcAAH72G+Fz3wjsVTx1Rxit0IsnIIk0RDvf6HiptBwxZC+RG5UGcrxS9L6P6mSbQrouqQXMOEJicsvo3XxF2CHEFA4MkdUvPV8d6b3yJwLUIUZ/QA48M8dvff/K3CIMPtFQnGjIT3Te4XEh33HsTjSv90QD4vx8/Z/ectfMTADxpzTVo+hiDRjpUhrhodZ/0jTFRE+u/8OMjwuqyM2uwzNEyESXGJOVNjT6gHwUnIUC16Pme2EhHO4TwHE6wqHdi4f2NeCNRuweriFo/xHsBH8SwpA5DkokUie/6L4bd0rjpY9yA6jld6g5XtaB4fbdI+/9/ESxfOMIKVhwLQpQuHyNhrUXcV+NB8HtI7CFieKA7JvJ+hU6ooOLs75t6goNMc2986P1HfcCcBUCyZhUfBGYozBeHKQEgBqAKyXiUJTZFOcwzmvXoN4syfAd8wJQZWQkqmvbH81bKM8QgdXuHNh74QazdA5u+zWu+4p3MIe46gtcA9TRrp0D8zs+uHzn/by2E51542RXZMuJBn+i+SE+0ZBNqPCOOxff9dd7IWCkwEINXGOI07NaiFJioMMWu1OxH3E1jMsigVMJbtV9sWDMjZxoftkZQzS0AwA8uPB3UWj5gYf1VvDDOAHMXPnHVv4njwkuW2Ns071tlUfBVfAfdDNEG+qiEMJV1RPZhB7i19muYTVkR5n9yi+JuD/MLNCffWpybpE8+OOrvVQYQlLZbbqiFEGhEREML7V7PgUI4PSRqwXt0ZB91BYdmmDxwNAgD5lb4P/vr5dm5gMAM6Eq7yIgmVA++nGcoMAAlX6QOYVxEnxmhjI8svQKNmmUtyCk/gAYajM35zRdCrqsYRbwNjIMyHEbLHCInzJzqLnGEOJyXxDkL3AI8J5PrFz7nTDciR4Y/QEGnugkafwQn+jkw63P+nNfPPy3f/9ATMwyYgmscB9zfMPjykUAkXeNCTi9uqAek5xQIOa07hfdUCEHiHx3E7VdvYBEARC5l4iIJRHIfV0pWXU4+NE+ARyHY27XV/PrkIeC86EzQyB2JH+BHDAac4smZBQzA04qXkEzgYvy4iEOAIH0JkItuhCi2g8DM7/jkxvu2lslOLiJCXjqD/iNhtVQYIYyIrD1zikNtHxUVIweG7Av5NGBG3YBeWjIB/ZOW2DPAf6Tv10GlV+Xsto968Buzd/wmYBCvBGpaBTpbPBrGg4EB6cSYU2SiJKJUa0EHZGXiItjnJb1YqIPifjJNea2UWDSP/HK4CiMEIQ4FJi/cUv9qa+FoU80DH2is5I/y+7H70Sjo7b+7QcfuPGmWYnDaQ3SXOEiFKop3CJ4CLJYxxjt15IqbAz0QSVTYkoO+UgAINsNTBE/NJGfVdB/TqEmNQGz3+wTwEN9LN306Xpx3mIJrQbmrGHgmycG26ZXLxNPOiZghJpUg0yWAuxGArv1UES+IBu6xVIRmPmaW8euvXXELa65whAdO8kX/93DwGY96EI/+O1j9/85ENAECyB7FBjZu4gOA/gn0NG+KPnlmhvDV2+I5uOkVSoqwMvGGZTb2+QkK+cQGe1lnCd74hSmnS+bA6fpfdoTNvV6Dn4JyBx5UsUcOf2M2g1ErFpzA4cQlQ9qGxQR1xw4zMzzOz4Shj3RuKYT7dLA0Z5oOGYnGjLi0v/31vtmj9TAIdTxbVQqftBdXmaoFa6prbqPnCv9kzWUAnDs5gcej02T/5BjQZl4XEYw9ZOAAYGFtcsJs7z0vT4BPLTl/xfemxdIq+TwUuaHVxsAGGrMqDrRoJcYoipT6iAX2QcRgxISzweZKZLe1PpDul0GPLKA7/vCOKBDfiDTcEQshN/by0Hurgct9LMPD9wIC1zQRNogYh8N9H8cO6NjbOg4VJC3L2kjFOFdH1uaXdApbBBTQYAAUAkrlG2/l2RCG9jWWSRMh1zZLZvyp41TSH2byPfE9V2B+43EJXMcM+/lxEsyYIeDDnii4hsoAZQDhxDL/xAnwPznH6nnF3m4E93CbC5Jmx7zcTk+nVh3ok3ZeIgTzYNPdHMwwF20uRwImpsLf/pn93MgYIaVAAGjYCowQy0zYY4GCsHdc6a0wbpJnHa1lDUQTA7IhgeoklB5oGB2wwPOO4MBLBL/Le85w+HIp/oE8JAe83u+l3t+rQLvDC7zwbl/e8svcGvrovPOzo/Xqgg3dlKmf6T2I5uqv4/CogQpVdonvzn+wOEqnzP4qhCyqhDahY2KQOfU5zlbz2mN+asdrdkCWvNBXiG2plp0ucA3AQC49wC8/5MrHJiZGA2/qBQyiNNeglp1YAIAVM6jrFH4ZxAQuhUBztQggJyIEHouDJr1i51rAfcChxCnmqoNp29MiMFfTcECQMAQEEL4wrf52u9wR/nfPNGrFaL+Tc9Df5nos/N49Ce6bAXW1O1dc+3MV685AgwcgX7RDdW3JES/JBvCRzgopMBtw4vAjucDUq4FdzdGChYH17KDOivZNMhBWFzwgrirqCwWMcPMDX0CeCjxn8+Eum7amJZ6n93Enw4pwCL0xzWtKF8MTuIn/8vSPBKao1MarTHXBH7PS3ODLBYy3LGn+vDXxr0mEeZj55byf0BUKDAfK8vdfQ0dd3tXcICycmxCCdkSaLNCHHgSsBhtfvxLK7fdp+JuaScAIFTsYVxzT2Bb6WSVnUmKq7n6C+f0LaF7xqUy5lCyxd0klHUYIKB1CMxxdzzEEB+CYdjMwFyD8BoDMXMINXO9Zz+875OZjxgW8eQoT3R36NfMdKxONB/dicb//Re7Z2br2B1BQI77dMKS0vWuwK4LJ+FUBRm6uRkA5+zPOEZGqBXot/WC9AvtwghZ1c8tsnHY4ivI2X8ZgJcepijQwzIBzH3xvVn5P/TQF3EA0d87kDCqCRfo7BcbIy4Ff2yVl20IaTYviFEHHa0DEPqDaEbSe66edGvvbvJQgiaQP8OuCVWpzcJuLx/awsEqJWH+YZ48yvFAe4XInSfEvZ5UDQPiuz66DEH08uSeDFE6xkkwcNJycgCE3cyo27neDV54nAkLQoAoWWyCo+mWRoX+bRNAz198KnG0G7lekkJcDIUo/xCi4n/80fddxfOLSQDHkX/ayv/uzfbMkKvQ12g70ZDjQCfCiZ6bq9/1nr2K8AT1gWZgxqiPzSqnGqfBQXu4GkD3bNyCW0jADLPr4YR8kfhCwZn/JDgI1ZAPOrAgbhsF503AoU/1CeAhOhb23e5IO7yq5QsOTgzcsFc16BDR+GQM3qvQlAkQGLiOruaJaiwbYYCq7gAK+2BQVQMOcOM9I9+5p8IiCyE2Vv07dKu5rAdLNKDjli/DQeicDA7CCdLOlAs9vkJMpB0YEB3yDxAAbtwVbtiVbmgAinR/DsjizG4ro+QX/NivejGXHPAQzdndkpc2d86gvekYbPE2aI0oOYOzRYqEGIElWCOnMNx0O1z7ndDS5GFuRNFNPmk50f79P6FONK9Kv8PPXX349tsWwRjVjKqax7bI1aD2MwBwHU0z/Nqw4f5+FMfgOWOWooJfNsTEFfY+kRzaaE3NZJAkrcPc9X0CeCiOlTu+VS8tDFD+sXOGqz7EkxTMRFDZ/RhSiZDwH2cgmoOE1ieiFmNxxgvJ/EsgSCuf8MNfHW+WeiX+0zbLcCBFg/fdEOSCsjaEIhyUKFFHUFh9bgAljSRViKlI5O6wkF7l+69a1rkmprFq2nnWJoDztU9b8ghuR0/mvZg4P+nJ6Bk35N/qhYDg16EgFp5SkLLakbmXyRyFHwJzLVwgEYKrITB8+OoACB34j8f/uk40D3mi3Rk9fic6C6iNV6vHO/9mL9QAddyQCFzL9B+jyFLm7cZml5FLRJjHA+lOALsxPmdSTrJVwCCulXoNALodMchmws1JALdwRhAR4GGJAj38EsD8V94/qEQaWENhAxFKoHDwi11FT45JKgacm6BqP1jz6lF+Nn+iGkUlOEDC2wPcdHd1y71VC9JT3CzYifcwFIy8DA0o7+PQuIXtsaGLEjggJvjCM8subgBtk4Hs2fKAPkDPwI23hRtuDXY/IgJgnYxVgpqqR96nGbZgI7nLcimm+99UgFBTAmRDfLC8Ixyf6FkoWn5WsXJc55XkFBksIvGkfF8OdawQ+Yvf5Fvu5BLog8GKPp20nxKbgUGn6jid6EF53nLejbfM3XDTLNvdJ2ehYhFVBTQUiNmsBKxz01o+5oCQRv2g3xXXSTfzZ5bZgEX8Wq8wFfmFpkZ0x5kpSBjh4MMPBRp52D3j2V1fdeV/h3bHwMLfhdWQWKFtWGwzwUT6L6fKwAnYJtUq7c0RU+VmNiGMECAwXn3LWIZ/4JBGlO5OaCLCAwp/NxC49JyV07esnLklTIwGBD7jlLBhVKLt/BLe8wAB4NwS3rsf79k/cv0do1FrIQkxr0qtEvMM4e0gt43kV5sdvv/T9cUXEAYUydSAgIQYzJ5F8boAAEAMTKAqNVn17LJ83MlQBED1hgKq27vNBvW5G/SvdvYMAFADRMUnB7GbdJxg/5hsAJg//KWwdmPGY3CimfnSHXzGVjzzFJ4Ygy0beetJ8q2798LCEs4twj374NZ74NZ7QdbhHqQT3fG7/vQvd//xH5wXrRgQiUlvL0IIshaOZGvY5vQAUJHb5ArJoMOUPxDSA+JNHhAwGAUAjGQc0Ou5+GvIJgqI6D3MsjQQ3wVAnr+5TwAPHf4jLUxxh6QZalPI1m3/JyqI/gpmJLSMENmGYHLhBKb3oL5GKMUFB2BiVKWHJF/JIZBYArLau5PAhnuP4JduGW1D9zsXPl0c81bXrgNoQwMsLkyM8qXnLj/m1PrS85Y3jAY3KsZYKcUaaHKcH3NGHQPa488FhsW5Jbz+9pFbd49ef8fI/DJB5oZgnbbef4mRH+OXMmEtOjThjXY6Ft+4q967b3T71riDFwCrqPzLyegR0SQfkuNHvsdT+EH6xREsNMXQo8ZucThuFwRE5BBARP1UtyxgwlWCYR+67B2AGb54HT9wuFkEr2LcuO4THb92xinw1MfyUy+CDeOc5td2DQOctZUBAzPuPA/gqfDAYbz+Nv7azXDvAx4QO3YnGtpnA3v2rXz2C4df8OyT0JYu4jkKzBT3/iKZAoFlG0QeE4LCQWobJ4nY3/uUmGAM9lTzHECAIS0SAiASc3SrZ+c5ExpU6/JVMc9x2I+0pU8ADx7+87cu7nNriOxAF9DX6hIviGT2lHXk7OmCEu5ZU0i6E227XHsIXTnRehA8PO9uVmTmT357vAWTGhwNtCTklpsq92NqhIMfeOLicy9Z3DDGJoIr/UvccotypPFuzoU+EWBqlL//wuWnft8yPIf/8RuTV35zPDPYs0pRcDIJDajlWvyKltND79wDAMBHv7T8068Y4RCJFiGR+ymKQLOimAjxji09oQodf0OKWFB+NE9hnRsHxwRjNftypHfHhNGVJaUhiqhr1PszQdDAH756+PJfith1n2hmPuMUeN2LwlmnuNKbGEGF7OKvoGi9RoaNbJ2G5z6en7sT7tkH7/0s3rePnYXig3uiP/flwy941iaokYmRokMAIMkwDQgRYukUO/a0xadGk5RUoDHdnik5BRaomwMggTR8fiZEgAHsLMXqL9TJLAg4t5PkDBJgNoyYD3wUt/5EPwN40Pg/996MvNq9xAUihPlGkIwHkdAxiLBlq0pCP2YLm27QaDCCoxErYVwkPznVg3FjKFA0h/rm7UOn3qxG5oaKL+fsby6CwgWnrfzH18y+9EmLU+PJSp5QbI3NxBaREAmRkZiQCe1GcxNKhh+4bPE/vPrI+aeutDAHPWe8QRpJTEFudRIogp18cM1NdZrKsWlGqrd4VACPMDEiaIeeNnsYU60Hiv+gQQSywJEafxX6S/EqiEtwKhCDBBsOcZfPJKQBAnGIC2IAogrHN98p5T8+yCc6fu2Kp8Kv/lg455TkVUoEsmRFiIhIct5JSvlYswQkJmBEOHMb/r+vhpc8OQlJpIGyayVaRgKJHTTgRDM3EsINt8zfdvsim4JbvG2CiemCxO9E3WE7NRBA5CK8Bbzh++VuMMk1EDCJiovuEGYUJg6yNQaOxYE0kKEFiBDmvt0PgR/EY+nQHkg7ey0qyKVPS8mdjz9BjgDQcm/KYD/omDHWFUEdrdnGUIkaxMFWhTPaOUSj8CD3Wfz9d+6jfUeoswTMxRzArcE3hoLOfrYxphsf5dc9e+GXXjq/ZToY1ZBIXm2U1kdCRCACIiBkZCKm6MuIAASITEBiuoKACGHLxvoXXjr70y+cmxwNZVCCnHxSUAYZoC2qFRIanoy35wDffk/csDXJHtkIleFfUCTX0DkPmaRlMa8CRK69sYE+OtIIYlrnC5LRa5BwH1VAghKGgu58iRyEAENBg+Anv766QUV+omGtJzq+36dv5X/34/zSp4nCLKI4VyMCIJHx2JgIEPXyJYbkQckkzGXgH3gq/NvXwOlbABqDZmibNOd41IATDdDmtvvRqw5wUKHUgLJEU0eQldOqV9DBb21eYKysHkw3NWLG/PEMH87sH3IuGZr4aNoKtr/rUzQ3YUy1Ea0P9wngwToWv/x+HDjYzXFfKAt/4/CkU4ttotCYj/ddx6CXBbtw7sp/9RkxBDnus9QiAgwSTvjq74wN5DE1yuFM5avU9OWOSeA/e87CMy5cQXFhBQSmSvTZKZb/CIRAToMSkYGYkBBIwgew1I8ozr1R/urSc5d/7qWzAG3lfwctPXv+mTonu3ey9GL9zNdXhK3F6tgVzCyWMcHUOfekGC0gZ8ivaXYHtZExnokK0MmsP/7hEDklJD9jjgrB/VW1CYvCD/GH9h7kb36vAwXhNhVKt9zl1slXOdHMcMZW/rUf57O3xWBOJG0eIBIiUvwqIlXifR27AaJkRIZs5zdmej7zFP75H8LTt5YtXXmiG6yjdZzoz3358J59Kxqao3SS/nRIjYC2ZfbWc5L3yKp+z6BykkFeRFqigXs8K9ZfQ0YA5YwZWJ7InHSAwDx3TZ8AHpRj7rorS4yms7rCfN8PiZJ3u/uX24RxHvqBwGt/qmdU+qlkBuIwAtb9c6OoRaCdrYela7vwH84A37KwsufBmcUftBH43vCcpcefFyJc7ot9jHKZpIAAACJT/BiJKiAEJEYTQY2PTG+1hhbgMzev/Piz56GBRBfdQP4SckHUogmAlhx4zU21s1nBaL0FasvJ5JDZePrqDkHvgAn9Z+fjjL4JiDQe5WtJ6cdYaZoxm4cgSqAxmkStOBWDi+LFABy+eB3zwEwP0DbR9SeaVznRzHDmVv7lV8mcFIkRmaSrQ6qYIuKnPqKa8pUHTXINxO1mdCIoxDA1zj//SjxjK+b7BUXv0cIQXceJ/tq1M2BbvajLeixysDJ0D6YQZwitW+mQheGQlsIM8g2h3O81IwEM6fJgZyeQVKkt2nDODyxqNjlz4cjn+wTw4HQA++4qmJLdkj4G4butXeYC80lEjCz0p/SA7PpEyyiCyCiswpTKipBgVd/SOzlGuGMfPWD4T25e3Vb+u4qpYeEKOQBsd+Abnrv49O9bkfAdCzyBfYEqJEICpGiwSBEVBjHAAgKMxopJOgNjaEARSjb2KyI89fsWf/w587l+cGcOYO83wr62bQRB97L3HODb7qvV2qzWCM7CraoDZ/ufrWvf3ifWz/nzThE5XRVaV0qKqKNqMasbhDKI6uQGA8yANWtFGZiB8Zu3dsWKfHt2vSeaAc48hX/5VbxhjIjMUADVUl5qeiRpCpAiWMHiOsxom7aKAzH5WySEqQn4+VfyGVvRy8Gt7US3v4pMvxoAvnbtLNQg25dBT7jau6fJn7cBcB58UBvdgnI0X+Gd4JB930QHpx/u4AGMAiSSWjj3jcG221Q71YXb+wRw7I9waHe9OO/e5y7SvG14WbgnWyVqw3wwScNznhTi5NHqdyv5db/UQ7WqT+WoG3Kpy3YYCjoEdz1QdVSEid+Rdjz91zgHVbkh2cIAzJeeWz/jwjo61kTh5AgDSJmvTX+EBIBii4AEJLU/IBJQBeZLzkz6E0BofYN4fTz1MUvPuWSxWf43XQT8N7M+pjEtKBSNbrwtACJGTh4TBMu+XApkEGf7XPKPhBroPWFQk1mhGp9BF2ZA6IAhUClQyQlRKDaIUoXxgAPsOxju2lOeaD52J5qZN2/kX3kVbJig2LTpLEc/ICaKJz5m9gQFyUVATIhk6J9WS6SnGBEx8NQ4vu75ODEGTvJ7LSc69yZOJzqbd/D135mbmVvhoGV+YK4ZAFC28FTJR/oAjCp8StwK7qSzYwrYbrDvGIpRNIv/jwlLSO4BsR0F8yCzKy7k8ANn1FOefxiZRD5sEsD8594FjeWvRiBF62GzAQBjXvG56TE3yUJaDibN50iZ0Cmap62E+FhyNCAQDEALGebafCcA4I591Cj6W0kwiT7KDkMtnV5N/Qc4Dn7/+XOXAIGIY5AnAkqgPxLYtwAI5MsUkR8iNIiAUIcD5FTLtCHQtwMBEV5y2cLk2OCBMAA3fQiaL6SAweUru/dbiEH39ToP9Jhu2sbsJN8jdUukkgZC4npaLxh0DmDyomwsIIcYRMinhpDOt+SMb9wKXSca1niimcsTHb/wEy+GDePxlIFSe6TDQ0DESs8cEZCczQL9R0AkonjaIxaUOAyiqMJw1in8uue79Ha0J5pbTjTwPwkK5Cwdgltir8EF6JAJQWcsIAAAqG10rD1fAEcHUqlRS0M1Zr8nuGuRdVEgetMD5WhtlkvkYjn8uT4BHONj+fZv4yDQP0YncuQfsuifdkc9O4hbor+4j7jQr9a+6M8yMEKNyCpQqdNAd02KCZQ6BmNQM6O7H6Bmxe81y5zELjvyR7tki7/3mPmFl65MTYAgPPGWhhQgCABH4v2uX4nxghErIQlqxpCSMc4QfcuFySEtKvHx1Dg/55KlzjFABu20ChA4ETsonK0AgG+/zyYqATD4ZV3ZC820OtxtSQ4RQs6UXtDTwDFzek67AZhUPkX+AXU4wJrdg6REzSMiAARw851tUDf4d2LYE52bOEsP8PTHwUVnC9ATz3Uq/xGIAInlY1S4L0J+BAgVEcb/E5yQtDmQ0E/a5cqb9vgdsHMHFADOek80tJ1o+No3Z0TiQwYAIGQvBWmSqB/bkMASPKl/AKgWhyFFWhQGpYQKmyCkTA9OL0R1BhF1oFfnFBLGDhlivQTnb+gTwLHuAA7eBx3lv/mqMtj+LnoVYMSSDAoBlNRbTHrdcJih2MVHplg25lZ8mKYCoDQKkTfRUsZxkW+5v4I2YIDL/3D25aKhLmw6AIB58zRfvrOOxR1UCvCglHEWyqXyi2kgosOp9gciVjgI5L8xFWBmt4CZvju+9EmLm6fLCWGXwGT3a4FGDgAAuGFXrbQrZEa7vfU3IaPnfjgxAC8HHVh131g5urr2ZeryjOgtYYJpIujZ42gH7zsSjPNft+sg4HU5AGDgY3SiGWByjF/7PESI0ZyQQMr4WPqQC/vqx0uIMR9ElE92AuQ+UBs8jOfeoEzU2wkR+HXPp8kxbuaAtZ9obj3RX/3WjMx7Rfpfd+1q0XpQax4j8qsSXAAIdX4NOEa1qUkbgG9z3dpgQH2o4TwxqUCQi0R+XHNGi1Z0Os1h4a4+ARzT8v+Gz4SVFWzvo9u4nn46lO0ImxYYOkTPLvh8wiyPiYGPVIceMiXx4JsJ9QPICz7bNkOEB45UkBPfW35nNjxO2Gk2UmvjX77iySsbJiBi/oRMwCQ4vwyCJeLHWA9ACgcogkwCE6Xi31gigJVCYUkGHUi08xgRrrhsoUUsrMFazB1o8jXbZi2p/3P7PVH/N5J/2DM7mYNb34VMQscvBot0h36etjr8trDGIwcp6z2PzEllGjXT6AtN4/G4RRSXv47FiYZWou1P/gBOTUijFvEdqTtIOzYCQiJirAirSnifYMleNMcpQkAoFwCJOxqBcsAYkCIDmnFqjH/gKdQUl137iYauEz07W3vMTIzgWUTXwdFtBbsLKvFvyV6yjgI1NWcc35QDQnKLZAUPQz7d5QCBnHYAA5NzHPNm1KZOH++O+uGiDPrwSABL37umCfdgucmVR/9cOyDVBdLrYy4GWjR0EtNlAhwympdlhVgvcqpewbxJdWiMWVxi3nsEc6XyLEqkXcl8MtqIChnd2h522Q6O2D6SzW2RpDwEItYJMFuYUIgAKb4erRHliOUgplwQIw448zVSRfWnXbjcpT7dUB4e6uWk7SiG2QXh7Ys+AzMH4e9jUnlTPFcl+FQGkhMVxAa98SIo8UCpKxEbHV4cBsi6H4raP5qNuVoTRwYp8r5DcIxOdAvS8n1nwWWPIaRYweup0sG+nFAgwkBQybYHxNqfYpLQFK/EgIgPCeYfmz/US1yUzmLOe8FOfMxpONSJHvq69Tng9rsWFL3R3VzmqK8HHJH9YvCjZ58dPhMQuE7pP5RajVq3OZo/qJu83xuXxpOSdxiw8qQ4KZi2cffCoav7BHDsOoA7vt02/i1rfARKBaB+HbPoH+GbfG+sOQwodz3SY8wNRmQFIMcEHS2FHdVl8KKS25HPG2MeCP/nXOwLTw9TY9Et16Z92vxjiukEkRMYEWAQhkhMCBUmlNhagcgTISRLKYITgwYMIKVOPea0usFWdDbqbsTZfDnZd7PXnhtOiUx/fOdrad/cFNfxeYpdP4fsoVrRmpGAcYTS0oZom4leUJBOAPU5odpBphAkhSQEhn2HHqwTDcwvugwloFNc3QYymI9Y1zwY4ymODZ/W/dIESjcIeU+oKSEuCUvLoKIZWjd9/2OLl9BxojteTtfwIJ17MVRgrpPFEgdXhgtARymlZvLOhbSDSj0nyehc2h3jj9iVg8Vqek5bdt4SsooMjWFAQERcuatPAMdwAHB/C4HHKJ7pVmeIih0u+gsvKKSmwb4KifUA6vorH3Cy/CjyjQ/ilk0wedPqnNCI5bLGyo3U4q2LfHWYPKUgk9dpUuocDvTY0wNWIUI2lFhALLB+DAAx/FeuorfCUfsA0OUAaQUMOgikaHEMLKDpVMIkIO48b6XBCS/XRaH15eSvyO8DlMgJGjDDifBVTOQw2+DIu8BYswcABiJOud+piNnKsRFS/EmTfSl9WYgOxpeTiAxbN/F6TvTAtyX+Z8smePKFaFz+uNDNFKk8jKAnT8b5TLoPrIvfguGRDoVkkCC/CiQpSJYHkZQAZpbT/vTH0eQYHO2JLibhtprBsmuJ1pCp4Q/XwHVh22LGfJAEITBXIgqkqr3gbIFtaKQMUTvLcRcsYJ63UfzlLQPVjmAWEaekCgkAEBbu7RPAMdsACMvLbU+7Dfd3VnvJgzSVLy57cBrmojm0hqLwF/jcor/fFpIHmM8HFexD2y9Bk63N1BwbA0IPjrp7qSQGZobuWlA96Xx2Gg9C/BZSv6IEbiTIJDCRlIZkOA+hkcoj+qtz4KgpQ4oSxAZAtgLivvH3nVFn/XzmWcjZK2qsCWULry1TUsVnE0ffjJyceA6nIX/a4Gfv6+TcYDJzGlVfFlWZBPphFgPcqoAqgvgHO1AC1nOiO/Aff6KfdYlMajBRP7lCjFwgMpRHUneFGumJiKjCiiieVrkMVBaQmCpJEMTaOiIhVMgiBCLvKcP3X4jNEw3rONHZ2Y5Ef8bAGFhNgdVHz0DHECAArETSVXByb5jm/1nDHaBW/Z+ogyHbPEFjugYAWzb2TpMp3JNyTxGYkShtorE3IraqY6lPAMdoAHDNP5gaZY7/ZNFfKDrgIVzMVwRcZIfGQjG3gkJOBNQRTNGJxQdDKlQWIl8slEsz1quPPbXOB8Q51O3oEYkYA21kusaNdO42VfWxEg8BsUIgjPpuQviJyaBSyAAEFiCwuIKq/kCyRgpoU2EGIr1jyFBjebvO3soTo+UrStCPRQfoAAcy/mAmdLnjNO/+kYD+7Myl2S+7CwS9aLcOBowd5GQBWdTsXWGHSfuJHTigDFGRKQAnLyqLynDKJniQTvSzL5WdLg3TgETCBE2Te3AnEEgn9vIxcPyhqI9CkUGKFJU1TPxD6b5sG2RyayE8/SLsfEVrOtHQONFnjFtvBQGgDmLsFex0a8gyZD8zDbbcH/KArssfdoUEo/qgAwPBEToSfzgRxjhP86EYBtj1yIjAhz/ZJ4BjkQDuvL4A/fNFX0V+gEQkvABtCpCOPZKD+fYAQEZ9LhIDOZ8g7x9kWmqpt8i7DdWuAQaArVPc3P2FMmIm61pnOJ4XUg5KfeyZYp4RSRwi9qU8ToF3InhD8syIdGmIzNaUiMDCSFofFsTASkK0r+ocMoYMAOSztta577GHt72F+oAX5XkiAMAbxnFq0kzBlAtYrmtA5v2C1q85LMiivz0mtQVWRRbwEUJuweU8n9kEw41Fas9g60beuhGGONGwphN9znbYtlnYW1Lqk8i7GYKDus0nmh9C6K0yeThSxSACk4mK+UFZACS/k4QtimIABhDg7K105lY45if6vDPGpyZUsk3X9zA4xl0h6OKxeDdYF7oOezfQGPGDdXHlVnDw+j+6a1a7ZXNUspmskgW53QK6zXbMrsK5b/UJ4FgMAO671es6ZixP9aBQNzvMh8NSB2XRPzVq1Bgpt+gMZcuELV0IlrrnyWhC6qdCrfqJ56yUQJDzEcs/cAHCj5LZ0yYZGJ6yI5ior4Z/XQdTpJc0mhMiVQYfJ/Q/vl+OA6RYgiHFghggMmKFaR6A+l4DP2FHna375Iusa3pR9lue/yTMlL8MjEGHvSDngzt/dvz0hZLnlNmLoxoKJ/PYYqJQ+luhZgJNM34jScSSLjyLW080ZCd6be/Ji59MxAmFVPan6jlBhP45YXOo0q6kqn8xxTOh0cFI1SAiJ4CYTDBEFiMsB5Apxz79sdWxO9HywcUXTCR6D5NO0RBCkDltY5ju3J7VBDi5v/m9LQDQdV+zljRUJ3Ba+xDzL0WD/RJA6gNCUgDzYuO5lvvDYgzwMEgA9fyRPCj7EkDjLDIytYTvgM3oj4UhPKiatxB7MDkHsss3Ufyr2SikGbKrF9JqSbIOjr/8xRevFKowZYnpQIFOaoizHmbgJ12AwEBRxoUgqX2R7oGRbm458Weg2BBUWiXqMLhiUqqQTggVDYpBpCJkiL8bbVIMgEjPuKhuSWzFlHP1FwXpY+CXP7PSmsvNAJHzlg6zc40OtkNnNMhm/+2I4YEyfVCH93k94XRqXRhKbnCY5EOidt4PPQ1aTzQfxYl+ymNHdBoTz2+M/kwG3dlcxzoBrkwSMCX3CpAAK7UHMCkIkFBPAFIYyMtxOQAQOTzhfDp2J1o+e8VzT9bdLoa6Bi/KZC1U0H8MTgsod3kMjRwQklqz05HmhAGK/oejC/vmQOlnaR4EAblyCUNHhpmczJE+ARztMXftVWF0U07zl7lu4vtn1qmQh+8c9I+wL5QoUIrgXgFC1dDKkQCXg2Kz1pBcwgheXJKdUTHi1unw2NOCLwXzHNDEg5vblNl4+DkXwfZNTAQQ9RxYNSClASFExEBS9bHMeZGJkm4eIlQ6OCTl+ksMMLhIIgMnyUmqANzWAAJOjvPTH5vlgBaRm3Z2SMYUt+hwyQ46dTO5uU/Qy7Yh7OVicaYBYNJgqu+WAUZWxcvmp/tVJv3o90hDGu0jJmE51MpB51W4dRM/42L2ikRHeaKffWk1NcERqSdkAiBW5hYISK/cNl31IhGIBjuLmJIBsaF/YFNjkYpIDaIxglBkoBCRcOs0Pn4HHcMT/fwnb9x+cuVwHoAaMYq+ZZ5fKAJtzh/IXQaUZe7g9IIiBCQ/q8IdAZyfMKT8keZD7IuNNIgKOmaw3aJgD5CrbjlsWjr09T4BHNVx+JZbZi74ZwvbnukGvznnJ81+y0KtXBfgAtgpxr9Ygv7sK300t0B0v1A2xZLdEkLyj4xpIHpPGogBCPBTz1qcHIP20MAF+APNzdAkJMwwOcY/+nSRLI1vhNL+WMmZSIhYcRzVovE7NEtgNgZQ2QCd+kb0QO96EopgHClH5rg0AmybYy9/6vLEuNc0a5O5hKZacPa64qdT4/iLP1olXAW8S7M2TQgp6PsTiqb1D5kRtCE2Bg6kQU5we8KKs6g8DWf8RAETdD/YKZOrWCohv/iJDTO3dZ/ocfiJF4+Q7WgIvVPPoEp9yDY3UdrfswmOAkNR/F8eFlcCZISEsiwmv41Ttki7ZkGTP7z2WSMT43hsTvQE/dhLNkccF1k0tsRSmf20Nv5oDR7sDW5xl11iyLxfYvdAvlpPAoI2Gc62hYPkgOD3ztzA2a1/Q60zKj25B8Jz7ql/ev7I7j4BHN0EeHGZq/HF7c88cv5P1BPb3AyA5HLJcXxsjf5lZ5B/C5vZIrFBUm9QDITFPUnl441MxumvoGOdqh4DIMIp0/zKJyy3hQbnpudqqCaVzgR4f+I5sH0TyTY/KGIrgp2kSg4co30y/1ITYEKK0UumfmIEhhDJPgb9sI18Cf2icIwqFVj2QMBTNuGPPWup8UJKWvvg1xV/9mXPoO0nqUqHF+yVWb80/piat9wPwG//JgqQm/2imxgzQ5STji7qmJFHHf6DqQWVmYs5FMc2yYbPcM42+LHn8LE50S8amZ4QwElODbE4PpjzIziZDPuimT56lWdSr0gGhEBWB4AOFWxpHJKvAMjJthNNL3p8dUxO9E+9fMv2zSOoqkpZgx5UyFMseJSnGzDF/ljsB1fCp26Ak3REZOwETNwh4wsBgJOZ0sTAmWW0GZAFtzdi0jIhADIEWuTtd9c/fYCfHWBipQ59Aji6BMCTIuMysX3mgp9Y3PZMqMal4ZZJToJXXPdXkjjLsZ4v9nMyiVTGuuQE3t0lBkkt5LMRghaVCXpKvyUZzpCSKS6/ePkZj6mNR13eRQANP71shhb/Pedx+LyLIy+VEdD5+5nUl5nA29xQ5V7A0N2o/YJuQy56yEYoIE2VnZIcZIsFIOukIj+M/MyL+RkX1Wt7XY44G//3eZfhj72AABiIERmDqf6pNGvAXIfLSX6m1VAHASE2GsF8DyAtGVOii6RVEdQMECFh1GJBhPOTTGnCxMKLLwtPPJ+P9kTvrJ77BEHsdFWbQTf2MK2xRF5P0oN2yRrcRFdyg/y4wPqUOKVJYAIIg40bFG9KeeSV3z/6DDcNXueJftL0C548jSqvF7fsFONlSXrBrYuZIWeK5pBEvGOnFvLxr5n2ACSeD+cfo93s2iXUHgmENA9AFkapt6YBqHniAD/r3vAzy3CqINhL0yd4gK1++7d/+0R+frtvvieZtCCuTJ29tOmiamHvyPIRIJN6Nra66dTYVa8/qYQC0gJdNaL1xsk1nZKCmBmLGc3cb5jZl1iHgwmjQqHNWR/A5hyBiHzZOfXeGbp7P/nmZIDLfX7wcx8HP/cSlXnDpPioejAIEQkW4IKU1p0cYBOkmzwC5d3T+VnceBC1B+1pZNk6LVWZGEQ01CZCgMsuCPuO4N17Mb3Zw72u+D/PeyL96x8ZkR20uGYphEU2dVfNqAxIaKRMmXDbsDffG4Ei+ts2maI76KbL/lmmglH9YaIfDJDFl/iuyYpCZKUBIsBTL+R9h/HufemyaXsbuk/0zupfvWKU0lZfXM3VQW+SO5fVLoP1kVmDuyZOqkAd6xBN4MHOo9RUrqwyh0hknWbpLSXN0GUXjOw7zHfvDes70c+/bOoXX73V/IVSmQHep4xs7IfZsic4o6f4JcoZgyzUYSkWjQTih/zodorccMhYA5SryDm2J7rCcR7PvZ9fOwcXpleNwDC+eev2PgGs85i9/ppDe2YwXYsAgFxNLJ20k6vxkfn7kVcUu5TdYCS0ci3p11uiSNYmagKMieWWFI4tytkFk6kHFf6RdjNZ7a9x3/UVaDWHcxO77OwACN8xgegiDXTcQRvG4JVPgp98ntN3JI6CPVqbgVi6SEQnEjdg8nLQ9oIVMJC3I75b6b5Af2ezaF2QvZ0mnAAiI4PRsQsuu4A3TMCu+2ilzpPrgMjAAACvfj79zEsrquKzILUmVjoT67Mje4Lodf4sI+RsXcyxPpZlYPTrY2YLwc48AjMVhxhlgu53c6EYostjjH4Z/bILYG4Rdt2PazzR+DNXjL76uRUpLg+kwk0RrkMN8WiCb8r6YkaorDFAPakCE0ngJ5YZlXVQ8SKQ5S97q1jPtC+drH667PxqwwTdcEcNuLYT/bJnbPzZH94ipCaoNEspegXKM5OxFOdzdk+50WfX9AT10d9gw0IsltVLDnNN+DT8dbbYyPm1xDVOHIDnP4BXBJgoXjTzyMYNdTU6dcLGWGTmE/bJ7fvoe/cdmQbAotyWy7BenL7vY+Oz3wNkIa7YoFMZ+FohpmuW7ORqQrGhaH5vApIb/CU7kQgbMlNkMggJjI3OEWIJWIcAoG4izBAAua4ZkWWoqKgA4p0P0J9/cezu/cX+MrbeO1c8AV71/TA1geR2djUVaK9Osv3gqimUcoicOB5mRQ0zMAdIzXEQCXzGiMwGR+ULABA4xGX9xOsIbjVU7pO5RfzQV+hT1xJ0NTnuOOVk/IUfpkt3KH5FpJzEmOpU6Qkx3YJE0TokVWrYcAtlaI/+yehRyj0VNEAzpIpnEZh1P4lVp4CZOYRkEJlkK6NSqJLig9pR3XI3vefzePdeGOZEP/lCetVzRs87FVCX80CFOORdMYs2eRPspWMcYKJkaxubgzrdmEiDMWWYQ2IjhSCeNhBfoF3V4msdGCm3cEMGuGsvf+hri9+8dWWYE/24c8d/6oqTd5wxhpFVHJNYpbUYIUIlzGLTKa1Um5O0jiJf0WPKBFmnzlnZjtFWiNzXtQhAzrZLRfhRk4oBSOSVXmAGHrOPftBCfx5OmQFO37R7evuzOhuhPgF0Hgz3/PX/PDJ6no/WRfBGgLGZ703d/7GRsJjiHCZvU6lm05SQicAKDatmMLm8YOKEegmByAWJ2riEEIBJiCGsatEQRJokhIgRipQtMwajfAg3IQAW1H+85f7qypuqb95B0FY9bRiDp+yAVz0Vtp1k61eK5gpdX5Eckj5YB8OifSkAsC1AaZ0u88vY5WvMY5SIkHiKQS2wGKNba2BJEhAgAEPAtOSDFmvifUX7jsCHvkzXfg/nFtujwlMuxJc9HS/dIeJkrnMRfC+BP8jIFRKnDOc938mgHy/+jOAmRmm8HxVgjAgiKcHUbdCpsMV3hpmjlFyIH0h0DMAhZgh9iyR1sKpEp3HDN27Fa3fhtd8DeSuKEz2Oz9mJL3tytW2LKbWJj4+qOIP9VwET0l5Otc5ji+Zo0JxSHkoGA4zCR2phCcyBQ3Q3jsmfg3pcckBNfCgvitWcQS4fmSnuO8If/sritbcuzy1y80RvmKCnXjjxlMdOfv/jJuVEV6pAFU90pc14JTyDxKAwRMquYkIXFRgwb7CSW1xQzzh0DyagoIRvbQtshi49ru0MBkBMvR4xANQ4vq/6wTm4MPcX9oMlYOAtYzdvPeflfQJYc/QHgFvf9Y7l8VMBc7l/96lc8/Xihge+tOHgNYoU20yMUZRrDDpkIlV9waRjg+T9HCD5hqNv8Nnvn4Hf+9QbyvG5mQGC1M1Gf6sFXw3slgcdZIkAAHftp5vvp/llBIAN43DeVjznFJ6eSGrOaDTOEfQCcJiIO8m0XXSbRdE+4z6xSaKZxLK9ECuGg5aJAZzsr7QHzMB1zBYiwA8hMDpprKiZTGm8MLfEd+3BO/fGTIDTk/C4c2HH6bZ9zISV6MsltXpA4syNBtHaO/TdekL73Lo4Znt5aR0MstllnOyKB5XYgACHALFpC9HeTXsb6ewk/4ltbQjCLwfLASw+Y/r2eMT55rvwzr0wvyhR6eKzCRAuOTdavAjsoRteMfondSYQaR8ArpAUkkNAYCbAkGYhLKHL2ymTX9nVZVhVdAjxiWNwfJ0QLCuic3+GYL2Ux88QAeiWu1fmF+GOfSvxaU5NVudtH7n4vLG4YUiAWIkhMVZGM44M40o71yhQFKLHBcSXSRKzxYkCPRTJxW2cSMMxBxArpqhCDuR2d9EGIC5bAEieQExXNYVD9NSD9JyA4279nFubgA10xxnnv2jQNKRPAF0J4Dt//d4wutG5tRTlf/bp6NxdG+//6Eh9SK/BoHIGWUuqtEdWPg6AKWjabidzpEcaCJwzQlOpHNERRA7RYVC7gQCuyU6AgEILgQuWKXO8pVmYZ7aIr/v+Gta1CkQH+ABiJbs6xKQyoJrbKgfMpibAD0RN90x4DkwY2xlG5tjNJA13DFxzVOCPXw9ikBskOgQPyzIHcKN5SP7yLCOLGNSiBI2i/M6vPH5fQC2FhU2RIIA+wF05FEWhUgbKon9jCSxu9mNC75XVGXsaJ8QvUBADg6a/6EkVIMh7JPiP5oCYQcCgpgZHQIsVUiBHJziUzBfA9n7VwMvldzfAAkIKaR/eCltlyDDGNo2itCqzEV4CgEgpQxDgL8gJdrr+AWO+kxbHWDlekRtNc1MH06ZblFpVXVsAcSdAtawXmrEEfzLxLXE3jbcr6QjaRj9URHx2I1+/OeoWyDGfCaN2gSboi360IH8intAVOmnfyA/O07muyi9VYnxQHYXd5z7mmatMxI/fMXLCRn9A0OgPbdEfcmgIljecc+C8n9lw8GtTD1wdkUIDKC1wK4PXzbFsl4TKbhwRDR5Jq6GocAkaJ4GTJD4QQ4CAiFxSUTOXKUom5gzGsREUG51oQ2JCsFo0ySwPGZIjFOt9AonjoYUMC1UdHKUVi+UJRitUKWZAMk6kG39FrhPp+0nAQRwZiImRY4MVzGjRETokKLN7cZL0knu9ko8S11BWzAC4Eqw2DQED2i2aOHzWpenfD5hU29AsXyDTgzMsmEGAMLOXjv1MfEsCpjViVBtIYERkDAJF1QxIAqchC4+KgINcdXYhsq1rMwAy2fRe85uepiCcXO163AgkwpwJE8FAaSEOHZ5NIVKFkStOE3yI5xkZQwAExgABkBADcMRHKHDA6IIMiMBEyIGZMBLwEl9T/6bGUCVe2PYAOIICIANGHF4dvDGQYHrRrDtKvQbrX5WOzTp5R61UkDFAptIIBn95JpiXbIK0RoqmLOIoQ2ApwbpYeeoHquccrp4acBxb3MmxJCABAMAynArY6mXedwCD6GFw6DN/f9/esRz8yRJ662QYAEcWd2+6/6PjS7vFxi/hAtE0FSBxHVP9KNeZ9AQsNqhWDijmg05xRHZF5OZITbKYgtv6CASpmAKb2ZQMFVyHAQxQOZ9109sno3FCKp3QMBLRaQGO1r6Jgh4ryua7xYBuS00dONg7Y0E21pZaOHBESGyHJ4LHGGKR6xxB3KInktu6CgJbV2zkKzMUw8pEJRTiJkuFWvEn/MdAPEJzhpFSjfN9QDcDTLW/sczttQeHi5moGWZiZexmATWEiIcHhfgEMYnIT0j+8CBYShozuJomKXkmYF/rfKRIsAWx6tWuUFslTrOSmKTSnMtCsAJ7XjNVJzuBkhqD9HPKgJdPOMRZf40Jycwl36SiDmlBEzI+NugeuW2iWStgjtNiNErW7ALhSGRhkFQdcvWDDG+d8IanJ6cSHsHbPGVTgdQKQCr/rWhwEL80FvqLlqpT94394CKd2oL0Aw8Ggs7aenBi85NPzCZg5ERNTFDPzwGMtbn+JuQvr9nl05XxUw+c+y+m939hw8GvVmLLoIiwRvkkFu9PHGLuFYfFPEeyiLa9sQ8gyPiduipEzHHOzCI/IvcsJlFy12Rg2eIkIaIEnMRwwDYBQKM1KWGBMGHcwv2zGp99kW2RThlOUi8xA6HMb1VdVWWYCaiWzipoc0AYONEIMdunAsBKUoBw9sU1iRFJ7TnlNVfCxvIc6pweI7vfrpoDBsKgfrXZ6bMKrNEQQCr20z2fPX0Jl0kxzlwBMA45YqcDJMNTUmoAiVZymr7K/ldErVgZKJL0ctJ8rEjEjT32Aywb2ci6ig1O+keCYmxYGI3LHyjub7DmeukGUzNsWrkIxKiWZwhVfD1xNE4cuwFgJiDmEJvLkBJtFEuICTRRy1K2kfFbgJTRJVPLRYOu845Ta2Rdv4wzjMDpqtcdFMgku9J9Kh158LA+Frew0j21MzYecIhfIaCQI4cAwAEnD48+5eDYc8Fjwpz/akzXlH8rZLS0MnvCNgEjJ2L5jwDM8w8cgPGTsze0A/wpPo2hb2brc+c3PeGk3f8wvnCHEw7SRwaLF5hgQauUOLs52RsSsRHdgUnLzwAp/ESMlQCj8Ag4tFHAk3zEZL86Ww+SSI1x9slqu6VxAQExMFZkvwCT0LEmttTmimZAjOwWVmOGkg3ZECM1otxL6vWOxqNmxAqcPzrK/as3HCZ/JcTgNBTMklWVSuOwQmEfX927RVNQBhc6XSN2b5YLoXVEz9jdeJh4QdiwdjD5l0CJ1Rfbthj0rLaN80P5cRIknxBCcD1UDF7MjmaVodIqPCwOPdpqWk+WIB0jd4qkROwQ2OAUPRugGlRuEopmS6c7XbEgZzf1D8Rg+S1mLn1qEFT9IhYLgaSNIQDGCPCx2GDpQLRiCICYgTCW3ISRQZh36/aN1O8pJSu+1QaLedHGlPrJTx0cX4MjUScCsM6hIVE5nBiUlQuIUEPKCjF/AJhB9MLIufsmXr6CJzVRHvdpC/jjek+Ynz28gZ01MfYJYIhMsMzjObwDq31aNgf16Mn7z/qJqYP/NL3/ixXP52+92/sXsJgtbsZhAVcZwGwCZGCrppxI5Aod5SzDhDwF2zwDyDKRc5J3u8nMabZn4u5JXSJtuioVBABDWmdmdWnxkD9biGXrPpJ5ctxPiE0Kc2aaAhXKNDSiDYEQY64kLZfjl5kU4iJUGNwQGLLZu1Md1sKPVY1CpoGQOO6625G47VjYP6jAa9LqwqyI47adABsVsqMGUZp8cMRuCCCoKpBKhgMHRHI1RQyTyJEcH6QxQrtaYtAkh/ykHRRKfK20c8ei12/BlJIYIfqpDBg70c6mwP2xQzJ5QlYGPYpndVACMDEEkmGXRd6ATAEDsAKkZo4ZTxcr1UuQ+0TNjKAfVihpwoyKkraucxpQoRQUnl46X9p9yjmStw+Z3YA2tenx3NmSA0YelDP5IgAOyc89uxhYGxH2Q7IAEwfHn31k/GmeMJDH/DzuIxdNgPUAK2E8Kcv2HcAw5T8A1LxW8KelGwCA2c1PnzvpiSff/5HJ2ZudjCjnm6Kc2sk0HkmoudEbYnedcTc1fJraBLryRE2oKJlHq5O8AokoklNpGOUprknPQtfiDeG3MtjtnMrgLLFuLAgLPFqYl6rBORgNCvUOj4W3LAChkaIwvhay+BYbhWBIjPxUbI88JssG0WseA4IqQrtog3QjdSCmJl9QKHSKLYyNW420N7erCMt73jYGbCobi76gknBBwzBzZvKKzgECCQK7Pk73KmrlFMc1QZSuJAJeEOyJsCv+DapQI2cWMles8Unn8KbZ55ewI68njrFi1gUmk6tD1OE7I8SszZLcdY85pUFMlz+J6HYs7XXknrWWMUvLxggY0VRODUWyBVs7Y7KJkDyHYhaW9wkDQKWGCsRprOxadHl+pAG9jiKLiuQETreErOlAEu2Se1C95OxqTCeYHVAc5kYe+8CGVwYcbw51W2NH/qn7GiIwL4ex7DsnUiI4YVlASLN7YPKMIcAfKMCfZnPANHngjNfOz9yyZfeHkRccQSK3k0XMxOVFdZLYJoSKWjq5EFQOvfKQZSgcH0fZ5YGQ/TnIF1jIhBfcnruS99HPsdFE/NVnRsd+usCiTbBpmOnT0lLX5VtUv3UdSaT/jbBTiBONCjHtkoLGuhAi7YVMFTFGfykupXZMaU3qWpXMUAiZgRihshYhz3CM6S3hcnWWjIfOGc4LuWgbuAGgEZlsoA+aoRG9MqgU5LL3rTStENL8SIEFedGBZNLjRAeEUkWufHTM3GyFC4wzZRo+jCnRJyI6RMVktrlPBOVIsStygpf6VkeOTQzOQd8sBwkJp0evFAeDa+pG+zhdOjpLIHfbJWpuYlsYhKUGfoYmZgPamBUAEkYT0tgWTbAzqQKD8tzcRgIlr3k0sX65T0JiiwVNJ2i/BwKOPzD1ivmxx3reblHuY+tXIW8oExAEE+F2gOdlTcAJkwNGTsjyHwFg/J5Pjxz+7tzZV/DYSZ3gz9CTYQBYnL7o/qkdmx747PTBf8p6BXZCIomoiRBUXYA9imLjH4R0HYMCtiwFMpLVjVZTasyRphqt/naXvxcqKlxG0MS/XKeAXusIlX5Hzi05IFTsx4RuyME2pksTYfnAbdQIV1LjAmLggLpdS2hVn8g5si4mcVzG8KvzcbCIAXXZUpguyABVnJUqkIUGlCTxGqdhpou9lp0JbIErYG766Ge8nKK/esCz0ncdAhCnOwjOAMrEwiRHx/4mKLoPGBiwQgghQkQYoksbWEooNR90jznB9JgUHTBtu9nZBWTyUTJdJizvI/rruaXBlRX44CpSNK1SJOQQVFLDoYckwotxcTiFvehFL3kEvJAWK0mZ09WZ1LlMZNEYPYx+kxdisuJKMR/dmTRhtziBqlAmB0GDPmZBW5C+hNUFxwiAzPMHGJAPjz/t0IbnMY1DSQEpIB4ccho8xru31FdOwO0AP9lsD3oaaJP9KWSFxas/8MDH/zQGpoXTnrl46jOLta805c/K/1V2hmPhMDZ3+5Y9HxxZORjRZ51Icer9IeldCuUhsFWsLDAO695YzQLA6jItgOx6oW0IE4u2bLIOYuPpZwspiUSdYBxzdFSFnESoFwOPJHoBYCvysbWmxGqXRzXEUgIB6XIaSRhPyQn0vpcN5jgBV7tFDkqI1+VQBAgUKSKCwwZhwaS060Q9QSbU6OpBfUVAAgiYuh+reJMBW4lY6YIIloadeudj/l23oyU3ssuS6vGkiLcIfSoXEp2mjoBf5t5l+iBsAwaLk5Cp62FSMLVNDtXWUxte4yq7PWhGqDQjKkWAG2Q28IIQeVWvekes8x2Rr4iWt2qayMQcUPWuHFPYS0CkoRFLkkoqpUma0aU0UEWLjPFs2q5gIJFwxeJlgNZeuLucjRuagY3JHkH9OtDRQBMgKZ+ujJy8f+MrFsfO82zOfHmvIH9mBg8eTLB5wcn1504On49Pks7+dZy8EIoqAPsOoCz/FRaZO2wt3sTuL40d+u7c2S8LG7Z3jYJx1cmwe9+XNuzYfe7PbTzwlU0HPpNRb9jP6DSVUy4XbqUyCzUHgl5ZVgWxsbLJMd1kYsoiMtdQzPUD3yxMoIGuSdaaEdI6PJhaMjAgcVIfRUcD5RReHCfKJuFKFmRf6yjUJL+QtAGJSHeIVFeMxW4FGKzhj9UxsgpvQExGxu2xup6Eeq3aPpbI2UMj8jbocDlZdTZln23SwM00kCM/irsJq4s5Ywdo62PTdo7KQfLOEGJUUdMynoNtB8pJBs/60JYHIa1hFFLZKFNTAOvgIqBEXmtWWb+VjX7B8KrkYVcYHCW00jgO2XQcTekGOQBaRY2IcVocp8dRF0OEFVQyNWGLuVBoOpWY+ltV9VCwDTMNO05RWftFebDuXLLQHQwwshNHxWxLq0nKMpSbCdkmNB7a+LwjG57GNAHZbI8bTYCHfEw5oAUImqzv2Lzyj2OwW67PADB/O0xeeAI2ASfUENiWY3n59hs8faWa37vxu+9c2vaUhVOfxdXEeibD+adMk4e3vmB++nFb93xwbOm+XCmMhbrtSEGIvmfEFBsDJEqOcYZk+CcboYaqOJqBcU4xlcYeqUYCD+BLv0w2PUDlR6PqEyubXJ8uu4mdA/hz2xPtoMEg0aCOgbKMaS29502b3r2xWynYXDZtYZreRjoDpNxSUhw7qJuAadqzkxpOCsAsowJhYTreJ+sutfBXZdRX7n85VlPS9LeOQOmOWRpwSwnMiTiUULJEtg8omqRWbIoBLbGuVQClmSu6FQ0dSiORUxU3oW4jD5FtQUnDaXMgwuzKzMiRuamRm14pVUFbGWQ3E64wCaamMQsSps25jJKPbt7ORvUxmNGp8WpT6sfCbBbeTvGfC1tvVvgLIcgTzO5sTiMXpw/KAuTG1JHaX7kSlsZOP3DyDy2NntrC3m8d6rZ+7B5EvHDyyuc21V+FlB4YAHjhZuQXG/fjxJkCj5yA5T8A1ItzNnG1t2t839dHj9w6d9ZLV6bOGbAHMORkGACXx0+//+yfP2n/ZzYe/HIF8+nS9eOf1FaHVBsLrEFJRZNtkVjJCnIjkxOdJ4c6oFtTcXMhMkUVFGdK9KMAAmdc4ficCqPacyZbdwCj62Hwk4+MlpMqHBKQhXXT3/FTY4zVotswcUDGwBg1gtF89DDysiO8r/JKmNm52UpYGjrIApFn5JGyVFCpKRGCR/NmKG7b1ugPOhO2nJFUoKU9szGysYHReEGsvVHkzIgpAoacWIX6fTYqPuo+IDuVAifSFz+t0lqKifXHc2rgDgZj3EKCyCAP8UnojHTDC5xvMftLOqJ0RhOzqUhcrwOzkeaalX+T6m4ISgm1RXn0EIyj6DorJbSXIyQlnR/l7ZADzxwLLJiYiHsAJpU9cC2747TJ0g/JrnpsdgJNzGx82uGNzwd/9WTxHnOvaW72BcVgeKK+45TlD47woYw5FZNhPQduuH7i0IFOPBooMzAvH9ztm3Hr4qqlQxt3vXdpy8650y/naiKP774fwM5Pc+wNAQ5vfeHspsu27vm7ifnb2FMt0gKlULbZLKQZEl2C2UP4OjUV7iSzb2+5SE1KlsQsbHl3mowTZDwgZ3OmhubogQuP/5hflrEj/AQ4bcRwwkmQMSASBgwZi1IWmtzsVIEy270RZe0QojhF1pwxECGzeAgDiKutLwJle1ka/BA14MHJmCJnPmwaTNm0EDjLZ57hB6nPc2p4ae+N2d/qFllsqmenGrNtDkjehUqJ1Y4Ps9khYracDLoqgalfyv1OvHUJJSKM9jkQNIf5cKSNhYnysQ2ygnNiNNZ8HbVDdTZqJtsqdIsMEIcN8oTiTECRGXAtkV3ENrFIkCr73T65xkTZH0FWGhnNudNOdLBrXbbhEoRlraZv18Ss0ax+nI2PVpMceGlyx4GtP7wyclI+MW72AKsDQfrzC6csfGhDuDnlaxsTxEps8f4KTJn8BGoCRk6Y8r9ovBpSDe6L4/uvHz30vdmzX7ay6bGD0R4cuCVgyaMe3bLnzH85ffDLJ+//NMnKWB6UtRL33DDxFyIEWftBlc6ynyNU1UXbW0IsT31J2TAzak4rBfLHmCA3akpAEGPpxKRmWbqLoPUv5uVLIaLgghpF5yshzqDREkH9LiUByW4Ap6luRaBzEglwJK+HHDUWswGNUcztzY07AtL7J8ED8mbOKhxmuqZQAKzuzTVH+GxsEFOAGZnFHE+qBeazHTtJgrg6CEAMddr/ld+VrlxD1gnQ6Si4gaViLLFdJHOiFtk0ZkgOZeQidN7XFmpogOWrD071GslsbKWKBzk5SZwq2DRDVE+yJtH/9sS11K+EJLQOsk2WWMn6JEll9iU5KX1OKXIyPkvqu9r2YXL99UxcdNxfY395owgACBBGJo6c9PzZTU8vyCdrY/fnawGTKzdvnf8Q4YLn2GURCAB4yemQn0BNwAlFA9WlPsCVhVmXA1puZ6oXNt7+98snfd/cGZeHsZPXMRluNgczm585t+lJW3Z/YGr2piw5QVYjo78LEbg2FU82B11IssImXuBONQs7HP1OgLMOzm2HASnqSRJkmU3HvnrPoyA/7I2xmJ1aIxU4SbEKa0LXmGaVSAABAzFZHtCNeSlg7Tmkl02RDIO5N5ftzDm8Rye+BBRU+sEzOhh1S1NeBXHiwbKTO6aMhwctyxfQyHZo2H9CfvxCOCRUQSMxIYS4JMcR8wrRUjEkqmYCo+PzYjYl+pS0tAOw3YjAWJhaxYWA5LqsxIPk0Wz0Kp8R3cWkiUglTpSTCmZ4qZ2U8H/kCamyDglWpj5xyMBxCS69+UHKBEBviaoinaBStyhLxTZRY50PmXyWMoHlMg4AxBiQSfKJ8HSr2J1QXseElrANORzFsDB10YFtP8I00YB1iqBeNgFtQBAAQxUOnjL34YlwO6e9D4baaY5ZSRJqkwdwCGrfAeSUqtQOuA7WTfQc5Bdptke+M/rdO+dPfc7CKd+/KtqzenMAGKrJfWf8xOzMjdv2fIDq+RQs2FbAJPIlvQ+hgzhQMjiNArkPXH2snxHneKPVmH4HlmyBwArPYlKh9pepsM38UpHzC9yDP5DDXGacK4qStYMnDHfF5MiR1vQNvVH6UZSmR84gWlUVcr/AECRbceOUKOLQggiylVByzB+0ijbKNQN1lP/sVkzYjQ1tOpjQe0oEoThNVlUybXgqxAAmm6Fzf4AAAdOLEBKAW/NLpLK00EZoI2sEtzSACaZCYxJoBje9s3zlLasjnJWVcorU4geTwWHa8EJkcbgw2iTrTIshmmsETmKC8r4zx0BPYCxZqFxqx7zLjzrSstwQ97BSXUQMtRpx1wwiS83y39r5t2Ck2aYypUXn0SGAwBhGxg9u/5HF6ccVDWJe+GdAUEGQL6fDgBsXv3Ly0ueIF7If59yi0rCN0HDCOzHUgUaOd9Wfj38jy+vQnjLutyQDbafrxan7PjV++LtHznpFEPG4jJS2xuYAAWB++pJ7Npx/0gNXbTr0pcxmukZFXNjIcW7ORsAsPEUStRzZWmKJFC4aG+ibSxs6pRjfNqBBh7EMJ9c2IWSLooL7U44OhzwUQkkbt30lS3ekvbx61iQxTb/Lpsg3gwRrzRgBff3l2EzedgMLZM45dyOpYINBDSaYwZC9FtTlr6Qa5gjXKforD8dwYQ8l2aary+3p6zFaBcHtIbVyJDYCFmmTTlw+n7K4QKlpAzU5Fu3m5IbAHiVSkQ0CZ/CbHpDaGif8GSBV/WlzLgnioxH7s70BTnA6EtecuM+MNgjjIOwGJD/YoBJzs040AWLWlrppd/x7gUUzQ+l0DLG2QnRcIP8AuagTURtz1r5UJLObn35k6wu4mhwg49MUdYNurbfRlfs3z105Ud9m6xeI0UPV7ZYSIAcucCZ7w1v964/HcVwXwTy0l/AfWLz6gw984n+DCz7JOylRidEua1ufnTv1uXOnPrdB/EdofIqDvpsqsPG5Xafsfv/I8oF0E4r/SWRiJIjXwiwTIgfM/VcSGzP6WKWfSiIqOsjVuCNENzJZLLM0c2xwkvqXHZ00+mxgSGWyWSYhl6RZzBNEBYlhmblpE0SHMAqO2uYX8lmKOG+hkEnvZlM1fVOiA3hIaH5yEQZMRHfrVEhXENgpmiYYTBAsmloZOw8B65HtYWQ7AKyM72Caslu4HtkelPmX2CrLe2h5txnLYJgdWbwdgGl5Ny3tBYRq/jYKs/ZeGfWLDcwlMREzFWnwuLJf0BXxCcjVTchlLwInf4A24EGfsWJaQssHiG66LTeULybcmEQRIg4ehEzPP6XWXE45rcAHTN2tHwBAY6dXZZnTboxd7+h00KFc8lK3YzSCXMqJ5j0A7gr3+v7IAFCPbT50+o8uTZ2Xybq3Off6zNHu7KU/dNL8Z0+a/2y6Jsk9UgSvRVAoXQTxOZ79czj1VONzZEthj8YOoKH9UHZhjI3d+QawmwPoU7s/P37kliNn/VA9ceraJsPtqBEubrjgvnN+ZePBL578wKfSGm9iyDk9UVDnk2DlFpv/kwmuyGq6BaskfutgFUE/MuFQ53ObmNdYyJVl0CJmNh1YFmd5DYJpZdf/FnZSuqQgLCQKpcN10DaNozBQpqKKSZxZJLkor7LleeoSGhJ6sU82p0GN/gZIEa6Mnr9SbavHz6+rbWH01OWJnY1xT15qtQ+VIIxuD6Pb/XeXNz4dcsU5ABiZvY6W99DSnmrhNlraQwu73FuFCbFn580uZWuaXiTlWKwg6OOCRQTyqVL3o6PkmYM4ZGPMGdil6GUOtmkuyYLJxaBvDavufQNKPk7KEC4us+oGGRRCIdY50WXbSbFatjZ56rwBCk4jXHoCBuX+Rvd1DoiVqjaZpzTngxwMIuYTZfYw7WvER8xsf8HslmfEwn/4oW7RBvhPxpdu3zz7j2P1fez528Ez6NwP1XpOSR+3dACm8ibgBBgFnzB7AMk1CVf23JGEfLGRMJpTHra7CkYX9mz57tvnt33/7PbncTXZwpdo/7SQ6nVTgZHJQ6e8ZG760m33/9+xxXsAvP0GKtMT/ABJIUrdQeQEhkrQV6J24yUpw8YmCMbcjig/YcphDQkjG0i2zM+T2kHOPQqcQlSySEQNECAtC/umBTgqPTSeOgfXDpHzavfPhxHdkJqJoRZomM0OxRQyTAfSFQorY+evjOxYGd+xMrFzZez8VSN7y/WGwzyuZVCFCCtTO4u/WM3vqmavG1m4beTI9bi0B0xdUytA2erL0HOVwZdgymiyfyAzdHHDdGW/9liYBp8xxDSEbdCzTq0VNc0h+XElMbMzLA7gRa44KawROFUmXaoCYFAzAHbK5q7iCGmAhA0CnD4h8pie7AmKWL8O6T1bwUu9+sGP3g7Lk2ccPvNHVyZPYwfylDCPA4JWnQZjWDhp7rOb5r4CBOXaJvgk66lHkBlQhPxWPGFGwccPAsrFfyApquDBP/t/526/3omAsapd6g1BaWNQAUIy+1yhDIxuPnTWK5enzhsI/kDhOD9YUOjkfVduOvBFqufdxFRKfdkQAnYybd4S0dbQjbDDJieZPO5E8R2wSSMj3b9N0qGJLcIqI8ZeHgzbNEet98wgaeGsqi6Qu4gR4zQ4rf9UymKSa1i1ASiR6pXHiWYermyfxFPX9ohF1Ua4HiEzTI72tMBLE49fHtu5PLFzZWwH0zRCd/9WkLzScH6YR8LgR+Kqf7GeqeZvG5m5vpq9buTI9Rp8UsEfq9oEnHMxAcFEs/UzopBmQW76TcDe2tN2RBw/KrVQ+nNBr11LDSgkHLbKNhfQZk4yseluzdYzxDJMVdNjU4HaiDjD7Yz+BemaZDYATHXIRfQugULp0iWw6ySt3wAghmp8btuzZk97oTM2beI5rdo+GRDkf3B88bYthz84Uh907zq7e0rAVVcIIpB8zEmaFHH6sXT2r6Zh2ImBAh2nBODxH6HoBivnD77j383ddkMkUTjFECcPJfRw9wEZBQUAlTnCsLDlCYdPv8LUI9riO2SbRe0+wyl5jCwf2Hrf+yZmdkncJDOhUIKdatunGYble+Sy5Mww2wwHV0wYwZM6PWAC5mNnO0gmdKVPzPudZuUnZ49PAFRuWJ/cY9gzZzScC1NehGIgZGJbSa3BO+0kLRvZHouzFFOfw1TsL41fujy+c3l85/LE44uYi0ME6/yRPChbDEgAg3NA9yPjm1TNXDdy5LqRmetHjlzvFrBNWDRNw5NMsqlhcCFnrcWy/RJIwBh77o+F/iRynjjJWdEapTj89q3X+vSGHMG+zCVSmm1cOyIr+/WLtHGetQG5F55QgBLRSyUfUClACTbEJGmuS8pLm3YcPudV9fhmaA/lpXNvIeOWPzzSURa2HPj7DYs3y98icQxmGfiHdOlQ4JDlA40KKf/h9EV09q+md5so3Zjt8MajAQLyK3N6ES3vuzdna2HJBvLRjB0fJmPUMABOHvzm+OFbDp31w4ubLlp1DwA7V4hTPb4yumX3Ob+wcf/nT37gH2l5XiopEeJF5oAt2ILJ4Wq4wxxlBEfpszsieKw8/52Mfjog9yrrTVtxYaabS044zfSE4uesGsznvByyGUJSwvBvuYp5CsucS/JPykZR1EinDY4TichLY49fnpC4v55raV3YzoP3g/X0znp6ZyQAVjPXj8zEZHCD2+DTnsD3aonwwwbyyGyA81SEjejvd2VtFJTqX075wLTSgpvPa02IIZ4lR/xyM15GztBHVuWj3AwZCUEl5CDpmCBk65SYKNLMoiNr49/gSqDgxIPYRQHmQJOzZ7xwfvuzcgCnNGcp9PqzVbcSCMLJ+Zu2HPgg8XxuGqhGNL7eBzND5aQ6XtYFnE9kThQU6Lh2AG34DwDv+d3XrCzNemlfNDNdKHtHR7fTXgGBCDPnDYTFTY87cvoV9djmLnhnrc0Bhfmt975vw8x1mX9p0gtr2Vpwf4rzyZiDYhxU4KqhPEmBesQSg9NWkadBnMAE5OwvFsgPqP6z16KwGlSn1JKIUDuexLDkyHvRagiySh9yEF+mxM6NXbmBS2OXLo/tXJq8dHl855DYzvBNQOcoeL1NAA7x3ABKAK9AikeOXD8yc8PI4RtHjtyQyJOMWfRis9IE7wER4SCjR7EJbRZa0OylKlSZLNNGRVcq5bCP6VWp2qeLbFh4KaVni27sb20fUMaAyjWHOOlUQVp8yW/KdE2malr9NggAYXHzxUd2vDqMTObyze14TgsQ1GgCquWDW/b//fjSbfmNw4nzlp5S7ao8TjQ/Mw+1KhUZcEP1uD8BhhMKBRo5btE/V39ztX3bO8HQAp6wZ9flV3YjqU0evnl87vYj218wt/UZRz8ZBoRQbdh79s9MHrn+lHvfQyvzJvdr5zZ2AyZhCwUrsNzbQjcm8lUL56WSjAHQ7rSQd/TpCnXbrdjsngrjXFegYa5ZhJzUvtKGVP477dkGteiDXGYO3AYvACAvje1cnrg0gjzZ/NvljmNQkg//o2scBR/lc1vZeOnKxkvhDACAkSM3jBy5fuTwjSMzN7q3s4gIRjDTpTn2hJ9G2sil/3MpUAeBsGcrWzVm/HxluaIpHuptEnRZN7UFubIgU6nGF2yHXo0EIsxP5qaKmXWEoaNmOUDoMl4kyk0eecyrl7ZcDMXM1kr/pvpyk/SfNwFTh7+y6dCnKSwYl9SFfH9LcltqZ5ES8VNi1YZxt/YJxAU6Hh1A5wBA3pQ9v/ualcUZV7+LiCua6xboV9KCbGasjuS1FWX1MD5gaXrHwTN/tB4/efjJsHfhbX6X6oWT93184wOfU4EEwMokSggRmGvvbp3W2fOc0lotJudHFi/VVDKw6yfIlfaY/zY/9U0q6pAGaH5EDAjkFgiMiUmqmI9Oike5mzI0jogBccYycoqeS6OXLk9c0gz6xcdrbgIeglHwsWwCeMBLrg7fMHLkhpHDN40cuVGmtYmb635ZnK2ywXV5AjCgT+UTuADrGd1eBZgTsksemJBD3Xo3tEeXZF04zkIbu5mvJzi7lXfitDkOBujn3tG+XfaXrhbO82c+e/asy3lkMsf0G0PdAvzPuwD/gyOL95/0wMcmlm5vjOKcKm1MdsEB/TbBiVZIfgmCZPdaSkOarB73p5l6nSlm03EbAxzXBJDvf9k1dN9vvoLrFVEUsfqb4tRXr01UL6XIHyfKdlQxWSgJ4YQoSbEgHNn+wiOnvtCbsBzNZBgAx2e/u/Xu94ys7IegagLq1+Tp9sy1spmCm776/Sz2JaB4A+gD2K8E29dtQuVt+QxQajiupvDpXzRxMjtGp60oWQ7TVpAjIOnDgqBDARKDCAXeWZrYuTR+yfL4pThcWG+P7MOjQG0/ONQoeOgB71pHwY3v8jCPrA7fMHL4ppHDN44cuhGcjJpsgds+OfuKCkvpf7XGTdtzTaEkVqIRpqVcN5vxooG6C+abD9/No/tBJ5mVSrRsOoV+FzNNUD1GmhJDuobric0zF752+eTzYaBpVzcQVE6DAWD6gU9vPPiZtGOv6v5OQcvAVSVEyU0XzLBSTq6ZILlECQhQTVQX/Wlma30CoEDHLwE0BwCaGu9+80vJLEKwCPdu513N9CA5otjKY6SWJ1EVdVtNSr7Lk6cfPPtVyxNn4FHsDPvmgOr5jfs/e9Luj0XFMOfs6NV+QnLP8NcZZwkg0W8gL+3tYQQOZnHbj1bcecJyRgOFch8Y83vMHEt8tCJdLEorTOzu25BgX+SlsUuXpNK/tAh5OESwfnCbgGEfuUoGWkMTMCABDJ3zRg7dOHLkpurQTSOHbhQBCea0hufhBXZKuoxpU5lTPnBszmLtiVIpZviq905glwysuHcWw4VMS8kIsq0wX+2ix9nd9QyN65wAAOfOu3z+rOdY4V8A+MUyb8H6aR0FjM3t2rTvY6NL96erlKDRdmSWkwlDQjC/VZadL06qRAZI6U1UXfwXmVT7ozEBrIb/APPdv/4yosw5FQmiH6B+NfnfivUIZRJpiGhzYz2pyaPDCwXNbnvm4e2XJ5exAvxZe3MwOn/PKXf/layMWTudGYHmw17dGk+VOOd3hRdBA+OGBgfg6EAbQ5psZ7WVr/rtYcoWxUaRBV7NntPMnUH95XMyCoal8Ust7kN32YvHNKwfz1HwEA3KmpqA1V8yumRw6KaRQzeNHLwJmviPnxgH5XB5qU7mgk5WwkeMpZ4POzcFLjhpbucg1j12oXp9ZiEUOXFA60rBUyddE5CMDKSgWZk+c+Zxr62nz+zAc9bG7gdmqBc2PvDpqYNfyik6ykZNTYAroVDZEcDuzmJpC8hdYG70biVgdclfZgngBCCDHu8E0MB/IPDdb34ZkSNEMmBlkLWabKBryxBNHK1IACmF5IEcRHYYCXFl7OQDZ71mcWrHWsEfJ/ZVNgcn7fnopn2fpTDrxhOG9jirCnJfLCQqfAeQp6ScnJC3COAhGkzQUEbH5CwlECTWECWRdRnnBkVsY12TTI5xcfzipYlLl8YvWRq/dIiKmIfHdoYPiEOhQGtpAnCIELymR66SAIqXvMacVx28aUT+3ezmpY7aHxdguVAGNMzHyasVlXumw+FH05yt+6YcQN6DKGGbjBlJIZ8FZL0AabhnxyOIz3R0w8I5z54//yUtGH4D9Wk0Af4/6QfHZneddN8HquUDbkim7zB56D9VOVYhJcIPp/uLjQjHwfBYjkw5kA6muvgvE1R7YowBjl8C6BgA1Pvvv+8Pf5oqtLpWAiaiSb+5+bBSBjTeY7LSwvQVH8u9YIlD4ea2POXAGS9P6hFHNxkGxJGlB7be9a6J2e9iy82PmT1AMTvC4LpgdrdHW9tIhb6bx/0hY+P4jhuLaYHhSM5bg5IduizrMi+OxzL/kqWJS4cIc02axInXBByfUfBRNQGtj9RkcPPIgZssprPn+WCufuoXRCw7h0KxDvKP3QNavuuqe8so6ODNlne56CZ9HSOX/fLmC2Yv/fEwuWUQntMCBOUzYP/NeuGkez4wYQRc3/4a+YJcX2JgFNoMwM+6tNiP/B/KxgCcX2zVpX+Zy3Md/zHAcUoA3QOAhas/uO8jb0sJwGZbZBbhnsGPpNccpp+Iw+KGITU2yuXkwceIGKrJ/We/Zn7TJUc/GbbmYOPez5y056PVyuwg3TnPybGRQFS5goacMhTRvClhZ+W/li3Fj/iGNwX9fEScEgksxUp/ogz6aw+IR90EnMij4Ie+Ceh+ZHXgppEDN48cvLnaf5Pj5ruqPLNO83W94v6kS8h++5c9KJTLayM2rNZ814sZTchJH5ZZAZ1Lzejk/Pe9ZPG855bz3EHEnlWmweOHbtx07/tpZSFNF8oC384sOvwHPLyTgJ3UXqsURFq8z/lCAABM578Zpx6b42DHOQEc903g8uLA1uudoaxZfBdQXHTcYn4igidOzjMTshVC5/wpt79rbtMlB894ZRjf3ChYcIhPM5dDADyy7YWzW5+x9c53bjj0rVxrip2eLdhGsVLxcn87yE1oGcq3JTXOTnsZOadiczZGzm5Rd2MTA+DixCVLExfHoI/r5eAP+6ij27wd6qfXsljABf/+qFn/a6N3D/HoVbcl6s2Pq7c8bjFyT/bfXB24udp/80hMBqFVZhG9qqDOD9gxUBtVf7xYAybl/TSE8Kr9nJl7e3IwQ6bi7WWAiZe2Xzr3hNeF0Um7kgvDdswzQLYD0PIlpKX9J93xgbG5XQ2Pv7RjYYITKmrlnm1w5AgvasLctqvf1DlmAMbFO2DqsVlwO97bAA9tAhiwAlZMlsrLullqutPm5AQSGS7/o2x4RvNvsXPrBNxw+IbJ2dsOnfrimW3Pbnh7lvG9rQTFvITFUG3Yu+PnJw9+85S7/5KW56FtgyrbrhRantP8SVuTuVt9FtzZOaSjsSYaTG3OSjMH1C5OXro0cfHS5CVLk5euIzyV32kJT03LvkG/qD3MHUWU57KggHVF6Kx6wfU/t5Z3Y/XsuMZ3gwHqLRfVWy6CCwAQqv03Vw/EZHBLuTCcUfsjpo9ZNIfWx/tLqJgKmOAE5/ehSSjnK8XabYSxibknvn75tJ0dMs6tn5UfFz+4Yc/VU/d/iuoFhUzNqRFLMpJPDP4Wy8oNxbVCk/fEbovb9feA2TZrUxPiOB3HqQNoSgAV++WcV7gJIwzO/hXKYZSX6KAil+S3UVYIo38yCIAr85vv+fCGwzc8cPaP1WNbBsf3An/pag7mT77sno2PPen+j2za86l87NaMiehcD90ljbnbUUoJTrW/WRv7K9W4GXr9LU5curThkqWJS5Y2XHqsSvKH9AePaWV9oryoB+3dkGQQYaKYDB64ZeSBW+QSCma8whnonyzMIJ8oaNxPLgVWLGNJ7khQOicHOsCiQ108/3kLF10RRif9iIQbMj7aBORO7lju5zLiyOy903f/w9jMLnULcvA9YDaWSwvYIb3MEo7kvH2BvMbHRnnn7VfTTOZYXtgPbwiohIPSgjtk+t+QaZB1YZ/cqKZtMKU/nubIDNAUznVMt4mZW8+86fcPnfoDh07/gY74PkxzkD4NI1MHzvrx+ZOetPX2vxhZ2uficp4Mkkuqm9H5XYHMzhcz5+uiGip1MhCAFycvWdpw6eLkJcsbLl1PnXtU4alsjI9JsM4E2If6wYZGU1sffwyDtVfK6axo1/JutP/ZtTy3eutF9VZNBvtuqvZ/Z2TvLdUDN6uogy0NaHwPuRdbcLUwgCk9OOEHvyqcX97NU8AQprbMPfkNK9seM9i4sUPXAVrd26fu/tTUfZ9M7UXpWWnubpzW40FXr0u8ND754FS/IGnl+vdEupxkFqaPydugLtmbR1kCyGHr9Bb51cHiwQCeNtV+X3UllbxQbgcK0CPuJ91/5eThGx4453XLk2c4iki73VjHd32uwMWNj73v4t/atPtTm+77YF5oOA+mdFPlqj6+VUoWK8FsB3Ib8PQ7JehP5ZX+ALB7XZX1Kr9j7aHzGEsDtRJSji4DrQJ8rf3dWHN2XO0HOrOjnxmcclG97aLlx8ZkcEu17+Zq73eqfd9JFXVwuZtdNebuMpcnIKmQ5kAnF4IcKpO1ePFLFy94Lo9taCvlm1a9HU7u7gdHD++avv0jI/P3pi2W9gvL4/WQDJFksRcTuIreVYlbngj7Zc/8nWECrP//7b15YOzZVR54zi2ptL399b667bbbW9xtg9c2OLQTLywGY5swBAIJZJLMTJIxkBlwQiAJQ4jHSZiQEAJJBpiQFRsPAwEngRBvbIFubIOx3TYY3O7Xe/frt0qq+80f955zz7m/X0klqSSV9O6N0+hJpVLpp/qd5Tvf+T4iFXbdeCB66BNAP++IvaZYn8obWYs57xHf+bgPWDPBlOHEls0woKvkOrz4+et/7+8/fc0XP3X96zFY3hTt6fyzbg4wWH7qxq+8cPIlp37/Xwwv/qF7D2X5BVjGQT34tTpZ7DFlc6+tLd526cgrLh/RoI/thfUdg92TBdgdg91bvnX2fhQ8VVBooiZgK1cjvZtGV90xuuoOeh4R0eCRTwwe+cTg8/cNnvxD0XerGEFmDJCNayo/GQiBJnHbvHYF0ejEjRdf+qfjyZuqPa1Kq7kTcMdOg8Po4tIf/pflhz5g7hchaEbDilYve+ujBg/pMLkSjanSsq5RB+qIrlM1EaliEV+pMwCX8TZshOH/9jy+jahYeOpmx1XvOb5dqF6c2m0BRHzs4f+2/ORHH7v16y4fffZk4I95/moUwUxEa8u3PPSCv33sgfceffh9YXRBaqgyE4Oag+lbRAFZ1U0Eex9HWp+/5sLJL7l48p7R/DWdV4Lee36KmPUETQBvKRXt2yh4j/RBJxsF7zpE1n81RlffMbr6Dnr+m/j8o/Of/fDc7/9KuPBo6QOcBr6Y/1TLYrCEeVMCM2NuafWOL7n8wjf2YfibDHXHTYPnn/rMkU/+u8HlJ5ISV40lVyQbUEcZV7uBzruhMHfh3B+rMQA6DpOuudugy9sfItDe7gFgExEIAl36wHsf/bkf5ZBE0JR/wBzUgVGkHLLum9WDI1K95LTNYeZLQSRNgi4miphcpuOK4mHwbivZ0U0YbOdOv/yJm74ac0vVHgCPFxTa8Ks0WH309Gf+xcLTH1cJOdHXLPYs6r5iVCK88Cfz+vDqp6/92gsn7hlPkO9RxJzUDGuaMgkzIw1EtM2lsH2VBtraxZl0WwL1r9z3yLnf/9Dwd342nH/UyEgYLWhnQil+p1adVOLj+rXPvvSKr8fK6ao0M+FoE9Ouai2A1i8c+cS/X3j8Y2WFRXce9U6p9N0KwT9J6lY21ElymLNELnlvBeP7KBxaGM9Xo+oYCu4cbvw6Pv2GPN6zgMP+CULM7Wn032AQUD2gNwfWtZYv7atpE2913o56YgzqqfRBRx779eUnPvLYbV9/8cSL+qL/1ibDxDxauPqR533nkTPvO/a5nw64YNRX1DY3sqsyuIiSMxE4zq08df03Xzh1z0QTl6li1tv6xr3lg479+tSuxoHgg/I03hvrt929ftvdc7//4YXf+ne8etG5A5HVp0urN4LokmpTA/NLl1/0ZWvPvUcRzz46P/WadlkwwH5q/tGPHfm9fxdGFwygoNiQ2bApbDq7kYDOqIL8O84JT6AKWSxbaU70PxaAI8o9G+ImXeR+EIH2DwICet9llz7+q533U9a0Yt4ItJG5sdUesfRbhtXmdN/JxBUCOSZvCScnjC5eff+PXjjxoidufuto8TRvhvaYl90/GSaic9e94fxVX3zqMz+69MR/d8BXBIVAqjVIHvcHnT91z1M3fDPmVrYXLGYL7J4Sgr9rqWtvv3FWr8b6ba9av/GuhXv//fynf0VuCgOji0G2uFHqRhit33zXpVd+PQ2Xq0YL4xn9G+QoJuaLjx353X87/9Rn5F5DrbQxtt3p7ODACqGXV2/KU/jlU9RL1DRmPMCd4ALsN/1nHxPANjEnpZf5Yr/+245j1pvOAJsto1FnJZk6WlqEpSc+unj2/qdu+tJz194zJspzDST0+QwXLGB+5bE73r74xH8/9ekfCfG82bmHj6o5NcbByhO3/OVLx1+xIdjduRQbMiC3AHbvKDyN4YNOq87dez7o5C9zcj7otEbBW7kak46Fhsurr/im0Y13LvzKT/DqedeC1+9XEBHmly+96htGt9zVa9rloHp2uPQGTcDCZ9+/9On/FOKFAuXbsNtDGYdjglBHmrcK3+5JKoACDtbPqUIELrt7A72hbwbSwMzsAYwdRXRDBJxeeGduZOIU995f6AK8EOIXcykFehhBdUcYRhdPfvbdS49/5PFn/pnRwunNwJ+e5oA7X7108qUP3vX8Y59/z9EzP281MExTzcS0uvSMJ2/9q2tLt+08PIH2fhS8tZd6hVhF9gBf07uMW8+OmwFfRKObX3xp5aqF//ZD4dzjBZiH9UknIlq7457Vu75MWZ7dGn/8jLd/Gjw4+/nlj793/sn7i5tYDacY61MSucNo/OzIrP5W2aa7gtrdtQQ5XNa5V9qZBSYofPczCYRZDf1cD963cMm8cJX+N05+ufumb/2vBARefPpTN9z3Xcce+I+boj3jmwP3VcytPHXrn3nkeX9zfXi1vJHcBu/q0jMevf171xZvm7TXwnabMEyWpjft8zBxN7htUgIm/u6tXA1s9xvHPRI7uP5beMgO/lLYyjfGUzdf/LLvGp28yeG6+ZdEXDl18XXfuvqyr6HhSrcq8x+Nm5VzRRZY+uT7jn/wXfOP3y+aWnBkP/JhGhV+W6Sha0JnCRTwNzvcE8W+iwWP+dRPOPnfcq/tufY3AfTE4sXnvSL/DbFJZAc6COG4aIWa+mFKFa+R65sEYIOcUa99H3/gZ6/96PfNn/8cleJ/o8kwbUYbXT32/Idf+PfO3vg2fW3pB64u3fbIs78XgyPbjWs9OAKmEjsmfw7QFlatqptxShkI46/G9iIpdpS6eDvZcYtXA9t6b2xUEAgcdOl13zY6eVPFKly78ysuvelvxOuf0wn1PSyl+jboqkIyzT326aPvf9fSp95H4rZr7ly4gJvksHp0TzswjvsXNrpq8DFFn4FR5QjXLcEgF7N3wqy9oB7uD/GGhT8D5LSWXJbmjWrPfus4IlTfiLHhwzppgIcXPnfdR7/3xB/8ex5d7Ab0zcAf9hUPp1bg6Ru/5uEXvnN1+RkEokirS7c98hwT/TFxGNxZZT3R02wrPGF6Dcr2m4DJHzuNDITtfuMm3zGty0hbawI0B8SV0ynmxpM3X/yK71q76ytouLJBY72x2LZrAtYuLn3kp49+6B/PPfWAmIh4cQUwoQt1VZU+6iwdx/1K3dzA/eNljL9Y2Ljdm4l8MHMJYOO/xRZRIO57Kif+46dN+oZBf5rptHtWnE2BmqNnfvH6j/ydxbOfmgz8GfsYzRFrK7c98oJ3nb3hbevDa5649a/01P5bvnF5ujF3u9/I2wtPU8RP2tWY2tUYLl/+kr8UV06v3fnll970XTh1M5leeBzew3UTbJuA/PHcI/cf/cV3Ln76l83t2glcEWNAG4wNyvXKQdUTYPNYhDHRKCprqHqSOGtpYA8XwTazgkkPuPyB9z7yc/88cQECq1lLXn0KWSgnrWqBQ1oNg7WDKS4L+S1k03emiqr0XzIao+KMlZn3Qd5hXBSvwNxTZrKSjqOa98b0Is5d/aonn/GnML/SdRbrK//Zl//d5oAZq+ClumHeptE59mnvqfpns4qsr0bPrzw9ZzSacCls8g1BT4Sh9VWaW+iBx9CJrNWWV9nwMhdh9cLSb/zk8MGPEqv7CpePg3rIqGsesqZ/+q/4WzijrmDMv+xTabwuHkriClBWydRjTZ8thRXrGg/dgTMuY0SMcOPX8dVfKg+bCXf4WVID3aSiR3/uVLiGHTGXUYm41rASb6S9xGaq5GlhjrPAPTUARy0WVh7+8NLj9z3+7D976dRLOuAP9YA/G/QBKTyEBeNBManhyKR80ImfYqrSQLvMB538Dbbh1ZgOH3TzbYlZ5YNOWuFxX/SnSsan8m6pxBr0oXMPfGTp1/8Vr19yptmbvHAz1Ytuf9PeRmOvsNMfKyvBY5q2vhahvFS/psqYzcA6iwlAZNrIWFdX/LMeQ7kxKNC4vYHeWLbxTmbvqqTZWSufL1aoYe3CVR//JxdPvvjJZ/0Po4WryRv4dtEe3xxUlRvbh2DK9/x+SQNtuY3cHWmgqV3G/eeDTv5zpnQZgc2r1orKXwy74Smh6T/nn1j61Z+Ye/R+Iipu6d6/r2RRjbDgeq06fTX4F1oNCSJ8LMHGhUVPiLC7AuhjAc3i9PcgdABizNbN0mY9OGzlbuwrNDt+W9TjmLrVjsR/demx31o4+4mzt3zluRtfRzX4Q5NPhu0/uaIk7FgTeGtNwOTv6m0r5h8gq8jtRN99sIrc6tWYsAmY8FETar3Nf+K/Lnz053ntPHGozVvI0vwpw8i1TBt3om/HbENMz1wXyn2jcBg7+N70gO7PoiQ2rIpAs3wOCgREGxPU3OpWj9dWrzYBU030GSM0xF781iKY4M67ov/mC+sXTnzmXy89du8Tz/mW0eLVG6I9NA4R4vpbsDNN4M30QacROmfOKnLs15s00CbvjR1Xsl0DFwcE8RMPLPzGT8098qlc+Pff+tjoGuquVkLnvak2Ve6o436paCx/bV6pk8sYzBA8hhs0i8lgz1lAvFWqA5e1kkmyAlXFe03d6SXzkGsaJ/4prn73zwFDQ4pl6rzw5O9d9+vffvSz7+1dC+CtNAdbmN7PBMVlW99Iu/CN7WpM+7VhCwQj96Gdcw9/+z+u/H/fN/fQp8zCbTT/3cpGnJNt7pNw6A3Q4J7FsUlInzXmg56IB+ouLrUOYOtv7CQJB66cOH3xxRsSSGssBEQMnyryv7gH9OuMgt3DC0zIzNG51Ru1rGOf/enFx37ryTv+x7Ujt/r4TpOAPxPVgE0aqEkD7fQybkEaaCtwUW3qMnjok8Nf+w+DJz5XMBMr51m98iBOGNydpsn0NalAu7I/bjLtsYQc907kfiC1+nWjcJD6t2bkyY+/bDrvmwPcAWyakV7wisnunO6Fdpsg2KjMH1+8l7dSpKoUIOUu2G8S3hjMuB8+VHO1hUBENDz32Wt+868fv/9f8frFXrRnQ/DH/XZt72nnlTW2+40bZMfpluTYwfXf5OF70Gf4DFDeyKsXF37tPyz9/D8cPPFHzruxUKO558c5Z65K14GsU2X//d6zIdBtC6pFsE5Kts6sPUoPRnDCohlzp2cNEdrfDqDnEgxOXpvwDba1NjCOxjOuXFJX4Zza2Ris24+J4ogGwQOEGxRlvBlOSkRWrVx/i5D00J2x+5EHfmHpsd984rl/YfXE87cC/ox58+z9KHjvrSK32Gfs6Sh4NtSzd2oVud1R8OTzo3xDnPnkwgd+PJx/zJgaWdZ8xn8y5S3Y5swO+rzmZ+3kAeflW3de3Tjkh3weDwaPGYr0To+3mR55j/PCDEBAvFHD20NNtFwgY+Zchzfu4/6rpB86f2vntwu2mEBdEdjvNNqBGTSyVQxY3zXw94j8d3D5kat/+3vPX/fFTz3rGzG/smEfsFEBu4PGf9esIiePP3s/Ct57q8itpa69HQVv0SpyPEQ2WQ5Yvbjw/h+b+8P7TGfL9ZyWbHhlY8pYMcA3y9X9SiOaPLrelr7P6GF2QvKTLIbVa8AVoQjm8zNHCJ2ZGYBjBPfn057709xkqMz+nPq/F+2L3noNY9/33ljMVPVs9zu4mN65XGSFwkMNLrPJMoFWHnr/0uO/+cQdf/HS6Zd5bKqeDNfL5DOgCczbjbmTwuJ7zwed/LFNPXuLZ/DZ+4Yf/HG+fMG8tUFdsQhZ+83s/lpkv+Ovy11ZBrnFNn3HO3Af2SRyXBDiPrSHnPYDquQPEAFxGm++w5AANiv1QpiLcd1fmYICoWc53hn0yByYxyBOJfCXJi8vD3MPkTT/UGaqVwSMn4XfFbTubtnG2C8swBU4Kc2E0bnTv/uui1e99Kln/tnRwtUdOUQD/vA2g/VGf5LtjoL30Spyh6mrXY3duRrju4lzjw0/8GODM59wUb7g/qDaPkOK9K5HWIqwmWdhXKJYbMatFbCtuqh3M7Tr/uE3uNBLD7QAQtTfp19QiInnlicFP66IDmC8FsP84tLli0/LH3As2t2zuq/4vhWEIGOfO2arq0+qlf1Kd7URXO0QeE0r74adt9vty9X9Yfb7wyEuPfYbC2d/9+wtX3P+hi/rIf5HTLPO3Xuwe6rhab/2nqa2A7H1q7F3LjHT3hCc+91fnL/vZ3j1gkNbtZou4jxC5FHonyrHLio3TmoOuBL2hmkO/IWL5KSBrI9YrxxA8WHVF4yetqDu7EluSGwN9+bDnQB4Q91U7qzgToJLqnd6sFVCJy9ERf/Tfc5sU4VN8ooahTJGto1qWf2qTe3YcT1l0CVfV0E7nU+4qTIU7wGF0fkTv/9/Lz3+a0885+1xeNqAP6BphKcpSANtG+zed2mgbZe9k6enJg1UmbU++eDw135y8OAn81MFD5FW0ZOt1gm7dpsqCp7HfPSG62oMcRcA6Iu8LPRBSNXG8GvO8pIiU4h9TNExSwbOrHhcPtifs+c00E19PYycE8z/6xqw+P9yn/K/TxVZ9jNd62jfGYYTxFXrBhjxUEfs4TFtjXlJJByyNBDmUuDU72YtLqTYWTj7Oyc/+QOIY5g/GH9pJ7r+Ez3yoPJBabsvdYNnmpZLzN7zQSd/+JTWx+BQcgx/7ScHZz4psp1SPNmintliQfJ259oR0AZ09qi9fSXoxlwvIlS/adAJ2ujtM8VyoCwGowoFG9ykcHCQ+SqPTUiHMwH05L06M7MTFKxtN3svVe0PEWOJ624fuLKFG28L1am/APgiDR3cp/sEsbzz5A2ZRXzSOzigtgkI2gLz2sptAMcRAb3OFdsPTzNkFTn5o/beJWbvrSJpmpdxytsS2Oq2RAI5CaduZjbEGPZGqKEkhgznsGg+W/6PlkfsrWJVFxFjkqQFl3qjgYvc0BuwTgFA8Qxg9MQMVbnuqoQCROCVWzes9LH1N8EBTQCb9TtzV11PYBC8yYO9ntwXe/qZc7RxiK+lfdA7BK4lYTH+p7EFdmQeRRLxmQkxVzxaUJgNYgZx2oEgxMFKvvFGfTvokzcB07KKnEZ4wuav7YBYRW4FItvBazsgVpHUaQIkjGK4lDB9ZuIgETywdYPIhZGWRGwoetwruw6H+DtdiUjcd9Et5WOjXwPu4qNksrEX0Baa7gmjNihA78/F/uI/NAObwNaBgce+tfQN4dXb0CvH1uMCCjg/T+78PbGF+7bPfgTdTzlUiU1uUBcLMIPzJ8AMZpT2lnlHcY124Rubik67Gtt4bVzfGWlZhjnZMRlIh72uA6OeGHtwqfMZAw/BAjsdpc+KDtQN6ABzLN/Yo+kfiyV9TxGBnvCxaZzfj0ywTwlgw9904aobkZpH4g5y13kK/XNzRzqBqjUQJhZ2DuRPWFD7PuU49QAydGNEr/BjTa2rOqASmqZqs4ANUy2NnNjsuWDzdn4Kde7YlmirIQDTDE9M0wW7J61zt3Y19sIeeaLIsUsdYc/V2OZYyI3iXKB23bvd4E1pohds6arss0T5DLpGT6DjTvgeX/v3eQPA3tgbvI0YG6zp87EvcNGJeWfJ+RB0ANyJ78nZ7Zqbq4isU1pU5u/139TodiOa6ps3BSHK1Lb/PUdi8la9k7juTNGpaLSiZzUMsn0uiBI7DRvJjk98J+8p2L2tWnLWpYGwC9JA066s904aaNtjIeqpy/0/YT4w5XyxTIVLGKja7FhPiXOWwlgkj+F43a5yQaeK8UZQgM87DFSvDWO0QlG+d4MwuE840N4mAO6mVd6sauvC+J06KXaeVvA7AHCfN+Pfujwfo69s6QRsMop1mLNkhkrvHFwXF8w9G/C53sk5rgyjaHpg9+Rf3/tRMCZ+IdMCu6cEg+zKKHiqlxE7/BPTjrNjl/nGvW8aE/oJXheIqFvIcQ+05Iut6pWw0WRGaRqoh5DDthTrxXPcFSmBH94rPIX+nBlWntWJgfuvDDEjaqAuaS+95ivTXwZ2wMvjWFooiZ+7Jbm5rUC6YeIxBsWLWBYFoI5j5aZ0+x1VpeCzFAr5PBtDg7JFNfvJXn6zwoy/zIvcn8Z/s1HwHvFBeTtReu9HwXsEkfGkf+Xdhci2djX6UdtQlf8mZJN2A2y6Af+T9XtRJQnU9k5ZqFNjfewf/1olCdccxLqQdx8jp5Ne2R/qqfr5yPN7wp0FgvbDP3K/ZgAdTIa55/MJsrfbFSCi0LMvhl6mvBWO4E5A4/qeZPS/0/MCgfmZXfcwQqnoOVERQEGnvuz7UNP8kv0tmIKyinHgG/9phCfQlKemDSLbH4iMuyW8CfH5joj9dIlOgV77rYOcQLPty6tmhKsq0D4k9u1wESpDecAsAHcmyBz7nVo39YbcJy7Q/nUAbH9t3rTWwMZvvz5/IqDvDoDR6pHtX6j1SyxNgCwGwsch7lEZBJeBsFOxltfBfapV9o3lNgziJm+XXWeD7IABOc1gvbd8UNpuE7BHENne8kGn9N4oNE+yZGhbBqFgPqQEPTswqx5sxX/GVGDU0Rriri+YnRagW+91Fujtw2ztyHXfX30+AcFh6AL9bEyAabYMYcxlX1hakWvOIHTY9yjQD3WAws5gFj1/tjG8T+5dE/R/sPq9Vb0L+7xb2NPaStC3EuelY8CWUKBt3skzsPfUaJ27m8hn5moUZjN6bi/dAghcd8bEnXZBxFS4dzYQ+6ryaomX+tdquIMIAU5LuAcLiuVhVOaNns2RnmRA1DcA2NcJ8H4kgLFz4HqaL40c+i492+gKgHpdINMXXbng2UTckQAiI/GvWv4+pDqWQcdawPOUVeUcpbcF94CPgf1nUO8q7PreU+fvNC2we0fhiWl/9p62djUw7WC9NT7orm8I9lyNrQBfKBUPeyoEB9cQaFy2eFEwOAGjLhXr2QB3XL+leGfUanF9pgJcyDweRKpmisrtAfpzQ2KZKzrFQ3+xZmIAsL8Q0EZjgPkTV+t1N3u/3IeGF8p/jBNHOZX3sCQh7sTYZBbcp+gIMs6l1OdmR2PWYYhypV/DozqGSmoovA9g9+SPbVaRU8mOV4JVpN3sLcWN0va1M2an8FPirPLrVfyZ6q/qjQlYO4Gerr1b7ydGKRmKoOWbdMeEzoGy2jaQHIa6rg8rN9BMnv3dA7CZwG0DhKUjZYUaXhWu9vvdQCJINrCh+s1s5IC41zEGVCOEEVV29kTPilfspMZR5g2utSxeAfl5IhWKEVOPIMmW7nma0j1/gPigDSLb3kP2aBTMBr3pfUbURV2NlLLrIew4gSrXsC4qWxXvZlwMjJGL6SBCKIgQeheDzfCxc9WAsFzVuP73vXLUQCdDgRZf8HLzB+z9EznKPagLmPjyG5X+E6NCF7gj4M2mCfDPiLpy5xqLZMNGCM7STNSvUK9HBjPAAG+Zxn+A+KBbAw8OiDTQHkFkB0QaCJ0OgDvxfYP/WQyYhFZnfy5L6CpD4468S60pLeqdQB2J6k2FKkNg/C8eFeX3jl8aymL+CUefN4MDAJqNTeB+FKi8G9nrNERTMnRqiFKss53DRrfDZU2FumGdelxJmfrql+JObAgAlWQ5+iRH4GfXddMQS3o4sI3/XsgkNIjsoEBkbEq1ceI/1M0B5PxebJSvK/3ofxY8gyj2NATV8ADWmiFKTO+LBrb87+eNc/GG1M+t3F7VuLMwAKBZYQF1UKCl17ypIDiQfbo8vvXq3q6sL7iNyu9BR7uAL8W5k95R1MjT8xrEjys3eZZWsBQs7EkL3FX5L2tfXC3EoxJDmagr3HU2CM8GN4Zp2sG6XY29vhr6hg/ogTddvR8LbVTvCCYaoBbcrZf8UXtsdMfF4+jljDGgWzWui7CrAPVjYHbEHA+dV54/g/jPDCSAWr7NovtB32ed3YyC3VV4vF9A9yvn0gSU3FCoaX37GkYEovZ+YDGK8S4yPRx/BZIifNeiBCEuP663LLrC9562Hp5mRRpo25rYW78as74h2HW/6MWCKt1nZrMSbPJN4J4Fmhr3rxZ97WvSBBMVY2aimoFql78s7acnfDFotBHGl8hOs4f/0D6rgfZy7iVPDpeOSMWTrn5nIcChbegOb+uUDnZD3jQahh3rZCFYE8S5DJDHugTCvR6mekO9iJxYmrMxl2AzgEaf0ehugN2Tfp1nYxS8y3zQyd+42O41nuYoeFb5oBPe+7bxtfw3K+NT+EIsUond4XCsZ79VmR/YwUFktjK7L8n97snEO/qaspfmHy0EbbMR8s+NPFisdyBmA/+ZhQ6Ax3GB5paPWRQobjCJ4f4mQAr8FNZRnHsrq0gY5pb8devFYy7usrY6ADqStuUjQzdGn3B52RKgkhtCpRY3hf59qvf8DFhFTv6jdn1bollFTvDa7Mok976BuMdW1+4PkzfJ6C228idlfobemh21nFy9DxC9xZih8AH+r2Z9wWAs4+FedjoLV5WCcpbwnxlIAOO5QHMnTrvIWgjySH/o+g0KIx86pgnwgwER+1cWQZ/EUFotQUXyUqm4oirhfZ/ZA0TGo6KIBaGvulXo0GpXHQ5N4GmEpyYNdCAhMscCYl/Ls1ODCBWs2in4UuHv+n3U91HXGqSWlhPXybQinAN3VJGI0rtTVf5XzbopHOvtM5WcYJ5boQq7mA38h/ZfC4jGcoHmb35O98LCs/IqaTYUZefetw5RZc7CzDZ7sMkaKeqX7sSbU/e+L23ERyerAV4SzhdHVvMkoNOX7jQ87YwDvgOryGnB4k0aaIKrMaPSQE7f3/7PBlnzGQfx25vFdwPkS66ATjNB3omefRMQnbrXOFRX18TsFfGbPdktnH0NZxkhx7/AhYKZwX9oZlhAPSjQ3PGTJuhz3vPt4YOagFR2+az+P5MiQCVdcA7ymgKil33gwheGEY0za2UQmpCfGdi9FU0oFYW0qFaxzxNsuMm8gzpwyhDNrH9juxozfTXgPTO48OWYHfeBbIvcjYzGzoXhwJ8uOs+ulusAsKgBITZ+L6hqePk1YrVZhgIcdVAfQ2GPtHhVz/h3BvAfmolN4BoFygF08TVv8moepQkQXB6uKKsmAXWNkhJ19Yzdwo59a+LMqWGhyaqgYPsC2FBHFUmMohblmWfWLIwr7gFtOu5r0kDTrHObNND2GsRNx0JO4wGdVgA95IhyZ3miRLXwZZnW7IXe7M5wZdtuDJn8M5A4B1TurRVoUZn61aHG4bdMfOruHqCbZ0EMdLb2AOomIPC8X7olL81jw7mv1uFvbeaaJWatJZnZGU8C2QpG7YAVcgTFCkfq8gq0A+AiAMfV9TaM5uxObLjM1PGN2S+we/LHtr2nqWTHQykNVDDSPll8cF9M77I55WGoJB9Q6q1uA0E+ZLtAorOH6KCbfNePwdhsZI9MIEQVd4FvGhQLWpBcwv3j3yt3E7i3tjNI2fDocaP+jCztmf5Ra/6zh/eL5I5ZDYPBhQomgzwMsC8FBp9hrfetYJyawcPrSCu4ZDpQkwng9xbcgpi5SWqnoQmagOk1/k0aaOehs0kDdeJvp7utpBe0GIf3ywsGRLVWqY4p1JH2LIbyfvarNq3sL25RkQt9IkXo+YNy3w4QYplMp19r8YQr/2dm/DsbCaA0ZdUomIlo/pobO28ibQK6rl7oA4Jg861xiqeS6o1oqzQBVgLcrACA3Oe52gXvitmyaWCdxIl8BxuHAy5pjMQfeNubn00aaHchsiYNtMl7oxcAMvvAvQsBfh1SSTnc0dqiDsvO4rFZT4V78g1Qa/66H222cyjWRKDOnyoXpMVhpvrdIxF4/lSH/TkT498Z6wDIYOtyvYY33+HEm1DWrOGFnPNfVu0BCIgMsstffRLNna0QpkopmgGjE8dlKczegM4eiKttNXkodzpEK2TIXVHoA974N2mgBpEV8Gc8Ys4d1f7C7rBrXN7rkaMXWYFLA4Fs0WbnuFx3DxZuyrBvKUYrnRhmDyhFN1QA1UzT9H+Pv7SH/cmz0gLMQAIY3wQsPP8LfbnJsqHnm4Ceqa+b0HqKgN/zQjXbIYbfOycvEW4Wg51DXKUMISMpdpbAGccE+QxRZM3Zf36bZe8Og/VGf6omhtOuxravRi3z2fGFL1gQ+gREjc6XE4mjDhmUSnQm48voRnEwMwZv8NvZE4Yt4NiWDNw1C0P1mKte6fPHDJX/M9YBEDmuGNH87S9wIv6C4cA3AaZDYGcErKG6yhHo0rVEG4iFK8RK5CooE9gjH6xwJYPIKUVYcAkO4TRadrKs6AgS2YmMuZvZ9qnO3Xuwe6rhqUkD7WJHOOFLVf3zQqOs/DfQLxmdkKIghVFQIehu4U9OF7qjKZ2x/S5epAAscnSpTWm6BE+3k6RdS6wlvBLBZHjNzJb/NFt7ALaI1iZg+bh/pB2ms27NdpAdlEXfYiVDRvZn/LYhQ2sFwMNEug9gA2opZ9gbA3CPbYWZJauHnUE+wXkxAd4mnmaXDzr5DzxA0kDbLnsn//lXjjRQ7dKukR0UKhqoEfqvXkGvcDSZRjlrPhv1Hi6tAFfdgEWHdLzsQn/sGo7I00bbVRR3P4sGy+YBD5dmufyfvQ6A6knA3KmrtAnIoRcAGD23br3XhzK9L38c2MpcFR3Ss6vaBMWci3qaQp0UsalZVKMCnW7DgkiV5Z1RCtJuwoFC0wa7J//uAyQNtO0mYAd9RpMG2tr3cAfGqTKDW7ZHZ2wQTfdQGcXAf2wZFiROe1QDNQ71Zf/8NaOv7JAGv6ZA3NsZmPsbvHJrkTWdvfKfZowG6icBzEQYnrx2TLmjIRwgPyfWJoCNPWgJvB3lKbeRa7/E7u2aDYoFhsykUkYtOWQSA3MO7BXIo0ZC5T0da5uwqvE8iI0/TY8POvmjGkQ2gxAZo6cVIFRtsSmnjIBK8Pwc6ogBs6+6fK/A5favpL70R8cUCJEgJnTsm4g6q79cpAUySFDBQXKG180m+WeGOwD35uDFl3xRtQ+MQry3a2DcaQK0wM8MLV3qihFld8SK/OUmw836QV0vae7gEOzwTHX3rVzKev0sSwPaaQLqxv+A8EGnEZ5mThpo23zQPYLIZpkPCi/bybXMA7he6GXUsupk7AJt/c6o8dsM+0DK7kovqGMjXEPI9ocCWqvZerFaDGATSryOcLj2T85y+U+zRwOtm4Dhi79Ibg4FZySsM3vCPqGj+CGsX3TkIqijQKu8LZStMasIBJY/M9yyFxWJiKIzZPUkZNHYepFVCwrGKQkb47rTLcmnW0tO+bU1FZ3DcTUq/z6NsKGiPrOTf7BQTpmS+ZUx6gI7MLUW8m3lYB/zzGVWaOoE9i1CecEwJBB4fmrdt5QMsfJcpwE3Y+X/rHYAcE1APQd2f+HSBERwsXgpEBEU5SdYLqd5KnQKRUse7Vk1JJuKeipMW5FZMSzua3NseQEum+4I45l00wO7910aaEfhiacMdu+7NNC2dyAmjyv7JQ0UZGQaVPIWRf62Owp26kBRBrNwu1pO7DP/t3QIDH8/wNtydDeEYzUqAMahq9F3IZ03N0cihMUTHQnSmTszSQN1fSIv3PCM0gTkDa1kCVAR9lElkCpb2Fwdta5n4//LHWF+WQxIfM1CDlXz4GobjTgCPbq1XPkKKVZo38egEDs7jePv+StcB3/f956wC9JA0+4zZmIsVEkcbjDbsov5jLJEk6lBXL+DUZcB3L13KqjHjZrzDZjZIUVuyIz2ijylzOoqTKk4vcJ4GjMR0dINbqI5e+U/zSoLyFFC52+9w4fBwt5Kes6QqYtae8Gqh0Yv5K0JAlb52SBG8Jvj+gd3JARTYCjBueszV/lR8phaqeNFUC+X7yXYPfnXD5A00K5bRR4oaaDpO0b0fCO6NzVv+D/yUhB1g0x+lgDzyKzlxd3FMSv3FjreAyQbBmR05qGMUjjx57Id7C1fCnCE6s3NJ19angc0myfQLB8mIiy9+o0mfHcENwC/oJU3uuDfh+i8M1XD22H69n2HIiYeVTEQecUcdTgD8ruKozMq6DrF99KQjHE2cS+2sbVR8K43/rsmDbS1JoC3cxkOkDTQ1l4qT/pX3l2IrPMyKlcW3sBeyTsjseItFTG/qEEwgcs02Nh7KZMicI+JkwaNCMdPZRTxSeUIVSAPvLiLBb24PIBveIvxA5/F8p9mmAWk/io0OH3dYG6pagISVT/DQm59jF1ESv1CJO8UXLk/upCTzV5YavwqFjtOJ6NyhAc69hdVhET9sEw9si/J+swd2MaftguLbys8NYhspiEyGFUfi3kWAnQ0oljegLVqFII4xScSSECfkwy7V4DOW4TZyVGQLJGxESS2LwNaEsqdG6ItUp37d9o/mJufcfDnIHQA8iYYnjjlSFaV/xeMVifMwhczjMeuiAhRjyKQFCMAEdjlAKEKoKwAGClno07ERhkijiwBtFvjdFritEXMFjtCfyiaKh90ZyXh1MwR91IMp1lF7glExj1oTM3eYXdH2/e8BmhHnYQo+oATJ4875QnIqLibGW9xbZT5M43U38O8SNa+veMPHM3Sr2MKGel3M/xbvGnGwZ/ZTgB+Grz8nBcR8dg3LOsI1ytDmMANnQfogq+xiawcm8maj7EFIKle1FIZaS52YVyVJIVvwGZWxaUg0spC+8qAMRvx00Rp6aDsPTVa5+4m8t2/Gq4wN6AQCz6Ttr0SCYIrXxBV1SFmsJoGW4K3LudnTR44nWcbu+2tHjqoAIx/ZDCwUl4CNWBRDQGjuH0kEYiTL5px8GfmOwADBA3vuNOV/JmiZQn7uhmQ4rpJBkygmJB+CGffanuaCQJUz4GU6mOUhOQnkZWHkyUQlm/KBjOIpihDtUSOHkxE6dJ9wNTm1fd069xmFdmsInd6GdmM5TrO766css5c+g6OyauvxH3ykpyMLChkjTcCOz04K7LLVueZiZP0m0F7pMyDnduxUQNjcmthdm+fDSeJgUh86uUzDv4cBAhI3nDDL3wNh3lPrKlBf8FthJwDrmBIMxfOyj8AgWL2gDSmPqYAIdegKpRpOT1KCa26V/IMB10zq9cgyXWdJPvoYYbB7skf26wip5IdD7pVpNJ7KuuLwIbuSRLxwSH/1+VUlU7siD9KcO/yEMwePriIvycEP0NDsdamJh/9JWhQFCoRly+htAg6eIhEHI6/cMbBn4OQAEyUXDh5dTHnzU1AlNBpCUDi4lLYvNYYiKvE7jfBizaEI2GC3XiB3JIIVHgiVzAlE5QmgGsdCPfe1f6xzJ0684Nt80Gn1/g3q8grASKbulUkqdKt/heZusFCnWPrh1ciNSiYDXnuvGOslHqRESrMfAGLOkR+vc2D8WS197Xtwotsux0YxAJkldVfGUgeecbsgz8HpAOQy7dyx53U2Y+SGQ47kqQ6xgDFzUFGAUa/gY24EFnZH6Bvy4d9nV4KBPWq6en4QX4aLH6lfcmATRPAm7TyzSqy/nKzitzkauynNBAbZicpdGO4noyihhLIRXx0fymvsk6V2IMJzQ6i8YKPFTkbbiRMwRC4k5SA02gR41gYQRg2K0MnXzz74M/BgYDSVt3r/1Ra6YJrAixVywx+o5f/HHd7ZssAeP24PhUHKNenajayin/2oaylRYwHRfE49cqFhfyDGi866I3/JE3AVLGdBpHNIkTGlTN757/ucnfQmLIfE0tuoGqRnpxtZMkUkYJZPghcFvhNuCCAQhSxGLj1HfaGgMrYBtXCQZSxBxD4hi+jA3LCQXmhg9PXDuaXDIxjhP2N6FuU9xxGMhMWWj20vVPIKHuyW0WH0g4UOShn9WUX1g1OpEbz8qYs8JGbBpP/QeZ/QBlC9xLIpir/MtVvbOaI7WpMdjWsETxZar+EIsvBJyEFKbkTHft4W3rrHmWx6wi6B2Rv7pxIyKBDWjhkTTq72hNN61D20RAMGlBYRpEHK2HhugNR/h+cBJCagOtuKm7t5P184UGXggWFHsoNc8Wytx5fbgPFPwSCG0HV6KLlDhWFQbPq5QcP3Cn8HSSELI3bK0o+a3XuTO09bRvsblaRu9ERdoexCXyH2YVk+af9L8dM1GYmCqY5hlvotV6S6vyKaueLyx6v0YQo9w4bLwFmoMP5SStdIKqEBdjTxuWGRQQB4dgzD0r0P0gdADGtvOyeMoTV/Ayr40P5L+acYoyLY3qTlb+pmSJZJ5ncTaSnZIckVc0jG8Ky6R68mZdMHlDdFtwDBCXbY578htxlPuikX+fZGAXvMh908jdrs4p09Ra5hUffDpQwGlTjIdH5o4OGQK5jdv4BbPa8ohjIRA8lpdGzlQKNyrtTwUeiKPPemO/c2s3JE1xplL4LIAoAMV/7hoMS/Q9UAiBa/hNvtmU+6vod/QGvLAdKnmBTaFeIvBkwFJyHrTckyiYABHUSGVGojFAd5NjjnhC3mf79ALtcuIUmYGcF8lQ54DNgFTn5j9r1bYkr2yrSbb6LpHMKPCEWEVy2JbZ1i1SMBfnxDveXhUpdx68nAZEqvRanOaqXOHqLDph9AmsXbJxAoHRSB+uGa+85QEH1ICUAIlo8cbq7IAVEd7ekYT4MbTMrOUPIo2wLbS0wAA3lwhWL0l/a1S+qNDtN2cclK0D7BciT99w3XINC5W29f/d8kwZqENkUITLupIJi484+qnJh9Fu7FbZx1njCBCrAffqYo0Q1j9IEXf9BWRXW8g6gii+uG6D5o+IgSDwSFmGtRg0CDY8frIh6wBLA8q13VLSfLNmv4p5dR/ayOcKmvmYzVupsjZUBrARuNt6/QkYCe38C3T/rtrk2ifQCQTDZhaSxmLTx31s+6Aa4B+03LN6kgSa4GnsOkSGjOlq/l3LbKOyzhuZYh/heIzDADc/sNVeclrzPNkcX8KykBFWe9TqKi6ToEHf+vJD8JKtAg9Nf2BLAbiaA177ZRmUv3Zyic6brRwGKpOJX2Cg1AembQh4Q5CAcATUQ1gVCoKforWQFLdEAmpnQYxIA7wrZt7uYlsp4GtUr7cI3NjGcdjW2/NoU/S96Cfl2IK+67Ej6JuwyeUd4LgJtTgK68mLqIj62yFPRd4j5KwxWPHLOAcXBj11HwjExQQACmG/7+pYAdvHMP/uPDeaXSu4t8wDu1CJetc35grG4xMCM8LmS4TROv3DNhXhMIgJ18QGy013AKsqhW9ezrC0XnJF1qWwrTixNGqi+Gk0aaML3xk47Qmx+GczAlgtZM8D55Yak5AO/AVB5+UbDKWJvC4yCqeoSWf6vDNuKkwy8QlG6M70PjJV/ZLNQlroBwOSP9LjICyczAbQlgN07x1/wBVTGrWUnIGpQj1LP63g4ZpQIFbPTajvkVkD+onDuvkWFoq4vCg5VRghc3hxJy8oGud61AG9DXEmib/Geb3tPW/yJTRpo55dxo+xYKe5a0j1kGkzR8PezqFfuGwCH5QbbRnPB/amz/UtiHmC2cvLPQmXhXeF2yOrC1hISKNYdVNvapEHfgcN/DmQCWL7nq4Bgy39Ty7sukSrqJZu3WQnEthVgI9zAsgNi7kDoildGllD0nWF3C6LG/Khvmg5ib3LA5vXvjkNAkwbaOQzSpIG289qCAVKycpZRZYCppxD9TlbMTYNtDko3PSJbi7GOanM9rvrMiHCdhPqDkIdhg7cQiCCOBEMiCgb+DVYuJmsT8/WvawlgL1CgucVFE3xL/Ihi/aU+wKjqbkbxflFjNxFfQzH56ghCuTeqJJsY1YHSJRVnXFfe9uVhak9h/meAIOeRMXET0KSBfGbdRnZs0kC7AZGBCwqUGZ+6T5tC/IiCrICxjmqF1pHQngzRgDDKVXluBaLIQli+f8eIqUJ1gtndYXl5iIRIABApdq+ZLSXLpI8ARBCI5xbD8Re1BLAnKNDzXmwg+56bo4IGYc1bVPWJ2bP+jXYbsxOHqJbIivCIQPgouJAiSFEFRC3dPycJ7nE5roGg6fttNWmgBpHtA0RWDX4d3V6XeFHIoAr+WA0GlqgdyK3xw+yRsQf6a3F/GfgxEUUgluUygzKp5JfT/gxV9C8sUl35CafvOoix9EAmgMWXfFFhcsrfLWMvmeFDMaryv6m7FbpjZHiGq6As+QHGzNPVUkboQebDhhJKVPmM2ZI/G8dDxIfMerCminGOMRPdyU0Mp12NWb0aCc9R0k4gIYZay3jywohBQPyK5G3K9uIqTHZT11RjXrAz7/pqZCc32IPVldNoYZcGor3x7XOHm9/aEsAenYWXfkmYCxTZm7X3UAJMcDW9gi0Ion2vqIWASIqWJiBxh8w31gaRUGkJZCWT/i4bNmdxrfogzmKd59/q3XeA9p62DXZPNVg3aaBd7AhZdmRQxWYu6m8l1MYSbfVmyDaNLDJw0TF53Pa96PIARVuUqCBF1ftIzZeUTgijHQQU+QCGLyXNPHhueBDxn4OaAIho+YZngO2WecFzyl8n5j9SeWvAowKgSNEJN0CUvsm/dYTvHyu+PwNuimsEJFJrwTC7weZ9F6lkFPKOMWliECe45w8QH3TyH3iApIG23QRM/vMPgTSQI1PCBGLlXwoKxJ0nZC/7k3GbWK8Zh84OAUwrEFCM/Ngw+yrB50quzi35W+K/LfpyZ8CnXnxAA+lBTQAn3/oXioZffjMF0oBf0nt2a4yUWfudsQFr2lc5OVPyK3snUkSPsZduArOXJ0JV/oj5u5EAUhk706QLZ9kOsvYe7J78uw+QNNC2m4Ad9BlNGqjcK4lCE8hotwkiH6S6J2MfHyJZvWWKPuJ7NnaJ2rnoA1uxT0vKkEVLMu575DTh3fKwW8+nLPqWiCajkssGt7ytJYA9PfPPuXNuYTFPXNkPTq2+P5xqj9HkKWYy2RGY4Qs8FkkhLrvBSNMF9Pb4OaxLcaFzhV5NB3UGhtM4NEDQODTmoGoCb+EnYtrbrQ0i21eITGD3IJG38HxMdU8d8R8yoHwwzgHs3ys2XgcmJmTO6MjQwvP6WC7pmPzWZ0RRf4Mr3YJxnkn6wPAdBhHNLx9Q/OcAJwAiOv7iVxskTjY+WEUF4Wrjoimr+YF74EMnNcq+uCBy+4S+5I+dppfLgDfKD+0HgiyQxf2Fx1Ya/wPCB51GeJo5aaBt80H3CCLbJz6oOC8VAS7Ezu0Jh7cE6rF+hN5ZJJLRaZuMs54EFCaissYl2nBZFYa5OMk6uw4L/mREqHTpXuG3QMHA4JpXH9woeoATwJEv/3qJzzJWUs0mo9dstrpgSF92Muz83nVTvLSI1u0dTMSxi/BQfuN5nWoTDLUzgFp/2cLfGgaAGOAtuQJMGWpoKjrtakzzapRojqzcqf+tVCLYLAMXlVAqoE2px8nQOpHdHzVkh468TzDTiEDmdotgI0Jn9H/gU67e03FEVp4oPPMbWgLYhzM4fd3KVTcUTgEXswbhabHb9DPSD5oeYilOJQ9EwyFyyLooRcNUE7VKhBKDzYovM3XcLApmFA3m44t5TAjabN0q8uBJA+0oPDFNF+zed2mgbY+FJnhvTL8jrNTc7Oi1EPa59CjW4JcELGLJFkU4nWVIUIQiyrYmKqtIwoiMFmnUGxzs6RZuWYFVdAguGwgIHBGOXH/g9H8OSQIgopU77wYo2mmwIQJ7iiYrBFQt+krgtzqzqTIw9XlEB2/RsQJ7QJ9Mu6jDXi476kw1qBQNiDQOtWg6+BsAX1MNnbPCB538gbO+IQij2BNLFa/iz4qppsGvKkBoYgjkzBe54C9WTs7gNdHQh2RZN+v5xALp6KsqVsPRpCyQ3eXUOjEaUWHmwfVffqBD6MFOAEfe8s08GDhZCLPABaD8gkaNJ5Ktr7MURN7ohqno2fhCiCy0AEFExNGxir2bPMhBTEU/sLylYAZfUNES7zy3FbB7ayFgr6wiD5Q00K5bRR4oaaApOkawNdhiE9zh7iDXqonYQ4ZWYzFrLEmFjGZn9GNkr+SYU4KB+xlZArI7+017wpSE/kVfCKoPXMIAMQ+e8adaAtjPs3zdLULHNdNUaSRVBBzwri+wICCbmJMlRGPMK79gOIUGNhZ0ZjWsBoLEqCj9WGUEVRNgZwPDZgjcK3GxtSZgW7akB0gaaGtNAG/nMhwgaaCtvVSe9K88newIUfw3qgzF44VzqCVv5FJqeVvbwRjnkSm8LIlTbqHART7a0KxVzksIetF0JxoWzC6OYRRq3E8vbO7UCw56/GRsX2VqJs7TH/ntX/+v55mZiJg5/X/SfzOn/7PZV8un5DGUHylfrf7pH7zVH0fl4zE/Th+5jYjAXdyb+8Myj/+S/Sf3fnXSR6L7jbzZT9zqI3nz14aJfmX2/3fyi7PZI3n81RjzyE0uOE/w2sY/EhP9yhu8bSa4jOkTg7O/Mzq6xUDpp2/we5pWEqLqchwSYMe3qJM60PdPW6Bgw28kItDVN3x6/vTBzgEHvgM4+qI7ly9/jtqZlvzL9Nkg01e124Or0awipweRV5QzMgAASB5JREFU4VDecMPV3zzo0f8wJAAiuuHUuRb/t3Yn0/bu5KkF69nXwZ8KDHIgv5F2/xsPxTly8tIh+C0OQwK49Vv+3Nz62Rb3m1XkJFejWUVO+N7Y4CdOxyryQMfN0cOLz3xtSwCzcq5eeKTF/03u+aaDv8Wf2Kwid34ZD2sWWB58/JBkssPxazzzq+5pQX97IaBZRe4cBmlWkVdC1V9ap3h+5Zl3tgQwQ2fhxhtOXr6/xf++JqBZRdovN6vITa7G1CGyw3eGo48Nlq87HL9LODR/lZu++I+1oD9zjX+zitxuQLwCrCIP6jl2y+lD87scngRw9cvvWrr8QAvy05V/meo3NnPEK/NqHKqcML/28fnTL2wJYBbPrTestfg/c3XuTEkDbT2uNavIaWagg3+OHnv8MP06hyoBXP91XztcfbjF/X3gg076dZ6NUfAu80EnPVeGVeShKv9/d/FZrz1Mv1E4ZH+h64892eL/1FrwPeCA77tV5OQ/ate3JQ6pVSQfnrtp6ejThyw+HLYE8Mxv+Ya2FLZH9/ze80F3lromyo4NItviT7xyRsFh/eGVZ72mJYBZPzceOdOC/P5bRU5eEO49LN6kgSa4GtOEyA7FWR7cd/h+qQOvBtp7fvVd7wbghDjzm7z60EpvElkJz6ShaD72Wp5Uq3iSFfpUNVD71fwM6V4LWRVdv2Yfmz8Zh9eNhhPTjWMnnvSIZY7RB911Cczqq9iCBCZtKmy58a+8wSNBuyaBuZWLg40fyRNol27p4jBtpJY6wSMn+5Xl47mnfpUGK9spYMaogfbkvO4jk+CzMdWr5OnGaXx6WVCRkwfR6PzVL/2Swxcq5w5lrn7uqc88+lsfSML9IfnrEoJ4Oah5nHmXgpmYQFysQ4mIg76Zkf5ZbglOav9ETIGytWl+PMMEdcgn9UfnZ2aRNWcu5SAz1PDu3NXfdO7qb9q4gN5IMRrdwo7HlvRs/i8mxm2rR3a+ccwzcbZu3uxxPT8QxNvDlMdcjZ5Pb/ZLbfwjYDzMJ/vGTa7GRk+D7SDs8F7oE743NviJGNdBMBHR4MJnFh/6yZ7H8ZiXwkgm8kZ8Xx7DEsaDerKi8wo5mzxRJGYCO9uvbL8K70uZf4KxeGIb/QHM3/IGokOYAA4hBEREJ/7cXwuDQTIDjTG7TUcwiAlsVcLVnAhgsHmYL2zsdxgtcpbiO/s9GltHYwPsPinvUuMxWQyBKzPhncEg4+qpHUINbe9pOpfxypEG4t5GBxqRjSMYTO2ukV292mP+riAWrcm1lbuXQZxkgEmjP/noX6wBk3nfYP6F33koQ+XhTABEdPpFdxMFCfHFagup5EYqDTjbRqKYSoMR8/vE+khSbhCMSYSN7FHjQyxBvJjSxdJ7qDFJdDnA3cPApKjubllF0vbj2tivN2mg7f6lDrY0kC3z1XyRpdLPvWeyX03VWHZNdaAbm+o+Itu1u25L3h3qBa8lmja4YAIQizkg1Ni72PkRoJbCOZkMb/6ThzVOHtoEcPybv51DwtlDyu1MTAikb0AOpdfLtpH5QwGJLDKq1sGuNUA0MR1sIhQrhgj1pCSiZD0vH5scwMVAGLxJmNuRJnCTBiLXb20jOzZpoK29NsitkZyyuXyg5XjoRn9jjsryJNmam0v7DhfgXYPuLWBz9IfmHnl0NpQ1xo+COWUP+cNb/h/mBEBEV/2xuwVoD9mKOncCAeBYrEVZ3m0JIwpEPNI63wJB+rZgNuOjnAMUCJKCorQLSPkABlCqcgC5vqGAQge38Z+kCdhun9GkgQ4SRJZvLmUpxJL1SuebByHZ2t11D8XbGzGaop7zd1H+AHl4IEbfrC7ECVCK0K4CQHok0gjORH/9C8b8Shee+dZDHCQPcwI4/i3fPh+GgrfobyqMHqIIHcKC8vSXbXEfU81eiqOUA7iuNdwwwL99yzDA4UImJnKMylEow4BNckATw2lX48BcDbFZZ9MNsAR7FuSU02AM2TKeQQCFgtgjRnkGUECuz/MDInIYF8Rf04x6vGsqYon+RMQcdSQYbbuQKiuE+eW5O/6nlgAO6rnmjW9L/B4CxxgS5pj/8vnjgILACOaDzNEk5pjeCLZUkTbUTHTLXRHdJ3Wi2zcQNoSzkgMwcQ7YXp07zURyQMDuqQbrJg20zdfGgrEH6VuZiUOG4dny0bnm9qSKS+lf2n8LcQlaxKfPBG0C8uPNtwNRwShz30XJRhkITg+j+ed84+GOkIc8ASy9/m2LC4sC8iRCaBB8nzmNfwXb0UGTAkEx1+4MNmBkpNyrptaBpV+gscMA0qRhhgEmB7CLqtvWKtjCDTmrVpHbBr52FJ5m1Spy8p8/49JAnANu4ZrmfJBAfzZsXC5TOY3vpYZXVqhlcBtyHqiaNACMGMt8t9A6IHc3yjNDQKBIxDRYuX7uGV/bEsDBPtd9y3dA4B1wwf2hWGG+/zlq4W/eypFYFwdkKsDIj3TE742GAdpa+mGAzQc9A+FdaPynCXZP/t0HSBpo203ADvqMwy8NBGXxI38gwRcZx0d3bKskTFI6DjHpkCCaXS2Y+zWnnJhutFzJE1ECe4QPGmXmTNrf64+SCm9453cc+vB4+BPA/B13Hj1xVSr5CRwjZbgfAykomBBSOohgt+tFQTYD9P0re2UwE6NCTKg3AzYaCGNMDqCJc8DsN/69X993PmiDyPYYIis1FZeewBTk+XtyZ46CxpQhMCik74y6PYDM8Y9yz8YM+6QtLjbIbc40PvpTGgznFwZ5svT5uZPPDCdf3BLAYThX/y/fLYzjQAn055CXbonMroCU/Pkto2kAWn/4ekOSAZuV8UxnLpsBJtybTbIqB5DJAdIf8OjcFCvrThNwQPig0whPMycNtG0+6B5BZNPkg4bVh1z0z8GdyySN7T5wWc9MKzoFO9JKi4TzQxVhtDxDhBO5KdEfFJH7CVkCsNz/0ggMv+D7roTYeEUkgME1Nxy/+ZlQ8Ed/aw5IDNFcmLPMiHVD0dBDE9uMtYlN6wXp7RPK7DayLqFE+JvKAJo+B7gySHPA3MVP7ygC7j2NhHbhG3Fgv7FdjZIASED8JLmQKD1ZYEU2wgo/I89gy8CgmggbaR/uKR9iZAIo5rpe7rKItEOGWLaFdf6codecNYbXvCgs3dASwOE5p7/p7QMOSMUCOEYmBGkLZEScZ79EBrDUuXFMWhFlf5gSR0jJBoZNbOdXYwfC0M93BsKmD5heO791q8h9GwXvPdjtcYopBuspjIL3fgdigvfG1jtCWYhMw1cVYkgLvZDJGBgj2DuoPGMp0GP525f5gYT5SFkHIjNH09Agwt2qpdVQxSGN/oO54fDl//gKCYxXSgIYXHP99W98G4GJB7nnRFoGTtV90EZUxsJJHY4FB8ox2tH5mQghgoRKHAzmwzmhEOWGwwwDyDNJ6xyAnAPC5a3rWjcd/KlkxwPEB538gfu0IZg7ANm1N6EdZLZ9E6MfMWasHyoNFE1qhtCJJEWUREIS/WHYejD7ZmXs0In+ZaRHhPnn/Xm6Yk64cn7VpTe8bWXluFkGJzcVkLhPVNYFOC0Q5IDORWckbRHkXXYC0qAYqAq+HORjTiEosV6wRiv9VucAvvRgWD2z3Yg3nfC0V1aRB0oaaNetIg+UNNCGTQCvPhTWH5KSh0vUNrRrE/2FXKdYP1lFoGiW80UgCKWuL9GfN4z+CR0CIUaKmfIv42jMHb3h0FM/r9AEQETXvP3vEIVc8iPEpCpFgXgg785g6vQAZHl+JEJxIoAmpIiFSMpBCGcMDpGqfQKSjpRk9kV+PMxGWq7OAYMLn55WXBvTBGxLW/kASQNtrQng7VyGAyQNtLWXypP+lcc/YnDxMxSBqKu15b0tS5MhK/PEQuChEt3LRoAk08LAMBMCilHV5aiseqnQD0AxJkEIFX6T2t9ukYXhy37gigqJV1YCmLvm+tPPej5SDuAU7h3jM4nEZa3Q0hCoMQAjDwOIogfuC4OYHf9HIlk0GrRAMJsBRVWi5ID87Tx/7r6dBucDJA3UrCIPHUQ2d+4j3nIhSvutqj4jUWtI0Vm2ARKNLiZ0ZgQJ3LrSpbkAkWLSkIiiI5177miI2ir9VrqBTvSn4a1vCMs3XFEh8cpKAER06q9+99LCIpC4QAFgQG1cBqIFypoDss9LLITRrDzC0gdkIlqQBpaIQnSFSl5iLLsnmZdWZsc+B5T6d+7p355iXBtzJ0+ND7qz18ZT/aX26Go0q8iNr//g6Y8YeS1QYFV2E5k2LtwJdjzRrMxvL4lnk8p+WOEEQaWnOWaKtkZ/NtGfbPQXjGluZfiid1xp8fCKSwBEdPVXfQPzIAsB5TdEkNI76GDATAhUGigtE3MC/aMaeukycHYSYEMiSm8uFmpzeYtnbrIuF+htEktimLtw/1bHAJMHxKaDP7W0OhOpa2+/cZKUvvrQoFCZURzYJAgLUq/sT1HyEVZof/SXD2BcG43LE+e1r3HRXwbJeewbEwCFpZd93xUYDK/EBLB492tP3HAT0SBdASDIenCQLQHXBMjClxGSk9kvEDKLtDzSyP4Iph9F4jzzSsUMD07QxIjjmhyw+NC7pxx/DpA00B7p4PdcjVmUBto2H3TylzlVaaDhI+9VSQfzgFg8WFSOxdguCQQEp8du1YHEQgb1tU23WLJ8EQnomNAk5IgvetPR6vWCF659UTj9kpYArhgg6M+9fRAC0YAoMDF4EGHJoDIQJo3sAQiEIHdlvm4RQg3i5AjMkhjye1kr/pgl5wAGIhs+qF1g5G4OmH/sfbtX2TUd/J1fxmYV2f+No/PDx/8TVVu6JCU4zIBXUfv8tSgK/vIdujYpazRxBJ3opu1eaQei/ARZGGDVC9UXHqIZJ4BoMLc4fMUPXZmR8ApNAIOrr7vhLd+YIz4PGCzCIsH8jwk2ByT12iDqoUHe0SE9LGbeaKCUFSCMUs46JdJ6cs4akNXiKEkHunqWCxMiCuvnhhPmgA3u8WYV2SCyvYXI5p/6MMdzJvqbNUnjt05J5b+4u4g6XFX7l84MiHKzRPcSEJCpGcXdLwn+sNkbNqqL4iAwfPFfoyv1hCv2N1989WuP33CDQPyBKVDkmEmiuh1G0gcQEUvlHqgw99OUOE90I0gFRyUHCHyUFsvkDZqpRJzeskEFqfLumM4GwES0+MCP7xJKS80qsv/LzSpyk6uxaXZcfOgnivZn+j+oNP85e7+QWLgwUKE9BZCTTUy9NRhOMlo5oNo9SPTX/AFQTLr/MQlDgCINr3/F3A2vbwngSjzX/O/fPz83n3F/5gQHEYVMECoNwUA+kLXetEKchsN5TSyUbWFWKlFWkhDqD+eJcc4WiEW8MBQRITZFEBjgweqZxc//+Jbv3GYV2SCyfYLIFs78P2H1IYPkI4vyl9obypMojnn9hT9p6Ido91v+DqgIw6V5bsaUoJw6UN4BkCSRsgfzYGFl4RXvupJj4BWdAIjoxj//l5MokLJCk1EM5H9CBk3MfXkkkslwitpBGtc8EJaVMSqSorJL7P0gGaCYDeqImDAyswHjRAmEhYfePZEyxI7FcHapz9jKNzaryIN9NXj1oYVHf9rW73nBhc2zMZOTUzd+kKran5NHRMyrXBRjnh+on3sshKIYNc2gdN55BY0zcCSyz+nFLb3i717hAfBKTwDzz73r9G23Z7onMyGkcoIlDUQiQmoIBpQq/VRvpHAflDKUmGeDwv/hzDGNUUSHIhXDGdV+iMluDFCZOVkRcMLTo3NLn/uhXYoybe9p55exWUXqWXrgn/LonIZ+rW9yGc/+eVgg+6IPgaLoQDElD7PMZc01yEzOrHQcC8daZgAivaVGrQAt3P4WPvWSKzwAXukJgIhOvf1vLC8tETHRgDgQDYCM/zAxkapEMChQjuYDKCgkEH8GKFNzUKhEDOIY8yqAvC9lgyw9QG4SEIBgpCBY7hgQwvwTH9zqNHjmrCIn/TrPxih4l/mgk56DZBU5fPg982c/rFB8WYlRKSBlcTKRov5MThpIFaGhTUFEkf0BILq9KO6OQjHizKCjwroTtQnS8XBYODF84f/aol9LAERE133rdxEGiv6bHMCclgOQFYRAgWJQAIcwSJW+FCwGC6I0EA5p5ytGsTtKE4LIaS1AnyrTjZihRgKqUS6o0PLvv3Pz3eBpagJvP8pjeq+tpyLee7B78h+169sSs2sVOTj3kaUH/2nB4Ut9TuWDRN/kyoaFSc0emZD5+8WqUcScUyaA9hMRIu1GijVRdtWIhFHCiJiQyyx5n4flP/7DLe61BCBv3Guuv/H1b2AMhFsQiOckH+T9AKYA5mxbh4GhinIGiPIeGWSDLGQ16aQYkeloeUJAzBQDlV0XRkS2KyAqYhLQ9JBnXiv3f5c4bEyjCdjxPb/z8NSkgQ4HRMarD638wfdkaiab6C/FuLucENgncyIiCWiDCHH21bI97QnIIlf6tkgxObvEVFHFXPgnfXZw3qrhNB4QXXcwIi2/7B1h5aYW91oCKGf5S996/LqrmQaMAfKwd64oxCVlUATmAA5RQjwQkrCoWSEO2QMgvbMRCimIlBhKMRNDQ/HGoyDuRawOw0YtIrHmmNcvrNz/NzdxizxAVpEb4B4bNwHTCJ0zZxU59uuzLg3Eqw+t/MF30+isce5C319T63o2a72i31D2wzgpiNqd+rw5LDMCUVfMWv6ZbRFTrRSKAJcJ/QRCxOKNr5i76Q0t4in4gHYV9Hz+O//KhYuX06I4c6Q8kAXRKL+JsrYbiKP4CMf034z6ZA1DzpbDyPKH6iPDzCz28voMyocmFrZQfk5m1vsFzJzvl7mVc3f8g9HysyaJn9y9c3njR2LjR3JvUOr754SP5P6vYuJHdn6RCV5b/8XpeST6f5Exz7n5r8z+E5NeHGz8SJ7sTzz5xeHxV6N65ODip1c+/e08Opcld5hVe8enER0BswwGuBOHOCs5yPINhZgpcSGBSJxLJjWMj+bpEwGPiKIdAwtvNNL8ieuXX/dTLdC1DqD/XPv275wPaSEgUEKEMvovCA+CxPAA2ReTpV/tA4QYGplDKORRIrMckNeMAQKpwgRnqnO6R8VpQATjOAKj9O/180c+8a0TuQU0aaDtwiBjwt50AKtDIw0UcvR/2qD5ScbZavgbCf6086UNHRtLPSJgVIySGMSjVN4rKzQmVChPySJGekFjWsEBgJhHvxSJIlNkRNCIB3OLi3f/QItyLQGMPYNrrr/2zW/N4s/ETAPZCRhQ/p+IxHFghJwGcrVPhCQLkXIAgxgjZmLmUPCiDIAGCfc5PUDKJ0KwM+GMHRXDMh6lFbTRuSOf/NaFh9+zcwR5o3u+7T1t8SdeUdJAw0fec+TT38bx6YLmc7HnLeiN8psVGsq2vjFjnmAixJhJnxQlb1jVdHAcEUXQiHPAH0l/HoEYksyDaL5xns+pDR/z4su+rUH/DQLa/Dz5z37g0Y9/MtUpouIc5b1GRCMicEjQTZZ+AIPSVDeH8chExDGTftIScZaDiwLvUAiZq5YeLGgDVHi6uFgnh0qFlYiZs4bK+tEXXXjG/x6H125cq22x8cd2IYLJsI5JH4nuN06IAtW/8uQoUM9LxZbAtF2DyLDpZdwTiAxExKsPLX/unXPn7yPdctc3f/VOUnkH8Wg0Av6Ce9JIOl1QqOY9LDu+goNFkVNk2Q/O4v5RuHmcWUXpBUUmosXnvXXhzr/agltLABOdh/7Wd5594mlOsZ5zT4ucA5BzQ8i9Z97u4iQFJI/hHOtTdsgPJrMBT0SMkHUiQCIXnTFLZs6JAaplQu55SKYFQDhy+cZvXD39OgyOTO+ex+YJYKoBcQwsvpVJwC7C4pg859HEM4OJJgHukZhKzttRdoznhk+8b/Ghn8hMhGJzZCXXfKthePndFiTKllYmTxSjR6nfi8O7yjnkVgNiNZwtlzJ2xBQJ5Wl5eM1zl+750RbWWgLYwvmDb/vLa6PsSseFkqP/i6UPyA/IPOX031wX5eSRR7h5VgxwgNhBIgyYOKuWiEdAkphj4hhYFmYkPUgOkImxjNYwt7J67VsuX/PVJQ1sKyDOXBOw3Tp3CxUxTTQKnokmYJsT9W12hO6Ro3MLj75n4bF38/p5qfeLgJWt6eHqe3X/jQKfZiJ/jDY3xLwpSca/Jan7Q9g+6VYL+a8RI+RbYhkaExkVICaisLh89M3vawGtJYCtnfWHHnzgnd+3Okrvo2hzAFNeP+FicBrLfcKRs5lRLHgORbEFS2gP5eI9eQQHNZsR2DJzisSETPbM8ucDZ2MNBhEF5qK8OHdk9dTrL1/z1XF43faaAO5EvT2vczdpArZZ526e86bWBGw5AWwB28Fe5bzyIa89tPDou4dPvo/Xz4njLpuID9G5ksKf3V9PfC5ktEsgcIyQUI5cK5kZVLb0ytBPQFoUiMnti4qrJCIxq5m27k4SMUWmABoMj37ZT4TlG1tAawlgy2ftd377sz/6z0Eh4f6BiHgkkCdE+jPKPZAXUXIcz/ZfIMRARJzc5U2eyFQJSm7BofhIeiyIijNxSM+vhNESoxE4SKGVWg0aLT/z8jVvWTtxtzYEW7rnrzg+6OQJgK4APmh6baNz82c/vPDouweX7td3mo31hZifJZrJccUCRAaRimkqU9RlLlZJH7bTc6RAH8VII98uBGIKKHo++uD8fKL4lmUiaBTpxJv/TYv+LQFs/1z8b7/4wE//DGRVnVm6gTwfjjlqJwwnxXdxOEo6oanM57RIluJ+KMJVLAq3xJGDDTRR7wfVjOAA4SehfLtmiHxLQ7yKU6vBq6det3bi1WvH76btcMBnsgnYn1HwrDYBu5Ad589+aP7pDw2f+PlyadATPLREgb4k62wRlfbDOguGfUyO9bFAN6n6H4kncAwJaILODtRrz3KEmJNChLjJcyQg8rEv/o65W760BbGWAHZ0nvrhf/TI7/1B3k+nmMrzkBAeFboKMhhgqd+hQwIITMREcZCTB0yk1no/BhEbJbIjhxLZmTUGZX6cGQtr8ZM/LvmAEYfXrR27e/Wat8SF6/a0CZjlUfDeNwGzPAomCmtnFh599/zZD4X1Mza+5xol2JJAU6J6+eprY9gWIW1vQWR2S+BhgUNZBP6JiDCiovgWuUyDCbJSE1MvkUV7fejPVgMjOvqF3zz/vG9s4aslgGnkgH/2g498/A/yprms/jIRM1iaAM4abiNiyvPexBM1OSDdJiHNBmQfuMT3pFMVYsFL8wZy/irnAYB8XeDXwNHemkH5dim7MExIwmjlWZevfuvacYGGDsoomPacDzrLo2CaJh+UR+fmn/7QwmMJ6iGD5WtmKC2rkpIB3yDCpCYmo8tvnwsikJXs8FAsldLyLom0AyfEn0TpOe+Xgc3qQNb3R8Z/0mQYRJGX73jN4sv/dgtcLQFM7Tz417/j/Pn1BARl6F8iciAQRsTEIYow+YgDZ+QyJwyQqf0T8T8USqjhehJxgoPyRqS2AqSj5lT1swsECGwZRHmAnO/aUCRY5GXT6qnXr5149dqJuydtAmaZD7p3MgkHgQ86cQKYf/pDw6c/NHzyF+RZo7sQqH4BGMaPfw1Jn8Hr+Wd0MkbZAFCDRgnV6X1cUkSSREzPEFI/LU55TCAEyqu/eUcy2QKnkW/IEhGRlq6/Y+lP/kgLWS0BTPmcecc7zl1Yy56+mgMEw2FEosgDJhplEjILd5MV63dpIymXcMkNKpeS6KEwdx2VsXDQAUNetFTmNXMk1oFaDGX7htJ3SXVWZtFx8bq1469aPfXG0dKzttcENGmgnUNkezwKHly6f+HJ982d/eBg7YwD9PWhqJse/1PtLjWX0h+mT0i1eQZOhd8ZIuURblqhBEUGRSAQAyMuI+XM7BQmKRAh8qKcrV3ST8nUoGS4BBoeu/rIVzW1n5YAduc89Nff8fT5EWV5uLSNFbWiT2kgGwTQiJCWA6LkACq4EGeHydxQl/UxsAVzBrHgP6ktz+FbOKOmos+bYupUn0gTlqbNkmOC3qeiNMdYX7p99fQb1o7drUOCWR8F7z0fdJZHwRM0AWHtzPzTHxw++QtzBerpPgV6ntmJF8neCYyzY0kXZtEX8rCAUsOU70hjAWEKKWwJRhk/SDWkmv/JcjVql8FZTDotfJ246sibWvRvCWA3zx9++/+2uh6kMB/JoDXZemVKaPAbYcihXwe2UTfFgk56Q/k8E6syhOkD1DYeKBklVf2ykKOOwubeCTpjAGeeklr0mUfKgIHXl26/fPL1a8fvjsPrDjAfdJZHwXvbBIS1M/PnPjh88n1zFuJ3db4Jz3WE8KGfyvTJrXu5sF4RQosxQOIGZf87eSOL7JXIeaaRg3CkI8niTSqUoiWeMnRCABqebNG/JYDdP6MzD/7R3/uBdQzEwwjMMbl+ST88ymr/qd4vtX/WKzSr8yNZEoaswmQ2Ucj3c8yrwoUVWtKA+u3Jt5ulfIAHeoNHIgoKDZUhBJXNMvIgUhoSHL977fjda8dfjcHK7oLdh1IaaNchsk1GwRzPDZ/+4Py5Dw6f/qAVXvahn3pCP2sFz3UygP8HZ8cVIiaOMkFg0e8UTZ7AiKLaAOH45+cPagGfYaLUnybMJ8v9Z61/qIcAUk/B2fCLeP7EqaNf2aJ/SwB7mgPmiiYER9nsjUJpHiWZZ2YQIiUKP2JeC8jjAdI1Y07rwTm+xFQkSaEV+3IACes05oaZ4ctDZQGVopUN8TSDRaKxpRMI/ZacBxirx1+9fuTOtWN3x+F1h1MaaNtNwOyNgsPameG5D86dv2947gM1fMMFoXfhnmugB/ZCZBtdg8iT0vxR5H1i4h7ELPaQAZyk9wChDyWkHkW0B0SxGPwSQnpYlDd7fi9GeVEQiBOqMMphfu7En/5PLS61BLCHOeChB//o7/7gepmJxbQjZlj/8vkAEQuKnAOuPCzX+OluiNlFLNjZL6RgR1YPJdkyyy8kukDPJj3k2QOxL/2ybkTZHdOXwQUREoW7LDqavsoYLd6+fuTOy6deP1q6vT/MzTIf9FBKA8lXB5fuXzj7C3Pn7527/Ok64nMN4/ekhRJd9blhlnPlR1plf1ajlVQvOPYPiEGRYvmtELXGp7yvq0IPogidy5koxQgkQMm7FbpwnDVTOAznjn/lPw9Hbm5BqSWAvc4Bn/v+H1xDMBKeI1GDACfnx1Kbl0ViQwml5A5JnKJ2lG6AS5Jw62CQHGCYozYHEDFHMHyGMBqiqcdmtoqkHKTK0tuz8EdBYHZSRUwA5o6sHr979dir14/cibkj0we7D5c00C5BZDw6N3fx3uG5D8w//YEQz3Xh+z5vH7gOQKFAVgNGIfjXHFBx8c2UfMo4D4nYA2RbLBm35CQRcvUeGSWRsAg8MLHW/yRMHoWWGGotQMUcCVKrADQYDo+9+UfCSov+LQHsx1k/8+Dn/t4/XsdcJgUlCn8WOUmoThSxk6jhOHAk3SsORNnfKKbZb6IDBYYL7hTzw5hCILckrO0ClyGzDurIrSDoXKGbBuxugXgP5I7ERE+22ECeG68defHakTvXVu4cHblrd+rcThNwZVtFzl+4b+7ivfMX7pu/cG9f0O8U+kx2WmtnANaYDPYjtmTQNHq1amujPAoudB/d4TLKoEQEipGdLiiIEh4Km1pSRQ8gyHqX6UqM3Fv6IP2YMJw/3qJ/SwD7Pg/43Dv/yVqcU26oKHdGIXdG2Rsg4pjtYoQ/qjlAVBRRFH6SgCi57YE8Hij6oEYIMa/Bp/o95g1kgAODrJS0WywIxCSPlDSg6Cx0H81oUVB5gNogy7RgbeWu9SN3rh29a33lrqmC3bvTBBwcaaC5i/fNX7x3/sK9ddCv+Ps1TR996D9Xo1zVW5aRQC4DUMa+bBmeELVOJwGRCvMg3AiiOEpPqzZh+pdjk2s0rKcbIIjfb5k6JE0hKPMHRETDY0dXvvQftejfEsBMnDPv+J7zFwI0pmc6f5RivHBGleeTAjQLXqScnxzTc8DVzeFoynMRlsiOYtlvQNtoCfRRoKQiNYHsRkAWWQq6wFn860GlP+DA0ZGFEmDFTsGCmTUD5fboyF3rR+5aO3Ln2pG7ptAEHEppoA1zXgn6F++V35rHWjj2iLWxyweKDCotsyz2cnl+5BGrdookRPtIQuNRaU/V8+TE5xmlHxRjcLqhWRKCleGTKcwxxx8QUxTnI9gXzGoMYP2xF05ddeSr/00LOy0BzFQO+FvnL6TIOrJ6QUJplrUAFv5zHsCKlJB8i+L7UPuBwhxNsT6qKHQImlHA5KAh8SqGkQ7V+i8tKkcTPNJ0wUAFIfrQEpNJGRFJy0LymRIsZEON1OE4RaH1pdvXl561vnj7aOn2lA+aVWQPtnPx3sHq/XOXPzV3+ZNzlz/lVfU3+AHo/Az3eIBoQGWqC98pQFsJrswYkVn9cn2N/ojglqIOlLsJAoLoOJefopi+DCA4uzdGebtE8QPQF6PuqEnvARBBIl44efLIW/5tCzgtAczceegdf/vchUFeXqERK4FHuaE8MgFdcCFSQWl4daC8GAzDJkp3VMiuA7m659wi20SCEpE51jnAZAiYiiuwCwV+oYwqP7IQYik0i4gFCXCUBhhaWhYDZCLO+WDlrvXF20fLt89QE7C30kCDy/fPrX5q/uK9c5c/NXf5U+PuUfdt1Q3L3EF4MrJTzFEcaYh9no8QAVnBZCDvJ9PNqWFvVnEopl1qCpZx/JJXAnT2EPO7TX5K0nWggvCwAD7KEFWJUHCBm8DLN92y9Mam89MSwKyeJ3/ohx/75BNZ8oGIaERBm+qogV5GrDGppBRqUFEHKg8TQdwR1zTQqKPaEBSxKd7FbBWnGWWuy7Y4yy0C5AUEKjzRHFgLaBxNqAWFmH2JAwXy3rDJtgyxoBZ5bizrBSTbyExxeH0cXru28uLR8Lq4cO364u2Vq+UhsIrkeG7u8qcGaw8O1s7MX7w3rJ8ZrD/oH90jwLBR0U92VKtIPaO+p1EnD1bpBQb82CA1ochm60UROmt2RnmlBXS02UAyPBfmaJTPECd1nxg1RTF0m6zogGpGCYhRrkhOUSvPecXia76nBZmWAGY/BzwlYE7C/Z2jJCGSERMlHhHruC0ax5iMHbH6wid2qRKK8lp+3po3DFEy8tT5YcLrd+2FiWLFXyxx+EJp4mNxmFGM1lb96fcK4GRV6aQjdLxhIibAIYmV+jDKImnBFOdWRovPXl+8HXMrKR/E4XVx/roDwQcNa2cG62dSxOfRubnLn5pb/VSI5+oXb11ze6J7N1N1Arp8JtZjAK6fD8WD1F2FFOgDKFKEl/UPgsAgljSnLWip5iHUTBBz2mEvf57CLEs0n/xWVZMvCqL0qaqfxNnsnQby4pmYl5/zsqUW/VsCOBDn4nvf+/lf/rhQIkqdTiVeazE+klshQ/bI2E4RkS4eZHlurHJA0dyUkRiB4cJ0aqqVUSpbYNpJKDTUsabJPyKEYFfSmO2cTnaByuZwijzGscDozBQWqY34SfgreHfZTDmVH5W+GiKB4+BIXL49Do6MFm5PpKP0POsLt2NwZM9GwSm4p08ML95LxPOX7iPC3KVPBZyT345Ll2OvR3eMgTEvo/vjWUV1JIFgHPVTdGWhCUZ4CQwr24kS+B06BHSSimr4qFK5zpCTfL9+ByqHXg39XJxlohgbRe0YOO8NF8wnJFnQY/f8peHtX9ECS0sABycH/NIvPfJzH14bLQgcVDidkMXg7HMaQIU+lCtu5ImxNYaMrPqdSh6FFYZLMSGGYCRFi8t87jASs5MNJVR+aEUZyqRVFgBA0gBbewM1d9XvYqkOJc2Y6aFFk1IYCmZWrPxxHUcPqHjb2MpSdu/kR8jzEBPx+spdqcTE4Mho8fYSW9lVz6P56+L8dUQU1s8M1s6UFOhD6tzq/RyfTp8cXrpXyVBkex10g7W/rQZcqv7uA1TEST9nlgvL7q216CIbtGVhimHqbhP0YZYAUhQOILFXr14PIlu0T6hEgs9wMmQhTydKCSPIn5WLypsL/SihnwJxRAzlYsak+skUSNsIIAzm+dgb/8bg+pe3kNISwAE7owcffPDv/8vL6wtWOjSXYTwSPzytxNVemDPPpyi+RVvRy6A4clD6TZT9TuFrZvd56IoAm8od2kwUohGRJZKqvGjxKcsDA8V+lWNavouYWehJpOgQ+zFyrnyDkaLTwMEDmXkEQ04PHZgkFLQ5ZxaxUdOpBakZg6w1MZt5dS5DjX0JZxDKjDq4kkizo4hCyAwmgMK+UPTg9fmDaLEcp7BmpTbJTY2B4v/sWDz2Jyqpn+1TRNHPSdptnY4DVdpAeSWQBV1W93ZJKjmsi6xtysGZNhRy3oks6qFIurTF9h0DvWiSiYIZU3OMYXh08cib3jU4eksLJi0BHNTz0N/8/nNnF2RV2KlBcAbcY3cybCihkQND2ghl8nCaKrPe/pEQmWXnKymAhqJKxOLS4TCcnAZ0TmC+WqTltNKPIbB9QAr5RvgovxLlm7IhhjJ7TFojfg6/kJkwF+MzpZEE2ODILg3YqGUtNkNmoyriwSbCKl4ftDr20dPSZBkqV2CXqCgY91vuIE7ow5SATux1u1bjsSCTTdhmj/HvPJjhO2DROBnGpPdVIJ9SoB68YNsP5q9Hn3WybzuU0KlTX1DZOpdMFIp/r6BAMWpeETYbAhEfuem6pS//Zy2AtARw4M+T/+RHHvvUhVo6NKn0yCdRaD9RZD6pUImySJz4TRLp97LB9J11TJafI/aCQqGYCSe9CqbiToxMBs3KMDCBO2qlH4rudMwjxOIMrgMJZtNJsMj3limCKkQSlWWF/N/CCXfjBPuD8uNgVtg6Agc6TgjUqesh+88lmhccJv1yA32OSFWY93L3bON7AdIL6iLbTtzx2DIXIdTxHuQfX4u5GQ1PoYHCj4i9OTsTG5UfM5kwW1+MIuQpyUYom9l8nYUXlBk+0oak6a7KwUUrHcoUA0ZCLUDeA4hZLMgwPikwmDiu3PGSpS/5nhY6WgI4JOfSL/3yAz9zbzE94mgWxHQ8F1Fmv9E5hRlWKCUJuXybRiJQAAHBfCNrGANAMQy0kNeGgEzMhZGJTty7yAEZ+bdmAxbDUUMClEJbeInFloBCCq0JuJdMEMh4zloQH25ywAWfYX2RgRyWz5aZKiFaZQmqoJrFrtkzcKQZgnyzq+VZr1Klj8bsXonfsfDQOnegdurOl6uY7R/A6O0JEP3Gb843zptRVJpFtrPmOVnpf+mkJNYjekCKZV882uGOTpsZupKYnjIGIsIow4KyD5N0B7ns+uYZMqem8Ng93zz/7DbybQng0I0EPv+uH18dLbtWQGptTjJBsiiQxB4zawgykk3keopMQOaSUqEVSb/OUBwpj39JlYhKGy8xXZSfiymYowZFM0IgtnYirO2CszLuehKgCE4UWVPDOzLBkZkkOJR4WgazBk0KRIQAoiByNkFReC4OaFQ4hyVQdipug/abgB08iJN+lVCF0G5Rz30qnI5tVbcLJlK7S1EPigW+dyMG7r+RGbJTZWAiuxSm8JW1cc9vCUW2mGK9hYERlWQpxB5EppB6giDbA0H9YXQhgDKFmWHcSIGBtkGDxcHxr/kH4UgD/VsCOKTn8f/jB558ZA4ahYk4BfpcHY3IdgCWOVqwiJiHtwwz/oXOilX1kx3lP+ZaUBqIHHjs01LZFdCSX7QrNH/EYMmgSVzIqMX1pwGZ2XKutQVuD/oyUOMfBT8AucoVpRrlbGFWIOq8f6o/Pjo56yoNgMsI13KECtLDdek9JoV4CB+5aeln92MM/d/0ABvPAxSQMfkCoRi3mIvEQuaxWv36gKANVlbdL/KyMK9QRgJR0zITg0YsFGMu0+/0PPmRLIIRibLGeT6c9aMZ0ciPIKw885alN/6DFiJaAjjk58K7/9+HP/iZiCEsPZSzQyQVChBJ4EZeu82S/ZGIOEQzoY2G9U9m8yBngqAPS//Ma8MRVMVfWQZ20hFqNqAqkBDRUzKgUCTiMj/ISIuMAXKjY6EeOw6FJoZSBCtvUBSG2SJOJgdoyVz4qS4NwOQMpahyYZjC4EXo7QC4ltVk80m9g0JfuGev0jlOB5Wpb8OrTgwwWBDgJYDQhxCVi6VsSx11MAm7N0M0OnkHTNyX6xdYmiomiGNXGqGPNCsYyEgpqhQAhhqepr/iKBih/8Bz8egf/6bhcxvs0xLAlXHWH3zw4X/4k5dWl22xbwRESReJKbiGoDCFcjFugR2oTpwxIYAR8Y/ZicMNh6noCJVuwAqRUicNiKKcYYtaDVHRlYulcq8iu3UnzlxPuy9G3u6mir8mGSiBR5UtchROuBbnMXXeUIsGbJFdrQAls7PW/mk8Lt9GVXdS++v6ur5MF1yA3kDlAVyLOOeqGuRF+sltbKHTQ5gOIP/ZIN0BqS8jZbmIrM3AxiJG168Sa8h8EqUViJpWow4AOHcCCQJK6j1pRpRqD931QBASqgwAiOaODo+/+fvDsSbs3BLAFXae/D9/6PEHBgQQjcwwVnIAR/UYMIINURTcoiHteHEIiszQSRtZoSENuxkRiuxJ+pmZanbB9JWwkHPYhHXiCt2OGu5ldaBCwKPZDECp9Jk4uCfM01qLDtlnc/rVPkyXxBDVhTznJh0gl5ZA+oCBfFYdl4NSSNlnLy+6ydRpDgxvJ0iLAC4/UXam7fqVibkd0Kls+bHBifyN3Csdymx4o1GMVth8yXQsogklhu/6gEBMMWWLkbYWIV8jjgmGRFrcLRmFkea6+RoGsfAleWQA4ehzn7/0J767hYKWAK7Qc+kXf/nhn/vIelw0ZjIRpZxP67hRaCojCkX5GaIux1ZtQhAVYZQSoJsEOlEolTjnpGJYN0jT43S3Vp2HzJkpMgcq7QiTzw2ym0pEGFRFtBKf7PTY8BQ5wMZ6VnDGCl2ULVxYzVFWiJ9jDbyw3fnyZXd+NVH6CZY0AB6YnxV9JR96bqiSn6ziAurMUTnKdASuVRjHpKtAHh0j95jiAcqlM2DR3XSB3uStIuEp5bzKfDJS1Aa8zmjKohHEot2WvKWZEIP5o2ZruyIFkTNKSE87txCPfvE3zD/vy1sQaAngij6jBx986l/+hycfWdHa33hJqoYoSStQ/GTUUyzdoyFXrNHGYp0AMzMQKSRNRyGYmnI7WIEHlqF0UZSxeg9uNsC2/M+bzLBVfyaFsNk8MBFfF0V9CU+1kJz1I2PhLRqtOhNZo44leSBDVTZrCsG/50OR1xF+qnwe7AhIRBRiH3w/jvZj0B90+gOqdgg6z6nay3V2YVfpu9k1ExDhX1DsiiKVSUJ+nuAU/IrnV7oCg1wqxBgtUsQhebsPkOVGpA/IhUQ2dpc9r6AE05WbTq+85R+1e78lgHa0FfivD//c767HpdwKlIWAohaXqT7sNgNEAUI+E8yDoQJEsIo9AvKoKpFQUYNYvhghCvsAUpsasz1gqEeF3JfbCK8XVLCKXCZGE80SkhPte7PEfdsusO6UkU4dyt6DMlpypObCnmJ228gMqqtnmOrY6NaJYqX4M8tXQweQ4Qq36ZB5OnPimuxTs6Go6D8VBo7HsKJ5CS43sJ3GEhJt1gI4ZddLZZzL80SmVDQYO0ZSEdcYSiLV0B+lQHDLvaoix0Q8N7d+9J4/3Qr/lgDa6TmP/p0fPPvoEe8RJmOAYhiZglfUMplN2V5JSpD1BlBBoSwiFKGeM+l7wbm30Bq8METd/jDpHU3R7IgpUQfFy56tXaXFfJIYD0r5bSwLvUaQQU4COnzKAkzlBGOlLQsg48ts626fV4KZmHo2b9kARGV7mWtnAosoVctc7OEX99Rw3CGQ451yB19CYeiYAQKbAYkZmINBXY8wdukhp8tQ/hKxKCMhxoypyUJ3ZoLC+0RnHf9BISYJ1ENZBzq/4pWbTi6/9f9qt3lLAO2MbwX+yy898h9/Zy0eTUW0RPORWcSV4TALT5TFcI80MViDSZEMsvyiIswZJVVIEABMGrDzYdMuhEzyMY5mRRSIgzMIS68hsIQ3mBXfNFsuA4wULsy+GPxGmBU5Cz5JZAn7xJG1Wmh+/SrAwT2qsFaAIKZANqtJrY1OFvGkIBvWq5QT3aAiJ4ba5dGljSrJVO2Cqe5Nc2EwOxPx5WLBLyvH/LtnVk4MxJwHJ/rI0YC0LYtmGxuJhyDwTpTNYUV7QGxHysRzy/HYG//nwS1N1LMlgHYmOE+884effGAIHmS1H6fng7IrYGYDWbyBVMYnFgpNmiSzrO3nb2cO0T0ti5IvEyGCdcPLyL2pnp2oRKTXwNkHEiJIF0nnt3a0ADJOmUaJIQFQZVdA04Cg1D74skeE2Epysjc0t+ME3dAqy2gWtzF6RLnm9QNkZm9Rphtz5JbL3B3m5BygL6wD/XSzAGSfmd1j7BhAXh+4wwrlQnjNHYLoNBR5InGIUFUJmdyWHFbkPAkxEIc0/5U0INlCgr5JVJxrhjBafsYNK2/+/nZTtwTQzhbO2m9/9JF//cuXLp9IWArbpbAcJwQayt4AaQaAQiHNyH6sp7uwlXvi/MQkKFRwf8jmJsMo0xWBTLEZEH59GvCGCpMpywFFcg5m+atsCTjE3ywGw4XmjHNEFKzEuo9p1E1hLpo6HT5wU95DZhM+S/CMLtTCyAEVjCjUT+gU4nisHDT1iIOii/hw/QHyRl3XgcAGffVPRJniFoEHcNbnYZH8sWOMkBe+pLuI0EYmkEG/EDlPEWAnOCL/yYHyDIDmj8Ujb/hLc7e8rN3OLQG0s51z4d0/8/AHH4pYtgQho0/pjCfLbBZRrefVhZGSIphSgFDWAmTtK1pXAEaZNEBGxHBdCJVnSLHbmAxTLaWpqhIqdKO4v6WBWtNKDk4RCL5at6YFVOwO2YbInI3YsW2s0g4XXKjA6IUsE7iuyQUv8jU8V9thbgRcS/lXi1eeGtQZ5/rkIdmn3k5WAZ+8uADdPCjcf/Vm1M0sMw+ACrQV6TfxaLQTCAzyRjpEs8n3FinlhvnR0Vf98eFL/0y7hVsCaGen58l3/sgTDywnMIDZjoXJDgbE9jXmXd9097PhCNWDgVJTy2AguqctcqQkItVlKw1UzCbZWcnHtBwqDQFKqYrIogaRxUor+SBGJS2XUCPXFlQm9URl1Fx2pixgHmHReesooEGXjaIng8gLLRQCrgdYzKK1Tx7co99J9smpX/W/goI0/Eb2rQNXw4gi9BOoyHkSGe1nMxuAQDwyMYexnkue7LnhEgXxJDZEZcE4FIHofLmDbI7E4y+8bemN72i3bUsA7UztjB4888QPvfvs2dNZPqh/OExZCAhCGE2Lspn7H4ntOMEofUJdKmE0mU2l7zaKxT2mWEVGYVBCxoYJRGJdP2aqZaWNsHPBtVB0I9yysfG8BFtiKOnOl2MZiUBeJ/KiEvSHmRNkRlR+zo0s5kHj/B8ZDouv0wDXUtG1UjS7fIbya5e4T/0+wFBwLqVcEPk5hlF15mIJyVbaU8xhMoU/7QOH4s6GYFotHRTkdBhBR25eXvrStw9O3NRu2JYA2pn+Wf/Ix8782IfWRsepiCrbRQH1mOScGwAOEWXxNfsHGE0hqB0xw8rPqVkxlVSRUN5EF0FWa+Ai+xwdc4aj2F5y3kAuwEvRmyOVGDJLXsbQONNoTH1s9CcSSGRHCCWd2OCL2o+sjuy9n2H7JHnObJVQuzmmE8mNS+W4fCAYkSOSkpkl2OhepwHAZMKiKV0UIEQwQ6SbEQ2NVJfHBAWCkDZBhIHrNogRk6SbUH2SUVrWkwvD42vHv+xbBre8tN2kLQG0s7vn4nt+9rEPfX5t/WQi2gtSbzPBqGDrgg5xlu81uI03HDbLB+T6CdX7ZPHszathUdR4lCATnfMwMxUxgpJLDE0TrGMATWlueBtLhU6GvM7UR/WpPzAxtxK/twLUHTDHNQ1VuEZ/QzCuMKeiMWEShrEgdqgOfNxno8pABehnozJBht/LXOCsMrsWaj9RXl3L9pBS7DNiRKn9k0SzaAFBmACk3r/FgC1PhIbLq0de+urhK7+h3ZgtAbSzx2ngwfXRqaIAwbGnG0ifEXUH5mIkIOFSaDxGVpoL/IKy7cU6JZYlNVizAfLYkTFYLxvCEbb2D7GQggwswyHNk7u1tr5mLkNPE3+T43iu3YN1W7frYxp0YxeE4dqMBf2ITbeWZ+r5FqbxucHi/cHKP+gkOY77Fv0XnNq0ESFS62hrfhbMN1KMXCAgVK+YEWUYoN1J0npDIXINl9aWX/7KhVe00N8SQDv7lgZ+7rEPnclpQMigVSbIY15kl2C546PNBAXlV0VSVYwvW8dKMNXWwfYZpC72bM1hNGdIMWzsymOGuvNkOJoNNVvOCwBlh8MW6TB6DwTU5T9g1ptK0OduyHZbu7EvuEeTQXh8o1AF6+i+Wg0o2Jg4UhXQqWN3SVakM2FvgMFqSiJRlk75HSNiwX/SooduPGSjx2Ak6krO4GIWT0Q8v3j5yCtfNXzF17cbsCWAdvb/XHj3zz7x4YfXRqdJbeVzIay4ELGITisdyPnPMIywGlQak4snJUhZnkwlB0BtKQ0l1GpNOxBGOYlRDXgLSzKJoRrIyGwjW0OYElKZHHeosi8k9vG32NYrsq9rX9F2ATltdI172a/79tbmXMNE4/hAPR2GCbi9DwQ8/R8qpd39YUYfQy6xOroU1U9hABT+TzHLka9yUFrR/PLqkZe9fPiqFvpbAmhn1tLAe372iQ89srZ+lVI/uTh/aTegss+UdsTYk4hSiIdjf2YHEc6bBGTYRBqUU2SP/pPiYaCbt85+QJbIzPKBOBfCetYbKrxOJrgS9mH35JIb3MIsOsW+heBjHcZdDI5jkBhsAu9QR3yUNniw8jKtnlDn2d1A2H4sWb1wh0gw/VLmpygPdLuVMhm2xKFMKGKeX7y08sqXLbyyhf6WANqZ6TTwc0/96pnLl68t1M8czUeSCSIbsiYzlxK+GFKqWfxIrb/T+LcYFXi3SFMgC8RkavM8Kw7IrQms1Re44oNmMy8yCqa2AI9qMCgvNe3lRi+HEw0jE4XlzqgLdIm6JiSirt3Nq+2PzEw9HYMN5QWekn/aaW6NQXGdiLwmRo7yKlyR1RosehNtSyEPTdU9E7qiEanMD1QSePrGsHDq8tKdX7Bwdwv9LQG0c0DO+m9/7Ml3/+r5p08jzmdLYUPtF0M/gYmK8BzVPsMqAsFEHDOcLku/6jNsRrixKDabyKusUE6USk0MZYzMfsGpYzpWuEZFcBR+egyrv+lmqH2DWYG8uLKOAfqhHdpgt6u/+t/0GLXrMUbwSuYhUJW5NEyj0qGGqCXBJgDj286lPYFpIIo4REqo60vX0MqfeNvgtkbubAmgnQN4Rg+eOfevfuHsAysjLAsZnyxZM6u/URRqP7lt4RyWotEOEl05BgCn+eM2yGz5L/Nb3VBLmDsoDJwZvS3VZWhckXCssIREPMj4N5FfRf1eR62JjUrU0d+sWTZ2VFAagn4IZpIo31UPdZ/gPh+ZWP9IWNEhcV2XFMdOtoEMsKMrb0FgoqAqE+UXyySf4LNL4HD56AuuWXjN14aTbaWrJYB2Dv4592M/dfYj51dHV+XoGSyTB2ZUkLWgjY/UyHPnYWrwqAiS4DGqQkqGUGRcBCy7xkhDZx/5YklvSahkNH+0ybAi+LLwrN9YmDq6xgw3e6jEmUtgNhrGFQTk6n1MEPdps+lvGPNdrD6NsMyfihrUPyfgPmRKZrluzpzF+suOGBGBhyvnl15w+9Ib/2K7ZVoCaOfQ4UIf/diTP/WrF586PsIys6jz51o4WtkfGcOmcWvsAYUshpOWCUAcWJj+1b4Vstpo1RNQPT/wSJRkC9jpAvltXmdaUAPx3Psw8vWzDFJ7Cnb0h3Ke7K7ZKBN0an9YBqd5GCfNBv2U0YHrLAYbUQfrFhzkGmra0JlBSgAc5lYXr8by67567rYvbLdJSwDtHPaG4Md/6sInn7xw7nq2W1FGr9+GeyQxUaq3zAzLM2oyYI7ZFEA6ALjV3Oiqe45MwaiQRmvOHoLZ0dVEZSibXAdoP4uWxQKqZ7MWw+mdE1ANNJH3792kA0BPcHcP4PqrThbazqetYih1ZgBBP4t+6aKSIYrmEYwOBNPiqfOLz751sZX8LQG0c6Wd0YNnLrznPz91fxjhpIseUA6+wYgE9zdrXyYNKDWoFPgQWbcC7DBHWPpmXlZInFT4ka+jkwbV0mEYqWe7bGyxklgnBr9cRtYdq2KCUi++X+l3YoJWAP1zAjuw5b78wKHOMsxVmwCunoqcvI98VR4WAHgZah4Mz6887/Tia94WTjeUvyWAdho09FO/cunsyRGWqzdI5tpw2SFQxj0KTA9jMOktxjLzJwlTm10wkZVGgZKoaMy5ABqLrTyQO4NeBAnuWzyxZlylDwcTcQ3B9Ixpe56EJ50KoO+ztbAo22xWoVZ9HQARFbZPptyio0gHJuLB/IXh6bjyujfN3d6gnnZaAmjHn8u/9P5z7//ExafqTCD0eeHmZ003Ed6ByszBbGxV1jHVEBiGwu9WkctiMCpDSqP4L6KhYcCEWvvTP5iKZEUPelP9M/p4jvFlvqWlToAL2cdZJKd6cnBPYkBwGRFG0icpsjnBny4WxHPDc8NTtPTyV85/wevbm7ydlgDa2bwnOP++33j6gaFFh9iGrWwoFouEJxsdUFdcwwuOVou7eQmAraBQesJsLp+t6tlt8/oPgrgJhCRBitowkskBR8qX5A3yATa4bzYL9+OCf4XY9D5gDMM0OTug6LX1/Qz3ycHw/PKti4uveu3gWV/Q3tLttATQzjYywUfPv++/X3oEly5fV6cBCxOxbBdzrGR/4ByJS0WvfB7nK0kkawdM1mCAxbI4UOae2md2WaFowHHQ4W0nsqtOnIu6XS4OxieDze4d3vBr3VvPGJIpvg+O/W4w4J4ugRmR5o88sfzMUwsvvnvw7Bb322kJoJ1pnNGDD176zx+89JknL55dHsWT3UyQN00ZYgITnb1MWdat8kHRgeAeHSHubJZV3FBwUcyPZoNLi31X+HNZFEYRFHIGYZUJ8Abz3mneO9gob3QsvRyaREQc5p9eOBUXn3Hd8FVvCFe1uW47LQG0s5vJ4OJP/5cLn7+0euFkjCudcCX+uoUgxNaTwPYBlNdfK+kI4+lYCKZdoF8h+7I0wIYnatmPGtwBz/RP6ws1siQPCeMCPry1QNVG+OCu9sn9bM6KGGqag+IMwyroqfDRYP7i/LFLS8++fviq17Wg305LAO3sD0Z06YP3XXjg0tqFE6N4pCcNuPhY8oEf8JaP4Va0UPRKjcFtGSGgGgt7lJ9R9Jtp3FIYklOWJeSL0BD5zWGadEiwORbUg+ADnQq/Gu2CeO78wvGLCzcdH77klYPnvKS9/dppCaCdGUoGl+/7vbXPPXXp8eHa+glgvj8TuHxg0HZnLEPGEkBjsRkvq740xCrA5gMboy3cn41+QeNcgrthvZIMclJx2CTiY4KcUF2ZWiLi8vzS+eFpmr/hquEXvS5cdWN7m7XTEkA7B6Y5uPzwxbVzi6trV4/NBK5r8DIPPiX4zkC8A0r3YL0BjB4CbzzONUIUk9f4G4gF1YtdvFECqKfQyXTlsfnjcf6Wq4YvuHPwnBe3N1I7LQG0c+DP6i+/f+2PHlp74KnVJwPi3NraNbRxLqDOtpciPJUnjGMWlXYhf4mJrYcX7Ai6o/K/WQLgTRPAxAdgYhouPzZYWAsrPH/DVXM33Tj/8te2t0o7LQG0cwW0CB/76PpnPnvpdx+Mq7R2fri+diqhRv3JwMVgVJJwokRdV/rcJYkWreT0iM7yV73bhQ1j/RbuIOa1ucWz88fWw5AWnnvr4ObbBs+9q70N2mkJoJ12pFF4//vjk2fXH3x8/cnLuIzV8wtEtLZ6bX8y6E8MCSxi7QC6Zb55nlo4iGsXGPXG6o4H+jfChkuPENHcsbUwT/Onj4SrT/HxY/OvuKf9cdtpCaCddnaQG546S0SXPv55kgB/+fGFHMjjcLR2aux7PdgoHzVj1CITvq73pjQ0GD4awih9vHDVqj544Xk3EBEfPT7/qhbl22kJoJ129vusf+wj63/wh5NCNBb2MZOEuWfcOveCO9vFbKclgHbaaaeddg7PCe0StNNOO+20BNBOO+20005LAO2000477bQE0E477bTTTksA7bTTTjvttATQTjvttNNOSwDttNNOO+20BNBOO+20005LAO2000477bQE0E477bTTTksA7bTTTjvttATQTjvttNNOSwDttNNOO+20BNBOO+20005LAO2000477bQE0E477bTTTksA7bTTTjvttATQTjvttNNOSwDttNNOO+20BNBOO+20005LAO2000477bQE0E477bTTTksA7bTTTjvttATQTjvttNMSQDvttNNOOy0BtNNOO+200xJAO+200047LQG000477bTTEkA77bTTTjstAbTTTjvttNMSQDvttNNOOy0BtNNOO+200xJAO+200047LQG000477bTTEkA77bTTTjstAbTTTjvttNMSQDvttNNOOy0BtNNOO+200xJAO+200047LQG000477bTTEkA77bTTTjstAbTTTjvttNMSQDvttNNOOy0BtNNOO+200xJAO+200047LQG000477bTTEkA77bTTzpV+/n+PD2Cg00J3VAAAAABJRU5ErkJggg==","engines":{"inkvec":{"svg":"\n\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.679296612739563,"dists":0.0905103087425232,"dino":0.9709986448287964,"coordinates":894,"geometry_ratio":2.4004237288135593,"paths":29,"bytes":14893,"seconds":1.2288422000128776,"gradients":18,"arcs":47,"cubics":23,"lines":300,"primitives":1},"vtracer-1.0-simplify":{"svg":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","de1024":3.917470693588257,"dists":0.12030941247940063,"dino":0.9030295610427856,"coordinates":1012,"geometry_ratio":2.1440677966101696,"paths":11,"bytes":5366,"seconds":0.043395399989094585,"gradients":0,"arcs":0,"cubics":162,"lines":4,"primitives":0},"trazor-auto":{"svg":"","de1024":3.8670613765716553,"dists":0.1159868836402893,"dino":0.9119796752929688,"coordinates":636,"geometry_ratio":1.4618644067796611,"paths":5,"bytes":3452,"seconds":1.7424108999839518,"gradients":0,"arcs":10,"cubics":87,"lines":38,"primitives":1}}},{"key":"openmoji__1F334","label":"Palm tree","what":"OpenMoji","artist":{"paths":11,"coordinates":286,"geometry_params":286},"input":"data:image/png;base64,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","engines":{"inkvec":{"svg":"\n\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.08318335562944412,"dists":0.005840718746185303,"dino":0.9998347163200378,"coordinates":384,"geometry_ratio":1.7412587412587412,"paths":3,"bytes":3947,"seconds":0.5330908999894746,"gradients":0,"arcs":22,"cubics":35,"lines":56,"primitives":1},"vtracer-1.0-simplify":{"svg":"\n\n\n\n\n\n\n\n\n\n\n\n\n","de1024":0.5740787982940674,"dists":0.041034996509552,"dino":0.9954640865325928,"coordinates":794,"geometry_ratio":2.7762237762237763,"paths":9,"bytes":4355,"seconds":0.0368908999953419,"gradients":0,"arcs":0,"cubics":128,"lines":0,"primitives":0},"trazor-auto":{"svg":"","de1024":0.31811508536338806,"dists":0.027923285961151123,"dino":0.9973630309104919,"coordinates":866,"geometry_ratio":3.664335664335664,"paths":5,"bytes":6064,"seconds":1.8486791999894194,"gradients":0,"arcs":10,"cubics":113,"lines":40,"primitives":33}}}]} \ No newline at end of file diff --git a/studio/LICENSE b/studio/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..16fe87b06e802f094b3fbb0894b137bca2b16ef1 --- /dev/null +++ b/studio/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/studio/NOTICE b/studio/NOTICE new file mode 100644 index 0000000000000000000000000000000000000000..aece7054bc03afb417d7e8b072bd3f32e97b3d3d --- /dev/null +++ b/studio/NOTICE @@ -0,0 +1,59 @@ +Inkvec +Copyright 2026 LogoLabs and Stefan-Lucian Deleanu + +This product includes software developed by LogoLabs and licensed under the Apache +License, Version 2.0 (see LICENSE). + +------------------------------------------------------------------------------------ + +This distribution includes third-party components. Every Rust crate Inkvec compiles +against, plus the tools and runtimes used by the optional restorer and SR pre-pass, are +listed with their licences and upstream URLs in docs/THIRD_PARTY.md; that file is +regenerated from the resolved dependency graph and is the authoritative list. + +The document-level rules in `inkvec-svgmin` (crates/inkvec-svgmin/src/document.rs) are a +clean-room re-implementation of ideas from SVGO, which is the reference for what is safe +to take out of an SVG and what is not: + + SVGO MIT + https://github.com/svg/svgo + No SVGO code is used. The behaviour of its convertColors, + cleanupNumericValues, removeUnknownsAndDefaults, removeComments, + removeMetadata, removeDesc, removeEmptyAttrs, cleanupIds, + collapseGroups, moveElemsAttrsToGroup and convertStyleToAttrs plugins + is reproduced from their documented contracts, some of them + deliberately narrower than the original. + +The benchmark corpora committed under bench/data (test data, not shipped in any build) +are drawn from the following third-party icon sets, each under its own upstream licence: + + lucide ISC (includes Feather's MIT notice) + https://github.com/lucide-icons/lucide + + material-icons Apache-2.0 + https://github.com/google/material-design-icons + + simple-icons CC0-1.0 + https://github.com/simple-icons/simple-icons + The icons are dedicated to the public domain; the brand names and + logos depicted remain trademarks of their respective owners. See + simple-icons' own DISCLAIMER.md. + + twemoji CC-BY 4.0 (graphics) + https://github.com/jdecked/twemoji + + noto-emoji Apache-2.0 (images), OFL-1.1 (fonts) + https://github.com/googlefonts/noto-emoji + + openmoji CC-BY-SA 4.0 + https://openmoji.org + + fluent-emoji MIT + https://github.com/microsoft/fluentui-emoji + +When the optional `restore-model` feature is built and an ONNX Runtime library is +redistributed with the result, Microsoft's ONNX Runtime ThirdPartyNotices.txt is included +alongside it, as required by its licence. + +For the complete, generated list of Rust crates and their licences, see +docs/THIRD_PARTY.md. diff --git a/studio/STUDIO_THIRD_PARTY.md b/studio/STUDIO_THIRD_PARTY.md new file mode 100644 index 0000000000000000000000000000000000000000..d9900ac6a1f962ae8b4ad9545fa472d6f38452e9 --- /dev/null +++ b/studio/STUDIO_THIRD_PARTY.md @@ -0,0 +1,501 @@ +# Third-party components — Inkvec Studio + +Generated by `studio/tools/third_party.py`. Regenerate it after changing dependencies. +Inkvec Studio itself is licensed under Apache-2.0 (`LICENSE`); Inkvec Studio Lite, its browser build, is the same code and the same licence. + +439 Rust crates are compiled into the app (315 in every build; the rest only with the optional denoiser, or only on the platform the Build column names). + +Not under a plainly permissive licence, with the smallest build that compiles them. None is copyleft in a way that reaches this app: MPL-2.0 is file-level and these crates are used unmodified. + +- `cssparser` — MPL-2.0 (default) +- `cssparser-macros` — MPL-2.0 (default) +- `dtoa-short` — MPL-2.0 (default) +- `option-ext` — MPL-2.0 (default) +- `selectors` — MPL-2.0 (default) + +## Crates + +| Crate | Licence | Build | +| --- | --- | --- | +| `adler2` | 0BSD OR MIT OR Apache-2.0 | default | +| `aho-corasick` | Unlicense OR MIT | default | +| `alloc-no-stdlib` | BSD-3-Clause | default | +| `alloc-stdlib` | BSD-3-Clause | default | +| `anyhow` | MIT OR Apache-2.0 | default | +| `arboard` | MIT OR Apache-2.0 | default | +| `arrayref` | BSD-2-Clause | default | +| `arrayvec` | MIT OR Apache-2.0 | default | +| `async-broadcast` | MIT OR Apache-2.0 | linux | +| `async-channel` | Apache-2.0 OR MIT | linux | +| `async-executor` | Apache-2.0 OR MIT | linux | +| `async-io` | Apache-2.0 OR MIT | linux | +| `async-lock` | Apache-2.0 OR MIT | linux | +| `async-process` | Apache-2.0 OR MIT | linux | +| `async-recursion` | MIT OR Apache-2.0 | linux | +| `async-signal` | Apache-2.0 OR MIT | linux | +| `async-task` | Apache-2.0 OR MIT | linux | +| `async-trait` | MIT OR Apache-2.0 | linux | +| `atk` | MIT | linux | +| `atk-sys` | MIT | linux | +| `atomic-waker` | Apache-2.0 OR MIT | linux | +| `autocfg` | Apache-2.0 OR MIT | default | +| `base64` | MIT OR Apache-2.0 | default | +| `base64ct` | Apache-2.0 OR MIT | default | +| `bit-set` | Apache-2.0 OR MIT | default | +| `bit-vec` | Apache-2.0 OR MIT | default | +| `bitflags` | MIT OR Apache-2.0 | default | +| `block-buffer` | MIT OR Apache-2.0 | default | +| `block2` | MIT | macos | +| `blocking` | Apache-2.0 OR MIT | linux | +| `brotli` | BSD-3-Clause AND MIT | default | +| `brotli-decompressor` | BSD-3-Clause/MIT | default | +| `bumpalo` | MIT OR Apache-2.0 | default | +| `bytemuck` | Zlib OR Apache-2.0 OR MIT | default | +| `byteorder` | Unlicense OR MIT | default | +| `byteorder-lite` | Unlicense OR MIT | default | +| `bytes` | MIT | default | +| `cairo-rs` | MIT | linux | +| `cairo-sys-rs` | MIT | linux | +| `camino` | MIT OR Apache-2.0 | default | +| `cargo-platform` | MIT OR Apache-2.0 | default | +| `cargo_metadata` | MIT | default | +| `cargo_toml` | Apache-2.0 OR MIT | default | +| `cc` | MIT OR Apache-2.0 | default | +| `cfb` | MIT | default | +| `cfg-expr` | MIT OR Apache-2.0 | linux | +| `cfg-if` | MIT OR Apache-2.0 | default | +| `clipboard-win` | BSL-1.0 | default | +| `color_quant` | MIT | default | +| `concurrent-queue` | Apache-2.0 OR MIT | linux | +| `const-oid` | Apache-2.0 OR MIT | default | +| `cookie` | MIT OR Apache-2.0 | default | +| `core-foundation` | MIT OR Apache-2.0 | macos | +| `core-foundation-sys` | MIT OR Apache-2.0 | macos | +| `core-graphics` | MIT OR Apache-2.0 | macos | +| `core-graphics-types` | MIT OR Apache-2.0 | macos | +| `cpufeatures` | MIT OR Apache-2.0 | default | +| `crc32fast` | MIT OR Apache-2.0 | default | +| `crossbeam-channel` | MIT OR Apache-2.0 | default | +| `crossbeam-deque` | MIT OR Apache-2.0 | default | +| `crossbeam-epoch` | MIT OR Apache-2.0 | default | +| `crossbeam-utils` | MIT OR Apache-2.0 | default | +| `crypto-common` | MIT OR Apache-2.0 | default | +| `cssparser` | MPL-2.0 | default | +| `cssparser-macros` | MPL-2.0 | default | +| `ctor` | Apache-2.0 OR MIT | default | +| `ctor-proc-macro` | Apache-2.0 OR MIT | default | +| `darling` | MIT | default | +| `darling_core` | MIT | default | +| `darling_macro` | MIT | default | +| `data-url` | MIT OR Apache-2.0 | default | +| `dbus` | Apache-2.0/MIT | linux | +| `der` | Apache-2.0 OR MIT | default | +| `deranged` | MIT OR Apache-2.0 | default | +| `derive_more` | MIT | default | +| `derive_more-impl` | MIT | default | +| `digest` | MIT OR Apache-2.0 | default | +| `dirs` | MIT OR Apache-2.0 | default | +| `dirs-sys` | MIT OR Apache-2.0 | default | +| `dispatch2` | Zlib OR Apache-2.0 OR MIT | macos | +| `displaydoc` | MIT OR Apache-2.0 | default | +| `dlopen2` | MIT | linux | +| `dlopen2_derive` | MIT | linux | +| `dom_query` | MIT | default | +| `downcast-rs` | MIT/Apache-2.0 | linux | +| `dpi` | Apache-2.0 AND MIT | default | +| `dtoa` | MIT OR Apache-2.0 | default | +| `dtoa-short` | MPL-2.0 | default | +| `dunce` | CC0-1.0 OR MIT-0 OR Apache-2.0 | default | +| `dyn-clone` | MIT OR Apache-2.0 | default | +| `either` | MIT OR Apache-2.0 | default | +| `embed-resource` | MIT | default | +| `embed_plist` | MIT OR Apache-2.0 | macos | +| `endi` | MIT | linux | +| `enumflags2` | MIT OR Apache-2.0 | linux | +| `enumflags2_derive` | MIT OR Apache-2.0 | linux | +| `equivalent` | Apache-2.0 OR MIT | default | +| `erased-serde` | MIT OR Apache-2.0 | default | +| `errno` | MIT OR Apache-2.0 | linux | +| `error-code` | BSL-1.0 | default | +| `event-listener` | Apache-2.0 OR MIT | linux | +| `event-listener-strategy` | Apache-2.0 OR MIT | linux | +| `fastrand` | Apache-2.0 OR MIT | default | +| `fax` | MIT | default | +| `fdeflate` | MIT OR Apache-2.0 | default | +| `field-offset` | MIT OR Apache-2.0 | linux | +| `find-msvc-tools` | MIT OR Apache-2.0 | default | +| `fixedbitset` | MIT OR Apache-2.0 | linux | +| `flate2` | MIT OR Apache-2.0 | default | +| `float-cmp` | MIT | default | +| `fnv` | Apache-2.0 / MIT | default | +| `foldhash` | Zlib | default | +| `foreign-types` | MIT/Apache-2.0 | macos | +| `foreign-types-macros` | MIT/Apache-2.0 | macos | +| `foreign-types-shared` | MIT/Apache-2.0 | macos | +| `form_urlencoded` | MIT OR Apache-2.0 | default | +| `futures-channel` | MIT OR Apache-2.0 | linux | +| `futures-core` | MIT OR Apache-2.0 | linux | +| `futures-executor` | MIT OR Apache-2.0 | linux | +| `futures-io` | MIT OR Apache-2.0 | linux | +| `futures-lite` | Apache-2.0 OR MIT | linux | +| `futures-macro` | MIT OR Apache-2.0 | linux | +| `futures-task` | MIT OR Apache-2.0 | linux | +| `futures-util` | MIT OR Apache-2.0 | linux | +| `gdk` | MIT | linux | +| `gdk-pixbuf` | MIT | linux | +| `gdk-pixbuf-sys` | MIT | linux | +| `gdk-sys` | MIT | linux | +| `gdkwayland-sys` | MIT | linux | +| `gdkx11` | MIT | linux | +| `gdkx11-sys` | MIT | linux | +| `generic-array` | MIT | default | +| `gethostname` | Apache-2.0 | linux | +| `getrandom` | MIT OR Apache-2.0 | default | +| `gif` | MIT OR Apache-2.0 | default | +| `gio` | MIT | linux | +| `gio-sys` | MIT | linux | +| `glib` | MIT | linux | +| `glib-macros` | MIT | linux | +| `glib-sys` | MIT | linux | +| `glob` | MIT OR Apache-2.0 | default | +| `gobject-sys` | MIT | linux | +| `gtk` | MIT | linux | +| `gtk-sys` | MIT | linux | +| `gtk3-macros` | MIT | linux | +| `half` | MIT OR Apache-2.0 | default | +| `hashbrown` | MIT OR Apache-2.0 | default | +| `heck` | MIT OR Apache-2.0 | default | +| `hex` | MIT OR Apache-2.0 | linux | +| `hmac-sha256` | ISC | default | +| `html5ever` | MIT OR Apache-2.0 | default | +| `http` | MIT OR Apache-2.0 | default | +| `http-range` | MIT | default | +| `httparse` | MIT OR Apache-2.0 | default | +| `hybrid-array` | MIT OR Apache-2.0 | default | +| `i_float` | MIT | default | +| `i_key_sort` | MIT | default | +| `i_overlay` | MIT OR Apache-2.0 | default | +| `i_shape` | MIT | default | +| `i_tree` | MIT | default | +| `ico` | MIT | default | +| `icu_collections` | Unicode-3.0 | default | +| `icu_locale_core` | Unicode-3.0 | default | +| `icu_normalizer` | Unicode-3.0 | default | +| `icu_normalizer_data` | Unicode-3.0 | default | +| `icu_properties` | Unicode-3.0 | default | +| `icu_properties_data` | Unicode-3.0 | default | +| `icu_provider` | Unicode-3.0 | default | +| `ident_case` | MIT/Apache-2.0 | default | +| `idna` | MIT OR Apache-2.0 | default | +| `idna_adapter` | Apache-2.0 OR MIT | default | +| `image` | MIT OR Apache-2.0 | default | +| `image-webp` | MIT OR Apache-2.0 | default | +| `imagesize` | MIT | default | +| `indexmap` | Apache-2.0 OR MIT | default | +| `infer` | MIT | default | +| `is-docker` | MIT | linux | +| `is-wsl` | MIT | linux | +| `itoa` | MIT OR Apache-2.0 | default | +| `javascriptcore-rs` | MIT | linux | +| `javascriptcore-rs-sys` | MIT | linux | +| `json-patch` | MIT/Apache-2.0 | default | +| `jsonptr` | MIT OR Apache-2.0 | default | +| `keyboard-types` | MIT OR Apache-2.0 | default | +| `kurbo` | Apache-2.0 OR MIT | default | +| `libc` | MIT OR Apache-2.0 | default | +| `libdbus-sys` | Apache-2.0/MIT | linux | +| `libm` | MIT | default | +| `linux-raw-sys` | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | linux | +| `litemap` | Unicode-3.0 | default | +| `lock_api` | MIT OR Apache-2.0 | default | +| `log` | MIT OR Apache-2.0 | default | +| `lzma-rust2` | Apache-2.0 | default | +| `markup5ever` | MIT OR Apache-2.0 | default | +| `memchr` | Unlicense OR MIT | default | +| `memoffset` | MIT | linux | +| `mime` | MIT OR Apache-2.0 | default | +| `miniz_oxide` | MIT OR Zlib OR Apache-2.0 | default | +| `mio` | MIT | default | +| `moxcms` | BSD-3-Clause OR Apache-2.0 | default | +| `muda` | Apache-2.0 OR MIT | default | +| `native-tls` | MIT OR Apache-2.0 | default | +| `new_debug_unreachable` | MIT | default | +| `nom` | MIT | linux | +| `num-conv` | MIT OR Apache-2.0 | default | +| `num-traits` | MIT OR Apache-2.0 | default | +| `objc2` | MIT | macos | +| `objc2-app-kit` | Zlib OR Apache-2.0 OR MIT | macos | +| `objc2-core-foundation` | Zlib OR Apache-2.0 OR MIT | macos | +| `objc2-core-graphics` | Zlib OR Apache-2.0 OR MIT | macos | +| `objc2-encode` | MIT | macos | +| `objc2-exception-helper` | Zlib OR Apache-2.0 OR MIT | macos | +| `objc2-foundation` | MIT | macos | +| `objc2-web-kit` | Zlib OR Apache-2.0 OR MIT | macos | +| `once_cell` | MIT OR Apache-2.0 | default | +| `open` | MIT | default | +| `option-ext` | MPL-2.0 | default | +| `ordered-stream` | MIT OR Apache-2.0 | linux | +| `ort` | MIT OR Apache-2.0 | default | +| `ort-sys` | MIT OR Apache-2.0 | default | +| `os_pipe` | MIT | linux | +| `pango` | MIT | linux | +| `pango-sys` | MIT | linux | +| `parking` | Apache-2.0 OR MIT | linux | +| `parking_lot` | MIT OR Apache-2.0 | default | +| `parking_lot_core` | MIT OR Apache-2.0 | default | +| `pem-rfc7468` | Apache-2.0 OR MIT | default | +| `percent-encoding` | MIT OR Apache-2.0 | default | +| `petgraph` | MIT OR Apache-2.0 | linux | +| `phf` | MIT | default | +| `phf_codegen` | MIT | default | +| `phf_generator` | MIT | default | +| `phf_macros` | MIT | default | +| `phf_shared` | MIT | default | +| `pico-args` | MIT | default | +| `pin-project-lite` | Apache-2.0 OR MIT | default | +| `piper` | MIT OR Apache-2.0 | linux | +| `pkg-config` | MIT OR Apache-2.0 | linux | +| `plist` | MIT | default | +| `png` | MIT OR Apache-2.0 | default | +| `polling` | Apache-2.0 OR MIT | linux | +| `polycool` | MIT OR Apache-2.0 | default | +| `potential_utf` | Unicode-3.0 | default | +| `powerfmt` | MIT OR Apache-2.0 | default | +| `precomputed-hash` | MIT | default | +| `proc-macro-crate` | MIT OR Apache-2.0 | linux | +| `proc-macro-error` | MIT OR Apache-2.0 | linux | +| `proc-macro-error-attr` | MIT OR Apache-2.0 | linux | +| `proc-macro2` | MIT OR Apache-2.0 | default | +| `pxfm` | BSD-3-Clause OR Apache-2.0 | default | +| `quick-error` | MIT/Apache-2.0 | default | +| `quick-xml` | MIT | default | +| `quote` | MIT OR Apache-2.0 | default | +| `raw-window-handle` | MIT OR Apache-2.0 OR Zlib | default | +| `rayon` | MIT OR Apache-2.0 | default | +| `rayon-core` | MIT OR Apache-2.0 | default | +| `regex` | MIT OR Apache-2.0 | default | +| `regex-automata` | MIT OR Apache-2.0 | default | +| `regex-syntax` | MIT OR Apache-2.0 | default | +| `resvg` | Apache-2.0 OR MIT | default | +| `rfd` | MIT | default | +| `rgb` | MIT | default | +| `ring` | Apache-2.0 AND ISC | default | +| `robust` | MIT OR Apache-2.0 | default | +| `roxmltree` | MIT OR Apache-2.0 | default | +| `rustc-hash` | Apache-2.0 OR MIT | default | +| `rustc_version` | MIT OR Apache-2.0 | default | +| `rustix` | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | linux | +| `rustls` | Apache-2.0 OR ISC OR MIT | default | +| `rustls-pki-types` | MIT OR Apache-2.0 | default | +| `rustls-webpki` | ISC | default | +| `same-file` | Unlicense/MIT | default | +| `schannel` | MIT | default | +| `schemars` | MIT | default | +| `schemars_derive` | MIT | default | +| `scopeguard` | MIT OR Apache-2.0 | default | +| `selectors` | MPL-2.0 | default | +| `semver` | MIT OR Apache-2.0 | default | +| `serde` | MIT OR Apache-2.0 | default | +| `serde-untagged` | MIT OR Apache-2.0 | default | +| `serde_core` | MIT OR Apache-2.0 | default | +| `serde_derive` | MIT OR Apache-2.0 | default | +| `serde_derive_internals` | MIT OR Apache-2.0 | default | +| `serde_json` | MIT OR Apache-2.0 | default | +| `serde_repr` | MIT OR Apache-2.0 | default | +| `serde_spanned` | MIT OR Apache-2.0 | default | +| `serde_with` | MIT OR Apache-2.0 | default | +| `serde_with_macros` | MIT OR Apache-2.0 | default | +| `serialize-to-javascript` | MIT OR Apache-2.0 | default | +| `serialize-to-javascript-impl` | MIT OR Apache-2.0 | default | +| `servo_arc` | MIT OR Apache-2.0 | default | +| `sha2` | MIT OR Apache-2.0 | default | +| `shlex` | MIT OR Apache-2.0 | default | +| `signal-hook-registry` | MIT OR Apache-2.0 | linux | +| `simd-adler32` | MIT | default | +| `simplecss` | Apache-2.0 OR MIT | default | +| `siphasher` | MIT/Apache-2.0 | default | +| `slab` | MIT | linux | +| `smallvec` | MIT OR Apache-2.0 | default | +| `socket2` | MIT OR Apache-2.0 | default | +| `socks` | MIT/Apache-2.0 | default | +| `softbuffer` | MIT OR Apache-2.0 | default | +| `soup3` | MIT | linux | +| `soup3-sys` | MIT | linux | +| `stable_deref_trait` | MIT OR Apache-2.0 | default | +| `strict-num` | MIT | default | +| `string_cache` | MIT OR Apache-2.0 | default | +| `string_cache_codegen` | MIT OR Apache-2.0 | default | +| `strsim` | MIT | default | +| `subtle` | BSD-3-Clause | default | +| `svgtypes` | Apache-2.0 OR MIT | default | +| `syn` | MIT OR Apache-2.0 | default | +| `synstructure` | MIT | default | +| `system-deps` | MIT OR Apache-2.0 | linux | +| `tao` | Apache-2.0 | default | +| `target-lexicon` | Apache-2.0 WITH LLVM-exception | linux | +| `tauri` | Apache-2.0 OR MIT | default | +| `tauri-build` | Apache-2.0 OR MIT | default | +| `tauri-codegen` | Apache-2.0 OR MIT | default | +| `tauri-macros` | Apache-2.0 OR MIT | default | +| `tauri-plugin` | Apache-2.0 OR MIT | default | +| `tauri-plugin-clipboard-manager` | Apache-2.0 OR MIT | default | +| `tauri-plugin-dialog` | Apache-2.0 OR MIT | default | +| `tauri-plugin-fs` | Apache-2.0 OR MIT | default | +| `tauri-plugin-opener` | Apache-2.0 OR MIT | default | +| `tauri-plugin-single-instance` | Apache-2.0 OR MIT | default | +| `tauri-runtime` | Apache-2.0 OR MIT | default | +| `tauri-runtime-wry` | Apache-2.0 OR MIT | default | +| `tauri-utils` | Apache-2.0 OR MIT | default | +| `tauri-winres` | MIT | default | +| `tendril` | MIT OR Apache-2.0 | default | +| `thiserror` | MIT OR Apache-2.0 | default | +| `thiserror-impl` | MIT OR Apache-2.0 | default | +| `tiff` | MIT | default | +| `time` | MIT OR Apache-2.0 | default | +| `time-core` | MIT OR Apache-2.0 | default | +| `time-macros` | MIT OR Apache-2.0 | default | +| `tiny-skia` | BSD-3-Clause | default | +| `tiny-skia-path` | BSD-3-Clause | default | +| `tinystr` | Unicode-3.0 | default | +| `tokio` | MIT | default | +| `toml` | MIT OR Apache-2.0 | default | +| `toml_datetime` | MIT OR Apache-2.0 | default | +| `toml_edit` | MIT OR Apache-2.0 | linux | +| `toml_parser` | MIT OR Apache-2.0 | default | +| `toml_writer` | MIT OR Apache-2.0 | default | +| `tracing` | MIT | default | +| `tracing-attributes` | MIT | default | +| `tracing-core` | MIT | default | +| `tree_magic_mini` | MIT | linux | +| `typed-path` | MIT OR Apache-2.0 | default | +| `typeid` | MIT OR Apache-2.0 | default | +| `typenum` | MIT OR Apache-2.0 | default | +| `unic-char-property` | MIT/Apache-2.0 | default | +| `unic-char-range` | MIT/Apache-2.0 | default | +| `unic-common` | MIT/Apache-2.0 | default | +| `unic-ucd-ident` | MIT/Apache-2.0 | default | +| `unic-ucd-version` | MIT/Apache-2.0 | default | +| `unicode-ident` | (MIT OR Apache-2.0) AND Unicode-3.0 | default | +| `unicode-segmentation` | MIT OR Apache-2.0 | default | +| `untrusted` | ISC | default | +| `ureq` | MIT OR Apache-2.0 | default | +| `ureq-proto` | MIT OR Apache-2.0 | default | +| `url` | MIT OR Apache-2.0 | default | +| `urlpattern` | MIT | default | +| `usvg` | Apache-2.0 OR MIT | default | +| `utf8-zero` | MIT OR Apache-2.0 | default | +| `utf8_iter` | Apache-2.0 OR MIT | default | +| `uuid` | Apache-2.0 OR MIT | default | +| `version-compare` | MIT | linux | +| `version_check` | MIT/Apache-2.0 | default | +| `vswhom` | MIT | default | +| `vswhom-sys` | MIT | default | +| `walkdir` | Unlicense/MIT | default | +| `wayland-backend` | MIT | linux | +| `wayland-client` | MIT | linux | +| `wayland-protocols` | MIT | linux | +| `wayland-protocols-wlr` | MIT | linux | +| `wayland-scanner` | MIT | linux | +| `wayland-sys` | MIT | linux | +| `web_atoms` | MIT OR Apache-2.0 | default | +| `webkit2gtk` | MIT | linux | +| `webkit2gtk-sys` | MIT | linux | +| `webpki-root-certs` | CDLA-Permissive-2.0 | default | +| `webpki-roots` | CDLA-Permissive-2.0 | default | +| `webview2-com` | MIT | default | +| `webview2-com-macros` | MIT | default | +| `webview2-com-sys` | MIT | default | +| `weezl` | MIT OR Apache-2.0 | default | +| `winapi` | MIT/Apache-2.0 | default | +| `winapi-util` | Unlicense OR MIT | default | +| `window-vibrancy` | Apache-2.0 OR MIT | default | +| `windows` | MIT OR Apache-2.0 | default | +| `windows-collections` | MIT OR Apache-2.0 | default | +| `windows-core` | MIT OR Apache-2.0 | default | +| `windows-future` | MIT OR Apache-2.0 | default | +| `windows-implement` | MIT OR Apache-2.0 | default | +| `windows-interface` | MIT OR Apache-2.0 | default | +| `windows-link` | MIT OR Apache-2.0 | default | +| `windows-numerics` | MIT OR Apache-2.0 | default | +| `windows-result` | MIT OR Apache-2.0 | default | +| `windows-strings` | MIT OR Apache-2.0 | default | +| `windows-sys` | MIT OR Apache-2.0 | default | +| `windows-targets` | MIT OR Apache-2.0 | default | +| `windows-threading` | MIT OR Apache-2.0 | default | +| `windows-version` | MIT OR Apache-2.0 | default | +| `windows_x86_64_msvc` | MIT OR Apache-2.0 | default | +| `winnow` | MIT | default | +| `winreg` | MIT | default | +| `wl-clipboard-rs` | MIT/Apache-2.0 | linux | +| `writeable` | Unicode-3.0 | default | +| `wry` | Apache-2.0 OR MIT | default | +| `x11` | MIT | linux | +| `x11-dl` | MIT | linux | +| `x11rb` | MIT OR Apache-2.0 | linux | +| `x11rb-protocol` | MIT OR Apache-2.0 | linux | +| `yoke` | Unicode-3.0 | default | +| `yoke-derive` | Unicode-3.0 | default | +| `zbus` | MIT | linux | +| `zbus_macros` | MIT | linux | +| `zbus_names` | MIT | linux | +| `zcheapstr` | MIT | linux | +| `zerocopy` | BSD-2-Clause OR Apache-2.0 OR MIT | default | +| `zerocopy-derive` | BSD-2-Clause OR Apache-2.0 OR MIT | default | +| `zerofrom` | Unicode-3.0 | default | +| `zerofrom-derive` | Unicode-3.0 | default | +| `zeroize` | Apache-2.0 OR MIT | default | +| `zerotrie` | Unicode-3.0 | default | +| `zerovec` | Unicode-3.0 | default | +| `zerovec-derive` | Unicode-3.0 | default | +| `zip` | MIT | default | +| `zlib-rs` | Zlib | default | +| `zmij` | MIT | default | +| `zopfli` | Apache-2.0 | default | +| `zune-core` | MIT OR Apache-2.0 OR Zlib | default | +| `zune-jpeg` | MIT OR Apache-2.0 OR Zlib | default | +| `zvariant` | MIT | linux | +| `zvariant_derive` | MIT | linux | +| `zvariant_utils` | MIT | linux | + +## Bundled fonts + +Both are subset to Latin and shipped in `studio/public/fonts/`. The app makes no network +request it has not explained, and that includes a font, which is why they are bundled +rather than fetched. + +| Font | Licence | Source | +| --- | --- | --- | +| Inter | SIL Open Font License 1.1 | https://github.com/rsms/inter | +| Playfair Display | SIL Open Font License 1.1 | https://github.com/clauseggers/Playfair-Display | + +The OFL permits bundling and redistribution with the application. Neither font is +renamed, sold on its own, or distributed with a reserved font name. + +## Icons + +The interface's glyphs are drawn from Lucide's geometry, inlined in +`studio/src/lib/dom.ts` rather than taken as a package dependency — only the twenty-odd +shapes the app actually uses. Lucide is ISC-licensed. + +The app's own mark (the stair-stepped pixels and the copper curve) is LogoLabs' and is +drawn by `studio/tools/make_assets.py`. + +## JavaScript + +The bundled frontend has no runtime framework. Its only dependencies are Tauri's own +JavaScript API and three of its plugins, all MIT OR Apache-2.0: + +| Package | Licence | +| --- | --- | +| @tauri-apps/api | MIT OR Apache-2.0 | +| @tauri-apps/plugin-dialog | MIT OR Apache-2.0 | +| @tauri-apps/plugin-opener | MIT OR Apache-2.0 | +| @tauri-apps/plugin-clipboard-manager | MIT OR Apache-2.0 | + +`vite` and `typescript` are build-time only and are not distributed with the app. + +## The engine + +Inkvec itself, and every crate in this repository, is Apache-2.0. Its own dependency +notices are in `docs/THIRD_PARTY.md`, which the app ships and displays alongside this +file. diff --git a/studio/THIRD_PARTY.md b/studio/THIRD_PARTY.md new file mode 100644 index 0000000000000000000000000000000000000000..397684ec58eaffd3bb232fd692e6567382f7be98 --- /dev/null +++ b/studio/THIRD_PARTY.md @@ -0,0 +1,573 @@ +# Third-party components + +Generated by `tools/third_party.py` on 2026-09-20. Regenerate it after changing dependencies. +Inkvec itself is licensed under Apache-2.0 (`LICENSE`). + +516 Rust crates are compiled across all builds: 159 in every build, 42 more with the ONNX Runtime restorer, 315 more only with other optional features. + +Not under a permissive licence (or no licence declared), with the smallest build that compiles them: + +- `colored` 3.1.1: MPL-2.0 (all features) +- `option-ext` 0.2.0: MPL-2.0 (all features) + +## Python tools and model weights + +| component | licence | notes | +|---|---|---| +| MambaIR / MambaIRv2 (SR pre-pass architecture and released weights) | Apache-2.0 | https://github.com/csguoh/MambaIR; weights are downloaded by `tools/inkvec_sr`, not redistributed here | +| mamba-ssm | Apache-2.0 | https://github.com/state-spaces/mamba | +| PyTorch (Python tool path only) | BSD-3-Clause | not shipped with the binary | + +The benchmark harness (`bench/`) uses `tqdm` (MPL-2.0 AND MIT) and, through `requests`, `certifi` +(MPL-2.0). Neither is shipped with Inkvec. + +## Native runtimes for the restorer (optional) + +| component | licence | notes | +|---|---|---| +| ONNX Runtime (`restore-model`) | MIT | the binary bundles third-party code, including Eigen (MPL-2.0); ship Microsoft's `ThirdPartyNotices.txt` with any redistributed `onnxruntime` library | +| DirectML (`DirectML.dll`) | Microsoft DirectML License Agreement (proprietary) | only in the prebuilt static Windows package `ort` downloads; not needed for CPU inference and not part of a build linked against Microsoft's CPU release. Review its terms before redistributing it | + +## Benchmark corpus (`bench/data`) + +The screen-set rasters committed under `bench/data` are renders of third-party icon sets. They +are test data, not part of any build. Each keeps its upstream licence: + +| family | licence | attribution | notes | +|---|---|---|---| +| lucide | ISC (includes Feather's MIT notice) | yes | https://github.com/lucide-icons/lucide | +| material-icons | Apache-2.0 | notice | https://github.com/google/material-design-icons | +| simple-icons | CC0-1.0 | no | brand logos: the marks remain trademarks of their owners; see simple-icons `DISCLAIMER.md` | +| twemoji | CC-BY 4.0 (graphics) | yes | https://github.com/jdecked/twemoji | +| noto-emoji | Apache-2.0 (images), OFL-1.1 (fonts) | notice | https://github.com/googlefonts/noto-emoji | +| openmoji | CC-BY-SA 4.0 | yes, share-alike | https://openmoji.org | +| fluent-emoji | MIT | yes | https://github.com/microsoft/fluentui-emoji | +| synthetic | generated by this project | no | `bench/cases` | + +Upstream licence terms for each family are linked in the table above. + +## Rust crates (516) + +`builds` is the smallest build that compiles the crate: `default` (every workspace build), +`restore-model` (only with the ONNX Runtime restorer), or `all features` (only with an optional +feature such as the Burn restorer backends). Build-script dependencies are included, so a crate +listed here is compiled but not necessarily linked into the binary. + +| crate | version | licence | builds | +|---|---|---|---| +| addr2line | 0.25.1 | Apache-2.0 OR MIT | all features | +| adler2 | 2.0.1 | 0BSD OR MIT OR Apache-2.0 | default | +| ahash | 0.8.12 | MIT OR Apache-2.0 | all features | +| aho-corasick | 1.1.5 | Unlicense OR MIT | all features | +| aligned-vec | 0.6.4 | MIT | all features | +| allocator-api2 | 0.2.21 | MIT OR Apache-2.0 | all features | +| android_system_properties | 0.1.6 | MIT OR Apache-2.0 | all features | +| anstream | 1.0.0 | MIT OR Apache-2.0 | all features | +| anstyle | 1.0.14 | MIT OR Apache-2.0 | all features | +| anstyle-parse | 1.0.0 | MIT OR Apache-2.0 | all features | +| anstyle-query | 1.1.5 | MIT OR Apache-2.0 | all features | +| anstyle-wincon | 3.0.11 | MIT OR Apache-2.0 | all features | +| anyhow | 1.0.104 | MIT OR Apache-2.0 | all features | +| arrayref | 0.3.9 | BSD-2-Clause | default | +| arrayvec | 0.7.8 | MIT OR Apache-2.0 | default | +| ash | 0.38.0+1.3.281 | MIT OR Apache-2.0 | all features | +| async-channel | 2.5.0 | Apache-2.0 OR MIT | all features | +| atomic-waker | 1.1.2 | Apache-2.0 OR MIT | default | +| atomic_float | 1.1.0 | Apache-2.0 OR MIT OR Unlicense | all features | +| autocfg | 1.5.1 | Apache-2.0 OR MIT | default | +| axum | 0.8.9 | MIT | default | +| axum-core | 0.5.6 | MIT | default | +| backtrace | 0.3.76 | MIT OR Apache-2.0 | all features | +| base64 | 0.22.1 | MIT OR Apache-2.0 | default | +| base64 | 0.23.1 | MIT OR Apache-2.0 | restore-model | +| base64ct | 1.8.3 | Apache-2.0 OR MIT | restore-model | +| bincode | 2.0.1 | MIT | all features | +| bit-set | 0.9.1 | Apache-2.0 OR MIT | all features | +| bit-vec | 0.9.1 | Apache-2.0 OR MIT | all features | +| bitflags | 1.3.2 | MIT/Apache-2.0 | default | +| bitflags | 2.13.1 | MIT OR Apache-2.0 | default | +| block-buffer | 0.10.4 | MIT OR Apache-2.0 | default | +| block2 | 0.6.2 | MIT | all features | +| bumpalo | 3.20.3 | MIT OR Apache-2.0 | default | +| burn | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-autodiff | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-backend | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-core | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-cubecl | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-cubecl-fusion | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-cuda | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-derive | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-flex | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-fusion | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-ir | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-ndarray | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-nn | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-onnx | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-optim | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-std | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-store | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-tensor | 0.21.0 | MIT OR Apache-2.0 | all features | +| burn-wgpu | 0.21.0 | MIT OR Apache-2.0 | all features | +| bytemuck | 1.25.2 | Zlib OR Apache-2.0 OR MIT | default | +| bytemuck_derive | 1.12.0 | Zlib OR Apache-2.0 OR MIT | all features | +| byteorder | 1.5.0 | Unlicense OR MIT | restore-model | +| byteorder-lite | 0.1.0 | Unlicense OR MIT | default | +| bytes | 1.12.1 | MIT | default | +| cc | 1.4.6 | MIT OR Apache-2.0 | restore-model | +| cfg-if | 1.0.4 | MIT OR Apache-2.0 | default | +| cfg_aliases | 0.2.2 | MIT | all features | +| chacha20 | 0.10.2 | MIT OR Apache-2.0 | all features | +| ciborium | 0.2.2 | Apache-2.0 | all features | +| ciborium-io | 0.2.2 | Apache-2.0 | all features | +| ciborium-ll | 0.2.2 | Apache-2.0 | all features | +| clap | 4.6.7 | MIT OR Apache-2.0 | all features | +| clap_builder | 4.6.7 | MIT OR Apache-2.0 | all features | +| clap_derive | 4.6.7 | MIT OR Apache-2.0 | all features | +| clap_lex | 1.1.1 | MIT OR Apache-2.0 | all features | +| codespan-reporting | 0.13.1 | Apache-2.0 | all features | +| color_quant | 1.1.0 | MIT | default | +| colorchoice | 1.0.5 | MIT OR Apache-2.0 | all features | +| colored | 3.1.1 | MPL-2.0 | all features | +| concurrent-queue | 2.5.0 | Apache-2.0 OR MIT | all features | +| console_error_panic_hook | 0.1.7 | Apache-2.0/MIT | default | +| const-random | 0.1.18 | MIT OR Apache-2.0 | all features | +| const-random-macro | 0.1.16 | MIT OR Apache-2.0 | all features | +| convert_case | 0.10.0 | MIT | all features | +| core-foundation | 0.10.1 | MIT OR Apache-2.0 | restore-model | +| core-foundation-sys | 0.8.7 | MIT OR Apache-2.0 | restore-model | +| core_detect | 1.0.0 | MIT/Apache-2.0 | default | +| cpufeatures | 0.2.17 | MIT OR Apache-2.0 | default | +| cpufeatures | 0.3.1 | MIT OR Apache-2.0 | all features | +| crc32fast | 1.5.1 | MIT OR Apache-2.0 | default | +| critical-section | 1.2.0 | MIT OR Apache-2.0 | all features | +| crossbeam-channel | 0.5.17 | MIT OR Apache-2.0 | all features | +| crossbeam-deque | 0.8.7 | MIT OR Apache-2.0 | default | +| crossbeam-epoch | 0.9.20 | MIT OR Apache-2.0 | default | +| crossbeam-utils | 0.8.22 | MIT OR Apache-2.0 | default | +| crunchy | 0.2.4 | MIT | default | +| crypto-common | 0.1.7 | MIT OR Apache-2.0 | default | +| cubecl | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-common | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-core | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-cpp | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-cuda | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-ir | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-macros | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-macros-internal | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-opt | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-runtime | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-std | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-wgpu | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubecl-zspace | 0.10.0 | MIT OR Apache-2.0 | all features | +| cubek | 0.2.0 | MIT OR Apache-2.0 | all features | +| cubek-attention | 0.2.0 | MIT OR Apache-2.0 | all features | +| cubek-convolution | 0.2.0 | MIT OR Apache-2.0 | all features | +| cubek-fft | 0.2.0 | MIT OR Apache-2.0 | all features | +| cubek-matmul | 0.2.0 | MIT OR Apache-2.0 | all features | +| cubek-quant | 0.2.0 | MIT OR Apache-2.0 | all features | +| cubek-random | 0.2.0 | MIT OR Apache-2.0 | all features | +| cubek-reduce | 0.2.0 | MIT OR Apache-2.0 | all features | +| cubek-std | 0.2.0 | MIT OR Apache-2.0 | all features | +| cudarc | 0.19.9 | MIT OR Apache-2.0 | all features | +| darling | 0.20.11 | MIT | all features | +| darling | 0.21.3 | MIT | all features | +| darling | 0.23.0 | MIT | all features | +| darling_core | 0.20.11 | MIT | all features | +| darling_core | 0.21.3 | MIT | all features | +| darling_core | 0.23.0 | MIT | all features | +| darling_macro | 0.20.11 | MIT | all features | +| darling_macro | 0.21.3 | MIT | all features | +| darling_macro | 0.23.0 | MIT | all features | +| data-encoding | 2.11.1 | MIT | all features | +| data-url | 0.3.2 | MIT OR Apache-2.0 | default | +| der | 0.8.2 | Apache-2.0 OR MIT | restore-model | +| derive-new | 0.7.0 | MIT | all features | +| derive_more | 2.1.1 | MIT | all features | +| derive_more-impl | 2.1.1 | MIT | all features | +| digest | 0.10.7 | MIT OR Apache-2.0 | default | +| dirs | 6.0.0 | MIT OR Apache-2.0 | all features | +| dirs-sys | 0.5.0 | MIT OR Apache-2.0 | all features | +| dlib | 0.5.3 | MIT | all features | +| document-features | 0.2.12 | MIT OR Apache-2.0 | all features | +| dyn-clone | 1.0.20 | MIT OR Apache-2.0 | default | +| dyn-stack | 0.13.2 | MIT | all features | +| dyn-stack-macros | 0.1.3 | MIT | all features | +| either | 1.18.0 | MIT OR Apache-2.0 | default | +| embassy-futures | 0.1.2 | MIT OR Apache-2.0 | all features | +| embassy-time | 0.5.1 | MIT OR Apache-2.0 | all features | +| embassy-time-driver | 0.2.2 | MIT OR Apache-2.0 | all features | +| embedded-hal | 0.2.7 | MIT OR Apache-2.0 | all features | +| embedded-hal | 1.0.0 | MIT OR Apache-2.0 | all features | +| embedded-hal-async | 1.0.0 | MIT OR Apache-2.0 | all features | +| encoding_rs | 0.8.41 | (Apache-2.0 OR MIT) AND BSD-3-Clause | default | +| enum-as-inner | 0.6.1 | MIT/Apache-2.0 | all features | +| enumset | 1.1.14 | MIT/Apache-2.0 | all features | +| enumset_derive | 0.15.0 | MIT/Apache-2.0 | all features | +| equator | 0.4.2 | MIT | all features | +| equator-macro | 0.4.2 | MIT | all features | +| equivalent | 1.0.2 | Apache-2.0 OR MIT | default | +| errno | 0.3.14 | MIT OR Apache-2.0 | default | +| event-listener | 5.4.2 | Apache-2.0 OR MIT | all features | +| event-listener-strategy | 0.5.4 | Apache-2.0 OR MIT | all features | +| fastrand | 2.5.0 | Apache-2.0 OR MIT | restore-model | +| fax | 0.2.7 | MIT | default | +| fdeflate | 0.3.7 | MIT OR Apache-2.0 | default | +| find-msvc-tools | 0.1.12 | MIT OR Apache-2.0 | restore-model | +| fixedbitset | 0.5.7 | MIT OR Apache-2.0 | all features | +| flate2 | 1.1.10 | MIT OR Apache-2.0 | default | +| float-cmp | 0.9.0 | MIT | default | +| float-ord | 0.3.2 | MIT / Apache-2.0 | all features | +| float4 | 0.2.0 | MIT | all features | +| float8 | 0.7.0 | MIT | all features | +| fnv | 1.0.7 | Apache-2.0 / MIT | all features | +| foldhash | 0.1.5 | Zlib | all features | +| foldhash | 0.2.0 | Zlib | all features | +| foreign-types | 0.3.2 | MIT/Apache-2.0 | restore-model | +| foreign-types-shared | 0.1.1 | MIT/Apache-2.0 | restore-model | +| form_urlencoded | 1.2.2 | MIT OR Apache-2.0 | default | +| futures-channel | 0.3.34 | MIT OR Apache-2.0 | default | +| futures-core | 0.3.34 | MIT OR Apache-2.0 | default | +| futures-io | 0.3.34 | MIT OR Apache-2.0 | all features | +| futures-lite | 2.6.1 | Apache-2.0 OR MIT | all features | +| futures-task | 0.3.34 | MIT OR Apache-2.0 | default | +| futures-util | 0.3.34 | MIT OR Apache-2.0 | default | +| gemm | 0.19.0 | MIT | all features | +| gemm-c32 | 0.19.0 | MIT | all features | +| gemm-c64 | 0.19.0 | MIT | all features | +| gemm-common | 0.19.0 | MIT | all features | +| gemm-f16 | 0.19.0 | MIT | all features | +| gemm-f32 | 0.19.0 | MIT | all features | +| gemm-f64 | 0.19.0 | MIT | all features | +| generic-array | 0.14.7 | MIT | default | +| getrandom | 0.2.17 | MIT OR Apache-2.0 | all features | +| getrandom | 0.4.3 | MIT OR Apache-2.0 | restore-model | +| gif | 0.14.2 | MIT OR Apache-2.0 | default | +| gimli | 0.32.3 | MIT OR Apache-2.0 | all features | +| gl_generator | 0.14.0 | Apache-2.0 | all features | +| glow | 0.17.0 | MIT OR Apache-2.0 OR Zlib | all features | +| glutin_wgl_sys | 0.6.1 | Apache-2.0 | all features | +| gpu-allocator | 0.28.0 | MIT OR Apache-2.0 | all features | +| gpu-descriptor | 0.3.2 | MIT OR Apache-2.0 | all features | +| gpu-descriptor-types | 0.2.0 | MIT OR Apache-2.0 | all features | +| half | 2.7.1 | MIT OR Apache-2.0 | default | +| hashbrown | 0.13.2 | MIT OR Apache-2.0 | all features | +| hashbrown | 0.15.5 | MIT OR Apache-2.0 | all features | +| hashbrown | 0.16.1 | MIT OR Apache-2.0 | all features | +| hashbrown | 0.17.1 | MIT OR Apache-2.0 | default | +| heck | 0.5.0 | MIT OR Apache-2.0 | all features | +| hermit-abi | 0.5.3 | MIT OR Apache-2.0 | all features | +| hexf-parse | 0.2.1 | CC0-1.0 | all features | +| hmac-sha256 | 1.1.14 | ISC | restore-model | +| home | 0.5.12 | MIT OR Apache-2.0 | all features | +| http | 1.5.0 | MIT OR Apache-2.0 | default | +| http-body | 1.1.0 | MIT | default | +| http-body-util | 0.1.5 | MIT | default | +| httparse | 1.10.1 | MIT OR Apache-2.0 | default | +| httpdate | 1.0.3 | MIT OR Apache-2.0 | default | +| hyper | 1.11.1 | MIT | default | +| hyper-util | 0.1.20 | MIT | default | +| ident_case | 1.0.1 | MIT/Apache-2.0 | all features | +| image | 0.25.10 | MIT OR Apache-2.0 | default | +| image-webp | 0.2.4 | MIT OR Apache-2.0 | default | +| imagesize | 0.13.0 | MIT | default | +| indexmap | 2.14.1 | Apache-2.0 OR MIT | default | +| inflections | 1.1.1 | MIT | all features | +| is_terminal_polyfill | 1.70.2 | MIT OR Apache-2.0 | all features | +| itertools | 0.14.0 | MIT OR Apache-2.0 | all features | +| itoa | 1.0.18 | MIT OR Apache-2.0 | default | +| jni-sys | 0.3.1 | MIT OR Apache-2.0 | all features | +| jni-sys | 0.4.1 | MIT OR Apache-2.0 | all features | +| jni-sys-macros | 0.4.1 | MIT OR Apache-2.0 | all features | +| js-sys | 0.3.105 | MIT OR Apache-2.0 | default | +| khronos-egl | 6.0.0 | MIT/Apache-2.0 | all features | +| khronos_api | 3.1.0 | Apache-2.0 | all features | +| kurbo | 0.11.3 | Apache-2.0 OR MIT | default | +| lazy_static | 1.5.0 | MIT OR Apache-2.0 | default | +| libc | 0.2.189 | MIT OR Apache-2.0 | default | +| libloading | 0.8.9 | ISC | all features | +| libloading | 0.9.0 | ISC | all features | +| libm | 0.2.16 | MIT | all features | +| libredox | 0.1.24 | MIT | all features | +| linux-raw-sys | 0.12.1 | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | restore-model | +| linux-raw-sys | 0.4.15 | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | all features | +| litrs | 1.0.0 | MIT OR Apache-2.0 | all features | +| lock_api | 0.4.14 | MIT OR Apache-2.0 | all features | +| log | 0.4.34 | MIT OR Apache-2.0 | default | +| lzma-rust2 | 0.15.8 | Apache-2.0 | restore-model | +| macerator | 0.3.4 | MIT OR Apache-2.0 | all features | +| macerator-macros | 0.2.0 | MIT OR Apache-2.0 | all features | +| matchers | 0.2.0 | MIT | default | +| matchit | 0.8.4 | MIT AND BSD-3-Clause | default | +| matrixmultiply | 0.3.11 | MIT/Apache-2.0 | all features | +| md5 | 0.8.1 | Apache-2.0 OR MIT | all features | +| memchr | 2.8.3 | Unlicense OR MIT | default | +| memmap2 | 0.9.11 | MIT OR Apache-2.0 | all features | +| mime | 0.3.17 | MIT OR Apache-2.0 | default | +| miniz_oxide | 0.8.9 | MIT OR Zlib OR Apache-2.0 | default | +| miniz_oxide | 0.9.1 | MIT OR Zlib OR Apache-2.0 | default | +| mio | 1.2.3 | MIT | default | +| moddef | 0.3.0 | MIT | all features | +| moxcms | 0.8.1 | BSD-3-Clause OR Apache-2.0 | default | +| multer | 3.1.0 | MIT | default | +| multiversion | 0.9.0 | MIT OR Apache-2.0 | default | +| multiversion-macros | 0.9.0 | MIT OR Apache-2.0 | default | +| multiversion_no_op | 1.0.0 | Apache-2.0 OR MIT | default | +| naga | 29.0.4 | MIT OR Apache-2.0 | all features | +| native-tls | 0.2.18 | MIT OR Apache-2.0 | restore-model | +| nb | 0.1.3 | MIT OR Apache-2.0 | all features | +| nb | 1.1.0 | MIT OR Apache-2.0 | all features | +| ndarray | 0.17.2 | MIT OR Apache-2.0 | all features | +| ndk-sys | 0.6.0+11769913 | MIT OR Apache-2.0 | all features | +| nom | 8.0.0 | MIT | all features | +| nu-ansi-term | 0.50.3 | MIT | default | +| num | 0.4.3 | MIT OR Apache-2.0 | all features | +| num-bigint | 0.4.8 | MIT OR Apache-2.0 | all features | +| num-complex | 0.4.6 | MIT OR Apache-2.0 | all features | +| num-integer | 0.1.47 | MIT OR Apache-2.0 | all features | +| num-iter | 0.1.46 | MIT OR Apache-2.0 | all features | +| num-rational | 0.4.2 | MIT OR Apache-2.0 | all features | +| num-traits | 0.2.19 | MIT OR Apache-2.0 | default | +| num_cpus | 1.17.0 | MIT OR Apache-2.0 | all features | +| objc2 | 0.6.4 | MIT | all features | +| objc2-core-foundation | 0.3.2 | Zlib OR Apache-2.0 OR MIT | all features | +| objc2-encode | 4.1.0 | MIT | all features | +| objc2-foundation | 0.3.2 | MIT | all features | +| objc2-metal | 0.3.2 | Zlib OR Apache-2.0 OR MIT | all features | +| objc2-quartz-core | 0.3.2 | Zlib OR Apache-2.0 OR MIT | all features | +| object | 0.37.3 | Apache-2.0 OR MIT | all features | +| once_cell | 1.21.4 | MIT OR Apache-2.0 | default | +| once_cell_polyfill | 1.70.2 | MIT OR Apache-2.0 | all features | +| oneshot | 0.2.1 | MIT OR Apache-2.0 | all features | +| onnx-ir | 0.21.0 | MIT OR Apache-2.0 | all features | +| onnx-ir-derive | 0.21.0 | MIT OR Apache-2.0 | all features | +| openssl | 0.10.81 | Apache-2.0 | restore-model | +| openssl-macros | 0.1.1 | MIT/Apache-2.0 | restore-model | +| openssl-probe | 0.2.1 | MIT OR Apache-2.0 | restore-model | +| openssl-sys | 0.9.117 | MIT | restore-model | +| option-ext | 0.2.0 | MPL-2.0 | all features | +| ordered-float | 5.5.0 | MIT | all features | +| ort | 2.0.0-rc.13 | MIT OR Apache-2.0 | restore-model | +| ort-sys | 2.0.0-rc.13 | MIT OR Apache-2.0 | restore-model | +| parking | 2.2.1 | Apache-2.0 OR MIT | all features | +| parking_lot | 0.12.5 | MIT OR Apache-2.0 | all features | +| parking_lot_core | 0.9.12 | MIT OR Apache-2.0 | all features | +| paste | 1.0.15 | MIT OR Apache-2.0 | all features | +| pem-rfc7468 | 1.0.0 | Apache-2.0 OR MIT | restore-model | +| percent-encoding | 2.3.2 | MIT OR Apache-2.0 | default | +| petgraph | 0.8.3 | MIT OR Apache-2.0 | all features | +| pico-args | 0.5.0 | MIT | default | +| pin-project-lite | 0.2.17 | Apache-2.0 OR MIT | default | +| pkg-config | 0.3.34 | MIT OR Apache-2.0 | restore-model | +| png | 0.17.16 | MIT OR Apache-2.0 | default | +| png | 0.18.1 | MIT OR Apache-2.0 | default | +| portable-atomic | 1.15.0 | Apache-2.0 OR MIT | all features | +| portable-atomic-util | 0.2.8 | Apache-2.0 OR MIT | all features | +| presser | 0.3.1 | MIT OR Apache-2.0 | all features | +| prettyplease | 0.1.25 | MIT OR Apache-2.0 | all features | +| prettyplease | 0.2.37 | MIT OR Apache-2.0 | all features | +| proc-macro2 | 1.0.107 | MIT OR Apache-2.0 | default | +| profiling | 1.0.18 | MIT OR Apache-2.0 | all features | +| protobuf | 3.7.2 | MIT | all features | +| protobuf-codegen | 3.7.2 | MIT | all features | +| protobuf-parse | 3.7.2 | MIT | all features | +| protobuf-support | 3.7.2 | MIT | all features | +| pulp | 0.22.3 | MIT | all features | +| pulp-wasm-simd-flag | 0.1.1 | MIT | all features | +| pxfm | 0.1.30 | BSD-3-Clause OR Apache-2.0 | default | +| pyo3 | 0.29.2 | MIT OR Apache-2.0 | all features | +| pyo3-build-config | 0.29.2 | MIT OR Apache-2.0 | all features | +| pyo3-ffi | 0.29.2 | MIT OR Apache-2.0 | all features | +| pyo3-macros | 0.29.2 | MIT OR Apache-2.0 | all features | +| pyo3-macros-backend | 0.29.2 | MIT OR Apache-2.0 | all features | +| quick-error | 2.0.1 | MIT/Apache-2.0 | default | +| quote | 1.0.47 | MIT OR Apache-2.0 | default | +| r-efi | 6.0.0 | MIT OR Apache-2.0 OR LGPL-2.1-or-later | restore-model | +| rand | 0.10.2 | MIT OR Apache-2.0 | all features | +| rand_core | 0.10.1 | MIT OR Apache-2.0 | all features | +| rand_distr | 0.6.0 | MIT OR Apache-2.0 | all features | +| range-alloc | 0.1.5 | MIT OR Apache-2.0 | all features | +| raw-cpuid | 11.6.0 | MIT | all features | +| raw-window-handle | 0.6.2 | MIT OR Apache-2.0 OR Zlib | all features | +| raw-window-metal | 1.1.0 | MIT OR Apache-2.0 | all features | +| rawpointer | 0.2.1 | MIT/Apache-2.0 | all features | +| rayon | 1.12.0 | MIT OR Apache-2.0 | default | +| rayon-core | 1.13.0 | MIT OR Apache-2.0 | default | +| reborrow | 0.5.5 | MIT | all features | +| redox_syscall | 0.5.18 | MIT | all features | +| redox_users | 0.5.2 | MIT | all features | +| ref-cast | 1.0.27 | MIT OR Apache-2.0 | default | +| ref-cast-impl | 1.0.27 | MIT OR Apache-2.0 | default | +| regex | 1.13.1 | MIT OR Apache-2.0 | all features | +| regex-automata | 0.4.18 | MIT OR Apache-2.0 | default | +| regex-syntax | 0.8.11 | MIT OR Apache-2.0 | default | +| renderdoc-sys | 1.1.0 | MIT OR Apache-2.0 | all features | +| resvg | 0.45.1 | Apache-2.0 OR MIT | default | +| rgb | 0.8.53 | MIT | default | +| rmp | 0.8.15 | MIT | all features | +| rmp-serde | 1.3.1 | MIT | all features | +| robust | 1.2.0 | MIT OR Apache-2.0 | default | +| roxmltree | 0.20.0 | MIT OR Apache-2.0 | default | +| rust-format | 0.3.4 | MIT OR Apache-2.0 | all features | +| rustc-demangle | 0.1.28 | MIT/Apache-2.0 | all features | +| rustc-hash | 1.1.0 | Apache-2.0/MIT | all features | +| rustc-hash | 2.1.3 | Apache-2.0 OR MIT | all features | +| rustc_version | 0.4.1 | MIT OR Apache-2.0 | all features | +| rustix | 0.38.44 | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | all features | +| rustix | 1.1.4 | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | restore-model | +| rustls-pki-types | 1.15.1 | MIT OR Apache-2.0 | restore-model | +| rustversion | 1.0.23 | MIT OR Apache-2.0 | default | +| ryu | 1.0.23 | Apache-2.0 OR BSL-1.0 | default | +| safetensors | 0.7.0 | Apache-2.0 | all features | +| same-file | 1.0.6 | Unlicense/MIT | all features | +| sanitize-filename | 0.6.0 | MIT | all features | +| schannel | 0.1.29 | MIT | restore-model | +| schemars | 1.2.2 | MIT | default | +| schemars_derive | 1.2.2 | MIT | default | +| scopeguard | 1.2.0 | MIT OR Apache-2.0 | default | +| security-framework | 3.7.0 | MIT OR Apache-2.0 | restore-model | +| security-framework-sys | 2.17.0 | MIT OR Apache-2.0 | restore-model | +| semver | 1.0.28 | MIT OR Apache-2.0 | all features | +| seq-macro | 0.3.6 | MIT OR Apache-2.0 | all features | +| serde | 1.0.229 | MIT OR Apache-2.0 | default | +| serde_bytes | 0.11.19 | MIT OR Apache-2.0 | all features | +| serde_core | 1.0.229 | MIT OR Apache-2.0 | default | +| serde_derive | 1.0.229 | MIT OR Apache-2.0 | default | +| serde_derive_internals | 0.30.0 | MIT OR Apache-2.0 | default | +| serde_json | 1.0.151 | MIT OR Apache-2.0 | default | +| serde_path_to_error | 0.1.20 | MIT OR Apache-2.0 | default | +| serde_spanned | 1.1.1 | MIT OR Apache-2.0 | all features | +| serde_urlencoded | 0.7.1 | MIT/Apache-2.0 | default | +| sha2 | 0.10.9 | MIT OR Apache-2.0 | default | +| sharded-slab | 0.1.7 | MIT | default | +| shlex | 2.0.1 | MIT OR Apache-2.0 | restore-model | +| signal-hook-registry | 1.4.8 | MIT OR Apache-2.0 | default | +| simd-adler32 | 0.3.10 | MIT | default | +| simdutf8 | 0.1.5 | MIT OR Apache-2.0 | default | +| simplecss | 0.2.2 | Apache-2.0 OR MIT | default | +| siphasher | 1.0.3 | MIT/Apache-2.0 | default | +| slab | 0.4.12 | MIT | default | +| slotmap | 1.1.1 | Zlib | all features | +| smallvec | 1.15.2 | MIT OR Apache-2.0 | default | +| socket2 | 0.6.5 | MIT OR Apache-2.0 | default | +| socks | 0.3.4 | MIT/Apache-2.0 | restore-model | +| spin | 0.10.1 | MIT | all features | +| spin | 0.9.9 | MIT | default | +| spirv | 0.4.0+sdk-1.4.341.0 | Apache-2.0 | all features | +| stable-vec | 0.4.3 | MIT/Apache-2.0 | all features | +| static_assertions | 1.1.0 | MIT OR Apache-2.0 | all features | +| strict-num | 0.1.1 | MIT | default | +| strsim | 0.11.1 | MIT | all features | +| strum | 0.28.0 | MIT | all features | +| strum_macros | 0.28.0 | MIT | all features | +| svgtypes | 0.15.3 | Apache-2.0 OR MIT | default | +| syn | 1.0.109 | MIT OR Apache-2.0 | all features | +| syn | 2.0.119 | MIT OR Apache-2.0 | default | +| syn | 3.0.4 | MIT OR Apache-2.0 | default | +| sync_wrapper | 1.0.2 | Apache-2.0 | default | +| sysctl | 0.6.0 | MIT | all features | +| target-lexicon | 0.13.5 | Apache-2.0 WITH LLVM-exception | all features | +| tempfile | 3.27.0 | MIT OR Apache-2.0 | restore-model | +| text_placeholder | 0.5.1 | MIT | all features | +| textdistance | 1.1.1 | MIT | all features | +| thiserror | 1.0.69 | MIT OR Apache-2.0 | all features | +| thiserror | 2.0.20 | MIT OR Apache-2.0 | all features | +| thiserror-impl | 1.0.69 | MIT OR Apache-2.0 | all features | +| thiserror-impl | 2.0.20 | MIT OR Apache-2.0 | all features | +| thread-tree | 0.3.3 | MIT OR Apache-2.0 | all features | +| thread_local | 1.1.10 | MIT OR Apache-2.0 | default | +| tiff | 0.11.3 | MIT | default | +| tiny-keccak | 2.0.2 | CC0-1.0 | all features | +| tiny-skia | 0.11.4 | BSD-3-Clause | default | +| tiny-skia-path | 0.11.4 | BSD-3-Clause | default | +| tokio | 1.53.1 | MIT | default | +| tokio-macros | 2.7.2 | MIT | default | +| toml | 1.1.6+spec-1.1.0 | MIT OR Apache-2.0 | all features | +| toml_datetime | 1.1.1+spec-1.1.0 | MIT OR Apache-2.0 | all features | +| toml_parser | 1.1.3+spec-1.1.0 | MIT OR Apache-2.0 | all features | +| toml_writer | 1.1.2+spec-1.1.0 | MIT OR Apache-2.0 | all features | +| tower | 0.5.3 | MIT | default | +| tower-http | 0.6.11 | MIT | default | +| tower-layer | 0.3.3 | MIT | default | +| tower-service | 0.3.3 | MIT | default | +| tracing | 0.1.44 | MIT | default | +| tracing-attributes | 0.1.31 | MIT | default | +| tracing-core | 0.1.36 | MIT | default | +| tracing-log | 0.2.0 | MIT | default | +| tracing-subscriber | 0.3.23 | MIT | default | +| tynm | 0.2.0 | MIT OR Apache-2.0 | all features | +| type-map | 0.5.1 | MIT/Apache-2.0 | all features | +| typenum | 1.20.1 | MIT OR Apache-2.0 | default | +| unicode-ident | 1.0.24 | (MIT OR Apache-2.0) AND Unicode-3.0 | default | +| unicode-segmentation | 1.13.3 | MIT OR Apache-2.0 | all features | +| unicode-width | 0.2.2 | MIT OR Apache-2.0 | all features | +| unicode-xid | 0.2.6 | MIT OR Apache-2.0 | all features | +| unty | 0.0.4 | MIT OR Apache-2.0 | all features | +| ureq | 3.4.2 | MIT OR Apache-2.0 | restore-model | +| ureq-proto | 0.6.3 | MIT OR Apache-2.0 | restore-model | +| usvg | 0.45.1 | Apache-2.0 OR MIT | default | +| utf8-zero | 0.8.1 | MIT OR Apache-2.0 | restore-model | +| utf8parse | 0.2.2 | Apache-2.0 OR MIT | all features | +| uuid | 1.26.1 | Apache-2.0 OR MIT | all features | +| variadics_please | 1.1.0 | MIT OR Apache-2.0 | all features | +| vcpkg | 0.2.15 | MIT/Apache-2.0 | restore-model | +| version_check | 0.9.5 | MIT/Apache-2.0 | default | +| void | 1.0.2 | MIT | all features | +| walkdir | 2.5.0 | Unlicense/MIT | all features | +| wasi | 0.11.1+wasi-snapshot-preview1 | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | default | +| wasm-bindgen | 0.2.128 | MIT OR Apache-2.0 | default | +| wasm-bindgen-futures | 0.4.78 | MIT OR Apache-2.0 | all features | +| wasm-bindgen-macro | 0.2.128 | MIT OR Apache-2.0 | default | +| wasm-bindgen-macro-support | 0.2.128 | MIT OR Apache-2.0 | default | +| wasm-bindgen-rayon | 1.3.0 | Apache-2.0 | all features | +| wasm-bindgen-shared | 0.2.128 | MIT OR Apache-2.0 | default | +| wasm_sync | 0.1.2 | MIT OR Apache-2.0 | all features | +| wayland-sys | 0.31.11 | MIT | all features | +| web-sys | 0.3.105 | MIT OR Apache-2.0 | all features | +| web-time | 1.1.0 | MIT OR Apache-2.0 | default | +| webpki-root-certs | 1.0.9 | CDLA-Permissive-2.0 | restore-model | +| weezl | 0.1.12 | MIT OR Apache-2.0 | default | +| wgpu | 29.0.4 | MIT OR Apache-2.0 | all features | +| wgpu-core | 29.0.4 | MIT OR Apache-2.0 | all features | +| wgpu-core-deps-apple | 29.0.4 | MIT OR Apache-2.0 | all features | +| wgpu-core-deps-emscripten | 29.0.4 | MIT OR Apache-2.0 | all features | +| wgpu-core-deps-windows-linux-android | 29.0.4 | MIT OR Apache-2.0 | all features | +| wgpu-hal | 29.0.4 | MIT OR Apache-2.0 | all features | +| wgpu-naga-bridge | 29.0.4 | MIT OR Apache-2.0 | all features | +| wgpu-types | 29.0.4 | MIT OR Apache-2.0 | all features | +| which | 4.4.2 | MIT | all features | +| winapi | 0.3.9 | MIT/Apache-2.0 | restore-model | +| winapi-i686-pc-windows-gnu | 0.4.0 | MIT/Apache-2.0 | restore-model | +| winapi-util | 0.1.11 | Unlicense OR MIT | all features | +| winapi-x86_64-pc-windows-gnu | 0.4.0 | MIT/Apache-2.0 | restore-model | +| windows | 0.62.2 | MIT OR Apache-2.0 | all features | +| windows-collections | 0.3.2 | MIT OR Apache-2.0 | all features | +| windows-core | 0.62.2 | MIT OR Apache-2.0 | all features | +| windows-future | 0.3.2 | MIT OR Apache-2.0 | all features | +| windows-implement | 0.60.2 | MIT OR Apache-2.0 | all features | +| windows-interface | 0.59.3 | MIT OR Apache-2.0 | all features | +| windows-link | 0.2.1 | MIT OR Apache-2.0 | default | +| windows-numerics | 0.3.1 | MIT OR Apache-2.0 | all features | +| windows-result | 0.4.1 | MIT OR Apache-2.0 | all features | +| windows-strings | 0.5.1 | MIT OR Apache-2.0 | all features | +| windows-sys | 0.59.0 | MIT OR Apache-2.0 | all features | +| windows-sys | 0.61.2 | MIT OR Apache-2.0 | default | +| windows-targets | 0.52.6 | MIT OR Apache-2.0 | all features | +| windows-threading | 0.2.1 | MIT OR Apache-2.0 | all features | +| windows_aarch64_gnullvm | 0.52.6 | MIT OR Apache-2.0 | all features | +| windows_aarch64_msvc | 0.52.6 | MIT OR Apache-2.0 | all features | +| windows_i686_gnu | 0.52.6 | MIT OR Apache-2.0 | all features | +| windows_i686_gnullvm | 0.52.6 | MIT OR Apache-2.0 | all features | +| windows_i686_msvc | 0.52.6 | MIT OR Apache-2.0 | all features | +| windows_x86_64_gnu | 0.52.6 | MIT OR Apache-2.0 | all features | +| windows_x86_64_gnullvm | 0.52.6 | MIT OR Apache-2.0 | all features | +| windows_x86_64_msvc | 0.52.6 | MIT OR Apache-2.0 | all features | +| winnow | 1.0.4 | MIT | all features | +| xml-rs | 0.8.29 | MIT | all features | +| xmlwriter | 0.1.0 | MIT | default | +| xxhash-rust | 0.8.18 | BSL-1.0 | all features | +| zerocopy | 0.8.56 | BSD-2-Clause OR Apache-2.0 OR MIT | default | +| zerocopy-derive | 0.8.56 | BSD-2-Clause OR Apache-2.0 OR MIT | default | +| zeroize | 1.9.0 | Apache-2.0 OR MIT | restore-model | +| zmij | 1.0.23 | MIT | default | +| zune-core | 0.5.3 | MIT OR Apache-2.0 OR Zlib | default | +| zune-jpeg | 0.5.15 | MIT OR Apache-2.0 OR Zlib | default | diff --git a/studio/assets/denoiser.worker-ER2QG0XM.js b/studio/assets/denoiser.worker-ER2QG0XM.js new file mode 100644 index 0000000000000000000000000000000000000000..651dd3ee0ffd5ebd4783aa1e6da845b5759ea0d8 --- /dev/null +++ b/studio/assets/denoiser.worker-ER2QG0XM.js @@ -0,0 +1 @@ +const r=self;let l="",i="",d="",g="",a=null;function h(){return a||(a=import(new URL(`denoise.js${i?`?v=${i}`:""}`,l).href),a.catch(()=>{a=null})),a}async function u(n){const t=await h();let e=0;const{backend:s}=await t.load({url:d,sha256:g,onProgress:n?o=>{const c=performance.now();(o.cached||o.received===o.total||c-e>200)&&(e=c,r.postMessage({type:"progress",got:o.received,total:o.total||null}))}:void 0});return s}async function y(n){const t=new Int32Array(n.shared,0,2);try{await u(!1);const e=await(await h()).run(n.input,n.width,n.height);new Float32Array(n.shared,8,e.length).set(e),Atomics.store(t,0,1)}catch(e){const s=new TextEncoder().encode(String(e?.message??e)).slice(0,n.shared.byteLength-8);new Uint8Array(n.shared,8,s.length).set(s),Atomics.store(t,1,s.length),Atomics.store(t,0,2)}Atomics.notify(t,0)}r.onmessage=n=>{const t=n.data;if(t.type==="init"&&({base:l,token:i,url:d,sha256:g}=t),t.type==="init"||t.type==="port"){t.port.onmessage=e=>{e.data?.type==="run"&&y(e.data)};return}t.type==="download"&&u(!0).then(e=>r.postMessage({type:"done",ok:!0,backend:e}),e=>r.postMessage({type:"done",ok:!1,message:String(e?.message??e)}))}; diff --git a/studio/assets/engine.worker-Cn2MnOae.js b/studio/assets/engine.worker-Cn2MnOae.js new file mode 100644 index 0000000000000000000000000000000000000000..39ec460c734141302abf10a080ad5ff7fc7e3c1b --- /dev/null +++ b/studio/assets/engine.worker-Cn2MnOae.js @@ -0,0 +1 @@ +const i=self;let o=null,g=null,y=null,p=null,u=null;async function h(e){const t=typeof crossOriginIsolated<"u"&&crossOriginIsolated,s=t?"pkg-threads":"pkg",r=e.token?`?v=${e.token}`:"";o=await import(new URL(`${s}/inkvec_studio_wasm.js${r}`,e.base).href),g=(await o.default({module_or_path:new URL(`${s}/inkvec_studio_wasm_bg.wasm${r}`,e.base)})).memory??null;let l=1,d=null;if(t&&o.initThreadPool){const c=Math.max(1,Math.min(navigator.hardwareConcurrency||4,16)-1);try{await o.initThreadPool(c),l=c+1}catch(f){d=String(f?.message??f)}}p=e.generations?new Int32Array(e.generations):null,u=e.denoiserPort,u&&t&&(w(u),o.enable_denoiser()),y=new o.Studio,i.postMessage({type:"ready",threads:l,poolError:d,isolated:t,version:o.version(),denoiserUrl:o.denoiser_model_url(),denoiserSha256:o.denoiser_model_sha256(),denoiserRepo:o.denoiser_model_repo()})}function w(e){i.inkvecDenoiseSync=(t,s,r)=>{const n=t.length,a=new SharedArrayBuffer(8+Math.max(n*4,4096)),l=new Int32Array(a,0,2);if(e.postMessage({type:"run",input:t.slice(),width:s,height:r,shared:a}),Atomics.wait(l,0,0,6e5)==="timed-out")throw new Error("the denoiser did not answer in ten minutes");if(Atomics.load(l,0)!==1){const c=new TextDecoder().decode(new Uint8Array(a,8,Atomics.load(l,1)).slice());throw new Error(c||"the denoiser failed")}return new Float32Array(a,8,n).slice()}}function S(e){return p?Atomics.load(p,0)===e:!0}function _(e){const t=y;if(!t)throw new Error("the engine is not loaded");switch(e.op){case"capabilities":return JSON.parse(t.capabilities(!!e.supported,!!e.installed,e.bytes??void 0));case"open_bytes":return JSON.parse(t.open_bytes(e.bytes,e.name??void 0));case"trace":{const s=e.generation,r=t.trace(JSON.stringify(e.request),e.draftPx,e.draftSeconds,s,(n,a)=>i.postMessage({type:"stage",generation:s,name:n,ms:a}),S);return r===void 0?null:JSON.parse(r)}case"preview":return JSON.parse(t.preview(JSON.stringify(e.request),e.draftPx,e.draftSeconds));case"export":return t.export_files(JSON.stringify({request:e.request}),!!e.zip).map(r=>({name:r.name,data:r.data}));case"close":return t.close(),null;default:return JSON.parse(t.call(e.op,JSON.stringify(e.args??{})))}}function v(e){return e instanceof WebAssembly.RuntimeError||e instanceof RangeError&&/memory|allocation/i.test(e.message)||/unreachable|out of memory|memory access out of bounds/i.test(String(e?.message??e))}let m=Promise.resolve();i.onmessage=e=>{const t=e.data;m=m.then(async()=>{if(t.type==="init"){try{await h(t)}catch(r){i.postMessage({type:"loadfail",error:String(r?.stack??r)})}return}const s=performance.now();try{const r=_(t),n=[];if(t.op==="export")for(const a of r)n.push(a.data.buffer);i.postMessage({type:"reply",id:t.id,ok:!0,value:r,ms:performance.now()-s,mem:g?.buffer.byteLength??null},n)}catch(r){const n=String(r?.message??r);i.postMessage({type:"reply",id:t.id,ok:!1,error:n,crashed:v(r)})}})}; diff --git a/studio/assets/main-B-nuHqfb.css b/studio/assets/main-B-nuHqfb.css new file mode 100644 index 0000000000000000000000000000000000000000..e9de5844402c3e0b140186f12b71a0cd072ad062 --- /dev/null +++ b/studio/assets/main-B-nuHqfb.css @@ -0,0 +1 @@ +@font-face{font-family:Inter Studio;src:url(../fonts/inter-latin.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Studio;src:url(../fonts/playfair-latin.woff2) format("woff2");font-weight:400 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,:root[data-theme=dark]{color-scheme:dark;--void: #0c0a09;--stage: #141210;--paper: #1a1816;--card: #211f1c;--surface: #2a2724;--highlight: #35322e;--ink: #faf8f5;--dim: rgba(250, 248, 245, .75);--faint: rgba(250, 248, 245, .55);--muted: rgba(250, 248, 245, .4);--rule: rgba(250, 248, 245, .08);--rule2: #2a2724;--accent: #c9754a;--accent-text: #d4896a;--accent-hover: #d4896a;--accent-ink: #1a1816;--accent-soft: rgba(201, 117, 74, .12);--accent-subtle: rgba(201, 117, 74, .08);--gold: #b8976c;--gold-soft: rgba(184, 151, 108, .15);--good: #34d399;--goodbg: rgba(52, 211, 153, .15);--bad: #f87171;--badbg: rgba(248, 113, 113, .15);--anchor: #f87171;--handle: #b8976c;--wire: #faf8f5;--vt: #9a938c;--checker-a: #191715;--checker-b: #141210;--focus: rgba(201, 117, 74, .35);--focus-line: #c9754a;--state-draft: #b8976c;--state-final: #34d399;--state-stale: #c9754a;--shadow-sm: 0 4px 12px -2px rgba(12, 10, 9, .4);--shadow: 0 8px 24px -4px rgba(12, 10, 9, .5);--shadow-lg: 0 20px 50px -12px rgba(12, 10, 9, .6);--shadow-xl: 0 30px 70px -20px rgba(12, 10, 9, .7);--glow: 0 6px 20px rgba(201, 117, 74, .25)}:root[data-theme=light]{color-scheme:light;--void: #e6e1d9;--stage: #f0ece6;--paper: #faf8f5;--card: #ffffff;--surface: #eae5dd;--highlight: #ded8ce;--ink: #1a1816;--dim: rgba(26, 24, 22, .75);--faint: rgba(26, 24, 22, .58);--muted: rgba(26, 24, 22, .46);--rule: rgba(26, 24, 22, .1);--rule2: #d8d2c8;--accent: #c9754a;--accent-text: #9c5730;--accent-hover: #b3603a;--accent-ink: #faf8f5;--accent-soft: rgba(201, 117, 74, .14);--accent-subtle: rgba(201, 117, 74, .08);--gold: #8a6a3f;--gold-soft: rgba(138, 106, 63, .14);--good: #1c7a55;--goodbg: rgba(28, 122, 85, .14);--bad: #b83232;--badbg: rgba(184, 50, 50, .13);--anchor: #b83232;--handle: #8a6a3f;--wire: #1a1816;--vt: #6f6862;--checker-a: #ffffff;--checker-b: #e8e3db;--focus: rgba(201, 117, 74, .45);--focus-line: #9c5730;--state-draft: #8a6a3f;--state-final: #1c7a55;--state-stale: #9c5730;--shadow-sm: 0 4px 12px -2px rgba(90, 76, 60, .12);--shadow: 0 8px 24px -4px rgba(90, 76, 60, .16);--shadow-lg: 0 20px 50px -12px rgba(90, 76, 60, .2);--shadow-xl: 0 30px 70px -20px rgba(90, 76, 60, .24);--glow: 0 6px 20px rgba(201, 117, 74, .28)}:root{--font-display: "Playfair Studio", "Playfair Display", Georgia, serif;--font-body: "Inter Studio", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--h-compact: 28px;--h-control: 32px;--h-pill: 36px;--h-appbar: 46px;--h-status: 26px;--h-row: 30px;--t-chrome: 12.5px;--t-panel: 13px;--t-label: 11.5px;--t-eyebrow: 10px;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--rail-pad: 14px;--rail-w: 352px;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--d-micro: .15s;--d-fast: .2s;--d-normal: .4s}@media(prefers-reduced-motion:reduce){:root{--d-micro: 0ms;--d-fast: 0ms;--d-normal: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{background:var(--paper);color:var(--ink);font:400 var(--t-panel) / 1.5 var(--font-body);-webkit-font-smoothing:antialiased;user-select:none;cursor:default}#app{height:100%;display:flex;flex-direction:column}:focus{outline:none}:focus-visible{outline:2px solid var(--focus-line);outline-offset:2px;border-radius:var(--radius-sm)}a{color:var(--accent-text);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}.num{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.serif{font-family:var(--font-display);letter-spacing:-.03em}.eyebrow{font-size:var(--t-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.dim{color:var(--dim)}.faint{color:var(--faint)}.muted{color:var(--muted)}.sep{width:1px;height:18px;background:var(--rule2);flex:none}.spacer{flex:1}kbd{font:500 10.5px var(--font-mono);border:1px solid var(--highlight);border-radius:4px;padding:1px 5px;color:var(--faint)}.btn{height:var(--h-control);padding:0 16px;border-radius:var(--radius-full);border:1px solid var(--rule2);background:transparent;color:var(--dim);font-weight:500;font-size:var(--t-chrome);display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;transition:transform var(--d-micro) var(--ease-smooth),background var(--d-micro),border-color var(--d-micro),box-shadow var(--d-micro)}.btn:hover:not(:disabled){border-color:var(--highlight);color:var(--ink)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{height:var(--h-pill);border-color:var(--accent);background:var(--accent);color:var(--accent-ink);font-weight:600;font-size:var(--t-panel);box-shadow:var(--glow)}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink);transform:translateY(-2px)}.btn.ghost{border-color:transparent}.btn.ghost:hover:not(:disabled){background:var(--surface)}.btn.compact{height:var(--h-compact);padding:0 11px;border-radius:var(--radius);font-size:var(--t-chrome)}.btn.icon{width:var(--h-control);padding:0}.btn.icon.compact{width:var(--h-compact)}.btn.danger{color:var(--bad)}.seg{display:inline-flex;gap:2px;padding:2px;background:var(--card);border:1px solid var(--rule2);border-radius:7px}.seg>button{font-size:var(--t-label);padding:4px 11px;border-radius:5px;color:var(--faint);white-space:nowrap;transition:background var(--d-micro),color var(--d-micro)}.seg>button:hover{color:var(--dim)}.seg>button[aria-pressed=true]{background:var(--highlight);color:var(--ink);font-weight:500}.seg>button:disabled{color:var(--muted);cursor:default}.toggle{font-size:var(--t-label);padding:3px 9px;border-radius:var(--radius-sm);border:1px solid transparent;color:var(--faint)}.toggle:hover{color:var(--dim)}.toggle[aria-pressed=true]{border-color:var(--highlight);background:var(--rule2);color:var(--ink)}.switch{width:32px;height:18px;flex:none;border-radius:var(--radius-full);background:var(--highlight);position:relative;transition:background var(--d-micro)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--faint);transition:transform var(--d-micro) var(--ease-smooth),background var(--d-micro)}.switch[aria-checked=true]{background:var(--accent)}.switch[aria-checked=true]:after{transform:translate(14px);background:var(--accent-ink)}.checkbox{width:15px;height:15px;flex:none;border-radius:4px;border:1px solid var(--highlight);display:grid;place-items:center;color:var(--accent-ink)}.checkbox[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.checkbox:not([aria-checked=true])>svg{visibility:hidden}.appbar{height:var(--h-appbar);flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--stage);border-bottom:1px solid var(--rule2);-webkit-app-region:drag}.appbar button,.appbar .seg,.appbar .filechip,.appbar .nodrag{-webkit-app-region:no-drag}.brand{display:flex;align-items:center;gap:8px;font-size:var(--t-chrome);font-weight:600;letter-spacing:-.01em;padding-right:4px}.brand>svg{color:var(--accent)}.filechip{display:flex;align-items:center;gap:8px;height:var(--h-compact);padding:0 10px;background:var(--card);border:1px solid var(--rule2);border-radius:var(--radius-sm);font-size:var(--t-chrome);max-width:340px}.filechip .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wincontrols{display:flex;gap:2px;margin-left:4px}.wincontrols button{width:30px;height:26px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--faint)}.wincontrols button:hover{background:var(--surface);color:var(--ink)}.wincontrols button.close:hover{background:var(--bad);color:#fff}.wincontrols i{display:block;background:currentColor}.wincontrols .min i{width:10px;height:1px}.wincontrols .max i{width:9px;height:9px;background:none;border:1px solid currentColor;border-radius:2px}.body{flex:1;min-height:0;display:flex}.stage{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--stage);position:relative}.viewertools{min-height:38px;flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:5px 12px;border-bottom:1px solid var(--rule2);background:color-mix(in srgb,var(--stage) 92%,transparent)}.legend{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--faint)}.legend span{display:flex;align-items:center;gap:5px}.legend i{display:block}.legend .anchor{width:7px;height:7px;border-radius:50%;background:var(--anchor)}.legend .handle{width:7px;height:7px;background:var(--handle);transform:rotate(45deg)}.legend .band{width:12px;height:6px;border-radius:2px}.legend .band.sure,.overlay .certainty .sure{--band: #30a46c}.legend .band.soft,.overlay .certainty .soft{--band: #f5a524}.legend .band.unsure,.overlay .certainty .unsure{--band: #e5484d}.legend .band{background:var(--band)}.overlay .certainty path{fill:var(--band);fill-rule:evenodd;fill-opacity:.45;stroke:var(--band);stroke-width:1;vector-effect:non-scaling-stroke}.legend .wire{width:12px;height:2px;background:var(--wire)}.panes{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.pane{flex:1;min-width:0;position:relative;overflow:hidden;display:grid;place-items:center;background-color:var(--stage);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:16px 16px;cursor:grab;touch-action:none}.pane:active{cursor:grabbing}.pane.hidden{display:none}.panes.stacked .pane{position:absolute;inset:0}.panelabel{position:absolute;top:10px;left:12px;z-index:3;pointer-events:none}.chip{position:absolute;top:8px;right:12px;z-index:3;display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--radius-full);font-size:var(--t-label);border:1px solid;pointer-events:none}.chip i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block}.chip.draft{color:var(--state-draft);border-color:color-mix(in srgb,var(--state-draft) 45%,transparent);background:color-mix(in srgb,var(--state-draft) 15%,transparent)}.chip.final{color:var(--state-final);border-color:color-mix(in srgb,var(--state-final) 40%,transparent);background:color-mix(in srgb,var(--state-final) 15%,transparent)}.chip.stale{color:var(--state-stale);border-color:color-mix(in srgb,var(--state-stale) 45%,transparent);background:color-mix(in srgb,var(--state-stale) 15%,transparent)}.chip.swapped:after{content:"";position:absolute;left:10px;right:10px;bottom:-3px;height:1.5px;background:var(--accent);border-radius:1px;transform-origin:left;animation:sweep var(--d-normal) var(--ease-out-expo)}@keyframes sweep{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.art{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;pointer-events:none}.art img{display:block;image-rendering:pixelated}.art svg{display:block;overflow:visible}.art.swapping{animation:crossfade var(--d-normal) var(--ease-out-expo)}@keyframes crossfade{0%{opacity:.25}to{opacity:1}}.art.centred{position:static;place-self:stretch;min-width:0;min-height:0;padding:44px 32px 32px}.panes.onlight{--stage: #f3f0ea;--checker-a: #ffffff;--checker-b: #ebe7df}.panes.ondark{--stage: #1a1816;--checker-a: #26231f;--checker-b: #211f1c}.overlay{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}.overlay .wireframe path{fill:none;stroke:var(--wire);stroke-width:1px;vector-effect:non-scaling-stroke}.overlay .handles path{fill:none;stroke:var(--handle);vector-effect:non-scaling-stroke}.overlay .handles .lines{stroke-width:.8px}.overlay .handles .knobs{stroke-width:2.4px;stroke-linecap:square}.pane>canvas.anchors{position:absolute;left:0;top:0;pointer-events:none}.wipehandle{position:absolute;top:0;bottom:0;width:2px;background:var(--ink);z-index:4;cursor:ew-resize;opacity:.7}.wipehandle:after{content:"";position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:2px solid var(--ink);background:var(--stage)}.detailpane{position:absolute;inset:0;z-index:5;background:var(--stage);display:flex;flex-direction:column}.detailhead{flex:none;display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--rule2);font-size:var(--t-label);color:var(--dim)}.detailbody{flex:1;min-height:0;position:relative;overflow:hidden;display:grid;place-items:center}.detailfoot{flex:none;padding:8px 12px;border-top:1px solid var(--rule2);font-size:var(--t-label);color:var(--faint)}.pixelgrid{position:absolute;inset:0;background-image:linear-gradient(to right,rgba(250,248,245,.07) 1px,transparent 1px),linear-gradient(to bottom,rgba(250,248,245,.07) 1px,transparent 1px);pointer-events:none}:root[data-theme=light] .pixelgrid{background-image:linear-gradient(to right,rgba(26,24,22,.1) 1px,transparent 1px),linear-gradient(to bottom,rgba(26,24,22,.1) 1px,transparent 1px)}.stagestate{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;padding:32px;text-align:center;background:var(--stage)}.stagestate .title{font-size:16px;font-weight:500}.stagestate .body{display:block;font-size:var(--t-chrome);line-height:1.6;color:var(--faint);max-width:46ch}.stagestate .action{font-size:var(--t-chrome);color:var(--accent-text);margin-top:2px}.statusstrip{height:var(--h-status);flex:none;display:flex;align-items:center;gap:10px;padding:0 12px;border-top:1px solid var(--rule2);background:var(--stage);font-size:var(--t-label);color:var(--faint);font-variant-numeric:tabular-nums}.statusstrip .lead{color:var(--dim)}.statusstrip .privacy{margin-left:auto}.statusstrip .updatechip{display:inline-flex;align-items:center;gap:6px;color:var(--gold)}.statusstrip .updatechip i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block}.rail{width:var(--rail-w);flex:none;border-left:1px solid var(--rule2);background:var(--paper);display:flex;flex-direction:column;position:relative}.railscroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:var(--rail-pad);display:flex;flex-direction:column;gap:var(--rail-pad)}.railscroll::-webkit-scrollbar{width:10px}.railscroll::-webkit-scrollbar-thumb{background:var(--rule2);border-radius:5px;border:3px solid var(--paper)}.railscroll::-webkit-scrollbar-thumb:hover{background:var(--highlight)}.card{border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg);padding:13px;display:flex;flex-direction:column;gap:10px}.cardhead{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.railfoot{flex:none;border-top:1px solid var(--rule2);background:var(--stage);padding:12px var(--rail-pad);display:flex;flex-direction:column;gap:8px}.railfoot .row{display:flex;gap:8px}.railfoot .note{display:flex;justify-content:space-between;font-size:var(--t-label);color:var(--muted)}.presets{display:flex;flex-wrap:wrap;gap:5px}.preset{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;border:1px solid var(--rule2);background:var(--card);font-size:var(--t-chrome);color:var(--dim);transition:border-color var(--d-micro),background var(--d-micro),color var(--d-micro)}.preset:hover{border-color:var(--highlight);color:var(--ink)}.preset[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--ink);font-weight:500}.preset.saved{padding-right:22px}.preset{position:relative}.preset .forget{position:absolute;top:50%;margin-top:-8px;right:4px;width:16px;height:16px;border-radius:5px;opacity:0;transition:opacity var(--d-micro),background var(--d-micro)}.preset .forget:before,.preset .forget:after{content:"";position:absolute;left:4px;top:7.5px;width:8px;height:1.5px;border-radius:1px;background:var(--muted)}.preset .forget:before{transform:rotate(45deg)}.preset .forget:after{transform:rotate(-45deg)}.preset:hover .forget,.preset .forget:focus-visible{opacity:1}.preset .forget:hover{background:var(--highlight)}.preset .forget:hover:before,.preset .forget:hover:after{background:var(--bad)}.traybar{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:11px}.railmodes{flex:none;display:grid;grid-template-columns:1.75fr 1fr;gap:8px;padding:10px var(--rail-pad) 0}.mode{min-width:0;display:flex;flex-direction:column;gap:8px;padding:10px 11px 11px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card)}.modehead{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-height:16px}.modetitle{font-size:12.5px;font-weight:600;color:var(--ink)}.modestate{font-size:10.5px;color:var(--muted);white-space:nowrap}.seg.big{display:flex;width:100%;padding:3px}.seg.big>button{flex:1;padding:7px 0;font-size:12.5px;text-align:center}.seg.big>button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);font-weight:600}.bigswitch{display:flex;align-items:center;gap:8px;height:34px;padding:0 4px;border:1px solid var(--rule2);border-radius:999px;background:var(--paper);color:var(--dim);font-size:12.5px;font-weight:600;transition:background var(--d-micro),border-color var(--d-micro),color var(--d-micro)}.bigswitch .knob{flex:none;width:24px;height:24px;border-radius:50%;background:var(--highlight);transition:background var(--d-micro)}.bigswitch .state{flex:1;text-align:center;padding-right:4px}.bigswitch[aria-checked=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.bigswitch[aria-checked=true]{flex-direction:row-reverse}.bigswitch[aria-checked=true] .knob{background:var(--accent-ink)}.bigswitch[aria-checked=true] .state{padding-right:0;padding-left:4px}.railtabs{flex:none;background:var(--stage);border-bottom:1px solid var(--rule2)}.railseg{display:flex;width:100%}.railseg>button{position:relative;flex:1;display:flex;align-items:baseline;justify-content:center;gap:8px;height:46px;padding:14px 12px 0;color:var(--muted);transition:color var(--d-micro),background var(--d-micro)}.railseg>button:hover:not([aria-selected=true]){color:var(--dim);background:color-mix(in srgb,var(--ink) 4%,transparent)}.railseg>button[aria-selected=true]{color:var(--ink);background:var(--paper)}.railseg>button:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:transparent;transition:background var(--d-micro)}.railseg>button[aria-selected=true]:after{background:var(--accent)}.railseg .tablabel{font-size:14px;font-weight:600;letter-spacing:-.005em}.railseg .tabnote{font-size:11px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--faint)}.railseg .tabnote:empty{display:none}.railseg>button[aria-selected=true] .tabnote{color:var(--accent-text)}.tabcaption{margin:0;padding:7px var(--rail-pad) 9px;background:var(--paper);font-size:11.5px;color:var(--muted)}.presetblock{display:flex;flex-direction:column;gap:8px}.presetblock .traybar .faint{min-width:0}.rail section.group{gap:0;border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg)}.rail section.group .grouphead{align-items:center;padding-right:13px}.groupbtn{flex:1;display:flex;align-items:center;gap:7px;padding:11px 9px 11px 13px;color:var(--muted);text-align:left;border-radius:var(--radius-lg)}.groupbtn:hover{color:var(--dim)}.groupbtn .changed{font-size:10.5px;color:var(--accent-text)}.groupbody{display:flex;flex-direction:column;gap:13px;padding:2px 13px 14px}.control.changed .controlhead .label:before{content:"";display:inline-block;width:5px;height:5px;margin-right:6px;border-radius:50%;background:var(--accent);vertical-align:1px}.emptycard p{margin:0;font-size:var(--t-chrome);line-height:1.55;color:var(--dim)}.structure .srow{display:grid;grid-template-columns:1fr auto;column-gap:8px;row-gap:5px;align-items:baseline}.structure .srow .k{font-size:var(--t-chrome);color:var(--dim)}.structure .srow .v{font-size:var(--t-panel);font-variant-numeric:tabular-nums}.structure .srow .v .of{margin-left:6px;font-size:10.5px;color:var(--muted)}.sbar{grid-column:1 / -1;position:relative;height:4px;margin-bottom:4px;border-radius:2px;background:var(--highlight)}.sbar i{position:absolute;inset:0 auto 0 0;border-radius:2px;background:var(--accent);transition:width var(--d-normal) var(--ease-out-expo)}.sbar b{position:absolute;top:-3px;bottom:-3px;width:2px;margin-left:-1px;border-radius:1px;background:var(--dim)}.readout{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;min-height:54px;background:var(--rule2);border:1px solid var(--rule2);border-radius:var(--radius);overflow:hidden}.readout .cell{min-width:0;display:flex;flex-direction:column;gap:1px;padding:6px 10px;background:var(--paper)}.readout .v{font-size:15px;font-weight:500;line-height:1.25}.readout .k{font-size:10px;color:var(--muted)}.delta{font-size:10.5px;font-variant-numeric:tabular-nums;color:var(--muted)}.delta.better{color:var(--good)}.delta.worse{color:var(--gold)}.readout.busy,.readout.idle{display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--paper);font-size:var(--t-chrome)}.readout .stage{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--state-stale)}.pulse{flex:none;width:7px;height:7px;border-radius:50%;background:var(--state-stale);animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{opacity:.3}}.headline{display:flex;align-items:flex-end;gap:12px}.headline .figure{font-family:var(--font-display);font-size:52px;line-height:.85;letter-spacing:-.03em}.headline .of{display:flex;flex-direction:column;gap:2px;padding-bottom:4px}.meter{position:relative;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--good),var(--gold) 55%,var(--bad))}.meter .threshold{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--dim)}.meter .needle{position:absolute;top:-4px;width:2px;height:14px;background:var(--ink);border-radius:1px;transition:left var(--d-normal) var(--ease-out-expo)}.meterscale{display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted)}.stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule2);border:1px solid var(--rule2);border-radius:var(--radius);overflow:hidden;font-variant-numeric:tabular-nums}.stats>div{background:var(--paper);padding:8px 10px;display:flex;flex-direction:column;gap:2px}.stats .k{font-size:10.5px;color:var(--muted)}.stats .v{font-size:var(--t-panel)}.benchmark{display:flex;gap:8px;padding:8px 10px;border:1px dashed var(--highlight);border-radius:var(--radius);background:color-mix(in srgb,var(--ink) 2%,transparent)}.benchmark .label{flex:none;padding-top:1px}.benchmark p{margin:0;font-size:var(--t-label);line-height:1.45;color:var(--faint)}.loss{display:flex;gap:9px;padding-bottom:9px;border-bottom:1px solid var(--rule2)}.loss:last-of-type{border-bottom:none;padding-bottom:0}.loss .glyph{flex:none;padding-top:2px;color:var(--gold)}.loss .text{font-size:var(--t-chrome);line-height:1.45;color:var(--dim)}.loss .meta{font-size:var(--t-label);color:var(--muted);display:flex;gap:6px;flex-wrap:wrap}.loss .why{font-size:var(--t-label);line-height:1.5;color:var(--faint);margin-top:4px;padding-left:9px;border-left:1px solid var(--rule2)}.loss .expand{color:var(--muted)}.loss .expand:hover{color:var(--dim)}.nothinglost{display:flex;gap:9px;align-items:center;font-size:var(--t-chrome);color:var(--faint)}.nothinglost .glyph{color:var(--good);flex:none;display:flex}.ink{display:flex;align-items:center;gap:9px;padding:2px 0;border-radius:var(--radius-sm);width:100%;text-align:left}.ink:hover{background:var(--surface)}.swatch{width:22px;height:22px;flex:none;border-radius:5px;border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:8px 8px;position:relative;overflow:hidden}.swatch i{position:absolute;inset:0;display:block}.swatch.snapped{border:2px solid var(--accent)}.ink .hex{font-size:var(--t-chrome);font-variant-numeric:tabular-nums;color:var(--dim);width:72px}.ink .share{font-size:var(--t-label);color:var(--muted);font-variant-numeric:tabular-nums;width:44px}.ink .snap{margin-left:auto;font-size:var(--t-label);color:var(--muted)}.ink .snap.on{color:var(--accent-text)}.ink{gap:6px;touch-action:none}.ink.grouped .hex{color:var(--accent-text)}.inkpick{width:16px;height:16px;flex:none;border-radius:4px;border:1px solid var(--highlight);display:grid;place-items:center;color:var(--accent-ink)}.inkpick[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.inkmain{display:flex;align-items:center;gap:9px;flex:1;min-width:0;text-align:left}.inkmain[aria-disabled=true]{cursor:grab}.swatch.mini{width:16px;height:16px;border-radius:4px}.swatch.mini.ramp{width:26px}.inklist{display:flex;flex-direction:column;gap:1px;border-radius:var(--radius-sm)}.inklist,.cgroup{transition:box-shadow var(--d-fast),background var(--d-fast)}.mergebar{display:flex;align-items:center;gap:10px;font-size:var(--t-label)}.cgroups{display:flex;flex-direction:column;gap:7px}.cgroupshead{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.cgroup{border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper);padding:8px;display:flex;flex-direction:column;gap:7px}.cgroup.suggested{border-style:dashed;background:transparent}.cchips{display:flex;flex-wrap:wrap;gap:4px}.cchip{display:inline-flex;align-items:center;border:1px solid var(--highlight);border-radius:999px;background:var(--card);touch-action:none;font-size:var(--t-label);color:var(--dim)}.cchip.target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.cchip.unmatched{border-color:var(--gold);border-style:dashed}.cchipmain{display:inline-flex;align-items:center;gap:5px;padding:2px 4px 2px 3px;border-radius:999px}.cchipmain .swatch.mini{border-radius:999px}.cchipx{display:grid;place-items:center;width:18px;height:18px;margin-right:2px;border-radius:999px;color:var(--muted)}.cchipx:hover{color:var(--ink);background:var(--surface)}.cresult{display:flex;align-items:center;gap:6px;font-size:var(--t-label)}.cresult>span{white-space:nowrap}.cresult .arrow{color:var(--muted)}.cresultchip{display:inline-flex;align-items:center;gap:5px;color:var(--dim)}.cactions{display:flex;align-items:center;gap:6px}.creport{font-size:11px;line-height:1.4;display:inline-flex;align-items:center;gap:5px;min-width:0}.creport.warn{color:var(--gold)}.creport.warn svg{flex:none}.simplifyrow{display:flex;align-items:center;gap:5px;font-size:var(--t-label)}.numberfield.simplify{min-width:0;width:40px;text-align:center}.dragghost{position:fixed;z-index:60;pointer-events:none;filter:drop-shadow(0 2px 6px rgba(0,0,0,.45))}body.dragging-ink,body.dragging-ink *{cursor:grabbing!important}body.dragging-ink [data-drop=list]{box-shadow:0 0 0 1px var(--rule2)}.dropping{box-shadow:0 0 0 2px var(--accent)!important;background:var(--accent-subtle)!important}.control{display:flex;flex-direction:column;gap:5px}.controlhead{display:flex;align-items:baseline;gap:8px}.controlhead .label{flex:1;font-size:var(--t-chrome);color:var(--dim)}.controlhead .unit{font-size:var(--t-label);color:var(--muted)}.numberfield{height:24px;min-width:58px;padding:0 6px;border:1px solid var(--highlight);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);font:400 var(--t-chrome) var(--font-body);font-variant-numeric:tabular-nums;text-align:center}.numberfield:focus-visible{border-color:var(--accent)}.slider{appearance:none;-webkit-appearance:none;width:100%;height:14px;background:none;margin:2px 0 0;cursor:pointer}.slider::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:var(--highlight)}.slider::-webkit-slider-thumb{-webkit-appearance:none;width:11px;height:11px;margin-top:-4px;border-radius:50%;background:var(--ink);border:none}.slider::-moz-range-track{height:3px;border-radius:2px;background:var(--highlight)}.slider::-moz-range-thumb{width:11px;height:11px;border:none;border-radius:50%;background:var(--ink)}.stops{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:var(--muted);white-space:nowrap}.group{display:flex;flex-direction:column;gap:9px}.grouphead{display:flex;align-items:baseline;justify-content:space-between}.reset{font-size:var(--t-label);color:var(--accent-text)}.reset:disabled{color:var(--muted);cursor:default}.stagelist{display:flex;flex-direction:column;gap:5px;font-variant-numeric:tabular-nums}.stagerow{display:flex;align-items:baseline;gap:8px;font-size:var(--t-label);color:var(--muted)}.stagerow.done{color:var(--dim)}.stagerow .mark{width:10px;text-align:center;color:var(--muted)}.stagerow.done .mark{color:var(--good)}.stagerow .name{flex:1}.sweep{height:2px;background:var(--rule2);border-radius:2px;overflow:hidden}.sweep i{display:block;width:30%;height:100%;background:var(--accent);animation:sweepacross 1.6s var(--ease-out-expo) infinite}@keyframes sweepacross{0%{transform:translate(-100%)}to{transform:translate(340%)}}@media(prefers-reduced-motion:reduce){.sweep i{animation:none;width:100%;opacity:.4}.chip.swapped:after,.art.swapping,.callout,.pulse{animation:none}.dragging .drop{transition:none}}.firstrun{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:34px;background:var(--stage);padding:24px}.drop{width:min(620px,80%);padding:44px 24px;min-height:220px;justify-content:center;border:1.5px dashed var(--highlight);border-radius:var(--radius-xl);display:flex;flex-direction:column;align-items:center;gap:16px;background:color-mix(in srgb,var(--ink) 1.5%,transparent);text-align:center;transition:border-color var(--d-fast),background var(--d-fast)}.drop .glyph{color:var(--muted)}[hidden]{display:none!important}.drop.solid{background:var(--paper);border-style:solid;border-color:var(--rule2)}.panehint{max-width:34ch;text-align:center;font-size:12.5px;line-height:1.55}.drop .headline{font-family:var(--font-display);font-size:26px;letter-spacing:-.02em;display:block}.drop .release,.dragging .drop .resting{display:none}.dragging .drop .release{display:block}.dragging .drop{width:min(640px,90%);min-height:320px;transition:width var(--d-fast) var(--ease-out-expo),min-height var(--d-fast) var(--ease-out-expo),border-color var(--d-fast),background var(--d-fast)}.samples{display:flex;flex-direction:column;align-items:center;gap:12px}.samplerow{display:flex;gap:12px}.sample{width:112px;display:flex;flex-direction:column;gap:7px;align-items:center}.sample .thumb{width:112px;height:88px;border:1px solid var(--rule2);border-radius:10px;background-color:var(--card);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:12px 12px;display:grid;place-items:center;overflow:hidden;transition:border-color var(--d-micro),transform var(--d-micro)}.sample:hover .thumb{border-color:var(--accent);transform:translateY(-2px)}.sample img{max-width:76px;max-height:68px}.sample .label{font-size:var(--t-label);color:var(--faint)}.dragging .drop{border-color:var(--accent);background:var(--accent-soft)}.dragging .drop .glyph{color:var(--accent)}.dragging:after{content:"";position:fixed;inset:0;border:2px solid var(--accent);pointer-events:none;z-index:60}.dragging .stage>*:not(.stagestate){opacity:.6}.callout{position:absolute;left:20px;bottom:20px;z-index:8;max-width:320px;display:flex;flex-direction:column;gap:5px;padding:10px 13px;border-radius:var(--radius-lg);border:1px solid var(--rule2);background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(8px);font-size:11.5px;line-height:1.5;color:var(--dim);animation:rise var(--d-fast) var(--ease-out-expo)}.callout .head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}#overlays:empty{display:none}.scrim{position:fixed;inset:0;z-index:40;background:color-mix(in srgb,var(--void) 62%,transparent);display:grid;place-items:center;padding:24px}.modal{width:min(460px,100%);max-height:86vh;overflow-y:auto;background:var(--card);border:1px solid var(--highlight);border-radius:var(--radius-xl);padding:22px;display:flex;flex-direction:column;gap:13px;box-shadow:var(--shadow-xl)}.modal h2{margin:0;font-family:var(--font-display);font-size:22px;font-weight:500;letter-spacing:-.02em}.modal p{margin:0;font-size:var(--t-panel);line-height:1.7;color:var(--dim)}.modal .actions{display:flex;gap:8px;justify-content:flex-end}.modal.composer{width:min(1040px,100%);max-height:92vh;padding:0;gap:0;overflow:hidden}.composerhead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 22px 15px;border-bottom:1px solid var(--rule2)}.composerhead p{margin-top:3px;font-size:var(--t-chrome)}.composerbody{display:grid;grid-template-columns:minmax(0,1fr) 312px;min-height:0;overflow-y:auto}.composerpreview{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:22px;min-width:0;background:var(--stage)}.cardstage{--ar: 1.7778;position:relative;width:min(100%,calc(58vh * var(--ar)));aspect-ratio:var(--ar);border-radius:var(--radius);overflow:hidden;background:var(--paper);box-shadow:var(--shadow-lg)}.cardstage img{display:block;width:100%;height:100%;object-fit:contain}.cardbusy{position:absolute;inset:0;display:grid;place-items:center;opacity:0;pointer-events:none;background:color-mix(in srgb,var(--paper) 45%,transparent);transition:opacity var(--d-micro)}.cardstage.busy .cardbusy{opacity:1;transition-delay:.26s}.cardspin{width:20px;height:20px;border-radius:50%;border:2px solid var(--highlight);border-top-color:var(--accent);animation:cardspin .8s linear infinite}@keyframes cardspin{to{transform:rotate(360deg)}}.composerside{display:flex;flex-direction:column;gap:18px;padding:20px 22px;border-left:1px solid var(--rule2)}.optgroup{display:flex;flex-direction:column;gap:8px}.cardseg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;padding:2px;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper)}.cardseg button{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 8px;border-radius:calc(var(--radius) - 2px);font-size:var(--t-chrome);color:var(--faint)}.cardseg button small{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}.cardseg button:hover:not([aria-checked=true]){color:var(--ink)}.cardseg button[aria-checked=true]{color:var(--ink);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.optlist{display:flex;flex-direction:column;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper)}.optlist>*+*{border-top:1px solid var(--rule2)}.optrow{display:flex;align-items:center;gap:12px;width:100%;padding:9px 11px;text-align:left}.optrow:hover{background:var(--rule2)}.optext{display:flex;flex:1;flex-direction:column;gap:1px;min-width:0}.optlabel{font-size:12.5px;color:var(--ink)}.optnote{font-size:11px;line-height:1.4;color:var(--muted)}.optslider{display:flex;flex-direction:column;gap:4px;padding:9px 11px 8px;transition:opacity var(--d-micro)}.optslider.off{opacity:.4}.optslider.off .slider{cursor:default}.optsliderhead{display:flex;justify-content:space-between;font-size:12px;color:var(--dim)}.composeractions{display:flex;flex-direction:column;gap:8px;margin-top:auto}.composeractions .btn{justify-content:center;gap:7px}@media(max-width:860px){.composerbody{grid-template-columns:minmax(0,1fr)}.composerside{border-left:0;border-top:1px solid var(--rule2)}}.popover{position:fixed;z-index:45;background:var(--card);border:1px solid var(--highlight);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.menu{padding:6px;min-width:260px}.menu .item{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:var(--radius);width:100%;text-align:left;font-size:var(--t-chrome);color:var(--dim)}.menu .item:hover{background:var(--surface);color:var(--ink)}.menu .item .when{margin-left:auto;font-size:var(--t-label);color:var(--muted)}.menu .rule{height:1px;background:var(--rule2);margin:5px 0}.sheet{position:absolute;inset:0;z-index:20;background:color-mix(in srgb,var(--void) 55%,transparent);display:flex;align-items:flex-end}.sheetbody{width:100%;max-height:100%;overflow-y:auto;background:var(--card);border-top:1px solid var(--highlight);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:14px;display:flex;flex-direction:column;gap:11px;box-shadow:0 -20px 50px color-mix(in srgb,var(--void) 60%,transparent);animation:rise var(--d-fast) var(--ease-out-expo)}@keyframes rise{0%{transform:translateY(12px);opacity:0}}.format{display:flex;align-items:center;gap:9px;padding:7px 9px;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper);width:100%;text-align:left;font-size:var(--t-chrome);color:var(--dim)}.format:hover{border-color:var(--highlight)}.format .size{margin-left:auto;font-size:var(--t-label);color:var(--muted);font-variant-numeric:tabular-nums}.tooltip{position:fixed;z-index:70;max-width:300px;background:var(--highlight);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:var(--radius);padding:10px 12px;font-size:var(--t-chrome);line-height:1.6;color:var(--dim);box-shadow:var(--shadow);pointer-events:none}#toasts{position:fixed;left:50%;bottom:40px;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{width:min(460px,90vw);background:var(--highlight);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:10px;padding:11px 13px;display:flex;align-items:center;gap:11px;box-shadow:var(--shadow-lg);animation:risein var(--d-fast) var(--ease-out-expo)}@keyframes risein{0%{transform:translateY(8px);opacity:0}}.toast .text{flex:1;font-size:var(--t-chrome);color:var(--dim)}.toast .glyph{display:flex}.toast .glyph.good{color:var(--good)}.toast .glyph.bad{color:var(--bad)}.screen{position:absolute;inset:0;z-index:30;background:var(--paper);display:flex;flex-direction:column}.screenbar{height:var(--h-appbar);flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--stage);border-bottom:1px solid var(--rule2);-webkit-app-region:drag}.screenbar button{-webkit-app-region:no-drag}.screenbody{flex:1;min-height:0;overflow-y:auto;background:var(--stage)}.settingsgrid{width:min(1128px,100%);margin:0 auto;padding:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px;align-content:start}.settinggroup{border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg);overflow:hidden;align-self:start}.settinggroup>.head{padding:11px 14px;border-bottom:1px solid var(--rule2)}.settingrow{display:flex;align-items:center;gap:16px;padding:11px 14px;border-bottom:1px solid color-mix(in srgb,var(--ink) 5%,transparent)}.settingrow:last-child{border-bottom:none}.settingrow .about{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.settingrow .label{font-size:var(--t-panel);color:var(--dim)}.settingrow .help{font-size:var(--t-label);line-height:1.5;color:var(--muted)}.settingrow .control{flex:none}.settingrow select,.settingrow input[type=text],.settingrow input[type=number]{height:var(--h-compact);padding:0 8px;border:1px solid var(--rule2);border-radius:7px;background:var(--paper);color:var(--ink);font:400 var(--t-chrome) var(--font-body);font-variant-numeric:tabular-nums;max-width:220px}.privacycard{border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;gap:8px;align-self:start}.privacycard .line{font-family:var(--font-display);font-size:19px;letter-spacing:-.02em}.about{display:flex;min-height:100%}.aboutleft{width:520px;flex:none;background:var(--stage);border-right:1px solid var(--rule2);display:flex;flex-direction:column;justify-content:center;gap:22px;padding:56px}.aboutleft .mark{color:var(--accent)}.aboutright{flex:1;padding:56px;display:flex;flex-direction:column;gap:20px;justify-content:center;background:var(--paper)}.credit{border:1px solid var(--highlight);border-radius:var(--radius-lg);padding:20px;display:flex;flex-direction:column;gap:10px;background:var(--gold-soft)}.notices{border:1px solid var(--rule2);border-radius:var(--radius-lg);overflow:hidden}.notices .head{padding:11px 14px;border-bottom:1px solid var(--rule2);font-size:var(--t-chrome);color:var(--dim);display:flex;justify-content:space-between}.notices pre{margin:0;height:220px;overflow:auto;padding:12px 14px;font:11.5px / 1.75 var(--font-mono);color:var(--muted);background:var(--stage);white-space:pre-wrap;user-select:text}.minifyrail{width:400px;flex:none;border-left:1px solid var(--rule2);background:var(--paper);display:flex;flex-direction:column}.minifyresult{display:flex;flex-direction:column;gap:5px}.minifyresult .figure{font-family:var(--font-display);font-size:66px;line-height:.85;letter-spacing:-.04em;color:var(--accent-text)}.sentence{font-size:var(--t-panel);line-height:2;color:var(--dim)}.sentence .inlinefield{display:inline-flex;align-items:center;height:24px;padding:0 4px;border:1px solid var(--rule2);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);font:400 var(--t-chrome) var(--font-body);font-variant-numeric:tabular-nums;width:58px;text-align:center}.sentence .inlinefield.accent{border-color:var(--accent);background:var(--accent-soft)}.batchbar{height:44px;flex:none;display:flex;align-items:center;gap:8px;padding:0 14px;border-bottom:1px solid var(--rule2);background:var(--stage)}.batchhead,.batchrow{display:grid;grid-template-columns:24px minmax(0,1.4fr) 120px 104px 84px 104px 96px minmax(0,1.2fr);align-items:center;gap:12px;padding:0 14px}.batchhead{height:34px;flex:none;border-bottom:1px solid var(--rule2)}.batchrow{height:var(--h-row);border-bottom:1px solid color-mix(in srgb,var(--ink) 4%,transparent);font-size:var(--t-chrome);font-variant-numeric:tabular-nums}.batchrow.failed{background:color-mix(in srgb,var(--bad) 8%,transparent)}.batchrow.running{background:var(--accent-subtle)}.batchrow .trunc,.batchhead .trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batchrow .right,.batchhead .right{text-align:right}.batchrow .state{display:flex;align-items:center;gap:6px}.batchrow .state i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block;flex:none}.state.queued,.state.skipped{color:var(--muted)}.state.running{color:var(--accent-text)}.state.done{color:var(--good)}.state.failed{color:var(--bad)}.batchviewport{flex:1;min-height:0;overflow-y:auto;position:relative}.batchfoot{height:52px;flex:none;display:flex;align-items:center;gap:18px;padding:0 14px;border-top:1px solid var(--rule2);background:var(--stage);font-size:var(--t-chrome);font-variant-numeric:tabular-nums}.progress{height:3px;border-radius:2px;background:var(--highlight);overflow:hidden}.progress i{display:block;height:100%;background:var(--accent);transition:width var(--d-fast) var(--ease-smooth)}@media(max-width:1400px){:root{--rail-w: 330px}}@media(max-width:1180px){:root{--rail-w: 310px}.legend{display:none}}.chooser{position:absolute;left:50%;bottom:16px;transform:translate(-50%);z-index:8;width:min(560px,calc(100% - 32px));max-height:calc(100% - 70px);overflow-y:auto;display:flex;flex-direction:column;gap:9px;padding:10px 12px 11px;background:var(--card);border:1px solid var(--highlight);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);animation:rise var(--d-fast) var(--ease-out-expo)}.choosehead{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}.choosehead .eyebrow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chooseintro{font-size:var(--t-label);line-height:1.5;color:var(--dim);padding:7px 10px;border-radius:var(--radius);background:var(--accent-subtle);border:1px solid var(--accent-soft)}.choices{display:flex;flex-direction:column;gap:6px}.choice{display:grid;grid-template-columns:92px 1fr auto;align-items:center;gap:12px;padding:8px 8px 8px 12px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--paper);min-width:0}.choice .btn{min-width:104px}.choicename{display:flex;align-items:center;gap:7px;font-family:var(--font-display);font-size:17px;letter-spacing:-.02em;color:var(--ink)}.choicename svg{color:var(--accent-text)}.choicebody{font-size:var(--t-chrome);line-height:1.5;color:var(--faint)}.choosenews{display:flex;flex-direction:column;gap:6px;padding-top:9px;border-top:1px solid var(--rule2)}.remember{display:flex;align-items:center;gap:7px;font-size:var(--t-label);color:var(--faint);cursor:pointer;align-self:flex-start}.remember input{accent-color:var(--accent);margin:0}.autochose{display:flex;flex-direction:column;gap:7px;font-size:var(--t-chrome)}.autolead{color:var(--dim);line-height:1.5}.autorow{display:flex;align-items:center;gap:10px;justify-content:space-between}.autorow.moved{padding-top:7px;border-top:1px dashed var(--rule2)}.autotext{display:flex;flex-direction:column;gap:2px;min-width:0}.autotitle{color:var(--ink)}.autotext .muted{font-size:var(--t-label)}.autobtns{display:flex;align-items:center;gap:10px;flex:none}.autorow .btn{flex:none}.autotaken{font-size:var(--t-label);color:var(--state-final);flex:none}.card.autocard{border-color:var(--accent-soft);background:color-mix(in srgb,var(--accent) 4%,var(--card))}.guideline{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:var(--t-label)}.rail.wizarding{width:max(var(--rail-w),400px)}.sheet.wizsheet{align-items:stretch;background:var(--paper)}.sheetbody.wizbody{height:100%;border-radius:0;border-top:none;box-shadow:none;padding:0;gap:0;overflow:hidden;background:var(--paper)}.wizhead{flex:none;display:flex;flex-direction:column;gap:9px;padding:14px 16px 12px;border-bottom:1px solid var(--rule2)}.wiztitle{font-size:24px;font-weight:500;line-height:1.1;color:var(--ink)}.wizdots{display:flex;gap:6px}.wizdots button{flex:1;height:4px;border-radius:2px;background:var(--highlight);transition:background var(--d-micro)}.wizdots button.done{background:color-mix(in srgb,var(--accent) 45%,var(--highlight))}.wizdots button[aria-selected=true]{background:var(--accent)}.wizdots button:hover{background:var(--accent-hover)}.wizcompare{display:flex;align-items:center;gap:8px;font-size:var(--t-label)}.wizcompare .seg>button{padding:3px 9px}.wizscroll{flex:1;min-height:0;overflow-y:auto;padding:14px 16px 18px;display:flex;flex-direction:column;gap:14px}.wizlead{font-size:var(--t-panel);line-height:1.55;color:var(--dim)}.wizguide{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--rule2)}.wizexplain{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;margin:0;font-size:var(--t-chrome);line-height:1.5}.wizexplain dt{font-size:var(--t-eyebrow);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:3px;white-space:nowrap}.wizexplain dd{margin:0;color:var(--dim)}.wizlearn{font-size:var(--t-label);color:var(--accent-text);align-self:flex-start;text-decoration:none}.wizlearn:hover{text-decoration:underline}.wizcontrols{display:flex;flex-direction:column;gap:12px;padding:12px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card)}.wizlive{display:flex;flex-direction:column;gap:12px}.wizrow{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:var(--t-chrome)}.wizsmall{font-size:var(--t-label);line-height:1.5}.wizwhy{font-size:var(--t-chrome);line-height:1.5;color:var(--dim)}.wizchoices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.wizchoice{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 11px;text-align:left;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper);font-size:var(--t-label);line-height:1.45}.wizchoice .name{font-size:13px;font-weight:600;color:var(--ink)}.wizchoice:hover{border-color:var(--highlight)}.wizchoice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-subtle)}.wiznote{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 11px;border-radius:var(--radius);background:var(--accent-subtle);font-size:var(--t-label);line-height:1.5;color:var(--dim)}.wiznav{flex:none;display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--rule2);background:var(--paper)}.kinds{display:grid;grid-template-columns:1fr 1fr;gap:9px}.kind{display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:7px 7px 9px;text-align:left;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card);min-width:0;transition:border-color var(--d-micro),background var(--d-micro)}.kind:hover{border-color:var(--highlight)}.kind[aria-checked=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--card));box-shadow:0 0 0 1px var(--accent)}.kthumb{position:relative;height:104px;border-radius:var(--radius);background-color:var(--stage);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:10px 10px;display:grid;place-items:center;overflow:hidden;margin-bottom:3px}.kthumb img{max-width:92%;max-height:92%;object-fit:contain;image-rendering:auto}.kspin{position:absolute;inset:auto 0 0;height:2px;overflow:hidden;display:none}.kind.busy .kspin{display:block}.kspin:after{content:"";position:absolute;top:0;bottom:0;left:0;width:30%;background:var(--accent);animation:sweepacross 1.6s var(--ease-out-expo) infinite}@media(prefers-reduced-motion:reduce){.kspin:after{animation:none;width:100%;opacity:.5}}.kname{display:flex;align-items:baseline;justify-content:space-between;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink);padding:0 2px}.ksugg{font-size:9.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text)}.kwhy,.knote,.kstat{font-size:11px;line-height:1.4;padding:0 2px}.kwhy{color:var(--faint)}.knote{color:var(--muted);font-style:italic}.kstat{color:var(--muted);margin-top:2px}.wizreadout table{width:100%;border-collapse:collapse;font-size:var(--t-chrome)}.wizreadout th,.wizreadout td{padding:4px 0;text-align:right;font-weight:400}.wizreadout thead th{font-size:var(--t-eyebrow);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.wizreadout tbody th{text-align:left;color:var(--faint)}.wizreadout td{color:var(--ink);padding-left:10px}.wizreadout td.delta{width:70px}.wizreadout td.delta.same{color:var(--muted)}.wizchanges .wizchange{display:flex;justify-content:space-between;gap:10px;font-size:var(--t-chrome);color:var(--faint)}.wizchanges .wizchange .num{color:var(--ink)}.pane.source.comparing .panelabel{color:var(--accent-text)}.intro{width:min(620px,80%);display:flex;flex-direction:column;gap:12px;padding:16px 18px;border:1px solid var(--accent-soft);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--accent) 5%,var(--paper))}.intro ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}.intro li{display:flex;gap:11px;align-items:baseline;font-size:var(--t-chrome);line-height:1.5}.intro li>div{display:flex;flex-direction:column}.introstep{width:20px;height:20px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:600;background:var(--accent);color:var(--accent-ink)}.introtitle{color:var(--ink);font-weight:500}.introfoot{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:var(--t-label)}.boot{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:var(--paper);color:var(--ink)}.boot .bootname{font-family:var(--font-display);font-size:28px}.boot .bootline{font-size:12.5px;color:var(--faint)}.boot .bootline:after{content:"";display:block;width:160px;height:2px;margin-top:12px;background:linear-gradient(90deg,transparent,var(--accent),transparent);background-size:200% 100%;animation:bootsweep 1.2s linear infinite}@keyframes bootsweep{0%{background-position:100% 0}to{background-position:-100% 0}}@media(prefers-reduced-motion:reduce){.boot .bootline:after{animation:none}}.webcontrols{display:flex;gap:2px;margin-left:4px}.webcontrols .btn{gap:6px}.phonenote{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--void) 82%,transparent)}.phonecard{max-width:420px;display:flex;flex-direction:column;gap:12px;padding:22px;border-radius:var(--radius-lg, 12px);background:var(--card);box-shadow:var(--shadow-lg)}.phonecard p{margin:0;font-size:13.5px;line-height:1.65;color:var(--dim)}.sc-loading{padding:40px;text-align:center}.sc-page{width:min(1320px,100%);margin:0 auto;padding:24px;display:flex;flex-direction:column;gap:18px}.sc-head h1{margin:0 0 6px;font-size:28px;font-weight:600}.sc-head p,.sc-results>p{margin:0;max-width:96ch;font-size:13px;line-height:1.6}.sc-main{display:grid;grid-template-columns:200px 1fr;gap:16px;min-height:0}.sc-list{display:flex;flex-direction:column;gap:6px}.sc-case{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;text-align:left;padding:6px 8px;border:1px solid var(--rule2);border-radius:var(--radius-sm);background:var(--card);color:var(--ink);cursor:pointer}.sc-case[aria-pressed=true]{border-color:var(--accent);background:var(--accent-subtle)}.sc-thumb{grid-row:1 / 3;width:44px;height:44px;border-radius:6px;background:#fff;display:grid;place-items:center;overflow:hidden}.sc-thumb img{width:100%;height:100%;object-fit:contain}.sc-name{font-size:12.5px;font-weight:600}.sc-what{font-size:11px;color:var(--faint)}.sc-stagecol{display:flex;flex-direction:column;gap:10px;min-width:0}.sc-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sc-tools .eyebrow{margin-left:6px}.sc-legend{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:11.5px}.sc-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.sc-dot.a{background:var(--anchor)}.sc-dot.hd{background:var(--handle);margin-left:6px}.sc-viewer{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sc-pane{position:relative;aspect-ratio:1;overflow:hidden;border:1px solid var(--rule2);border-radius:var(--radius-sm);background-color:var(--stage);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:16px 16px;cursor:grab;touch-action:none;user-select:none}.sc-pane:active{cursor:grabbing}.sc-cam{position:absolute;left:0;top:0;width:100%;height:100%;transform-origin:0 0}.sc-cam>img,.sc-layer,.sc-layer>svg{position:absolute;inset:0;width:100%;height:100%;display:block}.sc-cam>img{object-fit:contain}.sc-tag{position:absolute;top:8px;left:8px;padding:4px 7px;border-radius:6px;font-size:11px;font-weight:600;background:color-mix(in srgb,var(--paper) 85%,transparent);color:var(--ink);pointer-events:none}.sc-wire path,.sc-wire circle,.sc-wire ellipse,.sc-wire rect,.sc-wire polygon{fill:none!important;stroke:var(--wire);stroke-width:1px;vector-effect:non-scaling-stroke;stroke-opacity:.9}.sc-ov{pointer-events:none}.sc-ov .h{stroke:var(--handle);stroke-width:1px;vector-effect:non-scaling-stroke;fill:none;stroke-opacity:.85}.sc-ov .hd{stroke:var(--handle);stroke-width:3.5px;vector-effect:non-scaling-stroke;stroke-linecap:round;fill:none}.sc-ov .a{stroke:var(--anchor);stroke-width:5px;vector-effect:non-scaling-stroke;stroke-linecap:round;fill:none}.sc-chips{display:flex;flex-wrap:wrap;gap:6px}.sc-chip{font-size:12px;padding:4px 9px;border-radius:999px;border:1px solid var(--rule2);color:var(--dim);font-variant-numeric:tabular-nums}.sc-chip.win{border-color:transparent;background:var(--goodbg);color:var(--good)}.sc-results{display:flex;flex-direction:column;gap:12px;padding-top:8px;border-top:1px solid var(--rule2)}.sc-results h2{margin:8px 0 0;font-size:22px;font-weight:600}.sc-bignums{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.sc-bignum{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card);font-size:12px}.sc-bignum .v{font-size:28px;color:var(--accent);line-height:1.1}.sc-table{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--card);border:1px solid var(--rule2);border-radius:var(--radius-lg);overflow:hidden}.sc-table th,.sc-table td{padding:8px 12px;text-align:right;border-bottom:1px solid var(--rule2);white-space:nowrap}.sc-table th:first-child,.sc-table td:first-child{text-align:left}.sc-table th{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}.sc-table td.num{font-variant-numeric:tabular-nums;color:var(--dim)}.sc-table tr.win td{color:var(--ink)}.sc-table tr.win td:first-child{color:var(--accent);font-weight:600}.sc-note{font-size:12px!important} diff --git a/studio/assets/main-x93uzIN_.js b/studio/assets/main-x93uzIN_.js new file mode 100644 index 0000000000000000000000000000000000000000..50fe93d5c3db02b5597fcd2e8ca70de7a960b386 --- /dev/null +++ b/studio/assets/main-x93uzIN_.js @@ -0,0 +1,17 @@ +var Vs=Object.defineProperty;var Zs=(e,n,s)=>n in e?Vs(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s;var K=(e,n,s)=>Zs(e,typeof n!="symbol"?n+"":n,s);(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))o(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const r of i.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&o(r)}).observe(document,{childList:!0,subtree:!0});function s(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function o(a){if(a.ep)return;a.ep=!0;const i=s(a);fetch(a.href,i)}})();async function bt(e,n={},s){return window.__TAURI_INTERNALS__.invoke(e,n,s)}function Ys(){return!!(globalThis||window).isTauri}var hn;(function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WINDOW_SUSPENDED="tauri://suspended",e.WINDOW_RESUMED="tauri://resumed",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"})(hn||(hn={}));var fn;(function(e){e[e.Critical=1]="Critical",e[e.Informational=2]="Informational"})(fn||(fn={}));var gn;(function(e){e.None="none",e.Normal="normal",e.Indeterminate="indeterminate",e.Paused="paused",e.Error="error"})(gn||(gn={}));var mn;(function(e){e.Disabled="disabled",e.Throttle="throttle",e.Suspend="suspend"})(mn||(mn={}));var yn;(function(e){e.Default="default",e.FluentOverlay="fluentOverlay"})(yn||(yn={}));var bn;(function(e){e.AppearanceBased="appearanceBased",e.Light="light",e.Dark="dark",e.MediumLight="mediumLight",e.UltraDark="ultraDark",e.Titlebar="titlebar",e.Selection="selection",e.Menu="menu",e.Popover="popover",e.Sidebar="sidebar",e.HeaderView="headerView",e.Sheet="sheet",e.WindowBackground="windowBackground",e.HudWindow="hudWindow",e.FullScreenUI="fullScreenUI",e.Tooltip="tooltip",e.ContentBackground="contentBackground",e.UnderWindowBackground="underWindowBackground",e.UnderPageBackground="underPageBackground",e.Mica="mica",e.Blur="blur",e.Acrylic="acrylic",e.Tabbed="tabbed",e.TabbedDark="tabbedDark",e.TabbedLight="tabbedLight"})(bn||(bn={}));var wn;(function(e){e.FollowsWindowActiveState="followsWindowActiveState",e.Active="active",e.Inactive="inactive"})(wn||(wn={}));const Js=` + +`;function t(e,n=null,...s){const[o,...a]=e.split("."),i=document.createElement(o||"div");return a.length&&(i.className=a.join(" ")),Xs(i,n),Ut(i,s),i}function be(e,n=null,...s){const[o,...a]=e.split("."),i=document.createElementNS("http://www.w3.org/2000/svg",o||"g");a.length&&i.setAttribute("class",a.join(" "));for(const[r,l]of Object.entries(n??{}))l==null||l===!1||(r.startsWith("on")&&typeof l=="function"?i.addEventListener(r.slice(2),l):i.setAttribute(r,String(l)));return Ut(i,s),i}function Xs(e,n){for(const[s,o]of Object.entries(n??{}))o==null||o===!1||(s==="class"?e.className=e.className?`${e.className} ${o}`:String(o):s==="style"&&typeof o=="object"?Object.assign(e.style,o):s.startsWith("on")&&typeof o=="function"?e.addEventListener(s.slice(2),o):s==="value"&&e instanceof HTMLInputElement?e.value=String(o):o===!0?e.setAttribute(s,""):e.setAttribute(s,String(o)))}function Ut(e,n){for(const s of n.flat(8))s==null||s===!1||e.append(s instanceof Node?s:document.createTextNode(String(s)))}function D(e,...n){e.replaceChildren(),Ut(e,n)}const vn={image:"M3 3h18v18H3zM3 15l5-5 4 4 3-3 6 6M8.5 8.5h.01",type:"M4 7V4h16v3M9 20h6M12 4v16",droplet:"M12 2.7 6.7 8a7.5 7.5 0 1 0 10.6 0Z",wand:"m3 21 9-9M15 4V2M15 16v-2M8 9h2M20 9h2M17.8 11.8 19 13M15 9h.01M17.8 6.2 19 5M12.8 6.2 11.6 5",layers:"m12 2 9 5-9 5-9-5 9-5M3 12l9 5 9-5M3 17l9 5 9-5",palette:"M12 21a9 9 0 1 1 0-18c4.97 0 9 3.58 9 8 0 1.66-1.34 3-3 3h-2a2 2 0 0 0-1.6 3.2 2 2 0 0 1-1.6 3.2ZM7.5 10.5h.01M10.5 7.5h.01M14 7.5h.01M16.5 10.5h.01",check:"m20 6-11 11-5-5",checkCircle:"M22 11.1V12a10 10 0 1 1-5.9-9.1M22 4 12 14.01l-3-3",x:"M18 6 6 18M6 6l12 12",alert:"M12 9v4M12 17h.01M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z",info:"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM12 16v-4M12 8h.01",clock:"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM12 6v6l4 2",download:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3",upload:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12",globe:"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10Z",copy:"M20 9H11a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2ZM5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1",folder:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",settings:"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.6 1.65 1.65 0 0 0 10 3.09V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z",chevronDown:"m6 9 6 6 6-6",chevronRight:"m9 18 6-6-6-6",minus:"M5 12h14",pen:"M21.17 6.81a2.82 2.82 0 0 0-3.99-3.99L3.84 16.17a2 2 0 0 0-.5.83l-1.32 4.35a.5.5 0 0 0 .62.62l4.35-1.32a2 2 0 0 0 .83-.5Z",square:"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z",crosshair:"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM22 12h-4M6 12H2M12 6V2M12 22v-4",zap:"M4 14h7l-3 8 12-12h-7l3-8Z",play:"m6 3 14 9-14 9V3Z",pause:"M14 4h4v16h-4zM6 4h4v16H6z",rotate:"M3 12a9 9 0 1 0 3-6.7L3 8M3 3v5h5",share:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8M16 6l-4-4-4 4M12 2v13",file:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7ZM14 2v6h6",maximize:"M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3",external:"M15 3h6v6M10 14 21 3M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"};function U(e,n=16){const s=vn[e]??vn.info;return be("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false"},be("path",{d:s}))}function es(e=18){const n=Ks.cloneNode(!0);n.removeAttribute("color");const[,,s,o]=(n.getAttribute("viewBox")??"0 0 1 1").split(/\s+/).map(Number);return n.setAttribute("height",String(e)),n.setAttribute("width",String(Math.round(e*s/o))),n.setAttribute("aria-hidden","true"),n.setAttribute("focusable","false"),n}const Ks=(()=>{const e=new DOMParser().parseFromString(Js,"image/svg+xml").documentElement;return document.importNode(e,!0)})();function Oe(e,n,s="application/octet-stream"){const o=n instanceof Blob?n:new Blob([n],{type:s}),a=URL.createObjectURL(o),i=document.createElement("a");i.href=a,i.download=e,i.style.display="none",document.body.append(i),i.click(),i.remove(),window.setTimeout(()=>URL.revokeObjectURL(a),6e4)}const zt="inkvec-studio-lite:prefs",xn="inkvec-denoiser-v1",kn="Not available in the browser. Inkvec Studio, the desktop app, has it.",Sn=[["flat-logo.png","Flat logo"],["icon-64.png","Icon, 64 px"],["crest-filigree.png","Crest, filigree"],["signature-bw.png","Signature, B&W"]];class Qs{constructor(){K(this,"worker",null);K(this,"ready",null);K(this,"queue",[]);K(this,"running",null);K(this,"nextId",1);K(this,"listeners",new Map);K(this,"generation",0);K(this,"previewGeneration",0);K(this,"shared",null);K(this,"source",null);K(this,"prefs",null);K(this,"prefsTimer",0);K(this,"denoiser",null);K(this,"denoiserPort",null);K(this,"downloading",!1);K(this,"info",null);K(this,"last",null)}base(){return new URL("./",document.baseURI).href}start(){const n=typeof crossOriginIsolated<"u"&&crossOriginIsolated;n&&!this.shared&&(this.shared=new Int32Array(new SharedArrayBuffer(4)));const s=new Worker(new URL(""+new URL("engine.worker-Cn2MnOae.js",import.meta.url).href,import.meta.url),{type:"module",name:"inkvec-engine"});this.worker=s;let o=null;if(n){const i=new MessageChannel;o=i.port1,this.denoiser?this.denoiser.postMessage({type:"port",port:i.port2},[i.port2]):this.denoiserPort=i.port2}this.ready=new Promise((i,r)=>{s.onmessage=l=>{const u=l.data;u.type==="ready"?(this.info={threads:u.threads,isolated:u.isolated,version:u.version},u.poolError&&console.warn("inkvec: thread pool did not start:",u.poolError),n&&this.startDenoiser(u.denoiserUrl,u.denoiserSha256),i(u)):u.type==="loadfail"?r(new Error(`The engine could not load: ${u.error}`)):u.type==="stage"?u.generation===this.generation&&this.emit("trace:stage",{generation:u.generation,name:u.name,ms:u.ms}):u.type==="reply"&&this.finish(u)},s.onerror=l=>{r(new Error(`The engine stopped: ${l.message||"unknown error"}`)),this.crashed("The engine stopped unexpectedly.")}});const a=o?[o]:[];return s.postMessage({type:"init",base:this.base(),token:"ac6983bde218",generations:this.shared?this.shared.buffer:null,denoiserPort:o},a),this.ready}whenReady(){return this.ready??this.start()}crashed(n){const s=this.running;this.running=null,this.worker?.terminate(),this.worker=null,this.ready=null,s&&s.reject(new Error(n)),s?.op==="open_bytes"&&(this.source=null);const o=this.source;this.whenReady().then(async()=>{o&&await this.enqueue("open_bytes",-1,{bytes:o.bytes.slice(),name:o.name}).catch(()=>{}),this.pump()})}finish(n){const s=this.running;if(!(!s||s.id!==n.id)){if(this.last={op:s.op,ms:n.ms??0,mem:n.mem??null},this.running=null,n.ok)s.resolve(n.value);else if(n.crashed){this.crashed(n.error??"The engine stopped."),s.reject(new Error(n.error??"The engine stopped."));return}else s.reject(new Error(n.error??"failed"));this.pump()}}enqueue(n,s,o,a){return new Promise((i,r)=>{if(a){for(const l of this.queue.filter(u=>u.kind===a))l.reject(new Error("superseded by a newer request"));this.queue=this.queue.filter(l=>l.kind!==a)}this.queue.push({id:this.nextId++,op:n,priority:s,kind:a,payload:o,resolve:i,reject:r}),this.queue.sort((l,u)=>l.priority-u.priority||l.id-u.id),this.whenReady().then(()=>this.pump(),l=>{for(const u of this.queue)u.reject(l);this.queue=[]})})}pump(){if(this.running||!this.worker||!this.info)return;const n=this.queue.shift();if(!n)return;if(n.op==="trace"&&n.payload.generation!==this.generation)return n.resolve(null),this.pump();if(n.op==="preview"&&n.payload.generation!==this.previewGeneration)return n.resolve(null),this.pump();this.running=n,n.started=performance.now();const s=[];n.op==="open_bytes"&&s.push(n.payload.bytes.buffer),this.worker.postMessage({type:"job",id:n.id,op:n.op,...n.payload},s)}emit(n,s){for(const o of this.listeners.get(n)??[])o(s)}async listen(n,s){const o=i=>s({payload:i});let a=this.listeners.get(n);return a||this.listeners.set(n,a=new Set),a.add(o),()=>void a?.delete(o)}async invoke(n,s={}){return await this.dispatch(n,s)}async dispatch(n,s){switch(n){case"capabilities":{const o=await this.denoiserStatus();return this.enqueue("capabilities",0,{supported:o.supported,installed:o.installed,bytes:o.bytes})}case"startup_progress":return null;case"app_ready":return document.getElementById("boot")?.remove(),null;case"open_path":throw new Error("A browser opens files you choose or drop, not paths.");case"open_bytes":{const o=s.bytes,a=o instanceof Uint8Array?o:new Uint8Array(o);return this.open(a,s.name??null)}case"open_sample":{const o=String(s.name);if(!Sn.some(([i])=>i===o))throw new Error(`${o} is not one of the bundled samples`);const a=await fetch(new URL(`samples/${o}`,this.base()));if(!a.ok)throw new Error(`cannot fetch the sample ${o}: HTTP ${a.status}`);return this.open(new Uint8Array(await a.arrayBuffer()),o)}case"list_samples":return Sn.map(([o,a])=>({file:o,label:a,preview:new URL(`samples/${o}`,this.base()).href}));case"launch_path":return null;case"start_trace":{const o=s.request,a=this.bump();this.rememberTrace(o.settings);const i=await this.loadPrefs();return this.enqueue("trace",1,{request:o,draftPx:i.draftPx??512,draftSeconds:i.draftSeconds??.4,generation:a},"trace").then(r=>{r&&a===this.generation&&this.emit("trace:done",{generation:a,outcome:r})},r=>{a===this.generation&&!/superseded/.test(r.message)&&this.emit("trace:done",{generation:a,outcome:{state:"failed",message:r.message}})}),a}case"cancel_trace":return this.bump(),this.queue=this.queue.filter(o=>o.kind==="trace"?(o.resolve(null),!1):!0),null;case"start_preview":{const o=s.request,a=++this.previewGeneration,i=await this.loadPrefs();return this.enqueue("preview",2,{request:o,draftPx:i.draftPx??512,draftSeconds:i.draftSeconds??.4,generation:a},"preview").then(r=>{r&&a===this.previewGeneration&&this.emit("preview:done",{generation:a,outcome:r})},r=>{a===this.previewGeneration&&!/superseded/.test(r.message)&&this.emit("preview:done",{generation:a,outcome:{state:"failed",message:r.message}})}),a}case"cancel_previews":{this.previewGeneration++,this.queue=this.queue.filter(a=>a.kind==="preview"?(a.resolve(null),!1):!0);const o=this.running;return o?.op==="preview"&&o.started!==void 0&&performance.now()-o.started>500&&this.crashed("superseded by a newer request"),null}case"source_facts":case"trace_bands":case"snap_inks":case"match_palette":case"plan_export":case"minify_svg":case"fab_analyze":return this.enqueue(n,0,{args:s});case"fab_prepare":return this.enqueue(n,0,{args:s},"fab");case"write_export":{const o=s.request,a=await this.enqueue("export",0,{request:o,zip:!0}),i=(this.source?.name??"image").replace(/\.[^.]+$/,"")||"image";if(a.length===1&&a[0].name)return Oe(a[0].name,a[0].data),[a[0].name];const r=`${i}-inkvec.zip`;return a[0]&&Oe(r,a[0].data,"application/zip"),[r]}case"read_text_file":throw new Error("A browser reads files you choose or drop, not paths.");case"save_bytes":{const o=String(s.path);return Oe(o.split(/[\\/]/).pop()||"download",new Uint8Array(s.bytes)),null}case"batch_scan":case"batch_start":case"batch_stats_csv":throw new Error(kn);case"batch_pause":case"batch_cancel":return null;case"denoiser_status":return this.denoiserStatus();case"denoiser_download":return this.downloadDenoiser();case"denoiser_cancel":return this.downloading&&(this.downloading=!1,this.emit("denoiser:done",{ok:!1,message:"Cancelled.",status:await this.denoiserStatus()})),null;case"denoiser_remove":try{await caches.delete(xn)}catch{}return this.denoiserStatus();case"load_prefs":return this.loadPrefs();case"save_prefs":{const o=await this.enqueue("sanitise_prefs",0,{args:{prefs:s.prefs}});return this.prefs=o,this.storePrefs(),o}case"reset_prefs":{try{localStorage.removeItem(zt)}catch{}return this.prefs=await this.enqueue("default_prefs",0,{args:{}}),this.prefs}case"third_party_notices":{const a=(await Promise.all(["STUDIO_THIRD_PARTY.md","THIRD_PARTY.md"].map(i=>fetch(new URL(i,this.base())).then(r=>r.ok?r.text():null,()=>null)))).filter(i=>!!i);if(!a.length)throw new Error("the notices could not be fetched");return a.join(` + + +`)}case"check_update":return{latest:null,newer:!1,url:"https://github.com/logolabs/inkvec/releases",offline:"a web page is always the version it is served as"};case"cli_status":case"context_menu_status":case"install_cli":case"remove_cli":case"install_context_menu":case"remove_context_menu":return{available:!1,installed:!1,path:null,note:kn}}throw new Error(`${n} is not something the browser build does`)}bump(){return this.generation++,this.shared&&Atomics.store(this.shared,0,this.generation),this.generation}async open(n,s){return this.source={bytes:n.slice(),name:s},this.bump(),this.queue=this.queue.filter(o=>o.kind?(o.resolve(null),!1):!0),this.enqueue("open_bytes",0,{bytes:n,name:s})}async loadPrefs(){if(this.prefs)return this.prefs;let n=null;try{const s=localStorage.getItem(zt);n=s?JSON.parse(s):null}catch{n=null}return this.prefs=await(n?this.enqueue("sanitise_prefs",0,{args:{prefs:n}}):this.enqueue("default_prefs",0,{args:{}})),this.prefs}rememberTrace(n){if(!this.prefs)return;const s={...n};delete s.colourGroups,this.prefs={...this.prefs,trace:s},window.clearTimeout(this.prefsTimer),this.prefsTimer=window.setTimeout(()=>this.storePrefs(),1e3)}storePrefs(){try{localStorage.setItem(zt,JSON.stringify(this.prefs))}catch{}}startDenoiser(n,s){if(this.denoiser||!this.denoiserPort)return;const o=new Worker(new URL(""+new URL("denoiser.worker-ER2QG0XM.js",import.meta.url).href,import.meta.url),{type:"module",name:"inkvec-denoiser"});this.denoiser=o,o.onmessage=async a=>{const i=a.data;this.downloading&&(i.type==="progress"&&this.emit("denoiser:progress",{got:i.got,total:i.total}),i.type==="done"&&(this.downloading=!1,this.emit("denoiser:done",{ok:i.ok,message:i.message,status:await this.denoiserStatus()})))},o.postMessage({type:"init",base:this.base(),token:"ac6983bde218",url:n,sha256:s,port:this.denoiserPort},[this.denoiserPort])}async denoiserStatus(){const n=await this.whenReady();let s=!1,o=null;try{const a=await(await caches.open(xn)).match(n.denoiserUrl);a&&(s=!0,o=Number(a.headers.get("content-length"))||(await a.blob()).size)}catch{}return{supported:n.isolated,installed:s,path:null,bytes:o,repo:n.denoiserRepo,sha256:n.denoiserSha256}}async downloadDenoiser(){if(await this.whenReady(),!this.denoiser)throw new Error("The denoiser needs a cross-origin isolated page.");return this.downloading=!0,this.denoiser.postMessage({type:"download"}),null}}let nt=null;function ts(){return nt||(nt=new Qs,globalThis.__inkvecStudioLite=nt),nt}function R(e,n){return ts().invoke(e,n)}function $e(e,n){return ts().listen(e,n)}const B={capabilities:()=>R("capabilities"),startupProgress:(e,n)=>R("startup_progress",{text:e,progress:n}),appReady:()=>R("app_ready"),openPath:e=>R("open_path",{path:e}),openBytes:(e,n)=>R("open_bytes",{bytes:e,name:n??null}),openSample:e=>R("open_sample",{name:e}),listSamples:()=>R("list_samples"),startTrace:(e,n)=>R("start_trace",{request:{settings:e,tier:n}}),cancelTrace:()=>R("cancel_trace"),startPreview:e=>R("start_preview",{request:{settings:e,tier:"draft"}}),cancelPreviews:()=>R("cancel_previews"),sourceFacts:e=>R("source_facts",{maxDim:e}),launchPath:()=>R("launch_path"),traceBands:e=>R("trace_bands",{generation:e}),snapInks:(e,n,s,o)=>R("snap_inks",{svg:e,snaps:n,width:s,height:o}),matchPalette:(e,n)=>R("match_palette",{traced:e,pasted:n}),planExport:e=>R("plan_export",{request:e}),writeExport:(e,n)=>R("write_export",{request:e,destination:n}),minify:(e,n)=>R("minify_svg",{svg:e,settings:n}),fabAnalyze:e=>R("fab_analyze",{svg:e}),fabPrepare:(e,n)=>R("fab_prepare",{svg:e,options:n}),readTextFile:e=>R("read_text_file",{path:e}),saveBytes:(e,n)=>R("save_bytes",{path:e,bytes:n}),batchScan:e=>R("batch_scan",{folder:e}),batchStart:e=>R("batch_start",{plan:e}),batchPause:e=>R("batch_pause",{paused:e}),batchCancel:()=>R("batch_cancel"),batchStatsCsv:()=>R("batch_stats_csv"),denoiserStatus:()=>R("denoiser_status"),denoiserDownload:()=>R("denoiser_download"),denoiserCancel:()=>R("denoiser_cancel"),denoiserRemove:()=>R("denoiser_remove"),loadPrefs:()=>R("load_prefs"),savePrefs:e=>R("save_prefs",{prefs:e}),resetPrefs:()=>R("reset_prefs"),thirdPartyNotices:()=>R("third_party_notices"),checkUpdate:()=>R("check_update"),cliStatus:()=>R("cli_status"),installCli:()=>R("install_cli"),removeCli:()=>R("remove_cli"),contextMenuStatus:()=>R("context_menu_status"),installContextMenu:()=>R("install_context_menu"),removeContextMenu:()=>R("remove_context_menu")},Me={traceStage:e=>$e("trace:stage",n=>e(n.payload)),traceDone:e=>$e("trace:done",n=>e(n.payload)),previewDone:e=>$e("preview:done",n=>e(n.payload)),openPath:e=>$e("open:path",n=>e(n.payload)),batchRow:e=>$e("batch:row",n=>e(n.payload)),batchTotals:e=>$e("batch:totals",n=>e(n.payload)),batchFinished:e=>$e("batch:finished",n=>e(n.payload)),denoiserProgress:e=>$e("denoiser:progress",n=>e(n.payload)),denoiserDone:e=>$e("denoiser:done",n=>e(n.payload))};function eo(e,n){return{caps:null,prefs:null,tab:"vectorize",screen:null,source:null,settings:e,preset:"logo",generation:0,tracing:!1,tracingTier:"final",liveStages:[],result:null,resultGeneration:0,bandsMissing:!1,previous:null,svg:null,palette:[],colourGroups:[],groupSuggestions:null,resultGroups:[],dismissedGroups:[],simplifyTo:null,paletteSelection:[],hoverFill:null,losses:[],report:null,worstCorner:null,stageState:{kind:"empty"},justSwapped:!1,view:"side",show:{fill:!0,wireframe:!1,anchors:!1,handles:!1,certainty:!1},zoom:1,pan:{x:0,y:0},fitted:!0,flicked:!1,wipe:.5,detail:!1,railTab:"result",groupsOpen:{Detail:!0,Colour:!0,Shape:!0,Output:!1},exportOpen:!1,dragging:!1,minify:{name:null,before:null,settings:n,result:null,error:null},fab:{name:null,svg:null,analysis:null,options:to(),plan:null,error:null,shown:-1,unit:"mm",showProblems:!0,preset:null,dxf:!1,gcode:!1},batch:{folder:null,outputDir:null,preset:"logo",skipExisting:!0,rows:[],totals:null,running:!1,paused:!1,failuresFirst:!1},update:null,auto:null,facts:null,chooser:!1,wizard:null,compare:null,autoNoteHidden:!1}}function to(){return{mode:"singleColour",widthMm:100,include:[],order:[],bleedMm:.8,minFeatureMm:.8,removeThin:!1,stickerMarginMm:3,bridgeMm:1.5,stencilMarginMm:10,maxLineMm:0,penMm:.4,registration:!0,weedBorderMm:0,mirror:!1,cutStyle:"filled",sizeCheckMm:0,dogboneMm:0,gcodeFeedMmMin:1e3,gcodePower:1e3,gcodePasses:1,fileUnits:"mm",kerfMm:0,toleranceMm:.05,mergeDeltaE:3}}class no{constructor(n){K(this,"listeners",new Set);this.state=n}set(n){const s=new Set;for(const[o,a]of Object.entries(n))this.state[o]!==a&&(this.state[o]=a,s.add(o));s.size&&this.emit(s)}touch(...n){this.emit(new Set(n))}on(n,s){const o=new Set(n),a=i=>{for(const r of i)if(o.has(r)){s();return}};return this.listeners.add(a),()=>this.listeners.delete(a)}emit(n){for(const s of[...this.listeners])s(n)}}function ne(e){return e.toLocaleString("en-US")}function ae(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function ie(e){return e==null?"—":e.toFixed(2)}function Ae(e){return e<1?`${Math.round(e*1e3)} ms`:`${e.toFixed(2)} s`}function jt(e,n){if(!e.source)return null;const s=Math.max(e.source.width,e.source.height),o=n==="draft"?Math.min(e.prefs?.draftPx??512,e.settings.traceSize):e.settings.traceSize;return Math.min(o,s)}function ve(e,n=0){return`${(e*100).toFixed(n)}%`}function so(e){const n=Math.max(0,Math.round(e));return n<60?`${n} s`:`${Math.floor(n/60)} min ${n%60} s`}function ns(e){return e==="macos"?"⌘":"Ctrl"}const oo="modulepreload",ao=function(e,n){return new URL(e,n).href},$n={},ss=function(n,s,o){let a=Promise.resolve();if(s&&s.length>0){let r=function(p){return Promise.all(p.map(h=>Promise.resolve(h).then(g=>({status:"fulfilled",value:g}),g=>({status:"rejected",reason:g}))))};const l=document.getElementsByTagName("link"),u=document.querySelector("meta[property=csp-nonce]"),d=u?.nonce||u?.getAttribute("nonce");a=r(s.map(p=>{if(p=ao(p,o),p in $n)return;$n[p]=!0;const h=p.endsWith(".css"),g=h?'[rel="stylesheet"]':"";if(!!o)for(let m=l.length-1;m>=0;m--){const v=l[m];if(v.href===p&&(!h||v.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${p}"]${g}`))return;const f=document.createElement("link");if(f.rel=h?"stylesheet":oo,h||(f.as="script"),f.crossOrigin="",f.href=p,d&&f.setAttribute("nonce",d),document.head.appendChild(f),h)return new Promise((m,v)=>{f.addEventListener("load",m),f.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${p}`)))})}))}function i(r){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=r,window.dispatchEvent(l),!l.defaultPrevented)throw r}return a.then(r=>{for(const l of r||[])l.status==="rejected"&&i(l.reason);return n().catch(i)})};async function io(e={}){return typeof e=="object"&&Object.freeze(e),await bt("plugin:dialog|open",{options:e})}async function ro(e={}){return typeof e=="object"&&Object.freeze(e),await bt("plugin:dialog|save",{options:e})}async function lo(e,n){await bt("plugin:opener|open_url",{url:e,with:n})}async function co(e){return bt("plugin:opener|reveal_item_in_dir",{paths:typeof e=="string"?[e]:e})}const wt="Inkvec Studio Lite";function os(e){return{name:e.name||"pasted image",path:null,file:e}}async function Vt(e,n=!1){return new Promise(s=>{const o=document.createElement("input");o.type="file",o.multiple=n,o.accept=e.flatMap(r=>r.extensions.map(l=>`.${l}`)).join(","),o.style.display="none";let a=!1;const i=r=>{a||(a=!0,o.remove(),s(r))};o.addEventListener("change",()=>i([...o.files??[]].map(os))),o.addEventListener("cancel",()=>i([])),document.body.append(o),o.click()})}async function gt(e){if(e.file)return e.file.text();if(e.path)return B.readTextFile(e.path);throw new Error("nothing to read")}const Mn=!1;async function as(e,n,s){const o=typeof n=="string"?new TextEncoder().encode(n):n;return Oe(e,o),{path:null,name:e}}async function uo(e,n,s){const o=new TextEncoder,a=i=>typeof i=="string"?o.encode(i):i;{if(e.length===1)Oe(e[0].name,a(e[0].data));else{const{zipStore:i}=await ss(async()=>{const{zipStore:r}=await import("./zip-DlX9-WSC.js");return{zipStore:r}},[],import.meta.url);Oe(n,i(e.map(r=>({name:r.name,data:a(r.data)}))))}return{folder:null,first:null}}}const po=!1;async function vt(e){await navigator.clipboard.writeText(e)}async function xt(e){{window.open(e,"_blank","noopener,noreferrer");return}}function kt(e){return e&&po?{label:"Show in folder",run:()=>void 0}:void 0}function ho(e,n){let s=0;const o=i=>[...i.dataTransfer?.types??[]].includes("Files"),a=()=>{s=0,e.set({dragging:!1}),document.body.classList.remove("dragging")};window.addEventListener("dragenter",i=>{o(i)&&(s++,e.set({dragging:!0}),document.body.classList.add("dragging"))}),window.addEventListener("dragover",i=>{o(i)&&(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="copy"))}),window.addEventListener("dragleave",i=>{o(i)&&(s=Math.max(0,s-1),s===0&&a())}),window.addEventListener("drop",i=>{if(!o(i))return;i.preventDefault(),a();const r=[...i.dataTransfer?.files??[]];r.length&&n(r)}),window.addEventListener("paste",i=>{if(i.target?.closest?.("input, textarea, [contenteditable]"))return;const l=[...i.clipboardData?.files??[]];l.length&&(i.preventDefault(),n(l))})}const fo=760;function go(e){const n=window.matchMedia(`(max-width: ${fo}px)`).matches,s=window.matchMedia("(pointer: coarse)").matches;if(!(n&&s))return;const o=t("div.phonenote",{role:"dialog","aria-label":"Best on a larger screen"},t("div.phonecard",null,t("span.serif",{style:{fontSize:"22px"}},"Best on a larger screen"),t("p",null,"Inkvec Studio Lite is a full editor: a viewer, a rail of controls and a palette side by side. On a phone they do not fit. Open this page on a laptop or desktop to use it; everything runs in your browser and nothing is uploaded."),t("button.btn",{onclick:()=>o.remove()},"Continue anyway")));e.append(o)}async function mo(){const e=new URLSearchParams(window.location.search),n=e.get("sample"),s=e.get("open")==="handoff";return!n&&!s?null:(window.history.replaceState(null,"",window.location.pathname),n?{sample:n}:new Promise(o=>{let a;try{a=indexedDB.open("inkvec-handoff",1)}catch{o(null);return}a.onupgradeneeded=()=>a.result.createObjectStore("files"),a.onerror=()=>o(null),a.onsuccess=()=>{const i=a.result.transaction("files","readwrite").objectStore("files"),r=i.get("open");r.onsuccess=()=>{i.delete("open");const l=r.result;o(l?.bytes?{name:l.name??"image",bytes:l.bytes}:null)},r.onerror=()=>o(null)}}))}function ze(e){const n={...e,cleanUpDamage:"off"};return JSON.stringify(Object.keys(n).sort().map(s=>[s,n[s]]))}class yo{constructor(){K(this,"results",new Map);K(this,"queue",[]);K(this,"running",null);K(this,"epoch",0);K(this,"early",new Map);K(this,"listeners",new Set);Me.previewDone(({generation:n,outcome:s})=>this.done(n,s))}get(n){return this.results.get(n)}on(n){return this.listeners.add(n),()=>this.listeners.delete(n)}want(n){const s=new Set,o=n.filter(a=>{if(s.has(a.key))return!1;s.add(a.key);const i=this.results.get(a.key)?.state;return i!=="done"&&i!=="running"});if(o.map(a=>a.key).join(` +`)!==this.queue.map(a=>a.key).join(` +`)){for(const a of this.queue)this.results.get(a.key)?.state==="queued"&&this.results.delete(a.key);this.queue=o;for(const a of this.queue)this.results.set(a.key,{state:"queued"});this.emit(),this.next()}}pause(){this.want([])}reset(){this.epoch++;for(const n of this.results.values())n.state==="done"&&URL.revokeObjectURL(n.url);this.results.clear(),this.queue=[],this.early.clear(),this.running&&B.cancelPreviews().catch(()=>{}),this.running=null,this.emit()}pending(){return this.queue.length+(this.running?1:0)}next(){if(this.running)return;const n=this.queue.shift();if(!n)return;const s=this.epoch;this.running={key:n.key,generation:null,epoch:s},this.results.set(n.key,{state:"running"}),this.emit(),B.startPreview(n.settings).then(o=>{if(this.running?.epoch!==s||this.running.key!==n.key)return;this.running.generation=o;const a=this.early.get(o);a&&(this.early.delete(o),this.done(o,a))},o=>{this.running?.epoch===s&&this.finish(n.key,{state:"failed",message:String(o)})})}done(n,s){const o=this.running;if(o){if(o.generation===null){this.early.set(n,s);return}if(o.generation===n)if(s.state==="traced"){const a=URL.createObjectURL(new Blob([s.svg],{type:"image/svg+xml"}));this.finish(o.key,{state:"done",svg:s.svg,url:a,report:s.report})}else{const a="message"in s?s.message:s.state==="flat"?"one flat colour":"out of memory";this.finish(o.key,{state:"failed",message:a})}}}finish(n,s){this.results.set(n,s),this.running=null,this.emit(),this.next()}emit(){for(const n of[...this.listeners])n()}}const Zt=()=>document.getElementById("overlays"),bo=()=>document.getElementById("toasts");function H(e,n={}){const s=n.kind??"plain",o=s==="good"?"checkCircle":s==="bad"?"alert":"info",a=t("div.toast",{role:"status"},t(`span.glyph.${s}`,null,U(o,16)),t("span.text",null,e),n.action&&t("button",{class:"reset",onclick:()=>{n.action?.run(),a.remove()}},n.action.label));bo().append(a),window.setTimeout(()=>a.remove(),6e3)}function le(){D(Zt()),document.removeEventListener("keydown",Yt,!0)}function Yt(e){e.key==="Escape"&&(e.stopPropagation(),le())}function qe(e){const n=t("div.scrim",{onmousedown:s=>{s.target===n&&le()}});e.setAttribute("role","dialog"),e.setAttribute("aria-modal","true"),n.append(e),D(Zt(),n),document.addEventListener("keydown",Yt,!0),(e.querySelector("button, input, [tabindex]")??e).focus()}function St(e,n,s=[]){return t("div.modal",{tabindex:"-1"},t("h2",null,e),...n.filter(Boolean).map(o=>typeof o=="string"?t("p",null,o):o),s.length?t("div.actions",null,...s):null)}function Jt(e,n){const s=t("div.popover",null,n),o=t("div",{style:{position:"fixed",inset:"0",zIndex:"44"},onmousedown:le});D(Zt(),o,s),document.addEventListener("keydown",Yt,!0);const a=e.getBoundingClientRect(),i=s.getBoundingClientRect(),r=8,l=Math.min(Math.max(r,a.left),window.innerWidth-i.width-r),u=a.bottom+6,d=u+i.height+r>window.innerHeight?a.top-i.height-6:u;s.style.left=`${Math.round(l)}px`,s.style.top=`${Math.round(Math.max(r,d))}px`,(s.querySelector("button, input, [tabindex]")??s).focus?.()}let Pe=null,Xt=0;function Ke(){window.cancelAnimationFrame(Xt),Pe?.node.remove(),Pe=null}function is(){const e=Pe;if(!e)return;if(!(e.el.isConnected&&(e.el.matches(":hover")||e.el.matches(":focus-visible")))){Ke();return}Xt=window.requestAnimationFrame(is)}function Je(e,n){let s=0;const o=()=>{if(!e.isConnected||Pe?.el===e)return;Ke();const i=t("div.tooltip",{role:"tooltip"},n);document.body.append(i);const r=e.getBoundingClientRect(),l=i.getBoundingClientRect(),u=Math.min(Math.max(8,r.left),window.innerWidth-l.width-8),d=r.top-l.height-8;i.style.left=`${Math.round(u)}px`,i.style.top=`${Math.round(d<8?r.bottom+8:d)}px`,Pe={node:i,el:e},Xt=window.requestAnimationFrame(is)},a=()=>{window.clearTimeout(s),Pe?.el===e&&Ke()};return e.addEventListener("pointerenter",()=>{window.clearTimeout(s),s=window.setTimeout(o,350)}),e.addEventListener("pointerleave",a),e.addEventListener("pointerdown",a),e.addEventListener("focus",()=>{e.matches(":focus-visible")&&o()}),e.addEventListener("blur",a),e}document.addEventListener("keydown",e=>{e.key==="Escape"&&Pe&&Ke()},!0);window.addEventListener("blur",Ke);function wo(e,n,s,o,a=!1){qe(St(e,[n],[t("button.btn",{onclick:le},"Cancel"),t(`button.btn.primary${a?".danger":""}`,{onclick:()=>{le(),o()}},s)]))}function rs(e){const n=e.trim().replace(/^#/,""),s=n.length===3?[...n].map(o=>o+o).join(""):n;return/^[0-9a-fA-F]{6}$/.test(s)?[0,2,4].map(o=>parseInt(s.slice(o,o+2),16)/255):null}function ls([e,n,s]){const o=f=>f<=.04045?f/12.92:((f+.055)/1.055)**2.4,[a,i,r]=[o(e),o(n),o(s)],l=(.4124564*a+.3575761*i+.1804375*r)/.95047,u=.2126729*a+.7151522*i+.072175*r,d=(.0193339*a+.119192*i+.9503041*r)/1.08883,p=f=>f>216/24389?Math.cbrt(f):(24389/27*f+16)/116,[h,g,c]=[p(l),p(u),p(d)];return[116*g-16,500*(h-g),200*(g-c)]}function vo(e,n){const[s,o,a]=e,[i,r,l]=n,u=Math.PI/180,d=Math.hypot(o,a),p=Math.hypot(r,l),h=((d+p)/2)**7,g=.5*(1-Math.sqrt(h/(h+25**7))),c=(1+g)*o,f=(1+g)*r,m=Math.hypot(c,a),v=Math.hypot(f,l),C=(ue,ke)=>{if(ue===0&&ke===0)return 0;const de=Math.atan2(ke,ue)/u;return de<0?de+360:de},b=C(c,a),k=C(f,l),$=i-s,M=v-m;let E=0;m*v!==0&&(E=k-b,E>180?E-=360:E<-180&&(E+=360));const N=2*Math.sqrt(m*v)*Math.sin(E*u/2),S=(s+i)/2,A=(m+v)/2;let F=b+k;m*v!==0&&(F=Math.abs(b-k)<=180?(b+k)/2:b+k<360?(b+k+360)/2:(b+k-360)/2);const W=1-.17*Math.cos((F-30)*u)+.24*Math.cos(2*F*u)+.32*Math.cos((3*F+6)*u)-.2*Math.cos((4*F-63)*u),V=30*Math.exp(-(((F-275)/25)**2)),se=A**7,xe=2*Math.sqrt(se/(se+25**7)),ee=1+.015*(S-50)**2/Math.sqrt(20+(S-50)**2),J=1+.045*A,Z=1+.015*A*W,G=-Math.sin(2*V*u)*xe,te=$/ee,Q=M/J,oe=N/Z;return Math.sqrt(te*te+Q*Q+oe*oe+G*Q*oe)}function mt(e){return e.kind==="gradient"&&e.stops.length>1?e.stops.map(n=>n.toLowerCase()).join(">"):e.traced.toLowerCase()}function Re(e){return e.split(">").map(n=>n.trim().toLowerCase())}function Qe(e){return e.includes(">")}function Kt(e,n=!1){const s=Re(e);return s.length<2?s[0]??"transparent":n?`radial-gradient(circle, ${s.join(", ")})`:`linear-gradient(90deg, ${s.join(", ")})`}const st=new Map;function Cn(e){const n=st.get(e);if(n)return n;const s=rs(e);if(!s)return null;const o=ls(s);return st.size>4096&&st.clear(),st.set(e,o),o}function Qt(e,n){const s=Re(e).map(Cn),o=Re(n).map(Cn);if(s.some(l=>!l)||o.some(l=>!l)||!s.length||!o.length)return 1/0;const a=s,i=o,r=(l,u)=>l.reduce((d,p)=>d+Math.min(...u.map(h=>vo(p,h))),0)/l.length;return Math.max(r(a,i),r(i,a))}const xo=2;function $t(e,n){const s=Qe(e),o=n.find(r=>mt(r)===e);if(o)return o;let a=null,i=xo;for(const r of n){if(r.kind==="gradient"!==s)continue;const l=Qt(e,mt(r));l<=i&&(i=l,a=r)}return a}function we(e,n){return e===n||Qt(e,n)<.5}const ko=2,So=240;function $o(e,n={}){const s=n.skip??[],o=e.filter(p=>p.share>0),a=[...o].sort((p,h)=>h.share-p.share).slice(0,So).map(p=>({member:mt(p),share:p.share})).filter(p=>!s.some(h=>we(h,p.member))),i=a.length;if(i<2)return[];const r=a.map((p,h)=>a.map((g,c)=>h===c?0:Qt(p.member,g.member))),l=a.map((p,h)=>[h]);let u=i;const d=n.count?Math.max(1,Math.round(n.count)-(o.length-i)):null;for(;!(d!==null&&u<=d);){let p=1/0,h=-1,g=-1;for(let c=0;cko)break;l[h]=[...l[h],...l[g]],l[g]=null,u--;for(let c=0;cp.length>1).map(p=>p.map(h=>a[h]).sort((h,g)=>g.share-h.share)).sort((p,h)=>h.reduce((g,c)=>g+c.share,0)-p.reduce((g,c)=>g+c.share,0)).map(p=>({members:p.map(h=>h.member),target:null}))}function en(e){return[...e.members].sort().join(",")}function Mo(e){return e.filter(n=>n.trimStart().startsWith("merge colors")).map(n=>{const s=n.trim().replace(/^merge colors\s+/,""),o=/;\s*(?:not found in the trace:|no ink near)\s*(.*)$/.exec(s),a=(o?.[1]??"").split(",").map(i=>i.trim().toLowerCase()).filter(i=>/^#[0-9a-f]{6}(>#[0-9a-f]{6})*$/.test(i));return{line:o?s.slice(0,o.index).trim():s,unmatched:a,leftAlone:s.startsWith("group left alone")}})}function Co(e,n){return e?e.unmatched.some(s=>s===n||Re(n).includes(s)||we(s,n)):!1}function cs(e){const n=(e.groupSuggestions??[]).filter(a=>a.edited),s=[...e.colourGroups.flatMap(a=>a.members),...n.flatMap(a=>a.members)],o=$o(e.palette,{count:e.simplifyTo,skip:s}).filter(a=>!e.dismissedGroups.includes(en(a)));return[...n,...o]}function Ao(e,n){const s=e.members.filter(a=>$t(a,n));if(s.length<2)return null;let o=e.target;if(o?.startsWith("@")){const a=e.members[Number(o.slice(1))-1],i=a?s.indexOf(a):-1;o=i>=0?`@${i+1}`:null}return{...e,members:s,target:o}}function tn(e){return(e.groupSuggestions??[]).map((n,s)=>({g:Ao(n,e.palette),index:s})).filter(n=>n.g!==null)}function us(e,n){let s=e.target;if(s?.startsWith("@")){const o=Number(s.slice(1))-1;s=o===n?null:o>n?`@${o}`:s}return{...e,members:e.members.filter((o,a)=>a!==n),target:s}}function ge(e,n,s=-1,o=!1){return e.map((a,i)=>{if(i===s)return a;const r=a.members.findIndex(l=>we(l,n));return r<0?a:{...us(a,r),...o?{edited:!0}:{}}})}const Be=e=>e.filter(n=>n.members.length>1);function zo(e,n,s,o,a){const i=e.state;let r=i.colourGroups.map(g=>({...g,members:[...g.members]})),l=(i.groupSuggestions??[]).map(g=>({...g,members:[...g.members]}));const u=a?.closest("[data-drop]")??null,d=u?.dataset.drop??null,p=Number(u?.dataset.index??-1);if((d==="group"||d==="sugg")&&o.kind===d&&o.index===p||d==="ink"&&we(u?.dataset.member??"",s))return;if(d==="group")r=ge(r,s,p),l=ge(l,s,-1,!0),r[p].members.some(g=>we(g,s))||r[p].members.push(s);else if(d==="sugg")r=ge(r,s),l=ge(l,s,p,!0),l[p].members.some(g=>we(g,s))||(l[p]={...l[p],members:[...l[p].members,s],edited:!0});else if(d==="ink"){const g=u?.dataset.member??"";r=ge(r,s),l=ge(l,s,-1,!0);const c=r.findIndex(f=>f.members.some(m=>we(m,g)));c>=0?r[c].members.push(s):(l=ge(l,g,-1,!0),r.push({members:[g,s],target:null}))}else{if(o.kind==="palette")return;o.kind==="group"?r=ge(r,s):l=ge(l,s,-1,!0)}const h=Be(r);e.set({groupSuggestions:Be(l),paletteSelection:[]}),JSON.stringify(h)!==JSON.stringify(i.colourGroups)&&n.setColourGroups(h)}function To(e,n){const s=e.state,o=s.paletteSelection;if(o.length<2)return;let a=s.colourGroups.map(l=>({...l,members:[...l.members]}));const i=a.findIndex(l=>l.members.some(u=>o.some(d=>we(d,u))));let r=s.groupSuggestions??[];for(const l of o)a=ge(a,l,i),r=ge(r,l,-1,!0);if(i>=0)for(const l of o)a[i].members.some(u=>we(u,l))||a[i].members.push(l);else a.push({members:[...o],target:null});e.set({groupSuggestions:Be(r),paletteSelection:[]}),n.setColourGroups(Be(a))}const Eo=4;function ds(e,n,s,o,a,i){e.addEventListener("pointerdown",r=>{if(r.button!==0)return;const l=r.clientX,u=r.clientY;let d=null,p=null;const h=f=>{f!==p&&(p?.classList.remove("dropping"),p=f,p?.classList.add("dropping"))},g=f=>{if(!d){if(Math.hypot(f.clientX-l,f.clientY-u){if(window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",c),window.removeEventListener("pointercancel",c),!d)return;d.remove(),document.body.classList.remove("dragging-ink"),h(null);const m=v=>v.stopPropagation();window.addEventListener("click",m,!0),window.setTimeout(()=>window.removeEventListener("click",m,!0),0),f.type!=="pointercancel"&&zo(n,s,o,a,document.elementFromPoint(f.clientX,f.clientY))};window.addEventListener("pointermove",g),window.addEventListener("pointerup",c),window.addEventListener("pointercancel",c)})}function ot(e,n){return $t(e,n)?.keys??[]}function ps(e,n){let s=0;const o=()=>{let i=[...e.querySelectorAll("[data-fill]:hover")].pop()??null;if(!i){const l=document.activeElement;l instanceof HTMLElement&&e.contains(l)&&l.matches(":focus-visible")&&(i=l.closest("[data-fill]"))}const r=i?JSON.parse(i.dataset.fill??"[]"):[];return r.length?r:null},a=()=>{const i=o(),r=n.state.hoverFill;(i??[]).join(` +`)!==(r??[]).join(` +`)&&n.set({hoverFill:i}),window.cancelAnimationFrame(s),i&&(s=window.requestAnimationFrame(a))};for(const i of["pointerover","pointerout","focusin","focusout"])e.addEventListener(i,()=>window.requestAnimationFrame(a))}function hs(e,n){const s=e.state,o=tn(s),a=s.palette.filter(r=>r.kind!=="gradient"),i=s.paletteSelection;return t("div.card.palettecard",null,t("div.cardhead",null,t("span.eyebrow",{style:{display:"flex",alignItems:"center",gap:"6px"}},U("palette",12),`Palette · ${s.palette.length} ink${s.palette.length===1?"":"s"}`),t("button.reset",{disabled:!a.length,onclick:()=>Ro(e,n)},"Paste brand palette")),s.colourGroups.length?Lo(e,n):null,s.palette.length?No(e,n,o):null,t("div.inklist",{"data-drop":"list","aria-label":"Inks"},...s.palette.map(r=>Io(e,n,r))),i.length?t("div.mergebar",null,t("span.muted",null,`${i.length} ticked`),t("button.btn.compact",{"data-ctl":"merge-ticked",disabled:i.length<2,title:"Draw the ticked inks as one: a new group, or the group one of them is already in",onclick:()=>To(e,n)},"Merge"),t("button.reset",{onclick:()=>e.set({paletteSelection:[]})},"Clear")):null,s.palette.length?t("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:"10px"}},t("span.muted",{style:{fontSize:"11px",lineHeight:"1.45"}},"Snapping rewrites fills only — no re-trace. Grouping re-traces, so the shapes join."),t("button.reset",{style:{fontSize:"11px",flex:"none"},title:"Custom properties, one per flat ink, in canvas-share order",onclick:()=>void Oo(a)},"Copy all as CSS")):t("span.muted",{style:{fontSize:"11px"}},"Trace an image to see its inks."))}function An(e,n=!1){return t(`span.swatch.mini${Qe(e)?".ramp":""}`,null,t("i",{style:{background:Kt(e,n)}}))}function Tt(e){const n=Re(e);return n.length>1?`${n.length} stops`:n[0].toUpperCase()}function Lo(e,n){const s=e.state,a=JSON.stringify(s.resultGroups)===JSON.stringify(s.colourGroups)&&s.result?Mo(s.result.engineLog):[];return t("div.cgroups",null,t("div.cgroupshead",null,t("span.eyebrow",null,`Colour groups · ${s.colourGroups.length}`),t("button.reset",{title:"Trace every ink on its own again",onclick:()=>n.setColourGroups([])},"Clear groups")),...s.colourGroups.map((i,r)=>fs(e,n,i,r,"group",a[r]??null)))}function Po(e,n){if(e.target?.startsWith("#"))return{member:e.target.toLowerCase(),label:"custom colour"};if(e.target?.startsWith("@")){const a=e.members[Number(e.target.slice(1))-1]??e.members[0];return{member:a,label:Qe(a)?"extends this gradient":"becomes this"}}let s=e.members[0],o=-1;for(const a of e.members){const i=$t(a,n)?.share??0;i>o&&(o=i,s=a)}return{member:s,label:"most-used"}}function fs(e,n,s,o,a,i){const r=e.state,l=r.palette,u=v=>$t(v,l)?.gradient==="radial",d=Po(s,l),p=[...new Set([...s.members,d.member].flatMap(v=>ot(v,l)))],h=v=>{if(a==="group"){const C=r.colourGroups.map((b,k)=>k===o?v:b);n.setColourGroups(Be(C))}else{const C=(r.groupSuggestions??[]).map((b,k)=>k===o?{...v,edited:!0}:b);e.set({groupSuggestions:Be(C)})}},g=v=>Co(i,v),c=v=>{const C=ot(v,l);return C.length||a==="sugg"?C:ot(d.member,l)},f=s.members.map((v,C)=>{const b=s.target===`@${C+1}`,k=t(`div.cchip${b?".target":""}${g(v)?".unmatched":""}`,{"data-fill":JSON.stringify(c(v))},t("button.cchipmain",{"data-ctl":`${a}${o}:${v}`,"aria-pressed":String(b),title:b?"The group becomes this. Press again for the most-used colour.":Qe(v)?"Make the group this gradient: it is extended over the other members":"Make the group this colour",onclick:()=>h({...s,target:b?null:`@${C+1}`})},An(v,u(v)),t("span.num",null,Tt(v))),t("button.cchipx",{"data-ctl":`${a}${o}:${v}:x`,"aria-label":`Take ${Tt(v)} out of the group`,title:"Take it out of the group",onclick:()=>h(us(s,C))},U("x",11)));return ds(k,e,n,v,{kind:a,index:o},u(v)),k}),m=t("button.reset",{title:"Paint the whole group one colour of your choosing",onclick:v=>_o(v.currentTarget,d.member,C=>h({...s,target:C}))},"Custom…");return t(`div.cgroup${a==="sugg"?".suggested":""}`,{"data-drop":a,"data-index":String(o),"data-fill":JSON.stringify(p)},t("div.cchips",null,...f),t("div.cresult",null,t("span.arrow",{"aria-hidden":"true"},"→"),t("span.cresultchip",{"data-fill":JSON.stringify(ot(d.member,l))},An(d.member,u(d.member)),t("span.num",null,Tt(d.member))),t("span.muted",null,d.label),t("span",{style:{flex:"1"}}),m),a==="sugg"?t("div.cactions",null,t("button.btn.compact.primary",{onclick:()=>{const v=(r.groupSuggestions??[]).filter((C,b)=>b!==o);e.set({groupSuggestions:v}),n.setColourGroups([...r.colourGroups,{members:s.members,target:s.target}])}},"Accept"),t("button.btn.compact",{onclick:()=>e.set({groupSuggestions:(r.groupSuggestions??[]).filter((v,C)=>C!==o),dismissedGroups:[...r.dismissedGroups,en(s)]})},"Dismiss")):[Do(i),t("div.cactions",null,t("span",{style:{flex:"1"}}),s.target?t("button.reset",{title:"Become the member covering the most of the image",onclick:()=>h({...s,target:null})},"Most-used"):null,t("button.reset",{title:"Trace these inks on their own again",onclick:()=>n.setColourGroups(r.colourGroups.filter((v,C)=>C!==o))},"Ungroup"))])}function Do(e){if(!e)return t("span.muted.creport",null,"Merged on the next trace.");if(e.leftAlone)return t("span.creport.warn",{title:e.line},U("alert",12),"Left alone: fewer than two of these colours are in the image now.");if(e.unmatched.length){const s=e.unmatched.map(o=>Qe(o)?"a gradient":o.toUpperCase()).join(", ");return t("span.creport.warn",{title:`${e.line}; not found: ${e.unmatched.join(", ")}`},U("alert",12),`${s} ${e.unmatched.length===1?"is":"are"} no longer in the image; the rest merged.`)}const n=e.line.replace(/ -> /," → ").replace(/#[0-9a-f]{6}/gi,s=>s.toUpperCase());return t("span.muted.creport",{title:e.line},n)}function No(e,n,s){const o=e.state,a=o.palette.length,i=l=>{const u=l===null?null:Math.max(1,Math.min(a,Math.round(l))),d=(o.groupSuggestions??[]).filter(p=>p.edited);e.set({simplifyTo:u,groupSuggestions:cs({...o,simplifyTo:u,groupSuggestions:d})})},r=t("input.numberfield.simplify",{type:"text",inputmode:"numeric",value:String(o.simplifyTo??a),"aria-label":"Simplify the palette to this many colours",onchange:l=>{const u=Number(l.target.value);Number.isFinite(u)&&u>=1&&i(u>=a?null:u)}});return t("div.cgroups.suggestions",null,t("div.cgroupshead",null,t("span.eyebrow",null,s.length?`Suggested · ${s.length}`:"Suggested"),s.length>1?t("button.reset",{title:"Accept every suggestion below",onclick:()=>{e.set({groupSuggestions:[]}),n.setColourGroups([...o.colourGroups,...s.map(({g:l})=>({members:l.members,target:l.target}))])}},"Accept all"):null),t("div.simplifyrow",null,t("span.muted",null,"Colours"),t("button.btn.compact.icon",{"aria-label":"One colour fewer",disabled:(o.simplifyTo??a)<=1,onclick:()=>i((o.simplifyTo??a)-1)},U("minus",12)),r,t("button.btn.compact.icon",{"aria-label":"One colour more",disabled:o.simplifyTo===null,onclick:()=>i((o.simplifyTo??a)+1>=a?null:(o.simplifyTo??a)+1)},"+"),t("span.muted",{style:{fontSize:"11px"}},o.simplifyTo===null?`of ${a} · near duplicates`:`of ${a} · merging down`)),...s.length?s.map(({g:l,index:u})=>fs(e,n,l,u,"sugg",null)):[t("span.muted",{style:{fontSize:"11px"}},o.simplifyTo===null?"No near-duplicate inks: nothing to propose.":"Nothing more to propose at this count.")])}function Io(e,n,s){const o=e.state,a=mt(s),i=s.kind==="gradient",r=s.snappedDe00!==null,l=o.paletteSelection.includes(a),u=o.colourGroups.some(g=>g.members.some(c=>we(c,a))),d=t("button.inkmain",{"data-ctl":`ink:${a}`,title:i?`${s.gradient??"linear"} gradient · ${s.stops.map(g=>g.toUpperCase()).join(" → ")}`:"Snap this ink to a colour of your choosing","aria-disabled":i?"true":null,onclick:g=>{i||Fo(g.currentTarget,s,n)}},t(`span.swatch${r?".snapped":""}${i?".ramp":""}`,null,t("i",{style:{background:i?Kt(a,s.gradient==="radial"):s.hex}})),t("span.hex",null,i?s.gradient==="radial"?"radial":"linear":s.hex.toUpperCase()),t("span.share",null,ve(s.share)),t(`span.snap${r?".on":""}`,null,i?`${s.stops.length} stops`:r?`snapped · ΔE ${ie(s.snappedDe00)}`:"snap to…")),p=()=>e.set({paletteSelection:l?o.paletteSelection.filter(g=>g!==a):[...o.paletteSelection,a]}),h=t(`div.ink${u?".grouped":""}`,{"data-drop":"ink","data-member":a,"data-fill":JSON.stringify(s.keys)},t("button.inkpick",{"data-ctl":`pick:${a}`,role:"checkbox","aria-checked":String(l),"aria-label":`Tick ${i?"this gradient":s.hex.toUpperCase()} to merge it`,title:"Tick inks, then Merge to draw them as one. Or drag one onto another.",onclick:p,onkeydown:g=>{g.key===" "&&(g.preventDefault(),g.stopPropagation(),g.repeat||p())}},l?U("check",11):null),d);return ds(h,e,n,a,{kind:"palette"},s.gradient==="radial"),h}function _o(e,n,s){const o=Re(n)[0]??"#000000",a=t("input.numberfield",{type:"text",value:o.toUpperCase(),spellcheck:"false",style:{width:"100%",textAlign:"left",height:"30px",padding:"0 9px"}}),i=t("input",{type:"color",value:o,style:{width:"100%",height:"60px",border:"none",background:"none",padding:"0"},oninput:()=>{a.value=i.value.toUpperCase()}}),r=()=>{const l=a.value.trim().toLowerCase(),u=l.startsWith("#")?l:`#${l}`;if(!/^#[0-9a-f]{6}$/.test(u)){H(`${a.value} is not a colour; write it as #RRGGBB.`,{kind:"bad"});return}s(u),le()};Jt(e,t("div",{style:{width:"260px",padding:"12px",display:"flex",flexDirection:"column",gap:"11px"}},i,t("span.muted",{style:{fontSize:"11px"}},"The group becomes"),t("div",{style:{display:"flex",gap:"6px"}},a,t("button.btn.compact",{style:{background:"var(--accent)",borderColor:"var(--accent)",color:"var(--accent-ink)",fontWeight:"600"},onclick:r},"Use")))),a.addEventListener("keydown",l=>{l.key==="Enter"&&r()})}function Fo(e,n,s){const o=t("input.numberfield",{type:"text",value:n.hex.toUpperCase(),spellcheck:"false",style:{width:"100%",textAlign:"left",height:"30px",padding:"0 9px"}}),a=t("input",{type:"color",value:n.hex,style:{width:"100%",height:"60px",border:"none",background:"none",padding:"0"},oninput:()=>{o.value=a.value.toUpperCase()}}),i=t("span",{style:{fontSize:"11.5px",color:"var(--gold)"}},"You are overriding a measurement.");Jt(e,t("div",{style:{width:"300px",padding:"12px",display:"flex",flexDirection:"column",gap:"11px"}},a,t("div",{style:{display:"flex",gap:"8px",alignItems:"center"}},t("span.swatch",null,t("i",{style:{background:n.traced}})),t("div",{style:{display:"flex",flexDirection:"column"}},t("span.muted",{style:{fontSize:"11px"}},"traced"),t("span.num",{style:{fontSize:"12.5px"}},`${n.traced.toUpperCase()} · ${ve(n.share)} of canvas`))),t("span.muted",{style:{fontSize:"11px"}},"Snap to"),t("div",{style:{display:"flex",gap:"6px"}},o,t("button.btn.compact",{style:{background:"var(--accent)",borderColor:"var(--accent)",color:"var(--accent-ink)",fontWeight:"600"},onclick:()=>{s.snap(n.traced,o.value.trim().toLowerCase()),le()}},"Snap")),i))}async function Oo(e){const n=e.map((s,o)=>` --ink-${o+1}: ${s.hex.toLowerCase()}; /* ${ve(s.share)} of canvas */`).join(` +`);try{await vt(`:root { +${n} +} +`),H(`${e.length} ink${e.length===1?"":"s"} copied as CSS.`,{kind:"good"})}catch(s){H(String(s),{kind:"bad"})}}function Ro(e,n){const s=e.state.palette.filter(l=>l.kind!=="gradient"),o=t("textarea",{rows:"5",spellcheck:"false",placeholder:`#12443E +#E9B24C +rgb(207, 198, 180)`,style:{width:"100%",border:"1px solid var(--rule2)",borderRadius:"var(--radius)",background:"var(--paper)",color:"var(--ink)",padding:"10px 12px",font:"12px/1.8 var(--font-mono)",resize:"vertical"}}),a=t("div",{style:{display:"flex",flexDirection:"column",gap:"7px"}});let i=[];const r=async()=>{i=await B.matchPalette(s.map(l=>l.traced),o.value),D(a,...i.map(l=>t("div",{style:{display:"flex",alignItems:"center",gap:"9px",fontSize:"12px"},class:"num"},t("span.swatch",{style:{width:"20px",height:"20px"}},t("i",{style:{background:l.from}})),t("span.muted",null,l.from.toUpperCase()),t("span.muted",null,"→"),t("span.swatch",{style:{width:"20px",height:"20px"}},t("i",{style:{background:l.to}})),t("span.dim",null,l.to.toUpperCase()),t("span",{style:{marginLeft:"auto",color:l.de00<.5?"var(--good)":"var(--gold)"}},l.de00<.05?"exact":`${ie(l.de00)} dE00`))))};o.addEventListener("input",()=>void r()),qe(St("Paste a brand palette",[o,t("span.muted",{style:{fontSize:"11.5px"}},"Hex, RGB or CSS variables, one per line. We match each to the nearest traced ink."),a],[t("button.btn",{onclick:le},"Cancel"),t("button.btn.primary",{onclick:()=>{for(const l of i)n.snap(l.from,l.to);le()}},`Snap ${s.length} inks`)]))}const gs=2.5,Bo=256;function ms(e,n){return!!e?.lossy||n!==null&&n.noiseLevels>=gs}function Go(e){return e.filter(n=>n.share>=.005)}function Wo(e){if(e.length!==2||e.some(l=>l.kind==="gradient"))return!1;const n=e.map(l=>rs(l.hex)).map(l=>l?ls(l):null);if(n.some(l=>l===null))return!1;const[s,o]=n,a=l=>Math.hypot(l[1],l[2])<12,[i,r]=s[0]65}function Ho(e){const{source:n,report:s,palette:o,losses:a,facts:i,settings:r}=e;if(!n||!s)return[];const l=[];if(ms(n,i)&&r.cleanUpDamage==="off"){const g=[n.lossy?n.container:null,i?`noise ${i.noiseLevels.toFixed(1)} levels`:null].filter(Boolean);l.push({id:"photo",preset:"photo-or-scan",title:"Looks like a photo, a scan or a screenshot",evidence:g.join(" · "),action:"Photo or scan, with the denoiser"})}const u=Go(o);!r.blackAndWhite&&Wo(u)&&l.push({id:"bw",preset:"black-and-white",title:"Two colours, black and white",evidence:`${u.length} inks cover the canvas`,action:"Black & white"}),!r.lineArt&&a.some(g=>g.kind==="strokes")&&!r.blackAndWhite&&l.push({id:"lineart",preset:"line-art",title:"Drawn with strokes",evidence:"line work came back as filled outlines",action:"Line art, as strokes"});const d=Math.max(n.width,n.height),p=o.some(g=>g.kind==="gradient");return!(r.speckleFloor<=1&&r.maxColours<=16)&&d<=Bo&&!p&&u.length<=16&&l.length===0&&l.push({id:"icon",preset:"icon",title:"A small flat mark",evidence:`${d} px, ${u.length} colour${u.length===1?"":"s"}`,action:"Icon, keeping one-pixel details"}),l.slice(0,2)}function Te(e,n,s){return(e?.controls??[]).filter(o=>n[o.key]!==s[o.key]).map(o=>o.key)}function ys(e,n,s){const o=e?.presets.find(a=>a.id===s);if(o){const a=Te(e,n,o.settings).length,i=o.id==="logo"?"the Logo preset, the default":`the ${o.name} preset`;return a?`${i}, with ${a} control${a===1?"":"s"} changed last time`:i}return"your settings from last time"}function nn(e){const n=e.state,s=n.auto;return s?.report?Ho({source:n.source,report:s.report,palette:s.palette,losses:s.losses,facts:n.facts,settings:s.settings,preset:s.preset}):[]}function bs(e){const n=e.state;return n.auto?n.preset!==n.auto.preset||Te(n.caps,n.settings,n.auto.settings).length>0:!1}function qo(e){const n=e.state;return n.auto?.report?bs(e)||tn(n).length>0||nn(e).length>0:!1}function ws(e,n,s=!1){const o=e.state,a=o.auto;if(!a?.report)return null;const i=nn(e),r=tn(o),l=bs(e),u=o.caps?.presets.find(p=>p.id===o.preset),d=i.map(p=>{const h=o.preset===p.preset;return t("div.autorow",null,t("div.autotext",null,t("span.autotitle",null,p.title),t("span.muted.num",null,p.evidence)),h?t("span.autotaken",null,"chosen"):t("button.btn.compact",{"data-ctl":`auto-try:${p.id}`,title:`Switch to ${p.action}. An ordinary preset: Back to Auto undoes it.`,onclick:()=>n.setPreset(p.preset)},`Try ${p.action}`))});if(r.length){const p=r.reduce((h,{g})=>h+g.members.length,0);d.push(t("div.autorow",null,t("div.autotext",null,t("span.autotitle",null,`${r.length} colour group${r.length===1?"":"s"} suggested`),t("span.muted.num",null,`${p} inks that look like the same colour measured twice`)),t("div.autobtns",null,t("button.btn.compact",{"data-ctl":"auto-groups-accept",title:"Draw each suggested group as one colour; the trace runs again so the shapes join",onclick:()=>{e.set({groupSuggestions:[]}),n.setColourGroups([...o.colourGroups,...r.map(({g:h})=>({members:h.members,target:h.target}))])}},"Accept"),t("button.reset",{"data-ctl":"auto-groups-dismiss",onclick:()=>e.set({groupSuggestions:[],dismissedGroups:[...o.dismissedGroups,...r.map(({g:h})=>en(h))]})},"Dismiss"))))}return t("div.autochose",null,s?null:t("span.autolead",null,`Auto traced with ${ys(o.caps,a.settings,a.preset)}.`),...d,!d.length&&!s?t("span.muted",null,"Nothing in its report suggests another preset."):null,l?t("div.autorow.moved",null,t("div.autotext",null,t("span.autotitle",null,u?`Now: ${u.name}`:"Now: your own settings"),t("span.muted",null,"An ordinary setting, shown under Tune")),t("button.reset",{"data-ctl":"auto-back",onclick:n.backToAuto},"Back to Auto")):null)}const Uo=new Set(["cleanUpDamage","editability"]),Et={axisHandles:.34,smoothJoins:.89,alignedNodes:.86};function jo(e,n){const s=t("div.railtabs"),o=t("div.railmodes"),a=t("div.railscroll"),i=t("div.railfoot"),r=t("aside.rail",{"aria-label":"Controls"},s,o,a,i),l={result:0,tune:0};let u=e.state.railTab;const d=()=>{const c=e.state,f=document.activeElement instanceof HTMLElement&&a.contains(document.activeElement)?document.activeElement.getAttribute("data-ctl"):null;l[u]=a.scrollTop,D(a,...c.railTab==="result"?[c.tracing?sa(e):null,...Qo(e,n)]:Yo(e,n)),u=c.railTab,a.scrollTop=l[u]??0,f&&a.querySelector(`[data-ctl="${f}"]`)?.focus({preventScroll:!0})},p=()=>{const c=e.state,f=i.querySelector(".readout.busy");if(c.tracing&&f){const m=c.liveStages[c.liveStages.length-1];f.querySelector(".stage").textContent=m?.name??"starting",f.querySelector(".elapsed").textContent=Ae(c.liveStages.reduce((v,C)=>v+C.ms,0)/1e3);return}D(i,...ua(e,n))},h=()=>{const c=document.activeElement instanceof HTMLElement&&o.contains(document.activeElement)?document.activeElement.getAttribute("data-ctl"):null;D(o,...Vo(e,n)),c&&o.querySelector(`[data-ctl="${c}"]`)?.focus({preventScroll:!0})},g=()=>{D(s,...Zo(e,n)),h(),d(),p()};return e.on(["caps","prefs","preset","settings","railTab","groupsOpen"],g),e.on(["tracing","liveStages","result","report","palette","losses","source","worstCorner","previous","colourGroups","groupSuggestions","resultGroups","paletteSelection","simplifyTo","auto","facts","chooser","wizard","autoNoteHidden"],()=>{e.state.railTab==="result"&&d(),p();const c=s.querySelector('[data-note="result"]');c&&(c.textContent=xs(e))}),ps(a,e),g(),r}function Vo(e,n){const s=e.state,o=g=>s.caps?.controls.find(c=>c.key===g)?.help??"",a=s.caps?.denoiser,i=s.settings.cleanUpDamage,r=a?.supported??!1,l=r&&a!==void 0&&!a.installed&&i!=="off",u={off:"pixels as they are",auto:"only if damaged",on:"always"},d=t("div.mode",null,t("div.modehead",null,Je(t("span.modetitle",{tabindex:"0"},"Denoiser"),o("cleanUpDamage")),l?t("button.reset",{onclick:n.openDenoiser,title:"It runs on this computer; nothing is uploaded"},"Download it"):t("span.modestate",null,r?u[i]:"needs its own tab")),t("div.seg.big",{role:"group","aria-label":"Denoiser"},...["off","auto","on"].map(g=>t("button",{"aria-pressed":String(i===g),disabled:!r,"data-ctl":`cleanUpDamage:${g}`,onclick:()=>n.changeSetting("cleanUpDamage",g)},g==="off"?"Off":g==="auto"?"Auto":"On")))),p=s.settings.editability,h=t("div.mode",null,t("div.modehead",null,Je(t("span.modetitle",{tabindex:"0"},"Editable"),o("editability"))),t("button.bigswitch",{role:"switch","aria-checked":String(p),"aria-label":"Editable structure","data-ctl":"editability:switch",onclick:()=>n.changeSetting("editability",!p)},t("span.knob"),t("span.state",null,p?"On":"Off")));return[d,h]}function vs(e,n){const s=n.baseSettings(),o=e.state;return(o.caps?.controls??[]).filter(a=>o.settings[a.key]!==s[a.key]).length}function xs(e){const n=e.state.report;return n?`${ie(n.meanDe00)} dE00`:""}function Zo(e,n){const s=e.state,o=vs(e,n),a=(i,r,l,u)=>t("button",{role:"tab","aria-selected":String(s.railTab===i),title:u,onclick:()=>e.set({railTab:i})},t("span.tablabel",null,r),t("span.tabnote",{"data-note":i},l));return[t("div.railseg",{role:"tablist","aria-label":"What the rail shows"},a("result","Result",xs(e),"What this trace produced"),a("tune","Tune",o?`${o} changed`:"","The settings that make the next trace")),t("p.tabcaption",null,s.railTab==="result"?"What this trace produced.":"The settings for the next trace.")]}function Yo(e,n){return[Jo(e,n),Xo(e,n),...ca(e,n)]}function Jo(e,n){return e.state.source?t("div.guideline",null,t("span.faint",null,"Not sure which controls matter here?"),t("button.reset",{"data-ctl":"open-wizard",title:"The main choices one step at a time, each explained, with the result beside Auto's",onclick:n.openWizard},"Walk me through it")):null}function Xo(e,n){const s=e.state,o=s.caps?.presets??[],a=s.prefs?.saved??[],i=ns(s.caps?.platform),r=(p,h,g,c,f)=>t(f?"button.preset.saved":"button.preset",{"aria-pressed":String(s.preset===p),title:`${h} — ${g}${c?` (${i}+${c})`:""}`,onclick:()=>n.setPreset(p)},t("span.name",null,h),f?t("span.forget",{role:"button",tabindex:"0","aria-label":`Forget ${h}`,title:`Forget ${h}`,onclick:m=>{m.stopPropagation(),f()}}):null),l=o.find(p=>p.id===s.preset),u=l?`${l.subtitle}.`:a.find(p=>p.id===s.preset)?"One of your saved presets.":"Controls moved from the preset they started at.",d=vs(e,n);return t("div.presetblock",null,t("div.cardhead",null,t("span.eyebrow",null,"Preset"),t("button.reset",{disabled:!s.caps||!d,title:"Put every control back to where the preset had it",onclick:()=>s.preset&&n.setPreset(s.preset)},d?`Reset ${d} changed`:"Nothing changed")),t("div.presets",{role:"group","aria-label":"Presets"},...o.map((p,h)=>r(p.id,p.name,p.subtitle,h<9?h+1:null,null)),...a.map(p=>r(p.id,p.name,"Saved preset",null,()=>n.deletePreset(p.id)))),t("div.traybar",null,t("span.faint",null,u),t("button.reset",{disabled:!s.caps,title:`Remember all ${s.caps?.controls.length??""} controls exactly as they stand`,onclick:()=>Ko(e,n)},"Save as preset")))}function Ko(e,n){const s=e.state.caps?.presets.find(i=>i.id===e.state.preset),o=t("input.numberfield",{type:"text",maxlength:"40",spellcheck:"false",placeholder:s?`${s.name}, adjusted`:"Northwind, flat",style:{width:"100%",textAlign:"left",height:"32px",padding:"0 10px"}}),a=()=>{n.savePreset((o.value.trim()||o.placeholder).slice(0,40)),le()};qe(St("Save current as preset",[o,t("span.muted",{style:{fontSize:"11.5px",lineHeight:"1.5"}},`All ${e.state.caps?.controls.length??""} controls, as they stand. A saved preset is a snapshot rather than a set of differences from the defaults, so it will not drift when those move.`)],[t("button.btn",{onclick:le},"Cancel"),t("button.btn.primary",{onclick:a},"Save")])),o.focus(),o.addEventListener("keydown",i=>{i.key==="Enter"&&a()})}function Qo(e,n){return e.state.source?[ea(e,n),oa(e,n),ia(e,n),ra(e),hs(e,n),na()]:[ta()]}function ea(e,n){const s=e.state;if(s.chooser||s.wizard||s.autoNoteHidden||!qo(e))return null;const o=ws(e,n,!0);return o?t("div.card.autocard",null,t("div.cardhead",null,t("span.eyebrow",null,"Auto chose"),t("div",{style:{display:"flex",gap:"10px"}},t("button.reset",{"data-ctl":"auto-customise",onclick:n.openWizard},"Customise"),t("button.reset",{"data-ctl":"auto-hide",title:"Hide this for the image",onclick:n.hideAutoNote},"Hide"))),o):null}function ta(){return t("div.card.emptycard",null,t("span.eyebrow",null,"Quality report"),t("p",null,"Open an image and its report lands here: the measured colour difference, what the drawing cost in coordinates, how editable it is, what could not be recovered, and its palette."),t("span.faint",null,"The controls are under Tune; they apply to whatever you open next."))}function na(){return t("div.benchmark",null,t("span.eyebrow.label",null,"Benchmark"),t("p",null,"Across our published 21-case set, VTracer's defaults average 4.4× the coordinates at 10× the colour error. ",t("span.dim",null,"Not a measurement of this file.")))}function sa(e){const n=e.state,s=n.caps?.stages??[],o=new Map(n.liveStages.map(i=>[i.name,i.ms])),a=n.liveStages.reduce((i,r)=>i+r.ms,0)/1e3;return t("div.card",null,t("div.cardhead",null,t("span",{style:{fontSize:"12px",fontWeight:"500"}},`Tracing at ${jt(n,n.tracingTier)??"—"} px`),t("span.muted.num",{style:{fontSize:"11px"}},Ae(a))),t("div.sweep",null,t("i")),t("div.stagelist",null,...s.map(i=>{const r=o.get(i);return t(`div.stagerow${r===void 0?"":".done"}`,null,t("span.mark",null,r===void 0?"·":"✓"),t("span.name",null,i),t("span.muted",null,r===void 0?"—":`${r.toFixed(0)} ms`))})))}function oa(e,n){const s=e.state,o=s.report,a=o?s.result?.tier==="draft"?`draft · ${o.tracedPx} px`:`full trace · ${o.tracedPx} px`:"—",i=r=>`${(Math.sqrt(Math.min(r,5)/5)*100).toFixed(1)}%`;return t("div.card",{style:{opacity:s.tracing?"0.45":"1",transition:"opacity var(--d-fast)"}},t("div.cardhead",null,t("span.eyebrow",null,"Quality report"),t("span.muted",{style:{fontSize:"11px"}},a)),t("div.headline",null,t("span.figure",null,ie(o?.meanDe00)),t("div.of",null,t("span.dim",{style:{fontSize:"11.5px"}},"mean colour difference"),t("span.muted.num",{style:{fontSize:"11px"}},`median ${ie(o?.medianDe00)} · dE00`))),t("div",{style:{display:"flex",flexDirection:"column",gap:"5px"}},t("div.meter",{role:"img","aria-label":`Colour difference ${ie(o?.meanDe00)} of a 0 to 5 scale`},t("span.threshold",{style:{left:i(1)}}),o?.meanDe00!=null?t("span.needle",{style:{left:i(o.meanDe00)}}):null),t("div.meterscale",null,t("span",null,"0 invisible"),t("span",null,"1.0 just visible"),t("span",null,"5.0"))),t("div.stats",null,...aa(e).map(([r,l])=>t("div",null,t("span.k",null,r),t("span.v",null,l)))),o&&s.worstCorner?t("button.reset",{style:{textAlign:"left"},onclick:n.jumpToWorst},`Find the worst corner · ${ie(s.worstCorner.de00)} dE00 →`):null)}function aa(e){const n=e.state.report;return n?[["coordinates",ne(n.coordinates)],["paths",ne(n.paths)],["colours found",ne(n.colours)],["segments",ne(n.segments)],["file size",ae(n.bytes)],["minified",n.minifiedBytes===null?"already":ae(n.minifiedBytes)],["traced at",`${n.tracedPx} px`],["time taken",Ae(n.seconds)]]:[["coordinates","—"],["paths","—"],["colours found","—"],["segments","—"],["file size","—"],["minified","—"]]}function ia(e,n){const s=e.state,o=s.report?.structure;if(s.report&&!o)return null;const a=s.settings.editability,r=(o?[{label:"Handles on an axis",help:"Curve handles that point exactly along x or y, as an artist places them with the keyboard. Counted over every cubic handle in the drawing.",part:o.axisHandles,whole:o.handles,artist:Et.axisHandles},{label:"Smooth joins",help:"Places where two curves meet with their tangents within a degree of each other, so the outline has no kink for a hand to trip on.",part:o.smoothJoins,whole:o.joins,artist:Et.smoothJoins},{label:"Nodes sharing a coordinate",help:"Nodes with the same x or the same y as another node, so a group of them can be selected and aligned in one move.",part:o.alignedNodes,whole:o.nodes,artist:Et.alignedNodes}]:[]).filter(u=>u.whole>0),l=o!==void 0&&o.cubics===0;return t("div.card.structure",{style:{opacity:s.tracing?"0.45":"1",transition:"opacity var(--d-fast)"}},t("div.cardhead",null,t("span.eyebrow",null,"Editability"),t("button.reset",{title:a?"Stop moving nodes and handles onto what an artist would draw":"Move nodes and handles onto what an artist would draw. Costs about 0.04 dE00 on icons, and the report above shows the price on this image.",onclick:()=>n.changeSetting("editability",!a)},a?"Editable structure on · turn off":"Make it editable")),...r.map(u=>{const d=u.part/u.whole;return t("div.srow",{title:u.help},t("span.k",null,u.label),t("span.v",null,ve(d),t("span.of",null,`${u.part} of ${u.whole}`)),t("div.sbar",{role:"img","aria-label":`${u.label}: ${ve(d)}, ${u.part} of ${u.whole}; hand-drawn files ${ve(u.artist)}`},t("i",{style:{width:`${(d*100).toFixed(1)}%`}}),t("b",{style:{left:`${(u.artist*100).toFixed(1)}%`}})))}),l?t("span.muted",{style:{fontSize:"11px",lineHeight:"1.45"}},"This drawing is lines and arcs, so there are no curve handles to tidy; only its nodes can line up."):null,t("span.muted",{style:{fontSize:"11px",lineHeight:"1.45"}},"The tick is where hand-drawn files sit (median of 1,544 artist SVGs). ",a?"Nothing moves further than the trace's own tolerance.":"A trace fitted for pixels alone starts near zero on all three."))}function ra(e){const n=e.state,s=o=>({lettering:"type",lossy:"image",strokes:"wand",ramp:"droplet",detail:"layers"})[o]??"info";return t("div.card",null,t("span.eyebrow",null,"What this trace could not recover"),...n.losses.map(o=>la(o,s(o.kind))),t("div.nothinglost",null,t("span.glyph",null,U("checkCircle",15)),t("span",null,n.losses.length?"Nothing else we can detect was lost.":"Nothing we can detect was lost.")))}function la(e,n){const s=t("div.why",{hidden:!0},e.why),o=t("button.expand",{"aria-expanded":"false",onclick:()=>{const a=s.hasAttribute("hidden");s.toggleAttribute("hidden",!a),o.setAttribute("aria-expanded",String(a)),o.textContent=a?"Hide":"Why"}},"Why");return t("div.loss",null,t("span.glyph",null,U(n,15)),t("div",{style:{display:"flex",flexDirection:"column",gap:"3px",minWidth:"0"}},t("span.text",null,e.text),t("div.meta",null,o,e.link?t("a",{href:e.link.href,"data-external":e.link.href.startsWith("http")?"1":null},e.link.label):null),s))}function ca(e,n){const s=e.state,o=(s.caps?.controls??[]).filter(r=>!Uo.has(r.key)),a=n.baseSettings();return[...new Set(o.map(r=>r.group))].map(r=>{const l=o.filter(p=>p.group===r),u=s.groupsOpen[r]!==!1,d=l.filter(p=>s.settings[p.key]!==a[p.key]).length;return t("section.group",{class:u?"open":void 0},t("div.grouphead",null,t("button.groupbtn",{"aria-expanded":String(u),"data-ctl":`group:${r}`,onclick:()=>{s.groupsOpen[r]=!u,e.touch("groupsOpen")}},U(u?"chevronDown":"chevronRight",13),t("span.eyebrow",null,r),d?t("span.changed",null,`${d} changed`):null),d?t("button.reset",{onclick:()=>n.resetGroup(r)},"Reset"):null),u?t("div.groupbody",null,...l.map(p=>ks(e,p,n,a))):null)})}function ks(e,n,s,o){const a=e.state.settings[n.key],i=a!==o[n.key],r=(...c)=>t(i?"div.control.changed":"div.control",null,...c);if(n.kind==="switch"){const c=t("button.switch",{role:"switch","aria-checked":String(!!a),"aria-label":n.label,"data-ctl":`${n.key}:switch`,onclick:()=>s.changeSetting(n.key,!a)});return r(t("div.controlhead",null,Je(t("span.label",{tabindex:"0"},n.label),n.help),c))}if(n.kind==="tri"){const c=[["off","Off"],["auto","Auto"],["on","On"]];return r(t("div.controlhead",null,Je(t("span.label",{tabindex:"0"},n.label),n.help),t("div.seg",null,...c.map(([f,m])=>t("button",{"aria-pressed":String(a===f),"data-ctl":`${n.key}:${f}`,onclick:()=>s.changeSetting(n.key,f)},m)))))}const l=c=>Math.pow((Number(c)-n.min)/(n.max-n.min||1),1/n.curve)*1e3,u=c=>n.min+Math.pow(c/1e3,n.curve)*(n.max-n.min),d=c=>n.decimals===0?String(Math.round(c)):c.toFixed(n.decimals),p=t("input.numberfield",{type:"text",value:d(Number(a)),inputmode:"decimal","aria-label":`${n.label}${n.unit?` in ${n.unit}`:""}`,"data-ctl":`${n.key}:field`,onchange:c=>{const f=Number(c.target.value);Number.isFinite(f)&&s.changeSetting(n.key,Math.min(n.max,Math.max(n.min,f)))}}),h=c=>{const f=u(Number(c.value));return n.decimals===0?Math.round(f):Number(f.toFixed(n.decimals))},g=t("input.slider",{type:"range",min:"0",max:"1000",step:"1",value:String(Math.round(l(Number(a)))),"aria-label":n.label,"aria-valuetext":`${d(Number(a))} ${n.unit}`.trim(),"data-ctl":`${n.key}:slider`,oninput:c=>{const f=c.target,m=h(f);p.value=d(m),f.setAttribute("aria-valuetext",`${d(m)} ${n.unit}`.trim())},onchange:c=>s.changeSetting(n.key,h(c.target))});return r(t("div.controlhead",null,Je(t("span.label",{tabindex:"0"},n.label),n.help),n.unit?t("span.unit",null,n.unit):null,p),g,n.stops.length?t("div.stops",null,...n.stops.map(c=>t("span",null,c.label))):null)}function ua(e,n){const s=e.state,o=!!s.svg&&!s.tracing;return[da(e,n),t("div.row",null,t("button.btn.primary",{style:{flex:"1"},disabled:!o,onclick:n.openExport},"Export"),t("button.btn",{disabled:!o,onclick:n.copySvg,title:"Paste straight into Figma or Illustrator"},"Copy SVG"),t("button.btn.icon",{disabled:!o,onclick:n.saveCard,"aria-label":"Save comparison card",title:"Save comparison card"},U("share",16))),t("div.note",null,t("span",null,"Export runs a fresh full trace."),t("button.reset",{disabled:!s.source||s.tracing,onclick:n.traceNow},"Trace again"))]}function da(e,n){const s=e.state,o=s.report;if(s.tracing){const r=s.liveStages[s.liveStages.length-1],l=s.liveStages.reduce((u,d)=>u+d.ms,0)/1e3;return t("div.readout.busy",null,t("span.pulse"),t("span.stage",null,r?.name??"starting"),t("span.muted.num.elapsed",null,Ae(l)),t("button.reset",{onclick:n.cancel,title:"Esc"},"Cancel"))}if(!o)return t("div.readout.idle",null,t("span.faint",null,s.source?"Nothing traced yet.":"Open an image to see what a setting does."));const a=s.result?.tier==="final"?s.previous:null,i=(r,l,u)=>t("div.cell",null,t("span.v.num",null,r),t("span.k",null,l),u);return t("div.readout",{"aria-live":"polite"},i(ie(o.meanDe00),"dE00",a?Lt(o.meanDe00,a.meanDe00,r=>r.toFixed(2),.005,!0):null),i(ne(o.coordinates),"coordinates",a?Lt(o.coordinates,a.coordinates,ne,0,!1):null),i(ae(o.bytes),"file",a?Lt(o.bytes,a.bytes,ae,16,!1):null))}function Lt(e,n,s,o,a){if(e==null||n==null)return null;const i=e-n;if(Math.abs(i)<=o)return t("span.delta.same",null,"no change");const r=i<0?"better":a?"worse":"same";return t(`span.delta.${r}`,null,`${i<0?"−":"+"}${s(Math.abs(i))}`)}const pa="https://logolabs.github.io/inkvec/";function ha(e,n,s){const o=t("div.chooser",{role:"region","aria-label":"How to trace this image"});let a=!1;const i=d=>{const p=e.state;a&&n.setOnOpen(d),p.prefs?.seenFirstRun||n.markSeen(),e.set({chooser:!1}),d==="custom"&&s()},r=()=>{const d=e.state;if(d.tracing&&d.generation===d.auto?.generation){const h=d.liveStages[d.liveStages.length-1],g=d.liveStages.reduce((c,f)=>c+f.ms,0)/1e3;return`Tracing now · ${h?.name??"starting"} · ${Ae(g)}`}const p=d.auto?.report;return p?`Done · ${ie(p.meanDe00)} dE00 · ${ne(p.coordinates)} coordinates · ${ae(p.bytes)}`:d.stageState.kind!=="drawing"&&d.stageState.kind!=="decoding"?"Stopped; the stage says why":"Starting…"},l=()=>{const d=e.state,p=d.chooser&&!!d.source&&d.tab==="vectorize"&&!d.wizard&&!d.screen;if(o.hidden=!p,!p){D(o);return}const h=!d.prefs?.seenFirstRun,g=ws(e,n);D(o,t("div.choosehead",null,t("span.eyebrow",null,`Just opened · ${d.source?.name??""}`),t("button.btn.icon.compact.ghost",{"aria-label":"Close; Auto stands",title:"Close. Auto stands (Esc)",onclick:()=>i("auto")},U("x",14))),h?t("p.chooseintro",null,"New: every image is traced the moment it opens. Keep Auto, or customise it a step at a time with the result beside each choice. Ignore this card and Auto stands."):null,t("div.choices",null,t("div.choice",null,t("span.choicename",null,U("zap",14),"Auto"),t("span.choicebody.num",{"data-status":""},r()),t("button.btn.primary.compact",{"data-ctl":"chooser-auto",onclick:()=>i("auto")},"Keep Auto")),t("div.choice",null,t("span.choicename",null,U("settings",14),"Custom"),t("span.choicebody",null,"What it is, colours, detail, shape, output: each explained, beside Auto's result."),t("button.btn.compact",{"data-ctl":"chooser-custom",onclick:()=>i("custom")},"Customise…"))),g?t("div.choosenews",null,t("span.eyebrow",null,"Auto chose"),g):null,t("label.remember",null,t("input",{type:"checkbox",checked:a,onchange:c=>{a=c.target.checked}}),t("span",null,"Remember my choice"),t("span.muted",null,"· change it in Settings")))},u=()=>{const d=o.querySelector("[data-status]");d&&(d.textContent=r())};return e.on(["chooser","source","tab","wizard","screen","auto","facts","prefs","preset","settings","groupSuggestions","palette","stageState"],l),e.on(["tracing","liveStages","generation"],u),l(),o}const at={kind:{id:"kind",title:"What is it?",does:"Picks the preset that suits the kind of image: a handful of settings chosen together. Each tile is a small draft of this image under that preset.",when:"When Auto's trace is not the kind of drawing you wanted: strokes that should be lines, a scan that should be two inks.",costs:"Nothing on its own. Photo or scan adds the denoiser to the full trace, about 0.6 s.",learn:["How a trace is made","algorithm/plain/00-overview.html"]},cleanup:{id:"cleanup",title:"Clean-up",does:"Repairs JPEG and screenshot damage before tracing, so the colours are the ones the artwork was drawn with rather than the ones the compression left.",when:"The source is a JPEG, a screenshot or a photo of a mark, and its flat colours come back speckled or with extra shades.",costs:"About 0.6 s per full trace, and a one-time download. Drafts skip it.",learn:["Intake and noise","algorithm/plain/01-intake.html"]},colours:{id:"colours",title:"Colours",does:"Shows every ink the trace found. Suggested groups are inks that are the same colour measured twice; grouping re-traces so the shapes between them join.",when:"The palette has near-duplicates, or more colours than the design has.",costs:"Fewer colours can merge a detail into its neighbour; the colour difference says when.",learn:["How the palette is found","algorithm/plain/03-palette.html"]},detail:{id:"detail",title:"Detail",does:"How closely curves follow the pixels, and how small a speck can be before it is dropped.",when:"Tighter for crests and filigree; looser for a smaller file with fewer nodes.",costs:"Tighter precision means more nodes and a bigger file; the readout above shows the trade.",learn:["Curve fitting","algorithm/plain/11-fitting.html"]},shape:{id:"shape",title:"Shape",does:"How the outlines are built: nodes an artist would place, fewer paths, one shape reused where it repeats, and what a curve or a corner costs the fit.",when:"The SVG will be edited by hand, or has to be as small as possible.",costs:"Editable nodes cost a little colour accuracy (about 0.04 dE00 on icons); the readout shows it here.",learn:["Symmetry and repeated shapes","algorithm/plain/10-symmetry.html"]},output:{id:"output",title:"Output",does:"How the file is written: the background, a margin around the drawing, and whether it is minified.",when:"Placing the SVG on a coloured page, or shipping it on the web.",costs:"None of these re-trace: they rewrite the same drawing.",learn:["Writing the SVG","algorithm/plain/13-emit.html"]}},zn={detail:["precision","speckleFloor"],shape:["editability","fewerPaths","matchRepeatedShapes","bezierCost","cornerAngle"],output:["transparentBackground","margin","minify"]},fa=[{preset:"logo",name:"Logo",why:"Flat colours and crisp shapes. The default."},{preset:"icon",name:"Icon",why:"A small flat mark: keeps one-pixel details, at most 16 colours."},{preset:"fine-detail",name:"Illustration or emoji",why:"Gradients and fine detail: curves fitted twice as closely."},{preset:"line-art",name:"Line art",why:"Even-width lines come back as strokes you can re-weight."},{preset:"black-and-white",name:"Black & white",why:"Two inks: stamps, signatures, scans of print."},{preset:"photo-or-scan",name:"Photo or scan",why:"JPEGs and screenshots: the denoiser cleans compression damage first.",note:"The draft is shown without the denoiser, which runs on the full trace."}];function ga(e){const n=e.state,s=!!n.caps?.denoiser.supported&&ms(n.source,n.facts);return["kind","cleanup","colours","detail","shape","output"].filter(o=>o!=="cleanup"||s)}function ma(e,n,s,o){let a=null,i=[],r=null,l=e.state.view,u="auto",d=null,p=null;const h=t("div.wizhead"),g=t("div.wizintro"),c=t("div.wizcontrols"),f=t("div.wizlive"),m=t("div.wizguide"),v=t("div.wizscroll",null,g,c,f,m),C=t("div.wiznav");ps(f,e);const b=()=>ga(e),k=()=>e.state.wizard?.step??"kind",$=x=>{x!==k()&&(k()==="kind"&&o.pause(),e.set({wizard:{step:x},hoverFill:null}),v.scrollTop=0)},M=()=>{const x=e.state.auto?.svg;return u!=="auto"||!x?null:(d?.svg!==x&&(d={svg:x,label:"Auto"}),d)},E=()=>e.set({compare:M()}),N=()=>{const x=e.state.auto?.svg;return x?(p?.svg!==x&&(p&&URL.revokeObjectURL(p.url),p={svg:x,url:URL.createObjectURL(new Blob([x],{type:"image/svg+xml"}))}),p.url):null},S=()=>{const x=b(),P=Math.max(0,x.indexOf(k())),T=at[k()],q=r!==null&&(e.state.preset!==r.preset||Te(e.state.caps,e.state.settings,r.settings).length>0||JSON.stringify(e.state.colourGroups)!==JSON.stringify(r.colourGroups));D(h,t("div.cardhead",null,t("span.eyebrow",null,`Custom · step ${P+1} of ${x.length}`),t("div",{style:{display:"flex",gap:"10px",alignItems:"baseline"}},q?t("button.reset",{"data-ctl":"wiz-undo",title:"Put every control and colour group back where they were when the wizard opened",onclick:()=>r&&s.restore(r)},"Undo my changes"):null,t("button.reset",{"data-ctl":"wiz-close",title:"Keep what is chosen so far (Esc)",onclick:()=>Ie(!0)},"Close"))),t("h2.wiztitle.serif",null,T.title),t("div.wizdots",{role:"tablist","aria-label":"Steps"},...x.map((j,_)=>t("button",{role:"tab","aria-selected":String(j===k()),"aria-label":`Step ${_+1}: ${at[j].title}`,title:at[j].title,class:_$(j)}))),t("div.wizcompare",null,t("span.muted",null,"Left pane"),t("div.seg",{role:"group","aria-label":"What the left pane shows"},t("button",{"aria-pressed":String(u==="auto"&&!!e.state.auto?.svg),disabled:!e.state.auto?.svg,title:e.state.auto?.svg?"Auto's trace, to compare yours with":"Auto's trace has not landed yet",onclick:()=>{u="auto",E(),S()}},"Auto's trace"),t("button",{"aria-pressed":String(u==="source"||!e.state.auto?.svg),onclick:()=>{u="source",E(),S()}},"Source"))))},A=()=>{const x=at[k()];D(g,t("p.wizlead",null,x.does)),D(m,t("dl.wizexplain",null,t("dt",null,"Change it when"),t("dd",null,x.when),t("dt",null,"What it costs"),t("dd",null,x.costs)),t("a.wizlearn",{href:pa+x.learn[1]},`Learn more: ${x.learn[0]} →`))},F=()=>{const x=b(),P=x.indexOf(k()),T=P===x.length-1;D(C,t("button.btn",{"data-ctl":"wiz-back",disabled:P<=0,onclick:()=>$(x[P-1])},"Back"),T?null:t("button.reset",{"data-ctl":"wiz-skip",title:"Keep what is chosen so far and go to the last step",onclick:()=>$(x[x.length-1])},"Skip to finish"),t("span",{style:{flex:"1"}}),T?t("button.btn",{"data-ctl":"wiz-export",disabled:!e.state.svg,onclick:()=>Ie(!0,!0)},"Export now"):null,T?t("button.btn.primary",{"data-ctl":"wiz-finish",onclick:()=>Ie(!0)},"Finish"):t("button.btn.primary",{"data-ctl":"wiz-next",onclick:()=>$(x[P+1])},"Next"))},W=()=>{if(!a)return;const x=b();if(!x.includes(k())){e.set({wizard:{step:x[Math.min(x.length-1,1)]}});return}S(),A(),F(),xe(),G()},V=x=>e.state.caps?.controls.find(P=>P.key===x),se=x=>{const P=s.baseSettings();return x.map(T=>V(T)).filter(T=>!!T).map(T=>ks(e,T,s,P))},xe=()=>{const x=document.activeElement instanceof HTMLElement&&c.contains(document.activeElement)?document.activeElement.getAttribute("data-ctl"):null,P=e.state,T=k();let q=[];T==="cleanup"?q=J():T==="colours"?q=se(P.facts?.hasAlpha?["maxColours","traceTransparency"]:["maxColours"]):T==="detail"?q=[ee(),...se(zn.detail??[])]:(T==="shape"||T==="output")&&(q=se(zn[T]??[])),D(c,...q),c.hidden=q.length===0,x&&c.querySelector(`[data-ctl="${x}"]`)?.focus({preventScroll:!0}),a&&S()},ee=()=>t("div.wizrow",null,t("span.label",null,"Compare as"),t("div.seg",{role:"group","aria-label":"How the two panes are arranged"},...["side","wipe"].map(x=>t("button",{"aria-pressed":String(e.state.view===x),"data-ctl":`wiz-view:${x}`,onclick:()=>e.set({view:x})},x==="side"?"Side by side":"Wipe")))),J=()=>{const x=e.state,P=x.caps?.denoiser,T=x.settings.cleanUpDamage,q=[x.source?.lossy?`the file is a ${x.source.container}, which stores colour approximately`:null,x.facts&&x.facts.noiseLevels>=gs?`its pixels measure ${x.facts.noiseLevels.toFixed(1)} levels of noise (a clean file reads about 0.5)`:null].filter(Boolean),j=(_,y,z)=>t("button.wizchoice",{"aria-pressed":String(T===_||_==="auto"&&T==="on"),"data-ctl":`wiz-cleanup:${_}`,onclick:()=>s.changeSetting("cleanUpDamage",_)},t("span.name",null,y),t("span.muted",null,z));return[q.length?t("p.wizwhy",null,`Offered because ${q.join(", and ")}.`):null,t("div.wizchoices",null,j("off","Off","Trace the pixels as they are, damage and all."),j("auto","Auto","Clean the damage first, where it is found.")),P&&!P.installed&&T!=="off"?t("div.wiznote",null,t("span",null,`The denoiser is not downloaded yet. It is a one-time download from ${P.repo}, checked against its SHA-256 on arrival, and it runs on this computer: the model comes down, your image never goes up. Until then the trace runs without it.`),t("button.btn.compact",{"data-ctl":"wiz-download",onclick:s.openDenoiser},"Download the denoiser…")):null,t("p.muted.wizsmall",null,"Left: Auto's trace, without it. Right: yours. It runs on the full trace only, so the right pane changes when the full trace lands, a moment after the draft.")].filter(_=>_!==null)};let Z=null;const G=()=>{const x=k();if(x==="kind"){Ce();return}Z=null;const P=e.state;x==="colours"?D(f,P.palette.length?hs(e,s):t("p.muted.wizsmall",null,"The palette appears when a trace lands."),t("p.muted.wizsmall",null,"Hover an ink or a group to single it out in the drawing on the right.")):x==="detail"||x==="shape"?D(f,te()):x==="output"?D(f,Q(),te()):D(f)},te=()=>{const x=e.state,P=x.auto?.report??null,T=x.report,q=x.result?.tier==="draft",j=y=>y?y.structure?.nodes||Math.round(y.coordinates/2):null,_=(y,z,L,I,O=!0,X=0)=>{const Y=z!==null&&L!==null&&!q&&!x.tracing?L-z:null,he=Y===null||Math.abs(Y)<=X?"same":Y<0===O?"better":"worse";return t("tr",null,t("th",null,y),t("td.num",null,z===null?"—":I(z)),t("td.num",null,L===null?"—":I(L)),t(`td.num.delta.${he}`,null,Y===null?"":Math.abs(Y)<=X?"same":`${Y<0?"−":"+"}${I(Math.abs(Y))}`))};return t("div.card.wizreadout",{"aria-live":"polite"},t("div.cardhead",null,t("span.eyebrow",null,"Auto · yours"),t("span.muted",{style:{fontSize:"11px"}},x.tracing?"tracing…":q?"draft; the full trace follows":"full traces")),t("table",null,t("thead",null,t("tr",null,t("th"),t("th",null,"Auto"),t("th",null,"Yours"),t("th"))),t("tbody",null,_("colour difference",P?.meanDe00??null,T?.meanDe00??null,y=>y.toFixed(2),!0,.005),_("nodes",j(P),j(T),ne),_("paths",P?.paths??null,T?.paths??null,ne),_("file size",P?.bytes??null,T?.bytes??null,ae,!0,16))),t("span.muted.wizsmall",null,"Colour difference in dE00: under 1 is invisible side by side."))},Q=()=>{const x=e.state,P=x.auto,T=P?Te(x.caps,P.settings,x.settings):[],q=(_,y)=>typeof y=="boolean"?y?"on":"off":typeof y=="number"?`${_.decimals?y.toFixed(_.decimals):Math.round(y)}${_.unit?` ${_.unit}`:""}`:String(y),j=x.caps?.presets.find(_=>_.id===x.preset);return t("div.card.wizchanges",null,t("span.eyebrow",null,"What you changed from Auto"),j&&P&&j.id!==P.preset?t("div.wizchange",null,t("span",null,"Preset"),t("span.num",null,j.name)):null,...T.map(_=>{const y=V(_);return!y||!P?null:t("div.wizchange",null,t("span",null,y.label),t("span.num",null,`${q(y,P.settings[_])} → ${q(y,x.settings[_])}`))}),x.colourGroups.length?t("div.wizchange",null,t("span",null,"Colour groups"),t("span.num",null,String(x.colourGroups.length))):null,!T.length&&!x.colourGroups.length&&!(j&&P&&j.id!==P.preset)?t("span.muted",null,"Nothing yet: this is Auto's trace."):t("span.muted.wizsmall",null,"Finish keeps these as ordinary settings, under Tune."))},oe=()=>{const x=e.state,P=x.auto,T=x.caps,q=new Set(nn(e).map(I=>I.preset)),j=x.colourGroups.length?{colourGroups:x.colourGroups}:{},_=P?ze({...P.settings,...j}):null,y=[];let z=null;for(const I of fa){const O=T?.presets.find(Y=>Y.id===I.preset);if(!O)continue;const X={...O.settings,...j};if(_&&ze(X)===_&&I.preset!=="photo-or-scan"&&z===null){z=I.name;continue}y.push({id:I.preset,name:I.name,why:I.why,note:I.note,settings:X,preset:I.preset,suggested:q.has(I.preset)})}return[{id:"auto",name:z?`${z} · Auto`:"As Auto traced",why:P?`Auto used ${ys(T,P.settings,P.preset)}.`:"Auto's trace.",settings:null,preset:null,suggested:!1},...y.filter(I=>I.suggested),...y.filter(I=>!I.suggested)]},ue=x=>{const P=e.state;if(x.id==="auto"){const T=P.auto;return!!T&&P.preset===T?.preset&&Te(P.caps,P.settings,T.settings).length===0}return P.preset===x.preset},ke=x=>{x.id==="auto"?s.backToAuto():x.preset&&s.setPreset(x.preset)},de=x=>{if(!x){E();return}const P=e.state;if(x.id==="auto"||Se(x)){P.auto?.svg&&e.set({compare:M()??{svg:P.auto.svg,label:"Auto"}});return}const T=x.settings?o.get(ze(x.settings)):void 0;T?.state==="done"&&e.set({compare:{svg:T.svg,label:`Preview · ${x.name} (draft)`}})},Se=x=>{const P=e.state.auto;if(!P||!x.settings)return!1;const T=e.state.colourGroups.length?{colourGroups:e.state.colourGroups}:{};return ze(x.settings)===ze({...P.settings,...T})},Ne=x=>{const P=e.state;if(x.id==="auto"||Se(x)){const q=P.auto?.report;return q?{url:N(),text:`${ie(q.meanDe00)} dE00 · ${ne(q.paths)} paths · ${ae(q.bytes)}`,busy:!1}:P.tracing?{url:null,text:"tracing…",busy:!0}:{url:null,text:"no trace yet",busy:!1}}const T=x.settings?o.get(ze(x.settings)):void 0;return!T||T.state==="queued"?{url:null,text:P.auto?.report?"queued":"after Auto",busy:!0}:T.state==="running"?{url:null,text:"tracing a draft…",busy:!0}:T.state==="failed"?{url:null,text:"no preview",busy:!1}:{url:T.url,text:`${ie(T.report.meanDe00)} dE00 · ${ne(T.report.paths)} paths · ${ae(T.report.bytes)}`,busy:!1}},Ce=()=>{const x=oe(),P=x.map(_=>_.id).join(",");if(!Z||Z.dataset.signature!==P){Z=t("div.kinds",{"data-signature":P,role:"radiogroup","aria-label":"What is it?"});for(const _ of x){const y=t("button.kind",{role:"radio","data-key":_.id,"data-ctl":`wiz-kind:${_.id}`,onclick:()=>ke(_),onpointerenter:()=>de(_),onpointerleave:()=>de(null),onfocus:()=>de(_),onblur:()=>de(null)},t("span.kthumb",null,t("img",{alt:"",draggable:"false"}),t("span.kspin")),t("span.kname",null,_.name,_.suggested?t("span.ksugg",null,"suggested"):null),t("span.kwhy",null,_.why),_.note?t("span.knote",null,_.note):null,t("span.kstat.num"));Z.append(y)}D(f,Z,t("p.muted.wizsmall.kqueue"))}const T=e.state;T.auto&&!T.auto.report&&T.tracing||o.want(x.filter(_=>_.settings&&!Se(_)).map(_=>({key:ze(_.settings),settings:_.settings})));for(const _ of x){const y=Z.querySelector(`[data-key="${_.id}"]`);if(!y)continue;const z=Ne(_),L=y.querySelector("img");z.url&&L.getAttribute("src")!==z.url&&(L.src=z.url),L.hidden=!z.url,y.classList.toggle("busy",z.busy),y.setAttribute("aria-checked",String(ue(_))),y.querySelector(".kstat").textContent=z.text}const q=o.pending(),j=f.querySelector(".kqueue");j&&(j.textContent=q?`Previews are small drafts of this image, traced one at a time behind the main trace · ${q} to go.`:"Previews are small drafts of this image. Hover one to see it large on the left; choose one and the full trace follows on the right.")};function ce(){if(a)return;if(!e.state.auto&&e.state.svg&&e.state.report&&!e.state.tracing){const T=e.state;e.set({auto:{generation:T.resultGeneration,settings:{...T.settings},preset:T.preset,svg:T.svg,report:T.report,palette:T.palette,losses:T.losses}})}const x=e.state;r={settings:{...x.settings},preset:x.preset,colourGroups:[...x.colourGroups]},l=x.view,u="auto",Z=null;const P=t("div.sheetbody.wizbody",null,h,v,C);a=t("div.sheet.wizsheet",null,P),n.classList.add("wizarding"),n.append(a),e.set({wizard:{step:b()[0]},chooser:!1,view:x.view==="ab"?"side":x.view,compare:M()}),x.prefs?.seenFirstRun||s.markSeen(),i=[e.on(["wizard","facts","caps","prefs"],W),e.on(["settings","preset","colourGroups","view"],()=>{xe(),(k()==="kind"||k()==="output")&&G()}),e.on(["report","result","tracing","palette","groupSuggestions","resultGroups","paletteSelection","simplifyTo","losses","auto","svg"],()=>{G(),(e.state.compare===null||e.state.compare===d||e.state.compare?.label==="Auto")&&E(),F()}),o.on(()=>{k()==="kind"&&G()}),e.on(["auto"],S)],W(),(C.querySelector("[data-ctl=wiz-next]")??P).focus?.()}function Ie(x=!1,P=!1){if(!a)return;for(const _ of i)_();i=[],o.pause(),a.remove(),a=null,Z=null,n.classList.remove("wizarding"),p&&URL.revokeObjectURL(p.url),p=null,d=null;const T=e.state,q=r!==null&&(T.preset!==r.preset||Te(T.caps,T.settings,r.settings).length>0||JSON.stringify(T.colourGroups)!==JSON.stringify(r.colourGroups)),j=T.auto?Te(T.caps,T.auto.settings,T.settings).length:0;e.set({wizard:null,compare:null,hoverFill:null,view:l,railTab:q?"tune":T.railTab}),r=null,x&&q&&H(j?`Custom settings kept: ${j} control${j===1?"":"s"} changed from Auto, all of them under Tune.`:"Custom settings kept. Everything is under Tune.",{kind:"good"}),P&&s.openExport()}return{open:ce,close:Ie,isOpen:()=>a!==null}}const Tn=4,En=24;function ya(e){const n={size:"1600x900",theme:"dark",fileName:!1,detail:!0,numbers:!0,zoom:12},s=t("img",{alt:"Preview of the comparison card",draggable:"false"}),o=t("div.cardstage",null,s,t("div.cardbusy",{"aria-hidden":"true"},t("span.cardspin"))),a=t("span.faint",{style:{fontSize:"11.5px"}});let i=0;const r=async()=>{const $=++i;o.classList.add("busy");try{const M=await Pn(e,n);if($!==i)return;s.src=M.toDataURL("image/png")}catch{$===i&&H("The card could not be drawn.",{kind:"bad"})}finally{$===i&&o.classList.remove("busy")}},l=()=>{const[$,M]=Ss(n.size);o.style.setProperty("--ar",String($/M)),a.textContent=`${$} × ${M} px · PNG · ${n.theme}`},u=[],d=()=>{u.forEach($=>$()),l(),r()},p=($,M,E)=>{const N=E.map(S=>t("button",{type:"button",role:"radio",onclick:()=>{n[$]=S.value,d()}},t("span",null,S.label),S.sub?t("small",null,S.sub):null));return u.push(()=>N.forEach((S,A)=>S.setAttribute("aria-checked",String(n[$]===E[A].value)))),Ln(M,t("div.cardseg",{role:"radiogroup","aria-label":M},...N))},h=($,M,E)=>{const N=t("span.switch"),S=t("button.optrow",{type:"button",role:"switch",onclick:()=>{n[$]=!n[$],d()}},t("span.optext",null,t("span.optlabel",null,M),t("span.optnote",null,E)),N);return u.push(()=>{S.setAttribute("aria-checked",String(n[$])),N.setAttribute("aria-checked",String(n[$]))}),S},g=t("span.num",null,`${n.zoom}×`),c=t("input.slider",{type:"range",min:String(Tn),max:String(En),step:"1",value:String(n.zoom),"aria-label":"Detail crop magnification",oninput:$=>{g.textContent=`${$.target.value}×`},onchange:$=>{n.zoom=Number($.target.value),d()}}),f=t("div.optslider",null,t("div.optsliderhead",null,t("span",null,"Detail magnification"),g),c,t("div.stops",null,t("span",null,`${Tn}×`),t("span",null,`${En}×`)));u.push(()=>{c.disabled=!n.detail,f.classList.toggle("off",!n.detail)});const m=($,M,E)=>async()=>{const N=$.lastChild?.textContent??"";$.disabled=!0,$.lastChild&&($.lastChild.textContent=M);try{await E()}finally{$.disabled=!1,$.lastChild&&($.lastChild.textContent=N)}},v=async()=>{const $=await Pn(e,n);return new Promise(M=>$.toBlob(M,"image/png"))},C=t("button.btn",{type:"button"},U("copy",15),t("span",null,"Copy image"));C.onclick=m(C,"Copying…",async()=>{const $=await v();if($)try{await navigator.clipboard.write([new ClipboardItem({"image/png":$})]),H("Card copied.",{kind:"good"})}catch{H("This system would not take an image on the clipboard; save it instead.",{kind:"bad"})}});const b=t("button.btn.primary",{type:"button"},U("download",15),t("span",null,"Download PNG"));b.onclick=m(b,"Saving…",async()=>{const $=e.state.source?.name.replace(/\.[^.]+$/,"")??"inkvec",M=await v();if(!M)return;const E=await as(`${$}-card.png`,new Uint8Array(await M.arrayBuffer()),[{name:"PNG",extensions:["png"]}]);E&&(le(),H(E.path?`Card saved to ${E.path}`:`Downloaded ${E.name}`,{kind:"good",action:kt(E.path)}))});const k=t("div.modal.composer",{tabindex:"-1"},t("div.composerhead",null,t("div",null,t("h2",null,"Save comparison card"),t("p",null,"The before and after on one poster, with the measurements behind it.")),t("button.btn.icon.ghost",{type:"button","aria-label":"Close",onclick:le},U("x",16))),t("div.composerbody",null,t("div.composerpreview",null,o,a),t("div.composerside",null,p("size","Format",[{value:"1600x900",label:"Landscape",sub:"1600 × 900"},{value:"1080x1080",label:"Square",sub:"1080 × 1080"}]),p("theme","Appearance",[{value:"dark",label:"Dark"},{value:"light",label:"Light"}]),Ln("On the card",t("div.optlist",null,h("numbers","The numbers","Colour difference, coordinates and file size."),h("detail","A zoomed detail","The vector edge cutting through the source's pixels."),f,h("fileName","The file name","Off by default, so unreleased work stays private."))),t("div.composeractions",null,b,C))));qe(k),d()}function Ln(e,n){return t("div.optgroup",null,t("span.eyebrow",null,e),n)}function Ss(e){return e==="1600x900"?[1600,900]:[1080,1080]}async function Pn(e,n){const[s,o]=Ss(n.size),a=document.createElement("canvas");a.width=s,a.height=o;const i=a.getContext("2d");if(!i)return a;const r=n.theme==="dark",l=r?"#1a1816":"#faf8f5",u=r?"#faf8f5":"#1a1816",d=r?"rgba(250,248,245,.4)":"rgba(26,24,22,.46)",p=r?"rgba(250,248,245,.55)":"rgba(26,24,22,.58)",h=r?"#c9754a":"#9c5730",g=r?"#26231f":"#ffffff",c=r?"#211f1c":"#e8e3db";await Promise.all([document.fonts.load('500 20px "Playfair Studio"'),document.fonts.load('400 20px "Inter Studio"'),document.fonts.load('500 20px "Inter Studio"')]).catch(()=>{}),i.fillStyle=l,i.fillRect(0,0,s,o);const f=i.createRadialGradient(s*.2,-o*.1,0,s*.2,-o*.1,s*.6);f.addColorStop(0,"rgba(201,117,74,.16)"),f.addColorStop(1,"rgba(201,117,74,0)"),i.fillStyle=f,i.fillRect(0,0,s,o);const m=Math.round(s*.042),v=n.size==="1080x1080",C=v?s-m*2:Math.round(s*.46);i.fillStyle=d,i.font=`500 ${Math.round(s*.0105)}px "Inter Studio", Inter, sans-serif`,i.letterSpacing="3px",i.fillText("PNG TRACED TO SVG",m,m+14),i.letterSpacing="0px",i.fillStyle=u;const b=Math.round(s*(v?.05:.039));i.font=`500 ${b}px "Playfair Studio", Georgia, serif`,i.fillText("A logo, measured",m,m+b+26),i.fillText("rather than guessed.",m,m+b*2+30);let k=m+b*2+96;n.fileName&&e.state.source&&(i.fillStyle=p,i.font=`400 ${Math.round(s*.013)}px "Inter Studio", Inter, sans-serif`,i.fillText(e.state.source.name,m,k),k+=40);const $=e.state.report;if(n.numbers&&$){const ee=[[ie($.meanDe00),"mean dE00"],[ne($.coordinates),"coordinates"],[`${($.bytes/1024).toFixed(1)} KB`,"SVG"]];let J=m;for(const[Z,G]of ee.slice(0,v?2:3)){i.fillStyle=Z===ie($.meanDe00)?h:u;const te=Math.round(s*.026);i.font=`500 ${te}px "Playfair Studio", Georgia, serif`,i.fillText(Z,J,k+te),i.fillStyle=d,i.font=`400 ${Math.round(s*.0085)}px "Inter Studio", Inter, sans-serif`,i.fillText(G,J,k+te+20),J+=Math.max(i.measureText(G).width,120)+Math.round(s*.05)}}i.fillStyle=p,i.font=`400 ${Math.round(s*.0095)}px "Inter Studio", Inter, sans-serif`,i.fillText("traced with Inkvec Studio · by LogoLabs",m,o-m);const M=v?m:m+C,E=s-M-m,N=v?Math.round(o*.42):m,S=Math.round(v?o*.3:o*.44),A=(ee,J,Z,G)=>{for(let Q=0;Q*14{i.save(),i.beginPath(),i.rect(J,N,F,S),i.clip(),A(J,N,F,S);const te=await Pt(ee),Q=Math.min((F-40)/te.width,(S-40)/te.height),oe=te.width*Q,ue=te.height*Q;i.drawImage(te,J+(F-oe)/2,N+(S-ue)/2,oe,ue),i.restore(),i.fillStyle=G,i.font=`500 ${Math.round(s*.0085)}px "Inter Studio", Inter, sans-serif`,i.letterSpacing="2px",i.fillText(Z,J+12,N+22),i.letterSpacing="0px"};if(W&&await xe(W.preview,M,W.container.toUpperCase(),d),se&&await xe(se.url,M+F+12,"SVG",h),n.detail&&W&&se){const ee=N+S+14,J=o-ee-m-40;if(J>60){const Z=e.state.worstCorner,G=n.zoom,te=Z?.x??se.w/2,Q=Z?.y??se.h/2,oe=M+E/2-te*G,ue=ee+J/2-Q*G;i.save(),i.beginPath(),i.rect(M,ee,E,J),i.clip(),i.fillStyle=r?"#141210":"#f0ece6",i.fillRect(M,ee,E,J);const ke=await Pt(W.preview);i.imageSmoothingEnabled=!1,i.drawImage(ke,oe,ue,se.w*G,se.h*G),i.imageSmoothingEnabled=!0,i.strokeStyle=r?"rgba(250,248,245,.09)":"rgba(26,24,22,.12)",i.lineWidth=1;const de=(oe%G+G)%G,Se=(ue%G+G)%G;for(let ce=M+de;ce0&&i[3]>0&&(n=i[2],s=i[3]),a.setAttribute("width",String(n)),a.setAttribute("height",String(s)),o=new XMLSerializer().serializeToString(a)}return{url:`data:image/svg+xml;charset=utf-8,${encodeURIComponent(o)}`,w:n,h:s}}function Pt(e){return new Promise((n,s)=>{const o=new Image;o.onload=()=>n(o),o.onerror=s,o.src=e})}const Dn=[512,1024,2048];function Nn(e,n){const s=e.state;return!s.svg||!s.report?null:{svg:s.svg,report:{meanDe00:s.report.meanDe00,coordinates:s.report.coordinates,paths:s.report.paths,tracedPx:s.report.tracedPx},palette:s.palette.map(o=>o.kind==="gradient"?{hex:o.hex,traced:o.traced,share:o.share,stops:o.stops}:{hex:o.hex,traced:o.traced,share:o.share}),losses:s.losses.map(o=>({text:o.text})),formats:n}}function $s(e,n,s){const o={svg:!0,svgMinified:!0,pngSizes:[...Dn],favicon:!1,assetPack:!0};let a=[],i=e.state.prefs?.outputFolder??null;const r=t("div.sheetbody"),l=t("div.sheet",{onmousedown:c=>{c.target===l&&u()}});l.append(r);const u=()=>{l.remove(),e.set({exportOpen:!1})},d=c=>a.filter(f=>f.group===c).reduce((f,m)=>f+m.bytes,0),p=async()=>{const c=Nn(e,o);if(c){try{a=await B.planExport(c)}catch(f){a=[],H(String(f),{kind:"bad"})}g()}},h=(c,f,m,v)=>t("button.format",{onclick:v,"aria-pressed":String(m)},t("span.checkbox",{"aria-checked":String(m)},U("check",11)),t("span",null,c),t("span.size",null,m?ae(d(f)):"—"));function g(){const c=a.reduce((f,m)=>f+m.bytes,0);D(r,t("div.cardhead",null,t("span.serif",{style:{fontSize:"19px"}},"Export"),t("button.reset",{onclick:u},"Close")),h("SVG","svg",o.svg,()=>{o.svg=!o.svg,p()}),h("SVG (minified)","svgMinified",o.svgMinified,()=>{o.svgMinified=!o.svgMinified,p()}),h("PNG · 512 / 1024 / 2048","png",o.pngSizes.length>0,()=>{o.pngSizes=o.pngSizes.length?[]:[...Dn],p()}),h("ICO and favicon set","favicon",o.favicon,()=>{o.favicon=!o.favicon,p()}),h("Asset pack (.zip)","assetPack",o.assetPack,()=>{o.assetPack=!o.assetPack,p()}),t("div.format",{style:{cursor:"default"}},t("span.muted",{style:{fontSize:"11px"}},"To"),t("span",{style:{flex:"1"}},a.length>1?"Your downloads, as one .zip":"Your downloads")),t("button.btn.primary",{disabled:!a.length,onclick:async()=>{let f=i;f="",u(),await s();const m=Nn(e,o);if(m)try{const v=await B.writeExport(m,f??"");H(Mn?`${v.length} file${v.length===1?"":"s"} written to ${f}`:`Downloaded ${v[0]??"the export"}`,{kind:"good",action:kt(Mn?v[0]??null:null)})}catch(v){H(String(v),{kind:"bad"})}}},a.length?`Download ${a.length} file${a.length===1?"":"s"} · ${ae(c)}`:"Nothing selected"))}e.set({exportOpen:!0}),n.append(l),g(),p()}function et(){return va()}function wa(){try{return window.self!==window.top}catch{return!0}}function va(){const e=t("button.btn.ghost.compact.fullscreen",{"data-ctl":"fullscreen",title:"Fill the screen (Esc to leave)",onclick:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(()=>o())}},U("maximize",14),t("span",null,"Full screen")),n=e.querySelector("span"),s=()=>{n&&(n.textContent=document.fullscreenElement?"Exit full screen":"Full screen")};document.addEventListener("fullscreenchange",s);const o=()=>window.open(window.location.href,"_blank","noopener"),a=wa()?t("button.btn.ghost.compact",{"data-ctl":"own-tab",title:"The same app at its own address, with the whole window",onclick:o},U("external",14),t("span",null,"Open in its own tab")):null;return t("div.webcontrols",null,document.fullscreenEnabled?e:null,a)}const In="https://logolabs.github.io/inkvec/studio/",Dt="./guide/";function Ms(e){if(e.screen==="settings")return"settings.html";switch(e.tab){case"minify":return"minify.html";case"fabricate":return"fabricate.html";case"batch":return"batch.html";default:return e.source?e.wizard?"getting-started.html#the-custom-wizard":e.railTab==="tune"?"tune.html":"result.html":"getting-started.html"}}function Nt(e){Ys()?lo(e).catch(()=>H("Could not open the link in your browser.",{kind:"bad"})):window.open(e,"_blank","noopener")}let Ee=null;function sn(e="index.html"){if(Ee){Ee.querySelector("iframe")?.setAttribute("src",Dt+e);return}const n=t("iframe",{title:"Inkvec Studio user guide",src:Dt+e,style:{flex:"1",width:"100%",border:"0",background:"var(--stage)"}}),s=t("div.screenbody",{style:{display:"flex",overflow:"hidden"}},n),o=()=>{try{const a=n.contentWindow?.location,i=a?a.pathname.indexOf("/guide/"):-1;if(a&&i>=0)return a.pathname.slice(i+7)+a.hash}catch{}return""};Ee=t("div.screen",{role:"dialog","aria-label":"User guide"},t("div.screenbar",{"data-tauri-drag-region":""},t("span",{style:{fontSize:"12.5px",fontWeight:"600"}},"User guide"),t("div.spacer"),t("button.btn.compact.ghost",{onclick:()=>n.setAttribute("src",Dt+"index.html")},"Contents"),t("button.btn.compact.ghost",{title:"The same page on logolabs.github.io, in your browser",onclick:()=>Nt(In+o())},"Open in browser"),t("button.btn.compact",{onclick:Rt},"Done"),t("div.sep"),et()),s),n.addEventListener("load",()=>{const a=n.contentDocument;if(!a||!a.querySelector('meta[name="inkvec-guide"]')){D(s,t("div.firstrun",null,t("span.serif",{style:{fontSize:"22px"}},"The guide is not bundled with this build"),t("span.faint",{style:{maxWidth:"46ch",textAlign:"center"}},"The same guide is published online."),t("button.btn.primary",{onclick:()=>Nt(In)},"Open the online guide")));return}a.addEventListener("keydown",i=>{i.key==="Escape"&&Rt(),i.key==="F1"&&i.preventDefault()}),a.addEventListener("click",i=>{const l=i.target?.closest?.("a[href]")?.getAttribute("href")??"";/^(https?:|mailto:)/i.test(l)&&(i.preventDefault(),Nt(l))})}),window.addEventListener("keydown",Cs,!0),(document.getElementById("app")??document.body).append(Ee)}function Rt(){window.removeEventListener("keydown",Cs,!0),Ee?.remove(),Ee=null}function Cs(e){e.stopImmediatePropagation(),(e.key==="Escape"||e.key==="F1")&&(e.preventDefault(),e.key==="Escape"&&Rt())}function xa(e){window.addEventListener("keydown",n=>{n.key!=="F1"||Ee||(n.preventDefault(),sn(Ms(e.state)))})}const it=30,_n=8;function ka(e){const n=t("div.batchbar"),s=t("div.batchhead.eyebrow"),o=t("div.batchviewport"),a=t("div.batchfoot"),i=t("section.stage",{style:{background:"var(--paper)"}},n,s,o,a),r=t("div"),l=t("div"),u=t("div");o.append(r,l,u);const d=()=>{const b=e.state.batch;return b.failuresFirst?[...b.rows].sort((k,$)=>+($.state==="failed")-+(k.state==="failed")):b.rows},p=()=>t("div.firstrun",{style:{minHeight:"100%",background:"transparent"}},t("div.drop",null,t("span.glyph",null,U("folder",32)),t("div",{style:{display:"flex",flexDirection:"column",gap:"6px"}},t("span.headline",null,"Trace a whole folder"),t("span.faint",{style:{fontSize:"13px",maxWidth:"46ch"}},"Every PNG, JPEG and WebP in it becomes an SVG in the output folder. A row that fails stays listed after the run.")),t("button.btn.primary",{onclick:()=>void c()},"Choose a folder…"))),h=()=>{const b=d();if(s.hidden=b.length===0,!b.length){r.style.height="0px",u.style.height="0px",D(l,p());return}const k=o.scrollTop,$=Math.ceil(o.clientHeight/it)+_n*2,M=Math.max(0,Math.floor(k/it)-_n),E=b.slice(M,M+$);r.style.height=`${M*it}px`,u.style.height=`${Math.max(0,(b.length-M-E.length)*it)}px`,D(l,...E.map(N=>Sa(N,e,()=>e.touch("batch"))))};o.addEventListener("scroll",h,{passive:!0});const g=async()=>{const b=await io({directory:!0,multiple:!1});return typeof b=="string"?b:null},c=async()=>{const b=await g();if(b)try{const k=await B.batchScan(b),$=e.state.batch;$.folder=b,$.outputDir??=`${b}${b.includes("\\")?"\\":"/"}svg`,$.rows=k.map((M,E)=>({id:E,path:M,file:M.split(/[\\/]/).pop()??M,preset:$.preset,state:"queued",de00:null,coordinates:null,outBytes:null,destination:"",message:null,seconds:null})),$.totals=null,e.touch("batch")}catch(k){H(String(k),{kind:"bad"})}},f=async()=>{const b=e.state.batch;if(!b.folder||!b.outputDir){H("Choose a folder of images and an output folder first.");return}b.running=!0,b.paused=!1,e.touch("batch");try{await B.batchStart({files:b.rows.map(k=>k.path),preset:b.preset,overrides:b.rows.filter(k=>k.preset!==b.preset).map(k=>[k.id,k.preset]),outputDir:b.outputDir,skipExisting:b.skipExisting})}catch(k){b.running=!1,e.touch("batch"),H(String(k),{kind:"bad"})}},m=()=>{const b=e.state.batch,k=e.state.caps?.presets??[],$=(M,E,N)=>t("button.btn.compact",{onclick:E,title:null},M);D(n,t("select",{style:{height:"28px",padding:"0 8px",borderRadius:"7px",border:"1px solid var(--rule2)",background:"var(--card)",color:"var(--ink)",font:"400 12px var(--font-body)"},"aria-label":"Preset for all",onchange:M=>{const E=M.target.value;b.preset=E;for(const N of b.rows)N.state==="queued"&&(N.preset=E);e.touch("batch")}},...k.map(M=>t("option",{value:M.id,selected:b.preset===M.id?"":null},`Preset for all · ${M.name}`))),$(b.folder?`Input · ${b.folder}`:"Choose a folder…",()=>void c()),$(b.outputDir?`Output · ${b.outputDir}`:"Output folder…",async()=>{const M=await g();M&&(b.outputDir=M,e.touch("batch"))}),t("button.btn.compact",{"aria-pressed":String(b.skipExisting),onclick:()=>{b.skipExisting=!b.skipExisting,e.touch("batch")}},"Skip existing"),t("div.spacer"),t("button.btn.compact",{"aria-pressed":String(b.failuresFirst),disabled:!b.rows.some(M=>M.state==="failed"),onclick:()=>{b.failuresFirst=!b.failuresFirst,e.touch("batch")}},"Failures first"),b.running?$(b.paused?"Resume":"Pause",()=>{b.paused=!b.paused,B.batchPause(b.paused),e.touch("batch")}):null,b.running?$("Cancel",()=>void B.batchCancel()):t("button.btn.primary.compact",{disabled:!b.rows.length,onclick:()=>void f()},"Start")),D(s,t("span"),t("span",null,"File"),t("span",null,"Preset"),t("span",null,"Status"),t("span.right",null,"dE00"),t("span.right",null,"Coordinates"),t("span.right",null,"Output"),t("span",null,"Destination"))},v=()=>{const b=e.state.batch,k=b.totals,$=k?.finished??0,M=k?.total??b.rows.length,E=k&&k.sourceBytes>0?1-k.bytesWritten/k.sourceBytes:null;D(a,t("div",{style:{flex:"1",maxWidth:"420px",display:"flex",flexDirection:"column",gap:"6px"}},t("div",{style:{display:"flex",justifyContent:"space-between",color:"var(--faint)"}},t("span",null,M?`${$} of ${M} done${k?.failed?` · ${k.failed} failed`:""}`:"Nothing queued"),t("span",null,k?.remaining!=null?`${so(k.remaining)} left`:"")),t("div.progress",null,t("i",{style:{width:ve(M?$/M:0)}}))),k?t("span.faint",null,`mean dE00 ${ie(k.meanDe00)} · ${ae(k.bytesWritten)} written${E!==null?` · ${ve(E)} smaller than source`:""}`):null,t("button.reset",{style:{marginLeft:"auto"},disabled:!b.rows.some(N=>N.state!=="queued"),onclick:async()=>{const N=await B.batchStatsCsv(),S=await ro({defaultPath:"stats.csv",filters:[{name:"CSV",extensions:["csv"]}]});S&&(await B.saveBytes(S,[...new TextEncoder().encode(N)]),H(`Stats written to ${S}`,{kind:"good",action:{label:"Show in folder",run:()=>void co(S)}}))}},"Export stats.csv"))},C=()=>{m(),v(),h()};return e.on(["batch","caps"],C),C(),i}function Sa(e,n,s){const o=e.state==="failed"?".failed":e.state==="running"?".running":"",a=e.state==="queued",i=t(`button.reset${a?"":".muted"}`,{style:{textAlign:"left",color:a?"var(--dim)":"var(--muted)"},disabled:!a,title:a?"Use a different preset for this file":"Already run",onclick:()=>$a(i,e,n,s)},Ma(e.preset));return t(`div.batchrow${o}`,{title:e.message??e.path},t("span",{style:{width:"14px",height:"14px",borderRadius:"4px",background:"var(--surface)",display:"block"}}),t("span.trunc.dim",null,e.file),i,t(`span.state.${e.state}`,null,t("i"),e.state),t("span.right",{class:e.de00===null?"muted":"dim"},e.de00===null?"—":ie(e.de00)),t("span.right.faint",null,e.coordinates===null?"—":ne(e.coordinates)),t("span.right.faint",null,e.outBytes===null?"—":ae(e.outBytes)),t("span.trunc.muted",null,e.message??e.destination))}function $a(e,n,s,o){const a=s.state.caps?.presets??[];Jt(e,t("div.menu",null,...a.map(i=>t("button.item",{onclick:()=>{const r=s.state.batch.rows.find(l=>l.id===n.id);r&&(r.preset=i.id),le(),o()}},t("span",{style:{flex:"1"}},i.name),t("span.when",null,i.id===n.preset?"current":i.subtitle)))))}function Ma(e){return e.split("-").map((n,s)=>s===0?n[0].toUpperCase()+n.slice(1):n).join(" ")}function Ca(e){const n=t("div.pane",null,t("span.eyebrow.panelabel",null,"Before")),s=t("div.pane",null,t("span.eyebrow.panelabel",null,"After")),o=t("div.wipehandle",{role:"separator","aria-label":"Wipe"}),a=t("div.panes",null,n,s,o),i=t("div.viewertools"),r=t("section.stage",null,i,a);let l="side",u=.5,d=!1,p="auto",h=null,g=null;const c=()=>{const S=p==="auto"?h:p;a.classList.toggle("onlight",S==="light"),a.classList.toggle("ondark",S==="dark")},f=()=>{if(a.classList.toggle("stacked",l!=="side"),o.style.display=l==="wipe"?"":"none",l==="side")n.classList.remove("hidden"),s.classList.remove("hidden"),n.style.clipPath="",s.style.clipPath="";else if(l==="wipe"){n.classList.remove("hidden"),s.classList.remove("hidden");const S=`${(u*100).toFixed(2)}%`;o.style.left=S,n.style.clipPath=`inset(0 ${(100-u*100).toFixed(2)}% 0 0)`,s.style.clipPath=`inset(0 0 0 ${S})`}else n.style.clipPath="",s.style.clipPath="",n.classList.toggle("hidden",!d),s.classList.toggle("hidden",d)};o.addEventListener("pointerdown",S=>{o.setPointerCapture(S.pointerId);const A=W=>{const V=a.getBoundingClientRect();u=Math.min(.98,Math.max(.02,(W.clientX-V.left)/V.width)),f()},F=()=>{o.removeEventListener("pointermove",A),o.removeEventListener("pointerup",F)};o.addEventListener("pointermove",A),o.addEventListener("pointerup",F)}),window.addEventListener("keydown",S=>{e.state.tab!=="minify"||e.state.screen||S.key!==" "||S.repeat||S.target instanceof HTMLInputElement||S.target instanceof HTMLTextAreaElement||(S.preventDefault(),d=!0,f())}),window.addEventListener("keyup",S=>{S.key===" "&&d&&(d=!1,f())});const m=()=>{const S=e.state.minify,A=S.result;D(i,t("div.seg",null,...["side","wipe","ab"].map(F=>t("button",{"aria-pressed":String(l===F),disabled:!S.before,onclick:()=>{l=F,f(),m()}},F==="side"?"Side by side":F==="wipe"?"Wipe":"A/B"))),t("span.muted",{style:{fontSize:"11.5px"}},"hold ",t("kbd",null,"Space")," to flick"),t("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginLeft:"12px"}},t("span.muted",{style:{fontSize:"11.5px"}},"Backdrop"),t("div.seg",{role:"group","aria-label":"Backdrop"},...["auto","light","dark"].map(F=>t("button",{"aria-pressed":String(p===F),disabled:!S.before,onclick:()=>{p=F,c(),m()}},F==="auto"?"Auto":F==="light"?"Light":"Dark")))),t("span.muted",{style:{marginLeft:"auto",fontSize:"11.5px"}},A?`Nothing moved more than ${S.settings.tolerancePx} px${A.differenceDe00===null?"":` · measured ${ie(A.differenceDe00)} dE00`}`:""))},v=t("aside.minifyrail"),C=t("div",{style:{flex:"1",minHeight:"0",display:"flex"}},r,v);let b=0;const k=async()=>{const S=e.state.minify;if(!S.before)return;const A=++b;try{const F=await B.minify(S.before,S.settings);if(A!==b)return;e.state.minify.result=F,e.state.minify.error=null}catch(F){if(A!==b)return;e.state.minify.result=null,e.state.minify.error=String(F)}e.touch("minify")},$=async()=>{const[S]=await Vt([{name:"SVG",extensions:["svg"]}]);if(S)try{const A=await gt(S);e.state.minify.name=S.name,e.state.minify.before=A,e.state.minify.result=null,e.state.minify.error=null,e.touch("minify"),await k()}catch(A){H(String(A),{kind:"bad"})}},M=async S=>{if(!S.name.toLowerCase().endsWith(".svg"))return!1;const A=await gt(S);return e.state.minify.name=S.name,e.state.minify.before=A,e.touch("minify"),await k(),!0};C.acceptDropped=M;const E=()=>t("div.drop.solid",null,t("span.glyph",null,U("file",32)),t("div",{style:{display:"flex",flexDirection:"column",gap:"6px"}},t("span.headline",null,"Drop an SVG here"),t("span.faint",{style:{fontSize:"13px"}},"or choose one to rewrite it in the fewest segments")),t("button.btn.primary",{onclick:$},"Open an SVG")),N=()=>{const S=e.state.minify,A=S.result;if(m(),f(),D(n,t("span.eyebrow.panelabel",null,`Before${A?` · ${ae(A.bytesBefore)}`:""}`),S.before?_e(S.before):E()),D(s,t("span.eyebrow.panelabel",null,`After${A?` · ${ae(A.bytesAfter)}`:""}`),A?_e(A.svg):S.before?null:t("span.faint.panehint",null,"The rewritten drawing appears here, on the same ground, so nothing can hide.")),S.before!==g){const W=S.before;g=W,h=null,c(),W&&Ta(W).then(V=>{g===W&&(h=V,c())})}if(!S.before){D(v,t("div.railscroll",{style:{justifyContent:"center",alignItems:"center",textAlign:"center",gap:"16px"}},t("span.serif",{style:{fontSize:"20px"}},"Minify an SVG"),t("span.faint",{style:{fontSize:"12.5px",lineHeight:"1.6",maxWidth:"30ch"}},"From Illustrator, Figma, a stock site — anything. It gets rewritten with the fewest segments that draw the same picture, and the result appears as you open it.")));return}const F=A?1-A.bytesAfter/Math.max(1,A.bytesBefore):0;D(v,t("div.railscroll",{style:{gap:"20px",padding:"22px 20px"}},S.error?t("div.card",null,t("span.eyebrow",null,"This file would not parse"),t("span.faint",{style:{fontSize:"12.5px",lineHeight:"1.6"}},S.error)):t("div.minifyresult",null,t("span.eyebrow",null,A?`Result · ${Ae((A.ms??0)/1e3)}`:"Working"),t("div",{style:{display:"flex",alignItems:"baseline",gap:"10px"}},t("span.figure",null,A?ve(F):"—"),t("span.dim",{style:{fontSize:"14px",paddingBottom:"6px"}},"smaller")),A?t("span.faint.num",{style:{fontSize:"13px"}},`${ae(A.bytesBefore)} → ${ae(A.bytesAfter)}`):null),A?t("div.stats",null,...[["numbers before",ne(A.numbersBefore)],["numbers after",ne(A.numbersAfter)],["paths",`${A.pathsBefore} → ${A.pathsAfter}`],["segments",`${ne(A.segmentsBefore)} → ${ne(A.segmentsAfter)}`],["difference",A.differenceDe00===null?"—":`${ie(A.differenceDe00)} dE00`],["kept as drawn",`${A.guarded} run${A.guarded===1?"":"s"}`]].map(([W,V])=>t("div",null,t("span.k",null,W),t("span.v",null,V)))):null,Aa(e,k),t("div.card",null,t("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},t("span.dim",{style:{fontSize:"12.5px"}},"Corner threshold"),(()=>{const W=t("span.num.faint",{style:{fontSize:"12px",width:"34px"}},`${S.settings.cornerDegrees}°`);return t("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},t("input.slider",{type:"range",min:"5",max:"90",step:"1",style:{width:"120px"},value:String(S.settings.cornerDegrees),"aria-label":"Corner threshold in degrees",oninput:V=>{W.textContent=`${V.target.value}°`},onchange:V=>{S.settings.cornerDegrees=Number(V.target.value),e.touch("minify"),k()}}),W)})()),t("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},t("span.dim",{style:{fontSize:"12.5px"}},"Document cleanup"),t("button.switch",{role:"switch","aria-checked":String(S.settings.documentCleanup),"aria-label":"Document cleanup",onclick:()=>{S.settings.documentCleanup=!S.settings.documentCleanup,e.touch("minify"),k()}})),t("span.muted",{style:{fontSize:"11.5px",lineHeight:"1.5"}},"Removes ids, groups, editor metadata and trailing zeros. Same geometry.")),A&&A.removed.length?t("div",{style:{display:"flex",flexDirection:"column",gap:"7px"}},t("span.eyebrow",null,"Removed"),...A.removed.map(W=>t("div",{style:{display:"flex",alignItems:"baseline",gap:"10px",fontSize:"12px"}},t("span.faint",{style:{flex:"1"}},W.what),t("span.dim.num",null,W.amount)))):null),t("div.railfoot",null,S.before?t("button.btn.ghost",{style:{justifyContent:"flex-start",gap:"8px"},title:"Minifying keeps every path the file has. Re-tracing draws the file again from its render: stacked or translucent paths, broken outlines and thousands of nodes come back as a few clean shapes, and the report measures the result against the original.",onclick:()=>window.dispatchEvent(new CustomEvent("inkvec:retrace",{detail:{svg:S.before,name:S.name??"drawing.svg"}}))},U("wand",14),"Rebuild it clean by re-tracing"):null,t("div.row",null,t("button.btn.primary",{style:{flex:"1"},disabled:!A,onclick:async()=>{if(!A)return;const W=(S.name??"drawing").replace(/\.svg$/i,""),V=await as(`${W}.min.svg`,A.svg);V&&H(V.path?`Saved to ${V.path}`:`Downloaded ${V.name}`,{kind:"good",action:kt(V.path)})}},"Download SVG"),t("button.btn",{disabled:!A,onclick:async()=>{A&&(await vt(A.svg),H("SVG copied. Paste straight into Figma or Illustrator."))}},"Copy"),t("button.btn",{onclick:$},"Open…"))))};return e.on(["minify"],N),N(),C}function Aa(e,n){const s=e.state.minify,o=(r,l,u)=>t("input",{class:`inlinefield${l?" accent":""}`,type:"text",inputmode:"decimal",value:String(r),onchange:d=>{const p=Number(d.target.value);Number.isFinite(p)&&p>0&&(u(p),e.touch("minify"),n())}}),a=o(s.settings.tolerancePx,!0,r=>s.settings.tolerancePx=r),i=r=>{const l=Number(r.value)/1e3;return Number((l*l).toFixed(3))};return t("div.card",null,t("span.sentence",null,"Nothing moves more than ",a," px when the drawing is ",o(s.settings.judgePx,!1,r=>s.settings.judgePx=r)," px wide."),t("input.slider",{type:"range",min:"0",max:"1000",step:"1",value:String(Math.round(Math.sqrt(Math.min(1,s.settings.tolerancePx))*1e3)),"aria-label":"Tolerance",oninput:r=>{a.value=String(i(r.target))},onchange:r=>{s.settings.tolerancePx=i(r.target),e.touch("minify"),n()}}),t("div.stops",null,t("span",null,"exact"),t("span",null,"gentle"),t("span",null,"aggressive")))}function _e(e){const n=t("div.art.centred"),s=As(e);return s&&(s.setAttribute("width","100%"),s.setAttribute("height","100%"),n.append(s)),n}function za(e){const n=(e.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return n.length===4&&n.every(Number.isFinite)&&n[2]>0&&n[3]>0?[n[0],n[1],n[2],n[3]]:null}function As(e){const n=new DOMParser().parseFromString(e,"image/svg+xml"),s=n.documentElement;if(!s||s.nodeName!=="svg"||n.querySelector("parsererror"))return null;const o=document.importNode(s,!0);if(za(o))return o;const a=o.getAttribute("width")??"",i=o.getAttribute("height")??"",r=parseFloat(a),l=parseFloat(i);if(r>0&&l>0&&!a.includes("%")&&!i.includes("%"))return o.setAttribute("viewBox",`0 0 ${r} ${l}`),o;const u=document.createElement("div");u.style.cssText="position:absolute;visibility:hidden;width:0;height:0;overflow:hidden",o.setAttribute("width","1"),o.setAttribute("height","1"),u.append(o),document.body.append(u);try{const d=o.getBBox();if(d.width>0&&d.height>0){const p=Math.max(d.width,d.height)*.02;o.setAttribute("viewBox",`${d.x-p} ${d.y-p} ${d.width+2*p} ${d.height+2*p}`)}else o.setAttribute("viewBox","0 0 100 100")}catch{o.setAttribute("viewBox","0 0 100 100")}finally{u.remove()}return o}async function Ta(e){const n=As(e);if(!n)return null;const s=64;n.setAttribute("width",String(s)),n.setAttribute("height",String(s));const o=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(n))}`;try{const a=await new Promise((h,g)=>{const c=new Image;c.onload=()=>h(c),c.onerror=g,c.src=o}),i=document.createElement("canvas");i.width=s,i.height=s;const r=i.getContext("2d",{willReadFrequently:!0});if(!r)return null;r.drawImage(a,0,0,s,s);const l=r.getImageData(0,0,s,s).data;let u=0,d=0;for(let h=0;h.8?"dark":null}catch{return null}}const me=25.4,Fn=[["singleColour","One colour","Everything chosen, joined into one sheet of one material."],["layered","Layered","One sheet per colour. Each runs under the colours above it by the bleed, so the stack has no gaps; registration marks line the sheets up."],["inlay","Inlay","One sheet per colour, cut exactly, laid edge to edge. Thinner, but unforgiving to line up."],["sticker","Sticker","The artwork with a contour around it, to print and then cut."],["stencil","Stencil","A sheet with the artwork cut out. Counters that would fall out, like the middle of an O, are held by thin bridges."],["lines","Lines","For a pen, a scoring blade or a laser line: every line in the drawing is followed once, along its centre, instead of round both of its edges. Strokes in the file are used as drawn; lines inside filled shapes are found and checked against the shape."]],On=[["mm","Millimetres","Exact by the SVG standard, and read correctly by most programs. If yours imports at the wrong size, choose the pixel rate it uses."],["px96","Pixels, 96/in","The CSS pixel: Inkscape, LightBurn, Carbide Create, Fusion and browsers read a bare pixel size at 96 per inch."],["px72","Pixels, 72/in","Cricut Design Space and Silhouette Studio read a bare pixel size at 72 per inch."]],Rn=[{id:"vinyl",label:"Adhesive vinyl",glyph:"layers",note:"Cricut, Silhouette, Brother. Filled shapes, stacked by colour with a 0.8 mm overlap, marks to line up, nothing narrower than 0.8 mm.",apply:e=>({mode:e>1?"layered":"singleColour",cutStyle:"filled",mirror:!1,registration:!0,bleedMm:.8,minFeatureMm:.8,kerfMm:0})},{id:"htv",label:"Iron-on",glyph:"zap",note:"Heat-transfer vinyl is cut face down, so every sheet is mirrored. Layers overlap by 0.3 mm (0.25–0.38 mm is the press-safe range) and nothing is narrower than 1 mm. Glitter, holographic and puff go on top only.",apply:e=>({mode:e>1?"layered":"singleColour",cutStyle:"filled",mirror:!0,registration:!0,bleedMm:.3,minFeatureMm:1,kerfMm:0})},{id:"sticker",label:"Sticker",glyph:"square",note:"Print the artwork, then the machine cuts the contour around it.",apply:()=>({mode:"sticker",cutStyle:"filled",mirror:!1,stickerMarginMm:3,kerfMm:0})},{id:"stencil",label:"Stencil",glyph:"copy",note:"Mylar or card with the design cut out, for paint or etching cream. Loose centres are bridged.",apply:()=>({mode:"stencil",cutStyle:"filled",mirror:!1,bridgeMm:1.5,stencilMarginMm:10,minFeatureMm:1.5,kerfMm:0})},{id:"pen",label:"Pen or score",glyph:"pen",note:"A pen in the cutter, a scoring or foil tool, a plotter, or a laser engraving lines: each line is drawn once, down its middle. Set the tip width so the preview shows what the pen will leave.",apply:()=>({mode:"lines",penMm:.4,maxLineMm:0,mirror:!1})},{id:"laser",label:"Laser or sign cutter",glyph:"crosshair",note:"Hairlines in LightBurn's layer colours, inner shapes cut first, parts grown for a 0.15 mm kerf (CO₂ 0.1–0.2 mm, diode 0.15–0.3 mm; measure yours). A DXF is saved too.",apply:()=>({mode:"inlay",cutStyle:"hairline",mirror:!1,registration:!1,kerfMm:.15,minFeatureMm:.3})}];function Ea(e){const n=t("div.viewertools"),s=t("div.pane",null),o=t("div.panes.onlight",null,s),a=t("section.stage",null,n,o),i=t("aside.minifyrail"),r=t("div",{style:{flex:"1",minHeight:"0",display:"flex"}},a,i);let l=0;const u=async()=>{const m=e.state.fab;if(!m.svg)return;const v=++l;try{const C=await B.fabPrepare(m.svg,m.options);if(v!==l)return;m.plan=C,m.error=null,m.shown>=C.layers.length&&(m.shown=-1)}catch(C){if(v!==l)return;m.plan=null,m.error=String(C)}e.touch("fab")},d=async(m,v)=>{const C=e.state.fab;C.name=m,C.svg=v,C.plan=null,C.error=null,C.shown=-1;try{const b=await B.fabAnalyze(v);C.analysis=b;const k=b.colours.filter($=>!$.background).map($=>$.hex);C.options.include=k,C.options.order=[...k],k.length>1&&C.options.mode==="singleColour"&&(C.options.mode="layered")}catch(b){C.analysis=null,C.error=String(b)}e.touch("fab"),await u()},p=async()=>{const[m]=await Vt([{name:"SVG",extensions:["svg"]}]);if(m)try{await d(m.name,await gt(m))}catch(v){H(String(v),{kind:"bad"})}},h=async()=>{const m=e.state;m.svg&&await d(m.source?.name?`${m.source.name.replace(/\.[^.]+$/,"")}.svg`:"trace.svg",m.svg)},g=async m=>m.name.toLowerCase().endsWith(".svg")?(await d(m.name,await gt(m)),!0):!1;r.acceptDropped=g;const c=(m,v=!1)=>{const C=e.state.fab;Object.assign(C.options,m),v||(C.preset=null),e.touch("fab"),u()},f=()=>{const m=e.state.fab;if(Na(e,n,s),!m.svg){D(i,_a(e,p,h));return}D(i,t("div.railscroll",{style:{gap:"16px",padding:"20px"}},Fa(e,p,h),m.error?t("div.card",null,t("span.eyebrow",null,"This file could not be prepared"),t("span.faint",null,m.error)):null,Oa(e,c),Ra(e,c),Ba(e,c),Ga(e,c),Ha(e,c),qa(e),Ua(e)),ja(e))};return e.on(["fab"],f),e.on(["svg"],()=>{e.state.tab==="fabricate"&&f()}),f(),r}function zs(e,n,s=1){return e.state.fab.unit==="in"?`${(n/me).toFixed(s+1)} in`:`${n.toFixed(s)} mm`}function La(e,n){return e.state.fab.unit!=="in"?n:n.replace(/(\d+(?:\.\d+)?) mm²/g,(s,o)=>`${(Number(o)/(me*me)).toFixed(4)} in²`).replace(/(\d+(?:\.\d+)?) mm(?![²\w])/g,(s,o)=>`${(Number(o)/me).toFixed(3)} in`)}function Xe(e,n){return e.state.fab.unit==="in"?`${(n[0]/me).toFixed(2)} × ${(n[1]/me).toFixed(2)} in`:`${n[0].toFixed(1)} × ${n[1].toFixed(1)} mm`}function Pa(e){return e?e.checks.filter(n=>n.code==="thin"||n.code==="gaps"||n.code==="specks").length:0}function Da(){return t("div.drop.solid",null,t("span.glyph",null,U("layers",32)),t("div",{style:{display:"flex",flexDirection:"column",gap:"6px"}},t("span.headline",null,"Drop an SVG here"),t("span.faint",{style:{fontSize:"13px"}},"or open one, or bring over a trace, from the panel on the right")))}function on(e,n=10){return t("span",{style:{display:"inline-block",width:`${n}px`,height:`${n}px`,borderRadius:"2px",background:e,border:"1px solid var(--rule2)",flex:"none"}})}function Na(e,n,s){const o=e.state.fab,a=o.plan,i=Pa(a),r=h=>{o.shown=h,e.touch("fab")};D(n,t("div.seg",{role:"group","aria-label":"Sheet"},t("button",{"aria-pressed":String(o.shown===-1),disabled:!a,onclick:()=>r(-1)},"All sheets"),...(a?.layers??[]).map((h,g)=>t("button",{"aria-pressed":String(o.shown===g),title:`${h.name}: ${Xe(e,h.materialMm)} of material, ${h.parts} pieces, ${ne(h.nodes)} path segments`,onclick:()=>r(g)},on(h.hex),t("span",{style:{marginLeft:"6px"}},(a?.layers.length??0)>1?`${g+1}`:h.name)))),a&&i?t("button.btn.ghost.compact",{"aria-pressed":String(o.showProblems),style:{marginLeft:"12px",color:o.showProblems?"#e5484d":void 0},title:"Draw the parts too thin to weed (red), the waste gaps too narrow to weed (amber) and the loose specks (ringed)",onclick:()=>{o.showProblems=!o.showProblems,e.touch("fab")}},U("alert",13),t("span",{style:{marginLeft:"6px"}},o.showProblems?"Showing problems":"Show problems")):null,t("span.muted",{style:{marginLeft:"auto",fontSize:"11.5px"}},a?`${Xe(e,a.sizeMm)}${o.options.mode==="lines"?"":o.options.registration&&a.layers.length>1&&(o.options.mode==="layered"||o.options.mode==="inlay")?", marks included":o.options.weedBorderMm>0?", border included":""}`:""));const l=o.options.mode==="lines",u=a?o.shown>=0?a.layers[o.shown]?.svg:l?a.combinedSvg:a.previewSvg:null,d=(h,g=!1)=>(h.style.gridArea="1 / 1",g&&(h.style.pointerEvents="none",h.style.opacity="0.85"),h),p=u?t("div",{style:{display:"grid",placeSelf:"stretch",minWidth:"0",minHeight:"0"}},l&&a&&o.shown<0?Ia(d(_e(a.previewSvg))):null,d(_e(u)),a&&i&&o.showProblems?d(_e(a.problemsSvg),!0):null):o.svg?_e(o.svg):Da();D(s,t("span.eyebrow.panelabel",null,o.shown>=0&&a?`${l?"Pen":"Sheet"} ${o.shown+1} · ${a.layers[o.shown].name} · ${Xe(e,a.layers[o.shown].materialMm)}`:l?"What the pen draws, over the drawing":"All sheets, stacked"),p)}function dt(e,n){const s=e.state.fab.options.mode==="lines"?"pen drawing":"sheet";return n===1?s:`${s}s`}function Ia(e){return e.style.opacity="0.18",e.style.pointerEvents="none",e}function _a(e,n,s){const o=!!e.state.svg;return t("div.railscroll",{style:{justifyContent:"center",alignItems:"center",textAlign:"center",gap:"16px"}},t("span.serif",{style:{fontSize:"20px"}},"Make it real"),t("span.faint",{style:{fontSize:"12.5px",lineHeight:"1.6",maxWidth:"32ch"}},"Prepare a drawing for a vinyl cutter, a sticker or a laser: real sizes, one sheet per colour, and a check of what will go wrong before anything is cut."),o?t("button.btn.primary",{onclick:s},"Use the current trace"):null,t(o?"button.btn":"button.btn.primary",{onclick:n},"Open an SVG"))}function Fa(e,n,s){const o=e.state.fab;return t("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},U("file",14),t("span.dim",{style:{flex:"1",fontSize:"12.5px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},o.name??"drawing"),e.state.svg?t("button.btn.ghost.compact",{onclick:s,title:"Use what the Vectorize tab traced"},"Current trace"):null,t("button.btn.ghost.compact",{onclick:n},"Open…"))}function Oa(e,n){const s=e.state.fab,o=s.options.include.length,a=Rn.find(i=>i.id===s.preset);return t("div.card",null,t("span.eyebrow",null,"Material"),t("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"6px"}},...Rn.map(i=>t("button.btn",{"aria-pressed":String(s.preset===i.id),style:{justifyContent:"flex-start",gap:"8px",borderColor:s.preset===i.id?"var(--accent)":void 0,background:s.preset===i.id?"var(--accent-soft)":void 0},onclick:()=>{s.preset=i.id,s.dxf=i.id==="laser"||i.id==="pen",n(i.apply(o),!0)}},U(i.glyph,14),i.label))),t("span.muted",{style:{fontSize:"11.5px",lineHeight:"1.5"}},a?a.note:"Pick what goes in the machine, or set everything below by hand."))}function Ra(e,n){const s=e.state.fab.options,o=Fn.find(a=>a[0]===s.mode)?.[2]??"";return t("div.card",null,t("span.eyebrow",null,"Making"),t("div.seg",{role:"group","aria-label":"What is being made",style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)"}},...Fn.map(([a,i])=>t("button",{"aria-pressed":String(s.mode===a),onclick:()=>n({mode:a})},i))),t("span.muted",{style:{fontSize:"11.5px",lineHeight:"1.5"}},o))}function pt(e,n,s="58px",o=0){return t("input",{class:"inlinefield",type:"text",inputmode:"decimal",value:String(e),style:{width:s},onchange:a=>{const i=Number(a.target.value);Number.isFinite(i)&&i>=o&&n(i)}})}function pe(e,n,s,o="58px"){const a=e.state.fab.unit==="in",i=Number(a?(n/me).toFixed(3):n.toFixed(2));return pt(i,r=>s(a?r*me:r),o)}function an(e){return e.state.fab.unit==="in"?"in":"mm"}function Ba(e,n){const s=e.state.fab,o=s.analysis?.aspect??1,a=s.options.widthMm,i=an(e);return t("div.card",null,t("div.cardhead",null,t("span.eyebrow",null,"Size"),t("div.seg",{role:"group","aria-label":"Units"},...["mm","in"].map(r=>t("button",{"aria-pressed":String(s.unit===r),onclick:()=>{s.unit=r,e.touch("fab")}},r)))),t("span.sentence",null,"The design is ",pe(e,a,r=>r>0&&n({widthMm:r})),` ${i} wide and `,pe(e,a*o,r=>r>0&&n({widthMm:r/o})),` ${i} tall.`),Le("Cut a size-check square",s.options.sizeCheckMm>0,()=>n({sizeCheckMm:s.options.sizeCheckMm>0?0:s.unit==="in"?me:20}),s.options.sizeCheckMm>0?`A ${zs(e,s.options.sizeCheckMm,1)} square below the design. Measure it once cut: any other size means the program rescaled the file on import.`:"Wrong size on import is the commonest cutter complaint. A small square below the design shows it before a whole sheet is wasted."),t("div",{style:{display:"flex",flexDirection:"column",gap:"6px"}},t("span.dim",{style:{fontSize:"12.5px"}},"The files state their size in"),t("div.seg",{role:"group","aria-label":"Size written in",style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)"}},...On.map(([r,l])=>t("button",{"aria-pressed":String(s.options.fileUnits===r),onclick:()=>n({fileUnits:r})},l))),t("span.muted",{style:{fontSize:"11px",lineHeight:"1.45"}},On.find(r=>r[0]===s.options.fileUnits)?.[2]??"")))}function Ga(e,n){const s=e.state.fab,o=s.analysis;if(!o)return null;const a=s.options,i=a.mode==="layered",r=i?[...a.order.filter(d=>a.include.includes(d)),...o.colours.map(d=>d.hex).filter(d=>!a.include.includes(d))]:o.colours.map(d=>d.hex),l=d=>o.colours.find(p=>p.hex===d),u=(d,p)=>{const h=a.order.filter(f=>a.include.includes(f)),g=h.indexOf(d),c=g+p;g<0||c<0||c>=h.length||([h[g],h[c]]=[h[c],h[g]],n({order:h}))};return t("div.card",null,t("div.cardhead",null,t("span.eyebrow",null,i?"Colours, bottom sheet first":"Colours"),t("span.muted",{style:{fontSize:"11px"}},`${a.include.length} of ${o.colours.length}`)),...r.map(d=>{const p=l(d);if(!p)return null;const h=a.include.includes(d),g=[p.background?"page":null,p.gradient?"gradient":null,p.translucent?"translucent":null].filter(Boolean);return t("div",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"12.5px",opacity:h?"1":"0.55"}},t("button.switch",{role:"switch","aria-checked":String(h),"aria-label":`Cut ${d}`,onclick:()=>{const c=h?a.include.filter(m=>m!==d):[...a.include,d],f=h?a.order:[...a.order.filter(m=>m!==d),d];n({include:c,order:f})}}),on(d,16),t("span.num",{style:{flex:"1"}},d,g.length?t("span.muted",{style:{marginLeft:"6px",fontSize:"11px"}},g.join(" · ")):null),t("span.muted.num",{style:{fontSize:"11px"}},ve(p.coverage,1)),i&&h?t("span",{style:{display:"flex",gap:"2px"}},t("button.btn.ghost.compact",{title:"Lower in the stack",onclick:()=>u(d,-1)},"↓"),t("button.btn.ghost.compact",{title:"Higher in the stack",onclick:()=>u(d,1)},"↑")):null)}))}function Le(e,n,s,o){return t("div",{style:{display:"flex",flexDirection:"column",gap:"3px"}},t("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},t("span.dim",{style:{fontSize:"12.5px"}},e),t("button.switch",{role:"switch","aria-checked":String(n),"aria-label":e,onclick:s})),o?t("span.muted",{style:{fontSize:"11px",lineHeight:"1.45"}},o):null)}function Wa(e,n){const s=e.state.fab.options,o=an(e);return t("div.card",null,t("span.eyebrow",null,"Drawing"),t("span.sentence",null,"The pen or tool draws ",pe(e,s.penMm,a=>a>0&&n({penMm:a})),` ${o} wide.`),t("span.sentence",null,"Lines up to ",pe(e,s.maxLineMm,a=>n({maxLineMm:a})),` ${o} wide are drawn once (0 for any width); wider parts are drawn round their outline.`),Le("Also save a DXF",e.state.fab.dxf,()=>{e.state.fab.dxf=!e.state.fab.dxf,e.touch("fab")},"Lines as open polylines and outlines as closed ones, one layer per colour, in millimetres."),Ts(e,n),t("span.sentence",null,"Lines stay within ",pe(e,s.toleranceMm,a=>a>0&&n({toleranceMm:a})),` ${o} of the drawing.`))}function Ts(e,n){const s=e.state.fab,o=s.options,a=s.unit==="in"?"in/min":"mm/min",i=s.unit==="in"?Number((o.gcodeFeedMmMin/me).toFixed(1)):Math.round(o.gcodeFeedMmMin);return t("div",{style:{display:"flex",flexDirection:"column",gap:"8px"}},Le("Also save G-code",s.gcode,()=>{s.gcode=!s.gcode,e.touch("fab")},"For GRBL lasers and plotters: curves as G2/G3 arcs, holes cut first, origin at the lower left of the job. GRBL's laser mode ($32=1) keeps the beam off between cuts."),s.gcode?t("span.sentence",null,"Cut at ",pt(i,r=>r>0&&n({gcodeFeedMmMin:s.unit==="in"?r*me:r}),"64px"),` ${a}, power S`,pt(o.gcodePower,r=>n({gcodePower:r}),"58px"),", ",pt(o.gcodePasses,r=>r>=1&&n({gcodePasses:Math.round(r)}),"40px",1),o.gcodePasses===1?" pass.":" passes."):null)}function Ha(e,n){const s=e.state.fab.options;if(s.mode==="lines")return Wa(e,n);const o=an(e),a=s.mode==="layered"||s.mode==="inlay";return t("div.card",null,t("span.eyebrow",null,"Cutting"),s.mode==="layered"?t("span.sentence",null,"Each colour runs ",pe(e,s.bleedMm,i=>n({bleedMm:i})),` ${o} under the colours above it.`):null,s.mode==="sticker"?t("span.sentence",null,"The contour is ",pe(e,s.stickerMarginMm,i=>n({stickerMarginMm:i})),` ${o} outside the artwork.`):null,s.mode==="stencil"?t("span.sentence",null,"Bridges are ",pe(e,s.bridgeMm,i=>i>0&&n({bridgeMm:i})),` ${o} wide; the sheet reaches `,pe(e,s.stencilMarginMm,i=>n({stencilMarginMm:i})),` ${o} past the artwork.`):null,t("span.sentence",null,"Parts narrower than ",pe(e,s.minFeatureMm,i=>i>0&&n({minFeatureMm:i})),` ${o} are too thin to weed.`),Le("Remove them",s.removeThin,()=>n({removeThin:!s.removeThin}),"Drops the slivers and necks narrower than that from the sheets."),a?Le("Registration marks",s.registration,()=>n({registration:!s.registration})):null,t("span.sentence",null,"Weeding border ",pe(e,s.weedBorderMm,i=>n({weedBorderMm:i})),` ${o} outside (0 for none).`),Le("Also save a DXF",e.state.fab.dxf,()=>{e.state.fab.dxf=!e.state.fab.dxf,e.touch("fab")},"Every sheet as a layer of closed polylines in millimetres, curves as true arcs (which CAM turns into G2/G3 moves), for CAD, CNC and laser programs."),Ts(e,n),s.mode==="sticker"||s.mode==="stencil"?null:Le("Mirror",s.mirror,()=>n({mirror:!s.mirror}),"For heat-transfer vinyl, which is cut from the back."),t("div",{style:{display:"flex",flexDirection:"column",gap:"6px"}},t("span.dim",{style:{fontSize:"12.5px"}},"Cut lines as"),t("div.seg",{role:"group","aria-label":"Cut lines as"},t("button",{"aria-pressed":String(s.cutStyle==="filled"),onclick:()=>n({cutStyle:"filled"})},"Filled shapes"),t("button",{"aria-pressed":String(s.cutStyle==="hairline"),onclick:()=>n({cutStyle:"hairline"})},"Hairlines")),t("span.muted",{style:{fontSize:"11px",lineHeight:"1.45"}},s.cutStyle==="filled"?"What Cricut Design Space and Silhouette Studio expect: they cut around every shape.":"The laser and sign-cutter convention: only a hairline is a cut. Each sheet keeps its colour, so a laser program can give it its own operation.")),s.cutStyle==="hairline"?t("span.sentence",null,"The cut removes ",pe(e,s.kerfMm,i=>n({kerfMm:i})),` ${o} (kerf); parts are grown by half of it so they come out the drawn size.`):null,t("span.sentence",null,"Router bit ",pe(e,2*s.dogboneMm,i=>n({dogboneMm:i/2})),` ${o} across (0 for none): every inside corner gets a dogbone so parts seat square.`),t("span.sentence",null,"Cuts stay within ",pe(e,s.toleranceMm,i=>i>0&&n({toleranceMm:i})),` ${o} of the drawing.`))}function qa(e){const n=e.state.fab.plan;if(!n)return null;const s=n.layers.reduce((i,r)=>i+r.nodes,0),o=n.layers.reduce((i,r)=>i+r.parts,0),a=n.checks.some(i=>i.level==="error")?"error":n.checks.some(i=>i.level==="warn")?"warn":"ok";return t("div.card",{style:a==="ok"?{}:{borderColor:a==="error"?"#e5484d":"var(--accent)"}},t("div.cardhead",null,t("span.eyebrow",null,"Before you cut"),t("span.muted",{style:{fontSize:"11px"}},a==="ok"?"ready":`${n.checks.length} finding${n.checks.length===1?"":"s"}`)),t("div.stats",null,...[[dt(e,2),String(n.layers.length)],["pieces",ne(o)],["path segments",ne(s)],["whole job",Xe(e,n.sizeMm)]].map(([i,r])=>t("div",null,t("span.k",null,i),t("span.v",null,r)))),n.checks.length?t("div",{style:{display:"flex",flexDirection:"column",gap:"8px"}},...n.checks.map(i=>t("div",{style:{display:"flex",gap:"8px",alignItems:"flex-start",fontSize:"12px",lineHeight:"1.5"}},t("span",{style:{color:i.level==="error"?"#e5484d":i.level==="warn"?"var(--accent-text)":"var(--muted)",flex:"none",paddingTop:"2px"}},U(i.level==="info"?"info":"alert",14)),t("span.faint",null,La(e,i.message))))):t("div",{style:{display:"flex",gap:"8px",alignItems:"center",fontSize:"12.5px"}},U("check",14),t("span.dim",null,"Nothing here will trouble the cutter.")))}function Ua(e){const n=e.state.fab.plan;if(!n||!n.layers.length)return null;const s=e.state.fab;return t("div.card",null,t("span.eyebrow",null,e.state.fab.options.mode==="lines"?"Pens, one per colour":"Cut list"),...n.layers.map((o,a)=>t("button",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"12.5px",background:"none",border:"none",padding:"2px 0",color:"inherit",cursor:"pointer",textAlign:"left",fontWeight:s.shown===a?"600":"400"},title:"Show this sheet",onclick:()=>{s.shown=a,e.touch("fab")}},t("span.muted.num",{style:{width:"16px"}},String(a+1)),on(o.hex,14),t("span.num",{style:{flex:"1"}},o.name),t("span.dim.num",null,Xe(e,o.materialMm)),t("span.muted.num",{style:{width:"54px",textAlign:"right",fontSize:"11px"}},`${o.parts} pc`))))}function ja(e){const n=e.state.fab,s=n.plan,o=(n.name??"drawing").replace(/\.svg$/i,""),a=(i,r)=>{const l=i.layers[r].name.replace(/[^A-Za-z0-9_-]+/g,"");return i.layers.length>1?`${o}-${r+1}-${l}.svg`:`${o}-cut.svg`};return t("div.railfoot",null,t("div.row",null,t("button.btn.primary",{style:{flex:"1"},disabled:!s||s.layers.length===0,onclick:async()=>{if(!s)return;const i=s.layers.map((d,p)=>({name:a(s,p),data:d.svg}));s.layers.length>1&&i.push({name:`${o}-all.svg`,data:s.combinedSvg}),n.dxf&&i.push({name:`${o}.dxf`,data:s.dxf}),n.gcode&&i.push({name:`${o}.gcode`,data:s.gcode});const r=await uo(i,`${o}-sheets.zip`);if(!r)return;const l=s.layers.length>1,u=`${s.layers.length} ${dt(e,s.layers.length)}${l?" and one combined file":""}`;H(r.folder?`Saved ${u} to ${r.folder}`:`Downloaded ${u}${i.length>1?" as one .zip":""}`,{kind:"good",action:kt(r.first)})}},`Download ${s&&s.layers.length>1?`${s.layers.length} ${dt(e,2)}`:`the ${dt(e,1)}`}`),t("button.btn",{disabled:!s,title:"Copies the shown sheet, or every sheet in one file",onclick:async()=>{s&&(await vt(n.shown>=0?s.layers[n.shown].svg:s.combinedSvg),H("Copied. Paste it into Design Space, Silhouette Studio or LightBurn."))}},"Copy")),t("div.note",null,t("span",null,s?`Real size: ${zs(e,s.sizeMm[0])} wide`:"Real sizes"),t("span",null,"Nothing leaves this computer")))}const rt={inkvec:"Inkvec","vtracer-1.0-simplify":"VTracer 1.0, best flags","trazor-auto":"Trazor","vtracer-1.0-default":"VTracer 1.0","vtracer-default":"VTracer 0.6"};let Bn=null;function Va(){return Bn??=ss(()=>import("./showcase-Ip4y7DPQ.js"),[],import.meta.url).then(e=>e.default??e),Bn}function Za(e,n){const s=t("div.screenbody",null,t("div.sc-loading.faint",null,"Loading the showcase…"));return Va().then(o=>D(s,Ya(o)),o=>D(s,t("div.sc-loading.faint",null,`The showcase could not be loaded: ${String(o)}`))),t("div.screen",null,t("div.screenbar",{"data-tauri-drag-region":""},t("span",{style:{fontSize:"12.5px",fontWeight:"600"}},"Showcase"),t("div.spacer"),t("button.btn.compact",{onclick:n},"Done"),t("div.sep"),et()),s)}function Ya(e){let n=0,s="vtracer-1.0-simplify",o="fill";const a=Ja(),i=t("div.sc-chips"),r=t("div.sc-list"),l=Object.keys(e.gallery[0]?.engines??{}).filter(c=>c!=="inkvec"),u=(c,f,m)=>{const v=t("div.seg"),C=()=>{for(const b of v.querySelectorAll("button"))b.setAttribute("aria-pressed",String(b.dataset.k===f()))};for(const[b,k]of c)v.append(t("button",{"data-k":b,onclick:()=>{m(b),C()}},k));return C(),v},d=()=>{const c=e.gallery[n];a.set(c.input,c.engines.inkvec.svg,c.engines[s].svg,"Inkvec",rt[s]??s),a.layer(o);const f=c.engines.inkvec,m=c.engines[s];D(i,Ze(`Inkvec dE00 ${f.de1024.toFixed(3)}`,!0),Ze(`${rt[s]} dE00 ${m.de1024.toFixed(3)}`),Ze(`Inkvec ${f.paths} paths · ${f.coordinates} coordinates · ${Gn(f.bytes)}`,!0),Ze(`${rt[s]} ${m.paths} paths · ${m.coordinates} coordinates · ${Gn(m.bytes)}`),Ze(`The artist's file: ${c.artist.paths} paths · ${c.artist.coordinates} coordinates`));for(const[v,C]of[...r.children].entries())C.setAttribute("aria-pressed",String(v===n))};e.gallery.forEach((c,f)=>{r.append(t("button.sc-case",{onclick:()=>{n=f,d()},title:c.what},t("span.sc-thumb",null,t("img",{src:c.input,alt:""})),t("span.sc-name",null,c.label),t("span.sc-what",null,c.what)))});const p=t("div.sc-tools",null,t("span.eyebrow",null,"Compare with"),u(l.map(c=>[c,rt[c]??c]),()=>s,c=>{s=c,d()}),t("span.eyebrow",null,"Show"),u([["fill","Fill"],["wire","Wireframe"],["anchor","Anchors"],["handle","Handles"]],()=>o,c=>{o=c,a.layer(o)}),t("span.eyebrow",null,"Zoom"),...[1,4,12].map(c=>t("button.btn.compact.ghost",{onclick:()=>a.zoom(c)},`${c}×`)),t("span.sc-legend.faint",null,t("i.sc-dot.a"),"anchor",t("i.sc-dot.hd"),"control point"));d();const h=e.engines.find(c=>c.id==="inkvec"),g=e.best_de_wins.inkvec??0;return t("div.sc-page",null,t("div.sc-head",null,t("h1.serif",null,"Before and after, with the geometry showing"),t("p.faint",null,`Each raster was traced by Inkvec and by the other engines at their best settings. Left, the raster; middle, Inkvec's SVG; right, the engine you compare with. Scroll to zoom and drag to pan, all three together; Anchors shows every on-curve point, Handles every control point with its tangent. From the ${e.date} competitor run.`)),t("div.sc-main",null,r,t("div.sc-stagecol",null,p,a.el,i)),t("div.sc-results",null,t("h2.serif",null,"Inkvec vs the field"),t("p.faint",null,`${e.cases} cases (${e.families.length} families: real icons, emoji, synthetic probes and real brand logos; selection fixed from the seed ${e.seed}), each rendered from its source SVG, traced by every engine and scored against the render: CIEDE2000 colour difference, DISTS and DINOv3 perceptual similarity, and geometry against the artist's own file (1.00× is exactly the artist's number of parameters). Inkvec had the lowest colour difference on ${g} of ${e.cases}.`),h?t("div.sc-bignums",null,lt("median colour difference",h.de_median.toFixed(3),"dE00; under 1 is invisible"),lt("geometry vs the artist",`${h.geometry_mean.toFixed(2)}×`,`mean; median ${h.geometry_median.toFixed(2)}×`),lt("DINOv3 similarity",h.dino.toFixed(4),"1 is identical"),lt("seconds per case",h.seconds_median.toFixed(2),"median, native command line")):null,t("table.sc-table",null,t("thead",null,t("tr",null,...["Engine","mean dE00","median dE00","DISTS","DINO","geometry","coordinates","seconds"].map(c=>t("th",null,c)))),t("tbody",null,...e.engines.map(c=>t(`tr${c.id==="inkvec"?".win":""}`,null,t("td",null,c.name),t("td.num",null,c.de_mean.toFixed(3)),t("td.num",null,c.de_median.toFixed(3)),t("td.num",null,c.dists.toFixed(4)),t("td.num",null,c.dino.toFixed(4)),t("td.num",null,`${c.geometry_mean.toFixed(2)}×`),t("td.num",null,Math.round(c.coordinates).toString()),t("td.num",null,c.seconds_median.toFixed(2)))))),t("p.faint.sc-note",null,`Means over the ${e.cases} cases except seconds (median). Source: out/${e.run}/results.json, written by bench/crosscompare_competitors.py; this screen's data by tools/showcase_data.py. `,t("a",{href:"#",onclick:c=>{c.preventDefault(),xt("https://github.com/logolabs/inkvec#results")}},"Method and every case"))))}const Gn=e=>`${(e/1024).toFixed(1)} KB`,Ze=(e,n=!1)=>t(`span.sc-chip${n?".win":""}`,null,e),lt=(e,n,s)=>t("div.sc-bignum",null,t("span.eyebrow",null,e),t("span.v.serif",null,n),t("span.faint",null,s));function Ja(){const e=[0,1,2].map(()=>{const r=t("div.sc-cam"),l=t("span.sc-tag");return{pane:t("div.sc-pane",null,r,l),cam:r,tag:l}}),n=t("div.sc-viewer",null,...e.map(r=>r.pane)),s={z:1,x:0,y:0};let o=[];const a=()=>{for(const r of e)r.cam.style.transform=`translate(${s.x}px, ${s.y}px)`,r.cam.style.width=r.cam.style.height=`${s.z*100}%`};let i=null;for(const{pane:r}of e){r.addEventListener("wheel",u=>{u.preventDefault();const d=r.getBoundingClientRect(),p=u.clientX-d.left,h=u.clientY-d.top,g=Math.min(40,Math.max(1,s.z*Math.exp(-u.deltaY*.0015))),c=g/s.z;s.x=p-(p-s.x)*c,s.y=h-(h-s.y)*c,s.z=g,a()},{passive:!1}),r.addEventListener("pointerdown",u=>{i=[u.clientX-s.x,u.clientY-s.y],r.setPointerCapture(u.pointerId)}),r.addEventListener("pointermove",u=>{i&&(s.x=u.clientX-i[0],s.y=u.clientY-i[1],a())});const l=()=>i=null;r.addEventListener("pointerup",l),r.addEventListener("pointercancel",l),r.addEventListener("dblclick",()=>{s.z=1,s.x=s.y=0,a()})}return{el:n,set(r,l,u,d,p){D(e[0].cam,t("img.sc-raster",{src:r,alt:"",draggable:"false"})),o=[qn(l),qn(u)],D(e[1].cam,o[0].root),D(e[2].cam,o[1].root),e[0].tag.textContent="Raster",e[1].tag.textContent=`${d} · ${o[0].anchors} anchors`,e[2].tag.textContent=`${p} · ${o[1].anchors} anchors`,a()},layer(r){for(const l of o)l.set(r)},zoom(r){const l=e[0].pane.getBoundingClientRect();s.z=r,s.x=(l.width-l.width*r)/2,s.y=(l.height-l.height*r)/2,a()}}}const Wn="http://www.w3.org/2000/svg";function Hn(e){const s=new DOMParser().parseFromString(e,"image/svg+xml").documentElement;if(!(s instanceof SVGSVGElement))return null;if(!s.getAttribute("viewBox")){const o=parseFloat(s.getAttribute("width")??""),a=parseFloat(s.getAttribute("height")??"");o>0&&a>0&&s.setAttribute("viewBox",`0 0 ${o} ${a}`)}return s.removeAttribute("width"),s.removeAttribute("height"),s.setAttribute("preserveAspectRatio","xMidYMid meet"),document.importNode(s,!0)}function qn(e){const n=Hn(e),s=Hn(e),o=t("div.sc-layer");if(!n||!s)return{root:o,anchors:0,set:()=>{}};s.classList.add("sc-wire");const a=Xa(n);o.append(n,s,a.svg);const i=r=>{const l=r==="anchor"||r==="handle";n.style.display=r==="wire"?"none":"",n.style.opacity=l?"0.35":"1",s.style.display=r==="fill"?"none":"",a.anchors.style.display=l?"":"none",a.handles.style.display=a.handleDots.style.display=r==="handle"?"":"none"};return i("fill"),{root:o,anchors:a.count,set:i}}function Xa(e){const n=document.createElementNS(Wn,"svg");n.setAttribute("viewBox",e.getAttribute("viewBox")??"0 0 100 100"),n.setAttribute("preserveAspectRatio","xMidYMid meet"),n.setAttribute("class","sc-ov");let s="",o="",a="",i=0;const r=h=>h.toFixed(2);for(const h of e.querySelectorAll("path")){const[g,c]=Un(h),f=Ka(h.getAttribute("d")??"",g,c);i+=f.anchors.length;for(const[m,v]of f.anchors)s+=`M${r(m)} ${r(v)}h0.001`;for(const[[m,v],[C,b]]of f.handles)o+=`M${r(m)} ${r(v)}L${r(C)} ${r(b)}`,a+=`M${r(C)} ${r(b)}h0.001`}for(const h of e.querySelectorAll("circle, ellipse")){const[g,c]=Un(h);s+=`M${r(Number(h.getAttribute("cx")??0)+g)} ${r(Number(h.getAttribute("cy")??0)+c)}h0.001`,i++}const l=(h,g)=>{const c=document.createElementNS(Wn,"path");return c.setAttribute("d",h||"M0 0"),c.setAttribute("class",g),n.append(c),c},u=l(o,"h"),d=l(a,"hd"),p=l(s,"a");return{svg:n,anchors:p,handles:u,handleDots:d,count:i}}function Un(e){let n=0,s=0;for(let o=e;o&&o.tagName.toLowerCase()!=="svg";o=o.parentElement){const a=(o.getAttribute("transform")??"").match(/translate\(\s*(-?[\d.e+-]+)[ ,]*(-?[\d.e+-]+)?\s*\)/i);a&&(n+=parseFloat(a[1]),s+=parseFloat(a[2]??"0"))}return[n,s]}function Ka(e,n,s){const o=e.match(/[MLHVCSQTAZmlhvcsqtaz]|-?\d*\.?\d+(?:e[-+]?\d+)?/gi)??[],a=[],i=[];let r=0,l=0,u=0,d=0,p=0,h="",g=null,c=0,f=0;const m=()=>parseFloat(o[r++]),v=(b,k)=>a.push([b+n,k+s]),C=(b,k,$,M)=>i.push([[b+n,k+s],[$+n,M+s]]);for(;r{const a=e.state;if(!a.screen){D(s),s.style.display="none";return}s.style.display="",D(s,a.screen==="settings"?ei(e,n):a.screen==="showcase"?Za(e,n.close):ni(e,n))};return e.on(["screen","prefs","caps"],o),o(),s}function ei(e,n){const s=e.state.prefs,o=e.state.caps?.denoiser;return t("div.screen",null,t("div.screenbar",{"data-tauri-drag-region":""},t("span",{style:{fontSize:"12.5px",fontWeight:"600"}},"Settings"),t("div.spacer"),t("button.btn.compact",{onclick:n.close},"Done"),t("div.sep"),et()),t("div.screenbody",null,t("div.settingsgrid",null,ct("General",[null,fe("Theme","The light theme matches the dark one token for token.",It([["system","System"],["dark","Dark"],["light","Light"]],s?.theme??"system",a=>n.applyPrefs({theme:a}))),fe("When an image is opened","Auto always starts tracing at once. Ask shows a small card offering the Custom wizard beside it; Custom opens the wizard straight away.",It([["ask","Ask"],["auto","Auto only"],["custom","Custom wizard"]],s?.onOpen??"ask",a=>n.applyPrefs({onOpen:a}))),fe("Language","English only in this release. Nothing in the app is machine-translated, which is why there is one.",It([["en","English"]],"en",()=>{}))]),ct("Performance",[fe("Threads",crossOriginIsolated?"The engine runs on a pool of workers, one per core the browser reports.":"This page is not cross-origin isolated, so the engine runs on one core. Open it in its own tab for all of them.",t("span.muted.num",{style:{fontSize:"12.5px"}},crossOriginIsolated?`${navigator.hardwareConcurrency||4}`:"1")),fe("Draft resolution","Used while you move a control.",_t(s?.draftPx??512,128,2048,a=>n.applyPrefs({draftPx:a}),"px")),fe("Draft time limit","A draft that overruns is abandoned, not shown late.",_t(s?.draftSeconds??.4,.05,10,a=>n.applyPrefs({draftSeconds:a}),"s",2)),fe("Settle before the full trace","How long the controls stay still before the full-resolution trace is queued.",_t(s?.settleMs??800,100,5e3,a=>n.applyPrefs({settleMs:a}),"ms"))]),ct("Denoiser",ti(e,o)),null,ct("Advanced",[null,null,fe("Reset settings","Puts every preference and the trace controls back to their defaults. Your files are untouched.",t("button.btn.compact.danger",{onclick:()=>wo("Reset settings?","Every preference goes back to its default, and the recent list is cleared. Nothing you have traced or exported is affected.","Reset",async()=>{const a=await B.resetPrefs();e.set({prefs:a,settings:a.trace}),H("Settings reset.")},!0)},"Reset"))]),t("div.privacycard",null,t("span.eyebrow",null,"Privacy"),t("span.line",null,"Your image never leaves this browser."),t("p",{style:{margin:"0",fontSize:"12.5px",lineHeight:"1.65",color:"var(--faint)"}},"Tracing runs in this tab, on your own processor, as WebAssembly. There is no account, no upload and no telemetry. The page fetches only itself and, if you ask for it, the denoiser's weights; your preferences are kept in this browser's storage.")))))}function ti(e,n){return n?n.supported?[fe("Status","Optional. Improves traces from photographs and screenshots.",t("span",{style:{fontSize:"12.5px",color:n.installed?"var(--good)":"var(--muted)"}},n.installed?`Installed · ${ae(n.bytes??0)}`:"Not installed")),fe(n.installed?"Remove":"Download",n.installed?n.path??"Kept in this browser's storage.":"Downloaded once into this browser's storage, and run in this tab on your GPU where it has one. The model comes down, your image never goes up.",n.installed?t("button.btn.compact.danger",{onclick:async()=>{const s=await B.denoiserRemove(),o=e.state.caps;o&&e.set({caps:{...o,denoiser:s}}),H("Denoiser removed.")}},"Remove"):t("button.btn.compact",{onclick:()=>rn(e)},"Download")),fe("Verified against",n.repo,t("span.mono.muted",{style:{fontSize:"11px"}},`${n.sha256.slice(0,16)}…`))]:[fe("Status","The denoiser needs a cross-origin isolated page, which this one is not. Open the app in its own tab to use it.",t("span.muted",{style:{fontSize:"12.5px"}},"Not in this build"))]:[fe("Status","",t("span.muted",null,"—"))]}function rn(e){const n=e.state.caps?.denoiser;if(!n)return;const s=t("div.progress",null,t("i",{style:{width:"0%"}})),o=t("span.faint.num",{style:{fontSize:"12.5px"}},""),a=t("div.modal",{tabindex:"-1"});let i=!1;const r=()=>{D(a,t("h2",null,i?"Downloading the denoiser":"Download the denoiser"),i?t("div",{style:{display:"flex",flexDirection:"column",gap:"10px"}},s,o):t("p",null,"Downloaded once (about 80 MB, plus ONNX Runtime Web) and kept in this browser. It repairs JPEG and screenshot damage before tracing, which usually halves the colour error on photographed logos. It runs in this tab, on your GPU where there is one — the model comes down, your image never goes up."),t("div.stats",null,t("div",null,t("span.k",null,"from"),t("span.v",{style:{fontSize:"12px"}},n.repo)),t("div",null,t("span.k",null,"adds per trace"),t("span.v",null,"seconds"))),t("span.muted",{style:{fontSize:"11.5px",lineHeight:"1.5"}},`SHA-256 verified on arrival against ${n.sha256.slice(0,16)}… · removable in Settings.`),t("div.actions",null,t("button.btn",{onclick:()=>{i&&B.denoiserCancel(),le()}},i?"Cancel download":"Not now"),i?null:t("button.btn.primary",{onclick:()=>{i=!0,r(),B.denoiserDownload()}},"Download")))};(async()=>{const l=await Me.denoiserProgress(({got:d,total:p})=>{const h=p?d/p*100:0;s.firstElementChild.style.width=`${h.toFixed(1)}%`,o.textContent=p?`${ae(d)} of ${ae(p)} · you can keep tracing`:`${ae(d)} · you can keep tracing`}),u=await Me.denoiserDone(({ok:d,message:p,status:h})=>{const g=e.state.caps;g&&e.set({caps:{...g,denoiser:h}}),l(),u(),le(),d?H("Denoiser installed and verified.",{kind:"good"}):p!=="cancelled"&&H(p??"The download did not finish.",{kind:"bad"})})})(),qe(a),r()}function ni(e,n){const s=e.state.caps,o=t("pre",null,"Loading the notices…");B.thirdPartyNotices().then(i=>{o.textContent=i}).catch(()=>{o.textContent="The bundled notices could not be read. They are also published at github.com/logolabs/inkvec in docs/THIRD_PARTY.md."});const a=(i,r)=>t("a",{href:"#",onclick:l=>{l.preventDefault(),xt(r)}},i);return t("div.screen",null,t("div.screenbar",{"data-tauri-drag-region":""},t("span",{style:{fontSize:"12.5px",fontWeight:"600"}},"About"),t("div.spacer"),t("button.btn.compact",{onclick:n.close},"Done"),t("div.sep"),et()),t("div.screenbody",null,t("div.about",null,t("div.aboutleft",null,t("span.mark",null,es(72)),t("div",{style:{display:"flex",flexDirection:"column",gap:"8px"}},t("span.serif",{style:{fontSize:"40px",lineHeight:"1"}},wt),t("span.faint.num",{style:{fontSize:"13px"}},`Version ${s?.version??"—"} · engine Inkvec ${s?.engineVersion??"—"} · Apache-2.0`),t("span.muted.mono",{style:{fontSize:"11px"}},`build target ${s?.buildTarget??"—"}`)),t("p",{style:{margin:"0",fontSize:"13.5px",lineHeight:"1.7",color:"var(--dim)",maxWidth:"380px"}},"Made by LogoLabs, an AI lab working on brand assets and logo creation. Tracing reconstructs a picture; drawing one is a different job, and that is the one we do."),t("p",{style:{margin:"0",fontSize:"13px",lineHeight:"1.7",color:"var(--faint)",maxWidth:"380px"}},"This is the browser edition. The desktop app, Inkvec Studio, is the same interface with folders of images traced in one go, the command line, the right-click menu and traces up to 16384 px."),t("button.btn.compact",{style:{alignSelf:"flex-start"},onclick:()=>e.set({screen:"showcase"})},"Before and after on real logos: the showcase"),t("div",{style:{display:"flex",gap:"18px",fontSize:"13px",flexWrap:"wrap"}},t("a",{href:"#",onclick:i=>{i.preventDefault(),sn()}},"User guide"),a("GitHub","https://github.com/logolabs/inkvec"),a("Benchmark results","https://github.com/logolabs/inkvec#benchmark"),a("Inkvec Studio for the desktop","https://github.com/logolabs/inkvec/releases"),a("logolabs.org","https://logolabs.org"))),t("div.aboutright",null,t("div.credit",null,t("span.eyebrow",{style:{color:"var(--gold)"}},"Compute acknowledgement"),t("p",{style:{margin:"0",fontSize:"13px",lineHeight:"1.7",color:"var(--dim)"}},"The denoiser was trained on resources provided by EuroHPC JU and NAISS. Training ran on the Arrhenius GPU supercomputer at NAISS, Sweden, under EuroHPC project EHPC-AIF-2026PG01-907."),t("div",{style:{display:"flex",gap:"10px",marginTop:"4px"}},t("span.btn.compact",{style:{cursor:"default"}},"EuroHPC JU"),t("span.btn.compact",{style:{cursor:"default"}},"NAISS"))),t("div.notices",null,t("div.head",null,t("span",null,"Licence and third-party notices"),t("button.reset",{onclick:()=>si(o.textContent??"")},"Open")),o),t("span.muted",{style:{fontSize:"12px"}},"Your image never leaves this browser.")))))}function si(e){qe(St("Licence and third-party notices",[t("pre",{style:{margin:"0",maxHeight:"60vh",overflow:"auto",font:"11.5px/1.7 var(--font-mono)",color:"var(--faint)",whiteSpace:"pre-wrap",userSelect:"text"}},e)],[t("button.btn",{onclick:le},"Close")]))}function ct(e,n){return t("div.settinggroup",null,t("div.head.eyebrow",null,e),...n)}function fe(e,n,s){return t("div.settingrow",null,t("div.about",null,t("span.label",null,e),n?t("span.help",null,n):null),t("div.control",null,s))}function It(e,n,s){return t("select",{onchange:o=>s(o.target.value)},...e.map(([o,a])=>t("option",{value:o,selected:o===n?"":null},a)))}function _t(e,n,s,o,a="",i=0){return t("div",{style:{display:"flex",alignItems:"center",gap:"6px"}},t("input",{type:"number",value:String(i?e.toFixed(i):Math.round(e)),min:String(n),max:String(s),step:i?String(10**-i):"1",style:{width:"90px"},onchange:r=>{const l=Number(r.target.value);Number.isFinite(l)&&o(Math.min(s,Math.max(n,l)))}}),a?t("span.muted",{style:{fontSize:"11.5px"}},a):null)}const oi={M:2,L:2,T:2,H:1,V:1,C:6,S:4,Q:4,A:7,Z:0};function*ai(e){const n=e.match(/[a-zA-Z]|-?\d*\.?\d+(?:[eE][-+]?\d+)?/g)??[];let s=0,o="";for(;s="a"&&l<="z",p=l.toUpperCase(),h=s,g=o,c=m=>d?h+u[m]:u[m],f=m=>d?g+u[m]:u[m];switch(p){case"M":s=c(0),o=f(1),a=s,i=o,n.push({x:s,y:o}),r=null;break;case"L":s=c(0),o=f(1),n.push({x:s,y:o}),r=null;break;case"H":s=d?h+u[0]:u[0],n.push({x:s,y:o}),r=null;break;case"V":o=d?g+u[0]:u[0],n.push({x:s,y:o}),r=null;break;case"C":{const m={x:c(0),y:f(1)},v={x:c(2),y:f(3)};s=c(4),o=f(5),n.push({x:s,y:o,in:m,out:v}),r=v;break}case"S":{const m=r?{x:2*h-r.x,y:2*g-r.y}:{x:h,y:g},v={x:c(0),y:f(1)};s=c(2),o=f(3),n.push({x:s,y:o,in:m,out:v}),r=v;break}case"Q":{const m={x:c(0),y:f(1)};s=c(2),o=f(3),n.push({x:s,y:o,in:m,out:m}),r=m;break}case"T":{const m=r?{x:2*h-r.x,y:2*g-r.y}:{x:h,y:g};s=c(0),o=f(1),n.push({x:s,y:o,in:m,out:m}),r=m;break}case"A":s=c(5),o=f(6),n.push({x:s,y:o}),r=null;break;case"Z":s=a,o=i,r=null;break}}return n}const ri="path, circle, ellipse, rect, line, polyline, polygon";function li(e){const n=[];for(const s of e.querySelectorAll(ri)){const o=ui(s);o&&n.push(o)}return n}function re(e,n,s=0){const o=e.getAttribute(n);if(o===null||o.trim()==="")return s;const a=Number(o);return Number.isFinite(a)?a:s}function ci(e){const n=/rotate\(\s*(-?[\d.]+)/.exec(e.getAttribute("transform")??"");return n?Number(n[1]):0}function ui(e){const n=s=>(Math.round(s*1e3)/1e3).toString();switch(e.nodeName.toLowerCase()){case"path":return e.getAttribute("d");case"circle":case"ellipse":{const s=re(e,"cx"),o=re(e,"cy"),a=e.nodeName.toLowerCase()==="circle",i=a?re(e,"r"):re(e,"rx"),r=a?re(e,"r"):re(e,"ry");if(!(i>0)||!(r>0))return null;const l=ci(e),u=l*Math.PI/180,d=Math.cos(u),p=Math.sin(u),h=(c,f)=>`${n(s+c*d-f*p)},${n(o+c*p+f*d)}`,g=`A${n(i)},${n(r)} ${n(l)} 0 1 `;return`M${h(i,0)}${g}${h(0,r)}${g}${h(-i,0)}${g}${h(0,-r)}${g}${h(i,0)}Z`}case"rect":{const s=re(e,"x"),o=re(e,"y"),a=re(e,"width"),i=re(e,"height");if(!(a>0)||!(i>0))return null;const r=Math.min(re(e,"rx",re(e,"ry")),a/2),l=Math.min(re(e,"ry",re(e,"rx")),i/2);if(!(r>0)||!(l>0))return`M${n(s)},${n(o)}L${n(s+a)},${n(o)}L${n(s+a)},${n(o+i)}L${n(s)},${n(o+i)}Z`;const u=`A${n(r)},${n(l)} 0 0 1 `;return`M${n(s+r)},${n(o)}L${n(s+a-r)},${n(o)}${u}${n(s+a)},${n(o+l)}L${n(s+a)},${n(o+i-l)}${u}${n(s+a-r)},${n(o+i)}L${n(s+r)},${n(o+i)}${u}${n(s)},${n(o+i-l)}L${n(s)},${n(o+l)}${u}${n(s+r)},${n(o)}Z`}case"line":return`M${n(re(e,"x1"))},${n(re(e,"y1"))}L${n(re(e,"x2"))},${n(re(e,"y2"))}`;case"polyline":case"polygon":{const s=(e.getAttribute("points")??"").trim().split(/[\s,]+/).map(Number);if(s.length<4||s.some(a=>!Number.isFinite(a)))return null;const o=[`M${n(s[0])},${n(s[1])}`];for(let a=2;a+1Number.isFinite(i)))return{x:a[0],y:a[1],w:a[2],h:a[3]}}const s=/\swidth="([\d.]+)"/.exec(e),o=/\sheight="([\d.]+)"/.exec(e);return s&&o?{x:0,y:0,w:Number(s[1]),h:Number(o[1])}:null}function di(e){const n=Math.min(1,Math.max(0,(e-1)/11));return{r:1.2+n*1.2,opacity:.4+n*.6}}const Vn=.25,Zn=64;function pi(e){const n=t("div.art"),s=t("div.art.compare");s.style.display="none";const o=t("span.eyebrow.panelabel",null,"Source"),a=t("div.art"),i=be("svg.overlay"),r=t("div.pane.source",null,o,n,s);a.append(i);const l=t("canvas.anchors"),u=t("span.eyebrow.panelabel",null,"Vector · SVG"),d=t("div.pane.vector",null,u,a,l),p=t("div.wipehandle",{role:"separator","aria-label":"Wipe"}),h=t("div.panes",null,r,d,p),g=h;let c={x:0,y:0,w:1,h:1},f=null,m,v,C,b=0,k=Number.NaN,$,M=null,E={x:0,y:0,w:1,h:1};const N={certainty:be("g.certainty"),wireframe:be("g.wireframe"),handles:be("g.handles")},S={certainty:!1,wireframe:!1,handles:!1};for(const y of Object.values(N))y.style.display="none";l.style.display="none",i.append(N.certainty,N.wireframe,N.handles);let A=null,F=null;function W(){const y=e.state,z=y.svg,L=y.source!==v,I=z!==m;if((L||I)&&(c=(z?jn(z):null)??{x:0,y:0,w:y.source?.width??1,h:y.source?.height??1},k=Number.NaN),L&&(v=y.source,D(n,y.source?t("img",{src:y.source.preview,alt:"",draggable:"false"}):null)),I){if(m=z,f=null,z){const O=new DOMParser().parseFromString(z,"image/svg+xml").documentElement;O&&O.nodeName==="svg"&&!O.querySelector("parsererror")&&(O.setAttribute("width",String(c.w)),O.setAttribute("height",String(c.h)),f=document.importNode(O,!0))}D(a,f,i),i.setAttribute("viewBox",`${c.x} ${c.y} ${c.w} ${c.h}`),A=null,F=null;for(const O of["wireframe","handles"])D(N[O]),S[O]=!1;Q(!0)}(y.result!==C||I&&!z)&&xe(),L||I?(de(),Se()):y.show.certainty&&de()}function V(){const y=e.state.compare;if(y===$)return;$=y,M&&URL.revokeObjectURL(M),M=null,y?(E=jn(y.svg)??c,M=URL.createObjectURL(new Blob([y.svg],{type:"image/svg+xml"})),D(s,t("img",{src:M,alt:"",draggable:"false",style:{imageRendering:"auto"}}))):D(s),s.style.display=y?"":"none",n.style.display=y?"none":"",o.textContent=y?y.label:"Source",u.textContent=y?"Yours":"Vector · SVG",r.classList.toggle("comparing",!!y);const z=`translate(${e.state.pan.x}px, ${e.state.pan.y}px)`;(y?s:n).style.transform=z,se()}function se(){const y=s.querySelector("img");if(!y)return;const z=e.state.zoom;y.style.position="absolute",y.style.left=`${(E.x-c.x)*z}px`,y.style.top=`${(E.y-c.y)*z}px`,y.style.width=`${E.w*z}px`,y.style.height=`${E.h*z}px`,y.style.maxWidth="none"}function xe(){C=void 0,b++,D(N.certainty),S.certainty=!1}function ee(){return A??=f?li(f):[],A}function J(){if(F)return F;const y=[],z=[],L=[];for(const I of ee()){const O=new Set;for(const X of ii(I)){const Y=Math.round(X.x*1e3)*1e8+Math.round(X.y*1e3);O.has(Y)||(O.add(Y),y.push({x:X.x,y:X.y}));for(const he of[X.in,X.out])he&&(z.push(`M${X.x} ${X.y}L${he.x} ${he.y}`),L.push(`M${he.x} ${he.y}l.001 .001`))}}return F={lines:z.join(""),knobs:L.join(""),dots:y},F}function Z(y){if(S[y]=!0,!f)return;const z=N[y];if(y==="wireframe"){const L=hi(ee());L&&z.append(be("path",{d:L}))}else{const{lines:L,knobs:I}=J();L&&z.append(be("path.lines",{d:L}),be("path.knobs",{d:I}))}}let G="",te=!1;function Q(y=!1){y&&(G=""),!te&&(te=!0,requestAnimationFrame(()=>{te=!1,oe()}))}function oe(){const y=e.state,z=!!f&&y.show.anchors,L=Math.round(d.clientWidth),I=Math.round(d.clientHeight);if(z&&(!L||!I))return;const O=window.devicePixelRatio||1,X=z?`${y.zoom} ${y.pan.x} ${y.pan.y} ${L} ${I} ${O}`:"off";if(X===G)return;G=X;const Y=l.getContext("2d");if(!Y)return;if(!z){l.width=0,l.height=0;return}const he=Math.max(1,Math.round(L*O)),cn=Math.max(1,Math.round(I*O));(l.width!==he||l.height!==cn)&&(l.width=he,l.height=cn),l.style.width=`${L}px`,l.style.height=`${I}px`,Y.setTransform(O,0,0,O,0,0),Y.clearRect(0,0,L,I);const{dots:un}=J();if(!un.length)return;const dn=getComputedStyle(d),Gs=dn.getPropertyValue("--stage").trim()||"#808080",Ws=dn.getPropertyValue("--anchor").trim()||"#ff5c00",{r:pn,opacity:Hs}=di(y.zoom);l.style.opacity=String(Hs);const qs=y.pan.x-c.x*y.zoom,Us=y.pan.y-c.y*y.zoom,Ue=pn*1.15,js=pn*.85,tt=[],At=[];for(const je of un){const Ve=qs+je.x*y.zoom,ye=Us+je.y*y.zoom;Ve<-Ue||ye<-Ue||Ve>L+Ue||ye>I+Ue||(tt.push(Ve),At.push(ye))}for(const[je,Ve]of[[Ue,Gs],[js,Ws]]){Y.beginPath();for(let ye=0;ye{L===b&&e.set({bandsMissing:!0,show:{...e.state.show,certainty:!1}})};B.traceBands(y.resultGeneration).then(O=>{L===b&&(O?ke(O):I())},I)}function ke(y){D(N.certainty);for(const{cls:z,d:L}of wi(fi(y)))N.certainty.append(be(`path.${z}`,{d:L}))}function de(){const{show:y}=e.state,z=(L,I)=>{I&&!S[L]&&(L==="certainty"?ue():Z(L)),N[L].style.display=I?"":"none"};z("wireframe",y.wireframe),z("handles",y.handles),z("certainty",y.certainty),l.style.display=y.anchors?"":"none",Q(),f&&(f.style.opacity=y.fill?"1":"0.12")}function Se(){const y=e.state,z=`translate(${y.pan.x}px, ${y.pan.y}px)`;for(const L of $?[s,a]:[n,a])L.style.transform=z;if(y.zoom!==k){k=y.zoom;const L=c.w*y.zoom,I=c.h*y.zoom,O=n.querySelector("img");O&&(O.style.width=`${L}px`,O.style.height=`${I}px`),f&&(f.setAttribute("width",String(L)),f.setAttribute("height",String(I))),i.setAttribute("width",String(L)),i.setAttribute("height",String(I)),se()}y.show.anchors&&Q(),Ne()}function Ne(){const y=e.state;if(h.classList.toggle("stacked",y.view!=="side"),p.style.display=y.view==="wipe"?"":"none",y.view==="side")r.classList.remove("hidden"),d.classList.remove("hidden"),r.style.clipPath="",d.style.clipPath="";else if(y.view==="wipe"){r.classList.remove("hidden"),d.classList.remove("hidden");const O=`${(y.wipe*100).toFixed(2)}%`;p.style.left=O,r.style.clipPath=`inset(0 ${(100-y.wipe*100).toFixed(2)}% 0 0)`,d.style.clipPath=`inset(0 0 0 ${O})`}else r.style.clipPath="",d.style.clipPath="",r.classList.toggle("hidden",!y.flicked),d.classList.toggle("hidden",y.flicked);const z=y.detail&&y.zoom>=6;let L=d.querySelector(".pixelgrid");z&&!L&&(L=t("div.pixelgrid"),d.append(L)),L&&(L.style.display=z?"":"none",L.style.backgroundSize=`${y.zoom}px ${y.zoom}px`,L.style.backgroundPosition=`${y.pan.x}px ${y.pan.y}px`);const I=n.querySelector("img");I&&(I.style.imageRendering=y.zoom>=4?"pixelated":"auto")}function Ce(){const y=d.getBoundingClientRect();return{w:y.width||1,h:y.height||1}}function ce(){const{w:y,h:z}=Ce(),L=Math.min(y/c.w,z/c.h)*.88;e.set({zoom:L,pan:{x:(y-c.w*L)/2,y:(z-c.h*L)/2},fitted:!0})}function Ie(y,z,L){const{w:I,h:O}=Ce();e.set({zoom:L,pan:{x:I/2-y*L,y:O/2-z*L},fitted:!1})}function x(y){const{w:z,h:L}=Ce();P(z/2,L/2,Math.min(Zn,Math.max(Vn,y))/e.state.zoom)}function P(y,z,L){const I=e.state,O=Math.min(Zn,Math.max(Vn,I.zoom*L)),X=O/I.zoom;e.set({zoom:O,pan:{x:y-(y-I.pan.x)*X,y:z-(z-I.pan.y)*X},fitted:!1})}for(const y of[r,d])y.addEventListener("wheel",z=>{z.preventDefault();const L=y.getBoundingClientRect();P(z.clientX-L.left,z.clientY-L.top,Math.exp(-z.deltaY*.0016))},{passive:!1}),y.addEventListener("dblclick",ce),y.addEventListener("pointerdown",z=>{if(z.button!==0)return;y.setPointerCapture(z.pointerId);let L=z.clientX,I=z.clientY;const O=Y=>{const he=e.state;e.set({pan:{x:he.pan.x+(Y.clientX-L),y:he.pan.y+(Y.clientY-I)},fitted:!1}),L=Y.clientX,I=Y.clientY},X=()=>{y.removeEventListener("pointermove",O),y.removeEventListener("pointerup",X),y.removeEventListener("pointercancel",X)};y.addEventListener("pointermove",O),y.addEventListener("pointerup",X),y.addEventListener("pointercancel",X)});p.addEventListener("pointerdown",y=>{y.stopPropagation(),p.setPointerCapture(y.pointerId);const z=I=>{const O=h.getBoundingClientRect();e.set({wipe:Math.min(.98,Math.max(.02,(I.clientX-O.left)/O.width))})},L=()=>{p.removeEventListener("pointermove",z),p.removeEventListener("pointerup",L)};p.addEventListener("pointermove",z),p.addEventListener("pointerup",L)});const T=t("style",{"data-owner":"viewer-isolate"});document.head.append(T);function q(){const y=e.state.hoverFill;d.classList.toggle("isolating",!!y?.length),T.textContent=y?.length?vi(y):""}e.on(["svg","source","result"],W),e.on(["compare"],V),e.on(["zoom","pan","view","wipe","flicked","detail"],Se),e.on(["show"],de),e.on(["hoverFill"],q),new ResizeObserver(()=>{!e.state.svg&&!e.state.source||(Ne(),e.state.show.anchors&&Q(),e.state.fitted&&ce())}).observe(h),new MutationObserver(()=>{e.state.show.anchors&&Q(!0)}).observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]});const _=()=>{window.matchMedia(`(resolution: ${window.devicePixelRatio||1}dppx)`).addEventListener("change",()=>{e.state.show.anchors&&Q(),_()},{once:!0})};return _(),{el:g,redraw:W,transform:Se,fit:ce,goTo:Ie,zoomTo:x}}function hi(e){let n="";for(const s of e){const o=s.trim();o&&(n+=o[0]==="M"?o:`M0 0${o}`)}return n}function fi(e){const n=[],s=/]*)>/g;for(let o=s.exec(e);o;o=s.exec(e)){const a=o[1],i=/(?:^|\s)d="([^"]*)"/.exec(a)?.[1]?.trim();if(!i)continue;const r=mi(i);if(!r)continue;const l=Number(/\sdata-sigma-mean="([^"]*)"/.exec(a)?.[1]??0);n.push({d:i[0]==="M"?i:`M0 0${i}`,cls:l<=.1?"sure":l<=.3?"soft":"unsure",x0:r.x0,y0:r.y0,x1:r.x1,y1:r.y1})}return n}const gi=[1,.1,.01,.001,1e-4,1e-5,1e-6,1e-7,1e-8,1e-9,1e-10,1e-11,1e-12,1e-13,1e-14,1e-15];function mi(e){let n=1/0,s=1/0,o=-1/0,a=-1/0,i=!1;const r=e.length;let l=0;for(;l=48&&u<=57||u===46)){p||l++;continue}let h=0;for(;u>=48&&u<=57;)h=h*10+(u-48),u=e.charCodeAt(++l);if(u===46){let g=0,c=0;for(u=e.charCodeAt(++l);u>=48&&u<=57;)c<15&&(g=g*10+(u-48),c++),u=e.charCodeAt(++l);h+=g*gi[c]}if(u===101||u===69){u=e.charCodeAt(++l);const g=u===45;(g||u===43)&&(u=e.charCodeAt(++l));let c=0;for(;u>=48&&u<=57;)c=c*10+(u-48),u=e.charCodeAt(++l);h*=10**(g?-c:c)}d&&(h=-h),i?(ha&&(a=h)):(ho&&(o=h)),i=!i}return n<=o&&s<=a?{x0:n,y0:s,x1:o,y1:a}:null}const yi=1,ut=16,bi=256;function wi(e,n=bi){const s=new Map,o=new Int32Array(e.length),a=[],i={sure:[],soft:[],unsure:[]},r=[],l=yi/2;for(let d=0;dh&&A.y0-lg&&(A.cls===p.cls?r[o[S]]=d+1:o[S]>k&&(k=o[S]))}}let $=-1;for(const M of i[p.cls])if(M>k&&r[M]!==d+1){$=M;break}$<0&&($=a.length,a.push(p.cls),i[p.cls].push($)),o[d]=$;for(let M=C;M<=b;M++)for(let E=m;E<=v;E++){const N=E*65536+M,S=s.get(N);S?S.push(d):s.set(N,[d])}}const u=new Map;for(let d=0;dd[0]-p[0]).map(d=>d[1])}const Ft=".pane.vector > .art > svg:not(.overlay)";function vi(e){const n=new Set;for(const o of e){const a=o.replace(/["\\\n\r]/g,"").trim();if(!a)continue;n.add(a);const i=/^#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3$/i.exec(a);i&&n.add(`#${i[1]}${i[2]}${i[3]}`)}if(!n.size)return"";const s=o=>[...n].map(a=>`[${o}="${a}" i]`).join(",");return[`${Ft} * { fill-opacity: 0.12 !important; stroke-opacity: 0.12 !important; }`,`${Ft} :is(${s("fill")}) { fill-opacity: 1 !important; stroke: var(--ink, #faf8f5) !important; stroke-opacity: 1 !important; stroke-width: 3px !important; vector-effect: non-scaling-stroke !important; paint-order: stroke !important; }`,`${Ft} :is(${s("stroke")}) { stroke-opacity: 1 !important; }`].join(` +`)}function xi(e,n,s){const o=pi(e),a=t("div.viewertools"),i=t("div",{style:{flex:"1",minHeight:"0",position:"relative",display:"flex"}}),r=t("div.statusstrip"),l=t("section.stage",null,a,i,r);let u="";const d=()=>{const c=e.state,f=!!c.source,m=[1,4,12].map(b=>!c.fitted&&Math.abs(c.zoom-b)<.01),v=JSON.stringify([f,c.view,c.show,c.fitted,m,c.detail,!!c.svg,c.bandsMissing]);if(v===u)return;u=v;const C=(b,k)=>t("button",{"aria-pressed":String(k==="fit"?c.fitted:!c.fitted&&Math.abs(c.zoom-k)<.01),disabled:!f,onclick:()=>k==="fit"?o.fit():o.zoomTo(k)},b);D(a,t("div.seg",null,...["side","wipe","ab"].map(b=>t("button",{"aria-pressed":String(c.view===b),disabled:!f,onclick:()=>e.set({view:b})},b==="side"?"Side by side":b==="wipe"?"Wipe":"A/B"))),t("span.muted",{style:{fontSize:"11.5px"}},"hold ",t("kbd",null,"Space")," to flick"),t("div.sep"),t("span.eyebrow",null,"Show"),t("div",{style:{display:"flex",gap:"6px"}},...[["fill","Fill"],["wireframe","Wireframe"],["anchors","Anchors"],["handles","Handles"],["certainty","Certainty"]].map(([b,k])=>t("button.toggle",{"aria-pressed":String(c.show[b]),disabled:!c.svg||b==="certainty"&&c.bandsMissing,title:b==="certainty"?"Where each boundary could be: a band two sigmas either side, measured from the pixels. Thin is certain; a wide band is a soft, blurred or compressed edge, and the curve there is a best guess.":void 0,onclick:()=>{c.show[b]=!c.show[b],e.touch("show")}},k))),t("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:"12px"}},c.show.wireframe||c.show.anchors||c.show.handles||c.show.certainty?t("div.legend",null,c.show.anchors?t("span",null,t("i.anchor"),"anchor"):null,c.show.handles?t("span",null,t("i.handle"),"handle"):null,c.show.wireframe?t("span",null,t("i.wire"),"wireframe"):null,...c.show.certainty?[t("span",null,t("i.band.sure"),"sure"),t("span",null,t("i.band.soft"),"soft"),t("span",null,t("i.band.unsure"),"unsure")]:[]):null,t("button.toggle",{"aria-pressed":String(c.detail),disabled:!c.svg,title:"Show the source's pixel grid under the vector edge",onclick:()=>{const b=!c.detail;e.set({detail:b}),b&&c.zoom<12&&o.zoomTo(12)}},"Detail"),t("div.seg.num",null,C("Fit","fit"),C("1×",1),C("4×",4),C("12×",12))))},p=t("div",{style:{display:"contents"}});i.append(o.el,p);const h=()=>{const c=e.state;if(!c.source){o.el.style.display="none",D(p,Ci(e,n,s()));return}o.el.style.display="",D(p,$i(c.stageState,c,n),c.svg?ki(e):null,c.detail&&c.svg?Si(e,n):null),c.zoom===1&&c.pan.x===0&&c.pan.y===0&&o.fit()},g=()=>{const c=e.state,f=c.report;let m="Ready",v="",C="var(--dim)";if(c.tracing){m=c.liveStages[c.liveStages.length-1]?.name??"starting";const k=c.liveStages.reduce(($,M)=>$+M.ms,0)/1e3;v=`· ${jt(c,c.tracingTier)??"—"} px · ${Ae(k)} elapsed · Esc to cancel`,C="var(--state-stale)"}else if(f&&c.result){const b=c.result.tier==="draft";m=b?"draft shown":`traced in ${Ae(f.seconds)}`,v=b?`· ${f.tracedPx} px · full trace queued`:`· ${f.tracedPx} px · final · ${ne(f.segments)} segments`,C=b?"var(--state-draft)":"var(--state-final)"}else c.source&&(m="Opened",v=`· ${c.source.width} × ${c.source.height} · ${c.source.container}`);D(r,t("span.lead",{style:{color:C}},m),v?t("span",null,v):null,c.update?.newer?t("span",{style:{display:"flex",alignItems:"center",gap:"8px",marginLeft:"12px"}},t("span.updatechip",null,t("i"),`${c.update.latest} available`),t("button.reset",{onclick:n.showUpdate},"What changed")):null,t("span.privacy",null,"Your image never leaves this computer."))};return e.on(["source","view","show","zoom","fitted","detail","svg","bandsMissing"],d),e.on(["source","svg","stageState","result","detail","worstCorner","prefs"],h),e.on(["tracing","liveStages","report","result","source","update"],g),d(),h(),g(),window.addEventListener("keydown",c=>{if(e.state.screen||e.state.tab!=="vectorize"||c.target instanceof HTMLInputElement||c.target instanceof HTMLTextAreaElement)return;const f=e.state;c.key===" "&&!c.repeat?(c.preventDefault(),e.set({flicked:!0})):c.key==="0"?o.fit():c.key==="+"||c.key==="="?o.zoomTo(f.zoom*1.4):c.key==="-"&&o.zoomTo(f.zoom/1.4)}),window.addEventListener("keyup",c=>{c.key===" "&&e.set({flicked:!1})}),{el:l,viewer:o,mount:c=>i.append(c)}}function ki(e){const n=e.state,s=n.tracing?"stale":n.result?.tier==="draft"?"draft":"final",o=n.tracing?`re-tracing · ${jt(n,n.tracingTier)??"—"} px`:`${n.result?.tier??"final"} · ${n.report?.tracedPx??"—"} px`;return t(`span.chip.${s}${n.justSwapped?".swapped":""}`,{style:{position:"absolute",top:"46px",right:"20px"}},t("i"),o)}function Si(e,n){const s=e.state;return t("div.callout",null,t("div.head",null,t("span.eyebrow",null,s.worstCorner?"Worst corner · 12×":"Detail"),s.worstCorner?t("button.reset",{onclick:n.jumpToWorst},"Jump to it"):null),t("span",null,Ai(e)))}function $i(e,n,s){const o=(a,i,r,l,u)=>t("div.stagestate",null,t("span",{style:{color:i,display:"flex"}},U(a,24)),t("span.title",null,r),t("span.body",null,l),u?t("button.action.reset",{onclick:u[1]},u[0]):null);switch(e.kind){case"decoding":return o("clock","var(--faint)",`Reading ${n.source?.name??"the image"}`,`${n.source?.width} × ${n.source?.height}. Tracing starts as soon as the pixels are in memory.`);case"flat":return o("info","var(--gold)","This image is one flat colour","There are no boundaries to trace. A single rectangle would be the whole output.",["Open another image",s.openFile]);case"undecodable":return o("alert","var(--bad)","This file will not decode",e.message,["Open another image",s.openFile]);case"outOfMemory":return o("alert","var(--bad)","The trace would run out of memory",`About ${e.neededGb.toFixed(1)} GB is needed at this trace size. Lowering it to ${e.suggestPx} px usually costs nothing visible.`,[`Retry at ${e.suggestPx} px`,()=>s.retryAt(e.suggestPx)]);case"failed":return o("alert","var(--bad)","The trace stopped",e.message,["Trace again",s.traceNow]);case"cancelled":return o("x","var(--faint)","Trace cancelled","The last full trace is still on screen and still exportable. Nothing was discarded.",["Trace again",s.traceNow]);case"denoiserMissing":return o("download","var(--faint)","This preset wants the denoiser","Photo or scan works without it, but compression damage stays in the colours. The download is explained before anything is fetched, and it runs locally like everything else.",["Download the denoiser",s.openDenoiser]);case"offline":return o("globe","var(--faint)","No network",`Tracing is unaffected — it never needed one. ${e.message}`);default:return null}}function Mi(e,n){const s=e.state.prefs;if(!s||s.seenFirstRun)return null;const o=(a,i,r)=>t("li",null,t("span.introstep.num",null,a),t("div",null,t("span.introtitle",null,i),t("span.faint",null,r)));return t("div.intro",{role:"note"},t("span.eyebrow",null,"How opening an image works"),t("ol",null,o("1","Auto traces it at once.","The moment it opens, with nothing to choose first."),o("2","A small card offers Custom.","A few short steps, each explained, with the result beside Auto's as you go. Ignore it and Auto stands."),o("3","Everything is an ordinary setting.","What Custom chooses is under Tune afterwards, to change like any other control.")),t("div.introfoot",null,t("span.muted",null,"Settings has a switch to always use Auto, or always Custom."),t("button.btn.compact",{"data-ctl":"intro-seen",onclick:n.markSeen},"Got it")))}function Ci(e,n,s){const o=ns(e.state.caps?.platform);return t("div.firstrun",null,Mi(e,n),t("div.drop",null,t("span.glyph",null,U("image",32)),t("div",{style:{display:"flex",flexDirection:"column",gap:"6px"}},t("span.headline.resting",null,"Drop a PNG, JPEG or WebP"),t("span.headline.release",null,"Release to trace"),t("span.faint.resting",{style:{fontSize:"13px"}},"or press ",t("kbd",null,`${o}+O`)," to choose a file")),t("button.btn.primary.resting",{onclick:n.openFile},"Open an image")),s.length?t("div.samples",null,t("span.eyebrow",null,"Or try one of these"),t("div.samplerow",null,...s.map(a=>t("button.sample",{onclick:()=>n.openSample(a.file)},t("span.thumb",null,t("img",{src:a.preview,alt:""})),t("span.label",null,a.label))))):null)}function Es(e,n){const s=e.state.worstCorner;s&&(e.set({detail:!0}),n.goTo(s.x,s.y,12))}function Ai(e){const n=e.state.worstCorner;return n?`Worst disagreement: ${ie(n.de00)} dE00, at ${n.x} × ${n.y} in the traced raster.`:"The trace and the source agree everywhere we can measure."}const Ls={precision:.1,speckleFloor:2,traceSize:2048,timeLimit:0,maxColours:64,colourMerging:.035,flatFills:!1,blackAndWhite:!1,cleanUpDamage:"off",matchRepeatedShapes:!0,matchThreshold:.92,fewerPaths:!1,lineArt:!1,repairRings:!0,editability:!1,bezierCost:6,cornerAngle:10,minify:!1,transparentBackground:!1,margin:0,holesAsCutouts:!1,traceTransparency:!0};function Yn(e,n,s){e[n]=s}const w=new no(eo(Ls,{tolerancePx:.1,judgePx:1024,cornerDegrees:30,documentCleanup:!0}));let Ps=[],Bt=0,Ds=0;const ht=new Map,Ns=new yo;function zi(){const e={...w.state.settings};return delete e.colourGroups,w.state.colourGroups.length&&(e.colourGroups=w.state.colourGroups),e}async function De(e){if(w.state.source)try{const n=w.state.colourGroups,s=await B.startTrace(zi(),e);ht.set(s,n);for(const o of ht.keys())ovoid De("final"),w.state.prefs?.settleMs??800))}function Is(){return new Promise(e=>{if(!w.state.source){e();return}const n=w.on(["result","stageState"],()=>{w.state.tracing||(n(),e())});window.clearTimeout(Bt),De("final")})}function Ti(e,n=w.state.generation){if(e.state==="traced"){const s=w.state.result?.tier==="draft",o=w.state.result?.tier==="final"?w.state.report:w.state.previous;w.set({result:e,resultGeneration:n,resultGroups:ht.get(n)??w.state.resultGroups,bandsMissing:!1,previous:e.tier==="final"?o:w.state.previous,svg:e.svg,report:e.report,palette:e.palette,losses:e.losses,worstCorner:e.worstCorner,stageState:{kind:"drawing"},tracing:!1,justSwapped:s&&e.tier==="final"}),w.state.justSwapped&&window.setTimeout(()=>w.set({justSwapped:!1}),600),e.tier==="final"&&w.set({groupSuggestions:cs(w.state)});const a=w.state.auto;a&&n===a.generation&&e.tier==="final"&&!a.report&&(w.set({auto:{...a,svg:e.svg,report:e.report,palette:e.palette,losses:e.losses}}),B.sourceFacts(a.settings.traceSize).then(i=>{w.state.auto?.generation===n&&w.set({facts:i})},()=>{})),e.oversized&&e.tier==="final"&&H(`Traced at ${e.tracedPx} px; the SVG is still ${e.sourcePx[0]} × ${e.sourcePx[1]} and scales without limit. This is normal.`);return}switch(w.set({tracing:!1}),e.state){case"flat":w.set({stageState:{kind:"flat"},svg:null,report:null,palette:[],losses:[]});break;case"undecodable":w.set({stageState:{kind:"undecodable",message:e.message}});break;case"outOfMemory":w.set({stageState:{kind:"outOfMemory",neededGb:e.neededGb,suggestPx:e.suggestPx}});break;case"failed":w.set({stageState:{kind:"failed",message:e.message}});break}}async function Ge(e,n=!0){We.close(),w.set({stageState:{kind:"decoding"},svg:null,report:null,previous:null,palette:[],losses:[],result:null,colourGroups:[],resultGroups:[],groupSuggestions:null,dismissedGroups:[],simplifyTo:null,paletteSelection:[],hoverFill:null,auto:null,facts:null,chooser:!1,compare:null,autoNoteHidden:!1});try{await e(),w.set({zoom:1,pan:{x:0,y:0},stageState:{kind:"drawing"}}),await De("final"),Ns.reset();const s=w.state;s.tracing&&w.set({auto:{generation:s.generation,settings:{...s.settings},preset:s.preset,svg:null,report:null,palette:[],losses:[]}}),n&&Ei()}catch(s){w.set({stageState:{kind:"undecodable",message:String(s)}})}}function Ei(){const e=w.state.prefs?.onOpen??"ask";e==="custom"?We.open():e==="ask"&&w.set({chooser:!0})}async function _s(e){await Ge(async()=>{const n=await B.openPath(e);w.set({source:n});const s=await B.loadPrefs();w.set({prefs:s})})}async function ft(e){if(e.path)return _s(e.path);const n=e.file;n&&await Ge(async()=>{const s=await B.openBytes(new Uint8Array(await n.arrayBuffer()),e.name);w.set({source:s})})}async function ln(){const[e]=await Vt([{name:"Images and SVG",extensions:["png","jpg","jpeg","webp","gif","bmp","tif","tiff","svg"]}]);e&&await ft(e)}async function Li(e,n){w.set({tab:"vectorize"}),yt(),await Ge(async()=>{const s=await B.openBytes([...new TextEncoder().encode(e)],n);w.set({source:s})},!1)}window.addEventListener("inkvec:retrace",e=>{const{svg:n,name:s}=e.detail;Li(n,s)});const Gt=t("header.appbar"),Ye=t("div.body"),Pi=Qa(w,{applyPrefs:e=>void He(e),close:()=>w.set({screen:null})}),Mt=xi(w,{openFile:()=>void ln(),openSample:e=>void Ge(async()=>{const n=await B.openSample(e);w.set({source:n})}),traceNow:()=>void De("final"),cancel:()=>{B.cancelTrace(),w.set({tracing:!1,stageState:w.state.svg?{kind:"cancelled"}:{kind:"empty"}})},retryAt:e=>{w.state.settings.traceSize=e,w.touch("settings"),De("final")},jumpToWorst:()=>Es(w,Mt.viewer),openDenoiser:()=>rn(w),showUpdate:()=>{const e=w.state.update;e&&xt(e.url)},markSeen:()=>void He({seenFirstRun:!0})},()=>Ps);function Fs(e){const n=w.state.caps?.presets.find(o=>o.id===e);if(n)return{settings:n.settings,wantsDenoiser:n.wantsDenoiser};const s=w.state.prefs?.saved.find(o=>o.id===e);return s?{settings:s.settings,wantsDenoiser:!1}:null}function Jn(){const e=w.state.preset;return e&&Fs(e)?.settings||Ls}function Os(e){w.set({settings:{...e.settings},preset:e.preset,colourGroups:[...e.colourGroups]}),Fe()}const Rs={setPreset:e=>{const n=Fs(e);n&&(w.set({preset:e,settings:{...n.settings}}),n.wantsDenoiser&&w.state.caps?.denoiser.supported&&!w.state.caps.denoiser.installed&&w.set({stageState:{kind:"denoiserMissing"}}),Fe())},savePreset:e=>{const n=w.state.prefs;if(!n)return;const s=`saved:${Date.now().toString(36)}${Math.random().toString(36).slice(2,6)}`,o=[...n.saved,{id:s,name:e,settings:{...w.state.settings}}];He({saved:o}).then(()=>{const a=w.state.prefs?.saved.find(i=>i.id===s);a?(w.set({preset:s}),H(`Saved as "${a.name}".`,{kind:"good"})):H("The preset tray is full. Forget one and try again.",{kind:"bad"})})},deletePreset:e=>{const n=w.state.prefs;n&&(He({saved:n.saved.filter(s=>s.id!==e)}),w.state.preset===e&&w.set({preset:null}))},baseSettings:Jn,changeSetting:(e,n)=>{Yn(w.state.settings,e,n),w.touch("settings");const s=w.state.caps?.denoiser;e==="cleanUpDamage"&&n!=="off"&&s?.supported&&!s.installed&&w.set({stageState:{kind:"denoiserMissing"}}),Fe()},resetGroup:e=>{const n=Jn();for(const s of w.state.caps?.controls??[])s.group===e&&Yn(w.state.settings,s.key,n[s.key]);w.touch("settings"),Fe()},traceNow:()=>void De("final"),cancel:()=>{B.cancelTrace(),w.set({tracing:!1,stageState:w.state.svg?{kind:"cancelled"}:{kind:"empty"}})},snap:(e,n)=>void Di(e,n),setColourGroups:e=>{w.set({colourGroups:e,paletteSelection:[]}),Fe()},openExport:()=>$s(w,Ct,Is),copySvg:async()=>{w.state.svg&&(await vt(w.state.svg),H("SVG copied. Paste straight into Figma or Illustrator."))},saveCard:()=>ya(w),openDenoiser:()=>rn(w),jumpToWorst:()=>Es(w,Mt.viewer),backToAuto:()=>{const e=w.state.auto;e&&Os({settings:e.settings,preset:e.preset,colourGroups:w.state.colourGroups})},hideAutoNote:()=>w.set({autoNoteHidden:!0}),openWizard:()=>We.open()},Ct=jo(w,Rs),Bs={...Rs,restore:Os,setOnOpen:e=>void He({onOpen:e}),markSeen:()=>void He({seenFirstRun:!0})},We=ma(w,Ct,Bs,Ns);Mt.mount(ha(w,Bs,()=>We.open()));async function Di(e,n){const s=w.state;if(!(!s.svg||!s.report))try{const o=await B.snapInks(s.svg,[{from:e,to:n}],s.report.tracedPx,s.report.tracedPx);w.set({svg:o.svg,palette:o.inks})}catch(o){H(String(o),{kind:"bad"})}}let Wt=null,Ht=null,Xn=null;function yt(){const e=w.state;e.tab==="vectorize"?D(Ye,Mt.el,Ct):e.tab==="minify"?(Wt??=Ca(w),D(Ye,Wt)):e.tab==="fabricate"?(Ht??=Ea(w),D(Ye,Ht)):(Xn??=ka(w),D(Ye,Xn))}function Kn(){const e=w.state;D(Gt,t("span.brand",null,es(18),wt),e.tab==="vectorize"&&e.source?t("div.filechip",null,t("span.name",null,e.source.name),t("span.muted.num",null,`${e.source.width} × ${e.source.height} · ${e.source.container}`)):null,t("div.seg",{style:{marginLeft:"auto"}},...[["vectorize","Vectorize"],["minify","Minify SVG"],["fabricate","Fabricate"]].map(([n,s])=>t("button",{"aria-pressed":String(e.tab===n),onclick:()=>w.set({tab:n})},s))),t("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:"2px"}},t("button.btn.ghost.compact",{onclick:()=>void ln()},"Open…"),null,t("button.btn.ghost.compact",{onclick:()=>w.set({screen:"settings"})},"Settings"),t("button.btn.ghost.compact",{onclick:()=>w.set({screen:"about"})},"About"),t("button.btn.ghost.compact",{title:"Before and after on real logos, and how Inkvec compares",onclick:()=>w.set({screen:"showcase"})},"Showcase"),t("button.btn.ghost.compact",{title:"The user guide (F1)",onclick:()=>sn(Ms(w.state))},"Help"),t("div.sep"),et())),Gt.setAttribute("data-tauri-drag-region","")}async function He(e){const n=w.state.prefs;if(!n)return;const s={...n,...e},o=await B.savePrefs(s);w.set({prefs:o}),qt(o.theme)}function qt(e){const n=e==="dark"||e==="system"&&window.matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.dataset.theme=n?"dark":"light"}function Ni(e){const n=e.metaKey||e.ctrlKey,s=e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement;if(n&&e.key.toLowerCase()==="o"){e.preventDefault(),ln();return}if(n&&e.key.toLowerCase()==="e"&&w.state.svg){e.preventDefault(),$s(w,Ct,Is);return}if(n&&e.key===","){e.preventDefault(),w.set({screen:"settings"});return}if(!s){if(n&&/^[1-8]$/.test(e.key)){const o=w.state.caps?.presets[Number(e.key)-1];o&&(e.preventDefault(),w.set({preset:o.id,settings:{...o.settings}}),Fe());return}e.key==="Escape"&&(w.state.screen?w.set({screen:null}):We.isOpen()?We.close(!0):w.state.chooser?w.set({chooser:!1}):w.state.tracing&&(B.cancelTrace(),w.set({tracing:!1,stageState:w.state.svg?{kind:"cancelled"}:{kind:"empty"}})))}}async function Ii(){{ho(w,e=>void _i(e.map(os)));return}}async function _i(e){if(!e.length)return;const n=e.filter(s=>s.name.toLowerCase().endsWith(".svg"));if(n.length===1&&e.length===1&&w.state.tab==="vectorize"){await ft(n[0]);return}if(n.length){const s=w.state.tab==="fabricate"?"fabricate":"minify";w.set({tab:s}),yt(),await(s==="fabricate"?Ht:Wt)?.acceptDropped?.(n[0]);return}if(e.length>1){H(`${e.length} files dropped. ${wt} opens one image at a time; the desktop app has Batch.`),await ft(e[0]);return}w.set({tab:"vectorize"}),await ft(e[0])}async function Fi(){const e=document.getElementById("app");if(!e)return;e.append(Gt,Ye,Pi),go(e),Kn(),yt(),w.on(["tab","source","prefs","caps"],Kn),w.on(["tab"],yt),window.addEventListener("keydown",Ni),xa(w),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>qt(w.state.prefs?.theme??"system")),document.addEventListener("click",a=>{const i=a.target?.closest?.("a[href]"),r=i?.getAttribute("href")??"";i&&/^(https?:|mailto:)/i.test(r)&&(a.preventDefault(),xt(r).catch(()=>H("Could not open the link in your browser.",{kind:"bad"})))}),await Me.traceStage(({generation:a,name:i,ms:r})=>{if(a!==Ds)return;const l=[...w.state.liveStages],u=l.find(d=>d.name===i);u?u.ms+=r:l.push({name:i,ms:r}),w.set({liveStages:l})}),await Me.traceDone(({generation:a,outcome:i})=>{a===w.state.generation&&Ti(i,a)}),await Me.openPath(a=>void Qn(a)),await Me.batchRow(a=>{const i=w.state.batch,r=i.rows.findIndex(l=>l.id===a.id);r>=0&&(i.rows[r]=a),w.touch("batch")}),await Me.batchTotals(a=>{w.state.batch.totals=a,w.touch("batch")}),await Me.batchFinished(a=>{const i=w.state.batch;i.rows=a,i.running=!1,i.paused=!1,w.touch("batch");const r=a.filter(l=>l.state==="failed").length;H(r?`Batch finished · ${r} failed. Sort failures first to see them.`:`Batch finished · ${a.filter(l=>l.state==="done").length} written.`,{kind:r?"bad":"good"})});const[n,s]=await Promise.all([B.capabilities(),B.loadPrefs()]);w.set({caps:n,prefs:s,settings:s.trace}),qt(s.theme),Ot(`Engine ${n.engineVersion} · ${n.buildTarget}`,.55),Ps=await B.listSamples(),w.touch("source"),Ot("Preparing the workspace…",.85),await Ii(),Ot("Ready",1),B.appReady().catch(()=>{});const o=await B.launchPath().catch(()=>null);o&&Qn(o),mo().then(Oi),s.checkUpdates&&B.checkUpdate().then(a=>w.set({update:a})).catch(()=>{})}async function Oi(e){e&&(w.set({tab:"vectorize",screen:null}),"sample"in e?await Ge(async()=>w.set({source:await B.openSample(e.sample)})):await Ge(async()=>w.set({source:await B.openBytes(e.bytes,e.name)})))}async function Qn(e){w.set({tab:"vectorize",screen:null}),await _s(e)}function Ot(e,n){B.startupProgress(e,n).catch(()=>{})}Fi().catch(e=>{B.appReady().catch(()=>{});const n=document.getElementById("app");n&&D(n,t("div.firstrun",null,t("span.serif",{style:{fontSize:"24px"}},`${wt} could not start`),t("span.faint",{style:{maxWidth:"50ch",textAlign:"center"}},String(e))))}); diff --git a/studio/assets/showcase-Ip4y7DPQ.js b/studio/assets/showcase-Ip4y7DPQ.js new file mode 100644 index 0000000000000000000000000000000000000000..218d9e6930562496f4deaf5ba542bd7ba011da88 --- /dev/null +++ b/studio/assets/showcase-Ip4y7DPQ.js @@ -0,0 +1 @@ +const A="crosscompare-competitors-2026-09-25",c="2026-09-25",l="crosscompare-2026-09-15-v1",r=21,e=["brands","fluent-emoji","lucide","material-icons","noto-emoji","openmoji","simple-icons","synthetic","twemoji"],t=[{id:"inkvec",name:"Inkvec",n:21,de_mean:.11598414710412423,de_median:.05346144735813141,dists:.01684944686435518,dino:.9947508147784642,geometry_mean:1.4790657486960306,geometry_median:1.038728897715988,coordinates:467.7142857142857,seconds_median:.564837499987334,seconds_mean:.7060960714283976},{id:"trazor-auto",name:"Trazor (PhenX/Trazor, MIT)",n:21,de_mean:.5182975897831577,de_median:.226552352309227,dists:.04785776989800589,dino:.9711342624255589,geometry_mean:7.6338167938788475,geometry_median:2.0961538461538463,coordinates:1171.7142857142858,seconds_median:1.7459360000211746,seconds_mean:1.7677349666649076},{id:"vtracer-1.0-simplify",name:"VTracer 1.0.0-alpha.4, best flags (--simplify)",n:21,de_mean:1.264425209590367,de_median:.5786392688751221,dists:.06364915768305461,dino:.9538261265981764,geometry_mean:4.957812730157383,geometry_median:2.693048128342246,coordinates:1239.3333333333333,seconds_median:.042943400010699406,seconds_mean:.04350283333943004},{id:"vtracer-1.0-default",name:"VTracer 1.0.0-alpha.4 (default)",n:21,de_mean:1.3025437990824382,de_median:.5983838438987732,dists:.050760584218161445,dino:.963265373593285,geometry_mean:9.055890547225113,geometry_median:4.34640522875817,coordinates:1943.2380952380952,seconds_median:.04223419999470934,seconds_mean:.041051433332974},{id:"vtracer-default",name:"VTracer 0.6.15 (PyPI, default)",n:21,de_mean:1.3025041811522984,de_median:.5982004404067993,dists:.05079895257949829,dino:.9633089076905024,geometry_mean:9.055285220348601,geometry_median:4.34640522875817,coordinates:1942.952380952381,seconds_median:.029981100000441074,seconds_mean:.034969528567411805}],f={inkvec:21},i=JSON.parse('[{"key":"brands__shinhancard_com","label":"Shinhan Card","what":"brand logo","artist":{"paths":12,"coordinates":1542,"geometry_params":1542},"input":"data:image/png;base64,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","engines":{"inkvec":{"svg":"\\n\\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.05410537123680115,"dists":0.014956772327423096,"dino":0.9994577169418335,"coordinates":356,"geometry_ratio":0.248378728923476,"paths":4,"bytes":3516,"seconds":0.6478184000006877,"gradients":0,"arcs":3,"cubics":16,"lines":110,"primitives":3},"vtracer-1.0-simplify":{"svg":"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n","de1024":0.5712850093841553,"dists":0.05452615022659302,"dino":0.9714457988739014,"coordinates":1254,"geometry_ratio":0.8132295719844358,"paths":17,"bytes":5546,"seconds":0.04579830000875518,"gradients":0,"arcs":0,"cubics":198,"lines":0,"primitives":0},"trazor-auto":{"svg":"","de1024":0.21315760910511017,"dists":0.02556788921356201,"dino":0.9954003691673279,"coordinates":886,"geometry_ratio":0.791828793774319,"paths":3,"bytes":7882,"seconds":1.6637012000137474,"gradients":0,"arcs":11,"cubics":68,"lines":139,"primitives":70}}},{"key":"brands__sangchaimeter_com","label":"SCM","what":"brand logo, halftone dots","artist":{"paths":176,"coordinates":1186,"geometry_params":2805},"input":"data:image/png;base64,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w7P/VZep/81+GURKkpS1Z/p1Fp3/+HKNKaXmdAOjC8jhxopKkuxfRA4AaAAAADANnwMAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAAAANAAAAEADAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAADQAAABAAwAAQANABAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAACABgAAAGgAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAABoAAAAgAYAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAAaAAAAIAGAAAA/+z+H+S21KIQq2j0AAAAAElFTkSuQmCC","engines":{"inkvec":{"svg":"\\n\\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.23315152525901794,"dists":0.013688862323760986,"dino":0.9988150000572205,"coordinates":1540,"geometry_ratio":0.8188948306595365,"paths":3,"bytes":20883,"seconds":0.7802307000092696,"gradients":0,"arcs":123,"cubics":113,"lines":138,"primitives":64},"vtracer-1.0-simplify":{"svg":"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n","de1024":1.456026554107666,"dists":0.0950784683227539,"dino":0.9827569723129272,"coordinates":7554,"geometry_ratio":2.693048128342246,"paths":183,"bytes":34819,"seconds":0.047293700015870854,"gradients":0,"arcs":0,"cubics":1136,"lines":26,"primitives":0},"trazor-auto":{"svg":"","de1024":0.49879807233810425,"dists":0.03020763397216797,"dino":0.993212103843689,"coordinates":2302,"geometry_ratio":0.9536541889483066,"paths":30,"bytes":20035,"seconds":1.6750226999865845,"gradients":0,"arcs":39,"cubics":243,"lines":219,"primitives":83}}},{"key":"simple-icons__barclays","label":"Barclays eagle","what":"brand icon (Simple Icons)","artist":{"paths":1,"coordinates":424,"geometry_params":499},"input":"data:image/png;base64,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","engines":{"inkvec":{"svg":"\\n\\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.0347171314060688,"dists":0.0034703612327575684,"dino":0.9997870922088623,"coordinates":202,"geometry_ratio":0.5731462925851704,"paths":1,"bytes":2388,"seconds":0.6381394999916665,"gradients":0,"arcs":16,"cubics":25,"lines":8,"primitives":1},"vtracer-1.0-simplify":{"svg":"\\n\\n\\n\\n\\n\\n","de1024":0.4050329327583313,"dists":0.02310490608215332,"dino":0.9926386475563049,"coordinates":558,"geometry_ratio":1.1182364729458918,"paths":2,"bytes":3122,"seconds":0.04228449999936856,"gradients":0,"arcs":0,"cubics":92,"lines":0,"primitives":0},"trazor-auto":{"svg":"","de1024":0.16599281132221222,"dists":0.01217275857925415,"dino":0.9976681470870972,"coordinates":362,"geometry_ratio":0.875751503006012,"paths":1,"bytes":2101,"seconds":1.5065052999998443,"gradients":0,"arcs":15,"cubics":49,"lines":18,"primitives":0}}},{"key":"brands__jurlique_com_au","label":"Jurlique","what":"brand wordmark","artist":{"paths":5,"coordinates":740,"geometry_params":740},"input":"data:image/png;base64,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AIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAEAAAAAIAAEAAAAAIAAAAAQAAIAAAAAQAAIAAAAAQAAAAAgAAQAAAAAgAAAABAAAgAAAABAAAgAAAABAAAAACAABAAAAACAAAAAEAACAAAAAEAACAAAAAAgAAQAAAAAgAAAABAAB4l/x/E8mPzTK2To0AAAAASUVORK5CYII=","engines":{"inkvec":{"svg":"\\n\\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.07824061810970306,"dists":0.015002787113189697,"dino":0.9971367120742798,"coordinates":282,"geometry_ratio":0.4337837837837838,"paths":5,"bytes":3469,"seconds":0.564837499987334,"gradients":1,"arcs":7,"cubics":21,"lines":57,"primitives":1},"vtracer-1.0-simplify":{"svg":"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n","de1024":0.5383956432342529,"dists":0.08167964220046997,"dino":0.95943284034729,"coordinates":1348,"geometry_ratio":1.8216216216216217,"paths":22,"bytes":5677,"seconds":0.046780800010310486,"gradients":0,"arcs":0,"cubics":212,"lines":6,"primitives":0},"trazor-auto":{"svg":"","de1024":0.18039827048778534,"dists":0.045366883277893066,"dino":0.9916336536407471,"coordinates":1298,"geometry_ratio":1.864864864864865,"paths":8,"bytes":6974,"seconds":1.7459360000211746,"gradients":0,"arcs":6,"cubics":116,"lines":241,"primitives":13}}},{"key":"noto-emoji__emoji_u1f478_1f3fd","label":"Princess","what":"Noto emoji, gradients","artist":{"paths":29,"coordinates":1182,"geometry_params":1196},"input":"data:image/png;base64,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","engines":{"inkvec":{"svg":"\\n\\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.17755113542079926,"dists":0.018255233764648438,"dino":0.9955331683158875,"coordinates":1130,"geometry_ratio":1.1622073578595318,"paths":28,"bytes":13374,"seconds":1.2128170999931172,"gradients":4,"arcs":49,"cubics":78,"lines":236,"primitives":7},"vtracer-1.0-simplify":{"svg":"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n","de1024":0.8250677585601807,"dists":0.0352138876914978,"dino":0.9913966059684753,"coordinates":2148,"geometry_ratio":1.7959866220735785,"paths":37,"bytes":11259,"seconds":0.054767000023275614,"gradients":0,"arcs":0,"cubics":336,"lines":6,"primitives":0},"trazor-auto":{"svg":"","de1024":0.41937685012817383,"dists":0.03579515218734741,"dino":0.9913080334663391,"coordinates":2300,"geometry_ratio":2.0961538461538463,"paths":12,"bytes":12578,"seconds":2.0954551000031643,"gradients":0,"arcs":35,"cubics":324,"lines":104,"primitives":14}}},{"key":"fluent-emoji__Face_with_medical_mask_Color_face_with_medical_mask_color","label":"Face with mask","what":"Fluent emoji, gradients","artist":{"paths":23,"coordinates":468,"geometry_params":472},"input":"data:image/png;base64,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Wdat8kHRgeAeHSHubJZV3FBwUcyPZoNLi31X+HNZFEYRFHIGYZUJ8Abz3mneO9gob3QsvRyaREQc5p9eOBUXn3Hd8FVvCFe1uW47LQG0s5vJ4OJP/5cLn7+0euFkjCudcCX+uoUgxNaTwPYBlNdfK+kI4+lYCKZdoF8h+7I0wIYnatmPGtwBz/RP6ws1siQPCeMCPry1QNVG+OCu9sn9bM6KGGqag+IMwyroqfDRYP7i/LFLS8++fviq17Wg305LAO3sD0Z06YP3XXjg0tqFE6N4pCcNuPhY8oEf8JaP4Va0UPRKjcFtGSGgGgt7lJ9R9Jtp3FIYklOWJeSL0BD5zWGadEiwORbUg+ADnQq/Gu2CeO78wvGLCzcdH77klYPnvKS9/dppCaCdGUoGl+/7vbXPPXXp8eHa+glgvj8TuHxg0HZnLEPGEkBjsRkvq740xCrA5gMboy3cn41+QeNcgrthvZIMclJx2CTiY4KcUF2ZWiLi8vzS+eFpmr/hquEXvS5cdWN7m7XTEkA7B6Y5uPzwxbVzi6trV4/NBK5r8DIPPiX4zkC8A0r3YL0BjB4CbzzONUIUk9f4G4gF1YtdvFECqKfQyXTlsfnjcf6Wq4YvuHPwnBe3N1I7LQG0c+DP6i+/f+2PHlp74KnVJwPi3NraNbRxLqDOtpciPJUnjGMWlXYhf4mJrYcX7Ai6o/K/WQLgTRPAxAdgYhouPzZYWAsrPH/DVXM33Tj/8te2t0o7LQG0cwW0CB/76PpnPnvpdx+Mq7R2fri+diqhRv3JwMVgVJJwokRdV/rcJYkWreT0iM7yV73bhQ1j/RbuIOa1ucWz88fWw5AWnnvr4ObbBs+9q70N2mkJoJ12pFF4//vjk2fXH3x8/cnLuIzV8wtEtLZ6bX8y6E8MCSxi7QC6Zb55nlo4iGsXGPXG6o4H+jfChkuPENHcsbUwT/Onj4SrT/HxY/OvuKf9cdtpCaCddnaQG546S0SXPv55kgB/+fGFHMjjcLR2aux7PdgoHzVj1CITvq73pjQ0GD4awih9vHDVqj544Xk3EBEfPT7/qhbl22kJoJ129vusf+wj63/wh5NCNBb2MZOEuWfcOveCO9vFbKclgHbaaaeddg7PCe0StNNOO+20BNBOO+20005LAO2000477bQE0E477bTTTksA7bTTTjvttATQTjvttNNOSwDttNNOO+20BNBOO+20005LAO2000477bQE0E477bTTTksA7bTTTjvttATQTjvttNNOSwDttNNOO+20BNBOO+20005LAO2000477bQE0E477bTTTksA7bTTTjvttATQTjvttNNOSwDttNNOO+20BNBOO+20005LAO2000477bQE0E477bTTTksA7bTTTjvttATQTjvttNMSQDvttNNOOy0BtNNOO+200xJAO+200047LQG000477bTTEkA77bTTTjstAbTTTjvttNMSQDvttNNOOy0BtNNOO+200xJAO+200047LQG000477bTTEkA77bTTTjstAbTTTjvttNMSQDvttNNOOy0BtNNOO+200xJAO+200047LQG000477bTTEkA77bTTTjstAbTTTjvttNMSQDvttNNOOy0BtNNOO+200xJAO+200047LQG000477bTTEkA77bTTzpV+/n+PD2Cg00J3VAAAAABJRU5ErkJggg==","engines":{"inkvec":{"svg":"\\n\\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.679296612739563,"dists":0.0905103087425232,"dino":0.9709986448287964,"coordinates":894,"geometry_ratio":2.4004237288135593,"paths":29,"bytes":14893,"seconds":1.2288422000128776,"gradients":18,"arcs":47,"cubics":23,"lines":300,"primitives":1},"vtracer-1.0-simplify":{"svg":"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n","de1024":3.917470693588257,"dists":0.12030941247940063,"dino":0.9030295610427856,"coordinates":1012,"geometry_ratio":2.1440677966101696,"paths":11,"bytes":5366,"seconds":0.043395399989094585,"gradients":0,"arcs":0,"cubics":162,"lines":4,"primitives":0},"trazor-auto":{"svg":"","de1024":3.8670613765716553,"dists":0.1159868836402893,"dino":0.9119796752929688,"coordinates":636,"geometry_ratio":1.4618644067796611,"paths":5,"bytes":3452,"seconds":1.7424108999839518,"gradients":0,"arcs":10,"cubics":87,"lines":38,"primitives":1}}},{"key":"openmoji__1F334","label":"Palm tree","what":"OpenMoji","artist":{"paths":11,"coordinates":286,"geometry_params":286},"input":"data:image/png;base64,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","engines":{"inkvec":{"svg":"\\n\\nInkvec (https://logolabs.org)https://github.com/logolabs/inkvec","de1024":0.08318335562944412,"dists":0.005840718746185303,"dino":0.9998347163200378,"coordinates":384,"geometry_ratio":1.7412587412587412,"paths":3,"bytes":3947,"seconds":0.5330908999894746,"gradients":0,"arcs":22,"cubics":35,"lines":56,"primitives":1},"vtracer-1.0-simplify":{"svg":"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n","de1024":0.5740787982940674,"dists":0.041034996509552,"dino":0.9954640865325928,"coordinates":794,"geometry_ratio":2.7762237762237763,"paths":9,"bytes":4355,"seconds":0.0368908999953419,"gradients":0,"arcs":0,"cubics":128,"lines":0,"primitives":0},"trazor-auto":{"svg":"","de1024":0.31811508536338806,"dists":0.027923285961151123,"dino":0.9973630309104919,"coordinates":866,"geometry_ratio":3.664335664335664,"paths":5,"bytes":6064,"seconds":1.8486791999894194,"gradients":0,"arcs":10,"cubics":113,"lines":40,"primitives":33}}}]'),d={run:A,date:c,seed:l,cases:21,families:e,engines:t,best_de_wins:f,gallery:i};export{f as best_de_wins,r as cases,c as date,d as default,t as engines,e as families,i as gallery,A as run,l as seed}; diff --git a/studio/assets/zip-DlX9-WSC.js b/studio/assets/zip-DlX9-WSC.js new file mode 100644 index 0000000000000000000000000000000000000000..46afebedaffe52adda29d364dc980a57c76d3bc2 --- /dev/null +++ b/studio/assets/zip-DlX9-WSC.js @@ -0,0 +1 @@ +const b=(()=>{const u=new Uint32Array(256);for(let n=0;n<256;n++){let t=n;for(let c=0;c<8;c++)t=t&1?3988292384^t>>>1:t>>>1;u[n]=t>>>0}return u})();function m(u){let n=4294967295;for(let t=0;t>>8;return(n^4294967295)>>>0}function v(u){const n=new TextEncoder,t=[],c=[];let l=0;const h=0,g=33;for(const r of u){const i=n.encode(r.name),y=m(r.data),U=r.data.length,a=new Uint8Array(30+i.length),s=new DataView(a.buffer);s.setUint32(0,67324752,!0),s.setUint16(4,20,!0),s.setUint16(6,2048,!0),s.setUint16(8,0,!0),s.setUint16(10,h,!0),s.setUint16(12,g,!0),s.setUint32(14,y,!0),s.setUint32(18,U,!0),s.setUint32(22,U,!0),s.setUint16(26,i.length,!0),s.setUint16(28,0,!0),a.set(i,30),t.push(a,r.data);const f=new Uint8Array(46+i.length),e=new DataView(f.buffer);e.setUint32(0,33639248,!0),e.setUint16(4,20,!0),e.setUint16(6,20,!0),e.setUint16(8,2048,!0),e.setUint16(10,0,!0),e.setUint16(12,h,!0),e.setUint16(14,g,!0),e.setUint32(16,y,!0),e.setUint32(20,U,!0),e.setUint32(24,U,!0),e.setUint16(28,i.length,!0),e.setUint32(42,l,!0),f.set(i,46),c.push(f),l+=a.length+U}const D=c.reduce((r,i)=>r+i.length,0),w=new Uint8Array(22),o=new DataView(w.buffer);o.setUint32(0,101010256,!0),o.setUint16(8,u.length,!0),o.setUint16(10,u.length,!0),o.setUint32(12,D,!0),o.setUint32(16,l,!0);const d=[...t,...c,w],p=new Uint8Array(d.reduce((r,i)=>r+i.length,0));let A=0;for(const r of d)p.set(r,A),A+=r.length;return p}export{m as crc32,v as zipStore}; diff --git a/denoise.js b/studio/denoise.js similarity index 100% rename from denoise.js rename to studio/denoise.js diff --git a/logo.svg b/studio/favicon.svg similarity index 100% rename from logo.svg rename to studio/favicon.svg diff --git a/studio/fonts/inter-latin.woff2 b/studio/fonts/inter-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d15208de03cd1ad7c5199f0a0ce915fe841e4722 Binary files /dev/null and b/studio/fonts/inter-latin.woff2 differ diff --git a/studio/fonts/playfair-latin.woff2 b/studio/fonts/playfair-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5a3fbbdae8f66414a2754017de622f3c74c536b0 Binary files /dev/null and b/studio/fonts/playfair-latin.woff2 differ diff --git a/studio/guide/batch.html b/studio/guide/batch.html new file mode 100644 index 0000000000000000000000000000000000000000..ed3531637b9db6caeba0256a70e491d5b693f390 --- /dev/null +++ b/studio/guide/batch.html @@ -0,0 +1,101 @@ + + + + + + +Batch · Inkvec Studio guide + + + +
+ +

Batch

+

The Batch tab traces every image in a folder and writes one SVG for each. It is for a set of +icons, a folder of partner logos, or a brand library.

+

The Batch tab with a folder of twelve images queued

+

Running a batch

+
    +
  1. Choose a folder… picks the folder of images. Every PNG, JPEG, WebP, GIF, BMP and TIFF in + it is listed, sorted by name. Subfolders are not included, and SVG files are skipped.
  2. +
  3. Output is where the SVGs go. It starts as a folder called svg inside the input folder; + press it to choose another. It is created if it does not exist.
  4. +
  5. Preset for all chooses the preset every queued file uses. To give one file a different + preset, click the preset in its row and choose; the rest stay as they are.
  6. +
  7. Skip existing (on at first) leaves a file alone if its SVG is already in the output folder, + so a batch that was stopped can be run again to finish. Turn it off to overwrite.
  8. +
  9. Start.
  10. +
+

Each output file has the image's name with .svg: acme-mark.png becomes acme-mark.svg.

+

Files are traced one at a time, each at full quality: the tracer already uses every processor core +on the file it is working on, so tracing several at once would not be faster. If you trace +something in the Vectorize tab during a batch, it goes first, and the batch waits for it.

+

Pause stops before the next file, and Resume carries on; Cancel stops the run after +the file in progress. The file being traced is always finished, never left half-written.

+

What each row says

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ColumnShows
FileThe image's name.
PresetThe preset for this file. Once a row has run it cannot be changed, because the figures beside it were measured with that preset.
Statusqueued, running, done, skipped or failed.
dE00The mean colour difference of this file's trace, as in the quality report.
CoordinatesThe coordinates in its SVG.
OutputThe SVG's size.
DestinationWhere the SVG was written, or, for a failed row, why it failed. Hover a row to read the whole message.
+

The footer shows progress, an estimate of the time left, and once rows have finished, the mean +colour difference, the bytes written, and how much smaller that is than the source images.

+

Failures stay listed after the run. Failures first sorts them to the top, so a failed file +cannot scroll away unnoticed. Export stats.csv saves every row (file, preset, status, colour +difference, coordinates, bytes, seconds, destination, message) as a spreadsheet.

+

Which settings a batch uses

+

A batch starts from the controls of your last trace in the Vectorize tab, then applies each +row's preset on top: the settings a preset changes from the defaults (Precision, Speckle floor, +Trace size, Max colours, Colour merging, the denoiser, Black & white, Line art, Fewer paths) come +from the preset, and everything else, the Output settings such as Minify and +Transparent background included, comes from your last trace. Set the Output group the way you +want it in Vectorize before starting a batch.

+

Colour groups are never used: they belong to one image.

+

In version 0.2.0 the Editable preset does not turn on Editable structure in a batch (it is not +one of the settings listed above). To batch editable SVGs, turn Editable on in the Vectorize +tab, trace any image, and run the batch.

+

The batch writes SVGs only. For PNGs, favicons or an asset pack, export each image from Vectorize.

+

Dropping files

+

Several files dropped on the window switch to this tab, but are not queued: a batch works on a +folder. Choose the folder they are in.

+

Studio Lite

+

The Batch tab needs to read and write folders on disk, so it is not in Studio Lite. Trace the +images one at a time in Vectorize, or use the inkvec command line in a shell loop, one +inkvec logo.png -o svg/logo.svg per file.

+ +
+ + diff --git a/studio/guide/export.html b/studio/guide/export.html new file mode 100644 index 0000000000000000000000000000000000000000..8a43176e8c8b95668127698d58a4cee13809bd8b --- /dev/null +++ b/studio/guide/export.html @@ -0,0 +1,117 @@ + + + + + + +Export · Inkvec Studio guide + + + +
+ +

Export

+

When the drawing is right, three buttons at the foot of the rail take it out of the app: +Export (files in a folder), Copy SVG (the clipboard) and the comparison card.

+

The export sheet

+

Export, or Ctrl+E (⌘+E on a Mac), opens the +export sheet over the rail.

+

The export sheet: a checklist of formats, each with its size, and the destination

+

Tick what you want:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RowFiles writtenTicked at first
SVGname.svg: the drawing as tracedyes
SVG (minified)name.min.svg: the same drawing with no ids, no groups and no trailing zerosyes
PNG · 512 / 1024 / 2048png/name-512.png, png/name-1024.png, png/name-2048.pngyes
ICO and favicon setfavicon/favicon.ico (16, 32 and 48 px inside), and favicon/favicon-16.png, -32.png, -48.pngno
Asset pack (.zip)name-assets.zip: everything above, plus palette.json and a README.txtyes
+

name is the name of the image you opened. The size beside each row is the real size of the files +it will write: the app builds them all in memory first and reports what it built, so nothing is an +estimate. The button at the bottom says how many files and how many bytes in total.

+

To is the destination folder. It starts at the Default output folder from +Settings if you set one; Choose or Change picks another. With none +chosen, Export asks for one. Close, or a click outside the sheet, closes it.

+

Export always runs a fresh full trace first, then writes the files. What is on screen may be +a draft, and a draft should never be shipped by accident. When the files are written, a note says +where, with Show in folder.

+

The asset pack

+

The zip always holds the complete set, whichever loose rows are ticked:

+
name.svg
+name.min.svg
+png/name-512.png, name-1024.png, name-2048.png
+favicon/favicon.ico, favicon-16.png, favicon-32.png, favicon-48.png
+palette.json
+README.txt
+
+ +

palette.json lists every ink with its hex value, the colour that was measured (traced), and its +share of the canvas; a gradient also lists its stops. README.txt is written for whoever opens the +pack later: the source file and its size, the size it was traced at, the colour difference and +coordinate count, what each file is, and the first item from +what this trace could not recover, if there was +one.

+

Without the asset pack, palette.json is written loose beside the SVG.

+

Things to know

+
    +
  • PNG and favicon files are square. In version 0.2.0 each PNG is drawn at exactly 512×512, + 1024×1024 or 2048×2048 pixels, and a drawing that is not square is stretched to fill it. For a + wide or tall logo, take the SVG and render it at the size you need elsewhere, or trace a square + version of the mark for the favicon (see the + favicon tutorial).
  • +
  • Snapped colours are not exported. The fresh trace measures the colours again, so a snap made + in the palette does not reach the files. Use Copy SVG for a drawing with snapped colours, or + set the colour through a colour group (see the palette).
  • +
  • The SVG always has the image's full size, whatever size it was traced at.
  • +
+

Copy SVG

+

Copy SVG puts the drawing on the clipboard as SVG text, ready to paste into Figma, Illustrator, +Inkscape or a code editor. It copies the drawing exactly as it is on screen, snapped colours +included. If the status strip says draft shown, wait for the full trace before copying.

+

The comparison card

+

The button with the share icon, beside Copy SVG, makes a poster of the result: the image and the +SVG side by side, and optionally the numbers and a zoomed detail where the vector edge cuts through +the source's pixels.

+
    +
  • Format: Landscape (1600 × 900) or Square (1080 × 1080).
  • +
  • Appearance: dark or light.
  • +
  • On the card: The numbers (colour difference, coordinates, file size), A zoomed detail + (with its magnification, 4× to 24×), and The file name. The file name is off by default, so a + card of an unreleased logo does not give its name away.
  • +
+

Save PNG writes it (as name-card.png, by default); Copy image puts it on the clipboard.

+

Studio Lite

+

In Studio Lite there is no destination folder: Export and Save PNG download the files through your +browser, into its downloads folder.

+ +
+ + diff --git a/studio/guide/fabricate.html b/studio/guide/fabricate.html new file mode 100644 index 0000000000000000000000000000000000000000..c91ad903fb58edd0bb2694ec84346586e7235db7 --- /dev/null +++ b/studio/guide/fabricate.html @@ -0,0 +1,328 @@ + + + + + + +Fabricate · Inkvec Studio guide + + + +
+ +

Fabricate

+

The Fabricate tab turns a drawing into files a cutting machine can use: adhesive vinyl in one +colour or several, iron-on (heat-transfer) vinyl, print-then-cut stickers, stencils, pen and +scoring lines, and laser or CNC cuts with DXF and G-code. It works in real sizes, in millimetres or +inches, and checks the job before anything is cut: a gradient that has to become one vinyl, a +sliver too thin to weed, a file a cutter's software will refuse.

+

The Fabricate tab: seven vinyl sheets stacked, with the thin parts marked, and the material and size on the right

+

Everything is recomputed on each change, in tens of milliseconds, so the sheets on the stage are +always the ones that will be saved.

+

Bringing a drawing in

+
    +
  • Use the current trace takes what the Vectorize tab just traced. (Once a drawing is loaded, + the same button is Current trace, at the top of the rail.)
  • +
  • Open an SVG (or Open…) takes any SVG file.
  • +
  • Drop an SVG on the window while this tab is showing.
  • +
+

When a drawing arrives, the tab measures it, selects every colour except the page background, and, +if there is more than one colour, switches to Layered.

+

Material

+

The quickest start is the material you are cutting. Each button sets several options at once; the +line under the buttons says what it chose.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MaterialMakesWhat it sets
Adhesive vinylCricut, Silhouette, BrotherFilled shapes, one sheet per colour stacked with a 0.8 mm overlap, registration marks, nothing narrower than 0.8 mm
Iron-onHeat-transfer vinylAs adhesive vinyl, but every sheet mirrored (HTV is cut face down), a 0.3 mm overlap (0.25 to 0.38 mm is the press-safe range), nothing narrower than 1 mm
StickerPrint, then cutThe artwork with a contour 3 mm outside it
StencilMylar or card, for paint or etching creamThe artwork cut out of one sheet, 1.5 mm bridges, a 10 mm border, nothing narrower than 1.5 mm
Pen or scoreA pen, scoring or foil tool, plotter, or laser engraving linesEach line drawn once down its middle, 0.4 mm tip, DXF saved too
Laser or sign cutterLaser, CNC, sign cutterHairline cuts with each sheet in its own colour, inner shapes cut first, parts grown for a 0.15 mm kerf, nothing narrower than 0.3 mm, no registration marks, DXF saved too
+

Glitter, holographic and puff HTV go on top of a stack only; the Iron-on note says so too. You can +change anything a material set, below; the material button then lets go.

+

Making

+

What is being made, in six modes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ModeMakes
One colourEverything selected, joined into one sheet of one material.
LayeredOne sheet per colour. Each runs under the colours above it by the bleed, so the stacked result has no gaps; registration marks line the sheets up.
InlayOne sheet per colour, cut exactly and laid edge to edge. Thinner than layered, but unforgiving to line up.
StickerThe artwork with a contour around it, to print and then cut.
StencilA sheet with the artwork cut out. Pieces that would fall out, like the middle of an O, are held by thin bridges.
LinesFor a pen, a scoring blade or a laser line: every line in the drawing is followed once, along its centre, instead of around both edges. Strokes in the file are used as drawn; lines inside filled shapes are found and checked against the shape.
+

Size

+

The design is 100 mm wide and 100 mm tall. Type either number; the other follows, +keeping the drawing's proportions. mm and in switch every length on the tab, including the +ones in the findings.

+

Cut a size-check square adds a small square (20 mm, or 1 in) below the design. Measure it once +it is cut: any other size means the cutter's program rescaled the file on import, which is the +most common complaint about cutter files.

+

The files state their size in decides how the saved SVG says how big it is:

+ + + + + + + + + + + + + + + + + + + + + +
ChoiceRead correctly by
MillimetresMost programs; exact by the SVG standard. The default.
Pixels, 96/inInkscape, LightBurn, Carbide Create, Fusion, and browsers
Pixels, 72/inCricut Design Space and Silhouette Studio
+

If the program you use imports the file at the wrong size, choose the pixel rate it uses.

+

Colours

+

Each colour of the drawing, with its share of the design and a switch to cut it or leave it out. +Badges mark the page (the background, left out at first), a gradient and a translucent +colour. In Layered, the list is the stack, bottom sheet first, and ↓ ↑ move a colour +down or up. The largest colour starts at the bottom, which is how a traced logo's colours stack in +nearly every case.

+

Cutting

+

What this card shows depends on the mode.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OptionModesWhat it does
Each colour runs x under the colours above itLayeredThe bleed: how far each sheet reaches under the ones on top, so they overlap instead of leaving a gap. Default 0.8 mm.
The contour is x outside the artworkStickerDefault 3 mm.
Bridges are x wide; the sheet reaches y past the artworkStencilDefaults 1.5 mm and 10 mm.
Parts narrower than x are too thin to weedAll but LinesThe smallest width the material holds. Parts narrower than this are reported (and drawn in red with Show problems).
Remove themAll but LinesDrops those slivers and necks from the sheets instead of reporting them.
Registration marksLayered, InlayCrosses at the same place on every sheet, to line them up.
Weeding border x outsideAll but LinesA frame around the design that makes weeding easier; 0 for none.
Also save a DXFAllEvery sheet as a layer of closed polylines in millimetres, curves as true arcs, for CAD, CNC and laser programs.
Also save G-codeAllFor GRBL lasers and plotters (see below).
MirrorNot Sticker or StencilFlips every sheet, for heat-transfer vinyl, which is cut from the back.
Cut lines as: Filled shapes / HairlinesAll but LinesFilled shapes is what Cricut Design Space and Silhouette Studio expect; they cut around every shape. Hairlines is the laser and sign-cutter convention: only a hairline is a cut, and each sheet keeps its colour so a laser program can give it its own operation.
The cut removes x (kerf)HairlinesThe width the beam or blade removes. Parts are grown by half of it so they come out at the drawn size.
Router bit x acrossAll but LinesAdds a dogbone to every inside corner, so parts cut with a round bit seat square; 0 for none.
Cuts stay within x of the drawingAllHow closely the cut paths follow the drawing. Default 0.05 mm. A larger value gives fewer segments.
+

In Lines mode the card is Drawing instead: The pen or tool draws 0.4 mm wide (the +preview shows what the pen will leave), Lines up to 0 mm wide are drawn once (0 for any +width; wider parts are drawn round their outline), the DXF and G-code switches, and the tolerance.

+

G-code

+

Also save G-code writes a .gcode file for GRBL lasers and plotters: curves as G2/G3 arcs, +holes and inner parts cut before the part around them, millimetres, origin at the lower left of +the job (marks and borders included). Jog the head to the lower left of the material and zero it +there. The sentence under the switch sets the feed (default 1000 mm/min), the power as GRBL's S +value (default 1000, GRBL's usual maximum), and the number of passes.

+

The file uses GRBL's laser mode (M4, power follows speed): turn it on with $32=1 so the beam is +off between cuts. Test on scrap first: speed and power depend entirely on your machine and material.

+

Before you cut

+

This card summarises the job (sheets, pieces, path segments, the size of the whole job) and lists +anything that will go wrong. With nothing to report it says Nothing here will trouble the +cutter.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FindingWhat to do
#colour is a gradient. Vinyl is one colour, so it is cut as its average colour.Choose a vinyl close to the average, or leave the colour out.
#colour is partly transparent. Vinyl is opaque, so it is cut at full strength.As above.
No colour is selected.Switch at least one colour on.
The file contains something with no cut line (such as an image) and it is left out.Convert it to shapes first, or trace it.
N mm² in M places is narrower than x mm and may tear or not stay stuck.Make the design larger, or turn on Remove them.
N mm² of waste is narrower than x mm between cuts and will lift with the design when weeding.Make the design larger, or weed those spots by hand.
N pieces are smaller than x mm² and are easily lost when weeding.Make the design larger, or accept losing them.
A sheet has more than 5,000 separate cut paths.Cricut Design Space is reported to refuse such files: turn on Remove them or raise the smallest width.
A sheet has more than 2,000 path segments.Cutter software gets slow; a larger tolerance lowers it.
Holes and gaps are narrower than the router bit.The bit cannot enter them: use a smaller bit, or make the design larger.
+

Some findings are information rather than warnings: how many bridges hold a stencil together, how +many inside corners got dogbones, how many lines Lines mode draws once, and what the size-check +square is for.

+

The stage

+

All sheets shows every sheet stacked, as the finished piece will look; the numbered buttons +show one sheet each (hover one for its material size, pieces and segments). The size of the whole +job is at the right, with marks included or border included when they add to it. Sheets are +shown on a light ground, where a thin cut line and a pale vinyl are both visible.

+

Show problems (on while there are any) draws the parts too thin to weed in red, the waste gaps +too narrow to weed in amber, and rings the loose specks.

+

The Cut list at the bottom of the rail is the shopping list: each sheet with the piece of +material it needs and how many pieces it has. Click a row to show that sheet.

+

Saving

+

Save N sheets… asks for a folder and writes:

+
    +
  • one SVG per sheet: name-1-colour.svg, name-2-colour.svg and so on, bottom sheet first (or + name-cut.svg when there is only one);
  • +
  • name-all.svg, every sheet in one file as separate groups, which cutter software turns into + layers on import (often the only file you need);
  • +
  • name.dxf and name.gcode, if those switches are on.
  • +
+

Copy puts the sheet on screen (or all of them, in one file) on the clipboard, to paste into +Design Space, Silhouette Studio or LightBurn. The foot of the rail repeats the real width.

+

The layered vinyl tutorial and the laser tutorial +take a drawing through this tab from start to finish.

+

Studio Lite

+

Save downloads the files instead of writing them to a folder.

+ +
+ + diff --git a/studio/guide/getting-started.html b/studio/guide/getting-started.html new file mode 100644 index 0000000000000000000000000000000000000000..533330ee7068c03936802a42843ae3ec7276b0d6 --- /dev/null +++ b/studio/guide/getting-started.html @@ -0,0 +1,174 @@ + + + + + + +Getting started · Inkvec Studio guide + + + +
+ +

Getting started

+

This page opens an image, explains the choice the app offers when it does, and walks through the +Custom wizard. The fastest way to follow along is with one of the samples on the empty stage.

+

Opening an image

+

Any of these opens an image in the Vectorize tab:

+
    +
  • Open… in the app bar, Open an image on the empty stage, or Ctrl+O + (⌘+O on a Mac).
  • +
  • Drag a file onto the window. The whole window takes the drop, not only the dashed box.
  • +
  • Recent in the app bar: the last eight files you opened.
  • +
  • A sample from the row under the drop area, on the empty stage: Flat logo, Icon, 64 px, + Crest, filigree and Signature, B&W.
  • +
  • Vectorize with Inkvec in your file manager's right-click menu, once you have added it in + Settings (Windows and Linux). If the app is already open, the file opens + in the window you have rather than a second copy.
  • +
+

The app reads PNG, JPEG, WebP, GIF, BMP and TIFF. It also opens an SVG: the SVG is drawn at +1024 px on its longer side and traced from that picture, which is how a messy drawing comes back +as clean shapes. To make an SVG smaller without re-drawing it, use Minify SVG +instead.

+

What a dropped file does depends on what it is:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
You dropWhat happens
One imageOpens in Vectorize, whichever tab you were on.
One SVG, on the Vectorize tabOpens in Vectorize, to be re-traced.
One SVG, on the Fabricate tabOpens in Fabricate, to be cut.
One SVG, on another tabOpens in Minify SVG.
Several filesSwitches to Batch. The files are not queued: Batch works on a folder, so choose the folder they are in.
+

The app bar shows the open file's name, its size in pixels and its format.

+

Studio Lite: there is no right-click entry, and a dropped or chosen file is read by the browser.

+

Auto traces at once

+

The moment an image opens, Auto traces it. It uses the controls exactly as you left them the +last time (the first time, the Logo preset, which is the default). Nothing has to be chosen +first, and the trace is already on its way when the next thing appears.

+

The choice card: Keep Auto or Customise

+

Over the stage, a small card appears while Auto traces.

+

The card that appears when an image opens, with Auto's result and the Custom option

+
    +
  • Auto shows the trace's progress and, once it lands, its colour difference, coordinates + and file size. Keep Auto closes the card.
  • +
  • Custom opens the wizard (next section), which changes the settings a step at a time with + your result shown beside Auto's.
  • +
  • Auto chose says what Auto used, and anything its own report suggests. There are at most + two suggestions, and each is a one-click preset change:
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuggestionWhen it appearsWhat Try does
Looks like a photo, a scan or a screenshotThe file is a JPEG or a lossy WebP, or its pixels are noisySwitches to Photo or scan, which uses the denoiser
Two colours, black and whiteExactly two inks, one dark and one light, both neutralSwitches to Black & white
Drawn with strokesThe report found line work traced as outlinesSwitches to Line art
A small flat mark256 px or smaller, no gradients, at most 16 coloursSwitches to Icon
+

If the palette has inks that look like the same colour measured twice, a line offers to + Accept them as colour groups (see the palette). +- Remember my choice makes the button you press next the default for every image. Change it + later in Settings, When an image is opened: Ask (this card), + Auto only, or Custom wizard.

+

Closing the card with × or Esc, or simply carrying on, keeps Auto. Once the card +is gone, the same Auto chose note stays at the top of the Result tab while it has something to +offer, with Customise and Hide.

+

Nothing here changes a trace by itself. A suggestion you take is an ordinary preset change, shown +under Tune like any other, and Back to Auto puts the controls back where Auto had them.

+

The Custom wizard

+

Customise… opens the wizard in place of the rail. The big view stays beside it, and its left +pane shows Auto's trace (or the Source, if you switch it) so you can compare as you go; the +right pane is yours.

+

The wizard's first step: small draft previews of the image under each kind of preset

+

Each step says what it does, when to change it, what it costs, and links to the part of +How Inkvec works behind it. The steps are:

+
    +
  1. What is it? Tiles for the kinds of image, each a small draft of this image under that + preset: Logo, Icon, Illustration or emoji (the Fine detail preset), Line art, + Black & white and Photo or scan, plus Auto's own result. Presets Auto suggested come first, + marked suggested. Hover a tile to see its draft large in the left pane; click it to choose it, + and the full trace follows on the right. The drafts are traced one at a time, after Auto's + trace, so they never hold it up.
  2. +
  3. Clean-up. Only offered when the image looks damaged: a JPEG or a lossy WebP, or pixels that + measure noisy, and only in builds that include the denoiser. It says why it was offered. + Off traces the pixels as they are; Auto cleans compression damage first, where it finds + some. If the denoiser is not downloaded yet, the step offers the download (see + the denoiser).
  4. +
  5. Colours. The palette, with suggested colour groups, and Max colours. For an image with + transparency, also Trace transparency. Hover an ink or a group to single it out in the + drawing.
  6. +
  7. Detail. Precision and Speckle floor, and a Compare as switch (side by side or + wipe).
  8. +
  9. Shape. Editable structure, Fewer paths, Match repeated shapes, Curve cost + and Smooth-join angle.
  10. +
  11. Output. Transparent background, Margin and Minify, and a list of everything + you changed from Auto.
  12. +
+

From step 4 on, a small table compares Auto's figures with yours: colour difference, nodes, paths +and file size, with the change in each.

+

What each control does is on the Tune page; the wizard shows the same controls, only +fewer at a time.

+

Along the bottom: Back, Skip to finish (jump to the last step, keeping everything chosen), +and Next. On the last step, Finish closes the wizard and Export now closes it and opens +the export sheet. At the top, Undo my changes puts every control and colour group back to where +they were when the wizard opened, and Close (or Esc) leaves, keeping what you chose.

+

Whatever the wizard changed is an ordinary setting. When it closes, the rail switches to Tune +with those controls marked as changed, and a note says how many moved from Auto.

+

To reopen the wizard for the image that is open, use Walk me through it at the top of the Tune +tab, or Customise on the Auto chose note.

+

What to do next

+
    +
  • Look at the result: the viewer explains the comparison modes, zoom, and the + overlays that show nodes and edges.
  • +
  • Read the numbers: Result explains the quality report.
  • +
  • Change something: Tune lists every control.
  • +
  • Save it: Export.
  • +
+ +
+ + diff --git a/studio/guide/guide.css b/studio/guide/guide.css new file mode 100644 index 0000000000000000000000000000000000000000..e4560db19211cf41b3ef368d5cdf8e1faf52bfd5 --- /dev/null +++ b/studio/guide/guide.css @@ -0,0 +1,224 @@ +/* LogoLabs design system: warm charcoal ramp, one copper accent, Playfair Display + + * Inter + IBM Plex Mono. Tokens match web/index.html and the design-system zip. */ +:root{ + --paper:#1a1816;--card:#211f1c;--stage:#141210;--void:#0c0a09;--surface:#2a2724;--highlight:#35322e; + --ink:#faf8f5;--dim:rgba(250,248,245,.75);--faint:rgba(250,248,245,.55);--muted:rgba(250,248,245,.4); + --rule:rgba(250,248,245,.08);--rule2:#2a2724; + --accent:#c9754a;--accent-hover:#d4896a;--accent-ink:#1a1816;--accent-soft:rgba(201,117,74,.12); + --gold:#b8976c;--good:#34d399;--bad:#f87171; + --font-display:"Playfair Display",Georgia,serif;--font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; + --font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Consolas,monospace; +} +*{box-sizing:border-box} +html{color-scheme:dark} +body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--font-body); + -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility} +a{color:var(--accent);text-decoration:none} +a:hover{color:var(--accent-hover)} +::selection{background:rgba(201,117,74,.35)} + +/* top bar */ +.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between; + padding:0 20px;height:56px;background:rgba(26,24,22,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)} +.brand{display:flex;align-items:center;gap:10px;color:var(--ink)} +.brand img{width:22px;height:22px} +.brand span{font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:-.01em} +.toplinks{display:flex;gap:22px;font-size:13.5px;font-weight:500} +.toplinks a{color:var(--dim)} +.toplinks a:hover{color:var(--accent)} + +/* shell: sidebar / article / toc rail */ +.shell{display:grid;grid-template-columns:240px minmax(0,1fr) 200px;gap:0;max-width:1400px;margin:0 auto} +.side{border-right:1px solid var(--rule);padding:28px 18px 60px 24px;position:sticky;top:56px; + height:calc(100vh - 56px);overflow-y:auto;scrollbar-width:thin} +.side .grp{margin:0 0 22px} +.side .grp h4{margin:0 0 8px;font:500 10.5px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase; + color:var(--muted)} +.side a{display:block;padding:4px 8px;margin:1px -8px;border-radius:6px;font-size:13.5px;color:var(--faint)} +.side a:hover{color:var(--ink);background:var(--card)} +.side a[aria-current]{color:var(--accent);background:var(--accent-soft)} +.side a .n{font:500 10.5px/1 var(--font-mono);color:var(--muted);margin-right:7px} +.side a[aria-current] .n{color:var(--accent)} + +main{padding:44px 48px 90px;min-width:0} +article{max-width:46rem} +article h1,article h2,article h3,article h4{font-family:var(--font-display);font-weight:600; + letter-spacing:-.01em;line-height:1.2;color:var(--ink);scroll-margin-top:76px} +article h1{font-size:2.1rem;margin:0 0 18px} +article h2{font-size:1.45rem;margin:2.2em 0 .6em;padding-top:.7em;border-top:1px solid var(--rule)} +article h3{font-size:1.12rem;margin:1.8em 0 .5em} +article p{margin:0 0 1em;color:var(--dim)} +article li{color:var(--dim);margin:.3em 0} +article strong{color:var(--ink);font-weight:600} +article hr{border:0;border-top:1px solid var(--rule);margin:2.5em 0} +article img{max-width:100%;border-radius:10px;height:auto} +article a{text-decoration:underline;text-decoration-color:rgba(201,117,74,.35);text-underline-offset:3px} +article a:hover{text-decoration-color:var(--accent)} +.md-anchor{position:relative;top:-70px} + +kbd{font-family:var(--font-mono);font-size:.8em;background:var(--surface);color:var(--ink); + border:1px solid var(--highlight);border-bottom-width:2px;border-radius:5px;padding:.05em .4em;white-space:nowrap} +code{font-family:var(--font-mono);font-size:.86em;background:var(--surface); + border:1px solid var(--rule);border-radius:5px;padding:.1em .35em;color:var(--ink)} +.codehilite{background:var(--stage)!important;border:1px solid var(--rule);border-radius:10px; + padding:14px 16px;overflow-x:auto;margin:0 0 1.2em} +.codehilite pre{margin:0;background:transparent!important} +.codehilite code{background:transparent;border:0;padding:0;font-size:13px;line-height:1.6} + +table{border-collapse:collapse;width:100%;margin:0 0 1.2em;font-size:14px;display:block;overflow-x:auto} +th,td{border:1px solid var(--rule2);padding:7px 11px;text-align:left;vertical-align:top;color:var(--dim)} +th{background:var(--card);color:var(--ink);font-weight:600;font-size:13px} +tbody tr:nth-child(2n){background:rgba(250,248,245,.02)} +table code{white-space:nowrap} + +blockquote{margin:0 0 1.2em;padding:10px 16px;border-left:3px solid var(--accent); + background:var(--accent-soft);border-radius:0 8px 8px 0} +blockquote p{margin:0 0 .5em;color:var(--ink)} +blockquote p:last-child{margin:0} + +.math{overflow-x:auto;overflow-y:hidden;padding:6px 2px;margin:0 0 1.2em} +.katex-display{margin:.4em 0!important} +.katex{color:var(--ink)} + +/* per-page toc rail */ +.rail{padding:52px 20px 60px 0;position:sticky;top:56px;height:calc(100vh - 56px);overflow-y:auto} +.rail h5{margin:0 0 10px;font:500 10.5px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase; + color:var(--muted)} +.rail ul{list-style:none;margin:0;padding:0} +.rail ul ul{padding-left:12px} +.rail a{display:block;padding:3px 0;font-size:12.5px;color:var(--muted);line-height:1.45} +.rail a:hover{color:var(--accent)} +.rail .l2>a{color:var(--faint)} + +/* index hero */ +.hero{padding:8px 0 34px;border-bottom:1px solid var(--rule);margin-bottom:34px} +.eyebrow{font:500 11px/1 var(--font-mono);letter-spacing:.22em;color:var(--accent);margin:0 0 14px} +.hero h1{font-family:var(--font-display);font-size:3.4rem;font-weight:700;letter-spacing:-.02em;margin:0 0 14px;line-height:1.05} +.hero .pitch{font-size:1.14rem;color:var(--faint);max-width:34rem;margin:0 0 24px} +.cta{display:flex;gap:12px;flex-wrap:wrap} +.btn{display:inline-block;padding:10px 20px;border-radius:999px;font-size:14px;font-weight:600; + border:1px solid var(--rule2);color:var(--ink);background:var(--card)} +.btn:hover{border-color:var(--highlight);color:var(--ink)} +.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)} +.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink)} +.btn.ghost{background:transparent} + +/* pointer to the diagram edition */ +.plainlink{margin:-6px 0 1.6em;font-size:14px} +.plainlink a{font-weight:500} + +/* the mark before the wordmark in the hero */ +.heromark{height:.8em;width:auto;vertical-align:-.08em;margin-right:.22em} + +/* about block on the landing page */ +.about{margin-top:3.2em;padding-top:1.4em;border-top:1px solid var(--rule)} +.about p{color:var(--faint);max-width:38rem} + +/* prev / next */ +.pagenav{display:flex;justify-content:space-between;gap:14px;margin-top:3.2em;padding-top:1.2em; + border-top:1px solid var(--rule)} +.pagenav a{flex:1;border:1px solid var(--rule2);background:var(--card);border-radius:10px;padding:11px 15px; + text-decoration:none} +.pagenav a:hover{border-color:rgba(201,117,74,.45)} +.pagenav .dir{display:block;font:500 10.5px/1 var(--font-mono);letter-spacing:.12em;color:var(--muted);margin-bottom:4px} +.pagenav .lbl{color:var(--ink);font-weight:600;font-size:14px} +.pagenav .next{text-align:right} + +footer{border-top:1px solid var(--rule);padding:26px 24px;display:flex;justify-content:space-between; + gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted)} +footer a{color:var(--dim)} +footer a:hover{color:var(--accent)} + +@media (max-width:1150px){.rail{display:none}.shell{grid-template-columns:220px minmax(0,1fr)}} +@media (max-width:820px){ + .shell{grid-template-columns:minmax(0,1fr)} + .side{position:static;height:auto;border-right:0;border-bottom:1px solid var(--rule);padding:18px 24px} + .side .grp{display:inline-block;vertical-align:top;margin:0 26px 14px 0} + main{padding:30px 22px 70px} + .hero h1{font-size:2.5rem} +} + +@font-face{font-family:"Inter";src:url("../fonts/inter-latin.woff2") format("woff2");font-weight:100 900;font-display:swap} +@font-face{font-family:"Playfair Display";src:url("../fonts/playfair-latin.woff2") format("woff2");font-weight:400 900;font-display:swap} +:root{--font-mono:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace} +.side,.rail{top:0;height:100vh} +.side .guidebrand{display:flex;align-items:center;gap:9px;margin:0 0 22px;color:var(--ink)} +.side .guidebrand img{width:20px;height:20px} +.side .guidebrand span{font-family:var(--font-display);font-weight:700;font-size:17px} +.side .guidebrand:hover{background:none} +.guidenote{font-size:12px;color:var(--muted);margin:26px 0 0;line-height:1.5} +.shell{max-width:1320px} + +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.codehilite .hll { background-color: #2a2724 } +.codehilite { background: ; color: #FAF8F5 } +.codehilite .c { color: #8A837B; font-style: italic } /* Comment */ +.codehilite .err { color: #F87171 } /* Error */ +.codehilite .k { color: #C9754A } /* Keyword */ +.codehilite .n { color: #FAF8F5 } /* Name */ +.codehilite .o { color: #C9754A } /* Operator */ +.codehilite .p { color: #BFB9B1 } /* Punctuation */ +.codehilite .ch { color: #8A837B; font-style: italic } /* Comment.Hashbang */ +.codehilite .cm { color: #8A837B; font-style: italic } /* Comment.Multiline */ +.codehilite .cp { color: #8A837B; font-style: italic } /* Comment.Preproc */ +.codehilite .cpf { color: #8A837B; font-style: italic } /* Comment.PreprocFile */ +.codehilite .c1 { color: #8A837B; font-style: italic } /* Comment.Single */ +.codehilite .cs { color: #8A837B; font-style: italic } /* Comment.Special */ +.codehilite .gd { color: #F87171 } /* Generic.Deleted */ +.codehilite .ge { font-style: italic } /* Generic.Emph */ +.codehilite .gi { color: #34D399 } /* Generic.Inserted */ +.codehilite .gs { font-weight: bold } /* Generic.Strong */ +.codehilite .kc { color: #C9754A } /* Keyword.Constant */ +.codehilite .kd { color: #C9754A } /* Keyword.Declaration */ +.codehilite .kn { color: #C9754A } /* Keyword.Namespace */ +.codehilite .kp { color: #C9754A } /* Keyword.Pseudo */ +.codehilite .kr { color: #C9754A } /* Keyword.Reserved */ +.codehilite .kt { color: #B8976C } /* Keyword.Type */ +.codehilite .m { color: #B8976C } /* Literal.Number */ +.codehilite .s { color: #34D399 } /* Literal.String */ +.codehilite .na { color: #B8976C } /* Name.Attribute */ +.codehilite .nb { color: #B8976C } /* Name.Builtin */ +.codehilite .nc { color: #D4896A } /* Name.Class */ +.codehilite .no { color: #FAF8F5 } /* Name.Constant */ +.codehilite .nd { color: #D4896A } /* Name.Decorator */ +.codehilite .ni { color: #FAF8F5 } /* Name.Entity */ +.codehilite .ne { color: #FAF8F5 } /* Name.Exception */ +.codehilite .nf { color: #D4896A } /* Name.Function */ +.codehilite .nl { color: #FAF8F5 } /* Name.Label */ +.codehilite .nn { color: #FAF8F5 } /* Name.Namespace */ +.codehilite .nx { color: #FAF8F5 } /* Name.Other */ +.codehilite .py { color: #FAF8F5 } /* Name.Property */ +.codehilite .nt { color: #C9754A } /* Name.Tag */ +.codehilite .nv { color: #FAF8F5 } /* Name.Variable */ +.codehilite .ow { color: #C9754A } /* Operator.Word */ +.codehilite .pm { color: #BFB9B1 } /* Punctuation.Marker */ +.codehilite .w { color: #FAF8F5 } /* Text.Whitespace */ +.codehilite .mb { color: #B8976C } /* Literal.Number.Bin */ +.codehilite .mf { color: #B8976C } /* Literal.Number.Float */ +.codehilite .mh { color: #B8976C } /* Literal.Number.Hex */ +.codehilite .mi { color: #B8976C } /* Literal.Number.Integer */ +.codehilite .mo { color: #B8976C } /* Literal.Number.Oct */ +.codehilite .sa { color: #34D399 } /* Literal.String.Affix */ +.codehilite .sb { color: #34D399 } /* Literal.String.Backtick */ +.codehilite .sc { color: #34D399 } /* Literal.String.Char */ +.codehilite .dl { color: #34D399 } /* Literal.String.Delimiter */ +.codehilite .sd { color: #34D399 } /* Literal.String.Doc */ +.codehilite .s2 { color: #34D399 } /* Literal.String.Double */ +.codehilite .se { color: #34D399 } /* Literal.String.Escape */ +.codehilite .sh { color: #34D399 } /* Literal.String.Heredoc */ +.codehilite .si { color: #34D399 } /* Literal.String.Interpol */ +.codehilite .sx { color: #34D399 } /* Literal.String.Other */ +.codehilite .sr { color: #34D399 } /* Literal.String.Regex */ +.codehilite .s1 { color: #34D399 } /* Literal.String.Single */ +.codehilite .ss { color: #34D399 } /* Literal.String.Symbol */ +.codehilite .bp { color: #B8976C } /* Name.Builtin.Pseudo */ +.codehilite .fm { color: #D4896A } /* Name.Function.Magic */ +.codehilite .vc { color: #FAF8F5 } /* Name.Variable.Class */ +.codehilite .vg { color: #FAF8F5 } /* Name.Variable.Global */ +.codehilite .vi { color: #FAF8F5 } /* Name.Variable.Instance */ +.codehilite .vm { color: #FAF8F5 } /* Name.Variable.Magic */ +.codehilite .il { color: #B8976C } /* Literal.Number.Integer.Long */ diff --git a/studio/guide/img/auto-chose-photo.webp b/studio/guide/img/auto-chose-photo.webp new file mode 100644 index 0000000000000000000000000000000000000000..54eeff6d920a23795a1710e99908c67ed71440e9 Binary files /dev/null and b/studio/guide/img/auto-chose-photo.webp differ diff --git a/studio/guide/img/batch.webp b/studio/guide/img/batch.webp new file mode 100644 index 0000000000000000000000000000000000000000..e432d9938046c8ed5905d86ed585e43710982428 Binary files /dev/null and b/studio/guide/img/batch.webp differ diff --git a/studio/guide/img/chooser.webp b/studio/guide/img/chooser.webp new file mode 100644 index 0000000000000000000000000000000000000000..0179884ff6c42dc1dc51d4b20014928814025050 Binary files /dev/null and b/studio/guide/img/chooser.webp differ diff --git a/studio/guide/img/detail-certainty.webp b/studio/guide/img/detail-certainty.webp new file mode 100644 index 0000000000000000000000000000000000000000..772d9a1e4752fb201c4fc9ea89d623a5211946f3 Binary files /dev/null and b/studio/guide/img/detail-certainty.webp differ diff --git a/studio/guide/img/export.webp b/studio/guide/img/export.webp new file mode 100644 index 0000000000000000000000000000000000000000..587a44b75156676613613b746067db4ef807308b Binary files /dev/null and b/studio/guide/img/export.webp differ diff --git a/studio/guide/img/fabricate-htv-rail.webp b/studio/guide/img/fabricate-htv-rail.webp new file mode 100644 index 0000000000000000000000000000000000000000..6e3ed872545a64d74f6e8fecaa194265869d3f67 Binary files /dev/null and b/studio/guide/img/fabricate-htv-rail.webp differ diff --git a/studio/guide/img/fabricate-laser-rail.webp b/studio/guide/img/fabricate-laser-rail.webp new file mode 100644 index 0000000000000000000000000000000000000000..5e11e43c5d91a29dc8486a41031b40a9c76622a7 Binary files /dev/null and b/studio/guide/img/fabricate-laser-rail.webp differ diff --git a/studio/guide/img/fabricate-vinyl.webp b/studio/guide/img/fabricate-vinyl.webp new file mode 100644 index 0000000000000000000000000000000000000000..735a492d7156aefaf39b7cf8aa3e720143670bd4 Binary files /dev/null and b/studio/guide/img/fabricate-vinyl.webp differ diff --git a/studio/guide/img/first-run.webp b/studio/guide/img/first-run.webp new file mode 100644 index 0000000000000000000000000000000000000000..8e071c8c552ff3e6de7acc747fff43aaa99ad012 Binary files /dev/null and b/studio/guide/img/first-run.webp differ diff --git a/studio/guide/img/help.webp b/studio/guide/img/help.webp new file mode 100644 index 0000000000000000000000000000000000000000..38f004cd89d22087e3e5cf499ad33cd858d15875 Binary files /dev/null and b/studio/guide/img/help.webp differ diff --git a/studio/guide/img/minify.webp b/studio/guide/img/minify.webp new file mode 100644 index 0000000000000000000000000000000000000000..f49bb9bf8473e08000606206de0229eee39659ff Binary files /dev/null and b/studio/guide/img/minify.webp differ diff --git a/studio/guide/img/overlays.webp b/studio/guide/img/overlays.webp new file mode 100644 index 0000000000000000000000000000000000000000..441562910566748c7c5531fc08820f0afd523588 Binary files /dev/null and b/studio/guide/img/overlays.webp differ diff --git a/studio/guide/img/palette.webp b/studio/guide/img/palette.webp new file mode 100644 index 0000000000000000000000000000000000000000..d196ac4dfafaa65aa5751523ca54f61146096b00 Binary files /dev/null and b/studio/guide/img/palette.webp differ diff --git a/studio/guide/img/result.webp b/studio/guide/img/result.webp new file mode 100644 index 0000000000000000000000000000000000000000..2af373a1775635c63c1f27dd5ece646a6cff52a2 Binary files /dev/null and b/studio/guide/img/result.webp differ diff --git a/studio/guide/img/settings.webp b/studio/guide/img/settings.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b21dfa0559cc66a5fea2560c120b5b7621b9523 Binary files /dev/null and b/studio/guide/img/settings.webp differ diff --git a/studio/guide/img/tune.webp b/studio/guide/img/tune.webp new file mode 100644 index 0000000000000000000000000000000000000000..5833dd63fa616265c49bba4db1a26f9fabd617a1 Binary files /dev/null and b/studio/guide/img/tune.webp differ diff --git a/studio/guide/img/wizard-cleanup.webp b/studio/guide/img/wizard-cleanup.webp new file mode 100644 index 0000000000000000000000000000000000000000..85b8527587fe7b7c043eb17ab1c284b3b71512a3 Binary files /dev/null and b/studio/guide/img/wizard-cleanup.webp differ diff --git a/studio/guide/img/wizard-kind.webp b/studio/guide/img/wizard-kind.webp new file mode 100644 index 0000000000000000000000000000000000000000..2f0a6162cda6878cbae1a8fc20684897668093ae Binary files /dev/null and b/studio/guide/img/wizard-kind.webp differ diff --git a/studio/guide/img/workspace.webp b/studio/guide/img/workspace.webp new file mode 100644 index 0000000000000000000000000000000000000000..f9ff8449280f8d204961d090e542b5e21242c6a5 Binary files /dev/null and b/studio/guide/img/workspace.webp differ diff --git a/studio/guide/index.html b/studio/guide/index.html new file mode 100644 index 0000000000000000000000000000000000000000..271e07f4dcf82e9f67be33d867686de8783a15ee --- /dev/null +++ b/studio/guide/index.html @@ -0,0 +1,116 @@ + + + + + + +Inkvec Studio · Inkvec Studio guide + + + +
+ +

Inkvec Studio

+

Inkvec Studio is the desktop app for Inkvec. It turns a raster logo, icon or emoji into an SVG, +shows you how close the SVG is to the image it came from, and prepares the result for the web, +for print or for a cutting machine. It runs on Windows, macOS and Linux, and everything it does +happens on your own computer: your image is never uploaded.

+

This guide describes the app as it is in version 0.2.0. It covers every screen, and ends with +four tutorials that each take one job from start to finish.

+

The Vectorize tab: the source on the left, the SVG on the right, the quality report in the rail

+

What is where

+

The window has four tabs, chosen in the middle of the app bar.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TabWhat it doesPage
VectorizeTraces an image into an SVG and shows the two side by side, with a measured report.The viewer, Result, Tune
Minify SVGRewrites an SVG you already have with fewer numbers, without moving it.Minify SVG
FabricateTurns a drawing into sheets for a vinyl cutter, a sticker, a stencil, a pen or a laser.Fabricate
BatchTraces every image in a folder, one SVG each.Batch
+

On the right of the app bar are Open…, Recent, Settings, About and Help. +Help (or F1) opens this guide inside the app, at the page about what is on screen. The +guide is bundled with the app, so it works without a network; Open in browser shows the same +page on the web.

+

This guide, opened from Help inside the app

+

The Vectorize tab is where most of the work happens. Its right-hand rail has two halves: +Result, what the last trace produced, and Tune, the settings for the next one. Above both +sit the two settings people most often change, the Denoiser and Editable, and below both +a readout of the three numbers that matter (colour difference, coordinates, file size) with +Export beside it.

+

How a trace happens

+
    +
  1. You open an image. Auto traces it at once with the settings you last used (the Logo + preset, the first time).
  2. +
  3. A small card offers Custom: a few steps, each explained, with your result shown beside + Auto's. You can ignore the card; Auto's trace stands.
  4. +
  5. Every setting you change starts a quick, small draft trace so you can see the effect, then + a full trace once you stop moving things. The full trace is what you export.
  6. +
+

Getting started walks through this with a sample image.

+

Inkvec Studio and Inkvec Studio Lite

+

Inkvec Studio Lite is the same app running in a web browser. It differs from the desktop app +in a few places:

+
    +
  • It cannot add the Windows Vectorize with Inkvec right-click entry or put the inkvec + command on your PATH (Settings, Advanced).
  • +
  • It has no folder batch: the Batch tab needs to read and write folders on disk.
  • +
  • Saving works through your browser's downloads: where this guide says a file is written to a + folder, Studio Lite downloads it instead.
  • +
+

Where a page describes something Studio Lite does differently, it says so.

+

Contents

+

Using the app

+ +

Tutorials

+ +

How the tracing itself works, stage by stage, is in How Inkvec works. +What it cannot do is in Limitations.

+

The screenshots in this guide were taken from a development build with sample images. The +numbers in them belong to those samples.

+ +
+ + diff --git a/studio/guide/install.html b/studio/guide/install.html new file mode 100644 index 0000000000000000000000000000000000000000..6ccd5147d5d689469b84c6240dd3edc6ddd6804e --- /dev/null +++ b/studio/guide/install.html @@ -0,0 +1,98 @@ + + + + + + +Install and first launch · Inkvec Studio guide + + + +
+ +

Install and first launch

+

Inkvec Studio is published on the project's +GitHub releases page. Each release has one +download per platform, named inkvec-studio-<version>-<target> with the usual extension.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
SystemDownloadOldest system it starts on
Windows.exe (installer, no administrator rights needed) or .msiWindows 10 with WebView2; the installer fetches WebView2 if it is missing
macOS.dmgmacOS 10.15 on Intel, 11.0 on Apple silicon
Linux.deb, .rpm or .AppImageglibc 2.38, libstdc++ 13 and WebKitGTK 4.1: Ubuntu 23.10, Debian 13, Fedora 39 and newer
+

The release notes list a SHA-256 checksum for every file. Checking it is what establishes that a +download is the one the project published:

+
    +
  • Windows: certutil -hashfile <file> SHA256
  • +
  • macOS: shasum -a 256 <file>
  • +
  • Linux: sha256sum <file>
  • +
+

Opening the app the first time

+

The builds are not code-signed on any platform, so each operating system warns about them in +its own way.

+
    +
  • Windows. SmartScreen shows "Windows protected your PC" with an unknown publisher. Choose + More info, then Run anyway.
  • +
  • macOS. Gatekeeper refuses an unsigned app downloaded from a browser. Open Applications, + Control-click Inkvec Studio, choose Open, then Open again in the dialog. If macOS + still refuses, run xattr -dr com.apple.quarantine "/Applications/Inkvec Studio.app" in + Terminal.
  • +
  • Linux. Nothing special for the .deb or .rpm. An .AppImage needs chmod +x before it + will run.
  • +
+

A short splash screen covers start-up, then the main window opens on the Vectorize tab with an +empty stage: a drop area, Open an image, and four sample images to try.

+

The empty Vectorize tab on first launch, with the introduction card and the samples

+

On the very first launch a card above the drop area explains what happens when an image is +opened. Got it hides it for good. The next page, Getting started, goes +through the same thing with a sample.

+

What the app sends over the network

+

Tracing never needs a network. The app can make exactly two kinds of outbound request:

+
    +
  • The update check, when the app starts. It asks GitHub for the latest release and sends the + app's version and your operating system (in the request's user agent), nothing else. Turn it off + in Settings and the app does not contact the network at all.
  • +
  • The denoiser download, only when you ask for it. See the denoiser.
  • +
+

Your images, traces and exported files never leave your computer.

+

Updates

+

When the update check finds a newer version, the status strip at the bottom of the Vectorize tab +shows <version> available and a What changed link to the release notes. The app does not +update itself: download the new release and install it over the old one. Your preferences and +saved presets are kept.

+

Uninstalling

+

Uninstall the app the way your system usually does (Windows: Settings, Apps; macOS: move it to the +Bin; Linux: your package manager). On Windows the uninstaller also removes the two things the app +can add from its Settings screen, the right-click entry and the inkvec command, if you added +them. On macOS and Linux, remove those first from Settings, Advanced if you +added them.

+

Two things are left behind on purpose, because they are yours rather than the app's: the +preferences file (your settings, recent files and saved presets) and, if you downloaded it, the +denoiser model. Their locations are listed in Settings.

+

Studio Lite

+

Inkvec Studio Lite needs no installation: it runs in a current desktop browser. Everything on this +page about installers, signing and uninstalling applies only to the desktop app.

+ +
+ + diff --git a/studio/guide/logo-mono.svg b/studio/guide/logo-mono.svg new file mode 100644 index 0000000000000000000000000000000000000000..24dcdcd493347ff96077f8adedb5050d3e8aae06 --- /dev/null +++ b/studio/guide/logo-mono.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/studio/guide/minify.html b/studio/guide/minify.html new file mode 100644 index 0000000000000000000000000000000000000000..04ef4d3152a3ab573c7115f317b48e22953fcc24 --- /dev/null +++ b/studio/guide/minify.html @@ -0,0 +1,97 @@ + + + + + + +Minify SVG · Inkvec Studio guide + + + +
+ +

Minify SVG

+

The Minify SVG tab makes an SVG you already have smaller without changing what it looks like. +It rewrites every path with the fewest segments that stay within a tolerance of the original, and +tidies the rest of the document. It works on any SVG: one from Illustrator, Figma, Inkscape, a +stock site, or Inkvec itself. It takes a few milliseconds, so the result appears as soon as the +file opens and changes as you move a control.

+

The Minify SVG tab: the drawing before and after, and what changed

+

Opening an SVG

+

Press Open an SVG (or Open… at the foot of the rail), or drop an SVG anywhere on the window +while this tab is showing. An SVG dropped on another tab opens here too, except on Vectorize (which +re-traces it) and Fabricate (which cuts it).

+

Checking that nothing moved

+

The two panes show the drawing Before and After, each with its file size. The same three +arrangements as the Vectorize viewer are here: Side by side, Wipe (drag the divider) and +A/B (hold Space to flick to the original).

+

Backdrop chooses what the drawings sit on. Auto picks a light backdrop for dark artwork and +a dark one for light artwork, so a black logo does not vanish into the dark stage; Light and +Dark force one.

+

The line at the right of the toolbar states the promise and its measurement: Nothing moved more +than 0.1 px · measured 0.00 dE00. The colour difference is measured the same way the quality +report measures a trace, by rendering both files and comparing them.

+

The result

+

The large figure is how much smaller the file is, with the sizes before and after. Under it:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FigureWhat it counts
numbers before / afterThe numbers in the path data.
pathsDrawn elements before → after. Paths that are really circles, ellipses or rectangles are written as those.
segmentsLines and curves before → after.
differenceThe measured colour difference between the two renders, in dE00.
kept as drawnRuns of segments where the cheaper fit strayed past the tolerance, so the original was kept. The promise is kept by falling back, and this says how often that happened.
+

When document cleanup removed anything, a Removed list says what and how much.

+

The controls

+

The tolerance sentence. Nothing moves more than 0.1 px when the drawing is 1024 +px wide. Both numbers can be typed into. The first is the largest distance any point may move; +the second is the width the drawing is judged at, so the tolerance means the same thing for a +16-unit icon and a 2000-unit poster. The slider under it runs from exact through gentle to +aggressive (0 to 1 px); most of the useful range is in its first part.

+

Corner threshold (default 30°). A join that turns more sharply than this is a corner, and is +kept exactly. Lower it if soft corners are being rounded off.

+

Document cleanup (on). Removes ids, groups, editor metadata and trailing zeros. The geometry is +the same. Turn it off to leave everything but the path data exactly as it was, for example when +something relies on the ids.

+

Saving

+

Save SVG asks where, suggesting name.min.svg. Copy puts the result on the clipboard.

+

Rebuild it clean by re-tracing

+

Minifying keeps every path the file has. Some SVGs are messy in ways no rewrite can fix: shapes +stacked on shapes, translucent overlaps, outlines broken into pieces, thousands of nodes from an +auto-trace. Rebuild it clean by re-tracing sends the drawing to the Vectorize tab, where it is +drawn at 1024 px on its longer side and traced again from that picture. It comes back as a few +clean shapes, and the quality report measures the new drawing against the old one.

+

The re-trace starts with your current controls; the choice card is not shown, but +Walk me through it on the Tune tab opens the wizard as usual.

+

A re-trace is a reconstruction: small text and hairlines narrower than a pixel at 1024 px will not +survive it. Compare before you replace the original.

+

Studio Lite

+

Save SVG downloads the file.

+

Command line: the same minifier is inkvec-svgmin, with --tolerance, --judge, +--corner-degrees and --no-document.

+ +
+ + diff --git a/studio/guide/palette.html b/studio/guide/palette.html new file mode 100644 index 0000000000000000000000000000000000000000..745695f15ebfa1132932ca368c04ac7987baafa2 --- /dev/null +++ b/studio/guide/palette.html @@ -0,0 +1,122 @@ + + + + + + +The palette and colour groups · Inkvec Studio guide + + + +
+ +

The palette and colour groups

+

The palette card, at the bottom of the Result tab, lists every ink in the drawing: each flat +colour, and each gradient. It is where you correct a colour, match the drawing to a brand palette, +and tell the tracer that two colours are really one.

+

The palette of an emoji, with two suggested colour groups; the one under the pointer is singled out in the drawing

+

The inks

+

Each row shows the ink's swatch, its hex value (or linear / radial for a gradient), the share +of the canvas it covers, and on the right what can be done with it. Inks are listed largest first.

+

Hover or focus any ink and the drawing singles it out: everything else dims and the ink's +shapes are outlined, so you can see exactly where a colour is used, even a piece one pixel wide. +The same works for groups and their members, below.

+

Copy all as CSS copies the flat inks as CSS custom properties, --ink-1, --ink-2 and so on, +in the same order, each with its share of the canvas in a comment.

+

Snapping an ink to an exact colour

+

Click a flat ink to open the snap popover. It shows the colour that was measured (traced) and +how much of the canvas it covers, and takes a new colour from the picker or as a hex value. +Snap repaints that ink in the new colour.

+

Snapping rewrites the fills only; it does not trace again, so it is instant and the shapes do not +change. The ink's row then says snapped with the colour difference between what was measured and +what you chose. The popover says it plainly: you are overriding a measurement.

+

A snap belongs to the drawing on screen. Any new trace measures the colours again and replaces it, +so snap last. In version 0.2.0, Export is one of those traces: it always runs a fresh full +trace first, and the files it writes carry the measured colours, not the snapped ones. To keep +snapped colours, use Copy SVG (or the comparison card), which take the drawing exactly as it is +on screen, or give the colours to a colour group with a Custom… colour, which +is a setting and survives every trace.

+

A gradient cannot be snapped: it has no single colour. Its row shows how many stops it has.

+

Paste a brand palette

+

Paste brand palette takes a list of colours, one per line, as hex (#12443E), RGB or CSS +custom properties (--brand-green: #12443E;). Each flat ink of the drawing is then matched to the +nearest colour you pasted. The preview lists every match with its colour difference: exact when +the two are indistinguishable, green under 0.5 dE00, gold above. Snap applies them all.

+

Two things to know:

+
    +
  • Every flat ink is snapped to its nearest pasted colour, including inks that are far from all of + them. Paste every colour the design has (its white and black too), and check the gold rows before + you press Snap.
  • +
  • In version 0.2.0, write RGB with spaces, rgb(207 198 180). Commas also separate colours in the + pasted text, so rgb(207, 198, 180) is split apart and misread.
  • +
+

This is the quickest fix for a logo traced from a JPEG or a screenshot, whose colours carry the +compression's error: paste the brand's real values and every ink lands on them. Pasted colours are +snaps, so the note above applies: take the result with Copy SVG.

+

Colour groups

+

A colour group is a set of inks you want drawn as one. Unlike a snap, a group re-traces: the +engine merges the group's colours in the image before tracing, so the shapes between them really +join into one, rather than two shapes of the same colour side by side.

+

Groups are how you fix the most common palette problems:

+
    +
  • a flat colour that came back as two nearly identical inks (anti-aliasing or compression measured + it twice);
  • +
  • more colours than the design has;
  • +
  • a shadow or a highlight you want to fold into the colour under it.
  • +
+

Suggested groups

+

After each full trace the card proposes groups under Suggested. By default these are near +duplicates: inks that look like the same colour measured twice. Nothing is applied until you say +so.

+
    +
  • Accept turns a suggestion into a group (and re-traces). Accept all takes every + suggestion at once.
  • +
  • Dismiss drops it; it will not be proposed again for this image.
  • +
  • A suggestion can be edited before you accept it: take a member out with its ×, or drag + another ink onto it.
  • +
+

Colours N of M, with − and +, asks for a smaller palette: set it to the number +of colours the design really has, and the suggestions change to groups that merge the palette down +to that many. Back at the full count, the suggestions are near duplicates again.

+

Making a group yourself

+

Any of these works:

+
    +
  • Drag an ink onto another ink. The two become a new group, or the dragged ink joins the group + the other is already in.
  • +
  • Drag an ink onto a group (or a suggestion) to add it.
  • +
  • Tick inks and press Merge. The tick box is at the left of each row; Space ticks it + from the keyboard. Merge puts the ticked inks in one group (or into the group one of them is + already in). Clear unticks them.
  • +
+

To take a colour out of a group, press the × on its chip, or drag the chip out of the group and +drop it anywhere else. A group left with one member stops being a group.

+

What a group becomes

+

Under each group's members, an arrow shows the colour it will be drawn in:

+
    +
  • most-used (the default): the member that covers most of the image.
  • +
  • Click a member to make the group that colour. If the member is a gradient, the gradient is + extended over the whole group. Click it again to go back to most-used.
  • +
  • Custom… paints the whole group one colour of your choosing (hex #RRGGBB). Most-used + undoes it.
  • +
+

What the engine did

+

After the re-trace, each group says what was merged, or warns you:

+
    +
  • Merged on the next trace: the group is new and its trace has not landed yet.
  • +
  • #C0392B is no longer in the image; the rest merged: a member matched nothing (usually after a + control change moved the colours). The others were still merged.
  • +
  • Left alone: fewer than two of these colours are in the image now: nothing to merge.
  • +
+

Ungroup traces a group's inks on their own again; Clear groups removes every group.

+

Groups belong to one image

+

Colour groups name colours of the picture that is open. They are not saved with presets or +preferences, are not used by Batch, and are cleared when you open another image. They do go with +every trace of the current image, drafts included, and the Custom wizard's Undo my changes +restores them with the controls.

+

Command line: the same grouping is inkvec --merge-colors, for example +--merge-colors "#c0392b,#e74c3c;#123456,#abcdef=#ffffff" (groups separated by ;, members by +,, an optional = target).

+ +
+ + diff --git a/studio/guide/result.html b/studio/guide/result.html new file mode 100644 index 0000000000000000000000000000000000000000..2d55f3629bebc22fb5df11439cc197b5ae172310 --- /dev/null +++ b/studio/guide/result.html @@ -0,0 +1,213 @@ + + + + + + +Result: reading the quality report · Inkvec Studio guide + + + +
+ +

Result: reading the quality report

+

The Result half of the rail is what the last trace produced. It is a measurement, not a +score: the SVG is rendered and compared with your image pixel by pixel, and the figures are what +that comparison found.

+

The Result half of the rail: the quality report, editability, and the readout at the foot

+

From the top, the Result tab shows:

+
    +
  1. The Denoiser and Editable settings (shared with Tune; see + Tune).
  2. +
  3. Auto chose, while it has something to offer (see + Getting started).
  4. +
  5. The quality report.
  6. +
  7. Editability.
  8. +
  9. What this trace could not recover.
  10. +
  11. The palette (its own page).
  12. +
  13. One line comparing Inkvec with another tracer on the project's published benchmark. It is + labelled as such: it is not a measurement of your file.
  14. +
+

While a trace runs, a list of the engine's stages appears at the top, each ticked with the time it +took as it finishes.

+

The quality report

+

The large number is the mean colour difference between the SVG and the image, in dE00 +(CIEDE2000), the standard measure of how different two colours look to a person. It is averaged +over every pixel, so most of it comes from anti-aliased edges.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dE00What it means
0Identical.
about 0.1Typical for a clean PNG logo.
under 1.0Not visible side by side.
about 1.0Where a trained eye starts to see a difference.
well above 1Visible: a colour is off, or a detail is missing.
+

The meter under it runs from 0 to 5 on a square-root scale, with a tick at 1.0, just visible. +Beside the mean is the median, the difference at the typical pixel. A median much lower than +the mean says the error is concentrated somewhere (often one small detail) rather than spread +evenly.

+

The header says what was measured: full trace or draft, and the size it was traced at. +The card fades while a new trace is running.

+

The figures below the meter:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FigureWhat it counts
coordinatesNumbers in the drawing's geometry. The best single measure of how heavy the file is to edit and to ship.
pathsDrawn elements: paths, circles, rectangles.
colours foundDistinct inks in the drawing.
segmentsLines, curves and arcs, across all paths.
file sizeThe SVG as written.
minifiedWhat Minify would make it, or already if it is on.
traced atThe size the image was traced at, on its longer side.
time takenHow long the trace took.
+

Find the worst corner zooms the viewer to 12× on the place where the SVG and the image +disagree most, with the pixel grid on, and says +how large that disagreement is.

+

The readout at the foot

+

Pinned under both halves of the rail are the three numbers that matter most, dE00, +coordinates and file, each with what it changed by since the previous full trace. Fewer +coordinates and a smaller file are shown as good news; a higher colour difference turns amber, +since that is the cost. Drafts are never compared (they are smaller, so they would show changes +nobody made); the readout compares full trace with full trace.

+

This is how to judge a control: move it, and read what it bought and what it cost here.

+

Under the readout are Export, Copy SVG and the comparison-card button (see +Export), and Trace again, which runs a full trace with the controls as they are.

+

Editability

+

A trace is fitted for the pixels alone, so the file it makes does not have the habits of a file +an artist drew by hand. This card counts three of those habits on your drawing:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
RowWhat it countsHand-drawn files
Handles on an axisCurve handles pointing exactly along x or y34%
Smooth joinsPlaces two curves meet without a kink89%
Nodes sharing a coordinateNodes with the same x or y as another node, so they can be aligned in one move86%
+

Each bar shows your drawing's share, with the count, and a tick where hand-drawn files sit: the +median of 1,544 SVGs drawn by artists, measured the same way. A plain trace starts near zero on +the first two. Make it editable turns on Editable structure, +which moves the bars towards the ticks. It costs a little colour accuracy (about 0.04 dE00 on +icons); the quality report shows the price on your image.

+

A drawing made only of lines and arcs has no curve handles and no curve joins, so only the last row +is shown, with a note saying why.

+

What this trace could not recover

+

This panel is always there. When it finds nothing it says Nothing we can detect was lost. When it +finds something, each row says what, with Why for the measurement behind it and, sometimes, one +link.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RowWhat it meansWhat you can do
The lettering came back as outlines, not editable text.Six or more shapes of matching height sit on one baseline. Tracing recovers their shapes, not the typeface, so the words cannot be re-typed.Set the text again in a vector editor if you need it live.
The source is a JPEG (or WebP), so these colours carry its compression damage.The colours measured are the ones in the file, which are not quite the ones the artwork was drawn with.Turn on the denoiser, and check the colours against your brand values (paste a brand palette).
Stroke widths are baked into filled outlines.Several shapes are outlines drawn around lines rather than the lines themselves; an editor sees closed shapes, not strokes.Try the Line art preset.
Line art was asked for, and the stroke widths vary too much to recover.Strokes need one width per path; this drawing's widths change along the line.Nothing: this drawing is not uniform-stroke line art.
Part of this image is a continuous ramp, which is something SVG cannot hold.Part of the image is a smooth shade (a blur, a mesh, a photographic shadow) that no SVG gradient reproduces within a visible difference.Nothing in the settings; it is the closest arrangement of fills.
N very small features did not survive the trace at this size.Small islands of detail were painted over.Raise Trace size, or lower Speckle floor (see Tune).
+

The first row in this panel is also copied into the asset pack's README when you export one.

+ +
+ + diff --git a/studio/guide/settings.html b/studio/guide/settings.html new file mode 100644 index 0000000000000000000000000000000000000000..8a460fc06a68f979bdadd5268f250747741ad3fa --- /dev/null +++ b/studio/guide/settings.html @@ -0,0 +1,161 @@ + + + + + + +Settings · Inkvec Studio guide + + + +
+ +

Settings

+

Settings in the app bar (or Ctrl+,, ⌘+, on a Mac) +opens the preferences on one page. Changes apply as you make them; Done or Esc +returns to where you were.

+

The Settings screen

+

General

+
    +
  • Default output folder: where the export sheet starts. Without one, Export asks each time.
  • +
  • Theme: System (follow the operating system), Dark or Light.
  • +
  • When an image is opened: what the app offers besides Auto's trace, which always starts at + once. Ask shows the choice card; Auto only shows nothing; Custom wizard opens the wizard + straight away. See Getting started.
  • +
  • Language: English only in this release.
  • +
+

Performance

+
    +
  • Threads: how many processor threads the tracer may use; fewer leaves room for other work. + Takes effect the next time the app starts.
  • +
  • Draft resolution (default 512 px): the size a draft is + traced at, on its longer side, while you move a control.
  • +
  • Draft time limit (default 0.4 s): a draft that takes longer is dropped rather than shown late.
  • +
  • Settle before the full trace (default 800 ms): how long the controls must be still before the + full trace starts.
  • +
+

On a slow computer, a lower draft resolution keeps the controls responsive; on a fast one, a +higher one makes drafts closer to the final.

+

Denoiser

+

The denoiser is a trained model that repairs JPEG, WebP and screenshot damage before tracing, which +usually halves the colour error on a photographed or screenshotted logo. It is optional and not +included in the installer (it is about 80 MB).

+
    +
  • Status: Not installed, or Installed with its size.
  • +
  • Download explains the download before anything is fetched: where it comes from (the + Logolabs/inkvec-denoiser-001 repository on Hugging Face), what it adds to each trace (about + 0.6 s), and that it is checked against its published SHA-256 when it arrives. Press Download + to start. You can keep tracing while it downloads, and Cancel download really stops it.
  • +
  • Remove deletes it again.
  • +
  • Verified against shows the repository and the start of the checksum.
  • +
+

The model runs on your computer like everything else: it comes down, your image never goes up. +Once it is installed, the command-line inkvec --restore uses the same file.

+

The Intel macOS build does not include the denoiser, and says Not in this build. The Windows, +Linux and Apple-silicon macOS builds do.

+

Updates

+
    +
  • Check on start (on): looks for a newer version when the app starts, sending your app version + and operating system and nothing else. Off, the app never contacts the network (except for a + denoiser download you ask for).
  • +
  • Channel: Stable or Prerelease.
  • +
  • Check now: asks once, whatever the setting above says. A newer version is announced in the + status strip, with a link to what changed.
  • +
+

Advanced

+

Both entries here add something to your system for your user only: no administrator rights, +nothing machine-wide. Each row shows whether it is in place and where, and Remove takes it back +out.

+

Add inkvec to PATH puts the inkvec command, the same engine at the same version as the app, +where a terminal finds it:

+ + + + + + + + + + + + + + + + + +
SystemWhere
Windowsa copy at %LOCALAPPDATA%\Microsoft\WindowsApps\inkvec.exe
macOS, Linuxa link at ~/.local/bin/inkvec
+

On Windows, open a new terminal afterwards. On macOS and Linux, ~/.local/bin must be on your +PATH (it is on most Linux distributions; on macOS, add it if inkvec is not found). Being a +copy, the Windows command does not follow app updates: after installing a new version, press +Remove and Add again.

+

Right-click menu adds Vectorize with Inkvec to the file manager's menu for PNG, JPEG, WebP, +BMP and TIFF files. Choosing it opens the image in the Studio (in the window already open, if there +is one).

+ + + + + + + + + + + + + + + + + + + + + +
SystemWhat is added
WindowsA per-user entry in the registry, under HKEY_CURRENT_USER\Software\Classes\SystemFileAssociations. On Windows 11 it is under Show more options.
LinuxA desktop entry, ~/.local/share/applications/inkvec-studio-vectorize.desktop; it appears under Open With in most file managers.
macOSNothing to add: Finder already offers Inkvec Studio under Open With.
+

On Windows, uninstalling the app also removes both entries.

+

Reset settings puts every preference and the trace controls back to their defaults and clears +the recent files. It deletes the preferences file, so your saved presets go too. Nothing you +have traced or exported is touched, and the denoiser stays installed.

+

Privacy

+

The last card says what the rest of this guide says too: tracing runs on your own processor, there +is no account, no upload and no telemetry, and the update check is the only request the app makes +on its own.

+

Where things are kept

+ + + + + + + + + + + + + + + + + + + + + + + +
WhatWindowsmacOSLinux
Preferences, recent files, saved presets%APPDATA%\inkvec-studio\preferences.json~/Library/Application Support/inkvec-studio/preferences.json~/.config/inkvec-studio/preferences.json
The denoiser model%LOCALAPPDATA%\inkvec\models\restorer.onnx~/.cache/inkvec/models/restorer.onnx~/.cache/inkvec/models/restorer.onnx
+

About

+

About shows the app's version, the engine's version and the build target, links to the user +guide, the source and the online demo, the compute acknowledgement for the denoiser's training, and +the licence and third-party notices (Open shows them in full).

+

Studio Lite

+

Studio Lite keeps its preferences in the browser. It has no Advanced entries (no command on +the PATH, no right-click menu) and no default output folder, since files are downloaded.

+ +
+ + diff --git a/studio/guide/shortcuts.html b/studio/guide/shortcuts.html new file mode 100644 index 0000000000000000000000000000000000000000..032c90712f54442b2aecb5c955d132b3795589fd --- /dev/null +++ b/studio/guide/shortcuts.html @@ -0,0 +1,133 @@ + + + + + + +Keyboard and mouse · Inkvec Studio guide + + + +
+ +

Keyboard and mouse

+

On a Mac, read ⌘ for Ctrl.

+

Anywhere

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeysDoes
Ctrl+OOpen an image
Ctrl+EOpen the export sheet (once there is a drawing)
Ctrl+,Settings
F1This guide, at the page about what is on screen
Ctrl+1 … Ctrl+8Choose a preset: Logo, Icon, Fine detail, Fewer paths, Photo or scan, Black & white, Line art, Editable
EscClose, in this order: Settings, About or the guide; the Custom wizard (keeping what you chose); the choice card (keeping Auto). With none of those open, cancel the trace in progress.
+

The preset shortcuts do nothing while you are typing in a field.

+

In the Vectorize viewer

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Keys or gestureDoes
Hold SpaceShow the source instead of the SVG (A/B), until released
0, or double-click a paneFit the drawing to the window
+ or =Zoom in
-Zoom out
Scroll wheel, or pinchZoom about the pointer
DragPan
Drag the wipe dividerMove it (in Wipe)
+

Space also flicks between Before and After in the Minify SVG tab.

+

In the rail

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeysDoes
TabMove between controls
Arrow keys, on a sliderMove it one step; each step traces
Enter, in a number fieldApply the value
Space, on a palette tick boxTick or untick the ink
Focus a control's nameShow what it does
Focus an ink or a colour groupSingle it out in the drawing
Enter, in the save-preset or colour fieldSave or use it
+ +
+ + diff --git a/studio/guide/troubleshooting.html b/studio/guide/troubleshooting.html new file mode 100644 index 0000000000000000000000000000000000000000..7341668e1964d52d38b83f82b5077539bd19c8ba --- /dev/null +++ b/studio/guide/troubleshooting.html @@ -0,0 +1,116 @@ + + + + + + +Troubleshooting and questions · Inkvec Studio guide + + + +
+ +

Troubleshooting and questions

+

Installing and starting

+

Windows says "Windows protected your PC". The installer is not code-signed. Choose More +info, then Run anyway. Check the file's SHA-256 against the release notes first if you want +to be sure it is the published one. See Install.

+

macOS says the app cannot be opened. Also unsigned. Control-click the app in Applications, +choose Open, then Open again. If that is refused too, run +xattr -dr com.apple.quarantine "/Applications/Inkvec Studio.app".

+

The Linux package will not install or start. The app needs glibc 2.38, libstdc++ 13 and +WebKitGTK 4.1 (Ubuntu 23.10, Debian 13, Fedora 39 or newer), because the denoiser's runtime needs +them. On an older system use the command-line archive, which runs on glibc 2.17 and later (without +the denoiser).

+

The Windows app will not start. It needs Microsoft WebView2, which the .exe installer +fetches if it is missing. After installing from the .msi, or on a machine where WebView2 was +removed, install the WebView2 Runtime from Microsoft and start the app again.

+

Transparency and backgrounds

+

My logo has a transparent background, and the SVG has a white (or black) box behind it. +Check that Trace transparency (Tune, Colour) is on; it is by default. If the image itself has +a solid background, turn on Transparent background (Tune, Output): the shape that covers the +whole canvas is then not painted.

+

The holes in letters (the middle of an O) are filled in. Transparency was flattened: turn +Trace transparency on. If you must trace with it off, Holes as cutouts puts the holes back.

+

A white logo on a transparent background disappeared. It is there; a white drawing on a white +page is invisible. With Trace transparency on, it is traced as white shapes on a clear ground. +Look at it with the Minify tab's dark Backdrop, or in the viewer (the stage is dark).

+

Soft shadows or glows came back as flat shapes. With Trace transparency on they come back as +translucent fills. Where a shade is a continuous blur, the Result tab says that part is a ramp SVG +cannot hold exactly.

+

Colours

+

Two shades of what should be one colour. A flat colour measured twice, usually from +anti-aliasing or compression. Accept the suggested colour groups, or +raise Colour merging a little.

+

More colours than the design has. Set Colours in the palette to the number the design has +and accept the suggestions, or lower Max colours.

+

A small detail took the colour of its neighbour. Too few colours, or merging too strong. Raise +Max colours or lower Colour merging, and undo any group that swallowed it.

+

Does the transparent background use up one of the colours? No. With Trace transparency on +(the default), the clear ground is not counted towards Max colours.

+

The colours are slightly off from the brand's. The colours written are the ones measured in +the image, and a JPEG or a screenshot changes them. Use the denoiser, and +paste the brand palette to snap each ink to its real value.

+

I snapped colours, and the exported files have the old ones. Export re-traces, which measures +the colours again. In version 0.2.0, use Copy SVG after snapping, or set the colour on a colour +group with Custom…. See Export.

+

The denoiser

+

The download fails. The app downloads from huggingface.co. A proxy or firewall that blocks it +stops the download; the message says why. You can also fetch the model yourself, from +https://huggingface.co/Logolabs/inkvec-denoiser-001/resolve/main/restorer.onnx, and put it where +the app keeps it (see Settings). The app checks it against the +published SHA-256 and only treats it as installed if it matches.

+

The download finished but the denoiser says "Not installed". The file did not match the +published checksum (an interrupted or altered download) and was not kept. Download it again.

+

"Not in this build". The Intel macOS build has no denoiser, because its runtime has no package +for that platform.

+

The denoiser is on and the draft looks no different. Drafts skip the denoiser. It runs on the +full trace, a moment after you stop moving controls.

+

Speed and size

+

A trace is slow. Tracing time grows with the pixel count. Lower Trace size (Tune, Detail); +for most logos 1024 or 2048 px loses nothing visible. Threads in Settings should be the full +count unless you need the computer for something else.

+

"The trace would run out of memory". Press Retry at with the size it suggests.

+

The SVG is huge. Try the Fewer paths preset, raise Precision, accept the colour-group +suggestions, and export the minified copy. A photograph will never make a small SVG; see +Limitations.

+

The trace of an enlarged image is blocky or stepped. An image that was enlarged from a smaller +one carries the smaller one's pixel steps, and the trace follows them faithfully. Trace the +original, smaller file instead.

+

The result

+

The lettering is outlines, not text. Tracing recovers shapes, not the typeface; the Result tab +says so. Re-set the words in a vector editor if they must stay editable.

+

Lines came back as thin filled shapes. Try the Line art preset. It only works for lines of one +even width; brush and calligraphic strokes stay as outlines.

+

The draft and the final look different. A draft is traced small (512 px) for speed. Wait for +the chip to say final before judging or copying.

+

Exported PNGs are stretched. In version 0.2.0 the PNG and favicon files are square. Use the SVG +for a non-square logo, or trace a square version for the favicon.

+

Integrations

+

"Vectorize with Inkvec" is not in the right-click menu. Add it first in +Settings, Advanced. On Windows 11 it is under Show more options. On +macOS use Open With, where the app is already listed.

+

inkvec is not found after "Add inkvec to PATH". Open a new terminal. On macOS, add +~/.local/bin to your PATH.

+

A cutter imports the file at the wrong size. In Fabricate, set The files state their size +in to the pixel rate the program uses (Cricut and Silhouette: 72/in), and cut the size-check +square to confirm. See Fabricate.

+

Help and settings

+

Help says the guide is not bundled with this build. A development or browser build may not +include it. Open the online guide shows the same pages on +logolabs.github.io/inkvec.

+

How do I start over? Settings, Advanced, Reset settings. It deletes your preferences, +recent files and saved presets, and leaves your files and the denoiser alone.

+

Studio Lite

+

Where did my file go? Studio Lite downloads what it saves, into your browser's downloads +folder.

+

Where are Batch, the command line and the right-click menu? They need the desktop app. See +Inkvec Studio and Inkvec Studio Lite.

+

Reporting a problem

+

Report bugs on GitHub. Include the app version (from +About), your operating system, and, if you can share it, the image. Security problems go through +the security policy instead.

+ +
+ + diff --git a/studio/guide/tune.html b/studio/guide/tune.html new file mode 100644 index 0000000000000000000000000000000000000000..bfccbbcff8464baa76ab46a4936911e6c1749864 --- /dev/null +++ b/studio/guide/tune.html @@ -0,0 +1,318 @@ + + + + + + +Tune: presets and every control · Inkvec Studio guide + + + +
+ +

Tune: presets and every control

+

The Tune half of the rail holds the settings for the next trace: eight presets, any presets you +saved, and twenty-two controls. Moving any of them starts a draft at once and a full trace a moment +later (see draft and full traces); the readout at the foot of +the rail shows what the change bought or cost.

+

The Tune half of the rail: presets, then the Detail group with one control changed

+

The tab's label says how many controls are away from the selected preset (2 changed). If you +are not sure where to start, Walk me through it at the top opens the +Custom wizard for the image that is open.

+

How the controls work

+
    +
  • Sliders move a readout while you drag and apply when you let go. The arrow keys move them one + step at a time. The words under a slider (exact, default, coarse) name the ends of its + scale; several sliders are not linear, so that the useful range gets most of the track.
  • +
  • Number fields beside each slider take a value typed in; it applies on Enter or + when you leave the field, and is held to the control's range.
  • +
  • Switches apply at once.
  • +
  • Hover or focus a control's name to read what it does. The text is the engine's own + documentation for the option, unedited.
  • +
+

A control you have moved is marked with a dot. Each group (Detail, Colour, Shape, +Output) folds open and shut from its heading, says how many of its controls are changed, and +has its own Reset. Output starts folded.

+

The controls are the same ones the inkvec command line has; the Studio only gives them +plain-language names. The table at the end of this page maps them.

+

The denoiser and Editable

+

Two settings sit above both halves of the rail, big, because they are the two people most often +come for. Each is one control, shown once.

+

Denoiser: Off, Auto or On. The denoiser is a trained model that repairs JPEG, WebP +and screenshot damage at the image's own size before tracing, so the colours are the ones the +artwork was drawn with rather than the ones the compression left.

+
    +
  • Off (the default) traces the pixels as they are. On a clean PNG the denoiser costs a little + colour accuracy, which is why it is off.
  • +
  • Auto traces, measures the fit, and cleans only if the trace disagrees with the image where it + claims to be flat.
  • +
  • On always cleans first.
  • +
+

It adds about 0.6 s to each full trace; drafts skip it. It is a one-time download of about 80 MB +(see the denoiser). If you choose Auto or On before downloading it, the +trace carries on without it and Download it appears in its place. A build without the denoiser +(the Intel macOS build) shows not in this build.

+

Editable: a switch for Editable structure. After fitting, it spends parameters on structure +an artist can edit: joins that are smooth, handles that lie on an axis and have equal lengths, nodes +lined up with each other, and shapes that are symmetric locked into exact mirrors. The outline stays +within the same tolerance; the Editability card shows what it changed, and +the quality report shows its price (about 0.04 dE00 on icons).

+

Presets

+

A preset is a handful of settings chosen together. The tray shows the eight built-ins; the line +under it describes the one selected.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PresetForWhat it changes from LogoShortcut
LogoThe defaultNothingCtrl+1
IconSmall flat marksSpeckle floor 1 px², Max colours 16Ctrl+2
Fine detailFiligree, crests, emojiPrecision 0.05 pxCtrl+3
Fewer pathsThe smallest fileFewer paths on, Colour merging doubled (0.07)Ctrl+4
Photo or scanPhotographed or screenshotted marksDenoiser AutoCtrl+5
Black & whiteStamps, signaturesBlack & white onCtrl+6
Line artUniform-stroke drawingsLine art onCtrl+7
EditableTidy nodes for an artist to editEditable structure onCtrl+8
+

On a Mac the shortcuts use ⌘. Choosing a preset sets every control to that preset's +values, so anything you had moved goes back. Moving a control after choosing a preset keeps the +preset selected and counts the control as changed; Reset N changed puts them back.

+

Photo or scan needs the denoiser to do what it says. Without it the trace still runs, and the +stage says the denoiser is missing and offers the download.

+

Saving your own

+

Save as preset stores all twenty-two controls exactly as they stand, under a name you give +(up to 40 characters). It appears in the tray after the built-ins; the × on its chip forgets +it. You can keep up to twelve. A saved preset is a complete snapshot rather than a list of +differences, so it does not change if a future version changes the defaults.

+

Colour groups are never saved in a preset: they name colours of one image.

+

Detail

+

Precision (px, 0.02 to 0.5, default 0.1). How much a coordinate has to earn its place. +Smaller values follow the edge more closely and spend more coordinates doing it; larger values give +a lighter file that follows less closely. It does not change how many decimals are written +(always two). +Change it when a crest or fine lettering loses detail (lower it), or when a simple mark has more +nodes than it needs (raise it).

+

Speckle floor (px², 0 to 64, default 2). Features smaller than this area are dropped. +Raise it to drop scanner dust and JPEG specks; lower it to keep tiny serifs, dots and +one-pixel details.

+

Trace size (px, 256 to 4096, default 2048). An image larger than this on its longer side is +traced at this size, and the SVG is still written at the image's full size. Smaller images are +traced at their own size. Tracing time grows with the number of pixels. +Raise it when a large image has small details that come back missing; lower it when a trace is +slow or runs out of memory.

+

Time limit (s, 0 to 60, default 0: none). A budget for the trace. Two expensive steps stop +early to meet it (merging gradient bands stops at 60% of it, the boundary solve gets 25%); the +result is still a correct trace, with more fills or a less polished outline. With a time limit the +output depends on how fast and how busy the computer is, so the same image can trace differently +twice. Leave it at 0 unless a batch of very large images must finish in time.

+

Colour

+

Max colours (2 to 2048, default 64). The largest palette the trace may use. The transparent +background does not count towards it. +Lower it to force a small palette on a scan with many near-identical shades. To merge particular +colours, colour groups are more precise.

+

Colour merging (0 to 0.2, default 0.035). How close two colours must be (a distance in the +OKLab colour space) to be treated as one ink. +Raise it when shades that should be one colour come back as several; lower it when two +genuinely different colours were merged.

+

Flat fills instead of gradients (off). Skips gradient fitting and fills every region with one +colour. For flat artwork, or when the SVG must not contain gradients.

+

Black & white (off). Two inks only: the Potrace-style mode, for stamps, signatures and scans +of print.

+

Trace transparency (on). Transparency is traced as it is: holes stay holes, every ink carries +its own opacity, and soft shadows, glows and feathered edges come back as translucent fills. Turned +off, the image is laid on a solid background first and traced as solid colours, which fills holes +and gaps with that background. It changes nothing for an image without transparency.

+

The denoiser's setting (Clean up damage) belongs to this group but is shown at the top of the +rail.

+

Shape

+

Match repeated shapes (on). Marks that repeat across the drawing (a row of stars, the dots of +several i's) are redrawn from one shared shape, which saves coordinates. A mark takes the shared +shape only where that stays within 0.1 px of its own traced outline and actually costs less; a +fitted circle or rounded rectangle, and a shape another shape is drawn against, are never moved.

+

Match threshold (0.5 to 1, default 0.92). How alike two marks' outlines must be to count as +the same shape. Towards 1, only near-identical marks are matched.

+

Fewer paths (off). Scales the fit tolerances with the image, so a large, simple drawing costs +what a small one would. It trades accuracy for a smaller file: small squares can come back as +circles, and thin rings broken. Used by the Fewer paths preset.

+

Line art (off). Writes line art as strokes, one path and one width each, instead of as the +filled outlines around the lines, so the lines can be re-weighted in an editor. On anything that is +not uniform-stroke line art it does nothing, and the Result tab says so.

+

Repair crossing rings (on). A pass after fitting that fixes outlines that cross themselves. +Turned off, each outline is exactly as the fitter wrote it, crossings included. Leave it on.

+

Curve cost (parameters, 2 to 12, default 6). What one Bézier curve costs the fit; a straight +line costs 2. At 6, a chain of short lines is often cheaper than the one curve that describes it, +which is why traces come out less curvy than hand-drawn artwork. +Lower it for more curves and fewer lines, at some cost in file size.

+

Smooth-join angle (degrees, 1 to 60, default 10). The turn at a join that counts as a full +corner; gentler bends are charged less. +Raise it to let gentle bends stay smooth, which tends to give more curves and a little more +detail in a slightly larger file.

+

Editable structure belongs to this group but is shown at the top of the rail, as Editable.

+

Output

+

These rewrite the drawing rather than change the trace.

+

Minify (off). No ids or groups, no trailing zeros: the same geometry in a file typically about +a tenth smaller. Export always writes a minified copy as well, so you only need this if you copy or +batch the SVG.

+

Transparent background (off). The shape that covers the whole canvas is not painted, so the +artwork sits on transparency. Use it for a logo that will go on coloured backgrounds.

+

Margin (0 to 0.25, default 0). Transparent space around the drawing, as a fraction of its +longer side: 0.05 adds 5% on every side. The canvas grows; the drawing does not move.

+

Holes as cutouts (off). Carries the image's transparency into the SVG as holes: a region the +image drew transparent becomes a hole, one drawn at a single opacity keeps that opacity, and white +artwork on a transparent background survives. It changes nothing for an image without +transparency. With Trace transparency on (the default) holes already stay holes, so this +matters mainly when that is off.

+

The same controls on the command line

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Studioinkvec option
Precision--precision
Speckle floor--min-area
Trace size--max-dim
Time limit--time-budget
Max colours--colors
Colour merging--merge
Flat fills instead of gradients--no-gradients
Black & white--bilevel
Trace transparencyon by default; --no-native-alpha turns it off
Denoiser (Clean up damage)--restore off, --restore auto, --restore on
Match repeated shapeson by default; --no-harmonize turns it off
Match threshold--harmonize-threshold
Fewer paths--content-units
Line art--strokes
Repair crossing ringson by default; --no-repair turns it off
Editable structure--editability
Curve cost--bezier-cost
Smooth-join angle--corner-angle
Minify--minify
Transparent background--no-background
Margin--margin
Holes as cutouts--cutout
Colour groups (palette)--merge-colors
+

inkvec --help lists them all with their exact spelling.

+ +
+ + diff --git a/studio/guide/tutorials/favicon-asset-pack.html b/studio/guide/tutorials/favicon-asset-pack.html new file mode 100644 index 0000000000000000000000000000000000000000..881f743f676bab3417dedeb7aa7162d18836fe60 --- /dev/null +++ b/studio/guide/tutorials/favicon-asset-pack.html @@ -0,0 +1,98 @@ + + + + + + +Tutorial: a favicon and an asset pack · Inkvec Studio guide + + + +
+ +

Tutorial: a favicon and an asset pack

+

This tutorial takes a mark from a PNG to the set of files a website or a brand folder needs: an +SVG, a minified SVG, PNGs at three sizes, a favicon, a palette, and a zip holding all of them with a +README. About five minutes.

+

1. Start from the right image

+

A favicon is drawn at 16 by 16 pixels in a browser tab. At that size a wordmark is a grey smudge; +use the symbol on its own. And the export's PNG and favicon files are square (in version 0.2.0 +a non-square drawing is stretched to fill them), so the image should be square, with the mark +centred. If your logo is wide, crop the symbol to a square in any image editor first.

+

A PNG with a transparent background is best. A JPEG works too; see +Clean up a JPEG logo first.

+

2. Open and trace it

+

Drop the PNG on the window. Auto traces it at once. For a small, flat mark the choice card may +suggest Icon, which keeps one-pixel details and allows at most 16 colours; press Try Icon if +it does. Otherwise Keep Auto.

+

Look at the Result tab: a clean PNG mark should land near 0.1 dE00. Turn on Anchors in the +viewer to see how many nodes it has; a favicon does not need many.

+

3. Set the output

+

Open Tune and unfold Output.

+
    +
  • Transparent background: on, if the image has a solid background you do not want in the + favicon. (An image that is already transparent stays transparent without it.)
  • +
  • Margin: a little room around the mark keeps it off the edges of the tab: 0.05 adds 5% of the + mark's size on every side. Without one, the mark touches the edges of its 16 px square.
  • +
  • Minify: leave it off. The export writes a minified copy anyway, beside the readable one.
  • +
+

These options rewrite the drawing rather than re-trace it, so the readout at the foot barely +moves.

+

4. Export

+

Press Export (or Ctrl+E).

+

The export sheet

+
    +
  1. Tick ICO and favicon set. (It is off at first.)
  2. +
  3. Leave SVG, SVG (minified), PNG · 512 / 1024 / 2048 and Asset pack ticked, or + untick the loose files if the zip is all you want: the zip always holds the complete set.
  4. +
  5. Choose a folder.
  6. +
  7. Press Export N files.
  8. +
+

The export runs a fresh full trace, then writes, for an image called mark.png:

+
mark.svg                  the drawing
+mark.min.svg              the same, smaller
+png/mark-512.png          512 x 512
+png/mark-1024.png         1024 x 1024
+png/mark-2048.png         2048 x 2048
+favicon/favicon.ico       16, 32 and 48 px in one file
+favicon/favicon-16.png
+favicon/favicon-32.png
+favicon/favicon-48.png
+palette.json              every colour, with its share of the drawing
+mark-assets.zip           all of the above, plus README.txt
+
+ +

Show in folder on the note that appears opens the folder.

+

5. Put the favicon on a site

+

Copy favicon.ico and mark.min.svg to the root of the site, and add to the page's <head>:

+
<link rel="icon" href="/favicon.ico" sizes="any">
+<link rel="icon" href="/mark.min.svg" type="image/svg+xml">
+
+ +

Browsers that read SVG favicons use the SVG, sharp at every size; the rest use the ICO.

+

6. Hand over the pack

+

mark-assets.zip is made to be handed to someone else. Its README.txt says what the files were +traced from, at what size, the measured colour difference and coordinate count, what each file +is, and, if the trace could not recover something (lettering as outlines, JPEG colours), that too. +palette.json lists each colour's hex value and how much of the drawing it covers, in order:

+
{
+  "generator": "...",
+  "inks": [
+    { "hex": "#14453f", "traced": "#14453f", "share": 0.56 }
+  ]
+}
+
+ +

For the colours as CSS custom properties instead, use Copy all as CSS in the palette.

+

Variations

+
    +
  • A wide logo as well. Trace the full logo separately and take its SVG; skip the PNG rows + (they would be stretched square) and render PNGs from the SVG in your design tool.
  • +
  • A dark-mode favicon. Trace a light version of the mark, or edit the colours in the SVG.
  • +
  • Only the SVG. Copy SVG at the foot of the rail puts it on the clipboard without writing + any files.
  • +
+ +
+ + diff --git a/studio/guide/tutorials/jpeg-logo.html b/studio/guide/tutorials/jpeg-logo.html new file mode 100644 index 0000000000000000000000000000000000000000..f1d01e2379463c9e28eea4573024f5203b1be3e9 --- /dev/null +++ b/studio/guide/tutorials/jpeg-logo.html @@ -0,0 +1,96 @@ + + + + + + +Tutorial: clean up a JPEG logo · Inkvec Studio guide + + + +
+ +

Tutorial: clean up a JPEG logo

+

A logo saved as a JPEG, or captured in a screenshot, is the most common thing people need to +vectorize, and the hardest to trace well. JPEG compression leaves faint blocks and halos around +every edge and shifts the colours slightly, and a faithful trace reproduces all of it: flat +colours come back speckled, one colour comes back as three, and the edges wobble. This tutorial +removes the damage first, then settles the palette, then checks the result.

+

You need a JPEG (or a lossy WebP, or a screenshot) of a logo. About 10 minutes, plus a one-time +download of about 80 MB.

+

1. Get the denoiser

+

The denoiser is the trained model that repairs compression damage before tracing. It is not in the +installer. Open Settings, and under Denoiser press Download. The dialog says where it +comes from and what it costs; press Download again. It is checked against its published +checksum when it arrives, and it runs on your computer: nothing is uploaded.

+

You can do this later, from the prompts in the steps below; doing it first means the first trace is +already a clean one.

+

2. Open the JPEG

+

Drop the file on the window, or press Ctrl+O. Auto traces it at once, and +the choice card appears over the stage. When Auto's trace lands, Auto chose says what it +noticed:

+

The choice card for a JPEG: Auto suggests the Photo or scan preset, and a colour group

+

Looks like a photo, a scan or a screenshot appears because the file is a JPEG, or because its +pixels measure noisy (the evidence is on the second line, as a noise level: a clean file reads +about 0.5).

+

3. Turn the clean-up on

+

Either press Try Photo or scan, with the denoiser on the card, which switches to the Photo or +scan preset, or press Customise… and go through the wizard: its second step, Clean-up, is +there because the image looks damaged.

+

The wizard's Clean-up step, saying why it was offered

+

Choose Auto: the trace is measured, and the damage is cleaned where the trace disagrees with the +image in places that should be flat. (Tune's Denoiser switch at the top of the rail is the same +setting: Off, Auto, On.)

+

The denoiser runs on the full trace only, so the right pane changes a moment after the draft. With +the wizard open, the left pane shows Auto's trace without it, for comparison.

+

4. Settle the palette

+

Compression turns one flat colour into a cluster of near-identical ones. Open the Colours step +in the wizard (or the palette at the bottom of the Result tab).

+
    +
  • Accept the suggested groups whose members are the same colour measured twice. Hover a + suggestion first: the drawing singles out the shapes it would join.
  • +
  • If the logo has, say, three colours and the palette still has more, set Colours to 3 and look + at the groups it proposes. Accept the ones that are right; Dismiss the others.
  • +
+

Each accepted group re-traces, so the shapes between the merged colours really join into one. +See the palette for everything groups can do.

+

5. Check the edges

+

Close the wizard (Finish), or stay on the Result tab.

+
    +
  1. Read the quality report. The mean colour difference measures the trace against the JPEG, + damage and all, so a cleaned trace can show a higher number than a faithful one: it no longer + copies the noise. Judge by eye.
  2. +
  3. Press Find the worst corner. The viewer zooms to 12× with the pixel grid on, at the place of + largest disagreement. On a JPEG this is usually a halo the trace has rightly ignored.
  4. +
  5. Turn on Certainty. Red bands show edges the pixels could not pin down. If whole outlines are + red, the JPEG was small or heavily compressed; a larger source helps more than any setting.
  6. +
  7. Hold Space in A/B to flick between the JPEG and the SVG.
  8. +
+

If small specks survived, raise Speckle floor (Tune, Detail) a little. If a detail was lost, +lower it, or lower Precision.

+

6. Match the brand colours

+

The colours now come from the cleaned image, which is closer to the artwork than the JPEG, but +still a measurement. If you know the brand's real values:

+
    +
  1. In the palette, press Paste brand palette.
  2. +
  3. Paste the colours, one per line, as hex (#12443E) or CSS variables. Include every colour the + logo uses, white and black too: every ink is matched to its nearest pasted colour.
  4. +
  5. Check the preview. A gold figure means a large move; make sure it is the right colour.
  6. +
  7. Press Snap.
  8. +
+

7. Take it out

+

Snapped colours live on the drawing on screen. In version 0.2.0, Export re-traces first and +writes the measured colours, so after snapping use Copy SVG and paste the drawing where it is +going. If you did not snap, Export (or Ctrl+E) writes the SVG, a minified +copy, PNGs and an asset pack; see Export.

+

The Result tab will still list The source is a JPEG, so these colours carry its compression +damage. That is a fact about the file you started from, and it goes into the asset pack's README +so whoever uses the files knows to check the colours.

+

Why not trace the JPEG as it is?

+

You can: with the denoiser Off, the trace reproduces the JPEG faithfully, and the colour +difference is lower because it copies the damage. That is the right choice when the damage is part +of what you want to keep. For a logo, it almost never is.

+ +
+ + diff --git a/studio/guide/tutorials/laser.html b/studio/guide/tutorials/laser.html new file mode 100644 index 0000000000000000000000000000000000000000..5a46c0c9c71596d4857829a7f911600f58a897c6 --- /dev/null +++ b/studio/guide/tutorials/laser.html @@ -0,0 +1,108 @@ + + + + + + +Tutorial: laser cutting, DXF and G-code · Inkvec Studio guide + + + +
+ +

Tutorial: laser cutting, DXF and G-code

+

This tutorial turns a logo into files for a laser cutter or a CNC router: hairline cut paths in +real millimetres, compensated for the width of the cut, as an SVG for LightBurn, a DXF for CAD and +CAM programs, and G-code for a GRBL machine. About 15 minutes, plus a test cut.

+

1. Trace it, or bring an SVG

+

Trace the logo in Vectorize as usual (see Getting started), then open +Fabricate and press Use the current trace. Or open any SVG in Fabricate with Open an +SVG.

+

For cutting, fewer and simpler outlines are better: every outline is a path the head has to +follow. Accept the palette's colour-group suggestions, and consider the Fewer paths preset +before you bring the trace over.

+

2. Choose "Laser or sign cutter"

+

Under Material, press Laser or sign cutter. It sets:

+
    +
  • Inlay mode: one sheet per colour, cut exactly, nothing stacked;
  • +
  • Hairlines: only a hairline is a cut, and each sheet keeps its colour so a laser program can + give each colour its own operation (LightBurn reads the colours as layers);
  • +
  • a kerf of 0.15 mm, inner shapes cut before the parts around them;
  • +
  • a smallest width of 0.3 mm, no registration marks;
  • +
  • Also save a DXF on.
  • +
+

The Cutting options for a laser: smallest width, DXF, and below them G-code, kerf and router bit

+

To cut one outline from one sheet of material rather than one sheet per colour, choose One +colour under Making: every selected colour is joined into a single cut.

+

To engrave lines rather than cut shapes (a pen, a scoring tool, or a laser line along the middle +of each stroke), choose Pen or score instead: each line is followed once, down its centre.

+

3. Set the size, and the units the file states

+

Type the finished width under Size. Then set The files state their size in:

+
    +
  • Pixels, 96/in for LightBurn, Inkscape, Carbide Create and Fusion, which read a bare pixel + size at 96 per inch;
  • +
  • Millimetres for everything else.
  • +
+

The DXF and the G-code are always in millimetres, whatever this says.

+

Turn on Cut a size-check square for the first cut: a 20 mm square below the design, to measure.

+

4. Measure and set the kerf

+

The beam (or the bit) removes a strip of material as wide as the kerf. Without compensation every +part comes out smaller than drawn by that much, and every hole larger. With Hairlines, the tab +grows each part by half the kerf, so it comes out at the drawn size.

+

Typical kerfs: a CO₂ laser 0.1 to 0.2 mm, a diode laser 0.15 to 0.3 mm. Yours depends on the +machine, the lens, the focus and the material, so measure it:

+
    +
  1. Cut the size-check square with the kerf set to 0.
  2. +
  3. Measure the square with calipers. The kerf is 20 mm − measured size.
  4. +
  5. Type it into The cut removes x mm (kerf).
  6. +
+

5. For a router: dogbones and the bit

+

A round router bit cannot cut a sharp inside corner, so parts meant to fit into each other will not +seat. Type the bit's diameter into Router bit x mm across: every inside corner gets a +dogbone, a small round relief, so parts seat square. If some holes or gaps are narrower than the +bit, Before you cut says so: the bit cannot get into them.

+

Leave it at 0 for a laser.

+

6. Check before you cut

+

Before you cut lists the job (sheets, pieces, path segments, overall size) and anything that +will cause trouble: parts narrower than the smallest width, more than 2,000 path segments (slow in +most programs; raise Cuts stay within x mm to lower it), gaps the bit cannot enter. +Show problems draws them on the stage.

+

7. G-code for a GRBL machine

+

For a diode laser or a pen plotter running GRBL, turn on Also save G-code and set the sentence +under it: Cut at 1000 mm/min, power S 1000, 1 pass.

+
    +
  • Speed and power depend entirely on your machine and material. Start from the material's + recommended settings, and test on scrap. S is in GRBL's power units; S1000 is full power with + GRBL's default $30=1000.
  • +
  • Passes: thick material needs several passes at a speed that cuts cleanly.
  • +
  • The file uses laser mode. Set $32=1 on the controller once, so the beam is off during moves + between cuts; under laser mode, power follows speed (M4), so corners do not burn.
  • +
  • Origin: the lower left of the job, marks and borders included, in millimetres. Jog the head + to the lower-left corner of the material and zero it there before running the file.
  • +
  • Curves are written as arcs (G2/G3), and holes and inner parts are cut before the part around + them, so a part never shifts before its holes are cut.
  • +
+

Always run the file first with the laser at low power (or off, with a pointer), to check the +position and the size.

+

8. Save

+

Press Save N sheets… and choose a folder. You get one SVG per colour, name-all.svg with +every colour as its own group, name.dxf and, if on, name.gcode.

+
    +
  • LightBurn: import name-all.svg (or the DXF). Each colour arrives as its own layer; set a + cut operation per layer.
  • +
  • CAD and CAM programs (Fusion, FreeCAD, VCarve, Carbide Create): import name.dxf. It is R12 + DXF, the version every program reads, one layer per colour, closed polylines in millimetres, + curves as true arcs, which CAM turns into G2/G3 moves.
  • +
  • GRBL: send name.gcode with your usual sender.
  • +
+

Studio Lite: Save downloads the files.

+

Engraving lines with "Pen or score"

+

Pen or score sets the Lines mode: every line in the drawing is followed once, along its +centre, rather than around both of its edges. The Drawing card sets the tip width (the preview +shows the line the tool will leave) and which lines count as lines: Lines up to x mm wide are +drawn once (0 for any width); wider parts are drawn round their outline. The DXF has lines as open +polylines and outlines as closed ones. G-code works as above.

+ +
+ + diff --git a/studio/guide/tutorials/vinyl-htv.html b/studio/guide/tutorials/vinyl-htv.html new file mode 100644 index 0000000000000000000000000000000000000000..e34f3a667a8e84aa5f3c655d2f10b7926e2f84ee --- /dev/null +++ b/studio/guide/tutorials/vinyl-htv.html @@ -0,0 +1,109 @@ + + + + + + +Tutorial: layered vinyl and iron-on · Inkvec Studio guide + + + +
+ +

Tutorial: layered vinyl and iron-on

+

This tutorial takes a colour logo to cut files for a Cricut, Silhouette or Brother machine: one +sheet per colour, stacked so there are no gaps between colours, with marks to line the sheets up. +The same steps make iron-on (heat-transfer vinyl, HTV) for a T-shirt; the differences are in step 4. +About 15 minutes.

+

1. Trace with the cutter in mind

+

Open the logo in the Vectorize tab. Every colour in the drawing will become a sheet of vinyl, +so the palette decides the job:

+
    +
  • Fewer colours means fewer sheets. In the palette, accept the suggested colour groups, and set + Colours to the number of vinyl colours you will actually use. See + the palette.
  • +
  • Vinyl is one flat colour. A gradient is cut as its average colour. Turn on Flat fills + instead of gradients (Tune, Colour) so the trace makes that choice where you can see it.
  • +
  • The background is not a sheet. Fabricate leaves out the colour that covers the page. If the + background is a colour you want cut, it can be switched back on later.
  • +
+

Check the trace in the viewer at 4× and 12×: slivers and specks you see here are pieces you will +have to weed.

+

2. Bring it into Fabricate

+

Switch to the Fabricate tab and press Use the current trace. The tab measures the drawing, +selects every colour but the background, and, with more than one colour, chooses Layered.

+

(Any SVG works here too: Open an SVG, or drop one on the window.)

+

3. Choose the material and the size

+

Under Material, press Adhesive vinyl. It sets filled-shape cuts, a 0.8 mm overlap between +layers, registration marks, and a smallest width of 0.8 mm.

+

Seven layers of adhesive vinyl, stacked, with the thin parts drawn in red

+

Under Size, type the finished width: The design is 120 mm wide. The height follows. +Switch to in if you work in inches; every length on the tab switches with it.

+

Turn on Cut a size-check square. It adds a 20 mm square (1 in) below the design. Measure it +after cutting: if it is any other size, the cutter's program rescaled the file on import.

+

Set The files state their size in for your cutter's software: Pixels, 72/in for Cricut +Design Space and Silhouette Studio, Millimetres otherwise.

+

4. For iron-on: mirror, and a thinner overlap

+

Press Iron-on instead of Adhesive vinyl. It changes three things:

+
    +
  • Mirror is on: HTV is cut from the back, face down on the mat.
  • +
  • The overlap is 0.3 mm. Every layer of HTV is another pressing; 0.25 to 0.38 mm is the range + that stays put without building up a ridge.
  • +
  • The smallest width is 1 mm: thin parts of HTV lift in the wash.
  • +
+

Glitter, holographic and puff HTV do not take another layer on top of them: put them at the top of +the stack (next step), or cut them as one colour on their own.

+

5. The colours and their order

+

The colour list for iron-on, bottom sheet first, with the overlap below

+

In Layered mode the Colours list is the stack, bottom sheet first. Each colour runs under +the colours above it by the overlap, so the bottom one is the largest piece. The largest colour of +the drawing starts at the bottom, which suits most logos. Use ↓ and ↑ to change the order, +and the switch at the left of a colour to leave it out, for example the colour of the shirt itself.

+

The stage shows All sheets, stacked as the finished piece. The numbered buttons above it show +one sheet at a time; the Cut list at the bottom of the rail says how big a piece of vinyl each +sheet needs.

+

6. Fix what will go wrong

+

Before you cut lists the problems, and Show problems draws them on the sheets: parts too +thin to weed in red, waste gaps too narrow to weed in amber, loose specks ringed. For each:

+
    +
  • Parts narrower than the smallest width will tear or not stick. Make the design larger, or + turn on Remove them under Cutting, which drops those slivers from the sheets.
  • +
  • Waste narrower than the smallest width lifts with the design when you weed. Make the design + larger, or plan to weed those spots by hand.
  • +
  • Specks smaller than a few square millimetres are lost on the transfer tape. Accept it, or go + back to Vectorize and raise Speckle floor so they are not in the drawing.
  • +
  • A gradient or a partly transparent colour is cut at its average colour, at full + strength. Choose a vinyl close to it.
  • +
  • More than 5,000 cut paths in a sheet: Cricut Design Space is reported to refuse such files. + Turn on Remove them, or raise the smallest width.
  • +
+

Changing the size is usually the real fix: at 60 mm a detailed logo has dozens of thin parts; at +120 mm most of them are gone. The findings update as you type.

+

7. Save and cut

+

Press Save N sheets… and choose a folder. For a logo called mark you get:

+
mark-1-c1cdd5.svg      bottom sheet
+mark-2-60379a.svg
+...
+mark-all.svg           every sheet in one file, one group per sheet
+
+ +

In Cricut Design Space or Silhouette Studio, upload mark-all.svg: it arrives as one layer per +colour, already registered. The single-sheet files are there for software that wants one file per +cut. Copy puts the sheet on screen (or all of them) on the clipboard instead.

+

Cut the size-check square first and measure it. Then cut each colour, weed, and stack the sheets +bottom first, lining up the registration crosses. For HTV, press each layer briefly and the top +layer fully, following the vinyl's instructions.

+

Studio Lite: Save downloads the files instead of asking for a folder.

+

Other things this tab makes

+
    +
  • One colour: every selected colour joined into one sheet, for a single-colour decal.
  • +
  • Inlay: colours cut exactly and laid edge to edge instead of stacked. Thinner, but hard to + line up.
  • +
  • Sticker: the artwork with a contour 3 mm around it, for print-then-cut.
  • +
  • Stencil: the design cut out of one sheet, with bridges holding the middles of letters.
  • +
+

All of them are described in Fabricate.

+ +
+ + diff --git a/studio/guide/viewer.html b/studio/guide/viewer.html new file mode 100644 index 0000000000000000000000000000000000000000..36dcff3cb503a52bebbc77874fcce6f1c694e6be --- /dev/null +++ b/studio/guide/viewer.html @@ -0,0 +1,198 @@ + + + + + + +The viewer · Inkvec Studio guide + + + +
+ +

The viewer

+

The stage of the Vectorize tab shows the image you opened (Source) beside the SVG it became +(Vector · SVG). Both panes share one pan and one zoom, so the same spot is always under the +same place in both. The SVG pane is drawn as a real vector at every zoom: at 12× an edge is still +an edge, not an enlarged bitmap.

+

Comparing: side by side, wipe, A/B

+

The three buttons at the left of the toolbar arrange the two panes.

+
    +
  • Side by side: the two panes next to each other.
  • +
  • Wipe: one pane over the other, with a divider. Drag the divider to move it; the source is on + the left of it and the SVG on the right.
  • +
  • A/B: one pane at a time, the SVG. Hold Space to see the source instead, and + release to go back. Flicking between the two in place is the quickest way to see a small + difference.
  • +
+

Zooming and panning

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ToDo this
Zoom about a pointScroll the wheel (or pinch on a trackpad) over either pane
PanDrag with the left button
Fit the drawing to the windowDouble-click a pane, press 0, or press Fit
Zoom to a fixed stop1×, 4× or 12× in the toolbar
Zoom in or out a step+ and -
+

Zoom runs from a quarter of the image's size to 64×. The view fits the window until you zoom or +pan; after that it stays where you put it when the window is resized. From 4× up, the source is +drawn with square pixels rather than smoothed, because those pixels are the evidence the trace was +measured against.

+

Overlays: what the SVG is made of

+

The Show toggles draw on the SVG pane.

+
    +
  • Fill: the drawing's colours. Turned off, the fill dims rather than disappears, so the + outlines still have something to sit on.
  • +
  • Wireframe: every outline as a thin line.
  • +
  • Anchors: every node, as a dot.
  • +
  • Handles: the Bézier control handles, as lines with a diamond at the end.
  • +
  • Certainty: how sure each edge is (below).
  • +
+

Wireframe, anchors and handles over the SVG at 4×

+

A key to the marks appears at the right of the toolbar while any overlay is on. Anchors and +handles are how you judge what the file will be like to edit: fewer nodes, and handles that line +up, are easier to work with. Editable structure is the setting +that moves them towards what an artist would draw.

+

Detail: the pixel grid under the edge

+

Detail draws the source's pixel grid under the SVG, one cell per source pixel, and zooms to +12× if you are further out (the grid is only drawn from 6× up, where a cell is big enough to see). +It shows where a vector edge falls inside the partly covered pixels along the source's +anti-aliased boundary: a good trace cuts through them where their shade says the boundary is.

+

While Detail is on, a small note on the stage names the worst corner: the place where the +trace and the source disagree most, with its colour difference and position. Jump to it goes +there at 12×. The same jump is Find the worst corner in the quality report.

+

Certainty

+

Certainty draws a band along each boundary showing where that boundary could be, measured from +the pixels: two standard deviations either side of the traced edge.

+

Certainty bands and the pixel grid at 12×

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ColourMeansBand's typical half-width
sure (green)A crisp edge; the curve sits where the pixels sayup to 0.1 px
soft (amber)A softer edge; still well placedup to 0.3 px
unsure (red)A blurred, soft or compressed edge; the curve here is a best guessmore than 0.3 px
+

A thin green line everywhere is what a clean PNG gives. Wide red bands usually mean the image was +enlarged, blurred or compressed; the denoiser or a better source helps +more than any setting.

+

If a trace has no certainty information, the toggle is greyed out until the next trace.

+

Draft and full traces

+

Every change to a control starts a draft straight away: the same settings, traced small +(512 px on the longer side by default) with a short time limit, so the picture keeps up with you. +When the controls have been still for a moment (0.8 s by default), the full trace starts. A +chip at the top right of the stage says which one you are looking at:

+
    +
  • draft · 512 px (gold): a draft; the full trace is queued.
  • +
  • final · 1024 px (green): the full trace, at the size it was traced.
  • +
  • re-tracing · … (copper): a trace is running; the drawing on screen is the previous one.
  • +
+

The chip flashes when a draft is replaced by its full trace, so the swap is never silent. Draft +size, draft time limit and the wait before the full trace are in +Settings, Performance.

+

Only the full trace is ever exported: Export always runs one first.

+

The status strip

+

The line along the bottom of the stage says what is happening: the stage the trace is on and the +time so far (with Esc to cancel), or how long the last trace took, at what size, and +how many segments it has. When the update check has found a new version, it says so here and +nowhere else. The right end always carries the same sentence: Your image never leaves this +computer.

+

When the stage is not showing a drawing

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
The stage saysWhat it meansWhat to do
Reading fileThe image is being decoded; tracing starts as soon as it is in memory.Wait.
This image is one flat colourThere is no boundary to trace; the whole output would be one rectangle.Open another image.
This file will not decodeThe file is damaged or not an image the app reads. The message says why.Open another image.
The trace would run out of memoryThe trace size needs more memory than is free; the card gives the estimate.Retry at the smaller size it suggests; it usually costs nothing visible.
The trace stoppedSomething failed; the message says what.Trace again.
Trace cancelledYou pressed Esc or Cancel. The last full trace is still on screen and still exportable.Trace again when you want.
This preset wants the denoiserYou chose Photo or scan, or turned the denoiser on, before downloading it. The trace runs without it.Download the denoiser, or carry on.
No networkThe update check could not connect. Tracing never needed a network.Nothing.
+

A large image is traced at the Trace size (2048 px on the longer side by default) and the SVG +is still written at the image's full size. When that happens a note says so; it is normal, and the +SVG scales without limit.

+ +
+ + diff --git a/studio/index.html b/studio/index.html new file mode 100644 index 0000000000000000000000000000000000000000..7335d42b5b0c1b3c3bb9224e71f3ee165fe45fd5 --- /dev/null +++ b/studio/index.html @@ -0,0 +1,23 @@ + + + + + + + + + + Inkvec Studio Lite + + + + +
Inkvec Studio LiteLoading the engine
+
+
+
+ + diff --git a/studio/pkg-threads/inkvec_studio_wasm.d.ts b/studio/pkg-threads/inkvec_studio_wasm.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4fb941d8f0a19a93b4020049708957797e30d8f0 --- /dev/null +++ b/studio/pkg-threads/inkvec_studio_wasm.d.ts @@ -0,0 +1,156 @@ +/* tslint:disable */ +/* eslint-disable */ + +/** + * One Studio session: the image that is open and what has been traced of it. The + * browser's `AppState`. + */ +export class Studio { + free(): void; + [Symbol.dispose](): void; + /** + * Every other command, by its Tauri name, with its arguments as the interface sends + * them (a JSON object, camelCase keys). Returns the reply as JSON. + */ + call(cmd: string, args: string): string; + /** + * What this build can do (`capabilities`), with the denoiser's standing as the page + * measured it: whether it can run here, and whether the weights are in its cache. + */ + capabilities(denoiser_supported: boolean, denoiser_installed: boolean, denoiser_bytes?: number | null): string; + /** + * Forget the open image and everything traced from it. + */ + close(): void; + /** + * Build an export (`write_export`'s work) and hand every file back as + * `[{ name, data }]`, for the page to download. With more than one file, `zip` packs + * them into one archive instead, returned as a single `{ name: "", data }`. + */ + export_files(request: string, zip: boolean): Array; + /** + * A session with nothing open. + */ + constructor(); + /** + * Open an image (`open_bytes`): PNG, JPEG, WebP, GIF, BMP, TIFF or SVG bytes. + */ + open_bytes(bytes: Uint8Array, name?: string | null): string; + /** + * A wizard preview (`start_preview`'s work): a draft of `request.settings` that does + * not become the drawing. + */ + preview(request: string, draft_px: number, draft_seconds: number): string; + /** + * Trace the open image (`start_trace`'s work), synchronously. + * + * `on_stage(name, ms)` is called as the pipeline passes each stage; `is_current()` is + * asked, once the drawing is done, whether the page still wants this generation -- + * a drawing it has moved past is kept in the cache but not measured. Returns the + * outcome as JSON (`trace:done`'s `outcome`), or `undefined` when it was retired. + */ + trace(request: string, draft_px: number, draft_seconds: number, generation: number, on_stage: Function, is_current: Function): string | undefined; +} + +/** + * The Hugging Face repository the weights come from. + */ +export function denoiser_model_repo(): string; + +/** + * The SHA-256 the weights must hash to. + */ +export function denoiser_model_sha256(): string; + +/** + * The Hugging Face URL of the denoiser weights, the same file the command line pulls. + */ +export function denoiser_model_url(): string; + +/** + * Route every trace that asks for "Clean up damage" through the page's denoiser. Called + * once by the worker when the page can block on a shared buffer (it is cross-origin + * isolated); without it such a trace runs as the desktop app does without its model. + */ +export function enable_denoiser(): void; + +export function initThreadPool(num_threads: number): Promise; + +/** + * Whether this is the threaded build, whose pool `initThreadPool` starts. + */ +export function threads_available(): boolean; + +/** + * The app's version, which is the engine's: they are built from one tree. + */ +export function version(): string; + +export class wbg_rayon_PoolBuilder { + private constructor(); + free(): void; + [Symbol.dispose](): void; + build(): void; + numThreads(): number; + receiver(): number; +} + +export function wbg_rayon_start_worker(receiver: number): void; + +export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; + +export interface InitOutput { + readonly __wbg_studio_free: (a: number, b: number) => void; + readonly __wbg_wbg_rayon_poolbuilder_free: (a: number, b: number) => void; + readonly denoiser_model_repo: (a: number) => void; + readonly denoiser_model_sha256: (a: number) => void; + readonly denoiser_model_url: (a: number) => void; + readonly enable_denoiser: () => void; + readonly initThreadPool: (a: number) => number; + readonly studio_call: (a: number, b: number, c: number, d: number, e: number, f: number) => void; + readonly studio_capabilities: (a: number, b: number, c: number, d: number, e: number, f: number) => void; + readonly studio_close: (a: number) => void; + readonly studio_export_files: (a: number, b: number, c: number, d: number, e: number) => void; + readonly studio_new: () => number; + readonly studio_open_bytes: (a: number, b: number, c: number, d: number, e: number, f: number) => void; + readonly studio_preview: (a: number, b: number, c: number, d: number, e: number, f: number) => void; + readonly studio_trace: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void; + readonly threads_available: () => number; + readonly version: (a: number) => void; + readonly wbg_rayon_poolbuilder_build: (a: number) => void; + readonly wbg_rayon_poolbuilder_numThreads: (a: number) => number; + readonly wbg_rayon_poolbuilder_receiver: (a: number) => number; + readonly wbg_rayon_start_worker: (a: number) => void; + readonly memory: WebAssembly.Memory; + readonly __wbindgen_export: (a: number, b: number) => number; + readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number; + readonly __wbindgen_export3: (a: number) => void; + readonly __wbindgen_export4: (a: number, b: number, c: number) => void; + readonly __wbindgen_add_to_stack_pointer: (a: number) => number; + readonly __wbindgen_thread_destroy: (a?: number, b?: number, c?: number) => void; + readonly __wbindgen_start: (a: number) => void; +} + +export type SyncInitInput = BufferSource | WebAssembly.Module; + +/** + * Instantiates the given `module`, which can either be bytes or + * a precompiled `WebAssembly.Module`. + * + * @param {{ module: SyncInitInput, memory?: WebAssembly.Memory, thread_stack_size?: number }} module - Passing `SyncInitInput` directly is deprecated. + * @param {WebAssembly.Memory} memory - Deprecated. + * + * @returns {InitOutput} + */ +export function initSync(module: { module: SyncInitInput, memory?: WebAssembly.Memory, thread_stack_size?: number } | SyncInitInput, memory?: WebAssembly.Memory): InitOutput; + +/** + * If `module_or_path` is {RequestInfo} or {URL}, makes a request and + * for everything else, calls `WebAssembly.instantiate` directly. + * + * @param {{ module_or_path: InitInput | Promise, memory?: WebAssembly.Memory, thread_stack_size?: number }} module_or_path - Passing `InitInput` directly is deprecated. + * @param {WebAssembly.Memory} memory - Deprecated. + * + * @returns {Promise} + */ +export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise, memory?: WebAssembly.Memory, thread_stack_size?: number } | InitInput | Promise, memory?: WebAssembly.Memory): Promise; diff --git a/studio/pkg-threads/inkvec_studio_wasm.js b/studio/pkg-threads/inkvec_studio_wasm.js new file mode 100644 index 0000000000000000000000000000000000000000..453436d86f306be96c0e9adfe6ef8040094bf6ce --- /dev/null +++ b/studio/pkg-threads/inkvec_studio_wasm.js @@ -0,0 +1,822 @@ +/* @ts-self-types="./inkvec_studio_wasm.d.ts" */ +import { startWorkers } from './snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js'; + + +/** + * One Studio session: the image that is open and what has been traced of it. The + * browser's `AppState`. + */ +export class Studio { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + StudioFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_studio_free(ptr, 0); + } + /** + * Every other command, by its Tauri name, with its arguments as the interface sends + * them (a JSON object, camelCase keys). Returns the reply as JSON. + * @param {string} cmd + * @param {string} args + * @returns {string} + */ + call(cmd, args) { + let deferred4_0; + let deferred4_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(cmd, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(args, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len1 = WASM_VECTOR_LEN; + wasm.studio_call(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + var ptr3 = r0; + var len3 = r1; + if (r3) { + ptr3 = 0; len3 = 0; + throw takeObject(r2); + } + deferred4_0 = ptr3; + deferred4_1 = len3; + return getStringFromWasm0(ptr3, len3); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred4_0, deferred4_1, 1); + } + } + /** + * What this build can do (`capabilities`), with the denoiser's standing as the page + * measured it: whether it can run here, and whether the weights are in its cache. + * @param {boolean} denoiser_supported + * @param {boolean} denoiser_installed + * @param {number | null} [denoiser_bytes] + * @returns {string} + */ + capabilities(denoiser_supported, denoiser_installed, denoiser_bytes) { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.studio_capabilities(retptr, this.__wbg_ptr, denoiser_supported, denoiser_installed, !isLikeNone(denoiser_bytes), isLikeNone(denoiser_bytes) ? 0 : denoiser_bytes); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1); + } + } + /** + * Forget the open image and everything traced from it. + */ + close() { + wasm.studio_close(this.__wbg_ptr); + } + /** + * Build an export (`write_export`'s work) and hand every file back as + * `[{ name, data }]`, for the page to download. With more than one file, `zip` packs + * them into one archive instead, returned as a single `{ name: "", data }`. + * @param {string} request + * @param {boolean} zip + * @returns {Array} + */ + export_files(request, zip) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(request, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len0 = WASM_VECTOR_LEN; + wasm.studio_export_files(retptr, this.__wbg_ptr, ptr0, len0, zip); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * A session with nothing open. + */ + constructor() { + const ret = wasm.studio_new(); + this.__wbg_ptr = ret; + StudioFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * Open an image (`open_bytes`): PNG, JPEG, WebP, GIF, BMP, TIFF or SVG bytes. + * @param {Uint8Array} bytes + * @param {string | null} [name] + * @returns {string} + */ + open_bytes(bytes, name) { + let deferred4_0; + let deferred4_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export); + const len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(name) ? 0 : passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2); + var len1 = WASM_VECTOR_LEN; + wasm.studio_open_bytes(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + var ptr3 = r0; + var len3 = r1; + if (r3) { + ptr3 = 0; len3 = 0; + throw takeObject(r2); + } + deferred4_0 = ptr3; + deferred4_1 = len3; + return getStringFromWasm0(ptr3, len3); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred4_0, deferred4_1, 1); + } + } + /** + * A wizard preview (`start_preview`'s work): a draft of `request.settings` that does + * not become the drawing. + * @param {string} request + * @param {number} draft_px + * @param {number} draft_seconds + * @returns {string} + */ + preview(request, draft_px, draft_seconds) { + let deferred3_0; + let deferred3_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(request, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len0 = WASM_VECTOR_LEN; + wasm.studio_preview(retptr, this.__wbg_ptr, ptr0, len0, draft_px, draft_seconds); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + var ptr2 = r0; + var len2 = r1; + if (r3) { + ptr2 = 0; len2 = 0; + throw takeObject(r2); + } + deferred3_0 = ptr2; + deferred3_1 = len2; + return getStringFromWasm0(ptr2, len2); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1); + } + } + /** + * Trace the open image (`start_trace`'s work), synchronously. + * + * `on_stage(name, ms)` is called as the pipeline passes each stage; `is_current()` is + * asked, once the drawing is done, whether the page still wants this generation -- + * a drawing it has moved past is kept in the cache but not measured. Returns the + * outcome as JSON (`trace:done`'s `outcome`), or `undefined` when it was retired. + * @param {string} request + * @param {number} draft_px + * @param {number} draft_seconds + * @param {number} generation + * @param {Function} on_stage + * @param {Function} is_current + * @returns {string | undefined} + */ + trace(request, draft_px, draft_seconds, generation, on_stage, is_current) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(request, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len0 = WASM_VECTOR_LEN; + wasm.studio_trace(retptr, this.__wbg_ptr, ptr0, len0, draft_px, draft_seconds, generation, addBorrowedObject(on_stage), addBorrowedObject(is_current)); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + if (r3) { + throw takeObject(r2); + } + let v2; + if (r0 !== 0) { + v2 = getStringFromWasm0(r0, r1); + wasm.__wbindgen_export4(r0, r1 * 1, 1); + } + return v2; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + heap[stack_pointer++] = undefined; + heap[stack_pointer++] = undefined; + } + } +} +if (Symbol.dispose) Studio.prototype[Symbol.dispose] = Studio.prototype.free; + +/** + * The Hugging Face repository the weights come from. + * @returns {string} + */ +export function denoiser_model_repo() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.denoiser_model_repo(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1); + } +} + +/** + * The SHA-256 the weights must hash to. + * @returns {string} + */ +export function denoiser_model_sha256() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.denoiser_model_sha256(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1); + } +} + +/** + * The Hugging Face URL of the denoiser weights, the same file the command line pulls. + * @returns {string} + */ +export function denoiser_model_url() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.denoiser_model_url(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1); + } +} + +/** + * Route every trace that asks for "Clean up damage" through the page's denoiser. Called + * once by the worker when the page can block on a shared buffer (it is cross-origin + * isolated); without it such a trace runs as the desktop app does without its model. + */ +export function enable_denoiser() { + wasm.enable_denoiser(); +} + +/** + * @param {number} num_threads + * @returns {Promise} + */ +export function initThreadPool(num_threads) { + const ret = wasm.initThreadPool(num_threads); + return takeObject(ret); +} + +/** + * Whether this is the threaded build, whose pool `initThreadPool` starts. + * @returns {boolean} + */ +export function threads_available() { + const ret = wasm.threads_available(); + return ret !== 0; +} + +/** + * The app's version, which is the engine's: they are built from one tree. + * @returns {string} + */ +export function version() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.version(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1); + } +} + +export class wbg_rayon_PoolBuilder { + static __wrap(ptr) { + const obj = Object.create(wbg_rayon_PoolBuilder.prototype); + obj.__wbg_ptr = ptr; + wbg_rayon_PoolBuilderFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + wbg_rayon_PoolBuilderFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_wbg_rayon_poolbuilder_free(ptr, 0); + } + build() { + wasm.wbg_rayon_poolbuilder_build(this.__wbg_ptr); + } + /** + * @returns {number} + */ + numThreads() { + const ret = wasm.wbg_rayon_poolbuilder_numThreads(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @returns {number} + */ + receiver() { + const ret = wasm.wbg_rayon_poolbuilder_receiver(this.__wbg_ptr); + return ret >>> 0; + } +} +if (Symbol.dispose) wbg_rayon_PoolBuilder.prototype[Symbol.dispose] = wbg_rayon_PoolBuilder.prototype.free; + +/** + * @param {number} receiver + */ +export function wbg_rayon_start_worker(receiver) { + wasm.wbg_rayon_start_worker(receiver); +} +function __wbg_get_imports(memory) { + const import0 = { + __proto__: null, + __wbg___wbindgen_is_falsy_4502df4d571fca70: function(arg0) { + const ret = !getObject(arg0); + return ret; + }, + __wbg___wbindgen_is_undefined_8c687d0b90d5b524: function(arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }, + __wbg___wbindgen_memory_3f8442e22540244f: function() { + const ret = wasm.memory; + return addHeapObject(ret); + }, + __wbg___wbindgen_module_c2aeeb3b14bad631: function() { + const ret = wasmModule; + return addHeapObject(ret); + }, + __wbg___wbindgen_string_get_92ab86bb19cbc12f: function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_throw_5d9e815e6fdf150f: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }, + __wbg_call_6bcf8d3e20937e46: function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); }, + __wbg_call_7bbd9cceba9949ad: function() { return handleError(function (arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3)); + return addHeapObject(ret); + }, arguments); }, + __wbg_error_757e9472f8410341: function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_export4(deferred0_0, deferred0_1, 1); + } + }, + __wbg_get_989d0a1309644f2b: function() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); + }, arguments); }, + __wbg_inkvecDenoiseSync_b92f950e4d76b9c0: function() { return handleError(function (arg0, arg1, arg2, arg3) { + const ret = globalThis.inkvecDenoiseSync(getArrayF32FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0); + return addHeapObject(ret); + }, arguments); }, + __wbg_instanceof_Window_a3b8566f0a9c5d1a: function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Window; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_length_8768c6f6941913e3: function(arg0) { + const ret = getObject(arg0).length; + return ret; + }, + __wbg_new_227d7c05414eb861: function() { + const ret = new Error(); + return addHeapObject(ret); + }, + __wbg_new_bebc3f4757acf305: function() { + const ret = new Object(); + return addHeapObject(ret); + }, + __wbg_new_ffa92086ea89f79c: function() { + const ret = new Array(); + return addHeapObject(ret); + }, + __wbg_new_from_slice_4ee02165f9de919e: function(arg0, arg1) { + const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1)); + return addHeapObject(ret); + }, + __wbg_now_e7c6795a7f81e10f: function(arg0) { + const ret = getObject(arg0).now(); + return ret; + }, + __wbg_performance_3fcf6e32a7e1ed0a: function(arg0) { + const ret = getObject(arg0).performance; + return addHeapObject(ret); + }, + __wbg_prototypesetcall_804a1eb1b047ccb9: function(arg0, arg1, arg2) { + Float32Array.prototype.set.call(getArrayF32FromWasm0(arg0, arg1), getObject(arg2)); + }, + __wbg_push_bfdf956ba476f65b: function(arg0, arg1) { + const ret = getObject(arg0).push(getObject(arg1)); + return ret; + }, + __wbg_set_a377297433dfea63: function() { return handleError(function (arg0, arg1, arg2) { + const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); + return ret; + }, arguments); }, + __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg_startWorkers_8b582d57e92bd2d4: function(arg0, arg1, arg2) { + const ret = startWorkers(takeObject(arg0), takeObject(arg1), wbg_rayon_PoolBuilder.__wrap(arg2)); + return addHeapObject(ret); + }, + __wbg_static_accessor_GLOBAL_8eb4cd83130a11a0: function() { + const ret = typeof global === 'undefined' ? null : global; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, + __wbg_static_accessor_GLOBAL_THIS_1e7044f654e934db: function() { + const ret = typeof globalThis === 'undefined' ? null : globalThis; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, + __wbg_static_accessor_SELF_d8b50611246a6d92: function() { + const ret = typeof self === 'undefined' ? null : self; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, + __wbg_static_accessor_WINDOW_fd0bc376bf0f8b42: function() { + const ret = typeof window === 'undefined' ? null : window; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, + __wbg_timeOrigin_f3d5cb4f4a06c2b7: function(arg0) { + const ret = getObject(arg0).timeOrigin; + return ret; + }, + __wbindgen_generic_0000000000000001: function(arg0) { + // Cast intrinsic for `F64 -> Externref`. + const ret = arg0; + return addHeapObject(ret); + }, + __wbindgen_generic_0000000000000002: function(arg0, arg1) { + // Cast intrinsic for `Ref(String) -> Externref`. + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }, + __wbindgen_object_clone_ref: function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }, + __wbindgen_object_drop_ref: function(arg0) { + takeObject(arg0); + }, + memory: memory || new WebAssembly.Memory({initial:23,maximum:65536,shared:true}), + }; + return { + __proto__: null, + "./inkvec_studio_wasm_bg.js": import0, + }; +} + +const StudioFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_studio_free(ptr, 1)); +const wbg_rayon_PoolBuilderFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_wbg_rayon_poolbuilder_free(ptr, 1)); + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function addBorrowedObject(obj) { + if (stack_pointer == 1) throw new Error('out of js stack'); + heap[--stack_pointer] = obj; + return stack_pointer; +} + +function dropObject(idx) { + if (idx < 1028) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function getArrayF32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} + +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); +} + +let cachedDataViewMemory0 = null; +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} + +let cachedFloat32ArrayMemory0 = null; +function getFloat32ArrayMemory0() { + if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.buffer !== wasm.memory.buffer) { + cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); + } + return cachedFloat32ArrayMemory0; +} + +function getStringFromWasm0(ptr, len) { + return decodeText(ptr >>> 0, len); +} + +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +function getObject(idx) { return heap[idx]; } + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_export3(addHeapObject(e)); + } +} + +let heap = new Array(1024).fill(undefined); +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function isLikeNone(x) { + return x === undefined || x === null; +} + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1, 1) >>> 0; + getUint8ArrayMemory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} + +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = cachedTextEncoder.encodeInto(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +let stack_pointer = 1024; + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +let cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : undefined); +if (cachedTextDecoder) cachedTextDecoder.decode(); + +const MAX_SAFARI_DECODE_BYTES = 2146435072; +let numBytesDecoded = 0; +function decodeText(ptr, len) { + numBytesDecoded += len; + if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { + cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + cachedTextDecoder.decode(); + numBytesDecoded = len; + } + return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len)); +} + +const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder() : undefined); + +if (cachedTextEncoder) { + cachedTextEncoder.encodeInto = function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; + }; +} + +let WASM_VECTOR_LEN = 0; + +let wasmModule, wasmInstance, wasm; +function __wbg_finalize_init(instance, module, thread_stack_size) { + wasmInstance = instance; + wasm = instance.exports; + wasmModule = module; + cachedDataViewMemory0 = null; + cachedFloat32ArrayMemory0 = null; + cachedUint8ArrayMemory0 = null; + if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { + throw new Error('invalid stack size'); + } + + wasm.__wbindgen_start(thread_stack_size); + return wasm; +} + +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (!module.ok) { + throw new Error(`failed to fetch Wasm: ${module.status} ${module.statusText} fetching '${module.url}'`); + } + + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + const validResponse = expectedResponseType(module.type); + + if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { throw e; } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } else { + return instance; + } + } + + function expectedResponseType(type) { + switch (type) { + case 'basic': case 'cors': case 'default': return true; + } + return false; + } +} + +function initSync(module, memory) { + if (wasm !== undefined) return wasm; + + let thread_stack_size + if (module !== undefined) { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module, memory, thread_stack_size} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } + + const imports = __wbg_get_imports(memory); + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + const instance = new WebAssembly.Instance(module, imports); + return __wbg_finalize_init(instance, module, thread_stack_size); +} + +async function __wbg_init(module_or_path, memory) { + if (wasm !== undefined) return wasm; + + let thread_stack_size + if (module_or_path !== undefined) { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path, memory, thread_stack_size} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (module_or_path === undefined) { + module_or_path = new URL('inkvec_studio_wasm_bg.wasm', import.meta.url); + } + const imports = __wbg_get_imports(memory); + + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module, thread_stack_size); +} + +export { initSync, __wbg_init as default }; diff --git a/studio/pkg-threads/inkvec_studio_wasm_bg.wasm b/studio/pkg-threads/inkvec_studio_wasm_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d3999a023c6490dea3caf6df5d2e61f6f68da87a --- /dev/null +++ b/studio/pkg-threads/inkvec_studio_wasm_bg.wasm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a1d3e02862ac5cf96432c9cab180efda6120a619696978d8251722cc3b124b +size 5263724 diff --git a/studio/pkg-threads/inkvec_studio_wasm_bg.wasm.d.ts b/studio/pkg-threads/inkvec_studio_wasm_bg.wasm.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..08389a7a43a3231d85108b788775d66311476fb3 --- /dev/null +++ b/studio/pkg-threads/inkvec_studio_wasm_bg.wasm.d.ts @@ -0,0 +1,31 @@ +/* tslint:disable */ +/* eslint-disable */ +export const __wbg_studio_free: (a: number, b: number) => void; +export const __wbg_wbg_rayon_poolbuilder_free: (a: number, b: number) => void; +export const denoiser_model_repo: (a: number) => void; +export const denoiser_model_sha256: (a: number) => void; +export const denoiser_model_url: (a: number) => void; +export const enable_denoiser: () => void; +export const initThreadPool: (a: number) => number; +export const studio_call: (a: number, b: number, c: number, d: number, e: number, f: number) => void; +export const studio_capabilities: (a: number, b: number, c: number, d: number, e: number, f: number) => void; +export const studio_close: (a: number) => void; +export const studio_export_files: (a: number, b: number, c: number, d: number, e: number) => void; +export const studio_new: () => number; +export const studio_open_bytes: (a: number, b: number, c: number, d: number, e: number, f: number) => void; +export const studio_preview: (a: number, b: number, c: number, d: number, e: number, f: number) => void; +export const studio_trace: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void; +export const threads_available: () => number; +export const version: (a: number) => void; +export const wbg_rayon_poolbuilder_build: (a: number) => void; +export const wbg_rayon_poolbuilder_numThreads: (a: number) => number; +export const wbg_rayon_poolbuilder_receiver: (a: number) => number; +export const wbg_rayon_start_worker: (a: number) => void; +export const memory: WebAssembly.Memory; +export const __wbindgen_export: (a: number, b: number) => number; +export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number; +export const __wbindgen_export3: (a: number) => void; +export const __wbindgen_export4: (a: number, b: number, c: number) => void; +export const __wbindgen_add_to_stack_pointer: (a: number) => number; +export const __wbindgen_thread_destroy: (a?: number, b?: number, c?: number) => void; +export const __wbindgen_start: (a: number) => void; diff --git a/pkg-threads/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js b/studio/pkg-threads/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js similarity index 95% rename from pkg-threads/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js rename to studio/pkg-threads/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js index 8a4c4c79a53fc10f334b924638020049c13ed4e8..277843275d885de399c696e3041ddb5928d5fb94 100644 --- a/pkg-threads/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js +++ b/studio/pkg-threads/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js @@ -1,107 +1,107 @@ -/* - * Copyright 2022 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Note: we use `wasm_bindgen_worker_`-prefixed message types to make sure -// we can handle bundling into other files, which might happen to have their -// own `postMessage`/`onmessage` communication channels. -// -// If we didn't take that into the account, we could send much simpler signals -// like just `0` or whatever, but the code would be less resilient. - -function waitForMsgType(target, type) { - return new Promise(resolve => { - target.addEventListener('message', function onMsg({ data }) { - if (data?.type !== type) return; - target.removeEventListener('message', onMsg); - resolve(data); - }); - }); -} - -waitForMsgType(self, 'wasm_bindgen_worker_init').then(async ({ init, receiver }) => { - // # Note 1 - // Our JS should have been generated in - // `[out-dir]/snippets/wasm-bindgen-rayon-[hash]/workerHelpers.js`, - // resolve the main module via `../../..`. - // - // This might need updating if the generated structure changes on wasm-bindgen - // side ever in the future, but works well with bundlers today. The whole - // point of this crate, after all, is to abstract away unstable features - // and temporary bugs so that you don't need to deal with them in your code. - // - // # Note 2 - // This could be a regular import, but then some bundlers complain about - // circular deps. - // - // Dynamic import could be cheap if this file was inlined into the parent, - // which would require us just using `../../..` in `new Worker` below, - // but that doesn't work because wasm-pack unconditionally adds - // "sideEffects":false (see below). - // - // OTOH, even though it can't be inlined, it should be still reasonably - // cheap since the requested file is already in cache (it was loaded by - // the main thread). - const pkg = await import('../../../inkvec_wasm.js?v=12'); - await pkg.default(init); - postMessage({ type: 'wasm_bindgen_worker_ready' }); - pkg.wbg_rayon_start_worker(receiver); -}); - -// Note: this is never used, but necessary to prevent a bug in Firefox -// (https://bugzilla.mozilla.org/show_bug.cgi?id=1702191) where it collects -// Web Workers that have a shared WebAssembly memory with the main thread, -// but are not explicitly rooted via a `Worker` instance. -// -// By storing them in a variable, we can keep `Worker` objects around and -// prevent them from getting GC-d. -let _workers; - -export async function startWorkers(module, memory, builder) { - if (builder.numThreads() === 0) { - throw new Error(`num_threads must be > 0.`); - } - - const workerInit = { - type: 'wasm_bindgen_worker_init', - init: { module_or_path: module, memory }, - receiver: builder.receiver() - }; - - _workers = await Promise.all( - Array.from({ length: builder.numThreads() }, async () => { - // Self-spawn into a new Worker. - // - // TODO: while `new URL('...', import.meta.url) becomes a semi-standard - // way to get asset URLs relative to the module across various bundlers - // and browser, ideally we should switch to `import.meta.resolve` - // once it becomes a standard. - // - // Note: we could use `../../..` as the URL here to inline workerHelpers.js - // into the parent entry instead of creating another split point - - // this would be preferable from optimization perspective - - // however, Webpack then eliminates all message handler code - // because wasm-pack produces "sideEffects":false in package.json - // unconditionally. - // - // The only way to work around that is to have side effect code - // in an entry point such as Worker file itself. - const worker = new Worker(new URL('./workerHelpers.js', import.meta.url), { - type: 'module' - }); - worker.postMessage(workerInit); - await waitForMsgType(worker, 'wasm_bindgen_worker_ready'); - return worker; - }) - ); - builder.build(); -} +/* + * Copyright 2022 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Note: we use `wasm_bindgen_worker_`-prefixed message types to make sure +// we can handle bundling into other files, which might happen to have their +// own `postMessage`/`onmessage` communication channels. +// +// If we didn't take that into the account, we could send much simpler signals +// like just `0` or whatever, but the code would be less resilient. + +function waitForMsgType(target, type) { + return new Promise(resolve => { + target.addEventListener('message', function onMsg({ data }) { + if (data?.type !== type) return; + target.removeEventListener('message', onMsg); + resolve(data); + }); + }); +} + +waitForMsgType(self, 'wasm_bindgen_worker_init').then(async ({ init, receiver }) => { + // # Note 1 + // Our JS should have been generated in + // `[out-dir]/snippets/wasm-bindgen-rayon-[hash]/workerHelpers.js`, + // resolve the main module via `../../..`. + // + // This might need updating if the generated structure changes on wasm-bindgen + // side ever in the future, but works well with bundlers today. The whole + // point of this crate, after all, is to abstract away unstable features + // and temporary bugs so that you don't need to deal with them in your code. + // + // # Note 2 + // This could be a regular import, but then some bundlers complain about + // circular deps. + // + // Dynamic import could be cheap if this file was inlined into the parent, + // which would require us just using `../../..` in `new Worker` below, + // but that doesn't work because wasm-pack unconditionally adds + // "sideEffects":false (see below). + // + // OTOH, even though it can't be inlined, it should be still reasonably + // cheap since the requested file is already in cache (it was loaded by + // the main thread). + const pkg = await import('../../../inkvec_studio_wasm.js?v=ac6983bde218'); + await pkg.default(init); + postMessage({ type: 'wasm_bindgen_worker_ready' }); + pkg.wbg_rayon_start_worker(receiver); +}); + +// Note: this is never used, but necessary to prevent a bug in Firefox +// (https://bugzilla.mozilla.org/show_bug.cgi?id=1702191) where it collects +// Web Workers that have a shared WebAssembly memory with the main thread, +// but are not explicitly rooted via a `Worker` instance. +// +// By storing them in a variable, we can keep `Worker` objects around and +// prevent them from getting GC-d. +let _workers; + +export async function startWorkers(module, memory, builder) { + if (builder.numThreads() === 0) { + throw new Error(`num_threads must be > 0.`); + } + + const workerInit = { + type: 'wasm_bindgen_worker_init', + init: { module_or_path: module, memory }, + receiver: builder.receiver() + }; + + _workers = await Promise.all( + Array.from({ length: builder.numThreads() }, async () => { + // Self-spawn into a new Worker. + // + // TODO: while `new URL('...', import.meta.url) becomes a semi-standard + // way to get asset URLs relative to the module across various bundlers + // and browser, ideally we should switch to `import.meta.resolve` + // once it becomes a standard. + // + // Note: we could use `../../..` as the URL here to inline workerHelpers.js + // into the parent entry instead of creating another split point - + // this would be preferable from optimization perspective - + // however, Webpack then eliminates all message handler code + // because wasm-pack produces "sideEffects":false in package.json + // unconditionally. + // + // The only way to work around that is to have side effect code + // in an entry point such as Worker file itself. + const worker = new Worker(new URL('./workerHelpers.js', import.meta.url), { + type: 'module' + }); + worker.postMessage(workerInit); + await waitForMsgType(worker, 'wasm_bindgen_worker_ready'); + return worker; + }) + ); + builder.build(); +} diff --git a/studio/pkg/inkvec_studio_wasm.d.ts b/studio/pkg/inkvec_studio_wasm.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9d10128764963acd430398d400a6fb5cdb9ba703 --- /dev/null +++ b/studio/pkg/inkvec_studio_wasm.d.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ + +/** + * One Studio session: the image that is open and what has been traced of it. The + * browser's `AppState`. + */ +export class Studio { + free(): void; + [Symbol.dispose](): void; + /** + * Every other command, by its Tauri name, with its arguments as the interface sends + * them (a JSON object, camelCase keys). Returns the reply as JSON. + */ + call(cmd: string, args: string): string; + /** + * What this build can do (`capabilities`), with the denoiser's standing as the page + * measured it: whether it can run here, and whether the weights are in its cache. + */ + capabilities(denoiser_supported: boolean, denoiser_installed: boolean, denoiser_bytes?: number | null): string; + /** + * Forget the open image and everything traced from it. + */ + close(): void; + /** + * Build an export (`write_export`'s work) and hand every file back as + * `[{ name, data }]`, for the page to download. With more than one file, `zip` packs + * them into one archive instead, returned as a single `{ name: "", data }`. + */ + export_files(request: string, zip: boolean): Array; + /** + * A session with nothing open. + */ + constructor(); + /** + * Open an image (`open_bytes`): PNG, JPEG, WebP, GIF, BMP, TIFF or SVG bytes. + */ + open_bytes(bytes: Uint8Array, name?: string | null): string; + /** + * A wizard preview (`start_preview`'s work): a draft of `request.settings` that does + * not become the drawing. + */ + preview(request: string, draft_px: number, draft_seconds: number): string; + /** + * Trace the open image (`start_trace`'s work), synchronously. + * + * `on_stage(name, ms)` is called as the pipeline passes each stage; `is_current()` is + * asked, once the drawing is done, whether the page still wants this generation -- + * a drawing it has moved past is kept in the cache but not measured. Returns the + * outcome as JSON (`trace:done`'s `outcome`), or `undefined` when it was retired. + */ + trace(request: string, draft_px: number, draft_seconds: number, generation: number, on_stage: Function, is_current: Function): string | undefined; +} + +/** + * The Hugging Face repository the weights come from. + */ +export function denoiser_model_repo(): string; + +/** + * The SHA-256 the weights must hash to. + */ +export function denoiser_model_sha256(): string; + +/** + * The Hugging Face URL of the denoiser weights, the same file the command line pulls. + */ +export function denoiser_model_url(): string; + +/** + * Route every trace that asks for "Clean up damage" through the page's denoiser. Called + * once by the worker when the page can block on a shared buffer (it is cross-origin + * isolated); without it such a trace runs as the desktop app does without its model. + */ +export function enable_denoiser(): void; + +/** + * Whether this is the threaded build, whose pool `initThreadPool` starts. + */ +export function threads_available(): boolean; + +/** + * The app's version, which is the engine's: they are built from one tree. + */ +export function version(): string; + +export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; + +export interface InitOutput { + readonly memory: WebAssembly.Memory; + readonly __wbg_studio_free: (a: number, b: number) => void; + readonly denoiser_model_repo: (a: number) => void; + readonly denoiser_model_sha256: (a: number) => void; + readonly denoiser_model_url: (a: number) => void; + readonly enable_denoiser: () => void; + readonly studio_call: (a: number, b: number, c: number, d: number, e: number, f: number) => void; + readonly studio_capabilities: (a: number, b: number, c: number, d: number, e: number, f: number) => void; + readonly studio_close: (a: number) => void; + readonly studio_export_files: (a: number, b: number, c: number, d: number, e: number) => void; + readonly studio_new: () => number; + readonly studio_open_bytes: (a: number, b: number, c: number, d: number, e: number, f: number) => void; + readonly studio_preview: (a: number, b: number, c: number, d: number, e: number, f: number) => void; + readonly studio_trace: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void; + readonly threads_available: () => number; + readonly version: (a: number) => void; + readonly __wbindgen_export: (a: number, b: number) => number; + readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number; + readonly __wbindgen_export3: (a: number) => void; + readonly __wbindgen_export4: (a: number, b: number, c: number) => void; + readonly __wbindgen_add_to_stack_pointer: (a: number) => number; +} + +export type SyncInitInput = BufferSource | WebAssembly.Module; + +/** + * Instantiates the given `module`, which can either be bytes or + * a precompiled `WebAssembly.Module`. + * + * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated. + * + * @returns {InitOutput} + */ +export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput; + +/** + * If `module_or_path` is {RequestInfo} or {URL}, makes a request and + * for everything else, calls `WebAssembly.instantiate` directly. + * + * @param {{ module_or_path: InitInput | Promise }} module_or_path - Passing `InitInput` directly is deprecated. + * + * @returns {Promise} + */ +export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise } | InitInput | Promise): Promise; diff --git a/studio/pkg/inkvec_studio_wasm.js b/studio/pkg/inkvec_studio_wasm.js new file mode 100644 index 0000000000000000000000000000000000000000..aba586b87a6c9b5a1ca5c3047fe67119583f0fec --- /dev/null +++ b/studio/pkg/inkvec_studio_wasm.js @@ -0,0 +1,731 @@ +/* @ts-self-types="./inkvec_studio_wasm.d.ts" */ + +/** + * One Studio session: the image that is open and what has been traced of it. The + * browser's `AppState`. + */ +export class Studio { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + StudioFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_studio_free(ptr, 0); + } + /** + * Every other command, by its Tauri name, with its arguments as the interface sends + * them (a JSON object, camelCase keys). Returns the reply as JSON. + * @param {string} cmd + * @param {string} args + * @returns {string} + */ + call(cmd, args) { + let deferred4_0; + let deferred4_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(cmd, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(args, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len1 = WASM_VECTOR_LEN; + wasm.studio_call(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + var ptr3 = r0; + var len3 = r1; + if (r3) { + ptr3 = 0; len3 = 0; + throw takeObject(r2); + } + deferred4_0 = ptr3; + deferred4_1 = len3; + return getStringFromWasm0(ptr3, len3); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred4_0, deferred4_1, 1); + } + } + /** + * What this build can do (`capabilities`), with the denoiser's standing as the page + * measured it: whether it can run here, and whether the weights are in its cache. + * @param {boolean} denoiser_supported + * @param {boolean} denoiser_installed + * @param {number | null} [denoiser_bytes] + * @returns {string} + */ + capabilities(denoiser_supported, denoiser_installed, denoiser_bytes) { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.studio_capabilities(retptr, this.__wbg_ptr, denoiser_supported, denoiser_installed, !isLikeNone(denoiser_bytes), isLikeNone(denoiser_bytes) ? 0 : denoiser_bytes); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1); + } + } + /** + * Forget the open image and everything traced from it. + */ + close() { + wasm.studio_close(this.__wbg_ptr); + } + /** + * Build an export (`write_export`'s work) and hand every file back as + * `[{ name, data }]`, for the page to download. With more than one file, `zip` packs + * them into one archive instead, returned as a single `{ name: "", data }`. + * @param {string} request + * @param {boolean} zip + * @returns {Array} + */ + export_files(request, zip) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(request, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len0 = WASM_VECTOR_LEN; + wasm.studio_export_files(retptr, this.__wbg_ptr, ptr0, len0, zip); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * A session with nothing open. + */ + constructor() { + const ret = wasm.studio_new(); + this.__wbg_ptr = ret; + StudioFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * Open an image (`open_bytes`): PNG, JPEG, WebP, GIF, BMP, TIFF or SVG bytes. + * @param {Uint8Array} bytes + * @param {string | null} [name] + * @returns {string} + */ + open_bytes(bytes, name) { + let deferred4_0; + let deferred4_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export); + const len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(name) ? 0 : passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2); + var len1 = WASM_VECTOR_LEN; + wasm.studio_open_bytes(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + var ptr3 = r0; + var len3 = r1; + if (r3) { + ptr3 = 0; len3 = 0; + throw takeObject(r2); + } + deferred4_0 = ptr3; + deferred4_1 = len3; + return getStringFromWasm0(ptr3, len3); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred4_0, deferred4_1, 1); + } + } + /** + * A wizard preview (`start_preview`'s work): a draft of `request.settings` that does + * not become the drawing. + * @param {string} request + * @param {number} draft_px + * @param {number} draft_seconds + * @returns {string} + */ + preview(request, draft_px, draft_seconds) { + let deferred3_0; + let deferred3_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(request, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len0 = WASM_VECTOR_LEN; + wasm.studio_preview(retptr, this.__wbg_ptr, ptr0, len0, draft_px, draft_seconds); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + var ptr2 = r0; + var len2 = r1; + if (r3) { + ptr2 = 0; len2 = 0; + throw takeObject(r2); + } + deferred3_0 = ptr2; + deferred3_1 = len2; + return getStringFromWasm0(ptr2, len2); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1); + } + } + /** + * Trace the open image (`start_trace`'s work), synchronously. + * + * `on_stage(name, ms)` is called as the pipeline passes each stage; `is_current()` is + * asked, once the drawing is done, whether the page still wants this generation -- + * a drawing it has moved past is kept in the cache but not measured. Returns the + * outcome as JSON (`trace:done`'s `outcome`), or `undefined` when it was retired. + * @param {string} request + * @param {number} draft_px + * @param {number} draft_seconds + * @param {number} generation + * @param {Function} on_stage + * @param {Function} is_current + * @returns {string | undefined} + */ + trace(request, draft_px, draft_seconds, generation, on_stage, is_current) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(request, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len0 = WASM_VECTOR_LEN; + wasm.studio_trace(retptr, this.__wbg_ptr, ptr0, len0, draft_px, draft_seconds, generation, addBorrowedObject(on_stage), addBorrowedObject(is_current)); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true); + if (r3) { + throw takeObject(r2); + } + let v2; + if (r0 !== 0) { + v2 = getStringFromWasm0(r0, r1); + wasm.__wbindgen_export4(r0, r1 * 1, 1); + } + return v2; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + heap[stack_pointer++] = undefined; + heap[stack_pointer++] = undefined; + } + } +} +if (Symbol.dispose) Studio.prototype[Symbol.dispose] = Studio.prototype.free; + +/** + * The Hugging Face repository the weights come from. + * @returns {string} + */ +export function denoiser_model_repo() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.denoiser_model_repo(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1); + } +} + +/** + * The SHA-256 the weights must hash to. + * @returns {string} + */ +export function denoiser_model_sha256() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.denoiser_model_sha256(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1); + } +} + +/** + * The Hugging Face URL of the denoiser weights, the same file the command line pulls. + * @returns {string} + */ +export function denoiser_model_url() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.denoiser_model_url(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1); + } +} + +/** + * Route every trace that asks for "Clean up damage" through the page's denoiser. Called + * once by the worker when the page can block on a shared buffer (it is cross-origin + * isolated); without it such a trace runs as the desktop app does without its model. + */ +export function enable_denoiser() { + wasm.enable_denoiser(); +} + +/** + * Whether this is the threaded build, whose pool `initThreadPool` starts. + * @returns {boolean} + */ +export function threads_available() { + const ret = wasm.threads_available(); + return ret !== 0; +} + +/** + * The app's version, which is the engine's: they are built from one tree. + * @returns {string} + */ +export function version() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.version(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1); + } +} +function __wbg_get_imports() { + const import0 = { + __proto__: null, + __wbg___wbindgen_is_falsy_4502df4d571fca70: function(arg0) { + const ret = !getObject(arg0); + return ret; + }, + __wbg___wbindgen_is_undefined_8c687d0b90d5b524: function(arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }, + __wbg___wbindgen_string_get_92ab86bb19cbc12f: function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_throw_5d9e815e6fdf150f: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }, + __wbg_call_6bcf8d3e20937e46: function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); }, + __wbg_call_7bbd9cceba9949ad: function() { return handleError(function (arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3)); + return addHeapObject(ret); + }, arguments); }, + __wbg_error_757e9472f8410341: function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_export4(deferred0_0, deferred0_1, 1); + } + }, + __wbg_get_989d0a1309644f2b: function() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); + }, arguments); }, + __wbg_inkvecDenoiseSync_b92f950e4d76b9c0: function() { return handleError(function (arg0, arg1, arg2, arg3) { + const ret = globalThis.inkvecDenoiseSync(getArrayF32FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0); + return addHeapObject(ret); + }, arguments); }, + __wbg_length_8768c6f6941913e3: function(arg0) { + const ret = getObject(arg0).length; + return ret; + }, + __wbg_new_227d7c05414eb861: function() { + const ret = new Error(); + return addHeapObject(ret); + }, + __wbg_new_bebc3f4757acf305: function() { + const ret = new Object(); + return addHeapObject(ret); + }, + __wbg_new_ffa92086ea89f79c: function() { + const ret = new Array(); + return addHeapObject(ret); + }, + __wbg_new_from_slice_4ee02165f9de919e: function(arg0, arg1) { + const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1)); + return addHeapObject(ret); + }, + __wbg_now_e7c6795a7f81e10f: function(arg0) { + const ret = getObject(arg0).now(); + return ret; + }, + __wbg_performance_3fcf6e32a7e1ed0a: function(arg0) { + const ret = getObject(arg0).performance; + return addHeapObject(ret); + }, + __wbg_prototypesetcall_804a1eb1b047ccb9: function(arg0, arg1, arg2) { + Float32Array.prototype.set.call(getArrayF32FromWasm0(arg0, arg1), getObject(arg2)); + }, + __wbg_push_bfdf956ba476f65b: function(arg0, arg1) { + const ret = getObject(arg0).push(getObject(arg1)); + return ret; + }, + __wbg_set_a377297433dfea63: function() { return handleError(function (arg0, arg1, arg2) { + const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); + return ret; + }, arguments); }, + __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg_static_accessor_GLOBAL_8eb4cd83130a11a0: function() { + const ret = typeof global === 'undefined' ? null : global; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, + __wbg_static_accessor_GLOBAL_THIS_1e7044f654e934db: function() { + const ret = typeof globalThis === 'undefined' ? null : globalThis; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, + __wbg_static_accessor_SELF_d8b50611246a6d92: function() { + const ret = typeof self === 'undefined' ? null : self; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, + __wbg_static_accessor_WINDOW_fd0bc376bf0f8b42: function() { + const ret = typeof window === 'undefined' ? null : window; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, + __wbindgen_generic_0000000000000001: function(arg0) { + // Cast intrinsic for `F64 -> Externref`. + const ret = arg0; + return addHeapObject(ret); + }, + __wbindgen_generic_0000000000000002: function(arg0, arg1) { + // Cast intrinsic for `Ref(String) -> Externref`. + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }, + __wbindgen_object_clone_ref: function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }, + __wbindgen_object_drop_ref: function(arg0) { + takeObject(arg0); + }, + }; + return { + __proto__: null, + "./inkvec_studio_wasm_bg.js": import0, + }; +} + +const StudioFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_studio_free(ptr, 1)); + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function addBorrowedObject(obj) { + if (stack_pointer == 1) throw new Error('out of js stack'); + heap[--stack_pointer] = obj; + return stack_pointer; +} + +function dropObject(idx) { + if (idx < 1028) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function getArrayF32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} + +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); +} + +let cachedDataViewMemory0 = null; +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} + +let cachedFloat32ArrayMemory0 = null; +function getFloat32ArrayMemory0() { + if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) { + cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); + } + return cachedFloat32ArrayMemory0; +} + +function getStringFromWasm0(ptr, len) { + return decodeText(ptr >>> 0, len); +} + +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +function getObject(idx) { return heap[idx]; } + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_export3(addHeapObject(e)); + } +} + +let heap = new Array(1024).fill(undefined); +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function isLikeNone(x) { + return x === undefined || x === null; +} + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1, 1) >>> 0; + getUint8ArrayMemory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} + +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = cachedTextEncoder.encodeInto(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +let stack_pointer = 1024; + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); +const MAX_SAFARI_DECODE_BYTES = 2146435072; +let numBytesDecoded = 0; +function decodeText(ptr, len) { + numBytesDecoded += len; + if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { + cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + cachedTextDecoder.decode(); + numBytesDecoded = len; + } + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +const cachedTextEncoder = new TextEncoder(); + +if (!('encodeInto' in cachedTextEncoder)) { + cachedTextEncoder.encodeInto = function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; + }; +} + +let WASM_VECTOR_LEN = 0; + +let wasmModule, wasmInstance, wasm; +function __wbg_finalize_init(instance, module) { + wasmInstance = instance; + wasm = instance.exports; + wasmModule = module; + cachedDataViewMemory0 = null; + cachedFloat32ArrayMemory0 = null; + cachedUint8ArrayMemory0 = null; + return wasm; +} + +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (!module.ok) { + throw new Error(`failed to fetch Wasm: ${module.status} ${module.statusText} fetching '${module.url}'`); + } + + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + const validResponse = expectedResponseType(module.type); + + if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { throw e; } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } else { + return instance; + } + } + + function expectedResponseType(type) { + switch (type) { + case 'basic': case 'cors': case 'default': return true; + } + return false; + } +} + +function initSync(module) { + if (wasm !== undefined) return wasm; + + + if (module !== undefined) { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } + + const imports = __wbg_get_imports(); + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + const instance = new WebAssembly.Instance(module, imports); + return __wbg_finalize_init(instance, module); +} + +async function __wbg_init(module_or_path) { + if (wasm !== undefined) return wasm; + + + if (module_or_path !== undefined) { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (module_or_path === undefined) { + module_or_path = new URL('inkvec_studio_wasm_bg.wasm', import.meta.url); + } + const imports = __wbg_get_imports(); + + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module); +} + +export { initSync, __wbg_init as default }; diff --git a/studio/pkg/inkvec_studio_wasm_bg.wasm b/studio/pkg/inkvec_studio_wasm_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..009182c265da70cf0a1ca41f770f47723cfd6599 --- /dev/null +++ b/studio/pkg/inkvec_studio_wasm_bg.wasm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fb12f99941b3cfa046834d1140f47226148d22ea8f37faad3c1aab2651fe252 +size 5227771 diff --git a/studio/pkg/inkvec_studio_wasm_bg.wasm.d.ts b/studio/pkg/inkvec_studio_wasm_bg.wasm.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bd0115429276fe55abaf91ee8e79c548c1a0f274 --- /dev/null +++ b/studio/pkg/inkvec_studio_wasm_bg.wasm.d.ts @@ -0,0 +1,23 @@ +/* tslint:disable */ +/* eslint-disable */ +export const memory: WebAssembly.Memory; +export const __wbg_studio_free: (a: number, b: number) => void; +export const denoiser_model_repo: (a: number) => void; +export const denoiser_model_sha256: (a: number) => void; +export const denoiser_model_url: (a: number) => void; +export const enable_denoiser: () => void; +export const studio_call: (a: number, b: number, c: number, d: number, e: number, f: number) => void; +export const studio_capabilities: (a: number, b: number, c: number, d: number, e: number, f: number) => void; +export const studio_close: (a: number) => void; +export const studio_export_files: (a: number, b: number, c: number, d: number, e: number) => void; +export const studio_new: () => number; +export const studio_open_bytes: (a: number, b: number, c: number, d: number, e: number, f: number) => void; +export const studio_preview: (a: number, b: number, c: number, d: number, e: number, f: number) => void; +export const studio_trace: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void; +export const threads_available: () => number; +export const version: (a: number) => void; +export const __wbindgen_export: (a: number, b: number) => number; +export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number; +export const __wbindgen_export3: (a: number) => void; +export const __wbindgen_export4: (a: number, b: number, c: number) => void; +export const __wbindgen_add_to_stack_pointer: (a: number) => number; diff --git a/studio/samples/crest-filigree.png b/studio/samples/crest-filigree.png new file mode 100644 index 0000000000000000000000000000000000000000..08b38f74eaf9af60f88f6ac36b0d1f38fcb10724 Binary files /dev/null and b/studio/samples/crest-filigree.png differ diff --git a/studio/samples/flat-logo.png b/studio/samples/flat-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..90d09cf3e4476076bab98af27290858e831acbbb Binary files /dev/null and b/studio/samples/flat-logo.png differ diff --git a/studio/samples/icon-64.png b/studio/samples/icon-64.png new file mode 100644 index 0000000000000000000000000000000000000000..baeab74a481600e5c52cfc90e11d763ed2bfdc91 Binary files /dev/null and b/studio/samples/icon-64.png differ diff --git a/studio/samples/signature-bw.png b/studio/samples/signature-bw.png new file mode 100644 index 0000000000000000000000000000000000000000..ff0cb290bf6d233e64c39f6678c29e74c2cc33ea Binary files /dev/null and b/studio/samples/signature-bw.png differ diff --git a/worker.js b/worker.js deleted file mode 100644 index 7182391f21b7722527fd2a00bb812f14d85b6d82..0000000000000000000000000000000000000000 --- a/worker.js +++ /dev/null @@ -1,170 +0,0 @@ -// The trace runs here so the page stays responsive: a 768-px logo is seconds of work and -// on the main thread that would freeze the controls. The denoiser runs here too, for the -// same reason and then some — it is a 19.7-million-parameter network. -// -// Two builds of the same tracer sit beside each other, and which one loads is decided by -// whether the browser will give us threads. `pkg-threads/` is compiled with the wasm -// atomics feature and starts a rayon pool; the pipeline is already parallel — one -// independent dynamic program per boundary, which is 81% of the single-threaded time — so -// it needs no other change to use it. That build only runs on a cross-origin isolated page, -// because the pool is a `SharedArrayBuffer`. The Space asks for isolation with -// `custom_headers` in its README; anywhere that does not grant it, `pkg/` loads instead and -// behaves exactly as it always has. Same source, same f64, same output, one core. -// -// The `?v=` token is on every URL deliberately. The generated loader resolves the wasm -// against `import.meta.url` and URL resolution drops the base's query, so a token on the -// import alone busts the JavaScript and never the WebAssembly — the wrong way round, since -// the bindings rarely change and the wasm changes on every build. Bump it when `pkg/` or -// `pkg-threads/` is rebuilt. -const V = "v=12"; - -const isolated = typeof crossOriginIsolated !== "undefined" && crossOriginIsolated; - -// One worker per core, less the one this thread is already using. `hardwareConcurrency` -// is what the browser is willing to admit to; on machines that report nothing, four is a -// safe guess that still pays. -const POOL = Math.max(1, Math.min(navigator.hardwareConcurrency || 4, 16) - 1); - -async function load() { - const dir = isolated ? "./pkg-threads" : "./pkg"; - stage = "import"; postMessage({ type: "stage", stage }); - const mod = await import(`${dir}/inkvec_wasm.js?${V}`); - stage = "instantiate"; postMessage({ type: "stage", stage }); - await mod.default({ module_or_path: new URL(`${dir}/inkvec_wasm_bg.wasm?${V}`, import.meta.url) }); - stage = "pool"; postMessage({ type: "stage", stage }); - let threads = 0; - if (isolated && mod.initThreadPool) { - // If the pool cannot start — nested workers refused, memory limits — say so and carry - // on. Rayon runs its work on the calling thread when it has no pool, so the trace is - // still correct, just no faster than the fallback would have been. - try { - await mod.initThreadPool(POOL); - threads = POOL; - stage = "ready"; - } catch (e) { - poolError = String((e && e.stack) || e); - console.warn("inkvec: thread pool did not start, running on one core:", e); - } - } - return { mod, threads }; -} - -let poolError = null; -let stage = "start"; - -const ready = load().then(({ mod, threads }) => { - postMessage({ type: "ready", version: mod.version(), threads, poolError }); - return mod; -}); -ready.catch((e) => postMessage({ type: "loadfail", stage, error: String((e && e.stack) || e) })); - -// The denoiser module is imported the first time someone asks for it, not at load: it pulls -// ONNX Runtime Web and ~80 MB of weights down behind it, and most traces never want them. -let denoiser = null; -async function denoiserModule() { - if (!denoiser) denoiser = import(`./denoise.js?${V}`); - return denoiser; -} - -/** - * The denoiser pre-pass, exactly as `--restore` runs it: `on` always denoises, `auto` - * traces once, measures how far the raster disagrees with its own trace where the trace - * claims a flat interior, and denoises only if that residual is over the threshold — the - * common case pays one trace and never touches the network. - * - * The tensor is the tracer's (`denoiser_input`), the answer goes back to the tracer - * (`take_denoiser_output`), and the tracer forces soft intake on whatever it traces next. - * Everything between is ONNX Runtime Web's. - */ -async function denoise(intake, mode, mod, report) { - const note = {}; - let probe = null; - - if (mode === "auto") { - report({ type: "stage", stage: "checking" }); - const t = performance.now(); - probe = intake.trace(); - note.probeMs = performance.now() - t; - const residual = intake.residual(probe); - const threshold = mod.denoiser_threshold(); - note.residual = residual ?? null; - note.threshold = threshold; - if (!(residual > threshold)) { - // Undamaged, or nothing measurable: the probe is the answer. - note.skipped = residual === undefined || residual === null ? "unmeasurable" : "clean"; - report({ type: "stage", stage: "kept" }); - return { svg: probe, note }; - } - } - - const den = await denoiserModule(); - report({ type: "stage", stage: "denoiser" }); - // The download arrives in thousands of chunks and the page only draws a bar out of it, so - // it hears about four of them a second rather than all of them. - let last = 0; - await den.load({ - url: mod.denoiser_model_url(), - sha256: mod.denoiser_model_sha256(), - onStage: (s) => report({ type: "stage", stage: "denoiser:" + s }), - onProgress: (p) => { - const now = performance.now(); - if (p.cached || p.received === p.total || now - last > 250) { - last = now; - report({ type: "download", ...p }); - } - }, - }); - - const [pw, ph] = intake.denoiser_input_size; - const backend = den.activeBackend(); - report({ type: "stage", stage: "denoising", width: pw, height: ph, backend }); - const t0 = performance.now(); - const out = await den.run(intake.denoiser_input(), pw, ph); - note.ms = performance.now() - t0; - note.backend = den.activeBackend(); - intake.take_denoiser_output(out); - note.denoised = true; - return { svg: null, note, pixels: intake.rgba8(), width: intake.width, height: intake.height }; -} - -onmessage = async (e) => { - const mod = await ready; - const { id, bytes, o } = e.data; - const report = (m) => postMessage({ ...m, id }); - const t0 = performance.now(); - let intake = null; - try { - const mode = o.denoise || "off"; - if (mode === "off") { - // Unchanged, and deliberately the same call it always was. - const svg = mod.trace(bytes, o.precision, o.min_area, o.colors, o.merge, o.max_dim, - o.time_budget, o.no_background, o.minify, o.margin, o.content_units, - o.cutout); - postMessage({ type: "done", id, svg, ms: performance.now() - t0 }); - return; - } - - intake = mod.prepare(bytes, o.precision, o.min_area, o.colors, o.merge, o.max_dim, - o.time_budget, o.no_background, o.minify, o.margin, o.content_units, - o.cutout); - const r = await denoise(intake, mode, mod, report); - let svg = r.svg; - if (svg === null) { - report({ type: "stage", stage: "tracing" }); - svg = intake.trace(); - } - const msg = { type: "done", id, svg, ms: performance.now() - t0, denoise: r.note }; - if (r.pixels) { - msg.pixels = r.pixels; - msg.width = r.width; - msg.height = r.height; - postMessage(msg, [r.pixels.buffer]); - } else { - postMessage(msg); - } - } catch (err) { - postMessage({ type: "error", id, error: String((err && err.message) || err) }); - } finally { - intake?.free?.(); - } -};