obsidian-dev-utils 67.0.0 → 69.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 (596) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/dev/main.js +487 -267
  3. package/dist/lib/cjs/@types/debug.d.cts +1 -0
  4. package/dist/lib/cjs/abort-controller.d.cts +1 -0
  5. package/dist/lib/cjs/array.d.cts +1 -0
  6. package/dist/lib/cjs/async-events.cjs +178 -18
  7. package/dist/lib/cjs/async-events.d.cts +261 -9
  8. package/dist/lib/cjs/async.d.cts +1 -0
  9. package/dist/lib/cjs/blob.d.cts +1 -0
  10. package/dist/lib/cjs/codemirror/index.d.cts +1 -0
  11. package/dist/lib/cjs/codemirror/state-field-spec.d.cts +1 -0
  12. package/dist/lib/cjs/css-class.d.cts +1 -0
  13. package/dist/lib/cjs/debug-controller.d.cts +1 -0
  14. package/dist/lib/cjs/debug.d.cts +1 -0
  15. package/dist/lib/cjs/enum.d.cts +1 -0
  16. package/dist/lib/cjs/error.cjs +6 -7
  17. package/dist/lib/cjs/error.d.cts +1 -0
  18. package/dist/lib/cjs/function.cjs +6 -2
  19. package/dist/lib/cjs/function.d.cts +7 -0
  20. package/dist/lib/cjs/html-element.d.cts +1 -0
  21. package/dist/lib/cjs/index.d.cts +1 -0
  22. package/dist/lib/cjs/library.cjs +1 -1
  23. package/dist/lib/cjs/library.d.cts +4 -0
  24. package/dist/lib/cjs/object-utils.cjs +1 -1
  25. package/dist/lib/cjs/object-utils.d.cts +3 -0
  26. package/dist/lib/cjs/obsidian/@types/dataview/api/data-array.d.cts +1 -0
  27. package/dist/lib/cjs/obsidian/@types/dataview/api/extensions.d.cts +1 -0
  28. package/dist/lib/cjs/obsidian/@types/dataview/api/inline-api.d.cts +1 -0
  29. package/dist/lib/cjs/obsidian/@types/dataview/api/plugin-api.d.cts +1 -0
  30. package/dist/lib/cjs/obsidian/@types/dataview/api/result.d.cts +1 -0
  31. package/dist/lib/cjs/obsidian/@types/dataview/data-import/common.d.cts +1 -0
  32. package/dist/lib/cjs/obsidian/@types/dataview/data-import/csv.d.cts +1 -0
  33. package/dist/lib/cjs/obsidian/@types/dataview/data-import/inline-field.d.cts +1 -0
  34. package/dist/lib/cjs/obsidian/@types/dataview/data-import/markdown-file.d.cts +1 -0
  35. package/dist/lib/cjs/obsidian/@types/dataview/data-import/persister.d.cts +1 -0
  36. package/dist/lib/cjs/obsidian/@types/dataview/data-import/web-worker/import-entry.d.cts +1 -0
  37. package/dist/lib/cjs/obsidian/@types/dataview/data-import/web-worker/import-impl.d.cts +1 -0
  38. package/dist/lib/cjs/obsidian/@types/dataview/data-import/web-worker/import-manager.d.cts +1 -0
  39. package/dist/lib/cjs/obsidian/@types/dataview/data-index/index.d.cts +1 -0
  40. package/dist/lib/cjs/obsidian/@types/dataview/data-index/resolver.d.cts +1 -0
  41. package/dist/lib/cjs/obsidian/@types/dataview/data-index/source.d.cts +1 -0
  42. package/dist/lib/cjs/obsidian/@types/dataview/data-model/markdown.d.cts +1 -0
  43. package/dist/lib/cjs/obsidian/@types/dataview/data-model/serialized/markdown.d.cts +1 -0
  44. package/dist/lib/cjs/obsidian/@types/dataview/data-model/transferable.d.cts +1 -0
  45. package/dist/lib/cjs/obsidian/@types/dataview/data-model/value.d.cts +1 -0
  46. package/dist/lib/cjs/obsidian/@types/dataview/expression/binaryop.d.cts +1 -0
  47. package/dist/lib/cjs/obsidian/@types/dataview/expression/context.d.cts +1 -0
  48. package/dist/lib/cjs/obsidian/@types/dataview/expression/field.d.cts +1 -0
  49. package/dist/lib/cjs/obsidian/@types/dataview/expression/functions.d.cts +1 -0
  50. package/dist/lib/cjs/obsidian/@types/dataview/expression/parse.d.cts +1 -0
  51. package/dist/lib/cjs/obsidian/@types/dataview/index.d.cts +1 -0
  52. package/dist/lib/cjs/obsidian/@types/dataview/main.d.cts +1 -0
  53. package/dist/lib/cjs/obsidian/@types/dataview/query/engine.d.cts +1 -0
  54. package/dist/lib/cjs/obsidian/@types/dataview/query/parse.d.cts +1 -0
  55. package/dist/lib/cjs/obsidian/@types/dataview/query/query.d.cts +1 -0
  56. package/dist/lib/cjs/obsidian/@types/dataview/settings.d.cts +1 -0
  57. package/dist/lib/cjs/obsidian/@types/dataview/typings/obsidian-ex.d.cts +1 -0
  58. package/dist/lib/cjs/obsidian/@types/dataview/typings/workers.d.cts +1 -0
  59. package/dist/lib/cjs/obsidian/@types/dataview/ui/export/markdown.d.cts +1 -0
  60. package/dist/lib/cjs/obsidian/@types/dataview/ui/lp-render.d.cts +1 -0
  61. package/dist/lib/cjs/obsidian/@types/dataview/ui/markdown.d.cts +1 -0
  62. package/dist/lib/cjs/obsidian/@types/dataview/ui/refreshable-view.d.cts +1 -0
  63. package/dist/lib/cjs/obsidian/@types/dataview/ui/render.d.cts +1 -0
  64. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/calendar-view.d.cts +1 -0
  65. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/inline-field-live-preview.d.cts +1 -0
  66. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/inline-view.d.cts +1 -0
  67. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/js-view.d.cts +1 -0
  68. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/list-view.d.cts +1 -0
  69. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/table-view.d.cts +1 -0
  70. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/task-view.d.cts +1 -0
  71. package/dist/lib/cjs/obsidian/@types/dataview/util/hash.d.cts +1 -0
  72. package/dist/lib/cjs/obsidian/@types/dataview/util/locale.d.cts +1 -0
  73. package/dist/lib/cjs/obsidian/@types/dataview/util/media.d.cts +1 -0
  74. package/dist/lib/cjs/obsidian/@types/dataview/util/normalize.d.cts +1 -0
  75. package/dist/lib/cjs/obsidian/@types/i18next.d.cts +1 -0
  76. package/dist/lib/cjs/obsidian/active-file-provider.cjs +1 -1
  77. package/dist/lib/cjs/obsidian/active-file-provider.d.cts +1 -1
  78. package/dist/lib/cjs/obsidian/app.d.cts +1 -0
  79. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +1 -0
  80. package/dist/lib/cjs/obsidian/attachment-path.d.cts +1 -0
  81. package/dist/lib/cjs/obsidian/backlink.d.cts +1 -0
  82. package/dist/lib/cjs/obsidian/callout.d.cts +1 -0
  83. package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +1 -0
  84. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +1 -0
  85. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +4 -4
  86. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +4 -3
  87. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +1 -0
  88. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +1 -0
  89. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +1 -0
  90. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +1 -0
  91. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.d.cts +1 -0
  92. package/dist/lib/cjs/obsidian/command-handlers/index.d.cts +1 -0
  93. package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.d.cts +1 -0
  94. package/dist/lib/cjs/obsidian/command-registrar.d.cts +1 -0
  95. package/dist/lib/cjs/obsidian/components/abort-signal-component.cjs +3 -7
  96. package/dist/lib/cjs/obsidian/components/abort-signal-component.d.cts +3 -6
  97. package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +3 -3
  98. package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +3 -2
  99. package/dist/lib/cjs/obsidian/components/async-error-handler-component.cjs +3 -7
  100. package/dist/lib/cjs/obsidian/components/async-error-handler-component.d.cts +3 -6
  101. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +2 -20
  102. package/dist/lib/cjs/obsidian/components/async-events-component.d.cts +2 -18
  103. package/dist/lib/cjs/obsidian/components/component-ex.cjs +235 -0
  104. package/dist/lib/cjs/obsidian/components/component-ex.d.cts +56 -0
  105. package/dist/lib/cjs/obsidian/components/console-debug-component.cjs +3 -7
  106. package/dist/lib/cjs/obsidian/components/console-debug-component.d.cts +3 -6
  107. package/dist/lib/cjs/obsidian/components/disposable-component.cjs +1 -9
  108. package/dist/lib/cjs/obsidian/components/disposable-component.d.cts +1 -10
  109. package/dist/lib/cjs/obsidian/components/i18n-component.cjs +4 -8
  110. package/dist/lib/cjs/obsidian/components/i18n-component.d.cts +4 -7
  111. package/dist/lib/cjs/obsidian/components/index.cjs +9 -6
  112. package/dist/lib/cjs/obsidian/components/index.d.cts +3 -1
  113. package/dist/lib/cjs/obsidian/components/layout-ready-component.cjs +3 -3
  114. package/dist/lib/cjs/obsidian/components/layout-ready-component.d.cts +3 -2
  115. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.cjs +3 -3
  116. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.d.cts +3 -3
  117. package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +4 -4
  118. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +4 -3
  119. package/dist/lib/cjs/obsidian/components/plugin-context-component.cjs +3 -7
  120. package/dist/lib/cjs/obsidian/components/plugin-context-component.d.cts +3 -6
  121. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +3 -7
  122. package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +3 -6
  123. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +53 -12
  124. package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +54 -18
  125. package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.cjs +3 -3
  126. package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.d.cts +3 -2
  127. package/dist/lib/cjs/obsidian/components/registry-component.cjs +180 -0
  128. package/dist/lib/cjs/obsidian/components/registry-component.d.cts +37 -0
  129. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +1 -0
  130. package/dist/lib/cjs/obsidian/constructors/index.d.cts +1 -0
  131. package/dist/lib/cjs/obsidian/data-handler.d.cts +1 -0
  132. package/dist/lib/cjs/obsidian/dataview-link.d.cts +1 -0
  133. package/dist/lib/cjs/obsidian/dataview.d.cts +1 -0
  134. package/dist/lib/cjs/obsidian/editor.d.cts +1 -0
  135. package/dist/lib/cjs/obsidian/file-change.d.cts +1 -0
  136. package/dist/lib/cjs/obsidian/file-manager.d.cts +1 -0
  137. package/dist/lib/cjs/obsidian/file-system.d.cts +1 -0
  138. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.d.cts +1 -0
  139. package/dist/lib/cjs/obsidian/frontmatter.d.cts +1 -0
  140. package/dist/lib/cjs/obsidian/i18n/custom-type-options.d.cts +1 -0
  141. package/dist/lib/cjs/obsidian/i18n/default-translations.d.cts +1 -0
  142. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +1 -0
  143. package/dist/lib/cjs/obsidian/i18n/index.d.cts +1 -0
  144. package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +1 -0
  145. package/dist/lib/cjs/obsidian/i18n/locales/index.d.cts +1 -0
  146. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +1 -0
  147. package/dist/lib/cjs/obsidian/index.d.cts +1 -0
  148. package/dist/lib/cjs/obsidian/is-in-obsidian.d.cts +1 -0
  149. package/dist/lib/cjs/obsidian/link.d.cts +1 -0
  150. package/dist/lib/cjs/obsidian/logger.d.cts +1 -0
  151. package/dist/lib/cjs/obsidian/loop.d.cts +1 -0
  152. package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.d.cts +1 -0
  153. package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +1 -0
  154. package/dist/lib/cjs/obsidian/markdown-view.d.cts +1 -0
  155. package/dist/lib/cjs/obsidian/markdown.cjs +2 -3
  156. package/dist/lib/cjs/obsidian/markdown.d.cts +1 -0
  157. package/dist/lib/cjs/obsidian/menu-event-registrar.cjs +1 -1
  158. package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -1
  159. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +1 -0
  160. package/dist/lib/cjs/obsidian/modals/alert.d.cts +1 -0
  161. package/dist/lib/cjs/obsidian/modals/confirm.d.cts +1 -0
  162. package/dist/lib/cjs/obsidian/modals/index.d.cts +1 -0
  163. package/dist/lib/cjs/obsidian/modals/modal.d.cts +1 -0
  164. package/dist/lib/cjs/obsidian/modals/prompt.d.cts +1 -0
  165. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -0
  166. package/dist/lib/cjs/obsidian/obsidian-protocol-handler-registrar.d.cts +1 -0
  167. package/dist/lib/cjs/obsidian/obsidian-settings.d.cts +1 -0
  168. package/dist/lib/cjs/obsidian/path-settings.d.cts +1 -0
  169. package/dist/lib/cjs/obsidian/pdf.d.cts +1 -0
  170. package/dist/lib/cjs/obsidian/plugin/index.d.cts +1 -0
  171. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +1 -0
  172. package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +1 -0
  173. package/dist/lib/cjs/obsidian/plugin/plugin-id.d.cts +1 -0
  174. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +21 -20
  175. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.d.cts +8 -3
  176. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +35 -76
  177. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +36 -36
  178. package/dist/lib/cjs/obsidian/queue.d.cts +1 -0
  179. package/dist/lib/cjs/obsidian/react/app-context.d.cts +1 -0
  180. package/dist/lib/cjs/obsidian/react/index.d.cts +1 -0
  181. package/dist/lib/cjs/obsidian/reference.d.cts +1 -0
  182. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +1 -2
  183. package/dist/lib/cjs/obsidian/rename-delete-handler.d.cts +1 -0
  184. package/dist/lib/cjs/obsidian/resource-url.d.cts +1 -0
  185. package/dist/lib/cjs/obsidian/setting-components/checkbox-component.d.cts +1 -0
  186. package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.d.cts +1 -0
  187. package/dist/lib/cjs/obsidian/setting-components/date-component.d.cts +1 -0
  188. package/dist/lib/cjs/obsidian/setting-components/date-time-component.d.cts +1 -0
  189. package/dist/lib/cjs/obsidian/setting-components/email-component.d.cts +1 -0
  190. package/dist/lib/cjs/obsidian/setting-components/file-component.d.cts +1 -0
  191. package/dist/lib/cjs/obsidian/setting-components/index.d.cts +1 -0
  192. package/dist/lib/cjs/obsidian/setting-components/month-component.d.cts +1 -0
  193. package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.d.cts +1 -0
  194. package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.d.cts +1 -0
  195. package/dist/lib/cjs/obsidian/setting-components/multiple-file-component.d.cts +1 -0
  196. package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.d.cts +1 -0
  197. package/dist/lib/cjs/obsidian/setting-components/number-component.d.cts +1 -0
  198. package/dist/lib/cjs/obsidian/setting-components/password-component.d.cts +1 -0
  199. package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.d.cts +1 -0
  200. package/dist/lib/cjs/obsidian/setting-components/telephone-component.d.cts +1 -0
  201. package/dist/lib/cjs/obsidian/setting-components/text-based-component.d.cts +1 -0
  202. package/dist/lib/cjs/obsidian/setting-components/time-component.d.cts +1 -0
  203. package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.d.cts +1 -0
  204. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.cjs +3 -1
  205. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.d.cts +3 -0
  206. package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.d.cts +1 -0
  207. package/dist/lib/cjs/obsidian/setting-components/typed-range-text-component.d.cts +1 -0
  208. package/dist/lib/cjs/obsidian/setting-components/typed-text-component.d.cts +1 -0
  209. package/dist/lib/cjs/obsidian/setting-components/url-component.d.cts +1 -0
  210. package/dist/lib/cjs/obsidian/setting-components/validator-component.d.cts +1 -0
  211. package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.d.cts +1 -0
  212. package/dist/lib/cjs/obsidian/setting-components/week-component.d.cts +1 -0
  213. package/dist/lib/cjs/obsidian/setting-ex.cjs +3 -1
  214. package/dist/lib/cjs/obsidian/setting-ex.d.cts +3 -0
  215. package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +1 -0
  216. package/dist/lib/cjs/obsidian/validation.d.cts +1 -0
  217. package/dist/lib/cjs/obsidian/vault-delete.d.cts +1 -0
  218. package/dist/lib/cjs/obsidian/vault.d.cts +1 -0
  219. package/dist/lib/cjs/obsidian/workspace.d.cts +1 -0
  220. package/dist/lib/cjs/path.d.cts +1 -0
  221. package/dist/lib/cjs/reg-exp.d.cts +1 -0
  222. package/dist/lib/cjs/script-utils/build.d.cts +1 -0
  223. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.cts +1 -0
  224. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +1 -0
  225. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.cts +1 -0
  226. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.d.cts +1 -0
  227. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.d.cts +1 -0
  228. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +1 -0
  229. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.d.cts +1 -0
  230. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -0
  231. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -0
  232. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -0
  233. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +1 -0
  234. package/dist/lib/cjs/script-utils/bundlers/esbuild.d.cts +1 -0
  235. package/dist/lib/cjs/script-utils/bundlers/index.d.cts +1 -0
  236. package/dist/lib/cjs/script-utils/cli-utils.d.cts +1 -0
  237. package/dist/lib/cjs/script-utils/code-generator.d.cts +1 -0
  238. package/dist/lib/cjs/script-utils/commitlint-config.d.cts +1 -0
  239. package/dist/lib/cjs/script-utils/exec.d.cts +1 -0
  240. package/dist/lib/cjs/script-utils/formatters/dprint.d.cts +1 -0
  241. package/dist/lib/cjs/script-utils/formatters/index.d.cts +1 -0
  242. package/dist/lib/cjs/script-utils/fs.d.cts +1 -0
  243. package/dist/lib/cjs/script-utils/index.d.cts +1 -0
  244. package/dist/lib/cjs/script-utils/json.d.cts +1 -0
  245. package/dist/lib/cjs/script-utils/linters/cspell.d.cts +1 -0
  246. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +2 -1
  247. package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +1 -0
  248. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +4 -1
  249. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.d.cts +2 -0
  250. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +1 -0
  251. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +1 -0
  252. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +3 -1
  253. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +1 -0
  254. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +1 -0
  255. package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.d.cts +1 -0
  256. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-members.d.cts +1 -0
  257. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +2 -2
  258. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.d.cts +1 -0
  259. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +222 -0
  260. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.d.cts +5 -0
  261. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.d.cts +1 -0
  262. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.d.cts +1 -0
  263. package/dist/lib/cjs/script-utils/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +1 -0
  264. package/dist/lib/cjs/script-utils/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.cts +1 -0
  265. package/dist/lib/cjs/script-utils/linters/eslint.d.cts +1 -0
  266. package/dist/lib/cjs/script-utils/linters/index.d.cts +1 -0
  267. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +1 -0
  268. package/dist/lib/cjs/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1 -0
  269. package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +1 -0
  270. package/dist/lib/cjs/script-utils/nano-staged-config.d.cts +1 -0
  271. package/dist/lib/cjs/script-utils/npm-publish.d.cts +1 -0
  272. package/dist/lib/cjs/script-utils/npm-run.d.cts +1 -0
  273. package/dist/lib/cjs/script-utils/npm.d.cts +1 -0
  274. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +1 -0
  275. package/dist/lib/cjs/script-utils/root.d.cts +1 -0
  276. package/dist/lib/cjs/script-utils/test-runners/index.d.cts +1 -0
  277. package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +1 -0
  278. package/dist/lib/cjs/script-utils/version.d.cts +1 -0
  279. package/dist/lib/cjs/strict-proxy.d.cts +1 -0
  280. package/dist/lib/cjs/string.d.cts +1 -0
  281. package/dist/lib/cjs/transformers/date-transformer.d.cts +1 -0
  282. package/dist/lib/cjs/transformers/duration-transformer.d.cts +1 -0
  283. package/dist/lib/cjs/transformers/group-transformer.d.cts +1 -0
  284. package/dist/lib/cjs/transformers/index.d.cts +1 -0
  285. package/dist/lib/cjs/transformers/map-transformer.d.cts +1 -0
  286. package/dist/lib/cjs/transformers/set-transformer.d.cts +1 -0
  287. package/dist/lib/cjs/transformers/skip-private-property-transformer.d.cts +1 -0
  288. package/dist/lib/cjs/transformers/transformer.d.cts +1 -0
  289. package/dist/lib/cjs/transformers/two-way-map-transformer.d.cts +1 -0
  290. package/dist/lib/cjs/transformers/typed-transformer.d.cts +1 -0
  291. package/dist/lib/cjs/two-way-map.d.cts +1 -0
  292. package/dist/lib/cjs/type-guards.d.cts +1 -0
  293. package/dist/lib/cjs/type.d.cts +1 -0
  294. package/dist/lib/cjs/url.d.cts +1 -0
  295. package/dist/lib/cjs/value-provider.d.cts +1 -0
  296. package/dist/lib/esm/@types/debug.d.mts +1 -0
  297. package/dist/lib/esm/abort-controller.d.mts +1 -0
  298. package/dist/lib/esm/array.d.mts +1 -0
  299. package/dist/lib/esm/async-events.d.mts +261 -9
  300. package/dist/lib/esm/async-events.mjs +175 -17
  301. package/dist/lib/esm/async.d.mts +1 -0
  302. package/dist/lib/esm/blob.d.mts +1 -0
  303. package/dist/lib/esm/codemirror/index.d.mts +1 -0
  304. package/dist/lib/esm/codemirror/state-field-spec.d.mts +1 -0
  305. package/dist/lib/esm/css-class.d.mts +1 -0
  306. package/dist/lib/esm/debug-controller.d.mts +1 -0
  307. package/dist/lib/esm/debug.d.mts +1 -0
  308. package/dist/lib/esm/enum.d.mts +1 -0
  309. package/dist/lib/esm/error.d.mts +1 -0
  310. package/dist/lib/esm/error.mjs +6 -7
  311. package/dist/lib/esm/function.d.mts +7 -0
  312. package/dist/lib/esm/function.mjs +5 -2
  313. package/dist/lib/esm/html-element.d.mts +1 -0
  314. package/dist/lib/esm/index.d.mts +1 -0
  315. package/dist/lib/esm/library.d.mts +4 -0
  316. package/dist/lib/esm/library.mjs +1 -1
  317. package/dist/lib/esm/object-utils.d.mts +3 -0
  318. package/dist/lib/esm/object-utils.mjs +1 -1
  319. package/dist/lib/esm/obsidian/@types/dataview/api/data-array.d.mts +1 -0
  320. package/dist/lib/esm/obsidian/@types/dataview/api/extensions.d.mts +1 -0
  321. package/dist/lib/esm/obsidian/@types/dataview/api/inline-api.d.mts +1 -0
  322. package/dist/lib/esm/obsidian/@types/dataview/api/plugin-api.d.mts +1 -0
  323. package/dist/lib/esm/obsidian/@types/dataview/api/result.d.mts +1 -0
  324. package/dist/lib/esm/obsidian/@types/dataview/data-import/common.d.mts +1 -0
  325. package/dist/lib/esm/obsidian/@types/dataview/data-import/csv.d.mts +1 -0
  326. package/dist/lib/esm/obsidian/@types/dataview/data-import/inline-field.d.mts +1 -0
  327. package/dist/lib/esm/obsidian/@types/dataview/data-import/markdown-file.d.mts +1 -0
  328. package/dist/lib/esm/obsidian/@types/dataview/data-import/persister.d.mts +1 -0
  329. package/dist/lib/esm/obsidian/@types/dataview/data-import/web-worker/import-entry.d.mts +1 -0
  330. package/dist/lib/esm/obsidian/@types/dataview/data-import/web-worker/import-impl.d.mts +1 -0
  331. package/dist/lib/esm/obsidian/@types/dataview/data-import/web-worker/import-manager.d.mts +1 -0
  332. package/dist/lib/esm/obsidian/@types/dataview/data-index/index.d.mts +1 -0
  333. package/dist/lib/esm/obsidian/@types/dataview/data-index/resolver.d.mts +1 -0
  334. package/dist/lib/esm/obsidian/@types/dataview/data-index/source.d.mts +1 -0
  335. package/dist/lib/esm/obsidian/@types/dataview/data-model/markdown.d.mts +1 -0
  336. package/dist/lib/esm/obsidian/@types/dataview/data-model/serialized/markdown.d.mts +1 -0
  337. package/dist/lib/esm/obsidian/@types/dataview/data-model/transferable.d.mts +1 -0
  338. package/dist/lib/esm/obsidian/@types/dataview/data-model/value.d.mts +1 -0
  339. package/dist/lib/esm/obsidian/@types/dataview/expression/binaryop.d.mts +1 -0
  340. package/dist/lib/esm/obsidian/@types/dataview/expression/context.d.mts +1 -0
  341. package/dist/lib/esm/obsidian/@types/dataview/expression/field.d.mts +1 -0
  342. package/dist/lib/esm/obsidian/@types/dataview/expression/functions.d.mts +1 -0
  343. package/dist/lib/esm/obsidian/@types/dataview/expression/parse.d.mts +1 -0
  344. package/dist/lib/esm/obsidian/@types/dataview/index.d.mts +1 -0
  345. package/dist/lib/esm/obsidian/@types/dataview/main.d.mts +1 -0
  346. package/dist/lib/esm/obsidian/@types/dataview/query/engine.d.mts +1 -0
  347. package/dist/lib/esm/obsidian/@types/dataview/query/parse.d.mts +1 -0
  348. package/dist/lib/esm/obsidian/@types/dataview/query/query.d.mts +1 -0
  349. package/dist/lib/esm/obsidian/@types/dataview/settings.d.mts +1 -0
  350. package/dist/lib/esm/obsidian/@types/dataview/typings/obsidian-ex.d.mts +1 -0
  351. package/dist/lib/esm/obsidian/@types/dataview/typings/workers.d.mts +1 -0
  352. package/dist/lib/esm/obsidian/@types/dataview/ui/export/markdown.d.mts +1 -0
  353. package/dist/lib/esm/obsidian/@types/dataview/ui/lp-render.d.mts +1 -0
  354. package/dist/lib/esm/obsidian/@types/dataview/ui/markdown.d.mts +1 -0
  355. package/dist/lib/esm/obsidian/@types/dataview/ui/refreshable-view.d.mts +1 -0
  356. package/dist/lib/esm/obsidian/@types/dataview/ui/render.d.mts +1 -0
  357. package/dist/lib/esm/obsidian/@types/dataview/ui/views/calendar-view.d.mts +1 -0
  358. package/dist/lib/esm/obsidian/@types/dataview/ui/views/inline-field-live-preview.d.mts +1 -0
  359. package/dist/lib/esm/obsidian/@types/dataview/ui/views/inline-view.d.mts +1 -0
  360. package/dist/lib/esm/obsidian/@types/dataview/ui/views/js-view.d.mts +1 -0
  361. package/dist/lib/esm/obsidian/@types/dataview/ui/views/list-view.d.mts +1 -0
  362. package/dist/lib/esm/obsidian/@types/dataview/ui/views/table-view.d.mts +1 -0
  363. package/dist/lib/esm/obsidian/@types/dataview/ui/views/task-view.d.mts +1 -0
  364. package/dist/lib/esm/obsidian/@types/dataview/util/hash.d.mts +1 -0
  365. package/dist/lib/esm/obsidian/@types/dataview/util/locale.d.mts +1 -0
  366. package/dist/lib/esm/obsidian/@types/dataview/util/media.d.mts +1 -0
  367. package/dist/lib/esm/obsidian/@types/dataview/util/normalize.d.mts +1 -0
  368. package/dist/lib/esm/obsidian/@types/i18next.d.mts +1 -0
  369. package/dist/lib/esm/obsidian/active-file-provider.d.mts +1 -1
  370. package/dist/lib/esm/obsidian/active-file-provider.mjs +1 -1
  371. package/dist/lib/esm/obsidian/app.d.mts +1 -0
  372. package/dist/lib/esm/obsidian/async-with-notice.d.mts +1 -0
  373. package/dist/lib/esm/obsidian/attachment-path.d.mts +1 -0
  374. package/dist/lib/esm/obsidian/backlink.d.mts +1 -0
  375. package/dist/lib/esm/obsidian/callout.d.mts +1 -0
  376. package/dist/lib/esm/obsidian/code-block-markdown-information.d.mts +1 -0
  377. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +1 -0
  378. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +4 -3
  379. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +4 -4
  380. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +1 -0
  381. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +1 -0
  382. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +1 -0
  383. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +1 -0
  384. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.d.mts +1 -0
  385. package/dist/lib/esm/obsidian/command-handlers/index.d.mts +1 -0
  386. package/dist/lib/esm/obsidian/command-handlers/open-settings-command-handler.d.mts +1 -0
  387. package/dist/lib/esm/obsidian/command-registrar.d.mts +1 -0
  388. package/dist/lib/esm/obsidian/components/abort-signal-component.d.mts +3 -6
  389. package/dist/lib/esm/obsidian/components/abort-signal-component.mjs +3 -7
  390. package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +3 -2
  391. package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +3 -3
  392. package/dist/lib/esm/obsidian/components/async-error-handler-component.d.mts +3 -6
  393. package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +3 -7
  394. package/dist/lib/esm/obsidian/components/async-events-component.d.mts +2 -18
  395. package/dist/lib/esm/obsidian/components/async-events-component.mjs +2 -19
  396. package/dist/lib/esm/obsidian/components/component-ex.d.mts +56 -0
  397. package/dist/lib/esm/obsidian/components/component-ex.mjs +130 -0
  398. package/dist/lib/esm/obsidian/components/console-debug-component.d.mts +3 -6
  399. package/dist/lib/esm/obsidian/components/console-debug-component.mjs +3 -7
  400. package/dist/lib/esm/obsidian/components/disposable-component.d.mts +1 -10
  401. package/dist/lib/esm/obsidian/components/disposable-component.mjs +1 -8
  402. package/dist/lib/esm/obsidian/components/i18n-component.d.mts +4 -7
  403. package/dist/lib/esm/obsidian/components/i18n-component.mjs +4 -8
  404. package/dist/lib/esm/obsidian/components/index.d.mts +3 -1
  405. package/dist/lib/esm/obsidian/components/index.mjs +6 -4
  406. package/dist/lib/esm/obsidian/components/layout-ready-component.d.mts +3 -2
  407. package/dist/lib/esm/obsidian/components/layout-ready-component.mjs +3 -3
  408. package/dist/lib/esm/obsidian/components/menu-event-registrar-component.d.mts +3 -3
  409. package/dist/lib/esm/obsidian/components/menu-event-registrar-component.mjs +3 -3
  410. package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +4 -3
  411. package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +4 -4
  412. package/dist/lib/esm/obsidian/components/plugin-context-component.d.mts +3 -6
  413. package/dist/lib/esm/obsidian/components/plugin-context-component.mjs +3 -7
  414. package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +3 -6
  415. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +3 -7
  416. package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +54 -18
  417. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +53 -12
  418. package/dist/lib/esm/obsidian/components/plugin-settings-tab-component.d.mts +3 -2
  419. package/dist/lib/esm/obsidian/components/plugin-settings-tab-component.mjs +3 -3
  420. package/dist/lib/esm/obsidian/components/registry-component.d.mts +37 -0
  421. package/dist/lib/esm/obsidian/components/registry-component.mjs +72 -0
  422. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.d.mts +1 -0
  423. package/dist/lib/esm/obsidian/constructors/index.d.mts +1 -0
  424. package/dist/lib/esm/obsidian/data-handler.d.mts +1 -0
  425. package/dist/lib/esm/obsidian/dataview-link.d.mts +1 -0
  426. package/dist/lib/esm/obsidian/dataview.d.mts +1 -0
  427. package/dist/lib/esm/obsidian/editor.d.mts +1 -0
  428. package/dist/lib/esm/obsidian/file-change.d.mts +1 -0
  429. package/dist/lib/esm/obsidian/file-manager.d.mts +1 -0
  430. package/dist/lib/esm/obsidian/file-system.d.mts +1 -0
  431. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.d.mts +1 -0
  432. package/dist/lib/esm/obsidian/frontmatter.d.mts +1 -0
  433. package/dist/lib/esm/obsidian/i18n/custom-type-options.d.mts +1 -0
  434. package/dist/lib/esm/obsidian/i18n/default-translations.d.mts +1 -0
  435. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +1 -0
  436. package/dist/lib/esm/obsidian/i18n/index.d.mts +1 -0
  437. package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +1 -0
  438. package/dist/lib/esm/obsidian/i18n/locales/index.d.mts +1 -0
  439. package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +1 -0
  440. package/dist/lib/esm/obsidian/index.d.mts +1 -0
  441. package/dist/lib/esm/obsidian/is-in-obsidian.d.mts +1 -0
  442. package/dist/lib/esm/obsidian/link.d.mts +1 -0
  443. package/dist/lib/esm/obsidian/logger.d.mts +1 -0
  444. package/dist/lib/esm/obsidian/loop.d.mts +1 -0
  445. package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.d.mts +1 -0
  446. package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +1 -0
  447. package/dist/lib/esm/obsidian/markdown-view.d.mts +1 -0
  448. package/dist/lib/esm/obsidian/markdown.d.mts +1 -0
  449. package/dist/lib/esm/obsidian/markdown.mjs +2 -3
  450. package/dist/lib/esm/obsidian/menu-event-registrar.d.mts +1 -1
  451. package/dist/lib/esm/obsidian/metadata-cache.d.mts +1 -0
  452. package/dist/lib/esm/obsidian/modals/alert.d.mts +1 -0
  453. package/dist/lib/esm/obsidian/modals/confirm.d.mts +1 -0
  454. package/dist/lib/esm/obsidian/modals/index.d.mts +1 -0
  455. package/dist/lib/esm/obsidian/modals/modal.d.mts +1 -0
  456. package/dist/lib/esm/obsidian/modals/prompt.d.mts +1 -0
  457. package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -0
  458. package/dist/lib/esm/obsidian/obsidian-protocol-handler-registrar.d.mts +1 -0
  459. package/dist/lib/esm/obsidian/obsidian-settings.d.mts +1 -0
  460. package/dist/lib/esm/obsidian/path-settings.d.mts +1 -0
  461. package/dist/lib/esm/obsidian/pdf.d.mts +1 -0
  462. package/dist/lib/esm/obsidian/plugin/index.d.mts +1 -0
  463. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +1 -0
  464. package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +1 -0
  465. package/dist/lib/esm/obsidian/plugin/plugin-id.d.mts +1 -0
  466. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.d.mts +8 -3
  467. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +22 -21
  468. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +36 -36
  469. package/dist/lib/esm/obsidian/plugin/plugin.mjs +35 -77
  470. package/dist/lib/esm/obsidian/queue.d.mts +1 -0
  471. package/dist/lib/esm/obsidian/react/app-context.d.mts +1 -0
  472. package/dist/lib/esm/obsidian/react/index.d.mts +1 -0
  473. package/dist/lib/esm/obsidian/reference.d.mts +1 -0
  474. package/dist/lib/esm/obsidian/rename-delete-handler.d.mts +1 -0
  475. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +1 -2
  476. package/dist/lib/esm/obsidian/resource-url.d.mts +1 -0
  477. package/dist/lib/esm/obsidian/setting-components/checkbox-component.d.mts +1 -0
  478. package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.d.mts +1 -0
  479. package/dist/lib/esm/obsidian/setting-components/date-component.d.mts +1 -0
  480. package/dist/lib/esm/obsidian/setting-components/date-time-component.d.mts +1 -0
  481. package/dist/lib/esm/obsidian/setting-components/email-component.d.mts +1 -0
  482. package/dist/lib/esm/obsidian/setting-components/file-component.d.mts +1 -0
  483. package/dist/lib/esm/obsidian/setting-components/index.d.mts +1 -0
  484. package/dist/lib/esm/obsidian/setting-components/month-component.d.mts +1 -0
  485. package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.d.mts +1 -0
  486. package/dist/lib/esm/obsidian/setting-components/multiple-email-component.d.mts +1 -0
  487. package/dist/lib/esm/obsidian/setting-components/multiple-file-component.d.mts +1 -0
  488. package/dist/lib/esm/obsidian/setting-components/multiple-text-component.d.mts +1 -0
  489. package/dist/lib/esm/obsidian/setting-components/number-component.d.mts +1 -0
  490. package/dist/lib/esm/obsidian/setting-components/password-component.d.mts +1 -0
  491. package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.d.mts +1 -0
  492. package/dist/lib/esm/obsidian/setting-components/telephone-component.d.mts +1 -0
  493. package/dist/lib/esm/obsidian/setting-components/text-based-component.d.mts +1 -0
  494. package/dist/lib/esm/obsidian/setting-components/time-component.d.mts +1 -0
  495. package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.d.mts +1 -0
  496. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.d.mts +3 -0
  497. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.mjs +3 -1
  498. package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.d.mts +1 -0
  499. package/dist/lib/esm/obsidian/setting-components/typed-range-text-component.d.mts +1 -0
  500. package/dist/lib/esm/obsidian/setting-components/typed-text-component.d.mts +1 -0
  501. package/dist/lib/esm/obsidian/setting-components/url-component.d.mts +1 -0
  502. package/dist/lib/esm/obsidian/setting-components/validator-component.d.mts +1 -0
  503. package/dist/lib/esm/obsidian/setting-components/value-component-with-change-tracking.d.mts +1 -0
  504. package/dist/lib/esm/obsidian/setting-components/week-component.d.mts +1 -0
  505. package/dist/lib/esm/obsidian/setting-ex.d.mts +3 -0
  506. package/dist/lib/esm/obsidian/setting-ex.mjs +3 -1
  507. package/dist/lib/esm/obsidian/setting-group-ex.d.mts +1 -0
  508. package/dist/lib/esm/obsidian/validation.d.mts +1 -0
  509. package/dist/lib/esm/obsidian/vault-delete.d.mts +1 -0
  510. package/dist/lib/esm/obsidian/vault.d.mts +1 -0
  511. package/dist/lib/esm/obsidian/workspace.d.mts +1 -0
  512. package/dist/lib/esm/path.d.mts +1 -0
  513. package/dist/lib/esm/reg-exp.d.mts +1 -0
  514. package/dist/lib/esm/script-utils/build.d.mts +1 -0
  515. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.mts +1 -0
  516. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +1 -0
  517. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.mts +1 -0
  518. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.d.mts +1 -0
  519. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.d.mts +1 -0
  520. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +1 -0
  521. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.d.mts +1 -0
  522. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +1 -0
  523. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -0
  524. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.d.mts +1 -0
  525. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +1 -0
  526. package/dist/lib/esm/script-utils/bundlers/esbuild.d.mts +1 -0
  527. package/dist/lib/esm/script-utils/bundlers/index.d.mts +1 -0
  528. package/dist/lib/esm/script-utils/cli-utils.d.mts +1 -0
  529. package/dist/lib/esm/script-utils/code-generator.d.mts +1 -0
  530. package/dist/lib/esm/script-utils/commitlint-config.d.mts +1 -0
  531. package/dist/lib/esm/script-utils/exec.d.mts +1 -0
  532. package/dist/lib/esm/script-utils/formatters/dprint.d.mts +1 -0
  533. package/dist/lib/esm/script-utils/formatters/index.d.mts +1 -0
  534. package/dist/lib/esm/script-utils/fs.d.mts +1 -0
  535. package/dist/lib/esm/script-utils/index.d.mts +1 -0
  536. package/dist/lib/esm/script-utils/json.d.mts +1 -0
  537. package/dist/lib/esm/script-utils/linters/cspell.d.mts +1 -0
  538. package/dist/lib/esm/script-utils/linters/eslint-config.d.mts +1 -0
  539. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +2 -1
  540. package/dist/lib/esm/script-utils/linters/eslint-rules/index.d.mts +2 -0
  541. package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +3 -1
  542. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +1 -0
  543. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.d.mts +1 -0
  544. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +1 -0
  545. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +3 -1
  546. package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.d.mts +1 -0
  547. package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.d.mts +1 -0
  548. package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-members.d.mts +1 -0
  549. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.d.mts +1 -0
  550. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +2 -2
  551. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.d.mts +5 -0
  552. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +112 -0
  553. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.d.mts +1 -0
  554. package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.d.mts +1 -0
  555. package/dist/lib/esm/script-utils/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +1 -0
  556. package/dist/lib/esm/script-utils/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.mts +1 -0
  557. package/dist/lib/esm/script-utils/linters/eslint.d.mts +1 -0
  558. package/dist/lib/esm/script-utils/linters/index.d.mts +1 -0
  559. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +1 -0
  560. package/dist/lib/esm/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1 -0
  561. package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +1 -0
  562. package/dist/lib/esm/script-utils/nano-staged-config.d.mts +1 -0
  563. package/dist/lib/esm/script-utils/npm-publish.d.mts +1 -0
  564. package/dist/lib/esm/script-utils/npm-run.d.mts +1 -0
  565. package/dist/lib/esm/script-utils/npm.d.mts +1 -0
  566. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +1 -0
  567. package/dist/lib/esm/script-utils/root.d.mts +1 -0
  568. package/dist/lib/esm/script-utils/test-runners/index.d.mts +1 -0
  569. package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +1 -0
  570. package/dist/lib/esm/script-utils/version.d.mts +1 -0
  571. package/dist/lib/esm/strict-proxy.d.mts +1 -0
  572. package/dist/lib/esm/string.d.mts +1 -0
  573. package/dist/lib/esm/transformers/date-transformer.d.mts +1 -0
  574. package/dist/lib/esm/transformers/duration-transformer.d.mts +1 -0
  575. package/dist/lib/esm/transformers/group-transformer.d.mts +1 -0
  576. package/dist/lib/esm/transformers/index.d.mts +1 -0
  577. package/dist/lib/esm/transformers/map-transformer.d.mts +1 -0
  578. package/dist/lib/esm/transformers/set-transformer.d.mts +1 -0
  579. package/dist/lib/esm/transformers/skip-private-property-transformer.d.mts +1 -0
  580. package/dist/lib/esm/transformers/transformer.d.mts +1 -0
  581. package/dist/lib/esm/transformers/two-way-map-transformer.d.mts +1 -0
  582. package/dist/lib/esm/transformers/typed-transformer.d.mts +1 -0
  583. package/dist/lib/esm/two-way-map.d.mts +1 -0
  584. package/dist/lib/esm/type-guards.d.mts +1 -0
  585. package/dist/lib/esm/type.d.mts +1 -0
  586. package/dist/lib/esm/url.d.mts +1 -0
  587. package/dist/lib/esm/value-provider.d.mts +1 -0
  588. package/obsidian/Components/component-ex/package.json +6 -0
  589. package/obsidian/Components/registry-component/package.json +6 -0
  590. package/package.json +25 -23
  591. package/script-utils/linters/eslint-rules/require-method-template/package.json +6 -0
  592. package/dist/lib/cjs/obsidian/components/async-component.cjs +0 -183
  593. package/dist/lib/cjs/obsidian/components/async-component.d.cts +0 -43
  594. package/dist/lib/esm/obsidian/components/async-component.d.mts +0 -43
  595. package/dist/lib/esm/obsidian/components/async-component.mjs +0 -73
  596. package/obsidian/Components/async-component/package.json +0 -6
