@mnaoumov/obsidian-lib 10.12.0 → 11.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 (399) hide show
  1. package/components/worker-component/package.json +6 -0
  2. package/components/worker-pool-component/package.json +6 -0
  3. package/dist/lib/cjs/__merged.cjs +409 -292
  4. package/dist/lib/cjs/__merged.d.cts +17 -8
  5. package/dist/lib/cjs/anchored-suggest.cjs +1 -1
  6. package/dist/lib/cjs/app.cjs +2 -2
  7. package/dist/lib/cjs/async-with-notice.cjs +4 -4
  8. package/dist/lib/cjs/attachment-path.cjs +9 -9
  9. package/dist/lib/cjs/attachment-path.d.cts +3 -3
  10. package/dist/lib/cjs/attachment-unit-folder.cjs +2 -2
  11. package/dist/lib/cjs/backlink-index.cjs +5 -5
  12. package/dist/lib/cjs/backlink.cjs +7 -7
  13. package/dist/lib/cjs/bases-view-registrar.cjs +1 -1
  14. package/dist/lib/cjs/broken-link-candidates.cjs +1 -1
  15. package/dist/lib/cjs/bug-report.cjs +3 -3
  16. package/dist/lib/cjs/bulk-operation-progress.cjs +1 -1
  17. package/dist/lib/cjs/bulk-operation.cjs +2 -2
  18. package/dist/lib/cjs/callout.cjs +6 -6
  19. package/dist/lib/cjs/canvas.cjs +11 -9
  20. package/dist/lib/cjs/canvas.d.cts +13 -0
  21. package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -3
  22. package/dist/lib/cjs/code-block-render-handoff.cjs +5 -5
  23. package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +4 -4
  24. package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +2 -2
  25. package/dist/lib/cjs/codemirror/index.cjs +7 -7
  26. package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +5 -5
  27. package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +2 -2
  28. package/dist/lib/cjs/codemirror/settings-facet.cjs +1 -1
  29. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +17 -17
  30. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +13 -13
  31. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -2
  32. package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -2
  33. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +10 -10
  34. package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +7 -7
  35. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -3
  36. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -3
  37. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +2 -2
  38. package/dist/lib/cjs/command-handlers/index.cjs +15 -15
  39. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +6 -6
  40. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -2
  41. package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +2 -2
  42. package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +2 -2
  43. package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +1 -1
  44. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +2 -2
  45. package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +2 -2
  46. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -1
  47. package/dist/lib/cjs/community-plugins.cjs +3 -3
  48. package/dist/lib/cjs/components/abort-signal-component.cjs +2 -2
  49. package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
  50. package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +3 -3
  51. package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
  52. package/dist/lib/cjs/components/async-events-component.cjs +1 -1
  53. package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +12 -12
  54. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +2 -2
  55. package/dist/lib/cjs/components/component-ex.cjs +21 -11
  56. package/dist/lib/cjs/components/component-ex.d.cts +11 -0
  57. package/dist/lib/cjs/components/console-debug-component.cjs +2 -2
  58. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -2
  59. package/dist/lib/cjs/components/disposable-component.cjs +2 -2
  60. package/dist/lib/cjs/components/embed-extensions-component.cjs +1 -1
  61. package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +8 -8
  62. package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +7 -7
  63. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +2 -2
  64. package/dist/lib/cjs/components/incremental-file-index-component.cjs +4 -4
  65. package/dist/lib/cjs/components/index.cjs +46 -40
  66. package/dist/lib/cjs/components/index.d.cts +2 -0
  67. package/dist/lib/cjs/components/layout-ready-component.cjs +3 -3
  68. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +2 -2
  69. package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
  70. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
  71. package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
  72. package/dist/lib/cjs/components/plugin-gate-component.cjs +68 -28
  73. package/dist/lib/cjs/components/plugin-gate-component.d.cts +36 -13
  74. package/dist/lib/cjs/components/plugin-notice-component.cjs +39 -33
  75. package/dist/lib/cjs/components/plugin-notice-component.d.cts +4 -3
  76. package/dist/lib/cjs/components/plugin-settings-component.cjs +113 -17
  77. package/dist/lib/cjs/components/plugin-settings-component.d.cts +35 -5
  78. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -2
  79. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +8 -8
  80. package/dist/lib/cjs/components/pointer-position-component.cjs +2 -2
  81. package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +3 -3
  82. package/dist/lib/cjs/components/registry-component.cjs +2 -2
  83. package/dist/lib/cjs/components/release-notes-component.cjs +6 -6
  84. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +25 -25
  85. package/dist/lib/cjs/components/rmdir-guard-component.cjs +2 -2
  86. package/dist/lib/cjs/components/settings-facet-component.cjs +1 -1
  87. package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
  88. package/dist/lib/cjs/components/shared-component-pool-component.cjs +6 -6
  89. package/dist/lib/cjs/components/style-sheet-component.cjs +3 -3
  90. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -3
  91. package/dist/lib/cjs/components/templates-language-component.cjs +1 -1
  92. package/dist/lib/cjs/components/worker-component.cjs +363 -0
  93. package/dist/lib/cjs/components/worker-component.d.cts +156 -0
  94. package/dist/lib/cjs/components/worker-pool-component.cjs +185 -0
  95. package/dist/lib/cjs/components/worker-pool-component.d.cts +102 -0
  96. package/dist/lib/cjs/components/workspace-layout-state-component.cjs +7 -7
  97. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
  98. package/dist/lib/cjs/constructors/index.cjs +1 -1
  99. package/dist/lib/cjs/data-handler.cjs +111 -4
  100. package/dist/lib/cjs/data-handler.d.cts +92 -1
  101. package/dist/lib/cjs/data-stores/data-store-locations.cjs +82 -24
  102. package/dist/lib/cjs/data-stores/data-store-locations.d.cts +15 -0
  103. package/dist/lib/cjs/data-stores/data-store-replica.cjs +33 -5
  104. package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
  105. package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +2 -2
  106. package/dist/lib/cjs/data-stores/data-store-transport.cjs +81 -8
  107. package/dist/lib/cjs/data-stores/data-store-transport.d.cts +30 -1
  108. package/dist/lib/cjs/data-stores/index.cjs +6 -6
  109. package/dist/lib/cjs/data-stores/local-data-store.cjs +74 -10
  110. package/dist/lib/cjs/data-stores/local-data-store.d.cts +58 -1
  111. package/dist/lib/cjs/data-stores/shared-data-store.cjs +76 -19
  112. package/dist/lib/cjs/data-stores/shared-data-store.d.cts +18 -1
  113. package/dist/lib/cjs/dataview-link.cjs +2 -2
  114. package/dist/lib/cjs/dataview.cjs +27 -7
  115. package/dist/lib/cjs/dataview.d.cts +14 -0
  116. package/dist/lib/cjs/debug.cjs +3 -3
  117. package/dist/lib/cjs/demo-vault-helper.cjs +34 -6
  118. package/dist/lib/cjs/demo-vault-helper.d.cts +6 -2
  119. package/dist/lib/cjs/desktop-bulk-operation-git.cjs +10 -10
  120. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +13 -13
  121. package/dist/lib/cjs/desktop-git-runner.cjs +2 -2
  122. package/dist/lib/cjs/desktop-operating-system.cjs +1 -1
  123. package/dist/lib/cjs/desktop-request-url-stream.cjs +8 -14
  124. package/dist/lib/cjs/desktop-trusted-input.cjs +2 -2
  125. package/dist/lib/cjs/disposable.cjs +150 -0
  126. package/dist/lib/cjs/disposable.d.cts +39 -0
  127. package/dist/lib/cjs/editor-extension-registrar.cjs +1 -1
  128. package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -2
  129. package/dist/lib/cjs/editor-suggest.cjs +1 -1
  130. package/dist/lib/cjs/editor.cjs +6 -6
  131. package/dist/lib/cjs/events.cjs +2 -2
  132. package/dist/lib/cjs/extensions-registrar.cjs +1 -1
  133. package/dist/lib/cjs/feature-request.cjs +1 -1
  134. package/dist/lib/cjs/file-change.cjs +10 -10
  135. package/dist/lib/cjs/file-explorer.cjs +2 -2
  136. package/dist/lib/cjs/file-manager.cjs +5 -5
  137. package/dist/lib/cjs/file-system.cjs +10 -10
  138. package/dist/lib/cjs/folder-note.cjs +4 -4
  139. package/dist/lib/cjs/frontmatter-formatting.cjs +7 -6
  140. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +1 -1
  141. package/dist/lib/cjs/frontmatter.cjs +5 -5
  142. package/dist/lib/cjs/generated-during-build.cjs +1 -1
  143. package/dist/lib/cjs/hotkey.cjs +1 -1
  144. package/dist/lib/cjs/hover-link-source-registrar.cjs +1 -1
  145. package/dist/lib/cjs/html-element.cjs +2 -2
  146. package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -1
  147. package/dist/lib/cjs/i18n/default-translations.cjs +1 -1
  148. package/dist/lib/cjs/i18n/i18n.cjs +7 -7
  149. package/dist/lib/cjs/i18n/index.cjs +4 -4
  150. package/dist/lib/cjs/i18n/locales/en.cjs +5 -1
  151. package/dist/lib/cjs/i18n/locales/en.d.cts +4 -0
  152. package/dist/lib/cjs/i18n/locales/index.cjs +2 -2
  153. package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -1
  154. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +4 -0
  155. package/dist/lib/cjs/index.cjs +145 -127
  156. package/dist/lib/cjs/index.d.cts +6 -0
  157. package/dist/lib/cjs/inline-token-renderer.cjs +2 -2
  158. package/dist/lib/cjs/is-in-obsidian.cjs +1 -1
  159. package/dist/lib/cjs/library-styles.cjs +3 -3
  160. package/dist/lib/cjs/link-and-tag-input-suggest.cjs +2 -2
  161. package/dist/lib/cjs/link.cjs +76 -56
  162. package/dist/lib/cjs/link.d.cts +20 -14
  163. package/dist/lib/cjs/logger.cjs +4 -4
  164. package/dist/lib/cjs/loop.cjs +10 -16
  165. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +17 -2
  166. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +7 -0
  167. package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -13
  168. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -2
  169. package/dist/lib/cjs/markdown-view.cjs +3 -3
  170. package/dist/lib/cjs/markdown.cjs +12 -12
  171. package/dist/lib/cjs/metadata-cache.cjs +23 -23
  172. package/dist/lib/cjs/metadata-cache.d.cts +5 -4
  173. package/dist/lib/cjs/misplaced-attachment.cjs +297 -0
  174. package/dist/lib/cjs/misplaced-attachment.d.cts +228 -0
  175. package/dist/lib/cjs/mobile-app-info.cjs +1 -1
  176. package/dist/lib/cjs/modals/alert.cjs +4 -4
  177. package/dist/lib/cjs/modals/code-block-builder.cjs +7 -7
  178. package/dist/lib/cjs/modals/confirm.cjs +4 -4
  179. package/dist/lib/cjs/modals/copy-text-manually.cjs +4 -4
  180. package/dist/lib/cjs/modals/index.cjs +12 -12
  181. package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
  182. package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -3
  183. package/dist/lib/cjs/modals/modal.cjs +3 -3
  184. package/dist/lib/cjs/modals/prompt.cjs +10 -10
  185. package/dist/lib/cjs/modals/prompt.d.cts +1 -1
  186. package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +5 -5
  187. package/dist/lib/cjs/modals/select-item.cjs +6 -6
  188. package/dist/lib/cjs/modals/select-option.cjs +3 -3
  189. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
  190. package/dist/lib/cjs/note-priority.cjs +2 -2
  191. package/dist/lib/cjs/notebook-navigator.cjs +12 -2
  192. package/dist/lib/cjs/notebook-navigator.d.cts +6 -0
  193. package/dist/lib/cjs/obsidian-lib-state.cjs +1 -1
  194. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +1 -1
  195. package/dist/lib/cjs/obsidian-settings.cjs +1 -1
  196. package/dist/lib/cjs/obsidian-word-characters.cjs +1 -1
  197. package/dist/lib/cjs/parse-link.cjs +14 -14
  198. package/dist/lib/cjs/path-compatibility.cjs +368 -0
  199. package/dist/lib/cjs/path-compatibility.d.cts +263 -0
  200. package/dist/lib/cjs/path-settings.cjs +3 -3
  201. package/dist/lib/cjs/pdf.cjs +2 -2
  202. package/dist/lib/cjs/plugin/index.cjs +16 -13
  203. package/dist/lib/cjs/plugin/index.d.cts +1 -0
  204. package/dist/lib/cjs/plugin/plugin-api.cjs +8 -8
  205. package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +6 -3
  206. package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +5 -0
  207. package/dist/lib/cjs/plugin/plugin-context.cjs +10 -9
  208. package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -1
  209. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +4 -4
  210. package/dist/lib/cjs/plugin/plugin-install-state.cjs +4 -4
  211. package/dist/lib/cjs/plugin/plugin-instance.cjs +14 -12
  212. package/dist/lib/cjs/plugin/plugin-instance.d.cts +7 -0
  213. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -1
  214. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +6 -4
  215. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +15 -15
  216. package/dist/lib/cjs/plugin/plugin.cjs +118 -34
  217. package/dist/lib/cjs/plugin/plugin.d.cts +28 -5
  218. package/dist/lib/cjs/plugin/settings-migration-api.cjs +1 -1
  219. package/dist/lib/cjs/plugin/third-party-plugin.cjs +231 -0
  220. package/dist/lib/cjs/plugin/third-party-plugin.d.cts +244 -0
  221. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -2
  222. package/dist/lib/cjs/popovers/field-popover.cjs +4 -4
  223. package/dist/lib/cjs/popovers/index.cjs +3 -3
  224. package/dist/lib/cjs/popovers/popover-anchor.cjs +1 -1
  225. package/dist/lib/cjs/popovers/popover.cjs +5 -5
  226. package/dist/lib/cjs/queue.cjs +8 -8
  227. package/dist/lib/cjs/react/app-context.cjs +3 -3
  228. package/dist/lib/cjs/react/index.cjs +1 -1
  229. package/dist/lib/cjs/reference-definition.cjs +1 -1
  230. package/dist/lib/cjs/reference.cjs +3 -3
  231. package/dist/lib/cjs/release-asset.cjs +5 -5
  232. package/dist/lib/cjs/rendered-markdown.cjs +4 -4
  233. package/dist/lib/cjs/request-url.cjs +4 -4
  234. package/dist/lib/cjs/resource-lock.cjs +46 -42
  235. package/dist/lib/cjs/resource-lock.d.cts +8 -7
  236. package/dist/lib/cjs/resource-url.cjs +3 -3
  237. package/dist/lib/cjs/ribbon-icon-registrar.cjs +1 -1
  238. package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -3
  239. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +7 -7
  240. package/dist/lib/cjs/setting-components/date-component.cjs +4 -4
  241. package/dist/lib/cjs/setting-components/date-time-component.cjs +4 -4
  242. package/dist/lib/cjs/setting-components/email-component.cjs +2 -2
  243. package/dist/lib/cjs/setting-components/file-component.cjs +2 -2
  244. package/dist/lib/cjs/setting-components/folder-list-component.cjs +3 -3
  245. package/dist/lib/cjs/setting-components/hotkey-component.cjs +5 -5
  246. package/dist/lib/cjs/setting-components/index.cjs +30 -30
  247. package/dist/lib/cjs/setting-components/list-component.cjs +5 -5
  248. package/dist/lib/cjs/setting-components/month-component.cjs +4 -4
  249. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -3
  250. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +2 -2
  251. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -3
  252. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +9 -6
  253. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +4 -1
  254. package/dist/lib/cjs/setting-components/number-component.cjs +2 -2
  255. package/dist/lib/cjs/setting-components/password-component.cjs +2 -2
  256. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -3
  257. package/dist/lib/cjs/setting-components/tag-list-component.cjs +4 -4
  258. package/dist/lib/cjs/setting-components/telephone-component.cjs +2 -2
  259. package/dist/lib/cjs/setting-components/text-based-component.cjs +1 -1
  260. package/dist/lib/cjs/setting-components/time-component.cjs +3 -3
  261. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -3
  262. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -3
  263. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +4 -4
  264. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -1
  265. package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -3
  266. package/dist/lib/cjs/setting-components/url-component.cjs +2 -2
  267. package/dist/lib/cjs/setting-components/validator-component.cjs +4 -4
  268. package/dist/lib/cjs/setting-components/week-component.cjs +4 -4
  269. package/dist/lib/cjs/setting-ex.cjs +26 -26
  270. package/dist/lib/cjs/setting-group-ex.cjs +2 -2
  271. package/dist/lib/cjs/settings-recovery.cjs +217 -0
  272. package/dist/lib/cjs/settings-recovery.d.cts +178 -0
  273. package/dist/lib/cjs/settings-tabs.cjs +5 -5
  274. package/dist/lib/cjs/status-bar-item-registrar.cjs +1 -1
  275. package/dist/lib/cjs/templater.cjs +14 -4
  276. package/dist/lib/cjs/templater.d.cts +6 -0
  277. package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -2
  278. package/dist/lib/cjs/transformers/index.cjs +1 -1
  279. package/dist/lib/cjs/trusted-input.cjs +1 -1
  280. package/dist/lib/cjs/validation.cjs +4 -4
  281. package/dist/lib/cjs/vault-delete.cjs +6 -6
  282. package/dist/lib/cjs/vault-transaction.cjs +5 -5
  283. package/dist/lib/cjs/vault.cjs +12 -12
  284. package/dist/lib/cjs/view-registrar.cjs +1 -1
  285. package/dist/lib/cjs/virtual-file.cjs +16 -14
  286. package/dist/lib/cjs/virtual-file.d.cts +2 -1
  287. package/dist/lib/cjs/wasm.cjs +119 -0
  288. package/dist/lib/cjs/wasm.d.cts +54 -0
  289. package/dist/lib/cjs/worker-protocol.cjs +209 -0
  290. package/dist/lib/cjs/worker-protocol.d.cts +282 -0
  291. package/dist/lib/cjs/workspace.cjs +1 -1
  292. package/dist/lib/esm/__merged.d.mts +17 -8
  293. package/dist/lib/esm/__merged.mjs +133 -3
  294. package/dist/lib/esm/app.mjs +2 -2
  295. package/dist/lib/esm/attachment-path.d.mts +3 -3
  296. package/dist/lib/esm/attachment-path.mjs +2 -2
  297. package/dist/lib/esm/backlink-index.mjs +2 -2
  298. package/dist/lib/esm/canvas.d.mts +13 -0
  299. package/dist/lib/esm/canvas.mjs +6 -5
  300. package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +13 -13
  301. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +14 -14
  302. package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +7 -7
  303. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +8 -8
  304. package/dist/lib/esm/components/component-ex.d.mts +11 -0
  305. package/dist/lib/esm/components/component-ex.mjs +19 -6
  306. package/dist/lib/esm/components/disposable-component.mjs +1 -1
  307. package/dist/lib/esm/components/index.d.mts +2 -0
  308. package/dist/lib/esm/components/index.mjs +5 -1
  309. package/dist/lib/esm/components/plugin-gate-component.d.mts +36 -13
  310. package/dist/lib/esm/components/plugin-gate-component.mjs +57 -14
  311. package/dist/lib/esm/components/plugin-notice-component.d.mts +4 -3
  312. package/dist/lib/esm/components/plugin-notice-component.mjs +30 -21
  313. package/dist/lib/esm/components/plugin-settings-component.d.mts +35 -5
  314. package/dist/lib/esm/components/plugin-settings-component.mjs +99 -3
  315. package/dist/lib/esm/components/rename-delete-handler-component.mjs +2 -2
  316. package/dist/lib/esm/components/worker-component.d.mts +156 -0
  317. package/dist/lib/esm/components/worker-component.mjs +279 -0
  318. package/dist/lib/esm/components/worker-pool-component.d.mts +102 -0
  319. package/dist/lib/esm/components/worker-pool-component.mjs +95 -0
  320. package/dist/lib/esm/components/workspace-layout-state-component.mjs +1 -1
  321. package/dist/lib/esm/data-handler.d.mts +92 -1
  322. package/dist/lib/esm/data-handler.mjs +112 -3
  323. package/dist/lib/esm/data-stores/data-store-locations.d.mts +15 -0
  324. package/dist/lib/esm/data-stores/data-store-locations.mjs +80 -22
  325. package/dist/lib/esm/data-stores/data-store-replica.mjs +33 -5
  326. package/dist/lib/esm/data-stores/data-store-seeds.d.mts +2 -2
  327. package/dist/lib/esm/data-stores/data-store-seeds.mjs +4 -4
  328. package/dist/lib/esm/data-stores/data-store-transport.d.mts +30 -1
  329. package/dist/lib/esm/data-stores/data-store-transport.mjs +78 -5
  330. package/dist/lib/esm/data-stores/local-data-store.d.mts +58 -1
  331. package/dist/lib/esm/data-stores/local-data-store.mjs +71 -9
  332. package/dist/lib/esm/data-stores/shared-data-store.d.mts +18 -1
  333. package/dist/lib/esm/data-stores/shared-data-store.mjs +72 -15
  334. package/dist/lib/esm/dataview.d.mts +14 -0
  335. package/dist/lib/esm/dataview.mjs +19 -1
  336. package/dist/lib/esm/demo-vault-helper.d.mts +6 -2
  337. package/dist/lib/esm/demo-vault-helper.mjs +29 -1
  338. package/dist/lib/esm/desktop-demo-vault-opener.mjs +1 -1
  339. package/dist/lib/esm/desktop-request-url-stream.mjs +4 -10
  340. package/dist/lib/esm/disposable.d.mts +39 -0
  341. package/dist/lib/esm/disposable.mjs +64 -0
  342. package/dist/lib/esm/file-system.mjs +2 -2
  343. package/dist/lib/esm/frontmatter-formatting.mjs +2 -1
  344. package/dist/lib/esm/generated-during-build.mjs +1 -1
  345. package/dist/lib/esm/i18n/locales/en.d.mts +4 -0
  346. package/dist/lib/esm/i18n/locales/en.mjs +5 -1
  347. package/dist/lib/esm/i18n/locales/translations-map.d.mts +4 -0
  348. package/dist/lib/esm/index.d.mts +6 -0
  349. package/dist/lib/esm/index.mjs +13 -1
  350. package/dist/lib/esm/link.d.mts +20 -14
  351. package/dist/lib/esm/link.mjs +57 -38
  352. package/dist/lib/esm/loop.mjs +2 -8
  353. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +7 -0
  354. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +16 -1
  355. package/dist/lib/esm/metadata-cache.d.mts +5 -4
  356. package/dist/lib/esm/metadata-cache.mjs +6 -6
  357. package/dist/lib/esm/misplaced-attachment.d.mts +228 -0
  358. package/dist/lib/esm/misplaced-attachment.mjs +212 -0
  359. package/dist/lib/esm/modals/prompt.d.mts +1 -1
  360. package/dist/lib/esm/modals/prompt.mjs +1 -1
  361. package/dist/lib/esm/notebook-navigator.d.mts +6 -0
  362. package/dist/lib/esm/notebook-navigator.mjs +11 -2
  363. package/dist/lib/esm/parse-link.mjs +4 -4
  364. package/dist/lib/esm/path-compatibility.d.mts +263 -0
  365. package/dist/lib/esm/path-compatibility.mjs +277 -0
  366. package/dist/lib/esm/plugin/index.d.mts +1 -0
  367. package/dist/lib/esm/plugin/index.mjs +4 -2
  368. package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +5 -0
  369. package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +3 -1
  370. package/dist/lib/esm/plugin/plugin-context.mjs +2 -1
  371. package/dist/lib/esm/plugin/plugin-event-source.d.mts +4 -4
  372. package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
  373. package/dist/lib/esm/plugin/plugin-instance.d.mts +7 -0
  374. package/dist/lib/esm/plugin/plugin-instance.mjs +2 -1
  375. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +6 -4
  376. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -1
  377. package/dist/lib/esm/plugin/plugin.d.mts +28 -5
  378. package/dist/lib/esm/plugin/plugin.mjs +103 -9
  379. package/dist/lib/esm/plugin/third-party-plugin.d.mts +244 -0
  380. package/dist/lib/esm/plugin/third-party-plugin.mjs +147 -0
  381. package/dist/lib/esm/release-asset.mjs +1 -1
  382. package/dist/lib/esm/resource-lock.d.mts +8 -7
  383. package/dist/lib/esm/resource-lock.mjs +31 -26
  384. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +4 -1
  385. package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -3
  386. package/dist/lib/esm/settings-recovery.d.mts +178 -0
  387. package/dist/lib/esm/settings-recovery.mjs +125 -0
  388. package/dist/lib/esm/settings-tabs.mjs +2 -2
  389. package/dist/lib/esm/templater.d.mts +6 -0
  390. package/dist/lib/esm/templater.mjs +11 -2
  391. package/dist/lib/esm/vault.mjs +1 -1
  392. package/dist/lib/esm/virtual-file.d.mts +2 -1
  393. package/dist/lib/esm/virtual-file.mjs +7 -5
  394. package/dist/lib/esm/wasm.d.mts +54 -0
  395. package/dist/lib/esm/wasm.mjs +30 -0
  396. package/dist/lib/esm/worker-protocol.d.mts +282 -0
  397. package/dist/lib/esm/worker-protocol.mjs +113 -0
  398. package/package.json +9 -8
  399. package/plugin/third-party-plugin/package.json +6 -0
