@mnaoumov/obsidian-lib 7.1.0 → 8.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 (346) hide show
  1. package/dist/lib/cjs/__merged.cjs +5 -5
  2. package/dist/lib/cjs/active-file-provider.cjs +6 -6
  3. package/dist/lib/cjs/active-file-provider.d.cts +1 -1
  4. package/dist/lib/cjs/app.cjs +5 -5
  5. package/dist/lib/cjs/async-with-notice.cjs +5 -5
  6. package/dist/lib/cjs/attachment-path.cjs +6 -6
  7. package/dist/lib/cjs/attachment-unit-folder.cjs +5 -5
  8. package/dist/lib/cjs/backlink-index.cjs +13 -19
  9. package/dist/lib/cjs/backlink-index.d.cts +1 -1
  10. package/dist/lib/cjs/backlink.cjs +5 -5
  11. package/dist/lib/cjs/bases-view-registrar.cjs +6 -6
  12. package/dist/lib/cjs/bases-view-registrar.d.cts +1 -1
  13. package/dist/lib/cjs/callout.cjs +5 -5
  14. package/dist/lib/cjs/canvas.cjs +5 -5
  15. package/dist/lib/cjs/case-insensitive-file-index.cjs +5 -5
  16. package/dist/lib/cjs/code-block-markdown-information.cjs +6 -6
  17. package/dist/lib/cjs/code-block-markdown-information.d.cts +9 -9
  18. package/dist/lib/cjs/code-block-reg-exp.cjs +5 -5
  19. package/dist/lib/cjs/codemirror/index.cjs +5 -5
  20. package/dist/lib/cjs/codemirror/state-field-spec.cjs +6 -6
  21. package/dist/lib/cjs/codemirror/state-field-spec.d.cts +6 -6
  22. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +5 -5
  23. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +5 -5
  24. package/dist/lib/cjs/command-handlers/command-handler.cjs +5 -5
  25. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +5 -5
  26. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +5 -5
  27. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +5 -5
  28. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +5 -5
  29. package/dist/lib/cjs/command-handlers/index.cjs +5 -5
  30. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +5 -5
  31. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +5 -5
  32. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +5 -5
  33. package/dist/lib/cjs/command-registrar.cjs +6 -6
  34. package/dist/lib/cjs/command-registrar.d.cts +2 -2
  35. package/dist/lib/cjs/community-plugins.cjs +6 -6
  36. package/dist/lib/cjs/components/abort-signal-component.cjs +5 -5
  37. package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
  38. package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
  39. package/dist/lib/cjs/components/async-events-component.cjs +5 -5
  40. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +5 -5
  41. package/dist/lib/cjs/components/component-ex.cjs +5 -5
  42. package/dist/lib/cjs/components/console-debug-component.cjs +5 -5
  43. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +5 -5
  44. package/dist/lib/cjs/components/disposable-component.cjs +5 -5
  45. package/dist/lib/cjs/components/embed-extensions-component.cjs +5 -5
  46. package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +13 -16
  47. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +5 -5
  48. package/dist/lib/cjs/components/incremental-file-index-component.cjs +5 -5
  49. package/dist/lib/cjs/components/index.cjs +5 -5
  50. package/dist/lib/cjs/components/layout-ready-component.cjs +5 -5
  51. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +5 -5
  52. package/dist/lib/cjs/components/monkey-around-component.cjs +5 -5
  53. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
  54. package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
  55. package/dist/lib/cjs/components/plugin-gate-component.cjs +5 -5
  56. package/dist/lib/cjs/components/plugin-notice-component.cjs +6 -6
  57. package/dist/lib/cjs/components/plugin-notice-component.d.cts +3 -3
  58. package/dist/lib/cjs/components/plugin-settings-component.cjs +6 -6
  59. package/dist/lib/cjs/components/plugin-settings-component.d.cts +5 -5
  60. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +5 -5
  61. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +5 -5
  62. package/dist/lib/cjs/components/pointer-position-component.cjs +5 -5
  63. package/dist/lib/cjs/components/registry-component.cjs +5 -5
  64. package/dist/lib/cjs/components/release-notes-component.cjs +5 -5
  65. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +6 -6
  66. package/dist/lib/cjs/components/rename-delete-handler-component.d.cts +10 -10
  67. package/dist/lib/cjs/components/rmdir-guard-component.cjs +5 -5
  68. package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
  69. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +5 -5
  70. package/dist/lib/cjs/components/templates-language-component.cjs +5 -5
  71. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
  72. package/dist/lib/cjs/constructors/index.cjs +5 -5
  73. package/dist/lib/cjs/css-class.cjs +5 -5
  74. package/dist/lib/cjs/data-handler.cjs +6 -6
  75. package/dist/lib/cjs/data-handler.d.cts +2 -2
  76. package/dist/lib/cjs/data-stores/data-store-replica.cjs +5 -5
  77. package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
  78. package/dist/lib/cjs/data-stores/data-store-transport.cjs +5 -5
  79. package/dist/lib/cjs/data-stores/index.cjs +5 -5
  80. package/dist/lib/cjs/data-stores/local-data-store.cjs +5 -5
  81. package/dist/lib/cjs/data-stores/shared-data-store.cjs +6 -6
  82. package/dist/lib/cjs/dataview-link.cjs +5 -5
  83. package/dist/lib/cjs/dataview.cjs +12 -12
  84. package/dist/lib/cjs/dataview.d.cts +6 -6
  85. package/dist/lib/cjs/debug.cjs +5 -5
  86. package/dist/lib/cjs/demo-vault-helper-settings.cjs +5 -5
  87. package/dist/lib/cjs/demo-vault-helper.cjs +5 -5
  88. package/dist/lib/cjs/demo-vault-naming.cjs +5 -5
  89. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +5 -5
  90. package/dist/lib/cjs/desktop-trusted-input.cjs +6 -6
  91. package/dist/lib/cjs/desktop-trusted-input.d.cts +1 -1
  92. package/dist/lib/cjs/editor-extension-registrar.cjs +6 -6
  93. package/dist/lib/cjs/editor-extension-registrar.d.cts +1 -1
  94. package/dist/lib/cjs/editor-suggest-registrar.cjs +6 -6
  95. package/dist/lib/cjs/editor-suggest-registrar.d.cts +1 -1
  96. package/dist/lib/cjs/editor.cjs +5 -5
  97. package/dist/lib/cjs/events.cjs +5 -5
  98. package/dist/lib/cjs/extensions-registrar.cjs +6 -6
  99. package/dist/lib/cjs/extensions-registrar.d.cts +1 -1
  100. package/dist/lib/cjs/file-change.cjs +6 -6
  101. package/dist/lib/cjs/file-change.d.cts +3 -3
  102. package/dist/lib/cjs/file-explorer.cjs +5 -5
  103. package/dist/lib/cjs/file-manager.cjs +5 -5
  104. package/dist/lib/cjs/file-system.cjs +5 -5
  105. package/dist/lib/cjs/folder-note.cjs +6 -6
  106. package/dist/lib/cjs/folder-note.d.cts +1 -1
  107. package/dist/lib/cjs/frontmatter-formatting.cjs +5 -5
  108. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +6 -6
  109. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.d.cts +2 -2
  110. package/dist/lib/cjs/frontmatter.cjs +6 -6
  111. package/dist/lib/cjs/frontmatter.d.cts +7 -7
  112. package/dist/lib/cjs/generated-during-build.cjs +7 -7
  113. package/dist/lib/cjs/hover-link-source-registrar.cjs +6 -6
  114. package/dist/lib/cjs/hover-link-source-registrar.d.cts +1 -1
  115. package/dist/lib/cjs/html-element.cjs +5 -5
  116. package/dist/lib/cjs/i18n/custom-type-options.cjs +6 -6
  117. package/dist/lib/cjs/i18n/custom-type-options.d.cts +4 -4
  118. package/dist/lib/cjs/i18n/default-translations.cjs +5 -5
  119. package/dist/lib/cjs/i18n/i18n.cjs +5 -5
  120. package/dist/lib/cjs/i18n/index.cjs +5 -5
  121. package/dist/lib/cjs/i18n/locales/en.cjs +5 -5
  122. package/dist/lib/cjs/i18n/locales/index.cjs +5 -5
  123. package/dist/lib/cjs/i18n/locales/translations-map.cjs +5 -5
  124. package/dist/lib/cjs/index.cjs +5 -5
  125. package/dist/lib/cjs/is-in-obsidian.cjs +5 -5
  126. package/dist/lib/cjs/library-styles.cjs +5 -5
  127. package/dist/lib/cjs/library.cjs +5 -5
  128. package/dist/lib/cjs/link-name.cjs +5 -5
  129. package/dist/lib/cjs/link-update-progress.cjs +5 -5
  130. package/dist/lib/cjs/link.cjs +7 -7
  131. package/dist/lib/cjs/link.d.cts +2 -2
  132. package/dist/lib/cjs/logger.cjs +5 -5
  133. package/dist/lib/cjs/loop.cjs +5 -5
  134. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +6 -6
  135. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +1 -1
  136. package/dist/lib/cjs/markdown-code-block-processor.cjs +5 -5
  137. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +6 -6
  138. package/dist/lib/cjs/markdown-post-processor-registrar.d.cts +1 -1
  139. package/dist/lib/cjs/markdown-view.cjs +5 -5
  140. package/dist/lib/cjs/markdown.cjs +5 -5
  141. package/dist/lib/cjs/menu-event-registrar.cjs +6 -6
  142. package/dist/lib/cjs/menu-event-registrar.d.cts +4 -4
  143. package/dist/lib/cjs/metadata-cache.cjs +6 -6
  144. package/dist/lib/cjs/mobile-trusted-input.cjs +6 -6
  145. package/dist/lib/cjs/modals/alert.cjs +5 -5
  146. package/dist/lib/cjs/modals/confirm.cjs +5 -5
  147. package/dist/lib/cjs/modals/index.cjs +5 -5
  148. package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
  149. package/dist/lib/cjs/modals/modal-command-builder.cjs +6 -6
  150. package/dist/lib/cjs/modals/modal-command-builder.d.cts +12 -12
  151. package/dist/lib/cjs/modals/modal.cjs +5 -5
  152. package/dist/lib/cjs/modals/prompt.cjs +14 -14
  153. package/dist/lib/cjs/modals/select-item.cjs +5 -5
  154. package/dist/lib/cjs/modals/select-option.cjs +5 -5
  155. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +5 -5
  156. package/dist/lib/cjs/note-priority.cjs +5 -5
  157. package/dist/lib/cjs/notebook-navigator.cjs +6 -6
  158. package/dist/lib/cjs/notebook-navigator.d.cts +3 -3
  159. package/dist/lib/cjs/obsidian-lib-state.cjs +6 -6
  160. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +6 -6
  161. package/dist/lib/cjs/obsidian-protocol-handler-registrar.d.cts +1 -1
  162. package/dist/lib/cjs/obsidian-settings.cjs +5 -5
  163. package/dist/lib/cjs/obsidian-word-characters.cjs +6 -6
  164. package/dist/lib/cjs/parse-link.cjs +6 -6
  165. package/dist/lib/cjs/parse-link.d.cts +2 -2
  166. package/dist/lib/cjs/path-settings.cjs +6 -6
  167. package/dist/lib/cjs/pdf.cjs +5 -5
  168. package/dist/lib/cjs/plugin/index.cjs +5 -5
  169. package/dist/lib/cjs/plugin/plugin-api.cjs +6 -6
  170. package/dist/lib/cjs/plugin/plugin-api.d.cts +2 -2
  171. package/dist/lib/cjs/plugin/plugin-context.cjs +6 -6
  172. package/dist/lib/cjs/plugin/plugin-event-source.cjs +6 -6
  173. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +1 -1
  174. package/dist/lib/cjs/plugin/plugin-install-state.cjs +5 -5
  175. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +5 -5
  176. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +6 -6
  177. package/dist/lib/cjs/plugin/plugin-settings-tab.d.cts +3 -3
  178. package/dist/lib/cjs/plugin/plugin.cjs +6 -6
  179. package/dist/lib/cjs/plugin/settings-migration-api.cjs +6 -6
  180. package/dist/lib/cjs/plugin/settings-migration-api.d.cts +1 -1
  181. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +6 -6
  182. package/dist/lib/cjs/plugin-cli-handler-registrar.d.cts +1 -1
  183. package/dist/lib/cjs/popovers/field-popover.cjs +5 -5
  184. package/dist/lib/cjs/popovers/index.cjs +5 -5
  185. package/dist/lib/cjs/popovers/popover-anchor.cjs +5 -5
  186. package/dist/lib/cjs/popovers/popover.cjs +5 -5
  187. package/dist/lib/cjs/property-entry.cjs +5 -5
  188. package/dist/lib/cjs/queue.cjs +6 -6
  189. package/dist/lib/cjs/react/app-context.cjs +5 -5
  190. package/dist/lib/cjs/react/index.cjs +5 -5
  191. package/dist/lib/cjs/reference.cjs +6 -6
  192. package/dist/lib/cjs/reference.d.cts +6 -6
  193. package/dist/lib/cjs/resource-lock.cjs +6 -6
  194. package/dist/lib/cjs/resource-url.cjs +5 -5
  195. package/dist/lib/cjs/ribbon-icon-registrar.cjs +6 -6
  196. package/dist/lib/cjs/ribbon-icon-registrar.d.cts +1 -1
  197. package/dist/lib/cjs/setting-components/checkbox-component.cjs +5 -5
  198. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +5 -5
  199. package/dist/lib/cjs/setting-components/date-component.cjs +5 -5
  200. package/dist/lib/cjs/setting-components/date-time-component.cjs +5 -5
  201. package/dist/lib/cjs/setting-components/email-component.cjs +5 -5
  202. package/dist/lib/cjs/setting-components/file-component.cjs +5 -5
  203. package/dist/lib/cjs/setting-components/index.cjs +5 -5
  204. package/dist/lib/cjs/setting-components/month-component.cjs +6 -6
  205. package/dist/lib/cjs/setting-components/month-component.d.cts +2 -2
  206. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +5 -5
  207. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +5 -5
  208. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +5 -5
  209. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +5 -5
  210. package/dist/lib/cjs/setting-components/number-component.cjs +5 -5
  211. package/dist/lib/cjs/setting-components/password-component.cjs +5 -5
  212. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +5 -5
  213. package/dist/lib/cjs/setting-components/telephone-component.cjs +5 -5
  214. package/dist/lib/cjs/setting-components/text-based-component.cjs +6 -6
  215. package/dist/lib/cjs/setting-components/text-based-component.d.cts +3 -3
  216. package/dist/lib/cjs/setting-components/time-component.cjs +5 -5
  217. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +5 -5
  218. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +5 -5
  219. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +5 -5
  220. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +5 -5
  221. package/dist/lib/cjs/setting-components/typed-text-component.cjs +5 -5
  222. package/dist/lib/cjs/setting-components/url-component.cjs +5 -5
  223. package/dist/lib/cjs/setting-components/validator-component.cjs +5 -5
  224. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +6 -6
  225. package/dist/lib/cjs/setting-components/week-component.cjs +6 -6
  226. package/dist/lib/cjs/setting-components/week-component.d.cts +2 -2
  227. package/dist/lib/cjs/setting-ex.cjs +5 -5
  228. package/dist/lib/cjs/setting-group-ex.cjs +5 -5
  229. package/dist/lib/cjs/status-bar-item-registrar.cjs +6 -6
  230. package/dist/lib/cjs/status-bar-item-registrar.d.cts +1 -1
  231. package/dist/lib/cjs/templater.cjs +6 -6
  232. package/dist/lib/cjs/templater.d.cts +9 -9
  233. package/dist/lib/cjs/transformers/duration-transformer.cjs +5 -5
  234. package/dist/lib/cjs/transformers/index.cjs +5 -5
  235. package/dist/lib/cjs/trusted-input.cjs +5 -5
  236. package/dist/lib/cjs/validation.cjs +6 -6
  237. package/dist/lib/cjs/validation.d.cts +1 -1
  238. package/dist/lib/cjs/vault-delete.cjs +5 -5
  239. package/dist/lib/cjs/vault-transaction.cjs +6 -6
  240. package/dist/lib/cjs/vault.cjs +5 -5
  241. package/dist/lib/cjs/view-registrar.cjs +6 -6
  242. package/dist/lib/cjs/view-registrar.d.cts +1 -1
  243. package/dist/lib/cjs/workspace.cjs +5 -5
  244. package/dist/lib/esm/active-file-provider.d.mts +1 -1
  245. package/dist/lib/esm/active-file-provider.mjs +1 -1
  246. package/dist/lib/esm/attachment-path.mjs +1 -1
  247. package/dist/lib/esm/backlink-index.d.mts +1 -1
  248. package/dist/lib/esm/backlink-index.mjs +8 -14
  249. package/dist/lib/esm/bases-view-registrar.d.mts +1 -1
  250. package/dist/lib/esm/bases-view-registrar.mjs +1 -1
  251. package/dist/lib/esm/code-block-markdown-information.d.mts +9 -9
  252. package/dist/lib/esm/codemirror/state-field-spec.d.mts +6 -6
  253. package/dist/lib/esm/command-registrar.d.mts +2 -2
  254. package/dist/lib/esm/command-registrar.mjs +1 -1
  255. package/dist/lib/esm/community-plugins.mjs +1 -1
  256. package/dist/lib/esm/components/file-explorer-root-menu-component.mjs +8 -11
  257. package/dist/lib/esm/components/plugin-notice-component.d.mts +3 -3
  258. package/dist/lib/esm/components/plugin-notice-component.mjs +1 -1
  259. package/dist/lib/esm/components/plugin-settings-component.d.mts +5 -5
  260. package/dist/lib/esm/components/plugin-settings-component.mjs +1 -1
  261. package/dist/lib/esm/components/rename-delete-handler-component.d.mts +10 -10
  262. package/dist/lib/esm/components/rename-delete-handler-component.mjs +1 -1
  263. package/dist/lib/esm/data-handler.d.mts +2 -2
  264. package/dist/lib/esm/data-handler.mjs +1 -1
  265. package/dist/lib/esm/data-stores/data-store-seeds.mjs +1 -1
  266. package/dist/lib/esm/data-stores/shared-data-store.mjs +1 -1
  267. package/dist/lib/esm/dataview.d.mts +6 -6
  268. package/dist/lib/esm/dataview.mjs +7 -7
  269. package/dist/lib/esm/desktop-trusted-input.d.mts +1 -1
  270. package/dist/lib/esm/desktop-trusted-input.mjs +1 -1
  271. package/dist/lib/esm/editor-extension-registrar.d.mts +1 -1
  272. package/dist/lib/esm/editor-extension-registrar.mjs +1 -1
  273. package/dist/lib/esm/editor-suggest-registrar.d.mts +1 -1
  274. package/dist/lib/esm/editor-suggest-registrar.mjs +1 -1
  275. package/dist/lib/esm/extensions-registrar.d.mts +1 -1
  276. package/dist/lib/esm/extensions-registrar.mjs +1 -1
  277. package/dist/lib/esm/file-change.d.mts +3 -3
  278. package/dist/lib/esm/file-change.mjs +1 -1
  279. package/dist/lib/esm/folder-note.d.mts +1 -1
  280. package/dist/lib/esm/folder-note.mjs +1 -1
  281. package/dist/lib/esm/frontmatter-link-cache-with-offsets.d.mts +2 -2
  282. package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +1 -1
  283. package/dist/lib/esm/frontmatter.d.mts +7 -7
  284. package/dist/lib/esm/frontmatter.mjs +1 -1
  285. package/dist/lib/esm/generated-during-build.mjs +2 -2
  286. package/dist/lib/esm/hover-link-source-registrar.d.mts +1 -1
  287. package/dist/lib/esm/hover-link-source-registrar.mjs +1 -1
  288. package/dist/lib/esm/i18n/custom-type-options.d.mts +4 -4
  289. package/dist/lib/esm/i18n/custom-type-options.mjs +1 -1
  290. package/dist/lib/esm/link.d.mts +2 -2
  291. package/dist/lib/esm/link.mjs +2 -2
  292. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +1 -1
  293. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +1 -1
  294. package/dist/lib/esm/markdown-post-processor-registrar.d.mts +1 -1
  295. package/dist/lib/esm/markdown-post-processor-registrar.mjs +1 -1
  296. package/dist/lib/esm/menu-event-registrar.d.mts +4 -4
  297. package/dist/lib/esm/metadata-cache.mjs +1 -1
  298. package/dist/lib/esm/mobile-trusted-input.mjs +1 -1
  299. package/dist/lib/esm/modals/minimizable-modal.mjs +1 -1
  300. package/dist/lib/esm/modals/modal-command-builder.d.mts +12 -12
  301. package/dist/lib/esm/modals/modal-command-builder.mjs +1 -1
  302. package/dist/lib/esm/modals/prompt.mjs +9 -9
  303. package/dist/lib/esm/notebook-navigator.d.mts +3 -3
  304. package/dist/lib/esm/notebook-navigator.mjs +1 -1
  305. package/dist/lib/esm/obsidian-lib-state.mjs +1 -1
  306. package/dist/lib/esm/obsidian-protocol-handler-registrar.d.mts +1 -1
  307. package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +1 -1
  308. package/dist/lib/esm/obsidian-word-characters.mjs +1 -1
  309. package/dist/lib/esm/parse-link.d.mts +2 -2
  310. package/dist/lib/esm/parse-link.mjs +1 -1
  311. package/dist/lib/esm/path-settings.mjs +1 -1
  312. package/dist/lib/esm/plugin/plugin-api.d.mts +2 -2
  313. package/dist/lib/esm/plugin/plugin-api.mjs +1 -1
  314. package/dist/lib/esm/plugin/plugin-context.mjs +1 -1
  315. package/dist/lib/esm/plugin/plugin-event-source.d.mts +1 -1
  316. package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
  317. package/dist/lib/esm/plugin/plugin-settings-tab.d.mts +3 -3
  318. package/dist/lib/esm/plugin/plugin-settings-tab.mjs +1 -1
  319. package/dist/lib/esm/plugin/plugin.mjs +1 -1
  320. package/dist/lib/esm/plugin/settings-migration-api.d.mts +1 -1
  321. package/dist/lib/esm/plugin/settings-migration-api.mjs +1 -1
  322. package/dist/lib/esm/plugin-cli-handler-registrar.d.mts +1 -1
  323. package/dist/lib/esm/plugin-cli-handler-registrar.mjs +1 -1
  324. package/dist/lib/esm/queue.mjs +1 -1
  325. package/dist/lib/esm/reference.d.mts +6 -6
  326. package/dist/lib/esm/reference.mjs +1 -1
  327. package/dist/lib/esm/resource-lock.mjs +1 -1
  328. package/dist/lib/esm/ribbon-icon-registrar.d.mts +1 -1
  329. package/dist/lib/esm/ribbon-icon-registrar.mjs +1 -1
  330. package/dist/lib/esm/setting-components/month-component.d.mts +2 -2
  331. package/dist/lib/esm/setting-components/month-component.mjs +1 -1
  332. package/dist/lib/esm/setting-components/text-based-component.d.mts +3 -3
  333. package/dist/lib/esm/setting-components/text-based-component.mjs +1 -1
  334. package/dist/lib/esm/setting-components/week-component.d.mts +2 -2
  335. package/dist/lib/esm/setting-components/week-component.mjs +1 -1
  336. package/dist/lib/esm/status-bar-item-registrar.d.mts +1 -1
  337. package/dist/lib/esm/status-bar-item-registrar.mjs +1 -1
  338. package/dist/lib/esm/templater.d.mts +9 -9
  339. package/dist/lib/esm/templater.mjs +1 -1
  340. package/dist/lib/esm/validation.d.mts +1 -1
  341. package/dist/lib/esm/validation.mjs +1 -1
  342. package/dist/lib/esm/vault-transaction.mjs +1 -1
  343. package/dist/lib/esm/view-registrar.d.mts +1 -1
  344. package/dist/lib/esm/view-registrar.mjs +1 -1
  345. package/dist/styles.css +2 -2
  346. package/package.json +6 -3
