obsidian-dev-utils 80.0.2 → 81.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 (217) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/dev/main.js +30208 -0
  3. package/dist/dev/manifest.json +9 -0
  4. package/dist/lib/cjs/async-events.cjs +9 -1
  5. package/dist/lib/cjs/async-events.d.cts +8 -0
  6. package/dist/lib/cjs/async.cjs +89 -34
  7. package/dist/lib/cjs/async.d.cts +67 -15
  8. package/dist/lib/cjs/debug.cjs +26 -9
  9. package/dist/lib/cjs/debug.d.cts +23 -5
  10. package/dist/lib/cjs/error.cjs +4 -5
  11. package/dist/lib/cjs/error.d.cts +19 -4
  12. package/dist/lib/cjs/html-element.cjs +1 -1
  13. package/dist/lib/cjs/html-element.d.cts +2 -0
  14. package/dist/lib/cjs/library.cjs +2 -2
  15. package/dist/lib/cjs/object-utils.cjs +233 -128
  16. package/dist/lib/cjs/object-utils.d.cts +19 -4
  17. package/dist/lib/cjs/obsidian/async-with-notice.cjs +9 -6
  18. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +9 -0
  19. package/dist/lib/cjs/obsidian/attachment-path.cjs +45 -13
  20. package/dist/lib/cjs/obsidian/attachment-path.d.cts +38 -8
  21. package/dist/lib/cjs/obsidian/backlink.cjs +6 -6
  22. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +53 -16
  23. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +81 -9
  24. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +25 -5
  25. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +35 -1
  26. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +33 -19
  27. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +43 -17
  28. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +33 -19
  29. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +43 -17
  30. package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +17 -9
  31. package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +48 -8
  32. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +3 -1
  33. package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +3 -1
  34. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +24 -8
  35. package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +25 -4
  36. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +144 -65
  37. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +3 -0
  38. package/dist/lib/cjs/obsidian/dataview-link.cjs +7 -2
  39. package/dist/lib/cjs/obsidian/dataview-link.d.cts +20 -5
  40. package/dist/lib/cjs/obsidian/dataview.cjs +27 -10
  41. package/dist/lib/cjs/obsidian/dataview.d.cts +19 -4
  42. package/dist/lib/cjs/obsidian/file-change.cjs +103 -27
  43. package/dist/lib/cjs/obsidian/file-change.d.cts +50 -13
  44. package/dist/lib/cjs/obsidian/file-manager.cjs +61 -32
  45. package/dist/lib/cjs/obsidian/file-manager.d.cts +63 -13
  46. package/dist/lib/cjs/obsidian/file-system.cjs +122 -23
  47. package/dist/lib/cjs/obsidian/file-system.d.cts +168 -39
  48. package/dist/lib/cjs/obsidian/frontmatter.cjs +7 -2
  49. package/dist/lib/cjs/obsidian/link.cjs +266 -122
  50. package/dist/lib/cjs/obsidian/link.d.cts +84 -20
  51. package/dist/lib/cjs/obsidian/logger.cjs +48 -22
  52. package/dist/lib/cjs/obsidian/logger.d.cts +26 -5
  53. package/dist/lib/cjs/obsidian/loop.cjs +14 -4
  54. package/dist/lib/cjs/obsidian/loop.d.cts +5 -0
  55. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +155 -107
  56. package/dist/lib/cjs/obsidian/markdown.cjs +40 -11
  57. package/dist/lib/cjs/obsidian/markdown.d.cts +76 -16
  58. package/dist/lib/cjs/obsidian/metadata-cache.cjs +28 -14
  59. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +76 -16
  60. package/dist/lib/cjs/obsidian/path-settings.cjs +5 -2
  61. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.cjs +5 -1
  62. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.d.cts +4 -0
  63. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +15 -7
  64. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.d.cts +39 -8
  65. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +3 -2
  66. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +4 -4
  67. package/dist/lib/cjs/obsidian/queue.cjs +9 -7
  68. package/dist/lib/cjs/obsidian/resource-url.cjs +7 -2
  69. package/dist/lib/cjs/obsidian/resource-url.d.cts +19 -4
  70. package/dist/lib/cjs/obsidian/status-bar-item-registrar.cjs +4 -2
  71. package/dist/lib/cjs/obsidian/status-bar-item-registrar.d.cts +6 -2
  72. package/dist/lib/cjs/obsidian/vault-delete.cjs +19 -15
  73. package/dist/lib/cjs/obsidian/vault-delete.d.cts +11 -6
  74. package/dist/lib/cjs/obsidian/vault.cjs +116 -59
  75. package/dist/lib/cjs/obsidian/vault.d.cts +178 -41
  76. package/dist/lib/cjs/path.cjs +12 -5
  77. package/dist/lib/cjs/path.d.cts +15 -3
  78. package/dist/lib/cjs/reg-exp.cjs +101 -78
  79. package/dist/lib/cjs/script-utils/build.cjs +9 -5
  80. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +34 -14
  81. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +20 -5
  82. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +23 -5
  83. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +11 -4
  84. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +6 -2
  85. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +31 -12
  86. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +19 -4
  87. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -7
  88. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +12 -3
  89. package/dist/lib/cjs/script-utils/cli-utils.cjs +6 -2
  90. package/dist/lib/cjs/script-utils/exec.cjs +47 -12
  91. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +3 -3
  92. package/dist/lib/cjs/script-utils/json.cjs +9 -5
  93. package/dist/lib/cjs/script-utils/json.d.cts +38 -8
  94. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.cjs +8 -3
  95. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +27 -7
  96. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +7 -3
  97. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +8 -3
  98. package/dist/lib/cjs/script-utils/linters/eslint.cjs +3 -3
  99. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +3 -3
  100. package/dist/lib/cjs/script-utils/linters/over-exposure.cjs +72 -30
  101. package/dist/lib/cjs/script-utils/npm-publish.cjs +2 -2
  102. package/dist/lib/cjs/script-utils/npm.cjs +18 -9
  103. package/dist/lib/cjs/script-utils/root.cjs +20 -5
  104. package/dist/lib/cjs/script-utils/root.d.cts +45 -9
  105. package/dist/lib/cjs/script-utils/validate-declarations.cjs +4 -3
  106. package/dist/lib/cjs/script-utils/version.cjs +36 -19
  107. package/dist/lib/cjs/strict-proxy.cjs +10 -1
  108. package/dist/lib/cjs/string.cjs +63 -22
  109. package/dist/lib/cjs/string.d.cts +188 -40
  110. package/dist/lib/esm/async-events.d.mts +8 -0
  111. package/dist/lib/esm/async-events.mjs +9 -1
  112. package/dist/lib/esm/async.d.mts +67 -15
  113. package/dist/lib/esm/async.mjs +89 -34
  114. package/dist/lib/esm/debug.d.mts +23 -5
  115. package/dist/lib/esm/debug.mjs +26 -9
  116. package/dist/lib/esm/error.d.mts +19 -4
  117. package/dist/lib/esm/error.mjs +4 -5
  118. package/dist/lib/esm/html-element.d.mts +2 -0
  119. package/dist/lib/esm/html-element.mjs +1 -1
  120. package/dist/lib/esm/library.mjs +2 -2
  121. package/dist/lib/esm/object-utils.d.mts +19 -4
  122. package/dist/lib/esm/object-utils.mjs +233 -128
  123. package/dist/lib/esm/obsidian/async-with-notice.d.mts +9 -0
  124. package/dist/lib/esm/obsidian/async-with-notice.mjs +9 -6
  125. package/dist/lib/esm/obsidian/attachment-path.d.mts +38 -8
  126. package/dist/lib/esm/obsidian/attachment-path.mjs +45 -13
  127. package/dist/lib/esm/obsidian/backlink.mjs +6 -6
  128. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +81 -9
  129. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +53 -16
  130. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +35 -1
  131. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +25 -5
  132. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +43 -17
  133. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +33 -19
  134. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +43 -17
  135. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +33 -19
  136. package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +48 -8
  137. package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +17 -9
  138. package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +3 -1
  139. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +3 -1
  140. package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +25 -4
  141. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +24 -8
  142. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +3 -0
  143. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +145 -69
  144. package/dist/lib/esm/obsidian/dataview-link.d.mts +20 -5
  145. package/dist/lib/esm/obsidian/dataview-link.mjs +7 -2
  146. package/dist/lib/esm/obsidian/dataview.d.mts +19 -4
  147. package/dist/lib/esm/obsidian/dataview.mjs +27 -10
  148. package/dist/lib/esm/obsidian/file-change.d.mts +50 -13
  149. package/dist/lib/esm/obsidian/file-change.mjs +104 -27
  150. package/dist/lib/esm/obsidian/file-manager.d.mts +63 -13
  151. package/dist/lib/esm/obsidian/file-manager.mjs +65 -33
  152. package/dist/lib/esm/obsidian/file-system.d.mts +168 -39
  153. package/dist/lib/esm/obsidian/file-system.mjs +122 -23
  154. package/dist/lib/esm/obsidian/frontmatter.mjs +7 -2
  155. package/dist/lib/esm/obsidian/link.d.mts +84 -20
  156. package/dist/lib/esm/obsidian/link.mjs +266 -122
  157. package/dist/lib/esm/obsidian/logger.d.mts +26 -5
  158. package/dist/lib/esm/obsidian/logger.mjs +48 -22
  159. package/dist/lib/esm/obsidian/loop.d.mts +5 -0
  160. package/dist/lib/esm/obsidian/loop.mjs +14 -4
  161. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +155 -107
  162. package/dist/lib/esm/obsidian/markdown.d.mts +76 -16
  163. package/dist/lib/esm/obsidian/markdown.mjs +40 -11
  164. package/dist/lib/esm/obsidian/metadata-cache.d.mts +76 -16
  165. package/dist/lib/esm/obsidian/metadata-cache.mjs +28 -14
  166. package/dist/lib/esm/obsidian/path-settings.mjs +5 -2
  167. package/dist/lib/esm/obsidian/plugin/plugin-event-source.d.mts +4 -0
  168. package/dist/lib/esm/obsidian/plugin/plugin-event-source.mjs +5 -1
  169. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.d.mts +39 -8
  170. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +15 -7
  171. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +4 -4
  172. package/dist/lib/esm/obsidian/plugin/plugin.mjs +5 -7
  173. package/dist/lib/esm/obsidian/queue.mjs +9 -7
  174. package/dist/lib/esm/obsidian/resource-url.d.mts +19 -4
  175. package/dist/lib/esm/obsidian/resource-url.mjs +7 -2
  176. package/dist/lib/esm/obsidian/status-bar-item-registrar.d.mts +6 -2
  177. package/dist/lib/esm/obsidian/status-bar-item-registrar.mjs +4 -2
  178. package/dist/lib/esm/obsidian/vault-delete.d.mts +11 -6
  179. package/dist/lib/esm/obsidian/vault-delete.mjs +19 -15
  180. package/dist/lib/esm/obsidian/vault.d.mts +178 -41
  181. package/dist/lib/esm/obsidian/vault.mjs +116 -59
  182. package/dist/lib/esm/path.d.mts +15 -3
  183. package/dist/lib/esm/path.mjs +12 -5
  184. package/dist/lib/esm/reg-exp.mjs +101 -78
  185. package/dist/lib/esm/script-utils/build.mjs +9 -5
  186. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +34 -14
  187. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +23 -5
  188. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +20 -5
  189. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +11 -4
  190. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +6 -2
  191. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +19 -4
  192. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +31 -12
  193. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +7 -7
  194. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +12 -3
  195. package/dist/lib/esm/script-utils/cli-utils.mjs +6 -2
  196. package/dist/lib/esm/script-utils/exec.mjs +47 -12
  197. package/dist/lib/esm/script-utils/formatters/dprint.mjs +3 -3
  198. package/dist/lib/esm/script-utils/json.d.mts +38 -8
  199. package/dist/lib/esm/script-utils/json.mjs +9 -5
  200. package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.mjs +8 -3
  201. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +27 -7
  202. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +7 -3
  203. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +8 -3
  204. package/dist/lib/esm/script-utils/linters/eslint.mjs +3 -3
  205. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +3 -3
  206. package/dist/lib/esm/script-utils/linters/over-exposure.mjs +72 -30
  207. package/dist/lib/esm/script-utils/npm-publish.mjs +2 -2
  208. package/dist/lib/esm/script-utils/npm.mjs +18 -9
  209. package/dist/lib/esm/script-utils/root.d.mts +45 -9
  210. package/dist/lib/esm/script-utils/root.mjs +20 -5
  211. package/dist/lib/esm/script-utils/validate-declarations.mjs +4 -3
  212. package/dist/lib/esm/script-utils/version.mjs +36 -19
  213. package/dist/lib/esm/strict-proxy.mjs +10 -1
  214. package/dist/lib/esm/string.d.mts +188 -40
  215. package/dist/lib/esm/string.mjs +63 -22
  216. package/dist/styles.css +5 -1
  217. package/package.json +9 -9
@@ -36,6 +36,74 @@ export interface FullRenderParams {
36
36
  */
37
37
  readonly sourcePath?: string;
38
38
  }