@@ -183,8 +183,7 @@ async function fullRender(params) {
183
183
  component.load();
184
184
  shouldUnloadComponent = true;
185
185
  }
186
- using patch = new import_monkey_around_component.MonkeyAroundComponent();
187
- patch.load();
186
+ using patch = component.addChild(new import_monkey_around_component.MonkeyAroundComponent());
188
187
  patch.registerMethodPatch({
189
188
  methodName: "md",
190
189
  obj: params.app.embedRegistry.embedByExtension,
@@ -268,4 +267,4 @@ async function renderInternalLink(app, pathOrAbstractFile, displayText) {
268
267
  renderExternalLink,
269
268
  renderInternalLink
270
269
  });
271
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21hcmtkb3duLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgTWFya2Rvd24gY29udGVudCBpbiBPYnNpZGlhbi5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERvbUV2ZW50c0hhbmRsZXJzLFxuICBEb21FdmVudHNIYW5kbGVyc0luZm9cbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdCc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBJbnRlcm5hbFBsdWdpbk5hbWUgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEhvdmVyUG9wb3ZlcixcbiAgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXIsXG4gIE1hcmtkb3duUmVuZGVyZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckFic3RyYWN0RmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBnZXRaSW5kZXggfSBmcm9tICcuLi9odG1sLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgTW9ua2V5QXJvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9ycy9nZXREb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0UGF0aCxcbiAgaXNGb2xkZXJcbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbnR5cGUgRG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxEb21FdmVudHNIYW5kbGVycz47XG5cbmxldCBkb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yOiBEb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICogVGhlIHBhcmFtcyBmb3IgdGhlIGZ1bGwgcmVuZGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxSZW5kZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgQ29tcG9uZW50IGluc3RhbmNlIHRvIHVzZSBmb3IgdGhlIHJlbmRlci5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudD86IENvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIEhUTUxFbGVtZW50IHRvIHJlbmRlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIE1hcmtkb3duIHN0cmluZyB0byByZW5kZXIuXG4gICAqL1xuICByZWFkb25seSBtYXJrZG93bjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlZ2lzdGVyIGxpbmsgaGFuZGxlcnMgZm9yIHRoZSByZW5kZXJlZCBlbGVtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVnaXN0ZXJMaW5rSGFuZGxlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHBhdGggdG8gcmVzb2x2ZSByZWxhdGl2ZSBsaW5rcy5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZVBhdGg/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBGaXhlZFpJbmRleERvbUV2ZW50c0hhbmRsZXJzSW5mb0NvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5jbGFzcyBGaXhlZFpJbmRleERvbUV2ZW50c0hhbmRsZXJzSW5mbyBpbXBsZW1lbnRzIERvbUV2ZW50c0hhbmRsZXJzSW5mbyB7XG4gIHB1YmxpYyByZWFkb25seSBhcHA6IEFwcDtcbiAgcHVibGljIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IGhvdmVyUG9wb3ZlcigpOiBIb3ZlclBvcG92ZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faG92ZXJQb3BvdmVyO1xuICB9XG5cbiAgcHVibGljIHNldCBob3ZlclBvcG92ZXIoaG92ZXJQb3BvdmVyOiBIb3ZlclBvcG92ZXIgfCBudWxsKSB7XG4gICAgdGhpcy5faG92ZXJQb3BvdmVyID0gaG92ZXJQb3BvdmVyO1xuICAgIGlmIChob3ZlclBvcG92ZXIgJiYgdGhpcy56SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgaG92ZXJQb3BvdmVyLmhvdmVyRWwuc2V0Q3NzU3R5bGVzKHtcbiAgICAgICAgekluZGV4OiBTdHJpbmcodGhpcy56SW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ob3ZlclBvcG92ZXI6IEhvdmVyUG9wb3ZlciB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgekluZGV4PzogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEZpeGVkWkluZGV4RG9tRXZlbnRzSGFuZGxlcnNJbmZvQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5wYXRoID0gcGFyYW1zLnBhdGg7XG4gICAgdGhpcy5lbCA9IHBhcmFtcy5lbDtcblxuICAgIGlmICh0aGlzLmVsLmlzQ29ubmVjdGVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVpJbmRleCh0aGlzLmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbC5vbk5vZGVJbnNlcnRlZCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlWkluZGV4KHRoaXMuZWwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVaSW5kZXgoZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy56SW5kZXggPSBnZXRaSW5kZXgoZWwpICsgMTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgbWFya2Rvd24gYW5kIGVtYmVkcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdWxsIHJlbmRlci5cbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmdWxsIHJlbmRlciBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZ1bGxSZW5kZXIocGFyYW1zOiBGdWxsUmVuZGVyUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHNvdXJjZVBhdGggPSBwYXJhbXMuc291cmNlUGF0aCA/PyAnLyc7XG4gIGxldCBzaG91bGRVbmxvYWRDb21wb25lbnQgPSBmYWxzZTtcbiAgbGV0IGNvbXBvbmVudDogQ29tcG9uZW50O1xuICBpZiAocGFyYW1zLmNvbXBvbmVudCkge1xuICAgIGNvbXBvbmVudCA9IHBhcmFtcy5jb21wb25lbnQ7XG4gIH0gZWxzZSB7XG4gICAgY29tcG9uZW50ID0gbmV3IENvbXBvbmVudCgpO1xuICAgIGNvbXBvbmVudC5sb2FkKCk7XG4gICAgc2hvdWxkVW5sb2FkQ29tcG9uZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHVzaW5nIHBhdGNoID0gbmV3IE1vbmtleUFyb3VuZENvbXBvbmVudCgpO1xuICBwYXRjaC5sb2FkKCk7XG5cbiAgcGF0Y2gucmVnaXN0ZXJNZXRob2RQYXRjaCh7XG4gICAgbWV0aG9kTmFtZTogJ21kJyxcbiAgICBvYmo6IHBhcmFtcy5hcHAuZW1iZWRSZWdpc3RyeS5lbWJlZEJ5RXh0ZW5zaW9uLFxuICAgIHBhdGNoSGFuZGxlcjogKHtcbiAgICAgIGZhbGxiYWNrLFxuICAgICAgb3JpZ2luYWxBcmdzOiBbY29udGV4dF1cbiAgICB9KSA9PiB7XG4gICAgICBjb250ZXh0LmRpc3BsYXlNb2RlID0gZmFsc2U7XG4gICAgICByZXR1cm4gZmFsbGJhY2soKTtcbiAgICB9XG4gIH0pO1xuXG4gIGF3YWl0IE1hcmtkb3duUmVuZGVyZXIucmVuZGVyKHBhcmFtcy5hcHAsIHBhcmFtcy5tYXJrZG93biwgcGFyYW1zLmVsLCBzb3VyY2VQYXRoLCBjb21wb25lbnQpO1xuXG4gIGlmIChzaG91bGRVbmxvYWRDb21wb25lbnQpIHtcbiAgICBjb21wb25lbnQudW5sb2FkKCk7XG4gIH1cblxuICBpZiAocGFyYW1zLnNob3VsZFJlZ2lzdGVyTGlua0hhbmRsZXJzKSB7XG4gICAgYXdhaXQgcmVnaXN0ZXJMaW5rSGFuZGxlcnMocGFyYW1zLmFwcCwgcGFyYW1zLmVsLCBwYXJhbXMuc291cmNlUGF0aCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBNYXJrZG93biB0byBIVE1MLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIG1hcmtkb3duIC0gVGhlIE1hcmtkb3duIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHBhcmFtIHNvdXJjZVBhdGggLSAob3B0aW9uYWwpIFRoZSBzb3VyY2UgcGF0aCB0byByZXNvbHZlIHJlbGF0aXZlIGxpbmtzLlxuICogQHJldHVybnMgVGhlIEhUTUwgc3RyaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFya2Rvd25Ub0h0bWwoYXBwOiBBcHAsIG1hcmtkb3duOiBzdHJpbmcsIHNvdXJjZVBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50KCk7XG4gIGNvbXBvbmVudC5sb2FkKCk7XG4gIGNvbnN0IHJlbmRlckRpdiA9IGNyZWF0ZURpdigpO1xuICBhd2FpdCBNYXJrZG93blJlbmRlcmVyLnJlbmRlcihhcHAsIG1hcmtkb3duLCByZW5kZXJEaXYsIHNvdXJjZVBhdGggPz8gJycsIGNvbXBvbmVudCk7XG4gIGNvbnN0IGh0bWwgPSByZW5kZXJEaXYuaW5uZXJIVE1MO1xuICBjb21wb25lbnQudW5sb2FkKCk7XG4gIHJldHVybiBodG1sO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBsaW5rIGhhbmRsZXJzIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBlbCAtIFRoZSBIVE1MRWxlbWVudCB0byByZWdpc3RlciBsaW5rIGhhbmRsZXJzIGZvci5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gVGhlIHNvdXJjZSBwYXRoIHRvIHJlc29sdmUgcmVsYXRpdmUgbGlua3MgZnJvbS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyTGlua0hhbmRsZXJzKGFwcDogQXBwLCBlbDogSFRNTEVsZW1lbnQsIHNvdXJjZVBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gTm8gcmFjZSBjb25kaXRpb24uXG4gIGRvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgPz89IGF3YWl0IGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IoYXBwKTtcbiAgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXIucmVnaXN0ZXJEb21FdmVudHMoXG4gICAgZWwsXG4gICAgbmV3IGRvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IoXG4gICAgICBuZXcgRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm8oe1xuICAgICAgICBhcHAsXG4gICAgICAgIGVsLFxuICAgICAgICBwYXRoOiBzb3VyY2VQYXRoID8/ICcnXG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGV4dGVybmFsIGxpbmsuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gdXJsIC0gVGhlIFVSTCB0byByZW5kZXIgdGhlIGV4dGVybmFsIGxpbmsgZm9yLlxuICogQHBhcmFtIGRpc3BsYXlUZXh0IC0gVGhlIHRleHQgdG8gZGlzcGxheSBmb3IgdGhlIGV4dGVybmFsIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUgSFRNTEFuY2hvckVsZW1lbnQgY29udGFpbmluZyB0aGUgcmVuZGVyZWQgZXh0ZXJuYWwgbGluay5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckV4dGVybmFsTGluayhhcHA6IEFwcCwgdXJsOiBzdHJpbmcsIGRpc3BsYXlUZXh0Pzogc3RyaW5nKTogUHJvbWlzZTxIVE1MQW5jaG9yRWxlbWVudD4ge1xuICBkaXNwbGF5VGV4dCA/Pz0gdXJsO1xuICBjb25zdCB3cmFwcGVyRWwgPSBjcmVhdGVTcGFuKCk7XG4gIGF3YWl0IGZ1bGxSZW5kZXIoe1xuICAgIGFwcCxcbiAgICBlbDogd3JhcHBlckVsLFxuICAgIG1hcmtkb3duOiBgWyR7ZGlzcGxheVRleHR9XSgke3VybH0pYFxuICB9KTtcbiAgY29uc3QgYUVsID0gd3JhcHBlckVsLmZpbmQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgYXdhaXQgcmVnaXN0ZXJMaW5rSGFuZGxlcnMoYXBwLCBhRWwpO1xuICByZXR1cm4gYUVsO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaW50ZXJuYWwgbGluay5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JBYnN0cmFjdEZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJlbmRlciB0aGUgaW50ZXJuYWwgbGluayBmb3IuXG4gKiBAcGFyYW0gZGlzcGxheVRleHQgLSBUaGUgdGV4dCB0byBkaXNwbGF5IGZvciB0aGUgaW50ZXJuYWwgbGluay5cbiAqIEByZXR1cm5zIFRoZSBIVE1MQW5jaG9yRWxlbWVudCBjb250YWluaW5nIHRoZSByZW5kZXJlZCBpbnRlcm5hbCBsaW5rLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVySW50ZXJuYWxMaW5rKGFwcDogQXBwLCBwYXRoT3JBYnN0cmFjdEZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgZGlzcGxheVRleHQ/OiBzdHJpbmcpOiBQcm9taXNlPEhUTUxBbmNob3JFbGVtZW50PiB7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckFic3RyYWN0RmlsZSk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yQWJzdHJhY3RGaWxlKTtcbiAgZGlzcGxheVRleHQgPz89IHBhdGg7XG4gIGlmIChpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsKCdhJywgeyB0ZXh0OiBkaXNwbGF5VGV4dCB9LCAoYUVsKSA9PiB7XG4gICAgICBhRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhcHAuaW50ZXJuYWxQbHVnaW5zLmdldEVuYWJsZWRQbHVnaW5CeUlkKEludGVybmFsUGx1Z2luTmFtZS5GaWxlRXhwbG9yZXIpPy5yZXZlYWxJbkZvbGRlcihhYnN0cmFjdEZpbGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCB3cmFwcGVyRWwgPSBjcmVhdGVTcGFuKCk7XG4gIGF3YWl0IGZ1bGxSZW5kZXIoe1xuICAgIGFwcCxcbiAgICBlbDogd3JhcHBlckVsLFxuICAgIG1hcmtkb3duOiBgW1ske3BhdGh9fCR7ZGlzcGxheVRleHR9XV1gXG4gIH0pO1xuICBjb25zdCBhRWwgPSB3cmFwcGVyRWwuZmluZCgnYScpIGFzIEhUTUxBbmNob3JFbGVtZW50O1xuICBhd2FpdCByZWdpc3RlckxpbmtIYW5kbGVycyhhcHAsIGFFbCk7XG4gIHJldHVybiBhRWw7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBLDZCQUFtQztBQUNuQyxzQkFLTztBQUlQLDBCQUEwQjtBQUMxQixxQ0FBc0M7QUFDdEMsNkNBQWdEO0FBQ2hELHlCQUlPO0FBSVAsSUFBSSwrQkFBb0U7QUEyQ3hFLE1BQU0saUNBQWtFO0FBQUEsRUFDdEQ7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBRWhCLElBQVcsZUFBb0M7QUFDN0MsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRUEsSUFBVyxhQUFhLGNBQW1DO0FBQ3pELFNBQUssZ0JBQWdCO0FBQ3JCLFFBQUksZ0JBQWdCLEtBQUssV0FBVyxRQUFXO0FBQzdDLG1CQUFhLFFBQVEsYUFBYTtBQUFBLFFBQ2hDLFFBQVEs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
270
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21hcmtkb3duLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgTWFya2Rvd24gY29udGVudCBpbiBPYnNpZGlhbi5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERvbUV2ZW50c0hhbmRsZXJzLFxuICBEb21FdmVudHNIYW5kbGVyc0luZm9cbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdCc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBJbnRlcm5hbFBsdWdpbk5hbWUgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEhvdmVyUG9wb3ZlcixcbiAgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXIsXG4gIE1hcmtkb3duUmVuZGVyZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckFic3RyYWN0RmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBnZXRaSW5kZXggfSBmcm9tICcuLi9odG1sLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgTW9ua2V5QXJvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9ycy9nZXREb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0UGF0aCxcbiAgaXNGb2xkZXJcbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbnR5cGUgRG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxEb21FdmVudHNIYW5kbGVycz47XG5cbmxldCBkb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yOiBEb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICogVGhlIHBhcmFtcyBmb3IgdGhlIGZ1bGwgcmVuZGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxSZW5kZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgQ29tcG9uZW50IGluc3RhbmNlIHRvIHVzZSBmb3IgdGhlIHJlbmRlci5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudD86IENvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIEhUTUxFbGVtZW50IHRvIHJlbmRlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIE1hcmtkb3duIHN0cmluZyB0byByZW5kZXIuXG4gICAqL1xuICByZWFkb25seSBtYXJrZG93bjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlZ2lzdGVyIGxpbmsgaGFuZGxlcnMgZm9yIHRoZSByZW5kZXJlZCBlbGVtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVnaXN0ZXJMaW5rSGFuZGxlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHBhdGggdG8gcmVzb2x2ZSByZWxhdGl2ZSBsaW5rcy5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZVBhdGg/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBGaXhlZFpJbmRleERvbUV2ZW50c0hhbmRsZXJzSW5mb0NvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5jbGFzcyBGaXhlZFpJbmRleERvbUV2ZW50c0hhbmRsZXJzSW5mbyBpbXBsZW1lbnRzIERvbUV2ZW50c0hhbmRsZXJzSW5mbyB7XG4gIHB1YmxpYyByZWFkb25seSBhcHA6IEFwcDtcbiAgcHVibGljIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IGhvdmVyUG9wb3ZlcigpOiBIb3ZlclBvcG92ZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faG92ZXJQb3BvdmVyO1xuICB9XG5cbiAgcHVibGljIHNldCBob3ZlclBvcG92ZXIoaG92ZXJQb3BvdmVyOiBIb3ZlclBvcG92ZXIgfCBudWxsKSB7XG4gICAgdGhpcy5faG92ZXJQb3BvdmVyID0gaG92ZXJQb3BvdmVyO1xuICAgIGlmIChob3ZlclBvcG92ZXIgJiYgdGhpcy56SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgaG92ZXJQb3BvdmVyLmhvdmVyRWwuc2V0Q3NzU3R5bGVzKHtcbiAgICAgICAgekluZGV4OiBTdHJpbmcodGhpcy56SW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ob3ZlclBvcG92ZXI6IEhvdmVyUG9wb3ZlciB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgekluZGV4PzogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEZpeGVkWkluZGV4RG9tRXZlbnRzSGFuZGxlcnNJbmZvQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5wYXRoID0gcGFyYW1zLnBhdGg7XG4gICAgdGhpcy5lbCA9IHBhcmFtcy5lbDtcblxuICAgIGlmICh0aGlzLmVsLmlzQ29ubmVjdGVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVpJbmRleCh0aGlzLmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbC5vbk5vZGVJbnNlcnRlZCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlWkluZGV4KHRoaXMuZWwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVaSW5kZXgoZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy56SW5kZXggPSBnZXRaSW5kZXgoZWwpICsgMTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgbWFya2Rvd24gYW5kIGVtYmVkcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdWxsIHJlbmRlci5cbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmdWxsIHJlbmRlciBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZ1bGxSZW5kZXIocGFyYW1zOiBGdWxsUmVuZGVyUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHNvdXJjZVBhdGggPSBwYXJhbXMuc291cmNlUGF0aCA/PyAnLyc7XG4gIGxldCBzaG91bGRVbmxvYWRDb21wb25lbnQgPSBmYWxzZTtcbiAgbGV0IGNvbXBvbmVudDogQ29tcG9uZW50O1xuICBpZiAocGFyYW1zLmNvbXBvbmVudCkge1xuICAgIGNvbXBvbmVudCA9IHBhcmFtcy5jb21wb25lbnQ7XG4gIH0gZWxzZSB7XG4gICAgY29tcG9uZW50ID0gbmV3IENvbXBvbmVudCgpO1xuICAgIGNvbXBvbmVudC5sb2FkKCk7XG4gICAgc2hvdWxkVW5sb2FkQ29tcG9uZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHVzaW5nIHBhdGNoID0gY29tcG9uZW50LmFkZENoaWxkKG5ldyBNb25rZXlBcm91bmRDb21wb25lbnQoKSk7XG5cbiAgcGF0Y2gucmVnaXN0ZXJNZXRob2RQYXRjaCh7XG4gICAgbWV0aG9kTmFtZTogJ21kJyxcbiAgICBvYmo6IHBhcmFtcy5hcHAuZW1iZWRSZWdpc3RyeS5lbWJlZEJ5RXh0ZW5zaW9uLFxuICAgIHBhdGNoSGFuZGxlcjogKHtcbiAgICAgIGZhbGxiYWNrLFxuICAgICAgb3JpZ2luYWxBcmdzOiBbY29udGV4dF1cbiAgICB9KSA9PiB7XG4gICAgICBjb250ZXh0LmRpc3BsYXlNb2RlID0gZmFsc2U7XG4gICAgICByZXR1cm4gZmFsbGJhY2soKTtcbiAgICB9XG4gIH0pO1xuXG4gIGF3YWl0IE1hcmtkb3duUmVuZGVyZXIucmVuZGVyKHBhcmFtcy5hcHAsIHBhcmFtcy5tYXJrZG93biwgcGFyYW1zLmVsLCBzb3VyY2VQYXRoLCBjb21wb25lbnQpO1xuXG4gIGlmIChzaG91bGRVbmxvYWRDb21wb25lbnQpIHtcbiAgICBjb21wb25lbnQudW5sb2FkKCk7XG4gIH1cblxuICBpZiAocGFyYW1zLnNob3VsZFJlZ2lzdGVyTGlua0hhbmRsZXJzKSB7XG4gICAgYXdhaXQgcmVnaXN0ZXJMaW5rSGFuZGxlcnMocGFyYW1zLmFwcCwgcGFyYW1zLmVsLCBwYXJhbXMuc291cmNlUGF0aCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBNYXJrZG93biB0byBIVE1MLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIG1hcmtkb3duIC0gVGhlIE1hcmtkb3duIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHBhcmFtIHNvdXJjZVBhdGggLSAob3B0aW9uYWwpIFRoZSBzb3VyY2UgcGF0aCB0byByZXNvbHZlIHJlbGF0aXZlIGxpbmtzLlxuICogQHJldHVybnMgVGhlIEhUTUwgc3RyaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFya2Rvd25Ub0h0bWwoYXBwOiBBcHAsIG1hcmtkb3duOiBzdHJpbmcsIHNvdXJjZVBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50KCk7XG4gIGNvbXBvbmVudC5sb2FkKCk7XG4gIGNvbnN0IHJlbmRlckRpdiA9IGNyZWF0ZURpdigpO1xuICBhd2FpdCBNYXJrZG93blJlbmRlcmVyLnJlbmRlcihhcHAsIG1hcmtkb3duLCByZW5kZXJEaXYsIHNvdXJjZVBhdGggPz8gJycsIGNvbXBvbmVudCk7XG4gIGNvbnN0IGh0bWwgPSByZW5kZXJEaXYuaW5uZXJIVE1MO1xuICBjb21wb25lbnQudW5sb2FkKCk7XG4gIHJldHVybiBodG1sO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBsaW5rIGhhbmRsZXJzIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBlbCAtIFRoZSBIVE1MRWxlbWVudCB0byByZWdpc3RlciBsaW5rIGhhbmRsZXJzIGZvci5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gVGhlIHNvdXJjZSBwYXRoIHRvIHJlc29sdmUgcmVsYXRpdmUgbGlua3MgZnJvbS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyTGlua0hhbmRsZXJzKGFwcDogQXBwLCBlbDogSFRNTEVsZW1lbnQsIHNvdXJjZVBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gTm8gcmFjZSBjb25kaXRpb24uXG4gIGRvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgPz89IGF3YWl0IGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IoYXBwKTtcbiAgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXIucmVnaXN0ZXJEb21FdmVudHMoXG4gICAgZWwsXG4gICAgbmV3IGRvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IoXG4gICAgICBuZXcgRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm8oe1xuICAgICAgICBhcHAsXG4gICAgICAgIGVsLFxuICAgICAgICBwYXRoOiBzb3VyY2VQYXRoID8/ICcnXG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGV4dGVybmFsIGxpbmsuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gdXJsIC0gVGhlIFVSTCB0byByZW5kZXIgdGhlIGV4dGVybmFsIGxpbmsgZm9yLlxuICogQHBhcmFtIGRpc3BsYXlUZXh0IC0gVGhlIHRleHQgdG8gZGlzcGxheSBmb3IgdGhlIGV4dGVybmFsIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUgSFRNTEFuY2hvckVsZW1lbnQgY29udGFpbmluZyB0aGUgcmVuZGVyZWQgZXh0ZXJuYWwgbGluay5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckV4dGVybmFsTGluayhhcHA6IEFwcCwgdXJsOiBzdHJpbmcsIGRpc3BsYXlUZXh0Pzogc3RyaW5nKTogUHJvbWlzZTxIVE1MQW5jaG9yRWxlbWVudD4ge1xuICBkaXNwbGF5VGV4dCA/Pz0gdXJsO1xuICBjb25zdCB3cmFwcGVyRWwgPSBjcmVhdGVTcGFuKCk7XG4gIGF3YWl0IGZ1bGxSZW5kZXIoe1xuICAgIGFwcCxcbiAgICBlbDogd3JhcHBlckVsLFxuICAgIG1hcmtkb3duOiBgWyR7ZGlzcGxheVRleHR9XSgke3VybH0pYFxuICB9KTtcbiAgY29uc3QgYUVsID0gd3JhcHBlckVsLmZpbmQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgYXdhaXQgcmVnaXN0ZXJMaW5rSGFuZGxlcnMoYXBwLCBhRWwpO1xuICByZXR1cm4gYUVsO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaW50ZXJuYWwgbGluay5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JBYnN0cmFjdEZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJlbmRlciB0aGUgaW50ZXJuYWwgbGluayBmb3IuXG4gKiBAcGFyYW0gZGlzcGxheVRleHQgLSBUaGUgdGV4dCB0byBkaXNwbGF5IGZvciB0aGUgaW50ZXJuYWwgbGluay5cbiAqIEByZXR1cm5zIFRoZSBIVE1MQW5jaG9yRWxlbWVudCBjb250YWluaW5nIHRoZSByZW5kZXJlZCBpbnRlcm5hbCBsaW5rLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVySW50ZXJuYWxMaW5rKGFwcDogQXBwLCBwYXRoT3JBYnN0cmFjdEZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgZGlzcGxheVRleHQ/OiBzdHJpbmcpOiBQcm9taXNlPEhUTUxBbmNob3JFbGVtZW50PiB7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckFic3RyYWN0RmlsZSk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yQWJzdHJhY3RGaWxlKTtcbiAgZGlzcGxheVRleHQgPz89IHBhdGg7XG4gIGlmIChpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsKCdhJywgeyB0ZXh0OiBkaXNwbGF5VGV4dCB9LCAoYUVsKSA9PiB7XG4gICAgICBhRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhcHAuaW50ZXJuYWxQbHVnaW5zLmdldEVuYWJsZWRQbHVnaW5CeUlkKEludGVybmFsUGx1Z2luTmFtZS5GaWxlRXhwbG9yZXIpPy5yZXZlYWxJbkZvbGRlcihhYnN0cmFjdEZpbGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCB3cmFwcGVyRWwgPSBjcmVhdGVTcGFuKCk7XG4gIGF3YWl0IGZ1bGxSZW5kZXIoe1xuICAgIGFwcCxcbiAgICBlbDogd3JhcHBlckVsLFxuICAgIG1hcmtkb3duOiBgW1ske3BhdGh9fCR7ZGlzcGxheVRleHR9XV1gXG4gIH0pO1xuICBjb25zdCBhRWwgPSB3cmFwcGVyRWwuZmluZCgnYScpIGFzIEhUTUxBbmNob3JFbGVtZW50O1xuICBhd2FpdCByZWdpc3RlckxpbmtIYW5kbGVycyhhcHAsIGFFbCk7XG4gIHJldHVybiBhRWw7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBLDZCQUFtQztBQUNuQyxzQkFLTztBQUlQLDBCQUEwQjtBQUMxQixxQ0FBc0M7QUFDdEMsNkNBQWdEO0FBQ2hELHlCQUlPO0FBSVAsSUFBSSwrQkFBb0U7QUEyQ3hFLE1BQU0saUNBQWtFO0FBQUEsRUFDdEQ7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBRWhCLElBQVcsZUFBb0M7QUFDN0MsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRUEsSUFBVyxhQUFhLGNBQW1DO0FBQ3pELFNBQUssZ0JBQWdCO0FBQ3JCLFFBQUksZ0JBQWdCLEtBQUssV0FBVyxRQUFXO0FBQzdDLG1CQUFhLFFBQVEsYUFBYTtBQUFBLFFBQ2hDLFFB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
@@ -1,3 +1,4 @@
1
+ /// <reference path="../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -121,4 +121,4 @@ var __copyProps = (to, from, except, desc) => {
121
121
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
122
122
  var menu_event_registrar_exports = {};
123
123
  module.exports = __toCommonJS(menu_event_registrar_exports);
124
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21lbnUtZXZlbnQtcmVnaXN0cmFyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogTWVudSBldmVudCByZWdpc3RyYXIuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBFZGl0b3IsXG4gIE1hcmtkb3duRmlsZUluZm8sXG4gIE1lbnUsXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIEhhbmRsZXIgZm9yIHRoZSBlZGl0b3IgY29udGV4dCBtZW51IGV2ZW50LlxuICpcbiAqIEBwYXJhbSBtZW51IC0gVGhlIG1lbnUgdG8gYWRkIGl0ZW1zIHRvLlxuICogQHBhcmFtIGVkaXRvciAtIFRoZSBlZGl0b3IgaW5zdGFuY2UuXG4gKiBAcGFyYW0gY3R4IC0gVGhlIG1hcmtkb3duIGZpbGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IHR5cGUgRWRpdG9yTWVudUV2ZW50SGFuZGxlciA9IChtZW51OiBNZW51LCBlZGl0b3I6IEVkaXRvciwgY3R4OiBNYXJrZG93bkZpbGVJbmZvKSA9PiB2b2lkO1xuXG4vKipcbiAqIEhhbmRsZXIgZm9yIHRoZSBzaW5nbGUtZmlsZSBjb250ZXh0IG1lbnUgZXZlbnQuXG4gKlxuICogQHBhcmFtIG1lbnUgLSBUaGUgbWVudSB0byBhZGQgaXRlbXMgdG8uXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGZpbGUgb3IgZm9sZGVyLlxuICogQHBhcmFtIHNvdXJjZSAtIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LlxuICogQHBhcmFtIGxlYWYgLSBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IHR5cGUgRmlsZU1lbnVFdmVudEhhbmRsZXIgPSAobWVudTogTWVudSwgYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlLCBzb3VyY2U6IHN0cmluZywgbGVhZj86IFdvcmtzcGFjZUxlYWYpID0+IHZvaWQ7XG5cbi8qKlxuICogSGFuZGxlciBmb3IgdGhlIG11bHRpLWZpbGUgY29udGV4dCBtZW51IGV2ZW50LlxuICpcbiAqIEBwYXJhbSBtZW51IC0gVGhlIG1lbnUgdG8gYWRkIGl0ZW1zIHRvLlxuICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgZmlsZXMgb3IgZm9sZGVycy5cbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBldmVudC5cbiAqIEBwYXJhbSBsZWFmIC0gVGhlIHdvcmtzcGFjZSBsZWFmLCBpZiBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbGVzTWVudUV2ZW50SGFuZGxlciA9IChtZW51OiBNZW51LCBhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10sIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZikgPT4gdm9pZDtcblxuLyoqXG4gKiBSZWdpc3RlcnMgbWVudSBldmVudCBoYW5kbGVycyB3aXRoIGxpZmVjeWNsZSBtYW5hZ2VtZW50LlxuICovXG5cbi8qKiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51RXZlbnRSZWdpc3RyYXIge1xuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgdGhlIGVkaXRvciBjb250ZXh0IG1lbnUgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBoYW5kbGVyIC0gVGhlIGhhbmRsZXIgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICByZWdpc3RlckVkaXRvck1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRWRpdG9yTWVudUV2ZW50SGFuZGxlcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGhhbmRsZXIgZm9yIHRoZSBzaW5nbGUtZmlsZSBjb250ZXh0IG1lbnUgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBoYW5kbGVyIC0gVGhlIGhhbmRsZXIgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICByZWdpc3RlckZpbGVNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXI6IEZpbGVNZW51RXZlbnRIYW5kbGVyKTogdm9pZDtcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgdGhlIG11bHRpLWZpbGUgY29udGV4dCBtZW51IGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaGFuZGxlciAtIFRoZSBoYW5kbGVyIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJGaWxlc01lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRmlsZXNNZW51RXZlbnRIYW5kbGVyKTogdm9pZDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
124
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21lbnUtZXZlbnQtcmVnaXN0cmFyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogTWVudSBldmVudCByZWdpc3RyYXIuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBFZGl0b3IsXG4gIE1hcmtkb3duRmlsZUluZm8sXG4gIE1lbnUsXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIEhhbmRsZXIgZm9yIHRoZSBlZGl0b3IgY29udGV4dCBtZW51IGV2ZW50LlxuICpcbiAqIEBwYXJhbSBtZW51IC0gVGhlIG1lbnUgdG8gYWRkIGl0ZW1zIHRvLlxuICogQHBhcmFtIGVkaXRvciAtIFRoZSBlZGl0b3IgaW5zdGFuY2UuXG4gKiBAcGFyYW0gY3R4IC0gVGhlIG1hcmtkb3duIGZpbGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IHR5cGUgRWRpdG9yTWVudUV2ZW50SGFuZGxlciA9IChtZW51OiBNZW51LCBlZGl0b3I6IEVkaXRvciwgY3R4OiBNYXJrZG93bkZpbGVJbmZvKSA9PiB2b2lkO1xuXG4vKipcbiAqIEhhbmRsZXIgZm9yIHRoZSBzaW5nbGUtZmlsZSBjb250ZXh0IG1lbnUgZXZlbnQuXG4gKlxuICogQHBhcmFtIG1lbnUgLSBUaGUgbWVudSB0byBhZGQgaXRlbXMgdG8uXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGZpbGUgb3IgZm9sZGVyLlxuICogQHBhcmFtIHNvdXJjZSAtIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LlxuICogQHBhcmFtIGxlYWYgLSBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IHR5cGUgRmlsZU1lbnVFdmVudEhhbmRsZXIgPSAobWVudTogTWVudSwgYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlLCBzb3VyY2U6IHN0cmluZywgbGVhZj86IFdvcmtzcGFjZUxlYWYpID0+IHZvaWQ7XG5cbi8qKlxuICogSGFuZGxlciBmb3IgdGhlIG11bHRpLWZpbGUgY29udGV4dCBtZW51IGV2ZW50LlxuICpcbiAqIEBwYXJhbSBtZW51IC0gVGhlIG1lbnUgdG8gYWRkIGl0ZW1zIHRvLlxuICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgZmlsZXMgb3IgZm9sZGVycy5cbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBldmVudC5cbiAqIEBwYXJhbSBsZWFmIC0gVGhlIHdvcmtzcGFjZSBsZWFmLCBpZiBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbGVzTWVudUV2ZW50SGFuZGxlciA9IChtZW51OiBNZW51LCBhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10sIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZikgPT4gdm9pZDtcblxuLyoqXG4gKiBSZWdpc3RlcnMgbWVudSBldmVudCBoYW5kbGVycyB3aXRoIGxpZmVjeWNsZSBtYW5hZ2VtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVFdmVudFJlZ2lzdHJhciB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBoYW5kbGVyIGZvciB0aGUgZWRpdG9yIGNvbnRleHQgbWVudSBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIGhhbmRsZXIgLSBUaGUgaGFuZGxlciB0byByZWdpc3Rlci5cbiAgICovXG4gIHJlZ2lzdGVyRWRpdG9yTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyOiBFZGl0b3JNZW51RXZlbnRIYW5kbGVyKTogdm9pZDtcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgdGhlIHNpbmdsZS1maWxlIGNvbnRleHQgbWVudSBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIGhhbmRsZXIgLSBUaGUgaGFuZGxlciB0byByZWdpc3Rlci5cbiAgICovXG4gIHJlZ2lzdGVyRmlsZU1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRmlsZU1lbnVFdmVudEhhbmRsZXIpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBoYW5kbGVyIGZvciB0aGUgbXVsdGktZmlsZSBjb250ZXh0IG1lbnUgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBoYW5kbGVyIC0gVGhlIGhhbmRsZXIgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICByZWdpc3RlckZpbGVzTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyOiBGaWxlc01lbnVFdmVudEhhbmRsZXIpOiB2b2lkO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,3 +1,4 @@
1
+ /// <reference path="../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -33,7 +34,6 @@ export type FilesMenuEventHandler = (menu: Menu, abstractFiles: TAbstractFile[],
33
34
  /**
34
35
  * Registers menu event handlers with lifecycle management.
35
36
  */
36
- /** */
37
37
  export interface MenuEventRegistrar {
38
38
  /**
39
39
  * Registers a handler for the editor context menu event.
@@ -1,3 +1,4 @@
1
+ /// <reference path="../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  export * as 'alert' from './alert.cjs';
2
3
  export * as 'confirm' from './confirm.cjs';
3
4
  export * as 'modal' from './modal.cjs';
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  export * as 'obsidian-plugin-repo-paths' from './obsidian-plugin-repo-paths.cjs';
2
3
  export * as 'plugin-context' from './plugin-context.cjs';
3
4
  export * as 'plugin-id' from './plugin-id.cjs';
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -130,19 +130,21 @@ __export(plugin_settings_tab_exports, {
130
130
  });
131
131
  module.exports = __toCommonJS(plugin_settings_tab_exports);
132
132
  var import_obsidian = require('obsidian');
133
+ var import_async_events = require('../../async-events.cjs');
133
134
  var import_async = require('../../async.cjs');
134
135
  var import_css_class = require('../../css-class.cjs');
135
136
  var import_function = require('../../function.cjs');
136
137
  var import_object_utils = require('../../object-utils.cjs');
137
138
  var import_type_guards = require('../../type-guards.cjs');
138
139
  var import_async_events_component = require('../components/async-events-component.cjs');
140
+ var import_component_ex = require('../components/component-ex.cjs');
139
141
  var import_setting_component_wrapper = require('../setting-components/setting-component-wrapper.cjs');
140
142
  var import_text_based_component = require('../setting-components/text-based-component.cjs');
141
143
  var import_validator_component = require('../setting-components/validator-component.cjs');
142
144
  var import_validation = require('../validation.cjs');
143
145
  var import_plugin_context = require('./plugin-context.cjs');
144
146
  const SAVE_TO_FILE_CONTEXT = "PluginSettingsTab";
145
- class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
147
+ class PluginSettingsTabBase extends (0, import_async_events.mixinAsyncEvents)()(import_obsidian.PluginSettingTab) {
146
148
  /**
147
149
  * Whether the plugin settings tab is open.
148
150
  *
@@ -165,7 +167,7 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
165
167
  return DEFAULT;
166
168
  }
167
169
  _isOpen = false;
168
- asyncEventsComponent;
170
+ component;
169
171
  saveSettingsDebounced;
170
172
  get pluginSettings() {
171
173
  return this.pluginSettingsComponent.settingsState.inputValues;
@@ -183,7 +185,7 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
183
185
  (0, import_async.convertAsyncToSync)(() => this.pluginSettingsComponent.saveToFile(SAVE_TO_FILE_CONTEXT)),
184
186
  this.saveSettingsDebounceTimeoutInMilliseconds
185
187
  );
186
- this.asyncEventsComponent = new import_async_events_component.AsyncEventsComponent();
188
+ this.component = new import_component_ex.ComponentEx();
187
189
  }
188
190
  /**
189
191
  * Binds a value component to a plugin setting.
@@ -226,13 +228,16 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
226
228
  tooltipEl.hide();
227
229
  wrapper.appendChild(tooltipEl);
228
230
  }
229
- this.asyncEventsComponent.registerAsyncEvent(this.on("validationMessageChanged", (anotherPropertyName, anotherValidationMessage) => {
230
- if (propertyName !== anotherPropertyName) {
231
- return;
232
- }
233
- validationMessage = anotherValidationMessage;
234
- updateValidatorElDebounced();
235
- }));
231
+ (0, import_async_events_component.registerAsyncEvent)(
232
+ this.component,
233
+ this.on("validationMessageChanged", (anotherPropertyName, anotherValidationMessage) => {
234
+ if (propertyName !== anotherPropertyName) {
235
+ return;
236
+ }
237
+ validationMessage = anotherValidationMessage;
238
+ updateValidatorElDebounced();
239
+ })
240
+ );
236
241
  let shouldEmptyOnBlur = false;
237
242
  let shouldRevertToDefaultValueOnBlur = false;
238
243
  if (textBasedComponent && optionsExt.shouldShowPlaceholderForDefaultValues && (0, import_object_utils.deepEqual)(readonlyValue, defaultValue)) {
@@ -335,9 +340,9 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
335
340
  display() {
336
341
  this.containerEl.empty();
337
342
  this._isOpen = true;
338
- this.asyncEventsComponent.load();
339
- this.asyncEventsComponent.registerAsyncEvent(this.pluginSettingsComponent.on("loadSettings", this.onLoadSettings.bind(this)));
340
- this.asyncEventsComponent.registerAsyncEvent(this.pluginSettingsComponent.on("saveSettings", this.onSaveSettings.bind(this)));
343
+ this.component.load();
344
+ (0, import_async_events_component.registerAsyncEvent)(this.component, this.pluginSettingsComponent.on("loadSettings", this.onLoadSettings.bind(this)));
345
+ (0, import_async_events_component.registerAsyncEvent)(this.component, this.pluginSettingsComponent.on("saveSettings", this.onSaveSettings.bind(this)));
341
346
  }
342
347
  /**
343
348
  * Hides the plugin settings tab.
@@ -346,8 +351,7 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
346
351
  super.hide();
347
352
  this.saveSettingsDebounced.cancel();
348
353
  this._isOpen = false;
349
- this.asyncEventsComponent.unload();
350
- this.asyncEventsComponent.load();
354
+ this.component.unload();
351
355
  (0, import_async.invokeAsyncSafely)(() => this.hideAsync());
352
356
  }
353
357
  /**
@@ -388,9 +392,6 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
388
392
  const settings = this.pluginSettings;
389
393
  return settings[propertyName];
390
394
  }
391
- on(name, callback, thisArg) {
392
- return this.asyncEventsComponent.asyncEvents.on(name, callback, thisArg);
393
- }
394
395
  async onSaveSettings(newState, _oldState, context) {
395
396
  if (context === SAVE_TO_FILE_CONTEXT) {
396
397
  await this.updateValidations(newState.validationMessages);
@@ -400,7 +401,7 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
400
401
  }
401
402
  async updateValidations(validationMessages) {
402
403
  for (const [propertyName, validationMessage] of Object.entries(validationMessages)) {
403
- await this.asyncEventsComponent.asyncEvents.triggerAsync("validationMessageChanged", propertyName, validationMessage);
404
+ await this.triggerAsync("validationMessageChanged", propertyName, validationMessage);
404
405
  }
405
406
  }
406
407
  }
@@ -409,4 +410,4 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
409
410
  PluginSettingsTabBase,
410
411
  SAVE_TO_FILE_CONTEXT
411
412
  });
412
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRGVib3VuY2VyLFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL2FzeW5jLWV2ZW50cy50cyc7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNQcm9taXNhYmxlVm9pZEZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb24udHMnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdLZXlzIH0gZnJvbSAnLi4vLi4vdHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZSxcbiAgUmVhZG9ubHlQbHVnaW5TZXR0aW5ncyxcbiAgUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlXG59IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi4vc2V0dGluZy1jb21wb25lbnRzL3ZhbHVlLWNvbXBvbmVudC13aXRoLWNoYW5nZS10cmFja2luZy50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHlcbn0gZnJvbSAnLi4vLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuLi9zZXR0aW5nLWNvbXBvbmVudHMvc2V0dGluZy1jb21wb25lbnQtd3JhcHBlci50cyc7XG5pbXBvcnQgeyBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSB9IGZyb20gJy4uL3NldHRpbmctY29tcG9uZW50cy90ZXh0LWJhc2VkLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBnZXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9zZXR0aW5nLWNvbXBvbmVudHMvdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogQSBjb250ZXh0IHBhc3NlZCB0byB0aGUge0BsaW5rIFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZS5zYXZlVG9GaWxlfSBtZXRob2QuXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX1RPX0ZJTEVfQ09OVEVYVCA9ICdQbHVnaW5TZXR0aW5nc1RhYic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFBsdWdpblNldHRpbmdzVGFiQmFzZS5iaW5kYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgc2V0dGluZ3MgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZWQ/KG5ld1ZhbHVlOiBSZWFkb25seURlZXA8VD4sIG9sZFZhbHVlOiBSZWFkb25seURlZXA8VD4pOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlc2V0IHRoZSBzZXR0aW5nIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBlbXB0eS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEFwcGxpY2FibGUgb25seSB0byB0ZXh0LWJhc2VkIGNvbXBvbmVudHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgcGxhY2Vob2xkZXIgZm9yIGRlZmF1bHQgdmFsdWVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIHRleHQtYmFzZWQgY29tcG9uZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGBQbHVnaW5TZXR0aW5nc1RhYkJhc2UuYmluZGAuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBwbHVnaW4gc2V0dGluZ3MgdHlwZS5cbiAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZS5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHNldHRpbmdzIHByb3BlcnR5IG5hbWUgYmVpbmcgYm91bmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnNFeHRlbmRlZDxcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QsXG4gIFVJVmFsdWUsXG4gIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XG4+IGV4dGVuZHMgQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4ge1xuICAvKipcbiAgICogQ29udmVydHMgdGhlIFVJIGNvbXBvbmVudCdzIHZhbHVlIGJhY2sgdG8gdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyKHVpVmFsdWU6IFVJVmFsdWUpOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdIHwgVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXI7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpblNldHRpbmdzVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIFVJIGNvbXBvbmVudC5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihwbHVnaW5TZXR0aW5nc1ZhbHVlOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4pOiBVSVZhbHVlO1xufVxuXG4vKipcbiAqIFBhcmFtcyBmb3IgY3JlYXRpbmcgYSB7QGxpbmsgUGx1Z2luU2V0dGluZ3NUYWJCYXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblNldHRpbmdzVGFiQmFzZUNvbnN0cnVjdG9yUGFyYW1zPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGluc3RhbmNlIChuZWVkZWQgYnkgT2JzaWRpYW4ncyBQbHVnaW5TZXR0aW5nVGFiKS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luO1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxQbHVnaW5TZXR0aW5ncz47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgcGx1Z2luIHNldHRpbmdzIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBQcm92aWRlcyBhIG1ldGhvZCBmb3IgYmluZGluZyB2YWx1ZSBjb21wb25lbnRzIHRvIHBsdWdpbiBzZXR0aW5ncyBhbmQgaGFuZGxpbmcgY2hhbmdlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0eXBlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luU2V0dGluZ3NUYWJCYXNlPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYiBpcyBvcGVuLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIGlzIG9wZW4uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBtYW5hZ2VyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8UGx1Z2luU2V0dGluZ3M+O1xuXG4gIC8qKlxuICAgKiBBIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgc2F2ZVNldHRpbmdzRGVib3VuY2VUaW1lb3V0SW5NaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICBjb25zdCBERUZBVUxUID0gMl8wMDA7XG4gICAgcmV0dXJuIERFRkFVTFQ7XG4gIH1cblxuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBhc3luY0V2ZW50c0NvbXBvbmVudDogQXN5bmNFdmVudHNDb21wb25lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2F2ZVNldHRpbmdzRGVib3VuY2VkOiBEZWJvdW5jZXI8W10sIHZvaWQ+O1xuXG4gIHByaXZhdGUgZ2V0IHBsdWdpblNldHRpbmdzKCk6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3M8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zZXR0aW5nc1N0YXRlLmlucHV0VmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbXMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBQbHVnaW5TZXR0aW5nc1RhYkJhc2VDb25zdHJ1Y3RvclBhcmFtczxQbHVnaW5TZXR0aW5ncz4pIHtcbiAgICBzdXBlcihwYXJhbXMucGx1Z2luLmFwcCwgcGFyYW1zLnBsdWdpbik7XG4gICAgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyRWwsIENzc0NsYXNzLlBsdWdpblNldHRpbmdzVGFiKTtcbiAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlZCA9IGRlYm91bmNlKFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2F2ZVRvRmlsZShTQVZFX1RPX0ZJTEVfQ09OVEVYVCkpLFxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZVRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgICk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudCA9IG5ldyBBc3luY0V2ZW50c0NvbXBvbmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogQ29uZGl0aW9uYWxLZXlzPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPixcbiAgICBvcHRpb25zPzogQmluZE9wdGlvbnM8VUlWYWx1ZT5cbiAgKTogVFZhbHVlQ29tcG9uZW50O1xuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnQsXG4gICAgUHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9uczogQmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPlxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICBvcHRpb25zPzogQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4gLy8gZXNsaW50LWRpc2FibGUtbGluZSBvYnNpZGlhbi1kZXYtdXRpbHMvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCAtLSBCaW5kT3B0aW9ucyBpcyBhIGdlbmVyaWMgdXRpbGl0eSBzaGFyZWQgYWNyb3NzIGJpbmRpbmcgbWV0aG9kcy5cbiAgKTogVFZhbHVlQ29tcG9uZW50IHtcbiAgICB0eXBlIFByb3BlcnR5VHlwZSA9IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV07XG4gICAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHtcbiAgICAgIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBVSVZhbHVlKTogUHJvcGVydHlUeXBlID0+IHZhbHVlIGFzIFByb3BlcnR5VHlwZSxcbiAgICAgIG9uQ2hhbmdlZDogbm9vcCxcbiAgICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPik6IFVJVmFsdWUgPT4gdmFsdWUgYXMgVUlWYWx1ZSxcbiAgICAgIHNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5OiB0cnVlLFxuICAgICAgc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlczogdHJ1ZSxcbiAgICAgIHNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZTogdHJ1ZVxuICAgIH07XG5cbiAgICBjb25zdCBvcHRpb25zRXh0OiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICBjb25zdCB2YWxpZGF0b3JFbCA9IGdldFZhbGlkYXRvckNvbXBvbmVudCh2YWx1ZUNvbXBvbmVudCk/LnZhbGlkYXRvckVsO1xuXG4gICAgY29uc3QgdGV4dEJhc2VkQ29tcG9uZW50ID0gZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUodmFsdWVDb21wb25lbnQpO1xuXG4gICAgY29uc3QgcmVhZG9ubHlWYWx1ZSA9IHRoaXMuZ2V0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5kZWZhdWx0U2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZGVmYXVsdHNbcHJvcGVydHlOYW1lXTtcbiAgICBjb25zdCBkZWZhdWx0Q29tcG9uZW50VmFsdWUgPSBvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihkZWZhdWx0VmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pO1xuICAgIHRleHRCYXNlZENvbXBvbmVudD8uc2V0UGxhY2Vob2xkZXJWYWx1ZShkZWZhdWx0Q29tcG9uZW50VmFsdWUpO1xuXG4gICAgbGV0IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7XG4gICAgbGV0IHRvb2x0aXBFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdG9vbHRpcENvbnRlbnRFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBpZiAodmFsaWRhdG9yRWwpIHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBlbnN1cmVXcmFwcGVkKHZhbGlkYXRvckVsKTtcbiAgICAgIHRvb2x0aXBFbCA9IHdyYXBwZXIuY3JlYXRlRGl2KCk7XG4gICAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRvb2x0aXBFbCwgW0Nzc0NsYXNzLlRvb2x0aXAsIENzc0NsYXNzLlRvb2x0aXBWYWxpZGF0b3JdKTtcbiAgICAgIHRvb2x0aXBDb250ZW50RWwgPSB0b29sdGlwRWwuY3JlYXRlU3BhbigpO1xuICAgICAgY29uc3QgdG9vbHRpcEFycm93RWwgPSB0b29sdGlwRWwuY3JlYXRlRGl2KCk7XG4gICAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRvb2x0aXBBcnJvd0VsLCBDc3NDbGFzcy5Ub29sdGlwQXJyb3cpO1xuICAgICAgdG9vbHRpcEVsLmhpZGUoKTtcbiAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQodG9vbHRpcEVsKTtcbiAgICB9XG5cbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLm9uKCd2YWxpZGF0aW9uTWVzc2FnZUNoYW5nZWQnLCAoYW5vdGhlclByb3BlcnR5TmFtZSwgYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlKSA9PiB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSBhbm90aGVyUHJvcGVydHlOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhbm90aGVyVmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pKTtcblxuICAgIGxldCBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuICAgIGxldCBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgZGVlcEVxdWFsKHJlYWRvbmx5VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgIHRleHRCYXNlZENvbXBvbmVudC5lbXB0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihyZWFkb25seVZhbHVlKSk7XG4gICAgfVxuXG4gICAgbGV0IHNob3VsZFNraXBPbkNoYW5nZSA9IGZhbHNlO1xuICAgIGNvbnN0IFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMDA7XG4gICAgY29uc3QgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVmFsaWRhdG9yRWwoKTtcbiAgICAgIH0pO1xuICAgIH0sIFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgdmFsdWVDb21wb25lbnQub25DaGFuZ2UoY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICh1aVZhbHVlKSA9PiB7XG4gICAgICBpZiAoc2hvdWxkU2tpcE9uQ2hhbmdlKSB7XG4gICAgICAgIHNob3VsZFNraXBPbkNoYW5nZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNob3VsZEVtcHR5T25CbHVyID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5nZXRQbHVnaW5TZXR0aW5nc1Byb3BlcnR5KHByb3BlcnR5TmFtZSk7XG4gICAgICBsZXQgbmV3VmFsdWU6IFByb3BlcnR5VHlwZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIGxldCBzaG91bGRTZXRQcm9wZXJ0eSA9IHRydWU7XG4gICAgICBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9ICEhdGV4dEJhc2VkQ29tcG9uZW50Py5pc0VtcHR5KCkgJiYgb3B0aW9uc0V4dC5zaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eTtcbiAgICAgIGlmIChzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1cikge1xuICAgICAgICBuZXdWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlID0gb3B0aW9uc0V4dC5jb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXIodWlWYWx1ZSk7XG4gICAgICAgIGlmIChpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyKGNvbnZlcnRlZFZhbHVlKSkge1xuICAgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gY29udmVydGVkVmFsdWUudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICAgICAgc2hvdWxkU2V0UHJvcGVydHkgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGNvbnZlcnRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzaG91bGRTZXRQcm9wZXJ0eSkge1xuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IGF3YWl0IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBuZXdWYWx1ZSBhcyBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdKTtcbiAgICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgIXRleHRCYXNlZENvbXBvbmVudC5pc0VtcHR5KCkgJiYgZGVlcEVxdWFsKG5ld1ZhbHVlLCBkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgICBpZiAoc2hvdWxkU2V0UHJvcGVydHkpIHtcbiAgICAgICAgYXdhaXQgb3B0aW9uc0V4dC5vbkNoYW5nZWQobmV3VmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4sIG9sZFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkKCk7XG4gICAgfSkpO1xuXG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQoKTtcbiAgICB9KTtcbiAgICB2YWxpZGF0b3JFbD8uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlcyA9IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2V0dGluZ3NTdGF0ZS52YWxpZGF0aW9uTWVzc2FnZXMgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlc1twcm9wZXJ0eU5hbWVdID8/ICcnO1xuICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG5cbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQ7XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVWYWxpZGF0b3JFbCgpOiB2b2lkIHtcbiAgICAgIGlmICghdmFsaWRhdG9yRWw/LmlzQWN0aXZlRWxlbWVudCgpKSB7XG4gICAgICAgIGlmIChzaG91bGRFbXB0eU9uQmx1cikge1xuICAgICAgICAgIHNob3VsZEVtcHR5T25CbHVyID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoIXRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICBzaG91bGRTa2lwT25DaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdGV4dEJhc2VkQ29tcG9uZW50Py5lbXB0eSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1cikge1xuICAgICAgICAgIHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50Py5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHNob3VsZFNraXBPbkNoYW5nZSA9IHRydWU7XG4gICAgICAgICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShkZWZhdWx0Q29tcG9uZW50VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRvckVsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0Tm9uTnVsbGFibGUodG9vbHRpcENvbnRlbnRFbCk7XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uTWVzc2FnZSA9PT0gJycpIHtcbiAgICAgICAgdmFsaWRhdG9yRWwuc2V0Q3VzdG9tVmFsaWRpdHkoJycpO1xuICAgICAgICB2YWxpZGF0b3JFbC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdmFsaWRhdG9yRWwudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB9XG5cbiAgICAgIHZhbGlkYXRvckVsLnNldEN1c3RvbVZhbGlkaXR5KHZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIGlmIChvcHRpb25zRXh0LnNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICB0b29sdGlwQ29udGVudEVsLnRleHRDb250ZW50ID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICAgIHRvb2x0aXBFbD8udG9nZ2xlKCEhdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIGlmICh2YWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICBzZXRUb29sdGlwKHZhbGlkYXRvckVsLCB2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzcGxheSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LmxvYWQoKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50Lm9uKCdsb2FkU2V0dGluZ3MnLCB0aGlzLm9uTG9hZFNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50Lm9uKCdzYXZlU2V0dGluZ3MnLCB0aGlzLm9uU2F2ZVNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBoaWRlKCk6IHZvaWQge1xuICAgIHN1cGVyLmhpZGUoKTtcbiAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlZC5jYW5jZWwoKTtcbiAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnVubG9hZCgpO1xuICAgIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQubG9hZCgpO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IHRoaXMuaGlkZUFzeW5jKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzeW5jIGFjdGlvbnMgdG8gcGVyZm9ybSB3aGVuIHRoZSBzZXR0aW5ncyB0YWIgaXMgYmVpbmcgaGlkZGVuLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIHRhYiBpcyBoaWRkZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGlkZUFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2F2ZVRvRmlsZShTQVZFX1RPX0ZJTEVfQ09OVEVYVCk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLmFwcC5zZXR0aW5nLm9wZW5UYWIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgbG9hZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gX2xvYWRlZFN0YXRlIC0gVGhlIGxvYWRlZCBzZXR0aW5ncyBzdGF0ZS5cbiAgICogQHBhcmFtIF9pc0luaXRpYWxMb2FkIC0gV2hldGhlciB0aGUgc2V0dGluZ3MgYXJlIGJlaW5nIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIGxvYWRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbkxvYWRTZXR0aW5ncyhfbG9hZGVkU3RhdGU6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4sIF9pc0luaXRpYWxMb2FkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV2YWxpZGF0ZXMgdGhlIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSByZXZhbGlkYXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyByZXZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlcyA9IGF3YWl0IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQucmV2YWxpZGF0ZSgpO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsaWRhdGlvbnModmFsaWRhdGlvbk1lc3NhZ2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4oXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWVcbiAgKTogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMucGx1Z2luU2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG4gICAgcmV0dXJuIHNldHRpbmdzW3Byb3BlcnR5TmFtZV0gYXMgUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+O1xuICB9XG5cbiAgcHJpdmF0ZSBvbihcbiAgICBuYW1lOiAndmFsaWRhdGlvbk1lc3NhZ2VDaGFuZ2VkJyxcbiAgICBjYWxsYmFjazogKFxuICAgICAgcHJvcGVydHlOYW1lOiBzdHJpbmcsXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nXG4gICAgKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICAgIHRoaXNBcmc/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWY7XG4gIHByaXZhdGUgb248QXJncyBleHRlbmRzIHVua25vd25bXT4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGNhbGxiYWNrOiBHZW5lcmljUHJvbWlzYWJsZVZvaWRGdW5jdGlvbjxBcmdzPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5hc3luY0V2ZW50cy5vbihuYW1lLCBjYWxsYmFjaywgdGhpc0FyZyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uU2F2ZVNldHRpbmdzKFxuICAgIG5ld1N0YXRlOiBSZWFkb25seVBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+LFxuICAgIF9vbGRTdGF0ZTogUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzPixcbiAgICBjb250ZXh0OiB1bmtub3duXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChjb250ZXh0ID09PSBTQVZFX1RPX0ZJTEVfQ09OVEVYVCkge1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVWYWxpZGF0aW9ucyhuZXdTdGF0ZS52YWxpZGF0aW9uTWVzc2FnZXMgYXMgUmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCBzdHJpbmc+KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRpc3BsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlVmFsaWRhdGlvbnModmFsaWRhdGlvbk1lc3NhZ2VzOiBSZWNvcmQ8U3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4sIHN0cmluZz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHZhbGlkYXRpb25NZXNzYWdlXSBvZiBPYmplY3QuZW50cmllcyh2YWxpZGF0aW9uTWVzc2FnZXMpKSB7XG4gICAgICBhd2FpdCB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LmFzeW5jRXZlbnRzLnRyaWdnZXJBc3luYygndmFsaWRhdGlvbk1lc3NhZ2VDaGFuZ2VkJywgcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCQSxzQkFJTztBQWFQLG1CQUdPO0FBQ1AsdUJBQXlCO0FBQ3pCLHNCQUdPO0FBQ1AsMEJBQTBCO0FBQzFCLHlCQUFrQztBQUNsQyxvQ0FBcUM7QUFDckMsdUNBQThCO0FBQzlCLGtDQUEyQztBQUMz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
413
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRGVib3VuY2VyLFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgU3RyaW5nS2V5cyB9IGZyb20gJy4uLy4uL3R5cGUudHMnO1xuaW1wb3J0IHR5cGUge1xuICBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UsXG4gIFJlYWRvbmx5UGx1Z2luU2V0dGluZ3MsXG4gIFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZVxufSBmcm9tICcuLi9jb21wb25lbnRzL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyB9IGZyb20gJy4uL3NldHRpbmctY29tcG9uZW50cy92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL3ZhbGlkYXRpb24udHMnO1xuXG5pbXBvcnQgeyBtaXhpbkFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vYXN5bmMtZXZlbnRzLnRzJztcbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHlcbn0gZnJvbSAnLi4vLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IHJlZ2lzdGVyQXN5bmNFdmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXN5bmMtZXZlbnRzLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuLi9zZXR0aW5nLWNvbXBvbmVudHMvc2V0dGluZy1jb21wb25lbnQtd3JhcHBlci50cyc7XG5pbXBvcnQgeyBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSB9IGZyb20gJy4uL3NldHRpbmctY29tcG9uZW50cy90ZXh0LWJhc2VkLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBnZXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9zZXR0aW5nLWNvbXBvbmVudHMvdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogQSBjb250ZXh0IHBhc3NlZCB0byB0aGUge0BsaW5rIFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZS5zYXZlVG9GaWxlfSBtZXRob2QuXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX1RPX0ZJTEVfQ09OVEVYVCA9ICdQbHVnaW5TZXR0aW5nc1RhYic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFBsdWdpblNldHRpbmdzVGFiQmFzZS5iaW5kYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgc2V0dGluZ3MgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZWQ/KG5ld1ZhbHVlOiBSZWFkb25seURlZXA8VD4sIG9sZFZhbHVlOiBSZWFkb25seURlZXA8VD4pOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlc2V0IHRoZSBzZXR0aW5nIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBlbXB0eS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEFwcGxpY2FibGUgb25seSB0byB0ZXh0LWJhc2VkIGNvbXBvbmVudHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgcGxhY2Vob2xkZXIgZm9yIGRlZmF1bHQgdmFsdWVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIHRleHQtYmFzZWQgY29tcG9uZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGBQbHVnaW5TZXR0aW5nc1RhYkJhc2UuYmluZGAuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBwbHVnaW4gc2V0dGluZ3MgdHlwZS5cbiAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZS5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHNldHRpbmdzIHByb3BlcnR5IG5hbWUgYmVpbmcgYm91bmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnNFeHRlbmRlZDxcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QsXG4gIFVJVmFsdWUsXG4gIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XG4+IGV4dGVuZHMgQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4ge1xuICAvKipcbiAgICogQ29udmVydHMgdGhlIFVJIGNvbXBvbmVudCdzIHZhbHVlIGJhY2sgdG8gdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyKHVpVmFsdWU6IFVJVmFsdWUpOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdIHwgVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXI7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpblNldHRpbmdzVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIFVJIGNvbXBvbmVudC5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihwbHVnaW5TZXR0aW5nc1ZhbHVlOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4pOiBVSVZhbHVlO1xufVxuXG4vKipcbiAqIFBhcmFtcyBmb3IgY3JlYXRpbmcgYSB7QGxpbmsgUGx1Z2luU2V0dGluZ3NUYWJCYXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblNldHRpbmdzVGFiQmFzZUNvbnN0cnVjdG9yUGFyYW1zPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGluc3RhbmNlIChuZWVkZWQgYnkgT2JzaWRpYW4ncyBQbHVnaW5TZXR0aW5nVGFiKS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luO1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxQbHVnaW5TZXR0aW5ncz47XG59XG5cbmludGVyZmFjZSBQbHVnaW5TZXR0aW5nc1RhYkJhc2VFdmVudE1hcCB7XG4gIHZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZDogW3Byb3BlcnR5TmFtZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nXTtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBwbHVnaW4gc2V0dGluZ3MgdGFicyBpbiBPYnNpZGlhbi5cbiAqIFByb3ZpZGVzIGEgbWV0aG9kIGZvciBiaW5kaW5nIHZhbHVlIGNvbXBvbmVudHMgdG8gcGx1Z2luIHNldHRpbmdzIGFuZCBoYW5kbGluZyBjaGFuZ2VzLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgcGx1Z2luIHNldHRpbmdzIHR5cGUuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgbWl4aW5Bc3luY0V2ZW50czxQbHVnaW5TZXR0aW5nc1RhYkJhc2VFdmVudE1hcD4oKShQbHVnaW5TZXR0aW5nVGFiKSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIGlzIG9wZW4uXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIgaXMgb3Blbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIG1hbmFnZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxQbHVnaW5TZXR0aW5ncz47XG5cbiAgLyoqXG4gICAqIEEgZGVib3VuY2UgdGltZW91dCBmb3Igc2F2aW5nIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVib3VuY2UgdGltZW91dCBmb3Igc2F2aW5nIHNldHRpbmdzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBzYXZlU2V0dGluZ3NEZWJvdW5jZVRpbWVvdXRJbk1pbGxpc2Vjb25kcygpOiBudW1iZXIge1xuICAgIGNvbnN0IERFRkFVTFQgPSAyXzAwMDtcbiAgICByZXR1cm4gREVGQVVMVDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudDogQ29tcG9uZW50RXg7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2F2ZVNldHRpbmdzRGVib3VuY2VkOiBEZWJvdW5jZXI8W10sIHZvaWQ+O1xuXG4gIHByaXZhdGUgZ2V0IHBsdWdpblNldHRpbmdzKCk6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3M8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zZXR0aW5nc1N0YXRlLmlucHV0VmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbXMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBQbHVnaW5TZXR0aW5nc1RhYkJhc2VDb25zdHJ1Y3RvclBhcmFtczxQbHVnaW5TZXR0aW5ncz4pIHtcbiAgICBzdXBlcihwYXJhbXMucGx1Z2luLmFwcCwgcGFyYW1zLnBsdWdpbik7XG4gICAgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyRWwsIENzc0NsYXNzLlBsdWdpblNldHRpbmdzVGFiKTtcbiAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlZCA9IGRlYm91bmNlKFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2F2ZVRvRmlsZShTQVZFX1RPX0ZJTEVfQ09OVEVYVCkpLFxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZVRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgICk7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgQ29tcG9uZW50RXgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudFxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eU5hbWU6IENvbmRpdGlvbmFsS2V5czxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT4sXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zPFVJVmFsdWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIG9wdGlvbnM6IEJpbmRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5TmFtZT5cbiAgKTogVFZhbHVlQ29tcG9uZW50O1xuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnQsXG4gICAgUHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgb2JzaWRpYW4tZGV2LXV0aWxzL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2ggLS0gQmluZE9wdGlvbnMgaXMgYSBnZW5lcmljIHV0aWxpdHkgc2hhcmVkIGFjcm9zcyBiaW5kaW5nIG1ldGhvZHMuXG4gICk6IFRWYWx1ZUNvbXBvbmVudCB7XG4gICAgdHlwZSBQcm9wZXJ0eVR5cGUgPSBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdO1xuICAgIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPj4gPSB7XG4gICAgICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZTogVUlWYWx1ZSk6IFByb3BlcnR5VHlwZSA9PiB2YWx1ZSBhcyBQcm9wZXJ0eVR5cGUsXG4gICAgICBvbkNoYW5nZWQ6IG5vb3AsXG4gICAgICBwbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZTogUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pOiBVSVZhbHVlID0+IHZhbHVlIGFzIFVJVmFsdWUsXG4gICAgICBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eTogdHJ1ZSxcbiAgICAgIHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM6IHRydWUsXG4gICAgICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uc0V4dDogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPj4gPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gICAgY29uc3QgdmFsaWRhdG9yRWwgPSBnZXRWYWxpZGF0b3JDb21wb25lbnQodmFsdWVDb21wb25lbnQpPy52YWxpZGF0b3JFbDtcblxuICAgIGNvbnN0IHRleHRCYXNlZENvbXBvbmVudCA9IGdldFRleHRCYXNlZENvbXBvbmVudFZhbHVlKHZhbHVlQ29tcG9uZW50KTtcblxuICAgIGNvbnN0IHJlYWRvbmx5VmFsdWUgPSB0aGlzLmdldFBsdWdpblNldHRpbmdzUHJvcGVydHkocHJvcGVydHlOYW1lKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuZGVmYXVsdFNldHRpbmdzIGFzIFBsdWdpblNldHRpbmdzO1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRzW3Byb3BlcnR5TmFtZV07XG4gICAgY29uc3QgZGVmYXVsdENvbXBvbmVudFZhbHVlID0gb3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIoZGVmYXVsdFZhbHVlIGFzIFJlYWRvbmx5RGVlcDxQcm9wZXJ0eVR5cGU+KTtcbiAgICB0ZXh0QmFzZWRDb21wb25lbnQ/LnNldFBsYWNlaG9sZGVyVmFsdWUoZGVmYXVsdENvbXBvbmVudFZhbHVlKTtcblxuICAgIGxldCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xuICAgIGxldCB0b29sdGlwRWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHRvb2x0aXBDb250ZW50RWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHZhbGlkYXRvckVsKSB7XG4gICAgICBjb25zdCB3cmFwcGVyID0gZW5zdXJlV3JhcHBlZCh2YWxpZGF0b3JFbCk7XG4gICAgICB0b29sdGlwRWwgPSB3cmFwcGVyLmNyZWF0ZURpdigpO1xuICAgICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyh0b29sdGlwRWwsIFtDc3NDbGFzcy5Ub29sdGlwLCBDc3NDbGFzcy5Ub29sdGlwVmFsaWRhdG9yXSk7XG4gICAgICB0b29sdGlwQ29udGVudEVsID0gdG9vbHRpcEVsLmNyZWF0ZVNwYW4oKTtcbiAgICAgIGNvbnN0IHRvb2x0aXBBcnJvd0VsID0gdG9vbHRpcEVsLmNyZWF0ZURpdigpO1xuICAgICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyh0b29sdGlwQXJyb3dFbCwgQ3NzQ2xhc3MuVG9vbHRpcEFycm93KTtcbiAgICAgIHRvb2x0aXBFbC5oaWRlKCk7XG4gICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHRvb2x0aXBFbCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJBc3luY0V2ZW50KFxuICAgICAgdGhpcy5jb21wb25lbnQsXG4gICAgICB0aGlzLm9uKCd2YWxpZGF0aW9uTWVzc2FnZUNoYW5nZWQnLCAoYW5vdGhlclByb3BlcnR5TmFtZSwgYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09IGFub3RoZXJQcm9wZXJ0eU5hbWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IGFub3RoZXJWYWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGxldCBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuICAgIGxldCBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgZGVlcEVxdWFsKHJlYWRvbmx5VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgIHRleHRCYXNlZENvbXBvbmVudC5lbXB0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihyZWFkb25seVZhbHVlKSk7XG4gICAgfVxuXG4gICAgbGV0IHNob3VsZFNraXBPbkNoYW5nZSA9IGZhbHNlO1xuICAgIGNvbnN0IFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMDA7XG4gICAgY29uc3QgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVmFsaWRhdG9yRWwoKTtcbiAgICAgIH0pO1xuICAgIH0sIFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgdmFsdWVDb21wb25lbnQub25DaGFuZ2UoY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICh1aVZhbHVlKSA9PiB7XG4gICAgICBpZiAoc2hvdWxkU2tpcE9uQ2hhbmdlKSB7XG4gICAgICAgIHNob3VsZFNraXBPbkNoYW5nZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNob3VsZEVtcHR5T25CbHVyID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5nZXRQbHVnaW5TZXR0aW5nc1Byb3BlcnR5KHByb3BlcnR5TmFtZSk7XG4gICAgICBsZXQgbmV3VmFsdWU6IFByb3BlcnR5VHlwZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIGxldCBzaG91bGRTZXRQcm9wZXJ0eSA9IHRydWU7XG4gICAgICBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9ICEhdGV4dEJhc2VkQ29tcG9uZW50Py5pc0VtcHR5KCkgJiYgb3B0aW9uc0V4dC5zaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eTtcbiAgICAgIGlmIChzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1cikge1xuICAgICAgICBuZXdWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlID0gb3B0aW9uc0V4dC5jb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXIodWlWYWx1ZSk7XG4gICAgICAgIGlmIChpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyKGNvbnZlcnRlZFZhbHVlKSkge1xuICAgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gY29udmVydGVkVmFsdWUudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICAgICAgc2hvdWxkU2V0UHJvcGVydHkgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGNvbnZlcnRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzaG91bGRTZXRQcm9wZXJ0eSkge1xuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IGF3YWl0IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBuZXdWYWx1ZSBhcyBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdKTtcbiAgICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgIXRleHRCYXNlZENvbXBvbmVudC5pc0VtcHR5KCkgJiYgZGVlcEVxdWFsKG5ld1ZhbHVlLCBkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgICBpZiAoc2hvdWxkU2V0UHJvcGVydHkpIHtcbiAgICAgICAgYXdhaXQgb3B0aW9uc0V4dC5vbkNoYW5nZWQobmV3VmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4sIG9sZFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkKCk7XG4gICAgfSkpO1xuXG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQoKTtcbiAgICB9KTtcbiAgICB2YWxpZGF0b3JFbD8uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlcyA9IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2V0dGluZ3NTdGF0ZS52YWxpZGF0aW9uTWVzc2FnZXMgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlc1twcm9wZXJ0eU5hbWVdID8/ICcnO1xuICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG5cbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQ7XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVWYWxpZGF0b3JFbCgpOiB2b2lkIHtcbiAgICAgIGlmICghdmFsaWRhdG9yRWw/LmlzQWN0aXZlRWxlbWVudCgpKSB7XG4gICAgICAgIGlmIChzaG91bGRFbXB0eU9uQmx1cikge1xuICAgICAgICAgIHNob3VsZEVtcHR5T25CbHVyID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoIXRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICBzaG91bGRTa2lwT25DaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdGV4dEJhc2VkQ29tcG9uZW50Py5lbXB0eSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1cikge1xuICAgICAgICAgIHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50Py5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHNob3VsZFNraXBPbkNoYW5nZSA9IHRydWU7XG4gICAgICAgICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShkZWZhdWx0Q29tcG9uZW50VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRvckVsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0Tm9uTnVsbGFibGUodG9vbHRpcENvbnRlbnRFbCk7XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uTWVzc2FnZSA9PT0gJycpIHtcbiAgICAgICAgdmFsaWRhdG9yRWwuc2V0Q3VzdG9tVmFsaWRpdHkoJycpO1xuICAgICAgICB2YWxpZGF0b3JFbC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdmFsaWRhdG9yRWwudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB9XG5cbiAgICAgIHZhbGlkYXRvckVsLnNldEN1c3RvbVZhbGlkaXR5KHZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIGlmIChvcHRpb25zRXh0LnNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICB0b29sdGlwQ29udGVudEVsLnRleHRDb250ZW50ID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICAgIHRvb2x0aXBFbD8udG9nZ2xlKCEhdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIGlmICh2YWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICBzZXRUb29sdGlwKHZhbGlkYXRvckVsLCB2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzcGxheSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmNvbXBvbmVudC5sb2FkKCk7XG4gICAgcmVnaXN0ZXJBc3luY0V2ZW50KHRoaXMuY29tcG9uZW50LCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50Lm9uKCdsb2FkU2V0dGluZ3MnLCB0aGlzLm9uTG9hZFNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICByZWdpc3RlckFzeW5jRXZlbnQodGhpcy5jb21wb25lbnQsIHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQub24oJ3NhdmVTZXR0aW5ncycsIHRoaXMub25TYXZlU2V0dGluZ3MuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGhpZGUoKTogdm9pZCB7XG4gICAgc3VwZXIuaGlkZSgpO1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkLmNhbmNlbCgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY29tcG9uZW50LnVubG9hZCgpO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IHRoaXMuaGlkZUFzeW5jKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzeW5jIGFjdGlvbnMgdG8gcGVyZm9ybSB3aGVuIHRoZSBzZXR0aW5ncyB0YWIgaXMgYmVpbmcgaGlkZGVuLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIHRhYiBpcyBoaWRkZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGlkZUFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2F2ZVRvRmlsZShTQVZFX1RPX0ZJTEVfQ09OVEVYVCk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLmFwcC5zZXR0aW5nLm9wZW5UYWIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgbG9hZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gX2xvYWRlZFN0YXRlIC0gVGhlIGxvYWRlZCBzZXR0aW5ncyBzdGF0ZS5cbiAgICogQHBhcmFtIF9pc0luaXRpYWxMb2FkIC0gV2hldGhlciB0aGUgc2V0dGluZ3MgYXJlIGJlaW5nIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIGxvYWRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbkxvYWRTZXR0aW5ncyhfbG9hZGVkU3RhdGU6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4sIF9pc0luaXRpYWxMb2FkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV2YWxpZGF0ZXMgdGhlIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSByZXZhbGlkYXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyByZXZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlcyA9IGF3YWl0IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQucmV2YWxpZGF0ZSgpO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsaWRhdGlvbnModmFsaWRhdGlvbk1lc3NhZ2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4oXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWVcbiAgKTogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMucGx1Z2luU2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG4gICAgcmV0dXJuIHNldHRpbmdzW3Byb3BlcnR5TmFtZV0gYXMgUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvblNhdmVTZXR0aW5ncyhcbiAgICBuZXdTdGF0ZTogUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzPixcbiAgICBfb2xkU3RhdGU6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29udGV4dCA9PT0gU0FWRV9UT19GSUxFX0NPTlRFWFQpIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsaWRhdGlvbnMobmV3U3RhdGUudmFsaWRhdGlvbk1lc3NhZ2VzIGFzIFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgc3RyaW5nPik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kaXNwbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVZhbGlkYXRpb25zKHZhbGlkYXRpb25NZXNzYWdlczogUmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCBzdHJpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZV0gb2YgT2JqZWN0LmVudHJpZXModmFsaWRhdGlvbk1lc3NhZ2VzKSkge1xuICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyQXN5bmMoJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsIHByb3BlcnR5TmFtZSwgdmFsaWRhdGlvbk1lc3NhZ2UgYXMgc3RyaW5nKTtcbiAgICB9XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUJBLHNCQUlPO0FBV1AsMEJBQWlDO0FBQ2pDLG1CQUdPO0FBQ1AsdUJBQXlCO0FBQ3pCLHNCQUdPO0FBQ1AsMEJBQTBCO0FBQzFCLHlCQUFrQztBQUNsQyxvQ0FBbUM7QUFDbkMsMEJBQTRCO0FBQzVCLHVDQUE4QjtBQUM5QixrQ0FBMkM7QUFDM0MsaUNBQXNDO0FBQ3RDLHdCQUEwQztBQUMxQyw0QkFBb0M7QUFLN0IsTUFBTSx1QkFBdUI7QUF1RjdCLE1BQWUsa0NBQTZELHNDQUFnRCxFQUFFLGdDQUFnQixFQUFFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXJKLElBQVcsU0FBa0I7QUFDM0IsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS21CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT25CLElBQWMsNENBQW9EO0FBQ2hFLFVBQU0sVUFBVTtBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRVEsVUFBVTtBQUFBLEVBQ0Q7QUFBQSxFQUNBO0FBQUEsRUFFakIsSUFBWSxpQkFBeUQ7QUFDbkUsV0FBTyxLQUFLLHdCQUF3QixjQUFjO0FBQUEsRUFDcEQ7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
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../library.d.cts" />
1
2
  /**
2
3
  * @file
3
4
  *
@@ -78,13 +79,17 @@ export interface PluginSettingsTabBaseConstructorParams<PluginSettings extends o
78
79
  */
79
80
  readonly pluginSettingsComponent: PluginSettingsComponentBase<PluginSettings>;
80
81
  }
82
+ interface PluginSettingsTabBaseEventMap {
83
+ validationMessageChanged: [propertyName: string, validationMessage: string];
84
+ }
85
+ declare const PluginSettingsTabBase_base: import("type-fest").AbstractConstructor<import("../../async-events.cjs").AsyncEventSource<PluginSettingsTabBaseEventMap> & import("../../async-events.cjs").AsyncEventTrigger<PluginSettingsTabBaseEventMap>> & typeof PluginSettingTab;
81
86
  /**
82
87
  * Base class for creating plugin settings tabs in Obsidian.
83
88
  * Provides a method for binding value components to plugin settings and handling changes.
84
89
  *
85
90
  * @typeParam PluginSettings - The plugin settings type.
86
91
  */
87
- export declare abstract class PluginSettingsTabBase<PluginSettings extends object> extends PluginSettingTab {
92
+ export declare abstract class PluginSettingsTabBase<PluginSettings extends object> extends PluginSettingsTabBase_base {
88
93
  /**
89
94
  * Whether the plugin settings tab is open.
90
95
  *
@@ -102,7 +107,7 @@ export declare abstract class PluginSettingsTabBase<PluginSettings extends objec
102
107
  */
103
108
  protected get saveSettingsDebounceTimeoutInMilliseconds(): number;
104
109
  private _isOpen;
105
- private readonly asyncEventsComponent;
110
+ private readonly component;
106
111
  private readonly saveSettingsDebounced;
107
112
  private get pluginSettings();
108
113
  /**
@@ -167,7 +172,7 @@ export declare abstract class PluginSettingsTabBase<PluginSettings extends objec
167
172
  */
168
173
  protected revalidate(): Promise<void>;
169
174
  private getPluginSettingsProperty;
170
- private on;
171
175
  private onSaveSettings;
172
176
  private updateValidations;
173
177
  }
178
+ export {};