@mnaoumov/obsidian-lib 4.3.0 → 5.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 (150) hide show
  1. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +1 -1
  2. package/dist/lib/cjs/components/case-insensitive-file-index-component.d.cts +1 -1
  3. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +1 -1
  4. package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +1 -1
  5. package/dist/lib/cjs/components/settings-migration-component.cjs +1 -1
  6. package/dist/lib/cjs/components/settings-migration-component.d.cts +1 -1
  7. package/dist/lib/cjs/css-class.cjs +1 -1
  8. package/dist/lib/cjs/css-class.d.cts +4 -2
  9. package/dist/lib/cjs/demo-vault-helper-settings.cjs +1 -1
  10. package/dist/lib/cjs/demo-vault-helper-settings.d.cts +1 -1
  11. package/dist/lib/cjs/frontmatter.cjs +1 -1
  12. package/dist/lib/cjs/frontmatter.d.cts +1 -1
  13. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  14. package/dist/lib/cjs/generated-during-build.d.cts +2 -2
  15. package/dist/lib/cjs/i18n/i18n.cjs +2 -2
  16. package/dist/lib/cjs/i18n/i18n.d.cts +1 -1
  17. package/dist/lib/cjs/i18n/locales/en.cjs +5 -2
  18. package/dist/lib/cjs/i18n/locales/en.d.cts +4 -1
  19. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +4 -1
  20. package/dist/lib/cjs/modals/minimizable-modal.cjs +1 -1
  21. package/dist/lib/cjs/modals/minimizable-modal.d.cts +1 -1
  22. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
  23. package/dist/lib/cjs/modals/suggest-modal-command-builder.d.cts +3 -3
  24. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +1 -1
  25. package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +5 -2
  26. package/dist/lib/cjs/path-settings.cjs +214 -35
  27. package/dist/lib/cjs/path-settings.d.cts +21 -5
  28. package/dist/lib/cjs/plugin/plugin-api.cjs +1 -1
  29. package/dist/lib/cjs/plugin/plugin-api.d.cts +1 -1
  30. package/dist/lib/cjs/plugin/plugin-context.cjs +1 -1
  31. package/dist/lib/cjs/plugin/plugin.cjs +2 -2
  32. package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
  33. package/dist/lib/cjs/resource-lock.cjs +1 -1
  34. package/dist/lib/cjs/setting-components/checkbox-component.cjs +1 -1
  35. package/dist/lib/cjs/setting-components/checkbox-component.d.cts +1 -1
  36. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +1 -1
  37. package/dist/lib/cjs/setting-components/code-highlighter-component.d.cts +1 -1
  38. package/dist/lib/cjs/setting-components/date-component.cjs +1 -1
  39. package/dist/lib/cjs/setting-components/date-component.d.cts +1 -1
  40. package/dist/lib/cjs/setting-components/date-time-component.cjs +1 -1
  41. package/dist/lib/cjs/setting-components/date-time-component.d.cts +1 -1
  42. package/dist/lib/cjs/setting-components/email-component.cjs +1 -1
  43. package/dist/lib/cjs/setting-components/email-component.d.cts +1 -1
  44. package/dist/lib/cjs/setting-components/file-component.cjs +1 -1
  45. package/dist/lib/cjs/setting-components/file-component.d.cts +1 -1
  46. package/dist/lib/cjs/setting-components/month-component.cjs +1 -1
  47. package/dist/lib/cjs/setting-components/month-component.d.cts +1 -1
  48. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +1 -1
  49. package/dist/lib/cjs/setting-components/multiple-dropdown-component.d.cts +1 -1
  50. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +1 -1
  51. package/dist/lib/cjs/setting-components/multiple-email-component.d.cts +1 -1
  52. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +1 -1
  53. package/dist/lib/cjs/setting-components/multiple-file-component.d.cts +1 -1
  54. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +1 -1
  55. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +1 -1
  56. package/dist/lib/cjs/setting-components/number-component.cjs +1 -1
  57. package/dist/lib/cjs/setting-components/number-component.d.cts +1 -1
  58. package/dist/lib/cjs/setting-components/password-component.cjs +1 -1
  59. package/dist/lib/cjs/setting-components/password-component.d.cts +1 -1
  60. package/dist/lib/cjs/setting-components/telephone-component.cjs +1 -1
  61. package/dist/lib/cjs/setting-components/telephone-component.d.cts +1 -1
  62. package/dist/lib/cjs/setting-components/time-component.cjs +1 -1
  63. package/dist/lib/cjs/setting-components/time-component.d.cts +1 -1
  64. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +1 -1
  65. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.d.cts +1 -1
  66. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +1 -1
  67. package/dist/lib/cjs/setting-components/typed-dropdown-component.d.cts +1 -1
  68. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +1 -1
  69. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.d.cts +1 -1
  70. package/dist/lib/cjs/setting-components/url-component.cjs +1 -1
  71. package/dist/lib/cjs/setting-components/url-component.d.cts +1 -1
  72. package/dist/lib/cjs/setting-components/week-component.cjs +1 -1
  73. package/dist/lib/cjs/setting-components/week-component.d.cts +1 -1
  74. package/dist/lib/cjs/vault.cjs +1 -1
  75. package/dist/lib/cjs/vault.d.cts +2 -2
  76. package/dist/lib/esm/components/case-insensitive-file-index-component.d.mts +1 -1
  77. package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +1 -1
  78. package/dist/lib/esm/components/plugin-suggestion-component.d.mts +1 -1
  79. package/dist/lib/esm/components/plugin-suggestion-component.mjs +1 -1
  80. package/dist/lib/esm/components/settings-migration-component.d.mts +1 -1
  81. package/dist/lib/esm/components/settings-migration-component.mjs +1 -1
  82. package/dist/lib/esm/css-class.d.mts +4 -2
  83. package/dist/lib/esm/css-class.mjs +1 -1
  84. package/dist/lib/esm/demo-vault-helper-settings.d.mts +1 -1
  85. package/dist/lib/esm/frontmatter.d.mts +1 -1
  86. package/dist/lib/esm/frontmatter.mjs +1 -1
  87. package/dist/lib/esm/generated-during-build.d.mts +2 -2
  88. package/dist/lib/esm/generated-during-build.mjs +2 -2
  89. package/dist/lib/esm/i18n/i18n.d.mts +1 -1
  90. package/dist/lib/esm/i18n/i18n.mjs +2 -2
  91. package/dist/lib/esm/i18n/locales/en.d.mts +4 -1
  92. package/dist/lib/esm/i18n/locales/en.mjs +5 -2
  93. package/dist/lib/esm/i18n/locales/translations-map.d.mts +4 -1
  94. package/dist/lib/esm/modals/minimizable-modal.d.mts +1 -1
  95. package/dist/lib/esm/modals/minimizable-modal.mjs +1 -1
  96. package/dist/lib/esm/modals/suggest-modal-command-builder.d.mts +3 -3
  97. package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +1 -1
  98. package/dist/lib/esm/obsidian-dev-utils-state.d.mts +5 -2
  99. package/dist/lib/esm/obsidian-dev-utils-state.mjs +1 -1
  100. package/dist/lib/esm/path-settings.d.mts +21 -5
  101. package/dist/lib/esm/path-settings.mjs +215 -41
  102. package/dist/lib/esm/plugin/plugin-api.d.mts +1 -1
  103. package/dist/lib/esm/plugin/plugin-api.mjs +1 -1
  104. package/dist/lib/esm/plugin/plugin-context.mjs +1 -1
  105. package/dist/lib/esm/plugin/plugin.d.mts +1 -1
  106. package/dist/lib/esm/plugin/plugin.mjs +2 -2
  107. package/dist/lib/esm/resource-lock.mjs +1 -1
  108. package/dist/lib/esm/setting-components/checkbox-component.d.mts +1 -1
  109. package/dist/lib/esm/setting-components/checkbox-component.mjs +1 -1
  110. package/dist/lib/esm/setting-components/code-highlighter-component.d.mts +1 -1
  111. package/dist/lib/esm/setting-components/code-highlighter-component.mjs +1 -1
  112. package/dist/lib/esm/setting-components/date-component.d.mts +1 -1
  113. package/dist/lib/esm/setting-components/date-component.mjs +1 -1
  114. package/dist/lib/esm/setting-components/date-time-component.d.mts +1 -1
  115. package/dist/lib/esm/setting-components/date-time-component.mjs +1 -1
  116. package/dist/lib/esm/setting-components/email-component.d.mts +1 -1
  117. package/dist/lib/esm/setting-components/email-component.mjs +1 -1
  118. package/dist/lib/esm/setting-components/file-component.d.mts +1 -1
  119. package/dist/lib/esm/setting-components/file-component.mjs +1 -1
  120. package/dist/lib/esm/setting-components/month-component.d.mts +1 -1
  121. package/dist/lib/esm/setting-components/month-component.mjs +1 -1
  122. package/dist/lib/esm/setting-components/multiple-dropdown-component.d.mts +1 -1
  123. package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +1 -1
  124. package/dist/lib/esm/setting-components/multiple-email-component.d.mts +1 -1
  125. package/dist/lib/esm/setting-components/multiple-email-component.mjs +1 -1
  126. package/dist/lib/esm/setting-components/multiple-file-component.d.mts +1 -1
  127. package/dist/lib/esm/setting-components/multiple-file-component.mjs +1 -1
  128. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +1 -1
  129. package/dist/lib/esm/setting-components/multiple-text-component.mjs +1 -1
  130. package/dist/lib/esm/setting-components/number-component.d.mts +1 -1
  131. package/dist/lib/esm/setting-components/number-component.mjs +1 -1
  132. package/dist/lib/esm/setting-components/password-component.d.mts +1 -1
  133. package/dist/lib/esm/setting-components/password-component.mjs +1 -1
  134. package/dist/lib/esm/setting-components/telephone-component.d.mts +1 -1
  135. package/dist/lib/esm/setting-components/telephone-component.mjs +1 -1
  136. package/dist/lib/esm/setting-components/time-component.d.mts +1 -1
  137. package/dist/lib/esm/setting-components/time-component.mjs +1 -1
  138. package/dist/lib/esm/setting-components/tri-state-checkbox-component.d.mts +1 -1
  139. package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +1 -1
  140. package/dist/lib/esm/setting-components/typed-dropdown-component.d.mts +1 -1
  141. package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +1 -1
  142. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.d.mts +1 -1
  143. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +1 -1
  144. package/dist/lib/esm/setting-components/url-component.d.mts +1 -1
  145. package/dist/lib/esm/setting-components/url-component.mjs +1 -1
  146. package/dist/lib/esm/setting-components/week-component.d.mts +1 -1
  147. package/dist/lib/esm/setting-components/week-component.mjs +1 -1
  148. package/dist/lib/esm/vault.d.mts +2 -2
  149. package/dist/lib/esm/vault.mjs +1 -1
  150. package/package.json +3 -2
