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
@@ -40,16 +40,11 @@ if you want to view the source, please visit the github repository of this plugi
40
40
  globalThisRecord[key] ??= newFuncs[key]?.();
41
41
  }
42
42
 
43
- function name(obj) {
44
- return obj;
45
- }
46
-
47
43
  function extractDefault(module) {
48
44
  return module && module.__esModule && 'default' in module ? module.default : module;
49
45
  }
50
46
 
51
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
- 'obsidian',
47
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
53
48
  '@codemirror/autocomplete',
54
49
  '@codemirror/collab',
55
50
  '@codemirror/commands',
@@ -60,11 +55,12 @@ if you want to view the source, please visit the github repository of this plugi
60
55
  '@codemirror/text',
61
56
  '@codemirror/view',
62
57
  '@lezer/common',
58
+ '@lezer/highlight',
63
59
  '@lezer/lr',
64
- '@lezer/highlight'];
65
-
60
+ 'obsidian']
61
+ );
66
62
 
67
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
63
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
68
64
  '@codemirror/closebrackets',
69
65
  '@codemirror/comment',
70
66
  '@codemirror/fold',
@@ -76,11 +72,11 @@ if you want to view the source, please visit the github repository of this plugi
76
72
  '@codemirror/rangeset',
77
73
  '@codemirror/rectangular-selection',
78
74
  '@codemirror/stream-parser',
79
- '@codemirror/tooltip'];
80
-
75
+ '@codemirror/tooltip']
76
+ );
81
77
 
82
78
  function requirePatched(id) {
83
- if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
79
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
84
80
  return originalRequire?.(id);
85
81
  }
86
82
 
@@ -89,8 +85,8 @@ if you want to view the source, please visit the github repository of this plugi
89
85
  if (id === 'process' || id === 'node:process') {
90
86
  // eslint-disable-next-line no-console -- Valid usage.
91
87
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
- return globalThis.process;
88
+
89
+ return process;
94
90
  }
95
91
  } else {
96
92
  const module = originalRequire?.(id);
@@ -168,4 +164,4 @@ async function alert(params) {
168
164
  0 && (module.exports = {
169
165
  alert
170
166
  });
171
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9hbGVydC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgYWxlcnQgbW9kYWxzIGluIE9ic2lkaWFuLlxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgYSBmdW5jdGlvbiB0byBkaXNwbGF5IGEgbW9kYWwgd2l0aCBhIG1lc3NhZ2UgaW4gT2JzaWRpYW4uIFRoZSBtb2RhbCBpbmNsdWRlcyBhbiBcIk9LXCIgYnV0dG9uIHRvIGNsb3NlIGl0LlxuICovXG5cbmltcG9ydCB7IHQgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtcyxcbiAgTW9kYWxQYXJhbXNCYXNlXG59IGZyb20gJy4vbW9kYWwudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFsLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWxlcnRNb2RhbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnRQYXJhbXMgZXh0ZW5kcyBNb2RhbFBhcmFtc0Jhc2Uge1xuICAvKipcbiAgICogQSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogQSB0ZXh0IGZvciB0aGUgXCJPS1wiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9rQnV0dG9uVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQSB0aXRsZSBvZiB0aGUgbW9kYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbn1cblxudHlwZSBBbGVydE1vZGFsQ29uc3RydWN0b3JQYXJhbXMgPSBBbGVydFBhcmFtcyAmIE1vZGFsQmFzZUNvbnN0cnVjdG9yUGFyYW1zPHZvaWQ+O1xuXG5jbGFzcyBBbGVydE1vZGFsIGV4dGVuZHMgTW9kYWxCYXNlPHZvaWQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG9rQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEFsZXJ0TW9kYWxDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgdGhpcy5hZGRDc3NDbGFzc2VzKENzc0NsYXNzLkFsZXJ0TW9kYWwpO1xuICAgIHRoaXMubWVzc2FnZSA9IHBhcmFtcy5tZXNzYWdlO1xuICAgIHRoaXMub2tCdXR0b25UZXh0ID0gcGFyYW1zLm9rQnV0dG9uVGV4dCA/PyB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYnV0dG9ucy5vayk7XG4gICAgdGhpcy50aXRsZSA9IHBhcmFtcy50aXRsZSA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMucHJvbWlzZVJlc29sdmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbk9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy50aXRsZUVsLnNldFRleHQodGhpcy50aXRsZSk7XG4gICAgdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoJ3AnLCB7IHRleHQ6IHRoaXMubWVzc2FnZSB9KTtcbiAgICBjb25zdCBva0J1dHRvbiA9IG5ldyBCdXR0b25Db21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgIG9rQnV0dG9uLnNldEJ1dHRvblRleHQodGhpcy5va0J1dHRvblRleHQpO1xuICAgIG9rQnV0dG9uLnNldEN0YSgpO1xuICAgIG9rQnV0dG9uLm9uQ2xpY2sodGhpcy5jbG9zZS5iaW5kKHRoaXMpKTtcbiAgICBva0J1dHRvbi5zZXRDbGFzcyhDc3NDbGFzcy5Pa0J1dHRvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhbiBhbGVydCBtb2RhbCBpbiBPYnNpZGlhbiB3aXRoIGEgc3BlY2lmaWVkIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWxlcnQgbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFsZXJ0KHBhcmFtczogQWxlcnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgc2hvd01vZGFsKChwcm9taXNlUmVzb2x2ZSkgPT5cbiAgICBuZXcgQWxlcnRNb2RhbCh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBwcm9taXNlUmVzb2x2ZVxuICAgIH0pXG4gICk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxxQkFBa0I7QUFDbEIsc0JBQWdDO0FBT2hDLHVCQUF5QjtBQUN6QixtQkFHTztBQTBCUCxNQUFNLG1CQUFtQix1QkFBZ0I7QUFBQSxFQUN0QjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFFVixZQUFZLFFBQXFDO0FBQ3RELFVBQU0sTUFBTTtBQUNaLFNBQUssY0FBYywwQkFBUyxVQUFVO0FBQ3RDLFNBQUssVUFBVSxPQUFPO0FBQ3RCLFNBQUssZUFBZSxPQUFPLG9CQUFnQixrQkFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsUUFBUSxFQUFFO0FBQ2pGLFNBQUssUUFBUSxPQUFPLFNBQVM7QUFBQSxFQUMvQjtBQUFBLEVBRWdCLFVBQWdCO0FBQzlCLFNBQUssZUFBZTtBQUFBLEVBQ3RCO0FBQUEsRUFFZ0IsU0FBZTtBQUM3QixTQUFLLFFBQVEsUUFBUSxLQUFLLEtBQUs7QUFDL0IsU0FBSyxVQUFVLFNBQVMsS0FBSyxFQUFFLE1BQU0sS0FBSyxRQUFRLENBQUM7QUFDbkQsVUFBTSxXQUFXLElBQUksZ0NBQWdCLEtBQUssU0FBUztBQUNuRCxhQUFTLGNBQWMsS0FBSyxZQUFZO0FBQ3hDLGFBQVMsT0FBTztBQUNoQixhQUFTLFFBQVEsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDO0FBQ3RDLGFBQVMsU0FBUywwQkFBUyxRQUFRO0FBQUEsRUFDckM7QUFDRjtBQVFBLGVBQXNCLE1BQU0sUUFBb0M7QUFDOUQsWUFBTTtBQUFBLElBQVUsQ0FBQyxtQkFDZixJQUFJLFdBQVc7QUFBQSxNQUNiLEdBQUc7QUFBQSxNQUNIO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
167
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9hbGVydC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgYWxlcnQgbW9kYWxzIGluIE9ic2lkaWFuLlxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgYSBmdW5jdGlvbiB0byBkaXNwbGF5IGEgbW9kYWwgd2l0aCBhIG1lc3NhZ2UgaW4gT2JzaWRpYW4uIFRoZSBtb2RhbCBpbmNsdWRlcyBhbiBcIk9LXCIgYnV0dG9uIHRvIGNsb3NlIGl0LlxuICovXG5cbmltcG9ydCB7IHQgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtcyxcbiAgTW9kYWxQYXJhbXNCYXNlXG59IGZyb20gJy4vbW9kYWwudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFsLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWxlcnRNb2RhbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnRQYXJhbXMgZXh0ZW5kcyBNb2RhbFBhcmFtc0Jhc2Uge1xuICAvKipcbiAgICogQSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogQSB0ZXh0IGZvciB0aGUgXCJPS1wiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9rQnV0dG9uVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQSB0aXRsZSBvZiB0aGUgbW9kYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbn1cblxudHlwZSBBbGVydE1vZGFsQ29uc3RydWN0b3JQYXJhbXMgPSBBbGVydFBhcmFtcyAmIE1vZGFsQmFzZUNvbnN0cnVjdG9yUGFyYW1zPHZvaWQ+O1xuXG5jbGFzcyBBbGVydE1vZGFsIGV4dGVuZHMgTW9kYWxCYXNlPHZvaWQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG9rQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEFsZXJ0TW9kYWxDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgdGhpcy5hZGRDc3NDbGFzc2VzKENzc0NsYXNzLkFsZXJ0TW9kYWwpO1xuICAgIHRoaXMubWVzc2FnZSA9IHBhcmFtcy5tZXNzYWdlO1xuICAgIHRoaXMub2tCdXR0b25UZXh0ID0gcGFyYW1zLm9rQnV0dG9uVGV4dCA/PyB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYnV0dG9ucy5vayk7XG4gICAgdGhpcy50aXRsZSA9IHBhcmFtcy50aXRsZSA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMucHJvbWlzZVJlc29sdmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbk9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy50aXRsZUVsLnNldFRleHQodGhpcy50aXRsZSk7XG4gICAgdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoJ3AnLCB7IHRleHQ6IHRoaXMubWVzc2FnZSB9KTtcbiAgICBjb25zdCBva0J1dHRvbiA9IG5ldyBCdXR0b25Db21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgIG9rQnV0dG9uLnNldEJ1dHRvblRleHQodGhpcy5va0J1dHRvblRleHQpO1xuICAgIG9rQnV0dG9uLnNldEN0YSgpO1xuICAgIG9rQnV0dG9uLm9uQ2xpY2sodGhpcy5jbG9zZS5iaW5kKHRoaXMpKTtcbiAgICBva0J1dHRvbi5zZXRDbGFzcyhDc3NDbGFzcy5Pa0J1dHRvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhbiBhbGVydCBtb2RhbCBpbiBPYnNpZGlhbiB3aXRoIGEgc3BlY2lmaWVkIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWxlcnQgbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFsZXJ0KHBhcmFtczogQWxlcnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgc2hvd01vZGFsKChwcm9taXNlUmVzb2x2ZSkgPT5cbiAgICBuZXcgQWxlcnRNb2RhbCh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBwcm9taXNlUmVzb2x2ZVxuICAgIH0pXG4gICk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLHFCQUFrQjtBQUNsQixzQkFBZ0M7QUFPaEMsdUJBQXlCO0FBQ3pCLG1CQUdPO0FBMEJQLE1BQU0sbUJBQW1CLHVCQUFnQjtBQUFBLEVBQ3RCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUVWLFlBQVksUUFBcUM7QUFDdEQsVUFBTSxNQUFNO0FBQ1osU0FBSyxjQUFjLDBCQUFTLFVBQVU7QUFDdEMsU0FBSyxVQUFVLE9BQU87QUFDdEIsU0FBSyxlQUFlLE9BQU8sb0JBQWdCLGtCQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixRQUFRLEVBQUU7QUFDakYsU0FBSyxRQUFRLE9BQU8sU0FBUztBQUFBLEVBQy9CO0FBQUEsRUFFZ0IsVUFBZ0I7QUFDOUIsU0FBSyxlQUFlO0FBQUEsRUFDdEI7QUFBQSxFQUVnQixTQUFlO0FBQzdCLFNBQUssUUFBUSxRQUFRLEtBQUssS0FBSztBQUMvQixTQUFLLFVBQVUsU0FBUyxLQUFLLEVBQUUsTUFBTSxLQUFLLFFBQVEsQ0FBQztBQUNuRCxVQUFNLFdBQVcsSUFBSSxnQ0FBZ0IsS0FBSyxTQUFTO0FBQ25ELGFBQVMsY0FBYyxLQUFLLFlBQVk7QUFDeEMsYUFBUyxPQUFPO0FBQ2hCLGFBQVMsUUFBUSxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDdEMsYUFBUyxTQUFTLDBCQUFTLFFBQVE7QUFBQSxFQUNyQztBQUNGO0FBUUEsZUFBc0IsTUFBTSxRQUFvQztBQUM5RCxZQUFNO0FBQUEsSUFBVSxDQUFDLG1CQUNmLElBQUksV0FBVztBQUFBLE1BQ2IsR0FBRztBQUFBLE1BQ0g7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -40,16 +40,11 @@ if you want to view the source, please visit the github repository of this plugi
40
40
  globalThisRecord[key] ??= newFuncs[key]?.();
41
41
  }
42
42
 
43
- function name(obj) {
44
- return obj;
45
- }
46
-
47
43
  function extractDefault(module) {
48
44
  return module && module.__esModule && 'default' in module ? module.default : module;
49
45
  }
50
46
 
51
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
- 'obsidian',
47
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
53
48
  '@codemirror/autocomplete',
54
49
  '@codemirror/collab',
55
50
  '@codemirror/commands',
@@ -60,11 +55,12 @@ if you want to view the source, please visit the github repository of this plugi
60
55
  '@codemirror/text',
61
56
  '@codemirror/view',
62
57
  '@lezer/common',
58
+ '@lezer/highlight',
63
59
  '@lezer/lr',
64
- '@lezer/highlight'];
65
-
60
+ 'obsidian']
61
+ );
66
62
 
67
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
63
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
68
64
  '@codemirror/closebrackets',
69
65
  '@codemirror/comment',
70
66
  '@codemirror/fold',
@@ -76,11 +72,11 @@ if you want to view the source, please visit the github repository of this plugi
76
72
  '@codemirror/rangeset',
77
73
  '@codemirror/rectangular-selection',
78
74
  '@codemirror/stream-parser',
79
- '@codemirror/tooltip'];
80
-
75
+ '@codemirror/tooltip']
76
+ );
81
77
 
82
78
  function requirePatched(id) {
83
- if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
79
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
84
80
  return originalRequire?.(id);
85
81
  }
86
82
 
@@ -89,8 +85,8 @@ if you want to view the source, please visit the github repository of this plugi
89
85
  if (id === 'process' || id === 'node:process') {
90
86
  // eslint-disable-next-line no-console -- Valid usage.
91
87
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
- return globalThis.process;
88
+
89
+ return process;
94
90
  }
