obsidian-dev-utils 88.7.0 → 89.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 (679) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/demo-vault-helper/main.js +20 -23
  3. package/dist/integration-test-plugin/main.js +2218 -1734
  4. package/dist/lib/cjs/__merged.cjs +57 -35
  5. package/dist/lib/cjs/__merged.d.cts +12 -10
  6. package/dist/lib/cjs/abort-controller.cjs +15 -22
  7. package/dist/lib/cjs/array.cjs +27 -26
  8. package/dist/lib/cjs/array.d.cts +25 -7
  9. package/dist/lib/cjs/async-events.cjs +87 -91
  10. package/dist/lib/cjs/async-events.d.cts +50 -50
  11. package/dist/lib/cjs/async.cjs +80 -80
  12. package/dist/lib/cjs/async.d.cts +23 -23
  13. package/dist/lib/cjs/beeper.cjs +11 -15
  14. package/dist/lib/cjs/blob.cjs +14 -25
  15. package/dist/lib/cjs/codemirror/index.cjs +11 -15
  16. package/dist/lib/cjs/codemirror/state-field-spec.cjs +11 -15
  17. package/dist/lib/cjs/debug-controller.cjs +11 -15
  18. package/dist/lib/cjs/debug.cjs +24 -32
  19. package/dist/lib/cjs/debug.d.cts +1 -1
  20. package/dist/lib/cjs/disposable.cjs +59 -43
  21. package/dist/lib/cjs/disposable.d.cts +27 -8
  22. package/dist/lib/cjs/enum.cjs +11 -15
  23. package/dist/lib/cjs/error.cjs +28 -33
  24. package/dist/lib/cjs/function.cjs +30 -34
  25. package/dist/lib/cjs/function.d.cts +26 -26
  26. package/dist/lib/cjs/generated-during-build.cjs +12 -16
  27. package/dist/lib/cjs/html-element.cjs +84 -89
  28. package/dist/lib/cjs/html-element.d.cts +15 -15
  29. package/dist/lib/cjs/index.cjs +11 -15
  30. package/dist/lib/cjs/integration-test-setup.cjs +11 -15
  31. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +11 -15
  32. package/dist/lib/cjs/jest-setup.cjs +11 -15
  33. package/dist/lib/cjs/library.cjs +11 -15
  34. package/dist/lib/cjs/object-utils.cjs +120 -117
  35. package/dist/lib/cjs/object-utils.d.cts +27 -27
  36. package/dist/lib/cjs/obsidian/@types/dataview/data-model/value.d.cts +1 -1
  37. package/dist/lib/cjs/obsidian/@types/dataview/expression/field.d.cts +1 -1
  38. package/dist/lib/cjs/obsidian/@types/dataview/expression/functions.d.cts +4 -4
  39. package/dist/lib/cjs/obsidian/active-file-provider.cjs +11 -15
  40. package/dist/lib/cjs/obsidian/app.cjs +11 -15
  41. package/dist/lib/cjs/obsidian/async-with-notice.cjs +28 -32
  42. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +2 -2
  43. package/dist/lib/cjs/obsidian/attachment-path.cjs +20 -24
  44. package/dist/lib/cjs/obsidian/attachment-path.d.cts +5 -5
  45. package/dist/lib/cjs/obsidian/backlink.cjs +12 -16
  46. package/dist/lib/cjs/obsidian/bases-view-registrar.cjs +11 -15
  47. package/dist/lib/cjs/obsidian/callout.cjs +27 -26
  48. package/dist/lib/cjs/obsidian/callout.d.cts +9 -3
  49. package/dist/lib/cjs/obsidian/canvas.cjs +13 -16
  50. package/dist/lib/cjs/obsidian/case-insensitive-file-index.cjs +18 -20
  51. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +11 -15
  52. package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +2 -2
  53. package/dist/lib/cjs/obsidian/code-block-reg-exp.cjs +11 -15
  54. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +18 -16
  55. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +5 -0
  56. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +56 -31
  57. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +42 -8
  58. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +11 -15
  59. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +10 -0
  60. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +26 -30
  61. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +8 -8
  62. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +12 -16
  63. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +12 -16
  64. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +13 -17
  65. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +11 -15
  66. package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.cjs +11 -15
  67. package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +11 -15
  68. package/dist/lib/cjs/obsidian/command-handlers/unlock-active-note-command-handler.cjs +11 -15
  69. package/dist/lib/cjs/obsidian/command-registrar.cjs +11 -15
  70. package/dist/lib/cjs/obsidian/community-plugins.cjs +28 -25
  71. package/dist/lib/cjs/obsidian/community-plugins.d.cts +19 -5
  72. package/dist/lib/cjs/obsidian/components/abort-signal-component.cjs +11 -15
  73. package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +11 -15
  74. package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +4 -4
  75. package/dist/lib/cjs/obsidian/components/async-error-handler-component.cjs +13 -16
  76. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +11 -15
  77. package/dist/lib/cjs/obsidian/components/case-insensitive-file-index-component.cjs +11 -15
  78. package/dist/lib/cjs/obsidian/components/component-ex.cjs +26 -28
  79. package/dist/lib/cjs/obsidian/components/component-ex.d.cts +3 -3
  80. package/dist/lib/cjs/obsidian/components/console-debug-component.cjs +14 -18
  81. package/dist/lib/cjs/obsidian/components/console-debug-component.d.cts +2 -2
  82. package/dist/lib/cjs/obsidian/components/disposable-component.cjs +11 -15
  83. package/dist/lib/cjs/obsidian/components/embed-extensions-component.cjs +11 -15
  84. package/dist/lib/cjs/obsidian/components/generate-markdown-link-default-params-component.cjs +11 -15
  85. package/dist/lib/cjs/obsidian/components/index.cjs +14 -15
  86. package/dist/lib/cjs/obsidian/components/index.d.cts +1 -0
  87. package/dist/lib/cjs/obsidian/components/layout-ready-component.cjs +11 -15
  88. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.cjs +11 -15
  89. package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +29 -33
  90. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +55 -55
  91. package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.cjs +297 -0
  92. package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.d.cts +139 -0
  93. package/dist/lib/cjs/obsidian/components/plugin-context-component.cjs +11 -15
  94. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +28 -31
  95. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +26 -30
  96. package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +8 -8
  97. package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.cjs +11 -15
  98. package/dist/lib/cjs/obsidian/components/pointer-position-component.cjs +13 -17
  99. package/dist/lib/cjs/obsidian/components/registry-component.cjs +11 -15
  100. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +72 -62
  101. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +12 -1
  102. package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.cjs +16 -20
  103. package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.d.cts +8 -8
  104. package/dist/lib/cjs/obsidian/constructors/get-dom-events-handlers-constructor.cjs +14 -18
  105. package/dist/lib/cjs/obsidian/constructors/index.cjs +11 -15
  106. package/dist/lib/cjs/obsidian/css-class.cjs +11 -15
  107. package/dist/lib/cjs/obsidian/data-handler.cjs +11 -15
  108. package/dist/lib/cjs/obsidian/dataview-link.cjs +13 -17
  109. package/dist/lib/cjs/obsidian/dataview.cjs +35 -41
  110. package/dist/lib/cjs/obsidian/dataview.d.cts +2 -2
  111. package/dist/lib/cjs/obsidian/demo-vault-helper.cjs +13 -17
  112. package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +22 -26
  113. package/dist/lib/cjs/obsidian/desktop-trusted-input.cjs +23 -21
  114. package/dist/lib/cjs/obsidian/editor-extension-registrar.cjs +11 -15
  115. package/dist/lib/cjs/obsidian/editor-suggest-registrar.cjs +11 -15
  116. package/dist/lib/cjs/obsidian/editor.cjs +17 -19
  117. package/dist/lib/cjs/obsidian/events.cjs +12 -16
  118. package/dist/lib/cjs/obsidian/events.d.cts +2 -2
  119. package/dist/lib/cjs/obsidian/extensions-registrar.cjs +11 -15
  120. package/dist/lib/cjs/obsidian/file-change.cjs +76 -80
  121. package/dist/lib/cjs/obsidian/file-change.d.cts +3 -3
  122. package/dist/lib/cjs/obsidian/file-manager.cjs +33 -22
  123. package/dist/lib/cjs/obsidian/file-manager.d.cts +20 -1
  124. package/dist/lib/cjs/obsidian/file-system.cjs +15 -19
  125. package/dist/lib/cjs/obsidian/file-system.d.cts +3 -3
  126. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +11 -15
  127. package/dist/lib/cjs/obsidian/frontmatter.cjs +15 -19
  128. package/dist/lib/cjs/obsidian/hover-link-source-registrar.cjs +11 -15
  129. package/dist/lib/cjs/obsidian/html-element.cjs +13 -17
  130. package/dist/lib/cjs/obsidian/html-element.d.cts +2 -2
  131. package/dist/lib/cjs/obsidian/i18n/custom-type-options.cjs +11 -15
  132. package/dist/lib/cjs/obsidian/i18n/default-translations.cjs +11 -15
  133. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +13 -16
  134. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +7 -0
  135. package/dist/lib/cjs/obsidian/i18n/index.cjs +11 -15
  136. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +11 -15
  137. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +11 -15
  138. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +11 -15
  139. package/dist/lib/cjs/obsidian/index.cjs +14 -15
  140. package/dist/lib/cjs/obsidian/index.d.cts +1 -0
  141. package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +11 -15
  142. package/dist/lib/cjs/obsidian/link-update-progress.cjs +11 -15
  143. package/dist/lib/cjs/obsidian/link.cjs +91 -81
  144. package/dist/lib/cjs/obsidian/link.d.cts +22 -22
  145. package/dist/lib/cjs/obsidian/logger.cjs +21 -25
  146. package/dist/lib/cjs/obsidian/logger.d.cts +5 -5
  147. package/dist/lib/cjs/obsidian/loop.cjs +14 -18
  148. package/dist/lib/cjs/obsidian/loop.d.cts +1 -1
  149. package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.cjs +12 -16
  150. package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.d.cts +3 -3
  151. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +35 -40
  152. package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +3 -3
  153. package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.cjs +12 -16
  154. package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.d.cts +3 -3
  155. package/dist/lib/cjs/obsidian/markdown-view.cjs +11 -15
  156. package/dist/lib/cjs/obsidian/markdown.cjs +22 -24
  157. package/dist/lib/cjs/obsidian/menu-event-registrar.cjs +11 -15
  158. package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -1
  159. package/dist/lib/cjs/obsidian/metadata-cache.cjs +16 -20
  160. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +2 -2
  161. package/dist/lib/cjs/obsidian/modals/alert.cjs +11 -15
  162. package/dist/lib/cjs/obsidian/modals/confirm.cjs +11 -15
  163. package/dist/lib/cjs/obsidian/modals/index.cjs +11 -15
  164. package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +28 -32
  165. package/dist/lib/cjs/obsidian/modals/modal.cjs +11 -15
  166. package/dist/lib/cjs/obsidian/modals/prompt.cjs +11 -15
  167. package/dist/lib/cjs/obsidian/modals/select-item.cjs +16 -20
  168. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -1
  169. package/dist/lib/cjs/obsidian/modals/select-option.cjs +11 -15
  170. package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.cjs +26 -28
  171. package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.d.cts +5 -5
  172. package/dist/lib/cjs/obsidian/notebook-navigator.cjs +155 -0
  173. package/dist/lib/cjs/obsidian/notebook-navigator.d.cts +132 -0
  174. package/dist/lib/cjs/obsidian/obsidian-protocol-handler-registrar.cjs +11 -15
  175. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +11 -15
  176. package/dist/lib/cjs/obsidian/parse-link.cjs +61 -62
  177. package/dist/lib/cjs/obsidian/parse-link.d.cts +4 -4
  178. package/dist/lib/cjs/obsidian/path-settings.cjs +27 -25
  179. package/dist/lib/cjs/obsidian/pdf.cjs +13 -17
  180. package/dist/lib/cjs/obsidian/pdf.d.cts +2 -2
  181. package/dist/lib/cjs/obsidian/plugin/index.cjs +11 -15
  182. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +11 -15
  183. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +156 -52
  184. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +17 -21
  185. package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +2 -2
  186. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.cjs +20 -24
  187. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.d.cts +11 -9
  188. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +29 -33
  189. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +33 -16
  190. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +11 -1
  191. package/dist/lib/cjs/obsidian/plugin-cli-handler-registrar.cjs +11 -15
  192. package/dist/lib/cjs/obsidian/popovers/field-popover.cjs +11 -15
  193. package/dist/lib/cjs/obsidian/popovers/index.cjs +11 -15
  194. package/dist/lib/cjs/obsidian/popovers/popover-anchor.cjs +14 -18
  195. package/dist/lib/cjs/obsidian/popovers/popover-anchor.d.cts +2 -2
  196. package/dist/lib/cjs/obsidian/popovers/popover.cjs +19 -23
  197. package/dist/lib/cjs/obsidian/queue.cjs +16 -20
  198. package/dist/lib/cjs/obsidian/queue.d.cts +2 -2
  199. package/dist/lib/cjs/obsidian/react/app-context.cjs +11 -15
  200. package/dist/lib/cjs/obsidian/react/index.cjs +11 -15
  201. package/dist/lib/cjs/obsidian/reference.cjs +11 -15
  202. package/dist/lib/cjs/obsidian/resource-lock.cjs +157 -78
  203. package/dist/lib/cjs/obsidian/resource-lock.d.cts +5 -0
  204. package/dist/lib/cjs/obsidian/resource-url.cjs +12 -16
  205. package/dist/lib/cjs/obsidian/ribbon-icon-registrar.cjs +11 -15
  206. package/dist/lib/cjs/obsidian/ribbon-icon-registrar.d.cts +2 -2
  207. package/dist/lib/cjs/obsidian/setting-components/checkbox-component.cjs +18 -22
  208. package/dist/lib/cjs/obsidian/setting-components/checkbox-component.d.cts +5 -5
  209. package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.cjs +28 -31
  210. package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.d.cts +2 -2
  211. package/dist/lib/cjs/obsidian/setting-components/date-component.cjs +14 -18
  212. package/dist/lib/cjs/obsidian/setting-components/date-component.d.cts +2 -2
  213. package/dist/lib/cjs/obsidian/setting-components/date-time-component.cjs +14 -18
  214. package/dist/lib/cjs/obsidian/setting-components/date-time-component.d.cts +2 -2
  215. package/dist/lib/cjs/obsidian/setting-components/email-component.cjs +14 -18
  216. package/dist/lib/cjs/obsidian/setting-components/email-component.d.cts +2 -2
  217. package/dist/lib/cjs/obsidian/setting-components/file-component.cjs +11 -15
  218. package/dist/lib/cjs/obsidian/setting-components/index.cjs +11 -15
  219. package/dist/lib/cjs/obsidian/setting-components/month-component.cjs +14 -18
  220. package/dist/lib/cjs/obsidian/setting-components/month-component.d.cts +2 -2
  221. package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.cjs +17 -21
  222. package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.d.cts +2 -2
  223. package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.cjs +14 -18
  224. package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.d.cts +2 -2
  225. package/dist/lib/cjs/obsidian/setting-components/multiple-file-component.cjs +12 -16
  226. package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.cjs +15 -19
  227. package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.d.cts +2 -2
  228. package/dist/lib/cjs/obsidian/setting-components/number-component.cjs +14 -18
  229. package/dist/lib/cjs/obsidian/setting-components/number-component.d.cts +2 -2
  230. package/dist/lib/cjs/obsidian/setting-components/password-component.cjs +14 -18
  231. package/dist/lib/cjs/obsidian/setting-components/password-component.d.cts +2 -2
  232. package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.cjs +16 -20
  233. package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.d.cts +2 -2
  234. package/dist/lib/cjs/obsidian/setting-components/telephone-component.cjs +14 -18
  235. package/dist/lib/cjs/obsidian/setting-components/telephone-component.d.cts +2 -2
  236. package/dist/lib/cjs/obsidian/setting-components/text-based-component.cjs +16 -20
  237. package/dist/lib/cjs/obsidian/setting-components/text-based-component.d.cts +2 -2
  238. package/dist/lib/cjs/obsidian/setting-components/time-component.cjs +14 -18
  239. package/dist/lib/cjs/obsidian/setting-components/time-component.d.cts +2 -2
  240. package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.cjs +15 -19
  241. package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.d.cts +2 -2
  242. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.cjs +16 -20
  243. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.d.cts +2 -2
  244. package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.cjs +18 -22
  245. package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.d.cts +2 -2
  246. package/dist/lib/cjs/obsidian/setting-components/typed-range-text-component.cjs +11 -15
  247. package/dist/lib/cjs/obsidian/setting-components/typed-text-component.cjs +16 -19
  248. package/dist/lib/cjs/obsidian/setting-components/typed-text-component.d.cts +4 -4
  249. package/dist/lib/cjs/obsidian/setting-components/url-component.cjs +14 -18
  250. package/dist/lib/cjs/obsidian/setting-components/url-component.d.cts +2 -2
  251. package/dist/lib/cjs/obsidian/setting-components/validator-component.cjs +45 -49
  252. package/dist/lib/cjs/obsidian/setting-components/validator-component.d.cts +2 -2
  253. package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.cjs +11 -15
  254. package/dist/lib/cjs/obsidian/setting-components/week-component.cjs +14 -18
  255. package/dist/lib/cjs/obsidian/setting-components/week-component.d.cts +2 -2
  256. package/dist/lib/cjs/obsidian/setting-ex.cjs +76 -80
  257. package/dist/lib/cjs/obsidian/setting-ex.d.cts +42 -42
  258. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +14 -18
  259. package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +2 -2
  260. package/dist/lib/cjs/obsidian/status-bar-item-registrar.cjs +11 -15
  261. package/dist/lib/cjs/obsidian/validation.cjs +11 -15
  262. package/dist/lib/cjs/obsidian/vault-delete.cjs +23 -20
  263. package/dist/lib/cjs/obsidian/vault-delete.d.cts +16 -2
  264. package/dist/lib/cjs/obsidian/vault-transaction.cjs +17 -18
  265. package/dist/lib/cjs/obsidian/vault.cjs +81 -63
  266. package/dist/lib/cjs/obsidian/vault.d.cts +32 -11
  267. package/dist/lib/cjs/obsidian/view-registrar.cjs +11 -15
  268. package/dist/lib/cjs/obsidian/workspace.cjs +12 -16
  269. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +11 -15
  270. package/dist/lib/cjs/path.cjs +18 -22
  271. package/dist/lib/cjs/path.d.cts +1 -1
  272. package/dist/lib/cjs/reg-exp.cjs +38 -35
  273. package/dist/lib/cjs/reg-exp.d.cts +4 -4
  274. package/dist/lib/cjs/script-utils/build.cjs +21 -25
  275. package/dist/lib/cjs/script-utils/build.d.cts +1 -1
  276. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +24 -28
  277. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +36 -34
  278. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +11 -15
  279. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +20 -24
  280. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +13 -17
  281. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +16 -20
  282. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +11 -15
  283. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +11 -15
  284. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +6 -2
  285. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +32 -36
  286. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +11 -15
  287. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +11 -15
  288. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +11 -15
  289. package/dist/lib/cjs/script-utils/bundlers/index.cjs +11 -15
  290. package/dist/lib/cjs/script-utils/check-project-types.cjs +13 -17
  291. package/dist/lib/cjs/script-utils/check-project-types.d.cts +12 -4
  292. package/dist/lib/cjs/script-utils/cli-utils.cjs +39 -47
  293. package/dist/lib/cjs/script-utils/cli-utils.d.cts +6 -6
  294. package/dist/lib/cjs/script-utils/code-generator.cjs +11 -15
  295. package/dist/lib/cjs/script-utils/commitlint-config.cjs +11 -15
  296. package/dist/lib/cjs/script-utils/demo-vault-coverage.cjs +22 -23
  297. package/dist/lib/cjs/script-utils/demo-vault.cjs +11 -15
  298. package/dist/lib/cjs/script-utils/env-toggle.cjs +13 -17
  299. package/dist/lib/cjs/script-utils/exec.cjs +40 -44
  300. package/dist/lib/cjs/script-utils/exec.d.cts +4 -4
  301. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +12 -16
  302. package/dist/lib/cjs/script-utils/formatters/index.cjs +11 -15
  303. package/dist/lib/cjs/script-utils/fs.cjs +13 -17
  304. package/dist/lib/cjs/script-utils/git.cjs +11 -15
  305. package/dist/lib/cjs/script-utils/index.cjs +11 -15
  306. package/dist/lib/cjs/script-utils/json.cjs +15 -19
  307. package/dist/lib/cjs/script-utils/json.d.cts +2 -2
  308. package/dist/lib/cjs/script-utils/linters/cspell.cjs +12 -16
  309. package/dist/lib/cjs/script-utils/linters/eslint-agnostic-core-boundary.cjs +11 -15
  310. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +402 -16
  311. package/dist/lib/cjs/script-utils/linters/eslint-no-restricted-syntax.cjs +11 -15
  312. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +11 -15
  313. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +27 -31
  314. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +3 -1
  315. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.cjs +27 -31
  316. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.d.cts +3 -1
  317. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +21 -25
  318. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +3 -1
  319. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +11 -15
  320. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.cjs +109 -113
  321. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +3 -1
  322. package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.cjs +13 -17
  323. package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.d.cts +3 -1
  324. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.cjs +21 -25
  325. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.cts +3 -1
  326. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +51 -55
  327. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.d.cts +9 -3
  328. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +25 -27
  329. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.d.cts +6 -2
  330. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +33 -37
  331. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.d.cts +3 -1
  332. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +11 -15
  333. package/dist/lib/cjs/script-utils/linters/eslint.cjs +14 -18
  334. package/dist/lib/cjs/script-utils/linters/index.cjs +14 -15
  335. package/dist/lib/cjs/script-utils/linters/index.d.cts +1 -0
  336. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +18 -17
  337. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +2 -2
  338. package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.cjs +138 -0
  339. package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.d.cts +35 -0
  340. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +20 -23
  341. package/dist/lib/cjs/script-utils/linters/over-exposure.cjs +18 -22
  342. package/dist/lib/cjs/script-utils/linters/over-exposure.d.cts +54 -18
  343. package/dist/lib/cjs/script-utils/nano-staged-config.cjs +11 -15
  344. package/dist/lib/cjs/script-utils/npm-publish.cjs +11 -15
  345. package/dist/lib/cjs/script-utils/npm-run.cjs +20 -17
  346. package/dist/lib/cjs/script-utils/npm-run.d.cts +16 -2
  347. package/dist/lib/cjs/script-utils/npm.cjs +21 -25
  348. package/dist/lib/cjs/script-utils/npm.d.cts +11 -11
  349. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +11 -15
  350. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +165 -55
  351. package/dist/lib/cjs/script-utils/root.cjs +11 -15
  352. package/dist/lib/cjs/script-utils/test-runners/index.cjs +16 -17
  353. package/dist/lib/cjs/script-utils/test-runners/index.d.cts +1 -0
  354. package/dist/lib/cjs/script-utils/test-runners/integration-test-plugin.cjs +11 -15
  355. package/dist/lib/cjs/script-utils/test-runners/vitest-config.cjs +325 -0
  356. package/dist/lib/cjs/script-utils/test-runners/vitest-config.d.cts +118 -0
  357. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +11 -15
  358. package/dist/lib/cjs/script-utils/validate-declarations.cjs +11 -15
  359. package/dist/lib/cjs/script-utils/version.cjs +62 -63
  360. package/dist/lib/cjs/script-utils/version.d.cts +21 -21
  361. package/dist/lib/cjs/script-utils/warnings-as-errors.cjs +11 -15
  362. package/dist/lib/cjs/setup.cjs +11 -15
  363. package/dist/lib/cjs/setup.d.cts +1 -1
  364. package/dist/lib/cjs/strict-proxy.cjs +30 -34
  365. package/dist/lib/cjs/strict-proxy.d.cts +2 -2
  366. package/dist/lib/cjs/string.cjs +90 -93
  367. package/dist/lib/cjs/string.d.cts +60 -60
  368. package/dist/lib/cjs/transformers/date-transformer.cjs +11 -15
  369. package/dist/lib/cjs/transformers/duration-transformer.cjs +11 -15
  370. package/dist/lib/cjs/transformers/group-transformer.cjs +11 -15
  371. package/dist/lib/cjs/transformers/index.cjs +11 -15
  372. package/dist/lib/cjs/transformers/map-transformer.cjs +12 -16
  373. package/dist/lib/cjs/transformers/set-transformer.cjs +12 -16
  374. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +11 -15
  375. package/dist/lib/cjs/transformers/transformer.cjs +11 -15
  376. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +12 -16
  377. package/dist/lib/cjs/transformers/typed-transformer.cjs +11 -15
  378. package/dist/lib/cjs/two-way-map.cjs +11 -15
  379. package/dist/lib/cjs/type-guards.cjs +16 -20
  380. package/dist/lib/cjs/type-guards.d.cts +6 -6
  381. package/dist/lib/cjs/type.cjs +13 -17
  382. package/dist/lib/cjs/type.d.cts +2 -2
  383. package/dist/lib/cjs/url.cjs +18 -22
  384. package/dist/lib/cjs/url.d.cts +4 -4
  385. package/dist/lib/cjs/value-provider.cjs +15 -19
  386. package/dist/lib/cjs/value-provider.d.cts +6 -6
  387. package/dist/lib/cjs/value-wrapper.cjs +11 -15
  388. package/dist/lib/cjs/vitest-setup.cjs +11 -15
  389. package/dist/lib/esm/__merged.d.mts +12 -10
  390. package/dist/lib/esm/__merged.mjs +51 -23
  391. package/dist/lib/esm/abort-controller.mjs +5 -8
  392. package/dist/lib/esm/array.d.mts +25 -7
  393. package/dist/lib/esm/array.mjs +16 -12
  394. package/dist/lib/esm/async-events.d.mts +50 -50
  395. package/dist/lib/esm/async-events.mjs +81 -78
  396. package/dist/lib/esm/async.d.mts +23 -23
  397. package/dist/lib/esm/async.mjs +70 -66
  398. package/dist/lib/esm/blob.mjs +4 -11
  399. package/dist/lib/esm/debug.d.mts +1 -1
  400. package/dist/lib/esm/debug.mjs +14 -18
  401. package/dist/lib/esm/disposable.d.mts +27 -8
  402. package/dist/lib/esm/disposable.mjs +47 -29
  403. package/dist/lib/esm/error.mjs +18 -19
  404. package/dist/lib/esm/function.d.mts +26 -26
  405. package/dist/lib/esm/function.mjs +20 -20
  406. package/dist/lib/esm/generated-during-build.mjs +1 -1
  407. package/dist/lib/esm/html-element.d.mts +15 -15
  408. package/dist/lib/esm/html-element.mjs +74 -75
  409. package/dist/lib/esm/object-utils.d.mts +27 -27
  410. package/dist/lib/esm/object-utils.mjs +109 -102
  411. package/dist/lib/esm/obsidian/@types/dataview/data-model/value.d.mts +1 -1
  412. package/dist/lib/esm/obsidian/@types/dataview/expression/field.d.mts +1 -1
  413. package/dist/lib/esm/obsidian/@types/dataview/expression/functions.d.mts +4 -4
  414. package/dist/lib/esm/obsidian/app.mjs +1 -1
  415. package/dist/lib/esm/obsidian/async-with-notice.d.mts +2 -2
  416. package/dist/lib/esm/obsidian/async-with-notice.mjs +18 -18
  417. package/dist/lib/esm/obsidian/attachment-path.d.mts +5 -5
  418. package/dist/lib/esm/obsidian/attachment-path.mjs +10 -10
  419. package/dist/lib/esm/obsidian/backlink.mjs +2 -2
  420. package/dist/lib/esm/obsidian/callout.d.mts +9 -3
  421. package/dist/lib/esm/obsidian/callout.mjs +17 -12
  422. package/dist/lib/esm/obsidian/canvas.mjs +3 -2
  423. package/dist/lib/esm/obsidian/case-insensitive-file-index.mjs +8 -6
  424. package/dist/lib/esm/obsidian/code-block-markdown-information.d.mts +2 -2
  425. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +5 -0
  426. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +8 -2
  427. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +42 -8
  428. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +46 -17
  429. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +10 -0
  430. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +1 -1
  431. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +8 -8
  432. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +16 -16
  433. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -2
  434. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -2
  435. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +3 -3
  436. package/dist/lib/esm/obsidian/community-plugins.d.mts +19 -5
  437. package/dist/lib/esm/obsidian/community-plugins.mjs +17 -11
  438. package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +4 -4
  439. package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +1 -1
  440. package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +3 -2
  441. package/dist/lib/esm/obsidian/components/component-ex.d.mts +3 -3
  442. package/dist/lib/esm/obsidian/components/component-ex.mjs +16 -14
  443. package/dist/lib/esm/obsidian/components/console-debug-component.d.mts +2 -2
  444. package/dist/lib/esm/obsidian/components/console-debug-component.mjs +4 -4
  445. package/dist/lib/esm/obsidian/components/index.d.mts +1 -0
  446. package/dist/lib/esm/obsidian/components/index.mjs +3 -1
  447. package/dist/lib/esm/obsidian/components/menu-event-registrar-component.mjs +5 -5
  448. package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +55 -55
  449. package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +19 -19
  450. package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.d.mts +139 -0
  451. package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.mjs +196 -0
  452. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +18 -17
  453. package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +8 -8
  454. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +18 -18
  455. package/dist/lib/esm/obsidian/components/pointer-position-component.mjs +3 -3
  456. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +12 -1
  457. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +62 -48
  458. package/dist/lib/esm/obsidian/components/syntax-highlighting-component.d.mts +8 -8
  459. package/dist/lib/esm/obsidian/components/syntax-highlighting-component.mjs +6 -6
  460. package/dist/lib/esm/obsidian/constructors/get-dom-events-handlers-constructor.mjs +4 -4
  461. package/dist/lib/esm/obsidian/data-handler.mjs +1 -1
  462. package/dist/lib/esm/obsidian/dataview-link.mjs +3 -3
  463. package/dist/lib/esm/obsidian/dataview.d.mts +2 -2
  464. package/dist/lib/esm/obsidian/dataview.mjs +25 -27
  465. package/dist/lib/esm/obsidian/demo-vault-helper.mjs +4 -3
  466. package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +12 -12
  467. package/dist/lib/esm/obsidian/desktop-trusted-input.mjs +13 -7
  468. package/dist/lib/esm/obsidian/editor.mjs +7 -5
  469. package/dist/lib/esm/obsidian/events.d.mts +2 -2
  470. package/dist/lib/esm/obsidian/events.mjs +2 -2
  471. package/dist/lib/esm/obsidian/file-change.d.mts +3 -3
  472. package/dist/lib/esm/obsidian/file-change.mjs +67 -67
  473. package/dist/lib/esm/obsidian/file-manager.d.mts +20 -1
  474. package/dist/lib/esm/obsidian/file-manager.mjs +22 -8
  475. package/dist/lib/esm/obsidian/file-system.d.mts +3 -3
  476. package/dist/lib/esm/obsidian/file-system.mjs +4 -4
  477. package/dist/lib/esm/obsidian/frontmatter.mjs +5 -5
  478. package/dist/lib/esm/obsidian/html-element.d.mts +2 -2
  479. package/dist/lib/esm/obsidian/html-element.mjs +3 -3
  480. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +7 -0
  481. package/dist/lib/esm/obsidian/i18n/i18n.mjs +3 -2
  482. package/dist/lib/esm/obsidian/index.d.mts +1 -0
  483. package/dist/lib/esm/obsidian/index.mjs +3 -1
  484. package/dist/lib/esm/obsidian/link.d.mts +22 -22
  485. package/dist/lib/esm/obsidian/link.mjs +76 -62
  486. package/dist/lib/esm/obsidian/logger.d.mts +5 -5
  487. package/dist/lib/esm/obsidian/logger.mjs +11 -11
  488. package/dist/lib/esm/obsidian/loop.d.mts +1 -1
  489. package/dist/lib/esm/obsidian/loop.mjs +4 -4
  490. package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.d.mts +3 -3
  491. package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.mjs +2 -2
  492. package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +3 -3
  493. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +25 -26
  494. package/dist/lib/esm/obsidian/markdown-post-processor-registrar.d.mts +3 -3
  495. package/dist/lib/esm/obsidian/markdown-post-processor-registrar.mjs +2 -2
  496. package/dist/lib/esm/obsidian/markdown.mjs +12 -10
  497. package/dist/lib/esm/obsidian/menu-event-registrar.d.mts +1 -1
  498. package/dist/lib/esm/obsidian/metadata-cache.d.mts +2 -2
  499. package/dist/lib/esm/obsidian/metadata-cache.mjs +6 -6
  500. package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
  501. package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +18 -18
  502. package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -1
  503. package/dist/lib/esm/obsidian/modals/select-item.mjs +6 -6
  504. package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.d.mts +5 -5
  505. package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.mjs +16 -14
  506. package/dist/lib/esm/obsidian/notebook-navigator.d.mts +132 -0
  507. package/dist/lib/esm/obsidian/notebook-navigator.mjs +49 -0
  508. package/dist/lib/esm/obsidian/parse-link.d.mts +4 -4
  509. package/dist/lib/esm/obsidian/parse-link.mjs +51 -48
  510. package/dist/lib/esm/obsidian/path-settings.mjs +17 -11
  511. package/dist/lib/esm/obsidian/pdf.d.mts +2 -2
  512. package/dist/lib/esm/obsidian/pdf.mjs +3 -3
  513. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +156 -52
  514. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +1 -1
  515. package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +2 -2
  516. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +7 -7
  517. package/dist/lib/esm/obsidian/plugin/plugin-event-source.d.mts +11 -9
  518. package/dist/lib/esm/obsidian/plugin/plugin-event-source.mjs +10 -10
  519. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +20 -20
  520. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +11 -1
  521. package/dist/lib/esm/obsidian/plugin/plugin.mjs +23 -2
  522. package/dist/lib/esm/obsidian/popovers/popover-anchor.d.mts +2 -2
  523. package/dist/lib/esm/obsidian/popovers/popover-anchor.mjs +4 -4
  524. package/dist/lib/esm/obsidian/popovers/popover.mjs +9 -9
  525. package/dist/lib/esm/obsidian/queue.d.mts +2 -2
  526. package/dist/lib/esm/obsidian/queue.mjs +6 -6
  527. package/dist/lib/esm/obsidian/resource-lock.d.mts +5 -0
  528. package/dist/lib/esm/obsidian/resource-lock.mjs +147 -64
  529. package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
  530. package/dist/lib/esm/obsidian/ribbon-icon-registrar.d.mts +2 -2
  531. package/dist/lib/esm/obsidian/ribbon-icon-registrar.mjs +1 -1
  532. package/dist/lib/esm/obsidian/setting-components/checkbox-component.d.mts +5 -5
  533. package/dist/lib/esm/obsidian/setting-components/checkbox-component.mjs +8 -8
  534. package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.d.mts +2 -2
  535. package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.mjs +18 -17
  536. package/dist/lib/esm/obsidian/setting-components/date-component.d.mts +2 -2
  537. package/dist/lib/esm/obsidian/setting-components/date-component.mjs +4 -4
  538. package/dist/lib/esm/obsidian/setting-components/date-time-component.d.mts +2 -2
  539. package/dist/lib/esm/obsidian/setting-components/date-time-component.mjs +4 -4
  540. package/dist/lib/esm/obsidian/setting-components/email-component.d.mts +2 -2
  541. package/dist/lib/esm/obsidian/setting-components/email-component.mjs +4 -4
  542. package/dist/lib/esm/obsidian/setting-components/month-component.d.mts +2 -2
  543. package/dist/lib/esm/obsidian/setting-components/month-component.mjs +4 -4
  544. package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.d.mts +2 -2
  545. package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.mjs +7 -7
  546. package/dist/lib/esm/obsidian/setting-components/multiple-email-component.d.mts +2 -2
  547. package/dist/lib/esm/obsidian/setting-components/multiple-email-component.mjs +4 -4
  548. package/dist/lib/esm/obsidian/setting-components/multiple-file-component.mjs +2 -2
  549. package/dist/lib/esm/obsidian/setting-components/multiple-text-component.d.mts +2 -2
  550. package/dist/lib/esm/obsidian/setting-components/multiple-text-component.mjs +5 -5
  551. package/dist/lib/esm/obsidian/setting-components/number-component.d.mts +2 -2
  552. package/dist/lib/esm/obsidian/setting-components/number-component.mjs +4 -4
  553. package/dist/lib/esm/obsidian/setting-components/password-component.d.mts +2 -2
  554. package/dist/lib/esm/obsidian/setting-components/password-component.mjs +4 -4
  555. package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.d.mts +2 -2
  556. package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.mjs +6 -6
  557. package/dist/lib/esm/obsidian/setting-components/telephone-component.d.mts +2 -2
  558. package/dist/lib/esm/obsidian/setting-components/telephone-component.mjs +4 -4
  559. package/dist/lib/esm/obsidian/setting-components/text-based-component.d.mts +2 -2
  560. package/dist/lib/esm/obsidian/setting-components/text-based-component.mjs +6 -6
  561. package/dist/lib/esm/obsidian/setting-components/time-component.d.mts +2 -2
  562. package/dist/lib/esm/obsidian/setting-components/time-component.mjs +4 -4
  563. package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.d.mts +2 -2
  564. package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.mjs +5 -5
  565. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.d.mts +2 -2
  566. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.mjs +6 -6
  567. package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.d.mts +2 -2
  568. package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.mjs +8 -8
  569. package/dist/lib/esm/obsidian/setting-components/typed-text-component.d.mts +4 -4
  570. package/dist/lib/esm/obsidian/setting-components/typed-text-component.mjs +6 -5
  571. package/dist/lib/esm/obsidian/setting-components/url-component.d.mts +2 -2
  572. package/dist/lib/esm/obsidian/setting-components/url-component.mjs +4 -4
  573. package/dist/lib/esm/obsidian/setting-components/validator-component.d.mts +2 -2
  574. package/dist/lib/esm/obsidian/setting-components/validator-component.mjs +35 -35
  575. package/dist/lib/esm/obsidian/setting-components/week-component.d.mts +2 -2
  576. package/dist/lib/esm/obsidian/setting-components/week-component.mjs +4 -4
  577. package/dist/lib/esm/obsidian/setting-ex.d.mts +42 -42
  578. package/dist/lib/esm/obsidian/setting-ex.mjs +66 -66
  579. package/dist/lib/esm/obsidian/setting-group-ex.d.mts +2 -2
  580. package/dist/lib/esm/obsidian/setting-group-ex.mjs +4 -4
  581. package/dist/lib/esm/obsidian/vault-delete.d.mts +16 -2
  582. package/dist/lib/esm/obsidian/vault-delete.mjs +12 -6
  583. package/dist/lib/esm/obsidian/vault-transaction.mjs +8 -4
  584. package/dist/lib/esm/obsidian/vault.d.mts +32 -11
  585. package/dist/lib/esm/obsidian/vault.mjs +67 -47
  586. package/dist/lib/esm/obsidian/view-registrar.mjs +1 -1
  587. package/dist/lib/esm/obsidian/workspace.mjs +2 -2
  588. package/dist/lib/esm/path.d.mts +1 -1
  589. package/dist/lib/esm/path.mjs +7 -7
  590. package/dist/lib/esm/reg-exp.d.mts +4 -4
  591. package/dist/lib/esm/reg-exp.mjs +28 -21
  592. package/dist/lib/esm/script-utils/build.d.mts +1 -1
  593. package/dist/lib/esm/script-utils/build.mjs +15 -12
  594. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +14 -14
  595. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +26 -20
  596. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +10 -10
  597. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +3 -3
  598. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +6 -6
  599. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +6 -2
  600. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
  601. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +20 -20
  602. package/dist/lib/esm/script-utils/check-project-types.d.mts +12 -4
  603. package/dist/lib/esm/script-utils/check-project-types.mjs +3 -3
  604. package/dist/lib/esm/script-utils/cli-utils.d.mts +6 -6
  605. package/dist/lib/esm/script-utils/cli-utils.mjs +29 -33
  606. package/dist/lib/esm/script-utils/demo-vault-coverage.mjs +12 -9
  607. package/dist/lib/esm/script-utils/env-toggle.mjs +3 -3
  608. package/dist/lib/esm/script-utils/exec.d.mts +4 -4
  609. package/dist/lib/esm/script-utils/exec.mjs +32 -32
  610. package/dist/lib/esm/script-utils/formatters/dprint.mjs +2 -2
  611. package/dist/lib/esm/script-utils/fs.mjs +3 -3
  612. package/dist/lib/esm/script-utils/json.d.mts +2 -2
  613. package/dist/lib/esm/script-utils/json.mjs +5 -5
  614. package/dist/lib/esm/script-utils/linters/cspell.mjs +2 -2
  615. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +392 -2
  616. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +3 -1
  617. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +17 -17
  618. package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.d.mts +3 -1
  619. package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.mjs +17 -17
  620. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.d.mts +3 -1
  621. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +11 -11
  622. package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.d.mts +3 -1
  623. package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.mjs +99 -99
  624. package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.d.mts +3 -1
  625. package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.mjs +3 -3
  626. package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.mts +3 -1
  627. package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.mjs +11 -11
  628. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.d.mts +9 -3
  629. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +41 -41
  630. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.d.mts +6 -2
  631. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +15 -13
  632. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.d.mts +3 -1
  633. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +23 -23
  634. package/dist/lib/esm/script-utils/linters/eslint.mjs +4 -4
  635. package/dist/lib/esm/script-utils/linters/index.d.mts +1 -0
  636. package/dist/lib/esm/script-utils/linters/index.mjs +3 -1
  637. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +2 -2
  638. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +8 -3
  639. package/dist/lib/esm/script-utils/linters/markdownlint-ignores.d.mts +35 -0
  640. package/dist/lib/esm/script-utils/linters/markdownlint-ignores.mjs +33 -0
  641. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +13 -9
  642. package/dist/lib/esm/script-utils/linters/over-exposure.d.mts +54 -18
  643. package/dist/lib/esm/script-utils/linters/over-exposure.mjs +8 -8
  644. package/dist/lib/esm/script-utils/npm-run.d.mts +16 -2
  645. package/dist/lib/esm/script-utils/npm-run.mjs +9 -3
  646. package/dist/lib/esm/script-utils/npm.d.mts +11 -11
  647. package/dist/lib/esm/script-utils/npm.mjs +11 -11
  648. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +165 -55
  649. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +1 -1
  650. package/dist/lib/esm/script-utils/test-runners/index.d.mts +1 -0
  651. package/dist/lib/esm/script-utils/test-runners/index.mjs +4 -2
  652. package/dist/lib/esm/script-utils/test-runners/vitest-config.d.mts +118 -0
  653. package/dist/lib/esm/script-utils/test-runners/vitest-config.mjs +210 -0
  654. package/dist/lib/esm/script-utils/validate-declarations.mjs +1 -1
  655. package/dist/lib/esm/script-utils/version.d.mts +21 -21
  656. package/dist/lib/esm/script-utils/version.mjs +48 -45
  657. package/dist/lib/esm/setup.d.mts +1 -1
  658. package/dist/lib/esm/setup.mjs +1 -1
  659. package/dist/lib/esm/strict-proxy.d.mts +2 -2
  660. package/dist/lib/esm/strict-proxy.mjs +20 -20
  661. package/dist/lib/esm/string.d.mts +60 -60
  662. package/dist/lib/esm/string.mjs +80 -79
  663. package/dist/lib/esm/transformers/map-transformer.mjs +2 -2
  664. package/dist/lib/esm/transformers/set-transformer.mjs +2 -2
  665. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +2 -2
  666. package/dist/lib/esm/type-guards.d.mts +6 -6
  667. package/dist/lib/esm/type-guards.mjs +6 -6
  668. package/dist/lib/esm/type.d.mts +2 -2
  669. package/dist/lib/esm/type.mjs +3 -3
  670. package/dist/lib/esm/url.d.mts +4 -4
  671. package/dist/lib/esm/url.mjs +8 -8
  672. package/dist/lib/esm/value-provider.d.mts +6 -6
  673. package/dist/lib/esm/value-provider.mjs +5 -5
  674. package/dist/templates/scripts/vitest-config.ts +2 -88
  675. package/obsidian/components/notebook-navigator-menu-event-registrar-component/package.json +6 -0
  676. package/obsidian/notebook-navigator/package.json +6 -0
  677. package/package.json +17 -33
  678. package/script-utils/linters/markdownlint-ignores/package.json +6 -0
  679. package/script-utils/test-runners/vitest-config/package.json +6 -0