@@ -173,4 +173,4 @@ export {
173
173
  PluginSuggestionComponent,
174
174
  SuggestedPluginState
175
175
  };
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29tcG9uZW50IHRoYXQgc3VnZ2VzdHMgaW5zdGFsbGluZyBhbm90aGVyIGNvbW11bml0eSBwbHVnaW4gdGhlIGhvc3QgcGx1Z2luIG5lZWRzIGluIG9yZGVyIHRvIG9mZmVyXG4gKiBzb21lIG9mIGl0cyBiZWhhdmlvci5cbiAqXG4gKiBBIHN1Z2dlc3Rpb24gaXMgbm90IGEgZGVwZW5kZW5jeSDigJQgYnV0IGEgZGVwZW5kZW5jeSBpcyBub3cgYSB0aGluZyB0aGlzIGxpYnJhcnkgSEFTLCBzbyB0aGUgY2hvaWNlXG4gKiBiZXR3ZWVuIHRoZW0gaXMgYSByZWFsIG9uZS4gVXNlIGEgc3VnZ2VzdGlvbiB3aGVuIHRoZSBvdGhlciBwbHVnaW4gQUREUyBzb21ldGhpbmc6IHRoZSBob3N0IGtlZXBzXG4gKiB3b3JraW5nIHdpdGhvdXQgaXQsIHNpbXBseSB1bmFibGUgdG8gb2ZmZXIgd2hhdGV2ZXIgdGhhdCBwbHVnaW4gb3ducywgYW5kIHRoaXMgY29tcG9uZW50IGFza3Mgb25jZVxuICogd2hldGhlciB0aGUgdXNlciB3b3VsZCBsaWtlIGl0IGluc3RhbGxlZC4gVXNlIGBQbHVnaW5HYXRlQ29tcG9uZW50YCB3aGVuIHRoZSBob3N0J3MgYWR2ZXJ0aXNlZFxuICogYmVoYXZpb3IgaXMgbm90IHRoZXJlIGF0IGFsbCB3aXRob3V0IHRoZSBvdGhlciBwbHVnaW4uXG4gKlxuICogVGhpcyBmaWxlIHVzZWQgdG8gYXJndWUgdGhlIHN0cm9uZ2VyIHBvc2l0aW9uIOKAlCB0aGF0IHJlcXVpcmluZyBhbm90aGVyIHBsdWdpbiBzaG91bGQgbm90IGV4aXN0LCBiZWNhdXNlXG4gKiBcImludmVudGluZyBvbmUgYnkgcmVmdXNpbmcgdG8gbG9hZCB3b3VsZCBwdW5pc2ggdGhlIHVzZXIgZm9yIHNvbWV0aGluZyB0aGV5IG5ldmVyIGFncmVlZCB0b1wiLiBUaGF0IHdhc1xuICogd3JvbmcgYWJvdXQgd2hpY2ggb3B0aW9uIHB1bmlzaGVzIHRoZSB1c2VyLCBhbmQgdGhlIGNvdW50ZXItY2FzZSBpcyB3b3J0aCBrZWVwaW5nIHJhdGhlciB0aGFuIHF1aWV0bHlcbiAqIGRlbGV0aW5nLiBBIGxvYWQtYmVhcmluZyBwbHVnaW4gdGhlIHVzZXIgY2Fubm90IGlkZW50aWZ5IGlzIG5vdCBhIG5ldXRyYWwgb3V0Y29tZTogbW9udGhzIGxhdGVyIHRoZXlcbiAqIG1lZXQgaXQgaW4gdGhlaXIgcGx1Z2luIGxpc3QsIG5vdGhpbmcgaW4gT2JzaWRpYW4ncyBtYW5pZmVzdCBmb3JtYXQgc2F5cyBhbnl0aGluZyBkZXBlbmRzIG9uIGl0LCB0aGV5XG4gKiByZW1vdmUgaXQsIGFuZCB0aGUgZGFtYWdlIHN1cmZhY2VzIHdlZWtzIGFmdGVyIHRoYXQgd2l0aCBubyB3YXkgdG8gY29ubmVjdCB0aGUgdHdvLiBCZXNpZGUgdGhhdCwgYVxuICogbWFuZGF0b3J5IGRlcGVuZGVuY3kgdGhhdCBzdGF5cyBlbmFibGVkLWJ1dC1pbmVydCwgbmFtZXMgd2hhdCBpdCBpcyB3YWl0aW5nIGZvciwgaW5zdGFsbHMgaXQgaW4gb25lXG4gKiBjbGljayBhbmQgcmVzdW1lcyB3aXRob3V0IGEgcmVzdGFydCBpcyBub3QgYSBwdW5pc2htZW50IOKAlCBpdCBpcyB0aGUgc2FtZSBpbmZvcm1hdGlvbiwgZGVsaXZlcmVkIHdoaWxlXG4gKiB0aGUgdXNlciBjYW4gc3RpbGwgYWN0IG9uIGl0LlxuICpcbiAqIFRoZSBhc2sgaXMgc3VyZmFjZWQgdHdpY2UsIGRlbGliZXJhdGVseSwgYmVjYXVzZSB0aGUgdHdvIHBsYWNlbWVudHMgYW5zd2VyIGRpZmZlcmVudCBxdWVzdGlvbnM6XG4gKiBhIG5vdGljZSBvbiBsb2FkIChcInlvdSBhcmUgbWlzc2luZyBzb21ldGhpbmcgeW91IHByb2JhYmx5IHdhbnRcIikgYW5kIGEgc2V0dGluZ3MtdGFiIGJhbm5lciAoXCJ0aGVcbiAqIHNldHRpbmdzIHlvdSBjYW1lIGxvb2tpbmcgZm9yIGxpdmUgaW4gYW5vdGhlciBwbHVnaW5cIikuIERlY2xpbmluZyBzaWxlbmNlcyBvbmx5IHRoZSBub3RpY2Ug4oCUIGEgdXNlclxuICogd2hvIG9wZW5zIHRoZSBzZXR0aW5ncyB0YWIgaXMgYXNraW5nIGFib3V0IHRoZSBmZWF0dXJlIHJpZ2h0IHRoZW4sIHNvIHRoZSBiYW5uZXIgc3RheXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb252ZXJ0QXN5bmNUb1N5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lIH0gZnJvbSAnLi4vaHRtbC1lbGVtZW50LnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHtcbiAgZ2V0SW5zdGFsbGVkUGx1Z2luU3RhdGUsXG4gIGluc3RhbGxBbmRFbmFibGVQbHVnaW4sXG4gIEluc3RhbGxlZFBsdWdpblN0YXRlXG59IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4taW5zdGFsbC1zdGF0ZS50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIEhvdyB0aGUgc3VnZ2VzdGVkIHBsdWdpbiBpcyBjdXJyZW50bHkgcHJlc2VudCBpbiB0aGUgdmF1bHQuXG4gKlxuICogVGhlIHNhbWUgdGhyZWUgc3RhdGVzIGEgbWFuZGF0b3J5IGRlcGVuZGVuY3kgaXMgaW4sIHNvIHRoaXMgaXMge0BsaW5rIEluc3RhbGxlZFBsdWdpblN0YXRlfSB1bmRlciB0aGVcbiAqIG5hbWUgdGhpcyBjb21wb25lbnQgaGFzIGFsd2F5cyB1c2VkIOKAlCBvbmUgZW51bSwgc28gYSBjYWxsZXIgaG9sZGluZyBhIHN0YXRlIGZyb20gZWl0aGVyIGNvbXBvbmVudCBjYW5cbiAqIGNvbXBhcmUgaXQgYWdhaW5zdCBlaXRoZXIgbmFtZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN1Z2dlc3RlZFBsdWdpblN0YXRlID0gSW5zdGFsbGVkUGx1Z2luU3RhdGU7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGRlY2xpbmVkIHRoaXMgc3VnZ2VzdGlvbi5cbiAgICpcbiAgICogU3RvcmFnZSBiZWxvbmdzIHRvIHRoZSBob3N0IHBsdWdpbiAodHlwaWNhbGx5IG9uZSBvZiBpdHMgc2V0dGluZ3MpLCBiZWNhdXNlIHRoaXMgY29tcG9uZW50IGhhcyBub1xuICAgKiBgZGF0YS5qc29uYCBvZiBpdHMgb3duIGFuZCBhIGRlY2xpbmUgaGFzIHRvIG91dGxpdmUgYSByZWxvYWQuXG4gICAqXG4gICAqIE9ubHkgZXZlciBjYWxsZWQgb25jZSB7QGxpbmsgcGx1Z2luU2V0dGluZ3NDb21wb25lbnR9IHJlcG9ydHMgaXRzIHNldHRpbmdzIGxvYWRlZCwgc28gYW4gaW1wbGVtZW50YXRpb25cbiAgICogcmVhZGluZyBhIHNldHRpbmcgaXMgZ3VhcmFudGVlZCB0byByZWFkIHRoZSBzdG9yZWQgdmFsdWUgcmF0aGVyIHRoYW4gaXRzIGRlZmF1bHQuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBzdWdnZXN0aW9uIGhhcyBiZWVuIGRlY2xpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNTdWdnZXN0aW9uRGVjbGluZWQ6ICgpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBub3RpY2UgY29tcG9uZW50IG9mIHRoZSBwbHVnaW4gbWFraW5nIHRoZSBzdWdnZXN0aW9uLCB1c2VkIHRvIHNob3cgdGhlIHN1Z2dlc3Rpb24gYW5kIGl0c1xuICAgKiBvdXRjb21lLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBjb21wb25lbnQgaG9sZGluZyB3aGF0ZXZlciB7QGxpbmsgaXNTdWdnZXN0aW9uRGVjbGluZWR9IHJlYWRzLlxuICAgKlxuICAgKiBUYWtlbiBhcyBhIHdob2xlIGNvbXBvbmVudCByYXRoZXIgdGhhbiBhcyBhIGJhcmUgXCJyZWFkeVwiIGZsYWcgc28gdGhlIGhvc3QgY2Fubm90IGZvcmdldCB0byB3aXJlIHRoZVxuICAgKiB3YWl0OiB0aGUgbm90aWNlIGlzIGRlY2lkZWQgb25seSBhZnRlciB0aGlzIGNvbXBvbmVudCBoYXMgcmVhZCBgZGF0YS5qc29uYC4gU2VlXG4gICAqIHtAbGluayBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2Uud2hlbkxvYWRlZEZyb21GaWxlfSBmb3Igd2h5IHRoZSByZWFkIGNhbm5vdCBzaW1wbHkgaGFwcGVuIGF0XG4gICAqIGxheW91dC1yZWFkeS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8b2JqZWN0PjtcblxuICAvKipcbiAgICogVGhlIGxvY2FsaXplZCBzZW50ZW5jZSBleHBsYWluaW5nIHdoYXQgdGhlIGhvc3QgcGx1Z2luIGNhbm5vdCBkbyB3aXRob3V0IHRoZSBzdWdnZXN0ZWQgcGx1Z2luLiBUaGVcbiAgICogaG9zdCBwbHVnaW4gb3ducyB0aGlzIHN0cmluZzogb25seSBpdCBrbm93cyB3aGljaCBvZiBpdHMgZmVhdHVyZXMgYXJlIGFmZmVjdGVkLlxuICAgKlxuICAgKiBQYXNzIGEge0BsaW5rIERvY3VtZW50RnJhZ21lbnR9IHRvIG1hcmsgdXAgcGFydCBvZiB0aGUgc2VudGVuY2UsIHN1Y2ggYXMgYSBwbHVnaW4gbmFtZSByZW5kZXJlZCBhc1xuICAgKiBjb2RlLiBFYWNoIHJlbmRlciBhcHBlbmRzIGEgZnJlc2ggY2xvbmUgb2YgaXQsIGJlY2F1c2UgdGhlIG5vdGljZSBhbmQgdGhlIGJhbm5lciBlYWNoIG5lZWQgdGhlaXIgb3duXG4gICAqIGNvcHkgYW5kIGFwcGVuZGluZyBhIGZyYWdtZW50IGVtcHRpZXMgaXQuXG4gICAqL1xuICByZWFkb25seSByZWFzb246IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIHVzZXIncyBhbnN3ZXIgdG8gdGhlIHN1Z2dlc3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpc0RlY2xpbmVkIC0gYHRydWVgIHdoZW4gdGhlIHVzZXIgZGVjbGluZWQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgYW5zd2VyIGlzIHBlcnNpc3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldFN1Z2dlc3Rpb25EZWNsaW5lZDogKGlzRGVjbGluZWQ6IGJvb2xlYW4pID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgc3VnZ2VzdGVkIHBsdWdpbiwgYXMgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbiByZWdpc3RyeS5cbiAgICovXG4gIHJlYWRvbmx5IHN1Z2dlc3RlZFBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHN1Z2dlc3RlZCBwbHVnaW4sIHNob3duIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VnZ2VzdGVkUGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhvdyB0aGUgc3VnZ2VzdGVkIHBsdWdpbiBpcyBjdXJyZW50bHkgcHJlc2VudCBpbiB0aGUgdmF1bHQuXG4gKi9cbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZFBsdWdpblN0YXRlID0gSW5zdGFsbGVkUGx1Z2luU3RhdGU7XG5cbi8qKlxuICogU3VnZ2VzdHMgaW5zdGFsbGluZyBhbm90aGVyIGNvbW11bml0eSBwbHVnaW4sIHZpYSBhIGxvYWQtdGltZSBub3RpY2UgYW5kIGEgc2V0dGluZ3MtdGFiIGJhbm5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNTdWdnZXN0aW9uRGVjbGluZWQ6ICgpID0+IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+O1xuICBwcml2YXRlIHJlYWRvbmx5IHJlYXNvbjogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzZXRTdWdnZXN0aW9uRGVjbGluZWQ6IChpc0RlY2xpbmVkOiBib29sZWFuKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IHN1Z2dlc3RlZFBsdWdpbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3VnZ2VzdGVkUGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHtAbGluayBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50fS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUGx1Z2luU3VnZ2VzdGlvbkNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQgPSBwYXJhbXMucGx1Z2luTm90aWNlQ29tcG9uZW50O1xuICAgIHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQgPSBwYXJhbXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQ7XG4gICAgdGhpcy5yZWFzb24gPSBwYXJhbXMucmVhc29uO1xuICAgIHRoaXMuc3VnZ2VzdGVkUGx1Z2luSWQgPSBwYXJhbXMuc3VnZ2VzdGVkUGx1Z2luSWQ7XG4gICAgdGhpcy5zdWdnZXN0ZWRQbHVnaW5OYW1lID0gcGFyYW1zLnN1Z2dlc3RlZFBsdWdpbk5hbWU7XG4gICAgdGhpcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZCA9IHBhcmFtcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZDtcbiAgICB0aGlzLnNldFN1Z2dlc3Rpb25EZWNsaW5lZCA9IHBhcmFtcy5zZXRTdWdnZXN0aW9uRGVjbGluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgaG93IHRoZSBzdWdnZXN0ZWQgcGx1Z2luIGlzIGN1cnJlbnRseSBwcmVzZW50IGluIHRoZSB2YXVsdC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHtAbGluayBTdWdnZXN0ZWRQbHVnaW5TdGF0ZX0uXG4gICAqL1xuICBwdWJsaWMgZ2V0U3VnZ2VzdGVkUGx1Z2luU3RhdGUoKTogU3VnZ2VzdGVkUGx1Z2luU3RhdGUge1xuICAgIHJldHVybiBnZXRJbnN0YWxsZWRQbHVnaW5TdGF0ZSh7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgcGx1Z2luSWQ6IHRoaXMuc3VnZ2VzdGVkUGx1Z2luSWRcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyAod2hlbiBuZWVkZWQpIGFuZCBlbmFibGVzIHRoZSBzdWdnZXN0ZWQgcGx1Z2luLCByZXBvcnRpbmcgdGhlIG91dGNvbWUgYXMgYSBub3RpY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcGx1Z2luIGlzIGVuYWJsZWQsIG9yIG9uY2UgdGhlIGZhaWx1cmUgaGFzIGJlZW5cbiAgICogcmVwb3J0ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5zdGFsbEFuZEVuYWJsZVN1Z2dlc3RlZFBsdWdpbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5nZXRTdWdnZXN0ZWRQbHVnaW5TdGF0ZSgpID09PSBTdWdnZXN0ZWRQbHVnaW5TdGF0ZS5FbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgaW5zdGFsbEFuZEVuYWJsZVBsdWdpbih7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgcGx1Z2luSWQ6IHRoaXMuc3VnZ2VzdGVkUGx1Z2luSWQsXG4gICAgICBwbHVnaW5OYW1lOiB0aGlzLnN1Z2dlc3RlZFBsdWdpbk5hbWUsXG4gICAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50XG4gICAgfSk7XG5cbiAgICAvLyBPbmx5IGFmdGVyIHRoZSBpbnN0YWxsIGFjdHVhbGx5IHN1Y2NlZWRlZCDigJQgYGluc3RhbGxBbmRFbmFibGVQbHVnaW5gIHJldGhyb3dzIG9uIGZhaWx1cmUsIHNvIGFcbiAgICAvLyBmYWlsZWQgYXR0ZW1wdCBsZWF2ZXMgYSBwcmV2aW91cyBkZWNsaW5lIHN0YW5kaW5nIHJhdGhlciB0aGFuIHNpbGVudGx5IGNsZWFyaW5nIGl0LlxuICAgIGF3YWl0IHRoaXMuc2V0U3VnZ2VzdGlvbkRlY2xpbmVkKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgY29tcG9uZW50LCBzaG93aW5nIHRoZSBzdWdnZXN0aW9uIG5vdGljZSBvbmNlIHRoZSBsYXlvdXQgaXMgcmVhZHkgQU5EIHRoZSBob3N0J3Mgc2V0dGluZ3NcbiAgICogaGF2ZSBiZWVuIHJlYWQgZnJvbSBkaXNrLlxuICAgKlxuICAgKiBCb3RoIHdhaXRzIG1hdHRlciwgYW5kIG5laXRoZXIgaW1wbGllcyB0aGUgb3RoZXI6XG4gICAqXG4gICAqIC0gTGF5b3V0LXJlYWR5LCBiZWNhdXNlIHBsdWdpbnMgbG9hZCBpbiBhbiB1bnNwZWNpZmllZCBvcmRlciwgc28gdGhlIHN1Z2dlc3RlZCBwbHVnaW4gbWF5IHdlbGwgYmVcbiAgICogICBlbmFibGVkIGEgbW9tZW50IGFmdGVyIHRoaXMgb25lLiBDaGVja2luZyBlYXJsaWVyIHdvdWxkIHN1Z2dlc3QgaW5zdGFsbGluZyBzb21ldGhpbmcgdGhlIHVzZXJcbiAgICogICBhbHJlYWR5IGhhcy5cbiAgICogLSBTZXR0aW5ncy1sb2FkZWQsIGJlY2F1c2Uge0BsaW5rIFBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZH1cbiAgICogICByZWFkcyBhIHNldHRpbmcgb2YgdGhlIGhvc3QsIGFuZCB0aGUgaG9zdCdzIHNldHRpbmdzIGNvbXBvbmVudCBpcyBhIFNJQkxJTkcgd2hvc2Ugb3duIGFzeW5jIGxvYWQgaXNcbiAgICogICBzdGlsbCBpbiBmbGlnaHQgaGVyZS4gT24gYSBsYXlvdXQgdGhhdCBpcyBhbHJlYWR5IHJlYWR5IOKAlCBhIHJ1bnRpbWUgZW5hYmxlIGZyb20gdGhlIENvbW11bml0eVxuICAgKiAgIFBsdWdpbnMgdGFiLCBvciBhIHJlLWVuYWJsZSBhZnRlciBhbiB1cGRhdGUg4oCUIHRoZSBsYXlvdXQtcmVhZHkgY2FsbGJhY2sgZmlyZXMgaW1tZWRpYXRlbHksIHNvIHRoZVxuICAgKiAgIHJlYWQgd291bGQgc2VlIHRoZSBkZWZhdWx0IGBmYWxzZWAgYW5kIGFzayBhZ2FpbiBhIHVzZXIgd2hvIGhhcyBhbHJlYWR5IGRlY2xpbmVkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENoaWxkKFxuICAgICAgbmV3IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQodGhpcy5hcHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC53aGVuTG9hZGVkRnJvbUZpbGUoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNVbmxvYWRlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbk5vdGljZSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIHN1Z2dlc3Rpb24gYmFubmVyIGludG8gYSBzZXR0aW5ncy10YWIgY29udGFpbmVyLCB3aXRoIGEgYnV0dG9uIHRoYXQgaW5zdGFsbHMgYW5kIGVuYWJsZXNcbiAgICogdGhlIHN1Z2dlc3RlZCBwbHVnaW4uXG4gICAqXG4gICAqIFJlbmRlcnMgbm90aGluZyB3aGVuIHRoZSBzdWdnZXN0ZWQgcGx1Z2luIGlzIGFscmVhZHkgZW5hYmxlZC4gVW5saWtlIHRoZSBub3RpY2UsIHRoZSBiYW5uZXIgaWdub3JlcyBhXG4gICAqIHByZXZpb3VzIGRlY2xpbmUg4oCUIHRoZSB1c2VyIGlzIGxvb2tpbmcgYXQgdGhlc2Ugc2V0dGluZ3MgcmlnaHQgbm93LCB3aGljaCBpcyBhIGZyZXNoZXIgc2lnbmFsIHRoYW4gYW5cbiAgICogYW5zd2VyIHRoZXkgZ2F2ZSBlYXJsaWVyLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgZWxlbWVudCB0byByZW5kZXIgdGhlIGJhbm5lciBpbnRvLlxuICAgKi9cbiAgcHVibGljIHJlbmRlckJhbm5lcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3VnZ2VzdGVkUGx1Z2luU3RhdGUoKTtcbiAgICBpZiAoc3RhdGUgPT09IFN1Z2dlc3RlZFBsdWdpblN0YXRlLkVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYW5uZXJFbCA9IGNvbnRhaW5lckVsLmNyZWF0ZURpdih7XG4gICAgICBjbHM6IFtDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgQ3NzQ2xhc3MuUGx1Z2luU3VnZ2VzdGlvbkJhbm5lcl1cbiAgICB9KTtcbiAgICBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lKGJhbm5lckVsLmNyZWF0ZURpdigpLCB0aGlzLnJlYXNvbik7XG5cbiAgICBuZXcgQnV0dG9uQ29tcG9uZW50KGJhbm5lckVsKVxuICAgICAgLnNldEJ1dHRvblRleHQodGhpcy5nZXRBY3Rpb25CdXR0b25UZXh0KHN0YXRlKSlcbiAgICAgIC5zZXRDdGEoKVxuICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbnN0YWxsQW5kRW5hYmxlU3VnZ2VzdGVkUGx1Z2luKCk7XG4gICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGlvbkJ1dHRvblRleHQoc3RhdGU6IFN1Z2dlc3RlZFBsdWdpblN0YXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdCgoJCkgPT5cbiAgICAgIHN0YXRlID09PSBTdWdnZXN0ZWRQbHVnaW5TdGF0ZS5JbnN0YWxsZWRCdXREaXNhYmxlZFxuICAgICAgICA/ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5TdWdnZXN0aW9uLmVuYWJsZVxuICAgICAgICA6ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5TdWdnZXN0aW9uLmluc3RhbGxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93U3VnZ2VzdGlvbk5vdGljZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3VnZ2VzdGVkUGx1Z2luU3RhdGUoKTtcbiAgICBpZiAoc3RhdGUgPT09IFN1Z2dlc3RlZFBsdWdpblN0YXRlLkVuYWJsZWQgfHwgdGhpcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudCgoZnJhZ21lbnRFbCkgPT4ge1xuICAgICAgYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZShmcmFnbWVudEVsLmNyZWF0ZURpdigpLCB0aGlzLnJlYXNvbik7XG4gICAgICBjb25zdCBidXR0b25zRWwgPSBmcmFnbWVudEVsLmNyZWF0ZURpdigpO1xuXG4gICAgICBuZXcgQnV0dG9uQ29tcG9uZW50KGJ1dHRvbnNFbClcbiAgICAgICAgLnNldEJ1dHRvblRleHQodGhpcy5nZXRBY3Rpb25CdXR0b25UZXh0KHN0YXRlKSlcbiAgICAgICAgLnNldEN0YSgpXG4gICAgICAgIC5vbkNsaWNrKGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5pbnN0YWxsQW5kRW5hYmxlU3VnZ2VzdGVkUGx1Z2luKCk7XG4gICAgICAgIH0pKTtcblxuICAgICAgbmV3IEJ1dHRvbkNvbXBvbmVudChidXR0b25zRWwpXG4gICAgICAgIC5zZXRCdXR0b25UZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5TdWdnZXN0aW9uLm5vdE5vdykpXG4gICAgICAgIC5vbkNsaWNrKGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXRTdWdnZXN0aW9uRGVjbGluZWQodHJ1ZSk7XG4gICAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UoZnJhZ21lbnQsIHsgc2hvdWxkSGlkZU9uQ2xpY2s6IGZhbHNlIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0JBLFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMsdUJBQXVCO0FBS2hDLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsaUNBQWlDO0FBQzFDLFNBQVMsU0FBUztBQUNsQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG1CQUFtQjtBQUM1QixTQUFTLG9DQUFvQztBQVN0QyxNQUFNLHVCQUF1QjtBQTZFN0IsTUFBTSxrQ0FBa0MsWUFBWTtBQUFBLEVBQ3hDO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9WLFlBQVksUUFBb0Q7QUFDckUsVUFBTTtBQUNOLFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssd0JBQXdCLE9BQU87QUFDcEMsU0FBSywwQkFBMEIsT0FBTztBQUN0QyxTQUFLLFNBQVMsT0FBTztBQUNyQixTQUFLLG9CQUFvQixPQUFPO0FBQ2hDLFNBQUssc0JBQXNCLE9BQU87QUFDbEMsU0FBSyx1QkFBdUIsT0FBTztBQUNuQyxTQUFLLHdCQUF3QixPQUFPO0FBQUEsRUFDdEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTywwQkFBZ0Q7QUFDckQsV0FBTyx3QkFB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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29tcG9uZW50IHRoYXQgc3VnZ2VzdHMgaW5zdGFsbGluZyBhbm90aGVyIGNvbW11bml0eSBwbHVnaW4gdGhlIGhvc3QgcGx1Z2luIG5lZWRzIGluIG9yZGVyIHRvIG9mZmVyXG4gKiBzb21lIG9mIGl0cyBiZWhhdmlvci5cbiAqXG4gKiBBIHN1Z2dlc3Rpb24gaXMgbm90IGEgZGVwZW5kZW5jeSDigJQgYnV0IGEgZGVwZW5kZW5jeSBpcyBub3cgYSB0aGluZyB0aGlzIGxpYnJhcnkgSEFTLCBzbyB0aGUgY2hvaWNlXG4gKiBiZXR3ZWVuIHRoZW0gaXMgYSByZWFsIG9uZS4gVXNlIGEgc3VnZ2VzdGlvbiB3aGVuIHRoZSBvdGhlciBwbHVnaW4gQUREUyBzb21ldGhpbmc6IHRoZSBob3N0IGtlZXBzXG4gKiB3b3JraW5nIHdpdGhvdXQgaXQsIHNpbXBseSB1bmFibGUgdG8gb2ZmZXIgd2hhdGV2ZXIgdGhhdCBwbHVnaW4gb3ducywgYW5kIHRoaXMgY29tcG9uZW50IGFza3Mgb25jZVxuICogd2hldGhlciB0aGUgdXNlciB3b3VsZCBsaWtlIGl0IGluc3RhbGxlZC4gVXNlIGBQbHVnaW5HYXRlQ29tcG9uZW50YCB3aGVuIHRoZSBob3N0J3MgYWR2ZXJ0aXNlZFxuICogYmVoYXZpb3IgaXMgbm90IHRoZXJlIGF0IGFsbCB3aXRob3V0IHRoZSBvdGhlciBwbHVnaW4uXG4gKlxuICogVGhpcyBmaWxlIHVzZWQgdG8gYXJndWUgdGhlIHN0cm9uZ2VyIHBvc2l0aW9uIOKAlCB0aGF0IHJlcXVpcmluZyBhbm90aGVyIHBsdWdpbiBzaG91bGQgbm90IGV4aXN0LCBiZWNhdXNlXG4gKiBcImludmVudGluZyBvbmUgYnkgcmVmdXNpbmcgdG8gbG9hZCB3b3VsZCBwdW5pc2ggdGhlIHVzZXIgZm9yIHNvbWV0aGluZyB0aGV5IG5ldmVyIGFncmVlZCB0b1wiLiBUaGF0IHdhc1xuICogd3JvbmcgYWJvdXQgd2hpY2ggb3B0aW9uIHB1bmlzaGVzIHRoZSB1c2VyLCBhbmQgdGhlIGNvdW50ZXItY2FzZSBpcyB3b3J0aCBrZWVwaW5nIHJhdGhlciB0aGFuIHF1aWV0bHlcbiAqIGRlbGV0aW5nLiBBIGxvYWQtYmVhcmluZyBwbHVnaW4gdGhlIHVzZXIgY2Fubm90IGlkZW50aWZ5IGlzIG5vdCBhIG5ldXRyYWwgb3V0Y29tZTogbW9udGhzIGxhdGVyIHRoZXlcbiAqIG1lZXQgaXQgaW4gdGhlaXIgcGx1Z2luIGxpc3QsIG5vdGhpbmcgaW4gT2JzaWRpYW4ncyBtYW5pZmVzdCBmb3JtYXQgc2F5cyBhbnl0aGluZyBkZXBlbmRzIG9uIGl0LCB0aGV5XG4gKiByZW1vdmUgaXQsIGFuZCB0aGUgZGFtYWdlIHN1cmZhY2VzIHdlZWtzIGFmdGVyIHRoYXQgd2l0aCBubyB3YXkgdG8gY29ubmVjdCB0aGUgdHdvLiBCZXNpZGUgdGhhdCwgYVxuICogbWFuZGF0b3J5IGRlcGVuZGVuY3kgdGhhdCBzdGF5cyBlbmFibGVkLWJ1dC1pbmVydCwgbmFtZXMgd2hhdCBpdCBpcyB3YWl0aW5nIGZvciwgaW5zdGFsbHMgaXQgaW4gb25lXG4gKiBjbGljayBhbmQgcmVzdW1lcyB3aXRob3V0IGEgcmVzdGFydCBpcyBub3QgYSBwdW5pc2htZW50IOKAlCBpdCBpcyB0aGUgc2FtZSBpbmZvcm1hdGlvbiwgZGVsaXZlcmVkIHdoaWxlXG4gKiB0aGUgdXNlciBjYW4gc3RpbGwgYWN0IG9uIGl0LlxuICpcbiAqIFRoZSBhc2sgaXMgc3VyZmFjZWQgdHdpY2UsIGRlbGliZXJhdGVseSwgYmVjYXVzZSB0aGUgdHdvIHBsYWNlbWVudHMgYW5zd2VyIGRpZmZlcmVudCBxdWVzdGlvbnM6XG4gKiBhIG5vdGljZSBvbiBsb2FkIChcInlvdSBhcmUgbWlzc2luZyBzb21ldGhpbmcgeW91IHByb2JhYmx5IHdhbnRcIikgYW5kIGEgc2V0dGluZ3MtdGFiIGJhbm5lciAoXCJ0aGVcbiAqIHNldHRpbmdzIHlvdSBjYW1lIGxvb2tpbmcgZm9yIGxpdmUgaW4gYW5vdGhlciBwbHVnaW5cIikuIERlY2xpbmluZyBzaWxlbmNlcyBvbmx5IHRoZSBub3RpY2Ug4oCUIGEgdXNlclxuICogd2hvIG9wZW5zIHRoZSBzZXR0aW5ncyB0YWIgaXMgYXNraW5nIGFib3V0IHRoZSBmZWF0dXJlIHJpZ2h0IHRoZW4sIHNvIHRoZSBiYW5uZXIgc3RheXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb252ZXJ0QXN5bmNUb1N5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lIH0gZnJvbSAnLi4vaHRtbC1lbGVtZW50LnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHtcbiAgZ2V0SW5zdGFsbGVkUGx1Z2luU3RhdGUsXG4gIGluc3RhbGxBbmRFbmFibGVQbHVnaW4sXG4gIEluc3RhbGxlZFBsdWdpblN0YXRlXG59IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4taW5zdGFsbC1zdGF0ZS50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIEhvdyB0aGUgc3VnZ2VzdGVkIHBsdWdpbiBpcyBjdXJyZW50bHkgcHJlc2VudCBpbiB0aGUgdmF1bHQuXG4gKlxuICogVGhlIHNhbWUgdGhyZWUgc3RhdGVzIGEgbWFuZGF0b3J5IGRlcGVuZGVuY3kgaXMgaW4sIHNvIHRoaXMgaXMge0BsaW5rIEluc3RhbGxlZFBsdWdpblN0YXRlfSB1bmRlciB0aGVcbiAqIG5hbWUgdGhpcyBjb21wb25lbnQgaGFzIGFsd2F5cyB1c2VkIOKAlCBvbmUgZW51bSwgc28gYSBjYWxsZXIgaG9sZGluZyBhIHN0YXRlIGZyb20gZWl0aGVyIGNvbXBvbmVudCBjYW5cbiAqIGNvbXBhcmUgaXQgYWdhaW5zdCBlaXRoZXIgbmFtZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN1Z2dlc3RlZFBsdWdpblN0YXRlID0gSW5zdGFsbGVkUGx1Z2luU3RhdGU7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGRlY2xpbmVkIHRoaXMgc3VnZ2VzdGlvbi5cbiAgICpcbiAgICogU3RvcmFnZSBiZWxvbmdzIHRvIHRoZSBob3N0IHBsdWdpbiAodHlwaWNhbGx5IG9uZSBvZiBpdHMgc2V0dGluZ3MpLCBiZWNhdXNlIHRoaXMgY29tcG9uZW50IGhhcyBub1xuICAgKiBgZGF0YS5qc29uYCBvZiBpdHMgb3duIGFuZCBhIGRlY2xpbmUgaGFzIHRvIG91dGxpdmUgYSByZWxvYWQuXG4gICAqXG4gICAqIE9ubHkgZXZlciBjYWxsZWQgb25jZSB7QGxpbmsgcGx1Z2luU2V0dGluZ3NDb21wb25lbnR9IHJlcG9ydHMgaXRzIHNldHRpbmdzIGxvYWRlZCwgc28gYW4gaW1wbGVtZW50YXRpb25cbiAgICogcmVhZGluZyBhIHNldHRpbmcgaXMgZ3VhcmFudGVlZCB0byByZWFkIHRoZSBzdG9yZWQgdmFsdWUgcmF0aGVyIHRoYW4gaXRzIGRlZmF1bHQuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBzdWdnZXN0aW9uIGhhcyBiZWVuIGRlY2xpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNTdWdnZXN0aW9uRGVjbGluZWQ6ICgpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBub3RpY2UgY29tcG9uZW50IG9mIHRoZSBwbHVnaW4gbWFraW5nIHRoZSBzdWdnZXN0aW9uLCB1c2VkIHRvIHNob3cgdGhlIHN1Z2dlc3Rpb24gYW5kIGl0c1xuICAgKiBvdXRjb21lLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBjb21wb25lbnQgaG9sZGluZyB3aGF0ZXZlciB7QGxpbmsgaXNTdWdnZXN0aW9uRGVjbGluZWR9IHJlYWRzLlxuICAgKlxuICAgKiBUYWtlbiBhcyBhIHdob2xlIGNvbXBvbmVudCByYXRoZXIgdGhhbiBhcyBhIGJhcmUgXCJyZWFkeVwiIGZsYWcgc28gdGhlIGhvc3QgY2Fubm90IGZvcmdldCB0byB3aXJlIHRoZVxuICAgKiB3YWl0OiB0aGUgbm90aWNlIGlzIGRlY2lkZWQgb25seSBhZnRlciB0aGlzIGNvbXBvbmVudCBoYXMgcmVhZCBgZGF0YS5qc29uYC4gU2VlXG4gICAqIHtAbGluayBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2Uud2hlbkxvYWRlZEZyb21GaWxlfSBmb3Igd2h5IHRoZSByZWFkIGNhbm5vdCBzaW1wbHkgaGFwcGVuIGF0XG4gICAqIGxheW91dC1yZWFkeS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQaWNrPFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+LCAnd2hlbkxvYWRlZEZyb21GaWxlJz47XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhbGl6ZWQgc2VudGVuY2UgZXhwbGFpbmluZyB3aGF0IHRoZSBob3N0IHBsdWdpbiBjYW5ub3QgZG8gd2l0aG91dCB0aGUgc3VnZ2VzdGVkIHBsdWdpbi4gVGhlXG4gICAqIGhvc3QgcGx1Z2luIG93bnMgdGhpcyBzdHJpbmc6IG9ubHkgaXQga25vd3Mgd2hpY2ggb2YgaXRzIGZlYXR1cmVzIGFyZSBhZmZlY3RlZC5cbiAgICpcbiAgICogUGFzcyBhIHtAbGluayBEb2N1bWVudEZyYWdtZW50fSB0byBtYXJrIHVwIHBhcnQgb2YgdGhlIHNlbnRlbmNlLCBzdWNoIGFzIGEgcGx1Z2luIG5hbWUgcmVuZGVyZWQgYXNcbiAgICogY29kZS4gRWFjaCByZW5kZXIgYXBwZW5kcyBhIGZyZXNoIGNsb25lIG9mIGl0LCBiZWNhdXNlIHRoZSBub3RpY2UgYW5kIHRoZSBiYW5uZXIgZWFjaCBuZWVkIHRoZWlyIG93blxuICAgKiBjb3B5IGFuZCBhcHBlbmRpbmcgYSBmcmFnbWVudCBlbXB0aWVzIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWNvcmRzIHRoZSB1c2VyJ3MgYW5zd2VyIHRvIHRoZSBzdWdnZXN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaXNEZWNsaW5lZCAtIGB0cnVlYCB3aGVuIHRoZSB1c2VyIGRlY2xpbmVkLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGFuc3dlciBpcyBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBzZXRTdWdnZXN0aW9uRGVjbGluZWQ6IChpc0RlY2xpbmVkOiBib29sZWFuKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHN1Z2dlc3RlZCBwbHVnaW4sIGFzIGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW4gcmVnaXN0cnkuXG4gICAqL1xuICByZWFkb25seSBzdWdnZXN0ZWRQbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSBzdWdnZXN0ZWQgcGx1Z2luLCBzaG93biB0byB0aGUgdXNlci5cbiAgICovXG4gIHJlYWRvbmx5IHN1Z2dlc3RlZFBsdWdpbk5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBIb3cgdGhlIHN1Z2dlc3RlZCBwbHVnaW4gaXMgY3VycmVudGx5IHByZXNlbnQgaW4gdGhlIHZhdWx0LlxuICovXG5leHBvcnQgdHlwZSBTdWdnZXN0ZWRQbHVnaW5TdGF0ZSA9IEluc3RhbGxlZFBsdWdpblN0YXRlO1xuXG4vKipcbiAqIFN1Z2dlc3RzIGluc3RhbGxpbmcgYW5vdGhlciBjb21tdW5pdHkgcGx1Z2luLCB2aWEgYSBsb2FkLXRpbWUgbm90aWNlIGFuZCBhIHNldHRpbmdzLXRhYiBiYW5uZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzU3VnZ2VzdGlvbkRlY2xpbmVkOiAoKSA9PiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbk5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQaWNrPFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+LCAnd2hlbkxvYWRlZEZyb21GaWxlJz47XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVhc29uOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldFN1Z2dlc3Rpb25EZWNsaW5lZDogKGlzRGVjbGluZWQ6IGJvb2xlYW4pID0+IFByb21pc2FibGU8dm9pZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgc3VnZ2VzdGVkUGx1Z2luSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzdWdnZXN0ZWRQbHVnaW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIFBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnR9LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLnBsdWdpbk5vdGljZUNvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG4gICAgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICB0aGlzLnJlYXNvbiA9IHBhcmFtcy5yZWFzb247XG4gICAgdGhpcy5zdWdnZXN0ZWRQbHVnaW5JZCA9IHBhcmFtcy5zdWdnZXN0ZWRQbHVnaW5JZDtcbiAgICB0aGlzLnN1Z2dlc3RlZFBsdWdpbk5hbWUgPSBwYXJhbXMuc3VnZ2VzdGVkUGx1Z2luTmFtZTtcbiAgICB0aGlzLmlzU3VnZ2VzdGlvbkRlY2xpbmVkID0gcGFyYW1zLmlzU3VnZ2VzdGlvbkRlY2xpbmVkO1xuICAgIHRoaXMuc2V0U3VnZ2VzdGlvbkRlY2xpbmVkID0gcGFyYW1zLnNldFN1Z2dlc3Rpb25EZWNsaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBob3cgdGhlIHN1Z2dlc3RlZCBwbHVnaW4gaXMgY3VycmVudGx5IHByZXNlbnQgaW4gdGhlIHZhdWx0LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUge0BsaW5rIFN1Z2dlc3RlZFBsdWdpblN0YXRlfS5cbiAgICovXG4gIHB1YmxpYyBnZXRTdWdnZXN0ZWRQbHVnaW5TdGF0ZSgpOiBTdWdnZXN0ZWRQbHVnaW5TdGF0ZSB7XG4gICAgcmV0dXJuIGdldEluc3RhbGxlZFBsdWdpblN0YXRlKHtcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBwbHVnaW5JZDogdGhpcy5zdWdnZXN0ZWRQbHVnaW5JZFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGxzICh3aGVuIG5lZWRlZCkgYW5kIGVuYWJsZXMgdGhlIHN1Z2dlc3RlZCBwbHVnaW4sIHJlcG9ydGluZyB0aGUgb3V0Y29tZSBhcyBhIG5vdGljZS5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCwgb3Igb25jZSB0aGUgZmFpbHVyZSBoYXMgYmVlblxuICAgKiByZXBvcnRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpbnN0YWxsQW5kRW5hYmxlU3VnZ2VzdGVkUGx1Z2luKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmdldFN1Z2dlc3RlZFBsdWdpblN0YXRlKCkgPT09IFN1Z2dlc3RlZFBsdWdpblN0YXRlLkVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCBpbnN0YWxsQW5kRW5hYmxlUGx1Z2luKHtcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBwbHVnaW5JZDogdGhpcy5zdWdnZXN0ZWRQbHVnaW5JZCxcbiAgICAgIHBsdWdpbk5hbWU6IHRoaXMuc3VnZ2VzdGVkUGx1Z2luTmFtZSxcbiAgICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudDogdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnRcbiAgICB9KTtcblxuICAgIC8vIE9ubHkgYWZ0ZXIgdGhlIGluc3RhbGwgYWN0dWFsbHkgc3VjY2VlZGVkIOKAlCBgaW5zdGFsbEFuZEVuYWJsZVBsdWdpbmAgcmV0aHJvd3Mgb24gZmFpbHVyZSwgc28gYVxuICAgIC8vIGZhaWxlZCBhdHRlbXB0IGxlYXZlcyBhIHByZXZpb3VzIGRlY2xpbmUgc3RhbmRpbmcgcmF0aGVyIHRoYW4gc2lsZW50bHkgY2xlYXJpbmcgaXQuXG4gICAgYXdhaXQgdGhpcy5zZXRTdWdnZXN0aW9uRGVjbGluZWQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjb21wb25lbnQsIHNob3dpbmcgdGhlIHN1Z2dlc3Rpb24gbm90aWNlIG9uY2UgdGhlIGxheW91dCBpcyByZWFkeSBBTkQgdGhlIGhvc3QncyBzZXR0aW5nc1xuICAgKiBoYXZlIGJlZW4gcmVhZCBmcm9tIGRpc2suXG4gICAqXG4gICAqIEJvdGggd2FpdHMgbWF0dGVyLCBhbmQgbmVpdGhlciBpbXBsaWVzIHRoZSBvdGhlcjpcbiAgICpcbiAgICogLSBMYXlvdXQtcmVhZHksIGJlY2F1c2UgcGx1Z2lucyBsb2FkIGluIGFuIHVuc3BlY2lmaWVkIG9yZGVyLCBzbyB0aGUgc3VnZ2VzdGVkIHBsdWdpbiBtYXkgd2VsbCBiZVxuICAgKiAgIGVuYWJsZWQgYSBtb21lbnQgYWZ0ZXIgdGhpcyBvbmUuIENoZWNraW5nIGVhcmxpZXIgd291bGQgc3VnZ2VzdCBpbnN0YWxsaW5nIHNvbWV0aGluZyB0aGUgdXNlclxuICAgKiAgIGFscmVhZHkgaGFzLlxuICAgKiAtIFNldHRpbmdzLWxvYWRlZCwgYmVjYXVzZSB7QGxpbmsgUGx1Z2luU3VnZ2VzdGlvbkNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zLmlzU3VnZ2VzdGlvbkRlY2xpbmVkfVxuICAgKiAgIHJlYWRzIGEgc2V0dGluZyBvZiB0aGUgaG9zdCwgYW5kIHRoZSBob3N0J3Mgc2V0dGluZ3MgY29tcG9uZW50IGlzIGEgU0lCTElORyB3aG9zZSBvd24gYXN5bmMgbG9hZCBpc1xuICAgKiAgIHN0aWxsIGluIGZsaWdodCBoZXJlLiBPbiBhIGxheW91dCB0aGF0IGlzIGFscmVhZHkgcmVhZHkg4oCUIGEgcnVudGltZSBlbmFibGUgZnJvbSB0aGUgQ29tbXVuaXR5XG4gICAqICAgUGx1Z2lucyB0YWIsIG9yIGEgcmUtZW5hYmxlIGFmdGVyIGFuIHVwZGF0ZSDigJQgdGhlIGxheW91dC1yZWFkeSBjYWxsYmFjayBmaXJlcyBpbW1lZGlhdGVseSwgc28gdGhlXG4gICAqICAgcmVhZCB3b3VsZCBzZWUgdGhlIGRlZmF1bHQgYGZhbHNlYCBhbmQgYXNrIGFnYWluIGEgdXNlciB3aG8gaGFzIGFscmVhZHkgZGVjbGluZWQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb25sb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQ2hpbGQoXG4gICAgICBuZXcgQ2FsbGJhY2tMYXlvdXRSZWFkeUNvbXBvbmVudCh0aGlzLmFwcCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LndoZW5Mb2FkZWRGcm9tRmlsZSgpO1xuICAgICAgICBpZiAodGhpcy5pc1VubG9hZGVkKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNob3dTdWdnZXN0aW9uTm90aWNlKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgc3VnZ2VzdGlvbiBiYW5uZXIgaW50byBhIHNldHRpbmdzLXRhYiBjb250YWluZXIsIHdpdGggYSBidXR0b24gdGhhdCBpbnN0YWxscyBhbmQgZW5hYmxlc1xuICAgKiB0aGUgc3VnZ2VzdGVkIHBsdWdpbi5cbiAgICpcbiAgICogUmVuZGVycyBub3RoaW5nIHdoZW4gdGhlIHN1Z2dlc3RlZCBwbHVnaW4gaXMgYWxyZWFkeSBlbmFibGVkLiBVbmxpa2UgdGhlIG5vdGljZSwgdGhlIGJhbm5lciBpZ25vcmVzIGFcbiAgICogcHJldmlvdXMgZGVjbGluZSDigJQgdGhlIHVzZXIgaXMgbG9va2luZyBhdCB0aGVzZSBzZXR0aW5ncyByaWdodCBub3csIHdoaWNoIGlzIGEgZnJlc2hlciBzaWduYWwgdGhhbiBhblxuICAgKiBhbnN3ZXIgdGhleSBnYXZlIGVhcmxpZXIuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJFbCAtIFRoZSBlbGVtZW50IHRvIHJlbmRlciB0aGUgYmFubmVyIGludG8uXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyQmFubmVyKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRTdWdnZXN0ZWRQbHVnaW5TdGF0ZSgpO1xuICAgIGlmIChzdGF0ZSA9PT0gU3VnZ2VzdGVkUGx1Z2luU3RhdGUuRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhbm5lckVsID0gY29udGFpbmVyRWwuY3JlYXRlRGl2KHtcbiAgICAgIGNsczogW0Nzc0NsYXNzLkxpYnJhcnlOYW1lLCBDc3NDbGFzcy5QbHVnaW5TdWdnZXN0aW9uQmFubmVyXVxuICAgIH0pO1xuICAgIGFwcGVuZFRleHRPckZyYWdtZW50Q2xvbmUoYmFubmVyRWwuY3JlYXRlRGl2KCksIHRoaXMucmVhc29uKTtcblxuICAgIG5ldyBCdXR0b25Db21wb25lbnQoYmFubmVyRWwpXG4gICAgICAuc2V0QnV0dG9uVGV4dCh0aGlzLmdldEFjdGlvbkJ1dHRvblRleHQoc3RhdGUpKVxuICAgICAgLnNldEN0YSgpXG4gICAgICAub25DbGljayhjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmluc3RhbGxBbmRFbmFibGVTdWdnZXN0ZWRQbHVnaW4oKTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aW9uQnV0dG9uVGV4dChzdGF0ZTogU3VnZ2VzdGVkUGx1Z2luU3RhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0KCgkKSA9PlxuICAgICAgc3RhdGUgPT09IFN1Z2dlc3RlZFBsdWdpblN0YXRlLkluc3RhbGxlZEJ1dERpc2FibGVkXG4gICAgICAgID8gJC5vYnNpZGlhbkRldlV0aWxzLnBsdWdpblN1Z2dlc3Rpb24uZW5hYmxlXG4gICAgICAgIDogJC5vYnNpZGlhbkRldlV0aWxzLnBsdWdpblN1Z2dlc3Rpb24uaW5zdGFsbFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNob3dTdWdnZXN0aW9uTm90aWNlKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRTdWdnZXN0ZWRQbHVnaW5TdGF0ZSgpO1xuICAgIGlmIChzdGF0ZSA9PT0gU3VnZ2VzdGVkUGx1Z2luU3RhdGUuRW5hYmxlZCB8fCB0aGlzLmlzU3VnZ2VzdGlvbkRlY2xpbmVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50KChmcmFnbWVudEVsKSA9PiB7XG4gICAgICBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lKGZyYWdtZW50RWwuY3JlYXRlRGl2KCksIHRoaXMucmVhc29uKTtcbiAgICAgIGNvbnN0IGJ1dHRvbnNFbCA9IGZyYWdtZW50RWwuY3JlYXRlRGl2KCk7XG5cbiAgICAgIG5ldyBCdXR0b25Db21wb25lbnQoYnV0dG9uc0VsKVxuICAgICAgICAuc2V0QnV0dG9uVGV4dCh0aGlzLmdldEFjdGlvbkJ1dHRvblRleHQoc3RhdGUpKVxuICAgICAgICAuc2V0Q3RhKClcbiAgICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmluc3RhbGxBbmRFbmFibGVTdWdnZXN0ZWRQbHVnaW4oKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICBuZXcgQnV0dG9uQ29tcG9uZW50KGJ1dHRvbnNFbClcbiAgICAgICAgLnNldEJ1dHRvblRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnBsdWdpblN1Z2dlc3Rpb24ubm90Tm93KSlcbiAgICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldFN1Z2dlc3Rpb25EZWNsaW5lZCh0cnVlKTtcbiAgICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZShmcmFnbWVudCwgeyBzaG91bGRIaWRlT25DbGljazogZmFsc2UgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQkEsU0FBUywwQkFBMEI7QUFDbkMsU0FBUyx1QkFBdUI7QUFLaEMsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxpQ0FBaUM7QUFDMUMsU0FBUyxTQUFTO0FBQ2xCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsb0NBQW9DO0FBU3RDLE1BQU0sdUJBQXVCO0FBNkU3QixNQUFNLGtDQUFrQyxZQUFZO0FBQUEsRUFDeEM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1YsWUFBWSxRQUFvRDtBQUNyRSxVQUFNO0FBQ04sU0FBSyxNQUFNLE9BQU87QUFDbEIsU0FBSyx3QkFBd0IsT0FBTztBQUNwQyxTQUFLLDBCQUEwQixPQUFPO0FBQ3RDLFNBQUssU0FBUyxPQUFPO0FBQ3JCLFNBQUssb0JBQW9CLE9BQU87QUFDaEMsU0FBSyxzQkFBc0IsT0FBTztBQUNsQyxTQUFLLHVCQUF1QixPQUFPO0FBQ25DLFNBQUssd0JBQXdCLE9BQU87QUFBQSxFQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLDBCQUFnRDtBQUNyRCxXQUFPLHdCQUF3QjtBQUFBLE1BQzdCLEtBQUssS0FBSztBQUFBLE1BQ1YsVUFBVSxLQUFLO0FBQUEsSUFDakIsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE1BQWEsa0NBQWlEO0FBQzVELFFBQUksS0FBSyx3QkFBd0IsTUFBTSxxQkFBcUIsU0FBUztBQUNuRTtBQUFBLElBQ0Y7QUFFQSxVQUFNLHVCQUF1QjtBQUFBLE1BQzNCLEtBQUssS0FBSztBQUFBLE1BQ1YsVUFBVSxLQUFLO0FBQUEsTUFDZixZQUFZLEtBQUs7QUFBQSxNQUNqQix1QkFBdUIsS0FBSztBQUFBLElBQzlCLENBQUM7QUFJRCxVQUFNLEtBQUssc0JBQXNCLEtBQUs7QUFBQSxFQUN4QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBaUJnQixTQUFlO0FBQzdCLFNBQUs7QUFBQSxNQUNILElBQUksNkJBQTZCLEtBQUssS0FBSyxZQUFZO0FBQ3JELGNBQU0sS0FBSyx3QkFBd0IsbUJBQW1CO0FBQ3RELFlBQUksS0FBSyxXQUFXLEdBQUc7QUFDckI7QUFBQSxRQUNGO0FBRUEsYUFBSyxxQkFBcUI7QUFBQSxNQUM1QixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBWU8sYUFBYSxhQUFnQztBQUNsRCxVQUFNLFFBQVEsS0FBSyx3QkFBd0I7QUFDM0MsUUFBSSxVQUFVLHFCQUFxQixTQUFTO0FBQzFDO0FBQUEsSUFDRjtBQUVBLFVBQU0sV0FBVyxZQUFZLFVBQVU7QUFBQSxNQUNyQyxLQUFLLENBQUMsU0FBUyxhQUFhLFNBQVMsc0JBQXNCO0FBQUEsSUFDN0QsQ0FBQztBQUNELDhCQUEwQixTQUFTLFVBQVUsR0FBRyxLQUFLLE1BQU07QUFFM0QsUUFBSSxnQkFBZ0IsUUFBUSxFQUN6QixjQUFjLEtBQUssb0JBQW9CLEtBQUssQ0FBQyxFQUM3QyxPQUFPLEVBQ1AsUUFBUSxtQkFBbUIsWUFBWTtBQUN0QyxZQUFNLEtBQUssZ0NBQWdDO0FBQUEsSUFDN0MsQ0FBQyxDQUFDO0FBQUEsRUFDTjtBQUFBLEVBRVEsb0JBQW9CLE9BQXFDO0FBQy9ELFdBQU87QUFBQSxNQUFFLENBQUMsTUFDUixVQUFVLHFCQUFxQix1QkFDM0IsRUFBRSxpQkFBaUIsaUJBQWlCLFNBQ3BDLEVBQUUsaUJBQWlCLGlCQUFpQjtBQUFBLElBQzFDO0FBQUEsRUFDRjtBQUFBLEVBRVEsdUJBQTZCO0FBQ25DLFVBQU0sUUFBUSxLQUFLLHdCQUF3QjtBQUMzQyxRQUFJLFVBQVUscUJBQXFCLFdBQVcsS0FBSyxxQkFBcUIsR0FBRztBQUN6RTtBQUFBLElBQ0Y7QUFFQSxVQUFNLFdBQVcsZUFBZSxDQUFDLGVBQWU7QUFDOUMsZ0NBQTBCLFdBQVcsVUFBVSxHQUFHLEtBQUssTUFBTTtBQUM3RCxZQUFNLFlBQVksV0FBVyxVQUFVO0FBRXZDLFVBQUksZ0JBQWdCLFNBQVMsRUFDMUIsY0FBYyxLQUFLLG9CQUFvQixLQUFLLENBQUMsRUFDN0MsT0FBTyxFQUNQLFFBQVEsbUJBQW1CLFlBQVk7QUFDdEMsY0FBTSxLQUFLLGdDQUFnQztBQUFBLE1BQzdDLENBQUMsQ0FBQztBQUVKLFVBQUksZ0JBQWdCLFNBQVMsRUFDMUIsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixpQkFBaUIsTUFBTSxDQUFDLEVBQ2xFLFFBQVEsbUJBQW1CLFlBQVk7QUFDdEMsY0FBTSxLQUFLLHNCQUFzQixJQUFJO0FBQUEsTUFDdkMsQ0FBQyxDQUFDO0FBQUEsSUFDTixDQUFDO0FBRUQsU0FBSyxzQkFBc0IsV0FBVyxVQUFVLEVBQUUsbUJBQW1CLE1BQU0sQ0FBQztBQUFBLEVBQzlFO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -67,7 +67,7 @@ export interface SettingsMigrationComponentConstructorParams<TMigratableSettings
67
67
  * Taken as a whole component rather than as a bare "ready" flag so the host cannot forget to wire the wait:
