@editframe/create 0.6.0-beta.15 → 0.6.0-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -4,6 +4,7 @@ const promises = require("node:fs/promises");
4
4
  const path = require("node:path");
5
5
  const node_url = require("node:url");
6
6
  const prompts = require("prompts");
7
+ const chalk = require("chalk");
7
8
  var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
8
9
  async function main() {
9
10
  const __dirname = path.dirname(node_url.fileURLToPath(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.src || new URL("index.cjs", document.baseURI).href));
@@ -31,5 +32,10 @@ async function main() {
31
32
  console.log(`Using template: ${answers.templateName}`);
32
33
  await promises.cp(templateDir, targetDir, { recursive: true });
33
34
  console.log("Project created successfully.");
35
+ console.log(chalk.green("Next steps:\n"));
36
+ console.log(`cd ${answers.directoryName}`);
37
+ console.log("npm install");
38
+ console.log("npm start");
39
+ console.log("Happy hacking!");
34
40
  }
35
41
  main();
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ import { readdir, cp } from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import prompts from "prompts";
6
+ import chalk from "chalk";
6
7
  async function main() {
7
8
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
9
  const templates = await readdir(path.join(__dirname, "templates"));
@@ -29,5 +30,10 @@ async function main() {
29
30
  console.log(`Using template: ${answers.templateName}`);
30
31
  await cp(templateDir, targetDir, { recursive: true });
31
32
  console.log("Project created successfully.");
33
+ console.log(chalk.green("Next steps:\n"));
34
+ console.log(`cd ${answers.directoryName}`);
35
+ console.log("npm install");
36
+ console.log("npm start");
37
+ console.log("Happy hacking!");
32
38
  }
33
39
  main();
@@ -18,8 +18,60 @@
18
18
  style="
19
19
  animation:
20
20
  fadein 1250ms backwards,
21
- fadeout 50ms calc(var(--ef-duration) - 50ms) forwards,
22
- 250ms slide-out-right calc(var(--ef-duration) - 250ms) forwards;
21
+ fadeout 500ms calc(var(--ef-duration) - 500ms) forwards;
22
+ "
23
+ >
24
+ <ef-audio
25
+ id="nine-spades-poem"
26
+ src="/assets/cards/card-9-spades.mp3"
27
+ ></ef-audio>
28
+ <div
29
+ class="absolute z-10 flex h-full w-full flex-col items-center justify-center"
30
+ >
31
+ <h1
32
+ class="mb-3 inline-block font-serif text-7xl font-extralight underline"
33
+ style="animation: 1s slide-in-left ease-out"
34
+ >
35
+ 9 of Spades
36
+ </h1>
37
+ <ef-image
38
+ class="w-1/4"
39
+ src="/assets/cards/card-9-spades.png"
40
+ style="
41
+ animation-composition: add;
42
+ animation:
43
+ 4s rotate 4s,
44
+ 1s slide-in-left 0.25s ease-out backwards;
45
+ "
46
+ ></ef-image>
47
+ <ef-waveform
48
+ class="h-4 w-1/2 self-center"
49
+ target="#nine-spades-poem"
50
+ ></ef-waveform>
51
+ <ef-captions
52
+ class="h-24 p-2 text-center text-4xl"
53
+ target="#nine-spades-poem"
54
+ ><ef-captions-active-word
55
+ style="
56
+ animation: 0.1s bounce-in ease-out forwards;
57
+ animation-play-state: paused;
58
+ "
59
+ ></ef-captions-active-word
60
+ ></ef-captions>
61
+ </div>
62
+ <ef-image
63
+ class="absolute z-0 h-full opacity-20 blur-md"
64
+ src="/assets/cards/card-9-spades.png"
65
+ style="animation: 1.25s slide-in-left 0.25s ease-out backwards"
66
+ ></ef-image>
67
+ </ef-timegroup>
68
+ <ef-timegroup
69
+ mode="contain"
70
+ class="absolute"
71
+ style="
72
+ animation:
73
+ fadein 1250ms backwards,
74
+ fadeout 500ms calc(var(--ef-duration) - 500ms) forwards;
23
75
  "
24
76
  >
25
77
  <ef-audio id="joker-poem" src="/assets/cards/card-joker.mp3"></ef-audio>
@@ -49,7 +101,12 @@
49
101
  <ef-captions
50
102
  class="h-24 p-2 text-center text-4xl"
51
103
  target="#joker-poem"
52
- ><ef-captions-active-word></ef-captions-active-word
104
+ ><ef-captions-active-word
105
+ style="
106
+ animation: 0.1s bounce-in ease-out forwards;
107
+ animation-play-state: paused;
108
+ "
109
+ ></ef-captions-active-word
53
110
  ></ef-captions>
54
111
  </div>
55
112
  <ef-image
@@ -11,9 +11,9 @@
11
11
  "author": "",
12
12
  "license": "ISC",
13
13
  "dependencies": {
14
- "@editframe/cli": "0.6.0-beta.15",
15
- "@editframe/elements": "0.6.0-beta.15",
16
- "@editframe/vite-plugin": "0.6.0-beta.15",
14
+ "@editframe/cli": "0.6.0-beta.16",
15
+ "@editframe/elements": "0.6.0-beta.16",
16
+ "@editframe/vite-plugin": "0.6.0-beta.16",
17
17
  "tailwindcss": "^3.4.3",
18
18
  "vite": "^5.2.11",
19
19
  "vite-plugin-singlefile": "^2.0.1"
@@ -11,9 +11,9 @@
11
11
  "author": "",
12
12
  "license": "ISC",
13
13
  "dependencies": {
14
- "@editframe/cli": "0.6.0-beta.15",
15
- "@editframe/elements": "0.6.0-beta.15",
16
- "@editframe/vite-plugin": "0.6.0-beta.15",
14
+ "@editframe/cli": "0.6.0-beta.16",
15
+ "@editframe/elements": "0.6.0-beta.16",
16
+ "@editframe/vite-plugin": "0.6.0-beta.16",
17
17
  "tailwindcss": "^3.4.3",
18
18
  "vite": "^5.2.11",
19
19
  "vite-plugin-singlefile": "^2.0.1"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@editframe/create",
3
- "version": "0.6.0-beta.15",
3
+ "version": "0.6.0-beta.16",
4
4
  "description": "",
5
5
  "bin": {
6
6
  "create-editframe": "dist/index.js"
@@ -22,6 +22,7 @@
22
22
  "author": "",
23
23
  "license": "UNLICENSED",
24
24
  "dependencies": {
25
+ "chalk": "^5.3.0",
25
26
  "prompts": "^2.4.2"
26
27
  }
27
28
  }
@@ -1,94 +0,0 @@
1
- // ../../lib/util/execPromise.ts
2
- import { exec } from "node:child_process";
3
- import { promisify } from "node:util";
4
- var execPromise = promisify(exec);
5
-
6
- // vite.config.ts
7
- import path2 from "node:path";
8
-
9
- // ../defineViteBuildConfig.ts
10
- import path from "node:path";
11
- import { defineConfig } from "file:///app/node_modules/vite/dist/node/index.js";
12
- import tsconfigPaths from "file:///app/node_modules/vite-tsconfig-paths/dist/index.mjs";
13
- import rollupTsConfigPaths from "file:///app/node_modules/rollup-plugin-tsconfig-paths/index.mjs";
14
- import dts from "file:///app/node_modules/vite-plugin-dts/dist/index.mjs";
15
- var defineViteBuildConfig = (config) => {
16
- const outDir = config.outDirPrefix ? path.join(config.root, "dist", config.outDirPrefix) : path.join(config.root, "dist");
17
- const extraEntries = config.extraEntries ?? [];
18
- return defineConfig({
19
- esbuild: {
20
- target: "es2022",
21
- platform: "browser",
22
- include: /\.(m?[jt]s|[jt]sx)$/,
23
- exclude: []
24
- },
25
- plugins: [tsconfigPaths(), dts(), ...config.plugins || []],
26
- appType: "custom",
27
- root: config.root,
28
- build: {
29
- ssr: true,
30
- target: "es2022",
31
- rollupOptions: {
32
- treeshake: "recommended",
33
- output: {
34
- inlineDynamicImports: false,
35
- preserveModules: true
36
- },
37
- external: [
38
- "@editframe/assets",
39
- "@editframe/vite-plugin",
40
- "@editframe/elements"
41
- ],
42
- plugins: [rollupTsConfigPaths({})]
43
- },
44
- emptyOutDir: true,
45
- outDir,
46
- lib: {
47
- entry: [...extraEntries, path.join(config.root, "./src/index.ts")],
48
- name: config.name,
49
- fileName: config.name,
50
- formats: ["es", "cjs"]
51
- }
52
- }
53
- });
54
- };
55
-
56
- // vite.config.ts
57
- import { cp } from "node:fs/promises";
58
- var __vite_injected_original_dirname = "/app/packages/create";
59
- var __vite_injected_original_import_meta_url = "file:///app/packages/create/vite.config.ts";
60
- var vite_config_default = defineViteBuildConfig({
61
- root: path2.dirname(new URL(__vite_injected_original_import_meta_url).pathname),
62
- name: "editframe-create",
63
- plugins: [
64
- {
65
- name: "chmod-executables",
66
- async closeBundle() {
67
- const cliExecPath = path2.join(__vite_injected_original_dirname, "dist/index.js");
68
- await execPromise(`chmod +x ${cliExecPath}`);
69
- console.log("chmod +x", cliExecPath);
70
- }
71
- },
72
- {
73
- name: "watch-external",
74
- async buildStart() {
75
- this.addWatchFile(path2.join(__vite_injected_original_dirname, "src/templates"));
76
- }
77
- },
78
- {
79
- name: "copy template",
80
- async closeBundle() {
81
- await cp(
82
- path2.join(__vite_injected_original_dirname, "src/templates"),
83
- path2.join(__vite_injected_original_dirname, "dist/templates"),
84
- { recursive: true }
85
- );
86
- console.log("Copied template into dist");
87
- }
88
- }
89
- ]
90
- });
91
- export {
92
- vite_config_default as default
93
- };
94
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vbGliL3V0aWwvZXhlY1Byb21pc2UudHMiLCAidml0ZS5jb25maWcudHMiLCAiLi4vZGVmaW5lVml0ZUJ1aWxkQ29uZmlnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL2FwcC9saWIvdXRpbFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL2FwcC9saWIvdXRpbC9leGVjUHJvbWlzZS50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vYXBwL2xpYi91dGlsL2V4ZWNQcm9taXNlLnRzXCI7aW1wb3J0IHsgZXhlYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCJub2RlOnV0aWxcIjtcblxuZXhwb3J0IGNvbnN0IGV4ZWNQcm9taXNlID0gcHJvbWlzaWZ5KGV4ZWMpO1xuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvYXBwL3BhY2thZ2VzL2NyZWF0ZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL2FwcC9wYWNrYWdlcy9jcmVhdGUvdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL2FwcC9wYWNrYWdlcy9jcmVhdGUvdml0ZS5jb25maWcudHNcIjtpbXBvcnQgeyBleGVjUHJvbWlzZSB9IGZyb20gXCIuLi8uLi9saWIvdXRpbC9leGVjUHJvbWlzZVwiO1xuXG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7IGRlZmluZVZpdGVCdWlsZENvbmZpZyB9IGZyb20gXCIuLi9kZWZpbmVWaXRlQnVpbGRDb25maWdcIjtcbmltcG9ydCB7IGNwIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lVml0ZUJ1aWxkQ29uZmlnKHtcbiAgcm9vdDogcGF0aC5kaXJuYW1lKG5ldyBVUkwoaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZSksXG4gIG5hbWU6IFwiZWRpdGZyYW1lLWNyZWF0ZVwiLFxuICBwbHVnaW5zOiBbXG4gICAge1xuICAgICAgbmFtZTogXCJjaG1vZC1leGVjdXRhYmxlc1wiLFxuICAgICAgYXN5bmMgY2xvc2VCdW5kbGUoKSB7XG4gICAgICAgIGNvbnN0IGNsaUV4ZWNQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCJkaXN0L2luZGV4LmpzXCIpO1xuICAgICAgICBhd2FpdCBleGVjUHJvbWlzZShgY2htb2QgK3ggJHtjbGlFeGVjUGF0aH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJjaG1vZCAreFwiLCBjbGlFeGVjUGF0aCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJ3YXRjaC1leHRlcm5hbFwiLFxuICAgICAgYXN5bmMgYnVpbGRTdGFydCgpIHtcbiAgICAgICAgdGhpcy5hZGRXYXRjaEZpbGUocGF0aC5qb2luKF9fZGlybmFtZSwgXCJzcmMvdGVtcGxhdGVzXCIpKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcImNvcHkgdGVtcGxhdGVcIixcbiAgICAgIGFzeW5jIGNsb3NlQnVuZGxlKCkge1xuICAgICAgICBhd2FpdCBjcChcbiAgICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcInNyYy90ZW1wbGF0ZXNcIiksXG4gICAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCJkaXN0L3RlbXBsYXRlc1wiKSxcbiAgICAgICAgICB7IHJlY3Vyc2l2ZTogdHJ1ZSB9LFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLmxvZyhcIkNvcGllZCB0ZW1wbGF0ZSBpbnRvIGRpc3RcIik7XG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG59KTtcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL2FwcC9wYWNrYWdlc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL2FwcC9wYWNrYWdlcy9kZWZpbmVWaXRlQnVpbGRDb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL2FwcC9wYWNrYWdlcy9kZWZpbmVWaXRlQnVpbGRDb25maWcudHNcIjtpbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7IGRlZmluZUNvbmZpZywgdHlwZSBVc2VyQ29uZmlnIH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB0c2NvbmZpZ1BhdGhzIGZyb20gXCJ2aXRlLXRzY29uZmlnLXBhdGhzXCI7XG5pbXBvcnQgcm9sbHVwVHNDb25maWdQYXRocyBmcm9tIFwicm9sbHVwLXBsdWdpbi10c2NvbmZpZy1wYXRoc1wiO1xuaW1wb3J0IGR0cyBmcm9tIFwidml0ZS1wbHVnaW4tZHRzXCI7XG5cbmludGVyZmFjZSBWaXRlQnVpbGRDb25maWcge1xuICByb290OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3V0RGlyUHJlZml4Pzogc3RyaW5nO1xuICBwbHVnaW5zPzogVXNlckNvbmZpZ1tcInBsdWdpbnNcIl07XG4gIGV4dHJhRW50cmllcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgZGVmaW5lVml0ZUJ1aWxkQ29uZmlnID0gKGNvbmZpZzogVml0ZUJ1aWxkQ29uZmlnKSA9PiB7XG4gIGNvbnN0IG91dERpciA9IGNvbmZpZy5vdXREaXJQcmVmaXhcbiAgICA/IHBhdGguam9pbihjb25maWcucm9vdCwgXCJkaXN0XCIsIGNvbmZpZy5vdXREaXJQcmVmaXgpXG4gICAgOiBwYXRoLmpvaW4oY29uZmlnLnJvb3QsIFwiZGlzdFwiKTtcblxuICBjb25zdCBleHRyYUVudHJpZXMgPSBjb25maWcuZXh0cmFFbnRyaWVzID8/IFtdO1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKHtcbiAgICBlc2J1aWxkOiB7XG4gICAgICB0YXJnZXQ6IFwiZXMyMDIyXCIsXG4gICAgICBwbGF0Zm9ybTogXCJicm93c2VyXCIsXG4gICAgICBpbmNsdWRlOiAvXFwuKG0/W2p0XXN8W2p0XXN4KSQvLFxuICAgICAgZXhjbHVkZTogW10sXG4gICAgfSxcbiAgICBwbHVnaW5zOiBbdHNjb25maWdQYXRocygpLCBkdHMoKSwgLi4uKGNvbmZpZy5wbHVnaW5zIHx8IFtdKV0sXG4gICAgYXBwVHlwZTogXCJjdXN0b21cIixcbiAgICByb290OiBjb25maWcucm9vdCxcbiAgICBidWlsZDoge1xuICAgICAgc3NyOiB0cnVlLFxuICAgICAgdGFyZ2V0OiBcImVzMjAyMlwiLFxuICAgICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgICB0cmVlc2hha2U6IFwicmVjb21tZW5kZWRcIixcbiAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgaW5saW5lRHluYW1pY0ltcG9ydHM6IGZhbHNlLFxuICAgICAgICAgIHByZXNlcnZlTW9kdWxlczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXh0ZXJuYWw6IFtcbiAgICAgICAgICBcIkBlZGl0ZnJhbWUvYXNzZXRzXCIsXG4gICAgICAgICAgXCJAZWRpdGZyYW1lL3ZpdGUtcGx1Z2luXCIsXG4gICAgICAgICAgXCJAZWRpdGZyYW1lL2VsZW1lbnRzXCIsXG4gICAgICAgIF0sXG4gICAgICAgIHBsdWdpbnM6IFtyb2xsdXBUc0NvbmZpZ1BhdGhzKHt9KV0sXG4gICAgICB9LFxuICAgICAgZW1wdHlPdXREaXI6IHRydWUsXG4gICAgICBvdXREaXI6IG91dERpcixcbiAgICAgIGxpYjoge1xuICAgICAgICBlbnRyeTogWy4uLmV4dHJhRW50cmllcywgcGF0aC5qb2luKGNvbmZpZy5yb290LCBcIi4vc3JjL2luZGV4LnRzXCIpXSxcbiAgICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICAgIGZpbGVOYW1lOiBjb25maWcubmFtZSxcbiAgICAgICAgZm9ybWF0czogW1wiZXNcIiwgXCJjanNcIl0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBeU4sU0FBUyxZQUFZO0FBQzlPLFNBQVMsaUJBQWlCO0FBRW5CLElBQU0sY0FBYyxVQUFVLElBQUk7OztBQ0R6QyxPQUFPQSxXQUFVOzs7QUNGNE4sT0FBTyxVQUFVO0FBRTlQLFNBQVMsb0JBQXFDO0FBQzlDLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8seUJBQXlCO0FBQ2hDLE9BQU8sU0FBUztBQVVULElBQU0sd0JBQXdCLENBQUMsV0FBNEI7QUFDaEUsUUFBTSxTQUFTLE9BQU8sZUFDbEIsS0FBSyxLQUFLLE9BQU8sTUFBTSxRQUFRLE9BQU8sWUFBWSxJQUNsRCxLQUFLLEtBQUssT0FBTyxNQUFNLE1BQU07QUFFakMsUUFBTSxlQUFlLE9BQU8sZ0JBQWdCLENBQUM7QUFDN0MsU0FBTyxhQUFhO0FBQUEsSUFDbEIsU0FBUztBQUFBLE1BQ1AsUUFBUTtBQUFBLE1BQ1IsVUFBVTtBQUFBLE1BQ1YsU0FBUztBQUFBLE1BQ1QsU0FBUyxDQUFDO0FBQUEsSUFDWjtBQUFBLElBQ0EsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsR0FBSSxPQUFPLFdBQVcsQ0FBQyxDQUFFO0FBQUEsSUFDM0QsU0FBUztBQUFBLElBQ1QsTUFBTSxPQUFPO0FBQUEsSUFDYixPQUFPO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixlQUFlO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxRQUFRO0FBQUEsVUFDTixzQkFBc0I7QUFBQSxVQUN0QixpQkFBaUI7QUFBQSxRQUNuQjtBQUFBLFFBQ0EsVUFBVTtBQUFBLFVBQ1I7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFBQ0Y7QUFBQSxRQUNBLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUNuQztBQUFBLE1BQ0EsYUFBYTtBQUFBLE1BQ2I7QUFBQSxNQUNBLEtBQUs7QUFBQSxRQUNILE9BQU8sQ0FBQyxHQUFHLGNBQWMsS0FBSyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUFBLFFBQ2pFLE1BQU0sT0FBTztBQUFBLFFBQ2IsVUFBVSxPQUFPO0FBQUEsUUFDakIsU0FBUyxDQUFDLE1BQU0sS0FBSztBQUFBLE1BQ3ZCO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIOzs7QURwREEsU0FBUyxVQUFVO0FBTG5CLElBQU0sbUNBQW1DO0FBQXVHLElBQU0sMkNBQTJDO0FBT2pNLElBQU8sc0JBQVEsc0JBQXNCO0FBQUEsRUFDbkMsTUFBTUMsTUFBSyxRQUFRLElBQUksSUFBSSx3Q0FBZSxFQUFFLFFBQVE7QUFBQSxFQUNwRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsSUFDUDtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sTUFBTSxjQUFjO0FBQ2xCLGNBQU0sY0FBY0EsTUFBSyxLQUFLLGtDQUFXLGVBQWU7QUFDeEQsY0FBTSxZQUFZLFlBQVksV0FBVyxFQUFFO0FBQzNDLGdCQUFRLElBQUksWUFBWSxXQUFXO0FBQUEsTUFDckM7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sTUFBTSxhQUFhO0FBQ2pCLGFBQUssYUFBYUEsTUFBSyxLQUFLLGtDQUFXLGVBQWUsQ0FBQztBQUFBLE1BQ3pEO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxNQUNFLE1BQU07QUFBQSxNQUNOLE1BQU0sY0FBYztBQUNsQixjQUFNO0FBQUEsVUFDSkEsTUFBSyxLQUFLLGtDQUFXLGVBQWU7QUFBQSxVQUNwQ0EsTUFBSyxLQUFLLGtDQUFXLGdCQUFnQjtBQUFBLFVBQ3JDLEVBQUUsV0FBVyxLQUFLO0FBQUEsUUFDcEI7QUFDQSxnQkFBUSxJQUFJLDJCQUEyQjtBQUFBLE1BQ3pDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDOyIsCiAgIm5hbWVzIjogWyJwYXRoIiwgInBhdGgiXQp9Cg==