39
+ /**
40
+ * Parameters for {@link markdownToHtml}.
41
+ */
42
+ export interface MarkdownToHtmlParams {
43
+ /**
44
+ * The Obsidian app instance.
45
+ */
46
+ readonly app: App;
47
+ /**
48
+ * The Markdown string to convert.
49
+ */
50
+ readonly markdown: string;
51
+ /**
52
+ * The source path to resolve relative links.
53
+ */
54
+ readonly sourcePath?: string;
55
+ }
56
+ /**
57
+ * Parameters for {@link registerLinkHandlers}.
58
+ */
59
+ export interface RegisterLinkHandlersParams {
60
+ /**
61
+ * The Obsidian app instance.
62
+ */
63
+ readonly app: App;
64
+ /**
65
+ * The HTMLElement to register link handlers for.
66
+ */
67
+ readonly el: HTMLElement;
68
+ /**
69
+ * The source path to resolve relative links from.
70
+ */
71
+ readonly sourcePath?: string;
72
+ }
73
+ /**
74
+ * Parameters for {@link renderExternalLink}.
75
+ */
76
+ export interface RenderExternalLinkParams {
77
+ /**
78
+ * The Obsidian app instance.
79
+ */
80
+ readonly app: App;
81
+ /**
82
+ * The text to display for the external link.
83
+ */
84
+ readonly displayText?: string;
85
+ /**
86
+ * The URL to render the external link for.
87
+ */
88
+ readonly url: string;
89
+ }
90
+ /**
91
+ * Parameters for {@link renderInternalLink}.
92
+ */
93
+ export interface RenderInternalLinkParams {
94
+ /**
95
+ * The Obsidian app instance.
96
+ */
97
+ readonly app: App;
98
+ /**
99
+ * The text to display for the internal link.
100
+ */
101
+ readonly displayText?: string;
102
+ /**
103
+ * The path or abstract file to render the internal link for.
104
+ */
105
+ readonly pathOrAbstractFile: PathOrAbstractFile;
106
+ }
39
107
  /**
40
108
  * Render the markdown and embeds.
41
109
  *
@@ -46,35 +114,27 @@ export declare function fullRender(params: FullRenderParams): Promise<void>;
46
114
  /**
47
115
  * Converts Markdown to HTML.
48
116
  *
49
- * @param app - The Obsidian app instance.
50
- * @param markdown - The Markdown string to convert.
51
- * @param sourcePath - (optional) The source path to resolve relative links.
117
+ * @param params - The parameters for the conversion.
52
118
  * @returns The HTML string.
53
119
  */
54
- export declare function markdownToHtml(app: App, markdown: string, sourcePath?: string): Promise<string>;
120
+ export declare function markdownToHtml(params: MarkdownToHtmlParams): Promise<string>;
55
121
  /**
56
122
  * Registers link handlers for the given element.
57
123
  *
58
- * @param app - The Obsidian app instance.
59
- * @param el - The HTMLElement to register link handlers for.
60
- * @param sourcePath - The source path to resolve relative links from.
124
+ * @param params - The parameters for registering link handlers.
61
125
  */
62
- export declare function registerLinkHandlers(app: App, el: HTMLElement, sourcePath?: string): Promise<void>;
126
+ export declare function registerLinkHandlers(params: RegisterLinkHandlersParams): Promise<void>;
63
127
  /**
64
128
  * Renders an external link.
65
129
  *
66
- * @param app - The Obsidian app instance.
67
- * @param url - The URL to render the external link for.
68
- * @param displayText - The text to display for the external link.
130
+ * @param params - The parameters for rendering the external link.
69
131
  * @returns The HTMLAnchorElement containing the rendered external link.
70
132
  */
71
- export declare function renderExternalLink(app: App, url: string, displayText?: string): Promise<HTMLAnchorElement>;
133
+ export declare function renderExternalLink(params: RenderExternalLinkParams): Promise<HTMLAnchorElement>;
72
134
  /**
73
135
  * Renders an internal link.
74
136
  *
75
- * @param app - The Obsidian app instance.
76
- * @param pathOrAbstractFile - The path or abstract file to render the internal link for.
77
- * @param displayText - The text to display for the internal link.
137
+ * @param params - The parameters for rendering the internal link.
78
138
  * @returns The HTMLAnchorElement containing the rendered internal link.
79
139
  */
80
- export declare function renderInternalLink(app: App, pathOrAbstractFile: PathOrAbstractFile, displayText?: string): Promise<HTMLAnchorElement>;
140
+ export declare function renderInternalLink(params: RenderInternalLinkParams): Promise<HTMLAnchorElement>;
@@ -143,6 +143,7 @@ module.exports = __toCommonJS(metadata_cache_exports);
143
143
  var import_implementations = require('@obsidian-typings/obsidian-public-latest/implementations');
144
144
  var import_object_utils = require('../object-utils.cjs');
145
145
  var import_obsidian_dev_utils_state = require('../obsidian-dev-utils-state.cjs');
146
+ var import_strict_proxy = require('../strict-proxy.cjs');
146
147
  var import_type_guards = require('../type-guards.cjs');
147
148
  var import_async_with_notice = require('./async-with-notice.cjs');
148
149
  var import_file_system = require('./file-system.cjs');
@@ -186,10 +187,11 @@ function getAllLinks(cache) {
186
187
  return links;
187
188
  }
188
189
  function getBacklinksForFileOrPath(app, pathOrFile) {
189
- const file = (0, import_file_system.getFile)(app, pathOrFile, true);
190
- return tempRegisterFilesAndRun(app, [file], () => app.metadataCache.getBacklinksForFile(file));
190
+ const file = (0, import_file_system.getFile)({ app, pathOrFile, shouldIncludeNonExisting: true });
191
+ return tempRegisterFilesAndRun({ app, files: [file], fn: () => app.metadataCache.getBacklinksForFile(file) });
191
192
  }
