@mnaoumov/obsidian-dev-toolkit 1.0.0 → 2.0.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 (228) hide show
  1. package/README.md +9 -1
  2. package/dist/demo-vault-helper/main.js +678 -18
  3. package/dist/integration-test-plugin/main.js +12075 -3087
  4. package/dist/integration-test-plugin/manifest.json +2 -2
  5. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +6 -38
  6. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +1 -1
  7. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +5 -37
  8. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.d.cts +1 -1
  9. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +5 -37
  10. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +1 -1
  11. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +7 -66
  12. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -1
  13. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -39
  14. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
  15. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +5 -37
  16. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
  17. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +5 -37
  18. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
  19. package/dist/lib/cjs/bundlers/esbuild.cjs +1 -60
  20. package/dist/lib/cjs/bundlers/esbuild.d.cts +1 -1
  21. package/dist/lib/cjs/bundlers/index.cjs +3 -62
  22. package/dist/lib/cjs/bundlers/index.d.cts +1 -1
  23. package/dist/lib/cjs/demo-vault-app-json.cjs +5 -37
  24. package/dist/lib/cjs/demo-vault-app-json.d.cts +1 -1
  25. package/dist/lib/cjs/demo-vault-buttons.cjs +6 -38
  26. package/dist/lib/cjs/demo-vault-buttons.d.cts +8 -8
  27. package/dist/lib/cjs/demo-vault-coverage.cjs +7 -38
  28. package/dist/lib/cjs/demo-vault-coverage.d.cts +1 -1
  29. package/dist/lib/cjs/demo-vault.cjs +6 -38
  30. package/dist/lib/cjs/demo-vault.d.cts +1 -1
  31. package/dist/lib/cjs/formatters/dprint.cjs +5 -37
  32. package/dist/lib/cjs/formatters/dprint.d.cts +1 -1
  33. package/dist/lib/cjs/formatters/index.cjs +2 -61
  34. package/dist/lib/cjs/formatters/index.d.cts +1 -1
  35. package/dist/lib/cjs/index.cjs +12 -71
  36. package/dist/lib/cjs/integration-test-setup.cjs +1 -60
  37. package/dist/lib/cjs/integration-test-setup.d.cts +5 -5
  38. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +6 -38
  39. package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +7 -7
  40. package/dist/lib/cjs/jest-setup.cjs +5 -37
  41. package/dist/lib/cjs/jest-setup.d.cts +1 -1
  42. package/dist/lib/cjs/library-references.d.cts +2 -0
  43. package/dist/lib/cjs/linters/eslint-config.cjs +71 -49
  44. package/dist/lib/cjs/linters/eslint-config.d.cts +1 -1
  45. package/dist/lib/cjs/linters/eslint-rules/index.cjs +26 -73
  46. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +6 -2
  47. package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -60
  48. package/dist/lib/cjs/linters/eslint-rules/manifest-description.d.cts +1 -1
  49. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +6 -38
  50. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.d.cts +1 -1
  51. package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -60
  52. package/dist/lib/cjs/linters/eslint-rules/manifest-id.d.cts +1 -1
  53. package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -60
  54. package/dist/lib/cjs/linters/eslint-rules/manifest-name.d.cts +1 -1
  55. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -60
  56. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.d.cts +1 -1
  57. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +240 -0
  58. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.d.cts +10 -0
  59. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +5 -37
  60. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.cts +1 -1
  61. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +5 -37
  62. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.d.cts +1 -1
  63. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.cjs +136 -0
  64. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.cts +16 -0
  65. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +217 -0
  66. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.d.cts +30 -0
  67. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +169 -0
  68. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.d.cts +29 -0
  69. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +5 -37
  70. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.d.cts +1 -1
  71. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +287 -0
  72. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.d.cts +10 -0
  73. package/dist/lib/cjs/linters/eslint.cjs +5 -37
  74. package/dist/lib/cjs/linters/eslint.d.cts +1 -1
  75. package/dist/lib/cjs/linters/index.cjs +17 -67
  76. package/dist/lib/cjs/linters/index.d.cts +4 -1
  77. package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +152 -0
  78. package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +12 -0
  79. package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +118 -0
  80. package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
  81. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +200 -0
  82. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.d.cts +32 -0
  83. package/dist/lib/cjs/linters/markdownlint.cjs +5 -37
  84. package/dist/lib/cjs/linters/markdownlint.d.cts +1 -1
  85. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -60
  86. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +1 -1
  87. package/dist/lib/cjs/linters/plugin-names.cjs +203 -0
  88. package/dist/lib/cjs/linters/plugin-names.d.cts +81 -0
  89. package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -60
  90. package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +1 -1
  91. package/dist/lib/cjs/setup.cjs +5 -37
  92. package/dist/lib/cjs/setup.d.cts +1 -1
  93. package/dist/lib/cjs/templates.cjs +5 -37
  94. package/dist/lib/cjs/templates.d.cts +1 -1
  95. package/dist/lib/cjs/test-runners/index.cjs +4 -63
  96. package/dist/lib/cjs/test-runners/index.d.cts +1 -1
  97. package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +12 -44
  98. package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +5 -5
  99. package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +1 -60
  100. package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +1 -1
  101. package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +5 -37
  102. package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +1 -1
  103. package/dist/lib/cjs/test-runners/vitest-config.cjs +9 -41
  104. package/dist/lib/cjs/test-runners/vitest-config.d.cts +2 -3
  105. package/dist/lib/cjs/version.cjs +5 -37
  106. package/dist/lib/cjs/version.d.cts +1 -1
  107. package/dist/lib/cjs/vitest-setup.cjs +5 -37
  108. package/dist/lib/cjs/vitest-setup.d.cts +1 -1
  109. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +1 -1
  110. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +5 -22
  111. package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +1 -1
  112. package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +5 -22
  113. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +1 -1
  114. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +5 -22
  115. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -1
  116. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +1 -45
  117. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +1 -1
  118. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +5 -22
  119. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
  120. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +5 -22
  121. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.d.mts +1 -1
  122. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.mjs +5 -22
  123. package/dist/lib/esm/bundlers/esbuild.d.mts +1 -1
  124. package/dist/lib/esm/bundlers/esbuild.mjs +1 -45
  125. package/dist/lib/esm/bundlers/index.d.mts +1 -1
  126. package/dist/lib/esm/bundlers/index.mjs +1 -45
  127. package/dist/lib/esm/demo-vault-app-json.d.mts +1 -1
  128. package/dist/lib/esm/demo-vault-app-json.mjs +5 -22
  129. package/dist/lib/esm/demo-vault-buttons.d.mts +8 -8
  130. package/dist/lib/esm/demo-vault-buttons.mjs +5 -22
  131. package/dist/lib/esm/demo-vault-coverage.d.mts +1 -1
  132. package/dist/lib/esm/demo-vault-coverage.mjs +7 -23
  133. package/dist/lib/esm/demo-vault.d.mts +1 -1
  134. package/dist/lib/esm/demo-vault.mjs +6 -23
  135. package/dist/lib/esm/formatters/dprint.d.mts +1 -1
  136. package/dist/lib/esm/formatters/dprint.mjs +5 -22
  137. package/dist/lib/esm/formatters/index.d.mts +1 -1
  138. package/dist/lib/esm/formatters/index.mjs +1 -45
  139. package/dist/lib/esm/index.mjs +1 -45
  140. package/dist/lib/esm/integration-test-setup.d.mts +5 -5
  141. package/dist/lib/esm/integration-test-setup.mjs +1 -45
  142. package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +7 -7
  143. package/dist/lib/esm/integration-test-vitest-global-setup.mjs +7 -24
  144. package/dist/lib/esm/jest-setup.d.mts +1 -1
  145. package/dist/lib/esm/jest-setup.mjs +5 -22
  146. package/dist/lib/esm/library-references.d.mts +2 -0
  147. package/dist/lib/esm/linters/eslint-config.d.mts +1 -1
  148. package/dist/lib/esm/linters/eslint-config.mjs +70 -33
  149. package/dist/lib/esm/linters/eslint-rules/index.d.mts +6 -2
  150. package/dist/lib/esm/linters/eslint-rules/index.mjs +12 -48
  151. package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +1 -1
  152. package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +1 -45
  153. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +1 -1
  154. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +5 -22
  155. package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +1 -1
  156. package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +1 -45
  157. package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +1 -1
  158. package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +1 -45
  159. package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +1 -1
  160. package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +1 -45
  161. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.d.mts +10 -0
  162. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.mjs +141 -0
  163. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.mts +1 -1
  164. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +5 -22
  165. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.d.mts +1 -1
  166. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.mjs +5 -22
  167. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.mts +16 -0
  168. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.mjs +37 -0
  169. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.d.mts +30 -0
  170. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.mjs +121 -0
  171. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.d.mts +29 -0
  172. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.mjs +72 -0
  173. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.d.mts +1 -1
  174. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.mjs +5 -22
  175. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.d.mts +10 -0
  176. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.mjs +188 -0
  177. package/dist/lib/esm/linters/eslint.d.mts +1 -1
  178. package/dist/lib/esm/linters/eslint.mjs +5 -22
  179. package/dist/lib/esm/linters/index.d.mts +4 -1
  180. package/dist/lib/esm/linters/index.mjs +8 -46
  181. package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +12 -0
  182. package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +57 -0
  183. package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
  184. package/dist/lib/esm/linters/markdownlint-rules/index.mjs +10 -0
  185. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.d.mts +32 -0
  186. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.mjs +94 -0
  187. package/dist/lib/esm/linters/markdownlint.d.mts +1 -1
  188. package/dist/lib/esm/linters/markdownlint.mjs +5 -22
  189. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +1 -1
  190. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +1 -45
  191. package/dist/lib/esm/linters/plugin-names.d.mts +81 -0
  192. package/dist/lib/esm/linters/plugin-names.mjs +105 -0
  193. package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +1 -1
  194. package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +1 -45
  195. package/dist/lib/esm/setup.d.mts +1 -1
  196. package/dist/lib/esm/setup.mjs +5 -22
  197. package/dist/lib/esm/templates.d.mts +1 -1
  198. package/dist/lib/esm/templates.mjs +5 -22
  199. package/dist/lib/esm/test-runners/index.d.mts +1 -1
  200. package/dist/lib/esm/test-runners/index.mjs +1 -45
  201. package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +5 -5
  202. package/dist/lib/esm/test-runners/integration-test-plugin.mjs +11 -28
  203. package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +1 -1
  204. package/dist/lib/esm/test-runners/performance-eval-cap.mjs +1 -45
  205. package/dist/lib/esm/test-runners/stale-build-global-setup.d.mts +1 -1
  206. package/dist/lib/esm/test-runners/stale-build-global-setup.mjs +5 -22
  207. package/dist/lib/esm/test-runners/vitest-config.d.mts +2 -3
  208. package/dist/lib/esm/test-runners/vitest-config.mjs +8 -25
  209. package/dist/lib/esm/version.d.mts +1 -1
  210. package/dist/lib/esm/version.mjs +5 -22
  211. package/dist/lib/esm/vitest-setup.d.mts +1 -1
  212. package/dist/lib/esm/vitest-setup.mjs +5 -22
  213. package/dist/templates/scripts/markdownlint-cli2-config.ts +2 -2
  214. package/linters/eslint-rules/no-local-obsidian-internals/package.json +6 -0
  215. package/linters/eslint-rules/{obsidian-dev-utils-plugin → obsidian-dev-toolkit-plugin}/package.json +3 -3
  216. package/linters/eslint-rules/plugin-name-as-code/package.json +6 -0
  217. package/linters/eslint-rules/plugin-name-as-code-in-ui/package.json +6 -0
  218. package/linters/eslint-rules/require-plugin-api-contract-schemas/package.json +6 -0
  219. package/linters/markdownlint-cli2-config/package.json +6 -0
  220. package/linters/markdownlint-rules/index/package.json +6 -0
  221. package/linters/markdownlint-rules/package.json +6 -0
  222. package/linters/markdownlint-rules/plugin-name-as-code/package.json +6 -0
  223. package/linters/plugin-names/package.json +6 -0
  224. package/package.json +86 -25
  225. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +0 -186
  226. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +0 -13
  227. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +0 -13
  228. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +0 -73
@@ -2,49 +2,32 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
15
9
  cwd() {
16
- return '/';
10
+ return "/";
17
11
  },
18
12
  env: {},
19
- platform: 'android'
13
+ platform: "android"
20
14
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
15
  const existingProcess = globalThis.process;
24
-
25
16
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
17
  globalThis.process = browserProcess;
28
18
  return;
29
19
  }
30
-
31
20
  if (existingProcess.versions?.node) {
32
21
  return;
33
22
  }
34
-
35
23
  const existingProcessRecord = existingProcess;
36
-
37
24
  for (const [key, value] of Object.entries(browserProcess)) {
38
25
  existingProcessRecord[key] ??= value;
39
26
  }
40
-
41
- existingProcessRecord['browser'] = true;
27
+ existingProcessRecord["browser"] = true;
42
28
  }
43
29
 
44
- (function initEsm() {
45
- ensureDisposeSymbols();
46
- ensureBrowserProcess();
47
- })();
30
+ ensureBrowserProcess();
48
31
  })();
49
32
 
50
33
  import {
@@ -58,4 +41,4 @@ setup({
58
41
  afterEach,
59
42
  beforeEach
60
43
  });
61
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2plc3Qtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBKZXN0IHNldHVwIGZpbGUgZm9yIE9ic2lkaWFuIHBsdWdpbnMgYnVpbHQgb24gYEBtbmFvdW1vdi9vYnNpZGlhbi1saWJgLlxuICpcbiAqIEFkZCBpdCB0byB5b3VyIEplc3QgY29uZmlnJ3MgYHNldHVwRmlsZXNBZnRlckVhY2hgIChvciBpbXBvcnQgaXQgZnJvbSBhbm90aGVyIHNldHVwIGZpbGUpLiBCZWZvcmVcbiAqIGVhY2ggdGVzdCBpdCByZXNldHMgdGhlIGdlbmVyaWMgc2hhcmVkLXN0YXRlIHNsb3QsIHRoZSBgX19vYnNpZGlhbkRldlV0aWxzYCBiYWcgYW5kIHRoZSBsaWJyYXJ5IGNvbnRleHRzLCBhbmQgZW5hYmxlcyBhc3luYy1vcGVyYXRpb24gdHJhY2tpbmc7IGFmdGVyIGVhY2ggdGVzdCBpdFxuICogZGlzYWJsZXMgdHJhY2tpbmcsIHNvIHRlc3RzIGNhbiBgYXdhaXQgd2FpdEZvckFsbEFzeW5jT3BlcmF0aW9ucygpYCBhZ2FpbnN0IGlzb2xhdGVkIHN0YXRlLlxuICpcbiAqIFRoaXMgaXMgYSBwZXItdGVzdCBzZXR1cCBmaWxlLCBub3QgYSBKZXN0IGBnbG9iYWxTZXR1cGAgbW9kdWxlLCBzbyBpdCBoYXMgbm8gZGVmYXVsdCBleHBvcnQuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoaW4gSmVzdCBzZXR1cC1maWxlIGdsdWU7IHNldHVwIGlzIHVuaXQtdGVzdGVkIHNlcGFyYXRlbHkuICovXG5pbXBvcnQge1xuICBhZnRlckFsbCxcbiAgYWZ0ZXJFYWNoLFxuICBiZWZvcmVFYWNoXG59IGZyb20gJ0BqZXN0L2dsb2JhbHMnO1xuXG5pbXBvcnQgeyBzZXR1cCB9IGZyb20gJy4vc2V0dXAudHMnO1xuXG5zZXR1cCh7XG4gIGFmdGVyQWxsLFxuICBhZnRlckVhY2gsXG4gIGJlZm9yZUVhY2hcbn0pO1xuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLGFBQWE7QUFFdEIsTUFBTTtBQUFBLEVBQ0o7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qZXN0LXNldHVwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBKZXN0IHNldHVwIGZpbGUgZm9yIE9ic2lkaWFuIHBsdWdpbnMgYnVpbHQgb24gYEBtbmFvdW1vdi9vYnNpZGlhbi1saWJgLlxuICpcbiAqIEFkZCBpdCB0byB5b3VyIEplc3QgY29uZmlnJ3MgYHNldHVwRmlsZXNBZnRlckVhY2hgIChvciBpbXBvcnQgaXQgZnJvbSBhbm90aGVyIHNldHVwIGZpbGUpLiBCZWZvcmVcbiAqIGVhY2ggdGVzdCBpdCByZXNldHMgdGhlIGdlbmVyaWMgc2hhcmVkLXN0YXRlIHNsb3QsIHRoZSBgX19vYnNpZGlhbkRldlV0aWxzYCBiYWcgYW5kIHRoZSBsaWJyYXJ5IGNvbnRleHRzLCBhbmQgZW5hYmxlcyBhc3luYy1vcGVyYXRpb24gdHJhY2tpbmc7IGFmdGVyIGVhY2ggdGVzdCBpdFxuICogZGlzYWJsZXMgdHJhY2tpbmcsIHNvIHRlc3RzIGNhbiBgYXdhaXQgd2FpdEZvckFsbEFzeW5jT3BlcmF0aW9ucygpYCBhZ2FpbnN0IGlzb2xhdGVkIHN0YXRlLlxuICpcbiAqIFRoaXMgaXMgYSBwZXItdGVzdCBzZXR1cCBmaWxlLCBub3QgYSBKZXN0IGBnbG9iYWxTZXR1cGAgbW9kdWxlLCBzbyBpdCBoYXMgbm8gZGVmYXVsdCBleHBvcnQuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoaW4gSmVzdCBzZXR1cC1maWxlIGdsdWU7IHNldHVwIGlzIHVuaXQtdGVzdGVkIHNlcGFyYXRlbHkuICovXG5pbXBvcnQge1xuICBhZnRlckFsbCxcbiAgYWZ0ZXJFYWNoLFxuICBiZWZvcmVFYWNoXG59IGZyb20gJ0BqZXN0L2dsb2JhbHMnO1xuXG5pbXBvcnQgeyBzZXR1cCB9IGZyb20gJy4vc2V0dXAudHMnO1xuXG5zZXR1cCh7XG4gIGFmdGVyQWxsLFxuICBhZnRlckVhY2gsXG4gIGJlZm9yZUVhY2hcbn0pO1xuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLGFBQWE7QUFFdEIsTUFBTTtBQUFBLEVBQ0o7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7IiwibmFtZXMiOltdfQ==
@@ -0,0 +1,2 @@
1
+ /// <reference lib="es2022" />
2
+ /// <reference lib="esnext.disposable" />
@@ -1,4 +1,4 @@
1
- /// <reference path="../index.d.mts" />
1
+ /// <reference path="../library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,49 +2,32 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
15
9
  cwd() {
16
- return '/';
10
+ return "/";
17
11
  },
18
12
  env: {},
19
- platform: 'android'
13
+ platform: "android"
20
14
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
15
  const existingProcess = globalThis.process;
24
-
25
16
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
17
  globalThis.process = browserProcess;
28
18
  return;
29
19
  }