68
68
  * whatever {@link getProposedSettings} reads is meaningless until this component has read `data.json`.
69
69
  */
70
- readonly pluginSettingsComponent: PluginSettingsComponentBase<object>;
70
+ readonly pluginSettingsComponent: Pick<PluginSettingsComponentBase<object>, 'on'>;
71
71
  /**
72
72
  * The `manifest.id` of the plugin that owns these settings now, as listed in Obsidian's community plugin
73
73
  * registry.
@@ -113,4 +113,4 @@ class SettingsMigrationComponent extends ComponentEx {
113
113
  export {
114
114
  SettingsMigrationComponent
115
115
  };
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IG9mZmVycyBzZXR0aW5ncyB0aGlzIHBsdWdpbiB1c2VkIHRvIG93biB0byB0aGUgcGx1Z2luIHRoYXQgb3ducyB0aGVtIG5vdywgb25jZSwgdGhyb3VnaFxuICogdGhhdCBwbHVnaW4ncyBwdWJsaWMgQVBJLlxuICpcbiAqIFRoaXMgaXMgdGhlIG90aGVyIGhhbGYgb2Yge0BsaW5rIGNvbXBvbmVudHMvcGx1Z2luLXN1Z2dlc3Rpb24tY29tcG9uZW50IVBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnR9LlxuICogVGhlIHN1Z2dlc3Rpb24gYXNrcyB0aGUgdXNlciB0byBpbnN0YWxsIHRoZSBwbHVnaW4gdGhhdCB0b29rIGEgZmVhdHVyZSBvdmVyOyB0aGlzIGNhcnJpZXMgdGhlIHNldHRpbmdzIHRoZXlcbiAqIGhhZCBjb25maWd1cmVkIGZvciBpdCBhY3Jvc3MsIHNvIHRha2luZyB0aGUgc3VnZ2VzdGlvbiBkb2VzIG5vdCBtZWFuIHJlLWVudGVyaW5nIGV2ZXJ5dGhpbmcgYnkgaGFuZC5cbiAqXG4gKiBBIHByb3Bvc2luZyBwbHVnaW4gbmV2ZXIgd3JpdGVzIGludG8gYW5vdGhlciBwbHVnaW4ncyBgZGF0YS5qc29uYC4gSXQgUFJPUE9TRVM6IHRoZSBvdGhlciBwbHVnaW4gb3ducyB0aGVcbiAqIHNldHRpbmdzLCBzbyBpdCBvd25zIHRoZSBkaWFsb2csIGFuZCB0aGUgdXNlciBhcHByb3ZlcywgZWRpdHMgb3IgZGVjbGluZXMuIE9ubHkgYW4gYXBwbGllZCBtaWdyYXRpb24gcmV0aXJlc1xuICogdGhlIHBlbmRpbmcgdmFsdWVzLlxuICpcbiAqIFRoZSBvZmZlciBpcyBtYWRlIHdoZW5ldmVyIGl0IENBTiBzdWNjZWVkLCB3aGljaCBuZWVkcyB0d28gaW5kZXBlbmRlbnQgdGhpbmdzIHRvIGhhdmUgaGFwcGVuZWQg4oCUIHRoZVxuICogcHJvdmlkZXIncyBBUEkgYmVpbmcgYXZhaWxhYmxlLCBhbmQgdGhpcyBwbHVnaW4ncyBvd24gc2V0dGluZ3MgaGF2aW5nIGFycml2ZWQgZnJvbSBkaXNrLiBFaXRoZXIgY2FuIGxhbmRcbiAqIGZpcnN0LCBzbyBib3RoIGVkZ2VzIGFyZSB3aXJlZCBhbmQgZWFjaCByZS1yZWFkcyB0aGUgY3VycmVudCBzdGF0ZSByYXRoZXIgdGhhbiBhc3N1bWluZyB0aGUgb3RoZXIgaGFzXG4gKiBhbHJlYWR5IGhhcHBlbmVkLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBpQ29udHJhY3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXBpLWNvbnRyYWN0JztcbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbkFwaVJlZiB9IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmltcG9ydCB0eXBlIHsgU2V0dGluZ3NNaWdyYXRpb25BcGkgfSBmcm9tICcuLi9wbHVnaW4vc2V0dGluZ3MtbWlncmF0aW9uLWFwaS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IHdhdGNoUGx1Z2luQXBpIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1hcGkudHMnO1xuaW1wb3J0IHsgZ2V0U2V0dGluZ3NNaWdyYXRpb25BcGlDb250cmFjdCB9IGZyb20gJy4uL3BsdWdpbi9zZXR0aW5ncy1taWdyYXRpb24tYXBpLnRzJztcbmltcG9ydCB7IHJlZ2lzdGVyQXN5bmNFdmVudCB9IGZyb20gJy4vYXN5bmMtZXZlbnRzLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB0aGUge0BsaW5rIFNldHRpbmdzTWlncmF0aW9uQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFRNaWdyYXRhYmxlU2V0dGluZ3MgLSBUaGUgc2V0dGluZ3MgdGhpcyBwbHVnaW4gbWF5IGhhbmQgb3Zlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc01pZ3JhdGlvbkNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zPFRNaWdyYXRhYmxlU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgLyoqXG4gICAqIFRoZSBzZW12ZXIgcmFuZ2Ugb2YgY29udHJhY3QgdmVyc2lvbnMgdGhpcyBwbHVnaW4gY29tcGlsZWQgYWdhaW5zdCwgZS5nLiBgJ14xJ2AuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEV2YWx1YXRlZCBieSBgY29tcGFyZS12ZXJzaW9uc2AsIHdoaWNoIGRvZXMgTk9UIGFjY2VwdCBhIGJhcmUgYCpgLiBTcGVsbCBcImFueSB2ZXJzaW9uXCIgYXMgYCc+PTAuMC4wJ2AuXG4gICAqL1xuICByZWFkb25seSBhcGlWZXJzaW9uUmFuZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udHJhY3QgdGhpcyBwbHVnaW4gZXhwZWN0cyBvZiB0aGUgcHJvdmlkZXIsIHdoaWNoIHdpbnMgb3ZlciB0aGUgcHJvdmlkZXIncyBvd24uIERlZmF1bHRzIHRvXG4gICAqIHtAbGluayBnZXRTZXR0aW5nc01pZ3JhdGlvbkFwaUNvbnRyYWN0fSwgd2hpY2ggY2hlY2tzIHRoZSBvbmUgbWV0aG9kIGEgbWlncmF0aW9uIGNhbGxzLlxuICAgKlxuICAgKiBLZXB0IHRvIHtAbGluayBTZXR0aW5nc01pZ3JhdGlvbkFwaX0gZGVsaWJlcmF0ZWx5IE5BUlJPVy4gQSBtaWdyYXRpb24gbmVlZHMgb25lIG1ldGhvZCB0aGF0IGhhcyBleGlzdGVkIHNpbmNlXG4gICAqIHRoZSBwcm92aWRlcidzIGZpcnN0IGNvbnRyYWN0IHZlcnNpb24sIHdoaWxlIHRoZSBzYW1lIHBsdWdpbiBtYXkgcmVhZCBvdGhlciBwYXJ0cyBvZiB0aGF0IEFQSSB0aHJvdWdoIGEgbXVjaFxuICAgKiBuZXdlciBvbmUuIERlY2xhcmluZyB0aGUgd2lkZXIgZXhwZWN0YXRpb24gaGVyZSB3b3VsZCByZWZ1c2UgdG8gb2ZmZXIgdGhlIG1pZ3JhdGlvbiB0byBhIHVzZXIgb24gYW4gb2xkZXJcbiAgICogcHJvdmlkZXIg4oCUIHdoaWNoIGlzIHByZWNpc2VseSB0aGUgdXNlciB3aG8gc3RpbGwgaGFzIHNldHRpbmdzIHRvIG1pZ3JhdGUuXG4gICAqL1xuICByZWFkb25seSBjb250cmFjdD86IEFwaUNvbnRyYWN0PFNldHRpbmdzTWlncmF0aW9uQXBpPFRNaWdyYXRhYmxlU2V0dGluZ3M+PjtcblxuICAvKipcbiAgICogUmVhZHMgdGhlIHZhbHVlcyBjdXJyZW50bHkgd2FpdGluZyB0byBiZSBoYW5kZWQgb3Zlci5cbiAgICpcbiAgICogQ2FsbGVkIGFmcmVzaCBvbiBldmVyeSBlZGdlIHJhdGhlciB0aGFuIG9uY2UsIHNvIGFuIGltcGxlbWVudGF0aW9uIHNpbXBseSByZWFkcyBpdHMgcGx1Z2luJ3Mgc2V0dGluZ3MuXG4gICAqIFJldHVybiBgbnVsbGAgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHBlbmRpbmcg4oCUIGFmdGVyIGEgbWlncmF0aW9uIGhhcyBiZWVuIGFwcGxpZWQsIG9yIG9uIGEgdmF1bHQgdGhhdCBuZXZlclxuICAgKiBoYWQgdGhlc2Ugc2V0dGluZ3MgY29uZmlndXJlZC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHZhbHVlcyB0byBwcm9wb3NlLCBvciBgbnVsbGAgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIG9mZmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0UHJvcG9zZWRTZXR0aW5nczogKCkgPT4gbnVsbCB8IFRNaWdyYXRhYmxlU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBjb21wb25lbnQgb2YgdGhlIHBsdWdpbiBtYWtpbmcgdGhlIHByb3Bvc2FsLlxuICAgKlxuICAgKiBUYWtlbiBhcyBhIHdob2xlIGNvbXBvbmVudCByYXRoZXIgdGhhbiBhcyBhIGJhcmUgXCJyZWFkeVwiIGZsYWcgc28gdGhlIGhvc3QgY2Fubm90IGZvcmdldCB0byB3aXJlIHRoZSB3YWl0OlxuICAgKiB3aGF0ZXZlciB7QGxpbmsgZ2V0UHJvcG9zZWRTZXR0aW5nc30gcmVhZHMgaXMgbWVhbmluZ2xlc3MgdW50aWwgdGhpcyBjb21wb25lbnQgaGFzIHJlYWQgYGRhdGEuanNvbmAuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudDogUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlPG9iamVjdD47XG5cbiAgLyoqXG4gICAqIFRoZSBgbWFuaWZlc3QuaWRgIG9mIHRoZSBwbHVnaW4gdGhhdCBvd25zIHRoZXNlIHNldHRpbmdzIG5vdywgYXMgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpblxuICAgKiByZWdpc3RyeS5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyUGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogUmVjb3JkcyB0aGF0IHRoZSBwZW5kaW5nIHZhbHVlcyBoYXZlIGJlZW4gaGFuZGVkIG92ZXIsIHNvIHRoZSBvZmZlciBpcyBub3QgbWFkZSBhZ2Fpbi5cbiAgICpcbiAgICogQ2FsbGVkIE9OTFkgd2hlbiB0aGUgdXNlciBhY3R1YWxseSBhcHBsaWVkIHRoZSBtaWdyYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcmV0aXJlbWVudCBpcyBwZXJzaXN0ZWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEFuIGltcGxlbWVudGF0aW9uIG11c3QgUEVSU0lTVCB0aGUgcmV0aXJlbWVudCDigJQgYHBsdWdpblNldHRpbmdzQ29tcG9uZW50LmVkaXRBbmRTYXZlKOKApilgLCBub3RcbiAgICogYHNldFByb3BlcnR5KOKApilgLiBUaGUgbGF0dGVyIG9ubHkgZWRpdHMgdGhlIGluLW1lbW9yeSBzdGF0ZSwgc28gdGhlIHJldGlyZW1lbnQgaXMgZm9yZ290dGVuIG9uIHRoZSBuZXh0XG4gICAqIHJlbG9hZCBhbmQgdGhlIG1pZ3JhdGlvbiBpcyBvZmZlcmVkIGFnYWluIGZvcmV2ZXIuXG4gICAqL1xuICByZWFkb25seSByZXRpcmVQcm9wb3NlZFNldHRpbmdzOiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgYG1hbmlmZXN0LmlkYCBvZiB0aGUgcGx1Z2luIG1ha2luZyB0aGUgcHJvcG9zYWwsIHNvIHRoZSBwcm92aWRlcidzIGRpYWxvZyBjYW4gc2F5IHdob3NlIHNldHRpbmdzIHRoZXNlXG4gICAqIGFyZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZVBsdWdpbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT2ZmZXJzIHNldHRpbmdzIHRoaXMgcGx1Z2luIHVzZWQgdG8gb3duIHRvIHRoZSBwbHVnaW4gdGhhdCBvd25zIHRoZW0gbm93LlxuICpcbiAqIEB0eXBlUGFyYW0gVE1pZ3JhdGFibGVTZXR0aW5ncyAtIFRoZSBzZXR0aW5ncyB0aGlzIHBsdWdpbiBtYXkgaGFuZCBvdmVyLlxuICovXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NNaWdyYXRpb25Db21wb25lbnQ8VE1pZ3JhdGFibGVTZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpVmVyc2lvblJhbmdlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udHJhY3Q6IEFwaUNvbnRyYWN0PFNldHRpbmdzTWlncmF0aW9uQXBpPFRNaWdyYXRhYmxlU2V0dGluZ3M+PjtcbiAgcHJpdmF0ZSByZWFkb25seSBnZXRQcm9wb3NlZFNldHRpbmdzOiAoKSA9PiBudWxsIHwgVE1pZ3JhdGFibGVTZXR0aW5ncztcbiAgcHJpdmF0ZSBpc1Byb3Bvc2luZyA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8b2JqZWN0PjtcbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlclBsdWdpbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmV0aXJlUHJvcG9zZWRTZXR0aW5nczogKCkgPT4gUHJvbWlzYWJsZTx2b2lkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBzb3VyY2VQbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHtAbGluayBTZXR0aW5nc01pZ3JhdGlvbkNvbXBvbmVudH0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFNldHRpbmdzTWlncmF0aW9uQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXM8VE1pZ3JhdGFibGVTZXR0aW5ncz4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBpVmVyc2lvblJhbmdlID0gcGFyYW1zLmFwaVZlcnNpb25SYW5nZTtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5jb250cmFjdCA9IHBhcmFtcy5jb250cmFjdCA/PyBnZXRTZXR0aW5nc01pZ3JhdGlvbkFwaUNvbnRyYWN0PFRNaWdyYXRhYmxlU2V0dGluZ3M+KCk7XG4gICAgdGhpcy5nZXRQcm9wb3NlZFNldHRpbmdzID0gcGFyYW1zLmdldFByb3Bvc2VkU2V0dGluZ3M7XG4gICAgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICB0aGlzLnByb3ZpZGVyUGx1Z2luSWQgPSBwYXJhbXMucHJvdmlkZXJQbHVnaW5JZDtcbiAgICB0aGlzLnJldGlyZVByb3Bvc2VkU2V0dGluZ3MgPSBwYXJhbXMucmV0aXJlUHJvcG9zZWRTZXR0aW5ncztcbiAgICB0aGlzLnNvdXJjZVBsdWdpbklkID0gcGFyYW1zLnNvdXJjZVBsdWdpbklkO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjb21wb25lbnQsIHdpcmluZyBib3RoIGVkZ2VzIHRoYXQgY2FuIG1ha2UgYW4gb2ZmZXIgcG9zc2libGUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb25sb2FkKCk6IHZvaWQge1xuICAgIC8vIE5vdGhpbmcgaXMgZ2F0ZWQgb24gdGhlIHBlbmRpbmcgdmFsdWVzIEhFUkUuIFRoZSBzZXR0aW5ncyBjb21wb25lbnQgaXMgYSBzaWJsaW5nIHdob3NlIG93biBsb2FkIGlzIHN0aWxsXG4gICAgLy8gaW4gZmxpZ2h0IGF0IHRoaXMgcG9pbnQsIHNvIGl0IHN0aWxsIGhvbGRzIHRoZSBERUZBVUxUUyDigJQgcmVhZGluZyB0aGUgcGVuZGluZyB2YWx1ZXMgbm93IHdvdWxkIHNlZVxuICAgIC8vIG5vdGhpbmcgb24gZXhhY3RseSB0aGUgdmF1bHRzIHRoYXQgaGF2ZSBzb21ldGhpbmcsIHJlZ2lzdGVyIG5vIHdhdGNoLCBhbmQgbG9zZSB0aGUgbWlncmF0aW9uIGZvciBnb29kLlxuICAgIC8vIEJvdGggZWRnZXMgYXJlIHdpcmVkIGluc3RlYWQsIGFuZCBgcHJvcG9zZWAgcmUtcmVhZHMgdGhlIHZhbHVlcyBlYWNoIHRpbWUgaXQgcnVucy5cbiAgICBjb25zdCByZWYgPSB3YXRjaFBsdWdpbkFwaTxTZXR0aW5nc01pZ3JhdGlvbkFwaTxUTWlncmF0YWJsZVNldHRpbmdzPj4oe1xuICAgICAgYXBpVmVyc2lvblJhbmdlOiB0aGlzLmFwaVZlcnNpb25SYW5nZSxcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBjb250cmFjdDogdGhpcy5jb250cmFjdCxcbiAgICAgIHBsdWdpbklkOiB0aGlzLnByb3ZpZGVyUGx1Z2luSWRcbiAgICB9KTtcblxuICAgIC8vIERyaXZlbiBieSB0aGUgcmVmJ3Mgb3duIGV2ZW50IHJhdGhlciB0aGFuIGJ5IGB3aGVuQXZhaWxhYmxlKClgLCBkZWxpYmVyYXRlbHkuIFRoYXQgd2FpdCBibG9ja3MgZm9yIHRlblxuICAgIC8vIHNlY29uZHMgYW5kIHRoZW4gdGhyb3dzIHdoZW4gdGhlIHByb3ZpZGVyIGlzIHNpbXBseSBub3QgaW5zdGFsbGVkLCB3aGljaCB3b3VsZCBzdGFsbCB0aGlzIHBsdWdpbidzIGxvYWRcbiAgICAvLyBmb3IgZXZlcnkgdXNlciB3aG8gZGVjbGluZXMgdGhlIHN1Z2dlc3Rpb24uIFdhdGNoaW5nIGNvc3RzIG5vdGhpbmcgd2hpbGUgdGhlIHByb3ZpZGVyIGlzIGFic2VudCBhbmRcbiAgICAvLyBvZmZlcnMgdGhlIG1pZ3JhdGlvbiB0aGUgbW9tZW50IGl0IGFwcGVhcnMg4oCUIGluY2x1ZGluZyByaWdodCBhZnRlciB0aGUgdXNlciBpbnN0YWxscyBpdCBmcm9tIHRoZVxuICAgIC8vIHN1Z2dlc3Rpb24gYmFubmVyLlxuICAgIHJlZ2lzdGVyQXN5bmNFdmVudChcbiAgICAgIHRoaXMsXG4gICAgICByZWYub24oJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UocmVmKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIFRoZSBzZWNvbmQgZWRnZTogdGhpcyBwbHVnaW4ncyBvd24gc2V0dGluZ3MgYXJyaXZpbmcgZnJvbSBkaXNrLiBJdCBtYXkgZmlyZSBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGZpcnN0LlxuICAgIHJlZ2lzdGVyQXN5bmNFdmVudChcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50Lm9uKCdsb2FkU2V0dGluZ3MnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKHJlZik7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmhhbmRsZUNoYW5nZShyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2UocmVmOiBQbHVnaW5BcGlSZWY8U2V0dGluZ3NNaWdyYXRpb25BcGk8VE1pZ3JhdGFibGVTZXR0aW5ncz4+KTogdm9pZCB7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5wcm9wb3NlKHJlZi52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb3Bvc2UoYXBpOiBudWxsIHwgU2V0dGluZ3NNaWdyYXRpb25BcGk8VE1pZ3JhdGFibGVTZXR0aW5ncz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm9wb3NlZFNldHRpbmdzID0gdGhpcy5nZXRQcm9wb3NlZFNldHRpbmdzKCk7XG4gICAgaWYgKCFhcGkgfHwgdGhpcy5pc1Byb3Bvc2luZyB8fCBwcm9wb3NlZFNldHRpbmdzID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQm90aCBlZGdlcyBjYW4gZmlyZSB3aGlsZSB0aGUgcHJvdmlkZXIncyBkaWFsb2cgaXMgb3BlbiwgYW5kIGVhY2ggd291bGQgcmFpc2UgYSBzZWNvbmQgb25lLlxuICAgIHRoaXMuaXNQcm9wb3NpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGkubWlncmF0ZVNldHRpbmdzKHtcbiAgICAgICAgcHJvcG9zZWRTZXR0aW5ncyxcbiAgICAgICAgc291cmNlUGx1Z2luSWQ6IHRoaXMuc291cmNlUGx1Z2luSWRcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBIGNhbmNlbCBpcyBub3QgYW4gYW5zd2VyLCBzbyB0aGUgdmFsdWVzIHN0YXkgcGVuZGluZyBhbmQgdGhlIG9mZmVyIGNvbWVzIGJhY2sg4oCUIG9uIHRoZSBuZXh0IGxvYWQsIG9yXG4gICAgICAvLyBhcyBzb29uIGFzIHRoZSBwcm92aWRlciByZWxvYWRzLiBPbmx5IGFuIGFwcGxpZWQgbWlncmF0aW9uIHJldGlyZXMgdGhlbS5cbiAgICAgIGlmIChyZXN1bHQuaXNBcHBsaWVkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmV0aXJlUHJvcG9zZWRTZXR0aW5ncygpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzUHJvcG9zaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBLFNBQVMseUJBQXlCO0FBTWxDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsdUNBQXVDO0FBQ2hELFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMsbUJBQW1CO0FBbUZyQixNQUFNLG1DQUF1RSxZQUFZO0FBQUEsRUFDN0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNULGNBQWM7QUFBQSxFQUNMO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1YsWUFBWSxRQUEwRTtBQUMzRixVQUFNO0FBQ04sU0FBSyxrQkFBa0IsT0FBTztBQUM5QixTQUFLLE1BQU0sT0FBTztBQUNsQixTQUFLLFdBQVcsT0FBTyxZQUFZLGdDQUFxRDtBQUN4RixTQUFLLHNCQUFzQixPQUFPO0FBQ2xDLFNBQUssMEJBQTBCLE9BQU87QUFDdEMsU0FBSyxtQkFBbUIsT0FBTztBQUMvQixTQUFLLHlCQUF5QixPQUFPO0FBQ3JDLFNBQUssaUJBQWlCLE9BQU87QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS2dCLFNBQWU7QUFLN0IsVUFBTSxNQUFNLGVBQTBEO0FBQUEsTUFDcEUsaUJBQWlCLEtBQUs7QUFBQSxNQUN0QixLQUFLLEtBQUs7QUFBQSxNQUNWLFdBQVc7QUFBQSxNQUNYLFVBQVUsS0FBSztBQUFBLE1BQ2YsVUFBVSxLQUFLO0FBQUEsSUFDakIsQ0FBQztBQU9EO0FBQUEsTUFDRTtBQUFBLE1BQ0EsSUFBSSxHQUFHLFVBQVUsTUFBTTtBQUNyQixhQUFLLGFBQWEsR0FBRztBQUFBLE1BQ3ZCLENBQUM7QUFBQSxJQUNIO0FBR0E7QUFBQSxNQUNFO0FBQUEsTUFDQSxLQUFLLHdCQUF3QixHQUFHLGdCQUFnQixNQUFNO0FBQ3BELGFBQUssYUFBYSxHQUFHO0FBQUEsTUFDdkIsQ0FBQztBQUFBLElBQ0g7QUFFQSxTQUFLLGFBQWEsR0FBRztBQUFBLEVBQ3ZCO0FBQUEsRUFFUSxhQUFhLEtBQW9FO0FBQ3ZGLHNCQUFrQixZQUFZO0FBQzVCLFlBQU0sS0FBSyxRQUFRLElBQUksS0FBSztBQUFBLElBQzlCLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxNQUFjLFFBQVEsS0FBc0U7QUFDMUYsVUFBTSxtQkFBbUIsS0FBSyxvQkFBb0I7QUFDbEQsUUFBSSxDQUFDLE9BQU8sS0FBSyxlQUFlLHFCQUFxQixNQUFNO0FBQ3pEO0FBQUEsSUFDRjtBQUdBLFNBQUssY0FBYztBQUNuQixRQUFJO0FBQ0YsWUFBTSxTQUFTLE1BQU0sSUFBSSxnQkFBZ0I7QUFBQSxRQUN2QztBQUFBLFFBQ0EsZ0JBQWdCLEtBQUs7QUFBQSxNQUN2QixDQUFDO0FBSUQsVUFBSSxPQUFPLFdBQVc7QUFDcEIsY0FBTSxLQUFLLHVCQUF1QjtBQUFBLE1BQ3BDO0FBQUEsSUFDRixVQUFFO0FBQ0EsV0FBSyxjQUFjO0FBQUEsSUFDckI7QUFBQSxFQUNGO0FBQ0Y7IiwibmFtZXMiOltdfQ==
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IG9mZmVycyBzZXR0aW5ncyB0aGlzIHBsdWdpbiB1c2VkIHRvIG93biB0byB0aGUgcGx1Z2luIHRoYXQgb3ducyB0aGVtIG5vdywgb25jZSwgdGhyb3VnaFxuICogdGhhdCBwbHVnaW4ncyBwdWJsaWMgQVBJLlxuICpcbiAqIFRoaXMgaXMgdGhlIG90aGVyIGhhbGYgb2Yge0BsaW5rIGNvbXBvbmVudHMvcGx1Z2luLXN1Z2dlc3Rpb24tY29tcG9uZW50IVBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnR9LlxuICogVGhlIHN1Z2dlc3Rpb24gYXNrcyB0aGUgdXNlciB0byBpbnN0YWxsIHRoZSBwbHVnaW4gdGhhdCB0b29rIGEgZmVhdHVyZSBvdmVyOyB0aGlzIGNhcnJpZXMgdGhlIHNldHRpbmdzIHRoZXlcbiAqIGhhZCBjb25maWd1cmVkIGZvciBpdCBhY3Jvc3MsIHNvIHRha2luZyB0aGUgc3VnZ2VzdGlvbiBkb2VzIG5vdCBtZWFuIHJlLWVudGVyaW5nIGV2ZXJ5dGhpbmcgYnkgaGFuZC5cbiAqXG4gKiBBIHByb3Bvc2luZyBwbHVnaW4gbmV2ZXIgd3JpdGVzIGludG8gYW5vdGhlciBwbHVnaW4ncyBgZGF0YS5qc29uYC4gSXQgUFJPUE9TRVM6IHRoZSBvdGhlciBwbHVnaW4gb3ducyB0aGVcbiAqIHNldHRpbmdzLCBzbyBpdCBvd25zIHRoZSBkaWFsb2csIGFuZCB0aGUgdXNlciBhcHByb3ZlcywgZWRpdHMgb3IgZGVjbGluZXMuIE9ubHkgYW4gYXBwbGllZCBtaWdyYXRpb24gcmV0aXJlc1xuICogdGhlIHBlbmRpbmcgdmFsdWVzLlxuICpcbiAqIFRoZSBvZmZlciBpcyBtYWRlIHdoZW5ldmVyIGl0IENBTiBzdWNjZWVkLCB3aGljaCBuZWVkcyB0d28gaW5kZXBlbmRlbnQgdGhpbmdzIHRvIGhhdmUgaGFwcGVuZWQg4oCUIHRoZVxuICogcHJvdmlkZXIncyBBUEkgYmVpbmcgYXZhaWxhYmxlLCBhbmQgdGhpcyBwbHVnaW4ncyBvd24gc2V0dGluZ3MgaGF2aW5nIGFycml2ZWQgZnJvbSBkaXNrLiBFaXRoZXIgY2FuIGxhbmRcbiAqIGZpcnN0LCBzbyBib3RoIGVkZ2VzIGFyZSB3aXJlZCBhbmQgZWFjaCByZS1yZWFkcyB0aGUgY3VycmVudCBzdGF0ZSByYXRoZXIgdGhhbiBhc3N1bWluZyB0aGUgb3RoZXIgaGFzXG4gKiBhbHJlYWR5IGhhcHBlbmVkLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBpQ29udHJhY3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXBpLWNvbnRyYWN0JztcbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbkFwaVJlZiB9IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmltcG9ydCB0eXBlIHsgU2V0dGluZ3NNaWdyYXRpb25BcGkgfSBmcm9tICcuLi9wbHVnaW4vc2V0dGluZ3MtbWlncmF0aW9uLWFwaS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IHdhdGNoUGx1Z2luQXBpIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1hcGkudHMnO1xuaW1wb3J0IHsgZ2V0U2V0dGluZ3NNaWdyYXRpb25BcGlDb250cmFjdCB9IGZyb20gJy4uL3BsdWdpbi9zZXR0aW5ncy1taWdyYXRpb24tYXBpLnRzJztcbmltcG9ydCB7IHJlZ2lzdGVyQXN5bmNFdmVudCB9IGZyb20gJy4vYXN5bmMtZXZlbnRzLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB0aGUge0BsaW5rIFNldHRpbmdzTWlncmF0aW9uQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFRNaWdyYXRhYmxlU2V0dGluZ3MgLSBUaGUgc2V0dGluZ3MgdGhpcyBwbHVnaW4gbWF5IGhhbmQgb3Zlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc01pZ3JhdGlvbkNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zPFRNaWdyYXRhYmxlU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgLyoqXG4gICAqIFRoZSBzZW12ZXIgcmFuZ2Ugb2YgY29udHJhY3QgdmVyc2lvbnMgdGhpcyBwbHVnaW4gY29tcGlsZWQgYWdhaW5zdCwgZS5nLiBgJ14xJ2AuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEV2YWx1YXRlZCBieSBgY29tcGFyZS12ZXJzaW9uc2AsIHdoaWNoIGRvZXMgTk9UIGFjY2VwdCBhIGJhcmUgYCpgLiBTcGVsbCBcImFueSB2ZXJzaW9uXCIgYXMgYCc+PTAuMC4wJ2AuXG4gICAqL1xuICByZWFkb25seSBhcGlWZXJzaW9uUmFuZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udHJhY3QgdGhpcyBwbHVnaW4gZXhwZWN0cyBvZiB0aGUgcHJvdmlkZXIsIHdoaWNoIHdpbnMgb3ZlciB0aGUgcHJvdmlkZXIncyBvd24uIERlZmF1bHRzIHRvXG4gICAqIHtAbGluayBnZXRTZXR0aW5nc01pZ3JhdGlvbkFwaUNvbnRyYWN0fSwgd2hpY2ggY2hlY2tzIHRoZSBvbmUgbWV0aG9kIGEgbWlncmF0aW9uIGNhbGxzLlxuICAgKlxuICAgKiBLZXB0IHRvIHtAbGluayBTZXR0aW5nc01pZ3JhdGlvbkFwaX0gZGVsaWJlcmF0ZWx5IE5BUlJPVy4gQSBtaWdyYXRpb24gbmVlZHMgb25lIG1ldGhvZCB0aGF0IGhhcyBleGlzdGVkIHNpbmNlXG4gICAqIHRoZSBwcm92aWRlcidzIGZpcnN0IGNvbnRyYWN0IHZlcnNpb24sIHdoaWxlIHRoZSBzYW1lIHBsdWdpbiBtYXkgcmVhZCBvdGhlciBwYXJ0cyBvZiB0aGF0IEFQSSB0aHJvdWdoIGEgbXVjaFxuICAgKiBuZXdlciBvbmUuIERlY2xhcmluZyB0aGUgd2lkZXIgZXhwZWN0YXRpb24gaGVyZSB3b3VsZCByZWZ1c2UgdG8gb2ZmZXIgdGhlIG1pZ3JhdGlvbiB0byBhIHVzZXIgb24gYW4gb2xkZXJcbiAgICogcHJvdmlkZXIg4oCUIHdoaWNoIGlzIHByZWNpc2VseSB0aGUgdXNlciB3aG8gc3RpbGwgaGFzIHNldHRpbmdzIHRvIG1pZ3JhdGUuXG4gICAqL1xuICByZWFkb25seSBjb250cmFjdD86IEFwaUNvbnRyYWN0PFNldHRpbmdzTWlncmF0aW9uQXBpPFRNaWdyYXRhYmxlU2V0dGluZ3M+PjtcblxuICAvKipcbiAgICogUmVhZHMgdGhlIHZhbHVlcyBjdXJyZW50bHkgd2FpdGluZyB0byBiZSBoYW5kZWQgb3Zlci5cbiAgICpcbiAgICogQ2FsbGVkIGFmcmVzaCBvbiBldmVyeSBlZGdlIHJhdGhlciB0aGFuIG9uY2UsIHNvIGFuIGltcGxlbWVudGF0aW9uIHNpbXBseSByZWFkcyBpdHMgcGx1Z2luJ3Mgc2V0dGluZ3MuXG4gICAqIFJldHVybiBgbnVsbGAgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHBlbmRpbmcg4oCUIGFmdGVyIGEgbWlncmF0aW9uIGhhcyBiZWVuIGFwcGxpZWQsIG9yIG9uIGEgdmF1bHQgdGhhdCBuZXZlclxuICAgKiBoYWQgdGhlc2Ugc2V0dGluZ3MgY29uZmlndXJlZC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHZhbHVlcyB0byBwcm9wb3NlLCBvciBgbnVsbGAgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIG9mZmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0UHJvcG9zZWRTZXR0aW5nczogKCkgPT4gbnVsbCB8IFRNaWdyYXRhYmxlU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBjb21wb25lbnQgb2YgdGhlIHBsdWdpbiBtYWtpbmcgdGhlIHByb3Bvc2FsLlxuICAgKlxuICAgKiBUYWtlbiBhcyBhIHdob2xlIGNvbXBvbmVudCByYXRoZXIgdGhhbiBhcyBhIGJhcmUgXCJyZWFkeVwiIGZsYWcgc28gdGhlIGhvc3QgY2Fubm90IGZvcmdldCB0byB3aXJlIHRoZSB3YWl0OlxuICAgKiB3aGF0ZXZlciB7QGxpbmsgZ2V0UHJvcG9zZWRTZXR0aW5nc30gcmVhZHMgaXMgbWVhbmluZ2xlc3MgdW50aWwgdGhpcyBjb21wb25lbnQgaGFzIHJlYWQgYGRhdGEuanNvbmAuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudDogUGljazxQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8b2JqZWN0PiwgJ29uJz47XG5cbiAgLyoqXG4gICAqIFRoZSBgbWFuaWZlc3QuaWRgIG9mIHRoZSBwbHVnaW4gdGhhdCBvd25zIHRoZXNlIHNldHRpbmdzIG5vdywgYXMgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpblxuICAgKiByZWdpc3RyeS5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyUGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogUmVjb3JkcyB0aGF0IHRoZSBwZW5kaW5nIHZhbHVlcyBoYXZlIGJlZW4gaGFuZGVkIG92ZXIsIHNvIHRoZSBvZmZlciBpcyBub3QgbWFkZSBhZ2Fpbi5cbiAgICpcbiAgICogQ2FsbGVkIE9OTFkgd2hlbiB0aGUgdXNlciBhY3R1YWxseSBhcHBsaWVkIHRoZSBtaWdyYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcmV0aXJlbWVudCBpcyBwZXJzaXN0ZWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEFuIGltcGxlbWVudGF0aW9uIG11c3QgUEVSU0lTVCB0aGUgcmV0aXJlbWVudCDigJQgYHBsdWdpblNldHRpbmdzQ29tcG9uZW50LmVkaXRBbmRTYXZlKOKApilgLCBub3RcbiAgICogYHNldFByb3BlcnR5KOKApilgLiBUaGUgbGF0dGVyIG9ubHkgZWRpdHMgdGhlIGluLW1lbW9yeSBzdGF0ZSwgc28gdGhlIHJldGlyZW1lbnQgaXMgZm9yZ290dGVuIG9uIHRoZSBuZXh0XG4gICAqIHJlbG9hZCBhbmQgdGhlIG1pZ3JhdGlvbiBpcyBvZmZlcmVkIGFnYWluIGZvcmV2ZXIuXG4gICAqL1xuICByZWFkb25seSByZXRpcmVQcm9wb3NlZFNldHRpbmdzOiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgYG1hbmlmZXN0LmlkYCBvZiB0aGUgcGx1Z2luIG1ha2luZyB0aGUgcHJvcG9zYWwsIHNvIHRoZSBwcm92aWRlcidzIGRpYWxvZyBjYW4gc2F5IHdob3NlIHNldHRpbmdzIHRoZXNlXG4gICAqIGFyZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZVBsdWdpbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT2ZmZXJzIHNldHRpbmdzIHRoaXMgcGx1Z2luIHVzZWQgdG8gb3duIHRvIHRoZSBwbHVnaW4gdGhhdCBvd25zIHRoZW0gbm93LlxuICpcbiAqIEB0eXBlUGFyYW0gVE1pZ3JhdGFibGVTZXR0aW5ncyAtIFRoZSBzZXR0aW5ncyB0aGlzIHBsdWdpbiBtYXkgaGFuZCBvdmVyLlxuICovXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NNaWdyYXRpb25Db21wb25lbnQ8VE1pZ3JhdGFibGVTZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpVmVyc2lvblJhbmdlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udHJhY3Q6IEFwaUNvbnRyYWN0PFNldHRpbmdzTWlncmF0aW9uQXBpPFRNaWdyYXRhYmxlU2V0dGluZ3M+PjtcbiAgcHJpdmF0ZSByZWFkb25seSBnZXRQcm9wb3NlZFNldHRpbmdzOiAoKSA9PiBudWxsIHwgVE1pZ3JhdGFibGVTZXR0aW5ncztcbiAgcHJpdmF0ZSBpc1Byb3Bvc2luZyA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQaWNrPFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+LCAnb24nPjtcbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlclBsdWdpbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmV0aXJlUHJvcG9zZWRTZXR0aW5nczogKCkgPT4gUHJvbWlzYWJsZTx2b2lkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBzb3VyY2VQbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHtAbGluayBTZXR0aW5nc01pZ3JhdGlvbkNvbXBvbmVudH0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFNldHRpbmdzTWlncmF0aW9uQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXM8VE1pZ3JhdGFibGVTZXR0aW5ncz4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBpVmVyc2lvblJhbmdlID0gcGFyYW1zLmFwaVZlcnNpb25SYW5nZTtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5jb250cmFjdCA9IHBhcmFtcy5jb250cmFjdCA/PyBnZXRTZXR0aW5nc01pZ3JhdGlvbkFwaUNvbnRyYWN0PFRNaWdyYXRhYmxlU2V0dGluZ3M+KCk7XG4gICAgdGhpcy5nZXRQcm9wb3NlZFNldHRpbmdzID0gcGFyYW1zLmdldFByb3Bvc2VkU2V0dGluZ3M7XG4gICAgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICB0aGlzLnByb3ZpZGVyUGx1Z2luSWQgPSBwYXJhbXMucHJvdmlkZXJQbHVnaW5JZDtcbiAgICB0aGlzLnJldGlyZVByb3Bvc2VkU2V0dGluZ3MgPSBwYXJhbXMucmV0aXJlUHJvcG9zZWRTZXR0aW5ncztcbiAgICB0aGlzLnNvdXJjZVBsdWdpbklkID0gcGFyYW1zLnNvdXJjZVBsdWdpbklkO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjb21wb25lbnQsIHdpcmluZyBib3RoIGVkZ2VzIHRoYXQgY2FuIG1ha2UgYW4gb2ZmZXIgcG9zc2libGUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb25sb2FkKCk6IHZvaWQge1xuICAgIC8vIE5vdGhpbmcgaXMgZ2F0ZWQgb24gdGhlIHBlbmRpbmcgdmFsdWVzIEhFUkUuIFRoZSBzZXR0aW5ncyBjb21wb25lbnQgaXMgYSBzaWJsaW5nIHdob3NlIG93biBsb2FkIGlzIHN0aWxsXG4gICAgLy8gaW4gZmxpZ2h0IGF0IHRoaXMgcG9pbnQsIHNvIGl0IHN0aWxsIGhvbGRzIHRoZSBERUZBVUxUUyDigJQgcmVhZGluZyB0aGUgcGVuZGluZyB2YWx1ZXMgbm93IHdvdWxkIHNlZVxuICAgIC8vIG5vdGhpbmcgb24gZXhhY3RseSB0aGUgdmF1bHRzIHRoYXQgaGF2ZSBzb21ldGhpbmcsIHJlZ2lzdGVyIG5vIHdhdGNoLCBhbmQgbG9zZSB0aGUgbWlncmF0aW9uIGZvciBnb29kLlxuICAgIC8vIEJvdGggZWRnZXMgYXJlIHdpcmVkIGluc3RlYWQsIGFuZCBgcHJvcG9zZWAgcmUtcmVhZHMgdGhlIHZhbHVlcyBlYWNoIHRpbWUgaXQgcnVucy5cbiAgICBjb25zdCByZWYgPSB3YXRjaFBsdWdpbkFwaTxTZXR0aW5nc01pZ3JhdGlvbkFwaTxUTWlncmF0YWJsZVNldHRpbmdzPj4oe1xuICAgICAgYXBpVmVyc2lvblJhbmdlOiB0aGlzLmFwaVZlcnNpb25SYW5nZSxcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBjb250cmFjdDogdGhpcy5jb250cmFjdCxcbiAgICAgIHBsdWdpbklkOiB0aGlzLnByb3ZpZGVyUGx1Z2luSWRcbiAgICB9KTtcblxuICAgIC8vIERyaXZlbiBieSB0aGUgcmVmJ3Mgb3duIGV2ZW50IHJhdGhlciB0aGFuIGJ5IGB3aGVuQXZhaWxhYmxlKClgLCBkZWxpYmVyYXRlbHkuIFRoYXQgd2FpdCBibG9ja3MgZm9yIHRlblxuICAgIC8vIHNlY29uZHMgYW5kIHRoZW4gdGhyb3dzIHdoZW4gdGhlIHByb3ZpZGVyIGlzIHNpbXBseSBub3QgaW5zdGFsbGVkLCB3aGljaCB3b3VsZCBzdGFsbCB0aGlzIHBsdWdpbidzIGxvYWRcbiAgICAvLyBmb3IgZXZlcnkgdXNlciB3aG8gZGVjbGluZXMgdGhlIHN1Z2dlc3Rpb24uIFdhdGNoaW5nIGNvc3RzIG5vdGhpbmcgd2hpbGUgdGhlIHByb3ZpZGVyIGlzIGFic2VudCBhbmRcbiAgICAvLyBvZmZlcnMgdGhlIG1pZ3JhdGlvbiB0aGUgbW9tZW50IGl0IGFwcGVhcnMg4oCUIGluY2x1ZGluZyByaWdodCBhZnRlciB0aGUgdXNlciBpbnN0YWxscyBpdCBmcm9tIHRoZVxuICAgIC8vIHN1Z2dlc3Rpb24gYmFubmVyLlxuICAgIHJlZ2lzdGVyQXN5bmNFdmVudChcbiAgICAgIHRoaXMsXG4gICAgICByZWYub24oJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UocmVmKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIFRoZSBzZWNvbmQgZWRnZTogdGhpcyBwbHVnaW4ncyBvd24gc2V0dGluZ3MgYXJyaXZpbmcgZnJvbSBkaXNrLiBJdCBtYXkgZmlyZSBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGZpcnN0LlxuICAgIHJlZ2lzdGVyQXN5bmNFdmVudChcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50Lm9uKCdsb2FkU2V0dGluZ3MnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKHJlZik7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmhhbmRsZUNoYW5nZShyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2UocmVmOiBQbHVnaW5BcGlSZWY8U2V0dGluZ3NNaWdyYXRpb25BcGk8VE1pZ3JhdGFibGVTZXR0aW5ncz4+KTogdm9pZCB7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5wcm9wb3NlKHJlZi52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb3Bvc2UoYXBpOiBudWxsIHwgU2V0dGluZ3NNaWdyYXRpb25BcGk8VE1pZ3JhdGFibGVTZXR0aW5ncz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm9wb3NlZFNldHRpbmdzID0gdGhpcy5nZXRQcm9wb3NlZFNldHRpbmdzKCk7XG4gICAgaWYgKCFhcGkgfHwgdGhpcy5pc1Byb3Bvc2luZyB8fCBwcm9wb3NlZFNldHRpbmdzID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQm90aCBlZGdlcyBjYW4gZmlyZSB3aGlsZSB0aGUgcHJvdmlkZXIncyBkaWFsb2cgaXMgb3BlbiwgYW5kIGVhY2ggd291bGQgcmFpc2UgYSBzZWNvbmQgb25lLlxuICAgIHRoaXMuaXNQcm9wb3NpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGkubWlncmF0ZVNldHRpbmdzKHtcbiAgICAgICAgcHJvcG9zZWRTZXR0aW5ncyxcbiAgICAgICAgc291cmNlUGx1Z2luSWQ6IHRoaXMuc291cmNlUGx1Z2luSWRcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBIGNhbmNlbCBpcyBub3QgYW4gYW5zd2VyLCBzbyB0aGUgdmFsdWVzIHN0YXkgcGVuZGluZyBhbmQgdGhlIG9mZmVyIGNvbWVzIGJhY2sg4oCUIG9uIHRoZSBuZXh0IGxvYWQsIG9yXG4gICAgICAvLyBhcyBzb29uIGFzIHRoZSBwcm92aWRlciByZWxvYWRzLiBPbmx5IGFuIGFwcGxpZWQgbWlncmF0aW9uIHJldGlyZXMgdGhlbS5cbiAgICAgIGlmIChyZXN1bHQuaXNBcHBsaWVkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmV0aXJlUHJvcG9zZWRTZXR0aW5ncygpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzUHJvcG9zaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBLFNBQVMseUJBQXlCO0FBTWxDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsdUNBQXVDO0FBQ2hELFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMsbUJBQW1CO0FBbUZyQixNQUFNLG1DQUF1RSxZQUFZO0FBQUEsRUFDN0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNULGNBQWM7QUFBQSxFQUNMO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1YsWUFBWSxRQUEwRTtBQUMzRixVQUFNO0FBQ04sU0FBSyxrQkFBa0IsT0FBTztBQUM5QixTQUFLLE1BQU0sT0FBTztBQUNsQixTQUFLLFdBQVcsT0FBTyxZQUFZLGdDQUFxRDtBQUN4RixTQUFLLHNCQUFzQixPQUFPO0FBQ2xDLFNBQUssMEJBQTBCLE9BQU87QUFDdEMsU0FBSyxtQkFBbUIsT0FBTztBQUMvQixTQUFLLHlCQUF5QixPQUFPO0FBQ3JDLFNBQUssaUJBQWlCLE9BQU87QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS2dCLFNBQWU7QUFLN0IsVUFBTSxNQUFNLGVBQTBEO0FBQUEsTUFDcEUsaUJBQWlCLEtBQUs7QUFBQSxNQUN0QixLQUFLLEtBQUs7QUFBQSxNQUNWLFdBQVc7QUFBQSxNQUNYLFVBQVUsS0FBSztBQUFBLE1BQ2YsVUFBVSxLQUFLO0FBQUEsSUFDakIsQ0FBQztBQU9EO0FBQUEsTUFDRTtBQUFBLE1BQ0EsSUFBSSxHQUFHLFVBQVUsTUFBTTtBQUNyQixhQUFLLGFBQWEsR0FBRztBQUFBLE1BQ3ZCLENBQUM7QUFBQSxJQUNIO0FBR0E7QUFBQSxNQUNFO0FBQUEsTUFDQSxLQUFLLHdCQUF3QixHQUFHLGdCQUFnQixNQUFNO0FBQ3BELGFBQUssYUFBYSxHQUFHO0FBQUEsTUFDdkIsQ0FBQztBQUFBLElBQ0g7QUFFQSxTQUFLLGFBQWEsR0FBRztBQUFBLEVBQ3ZCO0FBQUEsRUFFUSxhQUFhLEtBQW9FO0FBQ3ZGLHNCQUFrQixZQUFZO0FBQzVCLFlBQU0sS0FBSyxRQUFRLElBQUksS0FBSztBQUFBLElBQzlCLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxNQUFjLFFBQVEsS0FBc0U7QUFDMUYsVUFBTSxtQkFBbUIsS0FBSyxvQkFBb0I7QUFDbEQsUUFBSSxDQUFDLE9BQU8sS0FBSyxlQUFlLHFCQUFxQixNQUFNO0FBQ3pEO0FBQUEsSUFDRjtBQUdBLFNBQUssY0FBYztBQUNuQixRQUFJO0FBQ0YsWUFBTSxTQUFTLE1BQU0sSUFBSSxnQkFBZ0I7QUFBQSxRQUN2QztBQUFBLFFBQ0EsZ0JBQWdCLEtBQUs7QUFBQSxNQUN2QixDQUFDO0FBSUQsVUFBSSxPQUFPLFdBQVc7QUFDcEIsY0FBTSxLQUFLLHVCQUF1QjtBQUFBLE1BQ3BDO0FBQUEsSUFDRixVQUFFO0FBQ0EsV0FBSyxjQUFjO0FBQUEsSUFDckI7QUFBQSxFQUNGO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -2,10 +2,12 @@
2
2
  /**
3
3
  * @file
4
4
  *
5
- * CSS classes used by the `obsidian-dev-utils` library.
5
+ * CSS classes used by the `@mnaoumov/obsidian-lib` library. {@link CssClass.LibraryName} keeps the legacy
6
+ * `obsidian-dev-utils` name, so stylesheets written for older copies still match.
6
7
  */