@@ -168,4 +168,4 @@ export {
168
168
  resolveFolderNote,
169
169
  resolveFolderNoteConfig
170
170
  };
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb2xkZXItbm90ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGZvbGRlci1ub3RlIGNvbmNlcHQ6IHdoaWNoIG5vdGUsIGlmIGFueSwgaXMgdGhlIG9uZSB3aG9zZSBwcm9wZXJ0aWVzIGRlc2NyaWJlIGEgRk9MREVSIGl0c2VsZi5cbiAqXG4gKiBPYnNpZGlhbiBoYXMgbm8gc3VjaCBjb25jZXB0IOKAlCBpdCBpcyBhIGNvbnZlbnRpb24gdGhlIGNvbW11bml0eSBzZXR0bGVkIG9uLCBhbmQgdGhlIHBsdWdpbiB0aGF0IG93bnMgaXRcbiAqIGZvciBtb3N0IHZhdWx0cyBpcyBbYGZvbGRlci1ub3Rlc2BdKGh0dHBzOi8vY29tbXVuaXR5Lm9ic2lkaWFuLm1kL3BsdWdpbnMvZm9sZGVyLW5vdGVzKS4gU28gdGhlIGFuc3dlciB0b1xuICogXCJ3aGljaCBub3RlIGJlbG9uZ3MgdG8gdGhpcyBmb2xkZXJcIiBpcyB0aGF0IHBsdWdpbidzIHRvIGdpdmUgd2hlbmV2ZXIgaXQgaXMgaW5zdGFsbGVkLCBhbmQgdGhpcyBtb2R1bGVcbiAqIGFza3MgaXQgcmF0aGVyIHRoYW4gaW52ZW50aW5nIGEgc2Vjb25kIGFuc3dlcjoge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfSDigJQgdGhlIGRlZmF1bHQg4oCUIHJlYWRzIGl0c1xuICogbGl2ZSBjb25maWd1cmF0aW9uIGF0IGV2ZXJ5IHVzZS5cbiAqXG4gKiBSZWFkaW5nIGl0IGxpdmUgcmF0aGVyIHRoYW4gY29weWluZyBpdHMgdmFsdWVzIGludG8gYSBjb25zdW1lcidzIG93biBzZXR0aW5ncyBpcyBkZWxpYmVyYXRlOiBhIGNvcHkgZ29lc1xuICogc3RhbGUgdGhlIG1vbWVudCB0aGF0IHBsdWdpbiBpcyByZWNvbmZpZ3VyZWQsIGFuZCBpdCB3b3VsZCBuZWVkIGEgc2V0dGluZ3MgbWlncmF0aW9uIHRvIHNlZWQuIEV2ZXJ5dGhpbmdcbiAqIGVsc2UgaXMgdGhlIGNhbGxlcidzIGV4cGxpY2l0IGNob2ljZSwgYW5kIHRoZW4gdGhlIG90aGVyIHBsdWdpbiBpcyBub3QgY29uc3VsdGVkIGF0IGFsbC5cbiAqXG4gKiBOb3RoaW5nIGhlcmUgZXZlciBDUkVBVEVTIGEgbm90ZS4gQSBmb2xkZXIgd2l0aCBubyBmb2xkZXIgbm90ZSBhbnN3ZXJzIGBudWxsYCwgd2hpY2ggaXMgd2hhdCBsZXRzIGFcbiAqIGNhbGxlciBsYXllciBmb2xkZXItbm90ZSBiZWhhdmlvciBvbnRvIGEgY2xpY2sgd2l0aG91dCByaXNraW5nIGEgZmlsZSBhcHBlYXJpbmcgb24gdGhlIHVzZXIncyBkaXNrLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBURmlsZSxcbiAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgeyBub3JtYWxpemVQYXRoIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBpc0ZvbGRlcixcbiAgTUFSS0RPV05fRklMRV9FWFRFTlNJT05cbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbi8qKlxuICogV2hlcmUgYSBmb2xkZXIncyBmb2xkZXIgbm90ZSBsaXZlcy5cbiAqXG4gKiBUaGUgdGhyZWUgY29uY3JldGUgbWVtYmVycyBhcmUgdGhlIHNoYXBlcyB0aGUgZm9sZGVyLW5vdGUgZWNvc3lzdGVtIGFjdHVhbGx5IHVzZXM6XG4gKiBgY2hhcmxpZS9jaGFybGllLm1kYCBhbmQgYGNoYXJsaWUvaW5kZXgubWRgIGFyZSBib3RoIHtAbGluayBGb2xkZXJOb3RlTG9jYXRpb24uSW5zaWRlRm9sZGVyfSAodGhleVxuICogZGlmZmVyIG9ubHkgaW4gdGhlIE5BTUUsIHdoaWNoIGlzIHdoeSBuYW1pbmcgaXMgYSBjYWxsYmFjayBhbmQgbm90IGEgZm91cnRoIG1lbWJlciksIHdoaWxlXG4gKiBgY2hhcmxpZS5tZGAgYmVzaWRlIHRoZSBmb2xkZXIgaXMge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5QYXJlbnRGb2xkZXJ9IOKAlCB3aG9zZSB3aG9sZSBwb2ludCBpcyB0aGF0XG4gKiBgW1thbHBoYS9icmF2by9jaGFybGllXV1gIGxpbmtzIHRvIGEgZm9sZGVyIHdpdGggbm8gc3BlY2lhbCBzeW50YXguXG4gKi9cbmV4cG9ydCBlbnVtIEZvbGRlck5vdGVMb2NhdGlvbiB7XG4gIC8qKlxuICAgKiBUYWtlIHRoZSBhbnN3ZXIgZnJvbSB0aGUgaW5zdGFsbGVkIGBmb2xkZXItbm90ZXNgIHBsdWdpbiwgZmFsbGluZyBiYWNrIHRvIGEgbm90ZSBuYW1lZCBhZnRlciBpdHNcbiAgICogZm9sZGVyLCBpbnNpZGUgaXQuIFRoZSBkZWZhdWx0LCBhbmQgcmVzb2x2ZWQgTElWRSByYXRoZXIgdGhhbiBjb3BpZWQuXG4gICAqL1xuICBBdXRvID0gJ0F1dG8nLFxuXG4gIC8qKlxuICAgKiBgYWxwaGEvYnJhdm8vY2hhcmxpZS88bmFtZT4ubWRgLlxuICAgKi9cbiAgSW5zaWRlRm9sZGVyID0gJ0luc2lkZUZvbGRlcicsXG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBoYXMgbm8gZm9sZGVyIG5vdGVzIGF0IGFsbCwgc28gZXZlcnkgZm9sZGVyIGFuc3dlcnMgYG51bGxgLiBUaGlzIGlzIGFsc28gaG93IGEgY2FsbGVyIG9wdHNcbiAgICogb3V0IG9mIGZvbGRlci1ub3RlIGJlaGF2aW9yIGVudGlyZWx5LlxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogYGFscGhhL2JyYXZvLzxuYW1lPi5tZGAsIGJlc2lkZSB0aGUgZm9sZGVyLlxuICAgKi9cbiAgUGFyZW50Rm9sZGVyID0gJ1BhcmVudEZvbGRlcidcbn1cblxuLyoqXG4gKiBBIGZvbGRlci1ub3RlIHNldHVwIHdpdGgge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfSBhbHJlYWR5IHJlc29sdmVkIHRvIGEgY29uY3JldGUgYW5zd2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvbGRlck5vdGVDb25maWcge1xuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbnMgYSBmb2xkZXIgbm90ZSBtYXkgY2FycnksIFdJVEhPVVQgdGhlIGxlYWRpbmcgZG90LCBpbiByZXNvbHV0aW9uIG9yZGVyIOKAlCB0aGUgZmlyc3Qgb25lXG4gICAqIHRoYXQgbmFtZXMgYW4gZXhpc3RpbmcgZmlsZSB3aW5zLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZvbGRlciBub3RlIGlzIGhpZGRlbiBpbiB0aGUgZmlsZSBleHBsb3Jlci5cbiAgICpcbiAgICogUmVhZCByYXRoZXIgdGhhbiBhY3RlZCB1cG9uIGhlcmU6IGl0IGNoYW5nZXMgbm90aGluZyBhYm91dCBXSElDSCBmaWxlIGlzIHRoZSBmb2xkZXIgbm90ZSwgYnV0IGEgY2FsbGVyXG4gICAqIHRoYXQgcmV2ZWFscyB0aGUgbm90ZSBoYXMgdG8ga25vdyB0aGVyZSBpcyBub3RoaW5nIHRvIHJldmVhbCBhbmQgZmFsbCBiYWNrIHRvIHJldmVhbGluZyB0aGUgZm9sZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNIaWRkZW46IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRoZSBub3RlIHNpdHMgcmVsYXRpdmUgdG8gaXRzIGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uOiBGb2xkZXJOb3RlTG9jYXRpb24uSW5zaWRlRm9sZGVyIHwgRm9sZGVyTm90ZUxvY2F0aW9uLk5vbmUgfCBGb2xkZXJOb3RlTG9jYXRpb24uUGFyZW50Rm9sZGVyO1xuXG4gIC8qKlxuICAgKiBOYW1lcyB0aGUgZm9sZGVyIG5vdGUgb2YgYSBmb2xkZXIsIFdJVEhPVVQgaXRzIGV4dGVuc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlciAtIFRoZSBmb2xkZXIgd2hvc2Ugbm90ZSBpcyBiZWluZyBuYW1lZC5cbiAgICogQHJldHVybnMgVGhlIG5vdGUncyBuYW1lOyBhbiBlbXB0eSAob3IgYmxhbmspIG5hbWUgbWVhbnMgdGhlIGZvbGRlciBoYXMgbm8gZm9sZGVyIG5vdGUuXG4gICAqL1xuICAvLyBBIGZ1bmN0aW9uIHByb3BlcnR5IHJhdGhlciB0aGFuIGEgbWV0aG9kLCBiZWNhdXNlIGl0IGlzIGEgc3RhbmRhbG9uZSBjYWxsYmFjaywgbmV2ZXIgYSBtZXRob2Qgb2YgdGhlXG4gIC8vIGNvbmZpZyDigJQgd2hpY2ggaXMgYWxzbyB3aGF0IGxldHMgaXQgYmUgZGVzdHJ1Y3R1cmVkIGFuZCBoYW5kZWQgb24gd2l0aG91dCB0cmlwcGluZyBgdW5ib3VuZC1tZXRob2RgLlxuICByZXNvbHZlTmFtZTogKGZvbGRlcjogVEZvbGRlcikgPT4gc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRGb2xkZXJOb3RlRm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRGb2xkZXJOb3RlRm9sZGVyUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGFscmVhZHktcmVzb2x2ZWQgc2V0dXAgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgcmVzb2x2ZUZvbGRlck5vdGVDb25maWcoeyBhcHAgfSlgXG4gICAqL1xuICByZWFkb25seSBjb25maWc/OiBGb2xkZXJOb3RlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0aGF0IG1heSBiZSBhIGZvbGRlciBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogVEZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlRm9sZGVyTm90ZUNvbmZpZ1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBleHRlbnNpb25zIGEgZm9sZGVyIG5vdGUgbWF5IGNhcnJ5LCB3aXRoIG9yIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90LCBpbiByZXNvbHV0aW9uIG9yZGVyLiBJZ25vcmVkXG4gICAqIHVuZGVyIHtAbGluayBGb2xkZXJOb3RlTG9jYXRpb24uQXV0b30sIHdoaWNoIHRha2VzIHRoZSBpbnN0YWxsZWQgcGx1Z2luJ3MgYW5zd2VyIHdob2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgWydtZCddYFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9ucz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmb2xkZXIgbm90ZSBpcyBoaWRkZW4gaW4gdGhlIGZpbGUgZXhwbG9yZXIuIElnbm9yZWQgdW5kZXIge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNIaWRkZW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVyZSB0aGUgbm90ZSBzaXRzIHJlbGF0aXZlIHRvIGl0cyBmb2xkZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBGb2xkZXJOb3RlTG9jYXRpb24uQXV0b31cbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uPzogRm9sZGVyTm90ZUxvY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBOYW1lcyB0aGUgZm9sZGVyIG5vdGUgb2YgYSBmb2xkZXIsIFdJVEhPVVQgaXRzIGV4dGVuc2lvbi4gSWdub3JlZCB1bmRlclxuICAgKiB7QGxpbmsgRm9sZGVyTm90ZUxvY2F0aW9uLkF1dG99LCB3aGljaCBuYW1lcyB0aGUgbm90ZSB0aGUgd2F5IHRoZSBpbnN0YWxsZWQgcGx1Z2luIGRvZXMuXG4gICAqXG4gICAqIEEgY2FsbGJhY2sgcmF0aGVyIHRoYW4gYSBuYW1lIHRlbXBsYXRlLCBiZWNhdXNlIGEgdGVtcGxhdGUgbmVlZHMgYSB0b2tlbiB2b2NhYnVsYXJ5IGFuZCB0aGlzIGxpYnJhcnlcbiAgICogaGFzIG5vbmUgdG8gaW1wb3NlIOKAlCBhIGNhbGxlciB0aGF0IGhhcyBvbmUgKGB7e2ZvbGRlck5hbWV9fWAsIGB7e2ZvbGRlclBhdGh9fWAsIOKApikgcmVuZGVycyBpdCBoZXJlLlxuICAgKlxuICAgKiBAcGFyYW0gZm9sZGVyIC0gVGhlIGZvbGRlciB3aG9zZSBub3RlIGlzIGJlaW5nIG5hbWVkLlxuICAgKiBAcmV0dXJucyBUaGUgbm90ZSdzIG5hbWUuXG4gICAqIEBkZWZhdWx0IGAoZm9sZGVyKSA9PiBmb2xkZXIubmFtZWBcbiAgICovXG4gIC8vIFNlZSB7QGxpbmsgRm9sZGVyTm90ZUNvbmZpZy5yZXNvbHZlTmFtZX0gZm9yIHdoeSB0aGlzIGlzIGEgZnVuY3Rpb24gcHJvcGVydHkuXG4gIHJlYWRvbmx5IHJlc29sdmVOYW1lPzogKGZvbGRlcjogVEZvbGRlcikgPT4gc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlRm9sZGVyTm90ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUZvbGRlck5vdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxyZWFkeS1yZXNvbHZlZCBzZXR1cCB0byB1c2UuXG4gICAqXG4gICAqIE9taXR0ZWQgbWVhbnMge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfSDigJQgdGhlIHNldHVwIGlzIHJlc29sdmVkIG9uIHRoZSBzcG90LCB3aGljaCBpcyB3aGF0IG1ha2VzXG4gICAqIGByZXNvbHZlRm9sZGVyTm90ZSh7IGFwcCwgZm9sZGVyIH0pYCB0aGUgb25lLWxpbmVyIGV2ZXJ5IGNhbGxlciB3YW50cy4gUGFzcyBvbmUgd2hlbiB0aGUgc2FtZSBzZXR1cCBpc1xuICAgKiB1c2VkIG1vcmUgdGhhbiBvbmNlLCBvciB3aGVuIGl0cyB7QGxpbmsgRm9sZGVyTm90ZUNvbmZpZy5pc0hpZGRlbn0gaXMgbmVlZGVkIGFsb25nc2lkZSB0aGUgbm90ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnKHsgYXBwIH0pYFxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnPzogRm9sZGVyTm90ZUNvbmZpZztcblxuICAvKipcbiAgICogVGhlIGZvbGRlciB3aG9zZSBmb2xkZXIgbm90ZSBpcyB3YW50ZWQuIFJlYWQgQUZURVIgYW55IHJlbmFtZTogdGhlIG5vdGUgaXMgbmFtZWQgZnJvbSB0aGUgZm9sZGVyJ3NcbiAgICogQ1VSUkVOVCBuYW1lLCBhbmQgYSBgZm9sZGVyLW5vdGVzYCBpbnN0YWxsIHdpdGggYHN5bmNGb2xkZXJOYW1lYCBvbiB3aWxsIGhhdmUgcmVuYW1lZCBpdCBhbHJlYWR5LlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyOiBURm9sZGVyO1xufVxuXG4vKipcbiAqIFRoZSBgZm9sZGVyLW5vdGVzYCBwbHVnaW4ncyBpZCwgYXMgaXRzIG1hbmlmZXN0IGRlY2xhcmVzIGl0LlxuICovXG5leHBvcnQgY29uc3QgRk9MREVSX05PVEVTX1BMVUdJTl9JRCA9ICdmb2xkZXItbm90ZXMnO1xuXG4vKipcbiAqIFRoZSBvbmUgdG9rZW4gYGZvbGRlci1ub3Rlc2AnIG93biBuYW1lIHRlbXBsYXRlIHVuZGVyc3RhbmRzLiBFdmVyeSBvdGhlciBjaGFyYWN0ZXIgaW4gdGhhdCB0ZW1wbGF0ZSBpc1xuICogYSBsaXRlcmFsLCBzbyB0cmFuc2xhdGluZyB0aGlzIHRva2VuIGlzIHRoZSB3aG9sZSBvZiB0aGUgdHJhbnNsYXRpb24uXG4gKi9cbmNvbnN0IEZPTERFUl9OT1RFU19GT0xERVJfTkFNRV9UT0tFTl9SRUdfRVhQID0gL1xce1xce2ZvbGRlcl9uYW1lXFx9XFx9L2dpO1xuXG4vKipcbiAqIGBmb2xkZXItbm90ZXNgIG9mZmVycyBgRXhjYWxpZHJhd2AgZm9sZGVyIG5vdGVzLCB3aGljaCBhcmUgTWFya2Rvd24gZmlsZXMgd2l0aCBhbiBgRXhjYWxpZHJhd2AgcGF5bG9hZCDigJQgaXRzXG4gKiBvd24gcmVzb2x2ZXIgbm9ybWFsaXplcyB0aGUgdHlwZSB0aGUgc2FtZSB3YXkgYmVmb3JlIGxvb2tpbmcgdGhlIGZpbGUgdXAuXG4gKi9cbmNvbnN0IEVYQ0FMSURSQVdfRklMRV9FWFRFTlNJT04gPSAnZXhjYWxpZHJhdyc7XG5cbi8qKlxuICogV2hhdCB7QGxpbmsgRm9sZGVyTm90ZUxvY2F0aW9uLkF1dG99IGZhbGxzIGJhY2sgdG86IHRoZSBsYXlvdXQgZXZlcnkgZm9sZGVyLW5vdGUgcGx1Z2luIHN1cHBvcnRzLCBhbmRcbiAqIHRoZSBvbmUgYGZvbGRlci1ub3Rlc2AgaXRzZWxmIHNoaXBzIGFzIGl0cyBkZWZhdWx0LiBOb3RoaW5nIGhpZGVzIGEgbm90ZSB3aGVuIG5vIHBsdWdpbiBpcyB0aGVyZSB0byBoaWRlXG4gKiBpdCwgc28ge0BsaW5rIEZvbGRlck5vdGVDb25maWcuaXNIaWRkZW59IGlzIGBmYWxzZWAuXG4gKi9cbmNvbnN0IEZBTExCQUNLX0ZPTERFUl9OT1RFX0NPTkZJRzogRm9sZGVyTm90ZUNvbmZpZyA9IHtcbiAgZXh0ZW5zaW9uczogW01BUktET1dOX0ZJTEVfRVhURU5TSU9OXSxcbiAgaXNIaWRkZW46IGZhbHNlLFxuICBsb2NhdGlvbjogRm9sZGVyTm90ZUxvY2F0aW9uLkluc2lkZUZvbGRlcixcbiAgcmVzb2x2ZU5hbWU6IChmb2xkZXI6IFRGb2xkZXIpOiBzdHJpbmcgPT4gZm9sZGVyLm5hbWVcbn07XG5cbi8qKlxuICogRmluZHMgdGhlIGZvbGRlciBhIGZpbGUgaXMgdGhlIGZvbGRlciBub3RlIG9mIOKAlCB0aGUgaW52ZXJzZSBvZiB7QGxpbmsgcmVzb2x2ZUZvbGRlck5vdGV9LlxuICpcbiAqIFRoZSBhbnN3ZXIgaXMgY2hlY2tlZCB0aHJvdWdoIHtAbGluayByZXNvbHZlRm9sZGVyTm90ZX0gaXRzZWxmLCBzbyB0aGUgdHdvIGNhbiBuZXZlciBkaXNhZ3JlZTogYSBmaWxlIGlzXG4gKiBhIGZvbGRlcidzIG5vdGUgZXhhY3RseSB3aGVuIHJlc29sdmluZyB0aGF0IGZvbGRlcidzIG5vdGUgeWllbGRzIHRoaXMgdmVyeSBmaWxlLiBBIGZpbGUgdGhhdCBkb2VzIG5vdFxuICogZXhpc3QgaW4gdGhlIHZhdWx0IChvbmUgYnVpbHQgZm9yIGEgcGF0aCB3aXRoIG5vdGhpbmcgYXQgaXQpIGlzIG5ldmVyIGEgZm9sZGVyIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBmaWxlLCBhbmQgb3B0aW9uYWxseSB0aGUgc2V0dXAgdG8gcmVzb2x2ZSBpdCB3aXRoLlxuICogQHJldHVybnMgVGhlIGZvbGRlciwgb3IgYG51bGxgIHdoZW4gdGhlIGZpbGUgaXMgbm90IGEgZm9sZGVyIG5vdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXJOb3RlRm9sZGVyKHBhcmFtczogR2V0Rm9sZGVyTm90ZUZvbGRlclBhcmFtcyk6IG51bGwgfCBURm9sZGVyIHtcbiAgY29uc3QgeyBhcHAsIGZpbGUgfSA9IHBhcmFtcztcbiAgY29uc3QgY29uZmlnID0gcGFyYW1zLmNvbmZpZyA/PyByZXNvbHZlRm9sZGVyTm90ZUNvbmZpZyh7IGFwcCB9KTtcbiAgY29uc3QgcGFyZW50ID0gZmlsZS5wYXJlbnQ7XG4gIGlmICghcGFyZW50IHx8IGNvbmZpZy5sb2NhdGlvbiA9PT0gRm9sZGVyTm90ZUxvY2F0aW9uLk5vbmUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxldCBjYW5kaWRhdGVGb2xkZXJzOiBURm9sZGVyW107XG4gIGlmIChjb25maWcubG9jYXRpb24gPT09IEZvbGRlck5vdGVMb2NhdGlvbi5JbnNpZGVGb2xkZXIpIHtcbiAgICAvLyBUaGUgdmF1bHQgcm9vdCBoYXMgbm8gZm9sZGVyIG5vdGUgdW5kZXIgdGhpcyBsYXlvdXQsIHNpbmNlIG5vdGhpbmcgbmFtZXMgaXQuXG4gICAgY2FuZGlkYXRlRm9sZGVycyA9IHBhcmVudC5pc1Jvb3QoKSA/IFtdIDogW3BhcmVudF07XG4gIH0gZWxzZSB7XG4gICAgY2FuZGlkYXRlRm9sZGVycyA9IHBhcmVudC5jaGlsZHJlbi5maWx0ZXIoaXNGb2xkZXIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbmRpZGF0ZUZvbGRlcnMuZmluZCgoZm9sZGVyKSA9PiByZXNvbHZlRm9sZGVyTm90ZSh7IGFwcCwgY29uZmlnLCBmb2xkZXIgfSkgPT09IGZpbGUpID8/IG51bGw7XG59XG5cbi8qKlxuICogRmluZHMgYSBmb2xkZXIncyBmb2xkZXIgbm90ZSDigJQgdGhlIG9uZSBub3RlIHdob3NlIHByb3BlcnRpZXMgZGVzY3JpYmUgdGhlIGZvbGRlciBpdHNlbGYuXG4gKlxuICogKipOZXZlciBjcmVhdGVzLioqIEEgZm9sZGVyIHRoYXQgaGFzIG5vIGZvbGRlciBub3RlIGFuc3dlcnMgYG51bGxgLCBhbmQgc28gZG9lcyB0aGUgdmF1bHQgcm9vdCB1bmRlclxuICoge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5QYXJlbnRGb2xkZXJ9IChub3RoaW5nIGNhbiBzaXQgYmVzaWRlIGl0KS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGZvbGRlciwgYW5kIG9wdGlvbmFsbHkgdGhlIHNldHVwIHRvIHJlc29sdmUgaXQgd2l0aC5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgbm90ZSwgb3IgYG51bGxgIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVGb2xkZXJOb3RlKHBhcmFtczogUmVzb2x2ZUZvbGRlck5vdGVQYXJhbXMpOiBudWxsIHwgVEZpbGUge1xuICBjb25zdCB7IGFwcCwgZm9sZGVyIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGNvbmZpZyA9IHBhcmFtcy5jb25maWcgPz8gcmVzb2x2ZUZvbGRlck5vdGVDb25maWcoeyBhcHAgfSk7XG4gIGlmIChjb25maWcubG9jYXRpb24gPT09IEZvbGRlck5vdGVMb2NhdGlvbi5Ob25lKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBwYXJlbnRGb2xkZXJQYXRoID0gY29uZmlnLmxvY2F0aW9uID09PSBGb2xkZXJOb3RlTG9jYXRpb24uUGFyZW50Rm9sZGVyID8gZm9sZGVyLnBhcmVudD8ucGF0aCA6IGZvbGRlci5wYXRoO1xuICBpZiAocGFyZW50Rm9sZGVyUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBub3RlTmFtZSA9IGNvbmZpZy5yZXNvbHZlTmFtZShmb2xkZXIpLnRyaW0oKTtcbiAgaWYgKCFub3RlTmFtZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9yIChjb25zdCBleHRlbnNpb24gb2YgY29uZmlnLmV4dGVuc2lvbnMpIHtcbiAgICBjb25zdCBmaWxlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgobm9ybWFsaXplUGF0aChqb2luKHBhcmVudEZvbGRlclBhdGgsIGAke25vdGVOYW1lfS4ke2V4dGVuc2lvbn1gKSkpO1xuICAgIGlmIChmaWxlKSB7XG4gICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB7QGxpbmsgRm9sZGVyTm90ZUxvY2F0aW9uLkF1dG99IGludG8gYSBjb25jcmV0ZSBmb2xkZXItbm90ZSBzZXR1cC5cbiAqXG4gKiBgZm9sZGVyLW5vdGVzYCcgYHZhdWx0Rm9sZGVyYCBzdG9yYWdlIChldmVyeSBmb2xkZXIgbm90ZSBwb29sZWQgaW4gb25lIGNlbnRyYWwgZm9sZGVyKSBoYXMgbm9cbiAqIGNvdW50ZXJwYXJ0IGhlcmUgYW5kIGZhbGxzIGJhY2sgcmF0aGVyIHRoYW4gZ3Vlc3Npbmc6IHdpdGggdGhlIG5vdGVzIHBvb2xlZCwgdGhlIG5vdGUgYmVsb25naW5nIHRvIGFcbiAqIGZvbGRlciBpcyBubyBsb25nZXIgZGVyaXZhYmxlIGZyb20gdGhhdCBmb2xkZXIncyBwYXRoIGFsb25lLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc2V0dXAsIGFuZCB0aGUgYXBwIHRvIHJlYWQgdGhlIGluc3RhbGxlZCBwbHVnaW4gZnJvbS5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBzZXR1cC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnKHBhcmFtczogUmVzb2x2ZUZvbGRlck5vdGVDb25maWdQYXJhbXMpOiBGb2xkZXJOb3RlQ29uZmlnIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBleHRlbnNpb25zLFxuICAgIGlzSGlkZGVuLFxuICAgIGxvY2F0aW9uLFxuICAgIHJlc29sdmVOYW1lXG4gIH0gPSBwYXJhbXM7XG5cbiAgcmV0dXJuIGxvY2F0aW9uICE9PSB1bmRlZmluZWQgJiYgbG9jYXRpb24gIT09IEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvXG4gICAgPyB7XG4gICAgICBleHRlbnNpb25zOiBub3JtYWxpemVFeHRlbnNpb25zKGV4dGVuc2lvbnMgPz8gW01BUktET1dOX0ZJTEVfRVhURU5TSU9OXSksXG4gICAgICBpc0hpZGRlbjogaXNIaWRkZW4gPz8gZmFsc2UsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIHJlc29sdmVOYW1lOiByZXNvbHZlTmFtZSA/PyBGQUxMQkFDS19GT0xERVJfTk9URV9DT05GSUcucmVzb2x2ZU5hbWVcbiAgICB9XG4gICAgOiByZWFkRm9sZGVyTm90ZXNQbHVnaW5Db25maWcoYXBwKSA/PyBGQUxMQkFDS19GT0xERVJfTk9URV9DT05GSUc7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBleHRlbnNpb25zIHRoZSB3YXkgYGZvbGRlci1ub3Rlc2AgZG9lcyBiZWZvcmUgaXQgbG9va3MgYSBmaWxlIHVwOiBubyBsZWFkaW5nIGRvdCwgbG93ZXItY2FzZSxcbiAqIGBFeGNhbGlkcmF3YCB0cmVhdGVkIGFzIE1hcmtkb3duLCBibGFua3MgZHJvcHBlZCwgZHVwbGljYXRlcyBjb2xsYXBzZWQgd2hpbGUga2VlcGluZyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSdzXG4gKiBwb3NpdGlvbi5cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9ucyAtIFRoZSBleHRlbnNpb25zIGFzIGNvbmZpZ3VyZWQuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBleHRlbnNpb25zLCBpbiByZXNvbHV0aW9uIG9yZGVyLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVFeHRlbnNpb25zKGV4dGVuc2lvbnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogcmVhZG9ubHkgc3RyaW5nW10ge1xuICBjb25zdCBub3JtYWxpemVkRXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnNcbiAgICAubWFwKChleHRlbnNpb24pID0+IGV4dGVuc2lvbi50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eXFwuLywgJycpKVxuICAgIC5tYXAoKGV4dGVuc2lvbikgPT4gZXh0ZW5zaW9uID09PSBFWENBTElEUkFXX0ZJTEVfRVhURU5TSU9OID8gTUFSS0RPV05fRklMRV9FWFRFTlNJT04gOiBleHRlbnNpb24pXG4gICAgLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KG5vcm1hbGl6ZWRFeHRlbnNpb25zKV07XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGluc3RhbGxlZCBgZm9sZGVyLW5vdGVzYCBwbHVnaW4ncyBvd24gY29uZmlndXJhdGlvbiwgaWYgaXQgaXMgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkIHRoZSB3YXlcbiAqIGl0IGRvY3VtZW50cy5cbiAqXG4gKiBFdmVyeSB2YWx1ZSBpcyByZWFkIGFzIGB1bmtub3duYCBhbmQgY2hlY2tlZCwgcmF0aGVyIHRoYW4gYXNzZXJ0ZWQgaW50byBhIHNoYXBlOiB0aGlzIGlzIGFub3RoZXJcbiAqIHBsdWdpbidzIHByaXZhdGUgc2V0dGluZ3Mgb2JqZWN0LCBzbyBhIHZlcnNpb24gdGhhdCByZW5hbWVzIG9yIGRyb3BzIGEga2V5IG11c3QgZGVncmFkZSB0byB0aGUgZmFsbGJhY2tcbiAqIGluc3RlYWQgb2YgdGhyb3dpbmcgaW5zaWRlIGEgY2xpY2sgaGFuZGxlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24sIG9yIGBudWxsYCB3aGVuIHRoZSBwbHVnaW4gaXMgYWJzZW50LCBub3QgY29uZmlndXJlZCwgb3Igc2V0IHRvIGEgc3RvcmFnZVxuICogbG9jYXRpb24gd2l0aCBubyBjb3VudGVycGFydCBoZXJlLlxuICovXG5mdW5jdGlvbiByZWFkRm9sZGVyTm90ZXNQbHVnaW5Db25maWcoYXBwOiBBcHApOiBGb2xkZXJOb3RlQ29uZmlnIHwgbnVsbCB7XG4gIGNvbnN0IGZvbGRlck5vdGVzUGx1Z2luID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKEZPTERFUl9OT1RFU19QTFVHSU5fSUQpO1xuICAvLyBOYXJyb3dlZCB3aXRoIGBpbmAgcmF0aGVyIHRoYW4gYXNzZXJ0ZWQgaW50byBhIHNoYXBlOiB0aGF0IGtlZXBzIGV2ZXJ5IHZhbHVlIGJlbG93IHR5cGVkIGB1bmtub3duYCxcbiAgLy8gd2hpY2ggaXMgZXhhY3RseSB3aGF0IGEgZm9yZWlnbiBwbHVnaW4ncyBwcml2YXRlIHNldHRpbmdzIGFyZS5cbiAgaWYgKCFmb2xkZXJOb3Rlc1BsdWdpbiB8fCAhKCdzZXR0aW5ncycgaW4gZm9sZGVyTm90ZXNQbHVnaW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmb2xkZXJOb3Rlc1NldHRpbmdzOiB1bmtub3duID0gZm9sZGVyTm90ZXNQbHVnaW4uc2V0dGluZ3M7XG4gIGlmICh0eXBlb2YgZm9sZGVyTm90ZXNTZXR0aW5ncyAhPT0gJ29iamVjdCcgfHwgZm9sZGVyTm90ZXNTZXR0aW5ncyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbG9jYXRpb24gPSB0b0ZvbGRlck5vdGVMb2NhdGlvbignc3RvcmFnZUxvY2F0aW9uJyBpbiBmb2xkZXJOb3Rlc1NldHRpbmdzID8gZm9sZGVyTm90ZXNTZXR0aW5ncy5zdG9yYWdlTG9jYXRpb24gOiBudWxsKTtcbiAgaWYgKCFsb2NhdGlvbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyTm90ZU5hbWUgPSAnZm9sZGVyTm90ZU5hbWUnIGluIGZvbGRlck5vdGVzU2V0dGluZ3MgPyBmb2xkZXJOb3Rlc1NldHRpbmdzLmZvbGRlck5vdGVOYW1lIDogbnVsbDtcbiAgaWYgKHR5cGVvZiBmb2xkZXJOb3RlTmFtZSAhPT0gJ3N0cmluZycgfHwgIWZvbGRlck5vdGVOYW1lKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmb2xkZXJOb3RlVHlwZSA9ICdmb2xkZXJOb3RlVHlwZScgaW4gZm9sZGVyTm90ZXNTZXR0aW5ncyA/IGZvbGRlck5vdGVzU2V0dGluZ3MuZm9sZGVyTm90ZVR5cGUgOiBudWxsO1xuICBjb25zdCBzdXBwb3J0ZWRGaWxlVHlwZXMgPSAnc3VwcG9ydGVkRmlsZVR5cGVzJyBpbiBmb2xkZXJOb3Rlc1NldHRpbmdzID8gZm9sZGVyTm90ZXNTZXR0aW5ncy5zdXBwb3J0ZWRGaWxlVHlwZXMgOiBudWxsO1xuICBjb25zdCBpc0hpZGRlbiA9ICdoaWRlRm9sZGVyTm90ZScgaW4gZm9sZGVyTm90ZXNTZXR0aW5ncyA/IGZvbGRlck5vdGVzU2V0dGluZ3MuaGlkZUZvbGRlck5vdGUgOiBudWxsO1xuXG4gIHJldHVybiB7XG4gICAgLy8gSXRzIG93biByZXNvbHZlciB0cmllcyB0aGUgcHJpbWFyeSB0eXBlIGZpcnN0IGFuZCBldmVyeSBvdGhlciBzdXBwb3J0ZWQgdHlwZSBhZnRlciBpdCwgd2hpY2ggaXMgdGhlXG4gICAgLy8gb3JkZXIgcmVwcm9kdWNlZCBoZXJlLiBBbiB1bnVzYWJsZSBwYWlyIGxlYXZlcyBNYXJrZG93biwgdGhlIGV4dGVuc2lvbiBpdCBjYW5ub3QgYmUgY29uZmlndXJlZFxuICAgIC8vIHdpdGhvdXQuXG4gICAgZXh0ZW5zaW9uczogbm9ybWFsaXplRXh0ZW5zaW9ucyhbXG4gICAgICB0eXBlb2YgZm9sZGVyTm90ZVR5cGUgPT09ICdzdHJpbmcnID8gZm9sZGVyTm90ZVR5cGUgOiBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTixcbiAgICAgIC4uLihBcnJheS5pc0FycmF5KHN1cHBvcnRlZEZpbGVUeXBlcykgPyBzdXBwb3J0ZWRGaWxlVHlwZXMuZmlsdGVyKCh0eXBlOiB1bmtub3duKSA9PiB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIDogW10pLFxuICAgICAgTUFSS0RPV05fRklMRV9FWFRFTlNJT05cbiAgICBdKSxcbiAgICBpc0hpZGRlbjogaXNIaWRkZW4gPT09IHRydWUsXG4gICAgbG9jYXRpb24sXG4gICAgcmVzb2x2ZU5hbWU6IChmb2xkZXI6IFRGb2xkZXIpOiBzdHJpbmcgPT5cbiAgICAgIHJlcGxhY2VBbGwoe1xuICAgICAgICAkc3RyaW5nOiBmb2xkZXJOb3RlTmFtZSxcbiAgICAgICAgLy8gQSBmdW5jdGlvbiByZXBsYWNlciwgc28gYSBmb2xkZXIgbmFtZSBjb250YWluaW5nIGAkJmAgaXMgaW5zZXJ0ZWQgbGl0ZXJhbGx5LlxuICAgICAgICByZXBsYWNlcjogKCkgPT4gZm9sZGVyLm5hbWUsXG4gICAgICAgIHNlYXJjaFZhbHVlOiBGT0xERVJfTk9URVNfRk9MREVSX05BTUVfVE9LRU5fUkVHX0VYUFxuICAgICAgfSlcbiAgfTtcbn1cblxuLyoqXG4gKiBNYXBzIGBmb2xkZXItbm90ZXNgJyBgc3RvcmFnZUxvY2F0aW9uYCBvbnRvIHRoaXMgbGlicmFyeSdzIG93biBsb2NhdGlvbi5cbiAqXG4gKiBAcGFyYW0gc3RvcmFnZUxvY2F0aW9uIC0gVGhlIHZhbHVlIHJlYWQgb3V0IG9mIHRoYXQgcGx1Z2luJ3Mgc2V0dGluZ3MuXG4gKiBAcmV0dXJucyBUaGUgbG9jYXRpb24sIG9yIGBudWxsYCBmb3IgYHZhdWx0Rm9sZGVyYCBhbmQgZm9yIGFueXRoaW5nIHRoYXQgaXMgbm90IG9uZSBvZiBpdHMgdmFsdWVzLlxuICovXG5mdW5jdGlvbiB0b0ZvbGRlck5vdGVMb2NhdGlvbihzdG9yYWdlTG9jYXRpb246IHVua25vd24pOiBGb2xkZXJOb3RlQ29uZmlnWydsb2NhdGlvbiddIHwgbnVsbCB7XG4gIHN3aXRjaCAoc3RvcmFnZUxvY2F0aW9uKSB7XG4gICAgY2FzZSAnaW5zaWRlRm9sZGVyJzoge1xuICAgICAgcmV0dXJuIEZvbGRlck5vdGVMb2NhdGlvbi5JbnNpZGVGb2xkZXI7XG4gICAgfVxuICAgIGNhc2UgJ3BhcmVudEZvbGRlcic6IHtcbiAgICAgIHJldHVybiBGb2xkZXJOb3RlTG9jYXRpb24uUGFyZW50Rm9sZGVyO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMscUJBQXFCO0FBRTlCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBV0EsSUFBSyxxQkFBTCxrQkFBS0Esd0JBQUw7QUFLTCxFQUFBQSxvQkFBQSxVQUFPO0FBS1AsRUFBQUEsb0JBQUEsa0JBQWU7QUFNZixFQUFBQSxvQkFBQSxVQUFPO0FBS1AsRUFBQUEsb0JBQUEsa0JBQWU7QUFyQkwsU0FBQUE7QUFBQSxHQUFBO0FBNEpMLE1BQU0seUJBQXlCO0FBTXRDLE1BQU0seUNBQXlDO0FBTS9DLE1BQU0sNEJBQTRCO0FBT2xDLE1BQU0sOEJBQWdEO0FBQUEsRUFDcEQsWUFBWSxDQUFDLHVCQUF1QjtBQUFBLEVBQ3BDLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLGFBQWEsQ0FBQyxXQUE0QixPQUFPO0FBQ25EO0FB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
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb2xkZXItbm90ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGZvbGRlci1ub3RlIGNvbmNlcHQ6IHdoaWNoIG5vdGUsIGlmIGFueSwgaXMgdGhlIG9uZSB3aG9zZSBwcm9wZXJ0aWVzIGRlc2NyaWJlIGEgRk9MREVSIGl0c2VsZi5cbiAqXG4gKiBPYnNpZGlhbiBoYXMgbm8gc3VjaCBjb25jZXB0IOKAlCBpdCBpcyBhIGNvbnZlbnRpb24gdGhlIGNvbW11bml0eSBzZXR0bGVkIG9uLCBhbmQgdGhlIHBsdWdpbiB0aGF0IG93bnMgaXRcbiAqIGZvciBtb3N0IHZhdWx0cyBpcyBbYGZvbGRlci1ub3Rlc2BdKGh0dHBzOi8vY29tbXVuaXR5Lm9ic2lkaWFuLm1kL3BsdWdpbnMvZm9sZGVyLW5vdGVzKS4gU28gdGhlIGFuc3dlciB0b1xuICogXCJ3aGljaCBub3RlIGJlbG9uZ3MgdG8gdGhpcyBmb2xkZXJcIiBpcyB0aGF0IHBsdWdpbidzIHRvIGdpdmUgd2hlbmV2ZXIgaXQgaXMgaW5zdGFsbGVkLCBhbmQgdGhpcyBtb2R1bGVcbiAqIGFza3MgaXQgcmF0aGVyIHRoYW4gaW52ZW50aW5nIGEgc2Vjb25kIGFuc3dlcjoge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfSDigJQgdGhlIGRlZmF1bHQg4oCUIHJlYWRzIGl0c1xuICogbGl2ZSBjb25maWd1cmF0aW9uIGF0IGV2ZXJ5IHVzZS5cbiAqXG4gKiBSZWFkaW5nIGl0IGxpdmUgcmF0aGVyIHRoYW4gY29weWluZyBpdHMgdmFsdWVzIGludG8gYSBjb25zdW1lcidzIG93biBzZXR0aW5ncyBpcyBkZWxpYmVyYXRlOiBhIGNvcHkgZ29lc1xuICogc3RhbGUgdGhlIG1vbWVudCB0aGF0IHBsdWdpbiBpcyByZWNvbmZpZ3VyZWQsIGFuZCBpdCB3b3VsZCBuZWVkIGEgc2V0dGluZ3MgbWlncmF0aW9uIHRvIHNlZWQuIEV2ZXJ5dGhpbmdcbiAqIGVsc2UgaXMgdGhlIGNhbGxlcidzIGV4cGxpY2l0IGNob2ljZSwgYW5kIHRoZW4gdGhlIG90aGVyIHBsdWdpbiBpcyBub3QgY29uc3VsdGVkIGF0IGFsbC5cbiAqXG4gKiBOb3RoaW5nIGhlcmUgZXZlciBDUkVBVEVTIGEgbm90ZS4gQSBmb2xkZXIgd2l0aCBubyBmb2xkZXIgbm90ZSBhbnN3ZXJzIGBudWxsYCwgd2hpY2ggaXMgd2hhdCBsZXRzIGFcbiAqIGNhbGxlciBsYXllciBmb2xkZXItbm90ZSBiZWhhdmlvciBvbnRvIGEgY2xpY2sgd2l0aG91dCByaXNraW5nIGEgZmlsZSBhcHBlYXJpbmcgb24gdGhlIHVzZXIncyBkaXNrLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBURmlsZSxcbiAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgeyBub3JtYWxpemVQYXRoIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBpc0ZvbGRlcixcbiAgTUFSS0RPV05fRklMRV9FWFRFTlNJT05cbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbi8qKlxuICogV2hlcmUgYSBmb2xkZXIncyBmb2xkZXIgbm90ZSBsaXZlcy5cbiAqXG4gKiBUaGUgdGhyZWUgY29uY3JldGUgbWVtYmVycyBhcmUgdGhlIHNoYXBlcyB0aGUgZm9sZGVyLW5vdGUgZWNvc3lzdGVtIGFjdHVhbGx5IHVzZXM6XG4gKiBgY2hhcmxpZS9jaGFybGllLm1kYCBhbmQgYGNoYXJsaWUvaW5kZXgubWRgIGFyZSBib3RoIHtAbGluayBGb2xkZXJOb3RlTG9jYXRpb24uSW5zaWRlRm9sZGVyfSAodGhleVxuICogZGlmZmVyIG9ubHkgaW4gdGhlIE5BTUUsIHdoaWNoIGlzIHdoeSBuYW1pbmcgaXMgYSBjYWxsYmFjayBhbmQgbm90IGEgZm91cnRoIG1lbWJlciksIHdoaWxlXG4gKiBgY2hhcmxpZS5tZGAgYmVzaWRlIHRoZSBmb2xkZXIgaXMge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5QYXJlbnRGb2xkZXJ9IOKAlCB3aG9zZSB3aG9sZSBwb2ludCBpcyB0aGF0XG4gKiBgW1thbHBoYS9icmF2by9jaGFybGllXV1gIGxpbmtzIHRvIGEgZm9sZGVyIHdpdGggbm8gc3BlY2lhbCBzeW50YXguXG4gKi9cbmV4cG9ydCBlbnVtIEZvbGRlck5vdGVMb2NhdGlvbiB7XG4gIC8qKlxuICAgKiBUYWtlIHRoZSBhbnN3ZXIgZnJvbSB0aGUgaW5zdGFsbGVkIGBmb2xkZXItbm90ZXNgIHBsdWdpbiwgZmFsbGluZyBiYWNrIHRvIGEgbm90ZSBuYW1lZCBhZnRlciBpdHNcbiAgICogZm9sZGVyLCBpbnNpZGUgaXQuIFRoZSBkZWZhdWx0LCBhbmQgcmVzb2x2ZWQgTElWRSByYXRoZXIgdGhhbiBjb3BpZWQuXG4gICAqL1xuICBBdXRvID0gJ0F1dG8nLFxuXG4gIC8qKlxuICAgKiBgYWxwaGEvYnJhdm8vY2hhcmxpZS88bmFtZT4ubWRgLlxuICAgKi9cbiAgSW5zaWRlRm9sZGVyID0gJ0luc2lkZUZvbGRlcicsXG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBoYXMgbm8gZm9sZGVyIG5vdGVzIGF0IGFsbCwgc28gZXZlcnkgZm9sZGVyIGFuc3dlcnMgYG51bGxgLiBUaGlzIGlzIGFsc28gaG93IGEgY2FsbGVyIG9wdHNcbiAgICogb3V0IG9mIGZvbGRlci1ub3RlIGJlaGF2aW9yIGVudGlyZWx5LlxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogYGFscGhhL2JyYXZvLzxuYW1lPi5tZGAsIGJlc2lkZSB0aGUgZm9sZGVyLlxuICAgKi9cbiAgUGFyZW50Rm9sZGVyID0gJ1BhcmVudEZvbGRlcidcbn1cblxuLyoqXG4gKiBBIGZvbGRlci1ub3RlIHNldHVwIHdpdGgge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfSBhbHJlYWR5IHJlc29sdmVkIHRvIGEgY29uY3JldGUgYW5zd2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvbGRlck5vdGVDb25maWcge1xuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbnMgYSBmb2xkZXIgbm90ZSBtYXkgY2FycnksIFdJVEhPVVQgdGhlIGxlYWRpbmcgZG90LCBpbiByZXNvbHV0aW9uIG9yZGVyIOKAlCB0aGUgZmlyc3Qgb25lXG4gICAqIHRoYXQgbmFtZXMgYW4gZXhpc3RpbmcgZmlsZSB3aW5zLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZvbGRlciBub3RlIGlzIGhpZGRlbiBpbiB0aGUgZmlsZSBleHBsb3Jlci5cbiAgICpcbiAgICogUmVhZCByYXRoZXIgdGhhbiBhY3RlZCB1cG9uIGhlcmU6IGl0IGNoYW5nZXMgbm90aGluZyBhYm91dCBXSElDSCBmaWxlIGlzIHRoZSBmb2xkZXIgbm90ZSwgYnV0IGEgY2FsbGVyXG4gICAqIHRoYXQgcmV2ZWFscyB0aGUgbm90ZSBoYXMgdG8ga25vdyB0aGVyZSBpcyBub3RoaW5nIHRvIHJldmVhbCBhbmQgZmFsbCBiYWNrIHRvIHJldmVhbGluZyB0aGUgZm9sZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNIaWRkZW46IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRoZSBub3RlIHNpdHMgcmVsYXRpdmUgdG8gaXRzIGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uOiBGb2xkZXJOb3RlTG9jYXRpb24uSW5zaWRlRm9sZGVyIHwgRm9sZGVyTm90ZUxvY2F0aW9uLk5vbmUgfCBGb2xkZXJOb3RlTG9jYXRpb24uUGFyZW50Rm9sZGVyO1xuXG4gIC8qKlxuICAgKiBOYW1lcyB0aGUgZm9sZGVyIG5vdGUgb2YgYSBmb2xkZXIsIFdJVEhPVVQgaXRzIGV4dGVuc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlciAtIFRoZSBmb2xkZXIgd2hvc2Ugbm90ZSBpcyBiZWluZyBuYW1lZC5cbiAgICogQHJldHVybnMgVGhlIG5vdGUncyBuYW1lOyBhbiBlbXB0eSAob3IgYmxhbmspIG5hbWUgbWVhbnMgdGhlIGZvbGRlciBoYXMgbm8gZm9sZGVyIG5vdGUuXG4gICAqL1xuICAvLyBBIGZ1bmN0aW9uIHByb3BlcnR5IHJhdGhlciB0aGFuIGEgbWV0aG9kLCBiZWNhdXNlIGl0IGlzIGEgc3RhbmRhbG9uZSBjYWxsYmFjaywgbmV2ZXIgYSBtZXRob2Qgb2YgdGhlXG4gIC8vIGNvbmZpZyDigJQgd2hpY2ggaXMgYWxzbyB3aGF0IGxldHMgaXQgYmUgZGVzdHJ1Y3R1cmVkIGFuZCBoYW5kZWQgb24gd2l0aG91dCB0cmlwcGluZyBgdW5ib3VuZC1tZXRob2RgLlxuICByZWFkb25seSByZXNvbHZlTmFtZTogKGZvbGRlcjogVEZvbGRlcikgPT4gc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRGb2xkZXJOb3RlRm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRGb2xkZXJOb3RlRm9sZGVyUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGFscmVhZHktcmVzb2x2ZWQgc2V0dXAgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgcmVzb2x2ZUZvbGRlck5vdGVDb25maWcoeyBhcHAgfSlgXG4gICAqL1xuICByZWFkb25seSBjb25maWc/OiBGb2xkZXJOb3RlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0aGF0IG1heSBiZSBhIGZvbGRlciBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogVEZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlRm9sZGVyTm90ZUNvbmZpZ1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBleHRlbnNpb25zIGEgZm9sZGVyIG5vdGUgbWF5IGNhcnJ5LCB3aXRoIG9yIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90LCBpbiByZXNvbHV0aW9uIG9yZGVyLiBJZ25vcmVkXG4gICAqIHVuZGVyIHtAbGluayBGb2xkZXJOb3RlTG9jYXRpb24uQXV0b30sIHdoaWNoIHRha2VzIHRoZSBpbnN0YWxsZWQgcGx1Z2luJ3MgYW5zd2VyIHdob2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgWydtZCddYFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9ucz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmb2xkZXIgbm90ZSBpcyBoaWRkZW4gaW4gdGhlIGZpbGUgZXhwbG9yZXIuIElnbm9yZWQgdW5kZXIge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNIaWRkZW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVyZSB0aGUgbm90ZSBzaXRzIHJlbGF0aXZlIHRvIGl0cyBmb2xkZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBGb2xkZXJOb3RlTG9jYXRpb24uQXV0b31cbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uPzogRm9sZGVyTm90ZUxvY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBOYW1lcyB0aGUgZm9sZGVyIG5vdGUgb2YgYSBmb2xkZXIsIFdJVEhPVVQgaXRzIGV4dGVuc2lvbi4gSWdub3JlZCB1bmRlclxuICAgKiB7QGxpbmsgRm9sZGVyTm90ZUxvY2F0aW9uLkF1dG99LCB3aGljaCBuYW1lcyB0aGUgbm90ZSB0aGUgd2F5IHRoZSBpbnN0YWxsZWQgcGx1Z2luIGRvZXMuXG4gICAqXG4gICAqIEEgY2FsbGJhY2sgcmF0aGVyIHRoYW4gYSBuYW1lIHRlbXBsYXRlLCBiZWNhdXNlIGEgdGVtcGxhdGUgbmVlZHMgYSB0b2tlbiB2b2NhYnVsYXJ5IGFuZCB0aGlzIGxpYnJhcnlcbiAgICogaGFzIG5vbmUgdG8gaW1wb3NlIOKAlCBhIGNhbGxlciB0aGF0IGhhcyBvbmUgKGB7e2ZvbGRlck5hbWV9fWAsIGB7e2ZvbGRlclBhdGh9fWAsIOKApikgcmVuZGVycyBpdCBoZXJlLlxuICAgKlxuICAgKiBAcGFyYW0gZm9sZGVyIC0gVGhlIGZvbGRlciB3aG9zZSBub3RlIGlzIGJlaW5nIG5hbWVkLlxuICAgKiBAcmV0dXJucyBUaGUgbm90ZSdzIG5hbWUuXG4gICAqIEBkZWZhdWx0IGAoZm9sZGVyKSA9PiBmb2xkZXIubmFtZWBcbiAgICovXG4gIC8vIFNlZSB7QGxpbmsgRm9sZGVyTm90ZUNvbmZpZy5yZXNvbHZlTmFtZX0gZm9yIHdoeSB0aGlzIGlzIGEgZnVuY3Rpb24gcHJvcGVydHkuXG4gIHJlYWRvbmx5IHJlc29sdmVOYW1lPzogKGZvbGRlcjogVEZvbGRlcikgPT4gc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlRm9sZGVyTm90ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUZvbGRlck5vdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxyZWFkeS1yZXNvbHZlZCBzZXR1cCB0byB1c2UuXG4gICAqXG4gICAqIE9taXR0ZWQgbWVhbnMge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfSDigJQgdGhlIHNldHVwIGlzIHJlc29sdmVkIG9uIHRoZSBzcG90LCB3aGljaCBpcyB3aGF0IG1ha2VzXG4gICAqIGByZXNvbHZlRm9sZGVyTm90ZSh7IGFwcCwgZm9sZGVyIH0pYCB0aGUgb25lLWxpbmVyIGV2ZXJ5IGNhbGxlciB3YW50cy4gUGFzcyBvbmUgd2hlbiB0aGUgc2FtZSBzZXR1cCBpc1xuICAgKiB1c2VkIG1vcmUgdGhhbiBvbmNlLCBvciB3aGVuIGl0cyB7QGxpbmsgRm9sZGVyTm90ZUNvbmZpZy5pc0hpZGRlbn0gaXMgbmVlZGVkIGFsb25nc2lkZSB0aGUgbm90ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnKHsgYXBwIH0pYFxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnPzogRm9sZGVyTm90ZUNvbmZpZztcblxuICAvKipcbiAgICogVGhlIGZvbGRlciB3aG9zZSBmb2xkZXIgbm90ZSBpcyB3YW50ZWQuIFJlYWQgQUZURVIgYW55IHJlbmFtZTogdGhlIG5vdGUgaXMgbmFtZWQgZnJvbSB0aGUgZm9sZGVyJ3NcbiAgICogQ1VSUkVOVCBuYW1lLCBhbmQgYSBgZm9sZGVyLW5vdGVzYCBpbnN0YWxsIHdpdGggYHN5bmNGb2xkZXJOYW1lYCBvbiB3aWxsIGhhdmUgcmVuYW1lZCBpdCBhbHJlYWR5LlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyOiBURm9sZGVyO1xufVxuXG4vKipcbiAqIFRoZSBgZm9sZGVyLW5vdGVzYCBwbHVnaW4ncyBpZCwgYXMgaXRzIG1hbmlmZXN0IGRlY2xhcmVzIGl0LlxuICovXG5leHBvcnQgY29uc3QgRk9MREVSX05PVEVTX1BMVUdJTl9JRCA9ICdmb2xkZXItbm90ZXMnO1xuXG4vKipcbiAqIFRoZSBvbmUgdG9rZW4gYGZvbGRlci1ub3Rlc2AnIG93biBuYW1lIHRlbXBsYXRlIHVuZGVyc3RhbmRzLiBFdmVyeSBvdGhlciBjaGFyYWN0ZXIgaW4gdGhhdCB0ZW1wbGF0ZSBpc1xuICogYSBsaXRlcmFsLCBzbyB0cmFuc2xhdGluZyB0aGlzIHRva2VuIGlzIHRoZSB3aG9sZSBvZiB0aGUgdHJhbnNsYXRpb24uXG4gKi9cbmNvbnN0IEZPTERFUl9OT1RFU19GT0xERVJfTkFNRV9UT0tFTl9SRUdfRVhQID0gL1xce1xce2ZvbGRlcl9uYW1lXFx9XFx9L2dpO1xuXG4vKipcbiAqIGBmb2xkZXItbm90ZXNgIG9mZmVycyBgRXhjYWxpZHJhd2AgZm9sZGVyIG5vdGVzLCB3aGljaCBhcmUgTWFya2Rvd24gZmlsZXMgd2l0aCBhbiBgRXhjYWxpZHJhd2AgcGF5bG9hZCDigJQgaXRzXG4gKiBvd24gcmVzb2x2ZXIgbm9ybWFsaXplcyB0aGUgdHlwZSB0aGUgc2FtZSB3YXkgYmVmb3JlIGxvb2tpbmcgdGhlIGZpbGUgdXAuXG4gKi9cbmNvbnN0IEVYQ0FMSURSQVdfRklMRV9FWFRFTlNJT04gPSAnZXhjYWxpZHJhdyc7XG5cbi8qKlxuICogV2hhdCB7QGxpbmsgRm9sZGVyTm90ZUxvY2F0aW9uLkF1dG99IGZhbGxzIGJhY2sgdG86IHRoZSBsYXlvdXQgZXZlcnkgZm9sZGVyLW5vdGUgcGx1Z2luIHN1cHBvcnRzLCBhbmRcbiAqIHRoZSBvbmUgYGZvbGRlci1ub3Rlc2AgaXRzZWxmIHNoaXBzIGFzIGl0cyBkZWZhdWx0LiBOb3RoaW5nIGhpZGVzIGEgbm90ZSB3aGVuIG5vIHBsdWdpbiBpcyB0aGVyZSB0byBoaWRlXG4gKiBpdCwgc28ge0BsaW5rIEZvbGRlck5vdGVDb25maWcuaXNIaWRkZW59IGlzIGBmYWxzZWAuXG4gKi9cbmNvbnN0IEZBTExCQUNLX0ZPTERFUl9OT1RFX0NPTkZJRzogRm9sZGVyTm90ZUNvbmZpZyA9IHtcbiAgZXh0ZW5zaW9uczogW01BUktET1dOX0ZJTEVfRVhURU5TSU9OXSxcbiAgaXNIaWRkZW46IGZhbHNlLFxuICBsb2NhdGlvbjogRm9sZGVyTm90ZUxvY2F0aW9uLkluc2lkZUZvbGRlcixcbiAgcmVzb2x2ZU5hbWU6IChmb2xkZXI6IFRGb2xkZXIpOiBzdHJpbmcgPT4gZm9sZGVyLm5hbWVcbn07XG5cbi8qKlxuICogRmluZHMgdGhlIGZvbGRlciBhIGZpbGUgaXMgdGhlIGZvbGRlciBub3RlIG9mIOKAlCB0aGUgaW52ZXJzZSBvZiB7QGxpbmsgcmVzb2x2ZUZvbGRlck5vdGV9LlxuICpcbiAqIFRoZSBhbnN3ZXIgaXMgY2hlY2tlZCB0aHJvdWdoIHtAbGluayByZXNvbHZlRm9sZGVyTm90ZX0gaXRzZWxmLCBzbyB0aGUgdHdvIGNhbiBuZXZlciBkaXNhZ3JlZTogYSBmaWxlIGlzXG4gKiBhIGZvbGRlcidzIG5vdGUgZXhhY3RseSB3aGVuIHJlc29sdmluZyB0aGF0IGZvbGRlcidzIG5vdGUgeWllbGRzIHRoaXMgdmVyeSBmaWxlLiBBIGZpbGUgdGhhdCBkb2VzIG5vdFxuICogZXhpc3QgaW4gdGhlIHZhdWx0IChvbmUgYnVpbHQgZm9yIGEgcGF0aCB3aXRoIG5vdGhpbmcgYXQgaXQpIGlzIG5ldmVyIGEgZm9sZGVyIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBmaWxlLCBhbmQgb3B0aW9uYWxseSB0aGUgc2V0dXAgdG8gcmVzb2x2ZSBpdCB3aXRoLlxuICogQHJldHVybnMgVGhlIGZvbGRlciwgb3IgYG51bGxgIHdoZW4gdGhlIGZpbGUgaXMgbm90IGEgZm9sZGVyIG5vdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXJOb3RlRm9sZGVyKHBhcmFtczogR2V0Rm9sZGVyTm90ZUZvbGRlclBhcmFtcyk6IG51bGwgfCBURm9sZGVyIHtcbiAgY29uc3QgeyBhcHAsIGZpbGUgfSA9IHBhcmFtcztcbiAgY29uc3QgY29uZmlnID0gcGFyYW1zLmNvbmZpZyA/PyByZXNvbHZlRm9sZGVyTm90ZUNvbmZpZyh7IGFwcCB9KTtcbiAgY29uc3QgcGFyZW50ID0gZmlsZS5wYXJlbnQ7XG4gIGlmICghcGFyZW50IHx8IGNvbmZpZy5sb2NhdGlvbiA9PT0gRm9sZGVyTm90ZUxvY2F0aW9uLk5vbmUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxldCBjYW5kaWRhdGVGb2xkZXJzOiBURm9sZGVyW107XG4gIGlmIChjb25maWcubG9jYXRpb24gPT09IEZvbGRlck5vdGVMb2NhdGlvbi5JbnNpZGVGb2xkZXIpIHtcbiAgICAvLyBUaGUgdmF1bHQgcm9vdCBoYXMgbm8gZm9sZGVyIG5vdGUgdW5kZXIgdGhpcyBsYXlvdXQsIHNpbmNlIG5vdGhpbmcgbmFtZXMgaXQuXG4gICAgY2FuZGlkYXRlRm9sZGVycyA9IHBhcmVudC5pc1Jvb3QoKSA/IFtdIDogW3BhcmVudF07XG4gIH0gZWxzZSB7XG4gICAgY2FuZGlkYXRlRm9sZGVycyA9IHBhcmVudC5jaGlsZHJlbi5maWx0ZXIoaXNGb2xkZXIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbmRpZGF0ZUZvbGRlcnMuZmluZCgoZm9sZGVyKSA9PiByZXNvbHZlRm9sZGVyTm90ZSh7IGFwcCwgY29uZmlnLCBmb2xkZXIgfSkgPT09IGZpbGUpID8/IG51bGw7XG59XG5cbi8qKlxuICogRmluZHMgYSBmb2xkZXIncyBmb2xkZXIgbm90ZSDigJQgdGhlIG9uZSBub3RlIHdob3NlIHByb3BlcnRpZXMgZGVzY3JpYmUgdGhlIGZvbGRlciBpdHNlbGYuXG4gKlxuICogKipOZXZlciBjcmVhdGVzLioqIEEgZm9sZGVyIHRoYXQgaGFzIG5vIGZvbGRlciBub3RlIGFuc3dlcnMgYG51bGxgLCBhbmQgc28gZG9lcyB0aGUgdmF1bHQgcm9vdCB1bmRlclxuICoge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5QYXJlbnRGb2xkZXJ9IChub3RoaW5nIGNhbiBzaXQgYmVzaWRlIGl0KS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGZvbGRlciwgYW5kIG9wdGlvbmFsbHkgdGhlIHNldHVwIHRvIHJlc29sdmUgaXQgd2l0aC5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgbm90ZSwgb3IgYG51bGxgIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVGb2xkZXJOb3RlKHBhcmFtczogUmVzb2x2ZUZvbGRlck5vdGVQYXJhbXMpOiBudWxsIHwgVEZpbGUge1xuICBjb25zdCB7IGFwcCwgZm9sZGVyIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGNvbmZpZyA9IHBhcmFtcy5jb25maWcgPz8gcmVzb2x2ZUZvbGRlck5vdGVDb25maWcoeyBhcHAgfSk7XG4gIGlmIChjb25maWcubG9jYXRpb24gPT09IEZvbGRlck5vdGVMb2NhdGlvbi5Ob25lKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBwYXJlbnRGb2xkZXJQYXRoID0gY29uZmlnLmxvY2F0aW9uID09PSBGb2xkZXJOb3RlTG9jYXRpb24uUGFyZW50Rm9sZGVyID8gZm9sZGVyLnBhcmVudD8ucGF0aCA6IGZvbGRlci5wYXRoO1xuICBpZiAocGFyZW50Rm9sZGVyUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBub3RlTmFtZSA9IGNvbmZpZy5yZXNvbHZlTmFtZShmb2xkZXIpLnRyaW0oKTtcbiAgaWYgKCFub3RlTmFtZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9yIChjb25zdCBleHRlbnNpb24gb2YgY29uZmlnLmV4dGVuc2lvbnMpIHtcbiAgICBjb25zdCBmaWxlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgobm9ybWFsaXplUGF0aChqb2luKHBhcmVudEZvbGRlclBhdGgsIGAke25vdGVOYW1lfS4ke2V4dGVuc2lvbn1gKSkpO1xuICAgIGlmIChmaWxlKSB7XG4gICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB7QGxpbmsgRm9sZGVyTm90ZUxvY2F0aW9uLkF1dG99IGludG8gYSBjb25jcmV0ZSBmb2xkZXItbm90ZSBzZXR1cC5cbiAqXG4gKiBgZm9sZGVyLW5vdGVzYCcgYHZhdWx0Rm9sZGVyYCBzdG9yYWdlIChldmVyeSBmb2xkZXIgbm90ZSBwb29sZWQgaW4gb25lIGNlbnRyYWwgZm9sZGVyKSBoYXMgbm9cbiAqIGNvdW50ZXJwYXJ0IGhlcmUgYW5kIGZhbGxzIGJhY2sgcmF0aGVyIHRoYW4gZ3Vlc3Npbmc6IHdpdGggdGhlIG5vdGVzIHBvb2xlZCwgdGhlIG5vdGUgYmVsb25naW5nIHRvIGFcbiAqIGZvbGRlciBpcyBubyBsb25nZXIgZGVyaXZhYmxlIGZyb20gdGhhdCBmb2xkZXIncyBwYXRoIGFsb25lLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc2V0dXAsIGFuZCB0aGUgYXBwIHRvIHJlYWQgdGhlIGluc3RhbGxlZCBwbHVnaW4gZnJvbS5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBzZXR1cC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnKHBhcmFtczogUmVzb2x2ZUZvbGRlck5vdGVDb25maWdQYXJhbXMpOiBGb2xkZXJOb3RlQ29uZmlnIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBleHRlbnNpb25zLFxuICAgIGlzSGlkZGVuLFxuICAgIGxvY2F0aW9uLFxuICAgIHJlc29sdmVOYW1lXG4gIH0gPSBwYXJhbXM7XG5cbiAgcmV0dXJuIGxvY2F0aW9uICE9PSB1bmRlZmluZWQgJiYgbG9jYXRpb24gIT09IEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvXG4gICAgPyB7XG4gICAgICBleHRlbnNpb25zOiBub3JtYWxpemVFeHRlbnNpb25zKGV4dGVuc2lvbnMgPz8gW01BUktET1dOX0ZJTEVfRVhURU5TSU9OXSksXG4gICAgICBpc0hpZGRlbjogaXNIaWRkZW4gPz8gZmFsc2UsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIHJlc29sdmVOYW1lOiByZXNvbHZlTmFtZSA/PyBGQUxMQkFDS19GT0xERVJfTk9URV9DT05GSUcucmVzb2x2ZU5hbWVcbiAgICB9XG4gICAgOiByZWFkRm9sZGVyTm90ZXNQbHVnaW5Db25maWcoYXBwKSA/PyBGQUxMQkFDS19GT0xERVJfTk9URV9DT05GSUc7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBleHRlbnNpb25zIHRoZSB3YXkgYGZvbGRlci1ub3Rlc2AgZG9lcyBiZWZvcmUgaXQgbG9va3MgYSBmaWxlIHVwOiBubyBsZWFkaW5nIGRvdCwgbG93ZXItY2FzZSxcbiAqIGBFeGNhbGlkcmF3YCB0cmVhdGVkIGFzIE1hcmtkb3duLCBibGFua3MgZHJvcHBlZCwgZHVwbGljYXRlcyBjb2xsYXBzZWQgd2hpbGUga2VlcGluZyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSdzXG4gKiBwb3NpdGlvbi5cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9ucyAtIFRoZSBleHRlbnNpb25zIGFzIGNvbmZpZ3VyZWQuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBleHRlbnNpb25zLCBpbiByZXNvbHV0aW9uIG9yZGVyLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVFeHRlbnNpb25zKGV4dGVuc2lvbnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogcmVhZG9ubHkgc3RyaW5nW10ge1xuICBjb25zdCBub3JtYWxpemVkRXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnNcbiAgICAubWFwKChleHRlbnNpb24pID0+IGV4dGVuc2lvbi50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eXFwuLywgJycpKVxuICAgIC5tYXAoKGV4dGVuc2lvbikgPT4gZXh0ZW5zaW9uID09PSBFWENBTElEUkFXX0ZJTEVfRVhURU5TSU9OID8gTUFSS0RPV05fRklMRV9FWFRFTlNJT04gOiBleHRlbnNpb24pXG4gICAgLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KG5vcm1hbGl6ZWRFeHRlbnNpb25zKV07XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGluc3RhbGxlZCBgZm9sZGVyLW5vdGVzYCBwbHVnaW4ncyBvd24gY29uZmlndXJhdGlvbiwgaWYgaXQgaXMgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkIHRoZSB3YXlcbiAqIGl0IGRvY3VtZW50cy5cbiAqXG4gKiBFdmVyeSB2YWx1ZSBpcyByZWFkIGFzIGB1bmtub3duYCBhbmQgY2hlY2tlZCwgcmF0aGVyIHRoYW4gYXNzZXJ0ZWQgaW50byBhIHNoYXBlOiB0aGlzIGlzIGFub3RoZXJcbiAqIHBsdWdpbidzIHByaXZhdGUgc2V0dGluZ3Mgb2JqZWN0LCBzbyBhIHZlcnNpb24gdGhhdCByZW5hbWVzIG9yIGRyb3BzIGEga2V5IG11c3QgZGVncmFkZSB0byB0aGUgZmFsbGJhY2tcbiAqIGluc3RlYWQgb2YgdGhyb3dpbmcgaW5zaWRlIGEgY2xpY2sgaGFuZGxlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24sIG9yIGBudWxsYCB3aGVuIHRoZSBwbHVnaW4gaXMgYWJzZW50LCBub3QgY29uZmlndXJlZCwgb3Igc2V0IHRvIGEgc3RvcmFnZVxuICogbG9jYXRpb24gd2l0aCBubyBjb3VudGVycGFydCBoZXJlLlxuICovXG5mdW5jdGlvbiByZWFkRm9sZGVyTm90ZXNQbHVnaW5Db25maWcoYXBwOiBBcHApOiBGb2xkZXJOb3RlQ29uZmlnIHwgbnVsbCB7XG4gIGNvbnN0IGZvbGRlck5vdGVzUGx1Z2luID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKEZPTERFUl9OT1RFU19QTFVHSU5fSUQpO1xuICAvLyBOYXJyb3dlZCB3aXRoIGBpbmAgcmF0aGVyIHRoYW4gYXNzZXJ0ZWQgaW50byBhIHNoYXBlOiB0aGF0IGtlZXBzIGV2ZXJ5IHZhbHVlIGJlbG93IHR5cGVkIGB1bmtub3duYCxcbiAgLy8gd2hpY2ggaXMgZXhhY3RseSB3aGF0IGEgZm9yZWlnbiBwbHVnaW4ncyBwcml2YXRlIHNldHRpbmdzIGFyZS5cbiAgaWYgKCFmb2xkZXJOb3Rlc1BsdWdpbiB8fCAhKCdzZXR0aW5ncycgaW4gZm9sZGVyTm90ZXNQbHVnaW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmb2xkZXJOb3Rlc1NldHRpbmdzOiB1bmtub3duID0gZm9sZGVyTm90ZXNQbHVnaW4uc2V0dGluZ3M7XG4gIGlmICh0eXBlb2YgZm9sZGVyTm90ZXNTZXR0aW5ncyAhPT0gJ29iamVjdCcgfHwgZm9sZGVyTm90ZXNTZXR0aW5ncyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbG9jYXRpb24gPSB0b0ZvbGRlck5vdGVMb2NhdGlvbignc3RvcmFnZUxvY2F0aW9uJyBpbiBmb2xkZXJOb3Rlc1NldHRpbmdzID8gZm9sZGVyTm90ZXNTZXR0aW5ncy5zdG9yYWdlTG9jYXRpb24gOiBudWxsKTtcbiAgaWYgKCFsb2NhdGlvbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyTm90ZU5hbWUgPSAnZm9sZGVyTm90ZU5hbWUnIGluIGZvbGRlck5vdGVzU2V0dGluZ3MgPyBmb2xkZXJOb3Rlc1NldHRpbmdzLmZvbGRlck5vdGVOYW1lIDogbnVsbDtcbiAgaWYgKHR5cGVvZiBmb2xkZXJOb3RlTmFtZSAhPT0gJ3N0cmluZycgfHwgIWZvbGRlck5vdGVOYW1lKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmb2xkZXJOb3RlVHlwZSA9ICdmb2xkZXJOb3RlVHlwZScgaW4gZm9sZGVyTm90ZXNTZXR0aW5ncyA/IGZvbGRlck5vdGVzU2V0dGluZ3MuZm9sZGVyTm90ZVR5cGUgOiBudWxsO1xuICBjb25zdCBzdXBwb3J0ZWRGaWxlVHlwZXMgPSAnc3VwcG9ydGVkRmlsZVR5cGVzJyBpbiBmb2xkZXJOb3Rlc1NldHRpbmdzID8gZm9sZGVyTm90ZXNTZXR0aW5ncy5zdXBwb3J0ZWRGaWxlVHlwZXMgOiBudWxsO1xuICBjb25zdCBpc0hpZGRlbiA9ICdoaWRlRm9sZGVyTm90ZScgaW4gZm9sZGVyTm90ZXNTZXR0aW5ncyA/IGZvbGRlck5vdGVzU2V0dGluZ3MuaGlkZUZvbGRlck5vdGUgOiBudWxsO1xuXG4gIHJldHVybiB7XG4gICAgLy8gSXRzIG93biByZXNvbHZlciB0cmllcyB0aGUgcHJpbWFyeSB0eXBlIGZpcnN0IGFuZCBldmVyeSBvdGhlciBzdXBwb3J0ZWQgdHlwZSBhZnRlciBpdCwgd2hpY2ggaXMgdGhlXG4gICAgLy8gb3JkZXIgcmVwcm9kdWNlZCBoZXJlLiBBbiB1bnVzYWJsZSBwYWlyIGxlYXZlcyBNYXJrZG93biwgdGhlIGV4dGVuc2lvbiBpdCBjYW5ub3QgYmUgY29uZmlndXJlZFxuICAgIC8vIHdpdGhvdXQuXG4gICAgZXh0ZW5zaW9uczogbm9ybWFsaXplRXh0ZW5zaW9ucyhbXG4gICAgICB0eXBlb2YgZm9sZGVyTm90ZVR5cGUgPT09ICdzdHJpbmcnID8gZm9sZGVyTm90ZVR5cGUgOiBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTixcbiAgICAgIC4uLihBcnJheS5pc0FycmF5KHN1cHBvcnRlZEZpbGVUeXBlcykgPyBzdXBwb3J0ZWRGaWxlVHlwZXMuZmlsdGVyKCh0eXBlOiB1bmtub3duKSA9PiB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIDogW10pLFxuICAgICAgTUFSS0RPV05fRklMRV9FWFRFTlNJT05cbiAgICBdKSxcbiAgICBpc0hpZGRlbjogaXNIaWRkZW4gPT09IHRydWUsXG4gICAgbG9jYXRpb24sXG4gICAgcmVzb2x2ZU5hbWU6IChmb2xkZXI6IFRGb2xkZXIpOiBzdHJpbmcgPT5cbiAgICAgIHJlcGxhY2VBbGwoe1xuICAgICAgICAkc3RyaW5nOiBmb2xkZXJOb3RlTmFtZSxcbiAgICAgICAgLy8gQSBmdW5jdGlvbiByZXBsYWNlciwgc28gYSBmb2xkZXIgbmFtZSBjb250YWluaW5nIGAkJmAgaXMgaW5zZXJ0ZWQgbGl0ZXJhbGx5LlxuICAgICAgICByZXBsYWNlcjogKCkgPT4gZm9sZGVyLm5hbWUsXG4gICAgICAgIHNlYXJjaFZhbHVlOiBGT0xERVJfTk9URVNfRk9MREVSX05BTUVfVE9LRU5fUkVHX0VYUFxuICAgICAgfSlcbiAgfTtcbn1cblxuLyoqXG4gKiBNYXBzIGBmb2xkZXItbm90ZXNgJyBgc3RvcmFnZUxvY2F0aW9uYCBvbnRvIHRoaXMgbGlicmFyeSdzIG93biBsb2NhdGlvbi5cbiAqXG4gKiBAcGFyYW0gc3RvcmFnZUxvY2F0aW9uIC0gVGhlIHZhbHVlIHJlYWQgb3V0IG9mIHRoYXQgcGx1Z2luJ3Mgc2V0dGluZ3MuXG4gKiBAcmV0dXJucyBUaGUgbG9jYXRpb24sIG9yIGBudWxsYCBmb3IgYHZhdWx0Rm9sZGVyYCBhbmQgZm9yIGFueXRoaW5nIHRoYXQgaXMgbm90IG9uZSBvZiBpdHMgdmFsdWVzLlxuICovXG5mdW5jdGlvbiB0b0ZvbGRlck5vdGVMb2NhdGlvbihzdG9yYWdlTG9jYXRpb246IHVua25vd24pOiBGb2xkZXJOb3RlQ29uZmlnWydsb2NhdGlvbiddIHwgbnVsbCB7XG4gIHN3aXRjaCAoc3RvcmFnZUxvY2F0aW9uKSB7XG4gICAgY2FzZSAnaW5zaWRlRm9sZGVyJzoge1xuICAgICAgcmV0dXJuIEZvbGRlck5vdGVMb2NhdGlvbi5JbnNpZGVGb2xkZXI7XG4gICAgfVxuICAgIGNhc2UgJ3BhcmVudEZvbGRlcic6IHtcbiAgICAgIHJldHVybiBGb2xkZXJOb3RlTG9jYXRpb24uUGFyZW50Rm9sZGVyO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMscUJBQXFCO0FBRTlCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBV0EsSUFBSyxxQkFBTCxrQkFBS0Esd0JBQUw7QUFLTCxFQUFBQSxvQkFBQSxVQUFPO0FBS1AsRUFBQUEsb0JBQUEsa0JBQWU7QUFNZixFQUFBQSxvQkFBQSxVQUFPO0FBS1AsRUFBQUEsb0JBQUEsa0JBQWU7QUFyQkwsU0FBQUE7QUFBQSxHQUFBO0FBNEpMLE1BQU0seUJBQXlCO0FBTXRDLE1BQU0seUNBQXlDO0FBTS9DLE1BQU0sNEJBQTRCO0FBT2xDLE1BQU0sOEJBQWdEO0FBQUEsRUFDcEQsWUFBWSxDQUFDLHVCQUF1QjtBQUFBLEVBQ3BDLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLGFBQWEsQ0FBQyxXQUE0QixPQUFP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
@@ -12,11 +12,11 @@ export interface FrontmatterLinkCacheWithOffsets extends FrontmatterLinkCache {
12
12
  /**
13
13
  * An end offset of the link in the property value.
14
14
  */
15
- endOffset: number;
15
+ readonly endOffset: number;
16
16
  /**
17
17
  * A start offset of the link in the property value.
18
18
  */
19
- startOffset: number;
19
+ readonly startOffset: number;
20
20
  }