30
-
31
20
  if (existingProcess.versions?.node) {
32
21
  return;
33
22
  }
34
-
35
23
  const existingProcessRecord = existingProcess;
36
-
37
24
  for (const [key, value] of Object.entries(browserProcess)) {
38
25
  existingProcessRecord[key] ??= value;
39
26
  }
40
-
41
- existingProcessRecord['browser'] = true;
27
+ existingProcessRecord["browser"] = true;
42
28
  }
43
29
 
44
- (function initEsm() {
45
- ensureDisposeSymbols();
46
- ensureBrowserProcess();
47
- })();
30
+ ensureBrowserProcess();
48
31
  })();
49
32
 
50
33
  import {
@@ -60,7 +43,7 @@ import { PlainTextParser } from "eslint-plugin-obsidianmd/dist/lib/plainTextPars
60
43
  import { defineConfig } from "eslint/config";
61
44
  import { ObsidianPluginRepoPaths } from "../obsidian-plugin-repo-paths.mjs";
62
45
  import { jsonPlugin } from "./eslint-rules/manifest-helpers.mjs";
63
- import { obsidianDevUtilsPlugin } from "./eslint-rules/obsidian-dev-utils-plugin.mjs";
46
+ import { obsidianDevToolkitPlugin } from "./eslint-rules/obsidian-dev-toolkit-plugin.mjs";
64
47
  import { stripOwnedRuleCustomMessageEntries } from "./obsidianmd-rule-custom-message.mjs";
65
48
  const MINIMUM_NODE_VERSION = ">=16.16.0";
66
49
  function defineEslintConfigs(options = {}) {
@@ -72,7 +55,7 @@ function defineEslintConfigs(options = {}) {
72
55
  return defineConfig(
73
56
  ...getGlobalIgnoreConfigs(),
74
57
  ...getObsidianLintConfigs(context),
75
- ...getTypeScriptEslintConfigs({ context, inHousePlugin: obsidianDevUtilsPlugin, minimumNodeVersion: MINIMUM_NODE_VERSION }),
58
+ ...getTypeScriptEslintConfigs({ context, minimumNodeVersion: MINIMUM_NODE_VERSION }),
76
59
  ...getObsidianOverrideConfigs(context),
77
60
  ...getNodeBuiltinsConfigs(context),
78
61
  ...getIntegrationTestConfigs(context),
@@ -98,8 +81,11 @@ function getIntegrationTestConfigs(context) {
98
81
  * thing a `*.cross-platform.*` file has always had to do.
99
82
  */
100
83
  files: context.sourceFolders.map((sourceFolder) => join(sourceFolder, ObsidianPluginRepoPaths.AnyPath, ObsidianPluginRepoPaths.AnyIntegrationTestTs)),
84
+ plugins: {
85
+ "obsidian-dev-toolkit": obsidianDevToolkitPlugin
86
+ },
101
87
  rules: {
102
- "obsidian-dev-utils/no-untrusted-input-events": "error"
88
+ "obsidian-dev-toolkit/no-untrusted-input-events": "error"
103
89
  }
104
90
  }
105
91
  ]);
@@ -127,13 +113,13 @@ function getManifestConfigs() {
127
113
  language: "json/json",
128
114
  plugins: {
129
115
  "json": jsonPlugin,
130
- "obsidian-dev-utils": obsidianDevUtilsPlugin
116
+ "obsidian-dev-toolkit": obsidianDevToolkitPlugin
131
117
  },
132
118
  rules: {
133
- "obsidian-dev-utils/manifest-description": "error",
134
- "obsidian-dev-utils/manifest-id": "error",
135
- "obsidian-dev-utils/manifest-name": "error",
136
- "obsidian-dev-utils/manifest-schema": "error"
119
+ "obsidian-dev-toolkit/manifest-description": "error",
120
+ "obsidian-dev-toolkit/manifest-id": "error",
121
+ "obsidian-dev-toolkit/manifest-name": "error",
122
+ "obsidian-dev-toolkit/manifest-schema": "error"
137
123
  }
138
124
  }
139
125
  ]);
@@ -210,7 +196,7 @@ function getObsidianOverrideConfigs(context) {
210
196
  {
211
197
  files: context.allFiles(),
212
198
  plugins: {
213
- "obsidian-dev-utils": obsidianDevUtilsPlugin
199
+ "obsidian-dev-toolkit": obsidianDevToolkitPlugin
214
200
  },
215
201
  rules: {
216
202
  /*
@@ -220,8 +206,8 @@ function getObsidianOverrideConfigs(context) {
220
206
  * a real Obsidian outside a test (`demo-vault-buttons.ts`) is under the same transport cap and would
221
207
  * otherwise be enforced nowhere.
222
208
  */
223
- "obsidian-dev-utils/no-over-cap-wait-in-eval-in-obsidian": "error",
224
- "obsidian-dev-utils/require-component-suffix": "error",
209
+ "obsidian-dev-toolkit/no-over-cap-wait-in-eval-in-obsidian": "error",
210
+ "obsidian-dev-toolkit/require-component-suffix": "error",
225
211
  /*
226
212
  * Obsidian's `Component` has its own `removeChild(component)` for the component lifecycle, unrelated
227
213
  * to `Node#removeChild`. The rule matches on the method name alone, so every report here is a
@@ -237,6 +223,57 @@ function getObsidianOverrideConfigs(context) {
237
223
  */
238
224
  "unicorn/prefer-global-this": "off"
239
225
  }
226
+ },
227
+ {
228
+ /*
229
+ * Obsidian's internal API is typed in `obsidian-typings`, so a `declare module 'obsidian'` augmentation in
230
+ * shipped source may carry only the plugin's own custom-event overloads. Tests are exempt: a mock shape or a
231
+ * harness global never ships.
232
+ */
233
+ files: context.sourceFiles,
234
+ ignores: context.testFiles,
235
+ plugins: {
236
+ "obsidian-dev-toolkit": obsidianDevToolkitPlugin
237
+ },
238
+ rules: {
239
+ "obsidian-dev-toolkit/no-local-obsidian-internals": "error"
240
+ }
241
+ },
242
+ {
243
+ /*
244
+ * Every method entry of a plugin API contract carries an `input` and an `output` schema, so a `{}` entry that
245
+ * validates nothing cannot come back where the contract type is untyped and the compiler does not refuse it.
246
+ * Tests are exempt: they may publish a deliberately broken contract.
247
+ *
248
+ * Registered but OFF: several providers and consumers still carry `{}` entries, and turning it on first would
249
+ * make their lint red. Switch it to `'error'` once none is left.
250
+ */
251
+ files: context.sourceFiles,
252
+ ignores: context.testFiles,
253
+ plugins: {
254
+ "obsidian-dev-toolkit": obsidianDevToolkitPlugin
255
+ },
256
+ rules: {
257
+ "obsidian-dev-toolkit/require-plugin-api-contract-schemas": "off"
258
+ }
259
+ },
260
+ {
261
+ /*
262
+ * A plugin's display name is marked as code: backticks in a comment (`plugin-name-as-code`, autofixed), a
263
+ * `<code>` element in UI (`plugin-name-as-code-in-ui`, reported only).
264
+ *
265
+ * Registered but OFF: repositories still carry plain plugin names from before the rules existed, and turning
266
+ * them on first would make their lint red. Switch them to `'error'` once those are fixed. Both take
267
+ * `{ additionalPluginNames: [...] }` for names the shared list lacks.
268
+ */
269
+ files: context.allFiles(),
270
+ plugins: {
271
+ "obsidian-dev-toolkit": obsidianDevToolkitPlugin
272
+ },
273
+ rules: {
274
+ "obsidian-dev-toolkit/plugin-name-as-code": "off",
275
+ "obsidian-dev-toolkit/plugin-name-as-code-in-ui": "off"
276
+ }
240
277
  }
241
278
  ]);
242
279
  }
@@ -244,4 +281,4 @@ export {
244
281
  EslintConfigContext,
245
282
  defineEslintConfigs
246
283
  };