@@ -0,0 +1,277 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+ (function () {
6
+ function ensureBrowserProcess() {
7
+ const browserProcess = {
8
+ browser: true,
9
+ cwd() {
10
+ return "/";
11
+ },
12
+ env: {},
13
+ platform: "android"
14
+ };
15
+ const existingProcess = globalThis.process;
16
+ if (!existingProcess) {
17
+ globalThis.process = browserProcess;
18
+ return;
19
+ }
20
+ if (existingProcess.versions?.node) {
21
+ return;
22
+ }
23
+ const existingProcessRecord = existingProcess;
24
+ for (const [key, value] of Object.entries(browserProcess)) {
25
+ existingProcessRecord[key] ??= value;
26
+ }
27
+ existingProcessRecord["browser"] = true;
28
+ }
29
+
30
+ ensureBrowserProcess();
31
+ })();
32
+
33
+ import { Platform } from "obsidian";
34
+ import {
35
+ getOsUnsafePathCharsRegExp,
36
+ hasWindowsTrailingChars,
37
+ isWindowsReservedName,
38
+ OBSIDIAN_UNSAFE_FILENAME_CHARS,
39
+ trimWindowsTrailingChars
40
+ } from "./validation.mjs";
41
+ var PathCompatibilityPlatform = /* @__PURE__ */ ((PathCompatibilityPlatform2) => {
42
+ PathCompatibilityPlatform2["Android"] = "Android";
43
+ PathCompatibilityPlatform2["Ios"] = "Ios";
44
+ PathCompatibilityPlatform2["Linux"] = "Linux";
45
+ PathCompatibilityPlatform2["MacOs"] = "MacOs";
46
+ PathCompatibilityPlatform2["Windows"] = "Windows";
47
+ return PathCompatibilityPlatform2;
48
+ })(PathCompatibilityPlatform || {});
49
+ var PathCompatibilityViolationType = /* @__PURE__ */ ((PathCompatibilityViolationType2) => {
50
+ PathCompatibilityViolationType2["ForbiddenCharacter"] = "ForbiddenCharacter";
51
+ PathCompatibilityViolationType2["NameTooLong"] = "NameTooLong";
52
+ PathCompatibilityViolationType2["ObsidianForbiddenCharacter"] = "ObsidianForbiddenCharacter";
53
+ PathCompatibilityViolationType2["PathTooLong"] = "PathTooLong";
54
+ PathCompatibilityViolationType2["ReservedName"] = "ReservedName";
55
+ PathCompatibilityViolationType2["TrailingCharacter"] = "TrailingCharacter";
56
+ PathCompatibilityViolationType2["UnicodeNotNormalized"] = "UnicodeNotNormalized";
57
+ return PathCompatibilityViolationType2;
58
+ })(PathCompatibilityViolationType || {});
59
+ const PATH_COMPATIBILITY_PLATFORMS = [
60
+ "Windows" /* Windows */,
61
+ "Android" /* Android */,
62
+ "Linux" /* Linux */,
63
+ "MacOs" /* MacOs */,
64
+ "Ios" /* Ios */
65
+ ];
66
+ const PATH_COMPATIBILITY_PLATFORM_LABELS = {
67
+ ["Android" /* Android */]: "Android",
68
+ ["Ios" /* Ios */]: "iOS",
69
+ ["Linux" /* Linux */]: "Linux",
70
+ ["MacOs" /* MacOs */]: "macOS",
71
+ ["Windows" /* Windows */]: "Windows"
72
+ };
73
+ const WINDOWS_MAX_FILE_PATH_LENGTH = 259;
74
+ const WINDOWS_MAX_FOLDER_PATH_LENGTH = 247;
75
+ const WINDOWS_MAX_NAME_LENGTH = 255;
76
+ const UNIX_MAX_NAME_BYTES = 255;
77
+ const LINUX_MAX_PATH_BYTES = 4096;
78
+ const DARWIN_MAX_PATH_BYTES = 1024;
79
+ const CONTROL_CHARS_REG_EXP = /[\u{0}-\u{1F}]/gu;
80
+ const PATH_COMPATIBILITY_PROFILES = {
81
+ ["Android" /* Android */]: {
82
+ hasWindowsNamingRules: false,
83
+ maxFilePathLength: LINUX_MAX_PATH_BYTES,
84
+ maxFolderPathLength: LINUX_MAX_PATH_BYTES,
85
+ maxNameLength: UNIX_MAX_NAME_BYTES,
86
+ platform: "Android" /* Android */,
87
+ shouldMeasureInBytes: true
88
+ },
89
+ ["Ios" /* Ios */]: {
90
+ hasWindowsNamingRules: false,
91
+ maxFilePathLength: DARWIN_MAX_PATH_BYTES,
92
+ maxFolderPathLength: DARWIN_MAX_PATH_BYTES,
93
+ maxNameLength: UNIX_MAX_NAME_BYTES,
94
+ platform: "Ios" /* Ios */,
95
+ shouldMeasureInBytes: true
96
+ },
97
+ ["Linux" /* Linux */]: {
98
+ hasWindowsNamingRules: false,
99
+ maxFilePathLength: LINUX_MAX_PATH_BYTES,
100
+ maxFolderPathLength: LINUX_MAX_PATH_BYTES,
101
+ maxNameLength: UNIX_MAX_NAME_BYTES,
102
+ platform: "Linux" /* Linux */,
103
+ shouldMeasureInBytes: true
104
+ },
105
+ ["MacOs" /* MacOs */]: {
106
+ hasWindowsNamingRules: false,
107
+ maxFilePathLength: DARWIN_MAX_PATH_BYTES,
108
+ maxFolderPathLength: DARWIN_MAX_PATH_BYTES,
109
+ maxNameLength: UNIX_MAX_NAME_BYTES,
110
+ platform: "MacOs" /* MacOs */,
111
+ shouldMeasureInBytes: true
112
+ },
113
+ ["Windows" /* Windows */]: {
114
+ hasWindowsNamingRules: true,
115
+ maxFilePathLength: WINDOWS_MAX_FILE_PATH_LENGTH,
116
+ maxFolderPathLength: WINDOWS_MAX_FOLDER_PATH_LENGTH,
117
+ maxNameLength: WINDOWS_MAX_NAME_LENGTH,
118
+ platform: "Windows" /* Windows */,
119
+ shouldMeasureInBytes: false
120
+ }
121
+ };
122
+ function findPathCompatibilityViolations(params) {
123
+ const violations = [];
124
+ const name = getName(params.path);
125
+ const profiles = getProfiles(params.platforms);
126
+ const obsidianForbiddenCharacters = findCharacters(name, OBSIDIAN_UNSAFE_FILENAME_CHARS);
127
+ if (profiles.length > 0 && obsidianForbiddenCharacters.length > 0) {
128
+ violations.push({ characters: obsidianForbiddenCharacters, platform: null, type: "ObsidianForbiddenCharacter" /* ObsidianForbiddenCharacter */ });
129
+ }
130
+ for (const profile of profiles) {
131
+ const maxPathLength = params.isFolder ? profile.maxFolderPathLength : profile.maxFilePathLength;
132
+ const fullPathLength = params.maxVaultRootPathLength + 1 + measure(params.path, profile.shouldMeasureInBytes);
133
+ if (fullPathLength > maxPathLength) {
134
+ violations.push({
135
+ measurement: {
136
+ isInBytes: profile.shouldMeasureInBytes,
137
+ length: fullPathLength,
138
+ limit: maxPathLength,
139
+ vaultRootLength: params.maxVaultRootPathLength
140
+ },
141
+ platform: profile.platform,
142
+ type: "PathTooLong" /* PathTooLong */
143
+ });
144
+ }
145
+ const nameLength = measure(name, profile.shouldMeasureInBytes);
146
+ if (nameLength > profile.maxNameLength) {
147
+ violations.push({
148
+ measurement: { isInBytes: profile.shouldMeasureInBytes, length: nameLength, limit: profile.maxNameLength, vaultRootLength: null },
149
+ platform: profile.platform,
150
+ type: "NameTooLong" /* NameTooLong */
151
+ });
152
+ }
153
+ const platformForbiddenCharacters = findCharacters(name, getPlatformForbiddenCharactersRegExp(profile));
154
+ if (platformForbiddenCharacters.length > 0) {
155
+ violations.push({ characters: platformForbiddenCharacters, platform: profile.platform, type: "ForbiddenCharacter" /* ForbiddenCharacter */ });
156
+ }
157
+ if (!profile.hasWindowsNamingRules) {
158
+ continue;
159
+ }
160
+ if (isWindowsReservedName(name)) {
161
+ violations.push({ platform: profile.platform, type: "ReservedName" /* ReservedName */ });
162
+ }
163
+ if (hasWindowsTrailingChars(name)) {
164
+ violations.push({ platform: profile.platform, type: "TrailingCharacter" /* TrailingCharacter */ });
165
+ }
166
+ }
167
+ return violations;
168
+ }
169
+ function getCurrentPathCompatibilityPlatform() {
170
+ if (Platform.isWin) {
171
+ return "Windows" /* Windows */;
172
+ }
173
+ if (Platform.isAndroidApp) {
174
+ return "Android" /* Android */;
175
+ }
176
+ if (Platform.isIosApp) {
177
+ return "Ios" /* Ios */;
178
+ }
179
+ if (Platform.isMacOS) {
180
+ return "MacOs" /* MacOs */;
181
+ }
182
+ return Platform.isLinux ? "Linux" /* Linux */ : null;
183
+ }
184
+ function getForbiddenCharacterReplacementValidationMessage(replacement) {
185
+ const regExps = [
186
+ getOsUnsafePathCharsRegExp(true, false),
187
+ getOsUnsafePathCharsRegExp(false, true),
188
+ getOsUnsafePathCharsRegExp(false, false),
189
+ OBSIDIAN_UNSAFE_FILENAME_CHARS,
190
+ CONTROL_CHARS_REG_EXP
191
+ ];
192
+ for (const char of replacement) {
193
+ if (regExps.some((regExp) => char.replace(regExp, "") !== char)) {
194
+ return `The replacement must not contain "${char}": a file name cannot hold it on every platform.`;
195
+ }
196
+ }
197
+ return "";
198
+ }
199
+ function isUnicodeNormalized(name) {
200
+ return name === name.normalize("NFC");
201
+ }
202
+ function measure($string, shouldMeasureInBytes) {
203
+ return shouldMeasureInBytes ? new Blob([$string]).size : $string.length;
204
+ }
205
+ function repairName(params) {
206
+ const profiles = getProfiles(params.platforms);
207
+ if (profiles.length === 0) {
208
+ return buildName(params.basename, params.extension);
209
+ }
210
+ let basename = params.basename;
211
+ let extension = params.extension;
212
+ for (const profile of profiles) {
213
+ basename = replaceForbiddenCharacters(basename, profile, params.forbiddenCharacterReplacement);
214
+ extension = replaceForbiddenCharacters(extension, profile, params.forbiddenCharacterReplacement);
215
+ }
216
+ extension = trimTrailingDotsAndSpaces(extension, profiles);
217
+ basename = trimTrailingDotsAndSpaces(basename, profiles);
218
+ if (profiles.some((profile) => profile.hasWindowsNamingRules) && isWindowsReservedName(buildName(basename, extension))) {
219
+ basename += "_";
220
+ }
221
+ const codePoints = [...basename];
222
+ while (codePoints.length > 0) {
223
+ const candidate = trimTrailingDotsAndSpaces(codePoints.join(""), profiles);
224
+ if (candidate === "") {
225
+ return null;
226
+ }
227
+ if (doesFitEveryProfile(candidate, extension, profiles, params)) {
228
+ return buildName(candidate, extension);
229
+ }
230
+ codePoints.pop();
231
+ }
232
+ return null;
233
+ }
234
+ function buildName(basename, extension) {
235
+ return extension === "" ? basename : `${basename}.${extension}`;
236
+ }
237
+ function doesFitEveryProfile(basename, extension, profiles, params) {
238
+ const name = buildName(basename, extension);
239
+ const path = params.parentPath === "" ? name : `${params.parentPath}/${name}`;
240
+ return profiles.every((profile) => {
241
+ const maxPathLength = params.isFolder ? profile.maxFolderPathLength : profile.maxFilePathLength;
242
+ const fullPathLength = params.maxVaultRootPathLength + 1 + measure(path, profile.shouldMeasureInBytes);
243
+ return measure(name, profile.shouldMeasureInBytes) <= profile.maxNameLength && fullPathLength <= maxPathLength;
244
+ });
245
+ }
246
+ function findCharacters(name, regExp) {
247
+ return [...new Set(name.match(regExp))];
248
+ }
249
+ function getName(path) {
250
+ const slashIndex = path.lastIndexOf("/");
251
+ return slashIndex === -1 ? path : path.slice(slashIndex + 1);
252
+ }
253
+ function getPlatformForbiddenCharactersRegExp(profile) {
254
+ return getOsUnsafePathCharsRegExp(profile.hasWindowsNamingRules, profile.platform === "Android" /* Android */);
255
+ }
256
+ function getProfiles(platforms) {
257
+ return platforms.map((platform) => PATH_COMPATIBILITY_PROFILES[platform]);
258
+ }
259
+ function replaceForbiddenCharacters($string, profile, replacement) {
260
+ return $string.replace(getPlatformForbiddenCharactersRegExp(profile), () => replacement).replace(OBSIDIAN_UNSAFE_FILENAME_CHARS, () => replacement);
261
+ }
262
+ function trimTrailingDotsAndSpaces($string, profiles) {
263
+ return profiles.some((profile) => profile.hasWindowsNamingRules) ? trimWindowsTrailingChars($string) : $string;
264
+ }
265
+ export {
266
+ PATH_COMPATIBILITY_PLATFORMS,
267
+ PATH_COMPATIBILITY_PLATFORM_LABELS,
268
+ PathCompatibilityPlatform,
269
+ PathCompatibilityViolationType,
270
+ findPathCompatibilityViolations,
271
+ getCurrentPathCompatibilityPlatform,
272
+ getForbiddenCharacterReplacementValidationMessage,
273
+ isUnicodeNormalized,
274
+ measure,
275
+ repairName
276
+ };
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXRoLWNvbXBhdGliaWxpdHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFdoaWNoIG5hbWluZyBjb25zdHJhaW50cyBlYWNoIHBsYXRmb3JtIGltcG9zZXMsIHdoaWNoIG9mIHRoZW0gYSBnaXZlbiBwYXRoIHZpb2xhdGVzLCBhbmQgaG93IHRvIHJlcGFpciBhXG4gKiBuYW1lIHNvIGl0IHNhdGlzZmllcyBldmVyeSBlbmFibGVkIHBsYXRmb3JtIGF0IG9uY2UuXG4gKlxuICogUHVyZSBieSBkZXNpZ24g4oCUIG5vIGBBcHBgLCBubyB2YXVsdCwgbm8gSS9PIOKAlCBzbyB0aGUgd2hvbGUgY29ycmVjdG5lc3Mgc3VyZmFjZSAoYnl0ZSBjb3VudGluZywgZXh0ZW5zaW9uXG4gKiBwcmVzZXJ2YXRpb24sIHRydW5jYXRpb24gb3JkZXIsIHByb2ZpbGUgY29tcG9zaXRpb24pIGlzIHVuaXQtdGVzdGFibGUgd2l0aG91dCBhbiBPYnNpZGlhbiBpbnN0YW5jZS4gVGhlXG4gKiB2YXVsdCBwYXNzIHRoYXQgY29uc3VtZXMgaXQgbGl2ZXMgaW4gZWFjaCBwbHVnaW4gdGhhdCByZXBvcnRzIG9yIHJlcGFpcnMgcGF0aCBwcm9ibGVtcy5cbiAqXG4gKiBBIHZhdWx0IGlzIHN5bmNlZCwgc28gdGhlIHBsYXRmb3JtIHRoYXQgbWF0dGVycyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIG9uZSBydW5uaW5nOiBlbmFibGluZyBzZXZlcmFsXG4gKiBwbGF0Zm9ybXMgY29tcG9zZXMgdGhlaXIgY29uc3RyYWludHMgYnkgaW50ZXJzZWN0aW9uLCBhbmQgYSBuYW1lIGhhcyB0byBzYXRpc2Z5IGFsbCBvZiB0aGVtLlxuICovXG5cbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBnZXRPc1Vuc2FmZVBhdGhDaGFyc1JlZ0V4cCxcbiAgaGFzV2luZG93c1RyYWlsaW5nQ2hhcnMsXG4gIGlzV2luZG93c1Jlc2VydmVkTmFtZSxcbiAgT0JTSURJQU5fVU5TQUZFX0ZJTEVOQU1FX0NIQVJTLFxuICB0cmltV2luZG93c1RyYWlsaW5nQ2hhcnNcbn0gZnJvbSAnLi92YWxpZGF0aW9uLnRzJztcblxuLyoqXG4gKiBBIHBsYXRmb3JtIGEgdmF1bHQgbWF5IGJlIHN5bmNlZCB0bywgYW5kIHdob3NlIG5hbWluZyBydWxlcyBjYW4gdGhlcmVmb3JlIGJlIGVuZm9yY2VkLlxuICovXG5leHBvcnQgZW51bSBQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtIHtcbiAgQW5kcm9pZCA9ICdBbmRyb2lkJyxcbiAgSW9zID0gJ0lvcycsXG4gIExpbnV4ID0gJ0xpbnV4JyxcbiAgTWFjT3MgPSAnTWFjT3MnLFxuICBXaW5kb3dzID0gJ1dpbmRvd3MnXG59XG5cbi8qKlxuICogV2hhdCBhIHNpbmdsZSBwYXRoIG9yIG5hbWUgaXMgd3JvbmcgYWJvdXQsIG9uIG9uZSBwbGF0Zm9ybS5cbiAqL1xuZXhwb3J0IGVudW0gUGF0aENvbXBhdGliaWxpdHlWaW9sYXRpb25UeXBlIHtcbiAgRm9yYmlkZGVuQ2hhcmFjdGVyID0gJ0ZvcmJpZGRlbkNoYXJhY3RlcicsXG4gIE5hbWVUb29Mb25nID0gJ05hbWVUb29Mb25nJyxcblxuICAvKipcbiAgICogVGhlIG5hbWUgaG9sZHMgYSBjaGFyYWN0ZXIgT2JzaWRpYW4gbGlua3MgZG8gbm90IHdvcmsgd2l0aCAoYCNgLCBgXmAsIGBbYCwgYF1gLCBgfGApLiBPYnNpZGlhbidzIHJ1bGUsIG5vdFxuICAgKiBhIHBsYXRmb3JtJ3M6IHRoZSBmaWxlc3lzdGVtIHN0b3JlcyBzdWNoIGEgbmFtZSBmaW5lLCBzbyBuYW1pbmcgYSBwbGF0Zm9ybSBmb3IgaXQgd291bGQgYmUgZmFsc2UuXG4gICAqL1xuICBPYnNpZGlhbkZvcmJpZGRlbkNoYXJhY3RlciA9ICdPYnNpZGlhbkZvcmJpZGRlbkNoYXJhY3RlcicsXG4gIFBhdGhUb29Mb25nID0gJ1BhdGhUb29Mb25nJyxcbiAgUmVzZXJ2ZWROYW1lID0gJ1Jlc2VydmVkTmFtZScsXG4gIFRyYWlsaW5nQ2hhcmFjdGVyID0gJ1RyYWlsaW5nQ2hhcmFjdGVyJyxcblxuICAvKipcbiAgICogVGhlIG5hbWUgaXMgc3RvcmVkIG9uIGRpc2sgaW4gYSBmb3JtIG90aGVyIHRoYW4gVW5pY29kZSBORkMsIGUuZy4gYNC5YCBhcyBg0LhgIGZvbGxvd2VkIGJ5IGEgY29tYmluaW5nXG4gICAqIGJyZXZlLiBOb3QgYSBwbGF0Zm9ybSdzIHJ1bGUgYnV0IGEgc3luYyBoYXphcmQ6IHRvb2xzIG91dHNpZGUgT2JzaWRpYW4gc2VlIHRoZSB0d28gZm9ybXMgYXMgdHdvIG5hbWVzLlxuICAgKi9cbiAgVW5pY29kZU5vdE5vcm1hbGl6ZWQgPSAnVW5pY29kZU5vdE5vcm1hbGl6ZWQnXG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbmRQYXRoQ29tcGF0aWJpbGl0eVZpb2xhdGlvbnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRQYXRoQ29tcGF0aWJpbGl0eVZpb2xhdGlvbnNQYXJhbXMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcGF0aCBuYW1lcyBhIGZvbGRlciwgd2hpY2ggaGFzIGl0cyBvd24gcGF0aCBidWRnZXQuXG4gICAqL1xuICByZWFkb25seSBpc0ZvbGRlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCB2YXVsdCByb290IHBhdGggdGhlIHZhdWx0IGlzIGV4cGVjdGVkIHRvIGxpdmUgdW5kZXIsIGluIGNoYXJhY3RlcnMuXG4gICAqXG4gICAqIFRoZSB2YXVsdCByb290IG9mIGEgcGxhdGZvcm0gdGhlIGNoZWNrIGlzIG5vdCBydW5uaW5nIG9uIGlzIHVua25vd2FibGUsIHNvIGl0IGlzIHN0YXRlZCByYXRoZXIgdGhhblxuICAgKiBndWVzc2VkIOKAlCBzZWUgdGhlIGBtYXhWYXVsdFJvb3RQYXRoTGVuZ3RoYCBzZXR0aW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4VmF1bHRSb290UGF0aExlbmd0aDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCB0byBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsYXRmb3JtcyB3aG9zZSBydWxlcyB0byBlbmZvcmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm1zOiByZWFkb25seSBQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtW107XG59XG5cbi8qKlxuICogQSBsZW5ndGggYSBwYXRoIG9yIG5hbWUgd2FzIG1lYXN1cmVkIGF0LCBhbmQgdGhlIGxpbWl0IGl0IGV4Y2VlZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aENvbXBhdGliaWxpdHlNZWFzdXJlbWVudCB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGJvdGggbnVtYmVycyBjb3VudCBVVEYtOCBieXRlcyByYXRoZXIgdGhhbiBVVEYtMTYgdW5pdHMuXG4gICAqL1xuICByZWFkb25seSBpc0luQnl0ZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtZWFzdXJlZCBsZW5ndGguXG4gICAqL1xuICByZWFkb25seSBsZW5ndGg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxhcmdlc3QgbGVuZ3RoIHRoZSBwbGF0Zm9ybSBhY2NlcHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGltaXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhdWx0IHJvb3QgbGVuZ3RoIGNvdW50ZWQgaW50byB7QGxpbmsgUGF0aENvbXBhdGliaWxpdHlNZWFzdXJlbWVudC5sZW5ndGh9LCBiZWZvcmUgdGhlIHNlcGFyYXRvclxuICAgKiBhZnRlciBpdC4gYG51bGxgIGZvciBhIG5hbWUsIHdoaWNoIGNhcnJpZXMgbm8gcm9vdC5cbiAgICovXG4gIHJlYWRvbmx5IHZhdWx0Um9vdExlbmd0aDogbnVsbCB8IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgbmFtaW5nIHJ1bGVzIG9mIG9uZSBwbGF0Zm9ybS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXRoQ29tcGF0aWJpbGl0eVByb2ZpbGUge1xuICAvKipcbiAgICogV2hldGhlciB0aGlzIHBsYXRmb3JtIGFwcGxpZXMgV2luZG93cycgbmFtaW5nIHJ1bGVzOiBpdHMgZm9yYmlkZGVuIGNoYXJhY3RlcnMsIGl0cyByZXNlcnZlZCBkZXZpY2VcbiAgICogbmFtZXMsIGFuZCBpdHMgcmVqZWN0aW9uIG9mIHRyYWlsaW5nIGRvdHMgYW5kIHNwYWNlcy5cbiAgICpcbiAgICogT25lIGZsYWcgZm9yIHRocmVlIHJ1bGVzIGJlY2F1c2UgdGhleSBhcmUgb25lIGZpbGVzeXN0ZW0ncyBydWxlcywgYW5kIG5vIHBsYXRmb3JtIGFkb3B0cyBhIHN1YnNldC5cbiAgICovXG4gIHJlYWRvbmx5IGhhc1dpbmRvd3NOYW1pbmdSdWxlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxvbmdlc3QgYWJzb2x1dGUgcGF0aCBhIGZpbGUgbWF5IGhhdmUsIGluIHRoaXMgcHJvZmlsZSdzIHVuaXQuXG4gICAqL1xuICByZWFkb25seSBtYXhGaWxlUGF0aExlbmd0aDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9uZ2VzdCBhYnNvbHV0ZSBwYXRoIGEgZm9sZGVyIG1heSBoYXZlLCBpbiB0aGlzIHByb2ZpbGUncyB1bml0LlxuICAgKlxuICAgKiBCZWxvdyB7QGxpbmsgUGF0aENvbXBhdGliaWxpdHlQcm9maWxlLm1heEZpbGVQYXRoTGVuZ3RofSBvbiBXaW5kb3dzLCB3aGVyZSB0aGUgc2hvcnRlciBidWRnZXQgbGVhdmVzXG4gICAqIHJvb20gZm9yIGFuIGA4LjNgIG5hbWUgaW5zaWRlIHRoZSBmb2xkZXIuXG4gICAqL1xuICByZWFkb25seSBtYXhGb2xkZXJQYXRoTGVuZ3RoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBsb25nZXN0IHNpbmdsZSBuYW1lIOKAlCBvbmUgcGF0aCBzZWdtZW50IOKAlCBpbiB0aGlzIHByb2ZpbGUncyB1bml0LlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4TmFtZUxlbmd0aDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhdGZvcm0gdGhpcyBwcm9maWxlIGRlc2NyaWJlcy5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGxlbmd0aHMgY291bnQgVVRGLTggYnl0ZXMgKGV4dDQsIEFQRlMpIHJhdGhlciB0aGFuIFVURi0xNiB1bml0cyAoTlRGUykuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIHdob2xlIHJlYXNvbiB0aGUgMjU1IGxpbWl0IGlzIG5vdCBhIGNoYXJhY3RlciBjb3VudDogYSBuYW1lIG9mIDEyOCBDSksgY2hhcmFjdGVycyBpcyAzODRcbiAgICogYnl0ZXMgYW5kIGlzIHJlamVjdGVkIGJ5IGV4dDQgd2hpbGUgYmVpbmcgbm93aGVyZSBuZWFyIGFueSBsaW1pdCBXaW5kb3dzIGhhcy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZE1lYXN1cmVJbkJ5dGVzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9uZSB0aGluZyB3cm9uZyB3aXRoIG9uZSBwYXRoLCBhbmQgdGhlIHBsYXRmb3JtIHRoYXQgb2JqZWN0cyB0byBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXRoQ29tcGF0aWJpbGl0eVZpb2xhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgb2ZmZW5kaW5nIGNoYXJhY3RlcnMsIGVhY2ggb25jZSwgaW4gdGhlIG9yZGVyIHRoZXkgZmlyc3QgYXBwZWFyIGluIHRoZSBuYW1lLlxuICAgKlxuICAgKiBTZXQgZm9yIHtAbGluayBQYXRoQ29tcGF0aWJpbGl0eVZpb2xhdGlvblR5cGUuRm9yYmlkZGVuQ2hhcmFjdGVyfSBhbmRcbiAgICoge0BsaW5rIFBhdGhDb21wYXRpYmlsaXR5VmlvbGF0aW9uVHlwZS5PYnNpZGlhbkZvcmJpZGRlbkNoYXJhY3Rlcn0sIHNvIHRoZSByZXBvcnQgY2FuIG5hbWUgdGhlbS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYXJhY3RlcnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hhdCB3YXMgbWVhc3VyZWQgYW5kIHRoZSBsaW1pdCBpdCB3YXMgbWVhc3VyZWQgYWdhaW5zdC5cbiAgICpcbiAgICogU2V0IGZvciB7QGxpbmsgUGF0aENvbXBhdGliaWxpdHlWaW9sYXRpb25UeXBlLk5hbWVUb29Mb25nfSBhbmRcbiAgICoge0BsaW5rIFBhdGhDb21wYXRpYmlsaXR5VmlvbGF0aW9uVHlwZS5QYXRoVG9vTG9uZ30sIHNvIGEgcmVhZGVyIG9mIHRoZSByZXBvcnQgY2FuIHZlcmlmeSB0aGUgdmVyZGljdC5cbiAgICovXG4gIHJlYWRvbmx5IG1lYXN1cmVtZW50PzogUGF0aENvbXBhdGliaWxpdHlNZWFzdXJlbWVudDtcblxuICAvKipcbiAgICogVGhlIHBsYXRmb3JtIHdob3NlIHJ1bGVzIHRoZSBwYXRoIGJyZWFrcy4gQW5vdGhlciBlbmFibGVkIHBsYXRmb3JtIG1heSBhY2NlcHQgdGhlIHZlcnkgc2FtZSBwYXRoLlxuICAgKlxuICAgKiBgbnVsbGAgZm9yIGEgdmlvbGF0aW9uIG5vIHNpbmdsZSBwbGF0Zm9ybSBvd25zLCB3aGljaCBpc1xuICAgKiB7QGxpbmsgUGF0aENvbXBhdGliaWxpdHlWaW9sYXRpb25UeXBlLk9ic2lkaWFuRm9yYmlkZGVuQ2hhcmFjdGVyfSBhbmRcbiAgICoge0BsaW5rIFBhdGhDb21wYXRpYmlsaXR5VmlvbGF0aW9uVHlwZS5Vbmljb2RlTm90Tm9ybWFsaXplZH0uXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogbnVsbCB8IFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm07XG5cbiAgLyoqXG4gICAqIFdoYXQgaXMgd3JvbmcuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBQYXRoQ29tcGF0aWJpbGl0eVZpb2xhdGlvblR5cGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlcGFpck5hbWV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGFpck5hbWVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIG5hbWUgd2l0aG91dCBpdHMgZXh0ZW5zaW9uLiBGb3IgYSBmb2xkZXIsIHRoZSB3aG9sZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZW5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUncyBleHRlbnNpb24sIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90LiBFbXB0eSBmb3IgYSBmb2xkZXIgb3IgYW4gZXh0ZW5zaW9uLWxlc3MgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGF0IGVhY2ggZm9yYmlkZGVuIGNoYXJhY3RlciBpcyByZXBsYWNlZCB3aXRoLiBFbXB0eSBkZWxldGVzIGl0LiBNdXN0IHBhc3NcbiAgICoge0BsaW5rIGdldEZvcmJpZGRlbkNoYXJhY3RlclJlcGxhY2VtZW50VmFsaWRhdGlvbk1lc3NhZ2V9LCBvciB0aGUgcmVwYWlyIHdvdWxkIHB1dCBiYWNrIHdoYXQgaXQgcmVtb3ZlZC5cbiAgICovXG4gIHJlYWRvbmx5IGZvcmJpZGRlbkNoYXJhY3RlclJlcGxhY2VtZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG5hbWUgYmVsb25ncyB0byBhIGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IGlzRm9sZGVyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IHZhdWx0IHJvb3QgcGF0aCB0aGUgdmF1bHQgaXMgZXhwZWN0ZWQgdG8gbGl2ZSB1bmRlciwgaW4gY2hhcmFjdGVycy5cbiAgICovXG4gIHJlYWRvbmx5IG1heFZhdWx0Um9vdFBhdGhMZW5ndGg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIHBhcmVudCBmb2xkZXIuIEVtcHR5IGF0IHRoZSB2YXVsdCByb290LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhdGZvcm1zIHdob3NlIHJ1bGVzIHRoZSByZXBhaXJlZCBuYW1lIG11c3Qgc2F0aXNmeS5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtczogcmVhZG9ubHkgUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybVtdO1xufVxuXG4vKipcbiAqIEV2ZXJ5IHBsYXRmb3JtLCBpbiB0aGUgb3JkZXIgdGhlIHNldHRpbmdzIHRhYiBhbmQgdGhlIGNvbnNpc3RlbmN5IHJlcG9ydCBsaXN0IHRoZW06IHRoZSBvbmVzIHdob3NlIGxpbWl0c1xuICogYWN0dWFsbHkgYmluZCBpbiBwcmFjdGljZSBmaXJzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFBBVEhfQ09NUEFUSUJJTElUWV9QTEFURk9STVM6IHJlYWRvbmx5IFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm1bXSA9IFtcbiAgUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybS5XaW5kb3dzLFxuICBQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtLkFuZHJvaWQsXG4gIFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uTGludXgsXG4gIFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uTWFjT3MsXG4gIFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uSW9zXG5dO1xuXG4vKipcbiAqIEhvdyBlYWNoIHBsYXRmb3JtIGlzIG5hbWVkIGluIHRoZSBzZXR0aW5ncyB0YWIgYW5kIHRoZSBjb25zaXN0ZW5jeSByZXBvcnQuXG4gKlxuICogTm90IHRyYW5zbGF0ZWQ6IHRoZXNlIGFyZSBwcm9kdWN0IG5hbWVzLCBhbmQgYG1hY09TYCBpcyBzcGVsbGVkIGBtYWNPU2AgaW4gZXZlcnkgbGFuZ3VhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBQQVRIX0NPTVBBVElCSUxJVFlfUExBVEZPUk1fTEFCRUxTOiBSZWNvcmQ8UGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybSwgc3RyaW5nPiA9IHtcbiAgW1BhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uQW5kcm9pZF06ICdBbmRyb2lkJyxcbiAgW1BhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uSW9zXTogJ2lPUycsXG4gIFtQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtLkxpbnV4XTogJ0xpbnV4JyxcbiAgW1BhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uTWFjT3NdOiAnbWFjT1MnLFxuICBbUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybS5XaW5kb3dzXTogJ1dpbmRvd3MnXG59O1xuXG4vKipcbiAqIGBNQVhfUEFUSGAgaXMgMjYwIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcgTlVMLCBzbyAyNTkgdXNhYmxlIGNoYXJhY3RlcnMgZm9yIGEgZmlsZS5cbiAqL1xuY29uc3QgV0lORE9XU19NQVhfRklMRV9QQVRIX0xFTkdUSCA9IDI1OTtcblxuLyoqXG4gKiBBIGZvbGRlciBnZXRzIDEyIGZld2VyLCBsZWF2aW5nIHJvb20gZm9yIGEgYFxcYCBhbmQgYW4gOC4zIG5hbWUgaW5zaWRlIGl0LlxuICovXG5jb25zdCBXSU5ET1dTX01BWF9GT0xERVJfUEFUSF9MRU5HVEggPSAyNDc7XG5cbi8qKlxuICogTlRGUydzIHBlci1uYW1lIGNhcCwgaW4gVVRGLTE2IHVuaXRzLiBOZXZlciB0aGUgYmluZGluZyBjb25zdHJhaW50OiBhIHBhdGggdGhhdCBmaXRzIGluXG4gKiB7QGxpbmsgV0lORE9XU19NQVhfRklMRV9QQVRIX0xFTkdUSH0gY2hhcmFjdGVycyBjb250YWlucyBubyBsb25nZXIgbmFtZS5cbiAqL1xuY29uc3QgV0lORE9XU19NQVhfTkFNRV9MRU5HVEggPSAyNTU7XG5cbi8qKlxuICogRXh0NCAvIGYyZnMgLyBBUEZTIGFsbCBjYXAgYSBzaW5nbGUgbmFtZSBhdCAyNTUgQllURVMuIFRoaXMgaXMgdGhlIGxpbWl0IGEgY2hhcmFjdGVyIGNvdW50IGdldHMgd3JvbmcuXG4gKi9cbmNvbnN0IFVOSVhfTUFYX05BTUVfQllURVMgPSAyNTU7XG5cbi8qKlxuICogYFBBVEhfTUFYYCBvbiBMaW51eCBhbmQgQW5kcm9pZC4gU28gZmFyIGFib3ZlIGFueXRoaW5nIGEgdmF1bHQgcHJvZHVjZXMgdGhhdCBvbmx5IHRoZSBuYW1lIGxpbWl0IGJpbmRzLlxuICovXG5jb25zdCBMSU5VWF9NQVhfUEFUSF9CWVRFUyA9IDQwOTY7XG5cbi8qKlxuICogYFBBVEhfTUFYYCBvbiBtYWNPUyBhbmQgaU9TLlxuICovXG5jb25zdCBEQVJXSU5fTUFYX1BBVEhfQllURVMgPSAxMDI0O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udHJvbC1yZWdleCAtLSBDb250cm9sIGNoYXJhY3RlcnMgYXJlIGV4YWN0bHkgd2hhdCB0aGlzIG1hdGNoZXMuXG5jb25zdCBDT05UUk9MX0NIQVJTX1JFR19FWFAgPSAvW1xcdXswfS1cXHV7MUZ9XS9ndTtcblxuY29uc3QgUEFUSF9DT01QQVRJQklMSVRZX1BST0ZJTEVTOiBSZWNvcmQ8UGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybSwgUGF0aENvbXBhdGliaWxpdHlQcm9maWxlPiA9IHtcbiAgW1BhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uQW5kcm9pZF06IHtcbiAgICBoYXNXaW5kb3dzTmFtaW5nUnVsZXM6IGZhbHNlLFxuICAgIG1heEZpbGVQYXRoTGVuZ3RoOiBMSU5VWF9NQVhfUEFUSF9CWVRFUyxcbiAgICBtYXhGb2xkZXJQYXRoTGVuZ3RoOiBMSU5VWF9NQVhfUEFUSF9CWVRFUyxcbiAgICBtYXhOYW1lTGVuZ3RoOiBVTklYX01BWF9OQU1FX0JZVEVTLFxuICAgIHBsYXRmb3JtOiBQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtLkFuZHJvaWQsXG4gICAgc2hvdWxkTWVhc3VyZUluQnl0ZXM6IHRydWVcbiAgfSxcblxuICBbUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybS5Jb3NdOiB7XG4gICAgaGFzV2luZG93c05hbWluZ1J1bGVzOiBmYWxzZSxcbiAgICBtYXhGaWxlUGF0aExlbmd0aDogREFSV0lOX01BWF9QQVRIX0JZVEVTLFxuICAgIG1heEZvbGRlclBhdGhMZW5ndGg6IERBUldJTl9NQVhfUEFUSF9CWVRFUyxcbiAgICBtYXhOYW1lTGVuZ3RoOiBVTklYX01BWF9OQU1FX0JZVEVTLFxuICAgIHBsYXRmb3JtOiBQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtLklvcyxcbiAgICBzaG91bGRNZWFzdXJlSW5CeXRlczogdHJ1ZVxuICB9LFxuXG4gIFtQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtLkxpbnV4XToge1xuICAgIGhhc1dpbmRvd3NOYW1pbmdSdWxlczogZmFsc2UsXG4gICAgbWF4RmlsZVBhdGhMZW5ndGg6IExJTlVYX01BWF9QQVRIX0JZVEVTLFxuICAgIG1heEZvbGRlclBhdGhMZW5ndGg6IExJTlVYX01BWF9QQVRIX0JZVEVTLFxuICAgIG1heE5hbWVMZW5ndGg6IFVOSVhfTUFYX05BTUVfQllURVMsXG4gICAgcGxhdGZvcm06IFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uTGludXgsXG4gICAgc2hvdWxkTWVhc3VyZUluQnl0ZXM6IHRydWVcbiAgfSxcblxuICBbUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybS5NYWNPc106IHtcbiAgICBoYXNXaW5kb3dzTmFtaW5nUnVsZXM6IGZhbHNlLFxuICAgIG1heEZpbGVQYXRoTGVuZ3RoOiBEQVJXSU5fTUFYX1BBVEhfQllURVMsXG4gICAgbWF4Rm9sZGVyUGF0aExlbmd0aDogREFSV0lOX01BWF9QQVRIX0JZVEVTLFxuICAgIG1heE5hbWVMZW5ndGg6IFVOSVhfTUFYX05BTUVfQllURVMsXG4gICAgcGxhdGZvcm06IFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uTWFjT3MsXG4gICAgc2hvdWxkTWVhc3VyZUluQnl0ZXM6IHRydWVcbiAgfSxcblxuICBbUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybS5XaW5kb3dzXToge1xuICAgIGhhc1dpbmRvd3NOYW1pbmdSdWxlczogdHJ1ZSxcbiAgICBtYXhGaWxlUGF0aExlbmd0aDogV0lORE9XU19NQVhfRklMRV9QQVRIX0xFTkdUSCxcbiAgICBtYXhGb2xkZXJQYXRoTGVuZ3RoOiBXSU5ET1dTX01BWF9GT0xERVJfUEFUSF9MRU5HVEgsXG4gICAgbWF4TmFtZUxlbmd0aDogV0lORE9XU19NQVhfTkFNRV9MRU5HVEgsXG4gICAgcGxhdGZvcm06IFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uV2luZG93cyxcbiAgICBzaG91bGRNZWFzdXJlSW5CeXRlczogZmFsc2VcbiAgfVxufTtcblxuLyoqXG4gKiBGaW5kcyBldmVyeXRoaW5nIHdyb25nIHdpdGggYSBwYXRoLCBhY3Jvc3MgZXZlcnkgZW5hYmxlZCBwbGF0Zm9ybS5cbiAqXG4gKiBSZWFkLW9ubHk6IHRoaXMgaXMgd2hhdCB0aGUgY29uc2lzdGVuY3kgcmVwb3J0IHJlbmRlcnMsIGFuZCBpdCBuZXZlciBwcm9wb3NlcyBhIHJlcGFpci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhdGggYW5kIHRoZSBwbGF0Zm9ybXMgdG8gY2hlY2sgaXQgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFRoZSB2aW9sYXRpb25zLCBlbXB0eSB3aGVuIHRoZSBwYXRoIGlzIHZhbGlkIGV2ZXJ5d2hlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUGF0aENvbXBhdGliaWxpdHlWaW9sYXRpb25zKHBhcmFtczogRmluZFBhdGhDb21wYXRpYmlsaXR5VmlvbGF0aW9uc1BhcmFtcyk6IFBhdGhDb21wYXRpYmlsaXR5VmlvbGF0aW9uW10ge1xuICBjb25zdCB2aW9sYXRpb25zOiBQYXRoQ29tcGF0aWJpbGl0eVZpb2xhdGlvbltdID0gW107XG4gIGNvbnN0IG5hbWUgPSBnZXROYW1lKHBhcmFtcy5wYXRoKTtcbiAgY29uc3QgcHJvZmlsZXMgPSBnZXRQcm9maWxlcyhwYXJhbXMucGxhdGZvcm1zKTtcblxuICAvKlxuICAgKiBPbmNlLCB3aXRoIG5vIHBsYXRmb3JtOiBldmVyeSBwbGF0Zm9ybSBzdG9yZXMgc3VjaCBhIG5hbWUsIGFuZCBvbmx5IE9ic2lkaWFuJ3MgbGlua3MgcmVmdXNlIGl0LiBTdGlsbFxuICAgKiBnYXRlZCBvbiBhIHBsYXRmb3JtIGJlaW5nIGVuYWJsZWQsIGJlY2F1c2UgdGhhdCBpcyB3aGF0IHN3aXRjaGVzIHRoZSB3aG9sZSBjaGVjayBvbiwgYW5kIHRoZSByZXBhaXIgb25seVxuICAgKiByZXBsYWNlcyB0aGVzZSBjaGFyYWN0ZXJzIHVuZGVyIGEgcHJvZmlsZS5cbiAgICovXG4gIGNvbnN0IG9ic2lkaWFuRm9yYmlkZGVuQ2hhcmFjdGVycyA9IGZpbmRDaGFyYWN0ZXJzKG5hbWUsIE9CU0lESUFOX1VOU0FGRV9GSUxFTkFNRV9DSEFSUyk7XG5cbiAgaWYgKHByb2ZpbGVzLmxlbmd0aCA+IDAgJiYgb2JzaWRpYW5Gb3JiaWRkZW5DaGFyYWN0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICB2aW9sYXRpb25zLnB1c2goeyBjaGFyYWN0ZXJzOiBvYnNpZGlhbkZvcmJpZGRlbkNoYXJhY3RlcnMsIHBsYXRmb3JtOiBudWxsLCB0eXBlOiBQYXRoQ29tcGF0aWJpbGl0eVZpb2xhdGlvblR5cGUuT2JzaWRpYW5Gb3JiaWRkZW5DaGFyYWN0ZXIgfSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHByb2ZpbGUgb2YgcHJvZmlsZXMpIHtcbiAgICBjb25zdCBtYXhQYXRoTGVuZ3RoID0gcGFyYW1zLmlzRm9sZGVyID8gcHJvZmlsZS5tYXhGb2xkZXJQYXRoTGVuZ3RoIDogcHJvZmlsZS5tYXhGaWxlUGF0aExlbmd0aDtcbiAgICBjb25zdCBmdWxsUGF0aExlbmd0aCA9IHBhcmFtcy5tYXhWYXVsdFJvb3RQYXRoTGVuZ3RoICsgMSArIG1lYXN1cmUocGFyYW1zLnBhdGgsIHByb2ZpbGUuc2hvdWxkTWVhc3VyZUluQnl0ZXMpO1xuXG4gICAgaWYgKGZ1bGxQYXRoTGVuZ3RoID4gbWF4UGF0aExlbmd0aCkge1xuICAgICAgdmlvbGF0aW9ucy5wdXNoKHtcbiAgICAgICAgbWVhc3VyZW1lbnQ6IHtcbiAgICAgICAgICBpc0luQnl0ZXM6IHByb2ZpbGUuc2hvdWxkTWVhc3VyZUluQnl0ZXMsXG4gICAgICAgICAgbGVuZ3RoOiBmdWxsUGF0aExlbmd0aCxcbiAgICAgICAgICBsaW1pdDogbWF4UGF0aExlbmd0aCxcbiAgICAgICAgICB2YXVsdFJvb3RMZW5ndGg6IHBhcmFtcy5tYXhWYXVsdFJvb3RQYXRoTGVuZ3RoXG4gICAgICAgIH0sXG4gICAgICAgIHBsYXRmb3JtOiBwcm9maWxlLnBsYXRmb3JtLFxuICAgICAgICB0eXBlOiBQYXRoQ29tcGF0aWJpbGl0eVZpb2xhdGlvblR5cGUuUGF0aFRvb0xvbmdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWVMZW5ndGggPSBtZWFzdXJlKG5hbWUsIHByb2ZpbGUuc2hvdWxkTWVhc3VyZUluQnl0ZXMpO1xuXG4gICAgaWYgKG5hbWVMZW5ndGggPiBwcm9maWxlLm1heE5hbWVMZW5ndGgpIHtcbiAgICAgIHZpb2xhdGlvbnMucHVzaCh7XG4gICAgICAgIG1lYXN1cmVtZW50OiB7IGlzSW5CeXRlczogcHJvZmlsZS5zaG91bGRNZWFzdXJlSW5CeXRlcywgbGVuZ3RoOiBuYW1lTGVuZ3RoLCBsaW1pdDogcHJvZmlsZS5tYXhOYW1lTGVuZ3RoLCB2YXVsdFJvb3RMZW5ndGg6IG51bGwgfSxcbiAgICAgICAgcGxhdGZvcm06IHByb2ZpbGUucGxhdGZvcm0sXG4gICAgICAgIHR5cGU6IFBhdGhDb21wYXRpYmlsaXR5VmlvbGF0aW9uVHlwZS5OYW1lVG9vTG9uZ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGxhdGZvcm1Gb3JiaWRkZW5DaGFyYWN0ZXJzID0gZmluZENoYXJhY3RlcnMobmFtZSwgZ2V0UGxhdGZvcm1Gb3JiaWRkZW5DaGFyYWN0ZXJzUmVnRXhwKHByb2ZpbGUpKTtcblxuICAgIGlmIChwbGF0Zm9ybUZvcmJpZGRlbkNoYXJhY3RlcnMubGVuZ3RoID4gMCkge1xuICAgICAgdmlvbGF0aW9ucy5wdXNoKHsgY2hhcmFjdGVyczogcGxhdGZvcm1Gb3JiaWRkZW5DaGFyYWN0ZXJzLCBwbGF0Zm9ybTogcHJvZmlsZS5wbGF0Zm9ybSwgdHlwZTogUGF0aENvbXBhdGliaWxpdHlWaW9sYXRpb25UeXBlLkZvcmJpZGRlbkNoYXJhY3RlciB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXByb2ZpbGUuaGFzV2luZG93c05hbWluZ1J1bGVzKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNXaW5kb3dzUmVzZXJ2ZWROYW1lKG5hbWUpKSB7XG4gICAgICB2aW9sYXRpb25zLnB1c2goeyBwbGF0Zm9ybTogcHJvZmlsZS5wbGF0Zm9ybSwgdHlwZTogUGF0aENvbXBhdGliaWxpdHlWaW9sYXRpb25UeXBlLlJlc2VydmVkTmFtZSB9KTtcbiAgICB9XG5cbiAgICBpZiAoaGFzV2luZG93c1RyYWlsaW5nQ2hhcnMobmFtZSkpIHtcbiAgICAgIHZpb2xhdGlvbnMucHVzaCh7IHBsYXRmb3JtOiBwcm9maWxlLnBsYXRmb3JtLCB0eXBlOiBQYXRoQ29tcGF0aWJpbGl0eVZpb2xhdGlvblR5cGUuVHJhaWxpbmdDaGFyYWN0ZXIgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZpb2xhdGlvbnM7XG59XG5cbi8qKlxuICogVGhlIHBsYXRmb3JtIHRoZSBwbHVnaW4gaXMgcnVubmluZyBvbiwgb3IgYG51bGxgIG9uIGEgcGxhdGZvcm0gd2l0aCBubyBwcm9maWxlLlxuICpcbiAqIFVzZWQgb25seSB0byBzZWVkIHRoZSBzZXR0aW5ncyBkZWZhdWx0cywgc28gdGhhdCBhIGZyZXNoIGluc3RhbGwgcmVwb3J0cyBvbiB0aGUgdmF1bHQgaW4gZnJvbnQgb2YgaXRcbiAqIHdpdGhvdXQgdGhlIHVzZXIgY29uZmlndXJpbmcgYW55dGhpbmcgZmlyc3QuXG4gKlxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgcGxhdGZvcm0sIG9yIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtKCk6IG51bGwgfCBQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtIHtcbiAgaWYgKFBsYXRmb3JtLmlzV2luKSB7XG4gICAgcmV0dXJuIFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uV2luZG93cztcbiAgfVxuXG4gIGlmIChQbGF0Zm9ybS5pc0FuZHJvaWRBcHApIHtcbiAgICByZXR1cm4gUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybS5BbmRyb2lkO1xuICB9XG5cbiAgaWYgKFBsYXRmb3JtLmlzSW9zQXBwKSB7XG4gICAgcmV0dXJuIFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uSW9zO1xuICB9XG5cbiAgaWYgKFBsYXRmb3JtLmlzTWFjT1MpIHtcbiAgICByZXR1cm4gUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybS5NYWNPcztcbiAgfVxuXG4gIHJldHVybiBQbGF0Zm9ybS5pc0xpbnV4ID8gUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybS5MaW51eCA6IG51bGw7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSB0ZXh0IGEgZm9yYmlkZGVuIGNoYXJhY3RlciBpcyByZXBsYWNlZCB3aXRoLlxuICpcbiAqIEV2ZXJ5IHBsYXRmb3JtJ3Mgc2V0IGlzIGNoZWNrZWQsIG5vdCBvbmx5IHRoZSBlbmFibGVkIG9uZXM6IHRoZSB0b2dnbGVzIGNhbiBjaGFuZ2UgYWZ0ZXIgdGhlIHJlcGxhY2VtZW50XG4gKiBpcyBjaG9zZW4sIGFuZCBhIHJlcGxhY2VtZW50IG9uZSBwbGF0Zm9ybSByZWZ1c2VzIHdvdWxkIG1ha2UgdGhlIHJlcGFpciBvZiB0aGF0IHBsYXRmb3JtIHByb2R1Y2UgYSBuYW1lXG4gKiB0aGF0IGlzIHN0aWxsIGludmFsaWQgdGhlcmUuXG4gKlxuICogQHBhcmFtIHJlcGxhY2VtZW50IC0gVGhlIHJlcGxhY2VtZW50IHRleHQuIEVtcHR5IGlzIHZhbGlkIGFuZCBkZWxldGVzIHRoZSBjaGFyYWN0ZXIuXG4gKiBAcmV0dXJucyBBIG1lc3NhZ2UgbmFtaW5nIHRoZSBmaXJzdCByZWZ1c2VkIGNoYXJhY3Rlciwgb3IgYW4gZW1wdHkgc3RyaW5nIHdoZW4gdGhlIHJlcGxhY2VtZW50IGlzIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9yYmlkZGVuQ2hhcmFjdGVyUmVwbGFjZW1lbnRWYWxpZGF0aW9uTWVzc2FnZShyZXBsYWNlbWVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmVnRXhwcyA9IFtcbiAgICBnZXRPc1Vuc2FmZVBhdGhDaGFyc1JlZ0V4cCh0cnVlLCBmYWxzZSksXG4gICAgZ2V0T3NVbnNhZmVQYXRoQ2hhcnNSZWdFeHAoZmFsc2UsIHRydWUpLFxuICAgIGdldE9zVW5zYWZlUGF0aENoYXJzUmVnRXhwKGZhbHNlLCBmYWxzZSksXG4gICAgT0JTSURJQU5fVU5TQUZFX0ZJTEVOQU1FX0NIQVJTLFxuICAgIENPTlRST0xfQ0hBUlNfUkVHX0VYUFxuICBdO1xuXG4gIC8vIEEgc3RyaW5nIGl0ZXJhdGVzIGJ5IGNvZGUgcG9pbnQsIHNvIGEgc3Vycm9nYXRlIHBhaXIgaXMgbmFtZWQgd2hvbGUsIGFzIHRoZSB1c2VyIHR5cGVkIGl0LlxuICBmb3IgKGNvbnN0IGNoYXIgb2YgcmVwbGFjZW1lbnQpIHtcbiAgICAvLyBgcmVwbGFjZWAgcmF0aGVyIHRoYW4gYHRlc3RgLCBmb3IgdGhlIHJlYXNvbiBnaXZlbiBhdCBgcmVwbGFjZUZvcmJpZGRlbkNoYXJhY3RlcnNgLlxuICAgIGlmIChyZWdFeHBzLnNvbWUoKHJlZ0V4cCkgPT4gY2hhci5yZXBsYWNlKHJlZ0V4cCwgJycpICE9PSBjaGFyKSkge1xuICAgICAgcmV0dXJuIGBUaGUgcmVwbGFjZW1lbnQgbXVzdCBub3QgY29udGFpbiBcIiR7Y2hhcn1cIjogYSBmaWxlIG5hbWUgY2Fubm90IGhvbGQgaXQgb24gZXZlcnkgcGxhdGZvcm0uYDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogV2hldGhlciBhIG5hbWUgaXMgaW4gVW5pY29kZSBORkMsIHRoZSBmb3JtIE9ic2lkaWFuIGdpdmVzIGV2ZXJ5IG5hbWUgaXQgY3JlYXRlcy5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIGFzIGl0IGlzIHN0b3JlZCBvbiBkaXNrLlxuICogQHJldHVybnMgV2hldGhlciBpdCBpcyBORkMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1VuaWNvZGVOb3JtYWxpemVkKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gbmFtZSA9PT0gbmFtZS5ub3JtYWxpemUoJ05GQycpO1xufVxuXG4vKipcbiAqIE1lYXN1cmVzIGEgc3RyaW5nIHRoZSB3YXkgYSBmaWxlc3lzdGVtIGRvZXMuXG4gKlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIG1lYXN1cmUuXG4gKiBAcGFyYW0gc2hvdWxkTWVhc3VyZUluQnl0ZXMgLSBXaGV0aGVyIHRvIGNvdW50IFVURi04IGJ5dGVzIHJhdGhlciB0aGFuIFVURi0xNiB1bml0cy5cbiAqIEByZXR1cm5zIFRoZSBsZW5ndGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZWFzdXJlKCRzdHJpbmc6IHN0cmluZywgc2hvdWxkTWVhc3VyZUluQnl0ZXM6IGJvb2xlYW4pOiBudW1iZXIge1xuICByZXR1cm4gc2hvdWxkTWVhc3VyZUluQnl0ZXMgPyBuZXcgQmxvYihbJHN0cmluZ10pLnNpemUgOiAkc3RyaW5nLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBSZXBhaXJzIGEgbmFtZSBzbyB0aGF0IGl0IHNhdGlzZmllcyBldmVyeSBlbmFibGVkIHBsYXRmb3JtLlxuICpcbiAqIFRoZSBvcmRlciBpcyBkZWxpYmVyYXRlOiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZCBhbmQgYSByZXNlcnZlZCBuYW1lIGRlLXJlc2VydmVkIEJFRk9SRSBhbnl0aGluZyBpc1xuICogdHJ1bmNhdGVkLCBiZWNhdXNlIGJvdGggY2FuIGNoYW5nZSB0aGUgbGVuZ3RoLCBhbmQgdHJhaWxpbmcgZG90cyBhbmQgc3BhY2VzIGFyZSB0cmltbWVkIEFGVEVSIGV2ZXJ5IGN1dCxcbiAqIGJlY2F1c2UgYSBjdXQgY2FuIGV4cG9zZSBuZXcgb25lcy5cbiAqXG4gKiBUcnVuY2F0aW9uIG9ubHkgZXZlciBzaG9ydGVucyB0aGUgYmFzZW5hbWUg4oCUIGFuIGV4dGVuc2lvbiBpcyB3aGF0IHRlbGxzIE9ic2lkaWFuIGFuZCB0aGUgT1Mgd2hhdCB0aGUgZmlsZVxuICogaXMsIHNvIGEgdHJ1bmNhdGVkIG9uZSB0dXJucyBhIHdvcmtpbmcgYC5wbmdgIGludG8gYSBicm9rZW4gYC5wbmAuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBuYW1lIGFuZCB0aGUgcGxhdGZvcm1zIGl0IG11c3Qgc2F0aXNmeS5cbiAqIEByZXR1cm5zIFRoZSByZXBhaXJlZCBuYW1lLCB1bmNoYW5nZWQgd2hlbiBpdCB3YXMgYWxyZWFkeSB2YWxpZCwgb3IgYG51bGxgIHdoZW4gbm8gbmFtZSBzdXJ2aXZlcyB0aGVcbiAqIHJlcGFpciDigJQgd2hpY2ggaXMgd2hhdCB0aGUgcmVwb3J0IGNhbGxzIG91dCByYXRoZXIgdGhhbiBmYWlsaW5nIHNpbGVudGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwYWlyTmFtZShwYXJhbXM6IFJlcGFpck5hbWVQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgcHJvZmlsZXMgPSBnZXRQcm9maWxlcyhwYXJhbXMucGxhdGZvcm1zKTtcblxuICBpZiAocHJvZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGJ1aWxkTmFtZShwYXJhbXMuYmFzZW5hbWUsIHBhcmFtcy5leHRlbnNpb24pO1xuICB9XG5cbiAgbGV0IGJhc2VuYW1lID0gcGFyYW1zLmJhc2VuYW1lO1xuICBsZXQgZXh0ZW5zaW9uID0gcGFyYW1zLmV4dGVuc2lvbjtcblxuICBmb3IgKGNvbnN0IHByb2ZpbGUgb2YgcHJvZmlsZXMpIHtcbiAgICBiYXNlbmFtZSA9IHJlcGxhY2VGb3JiaWRkZW5DaGFyYWN0ZXJzKGJhc2VuYW1lLCBwcm9maWxlLCBwYXJhbXMuZm9yYmlkZGVuQ2hhcmFjdGVyUmVwbGFjZW1lbnQpO1xuICAgIGV4dGVuc2lvbiA9IHJlcGxhY2VGb3JiaWRkZW5DaGFyYWN0ZXJzKGV4dGVuc2lvbiwgcHJvZmlsZSwgcGFyYW1zLmZvcmJpZGRlbkNoYXJhY3RlclJlcGxhY2VtZW50KTtcbiAgfVxuXG4gIC8vIGBub3RlLm1kIGAgcGFyc2VzIGFzIGJhc2VuYW1lIGBub3RlYCArIGV4dGVuc2lvbiBgbWQgYCwgc28gdHJpbW1pbmcgb25seSB0aGUgYmFzZW5hbWUgd291bGQgbGVhdmUgdGhlXG4gIC8vIHRyYWlsaW5nIHNwYWNlIGV4YWN0bHkgd2hlcmUgV2luZG93cyByZWplY3RzIGl0IOKAlCBhdCB0aGUgZW5kIG9mIHRoZSBuYW1lLlxuICBleHRlbnNpb24gPSB0cmltVHJhaWxpbmdEb3RzQW5kU3BhY2VzKGV4dGVuc2lvbiwgcHJvZmlsZXMpO1xuXG4gIC8qXG4gICAqIFRyaW0gQkVGT1JFIHRoZSBkZS1yZXNlcnZpbmcgYmVsb3csIG5ldmVyIGFmdGVyLiBgaXNXaW5kb3dzUmVzZXJ2ZWROYW1lYCB0cmltcyBmb3IgaXRzIG93biBhbnN3ZXIsIHNvXG4gICAqIGBDT04gYCBpcyByZXBvcnRlZCByZXNlcnZlZCBlaXRoZXIgd2F5IOKAlCBidXQgdGhlIHVuZGVyc2NvcmUgaXMgYXBwZW5kZWQgdG8gd2hhdGV2ZXIgaXMgaGVyZSwgYW5kIGFuXG4gICAqIHVudHJpbW1lZCBgQ09OIGAgd291bGQgZGUtcmVzZXJ2ZSB0byBgQ09OIF9gIGluc3RlYWQgb2YgYENPTl9gLlxuICAgKi9cbiAgYmFzZW5hbWUgPSB0cmltVHJhaWxpbmdEb3RzQW5kU3BhY2VzKGJhc2VuYW1lLCBwcm9maWxlcyk7XG5cbiAgLypcbiAgICogVGhlIFJFQlVJTFQgbmFtZSwgbmV2ZXIgdGhlIGJhcmUgYmFzZW5hbWU6IGBwYXJhbXMuYmFzZW5hbWVgIGhhcyBhbHJlYWR5IGhhZCBpdHMgZXh0ZW5zaW9uIHNwbGl0IG9mZixcbiAgICogYW5kIHRoZSBsaWJyYXJ5IGRyb3BzIG9uZSBleHRlbnNpb24gb2YgaXRzIG93biwgc28gcGFzc2luZyB0aGUgYmFzZW5hbWUgd291bGQgc3RyaXAgYSBzZWNvbmQgc2VnbWVudFxuICAgKiBhbmQgY2FsbCBgQ09OLnhgICsgYG1kYCByZXNlcnZlZCDigJQgd2hpY2ggaXMgbm90IHdoYXQgdGhlIHJlcG9ydCBzYXlzIGFib3V0IGBDT04ueC5tZGAuXG4gICAqL1xuICBpZiAocHJvZmlsZXMuc29tZSgocHJvZmlsZSkgPT4gcHJvZmlsZS5oYXNXaW5kb3dzTmFtaW5nUnVsZXMpICYmIGlzV2luZG93c1Jlc2VydmVkTmFtZShidWlsZE5hbWUoYmFzZW5hbWUsIGV4dGVuc2lvbikpKSB7XG4gICAgLy8gQSB0cmFpbGluZyB1bmRlcnNjb3JlIHJhdGhlciB0aGFuIGEgcHJlZml4OiBpdCBrZWVwcyB0aGUgbmFtZSBzb3J0aW5nIHdoZXJlIHRoZSB1c2VyIGV4cGVjdHMgaXQuXG4gICAgYmFzZW5hbWUgKz0gJ18nO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXNwcmVhZCAtLSBDb2RlIHBvaW50cyBhcmUgZXhhY3RseSB0aGUgdW5pdCB3YW50ZWQ6IGN1dHRpbmcgYnkgVVRGLTE2IHVuaXQgd291bGQgc3BsaXQgYSBzdXJyb2dhdGUgcGFpciBhbmQgbGVhdmUgaGFsZiBhbiBlbW9qaS5cbiAgY29uc3QgY29kZVBvaW50cyA9IFsuLi5iYXNlbmFtZV07XG5cbiAgd2hpbGUgKGNvZGVQb2ludHMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IHRyaW1UcmFpbGluZ0RvdHNBbmRTcGFjZXMoY29kZVBvaW50cy5qb2luKCcnKSwgcHJvZmlsZXMpO1xuXG4gICAgaWYgKGNhbmRpZGF0ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkb2VzRml0RXZlcnlQcm9maWxlKGNhbmRpZGF0ZSwgZXh0ZW5zaW9uLCBwcm9maWxlcywgcGFyYW1zKSkge1xuICAgICAgcmV0dXJuIGJ1aWxkTmFtZShjYW5kaWRhdGUsIGV4dGVuc2lvbik7XG4gICAgfVxuXG4gICAgY29kZVBvaW50cy5wb3AoKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBidWlsZE5hbWUoYmFzZW5hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZXh0ZW5zaW9uID09PSAnJyA/IGJhc2VuYW1lIDogYCR7YmFzZW5hbWV9LiR7ZXh0ZW5zaW9ufWA7XG59XG5cbmZ1bmN0aW9uIGRvZXNGaXRFdmVyeVByb2ZpbGUoYmFzZW5hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcsIHByb2ZpbGVzOiBQYXRoQ29tcGF0aWJpbGl0eVByb2ZpbGVbXSwgcGFyYW1zOiBSZXBhaXJOYW1lUGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5hbWUgPSBidWlsZE5hbWUoYmFzZW5hbWUsIGV4dGVuc2lvbik7XG4gIGNvbnN0IHBhdGggPSBwYXJhbXMucGFyZW50UGF0aCA9PT0gJycgPyBuYW1lIDogYCR7cGFyYW1zLnBhcmVudFBhdGh9LyR7bmFtZX1gO1xuXG4gIHJldHVybiBwcm9maWxlcy5ldmVyeSgocHJvZmlsZSkgPT4ge1xuICAgIGNvbnN0IG1heFBhdGhMZW5ndGggPSBwYXJhbXMuaXNGb2xkZXIgPyBwcm9maWxlLm1heEZvbGRlclBhdGhMZW5ndGggOiBwcm9maWxlLm1heEZpbGVQYXRoTGVuZ3RoO1xuICAgIGNvbnN0IGZ1bGxQYXRoTGVuZ3RoID0gcGFyYW1zLm1heFZhdWx0Um9vdFBhdGhMZW5ndGggKyAxICsgbWVhc3VyZShwYXRoLCBwcm9maWxlLnNob3VsZE1lYXN1cmVJbkJ5dGVzKTtcblxuICAgIHJldHVybiBtZWFzdXJlKG5hbWUsIHByb2ZpbGUuc2hvdWxkTWVhc3VyZUluQnl0ZXMpIDw9IHByb2ZpbGUubWF4TmFtZUxlbmd0aCAmJiBmdWxsUGF0aExlbmd0aCA8PSBtYXhQYXRoTGVuZ3RoO1xuICB9KTtcbn1cblxuLypcbiAqIEVhY2ggY2hhcmFjdGVyIG9uY2UsIGluIG9yZGVyIG9mIGZpcnN0IGFwcGVhcmFuY2UuIGBtYXRjaGAgb24gYSBgZ2AtZmxhZ2dlZCByZWdleHAgcmV0dXJucyBldmVyeSBtYXRjaCBhbmRcbiAqIGlnbm9yZXMgYGxhc3RJbmRleGAsIHNvIHRoZSBzaGFyZWQgY29uc3RhbnRzIGFyZSBzYWZlIGhlcmUuXG4gKi9cbmZ1bmN0aW9uIGZpbmRDaGFyYWN0ZXJzKG5hbWU6IHN0cmluZywgcmVnRXhwOiBSZWdFeHApOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbLi4ubmV3IFNldChuYW1lLm1hdGNoKHJlZ0V4cCkpXTtcbn1cblxuZnVuY3Rpb24gZ2V0TmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzbGFzaEluZGV4ID0gcGF0aC5sYXN0SW5kZXhPZignLycpO1xuICByZXR1cm4gc2xhc2hJbmRleCA9PT0gLTEgPyBwYXRoIDogcGF0aC5zbGljZShzbGFzaEluZGV4ICsgMSk7XG59XG5cbi8qXG4gKiBCb3RoIGZsYWdzIGV4cGxpY2l0bHk6IHRoZSBsaWJyYXJ5IGRlZmF1bHRzIGFuIG9taXR0ZWQgb25lIHRvIHRoZSBwbGF0Zm9ybSBSVU5OSU5HIHRoZSBjaGVjaywgd2hpY2ggd291bGQgbWFrZVxuICogdGhlIEFuZHJvaWQgcHJvZmlsZSdzIHZlcmRpY3QgZGVwZW5kIG9uIHdoZXJlIHRoZSBjaGVjayBydW5zIHJhdGhlciB0aGFuIG9uIHRoZSBwcm9maWxlLiBBbmRyb2lkJ3Mgc2hhcmVkXG4gKiBzdG9yYWdlIHJlZnVzZXMgYCogPyA8ID4gXCJgIHRvbzogT2JzaWRpYW4gU3luYyBpdHNlbGYgc2tpcHMgc3VjaCBhIHJlbW90ZSBuYW1lIG9uIEFuZHJvaWQuXG4gKi9cbmZ1bmN0aW9uIGdldFBsYXRmb3JtRm9yYmlkZGVuQ2hhcmFjdGVyc1JlZ0V4cChwcm9maWxlOiBQYXRoQ29tcGF0aWJpbGl0eVByb2ZpbGUpOiBSZWdFeHAge1xuICByZXR1cm4gZ2V0T3NVbnNhZmVQYXRoQ2hhcnNSZWdFeHAocHJvZmlsZS5oYXNXaW5kb3dzTmFtaW5nUnVsZXMsIHByb2ZpbGUucGxhdGZvcm0gPT09IFBhdGhDb21wYXRpYmlsaXR5UGxhdGZvcm0uQW5kcm9pZCk7XG59XG5cbmZ1bmN0aW9uIGdldFByb2ZpbGVzKHBsYXRmb3JtczogcmVhZG9ubHkgUGF0aENvbXBhdGliaWxpdHlQbGF0Zm9ybVtdKTogUGF0aENvbXBhdGliaWxpdHlQcm9maWxlW10ge1xuICByZXR1cm4gcGxhdGZvcm1zLm1hcCgocGxhdGZvcm0pID0+IFBBVEhfQ09NUEFUSUJJTElUWV9QUk9GSUxFU1twbGF0Zm9ybV0pO1xufVxuXG4vKlxuICogYHJlcGxhY2VgIHJhdGhlciB0aGFuIGB0ZXN0YDogdGhlIGxpYnJhcnkncyByZWdleHBzIGNhcnJ5IHRoZSBgZ2AgZmxhZywgYW5kIGB0ZXN0YCBvbiBhIGBnYC1mbGFnZ2VkIHJlZ2V4cFxuICogYWR2YW5jZXMgYGxhc3RJbmRleGAsIHNvIGNvbnNlY3V0aXZlIGNhbGxzIG9uIHRoZSBzYW1lIGNvbnN0YW50IGFuc3dlciBkaWZmZXJlbnRseS5cbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUZvcmJpZGRlbkNoYXJhY3RlcnMoJHN0cmluZzogc3RyaW5nLCBwcm9maWxlOiBQYXRoQ29tcGF0aWJpbGl0eVByb2ZpbGUsIHJlcGxhY2VtZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAvKlxuICAgKiBPbmUgcmVwbGFjZW1lbnQgcGVyIGZvcmJpZGRlbiBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gb25lIHBlciBydW46IGl0IGtlZXBzIHRoZSBuYW1lJ3MgdmlzdWFsIHN0cnVjdHVyZSxcbiAgICogd2hpY2ggaXMgd2hhdCBtYWtlcyB0aGUgcmVwYWlyZWQgbmFtZSBzdGlsbCByZWNvZ25pemFibGUgdG8gd2hvZXZlciB3cm90ZSBpdC4gTm90aGluZyBpcyBsb3N0IGVpdGhlciB3YXkg4oCUXG4gICAqIHRoZSBvcmlnaW5hbCBuYW1lIGlzIHByZXNlcnZlZCBpbiB0aGUgbm90ZSdzIGZyb250bWF0dGVyLiBBIHJlcGxhY2VyIEZVTkNUSU9OLCBzbyBhIGAkJmAgaW4gdGhlXG4gICAqIHJlcGxhY2VtZW50IGlzIG5vdCBleHBhbmRlZCBhcyBhIGJhY2tyZWZlcmVuY2UuXG4gICAqL1xuICByZXR1cm4gJHN0cmluZ1xuICAgIC5yZXBsYWNlKGdldFBsYXRmb3JtRm9yYmlkZGVuQ2hhcmFjdGVyc1JlZ0V4cChwcm9maWxlKSwgKCkgPT4gcmVwbGFjZW1lbnQpXG4gICAgLnJlcGxhY2UoT0JTSURJQU5fVU5TQUZFX0ZJTEVOQU1FX0NIQVJTLCAoKSA9PiByZXBsYWNlbWVudCk7XG59XG5cbi8qXG4gKiBUaGUgcHJvZmlsZSBndWFyZCBpcyB0aGUgcGx1Z2luJ3MsIG5vdCB0aGUgbGlicmFyeSdzOiB0aGUgbGlicmFyeSBhbnN3ZXJzIGZvciBXaW5kb3dzIHVuY29uZGl0aW9uYWxseSwgYW5kXG4gKiB0aGlzIGRlY2lkZXMgd2hldGhlciBXaW5kb3dzIGlzIG9uZSBvZiB0aGUgcGxhdGZvcm1zIHRoZSB2YXVsdCBoYXMgdG8gc2F0aXNmeS5cbiAqL1xuZnVuY3Rpb24gdHJpbVRyYWlsaW5nRG90c0FuZFNwYWNlcygkc3RyaW5nOiBzdHJpbmcsIHByb2ZpbGVzOiBQYXRoQ29tcGF0aWJpbGl0eVByb2ZpbGVbXSk6IHN0cmluZyB7XG4gIHJldHVybiBwcm9maWxlcy5zb21lKChwcm9maWxlKSA9PiBwcm9maWxlLmhhc1dpbmRvd3NOYW1pbmdSdWxlcykgPyB0cmltV2luZG93c1RyYWlsaW5nQ2hhcnMoJHN0cmluZykgOiAkc3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLFNBQVMsZ0JBQWdCO0FBRXpCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS0EsSUFBSyw0QkFBTCxrQkFBS0EsK0JBQUw7QUFDTCxFQUFBQSwyQkFBQSxhQUFVO0FBQ1YsRUFBQUEsMkJBQUEsU0FBTTtBQUNOLEVBQUFBLDJCQUFB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R0FBRztBQUN2QyxTQUFPLGVBQWUsS0FBSyxPQUFPLEtBQUssTUFBTSxhQUFhLENBQUM7QUFDN0Q7QUFPQSxTQUFTLHFDQUFxQyxTQUEyQztBQUN2RixTQUFPLDJCQUEyQixRQUFRLHVCQUF1QixRQUFRLGFBQWEsdUJBQWlDO0FBQ3pIO0FBRUEsU0FBUyxZQUFZLFdBQTZFO0FBQ2hHLFNBQU8sVUFBVSxJQUFJLENBQUMsYUFBYSw0QkFBNEIsUUFBUSxDQUFDO0FBQzFFO0FBTUEsU0FBUywyQkFBMkIsU0FBaUIsU0FBbUMsYUFBNkI7QUFPbkgsU0FBTyxRQUNKLFFBQVEscUNBQXFDLE9BQU8sR0FBRyxNQUFNLFdBQVcsRUFDeEUsUUFBUSxnQ0FBZ0MsTUFBTSxXQUFXO0FBQzlEO0FBTUEsU0FBUywwQkFBMEIsU0FBaUIsVUFBOEM7QUFDaEcsU0FBTyxTQUFTLEtBQUssQ0FBQyxZQUFZLFFBQVEscUJBQXFCLElBQUkseUJBQXlCLE9BQU8sSUFBSTtBQUN6RzsiLCJuYW1lcyI6WyJQYXRoQ29tcGF0aWJpbGl0eVBsYXRmb3JtIiwiUGF0aENvbXBhdGliaWxpdHlWaW9sYXRpb25UeXBlIl19
@@ -9,3 +9,4 @@ export * as 'plugin-lifecycle-events' from './plugin-lifecycle-events.mjs';
9
9
  export * as 'plugin-settings-tab' from './plugin-settings-tab.mjs';