95
91
  } else {
96
92
  const module = originalRequire?.(id);
@@ -178,4 +174,4 @@ async function confirm(params) {
178
174
  0 && (module.exports = {
179
175
  confirm
180
176
  });
181
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9jb25maXJtLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVXRpbGl0eSBmb3IgZGlzcGxheWluZyBjb25maXJtIG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBUaGlzIG1vZHVsZSBleHBvcnRzIGEgZnVuY3Rpb24gdG8gZGlzcGxheSBhIG1vZGFsIHdpdGggYSBtZXNzYWdlIGluIE9ic2lkaWFuLiBUaGUgbW9kYWwgaW5jbHVkZXMgXCJPS1wiIGFuZCBcIkNhbmNlbFwiIGJ1dHRvbnMgdG8gY29uZmlybSBvciBjYW5jZWwgdGhlIGFjdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgTW9kYWxCYXNlQ29uc3RydWN0b3JQYXJhbXMsXG4gIE1vZGFsUGFyYW1zQmFzZVxufSBmcm9tICcuL21vZGFsLnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFsLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY29uZmlybX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybVBhcmFtcyBleHRlbmRzIE1vZGFsUGFyYW1zQmFzZSB7XG4gIC8qKlxuICAgKiBBIHRleHQgZm9yIHRoZSBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmNlbEJ1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBtb2RhbC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGV4dCBmb3IgdGhlIFwiT0tcIiBidXR0b24uXG4gICAqL1xuICByZWFkb25seSBva0J1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG59XG5cbnR5cGUgQ29uZmlybU1vZGFsQ29uc3RydWN0b3JQYXJhbXMgPSBDb25maXJtUGFyYW1zICYgTW9kYWxCYXNlQ29uc3RydWN0b3JQYXJhbXM8Ym9vbGVhbj47XG5cbmNsYXNzIENvbmZpcm1Nb2RhbCBleHRlbmRzIE1vZGFsQmFzZTxib29sZWFuPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FuY2VsQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcml2YXRlIGlzQ29uZmlybWVkID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBva0J1dHRvblRleHQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0aXRsZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDb25maXJtTW9kYWxDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgdGhpcy5hZGRDc3NDbGFzc2VzKENzc0NsYXNzLkNvbmZpcm1Nb2RhbCk7XG4gICAgdGhpcy5jYW5jZWxCdXR0b25UZXh0ID0gcGFyYW1zLmNhbmNlbEJ1dHRvblRleHQgPz8gdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMuY2FuY2VsKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBwYXJhbXMubWVzc2FnZTtcbiAgICB0aGlzLm9rQnV0dG9uVGV4dCA9IHBhcmFtcy5va0J1dHRvblRleHQgPz8gdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMub2spO1xuICAgIHRoaXMudGl0bGUgPSBwYXJhbXMudGl0bGUgPz8gJyc7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnByb21pc2VSZXNvbHZlKHRoaXMuaXNDb25maXJtZWQpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG9uT3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLnRpdGxlRWwuc2V0VGV4dCh0aGlzLnRpdGxlKTtcbiAgICB0aGlzLmNvbnRlbnRFbC5jcmVhdGVFbCgncCcsIHsgdGV4dDogdGhpcy5tZXNzYWdlIH0pO1xuICAgIGNvbnN0IG9rQnV0dG9uID0gbmV3IEJ1dHRvbkNvbXBvbmVudCh0aGlzLmNvbnRlbnRFbCk7XG4gICAgb2tCdXR0b24uc2V0QnV0dG9uVGV4dCh0aGlzLm9rQnV0dG9uVGV4dCk7XG4gICAgb2tCdXR0b24uc2V0Q3RhKCk7XG4gICAgb2tCdXR0b24ub25DbGljaygoKSA9PiB7XG4gICAgICB0aGlzLmlzQ29uZmlybWVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcbiAgICBva0J1dHRvbi5zZXRDbGFzcyhDc3NDbGFzcy5Pa0J1dHRvbik7XG5cbiAgICBjb25zdCBjYW5jZWxCdXR0b24gPSBuZXcgQnV0dG9uQ29tcG9uZW50KHRoaXMuY29udGVudEVsKTtcbiAgICBjYW5jZWxCdXR0b24uc2V0QnV0dG9uVGV4dCh0aGlzLmNhbmNlbEJ1dHRvblRleHQpO1xuICAgIGNhbmNlbEJ1dHRvbi5vbkNsaWNrKHRoaXMuY2xvc2UuYmluZCh0aGlzKSk7XG4gICAgY2FuY2VsQnV0dG9uLnNldENsYXNzKENzc0NsYXNzLkNhbmNlbEJ1dHRvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhbiBjb25maXJtIG1vZGFsIGluIE9ic2lkaWFuIHdpdGggYSBzcGVjaWZpZWQgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjb25maXJtIG1vZGFsLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFwiT0tcIiBidXR0b24gd2FzIGNsaWNrZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25maXJtKHBhcmFtczogQ29uZmlybVBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gYXdhaXQgc2hvd01vZGFsPGJvb2xlYW4+KChwcm9taXNlUmVzb2x2ZSkgPT5cbiAgICBuZXcgQ29uZmlybU1vZGFsKHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHByb21pc2VSZXNvbHZlXG4gICAgfSlcbiAgKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLHNCQUFnQztBQU9oQyx1QkFBeUI7QUFDekIsa0JBQWtCO0FBQ2xCLG1CQUdPO0FBK0JQLE1BQU0scUJBQXFCLHVCQUFtQjtBQUFBLEVBQzNCO0FBQUEsRUFDVCxjQUFjO0FBQUEsRUFDTDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFFVixZQUFZLFFBQXVDO0FBQ3hELFVBQU0sTUFBTTtBQUNaLFNBQUssY0FBYywwQkFBUyxZQUFZO0FBQ3hDLFNBQUssbUJBQW1CLE9BQU8sd0JBQW9CLGVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLFFBQVEsTUFBTTtBQUM3RixTQUFLLFVBQVUsT0FBTztBQUN0QixTQUFLLGVBQWUsT0FBTyxvQkFBZ0IsZUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsUUFBUSxFQUFFO0FBQ2pGLFNBQUssUUFBUSxPQUFPLFNBQVM7QUFBQSxFQUMvQjtBQUFBLEVBRWdCLFVBQWdCO0FBQzlCLFNBQUssZUFBZSxLQUFLLFdBQVc7QUFBQSxFQUN0QztBQUFBLEVBRWdCLFNBQWU7QUFDN0IsU0FBSyxRQUFRLFFBQVEsS0FBSyxLQUFLO0FBQy9CLFNBQUssVUFBVSxTQUFTLEtBQUssRUFBRSxNQUFNLEtBQUssUUFBUSxDQUFDO0FBQ25ELFVBQU0sV0FBVyxJQUFJLGdDQUFnQixLQUFLLFNBQVM7QUFDbkQsYUFBUyxjQUFjLEtBQUssWUFBWTtBQUN4QyxhQUFTLE9BQU87QUFDaEIsYUFBUyxRQUFRLE1BQU07QUFDckIsV0FBSyxjQUFjO0FBQ25CLFdBQUssTUFBTTtBQUFBLElBQ2IsQ0FBQztBQUNELGFBQVMsU0FBUywwQkFBUyxRQUFRO0FBRW5DLFVBQU0sZUFBZSxJQUFJLGdDQUFnQixLQUFLLFNBQVM7QUFDdkQsaUJBQWEsY0FBYyxLQUFLLGdCQUFnQjtBQUNoRCxpQkFBYSxRQUFRLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQztBQUMxQyxpQkFBYSxTQUFTLDBCQUFTLFlBQVk7QUFBQSxFQUM3QztBQUNGO0FBUUEsZUFBc0IsUUFBUSxRQUF5QztBQUNyRSxTQUFPLFVBQU07QUFBQSxJQUFtQixDQUFDLG1CQUMvQixJQUFJLGFBQWE7QUFBQSxNQUNmLEdBQUc7QUFBQSxNQUNIO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
177
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9jb25maXJtLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVXRpbGl0eSBmb3IgZGlzcGxheWluZyBjb25maXJtIG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBUaGlzIG1vZHVsZSBleHBvcnRzIGEgZnVuY3Rpb24gdG8gZGlzcGxheSBhIG1vZGFsIHdpdGggYSBtZXNzYWdlIGluIE9ic2lkaWFuLiBUaGUgbW9kYWwgaW5jbHVkZXMgXCJPS1wiIGFuZCBcIkNhbmNlbFwiIGJ1dHRvbnMgdG8gY29uZmlybSBvciBjYW5jZWwgdGhlIGFjdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgTW9kYWxCYXNlQ29uc3RydWN0b3JQYXJhbXMsXG4gIE1vZGFsUGFyYW1zQmFzZVxufSBmcm9tICcuL21vZGFsLnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFsLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY29uZmlybX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybVBhcmFtcyBleHRlbmRzIE1vZGFsUGFyYW1zQmFzZSB7XG4gIC8qKlxuICAgKiBBIHRleHQgZm9yIHRoZSBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmNlbEJ1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBtb2RhbC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGV4dCBmb3IgdGhlIFwiT0tcIiBidXR0b24uXG4gICAqL1xuICByZWFkb25seSBva0J1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG59XG5cbnR5cGUgQ29uZmlybU1vZGFsQ29uc3RydWN0b3JQYXJhbXMgPSBDb25maXJtUGFyYW1zICYgTW9kYWxCYXNlQ29uc3RydWN0b3JQYXJhbXM8Ym9vbGVhbj47XG5cbmNsYXNzIENvbmZpcm1Nb2RhbCBleHRlbmRzIE1vZGFsQmFzZTxib29sZWFuPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FuY2VsQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcml2YXRlIGlzQ29uZmlybWVkID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBva0J1dHRvblRleHQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0aXRsZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDb25maXJtTW9kYWxDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgdGhpcy5hZGRDc3NDbGFzc2VzKENzc0NsYXNzLkNvbmZpcm1Nb2RhbCk7XG4gICAgdGhpcy5jYW5jZWxCdXR0b25UZXh0ID0gcGFyYW1zLmNhbmNlbEJ1dHRvblRleHQgPz8gdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMuY2FuY2VsKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBwYXJhbXMubWVzc2FnZTtcbiAgICB0aGlzLm9rQnV0dG9uVGV4dCA9IHBhcmFtcy5va0J1dHRvblRleHQgPz8gdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMub2spO1xuICAgIHRoaXMudGl0bGUgPSBwYXJhbXMudGl0bGUgPz8gJyc7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnByb21pc2VSZXNvbHZlKHRoaXMuaXNDb25maXJtZWQpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG9uT3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLnRpdGxlRWwuc2V0VGV4dCh0aGlzLnRpdGxlKTtcbiAgICB0aGlzLmNvbnRlbnRFbC5jcmVhdGVFbCgncCcsIHsgdGV4dDogdGhpcy5tZXNzYWdlIH0pO1xuICAgIGNvbnN0IG9rQnV0dG9uID0gbmV3IEJ1dHRvbkNvbXBvbmVudCh0aGlzLmNvbnRlbnRFbCk7XG4gICAgb2tCdXR0b24uc2V0QnV0dG9uVGV4dCh0aGlzLm9rQnV0dG9uVGV4dCk7XG4gICAgb2tCdXR0b24uc2V0Q3RhKCk7XG4gICAgb2tCdXR0b24ub25DbGljaygoKSA9PiB7XG4gICAgICB0aGlzLmlzQ29uZmlybWVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcbiAgICBva0J1dHRvbi5zZXRDbGFzcyhDc3NDbGFzcy5Pa0J1dHRvbik7XG5cbiAgICBjb25zdCBjYW5jZWxCdXR0b24gPSBuZXcgQnV0dG9uQ29tcG9uZW50KHRoaXMuY29udGVudEVsKTtcbiAgICBjYW5jZWxCdXR0b24uc2V0QnV0dG9uVGV4dCh0aGlzLmNhbmNlbEJ1dHRvblRleHQpO1xuICAgIGNhbmNlbEJ1dHRvbi5vbkNsaWNrKHRoaXMuY2xvc2UuYmluZCh0aGlzKSk7XG4gICAgY2FuY2VsQnV0dG9uLnNldENsYXNzKENzc0NsYXNzLkNhbmNlbEJ1dHRvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhbiBjb25maXJtIG1vZGFsIGluIE9ic2lkaWFuIHdpdGggYSBzcGVjaWZpZWQgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjb25maXJtIG1vZGFsLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFwiT0tcIiBidXR0b24gd2FzIGNsaWNrZWQuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL2NvbnNpc3RlbnQtYm9vbGVhbi1uYW1lIC0tIGBib29sZWFuYCBnaXZlcyBiZXR0ZXIgRFggdGhhbiBlbnVtLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbmZpcm0ocGFyYW1zOiBDb25maXJtUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBhd2FpdCBzaG93TW9kYWw8Ym9vbGVhbj4oKHByb21pc2VSZXNvbHZlKSA9PlxuICAgIG5ldyBDb25maXJtTW9kYWwoe1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgcHJvbWlzZVJlc29sdmVcbiAgICB9KVxuICApO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxzQkFBZ0M7QUFPaEMsdUJBQXlCO0FBQ3pCLGtCQUFrQjtBQUNsQixtQkFHTztBQStCUCxNQUFNLHFCQUFxQix1QkFBbUI7QUFBQSxFQUMzQjtBQUFBLEVBQ1QsY0FBYztBQUFBLEVBQ0w7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBRVYsWUFBWSxRQUF1QztBQUN4RCxVQUFNLE1BQU07QUFDWixTQUFLLGNBQWMsMEJBQVMsWUFBWTtBQUN4QyxTQUFLLG1CQUFtQixPQUFPLHdCQUFvQixlQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixRQUFRLE1BQU07QUFDN0YsU0FBSyxVQUFVLE9BQU87QUFDdEIsU0FBSyxlQUFlLE9BQU8sb0JBQWdCLGVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLFFBQVEsRUFBRTtBQUNqRixTQUFLLFFBQVEsT0FBTyxTQUFTO0FBQUEsRUFDL0I7QUFBQSxFQUVnQixVQUFnQjtBQUM5QixTQUFLLGVBQWUsS0FBSyxXQUFXO0FBQUEsRUFDdEM7QUFBQSxFQUVnQixTQUFlO0FBQzdCLFNBQUssUUFBUSxRQUFRLEtBQUssS0FBSztBQUMvQixTQUFLLFVBQVUsU0FBUyxLQUFLLEVBQUUsTUFBTSxLQUFLLFFBQVEsQ0FBQztBQUNuRCxVQUFNLFdBQVcsSUFBSSxnQ0FBZ0IsS0FBSyxTQUFTO0FBQ25ELGFBQVMsY0FBYyxLQUFLLFlBQVk7QUFDeEMsYUFBUyxPQUFPO0FBQ2hCLGFBQVMsUUFBUSxNQUFNO0FBQ3JCLFdBQUssY0FBYztBQUNuQixXQUFLLE1BQU07QUFBQSxJQUNiLENBQUM7QUFDRCxhQUFTLFNBQVMsMEJBQVMsUUFBUTtBQUVuQyxVQUFNLGVBQWUsSUFBSSxnQ0FBZ0IsS0FBSyxTQUFTO0FBQ3ZELGlCQUFhLGNBQWMsS0FBSyxnQkFBZ0I7QUFDaEQsaUJBQWEsUUFBUSxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDMUMsaUJBQWEsU0FBUywwQkFBUyxZQUFZO0FBQUEsRUFDN0M7QUFDRjtBQVNBLGVBQXNCLFFBQVEsUUFBeUM7QUFDckUsU0FBTyxVQUFNO0FBQUEsSUFBbUIsQ0FBQyxtQkFDL0IsSUFBSSxhQUFhO0FBQUEsTUFDZixHQUFHO0FBQUEsTUFDSDtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -40,16 +40,11 @@ if you want to view the source, please visit the github repository of this plugi
40
40
  globalThisRecord[key] ??= newFuncs[key]?.();
41
41
  }
42
42
 
43
- function name(obj) {
44
- return obj;
45
- }
46
-
47
43
  function extractDefault(module) {
48
44
  return module && module.__esModule && 'default' in module ? module.default : module;
49
45
  }
50
46
 
51
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
- 'obsidian',
47
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
53
48
  '@codemirror/autocomplete',
54
49
  '@codemirror/collab',
55
50
  '@codemirror/commands',
@@ -60,11 +55,12 @@ if you want to view the source, please visit the github repository of this plugi
60
55
  '@codemirror/text',
61
56
  '@codemirror/view',
62
57
  '@lezer/common',
58
+ '@lezer/highlight',
63
59
  '@lezer/lr',
64
- '@lezer/highlight'];
65
-
60
+ 'obsidian']
61
+ );
66
62
 
67
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
63
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
68
64
  '@codemirror/closebrackets',
69
65
  '@codemirror/comment',
70
66
  '@codemirror/fold',
@@ -76,11 +72,11 @@ if you want to view the source, please visit the github repository of this plugi
76
72
  '@codemirror/rangeset',
77
73
  '@codemirror/rectangular-selection',
78
74
  '@codemirror/stream-parser',
79
- '@codemirror/tooltip'];
80
-
75
+ '@codemirror/tooltip']
76
+ );
81
77
 
82
78
  function requirePatched(id) {
83
- if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
79
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
84
80
  return originalRequire?.(id);
85
81
  }
86
82
 
@@ -89,8 +85,8 @@ if you want to view the source, please visit the github repository of this plugi
89
85
  if (id === 'process' || id === 'node:process') {
90
86
  // eslint-disable-next-line no-console -- Valid usage.
91
87
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
- return globalThis.process;
88
+
89
+ return process;
94
90
  }
95
91
  } else {
96
92
  const module = originalRequire?.(id);
@@ -164,4 +160,4 @@ var suggest_modal_command_builder = __toESM(__extractDefault(require('./suggest-
164
160
  "select-option": null,
165
161
  "suggest-modal-command-builder": null
166
162
  });
167
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdhbGVydCcgZnJvbSAnLi9hbGVydC50cyc7XG5leHBvcnQgKiBhcyAnY29uZmlybScgZnJvbSAnLi9jb25maXJtLnRzJztcbmV4cG9ydCAqIGFzICdtaW5pbWl6YWJsZS1tb2RhbCcgZnJvbSAnLi9taW5pbWl6YWJsZS1tb2RhbC50cyc7XG5leHBvcnQgKiBhcyAnbW9kYWwnIGZyb20gJy4vbW9kYWwudHMnO1xuZXhwb3J0ICogYXMgJ3Byb21wdCcgZnJvbSAnLi9wcm9tcHQudHMnO1xuZXhwb3J0ICogYXMgJ3NlbGVjdC1pdGVtJyBmcm9tICcuL3NlbGVjdC1pdGVtLnRzJztcbmV4cG9ydCAqIGFzICdzZWxlY3Qtb3B0aW9uJyBmcm9tICcuL3NlbGVjdC1vcHRpb24udHMnO1xuZXhwb3J0ICogYXMgJ3N1Z2dlc3QtbW9kYWwtY29tbWFuZC1idWlsZGVyJyBmcm9tICcuL3N1Z2dlc3QtbW9kYWwtY29tbWFuZC1idWlsZGVyLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkJBQUFBO0FBQUEsRUFBQTtBQUFBO0FBQUEsdUJBQUFDO0FBQUEsRUFBQSx1QkFBQUM7QUFBQSxFQUFBLHVDQUFBQztBQUFBO0FBQUE7QUFFQSxZQUF5QjtBQUN6QixjQUEyQjtBQUMzQixJQUFBSCxvQkFBcUM7QUFDckMsWUFBeUI7QUFDekIsYUFBMEI7QUFDMUIsSUFBQUMsY0FBK0I7QUFDL0IsSUFBQUMsZ0JBQWlDO0FBQ2pDLElBQUFDLGdDQUFpRDsiLAogICJuYW1lcyI6IFsibWluaW1pemFibGUtbW9kYWwiLCAic2VsZWN0LWl0ZW0iLCAic2VsZWN0LW9wdGlvbiIsICJzdWdnZXN0LW1vZGFsLWNvbW1hbmQtYnVpbGRlciJdCn0K
163
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdhbGVydCcgZnJvbSAnLi9hbGVydC50cyc7XG5leHBvcnQgKiBhcyAnY29uZmlybScgZnJvbSAnLi9jb25maXJtLnRzJztcbmV4cG9ydCAqIGFzICdtaW5pbWl6YWJsZS1tb2RhbCcgZnJvbSAnLi9taW5pbWl6YWJsZS1tb2RhbC50cyc7XG5leHBvcnQgKiBhcyAnbW9kYWwnIGZyb20gJy4vbW9kYWwudHMnO1xuZXhwb3J0ICogYXMgJ3Byb21wdCcgZnJvbSAnLi9wcm9tcHQudHMnO1xuZXhwb3J0ICogYXMgJ3NlbGVjdC1pdGVtJyBmcm9tICcuL3NlbGVjdC1pdGVtLnRzJztcbmV4cG9ydCAqIGFzICdzZWxlY3Qtb3B0aW9uJyBmcm9tICcuL3NlbGVjdC1vcHRpb24udHMnO1xuZXhwb3J0ICogYXMgJ3N1Z2dlc3QtbW9kYWwtY29tbWFuZC1idWlsZGVyJyBmcm9tICcuL3N1Z2dlc3QtbW9kYWwtY29tbWFuZC1idWlsZGVyLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSw2QkFBQUE7QUFBQSxFQUFBO0FBQUE7QUFBQSx1QkFBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBLEVBQUEsdUNBQUFDO0FBQUE7QUFBQTtBQUVBLFlBQXlCO0FBQ3pCLGNBQTJCO0FBQzNCLElBQUFILG9CQUFxQztBQUNyQyxZQUF5QjtBQUN6QixhQUEwQjtBQUMxQixJQUFBQyxjQUErQjtBQUMvQixJQUFBQyxnQkFBaUM7QUFDakMsSUFBQUMsZ0NBQWlEOyIsCiAgIm5hbWVzIjogWyJtaW5pbWl6YWJsZS1tb2RhbCIsICJzZWxlY3QtaXRlbSIsICJzZWxlY3Qtb3B0aW9uIiwgInN1Z2dlc3QtbW9kYWwtY29tbWFuZC1idWlsZGVyIl0KfQo=
@@ -40,16 +40,11 @@ if you want to view the source, please visit the github repository of this plugi
40
40
  globalThisRecord[key] ??= newFuncs[key]?.();
41
41
  }
42
42
 
43
- function name(obj) {
44
- return obj;
45
- }
46
-
47
43
  function extractDefault(module) {
48
44
  return module && module.__esModule && 'default' in module ? module.default : module;
49
45
  }
50
46
 
51
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
- 'obsidian',
47
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
53
48
  '@codemirror/autocomplete',
54
49
  '@codemirror/collab',
55
50
  '@codemirror/commands',
@@ -60,11 +55,12 @@ if you want to view the source, please visit the github repository of this plugi
60
55
  '@codemirror/text',
61
56
  '@codemirror/view',
62
57
  '@lezer/common',
58
+ '@lezer/highlight',
63
59
  '@lezer/lr',
64
- '@lezer/highlight'];
65
-
60
+ 'obsidian']
61
+ );
66
62
 