21
21
  /**
22
22
  * Checks if the reference is a frontmatter link cache with offsets.
@@ -49,4 +49,4 @@ export {
49
49
  isFrontmatterLinkCacheWithOffsets,
50
50
  toFrontmatterLinkCacheWithOffsets
51
51
  };
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSB0eXBlIGZvciBmcm9udG1hdHRlciBsaW5rIGNhY2hlIHdpdGggb2Zmc2V0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBpc0Zyb250bWF0dGVyTGlua0NhY2hlIH0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuXG4vKipcbiAqIFR5cGUgZm9yIGZyb250bWF0dGVyIGxpbmsgY2FjaGUgd2l0aCBvZmZzZXRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMgZXh0ZW5kcyBGcm9udG1hdHRlckxpbmtDYWNoZSB7XG4gIC8qKlxuICAgKiBBbiBlbmQgb2Zmc2V0IG9mIHRoZSBsaW5rIGluIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICovXG4gIGVuZE9mZnNldDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHN0YXJ0IG9mZnNldCBvZiB0aGUgbGluayBpbiB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAqL1xuICBzdGFydE9mZnNldDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgcmVmZXJlbmNlIGlzIGEgZnJvbnRtYXR0ZXIgbGluayBjYWNoZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSBmcm9udG1hdHRlciBsaW5rIGNhY2hlIHdpdGggb2Zmc2V0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzIHtcbiAgaWYgKCFpc0Zyb250bWF0dGVyTGlua0NhY2hlKHJlZmVyZW5jZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzID0gcmVmZXJlbmNlIGFzIFBhcnRpYWw8RnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cz47XG4gIHJldHVybiBmcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzLnN0YXJ0T2Zmc2V0ICE9PSB1bmRlZmluZWQgJiYgZnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy5lbmRPZmZzZXQgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZyb250bWF0dGVyIGxpbmsgY2FjaGUgdG8gYSBmcm9udG1hdHRlciBsaW5rIGNhY2hlIHdpdGggb2Zmc2V0cy5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocmVmZXJlbmNlOiBGcm9udG1hdHRlckxpbmtDYWNoZSk6IEZyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKHJlZmVyZW5jZSlcbiAgICA/IHJlZmVyZW5jZVxuICAgIDoge1xuICAgICAgLi4ucmVmZXJlbmNlLFxuICAgICAgZW5kT2Zmc2V0OiByZWZlcmVuY2Uub3JpZ2luYWwubGVuZ3RoLFxuICAgICAgc3RhcnRPZmZzZXQ6IDBcbiAgICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLFNBQVMsOEJBQThCO0FBdUJoQyxTQUFTLGtDQUFrQyxXQUFvRTtBQUNwSCxNQUFJLENBQUMsdUJBQXVCLFNBQVMsR0FBRztBQUN0QyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sa0NBQWtDO0FBQ3hDLFNBQU8sZ0NBQWdDLGdCQUFnQixVQUFhLGdDQUFnQyxjQUFjO0FBQ3BIO0FBUU8sU0FBUyxrQ0FBa0MsV0FBa0U7QUFDbEgsU0FBTyxrQ0FBa0MsU0FBUyxJQUM5QyxZQUNBO0FBQUEsSUFDQSxHQUFHO0FBQUEsSUFDSCxXQUFXLFVBQVUsU0FBUztBQUFBLElBQzlCLGFBQWE7QUFBQSxFQUNmO0FBQ0o7IiwibmFtZXMiOltdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSB0eXBlIGZvciBmcm9udG1hdHRlciBsaW5rIGNhY2hlIHdpdGggb2Zmc2V0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBpc0Zyb250bWF0dGVyTGlua0NhY2hlIH0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuXG4vKipcbiAqIFR5cGUgZm9yIGZyb250bWF0dGVyIGxpbmsgY2FjaGUgd2l0aCBvZmZzZXRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMgZXh0ZW5kcyBGcm9udG1hdHRlckxpbmtDYWNoZSB7XG4gIC8qKlxuICAgKiBBbiBlbmQgb2Zmc2V0IG9mIHRoZSBsaW5rIGluIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGVuZE9mZnNldDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHN0YXJ0IG9mZnNldCBvZiB0aGUgbGluayBpbiB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAqL1xuICByZWFkb25seSBzdGFydE9mZnNldDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgcmVmZXJlbmNlIGlzIGEgZnJvbnRtYXR0ZXIgbGluayBjYWNoZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSBmcm9udG1hdHRlciBsaW5rIGNhY2hlIHdpdGggb2Zmc2V0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzIHtcbiAgaWYgKCFpc0Zyb250bWF0dGVyTGlua0NhY2hlKHJlZmVyZW5jZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzID0gcmVmZXJlbmNlIGFzIFBhcnRpYWw8RnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cz47XG4gIHJldHVybiBmcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzLnN0YXJ0T2Zmc2V0ICE9PSB1bmRlZmluZWQgJiYgZnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy5lbmRPZmZzZXQgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZyb250bWF0dGVyIGxpbmsgY2FjaGUgdG8gYSBmcm9udG1hdHRlciBsaW5rIGNhY2hlIHdpdGggb2Zmc2V0cy5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocmVmZXJlbmNlOiBGcm9udG1hdHRlckxpbmtDYWNoZSk6IEZyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKHJlZmVyZW5jZSlcbiAgICA/IHJlZmVyZW5jZVxuICAgIDoge1xuICAgICAgLi4ucmVmZXJlbmNlLFxuICAgICAgZW5kT2Zmc2V0OiByZWZlcmVuY2Uub3JpZ2luYWwubGVuZ3RoLFxuICAgICAgc3RhcnRPZmZzZXQ6IDBcbiAgICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLFNBQVMsOEJBQThCO0FBdUJoQyxTQUFTLGtDQUFrQyxXQUFvRTtBQUNwSCxNQUFJLENBQUMsdUJBQXVCLFNBQVMsR0FBRztBQUN0QyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sa0NBQWtDO0FBQ3hDLFNBQU8sZ0NBQWdDLGdCQUFnQixVQUFhLGdDQUFnQyxjQUFjO0FBQ3BIO0FBUU8sU0FBUyxrQ0FBa0MsV0FBa0U7QUFDbEgsU0FBTyxrQ0FBa0MsU0FBUyxJQUM5QyxZQUNBO0FBQUEsSUFDQSxHQUFHO0FBQUEsSUFDSCxXQUFXLFVBQVUsU0FBUztBQUFBLElBQzlCLGFBQWE7QUFBQSxFQUNmO0FBQ0o7IiwibmFtZXMiOltdfQ==
@@ -35,11 +35,11 @@ export interface ObsidianFrontmatter {
35
35
  /**
36
36
  * An array of CSS classes to apply to the note.
37
37
  */