247
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZm9yIE9ic2lkaWFuIHBsdWdpbnMuXG4gKlxuICogSXQgaXMgdGhlIGdlbmVyaWMgY29uZmlndXJhdGlvbiBvZiBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXRgIHBsdXMgdGhlIE9ic2lkaWFuIGxheWVycyBhbG9uZTpcbiAqIGBlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWRgJ3MgcmVjb21tZW5kZWQgcnVsZXMsIHRoZSByb290IGBtYW5pZmVzdC5qc29uYCBhbmQgYExJQ0VOU0VgLCB0aGUgTm9kZS1idWlsdGlucyBleGVtcHRpb25zXG4gKiBvZiBkZXNrdG9wLW9ubHkgbW9kdWxlcyBhbmQgdGVzdHMsIHRoZSBpbnRlZ3JhdGlvbi10ZXN0IHJ1bGVzIGFuZCB0aGUgT2JzaWRpYW4gaW4taG91c2UgcnVsZXMuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlY2xhcmF0aXZlIEVTTGludCBydWxlL3BsdWdpbiBjb25maWd1cmF0aW9uOyBjb3JyZWN0bmVzcyBpcyB2ZXJpZmllZCBieSBydW5uaW5nIEVTTGludCwgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgRGVmaW5lRXNsaW50Q29uZmlnc09wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9saW50ZXJzL2VzbGludC1jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBMaW50ZXIgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVEZWZhdWx0RXNsaW50Q29uZmlnQ29udGV4dCxcbiAgRXNsaW50Q29uZmlnQ29udGV4dCxcbiAgZ2V0RXNsaW50Q29yZUNvbmZpZ3MsXG4gIGdldEdsb2JhbElnbm9yZUNvbmZpZ3MsXG4gIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50LWNvbmZpZyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgb2JzaWRpYW5tZCBmcm9tICdlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWQnO1xuaW1wb3J0IHsgUGxhaW5UZXh0UGFyc2VyIH0gZnJvbSAnZXNsaW50LXBsdWdpbi1vYnNpZGlhbm1kL2Rpc3QvbGliL3BsYWluVGV4dFBhcnNlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICdlc2xpbnQvY29uZmlnJztcblxuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuLi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBqc29uUGx1Z2luIH0gZnJvbSAnLi9lc2xpbnQtcnVsZXMvbWFuaWZlc3QtaGVscGVycy50cyc7XG5pbXBvcnQgeyBvYnNpZGlhbkRldlV0aWxzUGx1Z2luIH0gZnJvbSAnLi9lc2xpbnQtcnVsZXMvb2JzaWRpYW4tZGV2LXV0aWxzLXBsdWdpbi50cyc7XG5pbXBvcnQgeyBzdHJpcE93bmVkUnVsZUN1c3RvbU1lc3NhZ2VFbnRyaWVzIH0gZnJvbSAnLi9vYnNpZGlhbm1kLXJ1bGUtY3VzdG9tLW1lc3NhZ2UudHMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItZXhwb3J0LWZyb20gLS0gUmUtZXhwb3J0ZWQgc28gYSBwbHVnaW4ncyBgc2NyaXB0cy9lc2xpbnQtY29uZmlnLnRzYCBrZWVwcyBpbXBvcnRpbmcgYm90aCBmcm9tIGhlcmUuXG5leHBvcnQgdHlwZSB7IERlZmluZUVzbGludENvbmZpZ3NPcHRpb25zIH07XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItZXhwb3J0LWZyb20gLS0gUmUtZXhwb3J0ZWQgc28gYSBwbHVnaW4ncyBgc2NyaXB0cy9lc2xpbnQtY29uZmlnLnRzYCBrZWVwcyBpbXBvcnRpbmcgYm90aCBmcm9tIGhlcmUuXG5leHBvcnQgeyBFc2xpbnRDb25maWdDb250ZXh0IH07XG5cbi8qXG4gKiBUaGUgbWluaW11bSBPYnNpZGlhbiBpbnN0YWxsZXIgdGhhdCBzdGlsbCByZWNlaXZlcyBhcHAgdXBkYXRlcyBhbmQgd29ya3MgaXMgMS4xLjksIHdoaWNoIHNoaXBzIEVsZWN0cm9uXG4gKiAyMS4zLjMgYW5kIHJ1bnMgTm9kZSAxNi4xNi4wLiBTaGlwcGVkIHNvdXJjZSBtdXN0IHRoZXJlZm9yZSBhdm9pZCBOb2RlL0VTIHJ1bnRpbWUgYnVpbHRpbnMgdW5hdmFpbGFibGUgaW5cbiAqIHRoYXQgdmVyc2lvbi4gVGVzdHMgYW5kIHNjcmlwdHMgYXJlIGRldi1vbmx5IGFuZCBleGVtcHQuXG4gKlxuICogU291cmNlIG9mIHRydXRoOiBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy9tZXRhZGF0YS5qc29uYCBcdTIwMTQgdGhlIG5ld2VzdCByZWxlYXNlIGNhcnJ5aW5nIHRoZSBmaWVsZFxuICogKDEuMTMuMSkgZGVjbGFyZXMgYG1pblJ1bm5hYmxlSW5zdGFsbGVyVmVyc2lvbjogXCIxLjEuOVwiYCwgYW5kIHRoYXQgaW5zdGFsbGVyJ3MgYHJ1bnRpbWVWZXJzaW9uc2AgZ2l2ZXMgdGhlXG4gKiBFbGVjdHJvbiBhbmQgTm9kZSB2ZXJzaW9ucyBhYm92ZS4gUmUtZGVyaXZlIGZyb20gdGhlcmUgcmF0aGVyIHRoYW4gZWRpdGluZyB0aGlzIG51bWJlciBieSBoYW5kLlxuICovXG5jb25zdCBNSU5JTVVNX05PREVfVkVSU0lPTiA9ICc+PTE2LjE2LjAnO1xuXG4vKipcbiAqIEJ1aWxkIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyB0aGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zIG9mIGFuIE9ic2lkaWFuIHBsdWdpbjogdGhlIGdlbmVyaWMgY29uZmlndXJhdGlvbiBvZlxuICogYEBtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0YCBwbHVzIHRoZSBPYnNpZGlhbiBsYXllcnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICogQHJldHVybnMgVGhlIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUVzbGludENvbmZpZ3Mob3B0aW9uczogRGVmaW5lRXNsaW50Q29uZmlnc09wdGlvbnMgPSB7fSk6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVEZWZhdWx0RXNsaW50Q29uZmlnQ29udGV4dCgpO1xuXG4gIGlmIChvcHRpb25zLmVkaXRDb250ZXh0KSB7XG4gICAgb3B0aW9ucy5lZGl0Q29udGV4dChjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGN1c3RvbUNvbmZpZ3MgPSBvcHRpb25zLmN1c3RvbUNvbmZpZ3M/Lihjb250ZXh0KSA/PyBbXTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLmdldEdsb2JhbElnbm9yZUNvbmZpZ3MoKSxcbiAgICAvLyBPYnNpZGlhbm1kIGNvbmZpZ3MgcnVuIGZpcnN0IHNvIG91ciBzdHJpY3RlciBydWxlcyBvdmVycmlkZSB0aGVpciByZWxheGVkIGRlZmF1bHRzXG4gICAgLi4uZ2V0T2JzaWRpYW5MaW50Q29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlncyh7IGNvbnRleHQsIGluSG91c2VQbHVnaW46IG9ic2lkaWFuRGV2VXRpbHNQbHVnaW4sIG1pbmltdW1Ob2RlVmVyc2lvbjogTUlOSU1VTV9OT0RFX1ZFUlNJT04gfSksXG4gICAgLi4uZ2V0T2JzaWRpYW5PdmVycmlkZUNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0Tm9kZUJ1aWx0aW5zQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRJbnRlZ3JhdGlvblRlc3RDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldE1hbmlmZXN0Q29uZmlncygpLFxuICAgIC4uLmdldExpY2Vuc2VDb25maWdzKCksXG4gICAgLi4uY3VzdG9tQ29uZmlnc1xuICApO1xufVxuZnVuY3Rpb24gZ2V0SW50ZWdyYXRpb25UZXN0Q29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgLypcbiAgICAgICAqIEFuIGludGVncmF0aW9uIHRlc3QgdGhhdCBkcml2ZXMgdGhlIFVJIHdpdGggYGRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoLi4uKSlgIHByb2R1Y2VzIGFuXG4gICAgICAgKiBVTlRSVVNURUQgZXZlbnQsIGFuZCBPYnNpZGlhbiBhbmQgQ29kZU1pcnJvciBnYXRlIG9uIGBpc1RydXN0ZWRgIFx1MjAxNCBzbyB0aGUgdGVzdCBjYW4gZXhlcmNpc2VcbiAgICAgICAqIG5vdGhpbmcgd2hpbGUgc3RpbGwgcGFzc2luZy4gT25seSBpbnRlZ3JhdGlvbiB0ZXN0cyBhcmUgY292ZXJlZDogYSB1bml0IHRlc3QgaGFzIG5vIHJlYWwgaW5wdXRcbiAgICAgICAqIHBpcGVsaW5lIHRvIHJlYWNoLCBzbyBkaXNwYXRjaGluZyBpcyB0aGUgb25seSB0aGluZyBpdCBjYW4gZG8uXG4gICAgICAgKlxuICAgICAgICogQW5kcm9pZCBmaWxlcyB1c2VkIHRvIGJlIGV4ZW1wdCBCWSBGSUxFTkFNRSwgb24gdGhlIGdyb3VuZHMgdGhhdCB0aGUgdHJ1c3RlZCBoZWxwZXJzIHdlcmUgYnVpbHQgb25cbiAgICAgICAqIGB3aW5kb3cuZWxlY3Ryb25gIGFuZCBzbyBjb3VsZCBub3QgYmUgcmVhY2hlZCBmcm9tIGEgcGhvbmUgYXQgYWxsLiBUaGF0IGV4ZW1wdGlvbiBpcyBnb25lOiB0aGVcbiAgICAgICAqIGhhcm5lc3MgZ2FpbmVkIGEgbW9iaWxlIHRydXN0ZWQtaW5wdXQgcGF0aCwgYW5kIGBjbGlja0VsZW1lbnRgLCBgY2xpY2tNb3VzZWAsIGBwcmVzc0tleWAgYW5kXG4gICAgICAgKiBgdHlwZUludG9FZGl0b3JgIGFsbCB3b3JrIHRoZXJlLiBPbmx5IHRoZSBob3ZlciBoZWxwZXJzIHN0aWxsIHRocm93LCBiZWNhdXNlIGA6aG92ZXJgIGhhcyBubyB0b3VjaFxuICAgICAgICogZXF1aXZhbGVudCBcdTIwMTQgYSBmaWxlIHJlYWNoaW5nIGZvciB0aG9zZSBoYXMgdG8gYnJhbmNoIG9uIGBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHBgLCB3aGljaCBpcyB0aGUgc2FtZVxuICAgICAgICogdGhpbmcgYSBgKi5jcm9zcy1wbGF0Zm9ybS4qYCBmaWxlIGhhcyBhbHdheXMgaGFkIHRvIGRvLlxuICAgICAgICovXG4gICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGb2xkZXJzLm1hcCgoc291cmNlRm9sZGVyKSA9PiBqb2luKHNvdXJjZUZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55SW50ZWdyYXRpb25UZXN0VHMpKSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbm8tdW50cnVzdGVkLWlucHV0LWV2ZW50cyc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKlxuICogVGhlIENvbW11bml0eSBkaXJlY3RvcnkgcmVxdWlyZXMgYSByb290IGBMSUNFTlNFYCwgYW5kIGBvYnNpZGlhbm1kL3ZhbGlkYXRlLWxpY2Vuc2VgIGlzIHRoZSBvbmx5IGNoZWNrXG4gKiBvbiB3aGF0IGl0IHNheXM6IHRoZSBjb3B5cmlnaHQgaG9sZGVyIG11c3Qgbm90IHN0aWxsIGJlIHRoZSBzYW1wbGUgcGx1Z2luJ3MsIGFuZCB0aGUgeWVhciBtdXN0IGJlXG4gKiBjdXJyZW50LiBCb3RoIG5lZWQgYFBsYWluVGV4dFBhcnNlcmAsIHdoaWNoIHRoZSBwbHVnaW4gZG9lcyBub3QgZXhwb3J0LCBzbyBpdCBpcyByZWFjaGVkIHRocm91Z2ggaXRzXG4gKiBidWlsZCBvdXRwdXQgLS0gdGhlIHBhY2thZ2UgZGVjbGFyZXMgbm8gYGV4cG9ydHNgIG1hcCBhbmQgc2hpcHMgYSBkZWNsYXJhdGlvbiBiZXNpZGUgdGhlIG1vZHVsZSwgc28gdGhlXG4gKiBkZWVwIHBhdGggcmVzb2x2ZXMsIGJ1dCBpdCBpcyB0aGUgb25lIGltcG9ydCBoZXJlIHRoYXQgYSBwYXRjaCByZWxlYXNlIHVwc3RyZWFtIGNvdWxkIGJyZWFrLlxuICpcbiAqIFRoZSBydWxlIGNvbXBhcmVzIHRoZSB5ZWFyIGFnYWluc3QgYG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKWAgYXQgbGludCB0aW1lLCBzbyBhIHJlcG8gZ29lcyByZWQgYXQgdGhlXG4gKiB0dXJuIG9mIHRoZSB5ZWFyIHVudGlsIGl0cyBMSUNFTlNFIGlzIGJ1bXBlZC4gYC5naXRodWIvd29ya2Zsb3dzL3VwZGF0ZS1saWNlbnNlLXllYXIueW1sYCBkb2VzIHRoYXQgb25cbiAqIDEgSmFudWFyeTsgYSByZXBvIGFkb3B0aW5nIHRoaXMgY29uZmlnIG5lZWRzIHRoZSBzYW1lIHdvcmtmbG93LCBvciB0aGUgeWVhciBjaGVjayB3aWxsIGZhaWwgaXRzIENJLlxuICovXG5mdW5jdGlvbiBnZXRMaWNlbnNlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBmaWxlczogW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkxpY2Vuc2VdLFxuICAgICAgbGFuZ3VhZ2VPcHRpb25zOiB7XG4gICAgICAgIHBhcnNlcjogUGxhaW5UZXh0UGFyc2VyXG4gICAgICB9LFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICBvYnNpZGlhbm1kXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ29ic2lkaWFubWQvdmFsaWRhdGUtbGljZW5zZSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKlxuICogVGhlIHJvb3QgYG1hbmlmZXN0Lmpzb25gIGlzIHdoYXQgdGhlIENvbW11bml0eSBkaXJlY3RvcnkncyBhdXRvbWF0ZWQgcmV2aWV3IGFjdHVhbGx5IHJlYWRzLCBhbmQgdW50aWxcbiAqIHRoaXMgY29uZmlnIGV4aXN0ZWQgbm8gbGludGVyIHJlYWQgaXQgYXQgYWxsOiBgb2JzaWRpYW5tZC92YWxpZGF0ZS1tYW5pZmVzdGAgcmVnaXN0ZXJzIGEgYFByb2dyYW1gXG4gKiB2aXNpdG9yIGFuZCBleHBlY3RzIGFuIEVTVHJlZSBgT2JqZWN0RXhwcmVzc2lvbmAsIHdoaWxlIGV2ZXJ5IEpTT04gcGFyc2VyIHRoYXQgc2hpcHMgcHJvZHVjZXMgc29tZXRoaW5nXG4gKiBlbHNlIC0tIGBAZXNsaW50L2pzb25gIHByb2R1Y2VzIE1vbW9hIChgRG9jdW1lbnRgKSwgYGpzb25jLWVzbGludC1wYXJzZXJgIHByb2R1Y2VzXG4gKiBgSlNPTk9iamVjdEV4cHJlc3Npb25gIC0tIHNvIHRoZSBydWxlIHNpbGVudGx5IG1hdGNoZXMgbm90aGluZyBubyBtYXR0ZXIgd2hpY2ggZmlsZXMgaXQgaXMgc2NvcGVkIHRvLlxuICogVGhlIGluLWhvdXNlIHJ1bGVzIGJlbG93IHZpc2l0IHRoZSBNb21vYSBBU1QgaW5zdGVhZC5cbiAqXG4gKiBgbWFuaWZlc3QuanNvbmAgaXMgc3RyaWN0IEpTT04sIHNvIGFuIGBlc2xpbnQtZGlzYWJsZWAgY29tbWVudCBpbiBpdCBpcyBhIHBhcnNlIGVycm9yIEFORCB3b3VsZCBzdG9wXG4gKiBPYnNpZGlhbiBsb2FkaW5nIHRoZSBwbHVnaW4uIFRoYXQgbWFrZXMgdGhlIGNvbmZpZyB0aGUgb25seSBwbGFjZSBhIGNoZWNrIGNhbiBiZSB3YWl2ZWQsIHdoaWNoIGlzIHdoeVxuICogdGhlc2UgYXJlIGZvdXIgcnVsZXMgcmF0aGVyIHRoYW4gb25lOiBhIHJlcG8gd2l0aCBhIGdyYW5kZmF0aGVyZWQgYGlkYCBjYW4gdHVybiBvZmYgYG1hbmlmZXN0LWlkYCBhbG9uZVxuICogYW5kIGtlZXAgdGhlIHJlc3QuXG4gKi9cbmZ1bmN0aW9uIGdldE1hbmlmZXN0Q29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBmaWxlczogW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbl0sXG4gICAgICBsYW5ndWFnZTogJ2pzb24vanNvbicsXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgICdqc29uJzoganNvblBsdWdpbixcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscyc6IG9ic2lkaWFuRGV2VXRpbHNQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL21hbmlmZXN0LWRlc2NyaXB0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscy9tYW5pZmVzdC1pZCc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbWFuaWZlc3QtbmFtZSc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbWFuaWZlc3Qtc2NoZW1hJzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qXG4gKiBFdmVyeSBmaWxlIHNldCB0aGF0IGlzIGV4ZW1wdCBmcm9tIHRoZSBOb2RlLWJ1aWx0aW5zIGJhbnMsIGluIG9uZSBwbGFjZS5cbiAqXG4gKiBUd28gcnVsZXMgYmFuIE5vZGUgYnVpbHRpbnMsIGFuZCB0aGV5IGFyZSBOT1QgaW50ZXJjaGFuZ2VhYmxlLiBgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXNgIGlzIG91cnMsIGl0IGlzXG4gKiBhbiBlcnJvciwgYW5kIGl0cyB3YWl2ZXJzIGFyZSB0b2xlcmF0ZWQgYnkgdGhlIGNvbW11bml0eS1kaXJlY3RvcnkgcmV2aWV3IHJ1bm5lci4gYG9ic2lkaWFubWQvbm8tbm9kZWpzLW1vZHVsZXNgXG4gKiBhcnJpdmVzIHZpYSBgb2JzaWRpYW5tZC5jb25maWdzLnJlY29tbWVuZGVkYCAoc2VlIGBnZXRPYnNpZGlhbkxpbnRDb25maWdzYCkgYW5kIGlzIHN0cmljdGx5IHdlYWtlciBvbiBzdGF0aWNcbiAqIGltcG9ydHMgXHUyMDE0IGl0cyBvd24gc291cmNlIHNheXMgXCJTdGF0aWMgaW1wb3J0IGRlY2xhcmF0aW9ucyBjYW4gbmV2ZXIgYmUgZ3VhcmRlZCBhdCBydW50aW1lXCIsIHNvIGl0IHJlcG9ydHMgZXZlcnlcbiAqIGBJbXBvcnREZWNsYXJhdGlvbmAgb2YgYSBidWlsdGluIHVuY29uZGl0aW9uYWxseSBhbmQgb25seSBgaW1wb3J0KClgIC8gYHJlcXVpcmUoKWAgZ2V0IGd1YXJkLWF3YXJlbmVzcy4gSXQgaXNcbiAqIGFsc28gb25lIHRoZSBjb25zdW1lciBDQU5OT1QgV0FJVkU6IHRoZSBkaXJlY3RvcnkgcnVubmVyIHNldHNcbiAqIGBlc2xpbnQtY29tbWVudHMvbm8tcmVzdHJpY3RlZC1kaXNhYmxlOiBbJ2Vycm9yJywgJ29ic2lkaWFubWQvKicsIC4uLl1gLCB3aGl0ZWxpc3Rpbmcgb25seVxuICogYG9ic2lkaWFubWQvdWkvc2VudGVuY2UtY2FzZWAsIHNvIGFuIGlubGluZSBkaXNhYmxlIG9mIGl0IHRyYWRlcyBhIHdhcm5pbmcgZm9yIGFuIGVycm9yIGluIGEgcmV2aWV3LiBUaGF0IGlzIHdoeVxuICogZXZlcnkgZXhlbXB0aW9uIGJlbG93IGhhcyB0byBsaXZlIGhlcmUgaW4gdGhlIHNoYXJlZCBjb25maWcgcmF0aGVyIHRoYW4gYXMgYSBjb21tZW50IGF0IHRoZSBjYWxsIHNpdGUuXG4gKlxuICogT25lIGZ1cnRoZXIgZXhlbXB0aW9uIGRlbGliZXJhdGVseSBsaXZlcyBlbHNld2hlcmU6IGBnZXRJbXBvcnRYQ29uZmlnc2AgdHVybnMgb2ZmIG9ubHkgYGltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzYFxuICogZm9yIGBjb250ZXh0LnNjcmlwdEZpbGVzYC4gSXQgbmVlZHMgbm8gYG9ic2lkaWFubWRgIHR3aW4sIGJlY2F1c2UgYGdldE9ic2lkaWFuTGludENvbmZpZ3NgIHNjb3BlcyB0aGUgb2JzaWRpYW5tZFxuICogcnVsZXMgdG8gYGNvbnRleHQuc291cmNlRmlsZXNgLCBzbyB0aGV5IG5ldmVyIHJlYWNoIHNjcmlwdHMgaW4gdGhlIGZpcnN0IHBsYWNlLlxuICovXG5mdW5jdGlvbiBnZXROb2RlQnVpbHRpbnNDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICAvLyBJbnRlZ3JhdGlvbiB0ZXN0cyBydW4gaW4gYSBOb2RlIGVudmlyb25tZW50IGFuZCBsZWdpdGltYXRlbHkgcmVhZCBmaWxlcyAvIHBhdGhzLCBzbyB0aGUgTm9kZS1idWlsdGlucyBiYW5zIGRvIG5vdCBhcHBseSB0byB0aGVtLlxuICAgICAgZmlsZXM6IGNvbnRleHQuc291cmNlRm9sZGVycy5tYXAoKHNvdXJjZUZvbGRlcikgPT4gam9pbihzb3VyY2VGb2xkZXIsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueUludGVncmF0aW9uVGVzdFRzKSksXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJyxcbiAgICAgICAgJ29ic2lkaWFubWQvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLypcbiAgICAgICAqIEEgYGRlc2t0b3AtYCBwcmVmaXhlZCBtb2R1bGUgaXMgZGVza3RvcC1vbmx5IGJ5IGNvbnZlbnRpb246IGl0IGlzIHJlYWNoZWQgb25seSB0aHJvdWdoIGFcbiAgICAgICAqIGBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHBgLWdhdGVkIGR5bmFtaWMgYGltcG9ydCgpYCBpbiBpdHMgY2FsbGVyLCBzbyBpdHMgc3RhdGljIE5vZGUgaW1wb3J0cyBuZXZlclxuICAgICAgICogbG9hZCBvbiBtb2JpbGUuIE5laXRoZXIgcnVsZSBjYW4gc2VlIHRoYXQgZ2F0ZSwgYmVjYXVzZSBpdCBzaXRzIG9uZSBmaWxlIHVwIFx1MjAxNCB0aGUgY29ycmVjdGx5LXdyaXR0ZW4gcGF0dGVyblxuICAgICAgICogcmVwb3J0cyBhbnl3YXksIGFuZCBubyBhdXRob3Itc2lkZSByZXdyaXRlIHNpbGVuY2VzIGl0LlxuICAgICAgICpcbiAgICAgICAqIEV4ZW1wdGluZyBCWSBGSUxFTkFNRSByYXRoZXIgdGhhbiBieSBhIGRpc2FibGUgY29tbWVudCBjYXJyaWVzIGEgdHJhZGUtb2ZmIGtub3dpbmdseTogdGhlIGV4ZW1wdGlvbiBrZXlzXG4gICAgICAgKiBvZmYgd2hhdCB0aGUgZmlsZSBpcyBOQU1FRCByYXRoZXIgdGhhbiB3aGF0IGl0IGRvZXMsIHNvIHRoZSBwcmVmaXggaXMgbG9hZC1iZWFyaW5nLiBBIGRlc2t0b3Atb25seSBtb2R1bGVcbiAgICAgICAqIHRoYXQgc2tpcHMgdGhlIHByZWZpeCBrZWVwcyByZXBvcnRpbmcsIGFuZCBhIGNyb3NzLXBsYXRmb3JtIG1vZHVsZSB0aGF0IHdyb25nbHkgdGFrZXMgaXQgZ2V0cyBhbiBleGVtcHRpb25cbiAgICAgICAqIGl0IHNob3VsZCBub3QgaGF2ZS5cbiAgICAgICAqL1xuICAgICAgZmlsZXM6IGNvbnRleHQuc291cmNlRm9sZGVycy5tYXAoKHNvdXJjZUZvbGRlcikgPT4gam9pbihzb3VyY2VGb2xkZXIsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueURlc2t0b3BUcykpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdvYnNpZGlhbm1kL25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIC8qXG4gICAgICAgKiBBIHVuaXQgdGVzdCBydW5zIHVuZGVyIHZpdGVzdCBpbiBOb2RlIGFuZCBpcyBuZXZlciBidW5kbGVkIGludG8gYG1haW4uanNgLCBzbyB0aGUgTm9kZS1idWlsdGlucyBiYW5zIGRvIG5vdFxuICAgICAgICogYXBwbHkgdG8gaXQgZWl0aGVyIFx1MjAxNCB0aGUgaWRlbnRpY2FsIGFyZ3VtZW50IHRoZSBpbnRlZ3JhdGlvbi10ZXN0IGJsb2NrIGFib3ZlIGFscmVhZHkgYWNjZXB0cy4gVGhpcyBhbHNvXG4gICAgICAgKiBjb3ZlcnMgdGhlIFNVVC1ncm91cGVkIGAqLmRlc2t0b3AudGVzdC50c2Agc2hhcGUsIHdoaWNoIG5hbWVzIHRoZSBwbGF0Zm9ybSBhcyBhIGRvdCBzZWdtZW50IGFmdGVyIHRoZVxuICAgICAgICogc3ViamVjdCB1bmRlciB0ZXN0IHJhdGhlciB0aGFuIGFzIGEgYGRlc2t0b3AtYCBwcmVmaXguXG4gICAgICAgKi9cbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcyc6ICdvZmYnLFxuICAgICAgICAnb2JzaWRpYW5tZC9uby1ub2RlanMtbW9kdWxlcyc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0T2JzaWRpYW5MaW50Q29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3Qgb2JzaWRpYW5SZWNvbW1lbmRlZENvbmZpZ3MgPSBvYnNpZGlhbm1kLmNvbmZpZ3MucmVjb21tZW5kZWQ7XG5cbiAgLypcbiAgICogQSBidWlsdGluIHRoaXMgY29uZmlnIHNldHMgaXRzZWxmIG11c3Qgbm90IEFMU08gcnVuIHRocm91Z2ggYG9ic2lkaWFubWQvcnVsZS1jdXN0b20tbWVzc2FnZWAsIG9yIGEgY29uc3VtZXIncyBvd25cbiAgICogYCduby1jb25zb2xlJzogJ29mZidgIGlzIGluZXJ0IGFuZCBldmVyeSBjb25zb2xlIGxpbmUgaXMgcmVwb3J0ZWQgdHdpY2UuIFNlZSBgb2JzaWRpYW5tZC1ydWxlLWN1c3RvbS1tZXNzYWdlLnRzYC5cbiAgICovXG4gIGNvbnN0IG93bmVkUnVsZU5hbWVzID0gbmV3IFNldChnZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0KS5mbGF0TWFwKChjb25maWcpID0+IE9iamVjdC5rZXlzKGNvbmZpZy5ydWxlcyA/PyB7fSkpKTtcblxuICBjb25zdCBzY29wZWRPYnNpZGlhblJlY29tbWVuZGVkQ29uZmlncyA9IG9ic2lkaWFuUmVjb21tZW5kZWRDb25maWdzLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgcmV0dXJuIGNvbmZpZy5maWxlcz8uaW5jbHVkZXMoJ3BhY2thZ2UuanNvbicpXG4gICAgICA/IGNvbmZpZ1xuICAgICAgOiB7XG4gICAgICAgIC4uLnN0cmlwT3duZWRSdWxlQ3VzdG9tTWVzc2FnZUVudHJpZXMoeyBjb25maWcsIG93bmVkUnVsZU5hbWVzIH0pLFxuICAgICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGaWxlc1xuICAgICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW3Njb3BlZE9ic2lkaWFuUmVjb21tZW5kZWRDb25maWdzXSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgb2JzaWRpYW5tZFxuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldE9ic2lkaWFuT3ZlcnJpZGVDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGb2xkZXJzLm1hcCgoc291cmNlRm9sZGVyKSA9PiBqb2luKHNvdXJjZUZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFpblRzKSksXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tZGVmYXVsdC1leHBvcnQnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuYWxsRmlsZXMoKSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscyc6IG9ic2lkaWFuRGV2VXRpbHNQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAvKlxuICAgICAgICAgKiBEZWxpYmVyYXRlbHkgaGVyZSwgb24gYGFsbEZpbGVzKClgLCByYXRoZXIgdGhhbiBiZXNpZGUgYG5vLXVudHJ1c3RlZC1pbnB1dC1ldmVudHNgIGluXG4gICAgICAgICAqIGBnZXRJbnRlZ3JhdGlvblRlc3RDb25maWdzKClgIChvd25lciwgMjAyNi0wOS0wOSkuIEFuIGBldmFsSW5PYnNpZGlhbmAgY2FsbCBpcyB1bm1pc3Rha2FibGUsIHNvIGFcbiAgICAgICAgICogZmlsZSB0aGF0IG1ha2VzIG5vbmUgaXMgdW50b3VjaGVkIGFuZCBhIGJyb2FkIGdsb2IgY29zdHMgbm90aGluZyAtLSB3aGlsZSBzY3JpcHQgY29kZSB0aGF0IGRyaXZlc1xuICAgICAgICAgKiBhIHJlYWwgT2JzaWRpYW4gb3V0c2lkZSBhIHRlc3QgKGBkZW1vLXZhdWx0LWJ1dHRvbnMudHNgKSBpcyB1bmRlciB0aGUgc2FtZSB0cmFuc3BvcnQgY2FwIGFuZCB3b3VsZFxuICAgICAgICAgKiBvdGhlcndpc2UgYmUgZW5mb3JjZWQgbm93aGVyZS5cbiAgICAgICAgICovXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbm8tb3Zlci1jYXAtd2FpdC1pbi1ldmFsLWluLW9ic2lkaWFuJzogJ2Vycm9yJyxcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscy9yZXF1aXJlLWNvbXBvbmVudC1zdWZmaXgnOiAnZXJyb3InLFxuICAgICAgICAvKlxuICAgICAgICAgKiBPYnNpZGlhbidzIGBDb21wb25lbnRgIGhhcyBpdHMgb3duIGByZW1vdmVDaGlsZChjb21wb25lbnQpYCBmb3IgdGhlIGNvbXBvbmVudCBsaWZlY3ljbGUsIHVucmVsYXRlZFxuICAgICAgICAgKiB0byBgTm9kZSNyZW1vdmVDaGlsZGAuIFRoZSBydWxlIG1hdGNoZXMgb24gdGhlIG1ldGhvZCBuYW1lIGFsb25lLCBzbyBldmVyeSByZXBvcnQgaGVyZSBpcyBhXG4gICAgICAgICAqIGNvbXBvbmVudCBiZWluZyB1bmxvYWRlZCwgYW5kIGZvbGxvd2luZyB0aGUgYWR2aWNlIGNhbGxzIGEgYHJlbW92ZSgpYCB0aGF0IGRvZXMgbm90IGV4aXN0IC0tIHdoaWNoXG4gICAgICAgICAqIGlzIHdoYXQgYHRzY2Agc2FpZCB3aGVuIHRoZSBmaXhlciB3YXMgbGV0IGxvb3NlIG9uIHRoZW0uXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItZG9tLW5vZGUtcmVtb3ZlJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIERpcmVjdGx5IGNvbnRyYWRpY3RzIGBvYnNpZGlhbm1kL25vLWdsb2JhbC10aGlzYDogdGhpcyBydWxlIHJld3JpdGVzIGB3aW5kb3cueGAgdG8gYGdsb2JhbFRoaXMueGAsIGFuZFxuICAgICAgICAgKiB0aGF0IG9uZSBmb3JiaWRzIGBnbG9iYWxUaGlzYCBvdXRyaWdodC4gV2l0aCBib3RoIGVuYWJsZWQsIGAtLWZpeGAgYXBwbGllcyBvbmUgYW5kIHRoZW4gdGhlIG90aGVyXG4gICAgICAgICAqIHJldmVydHMgaXQsIHdoaWNoIEVTTGludCByZXBvcnRzIGFzIGBFU0xpbnRDaXJjdWxhckZpeGVzV2FybmluZ2AgYWNyb3NzIDI5IGZpbGVzLiBPYnNpZGlhbidzIG93blxuICAgICAgICAgKiBndWlkYW5jZSB3aW5zIGluIGFuIE9ic2lkaWFuIGxpYnJhcnksIHNvIHRoaXMgaXMgdGhlIHJ1bGUgdGhhdCBnaXZlcyB3YXkuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItZ2xvYmFsLXRoaXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLFlBQVk7QUFFckIsT0FBTyxnQkFBZ0I7QUFDdkIsU0FBUyx1QkFBdUI7QUFDaEMsU0FBUyxvQkFBb0I7QUFFN0IsU0FBUywrQkFBK0I7QUFDeEMsU0FBUyxrQkFBa0I7QUFDM0IsU0FBUyw4QkFBOEI7QUFDdkMsU0FBUywwQ0FBMEM7QUFnQm5ELE1BQU0sdUJBQXVCO0FBV3RCLFNBQVMsb0JBQW9CLFVBQXNDLENBQUMsR0FBb0I7QUFDN0YsUUFBTSxVQUFVLGlDQUFpQztBQUVqRCxNQUFJLFFBQVEsYUFBYTtBQUN2QixZQUFRLFlBQVksT0FBTztBQUFBLEVBQzdCO0FBRUEsUUFBTSxnQkFBZ0IsUUFBUSxnQkFBZ0IsT0FBTyxLQUFLLENBQUM7QUFFM0QsU0FBTztBQUFBLElBQ0wsR0FBRyx1QkFBdUI7QUFBQSxJQUUxQixHQUFHLHVCQUF1QixPQUFPO0FBQUEsSUFDakMsR0FBRywyQkFBMkIsRUFBRSxTQUFTLGVBQWUsd0JBQXdCLG9CQUFvQixxQkFBcUIsQ0FBQztBQUFBLElBQzFILEdBQUcsMkJBQTJCLE9BQU87QUFBQSxJQUNyQyxHQUFHLHVCQUF1QixPQUFPO0FBQUEsSUFDakMsR0FBRywwQkFBMEIsT0FBTztBQUFBLElB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
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZm9yIE9ic2lkaWFuIHBsdWdpbnMuXG4gKlxuICogSXQgaXMgdGhlIGdlbmVyaWMgY29uZmlndXJhdGlvbiBvZiBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXRgIHBsdXMgdGhlIE9ic2lkaWFuIGxheWVycyBhbG9uZTpcbiAqIGBlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWRgJ3MgcmVjb21tZW5kZWQgcnVsZXMsIHRoZSByb290IGBtYW5pZmVzdC5qc29uYCBhbmQgYExJQ0VOU0VgLCB0aGUgTm9kZS1idWlsdGlucyBleGVtcHRpb25zXG4gKiBvZiBkZXNrdG9wLW9ubHkgbW9kdWxlcyBhbmQgdGVzdHMsIHRoZSBpbnRlZ3JhdGlvbi10ZXN0IHJ1bGVzIGFuZCB0aGUgT2JzaWRpYW4gaW4taG91c2UgcnVsZXMuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlY2xhcmF0aXZlIEVTTGludCBydWxlL3BsdWdpbiBjb25maWd1cmF0aW9uOyBjb3JyZWN0bmVzcyBpcyB2ZXJpZmllZCBieSBydW5uaW5nIEVTTGludCwgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgRGVmaW5lRXNsaW50Q29uZmlnc09wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9saW50ZXJzL2VzbGludC1jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBMaW50ZXIgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVEZWZhdWx0RXNsaW50Q29uZmlnQ29udGV4dCxcbiAgRXNsaW50Q29uZmlnQ29udGV4dCxcbiAgZ2V0RXNsaW50Q29yZUNvbmZpZ3MsXG4gIGdldEdsb2JhbElnbm9yZUNvbmZpZ3MsXG4gIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50LWNvbmZpZyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgb2JzaWRpYW5tZCBmcm9tICdlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWQnO1xuaW1wb3J0IHsgUGxhaW5UZXh0UGFyc2VyIH0gZnJvbSAnZXNsaW50LXBsdWdpbi1vYnNpZGlhbm1kL2Rpc3QvbGliL3BsYWluVGV4dFBhcnNlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICdlc2xpbnQvY29uZmlnJztcblxuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuLi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBqc29uUGx1Z2luIH0gZnJvbSAnLi9lc2xpbnQtcnVsZXMvbWFuaWZlc3QtaGVscGVycy50cyc7XG5pbXBvcnQgeyBvYnNpZGlhbkRldlRvb2xraXRQbHVnaW4gfSBmcm9tICcuL2VzbGludC1ydWxlcy9vYnNpZGlhbi1kZXYtdG9vbGtpdC1wbHVnaW4udHMnO1xuaW1wb3J0IHsgc3RyaXBPd25lZFJ1bGVDdXN0b21NZXNzYWdlRW50cmllcyB9IGZyb20gJy4vb2JzaWRpYW5tZC1ydWxlLWN1c3RvbS1tZXNzYWdlLnRzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLWV4cG9ydC1mcm9tIC0tIFJlLWV4cG9ydGVkIHNvIGEgcGx1Z2luJ3MgYHNjcmlwdHMvZXNsaW50LWNvbmZpZy50c2Aga2VlcHMgaW1wb3J0aW5nIGJvdGggZnJvbSBoZXJlLlxuZXhwb3J0IHR5cGUgeyBEZWZpbmVFc2xpbnRDb25maWdzT3B0aW9ucyB9O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLWV4cG9ydC1mcm9tIC0tIFJlLWV4cG9ydGVkIHNvIGEgcGx1Z2luJ3MgYHNjcmlwdHMvZXNsaW50LWNvbmZpZy50c2Aga2VlcHMgaW1wb3J0aW5nIGJvdGggZnJvbSBoZXJlLlxuZXhwb3J0IHsgRXNsaW50Q29uZmlnQ29udGV4dCB9O1xuXG4vKlxuICogVGhlIG1pbmltdW0gT2JzaWRpYW4gaW5zdGFsbGVyIHRoYXQgc3RpbGwgcmVjZWl2ZXMgYXBwIHVwZGF0ZXMgYW5kIHdvcmtzIGlzIDEuMS45LCB3aGljaCBzaGlwcyBFbGVjdHJvblxuICogMjEuMy4zIGFuZCBydW5zIE5vZGUgMTYuMTYuMC4gU2hpcHBlZCBzb3VyY2UgbXVzdCB0aGVyZWZvcmUgYXZvaWQgTm9kZS9FUyBydW50aW1lIGJ1aWx0aW5zIHVuYXZhaWxhYmxlIGluXG4gKiB0aGF0IHZlcnNpb24uIFRlc3RzIGFuZCBzY3JpcHRzIGFyZSBkZXYtb25seSBhbmQgZXhlbXB0LlxuICpcbiAqIFNvdXJjZSBvZiB0cnV0aDogYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcvbWV0YWRhdGEuanNvbmAg4oCUIHRoZSBuZXdlc3QgcmVsZWFzZSBjYXJyeWluZyB0aGUgZmllbGRcbiAqICgxLjEzLjEpIGRlY2xhcmVzIGBtaW5SdW5uYWJsZUluc3RhbGxlclZlcnNpb246IFwiMS4xLjlcImAsIGFuZCB0aGF0IGluc3RhbGxlcidzIGBydW50aW1lVmVyc2lvbnNgIGdpdmVzIHRoZVxuICogRWxlY3Ryb24gYW5kIE5vZGUgdmVyc2lvbnMgYWJvdmUuIFJlLWRlcml2ZSBmcm9tIHRoZXJlIHJhdGhlciB0aGFuIGVkaXRpbmcgdGhpcyBudW1iZXIgYnkgaGFuZC5cbiAqL1xuY29uc3QgTUlOSU1VTV9OT0RFX1ZFUlNJT04gPSAnPj0xNi4xNi4wJztcblxuLyoqXG4gKiBCdWlsZCBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBidWlsZHMgdGhlIEVTTGludCBjb25maWd1cmF0aW9ucyBvZiBhbiBPYnNpZGlhbiBwbHVnaW46IHRoZSBnZW5lcmljIGNvbmZpZ3VyYXRpb24gb2ZcbiAqIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdGAgcGx1cyB0aGUgT2JzaWRpYW4gbGF5ZXJzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGRlZmluaW5nIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVFc2xpbnRDb25maWdzKG9wdGlvbnM6IERlZmluZUVzbGludENvbmZpZ3NPcHRpb25zID0ge30pOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBjb250ZXh0ID0gY3JlYXRlRGVmYXVsdEVzbGludENvbmZpZ0NvbnRleHQoKTtcblxuICBpZiAob3B0aW9ucy5lZGl0Q29udGV4dCkge1xuICAgIG9wdGlvbnMuZWRpdENvbnRleHQoY29udGV4dCk7XG4gIH1cblxuICBjb25zdCBjdXN0b21Db25maWdzID0gb3B0aW9ucy5jdXN0b21Db25maWdzPy4oY29udGV4dCkgPz8gW107XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhcbiAgICAuLi5nZXRHbG9iYWxJZ25vcmVDb25maWdzKCksXG4gICAgLy8gT2JzaWRpYW5tZCBjb25maWdzIHJ1biBmaXJzdCBzbyBvdXIgc3RyaWN0ZXIgcnVsZXMgb3ZlcnJpZGUgdGhlaXIgcmVsYXhlZCBkZWZhdWx0c1xuICAgIC4uLmdldE9ic2lkaWFuTGludENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0VHlwZVNjcmlwdEVzbGludENvbmZpZ3MoeyBjb250ZXh0LCBtaW5pbXVtTm9kZVZlcnNpb246IE1JTklNVU1fTk9ERV9WRVJTSU9OIH0pLFxuICAgIC4uLmdldE9ic2lkaWFuT3ZlcnJpZGVDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldE5vZGVCdWlsdGluc0NvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0SW50ZWdyYXRpb25UZXN0Q29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRNYW5pZmVzdENvbmZpZ3MoKSxcbiAgICAuLi5nZXRMaWNlbnNlQ29uZmlncygpLFxuICAgIC4uLmN1c3RvbUNvbmZpZ3NcbiAgKTtcbn1cbmZ1bmN0aW9uIGdldEludGVncmF0aW9uVGVzdENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIC8qXG4gICAgICAgKiBBbiBpbnRlZ3JhdGlvbiB0ZXN0IHRoYXQgZHJpdmVzIHRoZSBVSSB3aXRoIGBkaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KC4uLikpYCBwcm9kdWNlcyBhblxuICAgICAgICogVU5UUlVTVEVEIGV2ZW50LCBhbmQgT2JzaWRpYW4gYW5kIENvZGVNaXJyb3IgZ2F0ZSBvbiBgaXNUcnVzdGVkYCDigJQgc28gdGhlIHRlc3QgY2FuIGV4ZXJjaXNlXG4gICAgICAgKiBub3RoaW5nIHdoaWxlIHN0aWxsIHBhc3NpbmcuIE9ubHkgaW50ZWdyYXRpb24gdGVzdHMgYXJlIGNvdmVyZWQ6IGEgdW5pdCB0ZXN0IGhhcyBubyByZWFsIGlucHV0XG4gICAgICAgKiBwaXBlbGluZSB0byByZWFjaCwgc28gZGlzcGF0Y2hpbmcgaXMgdGhlIG9ubHkgdGhpbmcgaXQgY2FuIGRvLlxuICAgICAgICpcbiAgICAgICAqIEFuZHJvaWQgZmlsZXMgdXNlZCB0byBiZSBleGVtcHQgQlkgRklMRU5BTUUsIG9uIHRoZSBncm91bmRzIHRoYXQgdGhlIHRydXN0ZWQgaGVscGVycyB3ZXJlIGJ1aWx0IG9uXG4gICAgICAgKiBgd2luZG93LmVsZWN0cm9uYCBhbmQgc28gY291bGQgbm90IGJlIHJlYWNoZWQgZnJvbSBhIHBob25lIGF0IGFsbC4gVGhhdCBleGVtcHRpb24gaXMgZ29uZTogdGhlXG4gICAgICAgKiBoYXJuZXNzIGdhaW5lZCBhIG1vYmlsZSB0cnVzdGVkLWlucHV0IHBhdGgsIGFuZCBgY2xpY2tFbGVtZW50YCwgYGNsaWNrTW91c2VgLCBgcHJlc3NLZXlgIGFuZFxuICAgICAgICogYHR5cGVJbnRvRWRpdG9yYCBhbGwgd29yayB0aGVyZS4gT25seSB0aGUgaG92ZXIgaGVscGVycyBzdGlsbCB0aHJvdywgYmVjYXVzZSBgOmhvdmVyYCBoYXMgbm8gdG91Y2hcbiAgICAgICAqIGVxdWl2YWxlbnQg4oCUIGEgZmlsZSByZWFjaGluZyBmb3IgdGhvc2UgaGFzIHRvIGJyYW5jaCBvbiBgUGxhdGZvcm0uaXNEZXNrdG9wQXBwYCwgd2hpY2ggaXMgdGhlIHNhbWVcbiAgICAgICAqIHRoaW5nIGEgYCouY3Jvc3MtcGxhdGZvcm0uKmAgZmlsZSBoYXMgYWx3YXlzIGhhZCB0byBkby5cbiAgICAgICAqL1xuICAgICAgZmlsZXM6IGNvbnRleHQuc291cmNlRm9sZGVycy5tYXAoKHNvdXJjZUZvbGRlcikgPT4gam9pbihzb3VyY2VGb2xkZXIsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueUludGVncmF0aW9uVGVzdFRzKSksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgICdvYnNpZGlhbi1kZXYtdG9vbGtpdCc6IG9ic2lkaWFuRGV2VG9vbGtpdFBsdWdpblxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdvYnNpZGlhbi1kZXYtdG9vbGtpdC9uby11bnRydXN0ZWQtaW5wdXQtZXZlbnRzJzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qXG4gKiBUaGUgQ29tbXVuaXR5IGRpcmVjdG9yeSByZXF1aXJlcyBhIHJvb3QgYExJQ0VOU0VgLCBhbmQgYG9ic2lkaWFubWQvdmFsaWRhdGUtbGljZW5zZWAgaXMgdGhlIG9ubHkgY2hlY2tcbiAqIG9uIHdoYXQgaXQgc2F5czogdGhlIGNvcHlyaWdodCBob2xkZXIgbXVzdCBub3Qgc3RpbGwgYmUgdGhlIHNhbXBsZSBwbHVnaW4ncywgYW5kIHRoZSB5ZWFyIG11c3QgYmVcbiAqIGN1cnJlbnQuIEJvdGggbmVlZCBgUGxhaW5UZXh0UGFyc2VyYCwgd2hpY2ggdGhlIHBsdWdpbiBkb2VzIG5vdCBleHBvcnQsIHNvIGl0IGlzIHJlYWNoZWQgdGhyb3VnaCBpdHNcbiAqIGJ1aWxkIG91dHB1dCAtLSB0aGUgcGFja2FnZSBkZWNsYXJlcyBubyBgZXhwb3J0c2AgbWFwIGFuZCBzaGlwcyBhIGRlY2xhcmF0aW9uIGJlc2lkZSB0aGUgbW9kdWxlLCBzbyB0aGVcbiAqIGRlZXAgcGF0aCByZXNvbHZlcywgYnV0IGl0IGlzIHRoZSBvbmUgaW1wb3J0IGhlcmUgdGhhdCBhIHBhdGNoIHJlbGVhc2UgdXBzdHJlYW0gY291bGQgYnJlYWsuXG4gKlxuICogVGhlIHJ1bGUgY29tcGFyZXMgdGhlIHllYXIgYWdhaW5zdCBgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpYCBhdCBsaW50IHRpbWUsIHNvIGEgcmVwbyBnb2VzIHJlZCBhdCB0aGVcbiAqIHR1cm4gb2YgdGhlIHllYXIgdW50aWwgaXRzIExJQ0VOU0UgaXMgYnVtcGVkLiBgLmdpdGh1Yi93b3JrZmxvd3MvdXBkYXRlLWxpY2Vuc2UteWVhci55bWxgIGRvZXMgdGhhdCBvblxuICogMSBKYW51YXJ5OyBhIHJlcG8gYWRvcHRpbmcgdGhpcyBjb25maWcgbmVlZHMgdGhlIHNhbWUgd29ya2Zsb3csIG9yIHRoZSB5ZWFyIGNoZWNrIHdpbGwgZmFpbCBpdHMgQ0kuXG4gKi9cbmZ1bmN0aW9uIGdldExpY2Vuc2VDb25maWdzKCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBbT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTGljZW5zZV0sXG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgcGFyc2VyOiBQbGFpblRleHRQYXJzZXJcbiAgICAgIH0sXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIG9ic2lkaWFubWRcbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnb2JzaWRpYW5tZC92YWxpZGF0ZS1saWNlbnNlJzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qXG4gKiBUaGUgcm9vdCBgbWFuaWZlc3QuanNvbmAgaXMgd2hhdCB0aGUgQ29tbXVuaXR5IGRpcmVjdG9yeSdzIGF1dG9tYXRlZCByZXZpZXcgYWN0dWFsbHkgcmVhZHMsIGFuZCB1bnRpbFxuICogdGhpcyBjb25maWcgZXhpc3RlZCBubyBsaW50ZXIgcmVhZCBpdCBhdCBhbGw6IGBvYnNpZGlhbm1kL3ZhbGlkYXRlLW1hbmlmZXN0YCByZWdpc3RlcnMgYSBgUHJvZ3JhbWBcbiAqIHZpc2l0b3IgYW5kIGV4cGVjdHMgYW4gRVNUcmVlIGBPYmplY3RFeHByZXNzaW9uYCwgd2hpbGUgZXZlcnkgSlNPTiBwYXJzZXIgdGhhdCBzaGlwcyBwcm9kdWNlcyBzb21ldGhpbmdcbiAqIGVsc2UgLS0gYEBlc2xpbnQvanNvbmAgcHJvZHVjZXMgTW9tb2EgKGBEb2N1bWVudGApLCBganNvbmMtZXNsaW50LXBhcnNlcmAgcHJvZHVjZXNcbiAqIGBKU09OT2JqZWN0RXhwcmVzc2lvbmAgLS0gc28gdGhlIHJ1bGUgc2lsZW50bHkgbWF0Y2hlcyBub3RoaW5nIG5vIG1hdHRlciB3aGljaCBmaWxlcyBpdCBpcyBzY29wZWQgdG8uXG4gKiBUaGUgaW4taG91c2UgcnVsZXMgYmVsb3cgdmlzaXQgdGhlIE1vbW9hIEFTVCBpbnN0ZWFkLlxuICpcbiAqIGBtYW5pZmVzdC5qc29uYCBpcyBzdHJpY3QgSlNPTiwgc28gYW4gYGVzbGludC1kaXNhYmxlYCBjb21tZW50IGluIGl0IGlzIGEgcGFyc2UgZXJyb3IgQU5EIHdvdWxkIHN0b3BcbiAqIE9ic2lkaWFuIGxvYWRpbmcgdGhlIHBsdWdpbi4gVGhhdCBtYWtlcyB0aGUgY29uZmlnIHRoZSBvbmx5IHBsYWNlIGEgY2hlY2sgY2FuIGJlIHdhaXZlZCwgd2hpY2ggaXMgd2h5XG4gKiB0aGVzZSBhcmUgZm91ciBydWxlcyByYXRoZXIgdGhhbiBvbmU6IGEgcmVwbyB3aXRoIGEgZ3JhbmRmYXRoZXJlZCBgaWRgIGNhbiB0dXJuIG9mZiBgbWFuaWZlc3QtaWRgIGFsb25lXG4gKiBhbmQga2VlcCB0aGUgcmVzdC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFuaWZlc3RDb25maWdzKCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBbT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uXSxcbiAgICAgIGxhbmd1YWdlOiAnanNvbi9qc29uJyxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgJ2pzb24nOiBqc29uUGx1Z2luLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQnOiBvYnNpZGlhbkRldlRvb2xraXRQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQvbWFuaWZlc3QtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQvbWFuaWZlc3QtaWQnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQvbWFuaWZlc3QtbmFtZSc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdG9vbGtpdC9tYW5pZmVzdC1zY2hlbWEnOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuLypcbiAqIEV2ZXJ5IGZpbGUgc2V0IHRoYXQgaXMgZXhlbXB0IGZyb20gdGhlIE5vZGUtYnVpbHRpbnMgYmFucywgaW4gb25lIHBsYWNlLlxuICpcbiAqIFR3byBydWxlcyBiYW4gTm9kZSBidWlsdGlucywgYW5kIHRoZXkgYXJlIE5PVCBpbnRlcmNoYW5nZWFibGUuIGBpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlc2AgaXMgb3VycywgaXQgaXNcbiAqIGFuIGVycm9yLCBhbmQgaXRzIHdhaXZlcnMgYXJlIHRvbGVyYXRlZCBieSB0aGUgY29tbXVuaXR5LWRpcmVjdG9yeSByZXZpZXcgcnVubmVyLiBgb2JzaWRpYW5tZC9uby1ub2RlanMtbW9kdWxlc2BcbiAqIGFycml2ZXMgdmlhIGBvYnNpZGlhbm1kLmNvbmZpZ3MucmVjb21tZW5kZWRgIChzZWUgYGdldE9ic2lkaWFuTGludENvbmZpZ3NgKSBhbmQgaXMgc3RyaWN0bHkgd2Vha2VyIG9uIHN0YXRpY1xuICogaW1wb3J0cyDigJQgaXRzIG93biBzb3VyY2Ugc2F5cyBcIlN0YXRpYyBpbXBvcnQgZGVjbGFyYXRpb25zIGNhbiBuZXZlciBiZSBndWFyZGVkIGF0IHJ1bnRpbWVcIiwgc28gaXQgcmVwb3J0cyBldmVyeVxuICogYEltcG9ydERlY2xhcmF0aW9uYCBvZiBhIGJ1aWx0aW4gdW5jb25kaXRpb25hbGx5IGFuZCBvbmx5IGBpbXBvcnQoKWAgLyBgcmVxdWlyZSgpYCBnZXQgZ3VhcmQtYXdhcmVuZXNzLiBJdCBpc1xuICogYWxzbyBvbmUgdGhlIGNvbnN1bWVyIENBTk5PVCBXQUlWRTogdGhlIGRpcmVjdG9yeSBydW5uZXIgc2V0c1xuICogYGVzbGludC1jb21tZW50cy9uby1yZXN0cmljdGVkLWRpc2FibGU6IFsnZXJyb3InLCAnb2JzaWRpYW5tZC8qJywgLi4uXWAsIHdoaXRlbGlzdGluZyBvbmx5XG4gKiBgb2JzaWRpYW5tZC91aS9zZW50ZW5jZS1jYXNlYCwgc28gYW4gaW5saW5lIGRpc2FibGUgb2YgaXQgdHJhZGVzIGEgd2FybmluZyBmb3IgYW4gZXJyb3IgaW4gYSByZXZpZXcuIFRoYXQgaXMgd2h5XG4gKiBldmVyeSBleGVtcHRpb24gYmVsb3cgaGFzIHRvIGxpdmUgaGVyZSBpbiB0aGUgc2hhcmVkIGNvbmZpZyByYXRoZXIgdGhhbiBhcyBhIGNvbW1lbnQgYXQgdGhlIGNhbGwgc2l0ZS5cbiAqXG4gKiBPbmUgZnVydGhlciBleGVtcHRpb24gZGVsaWJlcmF0ZWx5IGxpdmVzIGVsc2V3aGVyZTogYGdldEltcG9ydFhDb25maWdzYCB0dXJucyBvZmYgb25seSBgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXNgXG4gKiBmb3IgYGNvbnRleHQuc2NyaXB0RmlsZXNgLiBJdCBuZWVkcyBubyBgb2JzaWRpYW5tZGAgdHdpbiwgYmVjYXVzZSBgZ2V0T2JzaWRpYW5MaW50Q29uZmlnc2Agc2NvcGVzIHRoZSBvYnNpZGlhbm1kXG4gKiBydWxlcyB0byBgY29udGV4dC5zb3VyY2VGaWxlc2AsIHNvIHRoZXkgbmV2ZXIgcmVhY2ggc2NyaXB0cyBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gKi9cbmZ1bmN0aW9uIGdldE5vZGVCdWlsdGluc0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIC8vIEludGVncmF0aW9uIHRlc3RzIHJ1biBpbiBhIE5vZGUgZW52aXJvbm1lbnQgYW5kIGxlZ2l0aW1hdGVseSByZWFkIGZpbGVzIC8gcGF0aHMsIHNvIHRoZSBOb2RlLWJ1aWx0aW5zIGJhbnMgZG8gbm90IGFwcGx5IHRvIHRoZW0uXG4gICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGb2xkZXJzLm1hcCgoc291cmNlRm9sZGVyKSA9PiBqb2luKHNvdXJjZUZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55SW50ZWdyYXRpb25UZXN0VHMpKSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcyc6ICdvZmYnLFxuICAgICAgICAnb2JzaWRpYW5tZC9uby1ub2RlanMtbW9kdWxlcyc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAvKlxuICAgICAgICogQSBgZGVza3RvcC1gIHByZWZpeGVkIG1vZHVsZSBpcyBkZXNrdG9wLW9ubHkgYnkgY29udmVudGlvbjogaXQgaXMgcmVhY2hlZCBvbmx5IHRocm91Z2ggYVxuICAgICAgICogYFBsYXRmb3JtLmlzRGVza3RvcEFwcGAtZ2F0ZWQgZHluYW1pYyBgaW1wb3J0KClgIGluIGl0cyBjYWxsZXIsIHNvIGl0cyBzdGF0aWMgTm9kZSBpbXBvcnRzIG5ldmVyXG4gICAgICAgKiBsb2FkIG9uIG1vYmlsZS4gTmVpdGhlciBydWxlIGNhbiBzZWUgdGhhdCBnYXRlLCBiZWNhdXNlIGl0IHNpdHMgb25lIGZpbGUgdXAg4oCUIHRoZSBjb3JyZWN0bHktd3JpdHRlbiBwYXR0ZXJuXG4gICAgICAgKiByZXBvcnRzIGFueXdheSwgYW5kIG5vIGF1dGhvci1zaWRlIHJld3JpdGUgc2lsZW5jZXMgaXQuXG4gICAgICAgKlxuICAgICAgICogRXhlbXB0aW5nIEJZIEZJTEVOQU1FIHJhdGhlciB0aGFuIGJ5IGEgZGlzYWJsZSBjb21tZW50IGNhcnJpZXMgYSB0cmFkZS1vZmYga25vd2luZ2x5OiB0aGUgZXhlbXB0aW9uIGtleXNcbiAgICAgICAqIG9mZiB3aGF0IHRoZSBmaWxlIGlzIE5BTUVEIHJhdGhlciB0aGFuIHdoYXQgaXQgZG9lcywgc28gdGhlIHByZWZpeCBpcyBsb2FkLWJlYXJpbmcuIEEgZGVza3RvcC1vbmx5IG1vZHVsZVxuICAgICAgICogdGhhdCBza2lwcyB0aGUgcHJlZml4IGtlZXBzIHJlcG9ydGluZywgYW5kIGEgY3Jvc3MtcGxhdGZvcm0gbW9kdWxlIHRoYXQgd3JvbmdseSB0YWtlcyBpdCBnZXRzIGFuIGV4ZW1wdGlvblxuICAgICAgICogaXQgc2hvdWxkIG5vdCBoYXZlLlxuICAgICAgICovXG4gICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGb2xkZXJzLm1hcCgoc291cmNlRm9sZGVyKSA9PiBqb2luKHNvdXJjZUZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55RGVza3RvcFRzKSksXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJyxcbiAgICAgICAgJ29ic2lkaWFubWQvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLypcbiAgICAgICAqIEEgdW5pdCB0ZXN0IHJ1bnMgdW5kZXIgdml0ZXN0IGluIE5vZGUgYW5kIGlzIG5ldmVyIGJ1bmRsZWQgaW50byBgbWFpbi5qc2AsIHNvIHRoZSBOb2RlLWJ1aWx0aW5zIGJhbnMgZG8gbm90XG4gICAgICAgKiBhcHBseSB0byBpdCBlaXRoZXIg4oCUIHRoZSBpZGVudGljYWwgYXJndW1lbnQgdGhlIGludGVncmF0aW9uLXRlc3QgYmxvY2sgYWJvdmUgYWxyZWFkeSBhY2NlcHRzLiBUaGlzIGFsc29cbiAgICAgICAqIGNvdmVycyB0aGUgU1VULWdyb3VwZWQgYCouZGVza3RvcC50ZXN0LnRzYCBzaGFwZSwgd2hpY2ggbmFtZXMgdGhlIHBsYXRmb3JtIGFzIGEgZG90IHNlZ21lbnQgYWZ0ZXIgdGhlXG4gICAgICAgKiBzdWJqZWN0IHVuZGVyIHRlc3QgcmF0aGVyIHRoYW4gYXMgYSBgZGVza3RvcC1gIHByZWZpeC5cbiAgICAgICAqL1xuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdvYnNpZGlhbm1kL25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRPYnNpZGlhbkxpbnRDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBvYnNpZGlhblJlY29tbWVuZGVkQ29uZmlncyA9IG9ic2lkaWFubWQuY29uZmlncy5yZWNvbW1lbmRlZDtcblxuICAvKlxuICAgKiBBIGJ1aWx0aW4gdGhpcyBjb25maWcgc2V0cyBpdHNlbGYgbXVzdCBub3QgQUxTTyBydW4gdGhyb3VnaCBgb2JzaWRpYW5tZC9ydWxlLWN1c3RvbS1tZXNzYWdlYCwgb3IgYSBjb25zdW1lcidzIG93blxuICAgKiBgJ25vLWNvbnNvbGUnOiAnb2ZmJ2AgaXMgaW5lcnQgYW5kIGV2ZXJ5IGNvbnNvbGUgbGluZSBpcyByZXBvcnRlZCB0d2ljZS4gU2VlIGBvYnNpZGlhbm1kLXJ1bGUtY3VzdG9tLW1lc3NhZ2UudHNgLlxuICAgKi9cbiAgY29uc3Qgb3duZWRSdWxlTmFtZXMgPSBuZXcgU2V0KGdldEVzbGludENvcmVDb25maWdzKGNvbnRleHQpLmZsYXRNYXAoKGNvbmZpZykgPT4gT2JqZWN0LmtleXMoY29uZmlnLnJ1bGVzID8/IHt9KSkpO1xuXG4gIGNvbnN0IHNjb3BlZE9ic2lkaWFuUmVjb21tZW5kZWRDb25maWdzID0gb2JzaWRpYW5SZWNvbW1lbmRlZENvbmZpZ3MubWFwKChjb25maWcpID0+IHtcbiAgICByZXR1cm4gY29uZmlnLmZpbGVzPy5pbmNsdWRlcygncGFja2FnZS5qc29uJylcbiAgICAgID8gY29uZmlnXG4gICAgICA6IHtcbiAgICAgICAgLi4uc3RyaXBPd25lZFJ1bGVDdXN0b21NZXNzYWdlRW50cmllcyh7IGNvbmZpZywgb3duZWRSdWxlTmFtZXMgfSksXG4gICAgICAgIGZpbGVzOiBjb250ZXh0LnNvdXJjZUZpbGVzXG4gICAgICB9O1xuICB9KTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBleHRlbmRzOiBbc2NvcGVkT2JzaWRpYW5SZWNvbW1lbmRlZENvbmZpZ3NdLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICBvYnNpZGlhbm1kXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0T2JzaWRpYW5PdmVycmlkZUNvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnNvdXJjZUZvbGRlcnMubWFwKChzb3VyY2VGb2xkZXIpID0+IGpvaW4oc291cmNlRm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluVHMpKSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQnOiBvYnNpZGlhbkRldlRvb2xraXRQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAvKlxuICAgICAgICAgKiBEZWxpYmVyYXRlbHkgaGVyZSwgb24gYGFsbEZpbGVzKClgLCByYXRoZXIgdGhhbiBiZXNpZGUgYG5vLXVudHJ1c3RlZC1pbnB1dC1ldmVudHNgIGluXG4gICAgICAgICAqIGBnZXRJbnRlZ3JhdGlvblRlc3RDb25maWdzKClgIChvd25lciwgMjAyNi0wOS0wOSkuIEFuIGBldmFsSW5PYnNpZGlhbmAgY2FsbCBpcyB1bm1pc3Rha2FibGUsIHNvIGFcbiAgICAgICAgICogZmlsZSB0aGF0IG1ha2VzIG5vbmUgaXMgdW50b3VjaGVkIGFuZCBhIGJyb2FkIGdsb2IgY29zdHMgbm90aGluZyAtLSB3aGlsZSBzY3JpcHQgY29kZSB0aGF0IGRyaXZlc1xuICAgICAgICAgKiBhIHJlYWwgT2JzaWRpYW4gb3V0c2lkZSBhIHRlc3QgKGBkZW1vLXZhdWx0LWJ1dHRvbnMudHNgKSBpcyB1bmRlciB0aGUgc2FtZSB0cmFuc3BvcnQgY2FwIGFuZCB3b3VsZFxuICAgICAgICAgKiBvdGhlcndpc2UgYmUgZW5mb3JjZWQgbm93aGVyZS5cbiAgICAgICAgICovXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdG9vbGtpdC9uby1vdmVyLWNhcC13YWl0LWluLWV2YWwtaW4tb2JzaWRpYW4nOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQvcmVxdWlyZS1jb21wb25lbnQtc3VmZml4JzogJ2Vycm9yJyxcbiAgICAgICAgLypcbiAgICAgICAgICogT2JzaWRpYW4ncyBgQ29tcG9uZW50YCBoYXMgaXRzIG93biBgcmVtb3ZlQ2hpbGQoY29tcG9uZW50KWAgZm9yIHRoZSBjb21wb25lbnQgbGlmZWN5Y2xlLCB1bnJlbGF0ZWRcbiAgICAgICAgICogdG8gYE5vZGUjcmVtb3ZlQ2hpbGRgLiBUaGUgcnVsZSBtYXRjaGVzIG9uIHRoZSBtZXRob2QgbmFtZSBhbG9uZSwgc28gZXZlcnkgcmVwb3J0IGhlcmUgaXMgYVxuICAgICAgICAgKiBjb21wb25lbnQgYmVpbmcgdW5sb2FkZWQsIGFuZCBmb2xsb3dpbmcgdGhlIGFkdmljZSBjYWxscyBhIGByZW1vdmUoKWAgdGhhdCBkb2VzIG5vdCBleGlzdCAtLSB3aGljaFxuICAgICAgICAgKiBpcyB3aGF0IGB0c2NgIHNhaWQgd2hlbiB0aGUgZml4ZXIgd2FzIGxldCBsb29zZSBvbiB0aGVtLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWRvbS1ub2RlLXJlbW92ZSc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBEaXJlY3RseSBjb250cmFkaWN0cyBgb2JzaWRpYW5tZC9uby1nbG9iYWwtdGhpc2A6IHRoaXMgcnVsZSByZXdyaXRlcyBgd2luZG93LnhgIHRvIGBnbG9iYWxUaGlzLnhgLCBhbmRcbiAgICAgICAgICogdGhhdCBvbmUgZm9yYmlkcyBgZ2xvYmFsVGhpc2Agb3V0cmlnaHQuIFdpdGggYm90aCBlbmFibGVkLCBgLS1maXhgIGFwcGxpZXMgb25lIGFuZCB0aGVuIHRoZSBvdGhlclxuICAgICAgICAgKiByZXZlcnRzIGl0LCB3aGljaCBFU0xpbnQgcmVwb3J0cyBhcyBgRVNMaW50Q2lyY3VsYXJGaXhlc1dhcm5pbmdgIGFjcm9zcyAyOSBmaWxlcy4gT2JzaWRpYW4ncyBvd25cbiAgICAgICAgICogZ3VpZGFuY2Ugd2lucyBpbiBhbiBPYnNpZGlhbiBsaWJyYXJ5LCBzbyB0aGlzIGlzIHRoZSBydWxlIHRoYXQgZ2l2ZXMgd2F5LlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWdsb2JhbC10aGlzJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIC8qXG4gICAgICAgKiBPYnNpZGlhbidzIGludGVybmFsIEFQSSBpcyB0eXBlZCBpbiBgb2JzaWRpYW4tdHlwaW5nc2AsIHNvIGEgYGRlY2xhcmUgbW9kdWxlICdvYnNpZGlhbidgIGF1Z21lbnRhdGlvbiBpblxuICAgICAgICogc2hpcHBlZCBzb3VyY2UgbWF5IGNhcnJ5IG9ubHkgdGhlIHBsdWdpbidzIG93biBjdXN0b20tZXZlbnQgb3ZlcmxvYWRzLiBUZXN0cyBhcmUgZXhlbXB0OiBhIG1vY2sgc2hhcGUgb3IgYVxuICAgICAgICogaGFybmVzcyBnbG9iYWwgbmV2ZXIgc2hpcHMuXG4gICAgICAgKi9cbiAgICAgIGZpbGVzOiBjb250ZXh0LnNvdXJjZUZpbGVzLFxuICAgICAgaWdub3JlczogY29udGV4dC50ZXN0RmlsZXMsXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgICdvYnNpZGlhbi1kZXYtdG9vbGtpdCc6IG9ic2lkaWFuRGV2VG9vbGtpdFBsdWdpblxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdvYnNpZGlhbi1kZXYtdG9vbGtpdC9uby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHMnOiAnZXJyb3InXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAvKlxuICAgICAgICogRXZlcnkgbWV0aG9kIGVudHJ5IG9mIGEgcGx1Z2luIEFQSSBjb250cmFjdCBjYXJyaWVzIGFuIGBpbnB1dGAgYW5kIGFuIGBvdXRwdXRgIHNjaGVtYSwgc28gYSBge31gIGVudHJ5IHRoYXRcbiAgICAgICAqIHZhbGlkYXRlcyBub3RoaW5nIGNhbm5vdCBjb21lIGJhY2sgd2hlcmUgdGhlIGNvbnRyYWN0IHR5cGUgaXMgdW50eXBlZCBhbmQgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHJlZnVzZSBpdC5cbiAgICAgICAqIFRlc3RzIGFyZSBleGVtcHQ6IHRoZXkgbWF5IHB1Ymxpc2ggYSBkZWxpYmVyYXRlbHkgYnJva2VuIGNvbnRyYWN0LlxuICAgICAgICpcbiAgICAgICAqIFJlZ2lzdGVyZWQgYnV0IE9GRjogc2V2ZXJhbCBwcm92aWRlcnMgYW5kIGNvbnN1bWVycyBzdGlsbCBjYXJyeSBge31gIGVudHJpZXMsIGFuZCB0dXJuaW5nIGl0IG9uIGZpcnN0IHdvdWxkXG4gICAgICAgKiBtYWtlIHRoZWlyIGxpbnQgcmVkLiBTd2l0Y2ggaXQgdG8gYCdlcnJvcidgIG9uY2Ugbm9uZSBpcyBsZWZ0LlxuICAgICAgICovXG4gICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGaWxlcyxcbiAgICAgIGlnbm9yZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQnOiBvYnNpZGlhbkRldlRvb2xraXRQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQvcmVxdWlyZS1wbHVnaW4tYXBpLWNvbnRyYWN0LXNjaGVtYXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLypcbiAgICAgICAqIEEgcGx1Z2luJ3MgZGlzcGxheSBuYW1lIGlzIG1hcmtlZCBhcyBjb2RlOiBiYWNrdGlja3MgaW4gYSBjb21tZW50IChgcGx1Z2luLW5hbWUtYXMtY29kZWAsIGF1dG9maXhlZCksIGFcbiAgICAgICAqIGA8Y29kZT5gIGVsZW1lbnQgaW4gVUkgKGBwbHVnaW4tbmFtZS1hcy1jb2RlLWluLXVpYCwgcmVwb3J0ZWQgb25seSkuXG4gICAgICAgKlxuICAgICAgICogUmVnaXN0ZXJlZCBidXQgT0ZGOiByZXBvc2l0b3JpZXMgc3RpbGwgY2FycnkgcGxhaW4gcGx1Z2luIG5hbWVzIGZyb20gYmVmb3JlIHRoZSBydWxlcyBleGlzdGVkLCBhbmQgdHVybmluZ1xuICAgICAgICogdGhlbSBvbiBmaXJzdCB3b3VsZCBtYWtlIHRoZWlyIGxpbnQgcmVkLiBTd2l0Y2ggdGhlbSB0byBgJ2Vycm9yJ2Agb25jZSB0aG9zZSBhcmUgZml4ZWQuIEJvdGggdGFrZVxuICAgICAgICogYHsgYWRkaXRpb25hbFBsdWdpbk5hbWVzOiBbLi4uXSB9YCBmb3IgbmFtZXMgdGhlIHNoYXJlZCBsaXN0IGxhY2tzLlxuICAgICAgICovXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQnOiBvYnNpZGlhbkRldlRvb2xraXRQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQvcGx1Z2luLW5hbWUtYXMtY29kZSc6ICdvZmYnLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXRvb2xraXQvcGx1Z2luLW5hbWUtYXMtY29kZS1pbi11aSc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsWUFBWTtBQUVyQixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLG9CQUFvQjtBQUU3QixTQUFTLCtCQUErQjtBQUN4QyxTQUFTLGtCQUFrQjtBQUMzQixTQUFTLGdDQUFnQztBQUN6QyxTQUFTLDBD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
@@ -1,10 +1,14 @@
1
- /// <reference path="../../index.d.mts" />
1
+ /// <reference path="../../library-references.d.mts" />
2
2
  export * as 'manifest-description' from './manifest-description.mjs';
