From 5c94cf2598a77d97ad0b04ec01544ce09bb7ca2a Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Tue, 15 Jul 2025 17:05:08 +0200 Subject: [PATCH 1/8] Update lockfile --- bun.lockb | Bin 206860 -> 206860 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index dfd06a409c256e6c07ed6f69753e2549179413ff..4e5b53e508f38e35b3137f9a52668e81e0bd49c9 100755 GIT binary patch delta 32 ocmeCVz|(Vqr=f*$3)5O&4#qe`OFct9v-YjLOxw5eGKWh60J&TW5&!@I delta 32 jcmeCVz|(Vqr=f*$3)5O&4kiW&Xy3}qw0$ctbGQ@$qfQ8j From ae7ab4ec830a9c4e48374e12e8690dccb6d8e7ed Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Tue, 15 Jul 2025 18:13:44 +0200 Subject: [PATCH 2/8] Add search config + move files into a src folder --- .gitignore | 2 ++ bun.lockb | Bin 206860 -> 209113 bytes next.config.mjs | 13 +++++++++---- package.json | 4 +++- {app => src/app}/[[...mdxPath]]/page.jsx | 0 {app => src/app}/layout.jsx | 0 {content => src/content}/_meta.js | 0 .../content}/api-reference/_meta.js | 0 .../content}/api-reference/datetime.md | 0 {content => src/content}/api-reference/fs.md | 0 .../content}/api-reference/luau.md | 0 {content => src/content}/api-reference/net.md | 0 .../content}/api-reference/process.md | 0 .../content}/api-reference/regex.md | 0 .../content}/api-reference/roblox.md | 0 .../content}/api-reference/serde.md | 0 .../content}/api-reference/stdio.md | 0 .../content}/api-reference/task.md | 0 .../getting-started/1-installation.mdx | 0 .../2-introduction/1-hello-lune.md | 0 .../2-introduction/10-spawning-processes.md | 0 .../2-introduction/2-built-in-libraries.md | 0 .../2-introduction/3-standard-io.mdx | 0 .../2-introduction/4-script-arguments.md | 0 .../2-introduction/5-network-requests.mdx | 0 .../6-files-and-directories.mdx | 0 .../2-introduction/7-environment-variables.md | 0 .../2-introduction/8-modules.mdx | 0 .../2-introduction/9-task-scheduler.mdx | 0 .../getting-started/2-introduction/_meta.js | 0 .../getting-started/3-command-line-usage.md | 0 .../getting-started/4-editor-setup.md | 0 .../content}/getting-started/5-security.mdx | 0 .../content}/getting-started/_meta.js | 0 {content => src/content}/index.md | 0 .../content}/roblox/1-introduction.md | 0 {content => src/content}/roblox/2-examples.md | 0 .../content}/roblox/3-remodel-migration.mdx | 0 .../content}/roblox/4-api-status.md | 0 {content => src/content}/roblox/_meta.js | 0 mdx-components.js => src/mdx-components.js | 6 +++--- 41 files changed, 17 insertions(+), 8 deletions(-) rename {app => src/app}/[[...mdxPath]]/page.jsx (100%) rename {app => src/app}/layout.jsx (100%) rename {content => src/content}/_meta.js (100%) rename {content => src/content}/api-reference/_meta.js (100%) rename {content => src/content}/api-reference/datetime.md (100%) rename {content => src/content}/api-reference/fs.md (100%) rename {content => src/content}/api-reference/luau.md (100%) rename {content => src/content}/api-reference/net.md (100%) rename {content => src/content}/api-reference/process.md (100%) rename {content => src/content}/api-reference/regex.md (100%) rename {content => src/content}/api-reference/roblox.md (100%) rename {content => src/content}/api-reference/serde.md (100%) rename {content => src/content}/api-reference/stdio.md (100%) rename {content => src/content}/api-reference/task.md (100%) rename {content => src/content}/getting-started/1-installation.mdx (100%) rename {content => src/content}/getting-started/2-introduction/1-hello-lune.md (100%) rename {content => src/content}/getting-started/2-introduction/10-spawning-processes.md (100%) rename {content => src/content}/getting-started/2-introduction/2-built-in-libraries.md (100%) rename {content => src/content}/getting-started/2-introduction/3-standard-io.mdx (100%) rename {content => src/content}/getting-started/2-introduction/4-script-arguments.md (100%) rename {content => src/content}/getting-started/2-introduction/5-network-requests.mdx (100%) rename {content => src/content}/getting-started/2-introduction/6-files-and-directories.mdx (100%) rename {content => src/content}/getting-started/2-introduction/7-environment-variables.md (100%) rename {content => src/content}/getting-started/2-introduction/8-modules.mdx (100%) rename {content => src/content}/getting-started/2-introduction/9-task-scheduler.mdx (100%) rename {content => src/content}/getting-started/2-introduction/_meta.js (100%) rename {content => src/content}/getting-started/3-command-line-usage.md (100%) rename {content => src/content}/getting-started/4-editor-setup.md (100%) rename {content => src/content}/getting-started/5-security.mdx (100%) rename {content => src/content}/getting-started/_meta.js (100%) rename {content => src/content}/index.md (100%) rename {content => src/content}/roblox/1-introduction.md (100%) rename {content => src/content}/roblox/2-examples.md (100%) rename {content => src/content}/roblox/3-remodel-migration.mdx (100%) rename {content => src/content}/roblox/4-api-status.md (100%) rename {content => src/content}/roblox/_meta.js (100%) rename mdx-components.js => src/mdx-components.js (72%) diff --git a/.gitignore b/.gitignore index c5edc4b..c588e6b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /out /.next /.env +/_pagefind /**/.DS_Store /**/node_modules @@ -11,3 +12,4 @@ /**/out /**/.next /**/.env +/**/_pagefind diff --git a/bun.lockb b/bun.lockb index 4e5b53e508f38e35b3137f9a52668e81e0bd49c9..aa078059538a25eecb91be7d11c943814b207b75 100755 GIT binary patch delta 10391 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 delta 8990 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 diff --git a/next.config.mjs b/next.config.mjs index 60d84fb..a6f099a 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,6 +1,6 @@ -import nextra from "nextra" +import nextra from "nextra"; -const withNextra = nextra({}) +const withNextra = nextra({}); /** * @type {import('next').NextConfig} @@ -11,6 +11,11 @@ const nextConfig = { images: { unoptimized: true, }, -} + turbopack: { + resolveAlias: { + "next-mdx-import-source-file": "./src/mdx-components.js", + }, + }, +}; -export default withNextra(nextConfig) +export default withNextra(nextConfig); diff --git a/package.json b/package.json index 1c8db33..9102696 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "scripts": { "dev": "next", "build": "next build", - "start": "next start" + "start": "next start", + "postbuild": "pagefind --site .next/server/app --output-path out/_pagefind" }, "repository": { "type": "git", @@ -26,6 +27,7 @@ "@types/node": "^22.16.4", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", + "pagefind": "^1.3.0", "typescript": "5.8.3" } } diff --git a/app/[[...mdxPath]]/page.jsx b/src/app/[[...mdxPath]]/page.jsx similarity index 100% rename from app/[[...mdxPath]]/page.jsx rename to src/app/[[...mdxPath]]/page.jsx diff --git a/app/layout.jsx b/src/app/layout.jsx similarity index 100% rename from app/layout.jsx rename to src/app/layout.jsx diff --git a/content/_meta.js b/src/content/_meta.js similarity index 100% rename from content/_meta.js rename to src/content/_meta.js diff --git a/content/api-reference/_meta.js b/src/content/api-reference/_meta.js similarity index 100% rename from content/api-reference/_meta.js rename to src/content/api-reference/_meta.js diff --git a/content/api-reference/datetime.md b/src/content/api-reference/datetime.md similarity index 100% rename from content/api-reference/datetime.md rename to src/content/api-reference/datetime.md diff --git a/content/api-reference/fs.md b/src/content/api-reference/fs.md similarity index 100% rename from content/api-reference/fs.md rename to src/content/api-reference/fs.md diff --git a/content/api-reference/luau.md b/src/content/api-reference/luau.md similarity index 100% rename from content/api-reference/luau.md rename to src/content/api-reference/luau.md diff --git a/content/api-reference/net.md b/src/content/api-reference/net.md similarity index 100% rename from content/api-reference/net.md rename to src/content/api-reference/net.md diff --git a/content/api-reference/process.md b/src/content/api-reference/process.md similarity index 100% rename from content/api-reference/process.md rename to src/content/api-reference/process.md diff --git a/content/api-reference/regex.md b/src/content/api-reference/regex.md similarity index 100% rename from content/api-reference/regex.md rename to src/content/api-reference/regex.md diff --git a/content/api-reference/roblox.md b/src/content/api-reference/roblox.md similarity index 100% rename from content/api-reference/roblox.md rename to src/content/api-reference/roblox.md diff --git a/content/api-reference/serde.md b/src/content/api-reference/serde.md similarity index 100% rename from content/api-reference/serde.md rename to src/content/api-reference/serde.md diff --git a/content/api-reference/stdio.md b/src/content/api-reference/stdio.md similarity index 100% rename from content/api-reference/stdio.md rename to src/content/api-reference/stdio.md diff --git a/content/api-reference/task.md b/src/content/api-reference/task.md similarity index 100% rename from content/api-reference/task.md rename to src/content/api-reference/task.md diff --git a/content/getting-started/1-installation.mdx b/src/content/getting-started/1-installation.mdx similarity index 100% rename from content/getting-started/1-installation.mdx rename to src/content/getting-started/1-installation.mdx diff --git a/content/getting-started/2-introduction/1-hello-lune.md b/src/content/getting-started/2-introduction/1-hello-lune.md similarity index 100% rename from content/getting-started/2-introduction/1-hello-lune.md rename to src/content/getting-started/2-introduction/1-hello-lune.md diff --git a/content/getting-started/2-introduction/10-spawning-processes.md b/src/content/getting-started/2-introduction/10-spawning-processes.md similarity index 100% rename from content/getting-started/2-introduction/10-spawning-processes.md rename to src/content/getting-started/2-introduction/10-spawning-processes.md diff --git a/content/getting-started/2-introduction/2-built-in-libraries.md b/src/content/getting-started/2-introduction/2-built-in-libraries.md similarity index 100% rename from content/getting-started/2-introduction/2-built-in-libraries.md rename to src/content/getting-started/2-introduction/2-built-in-libraries.md diff --git a/content/getting-started/2-introduction/3-standard-io.mdx b/src/content/getting-started/2-introduction/3-standard-io.mdx similarity index 100% rename from content/getting-started/2-introduction/3-standard-io.mdx rename to src/content/getting-started/2-introduction/3-standard-io.mdx diff --git a/content/getting-started/2-introduction/4-script-arguments.md b/src/content/getting-started/2-introduction/4-script-arguments.md similarity index 100% rename from content/getting-started/2-introduction/4-script-arguments.md rename to src/content/getting-started/2-introduction/4-script-arguments.md diff --git a/content/getting-started/2-introduction/5-network-requests.mdx b/src/content/getting-started/2-introduction/5-network-requests.mdx similarity index 100% rename from content/getting-started/2-introduction/5-network-requests.mdx rename to src/content/getting-started/2-introduction/5-network-requests.mdx diff --git a/content/getting-started/2-introduction/6-files-and-directories.mdx b/src/content/getting-started/2-introduction/6-files-and-directories.mdx similarity index 100% rename from content/getting-started/2-introduction/6-files-and-directories.mdx rename to src/content/getting-started/2-introduction/6-files-and-directories.mdx diff --git a/content/getting-started/2-introduction/7-environment-variables.md b/src/content/getting-started/2-introduction/7-environment-variables.md similarity index 100% rename from content/getting-started/2-introduction/7-environment-variables.md rename to src/content/getting-started/2-introduction/7-environment-variables.md diff --git a/content/getting-started/2-introduction/8-modules.mdx b/src/content/getting-started/2-introduction/8-modules.mdx similarity index 100% rename from content/getting-started/2-introduction/8-modules.mdx rename to src/content/getting-started/2-introduction/8-modules.mdx diff --git a/content/getting-started/2-introduction/9-task-scheduler.mdx b/src/content/getting-started/2-introduction/9-task-scheduler.mdx similarity index 100% rename from content/getting-started/2-introduction/9-task-scheduler.mdx rename to src/content/getting-started/2-introduction/9-task-scheduler.mdx diff --git a/content/getting-started/2-introduction/_meta.js b/src/content/getting-started/2-introduction/_meta.js similarity index 100% rename from content/getting-started/2-introduction/_meta.js rename to src/content/getting-started/2-introduction/_meta.js diff --git a/content/getting-started/3-command-line-usage.md b/src/content/getting-started/3-command-line-usage.md similarity index 100% rename from content/getting-started/3-command-line-usage.md rename to src/content/getting-started/3-command-line-usage.md diff --git a/content/getting-started/4-editor-setup.md b/src/content/getting-started/4-editor-setup.md similarity index 100% rename from content/getting-started/4-editor-setup.md rename to src/content/getting-started/4-editor-setup.md diff --git a/content/getting-started/5-security.mdx b/src/content/getting-started/5-security.mdx similarity index 100% rename from content/getting-started/5-security.mdx rename to src/content/getting-started/5-security.mdx diff --git a/content/getting-started/_meta.js b/src/content/getting-started/_meta.js similarity index 100% rename from content/getting-started/_meta.js rename to src/content/getting-started/_meta.js diff --git a/content/index.md b/src/content/index.md similarity index 100% rename from content/index.md rename to src/content/index.md diff --git a/content/roblox/1-introduction.md b/src/content/roblox/1-introduction.md similarity index 100% rename from content/roblox/1-introduction.md rename to src/content/roblox/1-introduction.md diff --git a/content/roblox/2-examples.md b/src/content/roblox/2-examples.md similarity index 100% rename from content/roblox/2-examples.md rename to src/content/roblox/2-examples.md diff --git a/content/roblox/3-remodel-migration.mdx b/src/content/roblox/3-remodel-migration.mdx similarity index 100% rename from content/roblox/3-remodel-migration.mdx rename to src/content/roblox/3-remodel-migration.mdx diff --git a/content/roblox/4-api-status.md b/src/content/roblox/4-api-status.md similarity index 100% rename from content/roblox/4-api-status.md rename to src/content/roblox/4-api-status.md diff --git a/content/roblox/_meta.js b/src/content/roblox/_meta.js similarity index 100% rename from content/roblox/_meta.js rename to src/content/roblox/_meta.js diff --git a/mdx-components.js b/src/mdx-components.js similarity index 72% rename from mdx-components.js rename to src/mdx-components.js index c781d44..3c9a4e4 100644 --- a/mdx-components.js +++ b/src/mdx-components.js @@ -1,10 +1,10 @@ -import { useMDXComponents as getThemeComponents } from "nextra-theme-docs" +import { useMDXComponents as getThemeComponents } from "nextra-theme-docs"; -const themeComponents = getThemeComponents() +const themeComponents = getThemeComponents(); export function useMDXComponents(components) { return { ...themeComponents, ...components, - } + }; } From 3eee8426cd80008cbcd46bcbe1175864aa10b08d Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Tue, 15 Jul 2025 18:24:08 +0200 Subject: [PATCH 3/8] Yeet nextjs --- .gitignore | 2 - bun.lockb | Bin 209113 -> 0 bytes {src/content => content}/_meta.js | 0 .../api-reference/_meta.js | 0 .../api-reference/datetime.md | 0 {src/content => content}/api-reference/fs.md | 0 .../content => content}/api-reference/luau.md | 0 {src/content => content}/api-reference/net.md | 0 .../api-reference/process.md | 0 .../api-reference/regex.md | 0 .../api-reference/roblox.md | 0 .../api-reference/serde.md | 0 .../api-reference/stdio.md | 0 .../content => content}/api-reference/task.md | 0 .../getting-started/1-installation.mdx | 0 .../2-introduction/1-hello-lune.md | 0 .../2-introduction/10-spawning-processes.md | 0 .../2-introduction/2-built-in-libraries.md | 0 .../2-introduction/3-standard-io.mdx | 0 .../2-introduction/4-script-arguments.md | 0 .../2-introduction/5-network-requests.mdx | 0 .../6-files-and-directories.mdx | 0 .../2-introduction/7-environment-variables.md | 0 .../2-introduction/8-modules.mdx | 0 .../2-introduction/9-task-scheduler.mdx | 0 .../getting-started/2-introduction/_meta.js | 0 .../getting-started/3-command-line-usage.md | 0 .../getting-started/4-editor-setup.md | 0 .../getting-started/5-security.mdx | 0 .../getting-started/_meta.js | 0 {src/content => content}/index.md | 0 .../roblox/1-introduction.md | 0 {src/content => content}/roblox/2-examples.md | 0 .../roblox/3-remodel-migration.mdx | 0 .../roblox/4-api-status.md | 0 {src/content => content}/roblox/_meta.js | 0 next-env.d.ts | 5 -- next.config.mjs | 21 -------- package.json | 33 ------------ src/app/[[...mdxPath]]/page.jsx | 23 -------- src/app/layout.jsx | 51 ------------------ src/mdx-components.js | 10 ---- tsconfig.json | 25 --------- 43 files changed, 170 deletions(-) delete mode 100755 bun.lockb rename {src/content => content}/_meta.js (100%) rename {src/content => content}/api-reference/_meta.js (100%) rename {src/content => content}/api-reference/datetime.md (100%) rename {src/content => content}/api-reference/fs.md (100%) rename {src/content => content}/api-reference/luau.md (100%) rename {src/content => content}/api-reference/net.md (100%) rename {src/content => content}/api-reference/process.md (100%) rename {src/content => content}/api-reference/regex.md (100%) rename {src/content => content}/api-reference/roblox.md (100%) rename {src/content => content}/api-reference/serde.md (100%) rename {src/content => content}/api-reference/stdio.md (100%) rename {src/content => content}/api-reference/task.md (100%) rename {src/content => content}/getting-started/1-installation.mdx (100%) rename {src/content => content}/getting-started/2-introduction/1-hello-lune.md (100%) rename {src/content => content}/getting-started/2-introduction/10-spawning-processes.md (100%) rename {src/content => content}/getting-started/2-introduction/2-built-in-libraries.md (100%) rename {src/content => content}/getting-started/2-introduction/3-standard-io.mdx (100%) rename {src/content => content}/getting-started/2-introduction/4-script-arguments.md (100%) rename {src/content => content}/getting-started/2-introduction/5-network-requests.mdx (100%) rename {src/content => content}/getting-started/2-introduction/6-files-and-directories.mdx (100%) rename {src/content => content}/getting-started/2-introduction/7-environment-variables.md (100%) rename {src/content => content}/getting-started/2-introduction/8-modules.mdx (100%) rename {src/content => content}/getting-started/2-introduction/9-task-scheduler.mdx (100%) rename {src/content => content}/getting-started/2-introduction/_meta.js (100%) rename {src/content => content}/getting-started/3-command-line-usage.md (100%) rename {src/content => content}/getting-started/4-editor-setup.md (100%) rename {src/content => content}/getting-started/5-security.mdx (100%) rename {src/content => content}/getting-started/_meta.js (100%) rename {src/content => content}/index.md (100%) rename {src/content => content}/roblox/1-introduction.md (100%) rename {src/content => content}/roblox/2-examples.md (100%) rename {src/content => content}/roblox/3-remodel-migration.mdx (100%) rename {src/content => content}/roblox/4-api-status.md (100%) rename {src/content => content}/roblox/_meta.js (100%) delete mode 100644 next-env.d.ts delete mode 100644 next.config.mjs delete mode 100644 package.json delete mode 100644 src/app/[[...mdxPath]]/page.jsx delete mode 100644 src/app/layout.jsx delete mode 100644 src/mdx-components.js delete mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index c588e6b..c5edc4b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ /out /.next /.env -/_pagefind /**/.DS_Store /**/node_modules @@ -12,4 +11,3 @@ /**/out /**/.next /**/.env -/**/_pagefind diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index aa078059538a25eecb91be7d11c943814b207b75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209113 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ˆ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 diff --git a/src/content/_meta.js b/content/_meta.js similarity index 100% rename from src/content/_meta.js rename to content/_meta.js diff --git a/src/content/api-reference/_meta.js b/content/api-reference/_meta.js similarity index 100% rename from src/content/api-reference/_meta.js rename to content/api-reference/_meta.js diff --git a/src/content/api-reference/datetime.md b/content/api-reference/datetime.md similarity index 100% rename from src/content/api-reference/datetime.md rename to content/api-reference/datetime.md diff --git a/src/content/api-reference/fs.md b/content/api-reference/fs.md similarity index 100% rename from src/content/api-reference/fs.md rename to content/api-reference/fs.md diff --git a/src/content/api-reference/luau.md b/content/api-reference/luau.md similarity index 100% rename from src/content/api-reference/luau.md rename to content/api-reference/luau.md diff --git a/src/content/api-reference/net.md b/content/api-reference/net.md similarity index 100% rename from src/content/api-reference/net.md rename to content/api-reference/net.md diff --git a/src/content/api-reference/process.md b/content/api-reference/process.md similarity index 100% rename from src/content/api-reference/process.md rename to content/api-reference/process.md diff --git a/src/content/api-reference/regex.md b/content/api-reference/regex.md similarity index 100% rename from src/content/api-reference/regex.md rename to content/api-reference/regex.md diff --git a/src/content/api-reference/roblox.md b/content/api-reference/roblox.md similarity index 100% rename from src/content/api-reference/roblox.md rename to content/api-reference/roblox.md diff --git a/src/content/api-reference/serde.md b/content/api-reference/serde.md similarity index 100% rename from src/content/api-reference/serde.md rename to content/api-reference/serde.md diff --git a/src/content/api-reference/stdio.md b/content/api-reference/stdio.md similarity index 100% rename from src/content/api-reference/stdio.md rename to content/api-reference/stdio.md diff --git a/src/content/api-reference/task.md b/content/api-reference/task.md similarity index 100% rename from src/content/api-reference/task.md rename to content/api-reference/task.md diff --git a/src/content/getting-started/1-installation.mdx b/content/getting-started/1-installation.mdx similarity index 100% rename from src/content/getting-started/1-installation.mdx rename to content/getting-started/1-installation.mdx diff --git a/src/content/getting-started/2-introduction/1-hello-lune.md b/content/getting-started/2-introduction/1-hello-lune.md similarity index 100% rename from src/content/getting-started/2-introduction/1-hello-lune.md rename to content/getting-started/2-introduction/1-hello-lune.md diff --git a/src/content/getting-started/2-introduction/10-spawning-processes.md b/content/getting-started/2-introduction/10-spawning-processes.md similarity index 100% rename from src/content/getting-started/2-introduction/10-spawning-processes.md rename to content/getting-started/2-introduction/10-spawning-processes.md diff --git a/src/content/getting-started/2-introduction/2-built-in-libraries.md b/content/getting-started/2-introduction/2-built-in-libraries.md similarity index 100% rename from src/content/getting-started/2-introduction/2-built-in-libraries.md rename to content/getting-started/2-introduction/2-built-in-libraries.md diff --git a/src/content/getting-started/2-introduction/3-standard-io.mdx b/content/getting-started/2-introduction/3-standard-io.mdx similarity index 100% rename from src/content/getting-started/2-introduction/3-standard-io.mdx rename to content/getting-started/2-introduction/3-standard-io.mdx diff --git a/src/content/getting-started/2-introduction/4-script-arguments.md b/content/getting-started/2-introduction/4-script-arguments.md similarity index 100% rename from src/content/getting-started/2-introduction/4-script-arguments.md rename to content/getting-started/2-introduction/4-script-arguments.md diff --git a/src/content/getting-started/2-introduction/5-network-requests.mdx b/content/getting-started/2-introduction/5-network-requests.mdx similarity index 100% rename from src/content/getting-started/2-introduction/5-network-requests.mdx rename to content/getting-started/2-introduction/5-network-requests.mdx diff --git a/src/content/getting-started/2-introduction/6-files-and-directories.mdx b/content/getting-started/2-introduction/6-files-and-directories.mdx similarity index 100% rename from src/content/getting-started/2-introduction/6-files-and-directories.mdx rename to content/getting-started/2-introduction/6-files-and-directories.mdx diff --git a/src/content/getting-started/2-introduction/7-environment-variables.md b/content/getting-started/2-introduction/7-environment-variables.md similarity index 100% rename from src/content/getting-started/2-introduction/7-environment-variables.md rename to content/getting-started/2-introduction/7-environment-variables.md diff --git a/src/content/getting-started/2-introduction/8-modules.mdx b/content/getting-started/2-introduction/8-modules.mdx similarity index 100% rename from src/content/getting-started/2-introduction/8-modules.mdx rename to content/getting-started/2-introduction/8-modules.mdx diff --git a/src/content/getting-started/2-introduction/9-task-scheduler.mdx b/content/getting-started/2-introduction/9-task-scheduler.mdx similarity index 100% rename from src/content/getting-started/2-introduction/9-task-scheduler.mdx rename to content/getting-started/2-introduction/9-task-scheduler.mdx diff --git a/src/content/getting-started/2-introduction/_meta.js b/content/getting-started/2-introduction/_meta.js similarity index 100% rename from src/content/getting-started/2-introduction/_meta.js rename to content/getting-started/2-introduction/_meta.js diff --git a/src/content/getting-started/3-command-line-usage.md b/content/getting-started/3-command-line-usage.md similarity index 100% rename from src/content/getting-started/3-command-line-usage.md rename to content/getting-started/3-command-line-usage.md diff --git a/src/content/getting-started/4-editor-setup.md b/content/getting-started/4-editor-setup.md similarity index 100% rename from src/content/getting-started/4-editor-setup.md rename to content/getting-started/4-editor-setup.md diff --git a/src/content/getting-started/5-security.mdx b/content/getting-started/5-security.mdx similarity index 100% rename from src/content/getting-started/5-security.mdx rename to content/getting-started/5-security.mdx diff --git a/src/content/getting-started/_meta.js b/content/getting-started/_meta.js similarity index 100% rename from src/content/getting-started/_meta.js rename to content/getting-started/_meta.js diff --git a/src/content/index.md b/content/index.md similarity index 100% rename from src/content/index.md rename to content/index.md diff --git a/src/content/roblox/1-introduction.md b/content/roblox/1-introduction.md similarity index 100% rename from src/content/roblox/1-introduction.md rename to content/roblox/1-introduction.md diff --git a/src/content/roblox/2-examples.md b/content/roblox/2-examples.md similarity index 100% rename from src/content/roblox/2-examples.md rename to content/roblox/2-examples.md diff --git a/src/content/roblox/3-remodel-migration.mdx b/content/roblox/3-remodel-migration.mdx similarity index 100% rename from src/content/roblox/3-remodel-migration.mdx rename to content/roblox/3-remodel-migration.mdx diff --git a/src/content/roblox/4-api-status.md b/content/roblox/4-api-status.md similarity index 100% rename from src/content/roblox/4-api-status.md rename to content/roblox/4-api-status.md diff --git a/src/content/roblox/_meta.js b/content/roblox/_meta.js similarity index 100% rename from src/content/roblox/_meta.js rename to content/roblox/_meta.js diff --git a/next-env.d.ts b/next-env.d.ts deleted file mode 100644 index 1b3be08..0000000 --- a/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.mjs b/next.config.mjs deleted file mode 100644 index a6f099a..0000000 --- a/next.config.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import nextra from "nextra"; - -const withNextra = nextra({}); - -/** - * @type {import('next').NextConfig} - */ -const nextConfig = { - output: "export", - basePath: "/docs", - images: { - unoptimized: true, - }, - turbopack: { - resolveAlias: { - "next-mdx-import-source-file": "./src/mdx-components.js", - }, - }, -}; - -export default withNextra(nextConfig); diff --git a/package.json b/package.json deleted file mode 100644 index 9102696..0000000 --- a/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "lune-docs", - "version": "0.0.1", - "description": "Documentation site for Lune", - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start", - "postbuild": "pagefind --site .next/server/app --output-path out/_pagefind" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/lune-org/docs.git" - }, - "bugs": { - "url": "https://github.com/lune-orc/docs/issues" - }, - "homepage": "https://github.com/lune-orc/docs#readme", - "dependencies": { - "next": "^15.4.1", - "nextra": "^4.2.17", - "nextra-theme-docs": "^4.2.17", - "react": "^19.1.0", - "react-dom": "^19.1.0" - }, - "devDependencies": { - "@types/node": "^22.16.4", - "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", - "pagefind": "^1.3.0", - "typescript": "5.8.3" - } -} diff --git a/src/app/[[...mdxPath]]/page.jsx b/src/app/[[...mdxPath]]/page.jsx deleted file mode 100644 index 8c4bd96..0000000 --- a/src/app/[[...mdxPath]]/page.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import { generateStaticParamsFor, importPage } from "nextra/pages"; -import { useMDXComponents as getMDXComponents } from "../../mdx-components"; - -export const generateStaticParams = generateStaticParamsFor("mdxPath"); - -export async function generateMetadata(props) { - const params = await props.params; - const { metadata } = await importPage(params.mdxPath); - return metadata; -} - -const Wrapper = getMDXComponents().wrapper; - -export default async function Page(props) { - const params = await props.params; - const result = await importPage(params.mdxPath); - const { default: MDXContent, toc, metadata } = result; - return ( - - - - ); -} diff --git a/src/app/layout.jsx b/src/app/layout.jsx deleted file mode 100644 index 3a577b6..0000000 --- a/src/app/layout.jsx +++ /dev/null @@ -1,51 +0,0 @@ -import { Footer, Layout, Navbar } from "nextra-theme-docs"; -import { Head } from "nextra/components"; -import { getPageMap } from "nextra/page-map"; -import "nextra-theme-docs/style.css"; - -export const metadata = {}; - -const navbar = ( - - } - /> -); -const footer = ( - -); - -export default async function RootLayout({ children }) { - return ( - - - - - - - {children} - - - - ); -} diff --git a/src/mdx-components.js b/src/mdx-components.js deleted file mode 100644 index 3c9a4e4..0000000 --- a/src/mdx-components.js +++ /dev/null @@ -1,10 +0,0 @@ -import { useMDXComponents as getThemeComponents } from "nextra-theme-docs"; - -const themeComponents = getThemeComponents(); - -export function useMDXComponents(components) { - return { - ...themeComponents, - ...components, - }; -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index f2c1ba3..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": false, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "incremental": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "plugins": [ - { - "name": "next" - } - ] - }, - "include": ["**/*.ts", "**/*.tsx", "next-env.d.ts", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -} From 0f28eeb5a72d9d4212823f9e03f6dd4e3fd79053 Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Tue, 15 Jul 2025 18:37:39 +0200 Subject: [PATCH 4/8] Hello starlight --- .gitignore | 4 +-- astro.config.mjs | 32 +++++++++++++++++++++++ bun.lockb | Bin 0 -> 193995 bytes package.json | 17 ++++++++++++ public/favicon.svg | 1 + src/assets/houston.webp | Bin 0 -> 98506 bytes src/content.config.ts | 7 +++++ src/content/docs/guides/example.md | 11 ++++++++ src/content/docs/index.mdx | 36 ++++++++++++++++++++++++++ src/content/docs/reference/example.md | 11 ++++++++ tsconfig.json | 5 ++++ 11 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 astro.config.mjs create mode 100755 bun.lockb create mode 100644 package.json create mode 100644 public/favicon.svg create mode 100644 src/assets/houston.webp create mode 100644 src/content.config.ts create mode 100644 src/content/docs/guides/example.md create mode 100644 src/content/docs/index.mdx create mode 100644 src/content/docs/reference/example.md create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index c5edc4b..86d9470 100644 --- a/.gitignore +++ b/.gitignore @@ -2,12 +2,12 @@ /node_modules /temp /out -/.next +/.astro /.env /**/.DS_Store /**/node_modules /**/temp /**/out -/**/.next +/**/.astro /**/.env diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..9a81509 --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,32 @@ +// @ts-check +import { defineConfig } from "astro/config"; +import starlight from "@astrojs/starlight"; + +// https://astro.build/config +export default defineConfig({ + integrations: [ + starlight({ + title: "My Docs", + social: [ + { + icon: "github", + label: "GitHub", + href: "https://github.com/lune-org/lune", + }, + ], + sidebar: [ + { + label: "Guides", + items: [ + // Each item here is one entry in the navigation menu. + { label: "Example Guide", slug: "guides/example" }, + ], + }, + { + label: "Reference", + autogenerate: { directory: "reference" }, + }, + ], + }), + ], +}); diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..ef1d4b712bf298fc4ef91c8a75259e82134c5314 GIT binary patch literal 193995 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 \ No newline at end of file diff --git a/src/assets/houston.webp b/src/assets/houston.webp new file mode 100644 index 0000000000000000000000000000000000000000..930c164974ad8eb528878f15a98016249b8cf546 GIT binary patch literal 98506 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 b6~t;_wBcJ3AWgga7~Sz~izoKbpAY~5r|m$8 literal 0 HcmV?d00001 diff --git a/src/content.config.ts b/src/content.config.ts new file mode 100644 index 0000000..d9ee8c9 --- /dev/null +++ b/src/content.config.ts @@ -0,0 +1,7 @@ +import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/src/content/docs/guides/example.md b/src/content/docs/guides/example.md new file mode 100644 index 0000000..ebd0f3b --- /dev/null +++ b/src/content/docs/guides/example.md @@ -0,0 +1,11 @@ +--- +title: Example Guide +description: A guide in my new Starlight docs site. +--- + +Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. +Writing a good guide requires thinking about what your users are trying to do. + +## Further reading + +- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx new file mode 100644 index 0000000..664b681 --- /dev/null +++ b/src/content/docs/index.mdx @@ -0,0 +1,36 @@ +--- +title: Welcome to Starlight +description: Get started building your docs site with Starlight. +template: splash +hero: + tagline: Congrats on setting up a new Starlight project! + image: + file: ../../assets/houston.webp + actions: + - text: Example Guide + link: /guides/example/ + icon: right-arrow + - text: Read the Starlight docs + link: https://starlight.astro.build + icon: external + variant: minimal +--- + +import { Card, CardGrid } from '@astrojs/starlight/components'; + +## Next steps + + + + Edit `src/content/docs/index.mdx` to see this page change. + + + Add Markdown or MDX files to `src/content/docs` to create new pages. + + + Edit your `sidebar` and other config in `astro.config.mjs`. + + + Learn more in [the Starlight Docs](https://starlight.astro.build/). + + diff --git a/src/content/docs/reference/example.md b/src/content/docs/reference/example.md new file mode 100644 index 0000000..0224f09 --- /dev/null +++ b/src/content/docs/reference/example.md @@ -0,0 +1,11 @@ +--- +title: Example Reference +description: A reference page in my new Starlight docs site. +--- + +Reference pages are ideal for outlining how things work in terse and clear terms. +Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what you're documenting. + +## Further reading + +- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a9210e6 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] +} From e2ca7dc7cc9757e56dff2796fa21e091f38854ec Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Tue, 15 Jul 2025 20:54:22 +0200 Subject: [PATCH 5/8] Migrate the old content dir to astro content collection + some misc cleanup --- astro.config.mjs | 90 +++- content/_meta.js | 6 - content/api-reference/_meta.js | 12 - content/api-reference/fs.md | 279 ------------ .../2-introduction/1-hello-lune.md | 24 - .../2-introduction/8-modules.mdx | 85 ---- .../getting-started/2-introduction/_meta.js | 12 - content/getting-started/5-security.mdx | 199 --------- content/getting-started/_meta.js | 7 - content/roblox/3-remodel-migration.mdx | 420 ------------------ content/roblox/_meta.js | 6 - src/content.config.ts | 6 +- .../content/docs}/api-reference/datetime.md | 106 ++--- src/content/docs/api-reference/fs.md | 281 ++++++++++++ .../content/docs}/api-reference/luau.md | 34 +- .../content/docs}/api-reference/net.md | 114 ++--- .../content/docs}/api-reference/process.md | 54 +-- .../content/docs}/api-reference/regex.md | 74 +-- .../content/docs}/api-reference/roblox.md | 50 ++- .../content/docs}/api-reference/serde.md | 52 +-- .../content/docs}/api-reference/stdio.md | 40 +- .../content/docs}/api-reference/task.md | 30 +- .../docs}/getting-started/1-installation.mdx | 76 ++-- .../getting-started/2-command-line-usage.md | 22 +- .../docs/getting-started/3-editor-setup.md | 6 +- .../docs/getting-started/4-security.mdx | 39 ++ src/content/docs/guides/example.md | 11 - {content => src/content/docs}/index.md | 7 +- src/content/docs/index.mdx | 36 -- src/content/docs/reference/example.md | 11 - .../content/docs}/roblox/1-introduction.md | 7 +- .../content/docs}/roblox/2-examples.md | 7 +- .../docs/roblox/3-remodel-migration.mdx | 124 ++++++ .../content/docs}/roblox/4-api-status.md | 7 +- src/content/docs/the-book/1-hello-lune.md | 23 + .../docs/the-book}/10-spawning-processes.md | 8 +- .../docs/the-book}/2-built-in-libraries.md | 15 +- .../content/docs/the-book}/3-standard-io.mdx | 17 +- .../docs/the-book}/4-script-arguments.md | 10 +- .../docs/the-book}/5-network-requests.mdx | 4 +- .../the-book}/6-files-and-directories.mdx | 61 +-- .../docs/the-book}/7-environment-variables.md | 8 +- src/content/docs/the-book/8-modules.mdx | 89 ++++ .../content/docs/the-book/9-task-scheduler.md | 48 +- 44 files changed, 1107 insertions(+), 1510 deletions(-) delete mode 100644 content/_meta.js delete mode 100644 content/api-reference/_meta.js delete mode 100644 content/api-reference/fs.md delete mode 100644 content/getting-started/2-introduction/1-hello-lune.md delete mode 100644 content/getting-started/2-introduction/8-modules.mdx delete mode 100644 content/getting-started/2-introduction/_meta.js delete mode 100644 content/getting-started/5-security.mdx delete mode 100644 content/getting-started/_meta.js delete mode 100644 content/roblox/3-remodel-migration.mdx delete mode 100644 content/roblox/_meta.js rename {content => src/content/docs}/api-reference/datetime.md (77%) create mode 100644 src/content/docs/api-reference/fs.md rename {content => src/content/docs}/api-reference/luau.md (64%) rename {content => src/content/docs}/api-reference/net.md (53%) rename {content => src/content/docs}/api-reference/process.md (65%) rename {content => src/content/docs}/api-reference/regex.md (62%) rename {content => src/content/docs}/api-reference/roblox.md (83%) rename {content => src/content/docs}/api-reference/serde.md (79%) rename {content => src/content/docs}/api-reference/stdio.md (69%) rename {content => src/content/docs}/api-reference/task.md (74%) rename {content => src/content/docs}/getting-started/1-installation.mdx (76%) rename content/getting-started/3-command-line-usage.md => src/content/docs/getting-started/2-command-line-usage.md (73%) rename content/getting-started/4-editor-setup.md => src/content/docs/getting-started/3-editor-setup.md (93%) create mode 100644 src/content/docs/getting-started/4-security.mdx delete mode 100644 src/content/docs/guides/example.md rename {content => src/content/docs}/index.md (91%) delete mode 100644 src/content/docs/index.mdx delete mode 100644 src/content/docs/reference/example.md rename {content => src/content/docs}/roblox/1-introduction.md (87%) rename {content => src/content/docs}/roblox/2-examples.md (96%) create mode 100644 src/content/docs/roblox/3-remodel-migration.mdx rename {content => src/content/docs}/roblox/4-api-status.md (98%) create mode 100644 src/content/docs/the-book/1-hello-lune.md rename {content/getting-started/2-introduction => src/content/docs/the-book}/10-spawning-processes.md (87%) rename {content/getting-started/2-introduction => src/content/docs/the-book}/2-built-in-libraries.md (71%) rename {content/getting-started/2-introduction => src/content/docs/the-book}/3-standard-io.mdx (93%) rename {content/getting-started/2-introduction => src/content/docs/the-book}/4-script-arguments.md (93%) rename {content/getting-started/2-introduction => src/content/docs/the-book}/5-network-requests.mdx (99%) rename {content/getting-started/2-introduction => src/content/docs/the-book}/6-files-and-directories.mdx (74%) rename {content/getting-started/2-introduction => src/content/docs/the-book}/7-environment-variables.md (95%) create mode 100644 src/content/docs/the-book/8-modules.mdx rename content/getting-started/2-introduction/9-task-scheduler.mdx => src/content/docs/the-book/9-task-scheduler.md (65%) diff --git a/astro.config.mjs b/astro.config.mjs index 9a81509..7d867af 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -16,15 +16,95 @@ export default defineConfig({ ], sidebar: [ { - label: "Guides", + label: "Getting Started", items: [ - // Each item here is one entry in the navigation menu. - { label: "Example Guide", slug: "guides/example" }, + { + label: "Installation", + slug: "getting-started/1-installation", + }, + { + label: "Command-Line Usage", + slug: "getting-started/2-command-line-usage", + }, + { + label: "Editor Setup", + slug: "getting-started/3-editor-setup", + }, + { + label: "Security", + slug: "getting-started/4-security", + }, ], }, { - label: "Reference", - autogenerate: { directory: "reference" }, + label: "The Lune Book", + items: [ + { + label: "1 ∙ Hello, Lune!", + slug: "the-book/1-hello-lune", + }, + { + label: "2 ∙ Built-In Libraries", + slug: "the-book/2-built-in-libraries", + }, + { + label: "3 ∙ Standard I/O", + slug: "the-book/3-standard-io", + }, + { + label: "4 ∙ Script Arguments", + slug: "the-book/4-script-arguments", + }, + { + label: "5 ∙ Network Requests", + slug: "the-book/5-network-requests", + }, + { + label: "6 ∙ Files & Directories", + slug: "the-book/6-files-and-directories", + }, + { + label: "7 ∙ Environment Variables", + slug: "the-book/7-environment-variables", + }, + { + label: "8 ∙ Modules", + slug: "the-book/8-modules", + }, + { + label: "9 ∙ The Task Scheduler", + slug: "the-book/9-task-scheduler", + }, + { + label: "10 ∙ Spawning Processes", + slug: "the-book/10-spawning-processes", + }, + ], + }, + { + label: "Roblox", + items: [ + { + label: "Introduction", + slug: "roblox/1-introduction", + }, + { + label: "Example Scripts", + slug: "roblox/2-examples", + }, + { + label: "Remodel Migration", + slug: "roblox/3-remodel-migration", + }, + { + label: "API Status", + slug: "roblox/4-api-status", + }, + ], + }, + { + label: "API Reference", + autogenerate: { directory: "api-reference" }, }, ], }), diff --git a/content/_meta.js b/content/_meta.js deleted file mode 100644 index b685fa0..0000000 --- a/content/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - index: "Home", - "getting-started": "Getting Started", - roblox: "Roblox", - "api-reference": "API Reference", -} diff --git a/content/api-reference/_meta.js b/content/api-reference/_meta.js deleted file mode 100644 index db3211e..0000000 --- a/content/api-reference/_meta.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - datetime: "DateTime", - fs: "FS", - luau: "Luau", - net: "Net", - process: "Process", - regex: "Regex", - roblox: "Roblox", - serde: "Serde", - stdio: "Stdio", - task: "Task", -} diff --git a/content/api-reference/fs.md b/content/api-reference/fs.md deleted file mode 100644 index 598038e..0000000 --- a/content/api-reference/fs.md +++ /dev/null @@ -1,279 +0,0 @@ -# FS - -Built-in library for filesystem access - -#### Example usage - -```lua -local fs = require("@lune/fs") - --- Reading a file -local myTextFile: string = fs.readFile("myFileName.txt") - --- Reading entries (files & dirs) in a directory -for _, entryName in fs.readDir("myDirName") do - if fs.isFile("myDirName/" .. entryName) then - print("Found file " .. entryName) - elseif fs.isDir("myDirName/" .. entryName) then - print("Found subdirectory " .. entryName) - end -end -``` - -## Functions - -### readFile - -Reads a file at `path`. - -An error will be thrown in the following situations: - -- `path` does not point to an existing file. -- The current process lacks permissions to read the file. -- Some other I/O error occurred. - -#### Parameters - -- `path` The path to the file to read - -#### Returns - -- The contents of the file - ---- - -### readDir - -Reads entries in a directory at `path`. - -An error will be thrown in the following situations: - -- `path` does not point to an existing directory. -- The current process lacks permissions to read the contents of the directory. -- Some other I/O error occurred. - -#### Parameters - -- `path` The directory path to search in - -#### Returns - -- A list of files & directories found - ---- - -### writeFile - -Writes to a file at `path`. - -An error will be thrown in the following situations: - -- The file's parent directory does not exist. -- The current process lacks permissions to write to the file. -- Some other I/O error occurred. - -#### Parameters - -- `path` The path of the file - -- `contents` The contents of the file - ---- - -### writeDir - -Creates a directory and its parent directories if they are missing. - -An error will be thrown in the following situations: - -- `path` already points to an existing file or directory. -- The current process lacks permissions to create the directory or its missing parents. -- Some other I/O error occurred. - -#### Parameters - -- `path` The directory to create - ---- - -### removeFile - -Removes a file. - -An error will be thrown in the following situations: - -- `path` does not point to an existing file. -- The current process lacks permissions to remove the file. -- Some other I/O error occurred. - -#### Parameters - -- `path` The file to remove - ---- - -### removeDir - -Removes a directory and all of its contents. - -An error will be thrown in the following situations: - -- `path` is not an existing and empty directory. -- The current process lacks permissions to remove the directory. -- Some other I/O error occurred. - -#### Parameters - -- `path` The directory to remove - ---- - -### metadata - -Gets metadata for the given path. - -An error will be thrown in the following situations: - -- The current process lacks permissions to read at `path`. -- Some other I/O error occurred. - -#### Parameters - -- `path` The path to get metadata for - -#### Returns - -- Metadata for the path - ---- - -### isFile - -Checks if a given path is a file. - -An error will be thrown in the following situations: - -- The current process lacks permissions to read at `path`. -- Some other I/O error occurred. - -#### Parameters - -- `path` The file path to check - -#### Returns - -- If the path is a file or not - ---- - -### isDir - -Checks if a given path is a directory. - -An error will be thrown in the following situations: - -- The current process lacks permissions to read at `path`. -- Some other I/O error occurred. - -#### Parameters - -- `path` The directory path to check - -#### Returns - -- If the path is a directory or not - ---- - -### move - -Moves a file or directory to a new path. - -Throws an error if a file or directory already exists at the target path. This can be bypassed by -passing `true` as the third argument, or a dictionary of options. Refer to the documentation for -`WriteOptions` for specific option keys and their values. - -An error will be thrown in the following situations: - -- The current process lacks permissions to read at `from` or write at `to`. -- The new path exists on a different mount point. -- Some other I/O error occurred. - -#### Parameters - -- `from` The path to move from - -- `to` The path to move to - -- `overwriteOrOptions` Options for the target path, such as if should be overwritten if it already - exists - ---- - -### copy - -Copies a file or directory recursively to a new path. - -Throws an error if a file or directory already exists at the target path. This can be bypassed by -passing `true` as the third argument, or a dictionary of options. Refer to the documentation for -`WriteOptions` for specific option keys and their values. - -An error will be thrown in the following situations: - -- The current process lacks permissions to read at `from` or write at `to`. -- Some other I/O error occurred. - -#### Parameters - -- `from` The path to copy from - -- `to` The path to copy to - -- `overwriteOrOptions` Options for the target path, such as if should be overwritten if it already - exists - ---- - -## Types - -### MetadataPermissions - -Permissions for the given file or directory. - -This is a dictionary that will contain the following values: - -- `readOnly` - If the target path is read-only or not - ---- - -### Metadata - -Metadata for the given file or directory. - -This is a dictionary that will contain the following values: - -- `kind` - If the target path is a `file`, `dir` or `symlink` -- `exists` - If the target path exists -- `createdAt` - The timestamp represented as a `DateTime` object at which the file or directory - was created -- `modifiedAt` - The timestamp represented as a `DateTime` object at which the file or directory - was last modified -- `accessedAt` - The timestamp represented as a `DateTime` object at which the file or directory - was last accessed -- `permissions` - Current permissions for the file or directory - -Note that timestamps are relative to the unix epoch, and may not be accurate if the system clock is -not accurate. - ---- - -### WriteOptions - -Options for filesystem APIs what write to files and/or directories. - -This is a dictionary that may contain one or more of the following values: - -- `overwrite` - If the target path should be overwritten or not, in the case that it already - exists - ---- diff --git a/content/getting-started/2-introduction/1-hello-lune.md b/content/getting-started/2-introduction/1-hello-lune.md deleted file mode 100644 index fcd899e..0000000 --- a/content/getting-started/2-introduction/1-hello-lune.md +++ /dev/null @@ -1,24 +0,0 @@ - - - -# Hello, Lune! - -Congratulations! Lune is now set up and you are ready to start writing scripts 🎉 - -If you've already written some kind of Lua (or Luau) script before, the examples provided in the -overview below should make you feel right at home. They are organized in order of least complex to -most complex, and you don't really have to read them all to understand how Lune works, though it may -help you out. Good luck! - -## Overview - -- `1` [Hello, Lune!](./1-hello-lune.md) (you are here) -- `2` [Built-in Libraries](./2-built-in-libraries.md) -- `3` [Standard I/O](./3-standard-io.mdx) -- `4` [Script Arguments](./4-script-arguments.md) -- `5` [Network Requests](./5-network-requests.mdx) -- `6` [Files & Directories](./6-files-and-directories.mdx) -- `7` [Environment Variables](./7-environment-variables.md) -- `8` [Modules](./8-modules.mdx) -- `9` [Task Scheduler](./9-task-scheduler.mdx) -- `10` [Spawning Processes](./10-spawning-processes.md) diff --git a/content/getting-started/2-introduction/8-modules.mdx b/content/getting-started/2-introduction/8-modules.mdx deleted file mode 100644 index 0320803..0000000 --- a/content/getting-started/2-introduction/8-modules.mdx +++ /dev/null @@ -1,85 +0,0 @@ -import { FileTree, Tabs, Tab, Callout } from "nextra/components"; - -# Modules - -At this point you know how the most important built-in libraries in Lune work and how to use them, -and your code is probably getting longer and more difficult to read. Splitting your code into -multiple files can help you stay organized. - -Modularizing your code and splitting it across several files in Lune is different from other -versions of Lua and Luau, and more similar to how things work in other languages such as JavaScript. - -## Example File Tree - -Let's use this directory & file tree structure for our examples: - - - - - - - - - - - - - - - ```luau copy filename="main.luau" - local sibling = require("sibling") - local modules = require("modules") - - print(sibling.Hello) --> World - - print(modules.Module.Foo) --> Bar - print(modules.Module.Fizz) --> Buzz - - print(modules.Sibling.Hello) --> World - ``` - - - ```luau copy filename="sibling.luau" - return { - Hello = "World", - } - ``` - - - ```luau copy filename="modules/init.luau" - return { - Module = require("module"), - Sibling = require("../sibling"), - } - ``` - - - ```luau copy filename="modules/module.luau" - return { - Foo = "Bar", - Fizz = "Buzz", - } - ``` - - - - -## File Require Statements - -Let's decipher these files and what they are doing: - -- The `main` script requires `sibling` and `modules` next to it -- The `modules/init` script requires `module` next to it, and `sibling` going up one directory - using `../` - -In the above `require` statements, we can see that are relative to the file that they are in, and in -Lune this is always the case, except for built-in libraries, which always start with an at sign -(`@`). - - - **Q:** Wait, hold on... The `main` script requires the _**directory**_ - called `modules`?
- **A:** Yep, that's right. The file name `init` is special, and putting a - file named `init.luau` in a directory will let you use `require` directly on - the directory. Similar to `index.js` in JavaScript or `mod.rs` in Rust. -
diff --git a/content/getting-started/2-introduction/_meta.js b/content/getting-started/2-introduction/_meta.js deleted file mode 100644 index f1d7102..0000000 --- a/content/getting-started/2-introduction/_meta.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - "1-hello-lune": "1 • Hello, Lune!", - "2-built-in-libraries": "2 • Built-in Libraries", - "3-standard-io": "3 • Standard I/O", - "4-script-arguments": "4 • Script Arguments", - "5-network-requests": "5 • Network Requests", - "6-files-and-directories": "6 • Files & Directories", - "7-environment-variables": "7 • Environment Variables", - "8-modules": "8 • Modules", - "9-task-scheduler": "9 • Task Scheduler", - "10-spawning-processes": "10 • Spawning Processes", -} diff --git a/content/getting-started/5-security.mdx b/content/getting-started/5-security.mdx deleted file mode 100644 index 200051b..0000000 --- a/content/getting-started/5-security.mdx +++ /dev/null @@ -1,199 +0,0 @@ -import { Steps } from "nextra/components"; - -# Security - -When running lune scripts, it is important to note that any scripts you execute have full access to -your device, including access to your files, programs, and more. Therefore, it is important to stay -cautious when executing a script from a source you don't trust. - -If you are unsure what a script does, it is recommended to run the script in a -[sandboxed]() environment to evaluate what -it does. - -Lune does not include a built-in permissions sandbox, but the following luau script, which utilizes -the [@lune/luau](/api-reference/luau) library can be used for rudimentary sandboxing. It should be noted -that this **does not** guarantee security, and if necessary, you should be running Lune using a containerized -environment such as Docker. - - - -### Step 1 - -Copy the source below and place it in a file named `sandbox.luau`: - -

-Click to expand - -```lua copy -local datetime = require("@lune/datetime") -local fs = require("@lune/fs") -local luau = require("@lune/luau") -local net = require("@lune/net") -local process = require("@lune/process") -local regex = require("@lune/regex") -local roblox = require("@lune/roblox") -local serde = require("@lune/serde") -local stdio = require("@lune/stdio") -local task = require("@lune/task") - -local processArgs = table.clone(process.args) -local filePath: string = table.remove(processArgs, 1) - or error("usage: lune run sandbox [SCRIPT_PATH] -- [ARGS]") - -local DEFAULT_PRINT = print -local SANDBOXED_ENV = { - debugName = filePath, - environment = { - require = nil, - getfenv = nil, - setfenv = nil, - print = nil, - warn = nil, - }, -} - -local PROMPT_MSG_TMPL = `allow {SANDBOXED_ENV.debugName} to access %s?` -local DENIED_ERR_TMPL = `{SANDBOXED_ENV.debugName} tried to access disallowed library %s!` - -local function discoverAndReadScript(filePath: string): string - local scriptContents: string - - if fs.isFile(filePath) then - scriptContents = fs.readFile(filePath) - return scriptContents - end - - if fs.isDir(filePath) then - if fs.isFile(filePath .. "/init.luau") then - scriptContents = fs.readFile(filePath .. "/init.luau") - end - - if fs.isFile(filePath .. "/init.lua") then - scriptContents = fs.readFile(filePath .. "/init.lua") - end - end - - if scriptContents == nil then - for _, ext in { ".luau", ".lua" } do - local filePathExt = filePath .. ext - if fs.isFile(filePathExt) then - scriptContents = fs.readFile(filePathExt) - end - end - - if scriptContents == nil then - error(`No such file or directory \`{filePath}\``) - end - end - - return scriptContents -end - -local function sandboxGetfenv(): {} - if table.isfrozen(SANDBOXED_ENV) then - return SANDBOXED_ENV.environment - end - - return {} -end - -local function sandboxSetfenv(env: {}): never - error("cannot call setfenv from sandbox") -end - -local function sandboxPrint(...: any) - DEFAULT_PRINT(`---- Output from {SANDBOXED_ENV.debugName} ----`) - DEFAULT_PRINT(tostring(...)) - DEFAULT_PRINT(`---------------------------------------`) -end - -local function constructProtectedMt(library: T) - return { - __index = library, - __metatable = "Locked", - __tostring = function() - return stdio.format(library) - end, - } -end - -local SANDBOXED_LUNE_STD_LIB = { - ["@lune/fs"] = setmetatable({}, constructProtectedMt(fs)), - ["@lune/luau"] = setmetatable({}, constructProtectedMt(luau)), - ["@lune/process"] = setmetatable({}, constructProtectedMt(process)), - ["@lune/stdio"] = setmetatable({ - write = sandboxPrint, - ewrite = sandboxPrint, - }, constructProtectedMt(stdio)), - ["@lune/net"] = setmetatable({}, constructProtectedMt(net)), - ["@lune/roblox"] = setmetatable({ - getAuthCookie = function(...) - local allowAuthCookie: boolean = stdio.prompt( - "confirm", - `allow {SANDBOXED_ENV.debugName} to access your .ROBLOSECURITY token?` - ) - - if allowAuthCookie then - local getAuthCookie = require("@lune/roblox").getAuthCookie - return getAuthCookie(...) - end - - error( - `{SANDBOXED_ENV.debugName} attempted to access .ROBLOSECURITY token even when denied` - ) - end, - }, constructProtectedMt(roblox)), - ["@lune/serde"] = serde, - ["@lune/task"] = task, - ["@lune/regex"] = regex, - ["@lune/datetime"] = datetime, -} - -local function sandboxedRequire(path: string) - local module = SANDBOXED_LUNE_STD_LIB[path] - - if module then - local allowed: boolean = stdio.prompt("confirm", string.format(PROMPT_MSG_TMPL, path)) - - if allowed then - return module - end - - error(string.format(DENIED_ERR_TMPL, path)) - else - local contents = discoverAndReadScript(path) - - local evalChunk = luau.load(contents, SANDBOXED_ENV) - return evalChunk() - end -end - -SANDBOXED_ENV.environment.require = sandboxedRequire -SANDBOXED_ENV.environment.getfenv = sandboxGetfenv -SANDBOXED_ENV.environment.setfenv = sandboxSetfenv -SANDBOXED_ENV.environment.print = sandboxPrint -SANDBOXED_ENV.environment.warn = sandboxPrint -luau.load(discoverAndReadScript(filePath), table.freeze(SANDBOXED_ENV))() -``` - -
- -### Step 2 - -Now, place the untrusted script you want to run safely next to the `sandbox.luau` script. - -```sh copy filename="Bash" -lune run sandbox.luau script.luau -- [ARGUMENTS_HERE] -``` - -Replace `script.luau` and `[ARGUMENTS_HERE]` with the path to the script and the arguments to run -it with. - -### Step 3 - -As the script runs, any requires to potentially dangerous modules will require your approval -before continuing and any invocations to methods within approved modules will be logged. - -Furthermore, the output of the sandbox script and the script being run will be separated. - - diff --git a/content/getting-started/_meta.js b/content/getting-started/_meta.js deleted file mode 100644 index 2fb2586..0000000 --- a/content/getting-started/_meta.js +++ /dev/null @@ -1,7 +0,0 @@ -export default { - "1-installation": "Installation", - "2-introduction": "Introduction", - "3-command-line-usage": "Command-Line Usage", - "4-editor-setup": "Editor Setup", - "5-security": "Security", -} diff --git a/content/roblox/3-remodel-migration.mdx b/content/roblox/3-remodel-migration.mdx deleted file mode 100644 index 2d5d276..0000000 --- a/content/roblox/3-remodel-migration.mdx +++ /dev/null @@ -1,420 +0,0 @@ -import { Steps } from "nextra/components"; - -# Migrating from Remodel - -If you have used [Remodel](https://github.com/rojo-rbx/remodel) before to manipulate place and/or -model files, this migration guide will help you get started with accomplishing the same tasks in -Lune. - -## Drop-in Compatibility - -This guide provides a module which translates all of the relevant Lune APIs to their Remodel -equivalents. For more details or manual migration steps, check out -[Differences Between Lune & Remodel](#differences-between-lune--remodel) below. - - - -### Step 1 - -Copy the source below and place it in a file named `remodel.luau`: - -
-Click to expand - -```luau copy ---!strict - -local fs = require("@lune/fs") -local net = require("@lune/net") -local serde = require("@lune/serde") -local process = require("@lune/process") -local roblox = require("@lune/roblox") - -export type LuneDataModel = roblox.DataModel -export type LuneInstance = roblox.Instance - -local function getAuthCookieWithFallbacks() - local cookie = roblox.getAuthCookie() - if cookie then - return cookie - end - - local cookieFromEnv = process.env.REMODEL_AUTH - if cookieFromEnv and #cookieFromEnv > 0 then - return `.ROBLOSECURITY={cookieFromEnv}` - end - - for index, arg in process.args do - if arg == "--auth" then - local cookieFromArgs = process.args[index + 1] - if cookieFromArgs and #cookieFromArgs > 0 then - return `.ROBLOSECURITY={cookieFromArgs}` - end - break - end - end - - error([[ - Failed to find ROBLOSECURITY cookie for authentication! - Make sure you have logged into studio, or set the ROBLOSECURITY environment variable. - ]]) -end - -local function downloadAssetId(assetId: number) - -- 1. Try to find the auth cookie for the current user - local cookie = getAuthCookieWithFallbacks() - - -- 2. Send a request to the asset delivery API, - -- which will respond with cdn download link(s) - local assetApiResponse = net.request({ - url = `https://assetdelivery.roblox.com/v2/assetId/{assetId}`, - headers = { - Accept = "application/json", - Cookie = cookie, - }, - }) - if not assetApiResponse.ok then - error( - string.format( - "Failed to fetch asset download link for asset id %s!\n%s (%s)\n%s", - tostring(assetId), - tostring(assetApiResponse.statusCode), - tostring(assetApiResponse.statusMessage), - tostring(assetApiResponse.body) - ) - ) - end - - -- 3. Make sure we got a valid response body - local assetApiBody = serde.decode("json", assetApiResponse.body) - if type(assetApiBody) ~= "table" then - error( - string.format( - "Asset delivery API returned an invalid response body!\n%s", - assetApiResponse.body - ) - ) - elseif type(assetApiBody.locations) ~= "table" then - error( - string.format( - "Asset delivery API returned an invalid response body!\n%s", - assetApiResponse.body - ) - ) - end - - -- 4. Grab the first asset download location - we only - -- requested one in our query, so this will be correct - local firstLocation = assetApiBody.locations[1] - if type(firstLocation) ~= "table" then - error( - string.format( - "Asset delivery API returned no download locations!\n%s", - assetApiResponse.body - ) - ) - elseif type(firstLocation.location) ~= "string" then - error( - string.format( - "Asset delivery API returned no valid download locations!\n%s", - assetApiResponse.body - ) - ) - end - - -- 5. Fetch the place contents from the cdn - local cdnResponse = net.request({ - url = firstLocation.location, - headers = { - Cookie = cookie, - }, - }) - if not cdnResponse.ok then - error( - string.format( - "Failed to download asset with id %s from the Roblox cdn!\n%s (%s)\n%s", - tostring(assetId), - tostring(cdnResponse.statusCode), - tostring(cdnResponse.statusMessage), - tostring(cdnResponse.body) - ) - ) - end - - -- 6. The response body should now be the contents of the asset file - return cdnResponse.body -end - -local function uploadAssetId(assetId: number, contents: string) - -- 1. Try to find the auth cookie for the current user - local cookie = getAuthCookieWithFallbacks() - - -- 2. Use a different endpoint to fetch a valid CSRF token - local csrfHeaders = { - ["User-Agent"] = "Roblox/WinInet", - Accept = "application/json", - Cookie = cookie, - } - - local csrfResponse = net.request({ - url = `https://auth.roblox.com/`, - body = contents, - method = "POST", - headers = csrfHeaders, - }) - - local csrfToken = csrfResponse.headers["x-csrf-token"] - if csrfToken == nil then error('Failed to fetch CSRF token.') end - - -- 3. Upload the asset to Roblox - local uploadHeaders = { - ["User-Agent"] = "Roblox/WinInet", - ["Content-Type"] = "application/octet-stream", - ['X-CSRF-Token'] = csrfToken, - Accept = "application/json", - Cookie = cookie, - } - - local uploadResponse = net.request({ - url = `https://data.roblox.com/Data/Upload.ashx?assetid={assetId}`, - body = contents, - method = "POST", - headers = uploadHeaders, - }) - - -- 4. Make sure it uploaded properly - if not uploadResponse.ok then - error( - string.format( - "Failed to upload asset with id %s to Roblox!\n%s (%s)\n%s", - tostring(assetId), - tostring(uploadResponse.statusCode), - tostring(uploadResponse.statusMessage), - tostring(uploadResponse.body) - ) - ) - end -end - -local remodel = {} - ---[=[ - Load an `rbxl` or `rbxlx` file from the filesystem. - - Returns a `DataModel` instance, equivalent to `game` from within Roblox. -]=] -function remodel.readPlaceFile(filePath: string) - local placeFile = fs.readFile(filePath) - local place = roblox.deserializePlace(placeFile) - return place -end - ---[=[ - Load an `rbxm` or `rbxmx` file from the filesystem. - - Note that this function returns a **list of instances** instead of a single instance! - This is because models can contain mutliple top-level instances. -]=] -function remodel.readModelFile(filePath: string) - local modelFile = fs.readFile(filePath) - local model = roblox.deserializeModel(modelFile) - return model -end - ---[=[ - Reads a place asset from Roblox, equivalent to `remodel.readPlaceFile`. - - ***NOTE:** This function requires authentication using a ROBLOSECURITY cookie!* -]=] -function remodel.readPlaceAsset(assetId: number) - local contents = downloadAssetId(assetId) - local place = roblox.deserializePlace(contents) - return place -end - ---[=[ - Reads a model asset from Roblox, equivalent to `remodel.readModelFile`. - - ***NOTE:** This function requires authentication using a ROBLOSECURITY cookie!* -]=] -function remodel.readModelAsset(assetId: number) - local contents = downloadAssetId(assetId) - local place = roblox.deserializeModel(contents) - return place -end - ---[=[ - Saves an `rbxl` or `rbxlx` file out of the given `DataModel` instance. - - If the instance is not a `DataModel`, this function will throw. - Models should be saved with `writeModelFile` instead. -]=] -function remodel.writePlaceFile(filePath: string, dataModel: LuneDataModel) - local asBinary = string.sub(filePath, -5) == ".rbxl" - local asXml = string.sub(filePath, -6) == ".rbxlx" - assert(asBinary or asXml, "File path must have .rbxl or .rbxlx extension") - local placeFile = roblox.serializePlace(dataModel, asXml) - fs.writeFile(filePath, placeFile) -end - ---[=[ - Saves an `rbxm` or `rbxmx` file out of the given `Instance`. - - If the instance is a `DataModel`, this function will throw. - Places should be saved with `writePlaceFile` instead. -]=] -function remodel.writeModelFile(filePath: string, instance: LuneInstance) - local asBinary = string.sub(filePath, -5) == ".rbxm" - local asXml = string.sub(filePath, -6) == ".rbxmx" - assert(asBinary or asXml, "File path must have .rbxm or .rbxmx extension") - local placeFile = roblox.serializeModel({ instance }, asXml) - fs.writeFile(filePath, placeFile) -end - ---[=[ - Uploads the given `DataModel` instance to Roblox, overwriting an existing place. - - If the instance is not a `DataModel`, this function will throw. - Models should be uploaded with `writeExistingModelAsset` instead. - - ***NOTE:** This function requires authentication using a ROBLOSECURITY cookie!* -]=] -function remodel.writeExistingPlaceAsset(dataModel: LuneDataModel, assetId: number) - local placeFile = roblox.serializePlace(dataModel) - uploadAssetId(assetId, placeFile) -end - ---[=[ - Uploads the given instance to Roblox, overwriting an existing model. - - If the instance is a `DataModel`, this function will throw. - Places should be uploaded with `writeExistingPlaceAsset` instead. - - ***NOTE:** This function requires authentication using a ROBLOSECURITY cookie!* -]=] -function remodel.writeExistingModelAsset(instance: LuneInstance, assetId: number) - local modelFile = roblox.serializeModel({ instance }) - uploadAssetId(assetId, modelFile) -end - -remodel.readFile = fs.readFile -remodel.readDir = fs.readDir -remodel.writeFile = fs.writeFile -remodel.createDirAll = fs.writeDir -remodel.removeFile = fs.removeFile -remodel.removeDir = fs.removeDir -remodel.isFile = fs.isFile -remodel.isDir = fs.isDir - -return remodel -``` - -
- -This module is quite large, but you will not need to read through it unless you want to know about -the internal details of how Remodel used to work. - -### Step 2 - -Next, create another script next to your `remodel.luau`. We will be naming it `example.luau`, but -you can name it whatever you want. This example code is from one of the previous Remodel-native -example scripts, with only the top line added: - -```luau copy -local remodel = require("./remodel") - --- One use for Remodel is to move the terrain of one place into another place. -local inputGame = remodel.readPlaceFile("input-place.rbxlx") -local outputGame = remodel.readPlaceFile("output-place.rbxlx") - --- This isn't possible inside Roblox, but works just fine in Remodel! -outputGame.Workspace.Terrain:Destroy() -inputGame.Workspace.Terrain.Parent = outputGame.Workspace - -remodel.writePlaceFile("output-place-updated.rbxlx", outputGame) -``` - -### Step 3 - -Finally, run the script you've created by providing the script name to Lune, in our case `example`, -without the luau file extension. Everything should work the same way it did when running natively in -Remodel, now running in Lune 🚀 - -```sh copy -lune run example -``` - -
- -## Differences Between Lune & Remodel - -Most APIs previously found in Remodel have direct equivalents in Lune, below are some direct links -to APIs that are equivalent or very similar. - -
-Places & Models - -- `remodel.readPlaceFile` ➡ [`fs.readFile`](../api-reference/fs.md#readfile) & - [`roblox.deserializePlace`](../api-reference/roblox.md#deserializeplace) -- `remodel.readModelFile` ➡ [`fs.readFile`](../api-reference/fs.md#readfile) & - [`roblox.deserializeModel`](../api-reference/roblox.md#deserializemodel) -- `remodel.readPlaceAsset` ➡ [`net.request`](../api-reference/net.md#request) & - [`roblox.deserializePlace`](../api-reference/roblox.md#deserializeplace) -- `remodel.readModelAsset` ➡ [`net.request`](../api-reference/net.md#request) & - [`roblox.deserializeModel`](../api-reference/roblox.md#deserializemodel) -- `remodel.writePlaceFile` ➡ [`roblox.serializePlace`](../api-reference/roblox.md#serializeplace) - & [`fs.writeFile`](../api-reference/fs.md#writefile) -- `remodel.writeModelFile` ➡ [`roblox.serializeModel`](../api-reference/roblox.md#serializemodel) - & [`fs.writeFile`](../api-reference/fs.md#writefile) -- `remodel.writeExistingPlaceAsset` ➡ - [`roblox.serializePlace`](../api-reference/roblox.md#serializeplace) & - [`net.request`](../api-reference/net.md#request) -- `remodel.writeExistingModelAsset` ➡ - [`roblox.serializeModel`](../api-reference/roblox.md#serializemodel) & - [`net.request`](../api-reference/net.md#request) -- `remodel.getRawProperty` ➡ no equivalent, you can get properties directly by indexing -- `remodel.setRawProperty` ➡ no equivalent, you can set properties directly by indexing - -
- -
-Files & Directories - -- `remodel.readFile` ➡ [`fs.readFile`](../api-reference/fs.md#readfile) -- `remodel.readDir` ➡ [`fs.readDir`](../api-reference/fs.md#readdir) -- `remodel.writeFile` ➡ [`fs.writeFile`](../api-reference/fs.md#writefile) -- `remodel.createDirAll` ➡ [`fs.writeDir`](../api-reference/fs.md#writedir) -- `remodel.removeFile` ➡ [`fs.removeFile`](../api-reference/fs.md#removefile) -- `remodel.removeDir` ➡ [`fs.removeDir`](../api-reference/fs.md#removedir) -- `remodel.isFile` ➡ [`fs.isFile`](../api-reference/fs.md#isfile) -- `remodel.isDir` ➡ [`fs.isDir`](../api-reference/fs.md#isdir) - -
- -
-JSON - -- `json.fromString` ➡ [`serde.decode`](../api-reference/serde.md#decode) -- `json.toString` ➡ [`serde.encode`](../api-reference/serde.md#encode) -- `json.toStringPretty` ➡ [`serde.encode`](../api-reference/serde.md#encode) - -
- -Since Lune is meant to be a general-purpose Luau runtime, there are also some more general -differences, and Lune takes a different approach from Remodel in certain areas: - -- Lune runs Luau instead of Lua 5.3. -- APIs are more loosely coupled, meaning that a task may require more steps using Lune. This also - means that Lune is more flexible and supports more use cases. -- Built-in libraries are not accessible from global variables, you have to explicitly import them - using `require("@lune/library-name")`. -- Arguments given to scripts are not available in `...`, you have to use - [`process.args`](../api-reference/process.md#args) instead. -- Lune generally supports all of the Roblox datatypes that are gettable/settable on instance - properties. For a full list of available datatypes, check out the - [API Status](./4-api-status.md) page. - ---- - -There may be more differences than are listed here, and the Lune-specific guides and examples may -provide more info, but this should be all you need to know to migrate from Remodel. Good luck! diff --git a/content/roblox/_meta.js b/content/roblox/_meta.js deleted file mode 100644 index 92c1715..0000000 --- a/content/roblox/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - "1-introduction": "Introduction", - "2-examples": "Examples", - "3-remodel-migration": "Migrating from Remodel", - "4-api-status": "API Status", -} diff --git a/src/content.config.ts b/src/content.config.ts index d9ee8c9..a3a3642 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -1,6 +1,6 @@ -import { defineCollection } from 'astro:content'; -import { docsLoader } from '@astrojs/starlight/loaders'; -import { docsSchema } from '@astrojs/starlight/schema'; +import { defineCollection } from "astro:content"; +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; export const collections = { docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), diff --git a/content/api-reference/datetime.md b/src/content/docs/api-reference/datetime.md similarity index 77% rename from content/api-reference/datetime.md rename to src/content/docs/api-reference/datetime.md index e391e0e..9b2b25c 100644 --- a/content/api-reference/datetime.md +++ b/src/content/docs/api-reference/datetime.md @@ -1,4 +1,6 @@ -# DateTime +--- +title: DateTime +--- Built-in library for date & time @@ -48,7 +50,7 @@ Returns a `DateTime` representing the current moment in time. #### Returns -- `DateTime` The new DateTime object +- `DateTime` The new DateTime object --- @@ -61,19 +63,19 @@ milliseconds / nanoseconds. Example usage of fractions: -- `DateTime.fromUnixTimestamp(123456789.001)` - one millisecond -- `DateTime.fromUnixTimestamp(123456789.000000001)` - one nanosecond +- `DateTime.fromUnixTimestamp(123456789.001)` - one millisecond +- `DateTime.fromUnixTimestamp(123456789.000000001)` - one nanosecond Note that the fractional part has limited precision down to exactly one nanosecond, any fraction that is more precise will get truncated. #### Parameters -- `unixTimestamp` `number` Seconds passed since the UNIX epoch +- `unixTimestamp` `number` Seconds passed since the UNIX epoch #### Returns -- `DateTime` The new DateTime object +- `DateTime` The new DateTime object --- @@ -101,16 +103,16 @@ Any non-integer values in the given table will be rounded down. This constructor is fallible and may throw an error in the following situations: -- Date units (year, month, day) were given that produce an invalid date. For example, January 32nd - or February 29th on a non-leap year. +- Date units (year, month, day) were given that produce an invalid date. For example, January 32nd + or February 29th on a non-leap year. #### Parameters -- `values` `DateTimeValueArguments` Table containing date & time values +- `values` `DateTimeValueArguments` Table containing date & time values #### Returns -- `DateTime` The new DateTime object +- `DateTime` The new DateTime object --- @@ -138,16 +140,16 @@ Any non-integer values in the given table will be rounded down. This constructor is fallible and may throw an error in the following situations: -- Date units (year, month, day) were given that produce an invalid date. For example, January 32nd - or February 29th on a non-leap year. +- Date units (year, month, day) were given that produce an invalid date. For example, January 32nd + or February 29th on a non-leap year. #### Parameters -- `values` `DateTimeValueArguments` Table containing date & time values +- `values` `DateTimeValueArguments` Table containing date & time values #### Returns -- `DateTime` The new DateTime object +- `DateTime` The new DateTime object --- @@ -162,17 +164,17 @@ ISO 8601 date-time string format. Some examples of valid ISO 8601 date-time strings are: -- `2020-02-22T18:12:08Z` -- `2000-01-31T12:34:56+05:00` -- `1970-01-01T00:00:00.055Z` +- `2020-02-22T18:12:08Z` +- `2000-01-31T12:34:56+05:00` +- `1970-01-01T00:00:00.055Z` #### Parameters -- `isoDate` `string` An ISO 8601 formatted string +- `isoDate` `string` An ISO 8601 formatted string #### Returns -- `DateTime` The new DateTime object +- `DateTime` The new DateTime object --- @@ -202,15 +204,15 @@ If not provided, `formatString` and `locale` will default to `"%Y-%m-%d %H:%M:%S #### Parameters -- `self` DateTime +- `self` DateTime -- `formatString` `string?` A string containing formatting tokens +- `formatString` `string?` A string containing formatting tokens -- `locale` `Locale?` The locale the time should be formatted in +- `locale` `Locale?` The locale the time should be formatted in #### Returns -- `string` The formatting string +- `string` The formatting string --- @@ -238,15 +240,15 @@ If not provided, `formatString` and `locale` will default to `"%Y-%m-%d %H:%M:%S #### Parameters -- `self` DateTime +- `self` DateTime -- `formatString` `string?` A string containing formatting tokens +- `formatString` `string?` A string containing formatting tokens -- `locale` `Locale?` The locale the time should be formatted in +- `locale` `Locale?` The locale the time should be formatted in #### Returns -- `string` The formatting string +- `string` The formatting string --- @@ -256,17 +258,17 @@ Formats this `DateTime` as an ISO 8601 date-time string. Some examples of ISO 8601 date-time strings are: -- `2020-02-22T18:12:08Z` -- `2000-01-31T12:34:56+05:00` -- `1970-01-01T00:00:00.055Z` +- `2020-02-22T18:12:08Z` +- `2000-01-31T12:34:56+05:00` +- `1970-01-01T00:00:00.055Z` #### Parameters -- `self` DateTime +- `self` DateTime #### Returns -- `string` The ISO 8601 formatted string +- `string` The ISO 8601 formatted string --- @@ -288,11 +290,11 @@ The returned table contains the following values: #### Parameters -- `self` DateTime +- `self` DateTime #### Returns -- `DateTimeValueReturns` A table of DateTime values +- `DateTimeValueReturns` A table of DateTime values --- @@ -314,11 +316,11 @@ The returned table contains the following values: #### Parameters -- `self` DateTime +- `self` DateTime #### Returns -- `DateTimeValueReturns` A table of DateTime values +- `DateTimeValueReturns` A table of DateTime values --- @@ -330,16 +332,16 @@ Enum type representing supported DateTime locales. Currently supported locales are: -- `en` - English -- `de` - German -- `es` - Spanish -- `fr` - French -- `it` - Italian -- `ja` - Japanese -- `pl` - Polish -- `pt-br` - Brazilian Portuguese -- `pt` - Portuguese -- `tr` - Turkish +- `en` - English +- `de` - German +- `es` - Spanish +- `fr` - French +- `it` - Italian +- `ja` - Japanese +- `pl` - Polish +- `pt-br` - Brazilian Portuguese +- `pt` - Portuguese +- `tr` - Turkish --- @@ -349,12 +351,12 @@ Individual date & time values, representing the primitives that make up a `DateT This is a dictionary that will contain the following values: -- `year` - Year(s), in the range 1400 -> 9999 -- `month` - Month(s), in the range 1 -> 12 -- `day` - Day(s), in the range 1 -> 31 -- `hour` - Hour(s), in the range 0 -> 23 -- `minute` - Minute(s), in the range 0 -> 59 -- `second` - Second(s), in the range 0 -> 60, where 60 is a leap second +- `year` - Year(s), in the range 1400 -> 9999 +- `month` - Month(s), in the range 1 -> 12 +- `day` - Day(s), in the range 1 -> 31 +- `hour` - Hour(s), in the range 0 -> 23 +- `minute` - Minute(s), in the range 0 -> 59 +- `second` - Second(s), in the range 0 -> 60, where 60 is a leap second An additional `millisecond` value may also be included, and should be within the range `0 -> 999`, but is optional. diff --git a/src/content/docs/api-reference/fs.md b/src/content/docs/api-reference/fs.md new file mode 100644 index 0000000..305791d --- /dev/null +++ b/src/content/docs/api-reference/fs.md @@ -0,0 +1,281 @@ +--- +title: FS +--- + +Built-in library for filesystem access + +#### Example usage + +```lua +local fs = require("@lune/fs") + +-- Reading a file +local myTextFile: string = fs.readFile("myFileName.txt") + +-- Reading entries (files & dirs) in a directory +for _, entryName in fs.readDir("myDirName") do + if fs.isFile("myDirName/" .. entryName) then + print("Found file " .. entryName) + elseif fs.isDir("myDirName/" .. entryName) then + print("Found subdirectory " .. entryName) + end +end +``` + +## Functions + +### readFile + +Reads a file at `path`. + +An error will be thrown in the following situations: + +- `path` does not point to an existing file. +- The current process lacks permissions to read the file. +- Some other I/O error occurred. + +#### Parameters + +- `path` The path to the file to read + +#### Returns + +- The contents of the file + +--- + +### readDir + +Reads entries in a directory at `path`. + +An error will be thrown in the following situations: + +- `path` does not point to an existing directory. +- The current process lacks permissions to read the contents of the directory. +- Some other I/O error occurred. + +#### Parameters + +- `path` The directory path to search in + +#### Returns + +- A list of files & directories found + +--- + +### writeFile + +Writes to a file at `path`. + +An error will be thrown in the following situations: + +- The file's parent directory does not exist. +- The current process lacks permissions to write to the file. +- Some other I/O error occurred. + +#### Parameters + +- `path` The path of the file + +- `contents` The contents of the file + +--- + +### writeDir + +Creates a directory and its parent directories if they are missing. + +An error will be thrown in the following situations: + +- `path` already points to an existing file or directory. +- The current process lacks permissions to create the directory or its missing parents. +- Some other I/O error occurred. + +#### Parameters + +- `path` The directory to create + +--- + +### removeFile + +Removes a file. + +An error will be thrown in the following situations: + +- `path` does not point to an existing file. +- The current process lacks permissions to remove the file. +- Some other I/O error occurred. + +#### Parameters + +- `path` The file to remove + +--- + +### removeDir + +Removes a directory and all of its contents. + +An error will be thrown in the following situations: + +- `path` is not an existing and empty directory. +- The current process lacks permissions to remove the directory. +- Some other I/O error occurred. + +#### Parameters + +- `path` The directory to remove + +--- + +### metadata + +Gets metadata for the given path. + +An error will be thrown in the following situations: + +- The current process lacks permissions to read at `path`. +- Some other I/O error occurred. + +#### Parameters + +- `path` The path to get metadata for + +#### Returns + +- Metadata for the path + +--- + +### isFile + +Checks if a given path is a file. + +An error will be thrown in the following situations: + +- The current process lacks permissions to read at `path`. +- Some other I/O error occurred. + +#### Parameters + +- `path` The file path to check + +#### Returns + +- If the path is a file or not + +--- + +### isDir + +Checks if a given path is a directory. + +An error will be thrown in the following situations: + +- The current process lacks permissions to read at `path`. +- Some other I/O error occurred. + +#### Parameters + +- `path` The directory path to check + +#### Returns + +- If the path is a directory or not + +--- + +### move + +Moves a file or directory to a new path. + +Throws an error if a file or directory already exists at the target path. This can be bypassed by +passing `true` as the third argument, or a dictionary of options. Refer to the documentation for +`WriteOptions` for specific option keys and their values. + +An error will be thrown in the following situations: + +- The current process lacks permissions to read at `from` or write at `to`. +- The new path exists on a different mount point. +- Some other I/O error occurred. + +#### Parameters + +- `from` The path to move from + +- `to` The path to move to + +- `overwriteOrOptions` Options for the target path, such as if should be overwritten if it already + exists + +--- + +### copy + +Copies a file or directory recursively to a new path. + +Throws an error if a file or directory already exists at the target path. This can be bypassed by +passing `true` as the third argument, or a dictionary of options. Refer to the documentation for +`WriteOptions` for specific option keys and their values. + +An error will be thrown in the following situations: + +- The current process lacks permissions to read at `from` or write at `to`. +- Some other I/O error occurred. + +#### Parameters + +- `from` The path to copy from + +- `to` The path to copy to + +- `overwriteOrOptions` Options for the target path, such as if should be overwritten if it already + exists + +--- + +## Types + +### MetadataPermissions + +Permissions for the given file or directory. + +This is a dictionary that will contain the following values: + +- `readOnly` - If the target path is read-only or not + +--- + +### Metadata + +Metadata for the given file or directory. + +This is a dictionary that will contain the following values: + +- `kind` - If the target path is a `file`, `dir` or `symlink` +- `exists` - If the target path exists +- `createdAt` - The timestamp represented as a `DateTime` object at which the file or directory + was created +- `modifiedAt` - The timestamp represented as a `DateTime` object at which the file or directory + was last modified +- `accessedAt` - The timestamp represented as a `DateTime` object at which the file or directory + was last accessed +- `permissions` - Current permissions for the file or directory + +Note that timestamps are relative to the unix epoch, and may not be accurate if the system clock is +not accurate. + +--- + +### WriteOptions + +Options for filesystem APIs what write to files and/or directories. + +This is a dictionary that may contain one or more of the following values: + +- `overwrite` - If the target path should be overwritten or not, in the case that it already + exists + +--- diff --git a/content/api-reference/luau.md b/src/content/docs/api-reference/luau.md similarity index 64% rename from content/api-reference/luau.md rename to src/content/docs/api-reference/luau.md index 80a8369..0c1d012 100644 --- a/content/api-reference/luau.md +++ b/src/content/docs/api-reference/luau.md @@ -1,4 +1,6 @@ -# Luau +--- +title: Luau +--- Built-in library for generating luau bytecode & functions. @@ -42,13 +44,13 @@ local bytecode = luau.compile("print('Hello, World!')", { #### Parameters -- `source` The string that will be compiled into bytecode +- `source` The string that will be compiled into bytecode -- `compileOptions` The options passed to the luau compiler that will output the bytecode +- `compileOptions` The options passed to the luau compiler that will output the bytecode #### Returns -- luau bytecode +- luau bytecode --- @@ -73,13 +75,13 @@ callableFn() #### Parameters -- `source` Either luau bytecode or string source code +- `source` Either luau bytecode or string source code -- `loadOptions` The options passed to luau for loading the chunk +- `loadOptions` The options passed to luau for loading the chunk #### Returns -- luau chunk +- luau chunk --- @@ -91,9 +93,9 @@ The options passed to the luau compiler while compiling bytecode. This is a dictionary that may contain one or more of the following values: -- `optimizationLevel` - Sets the compiler option "optimizationLevel". Defaults to `1`. -- `coverageLevel` - Sets the compiler option "coverageLevel". Defaults to `0`. -- `debugLevel` - Sets the compiler option "debugLevel". Defaults to `1`. +- `optimizationLevel` - Sets the compiler option "optimizationLevel". Defaults to `1`. +- `coverageLevel` - Sets the compiler option "coverageLevel". Defaults to `0`. +- `debugLevel` - Sets the compiler option "debugLevel". Defaults to `1`. Documentation regarding what these values represent can be found [here](https://github.com/Roblox/luau/blob/bd229816c0a82a8590395416c81c333087f541fd/Compiler/include/luacode.h#L13-L39). @@ -106,11 +108,11 @@ The options passed while loading a luau chunk from an arbitrary string, or bytec This is a dictionary that may contain one or more of the following values: -- `debugName` - The debug name of the closure. Defaults to `luau.load(...)`. -- `environment` - A custom environment to load the chunk in. Setting a custom environment will - deoptimize the chunk and forcefully disable codegen. Defaults to the global environment. -- `injectGlobals` - Whether or not to inject globals in the custom environment. Has no effect if - no custom environment is provided. Defaults to `true`. -- `codegenEnabled` - Whether or not to enable codegen. Defaults to `false`. +- `debugName` - The debug name of the closure. Defaults to `luau.load(...)`. +- `environment` - A custom environment to load the chunk in. Setting a custom environment will + deoptimize the chunk and forcefully disable codegen. Defaults to the global environment. +- `injectGlobals` - Whether or not to inject globals in the custom environment. Has no effect if + no custom environment is provided. Defaults to `true`. +- `codegenEnabled` - Whether or not to enable codegen. Defaults to `false`. --- diff --git a/content/api-reference/net.md b/src/content/docs/api-reference/net.md similarity index 53% rename from content/api-reference/net.md rename to src/content/docs/api-reference/net.md index 3c5f285..df61515 100644 --- a/content/api-reference/net.md +++ b/src/content/docs/api-reference/net.md @@ -1,4 +1,6 @@ -# Net +--- +title: Net +--- Built-in library for network access @@ -46,11 +48,11 @@ codes. #### Parameters -- `config` The URL or request config to use +- `config` The URL or request config to use #### Returns -- A dictionary representing the response for the request +- A dictionary representing the response for the request --- @@ -63,11 +65,11 @@ network or I/O error occurs. #### Parameters -- `url` The URL to connect to +- `url` The URL to connect to #### Returns -- A web socket handle +- A web socket handle --- @@ -80,13 +82,13 @@ function on the returned `ServeHandle` has been called. #### Parameters -- `port` The port to use for the server +- `port` The port to use for the server -- `handlerOrConfig` The handler function or config to use for the server +- `handlerOrConfig` The handler function or config to use for the server #### Returns -- ServeHandle +- ServeHandle --- @@ -96,13 +98,13 @@ Encodes the given value as JSON. #### Parameters -- `value` The value to encode as JSON +- `value` The value to encode as JSON -- `pretty` If the encoded JSON string should include newlines and spaces. Defaults to false +- `pretty` If the encoded JSON string should include newlines and spaces. Defaults to false #### Returns -- The encoded JSON string +- The encoded JSON string --- @@ -112,11 +114,11 @@ Decodes the given JSON string into a lua value. #### Parameters -- `encoded` The JSON string to decode +- `encoded` The JSON string to decode #### Returns -- The decoded lua value +- The decoded lua value --- @@ -126,14 +128,14 @@ Encodes the given string using URL encoding. #### Parameters -- `s` The string to encode +- `s` The string to encode -- `binary` If the string should be treated as binary data and/or is not valid utf-8. Defaults to - false +- `binary` If the string should be treated as binary data and/or is not valid utf-8. Defaults to + false #### Returns -- The encoded string +- The encoded string --- @@ -143,14 +145,14 @@ Decodes the given string using URL decoding. #### Parameters -- `s` The string to decode +- `s` The string to decode -- `binary` If the string should be treated as binary data and/or is not valid utf-8. Defaults to - false +- `binary` If the string should be treated as binary data and/or is not valid utf-8. Defaults to + false #### Returns -- The decoded string +- The decoded string --- @@ -162,8 +164,8 @@ Extra options for `FetchParams`. This is a dictionary that may contain one or more of the following values: -- `decompress` - If the request body should be automatically decompressed when possible. Defaults - to `true` +- `decompress` - If the request body should be automatically decompressed when possible. Defaults + to `true` --- @@ -173,13 +175,13 @@ Parameters for sending network requests with `net.request`. This is a dictionary that may contain one or more of the following values: -- `url` - The URL to send a request to. This is always required -- `method` - The HTTP method verb, such as `"GET"`, `"POST"`, `"PATCH"`, `"PUT"`, or `"DELETE"`. - Defaults to `"GET"` -- `body` - The request body -- `query` - A table of key-value pairs representing query parameters in the request path -- `headers` - A table of key-value pairs representing headers -- `options` - Extra options for things such as automatic decompression of response bodies +- `url` - The URL to send a request to. This is always required +- `method` - The HTTP method verb, such as `"GET"`, `"POST"`, `"PATCH"`, `"PUT"`, or `"DELETE"`. + Defaults to `"GET"` +- `body` - The request body +- `query` - A table of key-value pairs representing query parameters in the request path +- `headers` - A table of key-value pairs representing headers +- `options` - Extra options for things such as automatic decompression of response bodies --- @@ -189,13 +191,13 @@ Response type for sending network requests with `net.request`. This is a dictionary containing the following values: -- `ok` - If the status code is a canonical success status code, meaning within the range 200 -> - 299 -- `statusCode` - The status code returned for the request -- `statusMessage` - The canonical status message for the returned status code, such as - `"Not Found"` for status code 404 -- `headers` - A table of key-value pairs representing headers -- `body` - The request body, or an empty string if one was not given +- `ok` - If the status code is a canonical success status code, meaning within the range 200 -> + 299 +- `statusCode` - The status code returned for the request +- `statusMessage` - The canonical status message for the returned status code, such as + `"Not Found"` for status code 404 +- `headers` - A table of key-value pairs representing headers +- `body` - The request body, or an empty string if one was not given --- @@ -205,12 +207,12 @@ Data type for requests in `net.serve`. This is a dictionary containing the following values: -- `path` - The path being requested, relative to the root. Will be `/` if not specified -- `query` - A table of key-value pairs representing query parameters in the request path -- `method` - The HTTP method verb, such as `"GET"`, `"POST"`, `"PATCH"`, `"PUT"`, or `"DELETE"`. - Will always be uppercase -- `headers` - A table of key-value pairs representing headers -- `body` - The request body, or an empty string if one was not given +- `path` - The path being requested, relative to the root. Will be `/` if not specified +- `query` - A table of key-value pairs representing query parameters in the request path +- `method` - The HTTP method verb, such as `"GET"`, `"POST"`, `"PATCH"`, `"PUT"`, or `"DELETE"`. + Will always be uppercase +- `headers` - A table of key-value pairs representing headers +- `body` - The request body, or an empty string if one was not given --- @@ -220,9 +222,9 @@ Response type for requests in `net.serve`. This is a dictionary that may contain one or more of the following values: -- `status` - The status code for the request, in the range `100` -> `599` -- `headers` - A table of key-value pairs representing headers -- `body` - The response body +- `status` - The status code for the request, in the range `100` -> `599` +- `headers` - A table of key-value pairs representing headers +- `body` - The response body --- @@ -232,12 +234,12 @@ Configuration for `net.serve`. This may contain one of or more of the following values: -- `address` for setting the IP address to serve from. Defaults to the loopback interface - (`http://localhost`). -- `handleRequest` for handling normal http requests, equivalent to just passing a function to - `net.serve` -- `handleWebSocket` for handling web socket requests, which will receive a `WebSocket` object as - its first and only parameter +- `address` for setting the IP address to serve from. Defaults to the loopback interface + (`http://localhost`). +- `handleRequest` for handling normal http requests, equivalent to just passing a function to + `net.serve` +- `handleWebSocket` for handling web socket requests, which will receive a `WebSocket` object as + its first and only parameter When setting `address`, the `handleRequest` callback must also be defined. @@ -270,13 +272,13 @@ The web socket may be in either an "open" or a "closed" state, changing its curr When open: -- Any function on the socket such as `send`, `next` or `close` can be called without erroring -- `next` can be called to yield until the next message is received or the socket becomes closed +- Any function on the socket such as `send`, `next` or `close` can be called without erroring +- `next` can be called to yield until the next message is received or the socket becomes closed When closed: -- `next` will no longer return any message(s) and instead instantly return nil -- `send` will throw an error stating that the socket has been closed +- `next` will no longer return any message(s) and instead instantly return nil +- `send` will throw an error stating that the socket has been closed Once the websocket has been closed, `closeCode` will no longer be nil, and will be populated with a close code according to the diff --git a/content/api-reference/process.md b/src/content/docs/api-reference/process.md similarity index 65% rename from content/api-reference/process.md rename to src/content/docs/api-reference/process.md index bed57bc..11cea80 100644 --- a/content/api-reference/process.md +++ b/src/content/docs/api-reference/process.md @@ -1,4 +1,6 @@ -# Process +--- +title: Process +--- Built-in functions for the current process & child processes @@ -44,9 +46,9 @@ The current operating system being used. Possible values: -- `"linux"` -- `"macos"` -- `"windows"` +- `"linux"` +- `"macos"` +- `"windows"` --- @@ -58,8 +60,8 @@ The architecture of the processor currently being used. Possible values: -- `"x86_64"` -- `"aarch64"` +- `"x86_64"` +- `"aarch64"` --- @@ -101,11 +103,11 @@ Setting the exit code using this function will override any otherwise automatic #### Parameters -- `code` The exit code to set +- `code` The exit code to set #### Returns -- never +- never --- @@ -121,15 +123,15 @@ process. Refer to the documentation for `SpawnOptions` for specific option keys #### Parameters -- `program` The program to spawn as a child process +- `program` The program to spawn as a child process -- `params` Additional parameters to pass to the program +- `params` Additional parameters to pass to the program -- `options` A dictionary of options for the child process +- `options` A dictionary of options for the child process #### Returns -- A dictionary representing the result of the child process +- A dictionary representing the result of the child process --- @@ -139,13 +141,13 @@ process. Refer to the documentation for `SpawnOptions` for specific option keys A dictionary of options for `process.spawn`, with the following available values: -- `cwd` - The current working directory for the process -- `env` - Extra environment variables to give to the process -- `shell` - Whether to run in a shell or not - set to `true` to run using the default shell, or a - string to run using a specific shell -- `stdio` - How to treat output and error streams from the child process - see - `SpawnOptionsStdioKind` and `SpawnOptionsStdio` for more info -- `stdin` - Optional standard input to pass to spawned child process +- `cwd` - The current working directory for the process +- `env` - Extra environment variables to give to the process +- `shell` - Whether to run in a shell or not - set to `true` to run using the default shell, or a + string to run using a specific shell +- `stdio` - How to treat output and error streams from the child process - see + `SpawnOptionsStdioKind` and `SpawnOptionsStdio` for more info +- `stdin` - Optional standard input to pass to spawned child process --- @@ -155,12 +157,12 @@ Result type for child processes in `process.spawn`. This is a dictionary containing the following values: -- `ok` - If the child process exited successfully or not, meaning the exit code was zero or not - set -- `code` - The exit code set by the child process, or 0 if one was not set -- `stdout` - The full contents written to stdout by the child process, or an empty string if - nothing was written -- `stderr` - The full contents written to stderr by the child process, or an empty string if - nothing was written +- `ok` - If the child process exited successfully or not, meaning the exit code was zero or not + set +- `code` - The exit code set by the child process, or 0 if one was not set +- `stdout` - The full contents written to stdout by the child process, or an empty string if + nothing was written +- `stderr` - The full contents written to stderr by the child process, or an empty string if + nothing was written --- diff --git a/content/api-reference/regex.md b/src/content/docs/api-reference/regex.md similarity index 62% rename from content/api-reference/regex.md rename to src/content/docs/api-reference/regex.md index c84361b..dc6d338 100644 --- a/content/api-reference/regex.md +++ b/src/content/docs/api-reference/regex.md @@ -1,4 +1,6 @@ -# Regex +--- +title: Regex +--- Built-in library for regular expressions @@ -33,11 +35,11 @@ This constructor throws an error if the given pattern is invalid. #### Parameters -- `pattern` `string` The string pattern to use +- `pattern` `string` The string pattern to use #### Returns -- `Regex` The new Regex object +- `Regex` The new Regex object --- @@ -52,13 +54,13 @@ matches the pattern. #### Parameters -- `self` Regex +- `self` Regex -- `text` `string` The text to search +- `text` `string` The text to search #### Returns -- `boolean` Whether the text matches the pattern +- `boolean` Whether the text matches the pattern --- @@ -70,13 +72,13 @@ Returns `nil` if no match was found. #### Parameters -- `self` Regex +- `self` Regex -- `text` `string` The text to search +- `text` `string` The text to search #### Returns -- `RegexMatch?` The match object +- `RegexMatch?` The match object --- @@ -88,13 +90,13 @@ Returns `nil` if no matches are found. #### Parameters -- `self` Regex +- `self` Regex -- `text` `string` The text to search +- `text` `string` The text to search #### Returns -- `RegexCaptures?` The captures object +- `RegexCaptures?` The captures object --- @@ -104,13 +106,13 @@ Splits the given text using the regular expression. #### Parameters -- `self` Regex +- `self` Regex -- `text` `string` The text to split +- `text` `string` The text to split #### Returns -- `{ string }` The split text +- `{ string }` The split text --- @@ -120,15 +122,15 @@ Replaces the first match in the given text with the given replacer string. #### Parameters -- `self` Regex +- `self` Regex -- `haystack` `string` The text to search +- `haystack` `string` The text to search -- `replacer` `string` The string to replace matches with +- `replacer` `string` The string to replace matches with #### Returns -- `string` The text with the first match replaced +- `string` The text with the first match replaced --- @@ -138,15 +140,15 @@ Replaces all matches in the given text with the given replacer string. #### Parameters -- `self` Regex +- `self` Regex -- `haystack` `string` The text to search +- `haystack` `string` The text to search -- `replacer` `string` The string to replace matches with +- `replacer` `string` The string to replace matches with #### Returns -- `string` The text with all matches replaced +- `string` The text with all matches replaced --- @@ -162,13 +164,13 @@ Returns the match at the given index, if one exists. #### Parameters -- `self` RegexCaptures +- `self` RegexCaptures -- `index` `number` The index of the match to get +- `index` `number` The index of the match to get #### Returns -- `RegexMatch` The match, if one exists +- `RegexMatch` The match, if one exists --- @@ -178,13 +180,13 @@ Returns the match for the given named match group, if one exists. #### Parameters -- `self` RegexCaptures +- `self` RegexCaptures -- `group` `string` The name of the group to get +- `group` `string` The name of the group to get #### Returns -- `RegexMatch` The match, if one exists +- `RegexMatch` The match, if one exists --- @@ -208,13 +210,13 @@ print(formatted) -- "year=2010, month=03, day=14" #### Parameters -- `self` RegexCaptures +- `self` RegexCaptures -- `format` `string` The format string to use +- `format` `string` The format string to use #### Returns -- `string` The formatted string +- `string` The formatted string --- @@ -224,7 +226,7 @@ A match from a regular expression. Contains the following values: -- `start` -- The start index of the match in the original string. -- `finish` -- The end index of the match in the original string. -- `text` -- The text that was matched. -- `len` -- The length of the text that was matched. +- `start` -- The start index of the match in the original string. +- `finish` -- The end index of the match in the original string. +- `text` -- The text that was matched. +- `len` -- The length of the text that was matched. diff --git a/content/api-reference/roblox.md b/src/content/docs/api-reference/roblox.md similarity index 83% rename from content/api-reference/roblox.md rename to src/content/docs/api-reference/roblox.md index d8cc9c9..7e580eb 100644 --- a/content/api-reference/roblox.md +++ b/src/content/docs/api-reference/roblox.md @@ -1,4 +1,6 @@ -# Roblox +--- +title: Roblox +--- Built-in library for manipulating Roblox place & model files @@ -44,11 +46,11 @@ local game = roblox.deserializePlace(placeFile) #### Parameters -- `contents` The contents of the place to read +- `contents` The contents of the place to read #### Returns -- DataModel +- DataModel --- @@ -71,11 +73,11 @@ local instances = roblox.deserializeModel(modelFile) #### Parameters -- `contents` The contents of the model to read +- `contents` The contents of the model to read #### Returns -- { Instance } +- { Instance } --- @@ -97,14 +99,14 @@ fs.writeFile("filePath.rbxl", placeFile) #### Parameters -- `dataModel` The DataModel for the place to serialize +- `dataModel` The DataModel for the place to serialize -- `xml` If the place should be serialized as xml or not. Defaults to `false`, meaning the place - gets serialized using the binary format and not xml. +- `xml` If the place should be serialized as xml or not. Defaults to `false`, meaning the place + gets serialized using the binary format and not xml. #### Returns -- string +- string --- @@ -126,14 +128,14 @@ fs.writeFile("filePath.rbxm", modelFile) #### Parameters -- `instances` The array of instances to serialize +- `instances` The array of instances to serialize -- `xml` If the model should be serialized as xml or not. Defaults to `false`, meaning the model - gets serialized using the binary format and not xml. +- `xml` If the model should be serialized as xml or not. Defaults to `false`, meaning the model + gets serialized using the binary format and not xml. #### Returns -- string +- string --- @@ -170,11 +172,11 @@ print("Download link to place: " .. responseLocation) #### Parameters -- `raw` If the cookie should be returned as a pure value or not. Defaults to false +- `raw` If the cookie should be returned as a pure value or not. Defaults to false #### Returns -- string? +- string? --- @@ -208,7 +210,7 @@ end #### Returns -- Database +- Database --- @@ -262,14 +264,14 @@ print(part.CoolProp) --> 13 #### Parameters -- `className` The class to implement the property for. +- `className` The class to implement the property for. -- `propertyName` The name of the property to implement. +- `propertyName` The name of the property to implement. -- `getter` The function which will be called to get the property value when indexed. +- `getter` The function which will be called to get the property value when indexed. -- `setter` The function which will be called to set the property value when indexed. Defaults to a - function that will error with a message saying the property is read-only. +- `setter` The function which will be called to set the property value when indexed. Defaults to a + function that will error with a message saying the property is read-only. --- @@ -304,10 +306,10 @@ part:TestMethod("Hello", "world!") #### Parameters -- `className` The class to implement the method for. +- `className` The class to implement the method for. -- `methodName` The name of the method to implement. +- `methodName` The name of the method to implement. -- `callback` The function which will be called when the method is called. +- `callback` The function which will be called when the method is called. --- diff --git a/content/api-reference/serde.md b/src/content/docs/api-reference/serde.md similarity index 79% rename from content/api-reference/serde.md rename to src/content/docs/api-reference/serde.md index 817e344..97be624 100644 --- a/content/api-reference/serde.md +++ b/src/content/docs/api-reference/serde.md @@ -1,10 +1,12 @@ -# Serde +--- +title: Serde +--- Built-in library for: -- serialization & deserialization -- encoding & decoding -- compression +- serialization & deserialization +- encoding & decoding +- compression #### Example usage @@ -33,16 +35,16 @@ See [`EncodeDecodeFormat`] for a list of supported formats. #### Parameters -- `format` The format to use +- `format` The format to use -- `value` The value to encode +- `value` The value to encode -- `pretty` If the encoded string should be human-readable, including things such as newlines and - spaces. Only supported for json and toml formats, and defaults to false +- `pretty` If the encoded string should be human-readable, including things such as newlines and + spaces. Only supported for json and toml formats, and defaults to false #### Returns -- The encoded string +- The encoded string --- @@ -54,13 +56,13 @@ See [`EncodeDecodeFormat`] for a list of supported formats. #### Parameters -- `format` The format to use +- `format` The format to use -- `encoded` The string to decode +- `encoded` The string to decode #### Returns -- The decoded lua value +- The decoded lua value --- @@ -72,13 +74,13 @@ See [`CompressDecompressFormat`] for a list of supported formats. #### Parameters -- `format` The format to use +- `format` The format to use -- `s` The string to compress +- `s` The string to compress #### Returns -- The compressed string +- The compressed string --- @@ -90,13 +92,13 @@ See [`CompressDecompressFormat`] for a list of supported formats. #### Parameters -- `format` The format to use +- `format` The format to use -- `s` The string to decompress +- `s` The string to decompress #### Returns -- The decompressed string +- The decompressed string --- @@ -108,13 +110,13 @@ See [`HashAlgorithm`] for a list of supported algorithms. #### Parameters -- `algorithm` The algorithm to use +- `algorithm` The algorithm to use -- `message` The message to hash +- `message` The message to hash #### Returns -- The hash as a hex string +- The hash as a hex string --- @@ -127,15 +129,15 @@ See [`HashAlgorithm`] for a list of supported algorithms. #### Parameters -- `algorithm` The algorithm to use +- `algorithm` The algorithm to use -- `message` The message to hash +- `message` The message to hash -- `secret` string | buffer +- `secret` string | buffer #### Returns -- The hash as a base64 string +- The hash as a base64 string --- diff --git a/content/api-reference/stdio.md b/src/content/docs/api-reference/stdio.md similarity index 69% rename from content/api-reference/stdio.md rename to src/content/docs/api-reference/stdio.md index f221307..b354280 100644 --- a/content/api-reference/stdio.md +++ b/src/content/docs/api-reference/stdio.md @@ -1,4 +1,6 @@ -# Stdio +--- +title: Stdio +--- Built-in standard input / output & utility functions @@ -27,20 +29,20 @@ local input = stdio.readToEnd() Prompts for user input using the wanted kind of prompt: -- `"text"` - Prompts for a plain text string from the user -- `"confirm"` - Prompts the user to confirm with y / n (yes / no) -- `"select"` - Prompts the user to select _one_ value from a list -- `"multiselect"` - Prompts the user to select _one or more_ values from a list -- `nil` - Equivalent to `"text"` with no extra arguments +- `"text"` - Prompts for a plain text string from the user +- `"confirm"` - Prompts the user to confirm with y / n (yes / no) +- `"select"` - Prompts the user to select _one_ value from a list +- `"multiselect"` - Prompts the user to select _one or more_ values from a list +- `nil` - Equivalent to `"text"` with no extra arguments #### Parameters -- `kind` The kind of prompt to use +- `kind` The kind of prompt to use -- `message` The message to show the user +- `message` The message to show the user -- `defaultOrOptions` The default value for the prompt, or options to choose from for selection - prompts +- `defaultOrOptions` The default value for the prompt, or options to choose from for selection + prompts --- @@ -61,11 +63,11 @@ print("This text will be normal") #### Parameters -- `color` The color to use +- `color` The color to use #### Returns -- A printable ANSI string +- A printable ANSI string --- @@ -86,11 +88,11 @@ print("This text will be normal") #### Parameters -- `style` The style to use +- `style` The style to use #### Returns -- A printable ANSI string +- A printable ANSI string --- @@ -100,11 +102,11 @@ Formats arguments into a human-readable string with syntax highlighting for tabl #### Parameters -- `...` The values to format +- `...` The values to format #### Returns -- The formatted string +- The formatted string --- @@ -114,7 +116,7 @@ Writes a string directly to stdout, without any newline. #### Parameters -- `s` The string to write to stdout +- `s` The string to write to stdout --- @@ -124,7 +126,7 @@ Writes a string directly to stderr, without any newline. #### Parameters -- `s` The string to write to stderr +- `s` The string to write to stderr --- @@ -134,6 +136,6 @@ Reads the entire input from stdin. #### Returns -- The input from stdin +- The input from stdin --- diff --git a/content/api-reference/task.md b/src/content/docs/api-reference/task.md similarity index 74% rename from content/api-reference/task.md rename to src/content/docs/api-reference/task.md index 48b76c1..87e1280 100644 --- a/content/api-reference/task.md +++ b/src/content/docs/api-reference/task.md @@ -1,4 +1,6 @@ -# Task +--- +title: Task +--- Built-in task scheduler & thread spawning @@ -34,7 +36,7 @@ Stops a currently scheduled thread from resuming. #### Parameters -- `thread` The thread to cancel +- `thread` The thread to cancel --- @@ -44,13 +46,13 @@ Defers a thread or function to run at the end of the current task queue. #### Parameters -- `functionOrThread` The function or thread to defer +- `functionOrThread` The function or thread to defer -- `...` T... +- `...` T... #### Returns -- The thread that will be deferred +- The thread that will be deferred --- @@ -60,15 +62,15 @@ Delays a thread or function to run after `duration` seconds. #### Parameters -- `duration` number +- `duration` number -- `functionOrThread` The function or thread to delay +- `functionOrThread` The function or thread to delay -- `...` T... +- `...` T... #### Returns -- The thread that will be delayed +- The thread that will be delayed --- @@ -81,13 +83,13 @@ run in the background. #### Parameters -- `functionOrThread` The function or thread to spawn +- `functionOrThread` The function or thread to spawn -- `...` T... +- `...` T... #### Returns -- The thread that was spawned +- The thread that was spawned --- @@ -101,10 +103,10 @@ less. #### Parameters -- `duration` The amount of time to wait +- `duration` The amount of time to wait #### Returns -- The exact amount of time waited +- The exact amount of time waited --- diff --git a/content/getting-started/1-installation.mdx b/src/content/docs/getting-started/1-installation.mdx similarity index 76% rename from content/getting-started/1-installation.mdx rename to src/content/docs/getting-started/1-installation.mdx index 715dd9c..2861816 100644 --- a/content/getting-started/1-installation.mdx +++ b/src/content/docs/getting-started/1-installation.mdx @@ -1,6 +1,8 @@ -import { Callout, Steps } from "nextra/components"; +--- +title: Installation +--- -# Installation +import { Aside, Steps } from "@astrojs/starlight/components"; The preferred way of installing Lune is using [Rokit](https://github.com/rojo-rbx/rokit), a toolchain manager for Roblox projects. Rokit can manage your installed version of Lune and @@ -8,26 +10,26 @@ other ecosystem tools, and allows you to easily upgrade to newer versions as the -### Installing Rokit +1. ### Installing Rokit -Follow the installation instructions on the [Rokit](https://github.com/rojo-rbx/rokit) page. + Follow the installation instructions on the [Rokit](https://github.com/rojo-rbx/rokit) page. -### Installing Lune +2. ### Installing Lune -Navigate to your project directory using your terminal, and run the following command: + Navigate to your project directory using your terminal, and run the following command: -```sh copy filename="Bash" -rokit add lune -``` + ```bash title="Terminal" + rokit add lune + ``` -### Upgrading Lune +3. ### Upgrading Lune -When a new version of Lune becomes available, using Rokit will also allow you to easily upgrade to it. -Navigate to your project directory using your terminal again, and run the following command: + When a new version of Lune becomes available, using Rokit will also allow you to easily upgrade to it. + Navigate to your project directory using your terminal again, and run the following command: -```sh copy filename="Bash" -rokit update lune -``` + ```bash title="Terminal" + rokit update lune + ``` @@ -55,7 +57,7 @@ and [Aftman](https://github.com/LPGhatguy/aftman). Windows users can use [Scoop](https://scoop.sh) to install Lune. -```ps copy filename="PowerShell" +```sh filename="PowerShell" # Add the bucket scoop bucket add lune https://github.com/CompeyDev/lune-packaging.git @@ -67,14 +69,14 @@ scoop install lune macOS and Linux users can use [Homebrew](https://brew.sh) to install Lune. -```sh copy filename="Bash" +```bash title="Terminal" # Installs latest stable precompiled binary brew install lune ``` **_or_** -```sh copy filename="Bash" +```bash title="Terminal" # Builds from latest stable source brew install lune --build-from-source ``` @@ -84,10 +86,10 @@ brew install lune --build-from-source APT is a package manager for Debian-based Linux distributions that uses `dpkg` to install packages.
Follow the instructions at the unofficial [lune-packaging](https://github.com/CompeyDev/lune-packaging#apt) repository to install Lune using APT. - + ### AppImage @@ -104,42 +106,42 @@ There are a number of packages available on the AUR: These can be installed with your preferred AUR package manager as such: -```sh copy filename="Bash" +```bash title="Terminal" paru -S [PACKAGE_NAME] ``` **_or_** -```sh copy filename="Bash" +```bash title="Terminal" yay -S [PACKAGE_NAME] ``` - + ### Nix macOS\* and Linux users can use [Nix](https://nixos.org/) to install Lune. - +
Imperatively
**NixOS** -```sh copy filename="Bash" +```bash title="Terminal" nix-env -iA nixos.lune ``` **Non NixOS** -```sh copy filename="Bash" +```bash title="Terminal" nix-env -iA nixpkgs.lune # If you are using flakes nix profile install nixpkgs#lune @@ -152,7 +154,7 @@ nix profile install nixpkgs#lune
**With [home-manager](https://github.com/nix-community/home-manager)** -```nix copy filename="nix" +```nix title="Terminal" home.packages = with pkgs; [ lune ]; @@ -160,7 +162,7 @@ home.packages = with pkgs; [ **system-wide NixOS configuration** -```nix copy filename="nix" +```nix title="Terminal" enviroment.systemPackages = with pkgs; [ lune ]; @@ -173,7 +175,7 @@ enviroment.systemPackages = with pkgs; [
You can temporarily use Lune in your shell. You can use this to try out Lune before deciding to permanently install it. -```sh copy filename="Bash" +```bash title="Terminal" nix-shell -p lune ``` @@ -190,7 +192,7 @@ Building and installing from source requires the latest version of [Rust & Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html) to be installed on your system.
Once installed, run the following command in your terminal: -```sh copy filename="Bash" +```bash title="Terminal" cargo install lune --locked ``` @@ -201,7 +203,7 @@ compiling from source unlike `cargo install`. Lune is packaged in a `binstall` c With `binstall` installed and in your path, run: -```sh copy filename="Bash" +```bash title="Terminal" cargo binstall lune ``` @@ -211,7 +213,7 @@ cargo binstall lune Congratulations! You've installed Lune and are now ready to write your first script. -- If you want to write standalone scripts, head over to the - [Introduction](./2-introduction/1-hello-lune.md) section. -- If you want to write Lune scripts specifically for Roblox, check out the - [Roblox](../roblox/1-introduction.md) section. +A great place to continue reading is the [Lune Book](../../the-book/1-hello-lune), which is also part +of the official Lune documentation, and will give you a guided and comprehensive introduction to Lune. + +Or, if you want to dive right into specific resources, check out the API reference in the sidebar. diff --git a/content/getting-started/3-command-line-usage.md b/src/content/docs/getting-started/2-command-line-usage.md similarity index 73% rename from content/getting-started/3-command-line-usage.md rename to src/content/docs/getting-started/2-command-line-usage.md index 3bddf87..67c9353 100644 --- a/content/getting-started/3-command-line-usage.md +++ b/src/content/docs/getting-started/2-command-line-usage.md @@ -1,24 +1,26 @@ -# Command-Line Usage +--- +title: Command-Line Usage +--- ## Running Scripts When you've written a script file, for example `script-name.luau`, you can run it as such: -```sh copy +```bash title="Terminal" lune run script-name ``` This will look for the file `script-name.luau`**_[1]_** in a few locations: -- The current directory -- The folder `lune` in the current directory, if it exists -- The folder `.lune` in the current directory, if it exists -- The folder `lune` in the _home_ directory, if it exists -- The folder `.lune` in the _home_ directory, if it exists +- The current directory +- The folder `lune` in the current directory, if it exists +- The folder `.lune` in the current directory, if it exists +- The folder `lune` in the _home_ directory, if it exists +- The folder `.lune` in the _home_ directory, if it exists ## Listing Scripts -```sh copy +```bash title="Terminal" lune list ``` @@ -28,14 +30,14 @@ lua-style comment arrow (`-->`). ## Advanced Usage -```sh copy +```bash title="Terminal" lune run - ``` Runs a script passed to Lune using stdin. Useful for running scripts piped to Lune from external sources. Example: -```sh copy +```bash title="Terminal" echo "print 'Hello, terminal!'" | lune run - ``` diff --git a/content/getting-started/4-editor-setup.md b/src/content/docs/getting-started/3-editor-setup.md similarity index 93% rename from content/getting-started/4-editor-setup.md rename to src/content/docs/getting-started/3-editor-setup.md index ca84506..48fdb68 100644 --- a/content/getting-started/4-editor-setup.md +++ b/src/content/docs/getting-started/3-editor-setup.md @@ -1,4 +1,6 @@ -# Editor Setup +--- +title: Editor Setup +--- Lune prioritizes developer experience, and as such type definitions and documentation are provided for several editors and tools without any additional downloads. This guide will help you get set up @@ -12,6 +14,6 @@ is currently the main language server providing editor support for Luau. It supp Once you have installed the language server, as well as Lune, running the following built-in command will generate type definition files, and add / modify a standardized `.luaurc` configuration file pointing to them: -```sh +```bash title="Terminal" lune setup ``` diff --git a/src/content/docs/getting-started/4-security.mdx b/src/content/docs/getting-started/4-security.mdx new file mode 100644 index 0000000..4b8e06e --- /dev/null +++ b/src/content/docs/getting-started/4-security.mdx @@ -0,0 +1,39 @@ +--- +title: Security +--- + +import { Steps } from "@astrojs/starlight/components"; + +When running Lune scripts, it is important to note that any scripts you execute have +full access to your device - this means access to your files, programs, and more. +It is important to stay cautious when executing a script from a source you don't trust. + +Some alternatives to solving this problem are: + +1. Running Lune scripts in a custom sandboxed environment. +2. Using a containerized environment such as Docker. +3. Using a virtual machine. + +## Sandboxing + +Lune provides a rudimentary, albeit working sandboxing example. We provide steps to use it here, +but for proper security & deployments, using a container or a virtual machine is highly recommended. + + + +1. Copy the [sandbox module](https://github.com/lune-org/docs/blob/main/modules/sandbox.luau) and place it in a file named `sandbox.luau`. + +2. Now, place the untrusted script you want to run safely next to the `sandbox.luau` script. + + ```bash title="Terminal" + lune run sandbox.luau script.luau -- [ARGUMENTS_HERE] + ``` + + Replace `script.luau` and `[ARGUMENTS_HERE]` with the path to the script and the arguments to run it with. + +3. As the script runs, any requires to potentially dangerous modules will require your approval + before continuing and any invocations to methods within approved modules will be logged. + + Additionally, the output of the sandbox script and the script being run will be separated. + + diff --git a/src/content/docs/guides/example.md b/src/content/docs/guides/example.md deleted file mode 100644 index ebd0f3b..0000000 --- a/src/content/docs/guides/example.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Example Guide -description: A guide in my new Starlight docs site. ---- - -Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. -Writing a good guide requires thinking about what your users are trying to do. - -## Further reading - -- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/content/index.md b/src/content/docs/index.md similarity index 91% rename from content/index.md rename to src/content/docs/index.md index 5eff56e..1f1fe03 100644 --- a/content/index.md +++ b/src/content/docs/index.md @@ -1,4 +1,7 @@ -# Lune +--- +title: Lune +description: Get started with writing Luau using the Lune runtime. +--- A standalone [Luau](https://luau-lang.org) runtime. @@ -21,4 +24,4 @@ Lune provides fully asynchronous APIs wherever possible, and is built in Rust ## Where do I start? -Head over to the [Installation](./getting-started/1-installation.md) page to get started using Lune! +Head over to the [Installation](./getting-started/1-installation) page to get started using Lune! diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx deleted file mode 100644 index 664b681..0000000 --- a/src/content/docs/index.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Welcome to Starlight -description: Get started building your docs site with Starlight. -template: splash -hero: - tagline: Congrats on setting up a new Starlight project! - image: - file: ../../assets/houston.webp - actions: - - text: Example Guide - link: /guides/example/ - icon: right-arrow - - text: Read the Starlight docs - link: https://starlight.astro.build - icon: external - variant: minimal ---- - -import { Card, CardGrid } from '@astrojs/starlight/components'; - -## Next steps - - - - Edit `src/content/docs/index.mdx` to see this page change. - - - Add Markdown or MDX files to `src/content/docs` to create new pages. - - - Edit your `sidebar` and other config in `astro.config.mjs`. - - - Learn more in [the Starlight Docs](https://starlight.astro.build/). - - diff --git a/src/content/docs/reference/example.md b/src/content/docs/reference/example.md deleted file mode 100644 index 0224f09..0000000 --- a/src/content/docs/reference/example.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Example Reference -description: A reference page in my new Starlight docs site. ---- - -Reference pages are ideal for outlining how things work in terse and clear terms. -Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what you're documenting. - -## Further reading - -- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework diff --git a/content/roblox/1-introduction.md b/src/content/docs/roblox/1-introduction.md similarity index 87% rename from content/roblox/1-introduction.md rename to src/content/docs/roblox/1-introduction.md index 70528a3..cc62931 100644 --- a/content/roblox/1-introduction.md +++ b/src/content/docs/roblox/1-introduction.md @@ -1,7 +1,6 @@ - - - -# The `roblox` Library +--- +title: "The Roblox Library" +--- Lune has a powerful built-in library and set of APIs for manipulating Roblox place files and model files. It contains APIs for reading & writing files, and gives you instances to use, just as if you diff --git a/content/roblox/2-examples.md b/src/content/docs/roblox/2-examples.md similarity index 96% rename from content/roblox/2-examples.md rename to src/content/docs/roblox/2-examples.md index 79ed038..b8efcd8 100644 --- a/content/roblox/2-examples.md +++ b/src/content/docs/roblox/2-examples.md @@ -1,7 +1,6 @@ - - - -# Example Scripts +--- +title: "Example Scripts" +--- These are a few short examples of things you can do using the built-in `roblox` library. diff --git a/src/content/docs/roblox/3-remodel-migration.mdx b/src/content/docs/roblox/3-remodel-migration.mdx new file mode 100644 index 0000000..587c12b --- /dev/null +++ b/src/content/docs/roblox/3-remodel-migration.mdx @@ -0,0 +1,124 @@ +--- +title: "Migrating from Remodel" +--- + +import { Steps } from "@astrojs/starlight/components"; + +If you have used [Remodel](https://github.com/rojo-rbx/remodel) before to manipulate place and/or +model files, this migration guide will help you get started with accomplishing the same tasks in +Lune. + +## Drop-in Compatibility + +This guide provides a module which translates all of the relevant Lune APIs to their Remodel +equivalents. For more details or manual migration steps, check out +[Differences Between Lune & Remodel](#differences-between-lune--remodel) below. + + + +1. Copy the [remodel module](https://github.com/lune-org/docs/blob/main/modules/remodel.luau) and place it in a file named `remodel.luau`. + + This module is quite large, but you will not need to read through it unless you want to know about + the internal details of how Remodel used to work. + +2. Next, create another script next to your `remodel.luau`. We will be naming it `example.luau`, but + you can name it whatever you want. This example code is from one of the legacy Remodel-native + example scripts, with only the top line added: + + ```luau + // remodel.luau + local remodel = require("./remodel") + + -- One use for Remodel is to move the terrain of one place into another place. + local inputGame = remodel.readPlaceFile("input-place.rbxlx") + local outputGame = remodel.readPlaceFile("output-place.rbxlx") + + -- This isn't possible inside Roblox, but works just fine in Remodel! + outputGame.Workspace.Terrain:Destroy() + inputGame.Workspace.Terrain.Parent = outputGame.Workspace + + remodel.writePlaceFile("output-place-updated.rbxlx", outputGame) + ``` + +3. Finally, run the script you've created by providing the script name to Lune, in our case `example`, + without the luau file extension. Everything should work the same way it did when running natively in + Remodel, now running in Lune 🚀 + + ```bash title="Terminal" + lune run example + ``` + + + +## Differences Between Lune & Remodel + +Most APIs previously found in Remodel have direct equivalents in Lune, below are some direct links +to APIs that are equivalent or very similar. + +
+Places & Models + +- `remodel.readPlaceFile` ➡ [`fs.readFile`](../api-reference/fs.md#readfile) & + [`roblox.deserializePlace`](../api-reference/roblox.md#deserializeplace) +- `remodel.readModelFile` ➡ [`fs.readFile`](../api-reference/fs.md#readfile) & + [`roblox.deserializeModel`](../api-reference/roblox.md#deserializemodel) +- `remodel.readPlaceAsset` ➡ [`net.request`](../api-reference/net.md#request) & + [`roblox.deserializePlace`](../api-reference/roblox.md#deserializeplace) +- `remodel.readModelAsset` ➡ [`net.request`](../api-reference/net.md#request) & + [`roblox.deserializeModel`](../api-reference/roblox.md#deserializemodel) +- `remodel.writePlaceFile` ➡ [`roblox.serializePlace`](../api-reference/roblox.md#serializeplace) + & [`fs.writeFile`](../api-reference/fs.md#writefile) +- `remodel.writeModelFile` ➡ [`roblox.serializeModel`](../api-reference/roblox.md#serializemodel) + & [`fs.writeFile`](../api-reference/fs.md#writefile) +- `remodel.writeExistingPlaceAsset` ➡ + [`roblox.serializePlace`](../api-reference/roblox.md#serializeplace) & + [`net.request`](../api-reference/net.md#request) +- `remodel.writeExistingModelAsset` ➡ + [`roblox.serializeModel`](../api-reference/roblox.md#serializemodel) & + [`net.request`](../api-reference/net.md#request) +- `remodel.getRawProperty` ➡ no equivalent, you can get properties directly by indexing +- `remodel.setRawProperty` ➡ no equivalent, you can set properties directly by indexing + +
+ +
+Files & Directories + +- `remodel.readFile` ➡ [`fs.readFile`](../api-reference/fs.md#readfile) +- `remodel.readDir` ➡ [`fs.readDir`](../api-reference/fs.md#readdir) +- `remodel.writeFile` ➡ [`fs.writeFile`](../api-reference/fs.md#writefile) +- `remodel.createDirAll` ➡ [`fs.writeDir`](../api-reference/fs.md#writedir) +- `remodel.removeFile` ➡ [`fs.removeFile`](../api-reference/fs.md#removefile) +- `remodel.removeDir` ➡ [`fs.removeDir`](../api-reference/fs.md#removedir) +- `remodel.isFile` ➡ [`fs.isFile`](../api-reference/fs.md#isfile) +- `remodel.isDir` ➡ [`fs.isDir`](../api-reference/fs.md#isdir) + +
+ +
+JSON + +- `json.fromString` ➡ [`serde.decode`](../api-reference/serde.md#decode) +- `json.toString` ➡ [`serde.encode`](../api-reference/serde.md#encode) +- `json.toStringPretty` ➡ [`serde.encode`](../api-reference/serde.md#encode) + +
+ +Since Lune is meant to be a general-purpose Luau runtime, there are also some more general +differences, and Lune takes a different approach from Remodel in certain areas: + +- Lune runs Luau instead of Lua 5.3. +- APIs are more loosely coupled, meaning that a task may require more steps using Lune. This also + means that Lune is more flexible and supports more use cases. +- Built-in libraries are not accessible from global variables, you have to explicitly import them + using `require("@lune/library-name")`. +- Arguments given to scripts are not available in `...`, you have to use + [`process.args`](../api-reference/process.md#args) instead. +- Lune generally supports all of the Roblox datatypes that are gettable/settable on instance + properties. For a full list of available datatypes, check out the + [API Status](./4-api-status.md) page. + +--- + +There may be more differences than are listed here, and the Lune-specific guides and examples may +provide more info, but this should be all you need to know to migrate from Remodel. Good luck! diff --git a/content/roblox/4-api-status.md b/src/content/docs/roblox/4-api-status.md similarity index 98% rename from content/roblox/4-api-status.md rename to src/content/docs/roblox/4-api-status.md index c100369..e93aa8a 100644 --- a/content/roblox/4-api-status.md +++ b/src/content/docs/roblox/4-api-status.md @@ -1,7 +1,6 @@ - - - -# API Status +--- +title: API Status +--- This is a page indicating the current implementation status for instance methods and datatypes in the `roblox` library. diff --git a/src/content/docs/the-book/1-hello-lune.md b/src/content/docs/the-book/1-hello-lune.md new file mode 100644 index 0000000..1e30993 --- /dev/null +++ b/src/content/docs/the-book/1-hello-lune.md @@ -0,0 +1,23 @@ +--- +title: Hello, Lune! +--- + +Congratulations! Lune is now set up and you are ready to start writing scripts 🎉 + +If you've already written some kind of Lua (or Luau) script before, the examples provided in the +overview below should make you feel right at home. They are organized in order of least complex to +most complex, and you don't really have to read them all to understand how Lune works, though it may +help you out. Good luck! + +## Overview + +1. [Hello, Lune!](./1-hello-lune.md) (you are here) +2. [Built-in Libraries](./2-built-in-libraries.md) +3. [Standard I/O](./3-standard-io.mdx) +4. [Script Arguments](./4-script-arguments.md) +5. [Network Requests](./5-network-requests.mdx) +6. [Files & Directories](./6-files-and-directories.mdx) +7. [Environment Variables](./7-environment-variables.md) +8. [Modules](./8-modules.mdx) +9. [Task Scheduler](./9-task-scheduler.mdx) +10. [Spawning Processes](./10-spawning-processes.md) diff --git a/content/getting-started/2-introduction/10-spawning-processes.md b/src/content/docs/the-book/10-spawning-processes.md similarity index 87% rename from content/getting-started/2-introduction/10-spawning-processes.md rename to src/content/docs/the-book/10-spawning-processes.md index ac96175..a22c7d0 100644 --- a/content/getting-started/2-introduction/10-spawning-processes.md +++ b/src/content/docs/the-book/10-spawning-processes.md @@ -1,6 +1,8 @@ -# Spawning Processes +--- +title: Spawning Processes +--- -Whenever Lune does not have the API you need as part of its built-in libraries, or when you want to +Whenever Lune does not have the API you need as part of its standard libraries, or when you want to use a program that already exists but interact with it from within Lune, you can use [`process.exec`](../../api-reference/process.md#exec). @@ -10,7 +12,7 @@ This example calls out to the native "ping" program found in many operating syst output into something more usable to us. This may look scary with lots of weird symbols, but, it's just some Lua-style pattern matching to -parse the lines of "min/avg/max/stddev = W/X/Y/Z ms" that the ping program gives back to us. +parse the lines of `"min/avg/max/stddev = W/X/Y/Z ms"` that the ping program gives back to us. ```luau copy print("Sending 4 pings to google 🌏") diff --git a/content/getting-started/2-introduction/2-built-in-libraries.md b/src/content/docs/the-book/2-built-in-libraries.md similarity index 71% rename from content/getting-started/2-introduction/2-built-in-libraries.md rename to src/content/docs/the-book/2-built-in-libraries.md index 1cec4d0..78016de 100644 --- a/content/getting-started/2-introduction/2-built-in-libraries.md +++ b/src/content/docs/the-book/2-built-in-libraries.md @@ -1,12 +1,13 @@ -# Built-in Libraries +--- +title: The Standard Library +--- -Lune contains a large set of built-in libraries, much like Luau itself. These libraries include, but -are not limited to, these libraries and their common use cases: +Lune contains a comprehensive standard library. It includes, but +is not limited to, these libraries and their common use cases: - The [`fs`](../../api-reference/fs.md) library for manipulating files - The [`net`](../../api-reference/net.md) library for making HTTP requests -- The [`process`](../../api-reference/process.md) library for executing external programs and - processes +- The [`process`](../../api-reference/process.md) library for executing external programs and processes This is just a small subset of what is available in Lune, but for now, what is important is that these libraries must be imported using a special kind of `require` statement: @@ -20,8 +21,8 @@ local process = require("@lune/process") As you can see above, unlike Luau's standard libraries such as [`math`](https://luau-lang.org/library#math-library), [`table`](https://luau-lang.org/library#table-library), -[`string`](https://luau-lang.org/library#string-library), and others, Lune's built-in libraries are -not available as global variables and importing them before using them is required (pun intended). +[`string`](https://luau-lang.org/library#string-library), and others, Lune's built-in libraries +are not available as global variables, and importing them before using them is, _required_. The next few sections will contain examples of how to run scripts, more specific usage of Lune's built-in libraries, and what they are most commonly used for. diff --git a/content/getting-started/2-introduction/3-standard-io.mdx b/src/content/docs/the-book/3-standard-io.mdx similarity index 93% rename from content/getting-started/2-introduction/3-standard-io.mdx rename to src/content/docs/the-book/3-standard-io.mdx index dd03c86..3c96f16 100644 --- a/content/getting-started/2-introduction/3-standard-io.mdx +++ b/src/content/docs/the-book/3-standard-io.mdx @@ -1,4 +1,6 @@ -# Standard I/O +--- +title: Standard I/O +--- One of Lune's most useful libraries for writing scripts is the standard I/O library, also known as `stdio`, which will be the first one we introduce here. The pages following this one will introduce @@ -10,7 +12,8 @@ The easiest way to get started and being productive using Lune is to prompt the script for some text input, which you can do using the [`stdio`](../../api-reference/stdio.md) library. Let's make a script called `hello.luau`: -```luau copy filename="hello.luau" +```luau +// hello.luau local stdio = require("@lune/stdio") local name = stdio.prompt("text", "Hello there! What's your name?") @@ -20,14 +23,15 @@ print("Hello, " .. name .. "!") Now you can place this script in your current directory, and run it using Lune: -```sh copy filename="Bash" +```bash title="Terminal" lune run hello ``` You can also prompt for more than just text. Let's extend the above script and ask the person running the script if that was really their name: -```luau copy filename="hello.luau" +```luau +// hello.luau local confirmed = stdio.prompt("confirm", "Is that really your name?") if confirmed then print("Nice to meet you, " .. name .. "!") @@ -54,7 +58,8 @@ Here's a tiny game you can play versus the computer, using nothing but Lune's script, but don't worry, it is still only using the same functions as the script above, albeit this time together with a `while ... do` loop and a couple `if ... then` statements: -```luau copy filename="guessing-game.luau" +```luau +// guessing-game.luau local stdio = require("@lune/stdio") print("") @@ -85,7 +90,7 @@ print("") Just like before, you can place this script in your current directory, and run it using Lune: -```sh copy filename="Bash" +```sh title="Terminal" lune run guessing-game ``` diff --git a/content/getting-started/2-introduction/4-script-arguments.md b/src/content/docs/the-book/4-script-arguments.md similarity index 93% rename from content/getting-started/2-introduction/4-script-arguments.md rename to src/content/docs/the-book/4-script-arguments.md index 339e12f..5e1e78e 100644 --- a/content/getting-started/2-introduction/4-script-arguments.md +++ b/src/content/docs/the-book/4-script-arguments.md @@ -1,8 +1,10 @@ -# Script Arguments +--- +title: Script Arguments +--- Arguments can be passed to Lune scripts directly from the command line when running them: -```sh copy filename="Bash" +```bash title="Terminal" lune run script-name arg1 arg2 "argument three" ``` @@ -10,7 +12,7 @@ These arguments will then be available in your script using the [process](../../api-reference/process.md) built-in library, more specifically in [`process.args`](../../api-reference/process.md#args): -```luau copy +```luau local process = require("@lune/process") print(process.args) @@ -23,7 +25,7 @@ Arguments in [`process.args`](../../api-reference/process.md#args) will always b contiguous array, and are guaranteed to not change during runtime. A useful pattern here could be to check for arguments given, and if there are none, prompt the user for input: -```luau copy +```luau local process = require("@lune/process") local stdio = require("@lune/stdio") diff --git a/content/getting-started/2-introduction/5-network-requests.mdx b/src/content/docs/the-book/5-network-requests.mdx similarity index 99% rename from content/getting-started/2-introduction/5-network-requests.mdx rename to src/content/docs/the-book/5-network-requests.mdx index aa5b0a8..ab770f3 100644 --- a/content/getting-started/2-introduction/5-network-requests.mdx +++ b/src/content/docs/the-book/5-network-requests.mdx @@ -1,4 +1,6 @@ -# Network Requests +--- +title: Network Requests +--- One of Lune's most useful libraries is the networking library, also known as `net`. This library lets you access the internet and make HTTP requests to different websites, servers, and external diff --git a/content/getting-started/2-introduction/6-files-and-directories.mdx b/src/content/docs/the-book/6-files-and-directories.mdx similarity index 74% rename from content/getting-started/2-introduction/6-files-and-directories.mdx rename to src/content/docs/the-book/6-files-and-directories.mdx index 9d35475..2724134 100644 --- a/content/getting-started/2-introduction/6-files-and-directories.mdx +++ b/src/content/docs/the-book/6-files-and-directories.mdx @@ -1,6 +1,8 @@ -import { FileTree, Tabs, Tab } from "nextra/components"; +--- +title: Files & Directories +--- -# Files & Directories +import { FileTree, Tabs, TabItem } from "@astrojs/starlight/components"; Lune has a built-in library for interacting with the filesystem, [`fs`](../../api-reference/fs.md). This library will let you read, write, move, copy files & directories, and more. @@ -10,40 +12,39 @@ This library will let you read, write, move, copy files & directories, and more. Let's use this directory & file tree structure for our examples: - - - - - - - - - + +- files.luau +- dirs.luau +- hello-world.json +- files + - coolstuff.toml + - super.secret.txt +
Show file contents - - ```json copy filename="hello-world.json" + + ```json title="JSON" { "Hello": "World" } ``` - - - ```toml copy filename="coolstuff.toml" + + + ```toml title="TOML" [you] cool = true awesome = "yep" ``` - - - ```txt copy filename="super.secret.txt" + + + ```txt title="TXT" Hey you're not supposed to be in here! ``` - +
@@ -52,7 +53,8 @@ Let's use this directory & file tree structure for our examples: Reading and writing files using the `fs` library is very simple and _only_ involves strings: -```luau copy filename="files.luau" +```luau +// files.luau local fs = require("@lune/fs") --> Print out the contents of all of the files @@ -78,7 +80,8 @@ It is up to you to know how your files are structured and handle them appropriat Reading and creating directories has a very similar API, but slightly different parameters and return values: -```luau copy filename="dirs.luau" +```luau +// dirs.luau local fs = require("@lune/fs") --[[ @@ -113,17 +116,17 @@ In the above example: - `fs.readDir` returns a table (array) of strings, with file and directory names - `fs.writeDir` takes only the directory name (path) to create a directory at -- `fs.removeDir` removes the directory **_and everything inside it_**, use with caution +- `fs.removeDir` removes the directory **_and everything inside it_** - use with caution! ## Resulting File Tree This is what our directory & file tree structure would look like after running the above examples: - - - - - - + +- files.luau +- dirs.luau +- hello-world.json +- myCoolDir/ + diff --git a/content/getting-started/2-introduction/7-environment-variables.md b/src/content/docs/the-book/7-environment-variables.md similarity index 95% rename from content/getting-started/2-introduction/7-environment-variables.md rename to src/content/docs/the-book/7-environment-variables.md index 8d0a34f..d7e85b6 100644 --- a/content/getting-started/2-introduction/7-environment-variables.md +++ b/src/content/docs/the-book/7-environment-variables.md @@ -1,10 +1,12 @@ -# Environment Variables +--- +title: Environment Variables +--- Environment variables, just like script arguments, are available using the [process](../../api-reference/process.md) built-in library, more specifically in [`process.env`](../../api-reference/process.md#env): -```luau copy +```luau local process = require("@lune/process") assert(process.env.PATH ~= nil, "Missing PATH") @@ -23,7 +25,7 @@ You can also iterate over all of the known environment variables using Luau's ge Here is an example snippet that prints a checkmark if an environment variable has some contents and is not empty, and a red cross otherwise: -```luau copy +```luau local process = require("@lune/process") for key, value in process.env do diff --git a/src/content/docs/the-book/8-modules.mdx b/src/content/docs/the-book/8-modules.mdx new file mode 100644 index 0000000..f3e6c96 --- /dev/null +++ b/src/content/docs/the-book/8-modules.mdx @@ -0,0 +1,89 @@ +--- +title: Modules +--- + +import { FileTree, Tabs, TabItem, Aside } from "@astrojs/starlight/components"; + +At this point you know how the most important built-in libraries in Lune work and how to use them, +and your code is probably getting longer and more difficult to read. Splitting your code into +multiple files can help you stay organized. + +Modularizing your code and splitting it across several files in Lune is different from other +versions of Lua and Luau, and more similar to how things work in other languages such as JavaScript. + +## Example File Tree + +Let's use this directory & file tree structure for our examples: + + + +- main.luau +- sibling.luau +- modules + - init.luau + - module.luau + + + + + + ```luau + // main.luau + local sibling = require("sibling") + local modules = require("modules") + + print(sibling.Hello) --> World + + print(modules.Child.Foo) --> Bar + print(modules.Child.Fizz) --> Buzz + + print(modules.Sibling.Hello) --> World + ``` + + + ```luau + // sibling.luau + return { + Hello = "World", + } + ``` + + + ```luau + // modules/init.luau + return { + Child = require("@self/child"), + Sibling = require("./sibling"), + } + ``` + + + ```luau + // modules/child.luau + return { + Foo = "Bar", + Fizz = "Buzz", + } + ``` + + + + +## File Require Statements + +Let's decipher these modules and what they are doing: + +- The `main` module requires `sibling` and `modules` next to it +- The `modules` module requires `child` inside of it using the special `@self` alias +- The `modules` module requires `sibling` next to it using `./` + +This is the standard behavior according to Luau require-by-string, +which you can read more about on the official Luau documentation site. + + diff --git a/content/getting-started/2-introduction/9-task-scheduler.mdx b/src/content/docs/the-book/9-task-scheduler.md similarity index 65% rename from content/getting-started/2-introduction/9-task-scheduler.mdx rename to src/content/docs/the-book/9-task-scheduler.md index 7de25f5..3e8a5cd 100644 --- a/content/getting-started/2-introduction/9-task-scheduler.mdx +++ b/src/content/docs/the-book/9-task-scheduler.md @@ -1,14 +1,42 @@ -# The Task Scheduler +--- +title: The Task Scheduler +--- Lune has a built-in task scheduler, which can let you run things at fixed intervals, ensure some work happens after everything else is already done, and more. -## Spawning Tasks & Waiting +The task scheduler is the backbone of Lune, and lets you handle structured concurrency. It is +implemented using lightweight Lua threads / coroutines, and has **strong ordering guarantees**. + +## Ordering + +The main purpose of the task scheduler is to ensure consistent ordering, and to +let you prioritize work on three different levels by using the `task` standard library: + +1. **Immediate**: Tasks that should run immediately can be spawned using `task.spawn`. +2. **Deferred**: Tasks that should run after all immediate tasks have finished can be spawned using `task.defer`. +3. **Delayed**: Tasks that should run after a certain amount of time has passed can be spawned using `task.delay`. + +
+Advanced: Runtime-Controlled Threads & Prioritization + +These are user-facing concepts, but perhaps more interesting, is that Lune _**prioritizes Lua threads**_ +over runtime-spawned tasks, such as those for incoming requests in `net.serve`. + +This means that, in real world scenarios such as handling incoming requests in an HTTP server, the scheduler +will ensure that your existing tasks are not starved of resources, and are always prioritized over handling +new requests, for maximum throughput & lowest possible latency. + +
+ +## Example Usage + +### Spawning Tasks & Waiting This example script will run several tasks concurrently, in lightweight Lua threads, also known as coroutines: -```luau copy +```luau local task = require("@lune/task") print("Hello, scheduler!") @@ -30,12 +58,12 @@ task.delay(5, function() end) ``` -## Deferring Work +### Deferring Work This example script runs a bit of work after all other threads have finished their work or are yielding waiting for some other result: -```luau copy +```luau local task = require("@lune/task") task.defer(function() @@ -55,12 +83,12 @@ end print("Done!") ``` -## Advanced Usage & Async +### Advanced Usage & Async -Spawning tasks like this can be very useful together with asynchronous APIs from other built-in +Spawning tasks like this can be very useful together with asynchronous APIs from other standard libraries, such as [`net.request`](../../api-reference/net.md#request): -```luau copy +```luau local net = require("@lune/net") local task = require("@lune/task") @@ -83,13 +111,13 @@ completed = true
Bonus -## Barebones Signal Implementation +### Barebones Signal Implementation Using the task library, it becomes trivial to implement signal objects that take callbacks to run when a signal is fired, and that can handle both synchronous and yielding (async) callbacks without additional complexity: -```luau copy +```luau local task = require("@lune/task") local function newSignal() From ee39b1b3c9b07322b104d1ba9f373bf34dcce46e Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Tue, 15 Jul 2025 20:56:26 +0200 Subject: [PATCH 6/8] Astro uses dist and not out dir --- .github/workflows/deploy.yaml | 2 +- .gitignore | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index a62f8f1..892f456 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -39,7 +39,7 @@ jobs: - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: - path: ./out + path: ./dist deploy: name: "Deploy" diff --git a/.gitignore b/.gitignore index 86d9470..e9a87e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,13 @@ /.DS_Store /node_modules /temp -/out +/dist /.astro /.env /**/.DS_Store /**/node_modules /**/temp -/**/out +/**/dist /**/.astro /**/.env From 8aa464dd65847e28d3bf12eada6d7cd58444dd99 Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Tue, 15 Jul 2025 20:58:59 +0200 Subject: [PATCH 7/8] Add proper title and logo to config --- astro.config.mjs | 6 +++- public/favicon.svg | 70 +++++++++++++++++++++++++++++++++++++++- src/assets/houston.webp | Bin 98506 -> 0 bytes src/assets/logo.svg | 69 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 143 insertions(+), 2 deletions(-) delete mode 100644 src/assets/houston.webp create mode 100644 src/assets/logo.svg diff --git a/astro.config.mjs b/astro.config.mjs index 7d867af..6ff6480 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -6,7 +6,11 @@ import starlight from "@astrojs/starlight"; export default defineConfig({ integrations: [ starlight({ - title: "My Docs", + title: "Lune", + logo: { + src: "./src/assets/logo.svg", + replacesTitle: true, + }, social: [ { icon: "github", diff --git a/public/favicon.svg b/public/favicon.svg index cba5ac1..fef2657 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1 +1,69 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/houston.webp b/src/assets/houston.webp deleted file mode 100644 index 930c164974ad8eb528878f15a98016249b8cf546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98506 zcmV(=K-s@iNk&G(fB^tkMM6+kP&il$0000G0000V0{|Zb06|PpNN2_X009|?k*wCu zybmCh^xv>#n-U`WKLL1Kfcf&30Avp6urt53B-yg7zF9V8SABtPQ}oIQ3BX?fL_^@Z zwM0kx;G-1Y1f#q);>!<6B6-O_;xn;bfk~8R zKit7mk(HW&K>;H{k|c%d|8HJFnB=*vEFoRHcM~xIvLM@T+vbTxc?6*IU|v8a^_Ls9 zZObONv7YNKPZa1Xg{`V?4;ln(RydZ|Ff%j5W@ct)9Ol5Lz~(T=5SAtHJr;YDy1uU! zR(+++j^lo>wVwOD?)U5Vkn2}O$f9j4Xd~NNC4lEW?-fikZRgjQY}>AF+g8-dK)<~Y zn!WaYM1WWm4T8Xz)>?}%t-*a3vtDy4wU4ppT5HeY!Xm;JWZOd9O4ybK2Gsl9dxY#b znK!@B$A3K@|M+kJ_;3ICZ~ypj|NpHP6@V9wFOZ3mLpT^0mNl-o_#GX!#xoy)oyzSu z`%lxO@AbnS3->?l(Z`2I08w9x?tOizgl0TAlXOdF9{X$ncCuS{OBfPYe|IW2P_~dS z#rDS>K&^>9uAAp{*Q#kwNm+ zCTMBFfNH!55KaaGx5~#~7LMMNhlT~i69PpX#^}ik-_VU&waU|_t!Kl8;3>NTyO>E4 zPyh?c2y9qPsrTfarYDQeSjs)qJF(TcPetGd@{U$C?PqfdFuJB43Zj}G)d>8)yqETC zFx2>v2S{Ua#0jw8WR`&)SO#fYG@uB?&0MI+tbZ7%P@|RsSf?y89=NssjD2S@aIPzp;cB#F7cYcEObg*l^>fLy5o$ z0>S~-&^b3Up0q!hc_hsI7TiJygh7I*u@L=%`XXvDa#%TLYeF|HZhPt$lg|#~iZYr} zMQ_+A@zMKln?~cdBp?R80ti>Tbc$8$WZyDla_BTuxF3wht4Gb008fS7XG{8nX zH5i~+iVYyksvzsV(+x_DqiVNrfs`i@{nvTVU^Adbdkqi}ts8RzsGA3SVXh6FSq~u5 zPcnF!P)kcGveR<$X0PLnP!0t z7V(J7D2R0ludW5-rGT+mZ7nxrm>mQ`(v-*IiNL*xNAb1EY>`R81mC&QEqF^IeD);x zV%n!;acv0I$-LMLx+_4X^IV8&!T_icf@_r*kbN9)vXtF-e_OtkPZDy zB#3X);;~G!rG~2>cNk9WzDwml%-^&!%)kR7DTn}1hii4~iK7%k7HZFql(tcBR3Z0}u@qE;o|_rUe&($XNj{wUA)LaU>B4Ce-Z9 z77JRZ(3^TP+@e?$pElPdgY6%3v{aM={gWG#%ss#Te2 zKAGARcEW7gxQ)WyxXXN3B8GP7%hz{z!AV=cnC8)C+|owfe6>SG0ISXZ%aLe%X(g%4wBArCQ>pQ~$o%!1|bIo!Rz zJOHO^dtw&?Y42AIuvyu!qPxGW6Rw;}xK(qFsP2!jXl;X9^?3tOJ^=(p=W2l3^;y|a z3js605Y)dL43Qw(jD_Wo{>7(3cX@er@36Z(Tpnl}D@;cJc?8ZXzC_8PDdulck5oXJ zq_Z$_c>u>22^lmzC{{0cCuQ9bsGOw05ctxJ>5n>ybuv4<^WVR%jl^Y>-EQpWhxeC7 zvBE%&3pD{e(t}zH?PG$)R-*;1T3=Qsk0P}55&8f@khE8y1eC-D2%~Lpg#sIK%TFr> zkhAg0ulptd{@petd0uApH! zC*w^BL-G=o>g|rzP-Hvf<{u2swg6Gx{x1npNN*Ycd!{u{RqKsRWX7gi67@QXV9isbG;S2MOL;Y$D&ans`BC>Pd2hn z&i=LEy%my0;~)Zw*CF0=DX!I2s+(>NZH@Q8gq6z~x=ty?pJBZ@F)~l#G!lZdPy@^hZRkM50vc&v8_H zL(x-VK-$EJ<}rU85*x;XdW*(|Hl1c|II)4)s8^92kp@;GbUo3bf9gN4gMsDjT1VX? z01fZ}n?2~xH4HzfXNo#xOaRyqEUESo`a)OGsZm%Ar%$xjJN-gsH4YpV)p&O3y-+R1VG?@GV{cSJoYkM!wxjtR#Y(U)&%5TU z&~am#R=lBUkuMhwyA`X~$-;z;rkiglNV5gB;`* ziBZQ=kCCE=62iP`7FUgsE*4vqcI#LLfO0J_L<-$I#;~(@A01sW;@%BJb9CYI?2(=V zy=&yC5~oOAL)^7OFG2Y9mDI=px0exW6#u-PDu2tq}NJ zmMUN5WqIoKK_b+X6}U|_5I!l{TJVj#k+G52hT;_295GlaZfCG}%FoNBM(xzKh|t>3 zKv^uZ)IvfPL~Du@=|TFiT1R-oEa~q$%hQAp5Uth9ovSy7?aWP+g}|(#E4~qnX!-RPn>92;#S4Mvz-KuK(y6FwnAxY+o8!a8Q6HEZDclMK zv;#z~(H3SLix(aMYb__sGIvhS-lYe%p{LmzqYJEEvb4;4-omdZ_dtE7DXeJN(3!`9 zZUug894}I^JC)aS(g4GudI2rYrR8Ixq0B>17{qcwTTpcn;Ki-8ci@BfM zp=oG3ztRX)b(2&z$P^`pY(UYa?~1Q#Kgb>Skg?a;5Z^<$OA#!^Q7}tE)s|U$qUGZB zC#S(k* zG?`{O9-8gv{;aS(e)>1#E2hz@tx)JHoBuvUEM4ad*eX5jNcogtDQxuLVnDs+cf`JO zN1oPysmcuij|OIA2wO(;F}my-!LE8NjT^jk~iS7D=4DO3V@Vt;lI*an5)KzTd~0F8a}#P5KdRW70zk5r$WK41JsNPE~sUUGNZhV6A++o zmEiH&|JlQ;=B-Ui_NG}4M_Gwhup+qkepoVvbehX;?oF&*i_*FlT=KhMf4?I^?)(G^ zxegOWA>Bo_mv=df7oCjSnl4@6GL}#OqTlxiZ#~Q!SJKyA)dC^5jq7nwyd4g3SZ1>h z(DX}UXE23RQ}Q>##!okVs9kbN*r`#X#Y^*;EiKjVWO6KJ(UWD8-2TGHzu?dQQ@`j*FZy}0&moh5SO-N5HYOav6%i{aBuqA9htTOM}SxwvA1|Z zzv6fWghgkMzv~OX=ya&o5ASv-0s>L?vu@$ElH^)9pQobkR8-D}5sVxZwTxK?4n+cw z-T_<0WTkeYY+TWYz?U@DmhWGwy_1RY#1}pOMdxZ`_&7ad+}iGj;YRN)$)xAPUaB&( z6rM&9mm)HY1|m4JS7D5y`SRb`0!*R$iFA?vz1S^tW`Y7GL`he*(Q5VQQhx zq6vj&y)q!jD=nY#_*3tC_jxiZ%?6h|#FqI0G;3*z4PicY^pxegqN2EY@`{o;zWQ-vE~6B_c_b*wy(IIs_jkXhu`-?$hNC#im4Xq z#+gj)?YsMC(A~@ntnIWwIcpKw9~z#%>RUe&=qAMO0;I#5i%zPilX_p*<6jy7qNM3B z5I+u|8=^GWQ!lSv;_+A(<(X{HM2lr9KFfV+YN5_O1$+7UD}UGS{=@A!_w16=6tx;e z3w<&ln@9Pb|Gu`o^8jBD-==M$z}jHMA!iot1!4D#(5Jibc-u;4XD${T=@TG*$@i5z zkl@4WJtUz}C!Q3Li%Ou&?0@;k|6y%!`EMTW-bk?Q5U55|#D4NiFJosxmHgj@V{aQF zmi-)OYWvAw`E7^w8w3QJsSUN*PzYp;YWY|GNM{wYS$$J~9NcH6=6Na>04nJDYs=NX zK9@1q=5vkgENOHd=pbCEwr^HnU+>RwxX}-Hy4-%TC=b9V0>(I*TzLF5{)ON1VCE^o zKitJf&9WfYE;Y8^?E4oay?%4yqWBejPmKDcQbu8^g%!)(e!cHeX-*+hcZm`j?cC}` zH0j^|g*z{|@UklV`88W6RSK$9xMs{PVImQsnnL%2JipJIv!<6(**jU_{~{1#jdslq z-&lylNI&8J*iiO{i_9yylnYou*8JNNJ^t36g?|~)K`(tx=@9saDKAhZw<1&Y%0WuE z=z2xcR}1|_C(56$}+zizc2x2@63bI_YmCmWSz)6JAqVs2zmL5yM(f_)kS=B6leyNQN zq?<=>?Ar-c0e*GSPk+-t^~ERE7748&YZP0?Dlzk2GRdGOPi%g{V`$rjBE;hIh(e6k zgh4glPA|*ZJ0C0@mxl4PH$~>Cf}$GBnHFZ*Pjzu^(dK-~^MQWZzy6!iV42S~!9Ek_?Cik?!r_}=d*PFVsyYZPg11PH zN&uxh)R*n+LSzURf8W1(ak8A$qYE8q%PV6M`LNeSCq++X*vl{+RgS$fw$@Q3d#%Q&fITXtNDB9aC|gIv5KOuL)S zJ#?HQTAWhnLcR$w>&+_fJhDaYZAK8?v;En7MS5x@I}nAl;+3YUQpX^|>rT^KPP+K# z{-N7mY?H)veCARHoETuk19Y?5QayPzQp*FlH>%~pf*2pp4=D|L#CaJ~j;Lb7P+uIk z6t|vPmNty5$qQp^+-}zODd5w9Wh}Y~1bQ|OVcU!UKmP2XAko_!eh*TW!JfBbx zDXLd?2!O`*ty*oBsh9AQHA`)R`Xe#Rxel*cq8D3V0RedJGnVA@fbK5Tv34u{#>cIxyS8+YpW0NwpDfeW|d^pc?9-*m7O`3C{-v9@uE`4I9@R1!(& zhch(ySc)+y4d5gEV5re}61fqiW=HS56$&jy9zR_oe4-S@E1oA>Yt-fou#0Xn_DDj| zrhH9MZ3MH4{6m8^7Z2D^8E{iI$~8NiJ;6=BoI8?4^aDf&$*+P>)5FX8SrM}QXb}=R z5gP8r^OfX_>O?ffxf=rsQI5j!OX|M`x*62v&TITFHSk>nr7pGD>tcWl9f5jtGseUL zpmWK~Voq3CaO>QGtcMesT0}qFCn2lN;jGC3!f~&grYv4cA+EjjNg(1-o{;7<-rV9P z1675n77{#U(Hi|#Hc+diRK7PPYpo67={r9j1EZsN^nx0|W)(*1vwBTv6>4WvNjQZH zn4eCWTn0S{y(3^>4#3D-R}cXg5K{#30?HFyqgNxe1&w(q6c;2`?Kmj8UUVuy?5zwJ zjwjVJTv)<-GYA`r#-*(XE|;=CTOt_9h1*4%fwXlPhDoX*6A(pa@PoiyWivtD%h(bW z|M@QTx*9l3sCUffw@gBZ=IsZIY`NIP?0rQ!Zs?ht2qUb6qg|*4uIE2Rq%8yhHj;Vu zQjr-*t4DX1kMF@AxrT!!~r^lEk7u@xT{VHHR4et^=!A&jH71wM$=ZhN%;^4p_(Q7;Q2OD zm)l#o2p?@;d$qf$ef@7R_`$f|dl+8w>a=Vowz|vUkMnYinKv|M+szn~=JTQf4)x@l zy0&k8URd4mOeedDz2tMDL9y%?AU<0jUhciPWFF2;#X%nS%|u;ci?ys+?}Tt z<09(Gu01tCOK8wuipPZYv9{CEUTFUis#_D?71GsE44vr`+Z9ro{@non)D<#t#q~hjeZYrX^EDR1=tPaDbJ%Xh6J@aNIzcaWglKgkn?KC=nn#Ps&lN;P zCIHL_sAAvmV{2}yAMewh>XM4~_}Q0G!cD?rJhE)1S$)3=^ za-EM!t20hT7{Q>g-v@MKs3*kJ9EO{9*`M`v9|V|~U0(;(QS_O%DXeIdTNjAn8kw5x zrZ8vuAo3kXR#rSIl!eiLF+$uh&j(YZIb4=DJbotkj^@ zfex<}k|8=wyguVZNX$yzn8`8KT|!S-zo=!_1dw>Q>HGd>4|C|HIj#?$xkR#8+;4(N{p59Im8!-R!*`g`1dY*guQ;7|#?+vQT9M`WEQM=FXULb#&&e5C0R8cjuTJ;!H z6^icay}&f7T;`g&=uX$aU>52*n9)&t(@C3TVJI!`oM(4e%T=p5oV!w&>yi-ZGdwRc zm|RE<9rT_@k?+g2h%TdeQjGD-M3zE9`*l=F9c3SiH3)Oo-+VrHZ6WQ=7BnKBtc;ax zgAvkuT9<^kv+T=_eh=NNpVcPy?wZ#vv^OKMqh?dM=8S}2sh=mCRhzl_P`W9mDXv=U zL|oVRcCvDN(SM3?vrRH!BA)0Yy3FfeU>#DCwq|t(YaNE;U)6HX91P&+o-dX<9`+cd z6UlvwN0QHfQc-`UHoBJ(P-3szv;HW8aky+0*U;AK>wEJ&nNQd-U2k{_cYCJj7_hbeh!Y`lC11P`q7v3k9FU!y~c ztzAwixwF8J$>`o{<&{rDUef@X*1c;N1RSjr2-)u5?=prj89HxYYTY?3Zt(W=(WQ2r zAB2-8zam~qqA$}P$|0cNZRF#S*-*861vti)*dye2W1bDEE{qg2aluJN=~sQHk!7h& z-@nvtqMP^DQmGd3StASP$tVT%xPISkcYj^II>Ly&2UfTRLxg;dzM@5;lisWtQG~0q z1-Z=@erD&?ZDD~HUKcfC>>DH3tle%g#hE6XzfaW|Q}!yfVs|;2|nX&l2Y?%jGZ8=a7h$vatwK^_G$rpA4#s`+Jm9F+qw%4FyTTX%jfs zymb>NZNa(E@bjVu$%(!YS%40C;pI?U%xA$OF~o_Y_a5-%i4CGUOsg!C1=K9a7i!hc zYAQDhJn<+us)r1FwypUQ2PM!+H$DfhlM6}dsNTVHPrt5BC$_NaR?U-=@_ z!Hc~QuIMa|yQtUsa5P!T$5-jBp{Z~obYok21GE&>I?#jt-B-sd*7v%dA}=~E^SN}w zlUI{_n5auvmFEIQqB|}7>{3;}SJ3+wZv=n+63*MYPMmrkCF%{Ef_cfgA1Ze}BR1B6 zdP+7DDGDH8lAL?@@9&-~!Xr##-JHO*XTKZs*DLu5BEy#Y=jQ!_d*<2T{>_AV?g})w zLtrIu8+Cv5Q19i}tKW5Kt#q2fRZ@5@5zy_F)Tk^U9tsAG49;o%EPpRFl=@ARK-+sJ zP)R8f7ofv5m&gI=nK`N_9Zyj8(z_0=O7@$;TXk=8HW3K@-fFg1bth;W+FlZ&64#SA z?bL|V39=Lg1coZl+$$}Hl|+K=C@@Wf;}R`{)Ojj$0?|BA%u_!_c^S#9>HX>(s^r<6S@R8t6E@vg5Z_5OpRmX7j(Qvmpl z=I{st?ah?ZFzIH0nTa;>trE1H6Y!Qt&)$Dg+xH3xJ|bqQdUZE&A*;3Z(W9xhr_%3l!h1y94LDN41Eel0m4LRP6bjcsqSMX+bl+R%lW4kxC)# z`SShBf1~BOL(L!rTAV47SJPtd(~q}i)JxfDeqU=n=6BdbogI!Ra61#EWj?Fqb?xb3 z-Muxd@)?7jIKhi^{hMfe%atzq+bW3;QAdy&IJ}1uZJI z^L$F(!Azew0x*cbY8KVmB5B`n@=QJRwOsvlSEz$L zL6Sn_TT(Tijf3!9m-yLvF5NHB+!pVvDtbfyj5kUNm>0^D^^V8|(jaVv^H=UqpmnW` zN|UXf4yfn8oT1dFz0w;H&;lm0`2Jrt1Za1fBBJX6^Iq=V=+=;~bFd;ADOkSIW2^Uj zKL<^N?4-V*$2HaMupseO8w-)tku=Fm1OxKkGp-RIUbK`YGs4cHu@KO;7-mPWzp4wO zB3Xy(+0pUAdlRMB?o|%Vaasf7(1u!DmGqG<`^JP;c8zYgmC5{WU!$8vy5*{Myl#E} z`l%aKNsW)yJ?RX}uO92_2GpQwPF8UMSIDlymWd+H3h1i^3eiZ`+`WJQzZ!8he+V}^ z_a;AQVM7Nl6^v?9HMyUtRAl(Bhw8Z&2$AlBe2aDFv%=OpbU%hIf{}z#3RnC>$ z69(5|**c=G+z8AKM`_1Z`@5elq)?Elr?w|y`*v($EbU;oXGQr! zz;q&bi_Yy4H8?lsxl*{(B8l&pH{4Hlfg_gGv|C+J$qeCI$jZxhpqc8gIr#o0i6Vnl zJhcq7iw)pX3YZ!$h$s)Q=J?>b`u8vr#gwKMlTy;Sl9Pv2S$NvlkwP?zuYN zGkXuJ8*#I$iGa4n43S1bKr0_qrVkr((uv>h&xMR$=205pgwJ>e{!&iimbHWzL&Aip z^+N3|JzA~Z^s2!NHWfG_f{zhEo)rzeU5*UEwq+9>;WHHqic-pdp;g1P9 z%~%W-5llG}6*?i(on~G#zT}4hPk^NRbQi4W)>$DstBGgQMpEK~LB(efMF5AdzOQOn z0UkkY;<^7y5-DbpCjvl%gj(@BS@vHmsz^Ro^h;}~ar(V7`6i_H0w`ZHWpi z@G`U%$$xz>_;i%8I~Wy|?$2C#VVk!J8?dp=?d?9g-FZac6?)4mJ)@T*LY!{R2JsD! zdYH`tO5^&g`D*`C*m#R11L!beYJzYRhKbPDK(Wv}HEP85b>K})e=S|q3+^F`2$`1t zX$VG+u|&{kbFm;Epq{wzK#CQ6&gWF5vDAGDva%oG39!HV(W)CG+S1a+Wk7H# zJ!Xo=<-v^t#d`QOmE@P7-4>y@MHzh*8E#D2bnpHfe5nau+4d5$ZqnP~b%X8pqSJ6` zudaEV+(p*S3LZ6f?mvvvD6Ipu*@(1#&gd>iiTz@ZEMRG%9Ph^PSoIUDJHkh zh-q7A>-zdkG4DE;Ned%b-(i00g}{4IbWC2$YY|#?RlUY7NJ}fW8I#&f0_G!()C#x} za7#o(5(8bvnJpu6zE!>CC;~j@lHB1IMHRH#RCi!U10unscrq|&@&NnuzGBsDcRzc7 zLCo!Io7ZJORU5vR-d%o|@6SRa^+ z6{_+>nP;g1_NJL|k#naBFeU8x*_P_wA(lG5`jU5}JoW|gz5ex+0osT)n7$?*kKHSl zwX(`A324M^0SEpU)YEn*Tn1+C9B01~;tdzr;!(^Y%!PDH-leXkmJs~wr;{wOlset$ zX`-r6a3^r#DFo&kEnd20<}D*%%#!dGO_6Tj$oz_no=Pl-qJ&@iR{-3sI|;mfrO0&n zdN+eu@H#KDv=vW-4nN^;gJF-xA|l7%(SgU5(ZjY?=~;LRQDc+(XL5+QHah$Nex{Q# zQJO&2Qxx3<+8h%hqXk5vwzW*}QbiRiMS8Bc>O`-?=cSFPZZ=CI7GeXtL*3m#O}fT= zf%mgt5PvNm&TREm0D-*`AN_b9)yV*axHgK`6(rK2B63=0>>nQhX@I1Gu9(${4O93J zy*Fia(3daMx8SJNYE#sfMF@m% zb$bv+Iy4@6^P^*ax9}4-P*oY+L@>r5?-O7jImcTTI%q6(oe(&tPZ{ITEt&)(#>|S+ zNdr(QLMYYFKm8h`&9IEXix4a+K`^o`WxExYM8UgJmS(?K^*Y_}K3g$&Z>^`l*|~%8 zn%X6(nWLa0C2k$?7;gj3Nf#sq_({*ZhG~>UScHlC5B(e!9Hw~S56mqY*McCpb-O8)?c-%~8lh_Hn{M6jHKzc{ zKE>Njzgg6Kh1Yf#x50k=Csb*H3fuzmWRu+^Kh}6IgYGio&5%CJ5Gk1sPpU$EC)sou zsE=7s>^6TW1o*N4{}Gae5#BM1RRI8e*EHnVuGWK@Ys5wAxxL$hPYe?hziPLqZ6%$X zH^M!6HH@6Ovbf3gj^~C~P|&tQc+3*A{ldsdzf}8sjbsidCQnE-w{X;{K+kdKo8l0O zqL@Nb1JH*oy&BAnN)3{aRHp*f?Fo&HOJh5Za}Wef)TYtPm4H>gJx0o~-(}COy3sC6 z@Q{?!uEG0JQyx<85^`g$GUo!hqkP^3GY6&uGVqDLp>_-*st%mZ;`mYD- zmV0jwCtee`CwjrO z3WUg!`xH!22m~M>fC1JE2`IPcwi-$Tet|W~6Irz4tl$VyM1)UiMYfL%D%>N2R<-VJ zq@7WLNQBubAXYFF&51}Szx?EWmhl{G3nc{R)L6e{6_x3@Kc)jJtqQL|$D~`@qOla# zvhZNfJd#8eWcHNNB~nIGABUwyvww~yVeCz$L+c`ulvJh!ST z8)qaCGOdMAK)w08ja@OdMJcfJEPzG?1V4$%vHhIdi<-G!AZibgvm=C7z%xSXtH33U zd7O}I=seS`+9<^afc=A?neankC-#Hi<`6dF)|LP|k_Il0gT|9j#d-hv>$`mG?<`+S z^+Y_=g38|m-6(wH^XztM+eRPXx^T9lX(K7X z;dFw>WFU8yC$x+D$O}O%2vMNax(s`<>uq5biq_Ao5KJPnEEA_8b`BX0bpuw9i@JpY z45Ai%A>MxZ_LK!zg%@xUv!qYaXQ?~NfAKP-i5WBes0dETV=pq0q}B zoW#^ryr9*bJe*X3i1bP+H1!J25l_G*POu|j;%F@lgAyK{6mK0RA!i`L;1Yobr9dTF zC5XgsRc+Q+jm-BO(w6xqUo4sim^CsLt!@|h6Vx4aZ+%RQmU@@Ok`afdoY6qkUytv1 zlsy?|v-Wc0EO%@M(bfsflTL+nKBOd24@8|}I-iW@q8Xga%GW{FK)=0+GzvT!YGsRJ z)k$dG=#E(Gbk+uI?q=A}c+fL zlGfzby(!-a6=tC@ujwy;?*U$N-zdm)kn zJdLw)1yfTV_28!ffEbDbAf$;vMzgdEbfFe$6OFKk;mUQCWgbY0J)VkKLLQzcUO`cd z+?%N^i)L{|ye#PrlQQ?~p6yol4an_p!C6^F^iNRtuKq<@P`j?JJY>_;0197!A&xSC zqGPV>jE&8+H36IQ#(^r1X``SUz}ZxZ3F!%2a3+{T_e~gTo`C?JR&uxwqV?wwM5K{8 zwK>~vc7zH_OC7oaknYGLg)x?nEiI(7_-67an!?3U0C#G0m+>j;j^)-n(C2~+tGWm@ zHJmBwon!_{Osm@-Wlm3Nt91I9J?*+l08kvUKf&OppfbY{DX%D~#?eB}blF02v&iZ-JmuT4ANfGQOl~NZc@Id}L1R zp4?w1!|J!(U;OilIf3RjwWV++N>~`k0^!NVdv!M#<_p29DeD7l!@QMZ%F*l9hv^g4 zJ;MD0ooEQ~%?yP|7S=An72@$1U{{Prv=BxmNE)iR0aBf=A^;ds0GkYW-nZv(+Xapr zVFXEH%Cx>1_*&)5xWB-N%Umr#2V~3&^eqH1VjR^uY-R9@VHK1NSYFVw)@%CCuWL~h z={YkimU*k;)70Iy@@!vwMgoL5Knb0)?*8TP(OyT#NH|U=fjHDFMiuOVBLSRCqdW(K zSudmzOd&JUU{S?pF$&!2tXd}S;`Icey02yV*ylEJDQc4u~OE ze+jn5jKQ)LQM(amh^KA?CBO^>EJG0Dwzw<=1=O?k< zC#N#mvs2T0K_52avkAO-dI|0pin?^%m@#@+D7JL}A!XQUP)WFcg#auDw^EP~4assIk zJ|?~8zTfh*iWcMA(iUzxYpA`pR_Ay+55815?Oc6|R8+R+87Uf>I z68^K)eR>-Uo*i3CF&Pj6O{_lcg75`58=#1A@UM9U@dNG7!*H!)|TrB8Z$a zar5G%T+A$&PX-XYR2{88S(l0NGbj3)x0^&_jWT4NYc!P5Rz)l#dTwzLN;@h=8EfmP zaVjF~Jo#;rcC%|b*F;Zz>2uT_X{s=P0p@cBlhf%!vU;S)rTDe~Jb(i+wKp76`S#GY zPBZc#AQDIbGl*d&1GGT}4c6-xnYtnc849Th0diTENwY4NW{+bjg0*<`8DO7*v^Pc= zk1OcTJhU3432quXKg+Z?Sx)>L547`5bjO@_Xy8^?5QoW8jE8 z`TNBCm7gc7?m?I%woH_;VAUf+u3?p=i}Fy8jv65|8h1e(Fin)M5cn*=wX6dFd}w^? z=iU08&;8iC{>UaeN~XxXkgOVR7&m6?o%U(en?#GZ7o^2|`cYgw0{jLl_^*39{Y-Tq zBFg9E+ew0maflTYED!zC&ygc0j1|T?7>ZM45(QG7#_l$AgqqEybXQ4dpyr4A6Ux=i-7U+|0G^C>3qh6N&tSCMb_S~OIds&`*D6(?Xt z*T5;LgH<9r5Is|Pvp#Fwnk(o}KZ_Rk_pf^w@?%44emV`wr7nc5n}5+e8DkMuSI(AV zDx{%79|DE|nkDVJAVG8IsXMptJo)HZBO!wO^6u4Z*RNe(-Mwl=GCC|!fSzleNbB%h z*0H|DU-(O&rX-^OBSfd3BOU8(wxHb6ra57%)NZUO5SP{}o)CBs4cwJ2jfH)KA7VfC z@u}+WzZ5k@I&gM2f zyL`#vGo~fnif{Lpl+_RV-G-}TyURBLn_{;|HMYgyx$eI(gb;4+=D|d1lI9yU`0Bo`wa9s+Xa1R=VRGMkvS~ zSt(QD__=wak^|JSe&4#6`94inNX(E^$jvpG^sC;6;y>~UD&`FaXDukD253U59D{oj zzzFNN{kmWKG?=v|g`+fGY|&J~Q_;=o-sR);_D#C|JDIjpe#m2Mgtjy0wBt0^|04=ence`BLDMD%%3o zAy?MymwX>n#4$dWxZQLp&x(l=fMDQyE@!{z*Stqo2!S%_mDDo;pvAHJG$5?Q<<)C{ zW4FKlsr{8s|NTfv(^Ie>S=ChGIOoJ{VYim!Qv)VrvAyP1@C~0(F6Knh{Z#iRS@)h= zx>0v4v1v57-?i?;HW5D;G|Ob3fXj$fZq#4$Rvw3v%b~FA?BKa)BWz~%p@4YLKl$z@ z&cD^1@FZSOPx8x zh25Rwz-fH+PyWd>_2Q+hVY~oIzc(a>0ESIoccg*!=%*f$D)2q{JnPw7Ct#2MbRHD2 zR_5+gLIL?k5x^etUUzt^bg@2J_ZzAg*S)5$h7v_ZBoKs*v_p)3!5hWed!L3mM?AXD zaAnKxp8nmxXX7kEa|#j1LM=5EsmT^9+9Ye;H}Fdpw*rNj7^G~1Z5n*-d||(@-m~& zIc@aBPvd}qc+Wrew3>6?DN)B?FWY)04X`G%f(b+;0Umf#`hY+Y>Sg5*U+KBdsJLeG zp4&N!Os;zcl1o(}PFR(gb7F&i)bz><~GaoirO}QSzcUsWa}54EYpwcgg6@%zRnjuKK<``df7PNRssx}G6PMwj1C|juwj8CZ1FeQlY>zlPf>0Z zZ0o+YPK)fWaiSb#i}AvXfmplMOKaV4gwvWYl~$IdfR|ts*P*)vFR6QjeGB297#*xd zI62D16V{?vf3fF?s{2gKwP7-zpPCC7_hz459{rQQwgBREgOdanIgYT|Ak8R}hOW2Z z1_r?XW`9DY3HCEtFT|QlD=ry2oWD*~8_sf^LR)Az(yAo1Ubllvo~OJ;gxbge`7}*x zdG2_)fAPhSQpiz6*k9uZo|@Qy>g86gyMSOK1f!n(U5^qVPjc$HSxoY6Z3G{A8sZ9{ z;0?~?{+qU>#cCC}A&c0xJ}-P75Ys#$#j6{kI>a}E7imwuOT0fR+pgq@oa_2H`;&JtYdK1`)&@dzfTEO}^}`%h#^3DK zSH?oH?zGB%msZ=ba$rK_q}`kVx)agQmdjcefx3ium2PKR99_(%uw`_8ETU-~NHvaJ zlgas&-HUmW2sjr!+ZyhP2(-k7>OD`Z;M9S+O#yQaW4O=yZAK5RaQ9icfWAwko?6_i zn6>h%%|%+Cb_%PIloB=W?YjFYO5m*mb;v@rWDrSNihCt~!el-6!xLzg3JX7s!-(9x zm8u*hvsh07e8wk~{1@{fE|F}cA15VMl-*i&2?LD$=+kE|<^VR45dktG$3Bm698f`u zail+=*hBYSmxZ4t?Co0(aP276y=bzS?Ks7Dqw)-Ar8=4Y7qO^J0WtfL;L(A^NabNL%=J^hM#)`!rH2|^CBb=S zTDyf5lTAbhoZBD%ml?hX(z*$EmQZnA1KlXEa{Q81@eE+n7JXb+7CfA8(c?@{*YvGF zysVBZ0tmstauXqwB4z?HTv93v%pm0He%`PCP`f;-c9(TC-2e*&A-#39JG__y$pAG# z%D*5BTLdBB#qiWzutHeXqTuKCOF*?=x>Zl>#slbn8AXmxdjM8GhV3QK7nb{^j|XrH zW3ke9TgnnINEDy7 z-y<2iSG+`zw8fxU(^iWc?O1HtZa!B10aluH?vx~_z&74^FRXFjjOhbSCi)3)U}=48 zvRKG(wF|t!ETXfgMIs*&1x78tjvip$A_h)OqF_cgIQ6sqv{bHvPf^XorJBvn<9o^KAaX6_%hbsLOl{pRla*oAgtd(O z0M@GYB!(eZ4x)TpwW>@pMFtsOuZz2Ml4xf0PjQR-II01PlhHdQuym(8HI;Lb7Xuf9 zIxMB(v`njX_(Fvs)x}QVui)?VWcg#Z#HP@1a(Y|U7qJ;xJI26twEU@R>_>qdgi z%$^pXti!A11!2QNUb(p7qP)Tj0Lvg@d#^)Sj^Hi%7~p64?yI^{CM#390!dA3l}XK0 z;KJOFKo0Ks5e7s^3`Cm?tH33tBg7f2eldS-p-e^5Q3c+=6L4Bf?bmTC2CI!{3|-n| zKwtAxG*OF^fmF3=#)bKD0yeo4zxZ61JI|qjLdjlt?zqFX@*f)EvISx&cw`pGLUb_ccP7 zb0QRT0aS)-Jb^+o_2Rix@E(p2WlV*~xWZ|UASGtJ2Z2B+B5o>vYLjKkRocRe*_)W$ zj)9r)uB<9V=G1Dq_y7<qcUfp=MG}NwABW@|kukd%ZoueOBM%{a>6+u$t@ z!{_un#M&=b@U^jTmEguwVAlOvzm8Ne3?hZnD=aG>msAWy!6YD&R?$Rz>h$ybbc`G$ zy}58*7#m7Ka$D%Y+h$wP+fbjouTEM7*oG&j`$cXjWmhL?K|No6tIHiDtZ6K-!0k*I zpw9=!xIiW{0oRlJTF4*KJ3}P6c(q0_$;xh&t%2~k3-`#niauCr2jeI9)TwK&o4Yx3 zFC(k$DX}vB$Yden1oSzDFQ5hwIbQHxL7!Kln8kkq{+ke{PpHt+WgW0QPsSj2z3+50 z_nS$x4fO>1sZaS?*6J#JOHJjpHX1X~mdz(&rMa|WYvs+<)@e4L|HJ4)k^6z-H^5PC==uhTZQ7B%N zJQg`^d6tbM?W-Z4Mqm0yD)6 zbSB1VMYKpGUJ!{e=3%sIl3^11&-drM5S!CbB)y5Y2n1+)ESIbsCQaBh>OK` zf8$fp!Njm)Jz^6P#vYZ$c12uMjC8QfR0<;WG7td?IPCtF}Ng10U@%MV?@%=;={^H93eZI!lr_o^Ez_&bcU(&W8CHn}5eR!=$SZKP^I;n<&jlOM;_QlU6NQKhQcoB&L!zSSES$HXSD3lc<**caigPV(lbd1?b13^I~*n?3Rb!$Hc{L#glS$3!PjxI;Ed1x zlls%wr6`pUZMZI7RBJj5R%`Q;6E+0qq>iQhNjT`9?V;$$kM9AMe&E8pe)HuxQxKSY zrqeY1B4CJuo*cxu{*YkE`XcsY$dNt$`rrL;@8bHr4!6!Jl_?IPWdb;+ZUD??7UwII zKpba+oD4U!3d~&mL%%j|mAY!d!3vIJe`FZz(D%(YB3`BxC(6kVN__>t#=08@9q0f2 zfBO3HigBsoOGhz54@A zcAF=W9dB%lOH!Swui&>iFhmG(nH;p>WBddN?Gogja=G(ZolzvHFkho%uMQ0fb;}FQAF%4q)8(0ria2;; zhRbiyzt){C<`{bbP~d$+`=O!7{`vp&hxd<-E2>T_T(r3@bm4SS&do!D$?yYE^zji1 zxGXFgdEBb-kNU}X0yjTArtQ^V2~Ln~WYPq1!T1x|1r2`P#rbdiO@H7I{<>fH#ZSEJ zb3RK~HGPR5Y7gs~qd5hA`ZK$8mbO0@OJaB~H%dwH zSNm&ROG2>>0p<7$cP_79yS#kud2Gq}9HP2MtV7racp=!paT8)kP{`kxFsNcp%E$qb zB;%zgGDkj*iE^`~U+Bf^h`3%+V%HnC*a@$ z)-W-G?yFwM)_+K=^_;*`2nN>GX_FD$ai|UT4A1dbdyjlt7f%=GjoC|@hJ;ODc>Y^H ze79s=h;2zwCW1Ny6C?w4L=E53Hkyyc3kFNjUwjnP&KIAs?J({aHD*J1cxJ>hLXObSLw#g>Znzun0|~*T%8q>g4fD1 zAT`PKd$k8+Dru2YGkhKd+^^vPd#ef362o;}3@$lR2W$WD)B zVAAg^&a7?JqLm{@qzwMBtJD?@FEI|IS+wcUulJ|uydYeYaOpiOsp2azli>8%o?YK9 zWVNFdxyAAZ#T^GB1b2|X!4&x(?Q3Ygq|hMOb3eaQ5mXK!SONaRzgf$1R)Vt&vlA zZI)b#%H1ML0iQi_{XG9wqTETH&pc`32Er&P=VKyHoDY?Doi+W4= z;17ZnzCrH3>y7Q~EVEG+6$%O@Nmnn1i=_Z`_zc?D{kxqLZKLeGqeP70=pmtQkwT+s zclPABUYP?FsYE;EFc2i7GY}eS5JtbfQ2*vxSfs)!CKt}^`F3y&si2%!D~S+lLztnzW-VpB8qJv7SzMI7axC()I#;lWfcO!Xj8et3C2T zz^v;LLBSz{9CnREvnfR^_}Bg|+s|U_!O$78GgIGFsyb8-(6g)OXQLvMDeVbv5>|Pm zZ;@0ZC0K33i!_$$kyXrE6%7+4edrM@lV}0KhAXP|HD8&Im~K()z3l<$8KP~lS$TgA zZ%K^d?Cy&pd5T=cC^CCHI8Z{x-(NvEPr_8VebcbV58f7X37j$`Z3_37e%;y{&I-T= zVqi360s^HQ6vcCP`Rq>;4eY?!n?rcB`2f zwX6IaAE{)h$biJmn6NMX{@Hij4-5dnQYcadN2ZQ9_Cyq+oXaE6en0U#nrVj)1zr^r zP?HE2PcGv|#D}7i$OU3YQhwkJWa6HR(Hg~9{*$#brfVqRT1N+>4hA-rDO;;W4g9P3 zeiTfjdrT}ZDkDB2CyNbe@$LWM#d8W0(fCvXoNW4I|3{=IGr*jL>ubMUJ>u-GK@?K3 z5RFs`6+TlbJPaDlLKs7jd>u##NW20z5rc;g8;c`vz3N#zS7x->qkT=87{AoyLLJs9 zC065$zjL%xB5t^peWH}F&<<$M&?>fBkiiasVjt8%OY6c~3#GVn8Vtbs z#*eB%@>LoesX}qy32(;K?5!6)HCq6noChIm?ebu2Z7_8N4UFBIWf(|e8ZtFnoA5Z* zYOw7Hgypk`1ey_eih8^)-byRNH(NH{G;;P-BURzXtmy1)kOhk-k|om%eMpL8GuyuzL1_t80WB`T$=EbkB$pNH9d6$g3?<$)?V$F1V;QZ3EEIIQF87rI)!R7CDlmXa%BHxfz(~;9!W3dk zhJ_PWJ5-_2+?u13*UHI<{vQ#HpUjOxe4D&k8w{O(p@v6zTGet#GnfSm@Gjuy(M#F{W?Q*EqI1CCdB}Y%(Qu>f+qR@lg!?d#M z)uRzf!#)pEUHPuC(f+Qg$iVpDP8qrS9664Ax4ea=L^r7rHUZQ7YIUxQqDKcJ0xqmkiv(or6dbgUmli5@Xgm~ z?I(-^uKs<8m^0G#UQ?uTe%v7%uQAPE^6+TS!=1uOkY7V?oaYyYx4vw6BpcCTaCXb* zTB!sSCkjNvjC2t>PR&HdU>XxVnIvk>H9@iAI5$m!pmai^>9V*wJUAlU!F@$U;6GV) zTnoi}ps+fO8Rd5bv`7}gYzm<_Wj+H1?PH({EvraeHV6xj=K<0!0S0>b%Ix=NyHPvt z1Gz2cwYNl-B}D92;h;EmReAo{Dl$OFrrewHVZ8Q2fdI9sO2uCv2}#+d|7sJ#!laAEvV7vu|I=^bQ`Oc_KQYx@89nyWnr#?@UX0ODPBzZvwes$u1eH0MLP-r zTramdnt{wQs6FU~DbPdRQf)<>DGeJ&`0xwq4c9PHRDIt|EPQ~X&-TtjNHnz2Y8ziL zBNcUnGn5swG~9r(ln_H3Bha^FF-a#B7^YK_Ptu4#-IIn{hN%fH#7IP1D)>`7fYfAz zbPif{2~x+((nPSM(1ZH-w{o!uc^YE5G>R4N^y!YwUlIm|k+Ts=alzzt2}#}-ozOXL zCi(zhoF9b~e&EHh#az%%vpqW??tRXm<}%Ne0{Qw=33w{xQ-A?R(e!5N19HxCH(nr8 z$-Nl9b+QPbVb$y6&9T`KV0wvE^;FPi1erKU<%*|Z^-AQ1FE z!QS|v_)nmmO-r}Xmk;pyo--!CCMUvr0MT?pq|HvPB^L_VgtSP7+=B;P?YwE-FTWaN zrQZ7u0VP1#9uwemT~V=Ht4|@Y9jbKEM?OR(DAL7F>IQ&$17kN-`k!!sH66$^@j?Ls zd_nqD-;tH8V=0lZtR?QyGA@{^f|3H!IIEPoae-`Cxiut$Or-zm()bI=P|vCK6J5UM zQa3P@vOHWot2pW=(qLw&Ov8uj*-ljs2B#(dCu*Jb*sl1DHGRqtsrDbj@=T=|Va5vt z-UrMpN~4~K>aKo9F!V?GzBRX;{!6SNDE<6tO5xgT<_pa*m{BeOxro%L%5hVsv~iy< z*`2=%A{-`Y{!ghEbWgn6Hb)IOicL;5TSi>tdMsn^cj<~N12fSl6LsBsElofpe%tp$ z|K9i}KX4gIxP!lCA{f+SNHf1tk_FX<=69>fRx_?rp$gW<0b1+94HM$u^Xy^e%*g|U z@#EUA(lTTDEMJ6OlgFjQ)PFBHXrixS&*r|uR6k6_UkO(75q z#4F4ZND(Hlmk=OOhKZIDb3g_}rwW$ffHawlLUTPouD)WJ-e?S>Y*1$lu|2l+-K1?!8OA{5qXZiFgVC0XeX6)v!NcFF>G8dp#1Kz2E zq3-yi_T7ynf2wRzD#jD8|Fi1_W9+)JV=293; z4b_+bz-(o&D@DH1Ne1^ibjNk*)pKJDURy5BMDA8|C8&5OR)$@wrqQ-#K)Gp(t3PE| z#~U*zhf!#W^J!Y5cbBTBB=g`M(e32nfQqp*2wUZX5A1NG3PL&C`$w*7DWoyE+{1SE z1Drc1pl3Vkp*y#uJ7i!V0GH5C47v5o-Ggh8!KeBmB~6j&e+9gC#l*t4f{Y3;7)kP|;1K%iMEN!wvTXz6OFiTjBdXR{|~$V?T9pjZP^ zJixGK>vjTa<9pfsopwPO#_r5o*j6=rVm zox;Vwh_;yH=1h6Bq#9hk7K*0=pxrXqk_ev&x?4Gv?QRfr!*u6P{<^5LA6qnfrF9c* zczJnlG?>bogX6XkcwyQ^Vd&*@Sf;q8#-N@w@~>(PV%tEeb#(NTML9ddXDTs!v|Tey zi1U&5bqt=q>3Zd!R%^`$D=6&Or6A~5S2~Sw^Cc|!A3XwD#PbH)Iwib{f2PB=S z?W%fo7k;{+f%=kSP=yefZQGEvApGn#GlQ@_ECi8!9$YqQ6gjEakt0tUv>~{C$EdlW zXdJ7vK`E{dF^u9q=Ax0EsFAaB4dqm}8UTUl@jAdq^rFHepnN`2OGNvr zL=p2j3@ojGmE{^|2}RnByIz+q2t9^_M(qBQWxxY&JqSVG9Ny#`O*RCKOnHR#Xr?h+ zMuI?LIf(l8m5XV)(md?eA>B@r&}eCb-0-0I%3!nEnj^9zQG@hp!$bp?nuw`hSxlSM znJ>JecXedFQ~1gXAU4U8rJ)3nnBJCu6>5k4EzP*$W@}gov0EgHkpXFPx zvMbUk*T(R;iV|42gR9nVj4QQ{J!e-HWfSFba5#DZO%eT4klN4{a>uJS#Xm>KR3J!v z*#$86AfcI#o3k(Bp=QEFlna=K4U)j<9kvZyDt=-=O&k*NW{5N%M2cU^Qv@Oq9|a0k ztiLuOlHqoc*cHPzDn{56ypQ=V1dT%UWEVLXO+xx~2>W#ye#^Rcyfac~QgauMGo>() z)Xl^@N}(%^AjcabFBDe9r|5;+h$+n<@e0xWgU&e) zjk=_}08S*NK=BEe)~gamQ!~99B8sY`(m4mX9gPJbye`c4c^BGjsYX1?T8n3tO%h}g zs$yTf^fwg52nSRZ8|~=$Ayy)lP>KgVaK)Ok5Oly|9&|KciVU$`G%HyLxG-(OdT?W0 z&6Xy}cC}(>9c;c9tK>!v6jT=if!p8<%N;vY?b$BP=G!99NIuvElt^L|Cwj#*IA7x- zr!<;uMX_bE}&(MQ+9r^KQYQHI}Xl+m$$4PZ2aTF0H5YNn(@44WDnw zN^Ny!kkT*ogu|0x0%^8y^x&Fs7>*Axi4Z7L7sLe^jqsJ2u64l@)FT2NSfURa)nm0> zZh(>EL4Sw^+jUyYMfUPN;%5PuzRQWSgqG^VZLLw<|Bj4I9Taepp zt--g|4<)XRcH?GjQ8O$#D9k|$vUhG@z9FK>A*5i)hYhi`AOvxX@C13R$xne2m1G4= zI4}tYad=Gd%b^y3NahBrRGUgRQp$8M62eS$3;U~?4k>)9W=QLLVwNh_8Kw(&sT)WP zw>ZB5#Q{-4$m4)wiA06mlO6y$;+OO@%!>#aFtQR(B|B@tP$PSK&xZMM-q_DznB5YM zr9y(FtKA^?rJx{kF)=>%2m)L{TmffBDt19(fcB{ZO^9o_6?6aN7%mkXOcD^tx*bXJ z;pH!$lv3zI0U!VX5&=`k+&u)%1{xolW~R>%g(rGZZ$h$KlG23 z?L$#>i8lEDOdv>5@BE1HDgifW#VXCmMl*U0?bCO7fVmYKLd51}WWi_J)8>9aAtWvP zMFDg+LGSxZ~p_)$XxEwMY&Zf4tnBuiBk+(FnD39dD}bUFq3JaKF0 zqGu&z0d}nCR6e}{E6`^ijq1sA?Gtv5V5X_%_e|%d5E3M0!w2m4q>9+P>wycjX7w5e z!WE`9*q5Ujg!WK0gAbPwB~3Hjk|6WOmPiG%#|jX!gVQjn#!cByiCwV;>BAU<#aGjG zV@gy_6yG)3i?~chuE?s8>8!RI&SbkW>m8n`J-1FlUqQu2aF;5310YCCWTF{YNHIdc z5+d$%#8_lZ4nVPYW7gwbSuG2czc0(732y8sY*#_XLT(*h+R>RP;uYI13jmP@8%V-e z&$@>h+;}9EAH8s~vQO|9FR&8NzG$(3O#_o3Y3GjtmDF0Q(Kk znO)(yxa9joDMC5cMUSjxBudPy3pY;QaP&=CO|gbyiFWUDbfbl)Te(H*7YxyEE^nAM z2&CBJm>0<^c1vZT%Dy4%xh&@}2HZ!79ESTb0*cZ{xm}cg$E7p~uMydxDY`7>kL|4{ zXj@E=bd&bR7B($s#2}^kSMQ~1R}A+a3l7;#2#Ky4i})B0@^G;7y;R?&j!2t{v{wPemm{lB)v{BxqeGY9%o?g6e2XX)h9d#g3d95Whkd~$x(u!q)kt128FpGaLC2PBKF`WRJ9U@tAn1 z38H%@|C(+X5W)yDLG!eyh_Zl;xB+JS=4_!I!f*+62rQTHHnN#;>uC^@Am~MF)wq*| zQ4|zpJndlt7VU1zK9!$VGe}wcSr;_XJ36foT08PJ*?&0S^;a%LWD$;+6i9vEQbn$A z%ywvl#(1QV3t~^VB-9AAV+fo!<^_gA3HuD&%Vi2dvIX<~LL#MRsH}C9R<(wmZ0df3 zw+s8keq#H1h!+)^Ex76~=I9i8o=wu__uSJW{M3 zg_e>l!U=axAZ0t2u2*v{(AK5mX002JAA(n4kt-Sn-dKgSlvV*qCD;%49xsz47jj-C zQMU8o5qyL8fY4KG!T6;LS*`$a4=Z1mQADYDOGe&OvRDqnokv1crfp~}-=H;&RwS^Z zBaJADW;kk1BXS|juM0l7odg+A<0=0to$Mw<4S;UU9#Hy$4$+|Hc9=Q=475p?iM(h0vBbr)eYIshOgxC*XDh)>hE6jJz5hBfEwgcJ%FSw#VAlmZUQYtkN6EU+c=s_tR+fdw;71Lmb z7cedrzz#<-MkuK?1dKtvNS~oUO0(5mI1>UQ)`g19$WUaUfxStqO2;)eI~d)%^P?7k z6a-58qV=Zvmh(*Cw_lw(jVK!=^km(ry(XDr53Lu-o<<0>4yee$^dP3Ivh5YE=IHX= zJ{pNl;?IPx2oiaIqGH|2K z4O&Iz0U8jGLz?zRCut+*KMrtoqlB1j`babwUqp!0x=vc%pw)oPof9<2IHnPAt5@e# z3KShf!uMPvNpTxZmr=xuph@TANQ_XR8@K*pha@l{tSfP(fJ;lqlqH(y`!2^=f-WS9 zIFUD@RvJ}?98@B1XJ%9>Lh*N#q6`eHvufDnsI_g`kR7qA+45O@3bB4l)GcVIEZz# zUF!mNgoFnAzP%wcvRc!t%truF6w%*@Z`LO9d+trjABdIYp@7Y@0&x zF*fAeTIOCFf=$z#S)+Xja-Qo}nR-Qh7&RGwV$D@a?QB=05^uC^^h6+-leMeK#6q+w z)~ssPtbO0!=nd@!aUca-1C(loh}W7!7S(!-Eu6E-ogcz;*MNcpC~>en{qf-9Ie9qd zmR3@gixH~AqjS(nbD0J1mRi8vxeRhI**c(~T36F|s@(46VJ-aGkkYDd>M_g>qM z)88WZ^0njl+4-7r$))^Smr3{i_~NArAdT+9wI-M~|CsUf01Pw&0?6MD5Qfsb0eqKj zhDh8V#g79t-is4Vu-&*K1Oz8;5wZoWx#3rdwcl{R`V~V&*u^C9 zn%~hrfyk}VKcD0G6s0y~S1=4vMEU1&uPWbfAL$CGOKtDVjNX8YU6o5-T7qh1=Kb=C zfitjF>)$;RfrQRYsNZD!52wgg0G7%G`$@nV7fled>_xGo9%z?ze-Rv!pu@n(kWc@{ zAErfA4Ztwyt#;pR=bS?AwuY0~V)QXPLXUxb$Cp{P`JCvs-9pi&eA%8xN160aJ7-rl zrcZR+b+ctOPw5}7J%Hr}B^PqOu}73TS=lIaMU@!B*8*a6ga=l-eVw;dzwSIgf6|dyAg%8X^ijw zr}iE>qgjY9f<(}gL3TQj_%wOxd$avo3+>iRe-FFZ?HJ?!lB|6G?tkLrd|`Rah?YNk z;vyWGGGA@#eYUk#y%hvI5Clc`;&E%3XrS-@A=tHn;$#Zl1CN7!0LI zzy!KA*#Ev5W@gspeRj-tJr}?(#*P+l`Ydxm(U9eub_=3@WCR=l7M<(47h#^NyD-R30|oE1 zecWS|8xHVk`0zB+XE~?iZJ}*-I7@-3+*df~8+lO(=5qO7JCZi*|HmO|2GI?mN}SP! zh%l`_s;Y^o$Zi>Z`c6B(K7fg^9MlWn#{nSTTeDJ5W+%q8s`ZHM$m zxCHyQTR4C-sEK)awnUy`Ge(b`!s#|bi`WvvvM6t~#WY20u|15TW9DJU19ZY*WPMhlp(engJO8(sc0GH1(3}8KqbK5XnXYT zYTU2`L;je=vt<6LHsBy*$mP+C3t&bmYcyS{kb=YELP2!iWOrtkTa8Ve;=iu(#Qgvv z+Bm4{#2tMxnZLT9FXQqG&_q@qy`6;3BO2aldkWrg5v1UE<&r1i+Y$(;7TDCm6zmgwt`t-PH^wlLovw-H(+q&8X2iZ zAh{r5jd{~_Vk}iJDaM81(XjbMoBB=m9xt9)b#ykl=P31t`st)7Fo5*35Lx3ejthY4 zz5(-HFxCiMV6xt1>v5c9LI^&&I$~&n54e9u7lRn};KIZQkVKLhPW7~mLIT*W;%Wcw zjfiSoINxQz(869Qt%pxxhkY4?7Jz?5B_pIG-K60a!Hm%IvYtlIb2}mwo(N16)bFuH zb_xcR9vJ&VX!bng8JHP(yX=}!LSs*4=shR-6c8C&r)l41yX0je#4mc}fO`*`!7;2I zL^!Cb9!Q?Zku5hPKpbRo1gHXvUpf+LeeiM;HowPyttDoA)>G8mw?m6*5%?e~mrk}K zwaZf%Rs(~q=zL?KE9Q6E7pCvZe2?J(5Qj8s^@E=N9CZMvT@1o8XD(WFiSUJ}A_KP? zvnrKhkG{)xS*HCEQTFt!Cx*8O50^Cs$Of(Qs*xZ|8=oT;w@nInk!8Kj&Shc#hxo&! zJGw#+CQu2zlnx0B9sWo=n~VVwm?VV5185?gCZpKF<-++c`|O$ip-|(|LkkvAqY{B6 z5Ysd-56DaRs{x2C%s|fzEbg=h)w}F4Ee+~X>q59k8mn;tz=2a>j3Qi#;}~PxZ}^&F zUCi(sE>LDNxRv8Ti4Q{(y! zjwrgA6ba(k5D>(0uFyO928$47v?~{0%m|Ojl+gCf zM;FAX6tdqXL+l^74FV7bkxr^TgR+~EM&%>A5k^RlBJ)wu^AQOm zT0kO#oq8ZEACpJX8imTC{stxFUqtE-V+bZ;+sATAxbem2>AX5%P@Ptc)208;WI@du zG^29zTuMot2ChOK5M%11F4Eu#tK!BYs2*pDF`g#;8Z!Kn>7~s8j?U zd!o*OG#ml0o1sNf2p~`f=}H=yWYEVv)5MFo(xFQZVYm222OZK}Dq0V=GZ5gxX|!0u zBK0ZS_FM+x3kjrlHnK$CVhFD@GBN1eOouWZ4vD*E*P(k2*udz?d|PA=FTn#JWc6|k zEI@S6#GP1^BE$+f5h^LCLx}pch?H%VPVcU&VUfeMg|cF}*A=4z1!<}v(Q2gj762X% zfb)pamJos$RBBCgm?op&x_@=jxFv?D2Mm?qDMPj-B#fw$L1J)VAQ=86<%qm?4~zx` z@DMogL*v6XZU!e+4k^x`4gYd#2IDz0utAeXtcOm4WIaw@XO3EStwR`!dfve=Wf@=? zE;y(Vy!L>II5zxV1qD>vP#26|!3@(Ns^$xah)&f#hePB54D4U)AgE^`pfL^Z8-EQavOvh}ik@u1$p&O^MgS>JZKN(uzZkQBdjgkB`5+;w5Y z#t4-T+4tUA>+_?e)S_-JKQ2SAiriVi&}K`*#MNWedYG`HHIMFSKD0lCS)9I=st^t( zVW4OoUzz~zqbP_23`BLRN{nH{L*eyz%-jqEaNbaZu%AYV=c-UX63|Tcm~c;q$uv@L zdLqEIx&@8+oUr^2@GJnsKZEecMov$VVL6M#^ulCTbuQOpkZkjAsOs z9%ig*S7MP!AnD-5GMLnPNzugq$Vf4Fzffrwi3|X66X)&W#)w1bXV=C!!h!ptO|;sB zG1t$-QF0-BS}_~_cmqV}PDOOyu-N=S=UNUo7IF0jfOZCE%QmAmGb=@tk`0d}F+h*S zWkVyhQ-U2g9c|lz1E>sv-w8@*I83u)1g8L?-) zxChqBaqh}MlM#i2N7shs_aNX5>i}D%TMPhr44%`R0Ai)d1Gc8)5V?tj<$$>*i4*{a z+_ckay~cf<%lWDfz+bMgVI??;RppXP9LEVcGjgpbiL~`g6@Ybymb7n81t)g@;}Ala zVA&JUu>|3O$xb};hzV%XPDe~T{aHNbj`bDmrQsCD7>BFy2~EL0ua0g z+YJ?1#&dg!K;$b&+s5F11g&R>=yxF5aFGuh1oy-EV@5O5Y4R40vDSz{b>4+PF;d%_ znzpiPZzv6V?OM2|Ki2VYe843D5bIT=Glktjs9{5N7TBCnw%5KnM>8Q{LuTSpT4e%Ae(iFc zq0~9BBY2iseqI(80Efpgp=K66c{E;7jVT8r*b@R)1<=r)bO>RA2#I2GG+o6mFn9zM z|03nM0FYBoTC+lSm(GLt_C*jB0PLNhG^Q6wWsxHLQ3WD!j0{E>GhnMhB#CwCT2^W+ zK=A>zqY+{?8YDXC1%w2EVok~ynQc-FJYW!*gwQHD4_X)CAnTUd5rc`bT!X?SBh2~| z{4q{bOg?HyzsXAltVn?4hnmukbO>1^E?hxz!#^Cq)J@yBC+3F@`cS#_86C*mAhM!J zC}y|?B8bW@Pf)huFujU)2b5w@3MUwWDF%cEAQ>u?Au0}vyBS95jO}!iMP8H(d_GDh zN6evSJ2}VY{8LQP&Xfe? zZNrz@paeud2UGlA<8J=uERi~lp=M<@UxwZZaIfmQ%F`2TV~HW1RBMntBeBZ8{+(q? zyo*RrVFDc{qGr9?Qit9P<;v*{Jmdfxn3HZ4BbiKY*xNNw2vZEzia+@zBDGg@Gg*x* zQ|no<4`-xZX%|5N#eh*uz7&CcO2=g^8WGw>gE3UY52D#!>o!(6%wd{69V0hXPV<^z z21N*xk?MpVpWNabdji<4lnI;p)m6Bou?egKpd=vTFkwZr>A#?J z*9dcoHwcvbZa0_`GUb_eE!(YNM;=K? z^Uxsq6AUC&&8H2k$~q{V5?wV&W`dB;eWA14a2rVs7DZ6HHEF;G9-9t=m!N9h;E{Gn z*t;QX2rPXuHyRPG#Jxh?_*(so?_%s=ir=}8Txha5vP@LX$}DOW4~X4pED!@&0lca5 zf%(&yrU6qO07sbWV9thcQD|Z$rJ$mfqAJBsiyk_x&_9?=G-IX{NMBz73=!VTD}c_~ zlaUkIF(qD`uAU7rvRv>;^<^6{Wr_5SNJ5RKw&hp0C>9F@h$}-JbE&u$IhrYu8kMX? z3|D0_#dJyWL*o@~4UdEmK>HmDAnTQkY(nDj8f!$fXUs+LSjZA@&&shi+}iD))cV0q zi3(%1Ea?l9Y#|l2XTuzt909Nn>{klf;BBO)RniG=Jh-zB3cw_i%MietK}sLdYK}++ zZ-&GJ6w4C7lc(a8Iy!;wS82l(T{n%{oOQwEW-u`<0NZ?Wc_fq$0Y-!jJ1z^la2xAU zi%_x>3_=6A3~17zqt1vn5y(F+aJ-j>!hIyEba*6HAYpHus`Dcdy(FXoH!MpJxB!v^ z(jU9{O>Uhd(j9{Z!{&}$zz_b}Ji2f6nI;ZX5f$475ZV~QD4}Dy!)X|d(k32z0*Pcw zNPquMaKwq7I$RU4P|7|NLJ11X=nFs*E|G$?EEf!BcqGf@U2&isU=EY0QbakzsB|F< zv5MLU8`Or108arGaYNhO^cE}-d(HG}O*evSV<=IICV%VjE@Iuvly>FLIFP%a4{6fB{uXgbwacx=|Y?hqyz zxQu!vEUqC%&RJfr1brw7#dXy?v)Vz*qHo%F_9}C^(>&@m&FluyL8fd58h%OXha!Wp zc7%A!3?L&qZ-%vvn5kvwz{)DU&+oGwAmh;aG}fb8NNI%{qBgBqwu2!>Z0e%C6$p+` zoeOB$38hyB9zZ2{Q0zERsq;wGQ#}%xMkrV+apN~!pjnGxV@MqrCY_q5mX*xH8crjK z*7M#pg0VM1VgF6#21T!F0^tGXbc?N-yf@!A&^M zT{_ByOTF!@aib1P0#(hC-s7-Q-s7K~Wp`kvAA|;8eH`qDet)2wTz4R6N_IQ+C5dQUbVv z6vV+1gtQ^*-l!PD8lqd_Qww1mQqe5^F}(oc3or)@05&IFKFSWTVr)exLXe@YHmHl3 zYJ!BRuz;&}$>=WJP{P00-QKh|03Usj7C`WH{4gLoPO&TuB`9=0OS-I(skCYaV?=3V zkOMrpdSvz7`WN9C29-xpBDh?I0Q(Zc@C6!#bygT#z%~mt^X9k|2PiAX%aUP{a*csS zD;g0gQSdao4>16U&pCiOY9^W;S1Z)?T3CcK9wJ8E z7imJ(8VI0s(KE|o35w6(nOitTkgl+U&s7rNFFogp+jufyw`EuoS`zi(c^cbpXJ!Syi+u8OB4ALeU}*x4^J8nnem^ z;iA~ov4Z-cW}ayQxT3kwfmyDn338n3oU|5_@R6Wur)04quz!V{2`&t#k1K_tS33^YWd^j#T|?ZgbUL*C%_tO+D9nO;#* zT*Ep2J0s1Tk1(sCI7Y0BhD-Q^eP$`Plu0>ffPgW9++VflDNn$N0>nPN05jwi3rM62 zd65JJvXLIdU>Z^;IIz^kAZQC!53}aX!`Kv;i418?U1t$s!3nUvbT8&W! z?{#3O5h{k&Obb-4E$v|if#H<>s6h-IP9wGla2|^4G4eX|#Op>6xyQQzNwJtz4>jtU zDaQo`McHHLFo@H9#ejMS0Y;r$4$7l!c&Up^bL~?F0opap(6b(NA8gQoL=}&$+iuWF zS_DaX2(7m@nh_N52Lls;F1BWXOi|hDR@lr|+H@aQuxSQ@!7pTzRpA7!3nWFuPqelC z9y~+mX5SU5GtRcPR`e8;tg_=(xq&umoKWT&Jq!(VbWv!Xw!D6n0tsQA2@b6_!aT%X zHFtVKF(mmOj3M{V4YW}Ok&6W43xZaHtu2mmj?`ET+(AHZt!LIx@kTjL+R=hEtlV^^ zkqAUfVs3h8(6(BAoFZB^W+mNOi{^&Z;e;^6X#b=?`T&N(9vhuEyr4kDHMAd=x!sF0 zK`!XT7*S!{;e(qkaJp&w2KHcLh9D{c1tRP5=3IOR|j75cO z0p{As!>NE_@C1#dmHV?B%PZ)~2iPU|lvq9rHnvnAHNEkob{P_$Bv5rpV`aY(;K zQ*~5yfYmK0m*jB>#&2u#T?on`I2{TkRJD|iYW8*qG7r&rPTN!VD{V+HB_|1p5z(I4 zl$mDYlZ8E96p1}4P*stHqBWz^)z|~x+bb+G6n2a$o|Dj#VMXMO;E)(J4bQESZZv}> zP&O*rhh=cvXod>&W&;-N3>b78f;~<;0;1@l2||AaacB@332qP6Cx?QJUZ$o!A-rWQ zLuj`LPRzAh3r~iIL=+tM*aIK_2cH94#E#>f7?V=*EP@aetw~$fn87>RWhjg=TF1aa zC<`LidDK3wB#}h3W<&=wM&R`5T4}iTm|zf9Up)>sOi+<3C<1KxMFW|}S&0tpLIo9V z6A}v7u{;Qu(Qo@rEXzb7g)~#G#0rorQkJhq7}106Pfdw1fv7xCvc!VtLh1z|KhPit zYp9fHlo55N9sywIP3$g`i7okjU1#5-RX9Qnh3{a1=1++f+cUfvd1P|2@?gk4FDu1 zhcMxQN8x_qaGG!&Y&V_>htM!Gtl>aOc?fC9&g0q-2{<|x+r^C3P0(tt98|W!!)Q{~ zn>BkPSkyt`YVN8K9tfTUbb@guP4@%l7Ty8Y5RLR}&62p<@9aNI$byqr`t zxIt+DgX`$&B7*ZkxJ`~qmUQAy^}BpG_MAz<8I!|}HJny8s<0fb$d1>F+#{m6!8-+u zN1>T~}R{{cjY21c4?TzY~&NK~=Lu^noGu z#%Wb0^$(QREFMVHNIc~1P$(iyaggM^f^dmu7k=-}?+QA}n2;0cP z$PF@o$xhCmU&=j{D(Ub_3V}uelod~RgF(Cy2FLuFZQzqvnt61Vj@S*yE znJbfI9S)$*2J5iV1B^6#$je>=hUKVu`@wQJzHDcBv@CP<6drB=)w`v&oBa(FPbMTm zfcOPfyJAgIR~70$nI?oP69O2N>{?o(nNrcDG=l{s*IJElNI(Wn*@i*@b;@K_MWc<2 z0n5Q@#wtM<%s8(KYjn$DtkqBRV@<0kdjnWsW2N(1u0DJq2qnxOo`V@a>>4yoMxjP-QR&6NL5H~jJPq_C{WsHXNS3c z&6{l(R58VDgRWS`bBPf^G@Mxzb%TU7VIh-4m|hA9H$h}1kg6pZjHvPf_7KA>DKGUa zfj5r17unN+rF#%Kh*qa(Kmj2eH1OEIau`((VmmYbCQ0&ep39l;D{!f0f+JKO%pbe z1|^lOnUv#2_8U#_)zA@pFyax8e)*8q40_3&vyr4N$FueNwINFAkKpZyPEfB8S$=qS&e35zgZYqq{Ds*&b0{Q`8`lq zIo@4=Dv8^hT0{5^&%IK7*6M)hhd>zy*kBBn21K1m86o=puF-v|V;JEZ?49*O=Qa;; zH3YYg=13$Xmj0$OgieN5g`o3H&zs@zuM8+&KElfJitxR)5}s=zlzF_RIA(&dH7NEUDhp;Ixf{Y@D9!P{5 zar=WAtSU`JC2jWeJL_B;wa43u&T(^RfXD&DDOS=Jr^*H>U1z+qYrCh$ZLW~N%S?gt z5U%ffd#yNB-dVx3%4Aq4QO=?qP|0cA8pJEvTX8-CGcg%(0aT>Bd!tEA@o2V>bk6kN z`jDeOjG!Et4xrK|B(1@{gHF=N)rtsOB;1}cMyS!4a5<#5df0EQbx#|l*1K8S9u8d_ z;Rhrj)X&Qx-%Y0kS7OY77%N$IF0`M5Y-}z)syEgr(`;c9E0*2x#*GeLvI#xRlwTOy z1F!^H0mN0IoB4U>(7YNMh>9-td+U!~Lgr~S`XT?-yR#h}KnDvqB8_b!ANZ^>(2eiN zuxj2n@bv&wMr^=}*M3*sK<5f4D817CQXV%hanw7?*$W1l+YFB#Q`LlTe^*4D?IjRU zjY0T5wP#}nr$y+z!{+2mG(hqK0bC7B3eG|Vql?chf9BOb6OG`YzNxn5NJQJw7&3lp z3LTqkZv%s2ZirpZPSaWto7LFvJKNX`CY~Kom^as#t--q(s=P3E#29g>Lnq`rfZtjPR=>N?^<_U7>q#{n0)B(e#8Jm)0FNsEr_L8AZA)%uKJy z#NLaxh?d{pcm@cG<}{E!q&L)Nr>?^i=?vf790}wqPajxz{lJm}A3!BcwB0OUt6ebs z?Z!I{0x~GJb@=+ zEYjQQX46=Xa%D|5 z;f`I>fN15siX`w5y&z=y(BVgdddGR&e2leTn%qw|hCAF+iqz^Ib<7Y{ulA0jF-Lf@ zF<{<+cq$9LE^5*5R*+9Q2?(^+1L4>EbQ*Id2)-1MDDm(}Cf{<}O7pfE_BJ-B>#+hn{%P zH8%=j{qJ`S9)lHFK|NWYchlAZ%`22`j1zoYJqD>x>;y9Ca-g6!UyDY=*Cz%fj#SuL zQtkd-npOjyTU6nM+V7_gvebA^Ifij0NwwPmYf!^G@KCB9vA3^@8`y>U#}9a9=N`{| zFd$DcmI9DH>bKHi!+F;a6O3}IE-mPsJPA}i0TE-G;J}K|A6LZX>EYx?uk)dGWnR|8 zu>Vps4v_eR z|HIahXOxfX_tV*;UH5Ep^E;(IAoozb1EXv}KUDdm;Fa;S!$4uI_}d7$XSVw*htU;U z10GS`0&tC-M~ZkqVPFjxRE%dF(Snphn8ul`-eYg8=$U5Fc5 zO60NVEp1-y4}}8FPZaiDo`3<8O%$}KD0~4O6-^bx)i42!5eyH1_Xm-b5Rw*!<1H*D z`pTsWnjrux2gTkKs1SlGoDwi;Wq@;h8)j8U}-0&5`o4fJ`; zZ-%D%IcS0WsY0a#O~Ywh!UVAD{nzqp)7^v?RI&YU|MovJRcip%Fk2h(yn#NK-XU&t zc!+W7P@-u3|?GzGn&$*sY~9v`cy@;PZd}-%si$W->D)NfH#lc|LU>P#_TJ zo*jz9ab7uuM%5pqT9jxmPkAO!P{GkkG>PL^!~X4mrpJyUcmi}bd|Gwoa%Lr@N#8b~ z7h(pb(P-Hi2X=I5bb)A0z!<^VV(=prlVnpZM>{Zwh^fb8XeR+w2^H54WG$b2{I)qI zwQM*75Dr@$Lf<#~hYvu4XbJYXd6^=jR)Wc-2Nba%Bae3w&(2%~Hb@ijymdCF7l&)z zS;DVS;cb?e>wvX_*CbXFthkzHlbS)J1ZN<`oSp*@;0@)r-OUG(-!!Y;;A9Eypz|xS z>!FDAp1ubpCjDuXdWQz4J8d5wn%lS7hlz@xgG6e2ixwV7 zgi6!F;;3Qcgzo}`Ltp{cm@DPfjcFSDiOQjUY%63M0nz$iQ3!Ned6;B+ zQ%py4s^O1IVF?4hh-jfAQnCt^+4MzkQJeC!DcF=CiW5!jLV#jIx4EwU_S~-%hY3q3 zfZzxx5%9>O4YhEG3)@L0&-5RbXRb@D zMgxk(WQC*j5x}N-;F^^InS4oxdQ2m6J4i+afA2X1+9I6(uVHF++T-RIr_Ij0}{7Fvc)1{q{?(+S$I~dOZg#4X_kkM^WEnF`L0pY<9;F25XgY& zQ(s6&P&A3?JN+Lg$y_1?E9QsE~K(Mc!`=AzI5z+<>TlW$RwlJz;w>8=Ihn!kv5 zpu*HPhXxQ_J!49%%(;`a6HtA|J7uy9PY41aqt*%to&Z=tHTRw?tF)%+0Gzu#C8=J) zDVMIb0fa=$7*)oOf>cGodVM87#t1cbV)|exI4yPFae~GxAwgevNFfjiW?Y-0qYVv69Q=Uiff zALJogqJZfGMw)6{mD3dq9{{P$K=;1YM6@r|2CMnuA}R<9QnO{e#+N`$YaoT`Nzh}6 z)>)+IaSz5)**=rL%yHBrCu>%wY5(j!dV)kQa`FytiEk+~(d4ZZ)s~uiTO=F^04>Ro z3ZWDtqN~&ja}#}S4ouUbE0^x_&%4@}6DvVBeHnnRLT~g1Dt*y?~SmZXBn3U-oLayqyUR!3RLD+@edO z7z7m=9-wrR#eRzJCuDgtG0HWpfT1D`Kq>dD;|H1PKpd0u6*y0;J5eKDJFxtaoeIHz ziZjiv6oM0!eaR!jA92PO6eVQ>V=bhOX%Axeje`61QL^*VT@EF zXr0LnuWTgd%&9!(IKxVp!Xa+UCyc-8%djDj7BC{{wU<#CQg9HI_UOQjOmi+9Do{yQ{rXjH7unk^cHl8wv9)K1^MJ?t)MOKRVm}Px^cc@nNM2auGL+SvC3?yp$u&x_<8UTaQg_>;aH* z6ueG3t};@xv<(!VrV8=~6LqYXl~Phq&r>+%gIU%vaFh(SFdKoW7VIzLIXn*_o~c7n z2;ua)Aoy`Xczc{^EFkz3mxfLwY0e}*fIBT5Wq$inzl1p&O#RHOANt6x#|kZTreqZ` zWpR-MexnH@qg7bpxZfB)Q2>y*{TwoY>h|H$;!;gGRaC_fS_{`}!nMD6pJue{*u_i~g;7AvI`tXVI&Nj|P$eeTuqnV(cq6ibi- zDhD8(IpLWjY{3d_xGKs`=%9Dp%GU-tTZa{P*>5}(*@-IRa;B7LX-*>l!kuLvAeK12 zIH?-*JL)f*WOdlNp9lq#7l4%}q3B=wqw;*gBDl%AKqf3{F`uO(5J0X!@*OXHARCFdw_170adcPi)9x%pp9~!Szd8%% zobj?qBPb97NA$ouUKyYn28MHFoBNRY`G0nyk=hdxO8}0*x$#VMf$mIOvD`s-@A>ci z!5@6>&5wR2F|;OCA(RK;WJaQx{s6w@lH2*YJ)&B)7n-wVB~gJL73e66H@RDoqPbBA z$TpVsSLI#UE)X22&7LTp>$CZtcwt!X*9L#o_NTw&cd(SD$r&~^Lg5PGgwZ$V8Y-zx z{r&j=_o46n-#_r3AA0rmH(&qr8_|WWeTug;75-2o4O3NLlz{ZYq%f4>Ol$^!qNx%W z^i!BifUH-p(Q#0rQj7xZHT7SMKW~|Vb)Ee%m*!sSyiD-US0(}X04VzaOAWM#04}ii zjoA^x`AGHIzy^Z_vB=DN40|b(GwT86AAkMT4}H%!%fJ8KZ-0LK{mfBVBWM=9D1Ig>cVg|9_Fn<5@ z_iyOX-+mL#!@kiemsi^Z6vha+y-*!h=_wL7l+#dM8xat#kPx8fYOxEmmM96g&eX~h zd4xHX;ry%rGs!aCGamVt^+Lh-fGG`hq#QBp#_V3ci0A~MC^=Q?Vt*V1pfYIzRGU~% zU?(f>Z4jF=MFCq)fB*Kk-@g6vw?BXT_Iu9fwI2d=gHVb9(n1bgsH`-WWI?iucCi=v zEL@A*qZ9`h1>MId z%W`1{qyb`CWQf^3C3OcD9*P<CP%1eV0Ct;Rex|1OP`tF@pTaADwY##Av z{Xgy13{DlGDx5GVxVv)#7vLl6brAv(6G~;$tc6}?Q{e`+vcF-XK0f04MvS3UhBX1_ z+x4>V_dovp{r7LJ7Yy*6sZlOMlE##Z!Z|7I{S>lrMhIpp1d>k21+VB6P~o8rKqF*v zm8D4PwZz|9-6m=DEw=x%ex59pH0sXTkSAy0G@RZ$G$b3+h{4Md)C|!>pM8KlEJtVo z0K(E2{c_+r?h-D1aB#1?P@9lQfd@!p$)$*=;x|cuemndI>02L}^-{tDED(&m5tFxL z2_yMMw4|UrKsTc@P1YuC_lSWh5yzS%aw(hzXAC|-33fr@1hHK4el2%>Ftl1GTM$&? zMfGA3CSAe+5~(8q;S=8+LY>sCg>VIn>0pX{vNjD%!l*U@f(YUcLGpv#OCa*Dczl2e zB`(wrC?UGOG5YrBZ|G1fL&85(Sod0@fUL!H)u2)7N~a1WBuo|DqAhuvAeW$LHY@70 zjFrR(@GwW`JI!yYDwasUf}Xt-(jS>GRY8VZ8rrR0NEG|ZW> zZeK89LTQrMFohQC)sb;XIa>21tRW99>*YRkY2)Qwrm@Sq9X&f3S zKy-1rlojkj7Mg_bj;{T_{m!bCNo_@G$^%@IN&&EzQj{dP({=YXO5vVG%1pSO;*_U4 zFXocKp%4IaRTYCuF(RdLCakSj?Vs5;mr73=)#_dh5&_-^K8Y|`n*&kcBB1E#D?ZJL z)M}J={TU5vRE%y@z@cHei?>O*73g!mz()jd6yDVVwlEFu^yI1wN$LkUdsR5MsNv z+2|q1%(AGNEM*0YwQE0mNWU@LBoZlaGt{p6WRy%%wPhu%;h-xq3}F5EE6%E_lu~kJ z{q#BDAg9b-bDkSRTnipY?;Bikm3>GtgvZ5Hj&sB0C}(-XY{+8)6$5qU2T)ndqhwKX ziAHVcVM|~Rg2Ct{7eXvWvEbwFF$J36qxoZgJY9a2kjE{EP~4yGvS?tD6J55KC2d7g z3v)~^=VNGWSPVUEjwD04jI%hPO>_Xd*#||ol+QEBKjap%0GwWHMWFTK`1X&2MTr#* z%WTgG3Wt7}O`4kZNpO~D8Wv8aS{@aceaL}Q$#MXZPKfdtv$L`T5FsT@%$bm#I+Ue6 zk)B}&tptQ7L_;x|%y^3Sx|a1HB_JB>6%T;?p}9Nd)3hvSp;kwj2F&QDWkD+ICge5= zVF^Bl&na=lxhf1xq-iy?V)4nru~G#74{^Ryc-E4fz-XEGpY-F`N8~~cDGR2C5iI&q z7IdScc3H7@FFDh0EOuzX5E)#Mz=)%OaBUMQtf9h9lM{;jg(WJV3O|NRPYPqC+IA#r zoM7hm^kyCi@q0ArP}U;CU5IoHC9Qx2irXjTG7lr#Abn$o#YoKf<};T=i!&|Ci%D$+ zBnNB?s`B=A);B;{0J63^`7>Uu?iI%n$jnMd#{A(A1Atjp`<$)IY{@7B0TwLZbCIPm zY8p?Ftj&nlqDL2cu?QpugxqscmNE&GDwf5fK(sT_6s&<+=>?SAi?k6&6o8&Y(5B6e zc>QkX-~0CGH+}myyaBn8t+L(98dt}{^I?e!I?vQ3NFT9pHI9LG5Kff9k)gz)=H3Cx z$@HnK(RHhb+=AJk;XCOqf}>0s659hHpuPI6!5MNc0Jmqx!9*>=hePKFT5iNt))S_j zO3J^<)$S`xu2$Lku_>n$ft>56g$Lh8c?WJn=s)ZPz1 zJ+k31B9^Qm3SWe&KpgGx{U)*J)~8gCwTnom?6}qLlfExtB`_+*H#ticMhfLg*bn%7 zofwNOTbmZF6+F4ky`YYjcqJ7){Kfh?Qvp(#RD|+87{EE?B89CrN=R z9FyQK^0)$3?Bh}VD1jXcu7?w6y7?@9CI%cvkoy;wd{)Q>VL3#wm@)yA`!R_~fNOnj zN6?fRXqDisL;+l)>PxTO6AWUay!smiCc9}a3B63AiSW^HCyE;U$&dt|Ak3k%9X0y_ z7i2Ew!kMZe9R-(T;K-8gF8LG4)|eEKX3^%UBru;kb)bP_+`R0tJXj zLoP605fXgoDZ;2}<~Lw9Kq(Vsin&rUXAu;!W^q=*FZe0Iq=EaA^o43n#n5Chjq7jw zsK})Vt%+EMq|{vWvO#9~HdiT2{gW~)Oss>ae91Gc3R3szHcnB(D0g9YutPGA#l(pd z%>;Y${cy_yPKdjPRVjer5fz}Yv;rYT#lwcAQ+E6mVfOp&LR^+{mMI^G?r?1 zXa>i{*sRRn#90nxC(NMEEh+--)_P)y$Z}J(Xu&AuDdF5=N4Y4n(=~u~?xxQ}J+7>& zQj~rpUw^~3T_g>ynv6F9nTP^oCj5v$BIkZ~uS+QkJz`m+Ox3Fnf!LX6qt*|foaJ0B zLIebz3UI*zNDavaSLD?)#$twGXxx4y#f93Sd;d>RR-}?cbN=}A+7&-}o5e{^dDN&Z zBX^F?b}6XX-X;R4h@2R5BxWgbBYJ^Mf#`y0X%B-;&;S+E;{bb^i;dwjC?q)RLVw6g zaPm^dxF`{r#_jO+H(mpu7+p>a8wf2mvVmx5Z}ZD$-~M#@ z7nFQTWjLopktF4$n*_`dLW#|q{Kf?(YjV-H9`>XujN3oTf@r~|*X>2UCp)&6lBiU# zq_d$)vX!1xl`O>|q;Q!oQGDzA8xOXVw)s{6p7l07;YYd^+Y9XbhE}QTC`u_gYEwdC zYNW1s0s_Q=%4CPUAE(yQEo_}OJCz^}z{MSeR5bBSm#Qwh!1V1o;64vltEEV-)w8nV zYPB#753_3co0h-f_h_^YrR)4E!vvC&aiU(30Gm25XF7q(N+F^PQ$>=FBC@bw;0|@g zby^lpZwyHcDOPV7hO28`&IH&*2`Yu;L`80R@i8`oQS!!V5||!8OThyE;J>D$EY68? zEt4^e&FTp-IGsVXAxc)4v@$d#C>|g|MAb!DV&rzy1dqgU)uI%kD!^*yL*ylnx}=qM zKY}Aih9yl_q6C(^`uu*K?oV{+iFwrAQ5jtz2gL1S07YiaD8tlAx`-En-tq(?@+cP* zTSVz=-Bn7E&!*S*Hj!AFCMkTC>KqM9!wWKvF5?7G5LmYJAAQXsFX7BPf@C;6o1rcv z5xHl`b$-lG^-NL082|}@DODLAR**WMw9J~|0Md3~EJ%&*WrkR&ytc?9h=Uk1qL?NS zr7}R4AC8@Kd54kE%Nj-%1jNU~B*O=ln^|?Dty^iwsuM zYd4iMSv20#Rge+0nn5Ay0I-O*TxR?=Gh;-Y#eE9fQP>v3+TscruuPg(sS~Q!!$f*{ z{NJX-&d^Zf0rqG2S)>RZiN4ISJS#*+SSVJ$Pe!eXOFAPKU~@2{b<2EeO^O^X$bh-% z@O9E82uZVD`QZyEV$#%zmAV1$5m_s3Im(2p&W8tP(qen45=&=E7pj)v`qA_^{B_IU zQTIOG1Hxohip+(Uf^~`PfapfsMvzPqyhQ|Y=nH?xwCa>XgoF7OU_<0KLGI^lCP9+j zyPi}oA0Fr>C7QPJ0d$Cn!cG1k_bm#^`>j?9RspCk^zvheQm_qFV=zz(SRDNWU%Hok`N!L0@xQaN8CbeW#x!mAt7d1 z1;Kj3b?wG+<$4ry$IusUb?7{nqrZ0eqZo~IdX?OtA05bEIF!{PEBkQ{gk#z?*&OFW zn_1D5P;|moTKFi)Nz{$w4pOLK79Y$Z2vf;SD~nO-a=|=YVh})lmcmeiG?gme$kL(T z{_cFc-t_I;&7XB~ztlS2M!tK{#o!5gOOyo)R|}Q%puiPKL}g%b(ystBuoj3Bkr6OK z6u2e8{j-?{e>g=ZF}g1NA=d;Qk`VAme>X}H*>6mK)KQB^w9XYOB+jzOaRuP*HAo3G zYziJh6D6e8n{Y{?ojxh7w8 zdj!}%za8)mzehu%sV9Nk15#8ey0I%TPqnQ}prSykF1jrb-V`jkqsz~Bx-4)tYP5sc zib7JUV-*HWC)kbz zayXaT{r<<_=C51MPZY42sZ3@P1ks5zWi`oRiV#7Q{O~}Tgxa^wWJTV^1b709_z3t+=Ym_&5rbG$ zX*x)=kQF&IpJv?e730x3Rx5_jqZO+~2-+zYVv+>}Te&7Xrnf+wyJcp6f)h~uPGE)i z3bvA1*Do;tju!nE9UA22HCm)`0*+xGB+pd1q2c!4Rsk<0W(-deGSFFagr^1RxEVvt z@qwI$JU8&*3IV?{2#p9&yOl^4e@It*PY=aXoJp<8$G=)J@BYB=>QnQugMrM`_ z#XEn@zo7JO`RBu*>n);g*`k6sTt%}W8qmm30_p*R1UVuNCcIpMg5#B{HZj)b57((b zS#4f&0VhDkq@Ty`c>!p}iSo#;K*8x=7n(5|Y9keDLYzY^3W9NCvE=m4col!u^;n5X znhwH~ejMc_pI4shRPakenij+Hls|$j=($4aBL*j#kBETcMhPjfXfHJc6(R_0F(|3k z`1W`H^N;e+haYi2N0E)-y9n@1g7}wh6$CQG#opcuB&-Qn(J-F4wB;qR4j)*NHdDn?5K7bk|hm>sAOj$O$Y0!;)yKnWNlo`S?` z+3$jpRJIprv8fn~VOS*!fi1uG5>qe{BNagm2Nx-jDvK=nC$pdk%aUzcj+>g9MZ?g@M7hwMwXBtHxfVgpKax6DoB=}ujPY)? zcFU?heOsc@HBL*|;xvBJfxVHEY(bjN5tLvhG<>8)u#gUirNE2BM=yQAZtiF057(hd zYF$1wmn5c$W|&P$+O>d55#Wj;Y@e{o~a4M zGmSS~jKUm0nfI#@${Ay!O00Vha2e=4Q&zF68q9%lvW|G1msVVpl!%)tHAG-yBoo_J zu%c+|R*N|2Pu&VSkWg5`O-oCZ+n0){?UyB0;Y2XvBeVc88L1-E)B-S;HJNJ8g>ZG~ z@89xA2}n+{8GwY?ub;^%L={0D#>r#_iK+)Pus8Jf?3Xu+9n1QP-WMXa;hfrR67H8>ea~d5uF# zvKFn0-XPi&3E_nYfXiWss)yntOlt=|7ATZ;57QD&wa5zW8Gk%YM%=U#zrdOA5B_iG z@h>Jvfi0I>PofI2nhLcFQt%*m<1|ah1!8R(wzj--0u!%Kx_~|=Mef@o3~srYNl{Dv zoR%1Jvo=#(wIMjBLL9|hSodH!>s?R|Owc7L6qF<@;FoGbMK*U|8Zva55F4(Qqi~^Y zBpMFCttTOb$X;+%FhZe~m{FA6Po->uoeHNAtnoiS9+7Hs>#PFGL5m1jmYmD3i(7wu z``fqQ@i)n?CC2a0705_qj!;)wkc1}|@U+-TF%Xx@@S(ZIAu0vu0>j5gM2UarLQBas ze8d|+KtHFY)~gKrjH=*??G6~~7|2#i18?edD2Y++Gd|;04pRldfz}urPob@l_0St( z7PK7uaZN7YS1dUiu&9Soh3d*jsj>ptbpj6p&@)b0qO1z+^5-|1RlTOkTP(B{QuOk- zKmB)q{2qUa47!Z#R00G~suI==L?TO223ye9^5&QQ2hYVb$T9+>6%~v~YRqECnNTSB z$1w<9-f_!6!T)Xf7>S(s%ecwCA2x!g;EzEYrd;P=Z9{;kqPvjH+o`(-GmXC0mL*t_htX;*B;p4>N>zW>s7ET0Eq*_ zwOlMgQ1(Lt_Tn6eO8xv6ZL@L)-=s{vvAr>bdYX*zc-B03WB~$-O5=kMVMc7E(|ybt zWF45Gm?WbrOf@(~kxc}TkbEnAaa^Co9gw07&J8^AqZ;PygP4tg>7}E@SBe2VnPc{p$O_@yo6} zY8`u{w!Bto9Ie19mop&pI7Kx@agqH@|EKIY4s~h)W3>w7xzlaH6r&fz>2-{WB5P3s z8RKMz3r3h8U}UF;s63*(L}B@CRv5@8z2TDdVc7Ze~Ii6h1(_^M;X_8?$!6d zay`m~D7En@xUxp<+WQNmJJnG$=%@O>GtceUVlAEvQbwuFArok&NgP9GtUwresJ=Nf zK%Bz}#p9aU+IrDH+y4xld^wtnb)$K8^ACudD|J>rfI}j0TSRhjlckcN5-L<7P>GN# ztALj)UiSmD=ujDz0(9popy2D{;Ttd6Dy@7EAFdL#`h~p9SYP?$<+MUga7$(7^_Pf9 z0Y<=v#?dN~gSSOavD?^v`yH?Ot{*1cYNv76*RQ^L@7}Ag!)hMrscv&t7ee(kfaB(1 z0175lnc1yW)QATE%>Ppc+o;8v)^WceG{8qtNUdfkJEh}ml;RKeG36^GoD;H;YaAm< zELJbT>4F=zBqVCtaW$G;UaeUdDbBPhArF7a60uIZk}!l=jpAnIJ7|DeAz(F2u~vH+ z%ZTvFD2=-XhElU-J^%sJt@wE`*Kf{t`BuKpY_(MsCJdo!U3)5m;g)ay z#hDVq?87B;tB`<-03F6^MF3T*R6_LtzalI9tqH{b-#E3p%f+eM0`vce&#pj0jAlas%0os z;AX+ZS>%rGux=t^WRNtYw}fI&hoR(vB0UOB$f~8zww%$$gTN&%B;$xuEWQ&eu%a?b zYG_WBHlX8Tf+YphH$>RORRA^dr7qc3GR5LxB$+b?&_;wrH60WKN0Q#qbMjfar!fP8?VGLD?uTq0QI zM6~ck@{F)dyCnDAMUs{xS{S4)ag?@A*-4FCyG6Bl6IL~PJV57HJvqSu7&n5`oC(M&qqtc6hQBe zw2Y%omyh6vaAV{46t%jC0Sd7MS4%vWBDNA3!Gn}~KcI}LA=)3{u41%gT;^NamiGqe z0;^Y`ExR>XWV#D$5S2LKOeND|Em=yM%{#w; zm8w=c=2oR0q0?8n$R+F+2>HPZzE)k~VQ!aYatCEpB}rw>vi_9?f?>!CnFwpeAA4A8 zE|(1k4-!a$#RFX1HGoMIMNfZ}5E}ndmlI1)rV9`VjzEmj%^w?V0l18}1WHAr1S&i< zv^k(XT#9ATnzfnGP(6Bc@=O#GpoS|oB@-D+7uIMEwwXc%IzgK|po>0BLE2V1x&Rrp!tdS7UZak5@pbdwW%h z{W4fJwqRD3gAIHyok}7yQgs?Ay$)NXa1acdF%E!*KJ<#oTLA(WG1WTCy zy8NeaW5{#LoERZ2ed?MsD}@zQ1WOwtQMD*^1!OfyRG{;#IcTXuZ^SL-NmNFPB`HTq zsb?av|I1%nU<#L_HejiHTe1p!1ZZHbfx|MxIoUVlREc9(t|lo2g|RnWC;?!Un~!1- zp{}*8BRGN77=aoF)f2C@{9ld#QyO>+H3{1603|>eD>*=JojTmW1BDZ3X)OXrm=+@g zXGU96#Ed;)n}5_eERhEkmzYcxl4guoJBkTAFbD!Rshnqmic8UZ(uu)UA~phRw^Ec$ zAv+Oj{*bBDMIU(TPoAX`QJ^7MhQrhtH*~k*=9)TUTv*zK%S^RJBfS-h5F#3L$4mr<3hG5sO9I>nU6Be! zD(O$T20(-98x<{eRIl_bQ^BTFE3fEErYc`aAwe#{kOOUaCJ>had}zwX;^g+_lw^Sx z4-jFe|0oj>R}hWzr#fOf-~qx>dpOfdKQ-!9Osz75stoSUQf)q%8U+$?Mp())!9lJQ zP7|v}1X%@8!jX~FEK!~Y@p-rgcBvFg z9i|C~+r2e1E%Jh=!Y@-1+OrhxbF|VNG0StkYl=9_K ztOb%T0%o=ruE-%Mop#AcgEQE@tDsko5(|nPr1Y!%gmEAy&y*C@C%>hVyDlrH#D+uz z@S`{kh-%Ggk2;uusXA`+_vXXIZ-9ndI4~ffi@#TG3_s-qT4FmN&E-1c+C&$lG*rN_ z*hvu)Lg$Rnh?IRybsD;qPM2XwO#+}5 z$mWA9C0SmbI1~QfOeRw36a}c|*VH8|?6M!uhg*LX(g#7Yz@m(X$Qntn(2r^At(U@- zR7l1HSap)-q*DFqLfDL{msv1pE_k(h%{|ZvPUvnlP2m9mwrD@-CtV>jMeWt*>9xho zu8xRs+5=poULqBNA88MK$|>;?DGNM`Th30dp$foF300SFjkVOft4BVg78TQV@b zJiqcoW!TNJkHr_koN}CkAXr>P2IhzFOv>Vl)&gZwq;YNoF;BNBbnPi>xf83l1lpDXFYc5?gtv&^)KEkW|ALJ$*@oTm%fx zxm+EEnAHgocmxH$DqG0Q!^%aLS^Dy;GcKL6Emuwr$(hW!tuG+paFVs>`-* zqsz8!+kC&CnVs34-HUxL&gJ>VNkp8?jEuh`0XOY4b070|H~vRin8ti zC<};+TzX(SQmM&Hldk6$|HOi%nK%zKGhZ}uqZ+-cnDx%e3VVTdCKTak3J8%>F=|67 zGprUzP*$rTSQk2S6o>FO7R{dk?NCKb#OkkqWqtAs5Jq2khoC5*TgM!`pHcBI0V2mK@ z7MIoP_B@Gscq?xvR!31p32jtLlr6ztFoA2NOq?uHAtfa$6$x+d_pB>aLB#IG4Plz{ zHGY9yY`jy20~zNh4wi&KnVfWpjwP#g6ozvW)}-^M^QceFWY`>J%N-{`;ex@#8)5}t zX5XHxH*7{$THxGbiRi$PglUv2E7Ov??r_pgfUH%QQA0N6&nRm4Lm!)C2QQv>lnlDU zoA#k`fEJQHB;ldYSwxdvrJ=TpP{&|PFD?L0vR*CXA!KRQN*eNt6UO~A5n4(;7WZ%D zmJJDP!6YjT?ZmUt#GRf#9%srfS6o7T76LW`ia_%694=+HiV^}wdO*LJd>i3%Lwo|B zo@msbJu=^Mb)j*@!LAaa;!hC=;M4@X<4Rcfr(}~cJL@lNwfwl+I zm;){sb!CjIKY0w@N_v#NiOaAj&9GAEhQyLm6Wbt%lAMu0u<7RaIi6A~Wm3cr*{kn} z$iyWp1Yx2k#Vf1|yX|p>^T()ZMj@hM?7x>a&OChaocmcE0gu%0p9WXdZMC zh-TW{7YAB>H!x@YqnNmc(paJ@$-s=Mh@(=W`}2*RG6O3}a^xD;H>jEJt$i~}jz(VD zaZ*g(m`7#D#A@)3(nqi2Kw(imu*bhjsK&ZWX*lt_m=9uEWD&R*Je{CpoXFAUF9S?} zlHFK0{6t|Va@&(Omb^3`Of5AqomMBI@JzYY$d_~gHDw!`3qv0`0#=;|D4dX3?C?Yd z9gC1%)CS9bLc@xtRk?kOVPYABYS=K%SfqVshhk|wm0T)ynh7`DnS}Q*!y233*;WMufUJi|hG8Hl&T2zh-qx8q5 zdU5x`h=g6WW<$FF0CCeuC-=4+s|nL`#gvvCM&%Xmza1U>P+ z(A~@p^GM+((wFHmg`l{N38&Pb;s05N+@_xCyk1B&E+f3}o2Wj+b}?v3;b=&y?Sh5~ z8siVNYKIOz)i$ZaI=tTkkLp#*$cK>yjp`c!JjMXDL}tUaYvs7e)xAJA9d5h#tSX8+ zmq7nxYK10|8D(O64?LxLo9?q#n?7ROK%!)*-L>WE?T~Kn(+zR-2|cT;;SY;h@buGI2PEvj`M56D+pQLGp;qgt-h<$6rnVFXi=@ig8yh zz6J@xP|Q~65@v4mMP5JmZ6!zR27?nRG?c602azI9xd~~5PjdT{IIg-lmjUpOoNfVL6`lf`4NiXq1xf-^0Q=Vg01?1yNBm3tzjRK% zzku`rU%>c3ZFg*d#LMFk;rQtbw$B5Rlri064%zGm)rHvvZicLBvO;4cE_fX9HrA7x($zp`({CxX)N z7(m*O!o%(rY&doCLfB z(mq0dZhrvpyU)8F{#*VjfUX~n?|>V|HOhzG3&4F}45kmfdf#7@W{-JVe>?a&4UKiN4b_(x9%I_Oy{=DUHjRRxq>9BWb`Y>BV z6O%MbZ@WvkaUhmg>Az7@r0HNi2ct43 zg{RS2k$3qN!83Vgf#Wtm;HIPS+4Ru?RGMy=Iu?ON%!GQ1l!iTQO5fPSNlt1(*PEJ# z{r_omSyhx1vDl{}6N)IorudK|kY+;+Xm)$Sk&e<@zR3&HNSY|J9#_NF&fE&K_KMYGjVy z#j(a5Obdd<$@QY6po3H@Tbwzb7pT45?9D%J=kxtd1m`M8^Etmp4(c5WS(5y;tGE5%tQfP+ zKBvzhMb>SjdMC&8>}clWKC0hX@JFp@D&H4C_YKL{Yn|{Hj=iLVIFZ>L90MIt*J9%G z7jGsl0>mPVbSn873*NpNZvGSY?2Nu{O{l~JQ`2OhK>6Ob;E{@} zascE!!D+xF&(!0}w=vJRk4sFyW_u>Y<6gLKx1z5>o2S+;*>K_(K%*|YkA1!i1S7W#WAO*a6l$*4_K0N2 ze`lDZWYaT8;K!`+BJcZS*?EFlTy1HgGp$C5j8JDAU>3_3!?bX8F zj~&hNCQ~^2RSCU}PWC}=RV5P1dIU$MAQE!G3o676(t$(zX)H6F_A2|lKwqN7ZA zK4nKS>wMiPllrbD%lpDUXqE?QjcD^Y=PwTUy?h2*F{<%7DqZ=D+vNQNG@Xt3twVE5 zd-Zf|q6Nv2I{QJwPTVQ3zgZ-23Mi8)p{5O1+CuFzklZfj2z$(Ks8?8B>&{MDMP`Ct z>C6dl&q~gh^h)o8OyJN}a5jX-^Nws&}f z`Dc^yW~rs08&)DTU))K$FH!f!>9;+i{GXCQB*}wIQtA_@*JfNqUCL^Mr4mMbLdm89 z>EX!SFH~yZi%DgfE?w%xV2O4r5QkkpScO zDzw@)qHxc|c`Rb~OYfLW^7%L?vf#!d(^ao?oh;1r9pGY*|G=vll{&(1ulV~HDM{I* z-YVi2Ty+}J2*?T1*S-f|eC8cN0_#oKV#Nu?J#;3Y~2oXV{sglF?8k{B`IqE7wWk2I=S+I*0&`~ z&ZD_nazHeBYa}-z>f_(20%-_4_>+>a@V)-x;lDKe;IPaNuSW%~!>eml8UB+=^LV7wo)MZ1iE*WO(92O&EB zxA7Sz>Be=(=O(q~K+CqQY4!6TYFwvwN(SiKS>0E!%LD%?hI8DpqW0 z-zI*c(n9~!+TOkbcNw&Xe>B7L-dYE)+Q{&4JY=rWuFlJ1*6Mdb>&c}-tsc@fJSz7P zNXv$W-cgaOPn~AyvXlSQFGoa#Pme5>FXcw|iY(C~uI+TC*tSB7!z)(bw+TO>(A-!K z6Rm{%fO8Lkbd-33rH|70!qAJG+Do+lNBFu5*_Wu01_gX#gda|aJCS8q|JC90OD1OO@)x90w{C1q~v*IhzR zjA(cePfGkKl-9V?w=HxKw~;?Vw&pj4{UIf5VPBIz)9b@hD#){6((baURv^}S%IM) zaf@dvs>X3QlBT^|>fibRABlf%Y5pBr*0J;jRVyr?c_2Og)KaWYEg$wgwClNC5SxDp zz^rniZdL26O0q1`Hq8fB{6LM`PlhJUBL@y;4rizI6)~PMu<++Sj_|o^W%L2 z^weeTx|nWV1+Pr1Q?J4aCspES$x{2qETld^wx3t3U>XZSYa{GnT0ZNc*4Dqhag37n zr0C~Kk4TC&re~Jt9DL%nA$Vr9oM(1p<~ne=i2junTmJQJHM%2VuYOllsH{5E3In(U zhvD%ay}bMN7+N9Cx?LuAo!Wb83^_ev2nH-jktR|wHxa*cTJgy3kl>tvqr7gRqU89f3YAxIG> za|A%^l)R`w{%{6c?0kJE|Q0}B)tb#Ho_{6D8-(my3(o#*yUPsjBQFCkq9H(g!lU(AYl~p}uBdE@&CCas=+rst{voWf9%u`{EKuz|`LrgKvtz1^gyiG18w}TNIC_;SzVut)!-*~M zWyx*!)v0W@K;Jvb`lEemX7Nmkv>g%YHipk;-lAoSlmd1sw!5}ucX`n6MJMz`C8Q2| zCq@jov?0a>*S~P3rN(rnbm|l-URn&duRs$T^V9C`s)_C~n96B)?6Du3J~v1W27Hy~ z0|^J5);x~ev_*N@2r=Hz9o@^{1ZE7|?J4qap+Z2qotq(%+sVw{JzK4cFjxUnl+YnY z_r79qkkTHCR7PxWhEL|gw&n&38;8^x3DEQ?xuX!1Fe3iL!IXET~wR5$Kh+u%~iVm+e(s87@;1a z<66WnRfW0p_)7OPH|IlX$xOSXnO^(xjB_o9kF!OZFI}5|)9i1Ojl-e1S&RLMy~_^M z5Yji4YMUHqzS+qp5+vIv(11!g z>=*{rzYl{-pIU|?o|oDn^K4E2kcKJ}Mf?u=h{_M1Pv!5((hotSKnt*j$U@qt*i|~W z&<8WDVX3HI!4}e$HpC>wUu0yi=ZTShg>^CZ1}qdt(A?=7Gl)0)aqie}ziqj^t2s!O zP&Fx8^H0_4;F*Loiep-QuRvvhbm{Qgt0p-#iSM7@v$2|dE1&kn`rAS(f(JOa(ft*+ zz?ijm!+JaY7vPwQ))^!nYChj{`sg-K^_5iUqVMe8)axGff&tpJfE((d;uin}SVz_v zii$C$JjhJ>gTq3d;WdzK_Uq8)gaLy3flbECEN&GaB!*hIk#Bg(l#w>hJVE0nk0TbSVUS zGt`lJ4=RcvNRSbkYYcfhU)b*A-Y+6JY=d|p4_>^y{sJIrA$Fso_aVN7Q6l8l@zIq2 z+!p;>r1hmMM_6G2?Cd22=&XSvjs?Dcq;>l6ja*<9PV+J4yKYhigRwF2W!+r*49~0!pBGz740U2*W zJt%W51B+d>XAv^z-6j60Xe=Bi3$|y995_ZzdN|#D#}1gomMnZAy@h~~>$GSKD!2(I zCT11AoW`(_;MGKg6!Yl1Q0=A!ly!oLha=W1TS_%fS-HBgacx63^)}xt?08ct_>5lA zT1*_oT7buBx2es$g#IieJtJf(5{MAa zclNPeSUi1jA;(-DA&HW7S7{jTOMX zEMKWddJHj#CJ%^YdMhBKk}=Gbn0c^Q78K{IPnbCE9tt6hD4WFSs2*7pSgRW44x%B2 z2y{j13_-wJ7_i&6qy3#(G8A|N8NI$JLkvOUe}&Nelr^A3FlbZwrIq$J3l+BVH{~J` zky|n}W1rC%S+vnp&DylqBfn{l5O@)aQD+8`JnUhp_PU^t`0 zYt{n%u*{kKb%pW!rZYH2W^TQjuzMe2fKmM1J{!c_14xPC*%cCIO*y|M?};#W1|xb|Sf&axYfx=;kq9{c3Sk04Xw)lX z9*q#oYjgfVE4`Kv*KDaSBvzV}<@7c&Rz`SU84wC_8tH$Zx)c&)-5!fuB`$%0n~BPf z-t%r>O3s!?OJ#p~T&mk!)2l07b@?ZoIGq-}C3MBPWD%Irgi>T(|LFHEvd*c?_y5Ej zB-9teFTs!kMXRq10b?gN2?^v2AP7d}P6KgU6#IcOenC2^%>4b^ z-=hrjx~2b}8jPpn@AJn9a;Cidpu2U~d|H=>)7ri~f8~Sh`gzFf^XbAGD;l&uX>rqD z983~`t_LJm6jVA+{zxqd=jDOxi11icys|V@N%dTH{|A1`M{$ql=bx1Q)Nv=9cic`V z?iI$l6|}bVHP&FznCy^EY22$@W4#dt3f)M$D6#aabMgUfk~G6UOK3Hppo-1zi%{=i z5H%z2M?5WTFj79I?nj{NEqmk#sg^CdmS}X}yCvU+FWjnF74Wxpf#)-Av z7e=ssj_13>T7(B4UO<|Q@Q<2v@v$ZlGYZo?8rqRpWXc0^HW$2rm|u6ZS9Y$ z;GQXl2;nWG_T_GrY) zz!?^z37k7>wJ1d!Sd8*LL>-eHS8ZA*rG6M<3J%taaHaF-r#tI>BeE z@C?njwfa%bKzwE}heA_e%3dxF?QEDmnRDV39mGcx8nFhQA5i0Q<*n&>{bBWjB3!@N zx@k9GD9LhA^q})fUp?1OD~Bm4XK2UIO=^z|n+ka6r+SMW$m9LF=Q~3{=r7BEhny0z zC;I2HxK39KDgWkCeH2=aY-$Eoo-lxJaM9t_R_#!+$Ng!Hvm3x<5#hEaTy+Vci$iKt zD_i)8zMD$j?dk9WU_HC+JYD%0n?1c8RaK0oJkwnr{?7OyRURu2LNB@$^lB7|MP-Nb zEIbxzpLpSXIcm20+Xrk_h(-OCFTydEwlvKlu%GRv4f?tG*?JDYtXmQ!u1%=%o!tCE za{O;D1lYexw33E1X#5EqRbr&MA73PeFEWskhu-3(ZrlIe{0iknCVeA&ErMbeG9+D^1cEq=B^_mnpt+@a|v15^6tpHkfF zjk!VNJA6x+>x|4GF#LQ33Lf4>>IizPoj+>5-<0N}*$9{;#c`uURxW^{bIHp5yZojL z4!9DoQk$JDhW&_rCDR$e1oLW&1E#uhANmyz-5?Oo_Nf{cUNbD=61rc5Pzs1 zIQa}tuEBa8%7c^0ALh46bYNLN5<@IX8N}0geZX!ok`X`9$yYY~L89tv6P}`*)5ncD zs;fn)-c-&o1bVd~A=s$c%emS9Ds*a4=-OHkJs4W%K zCJkpsNQ4MjebEi4Q9Jexi+m;);}ZU=F-|-JNp3N*c+!(0+;FciMSbZe7Qso)*cv1% z<;Ep8CwtGV{N3QtFQKi#2^$y6iVg&bEZNv%bA@?C9{@$&o1EwL+jdNB5%a*$&Mtis zVJB>>aWWK?Q2l!(RzREqLHbwuleh6s%c;W(H9gSRG|+ga$M)!-&tP2mWqRIhs1Tt^ zA6`wXoiZeJzu*K0Dq~Qc{Sp7=zFF@8vJkndg3V<1>1JurBm&CC+Xtqoa}(teBxZnO z8`F3c(b~`)6KOY-P=<{Un;LSe4{;+WReOzn!197~|Hl{h)|Lh#`IrU;$B!;dg^)3R-f*z*2-m zOcZ<@(Yzo_)+C*fL}m8Udi>aUTVt?TlWAllV7!skLKY{Z>vj2dQ4)lI6?oJR` z*IkrRRm48mco0oJ*{p*gW&Ik8AMBH(6NcH>qM6p$=~nj*|MrOGyJqvTJRUIa0A@ z)SYP-b3vG5f9(vA9Wj4>x-f36<5%*v=zx}@zU91wd<=W8w7S|ju)CocA}uUxD@8r# zrY5s&6Me@!(lVmCM;Fgo;g~@39%Vi+g^BecOVP4s9su5aa;%-E;q2j%^|MSHB0ZPn z)H%&Qtbw9v33wj=ypyNGlWKP(=6^za5>yM zdVxMGXArSiToY1IX>eQ*$^j!hJ>Opk;o5@DbHPF!qJ~F{rRRp@qfO)A{#YjI2W_p@5O(!c7f8o z&Td~;TULuX(AtP1%1@xgLhtYs_KtOzwfAm7O9_n#6zFfbzYVUM{v0_VsABaI2PG$# z?x=B-NU;sfiW<;dkP{MkiPSsbwky-LOk-5P+VNa8sIeq~l_mQ31;z0MDIbE)5i_8^2Ah#&zc%pdxr zM$sofAO}@GfQ=9)M+ph3qyv0so=gJKz>;kCX`_-pY?2ZG-hv6iUBjU z84Ms?pijPnj1U`>;c z8V0WGzZttTHsXBc%zr;oQf2XrZ^2GzNKNp;yzCFN|GWaZ-M>>fa7kRNl^GyYBF*6C zsW7oi5m^h8OVf14EIjXr4f?R)di|@{w)9D=;sVM9hYBij#w+vfy%NHDn#k%9BBtZl z8E0j3u^&8CXvMX1F*;x4qNbnbke!qO!nLU{sV7qO*`bHw=JhJNN(I}a&{{ozHJ<%W zC0c@`&3iDe#G5(VFxZD>hNftT*y;1DEK27wd`hTYUE9#;>B6-Rt9n){Dj;;f?vwYW z-o3LSXAi$O>@R+<&Mhy}?9j!q7kbs+ecKl(V&ZWjTJ?;X zOmM>k9z6xiv$xE>H$3~c?Wxxg&DLU4Cai!_-;>ek=gcU%3`j$9*-6Q(UU)hX5Nv(( zGnD7KsWonBqwH06Q^=WYJ`5owwo0?OyRwW>K#L_Mwq!9eisO~BVW;?fYSO}P;y9(;y~GmVdrBCAjw;TDGlHx-yS2!?lL0fBa0(&RXDF8Ys?` zoj+w5b`DCWL@L>AF>B3atv;S#v?3oHbcaK3Gg&}|Px#N$cwsxc=^DY(58-d1-kgab zIb2^XrvTHG9BK99H&SXL3yoHYR7tAHQpzY5wKI#*h0aO*pfY)x> zUt#oTq(E=32xfcWYZ3gTa0jmKS(0eN=F0SX;}Az%vp(xA@5Bc^V;&3Z5f2|HlE)>4 zVY6qt48*74^^DNXAok4IT2#K~B9nE47E!(^ygf6Nf!YGrf{IUmjcct%y&ztlFMv(% zEh}|elzF6;&+E{6vUOnHY8SIC(FRUMnksGXSJHo)*D*qDGy4x-1|Xw7y}yLOQmppj z6eh&Qp;%fcfDT}fg?nrDjvB!&-C;{e-}DKu64~|s361<2l+jjc+zyWsm(d2X{ccx4 zJv)5_P!d>T?fPsit3mG-V$M8&JsqV3qNj;GNXMA7WIz#%0iM3ARg7PL$NZ*5+VwMP3zHE z&#;}<-bl3InNQ#)dd{;o6RlTeIgN2qWj+J^s55Og?VRIrYk!%jqnQ52Y8ujcZdFx? z(m+?5Z{hc;1rLO5Gfgc+Y5@Wt(4`l@!51dbVE;Zjg|(XbfAv83>|9;wrP`ehilN;~pBg3MhmPzaBS zu!B)D-T#z=+S#Mtr*w)(_IR@=`pCj762M2(&-?ldS}{@D=u$y&Uwj(cRU9`aX{2p* zNZBCmS@tnFaVlGs8$v+O%95cXT|-{Ke31STK7Eau@S?Q-ui=ee_L2yZeMe#UZ&vzG z$y>BxsB(Mm&wE=Bf%Sdqg)J-Q3HQ@7+ov0o32$nk`{!J&D!@1X<1cJd_uc zRrYZZu;jsvijrCnULl2P)^HP$vD&M}+P8 z;;%itPS!j0+?7UUvZ=$bAkE&3l#7a#ZA&_#zb^fx)EDREdyQdvHV{TO(2)i##w<^7 zq(lcmz<5`5UgqA@P4<}_(UeWPl6y*#0(`SU?gwbx$Bd2*HMC)Zh!e4=>4As&vOzS8q)RAXe!CN!tj>1^gItvY;XDo^ytqK&!h+CD9Dz`E3;+AA z>G^E@L(c*?RZCg)Mp55pSkzF&puPO$`9Rn$Nk)`G`@0U&c?ANB540RE@HH1>A2Q3O$&zZk)lqW&&AT6BrTxBA;pNbHOi z(*86Q{dAi=xxM-vEQs@pn>PO&G=0L%D4_K!+M~yuNJI-v>{WK$fUC)G*1R`D(FKITgXOOCSaV;@%{|m?xzdN3n~x~ z`!PtQ$~Zh3<{QB2q0ipY(&ul>iowBRUa3KQT)Mzqjm}J|oER6YF+=fhE5* zYj%64ibaBO1Q$)Vzi0tA4r<);gLsrXL&Mn-ux@wy&c`OWAcpMEMy>TsQFn{F@@fZ1 zQiX-KM#D;BYT@=MMlwE*#62DctE*gNvAx-EIi}d^Dh*#;3l65jwo{Cdor^3W^YTrV zH>4c#UOP1BYv8zV$(bc5n)#ZKzjc@qD#XOu=EFeYG-!}ae5nmm{y6~3+gFVfX-EfD zC3I9^Hu{xwXcaO!Ch`kytFSifejmdSmHYJCxrOP(VQ4Vs-wo zWN(5u)0Am)h1T$W%~WlxhtVZ>8leWyw*nxUnPWl`B$kcmT7AAcOD`K=B7LEx50Fpd zJ<-{Nim*JA<}^v0<4|YV7ZZ-&0Mpza>=?A%zV6=HAusbmdxyI%V_Q;cfKLV(A0;;? zQvAOKK3bfCj5!{r)TxmZ0^UpgNW~#GRt=O|JJN-#*%AT1cJ6z4&oL-lWuFvKukrkq z-_Kk$z@Ey%A~?UoR&k@2LNRXD;piD8`VYd8<}51V5tD=Y0*Y32das?eV)fB_VL!pi z?9)1v-=Aggq@y9@(}PqYqu^f7l|ne}bLi?h+yT#Ih6~%SR?aB?NUOFELC|=ii84z$ z2hQut!nuh*0P~7@FI;kZ1~ld4H8IM2yi}u1Mf3~Df{jeR!$D^EdKc#Y`6^6hP-Dxi z^_d9ETHO1wJ&r7sU9UN@W&2?Ip3UC#G#;*;PtCg*lk5D6^$WvcAG(2ZI?-yt_ zw3}yrxA}Rl0b>KJa6m=SoU~b`oZe+%eHT+QBz1K z4^ZQd4XT0>v|}1*AcU?{TZ9aJsL+v(y|(uaS~cZ>RtFZOZaRUFQn4r>liW}yBjFQ& zE$cU25Sv(vr*rmL!V{cSL*6AM)%#L(2yigk(1yIC3hS1^2qARUo7MEhoRi9i^8qk= zfFSOP>F9oi19p*S9Vwlbnz6nc1N9KWK2_VH8V7X%=2(zvzu{~7nUXD!VXZK_39!}1 zZml11&OlZGn!}FWe67(sm(?H}G-Z5H?Lw#^A=*@>bN3t(5gP&q@gh5MPTMM6*Ac`z zW}ej`3gTDj*2c2`s6a_q%`4nYE$>FJT!$E#&2J6oC1{GkZf4Abi)^JHX(Is1QB$&OxqX8A@d`C9ebR*Iw6`hQt3T4Y5BIGRO%Fj7@2wMC^gtFT(9l zn_Fz0vaiI;&9?1SLo)T|5bVH*z5V%ASvrIh{ZR%s9>DgK1!I`X&LXE&%KPKUuDTqM zdt1Vk7b4R#=c-31tfSiIbF@?hVcoAutZr^GlxBF00|Ijcz0O_FvhS zy|ipWJ^$S^e1%d`d+CBiAVvJ1aS!{xom~17Vg9e#k%3ry2>+*6XRiAD4lWm}TZ^k1 z4pxG1t?Om6lWy>FzGhzuWAG%2k7%5+!m?`Xli>maDqPsaCc}{Sfmxytw~NLgn2S-| z6ljA#Kv$i`F9mcU1(kMhSaF9a<1ZPo=`evRUTJ}QS4l$FPGQnQf21UZLF7c1r8CT( zi;~6oQ=*jK>w76Jh+98Ps|+FeL%7om?EmHPl{!el`%HB^l1tjj1hYDi;f2KwqmTG4 zfQ4=}`5r|>iKBILXT@t0+iu%qZdi;Q<8HG`0qY+Lo%VcpIYu-={mqm|^VWw9JXla; zQE)ALEq;205Pp&x6N=BeT@xbyuJc0j!4ICjU|!s&O#+2eV-f{?Bhc(QySG!^Ou#p; zF6|^yPBiKE)X?-bKUv-(B_b;Ym&T7t6M1}5*OyLCQ2J=<5 zoXOf`(q#s@)*ffQHm9e@3yw=GUZ1zn4o9}H9MLxKD-i+#f#F<^+57EGlu=CY)^5Li z<%2YoeK&nQ>|AvPwycI1z5Qmb047QZO90<>6O_!Q1yA1!J>O^oN-+t^cMZ8`I>Os za^LxGqy=5<-fqFt&go}O$Bb77h5yT$$P^BBLi4hm5`TeZcg}%)f7UN7HL?U!mwBNj z_yPb-Q3o`-gx!{W)in>#rBx~N) zi93(Kk`HJ*FIJV>A|WbE#*xjUUYJM9Ye9dI8v;_Y0#p+c|1kGr0e_fjzI!Q2de?4E zk-%Fakt5J6Fcv{lzZLvctfhXxRzl6rzfkbRAkVA8B8;}xeh;}9t0)Y?_LSYWV2=d- zgi9fva;hZ_3Y{iE_6Fi{Np}lpW4-`Seb(HOig5Hi%?bb!Emps7ka@z z(DYB;fSwo7bdz=ntBVRnZE7v;Y@QyT#67Xn@Vb?F125Ih(TB?j>^yPEmcW^0l|h2A zaV*~jf%rTOQ0_|JT?(aQgXB)+j~go;{BmE_Wx4m=;+w)hMSm!*Zo{uIWkzWTe%mih zE4~xdfp65Hgk}ZjRkqf~GWvn0qBt1!LzR!<41vECUE$bNaFxG;ZBvB}53AR52R}_( zy>kkm`YjKLct2^MwX#j(-s_wNBoZdnJ6sX9;Cq;bcwgit>dE}XUoA+y(tOOFe&@Z| zXsW*MCTkBFcmq+8`=7@Sf7QZIivs;Rd|3gv-^Hh~k1pB!egePn-pVwG#1!9VBaH|HJ4KW(~8$RYP34+{{xpXGb|G5YF@pG4OymyhRd z+BN9>MUw~R--&P>kTL4%4@$0NTElE)mM*iXLjNY;A8tq_{>wNG_r1#kWsCIBkwp$( zSFuB1yD-rva4Y+IyN&SV3iwo7UQoSx)a5kx>fcQeQ%bWl5Ylc{{nVU)*L%gI*EjBl(P>b?ESIi}-8Tv7cxUvpuk)bPvHDa-B zKp3u|A)+((!!>4BTI1K5^~>=&{QTUtM&w@GTu9?Z@_8!M5Y#Fi!k7ztMy?pKp8$LJ z?QqdmD?VGf7fR0H3G&}OT*jeGW%}*cgeVJ;$io~Ah-v+5DNDkC*sf}GW#_?C@F1hd z0{GO_J_YlU)^9 zZFV?{+DU9?<_pfQy{ezbO?D_lbx)lsuEkVNQx_5gw(CfmR=zJFXmbu?0|NKs*!f$h zy0v3{nV4k}EmesB2WJwYdP5<%N~)RUp)G7Y$V-zVbis6+4B5=mm{7X>`Id#Q&F3Pf1 zeIDZ*_N+*76?IXFFU>p7F_(?{`o2@pa@b1sIUEQxjRzN(x7NuRIq_;U@>+D3 z)c3A0hVMC@pi(c0JQJ*dOFadME6MT|&zm^31OYn!;8xlwO{nXDOes;v10ZSW;XPiL2y^voEa(cLui22#YNo}Y-7MQ-iVb5|o5>u4= z2;3rYhT@t-OfZPyf>}Oly~MY~RODnSr>88|`sbiPKsoJoXfTdBMxX0^$8OB_p48Lq zy(xdWudl~M417D~gm|Am!61}7xLlKzqE|2nnob`c=*NCRZH)w4E#me1^%m_HjdRRy zQ`Fnq3G5h9hZp@H05Cw$zt}=*-?D$TrOQ?Sd6EwY?F9U{(`g#N;A;r819%V)#i7Jy&ZMCO3q;~zgQwS$Zh<^tnpbSV=^pjDhM<=P_3e?%4^|YI|x`w`L~y~2r=~b>Dd}2XQi|Hd*ujE{qacp-&o%v z=zX0WAb!->jH1M)0~({U=0_&5?_d6S+3I~wB74pBjJ0%f1#U`Hy`|ggPH~+a^N#w@ zaJSUNyQ-OJs^l$CX4>B!gm=TdL&3yi+RnO5DXd2Uirz445QM^eW4s7*2jiYG5bMyR z1dzSGSRWv2PdGcE%L7z#0fu|%fmMP?-Z^Rgvysw114X4^Z(!6ady#!NE*&J1EqJ0^=3$< zx`h67#*?;V@rL3sv!y*fTZ@#`W*F`CheTd1@bx@6oqeJ?MUPsHPV}kR>Wy8o8jPZ= zC*)(@z^=BB=}G~7UhczD*?Of=x9*T1OgP-1NryoO<16EZ{J;Cp^J&j9CjoqNREfA- zw`wb)qf61h4?PxH*tN#wu&dN@DiI@-5iLku3}TSn9$o)O za4evtQcRLx9LfE3LsUfd1y$TBG(H$ocz|3U*?mgMmaL_r#Bs`7o`6j8G|p*j^HN^= z#1xwnU1&@wZ6NQO(S=;oCIAofk-9gOCxP%%UG8*4t1%s*=jN&omweL}Kg$O=d0{n- z*y2!AkhstcLdkS5Tm)omL<8#nv!vJ-&_h^w{$xTZi!q0s$6_gXyw`r_ye4t02}ji^ z^}&c@6T-go-WQUX4Ps1o&;N=)Y8fh}{2TWYowtlS#)l^|7WQk^j>Eos#ex>z8lLSL zbSh=527(B>TB2ZnSC^1^`B)}C+c58u&9rLW(UqIude6majKBgL1~2jJ$R>n6ne}>_ zEJys0KMw&JXX?J17GyCliH>?r8qH5NNU!XdK!CHIT*t3i0B#9T)5BMkJX`kY7oFAl zjWW8ApF*xRN9T5K5WRg2se7!#x1x=yIHzgJmeC9%w#X~C>K+CYx}HJIa@?OOqg4Al zXU}g*wq33v;9p2KdDt9<^1fz#9JVqlQ86c7hH8X8hOcV(7qw8`>fGuuF)y1v5fW0X z6H{+C1~u2Ow)`$STZZY1Vg%~{#D2I9jBNpDH=|cfVQ&OJ!5YZ`i6xpAFfLpW4%F$NiFP@T`WAd~t1yt>j0XBZRL5X=$&u9Ui}_ zPqxRDi_W=Dwj@)lenkzC%`rk@@664f*Zw-k>C%&c>2Nv|+}6?CanD)kU2WB|dq?-l z`==ThT}7EYEy2_(5TceUL)od0Sd3<_uT34klP6Qi`4*9)x-4&8tZj(1k&OyE08A*zi2Qr;t+Dd-bL$oDIlsCrsry5)v<7Xq!og%Sr{yh*z&$ zEgE~L^)>b0;RPH{SW+7gcY_ObPPp1oxLgbJC?8Kem>qq+u{tgb^vq=~qm(Xw(W}8A z3kNFOfuxjLHMBpYu{4AlJhS6r+-m^@_K7KSe+2|eJ^o$;)94xiC7D9VUb3C3Vcm)h zogk;!0$1-vFcPDCJ`33h=j1-7x1TB{mXGx70TiN5ZL6tLYmAo!*n~~1&D+&5@MyDF z&K4)B2YD7r)E@89KV%c_MVcF#zhxvhDuhRq+#wA60XeS4&oI+m)i@t%B^0xQsT?zz z#@LKYww$4)q=?fP2yeOrT#QK^&vjGBk>O?I$R77iM?uuwMQzP(%&$n0wid| zL&r5aU5u<;y2z@Wec)rE+XsERJdfR}&_|~rpD>(DxgO&1Fdy3TnzCS)L?MsF+3&4u z_?b9<7PCaOCb3%;7(#jew~6omEOOFcIIyKl?FO$%&=K#W7la+D zMr0hB-*1Did*jGkH_)`O=6#-{aM1nD`syX(rTXE^-{jQwsKeLaz+fK?G1Q6-#KT~~ z)?(M zs9e&UrO9N~Y(hU!uQ|j`;s&w|d9DVr)*opWK&)U8H?w5L$^F|@oM&E*H^(UH*?8x(r|V#~G@k!9&@kSgO2e$(iPS?uYkQ2RPI3M{+y6l=$Y zd7V%2>H%0sODYCLm$eWNpG)@6CD0&^By^2g3mE1&0M!d#n(TC;d3l9TXsj1Ol@mIE zr}hMt(U3JD+8VfyQ?U;COKG&)#@G4L2KCYmw}mA-DQD;ikBu{Ghyx8IBsD z)W;smE)E%My% z(LeO*AX_qy{^nZE`)?eti?R0DL~`w)W?XX_q$k(($dJZK66v-TFM zsa(MwSJ_d^BDVjdffZwB+LqHL_`|;ljtvLitAqGdd;f@*GS*h0Cesu-00N|Z0PqD% z(l;L-#QbX&H7`AZX2etsB8N$j-^*|IjvO>VJn4vfIUd>f4y?=$8EcYi@5X21&XB4p@1O-iB#*Mq%E4ak z{nUt8ukz8xU+s3tk6=(z!OZ^B(3W$-@&d$M@?+gN0Ew3i9W~G_r%9}VxBw~pH)R^Z zVjz9EIk+aeuJyZBdzddCc{Iy5Ah<=8q=xPx=M4bZ6#x|)OxwSWAl+Txea}g3ObcI) zs94hpen5Awu#A6Kgo zOiyYb?dmU)6#`hq3GebG_?wY<8n_wY{NyFGiL4t;j+Me6pr&^z#a?Yi4y-RA2}^3K zBjJPO-oAg80tLrP`@FrLR~$7wjBj(8Bj%L5nQ5Z3z|PaiRv>bXX6b&5Qi!;{-eM*W z9o9#!r()kNY~7Wu?TExFj||Graf~SzGDH>I@SDJZO~cI zhhY)KH`*oEf(1oP?V~jEU^s=r(d~>1ncWO988s8r-kIeF-PpwN&L+rZEcVCfe8y}C zqt?TA8S+mnJKy=rX66o$Z$1j(1PeV*z7a+PPuY*EU^<(QTZr#3ALr*c3(N^E9bC8~ zrKF6^MHj~GOX#_e(PcRn){vV;W^$0F`=sACA66}UgAcGljAvj-+<0;z*&Ouzz`zjh z42BFKYB2e=T@b3u0jNaSRY<%b7g{K-W98cjsxHe^#2OzW@TXEQ!WR=s?wr_ME-jMd z^XrIR^qZAOXNlPTrAZs6Dr6)s(v}m5O5l~Y@(g;CIn}#PR66#Jn=+fR)Vq8fHd!sk zqz{^Wyu$gREqe%Y8>v6kmCY|XBefcfg~`Sgi?HOt?(m4vIKzcYd91!}tM{gnTb*Pr zbpNO+3ywl#uS(7j6B1P`p1O1ZKWXIqC^F+X$ z*4D$J-yjvzd&=E7SB)6~z8a(x6S?*Pullf)g8+HpO3LVlwI4ZSYuPsX42Vh8gr}Q8 zctXfXzs9$z82B8moD$8Xm2Ck4J8fF?;uXkm8J?&pcCPtl?paoMvm?Z|dYlXjlHJ2Rr8Gz(zV;PP+ob zKy4ZxDF(;#!c$V=8FcFG7nki=vKkP<^efl`(SHXo5Q+F3VPaxt{Bui}r=fPC)8iT{ zI`$@PM)wJEnd9ra=2sn$ld^Cbhpmw*;*ZoUqmDU7k&EYL7i@|G&bFs%w;l(Bsr2fM zSUzt!v#DlO>E%~?9^;}cv+NlnV{1V5;~?h1Fp3zdNB`%Fp6v@|uS0)s3vc!Ir()XW z0Nf9k<)@sk&|rQ3!=%o^?}02|03vo0#xCJp#I?CuPw(gt^%>@h8`vlC+4n~rbihXB zMaX+6*9O@Kv&3(>r#v>2SLY8nb151G9?w62$z7sPZJOXjtae8JN``z*?bm+GBWUU% z8AT0nV^Rjsp7#n=R&g|1f`#0Isx8qw1q&WP7ctV;fI2}sYO#+|9R!W2y?gBiSuB$$ z&2~$`4>ofAS`*bqB~avXLy?9m8i3vI=Rx?7O;meAg(c=?C(v`QEtm^NQ5iivi(suf zycLE*F-Hq39>k-qgtSsA4iqU!25ItRTy4`av?Tiar^R z1Z`{`0T1@AN6T)qAYOfS5`DC3ydYwj?9Ha^#loPZgW1b-0skS4zUkY2oz z%nF-LGalIVJ2`o`!!9^w{Q%nLCUAe@3&5Ev?L4=KpKqalFF2;fLhzY)G?5L-}bEt7nUj>K4N0nqQ%m$EPD>j`(H>sZ3#WoX&yY%m=YK+Kzl}5 zdTQZl@M{11v~~34X7%oO8Hkm3n1#j!t$QrnkVWrzZSV5v zkoaNU?qZ=Nd9DF%H^YbOFh;qkROL;<%}D)&!<1kyv_>WaUi4qOAQJ7WUd<64{9<|U zvYx4~vBr(lD)fD}No4tM`uZ6Hw{?nCx+ER;7o#H!&W^gc@LoBk=e$=+r~Dwam1Hdy zf@O*h7{~~~MMV}uw%0=k*Yp0Fwq|$S7=BW) zUU2f8Xm4Fw40WiW*4?ZlKQwy?Q&$-Tes+8W z>RZc>BWB89X-X#L3y+%#9b%~x+T9Xt;|vrH_C&4h%Ms*w>kLW?>W`|?zz{N0e-nK~ z$`fKZiF6@$Bzlp8T6Wq3UT_`xv(O{}cvlN&df&#_L^t7G5c@o7ToNizFb5W91Z zGK}`i{#)&j<}njKr`|5?X8!pGLI0V%ml^1U@yc2HHQ5|Sb9*yzUTHE@juJZr=V0Gt z(E(h*6+3QT52T=DY08Il~b|CYvc=N z6cr`LlxX7kl<*+Zw z6+}9QV<#W|T&KDoAp(&x4S2JhkUZRT-Yg~-$}HGA78%&Y^|K8tF8uu} z_-?yhU*i&&wWyL`-2(NR4{#%Nn4&5T!{%obN1X*5=`cEDQ-8hNcKK*u zgbTz#5%LqEnE)obn`O!H0kuJxviwEPU`xMHrFS4vW_L65g;JJ`GvQjdCBp7hn>6%p z;T?#5V+nw}W&BI5pBY!mdUvCmT?RHrq@#| zq!KFY_hr$UK4)PcQ%PVA$uu_&M$D~??Cpl=b;KSs?wr$23`B2&yge_&wR*g?o%-AJ zEn^?0R^bM<(NQ)r6U&J{aF@!S8>y;$uK7w0D+G>IeY6d9l02}>pJLuL@&%jFOdQu+-Z~@Y8a&1T&ToI?5Qlt*OB2c8T^Qnf@o8s zrCnN4Q-;Re7SC5pijb#;-S0DmrD0=5QpYjmzsMbkAn)tzfA2NJuq1jZoOAJ7dEydS zO}n^5f?Hq*w#(y80Wq+fW~5JJrue31@oca-#fE@`ezYcYh^;t~Ct4FxS7-LY{?f!07rvUc%!`6g z24O>MJh(U{de%Z63HQVzFfHUFCsS9!axY(^5bW9@5|cz13GfqF8VI1|Jap`#fnsAA*k~~Wy%r%Iz4b~#3XAOT(45dn9$W*?5d* zzNrbD1s+?N69O^<;eXqgDU5~Gl)0Z<^5!z`j>3MXF?CFG;&TvDzE~8nNmLVEj;ivH z@@AJmyH^p zkD+%cyw+FN6GKM$2XnhSzLgKiat+j*ul%7Tw0kGmGTY*Ia1c>NHnA&oW?qMc&^!6ENwQk^4}ue&?g3}yR<`0yp~ zky%EdEfqbeXqX;&1cULplWSZEVjsoUAfBt2ok$kj@c%&}bfNgE0w)8^ZZNtI%|p1z z74}xOOsNTDaV3IrR%x=rk(+J^?fHP2Y4upevkzrDkMN0)iAoFAxGrFIik5AUL_u+! zLZ}FpdXRP+a8?eXU|zkylrnlm6cklRGQOSE0{*iu{CF&?AYe<@>mREMs$dH(eI;jSEzJ|NO`z*b#cVoP18kR%wEmBed0-*dl3;d|mq zEa2M#yf;Uab_B3>sDG)ISgoO~C33tTJhw`Sd^RNE^1j{ln3g*K{$KVcm{*o6>pW)5 z>O&2H%2514Z@sPrzSW}bUljpA%0@BIRmc-MTD`bY?CRZ5Y~M@wxZwW zA?P#ezb5`TWv*;|Q#0&HrSNNnF=Os!d8-VL;J|3aA*bM>^qz?Am9Dj7VA;1 z{g&dLQHzpVJ|wrzX!pOj9;RTLU-8kT(<|&`DnePl(wT{~xai`}%}F5;=2T)R7BDex zQm#o-tWi?{1FH~cS!;yO+1bW`&X-7U5RqYfu;8~R_e1!Sg^-#%g-VT;J=+FCM@W0zQc$u6+1$r5qxX2DrC^*-WILCh}>EE=|vvsS^{G*SaV2*H*PG621M#oKNIN7Nm25GBCKf*9Wh zcb@UQs@9KLFFvpd z#3XG%gBH+vQkFi5uI%2gXet;oQ3P!ypQ^`C4)-;XFUMwtJ9^dlUQQpRoAD7t3%Gcb zVJu)AyNKgFstyYBD#mi~?_kS=A&GXVfElX#pVz$>EUNicfNb@X3>~^JZzvpHE`bEy zM}|iHB7#h8dyA{{Vht)T-z2MU>-h{Lu1!F#%PlSQ`hZp7H=PW#`L~sov7vclWO8Ha(=`EgYepSEpXb{QFtg9o4)%y zGOk#6K9mr+?S>1Q2H>oO_J`r_KMA4W=f1}1a4fbYY1*~chJDOh(?m@TabHHw*@5k~ zw-fJpKTGnPcLP{6=0#F#WoEqsLg)|pfP)inq=&xg+M*^YBeL5W%lA%CY`11c;siHK zK^#?BB=CJCXL^>5ge5yEa!I-0{nB=v6ogH2?>3;5@RYN5F@cBBBKZr$Dhw@enVNYX zNJ|(DhIV5Ubh@;xsi14&IbEtJ8&>9YMrW4-XN;g1_UOOC^26mOQI{1}R#CYzV#c&L z=@S|x2tlZ04*(yo4S3QCDCEi$*7U!C@0JR+vzR`zW+u$<`h+5R%=s8nMmxm#=wwT#opjd9rN=Sq$gv=z)! z=D2*``hbrNFFJqV#BDp3f&as$zgk)J14@nn4N{`S0~jZl#md(ca3N2;wHEvuA}|yb z2BvOnTds+COf>S&O~3jU9YHNT?XuG|zuu8P+Df>&XqOnzA+kz<*yIOj;FPm~(8N$fh1|2)B4? zej#H_bXdT*`lQpgiqOr)2wgOS&2GFjZ(&ifOw=Xah%RWU?sEZt_S32Sci%0FeLyK?pp zoioI8F&_XIdbi9cf%h%9vDpk^4PK)+Wn>L5cIEp>AY!55#px7q#Vf|${1Pl4*x(ye z;S{z;g?t$!>DGJ>RVMw3n+rENE*FlRlDhe-2q!ZQ_k-){^&0?i147fI)HB;;J@uTY zvGMK3<$6#KHWUJ9H;qN3NvQ@q>=T*(_g(sUwrUU0sl&7XldsQZY4@41m!12^k*sSB zu-v>=?dF#^Ct*l8NSPC4o4$+%n}zKxD3Rxq*9?gJ ziiAkHG&d5DyS&TS2p-vM{a&@N9mA(yeo-FhRs1I&+PQPaO7muwgp0+lCl{^4_1pje z0Ww;yyG?b}N(Is&nPi*j}+w0vn8O@Dr_` z23-OLmpCZ8cVG%x=CJUCK+t#6le)KM>Sc9=ayr!q47T4tAOcz-a^D$bh1futqhEJG z^+%+5X6LvL6-g<)q$mX+3bT~%_bABX6BR(*+-VTT=flmJ3=<>5homv5rq5XjS{0Zp zRgE?61Tnn&^GiM*wya&2@50iEQV%3RM`NBqVnw$NT;KnSeGV{KF9pgSE2nO>l0)hq z9tv}#B$g}KGvT6(;wQ9FhIaf05vu#sanUvF`VkZiah16z>+N!^uN; zyWMyfj6F*R9%fae0{Qqkn8P9q7?RM=G}|5a2g$0%j6*fgGFgH|RYdBsozK3nwg%(s z`R<5@VrmA2NRUV(p$EIsfQlhOb$t}CDy}7@G6Dbq01BSeKpR>$g@P4R7{)FKFO=_E zgd2l*oH%@zYWRGBUsk`gnEhm-q07z}65I;O75{}}Uff<4F;NgLl4^A~YG)LVRhz#n zHk+$xIv7Q=6?2d^%{`S>4Uxe@MB&My zeCJ~jnz`XEB0z_x%5hQ+8MA8qfukYmYC{h#+U);V|snJOa7usNplT!F$qJUQR6gMdYzY2T~i-42%~`NmYcJ7-pYZ1*c1f<6QT z)#u!mCV?Z+kg|#HDGq0!6XMMPfNqgQH#hAR_?$6+Y1X9ki)28HuM7RO&;9-L5wSgR zXJKA2X`J?q8mVOvje`;i482XD^U9~HtukL>9^hUmc**j;g!*~jzp<_8DXE&usxIFn z4Wn$q!|LJ(wB?*{Q^3K9*NGF!*Go zVzA~9Wn|5N+xY+mBLDy#rq?yn7;Tv_+DomXI1#zO5w|)6Q4?6!X<>Nh3J^vXtEqR36B^ z3lj4x#Fxa8@b{e>{X~s@5;_($qr^o2_Jy(=p5{F78$@DH*aaaBpHwB&=qvKCgp4`QkF z)Fj%mJ%!?&VDd-Tn?6*=Cpf?AsI*G)SaaKC(wcakYq|Zx2}i zZ|tAndIJ2ns5EpVA3bH6NY%&)7P$Lu{V1jcJ(s8c&o;bHe%n{nm8`(a#pEZKzIY?C zi*0lZc_l~ul&t+3@XR#Q_1IXmb^@PV2i@>z@iOcgHY#b4g<8it4)e(uN zj#N+*8AqK=5?A_cH%2RcWsFi%Ee5!j;LHjp#j!flG=9Cgf31G1X0a?m_96Yw8}q3| zu4HRzS$MYYrV9Ufq9c!;VE+Y)w1dXHG`(SD`Y^r0dCp`d9t89N00000Sb-I;TF=Q7K zqA1O$mYK~HUYY+y-g@>~Ynw8DWUiet#q?cp$0>WdKZ`2h@uxenz33N7Z~jAe0X$RG zU1RyASlG(MmB8HLmCrJC0Hv${Hf1moj z4;ME-!&-L6kFcFnh|!!elP3y7f|p!F>_cnGE)0)QGt!Pn;+xAP$~`qK1Am0VliBCC zjZf9Mn2gFu8%FL!?Js6nH2ad(K?d^PmBk8E5R~ElyrX~eJG6iyN&o;go-5j8M*+7E z1L9eH8g!yEuOV)ytlNB;Q_wH=+WVFrS04k1CzTzk$=JbAxbp{6GfBZAj-u%Z>Pd&A zIgQU13oTkNX$trZZRV&cZ;CRvEeyR_(Q#bU^1rw-7namzkcnH9x1|w&o|Ud|p}AY9 zQMG}2*Z6yN{+uTU7t`UUJhNVE?rtYJnfafq$^J|3eggee1B^yI6TdyKH(K`8<&-2J zIx+`3iOo$ujGgl|yZYfwn7c37H9>B4MNSN^hNoK9=GPXVtG8RA(X;flItNjFp`o{9 zAb)4prRnP$51ziM#NXc^R$i*$9}?!4N40x(c{@CMutH@TMT7e( zZoWG{p(d0|TxC(n=4u$aK)*UM^~XebcU*Ibvb)Lt;Sz(sXP|~FerVQ_~@W5Cf2cQQ`P1I87 z!h!LiIXSsppdt>a=L><|qN?J|&QG)My4ZjF$<9Exxa3>i1}5QKvumiosYHhR9BMzyJV-S4~4N z7@K4Pwa(YqZW79~Y$B_&M7Ey)4ZcxWzta(u4`AqB^`zXomShrIfyt_M!KTd)`CXNc zvFlzVrbkrFwt3?+ij{hAE)j%0V1K&Q3j>3c42Yy90Iad=v@^s4dsKiBbxn^+JwUZ- z8K5&$Qp}RYt>T}z6?m$(885;&e3fpZJhUtjx3?u7gX40uBds)mea~IssGeiX?$Mw^ z-!|RxXcC>!pZjhhocw7DfWAM45?7|gjO7#jbEg>TQ$gUNS&c@67}PPKV`P0~vt@RE zhd>Ro|E=D`uIXM8uW}g>D=X*HcZS1CV@J?vSzfJJ#toi`Q-@fm6|H&fD`!21Y%3#+ zbht$tbCm-4b48c3_IFg_@B{QaM?DCoejolczZ?u;*T9c#XpX;@^pg2=bp6M9ML@tI z1kZ4PNeO<^p}uM^=XF3b@2_rMUb$GJR&~^Fbe+1WN8!Aqe8H1#+Q0{2syk7WOf!$@ z6t(Zm;CgtSOI=X)NDPI^RSuYhR&-q51RVKk^iIY9;q@;6s)LM{N_^y3qAHBx>zqLfYVWM1fZLUr7^S9pq1~_d<~QiyfJg822L*U5 zNMd^2$JJ1jM-dXC+?5o-01w9u2tAMdVgO@q!*VO;?)aH|OMK?q$|)(&gN1oAX6{JL zrZ*&$>i_xCrc-X>OQg^xwo-p_a^h#evf<=;wYLh$kSUADh!$NvDG}B? zqdM~K9PYsX23k!*1Dm;_b!Q^MV;w91Xxqe7)^<}#)ZACy^BCzDU017zWKhH1HSn$K zMnpVXcJe-Z5^4c{krUs%kg`K^FLP(dF^m`c<_+=?XFR0kUa!K6fcdky2`V`^f2l2D z+OlhN*w$>#BKt%Ma1iiRNrf_bx7RK)B zJ_z4m=jX^|jx-YV1csNXIrCDu@n_4mYIQC8>e{crfmviIN)?aD5P%qSw8nY`|EL_2 zR?E86~}o(6jh$2&gI1w6-xCF&i??5%gc_um=+?IpKP|}_?)db@EiA=p5mv(0Uk#} z8{S^8N39hEAo5>zs{$%isOWRkA>?ivr$_0yAwAwgz~}kSiG-q%DY#9E+HZ!_e;aRA zF(rb$#*c6k??buB!EuU2;*hMd&OfS_IwRKn&WiM&Ti(sY*dZ}f3k8RDRYWvrhkx-U z3kbUEuR(ZccXvhJ{3ZIaZGV$2wnn;NsCYDGO@eh~Rh3l&M6&*;Da2<4l)~rs{0C{& z2qP9Txvfy%a11(0kcXkB1YAc0`7V*5ct$&0PxgRbMq-{Bq;i*p4ONnI$c;k|dIW&AxZe!9*XV{x>)d&`@YIs9se7GpE`+Gm%p&#(YWBcEgmuafyv ziL~Q5CWStY1lp^@XKJuWWK{O5p|StX`>sZ(z&995z~F?__GF5#4Nr=_Fg|Ui6*qeG+8ROdPG{ST ztoiO56;OWD3DihAiwTWEfR{HAJ-EzdbDUakr=x#lwd#fdIIHhbSHCNB(n|zstuyTU zxpjns46uvl7By?2O{vJ5SJMJ0=0P@X?J2GIj$*9jol~xB897M zMmMcb{o^uqe83gu`3mj7ZecS}Ss{*?%~leD2L?uBXojlmKOwmdjI5Df+>ywEUu+!X zpPGm(>w@e#pmOnlYHjv)2zxpJEBnkrcY_3u9L#7EV|PqWkaxZl&PBPQz+X6qCscOO z0>+m*r=oTRSf9KYX+Vh|Z|>kv_F-aboS;IpdVa)LBD(%M-`2j9m&xLe+(R!vKK6#r zt7gB*m8UH!WTQKN|3$A>&NT+NO%*4jT|4t<4Rhbe}oY{yOB^dpJ7 z%EyZ7QVi@#K=e8(TNsm_#t-OdUTIXB25oFPXyxF9dt~oGm%b;vbD+PtB4{c7HolZx z>Yb#>t0|b!0=pdFz7`kNE!h6F7$)BJ6NBBDadXzyKA+?A%ExS>3MSAS)bH2#u+*`b%N>fyID#>cCuZfUW@`aUaXi(YIX z^SM9{m;d7tng67wOfNmPM0Z~R2&>KMIU3D{FbHGbH=m#+t`Q`=LjJ#VB=FloH&gkh z=5->W4HInyWMBX!dHQ4# z6kp=|_JpaxiWMW$YGCL3-cR%(aJ-Ktxie!>SZ-?L&(^d|BS%3-qf*-qa)QzWVd7Bn}R}0Uo1sZQ{8#^d9^PB|KAUCS3^ArZiI(_@r-i6&75^8ghb~fdx zTm1|wo|W|SHl`$0xMuw9NILKYBbU%FefQIywm~qzbd(;l;6oeM)pBov_KSJ9oomk} zs(OdXeuszehacPhqgrlr$?(#+Nv#obFT%|8p}s{oFjw*%gW|>HbHsv%yCcWRd=Q;t z2!jj@zGbLPC@?Hlp3Mv3XG>FK&N#gUaklGFz>P1A90+>R(Q4vhBQ1>`+*p>w7$6Mk zRH`&wKt?;hvD>z%-MkWP!ed{47G$fkak8+e$p~z10jL45Mg(n4qacx;0VWFHKFbXS zSSd=TtCTbsRl~3dpom8oS*mIoE~K>&_s_`+_=K#X)lGQorG z{5h~60u`WHU$p$~^G#b+C?=z-3s#Z}na$*C9OiW+G~w5w>r#y~Z@jv1|}UC}4tV#FL<4qBf9E<#=<0QkV?>5i;XH=tDij`{q##IniXb z>zBNK{ohdeB^Qbi?A$LQLw1Z(X%a_18JuQ|H!=GU2g|t*pb&)|9}t{TF?}Ljxwtn; zqXx1Y>&qP-?ygtn=U0U#AT`ZsiCRqrw^T;2Hg!FiXEEZ$>uhh`szor6m-|&glhA?= zWEOiwuL*nxMu%Y5Vessk`#d$jGBqSSP~`A7pB}k1-_m1m$3BuMs5>&R-ija%u4yu{ z61)Y9I@^M|c(HOUVOyIg0D`VmlcctQ2O4v_VVM}X3X)@HCK&k-Y-l@|uy*4fLZ+8< z79)29(~^?`dz?VmCIy>n^7KUcfd-@vknd3Q(x8((%SV(0>||J^I{hQW5!E!1y%icz z9?V3~F$5k!hbTXShR%YbpMIDY+zBeue1QP$o3DB|1P(T-nqS2yOX)WWcqp}_7L5M4 zm#J#a_&|qIWn1SQ|HUE3ppyC}f<=J16y*MA=jPli+;Xqhj&S}bWp~Jz^vDMiHlML} zAlARjLJv4-B1RB6B*H3ZytT`7|_tMlPuM#x#XmyPbgEpZIWPA%TV0T)zSmd z4CU(fp)IwI90&RG)s-I(JT*cZ;Q79M?Ixr1yyNC-g8~+(K5TyK)%L%9U2@m!T>A8`sh8J`)IEqUp~$5b)$6mfMB?heuLT#+R8WB zUY#+jcPD*oY_ww+3X;JQ2)5r0O_IXb!Nzm}8W5Q1;YsV40Zo(21c+3gK?Ra%rg1=; z1Gw9+_yB={Oo8E<@#__?Ef`?tnT4$U5X09p3xm|bt03CK_wB|q_SE0JrXHYT?2pw< zLjXMjTUY#f3rIw<$!m*ifJC0n1rE$`nj;hg#_=;|f& z{KhcK1mkfgn<9uP;O-w-lp|qx9fH`X%83AwB^48Zk(6);VQfCVyf9RJnjz5#!bano z*x=@4qnVfUM~zC9PE+Wu>ocbay+WIoqiUNY+~AsIl4!VS2@<2P3_u3se_)=ZC;3KJfzl^JAHWq~Elr&CCjyuYME6jA>&3$>a0qkj7 z{PmG+i%kWStYfaEk_G*~LwOp5q2~F2!V3y>dFRk45QcPRB4w679&J|?0p(|mk==*x zdiSQX&llx0M7cX{G5SJ{kZ<*E;w|*gWOIAA!69~zWv_bek!)dzqEV~2SqKomGM=#k~SqAvItva((!osb=b80R2SQ@9p&{EH~pl zu9crgKw$&>NYsxmM;(>v!oN{uP#-1QMDm$4bvs03mRC0aUmP2eG5gM38u20Cw*bpu zFUp4>UFG)TENms1J-U*)X5xWgbN6h)gU!r>G{NlRH!V4xS~F&3+R zM{=J%ym^2+RdwLYhO@g3u|8D?Mb7PfC+2Evs#%{fm`0>U!{vXrt`uZ4Vky$#5{y~W z5iXb&>(>tV0SnfB&-EAL^TxEbd<$efKQt+cAQct|FgewjhdDAQUHU}NddtzR7@zZ9V;Vngg>OVz`?+@y3qPSMIK zCg(wEIzxvjQ;9k@o1055)6qld>^ahMy&ih9iT2KvI3rWn?HDk0G1WD_wUj^_gWf3Fgd;DeXCGLo_^S=)vcU=@|cs(N~I`w!rO!91X7PU=&Dna7@ zt7<8|EIM%W&@OT#K?b*h774T6%qH>UgE8((Jfk140?$Q@_IA3*P@&ls4k65F z3<_^cg*D|Hf~iUB&O>8tz5&KQIl=U~H|z;eF6a$3GdpVCwl1Ae$S^#{Wk!ZcAm_;z zF`HgIW}t7Tmy-5SXbgFCwGUnTDoxG$Z%?38x$W@A8K1n zV^joKzpSSP_HlUsbIdP;IR-=vbDh33gI&XPiWo*|f%VLgCpr)SyMVstjr{V~`}klN zv|18oGlT-L?0EVAP%Ap{5vz%OMR%a16)y5HrboKQi=;U08TH1{M`AA(h&;&$1M}M3 z1=|W8okAG5#=p3}bpjzD@aeI|uW|mixy2pXwBk1ipD3^j-{@@dDJ0@+*vXD^Gx?E# zcq;b$J$zQr5S%fxp`kr!YT8CULNBu4N?z9EoL|qYTNzyW#4%Fb)3`fBRN9g(WSTXz z>UdjRAtyqL8=2S3fQ>qog@`-HclW=n<<;Q%!lU4lwZegX~n; zA&TZ+e3{4eq}V#nQd7XuKjKSw3ENsDK9nox1KTJQ`;(kgjqO&%ekAN1a*_yGUE~(0 z)JD0wj;2G_L17Svedn84DKxKR60dd(bW`^EsV7~-3jq#Gl!eEyQE#E&$!zuu49mj? zJ&czXV$)CKE7&c^!4<`_)y;nw8c;90IcSgmgXQ&9fih#IODjZX8F&57oqKb)Rugiv zu?ch8BCy@_J1nw!?r0Q)uEm+TNZiFb;)|@xt&Pu1XmSi^m-a?U zL+25jVY;QG+;Zg)m})_>Godg>og)xOY{kFJ-&N4J@xd5!4zr% z+ukqKzATUXCh@a_N80UoQR7P%U{c*=wL`)FTRh+;_jj?~#`6h3l8JwhW^*ahxq`Ex zyWVuSJn`glY%3vA(c(WxG~fo>Q`}CQA}|or0hbyHs5tKU4@iU;RhcM&B`Z4{xFs

z=3s|R%8U-&=dcg_ky?f4Emx>n`Yzx2BHQtJQyfE^l??hSYkMbszI z`jwygG{e28q;xIqW>Qw&!gld`ZN1yo`UHko;Di6u5lps`IdSZ2)99FZeKHK6=~1u1$L zT%jc()u|NDZ)NYI!jjRELL%>}Y05TGfJ6%D3~I0)mR%1xwDIN^ulIi?t=6xC9(y3J z7}5wDjE2bHK6GF=jl{h8u#s^3g52saqP}beBk-5mj@lIMbbVD|&iqEw#C63ARLEA5 zI(AVvDRF8{FdHfR9drt7UzBAJq?Hh$0#>L1iLPIaAK-ZA)|>|I#@16z+lEp_l(%O@ z4qU81WjgItx>8sjcr(B@NqT*qc7VS~^ueaaz9EAspS4KCB3^ROe zm)4DeV&A?5M>VtO`$?IWhXniwvQ#JnnhZgVvjGRQ-p z@<<28Q4WrMc>$zVq8{;6QuKtHrdRU9&~YR#`eO zfXH5i=AmZec09IZ9d%AsIPOen7G&M7^6Xw-Cln^hW3+KK`PUx+G$sK&Ho4-vj3#I4 z?|3tlUG@!qCQ{KN+5suubZrE9AL%s!1sI-;j9Fca<u>cnyTBB%pD4E66K7iA2qyCTt}#Ir``I9|cuQ-*J*~z|`U{8;8O1fX`S>n0hgo zO6f9U#WgY~+v}S@FO*f0B>3Zq=s*sF z16gYBb)CVY&}>OmG=1{$U;6L_ii;@u$uzc^~L_HAW1Y0sgJu`^9J^_aF!r!toYvH~Vo+dm6hcP;oV zHiw~V*gx)f7f>pnZP`0^LU?s0pnlA2CPgs%Q6_{)rVXSd3(WZ3VBX)f^l}jPhQJQL zT()fdRLb_zF7FbN_29W&r21%fr#p;|qz)p?xLTig-_BLvdTYm@24_yI<)x1yJ&k-Z z;jb14rLYUW-w4Mj-ztsGE#3}ChHGYZESThn9b(4tBbn+wo8s{vL%=daa-XtO7fLwl zeYugwt*n>uZ{(AY3@dj%vVb4ARgBy?1Yw=v70_djbZDsuZ);Vxf9xL95;YwpL4W2R zbF#_bK>QT%F!zHKplHY+t~ss5^~tI9DdD~2)^8xT3tY3=x5|4gP!8-m_1#|_jxRc+ z$MzH|w%`noMh(aNcY`{(4R<=RVDnJTt8dAgw2egsMic>vZ^7m*(sd3G1n>eXCDNhp z9>W^BH2HzQd%)>kc;@jTAJGI0f^dqtm_d-cZkAYHAq$vdG}=;#w2Sgl%7S3TD@Ud{ zIH-VULjwfz8_`JOOIAckP^Qb-6-ygrpA z+_(@lk%UZP>l7TElX6baqz*baLhQVC`D6p_haweCcT#!|W4Pj;&^a(};PxOI!J^hf zpCex?bJf4Ddjd7PNsFRGN+$+@?WL{GFApN6nh}_Z?jm2VNPGHIw-9DF;a$;IXV&~I zN-;uKmq)C!1!kh{K3rmT?5CE`r4OlV=5$<(n4y)p+dnGfvn`n@9Sy8VZc? zA5v=V@ys0Q81eu_%Ez)@h0j_q{gp;&Qdb?mW8}{MlyTD!gNuzP)FpZ?nGr;rpCZXPG_)aqV z4Pj@G|8W^JMN=ShFr~6hIE`B)bT}OeSLqs%t67Vp;hlOBOJhbe?oZ)2pUQ;)90bDQHvz>H zim>2Z#;14Q-MuqM#_Vql2@4Aor%C`-9%;yA0N~K;hSDwWNS0HO6;VTD=_GFY0)vXJ z^6nB0W_zg0eg~#@a?b(p#MP12+U9=WkHDou7J#OPc)mm}6r(K~8F>Ti=t_msXwDbfco3{IOYEA8 zS`M13y$!;o+u{atkM0s<9x*9z`!POJt>o%*9Q*)GbQOtZct#=i=jlpJlHvPBW5PDP z-O{if)^da_wqQoqV&1w&dRdyVcae};nV_g9+S2Q8GPb|037qN*V(ewY9v6a2Smb`w zQ<|g2B-g>2zRB7eM12o!Ebau!+3RyWr4oOr;8Wni87rXaEsIiLZMqnC1LFGk+zJ33(E$#NagBv8+BVQ3_}ycAF_KMwEEsa- z{IGFEbTnQ%S#U3f=+%z<_HVd;rkH$(+kXb7H*xC-F&n@;?v-fcsz2m;KJ>lT0}*|T zCZm`-wa78|C&7RX=A15l93oI=A}n&#ds>{Zu5Q5+P7*X76@{tVCA|Z88UaA6{p10o z<^OXgqz&?k)Z<7E<0tPFgouf(Fzn5_sMY_QfI)?!I?L{y9j@dTRI%RbOrD|vxpM~r ze$A!7q#5zqFDzu{%>@(t7$;8aF?d3mU_PQRE8NgsxcOq#j9sY2xefQ=Lc@b@Rz@n} zT~;Nwj*aWi9qNV1wpu(iB)Jj)Kw=L;puI$y*!O(+1;$Wgi|B9s0w882zJ_3vGA|k> z8BYhU(`gs^m<^RB??5JtfCn|RuPg`72j=IF-t{!C&M${{*Bck|zs1-f-b2Ke?o>i9 zowMOb&4N2rR9l*JLKnl%3bE52@S>G2izYb^OP`7r*_YPf+iD%-=M+;|ey+*`%4VOQ zGTfhL2JpM^0peC}BHD6KuPrF94F7YXefy912x(9@bojU zauzUnR!%`QNkiGVO-@|VO<~h!b7EC3Jiew=Gki-(TDjxZ*ED8L`nRx6clt>%`Ezse z30*AqgO8XS{1gTBdFdJOS`(f7%f0a&>AflnohWwlRWZi0?jXB+RQ6}m8Uy)VhHHz$ z$M=42jla&;>%Le?e@3#8;rL$cm6B#!nWTw&!|)aJb?DZr=}`W`8SKwFrC*1M4<{uH z18iO8wKBDkBYf^$bIUoq3o3`YJ;(!6On1~c7KBEx98_ufl??)rn5f1Q+RGincM+(l zHfWI#T?(d%fO0bc14j57X=XGB0f+~QrZ!TrRrH(YS=MKSz#mB9x(GVlP3nV>6|Mre zG|Z%&Y3eTPa35=PC@+Urlx0j9Q9U}8>i$Y1qWHco7dha8J#8BaTCb^H?q@hJCaMju zkEK?S9WNikV>7YUPKs0%qQ{Z=*On$V7E*Aq+SKpXEAdBpo&2 z$9RfT2{YY#8Bjo+$`lRk0N`aBOYZ^PR>hBIphLMf=naW(-C3#SUjV!+`p&vGhrFRD-tq1MEtNs4qBfBUX zm9TtsQ zys0(14C76jYfK|>iT{Pyu(a*l7z(mfi&umkFDC9(>flK}*bt#$v9${my0L7~d*T_4 zhp!8pwOA7CQ$_96c%I(Eh_He1Li-UH>)jiKh&IZ*hSa7Y8?35Qc0 z>K$|p^1FY1%WrwY@#Mo3-l$`B_ex)T&~dZQhQaej{{m2=yCN zBj6HM$yV9nuOI@jW&4G9nZK8#J578M1rB}%`*|n9;Dg%KJfbV~iV3{iCqVMS)cGUy zjdUT>X)LrrD#Q0R%Lqmb;JY-JCK%t(l7DZbspMY-?QbSjVcN8>y9!HR2a zQp;!{G9aokajCLa=w*JB#UWhV`|Fb-9L#sGCEV`zltH{+!!3bbn0EdA+9CUi74kXj zX-R$@Y^HP?jw6&>qS^nXR~2R)=jb#W@8vF?z;F?$*B%J7t00Q+M=RuBH_N~a)>u{3 zrl#=}E%DKaKiN6AiWRzlTN&l8^)F@c5n!y+muqm6=sJHu|@gL zsFI^2gPL3u>hj2m#Zr&QDCp0cJjhtxceN`hm^}VNe5eSI$y9G2P6`r0IBLIh<96YH zU%h2beq(UQgE=085kOX!rkz7|->ftQS{{?)7#pJguA%&(Q4C1^+%{aGrvv^R?8V5g zGVv$jc0>UgJGC7{=Vie0@%!ltWi6gEeCQ;{jmUxP zvPBd>_=YPPP_Pm~z}$=w0n_s|K?C7%+klQ-e)bNTjp*+{>sjox40S6bS@Il2 zw^5U{H}uFVk8y^f#>Oy>g>g`s$$Ar>s;tp9JzZ9=eC@B@&TH#*6wG_w#hD{$j?fS1 zxypA#0~&6J=w)IL9C&&%Y_}M{o!GgRxO=h51CL`oKhn}c2w`P*vikiREXx?hIq7By z2sUh3s1;IZo^1ty4H<8A-qfhpw0uH~K=bt?1Jl})s%&*%jEz)bzZrR9Qq}=XmG)JD zVQP-7f3ncgyIxRzAt+6VdC8uvdHAHPT!OyAJBI|+uh;V%DG!Vd++FLNJ?J!ZNMt;D z#XtoAwtc4g#ojB&e?sV0+G^VS5%&;pEBftf1_dofPSIro zfc%W!lNu_|N+~}G9AKVfMk_{u`d{*`t& zfX3yLy7Ft~#!u{k#i7i}`v<`I%i731#SbE5kU=_x@cKy9rz<$XUpE>{M#aqD_Uqh_ zX>*C`5zB+>6as`B(X5NuN54HR3&x^&97eP-RCgv`NcDz-%k3kvQKi(74=-JJXZYSrbZQv=*oIx+b^4`M;hB?vLPsf5F^ua62Q-lqcM2tI3IP35MUEQHT( z<(w1+`G9;wrElGJ7+b>Tz6;`6uDx)K-%ZACnb5(`#5@QiSbREV+#am=)`jf8fc7`{{OfB--+?XEa3Mb z!$^_5eMcP4x=t9s%~C>OtcY-es8sa)VD;*hRv z-YKE@0&IctM%6~rUH5rGg!z*rcSMK_>l2mK2PiNsu_SnP(X*NoxCV)V>2^Wna|6|l znS2Q^L1N(j?<-o+W4>{jVjKcFj}A%K-ghZE#Ogd5$zNWG6xFynQM}3zxp;sXwHd_M z&Ie1XuQxp25RS3I%RX4dv3Yn#&>0#82t_kjPs*_txJ~D%Ynj^JGh~zK$(zK@F}t*= z5dH>N;&2mmr13<9)ldT`{Y;MT<=a~rwN^vs%-_@=roT2{s>!|K#OFq{m#p=9Y-;&D zD?Af7wCI#lmL+fvZ4gQ@0T%@WE7A1Z{D;z4O%gX%h3c9g88a9WtLtL|l7DZELy3~+ zK)|OjwZmI+ZOQ!O@N;|?7^G)-oYqv(d;iXzDf20$n3ElWJT0Jme#d|tnT8bA^-0aQ zN|Q@>#_cy(a-ARo=0ER%&of3RefQsAJjW_F^*0y-k<&pV09wqh_mT2**?76LkADc> z{MnDqS9&16X29}Lt8@7N?^t-k?A_v&LbsT2)qPWZFn(ag`db5sg}({_M+Qs9kOVr| z_(bX{3p{+QF~}f#(PLszduQ_jH3kxmysPscx{|<+yY2|6|IDFmqc7>9;b&qL@o_As z58+;)?Qiuio*M|xy#qE-#`%;}v~ho~)w;Gz$LgHE+b>ut(oAk41zR6c{AVuT8nL12(4Kj9Yg25C9`Y zFzPGw6t8=^vAkIMS{Drxy%sQ4?1ojLkw21VONtRZvD#}PMo>Ffy%9s%?)pK4BNN4< zz$vPa4KAlFNpVB284j3g)WshEdYDD1zR{v28fy7P!NCMeRi;lM1BB87&&D!BuOaF8 z8^r)gS**F(SdA}WyQg_@@!2T|OLv5^K0yeF8VNOrMC93Qkk#RK59~YW2u4DZ|$N>4g76)Z@$4(6cWA$+dHJfJ6ONI90+NcZ>zA6oZ;MQY2m(@AWSd0HZgMJ{j?hD%rL7 z_54Bb%P3XDZYwo#CBIColSF`Y^=26Xu%hnCn?~5v^W_u4Fr5MSYqf(Y;~SwHe;;!X zQ!sA{ksqL~aWsnMKOZiR=Jr{H!Q;#98YrS1t@*l$0Wpp$K$NNvvLe*%gu?>+RfzGt z^lriib)y<-FJv7%_y2mb-?>I%Vuq5+t_$SGjx&wIwvQ!zDY({htCNu}cp0}KLoPNj z9!b?$0?I%HQiy|mI*$M^VoxrdI9aN7QBvg3aU#A)J#z1>wbY3U1eSE@L!7A7k^k={ za0M0YS+ED6$ymYADw@^#a@xM=?#p^i!c;W{t&g2$$nZ2-qHxsn74_BtY| zN8yL&A)GpUHn3!H+>!qq!+8N_JpAL0@r~yYH?r3j4FlCfLhI|>B|@K?;KFi(0r<{Jv}4| z)NJ?Z$rNY!Q&eivs4@JGDqCnRi`Y%;%d1*zd|^1LYbSk2XfQV^7qE~1TLK49W1Mn& zKg{E---VN(2l!{RR&Du*f=4D0z5rU9IvYmo>fGNky6H^8lG1W*@$%K+pp(7DB||)` zr1pox`-SZW|K^iG{Yg6h_k}4fWdx#&#&aJ((a~4ODGUkC0Tb=F2)4)vyYD+Fb}EG4 z7}-J8K=vuUbSFHm_s*Bk@z*@l))9s(RXUCu{kCc|#5Ca4@xq?aVehI1Qy;?)%0zHYB;oLb%YQE_=>P50QivRx= zhyTSUfB%W0gHa+iDbB|kkGKUFsB62TyACOHGt8P1a5%C_lwOVs> zMj59(I%Bjcw?tDNCgr|1M^C4XR&vtxDng)^u!TME_opJ;SYARGNA*5LvOfSed0B=2V3g)>NnTMdWe!tcZaZtZco8n^o7G{;4y4lWM3X4uBHPz%5T%UDY8H zexH^OD8H$96$aK|eZ6;1aBx3+vC}!yF|U-)8Q3s9iOp(1Ao<*ntUr~@gkF!@mf)nNDf(nq1EGg;c{4YsDVj(D+h zVq%i1s($yxHk#`Lt8p1avDOMkIbCpLS7X|HDJt1FJa$aV$sGDmcq&ugE9{><&iR*| zAA-V)MsPK^RDkYslN@zzoJUel;Y8S+)4Bl~)V6w$?Y%_F2`cZ5Q-QrN&REBwX^=E5 zd@@8%t{pP5YJY}ha*#NLfZSMopNeIEu2tM6Ak&r)x+W(I){1Mufd99w2JyWtK~jzd7D=%wn;>639s?=pEarZE`1hpQbU`XW?H zB4(d~vK+zjDus^Q3xQ7YpNn8f5+`BFc6yYlftxU9*AeQX#0Ls~3w>;qhgN~>*#;9T z#csIC2U9|$y1B~-ZC0W~VccY3ZK?1`|M6U8kiq&9%0M9gtsQoLg8DN-AeulZ9?C3u)IYW!nIvdW79t3j#2 zs2%>&b5Ra@=;I)Fan2)QT(H?`Ox)(Voz(|eLjVCj1))INq>rc=l0Cp**8fJq4%SjX zW~3(-OhAmd*bksVXq3t#sM)8M8uLD~{AGs?67HhD)s0eHd<|`ENskojq{;pd%Bs-h z&0>-|bZ_#Fgu>;{QkHwfzp@AOxu~T%&n=X&xh|!2;utxpC~@Q%9CzF!JR5rYkTN(D zzlqiA;0pL;7=lNvzmjX?p#Yb9tpM$gOyaa0+wXX$%?_aWt*2#0m6NZ8ZpZFNac1OE zr=+r|9cj#Xn@3^5p^1U@^kxLqwbkQvm3?{hZ|b)?`iFFZzP}9=;heFtD`K$xAvQ7< zB-IpfM@WfWZxowX3A{i9Omr)QAk5RyfC709%2onM*#wv-oyLK%wT25Faft_f%i$03 zd2nV9noCN=#hbIOM$16UdqdstmG7G~j<9f6*^~UT!u~)oe!(QCV|yz#6QUE!Zf9^C zA5rel2)8Eb{>si%l|qWkZp zV`ceTsg4PjFO%3y;31RPEx>v`pX+Lj-L7YSp^I^HE6r3NJCJ&R-;^gmZ#a+Woo6r= zp5yO4A*dl}ZHvS@^H~}Eq9vWrq$~Q5$o`;#!WSK?aTv8%zQ!e{M?>_*Sdk^V%cG^S zz{7J2h!8;QVewaj`0gV|k5RkVeu;Mpd`^NODal}ml|GluVZw3!-Y;7Q?a<4T~G1S{mU4OPEr!G>ky|1 zv8y4?5_3PKZ5Vus?*#SC=q~k2C%VnRAE*{Qxx=!0#9cI#!C!SQIf1>wII(F(LSmVf zSy}2FI+;-4c*ABANMoLVo9Od4iuoO7kZ+JLy2_P5np$uhewlNir~B{sa8k`iW83|* znOI<@^oGy=hF5hiE|aD71rDVPk-mT0giEl=Be4>c8AO?ajF>?}(N)%lBUEyRWt93Y zPO$J0ds>H!yfyQY{MQcS8Ssj>QBh$jHZKWzT$&Mz*gFRysjj#UvX1QsJ8p&Ue;Jl+ zCfnpeF4zl!hDjr^u7Saf>?+rxgMRQ|R-=FProRcPCkYoz)HTO(#f5QjCx71QcijF{ z&OwZ5_A(jZJ zoKn=9%9Qb-(SRpD^NzPe1(zp>tbh%CckelR(Xg=<|IY82-j24i#MQftHvJs}jA8-bzd|~lN^Bp6tNBX?C1BoyQGCx&^Q74* zoY$IL%(&cK)m}}I(gAB4tJt0M8k_N!lni{BXRZgOG$TO&ScFr(Hi7umMq#u4_|^V7XmKLa5tI-g z@aVY}6%P+nCHCYdR`}iPgwYbj5!NUP>K&Qo;#FaUdf@1p~zUB1rzEP3+ZJ zt%T`zncHZ|x_kfm&ict_kPkm)La#ktL{g)*-EJ<}kxR4m6I;<`KrFU4SvsXkXFbxF zGq@K6rmr+;zN5`$4eoJ)Q{LMImLhPplpSt9f!& z2Es=2zjjzEsfNT?PNH5pyq{rh`_DU;q!JX2$2I6lCQ8}nnfrXH>8YxS(F02a4DG(d;J{^JFbXR*rs(9$_>Lwik-KF3vWnG<%% zZh~guCp|S5Vmwmpp7*1Fqh2w3ri>s2RZ5^~`bw&6H3EYmHs(A)jSH^cz%$=p%yn+h zzpeUkq=JJ@W>|OK%8F)VTmhAiXJ)z8YF%o&X)dMsJF4SA@jCCYcD=)PD=#T{4(bn1UIKdnSM7|Tbjt>s3Lh9;WP*HOVT!cl> z(fc;$97DQJ>7xGjlcUUkNtkpW91&tTF*y$;vRry~MMt^|sdRyPv5qT$Me!u~1Nbt& zh8RYWw5|u0a1xHttg1{IE%0X>Phh)5@$bnoiVwr@xzaXe77yMoz&E0Hq!CQ45Vch*HBQaHfGEHlK<)SYtD3S{B-6|?baK^ zXTi+}1F#TEq!7;aHPC)sL|9|c?UZ^8CA9fpb;}WC#)fXomO)30+Xp~~QoiBlWB@R!*FUi{P zvKu;Jr4rwi5dg0J>zrF`f|NobJ{&5f~hXsQx@!gVYH@{S}4KRI4GZ5*}puy`^kSeAnkrdB!b%F%GKY zX}cWBWW{DVL4_H{&aj4q_6$+{#FF`(#zP)kZ6_kA_ItGdu`iRNy@fSiIWWsbh91dB zoy0TQg0A8ayo#Zvn?aX9u@o?Ay;AvSOgt+Tm(g&^dV|XQGz#J8G$_eTW{Q+DhMulF=XWH%II?IAqx^^4&4V z%x~xKRa<8;k%g9k+p~w?@Xso=dW5r)Hoo2l{CCruHD-JnJXlBcW?n4kwmw z_?u>t*fXMdG2V2uu5G~0*OxoV0T{! z=+O}`a%2B{ZT3QH=t=G*@v{cNgxJYOnmLC3TeeK(cs{hauNWjWjN^peC4>*!_RyXS z#jfU*UeRHuF5ql+okG1$qiKDU{}q_9c&w`c$T+12bBcuMOU*F2wb+=&pHsV`&J*^J z<2UZh%)`Z^5t|&JED|U5d&*N_0f6UV()-sogQgA#A+rr5S4UjVpBSwnlwx~ z+;l}i$cG%4)&CwnlC4uMMA`|Of)4X0afu||bphGN9b?!%FN>~UG~w`ISi>6qoCn-@ zC{9GEj;EDOg?|}Uh}iiko*QJzAcCY*RDzOzA5sy;<3LZ|a8ogt1vwB0Oj-HYZfAPK z20B*snv?J!a?P4?UU8RORT)S;1tXu2;mE`aXyPJ&pcM~EjFEv(*Gp^_mk4htuKV)& zp8z3Ql}WfeD>nfQb)mSA-z884@cQk1$>iaOKB=Fk%p7w>Ja?fJ@n!|L`7)|AFr6yJ zv1U*EpR)X$8ZV<-#;Q$<1t#=>mnUU;IIksjzj3Bq(dguZeI4U(jER=0chkmn3e0O! zQMNW`<02kEKv_DWpGN2&B{ql6X?}+BBz>u!-=Cs%{>os2;kN>E>#Y{|e~hNz86;qZ z5hWF4TJ^rfLqN#;xZ+CvPR^P*L=%^!hg!_1qcT3KECGVDsaDc?O(22cpQlxJB`r6a zf0$Cq4+g3|Le26*=N5Cqm{QgfD6UbVUw9 zsW1Nj{yZ?4GwkzKuh%go+?NugZ(9U-kpQj0nSZ&3h!nYC9>|j%tJhTd0mP<4rga$qkP*m& zdeC7lYe5ny3l6l*FXdn;@B{W=+`JyvTl_5y;t1pKnU*8>3^AbE!kSzVh3p@gDt#fr zGHncaCMty2>Y<5coZ>K*x2aF)bw9{fsQbo3@ehqtK8d=Pes|H`c#=zWa0kaBp~D}` zxmP_N1Tm1LP7l5Y&{@q#dmYM^4nnw;AM%{u_#kSLbe&+;-5y$NUHnWqH4&+b@{IDo zQhzfq@6&6UrYfgc5m@uZx);vU2wor!fqY;ARI!phITtg{>t}ww9-Ysx%5K6!ShPt% zR3)3LUodt9nYPb+`CB;f&HK5m&xjv$>!7E1XhS(j7{zfzspAqp$gTxqM<2)hu6Zu# z1@nm=n!EU27w!RaGAdSM^v=&)xhdXT&}+r$2F64RvgO$id-L_Iz6V?L!KcOAw~j(d zKK+H_!Sucw*G$Dg>Y32k01mApWtsZCoC+!daFZQ2=T>C)mF1>P|3v#D$Pnh3Xs!0& zSjV(*wQisKTeUXZB3nzjVrMN7bXazZ?K^i81Wy~g?9h}q8m;J+nu%;&3YTEM2FnO; z-`|7jT|7!*Z1V$++yvRn$s?zqD1J-*D`|d`v3bDf--%`1`}-qb1t`nJg`iY7&&96I zB@~-2hXyRHq)@p?<;AiW=~p2o3uOBdPR>$fP)K96yg1R72V<9bfBgpl@mlH``gqmx zHKA1^ za`48a;t*T9lH@9FqcJmd@08G87A;<7x4S-w_)9V6m#btt8!N6JyO0IkDf!8gou z;PD0aK1{F$WBNTJySXG&5SdXi!xo%q6LV{{OFABS*Fga(8lbGO%iCyan@tV_X&{|n zNieo|FG%->JOwGnwIZI^>&eUp$>)5Y(MLs_LHOg489d8j%%uE^Tbr?+vJ>wEjHL$% zk%M!ql|gqlTG7){_^^GEI~gg)S74tXG>vV5qUs`ms8sQRx*m2_NE`p{yzKNcU4lv^ z*}fda$V!j44w*{&3D|oFS!tS81yPjbgUIESWB>oaJ>GGXlT6qvo9kYmqOY|xx&HC*@%`%z zc33cXgT7Vdq#P7YS}AHX&&P^Z4ony#W!~sU_DV*?ZesHLrqTw=z{h2zOkdtvZ8hS^ zz1__OvS>|GM8dRiu3x&Z?m$q&m%_R$?J8t3lFdYm+&@u$#=EE9Y(KWyJ=j&XLd;k0 zny~UORQ#COEum~Jn~$OTzMa7YPrG#5&0z|X{8$XuTp4S)+=rG-r>8AS^rmE zmD~eOCY$nyUIVt^Jdt5CnLl7(&V`*lSq?0}ChYSR$}gjAs3%UM<_trIQvns0Do|xk zW44|05UHSdCf1g=ZVu2S3LK5!-!~bLLSAyZF8!E1;%Xf=q6(6;lrd|bT^nBd0P<&%aCr6eNwulv0i?9GTYgDsJUCSAI4B}-VEk5R*HZXBy|A5(HY2*3+t93d z2_ZIJoq>Hc&AW^o*`=y4(l|qWCH%IJCQ<8vxmRh`at8B!P(&oBb%zKbEA8eX`S_eT z)M15KWY_xNFdX(WIPxg8h*2}W#T}n^vDCxGHHd1F`VSjgyVFY54D}YRqFC=yo?TWJ zfEmsv)~Q!cSg;eQoYrqxD~-qrILLU$v zZ)~nz2-fBjv{EjvO_B^v^K*;|4l`E|$rL{aSv``v%8WR8&+ry$+RNvIeDdA4o*2%p zU1)p79@8DfJqySnkwrTOAI$~cu2V<11Y&8k0G)!PImo0}LJorZAkN6`w}PhRw~r;o zJh1EN&Y6sBv4Cq=7-~MjP3qmtI0uV9hB891tQJ_S=kF!elwa(JqKt|G;|&|LD^^kD z{U{_U^Tl+58=(K160t#vsOYEknNfqo2LtEIEhJ2Iln^4Scrs=&fhE2ZxBEi4Gn*;f zgrVU5f1mU2Om-(T%+3Aatuf3OLw=447_J{71Lu1qIE_bH z2otzKto1|l%M{@&M0Mn#0SZHHrj9P@-5WQFy2I^7uz1*7CU>;wpXq$dWop;%3u%~_ zYhG+`8PosaPf4W`ei7gi9b=%(Lv8wm;iDvRGBSnEkl?LA-9F$85kchMQ-Ag z%kNDt7d+{~WeM14I?~W{mdl4wn!Zc$yr8`ks5>F0W6|(lQHkx3sfMGmU5qmOnxACl zYxguajk4>Tg@5BTlIm>Sqm~k}Q9eIdX$bo%P|VU^QQjERs~RDQlk{b<7u;ka{3WhG zFwzy9L0N+)Ro%AU)tS6e!?@4b$cQbb=9SibyZZ@eNL?pq`oV6(t85Us2J$=!r^X7*87}jcnIv=j%Pr%DHvoW_@Zp;3jVOez zYd{==4_I*>IZG};wujd3-RG(-3ugrT6z_=Q2=!#0Y4~047vJgzOuC`AXMc`9JGNdf zAR~F_-*eUe5Dsa+e~rmhPCiC$)_y(&IO49?W|dBmd#cLaBUhpZvS6LE0^050XfU|d;ZgG&m3{e&C)s zd44bA*HE?pzMZLD042bOT)U7W>7bx74PU}KT;Wa&p|V^@vIB0SchRL=*NPh#Ux1J5qj zx#;CV_jK(=|82>MceOfH>N@UAVCi%pO$diOFponQuY= zAD%oC!n1|RgqceheX|Lr&v9XZt91hJlgPQ_5fyAD8F%0w;{OW2 zYQ`i&NPS0ye79mNgm1&Ei}q9n$JzpFaQRPnf#N8#3z*h0yenB7{=K~ b6~t;_wBcJ3AWgga7~Sz~izoKbpAY~5r|m$8 diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..fef2657 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From c66d1686f258da76e18fc601ac9f3487c1de90cd Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Tue, 15 Jul 2025 21:01:59 +0200 Subject: [PATCH 8/8] Add prettier to dev deps --- .editorconfig | 9 +- astro.config.mjs | 218 +++++++++++++++++++++++------------------------ bun.lockb | Bin 193995 -> 194347 bytes package.json | 33 +++---- tsconfig.json | 6 +- 5 files changed, 134 insertions(+), 132 deletions(-) diff --git a/.editorconfig b/.editorconfig index d2c7a97..0dbbe70 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,12 +5,11 @@ charset = utf-8 end_of_line = lf trim_trailing_whitespace = true insert_final_newline = true -indent_style = tab -indent_size = 4 -tab_width = 4 -[*.{yml,yaml,rs}] +[*.{json,jsonc,json5}] indent_style = space +indent_size = 4 -[*.{yml,yaml}] +[*.{yml,yaml,md}] +indent_style = space indent_size = 2 diff --git a/astro.config.mjs b/astro.config.mjs index 6ff6480..d8aa00c 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -4,113 +4,113 @@ import starlight from "@astrojs/starlight"; // https://astro.build/config export default defineConfig({ - integrations: [ - starlight({ - title: "Lune", - logo: { - src: "./src/assets/logo.svg", - replacesTitle: true, - }, - social: [ - { - icon: "github", - label: "GitHub", - href: "https://github.com/lune-org/lune", - }, - ], - sidebar: [ - { - label: "Getting Started", - items: [ - { - label: "Installation", - slug: "getting-started/1-installation", - }, - { - label: "Command-Line Usage", - slug: "getting-started/2-command-line-usage", - }, - { - label: "Editor Setup", - slug: "getting-started/3-editor-setup", - }, - { - label: "Security", - slug: "getting-started/4-security", - }, - ], - }, - { - label: "The Lune Book", - items: [ - { - label: "1 ∙ Hello, Lune!", - slug: "the-book/1-hello-lune", - }, - { - label: "2 ∙ Built-In Libraries", - slug: "the-book/2-built-in-libraries", - }, - { - label: "3 ∙ Standard I/O", - slug: "the-book/3-standard-io", - }, - { - label: "4 ∙ Script Arguments", - slug: "the-book/4-script-arguments", - }, - { - label: "5 ∙ Network Requests", - slug: "the-book/5-network-requests", - }, - { - label: "6 ∙ Files & Directories", - slug: "the-book/6-files-and-directories", - }, - { - label: "7 ∙ Environment Variables", - slug: "the-book/7-environment-variables", - }, - { - label: "8 ∙ Modules", - slug: "the-book/8-modules", - }, - { - label: "9 ∙ The Task Scheduler", - slug: "the-book/9-task-scheduler", - }, - { - label: "10 ∙ Spawning Processes", - slug: "the-book/10-spawning-processes", - }, - ], - }, - { - label: "Roblox", - items: [ - { - label: "Introduction", - slug: "roblox/1-introduction", - }, - { - label: "Example Scripts", - slug: "roblox/2-examples", - }, - { - label: "Remodel Migration", - slug: "roblox/3-remodel-migration", - }, - { - label: "API Status", - slug: "roblox/4-api-status", - }, - ], - }, - { - label: "API Reference", - autogenerate: { directory: "api-reference" }, - }, - ], - }), - ], + integrations: [ + starlight({ + title: "Lune", + logo: { + src: "./src/assets/logo.svg", + replacesTitle: true, + }, + social: [ + { + icon: "github", + label: "GitHub", + href: "https://github.com/lune-org/lune", + }, + ], + sidebar: [ + { + label: "Getting Started", + items: [ + { + label: "Installation", + slug: "getting-started/1-installation", + }, + { + label: "Command-Line Usage", + slug: "getting-started/2-command-line-usage", + }, + { + label: "Editor Setup", + slug: "getting-started/3-editor-setup", + }, + { + label: "Security", + slug: "getting-started/4-security", + }, + ], + }, + { + label: "The Lune Book", + items: [ + { + label: "1 ∙ Hello, Lune!", + slug: "the-book/1-hello-lune", + }, + { + label: "2 ∙ Built-In Libraries", + slug: "the-book/2-built-in-libraries", + }, + { + label: "3 ∙ Standard I/O", + slug: "the-book/3-standard-io", + }, + { + label: "4 ∙ Script Arguments", + slug: "the-book/4-script-arguments", + }, + { + label: "5 ∙ Network Requests", + slug: "the-book/5-network-requests", + }, + { + label: "6 ∙ Files & Directories", + slug: "the-book/6-files-and-directories", + }, + { + label: "7 ∙ Environment Variables", + slug: "the-book/7-environment-variables", + }, + { + label: "8 ∙ Modules", + slug: "the-book/8-modules", + }, + { + label: "9 ∙ The Task Scheduler", + slug: "the-book/9-task-scheduler", + }, + { + label: "10 ∙ Spawning Processes", + slug: "the-book/10-spawning-processes", + }, + ], + }, + { + label: "Roblox", + items: [ + { + label: "Introduction", + slug: "roblox/1-introduction", + }, + { + label: "Example Scripts", + slug: "roblox/2-examples", + }, + { + label: "Remodel Migration", + slug: "roblox/3-remodel-migration", + }, + { + label: "API Status", + slug: "roblox/4-api-status", + }, + ], + }, + { + label: "API Reference", + autogenerate: { directory: "api-reference" }, + }, + ], + }), + ], }); diff --git a/bun.lockb b/bun.lockb index ef1d4b712bf298fc4ef91c8a75259e82134c5314..61c12457caeb08f09995722d9e33b866f9283fe0 100755 GIT binary patch delta 8426 zcmeI2d2m(L9mnr|SxiC_0u+-VAwg_HfFy({g9^e#EtM8%NC2ULOBE0Z1WLh{=nF_? zhDDYOTwA0KTTucQh(n-636xC{O(F!e+G+nNWpiN(3WeCu_q~(OLo*rvsGaG|JCo1- zp7Zl=vyoyNGg%qeZ7O4VNl%Lpf-+}^1G;#RQ{tN|NEdmYo$)i%6Q*QPf${l>QVR$ zw188fBvtLxDv+AfNc z(F|vxYUr1!ZonK=9nVFTqJK3IjVtNM)|So zxu}D$O!=yeq(IexZeUmauT7i^nt8a4^zX|kAK^FLq-rw~yEMx9n^O5(;BSp4nK-Gk z$)+q-Tnegzckj{P-WU+?9Hn4Nm;V<)anGM+vb!!4WrD|x)s#|Q%=05xdT=G3R7Pi;@nuB zmX6WdZLCeHYE}B8`~1%Tkye@L=2UlVzljS}jpdNBOV#>eRHk=~zN-SM3H4g-ahxVV z9h^tCs$MdB%~T9jnXVgqQ>uFv#;6o>8>;qVHAyIk#5u-l} z@h?mk8DEkrU?8e#4KnsXl_}5IrRr#?DF>?R4>NXYEaj(6S*m`C|EdQp{2 zOu!sePw#wGGjLGdnBSs`TZKlU8;t*TR7t9OJ5a?{pt>)WsD3T(L-iNYd+JbzV<6m=AWo4o;G?$PLfpiv#4hN87kKWU5u)uE5?7#XoFD?l@uC=s{ZImT}e{i`vg=U zO*>=%rYcr05!~8X!L5z|Q3!5r{NKyq)+V^M3EbjntqyK&{+nB$;MT^!#nCV6z%30$ zUs=E1OK{5H)RsnZvg^qVZf*Dwf?FFtgn%thaBIWop)HTTNjCoZ?z`aj1M@Z>9ldtsftLGs z*AFh7QkC=3)Uwo>Y1!!)%TJx@=ho!kxA{t9)usHBkY{su*%dX@>?n^D*CDiGeZKwj zoyx^DzD)XQDZ4#)TfUuBF=>XqVuZWoNjp2LUyXkR57oLYs_ow1hOhleW2(RlbWL)ul1fWYUkT{?DW2| zX_wo0(x}sCRn|^U&Hli?!&^#rEv$z>z-yqhgAp(i9)m$J81za=tAkdGyWt+N8Mp^RAPl~b zEfvxr9lAg_$bd}9f^4|J^f;;+>pNy|prY0u-I5TPg|ir*2fato8BY>)fMiI4xzq_q z&!M}hz8fmxO?U%z@^t_XLY13+%ubHnPIfu2P40+e_PD&>6m@TP%%~&EC9o7;f`zaM z7C;qM_Q9WFKOBIAa0rs{>rayB!Rxj6__jRC}#!Ap)&{6hO_qjSd-hS3yQD+ancLIj1LZir3$36vw1rT($Sf{F zJ=8%7%m$t8-3RwWZ_pdOY`6z{!Trz&`a%MJohfqw?e!h4zC}UDzpp|q9e)7FAOrSO zVFyHk&c3d~=kPJigvr-5?kYdB6(pJGwnW`*pN=h;mDavw6C7kaium zLOJw@@8KMPYC+sfrTHFr%t?DdkJ*%Ul&ke>Bg_IFEoxnQ6aG%UJ?K{-k|8~QR?AXq z2Ah$=aqj0f0Rk& delta 8258 zcmeI1dvF!i9mn_FB#?(dLeLl>+)R{5fTZ!kXf@K>2NfzPl1Lep&eRc0s$j7c3XD-UT15p2s;$65*q1q2!jNI&0ue@riOCvE?rf88_r z>}SvK{Lb0k?0ucH&m79yav*C_Y4MPU-_LpK=+q+bei7;4f8ut_sv${f>mU-Zw0l#4LV$lc_&tT z8+iW6rFoH5cK!fa@FA$k>b+MLN=MG1{V-_MBcLMdsK->H#9QN@h(@E%jP5Gn{DVuw z(U({|HJ#RJ&@g8~!)qfuHfm49YEL(3;ZD?ZFn?ZmHac7nRm^EPpSt=N;7f2ZR?0x< zMWPL*7Wj;!6j{4vY;y3;SOa|7;={~e!8+h@^H*^;_3>Cm)(KC*>i-S%M01tn`jzki z0sg$n+L*OFg^jLo8dly6tQ$~+b>KNzMb^vZF{~?Igw<4Q^`%(j{0u8^CDsWwMA*^G zag7BUu?E#zm7G)TUbR_-d6K=+=cp|tXg@_r;;j=pO?=ayaw^wQW z^G-mw;(j}0S@&*=)e~87#~Ie%k)6Ni@jUgCtfhy7>k2l!j-)5XpDpjk(YE~p9XgxA~nvf>-9 zp2*HGc_Pm*e|r>@!rG=y=C4K;wwyroeQiV zdV7iM00*!>aF3c#T7JA0I%V-h)_*jWvr}=m%VMC-#Be-4c4>=$9|nnfEmJ zvUnj@`CrWMqMzqQy3y+@8|`Wvr6Vh42pgUDb=L2Ctba?n)o;SOykS^*x0pv@l{m-V zKey7L%Nl73@mA<|i_1Dth1KJ&{*@M&yHdZ$>atGcUaY){_;OsG!u?i2FFPgFV7;E_ zVO_yutQ)f&EAOXRKe|?0`*T=DR=*~!y!BZ3YZKNN=BrpgmbO{F74zr4qXX+l&R?-Q z?lu2StrS`DeOOn15Uc61Hf9~@xV4`&pD{Z+DK!nf5ob$;F!2IeUd@DOhcqOs)>aj_+-=pk}D&mWJN8m}aBr)(EwJtj?Ozjn z?o;qfXaG&=zXs!A0_ZI>3O3U=1Z&OW8n_m85e`C-3Re>A3;kdK6vH4G3?)zsWpJ3Q zDa0&`PxQ{v@hs>LgkUC(vtTw?q1h^`MZxGccVDq?rB?p*ZMqN^fxcn24EYoIF}zHdSA+N4TwbI%Rjqu^ zhHB7V9|ILo33tL+7zbI<1+qbF^IFJXz)%Ze5%h-vpvA6#a*?M%ud)Z>+wc(dg3CY; znoer9eHAbreW4$G%()(ecKDD!)2e$YE-7pw~0 zZkHR;)1*h>QJ4!qgdf2?I6#+=K+ohtkOF6@cjG;g4LQ&QQs4-ecNC668))U|`=G@) zJ(<1%ZUjAkD}!s{Iz5xSft_*~3V9@G&36T8_47q&f?q)k2i^g#Fc@AVzX>ux%Tw)e z2>u9j;1PHf=7LuIz6g5sHWEg`?NI5y6kA^1%mMV+^bLYtp&Mwe>lCbkbubKai4VtB zSa6YE}gPiO{lt0Swsw ACjbBd diff --git a/package.json b/package.json index 78b14cc..138a2e6 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,20 @@ { - "name": "starlight", - "type": "module", - "version": "0.0.1", - "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro build", - "preview": "astro preview", - "astro": "astro" - }, - "dependencies": { - "@astrojs/starlight": "^0.34.6", - "astro": "^5.6.1", - "sharp": "^0.34.2" - } + "name": "starlight", + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "@astrojs/starlight": "^0.34.6", + "astro": "^5.6.1", + "sharp": "^0.34.2" + }, + "devDependencies": { + "prettier": "^3.6.2" + } } diff --git a/tsconfig.json b/tsconfig.json index a9210e6..8bf91d3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "astro/tsconfigs/strict", - "include": [".astro/types.d.ts", "**/*"], - "exclude": ["dist"] + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] }