diff --git a/.changeset/brave-projects-build.md b/.changeset/brave-projects-build.md index 9f1e6e9c..8e25874d 100644 --- a/.changeset/brave-projects-build.md +++ b/.changeset/brave-projects-build.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler-cli': major +'@silk-lang/compiler-cli': major --- Replace the single `silk compile` workflow with the project-oriented `build`, `check`, and `run` diff --git a/.changeset/bright-trees-parse.md b/.changeset/bright-trees-parse.md index c8b90911..a5dfee40 100644 --- a/.changeset/bright-trees-parse.md +++ b/.changeset/bright-trees-parse.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Add the first lossless concrete syntax tree, deterministic parser diagnostics, and recoverable diff --git a/.changeset/brisk-names-collect.md b/.changeset/brisk-names-collect.md index 65d40450..43176626 100644 --- a/.changeset/brisk-names-collect.md +++ b/.changeset/brisk-names-collect.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Replace singular semantic fields with ordered function facts, closed declaration-name lookup, and diff --git a/.changeset/calm-files-walk.md b/.changeset/calm-files-walk.md index 5a30f501..97c149ae 100644 --- a/.changeset/calm-files-walk.md +++ b/.changeset/calm-files-walk.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Add the root-confined native `OsFileSystem` provider, opaque affine OS handles, injected evaluator diff --git a/.changeset/calm-rivers-lex.md b/.changeset/calm-rivers-lex.md index e7f9ab77..dad6eea6 100644 --- a/.changeset/calm-rivers-lex.md +++ b/.changeset/calm-rivers-lex.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Introduce the bootstrap compiler package with immutable byte-oriented sources, source-owned spans, diff --git a/.changeset/clear-calls-resolve.md b/.changeset/clear-calls-resolve.md index cdf0a81a..3a547ef8 100644 --- a/.changeset/clear-calls-resolve.md +++ b/.changeset/clear-calls-resolve.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Resolve top-level zero-argument calls, propagate declared result types, and diagnose unknown function names. diff --git a/.changeset/deep-facts-analyze.md b/.changeset/deep-facts-analyze.md index ad52e818..c5e5d88b 100644 --- a/.changeset/deep-facts-analyze.md +++ b/.changeset/deep-facts-analyze.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Analyze nested call arguments as recursive semantic expression facts and report a precise temporary diff --git a/.changeset/gentle-calls-parse.md b/.changeset/gentle-calls-parse.md index 73f6c918..fc688bee 100644 --- a/.changeset/gentle-calls-parse.md +++ b/.changeset/gentle-calls-parse.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Parse lossless zero-argument call expressions and publish closed integer-or-unresolved-call return facts. diff --git a/.changeset/intrinsics-know-targets.md b/.changeset/intrinsics-know-targets.md index ce7c6f5c..1aebd903 100644 --- a/.changeset/intrinsics-know-targets.md +++ b/.changeset/intrinsics-know-targets.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Enforce reachable-only target availability for sealed compiler intrinsics and expose deterministic executable intrinsic inventories. diff --git a/.changeset/llvm-effect-contract.md b/.changeset/llvm-effect-contract.md index 3402a15d..b20a84e5 100644 --- a/.changeset/llvm-effect-contract.md +++ b/.changeset/llvm-effect-contract.md @@ -1,5 +1,5 @@ --- -'@silk-effect/llvm': major +'@silk-lang/llvm': major --- Add the LLVM-specific `LlvmError` contract, make expected validation and state-transition failures diff --git a/.changeset/llvm-structural-cleanup.md b/.changeset/llvm-structural-cleanup.md index 1e446d52..e3530a0d 100644 --- a/.changeset/llvm-structural-cleanup.md +++ b/.changeset/llvm-structural-cleanup.md @@ -1,5 +1,5 @@ --- -'@silk-effect/llvm': patch +'@silk-lang/llvm': patch --- Restructure the builder's internal state: collapse the parallel description/handle/key arrays into diff --git a/.changeset/nested-values-evaluate.md b/.changeset/nested-values-evaluate.md index 3ee8fba3..be516f86 100644 --- a/.changeset/nested-values-evaluate.md +++ b/.changeset/nested-values-evaluate.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Evaluate nested call expressions left to right with exact recursive results, blocked reasons, diff --git a/.changeset/olive-moons-compile.md b/.changeset/olive-moons-compile.md index d871ffb4..9c454d15 100644 --- a/.changeset/olive-moons-compile.md +++ b/.changeset/olive-moons-compile.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Add a WebAssembly backend satisfying the nominal `Backend` service, emitting structured control diff --git a/.changeset/portable-files-serve.md b/.changeset/portable-files-serve.md index a5fbfbbf..09eabea8 100644 --- a/.changeset/portable-files-serve.md +++ b/.changeset/portable-files-serve.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Add owned normalized `Path`, allocation-free portable filesystem values and failures, and the diff --git a/.changeset/portable-logs-observe.md b/.changeset/portable-logs-observe.md index 00398533..27386ab9 100644 --- a/.changeset/portable-logs-observe.md +++ b/.changeset/portable-logs-observe.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Add source-defined portable semantic logging with explicit Logger requirements, complete borrowed diff --git a/.changeset/quiet-fences-format.md b/.changeset/quiet-fences-format.md index d5292c97..4a7ae9e0 100644 --- a/.changeset/quiet-fences-format.md +++ b/.changeset/quiet-fences-format.md @@ -1,9 +1,9 @@ --- -'@silk-effect/compiler': minor -'@silk-effect/documentation': minor -'@silk-effect/formatter': minor -'@silk-effect/compiler-cli': minor -'@silk-effect/lsp': minor +'@silk-lang/compiler': minor +'@silk-lang/documentation': minor +'@silk-lang/formatter': minor +'@silk-lang/compiler-cli': minor +'@silk-lang/lsp': minor --- Format active fenced Silk modules inside source-owned documentation through one canonical formatter diff --git a/.changeset/rooted-source-resolution.md b/.changeset/rooted-source-resolution.md index 7f3965a2..b0832572 100644 --- a/.changeset/rooted-source-resolution.md +++ b/.changeset/rooted-source-resolution.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': major +'@silk-lang/compiler': major --- Replace preloaded source maps with an explicit root `SourceFile` and the injectable diff --git a/.changeset/silk-language-package.md b/.changeset/silk-language-package.md index 0c1b0ee0..2d7477c2 100644 --- a/.changeset/silk-language-package.md +++ b/.changeset/silk-language-package.md @@ -1,5 +1,5 @@ --- -'@silk-effect/language': minor +'@silk-lang/language': minor --- New package: editor language support for Silk. A CodeMirror 6 extension whose highlighting is diff --git a/.changeset/silk-lsp-server.md b/.changeset/silk-lsp-server.md index 4e4524f7..4bd8537c 100644 --- a/.changeset/silk-lsp-server.md +++ b/.changeset/silk-lsp-server.md @@ -1,5 +1,5 @@ --- -'@silk-effect/lsp': minor +'@silk-lang/lsp': minor --- Add the Silk Effect language server: a stdio LSP binary serving whole-phase diagnostics, expression diff --git a/.changeset/silky-tools-compile.md b/.changeset/silky-tools-compile.md index c21d42d6..b4275383 100644 --- a/.changeset/silky-tools-compile.md +++ b/.changeset/silky-tools-compile.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler-cli': minor +'@silk-lang/compiler-cli': minor --- Add the `silk` command line interface built on Effect's CLI primitives. `silk compile` runs the diff --git a/.changeset/smooth-docs-hover.md b/.changeset/smooth-docs-hover.md index 8642f81f..dd2c7573 100644 --- a/.changeset/smooth-docs-hover.md +++ b/.changeset/smooth-docs-hover.md @@ -1,9 +1,9 @@ --- -'@silk-effect/compiler': minor -'@silk-effect/compiler-cli': minor -'@silk-effect/documentation': minor -'@silk-effect/language': minor -'@silk-effect/lsp': minor +'@silk-lang/compiler': minor +'@silk-lang/compiler-cli': minor +'@silk-lang/documentation': minor +'@silk-lang/language': minor +'@silk-lang/lsp': minor --- Add raw `///` and `//!` documentation source facts, lazy CommonMark documentation models, diff --git a/.changeset/soft-scopes-resolve.md b/.changeset/soft-scopes-resolve.md index 4e34d0be..fb299bff 100644 --- a/.changeset/soft-scopes-resolve.md +++ b/.changeset/soft-scopes-resolve.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Resolve bootstrap parameter declarations and bare identifier expressions within their owning function, including exact identities, declared types, lookup outcomes, provenance, and deterministic diagnostics. diff --git a/.changeset/steady-calls-check.md b/.changeset/steady-calls-check.md index b8d541af..11b3cf16 100644 --- a/.changeset/steady-calls-check.md +++ b/.changeset/steady-calls-check.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Publish ordered call arguments, positional target-parameter mappings, explicit call-contract outcomes, and deterministic wrong-arity diagnostics. diff --git a/.changeset/swift-facts-analyze.md b/.changeset/swift-facts-analyze.md index 89756b87..474e1317 100644 --- a/.changeset/swift-facts-analyze.md +++ b/.changeset/swift-facts-analyze.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Add immutable semantic facts, declaration lookup, and phase-owned diagnostics for the first diff --git a/.changeset/tall-nests-parse.md b/.changeset/tall-nests-parse.md index 44a79ee9..367dd0d8 100644 --- a/.changeset/tall-nests-parse.md +++ b/.changeset/tall-nests-parse.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Parse recursively nested call arguments as lossless concrete syntax while preserving an explicit diff --git a/.changeset/tidy-functions-repeat.md b/.changeset/tidy-functions-repeat.md index c6994146..447c4631 100644 --- a/.changeset/tidy-functions-repeat.md +++ b/.changeset/tidy-functions-repeat.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Parse one or more public bootstrap functions as ordered lossless concrete branches while keeping diff --git a/.changeset/tiny-values-evaluate.md b/.changeset/tiny-values-evaluate.md index 0f6a6493..d41ae197 100644 --- a/.changeset/tiny-values-evaluate.md +++ b/.changeset/tiny-values-evaluate.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Add closed bootstrap evaluation for reachable `main: I32` programs, with exact results, positional parameter frames, deterministic traces, and bounded recursive-cycle outcomes. diff --git a/.changeset/warm-values-parse.md b/.changeset/warm-values-parse.md index 09643515..a5be34f0 100644 --- a/.changeset/warm-values-parse.md +++ b/.changeset/warm-values-parse.md @@ -1,5 +1,5 @@ --- -'@silk-effect/compiler': minor +'@silk-lang/compiler': minor --- Parse typed bootstrap parameters, bare identifier expressions, and integer or identifier call arguments as lossless recoverable syntax. diff --git a/.changeset/wasm-builder-core.md b/.changeset/wasm-builder-core.md index e132dac7..b61aa8d3 100644 --- a/.changeset/wasm-builder-core.md +++ b/.changeset/wasm-builder-core.md @@ -1,8 +1,8 @@ --- -'@silk-effect/wasm': patch +'@silk-lang/wasm': patch --- -Introduce `@silk-effect/wasm`: Effect-native WebAssembly module construction with instructions as +Introduce `@silk-lang/wasm`: Effect-native WebAssembly module construction with instructions as plain data, handle-based index spaces resolved at emission, full specification validation at define and emit time, and deterministic `.wat` text and `.wasm` binary output verified against a pinned `wasm-tools` oracle. Baseline: core 2.0 plus tail calls, extended constant expressions, diff --git a/.changeset/wasm-bulk-instruction-families.md b/.changeset/wasm-bulk-instruction-families.md index 5054f1dc..ab62fcb9 100644 --- a/.changeset/wasm-bulk-instruction-families.md +++ b/.changeset/wasm-bulk-instruction-families.md @@ -1,8 +1,8 @@ --- -'@silk-effect/wasm': patch +'@silk-lang/wasm': patch --- -Add the bulk instruction families to `@silk-effect/wasm`: fixed-width SIMD and relaxed SIMD +Add the bulk instruction families to `@silk-lang/wasm`: fixed-width SIMD and relaxed SIMD (`v128.const`, shuffles, lane operations, and the full `0xFD` family), threads (shared memories and the `0xFE` atomic family with exact-alignment validation), and memory64 (64-bit addressed memories and tables threaded through validation, limits, and both emitters). Baseline modules diff --git a/.changeset/wasm-exceptions-branch-hints.md b/.changeset/wasm-exceptions-branch-hints.md index a099341b..5b473488 100644 --- a/.changeset/wasm-exceptions-branch-hints.md +++ b/.changeset/wasm-exceptions-branch-hints.md @@ -1,8 +1,8 @@ --- -'@silk-effect/wasm': patch +'@silk-lang/wasm': patch --- -Add exception handling and branch hinting to `@silk-effect/wasm`: exception tags as a new +Add exception handling and branch hinting to `@silk-lang/wasm`: exception tags as a new importable/exportable entity kind, the `exnref` reference type, `throw`/`throw_ref`/`try_table` with all four catch-clause kinds, tag names in the name section, and optional likely/unlikely hints on `br_if`/`if` emitted as the `metadata.code.branch_hint` custom section and text diff --git a/.changeset/wasm-gc-typed-refs.md b/.changeset/wasm-gc-typed-refs.md index b7b80d81..230553f8 100644 --- a/.changeset/wasm-gc-typed-refs.md +++ b/.changeset/wasm-gc-typed-refs.md @@ -1,8 +1,8 @@ --- -'@silk-effect/wasm': patch +'@silk-lang/wasm': patch --- -Add GC and typed function references to `@silk-effect/wasm`, completing the Chrome-unflagged +Add GC and typed function references to `@silk-lang/wasm`, completing the Chrome-unflagged feature surface: parameterized reference types with abstract and concrete heap types, struct and array types in canonicalized recursive groups with declared supertypes, subtype-aware validation, the GC/cast/typed-call instruction set, and type names. `ValType.RefType` changes diff --git a/.changeset/webcontainers-run-effect.md b/.changeset/webcontainers-run-effect.md index 336ce81d..adcab344 100644 --- a/.changeset/webcontainers-run-effect.md +++ b/.changeset/webcontainers-run-effect.md @@ -1,5 +1,5 @@ --- -'@silk-effect/platform-webcontainer': major +'@silk-lang/platform-webcontainer': major --- Add an Effect-native WebContainer platform package with a scoped runtime, standard virtual diff --git a/.claude/launch.json b/.claude/launch.json index 237585e6..6ad31a28 100644 --- a/.claude/launch.json +++ b/.claude/launch.json @@ -4,14 +4,14 @@ { "name": "docs", "runtimeExecutable": "pnpm", - "runtimeArgs": ["--filter", "@silk-effect/docs", "dev"], + "runtimeArgs": ["--filter", "@silk-lang/docs", "dev"], "port": 3000, "autoPort": true }, { "name": "docs-next", "runtimeExecutable": "pnpm", - "runtimeArgs": ["--filter", "@silk-effect/docs", "exec", "next", "dev"], + "runtimeArgs": ["--filter", "@silk-lang/docs", "exec", "next", "dev"], "port": 3000, "autoPort": true } diff --git a/.github/scripts/publish-with-oidc-guard.test.mjs b/.github/scripts/publish-with-oidc-guard.test.mjs index 58df2026..54d75d7e 100644 --- a/.github/scripts/publish-with-oidc-guard.test.mjs +++ b/.github/scripts/publish-with-oidc-guard.test.mjs @@ -24,7 +24,7 @@ function fakeSpawn({ stdout = '', stderr = '', code = 0 }) { } test('forwards publish output', async () => { - const output = 'New tag: @silk-effect/llvm@0.1.0\n' + const output = 'New tag: @silk-lang/llvm@0.1.0\n' let seen = '' const code = await runPublish('pnpm', ['run', 'release:publish'], { onOutput: (chunk) => { @@ -39,7 +39,7 @@ test('forwards publish output', async () => { test('passes through a clean publish', async () => { const result = await publishWithGuard({ - spawnImpl: fakeSpawn({ stdout: 'New tag: @silk-effect/llvm@0.1.0\n' }), + spawnImpl: fakeSpawn({ stdout: 'New tag: @silk-lang/llvm@0.1.0\n' }), }) assert.deepEqual(result, { exitCode: 0, skippedOidc: false }) diff --git a/.github/scripts/verify-release-trust.test.mjs b/.github/scripts/verify-release-trust.test.mjs index db3c1a33..0773af3a 100644 --- a/.github/scripts/verify-release-trust.test.mjs +++ b/.github/scripts/verify-release-trust.test.mjs @@ -10,11 +10,11 @@ const trusted = { } test('accepts a trusted publish with provenance', () => { - assert.deepEqual(checkManifest('@silk-effect/llvm', '0.1.0', trusted), []) + assert.deepEqual(checkManifest('@silk-lang/llvm', '0.1.0', trusted), []) }) test('rejects an untrusted publish without provenance', () => { - const failures = checkManifest('@silk-effect/llvm', '0.1.0', { + const failures = checkManifest('@silk-lang/llvm', '0.1.0', { version: '0.1.0', _npmUser: { name: 'manual' }, }) @@ -27,7 +27,7 @@ test('reads the requested version from the registry packument', async () => { ok: true, json: async () => ({ versions: { '0.1.0': trusted } }), }) - const manifest = await fetchRegistryManifest('@silk-effect/llvm', '0.1.0', { fetchImpl }) + const manifest = await fetchRegistryManifest('@silk-lang/llvm', '0.1.0', { fetchImpl }) assert.equal(manifest.version, '0.1.0') }) @@ -36,7 +36,7 @@ test('surfaces registry errors', async () => { const fetchImpl = async () => ({ ok: false, status: 503 }) await assert.rejects( - () => fetchRegistryManifest('@silk-effect/llvm', '0.1.0', { fetchImpl }), + () => fetchRegistryManifest('@silk-lang/llvm', '0.1.0', { fetchImpl }), /returned 503/u, ) }) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6edf927..d5d188c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,16 +40,16 @@ jobs: - run: pnpm exec biome check . - run: node scripts/turbo.mjs run build - run: node scripts/turbo.mjs run typecheck - - run: node scripts/turbo.mjs run test --filter='!@silk-effect/compiler' - # The non-vitest parts of @silk-effect/compiler#test (its vitest payload is sharded below). + - run: node scripts/turbo.mjs run test --filter='!@silk-lang/compiler' + # The non-vitest parts of @silk-lang/compiler#test (its vitest payload is sharded below). - run: | - pnpm --filter @silk-effect/compiler run unicode:check - pnpm --filter @silk-effect/compiler run stdlib:check - pnpm --filter @silk-effect/compiler run toolchain:check - pnpm --filter @silk-effect/compiler run documentation:policy - pnpm --filter @silk-effect/compiler run documentation:check - pnpm --filter @silk-effect/compiler run documentation:examples - - run: pnpm --filter @silk-effect/compiler run test:native-acceptance + pnpm --filter @silk-lang/compiler run unicode:check + pnpm --filter @silk-lang/compiler run stdlib:check + pnpm --filter @silk-lang/compiler run toolchain:check + pnpm --filter @silk-lang/compiler run documentation:policy + pnpm --filter @silk-lang/compiler run documentation:check + pnpm --filter @silk-lang/compiler run documentation:examples + - run: pnpm --filter @silk-lang/compiler run test:native-acceptance - run: pnpm test:scripts - run: pnpm release:candidate @@ -86,7 +86,7 @@ jobs: # Mirrors test:parallel's flags; `pnpm --filter … run script -- args` drops the args # (observed in run 33014303799: every shard ran the full suite), so invoke vitest directly. - run: > - pnpm --filter @silk-effect/compiler exec vitest run + pnpm --filter @silk-lang/compiler exec vitest run --passWithNoTests --exclude test/DriverNativeAcceptance.test.ts --shard=${{ matrix.shard }}/4 --reporter=default --reporter=json @@ -110,5 +110,5 @@ jobs: node-version: 24 cache: pnpm - run: pnpm install --frozen-lockfile - - run: pnpm --filter @silk-effect/platform-webcontainer exec playwright install --with-deps chromium - - run: pnpm --filter @silk-effect/platform-webcontainer test:browser + - run: pnpm --filter @silk-lang/platform-webcontainer exec playwright install --with-deps chromium + - run: pnpm --filter @silk-lang/platform-webcontainer test:browser diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 354731fb..b80a2952 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -20,7 +20,7 @@ { "label": "Silk: Build language server", "type": "shell", - "command": "pnpm --filter @silk-effect/lsp run build", + "command": "pnpm --filter @silk-lang/lsp run build", "options": { "cwd": "${workspaceFolder}" }, @@ -56,7 +56,7 @@ { "label": "Silk: Watch language server", "type": "shell", - "command": "pnpm --filter @silk-effect/lsp run dev", + "command": "pnpm --filter @silk-lang/lsp run dev", "options": { "cwd": "${workspaceFolder}" }, diff --git a/AGENTS.md b/AGENTS.md index 8cc631b8..268836c4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -104,7 +104,7 @@ public actor, add its explicit package subpath export and prefer the deep import ```ts import * as Effect from 'effect/Effect' -import * as Target from '@silk-effect/llvm/Target' +import * as Target from '@silk-lang/llvm/Target' ``` Avoid a growing destructured import from the package barrel. diff --git a/README.md b/README.md index b265e886..952afbca 100644 --- a/README.md +++ b/README.md @@ -32,19 +32,19 @@ than compatibility commitments. ## Packages -- [`@silk-effect/compiler`](packages/compiler) — the stage-0 compiler, evaluator, LLVM backend, +- [`@silk-lang/compiler`](packages/compiler) — the stage-0 compiler, evaluator, LLVM backend, direct WebAssembly backend, embedded Silk standard library, and supported analysis facade. -- [`@silk-effect/compiler-cli`](packages/compiler-cli) — project initialization, checking, +- [`@silk-lang/compiler-cli`](packages/compiler-cli) — project initialization, checking, multi-target builds, native execution, formatting, and documentation generation through `silk`. -- [`@silk-effect/llvm`](packages/llvm) — Effect-native LLVM IR construction and deterministic text +- [`@silk-lang/llvm`](packages/llvm) — Effect-native LLVM IR construction and deterministic text and bitcode emission. -- [`@silk-effect/wasm`](packages/wasm) — deterministic WebAssembly module construction and binary +- [`@silk-lang/wasm`](packages/wasm) — deterministic WebAssembly module construction and binary emission. -- [`@silk-effect/language`](packages/language) — lexer-driven CodeMirror support and the Silk +- [`@silk-lang/language`](packages/language) — lexer-driven CodeMirror support and the Silk TextMate grammar consumed by Shiki and VS Code-compatible editors. -- [`@silk-effect/lsp`](packages/lsp) — project-aware diagnostics, hover, navigation, completion, +- [`@silk-lang/lsp`](packages/lsp) — project-aware diagnostics, hover, navigation, completion, inlay hints, symbols, and canonical formatting over stdio. -- [`@silk-effect/documentation`](packages/documentation) — CommonMark documentation interpretation, +- [`@silk-lang/documentation`](packages/documentation) — CommonMark documentation interpretation, semantic links, examples, highlighting, and deterministic documentation models. - [`silk-language`](packages/vscode) — the private Cursor/VS Code extension package. diff --git a/apps/docs/README.md b/apps/docs/README.md index 463e693c..7a4796b8 100644 --- a/apps/docs/README.md +++ b/apps/docs/README.md @@ -1,4 +1,4 @@ -# `@silk-effect/docs` +# `@silk-lang/docs` The documentation site for every package in this monorepo. Next.js + Fumadocs + Tailwind. diff --git a/apps/docs/app/editor/EditorEnvironment.ts b/apps/docs/app/editor/EditorEnvironment.ts index 713da4a6..43972c12 100644 --- a/apps/docs/app/editor/EditorEnvironment.ts +++ b/apps/docs/app/editor/EditorEnvironment.ts @@ -1,5 +1,5 @@ -import * as WebContainer from '@silk-effect/platform-webcontainer/WebContainer' -import * as WebContainerFileSystem from '@silk-effect/platform-webcontainer/WebContainerFileSystem' +import * as WebContainer from '@silk-lang/platform-webcontainer/WebContainer' +import * as WebContainerFileSystem from '@silk-lang/platform-webcontainer/WebContainerFileSystem' import * as FileSystem from 'effect/FileSystem' import * as Layer from 'effect/Layer' import { Atom } from 'effect/unstable/reactivity' diff --git a/apps/docs/app/editor/EditorTerminal.tsx b/apps/docs/app/editor/EditorTerminal.tsx index b7d1f3b8..42d45d1c 100644 --- a/apps/docs/app/editor/EditorTerminal.tsx +++ b/apps/docs/app/editor/EditorTerminal.tsx @@ -1,7 +1,7 @@ 'use client' import { useAtomSet, useAtomSubscribe, useAtomValue } from '@effect/atom-react' -import * as WebContainerError from '@silk-effect/platform-webcontainer/WebContainerError' +import * as WebContainerError from '@silk-lang/platform-webcontainer/WebContainerError' import * as Result from 'effect/Result' import { AsyncResult } from 'effect/unstable/reactivity' import { useCallback, useEffect, useRef, useState } from 'react' diff --git a/apps/docs/app/editor/TerminalRenderer.ts b/apps/docs/app/editor/TerminalRenderer.ts index 7059af10..765a683a 100644 --- a/apps/docs/app/editor/TerminalRenderer.ts +++ b/apps/docs/app/editor/TerminalRenderer.ts @@ -2,7 +2,7 @@ import { FitAddon } from '@xterm/addon-fit' import { Terminal } from '@xterm/xterm' import * as Data from 'effect/Data' import * as Result from 'effect/Result' -import type * as WebContainerProcess from '@silk-effect/platform-webcontainer/WebContainerProcess' +import type * as WebContainerProcess from '@silk-lang/platform-webcontainer/WebContainerProcess' interface Disposable { readonly dispose: () => void diff --git a/apps/docs/app/editor/TerminalSession.ts b/apps/docs/app/editor/TerminalSession.ts index 899ecca3..913036a3 100644 --- a/apps/docs/app/editor/TerminalSession.ts +++ b/apps/docs/app/editor/TerminalSession.ts @@ -1,6 +1,6 @@ -import * as WebContainer from '@silk-effect/platform-webcontainer/WebContainer' -import * as WebContainerError from '@silk-effect/platform-webcontainer/WebContainerError' -import * as WebContainerProcess from '@silk-effect/platform-webcontainer/WebContainerProcess' +import * as WebContainer from '@silk-lang/platform-webcontainer/WebContainer' +import * as WebContainerError from '@silk-lang/platform-webcontainer/WebContainerError' +import * as WebContainerProcess from '@silk-lang/platform-webcontainer/WebContainerProcess' import * as Effect from 'effect/Effect' import * as Queue from 'effect/Queue' import type * as Scope from 'effect/Scope' diff --git a/apps/docs/app/labs/editor.tsx b/apps/docs/app/labs/editor.tsx index afe10121..384eeb36 100644 --- a/apps/docs/app/labs/editor.tsx +++ b/apps/docs/app/labs/editor.tsx @@ -9,10 +9,10 @@ * variables in workbench.module.css. */ -import * as Analysis from '@silk-effect/compiler/Analysis' -import * as SnippetEditor from '@silk-effect/snippet/Editor' +import * as Analysis from '@silk-lang/compiler/Analysis' +import * as SnippetEditor from '@silk-lang/snippet/Editor' import { type MutableRefObject, useEffect, useRef } from 'react' -import type { Span } from '@silk-effect/inspector' +import type { Span } from '@silk-lang/inspector' const encoder = new TextEncoder() diff --git a/apps/docs/app/labs/facade-boundary.test.ts b/apps/docs/app/labs/facade-boundary.test.ts index 39156d41..ce3e1184 100644 --- a/apps/docs/app/labs/facade-boundary.test.ts +++ b/apps/docs/app/labs/facade-boundary.test.ts @@ -26,7 +26,7 @@ const sourceFiles = (directory: string): ReadonlyArray => const valueImportedNames = (source: string): ReadonlyArray => { const names: Array = [] const imports = source.matchAll( - /import\s+(type\s+)?\{([^}]*)\}\s+from\s+'@silk-effect\/compiler'/g, + /import\s+(type\s+)?\{([^}]*)\}\s+from\s+'@silk-lang\/compiler'/g, ) for (const match of imports) { if (match[1] !== undefined) continue diff --git a/apps/docs/app/labs/presets.test.ts b/apps/docs/app/labs/presets.test.ts index 1a419e55..9ce664e3 100644 --- a/apps/docs/app/labs/presets.test.ts +++ b/apps/docs/app/labs/presets.test.ts @@ -1,10 +1,10 @@ -import { Analysis } from '@silk-effect/compiler' +import { Analysis } from '@silk-lang/compiler' import { readFileSync } from 'node:fs' import * as Snapshot from './snapshot' import { describe, expect, it } from 'vitest' import { presets } from './presets' -import { viewById } from '@silk-effect/inspector' -import type { ViewContext } from '@silk-effect/inspector' +import { viewById } from '@silk-lang/inspector' +import type { ViewContext } from '@silk-lang/inspector' const encoder = new TextEncoder() diff --git a/apps/docs/app/labs/presets.ts b/apps/docs/app/labs/presets.ts index ccb116b7..4dfc340e 100644 --- a/apps/docs/app/labs/presets.ts +++ b/apps/docs/app/labs/presets.ts @@ -22,7 +22,7 @@ import { vectorFailedGrowthSource, vectorGrowthSource, } from './owned-sequence-presets' -import type { BootstrapEvaluation } from '@silk-effect/compiler' +import type { BootstrapEvaluation } from '@silk-lang/compiler' export interface Preset { readonly label: string diff --git a/apps/docs/app/labs/row/row.tsx b/apps/docs/app/labs/row/row.tsx index 2ab04762..b47dced0 100644 --- a/apps/docs/app/labs/row/row.tsx +++ b/apps/docs/app/labs/row/row.tsx @@ -3,14 +3,14 @@ /** * The React shell around the shared row grammar. * - * The row model itself lives in `@silk-effect/inspector` — rows are pure data with + * The row model itself lives in `@silk-lang/inspector` — rows are pure data with * module-qualified spans, so the same projections serve this workbench and the language server. * What stays here is rendering and activation: a row is pickable exactly when it carries a span, * and picking one moves the shared span cursor. */ -import type { RowModel, Span } from '@silk-effect/inspector' -import { cursorStateFor, spanLabel } from '@silk-effect/inspector' +import type { RowModel, Span } from '@silk-lang/inspector' +import { cursorStateFor, spanLabel } from '@silk-lang/inspector' import type { ReactNode } from 'react' import styles from './row.module.css' diff --git a/apps/docs/app/labs/snapshot.ts b/apps/docs/app/labs/snapshot.ts index f4c43326..dda23ee7 100644 --- a/apps/docs/app/labs/snapshot.ts +++ b/apps/docs/app/labs/snapshot.ts @@ -1,6 +1,6 @@ -import * as Analysis from '@silk-effect/compiler/Analysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' +import * as Analysis from '@silk-lang/compiler/Analysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' import * as Effect from 'effect/Effect' /** Builds one browser snapshot from immutable virtual sources at the application boundary. */ diff --git a/apps/docs/app/labs/state.test.ts b/apps/docs/app/labs/state.test.ts index 14c45903..aca13386 100644 --- a/apps/docs/app/labs/state.test.ts +++ b/apps/docs/app/labs/state.test.ts @@ -1,5 +1,5 @@ import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' +import * as Analysis from '@silk-lang/compiler/Analysis' import * as Result from 'effect/Result' import * as Schema from 'effect/Schema' import { Atom, AtomRegistry } from 'effect/unstable/reactivity' diff --git a/apps/docs/app/labs/state.ts b/apps/docs/app/labs/state.ts index ee21f2d4..68b613b6 100644 --- a/apps/docs/app/labs/state.ts +++ b/apps/docs/app/labs/state.ts @@ -10,10 +10,10 @@ * cached until a dependency changes, instead of per-component `useMemo` chains. */ -import { Analysis, MirVerification, ToolchainPlan } from '@silk-effect/compiler' -import type { BootstrapEvaluation, Target } from '@silk-effect/compiler' -import { diagnosticCounts, diagnosticEntries, hirContract } from '@silk-effect/inspector/ProjectSyntax' -import type { Span } from '@silk-effect/inspector/Row' +import { Analysis, MirVerification, ToolchainPlan } from '@silk-lang/compiler' +import type { BootstrapEvaluation, Target } from '@silk-lang/compiler' +import { diagnosticCounts, diagnosticEntries, hirContract } from '@silk-lang/inspector/ProjectSyntax' +import type { Span } from '@silk-lang/inspector/Row' import { KeyValueStore } from 'effect/unstable/persistence' import { AsyncResult, Atom } from 'effect/unstable/reactivity' import { presets } from './presets' diff --git a/apps/docs/app/labs/url-state.ts b/apps/docs/app/labs/url-state.ts index 2caa68c3..7f72deaf 100644 --- a/apps/docs/app/labs/url-state.ts +++ b/apps/docs/app/labs/url-state.ts @@ -11,7 +11,7 @@ */ import type { SerializedDockview } from 'dockview' -import { viewById } from '@silk-effect/inspector/Registry' +import { viewById } from '@silk-lang/inspector/Registry' export const sourceParam = 's' export const layoutParam = 'l' diff --git a/apps/docs/app/labs/workbench.tsx b/apps/docs/app/labs/workbench.tsx index 0799fe64..64e0998e 100644 --- a/apps/docs/app/labs/workbench.tsx +++ b/apps/docs/app/labs/workbench.tsx @@ -20,15 +20,15 @@ */ import { RegistryProvider, useAtom, useAtomSet, useAtomValue } from '@effect/atom-react' -import { Analysis, ToolchainPlan } from '@silk-effect/compiler' -import type { Target } from '@silk-effect/compiler' +import { Analysis, ToolchainPlan } from '@silk-lang/compiler' +import type { Target } from '@silk-lang/compiler' import { type ViewContext, type ViewId, siblingsOf, viewById, views, -} from '@silk-effect/inspector/Registry' +} from '@silk-lang/inspector/Registry' import type { DockviewApi, DockviewReadyEvent, IDockviewPanelProps } from 'dockview-react' import { DockviewReact } from 'dockview-react' import { Atom } from 'effect/unstable/reactivity' diff --git a/apps/docs/app/labs/workspaces.ts b/apps/docs/app/labs/workspaces.ts index 1f5528bb..2f287b11 100644 --- a/apps/docs/app/labs/workspaces.ts +++ b/apps/docs/app/labs/workspaces.ts @@ -10,7 +10,7 @@ * than replacing it. */ -import { viewIds } from '@silk-effect/inspector/Registry' +import { viewIds } from '@silk-lang/inspector/Registry' import * as Schema from 'effect/Schema' /** A pane's slot in the seeded two-row grid. */ diff --git a/apps/docs/lib/source.ts b/apps/docs/lib/source.ts index e37e45b2..3c5e0c04 100644 --- a/apps/docs/lib/source.ts +++ b/apps/docs/lib/source.ts @@ -1,7 +1,7 @@ import { getSlugs, loader } from 'fumadocs-core/source'; import { applyMdxPreset, frontmatterSchema } from 'fumadocs-mdx/config'; import { defineDocs } from 'fumadocs-mdx/macro'; -import { TextMate } from '@silk-effect/language'; +import { TextMate } from '@silk-lang/language'; import { remarkH1Title } from './remark-h1-title.mjs'; /** @@ -56,8 +56,8 @@ const docs = defineDocs({ /** Sidebar label for each top-level content folder, keyed by directory name. */ const folderTitles: Record = { - language: '@silk-effect/language', - llvm: '@silk-effect/llvm', + language: '@silk-lang/language', + llvm: '@silk-lang/llvm', }; export const source = loader({ diff --git a/apps/docs/package.json b/apps/docs/package.json index f638455f..2b40f54d 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/docs", + "name": "@silk-lang/docs", "version": "0.0.0", "private": true, "type": "module", @@ -20,12 +20,12 @@ "@codemirror/view": "^6.43.8", "@effect/atom-react": "4.0.0-beta.102", "@lezer/highlight": "^1.2.3", - "@silk-effect/compiler": "workspace:*", - "@silk-effect/inspector": "workspace:*", - "@silk-effect/language": "workspace:*", - "@silk-effect/lsp": "workspace:*", - "@silk-effect/platform-webcontainer": "workspace:*", - "@silk-effect/snippet": "workspace:*", + "@silk-lang/compiler": "workspace:*", + "@silk-lang/inspector": "workspace:*", + "@silk-lang/language": "workspace:*", + "@silk-lang/lsp": "workspace:*", + "@silk-lang/platform-webcontainer": "workspace:*", + "@silk-lang/snippet": "workspace:*", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "dockview": "^7.0.4", @@ -41,9 +41,9 @@ }, "devDependencies": { "@effect/vitest": "catalog:", - "@silk-effect/formatter": "workspace:*", - "@silk-effect/llvm": "workspace:*", - "@silk-effect/wasm": "workspace:*", + "@silk-lang/formatter": "workspace:*", + "@silk-lang/llvm": "workspace:*", + "@silk-lang/wasm": "workspace:*", "@tailwindcss/postcss": "^4.3.3", "@types/mdast": "^4.0.4", "@types/mdx": "^2.0.14", diff --git a/apps/docs/test/editor-environment.test.ts b/apps/docs/test/editor-environment.test.ts index 59112355..592e3fe5 100644 --- a/apps/docs/test/editor-environment.test.ts +++ b/apps/docs/test/editor-environment.test.ts @@ -1,6 +1,6 @@ import { assert, it } from '@effect/vitest' -import * as WebContainer from '@silk-effect/platform-webcontainer/WebContainer' -import * as WebContainerProcess from '@silk-effect/platform-webcontainer/WebContainerProcess' +import * as WebContainer from '@silk-lang/platform-webcontainer/WebContainer' +import * as WebContainerProcess from '@silk-lang/platform-webcontainer/WebContainerProcess' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' import * as Layer from 'effect/Layer' diff --git a/apps/docs/test/lab-preset-formatting.test.ts b/apps/docs/test/lab-preset-formatting.test.ts index 39d8f10a..379332e4 100644 --- a/apps/docs/test/lab-preset-formatting.test.ts +++ b/apps/docs/test/lab-preset-formatting.test.ts @@ -1,8 +1,8 @@ import { assert, it } from '@effect/vitest' -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as Parser from '@silk-effect/compiler/Parser' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as Formatter from '@silk-effect/formatter/Formatter' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as Parser from '@silk-lang/compiler/Parser' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as Formatter from '@silk-lang/formatter/Formatter' import * as Effect from 'effect/Effect' import * as Result from 'effect/Result' import { presets } from '../app/labs/presets' diff --git a/apps/docs/test/terminal-session.test.ts b/apps/docs/test/terminal-session.test.ts index 230c6f30..e74f79ec 100644 --- a/apps/docs/test/terminal-session.test.ts +++ b/apps/docs/test/terminal-session.test.ts @@ -1,7 +1,7 @@ import { assert, it } from '@effect/vitest' -import * as WebContainer from '@silk-effect/platform-webcontainer/WebContainer' -import * as WebContainerError from '@silk-effect/platform-webcontainer/WebContainerError' -import * as WebContainerProcess from '@silk-effect/platform-webcontainer/WebContainerProcess' +import * as WebContainer from '@silk-lang/platform-webcontainer/WebContainer' +import * as WebContainerError from '@silk-lang/platform-webcontainer/WebContainerError' +import * as WebContainerProcess from '@silk-lang/platform-webcontainer/WebContainerProcess' import * as Deferred from 'effect/Deferred' import * as Effect from 'effect/Effect' import * as Sink from 'effect/Sink' diff --git a/apps/docs/vercel.json b/apps/docs/vercel.json index d79f4210..9577e667 100644 --- a/apps/docs/vercel.json +++ b/apps/docs/vercel.json @@ -2,6 +2,6 @@ "$schema": "https://openapi.vercel.sh/vercel.json", "framework": "nextjs", "installCommand": "cd ../.. && pnpm install --frozen-lockfile", - "buildCommand": "cd ../.. && pnpm turbo run build --filter=@silk-effect/docs", + "buildCommand": "cd ../.. && pnpm turbo run build --filter=@silk-lang/docs", "devCommand": "pnpm dev" } diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 196fc6a5..319e8b2d 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -4,7 +4,7 @@ Releases use Changesets and the `publish.yml` GitHub Actions workflow. 1. Add a changeset with `pnpm changeset`. 2. Merge the Changesets version pull request. -3. The release workflow validates, packages, and publishes `@silk-effect/llvm`. +3. The release workflow validates, packages, and publishes `@silk-lang/llvm`. Before the first release, configure `publish.yml` as the npm trusted publisher for the package. The workflow rejects pnpm's `Skipped OIDC` fallback and verifies trusted-publisher provenance in the diff --git a/examples/algorithms/README.md b/examples/algorithms/README.md index dfba0d5c..487ab98a 100644 --- a/examples/algorithms/README.md +++ b/examples/algorithms/README.md @@ -14,5 +14,5 @@ Pure entries use their deterministic fingerprint as the process result. Effectfu `()`: their manifest records process success separately from the algorithm result that the program checks before returning, while unhandled reportable failures become runtime execution errors. -Run the suite with `pnpm --filter @silk-effect/compiler exec vitest run +Run the suite with `pnpm --filter @silk-lang/compiler exec vitest run test/AlgorithmExamples.test.ts`. diff --git a/examples/tiny-language/README.md b/examples/tiny-language/README.md index c22a568b..cccd688f 100644 --- a/examples/tiny-language/README.md +++ b/examples/tiny-language/README.md @@ -2,10 +2,10 @@ This directory is the completed consumer-shaped project developed by the [Build Tiny tutorial](../../packages/llvm/docs/tutorials/tiny-language/01-meet-tiny.md). -It imports only public `@silk-effect/llvm/*` package subpaths and is intentionally outside the +It imports only public `@silk-lang/llvm/*` package subpaths and is intentionally outside the repository's pnpm workspace. -After `@silk-effect/llvm` is published, install and verify it with: +After `@silk-lang/llvm` is published, install and verify it with: ```sh pnpm install @@ -22,6 +22,6 @@ diagnostics to stderr; it never invokes Clang itself. Until publication, repository maintainers validate this project from a clean temporary directory. Build and pack `packages/llvm`, copy this example into the temporary directory, delete the -unpublished `@silk-effect/llvm` dependency from that temporary `package.json`, and then install the -tarball with `pnpm add /absolute/path/to/silk-effect-llvm-0.0.0.tgz --save-exact`. Deleting the npm +unpublished `@silk-lang/llvm` dependency from that temporary `package.json`, and then install the +tarball with `pnpm add /absolute/path/to/silk-lang-llvm-0.0.0.tgz --save-exact`. Deleting the npm declaration first prevents pnpm from trying to resolve the unpublished package before the tarball. diff --git a/examples/tiny-language/package.json b/examples/tiny-language/package.json index cd72d183..4bac8cb9 100644 --- a/examples/tiny-language/package.json +++ b/examples/tiny-language/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@effect/platform-node": "4.0.0-beta.102", - "@silk-effect/llvm": "^0.1.0", + "@silk-lang/llvm": "^0.1.0", "effect": "4.0.0-beta.102" }, "devDependencies": { diff --git a/examples/tiny-language/src/Cli.ts b/examples/tiny-language/src/Cli.ts index 08b20601..6f988cf3 100644 --- a/examples/tiny-language/src/Cli.ts +++ b/examples/tiny-language/src/Cli.ts @@ -1,5 +1,5 @@ import { NodeRuntime, NodeServices } from '@effect/platform-node' -import * as LlvmError from '@silk-effect/llvm/LlvmError' +import * as LlvmError from '@silk-lang/llvm/LlvmError' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' import * as Stdio from 'effect/Stdio' diff --git a/examples/tiny-language/src/Compiler.ts b/examples/tiny-language/src/Compiler.ts index 73a543ca..13dd5f34 100644 --- a/examples/tiny-language/src/Compiler.ts +++ b/examples/tiny-language/src/Compiler.ts @@ -1,13 +1,13 @@ -import * as Bitcode from '@silk-effect/llvm/Bitcode' -import * as Block from '@silk-effect/llvm/Block' -import * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as IrText from '@silk-effect/llvm/IrText' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import * as Type from '@silk-effect/llvm/Type' -import * as Value from '@silk-effect/llvm/Value' +import * as Bitcode from '@silk-lang/llvm/Bitcode' +import * as Block from '@silk-lang/llvm/Block' +import * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as IrText from '@silk-lang/llvm/IrText' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import * as Type from '@silk-lang/llvm/Type' +import * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as Diagnostic from './Diagnostic.js' import type * as Expression from './Expression.js' diff --git a/examples/tiny-language/test/LlvmFailure.test.ts b/examples/tiny-language/test/LlvmFailure.test.ts index 0c587082..50fc6365 100644 --- a/examples/tiny-language/test/LlvmFailure.test.ts +++ b/examples/tiny-language/test/LlvmFailure.test.ts @@ -1,11 +1,11 @@ import { assert, it } from '@effect/vitest' -import * as Block from '@silk-effect/llvm/Block' -import * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as IrText from '@silk-effect/llvm/IrText' -import * as Type from '@silk-effect/llvm/Type' +import * as Block from '@silk-lang/llvm/Block' +import * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as IrText from '@silk-lang/llvm/IrText' +import * as Type from '@silk-lang/llvm/Type' import * as Effect from 'effect/Effect' it.effect('rolls back an unterminated body and permits a clean retry', () => diff --git a/openspec/changes/add-seeded-random-service/tasks.md b/openspec/changes/add-seeded-random-service/tasks.md index ac1684f1..d32fb3df 100644 --- a/openspec/changes/add-seeded-random-service/tasks.md +++ b/openspec/changes/add-seeded-random-service/tasks.md @@ -1,7 +1,7 @@ ## 1. Canonical Random Surface - [x] 1.1 Add documented canonical `packages/compiler/stdlib/silk/random.silk` declarations for the exclusive `Random.nextU64` service operation, its public wrapper, the non-`Copy` `Xoshiro256StarStar` provider, and `seeded`; verify the compiler resolves and analyzes a minimal import with no diagnostics. -- [x] 1.2 Register `silk/random` as a portable manifest module with `Random` as its namespace and `Xoshiro256StarStar` as an alias; run `pnpm --filter @silk-effect/compiler stdlib:generate` and verify `pnpm --filter @silk-effect/compiler stdlib:check` succeeds. +- [x] 1.2 Register `silk/random` as a portable manifest module with `Random` as its namespace and `Xoshiro256StarStar` as an alias; run `pnpm --filter @silk-lang/compiler stdlib:generate` and verify `pnpm --filter @silk-lang/compiler stdlib:check` succeeds. ## 2. Deterministic Provider @@ -19,7 +19,7 @@ - [x] 4.1 Add one fixed-seed fingerprint program to the existing evaluator/direct-Wasm parity coverage and to `packages/compiler/test/support/corpus.ts`; verify the targeted parity tests and existing native differential return the same fingerprint without a feature-local native compile loop. - [x] 4.2 Extend existing standard-library namespace, source-resolution, and privilege coverage for `silk/random`; verify navigation reaches canonical `.silk` declarations, copied renamed source behaves equivalently, and intrinsic inventory and target imports remain unchanged. -- [x] 4.3 Complete module, service, provider, constructor, and operation doc comments with examples and explicit non-cryptographic warnings; run `pnpm --filter @silk-effect/compiler documentation:generate`, then verify `documentation:policy`, `documentation:check`, and `documentation:examples` succeed. +- [x] 4.3 Complete module, service, provider, constructor, and operation doc comments with examples and explicit non-cryptographic warnings; run `pnpm --filter @silk-lang/compiler documentation:generate`, then verify `documentation:policy`, `documentation:check`, and `documentation:examples` succeed. ## 5. Repository Verification diff --git a/openspec/changes/archive/2026-08-04-add-wasm-builder-core/design.md b/openspec/changes/archive/2026-08-04-add-wasm-builder-core/design.md index 15882e05..61457858 100644 --- a/openspec/changes/archive/2026-08-04-add-wasm-builder-core/design.md +++ b/openspec/changes/archive/2026-08-04-add-wasm-builder-core/design.md @@ -2,7 +2,7 @@ ## Context -The workspace already ships `@silk-effect/llvm`, whose conventions this package inherits at the +The workspace already ships `@silk-lang/llvm`, whose conventions this package inherits at the repository level (Effect architecture rules, subpath exports, `@effect/vitest` testing, fixture oracles, changesets). Its internal architecture is *not* inherited: WebAssembly's module model — flat sections, index spaces, structured control flow, a closed instruction set — permits a diff --git a/openspec/changes/archive/2026-08-04-add-wasm-builder-core/proposal.md b/openspec/changes/archive/2026-08-04-add-wasm-builder-core/proposal.md index ee666fe6..334f7339 100644 --- a/openspec/changes/archive/2026-08-04-add-wasm-builder-core/proposal.md +++ b/openspec/changes/archive/2026-08-04-add-wasm-builder-core/proposal.md @@ -1,4 +1,4 @@ -# Add `@silk-effect/wasm` core builder +# Add `@silk-lang/wasm` core builder ## Why @@ -9,12 +9,12 @@ a future compiler backend — a validated, deterministic way to produce WebAssem native tooling at runtime. This change is deliberately independent of the bootstrap-language roadmap: it is a standalone -library in the same sense `@silk-effect/llvm` is, sharing its purpose (build module state, emit two +library in the same sense `@silk-lang/llvm` is, sharing its purpose (build module state, emit two representations) but not its architecture. The design is WebAssembly-native. ## What Changes -- New package `@silk-effect/wasm` with subpath-exported actor modules, Effect-native errors, and no +- New package `@silk-lang/wasm` with subpath-exported actor modules, Effect-native errors, and no runtime dependency on external tools, the filesystem, or process execution. - Instructions are plain immutable data (a discriminated `Instr` union); function bodies are `ReadonlyArray` committed in one operation. Effects exist only at commit boundaries. @@ -66,6 +66,6 @@ None — the package is new and touches no existing capability. ## Impact - New workspace package `packages/wasm` wired into pnpm workspace, turbo, CI, and changesets. -- No changes to `@silk-effect/llvm`, `@silk-effect/compiler`, or any existing package. +- No changes to `@silk-lang/llvm`, `@silk-lang/compiler`, or any existing package. - New dev-time-only dependency on a pinned `wasm-tools` binary for fixture generation and parity verification; runtime remains dependency-free apart from `effect`. diff --git a/openspec/changes/archive/2026-08-04-add-wasm-builder-core/tasks.md b/openspec/changes/archive/2026-08-04-add-wasm-builder-core/tasks.md index d46e0182..c29d9296 100644 --- a/openspec/changes/archive/2026-08-04-add-wasm-builder-core/tasks.md +++ b/openspec/changes/archive/2026-08-04-add-wasm-builder-core/tasks.md @@ -72,4 +72,4 @@ - [x] 7.1 README with the add-two-numbers example (build → validate → both outputs) and scope statement listing deferred features and the Chrome-baseline destination - [x] 7.2 JSDoc on all public modules per repository documentation conventions -- [x] 7.3 Changeset for the initial `@silk-effect/wasm` release +- [x] 7.3 Changeset for the initial `@silk-lang/wasm` release diff --git a/openspec/changes/archive/2026-08-04-add-wasm-bulk-instruction-families/proposal.md b/openspec/changes/archive/2026-08-04-add-wasm-bulk-instruction-families/proposal.md index 73a3d127..184a58a5 100644 --- a/openspec/changes/archive/2026-08-04-add-wasm-bulk-instruction-families/proposal.md +++ b/openspec/changes/archive/2026-08-04-add-wasm-bulk-instruction-families/proposal.md @@ -1,4 +1,4 @@ -# Add SIMD, atomics, and 64-bit memories to `@silk-effect/wasm` +# Add SIMD, atomics, and 64-bit memories to `@silk-lang/wasm` ## Why diff --git a/openspec/changes/archive/2026-08-04-add-wasm-exceptions-branch-hints/design.md b/openspec/changes/archive/2026-08-04-add-wasm-exceptions-branch-hints/design.md index e2757261..c902aa51 100644 --- a/openspec/changes/archive/2026-08-04-add-wasm-exceptions-branch-hints/design.md +++ b/openspec/changes/archive/2026-08-04-add-wasm-exceptions-branch-hints/design.md @@ -2,7 +2,7 @@ ## Context -Third change in the `@silk-effect/wasm` series (see the archived core and bulk-instruction +Third change in the `@silk-lang/wasm` series (see the archived core and bulk-instruction changes). The extension points this change relies on are established: `ValType` is a tagged union (`exnref` slots in as a `RefType` variant), section framing is generic (tag section is id 13), all instruction dispatchers carry `satisfies never` exhaustiveness guards, and byte diff --git a/openspec/changes/archive/2026-08-04-add-wasm-exceptions-branch-hints/proposal.md b/openspec/changes/archive/2026-08-04-add-wasm-exceptions-branch-hints/proposal.md index 04c4658a..66ffdd8d 100644 --- a/openspec/changes/archive/2026-08-04-add-wasm-exceptions-branch-hints/proposal.md +++ b/openspec/changes/archive/2026-08-04-add-wasm-exceptions-branch-hints/proposal.md @@ -1,4 +1,4 @@ -# Add exception handling and branch hinting to `@silk-effect/wasm` +# Add exception handling and branch hinting to `@silk-lang/wasm` ## Why diff --git a/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/proposal.md b/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/proposal.md index d8133259..2f3c710b 100644 --- a/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/proposal.md +++ b/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/proposal.md @@ -1,6 +1,6 @@ ## Why -`@silk-effect/llvm` is architecturally Effect-native, but several public and internal paths still bypass the intended typed failure, lifecycle, composition, and authoring conventions. The repository guidance also reflects an older version of the Effect patterns policy, so the implementation and its documented standard should be aligned before the package API stabilizes. +`@silk-lang/llvm` is architecturally Effect-native, but several public and internal paths still bypass the intended typed failure, lifecycle, composition, and authoring conventions. The repository guidance also reflects an older version of the Effect patterns policy, so the implementation and its documented standard should be aligned before the package API stabilizes. ## What Changes @@ -28,7 +28,7 @@ None. This repository does not yet contain main OpenSpec capability specificatio ## Impact -- Public API: `@silk-effect/llvm/SilkError` and `SilkError` are replaced by `@silk-effect/llvm/LlvmError` and `LlvmError`; immutable transformation functions gain pipeable overloads. +- Public API: `@silk-lang/llvm/SilkError` and `SilkError` are replaced by `@silk-lang/llvm/LlvmError` and `LlvmError`; immutable transformation functions gain pipeable overloads. - Implementation: builder and function-body state transitions, numeric normalization, bitcode encoding helpers, intrinsic recipes, and internal instruction types are affected. - Tests and tooling: `@effect/vitest` is added for package tests; the shared `ManagedRuntime` test harnesses are removed. - Documentation and release: actor references, examples, package exports, changelog/changeset metadata, repository conventions, and release-candidate validation must reflect the new contract. diff --git a/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/specs/llvm-error-model/spec.md b/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/specs/llvm-error-model/spec.md index 8a74ae5b..fd6e7680 100644 --- a/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/specs/llvm-error-model/spec.md +++ b/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/specs/llvm-error-model/spec.md @@ -5,7 +5,7 @@ Defines an LLVM-specific typed failure contract so callers can recover from inva ## ADDED Requirements ### Requirement: LLVM-specific public error identity -The package SHALL expose expected LLVM operation failures as a yieldable `LlvmError` tagged with `LlvmError`, and SHALL export that contract from `@silk-effect/llvm/LlvmError` and the package root. The superseded `SilkError` class, tag, actor, and package subpath SHALL be removed as a breaking API migration. +The package SHALL expose expected LLVM operation failures as a yieldable `LlvmError` tagged with `LlvmError`, and SHALL export that contract from `@silk-lang/llvm/LlvmError` and the package root. The superseded `SilkError` class, tag, actor, and package subpath SHALL be removed as a breaking API migration. #### Scenario: Caller handles an LLVM failure - **WHEN** a public LLVM operation rejects caller input @@ -13,7 +13,7 @@ The package SHALL expose expected LLVM operation failures as a yieldable `LlvmEr - **AND** the caller can recover with `catchTag('LlvmError', ...)` #### Scenario: Caller imports the error contract -- **WHEN** a consumer imports the package root or `@silk-effect/llvm/LlvmError` +- **WHEN** a consumer imports the package root or `@silk-lang/llvm/LlvmError` - **THEN** the exported error class is named `LlvmError` - **AND** no `SilkError` public export or subpath remains diff --git a/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/tasks.md b/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/tasks.md index 19cfbaf7..ac150a96 100644 --- a/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/tasks.md +++ b/openspec/changes/archive/2026-08-04-align-llvm-effect-patterns/tasks.md @@ -1,7 +1,7 @@ ## 1. Repository Policy and Effect-Native Tests - [x] 1.1 Update `AGENTS.md` so the current Effect patterns skill governs error semantics, internal/public function authoring, scoped lifecycles, dual APIs, and `@effect/vitest`; remove the superseded `ManagedRuntime` and generic `SilkError` rules. -- [x] 1.2 Add the compatible `@effect/vitest` development dependency to `@silk-effect/llvm` and update the workspace lockfile. +- [x] 1.2 Add the compatible `@effect/vitest` development dependency to `@silk-lang/llvm` and update the workspace lockfile. - [x] 1.3 Convert pure byte-string and bitstream cases to ordinary `@effect/vitest` tests with `assert`, without manufacturing Effects solely to run assertions. - [x] 1.4 Convert all Effect-returning package tests to `it.effect`, use `it.layer` only for genuinely shared service graphs, replace `expect` with `assert`, and remove every test `ManagedRuntime`. - [x] 1.5 Run `pnpm typecheck`, `pnpm exec biome check .`, and `pnpm test`; resolve all hygiene-tier failures before proceeding. diff --git a/openspec/changes/archive/2026-08-04-analyze-first-bootstrap-function/design.md b/openspec/changes/archive/2026-08-04-analyze-first-bootstrap-function/design.md index c051b804..e9e3e810 100644 --- a/openspec/changes/archive/2026-08-04-analyze-first-bootstrap-function/design.md +++ b/openspec/changes/archive/2026-08-04-analyze-first-bootstrap-function/design.md @@ -1,6 +1,6 @@ ## Context -`@silk-effect/compiler` currently ends at `Parser.ParseResult`, which retains the lexical result, +`@silk-lang/compiler` currently ends at `Parser.ParseResult`, which retains the lexical result, a closed lossless concrete tree, and parser diagnostics. The grammar guarantees one recovered function region, one return-type region, and one decimal-integer-expression region even when their required tokens are missing. See `proposal.md` for motivation and the delta specs for observable diff --git a/openspec/changes/archive/2026-08-04-analyze-first-bootstrap-function/proposal.md b/openspec/changes/archive/2026-08-04-analyze-first-bootstrap-function/proposal.md index 8c34e3d6..6ff0e3ad 100644 --- a/openspec/changes/archive/2026-08-04-analyze-first-bootstrap-function/proposal.md +++ b/openspec/changes/archive/2026-08-04-analyze-first-bootstrap-function/proposal.md @@ -32,7 +32,7 @@ an AST, HIR, or generalized analysis framework. ## Impact -- Adds a narrow semantic-analysis boundary and public actor namespaces to `@silk-effect/compiler`. +- Adds a narrow semantic-analysis boundary and public actor namespaces to `@silk-lang/compiler`. - Adds focused valid and malformed semantic fixtures and packed-export validation. - Updates the existing docs lab client bundle and presentation without adding persistence, network requests, or runtime dependencies. diff --git a/openspec/changes/archive/2026-08-04-complete-llvm-builder-parity/proposal.md b/openspec/changes/archive/2026-08-04-complete-llvm-builder-parity/proposal.md index c4035a24..f1dd10e7 100644 --- a/openspec/changes/archive/2026-08-04-complete-llvm-builder-parity/proposal.md +++ b/openspec/changes/archive/2026-08-04-complete-llvm-builder-parity/proposal.md @@ -23,4 +23,4 @@ None. ## Impact -This touches the complete `@silk-effect/llvm` package, its tests, README, changelog, package exports, release-candidate validation, and provenance documentation. It depends on all five preceding LLVM changes and does not claim parity with behavior that the pinned Zig builder itself marks unsupported or incomplete. +This touches the complete `@silk-lang/llvm` package, its tests, README, changelog, package exports, release-candidate validation, and provenance documentation. It depends on all five preceding LLVM changes and does not claim parity with behavior that the pinned Zig builder itself marks unsupported or incomplete. diff --git a/openspec/changes/archive/2026-08-04-complete-llvm-builder-parity/specs/llvm-builder-parity/spec.md b/openspec/changes/archive/2026-08-04-complete-llvm-builder-parity/specs/llvm-builder-parity/spec.md index 5a8303aa..f365906b 100644 --- a/openspec/changes/archive/2026-08-04-complete-llvm-builder-parity/specs/llvm-builder-parity/spec.md +++ b/openspec/changes/archive/2026-08-04-complete-llvm-builder-parity/specs/llvm-builder-parity/spec.md @@ -50,7 +50,7 @@ The system SHALL maintain benchmark evidence for any imperative or untraced enco The system SHALL publish every public actor through an explicit root namespace and package subpath export, include usage and compatibility documentation, preserve required upstream notices, and pass the repository release-candidate validation. #### Scenario: Validate the packed package -- **WHEN** the release-candidate suite packs and imports `@silk-effect/llvm` +- **WHEN** the release-candidate suite packs and imports `@silk-lang/llvm` - **THEN** all documented root and deep imports resolve as self-contained ESM without source files or undeclared runtime dependencies ### Requirement: Reproducible upstream updates diff --git a/openspec/changes/archive/2026-08-04-establish-bootstrap-source-and-lexer/design.md b/openspec/changes/archive/2026-08-04-establish-bootstrap-source-and-lexer/design.md index a3fd98a8..86bd9f67 100644 --- a/openspec/changes/archive/2026-08-04-establish-bootstrap-source-and-lexer/design.md +++ b/openspec/changes/archive/2026-08-04-establish-bootstrap-source-and-lexer/design.md @@ -1,6 +1,6 @@ ## Context -See `proposal.md` for motivation. `@silk-effect/llvm` and the Tiny-language tutorial exist, but no +See `proposal.md` for motivation. `@silk-lang/llvm` and the Tiny-language tutorial exist, but no package owns Silk source text or tokenization. The accepted compiler architecture requires later syntax artifacts to retain exact source bytes, trivia, stable identities, and byte spans, so the first implementation should establish only that substrate. @@ -24,7 +24,7 @@ first implementation should establish only that substrate. ## Decisions -### Create a narrow `@silk-effect/compiler` package +### Create a narrow `@silk-lang/compiler` package Create `packages/compiler` with public `SourceFile`, `SourceSpan`, `Token`, `LexicalDiagnostic`, and `Lexer` actors. The explicit package barrel re-exports those actors as namespaces, and each public diff --git a/openspec/changes/archive/2026-08-04-establish-bootstrap-source-and-lexer/proposal.md b/openspec/changes/archive/2026-08-04-establish-bootstrap-source-and-lexer/proposal.md index 60a2c892..7810c07a 100644 --- a/openspec/changes/archive/2026-08-04-establish-bootstrap-source-and-lexer/proposal.md +++ b/openspec/changes/archive/2026-08-04-establish-bootstrap-source-and-lexer/proposal.md @@ -7,7 +7,7 @@ deterministic token stream with precise lexical diagnostics. ## What Changes -- Add the initial `@silk-effect/compiler` package and only the public actors needed to represent a +- Add the initial `@silk-lang/compiler` package and only the public actors needed to represent a source file, byte span, token, lexical diagnostic, and lexing result. - Preserve the exact bytes and explicit logical identity of one in-memory Silk source file. - Lex the subset needed to spell the first future parser fixture: whitespace, line comments, `pub`, `fn`, @@ -36,7 +36,7 @@ None. This change does not alter the existing LLVM capabilities. ## Impact -- Adds `packages/compiler` as `@silk-effect/compiler` with strict TypeScript, ESM, explicit package +- Adds `packages/compiler` as `@silk-lang/compiler` with strict TypeScript, ESM, explicit package subpaths, and `@effect/vitest` coverage. - Adds source and lexer fixtures under the compiler package. - Adds the compiler package to workspace build, typecheck, test, and packed-package validation. diff --git a/openspec/changes/archive/2026-08-04-establish-llvm-builder-foundation/proposal.md b/openspec/changes/archive/2026-08-04-establish-llvm-builder-foundation/proposal.md index b90a6e94..1a0f120b 100644 --- a/openspec/changes/archive/2026-08-04-establish-llvm-builder-foundation/proposal.md +++ b/openspec/changes/archive/2026-08-04-establish-llvm-builder-foundation/proposal.md @@ -1,6 +1,6 @@ ## Why -`@silk-effect/llvm` is currently blank, so the port needs a stable Effect-native foundation before LLVM concepts are added. Establishing the builder lifecycle, binary representation, upstream baseline, and differential test oracle first prevents later changes from inheriting accidental Zig-shaped APIs or unverifiable bit encodings. +`@silk-lang/llvm` is currently blank, so the port needs a stable Effect-native foundation before LLVM concepts are added. Establishing the builder lifecycle, binary representation, upstream baseline, and differential test oracle first prevents later changes from inheriting accidental Zig-shaped APIs or unverifiable bit encodings. ## What Changes diff --git a/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/design.md b/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/design.md index 16a6eba0..922dddbc 100644 --- a/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/design.md +++ b/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/design.md @@ -1,6 +1,6 @@ ## Context -`@silk-effect/compiler` currently ends at an immutable `Lexer.LexicalResult`: exact source bytes, +`@silk-lang/compiler` currently ends at an immutable `Lexer.LexicalResult`: exact source bytes, owner-qualified spans, explicit trivia and invalid tokens, stable lexical diagnostics, and one EOF token. The docs app is a Next.js/Fumadocs application whose `/docs` layout can also host direct Next routes that are not part of the content tree. See `proposal.md` for motivation and the two @@ -115,7 +115,7 @@ encodes that text as UTF-8 under one stable demo source identity, invokes `Sourc - lexical and parser diagnostic lists. Recomputation is synchronous and local on each edit. The page does not call an API route, local -storage, filesystem, or compiler service. `@silk-effect/compiler` becomes a workspace runtime +storage, filesystem, or compiler service. `@silk-lang/compiler` becomes a workspace runtime dependency of the docs app because its code participates in the client bundle. An MDX content page was rejected because it would enter the content/search tree and need custom diff --git a/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/proposal.md b/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/proposal.md index e8c929eb..78b26561 100644 --- a/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/proposal.md +++ b/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/proposal.md @@ -33,10 +33,10 @@ None. ## Impact -- Extends `@silk-effect/compiler` with explicit syntax, parser-diagnostic, and parser actors and +- Extends `@silk-lang/compiler` with explicit syntax, parser-diagnostic, and parser actors and their package subpath exports. - Adds parser fixtures and malformed-input coverage alongside the existing source and lexer tests. -- Adds `@silk-effect/compiler` as a workspace dependency of the docs app and introduces a small +- Adds `@silk-lang/compiler` as a workspace dependency of the docs app and introduces a small client-side inspector at a stable direct URL without adding it to normal navigation. - Does not add general expressions, parameters, multiple declarations, semantic AST lowering, name or type analysis, HIR, MIR, LLVM lowering, filesystem loading, or compilation commands. diff --git a/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/tasks.md b/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/tasks.md index 1d0bdba5..398724a5 100644 --- a/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/tasks.md +++ b/openspec/changes/archive/2026-08-04-parse-first-bootstrap-function/tasks.md @@ -39,7 +39,7 @@ ## 4. Hidden Docs Inspector -- [x] 4.1 Add `@silk-effect/compiler` as a docs workspace runtime dependency and create the direct +- [x] 4.1 Add `@silk-lang/compiler` as a docs workspace runtime dependency and create the direct `/docs/labs/syntax-inspector` route outside the Fumadocs content and search trees. - [x] 4.2 Build the client-side inspector around in-memory text, UTF-8 source creation, lexing, and parsing with the accepted fixture restored on each page load. diff --git a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/design.md b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/design.md index 0cc56b11..9158a384 100644 --- a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/design.md +++ b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/design.md @@ -28,7 +28,7 @@ The opening page will contain the confirmed Tiny program, output contract, time ### Show one tool-ownership pipeline diagram plus text equivalent -The diagram will distinguish Tiny, `@silk-effect/llvm`, Clang, and the operating system. A purely chronological list would not make ownership boundaries as clear. +The diagram will distinguish Tiny, `@silk-lang/llvm`, Clang, and the operating system. A purely chronological list would not make ownership boundaries as clear. ### Keep the playground strictly optional diff --git a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/proposal.md b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/proposal.md index e450f62c..d5d92a6a 100644 --- a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/proposal.md +++ b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/proposal.md @@ -7,7 +7,7 @@ The existing LLVM tutorial begins at lowering, so a compiler-curious learner doe - Add the opening lesson for the Tiny compiled-language tutorial. - Preview the final `abs`/`score`/`main` program, its major intermediate artifacts, and exit code `20`. - Introduce the source → tokens → AST → LLVM IR → Clang → executable pipeline. -- Define the responsibility split between the Tiny frontend, `@silk-effect/llvm`, and Clang. +- Define the responsibility split between the Tiny frontend, `@silk-lang/llvm`, and Clang. - Provide a static pipeline diagram and an artifact-matching checkpoint that do not depend on the playground. ## Capabilities diff --git a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/tasks.md b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/tasks.md index b6d6a6dc..0d1d0095 100644 --- a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/tasks.md +++ b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-01-orientation/tasks.md @@ -6,7 +6,7 @@ ## 2. Orientation assets -- [x] 2.1 Create the source-to-executable pipeline diagram with explicit Tiny, `@silk-effect/llvm`, Clang, and operating-system ownership. +- [x] 2.1 Create the source-to-executable pipeline diagram with explicit Tiny, `@silk-lang/llvm`, Clang, and operating-system ownership. - [x] 2.2 Add adjacent prose and text equivalents for every visual artifact. - [x] 2.3 Add the artifact-matching checkpoint and concise misconception/recovery guidance. diff --git a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-03-consumer-setup/tasks.md b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-03-consumer-setup/tasks.md index ab50cc23..a71fef18 100644 --- a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-03-consumer-setup/tasks.md +++ b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-03-consumer-setup/tasks.md @@ -7,11 +7,11 @@ ## 2. Setup lesson - [x] 2.1 Create Lesson 3 with Node, pnpm, TypeScript, Effect, and Clang prerequisite checks. -- [x] 2.2 Add the empty-module smoke program using public `@silk-effect/llvm/Builder` and `@silk-effect/llvm/IrText` imports. +- [x] 2.2 Add the empty-module smoke program using public `@silk-lang/llvm/Builder` and `@silk-lang/llvm/IrText` imports. - [x] 2.3 Document recovery for package resolution, private import, TypeScript execution, and missing-Clang problems. ## 3. Validation -- [x] 3.1 Build and pack `@silk-effect/llvm`, install it into the clean consumer scaffold, and run its typecheck/smoke command. +- [x] 3.1 Build and pack `@silk-lang/llvm`, install it into the clean consumer scaffold, and run its typecheck/smoke command. - [x] 3.2 Link Lesson 3 into the numbered series and verify setup commands from a clean directory. - [x] 3.3 Run `pnpm check` and `pnpm release:candidate`, reporting any pre-existing failure separately. diff --git a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-04-lexer/proposal.md b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-04-lexer/proposal.md index 8e06a147..819e4530 100644 --- a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-04-lexer/proposal.md +++ b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-04-lexer/proposal.md @@ -22,5 +22,5 @@ None. ## Impact -Adds tutorial example source and tests for lexing. It uses Effect error channels and repository TypeScript conventions but does not modify `@silk-effect/llvm`. +Adds tutorial example source and tests for lexing. It uses Effect error channels and repository TypeScript conventions but does not modify `@silk-lang/llvm`. diff --git a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-07-first-native-program/design.md b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-07-first-native-program/design.md index 7fea4854..9b2f6a34 100644 --- a/openspec/changes/archive/2026-08-04-tutorial-tiny-language-07-first-native-program/design.md +++ b/openspec/changes/archive/2026-08-04-tutorial-tiny-language-07-first-native-program/design.md @@ -13,7 +13,7 @@ The complete AST can represent `fn main() = 42`, but there is no lowering path. **Non-Goals:** - Lower general arithmetic, calls, or conditionals. -- Emit bitcode or invoke Clang from `@silk-effect/llvm`. +- Emit bitcode or invoke Clang from `@silk-lang/llvm`. - Hide LLVM IR behind a one-call abstraction before learners see its structure. ## Decisions diff --git a/openspec/changes/archive/2026-08-05-add-wasm-gc-typed-refs/design.md b/openspec/changes/archive/2026-08-05-add-wasm-gc-typed-refs/design.md index 91ff354a..ca02d9c4 100644 --- a/openspec/changes/archive/2026-08-05-add-wasm-gc-typed-refs/design.md +++ b/openspec/changes/archive/2026-08-05-add-wasm-gc-typed-refs/design.md @@ -2,7 +2,7 @@ ## Context -Final change in the `@silk-effect/wasm` series. Unlike the prior additive changes, GC +Final change in the `@silk-lang/wasm` series. Unlike the prior additive changes, GC generalizes the package's deepest structures: the reference-type representation, the type interning tables, and the validator's notion of type compatibility. Every prior feature family is regression-gated by byte-stable fixtures, and the oracle (pinned `wasm-tools 1.255.0`) diff --git a/openspec/changes/archive/2026-08-05-add-wasm-gc-typed-refs/proposal.md b/openspec/changes/archive/2026-08-05-add-wasm-gc-typed-refs/proposal.md index a50d1743..d696f813 100644 --- a/openspec/changes/archive/2026-08-05-add-wasm-gc-typed-refs/proposal.md +++ b/openspec/changes/archive/2026-08-05-add-wasm-gc-typed-refs/proposal.md @@ -1,4 +1,4 @@ -# Add GC and typed function references to `@silk-effect/wasm` +# Add GC and typed function references to `@silk-lang/wasm` ## Why diff --git a/openspec/changes/archive/2026-08-05-establish-analysis-facade/design.md b/openspec/changes/archive/2026-08-05-establish-analysis-facade/design.md index 734b3379..02642d6d 100644 --- a/openspec/changes/archive/2026-08-05-establish-analysis-facade/design.md +++ b/openspec/changes/archive/2026-08-05-establish-analysis-facade/design.md @@ -46,7 +46,7 @@ the enforcement point for "every step is visualizable." obeys the same boundary as the static facts. 5. **Enforcement is a docs-side test**, not tooling magic: one test scans the labs' sources for - value imports of the disallowed phase modules from `@silk-effect/compiler`. Cheap, visible, + value imports of the disallowed phase modules from `@silk-lang/compiler`. Cheap, visible, and it fails with the offending file named. ## Risks / Trade-offs diff --git a/openspec/changes/archive/2026-08-05-establish-backend-service/design.md b/openspec/changes/archive/2026-08-05-establish-backend-service/design.md index 4fc80e61..fcd1991e 100644 --- a/openspec/changes/archive/2026-08-05-establish-backend-service/design.md +++ b/openspec/changes/archive/2026-08-05-establish-backend-service/design.md @@ -4,7 +4,7 @@ See proposal.md — Why. The lowered MIR program exists per snapshot; ticket 06 pins codegen as a nominal `Backend` service whose bootstrap implementation lowers MIR through the existing Silk -LLVM builder (`@silk-effect/llvm`) and emits deterministic bitcode directly — no `libLLVM`, no C +LLVM builder (`@silk-lang/llvm`) and emits deterministic bitcode directly — no `libLLVM`, no C API, no native FFI. The Clang object step is the next proposal's. ## Goals / Non-Goals @@ -56,7 +56,7 @@ API, no native FFI. The Clang object step is the next proposal's. bitcode golden would be an opaque binary blob in review; the digest pins bytes just as hard and diffs legibly. The IR text golden stays human-readable alongside. -6. **The compiler package gains `@silk-effect/llvm` as a real dependency**; the release-candidate +6. **The compiler package gains `@silk-lang/llvm` as a real dependency**; the release-candidate packs both tarballs and installs the compiler with an override pointing at the packed llvm, keeping the packed-consumer check honest. diff --git a/openspec/changes/archive/2026-08-05-establish-backend-service/tasks.md b/openspec/changes/archive/2026-08-05-establish-backend-service/tasks.md index 04539cdf..6fd41c2c 100644 --- a/openspec/changes/archive/2026-08-05-establish-backend-service/tasks.md +++ b/openspec/changes/archive/2026-08-05-establish-backend-service/tasks.md @@ -1,6 +1,6 @@ ## 1. Backend service -- [x] 1.1 Add `@silk-effect/llvm` as a compiler dependency; create +- [x] 1.1 Add `@silk-lang/llvm` as a compiler dependency; create `packages/compiler/src/Backend.ts`: the `Backend` interface (one `emit(program, layout, request)` operation) and the artifact shape (bitcode, IR text, canonical-id-to-symbol table) - [x] 1.2 `LlvmBackend`: declare-then-define lowering over the builder — blocks, literals, moves, diff --git a/openspec/changes/archive/2026-08-06-accept-algorithmic-language-slice/design.md b/openspec/changes/archive/2026-08-06-accept-algorithmic-language-slice/design.md index 4ae049d4..ab6cc5ec 100644 --- a/openspec/changes/archive/2026-08-06-accept-algorithmic-language-slice/design.md +++ b/openspec/changes/archive/2026-08-06-accept-algorithmic-language-slice/design.md @@ -50,7 +50,7 @@ coverage fold, and the entry module. Node-based compiler tests load those exact ordinary source resolver. The browser preset embeds the same module map because it cannot read the filesystem, and a preset test compares every embedded byte with the canonical fixture files. -Publishing an example module from `@silk-effect/compiler` was rejected because it would expand the +Publishing an example module from `@silk-lang/compiler` was rejected because it would expand the public API for test-data sharing. Allowing unrelated copies was rejected because they could drift into different programs. diff --git a/openspec/changes/archive/2026-08-06-add-language-package/design.md b/openspec/changes/archive/2026-08-06-add-language-package/design.md index 2b2fb938..96fbfd98 100644 --- a/openspec/changes/archive/2026-08-06-add-language-package/design.md +++ b/openspec/changes/archive/2026-08-06-add-language-package/design.md @@ -64,7 +64,7 @@ Token spans are byte offsets; decorations need UTF-16 offsets. Following the repo's stable-public-subpath convention: ``` -packages/language @silk-effect/language +packages/language @silk-lang/language src/CodeMirror.ts extension factory + highlight theme (actor module) src/TextMate.ts grammar + language configuration (the source of truth) scripts/sync-vscode.mjs generates the extension's JSON files from dist/TextMate.js @@ -101,7 +101,7 @@ that set exactly (both directions). ### 5. Shiki wiring Add the grammar to `rehypeCodeOptions.langs` in `apps/docs/lib/source.ts` by importing the JSON -from `@silk-effect/language`. Shiki accepts raw TextMate grammar objects in `langs`; existing +from `@silk-lang/language`. Shiki accepts raw TextMate grammar objects in `langs`; existing `fallbackLanguage` behavior is untouched. ### 6. Workbench editor swap diff --git a/openspec/changes/archive/2026-08-06-add-language-package/proposal.md b/openspec/changes/archive/2026-08-06-add-language-package/proposal.md index 982cdd38..5ab7b603 100644 --- a/openspec/changes/archive/2026-08-06-add-language-package/proposal.md +++ b/openspec/changes/archive/2026-08-06-add-language-package/proposal.md @@ -1,4 +1,4 @@ -# Add `@silk-effect/language` package +# Add `@silk-lang/language` package ## Why @@ -9,9 +9,9 @@ highlighting can be derived from the real token stream instead of a duplicated g ## What Changes -- New workspace package `@silk-effect/language` (`packages/language`) providing: +- New workspace package `@silk-lang/language` (`packages/language`) providing: - A lexer-driven CodeMirror 6 extension that highlights Silk by running the compiler's bootstrap - lexer (`@silk-effect/compiler/Lexer`) and mapping `TokenKind` to highlight styles. No Lezer + lexer (`@silk-lang/compiler/Lexer`) and mapping `TokenKind` to highlight styles. No Lezer grammar; the compiler lexer is the single source of truth. - A Silk TextMate grammar (`silk.tmLanguage.json`) plus a language configuration (brackets, comments, auto-closing pairs), exported for consumption by Shiki and by editors. @@ -48,8 +48,8 @@ None — the compiler's specs are unchanged; this change only consumes the exist - New packages: `packages/language` (publishable later, consumed via `workspace:*` for now) and `packages/vscode` (private). -- `apps/docs`: new dependency on `@silk-effect/language` and CodeMirror packages; workbench source +- `apps/docs`: new dependency on `@silk-lang/language` and CodeMirror packages; workbench source pane and MDX/Shiki configuration change. - New third-party dependencies: `@codemirror/state`, `@codemirror/view`, `@codemirror/language`, `@lezer/highlight` (style tags only). -- `@silk-effect/compiler` is unchanged but gains a new consumer of `Lexer` and `Token`. +- `@silk-lang/compiler` is unchanged but gains a new consumer of `Lexer` and `Token`. diff --git a/openspec/changes/archive/2026-08-06-add-language-package/tasks.md b/openspec/changes/archive/2026-08-06-add-language-package/tasks.md index 3ea0b26d..9f89c103 100644 --- a/openspec/changes/archive/2026-08-06-add-language-package/tasks.md +++ b/openspec/changes/archive/2026-08-06-add-language-package/tasks.md @@ -2,7 +2,7 @@ ## 1. Package scaffolding -- [x] 1.1 Create `packages/language` (`@silk-effect/language`): package.json with subpath exports +- [x] 1.1 Create `packages/language` (`@silk-lang/language`): package.json with subpath exports for `./CodeMirror` and `./TextMate`; tsconfig pair matching sibling packages; CodeMirror packages as peer + dev dependencies; wire into pnpm workspace and turbo. - [x] 1.2 Verify `pnpm build` and `pnpm check` pass with the empty package in the graph. @@ -52,4 +52,4 @@ ## 6. Finish - [x] 6.1 Run `pnpm build`, `pnpm check`, and the full test suite; fix fallout. -- [x] 6.2 Update root README package list with `@silk-effect/language`. +- [x] 6.2 Update root README package list with `@silk-lang/language`. diff --git a/openspec/changes/archive/2026-08-06-add-webcontainer-platform/design.md b/openspec/changes/archive/2026-08-06-add-webcontainer-platform/design.md index c912f9dc..1fdcd90c 100644 --- a/openspec/changes/archive/2026-08-06-add-webcontainer-platform/design.md +++ b/openspec/changes/archive/2026-08-06-add-webcontainer-platform/design.md @@ -30,7 +30,7 @@ See `proposal.md` for motivation and the four delta specs for behavioral require ### 1. Publish a platform package with concept-oriented public actors -Create `packages/platform-webcontainer` as `@silk-effect/platform-webcontainer` with these public modules: +Create `packages/platform-webcontainer` as `@silk-lang/platform-webcontainer` with these public modules: ```text src/ @@ -42,7 +42,7 @@ src/ └── index.ts ``` -`index.ts` re-exports actors as namespaces, while `package.json` exposes each actor as an explicit subpath. Consumers should normally use deep public imports such as `@silk-effect/platform-webcontainer/WebContainer`. +`index.ts` re-exports actors as namespaces, while `package.json` exposes each actor as an explicit subpath. Consumers should normally use deep public imports such as `@silk-lang/platform-webcontainer/WebContainer`. `WebContainer.ts` is the sole owner of runtime-value imports from `@webcontainer/api`. It defines the capability-bearing service, its live scoped layer, and the thin adapters around raw boot, mount, export, filesystem, process, preview, and subscription calls. The sibling actor modules define safe package values and transformations; they do not call the external API directly. Type-only re-exports needed for inputs such as filesystem trees are allowed, but raw instances are never service fields or public results. diff --git a/openspec/changes/archive/2026-08-06-add-webcontainer-platform/proposal.md b/openspec/changes/archive/2026-08-06-add-webcontainer-platform/proposal.md index cecdd557..722b30f7 100644 --- a/openspec/changes/archive/2026-08-06-add-webcontainer-platform/proposal.md +++ b/openspec/changes/archive/2026-08-06-add-webcontainer-platform/proposal.md @@ -4,7 +4,7 @@ Browser applications need an Effect-native way to own and use the WebContainer r ## What Changes -- Add a publishable `@silk-effect/platform-webcontainer` package that owns the `@webcontainer/api` boundary. +- Add a publishable `@silk-lang/platform-webcontainer` package that owns the `@webcontainer/api` boundary. - Add a scoped WebContainer runtime service that boots one container, tears it down with its enclosing scope, and exposes mount, export, runtime metadata, and preview configuration as typed Effects. - Add `WebContainerFileSystem`, an implementation layer for Effect's `FileSystem.FileSystem` service with documented native, derived, partial, and unsupported capabilities. - Add a WebContainer-native process actor for spawning commands, consuming combined output, writing terminal input, awaiting exit, killing processes, and resizing terminals with scoped cleanup. @@ -28,7 +28,7 @@ None. ## Impact -- Adds `packages/platform-webcontainer` and the public package `@silk-effect/platform-webcontainer`. +- Adds `packages/platform-webcontainer` and the public package `@silk-lang/platform-webcontainer`. - Adds `@webcontainer/api` as the package's external runtime dependency and `effect` as its Effect dependency. - Adds browser-specific build, test, and documentation requirements to the pnpm/Turbo workspace and release-candidate validation. - Introduces a reusable browser platform layer that existing consumers of `FileSystem.FileSystem`, including source resolution code, can use without a WebContainer-specific dependency. diff --git a/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/design.md b/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/design.md index 1dea7768..7eb6b218 100644 --- a/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/design.md +++ b/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/design.md @@ -3,8 +3,8 @@ See proposal.md for motivation. Constraints that shape the approach: - `packages/vscode` is a private package (`silk-language`) whose README documents a hand symlink into `~/.cursor/extensions`. That absolute path breaks across worktrees; a dangling symlink to a deleted agent worktree was observed in the wild. -- Extension `main` is `./dist/extension.js`; `@silk-effect/lsp` is a workspace dependency resolved via `require.resolve('@silk-effect/lsp/bin')`. Both need a built checkout. -- Grammar SoT remains `packages/language/src/TextMate.ts`, synced into the extension by `pnpm --filter @silk-effect/language sync:vscode` and drift-checked in tests. Docs Shiki consumes the same grammar. +- Extension `main` is `./dist/extension.js`; `@silk-lang/lsp` is a workspace dependency resolved via `require.resolve('@silk-lang/lsp/bin')`. Both need a built checkout. +- Grammar SoT remains `packages/language/src/TextMate.ts`, synced into the extension by `pnpm --filter @silk-lang/language sync:vscode` and drift-checked in tests. Docs Shiki consumes the same grammar. - `.vscode/launch.json` today only runs Silk programs; there is no `extensionHost` configuration. - The extension already exposes `silk.restartLanguageServer` for server-only iteration. - Existing specs: `cursor-extension`, `language-textmate`. This change adds `extension-dev-host`. @@ -47,7 +47,7 @@ See proposal.md for motivation. Constraints that shape the approach: ### 2. Install script retargets a stable extension id folder -- Script (Node, package script on `silk-language`, e.g. `install:cursor`) resolves the absolute path of `packages/vscode`, ensures `pnpm` builds `@silk-effect/lsp` and `silk-language` (or relies on turbo filter build), then `ln -sfn` into `~/.cursor/extensions/silk-effect.silk-language-0.0.0` (and optionally `~/.vscode/extensions/...` via a flag or sibling script). +- Script (Node, package script on `silk-language`, e.g. `install:cursor`) resolves the absolute path of `packages/vscode`, ensures `pnpm` builds `@silk-lang/lsp` and `silk-language` (or relies on turbo filter build), then `ln -sfn` into `~/.cursor/extensions/silk-effect.silk-language-0.0.0` (and optionally `~/.vscode/extensions/...` via a flag or sibling script). - Use `ln -sfn` so dangling or wrong-worktree links are replaced atomically. - Keep version `0.0.0` and folder naming stable so the entry is uniquely identifiable; do not introduce marketplace versioning. - Print the resolved target path and a one-line "Reload Window" reminder; mention `Silk: Restart Language Server` for server-only rebuilds. @@ -88,7 +88,7 @@ Improve `TextMate.ts` patterns: - **[Risk] Cursor EDH quirks** → Mitigation: keep `install:cursor` as the reliable main-window path; verify EDH on Cursor once during apply; fall back to VS Code for extension debugging if needed. - **[Risk] Broader PascalCase type rules false-positive on constants** → Mitigation: scope conservatively (prefer known type positions / existing pattern heuristics); add fixture tests for false friends; prefer under-coloring over wrong coloring. - **[Risk] Symlink still requires Reload Window** → Mitigation: document explicitly; do not promise hot grammar reload. -- **[Risk] Workspace `node_modules` resolution for `@silk-effect/lsp` from a symlinked extension** → Mitigation: install script builds from repo root; document that the checkout must remain `pnpm install &&` built; EDH loads from workspace so resolution matches the open monorepo. +- **[Risk] Workspace `node_modules` resolution for `@silk-lang/lsp` from a symlinked extension** → Mitigation: install script builds from repo root; document that the checkout must remain `pnpm install &&` built; EDH loads from workspace so resolution matches the open monorepo. - **[Trade-off] No `.vsix`** → Simpler alpha workflow; harder to share installs outside the repo. Acceptable at this stage. ## Migration Plan diff --git a/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/proposal.md b/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/proposal.md index 205c8011..122a7f69 100644 --- a/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/proposal.md +++ b/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/proposal.md @@ -6,7 +6,7 @@ Local Silk editor support in Cursor is fragile and slow to iterate: the document - Add a **worktree-safe Cursor install** path that retargets the local symlink to the current checkout, builds the extension (and its LSP dependency), and documents reload vs. language-server restart. - Add an **Extension Development Host** launch configuration (plus build/watch tasks) so F5 loads `packages/vscode` from the open workspace without touching `~/.cursor/extensions`. -- Enrich the **TextMate grammar** with finer scopes (control vs storage keywords, function names, broader types/identifiers) so themes color Silk more usefully — still generated from `@silk-effect/language`, still drift-checked. +- Enrich the **TextMate grammar** with finer scopes (control vs storage keywords, function names, broader types/identifiers) so themes color Silk more usefully — still generated from `@silk-lang/language`, still drift-checked. - Update extension README / contributor docs for the two workflows: daily use in main Cursor vs. developing the extension/LSP in a guest host window. - **Non-goals:** marketplace/OpenVSX packaging, LSP semantic tokens, tree-sitter, theme contributions, Changesets publication of the private extension. @@ -28,4 +28,4 @@ Local Silk editor support in Cursor is fragile and slow to iterate: the document - `packages/language` — `TextMate.ts` patterns/scopes, sync script output, TextMate tests / Shiki fixtures. - Generated `packages/vscode/syntaxes/silk.tmLanguage.json` and `language-configuration.json` via existing `sync:vscode`. - Docs site Shiki highlighting inherits the richer grammar automatically. -- Does not change `@silk-effect/lsp` protocol surface; LSP restart remains the thin extension command already present. +- Does not change `@silk-lang/lsp` protocol surface; LSP restart remains the thin extension command already present. diff --git a/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/specs/cursor-extension/spec.md b/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/specs/cursor-extension/spec.md index 0336a30d..435eee7b 100644 --- a/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/specs/cursor-extension/spec.md +++ b/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/specs/cursor-extension/spec.md @@ -25,7 +25,7 @@ The extension README SHALL distinguish window reload (needed for contribution an #### Scenario: Contributor updates only the language server -- **WHEN** a contributor rebuilds `@silk-effect/lsp` while the extension is already loaded from the correct checkout +- **WHEN** a contributor rebuilds `@silk-lang/lsp` while the extension is already loaded from the correct checkout - **THEN** documentation tells them to run `Silk: Restart Language Server` rather than reinstalling the symlink ## MODIFIED Requirements diff --git a/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/tasks.md b/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/tasks.md index 5cecb879..d266999f 100644 --- a/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/tasks.md +++ b/openspec/changes/archive/2026-08-08-improve-cursor-extension-devloop/tasks.md @@ -1,13 +1,13 @@ ## 1. Retargetable local install -- [x] 1.1 Add a Node install script under `packages/vscode` that builds `@silk-effect/lsp` and `silk-language`, then `ln -sfn` the package folder to `~/.cursor/extensions/silk-effect.silk-language-0.0.0` +- [x] 1.1 Add a Node install script under `packages/vscode` that builds `@silk-lang/lsp` and `silk-language`, then `ln -sfn` the package folder to `~/.cursor/extensions/silk-effect.silk-language-0.0.0` - [x] 1.2 Wire `install:cursor` (and optional `install:code` / `--vscode` for `~/.vscode/extensions`) in `packages/vscode/package.json` - [x] 1.3 Make the script print the resolved symlink target and remind the user to reload the window; exit non-zero if build or link fails - [x] 1.4 Rewrite `packages/vscode/README.md` install section to use the script instead of a hand `ln -s`, and document reload vs `Silk: Restart Language Server` ## 2. Extension Development Host -- [x] 2.1 Add `.vscode/tasks.json` entries to build (and optionally watch) `@silk-effect/lsp` and `silk-language`, including a compound pre-launch build task +- [x] 2.1 Add `.vscode/tasks.json` entries to build (and optionally watch) `@silk-lang/lsp` and `silk-language`, including a compound pre-launch build task - [x] 2.2 Add an `extensionHost` launch configuration in `.vscode/launch.json` with `--extensionDevelopmentPath=${workspaceFolder}/packages/vscode` and the pre-launch build task - [x] 2.3 Document the EDH workflow in `packages/vscode/README.md` (when to use EDH vs `install:cursor`; restart LS vs reload host for grammar/activation changes) @@ -21,7 +21,7 @@ ## 4. Verification -- [x] 4.1 Run `pnpm typecheck`, package tests for `@silk-effect/language`, and `pnpm exec biome check` on touched paths +- [x] 4.1 Run `pnpm typecheck`, package tests for `@silk-lang/language`, and `pnpm exec biome check` on touched paths - [x] 4.2 Manually verify `install:cursor` replaces a wrong/dangling symlink and that Reload Window loads `.silk` highlighting from this checkout - [x] 4.3 Manually verify Extension Development Host launches with Silk active even when the global symlink is absent or wrong - [x] 4.4 Spot-check highlighting on a sample `.silk` file (keywords, `fn` name, user types, match/generics still sane) in Cursor or the EDH window diff --git a/openspec/changes/archive/2026-08-09-add-silk-documentation/design.md b/openspec/changes/archive/2026-08-09-add-silk-documentation/design.md index 70eceb91..0a9f221a 100644 --- a/openspec/changes/archive/2026-08-09-add-silk-documentation/design.md +++ b/openspec/changes/archive/2026-08-09-add-silk-documentation/design.md @@ -37,7 +37,7 @@ highlighting, LSP hover, and generated artifacts. ### The compiler owns only raw attachment Add a `ModuleDocComment` token kind for exact `//!` comments and a concept-oriented `DocBlock` -actor in `@silk-effect/compiler`. `DocBlock` contains its kind, exact documentation tokens, and +actor in `@silk-lang/compiler`. `DocBlock` contains its kind, exact documentation tokens, and source span. Sibling queries extract a leading module block from a `SyntaxFile` or the attached declaration block from a syntax node. They inspect only direct leading trivia and newline counts; they do not decode, normalize, or parse text. @@ -52,7 +52,7 @@ every analysis for optional Markdown work and couple core semantic data to rende ### Parsed documentation is an optional package -Create `@silk-effect/documentation`, depending on the compiler rather than the reverse. It owns +Create `@silk-lang/documentation`, depending on the compiler rather than the reverse. It owns singular `Document`, `Project`, and `Json` actors with immutable data-first values and sibling operations. It normalizes comment markers, parses CommonMark on demand into a package-owned node vocabulary, recognizes examples, resolves intra-document links from compiler scope facts, and @@ -63,7 +63,7 @@ by CommonMark recovery; if the external parser cannot produce a tree, the packag node containing the normalized source. No parser error or third-party AST crosses the public interface. -Alternative: put parsed documentation in `@silk-effect/language`. Rejected because generation and +Alternative: put parsed documentation in `@silk-lang/language`. Rejected because generation and LSP hover are not editor adapters. Alternative: put the Markdown dependency in the compiler. Rejected because it expands the core package and weakens the opt-in performance boundary. diff --git a/openspec/changes/archive/2026-08-09-add-silk-documentation/proposal.md b/openspec/changes/archive/2026-08-09-add-silk-documentation/proposal.md index efde8c57..bc75161a 100644 --- a/openspec/changes/archive/2026-08-09-add-silk-documentation/proposal.md +++ b/openspec/changes/archive/2026-08-09-add-silk-documentation/proposal.md @@ -9,7 +9,7 @@ generation tooling the same source of truth. - Add declaration documentation with `///` and module documentation with `//!`, retained as raw, source-owned comment blocks by the compiler without parsing Markdown during lexing or CST parsing. -- Add an optional `@silk-effect/documentation` package that lazily and totally parses CommonMark, +- Add an optional `@silk-lang/documentation` package that lazily and totally parses CommonMark, recognizes Rust-style intra-document links, preserves examples and provenance, and falls back to readable text for malformed content or unresolved links. - Enrich symbol hover with the complete declaration documentation, including examples, while @@ -52,8 +52,8 @@ generation tooling the same source of truth. ## Impact -- Affected packages: `@silk-effect/compiler`, `@silk-effect/language`, `@silk-effect/lsp`, - `@silk-effect/compiler-cli`, and a new `@silk-effect/documentation` package. +- Affected packages: `@silk-lang/compiler`, `@silk-lang/language`, `@silk-lang/lsp`, + `@silk-lang/compiler-cli`, and a new `@silk-lang/documentation` package. - The compiler token vocabulary and public subpath exports gain documentation actors and a module documentation token kind. - LSP hover output changes from a signature-only Markdown code block to a signature followed by the diff --git a/openspec/changes/archive/2026-08-09-add-silk-documentation/tasks.md b/openspec/changes/archive/2026-08-09-add-silk-documentation/tasks.md index d64dc468..e194c31f 100644 --- a/openspec/changes/archive/2026-08-09-add-silk-documentation/tasks.md +++ b/openspec/changes/archive/2026-08-09-add-silk-documentation/tasks.md @@ -7,7 +7,7 @@ ## 2. Optional documentation package -- [x] 2.1 Scaffold `@silk-effect/documentation` with explicit actor subpaths, workspace configuration, CommonMark dependency ownership, and package-level test configuration. +- [x] 2.1 Scaffold `@silk-lang/documentation` with explicit actor subpaths, workspace configuration, CommonMark dependency ownership, and package-level test configuration. - [x] 2.2 Implement the immutable `Document` model and total lazy parser: marker normalization, package-owned CommonMark nodes, source provenance, `Examples` discovery, and malformed-content fallback. - [x] 2.3 Implement best-effort Rust-style intra-document links against compiler scope facts, resolving canonical identities and degrading unresolved links to inline code without diagnostics. - [x] 2.4 Implement the immutable `Project` model with source-ordered modules/declarations, compiler-derived signatures, child documentation, and public-by-default visibility filtering. diff --git a/openspec/changes/archive/2026-08-10-fix-webcontainer-watch-and-stat/proposal.md b/openspec/changes/archive/2026-08-10-fix-webcontainer-watch-and-stat/proposal.md index e06618ff..39c791ff 100644 --- a/openspec/changes/archive/2026-08-10-fix-webcontainer-watch-and-stat/proposal.md +++ b/openspec/changes/archive/2026-08-10-fix-webcontainer-watch-and-stat/proposal.md @@ -2,7 +2,7 @@ ## Why -Code review of `@silk-effect/platform-webcontainer` found two gaps that block its primary +Code review of `@silk-lang/platform-webcontainer` found two gaps that block its primary consumer, the upcoming browser IDE. First, filesystem watching fails explicitly even though the upstream `@webcontainer/api` exposes `fs.watch` — without it, a file tree and editor cannot learn that a terminal command (`silk build`, `npm install`) changed files. Second, `stat` reads the diff --git a/openspec/changes/archive/2026-08-12-add-webcontainer-editor/design.md b/openspec/changes/archive/2026-08-12-add-webcontainer-editor/design.md index b9c9b575..97b42cbb 100644 --- a/openspec/changes/archive/2026-08-12-add-webcontainer-editor/design.md +++ b/openspec/changes/archive/2026-08-12-add-webcontainer-editor/design.md @@ -1,6 +1,6 @@ ## Context -See `proposal.md` for motivation. The docs application is a Next.js App Router application with an existing `/labs` client workbench and one route-local Atom registry. It does not currently depend on xterm.js or `@silk-effect/platform-webcontainer`, and its Next configuration does not set cross-origin isolation headers. +See `proposal.md` for motivation. The docs application is a Next.js App Router application with an existing `/labs` client workbench and one route-local Atom registry. It does not currently depend on xterm.js or `@silk-lang/platform-webcontainer`, and its Next configuration does not set cross-origin isolation headers. The WebContainer package already supplies three boundaries this change needs: @@ -25,7 +25,7 @@ The package requires consumers to construct one WebContainer layer value and reu - Add a source editor, file tree, preview iframe, package manager UI, persistence, collaboration, or multiple terminal tabs in this change. - Introduce a second runtime for the future features above. - Expose the raw WebContainer instance, raw promises, xterm objects, or manual process teardown as shared application state. -- Change the public API or behavioral contracts of `@silk-effect/platform-webcontainer` unless implementation proves its current actors insufficient. +- Change the public API or behavioral contracts of `@silk-lang/platform-webcontainer` unless implementation proves its current actors insufficient. - Support separate stdout and stderr, operating-system signals, PIDs, or other semantics WebContainer does not provide. ## Decisions diff --git a/openspec/changes/archive/2026-08-12-add-webcontainer-editor/proposal.md b/openspec/changes/archive/2026-08-12-add-webcontainer-editor/proposal.md index 57d62cf3..b40b5482 100644 --- a/openspec/changes/archive/2026-08-12-add-webcontainer-editor/proposal.md +++ b/openspec/changes/archive/2026-08-12-add-webcontainer-editor/proposal.md @@ -5,7 +5,7 @@ Silk's documentation site needs a browser-native execution surface where users c ## What Changes - Add a dedicated `/editor` route to the docs application. -- Add an interactive xterm.js terminal backed by a scoped `jsh` process from `@silk-effect/platform-webcontainer`. +- Add an interactive xterm.js terminal backed by a scoped `jsh` process from `@silk-lang/platform-webcontainer`. - Establish one editor application environment that constructs a single WebContainer layer and derives both the WebContainer runtime service and Effect's standard `FileSystem` service from that exact layer value. - Make the shared application environment available through one module-scope Atom runtime so the terminal and future editor, file-tree, package-management, and preview actors resolve the same filesystem and WebContainer instance. - Model boot, session, process output, input, resize, failure, and disposal through Effect scopes and Atom state rather than raw WebContainer promises or component-owned application state. @@ -26,6 +26,6 @@ None. The existing WebContainer runtime, filesystem, and process contracts alrea ## Impact - Affects `apps/docs` routing, client UI, styles, Next.js response headers, tests, and package dependencies. -- Adds workspace consumption of `@silk-effect/platform-webcontainer` plus `@xterm/xterm` and `@xterm/addon-fit`. +- Adds workspace consumption of `@silk-lang/platform-webcontainer` plus `@xterm/xterm` and `@xterm/addon-fit`. - Introduces an editor-scoped Atom runtime and application composition layer that future editor features must reuse instead of booting independent WebContainers or constructing parallel filesystem services. -- Does not change the public API of `@silk-effect/platform-webcontainer` unless implementation reveals a missing capability that cannot be expressed through its current runtime, process, and filesystem actors. +- Does not change the public API of `@silk-lang/platform-webcontainer` unless implementation reveals a missing capability that cannot be expressed through its current runtime, process, and filesystem actors. diff --git a/openspec/changes/archive/2026-08-12-add-webcontainer-editor/tasks.md b/openspec/changes/archive/2026-08-12-add-webcontainer-editor/tasks.md index 1b6f6834..28c4ceb9 100644 --- a/openspec/changes/archive/2026-08-12-add-webcontainer-editor/tasks.md +++ b/openspec/changes/archive/2026-08-12-add-webcontainer-editor/tasks.md @@ -1,6 +1,6 @@ ## 1. Editor Application Setup -- [x] 1.1 Add `@silk-effect/platform-webcontainer`, `@xterm/xterm`, and `@xterm/addon-fit` to the docs app and update the lockfile. +- [x] 1.1 Add `@silk-lang/platform-webcontainer`, `@xterm/xterm`, and `@xterm/addon-fit` to the docs app and update the lockfile. - [x] 1.2 Add route-scoped COOP/COEP response headers for `/editor` and editor child paths in the Next.js configuration. - [x] 1.3 Scaffold the `/editor` route and one route-level `RegistryProvider` boundary that future editor child content will inherit. diff --git a/openspec/changes/archive/2026-08-14-add-auto-import-code-actions/handoff.md b/openspec/changes/archive/2026-08-14-add-auto-import-code-actions/handoff.md index baf6d5aa..8b045756 100644 --- a/openspec/changes/archive/2026-08-14-add-auto-import-code-actions/handoff.md +++ b/openspec/changes/archive/2026-08-14-add-auto-import-code-actions/handoff.md @@ -16,7 +16,7 @@ One local release-check run on 2026-08-14 produced these baseline observations: semantic project revision still contained only the open `Main` root. These values are a development-machine baseline rather than performance budgets. Re-run with -`SILK_AUTO_IMPORT_MEASURE=1 pnpm --filter @silk-effect/lsp exec vitest run +`SILK_AUTO_IMPORT_MEASURE=1 pnpm --filter @silk-lang/lsp exec vitest run test/AutoImportScale.test.ts` when changing discovery, invalidation, or indexing behavior. ## Verification diff --git a/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/design.md b/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/design.md index 41eaab3f..2c8a6faf 100644 --- a/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/design.md +++ b/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/design.md @@ -38,10 +38,10 @@ See proposal.md for motivation. Current state that shapes the design: ## Decisions -### D1: New package `packages/inspector` (`@silk-effect/inspector`) +### D1: New package `packages/inspector` (`@silk-lang/inspector`) The registry (`ViewDefinition`, `views`, `viewById`, `siblingsOf`), row model types, and the -`project-*`/`flow-model` row builders move here. Depends only on `@silk-effect/compiler`. +`project-*`/`flow-model` row builders move here. Depends only on `@silk-lang/compiler`. *Alternative — fold into the compiler's tooling namespace:* rejected; row models and fact strips are a presentation vocabulary, not compiler analysis, and the compiler package should not grow a diff --git a/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/proposal.md b/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/proposal.md index 64a9300d..f9a6d718 100644 --- a/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/proposal.md +++ b/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/proposal.md @@ -50,8 +50,8 @@ consumer can reuse them. ## Impact -- New package: `packages/inspector` (`@silk-effect/inspector`), depending only on - `@silk-effect/compiler`. +- New package: `packages/inspector` (`@silk-lang/inspector`), depending only on + `@silk-lang/compiler`. - `apps/docs/app/labs`: registry and `row/project-*` modules move out; imports and the `onActivate` wiring change, behavior does not. - `packages/lsp`: new request/notification handlers in `Server.ts`; single-root realization diff --git a/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/tasks.md b/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/tasks.md index 2211ccaa..dc826ac2 100644 --- a/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/tasks.md +++ b/openspec/changes/archive/2026-08-17-add-vscode-inspector-panel/tasks.md @@ -1,8 +1,8 @@ # Tasks: Add VS Code Inspector Panel -## 1. Extract `@silk-effect/inspector` +## 1. Extract `@silk-lang/inspector` -- [x] 1.1 Scaffold `packages/inspector` (package.json, tsconfig, vitest config) depending only on `@silk-effect/compiler`, wired into the workspace and turbo +- [x] 1.1 Scaffold `packages/inspector` (package.json, tsconfig, vitest config) depending only on `@silk-lang/compiler`, wired into the workspace and turbo - [x] 1.2 Move row model types (`RowModel`, `Span`, tones, `cursorStateFor`, `spanLabel`) into the package; make `Span` module-qualified and rewrite `cursorStateFor` to compare module + range - [x] 1.3 Move `row/project-syntax`, `row/project-backend`, and `row/flow-model` into the package, dropping the `onSelectSpan` parameters so rows carry spans only - [x] 1.4 Move the view registry (`ViewDefinition`, `views`, `viewById`, `siblingsOf`, `panels.tsx` helpers) into the package; `ViewContext` loses callbacks, gains `evaluate` input; drop the React-only `source` view body handling from the shared registry @@ -11,7 +11,7 @@ ## 2. Docs workbench consumes the package -- [x] 2.1 Rewire `apps/docs/app/labs` to import registry and rows from `@silk-effect/inspector`; keep React shells (RowList, pane chrome, picker, editor) local +- [x] 2.1 Rewire `apps/docs/app/labs` to import registry and rows from `@silk-lang/inspector`; keep React shells (RowList, pane chrome, picker, editor) local - [x] 2.2 Wire activation in the row list from `span !== undefined` (posting to the cursor atom with the active module) instead of `onActivate`; thread the module-qualified cursor through `cursorAtom` - [x] 2.3 Restore the evaluation "run" action through the new `evaluate` context input; verify labs behavior (views, meta, facts, cursor tinting, saved layouts/URLs) is unchanged and tests pass diff --git a/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/design.md b/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/design.md index bf081113..9494cd28 100644 --- a/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/design.md +++ b/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/design.md @@ -3,7 +3,7 @@ The compiler-owned formatter currently accepts a lossless `SyntaxFile`, validates complete outer syntax, and prints comments as opaque byte slices. The CLI and LSP both invoke that operation, which is why their whole-document results agree. Parsed documentation lives in the optional -`@silk-effect/documentation` package: it normalizes `///` and `//!` tokens, parses CommonMark, and +`@silk-lang/documentation` package: it normalizes `///` and `//!` tokens, parses CommonMark, and maps document nodes back to source bytes. That package depends on the compiler, deliberately keeping Markdown out of ordinary compiler parsing and analysis. @@ -42,8 +42,8 @@ complete modules, while `silk,ignore` permits illustrative fragments. See the mo ### Put canonical orchestration in an optional formatter package -Create `@silk-effect/formatter` with public `Formatter` and package-owned error actors. It depends on -`@silk-effect/compiler` for Silk syntax and layout and on `@silk-effect/documentation` for CommonMark +Create `@silk-lang/formatter` with public `Formatter` and package-owned error actors. It depends on +`@silk-lang/compiler` for Silk syntax and layout and on `@silk-lang/documentation` for CommonMark documents and lossless documentation rewriting. The compiler's current `Formatter` actor becomes `SyntaxFormatter`: a lower-level, Markdown-neutral operation that validates and lays out one Silk syntax artifact while preserving comment atoms. `FormattedDocument` remains compiler-owned because @@ -57,7 +57,7 @@ than retained as an alias. This layering keeps the dependency graph acyclic: ```text -@silk-effect/compiler +@silk-lang/compiler ▲ ▲ │ │ documentation formatter ◀── compiler-cli / lsp @@ -67,7 +67,7 @@ documentation formatter ◀── compiler-cli / lsp Alternatives considered: -- Making the compiler depend on `@silk-effect/documentation` creates a cycle and violates the +- Making the compiler depend on `@silk-lang/documentation` creates a cycle and violates the established optional Markdown boundary. - Adding another Markdown parser or fence scanner to the compiler duplicates CommonMark semantics and will disagree on containers, fence forms, or info strings. @@ -135,7 +135,7 @@ same semantic trailing spaces from physical comment lines. ### Let a documentation-owned CodeFence actor own lossless reconstruction -Add a `CodeFence` actor to `@silk-effect/documentation`. It parses one compiler-owned `DocBlock` +Add a `CodeFence` actor to `@silk-lang/documentation`. It parses one compiler-owned `DocBlock` against its owning `SourceFile` through the same internal CommonMark seam as `Document`, and returns source-ordered immutable fence values carrying the raw info string, CommonMark language and metadata, whether an authored matching closer exists, body value, and outer source range. Keeping these fields @@ -255,7 +255,7 @@ the release-candidate check. compiler-owned complete documentation-block inventory, migrate compiler-owned tests, and delete the old formatter export. 2. Add and verify the documentation-owned `CodeFence` parsing and reconstruction actor. -3. Add `@silk-effect/formatter`, its public actors, package exports, error mapping, staged pipeline, +3. Add `@silk-lang/formatter`, its public actors, package exports, error mapping, staged pipeline, and focused tests. 4. Move compiler CLI and LSP whole-document adapters to the public formatter and add parity tests. 5. Format shipped Silk sources, regenerate any changed source inventory, add release metadata, and diff --git a/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/proposal.md b/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/proposal.md index c261c501..ccab1160 100644 --- a/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/proposal.md +++ b/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/proposal.md @@ -41,8 +41,8 @@ None. - Affects `packages/compiler` formatter naming and exports, documentation parsing/rewrite support, compiler CLI formatting, LSP whole-document formatting, and their tests. -- Adds a workspace formatter package depending on `@silk-effect/compiler` and - `@silk-effect/documentation`; ordinary compiler parsing and analysis retain no Markdown runtime +- Adds a workspace formatter package depending on `@silk-lang/compiler` and + `@silk-lang/documentation`; ordinary compiler parsing and analysis retain no Markdown runtime dependency. - Changes canonical bytes for `.silk` files whose active fenced examples are not already formatted, including generated standard-library source inventory when those files change. diff --git a/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/tasks.md b/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/tasks.md index 7189bb4c..a64a29b9 100644 --- a/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/tasks.md +++ b/openspec/changes/archive/2026-08-21-format-silk-doc-code-blocks/tasks.md @@ -1,7 +1,7 @@ ## 1. Separate Syntax Layout from Canonical Source Formatting -- [x] 1.1 Rename the compiler-owned `Formatter` actor, error, trace name, module, barrel export, and package subpath to `SyntaxFormatter`, delete the old export without an alias, and verify `pnpm --filter @silk-effect/compiler typecheck` passes. -- [x] 1.2 Migrate compiler-owned formatting tests and support modules to `SyntaxFormatter`, retain their existing grammar, comment-order, damage, and idempotence assertions, and verify no `@silk-effect/compiler/Formatter` import or compiler `Formatter` namespace export remains. +- [x] 1.1 Rename the compiler-owned `Formatter` actor, error, trace name, module, barrel export, and package subpath to `SyntaxFormatter`, delete the old export without an alias, and verify `pnpm --filter @silk-lang/compiler typecheck` passes. +- [x] 1.2 Migrate compiler-owned formatting tests and support modules to `SyntaxFormatter`, retain their existing grammar, comment-order, damage, and idempotence assertions, and verify no `@silk-lang/compiler/Formatter` import or compiler `Formatter` namespace export remains. - [x] 1.3 Add compiler-owned `DocBlock.all` with the complete documentable-node allowlist, source-ordering, and span deduplication shared with analysis, and verify focused compiler tests include module, declaration, conformance, field, type-parameter, value-parameter, service-operation, and implementation-operation blocks while excluding statement-local, trailing, unattached `///`, and nonleading `//!` trivia. ## 2. Add Lossless Documentation Fence Rewriting @@ -13,15 +13,15 @@ ## 3. Build the Canonical Formatter Package -- [x] 3.1 Scaffold and install `@silk-effect/formatter` with explicit `Formatter` and error actor exports, compiler/documentation dependencies, strict TypeScript and Vitest configuration, workspace metadata, lockfile entries, and a changeset, then verify a clean package typecheck resolves every public subpath. +- [x] 3.1 Scaffold and install `@silk-lang/formatter` with explicit `Formatter` and error actor exports, compiler/documentation dependencies, strict TypeScript and Vitest configuration, workspace metadata, lockfile entries, and a changeset, then verify a clean package typecheck resolves every public subpath. - [x] 3.2 Implement the public staged pipeline against original provenance: retain one `SyntaxFormatter` outer result, inventory and recursively format active bodies from original bytes, pair fences into the canonical outer destination by ordinal and normalization-stable structure, inject bodies after layout, reparse for integrity, and compare final bytes with the original; verify the no-active-fence fast path, unchanged active bodies, and opening/closing fence lines with removable terminal spaces all succeed without false infrastructure failure. - [x] 3.3 Add typed outer-syntax, embedded-syntax, malformed-active-fence, and documentation-infrastructure failure reasons; retain the original top-level physical fence range, nested relative range path, and inner diagnostics; and verify noncanonical/CRLF bytes before a damaged fence do not shift the reported original range and no partial bytes escape. -- [x] 3.4 Add one formatter contract test file covering declaration and module examples, multiple and recursively nested examples, metadata-bearing `silk`, `silk,ignore`, other languages, unlabelled fences, unclosed fences, semantic errors, multiline literals, original-byte changed detection, embedded grammatical preservation, and idempotence, then verify `pnpm --filter @silk-effect/formatter test` passes. +- [x] 3.4 Add one formatter contract test file covering declaration and module examples, multiple and recursively nested examples, metadata-bearing `silk`, `silk,ignore`, other languages, unlabelled fences, unclosed fences, semantic errors, multiline literals, original-byte changed detection, embedded grammatical preservation, and idempotence, then verify `pnpm --filter @silk-lang/formatter test` passes. ## 4. Move User-Facing Adapters to the Canonical Formatter -- [x] 4.1 Add and lock the compiler CLI runtime dependency on `@silk-effect/formatter`, replace formatting imports and outcome types, migrate `FormatCommand` diagnostics/reporting to outer and embedded error shapes, classify Silk and malformed-fence source damage as `Damaged`/exit 1 and documentation infrastructure as `Failed`/exit 2, and verify workflow/command tests cover writes, `--check`, continuation across files, original fence location, and atomic refusal when any active fence is damaged. -- [x] 4.2 Add and lock the LSP runtime dependency on `@silk-effect/formatter`, replace whole-document formatting imports, add an embedded-source formatting fixture, and verify the LSP test produces exactly the same complete source bytes as the CLI expectation while returning no edit for embedded syntax damage. +- [x] 4.1 Add and lock the compiler CLI runtime dependency on `@silk-lang/formatter`, replace formatting imports and outcome types, migrate `FormatCommand` diagnostics/reporting to outer and embedded error shapes, classify Silk and malformed-fence source damage as `Damaged`/exit 1 and documentation infrastructure as `Failed`/exit 2, and verify workflow/command tests cover writes, `--check`, continuation across files, original fence location, and atomic refusal when any active fence is damaged. +- [x] 4.2 Add and lock the LSP runtime dependency on `@silk-lang/formatter`, replace whole-document formatting imports, add an embedded-source formatting fixture, and verify the LSP test produces exactly the same complete source bytes as the CLI expectation while returning no edit for embedded syntax damage. - [x] 4.3 Classify every remaining repository formatter call as low-level syntax-layout coverage or user-facing canonical formatting, migrate it to the corresponding actor, and verify a repository search finds no stale compiler `Formatter` name or adapter bypass of the public formatter. ## 5. Migrate Shipped Source and Verify the Release diff --git a/openspec/changes/archive/2026-08-22-harden-compiler-native-boundary/proposal.md b/openspec/changes/archive/2026-08-22-harden-compiler-native-boundary/proposal.md index d6e102fa..038ab6d2 100644 --- a/openspec/changes/archive/2026-08-22-harden-compiler-native-boundary/proposal.md +++ b/openspec/changes/archive/2026-08-22-harden-compiler-native-boundary/proposal.md @@ -25,4 +25,4 @@ The compiler's native-toolchain boundary violates the effect-patterns boundary r ## Impact -Observable: native-toolchain failures now surface as typed errors (callers can recover on stage and cause), and invalid backend requests no longer bypass `BackendError`. Everything else is internal refactoring. Node-only code stays a deep import; `@silk-effect/compiler` root becomes genuinely browser-safe. +Observable: native-toolchain failures now surface as typed errors (callers can recover on stage and cause), and invalid backend requests no longer bypass `BackendError`. Everything else is internal refactoring. Node-only code stays a deep import; `@silk-lang/compiler` root becomes genuinely browser-safe. diff --git a/openspec/changes/archive/2026-08-22-split-compiler-backends/design.md b/openspec/changes/archive/2026-08-22-split-compiler-backends/design.md index acc51261..85b2f58c 100644 --- a/openspec/changes/archive/2026-08-22-split-compiler-backends/design.md +++ b/openspec/changes/archive/2026-08-22-split-compiler-backends/design.md @@ -1,6 +1,6 @@ ## Context -See proposal.md. The @silk-effect/llvm boundary is already thin and Effect-native (every op is yield*-ed LlvmError reconciled once via mapError); this change only factors it, it does not re-wrap the external API. +See proposal.md. The @silk-lang/llvm boundary is already thin and Effect-native (every op is yield*-ed LlvmError reconciled once via mapError); this change only factors it, it does not re-wrap the external API. ## Decisions diff --git a/openspec/changes/archive/2026-08-24-add-external-wake-parking/implementation-report.md b/openspec/changes/archive/2026-08-24-add-external-wake-parking/implementation-report.md index 1ac91652..358a3c7f 100644 --- a/openspec/changes/archive/2026-08-24-add-external-wake-parking/implementation-report.md +++ b/openspec/changes/archive/2026-08-24-add-external-wake-parking/implementation-report.md @@ -66,9 +66,9 @@ payload lane, failure channel, cross-thread transfer, or mandatory atomic fact w ### Focused checks -- `pnpm --filter @silk-effect/compiler exec vitest run test/ExternalWakeParking.test.ts test/WakeCell.test.ts test/IntrinsicCatalog.test.ts test/ExecutionPackage.test.ts test/SuspensionOwnership.test.ts test/Suspendability.test.ts test/SharedStdlib.test.ts` — **PASS**, 7 files / 64 tests. -- `pnpm --filter @silk-effect/compiler exec vitest run test/ExternalWakeParking.test.ts` after evaluator/Wasm never-driven evidence — **PASS**, 1 file / 7 tests. -- `pnpm --filter @silk-effect/compiler typecheck` — **PASS**. One pre-gate run correctly reported stale generated toolchain identity after source edits; `pnpm --filter @silk-effect/compiler toolchain:generate` repaired the generated identity, and the next run passed. +- `pnpm --filter @silk-lang/compiler exec vitest run test/ExternalWakeParking.test.ts test/WakeCell.test.ts test/IntrinsicCatalog.test.ts test/ExecutionPackage.test.ts test/SuspensionOwnership.test.ts test/Suspendability.test.ts test/SharedStdlib.test.ts` — **PASS**, 7 files / 64 tests. +- `pnpm --filter @silk-lang/compiler exec vitest run test/ExternalWakeParking.test.ts` after evaluator/Wasm never-driven evidence — **PASS**, 1 file / 7 tests. +- `pnpm --filter @silk-lang/compiler typecheck` — **PASS**. One pre-gate run correctly reported stale generated toolchain identity after source edits; `pnpm --filter @silk-lang/compiler toolchain:generate` repaired the generated identity, and the next run passed. - Targeted Biome check over changed implementation/tests — **PASS** after formatter applied one mechanical wrap. - `openspec validate add-external-wake-parking --strict --json --no-interactive` — **PASS**, 1/1. - Post-conformance focused sequence: compiler typecheck plus @@ -107,7 +107,7 @@ result was: - `pnpm typecheck` — **PASS**. - `pnpm exec biome check .` — **PASS**. - `pnpm test` — **FAIL** in the compiler documentation check before compiler tests: - `diagnostics.md is stale. Run pnpm --filter @silk-effect/compiler documentation:generate`. + `diagnostics.md is stale. Run pnpm --filter @silk-lang/compiler documentation:generate`. - `pnpm check` — **NOT RUN** because the chained gate stopped at `pnpm test`. - `pnpm release:candidate` — **NOT RUN** because the chained gate stopped at `pnpm test`. @@ -127,10 +127,10 @@ pass because the resume has introduced no semantic implementation change. documentation package in turn consumes built compiler subpaths and the compiler consumes built LLVM/Wasm subpaths. One root topological `pnpm build` supplied the missing workspace outputs; this is resume root-cause repair 1/3 and did not change tracked source. -- `pnpm --filter @silk-effect/compiler documentation:generate` — **PASS** after the prerequisite +- `pnpm --filter @silk-lang/compiler documentation:generate` — **PASS** after the prerequisite build; regenerated `packages/language/docs/diagnostics.md` with the `OWN0016` external-readiness- callback form. -- `pnpm --filter @silk-effect/compiler documentation:check` — **PASS**. +- `pnpm --filter @silk-lang/compiler documentation:check` — **PASS**. - Focused post-conformance regression sequence over `ExternalWakeParking.test.ts`, `SharedStdlib.test.ts`, `OwnedAllocationAcceptance.test.ts`, `WakeCell.test.ts`, and `Mir.test.ts` — **PASS**, 5 files / 58 tests. diff --git a/openspec/changes/archive/2026-08-24-add-independent-execution-engine-parity/implementation-report.md b/openspec/changes/archive/2026-08-24-add-independent-execution-engine-parity/implementation-report.md index 88339462..4b7de05f 100644 --- a/openspec/changes/archive/2026-08-24-add-independent-execution-engine-parity/implementation-report.md +++ b/openspec/changes/archive/2026-08-24-add-independent-execution-engine-parity/implementation-report.md @@ -177,8 +177,8 @@ corpus **PASS**, 1 test / all programs, 120.16s. No second conformance pass was ## Verification history -- Initial focused command could not resolve unbuilt workspace package `@silk-effect/llvm/Bitcode`; - building `@silk-effect/llvm` relocalized the same prerequisite to `@silk-effect/wasm/Binary`. +- Initial focused command could not resolve unbuilt workspace package `@silk-lang/llvm/Bitcode`; + building `@silk-lang/llvm` relocalized the same prerequisite to `@silk-lang/wasm/Binary`. Building both workspace packages supplied fresh-worktree outputs; this was environment setup, not a semantic repair. - Focused transition/Wake/package/external-parking sequence — **PASS**, 4 files / 33 tests. diff --git a/openspec/changes/archive/2026-08-24-add-independent-execution-packaging/implementation-report.md b/openspec/changes/archive/2026-08-24-add-independent-execution-packaging/implementation-report.md index a7a8c0cf..e5557e57 100644 --- a/openspec/changes/archive/2026-08-24-add-independent-execution-packaging/implementation-report.md +++ b/openspec/changes/archive/2026-08-24-add-independent-execution-packaging/implementation-report.md @@ -17,7 +17,7 @@ Dormant-to-Eligible runtime policy. The bounded resume first established this deterministic red loop: ```text -pnpm --filter @silk-effect/compiler exec vitest run \ +pnpm --filter @silk-lang/compiler exec vitest run \ test/EffectJoin.test.ts \ -t 'preserves the selected alternative capture shape' \ --reporter=dot @@ -79,7 +79,7 @@ pass for verified Critical/High lens findings. After the conformance fix, the focused command passed six files and 59 tests: ```text -pnpm --filter @silk-effect/compiler exec vitest run \ +pnpm --filter @silk-lang/compiler exec vitest run \ test/ExecutionPackage.test.ts \ test/EffectSuspensionWasm.test.ts \ test/IntrinsicCatalog.test.ts \ diff --git a/openspec/changes/archive/2026-08-24-prove-independent-execution-separation/implementation-report.md b/openspec/changes/archive/2026-08-24-prove-independent-execution-separation/implementation-report.md index e2fe2784..f89696d3 100644 --- a/openspec/changes/archive/2026-08-24-prove-independent-execution-separation/implementation-report.md +++ b/openspec/changes/archive/2026-08-24-prove-independent-execution-separation/implementation-report.md @@ -101,10 +101,10 @@ No second conformance review was run. - After the consolidated pass, `LocalSharedPressure.test.ts` passed **14/14** in 35.21s; the storage-policy migration suite passed **147/147**; and the native differential corpus, including four renamed-policy executions, passed **1/1** in 139.87s. -- `pnpm --filter @silk-effect/compiler documentation:policy` — **PASS**, 46 modules and no +- `pnpm --filter @silk-lang/compiler documentation:policy` — **PASS**, 46 modules and no violations. -- `pnpm --filter @silk-effect/compiler documentation:check` — **PASS**. -- `pnpm --filter @silk-effect/compiler documentation:examples` — **PASS**, 54 of 54 doctests after +- `pnpm --filter @silk-lang/compiler documentation:check` — **PASS**. +- `pnpm --filter @silk-lang/compiler documentation:examples` — **PASS**, 54 of 54 doctests after building the doctest package. ## Hard gates @@ -158,7 +158,7 @@ test and no timeout was raised. - Focused `LocalSharedPressure.test.ts`: **PASS**, 18/18 tests in 40.12s. The four actor-neutral cases completed in 4.313s, 5.696s, 3.281s, and 4.147s. -- Exact full compiler context, `pnpm --filter @silk-effect/compiler test:parallel`: **PASS**, 220 +- Exact full compiler context, `pnpm --filter @silk-lang/compiler test:parallel`: **PASS**, 220 files and 2,150 tests in 201.36s. This is gate-resume root-cause fix 1/3. No further repair was needed. diff --git a/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/design.md b/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/design.md index 1ecfd2ec..2a0271d9 100644 --- a/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/design.md +++ b/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/design.md @@ -11,7 +11,7 @@ See proposal.md — Why. Current state that shapes the approach: - React's real footprint is two things: hook-based lifecycle glue in `SilkEditor`, and `Hover.tsx`, which renders hover CommonMark via `createRoot` into the CodeMirror tooltip. - `LspDocument.inlayHints` exists (packages/lsp/src/Document.ts) with no consumer. -- Stdlib sources ship inside `@silk-effect/compiler` (`CompilerStdlib.sources`), so a browser +- Stdlib sources ship inside `@silk-lang/compiler` (`CompilerStdlib.sources`), so a browser bundle of the compiler resolves stdlib imports with no fetching. Labs proves in-browser compilation works today. - Doctest compiles each fence as one standalone module via `Analysis.ofSourceRealized(identity, @@ -40,8 +40,8 @@ See proposal.md — Why. Current state that shapes the approach: ## Decisions -**New package `@silk-effect/snippet`, not a `language` subpath.** The element needs -`@silk-effect/lsp`; `packages/language` deliberately has no `lsp` dependency and other consumers +**New package `@silk-lang/snippet`, not a `language` subpath.** The element needs +`@silk-lang/lsp`; `packages/language` deliberately has no `lsp` dependency and other consumers (TextMate, vscode) should not inherit one. Dependencies: `compiler`, `lsp`, `language`, CodeMirror packages, `mdast-util-from-markdown`. Two deliverables: an ESM library export (custom element class + registration function) and a self-registering IIFE/ESM bundle for script-tag use @@ -89,11 +89,11 @@ type="module">` in the page template. **The renderer's dependency boundary survives the bundle** *(decided during implementation)*. The site package charters itself — via two guard tests — as reading the documentation JSON and nothing -else: no `@silk-effect/*` runtime dependency, no workspace import in `src/`. The bundle crosses +else: no `@silk-lang/*` runtime dependency, no workspace import in `src/`. The bundle crosses that boundary as data, not types: `Site.render` stays pure and takes the bundle *contents* as an -option, and only the command shell (`Cli.ts`) resolves `@silk-effect/snippet/bundle` to a file +option, and only the command shell (`Cli.ts`) resolves `@silk-lang/snippet/bundle` to a file path and reads it. The guard tests were deliberately and visibly amended — exactly the edit their -own comments anticipate — to allowlist `@silk-effect/snippet` as an opaque asset supplier and to +own comments anticipate — to allowlist `@silk-lang/snippet` as an opaque asset supplier and to exempt only `Cli.ts` from the source scan; every renderer module remains import-free. Generated pages also carry a `silk-snippet:not(:defined)` style so an element that never upgrades (no JavaScript, or a library caller who shipped no bundle) still reads as a code block. diff --git a/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/proposal.md b/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/proposal.md index a3e1ea83..a71dbc63 100644 --- a/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/proposal.md +++ b/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/proposal.md @@ -11,8 +11,8 @@ any reporter that emits plain HTML embed live, compiler-accurate snippets with o ## What Changes - New framework-free package exposing a `` custom element built on the existing - CodeMirror integration (`@silk-effect/language`) and the synchronous language-server surface - (`@silk-effect/lsp/Document`). The element compiles its own content in the browser exactly as + CodeMirror integration (`@silk-lang/language`) and the synchronous language-server surface + (`@silk-lang/lsp/Document`). The element compiles its own content in the browser exactly as doctest does: one snippet, one standalone module. - Per-snippet feature flags as boolean attributes: syntax highlighting is always on; `diagnostics`, `hover`, `inlay-hints`, and `editable` are opt-in. Without semantic flags the element never @@ -50,7 +50,7 @@ any reporter that emits plain HTML embed live, compiler-accurate snippets with o ## Impact -- New package (working name `@silk-effect/snippet`), depending on `compiler`, `lsp`, `language`, +- New package (working name `@silk-lang/snippet`), depending on `compiler`, `lsp`, `language`, and CodeMirror. `packages/language` keeps its current dependency boundary (no `lsp` dependency). - `apps/docs/app/labs/editor.tsx` and `Hover.tsx` shrink to wrappers or are deleted in favor of the element; `workbench.tsx` and the rest of labs are untouched. diff --git a/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/tasks.md b/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/tasks.md index aa9867f7..3b98cdd4 100644 --- a/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/tasks.md +++ b/openspec/changes/archive/2026-08-26-extract-embeddable-silk-snippet-element/tasks.md @@ -2,7 +2,7 @@ ## 1. Package scaffold -- [x] 1.1 Create `packages/snippet` (`@silk-effect/snippet`) mirroring an existing package's +- [x] 1.1 Create `packages/snippet` (`@silk-lang/snippet`) mirroring an existing package's tsconfig/vitest/turbo wiring, with deps on `compiler`, `lsp`, `language`, CodeMirror packages, and `mdast-util-from-markdown` - [x] 1.2 Add the package to workspace/turbo config and verify `node scripts/turbo.mjs run build` diff --git a/openspec/changes/archive/2026-08-26-spike-ci-test-sharding/design.md b/openspec/changes/archive/2026-08-26-spike-ci-test-sharding/design.md index d2bbcd89..0fae8b54 100644 --- a/openspec/changes/archive/2026-08-26-spike-ci-test-sharding/design.md +++ b/openspec/changes/archive/2026-08-26-spike-ci-test-sharding/design.md @@ -7,7 +7,7 @@ See proposal.md for motivation. Constraints that shape the approach: - `pnpm check` = `biome check` → `turbo run build` → `turbo run typecheck test` → `test:scripts`. All turbo entry points go through `scripts/turbo.mjs`, which derives `--concurrency` from the host — shard jobs must keep using it for builds. -- `@silk-effect/compiler#test` is not just vitest: it chains generator checks +- `@silk-lang/compiler#test` is not just vitest: it chains generator checks (`unicode:check`, `stdlib:check`, `toolchain:check`), documentation checks/policy/examples, `test:parallel` (vitest, all files except `DriverNativeAcceptance.test.ts`), and `test:native-acceptance` (that one file, `--maxWorkers=1`). Only `test:parallel` is the @@ -29,7 +29,7 @@ the spike lives entirely in `.github/workflows/ci.yml`. ## Decisions 1. **Shard `test:parallel` only, via vitest's native `--shard=N/4`.** - `pnpm --filter @silk-effect/compiler run test:parallel -- --shard=N/4`. + `pnpm --filter @silk-lang/compiler run test:parallel -- --shard=N/4`. The generator/documentation checks are seconds — they stay serial. `DriverNativeAcceptance` is already forced to `--maxWorkers=1` and runs once, not per shard. *Alternative rejected:* splitting the turbo task — that's the follow-up cache work, not the @@ -38,7 +38,7 @@ the spike lives entirely in `.github/workflows/ci.yml`. 2. **Job topology: `validate` keeps everything except compiler vitest; a 4-way `compiler-tests` matrix runs the payload.** - `validate`: biome, `turbo run build`, `turbo run typecheck`, - `turbo run test --filter=!@silk-effect/compiler`, then the compiler's non-vitest checks and + `turbo run test --filter=!@silk-lang/compiler`, then the compiler's non-vitest checks and `test:native-acceptance` as explicit steps, then `test:scripts` and `release:candidate`. (Typecheck runs unfiltered so `compiler#typecheck` isn't lost.) - `compiler-tests` (matrix shard 1–4): checkout/setup/caches/install → `turbo run build` → diff --git a/openspec/changes/archive/2026-08-26-spike-ci-test-sharding/tasks.md b/openspec/changes/archive/2026-08-26-spike-ci-test-sharding/tasks.md index 52f454bc..bf0563d4 100644 --- a/openspec/changes/archive/2026-08-26-spike-ci-test-sharding/tasks.md +++ b/openspec/changes/archive/2026-08-26-spike-ci-test-sharding/tasks.md @@ -3,7 +3,7 @@ ## 1. Workflow changes (ci.yml only) - [x] 1.1 Split `validate`: replace `pnpm check` with explicit steps — biome, `turbo run build`, - `turbo run typecheck`, `turbo run test --filter=!@silk-effect/compiler`, compiler + `turbo run typecheck`, `turbo run test --filter=!@silk-lang/compiler`, compiler non-vitest checks (`unicode:check`, `stdlib:check`, `toolchain:check`, `documentation:policy`, `documentation:check`, `documentation:examples`), `test:native-acceptance`, `test:scripts` — keeping `release:candidate` diff --git a/openspec/changes/format-silk-doc-code-blocks/design.md b/openspec/changes/format-silk-doc-code-blocks/design.md index bf081113..9494cd28 100644 --- a/openspec/changes/format-silk-doc-code-blocks/design.md +++ b/openspec/changes/format-silk-doc-code-blocks/design.md @@ -3,7 +3,7 @@ The compiler-owned formatter currently accepts a lossless `SyntaxFile`, validates complete outer syntax, and prints comments as opaque byte slices. The CLI and LSP both invoke that operation, which is why their whole-document results agree. Parsed documentation lives in the optional -`@silk-effect/documentation` package: it normalizes `///` and `//!` tokens, parses CommonMark, and +`@silk-lang/documentation` package: it normalizes `///` and `//!` tokens, parses CommonMark, and maps document nodes back to source bytes. That package depends on the compiler, deliberately keeping Markdown out of ordinary compiler parsing and analysis. @@ -42,8 +42,8 @@ complete modules, while `silk,ignore` permits illustrative fragments. See the mo ### Put canonical orchestration in an optional formatter package -Create `@silk-effect/formatter` with public `Formatter` and package-owned error actors. It depends on -`@silk-effect/compiler` for Silk syntax and layout and on `@silk-effect/documentation` for CommonMark +Create `@silk-lang/formatter` with public `Formatter` and package-owned error actors. It depends on +`@silk-lang/compiler` for Silk syntax and layout and on `@silk-lang/documentation` for CommonMark documents and lossless documentation rewriting. The compiler's current `Formatter` actor becomes `SyntaxFormatter`: a lower-level, Markdown-neutral operation that validates and lays out one Silk syntax artifact while preserving comment atoms. `FormattedDocument` remains compiler-owned because @@ -57,7 +57,7 @@ than retained as an alias. This layering keeps the dependency graph acyclic: ```text -@silk-effect/compiler +@silk-lang/compiler ▲ ▲ │ │ documentation formatter ◀── compiler-cli / lsp @@ -67,7 +67,7 @@ documentation formatter ◀── compiler-cli / lsp Alternatives considered: -- Making the compiler depend on `@silk-effect/documentation` creates a cycle and violates the +- Making the compiler depend on `@silk-lang/documentation` creates a cycle and violates the established optional Markdown boundary. - Adding another Markdown parser or fence scanner to the compiler duplicates CommonMark semantics and will disagree on containers, fence forms, or info strings. @@ -135,7 +135,7 @@ same semantic trailing spaces from physical comment lines. ### Let a documentation-owned CodeFence actor own lossless reconstruction -Add a `CodeFence` actor to `@silk-effect/documentation`. It parses one compiler-owned `DocBlock` +Add a `CodeFence` actor to `@silk-lang/documentation`. It parses one compiler-owned `DocBlock` against its owning `SourceFile` through the same internal CommonMark seam as `Document`, and returns source-ordered immutable fence values carrying the raw info string, CommonMark language and metadata, whether an authored matching closer exists, body value, and outer source range. Keeping these fields @@ -255,7 +255,7 @@ the release-candidate check. compiler-owned complete documentation-block inventory, migrate compiler-owned tests, and delete the old formatter export. 2. Add and verify the documentation-owned `CodeFence` parsing and reconstruction actor. -3. Add `@silk-effect/formatter`, its public actors, package exports, error mapping, staged pipeline, +3. Add `@silk-lang/formatter`, its public actors, package exports, error mapping, staged pipeline, and focused tests. 4. Move compiler CLI and LSP whole-document adapters to the public formatter and add parity tests. 5. Format shipped Silk sources, regenerate any changed source inventory, add release metadata, and diff --git a/openspec/changes/format-silk-doc-code-blocks/proposal.md b/openspec/changes/format-silk-doc-code-blocks/proposal.md index c261c501..ccab1160 100644 --- a/openspec/changes/format-silk-doc-code-blocks/proposal.md +++ b/openspec/changes/format-silk-doc-code-blocks/proposal.md @@ -41,8 +41,8 @@ None. - Affects `packages/compiler` formatter naming and exports, documentation parsing/rewrite support, compiler CLI formatting, LSP whole-document formatting, and their tests. -- Adds a workspace formatter package depending on `@silk-effect/compiler` and - `@silk-effect/documentation`; ordinary compiler parsing and analysis retain no Markdown runtime +- Adds a workspace formatter package depending on `@silk-lang/compiler` and + `@silk-lang/documentation`; ordinary compiler parsing and analysis retain no Markdown runtime dependency. - Changes canonical bytes for `.silk` files whose active fenced examples are not already formatted, including generated standard-library source inventory when those files change. diff --git a/openspec/changes/format-silk-doc-code-blocks/tasks.md b/openspec/changes/format-silk-doc-code-blocks/tasks.md index 8d9c3b33..bed2f173 100644 --- a/openspec/changes/format-silk-doc-code-blocks/tasks.md +++ b/openspec/changes/format-silk-doc-code-blocks/tasks.md @@ -1,7 +1,7 @@ ## 1. Separate Syntax Layout from Canonical Source Formatting -- [ ] 1.1 Rename the compiler-owned `Formatter` actor, error, trace name, module, barrel export, and package subpath to `SyntaxFormatter`, delete the old export without an alias, and verify `pnpm --filter @silk-effect/compiler typecheck` passes. -- [ ] 1.2 Migrate compiler-owned formatting tests and support modules to `SyntaxFormatter`, retain their existing grammar, comment-order, damage, and idempotence assertions, and verify no `@silk-effect/compiler/Formatter` import or compiler `Formatter` namespace export remains. +- [ ] 1.1 Rename the compiler-owned `Formatter` actor, error, trace name, module, barrel export, and package subpath to `SyntaxFormatter`, delete the old export without an alias, and verify `pnpm --filter @silk-lang/compiler typecheck` passes. +- [ ] 1.2 Migrate compiler-owned formatting tests and support modules to `SyntaxFormatter`, retain their existing grammar, comment-order, damage, and idempotence assertions, and verify no `@silk-lang/compiler/Formatter` import or compiler `Formatter` namespace export remains. - [ ] 1.3 Add compiler-owned `DocBlock.all` with the complete documentable-node allowlist, source-ordering, and span deduplication shared with analysis, and verify focused compiler tests include module, declaration, conformance, field, type-parameter, value-parameter, service-operation, and implementation-operation blocks while excluding statement-local, trailing, unattached `///`, and nonleading `//!` trivia. ## 2. Add Lossless Documentation Fence Rewriting @@ -13,15 +13,15 @@ ## 3. Build the Canonical Formatter Package -- [ ] 3.1 Scaffold and install `@silk-effect/formatter` with explicit `Formatter` and error actor exports, compiler/documentation dependencies, strict TypeScript and Vitest configuration, workspace metadata, lockfile entries, and a changeset, then verify a clean package typecheck resolves every public subpath. +- [ ] 3.1 Scaffold and install `@silk-lang/formatter` with explicit `Formatter` and error actor exports, compiler/documentation dependencies, strict TypeScript and Vitest configuration, workspace metadata, lockfile entries, and a changeset, then verify a clean package typecheck resolves every public subpath. - [ ] 3.2 Implement the public staged pipeline against original provenance: retain one `SyntaxFormatter` outer result, inventory and recursively format active bodies from original bytes, pair fences into the canonical outer destination by ordinal and normalization-stable structure, inject bodies after layout, reparse for integrity, and compare final bytes with the original; verify the no-active-fence fast path, unchanged active bodies, and opening/closing fence lines with removable terminal spaces all succeed without false infrastructure failure. - [ ] 3.3 Add typed outer-syntax, embedded-syntax, malformed-active-fence, and documentation-infrastructure failure reasons; retain the original top-level physical fence range, nested relative range path, and inner diagnostics; and verify noncanonical/CRLF bytes before a damaged fence do not shift the reported original range and no partial bytes escape. -- [ ] 3.4 Add one formatter contract test file covering declaration and module examples, multiple and recursively nested examples, metadata-bearing `silk`, `silk,ignore`, other languages, unlabelled fences, unclosed fences, semantic errors, multiline literals, original-byte changed detection, embedded grammatical preservation, and idempotence, then verify `pnpm --filter @silk-effect/formatter test` passes. +- [ ] 3.4 Add one formatter contract test file covering declaration and module examples, multiple and recursively nested examples, metadata-bearing `silk`, `silk,ignore`, other languages, unlabelled fences, unclosed fences, semantic errors, multiline literals, original-byte changed detection, embedded grammatical preservation, and idempotence, then verify `pnpm --filter @silk-lang/formatter test` passes. ## 4. Move User-Facing Adapters to the Canonical Formatter -- [ ] 4.1 Add and lock the compiler CLI runtime dependency on `@silk-effect/formatter`, replace formatting imports and outcome types, migrate `FormatCommand` diagnostics/reporting to outer and embedded error shapes, classify Silk and malformed-fence source damage as `Damaged`/exit 1 and documentation infrastructure as `Failed`/exit 2, and verify workflow/command tests cover writes, `--check`, continuation across files, original fence location, and atomic refusal when any active fence is damaged. -- [ ] 4.2 Add and lock the LSP runtime dependency on `@silk-effect/formatter`, replace whole-document formatting imports, add an embedded-source formatting fixture, and verify the LSP test produces exactly the same complete source bytes as the CLI expectation while returning no edit for embedded syntax damage. +- [ ] 4.1 Add and lock the compiler CLI runtime dependency on `@silk-lang/formatter`, replace formatting imports and outcome types, migrate `FormatCommand` diagnostics/reporting to outer and embedded error shapes, classify Silk and malformed-fence source damage as `Damaged`/exit 1 and documentation infrastructure as `Failed`/exit 2, and verify workflow/command tests cover writes, `--check`, continuation across files, original fence location, and atomic refusal when any active fence is damaged. +- [ ] 4.2 Add and lock the LSP runtime dependency on `@silk-lang/formatter`, replace whole-document formatting imports, add an embedded-source formatting fixture, and verify the LSP test produces exactly the same complete source bytes as the CLI expectation while returning no edit for embedded syntax damage. - [ ] 4.3 Classify every remaining repository formatter call as low-level syntax-layout coverage or user-facing canonical formatting, migrate it to the corresponding actor, and verify a repository search finds no stale compiler `Formatter` name or adapter bypass of the public formatter. ## 5. Migrate Shipped Source and Verify the Release diff --git a/openspec/changes/split-ci-validate-critical-path/proposal.md b/openspec/changes/split-ci-validate-critical-path/proposal.md index 53d60bfb..07f20844 100644 --- a/openspec/changes/split-ci-validate-critical-path/proposal.md +++ b/openspec/changes/split-ci-validate-critical-path/proposal.md @@ -13,7 +13,7 @@ of all compiler test CPU) — so shard 1 walls at ~8.5 min while the others fini - Split `.github/workflows/ci.yml`'s `validate` job: - `test:native-acceptance` (plus whatever native-cache save it owns) → its own job; - - `turbo run test --filter='!@silk-effect/compiler'` → its own job; + - `turbo run test --filter='!@silk-lang/compiler'` → its own job; - `validate` keeps biome, build, typecheck, the compiler's generator/documentation checks, `test:scripts`, and `release:candidate`. - Re-measure the gate (expect ~13 min, bounded by native acceptance). diff --git a/openspec/specs/cursor-extension/spec.md b/openspec/specs/cursor-extension/spec.md index 20bfb312..130c7d44 100644 --- a/openspec/specs/cursor-extension/spec.md +++ b/openspec/specs/cursor-extension/spec.md @@ -75,7 +75,7 @@ rebuilding the language-server binary when the extension path is already correct #### Scenario: Contributor updates only the language server -- **WHEN** a contributor rebuilds `@silk-effect/lsp` while the extension is already loaded from +- **WHEN** a contributor rebuilds `@silk-lang/lsp` while the extension is already loaded from the correct checkout - **THEN** documentation tells them to run `Silk: Restart Language Server` rather than reinstalling the symlink diff --git a/openspec/specs/language-server-structure/spec.md b/openspec/specs/language-server-structure/spec.md index 562b2b1a..5e99a093 100644 --- a/openspec/specs/language-server-structure/spec.md +++ b/openspec/specs/language-server-structure/spec.md @@ -27,7 +27,7 @@ requests the whole document. The semantic token legend SHALL name only standard protocol token types, and every type it names SHALL be reachable from a compiler token kind or a semantic occurrence. The keyword, comment, string, number, and operator types SHALL be decided by the lexer's own token kinds — the same kinds -the TextMate grammar in `@silk-effect/language` colors — so a keyword added to the compiler reaches +the TextMate grammar in `@silk-lang/language` colors — so a keyword added to the compiler reaches both the grammar and the legend from one definition. #### Scenario: Compare the legend with the grammar's keywords diff --git a/openspec/specs/llvm-builder-parity/spec.md b/openspec/specs/llvm-builder-parity/spec.md index 428c19f6..e31d7b4c 100644 --- a/openspec/specs/llvm-builder-parity/spec.md +++ b/openspec/specs/llvm-builder-parity/spec.md @@ -52,7 +52,7 @@ The system SHALL maintain benchmark evidence for any imperative or untraced enco The system SHALL publish every public actor through an explicit root namespace and package subpath export, include usage and compatibility documentation, preserve required upstream notices, and pass the repository release-candidate validation. #### Scenario: Validate the packed package -- **WHEN** the release-candidate suite packs and imports `@silk-effect/llvm` +- **WHEN** the release-candidate suite packs and imports `@silk-lang/llvm` - **THEN** all documented root and deep imports resolve as self-contained ESM without source files or undeclared runtime dependencies ### Requirement: Reproducible upstream updates diff --git a/openspec/specs/llvm-error-model/spec.md b/openspec/specs/llvm-error-model/spec.md index a71b609f..02e5a450 100644 --- a/openspec/specs/llvm-error-model/spec.md +++ b/openspec/specs/llvm-error-model/spec.md @@ -7,7 +7,7 @@ Defines an LLVM-specific typed failure contract so callers can recover from inva ## Requirements ### Requirement: LLVM-specific public error identity -The package SHALL expose expected LLVM operation failures as a yieldable `LlvmError` tagged with `LlvmError`, and SHALL export that contract from `@silk-effect/llvm/LlvmError` and the package root. +The package SHALL expose expected LLVM operation failures as a yieldable `LlvmError` tagged with `LlvmError`, and SHALL export that contract from `@silk-lang/llvm/LlvmError` and the package root. #### Scenario: Caller handles an LLVM failure - **WHEN** a public LLVM operation rejects caller input @@ -15,7 +15,7 @@ The package SHALL expose expected LLVM operation failures as a yieldable `LlvmEr - **AND** the caller can recover with `catchTag('LlvmError', ...)` #### Scenario: Caller imports the error contract -- **WHEN** a consumer imports the package root or `@silk-effect/llvm/LlvmError` +- **WHEN** a consumer imports the package root or `@silk-lang/llvm/LlvmError` - **THEN** the exported error class is named `LlvmError` and carries the canonical LLVM error contract ### Requirement: Expected invalid inputs stay in the typed channel diff --git a/package.json b/package.json index 53371408..ab10a53d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "silk-effect", + "name": "silk-lang", "version": "0.0.0", "private": true, "type": "module", diff --git a/packages/compiler-cli/README.md b/packages/compiler-cli/README.md index 969e61e1..f068cc88 100644 --- a/packages/compiler-cli/README.md +++ b/packages/compiler-cli/README.md @@ -1,4 +1,4 @@ -# @silk-effect/compiler-cli +# @silk-lang/compiler-cli The project-oriented command line interface for the Silk Effect bootstrap compiler. diff --git a/packages/compiler-cli/package.json b/packages/compiler-cli/package.json index 0b6188c7..419bf9d0 100644 --- a/packages/compiler-cli/package.json +++ b/packages/compiler-cli/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/compiler-cli", + "name": "@silk-lang/compiler-cli", "version": "0.0.0", "description": "Command line interface for the Silk Effect bootstrap compiler.", "license": "MIT", @@ -130,9 +130,9 @@ }, "dependencies": { "@effect/platform-node": "4.0.0-beta.103", - "@silk-effect/compiler": "workspace:*", - "@silk-effect/documentation": "workspace:*", - "@silk-effect/formatter": "workspace:*", + "@silk-lang/compiler": "workspace:*", + "@silk-lang/documentation": "workspace:*", + "@silk-lang/formatter": "workspace:*", "effect": "catalog:", "smol-toml": "^1.7.1" }, diff --git a/packages/compiler-cli/src/BuildBatch.ts b/packages/compiler-cli/src/BuildBatch.ts index ac6065e5..70f4b2cd 100644 --- a/packages/compiler-cli/src/BuildBatch.ts +++ b/packages/compiler-cli/src/BuildBatch.ts @@ -1,5 +1,5 @@ -import * as BackendRegistry from '@silk-effect/compiler/BackendRegistry' -import type * as ToolchainPlan from '@silk-effect/compiler/ToolchainPlan' +import * as BackendRegistry from '@silk-lang/compiler/BackendRegistry' +import type * as ToolchainPlan from '@silk-lang/compiler/ToolchainPlan' import * as Data from 'effect/Data' import * as Result from 'effect/Result' import * as BuildPlan from './BuildPlan.js' diff --git a/packages/compiler-cli/src/BuildExeCommand.ts b/packages/compiler-cli/src/BuildExeCommand.ts index a636d307..c4996c3d 100644 --- a/packages/compiler-cli/src/BuildExeCommand.ts +++ b/packages/compiler-cli/src/BuildExeCommand.ts @@ -1,8 +1,8 @@ -import type * as HeapObservation from '@silk-effect/compiler/HeapObservation' -import * as LlvmBackend from '@silk-effect/compiler/LlvmBackend' -import * as NativeToolchain from '@silk-effect/compiler/NativeToolchain' -import * as Target from '@silk-effect/compiler/Target' -import type * as ToolchainPlan from '@silk-effect/compiler/ToolchainPlan' +import type * as HeapObservation from '@silk-lang/compiler/HeapObservation' +import * as LlvmBackend from '@silk-lang/compiler/LlvmBackend' +import * as NativeToolchain from '@silk-lang/compiler/NativeToolchain' +import * as Target from '@silk-lang/compiler/Target' +import type * as ToolchainPlan from '@silk-lang/compiler/ToolchainPlan' import * as Console from 'effect/Console' import * as Effect from 'effect/Effect' import type * as FileSystem from 'effect/FileSystem' diff --git a/packages/compiler-cli/src/BuildPlan.ts b/packages/compiler-cli/src/BuildPlan.ts index 9f0adf99..029ec73b 100644 --- a/packages/compiler-cli/src/BuildPlan.ts +++ b/packages/compiler-cli/src/BuildPlan.ts @@ -1,9 +1,9 @@ import { join } from 'node:path' -import type * as Backend from '@silk-effect/compiler/Backend' -import * as BackendRegistry from '@silk-effect/compiler/BackendRegistry' -import * as NativeToolchain from '@silk-effect/compiler/NativeToolchain' -import * as Target from '@silk-effect/compiler/Target' -import type * as ToolchainPlan from '@silk-effect/compiler/ToolchainPlan' +import type * as Backend from '@silk-lang/compiler/Backend' +import * as BackendRegistry from '@silk-lang/compiler/BackendRegistry' +import * as NativeToolchain from '@silk-lang/compiler/NativeToolchain' +import * as Target from '@silk-lang/compiler/Target' +import type * as ToolchainPlan from '@silk-lang/compiler/ToolchainPlan' import * as Data from 'effect/Data' import * as Result from 'effect/Result' import * as Project from './Project.js' diff --git a/packages/compiler-cli/src/DocumentationWorkflow.ts b/packages/compiler-cli/src/DocumentationWorkflow.ts index 9fd13bbf..165166c9 100644 --- a/packages/compiler-cli/src/DocumentationWorkflow.ts +++ b/packages/compiler-cli/src/DocumentationWorkflow.ts @@ -1,8 +1,8 @@ -import * as Analysis from '@silk-effect/compiler/Analysis' -import * as Diagnostic from '@silk-effect/compiler/Diagnostic' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as Json from '@silk-effect/documentation/Json' -import * as DocumentationProject from '@silk-effect/documentation/Project' +import * as Analysis from '@silk-lang/compiler/Analysis' +import * as Diagnostic from '@silk-lang/compiler/Diagnostic' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as Json from '@silk-lang/documentation/Json' +import * as DocumentationProject from '@silk-lang/documentation/Project' import * as Console from 'effect/Console' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' diff --git a/packages/compiler-cli/src/FileSourceResolver.ts b/packages/compiler-cli/src/FileSourceResolver.ts index 737235b9..9a7a7afb 100644 --- a/packages/compiler-cli/src/FileSourceResolver.ts +++ b/packages/compiler-cli/src/FileSourceResolver.ts @@ -1,6 +1,6 @@ -import * as SourceOrigin from '@silk-effect/compiler/SourceOrigin' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as Stdlib from '@silk-effect/compiler/Stdlib' +import * as SourceOrigin from '@silk-lang/compiler/SourceOrigin' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as Stdlib from '@silk-lang/compiler/Stdlib' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' import * as Layer from 'effect/Layer' diff --git a/packages/compiler-cli/src/FormatWorkflow.ts b/packages/compiler-cli/src/FormatWorkflow.ts index dd15525e..332ad1b7 100644 --- a/packages/compiler-cli/src/FormatWorkflow.ts +++ b/packages/compiler-cli/src/FormatWorkflow.ts @@ -1,9 +1,9 @@ -import * as FormattedDocument from '@silk-effect/compiler/FormattedDocument' -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as Parser from '@silk-effect/compiler/Parser' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as Formatter from '@silk-effect/formatter/Formatter' -import * as FormatterError from '@silk-effect/formatter/FormatterError' +import * as FormattedDocument from '@silk-lang/compiler/FormattedDocument' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as Parser from '@silk-lang/compiler/Parser' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as Formatter from '@silk-lang/formatter/Formatter' +import * as FormatterError from '@silk-lang/formatter/FormatterError' import * as Data from 'effect/Data' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' diff --git a/packages/compiler-cli/src/Project.ts b/packages/compiler-cli/src/Project.ts index 007bd8c3..824f8fec 100644 --- a/packages/compiler-cli/src/Project.ts +++ b/packages/compiler-cli/src/Project.ts @@ -1,4 +1,4 @@ -import type * as Backend from '@silk-effect/compiler/Backend' +import type * as Backend from '@silk-lang/compiler/Backend' import * as Data from 'effect/Data' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' diff --git a/packages/compiler-cli/src/ProjectOptions.ts b/packages/compiler-cli/src/ProjectOptions.ts index 9e9e616c..4bd08238 100644 --- a/packages/compiler-cli/src/ProjectOptions.ts +++ b/packages/compiler-cli/src/ProjectOptions.ts @@ -1,5 +1,5 @@ -import * as Target from '@silk-effect/compiler/Target' -import type * as ToolchainPlan from '@silk-effect/compiler/ToolchainPlan' +import * as Target from '@silk-lang/compiler/Target' +import type * as ToolchainPlan from '@silk-lang/compiler/ToolchainPlan' import * as Data from 'effect/Data' import * as Result from 'effect/Result' import { Flag } from 'effect/unstable/cli' diff --git a/packages/compiler-cli/src/Report.ts b/packages/compiler-cli/src/Report.ts index 9bb0e726..4730acd5 100644 --- a/packages/compiler-cli/src/Report.ts +++ b/packages/compiler-cli/src/Report.ts @@ -1,12 +1,12 @@ -import type * as Backend from '@silk-effect/compiler/Backend' -import type * as Diagnostic from '@silk-effect/compiler/Diagnostic' -import type * as Driver from '@silk-effect/compiler/Driver' -import type * as Mir from '@silk-effect/compiler/Mir' -import type * as NativeToolchain from '@silk-effect/compiler/NativeToolchain' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import type * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as ToolchainIntegrity from '@silk-effect/compiler/ToolchainIntegrity' -import * as Type from '@silk-effect/compiler/Type' +import type * as Backend from '@silk-lang/compiler/Backend' +import type * as Diagnostic from '@silk-lang/compiler/Diagnostic' +import type * as Driver from '@silk-lang/compiler/Driver' +import type * as Mir from '@silk-lang/compiler/Mir' +import type * as NativeToolchain from '@silk-lang/compiler/NativeToolchain' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import type * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as ToolchainIntegrity from '@silk-lang/compiler/ToolchainIntegrity' +import * as Type from '@silk-lang/compiler/Type' import type * as Path from 'effect/Path' import * as FileSourceResolver from './FileSourceResolver.js' diff --git a/packages/compiler-cli/src/SourceEntry.ts b/packages/compiler-cli/src/SourceEntry.ts index e5a2e123..7d69c7c1 100644 --- a/packages/compiler-cli/src/SourceEntry.ts +++ b/packages/compiler-cli/src/SourceEntry.ts @@ -1,4 +1,4 @@ -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' import * as Data from 'effect/Data' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' diff --git a/packages/compiler-cli/src/TargetSelector.ts b/packages/compiler-cli/src/TargetSelector.ts index 547132a3..cc08083f 100644 --- a/packages/compiler-cli/src/TargetSelector.ts +++ b/packages/compiler-cli/src/TargetSelector.ts @@ -1,5 +1,5 @@ -import * as NativeToolchain from '@silk-effect/compiler/NativeToolchain' -import * as Target from '@silk-effect/compiler/Target' +import * as NativeToolchain from '@silk-lang/compiler/NativeToolchain' +import * as Target from '@silk-lang/compiler/Target' import * as Data from 'effect/Data' import * as Result from 'effect/Result' diff --git a/packages/compiler-cli/src/Workflow.ts b/packages/compiler-cli/src/Workflow.ts index d7c533e9..e30e1036 100644 --- a/packages/compiler-cli/src/Workflow.ts +++ b/packages/compiler-cli/src/Workflow.ts @@ -1,12 +1,12 @@ -import * as Analysis from '@silk-effect/compiler/Analysis' -import type * as Backend from '@silk-effect/compiler/Backend' -import * as Diagnostic from '@silk-effect/compiler/Diagnostic' -import * as Driver from '@silk-effect/compiler/Driver' -import type * as HeapObservation from '@silk-effect/compiler/HeapObservation' -import type * as NativeToolchain from '@silk-effect/compiler/NativeToolchain' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import type * as Target from '@silk-effect/compiler/Target' -import type * as ToolchainPlan from '@silk-effect/compiler/ToolchainPlan' +import * as Analysis from '@silk-lang/compiler/Analysis' +import type * as Backend from '@silk-lang/compiler/Backend' +import * as Diagnostic from '@silk-lang/compiler/Diagnostic' +import * as Driver from '@silk-lang/compiler/Driver' +import type * as HeapObservation from '@silk-lang/compiler/HeapObservation' +import type * as NativeToolchain from '@silk-lang/compiler/NativeToolchain' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import type * as Target from '@silk-lang/compiler/Target' +import type * as ToolchainPlan from '@silk-lang/compiler/ToolchainPlan' import * as Console from 'effect/Console' import * as Effect from 'effect/Effect' import * as Fiber from 'effect/Fiber' diff --git a/packages/compiler-cli/src/bin.ts b/packages/compiler-cli/src/bin.ts index 56ee02e3..5793f4af 100644 --- a/packages/compiler-cli/src/bin.ts +++ b/packages/compiler-cli/src/bin.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node import { NodeRuntime, NodeServices } from '@effect/platform-node' -import * as NodeHeapObservation from '@silk-effect/compiler/NodeHeapObservation' +import * as NodeHeapObservation from '@silk-lang/compiler/NodeHeapObservation' import * as Effect from 'effect/Effect' import { Command } from 'effect/unstable/cli' import * as Cli from './Cli.js' diff --git a/packages/compiler-cli/test/BuildBatch.test.ts b/packages/compiler-cli/test/BuildBatch.test.ts index 9c26db27..86aabf12 100644 --- a/packages/compiler-cli/test/BuildBatch.test.ts +++ b/packages/compiler-cli/test/BuildBatch.test.ts @@ -1,5 +1,5 @@ import { assert, it } from '@effect/vitest' -import * as SourceFile from '@silk-effect/compiler/SourceFile' +import * as SourceFile from '@silk-lang/compiler/SourceFile' import * as Result from 'effect/Result' import * as BuildBatch from '../src/BuildBatch.js' import type * as Project from '../src/Project.js' diff --git a/packages/compiler-cli/test/BuildPlan.test.ts b/packages/compiler-cli/test/BuildPlan.test.ts index 38d34c76..bf4a3798 100644 --- a/packages/compiler-cli/test/BuildPlan.test.ts +++ b/packages/compiler-cli/test/BuildPlan.test.ts @@ -1,8 +1,8 @@ import { assert, it } from '@effect/vitest' -import * as LlvmBackend from '@silk-effect/compiler/LlvmBackend' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as Target from '@silk-effect/compiler/Target' -import * as WasmBackend from '@silk-effect/compiler/WasmBackend' +import * as LlvmBackend from '@silk-lang/compiler/LlvmBackend' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as Target from '@silk-lang/compiler/Target' +import * as WasmBackend from '@silk-lang/compiler/WasmBackend' import * as Result from 'effect/Result' import * as BuildPlan from '../src/BuildPlan.js' import type * as Project from '../src/Project.js' diff --git a/packages/compiler-cli/test/CompilerHost.ts b/packages/compiler-cli/test/CompilerHost.ts index 4fe5ba41..f13b898d 100644 --- a/packages/compiler-cli/test/CompilerHost.ts +++ b/packages/compiler-cli/test/CompilerHost.ts @@ -1,5 +1,5 @@ import { NodeServices } from '@effect/platform-node' -import * as HeapObservation from '@silk-effect/compiler/HeapObservation' +import * as HeapObservation from '@silk-lang/compiler/HeapObservation' import * as Layer from 'effect/Layer' /** Replaceable host services for compiler CLI tests. */ diff --git a/packages/compiler-cli/test/FileSourceResolver.test.ts b/packages/compiler-cli/test/FileSourceResolver.test.ts index 31e9c415..94b60ae7 100644 --- a/packages/compiler-cli/test/FileSourceResolver.test.ts +++ b/packages/compiler-cli/test/FileSourceResolver.test.ts @@ -1,7 +1,7 @@ import { pathToFileURL } from 'node:url' import { NodeServices } from '@effect/platform-node' import { assert, it } from '@effect/vitest' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' import * as Option from 'effect/Option' diff --git a/packages/compiler-cli/test/Report.test.ts b/packages/compiler-cli/test/Report.test.ts index 7e418412..998984f5 100644 --- a/packages/compiler-cli/test/Report.test.ts +++ b/packages/compiler-cli/test/Report.test.ts @@ -1,10 +1,10 @@ import { assert, it } from '@effect/vitest' -import * as Backend from '@silk-effect/compiler/Backend' -import type * as Diagnostic from '@silk-effect/compiler/Diagnostic' -import type * as Driver from '@silk-effect/compiler/Driver' -import * as NativeToolchain from '@silk-effect/compiler/NativeToolchain' -import * as Target from '@silk-effect/compiler/Target' -import * as ToolchainIntegrity from '@silk-effect/compiler/ToolchainIntegrity' +import * as Backend from '@silk-lang/compiler/Backend' +import type * as Diagnostic from '@silk-lang/compiler/Diagnostic' +import type * as Driver from '@silk-lang/compiler/Driver' +import * as NativeToolchain from '@silk-lang/compiler/NativeToolchain' +import * as Target from '@silk-lang/compiler/Target' +import * as ToolchainIntegrity from '@silk-lang/compiler/ToolchainIntegrity' import * as Report from '../src/Report.js' const ascii = (text: string): Uint8Array => diff --git a/packages/compiler-cli/test/Workflow.test.ts b/packages/compiler-cli/test/Workflow.test.ts index e861f9d9..efc0a06b 100644 --- a/packages/compiler-cli/test/Workflow.test.ts +++ b/packages/compiler-cli/test/Workflow.test.ts @@ -1,7 +1,7 @@ import { existsSync } from 'node:fs' import { assert, it } from '@effect/vitest' -import * as LlvmBackend from '@silk-effect/compiler/LlvmBackend' -import * as NativeToolchain from '@silk-effect/compiler/NativeToolchain' +import * as LlvmBackend from '@silk-lang/compiler/LlvmBackend' +import * as NativeToolchain from '@silk-lang/compiler/NativeToolchain' import * as Effect from 'effect/Effect' import * as Fiber from 'effect/Fiber' import * as FileSystem from 'effect/FileSystem' diff --git a/packages/compiler/README.md b/packages/compiler/README.md index 386a3652..27305464 100644 --- a/packages/compiler/README.md +++ b/packages/compiler/README.md @@ -1,6 +1,6 @@ -# `@silk-effect/compiler` +# `@silk-lang/compiler` -`@silk-effect/compiler` is the Effect-native stage-0 compiler for Silk. It accepts arbitrary source +`@silk-lang/compiler` is the Effect-native stage-0 compiler for Silk. It accepts arbitrary source bytes, preserves lossless syntax and recovery facts, resolves a complete module closure, and realizes valid programs through HIR, ownership, specialization, target layout, MIR, evaluation, and backend emission. @@ -10,7 +10,7 @@ actors remain importable where their immutable data types are part of an answer, not assemble a second compiler by invoking phases directly. ```ts -import { Analysis } from '@silk-effect/compiler' +import { Analysis } from '@silk-lang/compiler' import * as Effect from 'effect/Effect' const program = Effect.gen(function* () { @@ -119,7 +119,7 @@ points to the shipped `.silk` source rather than virtual intrinsic files. `///` declaration documentation and leading `//!` module documentation remain lossless source tokens. `DocBlock` attaches them to modules, declarations, type parameters, parameters, fields, implementations, and implementation operations. Markdown parsing and generated documentation -models belong to `@silk-effect/documentation` so ordinary compilation does not pay that cost. +models belong to `@silk-lang/documentation` so ordinary compilation does not pay that cost. ## Byte and span conventions diff --git a/packages/compiler/benchmarks/README.md b/packages/compiler/benchmarks/README.md index 090667bd..1a72b448 100644 --- a/packages/compiler/benchmarks/README.md +++ b/packages/compiler/benchmarks/README.md @@ -1,6 +1,6 @@ # Lexer benchmark -Run `pnpm --filter @silk-effect/compiler lexer:bench` to scan a deterministic one-mebibyte source +Run `pnpm --filter @silk-lang/compiler lexer:bench` to scan a deterministic one-mebibyte source snapshot ten times after three warm-up runs. The script reports median and minimum throughput and retains the observed token count so the work cannot be discarded. diff --git a/packages/compiler/package.json b/packages/compiler/package.json index 4852c3e9..2278a594 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/compiler", + "name": "@silk-lang/compiler", "version": "0.0.0", "description": "Byte-oriented bootstrap compiler primitives for Silk Effect.", "license": "MIT", @@ -427,13 +427,13 @@ "typecheck": "pnpm unicode:check && pnpm stdlib:check && pnpm toolchain:check && tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json", "documentation:generate": "node scripts/generate-documentation.mjs", "documentation:check": "node scripts/generate-documentation.mjs --check", - "documentation:examples": "pnpm --filter @silk-effect/doctest stdlib:check", + "documentation:examples": "pnpm --filter @silk-lang/doctest stdlib:check", "documentation:inventory": "node scripts/inventory-stdlib-documentation.mjs", "documentation:policy": "node scripts/check-stdlib-documentation.mjs" }, "dependencies": { - "@silk-effect/llvm": "workspace:*", - "@silk-effect/wasm": "workspace:*", + "@silk-lang/llvm": "workspace:*", + "@silk-lang/wasm": "workspace:*", "effect": "catalog:" }, "devDependencies": { diff --git a/packages/compiler/scripts/check-stdlib-documentation.mjs b/packages/compiler/scripts/check-stdlib-documentation.mjs index 2fb065e6..297798a2 100644 --- a/packages/compiler/scripts/check-stdlib-documentation.mjs +++ b/packages/compiler/scripts/check-stdlib-documentation.mjs @@ -1,7 +1,7 @@ // Checks maintained documentation policy across the canonical standard-library manifest. // // Run after building the compiler and documentation packages: -// pnpm --filter @silk-effect/compiler documentation:policy +// pnpm --filter @silk-lang/compiler documentation:policy import { readFileSync } from 'node:fs' import * as Effect from 'effect/Effect' diff --git a/packages/compiler/scripts/generate-documentation.mjs b/packages/compiler/scripts/generate-documentation.mjs index 4d68e422..6bd01a1f 100644 --- a/packages/compiler/scripts/generate-documentation.mjs +++ b/packages/compiler/scripts/generate-documentation.mjs @@ -4,7 +4,7 @@ // rendered signatures and prose are exactly the `///` comments in stdlib/silk/*.silk. The // diagnostic index comes from the code constants and message templates in src/Diagnostic.ts. // -// Run with: pnpm --filter @silk-effect/compiler documentation:generate +// Run with: pnpm --filter @silk-lang/compiler documentation:generate import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs' import { fileURLToPath } from 'node:url' @@ -326,7 +326,7 @@ const diagnosticsPage = () => { 'The prefix names the compiler phase that reports it. Regenerate this page with:', '', '```console', - '$ pnpm --filter @silk-effect/compiler documentation:generate', + '$ pnpm --filter @silk-lang/compiler documentation:generate', '```', '', '| Prefix | Phase | Codes |', @@ -379,7 +379,7 @@ const write = (name, contents) => { if (check) { if (!existsSync(destination)) { console.error( - `${name} is missing. Run pnpm --filter @silk-effect/compiler documentation:generate`, + `${name} is missing. Run pnpm --filter @silk-lang/compiler documentation:generate`, ) process.exitCode = 1 return @@ -387,7 +387,7 @@ const write = (name, contents) => { const existing = readFileSync(destination, 'utf8') if (existing !== contents) { console.error( - `${name} is stale. Run pnpm --filter @silk-effect/compiler documentation:generate`, + `${name} is stale. Run pnpm --filter @silk-lang/compiler documentation:generate`, ) process.exitCode = 1 } @@ -405,14 +405,14 @@ const writeStdlib = (files) => { for (const path of expected.keys()) if (!actual.includes(path)) { console.error( - `stdlib/${path} is missing. Run pnpm --filter @silk-effect/compiler documentation:generate`, + `stdlib/${path} is missing. Run pnpm --filter @silk-lang/compiler documentation:generate`, ) process.exitCode = 1 } for (const path of actual) if (!expected.has(path)) { console.error( - `stdlib/${path} is extra or renamed. Run pnpm --filter @silk-effect/compiler documentation:generate`, + `stdlib/${path} is extra or renamed. Run pnpm --filter @silk-lang/compiler documentation:generate`, ) process.exitCode = 1 } @@ -421,7 +421,7 @@ const writeStdlib = (files) => { if (!existsSync(destination)) continue if (readFileSync(destination, 'utf8') !== contents) { console.error( - `stdlib/${path} is stale. Run pnpm --filter @silk-effect/compiler documentation:generate`, + `stdlib/${path} is stale. Run pnpm --filter @silk-lang/compiler documentation:generate`, ) process.exitCode = 1 } diff --git a/packages/compiler/scripts/generate-unicode-tables.mjs b/packages/compiler/scripts/generate-unicode-tables.mjs index 1bd3f503..93348c94 100644 --- a/packages/compiler/scripts/generate-unicode-tables.mjs +++ b/packages/compiler/scripts/generate-unicode-tables.mjs @@ -202,7 +202,7 @@ const emit = //! \`\`\` // // Generated by scripts/generate-unicode-tables.mjs from the vendored Unicode ${version} database. -// Do not edit. Run: pnpm --filter @silk-effect/compiler unicode:generate +// Do not edit. Run: pnpm --filter @silk-lang/compiler unicode:generate import silk.u32 as u32 import silk.u8 as u8 diff --git a/packages/compiler/scripts/inventory-stdlib-documentation.mjs b/packages/compiler/scripts/inventory-stdlib-documentation.mjs index 686daa8a..56dd64b1 100644 --- a/packages/compiler/scripts/inventory-stdlib-documentation.mjs +++ b/packages/compiler/scripts/inventory-stdlib-documentation.mjs @@ -1,7 +1,7 @@ // Writes the source-located standard-library documentation inventory used by documentation passes. // // Run after building the compiler and documentation packages: -// pnpm --filter @silk-effect/compiler documentation:inventory +// pnpm --filter @silk-lang/compiler documentation:inventory import { mkdirSync, readFileSync, writeFileSync } from 'node:fs' import { dirname } from 'node:path' diff --git a/packages/compiler/scripts/vendor-unicode-data.mjs b/packages/compiler/scripts/vendor-unicode-data.mjs index 555d72d9..78bff2df 100644 --- a/packages/compiler/scripts/vendor-unicode-data.mjs +++ b/packages/compiler/scripts/vendor-unicode-data.mjs @@ -89,7 +89,7 @@ const spell = (value) => value.toString(16).toUpperCase().padStart(4, '0') const spellAll = (values) => values.map(spell).join(' ') const header = (name, description) => - `# ${name}\n# Unicode ${unicodeVersion}, vendored from ucd-full@${unicodeVersion}.\n# ${description}\n# Regenerate with: pnpm --filter @silk-effect/compiler unicode:vendor\n` + `# ${name}\n# Unicode ${unicodeVersion}, vendored from ucd-full@${unicodeVersion}.\n# ${description}\n# Regenerate with: pnpm --filter @silk-lang/compiler unicode:vendor\n` /** * Canonical combining class, canonical decomposition, and simple case mappings, one line per code diff --git a/packages/compiler/src/HeapObservation.ts b/packages/compiler/src/HeapObservation.ts index 5f875445..412c927a 100644 --- a/packages/compiler/src/HeapObservation.ts +++ b/packages/compiler/src/HeapObservation.ts @@ -5,7 +5,7 @@ import * as Layer from 'effect/Layer' export class HeapObservation extends Context.Service< HeapObservation, { readonly heapBytes: () => number } ->()('@silk-effect/compiler/HeapObservation') {} +>()('@silk-lang/compiler/HeapObservation') {} /** Explicit zero-cost browser implementation for hosts without process heap telemetry. */ export const layerBrowser = Layer.succeed(HeapObservation, Object.freeze({ heapBytes: () => 0 })) diff --git a/packages/compiler/src/NativeAggregate.ts b/packages/compiler/src/NativeAggregate.ts index 908a2556..47ff7ef2 100644 --- a/packages/compiler/src/NativeAggregate.ts +++ b/packages/compiler/src/NativeAggregate.ts @@ -1,12 +1,12 @@ -import * as Alignment from '@silk-effect/llvm/Alignment' -import * as LlvmBlock from '@silk-effect/llvm/Block' -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import type * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import type * as LlvmType from '@silk-effect/llvm/Type' -import type * as Value from '@silk-effect/llvm/Value' +import * as Alignment from '@silk-lang/llvm/Alignment' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import type * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import type * as LlvmType from '@silk-lang/llvm/Type' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as CleanupPlan from './CleanupPlan.js' import type * as DeclarationFacts from './DeclarationFacts.js' diff --git a/packages/compiler/src/NativeArith.ts b/packages/compiler/src/NativeArith.ts index 8131c92f..0950c571 100644 --- a/packages/compiler/src/NativeArith.ts +++ b/packages/compiler/src/NativeArith.ts @@ -1,11 +1,11 @@ -import * as LlvmBlock from '@silk-effect/llvm/Block' -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Intrinsic from '@silk-effect/llvm/Intrinsic' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import * as LlvmType from '@silk-effect/llvm/Type' -import * as Value from '@silk-effect/llvm/Value' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Intrinsic from '@silk-lang/llvm/Intrinsic' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import * as LlvmType from '@silk-lang/llvm/Type' +import * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import type * as Layout from './Layout.js' import * as Mir from './Mir.js' diff --git a/packages/compiler/src/NativeCall.ts b/packages/compiler/src/NativeCall.ts index b7f03f03..648dfb54 100644 --- a/packages/compiler/src/NativeCall.ts +++ b/packages/compiler/src/NativeCall.ts @@ -1,11 +1,11 @@ -import * as LlvmBlock from '@silk-effect/llvm/Block' -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import type * as LlvmType from '@silk-effect/llvm/Type' -import type * as Value from '@silk-effect/llvm/Value' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import type * as LlvmType from '@silk-lang/llvm/Type' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import { suspensionPointKey } from './Backend.js' import type * as Mir from './Mir.js' diff --git a/packages/compiler/src/NativeCallOperation.ts b/packages/compiler/src/NativeCallOperation.ts index c5024d6d..863f3f92 100644 --- a/packages/compiler/src/NativeCallOperation.ts +++ b/packages/compiler/src/NativeCallOperation.ts @@ -1,6 +1,6 @@ -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Value from '@silk-effect/llvm/Value' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as Layout from './Layout.js' import * as LayoutVerify from './LayoutVerify.js' diff --git a/packages/compiler/src/NativeControl.ts b/packages/compiler/src/NativeControl.ts index c640c67e..2f9069ef 100644 --- a/packages/compiler/src/NativeControl.ts +++ b/packages/compiler/src/NativeControl.ts @@ -1,11 +1,11 @@ -import type * as LlvmBlock from '@silk-effect/llvm/Block' -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Intrinsic from '@silk-effect/llvm/Intrinsic' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import type * as LlvmType from '@silk-effect/llvm/Type' -import type * as Value from '@silk-effect/llvm/Value' +import type * as LlvmBlock from '@silk-lang/llvm/Block' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Intrinsic from '@silk-lang/llvm/Intrinsic' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import type * as LlvmType from '@silk-lang/llvm/Type' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as CleanupPlan from './CleanupPlan.js' import * as Mir from './Mir.js' diff --git a/packages/compiler/src/NativeDebug.ts b/packages/compiler/src/NativeDebug.ts index 6197fa5c..0fe15c71 100644 --- a/packages/compiler/src/NativeDebug.ts +++ b/packages/compiler/src/NativeDebug.ts @@ -1,7 +1,7 @@ -import type * as Builder from '@silk-effect/llvm/Builder' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import * as LlvmMetadata from '@silk-effect/llvm/Metadata' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import * as LlvmMetadata from '@silk-lang/llvm/Metadata' import * as Effect from 'effect/Effect' import { type LineTable, positionOf } from './Backend.js' import * as Layout from './Layout.js' diff --git a/packages/compiler/src/NativeDeclare.ts b/packages/compiler/src/NativeDeclare.ts index 4fe6224b..ff29e2fd 100644 --- a/packages/compiler/src/NativeDeclare.ts +++ b/packages/compiler/src/NativeDeclare.ts @@ -1,7 +1,7 @@ -import type * as Builder from '@silk-effect/llvm/Builder' -import * as FunctionActor from '@silk-effect/llvm/Function' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import * as LlvmType from '@silk-effect/llvm/Type' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as FunctionActor from '@silk-lang/llvm/Function' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import * as LlvmType from '@silk-lang/llvm/Type' import * as Effect from 'effect/Effect' import { symbolFor } from './Backend.js' import type * as Layout from './Layout.js' diff --git a/packages/compiler/src/NativeEffectOperation.ts b/packages/compiler/src/NativeEffectOperation.ts index cfb74a1c..bd937a84 100644 --- a/packages/compiler/src/NativeEffectOperation.ts +++ b/packages/compiler/src/NativeEffectOperation.ts @@ -1,7 +1,7 @@ -import * as LlvmBlock from '@silk-effect/llvm/Block' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as Value from '@silk-effect/llvm/Value' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as CleanupPlan from './CleanupPlan.js' import type * as Layout from './Layout.js' diff --git a/packages/compiler/src/NativeExecutionOperation.ts b/packages/compiler/src/NativeExecutionOperation.ts index b5b11568..b2bc0132 100644 --- a/packages/compiler/src/NativeExecutionOperation.ts +++ b/packages/compiler/src/NativeExecutionOperation.ts @@ -1,10 +1,10 @@ -import * as Alignment from '@silk-effect/llvm/Alignment' -import * as LlvmBlock from '@silk-effect/llvm/Block' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import type * as Value from '@silk-effect/llvm/Value' +import * as Alignment from '@silk-lang/llvm/Alignment' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import { suspensionPointKey } from './Backend.js' import * as CoroutineFrame from './CoroutineFrame.js' diff --git a/packages/compiler/src/NativeFunction.ts b/packages/compiler/src/NativeFunction.ts index 244ffb60..859d6256 100644 --- a/packages/compiler/src/NativeFunction.ts +++ b/packages/compiler/src/NativeFunction.ts @@ -1,14 +1,14 @@ -import * as Alignment from '@silk-effect/llvm/Alignment' -import * as LlvmBlock from '@silk-effect/llvm/Block' -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as DISPFlags from '@silk-effect/llvm/DISPFlags' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Intrinsic from '@silk-effect/llvm/Intrinsic' -import * as LlvmMetadata from '@silk-effect/llvm/Metadata' -import type * as LlvmType from '@silk-effect/llvm/Type' -import * as Value from '@silk-effect/llvm/Value' +import * as Alignment from '@silk-lang/llvm/Alignment' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as DISPFlags from '@silk-lang/llvm/DISPFlags' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Intrinsic from '@silk-lang/llvm/Intrinsic' +import * as LlvmMetadata from '@silk-lang/llvm/Metadata' +import type * as LlvmType from '@silk-lang/llvm/Type' +import * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import type * as Backend from './Backend.js' import { type lineTable, positionOf, suspensionPointKey } from './Backend.js' diff --git a/packages/compiler/src/NativeHostFailure.ts b/packages/compiler/src/NativeHostFailure.ts index 054f4a22..a1326937 100644 --- a/packages/compiler/src/NativeHostFailure.ts +++ b/packages/compiler/src/NativeHostFailure.ts @@ -1,8 +1,8 @@ -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import type * as Value from '@silk-effect/llvm/Value' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import type * as Mir from './Mir.js' import type * as NativeLoweringContext from './NativeLoweringContext.js' diff --git a/packages/compiler/src/NativeLanePointer.ts b/packages/compiler/src/NativeLanePointer.ts index d44c5de3..ea5ac0af 100644 --- a/packages/compiler/src/NativeLanePointer.ts +++ b/packages/compiler/src/NativeLanePointer.ts @@ -1,8 +1,8 @@ -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmType from '@silk-effect/llvm/Type' -import type * as Value from '@silk-effect/llvm/Value' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmType from '@silk-lang/llvm/Type' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' export interface Context { diff --git a/packages/compiler/src/NativeLocalSharedOperation.ts b/packages/compiler/src/NativeLocalSharedOperation.ts index ad09ae59..9dba6559 100644 --- a/packages/compiler/src/NativeLocalSharedOperation.ts +++ b/packages/compiler/src/NativeLocalSharedOperation.ts @@ -1,6 +1,6 @@ -import * as LlvmBlock from '@silk-effect/llvm/Block' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' import * as Effect from 'effect/Effect' import * as Layout from './Layout.js' import type { LinearOperation } from './MirLinearization.js' diff --git a/packages/compiler/src/NativeLoweringContext.ts b/packages/compiler/src/NativeLoweringContext.ts index 6ca06bcd..7bbd9a74 100644 --- a/packages/compiler/src/NativeLoweringContext.ts +++ b/packages/compiler/src/NativeLoweringContext.ts @@ -1,8 +1,8 @@ -import type * as Builder from '@silk-effect/llvm/Builder' -import type * as FunctionActor from '@silk-effect/llvm/Function' -import type * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmType from '@silk-effect/llvm/Type' -import type * as Value from '@silk-effect/llvm/Value' +import type * as Builder from '@silk-lang/llvm/Builder' +import type * as FunctionActor from '@silk-lang/llvm/Function' +import type * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmType from '@silk-lang/llvm/Type' +import type * as Value from '@silk-lang/llvm/Value' import type * as Backend from './Backend.js' import type * as Layout from './Layout.js' import type * as Mir from './Mir.js' diff --git a/packages/compiler/src/NativeMemoryOperation.ts b/packages/compiler/src/NativeMemoryOperation.ts index d7d3c9ac..48dc33b0 100644 --- a/packages/compiler/src/NativeMemoryOperation.ts +++ b/packages/compiler/src/NativeMemoryOperation.ts @@ -1,10 +1,10 @@ -import * as Alignment from '@silk-effect/llvm/Alignment' -import * as LlvmBlock from '@silk-effect/llvm/Block' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Intrinsic from '@silk-effect/llvm/Intrinsic' -import * as LlvmType from '@silk-effect/llvm/Type' -import type * as Value from '@silk-effect/llvm/Value' +import * as Alignment from '@silk-lang/llvm/Alignment' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Intrinsic from '@silk-lang/llvm/Intrinsic' +import * as LlvmType from '@silk-lang/llvm/Type' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as Layout from './Layout.js' import * as LayoutVerify from './LayoutVerify.js' diff --git a/packages/compiler/src/NativeOperation.ts b/packages/compiler/src/NativeOperation.ts index 64f91078..e3ab8175 100644 --- a/packages/compiler/src/NativeOperation.ts +++ b/packages/compiler/src/NativeOperation.ts @@ -1,4 +1,4 @@ -import type * as LlvmBlock from '@silk-effect/llvm/Block' +import type * as LlvmBlock from '@silk-lang/llvm/Block' import * as Effect from 'effect/Effect' import * as CleanupPlan from './CleanupPlan.js' import type * as Mir from './Mir.js' diff --git a/packages/compiler/src/NativeOperationContext.ts b/packages/compiler/src/NativeOperationContext.ts index 3ce2a0a0..e6de5b90 100644 --- a/packages/compiler/src/NativeOperationContext.ts +++ b/packages/compiler/src/NativeOperationContext.ts @@ -1,8 +1,8 @@ -import type * as Builder from '@silk-effect/llvm/Builder' -import type * as Constant from '@silk-effect/llvm/Constant' -import type * as FunctionActor from '@silk-effect/llvm/Function' -import type * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmType from '@silk-effect/llvm/Type' +import type * as Builder from '@silk-lang/llvm/Builder' +import type * as Constant from '@silk-lang/llvm/Constant' +import type * as FunctionActor from '@silk-lang/llvm/Function' +import type * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmType from '@silk-lang/llvm/Type' import type * as Backend from './Backend.js' import type * as Mir from './Mir.js' import type * as NativeAggregate from './NativeAggregate.js' diff --git a/packages/compiler/src/NativePlaceOperation.ts b/packages/compiler/src/NativePlaceOperation.ts index 79b9a468..bd621b71 100644 --- a/packages/compiler/src/NativePlaceOperation.ts +++ b/packages/compiler/src/NativePlaceOperation.ts @@ -1,7 +1,7 @@ -import * as LlvmBlock from '@silk-effect/llvm/Block' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Value from '@silk-effect/llvm/Value' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as Layout from './Layout.js' import * as LayoutVerify from './LayoutVerify.js' diff --git a/packages/compiler/src/NativeProgram.ts b/packages/compiler/src/NativeProgram.ts index 7c0aaaff..86bdb95b 100644 --- a/packages/compiler/src/NativeProgram.ts +++ b/packages/compiler/src/NativeProgram.ts @@ -1,13 +1,13 @@ -import * as Bitcode from '@silk-effect/llvm/Bitcode' -import * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as IrText from '@silk-effect/llvm/IrText' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import * as LlvmMetadata from '@silk-effect/llvm/Metadata' -import * as LlvmType from '@silk-effect/llvm/Type' -import * as Variable from '@silk-effect/llvm/Variable' -import * as Verify from '@silk-effect/llvm/Verify' +import * as Bitcode from '@silk-lang/llvm/Bitcode' +import * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as IrText from '@silk-lang/llvm/IrText' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import * as LlvmMetadata from '@silk-lang/llvm/Metadata' +import * as LlvmType from '@silk-lang/llvm/Type' +import * as Variable from '@silk-lang/llvm/Variable' +import * as Verify from '@silk-lang/llvm/Verify' import * as Effect from 'effect/Effect' import type { CodegenRequest, RuntimeFeature, SymbolEntry } from './Backend.js' import { diff --git a/packages/compiler/src/NativeScalarOperation.ts b/packages/compiler/src/NativeScalarOperation.ts index c9a65a66..f4033638 100644 --- a/packages/compiler/src/NativeScalarOperation.ts +++ b/packages/compiler/src/NativeScalarOperation.ts @@ -1,9 +1,9 @@ -import * as LlvmBlock from '@silk-effect/llvm/Block' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Intrinsic from '@silk-effect/llvm/Intrinsic' -import * as LlvmType from '@silk-effect/llvm/Type' -import * as Value from '@silk-effect/llvm/Value' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Intrinsic from '@silk-lang/llvm/Intrinsic' +import * as LlvmType from '@silk-lang/llvm/Type' +import * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as Mir from './Mir.js' import type { LinearOperation } from './MirLinearization.js' diff --git a/packages/compiler/src/NativeStorage.ts b/packages/compiler/src/NativeStorage.ts index 650ee169..c8ab37a7 100644 --- a/packages/compiler/src/NativeStorage.ts +++ b/packages/compiler/src/NativeStorage.ts @@ -1,10 +1,10 @@ -import * as Alignment from '@silk-effect/llvm/Alignment' -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import type * as LlvmType from '@silk-effect/llvm/Type' -import type * as Value from '@silk-effect/llvm/Value' +import * as Alignment from '@silk-lang/llvm/Alignment' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import type * as LlvmType from '@silk-lang/llvm/Type' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as Layout from './Layout.js' import * as LayoutVerify from './LayoutVerify.js' diff --git a/packages/compiler/src/NativeSuspension.ts b/packages/compiler/src/NativeSuspension.ts index 289ca54e..9e43ab8d 100644 --- a/packages/compiler/src/NativeSuspension.ts +++ b/packages/compiler/src/NativeSuspension.ts @@ -1,12 +1,12 @@ -import * as Alignment from '@silk-effect/llvm/Alignment' -import * as LlvmBlock from '@silk-effect/llvm/Block' -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import type * as LlvmType from '@silk-effect/llvm/Type' -import * as Value from '@silk-effect/llvm/Value' +import * as Alignment from '@silk-lang/llvm/Alignment' +import * as LlvmBlock from '@silk-lang/llvm/Block' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import type * as LlvmType from '@silk-lang/llvm/Type' +import * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import { suspensionPointKey } from './Backend.js' import type * as Layout from './Layout.js' diff --git a/packages/compiler/src/NativeTranscendental.ts b/packages/compiler/src/NativeTranscendental.ts index 6328f6a9..cc40adc3 100644 --- a/packages/compiler/src/NativeTranscendental.ts +++ b/packages/compiler/src/NativeTranscendental.ts @@ -1,8 +1,8 @@ -import type * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import type * as LlvmType from '@silk-effect/llvm/Type' -import type * as Value from '@silk-effect/llvm/Value' +import type * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import type * as LlvmType from '@silk-lang/llvm/Type' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as FloatingPoint from './FloatingPoint.js' import type * as Mir from './Mir.js' diff --git a/packages/compiler/src/NativeType.ts b/packages/compiler/src/NativeType.ts index 9d8abf53..08fa4a3d 100644 --- a/packages/compiler/src/NativeType.ts +++ b/packages/compiler/src/NativeType.ts @@ -1,4 +1,4 @@ -import type * as LlvmType from '@silk-effect/llvm/Type' +import type * as LlvmType from '@silk-lang/llvm/Type' import { alignUp } from './internal/Align.js' import * as Layout from './Layout.js' import * as Mir from './Mir.js' diff --git a/packages/compiler/src/NativeValueOperation.ts b/packages/compiler/src/NativeValueOperation.ts index 6510f795..df979d27 100644 --- a/packages/compiler/src/NativeValueOperation.ts +++ b/packages/compiler/src/NativeValueOperation.ts @@ -1,7 +1,7 @@ -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as LlvmType from '@silk-effect/llvm/Type' -import type * as Value from '@silk-effect/llvm/Value' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as LlvmType from '@silk-lang/llvm/Type' +import type * as Value from '@silk-lang/llvm/Value' import * as Effect from 'effect/Effect' import * as FloatingPoint from './FloatingPoint.js' import * as Layout from './Layout.js' diff --git a/packages/compiler/src/SourceFile.ts b/packages/compiler/src/SourceFile.ts index f29576a1..9d3e062d 100644 --- a/packages/compiler/src/SourceFile.ts +++ b/packages/compiler/src/SourceFile.ts @@ -2,7 +2,7 @@ import * as Option from 'effect/Option' import * as SourceOrigin from './SourceOrigin.js' import type * as SourceSpan from './SourceSpan.js' -const SourceFileTypeId: unique symbol = Symbol.for('@silk-effect/compiler/SourceFile') +const SourceFileTypeId: unique symbol = Symbol.for('@silk-lang/compiler/SourceFile') /** An immutable snapshot of caller-supplied source bytes and its logical identity. */ export interface SourceFile { diff --git a/packages/compiler/src/SourceResolver.ts b/packages/compiler/src/SourceResolver.ts index 8f8ffafb..46ad37fb 100644 --- a/packages/compiler/src/SourceResolver.ts +++ b/packages/compiler/src/SourceResolver.ts @@ -76,7 +76,7 @@ export class SourceResolver extends Context.Service< SourceResolverError > } ->()('@silk-effect/compiler/SourceResolver') {} +>()('@silk-lang/compiler/SourceResolver') {} /** Resolves one validated canonical module through the active source resolver. */ export const resolve = Effect.fn('SourceResolver.resolve')(function* ( diff --git a/packages/compiler/src/SourceSpan.ts b/packages/compiler/src/SourceSpan.ts index f17bbe74..62511f4a 100644 --- a/packages/compiler/src/SourceSpan.ts +++ b/packages/compiler/src/SourceSpan.ts @@ -2,7 +2,7 @@ import * as Option from 'effect/Option' import * as Canonical from './internal/Canonical.js' import type * as SourceFile from './SourceFile.js' -const SourceSpanTypeId: unique symbol = Symbol.for('@silk-effect/compiler/SourceSpan') +const SourceSpanTypeId: unique symbol = Symbol.for('@silk-lang/compiler/SourceSpan') /** * A half-open byte range owned by one logical source identity. diff --git a/packages/compiler/src/Stdlib.generated.ts b/packages/compiler/src/Stdlib.generated.ts index ef4f20f4..9559cb94 100644 --- a/packages/compiler/src/Stdlib.generated.ts +++ b/packages/compiler/src/Stdlib.generated.ts @@ -1262,14 +1262,14 @@ export const modules = [ module: 'silk/unicode_tables', path: 'silk/unicode_tables.silk', sourceIdentity: 'silk/unicode_tables', - digest: 'f2998df02b972188d75a5a71796fedfa79c7ad45d2231526d53c57b674c7aa17', + digest: '7621cc64b095d0ad74c7f4b186f51c0570b58ccb1fcf327db6b55d717477805a', documentation: 'silk/unicode_tables.silk', layer: 'portable', runtimeInventory: [], namespace: 'UnicodeTables', aliases: ['Decomposition', 'PairRecord'], source: - '//! Generated canonical-normalization data for the `silk.unicode` public façade.\n//!\n//! # When to use\n//! Application code should normally call `silk.unicode` rather than this backing module. These\n//! declarations are public so the ordinary Silk normalization implementation can read the pinned\n//! data without compiler privilege.\n//!\n//! # Details\n//! The tables come from Unicode 17.0.0, are packed as big-endian byte strings, and are searched\n//! with ordinary Silk functions. Regeneration may change their representation and record layout;\n//! the compiler gives neither this module nor its declaration names special treatment.\n//!\n//! # Gotchas\n//! A zero lookup result is a sentinel, not Unicode scalar U+0000. Hangul decomposition and\n//! composition are algorithmic and are not present in these tables.\n//!\n//! # Examples\n//! ## Read the canonical decomposition of é\n//! ```silk\n//! import silk.unicode_tables as UnicodeTables\n//!\n//! pub fn main() -> i32 {\n//! let decomposition = UnicodeTables.canonicalDecomposition(233)\n//! if decomposition.first != 101 || decomposition.second != 769 {\n//! return 0\n//! }\n//! return 42\n//! }\n//! ```\n//\n// Generated by scripts/generate-unicode-tables.mjs from the vendored Unicode 17.0.0 database.\n// Do not edit. Run: pnpm --filter @silk-effect/compiler unicode:generate\n\nimport silk.u32 as u32\nimport silk.u8 as u8\nimport silk.usize as usize\n\n/// One canonical decomposition with zero sentinels for an absent mapping or second scalar.\npub struct Decomposition {\n /// The first mapped scalar, or zero when the input has no table mapping.\n pub first: u32\n /// The second mapped scalar, or zero when the mapping contains one scalar.\n pub second: u32\n}\n\n/// One two-scalar canonical decomposition and its composed scalar.\npub struct PairRecord {\n /// The scalar whose canonical mapping is this pair.\n pub composed: u32\n /// First scalar of the canonical mapping.\n pub first: u32\n /// Second scalar of the canonical mapping.\n pub second: u32\n}\n\n/// Returns the Unicode data version that defines all lookup results in this module.\npub fn dataVersion() -> string {\n return "17.0.0"\n}\n\n/// Returns the longest full canonical decomposition of one scalar in these tables.\npub fn maximumDecompositionLength() -> usize {\n return 4\n}\n\nfn read2(data: &[u8], at: usize) -> u32 {\n return u8.toU32(data[at]) * 256 + u8.toU32(data[at + usize.ONE])\n}\n\nfn read3(data: &[u8], at: usize) -> u32 {\n return u8.toU32(data[at]) * 65536\n + u8.toU32(data[at + usize.ONE]) * 256\n + u8.toU32(data[at + 2])\n}\n\n/// Returns a scalar\'s canonical combining class, or zero for a starter or unknown value.\npub fn combiningClass(scalar: u32) -> u32 {\n let data = b"\\x00\\x03\\x00\\x14\\xe6\\x00\\x03\\x15\\x00\\xe8\\x00\\x03\\x16\\x03\\xdc\\x00\\x03\\x1a\\x00\\xe8\\x00\\x03\\x1b\\x00\\xd8\\x00\\x03\\x1c\\x04\\xdc\\x00\\x03\\x21\\x01\\xca\\x00\\x03\\x23\\x03\\xdc\\x00\\x03\\x27\\x01\\xca\\x00\\x03\\x29\\x0a\\xdc\\x00\\x03\\x34\\x04\\x01\\x00\\x03\\x39\\x03\\xdc\\x00\\x03\\x3d\\x07\\xe6\\x00\\x03\\x45\\x00\\xf0\\x00\\x03\\x46\\x00\\xe6\\x00\\x03\\x47\\x02\\xdc\\x00\\x03\\x4a\\x02\\xe6\\x00\\x03\\x4d\\x01\\xdc\\x00\\x03\\x50\\x02\\xe6\\x00\\x03\\x53\\x03\\xdc\\x00\\x03\\x57\\x00\\xe6\\x00\\x03\\x58\\x00\\xe8\\x00\\x03\\x59\\x01\\xdc\\x00\\x03\\x5b\\x00\\xe6\\x00\\x03\\x5c\\x00\\xe9\\x00\\x03\\x5d\\x01\\xea\\x00\\x03\\x5f\\x00\\xe9\\x00\\x03\\x60\\x01\\xea\\x00\\x03\\x62\\x00\\xe9\\x00\\x03\\x63\\x0c\\xe6\\x00\\x04\\x83\\x04\\xe6\\x00\\x05\\x91\\x00\\xdc\\x00\\x05\\x92\\x03\\xe6\\x00\\x05\\x96\\x00\\xdc\\x00\\x05\\x97\\x02\\xe6\\x00\\x05\\x9a\\x00\\xde\\x00\\x05\\x9b\\x00\\xdc\\x00\\x05\\x9c\\x05\\xe6\\x00\\x05\\xa2\\x05\\xdc\\x00\\x05\\xa8\\x01\\xe6\\x00\\x05\\xaa\\x00\\xdc\\x00\\x05\\xab\\x01\\xe6\\x00\\x05\\xad\\x00\\xde\\x00\\x05\\xae\\x00\\xe4\\x00\\x05\\xaf\\x00\\xe6\\x00\\x05\\xb0\\x00\\x0a\\x00\\x05\\xb1\\x00\\x0b\\x00\\x05\\xb2\\x00\\x0c\\x00\\x05\\xb3\\x00\\x0d\\x00\\x05\\xb4\\x00\\x0e\\x00\\x05\\xb5\\x00\\x0f\\x00\\x05\\xb6\\x00\\x10\\x00\\x05\\xb7\\x00\\x11\\x00\\x05\\xb8\\x00\\x12\\x00\\x05\\xb9\\x01\\x13\\x00\\x05\\xbb\\x00\\x14\\x00\\x05\\xbc\\x00\\x15\\x00\\x05\\xbd\\x00\\x16\\x00\\x05\\xbf\\x00\\x17\\x00\\x05\\xc1\\x00\\x18\\x00\\x05\\xc2\\x00\\x19\\x00\\x05\\xc4\\x00\\xe6\\x00\\x05\\xc5\\x00\\xdc\\x00\\x05\\xc7\\x00\\x12\\x00\\x06\\x10\\x07\\xe6\\x00\\x06\\x18\\x00\\x1e\\x00\\x06\\x19\\x00\\x1f\\x00\\x06\\x1a\\x00\\x20\\x00\\x06\\x4b\\x00\\x1b\\x00\\x06\\x4c\\x00\\x1c\\x00\\x06\\x4d\\x00\\x1d\\x00\\x06\\x4e\\x00\\x1e\\x00\\x06\\x4f\\x00\\x1f\\x00\\x06\\x50\\x00\\x20\\x00\\x06\\x51\\x00\\x21\\x00\\x06\\x52\\x00\\x22\\x00\\x06\\x53\\x01\\xe6\\x00\\x06\\x55\\x01\\xdc\\x00\\x06\\x57\\x04\\xe6\\x00\\x06\\x5c\\x00\\xdc\\x00\\x06\\x5d\\x01\\xe6\\x00\\x06\\x5f\\x00\\xdc\\x00\\x06\\x70\\x00\\x23\\x00\\x06\\xd6\\x06\\xe6\\x00\\x06\\xdf\\x03\\xe6\\x00\\x06\\xe3\\x00\\xdc\\x00\\x06\\xe4\\x00\\xe6\\x00\\x06\\xe7\\x01\\xe6\\x00\\x06\\xea\\x00\\xdc\\x00\\x06\\xeb\\x01\\xe6\\x00\\x06\\xed\\x00\\xdc\\x00\\x07\\x11\\x00\\x24\\x00\\x07\\x30\\x00\\xe6\\x00\\x07\\x31\\x00\\xdc\\x00\\x07\\x32\\x01\\xe6\\x00\\x07\\x34\\x00\\xdc\\x00\\x07\\x35\\x01\\xe6\\x00\\x07\\x37\\x02\\xdc\\x00\\x07\\x3a\\x00\\xe6\\x00\\x07\\x3b\\x01\\xdc\\x00\\x07\\x3d\\x00\\xe6\\x00\\x07\\x3e\\x00\\xdc\\x00\\x07\\x3f\\x02\\xe6\\x00\\x07\\x42\\x00\\xdc\\x00\\x07\\x43\\x00\\xe6\\x00\\x07\\x44\\x00\\xdc\\x00\\x07\\x45\\x00\\xe6\\x00\\x07\\x46\\x00\\xdc\\x00\\x07\\x47\\x00\\xe6\\x00\\x07\\x48\\x00\\xdc\\x00\\x07\\x49\\x01\\xe6\\x00\\x07\\xeb\\x06\\xe6\\x00\\x07\\xf2\\x00\\xdc\\x00\\x07\\xf3\\x00\\xe6\\x00\\x07\\xfd\\x00\\xdc\\x00\\x08\\x16\\x03\\xe6\\x00\\x08\\x1b\\x08\\xe6\\x00\\x08\\x25\\x02\\xe6\\x00\\x08\\x29\\x04\\xe6\\x00\\x08\\x59\\x02\\xdc\\x00\\x08\\x97\\x01\\xe6\\x00\\x08\\x99\\x02\\xdc\\x00\\x08\\x9c\\x03\\xe6\\x00\\x08\\xca\\x04\\xe6\\x00\\x08\\xcf\\x04\\xdc\\x00\\x08\\xd4\\x0d\\xe6\\x00\\x08\\xe3\\x00\\xdc\\x00\\x08\\xe4\\x01\\xe6\\x00\\x08\\xe6\\x00\\xdc\\x00\\x08\\xe7\\x01\\xe6\\x00\\x08\\xe9\\x00\\xdc\\x00\\x08\\xea\\x02\\xe6\\x00\\x08\\xed\\x02\\xdc\\x00\\x08\\xf0\\x00\\x1b\\x00\\x08\\xf1\\x00\\x1c\\x00\\x08\\xf2\\x00\\x1d\\x00\\x08\\xf3\\x02\\xe6\\x00\\x08\\xf6\\x00\\xdc\\x00\\x08\\xf7\\x01\\xe6\\x00\\x08\\xf9\\x01\\xdc\\x00\\x08\\xfb\\x04\\xe6\\x00\\x09\\x3c\\x00\\x07\\x00\\x09\\x4d\\x00\\x09\\x00\\x09\\x51\\x00\\xe6\\x00\\x09\\x52\\x00\\xdc\\x00\\x09\\x53\\x01\\xe6\\x00\\x09\\xbc\\x00\\x07\\x00\\x09\\xcd\\x00\\x09\\x00\\x09\\xfe\\x00\\xe6\\x00\\x0a\\x3c\\x00\\x07\\x00\\x0a\\x4d\\x00\\x09\\x00\\x0a\\xbc\\x00\\x07\\x00\\x0a\\xcd\\x00\\x09\\x00\\x0b\\x3c\\x00\\x07\\x00\\x0b\\x4d\\x00\\x09\\x00\\x0b\\xcd\\x00\\x09\\x00\\x0c\\x3c\\x00\\x07\\x00\\x0c\\x4d\\x00\\x09\\x00\\x0c\\x55\\x00\\x54\\x00\\x0c\\x56\\x00\\x5b\\x00\\x0c\\xbc\\x00\\x07\\x00\\x0c\\xcd\\x00\\x09\\x00\\x0d\\x3b\\x01\\x09\\x00\\x0d\\x4d\\x00\\x09\\x00\\x0d\\xca\\x00\\x09\\x00\\x0e\\x38\\x01\\x67\\x00\\x0e\\x3a\\x00\\x09\\x00\\x0e\\x48\\x03\\x6b\\x00\\x0e\\xb8\\x01\\x76\\x00\\x0e\\xba\\x00\\x09\\x00\\x0e\\xc8\\x03\\x7a\\x00\\x0f\\x18\\x01\\xdc\\x00\\x0f\\x35\\x00\\xdc\\x00\\x0f\\x37\\x00\\xdc\\x00\\x0f\\x39\\x00\\xd8\\x00\\x0f\\x71\\x00\\x81\\x00\\x0f\\x72\\x00\\x82\\x00\\x0f\\x74\\x00\\x84\\x00\\x0f\\x7a\\x03\\x82\\x00\\x0f\\x80\\x00\\x82\\x00\\x0f\\x82\\x01\\xe6\\x00\\x0f\\x84\\x00\\x09\\x00\\x0f\\x86\\x01\\xe6\\x00\\x0f\\xc6\\x00\\xdc\\x00\\x10\\x37\\x00\\x07\\x00\\x10\\x39\\x01\\x09\\x00\\x10\\x8d\\x00\\xdc\\x00\\x13\\x5d\\x02\\xe6\\x00\\x17\\x14\\x01\\x09\\x00\\x17\\x34\\x00\\x09\\x00\\x17\\xd2\\x00\\x09\\x00\\x17\\xdd\\x00\\xe6\\x00\\x18\\xa9\\x00\\xe4\\x00\\x19\\x39\\x00\\xde\\x00\\x19\\x3a\\x00\\xe6\\x00\\x19\\x3b\\x00\\xdc\\x00\\x1a\\x17\\x00\\xe6\\x00\\x1a\\x18\\x00\\xdc\\x00\\x1a\\x60\\x00\\x09\\x00\\x1a\\x75\\x07\\xe6\\x00\\x1a\\x7f\\x00\\xdc\\x00\\x1a\\xb0\\x04\\xe6\\x00\\x1a\\xb5\\x05\\xdc\\x00\\x1a\\xbb\\x01\\xe6\\x00\\x1a\\xbd\\x00\\xdc\\x00\\x1a\\xbf\\x01\\xdc\\x00\\x1a\\xc1\\x01\\xe6\\x00\\x1a\\xc3\\x01\\xdc\\x00\\x1a\\xc5\\x04\\xe6\\x00\\x1a\\xca\\x00\\xdc\\x00\\x1a\\xcb\\x03\\xe6\\x00\\x1b\\x34\\x00\\x07\\x00\\x1b\\x44\\x00\\x09\\x00\\x1b\\x6b\\x00\\xe6\\x00\\x1b\\x6c\\x00\\xdc\\x00\\x1b\\x6d\\x06\\xe6\\x00\\x1b\\xaa\\x01\\x09\\x00\\x1b\\xe6\\x00\\x07\\x00\\x1b\\xf2\\x01\\x09\\x00\\x1c\\x37\\x00\\x07\\x00\\x1c\\xd0\\x02\\xe6\\x00\\x1c\\xd4\\x00\\x01\\x00\\x1c\\xd5\\x04\\xdc\\x00\\x1c\\xda\\x01\\xe6\\x00\\x1c\\xdc\\x03\\xdc\\x00\\x1c\\xe0\\x00\\xe6\\x00\\x1c\\xe2\\x06\\x01\\x00\\x1c\\xed\\x00\\xdc\\x00\\x1c\\xf4\\x00\\xe6\\x00\\x1c\\xf8\\x01\\xe6\\x00\\x1d\\xc0\\x01\\xe6\\x00\\x1d\\xc2\\x00\\xdc\\x00\\x1d\\xc3\\x06\\xe6\\x00\\x1d\\xca\\x00\\xdc\\x00\\x1d\\xcb\\x01\\xe6\\x00\\x1d\\xcd\\x00\\xea\\x00\\x1d\\xce\\x00\\xd6\\x00\\x1d\\xcf\\x00\\xdc\\x00\\x1d\\xd0\\x00\\xca\\x00\\x1d\\xd1\\x24\\xe6\\x00\\x1d\\xf6\\x00\\xe8\\x00\\x1d\\xf7\\x01\\xe4\\x00\\x1d\\xf9\\x00\\xdc\\x00\\x1d\\xfa\\x00\\xda\\x00\\x1d\\xfb\\x00\\xe6\\x00\\x1d\\xfc\\x00\\xe9\\x00\\x1d\\xfd\\x00\\xdc\\x00\\x1d\\xfe\\x00\\xe6\\x00\\x1d\\xff\\x00\\xdc\\x00\\x20\\xd0\\x01\\xe6\\x00\\x20\\xd2\\x01\\x01\\x00\\x20\\xd4\\x03\\xe6\\x00\\x20\\xd8\\x02\\x01\\x00\\x20\\xdb\\x01\\xe6\\x00\\x20\\xe1\\x00\\xe6\\x00\\x20\\xe5\\x01\\x01\\x00\\x20\\xe7\\x00\\xe6\\x00\\x20\\xe8\\x00\\xdc\\x00\\x20\\xe9\\x00\\xe6\\x00\\x20\\xea\\x01\\x01\\x00\\x20\\xec\\x03\\xdc\\x00\\x20\\xf0\\x00\\xe6\\x00\\x2c\\xef\\x02\\xe6\\x00\\x2d\\x7f\\x00\\x09\\x00\\x2d\\xe0\\x1f\\xe6\\x00\\x30\\x2a\\x00\\xda\\x00\\x30\\x2b\\x00\\xe4\\x00\\x30\\x2c\\x00\\xe8\\x00\\x30\\x2d\\x00\\xde\\x00\\x30\\x2e\\x01\\xe0\\x00\\x30\\x99\\x01\\x08\\x00\\xa6\\x6f\\x00\\xe6\\x00\\xa6\\x74\\x09\\xe6\\x00\\xa6\\x9e\\x01\\xe6\\x00\\xa6\\xf0\\x01\\xe6\\x00\\xa8\\x06\\x00\\x09\\x00\\xa8\\x2c\\x00\\x09\\x00\\xa8\\xc4\\x00\\x09\\x00\\xa8\\xe0\\x11\\xe6\\x00\\xa9\\x2b\\x02\\xdc\\x00\\xa9\\x53\\x00\\x09\\x00\\xa9\\xb3\\x00\\x07\\x00\\xa9\\xc0\\x00\\x09\\x00\\xaa\\xb0\\x00\\xe6\\x00\\xaa\\xb2\\x01\\xe6\\x00\\xaa\\xb4\\x00\\xdc\\x00\\xaa\\xb7\\x01\\xe6\\x00\\xaa\\xbe\\x01\\xe6\\x00\\xaa\\xc1\\x00\\xe6\\x00\\xaa\\xf6\\x00\\x09\\x00\\xab\\xed\\x00\\x09\\x00\\xfb\\x1e\\x00\\x1a\\x00\\xfe\\x20\\x06\\xe6\\x00\\xfe\\x27\\x06\\xdc\\x00\\xfe\\x2e\\x01\\xe6\\x01\\x01\\xfd\\x00\\xdc\\x01\\x02\\xe0\\x00\\xdc\\x01\\x03\\x76\\x04\\xe6\\x01\\x0a\\x0d\\x00\\xdc\\x01\\x0a\\x0f\\x00\\xe6\\x01\\x0a\\x38\\x00\\xe6\\x01\\x0a\\x39\\x00\\x01\\x01\\x0a\\x3a\\x00\\xdc\\x01\\x0a\\x3f\\x00\\x09\\x01\\x0a\\xe5\\x00\\xe6\\x01\\x0a\\xe6\\x00\\xdc\\x01\\x0d\\x24\\x03\\xe6\\x01\\x0d\\x69\\x04\\xe6\\x01\\x0e\\xab\\x01\\xe6\\x01\\x0e\\xfd\\x02\\xdc\\x01\\x0f\\x46\\x01\\xdc\\x01\\x0f\\x48\\x02\\xe6\\x01\\x0f\\x4b\\x00\\xdc\\x01\\x0f\\x4c\\x00\\xe6\\x01\\x0f\\x4d\\x03\\xdc\\x01\\x0f\\x82\\x00\\xe6\\x01\\x0f\\x83\\x00\\xdc\\x01\\x0f\\x84\\x00\\xe6\\x01\\x0f\\x85\\x00\\xdc\\x01\\x10\\x46\\x00\\x09\\x01\\x10\\x70\\x00\\x09\\x01\\x10\\x7f\\x00\\x09\\x01\\x10\\xb9\\x00\\x09\\x01\\x10\\xba\\x00\\x07\\x01\\x11\\x00\\x02\\xe6\\x01\\x11\\x33\\x01\\x09\\x01\\x11\\x73\\x00\\x07\\x01\\x11\\xc0\\x00\\x09\\x01\\x11\\xca\\x00\\x07\\x01\\x12\\x35\\x00\\x09\\x01\\x12\\x36\\x00\\x07\\x01\\x12\\xe9\\x00\\x07\\x01\\x12\\xea\\x00\\x09\\x01\\x13\\x3b\\x01\\x07\\x01\\x13\\x4d\\x00\\x09\\x01\\x13\\x66\\x06\\xe6\\x01\\x13\\x70\\x04\\xe6\\x01\\x13\\xce\\x02\\x09\\x01\\x14\\x42\\x00\\x09\\x01\\x14\\x46\\x00\\x07\\x01\\x14\\x5e\\x00\\xe6\\x01\\x14\\xc2\\x00\\x09\\x01\\x14\\xc3\\x00\\x07\\x01\\x15\\xbf\\x00\\x09\\x01\\x15\\xc0\\x00\\x07\\x01\\x16\\x3f\\x00\\x09\\x01\\x16\\xb6\\x00\\x09\\x01\\x16\\xb7\\x00\\x07\\x01\\x17\\x2b\\x00\\x09\\x01\\x18\\x39\\x00\\x09\\x01\\x18\\x3a\\x00\\x07\\x01\\x19\\x3d\\x01\\x09\\x01\\x19\\x43\\x00\\x07\\x01\\x19\\xe0\\x00\\x09\\x01\\x1a\\x34\\x00\\x09\\x01\\x1a\\x47\\x00\\x09\\x01\\x1a\\x99\\x00\\x09\\x01\\x1c\\x3f\\x00\\x09\\x01\\x1d\\x42\\x00\\x07\\x01\\x1d\\x44\\x01\\x09\\x01\\x1d\\x97\\x00\\x09\\x01\\x1f\\x41\\x01\\x09\\x01\\x61\\x2f\\x00\\x09\\x01\\x6a\\xf0\\x04\\x01\\x01\\x6b\\x30\\x06\\xe6\\x01\\x6f\\xf0\\x01\\x06\\x01\\xbc\\x9e\\x00\\x01\\x01\\xd1\\x65\\x01\\xd8\\x01\\xd1\\x67\\x02\\x01\\x01\\xd1\\x6d\\x00\\xe2\\x01\\xd1\\x6e\\x04\\xd8\\x01\\xd1\\x7b\\x07\\xdc\\x01\\xd1\\x85\\x04\\xe6\\x01\\xd1\\x8a\\x01\\xdc\\x01\\xd1\\xaa\\x03\\xe6\\x01\\xd2\\x42\\x02\\xe6\\x01\\xe0\\x00\\x06\\xe6\\x01\\xe0\\x08\\x10\\xe6\\x01\\xe0\\x1b\\x06\\xe6\\x01\\xe0\\x23\\x01\\xe6\\x01\\xe0\\x26\\x04\\xe6\\x01\\xe0\\x8f\\x00\\xe6\\x01\\xe1\\x30\\x06\\xe6\\x01\\xe2\\xae\\x00\\xe6\\x01\\xe2\\xec\\x03\\xe6\\x01\\xe4\\xec\\x01\\xe8\\x01\\xe4\\xee\\x00\\xdc\\x01\\xe4\\xef\\x00\\xe6\\x01\\xe5\\xee\\x00\\xe6\\x01\\xe5\\xef\\x00\\xdc\\x01\\xe8\\xd0\\x06\\xdc\\x01\\xe9\\x44\\x05\\xe6\\x01\\xe9\\x4a\\x00\\x07"\n let mut low = usize.ZERO\n let mut high = usize.add(0, 393)\n while low < high {\n let middle = low + (high - low) / 2\n let at = middle * 5\n let start = read3(data, at)\n if scalar < start {\n high = middle\n } else {\n let count = u8.toU32(data[at + 3]) + 1\n if scalar < start + count { return u8.toU32(data[at + 4]) }\n low = middle + usize.ONE\n }\n }\n return 0\n}\n\n/// Returns the canonical decomposition of a scalar, or both components zero when it has none.\n/// Hangul syllables decompose algorithmically and are absent from this table by design.\npub fn canonicalDecomposition(scalar: u32) -> Decomposition {\n let singletons = b"\\x00\\x03\\x40\\x00\\x03\\x00\\x00\\x03\\x41\\x00\\x03\\x01\\x00\\x03\\x43\\x00\\x03\\x13\\x00\\x03\\x74\\x00\\x02\\xb9\\x00\\x03\\x7e\\x00\\x00\\x3b\\x00\\x03\\x87\\x00\\x00\\xb7\\x00\\x1f\\x71\\x00\\x03\\xac\\x00\\x1f\\x73\\x00\\x03\\xad\\x00\\x1f\\x75\\x00\\x03\\xae\\x00\\x1f\\x77\\x00\\x03\\xaf\\x00\\x1f\\x79\\x00\\x03\\xcc\\x00\\x1f\\x7b\\x00\\x03\\xcd\\x00\\x1f\\x7d\\x00\\x03\\xce\\x00\\x1f\\xbb\\x00\\x03\\x86\\x00\\x1f\\xbe\\x00\\x03\\xb9\\x00\\x1f\\xc9\\x00\\x03\\x88\\x00\\x1f\\xcb\\x00\\x03\\x89\\x00\\x1f\\xd3\\x00\\x03\\x90\\x00\\x1f\\xdb\\x00\\x03\\x8a\\x00\\x1f\\xe3\\x00\\x03\\xb0\\x00\\x1f\\xeb\\x00\\x03\\x8e\\x00\\x1f\\xee\\x00\\x03\\x85\\x00\\x1f\\xef\\x00\\x00\\x60\\x00\\x1f\\xf9\\x00\\x03\\x8c\\x00\\x1f\\xfb\\x00\\x03\\x8f\\x00\\x1f\\xfd\\x00\\x00\\xb4\\x00\\x20\\x00\\x00\\x20\\x02\\x00\\x20\\x01\\x00\\x20\\x03\\x00\\x21\\x26\\x00\\x03\\xa9\\x00\\x21\\x2a\\x00\\x00\\x4b\\x00\\x21\\x2b\\x00\\x00\\xc5\\x00\\x23\\x29\\x00\\x30\\x08\\x00\\x23\\x2a\\x00\\x30\\x09\\x00\\xf9\\x00\\x00\\x8c\\x48\\x00\\xf9\\x01\\x00\\x66\\xf4\\x00\\xf9\\x02\\x00\\x8e\\xca\\x00\\xf9\\x03\\x00\\x8c\\xc8\\x00\\xf9\\x04\\x00\\x6e\\xd1\\x00\\xf9\\x05\\x00\\x4e\\x32\\x00\\xf9\\x06\\x00\\x53\\xe5\\x00\\xf9\\x07\\x00\\x9f\\x9c\\x00\\xf9\\x08\\x00\\x9f\\x9c\\x00\\xf9\\x09\\x00\\x59\\x51\\x00\\xf9\\x0a\\x00\\x91\\xd1\\x00\\xf9\\x0b\\x00\\x55\\x87\\x00\\xf9\\x0c\\x00\\x59\\x48\\x00\\xf9\\x0d\\x00\\x61\\xf6\\x00\\xf9\\x0e\\x00\\x76\\x69\\x00\\xf9\\x0f\\x00\\x7f\\x85\\x00\\xf9\\x10\\x00\\x86\\x3f\\x00\\xf9\\x11\\x00\\x87\\xba\\x00\\xf9\\x12\\x00\\x88\\xf8\\x00\\xf9\\x13\\x00\\x90\\x8f\\x00\\xf9\\x14\\x00\\x6a\\x02\\x00\\xf9\\x15\\x00\\x6d\\x1b\\x00\\xf9\\x16\\x00\\x70\\xd9\\x00\\xf9\\x17\\x00\\x73\\xde\\x00\\xf9\\x18\\x00\\x84\\x3d\\x00\\xf9\\x19\\x00\\x91\\x6a\\x00\\xf9\\x1a\\x00\\x99\\xf1\\x00\\xf9\\x1b\\x00\\x4e\\x82\\x00\\xf9\\x1c\\x00\\x53\\x75\\x00\\xf9\\x1d\\x00\\x6b\\x04\\x00\\xf9\\x1e\\x00\\x72\\x1b\\x00\\xf9\\x1f\\x00\\x86\\x2d\\x00\\xf9\\x20\\x00\\x9e\\x1e\\x00\\xf9\\x21\\x00\\x5d\\x50\\x00\\xf9\\x22\\x00\\x6f\\xeb\\x00\\xf9\\x23\\x00\\x85\\xcd\\x00\\xf9\\x24\\x00\\x89\\x64\\x00\\xf9\\x25\\x00\\x62\\xc9\\x00\\xf9\\x26\\x00\\x81\\xd8\\x00\\xf9\\x27\\x00\\x88\\x1f\\x00\\xf9\\x28\\x00\\x5e\\xca\\x00\\xf9\\x29\\x00\\x67\\x17\\x00\\xf9\\x2a\\x00\\x6d\\x6a\\x00\\xf9\\x2b\\x00\\x72\\xfc\\x00\\xf9\\x2c\\x00\\x90\\xce\\x00\\xf9\\x2d\\x00\\x4f\\x86\\x00\\xf9\\x2e\\x00\\x51\\xb7\\x00\\xf9\\x2f\\x00\\x52\\xde\\x00\\xf9\\x30\\x00\\x64\\xc4\\x00\\xf9\\x31\\x00\\x6a\\xd3\\x00\\xf9\\x32\\x00\\x72\\x10\\x00\\xf9\\x33\\x00\\x76\\xe7\\x00\\xf9\\x34\\x00\\x80\\x01\\x00\\xf9\\x35\\x00\\x86\\x06\\x00\\xf9\\x36\\x00\\x86\\x5c\\x00\\xf9\\x37\\x00\\x8d\\xef\\x00\\xf9\\x38\\x00\\x97\\x32\\x00\\xf9\\x39\\x00\\x9b\\x6f\\x00\\xf9\\x3a\\x00\\x9d\\xfa\\x00\\xf9\\x3b\\x00\\x78\\x8c\\x00\\xf9\\x3c\\x00\\x79\\x7f\\x00\\xf9\\x3d\\x00\\x7d\\xa0\\x00\\xf9\\x3e\\x00\\x83\\xc9\\x00\\xf9\\x3f\\x00\\x93\\x04\\x00\\xf9\\x40\\x00\\x9e\\x7f\\x00\\xf9\\x41\\x00\\x8a\\xd6\\x00\\xf9\\x42\\x00\\x58\\xdf\\x00\\xf9\\x43\\x00\\x5f\\x04\\x00\\xf9\\x44\\x00\\x7c\\x60\\x00\\xf9\\x45\\x00\\x80\\x7e\\x00\\xf9\\x46\\x00\\x72\\x62\\x00\\xf9\\x47\\x00\\x78\\xca\\x00\\xf9\\x48\\x00\\x8c\\xc2\\x00\\xf9\\x49\\x00\\x96\\xf7\\x00\\xf9\\x4a\\x00\\x58\\xd8\\x00\\xf9\\x4b\\x00\\x5c\\x62\\x00\\xf9\\x4c\\x00\\x6a\\x13\\x00\\xf9\\x4d\\x00\\x6d\\xda\\x00\\xf9\\x4e\\x00\\x6f\\x0f\\x00\\xf9\\x4f\\x00\\x7d\\x2f\\x00\\xf9\\x50\\x00\\x7e\\x37\\x00\\xf9\\x51\\x00\\x96\\x4b\\x00\\xf9\\x52\\x00\\x52\\xd2\\x00\\xf9\\x53\\x00\\x80\\x8b\\x00\\xf9\\x54\\x00\\x51\\xdc\\x00\\xf9\\x55\\x00\\x51\\xcc\\x00\\xf9\\x56\\x00\\x7a\\x1c\\x00\\xf9\\x57\\x00\\x7d\\xbe\\x00\\xf9\\x58\\x00\\x83\\xf1\\x00\\xf9\\x59\\x00\\x96\\x75\\x00\\xf9\\x5a\\x00\\x8b\\x80\\x00\\xf9\\x5b\\x00\\x62\\xcf\\x00\\xf9\\x5c\\x00\\x6a\\x02\\x00\\xf9\\x5d\\x00\\x8a\\xfe\\x00\\xf9\\x5e\\x00\\x4e\\x39\\x00\\xf9\\x5f\\x00\\x5b\\xe7\\x00\\xf9\\x60\\x00\\x60\\x12\\x00\\xf9\\x61\\x00\\x73\\x87\\x00\\xf9\\x62\\x00\\x75\\x70\\x00\\xf9\\x63\\x00\\x53\\x17\\x00\\xf9\\x64\\x00\\x78\\xfb\\x00\\xf9\\x65\\x00\\x4f\\xbf\\x00\\xf9\\x66\\x00\\x5f\\xa9\\x00\\xf9\\x67\\x00\\x4e\\x0d\\x00\\xf9\\x68\\x00\\x6c\\xcc\\x00\\xf9\\x69\\x00\\x65\\x78\\x00\\xf9\\x6a\\x00\\x7d\\x22\\x00\\xf9\\x6b\\x00\\x53\\xc3\\x00\\xf9\\x6c\\x00\\x58\\x5e\\x00\\xf9\\x6d\\x00\\x77\\x01\\x00\\xf9\\x6e\\x00\\x84\\x49\\x00\\xf9\\x6f\\x00\\x8a\\xaa\\x00\\xf9\\x70\\x00\\x6b\\xba\\x00\\xf9\\x71\\x00\\x8f\\xb0\\x00\\xf9\\x72\\x00\\x6c\\x88\\x00\\xf9\\x73\\x00\\x62\\xfe\\x00\\xf9\\x74\\x00\\x82\\xe5\\x00\\xf9\\x75\\x00\\x63\\xa0\\x00\\xf9\\x76\\x00\\x75\\x65\\x00\\xf9\\x77\\x00\\x4e\\xae\\x00\\xf9\\x78\\x00\\x51\\x69\\x00\\xf9\\x79\\x00\\x51\\xc9\\x00\\xf9\\x7a\\x00\\x68\\x81\\x00\\xf9\\x7b\\x00\\x7c\\xe7\\x00\\xf9\\x7c\\x00\\x82\\x6f\\x00\\xf9\\x7d\\x00\\x8a\\xd2\\x00\\xf9\\x7e\\x00\\x91\\xcf\\x00\\xf9\\x7f\\x00\\x52\\xf5\\x00\\xf9\\x80\\x00\\x54\\x42\\x00\\xf9\\x81\\x00\\x59\\x73\\x00\\xf9\\x82\\x00\\x5e\\xec\\x00\\xf9\\x83\\x00\\x65\\xc5\\x00\\xf9\\x84\\x00\\x6f\\xfe\\x00\\xf9\\x85\\x00\\x79\\x2a\\x00\\xf9\\x86\\x00\\x95\\xad\\x00\\xf9\\x87\\x00\\x9a\\x6a\\x00\\xf9\\x88\\x00\\x9e\\x97\\x00\\xf9\\x89\\x00\\x9e\\xce\\x00\\xf9\\x8a\\x00\\x52\\x9b\\x00\\xf9\\x8b\\x00\\x66\\xc6\\x00\\xf9\\x8c\\x00\\x6b\\x77\\x00\\xf9\\x8d\\x00\\x8f\\x62\\x00\\xf9\\x8e\\x00\\x5e\\x74\\x00\\xf9\\x8f\\x00\\x61\\x90\\x00\\xf9\\x90\\x00\\x62\\x00\\x00\\xf9\\x91\\x00\\x64\\x9a\\x00\\xf9\\x92\\x00\\x6f\\x23\\x00\\xf9\\x93\\x00\\x71\\x49\\x00\\xf9\\x94\\x00\\x74\\x89\\x00\\xf9\\x95\\x00\\x79\\xca\\x00\\xf9\\x96\\x00\\x7d\\xf4\\x00\\xf9\\x97\\x00\\x80\\x6f\\x00\\xf9\\x98\\x00\\x8f\\x26\\x00\\xf9\\x99\\x00\\x84\\xee\\x00\\xf9\\x9a\\x00\\x90\\x23\\x00\\xf9\\x9b\\x00\\x93\\x4a\\x00\\xf9\\x9c\\x00\\x52\\x17\\x00\\xf9\\x9d\\x00\\x52\\xa3\\x00\\xf9\\x9e\\x00\\x54\\xbd\\x00\\xf9\\x9f\\x00\\x70\\xc8\\x00\\xf9\\xa0\\x00\\x88\\xc2\\x00\\xf9\\xa1\\x00\\x8a\\xaa\\x00\\xf9\\xa2\\x00\\x5e\\xc9\\x00\\xf9\\xa3\\x00\\x5f\\xf5\\x00\\xf9\\xa4\\x00\\x63\\x7b\\x00\\xf9\\xa5\\x00\\x6b\\xae\\x00\\xf9\\xa6\\x00\\x7c\\x3e\\x00\\xf9\\xa7\\x00\\x73\\x75\\x00\\xf9\\xa8\\x00\\x4e\\xe4\\x00\\xf9\\xa9\\x00\\x56\\xf9\\x00\\xf9\\xaa\\x00\\x5b\\xe7\\x00\\xf9\\xab\\x00\\x5d\\xba\\x00\\xf9\\xac\\x00\\x60\\x1c\\x00\\xf9\\xad\\x00\\x73\\xb2\\x00\\xf9\\xae\\x00\\x74\\x69\\x00\\xf9\\xaf\\x00\\x7f\\x9a\\x00\\xf9\\xb0\\x00\\x80\\x46\\x00\\xf9\\xb1\\x00\\x92\\x34\\x00\\xf9\\xb2\\x00\\x96\\xf6\\x00\\xf9\\xb3\\x00\\x97\\x48\\x00\\xf9\\xb4\\x00\\x98\\x18\\x00\\xf9\\xb5\\x00\\x4f\\x8b\\x00\\xf9\\xb6\\x00\\x79\\xae\\x00\\xf9\\xb7\\x00\\x91\\xb4\\x00\\xf9\\xb8\\x00\\x96\\xb8\\x00\\xf9\\xb9\\x00\\x60\\xe1\\x00\\xf9\\xba\\x00\\x4e\\x86\\x00\\xf9\\xbb\\x00\\x50\\xda\\x00\\xf9\\xbc\\x00\\x5b\\xee\\x00\\xf9\\xbd\\x00\\x5c\\x3f\\x00\\xf9\\xbe\\x00\\x65\\x99\\x00\\xf9\\xbf\\x00\\x6a\\x02\\x00\\xf9\\xc0\\x00\\x71\\xce\\x00\\xf9\\xc1\\x00\\x76\\x42\\x00\\xf9\\xc2\\x00\\x84\\xfc\\x00\\xf9\\xc3\\x00\\x90\\x7c\\x00\\xf9\\xc4\\x00\\x9f\\x8d\\x00\\xf9\\xc5\\x00\\x66\\x88\\x00\\xf9\\xc6\\x00\\x96\\x2e\\x00\\xf9\\xc7\\x00\\x52\\x89\\x00\\xf9\\xc8\\x00\\x67\\x7b\\x00\\xf9\\xc9\\x00\\x67\\xf3\\x00\\xf9\\xca\\x00\\x6d\\x41\\x00\\xf9\\xcb\\x00\\x6e\\x9c\\x00\\xf9\\xcc\\x00\\x74\\x09\\x00\\xf9\\xcd\\x00\\x75\\x59\\x00\\xf9\\xce\\x00\\x78\\x6b\\x00\\xf9\\xcf\\x00\\x7d\\x10\\x00\\xf9\\xd0\\x00\\x98\\x5e\\x00\\xf9\\xd1\\x00\\x51\\x6d\\x00\\xf9\\xd2\\x00\\x62\\x2e\\x00\\xf9\\xd3\\x00\\x96\\x78\\x00\\xf9\\xd4\\x00\\x50\\x2b\\x00\\xf9\\xd5\\x00\\x5d\\x19\\x00\\xf9\\xd6\\x00\\x6d\\xea\\x00\\xf9\\xd7\\x00\\x8f\\x2a\\x00\\xf9\\xd8\\x00\\x5f\\x8b\\x00\\xf9\\xd9\\x00\\x61\\x44\\x00\\xf9\\xda\\x00\\x68\\x17\\x00\\xf9\\xdb\\x00\\x73\\x87\\x00\\xf9\\xdc\\x00\\x96\\x86\\x00\\xf9\\xdd\\x00\\x52\\x29\\x00\\xf9\\xde\\x00\\x54\\x0f\\x00\\xf9\\xdf\\x00\\x5c\\x65\\x00\\xf9\\xe0\\x00\\x66\\x13\\x00\\xf9\\xe1\\x00\\x67\\x4e\\x00\\xf9\\xe2\\x00\\x68\\xa8\\x00\\xf9\\xe3\\x00\\x6c\\xe5\\x00\\xf9\\xe4\\x00\\x74\\x06\\x00\\xf9\\xe5\\x00\\x75\\xe2\\x00\\xf9\\xe6\\x00\\x7f\\x79\\x00\\xf9\\xe7\\x00\\x88\\xcf\\x00\\xf9\\xe8\\x00\\x88\\xe1\\x00\\xf9\\xe9\\x00\\x91\\xcc\\x00\\xf9\\xea\\x00\\x96\\xe2\\x00\\xf9\\xeb\\x00\\x53\\x3f\\x00\\xf9\\xec\\x00\\x6e\\xba\\x00\\xf9\\xed\\x00\\x54\\x1d\\x00\\xf9\\xee\\x00\\x71\\xd0\\x00\\xf9\\xef\\x00\\x74\\x98\\x00\\xf9\\xf0\\x00\\x85\\xfa\\x00\\xf9\\xf1\\x00\\x96\\xa3\\x00\\xf9\\xf2\\x00\\x9c\\x57\\x00\\xf9\\xf3\\x00\\x9e\\x9f\\x00\\xf9\\xf4\\x00\\x67\\x97\\x00\\xf9\\xf5\\x00\\x6d\\xcb\\x00\\xf9\\xf6\\x00\\x81\\xe8\\x00\\xf9\\xf7\\x00\\x7a\\xcb\\x00\\xf9\\xf8\\x00\\x7b\\x20\\x00\\xf9\\xf9\\x00\\x7c\\x92\\x00\\xf9\\xfa\\x00\\x72\\xc0\\x00\\xf9\\xfb\\x00\\x70\\x99\\x00\\xf9\\xfc\\x00\\x8b\\x58\\x00\\xf9\\xfd\\x00\\x4e\\xc0\\x00\\xf9\\xfe\\x00\\x83\\x36\\x00\\xf9\\xff\\x00\\x52\\x3a\\x00\\xfa\\x00\\x00\\x52\\x07\\x00\\xfa\\x01\\x00\\x5e\\xa6\\x00\\xfa\\x02\\x00\\x62\\xd3\\x00\\xfa\\x03\\x00\\x7c\\xd6\\x00\\xfa\\x04\\x00\\x5b\\x85\\x00\\xfa\\x05\\x00\\x6d\\x1e\\x00\\xfa\\x06\\x00\\x66\\xb4\\x00\\xfa\\x07\\x00\\x8f\\x3b\\x00\\xfa\\x08\\x00\\x88\\x4c\\x00\\xfa\\x09\\x00\\x96\\x4d\\x00\\xfa\\x0a\\x00\\x89\\x8b\\x00\\xfa\\x0b\\x00\\x5e\\xd3\\x00\\xfa\\x0c\\x00\\x51\\x40\\x00\\xfa\\x0d\\x00\\x55\\xc0\\x00\\xfa\\x10\\x00\\x58\\x5a\\x00\\xfa\\x12\\x00\\x66\\x74\\x00\\xfa\\x15\\x00\\x51\\xde\\x00\\xfa\\x16\\x00\\x73\\x2a\\x00\\xfa\\x17\\x00\\x76\\xca\\x00\\xfa\\x18\\x00\\x79\\x3c\\x00\\xfa\\x19\\x00\\x79\\x5e\\x00\\xfa\\x1a\\x00\\x79\\x65\\x00\\xfa\\x1b\\x00\\x79\\x8f\\x00\\xfa\\x1c\\x00\\x97\\x56\\x00\\xfa\\x1d\\x00\\x7c\\xbe\\x00\\xfa\\x1e\\x00\\x7f\\xbd\\x00\\xfa\\x20\\x00\\x86\\x12\\x00\\xfa\\x22\\x00\\x8a\\xf8\\x00\\xfa\\x25\\x00\\x90\\x38\\x00\\xfa\\x26\\x00\\x90\\xfd\\x00\\xfa\\x2a\\x00\\x98\\xef\\x00\\xfa\\x2b\\x00\\x98\\xfc\\x00\\xfa\\x2c\\x00\\x99\\x28\\x00\\xfa\\x2d\\x00\\x9d\\xb4\\x00\\xfa\\x2e\\x00\\x90\\xde\\x00\\xfa\\x2f\\x00\\x96\\xb7\\x00\\xfa\\x30\\x00\\x4f\\xae\\x00\\xfa\\x31\\x00\\x50\\xe7\\x00\\xfa\\x32\\x00\\x51\\x4d\\x00\\xfa\\x33\\x00\\x52\\xc9\\x00\\xfa\\x34\\x00\\x52\\xe4\\x00\\xfa\\x35\\x00\\x53\\x51\\x00\\xfa\\x36\\x00\\x55\\x9d\\x00\\xfa\\x37\\x00\\x56\\x06\\x00\\xfa\\x38\\x00\\x56\\x68\\x00\\xfa\\x39\\x00\\x58\\x40\\x00\\xfa\\x3a\\x00\\x58\\xa8\\x00\\xfa\\x3b\\x00\\x5c\\x64\\x00\\xfa\\x3c\\x00\\x5c\\x6e\\x00\\xfa\\x3d\\x00\\x60\\x94\\x00\\xfa\\x3e\\x00\\x61\\x68\\x00\\xfa\\x3f\\x00\\x61\\x8e\\x00\\xfa\\x40\\x00\\x61\\xf2\\x00\\xfa\\x41\\x00\\x65\\x4f\\x00\\xfa\\x42\\x00\\x65\\xe2\\x00\\xfa\\x43\\x00\\x66\\x91\\x00\\xfa\\x44\\x00\\x68\\x85\\x00\\xfa\\x45\\x00\\x6d\\x77\\x00\\xfa\\x46\\x00\\x6e\\x1a\\x00\\xfa\\x47\\x00\\x6f\\x22\\x00\\xfa\\x48\\x00\\x71\\x6e\\x00\\xfa\\x49\\x00\\x72\\x2b\\x00\\xfa\\x4a\\x00\\x74\\x22\\x00\\xfa\\x4b\\x00\\x78\\x91\\x00\\xfa\\x4c\\x00\\x79\\x3e\\x00\\xfa\\x4d\\x00\\x79\\x49\\x00\\xfa\\x4e\\x00\\x79\\x48\\x00\\xfa\\x4f\\x00\\x79\\x50\\x00\\xfa\\x50\\x00\\x79\\x56\\x00\\xfa\\x51\\x00\\x79\\x5d\\x00\\xfa\\x52\\x00\\x79\\x8d\\x00\\xfa\\x53\\x00\\x79\\x8e\\x00\\xfa\\x54\\x00\\x7a\\x40\\x00\\xfa\\x55\\x00\\x7a\\x81\\x00\\xfa\\x56\\x00\\x7b\\xc0\\x00\\xfa\\x57\\x00\\x7d\\xf4\\x00\\xfa\\x58\\x00\\x7e\\x09\\x00\\xfa\\x59\\x00\\x7e\\x41\\x00\\xfa\\x5a\\x00\\x7f\\x72\\x00\\xfa\\x5b\\x00\\x80\\x05\\x00\\xfa\\x5c\\x00\\x81\\xed\\x00\\xfa\\x5d\\x00\\x82\\x79\\x00\\xfa\\x5e\\x00\\x82\\x79\\x00\\xfa\\x5f\\x00\\x84\\x57\\x00\\xfa\\x60\\x00\\x89\\x10\\x00\\xfa\\x61\\x00\\x89\\x96\\x00\\xfa\\x62\\x00\\x8b\\x01\\x00\\xfa\\x63\\x00\\x8b\\x39\\x00\\xfa\\x64\\x00\\x8c\\xd3\\x00\\xfa\\x65\\x00\\x8d\\x08\\x00\\xfa\\x66\\x00\\x8f\\xb6\\x00\\xfa\\x67\\x00\\x90\\x38\\x00\\xfa\\x68\\x00\\x96\\xe3\\x00\\xfa\\x69\\x00\\x97\\xff\\x00\\xfa\\x6a\\x00\\x98\\x3b\\x00\\xfa\\x6b\\x00\\x60\\x75\\x00\\xfa\\x6c\\x02\\x42\\xee\\x00\\xfa\\x6d\\x00\\x82\\x18\\x00\\xfa\\x70\\x00\\x4e\\x26\\x00\\xfa\\x71\\x00\\x51\\xb5\\x00\\xfa\\x72\\x00\\x51\\x68\\x00\\xfa\\x73\\x00\\x4f\\x80\\x00\\xfa\\x74\\x00\\x51\\x45\\x00\\xfa\\x75\\x00\\x51\\x80\\x00\\xfa\\x76\\x00\\x52\\xc7\\x00\\xfa\\x77\\x00\\x52\\xfa\\x00\\xfa\\x78\\x00\\x55\\x9d\\x00\\xfa\\x79\\x00\\x55\\x55\\x00\\xfa\\x7a\\x00\\x55\\x99\\x00\\xfa\\x7b\\x00\\x55\\xe2\\x00\\xfa\\x7c\\x00\\x58\\x5a\\x00\\xfa\\x7d\\x00\\x58\\xb3\\x00\\xfa\\x7e\\x00\\x59\\x44\\x00\\xfa\\x7f\\x00\\x59\\x54\\x00\\xfa\\x80\\x00\\x5a\\x62\\x00\\xfa\\x81\\x00\\x5b\\x28\\x00\\xfa\\x82\\x00\\x5e\\xd2\\x00\\xfa\\x83\\x00\\x5e\\xd9\\x00\\xfa\\x84\\x00\\x5f\\x69\\x00\\xfa\\x85\\x00\\x5f\\xad\\x00\\xfa\\x86\\x00\\x60\\xd8\\x00\\xfa\\x87\\x00\\x61\\x4e\\x00\\xfa\\x88\\x00\\x61\\x08\\x00\\xfa\\x89\\x00\\x61\\x8e\\x00\\xfa\\x8a\\x00\\x61\\x60\\x00\\xfa\\x8b\\x00\\x61\\xf2\\x00\\xfa\\x8c\\x00\\x62\\x34\\x00\\xfa\\x8d\\x00\\x63\\xc4\\x00\\xfa\\x8e\\x00\\x64\\x1c\\x00\\xfa\\x8f\\x00\\x64\\x52\\x00\\xfa\\x90\\x00\\x65\\x56\\x00\\xfa\\x91\\x00\\x66\\x74\\x00\\xfa\\x92\\x00\\x67\\x17\\x00\\xfa\\x93\\x00\\x67\\x1b\\x00\\xfa\\x94\\x00\\x67\\x56\\x00\\xfa\\x95\\x00\\x6b\\x79\\x00\\xfa\\x96\\x00\\x6b\\xba\\x00\\xfa\\x97\\x00\\x6d\\x41\\x00\\xfa\\x98\\x00\\x6e\\xdb\\x00\\xfa\\x99\\x00\\x6e\\xcb\\x00\\xfa\\x9a\\x00\\x6f\\x22\\x00\\xfa\\x9b\\x00\\x70\\x1e\\x00\\xfa\\x9c\\x00\\x71\\x6e\\x00\\xfa\\x9d\\x00\\x77\\xa7\\x00\\xfa\\x9e\\x00\\x72\\x35\\x00\\xfa\\x9f\\x00\\x72\\xaf\\x00\\xfa\\xa0\\x00\\x73\\x2a\\x00\\xfa\\xa1\\x00\\x74\\x71\\x00\\xfa\\xa2\\x00\\x75\\x06\\x00\\xfa\\xa3\\x00\\x75\\x3b\\x00\\xfa\\xa4\\x00\\x76\\x1d\\x00\\xfa\\xa5\\x00\\x76\\x1f\\x00\\xfa\\xa6\\x00\\x76\\xca\\x00\\xfa\\xa7\\x00\\x76\\xdb\\x00\\xfa\\xa8\\x00\\x76\\xf4\\x00\\xfa\\xa9\\x00\\x77\\x4a\\x00\\xfa\\xaa\\x00\\x77\\x40\\x00\\xfa\\xab\\x00\\x78\\xcc\\x00\\xfa\\xac\\x00\\x7a\\xb1\\x00\\xfa\\xad\\x00\\x7b\\xc0\\x00\\xfa\\xae\\x00\\x7c\\x7b\\x00\\xfa\\xaf\\x00\\x7d\\x5b\\x00\\xfa\\xb0\\x00\\x7d\\xf4\\x00\\xfa\\xb1\\x00\\x7f\\x3e\\x00\\xfa\\xb2\\x00\\x80\\x05\\x00\\xfa\\xb3\\x00\\x83\\x52\\x00\\xfa\\xb4\\x00\\x83\\xef\\x00\\xfa\\xb5\\x00\\x87\\x79\\x00\\xfa\\xb6\\x00\\x89\\x41\\x00\\xfa\\xb7\\x00\\x89\\x86\\x00\\xfa\\xb8\\x00\\x89\\x96\\x00\\xfa\\xb9\\x00\\x8a\\xbf\\x00\\xfa\\xba\\x00\\x8a\\xf8\\x00\\xfa\\xbb\\x00\\x8a\\xcb\\x00\\xfa\\xbc\\x00\\x8b\\x01\\x00\\xfa\\xbd\\x00\\x8a\\xfe\\x00\\xfa\\xbe\\x00\\x8a\\xed\\x00\\xfa\\xbf\\x00\\x8b\\x39\\x00\\xfa\\xc0\\x00\\x8b\\x8a\\x00\\xfa\\xc1\\x00\\x8d\\x08\\x00\\xfa\\xc2\\x00\\x8f\\x38\\x00\\xfa\\xc3\\x00\\x90\\x72\\x00\\xfa\\xc4\\x00\\x91\\x99\\x00\\xfa\\xc5\\x00\\x92\\x76\\x00\\xfa\\xc6\\x00\\x96\\x7c\\x00\\xfa\\xc7\\x00\\x96\\xe3\\x00\\xfa\\xc8\\x00\\x97\\x56\\x00\\xfa\\xc9\\x00\\x97\\xdb\\x00\\xfa\\xca\\x00\\x97\\xff\\x00\\xfa\\xcb\\x00\\x98\\x0b\\x00\\xfa\\xcc\\x00\\x98\\x3b\\x00\\xfa\\xcd\\x00\\x9b\\x12\\x00\\xfa\\xce\\x00\\x9f\\x9c\\x00\\xfa\\xcf\\x02\\x28\\x4a\\x00\\xfa\\xd0\\x02\\x28\\x44\\x00\\xfa\\xd1\\x02\\x33\\xd5\\x00\\xfa\\xd2\\x00\\x3b\\x9d\\x00\\xfa\\xd3\\x00\\x40\\x18\\x00\\xfa\\xd4\\x00\\x40\\x39\\x00\\xfa\\xd5\\x02\\x52\\x49\\x00\\xfa\\xd6\\x02\\x5c\\xd0\\x00\\xfa\\xd7\\x02\\x7e\\xd3\\x00\\xfa\\xd8\\x00\\x9f\\x43\\x00\\xfa\\xd9\\x00\\x9f\\x8e\\x02\\xf8\\x00\\x00\\x4e\\x3d\\x02\\xf8\\x01\\x00\\x4e\\x38\\x02\\xf8\\x02\\x00\\x4e\\x41\\x02\\xf8\\x03\\x02\\x01\\x22\\x02\\xf8\\x04\\x00\\x4f\\x60\\x02\\xf8\\x05\\x00\\x4f\\xae\\x02\\xf8\\x06\\x00\\x4f\\xbb\\x02\\xf8\\x07\\x00\\x50\\x02\\x02\\xf8\\x08\\x00\\x50\\x7a\\x02\\xf8\\x09\\x00\\x50\\x99\\x02\\xf8\\x0a\\x00\\x50\\xe7\\x02\\xf8\\x0b\\x00\\x50\\xcf\\x02\\xf8\\x0c\\x00\\x34\\x9e\\x02\\xf8\\x0d\\x02\\x06\\x3a\\x02\\xf8\\x0e\\x00\\x51\\x4d\\x02\\xf8\\x0f\\x00\\x51\\x54\\x02\\xf8\\x10\\x00\\x51\\x64\\x02\\xf8\\x11\\x00\\x51\\x77\\x02\\xf8\\x12\\x02\\x05\\x1c\\x02\\xf8\\x13\\x00\\x34\\xb9\\x02\\xf8\\x14\\x00\\x51\\x67\\x02\\xf8\\x15\\x00\\x51\\x8d\\x02\\xf8\\x16\\x02\\x05\\x4b\\x02\\xf8\\x17\\x00\\x51\\x97\\x02\\xf8\\x18\\x00\\x51\\xa4\\x02\\xf8\\x19\\x00\\x4e\\xcc\\x02\\xf8\\x1a\\x00\\x51\\xac\\x02\\xf8\\x1b\\x00\\x51\\xb5\\x02\\xf8\\x1c\\x02\\x91\\xdf\\x02\\xf8\\x1d\\x00\\x51\\xf5\\x02\\xf8\\x1e\\x00\\x52\\x03\\x02\\xf8\\x1f\\x00\\x34\\xdf\\x02\\xf8\\x20\\x00\\x52\\x3b\\x02\\xf8\\x21\\x00\\x52\\x46\\x02\\xf8\\x22\\x00\\x52\\x72\\x02\\xf8\\x23\\x00\\x52\\x77\\x02\\xf8\\x24\\x00\\x35\\x15\\x02\\xf8\\x25\\x00\\x52\\xc7\\x02\\xf8\\x26\\x00\\x52\\xc9\\x02\\xf8\\x27\\x00\\x52\\xe4\\x02\\xf8\\x28\\x00\\x52\\xfa\\x02\\xf8\\x29\\x00\\x53\\x05\\x02\\xf8\\x2a\\x00\\x53\\x06\\x02\\xf8\\x2b\\x00\\x53\\x17\\x02\\xf8\\x2c\\x00\\x53\\x49\\x02\\xf8\\x2d\\x00\\x53\\x51\\x02\\xf8\\x2e\\x00\\x53\\x5a\\x02\\xf8\\x2f\\x00\\x53\\x73\\x02\\xf8\\x30\\x00\\x53\\x7d\\x02\\xf8\\x31\\x00\\x53\\x7f\\x02\\xf8\\x32\\x00\\x53\\x7f\\x02\\xf8\\x33\\x00\\x53\\x7f\\x02\\xf8\\x34\\x02\\x0a\\x2c\\x02\\xf8\\x35\\x00\\x70\\x70\\x02\\xf8\\x36\\x00\\x53\\xca\\x02\\xf8\\x37\\x00\\x53\\xdf\\x02\\xf8\\x38\\x02\\x0b\\x63\\x02\\xf8\\x39\\x00\\x53\\xeb\\x02\\xf8\\x3a\\x00\\x53\\xf1\\x02\\xf8\\x3b\\x00\\x54\\x06\\x02\\xf8\\x3c\\x00\\x54\\x9e\\x02\\xf8\\x3d\\x00\\x54\\x38\\x02\\xf8\\x3e\\x00\\x54\\x48\\x02\\xf8\\x3f\\x00\\x54\\x68\\x02\\xf8\\x40\\x00\\x54\\xa2\\x02\\xf8\\x41\\x00\\x54\\xf6\\x02\\xf8\\x42\\x00\\x55\\x10\\x02\\xf8\\x43\\x00\\x55\\x53\\x02\\xf8\\x44\\x00\\x55\\x63\\x02\\xf8\\x45\\x00\\x55\\x84\\x02\\xf8\\x46\\x00\\x55\\x84\\x02\\xf8\\x47\\x00\\x55\\x99\\x02\\xf8\\x48\\x00\\x55\\xab\\x02\\xf8\\x49\\x00\\x55\\xb3\\x02\\xf8\\x4a\\x00\\x55\\xc2\\x02\\xf8\\x4b\\x00\\x57\\x16\\x02\\xf8\\x4c\\x00\\x56\\x06\\x02\\xf8\\x4d\\x00\\x57\\x17\\x02\\xf8\\x4e\\x00\\x56\\x51\\x02\\xf8\\x4f\\x00\\x56\\x74\\x02\\xf8\\x50\\x00\\x52\\x07\\x02\\xf8\\x51\\x00\\x58\\xee\\x02\\xf8\\x52\\x00\\x57\\xce\\x02\\xf8\\x53\\x00\\x57\\xf4\\x02\\xf8\\x54\\x00\\x58\\x0d\\x02\\xf8\\x55\\x00\\x57\\x8b\\x02\\xf8\\x56\\x00\\x58\\x32\\x02\\xf8\\x57\\x00\\x58\\x31\\x02\\xf8\\x58\\x00\\x58\\xac\\x02\\xf8\\x59\\x02\\x14\\xe4\\x02\\xf8\\x5a\\x00\\x58\\xf2\\x02\\xf8\\x5b\\x00\\x58\\xf7\\x02\\xf8\\x5c\\x00\\x59\\x06\\x02\\xf8\\x5d\\x00\\x59\\x1a\\x02\\xf8\\x5e\\x00\\x59\\x22\\x02\\xf8\\x5f\\x00\\x59\\x62\\x02\\xf8\\x60\\x02\\x16\\xa8\\x02\\xf8\\x61\\x02\\x16\\xea\\x02\\xf8\\x62\\x00\\x59\\xec\\x02\\xf8\\x63\\x00\\x5a\\x1b\\x02\\xf8\\x64\\x00\\x5a\\x27\\x02\\xf8\\x65\\x00\\x59\\xd8\\x02\\xf8\\x66\\x00\\x5a\\x66\\x02\\xf8\\x67\\x00\\x36\\xee\\x02\\xf8\\x68\\x00\\x36\\xfc\\x02\\xf8\\x69\\x00\\x5b\\x08\\x02\\xf8\\x6a\\x00\\x5b\\x3e\\x02\\xf8\\x6b\\x00\\x5b\\x3e\\x02\\xf8\\x6c\\x02\\x19\\xc8\\x02\\xf8\\x6d\\x00\\x5b\\xc3\\x02\\xf8\\x6e\\x00\\x5b\\xd8\\x02\\xf8\\x6f\\x00\\x5b\\xe7\\x02\\xf8\\x70\\x00\\x5b\\xf3\\x02\\xf8\\x71\\x02\\x1b\\x18\\x02\\xf8\\x72\\x00\\x5b\\xff\\x02\\xf8\\x73\\x00\\x5c\\x06\\x02\\xf8\\x74\\x00\\x5f\\x53\\x02\\xf8\\x75\\x00\\x5c\\x22\\x02\\xf8\\x76\\x00\\x37\\x81\\x02\\xf8\\x77\\x00\\x5c\\x60\\x02\\xf8\\x78\\x00\\x5c\\x6e\\x02\\xf8\\x79\\x00\\x5c\\xc0\\x02\\xf8\\x7a\\x00\\x5c\\x8d\\x02\\xf8\\x7b\\x02\\x1d\\xe4\\x02\\xf8\\x7c\\x00\\x5d\\x43\\x02\\xf8\\x7d\\x02\\x1d\\xe6\\x02\\xf8\\x7e\\x00\\x5d\\x6e\\x02\\xf8\\x7f\\x00\\x5d\\x6b\\x02\\xf8\\x80\\x00\\x5d\\x7c\\x02\\xf8\\x81\\x00\\x5d\\xe1\\x02\\xf8\\x82\\x00\\x5d\\xe2\\x02\\xf8\\x83\\x00\\x38\\x2f\\x02\\xf8\\x84\\x00\\x5d\\xfd\\x02\\xf8\\x85\\x00\\x5e\\x28\\x02\\xf8\\x86\\x00\\x5e\\x3d\\x02\\xf8\\x87\\x00\\x5e\\x69\\x02\\xf8\\x88\\x00\\x38\\x62\\x02\\xf8\\x89\\x02\\x21\\x83\\x02\\xf8\\x8a\\x00\\x38\\x7c\\x02\\xf8\\x8b\\x00\\x5e\\xb0\\x02\\xf8\\x8c\\x00\\x5e\\xb3\\x02\\xf8\\x8d\\x00\\x5e\\xb6\\x02\\xf8\\x8e\\x00\\x5e\\xca\\x02\\xf8\\x8f\\x02\\xa3\\x92\\x02\\xf8\\x90\\x00\\x5e\\xfe\\x02\\xf8\\x91\\x02\\x23\\x31\\x02\\xf8\\x92\\x02\\x23\\x31\\x02\\xf8\\x93\\x00\\x82\\x01\\x02\\xf8\\x94\\x00\\x5f\\x22\\x02\\xf8\\x95\\x00\\x5f\\x22\\x02\\xf8\\x96\\x00\\x38\\xc7\\x02\\xf8\\x97\\x02\\x32\\xb8\\x02\\xf8\\x98\\x02\\x61\\xda\\x02\\xf8\\x99\\x00\\x5f\\x62\\x02\\xf8\\x9a\\x00\\x5f\\x6b\\x02\\xf8\\x9b\\x00\\x38\\xe3\\x02\\xf8\\x9c\\x00\\x5f\\x9a\\x02\\xf8\\x9d\\x00\\x5f\\xcd\\x02\\xf8\\x9e\\x00\\x5f\\xd7\\x02\\xf8\\x9f\\x00\\x5f\\xf9\\x02\\xf8\\xa0\\x00\\x60\\x81\\x02\\xf8\\xa1\\x00\\x39\\x3a\\x02\\xf8\\xa2\\x00\\x39\\x1c\\x02\\xf8\\xa3\\x00\\x60\\x94\\x02\\xf8\\xa4\\x02\\x26\\xd4\\x02\\xf8\\xa5\\x00\\x60\\xc7\\x02\\xf8\\xa6\\x00\\x61\\x48\\x02\\xf8\\xa7\\x00\\x61\\x4c\\x02\\xf8\\xa8\\x00\\x61\\x4e\\x02\\xf8\\xa9\\x00\\x61\\x4c\\x02\\xf8\\xaa\\x00\\x61\\x7a\\x02\\xf8\\xab\\x00\\x61\\x8e\\x02\\xf8\\xac\\x00\\x61\\xb2\\x02\\xf8\\xad\\x00\\x61\\xa4\\x02\\xf8\\xae\\x00\\x61\\xaf\\x02\\xf8\\xaf\\x00\\x61\\xde\\x02\\xf8\\xb0\\x00\\x61\\xf2\\x02\\xf8\\xb1\\x00\\x61\\xf6\\x02\\xf8\\xb2\\x00\\x62\\x10\\x02\\xf8\\xb3\\x00\\x62\\x1b\\x02\\xf8\\xb4\\x00\\x62\\x5d\\x02\\xf8\\xb5\\x00\\x62\\xb1\\x02\\xf8\\xb6\\x00\\x62\\xd4\\x02\\xf8\\xb7\\x00\\x63\\x50\\x02\\xf8\\xb8\\x02\\x2b\\x0c\\x02\\xf8\\xb9\\x00\\x63\\x3d\\x02\\xf8\\xba\\x00\\x62\\xfc\\x02\\xf8\\xbb\\x00\\x63\\x68\\x02\\xf8\\xbc\\x00\\x63\\x83\\x02\\xf8\\xbd\\x00\\x63\\xe4\\x02\\xf8\\xbe\\x02\\x2b\\xf1\\x02\\xf8\\xbf\\x00\\x64\\x22\\x02\\xf8\\xc0\\x00\\x63\\xc5\\x02\\xf8\\xc1\\x00\\x63\\xa9\\x02\\xf8\\xc2\\x00\\x3a\\x2e\\x02\\xf8\\xc3\\x00\\x64\\x69\\x02\\xf8\\xc4\\x00\\x64\\x7e\\x02\\xf8\\xc5\\x00\\x64\\x9d\\x02\\xf8\\xc6\\x00\\x64\\x77\\x02\\xf8\\xc7\\x00\\x3a\\x6c\\x02\\xf8\\xc8\\x00\\x65\\x4f\\x02\\xf8\\xc9\\x00\\x65\\x6c\\x02\\xf8\\xca\\x02\\x30\\x0a\\x02\\xf8\\xcb\\x00\\x65\\xe3\\x02\\xf8\\xcc\\x00\\x66\\xf8\\x02\\xf8\\xcd\\x00\\x66\\x49\\x02\\xf8\\xce\\x00\\x3b\\x19\\x02\\xf8\\xcf\\x00\\x66\\x91\\x02\\xf8\\xd0\\x00\\x3b\\x08\\x02\\xf8\\xd1\\x00\\x3a\\xe4\\x02\\xf8\\xd2\\x00\\x51\\x92\\x02\\xf8\\xd3\\x00\\x51\\x95\\x02\\xf8\\xd4\\x00\\x67\\x00\\x02\\xf8\\xd5\\x00\\x66\\x9c\\x02\\xf8\\xd6\\x00\\x80\\xad\\x02\\xf8\\xd7\\x00\\x43\\xd9\\x02\\xf8\\xd8\\x00\\x67\\x17\\x02\\xf8\\xd9\\x00\\x67\\x1b\\x02\\xf8\\xda\\x00\\x67\\x21\\x02\\xf8\\xdb\\x00\\x67\\x5e\\x02\\xf8\\xdc\\x00\\x67\\x53\\x02\\xf8\\xdd\\x02\\x33\\xc3\\x02\\xf8\\xde\\x00\\x3b\\x49\\x02\\xf8\\xdf\\x00\\x67\\xfa\\x02\\xf8\\xe0\\x00\\x67\\x85\\x02\\xf8\\xe1\\x00\\x68\\x52\\x02\\xf8\\xe2\\x00\\x68\\x85\\x02\\xf8\\xe3\\x02\\x34\\x6d\\x02\\xf8\\xe4\\x00\\x68\\x8e\\x02\\xf8\\xe5\\x00\\x68\\x1f\\x02\\xf8\\xe6\\x00\\x69\\x14\\x02\\xf8\\xe7\\x00\\x3b\\x9d\\x02\\xf8\\xe8\\x00\\x69\\x42\\x02\\xf8\\xe9\\x00\\x69\\xa3\\x02\\xf8\\xea\\x00\\x69\\xea\\x02\\xf8\\xeb\\x00\\x6a\\xa8\\x02\\xf8\\xec\\x02\\x36\\xa3\\x02\\xf8\\xed\\x00\\x6a\\xdb\\x02\\xf8\\xee\\x00\\x3c\\x18\\x02\\xf8\\xef\\x00\\x6b\\x21\\x02\\xf8\\xf0\\x02\\x38\\xa7\\x02\\xf8\\xf1\\x00\\x6b\\x54\\x02\\xf8\\xf2\\x00\\x3c\\x4e\\x02\\xf8\\xf3\\x00\\x6b\\x72\\x02\\xf8\\xf4\\x00\\x6b\\x9f\\x02\\xf8\\xf5\\x00\\x6b\\xba\\x02\\xf8\\xf6\\x00\\x6b\\xbb\\x02\\xf8\\xf7\\x02\\x3a\\x8d\\x02\\xf8\\xf8\\x02\\x1d\\x0b\\x02\\xf8\\xf9\\x02\\x3a\\xfa\\x02\\xf8\\xfa\\x00\\x6c\\x4e\\x02\\xf8\\xfb\\x02\\x3c\\xbc\\x02\\xf8\\xfc\\x00\\x6c\\xbf\\x02\\xf8\\xfd\\x00\\x6c\\xcd\\x02\\xf8\\xfe\\x00\\x6c\\x67\\x02\\xf8\\xff\\x00\\x6d\\x16\\x02\\xf9\\x00\\x00\\x6d\\x3e\\x02\\xf9\\x01\\x00\\x6d\\x77\\x02\\xf9\\x02\\x00\\x6d\\x41\\x02\\xf9\\x03\\x00\\x6d\\x69\\x02\\xf9\\x04\\x00\\x6d\\x78\\x02\\xf9\\x05\\x00\\x6d\\x85\\x02\\xf9\\x06\\x02\\x3d\\x1e\\x02\\xf9\\x07\\x00\\x6d\\x34\\x02\\xf9\\x08\\x00\\x6e\\x2f\\x02\\xf9\\x09\\x00\\x6e\\x6e\\x02\\xf9\\x0a\\x00\\x3d\\x33\\x02\\xf9\\x0b\\x00\\x6e\\xcb\\x02\\xf9\\x0c\\x00\\x6e\\xc7\\x02\\xf9\\x0d\\x02\\x3e\\xd1\\x02\\xf9\\x0e\\x00\\x6d\\xf9\\x02\\xf9\\x0f\\x00\\x6f\\x6e\\x02\\xf9\\x10\\x02\\x3f\\x5e\\x02\\xf9\\x11\\x02\\x3f\\x8e\\x02\\xf9\\x12\\x00\\x6f\\xc6\\x02\\xf9\\x13\\x00\\x70\\x39\\x02\\xf9\\x14\\x00\\x70\\x1e\\x02\\xf9\\x15\\x00\\x70\\x1b\\x02\\xf9\\x16\\x00\\x3d\\x96\\x02\\xf9\\x17\\x00\\x70\\x4a\\x02\\xf9\\x18\\x00\\x70\\x7d\\x02\\xf9\\x19\\x00\\x70\\x77\\x02\\xf9\\x1a\\x00\\x70\\xad\\x02\\xf9\\x1b\\x02\\x05\\x25\\x02\\xf9\\x1c\\x00\\x71\\x45\\x02\\xf9\\x1d\\x02\\x42\\x63\\x02\\xf9\\x1e\\x00\\x71\\x9c\\x02\\xf9\\x1f\\x02\\x43\\xab\\x02\\xf9\\x20\\x00\\x72\\x28\\x02\\xf9\\x21\\x00\\x72\\x35\\x02\\xf9\\x22\\x00\\x72\\x50\\x02\\xf9\\x23\\x02\\x46\\x08\\x02\\xf9\\x24\\x00\\x72\\x80\\x02\\xf9\\x25\\x00\\x72\\x95\\x02\\xf9\\x26\\x02\\x47\\x35\\x02\\xf9\\x27\\x02\\x48\\x14\\x02\\xf9\\x28\\x00\\x73\\x7a\\x02\\xf9\\x29\\x00\\x73\\x8b\\x02\\xf9\\x2a\\x00\\x3e\\xac\\x02\\xf9\\x2b\\x00\\x73\\xa5\\x02\\xf9\\x2c\\x00\\x3e\\xb8\\x02\\xf9\\x2d\\x00\\x3e\\xb8\\x02\\xf9\\x2e\\x00\\x74\\x47\\x02\\xf9\\x2f\\x00\\x74\\x5c\\x02\\xf9\\x30\\x00\\x74\\x71\\x02\\xf9\\x31\\x00\\x74\\x85\\x02\\xf9\\x32\\x00\\x74\\xca\\x02\\xf9\\x33\\x00\\x3f\\x1b\\x02\\xf9\\x34\\x00\\x75\\x24\\x02\\xf9\\x35\\x02\\x4c\\x36\\x02\\xf9\\x36\\x00\\x75\\x3e\\x02\\xf9\\x37\\x02\\x4c\\x92\\x02\\xf9\\x38\\x00\\x75\\x70\\x02\\xf9\\x39\\x02\\x21\\x9f\\x02\\xf9\\x3a\\x00\\x76\\x10\\x02\\xf9\\x3b\\x02\\x4f\\xa1\\x02\\xf9\\x3c\\x02\\x4f\\xb8\\x02\\xf9\\x3d\\x02\\x50\\x44\\x02\\xf9\\x3e\\x00\\x3f\\xfc\\x02\\xf9\\x3f\\x00\\x40\\x08\\x02\\xf9\\x40\\x00\\x76\\xf4\\x02\\xf9\\x41\\x02\\x50\\xf3\\x02\\xf9\\x42\\x02\\x50\\xf2\\x02\\xf9\\x43\\x02\\x51\\x19\\x02\\xf9\\x44\\x02\\x51\\x33\\x02\\xf9\\x45\\x00\\x77\\x1e\\x02\\xf9\\x46\\x00\\x77\\x1f\\x02\\xf9\\x47\\x00\\x77\\x1f\\x02\\xf9\\x48\\x00\\x77\\x4a\\x02\\xf9\\x49\\x00\\x40\\x39\\x02\\xf9\\x4a\\x00\\x77\\x8b\\x02\\xf9\\x4b\\x00\\x40\\x46\\x02\\xf9\\x4c\\x00\\x40\\x96\\x02\\xf9\\x4d\\x02\\x54\\x1d\\x02\\xf9\\x4e\\x00\\x78\\x4e\\x02\\xf9\\x4f\\x00\\x78\\x8c\\x02\\xf9\\x50\\x00\\x78\\xcc\\x02\\xf9\\x51\\x00\\x40\\xe3\\x02\\xf9\\x52\\x02\\x56\\x26\\x02\\xf9\\x53\\x00\\x79\\x56\\x02\\xf9\\x54\\x02\\x56\\x9a\\x02\\xf9\\x55\\x02\\x56\\xc5\\x02\\xf9\\x56\\x00\\x79\\x8f\\x02\\xf9\\x57\\x00\\x79\\xeb\\x02\\xf9\\x58\\x00\\x41\\x2f\\x02\\xf9\\x59\\x00\\x7a\\x40\\x02\\xf9\\x5a\\x00\\x7a\\x4a\\x02\\xf9\\x5b\\x00\\x7a\\x4f\\x02\\xf9\\x5c\\x02\\x59\\x7c\\x02\\xf9\\x5d\\x02\\x5a\\xa7\\x02\\xf9\\x5e\\x02\\x5a\\xa7\\x02\\xf9\\x5f\\x00\\x7a\\xee\\x02\\xf9\\x60\\x00\\x42\\x02\\x02\\xf9\\x61\\x02\\x5b\\xab\\x02\\xf9\\x62\\x00\\x7b\\xc6\\x02\\xf9\\x63\\x00\\x7b\\xc9\\x02\\xf9\\x64\\x00\\x42\\x27\\x02\\xf9\\x65\\x02\\x5c\\x80\\x02\\xf9\\x66\\x00\\x7c\\xd2\\x02\\xf9\\x67\\x00\\x42\\xa0\\x02\\xf9\\x68\\x00\\x7c\\xe8\\x02\\xf9\\x69\\x00\\x7c\\xe3\\x02\\xf9\\x6a\\x00\\x7d\\x00\\x02\\xf9\\x6b\\x02\\x5f\\x86\\x02\\xf9\\x6c\\x00\\x7d\\x63\\x02\\xf9\\x6d\\x00\\x43\\x01\\x02\\xf9\\x6e\\x00\\x7d\\xc7\\x02\\xf9\\x6f\\x00\\x7e\\x02\\x02\\xf9\\x70\\x00\\x7e\\x45\\x02\\xf9\\x71\\x00\\x43\\x34\\x02\\xf9\\x72\\x02\\x62\\x28\\x02\\xf9\\x73\\x02\\x62\\x47\\x02\\xf9\\x74\\x00\\x43\\x59\\x02\\xf9\\x75\\x02\\x62\\xd9\\x02\\xf9\\x76\\x00\\x7f\\x7a\\x02\\xf9\\x77\\x02\\x63\\x3e\\x02\\xf9\\x78\\x00\\x7f\\x95\\x02\\xf9\\x79\\x00\\x7f\\xfa\\x02\\xf9\\x7a\\x00\\x80\\x05\\x02\\xf9\\x7b\\x02\\x64\\xda\\x02\\xf9\\x7c\\x02\\x65\\x23\\x02\\xf9\\x7d\\x00\\x80\\x60\\x02\\xf9\\x7e\\x02\\x65\\xa8\\x02\\xf9\\x7f\\x00\\x80\\x70\\x02\\xf9\\x80\\x02\\x33\\x5f\\x02\\xf9\\x81\\x00\\x43\\xd5\\x02\\xf9\\x82\\x00\\x80\\xb2\\x02\\xf9\\x83\\x00\\x81\\x03\\x02\\xf9\\x84\\x00\\x44\\x0b\\x02\\xf9\\x85\\x00\\x81\\x3e\\x02\\xf9\\x86\\x00\\x5a\\xb5\\x02\\xf9\\x87\\x02\\x67\\xa7\\x02\\xf9\\x88\\x02\\x67\\xb5\\x02\\xf9\\x89\\x02\\x33\\x93\\x02\\xf9\\x8a\\x02\\x33\\x9c\\x02\\xf9\\x8b\\x00\\x82\\x01\\x02\\xf9\\x8c\\x00\\x82\\x04\\x02\\xf9\\x8d\\x00\\x8f\\x9e\\x02\\xf9\\x8e\\x00\\x44\\x6b\\x02\\xf9\\x8f\\x00\\x82\\x91\\x02\\xf9\\x90\\x00\\x82\\x8b\\x02\\xf9\\x91\\x00\\x82\\x9d\\x02\\xf9\\x92\\x00\\x52\\xb3\\x02\\xf9\\x93\\x00\\x82\\xb1\\x02\\xf9\\x94\\x00\\x82\\xb3\\x02\\xf9\\x95\\x00\\x82\\xbd\\x02\\xf9\\x96\\x00\\x82\\xe6\\x02\\xf9\\x97\\x02\\x6b\\x3c\\x02\\xf9\\x98\\x00\\x82\\xe5\\x02\\xf9\\x99\\x00\\x83\\x1d\\x02\\xf9\\x9a\\x00\\x83\\x63\\x02\\xf9\\x9b\\x00\\x83\\xad\\x02\\xf9\\x9c\\x00\\x83\\x23\\x02\\xf9\\x9d\\x00\\x83\\xbd\\x02\\xf9\\x9e\\x00\\x83\\xe7\\x02\\xf9\\x9f\\x00\\x84\\x57\\x02\\xf9\\xa0\\x00\\x83\\x53\\x02\\xf9\\xa1\\x00\\x83\\xca\\x02\\xf9\\xa2\\x00\\x83\\xcc\\x02\\xf9\\xa3\\x00\\x83\\xdc\\x02\\xf9\\xa4\\x02\\x6c\\x36\\x02\\xf9\\xa5\\x02\\x6d\\x6b\\x02\\xf9\\xa6\\x02\\x6c\\xd5\\x02\\xf9\\xa7\\x00\\x45\\x2b\\x02\\xf9\\xa8\\x00\\x84\\xf1\\x02\\xf9\\xa9\\x00\\x84\\xf3\\x02\\xf9\\xaa\\x00\\x85\\x16\\x02\\xf9\\xab\\x02\\x73\\xca\\x02\\xf9\\xac\\x00\\x85\\x64\\x02\\xf9\\xad\\x02\\x6f\\x2c\\x02\\xf9\\xae\\x00\\x45\\x5d\\x02\\xf9\\xaf\\x00\\x45\\x61\\x02\\xf9\\xb0\\x02\\x6f\\xb1\\x02\\xf9\\xb1\\x02\\x70\\xd2\\x02\\xf9\\xb2\\x00\\x45\\x6b\\x02\\xf9\\xb3\\x00\\x86\\x50\\x02\\xf9\\xb4\\x00\\x86\\x5c\\x02\\xf9\\xb5\\x00\\x86\\x67\\x02\\xf9\\xb6\\x00\\x86\\x69\\x02\\xf9\\xb7\\x00\\x86\\xa9\\x02\\xf9\\xb8\\x00\\x86\\x88\\x02\\xf9\\xb9\\x00\\x87\\x0e\\x02\\xf9\\xba\\x00\\x86\\xe2\\x02\\xf9\\xbb\\x00\\x87\\x79\\x02\\xf9\\xbc\\x00\\x87\\x28\\x02\\xf9\\xbd\\x00\\x87\\x6b\\x02\\xf9\\xbe\\x00\\x87\\x86\\x02\\xf9\\xbf\\x00\\x45\\xd7\\x02\\xf9\\xc0\\x00\\x87\\xe1\\x02\\xf9\\xc1\\x00\\x88\\x01\\x02\\xf9\\xc2\\x00\\x45\\xf9\\x02\\xf9\\xc3\\x00\\x88\\x60\\x02\\xf9\\xc4\\x00\\x88\\x63\\x02\\xf9\\xc5\\x02\\x76\\x67\\x02\\xf9\\xc6\\x00\\x88\\xd7\\x02\\xf9\\xc7\\x00\\x88\\xde\\x02\\xf9\\xc8\\x00\\x46\\x35\\x02\\xf9\\xc9\\x00\\x88\\xfa\\x02\\xf9\\xca\\x00\\x34\\xbb\\x02\\xf9\\xcb\\x02\\x78\\xae\\x02\\xf9\\xcc\\x02\\x79\\x66\\x02\\xf9\\xcd\\x00\\x46\\xbe\\x02\\xf9\\xce\\x00\\x46\\xc7\\x02\\xf9\\xcf\\x00\\x8a\\xa0\\x02\\xf9\\xd0\\x00\\x8a\\xed\\x02\\xf9\\xd1\\x00\\x8b\\x8a\\x02\\xf9\\xd2\\x00\\x8c\\x55\\x02\\xf9\\xd3\\x02\\x7c\\xa8\\x02\\xf9\\xd4\\x00\\x8c\\xab\\x02\\xf9\\xd5\\x00\\x8c\\xc1\\x02\\xf9\\xd6\\x00\\x8d\\x1b\\x02\\xf9\\xd7\\x00\\x8d\\x77\\x02\\xf9\\xd8\\x02\\x7f\\x2f\\x02\\xf9\\xd9\\x02\\x08\\x04\\x02\\xf9\\xda\\x00\\x8d\\xcb\\x02\\xf9\\xdb\\x00\\x8d\\xbc\\x02\\xf9\\xdc\\x00\\x8d\\xf0\\x02\\xf9\\xdd\\x02\\x08\\xde\\x02\\xf9\\xde\\x00\\x8e\\xd4\\x02\\xf9\\xdf\\x00\\x8f\\x38\\x02\\xf9\\xe0\\x02\\x85\\xd2\\x02\\xf9\\xe1\\x02\\x85\\xed\\x02\\xf9\\xe2\\x00\\x90\\x94\\x02\\xf9\\xe3\\x00\\x90\\xf1\\x02\\xf9\\xe4\\x00\\x91\\x11\\x02\\xf9\\xe5\\x02\\x87\\x2e\\x02\\xf9\\xe6\\x00\\x91\\x1b\\x02\\xf9\\xe7\\x00\\x92\\x38\\x02\\xf9\\xe8\\x00\\x92\\xd7\\x02\\xf9\\xe9\\x00\\x92\\xd8\\x02\\xf9\\xea\\x00\\x92\\x7c\\x02\\xf9\\xeb\\x00\\x93\\xf9\\x02\\xf9\\xec\\x00\\x94\\x15\\x02\\xf9\\xed\\x02\\x8b\\xfa\\x02\\xf9\\xee\\x00\\x95\\x8b\\x02\\xf9\\xef\\x00\\x49\\x95\\x02\\xf9\\xf0\\x00\\x95\\xb7\\x02\\xf9\\xf1\\x02\\x8d\\x77\\x02\\xf9\\xf2\\x00\\x49\\xe6\\x02\\xf9\\xf3\\x00\\x96\\xc3\\x02\\xf9\\xf4\\x00\\x5d\\xb2\\x02\\xf9\\xf5\\x00\\x97\\x23\\x02\\xf9\\xf6\\x02\\x91\\x45\\x02\\xf9\\xf7\\x02\\x92\\x1a\\x02\\xf9\\xf8\\x00\\x4a\\x6e\\x02\\xf9\\xf9\\x00\\x4a\\x76\\x02\\xf9\\xfa\\x00\\x97\\xe0\\x02\\xf9\\xfb\\x02\\x94\\x0a\\x02\\xf9\\xfc\\x00\\x4a\\xb2\\x02\\xf9\\xfd\\x02\\x94\\x96\\x02\\xf9\\xfe\\x00\\x98\\x0b\\x02\\xf9\\xff\\x00\\x98\\x0b\\x02\\xfa\\x00\\x00\\x98\\x29\\x02\\xfa\\x01\\x02\\x95\\xb6\\x02\\xfa\\x02\\x00\\x98\\xe2\\x02\\xfa\\x03\\x00\\x4b\\x33\\x02\\xfa\\x04\\x00\\x99\\x29\\x02\\xfa\\x05\\x00\\x99\\xa7\\x02\\xfa\\x06\\x00\\x99\\xc2\\x02\\xfa\\x07\\x00\\x99\\xfe\\x02\\xfa\\x08\\x00\\x4b\\xce\\x02\\xfa\\x09\\x02\\x9b\\x30\\x02\\xfa\\x0a\\x00\\x9b\\x12\\x02\\xfa\\x0b\\x00\\x9c\\x40\\x02\\xfa\\x0c\\x00\\x9c\\xfd\\x02\\xfa\\x0d\\x00\\x4c\\xce\\x02\\xfa\\x0e\\x00\\x4c\\xed\\x02\\xfa\\x0f\\x00\\x9d\\x67\\x02\\xfa\\x10\\x02\\xa0\\xce\\x02\\xfa\\x11\\x00\\x4c\\xf8\\x02\\xfa\\x12\\x02\\xa1\\x05\\x02\\xfa\\x13\\x02\\xa2\\x0e\\x02\\xfa\\x14\\x02\\xa2\\x91\\x02\\xfa\\x15\\x00\\x9e\\xbb\\x02\\xfa\\x16\\x00\\x4d\\x56\\x02\\xfa\\x17\\x00\\x9e\\xf9\\x02\\xfa\\x18\\x00\\x9e\\xfe\\x02\\xfa\\x19\\x00\\x9f\\x05\\x02\\xfa\\x1a\\x00\\x9f\\x0f\\x02\\xfa\\x1b\\x00\\x9f\\x16\\x02\\xfa\\x1c\\x00\\x9f\\x3b\\x02\\xfa\\x1d\\x02\\xa6\\x00"\n let mut low = usize.ZERO\n let mut high = usize.add(0, 1035)\n while low < high {\n let middle = low + (high - low) / 2\n let at = middle * 6\n let key = read3(singletons, at)\n if scalar < key {\n high = middle\n } else {\n if key < scalar {\n low = middle + usize.ONE\n } else {\n return Decomposition { first: read3(singletons, at + 3), second: 0 }\n }\n }\n }\n let found = pairIndexOf(scalar)\n if found == 1046 { return Decomposition { first: 0, second: 0 } }\n let record = pairRecord(found)\n return Decomposition { first: record.first, second: record.second }\n}\n\n/// Returns the position of a scalar in the canonical pair table, or the table length when absent.\nfn pairIndexOf(scalar: u32) -> usize {\n let mut low = usize.ZERO\n let mut high = usize.add(0, 1046)\n while low < high {\n let middle = low + (high - low) / 2\n let composed = pairRecord(middle).composed\n if scalar < composed {\n high = middle\n } else {\n if composed < scalar { low = middle + usize.ONE } else { return middle }\n }\n }\n return 1046\n}\n\n/// Returns one record of the canonical pair table. The table is held here alone so both the\n/// decomposition search and the composition search read the same bytes.\nfn pairRecord(index: usize) -> PairRecord {\n let data = b"\\x00\\x00\\xc0\\x00\\x00\\x41\\x00\\x03\\x00\\x00\\x00\\xc1\\x00\\x00\\x41\\x00\\x03\\x01\\x00\\x00\\xc2\\x00\\x00\\x41\\x00\\x03\\x02\\x00\\x00\\xc3\\x00\\x00\\x41\\x00\\x03\\x03\\x00\\x00\\xc4\\x00\\x00\\x41\\x00\\x03\\x08\\x00\\x00\\xc5\\x00\\x00\\x41\\x00\\x03\\x0a\\x00\\x00\\xc7\\x00\\x00\\x43\\x00\\x03\\x27\\x00\\x00\\xc8\\x00\\x00\\x45\\x00\\x03\\x00\\x00\\x00\\xc9\\x00\\x00\\x45\\x00\\x03\\x01\\x00\\x00\\xca\\x00\\x00\\x45\\x00\\x03\\x02\\x00\\x00\\xcb\\x00\\x00\\x45\\x00\\x03\\x08\\x00\\x00\\xcc\\x00\\x00\\x49\\x00\\x03\\x00\\x00\\x00\\xcd\\x00\\x00\\x49\\x00\\x03\\x01\\x00\\x00\\xce\\x00\\x00\\x49\\x00\\x03\\x02\\x00\\x00\\xcf\\x00\\x00\\x49\\x00\\x03\\x08\\x00\\x00\\xd1\\x00\\x00\\x4e\\x00\\x03\\x03\\x00\\x00\\xd2\\x00\\x00\\x4f\\x00\\x03\\x00\\x00\\x00\\xd3\\x00\\x00\\x4f\\x00\\x03\\x01\\x00\\x00\\xd4\\x00\\x00\\x4f\\x00\\x03\\x02\\x00\\x00\\xd5\\x00\\x00\\x4f\\x00\\x03\\x03\\x00\\x00\\xd6\\x00\\x00\\x4f\\x00\\x03\\x08\\x00\\x00\\xd9\\x00\\x00\\x55\\x00\\x03\\x00\\x00\\x00\\xda\\x00\\x00\\x55\\x00\\x03\\x01\\x00\\x00\\xdb\\x00\\x00\\x55\\x00\\x03\\x02\\x00\\x00\\xdc\\x00\\x00\\x55\\x00\\x03\\x08\\x00\\x00\\xdd\\x00\\x00\\x59\\x00\\x03\\x01\\x00\\x00\\xe0\\x00\\x00\\x61\\x00\\x03\\x00\\x00\\x00\\xe1\\x00\\x00\\x61\\x00\\x03\\x01\\x00\\x00\\xe2\\x00\\x00\\x61\\x00\\x03\\x02\\x00\\x00\\xe3\\x00\\x00\\x61\\x00\\x03\\x03\\x00\\x00\\xe4\\x00\\x00\\x61\\x00\\x03\\x08\\x00\\x00\\xe5\\x00\\x00\\x61\\x00\\x03\\x0a\\x00\\x00\\xe7\\x00\\x00\\x63\\x00\\x03\\x27\\x00\\x00\\xe8\\x00\\x00\\x65\\x00\\x03\\x00\\x00\\x00\\xe9\\x00\\x00\\x65\\x00\\x03\\x01\\x00\\x00\\xea\\x00\\x00\\x65\\x00\\x03\\x02\\x00\\x00\\xeb\\x00\\x00\\x65\\x00\\x03\\x08\\x00\\x00\\xec\\x00\\x00\\x69\\x00\\x03\\x00\\x00\\x00\\xed\\x00\\x00\\x69\\x00\\x03\\x01\\x00\\x00\\xee\\x00\\x00\\x69\\x00\\x03\\x02\\x00\\x00\\xef\\x00\\x00\\x69\\x00\\x03\\x08\\x00\\x00\\xf1\\x00\\x00\\x6e\\x00\\x03\\x03\\x00\\x00\\xf2\\x00\\x00\\x6f\\x00\\x03\\x00\\x00\\x00\\xf3\\x00\\x00\\x6f\\x00\\x03\\x01\\x00\\x00\\xf4\\x00\\x00\\x6f\\x00\\x03\\x02\\x00\\x00\\xf5\\x00\\x00\\x6f\\x00\\x03\\x03\\x00\\x00\\xf6\\x00\\x00\\x6f\\x00\\x03\\x08\\x00\\x00\\xf9\\x00\\x00\\x75\\x00\\x03\\x00\\x00\\x00\\xfa\\x00\\x00\\x75\\x00\\x03\\x01\\x00\\x00\\xfb\\x00\\x00\\x75\\x00\\x03\\x02\\x00\\x00\\xfc\\x00\\x00\\x75\\x00\\x03\\x08\\x00\\x00\\xfd\\x00\\x00\\x79\\x00\\x03\\x01\\x00\\x00\\xff\\x00\\x00\\x79\\x00\\x03\\x08\\x00\\x01\\x00\\x00\\x00\\x41\\x00\\x03\\x04\\x00\\x01\\x01\\x00\\x00\\x61\\x00\\x03\\x04\\x00\\x01\\x02\\x00\\x00\\x41\\x00\\x03\\x06\\x00\\x01\\x03\\x00\\x00\\x61\\x00\\x03\\x06\\x00\\x01\\x04\\x00\\x00\\x41\\x00\\x03\\x28\\x00\\x01\\x05\\x00\\x00\\x61\\x00\\x03\\x28\\x00\\x01\\x06\\x00\\x00\\x43\\x00\\x03\\x01\\x00\\x01\\x07\\x00\\x00\\x63\\x00\\x03\\x01\\x00\\x01\\x08\\x00\\x00\\x43\\x00\\x03\\x02\\x00\\x01\\x09\\x00\\x00\\x63\\x00\\x03\\x02\\x00\\x01\\x0a\\x00\\x00\\x43\\x00\\x03\\x07\\x00\\x01\\x0b\\x00\\x00\\x63\\x00\\x03\\x07\\x00\\x01\\x0c\\x00\\x00\\x43\\x00\\x03\\x0c\\x00\\x01\\x0d\\x00\\x00\\x63\\x00\\x03\\x0c\\x00\\x01\\x0e\\x00\\x00\\x44\\x00\\x03\\x0c\\x00\\x01\\x0f\\x00\\x00\\x64\\x00\\x03\\x0c\\x00\\x01\\x12\\x00\\x00\\x45\\x00\\x03\\x04\\x00\\x01\\x13\\x00\\x00\\x65\\x00\\x03\\x04\\x00\\x01\\x14\\x00\\x00\\x45\\x00\\x03\\x06\\x00\\x01\\x15\\x00\\x00\\x65\\x00\\x03\\x06\\x00\\x01\\x16\\x00\\x00\\x45\\x00\\x03\\x07\\x00\\x01\\x17\\x00\\x00\\x65\\x00\\x03\\x07\\x00\\x01\\x18\\x00\\x00\\x45\\x00\\x03\\x28\\x00\\x01\\x19\\x00\\x00\\x65\\x00\\x03\\x28\\x00\\x01\\x1a\\x00\\x00\\x45\\x00\\x03\\x0c\\x00\\x01\\x1b\\x00\\x00\\x65\\x00\\x03\\x0c\\x00\\x01\\x1c\\x00\\x00\\x47\\x00\\x03\\x02\\x00\\x01\\x1d\\x00\\x00\\x67\\x00\\x03\\x02\\x00\\x01\\x1e\\x00\\x00\\x47\\x00\\x03\\x06\\x00\\x01\\x1f\\x00\\x00\\x67\\x00\\x03\\x06\\x00\\x01\\x20\\x00\\x00\\x47\\x00\\x03\\x07\\x00\\x01\\x21\\x00\\x00\\x67\\x00\\x03\\x07\\x00\\x01\\x22\\x00\\x00\\x47\\x00\\x03\\x27\\x00\\x01\\x23\\x00\\x00\\x67\\x00\\x03\\x27\\x00\\x01\\x24\\x00\\x00\\x48\\x00\\x03\\x02\\x00\\x01\\x25\\x00\\x00\\x68\\x00\\x03\\x02\\x00\\x01\\x28\\x00\\x00\\x49\\x00\\x03\\x03\\x00\\x01\\x29\\x00\\x00\\x69\\x00\\x03\\x03\\x00\\x01\\x2a\\x00\\x00\\x49\\x00\\x03\\x04\\x00\\x01\\x2b\\x00\\x00\\x69\\x00\\x03\\x04\\x00\\x01\\x2c\\x00\\x00\\x49\\x00\\x03\\x06\\x00\\x01\\x2d\\x00\\x00\\x69\\x00\\x03\\x06\\x00\\x01\\x2e\\x00\\x00\\x49\\x00\\x03\\x28\\x00\\x01\\x2f\\x00\\x00\\x69\\x00\\x03\\x28\\x00\\x01\\x30\\x00\\x00\\x49\\x00\\x03\\x07\\x00\\x01\\x34\\x00\\x00\\x4a\\x00\\x03\\x02\\x00\\x01\\x35\\x00\\x00\\x6a\\x00\\x03\\x02\\x00\\x01\\x36\\x00\\x00\\x4b\\x00\\x03\\x27\\x00\\x01\\x37\\x00\\x00\\x6b\\x00\\x03\\x27\\x00\\x01\\x39\\x00\\x00\\x4c\\x00\\x03\\x01\\x00\\x01\\x3a\\x00\\x00\\x6c\\x00\\x03\\x01\\x00\\x01\\x3b\\x00\\x00\\x4c\\x00\\x03\\x27\\x00\\x01\\x3c\\x00\\x00\\x6c\\x00\\x03\\x27\\x00\\x01\\x3d\\x00\\x00\\x4c\\x00\\x03\\x0c\\x00\\x01\\x3e\\x00\\x00\\x6c\\x00\\x03\\x0c\\x00\\x01\\x43\\x00\\x00\\x4e\\x00\\x03\\x01\\x00\\x01\\x44\\x00\\x00\\x6e\\x00\\x03\\x01\\x00\\x01\\x45\\x00\\x00\\x4e\\x00\\x03\\x27\\x00\\x01\\x46\\x00\\x00\\x6e\\x00\\x03\\x27\\x00\\x01\\x47\\x00\\x00\\x4e\\x00\\x03\\x0c\\x00\\x01\\x48\\x00\\x00\\x6e\\x00\\x03\\x0c\\x00\\x01\\x4c\\x00\\x00\\x4f\\x00\\x03\\x04\\x00\\x01\\x4d\\x00\\x00\\x6f\\x00\\x03\\x04\\x00\\x01\\x4e\\x00\\x00\\x4f\\x00\\x03\\x06\\x00\\x01\\x4f\\x00\\x00\\x6f\\x00\\x03\\x06\\x00\\x01\\x50\\x00\\x00\\x4f\\x00\\x03\\x0b\\x00\\x01\\x51\\x00\\x00\\x6f\\x00\\x03\\x0b\\x00\\x01\\x54\\x00\\x00\\x52\\x00\\x03\\x01\\x00\\x01\\x55\\x00\\x00\\x72\\x00\\x03\\x01\\x00\\x01\\x56\\x00\\x00\\x52\\x00\\x03\\x27\\x00\\x01\\x57\\x00\\x00\\x72\\x00\\x03\\x27\\x00\\x01\\x58\\x00\\x00\\x52\\x00\\x03\\x0c\\x00\\x01\\x59\\x00\\x00\\x72\\x00\\x03\\x0c\\x00\\x01\\x5a\\x00\\x00\\x53\\x00\\x03\\x01\\x00\\x01\\x5b\\x00\\x00\\x73\\x00\\x03\\x01\\x00\\x01\\x5c\\x00\\x00\\x53\\x00\\x03\\x02\\x00\\x01\\x5d\\x00\\x00\\x73\\x00\\x03\\x02\\x00\\x01\\x5e\\x00\\x00\\x53\\x00\\x03\\x27\\x00\\x01\\x5f\\x00\\x00\\x73\\x00\\x03\\x27\\x00\\x01\\x60\\x00\\x00\\x53\\x00\\x03\\x0c\\x00\\x01\\x61\\x00\\x00\\x73\\x00\\x03\\x0c\\x00\\x01\\x62\\x00\\x00\\x54\\x00\\x03\\x27\\x00\\x01\\x63\\x00\\x00\\x74\\x00\\x03\\x27\\x00\\x01\\x64\\x00\\x00\\x54\\x00\\x03\\x0c\\x00\\x01\\x65\\x00\\x00\\x74\\x00\\x03\\x0c\\x00\\x01\\x68\\x00\\x00\\x55\\x00\\x03\\x03\\x00\\x01\\x69\\x00\\x00\\x75\\x00\\x03\\x03\\x00\\x01\\x6a\\x00\\x00\\x55\\x00\\x03\\x04\\x00\\x01\\x6b\\x00\\x00\\x75\\x00\\x03\\x04\\x00\\x01\\x6c\\x00\\x00\\x55\\x00\\x03\\x06\\x00\\x01\\x6d\\x00\\x00\\x75\\x00\\x03\\x06\\x00\\x01\\x6e\\x00\\x00\\x55\\x00\\x03\\x0a\\x00\\x01\\x6f\\x00\\x00\\x75\\x00\\x03\\x0a\\x00\\x01\\x70\\x00\\x00\\x55\\x00\\x03\\x0b\\x00\\x01\\x71\\x00\\x00\\x75\\x00\\x03\\x0b\\x00\\x01\\x72\\x00\\x00\\x55\\x00\\x03\\x28\\x00\\x01\\x73\\x00\\x00\\x75\\x00\\x03\\x28\\x00\\x01\\x74\\x00\\x00\\x57\\x00\\x03\\x02\\x00\\x01\\x75\\x00\\x00\\x77\\x00\\x03\\x02\\x00\\x01\\x76\\x00\\x00\\x59\\x00\\x03\\x02\\x00\\x01\\x77\\x00\\x00\\x79\\x00\\x03\\x02\\x00\\x01\\x78\\x00\\x00\\x59\\x00\\x03\\x08\\x00\\x01\\x79\\x00\\x00\\x5a\\x00\\x03\\x01\\x00\\x01\\x7a\\x00\\x00\\x7a\\x00\\x03\\x01\\x00\\x01\\x7b\\x00\\x00\\x5a\\x00\\x03\\x07\\x00\\x01\\x7c\\x00\\x00\\x7a\\x00\\x03\\x07\\x00\\x01\\x7d\\x00\\x00\\x5a\\x00\\x03\\x0c\\x00\\x01\\x7e\\x00\\x00\\x7a\\x00\\x03\\x0c\\x00\\x01\\xa0\\x00\\x00\\x4f\\x00\\x03\\x1b\\x00\\x01\\xa1\\x00\\x00\\x6f\\x00\\x03\\x1b\\x00\\x01\\xaf\\x00\\x00\\x55\\x00\\x03\\x1b\\x00\\x01\\xb0\\x00\\x00\\x75\\x00\\x03\\x1b\\x00\\x01\\xcd\\x00\\x00\\x41\\x00\\x03\\x0c\\x00\\x01\\xce\\x00\\x00\\x61\\x00\\x03\\x0c\\x00\\x01\\xcf\\x00\\x00\\x49\\x00\\x03\\x0c\\x00\\x01\\xd0\\x00\\x00\\x69\\x00\\x03\\x0c\\x00\\x01\\xd1\\x00\\x00\\x4f\\x00\\x03\\x0c\\x00\\x01\\xd2\\x00\\x00\\x6f\\x00\\x03\\x0c\\x00\\x01\\xd3\\x00\\x00\\x55\\x00\\x03\\x0c\\x00\\x01\\xd4\\x00\\x00\\x75\\x00\\x03\\x0c\\x00\\x01\\xd5\\x00\\x00\\xdc\\x00\\x03\\x04\\x00\\x01\\xd6\\x00\\x00\\xfc\\x00\\x03\\x04\\x00\\x01\\xd7\\x00\\x00\\xdc\\x00\\x03\\x01\\x00\\x01\\xd8\\x00\\x00\\xfc\\x00\\x03\\x01\\x00\\x01\\xd9\\x00\\x00\\xdc\\x00\\x03\\x0c\\x00\\x01\\xda\\x00\\x00\\xfc\\x00\\x03\\x0c\\x00\\x01\\xdb\\x00\\x00\\xdc\\x00\\x03\\x00\\x00\\x01\\xdc\\x00\\x00\\xfc\\x00\\x03\\x00\\x00\\x01\\xde\\x00\\x00\\xc4\\x00\\x03\\x04\\x00\\x01\\xdf\\x00\\x00\\xe4\\x00\\x03\\x04\\x00\\x01\\xe0\\x00\\x02\\x26\\x00\\x03\\x04\\x00\\x01\\xe1\\x00\\x02\\x27\\x00\\x03\\x04\\x00\\x01\\xe2\\x00\\x00\\xc6\\x00\\x03\\x04\\x00\\x01\\xe3\\x00\\x00\\xe6\\x00\\x03\\x04\\x00\\x01\\xe6\\x00\\x00\\x47\\x00\\x03\\x0c\\x00\\x01\\xe7\\x00\\x00\\x67\\x00\\x03\\x0c\\x00\\x01\\xe8\\x00\\x00\\x4b\\x00\\x03\\x0c\\x00\\x01\\xe9\\x00\\x00\\x6b\\x00\\x03\\x0c\\x00\\x01\\xea\\x00\\x00\\x4f\\x00\\x03\\x28\\x00\\x01\\xeb\\x00\\x00\\x6f\\x00\\x03\\x28\\x00\\x01\\xec\\x00\\x01\\xea\\x00\\x03\\x04\\x00\\x01\\xed\\x00\\x01\\xeb\\x00\\x03\\x04\\x00\\x01\\xee\\x00\\x01\\xb7\\x00\\x03\\x0c\\x00\\x01\\xef\\x00\\x02\\x92\\x00\\x03\\x0c\\x00\\x01\\xf0\\x00\\x00\\x6a\\x00\\x03\\x0c\\x00\\x01\\xf4\\x00\\x00\\x47\\x00\\x03\\x01\\x00\\x01\\xf5\\x00\\x00\\x67\\x00\\x03\\x01\\x00\\x01\\xf8\\x00\\x00\\x4e\\x00\\x03\\x00\\x00\\x01\\xf9\\x00\\x00\\x6e\\x00\\x03\\x00\\x00\\x01\\xfa\\x00\\x00\\xc5\\x00\\x03\\x01\\x00\\x01\\xfb\\x00\\x00\\xe5\\x00\\x03\\x01\\x00\\x01\\xfc\\x00\\x00\\xc6\\x00\\x03\\x01\\x00\\x01\\xfd\\x00\\x00\\xe6\\x00\\x03\\x01\\x00\\x01\\xfe\\x00\\x00\\xd8\\x00\\x03\\x01\\x00\\x01\\xff\\x00\\x00\\xf8\\x00\\x03\\x01\\x00\\x02\\x00\\x00\\x00\\x41\\x00\\x03\\x0f\\x00\\x02\\x01\\x00\\x00\\x61\\x00\\x03\\x0f\\x00\\x02\\x02\\x00\\x00\\x41\\x00\\x03\\x11\\x00\\x02\\x03\\x00\\x00\\x61\\x00\\x03\\x11\\x00\\x02\\x04\\x00\\x00\\x45\\x00\\x03\\x0f\\x00\\x02\\x05\\x00\\x00\\x65\\x00\\x03\\x0f\\x00\\x02\\x06\\x00\\x00\\x45\\x00\\x03\\x11\\x00\\x02\\x07\\x00\\x00\\x65\\x00\\x03\\x11\\x00\\x02\\x08\\x00\\x00\\x49\\x00\\x03\\x0f\\x00\\x02\\x09\\x00\\x00\\x69\\x00\\x03\\x0f\\x00\\x02\\x0a\\x00\\x00\\x49\\x00\\x03\\x11\\x00\\x02\\x0b\\x00\\x00\\x69\\x00\\x03\\x11\\x00\\x02\\x0c\\x00\\x00\\x4f\\x00\\x03\\x0f\\x00\\x02\\x0d\\x00\\x00\\x6f\\x00\\x03\\x0f\\x00\\x02\\x0e\\x00\\x00\\x4f\\x00\\x03\\x11\\x00\\x02\\x0f\\x00\\x00\\x6f\\x00\\x03\\x11\\x00\\x02\\x10\\x00\\x00\\x52\\x00\\x03\\x0f\\x00\\x02\\x11\\x00\\x00\\x72\\x00\\x03\\x0f\\x00\\x02\\x12\\x00\\x00\\x52\\x00\\x03\\x11\\x00\\x02\\x13\\x00\\x00\\x72\\x00\\x03\\x11\\x00\\x02\\x14\\x00\\x00\\x55\\x00\\x03\\x0f\\x00\\x02\\x15\\x00\\x00\\x75\\x00\\x03\\x0f\\x00\\x02\\x16\\x00\\x00\\x55\\x00\\x03\\x11\\x00\\x02\\x17\\x00\\x00\\x75\\x00\\x03\\x11\\x00\\x02\\x18\\x00\\x00\\x53\\x00\\x03\\x26\\x00\\x02\\x19\\x00\\x00\\x73\\x00\\x03\\x26\\x00\\x02\\x1a\\x00\\x00\\x54\\x00\\x03\\x26\\x00\\x02\\x1b\\x00\\x00\\x74\\x00\\x03\\x26\\x00\\x02\\x1e\\x00\\x00\\x48\\x00\\x03\\x0c\\x00\\x02\\x1f\\x00\\x00\\x68\\x00\\x03\\x0c\\x00\\x02\\x26\\x00\\x00\\x41\\x00\\x03\\x07\\x00\\x02\\x27\\x00\\x00\\x61\\x00\\x03\\x07\\x00\\x02\\x28\\x00\\x00\\x45\\x00\\x03\\x27\\x00\\x02\\x29\\x00\\x00\\x65\\x00\\x03\\x27\\x00\\x02\\x2a\\x00\\x00\\xd6\\x00\\x03\\x04\\x00\\x02\\x2b\\x00\\x00\\xf6\\x00\\x03\\x04\\x00\\x02\\x2c\\x00\\x00\\xd5\\x00\\x03\\x04\\x00\\x02\\x2d\\x00\\x00\\xf5\\x00\\x03\\x04\\x00\\x02\\x2e\\x00\\x00\\x4f\\x00\\x03\\x07\\x00\\x02\\x2f\\x00\\x00\\x6f\\x00\\x03\\x07\\x00\\x02\\x30\\x00\\x02\\x2e\\x00\\x03\\x04\\x00\\x02\\x31\\x00\\x02\\x2f\\x00\\x03\\x04\\x00\\x02\\x32\\x00\\x00\\x59\\x00\\x03\\x04\\x00\\x02\\x33\\x00\\x00\\x79\\x00\\x03\\x04\\x00\\x03\\x44\\x00\\x03\\x08\\x00\\x03\\x01\\x00\\x03\\x85\\x00\\x00\\xa8\\x00\\x03\\x01\\x00\\x03\\x86\\x00\\x03\\x91\\x00\\x03\\x01\\x00\\x03\\x88\\x00\\x03\\x95\\x00\\x03\\x01\\x00\\x03\\x89\\x00\\x03\\x97\\x00\\x03\\x01\\x00\\x03\\x8a\\x00\\x03\\x99\\x00\\x03\\x01\\x00\\x03\\x8c\\x00\\x03\\x9f\\x00\\x03\\x01\\x00\\x03\\x8e\\x00\\x03\\xa5\\x00\\x03\\x01\\x00\\x03\\x8f\\x00\\x03\\xa9\\x00\\x03\\x01\\x00\\x03\\x90\\x00\\x03\\xca\\x00\\x03\\x01\\x00\\x03\\xaa\\x00\\x03\\x99\\x00\\x03\\x08\\x00\\x03\\xab\\x00\\x03\\xa5\\x00\\x03\\x08\\x00\\x03\\xac\\x00\\x03\\xb1\\x00\\x03\\x01\\x00\\x03\\xad\\x00\\x03\\xb5\\x00\\x03\\x01\\x00\\x03\\xae\\x00\\x03\\xb7\\x00\\x03\\x01\\x00\\x03\\xaf\\x00\\x03\\xb9\\x00\\x03\\x01\\x00\\x03\\xb0\\x00\\x03\\xcb\\x00\\x03\\x01\\x00\\x03\\xca\\x00\\x03\\xb9\\x00\\x03\\x08\\x00\\x03\\xcb\\x00\\x03\\xc5\\x00\\x03\\x08\\x00\\x03\\xcc\\x00\\x03\\xbf\\x00\\x03\\x01\\x00\\x03\\xcd\\x00\\x03\\xc5\\x00\\x03\\x01\\x00\\x03\\xce\\x00\\x03\\xc9\\x00\\x03\\x01\\x00\\x03\\xd3\\x00\\x03\\xd2\\x00\\x03\\x01\\x00\\x03\\xd4\\x00\\x03\\xd2\\x00\\x03\\x08\\x00\\x04\\x00\\x00\\x04\\x15\\x00\\x03\\x00\\x00\\x04\\x01\\x00\\x04\\x15\\x00\\x03\\x08\\x00\\x04\\x03\\x00\\x04\\x13\\x00\\x03\\x01\\x00\\x04\\x07\\x00\\x04\\x06\\x00\\x03\\x08\\x00\\x04\\x0c\\x00\\x04\\x1a\\x00\\x03\\x01\\x00\\x04\\x0d\\x00\\x04\\x18\\x00\\x03\\x00\\x00\\x04\\x0e\\x00\\x04\\x23\\x00\\x03\\x06\\x00\\x04\\x19\\x00\\x04\\x18\\x00\\x03\\x06\\x00\\x04\\x39\\x00\\x04\\x38\\x00\\x03\\x06\\x00\\x04\\x50\\x00\\x04\\x35\\x00\\x03\\x00\\x00\\x04\\x51\\x00\\x04\\x35\\x00\\x03\\x08\\x00\\x04\\x53\\x00\\x04\\x33\\x00\\x03\\x01\\x00\\x04\\x57\\x00\\x04\\x56\\x00\\x03\\x08\\x00\\x04\\x5c\\x00\\x04\\x3a\\x00\\x03\\x01\\x00\\x04\\x5d\\x00\\x04\\x38\\x00\\x03\\x00\\x00\\x04\\x5e\\x00\\x04\\x43\\x00\\x03\\x06\\x00\\x04\\x76\\x00\\x04\\x74\\x00\\x03\\x0f\\x00\\x04\\x77\\x00\\x04\\x75\\x00\\x03\\x0f\\x00\\x04\\xc1\\x00\\x04\\x16\\x00\\x03\\x06\\x00\\x04\\xc2\\x00\\x04\\x36\\x00\\x03\\x06\\x00\\x04\\xd0\\x00\\x04\\x10\\x00\\x03\\x06\\x00\\x04\\xd1\\x00\\x04\\x30\\x00\\x03\\x06\\x00\\x04\\xd2\\x00\\x04\\x10\\x00\\x03\\x08\\x00\\x04\\xd3\\x00\\x04\\x30\\x00\\x03\\x08\\x00\\x04\\xd6\\x00\\x04\\x15\\x00\\x03\\x06\\x00\\x04\\xd7\\x00\\x04\\x35\\x00\\x03\\x06\\x00\\x04\\xda\\x00\\x04\\xd8\\x00\\x03\\x08\\x00\\x04\\xdb\\x00\\x04\\xd9\\x00\\x03\\x08\\x00\\x04\\xdc\\x00\\x04\\x16\\x00\\x03\\x08\\x00\\x04\\xdd\\x00\\x04\\x36\\x00\\x03\\x08\\x00\\x04\\xde\\x00\\x04\\x17\\x00\\x03\\x08\\x00\\x04\\xdf\\x00\\x04\\x37\\x00\\x03\\x08\\x00\\x04\\xe2\\x00\\x04\\x18\\x00\\x03\\x04\\x00\\x04\\xe3\\x00\\x04\\x38\\x00\\x03\\x04\\x00\\x04\\xe4\\x00\\x04\\x18\\x00\\x03\\x08\\x00\\x04\\xe5\\x00\\x04\\x38\\x00\\x03\\x08\\x00\\x04\\xe6\\x00\\x04\\x1e\\x00\\x03\\x08\\x00\\x04\\xe7\\x00\\x04\\x3e\\x00\\x03\\x08\\x00\\x04\\xea\\x00\\x04\\xe8\\x00\\x03\\x08\\x00\\x04\\xeb\\x00\\x04\\xe9\\x00\\x03\\x08\\x00\\x04\\xec\\x00\\x04\\x2d\\x00\\x03\\x08\\x00\\x04\\xed\\x00\\x04\\x4d\\x00\\x03\\x08\\x00\\x04\\xee\\x00\\x04\\x23\\x00\\x03\\x04\\x00\\x04\\xef\\x00\\x04\\x43\\x00\\x03\\x04\\x00\\x04\\xf0\\x00\\x04\\x23\\x00\\x03\\x08\\x00\\x04\\xf1\\x00\\x04\\x43\\x00\\x03\\x08\\x00\\x04\\xf2\\x00\\x04\\x23\\x00\\x03\\x0b\\x00\\x04\\xf3\\x00\\x04\\x43\\x00\\x03\\x0b\\x00\\x04\\xf4\\x00\\x04\\x27\\x00\\x03\\x08\\x00\\x04\\xf5\\x00\\x04\\x47\\x00\\x03\\x08\\x00\\x04\\xf8\\x00\\x04\\x2b\\x00\\x03\\x08\\x00\\x04\\xf9\\x00\\x04\\x4b\\x00\\x03\\x08\\x00\\x06\\x22\\x00\\x06\\x27\\x00\\x06\\x53\\x00\\x06\\x23\\x00\\x06\\x27\\x00\\x06\\x54\\x00\\x06\\x24\\x00\\x06\\x48\\x00\\x06\\x54\\x00\\x06\\x25\\x00\\x06\\x27\\x00\\x06\\x55\\x00\\x06\\x26\\x00\\x06\\x4a\\x00\\x06\\x54\\x00\\x06\\xc0\\x00\\x06\\xd5\\x00\\x06\\x54\\x00\\x06\\xc2\\x00\\x06\\xc1\\x00\\x06\\x54\\x00\\x06\\xd3\\x00\\x06\\xd2\\x00\\x06\\x54\\x00\\x09\\x29\\x00\\x09\\x28\\x00\\x09\\x3c\\x00\\x09\\x31\\x00\\x09\\x30\\x00\\x09\\x3c\\x00\\x09\\x34\\x00\\x09\\x33\\x00\\x09\\x3c\\x00\\x09\\x58\\x00\\x09\\x15\\x00\\x09\\x3c\\x00\\x09\\x59\\x00\\x09\\x16\\x00\\x09\\x3c\\x00\\x09\\x5a\\x00\\x09\\x17\\x00\\x09\\x3c\\x00\\x09\\x5b\\x00\\x09\\x1c\\x00\\x09\\x3c\\x00\\x09\\x5c\\x00\\x09\\x21\\x00\\x09\\x3c\\x00\\x09\\x5d\\x00\\x09\\x22\\x00\\x09\\x3c\\x00\\x09\\x5e\\x00\\x09\\x2b\\x00\\x09\\x3c\\x00\\x09\\x5f\\x00\\x09\\x2f\\x00\\x09\\x3c\\x00\\x09\\xcb\\x00\\x09\\xc7\\x00\\x09\\xbe\\x00\\x09\\xcc\\x00\\x09\\xc7\\x00\\x09\\xd7\\x00\\x09\\xdc\\x00\\x09\\xa1\\x00\\x09\\xbc\\x00\\x09\\xdd\\x00\\x09\\xa2\\x00\\x09\\xbc\\x00\\x09\\xdf\\x00\\x09\\xaf\\x00\\x09\\xbc\\x00\\x0a\\x33\\x00\\x0a\\x32\\x00\\x0a\\x3c\\x00\\x0a\\x36\\x00\\x0a\\x38\\x00\\x0a\\x3c\\x00\\x0a\\x59\\x00\\x0a\\x16\\x00\\x0a\\x3c\\x00\\x0a\\x5a\\x00\\x0a\\x17\\x00\\x0a\\x3c\\x00\\x0a\\x5b\\x00\\x0a\\x1c\\x00\\x0a\\x3c\\x00\\x0a\\x5e\\x00\\x0a\\x2b\\x00\\x0a\\x3c\\x00\\x0b\\x48\\x00\\x0b\\x47\\x00\\x0b\\x56\\x00\\x0b\\x4b\\x00\\x0b\\x47\\x00\\x0b\\x3e\\x00\\x0b\\x4c\\x00\\x0b\\x47\\x00\\x0b\\x57\\x00\\x0b\\x5c\\x00\\x0b\\x21\\x00\\x0b\\x3c\\x00\\x0b\\x5d\\x00\\x0b\\x22\\x00\\x0b\\x3c\\x00\\x0b\\x94\\x00\\x0b\\x92\\x00\\x0b\\xd7\\x00\\x0b\\xca\\x00\\x0b\\xc6\\x00\\x0b\\xbe\\x00\\x0b\\xcb\\x00\\x0b\\xc7\\x00\\x0b\\xbe\\x00\\x0b\\xcc\\x00\\x0b\\xc6\\x00\\x0b\\xd7\\x00\\x0c\\x48\\x00\\x0c\\x46\\x00\\x0c\\x56\\x00\\x0c\\xc0\\x00\\x0c\\xbf\\x00\\x0c\\xd5\\x00\\x0c\\xc7\\x00\\x0c\\xc6\\x00\\x0c\\xd5\\x00\\x0c\\xc8\\x00\\x0c\\xc6\\x00\\x0c\\xd6\\x00\\x0c\\xca\\x00\\x0c\\xc6\\x00\\x0c\\xc2\\x00\\x0c\\xcb\\x00\\x0c\\xca\\x00\\x0c\\xd5\\x00\\x0d\\x4a\\x00\\x0d\\x46\\x00\\x0d\\x3e\\x00\\x0d\\x4b\\x00\\x0d\\x47\\x00\\x0d\\x3e\\x00\\x0d\\x4c\\x00\\x0d\\x46\\x00\\x0d\\x57\\x00\\x0d\\xda\\x00\\x0d\\xd9\\x00\\x0d\\xca\\x00\\x0d\\xdc\\x00\\x0d\\xd9\\x00\\x0d\\xcf\\x00\\x0d\\xdd\\x00\\x0d\\xdc\\x00\\x0d\\xca\\x00\\x0d\\xde\\x00\\x0d\\xd9\\x00\\x0d\\xdf\\x00\\x0f\\x43\\x00\\x0f\\x42\\x00\\x0f\\xb7\\x00\\x0f\\x4d\\x00\\x0f\\x4c\\x00\\x0f\\xb7\\x00\\x0f\\x52\\x00\\x0f\\x51\\x00\\x0f\\xb7\\x00\\x0f\\x57\\x00\\x0f\\x56\\x00\\x0f\\xb7\\x00\\x0f\\x5c\\x00\\x0f\\x5b\\x00\\x0f\\xb7\\x00\\x0f\\x69\\x00\\x0f\\x40\\x00\\x0f\\xb5\\x00\\x0f\\x73\\x00\\x0f\\x71\\x00\\x0f\\x72\\x00\\x0f\\x75\\x00\\x0f\\x71\\x00\\x0f\\x74\\x00\\x0f\\x76\\x00\\x0f\\xb2\\x00\\x0f\\x80\\x00\\x0f\\x78\\x00\\x0f\\xb3\\x00\\x0f\\x80\\x00\\x0f\\x81\\x00\\x0f\\x71\\x00\\x0f\\x80\\x00\\x0f\\x93\\x00\\x0f\\x92\\x00\\x0f\\xb7\\x00\\x0f\\x9d\\x00\\x0f\\x9c\\x00\\x0f\\xb7\\x00\\x0f\\xa2\\x00\\x0f\\xa1\\x00\\x0f\\xb7\\x00\\x0f\\xa7\\x00\\x0f\\xa6\\x00\\x0f\\xb7\\x00\\x0f\\xac\\x00\\x0f\\xab\\x00\\x0f\\xb7\\x00\\x0f\\xb9\\x00\\x0f\\x90\\x00\\x0f\\xb5\\x00\\x10\\x26\\x00\\x10\\x25\\x00\\x10\\x2e\\x00\\x1b\\x06\\x00\\x1b\\x05\\x00\\x1b\\x35\\x00\\x1b\\x08\\x00\\x1b\\x07\\x00\\x1b\\x35\\x00\\x1b\\x0a\\x00\\x1b\\x09\\x00\\x1b\\x35\\x00\\x1b\\x0c\\x00\\x1b\\x0b\\x00\\x1b\\x35\\x00\\x1b\\x0e\\x00\\x1b\\x0d\\x00\\x1b\\x35\\x00\\x1b\\x12\\x00\\x1b\\x11\\x00\\x1b\\x35\\x00\\x1b\\x3b\\x00\\x1b\\x3a\\x00\\x1b\\x35\\x00\\x1b\\x3d\\x00\\x1b\\x3c\\x00\\x1b\\x35\\x00\\x1b\\x40\\x00\\x1b\\x3e\\x00\\x1b\\x35\\x00\\x1b\\x41\\x00\\x1b\\x3f\\x00\\x1b\\x35\\x00\\x1b\\x43\\x00\\x1b\\x42\\x00\\x1b\\x35\\x00\\x1e\\x00\\x00\\x00\\x41\\x00\\x03\\x25\\x00\\x1e\\x01\\x00\\x00\\x61\\x00\\x03\\x25\\x00\\x1e\\x02\\x00\\x00\\x42\\x00\\x03\\x07\\x00\\x1e\\x03\\x00\\x00\\x62\\x00\\x03\\x07\\x00\\x1e\\x04\\x00\\x00\\x42\\x00\\x03\\x23\\x00\\x1e\\x05\\x00\\x00\\x62\\x00\\x03\\x23\\x00\\x1e\\x06\\x00\\x00\\x42\\x00\\x03\\x31\\x00\\x1e\\x07\\x00\\x00\\x62\\x00\\x03\\x31\\x00\\x1e\\x08\\x00\\x00\\xc7\\x00\\x03\\x01\\x00\\x1e\\x09\\x00\\x00\\xe7\\x00\\x03\\x01\\x00\\x1e\\x0a\\x00\\x00\\x44\\x00\\x03\\x07\\x00\\x1e\\x0b\\x00\\x00\\x64\\x00\\x03\\x07\\x00\\x1e\\x0c\\x00\\x00\\x44\\x00\\x03\\x23\\x00\\x1e\\x0d\\x00\\x00\\x64\\x00\\x03\\x23\\x00\\x1e\\x0e\\x00\\x00\\x44\\x00\\x03\\x31\\x00\\x1e\\x0f\\x00\\x00\\x64\\x00\\x03\\x31\\x00\\x1e\\x10\\x00\\x00\\x44\\x00\\x03\\x27\\x00\\x1e\\x11\\x00\\x00\\x64\\x00\\x03\\x27\\x00\\x1e\\x12\\x00\\x00\\x44\\x00\\x03\\x2d\\x00\\x1e\\x13\\x00\\x00\\x64\\x00\\x03\\x2d\\x00\\x1e\\x14\\x00\\x01\\x12\\x00\\x03\\x00\\x00\\x1e\\x15\\x00\\x01\\x13\\x00\\x03\\x00\\x00\\x1e\\x16\\x00\\x01\\x12\\x00\\x03\\x01\\x00\\x1e\\x17\\x00\\x01\\x13\\x00\\x03\\x01\\x00\\x1e\\x18\\x00\\x00\\x45\\x00\\x03\\x2d\\x00\\x1e\\x19\\x00\\x00\\x65\\x00\\x03\\x2d\\x00\\x1e\\x1a\\x00\\x00\\x45\\x00\\x03\\x30\\x00\\x1e\\x1b\\x00\\x00\\x65\\x00\\x03\\x30\\x00\\x1e\\x1c\\x00\\x02\\x28\\x00\\x03\\x06\\x00\\x1e\\x1d\\x00\\x02\\x29\\x00\\x03\\x06\\x00\\x1e\\x1e\\x00\\x00\\x46\\x00\\x03\\x07\\x00\\x1e\\x1f\\x00\\x00\\x66\\x00\\x03\\x07\\x00\\x1e\\x20\\x00\\x00\\x47\\x00\\x03\\x04\\x00\\x1e\\x21\\x00\\x00\\x67\\x00\\x03\\x04\\x00\\x1e\\x22\\x00\\x00\\x48\\x00\\x03\\x07\\x00\\x1e\\x23\\x00\\x00\\x68\\x00\\x03\\x07\\x00\\x1e\\x24\\x00\\x00\\x48\\x00\\x03\\x23\\x00\\x1e\\x25\\x00\\x00\\x68\\x00\\x03\\x23\\x00\\x1e\\x26\\x00\\x00\\x48\\x00\\x03\\x08\\x00\\x1e\\x27\\x00\\x00\\x68\\x00\\x03\\x08\\x00\\x1e\\x28\\x00\\x00\\x48\\x00\\x03\\x27\\x00\\x1e\\x29\\x00\\x00\\x68\\x00\\x03\\x27\\x00\\x1e\\x2a\\x00\\x00\\x48\\x00\\x03\\x2e\\x00\\x1e\\x2b\\x00\\x00\\x68\\x00\\x03\\x2e\\x00\\x1e\\x2c\\x00\\x00\\x49\\x00\\x03\\x30\\x00\\x1e\\x2d\\x00\\x00\\x69\\x00\\x03\\x30\\x00\\x1e\\x2e\\x00\\x00\\xcf\\x00\\x03\\x01\\x00\\x1e\\x2f\\x00\\x00\\xef\\x00\\x03\\x01\\x00\\x1e\\x30\\x00\\x00\\x4b\\x00\\x03\\x01\\x00\\x1e\\x31\\x00\\x00\\x6b\\x00\\x03\\x01\\x00\\x1e\\x32\\x00\\x00\\x4b\\x00\\x03\\x23\\x00\\x1e\\x33\\x00\\x00\\x6b\\x00\\x03\\x23\\x00\\x1e\\x34\\x00\\x00\\x4b\\x00\\x03\\x31\\x00\\x1e\\x35\\x00\\x00\\x6b\\x00\\x03\\x31\\x00\\x1e\\x36\\x00\\x00\\x4c\\x00\\x03\\x23\\x00\\x1e\\x37\\x00\\x00\\x6c\\x00\\x03\\x23\\x00\\x1e\\x38\\x00\\x1e\\x36\\x00\\x03\\x04\\x00\\x1e\\x39\\x00\\x1e\\x37\\x00\\x03\\x04\\x00\\x1e\\x3a\\x00\\x00\\x4c\\x00\\x03\\x31\\x00\\x1e\\x3b\\x00\\x00\\x6c\\x00\\x03\\x31\\x00\\x1e\\x3c\\x00\\x00\\x4c\\x00\\x03\\x2d\\x00\\x1e\\x3d\\x00\\x00\\x6c\\x00\\x03\\x2d\\x00\\x1e\\x3e\\x00\\x00\\x4d\\x00\\x03\\x01\\x00\\x1e\\x3f\\x00\\x00\\x6d\\x00\\x03\\x01\\x00\\x1e\\x40\\x00\\x00\\x4d\\x00\\x03\\x07\\x00\\x1e\\x41\\x00\\x00\\x6d\\x00\\x03\\x07\\x00\\x1e\\x42\\x00\\x00\\x4d\\x00\\x03\\x23\\x00\\x1e\\x43\\x00\\x00\\x6d\\x00\\x03\\x23\\x00\\x1e\\x44\\x00\\x00\\x4e\\x00\\x03\\x07\\x00\\x1e\\x45\\x00\\x00\\x6e\\x00\\x03\\x07\\x00\\x1e\\x46\\x00\\x00\\x4e\\x00\\x03\\x23\\x00\\x1e\\x47\\x00\\x00\\x6e\\x00\\x03\\x23\\x00\\x1e\\x48\\x00\\x00\\x4e\\x00\\x03\\x31\\x00\\x1e\\x49\\x00\\x00\\x6e\\x00\\x03\\x31\\x00\\x1e\\x4a\\x00\\x00\\x4e\\x00\\x03\\x2d\\x00\\x1e\\x4b\\x00\\x00\\x6e\\x00\\x03\\x2d\\x00\\x1e\\x4c\\x00\\x00\\xd5\\x00\\x03\\x01\\x00\\x1e\\x4d\\x00\\x00\\xf5\\x00\\x03\\x01\\x00\\x1e\\x4e\\x00\\x00\\xd5\\x00\\x03\\x08\\x00\\x1e\\x4f\\x00\\x00\\xf5\\x00\\x03\\x08\\x00\\x1e\\x50\\x00\\x01\\x4c\\x00\\x03\\x00\\x00\\x1e\\x51\\x00\\x01\\x4d\\x00\\x03\\x00\\x00\\x1e\\x52\\x00\\x01\\x4c\\x00\\x03\\x01\\x00\\x1e\\x53\\x00\\x01\\x4d\\x00\\x03\\x01\\x00\\x1e\\x54\\x00\\x00\\x50\\x00\\x03\\x01\\x00\\x1e\\x55\\x00\\x00\\x70\\x00\\x03\\x01\\x00\\x1e\\x56\\x00\\x00\\x50\\x00\\x03\\x07\\x00\\x1e\\x57\\x00\\x00\\x70\\x00\\x03\\x07\\x00\\x1e\\x58\\x00\\x00\\x52\\x00\\x03\\x07\\x00\\x1e\\x59\\x00\\x00\\x72\\x00\\x03\\x07\\x00\\x1e\\x5a\\x00\\x00\\x52\\x00\\x03\\x23\\x00\\x1e\\x5b\\x00\\x00\\x72\\x00\\x03\\x23\\x00\\x1e\\x5c\\x00\\x1e\\x5a\\x00\\x03\\x04\\x00\\x1e\\x5d\\x00\\x1e\\x5b\\x00\\x03\\x04\\x00\\x1e\\x5e\\x00\\x00\\x52\\x00\\x03\\x31\\x00\\x1e\\x5f\\x00\\x00\\x72\\x00\\x03\\x31\\x00\\x1e\\x60\\x00\\x00\\x53\\x00\\x03\\x07\\x00\\x1e\\x61\\x00\\x00\\x73\\x00\\x03\\x07\\x00\\x1e\\x62\\x00\\x00\\x53\\x00\\x03\\x23\\x00\\x1e\\x63\\x00\\x00\\x73\\x00\\x03\\x23\\x00\\x1e\\x64\\x00\\x01\\x5a\\x00\\x03\\x07\\x00\\x1e\\x65\\x00\\x01\\x5b\\x00\\x03\\x07\\x00\\x1e\\x66\\x00\\x01\\x60\\x00\\x03\\x07\\x00\\x1e\\x67\\x00\\x01\\x61\\x00\\x03\\x07\\x00\\x1e\\x68\\x00\\x1e\\x62\\x00\\x03\\x07\\x00\\x1e\\x69\\x00\\x1e\\x63\\x00\\x03\\x07\\x00\\x1e\\x6a\\x00\\x00\\x54\\x00\\x03\\x07\\x00\\x1e\\x6b\\x00\\x00\\x74\\x00\\x03\\x07\\x00\\x1e\\x6c\\x00\\x00\\x54\\x00\\x03\\x23\\x00\\x1e\\x6d\\x00\\x00\\x74\\x00\\x03\\x23\\x00\\x1e\\x6e\\x00\\x00\\x54\\x00\\x03\\x31\\x00\\x1e\\x6f\\x00\\x00\\x74\\x00\\x03\\x31\\x00\\x1e\\x70\\x00\\x00\\x54\\x00\\x03\\x2d\\x00\\x1e\\x71\\x00\\x00\\x74\\x00\\x03\\x2d\\x00\\x1e\\x72\\x00\\x00\\x55\\x00\\x03\\x24\\x00\\x1e\\x73\\x00\\x00\\x75\\x00\\x03\\x24\\x00\\x1e\\x74\\x00\\x00\\x55\\x00\\x03\\x30\\x00\\x1e\\x75\\x00\\x00\\x75\\x00\\x03\\x30\\x00\\x1e\\x76\\x00\\x00\\x55\\x00\\x03\\x2d\\x00\\x1e\\x77\\x00\\x00\\x75\\x00\\x03\\x2d\\x00\\x1e\\x78\\x00\\x01\\x68\\x00\\x03\\x01\\x00\\x1e\\x79\\x00\\x01\\x69\\x00\\x03\\x01\\x00\\x1e\\x7a\\x00\\x01\\x6a\\x00\\x03\\x08\\x00\\x1e\\x7b\\x00\\x01\\x6b\\x00\\x03\\x08\\x00\\x1e\\x7c\\x00\\x00\\x56\\x00\\x03\\x03\\x00\\x1e\\x7d\\x00\\x00\\x76\\x00\\x03\\x03\\x00\\x1e\\x7e\\x00\\x00\\x56\\x00\\x03\\x23\\x00\\x1e\\x7f\\x00\\x00\\x76\\x00\\x03\\x23\\x00\\x1e\\x80\\x00\\x00\\x57\\x00\\x03\\x00\\x00\\x1e\\x81\\x00\\x00\\x77\\x00\\x03\\x00\\x00\\x1e\\x82\\x00\\x00\\x57\\x00\\x03\\x01\\x00\\x1e\\x83\\x00\\x00\\x77\\x00\\x03\\x01\\x00\\x1e\\x84\\x00\\x00\\x57\\x00\\x03\\x08\\x00\\x1e\\x85\\x00\\x00\\x77\\x00\\x03\\x08\\x00\\x1e\\x86\\x00\\x00\\x57\\x00\\x03\\x07\\x00\\x1e\\x87\\x00\\x00\\x77\\x00\\x03\\x07\\x00\\x1e\\x88\\x00\\x00\\x57\\x00\\x03\\x23\\x00\\x1e\\x89\\x00\\x00\\x77\\x00\\x03\\x23\\x00\\x1e\\x8a\\x00\\x00\\x58\\x00\\x03\\x07\\x00\\x1e\\x8b\\x00\\x00\\x78\\x00\\x03\\x07\\x00\\x1e\\x8c\\x00\\x00\\x58\\x00\\x03\\x08\\x00\\x1e\\x8d\\x00\\x00\\x78\\x00\\x03\\x08\\x00\\x1e\\x8e\\x00\\x00\\x59\\x00\\x03\\x07\\x00\\x1e\\x8f\\x00\\x00\\x79\\x00\\x03\\x07\\x00\\x1e\\x90\\x00\\x00\\x5a\\x00\\x03\\x02\\x00\\x1e\\x91\\x00\\x00\\x7a\\x00\\x03\\x02\\x00\\x1e\\x92\\x00\\x00\\x5a\\x00\\x03\\x23\\x00\\x1e\\x93\\x00\\x00\\x7a\\x00\\x03\\x23\\x00\\x1e\\x94\\x00\\x00\\x5a\\x00\\x03\\x31\\x00\\x1e\\x95\\x00\\x00\\x7a\\x00\\x03\\x31\\x00\\x1e\\x96\\x00\\x00\\x68\\x00\\x03\\x31\\x00\\x1e\\x97\\x00\\x00\\x74\\x00\\x03\\x08\\x00\\x1e\\x98\\x00\\x00\\x77\\x00\\x03\\x0a\\x00\\x1e\\x99\\x00\\x00\\x79\\x00\\x03\\x0a\\x00\\x1e\\x9b\\x00\\x01\\x7f\\x00\\x03\\x07\\x00\\x1e\\xa0\\x00\\x00\\x41\\x00\\x03\\x23\\x00\\x1e\\xa1\\x00\\x00\\x61\\x00\\x03\\x23\\x00\\x1e\\xa2\\x00\\x00\\x41\\x00\\x03\\x09\\x00\\x1e\\xa3\\x00\\x00\\x61\\x00\\x03\\x09\\x00\\x1e\\xa4\\x00\\x00\\xc2\\x00\\x03\\x01\\x00\\x1e\\xa5\\x00\\x00\\xe2\\x00\\x03\\x01\\x00\\x1e\\xa6\\x00\\x00\\xc2\\x00\\x03\\x00\\x00\\x1e\\xa7\\x00\\x00\\xe2\\x00\\x03\\x00\\x00\\x1e\\xa8\\x00\\x00\\xc2\\x00\\x03\\x09\\x00\\x1e\\xa9\\x00\\x00\\xe2\\x00\\x03\\x09\\x00\\x1e\\xaa\\x00\\x00\\xc2\\x00\\x03\\x03\\x00\\x1e\\xab\\x00\\x00\\xe2\\x00\\x03\\x03\\x00\\x1e\\xac\\x00\\x1e\\xa0\\x00\\x03\\x02\\x00\\x1e\\xad\\x00\\x1e\\xa1\\x00\\x03\\x02\\x00\\x1e\\xae\\x00\\x01\\x02\\x00\\x03\\x01\\x00\\x1e\\xaf\\x00\\x01\\x03\\x00\\x03\\x01\\x00\\x1e\\xb0\\x00\\x01\\x02\\x00\\x03\\x00\\x00\\x1e\\xb1\\x00\\x01\\x03\\x00\\x03\\x00\\x00\\x1e\\xb2\\x00\\x01\\x02\\x00\\x03\\x09\\x00\\x1e\\xb3\\x00\\x01\\x03\\x00\\x03\\x09\\x00\\x1e\\xb4\\x00\\x01\\x02\\x00\\x03\\x03\\x00\\x1e\\xb5\\x00\\x01\\x03\\x00\\x03\\x03\\x00\\x1e\\xb6\\x00\\x1e\\xa0\\x00\\x03\\x06\\x00\\x1e\\xb7\\x00\\x1e\\xa1\\x00\\x03\\x06\\x00\\x1e\\xb8\\x00\\x00\\x45\\x00\\x03\\x23\\x00\\x1e\\xb9\\x00\\x00\\x65\\x00\\x03\\x23\\x00\\x1e\\xba\\x00\\x00\\x45\\x00\\x03\\x09\\x00\\x1e\\xbb\\x00\\x00\\x65\\x00\\x03\\x09\\x00\\x1e\\xbc\\x00\\x00\\x45\\x00\\x03\\x03\\x00\\x1e\\xbd\\x00\\x00\\x65\\x00\\x03\\x03\\x00\\x1e\\xbe\\x00\\x00\\xca\\x00\\x03\\x01\\x00\\x1e\\xbf\\x00\\x00\\xea\\x00\\x03\\x01\\x00\\x1e\\xc0\\x00\\x00\\xca\\x00\\x03\\x00\\x00\\x1e\\xc1\\x00\\x00\\xea\\x00\\x03\\x00\\x00\\x1e\\xc2\\x00\\x00\\xca\\x00\\x03\\x09\\x00\\x1e\\xc3\\x00\\x00\\xea\\x00\\x03\\x09\\x00\\x1e\\xc4\\x00\\x00\\xca\\x00\\x03\\x03\\x00\\x1e\\xc5\\x00\\x00\\xea\\x00\\x03\\x03\\x00\\x1e\\xc6\\x00\\x1e\\xb8\\x00\\x03\\x02\\x00\\x1e\\xc7\\x00\\x1e\\xb9\\x00\\x03\\x02\\x00\\x1e\\xc8\\x00\\x00\\x49\\x00\\x03\\x09\\x00\\x1e\\xc9\\x00\\x00\\x69\\x00\\x03\\x09\\x00\\x1e\\xca\\x00\\x00\\x49\\x00\\x03\\x23\\x00\\x1e\\xcb\\x00\\x00\\x69\\x00\\x03\\x23\\x00\\x1e\\xcc\\x00\\x00\\x4f\\x00\\x03\\x23\\x00\\x1e\\xcd\\x00\\x00\\x6f\\x00\\x03\\x23\\x00\\x1e\\xce\\x00\\x00\\x4f\\x00\\x03\\x09\\x00\\x1e\\xcf\\x00\\x00\\x6f\\x00\\x03\\x09\\x00\\x1e\\xd0\\x00\\x00\\xd4\\x00\\x03\\x01\\x00\\x1e\\xd1\\x00\\x00\\xf4\\x00\\x03\\x01\\x00\\x1e\\xd2\\x00\\x00\\xd4\\x00\\x03\\x00\\x00\\x1e\\xd3\\x00\\x00\\xf4\\x00\\x03\\x00\\x00\\x1e\\xd4\\x00\\x00\\xd4\\x00\\x03\\x09\\x00\\x1e\\xd5\\x00\\x00\\xf4\\x00\\x03\\x09\\x00\\x1e\\xd6\\x00\\x00\\xd4\\x00\\x03\\x03\\x00\\x1e\\xd7\\x00\\x00\\xf4\\x00\\x03\\x03\\x00\\x1e\\xd8\\x00\\x1e\\xcc\\x00\\x03\\x02\\x00\\x1e\\xd9\\x00\\x1e\\xcd\\x00\\x03\\x02\\x00\\x1e\\xda\\x00\\x01\\xa0\\x00\\x03\\x01\\x00\\x1e\\xdb\\x00\\x01\\xa1\\x00\\x03\\x01\\x00\\x1e\\xdc\\x00\\x01\\xa0\\x00\\x03\\x00\\x00\\x1e\\xdd\\x00\\x01\\xa1\\x00\\x03\\x00\\x00\\x1e\\xde\\x00\\x01\\xa0\\x00\\x03\\x09\\x00\\x1e\\xdf\\x00\\x01\\xa1\\x00\\x03\\x09\\x00\\x1e\\xe0\\x00\\x01\\xa0\\x00\\x03\\x03\\x00\\x1e\\xe1\\x00\\x01\\xa1\\x00\\x03\\x03\\x00\\x1e\\xe2\\x00\\x01\\xa0\\x00\\x03\\x23\\x00\\x1e\\xe3\\x00\\x01\\xa1\\x00\\x03\\x23\\x00\\x1e\\xe4\\x00\\x00\\x55\\x00\\x03\\x23\\x00\\x1e\\xe5\\x00\\x00\\x75\\x00\\x03\\x23\\x00\\x1e\\xe6\\x00\\x00\\x55\\x00\\x03\\x09\\x00\\x1e\\xe7\\x00\\x00\\x75\\x00\\x03\\x09\\x00\\x1e\\xe8\\x00\\x01\\xaf\\x00\\x03\\x01\\x00\\x1e\\xe9\\x00\\x01\\xb0\\x00\\x03\\x01\\x00\\x1e\\xea\\x00\\x01\\xaf\\x00\\x03\\x00\\x00\\x1e\\xeb\\x00\\x01\\xb0\\x00\\x03\\x00\\x00\\x1e\\xec\\x00\\x01\\xaf\\x00\\x03\\x09\\x00\\x1e\\xed\\x00\\x01\\xb0\\x00\\x03\\x09\\x00\\x1e\\xee\\x00\\x01\\xaf\\x00\\x03\\x03\\x00\\x1e\\xef\\x00\\x01\\xb0\\x00\\x03\\x03\\x00\\x1e\\xf0\\x00\\x01\\xaf\\x00\\x03\\x23\\x00\\x1e\\xf1\\x00\\x01\\xb0\\x00\\x03\\x23\\x00\\x1e\\xf2\\x00\\x00\\x59\\x00\\x03\\x00\\x00\\x1e\\xf3\\x00\\x00\\x79\\x00\\x03\\x00\\x00\\x1e\\xf4\\x00\\x00\\x59\\x00\\x03\\x23\\x00\\x1e\\xf5\\x00\\x00\\x79\\x00\\x03\\x23\\x00\\x1e\\xf6\\x00\\x00\\x59\\x00\\x03\\x09\\x00\\x1e\\xf7\\x00\\x00\\x79\\x00\\x03\\x09\\x00\\x1e\\xf8\\x00\\x00\\x59\\x00\\x03\\x03\\x00\\x1e\\xf9\\x00\\x00\\x79\\x00\\x03\\x03\\x00\\x1f\\x00\\x00\\x03\\xb1\\x00\\x03\\x13\\x00\\x1f\\x01\\x00\\x03\\xb1\\x00\\x03\\x14\\x00\\x1f\\x02\\x00\\x1f\\x00\\x00\\x03\\x00\\x00\\x1f\\x03\\x00\\x1f\\x01\\x00\\x03\\x00\\x00\\x1f\\x04\\x00\\x1f\\x00\\x00\\x03\\x01\\x00\\x1f\\x05\\x00\\x1f\\x01\\x00\\x03\\x01\\x00\\x1f\\x06\\x00\\x1f\\x00\\x00\\x03\\x42\\x00\\x1f\\x07\\x00\\x1f\\x01\\x00\\x03\\x42\\x00\\x1f\\x08\\x00\\x03\\x91\\x00\\x03\\x13\\x00\\x1f\\x09\\x00\\x03\\x91\\x00\\x03\\x14\\x00\\x1f\\x0a\\x00\\x1f\\x08\\x00\\x03\\x00\\x00\\x1f\\x0b\\x00\\x1f\\x09\\x00\\x03\\x00\\x00\\x1f\\x0c\\x00\\x1f\\x08\\x00\\x03\\x01\\x00\\x1f\\x0d\\x00\\x1f\\x09\\x00\\x03\\x01\\x00\\x1f\\x0e\\x00\\x1f\\x08\\x00\\x03\\x42\\x00\\x1f\\x0f\\x00\\x1f\\x09\\x00\\x03\\x42\\x00\\x1f\\x10\\x00\\x03\\xb5\\x00\\x03\\x13\\x00\\x1f\\x11\\x00\\x03\\xb5\\x00\\x03\\x14\\x00\\x1f\\x12\\x00\\x1f\\x10\\x00\\x03\\x00\\x00\\x1f\\x13\\x00\\x1f\\x11\\x00\\x03\\x00\\x00\\x1f\\x14\\x00\\x1f\\x10\\x00\\x03\\x01\\x00\\x1f\\x15\\x00\\x1f\\x11\\x00\\x03\\x01\\x00\\x1f\\x18\\x00\\x03\\x95\\x00\\x03\\x13\\x00\\x1f\\x19\\x00\\x03\\x95\\x00\\x03\\x14\\x00\\x1f\\x1a\\x00\\x1f\\x18\\x00\\x03\\x00\\x00\\x1f\\x1b\\x00\\x1f\\x19\\x00\\x03\\x00\\x00\\x1f\\x1c\\x00\\x1f\\x18\\x00\\x03\\x01\\x00\\x1f\\x1d\\x00\\x1f\\x19\\x00\\x03\\x01\\x00\\x1f\\x20\\x00\\x03\\xb7\\x00\\x03\\x13\\x00\\x1f\\x21\\x00\\x03\\xb7\\x00\\x03\\x14\\x00\\x1f\\x22\\x00\\x1f\\x20\\x00\\x03\\x00\\x00\\x1f\\x23\\x00\\x1f\\x21\\x00\\x03\\x00\\x00\\x1f\\x24\\x00\\x1f\\x20\\x00\\x03\\x01\\x00\\x1f\\x25\\x00\\x1f\\x21\\x00\\x03\\x01\\x00\\x1f\\x26\\x00\\x1f\\x20\\x00\\x03\\x42\\x00\\x1f\\x27\\x00\\x1f\\x21\\x00\\x03\\x42\\x00\\x1f\\x28\\x00\\x03\\x97\\x00\\x03\\x13\\x00\\x1f\\x29\\x00\\x03\\x97\\x00\\x03\\x14\\x00\\x1f\\x2a\\x00\\x1f\\x28\\x00\\x03\\x00\\x00\\x1f\\x2b\\x00\\x1f\\x29\\x00\\x03\\x00\\x00\\x1f\\x2c\\x00\\x1f\\x28\\x00\\x03\\x01\\x00\\x1f\\x2d\\x00\\x1f\\x29\\x00\\x03\\x01\\x00\\x1f\\x2e\\x00\\x1f\\x28\\x00\\x03\\x42\\x00\\x1f\\x2f\\x00\\x1f\\x29\\x00\\x03\\x42\\x00\\x1f\\x30\\x00\\x03\\xb9\\x00\\x03\\x13\\x00\\x1f\\x31\\x00\\x03\\xb9\\x00\\x03\\x14\\x00\\x1f\\x32\\x00\\x1f\\x30\\x00\\x03\\x00\\x00\\x1f\\x33\\x00\\x1f\\x31\\x00\\x03\\x00\\x00\\x1f\\x34\\x00\\x1f\\x30\\x00\\x03\\x01\\x00\\x1f\\x35\\x00\\x1f\\x31\\x00\\x03\\x01\\x00\\x1f\\x36\\x00\\x1f\\x30\\x00\\x03\\x42\\x00\\x1f\\x37\\x00\\x1f\\x31\\x00\\x03\\x42\\x00\\x1f\\x38\\x00\\x03\\x99\\x00\\x03\\x13\\x00\\x1f\\x39\\x00\\x03\\x99\\x00\\x03\\x14\\x00\\x1f\\x3a\\x00\\x1f\\x38\\x00\\x03\\x00\\x00\\x1f\\x3b\\x00\\x1f\\x39\\x00\\x03\\x00\\x00\\x1f\\x3c\\x00\\x1f\\x38\\x00\\x03\\x01\\x00\\x1f\\x3d\\x00\\x1f\\x39\\x00\\x03\\x01\\x00\\x1f\\x3e\\x00\\x1f\\x38\\x00\\x03\\x42\\x00\\x1f\\x3f\\x00\\x1f\\x39\\x00\\x03\\x42\\x00\\x1f\\x40\\x00\\x03\\xbf\\x00\\x03\\x13\\x00\\x1f\\x41\\x00\\x03\\xbf\\x00\\x03\\x14\\x00\\x1f\\x42\\x00\\x1f\\x40\\x00\\x03\\x00\\x00\\x1f\\x43\\x00\\x1f\\x41\\x00\\x03\\x00\\x00\\x1f\\x44\\x00\\x1f\\x40\\x00\\x03\\x01\\x00\\x1f\\x45\\x00\\x1f\\x41\\x00\\x03\\x01\\x00\\x1f\\x48\\x00\\x03\\x9f\\x00\\x03\\x13\\x00\\x1f\\x49\\x00\\x03\\x9f\\x00\\x03\\x14\\x00\\x1f\\x4a\\x00\\x1f\\x48\\x00\\x03\\x00\\x00\\x1f\\x4b\\x00\\x1f\\x49\\x00\\x03\\x00\\x00\\x1f\\x4c\\x00\\x1f\\x48\\x00\\x03\\x01\\x00\\x1f\\x4d\\x00\\x1f\\x49\\x00\\x03\\x01\\x00\\x1f\\x50\\x00\\x03\\xc5\\x00\\x03\\x13\\x00\\x1f\\x51\\x00\\x03\\xc5\\x00\\x03\\x14\\x00\\x1f\\x52\\x00\\x1f\\x50\\x00\\x03\\x00\\x00\\x1f\\x53\\x00\\x1f\\x51\\x00\\x03\\x00\\x00\\x1f\\x54\\x00\\x1f\\x50\\x00\\x03\\x01\\x00\\x1f\\x55\\x00\\x1f\\x51\\x00\\x03\\x01\\x00\\x1f\\x56\\x00\\x1f\\x50\\x00\\x03\\x42\\x00\\x1f\\x57\\x00\\x1f\\x51\\x00\\x03\\x42\\x00\\x1f\\x59\\x00\\x03\\xa5\\x00\\x03\\x14\\x00\\x1f\\x5b\\x00\\x1f\\x59\\x00\\x03\\x00\\x00\\x1f\\x5d\\x00\\x1f\\x59\\x00\\x03\\x01\\x00\\x1f\\x5f\\x00\\x1f\\x59\\x00\\x03\\x42\\x00\\x1f\\x60\\x00\\x03\\xc9\\x00\\x03\\x13\\x00\\x1f\\x61\\x00\\x03\\xc9\\x00\\x03\\x14\\x00\\x1f\\x62\\x00\\x1f\\x60\\x00\\x03\\x00\\x00\\x1f\\x63\\x00\\x1f\\x61\\x00\\x03\\x00\\x00\\x1f\\x64\\x00\\x1f\\x60\\x00\\x03\\x01\\x00\\x1f\\x65\\x00\\x1f\\x61\\x00\\x03\\x01\\x00\\x1f\\x66\\x00\\x1f\\x60\\x00\\x03\\x42\\x00\\x1f\\x67\\x00\\x1f\\x61\\x00\\x03\\x42\\x00\\x1f\\x68\\x00\\x03\\xa9\\x00\\x03\\x13\\x00\\x1f\\x69\\x00\\x03\\xa9\\x00\\x03\\x14\\x00\\x1f\\x6a\\x00\\x1f\\x68\\x00\\x03\\x00\\x00\\x1f\\x6b\\x00\\x1f\\x69\\x00\\x03\\x00\\x00\\x1f\\x6c\\x00\\x1f\\x68\\x00\\x03\\x01\\x00\\x1f\\x6d\\x00\\x1f\\x69\\x00\\x03\\x01\\x00\\x1f\\x6e\\x00\\x1f\\x68\\x00\\x03\\x42\\x00\\x1f\\x6f\\x00\\x1f\\x69\\x00\\x03\\x42\\x00\\x1f\\x70\\x00\\x03\\xb1\\x00\\x03\\x00\\x00\\x1f\\x72\\x00\\x03\\xb5\\x00\\x03\\x00\\x00\\x1f\\x74\\x00\\x03\\xb7\\x00\\x03\\x00\\x00\\x1f\\x76\\x00\\x03\\xb9\\x00\\x03\\x00\\x00\\x1f\\x78\\x00\\x03\\xbf\\x00\\x03\\x00\\x00\\x1f\\x7a\\x00\\x03\\xc5\\x00\\x03\\x00\\x00\\x1f\\x7c\\x00\\x03\\xc9\\x00\\x03\\x00\\x00\\x1f\\x80\\x00\\x1f\\x00\\x00\\x03\\x45\\x00\\x1f\\x81\\x00\\x1f\\x01\\x00\\x03\\x45\\x00\\x1f\\x82\\x00\\x1f\\x02\\x00\\x03\\x45\\x00\\x1f\\x83\\x00\\x1f\\x03\\x00\\x03\\x45\\x00\\x1f\\x84\\x00\\x1f\\x04\\x00\\x03\\x45\\x00\\x1f\\x85\\x00\\x1f\\x05\\x00\\x03\\x45\\x00\\x1f\\x86\\x00\\x1f\\x06\\x00\\x03\\x45\\x00\\x1f\\x87\\x00\\x1f\\x07\\x00\\x03\\x45\\x00\\x1f\\x88\\x00\\x1f\\x08\\x00\\x03\\x45\\x00\\x1f\\x89\\x00\\x1f\\x09\\x00\\x03\\x45\\x00\\x1f\\x8a\\x00\\x1f\\x0a\\x00\\x03\\x45\\x00\\x1f\\x8b\\x00\\x1f\\x0b\\x00\\x03\\x45\\x00\\x1f\\x8c\\x00\\x1f\\x0c\\x00\\x03\\x45\\x00\\x1f\\x8d\\x00\\x1f\\x0d\\x00\\x03\\x45\\x00\\x1f\\x8e\\x00\\x1f\\x0e\\x00\\x03\\x45\\x00\\x1f\\x8f\\x00\\x1f\\x0f\\x00\\x03\\x45\\x00\\x1f\\x90\\x00\\x1f\\x20\\x00\\x03\\x45\\x00\\x1f\\x91\\x00\\x1f\\x21\\x00\\x03\\x45\\x00\\x1f\\x92\\x00\\x1f\\x22\\x00\\x03\\x45\\x00\\x1f\\x93\\x00\\x1f\\x23\\x00\\x03\\x45\\x00\\x1f\\x94\\x00\\x1f\\x24\\x00\\x03\\x45\\x00\\x1f\\x95\\x00\\x1f\\x25\\x00\\x03\\x45\\x00\\x1f\\x96\\x00\\x1f\\x26\\x00\\x03\\x45\\x00\\x1f\\x97\\x00\\x1f\\x27\\x00\\x03\\x45\\x00\\x1f\\x98\\x00\\x1f\\x28\\x00\\x03\\x45\\x00\\x1f\\x99\\x00\\x1f\\x29\\x00\\x03\\x45\\x00\\x1f\\x9a\\x00\\x1f\\x2a\\x00\\x03\\x45\\x00\\x1f\\x9b\\x00\\x1f\\x2b\\x00\\x03\\x45\\x00\\x1f\\x9c\\x00\\x1f\\x2c\\x00\\x03\\x45\\x00\\x1f\\x9d\\x00\\x1f\\x2d\\x00\\x03\\x45\\x00\\x1f\\x9e\\x00\\x1f\\x2e\\x00\\x03\\x45\\x00\\x1f\\x9f\\x00\\x1f\\x2f\\x00\\x03\\x45\\x00\\x1f\\xa0\\x00\\x1f\\x60\\x00\\x03\\x45\\x00\\x1f\\xa1\\x00\\x1f\\x61\\x00\\x03\\x45\\x00\\x1f\\xa2\\x00\\x1f\\x62\\x00\\x03\\x45\\x00\\x1f\\xa3\\x00\\x1f\\x63\\x00\\x03\\x45\\x00\\x1f\\xa4\\x00\\x1f\\x64\\x00\\x03\\x45\\x00\\x1f\\xa5\\x00\\x1f\\x65\\x00\\x03\\x45\\x00\\x1f\\xa6\\x00\\x1f\\x66\\x00\\x03\\x45\\x00\\x1f\\xa7\\x00\\x1f\\x67\\x00\\x03\\x45\\x00\\x1f\\xa8\\x00\\x1f\\x68\\x00\\x03\\x45\\x00\\x1f\\xa9\\x00\\x1f\\x69\\x00\\x03\\x45\\x00\\x1f\\xaa\\x00\\x1f\\x6a\\x00\\x03\\x45\\x00\\x1f\\xab\\x00\\x1f\\x6b\\x00\\x03\\x45\\x00\\x1f\\xac\\x00\\x1f\\x6c\\x00\\x03\\x45\\x00\\x1f\\xad\\x00\\x1f\\x6d\\x00\\x03\\x45\\x00\\x1f\\xae\\x00\\x1f\\x6e\\x00\\x03\\x45\\x00\\x1f\\xaf\\x00\\x1f\\x6f\\x00\\x03\\x45\\x00\\x1f\\xb0\\x00\\x03\\xb1\\x00\\x03\\x06\\x00\\x1f\\xb1\\x00\\x03\\xb1\\x00\\x03\\x04\\x00\\x1f\\xb2\\x00\\x1f\\x70\\x00\\x03\\x45\\x00\\x1f\\xb3\\x00\\x03\\xb1\\x00\\x03\\x45\\x00\\x1f\\xb4\\x00\\x03\\xac\\x00\\x03\\x45\\x00\\x1f\\xb6\\x00\\x03\\xb1\\x00\\x03\\x42\\x00\\x1f\\xb7\\x00\\x1f\\xb6\\x00\\x03\\x45\\x00\\x1f\\xb8\\x00\\x03\\x91\\x00\\x03\\x06\\x00\\x1f\\xb9\\x00\\x03\\x91\\x00\\x03\\x04\\x00\\x1f\\xba\\x00\\x03\\x91\\x00\\x03\\x00\\x00\\x1f\\xbc\\x00\\x03\\x91\\x00\\x03\\x45\\x00\\x1f\\xc1\\x00\\x00\\xa8\\x00\\x03\\x42\\x00\\x1f\\xc2\\x00\\x1f\\x74\\x00\\x03\\x45\\x00\\x1f\\xc3\\x00\\x03\\xb7\\x00\\x03\\x45\\x00\\x1f\\xc4\\x00\\x03\\xae\\x00\\x03\\x45\\x00\\x1f\\xc6\\x00\\x03\\xb7\\x00\\x03\\x42\\x00\\x1f\\xc7\\x00\\x1f\\xc6\\x00\\x03\\x45\\x00\\x1f\\xc8\\x00\\x03\\x95\\x00\\x03\\x00\\x00\\x1f\\xca\\x00\\x03\\x97\\x00\\x03\\x00\\x00\\x1f\\xcc\\x00\\x03\\x97\\x00\\x03\\x45\\x00\\x1f\\xcd\\x00\\x1f\\xbf\\x00\\x03\\x00\\x00\\x1f\\xce\\x00\\x1f\\xbf\\x00\\x03\\x01\\x00\\x1f\\xcf\\x00\\x1f\\xbf\\x00\\x03\\x42\\x00\\x1f\\xd0\\x00\\x03\\xb9\\x00\\x03\\x06\\x00\\x1f\\xd1\\x00\\x03\\xb9\\x00\\x03\\x04\\x00\\x1f\\xd2\\x00\\x03\\xca\\x00\\x03\\x00\\x00\\x1f\\xd6\\x00\\x03\\xb9\\x00\\x03\\x42\\x00\\x1f\\xd7\\x00\\x03\\xca\\x00\\x03\\x42\\x00\\x1f\\xd8\\x00\\x03\\x99\\x00\\x03\\x06\\x00\\x1f\\xd9\\x00\\x03\\x99\\x00\\x03\\x04\\x00\\x1f\\xda\\x00\\x03\\x99\\x00\\x03\\x00\\x00\\x1f\\xdd\\x00\\x1f\\xfe\\x00\\x03\\x00\\x00\\x1f\\xde\\x00\\x1f\\xfe\\x00\\x03\\x01\\x00\\x1f\\xdf\\x00\\x1f\\xfe\\x00\\x03\\x42\\x00\\x1f\\xe0\\x00\\x03\\xc5\\x00\\x03\\x06\\x00\\x1f\\xe1\\x00\\x03\\xc5\\x00\\x03\\x04\\x00\\x1f\\xe2\\x00\\x03\\xcb\\x00\\x03\\x00\\x00\\x1f\\xe4\\x00\\x03\\xc1\\x00\\x03\\x13\\x00\\x1f\\xe5\\x00\\x03\\xc1\\x00\\x03\\x14\\x00\\x1f\\xe6\\x00\\x03\\xc5\\x00\\x03\\x42\\x00\\x1f\\xe7\\x00\\x03\\xcb\\x00\\x03\\x42\\x00\\x1f\\xe8\\x00\\x03\\xa5\\x00\\x03\\x06\\x00\\x1f\\xe9\\x00\\x03\\xa5\\x00\\x03\\x04\\x00\\x1f\\xea\\x00\\x03\\xa5\\x00\\x03\\x00\\x00\\x1f\\xec\\x00\\x03\\xa1\\x00\\x03\\x14\\x00\\x1f\\xed\\x00\\x00\\xa8\\x00\\x03\\x00\\x00\\x1f\\xf2\\x00\\x1f\\x7c\\x00\\x03\\x45\\x00\\x1f\\xf3\\x00\\x03\\xc9\\x00\\x03\\x45\\x00\\x1f\\xf4\\x00\\x03\\xce\\x00\\x03\\x45\\x00\\x1f\\xf6\\x00\\x03\\xc9\\x00\\x03\\x42\\x00\\x1f\\xf7\\x00\\x1f\\xf6\\x00\\x03\\x45\\x00\\x1f\\xf8\\x00\\x03\\x9f\\x00\\x03\\x00\\x00\\x1f\\xfa\\x00\\x03\\xa9\\x00\\x03\\x00\\x00\\x1f\\xfc\\x00\\x03\\xa9\\x00\\x03\\x45\\x00\\x21\\x9a\\x00\\x21\\x90\\x00\\x03\\x38\\x00\\x21\\x9b\\x00\\x21\\x92\\x00\\x03\\x38\\x00\\x21\\xae\\x00\\x21\\x94\\x00\\x03\\x38\\x00\\x21\\xcd\\x00\\x21\\xd0\\x00\\x03\\x38\\x00\\x21\\xce\\x00\\x21\\xd4\\x00\\x03\\x38\\x00\\x21\\xcf\\x00\\x21\\xd2\\x00\\x03\\x38\\x00\\x22\\x04\\x00\\x22\\x03\\x00\\x03\\x38\\x00\\x22\\x09\\x00\\x22\\x08\\x00\\x03\\x38\\x00\\x22\\x0c\\x00\\x22\\x0b\\x00\\x03\\x38\\x00\\x22\\x24\\x00\\x22\\x23\\x00\\x03\\x38\\x00\\x22\\x26\\x00\\x22\\x25\\x00\\x03\\x38\\x00\\x22\\x41\\x00\\x22\\x3c\\x00\\x03\\x38\\x00\\x22\\x44\\x00\\x22\\x43\\x00\\x03\\x38\\x00\\x22\\x47\\x00\\x22\\x45\\x00\\x03\\x38\\x00\\x22\\x49\\x00\\x22\\x48\\x00\\x03\\x38\\x00\\x22\\x60\\x00\\x00\\x3d\\x00\\x03\\x38\\x00\\x22\\x62\\x00\\x22\\x61\\x00\\x03\\x38\\x00\\x22\\x6d\\x00\\x22\\x4d\\x00\\x03\\x38\\x00\\x22\\x6e\\x00\\x00\\x3c\\x00\\x03\\x38\\x00\\x22\\x6f\\x00\\x00\\x3e\\x00\\x03\\x38\\x00\\x22\\x70\\x00\\x22\\x64\\x00\\x03\\x38\\x00\\x22\\x71\\x00\\x22\\x65\\x00\\x03\\x38\\x00\\x22\\x74\\x00\\x22\\x72\\x00\\x03\\x38\\x00\\x22\\x75\\x00\\x22\\x73\\x00\\x03\\x38\\x00\\x22\\x78\\x00\\x22\\x76\\x00\\x03\\x38\\x00\\x22\\x79\\x00\\x22\\x77\\x00\\x03\\x38\\x00\\x22\\x80\\x00\\x22\\x7a\\x00\\x03\\x38\\x00\\x22\\x81\\x00\\x22\\x7b\\x00\\x03\\x38\\x00\\x22\\x84\\x00\\x22\\x82\\x00\\x03\\x38\\x00\\x22\\x85\\x00\\x22\\x83\\x00\\x03\\x38\\x00\\x22\\x88\\x00\\x22\\x86\\x00\\x03\\x38\\x00\\x22\\x89\\x00\\x22\\x87\\x00\\x03\\x38\\x00\\x22\\xac\\x00\\x22\\xa2\\x00\\x03\\x38\\x00\\x22\\xad\\x00\\x22\\xa8\\x00\\x03\\x38\\x00\\x22\\xae\\x00\\x22\\xa9\\x00\\x03\\x38\\x00\\x22\\xaf\\x00\\x22\\xab\\x00\\x03\\x38\\x00\\x22\\xe0\\x00\\x22\\x7c\\x00\\x03\\x38\\x00\\x22\\xe1\\x00\\x22\\x7d\\x00\\x03\\x38\\x00\\x22\\xe2\\x00\\x22\\x91\\x00\\x03\\x38\\x00\\x22\\xe3\\x00\\x22\\x92\\x00\\x03\\x38\\x00\\x22\\xea\\x00\\x22\\xb2\\x00\\x03\\x38\\x00\\x22\\xeb\\x00\\x22\\xb3\\x00\\x03\\x38\\x00\\x22\\xec\\x00\\x22\\xb4\\x00\\x03\\x38\\x00\\x22\\xed\\x00\\x22\\xb5\\x00\\x03\\x38\\x00\\x2a\\xdc\\x00\\x2a\\xdd\\x00\\x03\\x38\\x00\\x30\\x4c\\x00\\x30\\x4b\\x00\\x30\\x99\\x00\\x30\\x4e\\x00\\x30\\x4d\\x00\\x30\\x99\\x00\\x30\\x50\\x00\\x30\\x4f\\x00\\x30\\x99\\x00\\x30\\x52\\x00\\x30\\x51\\x00\\x30\\x99\\x00\\x30\\x54\\x00\\x30\\x53\\x00\\x30\\x99\\x00\\x30\\x56\\x00\\x30\\x55\\x00\\x30\\x99\\x00\\x30\\x58\\x00\\x30\\x57\\x00\\x30\\x99\\x00\\x30\\x5a\\x00\\x30\\x59\\x00\\x30\\x99\\x00\\x30\\x5c\\x00\\x30\\x5b\\x00\\x30\\x99\\x00\\x30\\x5e\\x00\\x30\\x5d\\x00\\x30\\x99\\x00\\x30\\x60\\x00\\x30\\x5f\\x00\\x30\\x99\\x00\\x30\\x62\\x00\\x30\\x61\\x00\\x30\\x99\\x00\\x30\\x65\\x00\\x30\\x64\\x00\\x30\\x99\\x00\\x30\\x67\\x00\\x30\\x66\\x00\\x30\\x99\\x00\\x30\\x69\\x00\\x30\\x68\\x00\\x30\\x99\\x00\\x30\\x70\\x00\\x30\\x6f\\x00\\x30\\x99\\x00\\x30\\x71\\x00\\x30\\x6f\\x00\\x30\\x9a\\x00\\x30\\x73\\x00\\x30\\x72\\x00\\x30\\x99\\x00\\x30\\x74\\x00\\x30\\x72\\x00\\x30\\x9a\\x00\\x30\\x76\\x00\\x30\\x75\\x00\\x30\\x99\\x00\\x30\\x77\\x00\\x30\\x75\\x00\\x30\\x9a\\x00\\x30\\x79\\x00\\x30\\x78\\x00\\x30\\x99\\x00\\x30\\x7a\\x00\\x30\\x78\\x00\\x30\\x9a\\x00\\x30\\x7c\\x00\\x30\\x7b\\x00\\x30\\x99\\x00\\x30\\x7d\\x00\\x30\\x7b\\x00\\x30\\x9a\\x00\\x30\\x94\\x00\\x30\\x46\\x00\\x30\\x99\\x00\\x30\\x9e\\x00\\x30\\x9d\\x00\\x30\\x99\\x00\\x30\\xac\\x00\\x30\\xab\\x00\\x30\\x99\\x00\\x30\\xae\\x00\\x30\\xad\\x00\\x30\\x99\\x00\\x30\\xb0\\x00\\x30\\xaf\\x00\\x30\\x99\\x00\\x30\\xb2\\x00\\x30\\xb1\\x00\\x30\\x99\\x00\\x30\\xb4\\x00\\x30\\xb3\\x00\\x30\\x99\\x00\\x30\\xb6\\x00\\x30\\xb5\\x00\\x30\\x99\\x00\\x30\\xb8\\x00\\x30\\xb7\\x00\\x30\\x99\\x00\\x30\\xba\\x00\\x30\\xb9\\x00\\x30\\x99\\x00\\x30\\xbc\\x00\\x30\\xbb\\x00\\x30\\x99\\x00\\x30\\xbe\\x00\\x30\\xbd\\x00\\x30\\x99\\x00\\x30\\xc0\\x00\\x30\\xbf\\x00\\x30\\x99\\x00\\x30\\xc2\\x00\\x30\\xc1\\x00\\x30\\x99\\x00\\x30\\xc5\\x00\\x30\\xc4\\x00\\x30\\x99\\x00\\x30\\xc7\\x00\\x30\\xc6\\x00\\x30\\x99\\x00\\x30\\xc9\\x00\\x30\\xc8\\x00\\x30\\x99\\x00\\x30\\xd0\\x00\\x30\\xcf\\x00\\x30\\x99\\x00\\x30\\xd1\\x00\\x30\\xcf\\x00\\x30\\x9a\\x00\\x30\\xd3\\x00\\x30\\xd2\\x00\\x30\\x99\\x00\\x30\\xd4\\x00\\x30\\xd2\\x00\\x30\\x9a\\x00\\x30\\xd6\\x00\\x30\\xd5\\x00\\x30\\x99\\x00\\x30\\xd7\\x00\\x30\\xd5\\x00\\x30\\x9a\\x00\\x30\\xd9\\x00\\x30\\xd8\\x00\\x30\\x99\\x00\\x30\\xda\\x00\\x30\\xd8\\x00\\x30\\x9a\\x00\\x30\\xdc\\x00\\x30\\xdb\\x00\\x30\\x99\\x00\\x30\\xdd\\x00\\x30\\xdb\\x00\\x30\\x9a\\x00\\x30\\xf4\\x00\\x30\\xa6\\x00\\x30\\x99\\x00\\x30\\xf7\\x00\\x30\\xef\\x00\\x30\\x99\\x00\\x30\\xf8\\x00\\x30\\xf0\\x00\\x30\\x99\\x00\\x30\\xf9\\x00\\x30\\xf1\\x00\\x30\\x99\\x00\\x30\\xfa\\x00\\x30\\xf2\\x00\\x30\\x99\\x00\\x30\\xfe\\x00\\x30\\xfd\\x00\\x30\\x99\\x00\\xfb\\x1d\\x00\\x05\\xd9\\x00\\x05\\xb4\\x00\\xfb\\x1f\\x00\\x05\\xf2\\x00\\x05\\xb7\\x00\\xfb\\x2a\\x00\\x05\\xe9\\x00\\x05\\xc1\\x00\\xfb\\x2b\\x00\\x05\\xe9\\x00\\x05\\xc2\\x00\\xfb\\x2c\\x00\\xfb\\x49\\x00\\x05\\xc1\\x00\\xfb\\x2d\\x00\\xfb\\x49\\x00\\x05\\xc2\\x00\\xfb\\x2e\\x00\\x05\\xd0\\x00\\x05\\xb7\\x00\\xfb\\x2f\\x00\\x05\\xd0\\x00\\x05\\xb8\\x00\\xfb\\x30\\x00\\x05\\xd0\\x00\\x05\\xbc\\x00\\xfb\\x31\\x00\\x05\\xd1\\x00\\x05\\xbc\\x00\\xfb\\x32\\x00\\x05\\xd2\\x00\\x05\\xbc\\x00\\xfb\\x33\\x00\\x05\\xd3\\x00\\x05\\xbc\\x00\\xfb\\x34\\x00\\x05\\xd4\\x00\\x05\\xbc\\x00\\xfb\\x35\\x00\\x05\\xd5\\x00\\x05\\xbc\\x00\\xfb\\x36\\x00\\x05\\xd6\\x00\\x05\\xbc\\x00\\xfb\\x38\\x00\\x05\\xd8\\x00\\x05\\xbc\\x00\\xfb\\x39\\x00\\x05\\xd9\\x00\\x05\\xbc\\x00\\xfb\\x3a\\x00\\x05\\xda\\x00\\x05\\xbc\\x00\\xfb\\x3b\\x00\\x05\\xdb\\x00\\x05\\xbc\\x00\\xfb\\x3c\\x00\\x05\\xdc\\x00\\x05\\xbc\\x00\\xfb\\x3e\\x00\\x05\\xde\\x00\\x05\\xbc\\x00\\xfb\\x40\\x00\\x05\\xe0\\x00\\x05\\xbc\\x00\\xfb\\x41\\x00\\x05\\xe1\\x00\\x05\\xbc\\x00\\xfb\\x43\\x00\\x05\\xe3\\x00\\x05\\xbc\\x00\\xfb\\x44\\x00\\x05\\xe4\\x00\\x05\\xbc\\x00\\xfb\\x46\\x00\\x05\\xe6\\x00\\x05\\xbc\\x00\\xfb\\x47\\x00\\x05\\xe7\\x00\\x05\\xbc\\x00\\xfb\\x48\\x00\\x05\\xe8\\x00\\x05\\xbc\\x00\\xfb\\x49\\x00\\x05\\xe9\\x00\\x05\\xbc\\x00\\xfb\\x4a\\x00\\x05\\xea\\x00\\x05\\xbc\\x00\\xfb\\x4b\\x00\\x05\\xd5\\x00\\x05\\xb9\\x00\\xfb\\x4c\\x00\\x05\\xd1\\x00\\x05\\xbf\\x00\\xfb\\x4d\\x00\\x05\\xdb\\x00\\x05\\xbf\\x00\\xfb\\x4e\\x00\\x05\\xe4\\x00\\x05\\xbf\\x01\\x05\\xc9\\x01\\x05\\xd2\\x00\\x03\\x07\\x01\\x05\\xe4\\x01\\x05\\xda\\x00\\x03\\x07\\x01\\x10\\x9a\\x01\\x10\\x99\\x01\\x10\\xba\\x01\\x10\\x9c\\x01\\x10\\x9b\\x01\\x10\\xba\\x01\\x10\\xab\\x01\\x10\\xa5\\x01\\x10\\xba\\x01\\x11\\x2e\\x01\\x11\\x31\\x01\\x11\\x27\\x01\\x11\\x2f\\x01\\x11\\x32\\x01\\x11\\x27\\x01\\x13\\x4b\\x01\\x13\\x47\\x01\\x13\\x3e\\x01\\x13\\x4c\\x01\\x13\\x47\\x01\\x13\\x57\\x01\\x13\\x83\\x01\\x13\\x82\\x01\\x13\\xc9\\x01\\x13\\x85\\x01\\x13\\x84\\x01\\x13\\xbb\\x01\\x13\\x8e\\x01\\x13\\x8b\\x01\\x13\\xc2\\x01\\x13\\x91\\x01\\x13\\x90\\x01\\x13\\xc9\\x01\\x13\\xc5\\x01\\x13\\xc2\\x01\\x13\\xc2\\x01\\x13\\xc7\\x01\\x13\\xc2\\x01\\x13\\xb8\\x01\\x13\\xc8\\x01\\x13\\xc2\\x01\\x13\\xc9\\x01\\x14\\xbb\\x01\\x14\\xb9\\x01\\x14\\xba\\x01\\x14\\xbc\\x01\\x14\\xb9\\x01\\x14\\xb0\\x01\\x14\\xbe\\x01\\x14\\xb9\\x01\\x14\\xbd\\x01\\x15\\xba\\x01\\x15\\xb8\\x01\\x15\\xaf\\x01\\x15\\xbb\\x01\\x15\\xb9\\x01\\x15\\xaf\\x01\\x19\\x38\\x01\\x19\\x35\\x01\\x19\\x30\\x01\\x61\\x21\\x01\\x61\\x1e\\x01\\x61\\x1e\\x01\\x61\\x22\\x01\\x61\\x1e\\x01\\x61\\x29\\x01\\x61\\x23\\x01\\x61\\x1e\\x01\\x61\\x1f\\x01\\x61\\x24\\x01\\x61\\x29\\x01\\x61\\x1f\\x01\\x61\\x25\\x01\\x61\\x1e\\x01\\x61\\x20\\x01\\x61\\x26\\x01\\x61\\x21\\x01\\x61\\x1f\\x01\\x61\\x27\\x01\\x61\\x22\\x01\\x61\\x1f\\x01\\x61\\x28\\x01\\x61\\x21\\x01\\x61\\x20\\x01\\x6d\\x68\\x01\\x6d\\x67\\x01\\x6d\\x67\\x01\\x6d\\x69\\x01\\x6d\\x63\\x01\\x6d\\x67\\x01\\x6d\\x6a\\x01\\x6d\\x69\\x01\\x6d\\x67\\x01\\xd1\\x5e\\x01\\xd1\\x57\\x01\\xd1\\x65\\x01\\xd1\\x5f\\x01\\xd1\\x58\\x01\\xd1\\x65\\x01\\xd1\\x60\\x01\\xd1\\x5f\\x01\\xd1\\x6e\\x01\\xd1\\x61\\x01\\xd1\\x5f\\x01\\xd1\\x6f\\x01\\xd1\\x62\\x01\\xd1\\x5f\\x01\\xd1\\x70\\x01\\xd1\\x63\\x01\\xd1\\x5f\\x01\\xd1\\x71\\x01\\xd1\\x64\\x01\\xd1\\x5f\\x01\\xd1\\x72\\x01\\xd1\\xbb\\x01\\xd1\\xb9\\x01\\xd1\\x65\\x01\\xd1\\xbc\\x01\\xd1\\xba\\x01\\xd1\\x65\\x01\\xd1\\xbd\\x01\\xd1\\xbb\\x01\\xd1\\x6e\\x01\\xd1\\xbe\\x01\\xd1\\xbc\\x01\\xd1\\x6e\\x01\\xd1\\xbf\\x01\\xd1\\xbb\\x01\\xd1\\x6f\\x01\\xd1\\xc0\\x01\\xd1\\xbc\\x01\\xd1\\x6f"\n let at = index * 9\n return PairRecord {\n composed: read3(data, at),\n first: read3(data, at + 3),\n second: read3(data, at + 6),\n }\n}\n\n/// Composes a starter and a following scalar, or returns zero when the pair does not compose.\n///\n/// # Details\n///\n/// Excluded composition pairs are absent. A nonzero result is always a primary composite.\n///\n/// # Gotchas\n///\n/// Hangul composition is algorithmic and is not included in this lookup.\npub fn canonicalComposition(first: u32, second: u32) -> u32 {\n let index = b"\\x03\\x71\\x03\\x6e\\x03\\x72\\x00\\x00\\x00\\x01\\x00\\x02\\x00\\x03\\x00\\x35\\x00\\x37\\x00\\xee\\x00\\x04\\x02\\x36\\x00\\x05\\x00\\xa5\\x00\\xd0\\x00\\xd2\\x02\\x34\\x01\\x99\\x00\\x39\\x01\\x9b\\x01\\x9d\\x01\\x9f\\x00\\x3b\\x00\\x3d\\x00\\x3f\\x00\\x41\\x00\\x06\\x01\\xa3\\x00\\x43\\x01\\xa5\\x01\\xa9\\x01\\xab\\x01\\xa7\\x00\\x07\\x00\\x08\\x00\\x09\\x02\\x50\\x00\\x45\\x00\\x47\\x00\\x49\\x00\\x0a\\x02\\x4e\\x00\\x4d\\x00\\xd4\\x00\\xd6\\x02\\x4c\\x00\\xf0\\x00\\x4b\\x01\\xb1\\x01\\xb3\\x01\\xb7\\x00\\xc6\\x00\\x4f\\x01\\xb9\\x00\\x51\\x00\\x53\\x00\\xbb\\x00\\x55\\x00\\x57\\x01\\xbb\\x01\\xbf\\x00\\xec\\x01\\xbd\\x01\\xc1\\x01\\xc3\\x00\\x0b\\x00\\x0c\\x00\\x0d\\x00\\x59\\x00\\x5b\\x00\\x5d\\x00\\x61\\x00\\x0e\\x02\\x5c\\x00\\xa7\\x00\\xd8\\x00\\xda\\x02\\x5e\\x00\\x5f\\x01\\xc5\\x00\\x62\\x01\\xc9\\x00\\xbd\\x01\\xcb\\x00\\x64\\x01\\xcd\\x00\\x66\\x00\\x6a\\x01\\xcf\\x00\\x68\\x01\\xd5\\x01\\xd3\\x01\\xd7\\x01\\xd9\\x01\\xdb\\x00\\xc8\\x00\\x6c\\x00\\x0f\\x01\\xdd\\x00\\x70\\x01\\xdf\\x00\\x6e\\x01\\xe3\\x01\\xe1\\x00\\x10\\x00\\x11\\x00\\x12\\x00\\x13\\x00\\x72\\x00\\x74\\x00\\xf6\\x00\\x14\\x02\\x62\\x00\\x76\\x00\\xa9\\x00\\xdc\\x00\\xde\\x00\\xa1\\x02\\x60\\x00\\xbf\\x01\\xed\\x01\\xef\\x00\\x78\\x01\\xf1\\x00\\x7c\\x00\\xe0\\x00\\xe2\\x01\\xf3\\x00\\x7a\\x01\\xf7\\x00\\x7e\\x00\\x80\\x01\\xf9\\x00\\x84\\x01\\xfb\\x00\\xe8\\x00\\x82\\x02\\x03\\x00\\x88\\x02\\x05\\x00\\xea\\x00\\x86\\x02\\x09\\x02\\x07\\x00\\x15\\x00\\x16\\x00\\x17\\x00\\x8a\\x00\\x8c\\x00\\x8e\\x00\\x18\\x02\\x7a\\x00\\x90\\x00\\x92\\x00\\xab\\x00\\xe4\\x00\\xe6\\x00\\xa3\\x02\\x78\\x02\\x0b\\x00\\x94\\x02\\x0f\\x02\\x0d\\x02\\x15\\x02\\x17\\x02\\x19\\x02\\x1b\\x00\\x96\\x02\\x1f\\x02\\x1d\\x02\\x21\\x02\\x23\\x02\\x25\\x02\\x86\\x00\\x19\\x00\\x98\\x02\\x8c\\x00\\xfa\\x02\\x27\\x00\\x9a\\x02\\x8a\\x02\\x88\\x00\\x9b\\x02\\x29\\x00\\x9d\\x00\\x9f\\x02\\x2b\\x02\\x2d\\x00\\x1a\\x00\\x1b\\x00\\x1c\\x00\\x1d\\x00\\x36\\x00\\x38\\x00\\xef\\x00\\x1e\\x02\\x37\\x00\\x1f\\x00\\xa6\\x00\\xd1\\x00\\xd3\\x02\\x35\\x01\\x9a\\x00\\x3a\\x01\\x9c\\x01\\x9e\\x01\\xa0\\x00\\x3c\\x00\\x3e\\x00\\x40\\x00\\x42\\x00\\x20\\x01\\xa4\\x00\\x44\\x01\\xa6\\x01\\xaa\\x01\\xac\\x01\\xa8\\x00\\x21\\x00\\x22\\x00\\x23\\x02\\x51\\x00\\x46\\x00\\x48\\x00\\x4a\\x00\\x24\\x02\\x4f\\x00\\x4e\\x00\\xd5\\x00\\xd7\\x02\\x4d\\x00\\xf1\\x00\\x4c\\x01\\xb2\\x01\\xb4\\x01\\xb8\\x00\\xc7\\x00\\x50\\x01\\xba\\x00\\x52\\x00\\x54\\x00\\xbc\\x00\\x56\\x00\\x58\\x01\\xbc\\x01\\xc0\\x00\\xed\\x01\\xbe\\x01\\xc2\\x01\\xc4\\x02\\x2f\\x00\\x25\\x00\\x26\\x00\\x27\\x00\\x5a\\x00\\x5c\\x00\\x5e\\x00\\x28\\x02\\x5d\\x00\\xa8\\x00\\xd9\\x00\\xdb\\x02\\x5f\\x00\\x60\\x01\\xc6\\x00\\x63\\x00\\xc5\\x01\\xca\\x00\\xbe\\x01\\xcc\\x00\\x65\\x01\\xce\\x00\\x67\\x00\\x6b\\x01\\xd0\\x00\\x69\\x01\\xd6\\x01\\xd4\\x01\\xd8\\x01\\xda\\x01\\xdc\\x00\\xc9\\x00\\x6d\\x00\\x29\\x01\\xde\\x00\\x71\\x01\\xe0\\x00\\x6f\\x01\\xe4\\x01\\xe2\\x00\\x2a\\x00\\x2b\\x00\\x2c\\x00\\x2d\\x00\\x73\\x00\\x75\\x00\\xf7\\x00\\x2e\\x02\\x63\\x00\\x77\\x00\\xaa\\x00\\xdd\\x00\\xdf\\x00\\xa2\\x02\\x61\\x00\\xc0\\x01\\xee\\x01\\xf0\\x00\\x79\\x01\\xf2\\x00\\x7d\\x00\\xe1\\x00\\xe3\\x01\\xf4\\x00\\x7b\\x01\\xf8\\x00\\x7f\\x00\\x81\\x01\\xfa\\x00\\x85\\x01\\xfc\\x00\\xe9\\x00\\x83\\x02\\x04\\x02\\x30\\x00\\x89\\x02\\x06\\x00\\xeb\\x00\\x87\\x02\\x0a\\x02\\x08\\x00\\x2f\\x00\\x30\\x00\\x31\\x00\\x8b\\x00\\x8d\\x00\\x8f\\x00\\x32\\x02\\x7b\\x00\\x91\\x00\\x93\\x00\\xac\\x00\\xe5\\x00\\xe7\\x00\\xa4\\x02\\x79\\x02\\x0c\\x00\\x95\\x02\\x10\\x02\\x0e\\x02\\x16\\x02\\x18\\x02\\x1a\\x02\\x1c\\x00\\x97\\x02\\x20\\x02\\x1e\\x02\\x31\\x02\\x22\\x02\\x24\\x02\\x26\\x02\\x87\\x00\\x33\\x00\\x99\\x02\\x8d\\x00\\xfb\\x02\\x28\\x00\\x34\\x02\\x8b\\x02\\x32\\x02\\x89\\x00\\x9c\\x02\\x2a\\x00\\x9e\\x00\\xa0\\x02\\x2c\\x02\\x2e\\x03\\x56\\x00\\xfd\\x03\\x34\\x02\\x3a\\x02\\x38\\x02\\x3e\\x02\\x3c\\x00\\xb5\\x00\\xca\\x00\\xcc\\x00\\xb9\\x01\\xa1\\x02\\x54\\x02\\x52\\x02\\x58\\x02\\x56\\x01\\xc7\\x02\\x66\\x02\\x64\\x02\\x6a\\x02\\x68\\x01\\xe5\\x00\\xf4\\x01\\xe7\\x00\\xf2\\x00\\xce\\x00\\xb3\\x00\\xaf\\x00\\xad\\x00\\xb1\\x02\\x3b\\x02\\x39\\x02\\x3f\\x02\\x3d\\x00\\xb6\\x00\\xcb\\x00\\xcd\\x00\\xba\\x01\\xa2\\x02\\x55\\x02\\x53\\x02\\x59\\x02\\x57\\x01\\xc8\\x02\\x67\\x02\\x65\\x02\\x6b\\x02\\x69\\x01\\xe6\\x00\\xf5\\x01\\xe8\\x00\\xf3\\x00\\xcf\\x00\\xb4\\x00\\xb0\\x00\\xae\\x00\\xb2\\x02\\x44\\x02\\x42\\x02\\x48\\x02\\x46\\x02\\x45\\x02\\x43\\x02\\x49\\x02\\x47\\x01\\xad\\x01\\xaf\\x01\\xae\\x01\\xb0\\x01\\xe9\\x01\\xeb\\x01\\xea\\x01\\xec\\x01\\xfd\\x01\\xfe\\x01\\xff\\x02\\x00\\x02\\x11\\x02\\x12\\x02\\x13\\x02\\x14\\x02\\x33\\x02\\x70\\x02\\x6e\\x02\\x74\\x02\\x72\\x02\\x76\\x02\\x71\\x02\\x6f\\x02\\x75\\x02\\x73\\x02\\x77\\x02\\x7e\\x02\\x7c\\x02\\x82\\x02\\x80\\x02\\x84\\x02\\x7f\\x02\\x7d\\x02\\x83\\x02\\x81\\x02\\x85\\x00\\xc3\\x00\\xc1\\x00\\xc2\\x00\\xb7\\x00\\xb8\\x01\\xb5\\x01\\xb6\\x00\\xf8\\x00\\xf9\\x00\\xc4\\x03\\x32\\x00\\xfe\\x03\\x31\\x03\\x30\\x02\\x96\\x02\\x97\\x03\\x33\\x03\\x3a\\x00\\xff\\x02\\xa4\\x02\\xa5\\x03\\x3b\\x01\\x00\\x02\\xb2\\x02\\xb3\\x03\\x3c\\x03\\x47\\x01\\x01\\x03\\x46\\x03\\x45\\x01\\x06\\x02\\xc2\\x02\\xc3\\x03\\x5c\\x01\\x02\\x02\\xd0\\x02\\xd1\\x03\\x55\\x03\\x54\\x01\\x03\\x03\\x53\\x03\\x52\\x01\\x07\\x02\\xde\\x03\\x5d\\x01\\x04\\x02\\xea\\x02\\xeb\\x03\\x5e\\x03\\x2d\\x03\\x37\\x02\\xf2\\x01\\x08\\x03\\x2a\\x03\\x29\\x02\\x8e\\x02\\x8f\\x03\\x2e\\x03\\x2c\\x02\\xf3\\x01\\x09\\x02\\x9e\\x02\\x9f\\x02\\xf4\\x01\\x0a\\x02\\xaa\\x02\\xab\\x03\\x38\\x03\\x36\\x02\\xf5\\x01\\x0b\\x03\\x41\\x03\\x40\\x01\\x0d\\x02\\xba\\x02\\xbb\\x03\\x43\\x02\\xf6\\x01\\x0f\\x02\\xca\\x02\\xcb\\x03\\x4e\\x03\\x4f\\x02\\xf7\\x01\\x10\\x03\\x4c\\x03\\x4b\\x01\\x0e\\x02\\xd6\\x02\\xd7\\x03\\x50\\x02\\xf8\\x01\\x11\\x02\\xe2\\x02\\xe3\\x03\\x5a\\x03\\x58\\x03\\x42\\x01\\x05\\x03\\x44\\x03\\x4d\\x01\\x0c\\x03\\x51\\x03\\x59\\x01\\x12\\x01\\x13\\x01\\x17\\x01\\x28\\x01\\x2a\\x01\\x16\\x01\\x14\\x01\\x2c\\x01\\x15\\x01\\x26\\x01\\x30\\x01\\x32\\x01\\x19\\x01\\x34\\x01\\x1b\\x01\\x36\\x01\\x18\\x01\\x38\\x01\\x3e\\x01\\x1a\\x01\\x40\\x01\\x42\\x01\\x44\\x01\\x46\\x01\\x3c\\x01\\x29\\x01\\x2b\\x01\\x1f\\x01\\x1d\\x01\\x2d\\x01\\x1e\\x01\\x27\\x01\\x31\\x01\\x33\\x01\\x22\\x01\\x35\\x01\\x1c\\x01\\x37\\x01\\x21\\x01\\x39\\x01\\x3f\\x01\\x23\\x01\\x41\\x01\\x43\\x01\\x45\\x01\\x47\\x01\\x3d\\x01\\x20\\x01\\x24\\x01\\x25\\x01\\x2e\\x01\\x2f\\x01\\x3a\\x01\\x3b\\x01\\x48\\x01\\x49\\x01\\x4b\\x01\\x4a\\x01\\x4c\\x01\\x4e\\x01\\x4f\\x01\\x4d\\x01\\x50\\x01\\x51\\x01\\x52\\x01\\x5b\\x01\\x5c\\x01\\x67\\x01\\x66\\x01\\x68\\x01\\x6b\\x01\\x6c\\x01\\x6e\\x01\\x6d\\x01\\x6f\\x01\\x70\\x01\\x73\\x01\\x71\\x01\\x72\\x01\\x74\\x01\\x75\\x01\\x77\\x01\\x76\\x01\\x78\\x01\\x79\\x01\\x7b\\x01\\x7a\\x01\\x8d\\x01\\x8e\\x01\\x8f\\x01\\x90\\x01\\x91\\x01\\x92\\x01\\x93\\x01\\x94\\x01\\x95\\x01\\x96\\x01\\x97\\x01\\x98\\x01\\xd1\\x01\\xd2\\x01\\xf5\\x01\\xf6\\x02\\x01\\x02\\x02\\x02\\x40\\x02\\x4a\\x02\\x41\\x02\\x4b\\x02\\x5a\\x02\\x5b\\x02\\x6c\\x02\\x6d\\x02\\x90\\x02\\x92\\x02\\x94\\x02\\xf9\\x02\\x91\\x02\\x93\\x02\\x95\\x02\\xfa\\x02\\xfb\\x02\\xfc\\x02\\xfd\\x02\\xfe\\x02\\xff\\x03\\x00\\x02\\x98\\x02\\x9a\\x02\\x9c\\x03\\x01\\x02\\x99\\x02\\x9b\\x02\\x9d\\x03\\x02\\x03\\x03\\x03\\x04\\x03\\x05\\x03\\x06\\x03\\x07\\x03\\x08\\x02\\xa0\\x02\\xa2\\x02\\xa1\\x02\\xa3\\x02\\xa6\\x02\\xa8\\x02\\xa7\\x02\\xa9\\x02\\xac\\x02\\xae\\x02\\xb0\\x03\\x09\\x02\\xad\\x02\\xaf\\x02\\xb1\\x03\\x0a\\x03\\x0b\\x03\\x0c\\x03\\x0d\\x03\\x0e\\x03\\x0f\\x03\\x10\\x02\\xb4\\x02\\xb6\\x02\\xb8\\x03\\x11\\x02\\xb5\\x02\\xb7\\x02\\xb9\\x03\\x12\\x03\\x13\\x03\\x14\\x03\\x15\\x03\\x16\\x03\\x17\\x03\\x18\\x02\\xbc\\x02\\xbe\\x02\\xc0\\x02\\xbd\\x02\\xbf\\x02\\xc1\\x02\\xc4\\x02\\xc6\\x02\\xc8\\x02\\xc5\\x02\\xc7\\x02\\xc9\\x02\\xcc\\x02\\xce\\x02\\xcd\\x02\\xcf\\x02\\xd2\\x02\\xd4\\x02\\xd3\\x02\\xd5\\x02\\xd8\\x02\\xda\\x02\\xdc\\x02\\xd9\\x02\\xdb\\x02\\xdd\\x02\\xdf\\x02\\xe0\\x02\\xe1\\x02\\xe4\\x02\\xe6\\x02\\xe8\\x03\\x19\\x02\\xe5\\x02\\xe7\\x02\\xe9\\x03\\x1a\\x03\\x1b\\x03\\x1c\\x03\\x1d\\x03\\x1e\\x03\\x1f\\x03\\x20\\x02\\xec\\x02\\xee\\x02\\xf0\\x03\\x21\\x02\\xed\\x02\\xef\\x02\\xf1\\x03\\x22\\x03\\x23\\x03\\x24\\x03\\x25\\x03\\x26\\x03\\x27\\x03\\x28\\x03\\x2b\\x03\\x35\\x03\\x57\\x03\\x2f\\x03\\x3d\\x03\\x3e\\x03\\x3f\\x03\\x39\\x03\\x5b\\x03\\x48\\x03\\x49\\x03\\x4a\\x03\\x5f\\x03\\x60\\x03\\x61\\x03\\x62\\x03\\x64\\x03\\x63\\x03\\x65\\x03\\x66\\x03\\x67\\x03\\x68\\x03\\x69\\x03\\x6a\\x03\\x6b\\x03\\x6c\\x03\\x6d\\x03\\x70\\x03\\x6f\\x03\\x73\\x03\\x74\\x03\\x75\\x03\\x76\\x03\\x77\\x03\\x78\\x03\\x79\\x03\\x7a\\x03\\x83\\x03\\x84\\x03\\x7b\\x03\\x7c\\x03\\x7d\\x03\\x7e\\x03\\x85\\x03\\x86\\x03\\x7f\\x03\\x80\\x03\\x81\\x03\\x82\\x03\\x87\\x03\\x88\\x03\\x89\\x03\\x8a\\x03\\xa5\\x03\\x8c\\x03\\x8d\\x03\\x8e\\x03\\x8f\\x03\\x90\\x03\\x91\\x03\\x92\\x03\\x93\\x03\\x94\\x03\\x95\\x03\\x96\\x03\\x97\\x03\\x98\\x03\\x99\\x03\\x9a\\x03\\x9b\\x03\\x9c\\x03\\x9d\\x03\\x9e\\x03\\x9f\\x03\\xa0\\x03\\xa1\\x03\\xa2\\x03\\xa3\\x03\\xa4\\x03\\xa6\\x03\\xc0\\x03\\xa7\\x03\\xa8\\x03\\xa9\\x03\\xaa\\x03\\xab\\x03\\xac\\x03\\xad\\x03\\xae\\x03\\xaf\\x03\\xb0\\x03\\xb1\\x03\\xb2\\x03\\xb3\\x03\\xb4\\x03\\xb5\\x03\\xb6\\x03\\xb7\\x03\\xb8\\x03\\xb9\\x03\\xba\\x03\\xbb\\x03\\xbc\\x03\\xbd\\x03\\xbe\\x03\\xbf\\x03\\xc1\\x03\\xc2\\x03\\xc3\\x03\\xc4\\x03\\xc5\\x03\\xe8\\x03\\xe9\\x03\\xea\\x03\\xeb\\x03\\xec\\x03\\xed\\x03\\xee\\x03\\xef\\x03\\xf0\\x03\\xf1\\x03\\xf2\\x03\\xf3\\x03\\xf4\\x03\\xf6\\x03\\xf5\\x03\\xf7\\x03\\xf9\\x03\\xf8\\x03\\xfa\\x03\\xfb\\x03\\xfc\\x03\\xfd\\x03\\xfe\\x04\\x00\\x04\\x02\\x03\\xff\\x04\\x03\\x04\\x05\\x04\\x04\\x04\\x01\\x04\\x07\\x04\\x06\\x04\\x08"\n let mut low = usize.ZERO\n let mut high = usize.add(0, 961)\n while low < high {\n let middle = low + (high - low) / 2\n let record = pairRecord(read2(index, middle * 2) |> u32.toUsize)\n if first < record.first {\n high = middle\n } else {\n if record.first < first {\n low = middle + usize.ONE\n } else {\n if second < record.second {\n high = middle\n } else {\n if record.second < second { low = middle + usize.ONE } else { return record.composed }\n }\n }\n }\n }\n return 0\n}\n', + '//! Generated canonical-normalization data for the `silk.unicode` public façade.\n//!\n//! # When to use\n//! Application code should normally call `silk.unicode` rather than this backing module. These\n//! declarations are public so the ordinary Silk normalization implementation can read the pinned\n//! data without compiler privilege.\n//!\n//! # Details\n//! The tables come from Unicode 17.0.0, are packed as big-endian byte strings, and are searched\n//! with ordinary Silk functions. Regeneration may change their representation and record layout;\n//! the compiler gives neither this module nor its declaration names special treatment.\n//!\n//! # Gotchas\n//! A zero lookup result is a sentinel, not Unicode scalar U+0000. Hangul decomposition and\n//! composition are algorithmic and are not present in these tables.\n//!\n//! # Examples\n//! ## Read the canonical decomposition of é\n//! ```silk\n//! import silk.unicode_tables as UnicodeTables\n//!\n//! pub fn main() -> i32 {\n//! let decomposition = UnicodeTables.canonicalDecomposition(233)\n//! if decomposition.first != 101 || decomposition.second != 769 {\n//! return 0\n//! }\n//! return 42\n//! }\n//! ```\n//\n// Generated by scripts/generate-unicode-tables.mjs from the vendored Unicode 17.0.0 database.\n// Do not edit. Run: pnpm --filter @silk-lang/compiler unicode:generate\n\nimport silk.u32 as u32\nimport silk.u8 as u8\nimport silk.usize as usize\n\n/// One canonical decomposition with zero sentinels for an absent mapping or second scalar.\npub struct Decomposition {\n /// The first mapped scalar, or zero when the input has no table mapping.\n pub first: u32\n /// The second mapped scalar, or zero when the mapping contains one scalar.\n pub second: u32\n}\n\n/// One two-scalar canonical decomposition and its composed scalar.\npub struct PairRecord {\n /// The scalar whose canonical mapping is this pair.\n pub composed: u32\n /// First scalar of the canonical mapping.\n pub first: u32\n /// Second scalar of the canonical mapping.\n pub second: u32\n}\n\n/// Returns the Unicode data version that defines all lookup results in this module.\npub fn dataVersion() -> string {\n return "17.0.0"\n}\n\n/// Returns the longest full canonical decomposition of one scalar in these tables.\npub fn maximumDecompositionLength() -> usize {\n return 4\n}\n\nfn read2(data: &[u8], at: usize) -> u32 {\n return u8.toU32(data[at]) * 256 + u8.toU32(data[at + usize.ONE])\n}\n\nfn read3(data: &[u8], at: usize) -> u32 {\n return u8.toU32(data[at]) * 65536\n + u8.toU32(data[at + usize.ONE]) * 256\n + u8.toU32(data[at + 2])\n}\n\n/// Returns a scalar\'s canonical combining class, or zero for a starter or unknown value.\npub fn combiningClass(scalar: u32) -> u32 {\n let data = b"\\x00\\x03\\x00\\x14\\xe6\\x00\\x03\\x15\\x00\\xe8\\x00\\x03\\x16\\x03\\xdc\\x00\\x03\\x1a\\x00\\xe8\\x00\\x03\\x1b\\x00\\xd8\\x00\\x03\\x1c\\x04\\xdc\\x00\\x03\\x21\\x01\\xca\\x00\\x03\\x23\\x03\\xdc\\x00\\x03\\x27\\x01\\xca\\x00\\x03\\x29\\x0a\\xdc\\x00\\x03\\x34\\x04\\x01\\x00\\x03\\x39\\x03\\xdc\\x00\\x03\\x3d\\x07\\xe6\\x00\\x03\\x45\\x00\\xf0\\x00\\x03\\x46\\x00\\xe6\\x00\\x03\\x47\\x02\\xdc\\x00\\x03\\x4a\\x02\\xe6\\x00\\x03\\x4d\\x01\\xdc\\x00\\x03\\x50\\x02\\xe6\\x00\\x03\\x53\\x03\\xdc\\x00\\x03\\x57\\x00\\xe6\\x00\\x03\\x58\\x00\\xe8\\x00\\x03\\x59\\x01\\xdc\\x00\\x03\\x5b\\x00\\xe6\\x00\\x03\\x5c\\x00\\xe9\\x00\\x03\\x5d\\x01\\xea\\x00\\x03\\x5f\\x00\\xe9\\x00\\x03\\x60\\x01\\xea\\x00\\x03\\x62\\x00\\xe9\\x00\\x03\\x63\\x0c\\xe6\\x00\\x04\\x83\\x04\\xe6\\x00\\x05\\x91\\x00\\xdc\\x00\\x05\\x92\\x03\\xe6\\x00\\x05\\x96\\x00\\xdc\\x00\\x05\\x97\\x02\\xe6\\x00\\x05\\x9a\\x00\\xde\\x00\\x05\\x9b\\x00\\xdc\\x00\\x05\\x9c\\x05\\xe6\\x00\\x05\\xa2\\x05\\xdc\\x00\\x05\\xa8\\x01\\xe6\\x00\\x05\\xaa\\x00\\xdc\\x00\\x05\\xab\\x01\\xe6\\x00\\x05\\xad\\x00\\xde\\x00\\x05\\xae\\x00\\xe4\\x00\\x05\\xaf\\x00\\xe6\\x00\\x05\\xb0\\x00\\x0a\\x00\\x05\\xb1\\x00\\x0b\\x00\\x05\\xb2\\x00\\x0c\\x00\\x05\\xb3\\x00\\x0d\\x00\\x05\\xb4\\x00\\x0e\\x00\\x05\\xb5\\x00\\x0f\\x00\\x05\\xb6\\x00\\x10\\x00\\x05\\xb7\\x00\\x11\\x00\\x05\\xb8\\x00\\x12\\x00\\x05\\xb9\\x01\\x13\\x00\\x05\\xbb\\x00\\x14\\x00\\x05\\xbc\\x00\\x15\\x00\\x05\\xbd\\x00\\x16\\x00\\x05\\xbf\\x00\\x17\\x00\\x05\\xc1\\x00\\x18\\x00\\x05\\xc2\\x00\\x19\\x00\\x05\\xc4\\x00\\xe6\\x00\\x05\\xc5\\x00\\xdc\\x00\\x05\\xc7\\x00\\x12\\x00\\x06\\x10\\x07\\xe6\\x00\\x06\\x18\\x00\\x1e\\x00\\x06\\x19\\x00\\x1f\\x00\\x06\\x1a\\x00\\x20\\x00\\x06\\x4b\\x00\\x1b\\x00\\x06\\x4c\\x00\\x1c\\x00\\x06\\x4d\\x00\\x1d\\x00\\x06\\x4e\\x00\\x1e\\x00\\x06\\x4f\\x00\\x1f\\x00\\x06\\x50\\x00\\x20\\x00\\x06\\x51\\x00\\x21\\x00\\x06\\x52\\x00\\x22\\x00\\x06\\x53\\x01\\xe6\\x00\\x06\\x55\\x01\\xdc\\x00\\x06\\x57\\x04\\xe6\\x00\\x06\\x5c\\x00\\xdc\\x00\\x06\\x5d\\x01\\xe6\\x00\\x06\\x5f\\x00\\xdc\\x00\\x06\\x70\\x00\\x23\\x00\\x06\\xd6\\x06\\xe6\\x00\\x06\\xdf\\x03\\xe6\\x00\\x06\\xe3\\x00\\xdc\\x00\\x06\\xe4\\x00\\xe6\\x00\\x06\\xe7\\x01\\xe6\\x00\\x06\\xea\\x00\\xdc\\x00\\x06\\xeb\\x01\\xe6\\x00\\x06\\xed\\x00\\xdc\\x00\\x07\\x11\\x00\\x24\\x00\\x07\\x30\\x00\\xe6\\x00\\x07\\x31\\x00\\xdc\\x00\\x07\\x32\\x01\\xe6\\x00\\x07\\x34\\x00\\xdc\\x00\\x07\\x35\\x01\\xe6\\x00\\x07\\x37\\x02\\xdc\\x00\\x07\\x3a\\x00\\xe6\\x00\\x07\\x3b\\x01\\xdc\\x00\\x07\\x3d\\x00\\xe6\\x00\\x07\\x3e\\x00\\xdc\\x00\\x07\\x3f\\x02\\xe6\\x00\\x07\\x42\\x00\\xdc\\x00\\x07\\x43\\x00\\xe6\\x00\\x07\\x44\\x00\\xdc\\x00\\x07\\x45\\x00\\xe6\\x00\\x07\\x46\\x00\\xdc\\x00\\x07\\x47\\x00\\xe6\\x00\\x07\\x48\\x00\\xdc\\x00\\x07\\x49\\x01\\xe6\\x00\\x07\\xeb\\x06\\xe6\\x00\\x07\\xf2\\x00\\xdc\\x00\\x07\\xf3\\x00\\xe6\\x00\\x07\\xfd\\x00\\xdc\\x00\\x08\\x16\\x03\\xe6\\x00\\x08\\x1b\\x08\\xe6\\x00\\x08\\x25\\x02\\xe6\\x00\\x08\\x29\\x04\\xe6\\x00\\x08\\x59\\x02\\xdc\\x00\\x08\\x97\\x01\\xe6\\x00\\x08\\x99\\x02\\xdc\\x00\\x08\\x9c\\x03\\xe6\\x00\\x08\\xca\\x04\\xe6\\x00\\x08\\xcf\\x04\\xdc\\x00\\x08\\xd4\\x0d\\xe6\\x00\\x08\\xe3\\x00\\xdc\\x00\\x08\\xe4\\x01\\xe6\\x00\\x08\\xe6\\x00\\xdc\\x00\\x08\\xe7\\x01\\xe6\\x00\\x08\\xe9\\x00\\xdc\\x00\\x08\\xea\\x02\\xe6\\x00\\x08\\xed\\x02\\xdc\\x00\\x08\\xf0\\x00\\x1b\\x00\\x08\\xf1\\x00\\x1c\\x00\\x08\\xf2\\x00\\x1d\\x00\\x08\\xf3\\x02\\xe6\\x00\\x08\\xf6\\x00\\xdc\\x00\\x08\\xf7\\x01\\xe6\\x00\\x08\\xf9\\x01\\xdc\\x00\\x08\\xfb\\x04\\xe6\\x00\\x09\\x3c\\x00\\x07\\x00\\x09\\x4d\\x00\\x09\\x00\\x09\\x51\\x00\\xe6\\x00\\x09\\x52\\x00\\xdc\\x00\\x09\\x53\\x01\\xe6\\x00\\x09\\xbc\\x00\\x07\\x00\\x09\\xcd\\x00\\x09\\x00\\x09\\xfe\\x00\\xe6\\x00\\x0a\\x3c\\x00\\x07\\x00\\x0a\\x4d\\x00\\x09\\x00\\x0a\\xbc\\x00\\x07\\x00\\x0a\\xcd\\x00\\x09\\x00\\x0b\\x3c\\x00\\x07\\x00\\x0b\\x4d\\x00\\x09\\x00\\x0b\\xcd\\x00\\x09\\x00\\x0c\\x3c\\x00\\x07\\x00\\x0c\\x4d\\x00\\x09\\x00\\x0c\\x55\\x00\\x54\\x00\\x0c\\x56\\x00\\x5b\\x00\\x0c\\xbc\\x00\\x07\\x00\\x0c\\xcd\\x00\\x09\\x00\\x0d\\x3b\\x01\\x09\\x00\\x0d\\x4d\\x00\\x09\\x00\\x0d\\xca\\x00\\x09\\x00\\x0e\\x38\\x01\\x67\\x00\\x0e\\x3a\\x00\\x09\\x00\\x0e\\x48\\x03\\x6b\\x00\\x0e\\xb8\\x01\\x76\\x00\\x0e\\xba\\x00\\x09\\x00\\x0e\\xc8\\x03\\x7a\\x00\\x0f\\x18\\x01\\xdc\\x00\\x0f\\x35\\x00\\xdc\\x00\\x0f\\x37\\x00\\xdc\\x00\\x0f\\x39\\x00\\xd8\\x00\\x0f\\x71\\x00\\x81\\x00\\x0f\\x72\\x00\\x82\\x00\\x0f\\x74\\x00\\x84\\x00\\x0f\\x7a\\x03\\x82\\x00\\x0f\\x80\\x00\\x82\\x00\\x0f\\x82\\x01\\xe6\\x00\\x0f\\x84\\x00\\x09\\x00\\x0f\\x86\\x01\\xe6\\x00\\x0f\\xc6\\x00\\xdc\\x00\\x10\\x37\\x00\\x07\\x00\\x10\\x39\\x01\\x09\\x00\\x10\\x8d\\x00\\xdc\\x00\\x13\\x5d\\x02\\xe6\\x00\\x17\\x14\\x01\\x09\\x00\\x17\\x34\\x00\\x09\\x00\\x17\\xd2\\x00\\x09\\x00\\x17\\xdd\\x00\\xe6\\x00\\x18\\xa9\\x00\\xe4\\x00\\x19\\x39\\x00\\xde\\x00\\x19\\x3a\\x00\\xe6\\x00\\x19\\x3b\\x00\\xdc\\x00\\x1a\\x17\\x00\\xe6\\x00\\x1a\\x18\\x00\\xdc\\x00\\x1a\\x60\\x00\\x09\\x00\\x1a\\x75\\x07\\xe6\\x00\\x1a\\x7f\\x00\\xdc\\x00\\x1a\\xb0\\x04\\xe6\\x00\\x1a\\xb5\\x05\\xdc\\x00\\x1a\\xbb\\x01\\xe6\\x00\\x1a\\xbd\\x00\\xdc\\x00\\x1a\\xbf\\x01\\xdc\\x00\\x1a\\xc1\\x01\\xe6\\x00\\x1a\\xc3\\x01\\xdc\\x00\\x1a\\xc5\\x04\\xe6\\x00\\x1a\\xca\\x00\\xdc\\x00\\x1a\\xcb\\x03\\xe6\\x00\\x1b\\x34\\x00\\x07\\x00\\x1b\\x44\\x00\\x09\\x00\\x1b\\x6b\\x00\\xe6\\x00\\x1b\\x6c\\x00\\xdc\\x00\\x1b\\x6d\\x06\\xe6\\x00\\x1b\\xaa\\x01\\x09\\x00\\x1b\\xe6\\x00\\x07\\x00\\x1b\\xf2\\x01\\x09\\x00\\x1c\\x37\\x00\\x07\\x00\\x1c\\xd0\\x02\\xe6\\x00\\x1c\\xd4\\x00\\x01\\x00\\x1c\\xd5\\x04\\xdc\\x00\\x1c\\xda\\x01\\xe6\\x00\\x1c\\xdc\\x03\\xdc\\x00\\x1c\\xe0\\x00\\xe6\\x00\\x1c\\xe2\\x06\\x01\\x00\\x1c\\xed\\x00\\xdc\\x00\\x1c\\xf4\\x00\\xe6\\x00\\x1c\\xf8\\x01\\xe6\\x00\\x1d\\xc0\\x01\\xe6\\x00\\x1d\\xc2\\x00\\xdc\\x00\\x1d\\xc3\\x06\\xe6\\x00\\x1d\\xca\\x00\\xdc\\x00\\x1d\\xcb\\x01\\xe6\\x00\\x1d\\xcd\\x00\\xea\\x00\\x1d\\xce\\x00\\xd6\\x00\\x1d\\xcf\\x00\\xdc\\x00\\x1d\\xd0\\x00\\xca\\x00\\x1d\\xd1\\x24\\xe6\\x00\\x1d\\xf6\\x00\\xe8\\x00\\x1d\\xf7\\x01\\xe4\\x00\\x1d\\xf9\\x00\\xdc\\x00\\x1d\\xfa\\x00\\xda\\x00\\x1d\\xfb\\x00\\xe6\\x00\\x1d\\xfc\\x00\\xe9\\x00\\x1d\\xfd\\x00\\xdc\\x00\\x1d\\xfe\\x00\\xe6\\x00\\x1d\\xff\\x00\\xdc\\x00\\x20\\xd0\\x01\\xe6\\x00\\x20\\xd2\\x01\\x01\\x00\\x20\\xd4\\x03\\xe6\\x00\\x20\\xd8\\x02\\x01\\x00\\x20\\xdb\\x01\\xe6\\x00\\x20\\xe1\\x00\\xe6\\x00\\x20\\xe5\\x01\\x01\\x00\\x20\\xe7\\x00\\xe6\\x00\\x20\\xe8\\x00\\xdc\\x00\\x20\\xe9\\x00\\xe6\\x00\\x20\\xea\\x01\\x01\\x00\\x20\\xec\\x03\\xdc\\x00\\x20\\xf0\\x00\\xe6\\x00\\x2c\\xef\\x02\\xe6\\x00\\x2d\\x7f\\x00\\x09\\x00\\x2d\\xe0\\x1f\\xe6\\x00\\x30\\x2a\\x00\\xda\\x00\\x30\\x2b\\x00\\xe4\\x00\\x30\\x2c\\x00\\xe8\\x00\\x30\\x2d\\x00\\xde\\x00\\x30\\x2e\\x01\\xe0\\x00\\x30\\x99\\x01\\x08\\x00\\xa6\\x6f\\x00\\xe6\\x00\\xa6\\x74\\x09\\xe6\\x00\\xa6\\x9e\\x01\\xe6\\x00\\xa6\\xf0\\x01\\xe6\\x00\\xa8\\x06\\x00\\x09\\x00\\xa8\\x2c\\x00\\x09\\x00\\xa8\\xc4\\x00\\x09\\x00\\xa8\\xe0\\x11\\xe6\\x00\\xa9\\x2b\\x02\\xdc\\x00\\xa9\\x53\\x00\\x09\\x00\\xa9\\xb3\\x00\\x07\\x00\\xa9\\xc0\\x00\\x09\\x00\\xaa\\xb0\\x00\\xe6\\x00\\xaa\\xb2\\x01\\xe6\\x00\\xaa\\xb4\\x00\\xdc\\x00\\xaa\\xb7\\x01\\xe6\\x00\\xaa\\xbe\\x01\\xe6\\x00\\xaa\\xc1\\x00\\xe6\\x00\\xaa\\xf6\\x00\\x09\\x00\\xab\\xed\\x00\\x09\\x00\\xfb\\x1e\\x00\\x1a\\x00\\xfe\\x20\\x06\\xe6\\x00\\xfe\\x27\\x06\\xdc\\x00\\xfe\\x2e\\x01\\xe6\\x01\\x01\\xfd\\x00\\xdc\\x01\\x02\\xe0\\x00\\xdc\\x01\\x03\\x76\\x04\\xe6\\x01\\x0a\\x0d\\x00\\xdc\\x01\\x0a\\x0f\\x00\\xe6\\x01\\x0a\\x38\\x00\\xe6\\x01\\x0a\\x39\\x00\\x01\\x01\\x0a\\x3a\\x00\\xdc\\x01\\x0a\\x3f\\x00\\x09\\x01\\x0a\\xe5\\x00\\xe6\\x01\\x0a\\xe6\\x00\\xdc\\x01\\x0d\\x24\\x03\\xe6\\x01\\x0d\\x69\\x04\\xe6\\x01\\x0e\\xab\\x01\\xe6\\x01\\x0e\\xfd\\x02\\xdc\\x01\\x0f\\x46\\x01\\xdc\\x01\\x0f\\x48\\x02\\xe6\\x01\\x0f\\x4b\\x00\\xdc\\x01\\x0f\\x4c\\x00\\xe6\\x01\\x0f\\x4d\\x03\\xdc\\x01\\x0f\\x82\\x00\\xe6\\x01\\x0f\\x83\\x00\\xdc\\x01\\x0f\\x84\\x00\\xe6\\x01\\x0f\\x85\\x00\\xdc\\x01\\x10\\x46\\x00\\x09\\x01\\x10\\x70\\x00\\x09\\x01\\x10\\x7f\\x00\\x09\\x01\\x10\\xb9\\x00\\x09\\x01\\x10\\xba\\x00\\x07\\x01\\x11\\x00\\x02\\xe6\\x01\\x11\\x33\\x01\\x09\\x01\\x11\\x73\\x00\\x07\\x01\\x11\\xc0\\x00\\x09\\x01\\x11\\xca\\x00\\x07\\x01\\x12\\x35\\x00\\x09\\x01\\x12\\x36\\x00\\x07\\x01\\x12\\xe9\\x00\\x07\\x01\\x12\\xea\\x00\\x09\\x01\\x13\\x3b\\x01\\x07\\x01\\x13\\x4d\\x00\\x09\\x01\\x13\\x66\\x06\\xe6\\x01\\x13\\x70\\x04\\xe6\\x01\\x13\\xce\\x02\\x09\\x01\\x14\\x42\\x00\\x09\\x01\\x14\\x46\\x00\\x07\\x01\\x14\\x5e\\x00\\xe6\\x01\\x14\\xc2\\x00\\x09\\x01\\x14\\xc3\\x00\\x07\\x01\\x15\\xbf\\x00\\x09\\x01\\x15\\xc0\\x00\\x07\\x01\\x16\\x3f\\x00\\x09\\x01\\x16\\xb6\\x00\\x09\\x01\\x16\\xb7\\x00\\x07\\x01\\x17\\x2b\\x00\\x09\\x01\\x18\\x39\\x00\\x09\\x01\\x18\\x3a\\x00\\x07\\x01\\x19\\x3d\\x01\\x09\\x01\\x19\\x43\\x00\\x07\\x01\\x19\\xe0\\x00\\x09\\x01\\x1a\\x34\\x00\\x09\\x01\\x1a\\x47\\x00\\x09\\x01\\x1a\\x99\\x00\\x09\\x01\\x1c\\x3f\\x00\\x09\\x01\\x1d\\x42\\x00\\x07\\x01\\x1d\\x44\\x01\\x09\\x01\\x1d\\x97\\x00\\x09\\x01\\x1f\\x41\\x01\\x09\\x01\\x61\\x2f\\x00\\x09\\x01\\x6a\\xf0\\x04\\x01\\x01\\x6b\\x30\\x06\\xe6\\x01\\x6f\\xf0\\x01\\x06\\x01\\xbc\\x9e\\x00\\x01\\x01\\xd1\\x65\\x01\\xd8\\x01\\xd1\\x67\\x02\\x01\\x01\\xd1\\x6d\\x00\\xe2\\x01\\xd1\\x6e\\x04\\xd8\\x01\\xd1\\x7b\\x07\\xdc\\x01\\xd1\\x85\\x04\\xe6\\x01\\xd1\\x8a\\x01\\xdc\\x01\\xd1\\xaa\\x03\\xe6\\x01\\xd2\\x42\\x02\\xe6\\x01\\xe0\\x00\\x06\\xe6\\x01\\xe0\\x08\\x10\\xe6\\x01\\xe0\\x1b\\x06\\xe6\\x01\\xe0\\x23\\x01\\xe6\\x01\\xe0\\x26\\x04\\xe6\\x01\\xe0\\x8f\\x00\\xe6\\x01\\xe1\\x30\\x06\\xe6\\x01\\xe2\\xae\\x00\\xe6\\x01\\xe2\\xec\\x03\\xe6\\x01\\xe4\\xec\\x01\\xe8\\x01\\xe4\\xee\\x00\\xdc\\x01\\xe4\\xef\\x00\\xe6\\x01\\xe5\\xee\\x00\\xe6\\x01\\xe5\\xef\\x00\\xdc\\x01\\xe8\\xd0\\x06\\xdc\\x01\\xe9\\x44\\x05\\xe6\\x01\\xe9\\x4a\\x00\\x07"\n let mut low = usize.ZERO\n let mut high = usize.add(0, 393)\n while low < high {\n let middle = low + (high - low) / 2\n let at = middle * 5\n let start = read3(data, at)\n if scalar < start {\n high = middle\n } else {\n let count = u8.toU32(data[at + 3]) + 1\n if scalar < start + count { return u8.toU32(data[at + 4]) }\n low = middle + usize.ONE\n }\n }\n return 0\n}\n\n/// Returns the canonical decomposition of a scalar, or both components zero when it has none.\n/// Hangul syllables decompose algorithmically and are absent from this table by design.\npub fn canonicalDecomposition(scalar: u32) -> Decomposition {\n let singletons = b"\\x00\\x03\\x40\\x00\\x03\\x00\\x00\\x03\\x41\\x00\\x03\\x01\\x00\\x03\\x43\\x00\\x03\\x13\\x00\\x03\\x74\\x00\\x02\\xb9\\x00\\x03\\x7e\\x00\\x00\\x3b\\x00\\x03\\x87\\x00\\x00\\xb7\\x00\\x1f\\x71\\x00\\x03\\xac\\x00\\x1f\\x73\\x00\\x03\\xad\\x00\\x1f\\x75\\x00\\x03\\xae\\x00\\x1f\\x77\\x00\\x03\\xaf\\x00\\x1f\\x79\\x00\\x03\\xcc\\x00\\x1f\\x7b\\x00\\x03\\xcd\\x00\\x1f\\x7d\\x00\\x03\\xce\\x00\\x1f\\xbb\\x00\\x03\\x86\\x00\\x1f\\xbe\\x00\\x03\\xb9\\x00\\x1f\\xc9\\x00\\x03\\x88\\x00\\x1f\\xcb\\x00\\x03\\x89\\x00\\x1f\\xd3\\x00\\x03\\x90\\x00\\x1f\\xdb\\x00\\x03\\x8a\\x00\\x1f\\xe3\\x00\\x03\\xb0\\x00\\x1f\\xeb\\x00\\x03\\x8e\\x00\\x1f\\xee\\x00\\x03\\x85\\x00\\x1f\\xef\\x00\\x00\\x60\\x00\\x1f\\xf9\\x00\\x03\\x8c\\x00\\x1f\\xfb\\x00\\x03\\x8f\\x00\\x1f\\xfd\\x00\\x00\\xb4\\x00\\x20\\x00\\x00\\x20\\x02\\x00\\x20\\x01\\x00\\x20\\x03\\x00\\x21\\x26\\x00\\x03\\xa9\\x00\\x21\\x2a\\x00\\x00\\x4b\\x00\\x21\\x2b\\x00\\x00\\xc5\\x00\\x23\\x29\\x00\\x30\\x08\\x00\\x23\\x2a\\x00\\x30\\x09\\x00\\xf9\\x00\\x00\\x8c\\x48\\x00\\xf9\\x01\\x00\\x66\\xf4\\x00\\xf9\\x02\\x00\\x8e\\xca\\x00\\xf9\\x03\\x00\\x8c\\xc8\\x00\\xf9\\x04\\x00\\x6e\\xd1\\x00\\xf9\\x05\\x00\\x4e\\x32\\x00\\xf9\\x06\\x00\\x53\\xe5\\x00\\xf9\\x07\\x00\\x9f\\x9c\\x00\\xf9\\x08\\x00\\x9f\\x9c\\x00\\xf9\\x09\\x00\\x59\\x51\\x00\\xf9\\x0a\\x00\\x91\\xd1\\x00\\xf9\\x0b\\x00\\x55\\x87\\x00\\xf9\\x0c\\x00\\x59\\x48\\x00\\xf9\\x0d\\x00\\x61\\xf6\\x00\\xf9\\x0e\\x00\\x76\\x69\\x00\\xf9\\x0f\\x00\\x7f\\x85\\x00\\xf9\\x10\\x00\\x86\\x3f\\x00\\xf9\\x11\\x00\\x87\\xba\\x00\\xf9\\x12\\x00\\x88\\xf8\\x00\\xf9\\x13\\x00\\x90\\x8f\\x00\\xf9\\x14\\x00\\x6a\\x02\\x00\\xf9\\x15\\x00\\x6d\\x1b\\x00\\xf9\\x16\\x00\\x70\\xd9\\x00\\xf9\\x17\\x00\\x73\\xde\\x00\\xf9\\x18\\x00\\x84\\x3d\\x00\\xf9\\x19\\x00\\x91\\x6a\\x00\\xf9\\x1a\\x00\\x99\\xf1\\x00\\xf9\\x1b\\x00\\x4e\\x82\\x00\\xf9\\x1c\\x00\\x53\\x75\\x00\\xf9\\x1d\\x00\\x6b\\x04\\x00\\xf9\\x1e\\x00\\x72\\x1b\\x00\\xf9\\x1f\\x00\\x86\\x2d\\x00\\xf9\\x20\\x00\\x9e\\x1e\\x00\\xf9\\x21\\x00\\x5d\\x50\\x00\\xf9\\x22\\x00\\x6f\\xeb\\x00\\xf9\\x23\\x00\\x85\\xcd\\x00\\xf9\\x24\\x00\\x89\\x64\\x00\\xf9\\x25\\x00\\x62\\xc9\\x00\\xf9\\x26\\x00\\x81\\xd8\\x00\\xf9\\x27\\x00\\x88\\x1f\\x00\\xf9\\x28\\x00\\x5e\\xca\\x00\\xf9\\x29\\x00\\x67\\x17\\x00\\xf9\\x2a\\x00\\x6d\\x6a\\x00\\xf9\\x2b\\x00\\x72\\xfc\\x00\\xf9\\x2c\\x00\\x90\\xce\\x00\\xf9\\x2d\\x00\\x4f\\x86\\x00\\xf9\\x2e\\x00\\x51\\xb7\\x00\\xf9\\x2f\\x00\\x52\\xde\\x00\\xf9\\x30\\x00\\x64\\xc4\\x00\\xf9\\x31\\x00\\x6a\\xd3\\x00\\xf9\\x32\\x00\\x72\\x10\\x00\\xf9\\x33\\x00\\x76\\xe7\\x00\\xf9\\x34\\x00\\x80\\x01\\x00\\xf9\\x35\\x00\\x86\\x06\\x00\\xf9\\x36\\x00\\x86\\x5c\\x00\\xf9\\x37\\x00\\x8d\\xef\\x00\\xf9\\x38\\x00\\x97\\x32\\x00\\xf9\\x39\\x00\\x9b\\x6f\\x00\\xf9\\x3a\\x00\\x9d\\xfa\\x00\\xf9\\x3b\\x00\\x78\\x8c\\x00\\xf9\\x3c\\x00\\x79\\x7f\\x00\\xf9\\x3d\\x00\\x7d\\xa0\\x00\\xf9\\x3e\\x00\\x83\\xc9\\x00\\xf9\\x3f\\x00\\x93\\x04\\x00\\xf9\\x40\\x00\\x9e\\x7f\\x00\\xf9\\x41\\x00\\x8a\\xd6\\x00\\xf9\\x42\\x00\\x58\\xdf\\x00\\xf9\\x43\\x00\\x5f\\x04\\x00\\xf9\\x44\\x00\\x7c\\x60\\x00\\xf9\\x45\\x00\\x80\\x7e\\x00\\xf9\\x46\\x00\\x72\\x62\\x00\\xf9\\x47\\x00\\x78\\xca\\x00\\xf9\\x48\\x00\\x8c\\xc2\\x00\\xf9\\x49\\x00\\x96\\xf7\\x00\\xf9\\x4a\\x00\\x58\\xd8\\x00\\xf9\\x4b\\x00\\x5c\\x62\\x00\\xf9\\x4c\\x00\\x6a\\x13\\x00\\xf9\\x4d\\x00\\x6d\\xda\\x00\\xf9\\x4e\\x00\\x6f\\x0f\\x00\\xf9\\x4f\\x00\\x7d\\x2f\\x00\\xf9\\x50\\x00\\x7e\\x37\\x00\\xf9\\x51\\x00\\x96\\x4b\\x00\\xf9\\x52\\x00\\x52\\xd2\\x00\\xf9\\x53\\x00\\x80\\x8b\\x00\\xf9\\x54\\x00\\x51\\xdc\\x00\\xf9\\x55\\x00\\x51\\xcc\\x00\\xf9\\x56\\x00\\x7a\\x1c\\x00\\xf9\\x57\\x00\\x7d\\xbe\\x00\\xf9\\x58\\x00\\x83\\xf1\\x00\\xf9\\x59\\x00\\x96\\x75\\x00\\xf9\\x5a\\x00\\x8b\\x80\\x00\\xf9\\x5b\\x00\\x62\\xcf\\x00\\xf9\\x5c\\x00\\x6a\\x02\\x00\\xf9\\x5d\\x00\\x8a\\xfe\\x00\\xf9\\x5e\\x00\\x4e\\x39\\x00\\xf9\\x5f\\x00\\x5b\\xe7\\x00\\xf9\\x60\\x00\\x60\\x12\\x00\\xf9\\x61\\x00\\x73\\x87\\x00\\xf9\\x62\\x00\\x75\\x70\\x00\\xf9\\x63\\x00\\x53\\x17\\x00\\xf9\\x64\\x00\\x78\\xfb\\x00\\xf9\\x65\\x00\\x4f\\xbf\\x00\\xf9\\x66\\x00\\x5f\\xa9\\x00\\xf9\\x67\\x00\\x4e\\x0d\\x00\\xf9\\x68\\x00\\x6c\\xcc\\x00\\xf9\\x69\\x00\\x65\\x78\\x00\\xf9\\x6a\\x00\\x7d\\x22\\x00\\xf9\\x6b\\x00\\x53\\xc3\\x00\\xf9\\x6c\\x00\\x58\\x5e\\x00\\xf9\\x6d\\x00\\x77\\x01\\x00\\xf9\\x6e\\x00\\x84\\x49\\x00\\xf9\\x6f\\x00\\x8a\\xaa\\x00\\xf9\\x70\\x00\\x6b\\xba\\x00\\xf9\\x71\\x00\\x8f\\xb0\\x00\\xf9\\x72\\x00\\x6c\\x88\\x00\\xf9\\x73\\x00\\x62\\xfe\\x00\\xf9\\x74\\x00\\x82\\xe5\\x00\\xf9\\x75\\x00\\x63\\xa0\\x00\\xf9\\x76\\x00\\x75\\x65\\x00\\xf9\\x77\\x00\\x4e\\xae\\x00\\xf9\\x78\\x00\\x51\\x69\\x00\\xf9\\x79\\x00\\x51\\xc9\\x00\\xf9\\x7a\\x00\\x68\\x81\\x00\\xf9\\x7b\\x00\\x7c\\xe7\\x00\\xf9\\x7c\\x00\\x82\\x6f\\x00\\xf9\\x7d\\x00\\x8a\\xd2\\x00\\xf9\\x7e\\x00\\x91\\xcf\\x00\\xf9\\x7f\\x00\\x52\\xf5\\x00\\xf9\\x80\\x00\\x54\\x42\\x00\\xf9\\x81\\x00\\x59\\x73\\x00\\xf9\\x82\\x00\\x5e\\xec\\x00\\xf9\\x83\\x00\\x65\\xc5\\x00\\xf9\\x84\\x00\\x6f\\xfe\\x00\\xf9\\x85\\x00\\x79\\x2a\\x00\\xf9\\x86\\x00\\x95\\xad\\x00\\xf9\\x87\\x00\\x9a\\x6a\\x00\\xf9\\x88\\x00\\x9e\\x97\\x00\\xf9\\x89\\x00\\x9e\\xce\\x00\\xf9\\x8a\\x00\\x52\\x9b\\x00\\xf9\\x8b\\x00\\x66\\xc6\\x00\\xf9\\x8c\\x00\\x6b\\x77\\x00\\xf9\\x8d\\x00\\x8f\\x62\\x00\\xf9\\x8e\\x00\\x5e\\x74\\x00\\xf9\\x8f\\x00\\x61\\x90\\x00\\xf9\\x90\\x00\\x62\\x00\\x00\\xf9\\x91\\x00\\x64\\x9a\\x00\\xf9\\x92\\x00\\x6f\\x23\\x00\\xf9\\x93\\x00\\x71\\x49\\x00\\xf9\\x94\\x00\\x74\\x89\\x00\\xf9\\x95\\x00\\x79\\xca\\x00\\xf9\\x96\\x00\\x7d\\xf4\\x00\\xf9\\x97\\x00\\x80\\x6f\\x00\\xf9\\x98\\x00\\x8f\\x26\\x00\\xf9\\x99\\x00\\x84\\xee\\x00\\xf9\\x9a\\x00\\x90\\x23\\x00\\xf9\\x9b\\x00\\x93\\x4a\\x00\\xf9\\x9c\\x00\\x52\\x17\\x00\\xf9\\x9d\\x00\\x52\\xa3\\x00\\xf9\\x9e\\x00\\x54\\xbd\\x00\\xf9\\x9f\\x00\\x70\\xc8\\x00\\xf9\\xa0\\x00\\x88\\xc2\\x00\\xf9\\xa1\\x00\\x8a\\xaa\\x00\\xf9\\xa2\\x00\\x5e\\xc9\\x00\\xf9\\xa3\\x00\\x5f\\xf5\\x00\\xf9\\xa4\\x00\\x63\\x7b\\x00\\xf9\\xa5\\x00\\x6b\\xae\\x00\\xf9\\xa6\\x00\\x7c\\x3e\\x00\\xf9\\xa7\\x00\\x73\\x75\\x00\\xf9\\xa8\\x00\\x4e\\xe4\\x00\\xf9\\xa9\\x00\\x56\\xf9\\x00\\xf9\\xaa\\x00\\x5b\\xe7\\x00\\xf9\\xab\\x00\\x5d\\xba\\x00\\xf9\\xac\\x00\\x60\\x1c\\x00\\xf9\\xad\\x00\\x73\\xb2\\x00\\xf9\\xae\\x00\\x74\\x69\\x00\\xf9\\xaf\\x00\\x7f\\x9a\\x00\\xf9\\xb0\\x00\\x80\\x46\\x00\\xf9\\xb1\\x00\\x92\\x34\\x00\\xf9\\xb2\\x00\\x96\\xf6\\x00\\xf9\\xb3\\x00\\x97\\x48\\x00\\xf9\\xb4\\x00\\x98\\x18\\x00\\xf9\\xb5\\x00\\x4f\\x8b\\x00\\xf9\\xb6\\x00\\x79\\xae\\x00\\xf9\\xb7\\x00\\x91\\xb4\\x00\\xf9\\xb8\\x00\\x96\\xb8\\x00\\xf9\\xb9\\x00\\x60\\xe1\\x00\\xf9\\xba\\x00\\x4e\\x86\\x00\\xf9\\xbb\\x00\\x50\\xda\\x00\\xf9\\xbc\\x00\\x5b\\xee\\x00\\xf9\\xbd\\x00\\x5c\\x3f\\x00\\xf9\\xbe\\x00\\x65\\x99\\x00\\xf9\\xbf\\x00\\x6a\\x02\\x00\\xf9\\xc0\\x00\\x71\\xce\\x00\\xf9\\xc1\\x00\\x76\\x42\\x00\\xf9\\xc2\\x00\\x84\\xfc\\x00\\xf9\\xc3\\x00\\x90\\x7c\\x00\\xf9\\xc4\\x00\\x9f\\x8d\\x00\\xf9\\xc5\\x00\\x66\\x88\\x00\\xf9\\xc6\\x00\\x96\\x2e\\x00\\xf9\\xc7\\x00\\x52\\x89\\x00\\xf9\\xc8\\x00\\x67\\x7b\\x00\\xf9\\xc9\\x00\\x67\\xf3\\x00\\xf9\\xca\\x00\\x6d\\x41\\x00\\xf9\\xcb\\x00\\x6e\\x9c\\x00\\xf9\\xcc\\x00\\x74\\x09\\x00\\xf9\\xcd\\x00\\x75\\x59\\x00\\xf9\\xce\\x00\\x78\\x6b\\x00\\xf9\\xcf\\x00\\x7d\\x10\\x00\\xf9\\xd0\\x00\\x98\\x5e\\x00\\xf9\\xd1\\x00\\x51\\x6d\\x00\\xf9\\xd2\\x00\\x62\\x2e\\x00\\xf9\\xd3\\x00\\x96\\x78\\x00\\xf9\\xd4\\x00\\x50\\x2b\\x00\\xf9\\xd5\\x00\\x5d\\x19\\x00\\xf9\\xd6\\x00\\x6d\\xea\\x00\\xf9\\xd7\\x00\\x8f\\x2a\\x00\\xf9\\xd8\\x00\\x5f\\x8b\\x00\\xf9\\xd9\\x00\\x61\\x44\\x00\\xf9\\xda\\x00\\x68\\x17\\x00\\xf9\\xdb\\x00\\x73\\x87\\x00\\xf9\\xdc\\x00\\x96\\x86\\x00\\xf9\\xdd\\x00\\x52\\x29\\x00\\xf9\\xde\\x00\\x54\\x0f\\x00\\xf9\\xdf\\x00\\x5c\\x65\\x00\\xf9\\xe0\\x00\\x66\\x13\\x00\\xf9\\xe1\\x00\\x67\\x4e\\x00\\xf9\\xe2\\x00\\x68\\xa8\\x00\\xf9\\xe3\\x00\\x6c\\xe5\\x00\\xf9\\xe4\\x00\\x74\\x06\\x00\\xf9\\xe5\\x00\\x75\\xe2\\x00\\xf9\\xe6\\x00\\x7f\\x79\\x00\\xf9\\xe7\\x00\\x88\\xcf\\x00\\xf9\\xe8\\x00\\x88\\xe1\\x00\\xf9\\xe9\\x00\\x91\\xcc\\x00\\xf9\\xea\\x00\\x96\\xe2\\x00\\xf9\\xeb\\x00\\x53\\x3f\\x00\\xf9\\xec\\x00\\x6e\\xba\\x00\\xf9\\xed\\x00\\x54\\x1d\\x00\\xf9\\xee\\x00\\x71\\xd0\\x00\\xf9\\xef\\x00\\x74\\x98\\x00\\xf9\\xf0\\x00\\x85\\xfa\\x00\\xf9\\xf1\\x00\\x96\\xa3\\x00\\xf9\\xf2\\x00\\x9c\\x57\\x00\\xf9\\xf3\\x00\\x9e\\x9f\\x00\\xf9\\xf4\\x00\\x67\\x97\\x00\\xf9\\xf5\\x00\\x6d\\xcb\\x00\\xf9\\xf6\\x00\\x81\\xe8\\x00\\xf9\\xf7\\x00\\x7a\\xcb\\x00\\xf9\\xf8\\x00\\x7b\\x20\\x00\\xf9\\xf9\\x00\\x7c\\x92\\x00\\xf9\\xfa\\x00\\x72\\xc0\\x00\\xf9\\xfb\\x00\\x70\\x99\\x00\\xf9\\xfc\\x00\\x8b\\x58\\x00\\xf9\\xfd\\x00\\x4e\\xc0\\x00\\xf9\\xfe\\x00\\x83\\x36\\x00\\xf9\\xff\\x00\\x52\\x3a\\x00\\xfa\\x00\\x00\\x52\\x07\\x00\\xfa\\x01\\x00\\x5e\\xa6\\x00\\xfa\\x02\\x00\\x62\\xd3\\x00\\xfa\\x03\\x00\\x7c\\xd6\\x00\\xfa\\x04\\x00\\x5b\\x85\\x00\\xfa\\x05\\x00\\x6d\\x1e\\x00\\xfa\\x06\\x00\\x66\\xb4\\x00\\xfa\\x07\\x00\\x8f\\x3b\\x00\\xfa\\x08\\x00\\x88\\x4c\\x00\\xfa\\x09\\x00\\x96\\x4d\\x00\\xfa\\x0a\\x00\\x89\\x8b\\x00\\xfa\\x0b\\x00\\x5e\\xd3\\x00\\xfa\\x0c\\x00\\x51\\x40\\x00\\xfa\\x0d\\x00\\x55\\xc0\\x00\\xfa\\x10\\x00\\x58\\x5a\\x00\\xfa\\x12\\x00\\x66\\x74\\x00\\xfa\\x15\\x00\\x51\\xde\\x00\\xfa\\x16\\x00\\x73\\x2a\\x00\\xfa\\x17\\x00\\x76\\xca\\x00\\xfa\\x18\\x00\\x79\\x3c\\x00\\xfa\\x19\\x00\\x79\\x5e\\x00\\xfa\\x1a\\x00\\x79\\x65\\x00\\xfa\\x1b\\x00\\x79\\x8f\\x00\\xfa\\x1c\\x00\\x97\\x56\\x00\\xfa\\x1d\\x00\\x7c\\xbe\\x00\\xfa\\x1e\\x00\\x7f\\xbd\\x00\\xfa\\x20\\x00\\x86\\x12\\x00\\xfa\\x22\\x00\\x8a\\xf8\\x00\\xfa\\x25\\x00\\x90\\x38\\x00\\xfa\\x26\\x00\\x90\\xfd\\x00\\xfa\\x2a\\x00\\x98\\xef\\x00\\xfa\\x2b\\x00\\x98\\xfc\\x00\\xfa\\x2c\\x00\\x99\\x28\\x00\\xfa\\x2d\\x00\\x9d\\xb4\\x00\\xfa\\x2e\\x00\\x90\\xde\\x00\\xfa\\x2f\\x00\\x96\\xb7\\x00\\xfa\\x30\\x00\\x4f\\xae\\x00\\xfa\\x31\\x00\\x50\\xe7\\x00\\xfa\\x32\\x00\\x51\\x4d\\x00\\xfa\\x33\\x00\\x52\\xc9\\x00\\xfa\\x34\\x00\\x52\\xe4\\x00\\xfa\\x35\\x00\\x53\\x51\\x00\\xfa\\x36\\x00\\x55\\x9d\\x00\\xfa\\x37\\x00\\x56\\x06\\x00\\xfa\\x38\\x00\\x56\\x68\\x00\\xfa\\x39\\x00\\x58\\x40\\x00\\xfa\\x3a\\x00\\x58\\xa8\\x00\\xfa\\x3b\\x00\\x5c\\x64\\x00\\xfa\\x3c\\x00\\x5c\\x6e\\x00\\xfa\\x3d\\x00\\x60\\x94\\x00\\xfa\\x3e\\x00\\x61\\x68\\x00\\xfa\\x3f\\x00\\x61\\x8e\\x00\\xfa\\x40\\x00\\x61\\xf2\\x00\\xfa\\x41\\x00\\x65\\x4f\\x00\\xfa\\x42\\x00\\x65\\xe2\\x00\\xfa\\x43\\x00\\x66\\x91\\x00\\xfa\\x44\\x00\\x68\\x85\\x00\\xfa\\x45\\x00\\x6d\\x77\\x00\\xfa\\x46\\x00\\x6e\\x1a\\x00\\xfa\\x47\\x00\\x6f\\x22\\x00\\xfa\\x48\\x00\\x71\\x6e\\x00\\xfa\\x49\\x00\\x72\\x2b\\x00\\xfa\\x4a\\x00\\x74\\x22\\x00\\xfa\\x4b\\x00\\x78\\x91\\x00\\xfa\\x4c\\x00\\x79\\x3e\\x00\\xfa\\x4d\\x00\\x79\\x49\\x00\\xfa\\x4e\\x00\\x79\\x48\\x00\\xfa\\x4f\\x00\\x79\\x50\\x00\\xfa\\x50\\x00\\x79\\x56\\x00\\xfa\\x51\\x00\\x79\\x5d\\x00\\xfa\\x52\\x00\\x79\\x8d\\x00\\xfa\\x53\\x00\\x79\\x8e\\x00\\xfa\\x54\\x00\\x7a\\x40\\x00\\xfa\\x55\\x00\\x7a\\x81\\x00\\xfa\\x56\\x00\\x7b\\xc0\\x00\\xfa\\x57\\x00\\x7d\\xf4\\x00\\xfa\\x58\\x00\\x7e\\x09\\x00\\xfa\\x59\\x00\\x7e\\x41\\x00\\xfa\\x5a\\x00\\x7f\\x72\\x00\\xfa\\x5b\\x00\\x80\\x05\\x00\\xfa\\x5c\\x00\\x81\\xed\\x00\\xfa\\x5d\\x00\\x82\\x79\\x00\\xfa\\x5e\\x00\\x82\\x79\\x00\\xfa\\x5f\\x00\\x84\\x57\\x00\\xfa\\x60\\x00\\x89\\x10\\x00\\xfa\\x61\\x00\\x89\\x96\\x00\\xfa\\x62\\x00\\x8b\\x01\\x00\\xfa\\x63\\x00\\x8b\\x39\\x00\\xfa\\x64\\x00\\x8c\\xd3\\x00\\xfa\\x65\\x00\\x8d\\x08\\x00\\xfa\\x66\\x00\\x8f\\xb6\\x00\\xfa\\x67\\x00\\x90\\x38\\x00\\xfa\\x68\\x00\\x96\\xe3\\x00\\xfa\\x69\\x00\\x97\\xff\\x00\\xfa\\x6a\\x00\\x98\\x3b\\x00\\xfa\\x6b\\x00\\x60\\x75\\x00\\xfa\\x6c\\x02\\x42\\xee\\x00\\xfa\\x6d\\x00\\x82\\x18\\x00\\xfa\\x70\\x00\\x4e\\x26\\x00\\xfa\\x71\\x00\\x51\\xb5\\x00\\xfa\\x72\\x00\\x51\\x68\\x00\\xfa\\x73\\x00\\x4f\\x80\\x00\\xfa\\x74\\x00\\x51\\x45\\x00\\xfa\\x75\\x00\\x51\\x80\\x00\\xfa\\x76\\x00\\x52\\xc7\\x00\\xfa\\x77\\x00\\x52\\xfa\\x00\\xfa\\x78\\x00\\x55\\x9d\\x00\\xfa\\x79\\x00\\x55\\x55\\x00\\xfa\\x7a\\x00\\x55\\x99\\x00\\xfa\\x7b\\x00\\x55\\xe2\\x00\\xfa\\x7c\\x00\\x58\\x5a\\x00\\xfa\\x7d\\x00\\x58\\xb3\\x00\\xfa\\x7e\\x00\\x59\\x44\\x00\\xfa\\x7f\\x00\\x59\\x54\\x00\\xfa\\x80\\x00\\x5a\\x62\\x00\\xfa\\x81\\x00\\x5b\\x28\\x00\\xfa\\x82\\x00\\x5e\\xd2\\x00\\xfa\\x83\\x00\\x5e\\xd9\\x00\\xfa\\x84\\x00\\x5f\\x69\\x00\\xfa\\x85\\x00\\x5f\\xad\\x00\\xfa\\x86\\x00\\x60\\xd8\\x00\\xfa\\x87\\x00\\x61\\x4e\\x00\\xfa\\x88\\x00\\x61\\x08\\x00\\xfa\\x89\\x00\\x61\\x8e\\x00\\xfa\\x8a\\x00\\x61\\x60\\x00\\xfa\\x8b\\x00\\x61\\xf2\\x00\\xfa\\x8c\\x00\\x62\\x34\\x00\\xfa\\x8d\\x00\\x63\\xc4\\x00\\xfa\\x8e\\x00\\x64\\x1c\\x00\\xfa\\x8f\\x00\\x64\\x52\\x00\\xfa\\x90\\x00\\x65\\x56\\x00\\xfa\\x91\\x00\\x66\\x74\\x00\\xfa\\x92\\x00\\x67\\x17\\x00\\xfa\\x93\\x00\\x67\\x1b\\x00\\xfa\\x94\\x00\\x67\\x56\\x00\\xfa\\x95\\x00\\x6b\\x79\\x00\\xfa\\x96\\x00\\x6b\\xba\\x00\\xfa\\x97\\x00\\x6d\\x41\\x00\\xfa\\x98\\x00\\x6e\\xdb\\x00\\xfa\\x99\\x00\\x6e\\xcb\\x00\\xfa\\x9a\\x00\\x6f\\x22\\x00\\xfa\\x9b\\x00\\x70\\x1e\\x00\\xfa\\x9c\\x00\\x71\\x6e\\x00\\xfa\\x9d\\x00\\x77\\xa7\\x00\\xfa\\x9e\\x00\\x72\\x35\\x00\\xfa\\x9f\\x00\\x72\\xaf\\x00\\xfa\\xa0\\x00\\x73\\x2a\\x00\\xfa\\xa1\\x00\\x74\\x71\\x00\\xfa\\xa2\\x00\\x75\\x06\\x00\\xfa\\xa3\\x00\\x75\\x3b\\x00\\xfa\\xa4\\x00\\x76\\x1d\\x00\\xfa\\xa5\\x00\\x76\\x1f\\x00\\xfa\\xa6\\x00\\x76\\xca\\x00\\xfa\\xa7\\x00\\x76\\xdb\\x00\\xfa\\xa8\\x00\\x76\\xf4\\x00\\xfa\\xa9\\x00\\x77\\x4a\\x00\\xfa\\xaa\\x00\\x77\\x40\\x00\\xfa\\xab\\x00\\x78\\xcc\\x00\\xfa\\xac\\x00\\x7a\\xb1\\x00\\xfa\\xad\\x00\\x7b\\xc0\\x00\\xfa\\xae\\x00\\x7c\\x7b\\x00\\xfa\\xaf\\x00\\x7d\\x5b\\x00\\xfa\\xb0\\x00\\x7d\\xf4\\x00\\xfa\\xb1\\x00\\x7f\\x3e\\x00\\xfa\\xb2\\x00\\x80\\x05\\x00\\xfa\\xb3\\x00\\x83\\x52\\x00\\xfa\\xb4\\x00\\x83\\xef\\x00\\xfa\\xb5\\x00\\x87\\x79\\x00\\xfa\\xb6\\x00\\x89\\x41\\x00\\xfa\\xb7\\x00\\x89\\x86\\x00\\xfa\\xb8\\x00\\x89\\x96\\x00\\xfa\\xb9\\x00\\x8a\\xbf\\x00\\xfa\\xba\\x00\\x8a\\xf8\\x00\\xfa\\xbb\\x00\\x8a\\xcb\\x00\\xfa\\xbc\\x00\\x8b\\x01\\x00\\xfa\\xbd\\x00\\x8a\\xfe\\x00\\xfa\\xbe\\x00\\x8a\\xed\\x00\\xfa\\xbf\\x00\\x8b\\x39\\x00\\xfa\\xc0\\x00\\x8b\\x8a\\x00\\xfa\\xc1\\x00\\x8d\\x08\\x00\\xfa\\xc2\\x00\\x8f\\x38\\x00\\xfa\\xc3\\x00\\x90\\x72\\x00\\xfa\\xc4\\x00\\x91\\x99\\x00\\xfa\\xc5\\x00\\x92\\x76\\x00\\xfa\\xc6\\x00\\x96\\x7c\\x00\\xfa\\xc7\\x00\\x96\\xe3\\x00\\xfa\\xc8\\x00\\x97\\x56\\x00\\xfa\\xc9\\x00\\x97\\xdb\\x00\\xfa\\xca\\x00\\x97\\xff\\x00\\xfa\\xcb\\x00\\x98\\x0b\\x00\\xfa\\xcc\\x00\\x98\\x3b\\x00\\xfa\\xcd\\x00\\x9b\\x12\\x00\\xfa\\xce\\x00\\x9f\\x9c\\x00\\xfa\\xcf\\x02\\x28\\x4a\\x00\\xfa\\xd0\\x02\\x28\\x44\\x00\\xfa\\xd1\\x02\\x33\\xd5\\x00\\xfa\\xd2\\x00\\x3b\\x9d\\x00\\xfa\\xd3\\x00\\x40\\x18\\x00\\xfa\\xd4\\x00\\x40\\x39\\x00\\xfa\\xd5\\x02\\x52\\x49\\x00\\xfa\\xd6\\x02\\x5c\\xd0\\x00\\xfa\\xd7\\x02\\x7e\\xd3\\x00\\xfa\\xd8\\x00\\x9f\\x43\\x00\\xfa\\xd9\\x00\\x9f\\x8e\\x02\\xf8\\x00\\x00\\x4e\\x3d\\x02\\xf8\\x01\\x00\\x4e\\x38\\x02\\xf8\\x02\\x00\\x4e\\x41\\x02\\xf8\\x03\\x02\\x01\\x22\\x02\\xf8\\x04\\x00\\x4f\\x60\\x02\\xf8\\x05\\x00\\x4f\\xae\\x02\\xf8\\x06\\x00\\x4f\\xbb\\x02\\xf8\\x07\\x00\\x50\\x02\\x02\\xf8\\x08\\x00\\x50\\x7a\\x02\\xf8\\x09\\x00\\x50\\x99\\x02\\xf8\\x0a\\x00\\x50\\xe7\\x02\\xf8\\x0b\\x00\\x50\\xcf\\x02\\xf8\\x0c\\x00\\x34\\x9e\\x02\\xf8\\x0d\\x02\\x06\\x3a\\x02\\xf8\\x0e\\x00\\x51\\x4d\\x02\\xf8\\x0f\\x00\\x51\\x54\\x02\\xf8\\x10\\x00\\x51\\x64\\x02\\xf8\\x11\\x00\\x51\\x77\\x02\\xf8\\x12\\x02\\x05\\x1c\\x02\\xf8\\x13\\x00\\x34\\xb9\\x02\\xf8\\x14\\x00\\x51\\x67\\x02\\xf8\\x15\\x00\\x51\\x8d\\x02\\xf8\\x16\\x02\\x05\\x4b\\x02\\xf8\\x17\\x00\\x51\\x97\\x02\\xf8\\x18\\x00\\x51\\xa4\\x02\\xf8\\x19\\x00\\x4e\\xcc\\x02\\xf8\\x1a\\x00\\x51\\xac\\x02\\xf8\\x1b\\x00\\x51\\xb5\\x02\\xf8\\x1c\\x02\\x91\\xdf\\x02\\xf8\\x1d\\x00\\x51\\xf5\\x02\\xf8\\x1e\\x00\\x52\\x03\\x02\\xf8\\x1f\\x00\\x34\\xdf\\x02\\xf8\\x20\\x00\\x52\\x3b\\x02\\xf8\\x21\\x00\\x52\\x46\\x02\\xf8\\x22\\x00\\x52\\x72\\x02\\xf8\\x23\\x00\\x52\\x77\\x02\\xf8\\x24\\x00\\x35\\x15\\x02\\xf8\\x25\\x00\\x52\\xc7\\x02\\xf8\\x26\\x00\\x52\\xc9\\x02\\xf8\\x27\\x00\\x52\\xe4\\x02\\xf8\\x28\\x00\\x52\\xfa\\x02\\xf8\\x29\\x00\\x53\\x05\\x02\\xf8\\x2a\\x00\\x53\\x06\\x02\\xf8\\x2b\\x00\\x53\\x17\\x02\\xf8\\x2c\\x00\\x53\\x49\\x02\\xf8\\x2d\\x00\\x53\\x51\\x02\\xf8\\x2e\\x00\\x53\\x5a\\x02\\xf8\\x2f\\x00\\x53\\x73\\x02\\xf8\\x30\\x00\\x53\\x7d\\x02\\xf8\\x31\\x00\\x53\\x7f\\x02\\xf8\\x32\\x00\\x53\\x7f\\x02\\xf8\\x33\\x00\\x53\\x7f\\x02\\xf8\\x34\\x02\\x0a\\x2c\\x02\\xf8\\x35\\x00\\x70\\x70\\x02\\xf8\\x36\\x00\\x53\\xca\\x02\\xf8\\x37\\x00\\x53\\xdf\\x02\\xf8\\x38\\x02\\x0b\\x63\\x02\\xf8\\x39\\x00\\x53\\xeb\\x02\\xf8\\x3a\\x00\\x53\\xf1\\x02\\xf8\\x3b\\x00\\x54\\x06\\x02\\xf8\\x3c\\x00\\x54\\x9e\\x02\\xf8\\x3d\\x00\\x54\\x38\\x02\\xf8\\x3e\\x00\\x54\\x48\\x02\\xf8\\x3f\\x00\\x54\\x68\\x02\\xf8\\x40\\x00\\x54\\xa2\\x02\\xf8\\x41\\x00\\x54\\xf6\\x02\\xf8\\x42\\x00\\x55\\x10\\x02\\xf8\\x43\\x00\\x55\\x53\\x02\\xf8\\x44\\x00\\x55\\x63\\x02\\xf8\\x45\\x00\\x55\\x84\\x02\\xf8\\x46\\x00\\x55\\x84\\x02\\xf8\\x47\\x00\\x55\\x99\\x02\\xf8\\x48\\x00\\x55\\xab\\x02\\xf8\\x49\\x00\\x55\\xb3\\x02\\xf8\\x4a\\x00\\x55\\xc2\\x02\\xf8\\x4b\\x00\\x57\\x16\\x02\\xf8\\x4c\\x00\\x56\\x06\\x02\\xf8\\x4d\\x00\\x57\\x17\\x02\\xf8\\x4e\\x00\\x56\\x51\\x02\\xf8\\x4f\\x00\\x56\\x74\\x02\\xf8\\x50\\x00\\x52\\x07\\x02\\xf8\\x51\\x00\\x58\\xee\\x02\\xf8\\x52\\x00\\x57\\xce\\x02\\xf8\\x53\\x00\\x57\\xf4\\x02\\xf8\\x54\\x00\\x58\\x0d\\x02\\xf8\\x55\\x00\\x57\\x8b\\x02\\xf8\\x56\\x00\\x58\\x32\\x02\\xf8\\x57\\x00\\x58\\x31\\x02\\xf8\\x58\\x00\\x58\\xac\\x02\\xf8\\x59\\x02\\x14\\xe4\\x02\\xf8\\x5a\\x00\\x58\\xf2\\x02\\xf8\\x5b\\x00\\x58\\xf7\\x02\\xf8\\x5c\\x00\\x59\\x06\\x02\\xf8\\x5d\\x00\\x59\\x1a\\x02\\xf8\\x5e\\x00\\x59\\x22\\x02\\xf8\\x5f\\x00\\x59\\x62\\x02\\xf8\\x60\\x02\\x16\\xa8\\x02\\xf8\\x61\\x02\\x16\\xea\\x02\\xf8\\x62\\x00\\x59\\xec\\x02\\xf8\\x63\\x00\\x5a\\x1b\\x02\\xf8\\x64\\x00\\x5a\\x27\\x02\\xf8\\x65\\x00\\x59\\xd8\\x02\\xf8\\x66\\x00\\x5a\\x66\\x02\\xf8\\x67\\x00\\x36\\xee\\x02\\xf8\\x68\\x00\\x36\\xfc\\x02\\xf8\\x69\\x00\\x5b\\x08\\x02\\xf8\\x6a\\x00\\x5b\\x3e\\x02\\xf8\\x6b\\x00\\x5b\\x3e\\x02\\xf8\\x6c\\x02\\x19\\xc8\\x02\\xf8\\x6d\\x00\\x5b\\xc3\\x02\\xf8\\x6e\\x00\\x5b\\xd8\\x02\\xf8\\x6f\\x00\\x5b\\xe7\\x02\\xf8\\x70\\x00\\x5b\\xf3\\x02\\xf8\\x71\\x02\\x1b\\x18\\x02\\xf8\\x72\\x00\\x5b\\xff\\x02\\xf8\\x73\\x00\\x5c\\x06\\x02\\xf8\\x74\\x00\\x5f\\x53\\x02\\xf8\\x75\\x00\\x5c\\x22\\x02\\xf8\\x76\\x00\\x37\\x81\\x02\\xf8\\x77\\x00\\x5c\\x60\\x02\\xf8\\x78\\x00\\x5c\\x6e\\x02\\xf8\\x79\\x00\\x5c\\xc0\\x02\\xf8\\x7a\\x00\\x5c\\x8d\\x02\\xf8\\x7b\\x02\\x1d\\xe4\\x02\\xf8\\x7c\\x00\\x5d\\x43\\x02\\xf8\\x7d\\x02\\x1d\\xe6\\x02\\xf8\\x7e\\x00\\x5d\\x6e\\x02\\xf8\\x7f\\x00\\x5d\\x6b\\x02\\xf8\\x80\\x00\\x5d\\x7c\\x02\\xf8\\x81\\x00\\x5d\\xe1\\x02\\xf8\\x82\\x00\\x5d\\xe2\\x02\\xf8\\x83\\x00\\x38\\x2f\\x02\\xf8\\x84\\x00\\x5d\\xfd\\x02\\xf8\\x85\\x00\\x5e\\x28\\x02\\xf8\\x86\\x00\\x5e\\x3d\\x02\\xf8\\x87\\x00\\x5e\\x69\\x02\\xf8\\x88\\x00\\x38\\x62\\x02\\xf8\\x89\\x02\\x21\\x83\\x02\\xf8\\x8a\\x00\\x38\\x7c\\x02\\xf8\\x8b\\x00\\x5e\\xb0\\x02\\xf8\\x8c\\x00\\x5e\\xb3\\x02\\xf8\\x8d\\x00\\x5e\\xb6\\x02\\xf8\\x8e\\x00\\x5e\\xca\\x02\\xf8\\x8f\\x02\\xa3\\x92\\x02\\xf8\\x90\\x00\\x5e\\xfe\\x02\\xf8\\x91\\x02\\x23\\x31\\x02\\xf8\\x92\\x02\\x23\\x31\\x02\\xf8\\x93\\x00\\x82\\x01\\x02\\xf8\\x94\\x00\\x5f\\x22\\x02\\xf8\\x95\\x00\\x5f\\x22\\x02\\xf8\\x96\\x00\\x38\\xc7\\x02\\xf8\\x97\\x02\\x32\\xb8\\x02\\xf8\\x98\\x02\\x61\\xda\\x02\\xf8\\x99\\x00\\x5f\\x62\\x02\\xf8\\x9a\\x00\\x5f\\x6b\\x02\\xf8\\x9b\\x00\\x38\\xe3\\x02\\xf8\\x9c\\x00\\x5f\\x9a\\x02\\xf8\\x9d\\x00\\x5f\\xcd\\x02\\xf8\\x9e\\x00\\x5f\\xd7\\x02\\xf8\\x9f\\x00\\x5f\\xf9\\x02\\xf8\\xa0\\x00\\x60\\x81\\x02\\xf8\\xa1\\x00\\x39\\x3a\\x02\\xf8\\xa2\\x00\\x39\\x1c\\x02\\xf8\\xa3\\x00\\x60\\x94\\x02\\xf8\\xa4\\x02\\x26\\xd4\\x02\\xf8\\xa5\\x00\\x60\\xc7\\x02\\xf8\\xa6\\x00\\x61\\x48\\x02\\xf8\\xa7\\x00\\x61\\x4c\\x02\\xf8\\xa8\\x00\\x61\\x4e\\x02\\xf8\\xa9\\x00\\x61\\x4c\\x02\\xf8\\xaa\\x00\\x61\\x7a\\x02\\xf8\\xab\\x00\\x61\\x8e\\x02\\xf8\\xac\\x00\\x61\\xb2\\x02\\xf8\\xad\\x00\\x61\\xa4\\x02\\xf8\\xae\\x00\\x61\\xaf\\x02\\xf8\\xaf\\x00\\x61\\xde\\x02\\xf8\\xb0\\x00\\x61\\xf2\\x02\\xf8\\xb1\\x00\\x61\\xf6\\x02\\xf8\\xb2\\x00\\x62\\x10\\x02\\xf8\\xb3\\x00\\x62\\x1b\\x02\\xf8\\xb4\\x00\\x62\\x5d\\x02\\xf8\\xb5\\x00\\x62\\xb1\\x02\\xf8\\xb6\\x00\\x62\\xd4\\x02\\xf8\\xb7\\x00\\x63\\x50\\x02\\xf8\\xb8\\x02\\x2b\\x0c\\x02\\xf8\\xb9\\x00\\x63\\x3d\\x02\\xf8\\xba\\x00\\x62\\xfc\\x02\\xf8\\xbb\\x00\\x63\\x68\\x02\\xf8\\xbc\\x00\\x63\\x83\\x02\\xf8\\xbd\\x00\\x63\\xe4\\x02\\xf8\\xbe\\x02\\x2b\\xf1\\x02\\xf8\\xbf\\x00\\x64\\x22\\x02\\xf8\\xc0\\x00\\x63\\xc5\\x02\\xf8\\xc1\\x00\\x63\\xa9\\x02\\xf8\\xc2\\x00\\x3a\\x2e\\x02\\xf8\\xc3\\x00\\x64\\x69\\x02\\xf8\\xc4\\x00\\x64\\x7e\\x02\\xf8\\xc5\\x00\\x64\\x9d\\x02\\xf8\\xc6\\x00\\x64\\x77\\x02\\xf8\\xc7\\x00\\x3a\\x6c\\x02\\xf8\\xc8\\x00\\x65\\x4f\\x02\\xf8\\xc9\\x00\\x65\\x6c\\x02\\xf8\\xca\\x02\\x30\\x0a\\x02\\xf8\\xcb\\x00\\x65\\xe3\\x02\\xf8\\xcc\\x00\\x66\\xf8\\x02\\xf8\\xcd\\x00\\x66\\x49\\x02\\xf8\\xce\\x00\\x3b\\x19\\x02\\xf8\\xcf\\x00\\x66\\x91\\x02\\xf8\\xd0\\x00\\x3b\\x08\\x02\\xf8\\xd1\\x00\\x3a\\xe4\\x02\\xf8\\xd2\\x00\\x51\\x92\\x02\\xf8\\xd3\\x00\\x51\\x95\\x02\\xf8\\xd4\\x00\\x67\\x00\\x02\\xf8\\xd5\\x00\\x66\\x9c\\x02\\xf8\\xd6\\x00\\x80\\xad\\x02\\xf8\\xd7\\x00\\x43\\xd9\\x02\\xf8\\xd8\\x00\\x67\\x17\\x02\\xf8\\xd9\\x00\\x67\\x1b\\x02\\xf8\\xda\\x00\\x67\\x21\\x02\\xf8\\xdb\\x00\\x67\\x5e\\x02\\xf8\\xdc\\x00\\x67\\x53\\x02\\xf8\\xdd\\x02\\x33\\xc3\\x02\\xf8\\xde\\x00\\x3b\\x49\\x02\\xf8\\xdf\\x00\\x67\\xfa\\x02\\xf8\\xe0\\x00\\x67\\x85\\x02\\xf8\\xe1\\x00\\x68\\x52\\x02\\xf8\\xe2\\x00\\x68\\x85\\x02\\xf8\\xe3\\x02\\x34\\x6d\\x02\\xf8\\xe4\\x00\\x68\\x8e\\x02\\xf8\\xe5\\x00\\x68\\x1f\\x02\\xf8\\xe6\\x00\\x69\\x14\\x02\\xf8\\xe7\\x00\\x3b\\x9d\\x02\\xf8\\xe8\\x00\\x69\\x42\\x02\\xf8\\xe9\\x00\\x69\\xa3\\x02\\xf8\\xea\\x00\\x69\\xea\\x02\\xf8\\xeb\\x00\\x6a\\xa8\\x02\\xf8\\xec\\x02\\x36\\xa3\\x02\\xf8\\xed\\x00\\x6a\\xdb\\x02\\xf8\\xee\\x00\\x3c\\x18\\x02\\xf8\\xef\\x00\\x6b\\x21\\x02\\xf8\\xf0\\x02\\x38\\xa7\\x02\\xf8\\xf1\\x00\\x6b\\x54\\x02\\xf8\\xf2\\x00\\x3c\\x4e\\x02\\xf8\\xf3\\x00\\x6b\\x72\\x02\\xf8\\xf4\\x00\\x6b\\x9f\\x02\\xf8\\xf5\\x00\\x6b\\xba\\x02\\xf8\\xf6\\x00\\x6b\\xbb\\x02\\xf8\\xf7\\x02\\x3a\\x8d\\x02\\xf8\\xf8\\x02\\x1d\\x0b\\x02\\xf8\\xf9\\x02\\x3a\\xfa\\x02\\xf8\\xfa\\x00\\x6c\\x4e\\x02\\xf8\\xfb\\x02\\x3c\\xbc\\x02\\xf8\\xfc\\x00\\x6c\\xbf\\x02\\xf8\\xfd\\x00\\x6c\\xcd\\x02\\xf8\\xfe\\x00\\x6c\\x67\\x02\\xf8\\xff\\x00\\x6d\\x16\\x02\\xf9\\x00\\x00\\x6d\\x3e\\x02\\xf9\\x01\\x00\\x6d\\x77\\x02\\xf9\\x02\\x00\\x6d\\x41\\x02\\xf9\\x03\\x00\\x6d\\x69\\x02\\xf9\\x04\\x00\\x6d\\x78\\x02\\xf9\\x05\\x00\\x6d\\x85\\x02\\xf9\\x06\\x02\\x3d\\x1e\\x02\\xf9\\x07\\x00\\x6d\\x34\\x02\\xf9\\x08\\x00\\x6e\\x2f\\x02\\xf9\\x09\\x00\\x6e\\x6e\\x02\\xf9\\x0a\\x00\\x3d\\x33\\x02\\xf9\\x0b\\x00\\x6e\\xcb\\x02\\xf9\\x0c\\x00\\x6e\\xc7\\x02\\xf9\\x0d\\x02\\x3e\\xd1\\x02\\xf9\\x0e\\x00\\x6d\\xf9\\x02\\xf9\\x0f\\x00\\x6f\\x6e\\x02\\xf9\\x10\\x02\\x3f\\x5e\\x02\\xf9\\x11\\x02\\x3f\\x8e\\x02\\xf9\\x12\\x00\\x6f\\xc6\\x02\\xf9\\x13\\x00\\x70\\x39\\x02\\xf9\\x14\\x00\\x70\\x1e\\x02\\xf9\\x15\\x00\\x70\\x1b\\x02\\xf9\\x16\\x00\\x3d\\x96\\x02\\xf9\\x17\\x00\\x70\\x4a\\x02\\xf9\\x18\\x00\\x70\\x7d\\x02\\xf9\\x19\\x00\\x70\\x77\\x02\\xf9\\x1a\\x00\\x70\\xad\\x02\\xf9\\x1b\\x02\\x05\\x25\\x02\\xf9\\x1c\\x00\\x71\\x45\\x02\\xf9\\x1d\\x02\\x42\\x63\\x02\\xf9\\x1e\\x00\\x71\\x9c\\x02\\xf9\\x1f\\x02\\x43\\xab\\x02\\xf9\\x20\\x00\\x72\\x28\\x02\\xf9\\x21\\x00\\x72\\x35\\x02\\xf9\\x22\\x00\\x72\\x50\\x02\\xf9\\x23\\x02\\x46\\x08\\x02\\xf9\\x24\\x00\\x72\\x80\\x02\\xf9\\x25\\x00\\x72\\x95\\x02\\xf9\\x26\\x02\\x47\\x35\\x02\\xf9\\x27\\x02\\x48\\x14\\x02\\xf9\\x28\\x00\\x73\\x7a\\x02\\xf9\\x29\\x00\\x73\\x8b\\x02\\xf9\\x2a\\x00\\x3e\\xac\\x02\\xf9\\x2b\\x00\\x73\\xa5\\x02\\xf9\\x2c\\x00\\x3e\\xb8\\x02\\xf9\\x2d\\x00\\x3e\\xb8\\x02\\xf9\\x2e\\x00\\x74\\x47\\x02\\xf9\\x2f\\x00\\x74\\x5c\\x02\\xf9\\x30\\x00\\x74\\x71\\x02\\xf9\\x31\\x00\\x74\\x85\\x02\\xf9\\x32\\x00\\x74\\xca\\x02\\xf9\\x33\\x00\\x3f\\x1b\\x02\\xf9\\x34\\x00\\x75\\x24\\x02\\xf9\\x35\\x02\\x4c\\x36\\x02\\xf9\\x36\\x00\\x75\\x3e\\x02\\xf9\\x37\\x02\\x4c\\x92\\x02\\xf9\\x38\\x00\\x75\\x70\\x02\\xf9\\x39\\x02\\x21\\x9f\\x02\\xf9\\x3a\\x00\\x76\\x10\\x02\\xf9\\x3b\\x02\\x4f\\xa1\\x02\\xf9\\x3c\\x02\\x4f\\xb8\\x02\\xf9\\x3d\\x02\\x50\\x44\\x02\\xf9\\x3e\\x00\\x3f\\xfc\\x02\\xf9\\x3f\\x00\\x40\\x08\\x02\\xf9\\x40\\x00\\x76\\xf4\\x02\\xf9\\x41\\x02\\x50\\xf3\\x02\\xf9\\x42\\x02\\x50\\xf2\\x02\\xf9\\x43\\x02\\x51\\x19\\x02\\xf9\\x44\\x02\\x51\\x33\\x02\\xf9\\x45\\x00\\x77\\x1e\\x02\\xf9\\x46\\x00\\x77\\x1f\\x02\\xf9\\x47\\x00\\x77\\x1f\\x02\\xf9\\x48\\x00\\x77\\x4a\\x02\\xf9\\x49\\x00\\x40\\x39\\x02\\xf9\\x4a\\x00\\x77\\x8b\\x02\\xf9\\x4b\\x00\\x40\\x46\\x02\\xf9\\x4c\\x00\\x40\\x96\\x02\\xf9\\x4d\\x02\\x54\\x1d\\x02\\xf9\\x4e\\x00\\x78\\x4e\\x02\\xf9\\x4f\\x00\\x78\\x8c\\x02\\xf9\\x50\\x00\\x78\\xcc\\x02\\xf9\\x51\\x00\\x40\\xe3\\x02\\xf9\\x52\\x02\\x56\\x26\\x02\\xf9\\x53\\x00\\x79\\x56\\x02\\xf9\\x54\\x02\\x56\\x9a\\x02\\xf9\\x55\\x02\\x56\\xc5\\x02\\xf9\\x56\\x00\\x79\\x8f\\x02\\xf9\\x57\\x00\\x79\\xeb\\x02\\xf9\\x58\\x00\\x41\\x2f\\x02\\xf9\\x59\\x00\\x7a\\x40\\x02\\xf9\\x5a\\x00\\x7a\\x4a\\x02\\xf9\\x5b\\x00\\x7a\\x4f\\x02\\xf9\\x5c\\x02\\x59\\x7c\\x02\\xf9\\x5d\\x02\\x5a\\xa7\\x02\\xf9\\x5e\\x02\\x5a\\xa7\\x02\\xf9\\x5f\\x00\\x7a\\xee\\x02\\xf9\\x60\\x00\\x42\\x02\\x02\\xf9\\x61\\x02\\x5b\\xab\\x02\\xf9\\x62\\x00\\x7b\\xc6\\x02\\xf9\\x63\\x00\\x7b\\xc9\\x02\\xf9\\x64\\x00\\x42\\x27\\x02\\xf9\\x65\\x02\\x5c\\x80\\x02\\xf9\\x66\\x00\\x7c\\xd2\\x02\\xf9\\x67\\x00\\x42\\xa0\\x02\\xf9\\x68\\x00\\x7c\\xe8\\x02\\xf9\\x69\\x00\\x7c\\xe3\\x02\\xf9\\x6a\\x00\\x7d\\x00\\x02\\xf9\\x6b\\x02\\x5f\\x86\\x02\\xf9\\x6c\\x00\\x7d\\x63\\x02\\xf9\\x6d\\x00\\x43\\x01\\x02\\xf9\\x6e\\x00\\x7d\\xc7\\x02\\xf9\\x6f\\x00\\x7e\\x02\\x02\\xf9\\x70\\x00\\x7e\\x45\\x02\\xf9\\x71\\x00\\x43\\x34\\x02\\xf9\\x72\\x02\\x62\\x28\\x02\\xf9\\x73\\x02\\x62\\x47\\x02\\xf9\\x74\\x00\\x43\\x59\\x02\\xf9\\x75\\x02\\x62\\xd9\\x02\\xf9\\x76\\x00\\x7f\\x7a\\x02\\xf9\\x77\\x02\\x63\\x3e\\x02\\xf9\\x78\\x00\\x7f\\x95\\x02\\xf9\\x79\\x00\\x7f\\xfa\\x02\\xf9\\x7a\\x00\\x80\\x05\\x02\\xf9\\x7b\\x02\\x64\\xda\\x02\\xf9\\x7c\\x02\\x65\\x23\\x02\\xf9\\x7d\\x00\\x80\\x60\\x02\\xf9\\x7e\\x02\\x65\\xa8\\x02\\xf9\\x7f\\x00\\x80\\x70\\x02\\xf9\\x80\\x02\\x33\\x5f\\x02\\xf9\\x81\\x00\\x43\\xd5\\x02\\xf9\\x82\\x00\\x80\\xb2\\x02\\xf9\\x83\\x00\\x81\\x03\\x02\\xf9\\x84\\x00\\x44\\x0b\\x02\\xf9\\x85\\x00\\x81\\x3e\\x02\\xf9\\x86\\x00\\x5a\\xb5\\x02\\xf9\\x87\\x02\\x67\\xa7\\x02\\xf9\\x88\\x02\\x67\\xb5\\x02\\xf9\\x89\\x02\\x33\\x93\\x02\\xf9\\x8a\\x02\\x33\\x9c\\x02\\xf9\\x8b\\x00\\x82\\x01\\x02\\xf9\\x8c\\x00\\x82\\x04\\x02\\xf9\\x8d\\x00\\x8f\\x9e\\x02\\xf9\\x8e\\x00\\x44\\x6b\\x02\\xf9\\x8f\\x00\\x82\\x91\\x02\\xf9\\x90\\x00\\x82\\x8b\\x02\\xf9\\x91\\x00\\x82\\x9d\\x02\\xf9\\x92\\x00\\x52\\xb3\\x02\\xf9\\x93\\x00\\x82\\xb1\\x02\\xf9\\x94\\x00\\x82\\xb3\\x02\\xf9\\x95\\x00\\x82\\xbd\\x02\\xf9\\x96\\x00\\x82\\xe6\\x02\\xf9\\x97\\x02\\x6b\\x3c\\x02\\xf9\\x98\\x00\\x82\\xe5\\x02\\xf9\\x99\\x00\\x83\\x1d\\x02\\xf9\\x9a\\x00\\x83\\x63\\x02\\xf9\\x9b\\x00\\x83\\xad\\x02\\xf9\\x9c\\x00\\x83\\x23\\x02\\xf9\\x9d\\x00\\x83\\xbd\\x02\\xf9\\x9e\\x00\\x83\\xe7\\x02\\xf9\\x9f\\x00\\x84\\x57\\x02\\xf9\\xa0\\x00\\x83\\x53\\x02\\xf9\\xa1\\x00\\x83\\xca\\x02\\xf9\\xa2\\x00\\x83\\xcc\\x02\\xf9\\xa3\\x00\\x83\\xdc\\x02\\xf9\\xa4\\x02\\x6c\\x36\\x02\\xf9\\xa5\\x02\\x6d\\x6b\\x02\\xf9\\xa6\\x02\\x6c\\xd5\\x02\\xf9\\xa7\\x00\\x45\\x2b\\x02\\xf9\\xa8\\x00\\x84\\xf1\\x02\\xf9\\xa9\\x00\\x84\\xf3\\x02\\xf9\\xaa\\x00\\x85\\x16\\x02\\xf9\\xab\\x02\\x73\\xca\\x02\\xf9\\xac\\x00\\x85\\x64\\x02\\xf9\\xad\\x02\\x6f\\x2c\\x02\\xf9\\xae\\x00\\x45\\x5d\\x02\\xf9\\xaf\\x00\\x45\\x61\\x02\\xf9\\xb0\\x02\\x6f\\xb1\\x02\\xf9\\xb1\\x02\\x70\\xd2\\x02\\xf9\\xb2\\x00\\x45\\x6b\\x02\\xf9\\xb3\\x00\\x86\\x50\\x02\\xf9\\xb4\\x00\\x86\\x5c\\x02\\xf9\\xb5\\x00\\x86\\x67\\x02\\xf9\\xb6\\x00\\x86\\x69\\x02\\xf9\\xb7\\x00\\x86\\xa9\\x02\\xf9\\xb8\\x00\\x86\\x88\\x02\\xf9\\xb9\\x00\\x87\\x0e\\x02\\xf9\\xba\\x00\\x86\\xe2\\x02\\xf9\\xbb\\x00\\x87\\x79\\x02\\xf9\\xbc\\x00\\x87\\x28\\x02\\xf9\\xbd\\x00\\x87\\x6b\\x02\\xf9\\xbe\\x00\\x87\\x86\\x02\\xf9\\xbf\\x00\\x45\\xd7\\x02\\xf9\\xc0\\x00\\x87\\xe1\\x02\\xf9\\xc1\\x00\\x88\\x01\\x02\\xf9\\xc2\\x00\\x45\\xf9\\x02\\xf9\\xc3\\x00\\x88\\x60\\x02\\xf9\\xc4\\x00\\x88\\x63\\x02\\xf9\\xc5\\x02\\x76\\x67\\x02\\xf9\\xc6\\x00\\x88\\xd7\\x02\\xf9\\xc7\\x00\\x88\\xde\\x02\\xf9\\xc8\\x00\\x46\\x35\\x02\\xf9\\xc9\\x00\\x88\\xfa\\x02\\xf9\\xca\\x00\\x34\\xbb\\x02\\xf9\\xcb\\x02\\x78\\xae\\x02\\xf9\\xcc\\x02\\x79\\x66\\x02\\xf9\\xcd\\x00\\x46\\xbe\\x02\\xf9\\xce\\x00\\x46\\xc7\\x02\\xf9\\xcf\\x00\\x8a\\xa0\\x02\\xf9\\xd0\\x00\\x8a\\xed\\x02\\xf9\\xd1\\x00\\x8b\\x8a\\x02\\xf9\\xd2\\x00\\x8c\\x55\\x02\\xf9\\xd3\\x02\\x7c\\xa8\\x02\\xf9\\xd4\\x00\\x8c\\xab\\x02\\xf9\\xd5\\x00\\x8c\\xc1\\x02\\xf9\\xd6\\x00\\x8d\\x1b\\x02\\xf9\\xd7\\x00\\x8d\\x77\\x02\\xf9\\xd8\\x02\\x7f\\x2f\\x02\\xf9\\xd9\\x02\\x08\\x04\\x02\\xf9\\xda\\x00\\x8d\\xcb\\x02\\xf9\\xdb\\x00\\x8d\\xbc\\x02\\xf9\\xdc\\x00\\x8d\\xf0\\x02\\xf9\\xdd\\x02\\x08\\xde\\x02\\xf9\\xde\\x00\\x8e\\xd4\\x02\\xf9\\xdf\\x00\\x8f\\x38\\x02\\xf9\\xe0\\x02\\x85\\xd2\\x02\\xf9\\xe1\\x02\\x85\\xed\\x02\\xf9\\xe2\\x00\\x90\\x94\\x02\\xf9\\xe3\\x00\\x90\\xf1\\x02\\xf9\\xe4\\x00\\x91\\x11\\x02\\xf9\\xe5\\x02\\x87\\x2e\\x02\\xf9\\xe6\\x00\\x91\\x1b\\x02\\xf9\\xe7\\x00\\x92\\x38\\x02\\xf9\\xe8\\x00\\x92\\xd7\\x02\\xf9\\xe9\\x00\\x92\\xd8\\x02\\xf9\\xea\\x00\\x92\\x7c\\x02\\xf9\\xeb\\x00\\x93\\xf9\\x02\\xf9\\xec\\x00\\x94\\x15\\x02\\xf9\\xed\\x02\\x8b\\xfa\\x02\\xf9\\xee\\x00\\x95\\x8b\\x02\\xf9\\xef\\x00\\x49\\x95\\x02\\xf9\\xf0\\x00\\x95\\xb7\\x02\\xf9\\xf1\\x02\\x8d\\x77\\x02\\xf9\\xf2\\x00\\x49\\xe6\\x02\\xf9\\xf3\\x00\\x96\\xc3\\x02\\xf9\\xf4\\x00\\x5d\\xb2\\x02\\xf9\\xf5\\x00\\x97\\x23\\x02\\xf9\\xf6\\x02\\x91\\x45\\x02\\xf9\\xf7\\x02\\x92\\x1a\\x02\\xf9\\xf8\\x00\\x4a\\x6e\\x02\\xf9\\xf9\\x00\\x4a\\x76\\x02\\xf9\\xfa\\x00\\x97\\xe0\\x02\\xf9\\xfb\\x02\\x94\\x0a\\x02\\xf9\\xfc\\x00\\x4a\\xb2\\x02\\xf9\\xfd\\x02\\x94\\x96\\x02\\xf9\\xfe\\x00\\x98\\x0b\\x02\\xf9\\xff\\x00\\x98\\x0b\\x02\\xfa\\x00\\x00\\x98\\x29\\x02\\xfa\\x01\\x02\\x95\\xb6\\x02\\xfa\\x02\\x00\\x98\\xe2\\x02\\xfa\\x03\\x00\\x4b\\x33\\x02\\xfa\\x04\\x00\\x99\\x29\\x02\\xfa\\x05\\x00\\x99\\xa7\\x02\\xfa\\x06\\x00\\x99\\xc2\\x02\\xfa\\x07\\x00\\x99\\xfe\\x02\\xfa\\x08\\x00\\x4b\\xce\\x02\\xfa\\x09\\x02\\x9b\\x30\\x02\\xfa\\x0a\\x00\\x9b\\x12\\x02\\xfa\\x0b\\x00\\x9c\\x40\\x02\\xfa\\x0c\\x00\\x9c\\xfd\\x02\\xfa\\x0d\\x00\\x4c\\xce\\x02\\xfa\\x0e\\x00\\x4c\\xed\\x02\\xfa\\x0f\\x00\\x9d\\x67\\x02\\xfa\\x10\\x02\\xa0\\xce\\x02\\xfa\\x11\\x00\\x4c\\xf8\\x02\\xfa\\x12\\x02\\xa1\\x05\\x02\\xfa\\x13\\x02\\xa2\\x0e\\x02\\xfa\\x14\\x02\\xa2\\x91\\x02\\xfa\\x15\\x00\\x9e\\xbb\\x02\\xfa\\x16\\x00\\x4d\\x56\\x02\\xfa\\x17\\x00\\x9e\\xf9\\x02\\xfa\\x18\\x00\\x9e\\xfe\\x02\\xfa\\x19\\x00\\x9f\\x05\\x02\\xfa\\x1a\\x00\\x9f\\x0f\\x02\\xfa\\x1b\\x00\\x9f\\x16\\x02\\xfa\\x1c\\x00\\x9f\\x3b\\x02\\xfa\\x1d\\x02\\xa6\\x00"\n let mut low = usize.ZERO\n let mut high = usize.add(0, 1035)\n while low < high {\n let middle = low + (high - low) / 2\n let at = middle * 6\n let key = read3(singletons, at)\n if scalar < key {\n high = middle\n } else {\n if key < scalar {\n low = middle + usize.ONE\n } else {\n return Decomposition { first: read3(singletons, at + 3), second: 0 }\n }\n }\n }\n let found = pairIndexOf(scalar)\n if found == 1046 { return Decomposition { first: 0, second: 0 } }\n let record = pairRecord(found)\n return Decomposition { first: record.first, second: record.second }\n}\n\n/// Returns the position of a scalar in the canonical pair table, or the table length when absent.\nfn pairIndexOf(scalar: u32) -> usize {\n let mut low = usize.ZERO\n let mut high = usize.add(0, 1046)\n while low < high {\n let middle = low + (high - low) / 2\n let composed = pairRecord(middle).composed\n if scalar < composed {\n high = middle\n } else {\n if composed < scalar { low = middle + usize.ONE } else { return middle }\n }\n }\n return 1046\n}\n\n/// Returns one record of the canonical pair table. The table is held here alone so both the\n/// decomposition search and the composition search read the same bytes.\nfn pairRecord(index: usize) -> PairRecord {\n let data = b"\\x00\\x00\\xc0\\x00\\x00\\x41\\x00\\x03\\x00\\x00\\x00\\xc1\\x00\\x00\\x41\\x00\\x03\\x01\\x00\\x00\\xc2\\x00\\x00\\x41\\x00\\x03\\x02\\x00\\x00\\xc3\\x00\\x00\\x41\\x00\\x03\\x03\\x00\\x00\\xc4\\x00\\x00\\x41\\x00\\x03\\x08\\x00\\x00\\xc5\\x00\\x00\\x41\\x00\\x03\\x0a\\x00\\x00\\xc7\\x00\\x00\\x43\\x00\\x03\\x27\\x00\\x00\\xc8\\x00\\x00\\x45\\x00\\x03\\x00\\x00\\x00\\xc9\\x00\\x00\\x45\\x00\\x03\\x01\\x00\\x00\\xca\\x00\\x00\\x45\\x00\\x03\\x02\\x00\\x00\\xcb\\x00\\x00\\x45\\x00\\x03\\x08\\x00\\x00\\xcc\\x00\\x00\\x49\\x00\\x03\\x00\\x00\\x00\\xcd\\x00\\x00\\x49\\x00\\x03\\x01\\x00\\x00\\xce\\x00\\x00\\x49\\x00\\x03\\x02\\x00\\x00\\xcf\\x00\\x00\\x49\\x00\\x03\\x08\\x00\\x00\\xd1\\x00\\x00\\x4e\\x00\\x03\\x03\\x00\\x00\\xd2\\x00\\x00\\x4f\\x00\\x03\\x00\\x00\\x00\\xd3\\x00\\x00\\x4f\\x00\\x03\\x01\\x00\\x00\\xd4\\x00\\x00\\x4f\\x00\\x03\\x02\\x00\\x00\\xd5\\x00\\x00\\x4f\\x00\\x03\\x03\\x00\\x00\\xd6\\x00\\x00\\x4f\\x00\\x03\\x08\\x00\\x00\\xd9\\x00\\x00\\x55\\x00\\x03\\x00\\x00\\x00\\xda\\x00\\x00\\x55\\x00\\x03\\x01\\x00\\x00\\xdb\\x00\\x00\\x55\\x00\\x03\\x02\\x00\\x00\\xdc\\x00\\x00\\x55\\x00\\x03\\x08\\x00\\x00\\xdd\\x00\\x00\\x59\\x00\\x03\\x01\\x00\\x00\\xe0\\x00\\x00\\x61\\x00\\x03\\x00\\x00\\x00\\xe1\\x00\\x00\\x61\\x00\\x03\\x01\\x00\\x00\\xe2\\x00\\x00\\x61\\x00\\x03\\x02\\x00\\x00\\xe3\\x00\\x00\\x61\\x00\\x03\\x03\\x00\\x00\\xe4\\x00\\x00\\x61\\x00\\x03\\x08\\x00\\x00\\xe5\\x00\\x00\\x61\\x00\\x03\\x0a\\x00\\x00\\xe7\\x00\\x00\\x63\\x00\\x03\\x27\\x00\\x00\\xe8\\x00\\x00\\x65\\x00\\x03\\x00\\x00\\x00\\xe9\\x00\\x00\\x65\\x00\\x03\\x01\\x00\\x00\\xea\\x00\\x00\\x65\\x00\\x03\\x02\\x00\\x00\\xeb\\x00\\x00\\x65\\x00\\x03\\x08\\x00\\x00\\xec\\x00\\x00\\x69\\x00\\x03\\x00\\x00\\x00\\xed\\x00\\x00\\x69\\x00\\x03\\x01\\x00\\x00\\xee\\x00\\x00\\x69\\x00\\x03\\x02\\x00\\x00\\xef\\x00\\x00\\x69\\x00\\x03\\x08\\x00\\x00\\xf1\\x00\\x00\\x6e\\x00\\x03\\x03\\x00\\x00\\xf2\\x00\\x00\\x6f\\x00\\x03\\x00\\x00\\x00\\xf3\\x00\\x00\\x6f\\x00\\x03\\x01\\x00\\x00\\xf4\\x00\\x00\\x6f\\x00\\x03\\x02\\x00\\x00\\xf5\\x00\\x00\\x6f\\x00\\x03\\x03\\x00\\x00\\xf6\\x00\\x00\\x6f\\x00\\x03\\x08\\x00\\x00\\xf9\\x00\\x00\\x75\\x00\\x03\\x00\\x00\\x00\\xfa\\x00\\x00\\x75\\x00\\x03\\x01\\x00\\x00\\xfb\\x00\\x00\\x75\\x00\\x03\\x02\\x00\\x00\\xfc\\x00\\x00\\x75\\x00\\x03\\x08\\x00\\x00\\xfd\\x00\\x00\\x79\\x00\\x03\\x01\\x00\\x00\\xff\\x00\\x00\\x79\\x00\\x03\\x08\\x00\\x01\\x00\\x00\\x00\\x41\\x00\\x03\\x04\\x00\\x01\\x01\\x00\\x00\\x61\\x00\\x03\\x04\\x00\\x01\\x02\\x00\\x00\\x41\\x00\\x03\\x06\\x00\\x01\\x03\\x00\\x00\\x61\\x00\\x03\\x06\\x00\\x01\\x04\\x00\\x00\\x41\\x00\\x03\\x28\\x00\\x01\\x05\\x00\\x00\\x61\\x00\\x03\\x28\\x00\\x01\\x06\\x00\\x00\\x43\\x00\\x03\\x01\\x00\\x01\\x07\\x00\\x00\\x63\\x00\\x03\\x01\\x00\\x01\\x08\\x00\\x00\\x43\\x00\\x03\\x02\\x00\\x01\\x09\\x00\\x00\\x63\\x00\\x03\\x02\\x00\\x01\\x0a\\x00\\x00\\x43\\x00\\x03\\x07\\x00\\x01\\x0b\\x00\\x00\\x63\\x00\\x03\\x07\\x00\\x01\\x0c\\x00\\x00\\x43\\x00\\x03\\x0c\\x00\\x01\\x0d\\x00\\x00\\x63\\x00\\x03\\x0c\\x00\\x01\\x0e\\x00\\x00\\x44\\x00\\x03\\x0c\\x00\\x01\\x0f\\x00\\x00\\x64\\x00\\x03\\x0c\\x00\\x01\\x12\\x00\\x00\\x45\\x00\\x03\\x04\\x00\\x01\\x13\\x00\\x00\\x65\\x00\\x03\\x04\\x00\\x01\\x14\\x00\\x00\\x45\\x00\\x03\\x06\\x00\\x01\\x15\\x00\\x00\\x65\\x00\\x03\\x06\\x00\\x01\\x16\\x00\\x00\\x45\\x00\\x03\\x07\\x00\\x01\\x17\\x00\\x00\\x65\\x00\\x03\\x07\\x00\\x01\\x18\\x00\\x00\\x45\\x00\\x03\\x28\\x00\\x01\\x19\\x00\\x00\\x65\\x00\\x03\\x28\\x00\\x01\\x1a\\x00\\x00\\x45\\x00\\x03\\x0c\\x00\\x01\\x1b\\x00\\x00\\x65\\x00\\x03\\x0c\\x00\\x01\\x1c\\x00\\x00\\x47\\x00\\x03\\x02\\x00\\x01\\x1d\\x00\\x00\\x67\\x00\\x03\\x02\\x00\\x01\\x1e\\x00\\x00\\x47\\x00\\x03\\x06\\x00\\x01\\x1f\\x00\\x00\\x67\\x00\\x03\\x06\\x00\\x01\\x20\\x00\\x00\\x47\\x00\\x03\\x07\\x00\\x01\\x21\\x00\\x00\\x67\\x00\\x03\\x07\\x00\\x01\\x22\\x00\\x00\\x47\\x00\\x03\\x27\\x00\\x01\\x23\\x00\\x00\\x67\\x00\\x03\\x27\\x00\\x01\\x24\\x00\\x00\\x48\\x00\\x03\\x02\\x00\\x01\\x25\\x00\\x00\\x68\\x00\\x03\\x02\\x00\\x01\\x28\\x00\\x00\\x49\\x00\\x03\\x03\\x00\\x01\\x29\\x00\\x00\\x69\\x00\\x03\\x03\\x00\\x01\\x2a\\x00\\x00\\x49\\x00\\x03\\x04\\x00\\x01\\x2b\\x00\\x00\\x69\\x00\\x03\\x04\\x00\\x01\\x2c\\x00\\x00\\x49\\x00\\x03\\x06\\x00\\x01\\x2d\\x00\\x00\\x69\\x00\\x03\\x06\\x00\\x01\\x2e\\x00\\x00\\x49\\x00\\x03\\x28\\x00\\x01\\x2f\\x00\\x00\\x69\\x00\\x03\\x28\\x00\\x01\\x30\\x00\\x00\\x49\\x00\\x03\\x07\\x00\\x01\\x34\\x00\\x00\\x4a\\x00\\x03\\x02\\x00\\x01\\x35\\x00\\x00\\x6a\\x00\\x03\\x02\\x00\\x01\\x36\\x00\\x00\\x4b\\x00\\x03\\x27\\x00\\x01\\x37\\x00\\x00\\x6b\\x00\\x03\\x27\\x00\\x01\\x39\\x00\\x00\\x4c\\x00\\x03\\x01\\x00\\x01\\x3a\\x00\\x00\\x6c\\x00\\x03\\x01\\x00\\x01\\x3b\\x00\\x00\\x4c\\x00\\x03\\x27\\x00\\x01\\x3c\\x00\\x00\\x6c\\x00\\x03\\x27\\x00\\x01\\x3d\\x00\\x00\\x4c\\x00\\x03\\x0c\\x00\\x01\\x3e\\x00\\x00\\x6c\\x00\\x03\\x0c\\x00\\x01\\x43\\x00\\x00\\x4e\\x00\\x03\\x01\\x00\\x01\\x44\\x00\\x00\\x6e\\x00\\x03\\x01\\x00\\x01\\x45\\x00\\x00\\x4e\\x00\\x03\\x27\\x00\\x01\\x46\\x00\\x00\\x6e\\x00\\x03\\x27\\x00\\x01\\x47\\x00\\x00\\x4e\\x00\\x03\\x0c\\x00\\x01\\x48\\x00\\x00\\x6e\\x00\\x03\\x0c\\x00\\x01\\x4c\\x00\\x00\\x4f\\x00\\x03\\x04\\x00\\x01\\x4d\\x00\\x00\\x6f\\x00\\x03\\x04\\x00\\x01\\x4e\\x00\\x00\\x4f\\x00\\x03\\x06\\x00\\x01\\x4f\\x00\\x00\\x6f\\x00\\x03\\x06\\x00\\x01\\x50\\x00\\x00\\x4f\\x00\\x03\\x0b\\x00\\x01\\x51\\x00\\x00\\x6f\\x00\\x03\\x0b\\x00\\x01\\x54\\x00\\x00\\x52\\x00\\x03\\x01\\x00\\x01\\x55\\x00\\x00\\x72\\x00\\x03\\x01\\x00\\x01\\x56\\x00\\x00\\x52\\x00\\x03\\x27\\x00\\x01\\x57\\x00\\x00\\x72\\x00\\x03\\x27\\x00\\x01\\x58\\x00\\x00\\x52\\x00\\x03\\x0c\\x00\\x01\\x59\\x00\\x00\\x72\\x00\\x03\\x0c\\x00\\x01\\x5a\\x00\\x00\\x53\\x00\\x03\\x01\\x00\\x01\\x5b\\x00\\x00\\x73\\x00\\x03\\x01\\x00\\x01\\x5c\\x00\\x00\\x53\\x00\\x03\\x02\\x00\\x01\\x5d\\x00\\x00\\x73\\x00\\x03\\x02\\x00\\x01\\x5e\\x00\\x00\\x53\\x00\\x03\\x27\\x00\\x01\\x5f\\x00\\x00\\x73\\x00\\x03\\x27\\x00\\x01\\x60\\x00\\x00\\x53\\x00\\x03\\x0c\\x00\\x01\\x61\\x00\\x00\\x73\\x00\\x03\\x0c\\x00\\x01\\x62\\x00\\x00\\x54\\x00\\x03\\x27\\x00\\x01\\x63\\x00\\x00\\x74\\x00\\x03\\x27\\x00\\x01\\x64\\x00\\x00\\x54\\x00\\x03\\x0c\\x00\\x01\\x65\\x00\\x00\\x74\\x00\\x03\\x0c\\x00\\x01\\x68\\x00\\x00\\x55\\x00\\x03\\x03\\x00\\x01\\x69\\x00\\x00\\x75\\x00\\x03\\x03\\x00\\x01\\x6a\\x00\\x00\\x55\\x00\\x03\\x04\\x00\\x01\\x6b\\x00\\x00\\x75\\x00\\x03\\x04\\x00\\x01\\x6c\\x00\\x00\\x55\\x00\\x03\\x06\\x00\\x01\\x6d\\x00\\x00\\x75\\x00\\x03\\x06\\x00\\x01\\x6e\\x00\\x00\\x55\\x00\\x03\\x0a\\x00\\x01\\x6f\\x00\\x00\\x75\\x00\\x03\\x0a\\x00\\x01\\x70\\x00\\x00\\x55\\x00\\x03\\x0b\\x00\\x01\\x71\\x00\\x00\\x75\\x00\\x03\\x0b\\x00\\x01\\x72\\x00\\x00\\x55\\x00\\x03\\x28\\x00\\x01\\x73\\x00\\x00\\x75\\x00\\x03\\x28\\x00\\x01\\x74\\x00\\x00\\x57\\x00\\x03\\x02\\x00\\x01\\x75\\x00\\x00\\x77\\x00\\x03\\x02\\x00\\x01\\x76\\x00\\x00\\x59\\x00\\x03\\x02\\x00\\x01\\x77\\x00\\x00\\x79\\x00\\x03\\x02\\x00\\x01\\x78\\x00\\x00\\x59\\x00\\x03\\x08\\x00\\x01\\x79\\x00\\x00\\x5a\\x00\\x03\\x01\\x00\\x01\\x7a\\x00\\x00\\x7a\\x00\\x03\\x01\\x00\\x01\\x7b\\x00\\x00\\x5a\\x00\\x03\\x07\\x00\\x01\\x7c\\x00\\x00\\x7a\\x00\\x03\\x07\\x00\\x01\\x7d\\x00\\x00\\x5a\\x00\\x03\\x0c\\x00\\x01\\x7e\\x00\\x00\\x7a\\x00\\x03\\x0c\\x00\\x01\\xa0\\x00\\x00\\x4f\\x00\\x03\\x1b\\x00\\x01\\xa1\\x00\\x00\\x6f\\x00\\x03\\x1b\\x00\\x01\\xaf\\x00\\x00\\x55\\x00\\x03\\x1b\\x00\\x01\\xb0\\x00\\x00\\x75\\x00\\x03\\x1b\\x00\\x01\\xcd\\x00\\x00\\x41\\x00\\x03\\x0c\\x00\\x01\\xce\\x00\\x00\\x61\\x00\\x03\\x0c\\x00\\x01\\xcf\\x00\\x00\\x49\\x00\\x03\\x0c\\x00\\x01\\xd0\\x00\\x00\\x69\\x00\\x03\\x0c\\x00\\x01\\xd1\\x00\\x00\\x4f\\x00\\x03\\x0c\\x00\\x01\\xd2\\x00\\x00\\x6f\\x00\\x03\\x0c\\x00\\x01\\xd3\\x00\\x00\\x55\\x00\\x03\\x0c\\x00\\x01\\xd4\\x00\\x00\\x75\\x00\\x03\\x0c\\x00\\x01\\xd5\\x00\\x00\\xdc\\x00\\x03\\x04\\x00\\x01\\xd6\\x00\\x00\\xfc\\x00\\x03\\x04\\x00\\x01\\xd7\\x00\\x00\\xdc\\x00\\x03\\x01\\x00\\x01\\xd8\\x00\\x00\\xfc\\x00\\x03\\x01\\x00\\x01\\xd9\\x00\\x00\\xdc\\x00\\x03\\x0c\\x00\\x01\\xda\\x00\\x00\\xfc\\x00\\x03\\x0c\\x00\\x01\\xdb\\x00\\x00\\xdc\\x00\\x03\\x00\\x00\\x01\\xdc\\x00\\x00\\xfc\\x00\\x03\\x00\\x00\\x01\\xde\\x00\\x00\\xc4\\x00\\x03\\x04\\x00\\x01\\xdf\\x00\\x00\\xe4\\x00\\x03\\x04\\x00\\x01\\xe0\\x00\\x02\\x26\\x00\\x03\\x04\\x00\\x01\\xe1\\x00\\x02\\x27\\x00\\x03\\x04\\x00\\x01\\xe2\\x00\\x00\\xc6\\x00\\x03\\x04\\x00\\x01\\xe3\\x00\\x00\\xe6\\x00\\x03\\x04\\x00\\x01\\xe6\\x00\\x00\\x47\\x00\\x03\\x0c\\x00\\x01\\xe7\\x00\\x00\\x67\\x00\\x03\\x0c\\x00\\x01\\xe8\\x00\\x00\\x4b\\x00\\x03\\x0c\\x00\\x01\\xe9\\x00\\x00\\x6b\\x00\\x03\\x0c\\x00\\x01\\xea\\x00\\x00\\x4f\\x00\\x03\\x28\\x00\\x01\\xeb\\x00\\x00\\x6f\\x00\\x03\\x28\\x00\\x01\\xec\\x00\\x01\\xea\\x00\\x03\\x04\\x00\\x01\\xed\\x00\\x01\\xeb\\x00\\x03\\x04\\x00\\x01\\xee\\x00\\x01\\xb7\\x00\\x03\\x0c\\x00\\x01\\xef\\x00\\x02\\x92\\x00\\x03\\x0c\\x00\\x01\\xf0\\x00\\x00\\x6a\\x00\\x03\\x0c\\x00\\x01\\xf4\\x00\\x00\\x47\\x00\\x03\\x01\\x00\\x01\\xf5\\x00\\x00\\x67\\x00\\x03\\x01\\x00\\x01\\xf8\\x00\\x00\\x4e\\x00\\x03\\x00\\x00\\x01\\xf9\\x00\\x00\\x6e\\x00\\x03\\x00\\x00\\x01\\xfa\\x00\\x00\\xc5\\x00\\x03\\x01\\x00\\x01\\xfb\\x00\\x00\\xe5\\x00\\x03\\x01\\x00\\x01\\xfc\\x00\\x00\\xc6\\x00\\x03\\x01\\x00\\x01\\xfd\\x00\\x00\\xe6\\x00\\x03\\x01\\x00\\x01\\xfe\\x00\\x00\\xd8\\x00\\x03\\x01\\x00\\x01\\xff\\x00\\x00\\xf8\\x00\\x03\\x01\\x00\\x02\\x00\\x00\\x00\\x41\\x00\\x03\\x0f\\x00\\x02\\x01\\x00\\x00\\x61\\x00\\x03\\x0f\\x00\\x02\\x02\\x00\\x00\\x41\\x00\\x03\\x11\\x00\\x02\\x03\\x00\\x00\\x61\\x00\\x03\\x11\\x00\\x02\\x04\\x00\\x00\\x45\\x00\\x03\\x0f\\x00\\x02\\x05\\x00\\x00\\x65\\x00\\x03\\x0f\\x00\\x02\\x06\\x00\\x00\\x45\\x00\\x03\\x11\\x00\\x02\\x07\\x00\\x00\\x65\\x00\\x03\\x11\\x00\\x02\\x08\\x00\\x00\\x49\\x00\\x03\\x0f\\x00\\x02\\x09\\x00\\x00\\x69\\x00\\x03\\x0f\\x00\\x02\\x0a\\x00\\x00\\x49\\x00\\x03\\x11\\x00\\x02\\x0b\\x00\\x00\\x69\\x00\\x03\\x11\\x00\\x02\\x0c\\x00\\x00\\x4f\\x00\\x03\\x0f\\x00\\x02\\x0d\\x00\\x00\\x6f\\x00\\x03\\x0f\\x00\\x02\\x0e\\x00\\x00\\x4f\\x00\\x03\\x11\\x00\\x02\\x0f\\x00\\x00\\x6f\\x00\\x03\\x11\\x00\\x02\\x10\\x00\\x00\\x52\\x00\\x03\\x0f\\x00\\x02\\x11\\x00\\x00\\x72\\x00\\x03\\x0f\\x00\\x02\\x12\\x00\\x00\\x52\\x00\\x03\\x11\\x00\\x02\\x13\\x00\\x00\\x72\\x00\\x03\\x11\\x00\\x02\\x14\\x00\\x00\\x55\\x00\\x03\\x0f\\x00\\x02\\x15\\x00\\x00\\x75\\x00\\x03\\x0f\\x00\\x02\\x16\\x00\\x00\\x55\\x00\\x03\\x11\\x00\\x02\\x17\\x00\\x00\\x75\\x00\\x03\\x11\\x00\\x02\\x18\\x00\\x00\\x53\\x00\\x03\\x26\\x00\\x02\\x19\\x00\\x00\\x73\\x00\\x03\\x26\\x00\\x02\\x1a\\x00\\x00\\x54\\x00\\x03\\x26\\x00\\x02\\x1b\\x00\\x00\\x74\\x00\\x03\\x26\\x00\\x02\\x1e\\x00\\x00\\x48\\x00\\x03\\x0c\\x00\\x02\\x1f\\x00\\x00\\x68\\x00\\x03\\x0c\\x00\\x02\\x26\\x00\\x00\\x41\\x00\\x03\\x07\\x00\\x02\\x27\\x00\\x00\\x61\\x00\\x03\\x07\\x00\\x02\\x28\\x00\\x00\\x45\\x00\\x03\\x27\\x00\\x02\\x29\\x00\\x00\\x65\\x00\\x03\\x27\\x00\\x02\\x2a\\x00\\x00\\xd6\\x00\\x03\\x04\\x00\\x02\\x2b\\x00\\x00\\xf6\\x00\\x03\\x04\\x00\\x02\\x2c\\x00\\x00\\xd5\\x00\\x03\\x04\\x00\\x02\\x2d\\x00\\x00\\xf5\\x00\\x03\\x04\\x00\\x02\\x2e\\x00\\x00\\x4f\\x00\\x03\\x07\\x00\\x02\\x2f\\x00\\x00\\x6f\\x00\\x03\\x07\\x00\\x02\\x30\\x00\\x02\\x2e\\x00\\x03\\x04\\x00\\x02\\x31\\x00\\x02\\x2f\\x00\\x03\\x04\\x00\\x02\\x32\\x00\\x00\\x59\\x00\\x03\\x04\\x00\\x02\\x33\\x00\\x00\\x79\\x00\\x03\\x04\\x00\\x03\\x44\\x00\\x03\\x08\\x00\\x03\\x01\\x00\\x03\\x85\\x00\\x00\\xa8\\x00\\x03\\x01\\x00\\x03\\x86\\x00\\x03\\x91\\x00\\x03\\x01\\x00\\x03\\x88\\x00\\x03\\x95\\x00\\x03\\x01\\x00\\x03\\x89\\x00\\x03\\x97\\x00\\x03\\x01\\x00\\x03\\x8a\\x00\\x03\\x99\\x00\\x03\\x01\\x00\\x03\\x8c\\x00\\x03\\x9f\\x00\\x03\\x01\\x00\\x03\\x8e\\x00\\x03\\xa5\\x00\\x03\\x01\\x00\\x03\\x8f\\x00\\x03\\xa9\\x00\\x03\\x01\\x00\\x03\\x90\\x00\\x03\\xca\\x00\\x03\\x01\\x00\\x03\\xaa\\x00\\x03\\x99\\x00\\x03\\x08\\x00\\x03\\xab\\x00\\x03\\xa5\\x00\\x03\\x08\\x00\\x03\\xac\\x00\\x03\\xb1\\x00\\x03\\x01\\x00\\x03\\xad\\x00\\x03\\xb5\\x00\\x03\\x01\\x00\\x03\\xae\\x00\\x03\\xb7\\x00\\x03\\x01\\x00\\x03\\xaf\\x00\\x03\\xb9\\x00\\x03\\x01\\x00\\x03\\xb0\\x00\\x03\\xcb\\x00\\x03\\x01\\x00\\x03\\xca\\x00\\x03\\xb9\\x00\\x03\\x08\\x00\\x03\\xcb\\x00\\x03\\xc5\\x00\\x03\\x08\\x00\\x03\\xcc\\x00\\x03\\xbf\\x00\\x03\\x01\\x00\\x03\\xcd\\x00\\x03\\xc5\\x00\\x03\\x01\\x00\\x03\\xce\\x00\\x03\\xc9\\x00\\x03\\x01\\x00\\x03\\xd3\\x00\\x03\\xd2\\x00\\x03\\x01\\x00\\x03\\xd4\\x00\\x03\\xd2\\x00\\x03\\x08\\x00\\x04\\x00\\x00\\x04\\x15\\x00\\x03\\x00\\x00\\x04\\x01\\x00\\x04\\x15\\x00\\x03\\x08\\x00\\x04\\x03\\x00\\x04\\x13\\x00\\x03\\x01\\x00\\x04\\x07\\x00\\x04\\x06\\x00\\x03\\x08\\x00\\x04\\x0c\\x00\\x04\\x1a\\x00\\x03\\x01\\x00\\x04\\x0d\\x00\\x04\\x18\\x00\\x03\\x00\\x00\\x04\\x0e\\x00\\x04\\x23\\x00\\x03\\x06\\x00\\x04\\x19\\x00\\x04\\x18\\x00\\x03\\x06\\x00\\x04\\x39\\x00\\x04\\x38\\x00\\x03\\x06\\x00\\x04\\x50\\x00\\x04\\x35\\x00\\x03\\x00\\x00\\x04\\x51\\x00\\x04\\x35\\x00\\x03\\x08\\x00\\x04\\x53\\x00\\x04\\x33\\x00\\x03\\x01\\x00\\x04\\x57\\x00\\x04\\x56\\x00\\x03\\x08\\x00\\x04\\x5c\\x00\\x04\\x3a\\x00\\x03\\x01\\x00\\x04\\x5d\\x00\\x04\\x38\\x00\\x03\\x00\\x00\\x04\\x5e\\x00\\x04\\x43\\x00\\x03\\x06\\x00\\x04\\x76\\x00\\x04\\x74\\x00\\x03\\x0f\\x00\\x04\\x77\\x00\\x04\\x75\\x00\\x03\\x0f\\x00\\x04\\xc1\\x00\\x04\\x16\\x00\\x03\\x06\\x00\\x04\\xc2\\x00\\x04\\x36\\x00\\x03\\x06\\x00\\x04\\xd0\\x00\\x04\\x10\\x00\\x03\\x06\\x00\\x04\\xd1\\x00\\x04\\x30\\x00\\x03\\x06\\x00\\x04\\xd2\\x00\\x04\\x10\\x00\\x03\\x08\\x00\\x04\\xd3\\x00\\x04\\x30\\x00\\x03\\x08\\x00\\x04\\xd6\\x00\\x04\\x15\\x00\\x03\\x06\\x00\\x04\\xd7\\x00\\x04\\x35\\x00\\x03\\x06\\x00\\x04\\xda\\x00\\x04\\xd8\\x00\\x03\\x08\\x00\\x04\\xdb\\x00\\x04\\xd9\\x00\\x03\\x08\\x00\\x04\\xdc\\x00\\x04\\x16\\x00\\x03\\x08\\x00\\x04\\xdd\\x00\\x04\\x36\\x00\\x03\\x08\\x00\\x04\\xde\\x00\\x04\\x17\\x00\\x03\\x08\\x00\\x04\\xdf\\x00\\x04\\x37\\x00\\x03\\x08\\x00\\x04\\xe2\\x00\\x04\\x18\\x00\\x03\\x04\\x00\\x04\\xe3\\x00\\x04\\x38\\x00\\x03\\x04\\x00\\x04\\xe4\\x00\\x04\\x18\\x00\\x03\\x08\\x00\\x04\\xe5\\x00\\x04\\x38\\x00\\x03\\x08\\x00\\x04\\xe6\\x00\\x04\\x1e\\x00\\x03\\x08\\x00\\x04\\xe7\\x00\\x04\\x3e\\x00\\x03\\x08\\x00\\x04\\xea\\x00\\x04\\xe8\\x00\\x03\\x08\\x00\\x04\\xeb\\x00\\x04\\xe9\\x00\\x03\\x08\\x00\\x04\\xec\\x00\\x04\\x2d\\x00\\x03\\x08\\x00\\x04\\xed\\x00\\x04\\x4d\\x00\\x03\\x08\\x00\\x04\\xee\\x00\\x04\\x23\\x00\\x03\\x04\\x00\\x04\\xef\\x00\\x04\\x43\\x00\\x03\\x04\\x00\\x04\\xf0\\x00\\x04\\x23\\x00\\x03\\x08\\x00\\x04\\xf1\\x00\\x04\\x43\\x00\\x03\\x08\\x00\\x04\\xf2\\x00\\x04\\x23\\x00\\x03\\x0b\\x00\\x04\\xf3\\x00\\x04\\x43\\x00\\x03\\x0b\\x00\\x04\\xf4\\x00\\x04\\x27\\x00\\x03\\x08\\x00\\x04\\xf5\\x00\\x04\\x47\\x00\\x03\\x08\\x00\\x04\\xf8\\x00\\x04\\x2b\\x00\\x03\\x08\\x00\\x04\\xf9\\x00\\x04\\x4b\\x00\\x03\\x08\\x00\\x06\\x22\\x00\\x06\\x27\\x00\\x06\\x53\\x00\\x06\\x23\\x00\\x06\\x27\\x00\\x06\\x54\\x00\\x06\\x24\\x00\\x06\\x48\\x00\\x06\\x54\\x00\\x06\\x25\\x00\\x06\\x27\\x00\\x06\\x55\\x00\\x06\\x26\\x00\\x06\\x4a\\x00\\x06\\x54\\x00\\x06\\xc0\\x00\\x06\\xd5\\x00\\x06\\x54\\x00\\x06\\xc2\\x00\\x06\\xc1\\x00\\x06\\x54\\x00\\x06\\xd3\\x00\\x06\\xd2\\x00\\x06\\x54\\x00\\x09\\x29\\x00\\x09\\x28\\x00\\x09\\x3c\\x00\\x09\\x31\\x00\\x09\\x30\\x00\\x09\\x3c\\x00\\x09\\x34\\x00\\x09\\x33\\x00\\x09\\x3c\\x00\\x09\\x58\\x00\\x09\\x15\\x00\\x09\\x3c\\x00\\x09\\x59\\x00\\x09\\x16\\x00\\x09\\x3c\\x00\\x09\\x5a\\x00\\x09\\x17\\x00\\x09\\x3c\\x00\\x09\\x5b\\x00\\x09\\x1c\\x00\\x09\\x3c\\x00\\x09\\x5c\\x00\\x09\\x21\\x00\\x09\\x3c\\x00\\x09\\x5d\\x00\\x09\\x22\\x00\\x09\\x3c\\x00\\x09\\x5e\\x00\\x09\\x2b\\x00\\x09\\x3c\\x00\\x09\\x5f\\x00\\x09\\x2f\\x00\\x09\\x3c\\x00\\x09\\xcb\\x00\\x09\\xc7\\x00\\x09\\xbe\\x00\\x09\\xcc\\x00\\x09\\xc7\\x00\\x09\\xd7\\x00\\x09\\xdc\\x00\\x09\\xa1\\x00\\x09\\xbc\\x00\\x09\\xdd\\x00\\x09\\xa2\\x00\\x09\\xbc\\x00\\x09\\xdf\\x00\\x09\\xaf\\x00\\x09\\xbc\\x00\\x0a\\x33\\x00\\x0a\\x32\\x00\\x0a\\x3c\\x00\\x0a\\x36\\x00\\x0a\\x38\\x00\\x0a\\x3c\\x00\\x0a\\x59\\x00\\x0a\\x16\\x00\\x0a\\x3c\\x00\\x0a\\x5a\\x00\\x0a\\x17\\x00\\x0a\\x3c\\x00\\x0a\\x5b\\x00\\x0a\\x1c\\x00\\x0a\\x3c\\x00\\x0a\\x5e\\x00\\x0a\\x2b\\x00\\x0a\\x3c\\x00\\x0b\\x48\\x00\\x0b\\x47\\x00\\x0b\\x56\\x00\\x0b\\x4b\\x00\\x0b\\x47\\x00\\x0b\\x3e\\x00\\x0b\\x4c\\x00\\x0b\\x47\\x00\\x0b\\x57\\x00\\x0b\\x5c\\x00\\x0b\\x21\\x00\\x0b\\x3c\\x00\\x0b\\x5d\\x00\\x0b\\x22\\x00\\x0b\\x3c\\x00\\x0b\\x94\\x00\\x0b\\x92\\x00\\x0b\\xd7\\x00\\x0b\\xca\\x00\\x0b\\xc6\\x00\\x0b\\xbe\\x00\\x0b\\xcb\\x00\\x0b\\xc7\\x00\\x0b\\xbe\\x00\\x0b\\xcc\\x00\\x0b\\xc6\\x00\\x0b\\xd7\\x00\\x0c\\x48\\x00\\x0c\\x46\\x00\\x0c\\x56\\x00\\x0c\\xc0\\x00\\x0c\\xbf\\x00\\x0c\\xd5\\x00\\x0c\\xc7\\x00\\x0c\\xc6\\x00\\x0c\\xd5\\x00\\x0c\\xc8\\x00\\x0c\\xc6\\x00\\x0c\\xd6\\x00\\x0c\\xca\\x00\\x0c\\xc6\\x00\\x0c\\xc2\\x00\\x0c\\xcb\\x00\\x0c\\xca\\x00\\x0c\\xd5\\x00\\x0d\\x4a\\x00\\x0d\\x46\\x00\\x0d\\x3e\\x00\\x0d\\x4b\\x00\\x0d\\x47\\x00\\x0d\\x3e\\x00\\x0d\\x4c\\x00\\x0d\\x46\\x00\\x0d\\x57\\x00\\x0d\\xda\\x00\\x0d\\xd9\\x00\\x0d\\xca\\x00\\x0d\\xdc\\x00\\x0d\\xd9\\x00\\x0d\\xcf\\x00\\x0d\\xdd\\x00\\x0d\\xdc\\x00\\x0d\\xca\\x00\\x0d\\xde\\x00\\x0d\\xd9\\x00\\x0d\\xdf\\x00\\x0f\\x43\\x00\\x0f\\x42\\x00\\x0f\\xb7\\x00\\x0f\\x4d\\x00\\x0f\\x4c\\x00\\x0f\\xb7\\x00\\x0f\\x52\\x00\\x0f\\x51\\x00\\x0f\\xb7\\x00\\x0f\\x57\\x00\\x0f\\x56\\x00\\x0f\\xb7\\x00\\x0f\\x5c\\x00\\x0f\\x5b\\x00\\x0f\\xb7\\x00\\x0f\\x69\\x00\\x0f\\x40\\x00\\x0f\\xb5\\x00\\x0f\\x73\\x00\\x0f\\x71\\x00\\x0f\\x72\\x00\\x0f\\x75\\x00\\x0f\\x71\\x00\\x0f\\x74\\x00\\x0f\\x76\\x00\\x0f\\xb2\\x00\\x0f\\x80\\x00\\x0f\\x78\\x00\\x0f\\xb3\\x00\\x0f\\x80\\x00\\x0f\\x81\\x00\\x0f\\x71\\x00\\x0f\\x80\\x00\\x0f\\x93\\x00\\x0f\\x92\\x00\\x0f\\xb7\\x00\\x0f\\x9d\\x00\\x0f\\x9c\\x00\\x0f\\xb7\\x00\\x0f\\xa2\\x00\\x0f\\xa1\\x00\\x0f\\xb7\\x00\\x0f\\xa7\\x00\\x0f\\xa6\\x00\\x0f\\xb7\\x00\\x0f\\xac\\x00\\x0f\\xab\\x00\\x0f\\xb7\\x00\\x0f\\xb9\\x00\\x0f\\x90\\x00\\x0f\\xb5\\x00\\x10\\x26\\x00\\x10\\x25\\x00\\x10\\x2e\\x00\\x1b\\x06\\x00\\x1b\\x05\\x00\\x1b\\x35\\x00\\x1b\\x08\\x00\\x1b\\x07\\x00\\x1b\\x35\\x00\\x1b\\x0a\\x00\\x1b\\x09\\x00\\x1b\\x35\\x00\\x1b\\x0c\\x00\\x1b\\x0b\\x00\\x1b\\x35\\x00\\x1b\\x0e\\x00\\x1b\\x0d\\x00\\x1b\\x35\\x00\\x1b\\x12\\x00\\x1b\\x11\\x00\\x1b\\x35\\x00\\x1b\\x3b\\x00\\x1b\\x3a\\x00\\x1b\\x35\\x00\\x1b\\x3d\\x00\\x1b\\x3c\\x00\\x1b\\x35\\x00\\x1b\\x40\\x00\\x1b\\x3e\\x00\\x1b\\x35\\x00\\x1b\\x41\\x00\\x1b\\x3f\\x00\\x1b\\x35\\x00\\x1b\\x43\\x00\\x1b\\x42\\x00\\x1b\\x35\\x00\\x1e\\x00\\x00\\x00\\x41\\x00\\x03\\x25\\x00\\x1e\\x01\\x00\\x00\\x61\\x00\\x03\\x25\\x00\\x1e\\x02\\x00\\x00\\x42\\x00\\x03\\x07\\x00\\x1e\\x03\\x00\\x00\\x62\\x00\\x03\\x07\\x00\\x1e\\x04\\x00\\x00\\x42\\x00\\x03\\x23\\x00\\x1e\\x05\\x00\\x00\\x62\\x00\\x03\\x23\\x00\\x1e\\x06\\x00\\x00\\x42\\x00\\x03\\x31\\x00\\x1e\\x07\\x00\\x00\\x62\\x00\\x03\\x31\\x00\\x1e\\x08\\x00\\x00\\xc7\\x00\\x03\\x01\\x00\\x1e\\x09\\x00\\x00\\xe7\\x00\\x03\\x01\\x00\\x1e\\x0a\\x00\\x00\\x44\\x00\\x03\\x07\\x00\\x1e\\x0b\\x00\\x00\\x64\\x00\\x03\\x07\\x00\\x1e\\x0c\\x00\\x00\\x44\\x00\\x03\\x23\\x00\\x1e\\x0d\\x00\\x00\\x64\\x00\\x03\\x23\\x00\\x1e\\x0e\\x00\\x00\\x44\\x00\\x03\\x31\\x00\\x1e\\x0f\\x00\\x00\\x64\\x00\\x03\\x31\\x00\\x1e\\x10\\x00\\x00\\x44\\x00\\x03\\x27\\x00\\x1e\\x11\\x00\\x00\\x64\\x00\\x03\\x27\\x00\\x1e\\x12\\x00\\x00\\x44\\x00\\x03\\x2d\\x00\\x1e\\x13\\x00\\x00\\x64\\x00\\x03\\x2d\\x00\\x1e\\x14\\x00\\x01\\x12\\x00\\x03\\x00\\x00\\x1e\\x15\\x00\\x01\\x13\\x00\\x03\\x00\\x00\\x1e\\x16\\x00\\x01\\x12\\x00\\x03\\x01\\x00\\x1e\\x17\\x00\\x01\\x13\\x00\\x03\\x01\\x00\\x1e\\x18\\x00\\x00\\x45\\x00\\x03\\x2d\\x00\\x1e\\x19\\x00\\x00\\x65\\x00\\x03\\x2d\\x00\\x1e\\x1a\\x00\\x00\\x45\\x00\\x03\\x30\\x00\\x1e\\x1b\\x00\\x00\\x65\\x00\\x03\\x30\\x00\\x1e\\x1c\\x00\\x02\\x28\\x00\\x03\\x06\\x00\\x1e\\x1d\\x00\\x02\\x29\\x00\\x03\\x06\\x00\\x1e\\x1e\\x00\\x00\\x46\\x00\\x03\\x07\\x00\\x1e\\x1f\\x00\\x00\\x66\\x00\\x03\\x07\\x00\\x1e\\x20\\x00\\x00\\x47\\x00\\x03\\x04\\x00\\x1e\\x21\\x00\\x00\\x67\\x00\\x03\\x04\\x00\\x1e\\x22\\x00\\x00\\x48\\x00\\x03\\x07\\x00\\x1e\\x23\\x00\\x00\\x68\\x00\\x03\\x07\\x00\\x1e\\x24\\x00\\x00\\x48\\x00\\x03\\x23\\x00\\x1e\\x25\\x00\\x00\\x68\\x00\\x03\\x23\\x00\\x1e\\x26\\x00\\x00\\x48\\x00\\x03\\x08\\x00\\x1e\\x27\\x00\\x00\\x68\\x00\\x03\\x08\\x00\\x1e\\x28\\x00\\x00\\x48\\x00\\x03\\x27\\x00\\x1e\\x29\\x00\\x00\\x68\\x00\\x03\\x27\\x00\\x1e\\x2a\\x00\\x00\\x48\\x00\\x03\\x2e\\x00\\x1e\\x2b\\x00\\x00\\x68\\x00\\x03\\x2e\\x00\\x1e\\x2c\\x00\\x00\\x49\\x00\\x03\\x30\\x00\\x1e\\x2d\\x00\\x00\\x69\\x00\\x03\\x30\\x00\\x1e\\x2e\\x00\\x00\\xcf\\x00\\x03\\x01\\x00\\x1e\\x2f\\x00\\x00\\xef\\x00\\x03\\x01\\x00\\x1e\\x30\\x00\\x00\\x4b\\x00\\x03\\x01\\x00\\x1e\\x31\\x00\\x00\\x6b\\x00\\x03\\x01\\x00\\x1e\\x32\\x00\\x00\\x4b\\x00\\x03\\x23\\x00\\x1e\\x33\\x00\\x00\\x6b\\x00\\x03\\x23\\x00\\x1e\\x34\\x00\\x00\\x4b\\x00\\x03\\x31\\x00\\x1e\\x35\\x00\\x00\\x6b\\x00\\x03\\x31\\x00\\x1e\\x36\\x00\\x00\\x4c\\x00\\x03\\x23\\x00\\x1e\\x37\\x00\\x00\\x6c\\x00\\x03\\x23\\x00\\x1e\\x38\\x00\\x1e\\x36\\x00\\x03\\x04\\x00\\x1e\\x39\\x00\\x1e\\x37\\x00\\x03\\x04\\x00\\x1e\\x3a\\x00\\x00\\x4c\\x00\\x03\\x31\\x00\\x1e\\x3b\\x00\\x00\\x6c\\x00\\x03\\x31\\x00\\x1e\\x3c\\x00\\x00\\x4c\\x00\\x03\\x2d\\x00\\x1e\\x3d\\x00\\x00\\x6c\\x00\\x03\\x2d\\x00\\x1e\\x3e\\x00\\x00\\x4d\\x00\\x03\\x01\\x00\\x1e\\x3f\\x00\\x00\\x6d\\x00\\x03\\x01\\x00\\x1e\\x40\\x00\\x00\\x4d\\x00\\x03\\x07\\x00\\x1e\\x41\\x00\\x00\\x6d\\x00\\x03\\x07\\x00\\x1e\\x42\\x00\\x00\\x4d\\x00\\x03\\x23\\x00\\x1e\\x43\\x00\\x00\\x6d\\x00\\x03\\x23\\x00\\x1e\\x44\\x00\\x00\\x4e\\x00\\x03\\x07\\x00\\x1e\\x45\\x00\\x00\\x6e\\x00\\x03\\x07\\x00\\x1e\\x46\\x00\\x00\\x4e\\x00\\x03\\x23\\x00\\x1e\\x47\\x00\\x00\\x6e\\x00\\x03\\x23\\x00\\x1e\\x48\\x00\\x00\\x4e\\x00\\x03\\x31\\x00\\x1e\\x49\\x00\\x00\\x6e\\x00\\x03\\x31\\x00\\x1e\\x4a\\x00\\x00\\x4e\\x00\\x03\\x2d\\x00\\x1e\\x4b\\x00\\x00\\x6e\\x00\\x03\\x2d\\x00\\x1e\\x4c\\x00\\x00\\xd5\\x00\\x03\\x01\\x00\\x1e\\x4d\\x00\\x00\\xf5\\x00\\x03\\x01\\x00\\x1e\\x4e\\x00\\x00\\xd5\\x00\\x03\\x08\\x00\\x1e\\x4f\\x00\\x00\\xf5\\x00\\x03\\x08\\x00\\x1e\\x50\\x00\\x01\\x4c\\x00\\x03\\x00\\x00\\x1e\\x51\\x00\\x01\\x4d\\x00\\x03\\x00\\x00\\x1e\\x52\\x00\\x01\\x4c\\x00\\x03\\x01\\x00\\x1e\\x53\\x00\\x01\\x4d\\x00\\x03\\x01\\x00\\x1e\\x54\\x00\\x00\\x50\\x00\\x03\\x01\\x00\\x1e\\x55\\x00\\x00\\x70\\x00\\x03\\x01\\x00\\x1e\\x56\\x00\\x00\\x50\\x00\\x03\\x07\\x00\\x1e\\x57\\x00\\x00\\x70\\x00\\x03\\x07\\x00\\x1e\\x58\\x00\\x00\\x52\\x00\\x03\\x07\\x00\\x1e\\x59\\x00\\x00\\x72\\x00\\x03\\x07\\x00\\x1e\\x5a\\x00\\x00\\x52\\x00\\x03\\x23\\x00\\x1e\\x5b\\x00\\x00\\x72\\x00\\x03\\x23\\x00\\x1e\\x5c\\x00\\x1e\\x5a\\x00\\x03\\x04\\x00\\x1e\\x5d\\x00\\x1e\\x5b\\x00\\x03\\x04\\x00\\x1e\\x5e\\x00\\x00\\x52\\x00\\x03\\x31\\x00\\x1e\\x5f\\x00\\x00\\x72\\x00\\x03\\x31\\x00\\x1e\\x60\\x00\\x00\\x53\\x00\\x03\\x07\\x00\\x1e\\x61\\x00\\x00\\x73\\x00\\x03\\x07\\x00\\x1e\\x62\\x00\\x00\\x53\\x00\\x03\\x23\\x00\\x1e\\x63\\x00\\x00\\x73\\x00\\x03\\x23\\x00\\x1e\\x64\\x00\\x01\\x5a\\x00\\x03\\x07\\x00\\x1e\\x65\\x00\\x01\\x5b\\x00\\x03\\x07\\x00\\x1e\\x66\\x00\\x01\\x60\\x00\\x03\\x07\\x00\\x1e\\x67\\x00\\x01\\x61\\x00\\x03\\x07\\x00\\x1e\\x68\\x00\\x1e\\x62\\x00\\x03\\x07\\x00\\x1e\\x69\\x00\\x1e\\x63\\x00\\x03\\x07\\x00\\x1e\\x6a\\x00\\x00\\x54\\x00\\x03\\x07\\x00\\x1e\\x6b\\x00\\x00\\x74\\x00\\x03\\x07\\x00\\x1e\\x6c\\x00\\x00\\x54\\x00\\x03\\x23\\x00\\x1e\\x6d\\x00\\x00\\x74\\x00\\x03\\x23\\x00\\x1e\\x6e\\x00\\x00\\x54\\x00\\x03\\x31\\x00\\x1e\\x6f\\x00\\x00\\x74\\x00\\x03\\x31\\x00\\x1e\\x70\\x00\\x00\\x54\\x00\\x03\\x2d\\x00\\x1e\\x71\\x00\\x00\\x74\\x00\\x03\\x2d\\x00\\x1e\\x72\\x00\\x00\\x55\\x00\\x03\\x24\\x00\\x1e\\x73\\x00\\x00\\x75\\x00\\x03\\x24\\x00\\x1e\\x74\\x00\\x00\\x55\\x00\\x03\\x30\\x00\\x1e\\x75\\x00\\x00\\x75\\x00\\x03\\x30\\x00\\x1e\\x76\\x00\\x00\\x55\\x00\\x03\\x2d\\x00\\x1e\\x77\\x00\\x00\\x75\\x00\\x03\\x2d\\x00\\x1e\\x78\\x00\\x01\\x68\\x00\\x03\\x01\\x00\\x1e\\x79\\x00\\x01\\x69\\x00\\x03\\x01\\x00\\x1e\\x7a\\x00\\x01\\x6a\\x00\\x03\\x08\\x00\\x1e\\x7b\\x00\\x01\\x6b\\x00\\x03\\x08\\x00\\x1e\\x7c\\x00\\x00\\x56\\x00\\x03\\x03\\x00\\x1e\\x7d\\x00\\x00\\x76\\x00\\x03\\x03\\x00\\x1e\\x7e\\x00\\x00\\x56\\x00\\x03\\x23\\x00\\x1e\\x7f\\x00\\x00\\x76\\x00\\x03\\x23\\x00\\x1e\\x80\\x00\\x00\\x57\\x00\\x03\\x00\\x00\\x1e\\x81\\x00\\x00\\x77\\x00\\x03\\x00\\x00\\x1e\\x82\\x00\\x00\\x57\\x00\\x03\\x01\\x00\\x1e\\x83\\x00\\x00\\x77\\x00\\x03\\x01\\x00\\x1e\\x84\\x00\\x00\\x57\\x00\\x03\\x08\\x00\\x1e\\x85\\x00\\x00\\x77\\x00\\x03\\x08\\x00\\x1e\\x86\\x00\\x00\\x57\\x00\\x03\\x07\\x00\\x1e\\x87\\x00\\x00\\x77\\x00\\x03\\x07\\x00\\x1e\\x88\\x00\\x00\\x57\\x00\\x03\\x23\\x00\\x1e\\x89\\x00\\x00\\x77\\x00\\x03\\x23\\x00\\x1e\\x8a\\x00\\x00\\x58\\x00\\x03\\x07\\x00\\x1e\\x8b\\x00\\x00\\x78\\x00\\x03\\x07\\x00\\x1e\\x8c\\x00\\x00\\x58\\x00\\x03\\x08\\x00\\x1e\\x8d\\x00\\x00\\x78\\x00\\x03\\x08\\x00\\x1e\\x8e\\x00\\x00\\x59\\x00\\x03\\x07\\x00\\x1e\\x8f\\x00\\x00\\x79\\x00\\x03\\x07\\x00\\x1e\\x90\\x00\\x00\\x5a\\x00\\x03\\x02\\x00\\x1e\\x91\\x00\\x00\\x7a\\x00\\x03\\x02\\x00\\x1e\\x92\\x00\\x00\\x5a\\x00\\x03\\x23\\x00\\x1e\\x93\\x00\\x00\\x7a\\x00\\x03\\x23\\x00\\x1e\\x94\\x00\\x00\\x5a\\x00\\x03\\x31\\x00\\x1e\\x95\\x00\\x00\\x7a\\x00\\x03\\x31\\x00\\x1e\\x96\\x00\\x00\\x68\\x00\\x03\\x31\\x00\\x1e\\x97\\x00\\x00\\x74\\x00\\x03\\x08\\x00\\x1e\\x98\\x00\\x00\\x77\\x00\\x03\\x0a\\x00\\x1e\\x99\\x00\\x00\\x79\\x00\\x03\\x0a\\x00\\x1e\\x9b\\x00\\x01\\x7f\\x00\\x03\\x07\\x00\\x1e\\xa0\\x00\\x00\\x41\\x00\\x03\\x23\\x00\\x1e\\xa1\\x00\\x00\\x61\\x00\\x03\\x23\\x00\\x1e\\xa2\\x00\\x00\\x41\\x00\\x03\\x09\\x00\\x1e\\xa3\\x00\\x00\\x61\\x00\\x03\\x09\\x00\\x1e\\xa4\\x00\\x00\\xc2\\x00\\x03\\x01\\x00\\x1e\\xa5\\x00\\x00\\xe2\\x00\\x03\\x01\\x00\\x1e\\xa6\\x00\\x00\\xc2\\x00\\x03\\x00\\x00\\x1e\\xa7\\x00\\x00\\xe2\\x00\\x03\\x00\\x00\\x1e\\xa8\\x00\\x00\\xc2\\x00\\x03\\x09\\x00\\x1e\\xa9\\x00\\x00\\xe2\\x00\\x03\\x09\\x00\\x1e\\xaa\\x00\\x00\\xc2\\x00\\x03\\x03\\x00\\x1e\\xab\\x00\\x00\\xe2\\x00\\x03\\x03\\x00\\x1e\\xac\\x00\\x1e\\xa0\\x00\\x03\\x02\\x00\\x1e\\xad\\x00\\x1e\\xa1\\x00\\x03\\x02\\x00\\x1e\\xae\\x00\\x01\\x02\\x00\\x03\\x01\\x00\\x1e\\xaf\\x00\\x01\\x03\\x00\\x03\\x01\\x00\\x1e\\xb0\\x00\\x01\\x02\\x00\\x03\\x00\\x00\\x1e\\xb1\\x00\\x01\\x03\\x00\\x03\\x00\\x00\\x1e\\xb2\\x00\\x01\\x02\\x00\\x03\\x09\\x00\\x1e\\xb3\\x00\\x01\\x03\\x00\\x03\\x09\\x00\\x1e\\xb4\\x00\\x01\\x02\\x00\\x03\\x03\\x00\\x1e\\xb5\\x00\\x01\\x03\\x00\\x03\\x03\\x00\\x1e\\xb6\\x00\\x1e\\xa0\\x00\\x03\\x06\\x00\\x1e\\xb7\\x00\\x1e\\xa1\\x00\\x03\\x06\\x00\\x1e\\xb8\\x00\\x00\\x45\\x00\\x03\\x23\\x00\\x1e\\xb9\\x00\\x00\\x65\\x00\\x03\\x23\\x00\\x1e\\xba\\x00\\x00\\x45\\x00\\x03\\x09\\x00\\x1e\\xbb\\x00\\x00\\x65\\x00\\x03\\x09\\x00\\x1e\\xbc\\x00\\x00\\x45\\x00\\x03\\x03\\x00\\x1e\\xbd\\x00\\x00\\x65\\x00\\x03\\x03\\x00\\x1e\\xbe\\x00\\x00\\xca\\x00\\x03\\x01\\x00\\x1e\\xbf\\x00\\x00\\xea\\x00\\x03\\x01\\x00\\x1e\\xc0\\x00\\x00\\xca\\x00\\x03\\x00\\x00\\x1e\\xc1\\x00\\x00\\xea\\x00\\x03\\x00\\x00\\x1e\\xc2\\x00\\x00\\xca\\x00\\x03\\x09\\x00\\x1e\\xc3\\x00\\x00\\xea\\x00\\x03\\x09\\x00\\x1e\\xc4\\x00\\x00\\xca\\x00\\x03\\x03\\x00\\x1e\\xc5\\x00\\x00\\xea\\x00\\x03\\x03\\x00\\x1e\\xc6\\x00\\x1e\\xb8\\x00\\x03\\x02\\x00\\x1e\\xc7\\x00\\x1e\\xb9\\x00\\x03\\x02\\x00\\x1e\\xc8\\x00\\x00\\x49\\x00\\x03\\x09\\x00\\x1e\\xc9\\x00\\x00\\x69\\x00\\x03\\x09\\x00\\x1e\\xca\\x00\\x00\\x49\\x00\\x03\\x23\\x00\\x1e\\xcb\\x00\\x00\\x69\\x00\\x03\\x23\\x00\\x1e\\xcc\\x00\\x00\\x4f\\x00\\x03\\x23\\x00\\x1e\\xcd\\x00\\x00\\x6f\\x00\\x03\\x23\\x00\\x1e\\xce\\x00\\x00\\x4f\\x00\\x03\\x09\\x00\\x1e\\xcf\\x00\\x00\\x6f\\x00\\x03\\x09\\x00\\x1e\\xd0\\x00\\x00\\xd4\\x00\\x03\\x01\\x00\\x1e\\xd1\\x00\\x00\\xf4\\x00\\x03\\x01\\x00\\x1e\\xd2\\x00\\x00\\xd4\\x00\\x03\\x00\\x00\\x1e\\xd3\\x00\\x00\\xf4\\x00\\x03\\x00\\x00\\x1e\\xd4\\x00\\x00\\xd4\\x00\\x03\\x09\\x00\\x1e\\xd5\\x00\\x00\\xf4\\x00\\x03\\x09\\x00\\x1e\\xd6\\x00\\x00\\xd4\\x00\\x03\\x03\\x00\\x1e\\xd7\\x00\\x00\\xf4\\x00\\x03\\x03\\x00\\x1e\\xd8\\x00\\x1e\\xcc\\x00\\x03\\x02\\x00\\x1e\\xd9\\x00\\x1e\\xcd\\x00\\x03\\x02\\x00\\x1e\\xda\\x00\\x01\\xa0\\x00\\x03\\x01\\x00\\x1e\\xdb\\x00\\x01\\xa1\\x00\\x03\\x01\\x00\\x1e\\xdc\\x00\\x01\\xa0\\x00\\x03\\x00\\x00\\x1e\\xdd\\x00\\x01\\xa1\\x00\\x03\\x00\\x00\\x1e\\xde\\x00\\x01\\xa0\\x00\\x03\\x09\\x00\\x1e\\xdf\\x00\\x01\\xa1\\x00\\x03\\x09\\x00\\x1e\\xe0\\x00\\x01\\xa0\\x00\\x03\\x03\\x00\\x1e\\xe1\\x00\\x01\\xa1\\x00\\x03\\x03\\x00\\x1e\\xe2\\x00\\x01\\xa0\\x00\\x03\\x23\\x00\\x1e\\xe3\\x00\\x01\\xa1\\x00\\x03\\x23\\x00\\x1e\\xe4\\x00\\x00\\x55\\x00\\x03\\x23\\x00\\x1e\\xe5\\x00\\x00\\x75\\x00\\x03\\x23\\x00\\x1e\\xe6\\x00\\x00\\x55\\x00\\x03\\x09\\x00\\x1e\\xe7\\x00\\x00\\x75\\x00\\x03\\x09\\x00\\x1e\\xe8\\x00\\x01\\xaf\\x00\\x03\\x01\\x00\\x1e\\xe9\\x00\\x01\\xb0\\x00\\x03\\x01\\x00\\x1e\\xea\\x00\\x01\\xaf\\x00\\x03\\x00\\x00\\x1e\\xeb\\x00\\x01\\xb0\\x00\\x03\\x00\\x00\\x1e\\xec\\x00\\x01\\xaf\\x00\\x03\\x09\\x00\\x1e\\xed\\x00\\x01\\xb0\\x00\\x03\\x09\\x00\\x1e\\xee\\x00\\x01\\xaf\\x00\\x03\\x03\\x00\\x1e\\xef\\x00\\x01\\xb0\\x00\\x03\\x03\\x00\\x1e\\xf0\\x00\\x01\\xaf\\x00\\x03\\x23\\x00\\x1e\\xf1\\x00\\x01\\xb0\\x00\\x03\\x23\\x00\\x1e\\xf2\\x00\\x00\\x59\\x00\\x03\\x00\\x00\\x1e\\xf3\\x00\\x00\\x79\\x00\\x03\\x00\\x00\\x1e\\xf4\\x00\\x00\\x59\\x00\\x03\\x23\\x00\\x1e\\xf5\\x00\\x00\\x79\\x00\\x03\\x23\\x00\\x1e\\xf6\\x00\\x00\\x59\\x00\\x03\\x09\\x00\\x1e\\xf7\\x00\\x00\\x79\\x00\\x03\\x09\\x00\\x1e\\xf8\\x00\\x00\\x59\\x00\\x03\\x03\\x00\\x1e\\xf9\\x00\\x00\\x79\\x00\\x03\\x03\\x00\\x1f\\x00\\x00\\x03\\xb1\\x00\\x03\\x13\\x00\\x1f\\x01\\x00\\x03\\xb1\\x00\\x03\\x14\\x00\\x1f\\x02\\x00\\x1f\\x00\\x00\\x03\\x00\\x00\\x1f\\x03\\x00\\x1f\\x01\\x00\\x03\\x00\\x00\\x1f\\x04\\x00\\x1f\\x00\\x00\\x03\\x01\\x00\\x1f\\x05\\x00\\x1f\\x01\\x00\\x03\\x01\\x00\\x1f\\x06\\x00\\x1f\\x00\\x00\\x03\\x42\\x00\\x1f\\x07\\x00\\x1f\\x01\\x00\\x03\\x42\\x00\\x1f\\x08\\x00\\x03\\x91\\x00\\x03\\x13\\x00\\x1f\\x09\\x00\\x03\\x91\\x00\\x03\\x14\\x00\\x1f\\x0a\\x00\\x1f\\x08\\x00\\x03\\x00\\x00\\x1f\\x0b\\x00\\x1f\\x09\\x00\\x03\\x00\\x00\\x1f\\x0c\\x00\\x1f\\x08\\x00\\x03\\x01\\x00\\x1f\\x0d\\x00\\x1f\\x09\\x00\\x03\\x01\\x00\\x1f\\x0e\\x00\\x1f\\x08\\x00\\x03\\x42\\x00\\x1f\\x0f\\x00\\x1f\\x09\\x00\\x03\\x42\\x00\\x1f\\x10\\x00\\x03\\xb5\\x00\\x03\\x13\\x00\\x1f\\x11\\x00\\x03\\xb5\\x00\\x03\\x14\\x00\\x1f\\x12\\x00\\x1f\\x10\\x00\\x03\\x00\\x00\\x1f\\x13\\x00\\x1f\\x11\\x00\\x03\\x00\\x00\\x1f\\x14\\x00\\x1f\\x10\\x00\\x03\\x01\\x00\\x1f\\x15\\x00\\x1f\\x11\\x00\\x03\\x01\\x00\\x1f\\x18\\x00\\x03\\x95\\x00\\x03\\x13\\x00\\x1f\\x19\\x00\\x03\\x95\\x00\\x03\\x14\\x00\\x1f\\x1a\\x00\\x1f\\x18\\x00\\x03\\x00\\x00\\x1f\\x1b\\x00\\x1f\\x19\\x00\\x03\\x00\\x00\\x1f\\x1c\\x00\\x1f\\x18\\x00\\x03\\x01\\x00\\x1f\\x1d\\x00\\x1f\\x19\\x00\\x03\\x01\\x00\\x1f\\x20\\x00\\x03\\xb7\\x00\\x03\\x13\\x00\\x1f\\x21\\x00\\x03\\xb7\\x00\\x03\\x14\\x00\\x1f\\x22\\x00\\x1f\\x20\\x00\\x03\\x00\\x00\\x1f\\x23\\x00\\x1f\\x21\\x00\\x03\\x00\\x00\\x1f\\x24\\x00\\x1f\\x20\\x00\\x03\\x01\\x00\\x1f\\x25\\x00\\x1f\\x21\\x00\\x03\\x01\\x00\\x1f\\x26\\x00\\x1f\\x20\\x00\\x03\\x42\\x00\\x1f\\x27\\x00\\x1f\\x21\\x00\\x03\\x42\\x00\\x1f\\x28\\x00\\x03\\x97\\x00\\x03\\x13\\x00\\x1f\\x29\\x00\\x03\\x97\\x00\\x03\\x14\\x00\\x1f\\x2a\\x00\\x1f\\x28\\x00\\x03\\x00\\x00\\x1f\\x2b\\x00\\x1f\\x29\\x00\\x03\\x00\\x00\\x1f\\x2c\\x00\\x1f\\x28\\x00\\x03\\x01\\x00\\x1f\\x2d\\x00\\x1f\\x29\\x00\\x03\\x01\\x00\\x1f\\x2e\\x00\\x1f\\x28\\x00\\x03\\x42\\x00\\x1f\\x2f\\x00\\x1f\\x29\\x00\\x03\\x42\\x00\\x1f\\x30\\x00\\x03\\xb9\\x00\\x03\\x13\\x00\\x1f\\x31\\x00\\x03\\xb9\\x00\\x03\\x14\\x00\\x1f\\x32\\x00\\x1f\\x30\\x00\\x03\\x00\\x00\\x1f\\x33\\x00\\x1f\\x31\\x00\\x03\\x00\\x00\\x1f\\x34\\x00\\x1f\\x30\\x00\\x03\\x01\\x00\\x1f\\x35\\x00\\x1f\\x31\\x00\\x03\\x01\\x00\\x1f\\x36\\x00\\x1f\\x30\\x00\\x03\\x42\\x00\\x1f\\x37\\x00\\x1f\\x31\\x00\\x03\\x42\\x00\\x1f\\x38\\x00\\x03\\x99\\x00\\x03\\x13\\x00\\x1f\\x39\\x00\\x03\\x99\\x00\\x03\\x14\\x00\\x1f\\x3a\\x00\\x1f\\x38\\x00\\x03\\x00\\x00\\x1f\\x3b\\x00\\x1f\\x39\\x00\\x03\\x00\\x00\\x1f\\x3c\\x00\\x1f\\x38\\x00\\x03\\x01\\x00\\x1f\\x3d\\x00\\x1f\\x39\\x00\\x03\\x01\\x00\\x1f\\x3e\\x00\\x1f\\x38\\x00\\x03\\x42\\x00\\x1f\\x3f\\x00\\x1f\\x39\\x00\\x03\\x42\\x00\\x1f\\x40\\x00\\x03\\xbf\\x00\\x03\\x13\\x00\\x1f\\x41\\x00\\x03\\xbf\\x00\\x03\\x14\\x00\\x1f\\x42\\x00\\x1f\\x40\\x00\\x03\\x00\\x00\\x1f\\x43\\x00\\x1f\\x41\\x00\\x03\\x00\\x00\\x1f\\x44\\x00\\x1f\\x40\\x00\\x03\\x01\\x00\\x1f\\x45\\x00\\x1f\\x41\\x00\\x03\\x01\\x00\\x1f\\x48\\x00\\x03\\x9f\\x00\\x03\\x13\\x00\\x1f\\x49\\x00\\x03\\x9f\\x00\\x03\\x14\\x00\\x1f\\x4a\\x00\\x1f\\x48\\x00\\x03\\x00\\x00\\x1f\\x4b\\x00\\x1f\\x49\\x00\\x03\\x00\\x00\\x1f\\x4c\\x00\\x1f\\x48\\x00\\x03\\x01\\x00\\x1f\\x4d\\x00\\x1f\\x49\\x00\\x03\\x01\\x00\\x1f\\x50\\x00\\x03\\xc5\\x00\\x03\\x13\\x00\\x1f\\x51\\x00\\x03\\xc5\\x00\\x03\\x14\\x00\\x1f\\x52\\x00\\x1f\\x50\\x00\\x03\\x00\\x00\\x1f\\x53\\x00\\x1f\\x51\\x00\\x03\\x00\\x00\\x1f\\x54\\x00\\x1f\\x50\\x00\\x03\\x01\\x00\\x1f\\x55\\x00\\x1f\\x51\\x00\\x03\\x01\\x00\\x1f\\x56\\x00\\x1f\\x50\\x00\\x03\\x42\\x00\\x1f\\x57\\x00\\x1f\\x51\\x00\\x03\\x42\\x00\\x1f\\x59\\x00\\x03\\xa5\\x00\\x03\\x14\\x00\\x1f\\x5b\\x00\\x1f\\x59\\x00\\x03\\x00\\x00\\x1f\\x5d\\x00\\x1f\\x59\\x00\\x03\\x01\\x00\\x1f\\x5f\\x00\\x1f\\x59\\x00\\x03\\x42\\x00\\x1f\\x60\\x00\\x03\\xc9\\x00\\x03\\x13\\x00\\x1f\\x61\\x00\\x03\\xc9\\x00\\x03\\x14\\x00\\x1f\\x62\\x00\\x1f\\x60\\x00\\x03\\x00\\x00\\x1f\\x63\\x00\\x1f\\x61\\x00\\x03\\x00\\x00\\x1f\\x64\\x00\\x1f\\x60\\x00\\x03\\x01\\x00\\x1f\\x65\\x00\\x1f\\x61\\x00\\x03\\x01\\x00\\x1f\\x66\\x00\\x1f\\x60\\x00\\x03\\x42\\x00\\x1f\\x67\\x00\\x1f\\x61\\x00\\x03\\x42\\x00\\x1f\\x68\\x00\\x03\\xa9\\x00\\x03\\x13\\x00\\x1f\\x69\\x00\\x03\\xa9\\x00\\x03\\x14\\x00\\x1f\\x6a\\x00\\x1f\\x68\\x00\\x03\\x00\\x00\\x1f\\x6b\\x00\\x1f\\x69\\x00\\x03\\x00\\x00\\x1f\\x6c\\x00\\x1f\\x68\\x00\\x03\\x01\\x00\\x1f\\x6d\\x00\\x1f\\x69\\x00\\x03\\x01\\x00\\x1f\\x6e\\x00\\x1f\\x68\\x00\\x03\\x42\\x00\\x1f\\x6f\\x00\\x1f\\x69\\x00\\x03\\x42\\x00\\x1f\\x70\\x00\\x03\\xb1\\x00\\x03\\x00\\x00\\x1f\\x72\\x00\\x03\\xb5\\x00\\x03\\x00\\x00\\x1f\\x74\\x00\\x03\\xb7\\x00\\x03\\x00\\x00\\x1f\\x76\\x00\\x03\\xb9\\x00\\x03\\x00\\x00\\x1f\\x78\\x00\\x03\\xbf\\x00\\x03\\x00\\x00\\x1f\\x7a\\x00\\x03\\xc5\\x00\\x03\\x00\\x00\\x1f\\x7c\\x00\\x03\\xc9\\x00\\x03\\x00\\x00\\x1f\\x80\\x00\\x1f\\x00\\x00\\x03\\x45\\x00\\x1f\\x81\\x00\\x1f\\x01\\x00\\x03\\x45\\x00\\x1f\\x82\\x00\\x1f\\x02\\x00\\x03\\x45\\x00\\x1f\\x83\\x00\\x1f\\x03\\x00\\x03\\x45\\x00\\x1f\\x84\\x00\\x1f\\x04\\x00\\x03\\x45\\x00\\x1f\\x85\\x00\\x1f\\x05\\x00\\x03\\x45\\x00\\x1f\\x86\\x00\\x1f\\x06\\x00\\x03\\x45\\x00\\x1f\\x87\\x00\\x1f\\x07\\x00\\x03\\x45\\x00\\x1f\\x88\\x00\\x1f\\x08\\x00\\x03\\x45\\x00\\x1f\\x89\\x00\\x1f\\x09\\x00\\x03\\x45\\x00\\x1f\\x8a\\x00\\x1f\\x0a\\x00\\x03\\x45\\x00\\x1f\\x8b\\x00\\x1f\\x0b\\x00\\x03\\x45\\x00\\x1f\\x8c\\x00\\x1f\\x0c\\x00\\x03\\x45\\x00\\x1f\\x8d\\x00\\x1f\\x0d\\x00\\x03\\x45\\x00\\x1f\\x8e\\x00\\x1f\\x0e\\x00\\x03\\x45\\x00\\x1f\\x8f\\x00\\x1f\\x0f\\x00\\x03\\x45\\x00\\x1f\\x90\\x00\\x1f\\x20\\x00\\x03\\x45\\x00\\x1f\\x91\\x00\\x1f\\x21\\x00\\x03\\x45\\x00\\x1f\\x92\\x00\\x1f\\x22\\x00\\x03\\x45\\x00\\x1f\\x93\\x00\\x1f\\x23\\x00\\x03\\x45\\x00\\x1f\\x94\\x00\\x1f\\x24\\x00\\x03\\x45\\x00\\x1f\\x95\\x00\\x1f\\x25\\x00\\x03\\x45\\x00\\x1f\\x96\\x00\\x1f\\x26\\x00\\x03\\x45\\x00\\x1f\\x97\\x00\\x1f\\x27\\x00\\x03\\x45\\x00\\x1f\\x98\\x00\\x1f\\x28\\x00\\x03\\x45\\x00\\x1f\\x99\\x00\\x1f\\x29\\x00\\x03\\x45\\x00\\x1f\\x9a\\x00\\x1f\\x2a\\x00\\x03\\x45\\x00\\x1f\\x9b\\x00\\x1f\\x2b\\x00\\x03\\x45\\x00\\x1f\\x9c\\x00\\x1f\\x2c\\x00\\x03\\x45\\x00\\x1f\\x9d\\x00\\x1f\\x2d\\x00\\x03\\x45\\x00\\x1f\\x9e\\x00\\x1f\\x2e\\x00\\x03\\x45\\x00\\x1f\\x9f\\x00\\x1f\\x2f\\x00\\x03\\x45\\x00\\x1f\\xa0\\x00\\x1f\\x60\\x00\\x03\\x45\\x00\\x1f\\xa1\\x00\\x1f\\x61\\x00\\x03\\x45\\x00\\x1f\\xa2\\x00\\x1f\\x62\\x00\\x03\\x45\\x00\\x1f\\xa3\\x00\\x1f\\x63\\x00\\x03\\x45\\x00\\x1f\\xa4\\x00\\x1f\\x64\\x00\\x03\\x45\\x00\\x1f\\xa5\\x00\\x1f\\x65\\x00\\x03\\x45\\x00\\x1f\\xa6\\x00\\x1f\\x66\\x00\\x03\\x45\\x00\\x1f\\xa7\\x00\\x1f\\x67\\x00\\x03\\x45\\x00\\x1f\\xa8\\x00\\x1f\\x68\\x00\\x03\\x45\\x00\\x1f\\xa9\\x00\\x1f\\x69\\x00\\x03\\x45\\x00\\x1f\\xaa\\x00\\x1f\\x6a\\x00\\x03\\x45\\x00\\x1f\\xab\\x00\\x1f\\x6b\\x00\\x03\\x45\\x00\\x1f\\xac\\x00\\x1f\\x6c\\x00\\x03\\x45\\x00\\x1f\\xad\\x00\\x1f\\x6d\\x00\\x03\\x45\\x00\\x1f\\xae\\x00\\x1f\\x6e\\x00\\x03\\x45\\x00\\x1f\\xaf\\x00\\x1f\\x6f\\x00\\x03\\x45\\x00\\x1f\\xb0\\x00\\x03\\xb1\\x00\\x03\\x06\\x00\\x1f\\xb1\\x00\\x03\\xb1\\x00\\x03\\x04\\x00\\x1f\\xb2\\x00\\x1f\\x70\\x00\\x03\\x45\\x00\\x1f\\xb3\\x00\\x03\\xb1\\x00\\x03\\x45\\x00\\x1f\\xb4\\x00\\x03\\xac\\x00\\x03\\x45\\x00\\x1f\\xb6\\x00\\x03\\xb1\\x00\\x03\\x42\\x00\\x1f\\xb7\\x00\\x1f\\xb6\\x00\\x03\\x45\\x00\\x1f\\xb8\\x00\\x03\\x91\\x00\\x03\\x06\\x00\\x1f\\xb9\\x00\\x03\\x91\\x00\\x03\\x04\\x00\\x1f\\xba\\x00\\x03\\x91\\x00\\x03\\x00\\x00\\x1f\\xbc\\x00\\x03\\x91\\x00\\x03\\x45\\x00\\x1f\\xc1\\x00\\x00\\xa8\\x00\\x03\\x42\\x00\\x1f\\xc2\\x00\\x1f\\x74\\x00\\x03\\x45\\x00\\x1f\\xc3\\x00\\x03\\xb7\\x00\\x03\\x45\\x00\\x1f\\xc4\\x00\\x03\\xae\\x00\\x03\\x45\\x00\\x1f\\xc6\\x00\\x03\\xb7\\x00\\x03\\x42\\x00\\x1f\\xc7\\x00\\x1f\\xc6\\x00\\x03\\x45\\x00\\x1f\\xc8\\x00\\x03\\x95\\x00\\x03\\x00\\x00\\x1f\\xca\\x00\\x03\\x97\\x00\\x03\\x00\\x00\\x1f\\xcc\\x00\\x03\\x97\\x00\\x03\\x45\\x00\\x1f\\xcd\\x00\\x1f\\xbf\\x00\\x03\\x00\\x00\\x1f\\xce\\x00\\x1f\\xbf\\x00\\x03\\x01\\x00\\x1f\\xcf\\x00\\x1f\\xbf\\x00\\x03\\x42\\x00\\x1f\\xd0\\x00\\x03\\xb9\\x00\\x03\\x06\\x00\\x1f\\xd1\\x00\\x03\\xb9\\x00\\x03\\x04\\x00\\x1f\\xd2\\x00\\x03\\xca\\x00\\x03\\x00\\x00\\x1f\\xd6\\x00\\x03\\xb9\\x00\\x03\\x42\\x00\\x1f\\xd7\\x00\\x03\\xca\\x00\\x03\\x42\\x00\\x1f\\xd8\\x00\\x03\\x99\\x00\\x03\\x06\\x00\\x1f\\xd9\\x00\\x03\\x99\\x00\\x03\\x04\\x00\\x1f\\xda\\x00\\x03\\x99\\x00\\x03\\x00\\x00\\x1f\\xdd\\x00\\x1f\\xfe\\x00\\x03\\x00\\x00\\x1f\\xde\\x00\\x1f\\xfe\\x00\\x03\\x01\\x00\\x1f\\xdf\\x00\\x1f\\xfe\\x00\\x03\\x42\\x00\\x1f\\xe0\\x00\\x03\\xc5\\x00\\x03\\x06\\x00\\x1f\\xe1\\x00\\x03\\xc5\\x00\\x03\\x04\\x00\\x1f\\xe2\\x00\\x03\\xcb\\x00\\x03\\x00\\x00\\x1f\\xe4\\x00\\x03\\xc1\\x00\\x03\\x13\\x00\\x1f\\xe5\\x00\\x03\\xc1\\x00\\x03\\x14\\x00\\x1f\\xe6\\x00\\x03\\xc5\\x00\\x03\\x42\\x00\\x1f\\xe7\\x00\\x03\\xcb\\x00\\x03\\x42\\x00\\x1f\\xe8\\x00\\x03\\xa5\\x00\\x03\\x06\\x00\\x1f\\xe9\\x00\\x03\\xa5\\x00\\x03\\x04\\x00\\x1f\\xea\\x00\\x03\\xa5\\x00\\x03\\x00\\x00\\x1f\\xec\\x00\\x03\\xa1\\x00\\x03\\x14\\x00\\x1f\\xed\\x00\\x00\\xa8\\x00\\x03\\x00\\x00\\x1f\\xf2\\x00\\x1f\\x7c\\x00\\x03\\x45\\x00\\x1f\\xf3\\x00\\x03\\xc9\\x00\\x03\\x45\\x00\\x1f\\xf4\\x00\\x03\\xce\\x00\\x03\\x45\\x00\\x1f\\xf6\\x00\\x03\\xc9\\x00\\x03\\x42\\x00\\x1f\\xf7\\x00\\x1f\\xf6\\x00\\x03\\x45\\x00\\x1f\\xf8\\x00\\x03\\x9f\\x00\\x03\\x00\\x00\\x1f\\xfa\\x00\\x03\\xa9\\x00\\x03\\x00\\x00\\x1f\\xfc\\x00\\x03\\xa9\\x00\\x03\\x45\\x00\\x21\\x9a\\x00\\x21\\x90\\x00\\x03\\x38\\x00\\x21\\x9b\\x00\\x21\\x92\\x00\\x03\\x38\\x00\\x21\\xae\\x00\\x21\\x94\\x00\\x03\\x38\\x00\\x21\\xcd\\x00\\x21\\xd0\\x00\\x03\\x38\\x00\\x21\\xce\\x00\\x21\\xd4\\x00\\x03\\x38\\x00\\x21\\xcf\\x00\\x21\\xd2\\x00\\x03\\x38\\x00\\x22\\x04\\x00\\x22\\x03\\x00\\x03\\x38\\x00\\x22\\x09\\x00\\x22\\x08\\x00\\x03\\x38\\x00\\x22\\x0c\\x00\\x22\\x0b\\x00\\x03\\x38\\x00\\x22\\x24\\x00\\x22\\x23\\x00\\x03\\x38\\x00\\x22\\x26\\x00\\x22\\x25\\x00\\x03\\x38\\x00\\x22\\x41\\x00\\x22\\x3c\\x00\\x03\\x38\\x00\\x22\\x44\\x00\\x22\\x43\\x00\\x03\\x38\\x00\\x22\\x47\\x00\\x22\\x45\\x00\\x03\\x38\\x00\\x22\\x49\\x00\\x22\\x48\\x00\\x03\\x38\\x00\\x22\\x60\\x00\\x00\\x3d\\x00\\x03\\x38\\x00\\x22\\x62\\x00\\x22\\x61\\x00\\x03\\x38\\x00\\x22\\x6d\\x00\\x22\\x4d\\x00\\x03\\x38\\x00\\x22\\x6e\\x00\\x00\\x3c\\x00\\x03\\x38\\x00\\x22\\x6f\\x00\\x00\\x3e\\x00\\x03\\x38\\x00\\x22\\x70\\x00\\x22\\x64\\x00\\x03\\x38\\x00\\x22\\x71\\x00\\x22\\x65\\x00\\x03\\x38\\x00\\x22\\x74\\x00\\x22\\x72\\x00\\x03\\x38\\x00\\x22\\x75\\x00\\x22\\x73\\x00\\x03\\x38\\x00\\x22\\x78\\x00\\x22\\x76\\x00\\x03\\x38\\x00\\x22\\x79\\x00\\x22\\x77\\x00\\x03\\x38\\x00\\x22\\x80\\x00\\x22\\x7a\\x00\\x03\\x38\\x00\\x22\\x81\\x00\\x22\\x7b\\x00\\x03\\x38\\x00\\x22\\x84\\x00\\x22\\x82\\x00\\x03\\x38\\x00\\x22\\x85\\x00\\x22\\x83\\x00\\x03\\x38\\x00\\x22\\x88\\x00\\x22\\x86\\x00\\x03\\x38\\x00\\x22\\x89\\x00\\x22\\x87\\x00\\x03\\x38\\x00\\x22\\xac\\x00\\x22\\xa2\\x00\\x03\\x38\\x00\\x22\\xad\\x00\\x22\\xa8\\x00\\x03\\x38\\x00\\x22\\xae\\x00\\x22\\xa9\\x00\\x03\\x38\\x00\\x22\\xaf\\x00\\x22\\xab\\x00\\x03\\x38\\x00\\x22\\xe0\\x00\\x22\\x7c\\x00\\x03\\x38\\x00\\x22\\xe1\\x00\\x22\\x7d\\x00\\x03\\x38\\x00\\x22\\xe2\\x00\\x22\\x91\\x00\\x03\\x38\\x00\\x22\\xe3\\x00\\x22\\x92\\x00\\x03\\x38\\x00\\x22\\xea\\x00\\x22\\xb2\\x00\\x03\\x38\\x00\\x22\\xeb\\x00\\x22\\xb3\\x00\\x03\\x38\\x00\\x22\\xec\\x00\\x22\\xb4\\x00\\x03\\x38\\x00\\x22\\xed\\x00\\x22\\xb5\\x00\\x03\\x38\\x00\\x2a\\xdc\\x00\\x2a\\xdd\\x00\\x03\\x38\\x00\\x30\\x4c\\x00\\x30\\x4b\\x00\\x30\\x99\\x00\\x30\\x4e\\x00\\x30\\x4d\\x00\\x30\\x99\\x00\\x30\\x50\\x00\\x30\\x4f\\x00\\x30\\x99\\x00\\x30\\x52\\x00\\x30\\x51\\x00\\x30\\x99\\x00\\x30\\x54\\x00\\x30\\x53\\x00\\x30\\x99\\x00\\x30\\x56\\x00\\x30\\x55\\x00\\x30\\x99\\x00\\x30\\x58\\x00\\x30\\x57\\x00\\x30\\x99\\x00\\x30\\x5a\\x00\\x30\\x59\\x00\\x30\\x99\\x00\\x30\\x5c\\x00\\x30\\x5b\\x00\\x30\\x99\\x00\\x30\\x5e\\x00\\x30\\x5d\\x00\\x30\\x99\\x00\\x30\\x60\\x00\\x30\\x5f\\x00\\x30\\x99\\x00\\x30\\x62\\x00\\x30\\x61\\x00\\x30\\x99\\x00\\x30\\x65\\x00\\x30\\x64\\x00\\x30\\x99\\x00\\x30\\x67\\x00\\x30\\x66\\x00\\x30\\x99\\x00\\x30\\x69\\x00\\x30\\x68\\x00\\x30\\x99\\x00\\x30\\x70\\x00\\x30\\x6f\\x00\\x30\\x99\\x00\\x30\\x71\\x00\\x30\\x6f\\x00\\x30\\x9a\\x00\\x30\\x73\\x00\\x30\\x72\\x00\\x30\\x99\\x00\\x30\\x74\\x00\\x30\\x72\\x00\\x30\\x9a\\x00\\x30\\x76\\x00\\x30\\x75\\x00\\x30\\x99\\x00\\x30\\x77\\x00\\x30\\x75\\x00\\x30\\x9a\\x00\\x30\\x79\\x00\\x30\\x78\\x00\\x30\\x99\\x00\\x30\\x7a\\x00\\x30\\x78\\x00\\x30\\x9a\\x00\\x30\\x7c\\x00\\x30\\x7b\\x00\\x30\\x99\\x00\\x30\\x7d\\x00\\x30\\x7b\\x00\\x30\\x9a\\x00\\x30\\x94\\x00\\x30\\x46\\x00\\x30\\x99\\x00\\x30\\x9e\\x00\\x30\\x9d\\x00\\x30\\x99\\x00\\x30\\xac\\x00\\x30\\xab\\x00\\x30\\x99\\x00\\x30\\xae\\x00\\x30\\xad\\x00\\x30\\x99\\x00\\x30\\xb0\\x00\\x30\\xaf\\x00\\x30\\x99\\x00\\x30\\xb2\\x00\\x30\\xb1\\x00\\x30\\x99\\x00\\x30\\xb4\\x00\\x30\\xb3\\x00\\x30\\x99\\x00\\x30\\xb6\\x00\\x30\\xb5\\x00\\x30\\x99\\x00\\x30\\xb8\\x00\\x30\\xb7\\x00\\x30\\x99\\x00\\x30\\xba\\x00\\x30\\xb9\\x00\\x30\\x99\\x00\\x30\\xbc\\x00\\x30\\xbb\\x00\\x30\\x99\\x00\\x30\\xbe\\x00\\x30\\xbd\\x00\\x30\\x99\\x00\\x30\\xc0\\x00\\x30\\xbf\\x00\\x30\\x99\\x00\\x30\\xc2\\x00\\x30\\xc1\\x00\\x30\\x99\\x00\\x30\\xc5\\x00\\x30\\xc4\\x00\\x30\\x99\\x00\\x30\\xc7\\x00\\x30\\xc6\\x00\\x30\\x99\\x00\\x30\\xc9\\x00\\x30\\xc8\\x00\\x30\\x99\\x00\\x30\\xd0\\x00\\x30\\xcf\\x00\\x30\\x99\\x00\\x30\\xd1\\x00\\x30\\xcf\\x00\\x30\\x9a\\x00\\x30\\xd3\\x00\\x30\\xd2\\x00\\x30\\x99\\x00\\x30\\xd4\\x00\\x30\\xd2\\x00\\x30\\x9a\\x00\\x30\\xd6\\x00\\x30\\xd5\\x00\\x30\\x99\\x00\\x30\\xd7\\x00\\x30\\xd5\\x00\\x30\\x9a\\x00\\x30\\xd9\\x00\\x30\\xd8\\x00\\x30\\x99\\x00\\x30\\xda\\x00\\x30\\xd8\\x00\\x30\\x9a\\x00\\x30\\xdc\\x00\\x30\\xdb\\x00\\x30\\x99\\x00\\x30\\xdd\\x00\\x30\\xdb\\x00\\x30\\x9a\\x00\\x30\\xf4\\x00\\x30\\xa6\\x00\\x30\\x99\\x00\\x30\\xf7\\x00\\x30\\xef\\x00\\x30\\x99\\x00\\x30\\xf8\\x00\\x30\\xf0\\x00\\x30\\x99\\x00\\x30\\xf9\\x00\\x30\\xf1\\x00\\x30\\x99\\x00\\x30\\xfa\\x00\\x30\\xf2\\x00\\x30\\x99\\x00\\x30\\xfe\\x00\\x30\\xfd\\x00\\x30\\x99\\x00\\xfb\\x1d\\x00\\x05\\xd9\\x00\\x05\\xb4\\x00\\xfb\\x1f\\x00\\x05\\xf2\\x00\\x05\\xb7\\x00\\xfb\\x2a\\x00\\x05\\xe9\\x00\\x05\\xc1\\x00\\xfb\\x2b\\x00\\x05\\xe9\\x00\\x05\\xc2\\x00\\xfb\\x2c\\x00\\xfb\\x49\\x00\\x05\\xc1\\x00\\xfb\\x2d\\x00\\xfb\\x49\\x00\\x05\\xc2\\x00\\xfb\\x2e\\x00\\x05\\xd0\\x00\\x05\\xb7\\x00\\xfb\\x2f\\x00\\x05\\xd0\\x00\\x05\\xb8\\x00\\xfb\\x30\\x00\\x05\\xd0\\x00\\x05\\xbc\\x00\\xfb\\x31\\x00\\x05\\xd1\\x00\\x05\\xbc\\x00\\xfb\\x32\\x00\\x05\\xd2\\x00\\x05\\xbc\\x00\\xfb\\x33\\x00\\x05\\xd3\\x00\\x05\\xbc\\x00\\xfb\\x34\\x00\\x05\\xd4\\x00\\x05\\xbc\\x00\\xfb\\x35\\x00\\x05\\xd5\\x00\\x05\\xbc\\x00\\xfb\\x36\\x00\\x05\\xd6\\x00\\x05\\xbc\\x00\\xfb\\x38\\x00\\x05\\xd8\\x00\\x05\\xbc\\x00\\xfb\\x39\\x00\\x05\\xd9\\x00\\x05\\xbc\\x00\\xfb\\x3a\\x00\\x05\\xda\\x00\\x05\\xbc\\x00\\xfb\\x3b\\x00\\x05\\xdb\\x00\\x05\\xbc\\x00\\xfb\\x3c\\x00\\x05\\xdc\\x00\\x05\\xbc\\x00\\xfb\\x3e\\x00\\x05\\xde\\x00\\x05\\xbc\\x00\\xfb\\x40\\x00\\x05\\xe0\\x00\\x05\\xbc\\x00\\xfb\\x41\\x00\\x05\\xe1\\x00\\x05\\xbc\\x00\\xfb\\x43\\x00\\x05\\xe3\\x00\\x05\\xbc\\x00\\xfb\\x44\\x00\\x05\\xe4\\x00\\x05\\xbc\\x00\\xfb\\x46\\x00\\x05\\xe6\\x00\\x05\\xbc\\x00\\xfb\\x47\\x00\\x05\\xe7\\x00\\x05\\xbc\\x00\\xfb\\x48\\x00\\x05\\xe8\\x00\\x05\\xbc\\x00\\xfb\\x49\\x00\\x05\\xe9\\x00\\x05\\xbc\\x00\\xfb\\x4a\\x00\\x05\\xea\\x00\\x05\\xbc\\x00\\xfb\\x4b\\x00\\x05\\xd5\\x00\\x05\\xb9\\x00\\xfb\\x4c\\x00\\x05\\xd1\\x00\\x05\\xbf\\x00\\xfb\\x4d\\x00\\x05\\xdb\\x00\\x05\\xbf\\x00\\xfb\\x4e\\x00\\x05\\xe4\\x00\\x05\\xbf\\x01\\x05\\xc9\\x01\\x05\\xd2\\x00\\x03\\x07\\x01\\x05\\xe4\\x01\\x05\\xda\\x00\\x03\\x07\\x01\\x10\\x9a\\x01\\x10\\x99\\x01\\x10\\xba\\x01\\x10\\x9c\\x01\\x10\\x9b\\x01\\x10\\xba\\x01\\x10\\xab\\x01\\x10\\xa5\\x01\\x10\\xba\\x01\\x11\\x2e\\x01\\x11\\x31\\x01\\x11\\x27\\x01\\x11\\x2f\\x01\\x11\\x32\\x01\\x11\\x27\\x01\\x13\\x4b\\x01\\x13\\x47\\x01\\x13\\x3e\\x01\\x13\\x4c\\x01\\x13\\x47\\x01\\x13\\x57\\x01\\x13\\x83\\x01\\x13\\x82\\x01\\x13\\xc9\\x01\\x13\\x85\\x01\\x13\\x84\\x01\\x13\\xbb\\x01\\x13\\x8e\\x01\\x13\\x8b\\x01\\x13\\xc2\\x01\\x13\\x91\\x01\\x13\\x90\\x01\\x13\\xc9\\x01\\x13\\xc5\\x01\\x13\\xc2\\x01\\x13\\xc2\\x01\\x13\\xc7\\x01\\x13\\xc2\\x01\\x13\\xb8\\x01\\x13\\xc8\\x01\\x13\\xc2\\x01\\x13\\xc9\\x01\\x14\\xbb\\x01\\x14\\xb9\\x01\\x14\\xba\\x01\\x14\\xbc\\x01\\x14\\xb9\\x01\\x14\\xb0\\x01\\x14\\xbe\\x01\\x14\\xb9\\x01\\x14\\xbd\\x01\\x15\\xba\\x01\\x15\\xb8\\x01\\x15\\xaf\\x01\\x15\\xbb\\x01\\x15\\xb9\\x01\\x15\\xaf\\x01\\x19\\x38\\x01\\x19\\x35\\x01\\x19\\x30\\x01\\x61\\x21\\x01\\x61\\x1e\\x01\\x61\\x1e\\x01\\x61\\x22\\x01\\x61\\x1e\\x01\\x61\\x29\\x01\\x61\\x23\\x01\\x61\\x1e\\x01\\x61\\x1f\\x01\\x61\\x24\\x01\\x61\\x29\\x01\\x61\\x1f\\x01\\x61\\x25\\x01\\x61\\x1e\\x01\\x61\\x20\\x01\\x61\\x26\\x01\\x61\\x21\\x01\\x61\\x1f\\x01\\x61\\x27\\x01\\x61\\x22\\x01\\x61\\x1f\\x01\\x61\\x28\\x01\\x61\\x21\\x01\\x61\\x20\\x01\\x6d\\x68\\x01\\x6d\\x67\\x01\\x6d\\x67\\x01\\x6d\\x69\\x01\\x6d\\x63\\x01\\x6d\\x67\\x01\\x6d\\x6a\\x01\\x6d\\x69\\x01\\x6d\\x67\\x01\\xd1\\x5e\\x01\\xd1\\x57\\x01\\xd1\\x65\\x01\\xd1\\x5f\\x01\\xd1\\x58\\x01\\xd1\\x65\\x01\\xd1\\x60\\x01\\xd1\\x5f\\x01\\xd1\\x6e\\x01\\xd1\\x61\\x01\\xd1\\x5f\\x01\\xd1\\x6f\\x01\\xd1\\x62\\x01\\xd1\\x5f\\x01\\xd1\\x70\\x01\\xd1\\x63\\x01\\xd1\\x5f\\x01\\xd1\\x71\\x01\\xd1\\x64\\x01\\xd1\\x5f\\x01\\xd1\\x72\\x01\\xd1\\xbb\\x01\\xd1\\xb9\\x01\\xd1\\x65\\x01\\xd1\\xbc\\x01\\xd1\\xba\\x01\\xd1\\x65\\x01\\xd1\\xbd\\x01\\xd1\\xbb\\x01\\xd1\\x6e\\x01\\xd1\\xbe\\x01\\xd1\\xbc\\x01\\xd1\\x6e\\x01\\xd1\\xbf\\x01\\xd1\\xbb\\x01\\xd1\\x6f\\x01\\xd1\\xc0\\x01\\xd1\\xbc\\x01\\xd1\\x6f"\n let at = index * 9\n return PairRecord {\n composed: read3(data, at),\n first: read3(data, at + 3),\n second: read3(data, at + 6),\n }\n}\n\n/// Composes a starter and a following scalar, or returns zero when the pair does not compose.\n///\n/// # Details\n///\n/// Excluded composition pairs are absent. A nonzero result is always a primary composite.\n///\n/// # Gotchas\n///\n/// Hangul composition is algorithmic and is not included in this lookup.\npub fn canonicalComposition(first: u32, second: u32) -> u32 {\n let index = b"\\x03\\x71\\x03\\x6e\\x03\\x72\\x00\\x00\\x00\\x01\\x00\\x02\\x00\\x03\\x00\\x35\\x00\\x37\\x00\\xee\\x00\\x04\\x02\\x36\\x00\\x05\\x00\\xa5\\x00\\xd0\\x00\\xd2\\x02\\x34\\x01\\x99\\x00\\x39\\x01\\x9b\\x01\\x9d\\x01\\x9f\\x00\\x3b\\x00\\x3d\\x00\\x3f\\x00\\x41\\x00\\x06\\x01\\xa3\\x00\\x43\\x01\\xa5\\x01\\xa9\\x01\\xab\\x01\\xa7\\x00\\x07\\x00\\x08\\x00\\x09\\x02\\x50\\x00\\x45\\x00\\x47\\x00\\x49\\x00\\x0a\\x02\\x4e\\x00\\x4d\\x00\\xd4\\x00\\xd6\\x02\\x4c\\x00\\xf0\\x00\\x4b\\x01\\xb1\\x01\\xb3\\x01\\xb7\\x00\\xc6\\x00\\x4f\\x01\\xb9\\x00\\x51\\x00\\x53\\x00\\xbb\\x00\\x55\\x00\\x57\\x01\\xbb\\x01\\xbf\\x00\\xec\\x01\\xbd\\x01\\xc1\\x01\\xc3\\x00\\x0b\\x00\\x0c\\x00\\x0d\\x00\\x59\\x00\\x5b\\x00\\x5d\\x00\\x61\\x00\\x0e\\x02\\x5c\\x00\\xa7\\x00\\xd8\\x00\\xda\\x02\\x5e\\x00\\x5f\\x01\\xc5\\x00\\x62\\x01\\xc9\\x00\\xbd\\x01\\xcb\\x00\\x64\\x01\\xcd\\x00\\x66\\x00\\x6a\\x01\\xcf\\x00\\x68\\x01\\xd5\\x01\\xd3\\x01\\xd7\\x01\\xd9\\x01\\xdb\\x00\\xc8\\x00\\x6c\\x00\\x0f\\x01\\xdd\\x00\\x70\\x01\\xdf\\x00\\x6e\\x01\\xe3\\x01\\xe1\\x00\\x10\\x00\\x11\\x00\\x12\\x00\\x13\\x00\\x72\\x00\\x74\\x00\\xf6\\x00\\x14\\x02\\x62\\x00\\x76\\x00\\xa9\\x00\\xdc\\x00\\xde\\x00\\xa1\\x02\\x60\\x00\\xbf\\x01\\xed\\x01\\xef\\x00\\x78\\x01\\xf1\\x00\\x7c\\x00\\xe0\\x00\\xe2\\x01\\xf3\\x00\\x7a\\x01\\xf7\\x00\\x7e\\x00\\x80\\x01\\xf9\\x00\\x84\\x01\\xfb\\x00\\xe8\\x00\\x82\\x02\\x03\\x00\\x88\\x02\\x05\\x00\\xea\\x00\\x86\\x02\\x09\\x02\\x07\\x00\\x15\\x00\\x16\\x00\\x17\\x00\\x8a\\x00\\x8c\\x00\\x8e\\x00\\x18\\x02\\x7a\\x00\\x90\\x00\\x92\\x00\\xab\\x00\\xe4\\x00\\xe6\\x00\\xa3\\x02\\x78\\x02\\x0b\\x00\\x94\\x02\\x0f\\x02\\x0d\\x02\\x15\\x02\\x17\\x02\\x19\\x02\\x1b\\x00\\x96\\x02\\x1f\\x02\\x1d\\x02\\x21\\x02\\x23\\x02\\x25\\x02\\x86\\x00\\x19\\x00\\x98\\x02\\x8c\\x00\\xfa\\x02\\x27\\x00\\x9a\\x02\\x8a\\x02\\x88\\x00\\x9b\\x02\\x29\\x00\\x9d\\x00\\x9f\\x02\\x2b\\x02\\x2d\\x00\\x1a\\x00\\x1b\\x00\\x1c\\x00\\x1d\\x00\\x36\\x00\\x38\\x00\\xef\\x00\\x1e\\x02\\x37\\x00\\x1f\\x00\\xa6\\x00\\xd1\\x00\\xd3\\x02\\x35\\x01\\x9a\\x00\\x3a\\x01\\x9c\\x01\\x9e\\x01\\xa0\\x00\\x3c\\x00\\x3e\\x00\\x40\\x00\\x42\\x00\\x20\\x01\\xa4\\x00\\x44\\x01\\xa6\\x01\\xaa\\x01\\xac\\x01\\xa8\\x00\\x21\\x00\\x22\\x00\\x23\\x02\\x51\\x00\\x46\\x00\\x48\\x00\\x4a\\x00\\x24\\x02\\x4f\\x00\\x4e\\x00\\xd5\\x00\\xd7\\x02\\x4d\\x00\\xf1\\x00\\x4c\\x01\\xb2\\x01\\xb4\\x01\\xb8\\x00\\xc7\\x00\\x50\\x01\\xba\\x00\\x52\\x00\\x54\\x00\\xbc\\x00\\x56\\x00\\x58\\x01\\xbc\\x01\\xc0\\x00\\xed\\x01\\xbe\\x01\\xc2\\x01\\xc4\\x02\\x2f\\x00\\x25\\x00\\x26\\x00\\x27\\x00\\x5a\\x00\\x5c\\x00\\x5e\\x00\\x28\\x02\\x5d\\x00\\xa8\\x00\\xd9\\x00\\xdb\\x02\\x5f\\x00\\x60\\x01\\xc6\\x00\\x63\\x00\\xc5\\x01\\xca\\x00\\xbe\\x01\\xcc\\x00\\x65\\x01\\xce\\x00\\x67\\x00\\x6b\\x01\\xd0\\x00\\x69\\x01\\xd6\\x01\\xd4\\x01\\xd8\\x01\\xda\\x01\\xdc\\x00\\xc9\\x00\\x6d\\x00\\x29\\x01\\xde\\x00\\x71\\x01\\xe0\\x00\\x6f\\x01\\xe4\\x01\\xe2\\x00\\x2a\\x00\\x2b\\x00\\x2c\\x00\\x2d\\x00\\x73\\x00\\x75\\x00\\xf7\\x00\\x2e\\x02\\x63\\x00\\x77\\x00\\xaa\\x00\\xdd\\x00\\xdf\\x00\\xa2\\x02\\x61\\x00\\xc0\\x01\\xee\\x01\\xf0\\x00\\x79\\x01\\xf2\\x00\\x7d\\x00\\xe1\\x00\\xe3\\x01\\xf4\\x00\\x7b\\x01\\xf8\\x00\\x7f\\x00\\x81\\x01\\xfa\\x00\\x85\\x01\\xfc\\x00\\xe9\\x00\\x83\\x02\\x04\\x02\\x30\\x00\\x89\\x02\\x06\\x00\\xeb\\x00\\x87\\x02\\x0a\\x02\\x08\\x00\\x2f\\x00\\x30\\x00\\x31\\x00\\x8b\\x00\\x8d\\x00\\x8f\\x00\\x32\\x02\\x7b\\x00\\x91\\x00\\x93\\x00\\xac\\x00\\xe5\\x00\\xe7\\x00\\xa4\\x02\\x79\\x02\\x0c\\x00\\x95\\x02\\x10\\x02\\x0e\\x02\\x16\\x02\\x18\\x02\\x1a\\x02\\x1c\\x00\\x97\\x02\\x20\\x02\\x1e\\x02\\x31\\x02\\x22\\x02\\x24\\x02\\x26\\x02\\x87\\x00\\x33\\x00\\x99\\x02\\x8d\\x00\\xfb\\x02\\x28\\x00\\x34\\x02\\x8b\\x02\\x32\\x02\\x89\\x00\\x9c\\x02\\x2a\\x00\\x9e\\x00\\xa0\\x02\\x2c\\x02\\x2e\\x03\\x56\\x00\\xfd\\x03\\x34\\x02\\x3a\\x02\\x38\\x02\\x3e\\x02\\x3c\\x00\\xb5\\x00\\xca\\x00\\xcc\\x00\\xb9\\x01\\xa1\\x02\\x54\\x02\\x52\\x02\\x58\\x02\\x56\\x01\\xc7\\x02\\x66\\x02\\x64\\x02\\x6a\\x02\\x68\\x01\\xe5\\x00\\xf4\\x01\\xe7\\x00\\xf2\\x00\\xce\\x00\\xb3\\x00\\xaf\\x00\\xad\\x00\\xb1\\x02\\x3b\\x02\\x39\\x02\\x3f\\x02\\x3d\\x00\\xb6\\x00\\xcb\\x00\\xcd\\x00\\xba\\x01\\xa2\\x02\\x55\\x02\\x53\\x02\\x59\\x02\\x57\\x01\\xc8\\x02\\x67\\x02\\x65\\x02\\x6b\\x02\\x69\\x01\\xe6\\x00\\xf5\\x01\\xe8\\x00\\xf3\\x00\\xcf\\x00\\xb4\\x00\\xb0\\x00\\xae\\x00\\xb2\\x02\\x44\\x02\\x42\\x02\\x48\\x02\\x46\\x02\\x45\\x02\\x43\\x02\\x49\\x02\\x47\\x01\\xad\\x01\\xaf\\x01\\xae\\x01\\xb0\\x01\\xe9\\x01\\xeb\\x01\\xea\\x01\\xec\\x01\\xfd\\x01\\xfe\\x01\\xff\\x02\\x00\\x02\\x11\\x02\\x12\\x02\\x13\\x02\\x14\\x02\\x33\\x02\\x70\\x02\\x6e\\x02\\x74\\x02\\x72\\x02\\x76\\x02\\x71\\x02\\x6f\\x02\\x75\\x02\\x73\\x02\\x77\\x02\\x7e\\x02\\x7c\\x02\\x82\\x02\\x80\\x02\\x84\\x02\\x7f\\x02\\x7d\\x02\\x83\\x02\\x81\\x02\\x85\\x00\\xc3\\x00\\xc1\\x00\\xc2\\x00\\xb7\\x00\\xb8\\x01\\xb5\\x01\\xb6\\x00\\xf8\\x00\\xf9\\x00\\xc4\\x03\\x32\\x00\\xfe\\x03\\x31\\x03\\x30\\x02\\x96\\x02\\x97\\x03\\x33\\x03\\x3a\\x00\\xff\\x02\\xa4\\x02\\xa5\\x03\\x3b\\x01\\x00\\x02\\xb2\\x02\\xb3\\x03\\x3c\\x03\\x47\\x01\\x01\\x03\\x46\\x03\\x45\\x01\\x06\\x02\\xc2\\x02\\xc3\\x03\\x5c\\x01\\x02\\x02\\xd0\\x02\\xd1\\x03\\x55\\x03\\x54\\x01\\x03\\x03\\x53\\x03\\x52\\x01\\x07\\x02\\xde\\x03\\x5d\\x01\\x04\\x02\\xea\\x02\\xeb\\x03\\x5e\\x03\\x2d\\x03\\x37\\x02\\xf2\\x01\\x08\\x03\\x2a\\x03\\x29\\x02\\x8e\\x02\\x8f\\x03\\x2e\\x03\\x2c\\x02\\xf3\\x01\\x09\\x02\\x9e\\x02\\x9f\\x02\\xf4\\x01\\x0a\\x02\\xaa\\x02\\xab\\x03\\x38\\x03\\x36\\x02\\xf5\\x01\\x0b\\x03\\x41\\x03\\x40\\x01\\x0d\\x02\\xba\\x02\\xbb\\x03\\x43\\x02\\xf6\\x01\\x0f\\x02\\xca\\x02\\xcb\\x03\\x4e\\x03\\x4f\\x02\\xf7\\x01\\x10\\x03\\x4c\\x03\\x4b\\x01\\x0e\\x02\\xd6\\x02\\xd7\\x03\\x50\\x02\\xf8\\x01\\x11\\x02\\xe2\\x02\\xe3\\x03\\x5a\\x03\\x58\\x03\\x42\\x01\\x05\\x03\\x44\\x03\\x4d\\x01\\x0c\\x03\\x51\\x03\\x59\\x01\\x12\\x01\\x13\\x01\\x17\\x01\\x28\\x01\\x2a\\x01\\x16\\x01\\x14\\x01\\x2c\\x01\\x15\\x01\\x26\\x01\\x30\\x01\\x32\\x01\\x19\\x01\\x34\\x01\\x1b\\x01\\x36\\x01\\x18\\x01\\x38\\x01\\x3e\\x01\\x1a\\x01\\x40\\x01\\x42\\x01\\x44\\x01\\x46\\x01\\x3c\\x01\\x29\\x01\\x2b\\x01\\x1f\\x01\\x1d\\x01\\x2d\\x01\\x1e\\x01\\x27\\x01\\x31\\x01\\x33\\x01\\x22\\x01\\x35\\x01\\x1c\\x01\\x37\\x01\\x21\\x01\\x39\\x01\\x3f\\x01\\x23\\x01\\x41\\x01\\x43\\x01\\x45\\x01\\x47\\x01\\x3d\\x01\\x20\\x01\\x24\\x01\\x25\\x01\\x2e\\x01\\x2f\\x01\\x3a\\x01\\x3b\\x01\\x48\\x01\\x49\\x01\\x4b\\x01\\x4a\\x01\\x4c\\x01\\x4e\\x01\\x4f\\x01\\x4d\\x01\\x50\\x01\\x51\\x01\\x52\\x01\\x5b\\x01\\x5c\\x01\\x67\\x01\\x66\\x01\\x68\\x01\\x6b\\x01\\x6c\\x01\\x6e\\x01\\x6d\\x01\\x6f\\x01\\x70\\x01\\x73\\x01\\x71\\x01\\x72\\x01\\x74\\x01\\x75\\x01\\x77\\x01\\x76\\x01\\x78\\x01\\x79\\x01\\x7b\\x01\\x7a\\x01\\x8d\\x01\\x8e\\x01\\x8f\\x01\\x90\\x01\\x91\\x01\\x92\\x01\\x93\\x01\\x94\\x01\\x95\\x01\\x96\\x01\\x97\\x01\\x98\\x01\\xd1\\x01\\xd2\\x01\\xf5\\x01\\xf6\\x02\\x01\\x02\\x02\\x02\\x40\\x02\\x4a\\x02\\x41\\x02\\x4b\\x02\\x5a\\x02\\x5b\\x02\\x6c\\x02\\x6d\\x02\\x90\\x02\\x92\\x02\\x94\\x02\\xf9\\x02\\x91\\x02\\x93\\x02\\x95\\x02\\xfa\\x02\\xfb\\x02\\xfc\\x02\\xfd\\x02\\xfe\\x02\\xff\\x03\\x00\\x02\\x98\\x02\\x9a\\x02\\x9c\\x03\\x01\\x02\\x99\\x02\\x9b\\x02\\x9d\\x03\\x02\\x03\\x03\\x03\\x04\\x03\\x05\\x03\\x06\\x03\\x07\\x03\\x08\\x02\\xa0\\x02\\xa2\\x02\\xa1\\x02\\xa3\\x02\\xa6\\x02\\xa8\\x02\\xa7\\x02\\xa9\\x02\\xac\\x02\\xae\\x02\\xb0\\x03\\x09\\x02\\xad\\x02\\xaf\\x02\\xb1\\x03\\x0a\\x03\\x0b\\x03\\x0c\\x03\\x0d\\x03\\x0e\\x03\\x0f\\x03\\x10\\x02\\xb4\\x02\\xb6\\x02\\xb8\\x03\\x11\\x02\\xb5\\x02\\xb7\\x02\\xb9\\x03\\x12\\x03\\x13\\x03\\x14\\x03\\x15\\x03\\x16\\x03\\x17\\x03\\x18\\x02\\xbc\\x02\\xbe\\x02\\xc0\\x02\\xbd\\x02\\xbf\\x02\\xc1\\x02\\xc4\\x02\\xc6\\x02\\xc8\\x02\\xc5\\x02\\xc7\\x02\\xc9\\x02\\xcc\\x02\\xce\\x02\\xcd\\x02\\xcf\\x02\\xd2\\x02\\xd4\\x02\\xd3\\x02\\xd5\\x02\\xd8\\x02\\xda\\x02\\xdc\\x02\\xd9\\x02\\xdb\\x02\\xdd\\x02\\xdf\\x02\\xe0\\x02\\xe1\\x02\\xe4\\x02\\xe6\\x02\\xe8\\x03\\x19\\x02\\xe5\\x02\\xe7\\x02\\xe9\\x03\\x1a\\x03\\x1b\\x03\\x1c\\x03\\x1d\\x03\\x1e\\x03\\x1f\\x03\\x20\\x02\\xec\\x02\\xee\\x02\\xf0\\x03\\x21\\x02\\xed\\x02\\xef\\x02\\xf1\\x03\\x22\\x03\\x23\\x03\\x24\\x03\\x25\\x03\\x26\\x03\\x27\\x03\\x28\\x03\\x2b\\x03\\x35\\x03\\x57\\x03\\x2f\\x03\\x3d\\x03\\x3e\\x03\\x3f\\x03\\x39\\x03\\x5b\\x03\\x48\\x03\\x49\\x03\\x4a\\x03\\x5f\\x03\\x60\\x03\\x61\\x03\\x62\\x03\\x64\\x03\\x63\\x03\\x65\\x03\\x66\\x03\\x67\\x03\\x68\\x03\\x69\\x03\\x6a\\x03\\x6b\\x03\\x6c\\x03\\x6d\\x03\\x70\\x03\\x6f\\x03\\x73\\x03\\x74\\x03\\x75\\x03\\x76\\x03\\x77\\x03\\x78\\x03\\x79\\x03\\x7a\\x03\\x83\\x03\\x84\\x03\\x7b\\x03\\x7c\\x03\\x7d\\x03\\x7e\\x03\\x85\\x03\\x86\\x03\\x7f\\x03\\x80\\x03\\x81\\x03\\x82\\x03\\x87\\x03\\x88\\x03\\x89\\x03\\x8a\\x03\\xa5\\x03\\x8c\\x03\\x8d\\x03\\x8e\\x03\\x8f\\x03\\x90\\x03\\x91\\x03\\x92\\x03\\x93\\x03\\x94\\x03\\x95\\x03\\x96\\x03\\x97\\x03\\x98\\x03\\x99\\x03\\x9a\\x03\\x9b\\x03\\x9c\\x03\\x9d\\x03\\x9e\\x03\\x9f\\x03\\xa0\\x03\\xa1\\x03\\xa2\\x03\\xa3\\x03\\xa4\\x03\\xa6\\x03\\xc0\\x03\\xa7\\x03\\xa8\\x03\\xa9\\x03\\xaa\\x03\\xab\\x03\\xac\\x03\\xad\\x03\\xae\\x03\\xaf\\x03\\xb0\\x03\\xb1\\x03\\xb2\\x03\\xb3\\x03\\xb4\\x03\\xb5\\x03\\xb6\\x03\\xb7\\x03\\xb8\\x03\\xb9\\x03\\xba\\x03\\xbb\\x03\\xbc\\x03\\xbd\\x03\\xbe\\x03\\xbf\\x03\\xc1\\x03\\xc2\\x03\\xc3\\x03\\xc4\\x03\\xc5\\x03\\xe8\\x03\\xe9\\x03\\xea\\x03\\xeb\\x03\\xec\\x03\\xed\\x03\\xee\\x03\\xef\\x03\\xf0\\x03\\xf1\\x03\\xf2\\x03\\xf3\\x03\\xf4\\x03\\xf6\\x03\\xf5\\x03\\xf7\\x03\\xf9\\x03\\xf8\\x03\\xfa\\x03\\xfb\\x03\\xfc\\x03\\xfd\\x03\\xfe\\x04\\x00\\x04\\x02\\x03\\xff\\x04\\x03\\x04\\x05\\x04\\x04\\x04\\x01\\x04\\x07\\x04\\x06\\x04\\x08"\n let mut low = usize.ZERO\n let mut high = usize.add(0, 961)\n while low < high {\n let middle = low + (high - low) / 2\n let record = pairRecord(read2(index, middle * 2) |> u32.toUsize)\n if first < record.first {\n high = middle\n } else {\n if record.first < first {\n low = middle + usize.ONE\n } else {\n if second < record.second {\n high = middle\n } else {\n if record.second < second { low = middle + usize.ONE } else { return record.composed }\n }\n }\n }\n }\n return 0\n}\n', }, { module: 'silk/usize', diff --git a/packages/compiler/src/ToolchainIntegrity.generated.ts b/packages/compiler/src/ToolchainIntegrity.generated.ts index 38b53d9f..c0c32606 100644 --- a/packages/compiler/src/ToolchainIntegrity.generated.ts +++ b/packages/compiler/src/ToolchainIntegrity.generated.ts @@ -1,3 +1,3 @@ // Generated by scripts/generate-toolchain-integrity.mjs. Do not edit. -export const compilerDigest = '1c891de8520010809c3e6804ad9f57598204fbe82b76e4b50d4482d724f50f9a' +export const compilerDigest = 'cf31f319fdacb01daa3b186478ab1555c4604852aee179d0ad37611dc674993b' diff --git a/packages/compiler/src/ToolchainIntegrity.ts b/packages/compiler/src/ToolchainIntegrity.ts index 342c29fd..bc72fe00 100644 --- a/packages/compiler/src/ToolchainIntegrity.ts +++ b/packages/compiler/src/ToolchainIntegrity.ts @@ -211,7 +211,7 @@ const runtimeId = (target: Intrinsic.ExecutionTarget, operation: string): string const installedComponents = (): ReadonlyArray => { const compiler: Component = Object.freeze({ kind: 'Compiler', - id: '@silk-effect/compiler', + id: '@silk-lang/compiler', digest: compilerDigest, dependencies: Object.freeze([]), }) diff --git a/packages/compiler/src/WasmBackend.ts b/packages/compiler/src/WasmBackend.ts index 57e7d562..9449915c 100644 --- a/packages/compiler/src/WasmBackend.ts +++ b/packages/compiler/src/WasmBackend.ts @@ -1,16 +1,16 @@ -import * as Binary from '@silk-effect/wasm/Binary' -import * as Builder from '@silk-effect/wasm/Builder' -import * as Data from '@silk-effect/wasm/Data' -import * as ExportActor from '@silk-effect/wasm/Export' -import * as FuncActor from '@silk-effect/wasm/Func' -import * as Global from '@silk-effect/wasm/Global' -import * as Import from '@silk-effect/wasm/Import' -import * as Instr from '@silk-effect/wasm/Instr' -import * as Memory from '@silk-effect/wasm/Memory' -import * as WasmType from '@silk-effect/wasm/Type' -import * as Validate from '@silk-effect/wasm/Validate' -import type * as ValType from '@silk-effect/wasm/ValType' -import * as WatText from '@silk-effect/wasm/WatText' +import * as Binary from '@silk-lang/wasm/Binary' +import * as Builder from '@silk-lang/wasm/Builder' +import * as Data from '@silk-lang/wasm/Data' +import * as ExportActor from '@silk-lang/wasm/Export' +import * as FuncActor from '@silk-lang/wasm/Func' +import * as Global from '@silk-lang/wasm/Global' +import * as Import from '@silk-lang/wasm/Import' +import * as Instr from '@silk-lang/wasm/Instr' +import * as Memory from '@silk-lang/wasm/Memory' +import * as WasmType from '@silk-lang/wasm/Type' +import * as Validate from '@silk-lang/wasm/Validate' +import type * as ValType from '@silk-lang/wasm/ValType' +import * as WatText from '@silk-lang/wasm/WatText' import * as Effect from 'effect/Effect' import * as Backend from './Backend.js' import { symbolFor } from './Backend.js' diff --git a/packages/compiler/src/WasmCleanup.ts b/packages/compiler/src/WasmCleanup.ts index 70ee751b..77d8827e 100644 --- a/packages/compiler/src/WasmCleanup.ts +++ b/packages/compiler/src/WasmCleanup.ts @@ -1,4 +1,4 @@ -import type * as Instr from '@silk-effect/wasm/Instr' +import type * as Instr from '@silk-lang/wasm/Instr' import type * as CleanupPlan from './CleanupPlan.js' export interface Child { diff --git a/packages/compiler/src/WasmEmitContext.ts b/packages/compiler/src/WasmEmitContext.ts index 494f529b..4d047509 100644 --- a/packages/compiler/src/WasmEmitContext.ts +++ b/packages/compiler/src/WasmEmitContext.ts @@ -1,4 +1,4 @@ -import type * as FuncActor from '@silk-effect/wasm/Func' +import type * as FuncActor from '@silk-lang/wasm/Func' import type * as Backend from './Backend.js' import type * as CleanupPlan from './CleanupPlan.js' import type * as DeclarationFacts from './DeclarationFacts.js' diff --git a/packages/compiler/src/WasmLanes.ts b/packages/compiler/src/WasmLanes.ts index efb41f3e..9f13cac8 100644 --- a/packages/compiler/src/WasmLanes.ts +++ b/packages/compiler/src/WasmLanes.ts @@ -1,5 +1,5 @@ -import * as Instr from '@silk-effect/wasm/Instr' -import * as ValType from '@silk-effect/wasm/ValType' +import * as Instr from '@silk-lang/wasm/Instr' +import * as ValType from '@silk-lang/wasm/ValType' import { alignUp } from './internal/Align.js' import * as LayoutPlan from './Layout.js' import * as Mir from './Mir.js' diff --git a/packages/compiler/src/WasmMemory.ts b/packages/compiler/src/WasmMemory.ts index c69d53b3..7e9442ca 100644 --- a/packages/compiler/src/WasmMemory.ts +++ b/packages/compiler/src/WasmMemory.ts @@ -1,7 +1,7 @@ -import type * as FuncActor from '@silk-effect/wasm/Func' -import type * as Global from '@silk-effect/wasm/Global' -import * as Instr from '@silk-effect/wasm/Instr' -import type * as Memory from '@silk-effect/wasm/Memory' +import type * as FuncActor from '@silk-lang/wasm/Func' +import type * as Global from '@silk-lang/wasm/Global' +import * as Instr from '@silk-lang/wasm/Instr' +import type * as Memory from '@silk-lang/wasm/Memory' import * as CleanupPlan from './CleanupPlan.js' import { alignUp } from './internal/Align.js' import * as LayoutPlan from './Layout.js' diff --git a/packages/compiler/stdlib/DOCUMENTATION.md b/packages/compiler/stdlib/DOCUMENTATION.md index 8bf0c273..89ad9c08 100644 --- a/packages/compiler/stdlib/DOCUMENTATION.md +++ b/packages/compiler/stdlib/DOCUMENTATION.md @@ -14,10 +14,10 @@ editor hovers, policy validation, and doctests. Do not edit generated standard-l After a source comment changes, run: ```bash -pnpm --filter @silk-effect/compiler documentation:policy -pnpm --filter @silk-effect/compiler documentation:examples -pnpm --filter @silk-effect/compiler documentation:generate -pnpm --filter @silk-effect/compiler documentation:check +pnpm --filter @silk-lang/compiler documentation:policy +pnpm --filter @silk-lang/compiler documentation:examples +pnpm --filter @silk-lang/compiler documentation:generate +pnpm --filter @silk-lang/compiler documentation:check ``` The full repository gate also runs these checks through `pnpm check`. diff --git a/packages/compiler/stdlib/silk/unicode_tables.silk b/packages/compiler/stdlib/silk/unicode_tables.silk index deab656f..73863cbd 100644 --- a/packages/compiler/stdlib/silk/unicode_tables.silk +++ b/packages/compiler/stdlib/silk/unicode_tables.silk @@ -29,7 +29,7 @@ //! ``` // // Generated by scripts/generate-unicode-tables.mjs from the vendored Unicode 17.0.0 database. -// Do not edit. Run: pnpm --filter @silk-effect/compiler unicode:generate +// Do not edit. Run: pnpm --filter @silk-lang/compiler unicode:generate import silk.u32 as u32 import silk.u8 as u8 diff --git a/packages/compiler/test/OpaqueRealization.test.ts b/packages/compiler/test/OpaqueRealization.test.ts index 5759cee4..3b3cf208 100644 --- a/packages/compiler/test/OpaqueRealization.test.ts +++ b/packages/compiler/test/OpaqueRealization.test.ts @@ -413,7 +413,7 @@ pub fn make(enabled: bool) -> some T> F { return keep(enabled) const family = Type.opaqueFamilyKey(open.family) const privateDefinition = OpaqueRealization.catalogOf(self).definitions.get(family) assert.isDefined(privateDefinition) - const predictableCatalogSymbol = Symbol.for('@silk-effect/compiler/OpaqueRealizationCatalog') + const predictableCatalogSymbol = Symbol.for('@silk-lang/compiler/OpaqueRealizationCatalog') assert.strictEqual(predictableCatalogSymbol in self, false) assert.notInclude(Object.getOwnPropertySymbols(self), predictableCatalogSymbol) const publicSurface = self.surfaces.get(library)?.canonical ?? raise('missing surface') diff --git a/packages/compiler/test/ProjectAnalysis.test.ts b/packages/compiler/test/ProjectAnalysis.test.ts index 7457ed4c..2b431e57 100644 --- a/packages/compiler/test/ProjectAnalysis.test.ts +++ b/packages/compiler/test/ProjectAnalysis.test.ts @@ -54,7 +54,7 @@ it.effect('analyzes a shared dependency once and derives structurally shared roo const project = yield* make() const left = ProjectAnalysis.view(project, 'app/A') const right = ProjectAnalysis.view(project, 'app/B') - const predictableCatalogSymbol = Symbol.for('@silk-effect/compiler/OpaqueRealizationCatalog') + const predictableCatalogSymbol = Symbol.for('@silk-lang/compiler/OpaqueRealizationCatalog') assert.strictEqual(predictableCatalogSymbol in project, false) assert.notInclude(Object.getOwnPropertySymbols(project), predictableCatalogSymbol) assert.strictEqual(left === undefined ? false : predictableCatalogSymbol in left, false) diff --git a/packages/compiler/test/UserServices.test.ts b/packages/compiler/test/UserServices.test.ts index 91ac8510..5fea6aac 100644 --- a/packages/compiler/test/UserServices.test.ts +++ b/packages/compiler/test/UserServices.test.ts @@ -1,5 +1,5 @@ import { assert, it } from '@effect/vitest' -import * as WasmError from '@silk-effect/wasm/WasmError' +import * as WasmError from '@silk-lang/wasm/WasmError' import * as Effect from 'effect/Effect' import * as Analysis from '../src/Analysis.js' import * as Hir from '../src/Hir.js' diff --git a/packages/compiler/test/characterization/effect-suspend-stack/README.md b/packages/compiler/test/characterization/effect-suspend-stack/README.md index 0f03ad9d..3c117902 100644 --- a/packages/compiler/test/characterization/effect-suspend-stack/README.md +++ b/packages/compiler/test/characterization/effect-suspend-stack/README.md @@ -14,7 +14,7 @@ paths. The fixture does not suppress cleanup or intentionally leak storage. Run it after building the compiler: ```sh -pnpm --filter @silk-effect/compiler build +pnpm --filter @silk-lang/compiler build node packages/compiler/test/characterization/effect-suspend-stack/characterize.mjs \ --engine wasm --case scalar-non-tail --depth 8000 ``` @@ -49,7 +49,7 @@ portable thresholds. | native release | borrowed Box walk | 100,000 | 320,000 | `SIGSEGV` | | native release | recursive Box Drop | 100,000 | 320,000 | `SIGSEGV` | -The matrix was produced after `pnpm --filter @silk-effect/compiler build`. Each Wasm row used: +The matrix was produced after `pnpm --filter @silk-lang/compiler build`. Each Wasm row used: ```sh node packages/compiler/test/characterization/effect-suspend-stack/characterize.mjs \ diff --git a/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/README.md b/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/README.md index fb35b6e3..16395ca5 100644 --- a/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/README.md +++ b/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/README.md @@ -1,7 +1,7 @@ # Native Effect suspension lowering spike This spike implements OpenSpec tasks 1.5–1.8 without introducing production suspension MIR or a -public `@silk-effect/llvm` API. Its schema, harness, direct lowering, and LLVM construction are all +public `@silk-lang/llvm` API. Its schema, harness, direct lowering, and LLVM construction are all local to this directory and are disposable after the native-strategy decision. The frozen schema has two reached suspension points and one untaken branch. Each reached point diff --git a/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/evidence.mjs b/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/evidence.mjs index ea9e22a6..631d56f0 100644 --- a/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/evidence.mjs +++ b/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/evidence.mjs @@ -817,7 +817,7 @@ const metricRows = ['switched', 'retcon'].flatMap((variant) => return `| ${variant} ${name} | ${metric.direct.toFixed(6)} | ${metric.candidate.toFixed(6)} | ${metric.delta.toFixed(6)} (${(metric.ratio * 100).toFixed(2)}%) | ${threshold.toFixed(6)} | ${result} |` }), ) -const selectionReport = `# Native suspension lowering selection\n\nDecision: **select the direct iterative state machine**.\n\nEvery candidate passed the frozen semantic and structural hard gates. The approved rule selects an LLVM candidate only when it has at least one material advantage and no material regression; otherwise direct wins.\n\n| candidate metric | direct | candidate | delta | noise/size threshold | result |\n| --- | ---: | ---: | ---: | ---: | --- |\n${metricRows.join('\n')}\n\nSwitched-resume has no material advantage and regresses O2 compilation and frame size. That frame result triggered the bounded returned-continuation experiment. Retcon also has no material advantage and increases the allocator-visible frame from ${semantic.direct.O2.frameLayouts[0].size} to ${semantic.retcon.O2.frameLayouts[0].size} bytes. Both LLVM candidates are rejected.\n\nThe rejected \`llvm.coro.*\` constructions remain reproducible, disposable fixtures in this directory; no production compiler or \`@silk-effect/llvm\` surface was added. Production task 5.1 therefore implements direct iterative lowering behind target-neutral continuation descriptors. Exact raw operands and machine-readable decisions are in [evidence.json](evidence.json).\n` +const selectionReport = `# Native suspension lowering selection\n\nDecision: **select the direct iterative state machine**.\n\nEvery candidate passed the frozen semantic and structural hard gates. The approved rule selects an LLVM candidate only when it has at least one material advantage and no material regression; otherwise direct wins.\n\n| candidate metric | direct | candidate | delta | noise/size threshold | result |\n| --- | ---: | ---: | ---: | ---: | --- |\n${metricRows.join('\n')}\n\nSwitched-resume has no material advantage and regresses O2 compilation and frame size. That frame result triggered the bounded returned-continuation experiment. Retcon also has no material advantage and increases the allocator-visible frame from ${semantic.direct.O2.frameLayouts[0].size} to ${semantic.retcon.O2.frameLayouts[0].size} bytes. Both LLVM candidates are rejected.\n\nThe rejected \`llvm.coro.*\` constructions remain reproducible, disposable fixtures in this directory; no production compiler or \`@silk-lang/llvm\` surface was added. Production task 5.1 therefore implements direct iterative lowering behind target-neutral continuation descriptors. Exact raw operands and machine-readable decisions are in [evidence.json](evidence.json).\n` writeFileSync(selectionPath, selectionReport) const report = `# Native suspension lowering evidence\n\nStatus: **PASS for OpenSpec tasks 1.8 and 1.9**. Selected strategy: **direct iterative state machine**.\n\n- LLVM: ${environment.clang.split('\n')[0]}\n- Target: \`${target}\`\n- Coroutine pipeline: \`${coroutinePassPipeline}\`\n- Semantic/allocation/cleanup parity: pass\n- Constant-stack watermark at depths 1, 1,000, and 100,000 under O0/O2: pass\n- Direct and indirect call-cycle audit: pass\n- Residual coroutine structure-intrinsic audit: pass\n- Retcon fallback-call and selected-inline-buffer-root audit: pass\n- Static DWARF and synthetic Silk boundary symbolization: pass\n- Second normalized semantic/depth replay: pass\n\n## Measured values\n\n| metric | direct | switched | retcon |\n| --- | ---: | ---: | ---: |\n| O0 compile median (ms) | ${benchmarkSummary.compile.O0.direct.median.toFixed(3)} | ${benchmarkSummary.compile.O0.switched.median.toFixed(3)} | ${benchmarkSummary.compile.O0.retcon.median.toFixed(3)} |\n| O2 compile median (ms) | ${benchmarkSummary.compile.O2.direct.median.toFixed(3)} | ${benchmarkSummary.compile.O2.switched.median.toFixed(3)} | ${benchmarkSummary.compile.O2.retcon.median.toFixed(3)} |\n| O2 resume median (ms/boundary) | ${benchmarkSummary.resumeO2PerBoundary.direct.median.toFixed(6)} | ${benchmarkSummary.resumeO2PerBoundary.switched.median.toFixed(6)} | ${benchmarkSummary.resumeO2PerBoundary.retcon.median.toFixed(6)} |\n| frame bytes at boundary 1 | ${semantic.direct.O2.frameLayouts[0].size} | ${semantic.switched.O2.frameLayouts[0].size} | ${semantic.retcon.O2.frameLayouts[0].size} |\n| linked O2 code/data bytes | ${linkedSize.direct.O2.codeData} | ${linkedSize.switched.O2.codeData} | ${linkedSize.retcon.O2.codeData} |\n\nThe generated [selection report](selection-report.md) applies every threshold and records the rejection reason for both LLVM candidates. Raw samples, MADs, exact commands, stack results, call graphs, frame layouts, semantic traces, and debug symbolization are retained in [evidence.json](evidence.json).\n\nRun:\n\n\`\`\`sh\nnode packages/compiler/test/characterization/effect-suspension-native-lowering-spike/evidence.mjs\n\`\`\`\n` writeFileSync(reportPath, report) diff --git a/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/selection-report.md b/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/selection-report.md index b35ad7ce..06774cf4 100644 --- a/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/selection-report.md +++ b/packages/compiler/test/characterization/effect-suspension-native-lowering-spike/selection-report.md @@ -19,4 +19,4 @@ Every candidate passed the frozen semantic and structural hard gates. The approv Switched-resume has no material advantage and regresses O2 compilation and frame size. That frame result triggered the bounded returned-continuation experiment. Retcon also has no material advantage and increases the allocator-visible frame from 24 to 64 bytes. Both LLVM candidates are rejected. -The rejected `llvm.coro.*` constructions remain reproducible, disposable fixtures in this directory; no production compiler or `@silk-effect/llvm` surface was added. Production task 5.1 therefore implements direct iterative lowering behind target-neutral continuation descriptors. Exact raw operands and machine-readable decisions are in [evidence.json](evidence.json). +The rejected `llvm.coro.*` constructions remain reproducible, disposable fixtures in this directory; no production compiler or `@silk-lang/llvm` surface was added. Production task 5.1 therefore implements direct iterative lowering behind target-neutral continuation descriptors. Exact raw operands and machine-readable decisions are in [evidence.json](evidence.json). diff --git a/packages/compiler/test/support/WasmMain.ts b/packages/compiler/test/support/WasmMain.ts index d32e7126..22a3d8aa 100644 --- a/packages/compiler/test/support/WasmMain.ts +++ b/packages/compiler/test/support/WasmMain.ts @@ -1,4 +1,4 @@ -import * as WasmError from '@silk-effect/wasm/WasmError' +import * as WasmError from '@silk-lang/wasm/WasmError' import * as Effect from 'effect/Effect' export const invoke = Effect.fnUntraced(function* (bytes: Uint8Array, operation: string) { diff --git a/packages/compiler/unicode-data/CompositionExclusions.txt b/packages/compiler/unicode-data/CompositionExclusions.txt index 5c670523..532cd863 100644 --- a/packages/compiler/unicode-data/CompositionExclusions.txt +++ b/packages/compiler/unicode-data/CompositionExclusions.txt @@ -1,7 +1,7 @@ # CompositionExclusions.txt # Unicode 17.0.0, vendored from ucd-full@17.0.0. # Script-listed composition exclusions. The derived exclusions are computed by the generator. -# Regenerate with: pnpm --filter @silk-effect/compiler unicode:vendor +# Regenerate with: pnpm --filter @silk-lang/compiler unicode:vendor 0958 0959 095A diff --git a/packages/compiler/unicode-data/ExtendedPictographic.txt b/packages/compiler/unicode-data/ExtendedPictographic.txt index 84d4dde6..a1809f7b 100644 --- a/packages/compiler/unicode-data/ExtendedPictographic.txt +++ b/packages/compiler/unicode-data/ExtendedPictographic.txt @@ -1,7 +1,7 @@ # ExtendedPictographic.txt # Unicode 17.0.0, vendored from ucd-full@17.0.0. # Code point ranges with Extended_Pictographic=Yes, from emoji-data. -# Regenerate with: pnpm --filter @silk-effect/compiler unicode:vendor +# Regenerate with: pnpm --filter @silk-lang/compiler unicode:vendor 00A9 00AE 203C diff --git a/packages/compiler/unicode-data/GraphemeBreakProperty.txt b/packages/compiler/unicode-data/GraphemeBreakProperty.txt index 5d034ecc..7d02c679 100644 --- a/packages/compiler/unicode-data/GraphemeBreakProperty.txt +++ b/packages/compiler/unicode-data/GraphemeBreakProperty.txt @@ -1,7 +1,7 @@ # GraphemeBreakProperty.txt # Unicode 17.0.0, vendored from ucd-full@17.0.0. # Fields: code point range; Grapheme_Cluster_Break value. -# Regenerate with: pnpm --filter @silk-effect/compiler unicode:vendor +# Regenerate with: pnpm --filter @silk-lang/compiler unicode:vendor 0600..0605; Prepend 06DD; Prepend 070F; Prepend diff --git a/packages/compiler/unicode-data/GraphemeBreakTest.txt b/packages/compiler/unicode-data/GraphemeBreakTest.txt index f86d4169..f247a61f 100644 --- a/packages/compiler/unicode-data/GraphemeBreakTest.txt +++ b/packages/compiler/unicode-data/GraphemeBreakTest.txt @@ -1,7 +1,7 @@ # GraphemeBreakTest.txt # Unicode 17.0.0, vendored from ucd-full@17.0.0. # Conformance data. ÷ marks a cluster boundary and × marks a prohibited break. -# Regenerate with: pnpm --filter @silk-effect/compiler unicode:vendor +# Regenerate with: pnpm --filter @silk-lang/compiler unicode:vendor ÷ 0020 ÷ 0020 ÷ ÷ 0020 × 0308 ÷ 0020 ÷ ÷ 0020 ÷ 000D ÷ diff --git a/packages/compiler/unicode-data/IndicConjunctBreak.txt b/packages/compiler/unicode-data/IndicConjunctBreak.txt index 1ee23f6f..e19a4dc3 100644 --- a/packages/compiler/unicode-data/IndicConjunctBreak.txt +++ b/packages/compiler/unicode-data/IndicConjunctBreak.txt @@ -1,7 +1,7 @@ # IndicConjunctBreak.txt # Unicode 17.0.0, vendored from ucd-full@17.0.0. # Fields: code point range; Indic_Conjunct_Break value. Drives rule GB9c. -# Regenerate with: pnpm --filter @silk-effect/compiler unicode:vendor +# Regenerate with: pnpm --filter @silk-lang/compiler unicode:vendor 094D; Linker 09CD; Linker 0ACD; Linker diff --git a/packages/compiler/unicode-data/NormalizationTest.txt b/packages/compiler/unicode-data/NormalizationTest.txt index 86af103a..06f872d7 100644 --- a/packages/compiler/unicode-data/NormalizationTest.txt +++ b/packages/compiler/unicode-data/NormalizationTest.txt @@ -1,7 +1,7 @@ # NormalizationTest.txt # Unicode 17.0.0, vendored from ucd-full@17.0.0. # Conformance data. Fields: source; NFC; NFD; NFKC; NFKD. @PartN lines mark the official sections. -# Regenerate with: pnpm --filter @silk-effect/compiler unicode:vendor +# Regenerate with: pnpm --filter @silk-lang/compiler unicode:vendor @Part0 1E0A;1E0A;0044 0307;1E0A;0044 0307 1E0C;1E0C;0044 0323;1E0C;0044 0323 diff --git a/packages/compiler/unicode-data/SpecialCasing.txt b/packages/compiler/unicode-data/SpecialCasing.txt index 065d9277..a4a731d4 100644 --- a/packages/compiler/unicode-data/SpecialCasing.txt +++ b/packages/compiler/unicode-data/SpecialCasing.txt @@ -1,7 +1,7 @@ # SpecialCasing.txt # Unicode 17.0.0, vendored from ucd-full@17.0.0. # Fields: code point; full lowercase; full titlecase; full uppercase; condition. -# Regenerate with: pnpm --filter @silk-effect/compiler unicode:vendor +# Regenerate with: pnpm --filter @silk-lang/compiler unicode:vendor 00DF; 00DF; 0053 0073; 0053 0053; 0130; 0069 0307; 0130; 0130; FB00; FB00; 0046 0066; 0046 0046; diff --git a/packages/compiler/unicode-data/UnicodeData.subset.txt b/packages/compiler/unicode-data/UnicodeData.subset.txt index a82e404c..83772651 100644 --- a/packages/compiler/unicode-data/UnicodeData.subset.txt +++ b/packages/compiler/unicode-data/UnicodeData.subset.txt @@ -1,7 +1,7 @@ # UnicodeData.subset.txt # Unicode 17.0.0, vendored from ucd-full@17.0.0. # Fields: code point; canonical combining class; canonical decomposition; simple uppercase; simple lowercase. -# Regenerate with: pnpm --filter @silk-effect/compiler unicode:vendor +# Regenerate with: pnpm --filter @silk-lang/compiler unicode:vendor 0041;0;;;0061 0042;0;;;0062 0043;0;;;0063 diff --git a/packages/doctest/README.md b/packages/doctest/README.md index 62a52c95..abe7dd21 100644 --- a/packages/doctest/README.md +++ b/packages/doctest/README.md @@ -1,4 +1,4 @@ -# `@silk-effect/doctest` +# `@silk-lang/doctest` Compiles the fenced Silk examples carried by Silk Effect documentation JSON, and reports each failure with the file and the line the example was written on. diff --git a/packages/doctest/package.json b/packages/doctest/package.json index 2efbb9ae..24b8c2b2 100644 --- a/packages/doctest/package.json +++ b/packages/doctest/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/doctest", + "name": "@silk-lang/doctest", "version": "0.0.0", "private": true, "description": "Compiles the fenced Silk examples carried by Silk Effect documentation JSON and reports each failure with its source position.", @@ -60,8 +60,8 @@ }, "dependencies": { "@effect/platform-node": "4.0.0-beta.103", - "@silk-effect/compiler": "workspace:*", - "@silk-effect/documentation": "workspace:*", + "@silk-lang/compiler": "workspace:*", + "@silk-lang/documentation": "workspace:*", "effect": "catalog:" }, "devDependencies": { diff --git a/packages/doctest/src/Doctest.ts b/packages/doctest/src/Doctest.ts index cb770213..6d7d7de6 100644 --- a/packages/doctest/src/Doctest.ts +++ b/packages/doctest/src/Doctest.ts @@ -1,4 +1,4 @@ -import * as Analysis from '@silk-effect/compiler/Analysis' +import * as Analysis from '@silk-lang/compiler/Analysis' import * as Effect from 'effect/Effect' import * as Example from './Example.js' import * as Sources from './Sources.js' diff --git a/packages/doctest/src/Stdlib.ts b/packages/doctest/src/Stdlib.ts index 7a7b4473..936b1bd0 100644 --- a/packages/doctest/src/Stdlib.ts +++ b/packages/doctest/src/Stdlib.ts @@ -1,8 +1,8 @@ -import * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as CompilerStdlib from '@silk-effect/compiler/Stdlib' -import * as DocumentationProject from '@silk-effect/documentation/Project' +import * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as CompilerStdlib from '@silk-lang/compiler/Stdlib' +import * as DocumentationProject from '@silk-lang/documentation/Project' import * as Effect from 'effect/Effect' import type * as Sources from './Sources.js' diff --git a/packages/doctest/test/Doctest.test.ts b/packages/doctest/test/Doctest.test.ts index 834d98a5..45f5e08d 100644 --- a/packages/doctest/test/Doctest.test.ts +++ b/packages/doctest/test/Doctest.test.ts @@ -1,6 +1,6 @@ import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' -import * as DocumentationProject from '@silk-effect/documentation/Project' +import * as Analysis from '@silk-lang/compiler/Analysis' +import * as DocumentationProject from '@silk-lang/documentation/Project' import * as Effect from 'effect/Effect' import * as Doctest from '../src/Doctest.js' import * as Report from '../src/Report.js' diff --git a/packages/doctest/test/Stdlib.test.ts b/packages/doctest/test/Stdlib.test.ts index 6a765304..0a9e2ed7 100644 --- a/packages/doctest/test/Stdlib.test.ts +++ b/packages/doctest/test/Stdlib.test.ts @@ -1,6 +1,6 @@ import { assert, it } from '@effect/vitest' -import * as CompilerStdlib from '@silk-effect/compiler/Stdlib' -import * as Json from '@silk-effect/documentation/Json' +import * as CompilerStdlib from '@silk-lang/compiler/Stdlib' +import * as Json from '@silk-lang/documentation/Json' import * as Effect from 'effect/Effect' import * as Doctest from '../src/Doctest.js' import * as Report from '../src/Report.js' diff --git a/packages/doctest/test/support/stdlibDocumentation.ts b/packages/doctest/test/support/stdlibDocumentation.ts index 601d4918..dbf94a75 100644 --- a/packages/doctest/test/support/stdlibDocumentation.ts +++ b/packages/doctest/test/support/stdlibDocumentation.ts @@ -1,4 +1,4 @@ -import type * as Project from '@silk-effect/documentation/Project' +import type * as Project from '@silk-lang/documentation/Project' import * as Effect from 'effect/Effect' import * as Stdlib from '../../src/Stdlib.js' diff --git a/packages/documentation-site/README.md b/packages/documentation-site/README.md index f4ed8314..f55413e9 100644 --- a/packages/documentation-site/README.md +++ b/packages/documentation-site/README.md @@ -1,4 +1,4 @@ -# `@silk-effect/documentation-site` +# `@silk-lang/documentation-site` Renders a static HTML documentation site and a static search index from the documentation JSON that `silk doc` emits. diff --git a/packages/documentation-site/package.json b/packages/documentation-site/package.json index b7c0a3f2..1f3b90cd 100644 --- a/packages/documentation-site/package.json +++ b/packages/documentation-site/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/documentation-site", + "name": "@silk-lang/documentation-site", "version": "0.0.0", "private": true, "description": "Renders a static HTML documentation site and a static search index from Silk Effect documentation JSON.", @@ -59,13 +59,13 @@ }, "dependencies": { "@effect/platform-node": "4.0.0-beta.103", - "@silk-effect/snippet": "workspace:*", + "@silk-lang/snippet": "workspace:*", "effect": "catalog:" }, "devDependencies": { "@effect/vitest": "catalog:", - "@silk-effect/compiler": "workspace:*", - "@silk-effect/documentation": "workspace:*", + "@silk-lang/compiler": "workspace:*", + "@silk-lang/documentation": "workspace:*", "@types/node": "^24.10.1" } } diff --git a/packages/documentation-site/src/Cli.ts b/packages/documentation-site/src/Cli.ts index 4bb9c4c6..f81459fb 100644 --- a/packages/documentation-site/src/Cli.ts +++ b/packages/documentation-site/src/Cli.ts @@ -65,14 +65,14 @@ export const run = Effect.fn('Cli.run')(function* ( const bundle = yield* Effect.result( Effect.flatMap( Effect.try({ - try: () => fileURLToPath(import.meta.resolve('@silk-effect/snippet/bundle')), + try: () => fileURLToPath(import.meta.resolve('@silk-lang/snippet/bundle')), catch: (cause) => cause, }), (bundlePath) => fileSystem.readFileString(bundlePath), ), ) if (Result.isFailure(bundle)) { - yield* Console.error('Cannot load the silk-snippet element bundle from @silk-effect/snippet') + yield* Console.error('Cannot load the silk-snippet element bundle from @silk-lang/snippet') return 2 } diff --git a/packages/documentation-site/test/Site.test.ts b/packages/documentation-site/test/Site.test.ts index a90e65f3..401d42a4 100644 --- a/packages/documentation-site/test/Site.test.ts +++ b/packages/documentation-site/test/Site.test.ts @@ -36,13 +36,13 @@ it('declares no workspace runtime dependency beyond the snippet asset', () => { ? Object.keys(manifest.dependencies as Record) : [] assert.isAbove(dependencies.length, 0, 'the renderer is expected to have runtime dependencies') - // `@silk-effect/snippet` is the one deliberate exception: the command shell ships its prebuilt + // `@silk-lang/snippet` is the one deliberate exception: the command shell ships its prebuilt // element bundle with generated sites as opaque file contents. No renderer module imports it, // which the source scan below still enforces, so the renderer keeps reading the documentation // JSON and nothing else. assert.deepStrictEqual( - dependencies.filter((name) => name.startsWith('@silk-effect/')), - ['@silk-effect/snippet'], + dependencies.filter((name) => name.startsWith('@silk-lang/')), + ['@silk-lang/snippet'], 'the renderer must read the documentation JSON and nothing else', ) }) @@ -52,7 +52,7 @@ it('imports no compiler or workspace module from its own sources', () => { // module stays free of workspace imports so no compiler type can reach the rendering. const offenders = sourceFiles(join(packageRoot, 'src')) .filter((file) => !file.endsWith('/Cli.ts')) - .filter((file) => readFileSync(file, 'utf8').includes('@silk-effect/')) + .filter((file) => readFileSync(file, 'utf8').includes('@silk-lang/')) .map((file) => file.slice(packageRoot.length)) assert.deepStrictEqual(offenders, []) }) diff --git a/packages/documentation-site/test/support/stdlibDocumentation.ts b/packages/documentation-site/test/support/stdlibDocumentation.ts index 9fcf5f72..1a56c40f 100644 --- a/packages/documentation-site/test/support/stdlibDocumentation.ts +++ b/packages/documentation-site/test/support/stdlibDocumentation.ts @@ -1,9 +1,9 @@ -import * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as CompilerStdlib from '@silk-effect/compiler/Stdlib' -import * as Json from '@silk-effect/documentation/Json' -import * as DocumentationProject from '@silk-effect/documentation/Project' +import * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as CompilerStdlib from '@silk-lang/compiler/Stdlib' +import * as Json from '@silk-lang/documentation/Json' +import * as DocumentationProject from '@silk-lang/documentation/Project' import * as Effect from 'effect/Effect' /** diff --git a/packages/documentation/README.md b/packages/documentation/README.md index 33b4777e..dbbcc431 100644 --- a/packages/documentation/README.md +++ b/packages/documentation/README.md @@ -1,4 +1,4 @@ -# `@silk-effect/documentation` +# `@silk-lang/documentation` Lazy documentation tooling for Silk Effect. The compiler retains raw attached comment blocks; this optional package interprets them as CommonMark only when hover, highlighting, or documentation diff --git a/packages/documentation/package.json b/packages/documentation/package.json index 437e1667..bc7b4aac 100644 --- a/packages/documentation/package.json +++ b/packages/documentation/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/documentation", + "name": "@silk-lang/documentation", "version": "0.0.0", "description": "Lazy, formatter-neutral documentation tooling for Silk Effect source.", "license": "MIT", @@ -61,7 +61,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json" }, "dependencies": { - "@silk-effect/compiler": "workspace:*", + "@silk-lang/compiler": "workspace:*", "effect": "catalog:", "mdast-util-from-markdown": "^2.0.3" }, diff --git a/packages/documentation/src/CodeFence.ts b/packages/documentation/src/CodeFence.ts index fc1f7700..85caba63 100644 --- a/packages/documentation/src/CodeFence.ts +++ b/packages/documentation/src/CodeFence.ts @@ -1,5 +1,5 @@ -import type * as CompilerDocBlock from '@silk-effect/compiler/DocBlock' -import type * as SourceFile from '@silk-effect/compiler/SourceFile' +import type * as CompilerDocBlock from '@silk-lang/compiler/DocBlock' +import type * as SourceFile from '@silk-lang/compiler/SourceFile' import * as Data from 'effect/Data' import * as Effect from 'effect/Effect' import * as Result from 'effect/Result' diff --git a/packages/documentation/src/Document.ts b/packages/documentation/src/Document.ts index 6848bead..943ad921 100644 --- a/packages/documentation/src/Document.ts +++ b/packages/documentation/src/Document.ts @@ -1,5 +1,5 @@ -import type * as CompilerDocBlock from '@silk-effect/compiler/DocBlock' -import type * as SourceFile from '@silk-effect/compiler/SourceFile' +import type * as CompilerDocBlock from '@silk-lang/compiler/DocBlock' +import type * as SourceFile from '@silk-lang/compiler/SourceFile' import * as Result from 'effect/Result' import type { BlockContent, diff --git a/packages/documentation/src/Highlight.ts b/packages/documentation/src/Highlight.ts index c010ad59..3d8693e8 100644 --- a/packages/documentation/src/Highlight.ts +++ b/packages/documentation/src/Highlight.ts @@ -1,7 +1,7 @@ -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as Scalar from '@silk-effect/compiler/Scalar' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import type * as Token from '@silk-effect/compiler/Token' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as Scalar from '@silk-lang/compiler/Scalar' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import type * as Token from '@silk-lang/compiler/Token' export interface Range { readonly from: number diff --git a/packages/documentation/src/Policy.ts b/packages/documentation/src/Policy.ts index b91a9ab0..14575305 100644 --- a/packages/documentation/src/Policy.ts +++ b/packages/documentation/src/Policy.ts @@ -1,4 +1,4 @@ -import * as Analysis from '@silk-effect/compiler/Analysis' +import * as Analysis from '@silk-lang/compiler/Analysis' import type * as Document from './Document.js' import type * as Project from './Project.js' diff --git a/packages/documentation/src/Project.ts b/packages/documentation/src/Project.ts index 4bda4721..546ef060 100644 --- a/packages/documentation/src/Project.ts +++ b/packages/documentation/src/Project.ts @@ -1,9 +1,9 @@ -import * as Analysis from '@silk-effect/compiler/Analysis' -import type * as DeclarationFacts from '@silk-effect/compiler/DeclarationFacts' -import * as Presentation from '@silk-effect/compiler/Presentation' -import * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import type * as SourceFile from '@silk-effect/compiler/SourceFile' -import type * as SyntaxTree from '@silk-effect/compiler/SyntaxTree' +import * as Analysis from '@silk-lang/compiler/Analysis' +import type * as DeclarationFacts from '@silk-lang/compiler/DeclarationFacts' +import * as Presentation from '@silk-lang/compiler/Presentation' +import * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import type * as SourceFile from '@silk-lang/compiler/SourceFile' +import type * as SyntaxTree from '@silk-lang/compiler/SyntaxTree' import * as Document from './Document.js' export type ItemKind = diff --git a/packages/documentation/src/internal/CommonMark.ts b/packages/documentation/src/internal/CommonMark.ts index 66ae565b..a7b47e5f 100644 --- a/packages/documentation/src/internal/CommonMark.ts +++ b/packages/documentation/src/internal/CommonMark.ts @@ -1,5 +1,5 @@ -import type * as CompilerDocBlock from '@silk-effect/compiler/DocBlock' -import type * as SourceFile from '@silk-effect/compiler/SourceFile' +import type * as CompilerDocBlock from '@silk-lang/compiler/DocBlock' +import type * as SourceFile from '@silk-lang/compiler/SourceFile' import * as Data from 'effect/Data' import * as Result from 'effect/Result' import type { Root, RootContent } from 'mdast' diff --git a/packages/documentation/test/CodeFence.test.ts b/packages/documentation/test/CodeFence.test.ts index 75abca7d..77ed79c1 100644 --- a/packages/documentation/test/CodeFence.test.ts +++ b/packages/documentation/test/CodeFence.test.ts @@ -1,8 +1,8 @@ import { assert, it } from '@effect/vitest' -import * as DocBlock from '@silk-effect/compiler/DocBlock' -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as Parser from '@silk-effect/compiler/Parser' -import * as SourceFile from '@silk-effect/compiler/SourceFile' +import * as DocBlock from '@silk-lang/compiler/DocBlock' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as Parser from '@silk-lang/compiler/Parser' +import * as SourceFile from '@silk-lang/compiler/SourceFile' import * as Effect from 'effect/Effect' import * as Result from 'effect/Result' import { unreachable } from '../../../test/support/raise.js' diff --git a/packages/documentation/test/Document.test.ts b/packages/documentation/test/Document.test.ts index dd6b9879..6021e4f5 100644 --- a/packages/documentation/test/Document.test.ts +++ b/packages/documentation/test/Document.test.ts @@ -1,5 +1,5 @@ import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' +import * as Analysis from '@silk-lang/compiler/Analysis' import * as Effect from 'effect/Effect' import * as Document from '../src/Document.js' import * as Project from '../src/Project.js' diff --git a/packages/documentation/test/Policy.test.ts b/packages/documentation/test/Policy.test.ts index 39b2edc2..5a92bcb8 100644 --- a/packages/documentation/test/Policy.test.ts +++ b/packages/documentation/test/Policy.test.ts @@ -1,5 +1,5 @@ import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' +import * as Analysis from '@silk-lang/compiler/Analysis' import * as Effect from 'effect/Effect' import * as Policy from '../src/Policy.js' import * as Project from '../src/Project.js' diff --git a/packages/documentation/test/Project.test.ts b/packages/documentation/test/Project.test.ts index 923b4a42..3a088cf1 100644 --- a/packages/documentation/test/Project.test.ts +++ b/packages/documentation/test/Project.test.ts @@ -1,8 +1,8 @@ import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' -import * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' +import * as Analysis from '@silk-lang/compiler/Analysis' +import * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' import * as Effect from 'effect/Effect' import * as Json from '../src/Json.js' import * as Project from '../src/Project.js' diff --git a/packages/documentation/test/Reference.test.ts b/packages/documentation/test/Reference.test.ts index 35166f04..4ad7ca95 100644 --- a/packages/documentation/test/Reference.test.ts +++ b/packages/documentation/test/Reference.test.ts @@ -1,5 +1,5 @@ import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' +import * as Analysis from '@silk-lang/compiler/Analysis' import * as Effect from 'effect/Effect' import * as Project from '../src/Project.js' import * as Reference from '../src/Reference.js' diff --git a/packages/formatter/README.md b/packages/formatter/README.md index c2a6d3a1..e07663fb 100644 --- a/packages/formatter/README.md +++ b/packages/formatter/README.md @@ -1,11 +1,11 @@ -# `@silk-effect/formatter` +# `@silk-lang/formatter` Formats one complete Silk source artifact with the canonical project policy. In addition to ordinary syntax layout, active fenced `silk` examples in attached `///` and leading `//!` documentation are formatted recursively in the source file that owns them. ```ts -import * as Formatter from '@silk-effect/formatter/Formatter' +import * as Formatter from '@silk-lang/formatter/Formatter' const formatted = yield* Formatter.format(syntax) ``` diff --git a/packages/formatter/package.json b/packages/formatter/package.json index 567e6b6c..de689a5e 100644 --- a/packages/formatter/package.json +++ b/packages/formatter/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/formatter", + "name": "@silk-lang/formatter", "version": "0.0.0", "description": "Canonical whole-source formatting for Silk Effect, including active Silk examples in source documentation.", "license": "MIT", @@ -51,8 +51,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json" }, "dependencies": { - "@silk-effect/compiler": "workspace:*", - "@silk-effect/documentation": "workspace:*", + "@silk-lang/compiler": "workspace:*", + "@silk-lang/documentation": "workspace:*", "effect": "catalog:" }, "devDependencies": { diff --git a/packages/formatter/scripts/format-stdlib-docs.mjs b/packages/formatter/scripts/format-stdlib-docs.mjs index fd7648ac..86e30d5a 100644 --- a/packages/formatter/scripts/format-stdlib-docs.mjs +++ b/packages/formatter/scripts/format-stdlib-docs.mjs @@ -1,10 +1,10 @@ import { NodeRuntime, NodeServices } from '@effect/platform-node' -import * as DocBlock from '@silk-effect/compiler/DocBlock' -import * as FormattedDocument from '@silk-effect/compiler/FormattedDocument' -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as Parser from '@silk-effect/compiler/Parser' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as CodeFence from '@silk-effect/documentation/CodeFence' +import * as DocBlock from '@silk-lang/compiler/DocBlock' +import * as FormattedDocument from '@silk-lang/compiler/FormattedDocument' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as Parser from '@silk-lang/compiler/Parser' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as CodeFence from '@silk-lang/documentation/CodeFence' import * as Console from 'effect/Console' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' diff --git a/packages/formatter/src/Formatter.ts b/packages/formatter/src/Formatter.ts index 9368649f..9ef20248 100644 --- a/packages/formatter/src/Formatter.ts +++ b/packages/formatter/src/Formatter.ts @@ -1,11 +1,11 @@ -import * as DocBlock from '@silk-effect/compiler/DocBlock' -import * as FormattedDocument from '@silk-effect/compiler/FormattedDocument' -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as Parser from '@silk-effect/compiler/Parser' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import type * as SyntaxFile from '@silk-effect/compiler/SyntaxFile' -import * as SyntaxFormatter from '@silk-effect/compiler/SyntaxFormatter' -import * as CodeFence from '@silk-effect/documentation/CodeFence' +import * as DocBlock from '@silk-lang/compiler/DocBlock' +import * as FormattedDocument from '@silk-lang/compiler/FormattedDocument' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as Parser from '@silk-lang/compiler/Parser' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import type * as SyntaxFile from '@silk-lang/compiler/SyntaxFile' +import * as SyntaxFormatter from '@silk-lang/compiler/SyntaxFormatter' +import * as CodeFence from '@silk-lang/documentation/CodeFence' import * as Effect from 'effect/Effect' import * as FormatterError from './FormatterError.js' diff --git a/packages/formatter/src/FormatterError.ts b/packages/formatter/src/FormatterError.ts index 67b44209..8fce1e10 100644 --- a/packages/formatter/src/FormatterError.ts +++ b/packages/formatter/src/FormatterError.ts @@ -1,5 +1,5 @@ -import type * as Diagnostic from '@silk-effect/compiler/Diagnostic' -import type * as CodeFence from '@silk-effect/documentation/CodeFence' +import type * as Diagnostic from '@silk-lang/compiler/Diagnostic' +import type * as CodeFence from '@silk-lang/documentation/CodeFence' import * as Data from 'effect/Data' export type SourceRange = CodeFence.CodeFence['source'] diff --git a/packages/formatter/test/Formatter.test.ts b/packages/formatter/test/Formatter.test.ts index f7906eed..7fe5d611 100644 --- a/packages/formatter/test/Formatter.test.ts +++ b/packages/formatter/test/Formatter.test.ts @@ -1,8 +1,8 @@ import { assert, it } from '@effect/vitest' -import * as FormattedDocument from '@silk-effect/compiler/FormattedDocument' -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as Parser from '@silk-effect/compiler/Parser' -import * as SourceFile from '@silk-effect/compiler/SourceFile' +import * as FormattedDocument from '@silk-lang/compiler/FormattedDocument' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as Parser from '@silk-lang/compiler/Parser' +import * as SourceFile from '@silk-lang/compiler/SourceFile' import * as Effect from 'effect/Effect' import * as Result from 'effect/Result' import * as Formatter from '../src/Formatter.js' diff --git a/packages/inspector/README.md b/packages/inspector/README.md index 7a63aa86..7377ec1f 100644 --- a/packages/inspector/README.md +++ b/packages/inspector/README.md @@ -1,4 +1,4 @@ -# @silk-effect/inspector +# @silk-lang/inspector Compiler-phase view projections for Silk inspectors. diff --git a/packages/inspector/package.json b/packages/inspector/package.json index 1afcc81e..39182fc0 100644 --- a/packages/inspector/package.json +++ b/packages/inspector/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/inspector", + "name": "@silk-lang/inspector", "version": "0.0.0", "description": "Compiler-phase view projections for Silk Effect inspectors: the view registry and row models shared by the docs workbench and the language server.", "license": "MIT", @@ -65,7 +65,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json" }, "dependencies": { - "@silk-effect/compiler": "workspace:*", + "@silk-lang/compiler": "workspace:*", "effect": "catalog:" }, "devDependencies": { diff --git a/packages/inspector/src/FlowModel.ts b/packages/inspector/src/FlowModel.ts index 59bfc9db..78036beb 100644 --- a/packages/inspector/src/FlowModel.ts +++ b/packages/inspector/src/FlowModel.ts @@ -1,5 +1,5 @@ -import type { BootstrapEvaluation, Elaboration, SourceSpan } from '@silk-effect/compiler' -import * as Type from '@silk-effect/compiler/Type' +import type { BootstrapEvaluation, Elaboration, SourceSpan } from '@silk-lang/compiler' +import * as Type from '@silk-lang/compiler/Type' const typeText = (type: Type.Type): string => { if (typeof type === 'string') return type diff --git a/packages/inspector/src/Panels.ts b/packages/inspector/src/Panels.ts index ac29e9fe..81de1f30 100644 --- a/packages/inspector/src/Panels.ts +++ b/packages/inspector/src/Panels.ts @@ -7,8 +7,8 @@ * three clang invocations. Both are shapes the row projections consume. */ -import type { Backend } from '@silk-effect/compiler' -import { Analysis, ToolchainPlan } from '@silk-effect/compiler' +import type { Backend } from '@silk-lang/compiler' +import { Analysis, ToolchainPlan } from '@silk-lang/compiler' import * as Effect from 'effect/Effect' const clang = '/usr/bin/clang' diff --git a/packages/inspector/src/ProjectBackend.ts b/packages/inspector/src/ProjectBackend.ts index 7aa2cb3f..509e036d 100644 --- a/packages/inspector/src/ProjectBackend.ts +++ b/packages/inspector/src/ProjectBackend.ts @@ -1,5 +1,5 @@ -import type * as DeclarationFacts from '@silk-effect/compiler/DeclarationFacts' -import type * as DeclarationIndex from '@silk-effect/compiler/DeclarationIndex' +import type * as DeclarationFacts from '@silk-lang/compiler/DeclarationFacts' +import type * as DeclarationIndex from '@silk-lang/compiler/DeclarationIndex' /** * Module, name, ownership, lowering and backend phases as rows. * @@ -19,10 +19,10 @@ import type { ModuleClosure, NameResolution, Ownership, -} from '@silk-effect/compiler' -import { Match, Mir } from '@silk-effect/compiler' -import * as MirVerification from '@silk-effect/compiler/MirVerification' -import * as Type from '@silk-effect/compiler/Type' +} from '@silk-lang/compiler' +import { Match, Mir } from '@silk-lang/compiler' +import * as MirVerification from '@silk-lang/compiler/MirVerification' +import * as Type from '@silk-lang/compiler/Type' import type { RowModel, Span } from './Row.js' import { spanOf as asSpan } from './Row.js' diff --git a/packages/inspector/src/ProjectSyntax.ts b/packages/inspector/src/ProjectSyntax.ts index 698c2da6..ca317f49 100644 --- a/packages/inspector/src/ProjectSyntax.ts +++ b/packages/inspector/src/ProjectSyntax.ts @@ -6,9 +6,9 @@ * has to say. It also makes each phase testable without rendering anything. */ -import type { Elaboration, Hir, SyntaxFile } from '@silk-effect/compiler' -import { Diagnostic, Match, SyntaxTree } from '@silk-effect/compiler' -import * as Type from '@silk-effect/compiler/Type' +import type { Elaboration, Hir, SyntaxFile } from '@silk-lang/compiler' +import { Diagnostic, Match, SyntaxTree } from '@silk-lang/compiler' +import * as Type from '@silk-lang/compiler/Type' import type { FlowModel } from './FlowModel.js' import type { RowModel, RowTone, Span } from './Row.js' import { spanOf as asSpan } from './Row.js' diff --git a/packages/inspector/src/Registry.ts b/packages/inspector/src/Registry.ts index 683004b2..ddae760e 100644 --- a/packages/inspector/src/Registry.ts +++ b/packages/inspector/src/Registry.ts @@ -10,9 +10,9 @@ * `1 err`) and optional one-line fact strip, and only the view knows them. */ -import type { BootstrapEvaluation, ToolchainPlan as ToolchainPlanNs } from '@silk-effect/compiler' -import { Analysis, Hir, ToolchainPlan } from '@silk-effect/compiler' -import * as MirVerification from '@silk-effect/compiler/MirVerification' +import type { BootstrapEvaluation, ToolchainPlan as ToolchainPlanNs } from '@silk-lang/compiler' +import { Analysis, Hir, ToolchainPlan } from '@silk-lang/compiler' +import * as MirVerification from '@silk-lang/compiler/MirVerification' import { projectDataFlow } from './FlowModel.js' import { backendEmission, execute, toolchainCommands } from './Panels.js' import { diff --git a/packages/inspector/src/Row.ts b/packages/inspector/src/Row.ts index 6a57bc58..33bde4a9 100644 --- a/packages/inspector/src/Row.ts +++ b/packages/inspector/src/Row.ts @@ -12,7 +12,7 @@ * belongs to whichever surface renders the row. */ -import type * as SourceSpan from '@silk-effect/compiler/SourceSpan' +import type * as SourceSpan from '@silk-lang/compiler/SourceSpan' /** * A half-open byte range in one module's source. diff --git a/packages/inspector/test/FlowModel.test.ts b/packages/inspector/test/FlowModel.test.ts index 2c72e927..2dcffeab 100644 --- a/packages/inspector/test/FlowModel.test.ts +++ b/packages/inspector/test/FlowModel.test.ts @@ -1,5 +1,5 @@ -import type { Elaboration } from '@silk-effect/compiler' -import { Analysis } from '@silk-effect/compiler' +import type { Elaboration } from '@silk-lang/compiler' +import { Analysis } from '@silk-lang/compiler' import * as Effect from 'effect/Effect' import { describe, expect, it } from 'vitest' import { projectDataFlow } from '../src/FlowModel.js' diff --git a/packages/inspector/test/Registry.test.ts b/packages/inspector/test/Registry.test.ts index 98d17a60..a436580c 100644 --- a/packages/inspector/test/Registry.test.ts +++ b/packages/inspector/test/Registry.test.ts @@ -1,4 +1,4 @@ -import { Analysis, ToolchainPlan } from '@silk-effect/compiler' +import { Analysis, ToolchainPlan } from '@silk-lang/compiler' import * as Effect from 'effect/Effect' import { describe, expect, it } from 'vitest' import type { ViewContext, ViewResult } from '../src/Registry.js' diff --git a/packages/inspector/test/Serialization.test.ts b/packages/inspector/test/Serialization.test.ts index af9914ea..1006134c 100644 --- a/packages/inspector/test/Serialization.test.ts +++ b/packages/inspector/test/Serialization.test.ts @@ -1,4 +1,4 @@ -import { Analysis } from '@silk-effect/compiler' +import { Analysis } from '@silk-lang/compiler' import * as Effect from 'effect/Effect' import { describe, expect, it } from 'vitest' import type { ViewContext } from '../src/Registry.js' diff --git a/packages/inspector/test/facade-boundary.test.ts b/packages/inspector/test/facade-boundary.test.ts index 4baf0fe6..5f84ccb8 100644 --- a/packages/inspector/test/facade-boundary.test.ts +++ b/packages/inspector/test/facade-boundary.test.ts @@ -25,9 +25,7 @@ const sourceFiles = (directory: string): ReadonlyArray => const valueImportedNames = (source: string): ReadonlyArray => { const names: Array = [] - const imports = source.matchAll( - /import\s+(type\s+)?\{([^}]*)\}\s+from\s+'@silk-effect\/compiler'/g, - ) + const imports = source.matchAll(/import\s+(type\s+)?\{([^}]*)\}\s+from\s+'@silk-lang\/compiler'/g) for (const match of imports) { if (match[1] !== undefined) continue for (const specifier of (match[2] ?? '').split(',')) { diff --git a/packages/language/README.md b/packages/language/README.md index 9d68e662..fa7c04b2 100644 --- a/packages/language/README.md +++ b/packages/language/README.md @@ -1,13 +1,13 @@ -# `@silk-effect/language` +# `@silk-lang/language` Editor language support for Silk Effect. -- `@silk-effect/language/CodeMirror` — a CodeMirror 6 extension that highlights Silk by running the +- `@silk-lang/language/CodeMirror` — a CodeMirror 6 extension that highlights Silk by running the compiler's bootstrap lexer over the document. No separate grammar; the lexer is the single source of truth, and invalid bytes are marked the way the compiler will reject them. Documentation markers, CommonMark markup, intra-document links, and fenced Silk examples are layered lazily by - `@silk-effect/documentation/Highlight`. -- `@silk-effect/language/TextMate` — the Silk TextMate grammar (`source.silk`) and VS Code language + `@silk-lang/documentation/Highlight`. +- `@silk-lang/language/TextMate` — the Silk TextMate grammar (`source.silk`) and VS Code language configuration, including distinct `///` / `//!` scopes, documentation markup, and nested Silk fenced-code scopes. It is consumed by Shiki and VS Code-compatible editors. @@ -16,7 +16,7 @@ modifiers, delimiters, bodies, and escapes. CodeMirror consumes compiler tokens TextMate grammar is generated and behaviorally checked against the same literal-form vocabulary. ```ts -import * as SilkCodeMirror from '@silk-effect/language/CodeMirror' +import * as SilkCodeMirror from '@silk-lang/language/CodeMirror' new EditorView({ extensions: [SilkCodeMirror.extension()] }) ``` diff --git a/packages/language/docs/README.md b/packages/language/docs/README.md index f9400a5c..03980e2b 100644 --- a/packages/language/docs/README.md +++ b/packages/language/docs/README.md @@ -1,4 +1,4 @@ -# `@silk-effect/language` documentation +# `@silk-lang/language` documentation ## The Silk language @@ -12,20 +12,20 @@ source doc comments. - **[Diagnostic index](./diagnostics.md)** — every compiler error code and what it means. -The last two pages are generated. Regenerate them with `pnpm --filter @silk-effect/compiler -documentation:generate`; `pnpm --filter @silk-effect/compiler test` fails while either page is +The last two pages are generated. Regenerate them with `pnpm --filter @silk-lang/compiler +documentation:generate`; `pnpm --filter @silk-lang/compiler test` fails while either page is stale, so a new stdlib module or diagnostic code cannot land without its page. ## This package -`@silk-effect/language` provides editor support for Silk: a CodeMirror 6 extension whose +`@silk-lang/language` provides editor support for Silk: a CodeMirror 6 extension whose highlighting is driven by the compiler's own bootstrap lexer, and the Silk TextMate grammar used by Shiki and VS Code-compatible editors. ## Highlighting from the real lexer The CodeMirror extension does not carry a grammar of its own. It lexes the document with -`@silk-effect/compiler/Lexer` and maps each token kind to a highlight style, so what the editor +`@silk-lang/compiler/Lexer` and maps each token kind to a highlight style, so what the editor colors is exactly what the compiler sees — including invalid bytes: ```silk diff --git a/packages/language/docs/diagnostics.md b/packages/language/docs/diagnostics.md index f29ebdee..db9a5b11 100644 --- a/packages/language/docs/diagnostics.md +++ b/packages/language/docs/diagnostics.md @@ -8,7 +8,7 @@ Each code is stable: it identifies one condition and never changes meaning betwe The prefix names the compiler phase that reports it. Regenerate this page with: ```console -$ pnpm --filter @silk-effect/compiler documentation:generate +$ pnpm --filter @silk-lang/compiler documentation:generate ``` | Prefix | Phase | Codes | diff --git a/packages/language/package.json b/packages/language/package.json index 05bbc97c..62272924 100644 --- a/packages/language/package.json +++ b/packages/language/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/language", + "name": "@silk-lang/language", "version": "0.0.0", "description": "Editor language support for Silk Effect: lexer-driven CodeMirror highlighting and the Silk TextMate grammar.", "license": "MIT", @@ -51,8 +51,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json" }, "dependencies": { - "@silk-effect/compiler": "workspace:*", - "@silk-effect/documentation": "workspace:*" + "@silk-lang/compiler": "workspace:*", + "@silk-lang/documentation": "workspace:*" }, "peerDependencies": { "@codemirror/language": "^6.12.0", diff --git a/packages/language/src/CodeMirror.ts b/packages/language/src/CodeMirror.ts index bff54176..8a4a71f1 100644 --- a/packages/language/src/CodeMirror.ts +++ b/packages/language/src/CodeMirror.ts @@ -5,12 +5,12 @@ import type { DecorationSet } from '@codemirror/view' import { Decoration, EditorView } from '@codemirror/view' import type { Tag } from '@lezer/highlight' import { tags } from '@lezer/highlight' -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as Parser from '@silk-effect/compiler/Parser' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SyntaxTree from '@silk-effect/compiler/SyntaxTree' -import type * as Token from '@silk-effect/compiler/Token' -import * as DocumentationHighlight from '@silk-effect/documentation/Highlight' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as Parser from '@silk-lang/compiler/Parser' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SyntaxTree from '@silk-lang/compiler/SyntaxTree' +import type * as Token from '@silk-lang/compiler/Token' +import * as DocumentationHighlight from '@silk-lang/documentation/Highlight' /** A style bucket: the stable class suffix and the highlight tags themes color it with. */ interface Category { diff --git a/packages/language/src/TextMate.ts b/packages/language/src/TextMate.ts index 1317aacd..f06149b5 100644 --- a/packages/language/src/TextMate.ts +++ b/packages/language/src/TextMate.ts @@ -1,5 +1,5 @@ -import * as LiteralForm from '@silk-effect/compiler/LiteralForm' -import type * as Token from '@silk-effect/compiler/Token' +import * as LiteralForm from '@silk-lang/compiler/LiteralForm' +import type * as Token from '@silk-lang/compiler/Token' /** Every keyword token kind the compiler defines. */ export type KeywordKind = Extract diff --git a/packages/language/test/TextMate.test.ts b/packages/language/test/TextMate.test.ts index 4dd467f9..ea8e4135 100644 --- a/packages/language/test/TextMate.test.ts +++ b/packages/language/test/TextMate.test.ts @@ -1,7 +1,7 @@ import { readFileSync } from 'node:fs' import { dirname, resolve } from 'node:path' -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as SourceFile from '@silk-effect/compiler/SourceFile' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as SourceFile from '@silk-lang/compiler/SourceFile' import { assert, it } from 'vitest' import * as TextMate from '../src/TextMate.js' diff --git a/packages/llvm/CHANGELOG.md b/packages/llvm/CHANGELOG.md index 4f80eb0f..ac2b243a 100644 --- a/packages/llvm/CHANGELOG.md +++ b/packages/llvm/CHANGELOG.md @@ -1,4 +1,4 @@ -# @silk-effect/llvm +# @silk-lang/llvm ## Unreleased diff --git a/packages/llvm/README.md b/packages/llvm/README.md index 65791f40..124cbbb6 100644 --- a/packages/llvm/README.md +++ b/packages/llvm/README.md @@ -1,4 +1,4 @@ -# `@silk-effect/llvm` +# `@silk-lang/llvm` Effect-native LLVM IR construction and deterministic text and bitcode emission, ported from Zig's standard-library LLVM builder. @@ -8,14 +8,14 @@ executables. It returns LLVM assembly as a `string` and bitcode as a `Uint8Array ```typescript import * as Effect from 'effect/Effect' -import * as Bitcode from '@silk-effect/llvm/Bitcode' -import * as Block from '@silk-effect/llvm/Block' -import * as Builder from '@silk-effect/llvm/Builder' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as IrText from '@silk-effect/llvm/IrText' -import * as Type from '@silk-effect/llvm/Type' -import * as Value from '@silk-effect/llvm/Value' +import * as Bitcode from '@silk-lang/llvm/Bitcode' +import * as Block from '@silk-lang/llvm/Block' +import * as Builder from '@silk-lang/llvm/Builder' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as IrText from '@silk-lang/llvm/IrText' +import * as Type from '@silk-lang/llvm/Type' +import * as Value from '@silk-lang/llvm/Value' const program = Effect.gen(function* () { const builder = yield* Builder.make({ sourceFilename: 'add.ll' }) @@ -71,9 +71,9 @@ Immutable option actors support both data-first and pipeable transformations: ```typescript import * as Effect from 'effect/Effect' import { pipe } from 'effect/Function' -import * as Builder from '@silk-effect/llvm/Builder' -import * as IntegerMath from '@silk-effect/llvm/IntegerMath' -import * as Type from '@silk-effect/llvm/Type' +import * as Builder from '@silk-lang/llvm/Builder' +import * as IntegerMath from '@silk-lang/llvm/IntegerMath' +import * as Type from '@silk-lang/llvm/Type' declare const builder: Builder.Builder @@ -98,7 +98,7 @@ const recovered = Type.integer(builder, 0).pipe( - [Design explanations](./docs/README.md#understand-the-design) The package is organized as actor modules with explicit subpath exports. Prefer imports such as -`@silk-effect/llvm/Builder` and `@silk-effect/llvm/FunctionBody` over a growing import from the root +`@silk-lang/llvm/Builder` and `@silk-lang/llvm/FunctionBody` over a growing import from the root barrel. ## Scope and compatibility @@ -113,8 +113,8 @@ sources, and [the parity report](./parity/REPORT.md) for the supported upstream ## Development verification ```sh -pnpm --filter @silk-effect/llvm fixtures:verify -pnpm --filter @silk-effect/llvm parity:validate +pnpm --filter @silk-lang/llvm fixtures:verify +pnpm --filter @silk-lang/llvm parity:validate ``` Fixture generation uses pinned Zig and LLVM tools, but runtime APIs never invoke them. diff --git a/packages/llvm/UPSTREAM.md b/packages/llvm/UPSTREAM.md index c366fcae..05ce27e2 100644 --- a/packages/llvm/UPSTREAM.md +++ b/packages/llvm/UPSTREAM.md @@ -69,7 +69,7 @@ summary is [parity/REPORT.md](./parity/REPORT.md). Run the candidate workflow with an explicit commit: ```sh -pnpm --filter @silk-effect/llvm upstream:candidate -- +pnpm --filter @silk-lang/llvm upstream:candidate -- ``` The command downloads only the selected three sources, prints their hashes, extracts a candidate diff --git a/packages/llvm/docs/README.md b/packages/llvm/docs/README.md index 47ed1e29..80b9cde7 100644 --- a/packages/llvm/docs/README.md +++ b/packages/llvm/docs/README.md @@ -1,6 +1,6 @@ -# `@silk-effect/llvm` documentation +# `@silk-lang/llvm` documentation -`@silk-effect/llvm` constructs LLVM IR and emits LLVM assembly or bitcode without loading Zig, +`@silk-lang/llvm` constructs LLVM IR and emits LLVM assembly or bitcode without loading Zig, native LLVM libraries, or external executables at runtime. ## Start here diff --git a/packages/llvm/docs/explanation/effect-native-builder.md b/packages/llvm/docs/explanation/effect-native-builder.md index 024f806e..8c0e9768 100644 --- a/packages/llvm/docs/explanation/effect-native-builder.md +++ b/packages/llvm/docs/explanation/effect-native-builder.md @@ -5,7 +5,7 @@ operations or give steps for constructing a module. LLVM construction looks imperative: declare a type, append a block, move an insertion point, emit an instruction. A direct TypeScript port could expose a mutable class and throw whenever an -operation encounters invalid state. `@silk-effect/llvm` instead treats the module builder as an +operation encounters invalid state. `@silk-lang/llvm` instead treats the module builder as an Effect-native actor whose state is only reachable through typed operations. ## One owner, many opaque handles diff --git a/packages/llvm/docs/explanation/text-and-bitcode.md b/packages/llvm/docs/explanation/text-and-bitcode.md index a8934cdd..dc206f8a 100644 --- a/packages/llvm/docs/explanation/text-and-bitcode.md +++ b/packages/llvm/docs/explanation/text-and-bitcode.md @@ -3,7 +3,7 @@ This explanation is about the relationship between module construction, textual LLVM IR, and LLVM bitcode. It does not describe the bitstream record format or provide output instructions. -LLVM assembly and bitcode are two representations of the same module. `@silk-effect/llvm` reflects +LLVM assembly and bitcode are two representations of the same module. `@silk-lang/llvm` reflects that relationship by keeping one semantic builder state and placing both output paths at its edge: `IrText.render` interprets the snapshot as text, while `Bitcode.encode` interprets it as bitstream records. diff --git a/packages/llvm/docs/how-to/control-flow.md b/packages/llvm/docs/how-to/control-flow.md index d31e0e65..c53e00fc 100644 --- a/packages/llvm/docs/how-to/control-flow.md +++ b/packages/llvm/docs/how-to/control-flow.md @@ -5,12 +5,12 @@ by a PHI node. It assumes you can already create a builder, types, and a functio ```typescript import * as Effect from 'effect/Effect' -import * as Block from '@silk-effect/llvm/Block' -import * as Builder from '@silk-effect/llvm/Builder' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Type from '@silk-effect/llvm/Type' -import * as Value from '@silk-effect/llvm/Value' +import * as Block from '@silk-lang/llvm/Block' +import * as Builder from '@silk-lang/llvm/Builder' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Type from '@silk-lang/llvm/Type' +import * as Value from '@silk-lang/llvm/Value' const program = Effect.gen(function* () { const builder = yield* Builder.make() diff --git a/packages/llvm/docs/how-to/debug-metadata.md b/packages/llvm/docs/how-to/debug-metadata.md index ef79072f..dc2df3c6 100644 --- a/packages/llvm/docs/how-to/debug-metadata.md +++ b/packages/llvm/docs/how-to/debug-metadata.md @@ -8,14 +8,14 @@ no debug state. ```typescript import * as Effect from 'effect/Effect' -import * as Block from '@silk-effect/llvm/Block' -import * as Builder from '@silk-effect/llvm/Builder' -import * as DISPFlags from '@silk-effect/llvm/DISPFlags' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Metadata from '@silk-effect/llvm/Metadata' -import { invalidState } from '@silk-effect/llvm/LlvmError' -import * as Type from '@silk-effect/llvm/Type' +import * as Block from '@silk-lang/llvm/Block' +import * as Builder from '@silk-lang/llvm/Builder' +import * as DISPFlags from '@silk-lang/llvm/DISPFlags' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Metadata from '@silk-lang/llvm/Metadata' +import { invalidState } from '@silk-lang/llvm/LlvmError' +import * as Type from '@silk-lang/llvm/Type' const program = Effect.gen(function* () { // Debug constructors only retain nodes when stripping is disabled. @@ -32,7 +32,7 @@ const program = Effect.gen(function* () { }) } - const producer = yield* Metadata.string(builder, '@silk-effect/llvm guide') + const producer = yield* Metadata.string(builder, '@silk-lang/llvm guide') const unit = yield* Metadata.compileUnit(builder, file, producer) if (unit === undefined) { return yield* invalidState({ diff --git a/packages/llvm/docs/how-to/declarations.md b/packages/llvm/docs/how-to/declarations.md index e4ee7911..438f78ea 100644 --- a/packages/llvm/docs/how-to/declarations.md +++ b/packages/llvm/docs/how-to/declarations.md @@ -6,14 +6,14 @@ between a global value and its pointer. ```typescript import * as Effect from 'effect/Effect' -import * as Alias from '@silk-effect/llvm/Alias' -import * as Attribute from '@silk-effect/llvm/Attribute' -import * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as IrText from '@silk-effect/llvm/IrText' -import * as Type from '@silk-effect/llvm/Type' -import * as Variable from '@silk-effect/llvm/Variable' +import * as Alias from '@silk-lang/llvm/Alias' +import * as Attribute from '@silk-lang/llvm/Attribute' +import * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as IrText from '@silk-lang/llvm/IrText' +import * as Type from '@silk-lang/llvm/Type' +import * as Variable from '@silk-lang/llvm/Variable' const program = Effect.gen(function* () { const builder = yield* Builder.make({ sourceFilename: 'declarations.ll' }) diff --git a/packages/llvm/docs/how-to/memory-atomics-intrinsics.md b/packages/llvm/docs/how-to/memory-atomics-intrinsics.md index 03faacd6..7bd36ec2 100644 --- a/packages/llvm/docs/how-to/memory-atomics-intrinsics.md +++ b/packages/llvm/docs/how-to/memory-atomics-intrinsics.md @@ -6,16 +6,16 @@ an LLVM memory intrinsic. It assumes familiarity with LLVM pointers and atomic o ```typescript import * as Effect from 'effect/Effect' import { pipe } from 'effect/Function' -import * as Alignment from '@silk-effect/llvm/Alignment' -import * as Block from '@silk-effect/llvm/Block' -import * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as Intrinsic from '@silk-effect/llvm/Intrinsic' -import * as MemoryAccess from '@silk-effect/llvm/MemoryAccess' -import * as Type from '@silk-effect/llvm/Type' -import * as Value from '@silk-effect/llvm/Value' +import * as Alignment from '@silk-lang/llvm/Alignment' +import * as Block from '@silk-lang/llvm/Block' +import * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as Intrinsic from '@silk-lang/llvm/Intrinsic' +import * as MemoryAccess from '@silk-lang/llvm/MemoryAccess' +import * as Type from '@silk-lang/llvm/Type' +import * as Value from '@silk-lang/llvm/Value' const program = Effect.gen(function* () { const builder = yield* Builder.make() diff --git a/packages/llvm/docs/how-to/output.md b/packages/llvm/docs/how-to/output.md index 4a2d0c6e..a3b150e6 100644 --- a/packages/llvm/docs/how-to/output.md +++ b/packages/llvm/docs/how-to/output.md @@ -5,9 +5,9 @@ assumes the module has already been populated and validated. ```typescript import * as Effect from 'effect/Effect' -import * as Bitcode from '@silk-effect/llvm/Bitcode' -import * as Builder from '@silk-effect/llvm/Builder' -import * as IrText from '@silk-effect/llvm/IrText' +import * as Bitcode from '@silk-lang/llvm/Bitcode' +import * as Builder from '@silk-lang/llvm/Builder' +import * as IrText from '@silk-lang/llvm/IrText' const program = Effect.gen(function* () { const builder = yield* Builder.make({ @@ -47,8 +47,8 @@ a snapshot and do not consume or mutate the builder. To compare repository fixtures with the pinned Zig and LLVM tools, run: ```sh -pnpm --filter @silk-effect/llvm fixtures:verify -pnpm --filter @silk-effect/llvm parity:validate +pnpm --filter @silk-lang/llvm fixtures:verify +pnpm --filter @silk-lang/llvm parity:validate ``` Runtime consumers do not need those external tools. Refer to diff --git a/packages/llvm/docs/reference/actors.md b/packages/llvm/docs/reference/actors.md index b4789395..0e37e315 100644 --- a/packages/llvm/docs/reference/actors.md +++ b/packages/llvm/docs/reference/actors.md @@ -4,8 +4,8 @@ The public API is organized as actor modules. Import actors from their package s states which part of the LLVM model it uses. ```typescript -import * as Builder from '@silk-effect/llvm/Builder' -import * as Type from '@silk-effect/llvm/Type' +import * as Builder from '@silk-lang/llvm/Builder' +import * as Type from '@silk-lang/llvm/Type' ``` Individual exported declarations, parameters, return values, and error cases are documented in diff --git a/packages/llvm/docs/tutorials/tiny-expression-compiler.md b/packages/llvm/docs/tutorials/tiny-expression-compiler.md index 55ce9c26..38064e8b 100644 --- a/packages/llvm/docs/tutorials/tiny-expression-compiler.md +++ b/packages/llvm/docs/tutorials/tiny-expression-compiler.md @@ -44,8 +44,8 @@ Create `packages/llvm/tiny-expression.ts`: ```typescript import * as Effect from 'effect/Effect' -import * as Builder from '@silk-effect/llvm/Builder' -import * as IrText from '@silk-effect/llvm/IrText' +import * as Builder from '@silk-lang/llvm/Builder' +import * as IrText from '@silk-lang/llvm/IrText' const program = Effect.gen(function* () { const builder = yield* Builder.make({ @@ -81,14 +81,14 @@ Replace `tiny-expression.ts` with this complete program: ```typescript import * as Effect from 'effect/Effect' -import * as Bitcode from '@silk-effect/llvm/Bitcode' -import * as Block from '@silk-effect/llvm/Block' -import * as Builder from '@silk-effect/llvm/Builder' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as IrText from '@silk-effect/llvm/IrText' -import * as Type from '@silk-effect/llvm/Type' -import * as Value from '@silk-effect/llvm/Value' +import * as Bitcode from '@silk-lang/llvm/Bitcode' +import * as Block from '@silk-lang/llvm/Block' +import * as Builder from '@silk-lang/llvm/Builder' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as IrText from '@silk-lang/llvm/IrText' +import * as Type from '@silk-lang/llvm/Type' +import * as Value from '@silk-lang/llvm/Value' const program = Effect.gen(function* () { const builder = yield* Builder.make({ diff --git a/packages/llvm/docs/tutorials/tiny-language/01-meet-tiny.md b/packages/llvm/docs/tutorials/tiny-language/01-meet-tiny.md index 5da9eaa9..363147ea 100644 --- a/packages/llvm/docs/tutorials/tiny-language/01-meet-tiny.md +++ b/packages/llvm/docs/tutorials/tiny-language/01-meet-tiny.md @@ -72,7 +72,7 @@ flowchart LR tokens --> parser["Tiny frontend: parser"] parser --> ast["Abstract syntax tree"] ast --> lowering["Tiny frontend: resolution and lowering"] - lowering --> builder["@silk-effect/llvm: construct and validate a module"] + lowering --> builder["@silk-lang/llvm: construct and validate a module"] builder --> ir["Textual LLVM IR (.ll)"] ir --> clang["Clang: target compilation and linking"] clang --> executable["Native executable"] @@ -86,7 +86,7 @@ In text, the same path is: 2. The Tiny lexer groups its characters into tokens. 3. The Tiny parser arranges those tokens into an abstract syntax tree, or AST. 4. The Tiny compiler resolves names and lowers the AST into typed LLVM operations. -5. `@silk-effect/llvm` constructs, validates, and renders an LLVM module as readable `.ll` text. +5. `@silk-lang/llvm` constructs, validates, and renders an LLVM module as readable `.ll` text. 6. Clang compiles and links that IR for the current machine. 7. The operating system loads the native executable, runs `main`, and records status `20`. @@ -138,11 +138,11 @@ these LLVM concepts carefully before you generate any IR yourself. | Owner | Responsibility in this tutorial | | --- | --- | | You and the Tiny frontend | Define Tiny syntax and meaning; lex, parse, resolve, and lower it. | -| `@silk-effect/llvm` | Construct and validate the LLVM module; emit textual IR or bitcode. | +| `@silk-lang/llvm` | Construct and validate the LLVM module; emit textual IR or bitcode. | | Clang | Compile the emitted IR for the host target and link a native executable. | | The operating system | Load the executable, run `main`, and expose its exit status. | -`@silk-effect/llvm` intentionally does not read your source file, run Clang, link an executable, +`@silk-lang/llvm` intentionally does not read your source file, run Clang, link an executable, or provide a JIT. Those boundaries keep the package deterministic and let the tutorial show each compiler stage explicitly. @@ -164,7 +164,7 @@ Stages: - author - Clang - lexer -- Tiny lowering with `@silk-effect/llvm` +- Tiny lowering with `@silk-lang/llvm`
Check your answer @@ -172,7 +172,7 @@ Stages: 1. The author produces `.tiny` source. 2. The lexer produces the token stream. 3. The parser produces the AST. -4. Tiny lowering uses `@silk-effect/llvm` to produce `.ll` LLVM IR. +4. Tiny lowering uses `@silk-lang/llvm` to produce `.ll` LLVM IR. 5. Clang produces native object code and the linked executable. 6. The operating system exposes the program's exit status. diff --git a/packages/llvm/docs/tutorials/tiny-language/02-understand-llvm.md b/packages/llvm/docs/tutorials/tiny-language/02-understand-llvm.md index fd000e1a..78945123 100644 --- a/packages/llvm/docs/tutorials/tiny-language/02-understand-llvm.md +++ b/packages/llvm/docs/tutorials/tiny-language/02-understand-llvm.md @@ -9,7 +9,7 @@ be able to label its types, signature, basic block, instruction, and terminator owns each artifact after it. We are not writing compiler code yet. Lesson 3 will set up the project, and Lesson 7 will generate -this function with `@silk-effect/llvm`. +this function with `@silk-lang/llvm`. ## Place LLVM in the pipeline @@ -19,7 +19,7 @@ It is not Tiny's parser, and it is not the operating system that runs the final In this tutorial, the responsibilities divide this way: 1. The **Tiny frontend** turns Tiny source into an AST and decides what the program means. -2. **`@silk-effect/llvm`** helps the frontend construct a valid LLVM module and serialize it. +2. **`@silk-lang/llvm`** helps the frontend construct a valid LLVM module and serialize it. 3. The **Clang driver** accepts the emitted IR, asks the LLVM backend to produce host machine code, and invokes the platform linker. 4. The **operating system** loads and runs the linked executable. @@ -71,8 +71,8 @@ These files are related, but they are not interchangeable: | Artifact | Typical form | Produced here by | Consumed here by | | --- | --- | --- | --- | | Tiny source | `.tiny` text | You | Tiny lexer and parser | -| LLVM assembly | `.ll` text | `@silk-effect/llvm` | Humans, Clang, LLVM tools | -| LLVM bitcode | `.bc` bytes | `@silk-effect/llvm` | Clang and LLVM tools | +| LLVM assembly | `.ll` text | `@silk-lang/llvm` | Humans, Clang, LLVM tools | +| LLVM bitcode | `.bc` bytes | `@silk-lang/llvm` | Clang and LLVM tools | | Object file | `.o` or platform equivalent | Clang/LLVM backend | Platform linker | | Native executable | Platform binary | Linker, driven by Clang | Operating system | @@ -80,7 +80,7 @@ Textual IR and bitcode encode the same kind of LLVM module. Textual `.ll` is des bitcode is its compact binary representation. Neither is the host machine's object code. In the final command, Clang acts as a driver for more than one step: it compiles the LLVM module -for the current target and invokes the linker to create the executable. `@silk-effect/llvm` stops +for the current target and invokes the linker to create the executable. `@silk-lang/llvm` stops before both operations. ## Avoid three misleading shortcuts @@ -140,7 +140,7 @@ The artifact order is Tiny source → LLVM IR → object file → native executa
You can now read the exact LLVM function we will construct later. Next, we will create a clean -consumer project and use `@silk-effect/llvm` to render its first empty module. +consumer project and use `@silk-lang/llvm` to render its first empty module. [Previous: Meet Tiny](./01-meet-tiny.md) · [Next: Create the consumer project and render a module](./03-consumer-setup.md) diff --git a/packages/llvm/docs/tutorials/tiny-language/03-consumer-setup.md b/packages/llvm/docs/tutorials/tiny-language/03-consumer-setup.md index 6ef2580c..18fade95 100644 --- a/packages/llvm/docs/tutorials/tiny-language/03-consumer-setup.md +++ b/packages/llvm/docs/tutorials/tiny-language/03-consumer-setup.md @@ -4,7 +4,7 @@ [Next: Tokenize Tiny source](./04-tokenize-source.md) In this lesson, we will create a standalone TypeScript project that consumes -`@silk-effect/llvm` exactly as an npm package. We will finish by rendering an empty LLVM module—a +`@silk-lang/llvm` exactly as an npm package. We will finish by rendering an empty LLVM module—a small but real result that confirms the toolchain is ready before we write a lexer. ## Check the starting tools @@ -30,7 +30,7 @@ Run these commands inside the empty directory: ```sh pnpm init -pnpm add effect@4.0.0-beta.102 @silk-effect/llvm@^0.1.0 +pnpm add effect@4.0.0-beta.102 @silk-lang/llvm@^0.1.0 pnpm add -D typescript@7.0.2 vitest@4.1.10 @effect/vitest@4.0.0-beta.102 @types/node@^22.13.0 ``` @@ -51,7 +51,7 @@ Set `type` and the three scripts in `package.json` so it contains: "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@silk-effect/llvm": "^0.1.0", + "@silk-lang/llvm": "^0.1.0", "effect": "4.0.0-beta.102" }, "devDependencies": { @@ -67,7 +67,7 @@ Set `type` and the three scripts in `package.json` so it contains: Repository maintainers: test before npm publication Build and pack the local package, then copy this project into a clean temporary directory. Delete -the `@silk-effect/llvm` entry from the temporary `package.json` before running +the `@silk-lang/llvm` entry from the temporary `package.json` before running `pnpm add /absolute/path/to/silk-effect-llvm-0.0.0.tgz --save-exact`. Removing the npm declaration first prevents pnpm from resolving the unpublished package before it considers the tarball. The tutorial's learner path remains the npm commands above; this substitution only verifies that the @@ -108,8 +108,8 @@ requires code generation. Create `src/Cli.ts`: ```typescript -import * as Builder from '@silk-effect/llvm/Builder' -import * as IrText from '@silk-effect/llvm/IrText' +import * as Builder from '@silk-lang/llvm/Builder' +import * as IrText from '@silk-lang/llvm/IrText' import * as Effect from 'effect/Effect' const program = Effect.gen(function* () { @@ -148,7 +148,7 @@ what belongs in that module. ## Recover from setup problems -**pnpm cannot find `@silk-effect/llvm`.** The package has not been published yet if you are reading +**pnpm cannot find `@silk-lang/llvm`.** The package has not been published yet if you are reading the repository version of this lesson. Use the maintainer tarball procedure above; do not change the imports. diff --git a/packages/llvm/docs/tutorials/tiny-language/07-first-native-program.md b/packages/llvm/docs/tutorials/tiny-language/07-first-native-program.md index 8761b418..4ef64fc9 100644 --- a/packages/llvm/docs/tutorials/tiny-language/07-first-native-program.md +++ b/packages/llvm/docs/tutorials/tiny-language/07-first-native-program.md @@ -22,14 +22,14 @@ the compiler; the public error channel should retain both `CompileError` and `Ll Create `src/Compiler.ts` and import the package's public actor subpaths: ```typescript -import * as Block from '@silk-effect/llvm/Block' -import * as Builder from '@silk-effect/llvm/Builder' -import * as Constant from '@silk-effect/llvm/Constant' -import * as FunctionActor from '@silk-effect/llvm/Function' -import * as FunctionBody from '@silk-effect/llvm/FunctionBody' -import * as IrText from '@silk-effect/llvm/IrText' -import type * as LlvmError from '@silk-effect/llvm/LlvmError' -import * as Type from '@silk-effect/llvm/Type' +import * as Block from '@silk-lang/llvm/Block' +import * as Builder from '@silk-lang/llvm/Builder' +import * as Constant from '@silk-lang/llvm/Constant' +import * as FunctionActor from '@silk-lang/llvm/Function' +import * as FunctionBody from '@silk-lang/llvm/FunctionBody' +import * as IrText from '@silk-lang/llvm/IrText' +import type * as LlvmError from '@silk-lang/llvm/LlvmError' +import * as Type from '@silk-lang/llvm/Type' ``` After validating the AST shape, create the module and signature: diff --git a/packages/llvm/docs/tutorials/tiny-language/11-complete-compiler.md b/packages/llvm/docs/tutorials/tiny-language/11-complete-compiler.md index 32e08b62..f7be81dc 100644 --- a/packages/llvm/docs/tutorials/tiny-language/11-complete-compiler.md +++ b/packages/llvm/docs/tutorials/tiny-language/11-complete-compiler.md @@ -85,7 +85,7 @@ The stream boundary gives the CLI a strict contract: - success writes only valid LLVM IR to stdout; - failure writes no IR to stdout and one diagnostic to stderr; and -- Clang is never invoked inside the compiler or `@silk-effect/llvm`. +- Clang is never invoked inside the compiler or `@silk-lang/llvm`. ## Compile the central program @@ -175,7 +175,7 @@ definitions and confirm the compiler accepted only a zero-parameter Tiny `main`. ## Confirm the tutorial stands alone -From a clean temporary consumer containing the packed local `@silk-effect/llvm` tarball, run: +From a clean temporary consumer containing the packed local `@silk-lang/llvm` tarball, run: ```sh pnpm typecheck diff --git a/packages/llvm/docs/tutorials/tiny-language/12-diagnostics-bitcode.md b/packages/llvm/docs/tutorials/tiny-language/12-diagnostics-bitcode.md index 66a5282a..f118e6f1 100644 --- a/packages/llvm/docs/tutorials/tiny-language/12-diagnostics-bitcode.md +++ b/packages/llvm/docs/tutorials/tiny-language/12-diagnostics-bitcode.md @@ -18,7 +18,7 @@ Tiny now exposes these expected failure families: | `ParseError` | Parser | Missing `else` or trailing syntax | | `ResolutionError` | Tiny resolution | Unknown name, duplicate function, or wrong arity | | `CompileError` | Tiny-to-LLVM lowering invariant | A Tiny `i32` call unexpectedly produces no value | -| `LlvmError` | `@silk-effect/llvm` | Invalid type, ownership, body, or serialization state | +| `LlvmError` | `@silk-lang/llvm` | Invalid type, ownership, body, or serialization state | `LexError`, `ParseError`, and `ResolutionError` carry `[start, end)` source offsets. `LlvmError` keeps its package operation and discriminated reason unchanged. Do not catch these inside diff --git a/packages/llvm/package.json b/packages/llvm/package.json index 2edcefcd..6293fc53 100644 --- a/packages/llvm/package.json +++ b/packages/llvm/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/llvm", + "name": "@silk-lang/llvm", "version": "0.0.0", "description": "LLVM integration primitives for Silk Effect.", "license": "MIT", diff --git a/packages/llvm/src/AddrSpace.ts b/packages/llvm/src/AddrSpace.ts index 58500abe..410eda2c 100644 --- a/packages/llvm/src/AddrSpace.ts +++ b/packages/llvm/src/AddrSpace.ts @@ -37,7 +37,7 @@ export const defaultAddrSpace: AddrSpace = Object.freeze({ _tag: 'AddrSpace', va * * ```ts * import * as Effect from 'effect/Effect' - * import * as AddrSpace from '@silk-effect/llvm/AddrSpace' + * import * as AddrSpace from '@silk-lang/llvm/AddrSpace' * * const rendered = await Effect.runPromise( * Effect.gen(function* () { diff --git a/packages/llvm/src/Alias.ts b/packages/llvm/src/Alias.ts index 4f29459e..a5c738a4 100644 --- a/packages/llvm/src/Alias.ts +++ b/packages/llvm/src/Alias.ts @@ -117,12 +117,12 @@ const resolve = ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Alias from '@silk-effect/llvm/Alias' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as Constant from '@silk-effect/llvm/Constant' - * import * as IrText from '@silk-effect/llvm/IrText' - * import * as Type from '@silk-effect/llvm/Type' - * import * as Variable from '@silk-effect/llvm/Variable' + * import * as Alias from '@silk-lang/llvm/Alias' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as Constant from '@silk-lang/llvm/Constant' + * import * as IrText from '@silk-lang/llvm/IrText' + * import * as Type from '@silk-lang/llvm/Type' + * import * as Variable from '@silk-lang/llvm/Variable' * * const text = await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/llvm/src/Alignment.ts b/packages/llvm/src/Alignment.ts index 6e1df345..a537dd27 100644 --- a/packages/llvm/src/Alignment.ts +++ b/packages/llvm/src/Alignment.ts @@ -42,7 +42,7 @@ const isPowerOfTwo = (value: bigint): boolean => value > 0n && (value & (value - * * ```ts * import * as Effect from 'effect/Effect' - * import * as Alignment from '@silk-effect/llvm/Alignment' + * import * as Alignment from '@silk-lang/llvm/Alignment' * * const alignment = await Effect.runPromise(Alignment.fromByteUnits(16)) * // Alignment.render(alignment) === '16' diff --git a/packages/llvm/src/Attribute.ts b/packages/llvm/src/Attribute.ts index 6ec9d2fe..8b10bd0b 100644 --- a/packages/llvm/src/Attribute.ts +++ b/packages/llvm/src/Attribute.ts @@ -289,8 +289,8 @@ const internSet = Effect.fn('Attribute.internSet')(function* ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Attribute from '@silk-effect/llvm/Attribute' - * import * as Builder from '@silk-effect/llvm/Builder' + * import * as Attribute from '@silk-lang/llvm/Attribute' + * import * as Builder from '@silk-lang/llvm/Builder' * * const attributes = await Effect.runPromise( * Effect.gen(function* () { diff --git a/packages/llvm/src/Bitcode.ts b/packages/llvm/src/Bitcode.ts index 223e24cd..72f42f7e 100644 --- a/packages/llvm/src/Bitcode.ts +++ b/packages/llvm/src/Bitcode.ts @@ -355,8 +355,8 @@ const encodeSnapshot = (state: BuilderState.Snapshot, options: Options): Uint8Ar * * ```ts * import * as Effect from 'effect/Effect' - * import * as Bitcode from '@silk-effect/llvm/Bitcode' - * import * as Builder from '@silk-effect/llvm/Builder' + * import * as Bitcode from '@silk-lang/llvm/Bitcode' + * import * as Builder from '@silk-lang/llvm/Builder' * * const bytes = await Effect.runPromise( * Effect.gen(function* () { diff --git a/packages/llvm/src/Block.ts b/packages/llvm/src/Block.ts index 5424eee3..bdce9f52 100644 --- a/packages/llvm/src/Block.ts +++ b/packages/llvm/src/Block.ts @@ -35,11 +35,11 @@ export interface Block extends Handle.Handle<'Block'> {} * * ```ts * import * as Effect from 'effect/Effect' - * import * as Block from '@silk-effect/llvm/Block' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as FunctionActor from '@silk-effect/llvm/Function' - * import * as FunctionBody from '@silk-effect/llvm/FunctionBody' - * import * as Type from '@silk-effect/llvm/Type' + * import * as Block from '@silk-lang/llvm/Block' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as FunctionActor from '@silk-lang/llvm/Function' + * import * as FunctionBody from '@silk-lang/llvm/FunctionBody' + * import * as Type from '@silk-lang/llvm/Type' * * await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/llvm/src/Builder.ts b/packages/llvm/src/Builder.ts index 25aac5d8..0e087ac9 100644 --- a/packages/llvm/src/Builder.ts +++ b/packages/llvm/src/Builder.ts @@ -54,8 +54,8 @@ export interface Options { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as IrText from '@silk-effect/llvm/IrText' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as IrText from '@silk-lang/llvm/IrText' * * const text = await Effect.runPromise( * Effect.gen(function* () { diff --git a/packages/llvm/src/ByteString.ts b/packages/llvm/src/ByteString.ts index a2a05510..db5111fd 100644 --- a/packages/llvm/src/ByteString.ts +++ b/packages/llvm/src/ByteString.ts @@ -34,7 +34,7 @@ export const fromUint8Array = (bytes: Uint8Array): ByteString => fromNumbers(byt * **Example** (Encoding UTF-8 text) * * ```ts - * import * as ByteString from '@silk-effect/llvm/ByteString' + * import * as ByteString from '@silk-lang/llvm/ByteString' * * const value = ByteString.fromString('λ') * // ByteString.toUint8Array(value) equals Uint8Array.of(0xCE, 0xBB) diff --git a/packages/llvm/src/Constant.ts b/packages/llvm/src/Constant.ts index 6c71fd8b..4bca463b 100644 --- a/packages/llvm/src/Constant.ts +++ b/packages/llvm/src/Constant.ts @@ -214,9 +214,9 @@ const integerOf = Effect.fn('Constant.integerOf')(function* ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as Constant from '@silk-effect/llvm/Constant' - * import * as Type from '@silk-effect/llvm/Type' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as Constant from '@silk-lang/llvm/Constant' + * import * as Type from '@silk-lang/llvm/Type' * * const bits = await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() @@ -325,9 +325,9 @@ const formatBytes: Record = { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as Constant from '@silk-effect/llvm/Constant' - * import * as Type from '@silk-effect/llvm/Type' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as Constant from '@silk-lang/llvm/Constant' + * import * as Type from '@silk-lang/llvm/Type' * * const nan = await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/llvm/src/DIFlags.ts b/packages/llvm/src/DIFlags.ts index 914eb7e7..f864a154 100644 --- a/packages/llvm/src/DIFlags.ts +++ b/packages/llvm/src/DIFlags.ts @@ -113,7 +113,7 @@ export const none: DIFlags = Object.freeze({ bits: 0 }) * **Example** (Packing debug flags) * * ```ts - * import * as DIFlags from '@silk-effect/llvm/DIFlags' + * import * as DIFlags from '@silk-lang/llvm/DIFlags' * * const flags = DIFlags.make({ visibility: 'public', prototyped: true }) * // DIFlags.render(flags) === 'DIFlagPublic | DIFlagPrototyped' diff --git a/packages/llvm/src/DISPFlags.ts b/packages/llvm/src/DISPFlags.ts index d82b14ae..5fcbb704 100644 --- a/packages/llvm/src/DISPFlags.ts +++ b/packages/llvm/src/DISPFlags.ts @@ -67,7 +67,7 @@ export const none: DISPFlags = Object.freeze({ bits: 0 }) * **Example** (Packing subprogram flags) * * ```ts - * import * as DISPFlags from '@silk-effect/llvm/DISPFlags' + * import * as DISPFlags from '@silk-lang/llvm/DISPFlags' * * const flags = DISPFlags.make({ definition: true, optimized: true }) * // DISPFlags.toText(flags) equals ['DISPFlagDefinition', 'DISPFlagOptimized'] diff --git a/packages/llvm/src/DataLayout.ts b/packages/llvm/src/DataLayout.ts index a8a5449f..4f7acc61 100644 --- a/packages/llvm/src/DataLayout.ts +++ b/packages/llvm/src/DataLayout.ts @@ -246,7 +246,7 @@ const parseUnsafe = (original: ByteString.ByteString): DataLayout => { * * ```ts * import * as Effect from 'effect/Effect' - * import * as DataLayout from '@silk-effect/llvm/DataLayout' + * import * as DataLayout from '@silk-lang/llvm/DataLayout' * * const width = await Effect.runPromise( * Effect.gen(function* () { diff --git a/packages/llvm/src/FastMath.ts b/packages/llvm/src/FastMath.ts index 9894bf34..d7223f6a 100644 --- a/packages/llvm/src/FastMath.ts +++ b/packages/llvm/src/FastMath.ts @@ -71,7 +71,7 @@ export const fast: FastMath = Object.freeze({ * **Example** (Creating fast-math flags) * * ```ts - * import * as FastMath from '@silk-effect/llvm/FastMath' + * import * as FastMath from '@silk-lang/llvm/FastMath' * * const flags = FastMath.make({ noNaNs: true, allowContract: true }) * // FastMath.toText(flags) equals ['nnan', 'contract'] @@ -93,7 +93,7 @@ export const make = (input: Input = false): FastMath => { * * ```ts * import { pipe } from 'effect/Function' - * import * as FastMath from '@silk-effect/llvm/FastMath' + * import * as FastMath from '@silk-lang/llvm/FastMath' * * const flags = pipe(FastMath.none, FastMath.combine({ noNaNs: true })) * ``` diff --git a/packages/llvm/src/Function.ts b/packages/llvm/src/Function.ts index 143e55d5..122d5242 100644 --- a/packages/llvm/src/Function.ts +++ b/packages/llvm/src/Function.ts @@ -480,11 +480,11 @@ const releaseBodyBuild = Effect.fnUntraced(function* ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Block from '@silk-effect/llvm/Block' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as FunctionActor from '@silk-effect/llvm/Function' - * import * as FunctionBody from '@silk-effect/llvm/FunctionBody' - * import * as Type from '@silk-effect/llvm/Type' + * import * as Block from '@silk-lang/llvm/Block' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as FunctionActor from '@silk-lang/llvm/Function' + * import * as FunctionBody from '@silk-lang/llvm/FunctionBody' + * import * as Type from '@silk-lang/llvm/Type' * * await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/llvm/src/FunctionBody/Binary.ts b/packages/llvm/src/FunctionBody/Binary.ts index c4a0b4d4..8383f37d 100644 --- a/packages/llvm/src/FunctionBody/Binary.ts +++ b/packages/llvm/src/FunctionBody/Binary.ts @@ -80,12 +80,12 @@ export interface BinaryOptions { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Block from '@silk-effect/llvm/Block' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as FunctionActor from '@silk-effect/llvm/Function' - * import * as FunctionBody from '@silk-effect/llvm/FunctionBody' - * import * as Type from '@silk-effect/llvm/Type' - * import * as Value from '@silk-effect/llvm/Value' + * import * as Block from '@silk-lang/llvm/Block' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as FunctionActor from '@silk-lang/llvm/Function' + * import * as FunctionBody from '@silk-lang/llvm/FunctionBody' + * import * as Type from '@silk-lang/llvm/Type' + * import * as Value from '@silk-lang/llvm/Value' * * await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/llvm/src/Global.ts b/packages/llvm/src/Global.ts index 81ced9ae..0e11a30e 100644 --- a/packages/llvm/src/Global.ts +++ b/packages/llvm/src/Global.ts @@ -88,10 +88,10 @@ export interface Properties extends GlobalDescription.Common { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as Global from '@silk-effect/llvm/Global' - * import * as Type from '@silk-effect/llvm/Type' - * import * as Variable from '@silk-effect/llvm/Variable' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as Global from '@silk-lang/llvm/Global' + * import * as Type from '@silk-lang/llvm/Type' + * import * as Variable from '@silk-lang/llvm/Variable' * * const matches = await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/llvm/src/IntegerMath.ts b/packages/llvm/src/IntegerMath.ts index 42d3de53..2ec8a08f 100644 --- a/packages/llvm/src/IntegerMath.ts +++ b/packages/llvm/src/IntegerMath.ts @@ -48,7 +48,7 @@ export const none: IntegerMath = Object.freeze({ * * ```ts * import { pipe } from 'effect/Function' - * import * as IntegerMath from '@silk-effect/llvm/IntegerMath' + * import * as IntegerMath from '@silk-lang/llvm/IntegerMath' * * const flags = pipe( * IntegerMath.make(), diff --git a/packages/llvm/src/Intrinsic.ts b/packages/llvm/src/Intrinsic.ts index bbfff61a..39fa88e1 100644 --- a/packages/llvm/src/Intrinsic.ts +++ b/packages/llvm/src/Intrinsic.ts @@ -602,8 +602,8 @@ const commonAttributes = Effect.fnUntraced(function* ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as Intrinsic from '@silk-effect/llvm/Intrinsic' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as Intrinsic from '@silk-lang/llvm/Intrinsic' * * const trap = await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/llvm/src/IrText.ts b/packages/llvm/src/IrText.ts index ddad0807..a47f351a 100644 --- a/packages/llvm/src/IrText.ts +++ b/packages/llvm/src/IrText.ts @@ -110,8 +110,8 @@ const renderSnapshot = (state: BuilderState.Snapshot): string => { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as IrText from '@silk-effect/llvm/IrText' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as IrText from '@silk-lang/llvm/IrText' * * const text = await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make({ sourceFilename: 'example.ll' }) diff --git a/packages/llvm/src/LlvmError.ts b/packages/llvm/src/LlvmError.ts index 8b9803f8..755150a4 100644 --- a/packages/llvm/src/LlvmError.ts +++ b/packages/llvm/src/LlvmError.ts @@ -44,7 +44,7 @@ interface TaggedFields extends Options { * * ```ts * import * as Effect from 'effect/Effect' - * import * as AddrSpace from '@silk-effect/llvm/AddrSpace' + * import * as AddrSpace from '@silk-lang/llvm/AddrSpace' * * const description = await Effect.runPromise( * AddrSpace.make(-1).pipe( diff --git a/packages/llvm/src/MemoryAccess.ts b/packages/llvm/src/MemoryAccess.ts index 21eff707..9d9597f3 100644 --- a/packages/llvm/src/MemoryAccess.ts +++ b/packages/llvm/src/MemoryAccess.ts @@ -163,7 +163,7 @@ export const operationCode: Readonly> = Object.f * * ```ts * import { pipe } from 'effect/Function' - * import * as MemoryAccess from '@silk-effect/llvm/MemoryAccess' + * import * as MemoryAccess from '@silk-lang/llvm/MemoryAccess' * * const access = pipe( * MemoryAccess.make({ kind: 'volatile' }), diff --git a/packages/llvm/src/Metadata.ts b/packages/llvm/src/Metadata.ts index 4b523fd0..42331e7e 100644 --- a/packages/llvm/src/Metadata.ts +++ b/packages/llvm/src/Metadata.ts @@ -411,8 +411,8 @@ export const local = Effect.fn('Metadata.local')(function* ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as Metadata from '@silk-effect/llvm/Metadata' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as Metadata from '@silk-lang/llvm/Metadata' * * await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make({ strip: false }) diff --git a/packages/llvm/src/Type.ts b/packages/llvm/src/Type.ts index a2af2b98..240358e2 100644 --- a/packages/llvm/src/Type.ts +++ b/packages/llvm/src/Type.ts @@ -257,8 +257,8 @@ export const token = Effect.fn('Type.token')(function* (builder: Builder.Builder * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as Type from '@silk-effect/llvm/Type' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as Type from '@silk-lang/llvm/Type' * * const width = await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/llvm/src/Value.ts b/packages/llvm/src/Value.ts index 86dffa45..498a4761 100644 --- a/packages/llvm/src/Value.ts +++ b/packages/llvm/src/Value.ts @@ -55,13 +55,13 @@ export const argument = Effect.fn('Value.argument')(function* ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Block from '@silk-effect/llvm/Block' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as Constant from '@silk-effect/llvm/Constant' - * import * as FunctionActor from '@silk-effect/llvm/Function' - * import * as FunctionBody from '@silk-effect/llvm/FunctionBody' - * import * as Type from '@silk-effect/llvm/Type' - * import * as Value from '@silk-effect/llvm/Value' + * import * as Block from '@silk-lang/llvm/Block' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as Constant from '@silk-lang/llvm/Constant' + * import * as FunctionActor from '@silk-lang/llvm/Function' + * import * as FunctionBody from '@silk-lang/llvm/FunctionBody' + * import * as Type from '@silk-lang/llvm/Type' + * import * as Value from '@silk-lang/llvm/Value' * * await Effect.runPromise(Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/llvm/src/Variable.ts b/packages/llvm/src/Variable.ts index a3e1f1f6..feafe3ea 100644 --- a/packages/llvm/src/Variable.ts +++ b/packages/llvm/src/Variable.ts @@ -170,10 +170,10 @@ const setGlobalDebugExpressions = ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/llvm/Builder' - * import * as Constant from '@silk-effect/llvm/Constant' - * import * as Type from '@silk-effect/llvm/Type' - * import * as Variable from '@silk-effect/llvm/Variable' + * import * as Builder from '@silk-lang/llvm/Builder' + * import * as Constant from '@silk-lang/llvm/Constant' + * import * as Type from '@silk-lang/llvm/Type' + * import * as Variable from '@silk-lang/llvm/Variable' * * const variable = await Effect.runPromise( * Effect.gen(function* () { diff --git a/packages/llvm/src/Verify.ts b/packages/llvm/src/Verify.ts index b17b3411..2888eb97 100644 --- a/packages/llvm/src/Verify.ts +++ b/packages/llvm/src/Verify.ts @@ -461,7 +461,7 @@ const verifyFunction = ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Verify from '@silk-effect/llvm/Verify' + * import * as Verify from '@silk-lang/llvm/Verify' * * const check = Effect.gen(function* () { * const violations = yield* Verify.verify(builder) diff --git a/packages/llvm/src/internal/Handle.ts b/packages/llvm/src/internal/Handle.ts index ce65afc0..0c0ba9b9 100644 --- a/packages/llvm/src/internal/Handle.ts +++ b/packages/llvm/src/internal/Handle.ts @@ -3,7 +3,7 @@ import type * as Builder from '../Builder.js' import { invalidState, type LlvmError } from '../LlvmError.js' import type * as OwnedHandle from './OwnedHandle.js' -const HandleTypeId: unique symbol = Symbol.for('@silk-effect/llvm/internal/Handle') +const HandleTypeId: unique symbol = Symbol.for('@silk-lang/llvm/internal/Handle') export interface Handle { readonly _tag: Tag diff --git a/packages/lsp/README.md b/packages/lsp/README.md index 78b7f4aa..68b1ed3f 100644 --- a/packages/lsp/README.md +++ b/packages/lsp/README.md @@ -1,4 +1,4 @@ -# @silk-effect/lsp +# @silk-lang/lsp A Language Server Protocol server for Silk Effect, powered by the bootstrap compiler's analysis snapshot. Project-scoped analysis sessions feed every feature; the server adds only protocol diff --git a/packages/lsp/package.json b/packages/lsp/package.json index d9a0ee6e..4a994f78 100644 --- a/packages/lsp/package.json +++ b/packages/lsp/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/lsp", + "name": "@silk-lang/lsp", "version": "0.0.0", "description": "Language Server Protocol server for Silk Effect, powered by the bootstrap compiler analysis snapshot.", "license": "MIT", @@ -68,11 +68,11 @@ }, "dependencies": { "@effect/platform-node": "4.0.0-beta.103", - "@silk-effect/compiler": "workspace:*", - "@silk-effect/compiler-cli": "workspace:*", - "@silk-effect/documentation": "workspace:*", - "@silk-effect/formatter": "workspace:*", - "@silk-effect/inspector": "workspace:*", + "@silk-lang/compiler": "workspace:*", + "@silk-lang/compiler-cli": "workspace:*", + "@silk-lang/documentation": "workspace:*", + "@silk-lang/formatter": "workspace:*", + "@silk-lang/inspector": "workspace:*", "effect": "catalog:", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.12", @@ -80,7 +80,7 @@ }, "devDependencies": { "@effect/vitest": "catalog:", - "@silk-effect/language": "workspace:*", + "@silk-lang/language": "workspace:*", "@types/node": "^24.10.1" } } diff --git a/packages/lsp/src/Document.ts b/packages/lsp/src/Document.ts index 5f4dbe4d..b6550e0d 100644 --- a/packages/lsp/src/Document.ts +++ b/packages/lsp/src/Document.ts @@ -1,22 +1,22 @@ -import * as Analysis from '@silk-effect/compiler/Analysis' -import type * as AutoImport from '@silk-effect/compiler/AutoImport' -import type * as DeclarationFacts from '@silk-effect/compiler/DeclarationFacts' -import * as Diagnostic from '@silk-effect/compiler/Diagnostic' -import * as FormattedDocument from '@silk-effect/compiler/FormattedDocument' -import * as ImportPath from '@silk-effect/compiler/ImportPath' -import * as ImportPlan from '@silk-effect/compiler/ImportPlan' -import * as Presentation from '@silk-effect/compiler/Presentation' -import * as SemanticOccurrence from '@silk-effect/compiler/SemanticOccurrence' -import type * as SourceAction from '@silk-effect/compiler/SourceAction' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceSpan from '@silk-effect/compiler/SourceSpan' -import * as Stdlib from '@silk-effect/compiler/Stdlib' -import type * as SyntaxFile from '@silk-effect/compiler/SyntaxFile' -import * as SyntaxTree from '@silk-effect/compiler/SyntaxTree' -import type * as Token from '@silk-effect/compiler/Token' -import type * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' -import * as Documentation from '@silk-effect/documentation/Document' -import * as Formatter from '@silk-effect/formatter/Formatter' +import * as Analysis from '@silk-lang/compiler/Analysis' +import type * as AutoImport from '@silk-lang/compiler/AutoImport' +import type * as DeclarationFacts from '@silk-lang/compiler/DeclarationFacts' +import * as Diagnostic from '@silk-lang/compiler/Diagnostic' +import * as FormattedDocument from '@silk-lang/compiler/FormattedDocument' +import * as ImportPath from '@silk-lang/compiler/ImportPath' +import * as ImportPlan from '@silk-lang/compiler/ImportPlan' +import * as Presentation from '@silk-lang/compiler/Presentation' +import * as SemanticOccurrence from '@silk-lang/compiler/SemanticOccurrence' +import type * as SourceAction from '@silk-lang/compiler/SourceAction' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceSpan from '@silk-lang/compiler/SourceSpan' +import * as Stdlib from '@silk-lang/compiler/Stdlib' +import type * as SyntaxFile from '@silk-lang/compiler/SyntaxFile' +import * as SyntaxTree from '@silk-lang/compiler/SyntaxTree' +import type * as Token from '@silk-lang/compiler/Token' +import type * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' +import * as Documentation from '@silk-lang/documentation/Document' +import * as Formatter from '@silk-lang/formatter/Formatter' import * as Effect from 'effect/Effect' import * as Option from 'effect/Option' import * as Result from 'effect/Result' @@ -1646,7 +1646,7 @@ export const symbols = ( * * Every entry is reachable from a Silk token kind or occurrence role, so the legend advertises no * type the server never sends. `keyword`, `comment`, `string`, `number`, and `operator` come from - * the lexer's own kinds — the same kinds `@silk-effect/language`'s TextMate grammar colors — while + * the lexer's own kinds — the same kinds `@silk-lang/language`'s TextMate grammar colors — while * an identifier's type is decided by the semantic occurrence covering it, which is what separates a * type name from a variable name that the grammar's regular expressions must color alike. */ diff --git a/packages/lsp/src/Inspection.ts b/packages/lsp/src/Inspection.ts index 3747c8c3..ccb441f7 100644 --- a/packages/lsp/src/Inspection.ts +++ b/packages/lsp/src/Inspection.ts @@ -1,5 +1,5 @@ /** - * The language server's inspector surface: projects `@silk-effect/inspector` views for workspace + * The language server's inspector surface: projects `@silk-lang/inspector` views for workspace * documents from the committed analysis, so editor clients can render compiler-phase views * without running the compiler themselves. * @@ -10,12 +10,12 @@ * whole cache with the view it belonged to. */ -import * as Analysis from '@silk-effect/compiler/Analysis' -import type * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import type { Fact, RowModel } from '@silk-effect/inspector' -import { viewById, views } from '@silk-effect/inspector' +import * as Analysis from '@silk-lang/compiler/Analysis' +import type * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import type { Fact, RowModel } from '@silk-lang/inspector' +import { viewById, views } from '@silk-lang/inspector' import * as Effect from 'effect/Effect' import type * as ProjectSnapshot from './ProjectSnapshot.js' diff --git a/packages/lsp/src/LineIndex.ts b/packages/lsp/src/LineIndex.ts index bb2d0bf6..d32b888f 100644 --- a/packages/lsp/src/LineIndex.ts +++ b/packages/lsp/src/LineIndex.ts @@ -1,4 +1,4 @@ -import type * as SourceSpan from '@silk-effect/compiler/SourceSpan' +import type * as SourceSpan from '@silk-lang/compiler/SourceSpan' import type { Position, Range } from 'vscode-languageserver-types' const decoder = new TextDecoder() diff --git a/packages/lsp/src/ProjectSnapshot.ts b/packages/lsp/src/ProjectSnapshot.ts index 1dab0417..dc1f587c 100644 --- a/packages/lsp/src/ProjectSnapshot.ts +++ b/packages/lsp/src/ProjectSnapshot.ts @@ -1,5 +1,5 @@ -import type * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import type * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' +import type * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import type * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' import type * as Document from './Document.js' /** One document projection owned by a complete immutable project commit. */ diff --git a/packages/lsp/src/SourceLedger.ts b/packages/lsp/src/SourceLedger.ts index 0f69744e..76315729 100644 --- a/packages/lsp/src/SourceLedger.ts +++ b/packages/lsp/src/SourceLedger.ts @@ -3,7 +3,7 @@ import * as Result from 'effect/Result' import * as DocumentVersion from './DocumentVersion.js' import type * as SourceEvent from './SourceEvent.js' -const TypeId: unique symbol = Symbol.for('@silk-effect/lsp/SourceLedger') +const TypeId: unique symbol = Symbol.for('@silk-lang/lsp/SourceLedger') /** Latest accepted bytes for one open editor document. */ export interface Entry { diff --git a/packages/lsp/src/Workspace.ts b/packages/lsp/src/Workspace.ts index 15b9da32..64d3c60b 100644 --- a/packages/lsp/src/Workspace.ts +++ b/packages/lsp/src/Workspace.ts @@ -1,10 +1,10 @@ -import * as Analysis from '@silk-effect/compiler/Analysis' -import * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceOrigin from '@silk-effect/compiler/SourceOrigin' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as FileSourceResolver from '@silk-effect/compiler-cli/FileSourceResolver' -import * as Project from '@silk-effect/compiler-cli/Project' +import * as Analysis from '@silk-lang/compiler/Analysis' +import * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceOrigin from '@silk-lang/compiler/SourceOrigin' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as FileSourceResolver from '@silk-lang/compiler-cli/FileSourceResolver' +import * as Project from '@silk-lang/compiler-cli/Project' import * as Effect from 'effect/Effect' import type * as FileSystem from 'effect/FileSystem' import * as Layer from 'effect/Layer' diff --git a/packages/lsp/src/WorkspaceCatalog.ts b/packages/lsp/src/WorkspaceCatalog.ts index edfc6935..974adc9d 100644 --- a/packages/lsp/src/WorkspaceCatalog.ts +++ b/packages/lsp/src/WorkspaceCatalog.ts @@ -1,11 +1,11 @@ -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as ModuleSummary from '@silk-effect/compiler/ModuleSummary' -import * as Parser from '@silk-effect/compiler/Parser' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceOrigin from '@silk-effect/compiler/SourceOrigin' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as Stdlib from '@silk-effect/compiler/Stdlib' -import * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as ModuleSummary from '@silk-lang/compiler/ModuleSummary' +import * as Parser from '@silk-lang/compiler/Parser' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceOrigin from '@silk-lang/compiler/SourceOrigin' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as Stdlib from '@silk-lang/compiler/Stdlib' +import * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' import * as Option from 'effect/Option' diff --git a/packages/lsp/test/AutoImportScale.test.ts b/packages/lsp/test/AutoImportScale.test.ts index b980ce88..1fdc99f2 100644 --- a/packages/lsp/test/AutoImportScale.test.ts +++ b/packages/lsp/test/AutoImportScale.test.ts @@ -4,8 +4,8 @@ import { join } from 'node:path' import { pathToFileURL } from 'node:url' import { NodeServices } from '@effect/platform-node' import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' -import * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' +import * as Analysis from '@silk-lang/compiler/Analysis' +import * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' import * as Effect from 'effect/Effect' import * as Workspace from '../src/Workspace.js' import * as WorkspaceCatalog from '../src/WorkspaceCatalog.js' diff --git a/packages/lsp/test/CompilerEditorApi.test.ts b/packages/lsp/test/CompilerEditorApi.test.ts index 601f2ffe..788bb7b1 100644 --- a/packages/lsp/test/CompilerEditorApi.test.ts +++ b/packages/lsp/test/CompilerEditorApi.test.ts @@ -1,10 +1,10 @@ import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' -import type * as Completion from '@silk-effect/compiler/Completion' -import * as Intrinsic from '@silk-effect/compiler/Intrinsic' -import * as Presentation from '@silk-effect/compiler/Presentation' -import * as SemanticOccurrence from '@silk-effect/compiler/SemanticOccurrence' -import * as TypeHint from '@silk-effect/compiler/TypeHint' +import * as Analysis from '@silk-lang/compiler/Analysis' +import type * as Completion from '@silk-lang/compiler/Completion' +import * as Intrinsic from '@silk-lang/compiler/Intrinsic' +import * as Presentation from '@silk-lang/compiler/Presentation' +import * as SemanticOccurrence from '@silk-lang/compiler/SemanticOccurrence' +import * as TypeHint from '@silk-lang/compiler/TypeHint' const occurrenceQuery: ( self: Analysis.FrontendSnapshot, diff --git a/packages/lsp/test/Document.test.ts b/packages/lsp/test/Document.test.ts index 727269b6..2c9c7b30 100644 --- a/packages/lsp/test/Document.test.ts +++ b/packages/lsp/test/Document.test.ts @@ -1,15 +1,15 @@ import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' -import * as Lexer from '@silk-effect/compiler/Lexer' -import * as ModuleSummary from '@silk-effect/compiler/ModuleSummary' -import * as Parser from '@silk-effect/compiler/Parser' -import * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceOrigin from '@silk-effect/compiler/SourceOrigin' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as Stdlib from '@silk-effect/compiler/Stdlib' -import * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' -import * as TextMate from '@silk-effect/language/TextMate' +import * as Analysis from '@silk-lang/compiler/Analysis' +import * as Lexer from '@silk-lang/compiler/Lexer' +import * as ModuleSummary from '@silk-lang/compiler/ModuleSummary' +import * as Parser from '@silk-lang/compiler/Parser' +import * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceOrigin from '@silk-lang/compiler/SourceOrigin' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as Stdlib from '@silk-lang/compiler/Stdlib' +import * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' +import * as TextMate from '@silk-lang/language/TextMate' import * as Effect from 'effect/Effect' import * as Layer from 'effect/Layer' import * as Option from 'effect/Option' diff --git a/packages/lsp/test/ProjectWorker.test.ts b/packages/lsp/test/ProjectWorker.test.ts index c2bfa2f0..45c04296 100644 --- a/packages/lsp/test/ProjectWorker.test.ts +++ b/packages/lsp/test/ProjectWorker.test.ts @@ -1,8 +1,8 @@ import { assert, it } from '@effect/vitest' -import * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' +import * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' import * as Deferred from 'effect/Deferred' import * as Effect from 'effect/Effect' import * as Result from 'effect/Result' diff --git a/packages/lsp/test/Workspace.test.ts b/packages/lsp/test/Workspace.test.ts index e0ae8ee8..d9c8fccc 100644 --- a/packages/lsp/test/Workspace.test.ts +++ b/packages/lsp/test/Workspace.test.ts @@ -4,12 +4,12 @@ import { join } from 'node:path' import { pathToFileURL } from 'node:url' import { NodeServices } from '@effect/platform-node' import { assert, it } from '@effect/vitest' -import * as Analysis from '@silk-effect/compiler/Analysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceOrigin from '@silk-effect/compiler/SourceOrigin' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as Stdlib from '@silk-effect/compiler/Stdlib' -import * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' +import * as Analysis from '@silk-lang/compiler/Analysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceOrigin from '@silk-lang/compiler/SourceOrigin' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as Stdlib from '@silk-lang/compiler/Stdlib' +import * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' import * as Effect from 'effect/Effect' import * as Option from 'effect/Option' import * as Document from '../src/Document.js' diff --git a/packages/lsp/test/WorkspaceCatalog.test.ts b/packages/lsp/test/WorkspaceCatalog.test.ts index b837b090..0baaa8b8 100644 --- a/packages/lsp/test/WorkspaceCatalog.test.ts +++ b/packages/lsp/test/WorkspaceCatalog.test.ts @@ -4,7 +4,7 @@ import { join } from 'node:path' import { pathToFileURL } from 'node:url' import { NodeServices } from '@effect/platform-node' import { assert, it } from '@effect/vitest' -import * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' +import * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' import * as Effect from 'effect/Effect' import * as Document from '../src/Document.js' import * as WorkspaceCatalog from '../src/WorkspaceCatalog.js' diff --git a/packages/lsp/test/WorkspaceEngine.test.ts b/packages/lsp/test/WorkspaceEngine.test.ts index aa368e2e..934a490b 100644 --- a/packages/lsp/test/WorkspaceEngine.test.ts +++ b/packages/lsp/test/WorkspaceEngine.test.ts @@ -1,8 +1,8 @@ import { assert, it } from '@effect/vitest' -import * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' +import * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' import * as Deferred from 'effect/Deferred' import * as Effect from 'effect/Effect' import * as Fiber from 'effect/Fiber' diff --git a/packages/lsp/test/WorkspaceEnginePressure.bench.ts b/packages/lsp/test/WorkspaceEnginePressure.bench.ts index d1d70461..0c50a569 100644 --- a/packages/lsp/test/WorkspaceEnginePressure.bench.ts +++ b/packages/lsp/test/WorkspaceEnginePressure.bench.ts @@ -1,8 +1,8 @@ import { assert, it } from '@effect/vitest' -import * as ProjectAnalysis from '@silk-effect/compiler/ProjectAnalysis' -import * as SourceFile from '@silk-effect/compiler/SourceFile' -import * as SourceResolver from '@silk-effect/compiler/SourceResolver' -import * as WorkspaceInventory from '@silk-effect/compiler/WorkspaceInventory' +import * as ProjectAnalysis from '@silk-lang/compiler/ProjectAnalysis' +import * as SourceFile from '@silk-lang/compiler/SourceFile' +import * as SourceResolver from '@silk-lang/compiler/SourceResolver' +import * as WorkspaceInventory from '@silk-lang/compiler/WorkspaceInventory' import * as Deferred from 'effect/Deferred' import * as Effect from 'effect/Effect' import * as Fiber from 'effect/Fiber' diff --git a/packages/platform-webcontainer/README.md b/packages/platform-webcontainer/README.md index 7f24efc7..ce56e5ef 100644 --- a/packages/platform-webcontainer/README.md +++ b/packages/platform-webcontainer/README.md @@ -1,4 +1,4 @@ -# `@silk-effect/platform-webcontainer` +# `@silk-lang/platform-webcontainer` Effect-native access to the [WebContainer API](https://webcontainers.io/): one scoped browser runtime, the standard Effect `FileSystem` service, WebContainer-native processes, and typed event @@ -8,7 +8,7 @@ state. ## Install ```sh -pnpm add @silk-effect/platform-webcontainer effect +pnpm add @silk-lang/platform-webcontainer effect ``` The package can be imported during SSR because imports and layer construction do not touch browser @@ -23,8 +23,8 @@ throughout the graph: import * as Effect from 'effect/Effect' import * as FileSystem from 'effect/FileSystem' import * as Layer from 'effect/Layer' -import * as WebContainer from '@silk-effect/platform-webcontainer/WebContainer' -import * as WebContainerFileSystem from '@silk-effect/platform-webcontainer/WebContainerFileSystem' +import * as WebContainer from '@silk-lang/platform-webcontainer/WebContainer' +import * as WebContainerFileSystem from '@silk-lang/platform-webcontainer/WebContainerFileSystem' const runtimeLayer = WebContainer.layer({ workdirName: 'playground' }) const fileSystemLayer = WebContainerFileSystem.layer.pipe(Layer.provide(runtimeLayer)) @@ -53,8 +53,8 @@ kill, and resize. They intentionally do not invent PIDs, POSIX signals, or separ ```ts import * as Effect from 'effect/Effect' import * as Stream from 'effect/Stream' -import * as WebContainer from '@silk-effect/platform-webcontainer/WebContainer' -import * as WebContainerProcess from '@silk-effect/platform-webcontainer/WebContainerProcess' +import * as WebContainer from '@silk-lang/platform-webcontainer/WebContainer' +import * as WebContainerProcess from '@silk-lang/platform-webcontainer/WebContainerProcess' const run = Effect.gen(function* () { const process = yield* WebContainer.spawn('node', ['-e', 'console.log(42)']) diff --git a/packages/platform-webcontainer/package.json b/packages/platform-webcontainer/package.json index 2fa8272d..c16ffef5 100644 --- a/packages/platform-webcontainer/package.json +++ b/packages/platform-webcontainer/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/platform-webcontainer", + "name": "@silk-lang/platform-webcontainer", "version": "0.0.0", "description": "Effect-native WebContainer runtime, filesystem, process, and event services.", "license": "MIT", diff --git a/packages/platform-webcontainer/src/WebContainer.ts b/packages/platform-webcontainer/src/WebContainer.ts index 20af3f54..b1d192c1 100644 --- a/packages/platform-webcontainer/src/WebContainer.ts +++ b/packages/platform-webcontainer/src/WebContainer.ts @@ -169,7 +169,7 @@ export interface Service { * @since 0.0.0 */ export class WebContainer extends Context.Service()( - '@silk-effect/platform-webcontainer/WebContainer', + '@silk-lang/platform-webcontainer/WebContainer', ) {} /** @@ -566,8 +566,8 @@ export const layerWith = ( * * ```ts * import * as Layer from 'effect/Layer' - * import * as WebContainer from '@silk-effect/platform-webcontainer/WebContainer' - * import * as WebContainerFileSystem from '@silk-effect/platform-webcontainer/WebContainerFileSystem' + * import * as WebContainer from '@silk-lang/platform-webcontainer/WebContainer' + * import * as WebContainerFileSystem from '@silk-lang/platform-webcontainer/WebContainerFileSystem' * * const runtimeLayer = WebContainer.layer({ workdirName: 'playground' }) * const fileSystemLayer = WebContainerFileSystem.layer.pipe(Layer.provide(runtimeLayer)) diff --git a/packages/snippet/package.json b/packages/snippet/package.json index 235a58d4..865eb164 100644 --- a/packages/snippet/package.json +++ b/packages/snippet/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/snippet", + "name": "@silk-lang/snippet", "version": "0.0.0", "description": "Embeddable framework-free custom element: compiler-driven highlighting with opt-in diagnostics, hover, and inlay hints.", "license": "MIT", @@ -66,9 +66,9 @@ "@codemirror/state": "^6.7.1", "@codemirror/view": "^6.43.8", "@lezer/highlight": "^1.2.3", - "@silk-effect/compiler": "workspace:*", - "@silk-effect/language": "workspace:*", - "@silk-effect/lsp": "workspace:*", + "@silk-lang/compiler": "workspace:*", + "@silk-lang/language": "workspace:*", + "@silk-lang/lsp": "workspace:*", "effect": "catalog:", "mdast-util-from-markdown": "^2.0.3", "vscode-languageserver-types": "3.17.5" diff --git a/packages/snippet/src/Editor.ts b/packages/snippet/src/Editor.ts index 0d39a8f6..d71435d5 100644 --- a/packages/snippet/src/Editor.ts +++ b/packages/snippet/src/Editor.ts @@ -14,10 +14,10 @@ import type { Extension } from '@codemirror/state' import { Annotation, EditorState, StateEffect, StateField } from '@codemirror/state' import type { DecorationSet } from '@codemirror/view' import { Decoration, EditorView, hoverTooltip, keymap, WidgetType } from '@codemirror/view' -import type * as Analysis from '@silk-effect/compiler/Analysis' -import * as SilkCodeMirror from '@silk-effect/language/CodeMirror' -import * as LspDocument from '@silk-effect/lsp/Document' -import * as LineIndex from '@silk-effect/lsp/LineIndex' +import type * as Analysis from '@silk-lang/compiler/Analysis' +import * as SilkCodeMirror from '@silk-lang/language/CodeMirror' +import * as LspDocument from '@silk-lang/lsp/Document' +import * as LineIndex from '@silk-lang/lsp/LineIndex' import * as Effect from 'effect/Effect' import type { InlayHint } from 'vscode-languageserver-types' import * as HoverContent from './HoverContent.js' diff --git a/packages/snippet/src/Element.ts b/packages/snippet/src/Element.ts index 5c74d68a..ecb0ec0b 100644 --- a/packages/snippet/src/Element.ts +++ b/packages/snippet/src/Element.ts @@ -11,7 +11,7 @@ * what the reader sees is exactly what doctest verified. */ -import * as Analysis from '@silk-effect/compiler/Analysis' +import * as Analysis from '@silk-lang/compiler/Analysis' import * as Effect from 'effect/Effect' import * as Editor from './Editor.js' diff --git a/packages/snippet/src/HoverContent.ts b/packages/snippet/src/HoverContent.ts index 1ff3b409..a64ac45b 100644 --- a/packages/snippet/src/HoverContent.ts +++ b/packages/snippet/src/HoverContent.ts @@ -7,7 +7,7 @@ * code never disagree. */ -import * as SilkCodeMirror from '@silk-effect/language/CodeMirror' +import * as SilkCodeMirror from '@silk-lang/language/CodeMirror' import type { BlockContent, PhrasingContent, RootContent } from 'mdast' import { fromMarkdown } from 'mdast-util-from-markdown' diff --git a/packages/vscode/README.md b/packages/vscode/README.md index a39b2ec3..4303d707 100644 --- a/packages/vscode/README.md +++ b/packages/vscode/README.md @@ -5,10 +5,10 @@ runs straight from this repository. Two parts: -- **Grammar and language configuration** are generated from `@silk-effect/language` (the single - source of truth) by `pnpm --filter @silk-effect/language sync:vscode`; a test in that package +- **Grammar and language configuration** are generated from `@silk-lang/language` (the single + source of truth) by `pnpm --filter @silk-lang/language sync:vscode`; a test in that package fails when the generated files drift. -- **Language server**: `src/extension.ts` owns the `@silk-effect/lsp` child process and gives its +- **Language server**: `src/extension.ts` owns the `@silk-lang/lsp` child process and gives its detached stdio transport to `vscode-languageclient`. Diagnostics, hover types, go to definition, document symbols, formatting (including `editor.formatOnSave`), and dynamic project file watchers all come from the server. The stable editor session gates diagnostics by client generation and @@ -56,14 +56,14 @@ Then reload the editor (`Developer: Reload Window`) and open a `.silk` file. The `~/.cursor/extensions/silk-effect.silk-language-0.0.0` (or `~/.vscode/extensions/...`) and always points at the checkout where you ran the command — re-run it after switching git worktrees. -The extension resolves `@silk-effect/lsp` through the workspace `node_modules`, so the checkout +The extension resolves `@silk-lang/lsp` through the workspace `node_modules`, so the checkout must stay installed and built. ## Extension Development Host To iterate on the extension or LSP without touching the global extensions directory, launch **Silk: Extension Development Host** from the Run and Debug view (F5). That opens a guest window -with `--extensionDevelopmentPath` set to this package; a pre-launch task builds `@silk-effect/lsp` +with `--extensionDevelopmentPath` set to this package; a pre-launch task builds `@silk-lang/lsp` and `silk-language` first. Optional watch tasks (**Silk: Watch language server**, **Silk: Watch extension**) rebuild on save @@ -102,7 +102,7 @@ not hold. | Change | Action | | --- | --- | | Retargeted install, grammar (`sync:vscode`), or `extension.ts` / `package.json` contributions | **Developer: Reload Window** (main Cursor or the EDH guest) | -| Rebuilt `@silk-effect/lsp` only, same extension path | **Silk: Restart Language Server** — retires the current client and starts a fresh server from the new `dist` without a window reload | +| Rebuilt `@silk-lang/lsp` only, same extension path | **Silk: Restart Language Server** — retires the current client and starts a fresh server from the new `dist` without a window reload | **Silk: Restart Language Server** also recovers when the old server is unresponsive. The stable editor session gives protocol cleanup one bounded retirement window, forcibly terminates a process diff --git a/packages/vscode/package.json b/packages/vscode/package.json index 36a62327..15996880 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -57,7 +57,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json" }, "dependencies": { - "@silk-effect/lsp": "workspace:*", + "@silk-lang/lsp": "workspace:*", "effect": "catalog:", "vscode-languageclient": "^9.0.1" }, diff --git a/packages/vscode/scripts/install-local.mjs b/packages/vscode/scripts/install-local.mjs index 93b79569..1f620f58 100644 --- a/packages/vscode/scripts/install-local.mjs +++ b/packages/vscode/scripts/install-local.mjs @@ -45,8 +45,8 @@ const run = (command, commandArgs, cwd) => { } } -console.log('Building @silk-effect/lsp and silk-language…') -run('pnpm', ['--filter', '@silk-effect/lsp', '--filter', 'silk-language', 'run', 'build'], repoRoot) +console.log('Building @silk-lang/lsp and silk-language…') +run('pnpm', ['--filter', '@silk-lang/lsp', '--filter', 'silk-language', 'run', 'build'], repoRoot) const entrypoint = join(packageRoot, 'dist/extension.js') if (!existsSync(entrypoint)) { diff --git a/packages/vscode/src/EditorSession.mts b/packages/vscode/src/EditorSession.mts index 02e1f604..ce36be4f 100644 --- a/packages/vscode/src/EditorSession.mts +++ b/packages/vscode/src/EditorSession.mts @@ -84,7 +84,7 @@ interface State { readonly invalidationSubscribers: Set<() => void> } -const TypeId: unique symbol = Symbol.for('@silk-effect/vscode/EditorSession') +const TypeId: unique symbol = Symbol.for('@silk-lang/vscode/EditorSession') export interface EditorSession { readonly [TypeId]: State diff --git a/packages/vscode/src/extension.ts b/packages/vscode/src/extension.ts index 3c9a204f..13cd8aa7 100644 --- a/packages/vscode/src/extension.ts +++ b/packages/vscode/src/extension.ts @@ -1,5 +1,5 @@ /** - * The extension is a thin launcher: the editor session owns the `@silk-effect/lsp` process and + * The extension is a thin launcher: the editor session owns the `@silk-lang/lsp` process and * hands its detached stdio transport to `vscode-languageclient`. All language behavior lives in * the server, so this file should never grow feature logic. */ @@ -59,7 +59,7 @@ const reportLifecycleFailure = (operation: string, error: unknown): void => { } export function activate(context: vscode.ExtensionContext): void { - const serverModule = require.resolve('@silk-effect/lsp/bin') + const serverModule = require.resolve('@silk-lang/lsp/bin') session = createSession(serverModule) const owned = session context.subscriptions.push( diff --git a/packages/vscode/src/inspector.ts b/packages/vscode/src/inspector.ts index 336e3c73..6a3da6d7 100644 --- a/packages/vscode/src/inspector.ts +++ b/packages/vscode/src/inspector.ts @@ -5,7 +5,7 @@ * `silk/inspectorView` (the server already holds the committed analysis, and re-realizes a * single-root snapshot per document for backend views), and the view registry itself is fetched * over `silk/inspectorViews` — the extension host is CommonJS and cannot import the ESM - * `@silk-effect/inspector` package that defines it. + * `@silk-lang/inspector` package that defines it. */ import * as vscode from 'vscode' diff --git a/packages/wasm/README.md b/packages/wasm/README.md index d7df319c..aca9347d 100644 --- a/packages/wasm/README.md +++ b/packages/wasm/README.md @@ -1,4 +1,4 @@ -# `@silk-effect/wasm` +# `@silk-lang/wasm` Effect-native WebAssembly module construction with deterministic text and binary emission. @@ -9,14 +9,14 @@ produced. ```typescript import * as Effect from 'effect/Effect' -import * as Binary from '@silk-effect/wasm/Binary' -import * as Builder from '@silk-effect/wasm/Builder' -import * as Export from '@silk-effect/wasm/Export' -import * as Func from '@silk-effect/wasm/Func' -import * as Instr from '@silk-effect/wasm/Instr' -import * as Type from '@silk-effect/wasm/Type' -import * as ValType from '@silk-effect/wasm/ValType' -import * as WatText from '@silk-effect/wasm/WatText' +import * as Binary from '@silk-lang/wasm/Binary' +import * as Builder from '@silk-lang/wasm/Builder' +import * as Export from '@silk-lang/wasm/Export' +import * as Func from '@silk-lang/wasm/Func' +import * as Instr from '@silk-lang/wasm/Instr' +import * as Type from '@silk-lang/wasm/Type' +import * as ValType from '@silk-lang/wasm/ValType' +import * as WatText from '@silk-lang/wasm/WatText' const program = Effect.gen(function* () { const builder = yield* Builder.make({ moduleName: 'demo' }) @@ -54,8 +54,8 @@ An `Instr` is a frozen plain value built without the builder. Bodies compose wit logic, structured control flow nests as data, and entity references are opaque handles: ```typescript -import * as Instr from '@silk-effect/wasm/Instr' -import * as ValType from '@silk-effect/wasm/ValType' +import * as Instr from '@silk-lang/wasm/Instr' +import * as ValType from '@silk-lang/wasm/ValType' const clamp = [ Instr.localGet(0), @@ -104,8 +104,8 @@ layers. ## Development verification ```sh -pnpm --filter @silk-effect/wasm test -pnpm --filter @silk-effect/wasm parity:oracle +pnpm --filter @silk-lang/wasm test +pnpm --filter @silk-lang/wasm parity:oracle ``` Fixture generation and oracle checks use the pinned `wasm-tools`, but runtime APIs never invoke diff --git a/packages/wasm/UPSTREAM.md b/packages/wasm/UPSTREAM.md index cd8dc40c..d7e0423d 100644 --- a/packages/wasm/UPSTREAM.md +++ b/packages/wasm/UPSTREAM.md @@ -1,6 +1,6 @@ # Upstream provenance -`@silk-effect/wasm` implements the WebAssembly specification directly; it ports no upstream +`@silk-lang/wasm` implements the WebAssembly specification directly; it ports no upstream implementation. Its correctness is anchored to one pinned oracle release used by development-time verification only — the published runtime never invokes it. @@ -29,12 +29,12 @@ validated through text round-trips rather than a feature flag. ## Verification layers -1. `pnpm --filter @silk-effect/wasm test` — unit tests plus committed-fixture comparison +1. `pnpm --filter @silk-lang/wasm test` — unit tests plus committed-fixture comparison (byte-identical binary, character-identical text). No external tools; runs in CI. -2. `pnpm --filter @silk-effect/wasm parity:oracle` — oracle validation of every fixture binary, +2. `pnpm --filter @silk-lang/wasm parity:oracle` — oracle validation of every fixture binary, text→binary round-trip equality, and negative-corpus agreement (constructs the builder rejects must be rejected by the oracle). Requires the pinned `wasm-tools`. -3. `pnpm --filter @silk-effect/wasm fixtures:regenerate` — rebuilds committed fixtures after an +3. `pnpm --filter @silk-lang/wasm fixtures:regenerate` — rebuilds committed fixtures after an intentional output change; rerun the oracle afterwards. ## Name section note diff --git a/packages/wasm/package.json b/packages/wasm/package.json index b6e74654..964abc1a 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,5 +1,5 @@ { - "name": "@silk-effect/wasm", + "name": "@silk-lang/wasm", "version": "0.0.0", "description": "Effect-native WebAssembly module construction with deterministic text and binary emission.", "license": "MIT", diff --git a/packages/wasm/src/Binary.ts b/packages/wasm/src/Binary.ts index 14cfb115..3a10e7da 100644 --- a/packages/wasm/src/Binary.ts +++ b/packages/wasm/src/Binary.ts @@ -35,8 +35,8 @@ import type { WasmError } from './WasmError.js' * * ```ts * import * as Effect from 'effect/Effect' - * import * as Binary from '@silk-effect/wasm/Binary' - * import * as Builder from '@silk-effect/wasm/Builder' + * import * as Binary from '@silk-lang/wasm/Binary' + * import * as Builder from '@silk-lang/wasm/Builder' * * const bytes = Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/wasm/src/Builder.ts b/packages/wasm/src/Builder.ts index 88cd52ae..c2a4be30 100644 --- a/packages/wasm/src/Builder.ts +++ b/packages/wasm/src/Builder.ts @@ -58,8 +58,8 @@ export interface Options { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as WatText from '@silk-effect/wasm/WatText' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as WatText from '@silk-lang/wasm/WatText' * * const text = Effect.gen(function* () { * const builder = yield* Builder.make({ moduleName: 'demo' }) diff --git a/packages/wasm/src/Export.ts b/packages/wasm/src/Export.ts index 10e4c7b3..7e15a064 100644 --- a/packages/wasm/src/Export.ts +++ b/packages/wasm/src/Export.ts @@ -65,12 +65,12 @@ const declare = ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as Export from '@silk-effect/wasm/Export' - * import * as Func from '@silk-effect/wasm/Func' - * import * as Instr from '@silk-effect/wasm/Instr' - * import * as Type from '@silk-effect/wasm/Type' - * import * as ValType from '@silk-effect/wasm/ValType' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as Export from '@silk-lang/wasm/Export' + * import * as Func from '@silk-lang/wasm/Func' + * import * as Instr from '@silk-lang/wasm/Instr' + * import * as Type from '@silk-lang/wasm/Type' + * import * as ValType from '@silk-lang/wasm/ValType' * * const program = Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/wasm/src/Func.ts b/packages/wasm/src/Func.ts index 004db742..9a048373 100644 --- a/packages/wasm/src/Func.ts +++ b/packages/wasm/src/Func.ts @@ -136,11 +136,11 @@ export interface Definition { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as Func from '@silk-effect/wasm/Func' - * import * as Instr from '@silk-effect/wasm/Instr' - * import * as Type from '@silk-effect/wasm/Type' - * import * as ValType from '@silk-effect/wasm/ValType' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as Func from '@silk-lang/wasm/Func' + * import * as Instr from '@silk-lang/wasm/Instr' + * import * as Type from '@silk-lang/wasm/Type' + * import * as ValType from '@silk-lang/wasm/ValType' * * const program = Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/wasm/src/Global.ts b/packages/wasm/src/Global.ts index 42a59e74..5cd867dd 100644 --- a/packages/wasm/src/Global.ts +++ b/packages/wasm/src/Global.ts @@ -47,10 +47,10 @@ export interface Options { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as Global from '@silk-effect/wasm/Global' - * import * as Instr from '@silk-effect/wasm/Instr' - * import * as ValType from '@silk-effect/wasm/ValType' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as Global from '@silk-lang/wasm/Global' + * import * as Instr from '@silk-lang/wasm/Instr' + * import * as ValType from '@silk-lang/wasm/ValType' * * const program = Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/wasm/src/Import.ts b/packages/wasm/src/Import.ts index 5842e872..2b958443 100644 --- a/packages/wasm/src/Import.ts +++ b/packages/wasm/src/Import.ts @@ -78,10 +78,10 @@ export interface MemoryOptions extends Options { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as Import from '@silk-effect/wasm/Import' - * import * as Type from '@silk-effect/wasm/Type' - * import * as ValType from '@silk-effect/wasm/ValType' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as Import from '@silk-lang/wasm/Import' + * import * as Type from '@silk-lang/wasm/Type' + * import * as ValType from '@silk-lang/wasm/ValType' * * const program = Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/wasm/src/Instr.ts b/packages/wasm/src/Instr.ts index 13cb9749..bcb2679f 100644 --- a/packages/wasm/src/Instr.ts +++ b/packages/wasm/src/Instr.ts @@ -767,7 +767,7 @@ const freeze = (value: A): A => Object.freeze(value) * **Example** (Adding two stack values) * * ```ts - * import * as Instr from '@silk-effect/wasm/Instr' + * import * as Instr from '@silk-lang/wasm/Instr' * * const body = [Instr.localGet(0), Instr.localGet(1), Instr.op('i32.add')] * ``` @@ -1033,8 +1033,8 @@ export interface MemoryAccessOptions { * **Example** (Loading from the second memory) * * ```ts - * import * as Instr from '@silk-effect/wasm/Instr' - * import type * as Memory from '@silk-effect/wasm/Memory' + * import * as Instr from '@silk-lang/wasm/Instr' + * import type * as Memory from '@silk-lang/wasm/Memory' * * declare const scratch: Memory.Memory * @@ -1309,8 +1309,8 @@ export const catchAllRef = (depth: number): Catch => freeze({ _tag: 'CatchAllRef * **Example** (Catching an error tag into an enclosing block) * * ```ts - * import * as Instr from '@silk-effect/wasm/Instr' - * import type * as Tag from '@silk-effect/wasm/Tag' + * import * as Instr from '@silk-lang/wasm/Instr' + * import type * as Tag from '@silk-lang/wasm/Tag' * * declare const error: Tag.Tag * diff --git a/packages/wasm/src/Table.ts b/packages/wasm/src/Table.ts index c37505a2..c7e0705b 100644 --- a/packages/wasm/src/Table.ts +++ b/packages/wasm/src/Table.ts @@ -49,9 +49,9 @@ export interface Options { * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as Table from '@silk-effect/wasm/Table' - * import * as ValType from '@silk-effect/wasm/ValType' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as Table from '@silk-lang/wasm/Table' + * import * as ValType from '@silk-lang/wasm/ValType' * * const program = Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/wasm/src/Tag.ts b/packages/wasm/src/Tag.ts index ddb0859b..4a7f548d 100644 --- a/packages/wasm/src/Tag.ts +++ b/packages/wasm/src/Tag.ts @@ -63,10 +63,10 @@ export const checkTagType = ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as Tag from '@silk-effect/wasm/Tag' - * import * as Type from '@silk-effect/wasm/Type' - * import * as ValType from '@silk-effect/wasm/ValType' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as Tag from '@silk-lang/wasm/Tag' + * import * as Type from '@silk-lang/wasm/Type' + * import * as ValType from '@silk-lang/wasm/ValType' * * const program = Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/wasm/src/Type.ts b/packages/wasm/src/Type.ts index 19162f98..3620bcde 100644 --- a/packages/wasm/src/Type.ts +++ b/packages/wasm/src/Type.ts @@ -338,9 +338,9 @@ const single = ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as Type from '@silk-effect/wasm/Type' - * import * as ValType from '@silk-effect/wasm/ValType' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as Type from '@silk-lang/wasm/Type' + * import * as ValType from '@silk-lang/wasm/ValType' * * const program = Effect.gen(function* () { * const builder = yield* Builder.make() @@ -379,9 +379,9 @@ export const func = Effect.fn('Type.func')(function* ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as Type from '@silk-effect/wasm/Type' - * import * as ValType from '@silk-effect/wasm/ValType' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as Type from '@silk-lang/wasm/Type' + * import * as ValType from '@silk-lang/wasm/ValType' * * const program = Effect.gen(function* () { * const builder = yield* Builder.make() @@ -456,9 +456,9 @@ export const array = Effect.fn('Type.array')(function* ( * * ```ts * import * as Effect from 'effect/Effect' - * import * as Builder from '@silk-effect/wasm/Builder' - * import * as Type from '@silk-effect/wasm/Type' - * import * as ValType from '@silk-effect/wasm/ValType' + * import * as Builder from '@silk-lang/wasm/Builder' + * import * as Type from '@silk-lang/wasm/Type' + * import * as ValType from '@silk-lang/wasm/ValType' * * const program = Effect.gen(function* () { * const builder = yield* Builder.make() diff --git a/packages/wasm/src/Validate.ts b/packages/wasm/src/Validate.ts index 429c5be0..c7a3c2fc 100644 --- a/packages/wasm/src/Validate.ts +++ b/packages/wasm/src/Validate.ts @@ -105,8 +105,8 @@ const compile = (implementation: Host, bytes: Uint8Array): ReadonlyArray { readonly _tag: Tag diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ef7c285f..019bf518 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,22 +56,22 @@ importers: '@lezer/highlight': specifier: ^1.2.3 version: 1.2.3 - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../../packages/compiler - '@silk-effect/inspector': + '@silk-lang/inspector': specifier: workspace:* version: link:../../packages/inspector - '@silk-effect/language': + '@silk-lang/language': specifier: workspace:* version: link:../../packages/language - '@silk-effect/lsp': + '@silk-lang/lsp': specifier: workspace:* version: link:../../packages/lsp - '@silk-effect/platform-webcontainer': + '@silk-lang/platform-webcontainer': specifier: workspace:* version: link:../../packages/platform-webcontainer - '@silk-effect/snippet': + '@silk-lang/snippet': specifier: workspace:* version: link:../../packages/snippet '@xterm/addon-fit': @@ -114,13 +114,13 @@ importers: '@effect/vitest': specifier: 'catalog:' version: 4.0.0-beta.102(effect@4.0.0-beta.102)(vitest@4.1.10) - '@silk-effect/formatter': + '@silk-lang/formatter': specifier: workspace:* version: link:../../packages/formatter - '@silk-effect/llvm': + '@silk-lang/llvm': specifier: workspace:* version: link:../../packages/llvm - '@silk-effect/wasm': + '@silk-lang/wasm': specifier: workspace:* version: link:../../packages/wasm '@tailwindcss/postcss': @@ -159,10 +159,10 @@ importers: packages/compiler: dependencies: - '@silk-effect/llvm': + '@silk-lang/llvm': specifier: workspace:* version: link:../llvm - '@silk-effect/wasm': + '@silk-lang/wasm': specifier: workspace:* version: link:../wasm effect: @@ -184,13 +184,13 @@ importers: '@effect/platform-node': specifier: 4.0.0-beta.103 version: 4.0.0-beta.103(effect@4.0.0-beta.102)(ioredis@5.11.1) - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../compiler - '@silk-effect/documentation': + '@silk-lang/documentation': specifier: workspace:* version: link:../documentation - '@silk-effect/formatter': + '@silk-lang/formatter': specifier: workspace:* version: link:../formatter effect: @@ -212,10 +212,10 @@ importers: '@effect/platform-node': specifier: 4.0.0-beta.103 version: 4.0.0-beta.103(effect@4.0.0-beta.102)(ioredis@5.11.1) - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../compiler - '@silk-effect/documentation': + '@silk-lang/documentation': specifier: workspace:* version: link:../documentation effect: @@ -231,7 +231,7 @@ importers: packages/documentation: dependencies: - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../compiler effect: @@ -256,7 +256,7 @@ importers: '@effect/platform-node': specifier: 4.0.0-beta.103 version: 4.0.0-beta.103(effect@4.0.0-beta.102)(ioredis@5.11.1) - '@silk-effect/snippet': + '@silk-lang/snippet': specifier: workspace:* version: link:../snippet effect: @@ -266,10 +266,10 @@ importers: '@effect/vitest': specifier: 'catalog:' version: 4.0.0-beta.102(effect@4.0.0-beta.102)(vitest@4.1.10) - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../compiler - '@silk-effect/documentation': + '@silk-lang/documentation': specifier: workspace:* version: link:../documentation '@types/node': @@ -278,10 +278,10 @@ importers: packages/formatter: dependencies: - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../compiler - '@silk-effect/documentation': + '@silk-lang/documentation': specifier: workspace:* version: link:../documentation effect: @@ -300,7 +300,7 @@ importers: packages/inspector: dependencies: - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../compiler effect: @@ -313,10 +313,10 @@ importers: packages/language: dependencies: - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../compiler - '@silk-effect/documentation': + '@silk-lang/documentation': specifier: workspace:* version: link:../documentation devDependencies: @@ -357,19 +357,19 @@ importers: '@effect/platform-node': specifier: 4.0.0-beta.103 version: 4.0.0-beta.103(effect@4.0.0-beta.102)(ioredis@5.11.1) - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../compiler - '@silk-effect/compiler-cli': + '@silk-lang/compiler-cli': specifier: workspace:* version: link:../compiler-cli - '@silk-effect/documentation': + '@silk-lang/documentation': specifier: workspace:* version: link:../documentation - '@silk-effect/formatter': + '@silk-lang/formatter': specifier: workspace:* version: link:../formatter - '@silk-effect/inspector': + '@silk-lang/inspector': specifier: workspace:* version: link:../inspector effect: @@ -388,7 +388,7 @@ importers: '@effect/vitest': specifier: 'catalog:' version: 4.0.0-beta.102(effect@4.0.0-beta.102)(vitest@4.1.10) - '@silk-effect/language': + '@silk-lang/language': specifier: workspace:* version: link:../language '@types/node': @@ -437,13 +437,13 @@ importers: '@lezer/highlight': specifier: ^1.2.3 version: 1.2.3 - '@silk-effect/compiler': + '@silk-lang/compiler': specifier: workspace:* version: link:../compiler - '@silk-effect/language': + '@silk-lang/language': specifier: workspace:* version: link:../language - '@silk-effect/lsp': + '@silk-lang/lsp': specifier: workspace:* version: link:../lsp effect: @@ -471,7 +471,7 @@ importers: packages/vscode: dependencies: - '@silk-effect/lsp': + '@silk-lang/lsp': specifier: workspace:* version: link:../lsp effect: diff --git a/release-candidate/validate.test.ts b/release-candidate/validate.test.ts index e14fcd8f..29ae50ff 100644 --- a/release-candidate/validate.test.ts +++ b/release-candidate/validate.test.ts @@ -76,7 +76,7 @@ const installConsumer = (cwd: string): void => { } test('the llvm release candidate is a self-contained ESM package', () => { - const temporary = mkdtempSync(resolve(tmpdir(), 'silk-effect-release-candidate-')) + const temporary = mkdtempSync(resolve(tmpdir(), 'silk-lang-release-candidate-')) try { const archiveRoot = resolve(temporary, 'archives') @@ -95,7 +95,7 @@ test('the llvm release candidate is a self-contained ESM package', () => { const packedRoot = resolve(unpackRoot, 'package') const manifest = JSON.parse(readFileSync(resolve(packedRoot, 'package.json'), 'utf8')) - expect(manifest.name).toBe('@silk-effect/llvm') + expect(manifest.name).toBe('@silk-lang/llvm') expect(manifest.private).not.toBe(true) expect(existsSync(resolve(packedRoot, 'dist/index.js'))).toBe(true) expect(existsSync(resolve(packedRoot, 'dist/index.d.ts'))).toBe(true) @@ -164,7 +164,7 @@ test('the llvm release candidate is a self-contained ESM package', () => { JSON.stringify({ private: true, type: 'module', - dependencies: { '@silk-effect/llvm': `file:${resolve(archiveRoot, archive ?? '')}` }, + dependencies: { '@silk-lang/llvm': `file:${resolve(archiveRoot, archive ?? '')}` }, }), ) writeFileSync(resolve(consumerRoot, 'pnpm-workspace.yaml'), consumerWorkspace()) @@ -179,7 +179,7 @@ test('the llvm release candidate is a self-contained ESM package', () => { [ '--input-type=module', '--eval', - `import * as api from '@silk-effect/llvm'; const paths = ${JSON.stringify(deepPaths)}; const modules = await Promise.all(paths.map((path) => import(\`@silk-effect/llvm/\${path.slice(2)}\`))); console.log(JSON.stringify({ root: Object.keys(api).sort(), rootNamespaces: Object.fromEntries(paths.filter((path) => path !== './LlvmError').map((path) => [path, Object.keys(api[path.slice(2)]).sort()])), deep: Object.fromEntries(paths.map((path, index) => [path, Object.keys(modules[index]).sort()])) }))`, + `import * as api from '@silk-lang/llvm'; const paths = ${JSON.stringify(deepPaths)}; const modules = await Promise.all(paths.map((path) => import(\`@silk-lang/llvm/\${path.slice(2)}\`))); console.log(JSON.stringify({ root: Object.keys(api).sort(), rootNamespaces: Object.fromEntries(paths.filter((path) => path !== './LlvmError').map((path) => [path, Object.keys(api[path.slice(2)]).sort()])), deep: Object.fromEntries(paths.map((path, index) => [path, Object.keys(modules[index]).sort()])) }))`, ], { cwd: consumerRoot, @@ -243,7 +243,7 @@ test('the llvm release candidate is a self-contained ESM package', () => { }) test('the compiler release candidate exposes only its bootstrap ESM actors', () => { - const temporary = mkdtempSync(resolve(tmpdir(), 'silk-effect-compiler-release-candidate-')) + const temporary = mkdtempSync(resolve(tmpdir(), 'silk-lang-compiler-release-candidate-')) try { const archiveRoot = resolve(temporary, 'archives') @@ -265,13 +265,13 @@ test('the compiler release candidate exposes only its bootstrap ESM actors', () }) const archive = readdirSync(archiveRoot).find( - (file) => file.startsWith('silk-effect-compiler-') && file.endsWith('.tgz'), + (file) => file.startsWith('silk-lang-compiler-') && file.endsWith('.tgz'), ) const llvmArchive = readdirSync(archiveRoot).find( - (file) => file.startsWith('silk-effect-llvm-') && file.endsWith('.tgz'), + (file) => file.startsWith('silk-lang-llvm-') && file.endsWith('.tgz'), ) const wasmArchive = readdirSync(archiveRoot).find( - (file) => file.startsWith('silk-effect-wasm-') && file.endsWith('.tgz'), + (file) => file.startsWith('silk-lang-wasm-') && file.endsWith('.tgz'), ) expect(archive).toBeDefined() expect(llvmArchive).toBeDefined() @@ -281,11 +281,11 @@ test('the compiler release candidate exposes only its bootstrap ESM actors', () const packedRoot = resolve(unpackRoot, 'package') const manifest = JSON.parse(readFileSync(resolve(packedRoot, 'package.json'), 'utf8')) - expect(manifest.name).toBe('@silk-effect/compiler') + expect(manifest.name).toBe('@silk-lang/compiler') expect(manifest.private).not.toBe(true) expect(Object.keys(manifest.dependencies ?? {}).sort()).toEqual([ - '@silk-effect/llvm', - '@silk-effect/wasm', + '@silk-lang/llvm', + '@silk-lang/wasm', 'effect', ]) expect(Object.keys(manifest.exports).sort()).toEqual([ @@ -454,7 +454,7 @@ test('the compiler release candidate exposes only its bootstrap ESM actors', () private: true, type: 'module', dependencies: { - '@silk-effect/compiler': `file:${resolve(archiveRoot, archive ?? '')}`, + '@silk-lang/compiler': `file:${resolve(archiveRoot, archive ?? '')}`, effect: manifest.dependencies.effect, }, }), @@ -462,7 +462,7 @@ test('the compiler release candidate exposes only its bootstrap ESM actors', () writeFileSync( resolve(consumerRoot, 'pnpm-workspace.yaml'), consumerWorkspace( - ` '@silk-effect/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-effect/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n`, + ` '@silk-lang/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-lang/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n`, ), ) installConsumer(consumerRoot) @@ -476,15 +476,15 @@ test('the compiler release candidate exposes only its bootstrap ESM actors', () [ '--input-type=module', '--eval', - `import * as api from '@silk-effect/compiler'; + `import * as api from '@silk-lang/compiler'; import * as Effect from 'effect/Effect'; -import * as evaluationModule from '@silk-effect/compiler/BootstrapEvaluation'; -import * as parserModule from '@silk-effect/compiler/Parser'; -import * as semanticModule from '@silk-effect/compiler/Elaboration'; -import * as syntaxTreeModule from '@silk-effect/compiler/SyntaxTree'; +import * as evaluationModule from '@silk-lang/compiler/BootstrapEvaluation'; +import * as parserModule from '@silk-lang/compiler/Parser'; +import * as semanticModule from '@silk-lang/compiler/Elaboration'; +import * as syntaxTreeModule from '@silk-lang/compiler/SyntaxTree'; const paths = ${JSON.stringify(deepPaths)}; const modules = await Promise.all( - paths.map((path) => import(\`@silk-effect/compiler/\${path.slice(2)}\`)), + paths.map((path) => import(\`@silk-lang/compiler/\${path.slice(2)}\`)), ); const source = api.SourceFile.make( 'memory/packed', @@ -1010,7 +1010,7 @@ console.log( }, 15_000) test('the documentation release candidate exposes its formatter-neutral actors', () => { - const temporary = mkdtempSync(resolve(tmpdir(), 'silk-effect-documentation-release-candidate-')) + const temporary = mkdtempSync(resolve(tmpdir(), 'silk-lang-documentation-release-candidate-')) try { const archiveRoot = resolve(temporary, 'archives') @@ -1029,20 +1029,20 @@ test('the documentation release candidate exposes its formatter-neutral actors', }) const archives = readdirSync(archiveRoot) - const archive = archives.find((file) => file.startsWith('silk-effect-documentation-')) + const archive = archives.find((file) => file.startsWith('silk-lang-documentation-')) const compilerArchive = archives.find( - (file) => file.startsWith('silk-effect-compiler-') && !file.includes('-cli-'), + (file) => file.startsWith('silk-lang-compiler-') && !file.includes('-cli-'), ) - const llvmArchive = archives.find((file) => file.startsWith('silk-effect-llvm-')) - const wasmArchive = archives.find((file) => file.startsWith('silk-effect-wasm-')) + const llvmArchive = archives.find((file) => file.startsWith('silk-lang-llvm-')) + const wasmArchive = archives.find((file) => file.startsWith('silk-lang-wasm-')) expect(archive).toBeDefined() execFileSync('tar', ['-xzf', resolve(archiveRoot, archive ?? ''), '-C', unpackRoot]) const packedRoot = resolve(unpackRoot, 'package') const manifest = JSON.parse(readFileSync(resolve(packedRoot, 'package.json'), 'utf8')) - expect(manifest.name).toBe('@silk-effect/documentation') + expect(manifest.name).toBe('@silk-lang/documentation') expect(Object.keys(manifest.dependencies ?? {}).sort()).toEqual([ - '@silk-effect/compiler', + '@silk-lang/compiler', 'effect', 'mdast-util-from-markdown', ]) @@ -1069,14 +1069,14 @@ test('the documentation release candidate exposes its formatter-neutral actors', private: true, type: 'module', dependencies: { - '@silk-effect/documentation': `file:${resolve(archiveRoot, archive ?? '')}`, + '@silk-lang/documentation': `file:${resolve(archiveRoot, archive ?? '')}`, }, }), ) writeFileSync( resolve(consumerRoot, 'pnpm-workspace.yaml'), consumerWorkspace( - ` '@silk-effect/compiler': file:${resolve(archiveRoot, compilerArchive ?? '')}\n '@silk-effect/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-effect/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n`, + ` '@silk-lang/compiler': file:${resolve(archiveRoot, compilerArchive ?? '')}\n '@silk-lang/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-lang/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n`, ), ) installConsumer(consumerRoot) @@ -1086,7 +1086,7 @@ test('the documentation release candidate exposes its formatter-neutral actors', [ '--input-type=module', '--eval', - `import * as api from '@silk-effect/documentation'; console.log(JSON.stringify(Object.keys(api).sort()))`, + `import * as api from '@silk-lang/documentation'; console.log(JSON.stringify(Object.keys(api).sort()))`, ], { cwd: consumerRoot, encoding: 'utf8' }, ), @@ -1098,7 +1098,7 @@ test('the documentation release candidate exposes its formatter-neutral actors', }, 30_000) test('the formatter release candidate installs offline with root and deep API parity', () => { - const temporary = mkdtempSync(resolve(tmpdir(), 'silk-effect-formatter-release-candidate-')) + const temporary = mkdtempSync(resolve(tmpdir(), 'silk-lang-formatter-release-candidate-')) try { const archiveRoot = resolve(temporary, 'archives') @@ -1118,25 +1118,25 @@ test('the formatter release candidate installs offline with root and deep API pa }) const archives = readdirSync(archiveRoot) - const archive = archives.find((file) => file.startsWith('silk-effect-formatter-')) + const archive = archives.find((file) => file.startsWith('silk-lang-formatter-')) const documentationArchive = archives.find((file) => - file.startsWith('silk-effect-documentation-'), + file.startsWith('silk-lang-documentation-'), ) const compilerArchive = archives.find( - (file) => file.startsWith('silk-effect-compiler-') && !file.includes('-cli-'), + (file) => file.startsWith('silk-lang-compiler-') && !file.includes('-cli-'), ) - const llvmArchive = archives.find((file) => file.startsWith('silk-effect-llvm-')) - const wasmArchive = archives.find((file) => file.startsWith('silk-effect-wasm-')) + const llvmArchive = archives.find((file) => file.startsWith('silk-lang-llvm-')) + const wasmArchive = archives.find((file) => file.startsWith('silk-lang-wasm-')) expect(archive).toBeDefined() execFileSync('tar', ['-xzf', resolve(archiveRoot, archive ?? ''), '-C', unpackRoot]) const packedRoot = resolve(unpackRoot, 'package') const manifest = JSON.parse(readFileSync(resolve(packedRoot, 'package.json'), 'utf8')) - expect(manifest.name).toBe('@silk-effect/formatter') + expect(manifest.name).toBe('@silk-lang/formatter') expect(manifest.private).not.toBe(true) expect(Object.keys(manifest.dependencies ?? {}).sort()).toEqual([ - '@silk-effect/compiler', - '@silk-effect/documentation', + '@silk-lang/compiler', + '@silk-lang/documentation', 'effect', ]) expect(Object.keys(manifest.exports).sort()).toEqual(['.', './Formatter', './FormatterError']) @@ -1155,14 +1155,14 @@ test('the formatter release candidate installs offline with root and deep API pa private: true, type: 'module', dependencies: { - '@silk-effect/formatter': `file:${resolve(archiveRoot, archive ?? '')}`, + '@silk-lang/formatter': `file:${resolve(archiveRoot, archive ?? '')}`, }, }), ) writeFileSync( resolve(consumerRoot, 'pnpm-workspace.yaml'), consumerWorkspace( - ` '@silk-effect/compiler': file:${resolve(archiveRoot, compilerArchive ?? '')}\n '@silk-effect/documentation': file:${resolve(archiveRoot, documentationArchive ?? '')}\n '@silk-effect/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-effect/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n`, + ` '@silk-lang/compiler': file:${resolve(archiveRoot, compilerArchive ?? '')}\n '@silk-lang/documentation': file:${resolve(archiveRoot, documentationArchive ?? '')}\n '@silk-lang/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-lang/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n`, ), ) installConsumer(consumerRoot) @@ -1173,9 +1173,9 @@ test('the formatter release candidate installs offline with root and deep API pa [ '--input-type=module', '--eval', - `import * as api from '@silk-effect/formatter'; -import * as Formatter from '@silk-effect/formatter/Formatter'; -import * as FormatterError from '@silk-effect/formatter/FormatterError'; + `import * as api from '@silk-lang/formatter'; +import * as Formatter from '@silk-lang/formatter/Formatter'; +import * as FormatterError from '@silk-lang/formatter/FormatterError'; console.log(JSON.stringify({ root: Object.keys(api).sort(), formatterRoot: Object.keys(api.Formatter).sort(), @@ -1198,7 +1198,7 @@ console.log(JSON.stringify({ }, 30_000) test('the compiler CLI release candidate installs with its project-first command surface', () => { - const temporary = mkdtempSync(resolve(tmpdir(), 'silk-effect-compiler-cli-release-candidate-')) + const temporary = mkdtempSync(resolve(tmpdir(), 'silk-lang-compiler-cli-release-candidate-')) try { const archiveRoot = resolve(temporary, 'archives') @@ -1222,17 +1222,17 @@ test('the compiler CLI release candidate installs with its project-first command const archives = readdirSync(archiveRoot) const archive = archives.find( - (file) => file.startsWith('silk-effect-compiler-cli-') && file.endsWith('.tgz'), + (file) => file.startsWith('silk-lang-compiler-cli-') && file.endsWith('.tgz'), ) const compilerArchive = archives.find( - (file) => file.startsWith('silk-effect-compiler-') && !file.includes('-cli-'), + (file) => file.startsWith('silk-lang-compiler-') && !file.includes('-cli-'), ) - const llvmArchive = archives.find((file) => file.startsWith('silk-effect-llvm-')) - const wasmArchive = archives.find((file) => file.startsWith('silk-effect-wasm-')) + const llvmArchive = archives.find((file) => file.startsWith('silk-lang-llvm-')) + const wasmArchive = archives.find((file) => file.startsWith('silk-lang-wasm-')) const documentationArchive = archives.find((file) => - file.startsWith('silk-effect-documentation-'), + file.startsWith('silk-lang-documentation-'), ) - const formatterArchive = archives.find((file) => file.startsWith('silk-effect-formatter-')) + const formatterArchive = archives.find((file) => file.startsWith('silk-lang-formatter-')) expect(archive).toBeDefined() expect(compilerArchive).toBeDefined() expect(llvmArchive).toBeDefined() @@ -1243,13 +1243,13 @@ test('the compiler CLI release candidate installs with its project-first command const packedRoot = resolve(unpackRoot, 'package') const manifest = JSON.parse(readFileSync(resolve(packedRoot, 'package.json'), 'utf8')) - expect(manifest.name).toBe('@silk-effect/compiler-cli') + expect(manifest.name).toBe('@silk-lang/compiler-cli') expect(manifest.private).not.toBe(true) expect(Object.keys(manifest.dependencies ?? {}).sort()).toEqual([ '@effect/platform-node', - '@silk-effect/compiler', - '@silk-effect/documentation', - '@silk-effect/formatter', + '@silk-lang/compiler', + '@silk-lang/documentation', + '@silk-lang/formatter', 'effect', 'smol-toml', ]) @@ -1294,14 +1294,14 @@ test('the compiler CLI release candidate installs with its project-first command private: true, type: 'module', dependencies: { - '@silk-effect/compiler-cli': `file:${resolve(archiveRoot, archive ?? '')}`, + '@silk-lang/compiler-cli': `file:${resolve(archiveRoot, archive ?? '')}`, }, }), ) writeFileSync( resolve(consumerRoot, 'pnpm-workspace.yaml'), consumerWorkspace( - ` '@effect/platform-node-shared': 4.0.0-beta.103\n '@silk-effect/compiler': file:${resolve(archiveRoot, compilerArchive ?? '')}\n '@silk-effect/documentation': file:${resolve(archiveRoot, documentationArchive ?? '')}\n '@silk-effect/formatter': file:${resolve(archiveRoot, formatterArchive ?? '')}\n '@silk-effect/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-effect/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n '@types/node': ${installedVersion('@types/node')}\n smol-toml: ${installedVersion('smol-toml')}\n ws: 8.21.2\nallowBuilds:\n msgpackr-extract: false\n sharp: false\n`, + ` '@effect/platform-node-shared': 4.0.0-beta.103\n '@silk-lang/compiler': file:${resolve(archiveRoot, compilerArchive ?? '')}\n '@silk-lang/documentation': file:${resolve(archiveRoot, documentationArchive ?? '')}\n '@silk-lang/formatter': file:${resolve(archiveRoot, formatterArchive ?? '')}\n '@silk-lang/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-lang/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n '@types/node': ${installedVersion('@types/node')}\n smol-toml: ${installedVersion('smol-toml')}\n ws: 8.21.2\nallowBuilds:\n msgpackr-extract: false\n sharp: false\n`, ), ) installConsumer(consumerRoot) @@ -1339,7 +1339,7 @@ test('the compiler CLI release candidate installs with its project-first command [ '--input-type=module', '--eval', - `import * as api from '@silk-effect/compiler-cli'; console.log(JSON.stringify(Object.keys(api).sort()))`, + `import * as api from '@silk-lang/compiler-cli'; console.log(JSON.stringify(Object.keys(api).sort()))`, ], { cwd: consumerRoot, encoding: 'utf8' }, ), @@ -1373,7 +1373,7 @@ test('the compiler CLI release candidate installs with its project-first command }, 30_000) test('the wasm release candidate is a self-contained ESM package', () => { - const temporary = mkdtempSync(resolve(tmpdir(), 'silk-effect-wasm-release-candidate-')) + const temporary = mkdtempSync(resolve(tmpdir(), 'silk-lang-wasm-release-candidate-')) try { const archiveRoot = resolve(temporary, 'archives') @@ -1393,7 +1393,7 @@ test('the wasm release candidate is a self-contained ESM package', () => { const packedRoot = resolve(unpackRoot, 'package') const manifest = JSON.parse(readFileSync(resolve(packedRoot, 'package.json'), 'utf8')) - expect(manifest.name).toBe('@silk-effect/wasm') + expect(manifest.name).toBe('@silk-lang/wasm') expect(manifest.private).not.toBe(true) expect(Object.keys(manifest.dependencies ?? {})).toEqual(['effect']) expect(Object.keys(manifest.exports).sort()).toEqual([ @@ -1443,7 +1443,7 @@ test('the wasm release candidate is a self-contained ESM package', () => { JSON.stringify({ private: true, type: 'module', - dependencies: { '@silk-effect/wasm': `file:${resolve(archiveRoot, archive ?? '')}` }, + dependencies: { '@silk-lang/wasm': `file:${resolve(archiveRoot, archive ?? '')}` }, }), ) writeFileSync(resolve(consumerRoot, 'pnpm-workspace.yaml'), consumerWorkspace()) @@ -1458,7 +1458,7 @@ test('the wasm release candidate is a self-contained ESM package', () => { [ '--input-type=module', '--eval', - `import * as api from '@silk-effect/wasm'; const paths = ${JSON.stringify(deepPaths)}; const modules = await Promise.all(paths.map((path) => import(\`@silk-effect/wasm/\${path.slice(2)}\`))); console.log(JSON.stringify({ root: Object.keys(api).sort(), rootNamespaces: Object.fromEntries(paths.filter((path) => path !== './WasmError').map((path) => [path, Object.keys(api[path.slice(2)]).sort()])), deep: Object.fromEntries(paths.map((path, index) => [path, Object.keys(modules[index]).sort()])) }))`, + `import * as api from '@silk-lang/wasm'; const paths = ${JSON.stringify(deepPaths)}; const modules = await Promise.all(paths.map((path) => import(\`@silk-lang/wasm/\${path.slice(2)}\`))); console.log(JSON.stringify({ root: Object.keys(api).sort(), rootNamespaces: Object.fromEntries(paths.filter((path) => path !== './WasmError').map((path) => [path, Object.keys(api[path.slice(2)]).sort()])), deep: Object.fromEntries(paths.map((path, index) => [path, Object.keys(modules[index]).sort()])) }))`, ], { cwd: consumerRoot, @@ -1515,7 +1515,7 @@ test('the wasm release candidate is a self-contained ESM package', () => { }) test('the lsp release candidate installs and answers an initialize request', async () => { - const temporary = mkdtempSync(resolve(tmpdir(), 'silk-effect-lsp-release-candidate-')) + const temporary = mkdtempSync(resolve(tmpdir(), 'silk-lang-lsp-release-candidate-')) try { const archiveRoot = resolve(temporary, 'archives') @@ -1540,18 +1540,18 @@ test('the lsp release candidate installs and answers an initialize request', asy } const archives = readdirSync(archiveRoot) - const archive = archives.find((file) => file.startsWith('silk-effect-lsp-')) - const cliArchive = archives.find((file) => file.startsWith('silk-effect-compiler-cli-')) + const archive = archives.find((file) => file.startsWith('silk-lang-lsp-')) + const cliArchive = archives.find((file) => file.startsWith('silk-lang-compiler-cli-')) const compilerArchive = archives.find( - (file) => file.startsWith('silk-effect-compiler-') && !file.includes('-cli-'), + (file) => file.startsWith('silk-lang-compiler-') && !file.includes('-cli-'), ) - const llvmArchive = archives.find((file) => file.startsWith('silk-effect-llvm-')) - const wasmArchive = archives.find((file) => file.startsWith('silk-effect-wasm-')) + const llvmArchive = archives.find((file) => file.startsWith('silk-lang-llvm-')) + const wasmArchive = archives.find((file) => file.startsWith('silk-lang-wasm-')) const documentationArchive = archives.find((file) => - file.startsWith('silk-effect-documentation-'), + file.startsWith('silk-lang-documentation-'), ) - const formatterArchive = archives.find((file) => file.startsWith('silk-effect-formatter-')) - const inspectorArchive = archives.find((file) => file.startsWith('silk-effect-inspector-')) + const formatterArchive = archives.find((file) => file.startsWith('silk-lang-formatter-')) + const inspectorArchive = archives.find((file) => file.startsWith('silk-lang-inspector-')) expect(archive).toBeDefined() expect(documentationArchive).toBeDefined() expect(formatterArchive).toBeDefined() @@ -1560,15 +1560,15 @@ test('the lsp release candidate installs and answers an initialize request', asy const packedRoot = resolve(unpackRoot, 'package') const manifest = JSON.parse(readFileSync(resolve(packedRoot, 'package.json'), 'utf8')) - expect(manifest.name).toBe('@silk-effect/lsp') + expect(manifest.name).toBe('@silk-lang/lsp') expect(manifest.private).not.toBe(true) expect(Object.keys(manifest.dependencies ?? {}).sort()).toEqual([ '@effect/platform-node', - '@silk-effect/compiler', - '@silk-effect/compiler-cli', - '@silk-effect/documentation', - '@silk-effect/formatter', - '@silk-effect/inspector', + '@silk-lang/compiler', + '@silk-lang/compiler-cli', + '@silk-lang/documentation', + '@silk-lang/formatter', + '@silk-lang/inspector', 'effect', 'vscode-languageserver', 'vscode-languageserver-textdocument', @@ -1599,14 +1599,14 @@ test('the lsp release candidate installs and answers an initialize request', asy private: true, type: 'module', dependencies: { - '@silk-effect/lsp': `file:${resolve(archiveRoot, archive ?? '')}`, + '@silk-lang/lsp': `file:${resolve(archiveRoot, archive ?? '')}`, }, }), ) writeFileSync( resolve(consumerRoot, 'pnpm-workspace.yaml'), consumerWorkspace( - ` '@effect/platform-node-shared': 4.0.0-beta.103\n '@silk-effect/compiler-cli': file:${resolve(archiveRoot, cliArchive ?? '')}\n '@silk-effect/compiler': file:${resolve(archiveRoot, compilerArchive ?? '')}\n '@silk-effect/documentation': file:${resolve(archiveRoot, documentationArchive ?? '')}\n '@silk-effect/formatter': file:${resolve(archiveRoot, formatterArchive ?? '')}\n '@silk-effect/inspector': file:${resolve(archiveRoot, inspectorArchive ?? '')}\n '@silk-effect/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-effect/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n '@types/node': ${installedVersion('@types/node')}\n smol-toml: ${installedVersion('smol-toml')}\n vscode-languageserver: ${lspInstalledVersion('vscode-languageserver')}\n vscode-languageserver-textdocument: ${lspInstalledVersion('vscode-languageserver-textdocument')}\n ws: 8.21.2\nallowBuilds:\n msgpackr-extract: false\n sharp: false\n`, + ` '@effect/platform-node-shared': 4.0.0-beta.103\n '@silk-lang/compiler-cli': file:${resolve(archiveRoot, cliArchive ?? '')}\n '@silk-lang/compiler': file:${resolve(archiveRoot, compilerArchive ?? '')}\n '@silk-lang/documentation': file:${resolve(archiveRoot, documentationArchive ?? '')}\n '@silk-lang/formatter': file:${resolve(archiveRoot, formatterArchive ?? '')}\n '@silk-lang/inspector': file:${resolve(archiveRoot, inspectorArchive ?? '')}\n '@silk-lang/llvm': file:${resolve(archiveRoot, llvmArchive ?? '')}\n '@silk-lang/wasm': file:${resolve(archiveRoot, wasmArchive ?? '')}\n '@types/node': ${installedVersion('@types/node')}\n smol-toml: ${installedVersion('smol-toml')}\n vscode-languageserver: ${lspInstalledVersion('vscode-languageserver')}\n vscode-languageserver-textdocument: ${lspInstalledVersion('vscode-languageserver-textdocument')}\n ws: 8.21.2\nallowBuilds:\n msgpackr-extract: false\n sharp: false\n`, ), ) installConsumer(consumerRoot) @@ -1650,7 +1650,7 @@ test('the lsp release candidate installs and answers an initialize request', asy }, 120_000) test('the WebContainer release candidate exposes every SSR-safe actor subpath', () => { - const temporary = mkdtempSync(resolve(tmpdir(), 'silk-effect-webcontainer-release-candidate-')) + const temporary = mkdtempSync(resolve(tmpdir(), 'silk-lang-webcontainer-release-candidate-')) try { const archiveRoot = resolve(temporary, 'archives') @@ -1676,7 +1676,7 @@ test('the WebContainer release candidate exposes every SSR-safe actor subpath', './WebContainerFileSystem', './WebContainerProcess', ] - expect(manifest.name).toBe('@silk-effect/platform-webcontainer') + expect(manifest.name).toBe('@silk-lang/platform-webcontainer') expect(manifest.private).not.toBe(true) expect(Object.keys(manifest.dependencies ?? {}).sort()).toEqual(['@webcontainer/api', 'effect']) expect(Object.keys(manifest.exports).sort()).toEqual(['.', ...actorPaths]) @@ -1700,7 +1700,7 @@ test('the WebContainer release candidate exposes every SSR-safe actor subpath', private: true, type: 'module', dependencies: { - '@silk-effect/platform-webcontainer': `file:${resolve(archiveRoot, archive ?? '')}`, + '@silk-lang/platform-webcontainer': `file:${resolve(archiveRoot, archive ?? '')}`, }, }), ) @@ -1712,7 +1712,7 @@ test('the WebContainer release candidate exposes every SSR-safe actor subpath', [ '--input-type=module', '--eval', - `import * as api from '@silk-effect/platform-webcontainer'; const paths = ${JSON.stringify(actorPaths)}; const modules = await Promise.all(paths.map((path) => import(\`@silk-effect/platform-webcontainer/\${path.slice(2)}\`))); console.log(JSON.stringify({ root: Object.keys(api).sort(), deep: Object.fromEntries(paths.map((path, index) => [path, Object.keys(modules[index]).sort()])) }));`, + `import * as api from '@silk-lang/platform-webcontainer'; const paths = ${JSON.stringify(actorPaths)}; const modules = await Promise.all(paths.map((path) => import(\`@silk-lang/platform-webcontainer/\${path.slice(2)}\`))); console.log(JSON.stringify({ root: Object.keys(api).sort(), deep: Object.fromEntries(paths.map((path, index) => [path, Object.keys(modules[index]).sort()])) }));`, ], { cwd: consumerRoot, encoding: 'utf8' }, ), diff --git a/turbo.json b/turbo.json index 5a85b875..9197b0ee 100644 --- a/turbo.json +++ b/turbo.json @@ -26,7 +26,7 @@ "dependsOn": ["^build"], "outputs": [] }, - "@silk-effect/compiler#typecheck": { + "@silk-lang/compiler#typecheck": { "dependsOn": ["build"], "outputs": [] }, @@ -35,8 +35,8 @@ "inputs": ["$TURBO_DEFAULT$", "$TURBO_ROOT$/vitest.shared.ts"], "outputs": [] }, - "@silk-effect/compiler#test": { - "dependsOn": ["build", "@silk-effect/documentation#build", "@silk-effect/doctest#build"], + "@silk-lang/compiler#test": { + "dependsOn": ["build", "@silk-lang/documentation#build", "@silk-lang/doctest#build"], "inputs": [ "$TURBO_DEFAULT$", "$TURBO_ROOT$/vitest.shared.ts",