3
3
  export * as 'manifest-helpers' from './manifest-helpers.mjs';
4
4
  export * as 'manifest-id' from './manifest-id.mjs';
5
5
  export * as 'manifest-name' from './manifest-name.mjs';
6
6
  export * as 'manifest-schema' from './manifest-schema.mjs';
7
+ export * as 'no-local-obsidian-internals' from './no-local-obsidian-internals.mjs';
7
8
  export * as 'no-over-cap-wait-in-eval-in-obsidian' from './no-over-cap-wait-in-eval-in-obsidian.mjs';
8
9
  export * as 'no-untrusted-input-events' from './no-untrusted-input-events.mjs';
9
- export * as 'obsidian-dev-utils-plugin' from './obsidian-dev-utils-plugin.mjs';
10
+ export * as 'obsidian-dev-toolkit-plugin' from './obsidian-dev-toolkit-plugin.mjs';
11
+ export * as 'plugin-name-as-code-in-ui' from './plugin-name-as-code-in-ui.mjs';
12
+ export * as 'plugin-name-as-code' from './plugin-name-as-code.mjs';
10
13
  export * as 'require-component-suffix' from './require-component-suffix.mjs';
14
+ export * as 'require-plugin-api-contract-schemas' from './require-plugin-api-contract-schemas.mjs';
@@ -3,68 +3,32 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
- function ensureBrowserProcess() {
13
- const browserProcess = {
14
- browser: true,
15
- cwd() {
16
- return '/';
17
- },
18
- env: {},
19
- platform: 'android'
20
- };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
- const existingProcess = globalThis.process;
24
-
25
- if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
- globalThis.process = browserProcess;
28
- return;
29
- }
30
-
31
- if (existingProcess.versions?.node) {
32
- return;
33
- }
34
-
35
- const existingProcessRecord = existingProcess;
36
-
37
- for (const [key, value] of Object.entries(browserProcess)) {
38
- existingProcessRecord[key] ??= value;
39
- }
40
-
41
- existingProcessRecord['browser'] = true;
42
- }
43
-
44
- (function initEsm() {
45
- ensureDisposeSymbols();
46
- ensureBrowserProcess();
47
- })();
48
- })();
49
-
50
6
  import * as manifest_description from "./manifest-description.mjs";