7
8
  /**
8
- * CSS classes used by the `obsidian-dev-utils` library.
9
+ * CSS classes used by the `@mnaoumov/obsidian-lib` library. {@link CssClass.LibraryName} keeps the legacy
10
+ * `obsidian-dev-utils` name, so stylesheets written for older copies still match.
9
11
  */
10
12
  export declare enum CssClass {
11
13
  /**
@@ -72,4 +72,4 @@ var CssClass = /* @__PURE__ */ ((CssClass2) => {
72
72
  export {
73
73
  CssClass
74
74
  };
75
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Nzcy1jbGFzcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENTUyBjbGFzc2VzIHVzZWQgYnkgdGhlIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGxpYnJhcnkuXG4gKi9cblxuLyoqXG4gKiBDU1MgY2xhc3NlcyB1c2VkIGJ5IHRoZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCBsaWJyYXJ5LlxuICovXG5leHBvcnQgZW51bSBDc3NDbGFzcyB7XG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGFsZXJ0IG1vZGFsLlxuICAgKi9cbiAgQWxlcnRNb2RhbCA9ICdhbGVydC1tb2RhbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgY2FuY2VsIGJ1dHRvbi5cbiAgICovXG4gIENhbmNlbEJ1dHRvbiA9ICdjYW5jZWwtYnV0dG9uJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBjaGVja2JveCBjb21wb25lbnQuXG4gICAqL1xuICBDaGVja2JveENvbXBvbmVudCA9ICdjaGVja2JveC1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBPYnNpZGlhbidzIGNsYXNzIGZvciBhIGNsaWNrYWJsZSBpY29uIGJ1dHRvbiwgZ2l2aW5nIGl0IHRoZSBob3ZlciBiYWNrZ3JvdW5kIGFuZCBpY29uLWNvbG9yIHRyZWF0bWVudC5cbiAgICovXG4gIENsaWNrYWJsZUljb24gPSAnY2xpY2thYmxlLWljb24nLFxuXG4gIC8qKlxuICAgKiBPYnNpZGlhbidzIGNsYXNzIGZvciBhbiBpbmxpbmUgY29kZSBlbGVtZW50ICh1c2VkIGJ5IGBhcHBlbmRDb2RlQmxvY2tgKS5cbiAgICovXG4gIENvZGUgPSAnY29kZScsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgY29kZSBoaWdobGlnaHRlciBjb21wb25lbnQuXG4gICAqL1xuICBDb2RlSGlnaGxpZ2h0ZXJDb21wb25lbnQgPSAnY29kZS1oaWdobGlnaHRlci1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGNvbmZpcm0gbW9kYWwuXG4gICAqL1xuICBDb25maXJtTW9kYWwgPSAnY29uZmlybS1tb2RhbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgZGF0ZSBjb21wb25lbnQuXG4gICAqL1xuICBEYXRlQ29tcG9uZW50ID0gJ2RhdGUtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBkYXRlIGFuZCB0aW1lIGNvbXBvbmVudC5cbiAgICovXG4gIERhdGVUaW1lQ29tcG9uZW50ID0gJ2RhdGV0aW1lLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgZW1haWwgY29tcG9uZW50LlxuICAgKi9cbiAgRW1haWxDb21wb25lbnQgPSAnZW1haWwtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBmaWxlIGNvbXBvbmVudC5cbiAgICovXG4gIEZpbGVDb21wb25lbnQgPSAnZmlsZS1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBPYnNpZGlhbidzIGNsYXNzIGZvciBhIGNvbnRyb2wgdGhhdCBpcyBjdXJyZW50bHkgT04sIHJldXNlZCBzbyBhIHByZXNzZWQgY29tbWFuZCBidXR0b24gbWF0Y2hlcyB0aGVcbiAgICogYXBwJ3Mgb3duIHRvZ2dsZWQgY29udHJvbHMuXG4gICAqL1xuICBJc0FjdGl2ZSA9ICdpcy1hY3RpdmUnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHBsYWNlaG9sZGVyLlxuICAgKi9cbiAgSXNQbGFjZWhvbGRlciA9ICdpcy1wbGFjZWhvbGRlcicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbGlicmFyeSBuYW1lLlxuICAgKi9cbiAgTGlicmFyeU5hbWUgPSAnb2JzaWRpYW4tZGV2LXV0aWxzJyxcblxuICAvKipcbiAgICogT2JzaWRpYW4ncyBjbGFzcyBtYXJraW5nIHJlbmRlcmVkLW1hcmtkb3duIGNvbnRlbnQgKHVzZWQgYnkgYGFwcGVuZENvZGVCbG9ja2ApLlxuICAgKi9cbiAgTWFya2Rvd25SZW5kZXJlZCA9ICdtYXJrZG93bi1yZW5kZXJlZCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbWluaW1pemFibGUgbW9kYWwuXG4gICAqL1xuICBNaW5pbWl6YWJsZU1vZGFsID0gJ21pbmltaXphYmxlLW1vZGFsJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtaW5pbWl6ZSBidXR0b24gb2YgdGhlIG1pbmltaXphYmxlIG1vZGFsLlxuICAgKi9cbiAgTWluaW1pemVCdXR0b24gPSAnbWluaW1pemUtYnV0dG9uJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtaW5pbWl6ZWQgYmFyIG9mIHRoZSBtaW5pbWl6YWJsZSBtb2RhbC5cbiAgICovXG4gIE1pbmltaXplZE1vZGFsQmFyID0gJ21pbmltaXplZC1tb2RhbC1iYXInLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG9uZS1zaG90IGF0dGVudGlvbiBmbGFzaCBvZiB0aGUgbWluaW1pemVkIGJhciwgcGxheWVkIHdoZW4gdGhlIHVzZXIgYXR0ZW1wdHMgYVxuICAgKiBibG9ja2VkIGFjdGlvbiAoYSBrZXlzdHJva2UsIHJpZ2h0LWNsaWNrLCBvciBvcGVuaW5nIGFub3RoZXIgbW9kYWwpIHdoaWxlIHRoZSBtb2RhbCBpcyBtaW5pbWl6ZWQuXG4gICAqL1xuICBNaW5pbWl6ZWRNb2RhbEJhckF0dGVudGlvbiA9ICdtaW5pbWl6ZWQtbW9kYWwtYmFyLWF0dGVudGlvbicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdGl0bGUgb2YgdGhlIG1pbmltaXplZCBiYXIgb2YgdGhlIG1pbmltaXphYmxlIG1vZGFsLlxuICAgKi9cbiAgTWluaW1pemVkTW9kYWxCYXJUaXRsZSA9ICdtaW5pbWl6ZWQtbW9kYWwtYmFyLXRpdGxlJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIG9uZSBidXR0b24gaW4gYSBtb2RhbCdzIGNvbW1hbmQgc3RyaXAuXG4gICAqL1xuICBNb2RhbENvbW1hbmQgPSAnbW9kYWwtY29tbWFuZCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciBhIGNvbnRyb2wgaW5qZWN0ZWQgaW50byBhbiBpbnN0cnVjdGlvbidzIHB1cnBvc2UgdGV4dCBcdTIwMTQgYSBjaGVja2JveCwgYSBkcm9wZG93bi5cbiAgICogT2JzaWRpYW4ncyBvd24gaW5zdHJ1Y3Rpb24gYmFyIG5ldmVyIGNvbnRhaW5zIG9uZSwgc28gbm90aGluZyB1cHN0cmVhbSBzZXBhcmF0ZXMgaXQgZnJvbSB0aGUgbGFiZWxcbiAgICogaXQgYmVsb25ncyB0by5cbiAgICovXG4gIE1vZGFsQ29tbWFuZENvbnRyb2wgPSAnbW9kYWwtY29tbWFuZC1jb250cm9sJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBob3RrZXkgaGludCBpbnNpZGUgYSBtb2RhbCBjb21tYW5kIGJ1dHRvbi5cbiAgICovXG4gIE1vZGFsQ29tbWFuZEhvdGtleSA9ICdtb2RhbC1jb21tYW5kLWhvdGtleScsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgc3RyaXAgb2YgY29tbWFuZHMgYSBtb2RhbCByZW5kZXJzIGFsb25nIGl0cyBib3R0b20gZWRnZS5cbiAgICovXG4gIE1vZGFsQ29tbWFuZHMgPSAnbW9kYWwtY29tbWFuZHMnLFxuXG4gIC8qKlxuICAgKiBPYnNpZGlhbidzIGNsYXNzIGZvciBhIG1vZGFsIGhlYWRlciBidXR0b24gKGUuZy4gdGhlIG1vZGFsIGNsb3NlIGJ1dHRvbiksIHJldXNlZCB0byBtYXRjaCB0aGVcbiAgICogbmF0aXZlIG1vZGFsIGNsb3NlIGJ1dHRvbidzIGJveCBhbmQgaG92ZXIuXG4gICAqL1xuICBNb2RhbEhlYWRlckJ1dHRvbiA9ICdtb2RhbC1oZWFkZXItYnV0dG9uJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtb250aCBjb21wb25lbnQuXG4gICAqL1xuICBNb250aENvbXBvbmVudCA9ICdtb250aC1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG11bHRpcGxlIGRyb3Bkb3duIGNvbXBvbmVudC5cbiAgICovXG4gIE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgPSAnbXVsdGlwbGUtZHJvcGRvd24tY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtdWx0aXBsZSBlbWFpbCBjb21wb25lbnQuXG4gICAqL1xuICBNdWx0aXBsZUVtYWlsQ29tcG9uZW50ID0gJ211bHRpcGxlLWVtYWlsLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbXVsdGlwbGUgZmlsZSBjb21wb25lbnQuXG4gICAqL1xuICBNdWx0aXBsZUZpbGVDb21wb25lbnQgPSAnbXVsdGlwbGUtZmlsZS1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG11bHRpcGxlIHRleHQgY29tcG9uZW50LlxuICAgKi9cbiAgTXVsdGlwbGVUZXh0Q29tcG9uZW50ID0gJ211bHRpcGxlLXRleHQtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBudW1iZXIgY29tcG9uZW50LlxuICAgKi9cbiAgTnVtYmVyQ29tcG9uZW50ID0gJ251bWJlci1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG9rIGJ1dHRvbi5cbiAgICovXG4gIE9rQnV0dG9uID0gJ29rLWJ1dHRvbicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgb3ZlcmxheSB2YWxpZGF0b3IuXG4gICAqL1xuICBPdmVybGF5VmFsaWRhdG9yID0gJ292ZXJsYXktdmFsaWRhdG9yJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBwYXNzd29yZCBjb21wb25lbnQuXG4gICAqL1xuICBQYXNzd29yZENvbXBvbmVudCA9ICdwYXNzd29yZC1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGJhbm5lciBuYW1pbmcgYSBwbHVnaW4gdGhpcyBvbmUgcmVmdXNlcywgb3Igd2FybnMgYWJvdXQsIHJ1bm5pbmcgYmVzaWRlLlxuICAgKi9cbiAgUGx1Z2luQ29uZmxpY3RCYW5uZXIgPSAncGx1Z2luLWNvbmZsaWN0LWJhbm5lcicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgYmFubmVyIGEgYmxvY2tlZCBwbHVnaW4gcmVuZGVycyBpbiBwbGFjZSBvZiBpdHMgc2V0dGluZ3MsIG5hbWluZyB0aGUgbWFuZGF0b3J5XG4gICAqIGRlcGVuZGVuY3kgaXQgaXMgd2FpdGluZyBmb3IuXG4gICAqL1xuICBQbHVnaW5EZXBlbmRlbmN5QmFubmVyID0gJ3BsdWdpbi1kZXBlbmRlbmN5LWJhbm5lcicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgY2xvc2UgYnV0dG9uIG9mIGEgbm90aWNlIHRoYXQgcmVxdWlyZXMgY2xvc2UgY29uZmlybWF0aW9uLlxuICAgKi9cbiAgUGx1Z2luTm90aWNlQ2xvc2VCdXR0b24gPSAncGx1Z2luLW5vdGljZS1jbG9zZS1idXR0b24nLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGNvbnRhaW5lciB3cmFwcGluZyBhIG5vdGljZSdzIGNvbnRlbnQsIHVzZWQgdG8ga2VlcCB0aGUgbm90aWNlIG9wZW4gd2hlbiBhblxuICAgKiBpbnRlcmFjdGl2ZSBlbGVtZW50IGluc2lkZSBpdCBpcyBjbGlja2VkLlxuICAgKi9cbiAgUGx1Z2luTm90aWNlQ29udGVudCA9ICdwbHVnaW4tbm90aWNlLWNvbnRlbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHBsdWdpbiBuYW1lIHNob3duIGFzIHRoZSBwcmVmaXggb2YgYSBub3RpY2UuXG4gICAqL1xuICBQbHVnaW5Ob3RpY2VOYW1lID0gJ3BsdWdpbi1ub3RpY2UtbmFtZScsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGFwcGxpZWQgdG8gdGhlIG5vdGljZSBlbGVtZW50IG9mIGEgbm90aWNlIHRoYXQgcmVxdWlyZXMgYW4gZXhwbGljaXQgY2xvc2UsIHVzZWQgdG8gbWFrZVxuICAgKiBpdHMgd2hvbGUgYXJlYSBub24tZGlzbWlzc2libGUuXG4gICAqL1xuICBQbHVnaW5Ob3RpY2VSZXF1aXJlc0V4cGxpY2l0Q2xvc2UgPSAncGx1Z2luLW5vdGljZS1yZXF1aXJlcy1leHBsaWNpdC1jbG9zZScsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIFBsdWdpblNldHRpbmdzVGFiID0gJ3BsdWdpbi1zZXR0aW5ncy10YWInLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGJhbm5lciBhIHBsdWdpbi1zdWdnZXN0aW9uIHJlbmRlcnMgaW50byBhIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIFBsdWdpblN1Z2dlc3Rpb25CYW5uZXIgPSAncGx1Z2luLXN1Z2dlc3Rpb24tYmFubmVyJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgUG9wb3ZlciA9ICdwb3BvdmVyJyxcblxuICAvKipcbiAgICogT2JzaWRpYW4ncyBjbGFzcyBmb3Igb25lIHJvdyBvZiBpdHMgbW9kYWwgaW5zdHJ1Y3Rpb24gYmFyLCByZXVzZWQgc28gYSBzZWxmLWNyZWF0ZWQgYmFyIGluaGVyaXRzIHRoZVxuICAgKiBhcHAncyBvd24gaW5zdHJ1Y3Rpb24gc3R5bGluZy5cbiAgICovXG4gIFByb21wdEluc3RydWN0aW9uID0gJ3Byb21wdC1pbnN0cnVjdGlvbicsXG5cbiAgLyoqXG4gICAqIE9ic2lkaWFuJ3MgY2xhc3MgZm9yIHRoZSBrZXktaGludCBoYWxmIG9mIG9uZSBpbnN0cnVjdGlvbiByb3cuIEl0IGlzIHRoZSBvbmx5IHRoaW5nIGNhcnJ5aW5nIHRoYXRcbiAgICogaGludCdzIGJvbGQgd2VpZ2h0IGFuZCB0aGUgYG1hcmdpbi1pbmxpbmUtZW5kYCB0aGF0IHNlcGFyYXRlcyBpdCBmcm9tIHRoZSBwdXJwb3NlIHRleHQsIHNvIGFcbiAgICogc2VsZi1jcmVhdGVkIGJhciB0aGF0IG9taXRzIGl0IHJlbmRlcnMgYGFsdCAxS2VlcCB0aGUgb2xkIHRpdGxlYCB3ZWxkZWQgdG9nZXRoZXIuIFJldXNlZCByYXRoZXJcbiAgICogdGhhbiByZS1pbXBsZW1lbnRlZDogdGhlIGFwcCdzIHJ1bGUgZm9yIGl0IGlzIHVuc2NvcGVkLCBzbyBpdCByZWFjaGVzIGEgcGxhaW4gYE1vZGFsYCB0b28sIGFuZFxuICAgKiBzaGFyaW5nIHRoZSBjbGFzcyBrZWVwcyB0aGUgc2VsZi1jcmVhdGVkIGJhciBhbmQgYHNldEluc3RydWN0aW9uc2AgZnJvbSBldmVyIGRyaWZ0aW5nIGFwYXJ0LlxuICAgKi9cbiAgUHJvbXB0SW5zdHJ1Y3Rpb25Db21tYW5kID0gJ3Byb21wdC1pbnN0cnVjdGlvbi1jb21tYW5kJyxcblxuICAvKipcbiAgICogT2JzaWRpYW4ncyBjbGFzcyBmb3IgaXRzIG1vZGFsIGluc3RydWN0aW9uIGJhciwgcmV1c2VkIHNvIGEgc2VsZi1jcmVhdGVkIGJhciBpbmhlcml0cyB0aGUgYXBwJ3Mgb3duXG4gICAqIGluc3RydWN0aW9uIHN0eWxpbmcuXG4gICAqL1xuICBQcm9tcHRJbnN0cnVjdGlvbnMgPSAncHJvbXB0LWluc3RydWN0aW9ucycsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgcHJvbXB0IG1vZGFsLlxuICAgKi9cbiAgUHJvbXB0TW9kYWwgPSAncHJvbXB0LW1vZGFsJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSByZXN0b3JlIGJ1dHRvbiBvZiB0aGUgbWluaW1pemVkIG1vZGFsIGJhci5cbiAgICovXG4gIFJlc3RvcmVCdXR0b24gPSAncmVzdG9yZS1idXR0b24nLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHNlbGVjdCBpdGVtIG1vZGFsLlxuICAgKi9cbiAgU2VsZWN0SXRlbU1vZGFsID0gJ3NlbGVjdC1pdGVtLW1vZGFsJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBzZWxlY3Qgb3B0aW9uIG1vZGFsLlxuICAgKi9cbiAgU2VsZWN0T3B0aW9uTW9kYWwgPSAnc2VsZWN0LW9wdGlvbi1tb2RhbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgc2V0dGluZyBjb21wb25lbnQgd3JhcHBlci5cbiAgICovXG4gIFNldHRpbmdDb21wb25lbnRXcmFwcGVyID0gJ3NldHRpbmctY29tcG9uZW50LXdyYXBwZXInLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHRlbGVwaG9uZSBjb21wb25lbnQuXG4gICAqL1xuICBUZWxlcGhvbmVDb21wb25lbnQgPSAndGVsZXBob25lLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdGV4dCBib3guXG4gICAqL1xuICBUZXh0Qm94ID0gJ3RleHQtYm94JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB0aW1lIGNvbXBvbmVudC5cbiAgICovXG4gIFRpbWVDb21wb25lbnQgPSAndGltZS1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHRvb2x0aXAuXG4gICAqL1xuICBUb29sdGlwID0gJ3Rvb2x0aXAnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHRvb2x0aXAgYXJyb3cuXG4gICAqL1xuICBUb29sdGlwQXJyb3cgPSAndG9vbHRpcC1hcnJvdycsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdG9vbHRpcCB2YWxpZGF0b3IuXG4gICAqL1xuICBUb29sdGlwVmFsaWRhdG9yID0gJ3Rvb2x0aXAtdmFsaWRhdG9yJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB0cmktc3RhdGUgY2hlY2tib3ggY29tcG9uZW50LlxuICAgKi9cbiAgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCA9ICd0cmktc3RhdGUtY2hlY2tib3gtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB0eXBlZCBkcm9wZG93biBjb21wb25lbnQuXG4gICAqL1xuICBUeXBlZERyb3Bkb3duQ29tcG9uZW50ID0gJ3R5cGVkLWRyb3Bkb3duLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdHlwZWQgbXVsdGlwbGUgZHJvcGRvd24gY29tcG9uZW50LlxuICAgKi9cbiAgVHlwZWRNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50ID0gJ3R5cGVkLW11bHRpcGxlLWRyb3Bkb3duLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciBhbiBpbnB1dCB0aGUgdXNlciBoYXMgbm90IGludGVyYWN0ZWQgd2l0aCB5ZXQsIHVzZWQgdG8gZGVmZXIgdGhlIGludmFsaWQgc3R5bGluZyB1bnRpbFxuICAgKiB0aGUgaW5wdXQgaXMgdG91Y2hlZC5cbiAgICovXG4gIFVudG91Y2hlZCA9ICd1bnRvdWNoZWQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHVybCBjb21wb25lbnQuXG4gICAqL1xuICBVcmxDb21wb25lbnQgPSAndXJsLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgd2VlayBjb21wb25lbnQuXG4gICAqL1xuICBXZWVrQ29tcG9uZW50ID0gJ3dlZWstY29tcG9uZW50J1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFTTyxJQUFLLFdBQUwsa0JBQUtBLGNBQUw7QUFJTCxFQUFBQSxVQUFBLGdCQUFhO0FBS2IsRUFBQUEsVUFBQSxrQkFBZTtBQUtmLEVBQUFBLFVBQUEsdUJBQW9CO0FBS3BCLEVBQUFBLFVBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLFVBQUEsVUFBTztBQUtQLEVBQUFBLFVBQUEsOEJBQTJCO0FBSzNCLEVBQUFBLFVBQUEsa0JBQWU7QUFLZixFQUFBQSxVQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxVQUFBLHVCQUFvQjtBQUtwQixFQUFBQSxVQUFBLG9CQUFpQjtBQUtqQixFQUFBQSxVQUFBLG1CQUFnQjtBQU1oQixFQUFBQSxVQUFBLGNBQVc7QUFLWCxFQUFBQSxVQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxVQUFBLGlCQUFjO0FBS2QsRUFBQUEsVUFBQSxzQkFBbUI7QUFLbkIsRUFBQUEsVUFBQSxzQkFBbUI7QUFLbkIsRUFBQUEsVUFBQSxvQkFBaUI7QUFLakIsRUFBQUEsVUFBQSx1QkFBb0I7QUFNcEIsRUFBQUEsVUFBQSxnQ0FBNkI7QUFLN0IsRUFBQUEsVUFBQSw0QkFBeUI7QUFLekIsRUFBQUEsVUFBQSxrQkFBZTtBQU9mLEVBQUFBLFVBQUEseUJBQXNCO0FBS3RCLEVBQUFBLFVBQUEsd0JBQXFCO0FBS3JCLEVBQUFBLFVBQUEsbUJBQWdCO0FBTWhCLEVBQUFBLFVBQUEsdUJBQW9CO0FBS3BCLEVBQUFBLFVBQUEsb0JBQWlCO0FBS2pCLEVBQUFBLFVBQUEsK0JBQTRCO0FBSzVCLEVBQUFBLFVBQUEsNEJBQXlCO0FBS3pCLEVBQUFBLFVBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLFVBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLFVBQUEscUJBQWtCO0FBS2xCLEVBQUFBLFVBQUEsY0FBVztBQUtYLEVBQUFBLFVBQUEsc0JBQW1CO0FBS25CLEVBQUFBLFVBQUEsdUJBQW9CO0FBS3BCLEVBQUFBLFVBQUEsMEJBQXVCO0FBTXZCLEVBQUFBLFVBQUEsNEJBQXlCO0FBS3pCLEVBQUFBLFVBQUEsNkJBQTBCO0FBTTFCLEVBQUFBLFVBQUEseUJBQXNCO0FBS3RCLEVBQUFBLFVBQUEsc0JBQW1CO0FBTW5CLEVBQUFBLFVBQUEsdUNBQW9DO0FBS3BDLEVBQUFBLFVBQUEsdUJBQW9CO0FBS3BCLEVBQUFBLFVBQUEsNEJBQXlCO0FBS3pCLEVBQUFBLFVBQUEsYUFBVTtBQU1WLEVBQUFBLFVBQUEsdUJBQW9CO0FBU3BCLEVBQUFBLFVBQUEsOEJBQTJCO0FBTTNCLEVBQUFBLFVBQUEsd0JBQXFCO0FBS3JCLEVBQUFBLFVBQUEsaUJBQWM7QUFLZCxFQUFBQSxVQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxVQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxVQUFBLHVCQUFvQjtBQUtwQixFQUFBQSxVQUFBLDZCQUEwQjtBQUsxQixFQUFBQSxVQUFBLHdCQUFxQjtBQUtyQixFQUFBQSxVQUFBLGFBQVU7QUFLVixFQUFBQSxVQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxVQUFBLGFBQVU7QUFLVixFQUFBQSxVQUFBLGtCQUFlO0FBS2YsRUFBQUEsVUFBQSxzQkFBbUI7QUFLbkIsRUFBQUEsVUFBQSwrQkFBNEI7QUFLNUIsRUFBQUEsVUFBQSw0QkFBeUI7QUFLekIsRUFBQUEsVUFBQSxvQ0FBaUM7QUFNakMsRUFBQUEsVUFBQSxlQUFZO0FBS1osRUFBQUEsVUFBQSxrQkFBZTtBQUtmLEVBQUFBLFVBQUEsbUJBQWdCO0FBelVOLFNBQUFBO0FBQUEsR0FBQTsiLAogICJuYW1lcyI6IFsiQ3NzQ2xhc3MiXQp9Cg==
75
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Nzcy1jbGFzcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENTUyBjbGFzc2VzIHVzZWQgYnkgdGhlIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYCBsaWJyYXJ5LiB7QGxpbmsgQ3NzQ2xhc3MuTGlicmFyeU5hbWV9IGtlZXBzIHRoZSBsZWdhY3lcbiAqIGBvYnNpZGlhbi1kZXYtdXRpbHNgIG5hbWUsIHNvIHN0eWxlc2hlZXRzIHdyaXR0ZW4gZm9yIG9sZGVyIGNvcGllcyBzdGlsbCBtYXRjaC5cbiAqL1xuXG4vKipcbiAqIENTUyBjbGFzc2VzIHVzZWQgYnkgdGhlIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYCBsaWJyYXJ5LiB7QGxpbmsgQ3NzQ2xhc3MuTGlicmFyeU5hbWV9IGtlZXBzIHRoZSBsZWdhY3lcbiAqIGBvYnNpZGlhbi1kZXYtdXRpbHNgIG5hbWUsIHNvIHN0eWxlc2hlZXRzIHdyaXR0ZW4gZm9yIG9sZGVyIGNvcGllcyBzdGlsbCBtYXRjaC5cbiAqL1xuZXhwb3J0IGVudW0gQ3NzQ2xhc3Mge1xuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBhbGVydCBtb2RhbC5cbiAgICovXG4gIEFsZXJ0TW9kYWwgPSAnYWxlcnQtbW9kYWwnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGNhbmNlbCBidXR0b24uXG4gICAqL1xuICBDYW5jZWxCdXR0b24gPSAnY2FuY2VsLWJ1dHRvbicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgY2hlY2tib3ggY29tcG9uZW50LlxuICAgKi9cbiAgQ2hlY2tib3hDb21wb25lbnQgPSAnY2hlY2tib3gtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogT2JzaWRpYW4ncyBjbGFzcyBmb3IgYSBjbGlja2FibGUgaWNvbiBidXR0b24sIGdpdmluZyBpdCB0aGUgaG92ZXIgYmFja2dyb3VuZCBhbmQgaWNvbi1jb2xvciB0cmVhdG1lbnQuXG4gICAqL1xuICBDbGlja2FibGVJY29uID0gJ2NsaWNrYWJsZS1pY29uJyxcblxuICAvKipcbiAgICogT2JzaWRpYW4ncyBjbGFzcyBmb3IgYW4gaW5saW5lIGNvZGUgZWxlbWVudCAodXNlZCBieSBgYXBwZW5kQ29kZUJsb2NrYCkuXG4gICAqL1xuICBDb2RlID0gJ2NvZGUnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGNvZGUgaGlnaGxpZ2h0ZXIgY29tcG9uZW50LlxuICAgKi9cbiAgQ29kZUhpZ2hsaWdodGVyQ29tcG9uZW50ID0gJ2NvZGUtaGlnaGxpZ2h0ZXItY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBjb25maXJtIG1vZGFsLlxuICAgKi9cbiAgQ29uZmlybU1vZGFsID0gJ2NvbmZpcm0tbW9kYWwnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGRhdGUgY29tcG9uZW50LlxuICAgKi9cbiAgRGF0ZUNvbXBvbmVudCA9ICdkYXRlLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgZGF0ZSBhbmQgdGltZSBjb21wb25lbnQuXG4gICAqL1xuICBEYXRlVGltZUNvbXBvbmVudCA9ICdkYXRldGltZS1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGVtYWlsIGNvbXBvbmVudC5cbiAgICovXG4gIEVtYWlsQ29tcG9uZW50ID0gJ2VtYWlsLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgZmlsZSBjb21wb25lbnQuXG4gICAqL1xuICBGaWxlQ29tcG9uZW50ID0gJ2ZpbGUtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogT2JzaWRpYW4ncyBjbGFzcyBmb3IgYSBjb250cm9sIHRoYXQgaXMgY3VycmVudGx5IE9OLCByZXVzZWQgc28gYSBwcmVzc2VkIGNvbW1hbmQgYnV0dG9uIG1hdGNoZXMgdGhlXG4gICAqIGFwcCdzIG93biB0b2dnbGVkIGNvbnRyb2xzLlxuICAgKi9cbiAgSXNBY3RpdmUgPSAnaXMtYWN0aXZlJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBwbGFjZWhvbGRlci5cbiAgICovXG4gIElzUGxhY2Vob2xkZXIgPSAnaXMtcGxhY2Vob2xkZXInLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGxpYnJhcnkgbmFtZS5cbiAgICovXG4gIExpYnJhcnlOYW1lID0gJ29ic2lkaWFuLWRldi11dGlscycsXG5cbiAgLyoqXG4gICAqIE9ic2lkaWFuJ3MgY2xhc3MgbWFya2luZyByZW5kZXJlZC1tYXJrZG93biBjb250ZW50ICh1c2VkIGJ5IGBhcHBlbmRDb2RlQmxvY2tgKS5cbiAgICovXG4gIE1hcmtkb3duUmVuZGVyZWQgPSAnbWFya2Rvd24tcmVuZGVyZWQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG1pbmltaXphYmxlIG1vZGFsLlxuICAgKi9cbiAgTWluaW1pemFibGVNb2RhbCA9ICdtaW5pbWl6YWJsZS1tb2RhbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbWluaW1pemUgYnV0dG9uIG9mIHRoZSBtaW5pbWl6YWJsZSBtb2RhbC5cbiAgICovXG4gIE1pbmltaXplQnV0dG9uID0gJ21pbmltaXplLWJ1dHRvbicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbWluaW1pemVkIGJhciBvZiB0aGUgbWluaW1pemFibGUgbW9kYWwuXG4gICAqL1xuICBNaW5pbWl6ZWRNb2RhbEJhciA9ICdtaW5pbWl6ZWQtbW9kYWwtYmFyJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBvbmUtc2hvdCBhdHRlbnRpb24gZmxhc2ggb2YgdGhlIG1pbmltaXplZCBiYXIsIHBsYXllZCB3aGVuIHRoZSB1c2VyIGF0dGVtcHRzIGFcbiAgICogYmxvY2tlZCBhY3Rpb24gKGEga2V5c3Ryb2tlLCByaWdodC1jbGljaywgb3Igb3BlbmluZyBhbm90aGVyIG1vZGFsKSB3aGlsZSB0aGUgbW9kYWwgaXMgbWluaW1pemVkLlxuICAgKi9cbiAgTWluaW1pemVkTW9kYWxCYXJBdHRlbnRpb24gPSAnbWluaW1pemVkLW1vZGFsLWJhci1hdHRlbnRpb24nLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHRpdGxlIG9mIHRoZSBtaW5pbWl6ZWQgYmFyIG9mIHRoZSBtaW5pbWl6YWJsZSBtb2RhbC5cbiAgICovXG4gIE1pbmltaXplZE1vZGFsQmFyVGl0bGUgPSAnbWluaW1pemVkLW1vZGFsLWJhci10aXRsZScsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciBvbmUgYnV0dG9uIGluIGEgbW9kYWwncyBjb21tYW5kIHN0cmlwLlxuICAgKi9cbiAgTW9kYWxDb21tYW5kID0gJ21vZGFsLWNvbW1hbmQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgYSBjb250cm9sIGluamVjdGVkIGludG8gYW4gaW5zdHJ1Y3Rpb24ncyBwdXJwb3NlIHRleHQgXHUyMDE0IGEgY2hlY2tib3gsIGEgZHJvcGRvd24uXG4gICAqIE9ic2lkaWFuJ3Mgb3duIGluc3RydWN0aW9uIGJhciBuZXZlciBjb250YWlucyBvbmUsIHNvIG5vdGhpbmcgdXBzdHJlYW0gc2VwYXJhdGVzIGl0IGZyb20gdGhlIGxhYmVsXG4gICAqIGl0IGJlbG9uZ3MgdG8uXG4gICAqL1xuICBNb2RhbENvbW1hbmRDb250cm9sID0gJ21vZGFsLWNvbW1hbmQtY29udHJvbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgaG90a2V5IGhpbnQgaW5zaWRlIGEgbW9kYWwgY29tbWFuZCBidXR0b24uXG4gICAqL1xuICBNb2RhbENvbW1hbmRIb3RrZXkgPSAnbW9kYWwtY29tbWFuZC1ob3RrZXknLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHN0cmlwIG9mIGNvbW1hbmRzIGEgbW9kYWwgcmVuZGVycyBhbG9uZyBpdHMgYm90dG9tIGVkZ2UuXG4gICAqL1xuICBNb2RhbENvbW1hbmRzID0gJ21vZGFsLWNvbW1hbmRzJyxcblxuICAvKipcbiAgICogT2JzaWRpYW4ncyBjbGFzcyBmb3IgYSBtb2RhbCBoZWFkZXIgYnV0dG9uIChlLmcuIHRoZSBtb2RhbCBjbG9zZSBidXR0b24pLCByZXVzZWQgdG8gbWF0Y2ggdGhlXG4gICAqIG5hdGl2ZSBtb2RhbCBjbG9zZSBidXR0b24ncyBib3ggYW5kIGhvdmVyLlxuICAgKi9cbiAgTW9kYWxIZWFkZXJCdXR0b24gPSAnbW9kYWwtaGVhZGVyLWJ1dHRvbicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbW9udGggY29tcG9uZW50LlxuICAgKi9cbiAgTW9udGhDb21wb25lbnQgPSAnbW9udGgtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtdWx0aXBsZSBkcm9wZG93biBjb21wb25lbnQuXG4gICAqL1xuICBNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50ID0gJ211bHRpcGxlLWRyb3Bkb3duLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbXVsdGlwbGUgZW1haWwgY29tcG9uZW50LlxuICAgKi9cbiAgTXVsdGlwbGVFbWFpbENvbXBvbmVudCA9ICdtdWx0aXBsZS1lbWFpbC1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG11bHRpcGxlIGZpbGUgY29tcG9uZW50LlxuICAgKi9cbiAgTXVsdGlwbGVGaWxlQ29tcG9uZW50ID0gJ211bHRpcGxlLWZpbGUtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtdWx0aXBsZSB0ZXh0IGNvbXBvbmVudC5cbiAgICovXG4gIE11bHRpcGxlVGV4dENvbXBvbmVudCA9ICdtdWx0aXBsZS10ZXh0LWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbnVtYmVyIGNvbXBvbmVudC5cbiAgICovXG4gIE51bWJlckNvbXBvbmVudCA9ICdudW1iZXItY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBvayBidXR0b24uXG4gICAqL1xuICBPa0J1dHRvbiA9ICdvay1idXR0b24nLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG92ZXJsYXkgdmFsaWRhdG9yLlxuICAgKi9cbiAgT3ZlcmxheVZhbGlkYXRvciA9ICdvdmVybGF5LXZhbGlkYXRvcicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgcGFzc3dvcmQgY29tcG9uZW50LlxuICAgKi9cbiAgUGFzc3dvcmRDb21wb25lbnQgPSAncGFzc3dvcmQtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBiYW5uZXIgbmFtaW5nIGEgcGx1Z2luIHRoaXMgb25lIHJlZnVzZXMsIG9yIHdhcm5zIGFib3V0LCBydW5uaW5nIGJlc2lkZS5cbiAgICovXG4gIFBsdWdpbkNvbmZsaWN0QmFubmVyID0gJ3BsdWdpbi1jb25mbGljdC1iYW5uZXInLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGJhbm5lciBhIGJsb2NrZWQgcGx1Z2luIHJlbmRlcnMgaW4gcGxhY2Ugb2YgaXRzIHNldHRpbmdzLCBuYW1pbmcgdGhlIG1hbmRhdG9yeVxuICAgKiBkZXBlbmRlbmN5IGl0IGlzIHdhaXRpbmcgZm9yLlxuICAgKi9cbiAgUGx1Z2luRGVwZW5kZW5jeUJhbm5lciA9ICdwbHVnaW4tZGVwZW5kZW5jeS1iYW5uZXInLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGNsb3NlIGJ1dHRvbiBvZiBhIG5vdGljZSB0aGF0IHJlcXVpcmVzIGNsb3NlIGNvbmZpcm1hdGlvbi5cbiAgICovXG4gIFBsdWdpbk5vdGljZUNsb3NlQnV0dG9uID0gJ3BsdWdpbi1ub3RpY2UtY2xvc2UtYnV0dG9uJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBjb250YWluZXIgd3JhcHBpbmcgYSBub3RpY2UncyBjb250ZW50LCB1c2VkIHRvIGtlZXAgdGhlIG5vdGljZSBvcGVuIHdoZW4gYW5cbiAgICogaW50ZXJhY3RpdmUgZWxlbWVudCBpbnNpZGUgaXQgaXMgY2xpY2tlZC5cbiAgICovXG4gIFBsdWdpbk5vdGljZUNvbnRlbnQgPSAncGx1Z2luLW5vdGljZS1jb250ZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBwbHVnaW4gbmFtZSBzaG93biBhcyB0aGUgcHJlZml4IG9mIGEgbm90aWNlLlxuICAgKi9cbiAgUGx1Z2luTm90aWNlTmFtZSA9ICdwbHVnaW4tbm90aWNlLW5hbWUnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBub3RpY2UgZWxlbWVudCBvZiBhIG5vdGljZSB0aGF0IHJlcXVpcmVzIGFuIGV4cGxpY2l0IGNsb3NlLCB1c2VkIHRvIG1ha2VcbiAgICogaXRzIHdob2xlIGFyZWEgbm9uLWRpc21pc3NpYmxlLlxuICAgKi9cbiAgUGx1Z2luTm90aWNlUmVxdWlyZXNFeHBsaWNpdENsb3NlID0gJ3BsdWdpbi1ub3RpY2UtcmVxdWlyZXMtZXhwbGljaXQtY2xvc2UnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBQbHVnaW5TZXR0aW5nc1RhYiA9ICdwbHVnaW4tc2V0dGluZ3MtdGFiJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBiYW5uZXIgYSBwbHVnaW4tc3VnZ2VzdGlvbiByZW5kZXJzIGludG8gYSBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBQbHVnaW5TdWdnZXN0aW9uQmFubmVyID0gJ3BsdWdpbi1zdWdnZXN0aW9uLWJhbm5lcicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgcG9wb3Zlci5cbiAgICovXG4gIFBvcG92ZXIgPSAncG9wb3ZlcicsXG5cbiAgLyoqXG4gICAqIE9ic2lkaWFuJ3MgY2xhc3MgZm9yIG9uZSByb3cgb2YgaXRzIG1vZGFsIGluc3RydWN0aW9uIGJhciwgcmV1c2VkIHNvIGEgc2VsZi1jcmVhdGVkIGJhciBpbmhlcml0cyB0aGVcbiAgICogYXBwJ3Mgb3duIGluc3RydWN0aW9uIHN0eWxpbmcuXG4gICAqL1xuICBQcm9tcHRJbnN0cnVjdGlvbiA9ICdwcm9tcHQtaW5zdHJ1Y3Rpb24nLFxuXG4gIC8qKlxuICAgKiBPYnNpZGlhbidzIGNsYXNzIGZvciB0aGUga2V5LWhpbnQgaGFsZiBvZiBvbmUgaW5zdHJ1Y3Rpb24gcm93LiBJdCBpcyB0aGUgb25seSB0aGluZyBjYXJyeWluZyB0aGF0XG4gICAqIGhpbnQncyBib2xkIHdlaWdodCBhbmQgdGhlIGBtYXJnaW4taW5saW5lLWVuZGAgdGhhdCBzZXBhcmF0ZXMgaXQgZnJvbSB0aGUgcHVycG9zZSB0ZXh0LCBzbyBhXG4gICAqIHNlbGYtY3JlYXRlZCBiYXIgdGhhdCBvbWl0cyBpdCByZW5kZXJzIGBhbHQgMUtlZXAgdGhlIG9sZCB0aXRsZWAgd2VsZGVkIHRvZ2V0aGVyLiBSZXVzZWQgcmF0aGVyXG4gICAqIHRoYW4gcmUtaW1wbGVtZW50ZWQ6IHRoZSBhcHAncyBydWxlIGZvciBpdCBpcyB1bnNjb3BlZCwgc28gaXQgcmVhY2hlcyBhIHBsYWluIGBNb2RhbGAgdG9vLCBhbmRcbiAgICogc2hhcmluZyB0aGUgY2xhc3Mga2VlcHMgdGhlIHNlbGYtY3JlYXRlZCBiYXIgYW5kIGBzZXRJbnN0cnVjdGlvbnNgIGZyb20gZXZlciBkcmlmdGluZyBhcGFydC5cbiAgICovXG4gIFByb21wdEluc3RydWN0aW9uQ29tbWFuZCA9ICdwcm9tcHQtaW5zdHJ1Y3Rpb24tY29tbWFuZCcsXG5cbiAgLyoqXG4gICAqIE9ic2lkaWFuJ3MgY2xhc3MgZm9yIGl0cyBtb2RhbCBpbnN0cnVjdGlvbiBiYXIsIHJldXNlZCBzbyBhIHNlbGYtY3JlYXRlZCBiYXIgaW5oZXJpdHMgdGhlIGFwcCdzIG93blxuICAgKiBpbnN0cnVjdGlvbiBzdHlsaW5nLlxuICAgKi9cbiAgUHJvbXB0SW5zdHJ1Y3Rpb25zID0gJ3Byb21wdC1pbnN0cnVjdGlvbnMnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHByb21wdCBtb2RhbC5cbiAgICovXG4gIFByb21wdE1vZGFsID0gJ3Byb21wdC1tb2RhbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgcmVzdG9yZSBidXR0b24gb2YgdGhlIG1pbmltaXplZCBtb2RhbCBiYXIuXG4gICAqL1xuICBSZXN0b3JlQnV0dG9uID0gJ3Jlc3RvcmUtYnV0dG9uJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBzZWxlY3QgaXRlbSBtb2RhbC5cbiAgICovXG4gIFNlbGVjdEl0ZW1Nb2RhbCA9ICdzZWxlY3QtaXRlbS1tb2RhbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgc2VsZWN0IG9wdGlvbiBtb2RhbC5cbiAgICovXG4gIFNlbGVjdE9wdGlvbk1vZGFsID0gJ3NlbGVjdC1vcHRpb24tbW9kYWwnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHNldHRpbmcgY29tcG9uZW50IHdyYXBwZXIuXG4gICAqL1xuICBTZXR0aW5nQ29tcG9uZW50V3JhcHBlciA9ICdzZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB0ZWxlcGhvbmUgY29tcG9uZW50LlxuICAgKi9cbiAgVGVsZXBob25lQ29tcG9uZW50ID0gJ3RlbGVwaG9uZS1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHRleHQgYm94LlxuICAgKi9cbiAgVGV4dEJveCA9ICd0ZXh0LWJveCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdGltZSBjb21wb25lbnQuXG4gICAqL1xuICBUaW1lQ29tcG9uZW50ID0gJ3RpbWUtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB0b29sdGlwLlxuICAgKi9cbiAgVG9vbHRpcCA9ICd0b29sdGlwJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB0b29sdGlwIGFycm93LlxuICAgKi9cbiAgVG9vbHRpcEFycm93ID0gJ3Rvb2x0aXAtYXJyb3cnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHRvb2x0aXAgdmFsaWRhdG9yLlxuICAgKi9cbiAgVG9vbHRpcFZhbGlkYXRvciA9ICd0b29sdGlwLXZhbGlkYXRvcicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdHJpLXN0YXRlIGNoZWNrYm94IGNvbXBvbmVudC5cbiAgICovXG4gIFRyaVN0YXRlQ2hlY2tib3hDb21wb25lbnQgPSAndHJpLXN0YXRlLWNoZWNrYm94LWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdHlwZWQgZHJvcGRvd24gY29tcG9uZW50LlxuICAgKi9cbiAgVHlwZWREcm9wZG93bkNvbXBvbmVudCA9ICd0eXBlZC1kcm9wZG93bi1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHR5cGVkIG11bHRpcGxlIGRyb3Bkb3duIGNvbXBvbmVudC5cbiAgICovXG4gIFR5cGVkTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudCA9ICd0eXBlZC1tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgYW4gaW5wdXQgdGhlIHVzZXIgaGFzIG5vdCBpbnRlcmFjdGVkIHdpdGggeWV0LCB1c2VkIHRvIGRlZmVyIHRoZSBpbnZhbGlkIHN0eWxpbmcgdW50aWxcbiAgICogdGhlIGlucHV0IGlzIHRvdWNoZWQuXG4gICAqL1xuICBVbnRvdWNoZWQgPSAndW50b3VjaGVkJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB1cmwgY29tcG9uZW50LlxuICAgKi9cbiAgVXJsQ29tcG9uZW50ID0gJ3VybC1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHdlZWsgY29tcG9uZW50LlxuICAgKi9cbiAgV2Vla0NvbXBvbmVudCA9ICd3ZWVrLWNvbXBvbmVudCdcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBV08sSUFBSyxXQUFMLGtCQUFLQSxjQUFMO0FBSUwsRUFBQUEsVUFBQSxnQkFBYTtBQUtiLEVBQUFBLFVBQUEsa0JBQWU7QUFLZixFQUFBQSxVQUFBLHVCQUFvQjtBQUtwQixFQUFBQSxVQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxVQUFBLFVBQU87QUFLUCxFQUFBQSxVQUFBLDhCQUEyQjtBQUszQixFQUFBQSxVQUFBLGtCQUFlO0FBS2YsRUFBQUEsVUFBQSxtQkFBZ0I7QUFLaEIsRUFBQUEsVUFBQSx1QkFBb0I7QUFLcEIsRUFBQUEsVUFBQSxvQkFBaUI7QUFLakIsRUFBQUEsVUFBQSxtQkFBZ0I7QUFNaEIsRUFBQUEsVUFBQSxjQUFXO0FBS1gsRUFBQUEsVUFBQSxtQkFBZ0I7QUFLaEIsRUFBQUEsVUFBQSxpQkFBYztBQUtkLEVBQUFBLFVBQUEsc0JBQW1CO0FBS25CLEVBQUFBLFVBQUEsc0JBQW1CO0FBS25CLEVBQUFBLFVBQUEsb0JBQWlCO0FBS2pCLEVBQUFBLFVBQUEsdUJBQW9CO0FBTXBCLEVBQUFBLFVBQUEsZ0NBQTZCO0FBSzdCLEVBQUFBLFVBQUEsNEJBQXlCO0FBS3pCLEVBQUFBLFVBQUEsa0JBQWU7QUFPZixFQUFBQSxVQUFBLHlCQUFzQjtBQUt0QixFQUFBQSxVQUFBLHdCQUFxQjtBQUtyQixFQUFBQSxVQUFBLG1CQUFnQjtBQU1oQixFQUFBQSxVQUFBLHVCQUFvQjtBQUtwQixFQUFBQSxVQUFBLG9CQUFpQjtBQUtqQixFQUFBQSxVQUFBLCtCQUE0QjtBQUs1QixFQUFBQSxVQUFBLDRCQUF5QjtBQUt6QixFQUFBQSxVQUFBLDJCQUF3QjtBQUt4QixFQUFBQSxVQUFBLDJCQUF3QjtBQUt4QixFQUFBQSxVQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxVQUFBLGNBQVc7QUFLWCxFQUFBQSxVQUFBLHNCQUFtQjtBQUtuQixFQUFBQSxVQUFBLHVCQUFvQjtBQUtwQixFQUFBQSxVQUFBLDBCQUF1QjtBQU12QixFQUFBQSxVQUFBLDRCQUF5QjtBQUt6QixFQUFBQSxVQUFBLDZCQUEwQjtBQU0xQixFQUFBQSxVQUFBLHlCQUFzQjtBQUt0QixFQUFBQSxVQUFBLHNCQUFtQjtBQU1uQixFQUFBQSxVQUFBLHVDQUFvQztBQUtwQyxFQUFBQSxVQUFBLHVCQUFvQjtBQUtwQixFQUFBQSxVQUFBLDRCQUF5QjtBQUt6QixFQUFBQSxVQUFBLGFBQVU7QUFNVixFQUFBQSxVQUFBLHVCQUFvQjtBQVNwQixFQUFBQSxVQUFBLDhCQUEyQjtBQU0zQixFQUFBQSxVQUFBLHdCQUFxQjtBQUtyQixFQUFBQSxVQUFBLGlCQUFjO0FBS2QsRUFBQUEsVUFBQSxtQkFBZ0I7QUFLaEIsRUFBQUEsVUFBQSxxQkFBa0I7QUFLbEIsRUFBQUEsVUFBQSx1QkFBb0I7QUFLcEIsRUFBQUEsVUFBQSw2QkFBMEI7QUFLMUIsRUFBQUEsVUFBQSx3QkFBcUI7QUFLckIsRUFBQUEsVUFBQSxhQUFVO0FBS1YsRUFBQUEsVUFBQSxtQkFBZ0I7QUFLaEIsRUFBQUEsVUFBQSxhQUFVO0FBS1YsRUFBQUEsVUFBQSxrQkFBZTtBQUtmLEVBQUFBLFVBQUEsc0JBQW1CO0FBS25CLEVBQUFBLFVBQUEsK0JBQTRCO0FBSzVCLEVBQUFBLFVBQUEsNEJBQXlCO0FBS3pCLEVBQUFBLFVBQUEsb0NBQWlDO0FBTWpDLEVBQUFBLFVBQUEsZUFBWTtBQUtaLEVBQUFBLFVBQUEsa0JBQWU7QUFLZixFQUFBQSxVQUFBLG1CQUFnQjtBQXpVTixTQUFBQTtBQUFBLEdBQUE7IiwKICAibmFtZXMiOiBbIkNzc0NsYXNzIl0KfQo=
@@ -12,7 +12,7 @@
12
12
  * reads the plugin's `manifest.json` to name the archive — so it writes the id down here and the
13
13
  * bootstrap simply reads it.
14
14
  *
15
- * The marker and the helper binary are written together, by the same `obsidian-dev-utils` version, into
15
+ * The marker and the helper binary are written together, by the same `@mnaoumov/obsidian-lib` version, into
16
16
  * the same archive, so the two can never disagree.
17
17
  *
18
18
  * Kept free of `obsidian` imports on purpose: the packaging step ({@link archivePluginDemoVault}) runs
@@ -117,7 +117,7 @@ export declare function parseFrontmatter<CustomFrontmatter = unknown>(content: s
117
117
  *
118
118
  * There is at most one, shared by every plugin loaded in the same realm — like every other registration in this library it lives in the `globalThis.__obsidianDevUtils` bag — so a single call makes every write this library performs formatting-preserving, `processFrontmatter()` and `applyFileChanges()` included. Pass `null` to unregister.
119
119
  *
120
- * The preserver is NOT registered by default, and that is a bundle-size decision rather than a doubt about the engine: the one this library ships needs the `yaml` package's CST API, which Obsidian does not hand to plugins and which costs about 100 KB of a plugin's `main.js`. A plugin that wants it calls `enableFrontmatterFormattingPreservation()` from `obsidian-dev-utils/obsidian/frontmatter-formatting`, and pays for it only then.
120
+ * The preserver is NOT registered by default, and that is a bundle-size decision rather than a doubt about the engine: the one this library ships needs the `yaml` package's CST API, which Obsidian does not hand to plugins and which costs about 100 KB of a plugin's `main.js`. A plugin that wants it calls `enableFrontmatterFormattingPreservation()` from `@mnaoumov/obsidian-lib/frontmatter-formatting`, and pays for it only then.
121
121
  *
122
122
  * @param preserver - The preserver to route front-matter writes through, or `null` to unregister the current one.
123
123
  */
@@ -162,4 +162,4 @@ export {
162
162
  removeEmptyFrontmatterValues,
163
163
  setFrontmatter
164
164
  };
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcm9udG1hdHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgYW5kIG1hbmFnaW5nIFlBTUwgZnJvbnQgbWF0dGVyIGluIE9ic2lkaWFuIG5vdGVzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlV3JhcHBlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS13cmFwcGVyJztcblxuaW1wb3J0IHsgZmlsdGVySW5QbGFjZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hcnJheSc7XG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IGluc2VydEF0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQge1xuICBnZXRGcm9udE1hdHRlckluZm8sXG4gIHBhcnNlWWFtbCxcbiAgc3RyaW5naWZ5WWFtbFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcblxuLyoqXG4gKiBBIGNvbWJpbmVkIGZyb250IG1hdHRlciBvZiBhIGRvY3VtZW50LlxuICogSXQgaXMgYSB1bmlvbiBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLCBPYnNpZGlhbiBmcm9udCBtYXR0ZXIsIGFuZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+ID0gR2VuZXJpY09iamVjdDxDdXN0b21Gcm9udG1hdHRlciAmIE9ic2lkaWFuRnJvbnRtYXR0ZXI+O1xuXG4vKipcbiAqIEEgcmV3cml0ZSBvZiBhIG5vdGUncyBmcm9udCBtYXR0ZXIgdGhhdCBrZWVwcyB0aGUgYXV0aG9yJ3Mgb3JpZ2luYWwgZm9ybWF0dGluZyB3aGVyZXZlciB0aGUgY2hhbmdlIGRvZXMgbm90IHJlYWNoIGl0LlxuICpcbiAqIEl0IGlzIGhhbmRlZCB0aGUgd2hvbGUgbm90ZSBhbmQgdGhlIGZyb250IG1hdHRlciB0byB3cml0ZSwgYW5kIHJldHVybnMgdGhlIHdob2xlIG5ldyBub3RlIOKAlCBvciBgbnVsbGAgd2hlbiBpdCBjYW5ub3QgYmUgZmFpdGhmdWwsIHdoaWNoIGhhbmRzIHRoZSB3cml0ZSBiYWNrIHRvIHtAbGluayBzZXRGcm9udG1hdHRlcn0ncyBvd24gcGFyc2UtYW5kLXN0cmluZ2lmeSBwYXRoLiBSZXR1cm5pbmcgYG51bGxgIGlzIG5ldmVyIGFuIGVycm9yOiBpdCBpcyBob3cgdGhlIHByZXNlcnZlciBndWFyYW50ZWVzIGl0IGNhbiBvbmx5IGV2ZXIgbWF0Y2ggb3IgaW1wcm92ZSBvbiB0aGF0IHBhdGgsIG5ldmVyIGRvIHdvcnNlIHRoYW4gaXQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgbm90ZSB0byByZXdyaXRlIHRoZSBmcm9udCBtYXR0ZXIgb2YuXG4gKiBAcGFyYW0gbmV3RnJvbnRtYXR0ZXIgLSBUaGUgZnJvbnQgbWF0dGVyIHRvIHdyaXRlLlxuICogQHJldHVybnMgVGhlIG5ldyBub3RlLCBvciBgbnVsbGAgdG8gbGV0IHtAbGluayBzZXRGcm9udG1hdHRlcn0gd3JpdGUgaXQgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IHR5cGUgRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyID0gKHRoaXM6IHZvaWQsIGNvbnRlbnQ6IHN0cmluZywgbmV3RnJvbnRtYXR0ZXI6IG9iamVjdCkgPT4gbnVsbCB8IHN0cmluZztcblxuLyoqXG4gKiBBIGZyb250IG1hdHRlciBvZiBhbiBPYnNpZGlhbiBmaWxlLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vaGVscC5vYnNpZGlhbi5tZC9FZGl0aW5nK2FuZCtmb3JtYXR0aW5nL1Byb3BlcnRpZXMjRGVmYXVsdCtwcm9wZXJ0aWVzfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuRnJvbnRtYXR0ZXIge1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYWxpYXNlcyBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBhbGlhc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBub3RlLlxuICAgKi9cbiAgY3NzY2xhc3Nlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiB0YWdzIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIHRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIGZyb250IG1hdHRlciBmb3IgcHVibGlzaGluZyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2hlbHAub2JzaWRpYW4ubWQvRWRpdGluZythbmQrZm9ybWF0dGluZy9Qcm9wZXJ0aWVzI1Byb3BlcnRpZXMrZm9yK09ic2lkaWFuK1B1Ymxpc2h9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5QdWJsaXNoRnJvbnRtYXR0ZXIge1xuICAvKipcbiAgICogQSBjb3ZlciBpbWFnZSBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBjb3Zlcj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaW1hZ2UgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGVybWFuZW50IGxpbmsgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgcGVybWFsaW5rPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBub3RlIGlzIHB1Ymxpc2hlZC5cbiAgICovXG4gIHB1Ymxpc2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmcm9udCBtYXR0ZXIgb2JqZWN0IHRvIHJlbW92ZSB0aGUgZW1wdHkgdmFsdWVzIGZyb20uIEl0IGlzIG1vZGlmaWVkIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXI6IEdlbmVyaWNPYmplY3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVtb3ZlIGFycmF5cyB0aGF0IGFyZSBlbXB0eSwgaW5jbHVkaW5nIHRoZSBvbmVzIHRoYXQgYmVjYW1lIGVtcHR5IGFmdGVyIHRoZWlyIG93biBpdGVtcyB3ZXJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlbW92ZUVtcHR5QXJyYXlzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgcGxhaW4gb2JqZWN0cyB0aGF0IGFyZSBlbXB0eSwgaW5jbHVkaW5nIHRoZSBvbmVzIHRoYXQgYmVjYW1lIGVtcHR5IGFmdGVyIHRoZWlyIG93biBwcm9wZXJ0aWVzIHdlcmUgcmVtb3ZlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVtb3ZlRW1wdHlPYmplY3RzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgYG51bGxgIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIEJvdGggYXJlIHRyZWF0ZWQgdGhlIHNhbWU6IHRoZXkgYXJlIHRoZSB0d28gd2F5cyBhIGtleSBjYW4gYmUgcHJlc2VudCBidXQgY2Fycnkgbm8gdmFsdWUsIGFuZCBgdW5kZWZpbmVkYCBjYW5ub3Qgc3Vydml2ZSBhIFlBTUwgcm91bmQtdHJpcCBhbnl3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlbW92ZU51bGxzPzogYm9vbGVhbjtcbn1cblxuY29uc3QgRlJPTlRNQVRURVJfRk9STUFUVElOR19QUkVTRVJWRVJfU1RBVEVfS0VZID0gJ2Zyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlcic7XG5jb25zdCBLRVlfUEFUSF9TRVBBUkFUT1IgPSAnLic7XG5cbi8qKlxuICogUmVtb3ZlcyBlbXB0eSB2YWx1ZXMgZnJvbSBhIGZyb250IG1hdHRlciBvYmplY3QsIHJlY3Vyc2luZyBpbnRvIG5lc3RlZCBvYmplY3RzIGFuZCBhcnJheXMuXG4gKlxuICogVGhlIHRyYXZlcnNhbCBpcyBib3R0b20tdXA6IGEgY29udGFpbmVyIGlzIHBydW5lZCBiZWZvcmUgaXQgaXMgaXRzZWxmIHRlc3RlZCBmb3IgZW1wdGluZXNzLCBzbyBhIGNvbnRhaW5lciB0aGF0IGhvbGRzIG5vdGhpbmcgYnV0IGVtcHR5IHZhbHVlcyBpcyByZW1vdmVkIGFzIHdlbGwgd2hlbiB0aGUgbWF0Y2hpbmcgb3B0aW9uIGlzIGVuYWJsZWQuXG4gKi9cbmNsYXNzIEVtcHR5RnJvbnRtYXR0ZXJWYWx1ZVJlbW92ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbW92ZWRLZXlQYXRoczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRSZW1vdmVFbXB0eUFycmF5czogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRSZW1vdmVFbXB0eU9iamVjdHM6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvdWxkUmVtb3ZlTnVsbHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcmVtb3ZlciwgcmVzb2x2aW5nIHRoZSBwcm92aWRlZCBvcHRpb25zIGFnYWluc3QgdGhlIGRlZmF1bHRzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbW92aW5nIHRoZSBlbXB0eSBmcm9udCBtYXR0ZXIgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUmVtb3ZlRW1wdHlGcm9udG1hdHRlclZhbHVlc1BhcmFtcykge1xuICAgIHRoaXMuc2hvdWxkUmVtb3ZlRW1wdHlBcnJheXMgPSBwYXJhbXMuc2hvdWxkUmVtb3ZlRW1wdHlBcnJheXMgPz8gZmFsc2U7XG4gICAgdGhpcy5zaG91bGRSZW1vdmVFbXB0eU9iamVjdHMgPSBwYXJhbXMuc2hvdWxkUmVtb3ZlRW1wdHlPYmplY3RzID8/IGZhbHNlO1xuICAgIHRoaXMuc2hvdWxkUmVtb3ZlTnVsbHMgPSBwYXJhbXMuc2hvdWxkUmVtb3ZlTnVsbHMgPz8gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgZW1wdHkgdmFsdWVzIGZyb20gdGhlIGdpdmVuIGZyb250IG1hdHRlciBvYmplY3QsIG1vZGlmeWluZyBpdCBpbiBwbGFjZS5cbiAgICpcbiAgICogQHBhcmFtIGZyb250bWF0dGVyIC0gVGhlIGZyb250IG1hdHRlciBvYmplY3QgdG8gcmVtb3ZlIHRoZSBlbXB0eSB2YWx1ZXMgZnJvbS5cbiAgICogQHJldHVybnMgVGhlIGtleSBwYXRocyBvZiB0aGUgcmVtb3ZlZCB2YWx1ZXMsIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgcmVtb3ZlZC5cbiAgICovXG4gIHB1YmxpYyByZW1vdmUoZnJvbnRtYXR0ZXI6IEdlbmVyaWNPYmplY3QpOiBzdHJpbmdbXSB7XG4gICAgdGhpcy5wcnVuZU9iamVjdChmcm9udG1hdHRlciwgJycpO1xuICAgIHJldHVybiB0aGlzLnJlbW92ZWRLZXlQYXRocztcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJc0VtcHR5KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3VsZFJlbW92ZU51bGxzO1xuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5sZW5ndGggPT09IDAgJiYgdGhpcy5zaG91bGRSZW1vdmVFbXB0eUFycmF5c1xuICAgICAgOiBjaGVja0lzUGxhaW5PYmplY3QodmFsdWUpICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDAgJiYgdGhpcy5zaG91bGRSZW1vdmVFbXB0eU9iamVjdHM7XG4gIH1cblxuICBwcml2YXRlIGpvaW5LZXlQYXRoKGtleVBhdGg6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBrZXlQYXRoID8gYCR7a2V5UGF0aH0ke0tFWV9QQVRIX1NFUEFSQVRPUn0ke2tleX1gIDoga2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBwcnVuZSh2YWx1ZTogdW5rbm93biwga2V5UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aGlzLnBydW5lQXJyYXkodmFsdWUsIGtleVBhdGgpO1xuICAgIH0gZWxzZSBpZiAoY2hlY2tJc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgdGhpcy5wcnVuZU9iamVjdCh2YWx1ZSwga2V5UGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcnVuZUFycmF5KGFycmF5OiB1bmtub3duW10sIGtleVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGZpbHRlckluUGxhY2UoYXJyYXksIChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgaXRlbUtleVBhdGggPSB0aGlzLmpvaW5LZXlQYXRoKGtleVBhdGgsIFN0cmluZyhpbmRleCkpO1xuICAgICAgdGhpcy5wcnVuZShpdGVtLCBpdGVtS2V5UGF0aCk7XG4gICAgICBpZiAoIXRoaXMuY2hlY2tJc0VtcHR5KGl0ZW0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbW92ZWRLZXlQYXRocy5wdXNoKGl0ZW1LZXlQYXRoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJ1bmVPYmplY3QoJG9iamVjdDogR2VuZXJpY09iamVjdCwga2V5UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoJG9iamVjdCkpIHtcbiAgICAgIGNvbnN0IHZhbHVlS2V5UGF0aCA9IHRoaXMuam9pbktleVBhdGgoa2V5UGF0aCwga2V5KTtcbiAgICAgIHRoaXMucHJ1bmUodmFsdWUsIHZhbHVlS2V5UGF0aCk7XG4gICAgICBpZiAoIXRoaXMuY2hlY2tJc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW1vdmVkS2V5UGF0aHMucHVzaCh2YWx1ZUtleVBhdGgpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICAgICAgZGVsZXRlICRvYmplY3Rba2V5XTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgdmFsdWUgaXMgYSBwbGFpbiBvYmplY3QsIGkuZS4gYW4gb2JqZWN0IGxpdGVyYWwgcmF0aGVyIHRoYW4gYW4gYXJyYXkgb3IgYSBjbGFzcyBpbnN0YW5jZS5cbiAqXG4gKiBgcGFyc2VZYW1sKClgIHR1cm5zIGEgWUFNTCB0aW1lc3RhbXAgaW50byBhIHtAbGluayBEYXRlfSwgd2hpY2ggaGFzIG5vIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMsIHNvIGEgcGxhaW4gYHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdgIHRlc3Qgd291bGQgcmVwb3J0IGV2ZXJ5IGRhdGUgYXMgYW4gZW1wdHkgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc1BsYWluT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgR2VuZXJpY09iamVjdCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBjb250ZW50IHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250bWF0dGVyIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHN0cmluZyB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KGNvbnRlbnQ6IHN0cmluZyk6IENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+IHtcbiAgY29uc3QgZnJvbnRtYXR0ZXJJbmZvID0gZ2V0RnJvbnRNYXR0ZXJJbmZvKGNvbnRlbnQpO1xuICByZXR1cm4gKHBhcnNlWWFtbChmcm9udG1hdHRlckluZm8uZnJvbnRtYXR0ZXIpID8/IHt9KSBhcyBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPjtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIHtAbGluayBGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJ9IGV2ZXJ5IGZyb250LW1hdHRlciB3cml0ZSBpbiB0aGlzIGxpYnJhcnkgcm91dGVzIHRocm91Z2guXG4gKlxuICogVGhlcmUgaXMgYXQgbW9zdCBvbmUsIHNoYXJlZCBieSBldmVyeSBwbHVnaW4gbG9hZGVkIGluIHRoZSBzYW1lIHJlYWxtIOKAlCBsaWtlIGV2ZXJ5IG90aGVyIHJlZ2lzdHJhdGlvbiBpbiB0aGlzIGxpYnJhcnkgaXQgbGl2ZXMgaW4gdGhlIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5EZXZVdGlsc2AgYmFnIOKAlCBzbyBhIHNpbmdsZSBjYWxsIG1ha2VzIGV2ZXJ5IHdyaXRlIHRoaXMgbGlicmFyeSBwZXJmb3JtcyBmb3JtYXR0aW5nLXByZXNlcnZpbmcsIGBwcm9jZXNzRnJvbnRtYXR0ZXIoKWAgYW5kIGBhcHBseUZpbGVDaGFuZ2VzKClgIGluY2x1ZGVkLiBQYXNzIGBudWxsYCB0byB1bnJlZ2lzdGVyLlxuICpcbiAqIFRoZSBwcmVzZXJ2ZXIgaXMgTk9UIHJlZ2lzdGVyZWQgYnkgZGVmYXVsdCwgYW5kIHRoYXQgaXMgYSBidW5kbGUtc2l6ZSBkZWNpc2lvbiByYXRoZXIgdGhhbiBhIGRvdWJ0IGFib3V0IHRoZSBlbmdpbmU6IHRoZSBvbmUgdGhpcyBsaWJyYXJ5IHNoaXBzIG5lZWRzIHRoZSBgeWFtbGAgcGFja2FnZSdzIENTVCBBUEksIHdoaWNoIE9ic2lkaWFuIGRvZXMgbm90IGhhbmQgdG8gcGx1Z2lucyBhbmQgd2hpY2ggY29zdHMgYWJvdXQgMTAwIEtCIG9mIGEgcGx1Z2luJ3MgYG1haW4uanNgLiBBIHBsdWdpbiB0aGF0IHdhbnRzIGl0IGNhbGxzIGBlbmFibGVGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2YXRpb24oKWAgZnJvbSBgb2JzaWRpYW4tZGV2LXV0aWxzL29ic2lkaWFuL2Zyb250bWF0dGVyLWZvcm1hdHRpbmdgLCBhbmQgcGF5cyBmb3IgaXQgb25seSB0aGVuLlxuICpcbiAqIEBwYXJhbSBwcmVzZXJ2ZXIgLSBUaGUgcHJlc2VydmVyIHRvIHJvdXRlIGZyb250LW1hdHRlciB3cml0ZXMgdGhyb3VnaCwgb3IgYG51bGxgIHRvIHVucmVnaXN0ZXIgdGhlIGN1cnJlbnQgb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXIocHJlc2VydmVyOiBGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXIgfCBudWxsKTogdm9pZCB7XG4gIGdldEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlcldyYXBwZXIoKS52YWx1ZSA9IHByZXNlcnZlcjtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBlbXB0eSB2YWx1ZXMgZnJvbSBhIGZyb250IG1hdHRlciBvYmplY3QsIGF0IGFueSBuZXN0aW5nIGRlcHRoLlxuICpcbiAqIEJ5IGRlZmF1bHQgb25seSBlbXB0eSBzdHJpbmdzIGFyZSByZW1vdmVkIOKAlCBib3RoIGFzIHByb3BlcnR5IHZhbHVlcyBhbmQgYXMgYXJyYXkgaXRlbXMuIGBudWxsYCwgYHVuZGVmaW5lZGAsIGVtcHR5IGFycmF5cyBhbmQgZW1wdHkgb2JqZWN0cyBhcmUga2VwdCB1bmxlc3MgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9uIGlzIGVuYWJsZWQuXG4gKlxuICogVGhlIG9iamVjdCBpcyBtb2RpZmllZCBpbiBwbGFjZSwgc28gdGhlIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgc3RyYWlnaHQgZnJvbSBhIGBwcm9jZXNzRnJvbnRtYXR0ZXIoKWAgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW1vdmluZyB0aGUgZW1wdHkgZnJvbnQgbWF0dGVyIHZhbHVlcy5cbiAqIEByZXR1cm5zIFRoZSBkb3Qtc2VwYXJhdGVkIGtleSBwYXRocyBvZiB0aGUgcmVtb3ZlZCB2YWx1ZXMsIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgcmVtb3ZlZC4gQW4gYXJyYXkgaXRlbSBpcyByZXBvcnRlZCBieSBpdHMgaW5kZXggd2l0aGluIHRoZSBhcnJheSBhcyBpdCB3YXMgYmVmb3JlIGFueSBvZiBpdHMgc2libGluZ3Mgd2VyZSByZW1vdmVkLCBlLmcuIGB0YWdzLjBgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRW1wdHlGcm9udG1hdHRlclZhbHVlcyhwYXJhbXM6IFJlbW92ZUVtcHR5RnJvbnRtYXR0ZXJWYWx1ZXNQYXJhbXMpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBuZXcgRW1wdHlGcm9udG1hdHRlclZhbHVlUmVtb3ZlcihwYXJhbXMpLnJlbW92ZShwYXJhbXMuZnJvbnRtYXR0ZXIpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGZyb250IG1hdHRlciBvZiBhIGdpdmVuIGNvbnRlbnQgc3RyaW5nLlxuICpcbiAqIFdoZW4gYSB7QGxpbmsgRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyfSBpcyByZWdpc3RlcmVkIChzZWUge0BsaW5rIHJlZ2lzdGVyRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyfSkgdGhlIHdyaXRlIGdvZXMgdGhyb3VnaCBpdCBmaXJzdCwgc28gdGhlIHBhcnRzIG9mIHRoZSBibG9jayB0aGUgY2hhbmdlIGRvZXMgbm90IHJlYWNoIGtlZXAgdGhlIGJ5dGVzIHRoZWlyIGF1dGhvciB3cm90ZSDigJQgdGhlaXIgY29tbWVudHMsIHF1b3RpbmcsIGJsYW5rIGxpbmVzIGFuZCBpbmRlbnRhdGlvbi4gV2l0aG91dCBvbmUsIGFuZCB3aGVuZXZlciB0aGUgcHJlc2VydmVyIHJlcG9ydHMgaXQgY2Fubm90IGJlIGZhaXRoZnVsLCB0aGUgd2hvbGUgYmxvY2sgaXMgcGFyc2VkIGFuZCB3cml0dGVuIG91dCBhZ2Fpbiwgd2hpY2ggaXMgd2hhdCBPYnNpZGlhbidzIG93biBgcHJvY2Vzc0Zyb250TWF0dGVyKClgIGRvZXMuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBzdHJpbmcgdG8gc2V0IHRoZSBmcm9udCBtYXR0ZXIgaW4uXG4gKiBAcGFyYW0gbmV3RnJvbnRtYXR0ZXIgLSBUaGUgbmV3IGZyb250IG1hdHRlciB0byBzZXQuXG4gKiBAcmV0dXJucyBUaGUgbmV3IGNvbnRlbnQgc3RyaW5nIHdpdGggdGhlIGZyb250IG1hdHRlciBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGcm9udG1hdHRlcihjb250ZW50OiBzdHJpbmcsIG5ld0Zyb250bWF0dGVyOiBvYmplY3QpOiBzdHJpbmcge1xuICBjb25zdCBwcmVzZXJ2ZWRDb250ZW50ID0gcHJlc2VydmVGb3JtYXR0aW5nKGNvbnRlbnQsIG5ld0Zyb250bWF0dGVyKTtcbiAgaWYgKHByZXNlcnZlZENvbnRlbnQgIT09IG51bGwpIHtcbiAgICByZXR1cm4gcHJlc2VydmVkQ29udGVudDtcbiAgfVxuXG4gIGNvbnN0IGZyb250bWF0dGVySW5mbyA9IGdldEZyb250TWF0dGVySW5mbyhjb250ZW50KTtcbiAgaWYgKE9iamVjdC5rZXlzKG5ld0Zyb250bWF0dGVyKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gY29udGVudC5zbGljZShmcm9udG1hdHRlckluZm8uY29udGVudFN0YXJ0KTtcbiAgfVxuXG4gIGNvbnN0IG5ld0Zyb250bWF0dGVyU3RyaW5nID0gc3RyaW5naWZ5WWFtbChuZXdGcm9udG1hdHRlcik7XG5cbiAgcmV0dXJuIGZyb250bWF0dGVySW5mby5leGlzdHNcbiAgICA/IGluc2VydEF0KHtcbiAgICAgICRzdHJpbmc6IGNvbnRlbnQsXG4gICAgICBlbmRJbmRleDogZnJvbnRtYXR0ZXJJbmZvLnRvLFxuICAgICAgc3RhcnRJbmRleDogZnJvbnRtYXR0ZXJJbmZvLmZyb20sXG4gICAgICBzdWJzdHJpbmc6IG5ld0Zyb250bWF0dGVyU3RyaW5nXG4gICAgfSlcbiAgICA6IGAtLS1cXG4ke25ld0Zyb250bWF0dGVyU3RyaW5nfS0tLVxcbiR7Y29udGVudH1gO1xufVxuXG5mdW5jdGlvbiBnZXRGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJXcmFwcGVyKCk6IFZhbHVlV3JhcHBlcjxGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXIgfCBudWxsPiB7XG4gIHJldHVybiBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGU8RnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyIHwgbnVsbD4oRlJPTlRNQVRURVJfRk9STUFUVElOR19QUkVTRVJWRVJfU1RBVEVfS0VZLCBudWxsKTtcbn1cblxuZnVuY3Rpb24gcHJlc2VydmVGb3JtYXR0aW5nKGNvbnRlbnQ6IHN0cmluZywgbmV3RnJvbnRtYXR0ZXI6IG9iamVjdCk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCBwcmVzZXJ2ZXIgPSBnZXRGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJXcmFwcGVyKCkudmFsdWU7XG4gIGlmICghcHJlc2VydmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBIHByZXNlcnZlciBjYW4gYmUgc3VwcGxpZWQgYnkgYW55IHBsdWdpbiwgYW5kIHRoaXMgcnVucyBpbnNpZGUgdGhlIHdyaXRlIHF1ZXVlLCB3aGVyZSBhIHRocm93IHdlZGdlcyBldmVyeSB3cml0ZVxuICAvLyBiZWhpbmQgaXQuIFNvIGEgYnJva2VuIHByZXNlcnZlciBpcyByZXBvcnRlZCBhbmQgc3RlcHBlZCBhcm91bmQgcmF0aGVyIHRoYW4gYWxsb3dlZCB0byB0YWtlIHRoZSB3cml0ZSBkb3duLlxuICB0cnkge1xuICAgIHJldHVybiBwcmVzZXJ2ZXIoY29udGVudCwgbmV3RnJvbnRtYXR0ZXIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IobmV3IEVycm9yKCdUaGUgcmVnaXN0ZXJlZCBmcm9udCBtYXR0ZXIgZm9ybWF0dGluZyBwcmVzZXJ2ZXIgdGhyZXcuIEZhbGxpbmcgYmFjayB0byByZXdyaXRpbmcgdGhlIHdob2xlIGJsb2NrLicsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsZ0NBQWdDO0FBMEd6QyxNQUFNLDZDQUE2QztBQUNuRCxNQUFNLHFCQUFxQjtBQU8zQixNQUFNLDZCQUE2QjtBQUFBLEVBQ2hCLGtCQUE0QixDQUFDO0FBQUEsRUFDN0I7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9WLFlBQVksUUFBNEM7QUFDN0QsU0FBSywwQkFBMEIsT0FBTywyQkFBMkI7QUFDakUsU0FBSywyQkFBMkIsT0FBTyw0QkFBNEI7QUFDbkUsU0FBSyxvQkFBb0IsT0FBTyxxQkFBcUI7QUFBQSxFQUN2RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sT0FBTyxhQUFzQztBQUNsRCxTQUFLLFlBQVksYUFBYSxFQUFFO0FBQ2hDLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQSxFQUVRLGFBQWEsT0FBeUI7QUFDNUMsUUFBSSxVQUFVLElBQUk7QUFDaEIsYUFBTztBQUFBLElBQ1Q7QUFFQSxRQUFJLFVBQVUsUUFBUSxVQUFVLFFBQVc7QUFDekMsYUFBTyxLQUFLO0FBQUEsSUFDZDtBQUVBLFdBQU8sTUFBTSxRQUFRLEtBQUssSUFDdEIsTUFBTSxXQUFXLEtBQUssS0FBSywwQkFDM0IsbUJBQW1CLEtBQUssS0FBSyxPQUFPLEtBQUssS0FBSyxFQUFFLFdBQVcsS0FBSyxLQUFLO0FBQUEsRUFDM0U7QUFB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
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcm9udG1hdHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgYW5kIG1hbmFnaW5nIFlBTUwgZnJvbnQgbWF0dGVyIGluIE9ic2lkaWFuIG5vdGVzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlV3JhcHBlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS13cmFwcGVyJztcblxuaW1wb3J0IHsgZmlsdGVySW5QbGFjZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hcnJheSc7XG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IGluc2VydEF0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQge1xuICBnZXRGcm9udE1hdHRlckluZm8sXG4gIHBhcnNlWWFtbCxcbiAgc3RyaW5naWZ5WWFtbFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcblxuLyoqXG4gKiBBIGNvbWJpbmVkIGZyb250IG1hdHRlciBvZiBhIGRvY3VtZW50LlxuICogSXQgaXMgYSB1bmlvbiBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLCBPYnNpZGlhbiBmcm9udCBtYXR0ZXIsIGFuZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+ID0gR2VuZXJpY09iamVjdDxDdXN0b21Gcm9udG1hdHRlciAmIE9ic2lkaWFuRnJvbnRtYXR0ZXI+O1xuXG4vKipcbiAqIEEgcmV3cml0ZSBvZiBhIG5vdGUncyBmcm9udCBtYXR0ZXIgdGhhdCBrZWVwcyB0aGUgYXV0aG9yJ3Mgb3JpZ2luYWwgZm9ybWF0dGluZyB3aGVyZXZlciB0aGUgY2hhbmdlIGRvZXMgbm90IHJlYWNoIGl0LlxuICpcbiAqIEl0IGlzIGhhbmRlZCB0aGUgd2hvbGUgbm90ZSBhbmQgdGhlIGZyb250IG1hdHRlciB0byB3cml0ZSwgYW5kIHJldHVybnMgdGhlIHdob2xlIG5ldyBub3RlIOKAlCBvciBgbnVsbGAgd2hlbiBpdCBjYW5ub3QgYmUgZmFpdGhmdWwsIHdoaWNoIGhhbmRzIHRoZSB3cml0ZSBiYWNrIHRvIHtAbGluayBzZXRGcm9udG1hdHRlcn0ncyBvd24gcGFyc2UtYW5kLXN0cmluZ2lmeSBwYXRoLiBSZXR1cm5pbmcgYG51bGxgIGlzIG5ldmVyIGFuIGVycm9yOiBpdCBpcyBob3cgdGhlIHByZXNlcnZlciBndWFyYW50ZWVzIGl0IGNhbiBvbmx5IGV2ZXIgbWF0Y2ggb3IgaW1wcm92ZSBvbiB0aGF0IHBhdGgsIG5ldmVyIGRvIHdvcnNlIHRoYW4gaXQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgbm90ZSB0byByZXdyaXRlIHRoZSBmcm9udCBtYXR0ZXIgb2YuXG4gKiBAcGFyYW0gbmV3RnJvbnRtYXR0ZXIgLSBUaGUgZnJvbnQgbWF0dGVyIHRvIHdyaXRlLlxuICogQHJldHVybnMgVGhlIG5ldyBub3RlLCBvciBgbnVsbGAgdG8gbGV0IHtAbGluayBzZXRGcm9udG1hdHRlcn0gd3JpdGUgaXQgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IHR5cGUgRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyID0gKHRoaXM6IHZvaWQsIGNvbnRlbnQ6IHN0cmluZywgbmV3RnJvbnRtYXR0ZXI6IG9iamVjdCkgPT4gbnVsbCB8IHN0cmluZztcblxuLyoqXG4gKiBBIGZyb250IG1hdHRlciBvZiBhbiBPYnNpZGlhbiBmaWxlLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vaGVscC5vYnNpZGlhbi5tZC9FZGl0aW5nK2FuZCtmb3JtYXR0aW5nL1Byb3BlcnRpZXMjRGVmYXVsdCtwcm9wZXJ0aWVzfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuRnJvbnRtYXR0ZXIge1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYWxpYXNlcyBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBhbGlhc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBub3RlLlxuICAgKi9cbiAgY3NzY2xhc3Nlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiB0YWdzIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIHRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIGZyb250IG1hdHRlciBmb3IgcHVibGlzaGluZyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2hlbHAub2JzaWRpYW4ubWQvRWRpdGluZythbmQrZm9ybWF0dGluZy9Qcm9wZXJ0aWVzI1Byb3BlcnRpZXMrZm9yK09ic2lkaWFuK1B1Ymxpc2h9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5QdWJsaXNoRnJvbnRtYXR0ZXIge1xuICAvKipcbiAgICogQSBjb3ZlciBpbWFnZSBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBjb3Zlcj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaW1hZ2UgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGVybWFuZW50IGxpbmsgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgcGVybWFsaW5rPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBub3RlIGlzIHB1Ymxpc2hlZC5cbiAgICovXG4gIHB1Ymxpc2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmcm9udCBtYXR0ZXIgb2JqZWN0IHRvIHJlbW92ZSB0aGUgZW1wdHkgdmFsdWVzIGZyb20uIEl0IGlzIG1vZGlmaWVkIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXI6IEdlbmVyaWNPYmplY3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVtb3ZlIGFycmF5cyB0aGF0IGFyZSBlbXB0eSwgaW5jbHVkaW5nIHRoZSBvbmVzIHRoYXQgYmVjYW1lIGVtcHR5IGFmdGVyIHRoZWlyIG93biBpdGVtcyB3ZXJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlbW92ZUVtcHR5QXJyYXlzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgcGxhaW4gb2JqZWN0cyB0aGF0IGFyZSBlbXB0eSwgaW5jbHVkaW5nIHRoZSBvbmVzIHRoYXQgYmVjYW1lIGVtcHR5IGFmdGVyIHRoZWlyIG93biBwcm9wZXJ0aWVzIHdlcmUgcmVtb3ZlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVtb3ZlRW1wdHlPYmplY3RzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgYG51bGxgIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIEJvdGggYXJlIHRyZWF0ZWQgdGhlIHNhbWU6IHRoZXkgYXJlIHRoZSB0d28gd2F5cyBhIGtleSBjYW4gYmUgcHJlc2VudCBidXQgY2Fycnkgbm8gdmFsdWUsIGFuZCBgdW5kZWZpbmVkYCBjYW5ub3Qgc3Vydml2ZSBhIFlBTUwgcm91bmQtdHJpcCBhbnl3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlbW92ZU51bGxzPzogYm9vbGVhbjtcbn1cblxuY29uc3QgRlJPTlRNQVRURVJfRk9STUFUVElOR19QUkVTRVJWRVJfU1RBVEVfS0VZID0gJ2Zyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlcic7XG5jb25zdCBLRVlfUEFUSF9TRVBBUkFUT1IgPSAnLic7XG5cbi8qKlxuICogUmVtb3ZlcyBlbXB0eSB2YWx1ZXMgZnJvbSBhIGZyb250IG1hdHRlciBvYmplY3QsIHJlY3Vyc2luZyBpbnRvIG5lc3RlZCBvYmplY3RzIGFuZCBhcnJheXMuXG4gKlxuICogVGhlIHRyYXZlcnNhbCBpcyBib3R0b20tdXA6IGEgY29udGFpbmVyIGlzIHBydW5lZCBiZWZvcmUgaXQgaXMgaXRzZWxmIHRlc3RlZCBmb3IgZW1wdGluZXNzLCBzbyBhIGNvbnRhaW5lciB0aGF0IGhvbGRzIG5vdGhpbmcgYnV0IGVtcHR5IHZhbHVlcyBpcyByZW1vdmVkIGFzIHdlbGwgd2hlbiB0aGUgbWF0Y2hpbmcgb3B0aW9uIGlzIGVuYWJsZWQuXG4gKi9cbmNsYXNzIEVtcHR5RnJvbnRtYXR0ZXJWYWx1ZVJlbW92ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbW92ZWRLZXlQYXRoczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRSZW1vdmVFbXB0eUFycmF5czogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRSZW1vdmVFbXB0eU9iamVjdHM6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvdWxkUmVtb3ZlTnVsbHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcmVtb3ZlciwgcmVzb2x2aW5nIHRoZSBwcm92aWRlZCBvcHRpb25zIGFnYWluc3QgdGhlIGRlZmF1bHRzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbW92aW5nIHRoZSBlbXB0eSBmcm9udCBtYXR0ZXIgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUmVtb3ZlRW1wdHlGcm9udG1hdHRlclZhbHVlc1BhcmFtcykge1xuICAgIHRoaXMuc2hvdWxkUmVtb3ZlRW1wdHlBcnJheXMgPSBwYXJhbXMuc2hvdWxkUmVtb3ZlRW1wdHlBcnJheXMgPz8gZmFsc2U7XG4gICAgdGhpcy5zaG91bGRSZW1vdmVFbXB0eU9iamVjdHMgPSBwYXJhbXMuc2hvdWxkUmVtb3ZlRW1wdHlPYmplY3RzID8/IGZhbHNlO1xuICAgIHRoaXMuc2hvdWxkUmVtb3ZlTnVsbHMgPSBwYXJhbXMuc2hvdWxkUmVtb3ZlTnVsbHMgPz8gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgZW1wdHkgdmFsdWVzIGZyb20gdGhlIGdpdmVuIGZyb250IG1hdHRlciBvYmplY3QsIG1vZGlmeWluZyBpdCBpbiBwbGFjZS5cbiAgICpcbiAgICogQHBhcmFtIGZyb250bWF0dGVyIC0gVGhlIGZyb250IG1hdHRlciBvYmplY3QgdG8gcmVtb3ZlIHRoZSBlbXB0eSB2YWx1ZXMgZnJvbS5cbiAgICogQHJldHVybnMgVGhlIGtleSBwYXRocyBvZiB0aGUgcmVtb3ZlZCB2YWx1ZXMsIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgcmVtb3ZlZC5cbiAgICovXG4gIHB1YmxpYyByZW1vdmUoZnJvbnRtYXR0ZXI6IEdlbmVyaWNPYmplY3QpOiBzdHJpbmdbXSB7XG4gICAgdGhpcy5wcnVuZU9iamVjdChmcm9udG1hdHRlciwgJycpO1xuICAgIHJldHVybiB0aGlzLnJlbW92ZWRLZXlQYXRocztcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJc0VtcHR5KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3VsZFJlbW92ZU51bGxzO1xuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5sZW5ndGggPT09IDAgJiYgdGhpcy5zaG91bGRSZW1vdmVFbXB0eUFycmF5c1xuICAgICAgOiBjaGVja0lzUGxhaW5PYmplY3QodmFsdWUpICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDAgJiYgdGhpcy5zaG91bGRSZW1vdmVFbXB0eU9iamVjdHM7XG4gIH1cblxuICBwcml2YXRlIGpvaW5LZXlQYXRoKGtleVBhdGg6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBrZXlQYXRoID8gYCR7a2V5UGF0aH0ke0tFWV9QQVRIX1NFUEFSQVRPUn0ke2tleX1gIDoga2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBwcnVuZSh2YWx1ZTogdW5rbm93biwga2V5UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aGlzLnBydW5lQXJyYXkodmFsdWUsIGtleVBhdGgpO1xuICAgIH0gZWxzZSBpZiAoY2hlY2tJc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgdGhpcy5wcnVuZU9iamVjdCh2YWx1ZSwga2V5UGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcnVuZUFycmF5KGFycmF5OiB1bmtub3duW10sIGtleVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGZpbHRlckluUGxhY2UoYXJyYXksIChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgaXRlbUtleVBhdGggPSB0aGlzLmpvaW5LZXlQYXRoKGtleVBhdGgsIFN0cmluZyhpbmRleCkpO1xuICAgICAgdGhpcy5wcnVuZShpdGVtLCBpdGVtS2V5UGF0aCk7XG4gICAgICBpZiAoIXRoaXMuY2hlY2tJc0VtcHR5KGl0ZW0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbW92ZWRLZXlQYXRocy5wdXNoKGl0ZW1LZXlQYXRoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJ1bmVPYmplY3QoJG9iamVjdDogR2VuZXJpY09iamVjdCwga2V5UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoJG9iamVjdCkpIHtcbiAgICAgIGNvbnN0IHZhbHVlS2V5UGF0aCA9IHRoaXMuam9pbktleVBhdGgoa2V5UGF0aCwga2V5KTtcbiAgICAgIHRoaXMucHJ1bmUodmFsdWUsIHZhbHVlS2V5UGF0aCk7XG4gICAgICBpZiAoIXRoaXMuY2hlY2tJc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW1vdmVkS2V5UGF0aHMucHVzaCh2YWx1ZUtleVBhdGgpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICAgICAgZGVsZXRlICRvYmplY3Rba2V5XTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgdmFsdWUgaXMgYSBwbGFpbiBvYmplY3QsIGkuZS4gYW4gb2JqZWN0IGxpdGVyYWwgcmF0aGVyIHRoYW4gYW4gYXJyYXkgb3IgYSBjbGFzcyBpbnN0YW5jZS5cbiAqXG4gKiBgcGFyc2VZYW1sKClgIHR1cm5zIGEgWUFNTCB0aW1lc3RhbXAgaW50byBhIHtAbGluayBEYXRlfSwgd2hpY2ggaGFzIG5vIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMsIHNvIGEgcGxhaW4gYHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdgIHRlc3Qgd291bGQgcmVwb3J0IGV2ZXJ5IGRhdGUgYXMgYW4gZW1wdHkgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc1BsYWluT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgR2VuZXJpY09iamVjdCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBjb250ZW50IHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250bWF0dGVyIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHN0cmluZyB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KGNvbnRlbnQ6IHN0cmluZyk6IENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+IHtcbiAgY29uc3QgZnJvbnRtYXR0ZXJJbmZvID0gZ2V0RnJvbnRNYXR0ZXJJbmZvKGNvbnRlbnQpO1xuICByZXR1cm4gKHBhcnNlWWFtbChmcm9udG1hdHRlckluZm8uZnJvbnRtYXR0ZXIpID8/IHt9KSBhcyBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPjtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIHtAbGluayBGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJ9IGV2ZXJ5IGZyb250LW1hdHRlciB3cml0ZSBpbiB0aGlzIGxpYnJhcnkgcm91dGVzIHRocm91Z2guXG4gKlxuICogVGhlcmUgaXMgYXQgbW9zdCBvbmUsIHNoYXJlZCBieSBldmVyeSBwbHVnaW4gbG9hZGVkIGluIHRoZSBzYW1lIHJlYWxtIOKAlCBsaWtlIGV2ZXJ5IG90aGVyIHJlZ2lzdHJhdGlvbiBpbiB0aGlzIGxpYnJhcnkgaXQgbGl2ZXMgaW4gdGhlIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5EZXZVdGlsc2AgYmFnIOKAlCBzbyBhIHNpbmdsZSBjYWxsIG1ha2VzIGV2ZXJ5IHdyaXRlIHRoaXMgbGlicmFyeSBwZXJmb3JtcyBmb3JtYXR0aW5nLXByZXNlcnZpbmcsIGBwcm9jZXNzRnJvbnRtYXR0ZXIoKWAgYW5kIGBhcHBseUZpbGVDaGFuZ2VzKClgIGluY2x1ZGVkLiBQYXNzIGBudWxsYCB0byB1bnJlZ2lzdGVyLlxuICpcbiAqIFRoZSBwcmVzZXJ2ZXIgaXMgTk9UIHJlZ2lzdGVyZWQgYnkgZGVmYXVsdCwgYW5kIHRoYXQgaXMgYSBidW5kbGUtc2l6ZSBkZWNpc2lvbiByYXRoZXIgdGhhbiBhIGRvdWJ0IGFib3V0IHRoZSBlbmdpbmU6IHRoZSBvbmUgdGhpcyBsaWJyYXJ5IHNoaXBzIG5lZWRzIHRoZSBgeWFtbGAgcGFja2FnZSdzIENTVCBBUEksIHdoaWNoIE9ic2lkaWFuIGRvZXMgbm90IGhhbmQgdG8gcGx1Z2lucyBhbmQgd2hpY2ggY29zdHMgYWJvdXQgMTAwIEtCIG9mIGEgcGx1Z2luJ3MgYG1haW4uanNgLiBBIHBsdWdpbiB0aGF0IHdhbnRzIGl0IGNhbGxzIGBlbmFibGVGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2YXRpb24oKWAgZnJvbSBgQG1uYW91bW92L29ic2lkaWFuLWxpYi9mcm9udG1hdHRlci1mb3JtYXR0aW5nYCwgYW5kIHBheXMgZm9yIGl0IG9ubHkgdGhlbi5cbiAqXG4gKiBAcGFyYW0gcHJlc2VydmVyIC0gVGhlIHByZXNlcnZlciB0byByb3V0ZSBmcm9udC1tYXR0ZXIgd3JpdGVzIHRocm91Z2gsIG9yIGBudWxsYCB0byB1bnJlZ2lzdGVyIHRoZSBjdXJyZW50IG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyKHByZXNlcnZlcjogRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyIHwgbnVsbCk6IHZvaWQge1xuICBnZXRGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXJXcmFwcGVyKCkudmFsdWUgPSBwcmVzZXJ2ZXI7XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgZW1wdHkgdmFsdWVzIGZyb20gYSBmcm9udCBtYXR0ZXIgb2JqZWN0LCBhdCBhbnkgbmVzdGluZyBkZXB0aC5cbiAqXG4gKiBCeSBkZWZhdWx0IG9ubHkgZW1wdHkgc3RyaW5ncyBhcmUgcmVtb3ZlZCDigJQgYm90aCBhcyBwcm9wZXJ0eSB2YWx1ZXMgYW5kIGFzIGFycmF5IGl0ZW1zLiBgbnVsbGAsIGB1bmRlZmluZWRgLCBlbXB0eSBhcnJheXMgYW5kIGVtcHR5IG9iamVjdHMgYXJlIGtlcHQgdW5sZXNzIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbiBpcyBlbmFibGVkLlxuICpcbiAqIFRoZSBvYmplY3QgaXMgbW9kaWZpZWQgaW4gcGxhY2UsIHNvIHRoZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHN0cmFpZ2h0IGZyb20gYSBgcHJvY2Vzc0Zyb250bWF0dGVyKClgIGNhbGxiYWNrLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVtb3ZpbmcgdGhlIGVtcHR5IGZyb250IG1hdHRlciB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgZG90LXNlcGFyYXRlZCBrZXkgcGF0aHMgb2YgdGhlIHJlbW92ZWQgdmFsdWVzLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIHJlbW92ZWQuIEFuIGFycmF5IGl0ZW0gaXMgcmVwb3J0ZWQgYnkgaXRzIGluZGV4IHdpdGhpbiB0aGUgYXJyYXkgYXMgaXQgd2FzIGJlZm9yZSBhbnkgb2YgaXRzIHNpYmxpbmdzIHdlcmUgcmVtb3ZlZCwgZS5nLiBgdGFncy4wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVtcHR5RnJvbnRtYXR0ZXJWYWx1ZXMocGFyYW1zOiBSZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzUGFyYW1zKTogc3RyaW5nW10ge1xuICByZXR1cm4gbmV3IEVtcHR5RnJvbnRtYXR0ZXJWYWx1ZVJlbW92ZXIocGFyYW1zKS5yZW1vdmUocGFyYW1zLmZyb250bWF0dGVyKTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBjb250ZW50IHN0cmluZy5cbiAqXG4gKiBXaGVuIGEge0BsaW5rIEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlcn0gaXMgcmVnaXN0ZXJlZCAoc2VlIHtAbGluayByZWdpc3RlckZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlcn0pIHRoZSB3cml0ZSBnb2VzIHRocm91Z2ggaXQgZmlyc3QsIHNvIHRoZSBwYXJ0cyBvZiB0aGUgYmxvY2sgdGhlIGNoYW5nZSBkb2VzIG5vdCByZWFjaCBrZWVwIHRoZSBieXRlcyB0aGVpciBhdXRob3Igd3JvdGUg4oCUIHRoZWlyIGNvbW1lbnRzLCBxdW90aW5nLCBibGFuayBsaW5lcyBhbmQgaW5kZW50YXRpb24uIFdpdGhvdXQgb25lLCBhbmQgd2hlbmV2ZXIgdGhlIHByZXNlcnZlciByZXBvcnRzIGl0IGNhbm5vdCBiZSBmYWl0aGZ1bCwgdGhlIHdob2xlIGJsb2NrIGlzIHBhcnNlZCBhbmQgd3JpdHRlbiBvdXQgYWdhaW4sIHdoaWNoIGlzIHdoYXQgT2JzaWRpYW4ncyBvd24gYHByb2Nlc3NGcm9udE1hdHRlcigpYCBkb2VzLlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbnRlbnQgc3RyaW5nIHRvIHNldCB0aGUgZnJvbnQgbWF0dGVyIGluLlxuICogQHBhcmFtIG5ld0Zyb250bWF0dGVyIC0gVGhlIG5ldyBmcm9udCBtYXR0ZXIgdG8gc2V0LlxuICogQHJldHVybnMgVGhlIG5ldyBjb250ZW50IHN0cmluZyB3aXRoIHRoZSBmcm9udCBtYXR0ZXIgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RnJvbnRtYXR0ZXIoY29udGVudDogc3RyaW5nLCBuZXdGcm9udG1hdHRlcjogb2JqZWN0KTogc3RyaW5nIHtcbiAgY29uc3QgcHJlc2VydmVkQ29udGVudCA9IHByZXNlcnZlRm9ybWF0dGluZyhjb250ZW50LCBuZXdGcm9udG1hdHRlcik7XG4gIGlmIChwcmVzZXJ2ZWRDb250ZW50ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHByZXNlcnZlZENvbnRlbnQ7XG4gIH1cblxuICBjb25zdCBmcm9udG1hdHRlckluZm8gPSBnZXRGcm9udE1hdHRlckluZm8oY29udGVudCk7XG4gIGlmIChPYmplY3Qua2V5cyhuZXdGcm9udG1hdHRlcikubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQuc2xpY2UoZnJvbnRtYXR0ZXJJbmZvLmNvbnRlbnRTdGFydCk7XG4gIH1cblxuICBjb25zdCBuZXdGcm9udG1hdHRlclN0cmluZyA9IHN0cmluZ2lmeVlhbWwobmV3RnJvbnRtYXR0ZXIpO1xuXG4gIHJldHVybiBmcm9udG1hdHRlckluZm8uZXhpc3RzXG4gICAgPyBpbnNlcnRBdCh7XG4gICAgICAkc3RyaW5nOiBjb250ZW50LFxuICAgICAgZW5kSW5kZXg6IGZyb250bWF0dGVySW5mby50byxcbiAgICAgIHN0YXJ0SW5kZXg6IGZyb250bWF0dGVySW5mby5mcm9tLFxuICAgICAgc3Vic3RyaW5nOiBuZXdGcm9udG1hdHRlclN0cmluZ1xuICAgIH0pXG4gICAgOiBgLS0tXFxuJHtuZXdGcm9udG1hdHRlclN0cmluZ30tLS1cXG4ke2NvbnRlbnR9YDtcbn1cblxuZnVuY3Rpb24gZ2V0RnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyV3JhcHBlcigpOiBWYWx1ZVdyYXBwZXI8RnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyIHwgbnVsbD4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlPEZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZlciB8IG51bGw+KEZST05UTUFUVEVSX0ZPUk1BVFRJTkdfUFJFU0VSVkVSX1NUQVRFX0tFWSwgbnVsbCk7XG59XG5cbmZ1bmN0aW9uIHByZXNlcnZlRm9ybWF0dGluZyhjb250ZW50OiBzdHJpbmcsIG5ld0Zyb250bWF0dGVyOiBvYmplY3QpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgcHJlc2VydmVyID0gZ2V0RnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyV3JhcHBlcigpLnZhbHVlO1xuICBpZiAoIXByZXNlcnZlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQSBwcmVzZXJ2ZXIgY2FuIGJlIHN1cHBsaWVkIGJ5IGFueSBwbHVnaW4sIGFuZCB0aGlzIHJ1bnMgaW5zaWRlIHRoZSB3cml0ZSBxdWV1ZSwgd2hlcmUgYSB0aHJvdyB3ZWRnZXMgZXZlcnkgd3JpdGVcbiAgLy8gYmVoaW5kIGl0LiBTbyBhIGJyb2tlbiBwcmVzZXJ2ZXIgaXMgcmVwb3J0ZWQgYW5kIHN0ZXBwZWQgYXJvdW5kIHJhdGhlciB0aGFuIGFsbG93ZWQgdG8gdGFrZSB0aGUgd3JpdGUgZG93bi5cbiAgdHJ5IHtcbiAgICByZXR1cm4gcHJlc2VydmVyKGNvbnRlbnQsIG5ld0Zyb250bWF0dGVyKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKG5ldyBFcnJvcignVGhlIHJlZ2lzdGVyZWQgZnJvbnQgbWF0dGVyIGZvcm1hdHRpbmcgcHJlc2VydmVyIHRocmV3LiBGYWxsaW5nIGJhY2sgdG8gcmV3cml0aW5nIHRoZSB3aG9sZSBibG9jay4nLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQSxTQUFTLHFCQUFxQjtBQUM5QixTQUFTLGtCQUFrQjtBQUMzQixTQUFTLGdCQUFnQjtBQUN6QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLGdDQUFnQztBQTBHekMsTUFBTSw2Q0FBNkM7QUFDbkQsTUFBTSxxQkFBcUI7QUFPM0IsTUFBTSw2QkFBNkI7QUFBQSxFQUNoQixrQkFBNEIsQ0FBQztBQUFBLEVBQzdCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVixZQUFZLFFBQTRDO0FBQzdELFNBQUssMEJBQTBCLE9BQU8sMkJBQTJCO0FBQ2pFLFNBQUssMkJBQTJCLE9BQU8sNEJBQTRCO0FBQ25FLFNBQUssb0JBQW9CLE9BQU8scUJBQXFCO0FBQUEsRUFDdkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLE9BQU8sYUFBc0M7QUFDbEQsU0FBSyxZQUFZLGFBQWEsRUFBRTtBQUNoQyxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFFUSxhQUFhLE9BQXlCO0FBQzVDLFFBQUksVUFBVSxJQUFJO0FBQ2hCLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxVQUFVLFFBQVEsVUFBVSxRQUFXO0FBQ3pDLGFBQU8sS0FBSztBQUFBLElBQ2Q7QUFFQSxXQUFPLE1BQU0sUUFBUSxLQUFLLElBQ3RCLE1BQU0sV0FBVyxLQUFLLEtBQUssMEJBQzNCLG1CQUFtQixLQUFLLEtBQUssT0FBTyxLQUFLLEtBQUssRUFBRSxXQUFXLEtBQUssS0FBSztBQUFBLEVBQzNFO0FBQUEsRUFF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
@@ -16,10 +16,10 @@
16
16
  * a placeholder.
17
17
  */
18
18
  /**
19
- * A version of the `obsidian-dev-utils` library.
19
+ * The version of the `@mnaoumov/obsidian-lib` library.
20
20
  */
21
21
  export declare const LIBRARY_VERSION: string;
22
22
  /**
23
- * A styles of the `obsidian-dev-utils` library.
23
+ * The styles of the `@mnaoumov/obsidian-lib` library.
24
24
  */
25
25
  export declare const LIBRARY_STYLES: string;
@@ -3,10 +3,10 @@ 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 = "4.3.0";
6
+ const LIBRARY_VERSION = "5.0.0";
7
7
  const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.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-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-dev-utils-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-dev-utils-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-dev-utils-lock-indicator-flash {\n animation: obsidian-dev-utils-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils 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-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils 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-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils 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-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils 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-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils 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-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils 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-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils 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-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\nprogress.obsidian-dev-utils.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-dev-utils-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-dev-utils-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-dev-utils.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-dev-utils.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-dev-utils.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-dev-utils-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-dev-utils.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-dev-utils.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-dev-utils-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-dev-utils.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button,\n.obsidian-dev-utils.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-dev-utils.minimized-modal-bar .restore-button:hover,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-dev-utils.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-dev-utils.modal-command-control {\n margin-inline-start: var(--size-2-2);\n vertical-align: middle;\n}\n.obsidian-dev-utils.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-dev-utils.modal-command:hover:not(:disabled) {\n background-color: var(--background-modifier-hover);\n color: var(--text-normal);\n}\n.obsidian-dev-utils.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-dev-utils.modal-command:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.obsidian-dev-utils.modal-command-hotkey {\n color: var(--text-faint);\n font-size: var(--font-smallest);\n}\n.modal-command.is-active .obsidian-dev-utils.modal-command-hotkey {\n opacity: 0.7;\n color: var(--text-on-accent);\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils.multiple-dropdown-component select,\n.obsidian-dev-utils.multiple-dropdown-component select:focus,\n.obsidian-dev-utils.multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils.multiple-dropdown-component select option:checked,\n.obsidian-dev-utils.multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils.multiple-dropdown-component .dropdown option:checked {\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n\n.obsidian-dev-utils.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-dev-utils.plugin-notice-name code {\n color: inherit;\n}\n.obsidian-dev-utils.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice .obsidian-dev-utils.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.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-dev-utils.plugin-suggestion-banner button {\n width: fit-content;\n}\n\n.obsidian-dev-utils.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-dev-utils.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-dev-utils.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-dev-utils.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-dev-utils.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus:invalid:not(.untouched),\n.obsidian-dev-utils textarea:active:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus:invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.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-dev-utils.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;;;ACRJ;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-dev-utils%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-dev-utils%60.%5Cn.obsidian-dev-utils-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-dev-utils-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-dev-utils-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-dev-utils-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%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-dev-utils%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-dev-utils%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-dev-utils-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-dev-utils-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-dev-utils%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-dev-utils-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-dev-utils-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-dev-utils%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-dev-utils%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-dev-utils%20%7B%5Cn%20%20//%20Compound,%20not%20nested:%20%60addPluginCssClasses%60%20puts%20%60obsidian-dev-utils%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-dev-utils%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-dev-utils.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-dev-utils.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-dev-utils.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-dev-utils%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-dev-utils%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%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-dev-utils%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-dev-utils%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-dev-utils%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-dev-utils%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%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-dev-utils%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
11
11
  };
12
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC1kdXJpbmctYnVpbGQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWYWx1ZXMgc3Vic3RpdHV0ZWQgaW50byB0aGUgYnVpbHQgbGlicmFyeSBkdXJpbmcgcmVsZWFzZS5cbiAqXG4gKiBUaGUgYCQoLi4uKWAgcGxhY2Vob2xkZXJzIGJlbG93IGFyZSBpbmVydCBzb3VyY2UgdGV4dDsgdGhlIGJ1aWxkIHN0ZXAgYGJ1aWxkOnN0YW1wLWdlbmVyYXRlZGBcbiAqIChgc2NyaXB0cy9zdGFtcC1nZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLnRzYCkgcmV3cml0ZXMgdGhlbSBpbiB0aGUgY29tcGlsZWRcbiAqIGBnZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLntjanMsbWpzfWAgb3V0cHV0IHdpdGggdGhlIHJlYWwgbGlicmFyeSB2ZXJzaW9uIGFuZCBidW5kbGVkIHN0eWxlcy4gVGhleSBjYXJyeVxuICogbm8gT2JzaWRpYW4gaW1wb3J0IG9yIEFQSSwgc28gdGhpcyBtb2R1bGUgc3RheXMgT2JzaWRpYW4tcnVudGltZS1hZ25vc3RpYy5cbiAqXG4gKiBCb3RoIGFyZSB3aWRlbmVkIHRvIGBzdHJpbmdgIG9uIHB1cnBvc2UgKGBhcyBzdHJpbmdgLCBzaW5jZSBhIHR5cGUgYW5ub3RhdGlvbiBpcyBmbGFnZ2VkIGFzIGluZmVycmFibGUpLlxuICogTGVmdCBhcyBsaXRlcmFscywgZWFjaCB3b3VsZCBiZSBkZWNsYXJlZCBhcyBpdHMgcGxhY2Vob2xkZXIsIGFuZCB0aGVcbiAqIGVtaXR0ZWQgYC5kLmN0c2AgLyBgLmQubXRzYCB3b3VsZCB0ZWxsIGEgY29uc3VtZXIgdGhhdCBgTElCUkFSWV9WRVJTSU9OYCBpcyBgXCIkKExJQlJBUllfVkVSU0lPTilcImBcbiAqIHdoaWxlIGl0cyBydW50aW1lIHZhbHVlIGlzIHRoZSBzdGFtcGVkIHZlcnNpb24uIFRoZSBzdGFtcCBzdGVwIHJlZnVzZXMgYSBkZWNsYXJhdGlvbiB0aGF0IHN0aWxsIG5hbWVzXG4gKiBhIHBsYWNlaG9sZGVyLlxuICovXG5cbi8qKlxuICogQSB2ZXJzaW9uIG9mIHRoZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCBsaWJyYXJ5LlxuICovXG5leHBvcnQgY29uc3QgTElCUkFSWV9WRVJTSU9OID0gJyQoTElCUkFSWV9WRVJTSU9OKScgYXMgc3RyaW5nO1xuXG4vKipcbiAqIEEgc3R5bGVzIG9mIHRoZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCBsaWJyYXJ5LlxuICovXG5leHBvcnQgY29uc3QgTElCUkFSWV9TVFlMRVMgPSAnJChMSUJSQVJZX1NUWUxFUyknIGFzIHN0cmluZztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBb0JPLE1BQU0sa0JBQWtCO0FBS3hCLE1BQU0saUJBQWlCOyIsCiAgIm5hbWVzIjogW10KfQo=
12
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC1kdXJpbmctYnVpbGQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWYWx1ZXMgc3Vic3RpdHV0ZWQgaW50byB0aGUgYnVpbHQgbGlicmFyeSBkdXJpbmcgcmVsZWFzZS5cbiAqXG4gKiBUaGUgYCQoLi4uKWAgcGxhY2Vob2xkZXJzIGJlbG93IGFyZSBpbmVydCBzb3VyY2UgdGV4dDsgdGhlIGJ1aWxkIHN0ZXAgYGJ1aWxkOnN0YW1wLWdlbmVyYXRlZGBcbiAqIChgc2NyaXB0cy9zdGFtcC1nZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLnRzYCkgcmV3cml0ZXMgdGhlbSBpbiB0aGUgY29tcGlsZWRcbiAqIGBnZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLntjanMsbWpzfWAgb3V0cHV0IHdpdGggdGhlIHJlYWwgbGlicmFyeSB2ZXJzaW9uIGFuZCBidW5kbGVkIHN0eWxlcy4gVGhleSBjYXJyeVxuICogbm8gT2JzaWRpYW4gaW1wb3J0IG9yIEFQSSwgc28gdGhpcyBtb2R1bGUgc3RheXMgT2JzaWRpYW4tcnVudGltZS1hZ25vc3RpYy5cbiAqXG4gKiBCb3RoIGFyZSB3aWRlbmVkIHRvIGBzdHJpbmdgIG9uIHB1cnBvc2UgKGBhcyBzdHJpbmdgLCBzaW5jZSBhIHR5cGUgYW5ub3RhdGlvbiBpcyBmbGFnZ2VkIGFzIGluZmVycmFibGUpLlxuICogTGVmdCBhcyBsaXRlcmFscywgZWFjaCB3b3VsZCBiZSBkZWNsYXJlZCBhcyBpdHMgcGxhY2Vob2xkZXIsIGFuZCB0aGVcbiAqIGVtaXR0ZWQgYC5kLmN0c2AgLyBgLmQubXRzYCB3b3VsZCB0ZWxsIGEgY29uc3VtZXIgdGhhdCBgTElCUkFSWV9WRVJTSU9OYCBpcyBgXCIkKExJQlJBUllfVkVSU0lPTilcImBcbiAqIHdoaWxlIGl0cyBydW50aW1lIHZhbHVlIGlzIHRoZSBzdGFtcGVkIHZlcnNpb24uIFRoZSBzdGFtcCBzdGVwIHJlZnVzZXMgYSBkZWNsYXJhdGlvbiB0aGF0IHN0aWxsIG5hbWVzXG4gKiBhIHBsYWNlaG9sZGVyLlxuICovXG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYCBsaWJyYXJ5LlxuICovXG5leHBvcnQgY29uc3QgTElCUkFSWV9WRVJTSU9OID0gJyQoTElCUkFSWV9WRVJTSU9OKScgYXMgc3RyaW5nO1xuXG4vKipcbiAqIFRoZSBzdHlsZXMgb2YgdGhlIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYCBsaWJyYXJ5LlxuICovXG5leHBvcnQgY29uc3QgTElCUkFSWV9TVFlMRVMgPSAnJChMSUJSQVJZX1NUWUxFUyknIGFzIHN0cmluZztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBb0JPLE1BQU0sa0JBQWtCO0FBS3hCLE1BQU0saUJBQWlCOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -30,7 +30,7 @@ export declare function initI18N(translationsMap: TranslationsMap, isAsync?: boo
30
30
  *
31
31
  * If {@link initI18N} has not been called yet — which is the case for a plugin that extends Obsidian's raw `Plugin`
32
32
  * instead of `PluginBase`, since `PluginBase.onload` is the only caller of {@link initI18N} — the first call lazily
33
- * initializes the default `obsidian-dev-utils` translations and still returns the correct string. That fallback is a
33
+ * initializes the library's default translations and still returns the correct string. That fallback is a
34
34
  * supported path, so it is reported through the `obsidian-dev-utils:I18N:t` debug namespace rather than the console:
35
35
  * it stays silent unless debug messages are enabled. See
36
36
  * {@link https://mnaoumov.dev/obsidian-lib/guides/debugging/}.
@@ -66,7 +66,7 @@ async function initI18N(translationsMap, isAsync = true) {
66
66
  }
67
67
  function tImpl(selector, options) {
68
68
  if (!i18next.isInitialized) {
69
- getObsidianLibDebugger("I18N:t")("I18N was not initialized, initializing default obsidian-dev-utils translations");
69
+ getObsidianLibDebugger("I18N:t")("I18N was not initialized, initializing default obsidian-lib translations");
70
70
  invokeAsyncSafely(() => initI18N(defaultTranslationsMap, false));
71
71
  }
72
72
  return options ? tLib(selector, options) : tLib(selector);
@@ -77,4 +77,4 @@ export {
77
77
  initI18N,
78
78
  t
79
79
  };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pMThuL2kxOG4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBgaTE4bmAgbW9kdWxlIGZvciBgaTE4bmV4dGAuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBTZWxlY3RvckZuLFxuICBTZWxlY3Rvck9wdGlvbnMsXG4gIFRGdW5jdGlvblxufSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IGkxOG5leHQsIHtcbiAgaW5pdCxcbiAgdCBhcyB0TGliXG59IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2UgfSBmcm9tICcuL2RlZmF1bHQtdHJhbnNsYXRpb25zLnRzJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IGVuIH0gZnJvbSAnLi9sb2NhbGVzL2VuLnRzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfTEFOR1VBR0UsXG4gIGRlZmF1bHRUcmFuc2xhdGlvbnNNYXBcbn0gZnJvbSAnLi9sb2NhbGVzL3RyYW5zbGF0aW9ucy1tYXAudHMnO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IG5hbWVzcGFjZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTlMgPSAndHJhbnNsYXRpb24nO1xuXG4vKipcbiAqIFRoZSB0cmFuc2xhdGlvbnMgbWFwLlxuICovXG5leHBvcnQgdHlwZSBUcmFuc2xhdGlvbnNNYXAgPSBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbmludGVyZmFjZSBUT3B0aW9ucyBleHRlbmRzIFNlbGVjdG9yT3B0aW9uczxbdHlwZW9mIERFRkFVTFRfTlNdPiB7XG4gIHJlYWRvbmx5IG5zOiBbdHlwZW9mIERFRkFVTFRfTlNdO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBgaTE4bmAgbW9kdWxlLlxuICpcbiAqIENhbGxpbmcgdGhpcyBhZ2FpbiByZS1ydW5zIGBpMThuZXh0LmluaXQoKWAsIHdoaWNoIGZ1bGx5IHJlcGxhY2VzIHRoZSByZXNvdXJjZSBzdG9yZSBhbmQgbGFuZ3VhZ2UsIHNvIGEgcmVsb2FkIHBpY2tzXG4gKiB1cCBhIGNoYW5nZWQgbGFuZ3VhZ2Ugb3IgdHJhbnNsYXRpb25zIG1hcC4gVGhlIGxhenkgZmFsbGJhY2sgaW4ge0BsaW5rIHR9IGFuZCBleHRlcm5hbCBjYWxsZXJzIHJlbHkgb25cbiAqIGBpMThuZXh0LmlzSW5pdGlhbGl6ZWRgIChzZXQgYnkgYGkxOG5leHQuaW5pdCgpYCkgYXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgsIHNvIG5vIHNlcGFyYXRlIGd1YXJkIGlzIGtlcHQgaGVyZS5cbiAqXG4gKiBAcGFyYW0gdHJhbnNsYXRpb25zTWFwIC0gVGhlIHRyYW5zbGF0aW9ucyBtYXAuXG4gKiBAcGFyYW0gaXNBc3luYyAtIFdoZXRoZXIgdGhlIGluaXRpYWxpemF0aW9uIGlzIGFzeW5jaHJvbm91cy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYGkxOG5gIG1vZHVsZSBpcyBpbml0aWFsaXplZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRJMThOKHRyYW5zbGF0aW9uc01hcDogVHJhbnNsYXRpb25zTWFwLCBpc0FzeW5jID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBpbml0KHtcbiAgICBmYWxsYmFja0xuZzogREVGQVVMVF9MQU5HVUFHRSxcbiAgICBpbml0QXN5bmM6IGlzQXN5bmMsXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlXG4gICAgfSxcbiAgICBsbmc6IGdldExhbmd1YWdlKCksXG4gICAgcmVzb3VyY2VzOiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyh0cmFuc2xhdGlvbnNNYXApLm1hcCgoW2xhbmd1YWdlLCB0cmFuc2xhdGlvbnNdKSA9PiBbXG4gICAgICAgIGxhbmd1YWdlLFxuICAgICAgICB7XG4gICAgICAgICAgW0RFRkFVTFRfTlNdOiB0cmFuc2xhdGlvbnNcbiAgICAgICAgfVxuICAgICAgXSlcbiAgICApLFxuICAgIHJldHVybkVtcHR5U3RyaW5nOiBmYWxzZSxcbiAgICByZXR1cm5OdWxsOiBmYWxzZVxuICB9KTtcblxuICBpMThuZXh0LmFkZFJlc291cmNlQnVuZGxlKERFRkFVTFRfTEFOR1VBR0UsIERFRkFVTFRfTlMsIGVuLCB0cnVlLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHRJbXBsKFxuICBzZWxlY3RvcjogU2VsZWN0b3JGbjxSZWFkb25seURlZXA8RGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2U+LCBzdHJpbmcsIFNlbGVjdG9yT3B0aW9uczxbdHlwZW9mIERFRkFVTFRfTlNdPj4sXG4gIG9wdGlvbnM/OiBUT3B0aW9uc1xuKTogc3RyaW5nIHtcbiAgaWYgKCFpMThuZXh0LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICBnZXRPYnNpZGlhbkxpYkRlYnVnZ2VyKCdJMThOOnQnKSgnSTE4TiB3YXMgbm90IGluaXRpYWxpemVkLCBpbml0aWFsaXppbmcgZGVmYXVsdCBvYnNpZGlhbi1kZXYtdXRpbHMgdHJhbnNsYXRpb25zJyk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gaW5pdEkxOE4oZGVmYXVsdFRyYW5zbGF0aW9uc01hcCwgZmFsc2UpKTtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zID8gdExpYihzZWxlY3Rvciwgb3B0aW9ucykgOiB0TGliKHNlbGVjdG9yKTtcbn1cblxuLyoqXG4gKiBUaGUgYHRgIGZ1bmN0aW9uLlxuICpcbiAqIElmIHtAbGluayBpbml0STE4Tn0gaGFzIG5vdCBiZWVuIGNhbGxlZCB5ZXQg4oCUIHdoaWNoIGlzIHRoZSBjYXNlIGZvciBhIHBsdWdpbiB0aGF0IGV4dGVuZHMgT2JzaWRpYW4ncyByYXcgYFBsdWdpbmBcbiAqIGluc3RlYWQgb2YgYFBsdWdpbkJhc2VgLCBzaW5jZSBgUGx1Z2luQmFzZS5vbmxvYWRgIGlzIHRoZSBvbmx5IGNhbGxlciBvZiB7QGxpbmsgaW5pdEkxOE59IOKAlCB0aGUgZmlyc3QgY2FsbCBsYXppbHlcbiAqIGluaXRpYWxpemVzIHRoZSBkZWZhdWx0IGBvYnNpZGlhbi1kZXYtdXRpbHNgIHRyYW5zbGF0aW9ucyBhbmQgc3RpbGwgcmV0dXJucyB0aGUgY29ycmVjdCBzdHJpbmcuIFRoYXQgZmFsbGJhY2sgaXMgYVxuICogc3VwcG9ydGVkIHBhdGgsIHNvIGl0IGlzIHJlcG9ydGVkIHRocm91Z2ggdGhlIGBvYnNpZGlhbi1kZXYtdXRpbHM6STE4Tjp0YCBkZWJ1ZyBuYW1lc3BhY2UgcmF0aGVyIHRoYW4gdGhlIGNvbnNvbGU6XG4gKiBpdCBzdGF5cyBzaWxlbnQgdW5sZXNzIGRlYnVnIG1lc3NhZ2VzIGFyZSBlbmFibGVkLiBTZWVcbiAqIHtAbGluayBodHRwczovL21uYW91bW92LmRldi9vYnNpZGlhbi1saWIvZ3VpZGVzL2RlYnVnZ2luZy99LlxuICovXG5leHBvcnQgY29uc3QgdCA9IHRJbXBsIGFzIFRGdW5jdGlvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxTQUFTLHlCQUF5QjtBQUNsQyxPQUFPO0FBQUEsRUFDTDtBQUFBLEVBQ0EsS0FBSztBQUFBLE9BQ0E7QUFDUCxTQUFTLG1CQUFtQjtBQUk1QixTQUFTLDhCQUE4QjtBQUN2QyxTQUFTLFVBQVU7QUFDbkI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFLQSxNQUFNLGFBQWE7QUFzQjFCLGVBQXNCLFNBQVMsaUJBQWtDLFVBQVUsTUFBcUI7QUFDOUYsUUFBTSxLQUFLO0FBQUEsSUFDVCxhQUFhO0FBQUEsSUFDYixXQUFXO0FBQUEsSUFDWCxlQUFlO0FBQUEsTUFDYixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsS0FBSyxZQUFZO0FBQUEsSUFDakIsV0FBVyxPQUFPO0FBQUEsTUFDaEIsT0FBTyxRQUFRLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksTUFBTTtBQUFBLFFBQ2hFO0FBQUEsUUFDQTtBQUFBLFVBQ0UsQ0FBQyxVQUFVLEdBQUc7QUFBQSxRQUNoQjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxJQUNBLG1CQUFtQjtBQUFBLElBQ25CLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFFRCxVQUFRLGtCQUFrQixrQkFBa0IsWUFBWSxJQUFJLE1BQU0sS0FBSztBQUN6RTtBQUVBLFNBQVMsTUFDUCxVQUNBLFNBQ1E7QUFDUixNQUFJLENBQUMsUUFBUSxlQUFlO0FBQzFCLDJCQUF1QixRQUFRLEVBQUUsZ0ZBQWdGO0FBQ2pILHNCQUFrQixNQUFNLFNBQVMsd0JBQXdCLEtBQUssQ0FBQztBQUFBLEVBQ2pFO0FBRUEsU0FBTyxVQUFVLEtBQUssVUFBVSxPQUFPLElBQUksS0FBSyxRQUFRO0FBQzFEO0FBWU8sTUFBTSxJQUFJOyIsIm5hbWVzIjpbXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pMThuL2kxOG4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBgaTE4bmAgbW9kdWxlIGZvciBgaTE4bmV4dGAuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBTZWxlY3RvckZuLFxuICBTZWxlY3Rvck9wdGlvbnMsXG4gIFRGdW5jdGlvblxufSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IGkxOG5leHQsIHtcbiAgaW5pdCxcbiAgdCBhcyB0TGliXG59IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2UgfSBmcm9tICcuL2RlZmF1bHQtdHJhbnNsYXRpb25zLnRzJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IGVuIH0gZnJvbSAnLi9sb2NhbGVzL2VuLnRzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfTEFOR1VBR0UsXG4gIGRlZmF1bHRUcmFuc2xhdGlvbnNNYXBcbn0gZnJvbSAnLi9sb2NhbGVzL3RyYW5zbGF0aW9ucy1tYXAudHMnO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IG5hbWVzcGFjZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTlMgPSAndHJhbnNsYXRpb24nO1xuXG4vKipcbiAqIFRoZSB0cmFuc2xhdGlvbnMgbWFwLlxuICovXG5leHBvcnQgdHlwZSBUcmFuc2xhdGlvbnNNYXAgPSBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbmludGVyZmFjZSBUT3B0aW9ucyBleHRlbmRzIFNlbGVjdG9yT3B0aW9uczxbdHlwZW9mIERFRkFVTFRfTlNdPiB7XG4gIHJlYWRvbmx5IG5zOiBbdHlwZW9mIERFRkFVTFRfTlNdO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBgaTE4bmAgbW9kdWxlLlxuICpcbiAqIENhbGxpbmcgdGhpcyBhZ2FpbiByZS1ydW5zIGBpMThuZXh0LmluaXQoKWAsIHdoaWNoIGZ1bGx5IHJlcGxhY2VzIHRoZSByZXNvdXJjZSBzdG9yZSBhbmQgbGFuZ3VhZ2UsIHNvIGEgcmVsb2FkIHBpY2tzXG4gKiB1cCBhIGNoYW5nZWQgbGFuZ3VhZ2Ugb3IgdHJhbnNsYXRpb25zIG1hcC4gVGhlIGxhenkgZmFsbGJhY2sgaW4ge0BsaW5rIHR9IGFuZCBleHRlcm5hbCBjYWxsZXJzIHJlbHkgb25cbiAqIGBpMThuZXh0LmlzSW5pdGlhbGl6ZWRgIChzZXQgYnkgYGkxOG5leHQuaW5pdCgpYCkgYXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgsIHNvIG5vIHNlcGFyYXRlIGd1YXJkIGlzIGtlcHQgaGVyZS5cbiAqXG4gKiBAcGFyYW0gdHJhbnNsYXRpb25zTWFwIC0gVGhlIHRyYW5zbGF0aW9ucyBtYXAuXG4gKiBAcGFyYW0gaXNBc3luYyAtIFdoZXRoZXIgdGhlIGluaXRpYWxpemF0aW9uIGlzIGFzeW5jaHJvbm91cy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYGkxOG5gIG1vZHVsZSBpcyBpbml0aWFsaXplZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRJMThOKHRyYW5zbGF0aW9uc01hcDogVHJhbnNsYXRpb25zTWFwLCBpc0FzeW5jID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBpbml0KHtcbiAgICBmYWxsYmFja0xuZzogREVGQVVMVF9MQU5HVUFHRSxcbiAgICBpbml0QXN5bmM6IGlzQXN5bmMsXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlXG4gICAgfSxcbiAgICBsbmc6IGdldExhbmd1YWdlKCksXG4gICAgcmVzb3VyY2VzOiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyh0cmFuc2xhdGlvbnNNYXApLm1hcCgoW2xhbmd1YWdlLCB0cmFuc2xhdGlvbnNdKSA9PiBbXG4gICAgICAgIGxhbmd1YWdlLFxuICAgICAgICB7XG4gICAgICAgICAgW0RFRkFVTFRfTlNdOiB0cmFuc2xhdGlvbnNcbiAgICAgICAgfVxuICAgICAgXSlcbiAgICApLFxuICAgIHJldHVybkVtcHR5U3RyaW5nOiBmYWxzZSxcbiAgICByZXR1cm5OdWxsOiBmYWxzZVxuICB9KTtcblxuICBpMThuZXh0LmFkZFJlc291cmNlQnVuZGxlKERFRkFVTFRfTEFOR1VBR0UsIERFRkFVTFRfTlMsIGVuLCB0cnVlLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHRJbXBsKFxuICBzZWxlY3RvcjogU2VsZWN0b3JGbjxSZWFkb25seURlZXA8RGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2U+LCBzdHJpbmcsIFNlbGVjdG9yT3B0aW9uczxbdHlwZW9mIERFRkFVTFRfTlNdPj4sXG4gIG9wdGlvbnM/OiBUT3B0aW9uc1xuKTogc3RyaW5nIHtcbiAgaWYgKCFpMThuZXh0LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICBnZXRPYnNpZGlhbkxpYkRlYnVnZ2VyKCdJMThOOnQnKSgnSTE4TiB3YXMgbm90IGluaXRpYWxpemVkLCBpbml0aWFsaXppbmcgZGVmYXVsdCBvYnNpZGlhbi1saWIgdHJhbnNsYXRpb25zJyk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gaW5pdEkxOE4oZGVmYXVsdFRyYW5zbGF0aW9uc01hcCwgZmFsc2UpKTtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zID8gdExpYihzZWxlY3Rvciwgb3B0aW9ucykgOiB0TGliKHNlbGVjdG9yKTtcbn1cblxuLyoqXG4gKiBUaGUgYHRgIGZ1bmN0aW9uLlxuICpcbiAqIElmIHtAbGluayBpbml0STE4Tn0gaGFzIG5vdCBiZWVuIGNhbGxlZCB5ZXQg4oCUIHdoaWNoIGlzIHRoZSBjYXNlIGZvciBhIHBsdWdpbiB0aGF0IGV4dGVuZHMgT2JzaWRpYW4ncyByYXcgYFBsdWdpbmBcbiAqIGluc3RlYWQgb2YgYFBsdWdpbkJhc2VgLCBzaW5jZSBgUGx1Z2luQmFzZS5vbmxvYWRgIGlzIHRoZSBvbmx5IGNhbGxlciBvZiB7QGxpbmsgaW5pdEkxOE59IOKAlCB0aGUgZmlyc3QgY2FsbCBsYXppbHlcbiAqIGluaXRpYWxpemVzIHRoZSBsaWJyYXJ5J3MgZGVmYXVsdCB0cmFuc2xhdGlvbnMgYW5kIHN0aWxsIHJldHVybnMgdGhlIGNvcnJlY3Qgc3RyaW5nLiBUaGF0IGZhbGxiYWNrIGlzIGFcbiAqIHN1cHBvcnRlZCBwYXRoLCBzbyBpdCBpcyByZXBvcnRlZCB0aHJvdWdoIHRoZSBgb2JzaWRpYW4tZGV2LXV0aWxzOkkxOE46dGAgZGVidWcgbmFtZXNwYWNlIHJhdGhlciB0aGFuIHRoZSBjb25zb2xlOlxuICogaXQgc3RheXMgc2lsZW50IHVubGVzcyBkZWJ1ZyBtZXNzYWdlcyBhcmUgZW5hYmxlZC4gU2VlXG4gKiB7QGxpbmsgaHR0cHM6Ly9tbmFvdW1vdi5kZXYvb2JzaWRpYW4tbGliL2d1aWRlcy9kZWJ1Z2dpbmcvfS5cbiAqL1xuZXhwb3J0IGNvbnN0IHQgPSB0SW1wbCBhcyBURnVuY3Rpb247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYUEsU0FBUyx5QkFBeUI7QUFDbEMsT0FBTztBQUFBLEVBQ0w7QUFBQSxFQUNBLEtBQUs7QUFBQSxPQUNBO0FBQ1AsU0FBUyxtQkFBbUI7QUFJNUIsU0FBUyw4QkFBOEI7QUFDdkMsU0FBUyxVQUFVO0FBQ25CO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS0EsTUFBTSxhQUFhO0FBc0IxQixlQUFzQixTQUFTLGlCQUFrQyxVQUFVLE1BQXFCO0FBQzlGLFFBQU0sS0FBSztBQUFBLElBQ1QsYUFBYTtBQUFBLElBQ2IsV0FBVztBQUFBLElBQ1gsZUFBZTtBQUFBLE1BQ2IsYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLEtBQUssWUFBWTtBQUFBLElBQ2pCLFdBQVcsT0FBTztBQUFBLE1BQ2hCLE9BQU8sUUFBUSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsVUFBVSxZQUFZLE1BQU07QUFBQSxRQUNoRTtBQUFBLFFBQ0E7QUFBQSxVQUNFLENBQUMsVUFBVSxHQUFHO0FBQUEsUUFDaEI7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsSUFDQSxtQkFBbUI7QUFBQSxJQUNuQixZQUFZO0FBQUEsRUFDZCxDQUFDO0FBRUQsVUFBUSxrQkFBa0Isa0JBQWtCLFlBQVksSUFBSSxNQUFNLEtBQUs7QUFDekU7QUFFQSxTQUFTLE1BQ1AsVUFDQSxTQUNRO0FBQ1IsTUFBSSxDQUFDLFFBQVEsZUFBZTtBQUMxQiwyQkFBdUIsUUFBUSxFQUFFLDBFQUEwRTtBQUMzRyxzQkFBa0IsTUFBTSxTQUFTLHdCQUF3QixLQUFLLENBQUM7QUFBQSxFQUNqRTtBQUVBLFNBQU8sVUFBVSxLQUFLLFVBQVUsT0FBTyxJQUFJLEtBQUssUUFBUTtBQUMxRDtBQVlPLE1BQU0sSUFBSTsiLCJuYW1lcyI6W119