10
10
  export * as 'plugin' from './plugin.mjs';
11
11
  export * as 'settings-migration-api' from './settings-migration-api.mjs';
12
+ export * as 'third-party-plugin' from './third-party-plugin.mjs';
@@ -13,6 +13,7 @@ import * as plugin_lifecycle_events from "./plugin-lifecycle-events.mjs";
13
13
  import * as plugin_settings_tab from "./plugin-settings-tab.mjs";
14
14
  import * as plugin from "./plugin.mjs";
15
15
  import * as settings_migration_api from "./settings-migration-api.mjs";
16
+ import * as third_party_plugin from "./third-party-plugin.mjs";
16
17
  export {
17
18
  plugin,
18
19
  plugin_api as "plugin-api",
@@ -23,6 +24,7 @@ export {
23
24
  plugin_instance as "plugin-instance",
24
25
  plugin_lifecycle_events as "plugin-lifecycle-events",
25
26
  plugin_settings_tab as "plugin-settings-tab",
26
- settings_migration_api as "settings-migration-api"
27
+ settings_migration_api as "settings-migration-api",
28
+ third_party_plugin as "third-party-plugin"
27
29
  };
28
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdwbHVnaW4tYXBpJyBmcm9tICcuL3BsdWdpbi1hcGkudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1hc3luYy1jbGVhbnVwJyBmcm9tICcuL3BsdWdpbi1hc3luYy1jbGVhbnVwLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tY29udGV4dCcgZnJvbSAnLi9wbHVnaW4tY29udGV4dC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWV2ZW50LXNvdXJjZScgZnJvbSAnLi9wbHVnaW4tZXZlbnQtc291cmNlLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4taW5zdGFsbC1zdGF0ZScgZnJvbSAnLi9wbHVnaW4taW5zdGFsbC1zdGF0ZS50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWluc3RhbmNlJyBmcm9tICcuL3BsdWdpbi1pbnN0YW5jZS50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWxpZmVjeWNsZS1ldmVudHMnIGZyb20gJy4vcGx1Z2luLWxpZmVjeWNsZS1ldmVudHMudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zZXR0aW5ncy10YWInIGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLXRhYi50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luJyBmcm9tICcuL3BsdWdpbi50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZ3MtbWlncmF0aW9uLWFwaScgZnJvbSAnLi9zZXR0aW5ncy1taWdyYXRpb24tYXBpLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBRUEsWUFBWUEsZ0JBQWtCO0FBQzlCLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZQyxxQkFBdUI7QUFDbkMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLHlCQUEyQjtBQUN2QyxZQUFZLFlBQWM7QUFDMUIsWUFBWUMsNEJBQThCOyIsCiAgIm5hbWVzIjogWyJwbHVnaW4tYXBpIiwgInBsdWdpbi1hc3luYy1jbGVhbnVwIiwgInBsdWdpbi1jb250ZXh0IiwgInBsdWdpbi1ldmVudC1zb3VyY2UiLCAicGx1Z2luLWluc3RhbGwtc3RhdGUiLCAicGx1Z2luLWluc3RhbmNlIiwgInBsdWdpbi1saWZlY3ljbGUtZXZlbnRzIiwgInBsdWdpbi1zZXR0aW5ncy10YWIiLCAic2V0dGluZ3MtbWlncmF0aW9uLWFwaSJdCn0K
30
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdwbHVnaW4tYXBpJyBmcm9tICcuL3BsdWdpbi1hcGkudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1hc3luYy1jbGVhbnVwJyBmcm9tICcuL3BsdWdpbi1hc3luYy1jbGVhbnVwLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tY29udGV4dCcgZnJvbSAnLi9wbHVnaW4tY29udGV4dC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWV2ZW50LXNvdXJjZScgZnJvbSAnLi9wbHVnaW4tZXZlbnQtc291cmNlLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4taW5zdGFsbC1zdGF0ZScgZnJvbSAnLi9wbHVnaW4taW5zdGFsbC1zdGF0ZS50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWluc3RhbmNlJyBmcm9tICcuL3BsdWdpbi1pbnN0YW5jZS50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWxpZmVjeWNsZS1ldmVudHMnIGZyb20gJy4vcGx1Z2luLWxpZmVjeWNsZS1ldmVudHMudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zZXR0aW5ncy10YWInIGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLXRhYi50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luJyBmcm9tICcuL3BsdWdpbi50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZ3MtbWlncmF0aW9uLWFwaScgZnJvbSAnLi9zZXR0aW5ncy1taWdyYXRpb24tYXBpLnRzJztcbmV4cG9ydCAqIGFzICd0aGlyZC1wYXJ0eS1wbHVnaW4nIGZyb20gJy4vdGhpcmQtcGFydHktcGx1Z2luLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBRUEsWUFBWUEsZ0JBQWtCO0FBQzlCLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZQyxxQkFBdUI7QUFDbkMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLHlCQUEyQjtBQUN2QyxZQUFZLFlBQWM7QUFDMUIsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLHdCQUEwQjsiLAogICJuYW1lcyI6IFsicGx1Z2luLWFwaSIsICJwbHVnaW4tYXN5bmMtY2xlYW51cCIsICJwbHVnaW4tY29udGV4dCIsICJwbHVnaW4tZXZlbnQtc291cmNlIiwgInBsdWdpbi1pbnN0YWxsLXN0YXRlIiwgInBsdWdpbi1pbnN0YW5jZSIsICJwbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cyIsICJwbHVnaW4tc2V0dGluZ3MtdGFiIiwgInNldHRpbmdzLW1pZ3JhdGlvbi1hcGkiLCAidGhpcmQtcGFydHktcGx1Z2luIl0KfQo=
@@ -28,6 +28,11 @@ export declare const PLUGIN_ASYNC_CLEANUPS_STATE_KEY = "pluginAsyncCleanupsV1";
28
28
  * How long a new plugin instance waits for the previous instance's cleanups by default.
29
29
  */
30
30
  export declare const DEFAULT_PLUGIN_ASYNC_CLEANUP_TIMEOUT_IN_MILLISECONDS = 10000;
31
+ /**
32
+ * How long a new plugin instance waits for the previous instance's cleanups, by default, before it shows a notice that
33
+ * its load is paused. Shorter waits show nothing, so the usual few milliseconds never flash a notice.
34
+ */
35
+ export declare const DEFAULT_PLUGIN_ASYNC_CLEANUP_NOTICE_DELAY_IN_MILLISECONDS = 500;
31
36
  /**
32
37
  * Parameters for {@link didPluginAsyncCleanupsSettle}.
33
38
  */
@@ -34,6 +34,7 @@ import { printError } from "@mnaoumov/typescript-lib/error";
34
34
  import { getObsidianLibState } from "../obsidian-lib-state.mjs";
35
35
  const PLUGIN_ASYNC_CLEANUPS_STATE_KEY = "pluginAsyncCleanupsV1";
36
36
  const DEFAULT_PLUGIN_ASYNC_CLEANUP_TIMEOUT_IN_MILLISECONDS = 1e4;
37
+ const DEFAULT_PLUGIN_ASYNC_CLEANUP_NOTICE_DELAY_IN_MILLISECONDS = 500;
37
38
  async function didPluginAsyncCleanupsSettle(params) {
38
39
  const promise = getPendingCleanups().get(params.pluginId);
39
40
  if (!promise) {
@@ -86,6 +87,7 @@ async function runCleanupSafely(params) {
86
87
  }
87
88
  }
88
89
  export {
90
+ DEFAULT_PLUGIN_ASYNC_CLEANUP_NOTICE_DELAY_IN_MILLISECONDS,
89
91
  DEFAULT_PLUGIN_ASYNC_CLEANUP_TIMEOUT_IN_MILLISECONDS,
90
92
  PLUGIN_ASYNC_CLEANUPS_STATE_KEY,
91
93
  didPluginAsyncCleanupsSettle,
@@ -93,4 +95,4 @@ export {
93
95
  registerPluginAsyncCleanup,
94
96
  trackPluginAsyncCleanup
95
97
  };
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW4vcGx1Z2luLWFzeW5jLWNsZWFudXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEFzeW5jIGNsZWFudXAgdGhhdCBvdXRsaXZlcyBhIHBsdWdpbiBpbnN0YW5jZSwgc28gdGhlIG5leHQgaW5zdGFuY2Ugb2YgdGhlIHNhbWUgcGx1Z2luIGNhbiBhd2FpdCBpdC5cbiAqXG4gKiBPYnNpZGlhbidzIGBvbnVubG9hZGAgaXMgc3luY2hyb25vdXMgYW5kIG5vdGhpbmcgYXdhaXRzIHdoYXQgaXQgc3RhcnRzLiBSZWFkIGZyb20gT2JzaWRpYW4gYDEuMTUuMWA6XG4gKiBgUGx1Z2lucy51bmxvYWRQbHVnaW5gIGNhbGxzIHRoZSBvbGQgaW5zdGFuY2UncyBgdW5sb2FkKClgIGFuZCByZXR1cm5zLCBhbmQgYGVuYWJsZVBsdWdpbmAgdGhlbiBjb25zdHJ1Y3RzIHRoZSBuZXdcbiAqIGluc3RhbmNlIGFuZCBhd2FpdHMgaXRzIGBsb2FkKClgLiBTbyBvbiBhIGRpc2FibGUgLyBlbmFibGUsIGEgcmVsb2FkIG9yIGFuIHVwZGF0ZSB3aGlsZSBlbmFibGVkLCB3b3JrIGxpa2UgY2xvc2luZ1xuICogYW4gSW5kZXhlZERCIGNvbm5lY3Rpb24gaXMgc3RpbGwgaW4gZmxpZ2h0IHdoZW4gdGhlIG5ldyBpbnN0YW5jZSBzdGFydHMsIGFuZCB0aGUgbmV3IGluc3RhbmNlIGNhbiBvcGVuIGEgZGF0YWJhc2VcbiAqIHRoZSBvbGQgb25lIHN0aWxsIGhvbGRzLlxuICpcbiAqIFRoZSByZWdpc3RyeSBoZXJlIGNsb3NlcyB0aGF0IGdhcCB3aXRob3V0IG93bmluZyB0aGUgcmVsb2FkIGxpZmVjeWNsZTogYSBjbGVhbnVwIHN0YXJ0cyB3aGVuIHRoZSBjb21wb25lbnQgaXQgaXNcbiAqIHJlZ2lzdGVyZWQgb24gdW5sb2FkcywgaXRzIHByb21pc2UgaXMga2VwdCByZWFsbS13aWRlIHVuZGVyIHRoZSBwbHVnaW4gaWQsIGFuZCB0aGUgbmV4dCBpbnN0YW5jZSBhd2FpdHMgaXQsIGJvdW5kZWRcbiAqIGJ5IGEgdGltZW91dCwgYmVmb3JlIGl0IHN0YXJ0cy4gYFBsdWdpbkJhc2VgIGRvZXMgYm90aCBoYWx2ZXMgaXRzZWxmLlxuICpcbiAqIFRoZSByZWdpc3RyeSBsaXZlcyBpbiB0aGUgcmVhbG0tZ2xvYmFsIHNoYXJlZC1zdGF0ZSBiYWcgdW5kZXIgdGhlIHZlcnNpb25lZCBrZXkgYHBsdWdpbkFzeW5jQ2xlYW51cHNWMWAsIGJlY2F1c2UgdGhlXG4gKiBvbGQgaW5zdGFuY2UgYW5kIHRoZSBuZXcgb25lIG1heSBidW5kbGUgZGlmZmVyZW50IGNvcGllcyBvZiB0aGlzIGxpYnJhcnkuIEl0IGlzIGEgd2lyZSBmb3JtYXQgYmV0d2VlbiB0aG9zZSBjb3BpZXM6XG4gKiBhIHBsYWluIGBNYXBgIGZyb20gcGx1Z2luIGlkIHRvIGEgYFByb21pc2U8dm9pZD5gIHRoYXQgbmV2ZXIgcmVqZWN0cy4gQSBjaGFuZ2Ugb2YgbWVhbmluZyBtb3ZlcyB0byBhIG5ldyBrZXkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJTdGF0ZSB9IGZyb20gJy4uL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIHNoYXJlZC1zdGF0ZSBrZXkgb2YgdGhlIHBlbmRpbmcgY2xlYW51cHMuIFZlcnNpb25lZCwgYmVjYXVzZSBpdCBpcyBhIHdpcmUgZm9ybWF0IGJldHdlZW4gY29waWVzIG9mIHRoaXMgbGlicmFyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9BU1lOQ19DTEVBTlVQU19TVEFURV9LRVkgPSAncGx1Z2luQXN5bmNDbGVhbnVwc1YxJztcblxuLyoqXG4gKiBIb3cgbG9uZyBhIG5ldyBwbHVnaW4gaW5zdGFuY2Ugd2FpdHMgZm9yIHRoZSBwcmV2aW91cyBpbnN0YW5jZSdzIGNsZWFudXBzIGJ5IGRlZmF1bHQuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BMVUdJTl9BU1lOQ19DTEVBTlVQX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMTBfMDAwO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBkaWRQbHVnaW5Bc3luY0NsZWFudXBzU2V0dGxlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaWRQbHVnaW5Bc3luY0NsZWFudXBzU2V0dGxlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgcGx1Z2luIHdob3NlIHBlbmRpbmcgY2xlYW51cHMgdG8gYXdhaXQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyB0byB3YWl0IGJlZm9yZSBnaXZpbmcgdXAuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX1BMVUdJTl9BU1lOQ19DTEVBTlVQX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTfS5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBbiBhc3luYyBjbGVhbnVwLlxuICovXG5leHBvcnQgdHlwZSBQbHVnaW5Bc3luY0NsZWFudXAgPSAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZWdpc3RlclBsdWdpbkFzeW5jQ2xlYW51cH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJQbHVnaW5Bc3luY0NsZWFudXBQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNsZWFudXAgdG8gcnVuLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW51cDogUGx1Z2luQXN5bmNDbGVhbnVwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHdob3NlIHVubG9hZCBzdGFydHMgdGhlIGNsZWFudXAuXG4gICAqL1xuICByZWFkb25seSBjb21wb25lbnQ6IENvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBwbHVnaW4gdGhlIGNsZWFudXAgYmVsb25ncyB0bywgd2hpY2ggdGhlIG5leHQgaW5zdGFuY2Ugd2FpdHMgdW5kZXIuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB0cmFja1BsdWdpbkFzeW5jQ2xlYW51cH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tQbHVnaW5Bc3luY0NsZWFudXBQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNsZWFudXAgdG8gcnVuIG5vdy5cbiAgICovXG4gIHJlYWRvbmx5IGNsZWFudXA6IFBsdWdpbkFzeW5jQ2xlYW51cDtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBwbHVnaW4gdGhlIGNsZWFudXAgYmVsb25ncyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBUcmFja2VkQ2xlYW51cEVudHJ5IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMgLS0gQXNzaWduZWQgb25jZSB0aGUgc2VsZi1yZW1vdmluZyBwcm9taXNlIGV4aXN0cy5cbiAgcHJvbWlzZT86IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQXdhaXRzIGV2ZXJ5IGNsZWFudXAgc3RpbGwgaW4gZmxpZ2h0IGZvciB0aGUgcGx1Z2luLCBib3VuZGVkIGJ5IGEgdGltZW91dC5cbiAqXG4gKiBSZXNvbHZlcyBhdCBvbmNlIHdoZW4gbm90aGluZyBpcyBwZW5kaW5nLiBOZXZlciByZWplY3RzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBldmVyeSBwZW5kaW5nIGNsZWFudXAgc2V0dGxlZCBpbiB0aW1lLCBgZmFsc2VgIGlmIHRoZSB0aW1lb3V0IHdhcyByZWFjaGVkIGZpcnN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGlkUGx1Z2luQXN5bmNDbGVhbnVwc1NldHRsZShwYXJhbXM6IERpZFBsdWdpbkFzeW5jQ2xlYW51cHNTZXR0bGVQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgcHJvbWlzZSA9IGdldFBlbmRpbmdDbGVhbnVwcygpLmdldChwYXJhbXMucGx1Z2luSWQpO1xuICBpZiAoIXByb21pc2UpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGxldCB0aW1lb3V0SWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZTxmYWxzZT4oKHJlc29sdmUpID0+IHtcbiAgICB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICB9LCBwYXJhbXMudGltZW91dEluTWlsbGlzZWNvbmRzID8/IERFRkFVTFRfUExVR0lOX0FTWU5DX0NMRUFOVVBfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuICB9KTtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJhY2UoW3Byb21pc2UudGhlbigoKSA9PiB0cnVlKSwgdGltZW91dFByb21pc2VdKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHBsdWdpbiBoYXMgY2xlYW51cHMgc3RpbGwgaW4gZmxpZ2h0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW5JZCAtIFRoZSBwbHVnaW4gaWQuXG4gKiBAcmV0dXJucyBXaGV0aGVyIGFueSBjbGVhbnVwIHJlZ2lzdGVyZWQgdW5kZXIgdGhlIGlkIGhhcyBub3Qgc2V0dGxlZCB5ZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQZW5kaW5nUGx1Z2luQXN5bmNDbGVhbnVwcyhwbHVnaW5JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRQZW5kaW5nQ2xlYW51cHMoKS5oYXMocGx1Z2luSWQpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhbiBhc3luYyBjbGVhbnVwIHRoYXQgc3RhcnRzIHdoZW4gdGhlIGNvbXBvbmVudCB1bmxvYWRzIGFuZCB0aGF0IHRoZSBuZXh0IGluc3RhbmNlIG9mIHRoZSBwbHVnaW4gYXdhaXRzLlxuICpcbiAqIFRoZSBjbGVhbnVwIHJ1bnMgZXhhY3RseSBvbmNlLCBvbiB0aGUgY29tcG9uZW50J3MgdW5sb2FkLiBSZWdpc3RlciBpdCBvbiB0aGUgY29tcG9uZW50IHdob3NlIGxpZmV0aW1lIG1hdGNoZXMgdGhlXG4gKiByZXNvdXJjZTogYSBgUGx1Z2luQmFzZWAgc3ViY2xhc3MgY2FsbHMgYHJlZ2lzdGVyQXN5bmNDbGVhbnVwYCBpbnN0ZWFkLCB3aGljaCBzY29wZXMgaXQgdG8gdGhlIGZlYXR1cmUgc3VyZmFjZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclBsdWdpbkFzeW5jQ2xlYW51cChwYXJhbXM6IFJlZ2lzdGVyUGx1Z2luQXN5bmNDbGVhbnVwUGFyYW1zKTogdm9pZCB7XG4gIHBhcmFtcy5jb21wb25lbnQucmVnaXN0ZXIoKCkgPT4ge1xuICAgIHRyYWNrUGx1Z2luQXN5bmNDbGVhbnVwKHtcbiAgICAgIGNsZWFudXA6IHBhcmFtcy5jbGVhbnVwLFxuICAgICAgcGx1Z2luSWQ6IHBhcmFtcy5wbHVnaW5JZFxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIGFuIGFzeW5jIGNsZWFudXAgbm93IGFuZCB0cmFja3MgaXQgdW5kZXIgdGhlIHBsdWdpbiBpZCB1bnRpbCBpdCBzZXR0bGVzLlxuICpcbiAqIEEgY2xlYW51cCB0aGF0IHRocm93cyBvciByZWplY3RzIGlzIHByaW50ZWQgYW5kIGNvdW50cyBhcyBzZXR0bGVkLCBzbyBhIGZhaWxpbmcgY2xlYW51cCBuZXZlciBzdG9wcyB0aGUgbmV4dFxuICogaW5zdGFuY2UgZnJvbSBsb2FkaW5nLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrUGx1Z2luQXN5bmNDbGVhbnVwKHBhcmFtczogVHJhY2tQbHVnaW5Bc3luY0NsZWFudXBQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgcGVuZGluZ0NsZWFudXBzID0gZ2V0UGVuZGluZ0NsZWFudXBzKCk7XG4gIGNvbnN0IHByZXZpb3VzUHJvbWlzZSA9IHBlbmRpbmdDbGVhbnVwcy5nZXQocGFyYW1zLnBsdWdpbklkKTtcbiAgY29uc3QgY2xlYW51cFByb21pc2UgPSBydW5DbGVhbnVwU2FmZWx5KHBhcmFtcyk7XG4gIC8vIE5ldmVyIHJlamVjdHM6IGBydW5DbGVhbnVwU2FmZWx5YCBjYXRjaGVzLCBhbmQgc28gZGlkIHdoaWNoZXZlciBjYWxsIHRyYWNrZWQgYHByZXZpb3VzUHJvbWlzZWAuXG4gIGNvbnN0IGVudHJ5OiBUcmFja2VkQ2xlYW51cEVudHJ5ID0ge307XG4gIGVudHJ5LnByb21pc2UgPSAoYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFtwcmV2aW91c1Byb21pc2UsIGNsZWFudXBQcm9taXNlXSk7XG4gICAgLy8gQSBsYXRlciBjYWxsIG1heSBoYXZlIGNoYWluZWQgb250byB0aGlzIGVudHJ5IGFscmVhZHk7IG9ubHkgdGhlIGxhdGVzdCBlbnRyeSByZW1vdmVzIGl0c2VsZi5cbiAgICBpZiAocGVuZGluZ0NsZWFudXBzLmdldChwYXJhbXMucGx1Z2luSWQpID09PSBlbnRyeS5wcm9taXNlKSB7XG4gICAgICBwZW5kaW5nQ2xlYW51cHMuZGVsZXRlKHBhcmFtcy5wbHVnaW5JZCk7XG4gICAgfVxuICB9KSgpO1xuICBwZW5kaW5nQ2xlYW51cHMuc2V0KHBhcmFtcy5wbHVnaW5JZCwgZW50cnkucHJvbWlzZSk7XG59XG5cbmZ1bmN0aW9uIGdldFBlbmRpbmdDbGVhbnVwcygpOiBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PiB7XG4gIHJldHVybiBnZXRPYnNpZGlhbkxpYlN0YXRlKFBMVUdJTl9BU1lOQ19DTEVBTlVQU19TVEFURV9LRVksIG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PigpKS52YWx1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuQ2xlYW51cFNhZmVseShwYXJhbXM6IFRyYWNrUGx1Z2luQXN5bmNDbGVhbnVwUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgcGFyYW1zLmNsZWFudXAoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKG5ldyBFcnJvcihgQXN5bmMgY2xlYW51cCBvZiBwbHVnaW4gJHtwYXJhbXMucGx1Z2luSWR9IGZhaWxlZGAsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQSxTQUFTLGtCQUFrQjtBQUUzQixTQUFTLDJCQUEyQjtBQUs3QixNQUFNLGtDQUFrQztBQUt4QyxNQUFNLHVEQUF1RDtBQXNFcEUsZUFBc0IsNkJBQTZCLFFBQThEO0FBQy9HLFFBQU0sVUFBVSxtQkFBbUIsRUFBRSxJQUFJLE9BQU8sUUFBUTtBQUN4RCxNQUFJLENBQUMsU0FBUztBQUNaLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSTtBQUNKLFFBQU0saUJBQWlCLElBQUksUUFBZSxDQUFDLFlBQVk7QUFDckQsZ0JBQVksT0FBTyxXQUFXLE1BQU07QUFDbEMsY0FBUSxLQUFLO0FBQUEsSUFDZixHQUFHLE9BQU8seUJBQXlCLG9EQUFvRDtBQUFBLEVBQ3pGLENBQUM7QUFFRCxNQUFJO0FBQ0YsV0FBTyxNQUFNLFFBQVEsS0FBSyxDQUFDLFFBQVEsS0FBSyxNQUFNLElBQUksR0FBRyxjQUFjLENBQUM7QUFBQSxFQUN0RSxVQUFFO0FBQ0EsV0FBTyxhQUFhLFNBQVM7QUFBQSxFQUMvQjtBQUNGO0FBUU8sU0FBUyw4QkFBOEIsVUFBMkI7QUFDdkUsU0FBTyxtQkFBbUIsRUFBRSxJQUFJLFFBQVE7QUFDMUM7QUFVTyxTQUFTLDJCQUEyQixRQUFnRDtBQUN6RixTQUFPLFVBQVUsU0FBUyxNQUFNO0FBQzlCLDRCQUF3QjtBQUFBLE1BQ3RCLFNBQVMsT0FBTztBQUFBLE1BQ2hCLFVBQVUsT0FBTztBQUFBLElBQ25CLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDtBQVVPLFNBQVMsd0JBQXdCLFFBQTZDO0FBQ25GLFFBQU0sa0JBQWtCLG1CQUFtQjtBQUMzQyxRQUFNLGtCQUFrQixnQkFBZ0IsSUFBSSxPQUFPLFFBQVE7QUFDM0QsUUFBTSxpQkFBaUIsaUJBQWlCLE1BQU07QUFFOUMsUUFBTSxRQUE2QixDQUFDO0FBQ3BDLFFBQU0sV0FBVyxZQUEyQjtBQUMxQyxVQUFNLFFBQVEsSUFBSSxDQUFDLGlCQUFpQixjQUFjLENBQUM7QUFFbkQsUUFBSSxnQkFBZ0IsSUFBSSxPQUFPLFFBQVEsTUFBTSxNQUFNLFNBQVM7QUFDMUQsc0JBQWdCLE9BQU8sT0FBTyxRQUFRO0FBQUEsSUFDeEM7QUFBQSxFQUNGLEdBQUc7QUFDSCxrQkFBZ0IsSUFBSSxPQUFPLFVBQVUsTUFBTSxPQUFPO0FBQ3BEO0FBRUEsU0FBUyxxQkFBaUQ7QUFDeEQsU0FBTyxvQkFBb0IsaUNBQWlDLG9CQUFJLElBQTJCLENBQUMsRUFBRTtBQUNoRztBQUVBLGVBQWUsaUJBQWlCLFFBQXNEO0FBQ3BGLE1BQUk7QUFDRixVQUFNLE9BQU8sUUFBUTtBQUFBLEVBQ3ZCLFNBQVMsT0FBTztBQUNkLGVBQVcsSUFBSSxNQUFNLDJCQUEyQixPQUFPLFFBQVEsV0FBVyxFQUFFLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFBQSxFQUM3RjtBQUNGOyIsIm5hbWVzIjpbXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW4vcGx1Z2luLWFzeW5jLWNsZWFudXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEFzeW5jIGNsZWFudXAgdGhhdCBvdXRsaXZlcyBhIHBsdWdpbiBpbnN0YW5jZSwgc28gdGhlIG5leHQgaW5zdGFuY2Ugb2YgdGhlIHNhbWUgcGx1Z2luIGNhbiBhd2FpdCBpdC5cbiAqXG4gKiBPYnNpZGlhbidzIGBvbnVubG9hZGAgaXMgc3luY2hyb25vdXMgYW5kIG5vdGhpbmcgYXdhaXRzIHdoYXQgaXQgc3RhcnRzLiBSZWFkIGZyb20gT2JzaWRpYW4gYDEuMTUuMWA6XG4gKiBgUGx1Z2lucy51bmxvYWRQbHVnaW5gIGNhbGxzIHRoZSBvbGQgaW5zdGFuY2UncyBgdW5sb2FkKClgIGFuZCByZXR1cm5zLCBhbmQgYGVuYWJsZVBsdWdpbmAgdGhlbiBjb25zdHJ1Y3RzIHRoZSBuZXdcbiAqIGluc3RhbmNlIGFuZCBhd2FpdHMgaXRzIGBsb2FkKClgLiBTbyBvbiBhIGRpc2FibGUgLyBlbmFibGUsIGEgcmVsb2FkIG9yIGFuIHVwZGF0ZSB3aGlsZSBlbmFibGVkLCB3b3JrIGxpa2UgY2xvc2luZ1xuICogYW4gSW5kZXhlZERCIGNvbm5lY3Rpb24gaXMgc3RpbGwgaW4gZmxpZ2h0IHdoZW4gdGhlIG5ldyBpbnN0YW5jZSBzdGFydHMsIGFuZCB0aGUgbmV3IGluc3RhbmNlIGNhbiBvcGVuIGEgZGF0YWJhc2VcbiAqIHRoZSBvbGQgb25lIHN0aWxsIGhvbGRzLlxuICpcbiAqIFRoZSByZWdpc3RyeSBoZXJlIGNsb3NlcyB0aGF0IGdhcCB3aXRob3V0IG93bmluZyB0aGUgcmVsb2FkIGxpZmVjeWNsZTogYSBjbGVhbnVwIHN0YXJ0cyB3aGVuIHRoZSBjb21wb25lbnQgaXQgaXNcbiAqIHJlZ2lzdGVyZWQgb24gdW5sb2FkcywgaXRzIHByb21pc2UgaXMga2VwdCByZWFsbS13aWRlIHVuZGVyIHRoZSBwbHVnaW4gaWQsIGFuZCB0aGUgbmV4dCBpbnN0YW5jZSBhd2FpdHMgaXQsIGJvdW5kZWRcbiAqIGJ5IGEgdGltZW91dCwgYmVmb3JlIGl0IHN0YXJ0cy4gYFBsdWdpbkJhc2VgIGRvZXMgYm90aCBoYWx2ZXMgaXRzZWxmLlxuICpcbiAqIFRoZSByZWdpc3RyeSBsaXZlcyBpbiB0aGUgcmVhbG0tZ2xvYmFsIHNoYXJlZC1zdGF0ZSBiYWcgdW5kZXIgdGhlIHZlcnNpb25lZCBrZXkgYHBsdWdpbkFzeW5jQ2xlYW51cHNWMWAsIGJlY2F1c2UgdGhlXG4gKiBvbGQgaW5zdGFuY2UgYW5kIHRoZSBuZXcgb25lIG1heSBidW5kbGUgZGlmZmVyZW50IGNvcGllcyBvZiB0aGlzIGxpYnJhcnkuIEl0IGlzIGEgd2lyZSBmb3JtYXQgYmV0d2VlbiB0aG9zZSBjb3BpZXM6XG4gKiBhIHBsYWluIGBNYXBgIGZyb20gcGx1Z2luIGlkIHRvIGEgYFByb21pc2U8dm9pZD5gIHRoYXQgbmV2ZXIgcmVqZWN0cy4gQSBjaGFuZ2Ugb2YgbWVhbmluZyBtb3ZlcyB0byBhIG5ldyBrZXkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJTdGF0ZSB9IGZyb20gJy4uL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIHNoYXJlZC1zdGF0ZSBrZXkgb2YgdGhlIHBlbmRpbmcgY2xlYW51cHMuIFZlcnNpb25lZCwgYmVjYXVzZSBpdCBpcyBhIHdpcmUgZm9ybWF0IGJldHdlZW4gY29waWVzIG9mIHRoaXMgbGlicmFyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9BU1lOQ19DTEVBTlVQU19TVEFURV9LRVkgPSAncGx1Z2luQXN5bmNDbGVhbnVwc1YxJztcblxuLyoqXG4gKiBIb3cgbG9uZyBhIG5ldyBwbHVnaW4gaW5zdGFuY2Ugd2FpdHMgZm9yIHRoZSBwcmV2aW91cyBpbnN0YW5jZSdzIGNsZWFudXBzIGJ5IGRlZmF1bHQuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BMVUdJTl9BU1lOQ19DTEVBTlVQX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMTBfMDAwO1xuXG4vKipcbiAqIEhvdyBsb25nIGEgbmV3IHBsdWdpbiBpbnN0YW5jZSB3YWl0cyBmb3IgdGhlIHByZXZpb3VzIGluc3RhbmNlJ3MgY2xlYW51cHMsIGJ5IGRlZmF1bHQsIGJlZm9yZSBpdCBzaG93cyBhIG5vdGljZSB0aGF0XG4gKiBpdHMgbG9hZCBpcyBwYXVzZWQuIFNob3J0ZXIgd2FpdHMgc2hvdyBub3RoaW5nLCBzbyB0aGUgdXN1YWwgZmV3IG1pbGxpc2Vjb25kcyBuZXZlciBmbGFzaCBhIG5vdGljZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExVR0lOX0FTWU5DX0NMRUFOVVBfTk9USUNFX0RFTEFZX0lOX01JTExJU0VDT05EUyA9IDUwMDtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZGlkUGx1Z2luQXN5bmNDbGVhbnVwc1NldHRsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlkUGx1Z2luQXN5bmNDbGVhbnVwc1NldHRsZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHBsdWdpbiB3aG9zZSBwZW5kaW5nIGNsZWFudXBzIHRvIGF3YWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSG93IGxvbmcgdG8gd2FpdCBiZWZvcmUgZ2l2aW5nIHVwLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9QTFVHSU5fQVNZTkNfQ0xFQU5VUF9USU1FT1VUX0lOX01JTExJU0VDT05EU30uXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQW4gYXN5bmMgY2xlYW51cC5cbiAqL1xuZXhwb3J0IHR5cGUgUGx1Z2luQXN5bmNDbGVhbnVwID0gKCkgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVnaXN0ZXJQbHVnaW5Bc3luY0NsZWFudXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyUGx1Z2luQXN5bmNDbGVhbnVwUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjbGVhbnVwIHRvIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGNsZWFudXA6IFBsdWdpbkFzeW5jQ2xlYW51cDtcblxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB3aG9zZSB1bmxvYWQgc3RhcnRzIHRoZSBjbGVhbnVwLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50OiBDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgcGx1Z2luIHRoZSBjbGVhbnVwIGJlbG9uZ3MgdG8sIHdoaWNoIHRoZSBuZXh0IGluc3RhbmNlIHdhaXRzIHVuZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdHJhY2tQbHVnaW5Bc3luY0NsZWFudXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrUGx1Z2luQXN5bmNDbGVhbnVwUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjbGVhbnVwIHRvIHJ1biBub3cuXG4gICAqL1xuICByZWFkb25seSBjbGVhbnVwOiBQbHVnaW5Bc3luY0NsZWFudXA7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgcGx1Z2luIHRoZSBjbGVhbnVwIGJlbG9uZ3MgdG8uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVHJhY2tlZENsZWFudXBFbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB0eXBlc2NyaXB0LWRldi10b29sa2l0L3JlYWRvbmx5LWludGVyZmFjZS1tZW1iZXJzIC0tIEFzc2lnbmVkIG9uY2UgdGhlIHNlbGYtcmVtb3ZpbmcgcHJvbWlzZSBleGlzdHMuXG4gIHByb21pc2U/OiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEF3YWl0cyBldmVyeSBjbGVhbnVwIHN0aWxsIGluIGZsaWdodCBmb3IgdGhlIHBsdWdpbiwgYm91bmRlZCBieSBhIHRpbWVvdXQuXG4gKlxuICogUmVzb2x2ZXMgYXQgb25jZSB3aGVuIG5vdGhpbmcgaXMgcGVuZGluZy4gTmV2ZXIgcmVqZWN0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgZXZlcnkgcGVuZGluZyBjbGVhbnVwIHNldHRsZWQgaW4gdGltZSwgYGZhbHNlYCBpZiB0aGUgdGltZW91dCB3YXMgcmVhY2hlZCBmaXJzdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpZFBsdWdpbkFzeW5jQ2xlYW51cHNTZXR0bGUocGFyYW1zOiBEaWRQbHVnaW5Bc3luY0NsZWFudXBzU2V0dGxlUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHByb21pc2UgPSBnZXRQZW5kaW5nQ2xlYW51cHMoKS5nZXQocGFyYW1zLnBsdWdpbklkKTtcbiAgaWYgKCFwcm9taXNlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBsZXQgdGltZW91dElkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8ZmFsc2U+KChyZXNvbHZlKSA9PiB7XG4gICAgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgfSwgcGFyYW1zLnRpbWVvdXRJbk1pbGxpc2Vjb25kcyA/PyBERUZBVUxUX1BMVUdJTl9BU1lOQ19DTEVBTlVQX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTKTtcbiAgfSk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yYWNlKFtwcm9taXNlLnRoZW4oKCkgPT4gdHJ1ZSksIHRpbWVvdXRQcm9taXNlXSk7XG4gIH0gZmluYWxseSB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBwbHVnaW4gaGFzIGNsZWFudXBzIHN0aWxsIGluIGZsaWdodC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIGlkLlxuICogQHJldHVybnMgV2hldGhlciBhbnkgY2xlYW51cCByZWdpc3RlcmVkIHVuZGVyIHRoZSBpZCBoYXMgbm90IHNldHRsZWQgeWV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUGVuZGluZ1BsdWdpbkFzeW5jQ2xlYW51cHMocGx1Z2luSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0UGVuZGluZ0NsZWFudXBzKCkuaGFzKHBsdWdpbklkKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYW4gYXN5bmMgY2xlYW51cCB0aGF0IHN0YXJ0cyB3aGVuIHRoZSBjb21wb25lbnQgdW5sb2FkcyBhbmQgdGhhdCB0aGUgbmV4dCBpbnN0YW5jZSBvZiB0aGUgcGx1Z2luIGF3YWl0cy5cbiAqXG4gKiBUaGUgY2xlYW51cCBydW5zIGV4YWN0bHkgb25jZSwgb24gdGhlIGNvbXBvbmVudCdzIHVubG9hZC4gUmVnaXN0ZXIgaXQgb24gdGhlIGNvbXBvbmVudCB3aG9zZSBsaWZldGltZSBtYXRjaGVzIHRoZVxuICogcmVzb3VyY2U6IGEgYFBsdWdpbkJhc2VgIHN1YmNsYXNzIGNhbGxzIGByZWdpc3RlckFzeW5jQ2xlYW51cGAgaW5zdGVhZCwgd2hpY2ggc2NvcGVzIGl0IHRvIHRoZSBmZWF0dXJlIHN1cmZhY2UuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJQbHVnaW5Bc3luY0NsZWFudXAocGFyYW1zOiBSZWdpc3RlclBsdWdpbkFzeW5jQ2xlYW51cFBhcmFtcyk6IHZvaWQge1xuICBwYXJhbXMuY29tcG9uZW50LnJlZ2lzdGVyKCgpID0+IHtcbiAgICB0cmFja1BsdWdpbkFzeW5jQ2xlYW51cCh7XG4gICAgICBjbGVhbnVwOiBwYXJhbXMuY2xlYW51cCxcbiAgICAgIHBsdWdpbklkOiBwYXJhbXMucGx1Z2luSWRcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogUnVucyBhbiBhc3luYyBjbGVhbnVwIG5vdyBhbmQgdHJhY2tzIGl0IHVuZGVyIHRoZSBwbHVnaW4gaWQgdW50aWwgaXQgc2V0dGxlcy5cbiAqXG4gKiBBIGNsZWFudXAgdGhhdCB0aHJvd3Mgb3IgcmVqZWN0cyBpcyBwcmludGVkIGFuZCBjb3VudHMgYXMgc2V0dGxlZCwgc28gYSBmYWlsaW5nIGNsZWFudXAgbmV2ZXIgc3RvcHMgdGhlIG5leHRcbiAqIGluc3RhbmNlIGZyb20gbG9hZGluZy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFja1BsdWdpbkFzeW5jQ2xlYW51cChwYXJhbXM6IFRyYWNrUGx1Z2luQXN5bmNDbGVhbnVwUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHBlbmRpbmdDbGVhbnVwcyA9IGdldFBlbmRpbmdDbGVhbnVwcygpO1xuICBjb25zdCBwcmV2aW91c1Byb21pc2UgPSBwZW5kaW5nQ2xlYW51cHMuZ2V0KHBhcmFtcy5wbHVnaW5JZCk7XG4gIGNvbnN0IGNsZWFudXBQcm9taXNlID0gcnVuQ2xlYW51cFNhZmVseShwYXJhbXMpO1xuICAvLyBOZXZlciByZWplY3RzOiBgcnVuQ2xlYW51cFNhZmVseWAgY2F0Y2hlcywgYW5kIHNvIGRpZCB3aGljaGV2ZXIgY2FsbCB0cmFja2VkIGBwcmV2aW91c1Byb21pc2VgLlxuICBjb25zdCBlbnRyeTogVHJhY2tlZENsZWFudXBFbnRyeSA9IHt9O1xuICBlbnRyeS5wcm9taXNlID0gKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbcHJldmlvdXNQcm9taXNlLCBjbGVhbnVwUHJvbWlzZV0pO1xuICAgIC8vIEEgbGF0ZXIgY2FsbCBtYXkgaGF2ZSBjaGFpbmVkIG9udG8gdGhpcyBlbnRyeSBhbHJlYWR5OyBvbmx5IHRoZSBsYXRlc3QgZW50cnkgcmVtb3ZlcyBpdHNlbGYuXG4gICAgaWYgKHBlbmRpbmdDbGVhbnVwcy5nZXQocGFyYW1zLnBsdWdpbklkKSA9PT0gZW50cnkucHJvbWlzZSkge1xuICAgICAgcGVuZGluZ0NsZWFudXBzLmRlbGV0ZShwYXJhbXMucGx1Z2luSWQpO1xuICAgIH1cbiAgfSkoKTtcbiAgcGVuZGluZ0NsZWFudXBzLnNldChwYXJhbXMucGx1Z2luSWQsIGVudHJ5LnByb21pc2UpO1xufVxuXG5mdW5jdGlvbiBnZXRQZW5kaW5nQ2xlYW51cHMoKTogTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5MaWJTdGF0ZShQTFVHSU5fQVNZTkNfQ0xFQU5VUFNfU1RBVEVfS0VZLCBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKSkudmFsdWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bkNsZWFudXBTYWZlbHkocGFyYW1zOiBUcmFja1BsdWdpbkFzeW5jQ2xlYW51cFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGF3YWl0IHBhcmFtcy5jbGVhbnVwKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEFzeW5jIGNsZWFudXAgb2YgcGx1Z2luICR7cGFyYW1zLnBsdWdpbklkfSBmYWlsZWRgLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkEsU0FBUyxrQkFBa0I7QUFFM0IsU0FBUywyQkFBMkI7QUFLN0IsTUFBTSxrQ0FBa0M7QUFLeEMsTUFBTSx1REFBdUQ7QUFNN0QsTUFBTSw0REFBNEQ7QUFzRXpFLGVBQXNCLDZCQUE2QixRQUE4RDtBQUMvRyxRQUFNLFVBQVUsbUJBQW1CLEVBQUUsSUFBSSxPQUFPLFFBQVE7QUFDeEQsTUFBSSxDQUFDLFNBQVM7QUFDWixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUk7QUFDSixRQUFNLGlCQUFpQixJQUFJLFFBQWUsQ0FBQyxZQUFZO0FBQ3JELGdCQUFZLE9BQU8sV0FBVyxNQUFNO0FBQ2xDLGNBQVEsS0FBSztBQUFBLElBQ2YsR0FBRyxPQUFPLHlCQUF5QixvREFBb0Q7QUFBQSxFQUN6RixDQUFDO0FBRUQsTUFBSTtBQUNGLFdBQU8sTUFBTSxRQUFRLEtBQUssQ0FBQyxRQUFRLEtBQUssTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDO0FBQUEsRUFDdEUsVUFBRTtBQUNBLFdBQU8sYUFBYSxTQUFTO0FBQUEsRUFDL0I7QUFDRjtBQVFPLFNBQVMsOEJBQThCLFVBQTJCO0FBQ3ZFLFNBQU8sbUJBQW1CLEVBQUUsSUFBSSxRQUFRO0FBQzFDO0FBVU8sU0FBUywyQkFBMkIsUUFBZ0Q7QUFDekYsU0FBTyxVQUFVLFNBQVMsTUFBTTtBQUM5Qiw0QkFBd0I7QUFBQSxNQUN0QixTQUFTLE9BQU87QUFBQSxNQUNoQixVQUFVLE9BQU87QUFBQSxJQUNuQixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFVTyxTQUFTLHdCQUF3QixRQUE2QztBQUNuRixRQUFNLGtCQUFrQixtQkFBbUI7QUFDM0MsUUFBTSxrQkFBa0IsZ0JBQWdCLElBQUksT0FBTyxRQUFRO0FBQzNELFFBQU0saUJBQWlCLGlCQUFpQixNQUFNO0FBRTlDLFFBQU0sUUFBNkIsQ0FBQztBQUNwQyxRQUFNLFdBQVcsWUFBMkI7QUFDMUMsVUFBTSxRQUFRLElBQUksQ0FBQyxpQkFBaUIsY0FBYyxDQUFDO0FBRW5ELFFBQUksZ0JBQWdCLElBQUksT0FBTyxRQUFRLE1BQU0sTUFBTSxTQUFTO0FBQzFELHNCQUFnQixPQUFPLE9BQU8sUUFBUTtBQUFBLElBQ3hDO0FBQUEsRUFDRixHQUFHO0FBQ0gsa0JBQWdCLElBQUksT0FBTyxVQUFVLE1BQU0sT0FBTztBQUNwRDtBQUVBLFNBQVMscUJBQWlEO0FBQ3hELFNBQU8sb0JBQW9CLGlDQUFpQyxvQkFBSSxJQUEyQixDQUFDLEVBQUU7QUFDaEc7QUFFQSxlQUFlLGlCQUFpQixRQUFzRDtBQUNwRixNQUFJO0FBQ0YsVUFBTSxPQUFPLFFBQVE7QUFBQSxFQUN2QixTQUFTLE9BQU87QUFDZCxlQUFXLElBQUksTUFBTSwyQkFBMkIsT0FBTyxRQUFRLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQUEsRUFDN0Y7QUFDRjsiLCJuYW1lcyI6W119
@@ -75,6 +75,7 @@ function initPluginContext(pluginId) {
75
75
  showInitialDebugMessage(pluginId);
76
76
  getSharedAbortController();
77
77
  injectLibraryStyles({
78
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- The shared library styles belong to the main window; `activeDocument` would put them in whichever popout has focus.
78
79
  doc: document,
79
80
  libraryStyles: LIBRARY_STYLES,
80
81
  libraryVersion: LIBRARY_VERSION
@@ -85,4 +86,4 @@ export {
85
86
  initDebugController,
86
87
  initPluginContext
87
88
  };
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEluaXRpYWxpemVzIHRoZSBwbHVnaW4gY29udGV4dCBhbmQgc2V0cyB1cCB0aGUgcGx1Z2luIElELlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVidWdDb250cm9sbGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnLWNvbnRyb2xsZXInO1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldFNoYXJlZEFib3J0Q29udHJvbGxlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hYm9ydC1jb250cm9sbGVyJztcbmltcG9ydCB7IGdldERlYnVnQ29udHJvbGxlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kZWJ1Zyc7XG5pbXBvcnQgeyBMaWJyYXJ5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2xpYnJhcnknO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBzaG93SW5pdGlhbERlYnVnTWVzc2FnZSB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7XG4gIExJQlJBUllfU1RZTEVTLFxuICBMSUJSQVJZX1ZFUlNJT05cbn0gZnJvbSAnLi4vZ2VuZXJhdGVkLWR1cmluZy1idWlsZC50cyc7XG5pbXBvcnQgeyBpbmplY3RMaWJyYXJ5U3R5bGVzIH0gZnJvbSAnLi4vbGlicmFyeS1zdHlsZXMudHMnO1xuaW1wb3J0IHtcbiAgT0JTSURJQU5fTElCUkFSWV9OQU1FLFxuICBPYnNpZGlhbkxpYnJhcnlcbn0gZnJvbSAnLi4vbGlicmFyeS50cyc7XG5cbmludGVyZmFjZSBQbHVnaW5Db250ZXh0V2luZG93IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMgLS0gUGx1Z2luIGNvbnRleHQgc2V0dXAgaW5zdGFsbHMgb3IgcmVwbGFjZXMgdGhlIGRlYnVnIGNvbnRyb2xsZXIuXG4gIERFQlVHOiBEZWJ1Z0NvbnRyb2xsZXIgfCB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IERFQlVHX0dVSURFX1VSTCA9ICdodHRwczovL21uYW91bW92LmRldi9vYnNpZGlhbi1saWIvZ3VpZGVzL2RlYnVnZ2luZy8nO1xuXG4vKipcbiAqIFNldHMgdGhlIENTUyBjbGFzcyBvZiBhbiBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBDU1MgY2xhc3Mgb2YuXG4gKiBAcGFyYW0gY3NzQ2xhc3NlcyAtIFRoZSBDU1MgY2xhc3NlcyB0byBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQbHVnaW5Dc3NDbGFzc2VzKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjc3NDbGFzc2VzPzogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgY29uc3QgZXh0cmFDc3NDbGFzc2VzID0gdHlwZW9mIGNzc0NsYXNzZXMgPT09ICdzdHJpbmcnID8gW2Nzc0NsYXNzZXNdIDogY3NzQ2xhc3NlcyA/PyBbXTtcbiAgZWxlbWVudC5hZGRDbGFzcyhcbiAgICBDc3NDbGFzcy5MaWJyYXJ5TmFtZSxcbiAgICAvLyBUaGUgc2NvcGUgaXMgZW1wdHkgdW50aWwgdGhlIHBsdWdpbiBjb250ZXh0IGlzIGluaXRpYWxpemVkOyBza2lwIGl0IHNvIHdlIG5ldmVyIGFkZCBhbiBlbXB0eSBjbGFzcy5cbiAgICAuLi4oT2JzaWRpYW5MaWJyYXJ5LmNzc0NsYXNzU2NvcGUgPyBbT2JzaWRpYW5MaWJyYXJ5LmNzc0NsYXNzU2NvcGVdIDogW10pLFxuICAgIC4uLmV4dHJhQ3NzQ2xhc3Nlc1xuICApO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBkZWJ1ZyBjb250cm9sbGVyLlxuICpcbiAqIEBwYXJhbSB3aW4gLSBUaGUgd2luZG93IHRvIGluaXRpYWxpemUgdGhlIGRlYnVnIGNvbnRyb2xsZXIgZm9yLlxuICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdG8gcmVnaXN0ZXIgY2xlYW51cCBvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXREZWJ1Z0NvbnRyb2xsZXIod2luOiBXaW5kb3csIGNvbXBvbmVudDogQ29tcG9uZW50KTogdm9pZCB7XG4gIGNvbnN0IHBsdWdpbkNvbnRleHRXaW5kb3cgPSB3aW4gYXMgUGFydGlhbDxQbHVnaW5Db250ZXh0V2luZG93PjtcbiAgY29uc3Qgb2xkRGVidWcgPSBwbHVnaW5Db250ZXh0V2luZG93LkRFQlVHO1xuICBjb25zdCBuZXdEZWJ1ZyA9IGdldERlYnVnQ29udHJvbGxlcigpO1xuICBwbHVnaW5Db250ZXh0V2luZG93LkRFQlVHID0gbmV3RGVidWc7XG5cbiAgY29tcG9uZW50LnJlZ2lzdGVyKCgpID0+IHtcbiAgICBpZiAocGx1Z2luQ29udGV4dFdpbmRvdy5ERUJVRyA9PT0gbmV3RGVidWcpIHtcbiAgICAgIHBsdWdpbkNvbnRleHRXaW5kb3cuREVCVUcgPSBvbGREZWJ1ZztcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBwbHVnaW4gY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdFBsdWdpbkNvbnRleHQocGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBPYnNpZGlhbkxpYnJhcnkuaW5pdCh7IGNzc0NsYXNzU2NvcGU6IHBsdWdpbklkIH0pO1xuICBMaWJyYXJ5LmluaXQoe1xuICAgIGRlYnVnR3VpZGVVcmw6IERFQlVHX0dVSURFX1VSTCxcbiAgICBkZWJ1Z05hbWVzcGFjZTogT0JTSURJQU5fTElCUkFSWV9OQU1FLFxuICAgIGRlYnVnUHJlZml4TmFtZXNwYWNlOiBgJHtwbHVnaW5JZH06YCxcbiAgICBzaG91bGRQcmludFN0YWNrVHJhY2U6IHRydWVcbiAgfSk7XG4gIHNob3dJbml0aWFsRGVidWdNZXNzYWdlKHBsdWdpbklkKTtcblxuICAvLyBOb3RoaW5nIGVsc2UgaW4gdGhlIGxpYnJhcnkgcmVhY2hlcyBmb3IgdGhlIHNoYXJlZCBhYm9ydCBjb250cm9sbGVyIC0tIG9ubHkgY29uc3VtZXIgcGx1Z2lucyBkby4gQ3JlYXRlXG4gIC8vIGl0IGhlcmUgc28gdGhlIGRldnRvb2xzIGNvbnNvbGUgcmVjaXBlIGluIHRoZSBkZWJ1Z2dpbmcgZ3VpZGUgYWx3YXlzIHJlc29sdmVzLCBpbnN0ZWFkIG9mIHRocm93aW5nIHVudGlsIHNvbWVcbiAgLy8gcGx1Z2luIGhhcHBlbnMgdG8gc3RhcnQgYW4gYWJvcnRhYmxlIG9wZXJhdGlvbi5cbiAgZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgaW5qZWN0TGlicmFyeVN0eWxlcyh7XG4gICAgZG9jOiBkb2N1bWVudCxcbiAgICBsaWJyYXJ5U3R5bGVzOiBMSUJSQVJZX1NUWUxFUyxcbiAgICBsaWJyYXJ5VmVyc2lvbjogTElCUkFSWV9WRVJTSU9OXG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLFNBQVMsZ0NBQWdDO0FBQ3pDLFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMsZUFBZTtBQUV4QixTQUFTLGdCQUFnQjtBQUN6QixTQUFTLCtCQUErQjtBQUN4QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsMkJBQTJCO0FBQ3BDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBT1AsTUFBTSxrQkFBa0I7QUFRakIsU0FBUyxvQkFBb0IsU0FBc0IsWUFBc0M7QUFDOUYsUUFBTSxrQkFBa0IsT0FBTyxlQUFlLFdBQVcsQ0FBQyxVQUFVLElBQUksY0FBYyxDQUFDO0FBQ3ZGLFVBQVE7QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUVULEdBQUksZ0JBQWdCLGdCQUFnQixDQUFDLGdCQUFnQixhQUFhLElBQUksQ0FBQztBQUFBLElBQ3ZFLEdBQUc7QUFBQSxFQUNMO0FBQ0Y7QUFRTyxTQUFTLG9CQUFvQixLQUFhLFdBQTRCO0FBQzNFLFFBQU0sc0JBQXNCO0FBQzVCLFFBQU0sV0FBVyxvQkFBb0I7QUFDckMsUUFBTSxXQUFXLG1CQUFtQjtBQUNwQyxzQkFBb0IsUUFBUTtBQUU1QixZQUFVLFNBQVMsTUFBTTtBQUN2QixRQUFJLG9CQUFvQixVQUFVLFVBQVU7QUFDMUMsMEJBQW9CLFFBQVE7QUFBQSxJQUM5QjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBT08sU0FBUyxrQkFBa0IsVUFBd0I7QUFDeEQsa0JBQWdCLEtBQUssRUFBRSxlQUFlLFNBQVMsQ0FBQztBQUNoRCxVQUFRLEtBQUs7QUFBQSxJQUNYLGVBQWU7QUFBQSxJQUNmLGdCQUFnQjtBQUFBLElBQ2hCLHNCQUFzQixHQUFHLFFBQVE7QUFBQSxJQUNqQyx1QkFBdUI7QUFBQSxFQUN6QixDQUFDO0FBQ0QsMEJBQXdCLFFBQVE7QUFLaEMsMkJBQXlCO0FBRXpCLHNCQUFvQjtBQUFBLElBQ2xCLEtBQUs7QUFBQSxJQUNMLGVBQWU7QUFBQSxJQUNmLGdCQUFnQjtBQUFBLEVBQ2xCLENBQUM7QUFDSDsiLCJuYW1lcyI6W119
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEluaXRpYWxpemVzIHRoZSBwbHVnaW4gY29udGV4dCBhbmQgc2V0cyB1cCB0aGUgcGx1Z2luIElELlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVidWdDb250cm9sbGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnLWNvbnRyb2xsZXInO1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldFNoYXJlZEFib3J0Q29udHJvbGxlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hYm9ydC1jb250cm9sbGVyJztcbmltcG9ydCB7IGdldERlYnVnQ29udHJvbGxlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kZWJ1Zyc7XG5pbXBvcnQgeyBMaWJyYXJ5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2xpYnJhcnknO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBzaG93SW5pdGlhbERlYnVnTWVzc2FnZSB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7XG4gIExJQlJBUllfU1RZTEVTLFxuICBMSUJSQVJZX1ZFUlNJT05cbn0gZnJvbSAnLi4vZ2VuZXJhdGVkLWR1cmluZy1idWlsZC50cyc7XG5pbXBvcnQgeyBpbmplY3RMaWJyYXJ5U3R5bGVzIH0gZnJvbSAnLi4vbGlicmFyeS1zdHlsZXMudHMnO1xuaW1wb3J0IHtcbiAgT0JTSURJQU5fTElCUkFSWV9OQU1FLFxuICBPYnNpZGlhbkxpYnJhcnlcbn0gZnJvbSAnLi4vbGlicmFyeS50cyc7XG5cbmludGVyZmFjZSBQbHVnaW5Db250ZXh0V2luZG93IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMgLS0gUGx1Z2luIGNvbnRleHQgc2V0dXAgaW5zdGFsbHMgb3IgcmVwbGFjZXMgdGhlIGRlYnVnIGNvbnRyb2xsZXIuXG4gIERFQlVHOiBEZWJ1Z0NvbnRyb2xsZXIgfCB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IERFQlVHX0dVSURFX1VSTCA9ICdodHRwczovL21uYW91bW92LmRldi9vYnNpZGlhbi1saWIvZ3VpZGVzL2RlYnVnZ2luZy8nO1xuXG4vKipcbiAqIFNldHMgdGhlIENTUyBjbGFzcyBvZiBhbiBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBDU1MgY2xhc3Mgb2YuXG4gKiBAcGFyYW0gY3NzQ2xhc3NlcyAtIFRoZSBDU1MgY2xhc3NlcyB0byBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQbHVnaW5Dc3NDbGFzc2VzKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjc3NDbGFzc2VzPzogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgY29uc3QgZXh0cmFDc3NDbGFzc2VzID0gdHlwZW9mIGNzc0NsYXNzZXMgPT09ICdzdHJpbmcnID8gW2Nzc0NsYXNzZXNdIDogY3NzQ2xhc3NlcyA/PyBbXTtcbiAgZWxlbWVudC5hZGRDbGFzcyhcbiAgICBDc3NDbGFzcy5MaWJyYXJ5TmFtZSxcbiAgICAvLyBUaGUgc2NvcGUgaXMgZW1wdHkgdW50aWwgdGhlIHBsdWdpbiBjb250ZXh0IGlzIGluaXRpYWxpemVkOyBza2lwIGl0IHNvIHdlIG5ldmVyIGFkZCBhbiBlbXB0eSBjbGFzcy5cbiAgICAuLi4oT2JzaWRpYW5MaWJyYXJ5LmNzc0NsYXNzU2NvcGUgPyBbT2JzaWRpYW5MaWJyYXJ5LmNzc0NsYXNzU2NvcGVdIDogW10pLFxuICAgIC4uLmV4dHJhQ3NzQ2xhc3Nlc1xuICApO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBkZWJ1ZyBjb250cm9sbGVyLlxuICpcbiAqIEBwYXJhbSB3aW4gLSBUaGUgd2luZG93IHRvIGluaXRpYWxpemUgdGhlIGRlYnVnIGNvbnRyb2xsZXIgZm9yLlxuICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdG8gcmVnaXN0ZXIgY2xlYW51cCBvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXREZWJ1Z0NvbnRyb2xsZXIod2luOiBXaW5kb3csIGNvbXBvbmVudDogQ29tcG9uZW50KTogdm9pZCB7XG4gIGNvbnN0IHBsdWdpbkNvbnRleHRXaW5kb3cgPSB3aW4gYXMgUGFydGlhbDxQbHVnaW5Db250ZXh0V2luZG93PjtcbiAgY29uc3Qgb2xkRGVidWcgPSBwbHVnaW5Db250ZXh0V2luZG93LkRFQlVHO1xuICBjb25zdCBuZXdEZWJ1ZyA9IGdldERlYnVnQ29udHJvbGxlcigpO1xuICBwbHVnaW5Db250ZXh0V2luZG93LkRFQlVHID0gbmV3RGVidWc7XG5cbiAgY29tcG9uZW50LnJlZ2lzdGVyKCgpID0+IHtcbiAgICBpZiAocGx1Z2luQ29udGV4dFdpbmRvdy5ERUJVRyA9PT0gbmV3RGVidWcpIHtcbiAgICAgIHBsdWdpbkNvbnRleHRXaW5kb3cuREVCVUcgPSBvbGREZWJ1ZztcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBwbHVnaW4gY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdFBsdWdpbkNvbnRleHQocGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBPYnNpZGlhbkxpYnJhcnkuaW5pdCh7IGNzc0NsYXNzU2NvcGU6IHBsdWdpbklkIH0pO1xuICBMaWJyYXJ5LmluaXQoe1xuICAgIGRlYnVnR3VpZGVVcmw6IERFQlVHX0dVSURFX1VSTCxcbiAgICBkZWJ1Z05hbWVzcGFjZTogT0JTSURJQU5fTElCUkFSWV9OQU1FLFxuICAgIGRlYnVnUHJlZml4TmFtZXNwYWNlOiBgJHtwbHVnaW5JZH06YCxcbiAgICBzaG91bGRQcmludFN0YWNrVHJhY2U6IHRydWVcbiAgfSk7XG4gIHNob3dJbml0aWFsRGVidWdNZXNzYWdlKHBsdWdpbklkKTtcblxuICAvLyBOb3RoaW5nIGVsc2UgaW4gdGhlIGxpYnJhcnkgcmVhY2hlcyBmb3IgdGhlIHNoYXJlZCBhYm9ydCBjb250cm9sbGVyIC0tIG9ubHkgY29uc3VtZXIgcGx1Z2lucyBkby4gQ3JlYXRlXG4gIC8vIGl0IGhlcmUgc28gdGhlIGRldnRvb2xzIGNvbnNvbGUgcmVjaXBlIGluIHRoZSBkZWJ1Z2dpbmcgZ3VpZGUgYWx3YXlzIHJlc29sdmVzLCBpbnN0ZWFkIG9mIHRocm93aW5nIHVudGlsIHNvbWVcbiAgLy8gcGx1Z2luIGhhcHBlbnMgdG8gc3RhcnQgYW4gYWJvcnRhYmxlIG9wZXJhdGlvbi5cbiAgZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgaW5qZWN0TGlicmFyeVN0eWxlcyh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvcHJlZmVyLWFjdGl2ZS1kb2MgLS0gVGhlIHNoYXJlZCBsaWJyYXJ5IHN0eWxlcyBiZWxvbmcgdG8gdGhlIG1haW4gd2luZG93OyBgYWN0aXZlRG9jdW1lbnRgIHdvdWxkIHB1dCB0aGVtIGluIHdoaWNoZXZlciBwb3BvdXQgaGFzIGZvY3VzLlxuICAgIGRvYzogZG9jdW1lbnQsXG4gICAgbGlicmFyeVN0eWxlczogTElCUkFSWV9TVFlMRVMsXG4gICAgbGlicmFyeVZlcnNpb246IExJQlJBUllfVkVSU0lPTlxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQSxTQUFTLGdDQUFnQztBQUN6QyxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLGVBQWU7QUFFeEIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUywrQkFBK0I7QUFDeEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLDJCQUEyQjtBQUNwQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU9QLE1BQU0sa0JBQWtCO0FBUWpCLFNBQVMsb0JBQW9CLFNBQXNCLFlBQXNDO0FBQzlGLFFBQU0sa0JBQWtCLE9BQU8sZUFBZSxXQUFXLENBQUMsVUFBVSxJQUFJLGNBQWMsQ0FBQztBQUN2RixVQUFRO0FBQUEsSUFDTixTQUFTO0FBQUEsSUFFVCxHQUFJLGdCQUFnQixnQkFBZ0IsQ0FBQyxnQkFBZ0IsYUFBYSxJQUFJLENBQUM7QUFBQSxJQUN2RSxHQUFHO0FBQUEsRUFDTDtBQUNGO0FBUU8sU0FBUyxvQkFBb0IsS0FBYSxXQUE0QjtBQUMzRSxRQUFNLHNCQUFzQjtBQUM1QixRQUFNLFdBQVcsb0JBQW9CO0FBQ3JDLFFBQU0sV0FBVyxtQkFBbUI7QUFDcEMsc0JBQW9CLFFBQVE7QUFFNUIsWUFBVSxTQUFTLE1BQU07QUFDdkIsUUFBSSxvQkFBb0IsVUFBVSxVQUFVO0FBQzFDLDBCQUFvQixRQUFRO0FBQUEsSUFDOUI7QUFBQSxFQUNGLENBQUM7QUFDSDtBQU9PLFNBQVMsa0JBQWtCLFVBQXdCO0FBQ3hELGtCQUFnQixLQUFLLEVBQUUsZUFBZSxTQUFTLENBQUM7QUFDaEQsVUFBUSxLQUFLO0FBQUEsSUFDWCxlQUFlO0FBQUEsSUFDZixnQkFBZ0I7QUFBQSxJQUNoQixzQkFBc0IsR0FBRyxRQUFRO0FBQUEsSUFDakMsdUJBQXVCO0FBQUEsRUFDekIsQ0FBQztBQUNELDBCQUF3QixRQUFRO0FBS2hDLDJCQUF5QjtBQUV6QixzQkFBb0I7QUFBQTtBQUFBLElBRWxCLEtBQUs7QUFBQSxJQUNMLGVBQWU7QUFBQSxJQUNmLGdCQUFnQjtBQUFBLEVBQ2xCLENBQUM7QUFDSDsiLCJuYW1lcyI6W119
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Contains the implementation of the plugin event source.
6
6
  */
7
- import type { AsyncEventRef, AsyncEventSource } from '@mnaoumov/typescript-lib/async-events';
7
+ import type { AsyncEventRef, AsyncEventSource, CallbackArguments } from '@mnaoumov/typescript-lib/async-events';
8
8
  import type { StringKeys } from '@mnaoumov/typescript-lib/type';
9
9
  import type { Promisable } from 'type-fest';
10
10
  import type { PluginBase } from './plugin.mjs';
@@ -45,7 +45,7 @@ export declare class PluginEventSourceImpl implements PluginEventSource {
45
45
  * events.off('my-event', myListener);
46
46
  * ```
47
47
  */
48
- off<EventName extends StringKeys<PluginEventMap>, Arguments extends EventName extends StringKeys<PluginEventMap> ? PluginEventMap[EventName] : unknown[]>(name: EventName, callback: (...$arguments: Arguments) => Promisable<void>): void;
48
+ off<EventName extends StringKeys<PluginEventMap>, Arguments extends CallbackArguments<PluginEventMap, EventName>>(name: EventName, callback: (...$arguments: Arguments) => Promisable<void>): void;
49
49
  /**
50
50
  * Remove an event listener by reference.
51
51
  *
@@ -72,7 +72,7 @@ export declare class PluginEventSourceImpl implements PluginEventSource {
72
72
  * });
73
73
  * ```
74
74
  */
75
- on<EventName extends StringKeys<PluginEventMap>, Arguments extends EventName extends StringKeys<PluginEventMap> ? PluginEventMap[EventName] : unknown[]>(name: EventName, callback: (...$arguments: Arguments) => Promisable<void>, thisArgument?: unknown): AsyncEventRef;
75
+ on<EventName extends StringKeys<PluginEventMap>, Arguments extends CallbackArguments<PluginEventMap, EventName>>(name: EventName, callback: (...$arguments: Arguments) => Promisable<void>, thisArgument?: unknown): AsyncEventRef;
76
76
  /**
77
77
  * Add an event listener that will be triggered only once.
78
78
  *
@@ -93,5 +93,5 @@ export declare class PluginEventSourceImpl implements PluginEventSource {
93
93
  * });
94
94
  * ```
95
95
  */
96
- once<EventName extends StringKeys<PluginEventMap>, Arguments extends EventName extends StringKeys<PluginEventMap> ? PluginEventMap[EventName] : unknown[]>(name: EventName, callback: (...$arguments: Arguments) => Promisable<void>, thisArgument?: unknown): AsyncEventRef;
96
+ once<EventName extends StringKeys<PluginEventMap>, Arguments extends CallbackArguments<PluginEventMap, EventName>>(name: EventName, callback: (...$arguments: Arguments) => Promisable<void>, thisArgument?: unknown): AsyncEventRef;
97
97
  }
@@ -90,4 +90,4 @@ class PluginEventSourceImpl {
90
90
  export {
91
91
  PluginEventSourceImpl
92
92
  };
93
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbi9wbHVnaW4tZXZlbnQtc291cmNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwbHVnaW4gZXZlbnQgc291cmNlLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXN5bmNFdmVudFJlZixcbiAgQXN5bmNFdmVudFNvdXJjZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMtZXZlbnRzJztcbmltcG9ydCB0eXBlIHsgU3RyaW5nS2V5cyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luQmFzZSB9IGZyb20gJy4vcGx1Z2luLnRzJztcblxuLyoqXG4gKiBFdmVudCBtYXAgZm9yIHBsdWdpbiBldmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luRXZlbnRNYXAge1xuICAvKipcbiAgRmlyZWQgd2hlbiBwbHVnaW4gc2V0dGluZ3MgYXJlIGNoYW5nZWQgZXh0ZXJuYWxseSAoZS5nLiBzeW5jLCBtYW51YWwgZmlsZSBlZGl0KS5cbiAgICovXG4gIHJlYWRvbmx5IGV4dGVybmFsU2V0dGluZ3NDaGFuZ2U6IFtdO1xufVxuXG4vKipcbiAqIEV2ZW50IHNvdXJjZSBmb3IgcGx1Z2luIGV2ZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgUGx1Z2luRXZlbnRTb3VyY2UgPSBBc3luY0V2ZW50U291cmNlPFBsdWdpbkV2ZW50TWFwPjtcblxuLyoqXG4gKiBQbHVnaW4gZXZlbnQgc291cmNlIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luRXZlbnRTb3VyY2VJbXBsIGltcGxlbWVudHMgUGx1Z2luRXZlbnRTb3VyY2Uge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gZXZlbnQgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byBjcmVhdGUgdGhlIGV2ZW50IHNvdXJjZSBmb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luQmFzZSkge31cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHR5cGVQYXJhbSBBcmd1bWVudHMgLSBUaGUgYXJndW1lbnRzIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byByZW1vdmUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIGV2ZW50cy5vZmYoJ215LWV2ZW50JywgbXlMaXN0ZW5lcik7XG4gICAqIGBgYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG4gIHB1YmxpYyBvZmY8RXZlbnROYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5FdmVudE1hcD4sIEFyZ3VtZW50cyBleHRlbmRzIEV2ZW50TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luRXZlbnRNYXA+ID8gUGx1Z2luRXZlbnRNYXBbRXZlbnROYW1lXSA6IHVua25vd25bXT4oXG4gICAgbmFtZTogRXZlbnROYW1lLFxuICAgIGNhbGxiYWNrOiAoLi4uJGFyZ3VtZW50czogQXJndW1lbnRzKSA9PiBQcm9taXNhYmxlPHZvaWQ+XG4gICk6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLm9mZihuYW1lLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGV2ZW50IGxpc3RlbmVyIGJ5IHJlZmVyZW5jZS5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50UmVmIC0gVGhlIHJlZmVyZW5jZSB0byByZW1vdmUuXG4gICAqL1xuICBwdWJsaWMgb2ZmcmVmKGV2ZW50UmVmOiBBc3luY0V2ZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy5wbHVnaW4ub2ZmcmVmKGV2ZW50UmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gRXZlbnROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAdHlwZVBhcmFtIEFyZ3VtZW50cyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZ3VtZW50IC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAcmVtYXJrcyBOb3QgcmVmYWN0b3JlZCB0byBwYXJhbWV0ZXItb2JqZWN0IHBhdHRlcm4sIHRvIGtlZXAgdGhlIHBhcml0eSB3aXRoIHtAbGluayBvYnNpZGlhbiNFdmVudHMjb259IChvciBvbmNlLCBjb3JyZXNwb25kaW5nbHkpLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub24oJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG4gIHB1YmxpYyBvbjxFdmVudE5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpbkV2ZW50TWFwPiwgQXJndW1lbnRzIGV4dGVuZHMgRXZlbnROYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5FdmVudE1hcD4gPyBQbHVnaW5FdmVudE1hcFtFdmVudE5hbWVdIDogdW5rbm93bltdPihcbiAgICBuYW1lOiBFdmVudE5hbWUsXG4gICAgY2FsbGJhY2s6ICguLi4kYXJndW1lbnRzOiBBcmd1bWVudHMpID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZ3VtZW50PzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW4ub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmd1bWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IGxpc3RlbmVyIHRoYXQgd2lsbCBiZSB0cmlnZ2VyZWQgb25seSBvbmNlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHR5cGVQYXJhbSBBcmd1bWVudHMgLSBUaGUgYXJndW1lbnRzIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAgICogQHBhcmFtIHRoaXNBcmd1bWVudCAtIFRoZSBjb250ZXh0IHBhc3NlZCBhcyBgdGhpc2AgdG8gdGhlIGBjYWxsYmFja2AuXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICpcbiAgICogQHJlbWFya3MgTm90IHJlZmFjdG9yZWQgdG8gcGFyYW1ldGVyLW9iamVjdCBwYXR0ZXJuLCB0byBrZWVwIHRoZSBwYXJpdHkgd2l0aCB7QGxpbmsgb2JzaWRpYW4jRXZlbnRzI29ufSAob3Igb25jZSwgY29ycmVzcG9uZGluZ2x5KS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogZXZlbnRzLm9uY2UoJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG4gIHB1YmxpYyBvbmNlPEV2ZW50TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luRXZlbnRNYXA+LCBBcmd1bWVudHMgZXh0ZW5kcyBFdmVudE5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpbkV2ZW50TWFwPiA/IFBsdWdpbkV2ZW50TWFwW0V2ZW50TmFtZV0gOiB1bmtub3duW10+KFxuICAgIG5hbWU6IEV2ZW50TmFtZSxcbiAgICBjYWxsYmFjazogKC4uLiRhcmd1bWVudHM6IEFyZ3VtZW50cykgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJndW1lbnQ/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWYge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5vbmNlKG5hbWUsIGNhbGxiYWNrLCB0aGlzQXJndW1lbnQpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQWlDTyxNQUFNLHNCQUFtRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU12RCxZQUErQixRQUFvQjtBQUFwQjtBQUFBLEVBQXFCO0FBQUEsRUFBckI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFnQi9CLElBQ0wsTUFDQSxVQUNNO0FBQ04sU0FBSyxPQUFPLElBQUksTUFBTSxRQUFRO0FBQUEsRUFDaEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxPQUFPLFVBQStCO0FBQzNDLFNBQUssT0FBTyxPQUFPLFFBQVE7QUFBQSxFQUM3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBdUJPLEdBQ0wsTUFDQSxVQUNBLGNBQ2U7QUFDZixXQUFPLEtBQUssT0FBTyxHQUFHLE1BQU0sVUFBVSxZQUFZO0FBQUEsRUFDcEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQXVCTyxLQUNMLE1BQ0EsVUFDQSxjQUNlO0FBQ2YsV0FBTyxLQUFLLE9BQU8sS0FBSyxNQUFNLFVBQVUsWUFBWTtBQUFBLEVBQ3REO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
93
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbi9wbHVnaW4tZXZlbnQtc291cmNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwbHVnaW4gZXZlbnQgc291cmNlLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXN5bmNFdmVudFJlZixcbiAgQXN5bmNFdmVudFNvdXJjZSxcbiAgQ2FsbGJhY2tBcmd1bWVudHNcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSB7IFN0cmluZ0tleXMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZSc7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbkJhc2UgfSBmcm9tICcuL3BsdWdpbi50cyc7XG5cbi8qKlxuICogRXZlbnQgbWFwIGZvciBwbHVnaW4gZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkV2ZW50TWFwIHtcbiAgLyoqXG4gIEZpcmVkIHdoZW4gcGx1Z2luIHNldHRpbmdzIGFyZSBjaGFuZ2VkIGV4dGVybmFsbHkgKGUuZy4gc3luYywgbWFudWFsIGZpbGUgZWRpdCkuXG4gICAqL1xuICByZWFkb25seSBleHRlcm5hbFNldHRpbmdzQ2hhbmdlOiBbXTtcbn1cblxuLyoqXG4gKiBFdmVudCBzb3VyY2UgZm9yIHBsdWdpbiBldmVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpbkV2ZW50U291cmNlID0gQXN5bmNFdmVudFNvdXJjZTxQbHVnaW5FdmVudE1hcD47XG5cbi8qKlxuICogUGx1Z2luIGV2ZW50IHNvdXJjZSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpbkV2ZW50U291cmNlSW1wbCBpbXBsZW1lbnRzIFBsdWdpbkV2ZW50U291cmNlIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcGx1Z2luIGV2ZW50IHNvdXJjZS5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdG8gY3JlYXRlIHRoZSBldmVudCBzb3VyY2UgZm9yLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBwbHVnaW46IFBsdWdpbkJhc2UpIHt9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBldmVudCBsaXN0ZW5lci5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBFdmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEB0eXBlUGFyYW0gQXJndW1lbnRzIC0gVGhlIGFyZ3VtZW50cyBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gcmVtb3ZlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub2ZmKCdteS1ldmVudCcsIG15TGlzdGVuZXIpO1xuICAgKiBgYGBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzIC0tIFdlIG5lZWQgdG8gdXNlIHRoZSBkdW1teSBwYXJhbWV0ZXIgdG8gZ2V0IHR5cGUgaW5mZXJlbmNlLlxuICBwdWJsaWMgb2ZmPEV2ZW50TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luRXZlbnRNYXA+LCBBcmd1bWVudHMgZXh0ZW5kcyBDYWxsYmFja0FyZ3VtZW50czxQbHVnaW5FdmVudE1hcCwgRXZlbnROYW1lPj4oXG4gICAgbmFtZTogRXZlbnROYW1lLFxuICAgIGNhbGxiYWNrOiAoLi4uJGFyZ3VtZW50czogQXJndW1lbnRzKSA9PiBQcm9taXNhYmxlPHZvaWQ+XG4gICk6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLm9mZihuYW1lLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGV2ZW50IGxpc3RlbmVyIGJ5IHJlZmVyZW5jZS5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50UmVmIC0gVGhlIHJlZmVyZW5jZSB0byByZW1vdmUuXG4gICAqL1xuICBwdWJsaWMgb2ZmcmVmKGV2ZW50UmVmOiBBc3luY0V2ZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy5wbHVnaW4ub2ZmcmVmKGV2ZW50UmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gRXZlbnROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAdHlwZVBhcmFtIEFyZ3VtZW50cyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZ3VtZW50IC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAcmVtYXJrcyBOb3QgcmVmYWN0b3JlZCB0byBwYXJhbWV0ZXItb2JqZWN0IHBhdHRlcm4sIHRvIGtlZXAgdGhlIHBhcml0eSB3aXRoIHtAbGluayBvYnNpZGlhbiNFdmVudHMjb259IChvciBvbmNlLCBjb3JyZXNwb25kaW5nbHkpLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub24oJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG4gIHB1YmxpYyBvbjxFdmVudE5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpbkV2ZW50TWFwPiwgQXJndW1lbnRzIGV4dGVuZHMgQ2FsbGJhY2tBcmd1bWVudHM8UGx1Z2luRXZlbnRNYXAsIEV2ZW50TmFtZT4+KFxuICAgIG5hbWU6IEV2ZW50TmFtZSxcbiAgICBjYWxsYmFjazogKC4uLiRhcmd1bWVudHM6IEFyZ3VtZW50cykgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJndW1lbnQ/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWYge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5vbihuYW1lLCBjYWxsYmFjaywgdGhpc0FyZ3VtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIgdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCBvbmx5IG9uY2UuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gRXZlbnROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAdHlwZVBhcmFtIEFyZ3VtZW50cyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZ3VtZW50IC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAcmVtYXJrcyBOb3QgcmVmYWN0b3JlZCB0byBwYXJhbWV0ZXItb2JqZWN0IHBhdHRlcm4sIHRvIGtlZXAgdGhlIHBhcml0eSB3aXRoIHtAbGluayBvYnNpZGlhbiNFdmVudHMjb259IChvciBvbmNlLCBjb3JyZXNwb25kaW5nbHkpLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub25jZSgnbXktZXZlbnQnLCBhc3luYyAoYXJnMSwgYXJnMikgPT4ge1xuICAgKiAgICAgYXdhaXQgc2xlZXAoMTAwKTtcbiAgICogICAgIGNvbnNvbGUubG9nKGFyZzEsIGFyZzIpO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgZHVtbXkgcGFyYW1ldGVyIHRvIGdldCB0eXBlIGluZmVyZW5jZS5cbiAgcHVibGljIG9uY2U8RXZlbnROYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5FdmVudE1hcD4sIEFyZ3VtZW50cyBleHRlbmRzIENhbGxiYWNrQXJndW1lbnRzPFBsdWdpbkV2ZW50TWFwLCBFdmVudE5hbWU+PihcbiAgICBuYW1lOiBFdmVudE5hbWUsXG4gICAgY2FsbGJhY2s6ICguLi4kYXJndW1lbnRzOiBBcmd1bWVudHMpID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZ3VtZW50PzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW4ub25jZShuYW1lLCBjYWxsYmFjaywgdGhpc0FyZ3VtZW50KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFrQ08sTUFBTSxzQkFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNdkQsWUFBK0IsUUFBb0I7QUFBcEI7QUFBQSxFQUFxQjtBQUFBLEVBQXJCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBZ0IvQixJQUNMLE1BQ0EsVUFDTTtBQUNOLFNBQUssT0FBTyxJQUFJLE1BQU0sUUFBUTtBQUFBLEVBQ2hDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sT0FBTyxVQUErQjtBQUMzQyxTQUFLLE9BQU8sT0FBTyxRQUFRO0FBQUEsRUFDN0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQXVCTyxHQUNMLE1BQ0EsVUFDQSxjQUNlO0FBQ2YsV0FBTyxLQUFLLE9BQU8sR0FBRyxNQUFNLFVBQVUsWUFBWTtBQUFBLEVBQ3BEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUF1Qk8sS0FDTCxNQUNBLFVBQ0EsY0FDZTtBQUNmLFdBQU8sS0FBSyxPQUFPLEtBQUssTUFBTSxVQUFVLFlBQVk7QUFBQSxFQUN0RDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -34,6 +34,13 @@
34
34
  import type { App, Plugin } from 'obsidian';
35
35
  import { Component } from 'obsidian';
36
36
  import type { PluginNoticeComponent } from '../components/plugin-notice-component.mjs';
37
+ /**
38
+ * The event `app.plugins` triggers after every enable, disable, install, uninstall and manifest reload.
39
+ *
40
+ * Read from Obsidian `1.15.1`: `didChange` triggers it debounced by one macrotask, so several changes in one
41
+ * task arrive as one event, after `enablePlugin` / `disablePlugin` returned.
42
+ */
43
+ export declare const PLUGINS_CHANGED_EVENT_NAME = "changed";
37
44
  /**
38
45
  * Whether another plugin's instance can be used right now, and if not, why.
39
46
  */