67
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
63
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
68
64
  '@codemirror/closebrackets',
69
65
  '@codemirror/comment',
70
66
  '@codemirror/fold',
@@ -76,11 +72,11 @@ if you want to view the source, please visit the github repository of this plugi
76
72
  '@codemirror/rangeset',
77
73
  '@codemirror/rectangular-selection',
78
74
  '@codemirror/stream-parser',
79
- '@codemirror/tooltip'];
80
-
75
+ '@codemirror/tooltip']
76
+ );
81
77
 
82
78
  function requirePatched(id) {
83
- if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
79
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
84
80
  return originalRequire?.(id);
85
81
  }
86
82
 
@@ -89,8 +85,8 @@ if you want to view the source, please visit the github repository of this plugi
89
85
  if (id === 'process' || id === 'node:process') {
90
86
  // eslint-disable-next-line no-console -- Valid usage.
91
87
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
- return globalThis.process;
88
+
89
+ return process;
94
90
  }
95
91
  } else {
96
92
  const module = originalRequire?.(id);
@@ -172,15 +168,15 @@ class PeekLockComponent extends import_monkey_around_component.MonkeyAroundCompo
172
168
  onload() {
173
169
  super.onload();
174
170
  this.registerMethodPatch({
171
+ $object: import_obsidian.Modal.prototype,
175
172
  methodName: "open",
176
- obj: import_obsidian.Modal.prototype,
177
173
  patchHandler: ({ fallback, originalThis }) => {
178
174
  blockOrFallback(originalThis, fallback);
179
175
  }
180
176
  });
181
177
  this.registerMethodPatch({
178
+ $object: this.app.setting,
182
179
  methodName: "open",
183
- obj: this.app.setting,
184
180
  patchHandler: ({ fallback, originalThis }) => {
185
181
  blockOrFallback(originalThis, fallback);
186
182
  }
@@ -294,8 +290,8 @@ class MinimizableModal {
294
290
  const cancelButtonEl = barEl.createEl("button", { cls: import_css_class.CssClass.CancelButton });
295
291
  (0, import_obsidian.setIcon)(cancelButtonEl, CANCEL_ICON_ID);
296
292
  (0, import_obsidian.setTooltip)(cancelButtonEl, "Cancel");
297
- cancelButtonEl.addEventListener("click", (evt) => {
298
- evt.stopPropagation();
293
+ cancelButtonEl.addEventListener("click", ($event) => {
294
+ $event.stopPropagation();
299
295
  this.modal.close();
300
296
  });
301
297
  }
@@ -340,8 +336,8 @@ class MinimizableModal {
340
336
  }
341
337
  patchOnClose(modal) {
342
338
  this.closePatchComponent.registerMethodPatch({
339
+ $object: modal,
343
340
  methodName: "onClose",
344
- obj: modal,
345
341
  patchHandler: ({ fallback }) => {
346
342
  fallback();
347
343
  this.handleClose();
@@ -353,9 +349,9 @@ class MinimizableModal {
353
349
  this.minimizedBarEl = null;
354
350
  }
355
351
  }
356
- function blockEvent(evt) {
357
- evt.preventDefault();
358
- evt.stopImmediatePropagation();
352
+ function blockEvent($event) {
353
+ $event.preventDefault();
354
+ $event.stopImmediatePropagation();
359
355
  signalBlockedAttempt();
360
356
  }
361
357
  function blockOrFallback(modal, fallback) {
@@ -378,11 +374,11 @@ function isMinimizedInnerModal(modal) {
378
374
  }
379
375
  return false;
380
376
  }
381
- function isPeekAllowedKey(evt) {
382
- if (NAVIGATION_KEYS.has(evt.key)) {
383
- return !evt.shiftKey;
377
+ function isPeekAllowedKey($event) {
378
+ if (NAVIGATION_KEYS.has($event.key)) {
379
+ return !$event.shiftKey;
384
380
  }
385
- return MODIFIER_KEYS.has(evt.key);
381
+ return MODIFIER_KEYS.has($event.key);
386
382
  }
387
383
  function isPeekLocked() {
388
384
  for (const entry of peekLockEntries) {
@@ -399,20 +395,20 @@ function signalBlockedAttempt() {
399
395
  flashMinimizedBars();
400
396
  beeper.beep();
401
397
  }
402
- function suppressKeydownWhilePeekLocked(evt) {
403
- if (!isPeekLocked() || isPeekAllowedKey(evt)) {
398
+ function suppressKeydownWhilePeekLocked($event) {
399
+ if (!isPeekLocked() || isPeekAllowedKey($event)) {
404
400
  return;
405
401
  }
406
- blockEvent(evt);
402
+ blockEvent($event);
407
403
  }
408
- function suppressWhilePeekLocked(evt) {
404
+ function suppressWhilePeekLocked($event) {
409
405
  if (!isPeekLocked()) {
410
406
  return;
411
407
  }
412
- blockEvent(evt);
408
+ blockEvent($event);
413
409
  }
414
410
  // Annotate the CommonJS export names for ESM import in node:
415
411
  0 && (module.exports = {
416
412
  MinimizableModal
417
413
  });
418
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9taW5pbWl6YWJsZS1tb2RhbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgd3JhcHBlciB0aGF0IG1ha2VzIGFueSBPYnNpZGlhbiB7QGxpbmsgTW9kYWx9IG1pbmltaXphYmxlIHRvIGEgZmxvYXRpbmcgYmFyIFx1MjAxNCB3aXRob3V0IGJyZWFraW5nIHRoZVxuICogbW9kYWwncyBibG9ja2luZyBjb250cmFjdC5cbiAqXG4gKiBPYnNpZGlhbidzIHtAbGluayBNb2RhbH0gaXMgYmxvY2tpbmc6IHdoaWxlIGl0IGlzIG9wZW4gdGhlIHJlc3Qgb2YgdGhlIGFwcCBpcyBtZWFudCB0byBiZSBpbmVydCB1bnRpbFxuICogdGhlIG1vZGFsIGlzIGRpc21pc3NlZC4ge0BsaW5rIE1pbmltaXphYmxlTW9kYWx9IHdyYXBzIGFueSBtb2RhbCBpbnN0YW5jZSAocGxhaW4gYE1vZGFsYCxcbiAqIGBGdXp6eVN1Z2dlc3RNb2RhbGAsIHRoZSBsaWJyYXJ5J3MgYE1vZGFsQmFzZWAsIHlvdXIgb3duIHN1YmNsYXNzLCBcdTIwMjYgXHUyMDE0IGluY2x1ZGluZyBtb2RhbHMgeW91IGRvIG5vdFxuICogb3duKSBhbmQgYWRkcyBhIG1pbmltaXplIGJ1dHRvbi4gTWluaW1pemluZyBoaWRlcyB0aGUgbW9kYWwgYW5kIGl0cyBibG9ja2luZyBiYWNrZHJvcCBhbmQgc2hvd3MgYVxuICogc21hbGwgZmxvYXRpbmcgYmFyIHdpdGggYSByZXN0b3JlIGJ1dHRvbiAoYW5kLCBieSBkZWZhdWx0LCBhIENhbmNlbCBidXR0b24gdGhhdCBjbG9zZXMgdGhlIHdyYXBwZWRcbiAqIG1vZGFsIFx1MjAxNCBwYXNzIGB7IHNob3VsZFNob3dDYW5jZWxCdXR0b246IGZhbHNlIH1gIHRvIGhpZGUgaXQpLCBzbyB0aGUgdXNlciBjYW4gcGVlayBhdCB0aGVcbiAqIG5vdGVzL2ZvbGRlcnMgdGhlIG9wZXJhdGlvbiBpbnZvbHZlcyBcdTIwMTQgYnV0IHRoZSBtb2RhbCBpcyBOT1QgZGlzbWlzc2VkLCBzbyBpdHMgYmxvY2tpbmcgY29udHJhY3QgbXVzdCBiZSBwcmVzZXJ2ZWQuXG4gKlxuICogVG8ga2VlcCB0aGF0IGNvbnRyYWN0IHdoaWxlIG1pbmltaXplZCwgdGhlIHdyYXBwZXIgcHV0cyB0aGUgYXBwIGludG8gYSAqKnBlZWstb25seSBsb2NrKio6IHRoZSB1c2VyXG4gKiBtYXkgbW91c2UtY2xpY2sgYW5kIHNjcm9sbCB0byBpbnNwZWN0IGNvbnRlbnQsIGJ1dCBjYW5ub3Qgc3RhcnQgYW55dGhpbmcgbmV3LiBXaGlsZSBhbnkgbW9kYWwgaXNcbiAqIG1pbmltaXplZCB0aGUgd3JhcHBlcjpcbiAqIC0gYmxvY2tzIHRoZSBrZXlib2FyZCAodHlwaW5nLCBob3RrZXlzLCB0aGUgY29tbWFuZC1wYWxldHRlIHNob3J0Y3V0KSxcbiAqIC0gYmxvY2tzIHRoZSByaWdodC1jbGljayBjb250ZXh0IG1lbnUsIGFuZFxuICogLSBibG9ja3Mgb3BlbmluZyBhbnkgb3RoZXIgbW9kYWwgKGEgcmUtZmlyZWQgY29tbWFuZCwgdGhlIGNvbW1hbmQgcGFsZXR0ZSwgc2V0dGluZ3MsIFx1MjAyNikuXG4gKlxuICogQSBibG9ja2VkIGF0dGVtcHQgZmxhc2hlcyB0aGUgZmxvYXRpbmcgYmFyIGFuZCBiZWVwcyBzbyB0aGUgdXNlciBzZWVzIChhbmQgaGVhcnMpIHdoeSBub3RoaW5nXG4gKiBoYXBwZW5lZC4gUmVzdG9yaW5nIChvciB0aGUgbW9kYWwgY2xvc2luZykgbGlmdHMgdGhlIGxvY2suIFRoaXMgcHJldmVudHMsIGZvciBleGFtcGxlLCBtaW5pbWl6aW5nIGFcbiAqIFwibWVyZ2UgZm9sZGVyXCIgcGlja2VyIGFuZCB0aGVuIGZpcmluZyB0aGUgc2FtZSBjb21tYW5kIGFnYWluIHRvIHN0YWNrIHNldmVyYWwgY29uY3VycmVudCBtZXJnZXMuXG4gKlxuICogVGhlIHdyYXBwZXIgcmV1c2VzIHRoZSBtb2RhbCdzIG93biB0aXRsZSAoYHRpdGxlRWxgKSBhcyB0aGUgbWluaW1pemVkIGJhciBsYWJlbCwgc28gc2V0IHRoZSB0aXRsZVxuICogdGhlIHVzdWFsIHdheSAoYG1vZGFsLnNldFRpdGxlKC4uLilgKS4gUmVuZGVyIGFyYml0cmFyeSBjb250ZW50IGludG8ge0BsaW5rIE1vZGFsLmNvbnRlbnRFbH0sXG4gKiBpbmNsdWRpbmcgY2xpY2thYmxlIG5vdGUgbGlua3MgcHJvZHVjZWQgYnkgYHJlbmRlckludGVybmFsTGlua2AgZnJvbVxuICogYG9ic2lkaWFuLWRldi11dGlscy9vYnNpZGlhbi9tYXJrZG93bmA6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IG1vZGFsID0gbmV3IE15TW9kYWwoYXBwKTtcbiAqIG1vZGFsLnNldFRpdGxlKCdNZXJnaW5nIG5vdGVzJyk7XG4gKiBtb2RhbC5jb250ZW50RWwuYXBwZW5kQ2hpbGQoYXdhaXQgcmVuZGVySW50ZXJuYWxMaW5rKHsgYXBwLCBwYXRoT3JBYnN0cmFjdEZpbGU6IGZpbGUgfSkpO1xuICpcbiAqIGNvbnN0IG1pbmltaXphYmxlID0gbmV3IE1pbmltaXphYmxlTW9kYWwobW9kYWwpO1xuICogbWluaW1pemFibGUubW9kYWwub3BlbigpO1xuICogbWluaW1pemFibGUubWluaW1pemUoKTsgLy8gYSBmbG9hdGluZyBiYXIgb2ZmZXJzIFwicmVzdG9yZVwiOyB0aGUgYXBwIGlzIHBlZWstb25seSB1bnRpbCByZXN0b3JlZFxuICogYGBgXG4gKlxuICogVGhlIHdyYXBwZWQgbW9kYWwgY2FuIHN0aWxsIGJlIGNsb3NlZCBub3JtYWxseTsgdGhlIGZsb2F0aW5nIGJhciBpcyBjbGVhbmVkIHVwIGF1dG9tYXRpY2FsbHkgd2hlblxuICogdGhlIG1vZGFsIGNsb3NlcyAoZXZlbiBpZiBpdCBpcyBjbG9zZWQgd2hpbGUgbWluaW1pemVkKS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgTW9kYWwsXG4gIHNldEljb24sXG4gIHNldFRvb2x0aXBcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBCZWVwZXIgfSBmcm9tICcuLi8uLi9iZWVwZXIudHMnO1xuaW1wb3J0IHsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgTW9ua2V5QXJvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9tb25rZXktYXJvdW5kLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcblxuY29uc3QgTUlOSU1JWkVfSUNPTl9JRCA9ICdtaW51cyc7XG5jb25zdCBSRVNUT1JFX0lDT05fSUQgPSAnbWF4aW1pemUtMic7XG5jb25zdCBDQU5DRUxfSUNPTl9JRCA9ICd4JztcblxuLy8gTmF2aWdhdGlvbiBrZXlzIHBhc3MgdGhyb3VnaCB3aGlsZSBtaW5pbWl6ZWQgc28gdGhlIHVzZXIgY2FuIG1vdmUgdGhlIGN1cnNvciBhbmQgc2Nyb2xsIHRvIHJlYWQuXG4vLyBOb25lIG9mIHRoZW0gbXV0YXRlIHRoZSBkb2N1bWVudCBcdTIwMTQgdGV4dCBjaGFuZ2VzIGFyZSBjYXVnaHQgc2VwYXJhdGVseSBieSB0aGUgYGJlZm9yZWlucHV0YCBndWFyZC5cbi8vIFNoaWZ0K25hdmlnYXRpb24gaXMgYmxvY2tlZCwgdGhvdWdoLCBzaW5jZSBpdCBleHRlbmRzIHRoZSBzZWxlY3Rpb24gdGhhdCBpbnNwZWN0aW9uIGRvZXMgbm90IG5lZWQuXG5jb25zdCBOQVZJR0FUSU9OX0tFWVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAnQXJyb3dEb3duJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0Fycm93VXAnLFxuICAnRW5kJyxcbiAgJ0hvbWUnLFxuICAnUGFnZURvd24nLFxuICAnUGFnZVVwJ1xuXSk7XG5cbi8vIEEgYmFyZSBtb2RpZmllciBwcmVzcyBkb2VzIG5vdGhpbmcgb24gaXRzIG93biwgc28gaXQgcGFzc2VzIHRocm91Z2ggdGhlIGxvY2suXG4vLyBUaGlzIGF2b2lkcyBhIHNwdXJpb3VzIGZsYXNoL2JlZXAgd2hpbGUgY29tcG9zaW5nIGEgc2hvcnRjdXQ7IHRoZSBzaG9ydGN1dCdzIGNvbW1hbmQga2V5IGlzIGJsb2NrZWQuXG5jb25zdCBNT0RJRklFUl9LRVlTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgJ0FsdCcsXG4gICdDb250cm9sJyxcbiAgJ01ldGEnLFxuICAnU2hpZnQnXG5dKTtcblxuLyoqXG4gKiBBIHJlZ2lzdGVyZWQgZW50cnkgZm9yIGEgY3VycmVudGx5LW1pbmltaXplZCBtb2RhbC4gVGhlIHNoYXJlZCBwZWVrLW9ubHkgbG9jayB1c2VzIGl0IHRvIGtub3cgYVxuICogbW9kYWwgaXMgbWluaW1pemVkLCB0byBsZWF2ZSB0aGF0IG1vZGFsJ3Mgb3duIHJlLW9wZW5zIGFsb25lLCBhbmQgdG8gZmxhc2ggaXRzIGJhciBvbiBhIGJsb2NrZWRcbiAqIGF0dGVtcHQuXG4gKi9cbmludGVyZmFjZSBQZWVrTG9ja0VudHJ5IHtcbiAgLyoqXG4gICAqIFRoZSBmbG9hdGluZyBiYXIgZWxlbWVudC4gVXNlZCB0byBkZXRlY3QgYSBzdGFsZSBlbnRyeSAoaXRzIGJhciBoYXMgbGVmdCB0aGUgRE9NKSBzbyBpdCBjYW4gYmVcbiAgICogcHJ1bmVkIGFuZCBuZXZlciBrZWVwIHRoZSBhcHAgbG9ja2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFyRWw6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBGbGFzaGVzIHRoZSBmbG9hdGluZyBiYXIgdG8gc2lnbmFsIGEgYmxvY2tlZCBhdHRlbXB0LlxuICAgKi9cbiAgZmxhc2goKTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIHdyYXBwZWQgbW9kYWwgaW5zdGFuY2UsIHNvIGl0cyBvd24gYG9wZW4oKWAgaXMgbmV2ZXIgYmxvY2tlZCBieSB0aGUgbG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGlubmVyTW9kYWw6IE1vZGFsO1xufVxuXG5jb25zdCBwZWVrTG9ja0VudHJpZXMgPSBuZXcgU2V0PFBlZWtMb2NrRW50cnk+KCk7XG5jb25zdCBiZWVwZXIgPSBuZXcgQmVlcGVyKCk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uc3RydWN0aW5nIGEge0BsaW5rIE1pbmltaXphYmxlTW9kYWx9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltaXphYmxlTW9kYWxDb25zdHJ1Y3Rvck9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgbWluaW1pemVkIGJhciBzaG93cyBhIENhbmNlbCBidXR0b24gdGhhdCBjbG9zZXMgdGhlIHdyYXBwZWQgbW9kYWwuIENsb3NpbmcgbGV0cyB0aGVcbiAgICogd3JhcHBlZCBtb2RhbCdzIG93biBgb25DbG9zZWAgZGVmaW5lIHdoYXQgXCJjYW5jZWxcIiBtZWFucyAoZS5nLiByZWxlYXNpbmcgYSBoZWxkIGxvY2spLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dDYW5jZWxCdXR0b24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEluc3RhbGxzIHRoZSBwZWVrLW9ubHkgbG9jaydzIGBvcGVuYCBwYXRjaGVzIHdoaWxlIGF0IGxlYXN0IG9uZSBtb2RhbCBpcyBtaW5pbWl6ZWQuIEJlaW5nIGFcbiAqIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnR9LCBib3RoIHBhdGNoZXMgYXJlIHRvcm4gZG93biBhdXRvbWF0aWNhbGx5IG9uIGB1bmxvYWRgLCBzbyB0aGV5IGV4aXN0XG4gKiBvbmx5IHdoaWxlIHRoZSBsb2NrIGlzIGFjdGl2ZS4gQSBtaW5pbWl6ZWQgbW9kYWwncyBvd24gcmUtb3BlbiBpcyBhbHdheXMgYWxsb3dlZCAoc2VlXG4gKiB7QGxpbmsgc2hvdWxkQmxvY2tPcGVufSk7IGV2ZXJ5IG90aGVyIG1vZGFsIG9wZW4gaXMgYmxvY2tlZCBhbmQgc2lnbmFscyBhIGZsYXNoICsgYmVlcC5cbiAqL1xuY2xhc3MgUGVla0xvY2tDb21wb25lbnQgZXh0ZW5kcyBNb25rZXlBcm91bmRDb21wb25lbnQge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgd2hvc2Ugc2V0dGluZ3MgbW9kYWwgaXMgZ3VhcmRlZCBhbmQgd2hvc2Ugd2luZG93cyBzdXBwcmVzcyBpbnB1dCB3aGlsZSBsb2NrZWQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBgb3BlbmAgcGF0Y2hlcyBhbmQgdGhlIGlucHV0IHN1cHByZXNzb3JzLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcblxuICAgIC8vIEJsb2NrIG9wZW5pbmcgYW55IE9USEVSIG1vZGFsIHdoaWxlIGEgbW9kYWwgaXMgbWluaW1pemVkICh0aGUgY29tbWFuZCBwYWxldHRlLCBhIHJlLWZpcmVkXG4gICAgLy8gQ29tbWFuZCwgYW5vdGhlciBwbHVnaW4gbW9kYWwsIFx1MjAyNikuXG4gICAgdGhpcy5yZWdpc3Rlck1ldGhvZFBhdGNoPE1vZGFsLCAnb3Blbic+KHtcbiAgICAgIG1ldGhvZE5hbWU6ICdvcGVuJyxcbiAgICAgIG9iajogTW9kYWwucHJvdG90eXBlLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjaywgb3JpZ2luYWxUaGlzIH0pOiB2b2lkID0+IHtcbiAgICAgICAgYmxvY2tPckZhbGxiYWNrKG9yaWdpbmFsVGhpcywgZmFsbGJhY2spO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gT2JzaWRpYW4ncyBTZXR0aW5ncyBpcyBhICpwb3BvdXQqIG1vZGFsOiBvbiBkZXNrdG9wIGl0cyBvd24gYG9wZW4oKWAgZmlyc3QgY3JlYXRlcyBhIHNlcGFyYXRlIE9TXG4gICAgLy8gV2luZG93ICh2aWEgYHNob3VsZFVzZVBvcG91dCgpYC9gZ2V0UG9wb3V0T3B0aW9ucygpYCkgYW5kIG9ubHkgVEhFTiBkZWxlZ2F0ZXMgdG9cbiAgICAvLyBgTW9kYWwucHJvdG90eXBlLm9wZW5gIHRvIHJlbmRlciB0aGUgYWN0aXZlIHRhYiBpbnRvIGl0LiBHdWFyZGluZyBvbmx5IGBNb2RhbC5wcm90b3R5cGUub3BlbmBcbiAgICAvLyBUaGVyZWZvcmUgYmxvY2tzIHRoZSByZW5kZXIgYnV0IGxlYXZlcyBhbiBlbXB0eSBzZXR0aW5ncyB3aW5kb3cgYmVoaW5kIFx1MjAxNCB0aGUgcmVwb3J0ZWQgYmFkIFVYLlxuICAgIC8vIEd1YXJkaW5nIHRoZSBzZXR0aW5ncyBtb2RhbCdzIG93biBgb3BlbigpYCBibG9ja3MgaXQgKmJlZm9yZSogdGhlIHdpbmRvdyBpcyBjcmVhdGVkLlxuICAgIHRoaXMucmVnaXN0ZXJNZXRob2RQYXRjaDxBcHBbJ3NldHRpbmcnXSwgJ29wZW4nPih7XG4gICAgICBtZXRob2ROYW1lOiAnb3BlbicsXG4gICAgICBvYmo6IHRoaXMuYXBwLnNldHRpbmcsXG4gICAgICBwYXRjaEhhbmRsZXI6ICh7IGZhbGxiYWNrLCBvcmlnaW5hbFRoaXMgfSk6IHZvaWQgPT4ge1xuICAgICAgICBibG9ja09yRmFsbGJhY2sob3JpZ2luYWxUaGlzLCBmYWxsYmFjayk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTdXBwcmVzcyB0aGUga2V5Ym9hcmQsIGVkaXRvciBtdXRhdGlvbiwgYW5kIHRoZSBjb250ZXh0IG1lbnUgYWNyb3NzIEFMTCB3aW5kb3dzIFx1MjAxNCB0aGUgbWFpbiB3aW5kb3dcbiAgICAvLyBBbmQgZXZlcnkgZXhpc3RpbmcvZnV0dXJlIHBvcG91dCBcdTIwMTQgc28gdGhlIGxvY2sgaG9sZHMgd2hlcmV2ZXIgdGhlIHVzZXIncyBmb2N1cyBpcywgbm90IG9ubHkgaW5cbiAgICAvLyBUaGUgd2luZG93IHRoYXQgb3ducyB0aGUgbWluaW1pemVkIG1vZGFsLiBDYXB0dXJlLXBoYXNlIGxpc3RlbmVycyBydW4gYmVmb3JlIE9ic2lkaWFuJ3Mgb3duXG4gICAgLy8gRG9jdW1lbnQvZWxlbWVudCBoYW5kbGVycyAoaW5jbHVkaW5nIENvZGVNaXJyb3IncyksIHNvIGBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKWAgaW4gdGhlXG4gICAgLy8gU3VwcHJlc3NvcnMga2VlcHMgYSBibG9ja2VkIGV2ZW50IGZyb20gZXZlciByZWFjaGluZyB0aGVtLiBga2V5ZG93bmAgbGV0cyBuYXZpZ2F0aW9uIGtleXMgdGhyb3VnaFxuICAgIC8vIChzZWUgYGlzUGVla0FsbG93ZWRLZXlgKSBidXQgYmxvY2tzIGNvbW1hbmQgaG90a2V5czsgYGJlZm9yZWlucHV0YCBibG9ja3MgYWxsIGVkaXRvciBtdXRhdGlvbjtcbiAgICAvLyBgY29udGV4dG1lbnVgIGJsb2NrcyB0aGUgcmlnaHQtY2xpY2sgbWVudS5cbiAgICBjb25zdCBhbGxXaW5kb3dzRXZlbnRDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBBbGxXaW5kb3dzRXZlbnRDb21wb25lbnQodGhpcy5hcHApKTtcbiAgICBhbGxXaW5kb3dzRXZlbnRDb21wb25lbnQucmVnaXN0ZXJBbGxXaW5kb3dzRG9tRXZlbnQoe1xuICAgICAgY2FsbGJhY2s6IHN1cHByZXNzS2V5ZG93bldoaWxlUGVla0xvY2tlZCxcbiAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSB9LFxuICAgICAgdHlwZTogJ2tleWRvd24nXG4gICAgfSk7XG4gICAgYWxsV2luZG93c0V2ZW50Q29tcG9uZW50LnJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50KHtcbiAgICAgIGNhbGxiYWNrOiBzdXBwcmVzc1doaWxlUGVla0xvY2tlZCxcbiAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSB9LFxuICAgICAgdHlwZTogJ2JlZm9yZWlucHV0J1xuICAgIH0pO1xuICAgIGFsbFdpbmRvd3NFdmVudENvbXBvbmVudC5yZWdpc3RlckFsbFdpbmRvd3NEb21FdmVudCh7XG4gICAgICBjYWxsYmFjazogc3VwcHJlc3NXaGlsZVBlZWtMb2NrZWQsXG4gICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgIHR5cGU6ICdjb250ZXh0bWVudSdcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBzIGEge0BsaW5rIE1vZGFsfSBpbnN0YW5jZSB0byBtYWtlIGl0IG1pbmltaXphYmxlIHRvIGEgc21hbGwgZmxvYXRpbmcgYmFyIGFuZCByZXN0b3JhYmxlLiBXaGlsZVxuICogbWluaW1pemVkIHRoZSBhcHAgaXMgcHV0IGludG8gYSBwZWVrLW9ubHkgbG9jayAoa2V5Ym9hcmQsIGNvbnRleHQgbWVudSwgYW5kIG9wZW5pbmcgb3RoZXIgbW9kYWxzIGFyZVxuICogYmxvY2tlZCkgc28gdGhlIG1vZGFsJ3MgYmxvY2tpbmcgY29udHJhY3QgaXMgcHJlc2VydmVkLlxuICpcbiAqIEB0eXBlUGFyYW0gVE1vZGFsIC0gVGhlIHR5cGUgb2YgdGhlIHdyYXBwZWQgbW9kYWwuXG4gKi9cbmV4cG9ydCBjbGFzcyBNaW5pbWl6YWJsZU1vZGFsPFRNb2RhbCBleHRlbmRzIE1vZGFsPiB7XG4gIC8qKlxuICAgKiBUaGUgd3JhcHBlZCBtb2RhbC4gT3BlbiwgY2xvc2UsIGFuZCBwb3B1bGF0ZSBpdCBhcyB1c3VhbCAoZS5nLiBgbWluaW1pemFibGUubW9kYWwub3BlbigpYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbW9kYWw6IFRNb2RhbDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbW9kYWwgaXMgY3VycmVudGx5IG1pbmltaXplZC5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtb2RhbCBpcyBjdXJyZW50bHkgbWluaW1pemVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNNaW5pbWl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNNaW5pbWl6ZWRWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaGVzIHRoZSB3cmFwcGVkIG1vZGFsJ3MgYG9uQ2xvc2VgIHRvIHJ1biBjbGVhbnVwLiBQZXJzaXN0cyBmb3IgdGhlIHdyYXBwZXIncyB3aG9sZSBsaWZlIChhXG4gICAqIG1vZGFsIGNhbiBiZSByZW9wZW5lZCwgc28gdGhlIHBhdGNoIG11c3Qgc3Vydml2ZSBlYWNoIGNsb3NlKSwgaGVuY2UgYSBkZWRpY2F0ZWQgY29tcG9uZW50IHRoYXQgaXNcbiAgICogbmV2ZXIgdW5sb2FkZWQgXHUyMDE0IGRpc3RpbmN0IGZyb20gYHBlZWtMb2NrQ29tcG9uZW50YCwgd2hvc2UgcGF0Y2hlcyBsaXZlIG9ubHkgd2hpbGUgbWluaW1pemVkLlxuICAgKiBFeHBvc2VkIHRvIHN1YmNsYXNzZXMgc28gdGhleSBjYW4gcmVnaXN0ZXIgYWRkaXRpb25hbCBsaWZldGltZS1zY29wZWQgcGF0Y2hlcyBvbiB0aGUgd3JhcHBlci5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZVBhdGNoQ29tcG9uZW50ID0gbmV3IE1vbmtleUFyb3VuZENvbXBvbmVudCgpO1xuXG4gIHByaXZhdGUgaXNNaW5pbWl6ZWRWYWx1ZSA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IG1pbmltaXplQnV0dG9uRWw6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIG1pbmltaXplZEJhckVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHBlZWtMb2NrQ29tcG9uZW50OiBudWxsIHwgUGVla0xvY2tDb21wb25lbnQgPSBudWxsO1xuICBwcml2YXRlIHBlZWtMb2NrRW50cnk6IG51bGwgfCBQZWVrTG9ja0VudHJ5ID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRTaG93Q2FuY2VsQnV0dG9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXcmFwcyB0aGUgZ2l2ZW4gbW9kYWwsIGFkZGluZyBhIG1pbmltaXplIGJ1dHRvbiBhbmQgd2lyaW5nIHVwIGNsZWFudXAgb24gY2xvc2UuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RhbCAtIFRoZSBtb2RhbCBpbnN0YW5jZSB0byBtYWtlIG1pbmltaXphYmxlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgY29udHJvbGxpbmcgdGhlIG1pbmltaXplZCBiYXIuIFNlZSB7QGxpbmsgTWluaW1pemFibGVNb2RhbENvbnN0cnVjdG9yT3B0aW9uc30uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IobW9kYWw6IFRNb2RhbCwgb3B0aW9uczogTWluaW1pemFibGVNb2RhbENvbnN0cnVjdG9yT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5tb2RhbCA9IG1vZGFsO1xuICAgIHRoaXMuc2hvdWxkU2hvd0NhbmNlbEJ1dHRvbiA9IG9wdGlvbnMuc2hvdWxkU2hvd0NhbmNlbEJ1dHRvbiA/PyB0cnVlO1xuICAgIGFkZFBsdWdpbkNzc0NsYXNzZXMobW9kYWwuY29udGFpbmVyRWwsIFtDc3NDbGFzcy5NaW5pbWl6YWJsZU1vZGFsXSk7XG4gICAgdGhpcy5taW5pbWl6ZUJ1dHRvbkVsID0gdGhpcy5jcmVhdGVNaW5pbWl6ZUJ1dHRvbigpO1xuICAgIHRoaXMuY2xvc2VQYXRjaENvbXBvbmVudC5sb2FkKCk7XG4gICAgdGhpcy5wYXRjaE9uQ2xvc2UobW9kYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pbmltaXplcyB0aGUgbW9kYWw6IGhpZGVzIHRoZSBtb2RhbCBhbmQgaXRzIGJhY2tkcm9wLCBzaG93cyBhIGZsb2F0aW5nIGJhciB3aXRoIGEgcmVzdG9yZSBidXR0b24sXG4gICAqIGFuZCBwdXRzIHRoZSBhcHAgaW50byB0aGUgcGVlay1vbmx5IGxvY2suIEEgbm8tb3AgaWYgdGhlIG1vZGFsIGlzIGFscmVhZHkgbWluaW1pemVkLlxuICAgKi9cbiAgcHVibGljIG1pbmltaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTWluaW1pemVkVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzTWluaW1pemVkVmFsdWUgPSB0cnVlO1xuICAgIHRoaXMubWluaW1pemVCdXR0b25FbC5oaWRlKCk7XG4gICAgdGhpcy5tb2RhbC5jb250YWluZXJFbC5oaWRlKCk7XG4gICAgLy8gVGhlIG1vZGFsIHN0YXlzIG9wZW4gd2hpbGUgbWluaW1pemVkLCBzbyBpdHMga2V5bWFwIHNjb3BlIGlzIHBvcHBlZCB0byByZWxlYXNlIHRoZSBmb2N1cyB0cmFwLlxuICAgIC8vIFJlc3RvcmluZyByZS1wdXNoZXMgaXQuIEFuIGFjdGl2ZSB0cmFwIHdvdWxkIHN0ZWFsIGZvY3VzIGJhY2sgdG8gdGhlIGhpZGRlbiBtb2RhbCwgYmxvY2tpbmcgdGhlXG4gICAgLy8gTW91c2UtZHJpdmVuIGluc3BlY3Rpb24gKGNsaWNraW5nIG5vdGVzLCBzY3JvbGxpbmcpIHRoYXQgbWluaW1pemUgZXhpc3RzIHRvIGFsbG93LlxuICAgIC8vIEtleWJvYXJkIGlucHV0IHJlbWFpbnMgYmxvY2tlZCBieSB0aGUgcGVlay1vbmx5IGxvY2ssIHNvIHJlbGVhc2luZyB0aGUgdHJhcCBrZWVwcyB0aGUgYXBwIGluZXJ0LlxuICAgIHRoaXMubW9kYWwuYXBwLmtleW1hcC5wb3BTY29wZSh0aGlzLm1vZGFsLnNjb3BlKTtcbiAgICB0aGlzLm1pbmltaXplZEJhckVsID0gdGhpcy5jcmVhdGVNaW5pbWl6ZWRCYXIoKTtcbiAgICB0aGlzLmVuYWJsZVBlZWtMb2NrKHRoaXMubWluaW1pemVkQmFyRWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSBtb2RhbCBmcm9tIHRoZSBtaW5pbWl6ZWQgc3RhdGUsIHJlbW92aW5nIHRoZSBmbG9hdGluZyBiYXIgYW5kIGxpZnRpbmcgdGhlIHBlZWstb25seVxuICAgKiBsb2NrLiBBIG5vLW9wIGlmIHRoZSBtb2RhbCBpcyBub3QgbWluaW1pemVkLlxuICAgKi9cbiAgcHVibGljIHJlc3RvcmUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzTWluaW1pemVkVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzTWluaW1pemVkVmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLmRpc2FibGVQZWVrTG9jaygpO1xuICAgIHRoaXMucmVtb3ZlTWluaW1pemVkQmFyKCk7XG4gICAgLy8gUmUtcHVzaCB0aGUgc2NvcGUgcG9wcGVkIGluIG1pbmltaXplKCkgc28gdGhlIHJlc3RvcmVkIG1vZGFsIGJsb2NrcyB0aGUgYXBwIGFnYWluIChmb2N1cyB0cmFwXG4gICAgLy8gKyBFc2NhcGUgY2FwdHVyZSkuXG4gICAgdGhpcy5tb2RhbC5hcHAua2V5bWFwLnB1c2hTY29wZSh0aGlzLm1vZGFsLnNjb3BlKTtcbiAgICB0aGlzLm1vZGFsLmNvbnRhaW5lckVsLnNob3coKTtcbiAgICB0aGlzLm1pbmltaXplQnV0dG9uRWwuc2hvdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNaW5pbWl6ZUJ1dHRvbigpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYnV0dG9uRWwgPSB0aGlzLm1vZGFsLm1vZGFsRWwuY3JlYXRlRWwoJ2J1dHRvbicsIHsgY2xzOiBDc3NDbGFzcy5NaW5pbWl6ZUJ1dHRvbiB9KTtcbiAgICBzZXRJY29uKGJ1dHRvbkVsLCBNSU5JTUlaRV9JQ09OX0lEKTtcbiAgICBidXR0b25FbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMubWluaW1pemUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnV0dG9uRWw7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1pbmltaXplZEJhcigpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYmFyRWwgPSB0aGlzLm1vZGFsLmNvbnRhaW5lckVsLm93bmVyRG9jdW1lbnQuYm9keS5jcmVhdGVEaXYoKTtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKGJhckVsLCBbQ3NzQ2xhc3MuTWluaW1pemVkTW9kYWxCYXJdKTtcbiAgICBiYXJFbC5jcmVhdGVTcGFuKHtcbiAgICAgIGNsczogQ3NzQ2xhc3MuTWluaW1pemVkTW9kYWxCYXJUaXRsZSxcbiAgICAgIHRleHQ6IHRoaXMubW9kYWwudGl0bGVFbC50ZXh0Q29udGVudFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3RvcmVCdXR0b25FbCA9IGJhckVsLmNyZWF0ZUVsKCdidXR0b24nLCB7IGNsczogQ3NzQ2xhc3MuUmVzdG9yZUJ1dHRvbiB9KTtcbiAgICBzZXRJY29uKHJlc3RvcmVCdXR0b25FbCwgUkVTVE9SRV9JQ09OX0lEKTtcbiAgICBpZiAodGhpcy5zaG91bGRTaG93Q2FuY2VsQnV0dG9uKSB7XG4gICAgICBjb25zdCBjYW5jZWxCdXR0b25FbCA9IGJhckVsLmNyZWF0ZUVsKCdidXR0b24nLCB7IGNsczogQ3NzQ2xhc3MuQ2FuY2VsQnV0dG9uIH0pO1xuICAgICAgc2V0SWNvbihjYW5jZWxCdXR0b25FbCwgQ0FOQ0VMX0lDT05fSUQpO1xuICAgICAgc2V0VG9vbHRpcChjYW5jZWxCdXR0b25FbCwgJ0NhbmNlbCcpO1xuICAgICAgY2FuY2VsQnV0dG9uRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgIC8vIFRoZSB3aG9sZSBiYXIgcmVzdG9yZXMgb24gY2xpY2s7IHN0b3AgcHJvcGFnYXRpb24gc28gQ2FuY2VsIGNsb3NlcyB0aGUgbW9kYWwgaW5zdGVhZCBvZlxuICAgICAgICAvLyBSZXN0b3JpbmcgaXQuIENsb3NpbmcgcnVucyB0aGUgd3JhcHBlZCBtb2RhbCdzIG9uQ2xvc2UgKHBlZWsgbG9jayBsaWZ0ZWQsIGJhciByZW1vdmVkKSwgc29cbiAgICAgICAgLy8gVGhlIGNvbnN1bWVyJ3Mgb25DbG9zZSBkZWNpZGVzIHdoYXQgXCJjYW5jZWxcIiBtZWFucyAoZS5nLiByZWxlYXNpbmcgYSBoZWxkIGxvY2spLlxuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBUaGUgd2hvbGUgYmFyIHJlc3RvcmVzIG9uIGNsaWNrLCBub3QganVzdCB0aGUgcmVzdG9yZSBidXR0b24gXHUyMDE0IGEgbGFyZ2VyLCBlYXNpZXIgY2xpY2sgdGFyZ2V0LlxuICAgIC8vIGByZXN0b3JlKClgIGd1YXJkcyBhZ2FpbnN0IGEgZG91YmxlIGludm9jYXRpb24sIHNvIHRoZSByZXN0b3JlIGJ1dHRvbidzIG93biBjbGljayBidWJibGluZyB1cFxuICAgIC8vIEhlcmUgaXMgYSBuby1vcC4gVGhlIHJlc3RvcmUgYnV0dG9uIHN0YXlzIHB1cmVseSBhcyBhIHZpc3VhbCBhZmZvcmRhbmNlIGZvciB0aGUgY2xpY2sgdGFyZ2V0LlxuICAgIGJhckVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5yZXN0b3JlKCk7XG4gICAgfSk7XG4gICAgLy8gRHJvcCB0aGUgb25lLXNob3QgYXR0ZW50aW9uIGZsYXNoIG9uY2UgaXQgZmluaXNoZXMgc28gdGhlIGJhciByZXR1cm5zIHRvIGl0cyBnZW50bGUgaWRsZSBwdWxzZS5cbiAgICAvLyBUaGUgaWRsZSBwdWxzZSBpcyBhbiBpbmZpbml0ZSBhbmltYXRpb24sIHdoaWNoIG5ldmVyIGZpcmVzIGBhbmltYXRpb25lbmRgLlxuICAgIGJhckVsLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsICgpID0+IHtcbiAgICAgIGJhckVsLnJlbW92ZUNsYXNzKENzc0NsYXNzLk1pbmltaXplZE1vZGFsQmFyQXR0ZW50aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYmFyRWw7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVQZWVrTG9jaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGVla0xvY2tFbnRyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBlZWtMb2NrRW50cmllcy5kZWxldGUodGhpcy5wZWVrTG9ja0VudHJ5KTtcbiAgICB0aGlzLnBlZWtMb2NrRW50cnkgPSBudWxsO1xuICAgIC8vIFRlYXIgdGhlIGBvcGVuYCBwYXRjaGVzIGRvd24gd2l0aCB0aGUgY29tcG9uZW50LCBzbyB0aGV5IGV4aXN0IG9ubHkgd2hpbGUgdGhpcyBtb2RhbCBpcyBtaW5pbWl6ZWQuXG4gICAgdGhpcy5wZWVrTG9ja0NvbXBvbmVudD8udW5sb2FkKCk7XG4gICAgdGhpcy5wZWVrTG9ja0NvbXBvbmVudCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZVBlZWtMb2NrKGJhckVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMucGVla0xvY2tFbnRyeSA9IHtcbiAgICAgIGJhckVsLFxuICAgICAgZmxhc2g6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5mbGFzaEJhcihiYXJFbCk7XG4gICAgICB9LFxuICAgICAgaW5uZXJNb2RhbDogdGhpcy5tb2RhbFxuICAgIH07XG4gICAgcGVla0xvY2tFbnRyaWVzLmFkZCh0aGlzLnBlZWtMb2NrRW50cnkpO1xuICAgIC8vIEluc3RhbGwgdGhlIGBvcGVuYCBwYXRjaGVzIGFuZCBpbnB1dCBzdXBwcmVzc29ycyBmb3IgYXMgbG9uZyBhcyB0aGlzIG1vZGFsIGlzIG1pbmltaXplZC4gVGhlXG4gICAgLy8gQmxvY2sgTE9HSUMgaXRzZWxmIGtleXMgb2ZmIHRoZSBzaGFyZWQgYHBlZWtMb2NrRW50cmllc2AgKHNlZSBgc2hvdWxkQmxvY2tPcGVuYCksIHNvIHdpdGggc2V2ZXJhbFxuICAgIC8vIE1vZGFscyBtaW5pbWl6ZWQgZXZlcnkgb25lJ3MgcGF0Y2ggcmVhY2hlcyB0aGUgc2FtZSB2ZXJkaWN0OyB0aGUgbG9jayBsaWZ0cyBvbmx5IG9uY2UgdGhlIGxhc3RcbiAgICAvLyBNb2RhbCByZXN0b3Jlcy9jbG9zZXMuXG4gICAgdGhpcy5wZWVrTG9ja0NvbXBvbmVudCA9IG5ldyBQZWVrTG9ja0NvbXBvbmVudCh0aGlzLm1vZGFsLmFwcCk7XG4gICAgdGhpcy5wZWVrTG9ja0NvbXBvbmVudC5sb2FkKCk7XG4gIH1cblxuICBwcml2YXRlIGZsYXNoQmFyKGJhckVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGJhckVsLnJlbW92ZUNsYXNzKENzc0NsYXNzLk1pbmltaXplZE1vZGFsQmFyQXR0ZW50aW9uKTtcbiAgICAvLyBGb3JjZSBhIHJlZmxvdyBzbyByZS1hZGRpbmcgdGhlIGNsYXNzIHJlc3RhcnRzIHRoZSBvbmUtc2hvdCBmbGFzaCBvbiByYXBpZCByZXBlYXRlZCBibG9ja3MuXG4gICAgYmFyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgYmFyRWwuYWRkQ2xhc3MoQ3NzQ2xhc3MuTWluaW1pemVkTW9kYWxCYXJBdHRlbnRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVQZWVrTG9jaygpO1xuICAgIHRoaXMucmVtb3ZlTWluaW1pemVkQmFyKCk7XG4gICAgdGhpcy5pc01pbmltaXplZFZhbHVlID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoT25DbG9zZShtb2RhbDogTW9kYWwpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlUGF0Y2hDb21wb25lbnQucmVnaXN0ZXJNZXRob2RQYXRjaDxNb2RhbCwgJ29uQ2xvc2UnPih7XG4gICAgICBtZXRob2ROYW1lOiAnb25DbG9zZScsXG4gICAgICBvYmo6IG1vZGFsLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjayB9KTogdm9pZCA9PiB7XG4gICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTWluaW1pemVkQmFyKCk6IHZvaWQge1xuICAgIHRoaXMubWluaW1pemVkQmFyRWw/LnJlbW92ZSgpO1xuICAgIHRoaXMubWluaW1pemVkQmFyRWwgPSBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJsb2NrRXZlbnQoZXZ0OiBFdmVudCk6IHZvaWQge1xuICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICBzaWduYWxCbG9ja2VkQXR0ZW1wdCgpO1xufVxuXG5mdW5jdGlvbiBibG9ja09yRmFsbGJhY2sobW9kYWw6IE1vZGFsLCBmYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICBpZiAoc2hvdWxkQmxvY2tPcGVuKG1vZGFsKSkge1xuICAgIHNpZ25hbEJsb2NrZWRBdHRlbXB0KCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZmFsbGJhY2soKTtcbn1cblxuZnVuY3Rpb24gZmxhc2hNaW5pbWl6ZWRCYXJzKCk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHBlZWtMb2NrRW50cmllcykge1xuICAgIGVudHJ5LmZsYXNoKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNNaW5pbWl6ZWRJbm5lck1vZGFsKG1vZGFsOiBNb2RhbCk6IGJvb2xlYW4ge1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHBlZWtMb2NrRW50cmllcykge1xuICAgIGlmIChlbnRyeS5pbm5lck1vZGFsID09PSBtb2RhbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1BlZWtBbGxvd2VkS2V5KGV2dDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAvLyBOYXZpZ2F0aW9uIG1vdmVzIHRoZSBjdXJzb3Ivc2Nyb2xscyAoYWxsb3dlZCksIGJ1dCBTaGlmdCtuYXZpZ2F0aW9uIGV4dGVuZHMgdGhlIHNlbGVjdGlvbiAobm90XG4gIC8vIE5lZWRlZCBmb3IgaW5zcGVjdGlvbiksIHNvIGl0IGlzIGJsb2NrZWQuIEJhcmUgbW9kaWZpZXIgcHJlc3NlcyBwYXNzIHRocm91Z2ggb24gdGhlaXIgb3duLlxuICBpZiAoTkFWSUdBVElPTl9LRVlTLmhhcyhldnQua2V5KSkge1xuICAgIHJldHVybiAhZXZ0LnNoaWZ0S2V5O1xuICB9XG5cbiAgcmV0dXJuIE1PRElGSUVSX0tFWVMuaGFzKGV2dC5rZXkpO1xufVxuXG5mdW5jdGlvbiBpc1BlZWtMb2NrZWQoKTogYm9vbGVhbiB7XG4gIC8vIERyb3AgZW50cmllcyB3aG9zZSBiYXIgaGFzIGxlZnQgdGhlIERPTSB3aXRob3V0IGEgcmVzdG9yZSgpIG9yIGNsb3NlKCkuXG4gIC8vIEEgdGVzdCB0ZWFyZG93biB0aGF0IGVtcHRpZXMgdGhlIGJvZHkgaXMgdGhlIHR5cGljYWwgY2F1c2U7IHRoaXMga2VlcHMgYSBzdGFsZSBlbnRyeSBmcm9tIGxvY2tpbmcuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgcGVla0xvY2tFbnRyaWVzKSB7XG4gICAgaWYgKCFlbnRyeS5iYXJFbC5pc0Nvbm5lY3RlZCkge1xuICAgICAgcGVla0xvY2tFbnRyaWVzLmRlbGV0ZShlbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBlZWtMb2NrRW50cmllcy5zaXplID4gMDtcbn1cblxuZnVuY3Rpb24gc2hvdWxkQmxvY2tPcGVuKG1vZGFsOiBNb2RhbCk6IGJvb2xlYW4ge1xuICAvLyBBIG1vZGFsJ3Mgb3duIHJlLW9wZW4gaXMgbmV2ZXIgYmxvY2tlZCBcdTIwMTQgb3RoZXJ3aXNlIGEgbWluaW1pemVkIG1vZGFsIGNvdWxkIG5vdCByZXN0b3JlL3JlLW9wZW5cbiAgLy8gSXRzZWxmLiBFdmVyeSBPVEhFUiBtb2RhbCBvcGVuIGlzIGJsb2NrZWQgd2hpbGUgYW55IG1vZGFsIGlzIG1pbmltaXplZCAodGhlIHBlZWstb25seSBsb2NrKS5cbiAgcmV0dXJuIGlzUGVla0xvY2tlZCgpICYmICFpc01pbmltaXplZElubmVyTW9kYWwobW9kYWwpO1xufVxuXG5mdW5jdGlvbiBzaWduYWxCbG9ja2VkQXR0ZW1wdCgpOiB2b2lkIHtcbiAgZmxhc2hNaW5pbWl6ZWRCYXJzKCk7XG4gIGJlZXBlci5iZWVwKCk7XG59XG5cbmZ1bmN0aW9uIHN1cHByZXNzS2V5ZG93bldoaWxlUGVla0xvY2tlZChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgaWYgKCFpc1BlZWtMb2NrZWQoKSB8fCBpc1BlZWtBbGxvd2VkS2V5KGV2dCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBibG9ja0V2ZW50KGV2dCk7XG59XG5cbmZ1bmN0aW9uIHN1cHByZXNzV2hpbGVQZWVrTG9ja2VkKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgaWYgKCFpc1BlZWtMb2NrZWQoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGJsb2NrRXZlbnQoZXZ0KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThDQSxzQkFJTztBQUVQLG9CQUF1QjtBQUN2Qix5Q0FBeUM7QUFDekMscUNBQXNDO0FBQ3RDLHVCQUF5QjtBQUN6Qiw0QkFBb0M7QUFFcEMsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSxrQkFBa0I7QUFDeEIsTUFBTSxpQkFBaUI7QUFLdkIsTUFBTSxrQkFBa0Isb0JBQUksSUFBWTtBQUFBLEVBQ3RDO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7QUFJRCxNQUFNLGdCQUFnQixvQkFBSSxJQUFZO0FBQUEsRUFDcEM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRixDQUFDO0FBeUJELE1BQU0sa0JBQWtCLG9CQUFJLElBQW1CO0FBQy9DLE1BQU0sU0FBUyxJQUFJLHFCQUFPO0FBcUIxQixNQUFNLDBCQUEwQixxREFBc0I7QUFBQTtBQUFBO0FBQUE7QUFB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
414
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9taW5pbWl6YWJsZS1tb2RhbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgd3JhcHBlciB0aGF0IG1ha2VzIGFueSBPYnNpZGlhbiB7QGxpbmsgTW9kYWx9IG1pbmltaXphYmxlIHRvIGEgZmxvYXRpbmcgYmFyIFx1MjAxNCB3aXRob3V0IGJyZWFraW5nIHRoZVxuICogbW9kYWwncyBibG9ja2luZyBjb250cmFjdC5cbiAqXG4gKiBPYnNpZGlhbidzIHtAbGluayBNb2RhbH0gaXMgYmxvY2tpbmc6IHdoaWxlIGl0IGlzIG9wZW4gdGhlIHJlc3Qgb2YgdGhlIGFwcCBpcyBtZWFudCB0byBiZSBpbmVydCB1bnRpbFxuICogdGhlIG1vZGFsIGlzIGRpc21pc3NlZC4ge0BsaW5rIE1pbmltaXphYmxlTW9kYWx9IHdyYXBzIGFueSBtb2RhbCBpbnN0YW5jZSAocGxhaW4gYE1vZGFsYCxcbiAqIGBGdXp6eVN1Z2dlc3RNb2RhbGAsIHRoZSBsaWJyYXJ5J3MgYE1vZGFsQmFzZWAsIHlvdXIgb3duIHN1YmNsYXNzLCBcdTIwMjYgXHUyMDE0IGluY2x1ZGluZyBtb2RhbHMgeW91IGRvIG5vdFxuICogb3duKSBhbmQgYWRkcyBhIG1pbmltaXplIGJ1dHRvbi4gTWluaW1pemluZyBoaWRlcyB0aGUgbW9kYWwgYW5kIGl0cyBibG9ja2luZyBiYWNrZHJvcCBhbmQgc2hvd3MgYVxuICogc21hbGwgZmxvYXRpbmcgYmFyIHdpdGggYSByZXN0b3JlIGJ1dHRvbiAoYW5kLCBieSBkZWZhdWx0LCBhIENhbmNlbCBidXR0b24gdGhhdCBjbG9zZXMgdGhlIHdyYXBwZWRcbiAqIG1vZGFsIFx1MjAxNCBwYXNzIGB7IHNob3VsZFNob3dDYW5jZWxCdXR0b246IGZhbHNlIH1gIHRvIGhpZGUgaXQpLCBzbyB0aGUgdXNlciBjYW4gcGVlayBhdCB0aGVcbiAqIG5vdGVzL2ZvbGRlcnMgdGhlIG9wZXJhdGlvbiBpbnZvbHZlcyBcdTIwMTQgYnV0IHRoZSBtb2RhbCBpcyBOT1QgZGlzbWlzc2VkLCBzbyBpdHMgYmxvY2tpbmcgY29udHJhY3QgbXVzdCBiZSBwcmVzZXJ2ZWQuXG4gKlxuICogVG8ga2VlcCB0aGF0IGNvbnRyYWN0IHdoaWxlIG1pbmltaXplZCwgdGhlIHdyYXBwZXIgcHV0cyB0aGUgYXBwIGludG8gYSAqKnBlZWstb25seSBsb2NrKio6IHRoZSB1c2VyXG4gKiBtYXkgbW91c2UtY2xpY2sgYW5kIHNjcm9sbCB0byBpbnNwZWN0IGNvbnRlbnQsIGJ1dCBjYW5ub3Qgc3RhcnQgYW55dGhpbmcgbmV3LiBXaGlsZSBhbnkgbW9kYWwgaXNcbiAqIG1pbmltaXplZCB0aGUgd3JhcHBlcjpcbiAqIC0gYmxvY2tzIHRoZSBrZXlib2FyZCAodHlwaW5nLCBob3RrZXlzLCB0aGUgY29tbWFuZC1wYWxldHRlIHNob3J0Y3V0KSxcbiAqIC0gYmxvY2tzIHRoZSByaWdodC1jbGljayBjb250ZXh0IG1lbnUsIGFuZFxuICogLSBibG9ja3Mgb3BlbmluZyBhbnkgb3RoZXIgbW9kYWwgKGEgcmUtZmlyZWQgY29tbWFuZCwgdGhlIGNvbW1hbmQgcGFsZXR0ZSwgc2V0dGluZ3MsIFx1MjAyNikuXG4gKlxuICogQSBibG9ja2VkIGF0dGVtcHQgZmxhc2hlcyB0aGUgZmxvYXRpbmcgYmFyIGFuZCBiZWVwcyBzbyB0aGUgdXNlciBzZWVzIChhbmQgaGVhcnMpIHdoeSBub3RoaW5nXG4gKiBoYXBwZW5lZC4gUmVzdG9yaW5nIChvciB0aGUgbW9kYWwgY2xvc2luZykgbGlmdHMgdGhlIGxvY2suIFRoaXMgcHJldmVudHMsIGZvciBleGFtcGxlLCBtaW5pbWl6aW5nIGFcbiAqIFwibWVyZ2UgZm9sZGVyXCIgcGlja2VyIGFuZCB0aGVuIGZpcmluZyB0aGUgc2FtZSBjb21tYW5kIGFnYWluIHRvIHN0YWNrIHNldmVyYWwgY29uY3VycmVudCBtZXJnZXMuXG4gKlxuICogVGhlIHdyYXBwZXIgcmV1c2VzIHRoZSBtb2RhbCdzIG93biB0aXRsZSAoYHRpdGxlRWxgKSBhcyB0aGUgbWluaW1pemVkIGJhciBsYWJlbCwgc28gc2V0IHRoZSB0aXRsZVxuICogdGhlIHVzdWFsIHdheSAoYG1vZGFsLnNldFRpdGxlKC4uLilgKS4gUmVuZGVyIGFyYml0cmFyeSBjb250ZW50IGludG8ge0BsaW5rIE1vZGFsLmNvbnRlbnRFbH0sXG4gKiBpbmNsdWRpbmcgY2xpY2thYmxlIG5vdGUgbGlua3MgcHJvZHVjZWQgYnkgYHJlbmRlckludGVybmFsTGlua2AgZnJvbVxuICogYG9ic2lkaWFuLWRldi11dGlscy9vYnNpZGlhbi9tYXJrZG93bmA6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IG1vZGFsID0gbmV3IE15TW9kYWwoYXBwKTtcbiAqIG1vZGFsLnNldFRpdGxlKCdNZXJnaW5nIG5vdGVzJyk7XG4gKiBtb2RhbC5jb250ZW50RWwuYXBwZW5kQ2hpbGQoYXdhaXQgcmVuZGVySW50ZXJuYWxMaW5rKHsgYXBwLCBwYXRoT3JBYnN0cmFjdEZpbGU6IGZpbGUgfSkpO1xuICpcbiAqIGNvbnN0IG1pbmltaXphYmxlID0gbmV3IE1pbmltaXphYmxlTW9kYWwobW9kYWwpO1xuICogbWluaW1pemFibGUubW9kYWwub3BlbigpO1xuICogbWluaW1pemFibGUubWluaW1pemUoKTsgLy8gYSBmbG9hdGluZyBiYXIgb2ZmZXJzIFwicmVzdG9yZVwiOyB0aGUgYXBwIGlzIHBlZWstb25seSB1bnRpbCByZXN0b3JlZFxuICogYGBgXG4gKlxuICogVGhlIHdyYXBwZWQgbW9kYWwgY2FuIHN0aWxsIGJlIGNsb3NlZCBub3JtYWxseTsgdGhlIGZsb2F0aW5nIGJhciBpcyBjbGVhbmVkIHVwIGF1dG9tYXRpY2FsbHkgd2hlblxuICogdGhlIG1vZGFsIGNsb3NlcyAoZXZlbiBpZiBpdCBpcyBjbG9zZWQgd2hpbGUgbWluaW1pemVkKS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgTW9kYWwsXG4gIHNldEljb24sXG4gIHNldFRvb2x0aXBcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBCZWVwZXIgfSBmcm9tICcuLi8uLi9iZWVwZXIudHMnO1xuaW1wb3J0IHsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgTW9ua2V5QXJvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9tb25rZXktYXJvdW5kLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcblxuY29uc3QgTUlOSU1JWkVfSUNPTl9JRCA9ICdtaW51cyc7XG5jb25zdCBSRVNUT1JFX0lDT05fSUQgPSAnbWF4aW1pemUtMic7XG5jb25zdCBDQU5DRUxfSUNPTl9JRCA9ICd4JztcblxuLy8gTmF2aWdhdGlvbiBrZXlzIHBhc3MgdGhyb3VnaCB3aGlsZSBtaW5pbWl6ZWQgc28gdGhlIHVzZXIgY2FuIG1vdmUgdGhlIGN1cnNvciBhbmQgc2Nyb2xsIHRvIHJlYWQuXG4vLyBOb25lIG9mIHRoZW0gbXV0YXRlIHRoZSBkb2N1bWVudCBcdTIwMTQgdGV4dCBjaGFuZ2VzIGFyZSBjYXVnaHQgc2VwYXJhdGVseSBieSB0aGUgYGJlZm9yZWlucHV0YCBndWFyZC5cbi8vIFNoaWZ0K25hdmlnYXRpb24gaXMgYmxvY2tlZCwgdGhvdWdoLCBzaW5jZSBpdCBleHRlbmRzIHRoZSBzZWxlY3Rpb24gdGhhdCBpbnNwZWN0aW9uIGRvZXMgbm90IG5lZWQuXG5jb25zdCBOQVZJR0FUSU9OX0tFWVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAnQXJyb3dEb3duJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0Fycm93VXAnLFxuICAnRW5kJyxcbiAgJ0hvbWUnLFxuICAnUGFnZURvd24nLFxuICAnUGFnZVVwJ1xuXSk7XG5cbi8vIEEgYmFyZSBtb2RpZmllciBwcmVzcyBkb2VzIG5vdGhpbmcgb24gaXRzIG93biwgc28gaXQgcGFzc2VzIHRocm91Z2ggdGhlIGxvY2suXG4vLyBUaGlzIGF2b2lkcyBhIHNwdXJpb3VzIGZsYXNoL2JlZXAgd2hpbGUgY29tcG9zaW5nIGEgc2hvcnRjdXQ7IHRoZSBzaG9ydGN1dCdzIGNvbW1hbmQga2V5IGlzIGJsb2NrZWQuXG5jb25zdCBNT0RJRklFUl9LRVlTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgJ0FsdCcsXG4gICdDb250cm9sJyxcbiAgJ01ldGEnLFxuICAnU2hpZnQnXG5dKTtcblxuLyoqXG4gKiBBIHJlZ2lzdGVyZWQgZW50cnkgZm9yIGEgY3VycmVudGx5LW1pbmltaXplZCBtb2RhbC4gVGhlIHNoYXJlZCBwZWVrLW9ubHkgbG9jayB1c2VzIGl0IHRvIGtub3cgYVxuICogbW9kYWwgaXMgbWluaW1pemVkLCB0byBsZWF2ZSB0aGF0IG1vZGFsJ3Mgb3duIHJlLW9wZW5zIGFsb25lLCBhbmQgdG8gZmxhc2ggaXRzIGJhciBvbiBhIGJsb2NrZWRcbiAqIGF0dGVtcHQuXG4gKi9cbmludGVyZmFjZSBQZWVrTG9ja0VudHJ5IHtcbiAgLyoqXG4gICAqIFRoZSBmbG9hdGluZyBiYXIgZWxlbWVudC4gVXNlZCB0byBkZXRlY3QgYSBzdGFsZSBlbnRyeSAoaXRzIGJhciBoYXMgbGVmdCB0aGUgRE9NKSBzbyBpdCBjYW4gYmVcbiAgICogcHJ1bmVkIGFuZCBuZXZlciBrZWVwIHRoZSBhcHAgbG9ja2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFyRWw6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBGbGFzaGVzIHRoZSBmbG9hdGluZyBiYXIgdG8gc2lnbmFsIGEgYmxvY2tlZCBhdHRlbXB0LlxuICAgKi9cbiAgZmxhc2goKTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIHdyYXBwZWQgbW9kYWwgaW5zdGFuY2UsIHNvIGl0cyBvd24gYG9wZW4oKWAgaXMgbmV2ZXIgYmxvY2tlZCBieSB0aGUgbG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGlubmVyTW9kYWw6IE1vZGFsO1xufVxuXG5jb25zdCBwZWVrTG9ja0VudHJpZXMgPSBuZXcgU2V0PFBlZWtMb2NrRW50cnk+KCk7XG5jb25zdCBiZWVwZXIgPSBuZXcgQmVlcGVyKCk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uc3RydWN0aW5nIGEge0BsaW5rIE1pbmltaXphYmxlTW9kYWx9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltaXphYmxlTW9kYWxDb25zdHJ1Y3Rvck9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgbWluaW1pemVkIGJhciBzaG93cyBhIENhbmNlbCBidXR0b24gdGhhdCBjbG9zZXMgdGhlIHdyYXBwZWQgbW9kYWwuIENsb3NpbmcgbGV0cyB0aGVcbiAgICogd3JhcHBlZCBtb2RhbCdzIG93biBgb25DbG9zZWAgZGVmaW5lIHdoYXQgXCJjYW5jZWxcIiBtZWFucyAoZS5nLiByZWxlYXNpbmcgYSBoZWxkIGxvY2spLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dDYW5jZWxCdXR0b24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEluc3RhbGxzIHRoZSBwZWVrLW9ubHkgbG9jaydzIGBvcGVuYCBwYXRjaGVzIHdoaWxlIGF0IGxlYXN0IG9uZSBtb2RhbCBpcyBtaW5pbWl6ZWQuIEJlaW5nIGFcbiAqIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnR9LCBib3RoIHBhdGNoZXMgYXJlIHRvcm4gZG93biBhdXRvbWF0aWNhbGx5IG9uIGB1bmxvYWRgLCBzbyB0aGV5IGV4aXN0XG4gKiBvbmx5IHdoaWxlIHRoZSBsb2NrIGlzIGFjdGl2ZS4gQSBtaW5pbWl6ZWQgbW9kYWwncyBvd24gcmUtb3BlbiBpcyBhbHdheXMgYWxsb3dlZCAoc2VlXG4gKiB7QGxpbmsgc2hvdWxkQmxvY2tPcGVufSk7IGV2ZXJ5IG90aGVyIG1vZGFsIG9wZW4gaXMgYmxvY2tlZCBhbmQgc2lnbmFscyBhIGZsYXNoICsgYmVlcC5cbiAqL1xuY2xhc3MgUGVla0xvY2tDb21wb25lbnQgZXh0ZW5kcyBNb25rZXlBcm91bmRDb21wb25lbnQge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgd2hvc2Ugc2V0dGluZ3MgbW9kYWwgaXMgZ3VhcmRlZCBhbmQgd2hvc2Ugd2luZG93cyBzdXBwcmVzcyBpbnB1dCB3aGlsZSBsb2NrZWQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBgb3BlbmAgcGF0Y2hlcyBhbmQgdGhlIGlucHV0IHN1cHByZXNzb3JzLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcblxuICAgIC8vIEJsb2NrIG9wZW5pbmcgYW55IE9USEVSIG1vZGFsIHdoaWxlIGEgbW9kYWwgaXMgbWluaW1pemVkICh0aGUgY29tbWFuZCBwYWxldHRlLCBhIHJlLWZpcmVkXG4gICAgLy8gQ29tbWFuZCwgYW5vdGhlciBwbHVnaW4gbW9kYWwsIFx1MjAyNikuXG4gICAgdGhpcy5yZWdpc3Rlck1ldGhvZFBhdGNoPE1vZGFsLCAnb3Blbic+KHtcbiAgICAgICRvYmplY3Q6IE1vZGFsLnByb3RvdHlwZSxcbiAgICAgIG1ldGhvZE5hbWU6ICdvcGVuJyxcbiAgICAgIHBhdGNoSGFuZGxlcjogKHsgZmFsbGJhY2ssIG9yaWdpbmFsVGhpcyB9KTogdm9pZCA9PiB7XG4gICAgICAgIGJsb2NrT3JGYWxsYmFjayhvcmlnaW5hbFRoaXMsIGZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIE9ic2lkaWFuJ3MgU2V0dGluZ3MgaXMgYSAqcG9wb3V0KiBtb2RhbDogb24gZGVza3RvcCBpdHMgb3duIGBvcGVuKClgIGZpcnN0IGNyZWF0ZXMgYSBzZXBhcmF0ZSBPU1xuICAgIC8vIFdpbmRvdyAodmlhIGBzaG91bGRVc2VQb3BvdXQoKWAvYGdldFBvcG91dE9wdGlvbnMoKWApIGFuZCBvbmx5IFRIRU4gZGVsZWdhdGVzIHRvXG4gICAgLy8gYE1vZGFsLnByb3RvdHlwZS5vcGVuYCB0byByZW5kZXIgdGhlIGFjdGl2ZSB0YWIgaW50byBpdC4gR3VhcmRpbmcgb25seSBgTW9kYWwucHJvdG90eXBlLm9wZW5gXG4gICAgLy8gVGhlcmVmb3JlIGJsb2NrcyB0aGUgcmVuZGVyIGJ1dCBsZWF2ZXMgYW4gZW1wdHkgc2V0dGluZ3Mgd2luZG93IGJlaGluZCBcdTIwMTQgdGhlIHJlcG9ydGVkIGJhZCBVWC5cbiAgICAvLyBHdWFyZGluZyB0aGUgc2V0dGluZ3MgbW9kYWwncyBvd24gYG9wZW4oKWAgYmxvY2tzIGl0ICpiZWZvcmUqIHRoZSB3aW5kb3cgaXMgY3JlYXRlZC5cbiAgICB0aGlzLnJlZ2lzdGVyTWV0aG9kUGF0Y2g8QXBwWydzZXR0aW5nJ10sICdvcGVuJz4oe1xuICAgICAgJG9iamVjdDogdGhpcy5hcHAuc2V0dGluZyxcbiAgICAgIG1ldGhvZE5hbWU6ICdvcGVuJyxcbiAgICAgIHBhdGNoSGFuZGxlcjogKHsgZmFsbGJhY2ssIG9yaWdpbmFsVGhpcyB9KTogdm9pZCA9PiB7XG4gICAgICAgIGJsb2NrT3JGYWxsYmFjayhvcmlnaW5hbFRoaXMsIGZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFN1cHByZXNzIHRoZSBrZXlib2FyZCwgZWRpdG9yIG11dGF0aW9uLCBhbmQgdGhlIGNvbnRleHQgbWVudSBhY3Jvc3MgQUxMIHdpbmRvd3MgXHUyMDE0IHRoZSBtYWluIHdpbmRvd1xuICAgIC8vIEFuZCBldmVyeSBleGlzdGluZy9mdXR1cmUgcG9wb3V0IFx1MjAxNCBzbyB0aGUgbG9jayBob2xkcyB3aGVyZXZlciB0aGUgdXNlcidzIGZvY3VzIGlzLCBub3Qgb25seSBpblxuICAgIC8vIFRoZSB3aW5kb3cgdGhhdCBvd25zIHRoZSBtaW5pbWl6ZWQgbW9kYWwuIENhcHR1cmUtcGhhc2UgbGlzdGVuZXJzIHJ1biBiZWZvcmUgT2JzaWRpYW4ncyBvd25cbiAgICAvLyBEb2N1bWVudC9lbGVtZW50IGhhbmRsZXJzIChpbmNsdWRpbmcgQ29kZU1pcnJvcidzKSwgc28gYHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpYCBpbiB0aGVcbiAgICAvLyBTdXBwcmVzc29ycyBrZWVwcyBhIGJsb2NrZWQgZXZlbnQgZnJvbSBldmVyIHJlYWNoaW5nIHRoZW0uIGBrZXlkb3duYCBsZXRzIG5hdmlnYXRpb24ga2V5cyB0aHJvdWdoXG4gICAgLy8gKHNlZSBgaXNQZWVrQWxsb3dlZEtleWApIGJ1dCBibG9ja3MgY29tbWFuZCBob3RrZXlzOyBgYmVmb3JlaW5wdXRgIGJsb2NrcyBhbGwgZWRpdG9yIG11dGF0aW9uO1xuICAgIC8vIGBjb250ZXh0bWVudWAgYmxvY2tzIHRoZSByaWdodC1jbGljayBtZW51LlxuICAgIGNvbnN0IGFsbFdpbmRvd3NFdmVudENvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudCh0aGlzLmFwcCkpO1xuICAgIGFsbFdpbmRvd3NFdmVudENvbXBvbmVudC5yZWdpc3RlckFsbFdpbmRvd3NEb21FdmVudCh7XG4gICAgICBjYWxsYmFjazogc3VwcHJlc3NLZXlkb3duV2hpbGVQZWVrTG9ja2VkLFxuICAgICAgb3B0aW9uczogeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgICB0eXBlOiAna2V5ZG93bidcbiAgICB9KTtcbiAgICBhbGxXaW5kb3dzRXZlbnRDb21wb25lbnQucmVnaXN0ZXJBbGxXaW5kb3dzRG9tRXZlbnQoe1xuICAgICAgY2FsbGJhY2s6IHN1cHByZXNzV2hpbGVQZWVrTG9ja2VkLFxuICAgICAgb3B0aW9uczogeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgICB0eXBlOiAnYmVmb3JlaW5wdXQnXG4gICAgfSk7XG4gICAgYWxsV2luZG93c0V2ZW50Q29tcG9uZW50LnJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50KHtcbiAgICAgIGNhbGxiYWNrOiBzdXBwcmVzc1doaWxlUGVla0xvY2tlZCxcbiAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSB9LFxuICAgICAgdHlwZTogJ2NvbnRleHRtZW51J1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgYSB7QGxpbmsgTW9kYWx9IGluc3RhbmNlIHRvIG1ha2UgaXQgbWluaW1pemFibGUgdG8gYSBzbWFsbCBmbG9hdGluZyBiYXIgYW5kIHJlc3RvcmFibGUuIFdoaWxlXG4gKiBtaW5pbWl6ZWQgdGhlIGFwcCBpcyBwdXQgaW50byBhIHBlZWstb25seSBsb2NrIChrZXlib2FyZCwgY29udGV4dCBtZW51LCBhbmQgb3BlbmluZyBvdGhlciBtb2RhbHMgYXJlXG4gKiBibG9ja2VkKSBzbyB0aGUgbW9kYWwncyBibG9ja2luZyBjb250cmFjdCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHR5cGVQYXJhbSBUTW9kYWwgLSBUaGUgdHlwZSBvZiB0aGUgd3JhcHBlZCBtb2RhbC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1pbmltaXphYmxlTW9kYWw8VE1vZGFsIGV4dGVuZHMgTW9kYWw+IHtcbiAgLyoqXG4gICAqIFRoZSB3cmFwcGVkIG1vZGFsLiBPcGVuLCBjbG9zZSwgYW5kIHBvcHVsYXRlIGl0IGFzIHVzdWFsIChlLmcuIGBtaW5pbWl6YWJsZS5tb2RhbC5vcGVuKClgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtb2RhbDogVE1vZGFsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBtb2RhbCBpcyBjdXJyZW50bHkgbWluaW1pemVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG1vZGFsIGlzIGN1cnJlbnRseSBtaW5pbWl6ZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGdldCBpc01pbmltaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc01pbmltaXplZFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdGNoZXMgdGhlIHdyYXBwZWQgbW9kYWwncyBgb25DbG9zZWAgdG8gcnVuIGNsZWFudXAuIFBlcnNpc3RzIGZvciB0aGUgd3JhcHBlcidzIHdob2xlIGxpZmUgKGFcbiAgICogbW9kYWwgY2FuIGJlIHJlb3BlbmVkLCBzbyB0aGUgcGF0Y2ggbXVzdCBzdXJ2aXZlIGVhY2ggY2xvc2UpLCBoZW5jZSBhIGRlZGljYXRlZCBjb21wb25lbnQgdGhhdCBpc1xuICAgKiBuZXZlciB1bmxvYWRlZCBcdTIwMTQgZGlzdGluY3QgZnJvbSBgcGVla0xvY2tDb21wb25lbnRgLCB3aG9zZSBwYXRjaGVzIGxpdmUgb25seSB3aGlsZSBtaW5pbWl6ZWQuXG4gICAqIEV4cG9zZWQgdG8gc3ViY2xhc3NlcyBzbyB0aGV5IGNhbiByZWdpc3RlciBhZGRpdGlvbmFsIGxpZmV0aW1lLXNjb3BlZCBwYXRjaGVzIG9uIHRoZSB3cmFwcGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsb3NlUGF0Y2hDb21wb25lbnQgPSBuZXcgTW9ua2V5QXJvdW5kQ29tcG9uZW50KCk7XG5cbiAgcHJpdmF0ZSBpc01pbmltaXplZFZhbHVlID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWluaW1pemVCdXR0b25FbDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgbWluaW1pemVkQmFyRWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcGVla0xvY2tDb21wb25lbnQ6IG51bGwgfCBQZWVrTG9ja0NvbXBvbmVudCA9IG51bGw7XG4gIHByaXZhdGUgcGVla0xvY2tFbnRyeTogbnVsbCB8IFBlZWtMb2NrRW50cnkgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IHNob3VsZFNob3dDYW5jZWxCdXR0b246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdyYXBzIHRoZSBnaXZlbiBtb2RhbCwgYWRkaW5nIGEgbWluaW1pemUgYnV0dG9uIGFuZCB3aXJpbmcgdXAgY2xlYW51cCBvbiBjbG9zZS5cbiAgICpcbiAgICogQHBhcmFtIG1vZGFsIC0gVGhlIG1vZGFsIGluc3RhbmNlIHRvIG1ha2UgbWluaW1pemFibGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBjb250cm9sbGluZyB0aGUgbWluaW1pemVkIGJhci4gU2VlIHtAbGluayBNaW5pbWl6YWJsZU1vZGFsQ29uc3RydWN0b3JPcHRpb25zfS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihtb2RhbDogVE1vZGFsLCBvcHRpb25zOiBNaW5pbWl6YWJsZU1vZGFsQ29uc3RydWN0b3JPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLm1vZGFsID0gbW9kYWw7XG4gICAgdGhpcy5zaG91bGRTaG93Q2FuY2VsQnV0dG9uID0gb3B0aW9ucy5zaG91bGRTaG93Q2FuY2VsQnV0dG9uID8/IHRydWU7XG4gICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyhtb2RhbC5jb250YWluZXJFbCwgW0Nzc0NsYXNzLk1pbmltaXphYmxlTW9kYWxdKTtcbiAgICB0aGlzLm1pbmltaXplQnV0dG9uRWwgPSB0aGlzLmNyZWF0ZU1pbmltaXplQnV0dG9uKCk7XG4gICAgdGhpcy5jbG9zZVBhdGNoQ29tcG9uZW50LmxvYWQoKTtcbiAgICB0aGlzLnBhdGNoT25DbG9zZShtb2RhbCk7XG4gIH1cblxuICAvKipcbiAgICogTWluaW1pemVzIHRoZSBtb2RhbDogaGlkZXMgdGhlIG1vZGFsIGFuZCBpdHMgYmFja2Ryb3AsIHNob3dzIGEgZmxvYXRpbmcgYmFyIHdpdGggYSByZXN0b3JlIGJ1dHRvbixcbiAgICogYW5kIHB1dHMgdGhlIGFwcCBpbnRvIHRoZSBwZWVrLW9ubHkgbG9jay4gQSBuby1vcCBpZiB0aGUgbW9kYWwgaXMgYWxyZWFkeSBtaW5pbWl6ZWQuXG4gICAqL1xuICBwdWJsaWMgbWluaW1pemUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNNaW5pbWl6ZWRWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNNaW5pbWl6ZWRWYWx1ZSA9IHRydWU7XG4gICAgdGhpcy5taW5pbWl6ZUJ1dHRvbkVsLmhpZGUoKTtcbiAgICB0aGlzLm1vZGFsLmNvbnRhaW5lckVsLmhpZGUoKTtcbiAgICAvLyBUaGUgbW9kYWwgc3RheXMgb3BlbiB3aGlsZSBtaW5pbWl6ZWQsIHNvIGl0cyBrZXltYXAgc2NvcGUgaXMgcG9wcGVkIHRvIHJlbGVhc2UgdGhlIGZvY3VzIHRyYXAuXG4gICAgLy8gUmVzdG9yaW5nIHJlLXB1c2hlcyBpdC4gQW4gYWN0aXZlIHRyYXAgd291bGQgc3RlYWwgZm9jdXMgYmFjayB0byB0aGUgaGlkZGVuIG1vZGFsLCBibG9ja2luZyB0aGVcbiAgICAvLyBNb3VzZS1kcml2ZW4gaW5zcGVjdGlvbiAoY2xpY2tpbmcgbm90ZXMsIHNjcm9sbGluZykgdGhhdCBtaW5pbWl6ZSBleGlzdHMgdG8gYWxsb3cuXG4gICAgLy8gS2V5Ym9hcmQgaW5wdXQgcmVtYWlucyBibG9ja2VkIGJ5IHRoZSBwZWVrLW9ubHkgbG9jaywgc28gcmVsZWFzaW5nIHRoZSB0cmFwIGtlZXBzIHRoZSBhcHAgaW5lcnQuXG4gICAgdGhpcy5tb2RhbC5hcHAua2V5bWFwLnBvcFNjb3BlKHRoaXMubW9kYWwuc2NvcGUpO1xuICAgIHRoaXMubWluaW1pemVkQmFyRWwgPSB0aGlzLmNyZWF0ZU1pbmltaXplZEJhcigpO1xuICAgIHRoaXMuZW5hYmxlUGVla0xvY2sodGhpcy5taW5pbWl6ZWRCYXJFbCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgdGhlIG1vZGFsIGZyb20gdGhlIG1pbmltaXplZCBzdGF0ZSwgcmVtb3ZpbmcgdGhlIGZsb2F0aW5nIGJhciBhbmQgbGlmdGluZyB0aGUgcGVlay1vbmx5XG4gICAqIGxvY2suIEEgbm8tb3AgaWYgdGhlIG1vZGFsIGlzIG5vdCBtaW5pbWl6ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVzdG9yZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNNaW5pbWl6ZWRWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNNaW5pbWl6ZWRWYWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuZGlzYWJsZVBlZWtMb2NrKCk7XG4gICAgdGhpcy5yZW1vdmVNaW5pbWl6ZWRCYXIoKTtcbiAgICAvLyBSZS1wdXNoIHRoZSBzY29wZSBwb3BwZWQgaW4gbWluaW1pemUoKSBzbyB0aGUgcmVzdG9yZWQgbW9kYWwgYmxvY2tzIHRoZSBhcHAgYWdhaW4gKGZvY3VzIHRyYXBcbiAgICAvLyArIEVzY2FwZSBjYXB0dXJlKS5cbiAgICB0aGlzLm1vZGFsLmFwcC5rZXltYXAucHVzaFNjb3BlKHRoaXMubW9kYWwuc2NvcGUpO1xuICAgIHRoaXMubW9kYWwuY29udGFpbmVyRWwuc2hvdygpO1xuICAgIHRoaXMubWluaW1pemVCdXR0b25FbC5zaG93KCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1pbmltaXplQnV0dG9uKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBidXR0b25FbCA9IHRoaXMubW9kYWwubW9kYWxFbC5jcmVhdGVFbCgnYnV0dG9uJywgeyBjbHM6IENzc0NsYXNzLk1pbmltaXplQnV0dG9uIH0pO1xuICAgIHNldEljb24oYnV0dG9uRWwsIE1JTklNSVpFX0lDT05fSUQpO1xuICAgIGJ1dHRvbkVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5taW5pbWl6ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBidXR0b25FbDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTWluaW1pemVkQmFyKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBiYXJFbCA9IHRoaXMubW9kYWwuY29udGFpbmVyRWwub3duZXJEb2N1bWVudC5ib2R5LmNyZWF0ZURpdigpO1xuICAgIGFkZFBsdWdpbkNzc0NsYXNzZXMoYmFyRWwsIFtDc3NDbGFzcy5NaW5pbWl6ZWRNb2RhbEJhcl0pO1xuICAgIGJhckVsLmNyZWF0ZVNwYW4oe1xuICAgICAgY2xzOiBDc3NDbGFzcy5NaW5pbWl6ZWRNb2RhbEJhclRpdGxlLFxuICAgICAgdGV4dDogdGhpcy5tb2RhbC50aXRsZUVsLnRleHRDb250ZW50XG4gICAgfSk7XG4gICAgY29uc3QgcmVzdG9yZUJ1dHRvbkVsID0gYmFyRWwuY3JlYXRlRWwoJ2J1dHRvbicsIHsgY2xzOiBDc3NDbGFzcy5SZXN0b3JlQnV0dG9uIH0pO1xuICAgIHNldEljb24ocmVzdG9yZUJ1dHRvbkVsLCBSRVNUT1JFX0lDT05fSUQpO1xuICAgIGlmICh0aGlzLnNob3VsZFNob3dDYW5jZWxCdXR0b24pIHtcbiAgICAgIGNvbnN0IGNhbmNlbEJ1dHRvbkVsID0gYmFyRWwuY3JlYXRlRWwoJ2J1dHRvbicsIHsgY2xzOiBDc3NDbGFzcy5DYW5jZWxCdXR0b24gfSk7XG4gICAgICBzZXRJY29uKGNhbmNlbEJ1dHRvbkVsLCBDQU5DRUxfSUNPTl9JRCk7XG4gICAgICBzZXRUb29sdGlwKGNhbmNlbEJ1dHRvbkVsLCAnQ2FuY2VsJyk7XG4gICAgICBjYW5jZWxCdXR0b25FbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHtcbiAgICAgICAgLy8gVGhlIHdob2xlIGJhciByZXN0b3JlcyBvbiBjbGljazsgc3RvcCBwcm9wYWdhdGlvbiBzbyBDYW5jZWwgY2xvc2VzIHRoZSBtb2RhbCBpbnN0ZWFkIG9mXG4gICAgICAgIC8vIFJlc3RvcmluZyBpdC4gQ2xvc2luZyBydW5zIHRoZSB3cmFwcGVkIG1vZGFsJ3Mgb25DbG9zZSAocGVlayBsb2NrIGxpZnRlZCwgYmFyIHJlbW92ZWQpLCBzb1xuICAgICAgICAvLyBUaGUgY29uc3VtZXIncyBvbkNsb3NlIGRlY2lkZXMgd2hhdCBcImNhbmNlbFwiIG1lYW5zIChlLmcuIHJlbGVhc2luZyBhIGhlbGQgbG9jaykuXG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFRoZSB3aG9sZSBiYXIgcmVzdG9yZXMgb24gY2xpY2ssIG5vdCBqdXN0IHRoZSByZXN0b3JlIGJ1dHRvbiBcdTIwMTQgYSBsYXJnZXIsIGVhc2llciBjbGljayB0YXJnZXQuXG4gICAgLy8gYHJlc3RvcmUoKWAgZ3VhcmRzIGFnYWluc3QgYSBkb3VibGUgaW52b2NhdGlvbiwgc28gdGhlIHJlc3RvcmUgYnV0dG9uJ3Mgb3duIGNsaWNrIGJ1YmJsaW5nIHVwXG4gICAgLy8gSGVyZSBpcyBhIG5vLW9wLiBUaGUgcmVzdG9yZSBidXR0b24gc3RheXMgcHVyZWx5IGFzIGEgdmlzdWFsIGFmZm9yZGFuY2UgZm9yIHRoZSBjbGljayB0YXJnZXQuXG4gICAgYmFyRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0aGlzLnJlc3RvcmUoKTtcbiAgICB9KTtcbiAgICAvLyBEcm9wIHRoZSBvbmUtc2hvdCBhdHRlbnRpb24gZmxhc2ggb25jZSBpdCBmaW5pc2hlcyBzbyB0aGUgYmFyIHJldHVybnMgdG8gaXRzIGdlbnRsZSBpZGxlIHB1bHNlLlxuICAgIC8vIFRoZSBpZGxlIHB1bHNlIGlzIGFuIGluZmluaXRlIGFuaW1hdGlvbiwgd2hpY2ggbmV2ZXIgZmlyZXMgYGFuaW1hdGlvbmVuZGAuXG4gICAgYmFyRWwuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgKCkgPT4ge1xuICAgICAgYmFyRWwucmVtb3ZlQ2xhc3MoQ3NzQ2xhc3MuTWluaW1pemVkTW9kYWxCYXJBdHRlbnRpb24pO1xuICAgIH0pO1xuICAgIHJldHVybiBiYXJFbDtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZVBlZWtMb2NrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wZWVrTG9ja0VudHJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGVla0xvY2tFbnRyaWVzLmRlbGV0ZSh0aGlzLnBlZWtMb2NrRW50cnkpO1xuICAgIHRoaXMucGVla0xvY2tFbnRyeSA9IG51bGw7XG4gICAgLy8gVGVhciB0aGUgYG9wZW5gIHBhdGNoZXMgZG93biB3aXRoIHRoZSBjb21wb25lbnQsIHNvIHRoZXkgZXhpc3Qgb25seSB3aGlsZSB0aGlzIG1vZGFsIGlzIG1pbmltaXplZC5cbiAgICB0aGlzLnBlZWtMb2NrQ29tcG9uZW50Py51bmxvYWQoKTtcbiAgICB0aGlzLnBlZWtMb2NrQ29tcG9uZW50ID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlUGVla0xvY2soYmFyRWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5wZWVrTG9ja0VudHJ5ID0ge1xuICAgICAgYmFyRWwsXG4gICAgICBmbGFzaDogKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmZsYXNoQmFyKGJhckVsKTtcbiAgICAgIH0sXG4gICAgICBpbm5lck1vZGFsOiB0aGlzLm1vZGFsXG4gICAgfTtcbiAgICBwZWVrTG9ja0VudHJpZXMuYWRkKHRoaXMucGVla0xvY2tFbnRyeSk7XG4gICAgLy8gSW5zdGFsbCB0aGUgYG9wZW5gIHBhdGNoZXMgYW5kIGlucHV0IHN1cHByZXNzb3JzIGZvciBhcyBsb25nIGFzIHRoaXMgbW9kYWwgaXMgbWluaW1pemVkLiBUaGVcbiAgICAvLyBCbG9jayBMT0dJQyBpdHNlbGYga2V5cyBvZmYgdGhlIHNoYXJlZCBgcGVla0xvY2tFbnRyaWVzYCAoc2VlIGBzaG91bGRCbG9ja09wZW5gKSwgc28gd2l0aCBzZXZlcmFsXG4gICAgLy8gTW9kYWxzIG1pbmltaXplZCBldmVyeSBvbmUncyBwYXRjaCByZWFjaGVzIHRoZSBzYW1lIHZlcmRpY3Q7IHRoZSBsb2NrIGxpZnRzIG9ubHkgb25jZSB0aGUgbGFzdFxuICAgIC8vIE1vZGFsIHJlc3RvcmVzL2Nsb3Nlcy5cbiAgICB0aGlzLnBlZWtMb2NrQ29tcG9uZW50ID0gbmV3IFBlZWtMb2NrQ29tcG9uZW50KHRoaXMubW9kYWwuYXBwKTtcbiAgICB0aGlzLnBlZWtMb2NrQ29tcG9uZW50LmxvYWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmxhc2hCYXIoYmFyRWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgYmFyRWwucmVtb3ZlQ2xhc3MoQ3NzQ2xhc3MuTWluaW1pemVkTW9kYWxCYXJBdHRlbnRpb24pO1xuICAgIC8vIEZvcmNlIGEgcmVmbG93IHNvIHJlLWFkZGluZyB0aGUgY2xhc3MgcmVzdGFydHMgdGhlIG9uZS1zaG90IGZsYXNoIG9uIHJhcGlkIHJlcGVhdGVkIGJsb2Nrcy5cbiAgICBiYXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBiYXJFbC5hZGRDbGFzcyhDc3NDbGFzcy5NaW5pbWl6ZWRNb2RhbEJhckF0dGVudGlvbik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZVBlZWtMb2NrKCk7XG4gICAgdGhpcy5yZW1vdmVNaW5pbWl6ZWRCYXIoKTtcbiAgICB0aGlzLmlzTWluaW1pemVkVmFsdWUgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hPbkNsb3NlKG1vZGFsOiBNb2RhbCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VQYXRjaENvbXBvbmVudC5yZWdpc3Rlck1ldGhvZFBhdGNoPE1vZGFsLCAnb25DbG9zZSc+KHtcbiAgICAgICRvYmplY3Q6IG1vZGFsLFxuICAgICAgbWV0aG9kTmFtZTogJ29uQ2xvc2UnLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjayB9KTogdm9pZCA9PiB7XG4gICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTWluaW1pemVkQmFyKCk6IHZvaWQge1xuICAgIHRoaXMubWluaW1pemVkQmFyRWw/LnJlbW92ZSgpO1xuICAgIHRoaXMubWluaW1pemVkQmFyRWwgPSBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJsb2NrRXZlbnQoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICBzaWduYWxCbG9ja2VkQXR0ZW1wdCgpO1xufVxuXG5mdW5jdGlvbiBibG9ja09yRmFsbGJhY2sobW9kYWw6IE1vZGFsLCBmYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICBpZiAoc2hvdWxkQmxvY2tPcGVuKG1vZGFsKSkge1xuICAgIHNpZ25hbEJsb2NrZWRBdHRlbXB0KCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZmFsbGJhY2soKTtcbn1cblxuZnVuY3Rpb24gZmxhc2hNaW5pbWl6ZWRCYXJzKCk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHBlZWtMb2NrRW50cmllcykge1xuICAgIGVudHJ5LmZsYXNoKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNNaW5pbWl6ZWRJbm5lck1vZGFsKG1vZGFsOiBNb2RhbCk6IGJvb2xlYW4ge1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHBlZWtMb2NrRW50cmllcykge1xuICAgIGlmIChlbnRyeS5pbm5lck1vZGFsID09PSBtb2RhbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1BlZWtBbGxvd2VkS2V5KCRldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAvLyBOYXZpZ2F0aW9uIG1vdmVzIHRoZSBjdXJzb3Ivc2Nyb2xscyAoYWxsb3dlZCksIGJ1dCBTaGlmdCtuYXZpZ2F0aW9uIGV4dGVuZHMgdGhlIHNlbGVjdGlvbiAobm90XG4gIC8vIE5lZWRlZCBmb3IgaW5zcGVjdGlvbiksIHNvIGl0IGlzIGJsb2NrZWQuIEJhcmUgbW9kaWZpZXIgcHJlc3NlcyBwYXNzIHRocm91Z2ggb24gdGhlaXIgb3duLlxuICBpZiAoTkFWSUdBVElPTl9LRVlTLmhhcygkZXZlbnQua2V5KSkge1xuICAgIHJldHVybiAhJGV2ZW50LnNoaWZ0S2V5O1xuICB9XG5cbiAgcmV0dXJuIE1PRElGSUVSX0tFWVMuaGFzKCRldmVudC5rZXkpO1xufVxuXG5mdW5jdGlvbiBpc1BlZWtMb2NrZWQoKTogYm9vbGVhbiB7XG4gIC8vIERyb3AgZW50cmllcyB3aG9zZSBiYXIgaGFzIGxlZnQgdGhlIERPTSB3aXRob3V0IGEgcmVzdG9yZSgpIG9yIGNsb3NlKCkuXG4gIC8vIEEgdGVzdCB0ZWFyZG93biB0aGF0IGVtcHRpZXMgdGhlIGJvZHkgaXMgdGhlIHR5cGljYWwgY2F1c2U7IHRoaXMga2VlcHMgYSBzdGFsZSBlbnRyeSBmcm9tIGxvY2tpbmcuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgcGVla0xvY2tFbnRyaWVzKSB7XG4gICAgaWYgKCFlbnRyeS5iYXJFbC5pc0Nvbm5lY3RlZCkge1xuICAgICAgcGVla0xvY2tFbnRyaWVzLmRlbGV0ZShlbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBlZWtMb2NrRW50cmllcy5zaXplID4gMDtcbn1cblxuZnVuY3Rpb24gc2hvdWxkQmxvY2tPcGVuKG1vZGFsOiBNb2RhbCk6IGJvb2xlYW4ge1xuICAvLyBBIG1vZGFsJ3Mgb3duIHJlLW9wZW4gaXMgbmV2ZXIgYmxvY2tlZCBcdTIwMTQgb3RoZXJ3aXNlIGEgbWluaW1pemVkIG1vZGFsIGNvdWxkIG5vdCByZXN0b3JlL3JlLW9wZW5cbiAgLy8gSXRzZWxmLiBFdmVyeSBPVEhFUiBtb2RhbCBvcGVuIGlzIGJsb2NrZWQgd2hpbGUgYW55IG1vZGFsIGlzIG1pbmltaXplZCAodGhlIHBlZWstb25seSBsb2NrKS5cbiAgcmV0dXJuIGlzUGVla0xvY2tlZCgpICYmICFpc01pbmltaXplZElubmVyTW9kYWwobW9kYWwpO1xufVxuXG5mdW5jdGlvbiBzaWduYWxCbG9ja2VkQXR0ZW1wdCgpOiB2b2lkIHtcbiAgZmxhc2hNaW5pbWl6ZWRCYXJzKCk7XG4gIGJlZXBlci5iZWVwKCk7XG59XG5cbmZ1bmN0aW9uIHN1cHByZXNzS2V5ZG93bldoaWxlUGVla0xvY2tlZCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgaWYgKCFpc1BlZWtMb2NrZWQoKSB8fCBpc1BlZWtBbGxvd2VkS2V5KCRldmVudCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBibG9ja0V2ZW50KCRldmVudCk7XG59XG5cbmZ1bmN0aW9uIHN1cHByZXNzV2hpbGVQZWVrTG9ja2VkKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgaWYgKCFpc1BlZWtMb2NrZWQoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGJsb2NrRXZlbnQoJGV2ZW50KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOENBLHNCQUlPO0FBRVAsb0JBQXVCO0FBQ3ZCLHlDQUF5QztBQUN6QyxxQ0FBc0M7QUFDdEMsdUJBQXlCO0FBQ3pCLDRCQUFvQztBQUVwQyxNQUFNLG1CQUFtQjtBQUN6QixNQUFNLGtCQUFrQjtBQUN4QixNQUFNLGlCQUFpQjtBQUt2QixNQUFNLGtCQUFrQixvQkFBSSxJQUFZO0FBQUEsRUFDdEM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsQ0FBQztBQUlELE1BQU0sZ0JBQWdCLG9CQUFJLElBQVk7QUFBQSxFQUNwQztBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7QUF5QkQsTUFBTSxrQkFBa0Isb0JBQUksSUFBbUI7QUFDL0MsTUFBTSxTQUFTLElBQUks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
@@ -40,16 +40,11 @@ if you want to view the source, please visit the github repository of this plugi
40
40
  globalThisRecord[key] ??= newFuncs[key]?.();
41
41
  }
42
42
 
43
- function name(obj) {
44
- return obj;
45
- }
46
-
47
43
  function extractDefault(module) {
48
44
  return module && module.__esModule && 'default' in module ? module.default : module;
49
45
  }
50
46
 
51
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
- 'obsidian',
47
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
53
48
  '@codemirror/autocomplete',
54
49
  '@codemirror/collab',
55
50
  '@codemirror/commands',
@@ -60,11 +55,12 @@ if you want to view the source, please visit the github repository of this plugi
60
55
  '@codemirror/text',
61
56
  '@codemirror/view',
62
57
  '@lezer/common',
58
+ '@lezer/highlight',
63
59
  '@lezer/lr',
64
- '@lezer/highlight'];
65
-
60
+ 'obsidian']
61
+ );
66
62
 
67
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
63
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
68
64
  '@codemirror/closebrackets',
69
65
  '@codemirror/comment',
70
66
  '@codemirror/fold',
@@ -76,11 +72,11 @@ if you want to view the source, please visit the github repository of this plugi
76
72
  '@codemirror/rangeset',
77
73
  '@codemirror/rectangular-selection',
78
74
  '@codemirror/stream-parser',
79
- '@codemirror/tooltip'];
80
-
75
+ '@codemirror/tooltip']
76
+ );
81
77
 
82
78
  function requirePatched(id) {
83
- if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
79
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
84
80
  return originalRequire?.(id);
85
81
  }
86
82
 
@@ -89,8 +85,8 @@ if you want to view the source, please visit the github repository of this plugi
89
85
  if (id === 'process' || id === 'node:process') {
90
86
  // eslint-disable-next-line no-console -- Valid usage.
91
87
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
- return globalThis.process;
88
+
89
+ return process;
94
90
  }
95
91
  } else {
96
92
  const module = originalRequire?.(id);
@@ -166,4 +162,4 @@ async function showModal(modalCreator) {
166
162
  ModalBase,
167
163
  showModal
168
164
  });
169
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9tb2RhbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgYSBiYXNlIGNsYXNzIGZvciBkaXNwbGF5aW5nIG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzZVJlc29sdmUgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5cbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuXG4vKipcbiAqIFRoZSBwYXJhbWV0ZXJzIGZvciBjb25zdHJ1Y3RpbmcgYSB7QGxpbmsgTW9kYWxCYXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJlc29sdmVkIGJ5IHRoZSBtb2RhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtczxWYWx1ZT4gZXh0ZW5kcyBNb2RhbFBhcmFtc0Jhc2Uge1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSB2YWx1ZSBvZiB0aGUgbW9kYWwuXG4gICAqL1xuICByZWFkb25seSBwcm9taXNlUmVzb2x2ZTogUHJvbWlzZVJlc29sdmU8VmFsdWU+O1xufVxuXG4vKipcbiAqIEJhc2Ugb3B0aW9ucyBmb3IgYSBtb2RhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RhbFBhcmFtc0Jhc2Uge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBtb2RhbC5cbiAgICovXG4gIHJlYWRvbmx5IGNzc0NsYXNzZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGRpc3BsYXlpbmcgbW9kYWxzIGluIE9ic2lkaWFuLlxuICpcbiAqIEB0eXBlUGFyYW0gVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgcmVzb2x2ZWQgYnkgdGhlIG1vZGFsLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9kYWxCYXNlPFZhbHVlPiBleHRlbmRzIE1vZGFsIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgdmFsdWUgb2YgdGhlIG1vZGFsLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb21pc2VSZXNvbHZlOiBQcm9taXNlUmVzb2x2ZTxWYWx1ZT47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgbW9kYWwuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IE1vZGFsQmFzZUNvbnN0cnVjdG9yUGFyYW1zPFZhbHVlPikge1xuICAgIHN1cGVyKHBhcmFtcy5hcHApO1xuICAgIHRoaXMucHJvbWlzZVJlc29sdmUgPSBwYXJhbXMucHJvbWlzZVJlc29sdmU7XG4gICAgdGhpcy5hZGRDc3NDbGFzc2VzKHBhcmFtcy5jc3NDbGFzc2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIENTUyBjbGFzc2VzIHRvIHRoZSBtb2RhbCdzIGNvbnRhaW5lciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY3NzQ2xhc3NlcyAtIFRoZSBDU1MgY2xhc3NlcyB0byBhZGQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkQ3NzQ2xhc3Nlcyhjc3NDbGFzc2VzPzogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyRWwsIGNzc0NsYXNzZXMpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBtb2RhbCBpbiBPYnNpZGlhbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJlc29sdmVkIGJ5IHRoZSBtb2RhbC5cbiAqIEBwYXJhbSBtb2RhbENyZWF0b3IgLSBBIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIG1vZGFsLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtb2RhbCBpcyBjbG9zZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93TW9kYWw8VmFsdWU+KG1vZGFsQ3JlYXRvcjogKHJlc29sdmU6IFByb21pc2VSZXNvbHZlPFZhbHVlPikgPT4gTW9kYWwpOiBQcm9taXNlPFZhbHVlPiB7XG4gIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxWYWx1ZT4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBtb2RhbCA9IG1vZGFsQ3JlYXRvcihyZXNvbHZlKTtcbiAgICBtb2RhbC5vcGVuKCk7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxzQkFBc0I7QUFJdEIsNEJBQW9DO0FBa0M3QixNQUFlLGtCQUF5QixzQkFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWhDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1osWUFBWSxRQUEyQztBQUM1RCxVQUFNLE9BQU8sR0FBRztBQUNoQixTQUFLLGlCQUFpQixPQUFPO0FBQzdCLFNBQUssY0FBYyxPQUFPLFVBQVU7QUFBQSxFQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLGNBQWMsWUFBc0M7QUFDNUQsbURBQW9CLEtBQUssYUFBYSxVQUFVO0FBQUEsRUFDbEQ7QUFDRjtBQVNBLGVBQXNCLFVBQWlCLGNBQXlFO0FBQzlHLFNBQU8sTUFBTSxJQUFJLFFBQWUsQ0FBQyxZQUFZO0FBQzNDLFVBQU0sUUFBUSxhQUFhLE9BQU87QUFDbEMsVUFBTSxLQUFLO0FBQUEsRUFDYixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
165
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9tb2RhbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgYSBiYXNlIGNsYXNzIGZvciBkaXNwbGF5aW5nIG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzZVJlc29sdmUgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5cbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuXG4vKipcbiAqIFRoZSBwYXJhbWV0ZXJzIGZvciBjb25zdHJ1Y3RpbmcgYSB7QGxpbmsgTW9kYWxCYXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJlc29sdmVkIGJ5IHRoZSBtb2RhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtczxWYWx1ZT4gZXh0ZW5kcyBNb2RhbFBhcmFtc0Jhc2Uge1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSB2YWx1ZSBvZiB0aGUgbW9kYWwuXG4gICAqL1xuICByZWFkb25seSBwcm9taXNlUmVzb2x2ZTogUHJvbWlzZVJlc29sdmU8VmFsdWU+O1xufVxuXG4vKipcbiAqIEJhc2Ugb3B0aW9ucyBmb3IgYSBtb2RhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RhbFBhcmFtc0Jhc2Uge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBtb2RhbC5cbiAgICovXG4gIHJlYWRvbmx5IGNzc0NsYXNzZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGRpc3BsYXlpbmcgbW9kYWxzIGluIE9ic2lkaWFuLlxuICpcbiAqIEB0eXBlUGFyYW0gVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgcmVzb2x2ZWQgYnkgdGhlIG1vZGFsLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9kYWxCYXNlPFZhbHVlPiBleHRlbmRzIE1vZGFsIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgdmFsdWUgb2YgdGhlIG1vZGFsLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb21pc2VSZXNvbHZlOiBQcm9taXNlUmVzb2x2ZTxWYWx1ZT47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgbW9kYWwuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IE1vZGFsQmFzZUNvbnN0cnVjdG9yUGFyYW1zPFZhbHVlPikge1xuICAgIHN1cGVyKHBhcmFtcy5hcHApO1xuICAgIHRoaXMucHJvbWlzZVJlc29sdmUgPSBwYXJhbXMucHJvbWlzZVJlc29sdmU7XG4gICAgdGhpcy5hZGRDc3NDbGFzc2VzKHBhcmFtcy5jc3NDbGFzc2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIENTUyBjbGFzc2VzIHRvIHRoZSBtb2RhbCdzIGNvbnRhaW5lciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY3NzQ2xhc3NlcyAtIFRoZSBDU1MgY2xhc3NlcyB0byBhZGQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkQ3NzQ2xhc3Nlcyhjc3NDbGFzc2VzPzogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyRWwsIGNzc0NsYXNzZXMpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBtb2RhbCBpbiBPYnNpZGlhbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJlc29sdmVkIGJ5IHRoZSBtb2RhbC5cbiAqIEBwYXJhbSBtb2RhbENyZWF0b3IgLSBBIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIG1vZGFsLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtb2RhbCBpcyBjbG9zZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93TW9kYWw8VmFsdWU+KG1vZGFsQ3JlYXRvcjogKHJlc29sdmU6IFByb21pc2VSZXNvbHZlPFZhbHVlPikgPT4gTW9kYWwpOiBQcm9taXNlPFZhbHVlPiB7XG4gIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxWYWx1ZT4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBtb2RhbCA9IG1vZGFsQ3JlYXRvcihyZXNvbHZlKTtcbiAgICBtb2RhbC5vcGVuKCk7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLHNCQUFzQjtBQUl0Qiw0QkFBb0M7QUFrQzdCLE1BQWUsa0JBQXlCLHNCQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJaEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPWixZQUFZLFFBQTJDO0FBQzVELFVBQU0sT0FBTyxHQUFHO0FBQ2hCLFNBQUssaUJBQWlCLE9BQU87QUFDN0IsU0FBSyxjQUFjLE9BQU8sVUFBVTtBQUFBLEVBQ3RDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1UsY0FBYyxZQUFzQztBQUM1RCxtREFBb0IsS0FBSyxhQUFhLFVBQVU7QUFBQSxFQUNsRDtBQUNGO0FBU0EsZUFBc0IsVUFBaUIsY0FBeUU7QUFDOUcsU0FBTyxNQUFNLElBQUksUUFBZSxDQUFDLFlBQVk7QUFDM0MsVUFBTSxRQUFRLGFBQWEsT0FBTztBQUNsQyxVQUFNLEtBQUs7QUFBQSxFQUNiLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K