@@ -90,7 +90,7 @@ function checkExtension(pathOrFile, extension) {
90
90
  }
91
91
  return false;
92
92
  }
93
- function exists(params) {
93
+ function doesExist(params) {
94
94
  const {
95
95
  app,
96
96
  isCaseInsensitive,
@@ -342,7 +342,7 @@ function trimMarkdownExtension(file) {
342
342
  return file.path;
343
343
  }
344
344
  return trimEnd({
345
- str: file.path,
345
+ $string: file.path,
346
346
  suffix: `.${MARKDOWN_FILE_EXTENSION}`
347
347
  });
348
348
  }
@@ -380,7 +380,7 @@ export {
380
380
  asFolder,
381
381
  asFolderOrNull,
382
382
  checkExtension,
383
- exists,
383
+ doesExist,
384
384
  getAbstractFile,
385
385
  getAbstractFileOrNull,
386
386
  getFile,
@@ -402,4 +402,4 @@ export {
402
402
  isTreatedAsAttachment,
403
403
  trimMarkdownExtension
404
404
  };
405
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2ZpbGUtc3lzdGVtLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB7QGxpbmsgVEFic3RyYWN0RmlsZX0sIHtAbGluayBURmlsZX0sIGFuZCB7QGxpbmsgVEZvbGRlcn0gaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBjcmVhdGVURmlsZUluc3RhbmNlLFxuICBjcmVhdGVURm9sZGVySW5zdGFuY2UsXG4gIGdldERhdGFBZGFwdGVyRXgsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgVEFic3RyYWN0RmlsZSxcbiAgVEZpbGUsXG4gIFRGb2xkZXIsXG4gIFZhdWx0XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vb2JqZWN0LXV0aWxzLnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBleHRuYW1lLFxuICByZXNvbHZlXG59IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IGdldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB9IGZyb20gJy4vY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LnRzJztcblxuLyoqXG4gKiBBIGZpbGUgZXh0ZW5zaW9uIGZvciBgYmFzZWAgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBCQVNFX0ZJTEVfRVhURU5TSU9OID0gJ2Jhc2UnO1xuXG4vKipcbiAqIEEgZmlsZSBleHRlbnNpb24gZm9yIGBjYW52YXNgIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OID0gJ2NhbnZhcyc7XG5cbi8qKlxuICogQSBmaWxlIGV4dGVuc2lvbiBmb3IgYG1hcmtkb3duYCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BUktET1dOX0ZJTEVfRVhURU5TSU9OID0gJ21kJztcblxuLyoqXG4gKiBBIHR5cGUgb2YgZmlsZSBzeXN0ZW0gb2JqZWN0LlxuICovXG5leHBvcnQgZW51bSBGaWxlU3lzdGVtVHlwZSB7XG4gIC8qKlxuICAgKiBBIGZpbGUuXG4gICAqL1xuICBGaWxlID0gJ2ZpbGUnLFxuICAvKipcbiAgICogQSBmb2xkZXIuXG4gICAqL1xuICBGb2xkZXIgPSAnZm9sZGVyJ1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBleGlzdHN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4aXN0c1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gV2hlbiBgdW5kZWZpbmVkYCBvciBub3Qgc3BlY2lmaWVkLCB0aGUgYmVoYXZpb3IgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYWN0dWFsIGZpbGUgc3lzdGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGZpbGUgc3lzdGVtIG9iamVjdCB0byBjaGVjay4gRGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBGaWxlU3lzdGVtVHlwZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QWJzdHJhY3RGaWxlT3JOdWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBYnN0cmFjdEZpbGVPck51bGxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIFdoZW4gYHVuZGVmaW5lZGAgb3Igbm90IHNwZWNpZmllZCwgdGhlIGJlaGF2aW9yIGlzIGRldGVybWluZWQgYnkgdGhlIGFjdHVhbCBmaWxlIHN5c3RlbS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEFic3RyYWN0RmlsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QWJzdHJhY3RGaWxlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBXaGVuIGB1bmRlZmluZWRgIG9yIG5vdCBzcGVjaWZpZWQsIHRoZSBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhY3R1YWwgZmlsZSBzeXN0ZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gcmV0cmlldmUgdGhlIGFic3RyYWN0IGZpbGUgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRGaWxlT3JOdWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRGaWxlT3JOdWxsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBXaGVuIGB1bmRlZmluZWRgIG9yIG5vdCBzcGVjaWZpZWQsIHRoZSBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhY3R1YWwgZmlsZSBzeXN0ZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0RmlsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmlsZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gV2hlbiBgdW5kZWZpbmVkYCBvciBub3Qgc3BlY2lmaWVkLCB0aGUgYmVoYXZpb3IgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYWN0dWFsIGZpbGUgc3lzdGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmaWxlIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBhIG5vbi1leGlzdGluZyBmaWxlLlxuICAgKiAgSWYgYHRydWVgLCBhIG5ldyBmaWxlIGlzIGNyZWF0ZWQgZm9yIHRoZSBwcm92aWRlZCBwYXRoLlxuICAgKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmaWxlIGlzIG5vdCBmb3VuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0Rm9sZGVyT3JOdWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRGb2xkZXJPck51bGxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIFdoZW4gYHVuZGVmaW5lZGAgb3Igbm90IHNwZWNpZmllZCwgdGhlIGJlaGF2aW9yIGlzIGRldGVybWluZWQgYnkgdGhlIGFjdHVhbCBmaWxlIHN5c3RlbS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBmb2xkZXIgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZvbGRlcjogbnVsbCB8IFBhdGhPckZvbGRlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0Rm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIFdoZW4gYHVuZGVmaW5lZGAgb3Igbm90IHNwZWNpZmllZCwgdGhlIGJlaGF2aW9yIGlzIGRldGVybWluZWQgYnkgdGhlIGFjdHVhbCBmaWxlIHN5c3RlbS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZm9sZGVyIGlkZW50aWZpZXIuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyB0aGUgZm9sZGVyIHRvIG5vdCBleGlzdC5cbiAgICogIElmIGB0cnVlYCwgYSBuZXcgZm9sZGVyIGlzIGNyZWF0ZWQgZm9yIHRoZSBwcm92aWRlZCBwYXRoLlxuICAgKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmb2xkZXIgaXMgbm90IGZvdW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRNYXJrZG93bkZpbGVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRNYXJrZG93bkZpbGVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBtYXJrZG93biBmaWxlcyB3aXRoaW4gc3ViZm9sZGVycy4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBpc1JlY3Vyc2l2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZvbGRlciB0byByZXRyaWV2ZSB0aGUgbWFya2Rvd24gZmlsZXMgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpc1RyZWF0ZWRBc0F0dGFjaG1lbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzVHJlYXRlZEFzQXR0YWNobWVudFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZXh0ZW5zaW9ucyB0aGF0IG1hcmsgYSBmaWxlIGFzIGFuIGF0dGFjaG1lbnQsIGUuZy4gYFsnLmV4Y2FsaWRyYXcubWQnXWAuIEVhY2ggZW50cnkgaXMgbm9ybWFsaXplZCBiZWZvcmUgbWF0Y2hpbmc6IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2UgaXMgdHJpbW1lZCxcbiAgICogYSBzaW5nbGUgbGVhZGluZyBkb3QgaXMgZW5mb3JjZWQsIGFuZCB0aGUgY29tcGFyaXNvbiBpcyBjYXNlLWluc2Vuc2l0aXZlLiBFbXB0eSBlbnRyaWVzIGFyZSBpZ25vcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEV4dGVuc2lvbnM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIHRvIGNsYXNzaWZ5LlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiBBIHBhdGggb3IgYW4gYWJzdHJhY3QgZmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0aE9yQWJzdHJhY3RGaWxlID0gc3RyaW5nIHwgVEFic3RyYWN0RmlsZTtcblxuLyoqXG4gKiBBIHBhdGggb3IgYSBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JGaWxlID0gc3RyaW5nIHwgVEZpbGU7XG5cbi8qKlxuICogQSBwYXRoIG9yIGEgZm9sZGVyLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JGb2xkZXIgPSBzdHJpbmcgfCBURm9sZGVyO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRGaWxlSW50ZXJuYWx9LlxuICovXG5pbnRlcmZhY2UgR2V0RmlsZUludGVybmFsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBXaGVuIGB1bmRlZmluZWRgIG9yIG5vdCBzcGVjaWZpZWQsIHRoZSBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhY3R1YWwgZmlsZSBzeXN0ZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHJldHJpZXZlIHRoZSBhYnN0cmFjdCBmaWxlIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBhYnN0cmFjdCBmaWxlcyB0byBhbiBhcnJheSBvZiBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlcyAtIFRoZSBhYnN0cmFjdCBmaWxlcyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGFycmF5IG9mIGZpbGVzLlxuICogQHRocm93cyBFcnJvciBpZiBhbnkgb2YgdGhlIGFic3RyYWN0IGZpbGVzIGFyZSBub3QgZmlsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0FycmF5T2ZGaWxlcyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFic3RyYWN0RmlsZXMubWFwKChhYnN0cmFjdEZpbGUpID0+IGFzRmlsZShhYnN0cmFjdEZpbGUpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBhYnN0cmFjdCBmaWxlcyB0byBhbiBhcnJheSBvZiBmb2xkZXJzLlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGFic3RyYWN0IGZpbGVzIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgYXJyYXkgb2YgZm9sZGVycy5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYW55IG9mIHRoZSBhYnN0cmFjdCBmaWxlcyBhcmUgbm90IGZvbGRlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0FycmF5T2ZGb2xkZXJzKGFic3RyYWN0RmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IFRGb2xkZXJbXSB7XG4gIHJldHVybiBhYnN0cmFjdEZpbGVzLm1hcCgoYWJzdHJhY3RGaWxlKSA9PiBhc0ZvbGRlcihhYnN0cmFjdEZpbGUpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGaWxlKGFic3RyYWN0RmlsZTogbnVsbCB8IFRBYnN0cmFjdEZpbGUpOiBURmlsZSB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShhc0ZpbGVPck51bGwoYWJzdHJhY3RGaWxlKSwgJ0Fic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZScpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFic3RyYWN0IGZpbGUgdG8gYSBmaWxlIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIG9yIGBudWxsYC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZU9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGaWxlIHtcbiAgaWYgKGFic3RyYWN0RmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGU7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZpbGUnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGZvbGRlci5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGb2xkZXIoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IFRGb2xkZXIge1xuICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUoYXNGb2xkZXJPck51bGwoYWJzdHJhY3RGaWxlKSwgJ0Fic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyJyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYWJzdHJhY3QgZmlsZSB0byBhIGZvbGRlciBvciBgbnVsbGAuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIG9yIGBudWxsYC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGb2xkZXJPck51bGwoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IG51bGwgfCBURm9sZGVyIHtcbiAgaWYgKGFic3RyYWN0RmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURm9sZGVyKSB7XG4gICAgcmV0dXJuIGFic3RyYWN0RmlsZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0Fic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBwYXRoIG9yIGZpbGUgaGFzIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byBjaGVjay5cbiAqIEBwYXJhbSBleHRlbnNpb24gLSBUaGUgZXh0ZW5zaW9uIHRvIGNvbXBhcmUgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIG9yIGZpbGUgaGFzIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRXh0ZW5zaW9uKHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUsIGV4dGVuc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChpc0ZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm4gcGF0aE9yRmlsZS5leHRlbnNpb24gPT09IGV4dGVuc2lvbjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcGF0aE9yRmlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBDb21wYXJlIHRoZSBwYXRoJ3Mgb3duIGV4dGVuc2lvbiBpbnN0ZWFkIG9mIHJlc29sdmluZyB0aGUgZmlsZS5cbiAgICAvLyBSZXNvbHZpbmcgYSBzdHJpbmcgcGF0aCBpcyBPKHZhdWx0KSBvbiBhIG1pc3Mgb24gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW0uXG4gICAgLy8gVGhhdCBtaXNzIGlzIHRoZSBob3QgcGF0aCBkdXJpbmcgZGVsZXRpb24gY2FzY2FkZXMuXG4gICAgLy8gT2JzaWRpYW4gbG93ZXJjYXNlcyBhIGZpbGUncyBjYW5vbmljYWwgZXh0ZW5zaW9uLCBzbyBjb21wYXJlIGNhc2UtaW5zZW5zaXRpdmVseS5cbiAgICByZXR1cm4gZXh0bmFtZShwYXRoT3JGaWxlKS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpID09PSBleHRlbnNpb247XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBwYXRoIGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGF0aCBleGlzdHMsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhpc3RzKHBhcmFtczogRXhpc3RzUGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aCxcbiAgICB0eXBlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8R2V0QWJzdHJhY3RGaWxlT3JOdWxsUGFyYW1zPih7XG4gICAgYXBwLFxuICAgIGlzQ2FzZUluc2Vuc2l0aXZlLFxuICAgIHBhdGhPckZpbGU6IHBhdGhcbiAgfSkpO1xuICBpZiAoIWFic3RyYWN0RmlsZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBnZXRGaWxlU3lzdGVtVHlwZShhYnN0cmFjdEZpbGUpID09PSB0eXBlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgVEFic3RyYWN0RmlsZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmV0cmlldmFsLlxuICogQHJldHVybnMgVGhlIGFic3RyYWN0IGZpbGUuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBhYnN0cmFjdCBmaWxlIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZShwYXJhbXM6IEdldEFic3RyYWN0RmlsZVBhcmFtcyk6IFRBYnN0cmFjdEZpbGUge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGlzQ2FzZUluc2Vuc2l0aXZlLFxuICAgIHBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKFxuICAgIGdldEFic3RyYWN0RmlsZU9yTnVsbChub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8R2V0QWJzdHJhY3RGaWxlT3JOdWxsUGFyYW1zPih7XG4gICAgICBhcHAsXG4gICAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICAgIHBhdGhPckZpbGVcbiAgICB9KSksXG4gICAgYEFic3RyYWN0IGZpbGUgbm90IGZvdW5kOiAke3BhdGhPckZpbGUgYXMgc3RyaW5nfWBcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYWJzdHJhY3QgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSByZXRyaWV2YWwuXG4gKiBAcmV0dXJucyBUaGUgYWJzdHJhY3QgZmlsZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChwYXJhbXM6IEdldEFic3RyYWN0RmlsZU9yTnVsbFBhcmFtcyk6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICBwYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGlmIChwYXRoT3JGaWxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoaXNBYnN0cmFjdEZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICBpZiAoaXNGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgICByZXR1cm4gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGF0aE9yRmlsZS5wYXRoKSA/PyBwYXRoT3JGaWxlO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVEFic3RyYWN0RmlsZSBpcyBhbHdheXMgVEZpbGUgb3IgVEZvbGRlciBpbiBPYnNpZGlhbjsgZGVmZW5zaXZlIGZhbGxiYWNrLiAqL1xuICAgIGlmIChpc0ZvbGRlcihwYXRoT3JGaWxlKSkge1xuICAgICAgcmV0dXJuIGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgocGF0aE9yRmlsZS5wYXRoKSA/PyBwYXRoT3JGaWxlO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUQWJzdHJhY3RGaWxlIGlzIGFsd2F5cyBURmlsZSBvciBURm9sZGVyIGluIE9ic2lkaWFuOyBkZWZlbnNpdmUgZmFsbGJhY2suICovXG4gICAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGF0aE9yRmlsZS5wYXRoKSA/PyBwYXRoT3JGaWxlO1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIH1cblxuICBjb25zdCBmaWxlID0gZ2V0RmlsZUludGVybmFsKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxHZXRGaWxlSW50ZXJuYWxQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aDogcGF0aE9yRmlsZVxuICB9KSk7XG5cbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcblxuICBpZiAocmVzb2x2ZWRQYXRoID09PSBwYXRoT3JGaWxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZ2V0RmlsZUludGVybmFsKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxHZXRGaWxlSW50ZXJuYWxQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aDogcmVzb2x2ZWRQYXRoXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBmaWxlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmV0cmlldmFsLlxuICogQHJldHVybnMgVGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlKHBhcmFtczogR2V0RmlsZVBhcmFtcyk6IFRGaWxlIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICBwYXRoT3JGaWxlLFxuICAgIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZ1xuICB9ID0gcGFyYW1zO1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPEdldEZpbGVPck51bGxQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aE9yRmlsZVxuICB9KSk7XG4gIGlmICghZmlsZSkge1xuICAgIGlmIChzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcpIHtcbiAgICAgIGZpbGUgPSBjcmVhdGVURmlsZUluc3RhbmNlKGFwcCwgcGF0aE9yRmlsZSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke3BhdGhPckZpbGUgYXMgc3RyaW5nfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmaWxlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGZpbGUgb3IgYG51bGxgIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZpbGUuXG4gKiBJZiB0aGUgcHJvdmlkZWQgYXJndW1lbnQgaXMgYWxyZWFkeSBhIGZpbGUsIGl0IGlzIHJldHVybmVkIGFzIGlzLlxuICogT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYXBwJ3MgdmF1bHQgdG8gcmV0cmlldmUgdGhlIGZpbGUgYnkgaXRzIHBhdGguXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmV0cmlldmFsLlxuICogQHJldHVybnMgVGhlIGZpbGUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlT3JOdWxsKHBhcmFtczogR2V0RmlsZU9yTnVsbFBhcmFtcyk6IG51bGwgfCBURmlsZSB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxHZXRBYnN0cmFjdEZpbGVPck51bGxQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aE9yRmlsZVxuICB9KSk7XG4gIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB0eXBlIG9mIGEgZmlsZSBzeXN0ZW0gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBnZXQgdGhlIHR5cGUgb2YuXG4gKiBAcmV0dXJucyBUaGUgdHlwZSBvZiB0aGUgYWJzdHJhY3QgZmlsZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZSBvciBhIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVTeXN0ZW1UeXBlKGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IEZpbGVTeXN0ZW1UeXBlIHtcbiAgaWYgKGlzRmlsZShhYnN0cmFjdEZpbGUpKSB7XG4gICAgcmV0dXJuIEZpbGVTeXN0ZW1UeXBlLkZpbGU7XG4gIH1cbiAgaWYgKGlzRm9sZGVyKGFic3RyYWN0RmlsZSkpIHtcbiAgICByZXR1cm4gRmlsZVN5c3RlbVR5cGUuRm9sZGVyO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlIG9yIGEgZm9sZGVyJyk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZm9sZGVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhcHAgYW5kIHBhdGhPckZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSByZXRyaWV2YWwuXG4gKiBAcmV0dXJucyBUaGUgcmV0cmlldmVkIGZvbGRlci5cbiAqIEB0aHJvd3MgSWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXIocGFyYW1zOiBHZXRGb2xkZXJQYXJhbXMpOiBURm9sZGVyIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICBwYXRoT3JGb2xkZXIsXG4gICAgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nXG4gIH0gPSBwYXJhbXM7XG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPEdldEZvbGRlck9yTnVsbFBhcmFtcz4oe1xuICAgIGFwcCxcbiAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICBwYXRoT3JGb2xkZXJcbiAgfSkpO1xuICBpZiAoIWZvbGRlcikge1xuICAgIGlmIChzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcpIHtcbiAgICAgIGZvbGRlciA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHAsIHBhdGhPckZvbGRlciBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvbGRlciBub3QgZm91bmQ6ICR7cGF0aE9yRm9sZGVyIGFzIHN0cmluZ31gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZm9sZGVyO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGZvbGRlciBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHJldHJpZXZhbC5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXJPck51bGwocGFyYW1zOiBHZXRGb2xkZXJPck51bGxQYXJhbXMpOiBudWxsIHwgVEZvbGRlciB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aE9yRm9sZGVyXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZvbGRlciA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8R2V0QWJzdHJhY3RGaWxlT3JOdWxsUGFyYW1zPih7XG4gICAgYXBwLFxuICAgIGlzQ2FzZUluc2Vuc2l0aXZlLFxuICAgIHBhdGhPckZpbGU6IHBhdGhPckZvbGRlclxuICB9KSk7XG4gIGlmIChpc0ZvbGRlcihmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgZmlsZXMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcyB3aXRoaW4gYSBzcGVjaWZpZWQgZm9sZGVyIG9yIHBhdGguXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmV0cmlldmFsLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZmlsZXMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXMocGFyYW1zOiBHZXRNYXJrZG93bkZpbGVzUGFyYW1zKTogVEZpbGVbXSB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgaXNSZWN1cnNpdmUsXG4gICAgcGF0aE9yRm9sZGVyXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlcih7XG4gICAgYXBwLFxuICAgIHBhdGhPckZvbGRlclxuICB9KTtcblxuICBsZXQgbWFya2Rvd25GaWxlczogVEZpbGVbXSA9IFtdO1xuXG4gIGlmIChpc1JlY3Vyc2l2ZSkge1xuICAgIFZhdWx0LnJlY3Vyc2VDaGlsZHJlbihmb2xkZXIsIChhYnN0cmFjdEZpbGUpID0+IHtcbiAgICAgIGlmIChpc01hcmtkb3duRmlsZShhYnN0cmFjdEZpbGUpICYmIGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgIG1hcmtkb3duRmlsZXMucHVzaChhYnN0cmFjdEZpbGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG1hcmtkb3duRmlsZXMgPSBmb2xkZXIuY2hpbGRyZW4uZmlsdGVyKChmaWxlKSA9PiBpc01hcmtkb3duRmlsZShmaWxlKSkgYXMgVEZpbGVbXTtcbiAgfVxuXG4gIG1hcmtkb3duRmlsZXMgPSBtYXJrZG93bkZpbGVzLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xuICByZXR1cm4gbWFya2Rvd25GaWxlcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZpbGUgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSByZXByZXNlbnRpbmcgdGhlIGZpbGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURmlsZT4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbCh7XG4gICAgYXBwLFxuICAgIHBhdGhPckZpbGU6IHBhdGhcbiAgfSk7XG4gIGlmIChmaWxlKSB7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICBjb25zdCBmb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChwYXRoKTtcbiAgYXdhaXQgZ2V0T3JDcmVhdGVGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmb2xkZXIgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIHJldHJpZXZlIG9yIGNyZWF0ZS5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgcmVwcmVzZW50aW5nIHRoZSBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZUZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURm9sZGVyPiB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbCh7XG4gICAgYXBwLFxuICAgIHBhdGhPckZvbGRlcjogcGF0aFxuICB9KTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9mIHRoZSBnaXZlbiBgcGF0aE9yRmlsZWAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgYHBhdGhPckZpbGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIHBhdGhPckZpbGUucGF0aDtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoe1xuICAgIGFwcCxcbiAgICBwYXRoT3JGaWxlXG4gIH0pO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBmaWxlLnBhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0UmVzb2x2ZWRQYXRoKHBhdGhPckZpbGUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBhYnN0cmFjdCBmaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIGFic3RyYWN0IGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic3RyYWN0RmlsZShmaWxlOiB1bmtub3duKTogZmlsZSBpcyBUQWJzdHJhY3RGaWxlIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBUQWJzdHJhY3RGaWxlO1xufVxuXG4vKipcbiAqICAgQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgYmFzZSBmaWxlLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBiYXNlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2VGaWxlKHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uKHBhdGhPckZpbGUsIEJBU0VfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBjYW52YXMgZmlsZSBvciBub3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGUocGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24ocGF0aE9yRmlsZSwgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYW4gaW5zdGFuY2Ugb2YgZmlsZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWxlKGZpbGU6IHVua25vd24pOiBmaWxlIGlzIFRGaWxlIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBURmlsZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYSBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZmlsZSBpcyBhIGZvbGRlciwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZvbGRlcihmaWxlOiB1bmtub3duKTogZmlsZSBpcyBURm9sZGVyIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBURm9sZGVyO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBjaGVja0V4dGVuc2lvbihwYXRoT3JGaWxlLCBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgbm90ZS5cbiAqXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgbm90ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90ZShwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlKSB8fCBpc0NhbnZhc0ZpbGUocGF0aE9yRmlsZSkgfHwgaXNCYXNlRmlsZShwYXRoT3JGaWxlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gYXR0YWNobWVudCBiZWNhdXNlIG9mIGl0cyBleHRlbnNpb24uXG4gKlxuICogU29tZSBwbHVnaW5zIHN0b3JlIHRoZWlyIGRhdGEgaW4gZmlsZXMgdGhhdCBhcmUgbWFya2Rvd24gb24gZGlzayBidXQgYXJlIG5vdCBwcm9zZSBcdTIwMTQgRXhjYWxpZHJhdywgZm9yIGV4YW1wbGUsIHNhdmVzIGVhY2ggZHJhd2luZyBhcyBgc2tldGNoLmV4Y2FsaWRyYXcubWRgLlxuICogT2JzaWRpYW4gcmVwb3J0cyBzdWNoIGEgZmlsZSdzIGV4dGVuc2lvbiBhcyBgbWRgLCBzbyBhIGNhbGxlciB0aGF0IHdhbnRzIHRvIHRlbGwgYSBkcmF3aW5nIGFwYXJ0IGZyb20gYSBub3RlIGhhcyB0byBtYXRjaCB0aGUgZnVsbCBtdWx0aS1wYXJ0IGV4dGVuc2lvblxuICogKGAuZXhjYWxpZHJhdy5tZGApIGFnYWluc3QgdGhlIGZpbGUgbmFtZS4gV2hpY2ggZXh0ZW5zaW9ucyBjb3VudCBpcyB0aGUgY2FsbGVyJ3MgY29uZmlndXJhdGlvbiwgbm90IHRoaXMgbGlicmFyeSdzIFx1MjAxNCBvbmx5IHRoZSBtYXRjaGluZyBydWxlIGlzIHNoYXJlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjbGFzc2lmeSBhbmQgdGhlIGNvbmZpZ3VyZWQgYXR0YWNobWVudCBleHRlbnNpb25zLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBhdHRhY2htZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmVhdGVkQXNBdHRhY2htZW50KHBhcmFtczogSXNUcmVhdGVkQXNBdHRhY2htZW50UGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IHtcbiAgICBhdHRhY2htZW50RXh0ZW5zaW9ucyxcbiAgICBwYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGlmIChwYXRoT3JGaWxlID09PSBudWxsIHx8IGlzRm9sZGVyKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgbG93ZXJDYXNlTmFtZSA9IGdldE5hbWUocGF0aE9yRmlsZSkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGF0dGFjaG1lbnRFeHRlbnNpb25zLnNvbWUoKGV4dGVuc2lvbikgPT4ge1xuICAgIC8vIEVuZm9yY2luZyBhIHNpbmdsZSBsZWFkaW5nIGRvdCBpcyB3aGF0IGtlZXBzIHRoZSBtYXRjaCBvbiBhbiBleHRlbnNpb24gYm91bmRhcnkuXG4gICAgLy8gQSBiYXJlIGByYXcubWRgIHdvdWxkIG90aGVyd2lzZSBtYXRjaCBgc2tldGNoLmV4Y2FsaWRyYXcubWRgLCB3aGljaCBpcyBuZXZlciB3aGF0IGEgY2FsbGVyIG1lYW5zLlxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFeHRlbnNpb24gPSBleHRlbnNpb24udHJpbSgpLnJlcGxhY2UoL15cXC4rLywgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRFeHRlbnNpb24gIT09ICcnICYmIGxvd2VyQ2FzZU5hbWUuZW5kc1dpdGgoYC4ke25vcm1hbGl6ZWRFeHRlbnNpb259YCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbSB0aGUgZmlsZSBwYXRoIGlmIHRoZSBmaWxlIGlzIGEgbWFya2Rvd24gZmlsZS5cbiAqIElmIHRoZSBmaWxlIGlzIG5vdCBhIG1hcmtkb3duIGZpbGUsIHRoZSBvcmlnaW5hbCBmaWxlIHBhdGggaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byB0cmltIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIHBhdGggd2l0aCB0aGUgbWFya2Rvd24gZXh0ZW5zaW9uIHRyaW1tZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTWFya2Rvd25FeHRlbnNpb24oZmlsZTogVEFic3RyYWN0RmlsZSk6IHN0cmluZyB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoZmlsZSkpIHtcbiAgICByZXR1cm4gZmlsZS5wYXRoO1xuICB9XG5cbiAgcmV0dXJuIHRyaW1FbmQoe1xuICAgIHN0cjogZmlsZS5wYXRoLFxuICAgIHN1ZmZpeDogYC4ke01BUktET1dOX0ZJTEVfRVhURU5TSU9OfWBcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEZpbGVJbnRlcm5hbChwYXJhbXM6IEdldEZpbGVJbnRlcm5hbFBhcmFtcyk6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGxldCB7IGlzQ2FzZUluc2Vuc2l0aXZlIH0gPSBwYXJhbXM7XG4gIGlzQ2FzZUluc2Vuc2l0aXZlID8/PSBnZXREYXRhQWRhcHRlckV4KGFwcCkuaW5zZW5zaXRpdmU7XG4gIGlmIChpc0Nhc2VJbnNlbnNpdGl2ZSkge1xuICAgIGNvbnN0IGNhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCA9IGdldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleChhcHApO1xuICAgIGlmIChjYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgpIHtcbiAgICAgIHJldHVybiBjYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXguZ2V0KHBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aEluc2Vuc2l0aXZlKHBhdGgpO1xuICB9XG5cbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGF0aCk7XG59XG5cbmZ1bmN0aW9uIGdldE5hbWUocGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpID8gcGF0aE9yRmlsZS5uYW1lIDogYmFzZW5hbWUocGF0aE9yRmlsZSk7XG59XG5cbmZ1bmN0aW9uIGdldFJlc29sdmVkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbm9ybWFsaXplUGF0aChyZXNvbHZlKCcvJywgcGF0aCkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLG1DQUFtQztBQUM1QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGVBQWU7QUFDeEIsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxtQ0FBbUM7QUFLckMsTUFBTSxzQkFBc0I7QUFLNUIsTUFBTSx3QkFBd0I7QUFLOUIsTUFBTSwwQkFBMEI7QUFLaEMsSUFBSyxpQkFBTCxrQkFBS0Esb0JBQUw7QUFJTCxFQUFBQSxnQkFBQSxVQUFPO0FBSVAsRUFBQUEsZ0JBQUEsWUFBUztBQVJDLFNBQUFBO0FBQUEsR0FBQTtBQThRTCxTQUFTLGVBQWUsZUFBeUM7QUFDdEUsU0FBTyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsT0FBTyxZQUFZLENBQUM7QUFDakU7QUFTTyxTQUFTLGlCQUFpQixlQUEyQztBQUMxRSxTQUFPLGNBQWMsSUFBSSxDQUFDLGlCQUFpQixTQUFTLFlBQVksQ0FBQztBQUNuRTtBQVNPLFNBQVMsT0FBTyxjQUEyQztBQUNoRSxTQUFPLGtCQUFrQixhQUFhLFlBQVksR0FBRyw2QkFBNkI7QUFDcEY7QUFTTyxTQUFTLGFBQWEsY0FBa0Q7QUFDN0UsTUFBSSxpQkFBaUIsTUFBTTtBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUksd0JBQXdCLE9BQU87QUFDakMsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLElBQUksTUFBTSw2QkFBNkI7QUFDL0M7QUFTTyxTQUFTLFNBQVMsY0FBNkM7QUFDcEUsU0FBTyxrQkFBa0IsZUFBZSxZQUFZLEdBQUcs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
405
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2ZpbGUtc3lzdGVtLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB7QGxpbmsgVEFic3RyYWN0RmlsZX0sIHtAbGluayBURmlsZX0sIGFuZCB7QGxpbmsgVEZvbGRlcn0gaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBjcmVhdGVURmlsZUluc3RhbmNlLFxuICBjcmVhdGVURm9sZGVySW5zdGFuY2UsXG4gIGdldERhdGFBZGFwdGVyRXgsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgVEFic3RyYWN0RmlsZSxcbiAgVEZpbGUsXG4gIFRGb2xkZXIsXG4gIFZhdWx0XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vb2JqZWN0LXV0aWxzLnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBleHRuYW1lLFxuICByZXNvbHZlXG59IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IGdldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB9IGZyb20gJy4vY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LnRzJztcblxuLyoqXG4gKiBBIGZpbGUgZXh0ZW5zaW9uIGZvciBgYmFzZWAgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBCQVNFX0ZJTEVfRVhURU5TSU9OID0gJ2Jhc2UnO1xuXG4vKipcbiAqIEEgZmlsZSBleHRlbnNpb24gZm9yIGBjYW52YXNgIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OID0gJ2NhbnZhcyc7XG5cbi8qKlxuICogQSBmaWxlIGV4dGVuc2lvbiBmb3IgYG1hcmtkb3duYCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BUktET1dOX0ZJTEVfRVhURU5TSU9OID0gJ21kJztcblxuLyoqXG4gKiBBIHR5cGUgb2YgZmlsZSBzeXN0ZW0gb2JqZWN0LlxuICovXG5leHBvcnQgZW51bSBGaWxlU3lzdGVtVHlwZSB7XG4gIC8qKlxuICAgKiBBIGZpbGUuXG4gICAqL1xuICBGaWxlID0gJ2ZpbGUnLFxuICAvKipcbiAgICogQSBmb2xkZXIuXG4gICAqL1xuICBGb2xkZXIgPSAnZm9sZGVyJ1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBkb2VzRXhpc3R9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvZXNFeGlzdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gV2hlbiBgdW5kZWZpbmVkYCBvciBub3Qgc3BlY2lmaWVkLCB0aGUgYmVoYXZpb3IgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYWN0dWFsIGZpbGUgc3lzdGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGZpbGUgc3lzdGVtIG9iamVjdCB0byBjaGVjay4gRGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBGaWxlU3lzdGVtVHlwZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QWJzdHJhY3RGaWxlT3JOdWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBYnN0cmFjdEZpbGVPck51bGxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIFdoZW4gYHVuZGVmaW5lZGAgb3Igbm90IHNwZWNpZmllZCwgdGhlIGJlaGF2aW9yIGlzIGRldGVybWluZWQgYnkgdGhlIGFjdHVhbCBmaWxlIHN5c3RlbS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEFic3RyYWN0RmlsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QWJzdHJhY3RGaWxlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBXaGVuIGB1bmRlZmluZWRgIG9yIG5vdCBzcGVjaWZpZWQsIHRoZSBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhY3R1YWwgZmlsZSBzeXN0ZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gcmV0cmlldmUgdGhlIGFic3RyYWN0IGZpbGUgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRGaWxlT3JOdWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRGaWxlT3JOdWxsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBXaGVuIGB1bmRlZmluZWRgIG9yIG5vdCBzcGVjaWZpZWQsIHRoZSBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhY3R1YWwgZmlsZSBzeXN0ZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0RmlsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmlsZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gV2hlbiBgdW5kZWZpbmVkYCBvciBub3Qgc3BlY2lmaWVkLCB0aGUgYmVoYXZpb3IgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYWN0dWFsIGZpbGUgc3lzdGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmaWxlIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBhIG5vbi1leGlzdGluZyBmaWxlLlxuICAgKiAgSWYgYHRydWVgLCBhIG5ldyBmaWxlIGlzIGNyZWF0ZWQgZm9yIHRoZSBwcm92aWRlZCBwYXRoLlxuICAgKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmaWxlIGlzIG5vdCBmb3VuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0Rm9sZGVyT3JOdWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRGb2xkZXJPck51bGxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIFdoZW4gYHVuZGVmaW5lZGAgb3Igbm90IHNwZWNpZmllZCwgdGhlIGJlaGF2aW9yIGlzIGRldGVybWluZWQgYnkgdGhlIGFjdHVhbCBmaWxlIHN5c3RlbS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBmb2xkZXIgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZvbGRlcjogbnVsbCB8IFBhdGhPckZvbGRlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0Rm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIFdoZW4gYHVuZGVmaW5lZGAgb3Igbm90IHNwZWNpZmllZCwgdGhlIGJlaGF2aW9yIGlzIGRldGVybWluZWQgYnkgdGhlIGFjdHVhbCBmaWxlIHN5c3RlbS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZm9sZGVyIGlkZW50aWZpZXIuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyB0aGUgZm9sZGVyIHRvIG5vdCBleGlzdC5cbiAgICogIElmIGB0cnVlYCwgYSBuZXcgZm9sZGVyIGlzIGNyZWF0ZWQgZm9yIHRoZSBwcm92aWRlZCBwYXRoLlxuICAgKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmb2xkZXIgaXMgbm90IGZvdW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRNYXJrZG93bkZpbGVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRNYXJrZG93bkZpbGVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBtYXJrZG93biBmaWxlcyB3aXRoaW4gc3ViZm9sZGVycy4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBpc1JlY3Vyc2l2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZvbGRlciB0byByZXRyaWV2ZSB0aGUgbWFya2Rvd24gZmlsZXMgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpc1RyZWF0ZWRBc0F0dGFjaG1lbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzVHJlYXRlZEFzQXR0YWNobWVudFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZXh0ZW5zaW9ucyB0aGF0IG1hcmsgYSBmaWxlIGFzIGFuIGF0dGFjaG1lbnQsIGUuZy4gYFsnLmV4Y2FsaWRyYXcubWQnXWAuIEVhY2ggZW50cnkgaXMgbm9ybWFsaXplZCBiZWZvcmUgbWF0Y2hpbmc6IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2UgaXMgdHJpbW1lZCxcbiAgICogYSBzaW5nbGUgbGVhZGluZyBkb3QgaXMgZW5mb3JjZWQsIGFuZCB0aGUgY29tcGFyaXNvbiBpcyBjYXNlLWluc2Vuc2l0aXZlLiBFbXB0eSBlbnRyaWVzIGFyZSBpZ25vcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEV4dGVuc2lvbnM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIHRvIGNsYXNzaWZ5LlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiBBIHBhdGggb3IgYW4gYWJzdHJhY3QgZmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0aE9yQWJzdHJhY3RGaWxlID0gc3RyaW5nIHwgVEFic3RyYWN0RmlsZTtcblxuLyoqXG4gKiBBIHBhdGggb3IgYSBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JGaWxlID0gc3RyaW5nIHwgVEZpbGU7XG5cbi8qKlxuICogQSBwYXRoIG9yIGEgZm9sZGVyLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JGb2xkZXIgPSBzdHJpbmcgfCBURm9sZGVyO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRGaWxlSW50ZXJuYWx9LlxuICovXG5pbnRlcmZhY2UgR2V0RmlsZUludGVybmFsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBXaGVuIGB1bmRlZmluZWRgIG9yIG5vdCBzcGVjaWZpZWQsIHRoZSBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhY3R1YWwgZmlsZSBzeXN0ZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHJldHJpZXZlIHRoZSBhYnN0cmFjdCBmaWxlIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBhYnN0cmFjdCBmaWxlcyB0byBhbiBhcnJheSBvZiBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlcyAtIFRoZSBhYnN0cmFjdCBmaWxlcyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGFycmF5IG9mIGZpbGVzLlxuICogQHRocm93cyBFcnJvciBpZiBhbnkgb2YgdGhlIGFic3RyYWN0IGZpbGVzIGFyZSBub3QgZmlsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0FycmF5T2ZGaWxlcyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFic3RyYWN0RmlsZXMubWFwKChhYnN0cmFjdEZpbGUpID0+IGFzRmlsZShhYnN0cmFjdEZpbGUpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBhYnN0cmFjdCBmaWxlcyB0byBhbiBhcnJheSBvZiBmb2xkZXJzLlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGFic3RyYWN0IGZpbGVzIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgYXJyYXkgb2YgZm9sZGVycy5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYW55IG9mIHRoZSBhYnN0cmFjdCBmaWxlcyBhcmUgbm90IGZvbGRlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0FycmF5T2ZGb2xkZXJzKGFic3RyYWN0RmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IFRGb2xkZXJbXSB7XG4gIHJldHVybiBhYnN0cmFjdEZpbGVzLm1hcCgoYWJzdHJhY3RGaWxlKSA9PiBhc0ZvbGRlcihhYnN0cmFjdEZpbGUpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGaWxlKGFic3RyYWN0RmlsZTogbnVsbCB8IFRBYnN0cmFjdEZpbGUpOiBURmlsZSB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShhc0ZpbGVPck51bGwoYWJzdHJhY3RGaWxlKSwgJ0Fic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZScpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFic3RyYWN0IGZpbGUgdG8gYSBmaWxlIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIG9yIGBudWxsYC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZU9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGaWxlIHtcbiAgaWYgKGFic3RyYWN0RmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGU7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZpbGUnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGZvbGRlci5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGb2xkZXIoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IFRGb2xkZXIge1xuICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUoYXNGb2xkZXJPck51bGwoYWJzdHJhY3RGaWxlKSwgJ0Fic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyJyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYWJzdHJhY3QgZmlsZSB0byBhIGZvbGRlciBvciBgbnVsbGAuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIG9yIGBudWxsYC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGb2xkZXJPck51bGwoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IG51bGwgfCBURm9sZGVyIHtcbiAgaWYgKGFic3RyYWN0RmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURm9sZGVyKSB7XG4gICAgcmV0dXJuIGFic3RyYWN0RmlsZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0Fic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBwYXRoIG9yIGZpbGUgaGFzIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byBjaGVjay5cbiAqIEBwYXJhbSBleHRlbnNpb24gLSBUaGUgZXh0ZW5zaW9uIHRvIGNvbXBhcmUgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIG9yIGZpbGUgaGFzIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRXh0ZW5zaW9uKHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUsIGV4dGVuc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChpc0ZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm4gcGF0aE9yRmlsZS5leHRlbnNpb24gPT09IGV4dGVuc2lvbjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcGF0aE9yRmlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBDb21wYXJlIHRoZSBwYXRoJ3Mgb3duIGV4dGVuc2lvbiBpbnN0ZWFkIG9mIHJlc29sdmluZyB0aGUgZmlsZS5cbiAgICAvLyBSZXNvbHZpbmcgYSBzdHJpbmcgcGF0aCBpcyBPKHZhdWx0KSBvbiBhIG1pc3Mgb24gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW0uXG4gICAgLy8gVGhhdCBtaXNzIGlzIHRoZSBob3QgcGF0aCBkdXJpbmcgZGVsZXRpb24gY2FzY2FkZXMuXG4gICAgLy8gT2JzaWRpYW4gbG93ZXJjYXNlcyBhIGZpbGUncyBjYW5vbmljYWwgZXh0ZW5zaW9uLCBzbyBjb21wYXJlIGNhc2UtaW5zZW5zaXRpdmVseS5cbiAgICByZXR1cm4gZXh0bmFtZShwYXRoT3JGaWxlKS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpID09PSBleHRlbnNpb247XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBwYXRoIGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGF0aCBleGlzdHMsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZG9lc0V4aXN0KHBhcmFtczogRG9lc0V4aXN0UGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aCxcbiAgICB0eXBlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8R2V0QWJzdHJhY3RGaWxlT3JOdWxsUGFyYW1zPih7XG4gICAgYXBwLFxuICAgIGlzQ2FzZUluc2Vuc2l0aXZlLFxuICAgIHBhdGhPckZpbGU6IHBhdGhcbiAgfSkpO1xuICBpZiAoIWFic3RyYWN0RmlsZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBnZXRGaWxlU3lzdGVtVHlwZShhYnN0cmFjdEZpbGUpID09PSB0eXBlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgVEFic3RyYWN0RmlsZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmV0cmlldmFsLlxuICogQHJldHVybnMgVGhlIGFic3RyYWN0IGZpbGUuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBhYnN0cmFjdCBmaWxlIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZShwYXJhbXM6IEdldEFic3RyYWN0RmlsZVBhcmFtcyk6IFRBYnN0cmFjdEZpbGUge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGlzQ2FzZUluc2Vuc2l0aXZlLFxuICAgIHBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKFxuICAgIGdldEFic3RyYWN0RmlsZU9yTnVsbChub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8R2V0QWJzdHJhY3RGaWxlT3JOdWxsUGFyYW1zPih7XG4gICAgICBhcHAsXG4gICAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICAgIHBhdGhPckZpbGVcbiAgICB9KSksXG4gICAgYEFic3RyYWN0IGZpbGUgbm90IGZvdW5kOiAke3BhdGhPckZpbGUgYXMgc3RyaW5nfWBcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYWJzdHJhY3QgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSByZXRyaWV2YWwuXG4gKiBAcmV0dXJucyBUaGUgYWJzdHJhY3QgZmlsZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChwYXJhbXM6IEdldEFic3RyYWN0RmlsZU9yTnVsbFBhcmFtcyk6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICBwYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGlmIChwYXRoT3JGaWxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoaXNBYnN0cmFjdEZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICBpZiAoaXNGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgICByZXR1cm4gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGF0aE9yRmlsZS5wYXRoKSA/PyBwYXRoT3JGaWxlO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVEFic3RyYWN0RmlsZSBpcyBhbHdheXMgVEZpbGUgb3IgVEZvbGRlciBpbiBPYnNpZGlhbjsgZGVmZW5zaXZlIGZhbGxiYWNrLiAqL1xuICAgIGlmIChpc0ZvbGRlcihwYXRoT3JGaWxlKSkge1xuICAgICAgcmV0dXJuIGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgocGF0aE9yRmlsZS5wYXRoKSA/PyBwYXRoT3JGaWxlO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUQWJzdHJhY3RGaWxlIGlzIGFsd2F5cyBURmlsZSBvciBURm9sZGVyIGluIE9ic2lkaWFuOyBkZWZlbnNpdmUgZmFsbGJhY2suICovXG4gICAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGF0aE9yRmlsZS5wYXRoKSA/PyBwYXRoT3JGaWxlO1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIH1cblxuICBjb25zdCBmaWxlID0gZ2V0RmlsZUludGVybmFsKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxHZXRGaWxlSW50ZXJuYWxQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aDogcGF0aE9yRmlsZVxuICB9KSk7XG5cbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcblxuICBpZiAocmVzb2x2ZWRQYXRoID09PSBwYXRoT3JGaWxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZ2V0RmlsZUludGVybmFsKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxHZXRGaWxlSW50ZXJuYWxQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aDogcmVzb2x2ZWRQYXRoXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBmaWxlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmV0cmlldmFsLlxuICogQHJldHVybnMgVGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlKHBhcmFtczogR2V0RmlsZVBhcmFtcyk6IFRGaWxlIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICBwYXRoT3JGaWxlLFxuICAgIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZ1xuICB9ID0gcGFyYW1zO1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPEdldEZpbGVPck51bGxQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aE9yRmlsZVxuICB9KSk7XG4gIGlmICghZmlsZSkge1xuICAgIGlmIChzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcpIHtcbiAgICAgIGZpbGUgPSBjcmVhdGVURmlsZUluc3RhbmNlKGFwcCwgcGF0aE9yRmlsZSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke3BhdGhPckZpbGUgYXMgc3RyaW5nfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmaWxlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGZpbGUgb3IgYG51bGxgIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZpbGUuXG4gKiBJZiB0aGUgcHJvdmlkZWQgYXJndW1lbnQgaXMgYWxyZWFkeSBhIGZpbGUsIGl0IGlzIHJldHVybmVkIGFzIGlzLlxuICogT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYXBwJ3MgdmF1bHQgdG8gcmV0cmlldmUgdGhlIGZpbGUgYnkgaXRzIHBhdGguXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmV0cmlldmFsLlxuICogQHJldHVybnMgVGhlIGZpbGUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlT3JOdWxsKHBhcmFtczogR2V0RmlsZU9yTnVsbFBhcmFtcyk6IG51bGwgfCBURmlsZSB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxHZXRBYnN0cmFjdEZpbGVPck51bGxQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aE9yRmlsZVxuICB9KSk7XG4gIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB0eXBlIG9mIGEgZmlsZSBzeXN0ZW0gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBnZXQgdGhlIHR5cGUgb2YuXG4gKiBAcmV0dXJucyBUaGUgdHlwZSBvZiB0aGUgYWJzdHJhY3QgZmlsZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZSBvciBhIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVTeXN0ZW1UeXBlKGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IEZpbGVTeXN0ZW1UeXBlIHtcbiAgaWYgKGlzRmlsZShhYnN0cmFjdEZpbGUpKSB7XG4gICAgcmV0dXJuIEZpbGVTeXN0ZW1UeXBlLkZpbGU7XG4gIH1cbiAgaWYgKGlzRm9sZGVyKGFic3RyYWN0RmlsZSkpIHtcbiAgICByZXR1cm4gRmlsZVN5c3RlbVR5cGUuRm9sZGVyO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlIG9yIGEgZm9sZGVyJyk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZm9sZGVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhcHAgYW5kIHBhdGhPckZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSByZXRyaWV2YWwuXG4gKiBAcmV0dXJucyBUaGUgcmV0cmlldmVkIGZvbGRlci5cbiAqIEB0aHJvd3MgSWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXIocGFyYW1zOiBHZXRGb2xkZXJQYXJhbXMpOiBURm9sZGVyIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICBwYXRoT3JGb2xkZXIsXG4gICAgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nXG4gIH0gPSBwYXJhbXM7XG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPEdldEZvbGRlck9yTnVsbFBhcmFtcz4oe1xuICAgIGFwcCxcbiAgICBpc0Nhc2VJbnNlbnNpdGl2ZSxcbiAgICBwYXRoT3JGb2xkZXJcbiAgfSkpO1xuICBpZiAoIWZvbGRlcikge1xuICAgIGlmIChzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcpIHtcbiAgICAgIGZvbGRlciA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHAsIHBhdGhPckZvbGRlciBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvbGRlciBub3QgZm91bmQ6ICR7cGF0aE9yRm9sZGVyIGFzIHN0cmluZ31gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZm9sZGVyO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGZvbGRlciBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHJldHJpZXZhbC5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXJPck51bGwocGFyYW1zOiBHZXRGb2xkZXJPck51bGxQYXJhbXMpOiBudWxsIHwgVEZvbGRlciB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgaXNDYXNlSW5zZW5zaXRpdmUsXG4gICAgcGF0aE9yRm9sZGVyXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZvbGRlciA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8R2V0QWJzdHJhY3RGaWxlT3JOdWxsUGFyYW1zPih7XG4gICAgYXBwLFxuICAgIGlzQ2FzZUluc2Vuc2l0aXZlLFxuICAgIHBhdGhPckZpbGU6IHBhdGhPckZvbGRlclxuICB9KSk7XG4gIGlmIChpc0ZvbGRlcihmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgZmlsZXMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcyB3aXRoaW4gYSBzcGVjaWZpZWQgZm9sZGVyIG9yIHBhdGguXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmV0cmlldmFsLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZmlsZXMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXMocGFyYW1zOiBHZXRNYXJrZG93bkZpbGVzUGFyYW1zKTogVEZpbGVbXSB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgaXNSZWN1cnNpdmUsXG4gICAgcGF0aE9yRm9sZGVyXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlcih7XG4gICAgYXBwLFxuICAgIHBhdGhPckZvbGRlclxuICB9KTtcblxuICBsZXQgbWFya2Rvd25GaWxlczogVEZpbGVbXSA9IFtdO1xuXG4gIGlmIChpc1JlY3Vyc2l2ZSkge1xuICAgIFZhdWx0LnJlY3Vyc2VDaGlsZHJlbihmb2xkZXIsIChhYnN0cmFjdEZpbGUpID0+IHtcbiAgICAgIGlmIChpc01hcmtkb3duRmlsZShhYnN0cmFjdEZpbGUpICYmIGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgIG1hcmtkb3duRmlsZXMucHVzaChhYnN0cmFjdEZpbGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG1hcmtkb3duRmlsZXMgPSBmb2xkZXIuY2hpbGRyZW4uZmlsdGVyKChmaWxlKSA9PiBpc01hcmtkb3duRmlsZShmaWxlKSkgYXMgVEZpbGVbXTtcbiAgfVxuXG4gIG1hcmtkb3duRmlsZXMgPSBtYXJrZG93bkZpbGVzLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xuICByZXR1cm4gbWFya2Rvd25GaWxlcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZpbGUgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSByZXByZXNlbnRpbmcgdGhlIGZpbGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURmlsZT4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbCh7XG4gICAgYXBwLFxuICAgIHBhdGhPckZpbGU6IHBhdGhcbiAgfSk7XG4gIGlmIChmaWxlKSB7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICBjb25zdCBmb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChwYXRoKTtcbiAgYXdhaXQgZ2V0T3JDcmVhdGVGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmb2xkZXIgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIHJldHJpZXZlIG9yIGNyZWF0ZS5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgcmVwcmVzZW50aW5nIHRoZSBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZUZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURm9sZGVyPiB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbCh7XG4gICAgYXBwLFxuICAgIHBhdGhPckZvbGRlcjogcGF0aFxuICB9KTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9mIHRoZSBnaXZlbiBgcGF0aE9yRmlsZWAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgYHBhdGhPckZpbGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIHBhdGhPckZpbGUucGF0aDtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoe1xuICAgIGFwcCxcbiAgICBwYXRoT3JGaWxlXG4gIH0pO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBmaWxlLnBhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0UmVzb2x2ZWRQYXRoKHBhdGhPckZpbGUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBhYnN0cmFjdCBmaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIGFic3RyYWN0IGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic3RyYWN0RmlsZShmaWxlOiB1bmtub3duKTogZmlsZSBpcyBUQWJzdHJhY3RGaWxlIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBUQWJzdHJhY3RGaWxlO1xufVxuXG4vKipcbiAqICAgQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgYmFzZSBmaWxlLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBiYXNlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2VGaWxlKHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uKHBhdGhPckZpbGUsIEJBU0VfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBjYW52YXMgZmlsZSBvciBub3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGUocGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24ocGF0aE9yRmlsZSwgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYW4gaW5zdGFuY2Ugb2YgZmlsZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWxlKGZpbGU6IHVua25vd24pOiBmaWxlIGlzIFRGaWxlIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBURmlsZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYSBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZmlsZSBpcyBhIGZvbGRlciwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZvbGRlcihmaWxlOiB1bmtub3duKTogZmlsZSBpcyBURm9sZGVyIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBURm9sZGVyO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBjaGVja0V4dGVuc2lvbihwYXRoT3JGaWxlLCBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgbm90ZS5cbiAqXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgbm90ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90ZShwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlKSB8fCBpc0NhbnZhc0ZpbGUocGF0aE9yRmlsZSkgfHwgaXNCYXNlRmlsZShwYXRoT3JGaWxlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gYXR0YWNobWVudCBiZWNhdXNlIG9mIGl0cyBleHRlbnNpb24uXG4gKlxuICogU29tZSBwbHVnaW5zIHN0b3JlIHRoZWlyIGRhdGEgaW4gZmlsZXMgdGhhdCBhcmUgbWFya2Rvd24gb24gZGlzayBidXQgYXJlIG5vdCBwcm9zZSBcdTIwMTQgRXhjYWxpZHJhdywgZm9yIGV4YW1wbGUsIHNhdmVzIGVhY2ggZHJhd2luZyBhcyBgc2tldGNoLmV4Y2FsaWRyYXcubWRgLlxuICogT2JzaWRpYW4gcmVwb3J0cyBzdWNoIGEgZmlsZSdzIGV4dGVuc2lvbiBhcyBgbWRgLCBzbyBhIGNhbGxlciB0aGF0IHdhbnRzIHRvIHRlbGwgYSBkcmF3aW5nIGFwYXJ0IGZyb20gYSBub3RlIGhhcyB0byBtYXRjaCB0aGUgZnVsbCBtdWx0aS1wYXJ0IGV4dGVuc2lvblxuICogKGAuZXhjYWxpZHJhdy5tZGApIGFnYWluc3QgdGhlIGZpbGUgbmFtZS4gV2hpY2ggZXh0ZW5zaW9ucyBjb3VudCBpcyB0aGUgY2FsbGVyJ3MgY29uZmlndXJhdGlvbiwgbm90IHRoaXMgbGlicmFyeSdzIFx1MjAxNCBvbmx5IHRoZSBtYXRjaGluZyBydWxlIGlzIHNoYXJlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjbGFzc2lmeSBhbmQgdGhlIGNvbmZpZ3VyZWQgYXR0YWNobWVudCBleHRlbnNpb25zLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBhdHRhY2htZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmVhdGVkQXNBdHRhY2htZW50KHBhcmFtczogSXNUcmVhdGVkQXNBdHRhY2htZW50UGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IHtcbiAgICBhdHRhY2htZW50RXh0ZW5zaW9ucyxcbiAgICBwYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGlmIChwYXRoT3JGaWxlID09PSBudWxsIHx8IGlzRm9sZGVyKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgbG93ZXJDYXNlTmFtZSA9IGdldE5hbWUocGF0aE9yRmlsZSkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGF0dGFjaG1lbnRFeHRlbnNpb25zLnNvbWUoKGV4dGVuc2lvbikgPT4ge1xuICAgIC8vIEVuZm9yY2luZyBhIHNpbmdsZSBsZWFkaW5nIGRvdCBpcyB3aGF0IGtlZXBzIHRoZSBtYXRjaCBvbiBhbiBleHRlbnNpb24gYm91bmRhcnkuXG4gICAgLy8gQSBiYXJlIGByYXcubWRgIHdvdWxkIG90aGVyd2lzZSBtYXRjaCBgc2tldGNoLmV4Y2FsaWRyYXcubWRgLCB3aGljaCBpcyBuZXZlciB3aGF0IGEgY2FsbGVyIG1lYW5zLlxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFeHRlbnNpb24gPSBleHRlbnNpb24udHJpbSgpLnJlcGxhY2UoL15cXC4rLywgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRFeHRlbnNpb24gIT09ICcnICYmIGxvd2VyQ2FzZU5hbWUuZW5kc1dpdGgoYC4ke25vcm1hbGl6ZWRFeHRlbnNpb259YCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbSB0aGUgZmlsZSBwYXRoIGlmIHRoZSBmaWxlIGlzIGEgbWFya2Rvd24gZmlsZS5cbiAqIElmIHRoZSBmaWxlIGlzIG5vdCBhIG1hcmtkb3duIGZpbGUsIHRoZSBvcmlnaW5hbCBmaWxlIHBhdGggaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byB0cmltIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIHBhdGggd2l0aCB0aGUgbWFya2Rvd24gZXh0ZW5zaW9uIHRyaW1tZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTWFya2Rvd25FeHRlbnNpb24oZmlsZTogVEFic3RyYWN0RmlsZSk6IHN0cmluZyB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoZmlsZSkpIHtcbiAgICByZXR1cm4gZmlsZS5wYXRoO1xuICB9XG5cbiAgcmV0dXJuIHRyaW1FbmQoe1xuICAgICRzdHJpbmc6IGZpbGUucGF0aCxcbiAgICBzdWZmaXg6IGAuJHtNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTn1gXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRGaWxlSW50ZXJuYWwocGFyYW1zOiBHZXRGaWxlSW50ZXJuYWxQYXJhbXMpOiBudWxsIHwgVEFic3RyYWN0RmlsZSB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBsZXQgeyBpc0Nhc2VJbnNlbnNpdGl2ZSB9ID0gcGFyYW1zO1xuICBpc0Nhc2VJbnNlbnNpdGl2ZSA/Pz0gZ2V0RGF0YUFkYXB0ZXJFeChhcHApLmluc2Vuc2l0aXZlO1xuICBpZiAoaXNDYXNlSW5zZW5zaXRpdmUpIHtcbiAgICBjb25zdCBjYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXggPSBnZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgoYXBwKTtcbiAgICBpZiAoY2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KSB7XG4gICAgICByZXR1cm4gY2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4LmdldChwYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGhJbnNlbnNpdGl2ZShwYXRoKTtcbiAgfVxuXG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHBhdGgpO1xufVxuXG5mdW5jdGlvbiBnZXROYW1lKHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSk6IHN0cmluZyB7XG4gIHJldHVybiBpc0Fic3RyYWN0RmlsZShwYXRoT3JGaWxlKSA/IHBhdGhPckZpbGUubmFtZSA6IGJhc2VuYW1lKHBhdGhPckZpbGUpO1xufVxuXG5mdW5jdGlvbiBnZXRSZXNvbHZlZFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGgocmVzb2x2ZSgnLycsIHBhdGgpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUyxtQ0FBbUM7QUFDNUM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxlQUFlO0FBQ3hCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsbUNBQW1DO0FBS3JDLE1BQU0sc0JBQXNCO0FBSzVCLE1BQU0sd0JBQXdCO0FBSzlCLE1BQU0sMEJBQTBCO0FBS2hDLElBQUssaUJBQUwsa0JBQUtBLG9CQUFMO0FBSUwsRUFBQUEsZ0JBQUEsVUFBTztBQUlQLEVBQUFBLGdCQUFBLFlBQVM7QUFSQyxTQUFBQTtBQUFBLEdBQUE7QUE4UUwsU0FBUyxlQUFlLGVBQXlDO0FBQ3RFLFNBQU8sY0FBYyxJQUFJLENBQUMsaUJBQWlCLE9BQU8sWUFBWSxDQUFDO0FBQ2pFO0FBU08sU0FBUyxpQkFBaUIsZUFBMkM7QUFDMUUsU0FBTyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsU0FBUyxZQUFZLENBQUM7QUFDbkU7QUFTTyxTQUFTLE9BQU8sY0FBMkM7QUFDaEUsU0FBTyxrQkFBa0IsYUFBYSxZQUFZLEdBQUcsNkJBQTZCO0FBQ3BGO0FBU08sU0FBUyxhQUFhLGNBQWtEO0FBQzdFLE1BQUksaUJBQWlCLE1BQU07QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLHdCQUF3QixPQUFPO0FBQ2pDLFdBQU87QUFBQSxFQUNUO0FBQ0EsUUFBTSxJQUFJLE1BQU0sNkJBQTZCO0FBQy9DO0FBU08sU0FBUyxTQUFTLGNBQTZDO0FBQ3BFLFNBQU8sa0JBQWtC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
@@ -36,18 +36,18 @@ function setFrontmatter(content, newFrontmatter) {
36
36
  if (Object.keys(newFrontmatter).length === 0) {
37
37
  return content.slice(frontmatterInfo.contentStart);
38
38
  }
39
- const newFrontmatterStr = stringifyYaml(newFrontmatter);
39
+ const newFrontmatterString = stringifyYaml(newFrontmatter);
40
40
  return frontmatterInfo.exists ? insertAt({
41
+ $string: content,
41
42
  endIndex: frontmatterInfo.to,
42
43
  startIndex: frontmatterInfo.from,
43
- str: content,
44
- substring: newFrontmatterStr
44
+ substring: newFrontmatterString
45
45
  }) : `---
46
- ${newFrontmatterStr}---
46
+ ${newFrontmatterString}---
47
47
  ${content}`;
48
48
  }
49
49
  export {
50
50
  parseFrontmatter,
51
51
  setFrontmatter
52
52
  };
53
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2Zyb250bWF0dGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgYW5kIG1hbmFnaW5nIFlBTUwgZnJvbnQgbWF0dGVyIGluIE9ic2lkaWFuIG5vdGVzLlxuICovXG5cbmltcG9ydCB7XG4gIGdldEZyb250TWF0dGVySW5mbyxcbiAgcGFyc2VZYW1sLFxuICBzdHJpbmdpZnlZYW1sXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5pbXBvcnQgeyBpbnNlcnRBdCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5cbi8qKlxuICogQSBjb21iaW5lZCBmcm9udCBtYXR0ZXIgb2YgYSBkb2N1bWVudC5cbiAqIEl0IGlzIGEgdW5pb24gb2YgY3VzdG9tIGZyb250IG1hdHRlciwgT2JzaWRpYW4gZnJvbnQgbWF0dGVyLCBhbmQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgdHlwZSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiA9IEdlbmVyaWNPYmplY3Q8Q3VzdG9tRnJvbnRtYXR0ZXIgJiBPYnNpZGlhbkZyb250bWF0dGVyPjtcblxuLyoqXG4gKiBBIGZyb250IG1hdHRlciBvZiBhbiBPYnNpZGlhbiBmaWxlLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vaGVscC5vYnNpZGlhbi5tZC9FZGl0aW5nK2FuZCtmb3JtYXR0aW5nL1Byb3BlcnRpZXMjRGVmYXVsdCtwcm9wZXJ0aWVzfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuRnJvbnRtYXR0ZXIge1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYWxpYXNlcyBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBhbGlhc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBub3RlLlxuICAgKi9cbiAgY3NzY2xhc3Nlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiB0YWdzIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIHRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIGZyb250IG1hdHRlciBmb3IgcHVibGlzaGluZyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2hlbHAub2JzaWRpYW4ubWQvRWRpdGluZythbmQrZm9ybWF0dGluZy9Qcm9wZXJ0aWVzI1Byb3BlcnRpZXMrZm9yK09ic2lkaWFuK1B1Ymxpc2h9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5QdWJsaXNoRnJvbnRtYXR0ZXIge1xuICAvKipcbiAgICogQSBjb3ZlciBpbWFnZSBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBjb3Zlcj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaW1hZ2UgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGVybWFuZW50IGxpbmsgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgcGVybWFsaW5rPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBub3RlIGlzIHB1Ymxpc2hlZC5cbiAgICovXG4gIHB1Ymxpc2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gY29udGVudCBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBzdHJpbmcgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihjb250ZW50OiBzdHJpbmcpOiBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiB7XG4gIGNvbnN0IGZyb250bWF0dGVySW5mbyA9IGdldEZyb250TWF0dGVySW5mbyhjb250ZW50KTtcbiAgcmV0dXJuIChwYXJzZVlhbWwoZnJvbnRtYXR0ZXJJbmZvLmZyb250bWF0dGVyKSA/PyB7fSkgYXMgQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj47XG59XG5cbi8qKlxuICogU2V0cyB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gY29udGVudCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBzdHJpbmcgdG8gc2V0IHRoZSBmcm9udCBtYXR0ZXIgaW4uXG4gKiBAcGFyYW0gbmV3RnJvbnRtYXR0ZXIgLSBUaGUgbmV3IGZyb250IG1hdHRlciB0byBzZXQuXG4gKiBAcmV0dXJucyBUaGUgbmV3IGNvbnRlbnQgc3RyaW5nIHdpdGggdGhlIGZyb250IG1hdHRlciBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGcm9udG1hdHRlcihjb250ZW50OiBzdHJpbmcsIG5ld0Zyb250bWF0dGVyOiBvYmplY3QpOiBzdHJpbmcge1xuICBjb25zdCBmcm9udG1hdHRlckluZm8gPSBnZXRGcm9udE1hdHRlckluZm8oY29udGVudCk7XG4gIGlmIChPYmplY3Qua2V5cyhuZXdGcm9udG1hdHRlcikubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQuc2xpY2UoZnJvbnRtYXR0ZXJJbmZvLmNvbnRlbnRTdGFydCk7XG4gIH1cblxuICBjb25zdCBuZXdGcm9udG1hdHRlclN0ciA9IHN0cmluZ2lmeVlhbWwobmV3RnJvbnRtYXR0ZXIpO1xuXG4gIHJldHVybiBmcm9udG1hdHRlckluZm8uZXhpc3RzXG4gICAgPyBpbnNlcnRBdCh7XG4gICAgICBlbmRJbmRleDogZnJvbnRtYXR0ZXJJbmZvLnRvLFxuICAgICAgc3RhcnRJbmRleDogZnJvbnRtYXR0ZXJJbmZvLmZyb20sXG4gICAgICBzdHI6IGNvbnRlbnQsXG4gICAgICBzdWJzdHJpbmc6IG5ld0Zyb250bWF0dGVyU3RyXG4gICAgfSlcbiAgICA6IGAtLS1cXG4ke25ld0Zyb250bWF0dGVyU3RyfS0tLVxcbiR7Y29udGVudH1gO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFJUCxTQUFTLGdCQUFnQjtBQXVFbEIsU0FBUyxpQkFBOEMsU0FBeUQ7QUFDckgsUUFBTSxrQkFBa0IsbUJBQW1CLE9BQU87QUFDbEQsU0FBUSxVQUFVLGdCQUFnQixXQUFXLEtBQUssQ0FBQztBQUNyRDtBQVNPLFNBQVMsZUFBZSxTQUFpQixnQkFBZ0M7QUFDOUUsUUFBTSxrQkFBa0IsbUJBQW1CLE9BQU87QUFDbEQsTUFBSSxPQUFPLEtBQUssY0FBYyxFQUFFLFdBQVcsR0FBRztBQUM1QyxXQUFPLFFBQVEsTUFBTSxnQkFBZ0IsWUFBWTtBQUFBLEVBQ25EO0FBRUEsUUFBTSxvQkFBb0IsY0FBYyxjQUFjO0FBRXRELFNBQU8sZ0JBQWdCLFNBQ25CLFNBQVM7QUFBQSxJQUNULFVBQVUsZ0JBQWdCO0FBQUEsSUFDMUIsWUFBWSxnQkFBZ0I7QUFBQSxJQUM1QixLQUFLO0FBQUEsSUFDTCxXQUFXO0FBQUEsRUFDYixDQUFDLElBQ0M7QUFBQSxFQUFRLGlCQUFpQjtBQUFBLEVBQVEsT0FBTztBQUM5QzsiLAogICJuYW1lcyI6IFtdCn0K
53
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2Zyb250bWF0dGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgYW5kIG1hbmFnaW5nIFlBTUwgZnJvbnQgbWF0dGVyIGluIE9ic2lkaWFuIG5vdGVzLlxuICovXG5cbmltcG9ydCB7XG4gIGdldEZyb250TWF0dGVySW5mbyxcbiAgcGFyc2VZYW1sLFxuICBzdHJpbmdpZnlZYW1sXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5pbXBvcnQgeyBpbnNlcnRBdCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5cbi8qKlxuICogQSBjb21iaW5lZCBmcm9udCBtYXR0ZXIgb2YgYSBkb2N1bWVudC5cbiAqIEl0IGlzIGEgdW5pb24gb2YgY3VzdG9tIGZyb250IG1hdHRlciwgT2JzaWRpYW4gZnJvbnQgbWF0dGVyLCBhbmQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgdHlwZSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiA9IEdlbmVyaWNPYmplY3Q8Q3VzdG9tRnJvbnRtYXR0ZXIgJiBPYnNpZGlhbkZyb250bWF0dGVyPjtcblxuLyoqXG4gKiBBIGZyb250IG1hdHRlciBvZiBhbiBPYnNpZGlhbiBmaWxlLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vaGVscC5vYnNpZGlhbi5tZC9FZGl0aW5nK2FuZCtmb3JtYXR0aW5nL1Byb3BlcnRpZXMjRGVmYXVsdCtwcm9wZXJ0aWVzfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuRnJvbnRtYXR0ZXIge1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYWxpYXNlcyBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBhbGlhc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBub3RlLlxuICAgKi9cbiAgY3NzY2xhc3Nlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiB0YWdzIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIHRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIGZyb250IG1hdHRlciBmb3IgcHVibGlzaGluZyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2hlbHAub2JzaWRpYW4ubWQvRWRpdGluZythbmQrZm9ybWF0dGluZy9Qcm9wZXJ0aWVzI1Byb3BlcnRpZXMrZm9yK09ic2lkaWFuK1B1Ymxpc2h9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5QdWJsaXNoRnJvbnRtYXR0ZXIge1xuICAvKipcbiAgICogQSBjb3ZlciBpbWFnZSBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBjb3Zlcj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaW1hZ2UgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGVybWFuZW50IGxpbmsgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgcGVybWFsaW5rPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBub3RlIGlzIHB1Ymxpc2hlZC5cbiAgICovXG4gIHB1Ymxpc2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gY29udGVudCBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBzdHJpbmcgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihjb250ZW50OiBzdHJpbmcpOiBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiB7XG4gIGNvbnN0IGZyb250bWF0dGVySW5mbyA9IGdldEZyb250TWF0dGVySW5mbyhjb250ZW50KTtcbiAgcmV0dXJuIChwYXJzZVlhbWwoZnJvbnRtYXR0ZXJJbmZvLmZyb250bWF0dGVyKSA/PyB7fSkgYXMgQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj47XG59XG5cbi8qKlxuICogU2V0cyB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gY29udGVudCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBzdHJpbmcgdG8gc2V0IHRoZSBmcm9udCBtYXR0ZXIgaW4uXG4gKiBAcGFyYW0gbmV3RnJvbnRtYXR0ZXIgLSBUaGUgbmV3IGZyb250IG1hdHRlciB0byBzZXQuXG4gKiBAcmV0dXJucyBUaGUgbmV3IGNvbnRlbnQgc3RyaW5nIHdpdGggdGhlIGZyb250IG1hdHRlciBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGcm9udG1hdHRlcihjb250ZW50OiBzdHJpbmcsIG5ld0Zyb250bWF0dGVyOiBvYmplY3QpOiBzdHJpbmcge1xuICBjb25zdCBmcm9udG1hdHRlckluZm8gPSBnZXRGcm9udE1hdHRlckluZm8oY29udGVudCk7XG4gIGlmIChPYmplY3Qua2V5cyhuZXdGcm9udG1hdHRlcikubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQuc2xpY2UoZnJvbnRtYXR0ZXJJbmZvLmNvbnRlbnRTdGFydCk7XG4gIH1cblxuICBjb25zdCBuZXdGcm9udG1hdHRlclN0cmluZyA9IHN0cmluZ2lmeVlhbWwobmV3RnJvbnRtYXR0ZXIpO1xuXG4gIHJldHVybiBmcm9udG1hdHRlckluZm8uZXhpc3RzXG4gICAgPyBpbnNlcnRBdCh7XG4gICAgICAkc3RyaW5nOiBjb250ZW50LFxuICAgICAgZW5kSW5kZXg6IGZyb250bWF0dGVySW5mby50byxcbiAgICAgIHN0YXJ0SW5kZXg6IGZyb250bWF0dGVySW5mby5mcm9tLFxuICAgICAgc3Vic3RyaW5nOiBuZXdGcm9udG1hdHRlclN0cmluZ1xuICAgIH0pXG4gICAgOiBgLS0tXFxuJHtuZXdGcm9udG1hdHRlclN0cmluZ30tLS1cXG4ke2NvbnRlbnR9YDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBSVAsU0FBUyxnQkFBZ0I7QUF1RWxCLFNBQVMsaUJBQThDLFNBQXlEO0FBQ3JILFFBQU0sa0JBQWtCLG1CQUFtQixPQUFPO0FBQ2xELFNBQVEsVUFBVSxnQkFBZ0IsV0FBVyxLQUFLLENBQUM7QUFDckQ7QUFTTyxTQUFTLGVBQWUsU0FBaUIsZ0JBQWdDO0FBQzlFLFFBQU0sa0JBQWtCLG1CQUFtQixPQUFPO0FBQ2xELE1BQUksT0FBTyxLQUFLLGNBQWMsRUFBRSxXQUFXLEdBQUc7QUFDNUMsV0FBTyxRQUFRLE1BQU0sZ0JBQWdCLFlBQVk7QUFBQSxFQUNuRDtBQUVBLFFBQU0sdUJBQXVCLGNBQWMsY0FBYztBQUV6RCxTQUFPLGdCQUFnQixTQUNuQixTQUFTO0FBQUEsSUFDVCxTQUFTO0FBQUEsSUFDVCxVQUFVLGdCQUFnQjtBQUFBLElBQzFCLFlBQVksZ0JBQWdCO0FBQUEsSUFDNUIsV0FBVztBQUFBLEVBQ2IsQ0FBQyxJQUNDO0FBQUEsRUFBUSxvQkFBb0I7QUFBQSxFQUFRLE9BQU87QUFDakQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -12,7 +12,7 @@
12
12
  * Appends a code block to the given DocumentFragment or HTMLElement, styled to match Obsidian's
13
13
  * rendered-markdown inline code.
14
14
  *
15
- * @param el - The DocumentFragment or HTMLElement to append the code block to.
15
+ * @param element - The DocumentFragment or HTMLElement to append the code block to.
16
16
  * @param code - The code to be displayed in the code block.
17
17
  */
18
- export declare function appendCodeBlock(el: DocumentFragment | HTMLElement, code: string): void;
18
+ export declare function appendCodeBlock(element: DocumentFragment | HTMLElement, code: string): void;
@@ -22,12 +22,12 @@ if you want to view the source, please visit the github repository of this plugi
22
22
  })();
23
23
 
24
24
  import { CssClass } from "./css-class.mjs";
25
- function appendCodeBlock(el, code) {
26
- el.createEl("strong", { cls: `${CssClass.MarkdownRendered} ${CssClass.Code}` }, (strong) => {
25
+ function appendCodeBlock(element, code) {
26
+ element.createEl("strong", { cls: `${CssClass.MarkdownRendered} ${CssClass.Code}` }, (strong) => {
27
27
  strong.createEl("code", { text: code });
28
28
  });
29
29
  }
30
30
  export {
31
31
  appendCodeBlock
32
32
  };
33
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2h0bWwtZWxlbWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIE9ic2lkaWFuLXNwZWNpZmljIEhUTUwgZWxlbWVudCBoZWxwZXJzLlxuICpcbiAqIFVubGlrZSB0aGUgT2JzaWRpYW4tcnVudGltZS1hZ25vc3RpYyBoZWxwZXJzIGluIGBzcmMvaHRtbC1lbGVtZW50LnRzYCwgdGhlc2UgZGVwZW5kIG9uXG4gKiBPYnNpZGlhbi1zcGVjaWZpYyBwcmVzZW50YXRpb24gXHUyMDE0IGN1cnJlbnRseSB0aGUgYG1hcmtkb3duLXJlbmRlcmVkYCBDU1MgY2xhc3MgdGhhdCBzdHlsZXMgcmVuZGVyZWRcbiAqIG1hcmtkb3duIFx1MjAxNCBzbyB0aGV5IGxpdmUgaW4gdGhlIE9ic2lkaWFuIGxheWVyIGFuZCB1c2UgT2JzaWRpYW4ncyBgY3JlYXRlRWxgIERPTSBhdWdtZW50YXRpb24uXG4gKi9cblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuL2Nzcy1jbGFzcy50cyc7XG5cbi8qKlxuICogQXBwZW5kcyBhIGNvZGUgYmxvY2sgdG8gdGhlIGdpdmVuIERvY3VtZW50RnJhZ21lbnQgb3IgSFRNTEVsZW1lbnQsIHN0eWxlZCB0byBtYXRjaCBPYnNpZGlhbidzXG4gKiByZW5kZXJlZC1tYXJrZG93biBpbmxpbmUgY29kZS5cbiAqXG4gKiBAcGFyYW0gZWwgLSBUaGUgRG9jdW1lbnRGcmFnbWVudCBvciBIVE1MRWxlbWVudCB0byBhcHBlbmQgdGhlIGNvZGUgYmxvY2sgdG8uXG4gKiBAcGFyYW0gY29kZSAtIFRoZSBjb2RlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgY29kZSBibG9jay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZENvZGVCbG9jayhlbDogRG9jdW1lbnRGcmFnbWVudCB8IEhUTUxFbGVtZW50LCBjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgZWwuY3JlYXRlRWwoJ3N0cm9uZycsIHsgY2xzOiBgJHtDc3NDbGFzcy5NYXJrZG93blJlbmRlcmVkfSAke0Nzc0NsYXNzLkNvZGV9YCB9LCAoc3Ryb25nKSA9PiB7XG4gICAgc3Ryb25nLmNyZWF0ZUVsKCdjb2RlJywgeyB0ZXh0OiBjb2RlIH0pO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsU0FBUyxnQkFBZ0I7QUFTbEIsU0FBUyxnQkFBZ0IsSUFBb0MsTUFBb0I7QUFDdEYsS0FBRyxTQUFTLFVBQVUsRUFBRSxLQUFLLEdBQUcsU0FBUyxnQkFBZ0IsSUFBSSxTQUFTLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVztBQUMxRixXQUFPLFNBQVMsUUFBUSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQUEsRUFDeEMsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
33
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2h0bWwtZWxlbWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIE9ic2lkaWFuLXNwZWNpZmljIEhUTUwgZWxlbWVudCBoZWxwZXJzLlxuICpcbiAqIFVubGlrZSB0aGUgT2JzaWRpYW4tcnVudGltZS1hZ25vc3RpYyBoZWxwZXJzIGluIGBzcmMvaHRtbC1lbGVtZW50LnRzYCwgdGhlc2UgZGVwZW5kIG9uXG4gKiBPYnNpZGlhbi1zcGVjaWZpYyBwcmVzZW50YXRpb24gXHUyMDE0IGN1cnJlbnRseSB0aGUgYG1hcmtkb3duLXJlbmRlcmVkYCBDU1MgY2xhc3MgdGhhdCBzdHlsZXMgcmVuZGVyZWRcbiAqIG1hcmtkb3duIFx1MjAxNCBzbyB0aGV5IGxpdmUgaW4gdGhlIE9ic2lkaWFuIGxheWVyIGFuZCB1c2UgT2JzaWRpYW4ncyBgY3JlYXRlRWxgIERPTSBhdWdtZW50YXRpb24uXG4gKi9cblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuL2Nzcy1jbGFzcy50cyc7XG5cbi8qKlxuICogQXBwZW5kcyBhIGNvZGUgYmxvY2sgdG8gdGhlIGdpdmVuIERvY3VtZW50RnJhZ21lbnQgb3IgSFRNTEVsZW1lbnQsIHN0eWxlZCB0byBtYXRjaCBPYnNpZGlhbidzXG4gKiByZW5kZXJlZC1tYXJrZG93biBpbmxpbmUgY29kZS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50IHRvIGFwcGVuZCB0aGUgY29kZSBibG9jayB0by5cbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29kZUJsb2NrKGVsZW1lbnQ6IERvY3VtZW50RnJhZ21lbnQgfCBIVE1MRWxlbWVudCwgY29kZTogc3RyaW5nKTogdm9pZCB7XG4gIGVsZW1lbnQuY3JlYXRlRWwoJ3N0cm9uZycsIHsgY2xzOiBgJHtDc3NDbGFzcy5NYXJrZG93blJlbmRlcmVkfSAke0Nzc0NsYXNzLkNvZGV9YCB9LCAoc3Ryb25nKSA9PiB7XG4gICAgc3Ryb25nLmNyZWF0ZUVsKCdjb2RlJywgeyB0ZXh0OiBjb2RlIH0pO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsU0FBUyxnQkFBZ0I7QUFTbEIsU0FBUyxnQkFBZ0IsU0FBeUMsTUFBb0I7QUFDM0YsVUFBUSxTQUFTLFVBQVUsRUFBRSxLQUFLLEdBQUcsU0FBUyxnQkFBZ0IsSUFBSSxTQUFTLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVztBQUMvRixXQUFPLFNBQVMsUUFBUSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQUEsRUFDeEMsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -27,5 +27,12 @@ export type TranslationsMap = Record<string, Record<string, unknown>>;
27
27
  export declare function initI18N(translationsMap: TranslationsMap, isAsync?: boolean): Promise<void>;
28
28
  /**
29
29
  * The `t` function.
30
+ *
31
+ * If {@link initI18N} has not been called yet — which is the case for a plugin that extends Obsidian's raw `Plugin`
32
+ * instead of `PluginBase`, since `PluginBase.onload` is the only caller of {@link initI18N} — the first call lazily
33
+ * initializes the default `obsidian-dev-utils` translations and still returns the correct string. That fallback is a
34
+ * supported path, so it is reported through the `obsidian-dev-utils:I18N:t` debug namespace rather than the console:
35
+ * it stays silent unless debug messages are enabled. See
36
+ * {@link https://mnaoumov.dev/obsidian-dev-utils/guides/debugging/}.
30
37
  */
31
38
  export declare const t: TFunction;
@@ -27,6 +27,7 @@ import i18next, {
27
27
  } from "i18next";
28
28
  import { getLanguage } from "obsidian";
29
29
  import { invokeAsyncSafely } from "../../async.mjs";
30
+ import { getLibDebugger } from "../../debug.mjs";
30
31
  import { en } from "./locales/en.mjs";
31
32
  import {
32
33
  DEFAULT_LANGUAGE,
@@ -56,7 +57,7 @@ async function initI18N(translationsMap, isAsync = true) {
56
57
  }
57
58
  function tImpl(selector, options) {
58
59
  if (!i18next.isInitialized) {
59
- console.warn("I18N was not initialized, initializing default obsidian-dev-utils translations");
60
+ getLibDebugger("I18N:t")("I18N was not initialized, initializing default obsidian-dev-utils translations");
60
61
  invokeAsyncSafely(() => initI18N(defaultTranslationsMap, false));
61
62
  }
62
63
  if (!options) {
@@ -70,4 +71,4 @@ export {
70
71
  initI18N,
71
72
  t
72
73
  };
73
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2kxOG4vaTE4bi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBgaTE4bmAgbW9kdWxlIGZvciBgaTE4bmV4dGAuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBTZWxlY3RvckZuLFxuICBTZWxlY3Rvck9wdGlvbnMsXG4gIFRGdW5jdGlvblxufSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IGkxOG5leHQsIHtcbiAgaW5pdCxcbiAgdCBhcyB0TGliXG59IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2UgfSBmcm9tICcuL2RlZmF1bHQtdHJhbnNsYXRpb25zLnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBlbiB9IGZyb20gJy4vbG9jYWxlcy9lbi50cyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xBTkdVQUdFLFxuICBkZWZhdWx0VHJhbnNsYXRpb25zTWFwXG59IGZyb20gJy4vbG9jYWxlcy90cmFuc2xhdGlvbnMtbWFwLnRzJztcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX05TID0gJ3RyYW5zbGF0aW9uJztcblxuLyoqXG4gKiBUaGUgdHJhbnNsYXRpb25zIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25zTWFwID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG5pbnRlcmZhY2UgVE9wdGlvbnMgZXh0ZW5kcyBTZWxlY3Rvck9wdGlvbnM8W3R5cGVvZiBERUZBVUxUX05TXT4ge1xuICByZWFkb25seSBuczogW3R5cGVvZiBERUZBVUxUX05TXTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgYGkxOG5gIG1vZHVsZS5cbiAqXG4gKiBDYWxsaW5nIHRoaXMgYWdhaW4gcmUtcnVucyBgaTE4bmV4dC5pbml0KClgLCB3aGljaCBmdWxseSByZXBsYWNlcyB0aGUgcmVzb3VyY2Ugc3RvcmUgYW5kIGxhbmd1YWdlLCBzbyBhIHJlbG9hZCBwaWNrc1xuICogdXAgYSBjaGFuZ2VkIGxhbmd1YWdlIG9yIHRyYW5zbGF0aW9ucyBtYXAuIFRoZSBsYXp5IGZhbGxiYWNrIGluIHtAbGluayB0fSBhbmQgZXh0ZXJuYWwgY2FsbGVycyByZWx5IG9uXG4gKiBgaTE4bmV4dC5pc0luaXRpYWxpemVkYCAoc2V0IGJ5IGBpMThuZXh0LmluaXQoKWApIGFzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoLCBzbyBubyBzZXBhcmF0ZSBndWFyZCBpcyBrZXB0IGhlcmUuXG4gKlxuICogQHBhcmFtIHRyYW5zbGF0aW9uc01hcCAtIFRoZSB0cmFuc2xhdGlvbnMgbWFwLlxuICogQHBhcmFtIGlzQXN5bmMgLSBXaGV0aGVyIHRoZSBpbml0aWFsaXphdGlvbiBpcyBhc3luY2hyb25vdXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGBpMThuYCBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0STE4Tih0cmFuc2xhdGlvbnNNYXA6IFRyYW5zbGF0aW9uc01hcCwgaXNBc3luYyA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IERFRkFVTFRfTEFOR1VBR0UsXG4gICAgaW5pdEFzeW5jOiBpc0FzeW5jLFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZVxuICAgIH0sXG4gICAgbG5nOiBnZXRMYW5ndWFnZSgpLFxuICAgIHJlc291cmNlczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXModHJhbnNsYXRpb25zTWFwKS5tYXAoKFtsYW5ndWFnZSwgdHJhbnNsYXRpb25zXSkgPT4gW1xuICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAge1xuICAgICAgICAgIFtERUZBVUxUX05TXTogdHJhbnNsYXRpb25zXG4gICAgICAgIH1cbiAgICAgIF0pXG4gICAgKSxcbiAgICByZXR1cm5FbXB0eVN0cmluZzogZmFsc2UsXG4gICAgcmV0dXJuTnVsbDogZmFsc2VcbiAgfSk7XG5cbiAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShERUZBVUxUX0xBTkdVQUdFLCBERUZBVUxUX05TLCBlbiwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiB0SW1wbChcbiAgc2VsZWN0b3I6IFNlbGVjdG9yRm48UmVhZG9ubHlEZWVwPERlZmF1bHRUcmFuc2xhdGlvbnNCYXNlPiwgc3RyaW5nLCBTZWxlY3Rvck9wdGlvbnM8W3R5cGVvZiBERUZBVUxUX05TXT4+LFxuICBvcHRpb25zPzogVE9wdGlvbnNcbik6IHN0cmluZyB7XG4gIGlmICghaTE4bmV4dC5pc0luaXRpYWxpemVkKSB7XG4gICAgY29uc29sZS53YXJuKCdJMThOIHdhcyBub3QgaW5pdGlhbGl6ZWQsIGluaXRpYWxpemluZyBkZWZhdWx0IG9ic2lkaWFuLWRldi11dGlscyB0cmFuc2xhdGlvbnMnKTtcbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiBpbml0STE4TihkZWZhdWx0VHJhbnNsYXRpb25zTWFwLCBmYWxzZSkpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRMaWIoc2VsZWN0b3IpO1xuICB9XG5cbiAgcmV0dXJuIHRMaWIoc2VsZWN0b3IsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFRoZSBgdGAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCB0ID0gdEltcGwgYXMgVEZ1bmN0aW9uO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxPQUFPO0FBQUEsRUFDTDtBQUFBLEVBQ0EsS0FBSztBQUFBLE9BQ0E7QUFDUCxTQUFTLG1CQUFtQjtBQUk1QixTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLFVBQVU7QUFDbkI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFLQSxNQUFNLGFBQWE7QUFzQjFCLGVBQXNCLFNBQVMsaUJBQWtDLFVBQVUsTUFBcUI7QUFDOUYsUUFBTSxLQUFLO0FBQUEsSUFDVCxhQUFhO0FBQUEsSUFDYixXQUFXO0FBQUEsSUFDWCxlQUFlO0FBQUEsTUFDYixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsS0FBSyxZQUFZO0FBQUEsSUFDakIsV0FBVyxPQUFPO0FBQUEsTUFDaEIsT0FBTyxRQUFRLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksTUFBTTtBQUFBLFFBQ2hFO0FBQUEsUUFDQTtBQUFBLFVBQ0UsQ0FBQyxVQUFVLEdBQUc7QUFBQSxRQUNoQjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxJQUNBLG1CQUFtQjtBQUFBLElBQ25CLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFFRCxVQUFRLGtCQUFrQixrQkFBa0IsWUFBWSxJQUFJLE1BQU0sS0FBSztBQUN6RTtBQUVBLFNBQVMsTUFDUCxVQUNBLFNBQ1E7QUFDUixNQUFJLENBQUMsUUFBUSxlQUFlO0FBQzFCLFlBQVEsS0FBSyxnRkFBZ0Y7QUFDN0Ysc0JBQWtCLE1BQU0sU0FBUyx3QkFBd0IsS0FBSyxDQUFDO0FBQUEsRUFDakU7QUFFQSxNQUFJLENBQUMsU0FBUztBQUNaLFdBQU8sS0FBSyxRQUFRO0FBQUEsRUFDdEI7QUFFQSxTQUFPLEtBQUssVUFBVSxPQUFPO0FBQy9CO0FBS08sTUFBTSxJQUFJOyIsCiAgIm5hbWVzIjogW10KfQo=
74
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2kxOG4vaTE4bi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBgaTE4bmAgbW9kdWxlIGZvciBgaTE4bmV4dGAuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBTZWxlY3RvckZuLFxuICBTZWxlY3Rvck9wdGlvbnMsXG4gIFRGdW5jdGlvblxufSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IGkxOG5leHQsIHtcbiAgaW5pdCxcbiAgdCBhcyB0TGliXG59IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2UgfSBmcm9tICcuL2RlZmF1bHQtdHJhbnNsYXRpb25zLnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uLy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IGVuIH0gZnJvbSAnLi9sb2NhbGVzL2VuLnRzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfTEFOR1VBR0UsXG4gIGRlZmF1bHRUcmFuc2xhdGlvbnNNYXBcbn0gZnJvbSAnLi9sb2NhbGVzL3RyYW5zbGF0aW9ucy1tYXAudHMnO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IG5hbWVzcGFjZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTlMgPSAndHJhbnNsYXRpb24nO1xuXG4vKipcbiAqIFRoZSB0cmFuc2xhdGlvbnMgbWFwLlxuICovXG5leHBvcnQgdHlwZSBUcmFuc2xhdGlvbnNNYXAgPSBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbmludGVyZmFjZSBUT3B0aW9ucyBleHRlbmRzIFNlbGVjdG9yT3B0aW9uczxbdHlwZW9mIERFRkFVTFRfTlNdPiB7XG4gIHJlYWRvbmx5IG5zOiBbdHlwZW9mIERFRkFVTFRfTlNdO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBgaTE4bmAgbW9kdWxlLlxuICpcbiAqIENhbGxpbmcgdGhpcyBhZ2FpbiByZS1ydW5zIGBpMThuZXh0LmluaXQoKWAsIHdoaWNoIGZ1bGx5IHJlcGxhY2VzIHRoZSByZXNvdXJjZSBzdG9yZSBhbmQgbGFuZ3VhZ2UsIHNvIGEgcmVsb2FkIHBpY2tzXG4gKiB1cCBhIGNoYW5nZWQgbGFuZ3VhZ2Ugb3IgdHJhbnNsYXRpb25zIG1hcC4gVGhlIGxhenkgZmFsbGJhY2sgaW4ge0BsaW5rIHR9IGFuZCBleHRlcm5hbCBjYWxsZXJzIHJlbHkgb25cbiAqIGBpMThuZXh0LmlzSW5pdGlhbGl6ZWRgIChzZXQgYnkgYGkxOG5leHQuaW5pdCgpYCkgYXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgsIHNvIG5vIHNlcGFyYXRlIGd1YXJkIGlzIGtlcHQgaGVyZS5cbiAqXG4gKiBAcGFyYW0gdHJhbnNsYXRpb25zTWFwIC0gVGhlIHRyYW5zbGF0aW9ucyBtYXAuXG4gKiBAcGFyYW0gaXNBc3luYyAtIFdoZXRoZXIgdGhlIGluaXRpYWxpemF0aW9uIGlzIGFzeW5jaHJvbm91cy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYGkxOG5gIG1vZHVsZSBpcyBpbml0aWFsaXplZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRJMThOKHRyYW5zbGF0aW9uc01hcDogVHJhbnNsYXRpb25zTWFwLCBpc0FzeW5jID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBpbml0KHtcbiAgICBmYWxsYmFja0xuZzogREVGQVVMVF9MQU5HVUFHRSxcbiAgICBpbml0QXN5bmM6IGlzQXN5bmMsXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlXG4gICAgfSxcbiAgICBsbmc6IGdldExhbmd1YWdlKCksXG4gICAgcmVzb3VyY2VzOiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyh0cmFuc2xhdGlvbnNNYXApLm1hcCgoW2xhbmd1YWdlLCB0cmFuc2xhdGlvbnNdKSA9PiBbXG4gICAgICAgIGxhbmd1YWdlLFxuICAgICAgICB7XG4gICAgICAgICAgW0RFRkFVTFRfTlNdOiB0cmFuc2xhdGlvbnNcbiAgICAgICAgfVxuICAgICAgXSlcbiAgICApLFxuICAgIHJldHVybkVtcHR5U3RyaW5nOiBmYWxzZSxcbiAgICByZXR1cm5OdWxsOiBmYWxzZVxuICB9KTtcblxuICBpMThuZXh0LmFkZFJlc291cmNlQnVuZGxlKERFRkFVTFRfTEFOR1VBR0UsIERFRkFVTFRfTlMsIGVuLCB0cnVlLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHRJbXBsKFxuICBzZWxlY3RvcjogU2VsZWN0b3JGbjxSZWFkb25seURlZXA8RGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2U+LCBzdHJpbmcsIFNlbGVjdG9yT3B0aW9uczxbdHlwZW9mIERFRkFVTFRfTlNdPj4sXG4gIG9wdGlvbnM/OiBUT3B0aW9uc1xuKTogc3RyaW5nIHtcbiAgaWYgKCFpMThuZXh0LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICBnZXRMaWJEZWJ1Z2dlcignSTE4Tjp0JykoJ0kxOE4gd2FzIG5vdCBpbml0aWFsaXplZCwgaW5pdGlhbGl6aW5nIGRlZmF1bHQgb2JzaWRpYW4tZGV2LXV0aWxzIHRyYW5zbGF0aW9ucycpO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IGluaXRJMThOKGRlZmF1bHRUcmFuc2xhdGlvbnNNYXAsIGZhbHNlKSk7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICByZXR1cm4gdExpYihzZWxlY3Rvcik7XG4gIH1cblxuICByZXR1cm4gdExpYihzZWxlY3Rvciwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogVGhlIGB0YCBmdW5jdGlvbi5cbiAqXG4gKiBJZiB7QGxpbmsgaW5pdEkxOE59IGhhcyBub3QgYmVlbiBjYWxsZWQgeWV0IFx1MjAxNCB3aGljaCBpcyB0aGUgY2FzZSBmb3IgYSBwbHVnaW4gdGhhdCBleHRlbmRzIE9ic2lkaWFuJ3MgcmF3IGBQbHVnaW5gXG4gKiBpbnN0ZWFkIG9mIGBQbHVnaW5CYXNlYCwgc2luY2UgYFBsdWdpbkJhc2Uub25sb2FkYCBpcyB0aGUgb25seSBjYWxsZXIgb2Yge0BsaW5rIGluaXRJMThOfSBcdTIwMTQgdGhlIGZpcnN0IGNhbGwgbGF6aWx5XG4gKiBpbml0aWFsaXplcyB0aGUgZGVmYXVsdCBgb2JzaWRpYW4tZGV2LXV0aWxzYCB0cmFuc2xhdGlvbnMgYW5kIHN0aWxsIHJldHVybnMgdGhlIGNvcnJlY3Qgc3RyaW5nLiBUaGF0IGZhbGxiYWNrIGlzIGFcbiAqIHN1cHBvcnRlZCBwYXRoLCBzbyBpdCBpcyByZXBvcnRlZCB0aHJvdWdoIHRoZSBgb2JzaWRpYW4tZGV2LXV0aWxzOkkxOE46dGAgZGVidWcgbmFtZXNwYWNlIHJhdGhlciB0aGFuIHRoZSBjb25zb2xlOlxuICogaXQgc3RheXMgc2lsZW50IHVubGVzcyBkZWJ1ZyBtZXNzYWdlcyBhcmUgZW5hYmxlZC4gU2VlXG4gKiB7QGxpbmsgaHR0cHM6Ly9tbmFvdW1vdi5kZXYvb2JzaWRpYW4tZGV2LXV0aWxzL2d1aWRlcy9kZWJ1Z2dpbmcvfS5cbiAqL1xuZXhwb3J0IGNvbnN0IHQgPSB0SW1wbCBhcyBURnVuY3Rpb247XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWFBLE9BQU87QUFBQSxFQUNMO0FBQUEsRUFDQSxLQUFLO0FBQUEsT0FDQTtBQUNQLFNBQVMsbUJBQW1CO0FBSTVCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsVUFBVTtBQUNuQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtBLE1BQU0sYUFBYTtBQXNCMUIsZUFBc0IsU0FBUyxpQkFBa0MsVUFBVSxNQUFxQjtBQUM5RixRQUFNLEtBQUs7QUFBQSxJQUNULGFBQWE7QUFBQSxJQUNiLFdBQVc7QUFBQSxJQUNYLGVBQWU7QUFBQSxNQUNiLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxLQUFLLFlBQVk7QUFBQSxJQUNqQixXQUFXLE9BQU87QUFBQSxNQUNoQixPQUFPLFFBQVEsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLFVBQVUsWUFBWSxNQUFNO0FBQUEsUUFDaEU7QUFBQSxRQUNBO0FBQUEsVUFDRSxDQUFDLFVBQVUsR0FBRztBQUFBLFFBQ2hCO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLElBQ0EsbUJBQW1CO0FBQUEsSUFDbkIsWUFBWTtBQUFBLEVBQ2QsQ0FBQztBQUVELFVBQVEsa0JBQWtCLGtCQUFrQixZQUFZLElBQUksTUFBTSxLQUFLO0FBQ3pFO0FBRUEsU0FBUyxNQUNQLFVBQ0EsU0FDUTtBQUNSLE1BQUksQ0FBQyxRQUFRLGVBQWU7QUFDMUIsbUJBQWUsUUFBUSxFQUFFLGdGQUFnRjtBQUN6RyxzQkFBa0IsTUFBTSxTQUFTLHdCQUF3QixLQUFLLENBQUM7QUFBQSxFQUNqRTtBQUVBLE1BQUksQ0FBQyxTQUFTO0FBQ1osV0FBTyxLQUFLLFFBQVE7QUFBQSxFQUN0QjtBQUVBLFNBQU8sS0FBSyxVQUFVLE9BQU87QUFDL0I7QUFZTyxNQUFNLElBQUk7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -48,6 +48,7 @@ export * as 'markdown' from './markdown.mjs';
48
48
  export * as 'menu-event-registrar' from './menu-event-registrar.mjs';
49
49
  export * as 'metadata-cache' from './metadata-cache.mjs';
50
50
  export * as 'modals' from './modals/index.mjs';
51
+ export * as 'notebook-navigator' from './notebook-navigator.mjs';
51
52
  export * as 'obsidian-protocol-handler-registrar' from './obsidian-protocol-handler-registrar.mjs';
52
53
  export * as 'obsidian-settings' from './obsidian-settings.mjs';
53
54
  export * as 'parse-link' from './parse-link.mjs';
@@ -70,6 +70,7 @@ import * as markdown from "./markdown.mjs";
70
70
  import * as menu_event_registrar from "./menu-event-registrar.mjs";
71
71
  import * as metadata_cache from "./metadata-cache.mjs";
72
72
  import * as modals from "./modals/index.mjs";
73
+ import * as notebook_navigator from "./notebook-navigator.mjs";
73
74
  import * as obsidian_protocol_handler_registrar from "./obsidian-protocol-handler-registrar.mjs";
74
75
  import * as obsidian_settings from "./obsidian-settings.mjs";
75
76
  import * as parse_link from "./parse-link.mjs";
@@ -144,6 +145,7 @@ export {
144
145
  menu_event_registrar as "menu-event-registrar",
145
146
  metadata_cache as "metadata-cache",
146
147
  modals,
148
+ notebook_navigator as "notebook-navigator",
147
149
  obsidian_protocol_handler_registrar as "obsidian-protocol-handler-registrar",
148
150
  obsidian_settings as "obsidian-settings",
149
151
  parse_link as "parse-link",
@@ -169,4 +171,4 @@ export {
169
171
  view_registrar as "view-registrar",
170
172
  workspace
171
173
  };
172
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2FjdGl2ZS1maWxlLXByb3ZpZGVyJyBmcm9tICcuL2FjdGl2ZS1maWxlLXByb3ZpZGVyLnRzJztcbmV4cG9ydCAqIGFzICdhcHAnIGZyb20gJy4vYXBwLnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy13aXRoLW5vdGljZScgZnJvbSAnLi9hc3luYy13aXRoLW5vdGljZS50cyc7XG5leHBvcnQgKiBhcyAnYXR0YWNobWVudC1wYXRoJyBmcm9tICcuL2F0dGFjaG1lbnQtcGF0aC50cyc7XG5leHBvcnQgKiBhcyAnYmFja2xpbmsnIGZyb20gJy4vYmFja2xpbmsudHMnO1xuZXhwb3J0ICogYXMgJ2Jhc2VzLXZpZXctcmVnaXN0cmFyJyBmcm9tICcuL2Jhc2VzLXZpZXctcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdjYWxsb3V0JyBmcm9tICcuL2NhbGxvdXQudHMnO1xuZXhwb3J0ICogYXMgJ2NhbnZhcycgZnJvbSAnLi9jYW52YXMudHMnO1xuZXhwb3J0ICogYXMgJ2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleCcgZnJvbSAnLi9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtYmxvY2stbWFya2Rvd24taW5mb3JtYXRpb24nIGZyb20gJy4vY29kZS1ibG9jay1tYXJrZG93bi1pbmZvcm1hdGlvbi50cyc7XG5leHBvcnQgKiBhcyAnY29kZS1ibG9jay1yZWctZXhwJyBmcm9tICcuL2NvZGUtYmxvY2stcmVnLWV4cC50cyc7XG5leHBvcnQgKiBhcyAnY29tbWFuZC1oYW5kbGVycycgZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjb21tYW5kLXJlZ2lzdHJhcicgZnJvbSAnLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnY29tbXVuaXR5LXBsdWdpbnMnIGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbXBvbmVudHMnIGZyb20gJy4vY29tcG9uZW50cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY29uc3RydWN0b3JzJyBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY3NzLWNsYXNzJyBmcm9tICcuL2Nzcy1jbGFzcy50cyc7XG5leHBvcnQgKiBhcyAnZGF0YS1oYW5kbGVyJyBmcm9tICcuL2RhdGEtaGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyAnZGF0YXZpZXctbGluaycgZnJvbSAnLi9kYXRhdmlldy1saW5rLnRzJztcbmV4cG9ydCAqIGFzICdkYXRhdmlldycgZnJvbSAnLi9kYXRhdmlldy50cyc7XG5leHBvcnQgKiBhcyAnZGVtby12YXVsdC1oZWxwZXInIGZyb20gJy4vZGVtby12YXVsdC1oZWxwZXIudHMnO1xuZXhwb3J0ICogYXMgJ2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXInIGZyb20gJy4vZGVza3RvcC1kZW1vLXZhdWx0LW9wZW5lci50cyc7XG5leHBvcnQgKiBhcyAnZGVza3RvcC10cnVzdGVkLWlucHV0JyBmcm9tICcuL2Rlc2t0b3AtdHJ1c3RlZC1pbnB1dC50cyc7XG5leHBvcnQgKiBhcyAnZWRpdG9yLWV4dGVuc2lvbi1yZWdpc3RyYXInIGZyb20gJy4vZWRpdG9yLWV4dGVuc2lvbi1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ2VkaXRvci1zdWdnZXN0LXJlZ2lzdHJhcicgZnJvbSAnLi9lZGl0b3Itc3VnZ2VzdC1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ2VkaXRvcicgZnJvbSAnLi9lZGl0b3IudHMnO1xuZXhwb3J0ICogYXMgJ2V2ZW50cycgZnJvbSAnLi9ldmVudHMudHMnO1xuZXhwb3J0ICogYXMgJ2V4dGVuc2lvbnMtcmVnaXN0cmFyJyBmcm9tICcuL2V4dGVuc2lvbnMtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdmaWxlLWNoYW5nZScgZnJvbSAnLi9maWxlLWNoYW5nZS50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1tYW5hZ2VyJyBmcm9tICcuL2ZpbGUtbWFuYWdlci50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1zeXN0ZW0nIGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuZXhwb3J0ICogYXMgJ2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzJyBmcm9tICcuL2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzLnRzJztcbmV4cG9ydCAqIGFzICdmcm9udG1hdHRlcicgZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5leHBvcnQgKiBhcyAnaG92ZXItbGluay1zb3VyY2UtcmVnaXN0cmFyJyBmcm9tICcuL2hvdmVyLWxpbmstc291cmNlLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnaHRtbC1lbGVtZW50JyBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5leHBvcnQgKiBhcyAnaTE4bicgZnJvbSAnLi9pMThuL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdpcy1pbi1vYnNpZGlhbicgZnJvbSAnLi9pcy1pbi1vYnNpZGlhbi50cyc7XG5leHBvcnQgKiBhcyAnbGluay11cGRhdGUtcHJvZ3Jlc3MnIGZyb20gJy4vbGluay11cGRhdGUtcHJvZ3Jlc3MudHMnO1xuZXhwb3J0ICogYXMgJ2xpbmsnIGZyb20gJy4vbGluay50cyc7XG5leHBvcnQgKiBhcyAnbG9nZ2VyJyBmcm9tICcuL2xvZ2dlci50cyc7XG5leHBvcnQgKiBhcyAnbG9vcCcgZnJvbSAnLi9sb29wLnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXInIGZyb20gJy4vbWFya2Rvd24tY29kZS1ibG9jay1wcm9jZXNzb3ItcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3NvcicgZnJvbSAnLi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd24tcG9zdC1wcm9jZXNzb3ItcmVnaXN0cmFyJyBmcm9tICcuL21hcmtkb3duLXBvc3QtcHJvY2Vzc29yLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd24tdmlldycgZnJvbSAnLi9tYXJrZG93bi12aWV3LnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bicgZnJvbSAnLi9tYXJrZG93bi50cyc7XG5leHBvcnQgKiBhcyAnbWVudS1ldmVudC1yZWdpc3RyYXInIGZyb20gJy4vbWVudS1ldmVudC1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ21ldGFkYXRhLWNhY2hlJyBmcm9tICcuL21ldGFkYXRhLWNhY2hlLnRzJztcbmV4cG9ydCAqIGFzICdtb2RhbHMnIGZyb20gJy4vbW9kYWxzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdvYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhcicgZnJvbSAnLi9vYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4tc2V0dGluZ3MnIGZyb20gJy4vb2JzaWRpYW4tc2V0dGluZ3MudHMnO1xuZXhwb3J0ICogYXMgJ3BhcnNlLWxpbmsnIGZyb20gJy4vcGFyc2UtbGluay50cyc7XG5leHBvcnQgKiBhcyAncGF0aC1zZXR0aW5ncycgZnJvbSAnLi9wYXRoLXNldHRpbmdzLnRzJztcbmV4cG9ydCAqIGFzICdwZGYnIGZyb20gJy4vcGRmLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4nIGZyb20gJy4vcGx1Z2luL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tY2xpLWhhbmRsZXItcmVnaXN0cmFyJyBmcm9tICcuL3BsdWdpbi1jbGktaGFuZGxlci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ3BvcG92ZXJzJyBmcm9tICcuL3BvcG92ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdxdWV1ZScgZnJvbSAnLi9xdWV1ZS50cyc7XG5leHBvcnQgKiBhcyAncmVhY3QnIGZyb20gJy4vcmVhY3QvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3JlZmVyZW5jZScgZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuZXhwb3J0ICogYXMgJ3Jlc291cmNlLWxvY2snIGZyb20gJy4vcmVzb3VyY2UtbG9jay50cyc7XG5leHBvcnQgKiBhcyAncmVzb3VyY2UtdXJsJyBmcm9tICcuL3Jlc291cmNlLXVybC50cyc7XG5leHBvcnQgKiBhcyAncmliYm9uLWljb24tcmVnaXN0cmFyJyBmcm9tICcuL3JpYmJvbi1pY29uLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZy1jb21wb25lbnRzJyBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZy1leCcgZnJvbSAnLi9zZXR0aW5nLWV4LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5nLWdyb3VwLWV4JyBmcm9tICcuL3NldHRpbmctZ3JvdXAtZXgudHMnO1xuZXhwb3J0ICogYXMgJ3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXInIGZyb20gJy4vc3RhdHVzLWJhci1pdGVtLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAndmFsaWRhdGlvbicgZnJvbSAnLi92YWxpZGF0aW9uLnRzJztcbmV4cG9ydCAqIGFzICd2YXVsdC1kZWxldGUnIGZyb20gJy4vdmF1bHQtZGVsZXRlLnRzJztcbmV4cG9ydCAqIGFzICd2YXVsdC10cmFuc2FjdGlvbicgZnJvbSAnLi92YXVsdC10cmFuc2FjdGlvbi50cyc7XG5leHBvcnQgKiBhcyAndmF1bHQnIGZyb20gJy4vdmF1bHQudHMnO1xuZXhwb3J0ICogYXMgJ3ZpZXctcmVnaXN0cmFyJyBmcm9tICcuL3ZpZXctcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICd3b3Jrc3BhY2UnIGZyb20gJy4vd29ya3NwYWNlLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsWUFBWUEsMEJBQTRCO0FBQ3hDLFlBQVksU0FBVztBQUN2QixZQUFZQyx1QkFBeUI7QUFDckMsWUFBWUMscUJBQXVCO0FBQ25DLFlBQVksY0FBZ0I7QUFDNUIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksYUFBZTtBQUMzQixZQUFZLFlBQWM7QUFDMUIsWUFBWUMsaUNBQW1DO0FBQy9DLFlBQVlDLHFDQUF1QztBQUNuRCxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMsc0JBQXdCO0FBQ3BDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWSxrQkFBb0I7QUFDaEMsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZLGNBQWdCO0FBQzVCLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQywrQkFBaUM7QUFDN0MsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLGdDQUFrQztBQUM5QyxZQUFZQyw4QkFBZ0M7QUFDNUMsWUFBWSxZQUFjO0FBQzFCLFlBQVksWUFBYztBQUMxQixZQUFZQywwQkFBNEI7QUFDeEMsWUFBWUMsaUJBQW1CO0FBQy9CLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZQyxpQkFBbUI7QUFDL0IsWUFBWUMseUNBQTJDO0FBQ3ZELFlBQVksaUJBQW1CO0FBQy9CLFlBQVlDLGlDQUFtQztBQUMvQyxZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWSxVQUFZO0FBQ3hCLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZQywwQkFBNEI7QUFDeEMsWUFBWSxVQUFZO0FBQ3hCLFlBQVksWUFBYztBQUMxQixZQUFZLFVBQVk7QUFDeEIsWUFBWUMsNkNBQStDO0FBQzNELFlBQVlDLG1DQUFxQztBQUNqRCxZQUFZQyx1Q0FBeUM7QUFDckQsWUFBWUMsbUJBQXFCO0FBQ2pDLFlBQVksY0FBZ0I7QUFDNUIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZLFlBQWM7QUFDMUIsWUFBWUMseUNBQTJDO0FBQ3ZELFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyxnQkFBa0I7QUFDOUIsWUFBWUMsbUJBQXFCO0FBQ2pDLFlBQVksU0FBVztBQUN2QixZQUFZLFlBQWM7QUFDMUIsWUFBWUMsa0NBQW9DO0FBQ2hELFlBQVksY0FBZ0I7QUFDNUIsWUFBWSxXQUFhO0FBQ3pCLFlBQVksV0FBYTtBQUN6QixZQUFZLGVBQWlCO0FBQzdCLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZQyxnQkFBa0I7QUFDOUIsWUFBWUMsc0JBQXdCO0FBQ3BDLFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZLGdCQUFrQjtBQUM5QixZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWUMsdUJBQXlCO0FBQ3JDLFlBQVksV0FBYTtBQUN6QixZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWSxlQUFpQjsiLAogICJuYW1lcyI6IFsiYWN0aXZlLWZpbGUtcHJvdmlkZXIiLCAiYXN5bmMtd2l0aC1ub3RpY2UiLCAiYXR0YWNobWVudC1wYXRoIiwgImJhc2VzLXZpZXctcmVnaXN0cmFyIiwgImNhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleCIsICJjb2RlLWJsb2NrLW1hcmtkb3duLWluZm9ybWF0aW9uIiwgImNvZGUtYmxvY2stcmVnLWV4cCIsICJjb21tYW5kLWhhbmRsZXJzIiwgImNvbW1hbmQtcmVnaXN0cmFyIiwgImNvbW11bml0eS1wbHVnaW5zIiwgImNzcy1jbGFzcyIsICJkYXRhLWhhbmRsZXIiLCAiZGF0YXZpZXctbGluayIsICJkZW1vLXZhdWx0LWhlbHBlciIsICJkZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyIiwgImRlc2t0b3AtdHJ1c3RlZC1pbnB1dCIsICJlZGl0b3ItZXh0ZW5zaW9uLXJlZ2lzdHJhciIsICJlZGl0b3Itc3VnZ2VzdC1yZWdpc3RyYXIiLCAiZXh0ZW5zaW9ucy1yZWdpc3RyYXIiLCAiZmlsZS1jaGFuZ2UiLCAiZmlsZS1tYW5hZ2VyIiwgImZpbGUtc3lzdGVtIiwgImZyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzIiwgImhvdmVyLWxpbmstc291cmNlLXJlZ2lzdHJhciIsICJodG1sLWVsZW1lbnQiLCAiaXMtaW4tb2JzaWRpYW4iLCAibGluay11cGRhdGUtcHJvZ3Jlc3MiLCAibWFya2Rvd24tY29kZS1ibG9jay1wcm9jZXNzb3ItcmVnaXN0cmFyIiwgIm1hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yIiwgIm1hcmtkb3duLXBvc3QtcHJvY2Vzc29yLXJlZ2lzdHJhciIsICJtYXJrZG93bi12aWV3IiwgIm1lbnUtZXZlbnQtcmVnaXN0cmFyIiwgIm1ldGFkYXRhLWNhY2hlIiwgIm9ic2lkaWFuLXByb3RvY29sLWhhbmRsZXItcmVnaXN0cmFyIiwgIm9ic2lkaWFuLXNldHRpbmdzIiwgInBhcnNlLWxpbmsiLCAicGF0aC1zZXR0aW5ncyIsICJwbHVnaW4tY2xpLWhhbmRsZXItcmVnaXN0cmFyIiwgInJlc291cmNlLWxvY2siLCAicmVzb3VyY2UtdXJsIiwgInJpYmJvbi1pY29uLXJlZ2lzdHJhciIsICJzZXR0aW5nLWNvbXBvbmVudHMiLCAic2V0dGluZy1leCIsICJzZXR0aW5nLWdyb3VwLWV4IiwgInN0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXIiLCAidmF1bHQtZGVsZXRlIiwgInZhdWx0LXRyYW5zYWN0aW9uIiwgInZpZXctcmVnaXN0cmFyIl0KfQo=
174
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2FjdGl2ZS1maWxlLXByb3ZpZGVyJyBmcm9tICcuL2FjdGl2ZS1maWxlLXByb3ZpZGVyLnRzJztcbmV4cG9ydCAqIGFzICdhcHAnIGZyb20gJy4vYXBwLnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy13aXRoLW5vdGljZScgZnJvbSAnLi9hc3luYy13aXRoLW5vdGljZS50cyc7XG5leHBvcnQgKiBhcyAnYXR0YWNobWVudC1wYXRoJyBmcm9tICcuL2F0dGFjaG1lbnQtcGF0aC50cyc7XG5leHBvcnQgKiBhcyAnYmFja2xpbmsnIGZyb20gJy4vYmFja2xpbmsudHMnO1xuZXhwb3J0ICogYXMgJ2Jhc2VzLXZpZXctcmVnaXN0cmFyJyBmcm9tICcuL2Jhc2VzLXZpZXctcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdjYWxsb3V0JyBmcm9tICcuL2NhbGxvdXQudHMnO1xuZXhwb3J0ICogYXMgJ2NhbnZhcycgZnJvbSAnLi9jYW52YXMudHMnO1xuZXhwb3J0ICogYXMgJ2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleCcgZnJvbSAnLi9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtYmxvY2stbWFya2Rvd24taW5mb3JtYXRpb24nIGZyb20gJy4vY29kZS1ibG9jay1tYXJrZG93bi1pbmZvcm1hdGlvbi50cyc7XG5leHBvcnQgKiBhcyAnY29kZS1ibG9jay1yZWctZXhwJyBmcm9tICcuL2NvZGUtYmxvY2stcmVnLWV4cC50cyc7XG5leHBvcnQgKiBhcyAnY29tbWFuZC1oYW5kbGVycycgZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjb21tYW5kLXJlZ2lzdHJhcicgZnJvbSAnLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnY29tbXVuaXR5LXBsdWdpbnMnIGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbXBvbmVudHMnIGZyb20gJy4vY29tcG9uZW50cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY29uc3RydWN0b3JzJyBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY3NzLWNsYXNzJyBmcm9tICcuL2Nzcy1jbGFzcy50cyc7XG5leHBvcnQgKiBhcyAnZGF0YS1oYW5kbGVyJyBmcm9tICcuL2RhdGEtaGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyAnZGF0YXZpZXctbGluaycgZnJvbSAnLi9kYXRhdmlldy1saW5rLnRzJztcbmV4cG9ydCAqIGFzICdkYXRhdmlldycgZnJvbSAnLi9kYXRhdmlldy50cyc7XG5leHBvcnQgKiBhcyAnZGVtby12YXVsdC1oZWxwZXInIGZyb20gJy4vZGVtby12YXVsdC1oZWxwZXIudHMnO1xuZXhwb3J0ICogYXMgJ2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXInIGZyb20gJy4vZGVza3RvcC1kZW1vLXZhdWx0LW9wZW5lci50cyc7XG5leHBvcnQgKiBhcyAnZGVza3RvcC10cnVzdGVkLWlucHV0JyBmcm9tICcuL2Rlc2t0b3AtdHJ1c3RlZC1pbnB1dC50cyc7XG5leHBvcnQgKiBhcyAnZWRpdG9yLWV4dGVuc2lvbi1yZWdpc3RyYXInIGZyb20gJy4vZWRpdG9yLWV4dGVuc2lvbi1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ2VkaXRvci1zdWdnZXN0LXJlZ2lzdHJhcicgZnJvbSAnLi9lZGl0b3Itc3VnZ2VzdC1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ2VkaXRvcicgZnJvbSAnLi9lZGl0b3IudHMnO1xuZXhwb3J0ICogYXMgJ2V2ZW50cycgZnJvbSAnLi9ldmVudHMudHMnO1xuZXhwb3J0ICogYXMgJ2V4dGVuc2lvbnMtcmVnaXN0cmFyJyBmcm9tICcuL2V4dGVuc2lvbnMtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdmaWxlLWNoYW5nZScgZnJvbSAnLi9maWxlLWNoYW5nZS50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1tYW5hZ2VyJyBmcm9tICcuL2ZpbGUtbWFuYWdlci50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1zeXN0ZW0nIGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuZXhwb3J0ICogYXMgJ2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzJyBmcm9tICcuL2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzLnRzJztcbmV4cG9ydCAqIGFzICdmcm9udG1hdHRlcicgZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5leHBvcnQgKiBhcyAnaG92ZXItbGluay1zb3VyY2UtcmVnaXN0cmFyJyBmcm9tICcuL2hvdmVyLWxpbmstc291cmNlLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnaHRtbC1lbGVtZW50JyBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5leHBvcnQgKiBhcyAnaTE4bicgZnJvbSAnLi9pMThuL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdpcy1pbi1vYnNpZGlhbicgZnJvbSAnLi9pcy1pbi1vYnNpZGlhbi50cyc7XG5leHBvcnQgKiBhcyAnbGluay11cGRhdGUtcHJvZ3Jlc3MnIGZyb20gJy4vbGluay11cGRhdGUtcHJvZ3Jlc3MudHMnO1xuZXhwb3J0ICogYXMgJ2xpbmsnIGZyb20gJy4vbGluay50cyc7XG5leHBvcnQgKiBhcyAnbG9nZ2VyJyBmcm9tICcuL2xvZ2dlci50cyc7XG5leHBvcnQgKiBhcyAnbG9vcCcgZnJvbSAnLi9sb29wLnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXInIGZyb20gJy4vbWFya2Rvd24tY29kZS1ibG9jay1wcm9jZXNzb3ItcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3NvcicgZnJvbSAnLi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd24tcG9zdC1wcm9jZXNzb3ItcmVnaXN0cmFyJyBmcm9tICcuL21hcmtkb3duLXBvc3QtcHJvY2Vzc29yLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd24tdmlldycgZnJvbSAnLi9tYXJrZG93bi12aWV3LnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bicgZnJvbSAnLi9tYXJrZG93bi50cyc7XG5leHBvcnQgKiBhcyAnbWVudS1ldmVudC1yZWdpc3RyYXInIGZyb20gJy4vbWVudS1ldmVudC1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ21ldGFkYXRhLWNhY2hlJyBmcm9tICcuL21ldGFkYXRhLWNhY2hlLnRzJztcbmV4cG9ydCAqIGFzICdtb2RhbHMnIGZyb20gJy4vbW9kYWxzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdub3RlYm9vay1uYXZpZ2F0b3InIGZyb20gJy4vbm90ZWJvb2stbmF2aWdhdG9yLnRzJztcbmV4cG9ydCAqIGFzICdvYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhcicgZnJvbSAnLi9vYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4tc2V0dGluZ3MnIGZyb20gJy4vb2JzaWRpYW4tc2V0dGluZ3MudHMnO1xuZXhwb3J0ICogYXMgJ3BhcnNlLWxpbmsnIGZyb20gJy4vcGFyc2UtbGluay50cyc7XG5leHBvcnQgKiBhcyAncGF0aC1zZXR0aW5ncycgZnJvbSAnLi9wYXRoLXNldHRpbmdzLnRzJztcbmV4cG9ydCAqIGFzICdwZGYnIGZyb20gJy4vcGRmLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4nIGZyb20gJy4vcGx1Z2luL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tY2xpLWhhbmRsZXItcmVnaXN0cmFyJyBmcm9tICcuL3BsdWdpbi1jbGktaGFuZGxlci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ3BvcG92ZXJzJyBmcm9tICcuL3BvcG92ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdxdWV1ZScgZnJvbSAnLi9xdWV1ZS50cyc7XG5leHBvcnQgKiBhcyAncmVhY3QnIGZyb20gJy4vcmVhY3QvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3JlZmVyZW5jZScgZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuZXhwb3J0ICogYXMgJ3Jlc291cmNlLWxvY2snIGZyb20gJy4vcmVzb3VyY2UtbG9jay50cyc7XG5leHBvcnQgKiBhcyAncmVzb3VyY2UtdXJsJyBmcm9tICcuL3Jlc291cmNlLXVybC50cyc7XG5leHBvcnQgKiBhcyAncmliYm9uLWljb24tcmVnaXN0cmFyJyBmcm9tICcuL3JpYmJvbi1pY29uLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZy1jb21wb25lbnRzJyBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZy1leCcgZnJvbSAnLi9zZXR0aW5nLWV4LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5nLWdyb3VwLWV4JyBmcm9tICcuL3NldHRpbmctZ3JvdXAtZXgudHMnO1xuZXhwb3J0ICogYXMgJ3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXInIGZyb20gJy4vc3RhdHVzLWJhci1pdGVtLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAndmFsaWRhdGlvbicgZnJvbSAnLi92YWxpZGF0aW9uLnRzJztcbmV4cG9ydCAqIGFzICd2YXVsdC1kZWxldGUnIGZyb20gJy4vdmF1bHQtZGVsZXRlLnRzJztcbmV4cG9ydCAqIGFzICd2YXVsdC10cmFuc2FjdGlvbicgZnJvbSAnLi92YXVsdC10cmFuc2FjdGlvbi50cyc7XG5leHBvcnQgKiBhcyAndmF1bHQnIGZyb20gJy4vdmF1bHQudHMnO1xuZXhwb3J0ICogYXMgJ3ZpZXctcmVnaXN0cmFyJyBmcm9tICcuL3ZpZXctcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICd3b3Jrc3BhY2UnIGZyb20gJy4vd29ya3NwYWNlLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsWUFBWUEsMEJBQTRCO0FBQ3hDLFlBQVksU0FBVztBQUN2QixZQUFZQyx1QkFBeUI7QUFDckMsWUFBWUMscUJBQXVCO0FBQ25DLFlBQVksY0FBZ0I7QUFDNUIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksYUFBZTtBQUMzQixZQUFZLFlBQWM7QUFDMUIsWUFBWUMsaUNBQW1DO0FBQy9DLFlBQVlDLHFDQUF1QztBQUNuRCxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMsc0JBQXdCO0FBQ3BDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWSxrQkFBb0I7QUFDaEMsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZLGNBQWdCO0FBQzVCLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQywrQkFBaUM7QUFDN0MsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLGdDQUFrQztBQUM5QyxZQUFZQyw4QkFBZ0M7QUFDNUMsWUFBWSxZQUFjO0FBQzFCLFlBQVksWUFBYztBQUMxQixZQUFZQywwQkFBNEI7QUFDeEMsWUFBWUMsaUJBQW1CO0FBQy9CLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZQyxpQkFBbUI7QUFDL0IsWUFBWUMseUNBQTJDO0FBQ3ZELFlBQVksaUJBQW1CO0FBQy9CLFlBQVlDLGlDQUFtQztBQUMvQyxZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWSxVQUFZO0FBQ3hCLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZQywwQkFBNEI7QUFDeEMsWUFBWSxVQUFZO0FBQ3hCLFlBQVksWUFBYztBQUMxQixZQUFZLFVBQVk7QUFDeEIsWUFBWUMsNkNBQStDO0FBQzNELFlBQVlDLG1DQUFxQztBQUNqRCxZQUFZQyx1Q0FBeUM7QUFDckQsWUFBWUMsbUJBQXFCO0FBQ2pDLFlBQVksY0FBZ0I7QUFDNUIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZLFlBQWM7QUFDMUIsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLHlDQUEyQztBQUN2RCxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWUMsZ0JBQWtCO0FBQzlCLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZLFNBQVc7QUFDdkIsWUFBWSxZQUFjO0FBQzFCLFlBQVlDLGtDQUFvQztBQUNoRCxZQUFZLGNBQWdCO0FBQzVCLFlBQVksV0FBYTtBQUN6QixZQUFZLFdBQWE7QUFDekIsWUFBWSxlQUFpQjtBQUM3QixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMsZ0JBQWtCO0FBQzlCLFlBQVlDLHNCQUF3QjtBQUNwQyxZQUFZQywrQkFBaUM7QUFDN0MsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZLFdBQWE7QUFDekIsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVksZUFBaUI7IiwKICAibmFtZXMiOiBbImFjdGl2ZS1maWxlLXByb3ZpZGVyIiwgImFzeW5jLXdpdGgtbm90aWNlIiwgImF0dGFjaG1lbnQtcGF0aCIsICJiYXNlcy12aWV3LXJlZ2lzdHJhciIsICJjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgiLCAiY29kZS1ibG9jay1tYXJrZG93bi1pbmZvcm1hdGlvbiIsICJjb2RlLWJsb2NrLXJlZy1leHAiLCAiY29tbWFuZC1oYW5kbGVycyIsICJjb21tYW5kLXJlZ2lzdHJhciIsICJjb21tdW5pdHktcGx1Z2lucyIsICJjc3MtY2xhc3MiLCAiZGF0YS1oYW5kbGVyIiwgImRhdGF2aWV3LWxpbmsiLCAiZGVtby12YXVsdC1oZWxwZXIiLCAiZGVza3RvcC1kZW1vLXZhdWx0LW9wZW5lciIsICJkZXNrdG9wLXRydXN0ZWQtaW5wdXQiLCAiZWRpdG9yLWV4dGVuc2lvbi1yZWdpc3RyYXIiLCAiZWRpdG9yLXN1Z2dlc3QtcmVnaXN0cmFyIiwgImV4dGVuc2lvbnMtcmVnaXN0cmFyIiwgImZpbGUtY2hhbmdlIiwgImZpbGUtbWFuYWdlciIsICJmaWxlLXN5c3RlbSIsICJmcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cyIsICJob3Zlci1saW5rLXNvdXJjZS1yZWdpc3RyYXIiLCAiaHRtbC1lbGVtZW50IiwgImlzLWluLW9ic2lkaWFuIiwgImxpbmstdXBkYXRlLXByb2dyZXNzIiwgIm1hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLXJlZ2lzdHJhciIsICJtYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3NvciIsICJtYXJrZG93bi1wb3N0LXByb2Nlc3Nvci1yZWdpc3RyYXIiLCAibWFya2Rvd24tdmlldyIsICJtZW51LWV2ZW50LXJlZ2lzdHJhciIsICJtZXRhZGF0YS1jYWNoZSIsICJub3RlYm9vay1uYXZpZ2F0b3IiLCAib2JzaWRpYW4tcHJvdG9jb2wtaGFuZGxlci1yZWdpc3RyYXIiLCAib2JzaWRpYW4tc2V0dGluZ3MiLCAicGFyc2UtbGluayIsICJwYXRoLXNldHRpbmdzIiwgInBsdWdpbi1jbGktaGFuZGxlci1yZWdpc3RyYXIiLCAicmVzb3VyY2UtbG9jayIsICJyZXNvdXJjZS11cmwiLCAicmliYm9uLWljb24tcmVnaXN0cmFyIiwgInNldHRpbmctY29tcG9uZW50cyIsICJzZXR0aW5nLWV4IiwgInNldHRpbmctZ3JvdXAtZXgiLCAic3RhdHVzLWJhci1pdGVtLXJlZ2lzdHJhciIsICJ2YXVsdC1kZWxldGUiLCAidmF1bHQtdHJhbnNhY3Rpb24iLCAidmlldy1yZWdpc3RyYXIiXQp9Cg==
@@ -298,7 +298,7 @@ export interface GenerateMarkdownLinkParams {
298
298
  *
299
299
  * If provided, it will be used to infer the values of
300
300
  *
301
- * - {@link isEmbed}
301
+ * - {@link hasEmbedSyntax}
302
302
  * - {@link linkStyle}
303
303
  * - {@link shouldUseAngleBrackets}
304
304
  * - {@link shouldUseLeadingDotForRelativePaths}
@@ -406,13 +406,13 @@ export interface GenerateRawMarkdownLinkParams {
406
406
  */
407
407
  readonly isWikilink: boolean;
408
408
  /**
409
- * Whether to escape the alias. Applicable only if {@link isWikilink} is `false`.
409
+ * Whether to escape the alias. Applicable only if {@link hasWikilinkSyntax} is `false`.
410
410
  *
411
411
  * @default `false`
412
412
  */
413
413
  readonly shouldEscapeAlias?: boolean;
414
414
  /**
415
- * Whether to use angle brackets. Applicable only if {@link isWikilink} is `false`.
415
+ * Whether to use angle brackets. Applicable only if {@link hasWikilinkSyntax} is `false`.
416
416
  *
417
417
  * @default `false`
418
418
  */
@@ -685,20 +685,6 @@ export declare function generateRawMarkdownLink(params: GenerateRawMarkdownLinkP
685
685
  * @returns The mutable list of default-params functions.
686
686
  */
687
687
  export declare function getGenerateMarkdownLinkDefaultParamsFns(): (() => Partial<GenerateMarkdownLinkParams>)[];
688
- /**
689
- * Determines if the alias of a link should be reset.
690
- *
691
- * @param params - The parameters for determining if the alias should be reset.
692
- * @returns Whether the alias should be reset.
693
- */
694
- export declare function shouldResetAlias(params: ShouldResetAliasParams): boolean;
695
- /**
696
- * Splits a link into its link path and subpath.
697
- *
698
- * @param link - The link to split.
699
- * @returns An object containing the link path and subpath.
700
- */
701
- export declare function splitSubpath(link: string): SplitSubpathResult;
702
688
  /**
703
689
  * Tests whether a link uses angle brackets, possibly embed:
704
690
  * `[title](<link>)`, `![title](<link>)`.
@@ -706,7 +692,7 @@ export declare function splitSubpath(link: string): SplitSubpathResult;
706
692
  * @param link - Link to test
707
693
  * @returns Whether the link uses angle brackets
708
694
  */
709
- export declare function testAngleBrackets(link: string): boolean;
695
+ export declare function hasAngleBrackets(link: string): boolean;
710
696
  /**
711
697
  * Tests whether a link is an embed link:
712
698
  * `![[link]]`, `![title](link)`.
@@ -714,7 +700,7 @@ export declare function testAngleBrackets(link: string): boolean;
714
700
  * @param link - Link to test
715
701
  * @returns Whether the link is an embed link
716
702
  */
717
- export declare function testEmbed(link: string): boolean;
703
+ export declare function hasEmbedSyntax(link: string): boolean;
718
704
  /**
719
705
  * Tests whether a link has a leading dot, possibly embed:
720
706
  * `[[./link]]`, `[title](./link)`, `[title](<./link>)`,
@@ -723,7 +709,7 @@ export declare function testEmbed(link: string): boolean;
723
709
  * @param link - Link to test
724
710
  * @returns Whether the link has a leading dot
725
711
  */
726
- export declare function testLeadingDot(link: string): boolean;
712
+ export declare function hasLeadingDot(link: string): boolean;
727
713
  /**
728
714
  * Tests whether a link has a leading slash, possibly embed:
729
715
  * `[[/link]]`, `[title](/link)`, `[title](</link>)`,
@@ -732,7 +718,7 @@ export declare function testLeadingDot(link: string): boolean;
732
718
  * @param link - Link to test
733
719
  * @returns Whether the link has a leading slash
734
720
  */
735
- export declare function testLeadingSlash(link: string): boolean;
721
+ export declare function hasLeadingSlash(link: string): boolean;
736
722
  /**
737
723
  * Tests whether a link is a wikilink, possibly embed:
738
724
  * `[[link]]`, `![[link]]`.
@@ -740,7 +726,21 @@ export declare function testLeadingSlash(link: string): boolean;
740
726
  * @param link - Link to test
741
727
  * @returns Whether the link is a wikilink
742
728
  */
743
- export declare function testWikilink(link: string): boolean;
729
+ export declare function hasWikilinkSyntax(link: string): boolean;
730
+ /**
731
+ * Determines if the alias of a link should be reset.
732
+ *
733
+ * @param params - The parameters for determining if the alias should be reset.
734
+ * @returns Whether the alias should be reset.
735
+ */
736
+ export declare function shouldResetAlias(params: ShouldResetAliasParams): boolean;
737
+ /**
738
+ * Splits a link into its link path and subpath.
739
+ *
740
+ * @param link - The link to split.
741
+ * @returns An object containing the link path and subpath.
742
+ */
743
+ export declare function splitSubpath(link: string): SplitSubpathResult;
744
744
  /**
745
745
  * Normalizes the `file://` links in a content string to a pretty form, converting backslashes to forward
746
746
  * slashes. Other links are left unchanged.