38
- cssclasses?: string[];
38
+ readonly cssclasses?: string[];
39
39
  /**
40
40
  * An array of tags for the note.
41
41
  */
42
- tags?: string[];
42
+ readonly tags?: string[];
43
43
  }
44
44
  /**
45
45
  * A front matter for publishing in Obsidian.
@@ -50,23 +50,23 @@ export interface ObsidianPublishFrontmatter {
50
50
  /**
51
51
  * A cover image for the note.
52
52
  */
53
- cover?: string;
53
+ readonly cover?: string;
54
54
  /**
55
55
  * A description for the note.
56
56
  */
57
- description?: string;
57
+ readonly description?: string;
58
58
  /**
59
59
  * An image for the note.
60
60
  */
61
- image?: string;
61
+ readonly image?: string;
62
62
  /**
63
63
  * A permanent link for the note.
64
64
  */
65
- permalink?: string;
65
+ readonly permalink?: string;
66
66
  /**
67
67
  * Whether the note is published.
68
68
  */
69
- publish?: boolean;
69
+ readonly publish?: boolean;
70
70
  }
71
71
  /**
72
72
  * Parameters for {@link removeEmptyFrontmatterValues}.
@@ -162,4 +162,4 @@ export {
162
162
  removeEmptyFrontmatterValues,
163
163
  setFrontmatter
164
164
  };
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcm9udG1hdHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgYW5kIG1hbmFnaW5nIFlBTUwgZnJvbnQgbWF0dGVyIGluIE9ic2lkaWFuIG5vdGVzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlV3JhcHBlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS13cmFwcGVyJztcblxuaW1wb3J0IHsgZmlsdGVySW5QbGFjZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hcnJheSc7XG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IGluc2VydEF0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQge1xuICBnZXRGcm9udE1hdHRlckluZm8sXG4gIHBhcnNlWWFtbCxcbiAgc3RyaW5naWZ5WWFtbFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuTGliU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogQSBjb21iaW5lZCBmcm9udCBtYXR0ZXIgb2YgYSBkb2N1bWVudC5cbiAqIEl0IGlzIGEgdW5pb24gb2YgY3VzdG9tIGZyb250IG1hdHRlciwgT2JzaWRpYW4gZnJvbnQgbWF0dGVyLCBhbmQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgdHlwZSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiA9IEdlbmVyaWNPYmplY3Q8Q3VzdG9tRnJvbnRtYXR0ZXIgJiBPYnNpZGlhbkZyb250bWF0dGVyPjtcblxuLyoqXG4gKiBBIHJld3JpdGUgb2YgYSBub3RlJ3MgZnJvbnQgbWF0dGVyIHRoYXQga2VlcHMgdGhlIGF1dGhvcidzIG9yaWdpbmFsIGZvcm1hdHRpbmcgd2hlcmV2ZXIgdGhlIGNoYW5nZSBkb2VzIG5vdCByZWFjaCBpdC5cbiAqXG4gKiBJdCBpcyBoYW5kZWQgdGhlIHdob2xlIG5vdGUgYW5kIHRoZSBmcm9udCBtYXR0ZXIgdG8gd3JpdGUsIGFuZCByZXR1cm5zIHRoZSB3aG9sZSBuZXcgbm90ZSDigJQgb3IgYG51bGxgIHdoZW4gaXQgY2Fubm90IGJlIGZhaXRoZnVsLCB3aGljaCBoYW5kcyB0aGUgd3JpdGUgYmFjayB0byB7QGxpbmsgc2V0RnJvbnRtYXR0ZXJ9J3Mgb3duIHBhcnNlLWFuZC1zdHJpbmdpZnkgcGF0aC4gUmV0dXJuaW5nIGBudWxsYCBpcyBuZXZlciBhbiBlcnJvcjogaXQgaXMgaG93IHRoZSBwcmVzZXJ2ZXIgZ3VhcmFudGVlcyBpdCBjYW4gb25seSBldmVyIG1hdGNoIG9yIGltcHJvdmUgb24gdGhhdCBwYXRoLCBuZXZlciBkbyB3b3JzZSB0aGFuIGl0LlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIG5vdGUgdG8gcmV3cml0ZSB0aGUgZnJvbnQgbWF0dGVyIG9mLlxuICogQHBhcmFtIG5ld0Zyb250bWF0dGVyIC0gVGhlIGZyb250IG1hdHRlciB0byB3cml0ZS5cbiAqIEByZXR1cm5zIFRoZSBuZXcgbm90ZSwgb3IgYG51bGxgIHRvIGxldCB7QGxpbmsgc2V0RnJvbnRtYXR0ZXJ9IHdyaXRlIGl0IGluc3RlYWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlciA9ICh0aGlzOiB2b2lkLCBjb250ZW50OiBzdHJpbmcsIG5ld0Zyb250bWF0dGVyOiBvYmplY3QpID0+IG51bGwgfCBzdHJpbmc7XG5cbi8qKlxuICogQSBmcm9udCBtYXR0ZXIgb2YgYW4gT2JzaWRpYW4gZmlsZS5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2hlbHAub2JzaWRpYW4ubWQvRWRpdGluZythbmQrZm9ybWF0dGluZy9Qcm9wZXJ0aWVzI0RlZmF1bHQrcHJvcGVydGllc31cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkZyb250bWF0dGVyIHtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGFsaWFzZXMgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgYWxpYXNlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBDU1MgY2xhc3NlcyB0byBhcHBseSB0byB0aGUgbm90ZS5cbiAgICovXG4gIGNzc2NsYXNzZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgdGFncyBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICB0YWdzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBmcm9udCBtYXR0ZXIgZm9yIHB1Ymxpc2hpbmcgaW4gT2JzaWRpYW4uXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9oZWxwLm9ic2lkaWFuLm1kL0VkaXRpbmcrYW5kK2Zvcm1hdHRpbmcvUHJvcGVydGllcyNQcm9wZXJ0aWVzK2ZvcitPYnNpZGlhbitQdWJsaXNofVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuUHVibGlzaEZyb250bWF0dGVyIHtcbiAgLyoqXG4gICAqIEEgY292ZXIgaW1hZ2UgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgY292ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGltYWdlIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIGltYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHBlcm1hbmVudCBsaW5rIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIHBlcm1hbGluaz86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbm90ZSBpcyBwdWJsaXNoZWQuXG4gICAqL1xuICBwdWJsaXNoPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVtb3ZlRW1wdHlGcm9udG1hdHRlclZhbHVlc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3ZlRW1wdHlGcm9udG1hdHRlclZhbHVlc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZnJvbnQgbWF0dGVyIG9iamVjdCB0byByZW1vdmUgdGhlIGVtcHR5IHZhbHVlcyBmcm9tLiBJdCBpcyBtb2RpZmllZCBpbiBwbGFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBHZW5lcmljT2JqZWN0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlbW92ZSBhcnJheXMgdGhhdCBhcmUgZW1wdHksIGluY2x1ZGluZyB0aGUgb25lcyB0aGF0IGJlY2FtZSBlbXB0eSBhZnRlciB0aGVpciBvd24gaXRlbXMgd2VyZSByZW1vdmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZW1vdmVFbXB0eUFycmF5cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVtb3ZlIHBsYWluIG9iamVjdHMgdGhhdCBhcmUgZW1wdHksIGluY2x1ZGluZyB0aGUgb25lcyB0aGF0IGJlY2FtZSBlbXB0eSBhZnRlciB0aGVpciBvd24gcHJvcGVydGllcyB3ZXJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlbW92ZUVtcHR5T2JqZWN0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVtb3ZlIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBCb3RoIGFyZSB0cmVhdGVkIHRoZSBzYW1lOiB0aGV5IGFyZSB0aGUgdHdvIHdheXMgYSBrZXkgY2FuIGJlIHByZXNlbnQgYnV0IGNhcnJ5IG5vIHZhbHVlLCBhbmQgYHVuZGVmaW5lZGAgY2Fubm90IHN1cnZpdmUgYSBZQU1MIHJvdW5kLXRyaXAgYW55d2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZW1vdmVOdWxscz86IGJvb2xlYW47XG59XG5cbmNvbnN0IEZST05UTUFUVEVSX0ZPUk1BVFRJTkdfUFJFU0VSVkVSX1NUQVRFX0tFWSA9ICdmcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXInO1xuY29uc3QgS0VZX1BBVEhfU0VQQVJBVE9SID0gJy4nO1xuXG4vKipcbiAqIFJlbW92ZXMgZW1wdHkgdmFsdWVzIGZyb20gYSBmcm9udCBtYXR0ZXIgb2JqZWN0LCByZWN1cnNpbmcgaW50byBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzLlxuICpcbiAqIFRoZSB0cmF2ZXJzYWwgaXMgYm90dG9tLXVwOiBhIGNvbnRhaW5lciBpcyBwcnVuZWQgYmVmb3JlIGl0IGlzIGl0c2VsZiB0ZXN0ZWQgZm9yIGVtcHRpbmVzcywgc28gYSBjb250YWluZXIgdGhhdCBob2xkcyBub3RoaW5nIGJ1dCBlbXB0eSB2YWx1ZXMgaXMgcmVtb3ZlZCBhcyB3ZWxsIHdoZW4gdGhlIG1hdGNoaW5nIG9wdGlvbiBpcyBlbmFibGVkLlxuICovXG5jbGFzcyBFbXB0eUZyb250bWF0dGVyVmFsdWVSZW1vdmVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSByZW1vdmVkS2V5UGF0aHM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvdWxkUmVtb3ZlRW1wdHlBcnJheXM6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvdWxkUmVtb3ZlRW1wdHlPYmplY3RzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHNob3VsZFJlbW92ZU51bGxzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHJlbW92ZXIsIHJlc29sdmluZyB0aGUgcHJvdmlkZWQgb3B0aW9ucyBhZ2FpbnN0IHRoZSBkZWZhdWx0cy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW1vdmluZyB0aGUgZW1wdHkgZnJvbnQgbWF0dGVyIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFJlbW92ZUVtcHR5RnJvbnRtYXR0ZXJWYWx1ZXNQYXJhbXMpIHtcbiAgICB0aGlzLnNob3VsZFJlbW92ZUVtcHR5QXJyYXlzID0gcGFyYW1zLnNob3VsZFJlbW92ZUVtcHR5QXJyYXlzID8/IGZhbHNlO1xuICAgIHRoaXMuc2hvdWxkUmVtb3ZlRW1wdHlPYmplY3RzID0gcGFyYW1zLnNob3VsZFJlbW92ZUVtcHR5T2JqZWN0cyA/PyBmYWxzZTtcbiAgICB0aGlzLnNob3VsZFJlbW92ZU51bGxzID0gcGFyYW1zLnNob3VsZFJlbW92ZU51bGxzID8/IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGVtcHR5IHZhbHVlcyBmcm9tIHRoZSBnaXZlbiBmcm9udCBtYXR0ZXIgb2JqZWN0LCBtb2RpZnlpbmcgaXQgaW4gcGxhY2UuXG4gICAqXG4gICAqIEBwYXJhbSBmcm9udG1hdHRlciAtIFRoZSBmcm9udCBtYXR0ZXIgb2JqZWN0IHRvIHJlbW92ZSB0aGUgZW1wdHkgdmFsdWVzIGZyb20uXG4gICAqIEByZXR1cm5zIFRoZSBrZXkgcGF0aHMgb2YgdGhlIHJlbW92ZWQgdmFsdWVzLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIHJlbW92ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlKGZyb250bWF0dGVyOiBHZW5lcmljT2JqZWN0KTogc3RyaW5nW10ge1xuICAgIHRoaXMucHJ1bmVPYmplY3QoZnJvbnRtYXR0ZXIsICcnKTtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVkS2V5UGF0aHM7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSXNFbXB0eSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaG91bGRSZW1vdmVOdWxscztcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubGVuZ3RoID09PSAwICYmIHRoaXMuc2hvdWxkUmVtb3ZlRW1wdHlBcnJheXNcbiAgICAgIDogY2hlY2tJc1BsYWluT2JqZWN0KHZhbHVlKSAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwICYmIHRoaXMuc2hvdWxkUmVtb3ZlRW1wdHlPYmplY3RzO1xuICB9XG5cbiAgcHJpdmF0ZSBqb2luS2V5UGF0aChrZXlQYXRoOiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4ga2V5UGF0aCA/IGAke2tleVBhdGh9JHtLRVlfUEFUSF9TRVBBUkFUT1J9JHtrZXl9YCA6IGtleTtcbiAgfVxuXG4gIHByaXZhdGUgcHJ1bmUodmFsdWU6IHVua25vd24sIGtleVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhpcy5wcnVuZUFycmF5KHZhbHVlLCBrZXlQYXRoKTtcbiAgICB9IGVsc2UgaWYgKGNoZWNrSXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMucHJ1bmVPYmplY3QodmFsdWUsIGtleVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJ1bmVBcnJheShhcnJheTogdW5rbm93bltdLCBrZXlQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBmaWx0ZXJJblBsYWNlKGFycmF5LCAoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1LZXlQYXRoID0gdGhpcy5qb2luS2V5UGF0aChrZXlQYXRoLCBTdHJpbmcoaW5kZXgpKTtcbiAgICAgIHRoaXMucHJ1bmUoaXRlbSwgaXRlbUtleVBhdGgpO1xuICAgICAgaWYgKCF0aGlzLmNoZWNrSXNFbXB0eShpdGVtKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW1vdmVkS2V5UGF0aHMucHVzaChpdGVtS2V5UGF0aCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBydW5lT2JqZWN0KCRvYmplY3Q6IEdlbmVyaWNPYmplY3QsIGtleVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKCRvYmplY3QpKSB7XG4gICAgICBjb25zdCB2YWx1ZUtleVBhdGggPSB0aGlzLmpvaW5LZXlQYXRoKGtleVBhdGgsIGtleSk7XG4gICAgICB0aGlzLnBydW5lKHZhbHVlLCB2YWx1ZUtleVBhdGgpO1xuICAgICAgaWYgKCF0aGlzLmNoZWNrSXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVtb3ZlZEtleVBhdGhzLnB1c2godmFsdWVLZXlQYXRoKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgICAgIGRlbGV0ZSAkb2JqZWN0W2tleV07XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LCBpLmUuIGFuIG9iamVjdCBsaXRlcmFsIHJhdGhlciB0aGFuIGFuIGFycmF5IG9yIGEgY2xhc3MgaW5zdGFuY2UuXG4gKlxuICogYHBhcnNlWWFtbCgpYCB0dXJucyBhIFlBTUwgdGltZXN0YW1wIGludG8gYSB7QGxpbmsgRGF0ZX0sIHdoaWNoIGhhcyBubyBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzLCBzbyBhIHBsYWluIGB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnYCB0ZXN0IHdvdWxkIHJlcG9ydCBldmVyeSBkYXRlIGFzIGFuIGVtcHR5IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIHBsYWluIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSXNQbGFpbk9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEdlbmVyaWNPYmplY3Qge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gY29udGVudCBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBzdHJpbmcgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihjb250ZW50OiBzdHJpbmcpOiBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiB7XG4gIGNvbnN0IGZyb250bWF0dGVySW5mbyA9IGdldEZyb250TWF0dGVySW5mbyhjb250ZW50KTtcbiAgcmV0dXJuIChwYXJzZVlhbWwoZnJvbnRtYXR0ZXJJbmZvLmZyb250bWF0dGVyKSA/PyB7fSkgYXMgQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj47XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSB7QGxpbmsgRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyfSBldmVyeSBmcm9udC1tYXR0ZXIgd3JpdGUgaW4gdGhpcyBsaWJyYXJ5IHJvdXRlcyB0aHJvdWdoLlxuICpcbiAqIFRoZXJlIGlzIGF0IG1vc3Qgb25lLCBzaGFyZWQgYnkgZXZlcnkgcGx1Z2luIGxvYWRlZCBpbiB0aGUgc2FtZSByZWFsbSDigJQgbGlrZSBldmVyeSBvdGhlciByZWdpc3RyYXRpb24gaW4gdGhpcyBsaWJyYXJ5IGl0IGxpdmVzIGluIHRoZSBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuTGliYCBiYWcg4oCUIHNvIGEgc2luZ2xlIGNhbGwgbWFrZXMgZXZlcnkgd3JpdGUgdGhpcyBsaWJyYXJ5IHBlcmZvcm1zIGZvcm1hdHRpbmctcHJlc2VydmluZywgYHByb2Nlc3NGcm9udG1hdHRlcigpYCBhbmQgYGFwcGx5RmlsZUNoYW5nZXMoKWAgaW5jbHVkZWQuIFBhc3MgYG51bGxgIHRvIHVucmVnaXN0ZXIuXG4gKlxuICogVGhlIHByZXNlcnZlciBpcyBOT1QgcmVnaXN0ZXJlZCBieSBkZWZhdWx0LCBhbmQgdGhhdCBpcyBhIGJ1bmRsZS1zaXplIGRlY2lzaW9uIHJhdGhlciB0aGFuIGEgZG91YnQgYWJvdXQgdGhlIGVuZ2luZTogdGhlIG9uZSB0aGlzIGxpYnJhcnkgc2hpcHMgbmVlZHMgdGhlIGB5YW1sYCBwYWNrYWdlJ3MgQ1NUIEFQSSwgd2hpY2ggT2JzaWRpYW4gZG9lcyBub3QgaGFuZCB0byBwbHVnaW5zIGFuZCB3aGljaCBjb3N0cyBhYm91dCAxMDAgS0Igb2YgYSBwbHVnaW4ncyBgbWFpbi5qc2AuIEEgcGx1Z2luIHRoYXQgd2FudHMgaXQgY2FsbHMgYGVuYWJsZUZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZhdGlvbigpYCBmcm9tIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliL2Zyb250bWF0dGVyLWZvcm1hdHRpbmdgLCBhbmQgcGF5cyBmb3IgaXQgb25seSB0aGVuLlxuICpcbiAqIEBwYXJhbSBwcmVzZXJ2ZXIgLSBUaGUgcHJlc2VydmVyIHRvIHJvdXRlIGZyb250LW1hdHRlciB3cml0ZXMgdGhyb3VnaCwgb3IgYG51bGxgIHRvIHVucmVnaXN0ZXIgdGhlIGN1cnJlbnQgb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXIocHJlc2VydmVyOiBGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXIgfCBudWxsKTogdm9pZCB7XG4gIGdldEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlcldyYXBwZXIoKS52YWx1ZSA9IHByZXNlcnZlcjtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBlbXB0eSB2YWx1ZXMgZnJvbSBhIGZyb250IG1hdHRlciBvYmplY3QsIGF0IGFueSBuZXN0aW5nIGRlcHRoLlxuICpcbiAqIEJ5IGRlZmF1bHQgb25seSBlbXB0eSBzdHJpbmdzIGFyZSByZW1vdmVkIOKAlCBib3RoIGFzIHByb3BlcnR5IHZhbHVlcyBhbmQgYXMgYXJyYXkgaXRlbXMuIGBudWxsYCwgYHVuZGVmaW5lZGAsIGVtcHR5IGFycmF5cyBhbmQgZW1wdHkgb2JqZWN0cyBhcmUga2VwdCB1bmxlc3MgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9uIGlzIGVuYWJsZWQuXG4gKlxuICogVGhlIG9iamVjdCBpcyBtb2RpZmllZCBpbiBwbGFjZSwgc28gdGhlIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgc3RyYWlnaHQgZnJvbSBhIGBwcm9jZXNzRnJvbnRtYXR0ZXIoKWAgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW1vdmluZyB0aGUgZW1wdHkgZnJvbnQgbWF0dGVyIHZhbHVlcy5cbiAqIEByZXR1cm5zIFRoZSBkb3Qtc2VwYXJhdGVkIGtleSBwYXRocyBvZiB0aGUgcmVtb3ZlZCB2YWx1ZXMsIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgcmVtb3ZlZC4gQW4gYXJyYXkgaXRlbSBpcyByZXBvcnRlZCBieSBpdHMgaW5kZXggd2l0aGluIHRoZSBhcnJheSBhcyBpdCB3YXMgYmVmb3JlIGFueSBvZiBpdHMgc2libGluZ3Mgd2VyZSByZW1vdmVkLCBlLmcuIGB0YWdzLjBgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRW1wdHlGcm9udG1hdHRlclZhbHVlcyhwYXJhbXM6IFJlbW92ZUVtcHR5RnJvbnRtYXR0ZXJWYWx1ZXNQYXJhbXMpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBuZXcgRW1wdHlGcm9udG1hdHRlclZhbHVlUmVtb3ZlcihwYXJhbXMpLnJlbW92ZShwYXJhbXMuZnJvbnRtYXR0ZXIpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGZyb250IG1hdHRlciBvZiBhIGdpdmVuIGNvbnRlbnQgc3RyaW5nLlxuICpcbiAqIFdoZW4gYSB7QGxpbmsgRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyfSBpcyByZWdpc3RlcmVkIChzZWUge0BsaW5rIHJlZ2lzdGVyRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyfSkgdGhlIHdyaXRlIGdvZXMgdGhyb3VnaCBpdCBmaXJzdCwgc28gdGhlIHBhcnRzIG9mIHRoZSBibG9jayB0aGUgY2hhbmdlIGRvZXMgbm90IHJlYWNoIGtlZXAgdGhlIGJ5dGVzIHRoZWlyIGF1dGhvciB3cm90ZSDigJQgdGhlaXIgY29tbWVudHMsIHF1b3RpbmcsIGJsYW5rIGxpbmVzIGFuZCBpbmRlbnRhdGlvbi4gV2l0aG91dCBvbmUsIGFuZCB3aGVuZXZlciB0aGUgcHJlc2VydmVyIHJlcG9ydHMgaXQgY2Fubm90IGJlIGZhaXRoZnVsLCB0aGUgd2hvbGUgYmxvY2sgaXMgcGFyc2VkIGFuZCB3cml0dGVuIG91dCBhZ2Fpbiwgd2hpY2ggaXMgd2hhdCBPYnNpZGlhbidzIG93biBgcHJvY2Vzc0Zyb250TWF0dGVyKClgIGRvZXMuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBzdHJpbmcgdG8gc2V0IHRoZSBmcm9udCBtYXR0ZXIgaW4uXG4gKiBAcGFyYW0gbmV3RnJvbnRtYXR0ZXIgLSBUaGUgbmV3IGZyb250IG1hdHRlciB0byBzZXQuXG4gKiBAcmV0dXJucyBUaGUgbmV3IGNvbnRlbnQgc3RyaW5nIHdpdGggdGhlIGZyb250IG1hdHRlciBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGcm9udG1hdHRlcihjb250ZW50OiBzdHJpbmcsIG5ld0Zyb250bWF0dGVyOiBvYmplY3QpOiBzdHJpbmcge1xuICBjb25zdCBwcmVzZXJ2ZWRDb250ZW50ID0gcHJlc2VydmVGb3JtYXR0aW5nKGNvbnRlbnQsIG5ld0Zyb250bWF0dGVyKTtcbiAgaWYgKHByZXNlcnZlZENvbnRlbnQgIT09IG51bGwpIHtcbiAgICByZXR1cm4gcHJlc2VydmVkQ29udGVudDtcbiAgfVxuXG4gIGNvbnN0IGZyb250bWF0dGVySW5mbyA9IGdldEZyb250TWF0dGVySW5mbyhjb250ZW50KTtcbiAgaWYgKE9iamVjdC5rZXlzKG5ld0Zyb250bWF0dGVyKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gY29udGVudC5zbGljZShmcm9udG1hdHRlckluZm8uY29udGVudFN0YXJ0KTtcbiAgfVxuXG4gIGNvbnN0IG5ld0Zyb250bWF0dGVyU3RyaW5nID0gc3RyaW5naWZ5WWFtbChuZXdGcm9udG1hdHRlcik7XG5cbiAgcmV0dXJuIGZyb250bWF0dGVySW5mby5leGlzdHNcbiAgICA/IGluc2VydEF0KHtcbiAgICAgICRzdHJpbmc6IGNvbnRlbnQsXG4gICAgICBlbmRJbmRleDogZnJvbnRtYXR0ZXJJbmZvLnRvLFxuICAgICAgc3RhcnRJbmRleDogZnJvbnRtYXR0ZXJJbmZvLmZyb20sXG4gICAgICBzdWJzdHJpbmc6IG5ld0Zyb250bWF0dGVyU3RyaW5nXG4gICAgfSlcbiAgICA6IGAtLS1cXG4ke25ld0Zyb250bWF0dGVyU3RyaW5nfS0tLVxcbiR7Y29udGVudH1gO1xufVxuXG5mdW5jdGlvbiBnZXRGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJXcmFwcGVyKCk6IFZhbHVlV3JhcHBlcjxGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXIgfCBudWxsPiB7XG4gIHJldHVybiBnZXRPYnNpZGlhbkxpYlN0YXRlPEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlciB8IG51bGw+KEZST05UTUFUVEVSX0ZPUk1BVFRJTkdfUFJFU0VSVkVSX1NUQVRFX0tFWSwgbnVsbCk7XG59XG5cbmZ1bmN0aW9uIHByZXNlcnZlRm9ybWF0dGluZyhjb250ZW50OiBzdHJpbmcsIG5ld0Zyb250bWF0dGVyOiBvYmplY3QpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgcHJlc2VydmVyID0gZ2V0RnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyV3JhcHBlcigpLnZhbHVlO1xuICBpZiAoIXByZXNlcnZlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQSBwcmVzZXJ2ZXIgY2FuIGJlIHN1cHBsaWVkIGJ5IGFueSBwbHVnaW4sIGFuZCB0aGlzIHJ1bnMgaW5zaWRlIHRoZSB3cml0ZSBxdWV1ZSwgd2hlcmUgYSB0aHJvdyB3ZWRnZXMgZXZlcnkgd3JpdGVcbiAgLy8gYmVoaW5kIGl0LiBTbyBhIGJyb2tlbiBwcmVzZXJ2ZXIgaXMgcmVwb3J0ZWQgYW5kIHN0ZXBwZWQgYXJvdW5kIHJhdGhlciB0aGFuIGFsbG93ZWQgdG8gdGFrZSB0aGUgd3JpdGUgZG93bi5cbiAgdHJ5IHtcbiAgICByZXR1cm4gcHJlc2VydmVyKGNvbnRlbnQsIG5ld0Zyb250bWF0dGVyKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKG5ldyBFcnJvcignVGhlIHJlZ2lzdGVyZWQgZnJvbnQgbWF0dGVyIGZvcm1hdHRpbmcgcHJlc2VydmVyIHRocmV3LiBGYWxsaW5nIGJhY2sgdG8gcmV3cml0aW5nIHRoZSB3aG9sZSBibG9jay4nLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQSxTQUFTLHFCQUFxQjtBQUM5QixTQUFTLGtCQUFrQjtBQUMzQixTQUFTLGdCQUFnQjtBQUN6QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLDJCQUEyQjtBQTBHcEMsTUFBTSw2Q0FBNkM7QUFDbkQsTUFBTSxxQkFBcUI7QUFPM0IsTUFBTSw2QkFBNkI7QUFBQSxFQUNoQixrQkFBNEIsQ0FBQztBQUFBLEVBQzdCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVixZQUFZLFFBQTRDO0FBQzdELFNBQUssMEJBQTBCLE9BQU8sMkJBQTJCO0FBQ2pFLFNBQUssMkJBQTJCLE9BQU8sNEJBQTRCO0FBQ25FLFNBQUssb0JBQW9CLE9BQU8scUJBQXFCO0FBQUEsRUFDdkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLE9BQU8sYUFBc0M7QUFDbEQsU0FBSyxZQUFZLGFBQWEsRUFBRTtBQUNoQyxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFFUSxhQUFhLE9BQXlCO0FBQzVDLFFBQUksVUFBVSxJQUFJO0FBQ2hCLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxVQUFVLFFBQVEsVUFBVSxRQUFXO0FBQ3pDLGFBQU8sS0FBSztBQUFBLElBQ2Q7QUFFQSxXQUFPLE1BQU0sUUFBUSxLQUFLLElBQ3RCLE1BQU0sV0FBVyxLQUFLLEtBQUssMEJBQzNCLG1CQUFtQixLQUFLLEtBQUssT0FBTyxLQUFLLEtBQUssRUFBRSxXQUFXLEtBQUssS0FBSztBQUFBLEVBQzNFO0FBQUEsRUFFUSxZQUFZLFNBQWlCLEtBQXFCO0FB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
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcm9udG1hdHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgYW5kIG1hbmFnaW5nIFlBTUwgZnJvbnQgbWF0dGVyIGluIE9ic2lkaWFuIG5vdGVzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlV3JhcHBlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS13cmFwcGVyJztcblxuaW1wb3J0IHsgZmlsdGVySW5QbGFjZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hcnJheSc7XG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IGluc2VydEF0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQge1xuICBnZXRGcm9udE1hdHRlckluZm8sXG4gIHBhcnNlWWFtbCxcbiAgc3RyaW5naWZ5WWFtbFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuTGliU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogQSBjb21iaW5lZCBmcm9udCBtYXR0ZXIgb2YgYSBkb2N1bWVudC5cbiAqIEl0IGlzIGEgdW5pb24gb2YgY3VzdG9tIGZyb250IG1hdHRlciwgT2JzaWRpYW4gZnJvbnQgbWF0dGVyLCBhbmQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgdHlwZSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiA9IEdlbmVyaWNPYmplY3Q8Q3VzdG9tRnJvbnRtYXR0ZXIgJiBPYnNpZGlhbkZyb250bWF0dGVyPjtcblxuLyoqXG4gKiBBIHJld3JpdGUgb2YgYSBub3RlJ3MgZnJvbnQgbWF0dGVyIHRoYXQga2VlcHMgdGhlIGF1dGhvcidzIG9yaWdpbmFsIGZvcm1hdHRpbmcgd2hlcmV2ZXIgdGhlIGNoYW5nZSBkb2VzIG5vdCByZWFjaCBpdC5cbiAqXG4gKiBJdCBpcyBoYW5kZWQgdGhlIHdob2xlIG5vdGUgYW5kIHRoZSBmcm9udCBtYXR0ZXIgdG8gd3JpdGUsIGFuZCByZXR1cm5zIHRoZSB3aG9sZSBuZXcgbm90ZSDigJQgb3IgYG51bGxgIHdoZW4gaXQgY2Fubm90IGJlIGZhaXRoZnVsLCB3aGljaCBoYW5kcyB0aGUgd3JpdGUgYmFjayB0byB7QGxpbmsgc2V0RnJvbnRtYXR0ZXJ9J3Mgb3duIHBhcnNlLWFuZC1zdHJpbmdpZnkgcGF0aC4gUmV0dXJuaW5nIGBudWxsYCBpcyBuZXZlciBhbiBlcnJvcjogaXQgaXMgaG93IHRoZSBwcmVzZXJ2ZXIgZ3VhcmFudGVlcyBpdCBjYW4gb25seSBldmVyIG1hdGNoIG9yIGltcHJvdmUgb24gdGhhdCBwYXRoLCBuZXZlciBkbyB3b3JzZSB0aGFuIGl0LlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIG5vdGUgdG8gcmV3cml0ZSB0aGUgZnJvbnQgbWF0dGVyIG9mLlxuICogQHBhcmFtIG5ld0Zyb250bWF0dGVyIC0gVGhlIGZyb250IG1hdHRlciB0byB3cml0ZS5cbiAqIEByZXR1cm5zIFRoZSBuZXcgbm90ZSwgb3IgYG51bGxgIHRvIGxldCB7QGxpbmsgc2V0RnJvbnRtYXR0ZXJ9IHdyaXRlIGl0IGluc3RlYWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlciA9ICh0aGlzOiB2b2lkLCBjb250ZW50OiBzdHJpbmcsIG5ld0Zyb250bWF0dGVyOiBvYmplY3QpID0+IG51bGwgfCBzdHJpbmc7XG5cbi8qKlxuICogQSBmcm9udCBtYXR0ZXIgb2YgYW4gT2JzaWRpYW4gZmlsZS5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2hlbHAub2JzaWRpYW4ubWQvRWRpdGluZythbmQrZm9ybWF0dGluZy9Qcm9wZXJ0aWVzI0RlZmF1bHQrcHJvcGVydGllc31cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkZyb250bWF0dGVyIHtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGFsaWFzZXMgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMgLS0gQWxpYXMgdXBkYXRlcyByZXBsYWNlIG9yIGRlbGV0ZSB0aGlzIGZyb250bWF0dGVyIHByb3BlcnR5LlxuICBhbGlhc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgY3NzY2xhc3Nlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiB0YWdzIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIGZyb250IG1hdHRlciBmb3IgcHVibGlzaGluZyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2hlbHAub2JzaWRpYW4ubWQvRWRpdGluZythbmQrZm9ybWF0dGluZy9Qcm9wZXJ0aWVzI1Byb3BlcnRpZXMrZm9yK09ic2lkaWFuK1B1Ymxpc2h9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5QdWJsaXNoRnJvbnRtYXR0ZXIge1xuICAvKipcbiAgICogQSBjb3ZlciBpbWFnZSBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBjb3Zlcj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaW1hZ2UgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGVybWFuZW50IGxpbmsgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGVybWFsaW5rPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBub3RlIGlzIHB1Ymxpc2hlZC5cbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmcm9udCBtYXR0ZXIgb2JqZWN0IHRvIHJlbW92ZSB0aGUgZW1wdHkgdmFsdWVzIGZyb20uIEl0IGlzIG1vZGlmaWVkIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXI6IEdlbmVyaWNPYmplY3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVtb3ZlIGFycmF5cyB0aGF0IGFyZSBlbXB0eSwgaW5jbHVkaW5nIHRoZSBvbmVzIHRoYXQgYmVjYW1lIGVtcHR5IGFmdGVyIHRoZWlyIG93biBpdGVtcyB3ZXJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlbW92ZUVtcHR5QXJyYXlzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgcGxhaW4gb2JqZWN0cyB0aGF0IGFyZSBlbXB0eSwgaW5jbHVkaW5nIHRoZSBvbmVzIHRoYXQgYmVjYW1lIGVtcHR5IGFmdGVyIHRoZWlyIG93biBwcm9wZXJ0aWVzIHdlcmUgcmVtb3ZlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVtb3ZlRW1wdHlPYmplY3RzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgYG51bGxgIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIEJvdGggYXJlIHRyZWF0ZWQgdGhlIHNhbWU6IHRoZXkgYXJlIHRoZSB0d28gd2F5cyBhIGtleSBjYW4gYmUgcHJlc2VudCBidXQgY2Fycnkgbm8gdmFsdWUsIGFuZCBgdW5kZWZpbmVkYCBjYW5ub3Qgc3Vydml2ZSBhIFlBTUwgcm91bmQtdHJpcCBhbnl3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlbW92ZU51bGxzPzogYm9vbGVhbjtcbn1cblxuY29uc3QgRlJPTlRNQVRURVJfRk9STUFUVElOR19QUkVTRVJWRVJfU1RBVEVfS0VZID0gJ2Zyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlcic7XG5jb25zdCBLRVlfUEFUSF9TRVBBUkFUT1IgPSAnLic7XG5cbi8qKlxuICogUmVtb3ZlcyBlbXB0eSB2YWx1ZXMgZnJvbSBhIGZyb250IG1hdHRlciBvYmplY3QsIHJlY3Vyc2luZyBpbnRvIG5lc3RlZCBvYmplY3RzIGFuZCBhcnJheXMuXG4gKlxuICogVGhlIHRyYXZlcnNhbCBpcyBib3R0b20tdXA6IGEgY29udGFpbmVyIGlzIHBydW5lZCBiZWZvcmUgaXQgaXMgaXRzZWxmIHRlc3RlZCBmb3IgZW1wdGluZXNzLCBzbyBhIGNvbnRhaW5lciB0aGF0IGhvbGRzIG5vdGhpbmcgYnV0IGVtcHR5IHZhbHVlcyBpcyByZW1vdmVkIGFzIHdlbGwgd2hlbiB0aGUgbWF0Y2hpbmcgb3B0aW9uIGlzIGVuYWJsZWQuXG4gKi9cbmNsYXNzIEVtcHR5RnJvbnRtYXR0ZXJWYWx1ZVJlbW92ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbW92ZWRLZXlQYXRoczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRSZW1vdmVFbXB0eUFycmF5czogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRSZW1vdmVFbXB0eU9iamVjdHM6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvdWxkUmVtb3ZlTnVsbHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcmVtb3ZlciwgcmVzb2x2aW5nIHRoZSBwcm92aWRlZCBvcHRpb25zIGFnYWluc3QgdGhlIGRlZmF1bHRzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbW92aW5nIHRoZSBlbXB0eSBmcm9udCBtYXR0ZXIgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUmVtb3ZlRW1wdHlGcm9udG1hdHRlclZhbHVlc1BhcmFtcykge1xuICAgIHRoaXMuc2hvdWxkUmVtb3ZlRW1wdHlBcnJheXMgPSBwYXJhbXMuc2hvdWxkUmVtb3ZlRW1wdHlBcnJheXMgPz8gZmFsc2U7XG4gICAgdGhpcy5zaG91bGRSZW1vdmVFbXB0eU9iamVjdHMgPSBwYXJhbXMuc2hvdWxkUmVtb3ZlRW1wdHlPYmplY3RzID8/IGZhbHNlO1xuICAgIHRoaXMuc2hvdWxkUmVtb3ZlTnVsbHMgPSBwYXJhbXMuc2hvdWxkUmVtb3ZlTnVsbHMgPz8gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgZW1wdHkgdmFsdWVzIGZyb20gdGhlIGdpdmVuIGZyb250IG1hdHRlciBvYmplY3QsIG1vZGlmeWluZyBpdCBpbiBwbGFjZS5cbiAgICpcbiAgICogQHBhcmFtIGZyb250bWF0dGVyIC0gVGhlIGZyb250IG1hdHRlciBvYmplY3QgdG8gcmVtb3ZlIHRoZSBlbXB0eSB2YWx1ZXMgZnJvbS5cbiAgICogQHJldHVybnMgVGhlIGtleSBwYXRocyBvZiB0aGUgcmVtb3ZlZCB2YWx1ZXMsIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgcmVtb3ZlZC5cbiAgICovXG4gIHB1YmxpYyByZW1vdmUoZnJvbnRtYXR0ZXI6IEdlbmVyaWNPYmplY3QpOiBzdHJpbmdbXSB7XG4gICAgdGhpcy5wcnVuZU9iamVjdChmcm9udG1hdHRlciwgJycpO1xuICAgIHJldHVybiB0aGlzLnJlbW92ZWRLZXlQYXRocztcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJc0VtcHR5KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3VsZFJlbW92ZU51bGxzO1xuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5sZW5ndGggPT09IDAgJiYgdGhpcy5zaG91bGRSZW1vdmVFbXB0eUFycmF5c1xuICAgICAgOiBjaGVja0lzUGxhaW5PYmplY3QodmFsdWUpICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDAgJiYgdGhpcy5zaG91bGRSZW1vdmVFbXB0eU9iamVjdHM7XG4gIH1cblxuICBwcml2YXRlIGpvaW5LZXlQYXRoKGtleVBhdGg6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBrZXlQYXRoID8gYCR7a2V5UGF0aH0ke0tFWV9QQVRIX1NFUEFSQVRPUn0ke2tleX1gIDoga2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBwcnVuZSh2YWx1ZTogdW5rbm93biwga2V5UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aGlzLnBydW5lQXJyYXkodmFsdWUsIGtleVBhdGgpO1xuICAgIH0gZWxzZSBpZiAoY2hlY2tJc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgdGhpcy5wcnVuZU9iamVjdCh2YWx1ZSwga2V5UGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcnVuZUFycmF5KGFycmF5OiB1bmtub3duW10sIGtleVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGZpbHRlckluUGxhY2UoYXJyYXksIChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgaXRlbUtleVBhdGggPSB0aGlzLmpvaW5LZXlQYXRoKGtleVBhdGgsIFN0cmluZyhpbmRleCkpO1xuICAgICAgdGhpcy5wcnVuZShpdGVtLCBpdGVtS2V5UGF0aCk7XG4gICAgICBpZiAoIXRoaXMuY2hlY2tJc0VtcHR5KGl0ZW0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbW92ZWRLZXlQYXRocy5wdXNoKGl0ZW1LZXlQYXRoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJ1bmVPYmplY3QoJG9iamVjdDogR2VuZXJpY09iamVjdCwga2V5UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoJG9iamVjdCkpIHtcbiAgICAgIGNvbnN0IHZhbHVlS2V5UGF0aCA9IHRoaXMuam9pbktleVBhdGgoa2V5UGF0aCwga2V5KTtcbiAgICAgIHRoaXMucHJ1bmUodmFsdWUsIHZhbHVlS2V5UGF0aCk7XG4gICAgICBpZiAoIXRoaXMuY2hlY2tJc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW1vdmVkS2V5UGF0aHMucHVzaCh2YWx1ZUtleVBhdGgpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICAgICAgZGVsZXRlICRvYmplY3Rba2V5XTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgdmFsdWUgaXMgYSBwbGFpbiBvYmplY3QsIGkuZS4gYW4gb2JqZWN0IGxpdGVyYWwgcmF0aGVyIHRoYW4gYW4gYXJyYXkgb3IgYSBjbGFzcyBpbnN0YW5jZS5cbiAqXG4gKiBgcGFyc2VZYW1sKClgIHR1cm5zIGEgWUFNTCB0aW1lc3RhbXAgaW50byBhIHtAbGluayBEYXRlfSwgd2hpY2ggaGFzIG5vIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMsIHNvIGEgcGxhaW4gYHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdgIHRlc3Qgd291bGQgcmVwb3J0IGV2ZXJ5IGRhdGUgYXMgYW4gZW1wdHkgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc1BsYWluT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgR2VuZXJpY09iamVjdCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBjb250ZW50IHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250bWF0dGVyIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHN0cmluZyB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KGNvbnRlbnQ6IHN0cmluZyk6IENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+IHtcbiAgY29uc3QgZnJvbnRtYXR0ZXJJbmZvID0gZ2V0RnJvbnRNYXR0ZXJJbmZvKGNvbnRlbnQpO1xuICByZXR1cm4gKHBhcnNlWWFtbChmcm9udG1hdHRlckluZm8uZnJvbnRtYXR0ZXIpID8/IHt9KSBhcyBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPjtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIHtAbGluayBGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJ9IGV2ZXJ5IGZyb250LW1hdHRlciB3cml0ZSBpbiB0aGlzIGxpYnJhcnkgcm91dGVzIHRocm91Z2guXG4gKlxuICogVGhlcmUgaXMgYXQgbW9zdCBvbmUsIHNoYXJlZCBieSBldmVyeSBwbHVnaW4gbG9hZGVkIGluIHRoZSBzYW1lIHJlYWxtIOKAlCBsaWtlIGV2ZXJ5IG90aGVyIHJlZ2lzdHJhdGlvbiBpbiB0aGlzIGxpYnJhcnkgaXQgbGl2ZXMgaW4gdGhlIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5MaWJgIGJhZyDigJQgc28gYSBzaW5nbGUgY2FsbCBtYWtlcyBldmVyeSB3cml0ZSB0aGlzIGxpYnJhcnkgcGVyZm9ybXMgZm9ybWF0dGluZy1wcmVzZXJ2aW5nLCBgcHJvY2Vzc0Zyb250bWF0dGVyKClgIGFuZCBgYXBwbHlGaWxlQ2hhbmdlcygpYCBpbmNsdWRlZC4gUGFzcyBgbnVsbGAgdG8gdW5yZWdpc3Rlci5cbiAqXG4gKiBUaGUgcHJlc2VydmVyIGlzIE5PVCByZWdpc3RlcmVkIGJ5IGRlZmF1bHQsIGFuZCB0aGF0IGlzIGEgYnVuZGxlLXNpemUgZGVjaXNpb24gcmF0aGVyIHRoYW4gYSBkb3VidCBhYm91dCB0aGUgZW5naW5lOiB0aGUgb25lIHRoaXMgbGlicmFyeSBzaGlwcyBuZWVkcyB0aGUgYHlhbWxgIHBhY2thZ2UncyBDU1QgQVBJLCB3aGljaCBPYnNpZGlhbiBkb2VzIG5vdCBoYW5kIHRvIHBsdWdpbnMgYW5kIHdoaWNoIGNvc3RzIGFib3V0IDEwMCBLQiBvZiBhIHBsdWdpbidzIGBtYWluLmpzYC4gQSBwbHVnaW4gdGhhdCB3YW50cyBpdCBjYWxscyBgZW5hYmxlRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmF0aW9uKClgIGZyb20gYEBtbmFvdW1vdi9vYnNpZGlhbi1saWIvZnJvbnRtYXR0ZXItZm9ybWF0dGluZ2AsIGFuZCBwYXlzIGZvciBpdCBvbmx5IHRoZW4uXG4gKlxuICogQHBhcmFtIHByZXNlcnZlciAtIFRoZSBwcmVzZXJ2ZXIgdG8gcm91dGUgZnJvbnQtbWF0dGVyIHdyaXRlcyB0aHJvdWdoLCBvciBgbnVsbGAgdG8gdW5yZWdpc3RlciB0aGUgY3VycmVudCBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlcihwcmVzZXJ2ZXI6IEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlciB8IG51bGwpOiB2b2lkIHtcbiAgZ2V0RnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyV3JhcHBlcigpLnZhbHVlID0gcHJlc2VydmVyO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgdGhlIGVtcHR5IHZhbHVlcyBmcm9tIGEgZnJvbnQgbWF0dGVyIG9iamVjdCwgYXQgYW55IG5lc3RpbmcgZGVwdGguXG4gKlxuICogQnkgZGVmYXVsdCBvbmx5IGVtcHR5IHN0cmluZ3MgYXJlIHJlbW92ZWQg4oCUIGJvdGggYXMgcHJvcGVydHkgdmFsdWVzIGFuZCBhcyBhcnJheSBpdGVtcy4gYG51bGxgLCBgdW5kZWZpbmVkYCwgZW1wdHkgYXJyYXlzIGFuZCBlbXB0eSBvYmplY3RzIGFyZSBrZXB0IHVubGVzcyB0aGUgY29ycmVzcG9uZGluZyBvcHRpb24gaXMgZW5hYmxlZC5cbiAqXG4gKiBUaGUgb2JqZWN0IGlzIG1vZGlmaWVkIGluIHBsYWNlLCBzbyB0aGUgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBzdHJhaWdodCBmcm9tIGEgYHByb2Nlc3NGcm9udG1hdHRlcigpYCBjYWxsYmFjay5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbW92aW5nIHRoZSBlbXB0eSBmcm9udCBtYXR0ZXIgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIGRvdC1zZXBhcmF0ZWQga2V5IHBhdGhzIG9mIHRoZSByZW1vdmVkIHZhbHVlcywgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSByZW1vdmVkLiBBbiBhcnJheSBpdGVtIGlzIHJlcG9ydGVkIGJ5IGl0cyBpbmRleCB3aXRoaW4gdGhlIGFycmF5IGFzIGl0IHdhcyBiZWZvcmUgYW55IG9mIGl0cyBzaWJsaW5ncyB3ZXJlIHJlbW92ZWQsIGUuZy4gYHRhZ3MuMGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzKHBhcmFtczogUmVtb3ZlRW1wdHlGcm9udG1hdHRlclZhbHVlc1BhcmFtcyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIG5ldyBFbXB0eUZyb250bWF0dGVyVmFsdWVSZW1vdmVyKHBhcmFtcykucmVtb3ZlKHBhcmFtcy5mcm9udG1hdHRlcik7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gY29udGVudCBzdHJpbmcuXG4gKlxuICogV2hlbiBhIHtAbGluayBGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJ9IGlzIHJlZ2lzdGVyZWQgKHNlZSB7QGxpbmsgcmVnaXN0ZXJGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJ9KSB0aGUgd3JpdGUgZ29lcyB0aHJvdWdoIGl0IGZpcnN0LCBzbyB0aGUgcGFydHMgb2YgdGhlIGJsb2NrIHRoZSBjaGFuZ2UgZG9lcyBub3QgcmVhY2gga2VlcCB0aGUgYnl0ZXMgdGhlaXIgYXV0aG9yIHdyb3RlIOKAlCB0aGVpciBjb21tZW50cywgcXVvdGluZywgYmxhbmsgbGluZXMgYW5kIGluZGVudGF0aW9uLiBXaXRob3V0IG9uZSwgYW5kIHdoZW5ldmVyIHRoZSBwcmVzZXJ2ZXIgcmVwb3J0cyBpdCBjYW5ub3QgYmUgZmFpdGhmdWwsIHRoZSB3aG9sZSBibG9jayBpcyBwYXJzZWQgYW5kIHdyaXR0ZW4gb3V0IGFnYWluLCB3aGljaCBpcyB3aGF0IE9ic2lkaWFuJ3Mgb3duIGBwcm9jZXNzRnJvbnRNYXR0ZXIoKWAgZG9lcy5cbiAqXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHN0cmluZyB0byBzZXQgdGhlIGZyb250IG1hdHRlciBpbi5cbiAqIEBwYXJhbSBuZXdGcm9udG1hdHRlciAtIFRoZSBuZXcgZnJvbnQgbWF0dGVyIHRvIHNldC5cbiAqIEByZXR1cm5zIFRoZSBuZXcgY29udGVudCBzdHJpbmcgd2l0aCB0aGUgZnJvbnQgbWF0dGVyIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZyb250bWF0dGVyKGNvbnRlbnQ6IHN0cmluZywgbmV3RnJvbnRtYXR0ZXI6IG9iamVjdCk6IHN0cmluZyB7XG4gIGNvbnN0IHByZXNlcnZlZENvbnRlbnQgPSBwcmVzZXJ2ZUZvcm1hdHRpbmcoY29udGVudCwgbmV3RnJvbnRtYXR0ZXIpO1xuICBpZiAocHJlc2VydmVkQ29udGVudCAhPT0gbnVsbCkge1xuICAgIHJldHVybiBwcmVzZXJ2ZWRDb250ZW50O1xuICB9XG5cbiAgY29uc3QgZnJvbnRtYXR0ZXJJbmZvID0gZ2V0RnJvbnRNYXR0ZXJJbmZvKGNvbnRlbnQpO1xuICBpZiAoT2JqZWN0LmtleXMobmV3RnJvbnRtYXR0ZXIpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjb250ZW50LnNsaWNlKGZyb250bWF0dGVySW5mby5jb250ZW50U3RhcnQpO1xuICB9XG5cbiAgY29uc3QgbmV3RnJvbnRtYXR0ZXJTdHJpbmcgPSBzdHJpbmdpZnlZYW1sKG5ld0Zyb250bWF0dGVyKTtcblxuICByZXR1cm4gZnJvbnRtYXR0ZXJJbmZvLmV4aXN0c1xuICAgID8gaW5zZXJ0QXQoe1xuICAgICAgJHN0cmluZzogY29udGVudCxcbiAgICAgIGVuZEluZGV4OiBmcm9udG1hdHRlckluZm8udG8sXG4gICAgICBzdGFydEluZGV4OiBmcm9udG1hdHRlckluZm8uZnJvbSxcbiAgICAgIHN1YnN0cmluZzogbmV3RnJvbnRtYXR0ZXJTdHJpbmdcbiAgICB9KVxuICAgIDogYC0tLVxcbiR7bmV3RnJvbnRtYXR0ZXJTdHJpbmd9LS0tXFxuJHtjb250ZW50fWA7XG59XG5cbmZ1bmN0aW9uIGdldEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlcldyYXBwZXIoKTogVmFsdWVXcmFwcGVyPEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlciB8IG51bGw+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuTGliU3RhdGU8RnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyIHwgbnVsbD4oRlJPTlRNQVRURVJfRk9STUFUVElOR19QUkVTRVJWRVJfU1RBVEVfS0VZLCBudWxsKTtcbn1cblxuZnVuY3Rpb24gcHJlc2VydmVGb3JtYXR0aW5nKGNvbnRlbnQ6IHN0cmluZywgbmV3RnJvbnRtYXR0ZXI6IG9iamVjdCk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCBwcmVzZXJ2ZXIgPSBnZXRGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJXcmFwcGVyKCkudmFsdWU7XG4gIGlmICghcHJlc2VydmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBIHByZXNlcnZlciBjYW4gYmUgc3VwcGxpZWQgYnkgYW55IHBsdWdpbiwgYW5kIHRoaXMgcnVucyBpbnNpZGUgdGhlIHdyaXRlIHF1ZXVlLCB3aGVyZSBhIHRocm93IHdlZGdlcyBldmVyeSB3cml0ZVxuICAvLyBiZWhpbmQgaXQuIFNvIGEgYnJva2VuIHByZXNlcnZlciBpcyByZXBvcnRlZCBhbmQgc3RlcHBlZCBhcm91bmQgcmF0aGVyIHRoYW4gYWxsb3dlZCB0byB0YWtlIHRoZSB3cml0ZSBkb3duLlxuICB0cnkge1xuICAgIHJldHVybiBwcmVzZXJ2ZXIoY29udGVudCwgbmV3RnJvbnRtYXR0ZXIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IobmV3IEVycm9yKCdUaGUgcmVnaXN0ZXJlZCBmcm9udCBtYXR0ZXIgZm9ybWF0dGluZyBwcmVzZXJ2ZXIgdGhyZXcuIEZhbGxpbmcgYmFjayB0byByZXdyaXRpbmcgdGhlIHdob2xlIGJsb2NrLicsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsMkJBQTJCO0FBMkdwQyxNQUFNLDZDQUE2QztBQUNuRCxNQUFNLHFCQUFxQjtBQU8zQixNQUFNLDZCQUE2QjtBQUFBLEVBQ2hCLGtCQUE0QixDQUFDO0FBQUEsRUFDN0I7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9WLFlBQVksUUFBNEM7QUFDN0QsU0FBSywwQkFBMEIsT0FBTywyQkFBMkI7QUFDakUsU0FBSywyQkFBMkIsT0FBTyw0QkFBNEI7QUFDbkUsU0FBSyxvQkFBb0IsT0FBTyxxQkFBcUI7QUFBQSxFQUN2RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sT0FBTyxhQUFzQztBQUNsRCxTQUFLLFlBQVksYUFBYSxFQUFFO0FBQ2hDLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQSxFQUVRLGFBQWEsT0FBeUI7QUFDNUMsUUFBSSxVQUFVLElBQUk7QUFDaEIsYUFBTztBQUFBLElBQ1Q7QUFFQSxRQUFJLFVBQVUsUUFBUSxVQUFVLFFBQVc7QUFDekMsYUFBTyxLQUFLO0FBQUEsSUFDZDtBQUVBLFdBQU8sTUFBTSxRQUFRLEtBQUssSUFDdEIsTUFBTSxXQUFXLEtBQUssS0FBSywwQkFDM0IsbUJBQW1CLEtBQUssS0FBSyxPQUFPLEtBQUssS0FBSyxFQUFFLFdBQVcsS0FBSyxLQUFLO0FBQUEsRUFDM0U7QUFBQSxFQUVRLFlBQVksU0FBaUIsS0FBcUI7QUFDeEQsV0FBTyxVQUFVLEdBQUcsT0FBTyxHQUFHLGtCQUFrQixHQUFHLEdBQUcsS0FBSztBQUFBLEVBQzdEO0FBQUEsRUFFUSxNQUFNLE9BQWdCLFNBQXVCO0FBQ25ELFFBQUksTUFBTSxRQUFRLEtBQUssR0FBRztBQUN4QixXQUFLLFdBQVcsT0FBTyxPQUFPO0FBQUEsSUFDaEMsV0FBVyxtQkFBbUIsS0FBSyxHQUFHO0FBQ3BDLFdBQUssWUFBWSxPQUFPLE9BQU87QUFBQSxJQUNqQztBQUFBLEVBQ0Y7QUFBQSxFQUVRLFdBQVcsT0FBa0IsU0FBdUI7QUFDMUQsa0JBQWMsT0FBTyxDQUFDLE1BQU0sVUFBVTtBQUNwQyxZQUFNLGNBQWMsS0FBSyxZQUFZLFNBQVMsT0FBTyxLQUFLLENBQUM7QUFDM0QsV0FBSyxNQUFNLE1BQU0sV0FBVztBQUM1QixVQUFJLENBQUMsS0FBSyxhQUFhLElBQUksR0FBRztBQUM1QixlQUFPO0FBQUEsTUFDVDtBQUVBLFdBQUssZ0JBQWdCLEtBQUssV0FBVztBQUNyQyxhQUFPO0FBQUEsSUFDVCxDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRVEsWUFBWSxTQUF3QixTQUF1QjtBQUNqRSxlQUFXLENBQUMsS0FBSyxLQUFLLEtBQUssT0FBTyxRQUFRLE9BQU8sR0FBRztBQUNsRCxZQUFNLGVBQWUsS0FBSyxZQUFZLFNBQVMsR0FBRztBQUNsRCxXQUFLLE1BQU0sT0FBTyxZQUFZO0FBQzlCLFVBQUksQ0FBQyxLQUFLLGFBQWEsS0FBSyxHQUFHO0FBQzdCO0FBQUEsTUFDRjtBQUVBLFdBQUssZ0JBQWdCLEtBQUssWUFBWTtBQUV0QyxhQUFPLFFBQVEsR0FBRztBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUNGO0FBVU8sU0FBUyxtQkFBbUIsT0FBd0M7QUFDekUsU0FBTyxPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQVEsT0FBTyxlQUFlLEtBQUssTUFBTSxPQUFPO0FBQ2hHO0FBU08sU0FBUyxpQkFBOEMsU0FBeUQ7QUFDckgsUUFBTSxrQkFBa0IsbUJBQW1CLE9BQU87QUFDbEQsU0FBUSxVQUFVLGdCQUFnQixXQUFXLEtBQUssQ0FBQztBQUNyRDtBQVdPLFNBQVMsdUNBQXVDLFdBQXdEO0FBQzdHLDJDQUF5QyxFQUFFLFFBQVE7QUFDckQ7QUFZTyxTQUFTLDZCQUE2QixRQUFzRDtBQUNqRyxTQUFPLElBQUksNkJBQTZCLE1BQU0sRUFBRSxPQUFPLE9BQU8sV0FBVztBQUMzRTtBQVdPLFNBQVMsZUFBZSxTQUFpQixnQkFBZ0M7QUFDOUUsUUFBTSxtQkFBbUIsbUJBQW1CLFNBQVMsY0FBYztBQUNuRSxNQUFJLHFCQUFxQixNQUFNO0FBQzdCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxrQkFBa0IsbUJBQW1CLE9BQU87QUFDbEQsTUFBSSxPQUFPLEtBQUssY0FBYyxFQUFFLFdBQVcsR0FBRztBQUM1QyxXQUFPLFFBQVEsTUFBTSxnQkFBZ0IsWUFBWTtBQUFBLEVBQ25EO0FBRUEsUUFBTSx1QkFBdUIsY0FBYyxjQUFjO0FBRXpELFNBQU8sZ0JBQWdCLFNBQ25CLFNBQVM7QUFBQSxJQUNULFNBQVM7QUFBQSxJQUNULFVBQVUsZ0JBQWdCO0FBQUEsSUFDMUIsWUFBWSxnQkFBZ0I7QUFBQSxJQUM1QixXQUFXO0FBQUEsRUFDYixDQUFDLElBQ0M7QUFBQSxFQUFRLG9CQUFvQjtBQUFBLEVBQVEsT0FBTztBQUNqRDtBQUVBLFNBQVMsMkNBQWdHO0FBQ3ZHLFNBQU8sb0JBQTJELDRDQUE0QyxJQUFJO0FBQ3BIO0FBRUEsU0FBUyxtQkFBbUIsU0FBaUIsZ0JBQXVDO0FBQ2xGLFFBQU0sWUFBWSx5Q0FBeUMsRUFBRTtBQUM3RCxNQUFJLENBQUMsV0FBVztBQUNkLFdBQU87QUFBQSxFQUNUO0FBSUEsTUFBSTtBQUNGLFdBQU8sVUFBVSxTQUFTLGNBQWM7QUFBQSxFQUMxQyxTQUFTLE9BQU87QUFDZCxlQUFXLElBQUksTUFBTSxzR0FBc0csRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQzVJLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -3,8 +3,8 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- const LIBRARY_VERSION = "7.1.0";
7
- const LIBRARY_STYLES = ".obsidian-lib.code-highlighter-component textarea, .obsidian-lib.code-highlighter-component pre, .obsidian-lib.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-lib.code-highlighter-component textarea, .obsidian-lib.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-lib.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-lib.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-lib.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-lib.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-lib.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-lib-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-lib-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-lib-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-lib-lock-indicator-flash {\n animation: obsidian-lib-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-lib input[type=url] {\n height: var(--input-height);\n}\n.obsidian-lib input[type=month],\n.obsidian-lib input[type=tel],\n.obsidian-lib input[type=time],\n.obsidian-lib input[type=url],\n.obsidian-lib input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-lib input[type=month]:hover,\n .obsidian-lib input[type=tel]:hover,\n .obsidian-lib input[type=time]:hover,\n .obsidian-lib input[type=url]:hover,\n .obsidian-lib input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-lib input[type=month]:active, .obsidian-lib input[type=month]:focus,\n.obsidian-lib input[type=tel]:active,\n.obsidian-lib input[type=tel]:focus,\n.obsidian-lib input[type=time]:active,\n.obsidian-lib input[type=time]:focus,\n.obsidian-lib input[type=url]:active,\n.obsidian-lib input[type=url]:focus,\n.obsidian-lib input[type=week]:active,\n.obsidian-lib input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-lib input[type=month]:active, .obsidian-lib input[type=month]:focus, .obsidian-lib input[type=month]:focus-visible,\n.obsidian-lib input[type=tel]:active,\n.obsidian-lib input[type=tel]:focus,\n.obsidian-lib input[type=tel]:focus-visible,\n.obsidian-lib input[type=time]:active,\n.obsidian-lib input[type=time]:focus,\n.obsidian-lib input[type=time]:focus-visible,\n.obsidian-lib input[type=url]:active,\n.obsidian-lib input[type=url]:focus,\n.obsidian-lib input[type=url]:focus-visible,\n.obsidian-lib input[type=week]:active,\n.obsidian-lib input[type=week]:focus,\n.obsidian-lib input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-lib input[type=month]::placeholder,\n.obsidian-lib input[type=tel]::placeholder,\n.obsidian-lib input[type=time]::placeholder,\n.obsidian-lib input[type=url]::placeholder,\n.obsidian-lib input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-lib input[type=month],\n.obsidian-lib input[type=time],\n.obsidian-lib input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-lib input[type=month]::-webkit-datetime-edit-text,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-text,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-lib input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-lib input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-lib input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-lib input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-lib input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-lib input[type=month], .is-rtl .obsidian-lib input[type=month], .rtl .obsidian-lib input[type=month],\n.mod-rtl .obsidian-lib input[type=time],\n.is-rtl .obsidian-lib input[type=time],\n.rtl .obsidian-lib input[type=time],\n.mod-rtl .obsidian-lib input[type=week],\n.is-rtl .obsidian-lib input[type=week],\n.rtl .obsidian-lib input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-lib input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\nprogress.obsidian-lib.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-lib-minimized-modal-bar-pulse {\n 0%, 100% {\n box-shadow: var(--shadow-s);\n }\n 50% {\n box-shadow: 0 0 0 2px var(--interactive-accent);\n }\n}\n@keyframes obsidian-lib-minimized-modal-bar-attention {\n 0% {\n box-shadow: 0 0 0 0 var(--interactive-accent);\n }\n 40% {\n box-shadow: 0 0 0 4px var(--interactive-accent);\n }\n 100% {\n box-shadow: var(--shadow-s);\n }\n}\n.obsidian-lib.minimizable-modal .minimize-button {\n position: absolute;\n top: var(--size-4-2);\n right: calc(var(--size-4-2) + var(--size-4-9));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-lib.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-lib.minimized-modal-bar {\n position: fixed;\n right: var(--size-4-4);\n bottom: calc(var(--size-4-4) + var(--size-4-8));\n z-index: var(--layer-modal);\n display: flex;\n align-items: center;\n gap: var(--size-4-2);\n padding: var(--size-4-2) var(--size-4-3);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-m);\n background: var(--background-secondary);\n box-shadow: var(--shadow-s);\n cursor: pointer;\n animation: obsidian-lib-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-lib.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-lib.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-lib-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-lib.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-lib.minimized-modal-bar .restore-button,\n.obsidian-lib.minimized-modal-bar .cancel-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-lib.minimized-modal-bar .restore-button:hover,\n.obsidian-lib.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-lib.modal-commands {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2-2);\n padding: var(--size-4-2) var(--size-4-3);\n border-top: 1px solid var(--background-modifier-border);\n}\n.obsidian-lib.modal-command-control {\n margin-inline-start: var(--size-2-2);\n vertical-align: middle;\n}\n.obsidian-lib.modal-command {\n display: inline-flex;\n align-items: baseline;\n gap: var(--size-2-2);\n min-height: var(--size-4-8);\n padding: var(--size-2-1) var(--size-4-2);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-s);\n background-color: var(--background-secondary);\n color: var(--text-muted);\n font-size: var(--font-ui-smaller);\n white-space: nowrap;\n cursor: pointer;\n}\n.obsidian-lib.modal-command:hover:not(:disabled) {\n background-color: var(--background-modifier-hover);\n color: var(--text-normal);\n}\n.obsidian-lib.modal-command.is-active {\n border-color: var(--interactive-accent);\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n.obsidian-lib.modal-command:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.obsidian-lib.modal-command-hotkey {\n color: var(--text-faint);\n font-size: var(--font-smallest);\n}\n.modal-command.is-active .obsidian-lib.modal-command-hotkey {\n opacity: 0.7;\n color: var(--text-on-accent);\n}\n\n.obsidian-lib.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-lib.multiple-dropdown-component select,\n.obsidian-lib.multiple-dropdown-component select:focus,\n.obsidian-lib.multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-lib.multiple-dropdown-component select option:checked,\n.obsidian-lib.multiple-dropdown-component select:focus option:checked,\n.obsidian-lib.multiple-dropdown-component .dropdown option:checked {\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n\n.obsidian-lib.plugin-notice-name {\n color: var(--text-accent);\n display: inline-block;\n font-weight: var(--font-bold);\n margin-bottom: var(--size-4-2);\n}\n.obsidian-lib.plugin-notice-name code {\n color: inherit;\n}\n.obsidian-lib.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-lib.plugin-notice-content .obsidian-lib.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-lib.plugin-notice-content .obsidian-lib.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-lib.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-lib.plugin-notice-requires-explicit-close.notice .obsidian-lib.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-lib.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-lib.plugin-suggestion-banner {\n background-color: var(--background-secondary);\n border-left: var(--size-2-1) solid var(--text-accent);\n border-radius: var(--radius-s);\n display: flex;\n flex-direction: column;\n gap: var(--size-4-2);\n margin-bottom: var(--size-4-4);\n padding: var(--size-4-3) var(--size-4-4);\n}\n.obsidian-lib.plugin-suggestion-banner button {\n width: fit-content;\n}\n.obsidian-lib.plugin-suggestion-notice-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-4-2);\n margin-top: var(--size-4-2);\n}\n\n.obsidian-lib.popover {\n max-width: min(420px, 90vw);\n min-width: 320px;\n padding: var(--size-4-2) var(--size-4-3);\n position: absolute;\n z-index: var(--layer-menu);\n}\n.obsidian-lib.popover .setting-item {\n align-items: center;\n border-top: none;\n gap: var(--size-4-2);\n padding: var(--size-2-1) 0;\n}\n.obsidian-lib.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-lib.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-lib.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-lib.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-lib button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-lib.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-lib :invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-lib input.metadata-input-text:active:invalid:not(.untouched), .obsidian-lib input.metadata-input-text:focus-visible:invalid:not(.untouched), .obsidian-lib input.metadata-input-text:focus:invalid:not(.untouched),\n.obsidian-lib input[type=date]:active:invalid:not(.untouched),\n.obsidian-lib input[type=date]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=date]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:active:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=email]:active:invalid:not(.untouched),\n.obsidian-lib input[type=email]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=email]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=number]:active:invalid:not(.untouched),\n.obsidian-lib input[type=number]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=number]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=password]:active:invalid:not(.untouched),\n.obsidian-lib input[type=password]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=password]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=search]:active:invalid:not(.untouched),\n.obsidian-lib input[type=search]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=search]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=text]:active:invalid:not(.untouched),\n.obsidian-lib input[type=text]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=text]:focus:invalid:not(.untouched),\n.obsidian-lib textarea:active:invalid:not(.untouched),\n.obsidian-lib textarea:focus-visible:invalid:not(.untouched),\n.obsidian-lib textarea:focus:invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-lib.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-lib.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-lib.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/editor-lock.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/minimizable-modal.scss%22,%22../src/styles/modal-commands.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-notice.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/plugin-suggestion.scss%22,%22../src/styles/popover.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tldraw-button-color-workaround.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACvCN;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAMJ;EACE;IACE;IACA;;;AAIJ;EACE;;;ACvBA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;AC/CK;EACP;;;ACJJ;EACE;IAEE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AASN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOA;EACE;;AAOF;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;;ACpGN;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;;AAMF;EACE;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;;AAGA;EACE;EACA;;;ACpEF;EACE;EACA;;;ACCF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACZN;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;ACrCF;EACE;;;ACFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;;;ACjBF;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACUN;EACE;;;ACZE;EACE;;;ACKJ;EAPA;;AAuBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAvBJ;;AA6BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-lib%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20Lock%20indicators%20shown%20in%20the%20tab%20header%20and%20the%20status%20bar%20while%20a%20note%20is%20locked.%20These%20live%20in%5Cn//%20global%20Obsidian%20DOM%20(tab%20header%20/%20status%20bar),%20so%20they%20are%20styled%20with%20a%20global%20class%20rather%20than%5Cn//%20scoped%20under%20%60.obsidian-lib%60.%5Cn.obsidian-lib-lock-indicator%20%7B%5Cn%20%20display:%20inline-flex;%5Cn%20%20align-items:%20center;%5Cn%20%20color:%20var(--text-muted);%5Cn%5Cn%20%20.svg-icon%20%7B%5Cn%20%20%20%20width:%20var(--icon-s);%5Cn%20%20%20%20height:%20var(--icon-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn//%20Flashed%20on%20every%20lock%20indicator%20(tab%20header,%20view%20action,%20status%20bar)%20when%20the%20user%20attempts%20to%5Cn//%20type%20in%20a%20locked%20note,%20to%20make%20clear%20the%20note%20is%20read-only.%20Re-added%20per%20rejected%20keystroke.%5Cn@keyframes%20obsidian-lib-lock-indicator-flash%20%7B%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20color:%20var(--text-error);%5Cn%20%20%20%20transform:%20scale(1.4);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-lib-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-lib-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20Not%20%60&progress%60:%20that%20APPENDS%20the%20element%20name%20to%20the%20parent%20class,%20producing%20one%20long%20class%20that%20matches%5Cn%20%20//%20nothing.%20The%20element%20type%20has%20to%20lead%20the%20compound%20selector%20instead.%5Cn%20%20@at-root%20progress%23%7B&%7D.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@keyframes%20obsidian-lib-minimized-modal-bar-pulse%20%7B%5Cn%20%200%25,%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%5Cn%20%2050%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%202px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn@keyframes%20obsidian-lib-minimized-modal-bar-attention%20%7B%5Cn%20%200%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%200%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%204px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-lib%20%7B%5Cn%20%20//%20The%20minimize%20button%20lives%20inside%20the%20modal%20container,%20left%20of%20Obsidian's%20close%20button.%5Cn%20%20&.minimizable-modal%20%7B%5Cn%20%20%20%20.minimize-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20right:%20calc(var(--size-4-2)%20+%20var(--size-4-9));%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20The%20minimized%20bar%20is%20appended%20to%20document.body.%20It%20floats%20at%20the%20bottom-right%20while%20minimized,%5Cn%20%20//%20and%20gently%20pulses%20an%20accent%20ring%20so%20the%20user%20does%20not%20forget%20about%20the%20minimized%20operation.%5Cn%20%20//%20It%20floats%20a%20status-bar's%20height%20above%20the%20bottom%20edge%20so%20it%20never%20covers%20the%20bottom-right%5Cn%20%20//%20status-bar%20items%20(e.g.%20the%20editor-lock%20unlock%20indicator,%20which%20lives%20in%20the%20same%20corner).%5Cn%20%20&.minimized-modal-bar%20%7B%5Cn%20%20%20%20position:%20fixed;%5Cn%20%20%20%20right:%20var(--size-4-4);%5Cn%20%20%20%20bottom:%20calc(var(--size-4-4)%20+%20var(--size-4-8));%5Cn%20%20%20%20z-index:%20var(--layer-modal);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20align-items:%20center;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-m);%5Cn%20%20%20%20background:%20var(--background-secondary);%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20animation:%20obsidian-lib-minimized-modal-bar-pulse%202s%20ease-in-out%20infinite;%5Cn%5Cn%20%20%20%20//%20Layer%20the%20translucent%20hover%20tint%20over%20the%20opaque%20%60background%60%20(%60--background-secondary%60)%20via%5Cn%20%20%20%20//%20%60background-image%60%20instead%20of%20replacing%20the%20background-color.%20%60--background-modifier-hover%60%20is%5Cn%20%20%20%20//%20translucent,%20so%20setting%20it%20as%20%60background%60%20would%20let%20the%20editor%20content%20behind%20the%20floating%20bar%5Cn%20%20%20%20//%20bleed%20through%20and%20make%20the%20title%20unreadable.%20A%20gradient%20of%20the%20tint%20composited%20over%20the%20opaque%5Cn%20%20%20%20//%20base%20keeps%20the%20bar%20opaque%20while%20preserving%20the%20subtle%20hover%20highlight.%5Cn%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20background-image:%20linear-gradient(var(--background-modifier-hover),%20var(--background-modifier-hover));%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20one-shot,%20more%20pronounced%20flash%20played%20when%20the%20user%20attempts%20a%20blocked%20action%20(a%20keystroke,%5Cn%20%20%20%20//%20right-click,%20or%20opening%20another%20modal)%20while%20this%20modal%20is%20minimized,%20so%20the%20block%20is%20not%5Cn%20%20%20%20//%20silent.%20Its%20higher%20specificity%20overrides%20the%20gentle%20infinite%20idle%20pulse%20while%20it%20plays;%20the%5Cn%20%20%20%20//%20class%20is%20removed%20on%20%60animationend%60,%20restoring%20the%20idle%20pulse.%5Cn%20%20%20%20&.minimized-modal-bar-attention%20%7B%5Cn%20%20%20%20%20%20animation:%20obsidian-lib-minimized-modal-bar-attention%200.35s%20ease-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.minimized-modal-bar-title%20%7B%5Cn%20%20%20%20%20%20font-weight:%20var(--font-medium);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.restore-button,%5Cn%20%20%20%20.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20The%20strip%20of%20commands%20along%20the%20bottom%20of%20a%20modal.%5Cn%20%20//%5Cn%20%20//%20In%20%60Instructions%60%20render%20mode%20it%20also%20carries%20Obsidian's%20own%20%60.prompt-instructions%60%20%E2%80%94%20whose%20rule%20is%5Cn%20%20//%20unscoped,%20so%20it%20applies%20to%20a%20plain%20%60Modal%60%20too%20%E2%80%94%20and%20this%20one%20only%20re-tunes%20that%20rule's%20%60gap%60%20and%5Cn%20%20//%20%60padding%60%20and%20adds%20the%20separator;%20in%20%60Buttons%60%20mode%20it%20is%20the%20whole%20strip.%5Cn%20%20&.modal-commands%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border-top:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20control%20the%20%60Instructions%60%20renderer%20injects%20into%20an%20instruction's%20purpose%20text%20%E2%80%94%20a%20checkbox,%20a%5Cn%20%20//%20dropdown.%20Obsidian%20styles%20the%20instruction%20bar%20itself,%20but%20its%20own%20bar%20never%20contains%20a%20control,%20so%5Cn%20%20//%20nothing%20upstream%20separates%20one%20from%20the%20label%20it%20belongs%20to.%20Sits%20on%20the%20control%20rather%20than%20on%20the%5Cn%20%20//%20strip,%20so%20it%20reaches%20a%20%60SuggestModal%60's%20native%20bar%20as%20well%20as%20a%20self-created%20one.%5Cn%20%20&.modal-command-control%20%7B%5Cn%20%20%20%20margin-inline-start:%20var(--size-2-2);%5Cn%20%20%20%20vertical-align:%20middle;%5Cn%20%20%7D%5Cn%5Cn%20%20//%20One%20command%20button.%20Replaces%20the%20instruction%20bar%20rather%20than%20supplementing%20it:%20the%20bar%20can%20only%20ever%5Cn%20%20//%20say%20which%20key%20to%20press,%20and%20on%20a%20phone%20there%20is%20no%20modifier%20key%20to%20press,%20so%20every%20control%20it%20names%5Cn%20%20//%20is%20unreachable%20there.%5Cn%20%20&.modal-command%20%7B%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%20%20align-items:%20baseline;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%5Cn%20%20%20%20//%20Comfortably%20tappable%20on%20a%20phone,%20where%20this%20strip%20is%20the%20only%20way%20in.%5Cn%20%20%20%20min-height:%20var(--size-4-8);%5Cn%20%20%20%20padding:%20var(--size-2-1)%20var(--size-4-2);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20color:%20var(--text-muted);%5Cn%20%20%20%20font-size:%20var(--font-ui-smaller);%5Cn%20%20%20%20white-space:%20nowrap;%5Cn%20%20%20%20cursor:%20pointer;%5Cn%5Cn%20%20%20%20&:hover:not(:disabled)%20%7B%5Cn%20%20%20%20%20%20background-color:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20toggle%20that%20is%20ON.%20An%20action%20never%20carries%20it%20%E2%80%94%20it%20does%20something%20and%20is%20done,%20so%20there%20is%20no%5Cn%20%20%20%20//%20state%20for%20it%20to%20show.%5Cn%20%20%20%20&.is-active%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20Disabled%20rather%20than%20removed:%20a%20strip%20that%20lost%20buttons%20as%20modes%20change%20would%20reflow%20under%20the%5Cn%20%20%20%20//%20pointer,%20which%20on%20a%20phone%20means%20a%20mis-tap.%5Cn%20%20%20%20&:disabled%20%7B%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%20%20cursor:%20default;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.modal-command-hotkey%20%7B%5Cn%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20font-size:%20var(--font-smallest);%5Cn%5Cn%20%20%20%20//%20Faint%20against%20the%20surface%20is%20right;%20faint%20against%20the%20accent%20fill%20is%20invisible.%5Cn%20%20%20%20.modal-command.is-active%20&%20%7B%5Cn%20%20%20%20%20%20opacity:%200.7;%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20Compound,%20not%20nested:%20%60addPluginCssClasses%60%20puts%20%60obsidian-lib%60%20and%20%60multiple-dropdown-component%60%20on%20the%5Cn%20%20//%20SAME%20element%20(the%20setting's%20control%20container),%20so%20a%20descendant%20selector%20matched%20nothing%20and%20every%20multiple%5Cn%20%20//%20dropdown%20rendered%20one%20row%20tall%20%E2%80%94%20Obsidian's%20%60.dropdown%60%20height,%20with%20no%20popup%20behind%20it%20to%20pick%20from.%5Cn%20%20&.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-notice-name%20%7B%5Cn%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20display:%20inline-block;%5Cn%20%20%20%20font-weight:%20var(--font-bold);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-2);%5Cn%5Cn%20%20%20%20//%20The%20name%20is%20inline%20code;%20it%20keeps%20the%20code%20background%20and%20font%20but%20takes%20the%20prefix's%20accent%20color.%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20color:%20inherit;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.plugin-notice-content%20%7B%5Cn%20%20%20%20padding-right:%20var(--size-4-5);%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20.obsidian-lib.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20close%20button%20reuses%20Obsidian's%20%60modal-header-button%60%20+%20%60clickable-icon%60%20classes%20so%20it%20matches%5Cn%20%20%20%20//%20The%20native%20modal%20close%20button%20(box%20+%20hover);%20only%20its%20corner%20position%20is%20set%20here.%5Cn%20%20%20%20.obsidian-lib.plugin-notice-close-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20right:%20var(--size-4-3);%5Cn%20%20%20%20%20%20top:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20Move%20the%20notice's%20own%20padding%20onto%20the%20content%20wrapper%20so%20the%20wrapper%20covers%20the%20whole%20clickable%5Cn%20%20//%20Area%20%E2%80%94%20otherwise%20a%20click%20landing%20on%20the%20notice's%20bare%20padding%20(outside%20the%20wrapper)%20would%20bypass%20the%5Cn%20%20//%20Stop-propagation%20guard%20and%20dismiss%20the%20hard-to-close%20notice.%5Cn%20%20&.plugin-notice-requires-explicit-close.notice%20%7B%5Cn%20%20%20%20padding:%200;%5Cn%5Cn%20%20%20%20.obsidian-lib.plugin-notice-content%20%7B%5Cn%20%20%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-suggestion-banner%20%7B%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20border-left:%20var(--size-2-1)%20solid%20var(--text-accent);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-4);%5Cn%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%5Cn%20%20%20%20button%20%7B%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20notice%20lays%20its%20buttons%20out%20inline%20with%20no%20spacing,%20so%20the%20action%20button%20would%20touch%20the%20decline%20button.%5Cn%20%20&.plugin-suggestion-notice-buttons%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20A%20popover%20is%20anchored%20at%20a%20point%20and%20appended%20to%20the%20document%20body,%20outside%20any%20plugin-scoped%5Cn//%20container,%20so%20it%20is%20positioned%20absolutely%20at%20the%20top%20level.%20It%20borrows%20Obsidian's%20%60.menu%60%20look,%5Cn//%20which%20already%20carries%20the%20popup%20background,%20border%20and%20shadow%20%E2%80%94%20only%20layout%20is%20set%20here.%5Cn.obsidian-lib%20%7B%5Cn%20%20&.popover%20%7B%5Cn%20%20%20%20//%20Deliberately%20not%20%60calc(100vw%20-%2016px)%60:%20the%20SCSS%20compiler%20strips%20the%20%60calc(%60%20wrapper%20inside%5Cn%20%20%20%20//%20%60min()%60,%20which%20yields%20invalid%20CSS.%20A%20viewport%20percentage%20keeps%20a%20narrow%20window's%20popover%20on%5Cn%20%20%20%20//%20screen.%5Cn%20%20%20%20max-width:%20min(420px,%2090vw);%5Cn%20%20%20%20min-width:%20320px;%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20z-index:%20var(--layer-menu);%5Cn%5Cn%20%20%20%20//%20Setting%20rows%20are%20built%20for%20a%20full-width%20settings%20tab;%20compact%20them%20for%20a%20popover.%5Cn%20%20%20%20.setting-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20border-top:%20none;%5Cn%20%20%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20%20%20padding:%20var(--size-2-1)%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-info%20%7B%5Cn%20%20%20%20%20%20margin-right:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-control%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20justify-content:%20flex-end;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20input%5Btype='text'%5D%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20The%20tldraw%20Obsidian%20plugin%20(tldraw/obsidian-plugin)%20ships%20an%20unscoped%20global%20rule%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20currentColor%20%7D%60%20that%20overrides%20Obsidian's%20own%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20var(--text-color)%20%7D%60%20app-wide.%20Obsidian%20sets%5Cn//%20%60--text-color%60%20contextually%20per%20button%20variant%20(%60--text-normal%60%20by%20default,%5Cn//%20%60--text-on-accent%60%20for%20%60.mod-cta%60,%20%60--text-error%60%20for%20%60.mod-warning%60),%20so%20tldraw's%5Cn//%20%60currentColor%60%20discards%20that%20and%20breaks%20button%20contrast%20outside%20tldraw%20%E2%80%94%20e.g.%5Cn//%20White-on-white%20action%20buttons%20inside%20a%20Notice.%20Re-assert%20Obsidian's%20own%20value%20inside%20the%5Cn//%20Library's%20own%20UI%20(specificity%200,2,1),%20which%20wins%20over%20tldraw's%20(0,1,1)%20while%20staying%20correct%5Cn//%20For%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20It%20MUST%20stay%20scoped%20to%20%60.obsidian-lib%60:%20an%20unscoped%20re-assert%20(it%20was%20%60body%20button%E2%80%A6%60,%5Cn//%200,1,2)%20lands%20on%20every%20button%20in%20the%20app%20and%20beats%20any%20other%20plugin's%20own%20button%20color%5Cn//%20Written%20at%200,1,1,%20which%20Obsidian's%20own%20rule%20used%20to%20lose%20to%20(obsidian-custom-attachment-location%2395).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cn.obsidian-lib%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn//%20An%20input%20the%20user%20has%20not%20interacted%20with%20yet%20carries%20%60.untouched%60%20(set%20by%20%60PromptModal%60),%20so%20a%20modal%20that%5Cn//%20opens%20invalid%20by%20design%20does%20not%20greet%20the%20user%20in%20red.%20Both%20blocks%20below%20must%20be%20gated:%20the%20input%20is%5Cn//%20focused%20on%20open,%20so%20the%20focus%20block%20alone%20would%20keep%20painting%20it.%5Cn.obsidian-lib%20%7B%5Cn%20%20:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
6
+ const LIBRARY_VERSION = "8.0.0";
7
+ const LIBRARY_STYLES = ".obsidian-lib.code-highlighter-component textarea, .obsidian-lib.code-highlighter-component pre, .obsidian-lib.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-lib.code-highlighter-component textarea, .obsidian-lib.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-lib.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-lib.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-lib.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-lib.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-lib.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-lib-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-lib-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-lib-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-lib-lock-indicator-flash {\n animation: obsidian-lib-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-lib input[type=url] {\n height: var(--input-height);\n}\n.obsidian-lib input[type=month],\n.obsidian-lib input[type=tel],\n.obsidian-lib input[type=time],\n.obsidian-lib input[type=url],\n.obsidian-lib input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-lib input[type=month]:hover,\n .obsidian-lib input[type=tel]:hover,\n .obsidian-lib input[type=time]:hover,\n .obsidian-lib input[type=url]:hover,\n .obsidian-lib input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-lib input[type=month]:active, .obsidian-lib input[type=month]:focus,\n.obsidian-lib input[type=tel]:active,\n.obsidian-lib input[type=tel]:focus,\n.obsidian-lib input[type=time]:active,\n.obsidian-lib input[type=time]:focus,\n.obsidian-lib input[type=url]:active,\n.obsidian-lib input[type=url]:focus,\n.obsidian-lib input[type=week]:active,\n.obsidian-lib input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-lib input[type=month]:active, .obsidian-lib input[type=month]:focus, .obsidian-lib input[type=month]:focus-visible,\n.obsidian-lib input[type=tel]:active,\n.obsidian-lib input[type=tel]:focus,\n.obsidian-lib input[type=tel]:focus-visible,\n.obsidian-lib input[type=time]:active,\n.obsidian-lib input[type=time]:focus,\n.obsidian-lib input[type=time]:focus-visible,\n.obsidian-lib input[type=url]:active,\n.obsidian-lib input[type=url]:focus,\n.obsidian-lib input[type=url]:focus-visible,\n.obsidian-lib input[type=week]:active,\n.obsidian-lib input[type=week]:focus,\n.obsidian-lib input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-lib input[type=month]::placeholder,\n.obsidian-lib input[type=tel]::placeholder,\n.obsidian-lib input[type=time]::placeholder,\n.obsidian-lib input[type=url]::placeholder,\n.obsidian-lib input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-lib input[type=month],\n.obsidian-lib input[type=time],\n.obsidian-lib input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-lib input[type=month]::-webkit-datetime-edit-text,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-text,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-lib input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-lib input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-lib input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-lib input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-lib input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-lib input[type=month], .is-rtl .obsidian-lib input[type=month], .rtl .obsidian-lib input[type=month],\n.mod-rtl .obsidian-lib input[type=time],\n.is-rtl .obsidian-lib input[type=time],\n.rtl .obsidian-lib input[type=time],\n.mod-rtl .obsidian-lib input[type=week],\n.is-rtl .obsidian-lib input[type=week],\n.rtl .obsidian-lib input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-lib input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\nprogress.obsidian-lib.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-lib-minimized-modal-bar-pulse {\n 0%, 100% {\n box-shadow: var(--shadow-s);\n }\n 50% {\n box-shadow: 0 0 0 2px var(--interactive-accent);\n }\n}\n@keyframes obsidian-lib-minimized-modal-bar-attention {\n 0% {\n box-shadow: 0 0 0 0 var(--interactive-accent);\n }\n 40% {\n box-shadow: 0 0 0 4px var(--interactive-accent);\n }\n 100% {\n box-shadow: var(--shadow-s);\n }\n}\n.obsidian-lib.minimizable-modal .minimize-button {\n position: absolute;\n top: var(--size-4-2);\n right: calc(var(--size-4-2) + var(--size-4-9));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-lib.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-lib.minimized-modal-bar {\n position: fixed;\n right: var(--size-4-4);\n bottom: calc(var(--size-4-4) + var(--size-4-8));\n z-index: var(--layer-modal);\n display: flex;\n align-items: center;\n gap: var(--size-4-2);\n padding: var(--size-4-2) var(--size-4-3);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-m);\n background: var(--background-secondary);\n box-shadow: var(--shadow-s);\n cursor: pointer;\n animation: obsidian-lib-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-lib.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-lib.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-lib-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-lib.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-lib.minimized-modal-bar .restore-button,\n.obsidian-lib.minimized-modal-bar .cancel-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-lib.minimized-modal-bar .restore-button:hover,\n.obsidian-lib.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-lib.modal-commands {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2-2);\n padding: var(--size-4-2) var(--size-4-3);\n border-top: 1px solid var(--background-modifier-border);\n}\n.obsidian-lib.modal-command-control {\n margin-inline-start: var(--size-2-2);\n vertical-align: middle;\n}\n.obsidian-lib.modal-command {\n display: inline-flex;\n align-items: baseline;\n gap: var(--size-2-2);\n min-height: var(--size-4-8);\n padding: var(--size-2-1) var(--size-4-2);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-s);\n background-color: var(--background-secondary);\n color: var(--text-muted);\n font-size: var(--font-ui-smaller);\n white-space: nowrap;\n cursor: pointer;\n}\n.obsidian-lib.modal-command:hover:not(:disabled):not(.is-active) {\n background-color: var(--background-modifier-hover);\n color: var(--text-normal);\n}\n.obsidian-lib.modal-command.is-active {\n border-color: var(--interactive-accent);\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n.obsidian-lib.modal-command:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.obsidian-lib.modal-command-hotkey {\n color: var(--text-faint);\n font-size: var(--font-smallest);\n}\n.modal-command.is-active .obsidian-lib.modal-command-hotkey {\n opacity: 0.7;\n color: var(--text-on-accent);\n}\n\n.obsidian-lib.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-lib.multiple-dropdown-component select,\n.obsidian-lib.multiple-dropdown-component select:focus,\n.obsidian-lib.multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-lib.multiple-dropdown-component select option:checked,\n.obsidian-lib.multiple-dropdown-component select:focus option:checked,\n.obsidian-lib.multiple-dropdown-component .dropdown option:checked {\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n\n.obsidian-lib.plugin-notice-name {\n color: var(--text-accent);\n display: inline-block;\n font-weight: var(--font-bold);\n margin-bottom: var(--size-4-2);\n}\n.obsidian-lib.plugin-notice-name code {\n color: inherit;\n}\n.obsidian-lib.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-lib.plugin-notice-content .obsidian-lib.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-lib.plugin-notice-content .obsidian-lib.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-lib.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-lib.plugin-notice-requires-explicit-close.notice .obsidian-lib.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-lib.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-lib.plugin-suggestion-banner {\n background-color: var(--background-secondary);\n border-left: var(--size-2-1) solid var(--text-accent);\n border-radius: var(--radius-s);\n display: flex;\n flex-direction: column;\n gap: var(--size-4-2);\n margin-bottom: var(--size-4-4);\n padding: var(--size-4-3) var(--size-4-4);\n}\n.obsidian-lib.plugin-suggestion-banner button {\n width: fit-content;\n}\n.obsidian-lib.plugin-suggestion-notice-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-4-2);\n margin-top: var(--size-4-2);\n}\n\n.obsidian-lib.popover {\n max-width: min(420px, 90vw);\n min-width: 320px;\n padding: var(--size-4-2) var(--size-4-3);\n position: absolute;\n z-index: var(--layer-menu);\n}\n.obsidian-lib.popover .setting-item {\n align-items: center;\n border-top: none;\n gap: var(--size-4-2);\n padding: var(--size-2-1) 0;\n}\n.obsidian-lib.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-lib.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-lib.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-lib.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-lib button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-lib.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-lib :invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-lib input.metadata-input-text:active:invalid:not(.untouched), .obsidian-lib input.metadata-input-text:focus-visible:invalid:not(.untouched), .obsidian-lib input.metadata-input-text:focus:invalid:not(.untouched),\n.obsidian-lib input[type=date]:active:invalid:not(.untouched),\n.obsidian-lib input[type=date]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=date]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:active:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=email]:active:invalid:not(.untouched),\n.obsidian-lib input[type=email]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=email]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=number]:active:invalid:not(.untouched),\n.obsidian-lib input[type=number]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=number]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=password]:active:invalid:not(.untouched),\n.obsidian-lib input[type=password]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=password]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=search]:active:invalid:not(.untouched),\n.obsidian-lib input[type=search]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=search]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=text]:active:invalid:not(.untouched),\n.obsidian-lib input[type=text]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=text]:focus:invalid:not(.untouched),\n.obsidian-lib textarea:active:invalid:not(.untouched),\n.obsidian-lib textarea:focus-visible:invalid:not(.untouched),\n.obsidian-lib textarea:focus:invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-lib.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-lib.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-lib.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/editor-lock.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/minimizable-modal.scss%22,%22../src/styles/modal-commands.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-notice.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/plugin-suggestion.scss%22,%22../src/styles/popover.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tldraw-button-color-workaround.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACvCN;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAMJ;EACE;IACE;IACA;;;AAIJ;EACE;;;ACvBA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;AC/CK;EACP;;;ACJJ;EACE;IAEE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AASN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOA;EACE;;AAOF;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;;ACpGN;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;;AAMF;EACE;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;;AAGA;EACE;EACA;;;ACrEF;EACE;EACA;;;ACCF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACZN;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;ACrCF;EACE;;;ACFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;;;ACjBF;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACUN;EACE;;;ACZE;EACE;;;ACKJ;EAPA;;AAuBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAvBJ;;AA6BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-lib%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20Lock%20indicators%20shown%20in%20the%20tab%20header%20and%20the%20status%20bar%20while%20a%20note%20is%20locked.%20These%20live%20in%5Cn//%20global%20Obsidian%20DOM%20(tab%20header%20/%20status%20bar),%20so%20they%20are%20styled%20with%20a%20global%20class%20rather%20than%5Cn//%20scoped%20under%20%60.obsidian-lib%60.%5Cn.obsidian-lib-lock-indicator%20%7B%5Cn%20%20display:%20inline-flex;%5Cn%20%20align-items:%20center;%5Cn%20%20color:%20var(--text-muted);%5Cn%5Cn%20%20.svg-icon%20%7B%5Cn%20%20%20%20width:%20var(--icon-s);%5Cn%20%20%20%20height:%20var(--icon-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn//%20Flashed%20on%20every%20lock%20indicator%20(tab%20header,%20view%20action,%20status%20bar)%20when%20the%20user%20attempts%20to%5Cn//%20type%20in%20a%20locked%20note,%20to%20make%20clear%20the%20note%20is%20read-only.%20Re-added%20per%20rejected%20keystroke.%5Cn@keyframes%20obsidian-lib-lock-indicator-flash%20%7B%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20color:%20var(--text-error);%5Cn%20%20%20%20transform:%20scale(1.4);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-lib-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-lib-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20Not%20%60&progress%60:%20that%20APPENDS%20the%20element%20name%20to%20the%20parent%20class,%20producing%20one%20long%20class%20that%20matches%5Cn%20%20//%20nothing.%20The%20element%20type%20has%20to%20lead%20the%20compound%20selector%20instead.%5Cn%20%20@at-root%20progress%23%7B&%7D.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@keyframes%20obsidian-lib-minimized-modal-bar-pulse%20%7B%5Cn%20%200%25,%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%5Cn%20%2050%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%202px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn@keyframes%20obsidian-lib-minimized-modal-bar-attention%20%7B%5Cn%20%200%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%200%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%204px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-lib%20%7B%5Cn%20%20//%20The%20minimize%20button%20lives%20inside%20the%20modal%20container,%20left%20of%20Obsidian's%20close%20button.%5Cn%20%20&.minimizable-modal%20%7B%5Cn%20%20%20%20.minimize-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20right:%20calc(var(--size-4-2)%20+%20var(--size-4-9));%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20The%20minimized%20bar%20is%20appended%20to%20document.body.%20It%20floats%20at%20the%20bottom-right%20while%20minimized,%5Cn%20%20//%20and%20gently%20pulses%20an%20accent%20ring%20so%20the%20user%20does%20not%20forget%20about%20the%20minimized%20operation.%5Cn%20%20//%20It%20floats%20a%20status-bar's%20height%20above%20the%20bottom%20edge%20so%20it%20never%20covers%20the%20bottom-right%5Cn%20%20//%20status-bar%20items%20(e.g.%20the%20editor-lock%20unlock%20indicator,%20which%20lives%20in%20the%20same%20corner).%5Cn%20%20&.minimized-modal-bar%20%7B%5Cn%20%20%20%20position:%20fixed;%5Cn%20%20%20%20right:%20var(--size-4-4);%5Cn%20%20%20%20bottom:%20calc(var(--size-4-4)%20+%20var(--size-4-8));%5Cn%20%20%20%20z-index:%20var(--layer-modal);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20align-items:%20center;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-m);%5Cn%20%20%20%20background:%20var(--background-secondary);%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20animation:%20obsidian-lib-minimized-modal-bar-pulse%202s%20ease-in-out%20infinite;%5Cn%5Cn%20%20%20%20//%20Layer%20the%20translucent%20hover%20tint%20over%20the%20opaque%20%60background%60%20(%60--background-secondary%60)%20via%5Cn%20%20%20%20//%20%60background-image%60%20instead%20of%20replacing%20the%20background-color.%20%60--background-modifier-hover%60%20is%5Cn%20%20%20%20//%20translucent,%20so%20setting%20it%20as%20%60background%60%20would%20let%20the%20editor%20content%20behind%20the%20floating%20bar%5Cn%20%20%20%20//%20bleed%20through%20and%20make%20the%20title%20unreadable.%20A%20gradient%20of%20the%20tint%20composited%20over%20the%20opaque%5Cn%20%20%20%20//%20base%20keeps%20the%20bar%20opaque%20while%20preserving%20the%20subtle%20hover%20highlight.%5Cn%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20background-image:%20linear-gradient(var(--background-modifier-hover),%20var(--background-modifier-hover));%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20one-shot,%20more%20pronounced%20flash%20played%20when%20the%20user%20attempts%20a%20blocked%20action%20(a%20keystroke,%5Cn%20%20%20%20//%20right-click,%20or%20opening%20another%20modal)%20while%20this%20modal%20is%20minimized,%20so%20the%20block%20is%20not%5Cn%20%20%20%20//%20silent.%20Its%20higher%20specificity%20overrides%20the%20gentle%20infinite%20idle%20pulse%20while%20it%20plays;%20the%5Cn%20%20%20%20//%20class%20is%20removed%20on%20%60animationend%60,%20restoring%20the%20idle%20pulse.%5Cn%20%20%20%20&.minimized-modal-bar-attention%20%7B%5Cn%20%20%20%20%20%20animation:%20obsidian-lib-minimized-modal-bar-attention%200.35s%20ease-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.minimized-modal-bar-title%20%7B%5Cn%20%20%20%20%20%20font-weight:%20var(--font-medium);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.restore-button,%5Cn%20%20%20%20.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20The%20strip%20of%20commands%20along%20the%20bottom%20of%20a%20modal.%5Cn%20%20//%5Cn%20%20//%20In%20%60Instructions%60%20render%20mode%20it%20also%20carries%20Obsidian's%20own%20%60.prompt-instructions%60%20%E2%80%94%20whose%20rule%20is%5Cn%20%20//%20unscoped,%20so%20it%20applies%20to%20a%20plain%20%60Modal%60%20too%20%E2%80%94%20and%20this%20one%20only%20re-tunes%20that%20rule's%20%60gap%60%20and%5Cn%20%20//%20%60padding%60%20and%20adds%20the%20separator;%20in%20%60Buttons%60%20mode%20it%20is%20the%20whole%20strip.%5Cn%20%20&.modal-commands%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border-top:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20control%20the%20%60Instructions%60%20renderer%20injects%20into%20an%20instruction's%20purpose%20text%20%E2%80%94%20a%20checkbox,%20a%5Cn%20%20//%20dropdown.%20Obsidian%20styles%20the%20instruction%20bar%20itself,%20but%20its%20own%20bar%20never%20contains%20a%20control,%20so%5Cn%20%20//%20nothing%20upstream%20separates%20one%20from%20the%20label%20it%20belongs%20to.%20Sits%20on%20the%20control%20rather%20than%20on%20the%5Cn%20%20//%20strip,%20so%20it%20reaches%20a%20%60SuggestModal%60's%20native%20bar%20as%20well%20as%20a%20self-created%20one.%5Cn%20%20&.modal-command-control%20%7B%5Cn%20%20%20%20margin-inline-start:%20var(--size-2-2);%5Cn%20%20%20%20vertical-align:%20middle;%5Cn%20%20%7D%5Cn%5Cn%20%20//%20One%20command%20button.%20Replaces%20the%20instruction%20bar%20rather%20than%20supplementing%20it:%20the%20bar%20can%20only%20ever%5Cn%20%20//%20say%20which%20key%20to%20press,%20and%20on%20a%20phone%20there%20is%20no%20modifier%20key%20to%20press,%20so%20every%20control%20it%20names%5Cn%20%20//%20is%20unreachable%20there.%5Cn%20%20&.modal-command%20%7B%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%20%20align-items:%20baseline;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%5Cn%20%20%20%20//%20Comfortably%20tappable%20on%20a%20phone,%20where%20this%20strip%20is%20the%20only%20way%20in.%5Cn%20%20%20%20min-height:%20var(--size-4-8);%5Cn%20%20%20%20padding:%20var(--size-2-1)%20var(--size-4-2);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20color:%20var(--text-muted);%5Cn%20%20%20%20font-size:%20var(--font-ui-smaller);%5Cn%20%20%20%20white-space:%20nowrap;%5Cn%20%20%20%20cursor:%20pointer;%5Cn%5Cn%20%20%20%20//%20Touch%20can%20leave%20:hover%20latched%20until%20the%20next%20tap.%20Keep%20the%20ON%20fill%20in%20that%20state%20too.%5Cn%20%20%20%20&:hover:not(:disabled):not(.is-active)%20%7B%5Cn%20%20%20%20%20%20background-color:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20toggle%20that%20is%20ON.%20An%20action%20never%20carries%20it%20%E2%80%94%20it%20does%20something%20and%20is%20done,%20so%20there%20is%20no%5Cn%20%20%20%20//%20state%20for%20it%20to%20show.%5Cn%20%20%20%20&.is-active%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20Disabled%20rather%20than%20removed:%20a%20strip%20that%20lost%20buttons%20as%20modes%20change%20would%20reflow%20under%20the%5Cn%20%20%20%20//%20pointer,%20which%20on%20a%20phone%20means%20a%20mis-tap.%5Cn%20%20%20%20&:disabled%20%7B%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%20%20cursor:%20default;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.modal-command-hotkey%20%7B%5Cn%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20font-size:%20var(--font-smallest);%5Cn%5Cn%20%20%20%20//%20Faint%20against%20the%20surface%20is%20right;%20faint%20against%20the%20accent%20fill%20is%20invisible.%5Cn%20%20%20%20.modal-command.is-active%20&%20%7B%5Cn%20%20%20%20%20%20opacity:%200.7;%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20Compound,%20not%20nested:%20%60addPluginCssClasses%60%20puts%20%60obsidian-lib%60%20and%20%60multiple-dropdown-component%60%20on%20the%5Cn%20%20//%20SAME%20element%20(the%20setting's%20control%20container),%20so%20a%20descendant%20selector%20matched%20nothing%20and%20every%20multiple%5Cn%20%20//%20dropdown%20rendered%20one%20row%20tall%20%E2%80%94%20Obsidian's%20%60.dropdown%60%20height,%20with%20no%20popup%20behind%20it%20to%20pick%20from.%5Cn%20%20&.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-notice-name%20%7B%5Cn%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20display:%20inline-block;%5Cn%20%20%20%20font-weight:%20var(--font-bold);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-2);%5Cn%5Cn%20%20%20%20//%20The%20name%20is%20inline%20code;%20it%20keeps%20the%20code%20background%20and%20font%20but%20takes%20the%20prefix's%20accent%20color.%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20color:%20inherit;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.plugin-notice-content%20%7B%5Cn%20%20%20%20padding-right:%20var(--size-4-5);%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20.obsidian-lib.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20close%20button%20reuses%20Obsidian's%20%60modal-header-button%60%20+%20%60clickable-icon%60%20classes%20so%20it%20matches%5Cn%20%20%20%20//%20The%20native%20modal%20close%20button%20(box%20+%20hover);%20only%20its%20corner%20position%20is%20set%20here.%5Cn%20%20%20%20.obsidian-lib.plugin-notice-close-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20right:%20var(--size-4-3);%5Cn%20%20%20%20%20%20top:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20Move%20the%20notice's%20own%20padding%20onto%20the%20content%20wrapper%20so%20the%20wrapper%20covers%20the%20whole%20clickable%5Cn%20%20//%20Area%20%E2%80%94%20otherwise%20a%20click%20landing%20on%20the%20notice's%20bare%20padding%20(outside%20the%20wrapper)%20would%20bypass%20the%5Cn%20%20//%20Stop-propagation%20guard%20and%20dismiss%20the%20hard-to-close%20notice.%5Cn%20%20&.plugin-notice-requires-explicit-close.notice%20%7B%5Cn%20%20%20%20padding:%200;%5Cn%5Cn%20%20%20%20.obsidian-lib.plugin-notice-content%20%7B%5Cn%20%20%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-suggestion-banner%20%7B%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20border-left:%20var(--size-2-1)%20solid%20var(--text-accent);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-4);%5Cn%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%5Cn%20%20%20%20button%20%7B%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20notice%20lays%20its%20buttons%20out%20inline%20with%20no%20spacing,%20so%20the%20action%20button%20would%20touch%20the%20decline%20button.%5Cn%20%20&.plugin-suggestion-notice-buttons%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20A%20popover%20is%20anchored%20at%20a%20point%20and%20appended%20to%20the%20document%20body,%20outside%20any%20plugin-scoped%5Cn//%20container,%20so%20it%20is%20positioned%20absolutely%20at%20the%20top%20level.%20It%20borrows%20Obsidian's%20%60.menu%60%20look,%5Cn//%20which%20already%20carries%20the%20popup%20background,%20border%20and%20shadow%20%E2%80%94%20only%20layout%20is%20set%20here.%5Cn.obsidian-lib%20%7B%5Cn%20%20&.popover%20%7B%5Cn%20%20%20%20//%20Deliberately%20not%20%60calc(100vw%20-%2016px)%60:%20the%20SCSS%20compiler%20strips%20the%20%60calc(%60%20wrapper%20inside%5Cn%20%20%20%20//%20%60min()%60,%20which%20yields%20invalid%20CSS.%20A%20viewport%20percentage%20keeps%20a%20narrow%20window's%20popover%20on%5Cn%20%20%20%20//%20screen.%5Cn%20%20%20%20max-width:%20min(420px,%2090vw);%5Cn%20%20%20%20min-width:%20320px;%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20z-index:%20var(--layer-menu);%5Cn%5Cn%20%20%20%20//%20Setting%20rows%20are%20built%20for%20a%20full-width%20settings%20tab;%20compact%20them%20for%20a%20popover.%5Cn%20%20%20%20.setting-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20border-top:%20none;%5Cn%20%20%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20%20%20padding:%20var(--size-2-1)%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-info%20%7B%5Cn%20%20%20%20%20%20margin-right:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-control%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20justify-content:%20flex-end;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20input%5Btype='text'%5D%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20The%20tldraw%20Obsidian%20plugin%20(tldraw/obsidian-plugin)%20ships%20an%20unscoped%20global%20rule%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20currentColor%20%7D%60%20that%20overrides%20Obsidian's%20own%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20var(--text-color)%20%7D%60%20app-wide.%20Obsidian%20sets%5Cn//%20%60--text-color%60%20contextually%20per%20button%20variant%20(%60--text-normal%60%20by%20default,%5Cn//%20%60--text-on-accent%60%20for%20%60.mod-cta%60,%20%60--text-error%60%20for%20%60.mod-warning%60),%20so%20tldraw's%5Cn//%20%60currentColor%60%20discards%20that%20and%20breaks%20button%20contrast%20outside%20tldraw%20%E2%80%94%20e.g.%5Cn//%20White-on-white%20action%20buttons%20inside%20a%20Notice.%20Re-assert%20Obsidian's%20own%20value%20inside%20the%5Cn//%20Library's%20own%20UI%20(specificity%200,2,1),%20which%20wins%20over%20tldraw's%20(0,1,1)%20while%20staying%20correct%5Cn//%20For%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20It%20MUST%20stay%20scoped%20to%20%60.obsidian-lib%60:%20an%20unscoped%20re-assert%20(it%20was%20%60body%20button%E2%80%A6%60,%5Cn//%200,1,2)%20lands%20on%20every%20button%20in%20the%20app%20and%20beats%20any%20other%20plugin's%20own%20button%20color%5Cn//%20Written%20at%200,1,1,%20which%20Obsidian's%20own%20rule%20used%20to%20lose%20to%20(obsidian-custom-attachment-location%2395).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cn.obsidian-lib%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn//%20An%20input%20the%20user%20has%20not%20interacted%20with%20yet%20carries%20%60.untouched%60%20(set%20by%20%60PromptModal%60),%20so%20a%20modal%20that%5Cn//%20opens%20invalid%20by%20design%20does%20not%20greet%20the%20user%20in%20red.%20Both%20blocks%20below%20must%20be%20gated:%20the%20input%20is%5Cn//%20focused%20on%20open,%20so%20the%20focus%20block%20alone%20would%20keep%20painting%20it.%5Cn.obsidian-lib%20%7B%5Cn%20%20:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
8
8
  export {
9
9
  LIBRARY_STYLES,
10
10
  LIBRARY_VERSION
@@ -15,7 +15,7 @@ export interface HoverLinkSourceRegistrar {
15
15
  *
16
16
  * @param params - The parameters for the hover link source registration.
17
17
  */
