@mnaoumov/typescript-dev-toolkit 5.0.0 → 5.1.0

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.
Files changed (72) hide show
  1. package/bundlers/esbuild-impl/svelte-preprocessor/package.json +6 -0
  2. package/dist/lib/cjs/bulk-concurrency.cjs +49 -0
  3. package/dist/lib/cjs/bulk-concurrency.d.cts +14 -0
  4. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +4 -1
  5. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -0
  6. package/dist/lib/cjs/bundlers/esbuild-impl/svelte-preprocessor.cjs +152 -0
  7. package/dist/lib/cjs/bundlers/esbuild-impl/svelte-preprocessor.d.cts +95 -0
  8. package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +4 -3
  9. package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +1 -1
  10. package/dist/lib/cjs/docs-site/docs-links.cjs +3 -2
  11. package/dist/lib/cjs/docs-site/og-images.cjs +3 -2
  12. package/dist/lib/cjs/index.cjs +4 -1
  13. package/dist/lib/cjs/index.d.cts +1 -0
  14. package/dist/lib/cjs/linters/eslint-no-restricted-syntax.cjs +5 -1
  15. package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +3 -1
  16. package/dist/lib/cjs/linters/eslint-rules/index.cjs +4 -1
  17. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +1 -0
  18. package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.cjs +80 -3
  19. package/dist/lib/cjs/linters/eslint-rules/readonly-member-arrays.cjs +130 -0
  20. package/dist/lib/cjs/linters/eslint-rules/readonly-member-arrays.d.cts +6 -0
  21. package/dist/lib/cjs/linters/markdownlint.cjs +8 -2
  22. package/dist/lib/cjs/linters/over-exposure.cjs +14 -3
  23. package/dist/lib/cjs/linters/over-exposure.d.cts +3 -1
  24. package/dist/lib/cjs/nano-staged-config.cjs +24 -3
  25. package/dist/lib/cjs/nano-staged-config.d.cts +4 -0
  26. package/dist/lib/cjs/test-runners/auto.cjs +1 -1
  27. package/dist/lib/cjs/test-runners/auto.d.cts +5 -0
  28. package/dist/lib/cjs/test-runners/forwarded-arguments.cjs +50 -0
  29. package/dist/lib/cjs/test-runners/forwarded-arguments.d.cts +49 -0
  30. package/dist/lib/cjs/test-runners/index.cjs +4 -1
  31. package/dist/lib/cjs/test-runners/index.d.cts +1 -0
  32. package/dist/lib/cjs/test-runners/jest.cjs +16 -3
  33. package/dist/lib/cjs/test-runners/jest.d.cts +5 -0
  34. package/dist/lib/cjs/test-runners/vitest.cjs +111 -5
  35. package/dist/lib/cjs/test-runners/vitest.d.cts +5 -0
  36. package/dist/lib/esm/bulk-concurrency.d.mts +14 -0
  37. package/dist/lib/esm/bulk-concurrency.mjs +15 -0
  38. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -0
  39. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +3 -1
  40. package/dist/lib/esm/bundlers/esbuild-impl/svelte-preprocessor.d.mts +95 -0
  41. package/dist/lib/esm/bundlers/esbuild-impl/svelte-preprocessor.mjs +126 -0
  42. package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +1 -1
  43. package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +4 -3
  44. package/dist/lib/esm/docs-site/docs-links.mjs +3 -2
  45. package/dist/lib/esm/docs-site/og-images.mjs +3 -2
  46. package/dist/lib/esm/index.d.mts +1 -0
  47. package/dist/lib/esm/index.mjs +3 -1
  48. package/dist/lib/esm/linters/eslint-no-restricted-syntax.mjs +5 -1
  49. package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +3 -1
  50. package/dist/lib/esm/linters/eslint-rules/index.d.mts +1 -0
  51. package/dist/lib/esm/linters/eslint-rules/index.mjs +3 -1
  52. package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.mjs +80 -3
  53. package/dist/lib/esm/linters/eslint-rules/readonly-member-arrays.d.mts +6 -0
  54. package/dist/lib/esm/linters/eslint-rules/readonly-member-arrays.mjs +106 -0
  55. package/dist/lib/esm/linters/markdownlint.mjs +8 -2
  56. package/dist/lib/esm/linters/over-exposure.d.mts +3 -1
  57. package/dist/lib/esm/linters/over-exposure.mjs +16 -3
  58. package/dist/lib/esm/nano-staged-config.d.mts +4 -0
  59. package/dist/lib/esm/nano-staged-config.mjs +24 -3
  60. package/dist/lib/esm/test-runners/auto.d.mts +5 -0
  61. package/dist/lib/esm/test-runners/auto.mjs +1 -1
  62. package/dist/lib/esm/test-runners/forwarded-arguments.d.mts +49 -0
  63. package/dist/lib/esm/test-runners/forwarded-arguments.mjs +26 -0
  64. package/dist/lib/esm/test-runners/index.d.mts +1 -0
  65. package/dist/lib/esm/test-runners/index.mjs +3 -1
  66. package/dist/lib/esm/test-runners/jest.d.mts +5 -0
  67. package/dist/lib/esm/test-runners/jest.mjs +16 -3
  68. package/dist/lib/esm/test-runners/vitest.d.mts +5 -0
  69. package/dist/lib/esm/test-runners/vitest.mjs +105 -6
  70. package/linters/eslint-rules/readonly-member-arrays/package.json +6 -0
  71. package/package.json +5 -2
  72. package/test-runners/forwarded-arguments/package.json +6 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../dist/lib/cjs/bundlers/esbuild-impl/svelte-preprocessor.cjs",
3
+ "module": "../../../dist/lib/esm/bundlers/esbuild-impl/svelte-preprocessor.mjs",
4
+ "type": "module",
5
+ "types": "../../../dist/lib/cjs/bundlers/esbuild-impl/svelte-preprocessor.d.cts"
6
+ }
@@ -0,0 +1,49 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ "use strict";
7
+ var __create = Object.create;
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __getProtoOf = Object.getPrototypeOf;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __export = (target, all) => {
14
+ for (var name in all)
15
+ __defProp(target, name, { get: all[name], enumerable: true });
16
+ };
17
+ var __copyProps = (to, from, except, desc) => {
18
+ if (from && typeof from === "object" || typeof from === "function") {
19
+ for (let key of __getOwnPropNames(from))
20
+ if (!__hasOwnProp.call(to, key) && key !== except)
21
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
+ }
23
+ return to;
24
+ };
25
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
26
+ // If the importer is in node compatibility mode or this is not an ESM
27
+ // file that has been converted to a CommonJS file using a Babel-
28
+ // compatible transform (i.e. "__esModule" has not been set), then set
29
+ // "default" to the CommonJS "module.exports" for node compatibility.
30
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
31
+ mod
32
+ ));
33
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
+ var bulk_concurrency_exports = {};
35
+ __export(bulk_concurrency_exports, {
36
+ getBulkConcurrency: () => getBulkConcurrency
37
+ });
38
+ module.exports = __toCommonJS(bulk_concurrency_exports);
39
+ var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
40
+ function getBulkConcurrency(defaultConcurrency) {
41
+ const budget = import_node_process.default.env["BULK_CORES"]?.trim() ?? "";
42
+ const cores = Number(budget);
43
+ return /^[1-9]\d*$/.test(budget) && Number.isSafeInteger(cores) ? Math.min(defaultConcurrency, cores) : defaultConcurrency;
44
+ }
45
+ // Annotate the CommonJS export names for ESM import in node:
46
+ 0 && (module.exports = {
47
+ getBulkConcurrency
48
+ });
49
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2J1bGstY29uY3VycmVuY3kudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDYXBzIHRvb2wgY29uY3VycmVuY3kgdG8gdGhlIGJ1bGsgd29ya2VyJ3MgcHJvY2Vzc29yIGJ1ZGdldC5cbiAqL1xuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG4vKipcbiAqIENhcHMgYSB0b29sJ3Mgb3JkaW5hcnkgY29uY3VycmVuY3kgd2hlbiBgQlVMS19DT1JFU2AgbmFtZXMgYSBwb3NpdGl2ZSBzYWZlIGludGVnZXIuXG4gKiBNaXNzaW5nIG9yIG1hbGZvcm1lZCBidWRnZXRzIGxlYXZlIHRoZSBvcmRpbmFyeSBkZWZhdWx0IHVuY2hhbmdlZC4gUmVhZHMgdGhlIGVudmlyb25tZW50IG9uIGVhY2ggY2FsbC5cbiAqXG4gKiBAcGFyYW0gZGVmYXVsdENvbmN1cnJlbmN5IC0gVGhlIHRvb2wncyBvcmRpbmFyeSBwb3NpdGl2ZSBjb25jdXJyZW5jeSBsaW1pdC5cbiAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGNhcHBlZCBieSB0aGUgdmFsaWQgYnVsayBidWRnZXQsIG9yIHRoZSB1bmNoYW5nZWQgZGVmYXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1bGtDb25jdXJyZW5jeShkZWZhdWx0Q29uY3VycmVuY3k6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IGJ1ZGdldCA9IHByb2Nlc3MuZW52WydCVUxLX0NPUkVTJ10/LnRyaW0oKSA/PyAnJztcbiAgY29uc3QgY29yZXMgPSBOdW1iZXIoYnVkZ2V0KTtcbiAgcmV0dXJuIC9eWzEtOV1cXGQqJC8udGVzdChidWRnZXQpICYmIE51bWJlci5pc1NhZmVJbnRlZ2VyKGNvcmVzKVxuICAgID8gTWF0aC5taW4oZGVmYXVsdENvbmN1cnJlbmN5LCBjb3JlcylcbiAgICA6IGRlZmF1bHRDb25jdXJyZW5jeTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSwwQkFBb0I7QUFTYixTQUFTLG1CQUFtQixvQkFBb0M7QUFDckUsUUFBTSxTQUFTLG9CQUFBQSxRQUFRLElBQUksWUFBWSxHQUFHLEtBQUssS0FBSztBQUNwRCxRQUFNLFFBQVEsT0FBTyxNQUFNO0FBQzNCLFNBQU8sYUFBYSxLQUFLLE1BQU0sS0FBSyxPQUFPLGNBQWMsS0FBSyxJQUMxRCxLQUFLLElBQUksb0JBQW9CLEtBQUssSUFDbEM7QUFDTjsiLAogICJuYW1lcyI6IFsicHJvY2VzcyJdCn0K
@@ -0,0 +1,14 @@
1
+ /// <reference path="./library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Caps tool concurrency to the bulk worker's processor budget.
6
+ */
7
+ /**
8
+ * Caps a tool's ordinary concurrency when `BULK_CORES` names a positive safe integer.
9
+ * Missing or malformed budgets leave the ordinary default unchanged. Reads the environment on each call.
10
+ *
11
+ * @param defaultConcurrency - The tool's ordinary positive concurrency limit.
12
+ * @returns The default capped by the valid bulk budget, or the unchanged default.
13
+ */
14
+ export declare function getBulkConcurrency(defaultConcurrency: number): number;
@@ -37,6 +37,7 @@ __export(esbuild_impl_exports, {
37
37
  "custom-esbuild-options-plugin": () => custom_esbuild_options_plugin,
38
38
  "fix-esm-plugin": () => fix_esm_plugin,
39
39
  "preprocess-plugin": () => preprocess_plugin,
40
+ "svelte-preprocessor": () => svelte_preprocessor,
40
41
  "svelte-wrapper-plugin": () => svelte_wrapper_plugin
41
42
  });
42
43
  module.exports = __toCommonJS(esbuild_impl_exports);