192
- async function getBacklinksForFileSafe(app, pathOrFile, options = {}) {
193
+ async function getBacklinksForFileSafe(params) {
194
+ const { app, pathOrFile, ...options } = params;
193
195
  const safeOverload = app.metadataCache.getBacklinksForFile.safe;
194
196
  if (safeOverload) {
195
197
  return safeOverload(pathOrFile);
@@ -198,13 +200,13 @@ async function getBacklinksForFileSafe(app, pathOrFile, options = {}) {
198
200
  await (0, import_async_with_notice.retryWithTimeoutNotice)({
199
201
  async operationFn(abortSignal) {
200
202
  abortSignal.throwIfAborted();
201
- const file = (0, import_file_system.getFile)(app, pathOrFile);
203
+ const file = (0, import_file_system.getFile)({ app, pathOrFile });
202
204
  await ensureMetadataCacheReady(app);
203
205
  abortSignal.throwIfAborted();
204
206
  backlinks = getBacklinksForFileOrPath(app, file);
205
207
  for (const notePath of backlinks.keys()) {
206
208
  abortSignal.throwIfAborted();
207
- const note = (0, import_file_system.getFileOrNull)(app, notePath);
209
+ const note = (0, import_file_system.getFileOrNull)({ app, pathOrFile: notePath });
208
210
  if (!note) {
209
211
  return false;
210
212
  }
@@ -242,13 +244,14 @@ async function getBacklinksForFileSafe(app, pathOrFile, options = {}) {
242
244
  return true;
243
245
  },
244
246
  operationName: (0, import_i18n.t)(($) => $.obsidianDevUtils.metadataCache.getBacklinksForFilePath, { filePath: (0, import_file_system.getPath)(app, pathOrFile) }),
247
+ pluginNoticeComponent: (0, import_strict_proxy.strictProxy)({}),
245
248
  retryOptions: options,
246
249
  shouldShowTimeoutNotice: options.shouldShowTimeoutNotice ?? true
247
250
  });
248
251
  return backlinks;
249
252
  }
250
253
  async function getCacheSafe(app, fileOrPath) {
251
- const file = (0, import_file_system.getFileOrNull)(app, fileOrPath);
254
+ const file = (0, import_file_system.getFileOrNull)({ app, pathOrFile: fileOrPath });
252
255
  try {
253
256
  if (!file) {
254
257
  return null;
@@ -280,8 +283,9 @@ async function parseMetadata(app, str) {
280
283
  const buffer = encoder.encode(str).buffer;
281
284
  return await app.metadataCache.computeMetadataAsync(buffer) ?? {};
282
285
  }
283
- function registerFileCacheForNonExistingFile(app, pathOrFile, cache) {
284
- const file = (0, import_file_system.getFile)(app, pathOrFile, true);
286
+ function registerFileCacheForNonExistingFile(params) {
287
+ const { app, cache, pathOrFile } = params;
288
+ const file = (0, import_file_system.getFile)({ app, pathOrFile, shouldIncludeNonExisting: true });
285
289
  if (!file.deleted) {
286
290
  throw new Error("File is existing");
287
291
  }
@@ -303,11 +307,16 @@ function registerFiles(app, files) {
303
307
  if ((0, import_file_system.isFile)(file)) {
304
308
  app.metadataCache.uniqueFileLookup.add(file.name.toLowerCase(), file);
305
309
  }
306
- file = (0, import_file_system.getFolder)(app, (0, import_implementations.parentFolderPath)(file.path), true);
310
+ file = (0, import_file_system.getFolder)({
311
+ app,
312
+ pathOrFolder: (0, import_implementations.parentFolderPath)(file.path),
313
+ shouldIncludeNonExisting: true
314
+ });
307
315
  }
308
316
  }
309
317
  }
310
- function tempRegisterFilesAndRun(app, files, fn) {
318
+ function tempRegisterFilesAndRun(params) {
319
+ const { app, files, fn } = params;
311
320
  try {
312
321
  registerFiles(app, files);
313
322
  return fn();
@@ -315,7 +324,8 @@ function tempRegisterFilesAndRun(app, files, fn) {
315
324
  unregisterFiles(app, files);
316
325
  }
317
326
  }
318
- async function tempRegisterFilesAndRunAsync(app, files, fn) {
327
+ async function tempRegisterFilesAndRunAsync(params) {
328
+ const { app, files, fn } = params;
319
329
  try {
320
330
  registerFiles(app, files);
321
331
  return await fn();
@@ -324,7 +334,7 @@ async function tempRegisterFilesAndRunAsync(app, files, fn) {
324
334
  }
325
335
  }
326
336
  function unregisterFileCacheForNonExistingFile(app, pathOrFile) {
327
- const file = (0, import_file_system.getFile)(app, pathOrFile, true);
337
+ const file = (0, import_file_system.getFile)({ app, pathOrFile, shouldIncludeNonExisting: true });
328
338
  if (!file.deleted) {
329
339
  throw new Error("File is existing");
330
340
  }
@@ -345,7 +355,11 @@ function unregisterFiles(app, files) {
345
355
  app.metadataCache.uniqueFileLookup.remove(file.name.toLowerCase(), file);
346
356
  }
347
357
  }
348
- file = (0, import_file_system.getFolder)(app, (0, import_implementations.parentFolderPath)(file.path), true);
358
+ file = (0, import_file_system.getFolder)({
359
+ app,
360
+ pathOrFolder: (0, import_implementations.parentFolderPath)(file.path),
361
+ shouldIncludeNonExisting: true
362
+ });
349
363
  }
350
364
  }
351
365
  }
@@ -368,4 +382,4 @@ function getRegisteredFilesCounts() {
368
382
  unregisterFileCacheForNonExistingFile,
369
383
  unregisterFiles
370
384
  });
371
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21ldGFkYXRhLWNhY2hlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgQ3VzdG9tQXJyYXlEaWN0SW1wbCxcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vYXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHsgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSB9IGZyb20gJy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUgfSBmcm9tICcuLi9vYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0Tm90aWNlIH0gZnJvbSAnLi9hc3luYy13aXRoLW5vdGljZS50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzRmlsZVxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyxcbiAgdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzXG59IGZyb20gJy4vZnJvbnRtYXR0ZXItbGluay1jYWNoZS13aXRoLW9mZnNldHMudHMnO1xuaW1wb3J0IHsgcGFyc2VGcm9udG1hdHRlciB9IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IHNvcnRSZWZlcmVuY2VzIH0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHtcbiAgcmVhZFNhZmUsXG4gIHNhdmVOb3RlXG59IGZyb20gJy4vdmF1bHQudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVPcHRpb25zIGV4dGVuZHMgUmV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGZvciB0aGUgZ2V0QmFja2xpbmtzRm9yRmlsZSBtZXRob2QgdGhhdCBwcm92aWRlcyBhIHNhZmUgb3ZlcmxvYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVXcmFwcGVyIHtcbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgYmFja2xpbmtzIGZvciBhIGZpbGUgc2FmZWx5LlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IGRpY3Rpb25hcnkgb2YgYmFja2xpbmtzLlxuICAgKi9cbiAgc2FmZShwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTxDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPj47XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeSBmb3IgYWxsIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHA6IEFwcCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGFwcC5tZXRhZGF0YUNhY2hlLm9uQ2xlYW5DYWNoZShyZXNvbHZlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFsbCBsaW5rcyBmcm9tIHRoZSBwcm92aWRlZCBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgY2FjaGVkIG1ldGFkYXRhLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVmZXJlbmNlIGNhY2hlcyByZXByZXNlbnRpbmcgdGhlIGxpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsTGlua3MoY2FjaGU6IENhY2hlZE1ldGFkYXRhKTogUmVmZXJlbmNlW10ge1xuICBsZXQgbGlua3M6IFJlZmVyZW5jZVtdID0gW107XG5cbiAgaWYgKGNhY2hlLmxpbmtzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5saW5rcyk7XG4gIH1cblxuICBpZiAoY2FjaGUuZW1iZWRzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5lbWJlZHMpO1xuICB9XG5cbiAgaWYgKGNhY2hlLmZyb250bWF0dGVyTGlua3MpIHtcbiAgICBsaW5rcy5wdXNoKC4uLmNhY2hlLmZyb250bWF0dGVyTGlua3MpO1xuICB9XG5cbiAgc29ydFJlZmVyZW5jZXMobGlua3MpO1xuXG4gIC8vIEJVRzogaHR0cHM6Ly9mb3J1bS5vYnNpZGlhbi5tZC90L2J1Zy1kdXBsaWNhdGVkLWxpbmtzLWluLW1ldGFkYXRhY2FjaGUtaW5zaWRlLWZvb3Rub3Rlcy84NTU1MVxuICBsaW5rcyA9IGxpbmtzLmZpbHRlcigobGluaywgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzTGluayA9IGVuc3VyZU5vbk51bGxhYmxlKGxpbmtzW2luZGV4IC0gMV0pO1xuXG4gICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUobGluaykgJiYgaXNSZWZlcmVuY2VDYWNoZShwcmV2aW91c0xpbmspKSB7XG4gICAgICByZXR1cm4gbGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQgIT09IHByZXZpb3VzTGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykgJiYgaXNGcm9udG1hdHRlckxpbmtDYWNoZShwcmV2aW91c0xpbmspKSB7XG4gICAgICBjb25zdCBsaW5rU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMobGluaykgPyBsaW5rLnN0YXJ0T2Zmc2V0IDogMDtcbiAgICAgIGNvbnN0IHByZXZpb3VzTGlua1N0YXJ0T2Zmc2V0ID0gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKHByZXZpb3VzTGluaykgPyBwcmV2aW91c0xpbmsuc3RhcnRPZmZzZXQgOiAwO1xuICAgICAgcmV0dXJuIGxpbmsua2V5ICE9PSBwcmV2aW91c0xpbmsua2V5IHx8IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKSAhPT0gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKHByZXZpb3VzTGluaylcbiAgICAgICAgfHwgbGlua1N0YXJ0T2Zmc2V0ICE9PSBwcmV2aW91c0xpbmtTdGFydE9mZnNldDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGxpbmtzO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYmFja2xpbmtzIGZvciBhIGZpbGUgb3IgcGF0aC5cbiAqIE5PVEU6IFRoZSBmaWxlIG1heSBiZSBub24tZXhpc3RlbnQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgYmFja2xpbmtzIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSwgdHJ1ZSk7XG4gIHJldHVybiB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bihhcHAsIFtmaWxlXSwgKCkgPT4gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZShmaWxlKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBzYWZlbHkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE90aGVyIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IGRpY3Rpb25hcnkgb2YgYmFja2xpbmtzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUoXG4gIGFwcDogQXBwLFxuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLFxuICBvcHRpb25zOiBHZXRCYWNrbGlua3NGb3JGaWxlU2FmZU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPj4ge1xuICBjb25zdCBzYWZlT3ZlcmxvYWQgPSAoYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZSBhcyBQYXJ0aWFsPEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlcj4pLnNhZmU7XG4gIGlmIChzYWZlT3ZlcmxvYWQpIHtcbiAgICByZXR1cm4gc2FmZU92ZXJsb2FkKHBhdGhPckZpbGUpO1xuICB9XG4gIGxldCBiYWNrbGlua3M6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+ID0gbmV3IEN1c3RvbUFycmF5RGljdEltcGw8UmVmZXJlbmNlPigpO1xuICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0Tm90aWNlKHtcbiAgICBhc3luYyBvcGVyYXRpb25GbihhYm9ydFNpZ25hbCkge1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBiYWNrbGlua3MgPSBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRoKGFwcCwgZmlsZSk7XG4gICAgICBmb3IgKGNvbnN0IG5vdGVQYXRoIG9mIGJhY2tsaW5rcy5rZXlzKCkpIHtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgY29uc3Qgbm90ZSA9IGdldEZpbGVPck51bGwoYXBwLCBub3RlUGF0aCk7XG4gICAgICAgIGlmICghbm90ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgbm90ZSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgbm90ZSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGlmICghY29udGVudCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gYmFja2xpbmtzLmdldChub3RlUGF0aCk7XG4gICAgICAgIGlmICghbGlua3MpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICBsZXQgYWN0dWFsTGluazogc3RyaW5nO1xuICAgICAgICAgIGlmIChpc1JlZmVyZW5jZUNhY2hlKGxpbmspKSB7XG4gICAgICAgICAgICBhY3R1YWxMaW5rID0gY29udGVudC5zbGljZShsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWUgPSBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBsaW5rLmtleSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGlua1dpdGhPZmZzZXRzID0gdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspO1xuICAgICAgICAgICAgYWN0dWFsTGluayA9IHByb3BlcnR5VmFsdWUuc2xpY2UobGlua1dpdGhPZmZzZXRzLnN0YXJ0T2Zmc2V0LCBsaW5rV2l0aE9mZnNldHMuZW5kT2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3R1YWxMaW5rICE9PSBsaW5rLm9yaWdpbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZVBhdGgsIHsgZmlsZVBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSB9KSxcbiAgICByZXRyeU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IG9wdGlvbnMuc2hvdWxkU2hvd1RpbWVvdXROb3RpY2UgPz8gdHJ1ZVxuICB9KTtcblxuICByZXR1cm4gYmFja2xpbmtzO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY2FjaGVkIG1ldGFkYXRhIGZvciBhIGdpdmVuIGZpbGUgb3IgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlT3JQYXRoIC0gVGhlIGZpbGUgb3IgcGF0aCB0byByZXRyaWV2ZSB0aGUgbWV0YWRhdGEgZm9yLlxuICogQHJldHVybnMgVGhlIGNhY2hlZCBtZXRhZGF0YSBmb3IgdGhlIGZpbGUsIG9yIGBudWxsYCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q2FjaGVTYWZlKGFwcDogQXBwLCBmaWxlT3JQYXRoOiBQYXRoT3JGaWxlKTogUHJvbWlzZTxDYWNoZWRNZXRhZGF0YSB8IG51bGw+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBmaWxlT3JQYXRoKTtcblxuICB0cnkge1xuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcbiAgICB9XG5cbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuXG4gICAgY29uc3QgZmlsZUNhY2hlRW50cnkgPSBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVbZmlsZS5wYXRoXTtcbiAgICBjb25zdCBpc1VwVG9EYXRlID0gZmlsZUNhY2hlRW50cnk/Lm10aW1lID09PSBmaWxlLnN0YXQubXRpbWVcbiAgICAgICYmIGZpbGVDYWNoZUVudHJ5LnNpemUgPT09IGZpbGUuc3RhdC5zaXplXG4gICAgICAmJiBhcHAubWV0YWRhdGFDYWNoZS5tZXRhZGF0YUNhY2hlW2ZpbGVDYWNoZUVudHJ5Lmhhc2hdO1xuICAgIGlmICghaXNVcFRvRGF0ZSkge1xuICAgICAgYXdhaXQgYXBwLm1ldGFkYXRhQ2FjaGUuY29tcHV0ZUZpbGVNZXRhZGF0YUFzeW5jKGZpbGUpO1xuICAgICAgYXdhaXQgZW5zdXJlTWV0YWRhdGFDYWNoZVJlYWR5KGFwcCk7XG4gICAgfVxuICAgIHJldHVybiBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZyb250IG1hdHRlciBmcm9tIHRoZSBtZXRhZGF0YSBjYWNoZSBzYWZlbHkuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byByZXRyaWV2ZSB0aGUgZnJvbnQgbWF0dGVyIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgY29tYmluZWQgZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RnJvbnRtYXR0ZXJTYWZlPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4oYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+PiB7XG4gIGNvbnN0IGNhY2hlID0gYXdhaXQgZ2V0Q2FjaGVTYWZlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIHJldHVybiAoY2FjaGU/LmZyb250bWF0dGVyID8/IHt9KSBhcyBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPjtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIG1ldGFkYXRhIGZvciBhIGdpdmVuIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHBhcnNlIHRoZSBtZXRhZGF0YSBmb3IuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIG1ldGFkYXRhLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VNZXRhZGF0YShhcHA6IEFwcCwgc3RyOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlZE1ldGFkYXRhPiB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgY29uc3QgYnVmZmVyID0gZW5jb2Rlci5lbmNvZGUoc3RyKS5idWZmZXI7XG4gIHJldHVybiBhd2FpdCBhcHAubWV0YWRhdGFDYWNoZS5jb21wdXRlTWV0YWRhdGFBc3luYyhidWZmZXIpID8/IHt9O1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZmlsZSBjYWNoZSBmb3IgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byByZWdpc3RlciB0aGUgZmlsZSBjYWNoZSBmb3IuXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgZmlsZSBjYWNoZSB0byByZWdpc3Rlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBjYWNoZTogQ2FjaGVkTWV0YWRhdGEpOiB2b2lkIHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlLCB0cnVlKTtcbiAgaWYgKCFmaWxlLmRlbGV0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbGUgaXMgZXhpc3RpbmcnKTtcbiAgfVxuXG4gIGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZVtmaWxlLnBhdGhdID0ge1xuICAgIGhhc2g6IGZpbGUucGF0aCxcbiAgICBtdGltZTogMCxcbiAgICBzaXplOiAwXG4gIH07XG5cbiAgYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZVtmaWxlLnBhdGhdID0gY2FjaGU7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGZpbGVzIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gcmVnaXN0ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZpbGVzKGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdKTogdm9pZCB7XG4gIGNvbnN0IHJlZ2lzdGVyZWRGaWxlc0NvdW50cyA9IGdldFJlZ2lzdGVyZWRGaWxlc0NvdW50cygpO1xuXG4gIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICB3aGlsZSAoZmlsZS5kZWxldGVkKSB7XG4gICAgICBsZXQgY291bnQgPSByZWdpc3RlcmVkRmlsZXNDb3VudHMuZ2V0KGZpbGUucGF0aCkgPz8gMDtcbiAgICAgIGNvdW50Kys7XG4gICAgICByZWdpc3RlcmVkRmlsZXNDb3VudHMuc2V0KGZpbGUucGF0aCwgY291bnQpO1xuXG4gICAgICBhcHAudmF1bHQuZmlsZU1hcFtmaWxlLnBhdGhdID0gZmlsZTtcblxuICAgICAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgICAgICBhcHAubWV0YWRhdGFDYWNoZS51bmlxdWVGaWxlTG9va3VwLmFkZChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKSwgZmlsZSk7XG4gICAgICB9XG5cbiAgICAgIGZpbGUgPSBnZXRGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKGZpbGUucGF0aCksIHRydWUpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRlbXBvcmFyaWx5IHJlZ2lzdGVycyBmaWxlcyBhbmQgcnVucyBhIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gdGVtcG9yYXJpbHkgcmVnaXN0ZXIuXG4gKiBAcGFyYW0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gcnVuLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bjxUPihhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSwgZm46ICgpID0+IFQpOiBUIHtcbiAgdHJ5IHtcbiAgICByZWdpc3RlckZpbGVzKGFwcCwgZmlsZXMpO1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIHVucmVnaXN0ZXJGaWxlcyhhcHAsIGZpbGVzKTtcbiAgfVxufVxuXG4vKipcbiAqIFRlbXBvcmFyaWx5IHJlZ2lzdGVycyBmaWxlcyBhbmQgcnVucyBhbiBhc3luYyBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIHRlbXBvcmFyaWx5IHJlZ2lzdGVyLlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIHJ1bi5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW5Bc3luYzxUPihhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSwgZm46ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgdHJ5IHtcbiAgICByZWdpc3RlckZpbGVzKGFwcCwgZmlsZXMpO1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIHVucmVnaXN0ZXJGaWxlcyhhcHAsIGZpbGVzKTtcbiAgfVxufVxuXG4vKipcbiAqIFVucmVnaXN0ZXJzIHRoZSBmaWxlIGNhY2hlIGZvciBhIG5vbi1leGlzdGluZyBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHVucmVnaXN0ZXIgdGhlIGZpbGUgY2FjaGUgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5yZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IHZvaWQge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUsIHRydWUpO1xuICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmlsZSBpcyBleGlzdGluZycpO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgZGVsZXRlIGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZVtmaWxlLnBhdGhdO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlIC0tIFdlIGhhdmUgbm8gb3RoZXIgd2F5IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkuXG4gIGRlbGV0ZSBhcHAubWV0YWRhdGFDYWNoZS5tZXRhZGF0YUNhY2hlW2ZpbGUucGF0aF07XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgZmlsZXMgZnJvbSB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIHVucmVnaXN0ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnJlZ2lzdGVyRmlsZXMoYXBwOiBBcHAsIGZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiB2b2lkIHtcbiAgY29uc3QgcmVnaXN0ZXJlZEZpbGVzQ291bnRzID0gZ2V0UmVnaXN0ZXJlZEZpbGVzQ291bnRzKCk7XG5cbiAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgIHdoaWxlIChmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGxldCBjb3VudCA9IHJlZ2lzdGVyZWRGaWxlc0NvdW50cy5nZXQoZmlsZS5wYXRoKSA/PyAxO1xuICAgICAgY291bnQtLTtcbiAgICAgIHJlZ2lzdGVyZWRGaWxlc0NvdW50cy5zZXQoZmlsZS5wYXRoLCBjb3VudCk7XG4gICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgcmVnaXN0ZXJlZEZpbGVzQ291bnRzLmRlbGV0ZShmaWxlLnBhdGgpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlIC0tIFdlIGhhdmUgbm8gb3RoZXIgd2F5IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkuXG4gICAgICAgIGRlbGV0ZSBhcHAudmF1bHQuZmlsZU1hcFtmaWxlLnBhdGhdO1xuXG4gICAgICAgIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICAgICAgICBhcHAubWV0YWRhdGFDYWNoZS51bmlxdWVGaWxlTG9va3VwLnJlbW92ZShmaWxlLm5hbWUudG9Mb3dlckNhc2UoKSwgZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZmlsZSA9IGdldEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgoZmlsZS5wYXRoKSwgdHJ1ZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJlZ2lzdGVyZWRGaWxlc0NvdW50cygpOiBNYXA8c3RyaW5nLCBudW1iZXI+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSgncmVnaXN0ZXJlZEZpbGVzQ291bnRzJywgbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSkudmFsdWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQSw2QkFLTztBQU1QLDBCQUF1QztBQUN2QyxzQ0FBeUM7QUFDekMseUJBQWtDO0FBQ2xDLCtCQUF1QztBQUN2Qyx5QkFNTztBQUNQLGlEQUdPO0FBQ1AseUJBQWlDO0FBQ2pDLGtCQUFrQjtBQUNsQix1QkFBK0I7QUFDL0IsbUJBR087QUErQlAsZUFBc0IseUJBQXlCLEtBQXlCO0FBQ3RFLFFBQU0sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM3QixRQUFJLGNBQWMsYUFBYSxPQUFPO0FBQUEsRUFDeEMsQ0FBQztBQUNIO0FBUU8sU0FBUyxZQUFZLE9BQW9DO0FBQzlELE1BQUksUUFBcUIsQ0FBQztBQUUxQixNQUFJLE1BQU0sT0FBTztBQUNmLFVBQU0sS0FBSyxHQUFHLE1BQU0sS0FBSztBQUFBLEVBQzNCO0FBRUEsTUFBSSxNQUFNLFFBQVE7QUFDaEIsVUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNO0FBQUEsRUFDNUI7QUFFQSxNQUFJLE1BQU0sa0JBQWtCO0FBQzFCLFVBQU0sS0FBSyxHQUFHLE1BQU0sZ0JBQWdCO0FBQUEsRUFDdEM7QUFFQSx1Q0FBZSxLQUFLO0FBR3BCLFVBQVEsTUFBTSxPQUFPLENBQUMsTUFBTSxVQUFVO0FBQ3BDLFFBQUksVUFBVSxHQUFHO0FBQ2YsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLG1CQUFlLHND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
385
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21ldGFkYXRhLWNhY2hlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgQ3VzdG9tQXJyYXlEaWN0SW1wbCxcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vYXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5Ob3RpY2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHsgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSB9IGZyb20gJy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUgfSBmcm9tICcuLi9vYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHMnO1xuaW1wb3J0IHsgc3RyaWN0UHJveHkgfSBmcm9tICcuLi9zdHJpY3QtcHJveHkudHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0Tm90aWNlIH0gZnJvbSAnLi9hc3luYy13aXRoLW5vdGljZS50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzRmlsZVxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyxcbiAgdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzXG59IGZyb20gJy4vZnJvbnRtYXR0ZXItbGluay1jYWNoZS13aXRoLW9mZnNldHMudHMnO1xuaW1wb3J0IHsgcGFyc2VGcm9udG1hdHRlciB9IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IHNvcnRSZWZlcmVuY2VzIH0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHtcbiAgcmVhZFNhZmUsXG4gIHNhdmVOb3RlXG59IGZyb20gJy4vdmF1bHQudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVPcHRpb25zIGV4dGVuZHMgUmV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlUGFyYW1zIGV4dGVuZHMgR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogV3JhcHBlciBmb3IgdGhlIGdldEJhY2tsaW5rc0ZvckZpbGUgbWV0aG9kIHRoYXQgcHJvdmlkZXMgYSBzYWZlIG92ZXJsb2FkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlciB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAgICovXG4gIHNhZmUocGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4+O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSBjYWNoZSB0byByZWdpc3Rlci5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlOiBDYWNoZWRNZXRhZGF0YTtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byByZWdpc3RlciB0aGUgZmlsZSBjYWNoZSBmb3IuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bkFzeW5jfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRvIHJ1bi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bkFzeW5jUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGZpbGVzIHRvIHRlbXBvcmFyaWx5IHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIHJ1bi5cbiAgICovXG4gIGZuKHRoaXM6IHZvaWQpOiBQcm9taXNlPFQ+O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bn0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0byBydW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW5QYXJhbXM8VD4ge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZXMgdG8gdGVtcG9yYXJpbHkgcmVnaXN0ZXIuXG4gICAqL1xuICByZWFkb25seSBmaWxlczogVEFic3RyYWN0RmlsZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gcnVuLlxuICAgKi9cbiAgZm4odGhpczogdm9pZCk6IFQ7XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeSBmb3IgYWxsIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHA6IEFwcCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGFwcC5tZXRhZGF0YUNhY2hlLm9uQ2xlYW5DYWNoZShyZXNvbHZlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFsbCBsaW5rcyBmcm9tIHRoZSBwcm92aWRlZCBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgY2FjaGVkIG1ldGFkYXRhLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVmZXJlbmNlIGNhY2hlcyByZXByZXNlbnRpbmcgdGhlIGxpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsTGlua3MoY2FjaGU6IENhY2hlZE1ldGFkYXRhKTogUmVmZXJlbmNlW10ge1xuICBsZXQgbGlua3M6IFJlZmVyZW5jZVtdID0gW107XG5cbiAgaWYgKGNhY2hlLmxpbmtzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5saW5rcyk7XG4gIH1cblxuICBpZiAoY2FjaGUuZW1iZWRzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5lbWJlZHMpO1xuICB9XG5cbiAgaWYgKGNhY2hlLmZyb250bWF0dGVyTGlua3MpIHtcbiAgICBsaW5rcy5wdXNoKC4uLmNhY2hlLmZyb250bWF0dGVyTGlua3MpO1xuICB9XG5cbiAgc29ydFJlZmVyZW5jZXMobGlua3MpO1xuXG4gIC8vIEJVRzogaHR0cHM6Ly9mb3J1bS5vYnNpZGlhbi5tZC90L2J1Zy1kdXBsaWNhdGVkLWxpbmtzLWluLW1ldGFkYXRhY2FjaGUtaW5zaWRlLWZvb3Rub3Rlcy84NTU1MVxuICBsaW5rcyA9IGxpbmtzLmZpbHRlcigobGluaywgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzTGluayA9IGVuc3VyZU5vbk51bGxhYmxlKGxpbmtzW2luZGV4IC0gMV0pO1xuXG4gICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUobGluaykgJiYgaXNSZWZlcmVuY2VDYWNoZShwcmV2aW91c0xpbmspKSB7XG4gICAgICByZXR1cm4gbGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQgIT09IHByZXZpb3VzTGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykgJiYgaXNGcm9udG1hdHRlckxpbmtDYWNoZShwcmV2aW91c0xpbmspKSB7XG4gICAgICBjb25zdCBsaW5rU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMobGluaykgPyBsaW5rLnN0YXJ0T2Zmc2V0IDogMDtcbiAgICAgIGNvbnN0IHByZXZpb3VzTGlua1N0YXJ0T2Zmc2V0ID0gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKHByZXZpb3VzTGluaykgPyBwcmV2aW91c0xpbmsuc3RhcnRPZmZzZXQgOiAwO1xuICAgICAgcmV0dXJuIGxpbmsua2V5ICE9PSBwcmV2aW91c0xpbmsua2V5IHx8IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKSAhPT0gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKHByZXZpb3VzTGluaylcbiAgICAgICAgfHwgbGlua1N0YXJ0T2Zmc2V0ICE9PSBwcmV2aW91c0xpbmtTdGFydE9mZnNldDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGxpbmtzO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYmFja2xpbmtzIGZvciBhIGZpbGUgb3IgcGF0aC5cbiAqIE5PVEU6IFRoZSBmaWxlIG1heSBiZSBub24tZXhpc3RlbnQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgYmFja2xpbmtzIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKHsgYXBwLCBwYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG4gIHJldHVybiB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bih7IGFwcCwgZmlsZXM6IFtmaWxlXSwgZm46ICgpID0+IGFwcC5tZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSkgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBzYWZlbHkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZXRyaWV2aW5nIHRoZSBiYWNrbGlua3MuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IGRpY3Rpb25hcnkgb2YgYmFja2xpbmtzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUocGFyYW1zOiBHZXRCYWNrbGlua3NGb3JGaWxlU2FmZVBhcmFtcyk6IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4+IHtcbiAgY29uc3QgeyBhcHAsIHBhdGhPckZpbGUsIC4uLm9wdGlvbnMgfSA9IHBhcmFtcztcbiAgY29uc3Qgc2FmZU92ZXJsb2FkID0gKGFwcC5tZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUgYXMgUGFydGlhbDxHZXRCYWNrbGlua3NGb3JGaWxlU2FmZVdyYXBwZXI+KS5zYWZlO1xuICBpZiAoc2FmZU92ZXJsb2FkKSB7XG4gICAgcmV0dXJuIHNhZmVPdmVybG9hZChwYXRoT3JGaWxlKTtcbiAgfVxuICBsZXQgYmFja2xpbmtzOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiA9IG5ldyBDdXN0b21BcnJheURpY3RJbXBsPFJlZmVyZW5jZT4oKTtcbiAgYXdhaXQgcmV0cnlXaXRoVGltZW91dE5vdGljZSh7XG4gICAgYXN5bmMgb3BlcmF0aW9uRm4oYWJvcnRTaWduYWwpIHtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBjb25zdCBmaWxlID0gZ2V0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZSB9KTtcbiAgICAgIGF3YWl0IGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHApO1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGJhY2tsaW5rcyA9IGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwLCBmaWxlKTtcbiAgICAgIGZvciAoY29uc3Qgbm90ZVBhdGggb2YgYmFja2xpbmtzLmtleXMoKSkge1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICBjb25zdCBub3RlID0gZ2V0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogbm90ZVBhdGggfSk7XG4gICAgICAgIGlmICghbm90ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgbm90ZSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgbm90ZSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGlmICghY29udGVudCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gYmFja2xpbmtzLmdldChub3RlUGF0aCk7XG4gICAgICAgIGlmICghbGlua3MpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICBsZXQgYWN0dWFsTGluazogc3RyaW5nO1xuICAgICAgICAgIGlmIChpc1JlZmVyZW5jZUNhY2hlKGxpbmspKSB7XG4gICAgICAgICAgICBhY3R1YWxMaW5rID0gY29udGVudC5zbGljZShsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWUgPSBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBsaW5rLmtleSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGlua1dpdGhPZmZzZXRzID0gdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspO1xuICAgICAgICAgICAgYWN0dWFsTGluayA9IHByb3BlcnR5VmFsdWUuc2xpY2UobGlua1dpdGhPZmZzZXRzLnN0YXJ0T2Zmc2V0LCBsaW5rV2l0aE9mZnNldHMuZW5kT2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3R1YWxMaW5rICE9PSBsaW5rLm9yaWdpbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZVBhdGgsIHsgZmlsZVBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSB9KSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IHN0cmljdFByb3h5PFBsdWdpbk5vdGljZUNvbXBvbmVudD4oe30pLFxuICAgIHJldHJ5T3B0aW9uczogb3B0aW9ucyxcbiAgICBzaG91bGRTaG93VGltZW91dE5vdGljZTogb3B0aW9ucy5zaG91bGRTaG93VGltZW91dE5vdGljZSA/PyB0cnVlXG4gIH0pO1xuXG4gIHJldHVybiBiYWNrbGlua3M7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBjYWNoZWQgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gZmlsZSBvciBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVPclBhdGggLSBUaGUgZmlsZSBvciBwYXRoIHRvIHJldHJpZXZlIHRoZSBtZXRhZGF0YSBmb3IuXG4gKiBAcmV0dXJucyBUaGUgY2FjaGVkIG1ldGFkYXRhIGZvciB0aGUgZmlsZSwgb3IgYG51bGxgIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDYWNoZVNhZmUoYXBwOiBBcHAsIGZpbGVPclBhdGg6IFBhdGhPckZpbGUpOiBQcm9taXNlPENhY2hlZE1ldGFkYXRhIHwgbnVsbD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogZmlsZU9yUGF0aCB9KTtcblxuICB0cnkge1xuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcbiAgICB9XG5cbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuXG4gICAgY29uc3QgZmlsZUNhY2hlRW50cnkgPSBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVbZmlsZS5wYXRoXTtcbiAgICBjb25zdCBpc1VwVG9EYXRlID0gZmlsZUNhY2hlRW50cnk/Lm10aW1lID09PSBmaWxlLnN0YXQubXRpbWVcbiAgICAgICYmIGZpbGVDYWNoZUVudHJ5LnNpemUgPT09IGZpbGUuc3RhdC5zaXplXG4gICAgICAmJiBhcHAubWV0YWRhdGFDYWNoZS5tZXRhZGF0YUNhY2hlW2ZpbGVDYWNoZUVudHJ5Lmhhc2hdO1xuICAgIGlmICghaXNVcFRvRGF0ZSkge1xuICAgICAgYXdhaXQgYXBwLm1ldGFkYXRhQ2FjaGUuY29tcHV0ZUZpbGVNZXRhZGF0YUFzeW5jKGZpbGUpO1xuICAgICAgYXdhaXQgZW5zdXJlTWV0YWRhdGFDYWNoZVJlYWR5KGFwcCk7XG4gICAgfVxuICAgIHJldHVybiBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZyb250IG1hdHRlciBmcm9tIHRoZSBtZXRhZGF0YSBjYWNoZSBzYWZlbHkuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byByZXRyaWV2ZSB0aGUgZnJvbnQgbWF0dGVyIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgY29tYmluZWQgZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RnJvbnRtYXR0ZXJTYWZlPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4oYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+PiB7XG4gIGNvbnN0IGNhY2hlID0gYXdhaXQgZ2V0Q2FjaGVTYWZlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIHJldHVybiAoY2FjaGU/LmZyb250bWF0dGVyID8/IHt9KSBhcyBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPjtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIG1ldGFkYXRhIGZvciBhIGdpdmVuIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHBhcnNlIHRoZSBtZXRhZGF0YSBmb3IuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIG1ldGFkYXRhLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VNZXRhZGF0YShhcHA6IEFwcCwgc3RyOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlZE1ldGFkYXRhPiB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgY29uc3QgYnVmZmVyID0gZW5jb2Rlci5lbmNvZGUoc3RyKS5idWZmZXI7XG4gIHJldHVybiBhd2FpdCBhcHAubWV0YWRhdGFDYWNoZS5jb21wdXRlTWV0YWRhdGFBc3luYyhidWZmZXIpID8/IHt9O1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZmlsZSBjYWNoZSBmb3IgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlZ2lzdGVyaW5nIHRoZSBmaWxlIGNhY2hlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUocGFyYW1zOiBSZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7IGFwcCwgY2FjaGUsIHBhdGhPckZpbGUgfSA9IHBhcmFtcztcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUsIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZSB9KTtcbiAgaWYgKCFmaWxlLmRlbGV0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbGUgaXMgZXhpc3RpbmcnKTtcbiAgfVxuXG4gIGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZVtmaWxlLnBhdGhdID0ge1xuICAgIGhhc2g6IGZpbGUucGF0aCxcbiAgICBtdGltZTogMCxcbiAgICBzaXplOiAwXG4gIH07XG5cbiAgYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZVtmaWxlLnBhdGhdID0gY2FjaGU7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGZpbGVzIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gcmVnaXN0ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZpbGVzKGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdKTogdm9pZCB7XG4gIGNvbnN0IHJlZ2lzdGVyZWRGaWxlc0NvdW50cyA9IGdldFJlZ2lzdGVyZWRGaWxlc0NvdW50cygpO1xuXG4gIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICB3aGlsZSAoZmlsZS5kZWxldGVkKSB7XG4gICAgICBsZXQgY291bnQgPSByZWdpc3RlcmVkRmlsZXNDb3VudHMuZ2V0KGZpbGUucGF0aCkgPz8gMDtcbiAgICAgIGNvdW50Kys7XG4gICAgICByZWdpc3RlcmVkRmlsZXNDb3VudHMuc2V0KGZpbGUucGF0aCwgY291bnQpO1xuXG4gICAgICBhcHAudmF1bHQuZmlsZU1hcFtmaWxlLnBhdGhdID0gZmlsZTtcblxuICAgICAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgICAgICBhcHAubWV0YWRhdGFDYWNoZS51bmlxdWVGaWxlTG9va3VwLmFkZChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKSwgZmlsZSk7XG4gICAgICB9XG5cbiAgICAgIGZpbGUgPSBnZXRGb2xkZXIoe1xuICAgICAgICBhcHAsXG4gICAgICAgIHBhdGhPckZvbGRlcjogcGFyZW50Rm9sZGVyUGF0aChmaWxlLnBhdGgpLFxuICAgICAgICBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRlbXBvcmFyaWx5IHJlZ2lzdGVycyBmaWxlcyBhbmQgcnVucyBhIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0ZW1wb3JhcmlseSByZWdpc3RlcmluZyB0aGUgZmlsZXMgYW5kIHJ1bm5pbmcgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bjxUPihwYXJhbXM6IFRlbXBSZWdpc3RlckZpbGVzQW5kUnVuUGFyYW1zPFQ+KTogVCB7XG4gIGNvbnN0IHsgYXBwLCBmaWxlcywgZm4gfSA9IHBhcmFtcztcbiAgdHJ5IHtcbiAgICByZWdpc3RlckZpbGVzKGFwcCwgZmlsZXMpO1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIHVucmVnaXN0ZXJGaWxlcyhhcHAsIGZpbGVzKTtcbiAgfVxufVxuXG4vKipcbiAqIFRlbXBvcmFyaWx5IHJlZ2lzdGVycyBmaWxlcyBhbmQgcnVucyBhbiBhc3luYyBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGVtcG9yYXJpbHkgcmVnaXN0ZXJpbmcgdGhlIGZpbGVzIGFuZCBydW5uaW5nIHRoZSBhc3luYyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW5Bc3luYzxUPihwYXJhbXM6IFRlbXBSZWdpc3RlckZpbGVzQW5kUnVuQXN5bmNQYXJhbXM8VD4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgeyBhcHAsIGZpbGVzLCBmbiB9ID0gcGFyYW1zO1xuICB0cnkge1xuICAgIHJlZ2lzdGVyRmlsZXMoYXBwLCBmaWxlcyk7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgdW5yZWdpc3RlckZpbGVzKGFwcCwgZmlsZXMpO1xuICB9XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgdGhlIGZpbGUgY2FjaGUgZm9yIGEgbm9uLWV4aXN0aW5nIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gdW5yZWdpc3RlciB0aGUgZmlsZSBjYWNoZSBmb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogdm9pZCB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKHsgYXBwLCBwYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG4gIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGV4aXN0aW5nJyk7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICBkZWxldGUgYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW2ZpbGUucGF0aF07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgZGVsZXRlIGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbZmlsZS5wYXRoXTtcbn1cblxuLyoqXG4gKiBVbnJlZ2lzdGVycyBmaWxlcyBmcm9tIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gdW5yZWdpc3Rlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucmVnaXN0ZXJGaWxlcyhhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IHZvaWQge1xuICBjb25zdCByZWdpc3RlcmVkRmlsZXNDb3VudHMgPSBnZXRSZWdpc3RlcmVkRmlsZXNDb3VudHMoKTtcblxuICBmb3IgKGxldCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgd2hpbGUgKGZpbGUuZGVsZXRlZCkge1xuICAgICAgbGV0IGNvdW50ID0gcmVnaXN0ZXJlZEZpbGVzQ291bnRzLmdldChmaWxlLnBhdGgpID8/IDE7XG4gICAgICBjb3VudC0tO1xuICAgICAgcmVnaXN0ZXJlZEZpbGVzQ291bnRzLnNldChmaWxlLnBhdGgsIGNvdW50KTtcbiAgICAgIGlmIChjb3VudCA9PT0gMCkge1xuICAgICAgICByZWdpc3RlcmVkRmlsZXNDb3VudHMuZGVsZXRlKGZpbGUucGF0aCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgICAgICAgZGVsZXRlIGFwcC52YXVsdC5maWxlTWFwW2ZpbGUucGF0aF07XG5cbiAgICAgICAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgICAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAucmVtb3ZlKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmaWxlID0gZ2V0Rm9sZGVyKHtcbiAgICAgICAgYXBwLFxuICAgICAgICBwYXRoT3JGb2xkZXI6IHBhcmVudEZvbGRlclBhdGgoZmlsZS5wYXRoKSxcbiAgICAgICAgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0UmVnaXN0ZXJlZEZpbGVzQ291bnRzKCk6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlKCdyZWdpc3RlcmVkRmlsZXNDb3VudHMnLCBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpKS52YWx1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBLDZCQUtPO0FBT1AsMEJBQXVDO0FBQ3ZDLHNDQUF5QztBQUN6QywwQkFBNEI7QUFDNUIseUJBQWtDO0FBQ2xDLCtCQUF1QztBQUN2Qyx5QkFNTztBQUNQLGlEQUdPO0FBQ1AseUJBQWlDO0FBQ2pDLGtCQUFrQjtBQUNsQix1QkFBK0I7QUFDL0IsbUJBR087QUE4R1AsZUFBc0IseUJBQXlCLEtBQXlCO0FBQ3RFLFFBQU0sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM3QixRQUFJLGNBQWMsYUFBYSxPQUFPO0FBQUEsRUFDeEMsQ0FBQztBQUNIO0FBUU8sU0FBUyxZQUFZLE9BQW9DO0FBQzlELE1BQUksUUFBcUIsQ0FBQztBQUUxQixNQUFJLE1BQU0sT0FBTztBQUNmLFVBQU0sS0FBSyxHQUFHLE1BQU0sS0FBSztBQUFBLEVBQzNCO0FBRUEsTUFBSSxNQUFNLFFBQVE7QUFDaEIsVUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNO0FBQUEsRUFDNUI7QUFFQSxNQUFJLE1BQU0sa0JBQWtCO0FBQzFCLFVBQU0sS0FBSyxH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O0FBQUEsRUFDRjtBQUNGO0FBU08sU0FBUyx3QkFBMkIsUUFBNkM7QUFDdEYsUUFBTSxFQUFFLEtBQUssT0FBTyxHQUFHLElBQUk7QUFDM0IsTUFBSTtBQUNGLGtCQUFjLEtBQUssS0FBSztBQUN4QixXQUFPLEdBQUc7QUFBQSxFQUNaLFVBQUU7QUFDQSxvQkFBZ0IsS0FBSyxLQUFLO0FBQUEsRUFDNUI7QUFDRjtBQVNBLGVBQXNCLDZCQUFnQyxRQUEyRDtBQUMvRyxRQUFNLEVBQUUsS0FBSyxPQUFPLEdBQUcsSUFBSTtBQUMzQixNQUFJO0FBQ0Ysa0JBQWMsS0FBSyxLQUFLO0FBQ3hCLFdBQU8sTUFBTSxHQUFHO0FBQUEsRUFDbEIsVUFBRTtBQUNBLG9CQUFnQixLQUFLLEtBQUs7QUFBQSxFQUM1QjtBQUNGO0FBUU8sU0FBUyxzQ0FBc0MsS0FBVSxZQUE4QjtBQUM1RixRQUFNLFdBQU8sNEJBQVEsRUFBRSxLQUFLLFlBQVksMEJBQTBCLEtBQUssQ0FBQztBQUN4RSxNQUFJLENBQUMsS0FBSyxTQUFTO0FBQ2pCLFVBQU0sSUFBSSxNQUFNLGtCQUFrQjtBQUFBLEVBQ3BDO0FBRUEsU0FBTyxJQUFJLGNBQWMsVUFBVSxLQUFLLElBQUk7QUFFNUMsU0FBTyxJQUFJLGNBQWMsY0FBYyxLQUFLLElBQUk7QUFDbEQ7QUFRTyxTQUFTLGdCQUFnQixLQUFVLE9BQThCO0FBQ3RFLFFBQU0sd0JBQXdCLHlCQUF5QjtBQUV2RCxXQUFTLFFBQVEsT0FBTztBQUN0QixXQUFPLEtBQUssU0FBUztBQUNuQixVQUFJLFFBQVEsc0JBQXNCLElBQUksS0FBSyxJQUFJLEtBQUs7QUFDcEQ7QUFDQSw0QkFBc0IsSUFBSSxLQUFLLE1BQU0sS0FBSztBQUMxQyxVQUFJLFVBQVUsR0FBRztBQUNmLDhCQUFzQixPQUFPLEtBQUssSUFBSTtBQUV0QyxlQUFPLElBQUksTUFBTSxRQUFRLEtBQUssSUFBSTtBQUVsQyxnQkFBSSwyQkFBTyxJQUFJLEdBQUc7QUFDaEIsY0FBSSxjQUFjLGlCQUFpQixPQUFPLEtBQUssS0FBSyxZQUFZLEdBQUcsSUFBSTtBQUFBLFFBQ3pFO0FBQUEsTUFDRjtBQUVBLGlCQUFPLDhCQUFVO0FBQUEsUUFDZjtBQUFBLFFBQ0Esa0JBQWMseUNBQWlCLEtBQUssSUFBSTtBQUFBLFFBQ3hDLDBCQUEwQjtBQUFBLE1BQzVCLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUywyQkFBZ0Q7QUFDdkQsYUFBTywwREFBeUIseUJBQXlCLG9CQUFJLElBQW9CLENBQUMsRUFBRTtBQUN0RjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -18,6 +18,19 @@ export interface GetBacklinksForFileSafeOptions extends RetryOptions {
18
18
  */
19
19
  readonly shouldShowTimeoutNotice?: boolean;
20
20
  }
21
+ /**
22
+ * Parameters for {@link getBacklinksForFileSafe}.
23
+ */
24
+ export interface GetBacklinksForFileSafeParams extends GetBacklinksForFileSafeOptions {
25
+ /**
26
+ * The Obsidian application instance.
27
+ */
28
+ readonly app: App;
29
+ /**
30
+ * The path or file object.
31
+ */
32
+ readonly pathOrFile: PathOrFile;
33
+ }
21
34
  /**
22
35
  * Wrapper for the getBacklinksForFile method that provides a safe overload.
23
36
  */
@@ -30,6 +43,61 @@ export interface GetBacklinksForFileSafeWrapper {
30
43
  */
31
44
  safe(pathOrFile: PathOrFile): Promise<CustomArrayDict<Reference>>;
32
45
  }
46
+ /**
47
+ * Parameters for {@link registerFileCacheForNonExistingFile}.
48
+ */
49
+ export interface RegisterFileCacheForNonExistingFileParams {
50
+ /**
51
+ * The Obsidian app instance.
52
+ */
53
+ readonly app: App;
54
+ /**
55
+ * The file cache to register.
56
+ */
57
+ readonly cache: CachedMetadata;
58
+ /**
59
+ * The path or file to register the file cache for.
60
+ */
61
+ readonly pathOrFile: PathOrFile;
62
+ }
63
+ /**
64
+ * Parameters for {@link tempRegisterFilesAndRunAsync}.
65
+ *
66
+ * @typeParam T - The return type of the function to run.
67
+ */
68
+ export interface TempRegisterFilesAndRunAsyncParams<T> {
69
+ /**
70
+ * The Obsidian app instance.
71
+ */
72
+ readonly app: App;
73
+ /**
74
+ * The files to temporarily register.
75
+ */
76
+ readonly files: TAbstractFile[];
77
+ /**
78
+ * The function to run.
79
+ */
80
+ fn(this: void): Promise<T>;
81
+ }
82
+ /**
83
+ * Parameters for {@link tempRegisterFilesAndRun}.
84
+ *
85
+ * @typeParam T - The return type of the function to run.
86
+ */
87
+ export interface TempRegisterFilesAndRunParams<T> {
88
+ /**
89
+ * The Obsidian app instance.
90
+ */
91
+ readonly app: App;
92
+ /**
93
+ * The files to temporarily register.
94
+ */
95
+ readonly files: TAbstractFile[];
96
+ /**
97
+ * The function to run.
98
+ */
99
+ fn(this: void): T;
100
+ }
33
101
  /**
34
102
  * Ensures that the metadata cache is ready for all files.
35
103
  *
@@ -56,12 +124,10 @@ export declare function getBacklinksForFileOrPath(app: App, pathOrFile: PathOrFi
56
124
  /**
57
125
  * Retrieves the backlinks for a file safely.
58
126
  *
59
- * @param app - The Obsidian application instance.
60
- * @param pathOrFile - The path or file object.
61
- * @param options - Other options.
127
+ * @param params - The parameters for retrieving the backlinks.
62
128
  * @returns A {@link Promise} that resolves to an array dictionary of backlinks.
63
129
  */
64
- export declare function getBacklinksForFileSafe(app: App, pathOrFile: PathOrFile, options?: GetBacklinksForFileSafeOptions): Promise<CustomArrayDict<Reference>>;
130
+ export declare function getBacklinksForFileSafe(params: GetBacklinksForFileSafeParams): Promise<CustomArrayDict<Reference>>;
65
131
  /**
66
132
  * Retrieves the cached metadata for a given file or path.
67
133
  *
@@ -90,11 +156,9 @@ export declare function parseMetadata(app: App, str: string): Promise<CachedMeta
90
156
  /**
91
157
  * Registers the file cache for a non-existing file.
92
158
  *
93
- * @param app - The Obsidian app instance.
94
- * @param pathOrFile - The path or file to register the file cache for.
95
- * @param cache - The file cache to register.
159
+ * @param params - The parameters for registering the file cache.
96
160
  */
97
- export declare function registerFileCacheForNonExistingFile(app: App, pathOrFile: PathOrFile, cache: CachedMetadata): void;
161
+ export declare function registerFileCacheForNonExistingFile(params: RegisterFileCacheForNonExistingFileParams): void;
98
162
  /**
99
163
  * Registers files in the Obsidian app.
100
164
  *
@@ -106,22 +170,18 @@ export declare function registerFiles(app: App, files: TAbstractFile[]): void;
106
170
  * Temporarily registers files and runs a function.
107
171
  *
108
172
  * @typeParam T - The type of the result of the function.
109
- * @param app - The Obsidian app instance.
110
- * @param files - The files to temporarily register.
111
- * @param fn - The function to run.
173
+ * @param params - The parameters for temporarily registering the files and running the function.
112
174
  * @returns The result of the function.
113
175
  */
114
- export declare function tempRegisterFilesAndRun<T>(app: App, files: TAbstractFile[], fn: () => T): T;
176
+ export declare function tempRegisterFilesAndRun<T>(params: TempRegisterFilesAndRunParams<T>): T;
115
177
  /**
116
178
  * Temporarily registers files and runs an async function.
117
179
  *
118
180
  * @typeParam T - The type of the result of the function.
119
- * @param app - The Obsidian app instance.
120
- * @param files - The files to temporarily register.
121
- * @param fn - The function to run.
181
+ * @param params - The parameters for temporarily registering the files and running the async function.
122
182
  * @returns The result of the function.
123
183
  */
124
- export declare function tempRegisterFilesAndRunAsync<T>(app: App, files: TAbstractFile[], fn: () => Promise<T>): Promise<T>;
184
+ export declare function tempRegisterFilesAndRunAsync<T>(params: TempRegisterFilesAndRunAsyncParams<T>): Promise<T>;
125
185
  /**
126
186
  * Unregisters the file cache for a non-existing file.
127
187
  *
@@ -227,7 +227,10 @@ function makeRegExp(paths, defaultRegExp) {
227
227
  if (path.startsWith("/") && path.endsWith("/")) {
228
228
  return path.slice(1, -1);
229
229
  }
230
- path = (0, import_string.trimEnd)(path, "/");
230
+ path = (0, import_string.trimEnd)({
231
+ str: path,
232
+ suffix: "/"
233
+ });
231
234
  return `^${(0, import_reg_exp.escapeRegExp)(path)}(/|$)`;
232
235
  }).map((regExpStr) => `(${regExpStr})`).join("|");
233
236
  return new RegExp(regExpStrCombined);
@@ -236,4 +239,4 @@ function makeRegExp(paths, defaultRegExp) {
236
239
  0 && (module.exports = {
237
240
  PathSettings
238
241
  });
239
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BhdGgtc2V0dGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqL1xuXG5pbXBvcnQge1xuICBBTFdBWVNfTUFUQ0hfUkVHX0VYUCxcbiAgZXNjYXBlUmVnRXhwLFxuICBORVZFUl9NQVRDSF9SRUdfRVhQXG59IGZyb20gJy4uL3JlZy1leHAudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcblxuZW51bSBQYXRoU2V0dGluZ1R5cGUge1xuICBFeGNsdWRlID0gJ0V4Y2x1ZGUnLFxuICBJbmNsdWRlID0gJ0luY2x1ZGUnXG59XG5cbmNsYXNzIFBhdGhTZXR0aW5nIHtcbiAgcHVibGljIGdldCBhcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycmF5O1xuICB9XG5cbiAgcHVibGljIHNldCBhcnJheSh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9hcnJheSA9IHZhbHVlLmZpbHRlcihCb29sZWFuKTtcbiAgICB0aGlzLnJlZ0V4cCA9IG1ha2VSZWdFeHAodGhpcy5fYXJyYXksIHRoaXMuZGVmYXVsdFJlZ0V4cCk7XG4gIH1cblxuICBwcml2YXRlIF9hcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0UmVnRXhwOiBSZWdFeHA7XG4gIHByaXZhdGUgcmVnRXhwOiBSZWdFeHA7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHlwZTogUGF0aFNldHRpbmdUeXBlKSB7XG4gICAgdGhpcy5kZWZhdWx0UmVnRXhwID0gZ2V0RGVmYXVsdFJlZ0V4cCh0eXBlKTtcbiAgICB0aGlzLnJlZ0V4cCA9IHRoaXMuZGVmYXVsdFJlZ0V4cDtcbiAgfVxuXG4gIHB1YmxpYyBpc1BhdGhJZ25vcmVkKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgYnJhbmNoZXMgY292ZXJlZCBidXQgdjggcmVwb3J0cyBzd2l0Y2ggYXMgcGFydGlhbC4gKi9cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGU6XG4gICAgICAgIHJldHVybiB0aGlzLnJlZ0V4cC50ZXN0KHBhdGgpO1xuICAgICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuSW5jbHVkZTpcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlZ0V4cC50ZXN0KHBhdGgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgICBhc3NlcnROZXZlcih0aGlzLnR5cGUpO1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgY2xhc3MgZm9yIG1hbmFnaW5nIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICovXG5leHBvcnQgY2xhc3MgUGF0aFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBleGNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIGdldCBleGNsdWRlUGF0aHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZXhjbHVkZSBwYXRocy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqL1xuICBwdWJsaWMgc2V0IGV4Y2x1ZGVQYXRocyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaW5jbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBnZXQgaW5jbHVkZVBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluY2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIHNldCBpbmNsdWRlUGF0aHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9leGNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkluY2x1ZGUpO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBwYXRoIGlzIGlnbm9yZWQgYnkgdGhlIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggaXMgaWdub3JlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCkgfHwgdGhpcy5fZXhjbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFJlZ0V4cCh0eXBlOiBQYXRoU2V0dGluZ1R5cGUpOiBSZWdFeHAge1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuRXhjbHVkZTpcbiAgICAgIHJldHVybiBORVZFUl9NQVRDSF9SRUdfRVhQO1xuICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkluY2x1ZGU6XG4gICAgICByZXR1cm4gQUxXQVlTX01BVENIX1JFR19FWFA7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZC4gKi9cbiAgICAgIGFzc2VydE5ldmVyKHR5cGUpO1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlUmVnRXhwKHBhdGhzOiBzdHJpbmdbXSwgZGVmYXVsdFJlZ0V4cDogUmVnRXhwKTogUmVnRXhwIHtcbiAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBkZWZhdWx0UmVnRXhwO1xuICB9XG5cbiAgY29uc3QgcmVnRXhwU3RyQ29tYmluZWQgPSBwYXRocy5tYXAoKHBhdGgpID0+IHtcbiAgICBpZiAocGF0aCA9PT0gJy8nKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFJlZ0V4cC5zb3VyY2U7XG4gICAgfVxuXG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aCgnLycpICYmIHBhdGguZW5kc1dpdGgoJy8nKSkge1xuICAgICAgcmV0dXJuIHBhdGguc2xpY2UoMSwgLTEpO1xuICAgIH1cblxuICAgIHBhdGggPSB0cmltRW5kKHBhdGgsICcvJyk7XG4gICAgcmV0dXJuIGBeJHtlc2NhcGVSZWdFeHAocGF0aCl9KC98JClgO1xuICB9KVxuICAgIC5tYXAoKHJlZ0V4cFN0cikgPT4gYCgke3JlZ0V4cFN0cn0pYClcbiAgICAuam9pbignfCcpO1xuICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJDb21iaW5lZCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxxQkFJTztBQUNQLG9CQUF3QjtBQUN4Qix5QkFBNEI7QUFPNUIsTUFBTSxZQUFZO0FBQUEsRUFjVCxZQUE2QixNQUF1QjtBQUF2QjtBQUNsQyxTQUFLLGdCQUFnQixpQkFBaUIsSUFBSTtBQUMxQyxTQUFLLFNBQVMsS0FBSztBQUFBLEVBQ3JCO0FBQUEsRUFIb0M7QUFBQSxFQWJwQyxJQUFXLFFBQWtCO0FBQzNCLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQSxFQUVBLElBQVcsTUFBTSxPQUFpQjtBQUNoQyxTQUFLLFNBQVMsTUFBTSxPQUFPLE9BQU87QUFDbEMsU0FBSyxTQUFTLFdBQVcsS0FBSyxRQUFRLEtBQUssYUFBYTtBQUFBLEVBQzFEO0FBQUEsRUFFUSxTQUFtQixDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ1Q7QUFBQSxFQU9ELGNBQWMsTUFBdUI7QUFFMUMsWUFBUSxLQUFLLE1BQU07QUFBQTtBQUFBLE1BRWpCLEtBQUs7QUFDSCxlQUFPLEtBQUssT0FBTyxLQUFLLElBQUk7QUFBQSxNQUM5QixLQUFLO0FBQ0gsZUFBTyxDQUFDLEtBQUssT0FBTyxLQUFLLElBQUk7QUFBQSxNQUMvQjtBQUVFLDRDQUFZLEtBQUssSUFBSTtBQUFBLElBRXpCO0FBQUEsRUFDRjtBQUNGO0FBS08sTUFBTSxhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXhCLElBQVcsZUFBeUI7QUFDbEMsV0FBTyxLQUFLLGNBQWM7QUFBQSxFQUM1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsYUFBYSxPQUFpQjtBQUN2QyxTQUFLLGNBQWMsUUFBUTtBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxlQUF5QjtBQUNsQyxXQUFPLEtBQUssY0FBYztBQUFBLEVBQzVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxhQUFhLE9BQWlCO0FBQ3ZDLFNBQUssY0FBYyxRQUFRO0FBQUEsRUFDN0I7QUFBQSxFQUVpQixnQkFBZ0IsSUFBSSxZQUFZLHVCQUF1QjtBQUFBLEVBQ3ZELGdCQUFnQixJQUFJLFlBQVksdUJBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRakUsY0FBYyxNQUF1QjtBQUMxQyxXQUFPLEtBQUssY0FBYyxjQUFjLElBQUksS0FBSyxLQUFLLGNBQWMsY0FBYyxJQUFJO0FBQUEsRUFDeEY7QUFDRjtBQUVBLFNBQVMsaUJBQWlCLE1BQStCO0FBRXZELFVBQVEsTUFBTTtBQUFBO0FBQUEsSUFFWixLQUFLO0FBQ0gsYUFBTztBQUFBLElBQ1QsS0FBSztBQUNILGFBQU87QUFBQSxJQUNUO0FBRUUsMENBQVksSUFBSTtBQUFBLEVBRXBCO0FBQ0Y7QUFFQSxTQUFTLFdBQVcsT0FBaUIsZUFBK0I7QUFDbEUsTUFBSSxNQUFNLFdBQVcsR0FBRztBQUN0QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sb0JBQW9CLE1BQU0sSUFBSSxDQUFDLFNBQVM7QUFDNUMsUUFBSSxTQUFTLEtBQUs7QUFDaEIsYUFBTyxjQUFjO0FBQUEsSUFDdkI7QUFFQSxRQUFJLEtBQUssV0FBVyxHQUFHLEtBQUssS0FBSyxTQUFTLEdBQUcsR0FBRztBQUM5QyxhQUFPLEtBQUssTUFBTSxHQUFHLEVBQUU7QUFBQSxJQUN6QjtBQUVBLGVBQU8sdUJBQVEsTUFBTSxHQUFHO0FBQ3hCLFdBQU8sUUFBSSw2QkFBYSxJQUFJLENBQUM7QUFBQSxFQUMvQixDQUFDLEVBQ0UsSUFBSSxDQUFDLGNBQWMsSUFBSSxTQUFTLEdBQUcsRUFDbkMsS0FBSyxHQUFHO0FBQ1gsU0FBTyxJQUFJLE9BQU8saUJBQWlCO0FBQ3JDOyIsCiAgIm5hbWVzIjogW10KfQo=
242
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BhdGgtc2V0dGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqL1xuXG5pbXBvcnQge1xuICBBTFdBWVNfTUFUQ0hfUkVHX0VYUCxcbiAgZXNjYXBlUmVnRXhwLFxuICBORVZFUl9NQVRDSF9SRUdfRVhQXG59IGZyb20gJy4uL3JlZy1leHAudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcblxuZW51bSBQYXRoU2V0dGluZ1R5cGUge1xuICBFeGNsdWRlID0gJ0V4Y2x1ZGUnLFxuICBJbmNsdWRlID0gJ0luY2x1ZGUnXG59XG5cbmNsYXNzIFBhdGhTZXR0aW5nIHtcbiAgcHVibGljIGdldCBhcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycmF5O1xuICB9XG5cbiAgcHVibGljIHNldCBhcnJheSh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9hcnJheSA9IHZhbHVlLmZpbHRlcihCb29sZWFuKTtcbiAgICB0aGlzLnJlZ0V4cCA9IG1ha2VSZWdFeHAodGhpcy5fYXJyYXksIHRoaXMuZGVmYXVsdFJlZ0V4cCk7XG4gIH1cblxuICBwcml2YXRlIF9hcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0UmVnRXhwOiBSZWdFeHA7XG4gIHByaXZhdGUgcmVnRXhwOiBSZWdFeHA7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHlwZTogUGF0aFNldHRpbmdUeXBlKSB7XG4gICAgdGhpcy5kZWZhdWx0UmVnRXhwID0gZ2V0RGVmYXVsdFJlZ0V4cCh0eXBlKTtcbiAgICB0aGlzLnJlZ0V4cCA9IHRoaXMuZGVmYXVsdFJlZ0V4cDtcbiAgfVxuXG4gIHB1YmxpYyBpc1BhdGhJZ25vcmVkKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgYnJhbmNoZXMgY292ZXJlZCBidXQgdjggcmVwb3J0cyBzd2l0Y2ggYXMgcGFydGlhbC4gKi9cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGU6XG4gICAgICAgIHJldHVybiB0aGlzLnJlZ0V4cC50ZXN0KHBhdGgpO1xuICAgICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuSW5jbHVkZTpcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlZ0V4cC50ZXN0KHBhdGgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgICBhc3NlcnROZXZlcih0aGlzLnR5cGUpO1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgY2xhc3MgZm9yIG1hbmFnaW5nIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICovXG5leHBvcnQgY2xhc3MgUGF0aFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBleGNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIGdldCBleGNsdWRlUGF0aHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZXhjbHVkZSBwYXRocy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqL1xuICBwdWJsaWMgc2V0IGV4Y2x1ZGVQYXRocyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaW5jbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBnZXQgaW5jbHVkZVBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluY2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIHNldCBpbmNsdWRlUGF0aHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9leGNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkluY2x1ZGUpO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBwYXRoIGlzIGlnbm9yZWQgYnkgdGhlIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggaXMgaWdub3JlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCkgfHwgdGhpcy5fZXhjbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFJlZ0V4cCh0eXBlOiBQYXRoU2V0dGluZ1R5cGUpOiBSZWdFeHAge1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuRXhjbHVkZTpcbiAgICAgIHJldHVybiBORVZFUl9NQVRDSF9SRUdfRVhQO1xuICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkluY2x1ZGU6XG4gICAgICByZXR1cm4gQUxXQVlTX01BVENIX1JFR19FWFA7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZC4gKi9cbiAgICAgIGFzc2VydE5ldmVyKHR5cGUpO1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlUmVnRXhwKHBhdGhzOiBzdHJpbmdbXSwgZGVmYXVsdFJlZ0V4cDogUmVnRXhwKTogUmVnRXhwIHtcbiAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBkZWZhdWx0UmVnRXhwO1xuICB9XG5cbiAgY29uc3QgcmVnRXhwU3RyQ29tYmluZWQgPSBwYXRocy5tYXAoKHBhdGgpID0+IHtcbiAgICBpZiAocGF0aCA9PT0gJy8nKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFJlZ0V4cC5zb3VyY2U7XG4gICAgfVxuXG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aCgnLycpICYmIHBhdGguZW5kc1dpdGgoJy8nKSkge1xuICAgICAgcmV0dXJuIHBhdGguc2xpY2UoMSwgLTEpO1xuICAgIH1cblxuICAgIHBhdGggPSB0cmltRW5kKHtcbiAgICAgIHN0cjogcGF0aCxcbiAgICAgIHN1ZmZpeDogJy8nXG4gICAgfSk7XG4gICAgcmV0dXJuIGBeJHtlc2NhcGVSZWdFeHAocGF0aCl9KC98JClgO1xuICB9KVxuICAgIC5tYXAoKHJlZ0V4cFN0cikgPT4gYCgke3JlZ0V4cFN0cn0pYClcbiAgICAuam9pbignfCcpO1xuICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJDb21iaW5lZCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxxQkFJTztBQUNQLG9CQUF3QjtBQUN4Qix5QkFBNEI7QUFPNUIsTUFBTSxZQUFZO0FBQUEsRUFjVCxZQUE2QixNQUF1QjtBQUF2QjtBQUNsQyxTQUFLLGdCQUFnQixpQkFBaUIsSUFBSTtBQUMxQyxTQUFLLFNBQVMsS0FBSztBQUFBLEVBQ3JCO0FBQUEsRUFIb0M7QUFBQSxFQWJwQyxJQUFXLFFBQWtCO0FBQzNCLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQSxFQUVBLElBQVcsTUFBTSxPQUFpQjtBQUNoQyxTQUFLLFNBQVMsTUFBTSxPQUFPLE9BQU87QUFDbEMsU0FBSyxTQUFTLFdBQVcsS0FBSyxRQUFRLEtBQUssYUFBYTtBQUFBLEVBQzFEO0FBQUEsRUFFUSxTQUFtQixDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ1Q7QUFBQSxFQU9ELGNBQWMsTUFBdUI7QUFFMUMsWUFBUSxLQUFLLE1BQU07QUFBQTtBQUFBLE1BRWpCLEtBQUs7QUFDSCxlQUFPLEtBQUssT0FBTyxLQUFLLElBQUk7QUFBQSxNQUM5QixLQUFLO0FBQ0gsZUFBTyxDQUFDLEtBQUssT0FBTyxLQUFLLElBQUk7QUFBQSxNQUMvQjtBQUVFLDRDQUFZLEtBQUssSUFBSTtBQUFBLElBRXpCO0FBQUEsRUFDRjtBQUNGO0FBS08sTUFBTSxhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXhCLElBQVcsZUFBeUI7QUFDbEMsV0FBTyxLQUFLLGNBQWM7QUFBQSxFQUM1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsYUFBYSxPQUFpQjtBQUN2QyxTQUFLLGNBQWMsUUFBUTtBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxlQUF5QjtBQUNsQyxXQUFPLEtBQUssY0FBYztBQUFBLEVBQzVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxhQUFhLE9BQWlCO0FBQ3ZDLFNBQUssY0FBYyxRQUFRO0FBQUEsRUFDN0I7QUFBQSxFQUVpQixnQkFBZ0IsSUFBSSxZQUFZLHVCQUF1QjtBQUFBLEVBQ3ZELGdCQUFnQixJQUFJLFlBQVksdUJBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRakUsY0FBYyxNQUF1QjtBQUMxQyxXQUFPLEtBQUssY0FBYyxjQUFjLElBQUksS0FBSyxLQUFLLGNBQWMsY0FBYyxJQUFJO0FBQUEsRUFDeEY7QUFDRjtBQUVBLFNBQVMsaUJBQWlCLE1BQStCO0FBRXZELFVBQVEsTUFBTTtBQUFBO0FBQUEsSUFFWixLQUFLO0FBQ0gsYUFBTztBQUFBLElBQ1QsS0FBSztBQUNILGFBQU87QUFBQSxJQUNUO0FBRUUsMENBQVksSUFBSTtBQUFBLEVBRXBCO0FBQ0Y7QUFFQSxTQUFTLFdBQVcsT0FBaUIsZUFBK0I7QUFDbEUsTUFBSSxNQUFNLFdBQVcsR0FBRztBQUN0QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sb0JBQW9CLE1BQU0sSUFBSSxDQUFDLFNBQVM7QUFDNUMsUUFBSSxTQUFTLEtBQUs7QUFDaEIsYUFBTyxjQUFjO0FBQUEsSUFDdkI7QUFFQSxRQUFJLEtBQUssV0FBVyxHQUFHLEtBQUssS0FBSyxTQUFTLEdBQUcsR0FBRztBQUM5QyxhQUFPLEtBQUssTUFBTSxHQUFHLEVBQUU7QUFBQSxJQUN6QjtBQUVBLGVBQU8sdUJBQVE7QUFBQSxNQUNiLEtBQUs7QUFBQSxNQUNMLFFBQVE7QUFBQSxJQUNWLENBQUM7QUFDRCxXQUFPLFFBQUksNkJBQWEsSUFBSSxDQUFDO0FBQUEsRUFDL0IsQ0FBQyxFQUNFLElBQUksQ0FBQyxjQUFjLElBQUksU0FBUyxHQUFHLEVBQ25DLEtBQUssR0FBRztBQUNYLFNBQU8sSUFBSSxPQUFPLGlCQUFpQjtBQUNyQzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -173,6 +173,8 @@ class PluginEventSourceImpl {
173
173
  * @param thisArg - The context passed as `this` to the `callback`.
174
174
  * @returns A reference to the event listener.
175
175
  *
176
+ * @remarks Not refactored to parameter-object pattern, to keep the parity with {@link obsidian#Events#on} (or once, correspondingly).
177
+ *
176
178
  * @example
177
179
  * ```ts
178
180
  * events.on('my-event', async (arg1, arg2) => {
@@ -195,6 +197,8 @@ class PluginEventSourceImpl {
195
197
  * @param thisArg - The context passed as `this` to the `callback`.
196
198
  * @returns A reference to the event listener.
197
199
  *
200
+ * @remarks Not refactored to parameter-object pattern, to keep the parity with {@link obsidian#Events#on} (or once, correspondingly).
201
+ *
198
202
  * @example
199
203
  * ```ts
200
204
  * events.once('my-event', async (arg1, arg2) => {
@@ -212,4 +216,4 @@ class PluginEventSourceImpl {
212
216
  0 && (module.exports = {
213
217
  PluginEventSourceImpl
214
218
  });
215
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tZXZlbnQtc291cmNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwbHVnaW4gZXZlbnQgc291cmNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQXN5bmNFdmVudFJlZixcbiAgQXN5bmNFdmVudFNvdXJjZVxufSBmcm9tICcuLi8uLi9hc3luYy1ldmVudHMudHMnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdLZXlzIH0gZnJvbSAnLi4vLi4vdHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbkJhc2UgfSBmcm9tICcuL3BsdWdpbi50cyc7XG5cbi8qKlxuICogRXZlbnQgbWFwIGZvciBwbHVnaW4gZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkV2ZW50TWFwIHtcbiAgLyoqIEZpcmVkIHdoZW4gcGx1Z2luIHNldHRpbmdzIGFyZSBjaGFuZ2VkIGV4dGVybmFsbHkgKGUuZy4gc3luYywgbWFudWFsIGZpbGUgZWRpdCkuICovXG4gIGV4dGVybmFsU2V0dGluZ3NDaGFuZ2U6IFtdO1xufVxuXG4vKipcbiAqIEV2ZW50IHNvdXJjZSBmb3IgcGx1Z2luIGV2ZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgUGx1Z2luRXZlbnRTb3VyY2UgPSBBc3luY0V2ZW50U291cmNlPFBsdWdpbkV2ZW50TWFwPjtcblxuLyoqXG4gKiBQbHVnaW4gZXZlbnQgc291cmNlIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luRXZlbnRTb3VyY2VJbXBsIGltcGxlbWVudHMgUGx1Z2luRXZlbnRTb3VyY2Uge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gZXZlbnQgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byBjcmVhdGUgdGhlIGV2ZW50IHNvdXJjZSBmb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwbHVnaW46IFBsdWdpbkJhc2UpIHt9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBldmVudCBsaXN0ZW5lci5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBFdmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIHJlbW92ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogZXZlbnRzLm9mZignbXktZXZlbnQnLCBteUxpc3RlbmVyKTtcbiAgICogYGBgXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgZHVtbXkgcGFyYW1ldGVyIHRvIGdldCB0eXBlIGluZmVyZW5jZS5cbiAgcHVibGljIG9mZjxFdmVudE5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpbkV2ZW50TWFwPiwgQXJncyBleHRlbmRzIEV2ZW50TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luRXZlbnRNYXA+ID8gUGx1Z2luRXZlbnRNYXBbRXZlbnROYW1lXSA6IHVua25vd25bXT4oXG4gICAgbmFtZTogRXZlbnROYW1lLFxuICAgIGNhbGxiYWNrOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzYWJsZTx2b2lkPlxuICApOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbi5vZmYobmFtZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBldmVudCBsaXN0ZW5lciBieSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFJlZiAtIFRoZSByZWZlcmVuY2UgdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIG9mZnJlZihldmVudFJlZjogQXN5bmNFdmVudFJlZik6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLm9mZnJlZihldmVudFJlZik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHR5cGVQYXJhbSBBcmdzIC0gVGhlIGFyZ3VtZW50cyBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqIEBwYXJhbSB0aGlzQXJnIC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub24oJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG4gIHB1YmxpYyBvbjxFdmVudE5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpbkV2ZW50TWFwPiwgQXJncyBleHRlbmRzIEV2ZW50TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luRXZlbnRNYXA+ID8gUGx1Z2luRXZlbnRNYXBbRXZlbnROYW1lXSA6IHVua25vd25bXT4oXG4gICAgbmFtZTogRXZlbnROYW1lLFxuICAgIGNhbGxiYWNrOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW4ub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBldmVudCBsaXN0ZW5lciB0aGF0IHdpbGwgYmUgdHJpZ2dlcmVkIG9ubHkgb25jZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBFdmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZyAtIFRoZSBjb250ZXh0IHBhc3NlZCBhcyBgdGhpc2AgdG8gdGhlIGBjYWxsYmFja2AuXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogZXZlbnRzLm9uY2UoJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG4gIHB1YmxpYyBvbmNlPEV2ZW50TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luRXZlbnRNYXA+LCBBcmdzIGV4dGVuZHMgRXZlbnROYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5FdmVudE1hcD4gPyBQbHVnaW5FdmVudE1hcFtFdmVudE5hbWVdIDogdW5rbm93bltdPihcbiAgICBuYW1lOiBFdmVudE5hbWUsXG4gICAgY2FsbGJhY2s6ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICAgIHRoaXNBcmc/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWYge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5vbmNlKG5hbWUsIGNhbGxiYWNrLCB0aGlzQXJnKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK0JPLE1BQU0sc0JBQW1EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXZELFlBQTZCLFFBQW9CO0FBQXBCO0FBQUEsRUFBcUI7QUFBQSxFQUFyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWdCN0IsSUFDTCxNQUNBLFVBQ007QUFDTixTQUFLLE9BQU8sSUFBSSxNQUFNLFFBQVE7QUFBQSxFQUNoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLE9BQU8sVUFBK0I7QUFDM0MsU0FBSyxPQUFPLE9BQU8sUUFBUTtBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQXFCTyxHQUNMLE1BQ0EsVUFDQSxTQUNlO0FBQ2YsV0FBTyxLQUFLLE9BQU8sR0FBRyxNQUFNLFVBQVUsT0FBTztBQUFBLEVBQy9DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQXFCTyxLQUNMLE1BQ0EsVUFDQSxTQUNlO0FBQ2YsV0FBTyxLQUFLLE9BQU8sS0FBSyxNQUFNLFVBQVUsT0FBTztBQUFBLEVBQ2pEO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
219
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tZXZlbnQtc291cmNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwbHVnaW4gZXZlbnQgc291cmNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQXN5bmNFdmVudFJlZixcbiAgQXN5bmNFdmVudFNvdXJjZVxufSBmcm9tICcuLi8uLi9hc3luYy1ldmVudHMudHMnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdLZXlzIH0gZnJvbSAnLi4vLi4vdHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbkJhc2UgfSBmcm9tICcuL3BsdWdpbi50cyc7XG5cbi8qKlxuICogRXZlbnQgbWFwIGZvciBwbHVnaW4gZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkV2ZW50TWFwIHtcbiAgLyoqIEZpcmVkIHdoZW4gcGx1Z2luIHNldHRpbmdzIGFyZSBjaGFuZ2VkIGV4dGVybmFsbHkgKGUuZy4gc3luYywgbWFudWFsIGZpbGUgZWRpdCkuICovXG4gIGV4dGVybmFsU2V0dGluZ3NDaGFuZ2U6IFtdO1xufVxuXG4vKipcbiAqIEV2ZW50IHNvdXJjZSBmb3IgcGx1Z2luIGV2ZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgUGx1Z2luRXZlbnRTb3VyY2UgPSBBc3luY0V2ZW50U291cmNlPFBsdWdpbkV2ZW50TWFwPjtcblxuLyoqXG4gKiBQbHVnaW4gZXZlbnQgc291cmNlIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luRXZlbnRTb3VyY2VJbXBsIGltcGxlbWVudHMgUGx1Z2luRXZlbnRTb3VyY2Uge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gZXZlbnQgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byBjcmVhdGUgdGhlIGV2ZW50IHNvdXJjZSBmb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwbHVnaW46IFBsdWdpbkJhc2UpIHt9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBldmVudCBsaXN0ZW5lci5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBFdmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIHJlbW92ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogZXZlbnRzLm9mZignbXktZXZlbnQnLCBteUxpc3RlbmVyKTtcbiAgICogYGBgXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgZHVtbXkgcGFyYW1ldGVyIHRvIGdldCB0eXBlIGluZmVyZW5jZS5cbiAgcHVibGljIG9mZjxFdmVudE5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpbkV2ZW50TWFwPiwgQXJncyBleHRlbmRzIEV2ZW50TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luRXZlbnRNYXA+ID8gUGx1Z2luRXZlbnRNYXBbRXZlbnROYW1lXSA6IHVua25vd25bXT4oXG4gICAgbmFtZTogRXZlbnROYW1lLFxuICAgIGNhbGxiYWNrOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzYWJsZTx2b2lkPlxuICApOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbi5vZmYobmFtZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBldmVudCBsaXN0ZW5lciBieSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFJlZiAtIFRoZSByZWZlcmVuY2UgdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIG9mZnJlZihldmVudFJlZjogQXN5bmNFdmVudFJlZik6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLm9mZnJlZihldmVudFJlZik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHR5cGVQYXJhbSBBcmdzIC0gVGhlIGFyZ3VtZW50cyBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqIEBwYXJhbSB0aGlzQXJnIC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAcmVtYXJrcyBOb3QgcmVmYWN0b3JlZCB0byBwYXJhbWV0ZXItb2JqZWN0IHBhdHRlcm4sIHRvIGtlZXAgdGhlIHBhcml0eSB3aXRoIHtAbGluayBvYnNpZGlhbiNFdmVudHMjb259IChvciBvbmNlLCBjb3JyZXNwb25kaW5nbHkpLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub24oJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG4gIHB1YmxpYyBvbjxFdmVudE5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpbkV2ZW50TWFwPiwgQXJncyBleHRlbmRzIEV2ZW50TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luRXZlbnRNYXA+ID8gUGx1Z2luRXZlbnRNYXBbRXZlbnROYW1lXSA6IHVua25vd25bXT4oXG4gICAgbmFtZTogRXZlbnROYW1lLFxuICAgIGNhbGxiYWNrOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW4ub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBldmVudCBsaXN0ZW5lciB0aGF0IHdpbGwgYmUgdHJpZ2dlcmVkIG9ubHkgb25jZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBFdmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZyAtIFRoZSBjb250ZXh0IHBhc3NlZCBhcyBgdGhpc2AgdG8gdGhlIGBjYWxsYmFja2AuXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICpcbiAgICogQHJlbWFya3MgTm90IHJlZmFjdG9yZWQgdG8gcGFyYW1ldGVyLW9iamVjdCBwYXR0ZXJuLCB0byBrZWVwIHRoZSBwYXJpdHkgd2l0aCB7QGxpbmsgb2JzaWRpYW4jRXZlbnRzI29ufSAob3Igb25jZSwgY29ycmVzcG9uZGluZ2x5KS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogZXZlbnRzLm9uY2UoJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG4gIHB1YmxpYyBvbmNlPEV2ZW50TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luRXZlbnRNYXA+LCBBcmdzIGV4dGVuZHMgRXZlbnROYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5FdmVudE1hcD4gPyBQbHVnaW5FdmVudE1hcFtFdmVudE5hbWVdIDogdW5rbm93bltdPihcbiAgICBuYW1lOiBFdmVudE5hbWUsXG4gICAgY2FsbGJhY2s6ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICAgIHRoaXNBcmc/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWYge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5vbmNlKG5hbWUsIGNhbGxiYWNrLCB0aGlzQXJnKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK0JPLE1BQU0sc0JBQW1EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXZELFlBQTZCLFFBQW9CO0FBQXBCO0FBQUEsRUFBcUI7QUFBQSxFQUFyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWdCN0IsSUFDTCxNQUNBLFVBQ007QUFDTixTQUFLLE9BQU8sSUFBSSxNQUFNLFFBQVE7QUFBQSxFQUNoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLE9BQU8sVUFBK0I7QUFDM0MsU0FBSyxPQUFPLE9BQU8sUUFBUTtBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUF1Qk8sR0FDTCxNQUNBLFVBQ0EsU0FDZTtBQUNmLFdBQU8sS0FBSyxPQUFPLEdBQUcsTUFBTSxVQUFVLE9BQU87QUFBQSxFQUMvQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBdUJPLEtBQ0wsTUFDQSxVQUNBLFNBQ2U7QUFDZixXQUFPLEtBQUssT0FBTyxLQUFLLE1BQU0sVUFBVSxPQUFPO0FBQUEsRUFDakQ7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -60,6 +60,8 @@ export declare class PluginEventSourceImpl implements PluginEventSource {
60
60
  * @param thisArg - The context passed as `this` to the `callback`.
61
61
  * @returns A reference to the event listener.
62
62
  *
63
+ * @remarks Not refactored to parameter-object pattern, to keep the parity with {@link obsidian#Events#on} (or once, correspondingly).
64
+ *
63
65
  * @example
64
66
  * ```ts
65
67
  * events.on('my-event', async (arg1, arg2) => {
@@ -79,6 +81,8 @@ export declare class PluginEventSourceImpl implements PluginEventSource {
79
81
  * @param thisArg - The context passed as `this` to the `callback`.
80
82
  * @returns A reference to the event listener.
81
83
  *
84
+ * @remarks Not refactored to parameter-object pattern, to keep the parity with {@link obsidian#Events#on} (or once, correspondingly).
85
+ *
82
86
  * @example
83
87
  * ```ts
84
88
  * events.once('my-event', async (arg1, arg2) => {