51
7
  import * as manifest_helpers from "./manifest-helpers.mjs";
52
8
  import * as manifest_id from "./manifest-id.mjs";
53
9
  import * as manifest_name from "./manifest-name.mjs";
54
10
  import * as manifest_schema from "./manifest-schema.mjs";
11
+ import * as no_local_obsidian_internals from "./no-local-obsidian-internals.mjs";
55
12
  import * as no_over_cap_wait_in_eval_in_obsidian from "./no-over-cap-wait-in-eval-in-obsidian.mjs";
56
13
  import * as no_untrusted_input_events from "./no-untrusted-input-events.mjs";
57
- import * as obsidian_dev_utils_plugin from "./obsidian-dev-utils-plugin.mjs";
14
+ import * as obsidian_dev_toolkit_plugin from "./obsidian-dev-toolkit-plugin.mjs";
15
+ import * as plugin_name_as_code_in_ui from "./plugin-name-as-code-in-ui.mjs";
16
+ import * as plugin_name_as_code from "./plugin-name-as-code.mjs";
58
17
  import * as require_component_suffix from "./require-component-suffix.mjs";
18
+ import * as require_plugin_api_contract_schemas from "./require-plugin-api-contract-schemas.mjs";
59
19
  export {
60
20
  manifest_description as "manifest-description",
61
21
  manifest_helpers as "manifest-helpers",
62
22
  manifest_id as "manifest-id",
63
23
  manifest_name as "manifest-name",
64
24
  manifest_schema as "manifest-schema",
25
+ no_local_obsidian_internals as "no-local-obsidian-internals",
65
26
  no_over_cap_wait_in_eval_in_obsidian as "no-over-cap-wait-in-eval-in-obsidian",
66
27
  no_untrusted_input_events as "no-untrusted-input-events",
67
- obsidian_dev_utils_plugin as "obsidian-dev-utils-plugin",
68
- require_component_suffix as "require-component-suffix"
28
+ obsidian_dev_toolkit_plugin as "obsidian-dev-toolkit-plugin",
29
+ plugin_name_as_code as "plugin-name-as-code",
30
+ plugin_name_as_code_in_ui as "plugin-name-as-code-in-ui",
31
+ require_component_suffix as "require-component-suffix",
32
+ require_plugin_api_contract_schemas as "require-plugin-api-contract-schemas"
69
33
  };