18
- registerHoverLinkSource: (params: HoverLinkSourceRegistrarRegisterHoverLinkSourceParams) => void;
18
+ readonly registerHoverLinkSource: (params: HoverLinkSourceRegistrarRegisterHoverLinkSourceParams) => void;
19
19
  }
20
20
  /**
21
21
  * Parameters for registering a hover link source.
@@ -53,4 +53,4 @@ class PluginHoverLinkSourceRegistrar {
53
53
  export {
54
54
  PluginHoverLinkSourceRegistrar
55
55
  };
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob3Zlci1saW5rLXNvdXJjZS1yZWdpc3RyYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhvdmVyIGxpbmsgc291cmNlIHJlZ2lzdHJhcnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBIb3ZlckxpbmtTb3VyY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBIb3ZlciBsaW5rIHNvdXJjZSByZWdpc3RyYXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSG92ZXJMaW5rU291cmNlUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGhvdmVyIGxpbmsgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBob3ZlciBsaW5rIHNvdXJjZSByZWdpc3RyYXRpb24uXG4gICAqL1xuICByZWdpc3RlckhvdmVyTGlua1NvdXJjZTogKHBhcmFtczogSG92ZXJMaW5rU291cmNlUmVnaXN0cmFyUmVnaXN0ZXJIb3ZlckxpbmtTb3VyY2VQYXJhbXMpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgcmVnaXN0ZXJpbmcgYSBob3ZlciBsaW5rIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3ZlckxpbmtTb3VyY2VSZWdpc3RyYXJSZWdpc3RlckhvdmVyTGlua1NvdXJjZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGhvdmVyIGxpbmsgc291cmNlIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBob3ZlciBsaW5rIHNvdXJjZSB0byByZWdpc3Rlci5cbiAgICovXG4gIHJlYWRvbmx5IGluZm86IEhvdmVyTGlua1NvdXJjZTtcbn1cblxudHlwZSBQbHVnaW5Ib3ZlckxpbmtTb3VyY2VSZWdpc3RyYXJSZWdpc3RlckhvdmVyTGlua1NvdXJjZVBhcmFtcyA9IEhvdmVyTGlua1NvdXJjZVJlZ2lzdHJhclJlZ2lzdGVySG92ZXJMaW5rU291cmNlUGFyYW1zO1xuXG4vKipcbiAqIEhvdmVyIGxpbmsgc291cmNlIHJlZ2lzdHJhciBpbiBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5Ib3ZlckxpbmtTb3VyY2VSZWdpc3RyYXIgaW1wbGVtZW50cyBIb3ZlckxpbmtTb3VyY2VSZWdpc3RyYXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUge0BsaW5rIFBsdWdpbkhvdmVyTGlua1NvdXJjZVJlZ2lzdHJhcn0gY2xhc3MuXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgT2JzaWRpYW4gcGx1Z2luIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBwbHVnaW46IFBsdWdpbikge31cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgaG92ZXIgbGluayBzb3VyY2UuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGhvdmVyIGxpbmsgc291cmNlIHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlckhvdmVyTGlua1NvdXJjZShwYXJhbXM6IFBsdWdpbkhvdmVyTGlua1NvdXJjZVJlZ2lzdHJhclJlZ2lzdGVySG92ZXJMaW5rU291cmNlUGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJIb3ZlckxpbmtTb3VyY2UocGFyYW1zLmlkLCBwYXJhbXMuaW5mbyk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxTQUFTLGNBQWM7QUFrQ2hCLE1BQU0sK0JBQW1FO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXZFLFlBQStCLFFBQWdCO0FBQWhCO0FBQUEsRUFBaUI7QUFBQSxFQUFqQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU8vQix3QkFBd0IsUUFBMkU7QUFDeEcsU0FBSyxPQUFPLHdCQUF3QixPQUFPLElBQUksT0FBTyxJQUFJO0FBQUEsRUFDNUQ7QUFDRjsiLCJuYW1lcyI6W119
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob3Zlci1saW5rLXNvdXJjZS1yZWdpc3RyYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhvdmVyIGxpbmsgc291cmNlIHJlZ2lzdHJhcnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBIb3ZlckxpbmtTb3VyY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBIb3ZlciBsaW5rIHNvdXJjZSByZWdpc3RyYXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSG92ZXJMaW5rU291cmNlUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGhvdmVyIGxpbmsgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBob3ZlciBsaW5rIHNvdXJjZSByZWdpc3RyYXRpb24uXG4gICAqL1xuICByZWFkb25seSByZWdpc3RlckhvdmVyTGlua1NvdXJjZTogKHBhcmFtczogSG92ZXJMaW5rU291cmNlUmVnaXN0cmFyUmVnaXN0ZXJIb3ZlckxpbmtTb3VyY2VQYXJhbXMpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgcmVnaXN0ZXJpbmcgYSBob3ZlciBsaW5rIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3ZlckxpbmtTb3VyY2VSZWdpc3RyYXJSZWdpc3RlckhvdmVyTGlua1NvdXJjZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGhvdmVyIGxpbmsgc291cmNlIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBob3ZlciBsaW5rIHNvdXJjZSB0byByZWdpc3Rlci5cbiAgICovXG4gIHJlYWRvbmx5IGluZm86IEhvdmVyTGlua1NvdXJjZTtcbn1cblxudHlwZSBQbHVnaW5Ib3ZlckxpbmtTb3VyY2VSZWdpc3RyYXJSZWdpc3RlckhvdmVyTGlua1NvdXJjZVBhcmFtcyA9IEhvdmVyTGlua1NvdXJjZVJlZ2lzdHJhclJlZ2lzdGVySG92ZXJMaW5rU291cmNlUGFyYW1zO1xuXG4vKipcbiAqIEhvdmVyIGxpbmsgc291cmNlIHJlZ2lzdHJhciBpbiBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5Ib3ZlckxpbmtTb3VyY2VSZWdpc3RyYXIgaW1wbGVtZW50cyBIb3ZlckxpbmtTb3VyY2VSZWdpc3RyYXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUge0BsaW5rIFBsdWdpbkhvdmVyTGlua1NvdXJjZVJlZ2lzdHJhcn0gY2xhc3MuXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgT2JzaWRpYW4gcGx1Z2luIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBwbHVnaW46IFBsdWdpbikge31cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgaG92ZXIgbGluayBzb3VyY2UuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGhvdmVyIGxpbmsgc291cmNlIHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlckhvdmVyTGlua1NvdXJjZShwYXJhbXM6IFBsdWdpbkhvdmVyTGlua1NvdXJjZVJlZ2lzdHJhclJlZ2lzdGVySG92ZXJMaW5rU291cmNlUGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJIb3ZlckxpbmtTb3VyY2UocGFyYW1zLmlkLCBwYXJhbXMuaW5mbyk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxTQUFTLGNBQWM7QUFrQ2hCLE1BQU0sK0JBQW1FO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXZFLFlBQStCLFFBQWdCO0FBQWhCO0FBQUEsRUFBaUI7QUFBQSxFQUFqQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU8vQix3QkFBd0IsUUFBMkU7QUFDeEcsU0FBSyxPQUFPLHdCQUF3QixPQUFPLElBQUksT0FBTyxJQUFJO0FBQUEsRUFDNUQ7QUFDRjsiLCJuYW1lcyI6W119
@@ -15,15 +15,15 @@ export interface CustomTypeOptionsBase<DefaultTranslations extends DefaultTransl
15
15
  /**
16
16
  * The default namespace.
17
17
  */
18
- defaultNS: typeof DEFAULT_NS;
18
+ readonly defaultNS: typeof DEFAULT_NS;
19
19
  /**
20
20
  * Whether to enable the selector.
21
21
  */
22
- enableSelector: true;
22
+ readonly enableSelector: true;
23
23
  /**
24
24
  * The resources.
25
25
  */
26
- resources: CustomTypeOptionsResources<DefaultTranslations>;
26
+ readonly resources: CustomTypeOptionsResources<DefaultTranslations>;
27
27
  }
28
28
  /**
29
29
  * The resources for `i18next` custom type options.
@@ -34,5 +34,5 @@ export interface CustomTypeOptionsResources<DefaultTranslations extends DefaultT
34
34
  /**
35
35
  * The default namespace.
36
36
  */
37
- [DEFAULT_NS]: DefaultTranslations;
37
+ readonly [DEFAULT_NS]: DefaultTranslations;
38
38
  }