@@ -44,6 +45,7 @@ var change_extension_plugin = __toESM(((module) => module && module.__esModule &
44
45
  var custom_esbuild_options_plugin = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./custom-esbuild-options-plugin.cjs')), 1);
45
46
  var fix_esm_plugin = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./fix-esm-plugin.cjs')), 1);
46
47
  var preprocess_plugin = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./preprocess-plugin.cjs')), 1);
48
+ var svelte_preprocessor = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./svelte-preprocessor.cjs')), 1);
47
49
  var svelte_wrapper_plugin = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./svelte-wrapper-plugin.cjs')), 1);
48
50
  // Annotate the CommonJS export names for ESM import in node:
49
51
  0 && (module.exports = {
@@ -51,6 +53,7 @@ var svelte_wrapper_plugin = __toESM(((module) => module && module.__esModule &&
51
53
  "custom-esbuild-options-plugin": null,
52
54
  "fix-esm-plugin": null,
53
55
  "preprocess-plugin": null,
56
+ "svelte-preprocessor": null,
54
57
  "svelte-wrapper-plugin": null
55
58
  });
56
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2J1bmRsZXJzL2VzYnVpbGQtaW1wbC9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdjaGFuZ2UtZXh0ZW5zaW9uLXBsdWdpbicgZnJvbSAnLi9jaGFuZ2UtZXh0ZW5zaW9uLXBsdWdpbi50cyc7XG5leHBvcnQgKiBhcyAnY3VzdG9tLWVzYnVpbGQtb3B0aW9ucy1wbHVnaW4nIGZyb20gJy4vY3VzdG9tLWVzYnVpbGQtb3B0aW9ucy1wbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgJ2ZpeC1lc20tcGx1Z2luJyBmcm9tICcuL2ZpeC1lc20tcGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzICdwcmVwcm9jZXNzLXBsdWdpbicgZnJvbSAnLi9wcmVwcm9jZXNzLXBsdWdpbi50cyc7XG5leHBvcnQgKiBhcyAnc3ZlbHRlLXdyYXBwZXItcGx1Z2luJyBmcm9tICcuL3N2ZWx0ZS13cmFwcGVyLXBsdWdpbi50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUEsbUNBQUFBO0FBQUEsRUFBQSx1Q0FBQUM7QUFBQSxFQUFBLHdCQUFBQztBQUFBLEVBQUEsMkJBQUFDO0FBQUEsRUFBQSwrQkFBQUM7QUFBQTtBQUFBO0FBRUEsSUFBQUosMEJBQTJDO0FBQzNDLElBQUFDLGdDQUFpRDtBQUNqRCxJQUFBQyxpQkFBa0M7QUFDbEMsSUFBQUMsb0JBQXFDO0FBQ3JDLElBQUFDLHdCQUF5QzsiLAogICJuYW1lcyI6IFsiY2hhbmdlLWV4dGVuc2lvbi1wbHVnaW4iLCAiY3VzdG9tLWVzYnVpbGQtb3B0aW9ucy1wbHVnaW4iLCAiZml4LWVzbS1wbHVnaW4iLCAicHJlcHJvY2Vzcy1wbHVnaW4iLCAic3ZlbHRlLXdyYXBwZXItcGx1Z2luIl0KfQo=
59
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2J1bmRsZXJzL2VzYnVpbGQtaW1wbC9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdjaGFuZ2UtZXh0ZW5zaW9uLXBsdWdpbicgZnJvbSAnLi9jaGFuZ2UtZXh0ZW5zaW9uLXBsdWdpbi50cyc7XG5leHBvcnQgKiBhcyAnY3VzdG9tLWVzYnVpbGQtb3B0aW9ucy1wbHVnaW4nIGZyb20gJy4vY3VzdG9tLWVzYnVpbGQtb3B0aW9ucy1wbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgJ2ZpeC1lc20tcGx1Z2luJyBmcm9tICcuL2ZpeC1lc20tcGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzICdwcmVwcm9jZXNzLXBsdWdpbicgZnJvbSAnLi9wcmVwcm9jZXNzLXBsdWdpbi50cyc7XG5leHBvcnQgKiBhcyAnc3ZlbHRlLXByZXByb2Nlc3NvcicgZnJvbSAnLi9zdmVsdGUtcHJlcHJvY2Vzc29yLnRzJztcbmV4cG9ydCAqIGFzICdzdmVsdGUtd3JhcHBlci1wbHVnaW4nIGZyb20gJy4vc3ZlbHRlLXdyYXBwZXItcGx1Z2luLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQSxtQ0FBQUE7QUFBQSxFQUFBLHVDQUFBQztBQUFBLEVBQUEsd0JBQUFDO0FBQUEsRUFBQSwyQkFBQUM7QUFBQSxFQUFBLDZCQUFBQztBQUFBLEVBQUEsK0JBQUFDO0FBQUE7QUFBQTtBQUVBLElBQUFMLDBCQUEyQztBQUMzQyxJQUFBQyxnQ0FBaUQ7QUFDakQsSUFBQUMsaUJBQWtDO0FBQ2xDLElBQUFDLG9CQUFxQztBQUNyQyxJQUFBQyxzQkFBdUM7QUFDdkMsSUFBQUMsd0JBQXlDOyIsCiAgIm5hbWVzIjogWyJjaGFuZ2UtZXh0ZW5zaW9uLXBsdWdpbiIsICJjdXN0b20tZXNidWlsZC1vcHRpb25zLXBsdWdpbiIsICJmaXgtZXNtLXBsdWdpbiIsICJwcmVwcm9jZXNzLXBsdWdpbiIsICJzdmVsdGUtcHJlcHJvY2Vzc29yIiwgInN2ZWx0ZS13cmFwcGVyLXBsdWdpbiJdCn0K
@@ -3,4 +3,5 @@ export * as 'change-extension-plugin' from './change-extension-plugin.cjs';
3
3
  export * as 'custom-esbuild-options-plugin' from './custom-esbuild-options-plugin.cjs';
4
4
  export * as 'fix-esm-plugin' from './fix-esm-plugin.cjs';
5
5
  export * as 'preprocess-plugin' from './preprocess-plugin.cjs';
6
+ export * as 'svelte-preprocessor' from './svelte-preprocessor.cjs';
6
7
  export * as 'svelte-wrapper-plugin' from './svelte-wrapper-plugin.cjs';
@@ -0,0 +1,152 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+ (function () {
6
+ function ensureBrowserProcess() {
7
+ const browserProcess = {
8
+ browser: true,
9
+ cwd() {
10
+ return '/';
11
+ },
12
+ env: {},
13
+ platform: 'android'
14
+ };
15
+
16
+ const existingProcess = globalThis.process;
17
+
18
+ if (!existingProcess) {
19
+ globalThis.process = browserProcess;
20
+ return;
21
+ }
22
+
23
+ if (existingProcess.versions?.node) {
24
+ return;
25
+ }
26
+
27
+ const existingProcessRecord = existingProcess;
28
+
29
+ for (const [key, value] of Object.entries(browserProcess)) {
30
+ existingProcessRecord[key] ??= value;
31
+ }
32
+
33
+ existingProcessRecord['browser'] = true;
34
+ }
35
+
36
+ ensureBrowserProcess();
37
+ })();
38
+
39
+ "use strict";
40
+ var __defProp = Object.defineProperty;
41
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
42
+ var __getOwnPropNames = Object.getOwnPropertyNames;
43
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
44
+ var __export = (target, all) => {
45
+ for (var name in all)
46
+ __defProp(target, name, { get: all[name], enumerable: true });
47
+ };
48
+ var __copyProps = (to, from, except, desc) => {
49
+ if (from && typeof from === "object" || typeof from === "function") {
50
+ for (let key of __getOwnPropNames(from))
51
+ if (!__hasOwnProp.call(to, key) && key !== except)
52
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
53
+ }
54
+ return to;
55
+ };
56
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
57
+ var svelte_preprocessor_exports = {};
58
+ __export(svelte_preprocessor_exports, {
59
+ createSveltePreprocessor: () => createSveltePreprocessor,
60
+ getBlockLanguage: () => getBlockLanguage,
61
+ isMissingSveltePreprocessError: () => isMissingSveltePreprocessError
62
+ });
63
+ module.exports = __toCommonJS(svelte_preprocessor_exports);
64
+ var import_esbuild = require('esbuild');
65
+ const SVELTE_PREPROCESS_PACKAGE_NAME = "svelte-preprocess";
66
+ const JAVASCRIPT_LANGUAGES = /* @__PURE__ */ new Set(["javascript", "js"]);
67
+ const MISSING_SVELTE_PREPROCESS_MESSAGE_REG_EXP = /Cannot find (?:module|package) 'svelte-preprocess'/;
68
+ const MODULE_NOT_FOUND_CODES = /* @__PURE__ */ new Set(["ERR_MODULE_NOT_FOUND", "MODULE_NOT_FOUND"]);
69
+ const TEXT_TYPE_PREFIX = "text/";
70
+ const TYPESCRIPT_LANGUAGES = /* @__PURE__ */ new Set(["ts", "typescript"]);
71
+ function createSveltePreprocessor() {
72
+ let fallbackPromise;
73
+ async function getFallbackPreprocessorGroup() {
74
+ fallbackPromise ??= loadFallbackPreprocessorGroup().catch((error) => {
75
+ fallbackPromise = void 0;
76
+ throw error;
77
+ });
78
+ return await fallbackPromise;
79
+ }
80
+ async function preprocessWithFallback(kind, language, params) {
81
+ let fallback;
82
+ try {
83
+ fallback = await getFallbackPreprocessorGroup();
84
+ } catch (error) {
85
+ if (!isMissingSveltePreprocessError(error)) {
86
+ throw error;
87
+ }
88
+ throw new Error(
89
+ `Cannot preprocess the <${kind} lang="${language}"> block of ${params.filename ?? "a Svelte component"}: install \`svelte-preprocess\` in the project to compile ${language}.`,
90
+ { cause: error }
91
+ );
92
+ }
93
+ return await fallback[kind]?.(params) ?? void 0;
94
+ }
95
+ return {
96
+ name: "typescript-dev-toolkit-svelte",
97
+ async script(params) {
98
+ const language = getBlockLanguage(params.attributes);
99
+ if (language === void 0 || JAVASCRIPT_LANGUAGES.has(language)) {
100
+ return void 0;
101
+ }
102
+ return TYPESCRIPT_LANGUAGES.has(language) ? await transpileTypeScript(params) : await preprocessWithFallback("script", language, params);
103
+ },
104
+ async style(params) {
105
+ const language = getBlockLanguage(params.attributes);
106
+ return language === void 0 || language === "css" ? void 0 : await preprocessWithFallback("style", language, params);
107
+ }
108
+ };
109
+ }
110
+ function getBlockLanguage(attributes) {
111
+ const lang = attributes["lang"];
112
+ if (typeof lang === "string" && lang !== "") {
113
+ return lang.toLowerCase();
114
+ }
115
+ const type = attributes["type"];
116
+ return typeof type === "string" && type.toLowerCase().startsWith(TEXT_TYPE_PREFIX) ? type.slice(TEXT_TYPE_PREFIX.length).toLowerCase() : void 0;
117
+ }
118
+ function isMissingSveltePreprocessError(error) {
119
+ if (!(error instanceof Error)) {
120
+ return false;
121
+ }
122
+ const code = error.code;
123
+ return typeof code === "string" && MODULE_NOT_FOUND_CODES.has(code) && MISSING_SVELTE_PREPROCESS_MESSAGE_REG_EXP.test(error.message);
124
+ }
125
+ async function loadFallbackPreprocessorGroup() {
126
+ const svelteFallbackModule = await import(SVELTE_PREPROCESS_PACKAGE_NAME);
127
+ return svelteFallbackModule.sveltePreprocess();
128
+ }
129
+ async function transpileTypeScript(params) {
130
+ const result = await (0, import_esbuild.transform)(params.content, {
131
+ loader: "ts",
132
+ sourcefile: params.filename ?? "",
133
+ sourcemap: "external",
134
+ target: "esnext",
135
+ tsconfigRaw: {
136
+ compilerOptions: {
137
+ verbatimModuleSyntax: true
138
+ }
139
+ }
140
+ });
141
+ return {
142
+ code: result.code,
143
+ map: result.map
144
+ };
145
+ }
146
+ // Annotate the CommonJS export names for ESM import in node:
147
+ 0 && (module.exports = {
148
+ createSveltePreprocessor,
149
+ getBlockLanguage,
150
+ isMissingSveltePreprocessError
151
+ });
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9idW5kbGVycy9lc2J1aWxkLWltcGwvc3ZlbHRlLXByZXByb2Nlc3Nvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogU3ZlbHRlIHByZXByb2Nlc3NvciB0aGF0IGNvbXBpbGVzIFR5cGVTY3JpcHQgc2NyaXB0cyB3aXRoIGVzYnVpbGQuXG4gKlxuICogSXQgcmVwbGFjZXMgYHN2ZWx0ZS1wcmVwcm9jZXNzYCBmb3IgdGhlIG9uZSBsYW5ndWFnZSBldmVyeSBTdmVsdGUgY29tcG9uZW50IG9mIHRoZXNlIHByb2plY3RzIHVzZXMsIGBsYW5nPVwidHNcImAsIHNvXG4gKiB0aGUgdG9vbGtpdCBubyBsb25nZXIgZGVwZW5kcyBvbiBgc3ZlbHRlLXByZXByb2Nlc3NgLCB3aG9zZSBvcHRpb25hbCBgQGJhYmVsL2NvcmVgIDcgcGVlciBjb25mbGljdHMgd2l0aCB0aGUgQmFiZWwgOFxuICogdGhhdCBTdHJ5a2VyIGluc3RhbGxzLiBBbnkgb3RoZXIgc2NyaXB0IG9yIHN0eWxlIGxhbmd1YWdlIGlzIGhhbmRlZCB0byBgc3ZlbHRlLXByZXByb2Nlc3NgLCBhbiBvcHRpb25hbCBwZWVyLCB3aGVuIHRoZVxuICogcHJvamVjdCBpbnN0YWxscyBpdC5cbiAqL1xuXG5pbXBvcnQgeyB0cmFuc2Zvcm0gfSBmcm9tICdlc2J1aWxkJztcblxuLyoqXG4gKiBUaGUgYXR0cmlidXRlcyBvZiBhIGA8c2NyaXB0PmAgb3IgYDxzdHlsZT5gIGJsb2NrLlxuICovXG5leHBvcnQgdHlwZSBTdmVsdGVCbG9ja0F0dHJpYnV0ZXMgPSBSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgc3RyaW5nPjtcblxuLyoqXG4gKiBBIFN2ZWx0ZSBwcmVwcm9jZXNzb3IgZm9yIG9uZSBraW5kIG9mIGJsb2NrLlxuICovXG5leHBvcnQgdHlwZSBTdmVsdGVCbG9ja1ByZXByb2Nlc3NvciA9IChwYXJhbXM6IFN2ZWx0ZVByZXByb2Nlc3NvclBhcmFtcykgPT4gUHJvbWlzZTxTdmVsdGVQcmVwcm9jZXNzb3JSZXN1bHQgfCB1bmRlZmluZWQ+O1xuXG4vKipcbiAqIEEgU3ZlbHRlIHByZXByb2Nlc3NvciBncm91cCwgaW4gdGhlIHNoYXBlIGBzdmVsdGUvY29tcGlsZXJgJ3MgYHByZXByb2Nlc3NgIHRha2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN2ZWx0ZVByZXByb2Nlc3Nvckdyb3VwIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBncm91cC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZXByb2Nlc3NvciBvZiBgPHNjcmlwdD5gIGJsb2Nrcy5cbiAgICovXG4gIHJlYWRvbmx5IHNjcmlwdDogU3ZlbHRlQmxvY2tQcmVwcm9jZXNzb3I7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVwcm9jZXNzb3Igb2YgYDxzdHlsZT5gIGJsb2Nrcy5cbiAgICovXG4gIHJlYWRvbmx5IHN0eWxlOiBTdmVsdGVCbG9ja1ByZXByb2Nlc3Nvcjtcbn1cblxuLyoqXG4gKiBXaGF0IGEgU3ZlbHRlIHByZXByb2Nlc3NvciBpcyBnaXZlbiBmb3Igb25lIGA8c2NyaXB0PmAgb3IgYDxzdHlsZT5gIGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN2ZWx0ZVByZXByb2Nlc3NvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXR0cmlidXRlcyBvZiB0aGUgYmxvY2suXG4gICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGVzOiBTdmVsdGVCbG9ja0F0dHJpYnV0ZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBibG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgd2hvbGUgY29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbWFya3VwOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2hhdCBhIFN2ZWx0ZSBwcmVwcm9jZXNzb3IgcmV0dXJucyBmb3IgYSBibG9jayBpdCBjaGFuZ2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN2ZWx0ZVByZXByb2Nlc3NvclJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgbmV3IGNvbnRlbnQgb2YgdGhlIGJsb2NrLlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG1hcCBvZiB0aGUgY2hhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFwPzogb2JqZWN0IHwgc3RyaW5nO1xufVxuXG50eXBlIEJsb2NrS2luZCA9ICdzY3JpcHQnIHwgJ3N0eWxlJztcblxudHlwZSBGYWxsYmFja1ByZXByb2Nlc3Nvckdyb3VwID0gUGFydGlhbDxSZWNvcmQ8QmxvY2tLaW5kLCAocGFyYW1zOiBTdmVsdGVQcmVwcm9jZXNzb3JQYXJhbXMpID0+IHVua25vd24+PjtcblxuaW50ZXJmYWNlIFN2ZWx0ZVByZXByb2Nlc3NNb2R1bGUge1xuICByZWFkb25seSBzdmVsdGVQcmVwcm9jZXNzOiAoKSA9PiBGYWxsYmFja1ByZXByb2Nlc3Nvckdyb3VwO1xufVxuXG5jb25zdCBTVkVMVEVfUFJFUFJPQ0VTU19QQUNLQUdFX05BTUUgPSAnc3ZlbHRlLXByZXByb2Nlc3MnO1xuXG5jb25zdCBKQVZBU0NSSVBUX0xBTkdVQUdFUyA9IG5ldyBTZXQoWydqYXZhc2NyaXB0JywgJ2pzJ10pO1xuY29uc3QgTUlTU0lOR19TVkVMVEVfUFJFUFJPQ0VTU19NRVNTQUdFX1JFR19FWFAgPSAvQ2Fubm90IGZpbmQgKD86bW9kdWxlfHBhY2thZ2UpICdzdmVsdGUtcHJlcHJvY2VzcycvO1xuY29uc3QgTU9EVUxFX05PVF9GT1VORF9DT0RFUyA9IG5ldyBTZXQoWydFUlJfTU9EVUxFX05PVF9GT1VORCcsICdNT0RVTEVfTk9UX0ZPVU5EJ10pO1xuY29uc3QgVEVYVF9UWVBFX1BSRUZJWCA9ICd0ZXh0Lyc7XG5jb25zdCBUWVBFU0NSSVBUX0xBTkdVQUdFUyA9IG5ldyBTZXQoWyd0cycsICd0eXBlc2NyaXB0J10pO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIFN2ZWx0ZSBwcmVwcm9jZXNzb3IgdGhlIHRvb2xraXQncyBlc2J1aWxkIGJ1aWxkIHVzZXMuXG4gKlxuICogQSBgPHNjcmlwdCBsYW5nPVwidHNcIj5gIGJsb2NrIGlzIHRyYW5zcGlsZWQgd2l0aCBlc2J1aWxkIHVuZGVyIGB2ZXJiYXRpbU1vZHVsZVN5bnRheGAsIGFzIFN2ZWx0ZSdzIG93biBgdml0ZVByZXByb2Nlc3NgXG4gKiBkb2VzLCBzbyBhbiBpbXBvcnQgdGhhdCBvbmx5IHRoZSBtYXJrdXAgdXNlcyBpcyBrZXB0IGFuZCBhIHR5cGUgaW1wb3J0IG11c3Qgc2F5IGBpbXBvcnQgdHlwZWAuIEEgcGxhaW4gc2NyaXB0IG9yXG4gKiBzdHlsZSBibG9jayBpcyBsZWZ0IGFsb25lLiBBbnkgb3RoZXIgbGFuZ3VhZ2UgaXMgaGFuZGVkIHRvIGBzdmVsdGUtcHJlcHJvY2Vzc2AsIGxvYWRlZCBvbmx5IHRoZW47IHdoZW4gdGhlIHByb2plY3RcbiAqIGRvZXMgbm90IGluc3RhbGwgaXQsIHByZXByb2Nlc3NpbmcgdGhhdCBibG9jayBmYWlscyBuYW1pbmcgdGhlIHBhY2thZ2UuXG4gKlxuICogQHJldHVybnMgVGhlIHByZXByb2Nlc3NvciBncm91cC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN2ZWx0ZVByZXByb2Nlc3NvcigpOiBTdmVsdGVQcmVwcm9jZXNzb3JHcm91cCB7XG4gIGxldCBmYWxsYmFja1Byb21pc2U6IFByb21pc2U8RmFsbGJhY2tQcmVwcm9jZXNzb3JHcm91cD4gfCB1bmRlZmluZWQ7XG5cbiAgLy8gQSBmYWlsZWQgbG9hZCBpcyBmb3Jnb3R0ZW4sIHNvIGEgYmxvY2sgYWZ0ZXIgdGhlIHByb2plY3QgaW5zdGFsbHMgdGhlIHBhY2thZ2UgdHJpZXMgYWdhaW4uXG4gIGFzeW5jIGZ1bmN0aW9uIGdldEZhbGxiYWNrUHJlcHJvY2Vzc29yR3JvdXAoKTogUHJvbWlzZTxGYWxsYmFja1ByZXByb2Nlc3Nvckdyb3VwPiB7XG4gICAgZmFsbGJhY2tQcm9taXNlID8/PSBsb2FkRmFsbGJhY2tQcmVwcm9jZXNzb3JHcm91cCgpLmNhdGNoKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgZmFsbGJhY2tQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IGZhbGxiYWNrUHJvbWlzZTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHByZXByb2Nlc3NXaXRoRmFsbGJhY2soa2luZDogQmxvY2tLaW5kLCBsYW5ndWFnZTogc3RyaW5nLCBwYXJhbXM6IFN2ZWx0ZVByZXByb2Nlc3NvclBhcmFtcyk6IFByb21pc2U8U3ZlbHRlUHJlcHJvY2Vzc29yUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IGZhbGxiYWNrOiBGYWxsYmFja1ByZXByb2Nlc3Nvckdyb3VwO1xuICAgIHRyeSB7XG4gICAgICBmYWxsYmFjayA9IGF3YWl0IGdldEZhbGxiYWNrUHJlcHJvY2Vzc29yR3JvdXAoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFpc01pc3NpbmdTdmVsdGVQcmVwcm9jZXNzRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2Fubm90IHByZXByb2Nlc3MgdGhlIDwke2tpbmR9IGxhbmc9XCIke2xhbmd1YWdlfVwiPiBibG9jayBvZiAke3BhcmFtcy5maWxlbmFtZSA/PyAnYSBTdmVsdGUgY29tcG9uZW50J306IGluc3RhbGwgXFxgc3ZlbHRlLXByZXByb2Nlc3NcXGAgaW4gdGhlIHByb2plY3QgdG8gY29tcGlsZSAke2xhbmd1YWdlfS5gLFxuICAgICAgICB7IGNhdXNlOiBlcnJvciB9XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgZmFsbGJhY2tba2luZF0/LihwYXJhbXMpIGFzIFN2ZWx0ZVByZXByb2Nlc3NvclJlc3VsdCB8IHVuZGVmaW5lZCA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd0eXBlc2NyaXB0LWRldi10b29sa2l0LXN2ZWx0ZScsXG4gICAgYXN5bmMgc2NyaXB0KHBhcmFtcyk6IFByb21pc2U8U3ZlbHRlUHJlcHJvY2Vzc29yUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICBjb25zdCBsYW5ndWFnZSA9IGdldEJsb2NrTGFuZ3VhZ2UocGFyYW1zLmF0dHJpYnV0ZXMpO1xuICAgICAgaWYgKGxhbmd1YWdlID09PSB1bmRlZmluZWQgfHwgSkFWQVNDUklQVF9MQU5HVUFHRVMuaGFzKGxhbmd1YWdlKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFRZUEVTQ1JJUFRfTEFOR1VBR0VTLmhhcyhsYW5ndWFnZSkgPyAoYXdhaXQgdHJhbnNwaWxlVHlwZVNjcmlwdChwYXJhbXMpKSA6IChhd2FpdCBwcmVwcm9jZXNzV2l0aEZhbGxiYWNrKCdzY3JpcHQnLCBsYW5ndWFnZSwgcGFyYW1zKSk7XG4gICAgfSxcbiAgICBhc3luYyBzdHlsZShwYXJhbXMpOiBQcm9taXNlPFN2ZWx0ZVByZXByb2Nlc3NvclJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRCbG9ja0xhbmd1YWdlKHBhcmFtcy5hdHRyaWJ1dGVzKTtcbiAgICAgIHJldHVybiBsYW5ndWFnZSA9PT0gdW5kZWZpbmVkIHx8IGxhbmd1YWdlID09PSAnY3NzJyA/IHVuZGVmaW5lZCA6IChhd2FpdCBwcmVwcm9jZXNzV2l0aEZhbGxiYWNrKCdzdHlsZScsIGxhbmd1YWdlLCBwYXJhbXMpKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGFuZ3VhZ2Ugb2YgYSBgPHNjcmlwdD5gIG9yIGA8c3R5bGU+YCBibG9jayBmcm9tIGl0cyBgbGFuZ2AgYXR0cmlidXRlLCBvciBlbHNlIGl0cyBgdHlwZWAgYXR0cmlidXRlLlxuICpcbiAqIEBwYXJhbSBhdHRyaWJ1dGVzIC0gVGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGJsb2NrLlxuICogQHJldHVybnMgVGhlIGxhbmd1YWdlLCBsb3dlcmNhc2VkLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZSBibG9jayBuYW1lcyBub25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmxvY2tMYW5ndWFnZShhdHRyaWJ1dGVzOiBTdmVsdGVCbG9ja0F0dHJpYnV0ZXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBsYW5nID0gYXR0cmlidXRlc1snbGFuZyddO1xuICBpZiAodHlwZW9mIGxhbmcgPT09ICdzdHJpbmcnICYmIGxhbmcgIT09ICcnKSB7XG4gICAgcmV0dXJuIGxhbmcudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGUgPSBhdHRyaWJ1dGVzWyd0eXBlJ107XG4gIHJldHVybiB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgJiYgdHlwZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoVEVYVF9UWVBFX1BSRUZJWCkgPyB0eXBlLnNsaWNlKFRFWFRfVFlQRV9QUkVGSVgubGVuZ3RoKS50b0xvd2VyQ2FzZSgpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGVycm9yIGlzIHRoZSBvbmUgbG9hZGluZyBgc3ZlbHRlLXByZXByb2Nlc3NgIHRocm93cyB3aGVuIHRoZSBwcm9qZWN0IGRvZXMgbm90IGluc3RhbGwgaXQuXG4gKlxuICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZXJyb3Igc2F5cyB0aGF0IHRoZSBgc3ZlbHRlLXByZXByb2Nlc3NgIHBhY2thZ2UgY2Fubm90IGJlIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNaXNzaW5nU3ZlbHRlUHJlcHJvY2Vzc0Vycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICghKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY29kZSA9IChlcnJvciBhcyBQYXJ0aWFsPFJlY29yZDwnY29kZScsIHVua25vd24+PikuY29kZTtcbiAgcmV0dXJuIHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJyAmJiBNT0RVTEVfTk9UX0ZPVU5EX0NPREVTLmhhcyhjb2RlKSAmJiBNSVNTSU5HX1NWRUxURV9QUkVQUk9DRVNTX01FU1NBR0VfUkVHX0VYUC50ZXN0KGVycm9yLm1lc3NhZ2UpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkRmFsbGJhY2tQcmVwcm9jZXNzb3JHcm91cCgpOiBQcm9taXNlPEZhbGxiYWNrUHJlcHJvY2Vzc29yR3JvdXA+IHtcbiAgLypcbiAgICogVGhlIHNwZWNpZmllciBpcyBhIHZhcmlhYmxlIHNvIHRoYXQgdHlwZS1jaGVja2luZyBkb2VzIG5vdCBuZWVkIHRoZSBwYWNrYWdlOiBpbnN0YWxsaW5nIGl0IGhlcmUgd291bGQgYnJpbmcgYmFjayB0aGVcbiAgICogYEBiYWJlbC9jb3JlYCBwZWVyIGNvbmZsaWN0IHdpdGggU3RyeWtlciB0aGlzIG1vZHVsZSBleGlzdHMgdG8gYXZvaWQuXG4gICAqL1xuICBjb25zdCBzdmVsdGVGYWxsYmFja01vZHVsZSA9IGF3YWl0IGltcG9ydChTVkVMVEVfUFJFUFJPQ0VTU19QQUNLQUdFX05BTUUpIGFzIFN2ZWx0ZVByZXByb2Nlc3NNb2R1bGU7XG4gIHJldHVybiBzdmVsdGVGYWxsYmFja01vZHVsZS5zdmVsdGVQcmVwcm9jZXNzKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRyYW5zcGlsZVR5cGVTY3JpcHQocGFyYW1zOiBTdmVsdGVQcmVwcm9jZXNzb3JQYXJhbXMpOiBQcm9taXNlPFN2ZWx0ZVByZXByb2Nlc3NvclJlc3VsdD4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm0ocGFyYW1zLmNvbnRlbnQsIHtcbiAgICBsb2FkZXI6ICd0cycsXG4gICAgc291cmNlZmlsZTogcGFyYW1zLmZpbGVuYW1lID8/ICcnLFxuICAgIHNvdXJjZW1hcDogJ2V4dGVybmFsJyxcbiAgICB0YXJnZXQ6ICdlc25leHQnLFxuICAgIHRzY29uZmlnUmF3OiB7XG4gICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgdmVyYmF0aW1Nb2R1bGVTeW50YXg6IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNvZGU6IHJlc3VsdC5jb2RlLFxuICAgIG1hcDogcmVzdWx0Lm1hcFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EscUJBQTBCO0FBZ0YxQixNQUFNLGlDQUFpQztBQUV2QyxNQUFNLHVCQUF1QixvQkFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUM7QUFDekQsTUFBTSw0Q0FBNEM7QUFDbEQsTUFBTSx5QkFBeUIsb0JBQUksSUFBSSxDQUFDLHdCQUF3QixrQkFBa0IsQ0FBQztBQUNuRixNQUFNLG1CQUFtQjtBQUN6QixNQUFNLHVCQUF1QixvQkFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUM7QUFZbEQsU0FBUywyQkFBb0Q7QUFDbEUsTUFBSTtBQUdKLGlCQUFlLCtCQUFtRTtBQUNoRix3QkFBb0IsOEJBQThCLEVBQUUsTUFBTSxDQUFDLFVBQW1CO0FBQzVFLHdCQUFrQjtBQUNsQixZQUFNO0FBQUEsSUFDUixDQUFDO0FBQ0QsV0FBTyxNQUFNO0FBQUEsRUFDZjtBQUVBLGlCQUFlLHVCQUF1QixNQUFpQixVQUFrQixRQUFpRjtBQUN4SixRQUFJO0FBQ0osUUFBSTtBQUNGLGlCQUFXLE1BQU0sNkJBQTZCO0FBQUEsSUFDaEQsU0FBUyxPQUFPO0FBQ2QsVUFBSSxDQUFDLCtCQUErQixLQUFLLEdBQUc7QUFDMUMsY0FBTTtBQUFBLE1BQ1I7QUFDQSxZQUFNLElBQUk7QUFBQSxRQUNSLDBCQUEwQixJQUFJLFVBQVUsUUFBUSxlQUFlLE9BQU8sWUFBWSxvQkFBb0IsNkRBQTZELFFBQVE7QUFBQSxRQUMzSyxFQUFFLE9BQU8sTUFBTTtBQUFBLE1BQ2pCO0FBQUEsSUFDRjtBQUNBLFdBQU8sTUFBTSxTQUFTLElBQUksSUFBSSxNQUFNLEtBQTZDO0FBQUEsRUFDbkY7QUFFQSxTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNLE9BQU8sUUFBdUQ7QUFDbEUsWUFBTSxXQUFXLGlCQUFpQixPQUFPLFVBQVU7QUFDbkQsVUFBSSxhQUFhLFVBQWEscUJBQXFCLElBQUksUUFBUSxHQUFHO0FBQ2hFLGVBQU87QUFBQSxNQUNUO0FBQ0EsYUFBTyxxQkFBcUIsSUFBSSxRQUFRLElBQUssTUFBTSxvQkFBb0IsTUFBTSxJQUFNLE1BQU0sdUJBQXVCLFVBQVUsVUFBVSxNQUFNO0FBQUEsSUFDNUk7QUFBQSxJQUNBLE1BQU0sTUFBTSxRQUF1RDtBQUNqRSxZQUFNLFdBQVcsaUJBQWlCLE9BQU8sVUFBVTtBQUNuRCxhQUFPLGFBQWEsVUFBYSxhQUFhLFFBQVEsU0FBYSxNQUFNLHVCQUF1QixTQUFTLFVBQVUsTUFBTTtBQUFBLElBQzNIO0FBQUEsRUFDRjtBQUNGO0FBUU8sU0FBUyxpQkFBaUIsWUFBdUQ7QUFDdEYsUUFBTSxPQUFPLFdBQVcsTUFBTTtBQUM5QixNQUFJLE9BQU8sU0FBUyxZQUFZLFNBQVMsSUFBSTtBQUMzQyxXQUFPLEtBQUssWUFBWTtBQUFBLEVBQzFCO0FBRUEsUUFBTSxPQUFPLFdBQVcsTUFBTTtBQUM5QixTQUFPLE9BQU8sU0FBUyxZQUFZLEtBQUssWUFBWSxFQUFFLFdBQVcsZ0JBQWdCLElBQUksS0FBSyxNQUFNLGlCQUFpQixNQUFNLEVBQUUsWUFBWSxJQUFJO0FBQzNJO0FBUU8sU0FBUywrQkFBK0IsT0FBeUI7QUFDdEUsTUFBSSxFQUFFLGlCQUFpQixRQUFRO0FBQzdCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxPQUFRLE1BQTJDO0FBQ3pELFNBQU8sT0FBTyxTQUFTLFlBQVksdUJBQXVCLElBQUksSUFBSSxLQUFLLDBDQUEwQyxLQUFLLE1BQU0sT0FBTztBQUNySTtBQUVBLGVBQWUsZ0NBQW9FO0FBS2pGLFFBQU0sdUJBQXVCLE1BQU0sT0FBTztBQUMxQyxTQUFPLHFCQUFxQixpQkFBaUI7QUFDL0M7QUFFQSxlQUFlLG9CQUFvQixRQUFxRTtBQUN0RyxRQUFNLFNBQVMsVUFBTSwwQkFBVSxPQUFPLFNBQVM7QUFBQSxJQUM3QyxRQUFRO0FBQUEsSUFDUixZQUFZLE9BQU8sWUFBWTtBQUFBLElBQy9CLFdBQVc7QUFBQSxJQUNYLFFBQVE7QUFBQSxJQUNSLGFBQWE7QUFBQSxNQUNYLGlCQUFpQjtBQUFBLFFBQ2Ysc0JBQXNCO0FBQUEsTUFDeEI7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0QsU0FBTztBQUFBLElBQ0wsTUFBTSxPQUFPO0FBQUEsSUFDYixLQUFLLE9BQU87QUFBQSxFQUNkO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -0,0 +1,95 @@
1
+ /// <reference path="../../library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Svelte preprocessor that compiles TypeScript scripts with esbuild.
6
+ *
7
+ * It replaces `svelte-preprocess` for the one language every Svelte component of these projects uses, `lang="ts"`, so
8
+ * the toolkit no longer depends on `svelte-preprocess`, whose optional `@babel/core` 7 peer conflicts with the Babel 8
9
+ * that Stryker installs. Any other script or style language is handed to `svelte-preprocess`, an optional peer, when the
10
+ * project installs it.
11
+ */
12
+ /**
13
+ * The attributes of a `<script>` or `<style>` block.
14
+ */
15
+ export type SvelteBlockAttributes = Record<string, boolean | string>;
16
+ /**
17
+ * A Svelte preprocessor for one kind of block.
18
+ */
19
+ export type SvelteBlockPreprocessor = (params: SveltePreprocessorParams) => Promise<SveltePreprocessorResult | undefined>;
20
+ /**
21
+ * A Svelte preprocessor group, in the shape `svelte/compiler`'s `preprocess` takes.
22
+ */
23
+ export interface SveltePreprocessorGroup {
24
+ /**
25
+ * The name of the group.
26
+ */
27
+ readonly name: string;
28
+ /**
29
+ * The preprocessor of `<script>` blocks.
30
+ */
31
+ readonly script: SvelteBlockPreprocessor;
32
+ /**
33
+ * The preprocessor of `<style>` blocks.
34
+ */
35
+ readonly style: SvelteBlockPreprocessor;
36
+ }
37
+ /**
38
+ * What a Svelte preprocessor is given for one `<script>` or `<style>` block.
39
+ */
40
+ export interface SveltePreprocessorParams {
41
+ /**
42
+ * The attributes of the block.
43
+ */
44
+ readonly attributes: SvelteBlockAttributes;
45
+ /**
46
+ * The content of the block.
47
+ */
48
+ readonly content: string;
49
+ /**
50
+ * The path of the component.
51
+ */
52
+ readonly filename?: string;
53
+ /**
54
+ * The whole component.
55
+ */
56
+ readonly markup: string;
57
+ }
58
+ /**
59
+ * What a Svelte preprocessor returns for a block it changed.
60
+ */
61
+ export interface SveltePreprocessorResult {
62
+ /**
63
+ * The new content of the block.
64
+ */
65
+ readonly code: string;
66
+ /**
67
+ * The source map of the change.
68
+ */
69
+ readonly map?: object | string;
70
+ }
71
+ /**
72
+ * Creates the Svelte preprocessor the toolkit's esbuild build uses.
73
+ *
74
+ * A `<script lang="ts">` block is transpiled with esbuild under `verbatimModuleSyntax`, as Svelte's own `vitePreprocess`
75
+ * does, so an import that only the markup uses is kept and a type import must say `import type`. A plain script or
76
+ * style block is left alone. Any other language is handed to `svelte-preprocess`, loaded only then; when the project
77
+ * does not install it, preprocessing that block fails naming the package.
78
+ *
79
+ * @returns The preprocessor group.
80
+ */
81
+ export declare function createSveltePreprocessor(): SveltePreprocessorGroup;
82
+ /**
83
+ * Gets the language of a `<script>` or `<style>` block from its `lang` attribute, or else its `type` attribute.
84
+ *
85
+ * @param attributes - The attributes of the block.
86
+ * @returns The language, lowercased, or `undefined` when the block names none.
87
+ */
88
+ export declare function getBlockLanguage(attributes: SvelteBlockAttributes): string | undefined;
89
+ /**
90
+ * Checks whether an error is the one loading `svelte-preprocess` throws when the project does not install it.
91
+ *
92
+ * @param error - The error to check.
93
+ * @returns Whether the error says that the `svelte-preprocess` package cannot be found.
94
+ */
95
+ export declare function isMissingSveltePreprocessError(error: unknown): boolean;
@@ -72,6 +72,7 @@ __export(svelte_wrapper_plugin_exports, {
72
72
  module.exports = __toCommonJS(svelte_wrapper_plugin_exports);
73
73
  var import_object_utils = require('@mnaoumov/typescript-lib/object-utils');
74
74
  var import_npm = require('../../npm.cjs');
75
+ var import_svelte_preprocessor = require('./svelte-preprocessor.cjs');
75
76
  const MISSING_SVELTE_MESSAGE_REG_EXP = /Cannot find (?:module|package) 'svelte(?:\/[^']*)?'/;
76
77
  const MODULE_NOT_FOUND_CODES = /* @__PURE__ */ new Set(["ERR_MODULE_NOT_FOUND", "MODULE_NOT_FOUND"]);
77
78
  const SVELTE_FILTER = /\.svelte$/;
@@ -109,7 +110,7 @@ function svelteWrapperPlugin(isProductionBuild) {
109
110
  };
110
111
  }
111
112
  async function createEsbuildSveltePlugin(isProductionBuild) {
112
- const [esbuildSvelteModule, { sveltePreprocess }] = await Promise.all([import("esbuild-svelte"), import("svelte-preprocess")]);
113
+ const esbuildSvelteModule = await import("esbuild-svelte");
113
114
  const esbuildSvelte = (0, import_object_utils.extractDefaultExportInterop)(esbuildSvelteModule.default);
114
115
  return esbuildSvelte({
115
116
  compilerOptions: {
@@ -119,7 +120,7 @@ async function createEsbuildSveltePlugin(isProductionBuild) {
119
120
  moduleCompilerOptions: {
120
121
  dev: !isProductionBuild
121
122
  },
122
- preprocess: sveltePreprocess()
123
+ preprocess: (0, import_svelte_preprocessor.createSveltePreprocessor)()
123
124
  });
124
125
  }
125
126
  function registerMissingSvelteLoader(build) {
@@ -134,4 +135,4 @@ function registerMissingSvelteLoader(build) {
134
135
  isMissingSveltePackageError,
135
136
  svelteWrapperPlugin
136
137
  });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9idW5kbGVycy9lc2J1aWxkLWltcGwvc3ZlbHRlLXdyYXBwZXItcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBTdmVsdGUgd3JhcHBlciBlc2J1aWxkIHBsdWdpbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIFBsdWdpbixcbiAgUGx1Z2luQnVpbGRcbn0gZnJvbSAnZXNidWlsZCc7XG5cbmltcG9ydCB7IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuXG5pbXBvcnQgeyByZWFkUGFja2FnZUpzb24gfSBmcm9tICcuLi8uLi9ucG0udHMnO1xuXG5jb25zdCBNSVNTSU5HX1NWRUxURV9NRVNTQUdFX1JFR19FWFAgPSAvQ2Fubm90IGZpbmQgKD86bW9kdWxlfHBhY2thZ2UpICdzdmVsdGUoPzpcXC9bXiddKik/Jy87XG5jb25zdCBNT0RVTEVfTk9UX0ZPVU5EX0NPREVTID0gbmV3IFNldChbJ0VSUl9NT0RVTEVfTk9UX0ZPVU5EJywgJ01PRFVMRV9OT1RfRk9VTkQnXSk7XG5jb25zdCBTVkVMVEVfRklMVEVSID0gL1xcLnN2ZWx0ZSQvO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGVycm9yIGlzIHRoZSBvbmUgbG9hZGluZyBgZXNidWlsZC1zdmVsdGVgIHRocm93cyB3aGVuIHRoZSBgc3ZlbHRlYCBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQuXG4gKlxuICogYGVzYnVpbGQtc3ZlbHRlYCBpbXBvcnRzIGBzdmVsdGUvY29tcGlsZXJgIHdoZW4gaXQgbG9hZHMsIGFuZCBwYWNrYWdlIG1hbmFnZXJzIHRoYXQgZG8gbm90IGluc3RhbGwgcGVlcnMgKFlhcm4gMSlcbiAqIGxlYXZlIGBzdmVsdGVgIG91dCBvZiBhIHByb2plY3QgdGhhdCBoYXMgbm8gU3ZlbHRlIGNvbXBvbmVudHMuXG4gKlxuICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZXJyb3Igc2F5cyB0aGF0IHRoZSBgc3ZlbHRlYCBwYWNrYWdlIGNhbm5vdCBiZSBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTWlzc2luZ1N2ZWx0ZVBhY2thZ2VFcnJvcihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNvZGUgPSAoZXJyb3IgYXMgUGFydGlhbDxSZWNvcmQ8J2NvZGUnLCB1bmtub3duPj4pLmNvZGU7XG4gIHJldHVybiB0eXBlb2YgY29kZSA9PT0gJ3N0cmluZycgJiYgTU9EVUxFX05PVF9GT1VORF9DT0RFUy5oYXMoY29kZSkgJiYgTUlTU0lOR19TVkVMVEVfTUVTU0FHRV9SRUdfRVhQLnRlc3QoZXJyb3IubWVzc2FnZSk7XG59XG5cbi8qKlxuICogV3JhcHMgdGhlIGVzYnVpbGQtc3ZlbHRlIHBsdWdpbiB0byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmb3JtYXQgaXMgdXNlZC5cbiAqXG4gKiBgZXNidWlsZC1zdmVsdGVgIGFuZCBgc3ZlbHRlLXByZXByb2Nlc3NgIGFyZSBsb2FkZWQgd2hlbiB0aGUgcGx1Z2luIGlzIHNldCB1cCwgbm90IHdoZW4gdGhpcyBtb2R1bGUgaXMgaW1wb3J0ZWQuIFdoZW5cbiAqIHRoZSBgc3ZlbHRlYCBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQsIGEgYnVpbGQgd2l0aCBubyBgLnN2ZWx0ZWAgZmlsZSBzdWNjZWVkcywgYW5kIGEgYnVpbGQgdGhhdCByZWFjaGVzIG9uZSBmYWlsc1xuICogd2l0aCBhbiBlcnJvciB0aGF0IG5hbWVzIHRoZSBtaXNzaW5nIHBhY2thZ2UuXG4gKlxuICogQHBhcmFtIGlzUHJvZHVjdGlvbkJ1aWxkIC0gV2hldGhlciB0aGUgYnVpbGQgaXMgYSBwcm9kdWN0aW9uIGJ1aWxkLlxuICogQHJldHVybnMgVGhlIGVzYnVpbGQgcGx1Z2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ZlbHRlV3JhcHBlclBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZDogYm9vbGVhbik6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3N2ZWx0ZS13cmFwcGVyJyxcbiAgICBhc3luYyBzZXR1cChidWlsZCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgbGV0IHN2ZWx0ZVBsdWdpbjogUGx1Z2luO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3ZlbHRlUGx1Z2luID0gYXdhaXQgY3JlYXRlRXNidWlsZFN2ZWx0ZVBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoIWlzTWlzc2luZ1N2ZWx0ZVBhY2thZ2VFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICByZWdpc3Rlck1pc3NpbmdTdmVsdGVMb2FkZXIoYnVpbGQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gICAgICBjb25zdCBmb3JtYXQgPSBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJyA/ICdlc20nIDogJ2Nqcyc7XG4gICAgICBhd2FpdCBzdmVsdGVQbHVnaW4uc2V0dXAoe1xuICAgICAgICAuLi5idWlsZCxcbiAgICAgICAgaW5pdGlhbE9wdGlvbnM6IHtcbiAgICAgICAgICAuLi5idWlsZC5pbml0aWFsT3B0aW9ucyxcbiAgICAgICAgICBmb3JtYXRcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gbG9hZHMgZXNidWlsZC1zdmVsdGUgd2l0aCBzdmVsdGUtcHJlcHJvY2VzczsgZXNidWlsZC1zdmVsdGUgY29tcGlsZXMgb25seSBpbnNpZGUgYSBsaXZlIGVzYnVpbGQgYnVpbGQuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVFc2J1aWxkU3ZlbHRlUGx1Z2luKGlzUHJvZHVjdGlvbkJ1aWxkOiBib29sZWFuKTogUHJvbWlzZTxQbHVnaW4+IHtcbiAgY29uc3QgW2VzYnVpbGRTdmVsdGVNb2R1bGUsIHsgc3ZlbHRlUHJlcHJvY2VzcyB9XSA9IGF3YWl0IFByb21pc2UuYWxsKFtpbXBvcnQoJ2VzYnVpbGQtc3ZlbHRlJyksIGltcG9ydCgnc3ZlbHRlLXByZXByb2Nlc3MnKV0pO1xuICBjb25zdCBlc2J1aWxkU3ZlbHRlID0gZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wKGVzYnVpbGRTdmVsdGVNb2R1bGUuZGVmYXVsdCk7XG4gIHJldHVybiBlc2J1aWxkU3ZlbHRlKHtcbiAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgIGNzczogJ2luamVjdGVkJyxcbiAgICAgIGRldjogIWlzUHJvZHVjdGlvbkJ1aWxkXG4gICAgfSxcbiAgICBtb2R1bGVDb21waWxlck9wdGlvbnM6IHtcbiAgICAgIGRldjogIWlzUHJvZHVjdGlvbkJ1aWxkXG4gICAgfSxcbiAgICBwcmVwcm9jZXNzOiBzdmVsdGVQcmVwcm9jZXNzKClcbiAgfSk7XG59XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG5mdW5jdGlvbiByZWdpc3Rlck1pc3NpbmdTdmVsdGVMb2FkZXIoYnVpbGQ6IFBsdWdpbkJ1aWxkKTogdm9pZCB7XG4gIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogU1ZFTFRFX0ZJTFRFUiB9LCAoYXJndW1lbnRzXykgPT4gKHtcbiAgICBlcnJvcnM6IFt7XG4gICAgICB0ZXh0OiBgQ2Fubm90IGNvbXBpbGUgJHthcmd1bWVudHNfLnBhdGh9OiB0aGUgXFxgc3ZlbHRlXFxgIHBhY2thZ2UgaXMgbm90IGluc3RhbGxlZC4gSW5zdGFsbCBcXGBzdmVsdGVcXGAgaW4gdGhlIHByb2plY3QgdG8gYnVpbGQgU3ZlbHRlIGNvbXBvbmVudHMuYFxuICAgIH1dXG4gIH0pKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EsMEJBQTRDO0FBRTVDLGlCQUFnQztBQUVoQyxNQUFNLGlDQUFpQztBQUN2QyxNQUFNLHlCQUF5QixvQkFBSSxJQUFJLENBQUMsd0JBQXdCLGtCQUFrQixDQUFDO0FBQ25GLE1BQU0sZ0JBQWdCO0FBV2YsU0FBUyw0QkFBNEIsT0FBeUI7QUFDbkUsTUFBSSxFQUFFLGlCQUFpQixRQUFRO0FBQzdCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxPQUFRLE1BQTJDO0FBQ3pELFNBQU8sT0FBTyxTQUFTLFlBQVksdUJBQXVCLElBQUksSUFBSSxLQUFLLCtCQUErQixLQUFLLE1BQU0sT0FBTztBQUMxSDtBQVlPLFNBQVMsb0JBQW9CLG1CQUFvQztBQUN0RSxTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNLE1BQU0sT0FBc0I7QUFDaEMsVUFBSTtBQUNKLFVBQUk7QUFDRix1QkFBZSxNQUFNLDBCQUEwQixpQkFBaUI7QUFBQSxNQUNsRSxTQUFTLE9BQU87QUFDZCxZQUFJLENBQUMsNEJBQTRCLEtBQUssR0FBRztBQUN2QyxnQkFBTTtBQUFBLFFBQ1I7QUFDQSxvQ0FBNEIsS0FBSztBQUNqQztBQUFBLE1BQ0Y7QUFFQSxZQUFNLGNBQWMsVUFBTSw0QkFBZ0I7QUFDMUMsWUFBTSxTQUFTLFlBQVksU0FBUyxXQUFXLFFBQVE7QUFDdkQsWUFBTSxhQUFhLE1BQU07QUFBQSxRQUN2QixHQUFHO0FBQUEsUUFDSCxnQkFBZ0I7QUFBQSxVQUNkLEdBQUcsTUFBTTtBQUFBLFVBQ1Q7QUFBQSxRQUNGO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjtBQUdBLGVBQWUsMEJBQTBCLG1CQUE2QztBQUNwRixRQUFNLENBQUMscUJBQXFCLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxNQUFNLFFBQVEsSUFBSSxDQUFDLE9BQU8sZ0JBQWdCLEdBQUcsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDO0FBQzdILFFBQU0sb0JBQWdCLGlEQUE0QixvQkFBb0IsT0FBTztBQUM3RSxTQUFPLGNBQWM7QUFBQSxJQUNuQixpQkFBaUI7QUFBQSxNQUNmLEtBQUs7QUFBQSxNQUNMLEtBQUssQ0FBQztBQUFBLElBQ1I7QUFBQSxJQUNBLHVCQUF1QjtBQUFBLE1BQ3JCLEtBQUssQ0FBQztBQUFBLElBQ1I7QUFBQSxJQUNBLFlBQVksaUJBQWlCO0FBQUEsRUFDL0IsQ0FBQztBQUNIO0FBR0EsU0FBUyw0QkFBNEIsT0FBMEI7QUFDN0QsUUFBTSxPQUFPLEVBQUUsUUFBUSxjQUFjLEdBQUcsQ0FBQyxnQkFBZ0I7QUFBQSxJQUN2RCxRQUFRLENBQUM7QUFBQSxNQUNQLE1BQU0sa0JBQWtCLFdBQVcsSUFBSTtBQUFBLElBQ3pDLENBQUM7QUFBQSxFQUNILEVBQUU7QUFDSjsiLCJuYW1lcyI6W119
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9idW5kbGVycy9lc2J1aWxkLWltcGwvc3ZlbHRlLXdyYXBwZXItcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBTdmVsdGUgd3JhcHBlciBlc2J1aWxkIHBsdWdpbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIFBsdWdpbixcbiAgUGx1Z2luQnVpbGRcbn0gZnJvbSAnZXNidWlsZCc7XG5cbmltcG9ydCB7IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuXG5pbXBvcnQgeyByZWFkUGFja2FnZUpzb24gfSBmcm9tICcuLi8uLi9ucG0udHMnO1xuaW1wb3J0IHsgY3JlYXRlU3ZlbHRlUHJlcHJvY2Vzc29yIH0gZnJvbSAnLi9zdmVsdGUtcHJlcHJvY2Vzc29yLnRzJztcblxuY29uc3QgTUlTU0lOR19TVkVMVEVfTUVTU0FHRV9SRUdfRVhQID0gL0Nhbm5vdCBmaW5kICg/Om1vZHVsZXxwYWNrYWdlKSAnc3ZlbHRlKD86XFwvW14nXSopPycvO1xuY29uc3QgTU9EVUxFX05PVF9GT1VORF9DT0RFUyA9IG5ldyBTZXQoWydFUlJfTU9EVUxFX05PVF9GT1VORCcsICdNT0RVTEVfTk9UX0ZPVU5EJ10pO1xuY29uc3QgU1ZFTFRFX0ZJTFRFUiA9IC9cXC5zdmVsdGUkLztcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBlcnJvciBpcyB0aGUgb25lIGxvYWRpbmcgYGVzYnVpbGQtc3ZlbHRlYCB0aHJvd3Mgd2hlbiB0aGUgYHN2ZWx0ZWAgcGFja2FnZSBpcyBub3QgaW5zdGFsbGVkLlxuICpcbiAqIGBlc2J1aWxkLXN2ZWx0ZWAgaW1wb3J0cyBgc3ZlbHRlL2NvbXBpbGVyYCB3aGVuIGl0IGxvYWRzLCBhbmQgcGFja2FnZSBtYW5hZ2VycyB0aGF0IGRvIG5vdCBpbnN0YWxsIHBlZXJzIChZYXJuIDEpXG4gKiBsZWF2ZSBgc3ZlbHRlYCBvdXQgb2YgYSBwcm9qZWN0IHRoYXQgaGFzIG5vIFN2ZWx0ZSBjb21wb25lbnRzLlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGVycm9yIHNheXMgdGhhdCB0aGUgYHN2ZWx0ZWAgcGFja2FnZSBjYW5ub3QgYmUgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01pc3NpbmdTdmVsdGVQYWNrYWdlRXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjb2RlID0gKGVycm9yIGFzIFBhcnRpYWw8UmVjb3JkPCdjb2RlJywgdW5rbm93bj4+KS5jb2RlO1xuICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnICYmIE1PRFVMRV9OT1RfRk9VTkRfQ09ERVMuaGFzKGNvZGUpICYmIE1JU1NJTkdfU1ZFTFRFX01FU1NBR0VfUkVHX0VYUC50ZXN0KGVycm9yLm1lc3NhZ2UpO1xufVxuXG4vKipcbiAqIFdyYXBzIHRoZSBlc2J1aWxkLXN2ZWx0ZSBwbHVnaW4gdG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgZm9ybWF0IGlzIHVzZWQuXG4gKlxuICogYGVzYnVpbGQtc3ZlbHRlYCBpcyBsb2FkZWQgd2hlbiB0aGUgcGx1Z2luIGlzIHNldCB1cCwgbm90IHdoZW4gdGhpcyBtb2R1bGUgaXMgaW1wb3J0ZWQuIFdoZW5cbiAqIHRoZSBgc3ZlbHRlYCBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQsIGEgYnVpbGQgd2l0aCBubyBgLnN2ZWx0ZWAgZmlsZSBzdWNjZWVkcywgYW5kIGEgYnVpbGQgdGhhdCByZWFjaGVzIG9uZSBmYWlsc1xuICogd2l0aCBhbiBlcnJvciB0aGF0IG5hbWVzIHRoZSBtaXNzaW5nIHBhY2thZ2UuXG4gKlxuICogQHBhcmFtIGlzUHJvZHVjdGlvbkJ1aWxkIC0gV2hldGhlciB0aGUgYnVpbGQgaXMgYSBwcm9kdWN0aW9uIGJ1aWxkLlxuICogQHJldHVybnMgVGhlIGVzYnVpbGQgcGx1Z2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ZlbHRlV3JhcHBlclBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZDogYm9vbGVhbik6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3N2ZWx0ZS13cmFwcGVyJyxcbiAgICBhc3luYyBzZXR1cChidWlsZCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgbGV0IHN2ZWx0ZVBsdWdpbjogUGx1Z2luO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3ZlbHRlUGx1Z2luID0gYXdhaXQgY3JlYXRlRXNidWlsZFN2ZWx0ZVBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoIWlzTWlzc2luZ1N2ZWx0ZVBhY2thZ2VFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICByZWdpc3Rlck1pc3NpbmdTdmVsdGVMb2FkZXIoYnVpbGQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gICAgICBjb25zdCBmb3JtYXQgPSBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJyA/ICdlc20nIDogJ2Nqcyc7XG4gICAgICBhd2FpdCBzdmVsdGVQbHVnaW4uc2V0dXAoe1xuICAgICAgICAuLi5idWlsZCxcbiAgICAgICAgaW5pdGlhbE9wdGlvbnM6IHtcbiAgICAgICAgICAuLi5idWlsZC5pbml0aWFsT3B0aW9ucyxcbiAgICAgICAgICBmb3JtYXRcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZC1zdmVsdGUgY29tcGlsZXMgb25seSBpbnNpZGUgYSBsaXZlIGVzYnVpbGQgYnVpbGQ7IHN2ZWx0ZS13cmFwcGVyLXBsdWdpbi5pbnRlZ3JhdGlvbi50ZXN0LnRzIHJ1bnMgb25lLiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRXNidWlsZFN2ZWx0ZVBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZDogYm9vbGVhbik6IFByb21pc2U8UGx1Z2luPiB7XG4gIGNvbnN0IGVzYnVpbGRTdmVsdGVNb2R1bGUgPSBhd2FpdCBpbXBvcnQoJ2VzYnVpbGQtc3ZlbHRlJyk7XG4gIGNvbnN0IGVzYnVpbGRTdmVsdGUgPSBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AoZXNidWlsZFN2ZWx0ZU1vZHVsZS5kZWZhdWx0KTtcbiAgcmV0dXJuIGVzYnVpbGRTdmVsdGUoe1xuICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgY3NzOiAnaW5qZWN0ZWQnLFxuICAgICAgZGV2OiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICB9LFxuICAgIG1vZHVsZUNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgZGV2OiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICB9LFxuICAgIHByZXByb2Nlc3M6IGNyZWF0ZVN2ZWx0ZVByZXByb2Nlc3NvcigpXG4gIH0pO1xufVxuLyogdjggaWdub3JlIHN0b3AgKi9cblxuZnVuY3Rpb24gcmVnaXN0ZXJNaXNzaW5nU3ZlbHRlTG9hZGVyKGJ1aWxkOiBQbHVnaW5CdWlsZCk6IHZvaWQge1xuICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IFNWRUxURV9GSUxURVIgfSwgKGFyZ3VtZW50c18pID0+ICh7XG4gICAgZXJyb3JzOiBbe1xuICAgICAgdGV4dDogYENhbm5vdCBjb21waWxlICR7YXJndW1lbnRzXy5wYXRofTogdGhlIFxcYHN2ZWx0ZVxcYCBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQuIEluc3RhbGwgXFxgc3ZlbHRlXFxgIGluIHRoZSBwcm9qZWN0IHRvIGJ1aWxkIFN2ZWx0ZSBjb21wb25lbnRzLmBcbiAgICB9XVxuICB9KSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLDBCQUE0QztBQUU1QyxpQkFBZ0M7QUFDaEMsaUNBQXlDO0FBRXpDLE1BQU0saUNBQWlDO0FBQ3ZDLE1BQU0seUJBQXlCLG9CQUFJLElBQUksQ0FBQyx3QkFBd0Isa0JBQWtCLENBQUM7QUFDbkYsTUFBTSxnQkFBZ0I7QUFXZixTQUFTLDRCQUE0QixPQUF5QjtBQUNuRSxNQUFJLEVBQUUsaUJBQWlCLFFBQVE7QUFDN0IsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLE9BQVEsTUFBMkM7QUFDekQsU0FBTyxPQUFPLFNBQVMsWUFBWSx1QkFBdUIsSUFBSSxJQUFJLEtBQUssK0JBQStCLEtBQUssTUFBTSxPQUFPO0FBQzFIO0FBWU8sU0FBUyxvQkFBb0IsbUJBQW9DO0FBQ3RFLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLE1BQU0sTUFBTSxPQUFzQjtBQUNoQyxVQUFJO0FBQ0osVUFBSTtBQUNGLHVCQUFlLE1BQU0sMEJBQTBCLGlCQUFpQjtBQUFBLE1BQ2xFLFNBQVMsT0FBTztBQUNkLFlBQUksQ0FBQyw0QkFBNEIsS0FBSyxHQUFHO0FBQ3ZDLGdCQUFNO0FBQUEsUUFDUjtBQUNBLG9DQUE0QixLQUFLO0FBQ2pDO0FBQUEsTUFDRjtBQUVBLFlBQU0sY0FBYyxVQUFNLDRCQUFnQjtBQUMxQyxZQUFNLFNBQVMsWUFBWSxTQUFTLFdBQVcsUUFBUTtBQUN2RCxZQUFNLGFBQWEsTUFBTTtBQUFBLFFBQ3ZCLEdBQUc7QUFBQSxRQUNILGdCQUFnQjtBQUFBLFVBQ2QsR0FBRyxNQUFNO0FBQUEsVUFDVDtBQUFBLFFBQ0Y7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGO0FBR0EsZUFBZSwwQkFBMEIsbUJBQTZDO0FBQ3BGLFFBQU0sc0JBQXNCLE1BQU0sT0FBTyxnQkFBZ0I7QUFDekQsUUFBTSxvQkFBZ0IsaURBQTRCLG9CQUFvQixPQUFPO0FBQzdFLFNBQU8sY0FBYztBQUFBLElBQ25CLGlCQUFpQjtBQUFBLE1BQ2YsS0FBSztBQUFBLE1BQ0wsS0FBSyxDQUFDO0FBQUEsSUFDUjtBQUFBLElBQ0EsdUJBQXVCO0FBQUEsTUFDckIsS0FBSyxDQUFDO0FBQUEsSUFDUjtBQUFBLElBQ0EsZ0JBQVkscURBQXlCO0FBQUEsRUFDdkMsQ0FBQztBQUNIO0FBR0EsU0FBUyw0QkFBNEIsT0FBMEI7QUFDN0QsUUFBTSxPQUFPLEVBQUUsUUFBUSxjQUFjLEdBQUcsQ0FBQyxnQkFBZ0I7QUFBQSxJQUN2RCxRQUFRLENBQUM7QUFBQSxNQUNQLE1BQU0sa0JBQWtCLFdBQVcsSUFBSTtBQUFBLElBQ3pDLENBQUM7QUFBQSxFQUNILEVBQUU7QUFDSjsiLCJuYW1lcyI6W119
@@ -18,7 +18,7 @@ export declare function isMissingSveltePackageError(error: unknown): boolean;
18
18
  /**
19
19
  * Wraps the esbuild-svelte plugin to ensure that the correct format is used.
20
20
  *
21
- * `esbuild-svelte` and `svelte-preprocess` are loaded when the plugin is set up, not when this module is imported. When
21
+ * `esbuild-svelte` is loaded when the plugin is set up, not when this module is imported. When
22
22
  * the `svelte` package is not installed, a build with no `.svelte` file succeeds, and a build that reaches one fails
23
23
  * with an error that names the missing package.
24
24
  *
@@ -28,6 +28,7 @@ __export(docs_links_exports, {
28
28
  module.exports = __toCommonJS(docs_links_exports);
29
29
  var import_promises = require('node:fs/promises');
30
30
  var import_node_path = require('node:path');
31
+ var import_bulk_concurrency = require('../bulk-concurrency.cjs');
31
32
  var import_link_check = require('./link-check.cjs');
32
33
  var import_unrendered_alerts = require('./unrendered-alerts.cjs');
33
34
  const EXTERNAL_LINK_TIMEOUT_IN_MILLISECONDS = 1e4;
@@ -49,7 +50,7 @@ ${(0, import_unrendered_alerts.formatUnrenderedAlerts)(unrenderedAlerts)}`
49
50
  }
50
51
  const internalBrokenLinks = (0, import_link_check.collectBrokenLinks)(pages, createFileSystem({ allFiles, outputDirectory, pages }), options.siteBaseUrl);
51
52
  const externalTargets = (0, import_link_check.collectExternalTargets)(pages, options.siteBaseUrl);
52
- const externalBrokenLinks = await (0, import_link_check.collectBrokenExternalLinks)(externalTargets, fetchUrlStatus, EXTERNAL_LINK_CONCURRENCY);
53
+ const externalBrokenLinks = await (0, import_link_check.collectBrokenExternalLinks)(externalTargets, fetchUrlStatus, (0, import_bulk_concurrency.getBulkConcurrency)(EXTERNAL_LINK_CONCURRENCY));
53
54
  const brokenLinks = [...internalBrokenLinks, ...externalBrokenLinks];
54
55
  if (brokenLinks.length > 0) {
55
56
  throw new Error(`Detected ${String(brokenLinks.length)} broken documentation link(s):
@@ -128,4 +129,4 @@ function toCheckableUrl(url) {
128
129
  0 && (module.exports = {
129
130
  assertDocsLinksResolve
130
131
  });
131
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9kb2NzLWxpbmtzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVmFsaWRhdGVzIHRoZSBsaW5rcyBlbWl0dGVkIGJ5IGEgYnVpbHQgZG9jdW1lbnRhdGlvbiBzaXRlLlxuICpcbiAqIEludGVybmFsIGxpbmtzIGFyZSByZXNvbHZlZCBvZmZsaW5lIGFnYWluc3QgdGhlIGJ1aWxkIG91dHB1dDsgZXh0ZXJuYWwgbGlua3MgYXJlIHZhbGlkYXRlZCBvdmVyIHRoZSBuZXR3b3JrLFxuICogZGVkdXBsaWNhdGVkIHNvIGVhY2ggdW5pcXVlIFVSTCBpcyBmZXRjaGVkIGF0IG1vc3Qgb25jZS4gU2VlIHtAbGluayAuL2xpbmstY2hlY2sudHN9IGZvciB0aGUgZGVjaXNpb24gbG9naWMuXG4gKlxuICogSXQgYWxzbyBmYWlscyBvbiBhIEdpdEh1YiBhbGVydCB0aGF0IHJlYWNoZWQgYSBwYWdlIGFzIGEgcGxhaW4gYmxvY2txdW90ZSAoc2VlIHtAbGluayAuL3VucmVuZGVyZWQtYWxlcnRzLnRzfSksXG4gKiBzaW5jZSBub3RoaW5nIGVsc2Ugbm90aWNlcyB3aGVuIHRoZSBjb252ZXJzaW9uIHN0b3BzLlxuICovXG5cbmltcG9ydCB7XG4gIHJlYWRkaXIsXG4gIHJlYWRGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgRG9jdW1lbnRhdGlvblBhZ2UsXG4gIEV4dGVybmFsTGlua1Byb2JlUmVzdWx0LFxuICBMaW5rQ2hlY2tGaWxlU3lzdGVtXG59IGZyb20gJy4vbGluay1jaGVjay50cyc7XG5cbmltcG9ydCB7XG4gIGNvbGxlY3RCcm9rZW5FeHRlcm5hbExpbmtzLFxuICBjb2xsZWN0QnJva2VuTGlua3MsXG4gIGNvbGxlY3RFeHRlcm5hbFRhcmdldHMsXG4gIGV4dHJhY3RJZHMsXG4gIGZvcm1hdEJyb2tlbkxpbmtzLFxuICBORVRXT1JLX0ZBSUxVUkVfU1RBVFVTLFxuICBwYXJzZVJldHJ5QWZ0ZXJJbk1pbGxpc2Vjb25kcyxcbiAgcmVzb2x2ZVdpdGhpblJvb3Rcbn0gZnJvbSAnLi9saW5rLWNoZWNrLnRzJztcbmltcG9ydCB7XG4gIGNvbGxlY3RVbnJlbmRlcmVkQWxlcnRzLFxuICBmb3JtYXRVbnJlbmRlcmVkQWxlcnRzXG59IGZyb20gJy4vdW5yZW5kZXJlZC1hbGVydHMudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBhc3NlcnREb2NzTGlua3NSZXNvbHZlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlcnREb2NzTGlua3NSZXNvbHZlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBidWlsZCBvdXRwdXQgZm9sZGVyLCBub3JtYWxseSBgPGRvY3M+L2Rpc3RgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSBVUkwgdGhlIHNpdGUgaXMgc2VydmVkIGZyb20sIHdpdGggYSB0cmFpbGluZyBzbGFzaCwgZS5nLiBgaHR0cHM6Ly9tbmFvdW1vdi5kZXYvdHlwZXNjcmlwdC1saWIvYC5cbiAgICovXG4gIHJlYWRvbmx5IHNpdGVCYXNlVXJsOiBzdHJpbmc7XG59XG5cbmNvbnN0IEVYVEVSTkFMX0xJTktfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMF8wMDA7XG5jb25zdCBFWFRFUk5BTF9MSU5LX0NPTkNVUlJFTkNZID0gMjA7XG5jb25zdCBIVE1MX0ZJTEVfRVhURU5TSU9OID0gJy5odG1sJztcbmNvbnN0IE5QTV9QQUNLQUdFX1VSTF9QUkVGSVggPSAnaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvJztcbmNvbnN0IE5QTV9SRUdJU1RSWV9VUkxfUFJFRklYID0gJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyc7XG5cbi8vIFRoZSBob3N0IHNlcnZlcyB0aGlzIHBhZ2UgYXMgdGhlIGZhbGxiYWNrIGZvciBhbnkgbWlzc2luZyBwYXRoICh3aXRoIGEgNDA0IHN0YXR1cyksIHNvIGl0IGlzIG5vdCBhXG4vLyByZWFsIG5hdmlnYWJsZSByb3V0ZTogU3RhcmxpZ2h0IGdpdmVzIGl0IGEgc2VsZi1gcmVsPVwiY2Fub25pY2FsXCJgIG9mIGAvNDA0L2AgdGhhdCBpbmhlcmVudGx5IGNhbm5vdFxuLy8gcmVzb2x2ZSwgYW5kIGl0cyBib2R5IGxpbmtzIChuYXYsIGxvZ28pIGFyZSBpZGVudGljYWwgdG8gZXZlcnkgcmVhbCBwYWdlIHdlIGFscmVhZHkgdmFsaWRhdGUuXG5jb25zdCBGQUxMQkFDS19QQUdFX1JFTEFUSVZFX1BBVEggPSAnNDA0Lmh0bWwnO1xuXG5pbnRlcmZhY2UgQ3JlYXRlRmlsZVN5c3RlbVBhcmFtcyB7XG4gIHJlYWRvbmx5IGFsbEZpbGVzOiBTZXQ8c3RyaW5nPjtcbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhZ2VzOiBEb2N1bWVudGF0aW9uUGFnZVtdO1xufVxuXG4vKipcbiAqIENoZWNrcyBldmVyeSBsaW5rIG9mIHRoZSBidWlsdCBzaXRlLCBhbmQgdGhhdCBldmVyeSBHaXRIdWIgYWxlcnQgcmVuZGVyZWQgYXMgYW4gYXNpZGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucy5cbiAqIEB0aHJvd3MgSWYgYW4gYWxlcnQgcmVuZGVyZWQgYXMgYSBwbGFpbiBibG9ja3F1b3RlLCBvciBhIGxpbmsgZG9lcyBub3QgcmVzb2x2ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzc2VydERvY3NMaW5rc1Jlc29sdmUob3B0aW9uczogQXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZVBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBvdXRwdXREaXJlY3RvcnkgPSByZXNvbHZlKG9wdGlvbnMub3V0cHV0RGlyZWN0b3J5KS5yZXBsYWNlQWxsKCdcXFxcJywgJy8nKTtcbiAgY29uc3QgYWxsRmlsZXMgPSBhd2FpdCBnZXRBbGxGaWxlcyhvdXRwdXREaXJlY3RvcnkpO1xuICBjb25zdCBwYWdlcyA9IGF3YWl0IHJlYWRQYWdlcyhvdXRwdXREaXJlY3RvcnksIGFsbEZpbGVzKTtcblxuICAvLyBPZmZsaW5lIGFuZCBpbnN0YW50LCBzbyBpdCBydW5zIGJlZm9yZSB0aGUgbmV0d29yayBoYWxmIGFuZCBmYWlscyBmaXJzdC5cbiAgY29uc3QgdW5yZW5kZXJlZEFsZXJ0cyA9IGNvbGxlY3RVbnJlbmRlcmVkQWxlcnRzKHBhZ2VzKTtcbiAgaWYgKHVucmVuZGVyZWRBbGVydHMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBEZXRlY3RlZCAke1N0cmluZyh1bnJlbmRlcmVkQWxlcnRzLmxlbmd0aCl9IEdpdEh1YiBhbGVydChzKSByZW5kZXJlZCBhcyBhIHBsYWluIGJsb2NrcXVvdGUgaW5zdGVhZCBvZiBhbiBhc2lkZTpcXG4ke2Zvcm1hdFVucmVuZGVyZWRBbGVydHModW5yZW5kZXJlZEFsZXJ0cyl9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbnRlcm5hbEJyb2tlbkxpbmtzID0gY29sbGVjdEJyb2tlbkxpbmtzKHBhZ2VzLCBjcmVhdGVGaWxlU3lzdGVtKHsgYWxsRmlsZXMsIG91dHB1dERpcmVjdG9yeSwgcGFnZXMgfSksIG9wdGlvbnMuc2l0ZUJhc2VVcmwpO1xuXG4gIGNvbnN0IGV4dGVybmFsVGFyZ2V0cyA9IGNvbGxlY3RFeHRlcm5hbFRhcmdldHMocGFnZXMsIG9wdGlvbnMuc2l0ZUJhc2VVcmwpO1xuICBjb25zdCBleHRlcm5hbEJyb2tlbkxpbmtzID0gYXdhaXQgY29sbGVjdEJyb2tlbkV4dGVybmFsTGlua3MoZXh0ZXJuYWxUYXJnZXRzLCBmZXRjaFVybFN0YXR1cywgRVhURVJOQUxfTElOS19DT05DVVJSRU5DWSk7XG5cbiAgY29uc3QgYnJva2VuTGlua3MgPSBbLi4uaW50ZXJuYWxCcm9rZW5MaW5rcywgLi4uZXh0ZXJuYWxCcm9rZW5MaW5rc107XG4gIGlmIChicm9rZW5MaW5rcy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZXRlY3RlZCAke1N0cmluZyhicm9rZW5MaW5rcy5sZW5ndGgpfSBicm9rZW4gZG9jdW1lbnRhdGlvbiBsaW5rKHMpOlxcbiR7Zm9ybWF0QnJva2VuTGlua3MoYnJva2VuTGlua3MpfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbGVTeXN0ZW0ocGFyYW1zOiBDcmVhdGVGaWxlU3lzdGVtUGFyYW1zKTogTGlua0NoZWNrRmlsZVN5c3RlbSB7XG4gIGNvbnN0IHsgYWxsRmlsZXMsIG91dHB1dERpcmVjdG9yeSwgcGFnZXMgfSA9IHBhcmFtcztcbiAgY29uc3QgaHRtbEJ5UmVsYXRpdmVQYXRoID0gbmV3IE1hcChwYWdlcy5tYXAoKHBhZ2UpID0+IFtwYWdlLnJlbGF0aXZlUGF0aCwgcGFnZS5odG1sXSkpO1xuICBjb25zdCBpZHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKTtcblxuICByZXR1cm4ge1xuICAgIHJlYWRJZHM6IChwYWdlS2V5KTogU2V0PHN0cmluZz4gPT4ge1xuICAgICAgbGV0IGlkcyA9IGlkc0NhY2hlLmdldChwYWdlS2V5KTtcbiAgICAgIGlmIChpZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBodG1sID0gaHRtbEJ5UmVsYXRpdmVQYXRoLmdldChwYWdlS2V5KTtcbiAgICAgICAgaWRzID0gaHRtbCA9PT0gdW5kZWZpbmVkID8gbmV3IFNldDxzdHJpbmc+KCkgOiBleHRyYWN0SWRzKGh0bWwpO1xuICAgICAgICBpZHNDYWNoZS5zZXQocGFnZUtleSwgaWRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlkcztcbiAgICB9LFxuICAgIHJlc29sdmVFeGlzdGluZ1BhZ2U6IChvdXRwdXRSZWxhdGl2ZVBhdGgpOiBudWxsIHwgc3RyaW5nID0+IHtcbiAgICAgIGlmIChyZXNvbHZlV2l0aGluUm9vdChvdXRwdXREaXJlY3RvcnksIG91dHB1dFJlbGF0aXZlUGF0aCkgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBvdXRwdXRSZWxhdGl2ZVBhdGgucmVwbGFjZSgvXFwvJC91LCAnJyk7XG4gICAgICBjb25zdCBjYW5kaWRhdGVzID0gdHJpbW1lZCA9PT0gJycgPyBbJ2luZGV4Lmh0bWwnXSA6IFt0cmltbWVkLCBgJHt0cmltbWVkfS9pbmRleC5odG1sYF07XG4gICAgICByZXR1cm4gY2FuZGlkYXRlcy5maW5kKChjYW5kaWRhdGUpID0+IGFsbEZpbGVzLmhhcyhjYW5kaWRhdGUpKSA/PyBudWxsO1xuICAgIH1cbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hVcmxTdGF0dXModXJsOiBzdHJpbmcpOiBQcm9taXNlPEV4dGVybmFsTGlua1Byb2JlUmVzdWx0PiB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGNvbnN0IHRpbWVvdXRJZCA9IGdsb2JhbFRoaXMuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgY29udHJvbGxlci5hYm9ydCgpO1xuICB9LCBFWFRFUk5BTF9MSU5LX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godG9DaGVja2FibGVVcmwodXJsKSwgeyBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsIH0pO1xuICAgIC8vIENhbmNlbCB0aGUgdW5yZWFkIGJvZHkgc28gdW5kaWNpIHJlbGVhc2VzIHRoZSBjb25uZWN0aW9uIGltbWVkaWF0ZWx5LlxuICAgIC8vIFdpdGhvdXQgdGhpcyB0aGUgcGVyLWhvc3QgY29ubmVjdGlvbiBwb29sIHN0YWxscyBhbmQgc2FtZS1ob3N0IHJlcXVlc3RzXG4gICAgLy8gc2VyaWFsaXplLCB0dXJuaW5nIGEgfjNzIHJ1biBpbnRvIG1pbnV0ZXMuXG4gICAgYXdhaXQgcmVzcG9uc2UuYm9keT8uY2FuY2VsKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJldHJ5QWZ0ZXJJbk1pbGxpc2Vjb25kczogcGFyc2VSZXRyeUFmdGVySW5NaWxsaXNlY29uZHMocmVzcG9uc2UuaGVhZGVycy5nZXQoJ3JldHJ5LWFmdGVyJyksIERhdGUubm93KCkpLFxuICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXNcbiAgICB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyBzdGF0dXM6IE5FVFdPUktfRkFJTFVSRV9TVEFUVVMgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICBnbG9iYWxUaGlzLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbEZpbGVzKG91dHB1dFJvb3RQYXRoOiBzdHJpbmcpOiBQcm9taXNlPFNldDxzdHJpbmc+PiB7XG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCByZWFkZGlyKG91dHB1dFJvb3RQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgY29uc3QgZmlsZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgaWYgKCFlbnRyeS5pc0ZpbGUoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gcmVzb2x2ZShlbnRyeS5wYXJlbnRQYXRoLCBlbnRyeS5uYW1lKS5yZXBsYWNlQWxsKCdcXFxcJywgJy8nKTtcbiAgICBmaWxlcy5hZGQoYWJzb2x1dGVQYXRoLnNsaWNlKGAke291dHB1dFJvb3RQYXRofS9gLmxlbmd0aCkpO1xuICB9XG5cbiAgcmV0dXJuIGZpbGVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUGFnZXMob3V0cHV0Um9vdFBhdGg6IHN0cmluZywgYWxsRmlsZXM6IFNldDxzdHJpbmc+KTogUHJvbWlzZTxEb2N1bWVudGF0aW9uUGFnZVtdPiB7XG4gIGNvbnN0IHBhZ2VzOiBEb2N1bWVudGF0aW9uUGFnZVtdID0gW107XG4gIGZvciAoY29uc3QgcmVsYXRpdmVQYXRoIG9mIGFsbEZpbGVzKSB7XG4gICAgaWYgKCFyZWxhdGl2ZVBhdGguZW5kc1dpdGgoSFRNTF9GSUxFX0VYVEVOU0lPTikgfHwgcmVsYXRpdmVQYXRoID09PSBGQUxMQkFDS19QQUdFX1JFTEFUSVZFX1BBVEgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGh0bWwgPSBhd2FpdCByZWFkRmlsZShyZXNvbHZlKG91dHB1dFJvb3RQYXRoLCByZWxhdGl2ZVBhdGgpLCAndXRmLTgnKTtcbiAgICBwYWdlcy5wdXNoKHsgaHRtbCwgcmVsYXRpdmVQYXRoIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBhZ2VzO1xufVxuXG4vLyBUaGUgbnBtanMgc2l0ZSBhbnN3ZXJzIGFuIHVuYXR0ZW5kZWQgYGZldGNoYCBvZiBhIHBhY2thZ2UgcGFnZSB3aXRoIDQwMywgc28gdGhlIHBhY2thZ2UgaXMgcHJvYmVkIG9uIHRoZSByZWdpc3RyeVxuLy8gaW5zdGVhZCwgdGhlIHJld3JpdGUgdGhlIG1hcmtkb3duIGxpbmsgY2hlY2sgZ2l2ZXMgbGlua2luYXRvci5cbmZ1bmN0aW9uIHRvQ2hlY2thYmxlVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHVybC5zdGFydHNXaXRoKE5QTV9QQUNLQUdFX1VSTF9QUkVGSVgpID8gTlBNX1JFR0lTVFJZX1VSTF9QUkVGSVggKyB1cmwuc2xpY2UoTlBNX1BBQ0tBR0VfVVJMX1BSRUZJWC5sZW5ndGgpIDogdXJsO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsc0JBR087QUFDUCx1QkFBd0I7QUFReEIsd0JBU087QUFDUCwrQkFHTztBQWlCUCxNQUFNLHdDQUF3QztBQUM5QyxNQUFNLDRCQUE0QjtBQUNsQyxNQUFNLHNCQUFzQjtBQUM1QixNQUFNLHlCQUF5QjtBQUMvQixNQUFNLDBCQUEwQjtBQUtoQyxNQUFNLDhCQUE4QjtBQWNwQyxlQUFzQix1QkFBdUIsU0FBc0Q7QUFDakcsUUFBTSxzQkFBa0IsMEJBQVEsUUFBUSxlQUFlLEVBQUUsV0FBVyxNQUFNLEdBQUc7QUFDN0UsUUFBTSxXQUFXLE1BQU0sWUFBWSxlQUFlO0FBQ2xELFFBQU0sUUFBUSxNQUFNLFVBQVUsaUJBQWlCLFFBQVE7QUFHdkQsUUFBTSx1QkFBbUIsa0RBQXdCLEtBQUs7QUFDdEQsTUFBSSxpQkFBaUIsU0FBUyxHQUFHO0FBQy9CLFVBQU0sSUFBSTtBQUFBLE1BQ1IsWUFBWSxPQUFPLGlCQUFpQixNQUFNLENBQUM7QUFBQSxNQUF5RSxpREFBdUIsZ0JBQWdCLENBQUM7QUFBQSxJQUM5SjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLDBCQUFzQixzQ0FBbUIsT0FBTyxpQkFBaUIsRUFBRSxVQUFVLGlCQUFpQixNQUFNLENBQUMsR0FBRyxRQUFRLFdBQVc7QUFFakksUUFBTSxzQkFBa0IsMENBQXVCLE9BQU8sUUFBUSxXQUFXO0FBQ3pFLFFBQU0sc0JBQXNCLFVBQU0sOENBQTJCLGlCQUFpQixnQkFBZ0IseUJBQXlCO0FBRXZILFFBQU0sY0FBYyxDQUFDLEdBQUcscUJBQXFCLEdBQUcsbUJBQW1CO0FBQ25FLE1BQUksWUFBWSxTQUFTLEdBQUc7QUFDMUIsVUFBTSxJQUFJLE1BQU0sWUFBWSxPQUFPLFlBQVksTUFBTSxDQUFDO0FBQUEsTUFBbUMscUNBQWtCLFdBQVcsQ0FBQyxFQUFFO0FBQUEsRUFDM0g7QUFDRjtBQUVBLFNBQVMsaUJBQWlCLFFBQXFEO0FBQzdFLFFBQU0sRUFBRSxVQUFVLGlCQUFpQixNQUFNLElBQUk7QUFDN0MsUUFBTSxxQkFBcUIsSUFBSSxJQUFJLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLGNBQWMsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUN0RixRQUFNLFdBQVcsb0JBQUksSUFBeUI7QUFFOUMsU0FBTztBQUFBLElBQ0wsU0FBUyxDQUFDLFlBQXlCO0FBQ2pDLFVBQUksTUFBTSxTQUFTLElBQUksT0FBTztBQUM5QixVQUFJLFFBQVEsUUFBVztBQUNyQixjQUFNLE9BQU8sbUJBQW1CLElBQUksT0FBTztBQUMzQyxjQUFNLFNBQVMsU0FBWSxvQkFBSSxJQUFZLFFBQUksOEJBQVcsSUFBSTtBQUM5RCxpQkFBUyxJQUFJLFNBQVMsR0FBRztBQUFBLE1BQzNCO0FBRUEsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLHFCQUFxQixDQUFDLHVCQUFzQztBQUMxRCxjQUFJLHFDQUFrQixpQkFBaUIsa0JBQWtCLE1BQU0sTUFBTTtBQUNuRSxlQUFPO0FBQUEsTUFDVDtBQUVBLFlBQU0sVUFBVSxtQkFBbUIsUUFBUSxRQUFRLEVBQUU7QUFDckQsWUFBTSxhQUFhLFlBQVksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLGFBQWE7QUFDdEYsYUFBTyxXQUFXLEtBQUssQ0FBQyxjQUFjLFNBQVMsSUFBSSxTQUFTLENBQUMsS0FBSztBQUFBLElBQ3BFO0FBQUEsRUFDRjtBQUNGO0FBRUEsZUFBZSxlQUFlLEtBQStDO0FBQzNFLFFBQU0sYUFBYSxJQUFJLGdCQUFnQjtBQUN2QyxRQUFNLFlBQVksV0FBVyxXQUFXLE1BQU07QUFDNUMsZUFBVyxNQUFNO0FBQUEsRUFDbkIsR0FBRyxxQ0FBcUM7QUFFeEMsTUFBSTtBQUNGLFVBQU0sV0FBVyxNQUFNLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxRQUFRLFdBQVcsT0FBTyxDQUFDO0FBSS9FLFVBQU0sU0FBUyxNQUFNLE9BQU87QUFDNUIsV0FBTztBQUFBLE1BQ0wsOEJBQTBCLGlEQUE4QixTQUFTLFFBQVEsSUFBSSxhQUFhLEdBQUcsS0FBSyxJQUFJLENBQUM7QUFBQSxNQUN2RyxRQUFRLFNBQVM7QUFBQSxJQUNuQjtBQUFBLEVBQ0YsUUFBUTtBQUNOLFdBQU8sRUFBRSxRQUFRLHlDQUF1QjtBQUFBLEVBQzFDLFVBQUU7QUFDQSxlQUFXLGFBQWEsU0FBUztBQUFBLEVBQ25DO0FBQ0Y7QUFFQSxlQUFlLFlBQVksZ0JBQThDO0FBQ3ZFLFFBQU0sVUFBVSxVQUFNLHlCQUFRLGdCQUFnQixFQUFFLFdBQVcsTUFBTSxlQUFlLEtBQUssQ0FBQztBQUN0RixRQUFNLFFBQVEsb0JBQUksSUFBWTtBQUM5QixhQUFXLFNBQVMsU0FBUztBQUMzQixRQUFJLENBQUMsTUFBTSxPQUFPLEdBQUc7QUFDbkI7QUFBQSxJQUNGO0FBRUEsVUFBTSxtQkFBZSwwQkFBUSxNQUFNLFlBQVksTUFBTSxJQUFJLEVBQUUsV0FBVyxNQUFNLEdBQUc7QUFDL0UsVUFBTSxJQUFJLGFBQWEsTUFBTSxHQUFHLGNBQWMsSUFBSSxNQUFNLENBQUM7QUFBQSxFQUMzRDtBQUVBLFNBQU87QUFDVDtBQUVBLGVBQWUsVUFBVSxnQkFBd0IsVUFBcUQ7QUFDcEcsUUFBTSxRQUE2QixDQUFDO0FBQ3BDLGFBQVcsZ0JBQWdCLFVBQVU7QUFDbkMsUUFBSSxDQUFDLGFBQWEsU0FBUyxtQkFBbUIsS0FBSyxpQkFBaUIsNkJBQTZCO0FBQy9GO0FBQUEsSUFDRjtBQUVBLFVBQU0sT0FBTyxVQUFNLDhCQUFTLDBCQUFRLGdCQUFnQixZQUFZLEdBQUcsT0FBTztBQUMxRSxVQUFNLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUFBLEVBQ25DO0FBRUEsU0FBTztBQUNUO0FBSUEsU0FBUyxlQUFlLEtBQXFCO0FBQzNDLFNBQU8sSUFBSSxXQUFXLHNCQUFzQixJQUFJLDBCQUEwQixJQUFJLE1BQU0sdUJBQXVCLE1BQU0sSUFBSTtBQUN2SDsiLAogICJuYW1lcyI6IFtdCn0K
132
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9kb2NzLWxpbmtzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVmFsaWRhdGVzIHRoZSBsaW5rcyBlbWl0dGVkIGJ5IGEgYnVpbHQgZG9jdW1lbnRhdGlvbiBzaXRlLlxuICpcbiAqIEludGVybmFsIGxpbmtzIGFyZSByZXNvbHZlZCBvZmZsaW5lIGFnYWluc3QgdGhlIGJ1aWxkIG91dHB1dDsgZXh0ZXJuYWwgbGlua3MgYXJlIHZhbGlkYXRlZCBvdmVyIHRoZSBuZXR3b3JrLFxuICogZGVkdXBsaWNhdGVkIHNvIGVhY2ggdW5pcXVlIFVSTCBpcyBmZXRjaGVkIGF0IG1vc3Qgb25jZS4gU2VlIHtAbGluayAuL2xpbmstY2hlY2sudHN9IGZvciB0aGUgZGVjaXNpb24gbG9naWMuXG4gKlxuICogSXQgYWxzbyBmYWlscyBvbiBhIEdpdEh1YiBhbGVydCB0aGF0IHJlYWNoZWQgYSBwYWdlIGFzIGEgcGxhaW4gYmxvY2txdW90ZSAoc2VlIHtAbGluayAuL3VucmVuZGVyZWQtYWxlcnRzLnRzfSksXG4gKiBzaW5jZSBub3RoaW5nIGVsc2Ugbm90aWNlcyB3aGVuIHRoZSBjb252ZXJzaW9uIHN0b3BzLlxuICovXG5cbmltcG9ydCB7XG4gIHJlYWRkaXIsXG4gIHJlYWRGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgRG9jdW1lbnRhdGlvblBhZ2UsXG4gIEV4dGVybmFsTGlua1Byb2JlUmVzdWx0LFxuICBMaW5rQ2hlY2tGaWxlU3lzdGVtXG59IGZyb20gJy4vbGluay1jaGVjay50cyc7XG5cbmltcG9ydCB7IGdldEJ1bGtDb25jdXJyZW5jeSB9IGZyb20gJy4uL2J1bGstY29uY3VycmVuY3kudHMnO1xuaW1wb3J0IHtcbiAgY29sbGVjdEJyb2tlbkV4dGVybmFsTGlua3MsXG4gIGNvbGxlY3RCcm9rZW5MaW5rcyxcbiAgY29sbGVjdEV4dGVybmFsVGFyZ2V0cyxcbiAgZXh0cmFjdElkcyxcbiAgZm9ybWF0QnJva2VuTGlua3MsXG4gIE5FVFdPUktfRkFJTFVSRV9TVEFUVVMsXG4gIHBhcnNlUmV0cnlBZnRlckluTWlsbGlzZWNvbmRzLFxuICByZXNvbHZlV2l0aGluUm9vdFxufSBmcm9tICcuL2xpbmstY2hlY2sudHMnO1xuaW1wb3J0IHtcbiAgY29sbGVjdFVucmVuZGVyZWRBbGVydHMsXG4gIGZvcm1hdFVucmVuZGVyZWRBbGVydHNcbn0gZnJvbSAnLi91bnJlbmRlcmVkLWFsZXJ0cy50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGFzc2VydERvY3NMaW5rc1Jlc29sdmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2VydERvY3NMaW5rc1Jlc29sdmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGJ1aWxkIG91dHB1dCBmb2xkZXIsIG5vcm1hbGx5IGA8ZG9jcz4vZGlzdGAuXG4gICAqL1xuICByZWFkb25seSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFic29sdXRlIFVSTCB0aGUgc2l0ZSBpcyBzZXJ2ZWQgZnJvbSwgd2l0aCBhIHRyYWlsaW5nIHNsYXNoLCBlLmcuIGBodHRwczovL21uYW91bW92LmRldi90eXBlc2NyaXB0LWxpYi9gLlxuICAgKi9cbiAgcmVhZG9ubHkgc2l0ZUJhc2VVcmw6IHN0cmluZztcbn1cblxuY29uc3QgRVhURVJOQUxfTElOS19USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDEwXzAwMDtcbmNvbnN0IEVYVEVSTkFMX0xJTktfQ09OQ1VSUkVOQ1kgPSAyMDtcbmNvbnN0IEhUTUxfRklMRV9FWFRFTlNJT04gPSAnLmh0bWwnO1xuY29uc3QgTlBNX1BBQ0tBR0VfVVJMX1BSRUZJWCA9ICdodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS8nO1xuY29uc3QgTlBNX1JFR0lTVFJZX1VSTF9QUkVGSVggPSAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJztcblxuLy8gVGhlIGhvc3Qgc2VydmVzIHRoaXMgcGFnZSBhcyB0aGUgZmFsbGJhY2sgZm9yIGFueSBtaXNzaW5nIHBhdGggKHdpdGggYSA0MDQgc3RhdHVzKSwgc28gaXQgaXMgbm90IGFcbi8vIHJlYWwgbmF2aWdhYmxlIHJvdXRlOiBTdGFybGlnaHQgZ2l2ZXMgaXQgYSBzZWxmLWByZWw9XCJjYW5vbmljYWxcImAgb2YgYC80MDQvYCB0aGF0IGluaGVyZW50bHkgY2Fubm90XG4vLyByZXNvbHZlLCBhbmQgaXRzIGJvZHkgbGlua3MgKG5hdiwgbG9nbykgYXJlIGlkZW50aWNhbCB0byBldmVyeSByZWFsIHBhZ2Ugd2UgYWxyZWFkeSB2YWxpZGF0ZS5cbmNvbnN0IEZBTExCQUNLX1BBR0VfUkVMQVRJVkVfUEFUSCA9ICc0MDQuaHRtbCc7XG5cbmludGVyZmFjZSBDcmVhdGVGaWxlU3lzdGVtUGFyYW1zIHtcbiAgcmVhZG9ubHkgYWxsRmlsZXM6IFNldDxzdHJpbmc+O1xuICByZWFkb25seSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFnZXM6IERvY3VtZW50YXRpb25QYWdlW107XG59XG5cbi8qKlxuICogQ2hlY2tzIGV2ZXJ5IGxpbmsgb2YgdGhlIGJ1aWx0IHNpdGUsIGFuZCB0aGF0IGV2ZXJ5IEdpdEh1YiBhbGVydCByZW5kZXJlZCBhcyBhbiBhc2lkZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zLlxuICogQHRocm93cyBJZiBhbiBhbGVydCByZW5kZXJlZCBhcyBhIHBsYWluIGJsb2NrcXVvdGUsIG9yIGEgbGluayBkb2VzIG5vdCByZXNvbHZlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZShvcHRpb25zOiBBc3NlcnREb2NzTGlua3NSZXNvbHZlUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9IHJlc29sdmUob3B0aW9ucy5vdXRwdXREaXJlY3RvcnkpLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpO1xuICBjb25zdCBhbGxGaWxlcyA9IGF3YWl0IGdldEFsbEZpbGVzKG91dHB1dERpcmVjdG9yeSk7XG4gIGNvbnN0IHBhZ2VzID0gYXdhaXQgcmVhZFBhZ2VzKG91dHB1dERpcmVjdG9yeSwgYWxsRmlsZXMpO1xuXG4gIC8vIE9mZmxpbmUgYW5kIGluc3RhbnQsIHNvIGl0IHJ1bnMgYmVmb3JlIHRoZSBuZXR3b3JrIGhhbGYgYW5kIGZhaWxzIGZpcnN0LlxuICBjb25zdCB1bnJlbmRlcmVkQWxlcnRzID0gY29sbGVjdFVucmVuZGVyZWRBbGVydHMocGFnZXMpO1xuICBpZiAodW5yZW5kZXJlZEFsZXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYERldGVjdGVkICR7U3RyaW5nKHVucmVuZGVyZWRBbGVydHMubGVuZ3RoKX0gR2l0SHViIGFsZXJ0KHMpIHJlbmRlcmVkIGFzIGEgcGxhaW4gYmxvY2txdW90ZSBpbnN0ZWFkIG9mIGFuIGFzaWRlOlxcbiR7Zm9ybWF0VW5yZW5kZXJlZEFsZXJ0cyh1bnJlbmRlcmVkQWxlcnRzKX1gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGludGVybmFsQnJva2VuTGlua3MgPSBjb2xsZWN0QnJva2VuTGlua3MocGFnZXMsIGNyZWF0ZUZpbGVTeXN0ZW0oeyBhbGxGaWxlcywgb3V0cHV0RGlyZWN0b3J5LCBwYWdlcyB9KSwgb3B0aW9ucy5zaXRlQmFzZVVybCk7XG5cbiAgY29uc3QgZXh0ZXJuYWxUYXJnZXRzID0gY29sbGVjdEV4dGVybmFsVGFyZ2V0cyhwYWdlcywgb3B0aW9ucy5zaXRlQmFzZVVybCk7XG4gIGNvbnN0IGV4dGVybmFsQnJva2VuTGlua3MgPSBhd2FpdCBjb2xsZWN0QnJva2VuRXh0ZXJuYWxMaW5rcyhleHRlcm5hbFRhcmdldHMsIGZldGNoVXJsU3RhdHVzLCBnZXRCdWxrQ29uY3VycmVuY3koRVhURVJOQUxfTElOS19DT05DVVJSRU5DWSkpO1xuXG4gIGNvbnN0IGJyb2tlbkxpbmtzID0gWy4uLmludGVybmFsQnJva2VuTGlua3MsIC4uLmV4dGVybmFsQnJva2VuTGlua3NdO1xuICBpZiAoYnJva2VuTGlua3MubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGV0ZWN0ZWQgJHtTdHJpbmcoYnJva2VuTGlua3MubGVuZ3RoKX0gYnJva2VuIGRvY3VtZW50YXRpb24gbGluayhzKTpcXG4ke2Zvcm1hdEJyb2tlbkxpbmtzKGJyb2tlbkxpbmtzKX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVGaWxlU3lzdGVtKHBhcmFtczogQ3JlYXRlRmlsZVN5c3RlbVBhcmFtcyk6IExpbmtDaGVja0ZpbGVTeXN0ZW0ge1xuICBjb25zdCB7IGFsbEZpbGVzLCBvdXRwdXREaXJlY3RvcnksIHBhZ2VzIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGh0bWxCeVJlbGF0aXZlUGF0aCA9IG5ldyBNYXAocGFnZXMubWFwKChwYWdlKSA9PiBbcGFnZS5yZWxhdGl2ZVBhdGgsIHBhZ2UuaHRtbF0pKTtcbiAgY29uc3QgaWRzQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgU2V0PHN0cmluZz4+KCk7XG5cbiAgcmV0dXJuIHtcbiAgICByZWFkSWRzOiAocGFnZUtleSk6IFNldDxzdHJpbmc+ID0+IHtcbiAgICAgIGxldCBpZHMgPSBpZHNDYWNoZS5nZXQocGFnZUtleSk7XG4gICAgICBpZiAoaWRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgaHRtbCA9IGh0bWxCeVJlbGF0aXZlUGF0aC5nZXQocGFnZUtleSk7XG4gICAgICAgIGlkcyA9IGh0bWwgPT09IHVuZGVmaW5lZCA/IG5ldyBTZXQ8c3RyaW5nPigpIDogZXh0cmFjdElkcyhodG1sKTtcbiAgICAgICAgaWRzQ2FjaGUuc2V0KHBhZ2VLZXksIGlkcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpZHM7XG4gICAgfSxcbiAgICByZXNvbHZlRXhpc3RpbmdQYWdlOiAob3V0cHV0UmVsYXRpdmVQYXRoKTogbnVsbCB8IHN0cmluZyA9PiB7XG4gICAgICBpZiAocmVzb2x2ZVdpdGhpblJvb3Qob3V0cHV0RGlyZWN0b3J5LCBvdXRwdXRSZWxhdGl2ZVBhdGgpID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0cmltbWVkID0gb3V0cHV0UmVsYXRpdmVQYXRoLnJlcGxhY2UoL1xcLyQvdSwgJycpO1xuICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IHRyaW1tZWQgPT09ICcnID8gWydpbmRleC5odG1sJ10gOiBbdHJpbW1lZCwgYCR7dHJpbW1lZH0vaW5kZXguaHRtbGBdO1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBhbGxGaWxlcy5oYXMoY2FuZGlkYXRlKSkgPz8gbnVsbDtcbiAgICB9XG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVXJsU3RhdHVzKHVybDogc3RyaW5nKTogUHJvbWlzZTxFeHRlcm5hbExpbmtQcm9iZVJlc3VsdD4ge1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCB0aW1lb3V0SWQgPSBnbG9iYWxUaGlzLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfSwgRVhURVJOQUxfTElOS19USU1FT1VUX0lOX01JTExJU0VDT05EUyk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRvQ2hlY2thYmxlVXJsKHVybCksIHsgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KTtcbiAgICAvLyBDYW5jZWwgdGhlIHVucmVhZCBib2R5IHNvIHVuZGljaSByZWxlYXNlcyB0aGUgY29ubmVjdGlvbiBpbW1lZGlhdGVseS5cbiAgICAvLyBXaXRob3V0IHRoaXMgdGhlIHBlci1ob3N0IGNvbm5lY3Rpb24gcG9vbCBzdGFsbHMgYW5kIHNhbWUtaG9zdCByZXF1ZXN0c1xuICAgIC8vIHNlcmlhbGl6ZSwgdHVybmluZyBhIH4zcyBydW4gaW50byBtaW51dGVzLlxuICAgIGF3YWl0IHJlc3BvbnNlLmJvZHk/LmNhbmNlbCgpO1xuICAgIHJldHVybiB7XG4gICAgICByZXRyeUFmdGVySW5NaWxsaXNlY29uZHM6IHBhcnNlUmV0cnlBZnRlckluTWlsbGlzZWNvbmRzKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdyZXRyeS1hZnRlcicpLCBEYXRlLm5vdygpKSxcbiAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzXG4gICAgfTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiBORVRXT1JLX0ZBSUxVUkVfU1RBVFVTIH07XG4gIH0gZmluYWxseSB7XG4gICAgZ2xvYmFsVGhpcy5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxGaWxlcyhvdXRwdXRSb290UGF0aDogc3RyaW5nKTogUHJvbWlzZTxTZXQ8c3RyaW5nPj4ge1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgcmVhZGRpcihvdXRwdXRSb290UGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gIGNvbnN0IGZpbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmICghZW50cnkuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHJlc29sdmUoZW50cnkucGFyZW50UGF0aCwgZW50cnkubmFtZSkucmVwbGFjZUFsbCgnXFxcXCcsICcvJyk7XG4gICAgZmlsZXMuYWRkKGFic29sdXRlUGF0aC5zbGljZShgJHtvdXRwdXRSb290UGF0aH0vYC5sZW5ndGgpKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFBhZ2VzKG91dHB1dFJvb3RQYXRoOiBzdHJpbmcsIGFsbEZpbGVzOiBTZXQ8c3RyaW5nPik6IFByb21pc2U8RG9jdW1lbnRhdGlvblBhZ2VbXT4ge1xuICBjb25zdCBwYWdlczogRG9jdW1lbnRhdGlvblBhZ2VbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHJlbGF0aXZlUGF0aCBvZiBhbGxGaWxlcykge1xuICAgIGlmICghcmVsYXRpdmVQYXRoLmVuZHNXaXRoKEhUTUxfRklMRV9FWFRFTlNJT04pIHx8IHJlbGF0aXZlUGF0aCA9PT0gRkFMTEJBQ0tfUEFHRV9SRUxBVElWRV9QQVRIKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBodG1sID0gYXdhaXQgcmVhZEZpbGUocmVzb2x2ZShvdXRwdXRSb290UGF0aCwgcmVsYXRpdmVQYXRoKSwgJ3V0Zi04Jyk7XG4gICAgcGFnZXMucHVzaCh7IGh0bWwsIHJlbGF0aXZlUGF0aCB9KTtcbiAgfVxuXG4gIHJldHVybiBwYWdlcztcbn1cblxuLy8gVGhlIG5wbWpzIHNpdGUgYW5zd2VycyBhbiB1bmF0dGVuZGVkIGBmZXRjaGAgb2YgYSBwYWNrYWdlIHBhZ2Ugd2l0aCA0MDMsIHNvIHRoZSBwYWNrYWdlIGlzIHByb2JlZCBvbiB0aGUgcmVnaXN0cnlcbi8vIGluc3RlYWQsIHRoZSByZXdyaXRlIHRoZSBtYXJrZG93biBsaW5rIGNoZWNrIGdpdmVzIGxpbmtpbmF0b3IuXG5mdW5jdGlvbiB0b0NoZWNrYWJsZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB1cmwuc3RhcnRzV2l0aChOUE1fUEFDS0FHRV9VUkxfUFJFRklYKSA/IE5QTV9SRUdJU1RSWV9VUkxfUFJFRklYICsgdXJsLnNsaWNlKE5QTV9QQUNLQUdFX1VSTF9QUkVGSVgubGVuZ3RoKSA6IHVybDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlB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
@@ -64,6 +64,7 @@ var import_node_fs = require('node:fs');
64
64
  var import_promises = require('node:fs/promises');
65
65
  var import_posix = require('node:path/posix');
66
66
  var import_yaml = require('yaml');
67
+ var import_bulk_concurrency = require('../bulk-concurrency.cjs');
67
68
  var import_og_image_page = require('./og-image-page.cjs');
68
69
  var import_og_image = require('./og-image.cjs');
69
70
  const CONCURRENCY = 10;
@@ -123,7 +124,7 @@ async function generateImagesWithPool(options) {
123
124
  }
124
125
  }
125
126
  }
126
- await Promise.all(Array.from({ length: CONCURRENCY }, async () => {
127
+ await Promise.all(Array.from({ length: (0, import_bulk_concurrency.getBulkConcurrency)(CONCURRENCY) }, async () => {
127
128
  await processNext();
128
129
  }));
129
130
  }
@@ -178,4 +179,4 @@ async function walkDirectory(directory, contentDocsDirectory, pages) {
178
179
  0 && (module.exports = {
179
180
  generateOgImages
180
181
  });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb2NzLXNpdGUvb2ctaW1hZ2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBHZW5lcmF0ZXMgYW4gT3BlbiBHcmFwaCBjYXJkIGZvciBldmVyeSBkb2N1bWVudGF0aW9uIHBhZ2UsIHJldXNpbmcgdGhlIGNhcmRzIHdob3NlIGlucHV0cyBkaWQgbm90IGNoYW5nZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZvbnQgfSBmcm9tICdzYXRvcmknO1xuXG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgbWtkaXIsXG4gIHJlYWRkaXIsXG4gIHJlYWRGaWxlLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnbm9kZTpwYXRoL3Bvc2l4JztcbmltcG9ydCB7IHBhcnNlIGFzIHBhcnNlWWFtbCB9IGZyb20gJ3lhbWwnO1xuXG5pbXBvcnQgdHlwZSB7IE9nQ2FyZENvbnRlbnQgfSBmcm9tICcuL29nLWltYWdlLnRzJztcblxuaW1wb3J0IHsgZ2V0T2dJbWFnZVBhZ2VTbHVnIH0gZnJvbSAnLi9vZy1pbWFnZS1wYWdlLnRzJztcbmltcG9ydCB7XG4gIGNvbXB1dGVPZ0hhc2gsXG4gIGxvYWRGb250cyxcbiAgbG9hZExvZ29EYXRhVXJpLFxuICByZW5kZXJPZ0ltYWdlXG59IGZyb20gJy4vb2ctaW1hZ2UudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBnZW5lcmF0ZU9nSW1hZ2VzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZU9nSW1hZ2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IGV2ZXJ5IGNhcmQncyBmb290ZXIgY2Fycmllcywgbm9ybWFsbHkgdGhlIHBhY2thZ2UncyBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmRUZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkb2N1bWVudGF0aW9uIGNvbnRlbnQgcm9vdCwgbm9ybWFsbHkgYDxkb2NzPi9zcmMvY29udGVudC9kb2NzYC4gRXZlcnkgYC5tZGAgLyBgLm1keGAgcGFnZSB1bmRlciBpdCB3aXRoIGFcbiAgICogYHRpdGxlYCBnZXRzIGEgY2FyZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnREb2NzRGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBTVkcgbG9nbyBkcmF3biBvbiBldmVyeSBjYXJkLiBBIG1pc3NpbmcgZmlsZSByZW5kZXJzIHRoZSBjYXJkcyB3aXRob3V0IG9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGZhdmljb25QYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgaG9sZGluZyB0aGUgZm9udHMgdGhlIGNhcmRzIGFyZSByZW5kZXJlZCB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9udHNEaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvbGRlciB0aGUgY2FyZHMgYXJlIHdyaXR0ZW4gdG8sIG5vcm1hbGx5IGA8ZG9jcz4vcHVibGljL29nYCwgc2VydmVkIGF0IGA8YmFzZT4vb2cvPHNsdWc+LnBuZ2AuXG4gICAqL1xuICByZWFkb25seSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENhY2hlTWFuaWZlc3Qge1xuICAvLyBFYWNoIHBhZ2UncyBjb250ZW50IGhhc2gsIGJ5IHNsdWcuXG4gIHJlYWRvbmx5IGNhcmRzOiBDYXJkSGFzaGVzO1xuICAvLyBUaGUgaGFzaCBvZiB0aGUgbG9nbyBldmVyeSBjYXJkIGNhcnJpZXMuIFRoZSBwYWdlIGhhc2hlcyBjYW5ub3Qgc2VlIGl0LCBzbyBhIGRpZmZlcmVudCBsb2dvIGRyb3BzIHRoZW0gYWxsLlxuICByZWFkb25seSBsb2dvSGFzaDogc3RyaW5nO1xufVxuXG50eXBlIENhcmRIYXNoZXMgPSBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xuXG5pbnRlcmZhY2UgR2VuZXJhdGVJbWFnZXNXaXRoUG9vbE9wdGlvbnMge1xuICByZWFkb25seSBicmFuZFRleHQ6IHN0cmluZztcbiAgcmVhZG9ubHkgY2FyZHM6IENhcmRIYXNoZXM7XG4gIHJlYWRvbmx5IGNoYW5nZWRQYWdlczogUGFnZUVudHJ5W107XG4gIHJlYWRvbmx5IGZvbnRzOiBGb250W107XG4gIHJlYWRvbmx5IGxvZ29EYXRhVXJpOiBudWxsIHwgc3RyaW5nO1xuICByZWFkb25seSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFBhZ2VFbnRyeSB7XG4gIHJlYWRvbmx5IGhhc2g6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFyYW1zOiBPZ0NhcmRDb250ZW50O1xuICByZWFkb25seSBzbHVnOiBzdHJpbmc7XG59XG5cbmNvbnN0IENPTkNVUlJFTkNZID0gMTA7XG5jb25zdCBQUk9HUkVTU19MT0dfSU5URVJWQUwgPSAxMDA7XG5jb25zdCBNQU5JRkVTVF9JTkRFTlQgPSAyO1xuXG4vLyBGcm9udG1hdHRlciBpcyBwYXJzZWQgaGVyZSByYXRoZXIgdGhhbiB3aXRoIGBncmF5LW1hdHRlcmAuIEl0cyBgbGliL2VuZ2luZXMuanNgIGJpbmRzIGpzLXlhbWwnc1xuLy8gYHNhZmVMb2FkYC9gc2FmZUR1bXBgIGF0IE1PRFVMRS1MT0FEIHRpbWUsIGFuZCBib3RoIHdlcmUgcmVtb3ZlZCBpbiBqcy15YW1sIHY0IOKAlCBzbyBtZXJlbHlcbi8vIElNUE9SVElORyBgZ3JheS1tYXR0ZXJgIHRocm93cyBgQ2Fubm90IHJlYWQgcHJvcGVydGllcyBvZiB1bmRlZmluZWQgKHJlYWRpbmcgJ2JpbmQnKWAsIGJlZm9yZSBhblxuLy8gYGVuZ2luZXNgIG9wdGlvbiBjb3VsZCBvdmVycmlkZSB0aGUgZGVmYXVsdC4gT25seSB0aGUgZnJvbnRtYXR0ZXIgb2JqZWN0IGlzIG5lZWRlZCBoZXJlLlxuY29uc3QgRlJPTlRfTUFUVEVSX1JFR19FWFAgPSAvXi0tLVxccj9cXG4oPzxGcm9udE1hdHRlcj5bXFxzXFxTXSo/KVxccj9cXG4tLS0oPzpcXHI/XFxufCQpLztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIE9wZW4gR3JhcGggY2FyZHMuXG4gKlxuICogQSBjYXJkIGlzIHJlLXJlbmRlcmVkIG9ubHkgd2hlbiBpdHMgdGl0bGUsIGRlc2NyaXB0aW9uLCBzaWduYXR1cmUgb3IgYmFkZ2UgY2hhbmdlZCwgdHJhY2tlZCBieSBhIGhhc2ggbWFuaWZlc3RcbiAqIGJlc2lkZSB0aGUgY2FyZHMuIEEgZGlmZmVyZW50IGxvZ28gZmlsZSByZS1yZW5kZXJzIGV2ZXJ5IGNhcmQuIE1pc3NpbmcgY29udGVudCBvciBmb250cyBza2lwIHRoZSBzdGVwIHdpdGggYSB3YXJuaW5nIHJhdGhlciB0aGFuIGZhaWxpbmcgdGhlIGJ1aWxkLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZU9nSW1hZ2VzKG9wdGlvbnM6IEdlbmVyYXRlT2dJbWFnZXNQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBicmFuZFRleHQsIGNvbnRlbnREb2NzRGlyZWN0b3J5LCBmYXZpY29uUGF0aCwgZm9udHNEaXJlY3RvcnksIG91dHB1dERpcmVjdG9yeSB9ID0gb3B0aW9ucztcbiAgY29uc3QgbWFuaWZlc3RQYXRoID0gYCR7b3V0cHV0RGlyZWN0b3J5fS8uY2FjaGUtbWFuaWZlc3QuanNvbmA7XG5cbiAgaWYgKCFleGlzdHNTeW5jKGNvbnRlbnREb2NzRGlyZWN0b3J5KSkge1xuICAgIGNvbnNvbGUud2FybihgT0cgaW1hZ2VzOiBjb250ZW50IGRpciBub3QgZm91bmQgKCR7Y29udGVudERvY3NEaXJlY3Rvcnl9KTsgc2tpcHBpbmcuYCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gTG9hZCBmb250cyBmaXJzdCDigJQgc2F0b3JpIGNhbm5vdCByZW5kZXIgd2l0aG91dCB0aGVtLlxuICBjb25zdCBmb250cyA9IGF3YWl0IGxvYWRGb250cyhmb250c0RpcmVjdG9yeSk7XG4gIGlmICghZm9udHMpIHtcbiAgICBjb25zb2xlLndhcm4oYE9HIGltYWdlczogbm8gZm9udHMgYXZhaWxhYmxlIGluICR7Zm9udHNEaXJlY3Rvcnl9OyBza2lwcGluZyBPRyBpbWFnZSBnZW5lcmF0aW9uLmApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VzOiBQYWdlRW50cnlbXSA9IFtdO1xuICBhd2FpdCB3YWxrRGlyZWN0b3J5KGNvbnRlbnREb2NzRGlyZWN0b3J5LCBjb250ZW50RG9jc0RpcmVjdG9yeSwgcGFnZXMpO1xuICBjb25zb2xlLndhcm4oYE9HIGltYWdlczogZm91bmQgJHtTdHJpbmcocGFnZXMubGVuZ3RoKX0gcGFnZXNgKTtcblxuICBjb25zdCBsb2dvSGFzaCA9IGF3YWl0IGNvbXB1dGVMb2dvSGFzaChmYXZpY29uUGF0aCk7XG4gIGNvbnN0IG1hbmlmZXN0ID0gYXdhaXQgbG9hZENhY2hlTWFuaWZlc3QobWFuaWZlc3RQYXRoKTtcbiAgY29uc3QgY2FyZHMgPSBtYW5pZmVzdD8ubG9nb0hhc2ggPT09IGxvZ29IYXNoID8geyAuLi5tYW5pZmVzdC5jYXJkcyB9IDoge307XG4gIGNvbnN0IGNoYW5nZWRQYWdlcyA9IHBhZ2VzLmZpbHRlcigocGFnZSkgPT4gY2FyZHNbcGFnZS5zbHVnXSAhPT0gcGFnZS5oYXNoKTtcbiAgY29uc29sZS53YXJuKGBPRyBpbWFnZXM6ICR7U3RyaW5nKGNoYW5nZWRQYWdlcy5sZW5ndGgpfSBjaGFuZ2VkIC8gJHtTdHJpbmcocGFnZXMubGVuZ3RoKX0gdG90YWxgKTtcblxuICBpZiAoY2hhbmdlZFBhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnNvbGUud2FybignQWxsIE9HIGltYWdlcyB1cCB0byBkYXRlLicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFJhc3Rlcml6ZSB0aGUgc2l0ZSBsb2dvIG9uY2UgKHNoYXJlZCBhY3Jvc3MgZXZlcnkgY2FyZCk7IGRlZ3JhZGUgZ3JhY2VmdWxseSBpZiBhYnNlbnQuXG4gIGNvbnN0IGxvZ29EYXRhVXJpID0gYXdhaXQgbG9hZExvZ29EYXRhVXJpKGZhdmljb25QYXRoKTtcbiAgaWYgKCFsb2dvRGF0YVVyaSkge1xuICAgIGNvbnNvbGUud2FybihgT0cgaW1hZ2VzOiBmYXZpY29uIG5vdCBmb3VuZCAoJHtmYXZpY29uUGF0aH0pOyByZW5kZXJpbmcgY2FyZHMgd2l0aG91dCBhIGxvZ28uYCk7XG4gIH1cblxuICBhd2FpdCBnZW5lcmF0ZUltYWdlc1dpdGhQb29sKHsgYnJhbmRUZXh0LCBjYXJkcywgY2hhbmdlZFBhZ2VzLCBmb250cywgbG9nb0RhdGFVcmksIG91dHB1dERpcmVjdG9yeSB9KTtcblxuICBjb25zdCBuZXdNYW5pZmVzdDogQ2FjaGVNYW5pZmVzdCA9IHsgY2FyZHMsIGxvZ29IYXNoIH07XG4gIGF3YWl0IG1rZGlyKGRpcm5hbWUobWFuaWZlc3RQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IHdyaXRlRmlsZShtYW5pZmVzdFBhdGgsIEpTT04uc3RyaW5naWZ5KG5ld01hbmlmZXN0LCBudWxsLCBNQU5JRkVTVF9JTkRFTlQpKTtcbiAgY29uc29sZS53YXJuKGBPRyBpbWFnZXM6IGRvbmUuIEdlbmVyYXRlZCAke1N0cmluZyhjaGFuZ2VkUGFnZXMubGVuZ3RoKX0gaW1hZ2VzLmApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb21wdXRlTG9nb0hhc2goZmF2aWNvblBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBleGlzdHNTeW5jKGZhdmljb25QYXRoKSA/IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShhd2FpdCByZWFkRmlsZShmYXZpY29uUGF0aCkpLmRpZ2VzdCgnaGV4JykgOiAnJztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVJbWFnZXNXaXRoUG9vbChvcHRpb25zOiBHZW5lcmF0ZUltYWdlc1dpdGhQb29sT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGJyYW5kVGV4dCwgY2FyZHMsIGNoYW5nZWRQYWdlcywgZm9udHMsIGxvZ29EYXRhVXJpLCBvdXRwdXREaXJlY3RvcnkgfSA9IG9wdGlvbnM7XG4gIGxldCBjb21wbGV0ZWQgPSAwO1xuICBsZXQgaW5kZXggPSAwO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NOZXh0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAobGV0IHBhZ2UgPSBjaGFuZ2VkUGFnZXNbaW5kZXgrK107IHBhZ2UgIT09IHVuZGVmaW5lZDsgcGFnZSA9IGNoYW5nZWRQYWdlc1tpbmRleCsrXSkge1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IGAke291dHB1dERpcmVjdG9yeX0vJHtwYWdlLnNsdWd9LnBuZ2A7XG4gICAgICBhd2FpdCBta2RpcihkaXJuYW1lKG91dHB1dFBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShvdXRwdXRQYXRoLCBhd2FpdCByZW5kZXJPZ0ltYWdlKHBhZ2UucGFyYW1zLCB7IGJyYW5kVGV4dCwgZm9udHMsIGxvZ29EYXRhVXJpIH0pKTtcbiAgICAgIGNhcmRzW3BhZ2Uuc2x1Z10gPSBwYWdlLmhhc2g7XG4gICAgICBjb21wbGV0ZWQrKztcbiAgICAgIGlmIChjb21wbGV0ZWQgJSBQUk9HUkVTU19MT0dfSU5URVJWQUwgPT09IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKGAgICR7U3RyaW5nKGNvbXBsZXRlZCl9LyR7U3RyaW5nKGNoYW5nZWRQYWdlcy5sZW5ndGgpfSBpbWFnZXMgZ2VuZXJhdGVkLi4uYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbSh7IGxlbmd0aDogQ09OQ1VSUkVOQ1kgfSwgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHByb2Nlc3NOZXh0KCk7XG4gIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZENhY2hlTWFuaWZlc3QobWFuaWZlc3RQYXRoOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlTWFuaWZlc3QgfCBudWxsPiB7XG4gIGlmICghZXhpc3RzU3luYyhtYW5pZmVzdFBhdGgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gQSBtYW5pZmVzdCB3cml0dGVuIGJlZm9yZSB0aGUgbG9nbyB3YXMgdHJhY2tlZCBpcyBhIGZsYXQgc2x1Zy10by1oYXNoIG1hcDogaXQgaGFzIG5vIGBsb2dvSGFzaGAsIHNvIGV2ZXJ5IGNhcmRcbiAgLy8gcmUtcmVuZGVycyBvbmNlLlxuICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUobWFuaWZlc3RQYXRoLCAndXRmLTgnKSkgYXMgUGFydGlhbDxDYWNoZU1hbmlmZXN0PjtcbiAgcmV0dXJuIHR5cGVvZiBtYW5pZmVzdC5sb2dvSGFzaCA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIG1hbmlmZXN0LmNhcmRzID09PSAnb2JqZWN0J1xuICAgID8geyBjYXJkczogbWFuaWZlc3QuY2FyZHMsIGxvZ29IYXNoOiBtYW5pZmVzdC5sb2dvSGFzaCB9XG4gICAgOiBudWxsO1xufVxuXG5mdW5jdGlvbiBwYXJzZUZyb250TWF0dGVyKGNvbnRlbnQ6IHN0cmluZyk6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgZnJvbnRNYXR0ZXIgPSBGUk9OVF9NQVRURVJfUkVHX0VYUC5leGVjKGNvbnRlbnQpPy5ncm91cHM/LlsnRnJvbnRNYXR0ZXInXTtcbiAgcmV0dXJuIGZyb250TWF0dGVyID09PSB1bmRlZmluZWQgPyB7fSA6IChwYXJzZVlhbWwoZnJvbnRNYXR0ZXIpIGFzIG51bGwgfCBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PikgPz8ge307XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlUGFnZShmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50RG9jc0RpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxudWxsIHwgUGFnZUVudHJ5PiB7XG4gIGNvbnN0IGRhdGEgPSBwYXJzZUZyb250TWF0dGVyKGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCAndXRmLTgnKSk7XG5cbiAgY29uc3QgdGl0bGUgPSB0b09wdGlvbmFsU3RyaW5nKGRhdGFbJ3RpdGxlJ10pO1xuICBpZiAoIXRpdGxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBiYWRnZSA9IGRhdGFbJ3NpZGViYXInXSBhcyBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+Pj4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHBhcmFtczogT2dDYXJkQ29udGVudCA9IHtcbiAgICBiYWRnZTogdG9PcHRpb25hbFN0cmluZyhiYWRnZT8uWydiYWRnZSddPy5bJ3RleHQnXSksXG4gICAgZGVzY3JpcHRpb246IHRvT3B0aW9uYWxTdHJpbmcoZGF0YVsnZGVzY3JpcHRpb24nXSkgPz8gJycsXG4gICAgc2lnbmF0dXJlOiB0b09wdGlvbmFsU3RyaW5nKGRhdGFbJ3NpZ25hdHVyZSddKSA/PyAnJyxcbiAgICB0aXRsZVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgaGFzaDogY29tcHV0ZU9nSGFzaChwYXJhbXMpLFxuICAgIHBhcmFtcyxcbiAgICBzbHVnOiBnZXRPZ0ltYWdlUGFnZVNsdWcoZGF0YSwgZmlsZVBhdGgsIGNvbnRlbnREb2NzRGlyZWN0b3J5KVxuICB9O1xufVxuXG5mdW5jdGlvbiB0b09wdGlvbmFsU3RyaW5nKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd2Fsa0RpcmVjdG9yeShkaXJlY3Rvcnk6IHN0cmluZywgY29udGVudERvY3NEaXJlY3Rvcnk6IHN0cmluZywgcGFnZXM6IFBhZ2VFbnRyeVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCByZWFkZGlyKGRpcmVjdG9yeSwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IGAke2RpcmVjdG9yeX0vJHtlbnRyeS5uYW1lfWA7XG4gICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGF3YWl0IHdhbGtEaXJlY3RvcnkoZnVsbFBhdGgsIGNvbnRlbnREb2NzRGlyZWN0b3J5LCBwYWdlcyk7XG4gICAgfSBlbHNlIGlmIChlbnRyeS5uYW1lLmVuZHNXaXRoKCcubWQnKSB8fCBlbnRyeS5uYW1lLmVuZHNXaXRoKCcubWR4JykpIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBwYXJzZVBhZ2UoZnVsbFBhdGgsIGNvbnRlbnREb2NzRGlyZWN0b3J5KTtcbiAgICAgIGlmIChwYWdlKSB7XG4gICAgICAgIHBhZ2VzLnB1c2gocGFnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLHlCQUEyQjtBQUMzQixxQkFBMkI7QUFDM0Isc0JBS087QUFDUCxtQkFBd0I7QUFDeEIsa0JBQW1DO0FBSW5DLDJCQUFtQztBQUNuQyxzQkFLTztBQXlEUCxNQUFNLGNBQWM7QUFDcEIsTUFBTSx3QkFBd0I7QUFDOUIsTUFBTSxrQkFBa0I7QUFNeEIsTUFBTSx1QkFBdUI7QUFVN0IsZUFBc0IsaUJBQWlCLFNBQWdEO0FBQ3JGLFFBQU0sRUFBRSxXQUFXLHNCQUFzQixhQUFhLGdCQUFnQixnQkFBZ0IsSUFBSTtBQUMxRixRQUFNLGVBQWUsR0FBRyxlQUFlO0FBRXZDLE1BQUksS0FBQywyQkFB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T0FBTyxDQUFDO0FBQ2pFLFNBQU8sT0FBTyxTQUFTLGFBQWEsWUFBWSxPQUFPLFNBQVMsVUFBVSxXQUN0RSxFQUFFLE9BQU8sU0FBUyxPQUFPLFVBQVUsU0FBUyxTQUFTLElBQ3JEO0FBQ047QUFFQSxTQUFTLGlCQUFpQixTQUFtRDtBQUMzRSxRQUFNLGNBQWMscUJBQXFCLEtBQUssT0FBTyxHQUFHLFNBQVMsYUFBYTtBQUM5RSxTQUFPLGdCQUFnQixTQUFZLENBQUMsUUFBSyxZQUFBQSxPQUFVLFdBQVcsS0FBaUQsQ0FBQztBQUNsSDtBQUVBLGVBQWUsVUFBVSxVQUFrQixzQkFBeUQ7QUFDbEcsUUFBTSxPQUFPLGlCQUFpQixVQUFNLDBCQUFTLFVBQVUsT0FBTyxDQUFDO0FBRS9ELFFBQU0sUUFBUSxpQkFBaUIsS0FBSyxPQUFPLENBQUM7QUFDNUMsTUFBSSxDQUFDLE9BQU87QUFDVixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sUUFBUSxLQUFLLFNBQVM7QUFDNUIsUUFBTSxTQUF3QjtBQUFBLElBQzVCLE9BQU8saUJBQWlCLFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQztBQUFBLElBQ2xELGFBQWEsaUJBQWlCLEtBQUssYUFBYSxDQUFDLEtBQUs7QUFBQSxJQUN0RCxXQUFXLGlCQUFpQixLQUFLLFdBQVcsQ0FBQyxLQUFLO0FBQUEsSUFDbEQ7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUFBLElBQ0wsVUFBTSwrQkFBYyxNQUFNO0FBQUEsSUFDMUI7QUFBQSxJQUNBLFVBQU0seUNBQW1CLE1BQU0sVUFBVSxvQkFBb0I7QUFBQSxFQUMvRDtBQUNGO0FBRUEsU0FBUyxpQkFBaUIsT0FBb0M7QUFDNUQsU0FBTyxPQUFPLFVBQVUsV0FBVyxRQUFRO0FBQzdDO0FBRUEsZUFBZSxjQUFjLFdBQW1CLHNCQUE4QixPQUFtQztBQUMvRyxRQUFNLFVBQVUsVUFBTSx5QkFBUSxXQUFXLEVBQUUsZUFBZSxLQUFLLENBQUM7QUFDaEUsYUFBVyxTQUFTLFNBQVM7QUFDM0IsVUFBTSxXQUFXLEdBQUcsU0FBUyxJQUFJLE1BQU0sSUFBSTtBQUMzQyxRQUFJLE1BQU0sWUFBWSxHQUFHO0FBQ3ZCLFlBQU0sY0FBYyxVQUFVLHNCQUFzQixLQUFLO0FBQUEsSUFDM0QsV0FBVyxNQUFNLEtBQUssU0FBUyxLQUFLLEtBQUssTUFBTSxLQUFLLFNBQVMsTUFBTSxHQUFHO0FBQ3BFLFlBQU0sT0FBTyxNQUFNLFVBQVUsVUFBVSxvQkFBb0I7QUFDM0QsVUFBSSxNQUFNO0FBQ1IsY0FBTSxLQUFLLElBQUk7QUFBQSxNQUNqQjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwibmFtZXMiOlsicGFyc2VZYW1sIl19
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb2NzLXNpdGUvb2ctaW1hZ2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBHZW5lcmF0ZXMgYW4gT3BlbiBHcmFwaCBjYXJkIGZvciBldmVyeSBkb2N1bWVudGF0aW9uIHBhZ2UsIHJldXNpbmcgdGhlIGNhcmRzIHdob3NlIGlucHV0cyBkaWQgbm90IGNoYW5nZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZvbnQgfSBmcm9tICdzYXRvcmknO1xuXG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgbWtkaXIsXG4gIHJlYWRkaXIsXG4gIHJlYWRGaWxlLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnbm9kZTpwYXRoL3Bvc2l4JztcbmltcG9ydCB7IHBhcnNlIGFzIHBhcnNlWWFtbCB9IGZyb20gJ3lhbWwnO1xuXG5pbXBvcnQgdHlwZSB7IE9nQ2FyZENvbnRlbnQgfSBmcm9tICcuL29nLWltYWdlLnRzJztcblxuaW1wb3J0IHsgZ2V0QnVsa0NvbmN1cnJlbmN5IH0gZnJvbSAnLi4vYnVsay1jb25jdXJyZW5jeS50cyc7XG5pbXBvcnQgeyBnZXRPZ0ltYWdlUGFnZVNsdWcgfSBmcm9tICcuL29nLWltYWdlLXBhZ2UudHMnO1xuaW1wb3J0IHtcbiAgY29tcHV0ZU9nSGFzaCxcbiAgbG9hZEZvbnRzLFxuICBsb2FkTG9nb0RhdGFVcmksXG4gIHJlbmRlck9nSW1hZ2Vcbn0gZnJvbSAnLi9vZy1pbWFnZS50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGdlbmVyYXRlT2dJbWFnZXN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlT2dJbWFnZXNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHRleHQgZXZlcnkgY2FyZCdzIGZvb3RlciBjYXJyaWVzLCBub3JtYWxseSB0aGUgcGFja2FnZSdzIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBicmFuZFRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvY3VtZW50YXRpb24gY29udGVudCByb290LCBub3JtYWxseSBgPGRvY3M+L3NyYy9jb250ZW50L2RvY3NgLiBFdmVyeSBgLm1kYCAvIGAubWR4YCBwYWdlIHVuZGVyIGl0IHdpdGggYVxuICAgKiBgdGl0bGVgIGdldHMgYSBjYXJkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudERvY3NEaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFNWRyBsb2dvIGRyYXduIG9uIGV2ZXJ5IGNhcmQuIEEgbWlzc2luZyBmaWxlIHJlbmRlcnMgdGhlIGNhcmRzIHdpdGhvdXQgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgZmF2aWNvblBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBob2xkaW5nIHRoZSBmb250cyB0aGUgY2FyZHMgYXJlIHJlbmRlcmVkIHdpdGguXG4gICAqL1xuICByZWFkb25seSBmb250c0RpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyIHRoZSBjYXJkcyBhcmUgd3JpdHRlbiB0bywgbm9ybWFsbHkgYDxkb2NzPi9wdWJsaWMvb2dgLCBzZXJ2ZWQgYXQgYDxiYXNlPi9vZy88c2x1Zz4ucG5nYC5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dERpcmVjdG9yeTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2FjaGVNYW5pZmVzdCB7XG4gIC8vIEVhY2ggcGFnZSdzIGNvbnRlbnQgaGFzaCwgYnkgc2x1Zy5cbiAgcmVhZG9ubHkgY2FyZHM6IENhcmRIYXNoZXM7XG4gIC8vIFRoZSBoYXNoIG9mIHRoZSBsb2dvIGV2ZXJ5IGNhcmQgY2Fycmllcy4gVGhlIHBhZ2UgaGFzaGVzIGNhbm5vdCBzZWUgaXQsIHNvIGEgZGlmZmVyZW50IGxvZ28gZHJvcHMgdGhlbSBhbGwuXG4gIHJlYWRvbmx5IGxvZ29IYXNoOiBzdHJpbmc7XG59XG5cbnR5cGUgQ2FyZEhhc2hlcyA9IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5cbmludGVyZmFjZSBHZW5lcmF0ZUltYWdlc1dpdGhQb29sT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJyYW5kVGV4dDogc3RyaW5nO1xuICByZWFkb25seSBjYXJkczogQ2FyZEhhc2hlcztcbiAgcmVhZG9ubHkgY2hhbmdlZFBhZ2VzOiBQYWdlRW50cnlbXTtcbiAgcmVhZG9ubHkgZm9udHM6IEZvbnRbXTtcbiAgcmVhZG9ubHkgbG9nb0RhdGFVcmk6IG51bGwgfCBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dERpcmVjdG9yeTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUGFnZUVudHJ5IHtcbiAgcmVhZG9ubHkgaGFzaDogc3RyaW5nO1xuICByZWFkb25seSBwYXJhbXM6IE9nQ2FyZENvbnRlbnQ7XG4gIHJlYWRvbmx5IHNsdWc6IHN0cmluZztcbn1cblxuY29uc3QgQ09OQ1VSUkVOQ1kgPSAxMDtcbmNvbnN0IFBST0dSRVNTX0xPR19JTlRFUlZBTCA9IDEwMDtcbmNvbnN0IE1BTklGRVNUX0lOREVOVCA9IDI7XG5cbi8vIEZyb250bWF0dGVyIGlzIHBhcnNlZCBoZXJlIHJhdGhlciB0aGFuIHdpdGggYGdyYXktbWF0dGVyYC4gSXRzIGBsaWIvZW5naW5lcy5qc2AgYmluZHMganMteWFtbCdzXG4vLyBgc2FmZUxvYWRgL2BzYWZlRHVtcGAgYXQgTU9EVUxFLUxPQUQgdGltZSwgYW5kIGJvdGggd2VyZSByZW1vdmVkIGluIGpzLXlhbWwgdjQg4oCUIHNvIG1lcmVseVxuLy8gSU1QT1JUSU5HIGBncmF5LW1hdHRlcmAgdGhyb3dzIGBDYW5ub3QgcmVhZCBwcm9wZXJ0aWVzIG9mIHVuZGVmaW5lZCAocmVhZGluZyAnYmluZCcpYCwgYmVmb3JlIGFuXG4vLyBgZW5naW5lc2Agb3B0aW9uIGNvdWxkIG92ZXJyaWRlIHRoZSBkZWZhdWx0LiBPbmx5IHRoZSBmcm9udG1hdHRlciBvYmplY3QgaXMgbmVlZGVkIGhlcmUuXG5jb25zdCBGUk9OVF9NQVRURVJfUkVHX0VYUCA9IC9eLS0tXFxyP1xcbig/PEZyb250TWF0dGVyPltcXHNcXFNdKj8pXFxyP1xcbi0tLSg/Olxccj9cXG58JCkvO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgT3BlbiBHcmFwaCBjYXJkcy5cbiAqXG4gKiBBIGNhcmQgaXMgcmUtcmVuZGVyZWQgb25seSB3aGVuIGl0cyB0aXRsZSwgZGVzY3JpcHRpb24sIHNpZ25hdHVyZSBvciBiYWRnZSBjaGFuZ2VkLCB0cmFja2VkIGJ5IGEgaGFzaCBtYW5pZmVzdFxuICogYmVzaWRlIHRoZSBjYXJkcy4gQSBkaWZmZXJlbnQgbG9nbyBmaWxlIHJlLXJlbmRlcnMgZXZlcnkgY2FyZC4gTWlzc2luZyBjb250ZW50IG9yIGZvbnRzIHNraXAgdGhlIHN0ZXAgd2l0aCBhIHdhcm5pbmcgcmF0aGVyIHRoYW4gZmFpbGluZyB0aGUgYnVpbGQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlT2dJbWFnZXMob3B0aW9uczogR2VuZXJhdGVPZ0ltYWdlc1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGJyYW5kVGV4dCwgY29udGVudERvY3NEaXJlY3RvcnksIGZhdmljb25QYXRoLCBmb250c0RpcmVjdG9yeSwgb3V0cHV0RGlyZWN0b3J5IH0gPSBvcHRpb25zO1xuICBjb25zdCBtYW5pZmVzdFBhdGggPSBgJHtvdXRwdXREaXJlY3Rvcnl9Ly5jYWNoZS1tYW5pZmVzdC5qc29uYDtcblxuICBpZiAoIWV4aXN0c1N5bmMoY29udGVudERvY3NEaXJlY3RvcnkpKSB7XG4gICAgY29uc29sZS53YXJuKGBPRyBpbWFnZXM6IGNvbnRlbnQgZGlyIG5vdCBmb3VuZCAoJHtjb250ZW50RG9jc0RpcmVjdG9yeX0pOyBza2lwcGluZy5gKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBMb2FkIGZvbnRzIGZpcnN0IOKAlCBzYXRvcmkgY2Fubm90IHJlbmRlciB3aXRob3V0IHRoZW0uXG4gIGNvbnN0IGZvbnRzID0gYXdhaXQgbG9hZEZvbnRzKGZvbnRzRGlyZWN0b3J5KTtcbiAgaWYgKCFmb250cykge1xuICAgIGNvbnNvbGUud2FybihgT0cgaW1hZ2VzOiBubyBmb250cyBhdmFpbGFibGUgaW4gJHtmb250c0RpcmVjdG9yeX07IHNraXBwaW5nIE9HIGltYWdlIGdlbmVyYXRpb24uYCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFnZXM6IFBhZ2VFbnRyeVtdID0gW107XG4gIGF3YWl0IHdhbGtEaXJlY3RvcnkoY29udGVudERvY3NEaXJlY3RvcnksIGNvbnRlbnREb2NzRGlyZWN0b3J5LCBwYWdlcyk7XG4gIGNvbnNvbGUud2FybihgT0cgaW1hZ2VzOiBmb3VuZCAke1N0cmluZyhwYWdlcy5sZW5ndGgpfSBwYWdlc2ApO1xuXG4gIGNvbnN0IGxvZ29IYXNoID0gYXdhaXQgY29tcHV0ZUxvZ29IYXNoKGZhdmljb25QYXRoKTtcbiAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBsb2FkQ2FjaGVNYW5pZmVzdChtYW5pZmVzdFBhdGgpO1xuICBjb25zdCBjYXJkcyA9IG1hbmlmZXN0Py5sb2dvSGFzaCA9PT0gbG9nb0hhc2ggPyB7IC4uLm1hbmlmZXN0LmNhcmRzIH0gOiB7fTtcbiAgY29uc3QgY2hhbmdlZFBhZ2VzID0gcGFnZXMuZmlsdGVyKChwYWdlKSA9PiBjYXJkc1twYWdlLnNsdWddICE9PSBwYWdlLmhhc2gpO1xuICBjb25zb2xlLndhcm4oYE9HIGltYWdlczogJHtTdHJpbmcoY2hhbmdlZFBhZ2VzLmxlbmd0aCl9IGNoYW5nZWQgLyAke1N0cmluZyhwYWdlcy5sZW5ndGgpfSB0b3RhbGApO1xuXG4gIGlmIChjaGFuZ2VkUGFnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgY29uc29sZS53YXJuKCdBbGwgT0cgaW1hZ2VzIHVwIHRvIGRhdGUuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gUmFzdGVyaXplIHRoZSBzaXRlIGxvZ28gb25jZSAoc2hhcmVkIGFjcm9zcyBldmVyeSBjYXJkKTsgZGVncmFkZSBncmFjZWZ1bGx5IGlmIGFic2VudC5cbiAgY29uc3QgbG9nb0RhdGFVcmkgPSBhd2FpdCBsb2FkTG9nb0RhdGFVcmkoZmF2aWNvblBhdGgpO1xuICBpZiAoIWxvZ29EYXRhVXJpKSB7XG4gICAgY29uc29sZS53YXJuKGBPRyBpbWFnZXM6IGZhdmljb24gbm90IGZvdW5kICgke2Zhdmljb25QYXRofSk7IHJlbmRlcmluZyBjYXJkcyB3aXRob3V0IGEgbG9nby5gKTtcbiAgfVxuXG4gIGF3YWl0IGdlbmVyYXRlSW1hZ2VzV2l0aFBvb2woeyBicmFuZFRleHQsIGNhcmRzLCBjaGFuZ2VkUGFnZXMsIGZvbnRzLCBsb2dvRGF0YVVyaSwgb3V0cHV0RGlyZWN0b3J5IH0pO1xuXG4gIGNvbnN0IG5ld01hbmlmZXN0OiBDYWNoZU1hbmlmZXN0ID0geyBjYXJkcywgbG9nb0hhc2ggfTtcbiAgYXdhaXQgbWtkaXIoZGlybmFtZShtYW5pZmVzdFBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgYXdhaXQgd3JpdGVGaWxlKG1hbmlmZXN0UGF0aCwgSlNPTi5zdHJpbmdpZnkobmV3TWFuaWZlc3QsIG51bGwsIE1BTklGRVNUX0lOREVOVCkpO1xuICBjb25zb2xlLndhcm4oYE9HIGltYWdlczogZG9uZS4gR2VuZXJhdGVkICR7U3RyaW5nKGNoYW5nZWRQYWdlcy5sZW5ndGgpfSBpbWFnZXMuYCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVMb2dvSGFzaChmYXZpY29uUGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGV4aXN0c1N5bmMoZmF2aWNvblBhdGgpID8gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGF3YWl0IHJlYWRGaWxlKGZhdmljb25QYXRoKSkuZGlnZXN0KCdoZXgnKSA6ICcnO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUltYWdlc1dpdGhQb29sKG9wdGlvbnM6IEdlbmVyYXRlSW1hZ2VzV2l0aFBvb2xPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYnJhbmRUZXh0LCBjYXJkcywgY2hhbmdlZFBhZ2VzLCBmb250cywgbG9nb0RhdGFVcmksIG91dHB1dERpcmVjdG9yeSB9ID0gb3B0aW9ucztcbiAgbGV0IGNvbXBsZXRlZCA9IDA7XG4gIGxldCBpbmRleCA9IDA7XG5cbiAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc05leHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChsZXQgcGFnZSA9IGNoYW5nZWRQYWdlc1tpbmRleCsrXTsgcGFnZSAhPT0gdW5kZWZpbmVkOyBwYWdlID0gY2hhbmdlZFBhZ2VzW2luZGV4KytdKSB7XG4gICAgICBjb25zdCBvdXRwdXRQYXRoID0gYCR7b3V0cHV0RGlyZWN0b3J5fS8ke3BhZ2Uuc2x1Z30ucG5nYDtcbiAgICAgIGF3YWl0IG1rZGlyKGRpcm5hbWUob3V0cHV0UGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKG91dHB1dFBhdGgsIGF3YWl0IHJlbmRlck9nSW1hZ2UocGFnZS5wYXJhbXMsIHsgYnJhbmRUZXh0LCBmb250cywgbG9nb0RhdGFVcmkgfSkpO1xuICAgICAgY2FyZHNbcGFnZS5zbHVnXSA9IHBhZ2UuaGFzaDtcbiAgICAgIGNvbXBsZXRlZCsrO1xuICAgICAgaWYgKGNvbXBsZXRlZCAlIFBST0dSRVNTX0xPR19JTlRFUlZBTCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLndhcm4oYCAgJHtTdHJpbmcoY29tcGxldGVkKX0vJHtTdHJpbmcoY2hhbmdlZFBhZ2VzLmxlbmd0aCl9IGltYWdlcyBnZW5lcmF0ZWQuLi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChBcnJheS5mcm9tKHsgbGVuZ3RoOiBnZXRCdWxrQ29uY3VycmVuY3koQ09OQ1VSUkVOQ1kpIH0sIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBwcm9jZXNzTmV4dCgpO1xuICB9KSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRDYWNoZU1hbmlmZXN0KG1hbmlmZXN0UGF0aDogc3RyaW5nKTogUHJvbWlzZTxDYWNoZU1hbmlmZXN0IHwgbnVsbD4ge1xuICBpZiAoIWV4aXN0c1N5bmMobWFuaWZlc3RQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIEEgbWFuaWZlc3Qgd3JpdHRlbiBiZWZvcmUgdGhlIGxvZ28gd2FzIHRyYWNrZWQgaXMgYSBmbGF0IHNsdWctdG8taGFzaCBtYXA6IGl0IGhhcyBubyBgbG9nb0hhc2hgLCBzbyBldmVyeSBjYXJkXG4gIC8vIHJlLXJlbmRlcnMgb25jZS5cbiAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKG1hbmlmZXN0UGF0aCwgJ3V0Zi04JykpIGFzIFBhcnRpYWw8Q2FjaGVNYW5pZmVzdD47XG4gIHJldHVybiB0eXBlb2YgbWFuaWZlc3QubG9nb0hhc2ggPT09ICdzdHJpbmcnICYmIHR5cGVvZiBtYW5pZmVzdC5jYXJkcyA9PT0gJ29iamVjdCdcbiAgICA/IHsgY2FyZHM6IG1hbmlmZXN0LmNhcmRzLCBsb2dvSGFzaDogbWFuaWZlc3QubG9nb0hhc2ggfVxuICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcGFyc2VGcm9udE1hdHRlcihjb250ZW50OiBzdHJpbmcpOiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0IGZyb250TWF0dGVyID0gRlJPTlRfTUFUVEVSX1JFR19FWFAuZXhlYyhjb250ZW50KT8uZ3JvdXBzPy5bJ0Zyb250TWF0dGVyJ107XG4gIHJldHVybiBmcm9udE1hdHRlciA9PT0gdW5kZWZpbmVkID8ge30gOiAocGFyc2VZYW1sKGZyb250TWF0dGVyKSBhcyBudWxsIHwgUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pID8/IHt9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZVBhZ2UoZmlsZVBhdGg6IHN0cmluZywgY29udGVudERvY3NEaXJlY3Rvcnk6IHN0cmluZyk6IFByb21pc2U8bnVsbCB8IFBhZ2VFbnRyeT4ge1xuICBjb25zdCBkYXRhID0gcGFyc2VGcm9udE1hdHRlcihhd2FpdCByZWFkRmlsZShmaWxlUGF0aCwgJ3V0Zi04JykpO1xuXG4gIGNvbnN0IHRpdGxlID0gdG9PcHRpb25hbFN0cmluZyhkYXRhWyd0aXRsZSddKTtcbiAgaWYgKCF0aXRsZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYmFkZ2UgPSBkYXRhWydzaWRlYmFyJ10gYXMgUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4+IHwgdW5kZWZpbmVkO1xuICBjb25zdCBwYXJhbXM6IE9nQ2FyZENvbnRlbnQgPSB7XG4gICAgYmFkZ2U6IHRvT3B0aW9uYWxTdHJpbmcoYmFkZ2U/LlsnYmFkZ2UnXT8uWyd0ZXh0J10pLFxuICAgIGRlc2NyaXB0aW9uOiB0b09wdGlvbmFsU3RyaW5nKGRhdGFbJ2Rlc2NyaXB0aW9uJ10pID8/ICcnLFxuICAgIHNpZ25hdHVyZTogdG9PcHRpb25hbFN0cmluZyhkYXRhWydzaWduYXR1cmUnXSkgPz8gJycsXG4gICAgdGl0bGVcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGhhc2g6IGNvbXB1dGVPZ0hhc2gocGFyYW1zKSxcbiAgICBwYXJhbXMsXG4gICAgc2x1ZzogZ2V0T2dJbWFnZVBhZ2VTbHVnKGRhdGEsIGZpbGVQYXRoLCBjb250ZW50RG9jc0RpcmVjdG9yeSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gdG9PcHRpb25hbFN0cmluZyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhbGtEaXJlY3RvcnkoZGlyZWN0b3J5OiBzdHJpbmcsIGNvbnRlbnREb2NzRGlyZWN0b3J5OiBzdHJpbmcsIHBhZ2VzOiBQYWdlRW50cnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgcmVhZGRpcihkaXJlY3RvcnksIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBgJHtkaXJlY3Rvcnl9LyR7ZW50cnkubmFtZX1gO1xuICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBhd2FpdCB3YWxrRGlyZWN0b3J5KGZ1bGxQYXRoLCBjb250ZW50RG9jc0RpcmVjdG9yeSwgcGFnZXMpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkubmFtZS5lbmRzV2l0aCgnLm1kJykgfHwgZW50cnkubmFtZS5lbmRzV2l0aCgnLm1keCcpKSB7XG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgcGFyc2VQYWdlKGZ1bGxQYXRoLCBjb250ZW50RG9jc0RpcmVjdG9yeSk7XG4gICAgICBpZiAocGFnZSkge1xuICAgICAgICBwYWdlcy5wdXNoKHBhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSx5QkFBMkI7QUFDM0IscUJBQTJCO0FBQzNCLHNCQUtPO0FBQ1AsbUJBQXdCO0FBQ3hCLGtCQUFtQztBQUluQyw4QkFBbUM7QUFDbkMsMkJBQW1DO0FBQ25DLHNCQUtPO0FBeURQLE1BQU0sY0FBYztBQUNwQixNQUFNLHdCQUF3QjtBQUM5QixNQUFNLGtCQUFrQjtBQU14QixNQUFNLHVCQUF1QjtBQVU3QixlQUFzQixpQkFBaUIsU0FBZ0Q7QUFD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