70
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ21hbmlmZXN0LWRlc2NyaXB0aW9uJyBmcm9tICcuL21hbmlmZXN0LWRlc2NyaXB0aW9uLnRzJztcbmV4cG9ydCAqIGFzICdtYW5pZmVzdC1oZWxwZXJzJyBmcm9tICcuL21hbmlmZXN0LWhlbHBlcnMudHMnO1xuZXhwb3J0ICogYXMgJ21hbmlmZXN0LWlkJyBmcm9tICcuL21hbmlmZXN0LWlkLnRzJztcbmV4cG9ydCAqIGFzICdtYW5pZmVzdC1uYW1lJyBmcm9tICcuL21hbmlmZXN0LW5hbWUudHMnO1xuZXhwb3J0ICogYXMgJ21hbmlmZXN0LXNjaGVtYScgZnJvbSAnLi9tYW5pZmVzdC1zY2hlbWEudHMnO1xuZXhwb3J0ICogYXMgJ25vLW92ZXItY2FwLXdhaXQtaW4tZXZhbC1pbi1vYnNpZGlhbicgZnJvbSAnLi9uby1vdmVyLWNhcC13YWl0LWluLWV2YWwtaW4tb2JzaWRpYW4udHMnO1xuZXhwb3J0ICogYXMgJ25vLXVudHJ1c3RlZC1pbnB1dC1ldmVudHMnIGZyb20gJy4vbm8tdW50cnVzdGVkLWlucHV0LWV2ZW50cy50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4tZGV2LXV0aWxzLXBsdWdpbicgZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtcGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzICdyZXF1aXJlLWNvbXBvbmVudC1zdWZmaXgnIGZyb20gJy4vcmVxdWlyZS1jb21wb25lbnQtc3VmZml4LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxZQUFZQSwwQkFBNEI7QUFDeEMsWUFBWUMsc0JBQXdCO0FBQ3BDLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMscUJBQXVCO0FBQ25DLFlBQVlDLDBDQUE0QztBQUN4RCxZQUFZQywrQkFBaUM7QUFDN0MsWUFBWUMsK0JBQWlDO0FBQzdDLFlBQVlDLDhCQUFnQzsiLAogICJuYW1lcyI6IFsibWFuaWZlc3QtZGVzY3JpcHRpb24iLCAibWFuaWZlc3QtaGVscGVycyIsICJtYW5pZmVzdC1pZCIsICJtYW5pZmVzdC1uYW1lIiwgIm1hbmlmZXN0LXNjaGVtYSIsICJuby1vdmVyLWNhcC13YWl0LWluLWV2YWwtaW4tb2JzaWRpYW4iLCAibm8tdW50cnVzdGVkLWlucHV0LWV2ZW50cyIsICJvYnNpZGlhbi1kZXYtdXRpbHMtcGx1Z2luIiwgInJlcXVpcmUtY29tcG9uZW50LXN1ZmZpeCJdCn0K
34
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ21hbmlmZXN0LWRlc2NyaXB0aW9uJyBmcm9tICcuL21hbmlmZXN0LWRlc2NyaXB0aW9uLnRzJztcbmV4cG9ydCAqIGFzICdtYW5pZmVzdC1oZWxwZXJzJyBmcm9tICcuL21hbmlmZXN0LWhlbHBlcnMudHMnO1xuZXhwb3J0ICogYXMgJ21hbmlmZXN0LWlkJyBmcm9tICcuL21hbmlmZXN0LWlkLnRzJztcbmV4cG9ydCAqIGFzICdtYW5pZmVzdC1uYW1lJyBmcm9tICcuL21hbmlmZXN0LW5hbWUudHMnO1xuZXhwb3J0ICogYXMgJ21hbmlmZXN0LXNjaGVtYScgZnJvbSAnLi9tYW5pZmVzdC1zY2hlbWEudHMnO1xuZXhwb3J0ICogYXMgJ25vLWxvY2FsLW9ic2lkaWFuLWludGVybmFscycgZnJvbSAnLi9uby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHMudHMnO1xuZXhwb3J0ICogYXMgJ25vLW92ZXItY2FwLXdhaXQtaW4tZXZhbC1pbi1vYnNpZGlhbicgZnJvbSAnLi9uby1vdmVyLWNhcC13YWl0LWluLWV2YWwtaW4tb2JzaWRpYW4udHMnO1xuZXhwb3J0ICogYXMgJ25vLXVudHJ1c3RlZC1pbnB1dC1ldmVudHMnIGZyb20gJy4vbm8tdW50cnVzdGVkLWlucHV0LWV2ZW50cy50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4tZGV2LXRvb2xraXQtcGx1Z2luJyBmcm9tICcuL29ic2lkaWFuLWRldi10b29sa2l0LXBsdWdpbi50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLW5hbWUtYXMtY29kZS1pbi11aScgZnJvbSAnLi9wbHVnaW4tbmFtZS1hcy1jb2RlLWluLXVpLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbmFtZS1hcy1jb2RlJyBmcm9tICcuL3BsdWdpbi1uYW1lLWFzLWNvZGUudHMnO1xuZXhwb3J0ICogYXMgJ3JlcXVpcmUtY29tcG9uZW50LXN1ZmZpeCcgZnJvbSAnLi9yZXF1aXJlLWNvbXBvbmVudC1zdWZmaXgudHMnO1xuZXhwb3J0ICogYXMgJ3JlcXVpcmUtcGx1Z2luLWFwaS1jb250cmFjdC1zY2hlbWFzJyBmcm9tICcuL3JlcXVpcmUtcGx1Z2luLWFwaS1jb250cmFjdC1zY2hlbWFzLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBRUEsWUFBWUEsMEJBQTRCO0FBQ3hDLFlBQVlDLHNCQUF3QjtBQUNwQyxZQUFZQyxpQkFBbUI7QUFDL0IsWUFBWUMsbUJBQXFCO0FBQ2pDLFlBQVlDLHFCQUF1QjtBQUNuQyxZQUFZQyxpQ0FBbUM7QUFDL0MsWUFBWUMsMENBQTRDO0FBQ3hELFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZQyxpQ0FBbUM7QUFDL0MsWUFBWUMsK0JBQWlDO0FBQzdDLFlBQVlDLHlCQUEyQjtBQUN2QyxZQUFZQyw4QkFBZ0M7QUFDNUMsWUFBWUMseUNBQTJDOyIsCiAgIm5hbWVzIjogWyJtYW5pZmVzdC1kZXNjcmlwdGlvbiIsICJtYW5pZmVzdC1oZWxwZXJzIiwgIm1hbmlmZXN0LWlkIiwgIm1hbmlmZXN0LW5hbWUiLCAibWFuaWZlc3Qtc2NoZW1hIiwgIm5vLWxvY2FsLW9ic2lkaWFuLWludGVybmFscyIsICJuby1vdmVyLWNhcC13YWl0LWluLWV2YWwtaW4tb2JzaWRpYW4iLCAibm8tdW50cnVzdGVkLWlucHV0LWV2ZW50cyIsICJvYnNpZGlhbi1kZXYtdG9vbGtpdC1wbHVnaW4iLCAicGx1Z2luLW5hbWUtYXMtY29kZS1pbi11aSIsICJwbHVnaW4tbmFtZS1hcy1jb2RlIiwgInJlcXVpcmUtY29tcG9uZW50LXN1ZmZpeCIsICJyZXF1aXJlLXBsdWdpbi1hcGktY29udHJhY3Qtc2NoZW1hcyJdCn0K
@@ -1,4 +1,4 @@
1
- /// <reference path="../../index.d.mts" />
1
+ /// <reference path="../../library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -3,50 +3,6 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
- function ensureBrowserProcess() {
13
- const browserProcess = {
14
- browser: true,
15
- cwd() {
16
- return '/';
17
- },
18
- env: {},
19
- platform: 'android'
20
- };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
- const existingProcess = globalThis.process;
24
-
25
- if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
- globalThis.process = browserProcess;
28
- return;
29
- }
30
-
31
- if (existingProcess.versions?.node) {
32
- return;
33
- }
34
-
35
- const existingProcessRecord = existingProcess;
36
-
37
- for (const [key, value] of Object.entries(browserProcess)) {
38
- existingProcessRecord[key] ??= value;
39
- }
40
-
41
- existingProcessRecord['browser'] = true;
42
- }
43
-
44
- (function initEsm() {
45
- ensureDisposeSymbols();
46
- ensureBrowserProcess();
47
- })();
48
- })();
49
-
50
6
  import {
51
7
  findManifestMember,
52
8
  getManifestObject,
@@ -151,4 +107,4 @@ export {
151
107
  MESSAGE_ID_TOO_SHORT,
152
108
  manifestDescription
153
109
  };
154
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL21hbmlmZXN0LWRlc2NyaXB0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IG1hbmlmZXN0LWRlc2NyaXB0aW9uXG4gKlxuICogRW5mb3JjZXMgdGhlIENvbW11bml0eSBkaXJlY3RvcnkncyBjb25zdHJhaW50cyBvbiBhIHBsdWdpbidzIGBtYW5pZmVzdC5qc29uYCBgZGVzY3JpcHRpb25gLlxuICpcbiAqIFR3byBvZiB0aGVzZSBjaGVja3MgZGVsaWJlcmF0ZWx5IGRpdmVyZ2UgZnJvbSBgb2JzaWRpYW5tZC92YWxpZGF0ZS1tYW5pZmVzdGA6XG4gKlxuICogLSAqKlNlbGYtcmVmZXJlbmNlLCBub3QgdGhlIHdvcmQgYHBsdWdpbmAuKiogVXBzdHJlYW0ncyBgRk9SQklEREVOX1dPUkRTYCBiYW5zIHRoZSBiYXJlIHN1YnN0cmluZ1xuICogICBgcGx1Z2luYCBpbiB0aGUgZGVzY3JpcHRpb24sIHdoaWNoIHJlamVjdHMgdHdvIGRlc2NyaXB0aW9ucyB0aGUgZGlyZWN0b3J5IGl0c2VsZiBwYXNzZWQgdW50b3VjaGVkIC1cbiAqICAgYEVuaGFuY2VzIE5vdGUgY29tcG9zZXIgY29yZSBwbHVnaW4uYCBhbmQgYC4uLm5vdCBwbHVnaW4gdXBkYXRlcy4uLmAgLSBiZWNhdXNlIGVhY2ggbmFtZXMgc29tZXRoaW5nXG4gKiAgIG90aGVyIHRoYW4gaXRzZWxmLiBUaGUgZGlyZWN0b3J5J3MgYWN0dWFsIG9iamVjdGlvbiBpcyBzZWxmLXJlZmVyZW5jZSwgc28gb25seSBzZWxmLXJlZmVyZW50aWFsXG4gKiAgIHBocmFzZXMgYXJlIG1hdGNoZWQgaGVyZS5cbiAqIC0gKipObyBjaGFyYWN0ZXIgd2hpdGVsaXN0LioqIFVwc3RyZWFtJ3MgZm9ybWF0IGNoZWNrIHJlamVjdHMgYW55dGhpbmcgb3V0c2lkZVxuICogICBgW0EtWmEtejAtOVxccy4sIT8nXCItXWAsIHdoaWNoIGZhaWxzIGJhY2t0aWNrcywgZW0gZGFzaGVzLCBwYXJlbnRoZXNlcywgY29sb25zIGFuZCBzbGFzaGVzLiBTZXZlblxuICogICBsaXZlIGxpc3RpbmdzIGNhcnJ5IHRob3NlIGFuZCB0aGUgZGlyZWN0b3J5IGZsYWdnZWQgbm9uZSwgc28gdGhlIGNoZWNrIGlzIG5vaXNlIHJhdGhlciB0aGFuIGEgZ2F0ZS5cbiAqXG4gKiBUaGUgbm8tYE9ic2lkaWFuYCBjaGVjayBoYXMgdGhlIG9wcG9zaXRlIHByb3ZlbmFuY2U6IHRoZSBkaXJlY3RvcnkgZW5mb3JjZXMgaXQgYW5kIG5vIE9ic2lkaWFuXG4gKiBkb2N1bWVudCBzdGF0ZXMgaXQsIHdoaWNoIGlzIHdoYXQgY29zdCBhIHJlbGVhc2VkIHBsdWdpbiBhIHZlcnNpb24gYnVtcCBmb3Igb25lIHdvcmQuXG4gKlxuICogUnVucyBvbiB0aGUgYEBlc2xpbnQvanNvbmAgYGpzb24vanNvbmAgbGFuZ3VhZ2U7IHNlZSBgbWFuaWZlc3QtaGVscGVycy50c2AgZm9yIHdoeSB0aGUgQVNUIGlzIE1vbW9hXG4gKiByYXRoZXIgdGhhbiBFU1RyZWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHtcbiAgZmluZE1hbmlmZXN0TWVtYmVyLFxuICBnZXRNYW5pZmVzdE9iamVjdCxcbiAgZ2V0U3RyaW5nVmFsdWUsXG4gIHRvUmVwb3J0Tm9kZVxufSBmcm9tICcuL21hbmlmZXN0LWhlbHBlcnMudHMnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiB0aGUgZGVzY3JpcHRpb24gY29udGFpbnMgdGhlIHdvcmQgYE9ic2lkaWFuYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfQ09OVEFJTlNfT0JTSURJQU4gPSAnZGVzY3JpcHRpb25Db250YWluc09ic2lkaWFuJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gdGhlIGRlc2NyaXB0aW9uIGRvZXMgbm90IGVuZCB3aXRoIGEgcGVyaW9kLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9NSVNTSU5HX1BFUklPRCA9ICdkZXNjcmlwdGlvbk1pc3NpbmdQZXJpb2QnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiB0aGUgZGVzY3JpcHRpb24gZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9OT1RfQ0FQSVRBTElaRUQgPSAnZGVzY3JpcHRpb25Ob3RDYXBpdGFsaXplZCc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBkZXNjcmlwdGlvbiByZWZlcnMgdG8gaXRzZWxmLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9TRUxGX1JFRkVSRU5DRSA9ICdkZXNjcmlwdGlvblNlbGZSZWZlcmVuY2UnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiB0aGUgZGVzY3JpcHRpb24gaXMgbG9uZ2VyIHRoYW4gdGhlIGRpcmVjdG9yeSBhbGxvd3MuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX1RPT19MT05HID0gJ2Rlc2NyaXB0aW9uVG9vTG9uZyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBkZXNjcmlwdGlvbiBpcyB0b28gc2hvcnQgdG8gZGVzY3JpYmUgYW55dGhpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX1RPT19TSE9SVCA9ICdkZXNjcmlwdGlvblRvb1Nob3J0JztcblxuLyoqXG5UaGUgbG9uZ2VzdCBkZXNjcmlwdGlvbiB0aGUgQ29tbXVuaXR5IGRpcmVjdG9yeSBhY2NlcHRzLlxuICovXG5jb25zdCBNQVhfREVTQ1JJUFRJT05fTEVOR1RIID0gMjUwO1xuXG4vKipcblRoZSBzaG9ydGVzdCBkZXNjcmlwdGlvbiB0aGF0IGNhbiBwbGF1c2libHkgc2F5IHdoYXQgYSBwbHVnaW4gZG9lcy5cbiAqL1xuY29uc3QgTUlOX0RFU0NSSVBUSU9OX0xFTkdUSCA9IDEwO1xuXG4vKipcblRoZSB3b3JkIGBPYnNpZGlhbmAsIHdoaWNoIHRoZSBkaXJlY3RvcnkgcmVqZWN0cyBpbiBhIGRlc2NyaXB0aW9uIGV2ZW4gdGhvdWdoIG5vIE9ic2lkaWFuIGRvY3VtZW50IHNheXMgc28uXG4gKi9cbmNvbnN0IE9CU0lESUFOX1dPUkQgPSAvXFxib2JzaWRpYW5cXGIvaTtcblxuLyoqXG5UaGUgcGhyYXNpbmdzIHRoZSBkaXJlY3RvcnkgY2FsbHMgb3V0IGFzIHNlbGYtcmVmZXJlbmNlLiBBIGJhcmUgYHBsdWdpbmAgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhbW9uZyB0aGVtOlxubmFtaW5nIGFub3RoZXIgcGx1Z2luLCBvciBwbHVnaW5zIGluIGdlbmVyYWwsIGlzIG5vdCByZWZlcnJpbmcgdG8gb25lc2VsZi5cbiAqL1xuY29uc3QgU0VMRl9SRUZFUkVOQ0VfUEFUVEVSTlMgPSBbXG4gIC9cXGJ0aGlzIHBsdWdpblxcYi9pLFxuICAvXFxidGhpcyBpcyBhIHBsdWdpblxcYi9pLFxuICAvXFxiYSBwbHVnaW4gKD86dGhhdHx3aGljaClcXGIvaSxcbiAgL150aGUgcGx1Z2luXFxiL2ksXG4gIC9ecGx1Z2luXFxiL2lcbl07XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgZW5mb3JjaW5nIHRoZSBDb21tdW5pdHkgZGlyZWN0b3J5J3MgY29uc3RyYWludHMgb24gYSBwbHVnaW4ncyBgbWFuaWZlc3QuanNvbmAgYGRlc2NyaXB0aW9uYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1hbmlmZXN0RGVzY3JpcHRpb246IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgRG9jdW1lbnQobm9kZTogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBjb25zdCBtYW5pZmVzdE9iamVjdCA9IGdldE1hbmlmZXN0T2JqZWN0KG5vZGUpO1xuXG4gICAgICAgIGlmICghbWFuaWZlc3RPYmplY3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZW1iZXIgPSBmaW5kTWFuaWZlc3RNZW1iZXIobWFuaWZlc3RPYmplY3QsICdkZXNjcmlwdGlvbicpO1xuXG4gICAgICAgIGlmICghbWVtYmVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBnZXRTdHJpbmdWYWx1ZShtZW1iZXIudmFsdWUpO1xuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcG9ydE5vZGUgPSB0b1JlcG9ydE5vZGUobWVtYmVyLnZhbHVlKTtcblxuICAgICAgICBpZiAoT0JTSURJQU5fV09SRC50ZXN0KGRlc2NyaXB0aW9uKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9DT05UQUlOU19PQlNJRElBTixcbiAgICAgICAgICAgIG5vZGU6IHJlcG9ydE5vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChTRUxGX1JFRkVSRU5DRV9QQVRURVJOUy5zb21lKChwYXR0ZXJuKSA9PiBwYXR0ZXJuLnRlc3QoZGVzY3JpcHRpb24pKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9TRUxGX1JFRkVSRU5DRSxcbiAgICAgICAgICAgIG5vZGU6IHJlcG9ydE5vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPCBNSU5fREVTQ1JJUFRJT05fTEVOR1RIKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX1RPT19TSE9SVCxcbiAgICAgICAgICAgIG5vZGU6IHJlcG9ydE5vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPiBNQVhfREVTQ1JJUFRJT05fTEVOR1RIKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgZGF0YTogeyBtYXhMZW5ndGg6IE1BWF9ERVNDUklQVElPTl9MRU5HVEgudG9TdHJpbmcoKSB9LFxuICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX1RPT19MT05HLFxuICAgICAgICAgICAgbm9kZTogcmVwb3J0Tm9kZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEvXltBLVpdLy50ZXN0KGRlc2NyaXB0aW9uKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9OT1RfQ0FQSVRBTElaRUQsXG4gICAgICAgICAgICBub2RlOiByZXBvcnROb2RlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRlc2NyaXB0aW9uLmVuZHNXaXRoKCcuJykpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfTUlTU0lOR19QRVJJT0QsXG4gICAgICAgICAgICBub2RlOiByZXBvcnROb2RlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdFbmZvcmNlIHRoZSBDb21tdW5pdHkgZGlyZWN0b3J5XFwncyBjb25zdHJhaW50cyBvbiBhIHBsdWdpblxcJ3MgYG1hbmlmZXN0Lmpzb25gIGBkZXNjcmlwdGlvbmAnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURfQ09OVEFJTlNfT0JTSURJQU5dOiAnVGhlIGBkZXNjcmlwdGlvbmAgbXVzdCBub3QgY29udGFpbiB0aGUgd29yZCBgT2JzaWRpYW5gLiBJdCBpcyBpbXBsaWVkIGJ5IHRoZSBjb250ZXh0IG9mIHRoZSBwbHVnaW4gZGlyZWN0b3J5LicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1BFUklPRF06ICdUaGUgYGRlc2NyaXB0aW9uYCBtdXN0IGVuZCB3aXRoIGEgcGVyaW9kLicsXG4gICAgICBbTUVTU0FHRV9JRF9OT1RfQ0FQSVRBTElaRURdOiAnVGhlIGBkZXNjcmlwdGlvbmAgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuJyxcbiAgICAgIFtNRVNTQUdFX0lEX1NFTEZfUkVGRVJFTkNFXTogJ1RoZSBgZGVzY3JpcHRpb25gIG11c3Qgbm90IHJlZmVyIHRvIGl0c2VsZiwgZS5nLiBgdGhpcyBwbHVnaW5gIG9yIGBhIHBsdWdpbiB0aGF0YC4gRGVzY3JpYmUgd2hhdCBpdCBkb2VzIGluc3RlYWQuJyxcbiAgICAgIFtNRVNTQUdFX0lEX1RPT19MT05HXTogJ1RoZSBgZGVzY3JpcHRpb25gIG11c3QgYmUgYXQgbW9zdCB7eyBtYXhMZW5ndGggfX0gY2hhcmFjdGVycy4nLFxuICAgICAgW01FU1NBR0VfSURfVE9PX1NIT1JUXTogJ1RoZSBgZGVzY3JpcHRpb25gIGlzIHRvbyBzaG9ydCB0byBzYXkgd2hhdCB0aGUgcGx1Z2luIGRvZXMuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAncHJvYmxlbSdcbiAgfVxufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtBLE1BQU0sK0JBQStCO0FBS3JDLE1BQU0sNEJBQTRCO0FBS2xDLE1BQU0sNkJBQTZCO0FBS25DLE1BQU0sNEJBQTRCO0FBS2xDLE1BQU0sc0JBQXNCO0FBSzVCLE1BQU0sdUJBQXVCO0FBS3BDLE1BQU0seUJBQXlCO0FBSy9CLE1BQU0seUJBQXlCO0FBSy9CLE1BQU0sZ0JBQWdCO0FBTXRCLE1BQU0sMEJBQTBCO0FBQUEsRUFDOUI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Y7QUFLTyxNQUFNLHNCQUF1QztBQUFBLEVBQ2xELE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLFNBQVMsTUFBcUI7QUFDNUIsY0FBTSxpQkFBaUIsa0JBQWtCLElBQUk7QUFFN0MsWUFBSSxDQUFDLGdCQUFnQjtBQUNuQjtBQUFBLFFBQ0Y7QUFFQSxjQUFNLFNBQVMsbUJBQW1CLGdCQUFnQixhQUFhO0FBRS9ELFlBQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxRQUNGO0FBRUEsY0FBTSxjQUFjLGVBQWUsT0FBTyxLQUFLO0FBRS9DLFlBQUksZ0JBQWdCLE1BQU07QUFDeEI7QUFBQSxRQUNGO0FBRUEsY0FBTSxhQUFhLGFBQWEsT0FBTyxLQUFLO0FBRTVDLFlBQUksY0FBYyxLQUFLLFdBQVcsR0FBRztBQUNuQyxrQkFBUSxPQUFPO0FBQUEsWUFDYixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsVUFDUixDQUFDO0FBQUEsUUFDSDtBQUVBLFlBQUksd0JBQXdCLEtBQUssQ0FBQyxZQUFZLFFBQVEsS0FBSyxXQUFXLENBQUMsR0FBRztBQUN4RSxrQkFBUSxPQUFPO0FBQUEsWUFDYixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsVUFDUixDQUFDO0FBQUEsUUFDSDtBQUVBLFlBQUksWUFBWSxTQUFTLHdCQUF3QjtBQUMvQyxrQkFBUSxPQUFPO0FBQUEsWUFDYixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsVUFDUixDQUFDO0FBQUEsUUFDSDtBQUVBLFlBQUksWUFBWSxTQUFTLHdCQUF3QjtBQUMvQyxrQkFBUSxPQUFPO0FBQUEsWUFDYixNQUFNLEVBQUUsV0FBVyx1QkFBdUIsU0FBUyxFQUFFO0FBQUEsWUFDckQsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxZQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsR0FBRztBQUMvQixrQkFBUSxPQUFPO0FBQUEsWUFDYixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsVUFDUixDQUFDO0FBQUEsUUFDSDtBQUVBLFlBQUksQ0FBQyxZQUFZLFNBQVMsR0FBRyxHQUFHO0FBQzlCLGtCQUFRLE9BQU87QUFBQSxZQUNiLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsQ0FBQyw0QkFBNEIsR0FBRztBQUFBLE1BQ2hDLENBQUMseUJBQXlCLEdBQUc7QUFBQSxNQUM3QixDQUFDLDBCQUEwQixHQUFHO0FBQUEsTUFDOUIsQ0FBQyx5QkFBeUIsR0FBRztBQUFBLE1BQzdCLENBQUMsbUJBQW1CLEdBQUc7QUFBQSxNQUN2QixDQUFDLG9CQUFvQixHQUFHO0FBQUEsSUFDMUI7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsTUFBTTtBQUFBLEVBQ1I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
110
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL21hbmlmZXN0LWRlc2NyaXB0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IG1hbmlmZXN0LWRlc2NyaXB0aW9uXG4gKlxuICogRW5mb3JjZXMgdGhlIENvbW11bml0eSBkaXJlY3RvcnkncyBjb25zdHJhaW50cyBvbiBhIHBsdWdpbidzIGBtYW5pZmVzdC5qc29uYCBgZGVzY3JpcHRpb25gLlxuICpcbiAqIFR3byBvZiB0aGVzZSBjaGVja3MgZGVsaWJlcmF0ZWx5IGRpdmVyZ2UgZnJvbSBgb2JzaWRpYW5tZC92YWxpZGF0ZS1tYW5pZmVzdGA6XG4gKlxuICogLSAqKlNlbGYtcmVmZXJlbmNlLCBub3QgdGhlIHdvcmQgYHBsdWdpbmAuKiogVXBzdHJlYW0ncyBgRk9SQklEREVOX1dPUkRTYCBiYW5zIHRoZSBiYXJlIHN1YnN0cmluZ1xuICogICBgcGx1Z2luYCBpbiB0aGUgZGVzY3JpcHRpb24sIHdoaWNoIHJlamVjdHMgdHdvIGRlc2NyaXB0aW9ucyB0aGUgZGlyZWN0b3J5IGl0c2VsZiBwYXNzZWQgdW50b3VjaGVkIC1cbiAqICAgYEVuaGFuY2VzIE5vdGUgY29tcG9zZXIgY29yZSBwbHVnaW4uYCBhbmQgYC4uLm5vdCBwbHVnaW4gdXBkYXRlcy4uLmAgLSBiZWNhdXNlIGVhY2ggbmFtZXMgc29tZXRoaW5nXG4gKiAgIG90aGVyIHRoYW4gaXRzZWxmLiBUaGUgZGlyZWN0b3J5J3MgYWN0dWFsIG9iamVjdGlvbiBpcyBzZWxmLXJlZmVyZW5jZSwgc28gb25seSBzZWxmLXJlZmVyZW50aWFsXG4gKiAgIHBocmFzZXMgYXJlIG1hdGNoZWQgaGVyZS5cbiAqIC0gKipObyBjaGFyYWN0ZXIgd2hpdGVsaXN0LioqIFVwc3RyZWFtJ3MgZm9ybWF0IGNoZWNrIHJlamVjdHMgYW55dGhpbmcgb3V0c2lkZVxuICogICBgW0EtWmEtejAtOVxccy4sIT8nXCItXWAsIHdoaWNoIGZhaWxzIGJhY2t0aWNrcywgZW0gZGFzaGVzLCBwYXJlbnRoZXNlcywgY29sb25zIGFuZCBzbGFzaGVzLiBTZXZlblxuICogICBsaXZlIGxpc3RpbmdzIGNhcnJ5IHRob3NlIGFuZCB0aGUgZGlyZWN0b3J5IGZsYWdnZWQgbm9uZSwgc28gdGhlIGNoZWNrIGlzIG5vaXNlIHJhdGhlciB0aGFuIGEgZ2F0ZS5cbiAqXG4gKiBUaGUgbm8tYE9ic2lkaWFuYCBjaGVjayBoYXMgdGhlIG9wcG9zaXRlIHByb3ZlbmFuY2U6IHRoZSBkaXJlY3RvcnkgZW5mb3JjZXMgaXQgYW5kIG5vIE9ic2lkaWFuXG4gKiBkb2N1bWVudCBzdGF0ZXMgaXQsIHdoaWNoIGlzIHdoYXQgY29zdCBhIHJlbGVhc2VkIHBsdWdpbiBhIHZlcnNpb24gYnVtcCBmb3Igb25lIHdvcmQuXG4gKlxuICogUnVucyBvbiB0aGUgYEBlc2xpbnQvanNvbmAgYGpzb24vanNvbmAgbGFuZ3VhZ2U7IHNlZSBgbWFuaWZlc3QtaGVscGVycy50c2AgZm9yIHdoeSB0aGUgQVNUIGlzIE1vbW9hXG4gKiByYXRoZXIgdGhhbiBFU1RyZWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHtcbiAgZmluZE1hbmlmZXN0TWVtYmVyLFxuICBnZXRNYW5pZmVzdE9iamVjdCxcbiAgZ2V0U3RyaW5nVmFsdWUsXG4gIHRvUmVwb3J0Tm9kZVxufSBmcm9tICcuL21hbmlmZXN0LWhlbHBlcnMudHMnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiB0aGUgZGVzY3JpcHRpb24gY29udGFpbnMgdGhlIHdvcmQgYE9ic2lkaWFuYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfQ09OVEFJTlNfT0JTSURJQU4gPSAnZGVzY3JpcHRpb25Db250YWluc09ic2lkaWFuJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gdGhlIGRlc2NyaXB0aW9uIGRvZXMgbm90IGVuZCB3aXRoIGEgcGVyaW9kLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9NSVNTSU5HX1BFUklPRCA9ICdkZXNjcmlwdGlvbk1pc3NpbmdQZXJpb2QnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiB0aGUgZGVzY3JpcHRpb24gZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9OT1RfQ0FQSVRBTElaRUQgPSAnZGVzY3JpcHRpb25Ob3RDYXBpdGFsaXplZCc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBkZXNjcmlwdGlvbiByZWZlcnMgdG8gaXRzZWxmLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9TRUxGX1JFRkVSRU5DRSA9ICdkZXNjcmlwdGlvblNlbGZSZWZlcmVuY2UnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiB0aGUgZGVzY3JpcHRpb24gaXMgbG9uZ2VyIHRoYW4gdGhlIGRpcmVjdG9yeSBhbGxvd3MuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX1RPT19MT05HID0gJ2Rlc2NyaXB0aW9uVG9vTG9uZyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBkZXNjcmlwdGlvbiBpcyB0b28gc2hvcnQgdG8gZGVzY3JpYmUgYW55dGhpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX1RPT19TSE9SVCA9ICdkZXNjcmlwdGlvblRvb1Nob3J0JztcblxuLyoqXG5UaGUgbG9uZ2VzdCBkZXNjcmlwdGlvbiB0aGUgQ29tbXVuaXR5IGRpcmVjdG9yeSBhY2NlcHRzLlxuICovXG5jb25zdCBNQVhfREVTQ1JJUFRJT05fTEVOR1RIID0gMjUwO1xuXG4vKipcblRoZSBzaG9ydGVzdCBkZXNjcmlwdGlvbiB0aGF0IGNhbiBwbGF1c2libHkgc2F5IHdoYXQgYSBwbHVnaW4gZG9lcy5cbiAqL1xuY29uc3QgTUlOX0RFU0NSSVBUSU9OX0xFTkdUSCA9IDEwO1xuXG4vKipcblRoZSB3b3JkIGBPYnNpZGlhbmAsIHdoaWNoIHRoZSBkaXJlY3RvcnkgcmVqZWN0cyBpbiBhIGRlc2NyaXB0aW9uIGV2ZW4gdGhvdWdoIG5vIE9ic2lkaWFuIGRvY3VtZW50IHNheXMgc28uXG4gKi9cbmNvbnN0IE9CU0lESUFOX1dPUkQgPSAvXFxib2JzaWRpYW5cXGIvaTtcblxuLyoqXG5UaGUgcGhyYXNpbmdzIHRoZSBkaXJlY3RvcnkgY2FsbHMgb3V0IGFzIHNlbGYtcmVmZXJlbmNlLiBBIGJhcmUgYHBsdWdpbmAgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhbW9uZyB0aGVtOlxubmFtaW5nIGFub3RoZXIgcGx1Z2luLCBvciBwbHVnaW5zIGluIGdlbmVyYWwsIGlzIG5vdCByZWZlcnJpbmcgdG8gb25lc2VsZi5cbiAqL1xuY29uc3QgU0VMRl9SRUZFUkVOQ0VfUEFUVEVSTlMgPSBbXG4gIC9cXGJ0aGlzIHBsdWdpblxcYi9pLFxuICAvXFxidGhpcyBpcyBhIHBsdWdpblxcYi9pLFxuICAvXFxiYSBwbHVnaW4gKD86dGhhdHx3aGljaClcXGIvaSxcbiAgL150aGUgcGx1Z2luXFxiL2ksXG4gIC9ecGx1Z2luXFxiL2lcbl07XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgZW5mb3JjaW5nIHRoZSBDb21tdW5pdHkgZGlyZWN0b3J5J3MgY29uc3RyYWludHMgb24gYSBwbHVnaW4ncyBgbWFuaWZlc3QuanNvbmAgYGRlc2NyaXB0aW9uYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1hbmlmZXN0RGVzY3JpcHRpb246IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgRG9jdW1lbnQobm9kZTogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBjb25zdCBtYW5pZmVzdE9iamVjdCA9IGdldE1hbmlmZXN0T2JqZWN0KG5vZGUpO1xuXG4gICAgICAgIGlmICghbWFuaWZlc3RPYmplY3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZW1iZXIgPSBmaW5kTWFuaWZlc3RNZW1iZXIobWFuaWZlc3RPYmplY3QsICdkZXNjcmlwdGlvbicpO1xuXG4gICAgICAgIGlmICghbWVtYmVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBnZXRTdHJpbmdWYWx1ZShtZW1iZXIudmFsdWUpO1xuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcG9ydE5vZGUgPSB0b1JlcG9ydE5vZGUobWVtYmVyLnZhbHVlKTtcblxuICAgICAgICBpZiAoT0JTSURJQU5fV09SRC50ZXN0KGRlc2NyaXB0aW9uKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9DT05UQUlOU19PQlNJRElBTixcbiAgICAgICAgICAgIG5vZGU6IHJlcG9ydE5vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChTRUxGX1JFRkVSRU5DRV9QQVRURVJOUy5zb21lKChwYXR0ZXJuKSA9PiBwYXR0ZXJuLnRlc3QoZGVzY3JpcHRpb24pKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9TRUxGX1JFRkVSRU5DRSxcbiAgICAgICAgICAgIG5vZGU6IHJlcG9ydE5vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPCBNSU5fREVTQ1JJUFRJT05fTEVOR1RIKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX1RPT19TSE9SVCxcbiAgICAgICAgICAgIG5vZGU6IHJlcG9ydE5vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPiBNQVhfREVTQ1JJUFRJT05fTEVOR1RIKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgZGF0YTogeyBtYXhMZW5ndGg6IE1BWF9ERVNDUklQVElPTl9MRU5HVEgudG9TdHJpbmcoKSB9LFxuICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX1RPT19MT05HLFxuICAgICAgICAgICAgbm9kZTogcmVwb3J0Tm9kZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEvXltBLVpdLy50ZXN0KGRlc2NyaXB0aW9uKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9OT1RfQ0FQSVRBTElaRUQsXG4gICAgICAgICAgICBub2RlOiByZXBvcnROb2RlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRlc2NyaXB0aW9uLmVuZHNXaXRoKCcuJykpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfTUlTU0lOR19QRVJJT0QsXG4gICAgICAgICAgICBub2RlOiByZXBvcnROb2RlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdFbmZvcmNlIHRoZSBDb21tdW5pdHkgZGlyZWN0b3J5XFwncyBjb25zdHJhaW50cyBvbiBhIHBsdWdpblxcJ3MgYG1hbmlmZXN0Lmpzb25gIGBkZXNjcmlwdGlvbmAnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURfQ09OVEFJTlNfT0JTSURJQU5dOiAnVGhlIGBkZXNjcmlwdGlvbmAgbXVzdCBub3QgY29udGFpbiB0aGUgd29yZCBgT2JzaWRpYW5gLiBJdCBpcyBpbXBsaWVkIGJ5IHRoZSBjb250ZXh0IG9mIHRoZSBwbHVnaW4gZGlyZWN0b3J5LicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1BFUklPRF06ICdUaGUgYGRlc2NyaXB0aW9uYCBtdXN0IGVuZCB3aXRoIGEgcGVyaW9kLicsXG4gICAgICBbTUVTU0FHRV9JRF9OT1RfQ0FQSVRBTElaRURdOiAnVGhlIGBkZXNjcmlwdGlvbmAgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuJyxcbiAgICAgIFtNRVNTQUdFX0lEX1NFTEZfUkVGRVJFTkNFXTogJ1RoZSBgZGVzY3JpcHRpb25gIG11c3Qgbm90IHJlZmVyIHRvIGl0c2VsZiwgZS5nLiBgdGhpcyBwbHVnaW5gIG9yIGBhIHBsdWdpbiB0aGF0YC4gRGVzY3JpYmUgd2hhdCBpdCBkb2VzIGluc3RlYWQuJyxcbiAgICAgIFtNRVNTQUdFX0lEX1RPT19MT05HXTogJ1RoZSBgZGVzY3JpcHRpb25gIG11c3QgYmUgYXQgbW9zdCB7eyBtYXhMZW5ndGggfX0gY2hhcmFjdGVycy4nLFxuICAgICAgW01FU1NBR0VfSURfVE9PX1NIT1JUXTogJ1RoZSBgZGVzY3JpcHRpb25gIGlzIHRvbyBzaG9ydCB0byBzYXkgd2hhdCB0aGUgcGx1Z2luIGRvZXMuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAncHJvYmxlbSdcbiAgfVxufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBMkJBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFLQSxNQUFNLCtCQUErQjtBQUtyQyxNQUFNLDRCQUE0QjtBQUtsQyxNQUFNLDZCQUE2QjtBQUtuQyxNQUFNLDRCQUE0QjtBQUtsQyxNQUFNLHNCQUFzQjtBQUs1QixNQUFNLHVCQUF1QjtBQUtwQyxNQUFNLHlCQUF5QjtBQUsvQixNQUFNLHlCQUF5QjtBQUsvQixNQUFNLGdCQUFnQjtBQU10QixNQUFNLDBCQUEwQjtBQUFBLEVBQzlCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBS08sTUFBTSxzQkFBdUM7QUFBQSxFQUNsRCxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxTQUFTLE1BQXFCO0FBQzVCLGNBQU0saUJBQWlCLGtCQUFrQixJQUFJO0FBRTdDLFlBQUksQ0FBQyxnQkFBZ0I7QUFDbkI7QUFBQSxRQUNGO0FBRUEsY0FBTSxTQUFTLG1CQUFtQixnQkFBZ0IsYUFBYTtBQUUvRCxZQUFJLENBQUMsUUFBUTtBQUNYO0FBQUEsUUFDRjtBQUVBLGNBQU0sY0FBYyxlQUFlLE9BQU8sS0FBSztBQUUvQyxZQUFJLGdCQUFnQixNQUFNO0FBQ3hCO0FBQUEsUUFDRjtBQUVBLGNBQU0sYUFBYSxhQUFhLE9BQU8sS0FBSztBQUU1QyxZQUFJLGNBQWMsS0FBSyxXQUFXLEdBQUc7QUFDbkMsa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxZQUFJLHdCQUF3QixLQUFLLENBQUMsWUFBWSxRQUFRLEtBQUssV0FBVyxDQUFDLEdBQUc7QUFDeEUsa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxZQUFJLFlBQVksU0FBUyx3QkFBd0I7QUFDL0Msa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxZQUFJLFlBQVksU0FBUyx3QkFBd0I7QUFDL0Msa0JBQVEsT0FBTztBQUFBLFlBQ2IsTUFBTSxFQUFFLFdBQVcsdUJBQXVCLFNBQVMsRUFBRTtBQUFBLFlBQ3JELFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBRUEsWUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLEdBQUc7QUFDL0Isa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxZQUFJLENBQUMsWUFBWSxTQUFTLEdBQUcsR0FBRztBQUM5QixrQkFBUSxPQUFPO0FBQUEsWUFDYixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsVUFDUixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLENBQUMsNEJBQTRCLEdBQUc7QUFBQSxNQUNoQyxDQUFDLHlCQUF5QixHQUFHO0FBQUEsTUFDN0IsQ0FBQywwQkFBMEIsR0FBRztBQUFBLE1BQzlCLENBQUMseUJBQXlCLEdBQUc7QUFBQSxNQUM3QixDQUFDLG1CQUFtQixHQUFHO0FBQUEsTUFDdkIsQ0FBQyxvQkFBb0IsR0FBRztBQUFBLElBQzFCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,4 +1,4 @@
1
- /// <reference path="../../index.d.mts" />
1
+ /// <reference path="../../library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *