@mnaoumov/obsidian-lib 4.2.1 → 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 (162) hide show
  1. package/dist/lib/cjs/__merged.cjs +54 -1
  2. package/dist/lib/cjs/__merged.d.cts +5 -4
  3. package/dist/lib/cjs/attachment-path.cjs +1 -1
  4. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +1 -1
  5. package/dist/lib/cjs/components/case-insensitive-file-index-component.d.cts +1 -1
  6. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +1 -1
  7. package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +1 -1
  8. package/dist/lib/cjs/components/settings-migration-component.cjs +1 -1
  9. package/dist/lib/cjs/components/settings-migration-component.d.cts +1 -1
  10. package/dist/lib/cjs/css-class.cjs +1 -1
  11. package/dist/lib/cjs/css-class.d.cts +4 -2
  12. package/dist/lib/cjs/demo-vault-helper-settings.cjs +1 -1
  13. package/dist/lib/cjs/demo-vault-helper-settings.d.cts +1 -1
  14. package/dist/lib/cjs/frontmatter.cjs +1 -1
  15. package/dist/lib/cjs/frontmatter.d.cts +1 -1
  16. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  17. package/dist/lib/cjs/generated-during-build.d.cts +2 -2
  18. package/dist/lib/cjs/i18n/i18n.cjs +2 -2
  19. package/dist/lib/cjs/i18n/i18n.d.cts +1 -1
  20. package/dist/lib/cjs/i18n/locales/en.cjs +5 -2
  21. package/dist/lib/cjs/i18n/locales/en.d.cts +4 -1
  22. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +4 -1
  23. package/dist/lib/cjs/link.cjs +5 -3
  24. package/dist/lib/cjs/link.d.cts +22 -0
  25. package/dist/lib/cjs/metadata-cache.cjs +1 -1
  26. package/dist/lib/cjs/modals/minimizable-modal.cjs +1 -1
  27. package/dist/lib/cjs/modals/minimizable-modal.d.cts +1 -1
  28. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
  29. package/dist/lib/cjs/modals/suggest-modal-command-builder.d.cts +3 -3
  30. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +1 -1
  31. package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +5 -2
  32. package/dist/lib/cjs/path-settings.cjs +214 -35
  33. package/dist/lib/cjs/path-settings.d.cts +21 -5
  34. package/dist/lib/cjs/plugin/plugin-api.cjs +17 -2
  35. package/dist/lib/cjs/plugin/plugin-api.d.cts +24 -7
  36. package/dist/lib/cjs/plugin/plugin-context.cjs +1 -1
  37. package/dist/lib/cjs/plugin/plugin.cjs +2 -2
  38. package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
  39. package/dist/lib/cjs/resource-lock.cjs +1 -1
  40. package/dist/lib/cjs/setting-components/checkbox-component.cjs +1 -1
  41. package/dist/lib/cjs/setting-components/checkbox-component.d.cts +1 -1
  42. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +1 -1
  43. package/dist/lib/cjs/setting-components/code-highlighter-component.d.cts +1 -1
  44. package/dist/lib/cjs/setting-components/date-component.cjs +1 -1
  45. package/dist/lib/cjs/setting-components/date-component.d.cts +1 -1
  46. package/dist/lib/cjs/setting-components/date-time-component.cjs +1 -1
  47. package/dist/lib/cjs/setting-components/date-time-component.d.cts +1 -1
  48. package/dist/lib/cjs/setting-components/email-component.cjs +1 -1
  49. package/dist/lib/cjs/setting-components/email-component.d.cts +1 -1
  50. package/dist/lib/cjs/setting-components/file-component.cjs +1 -1
  51. package/dist/lib/cjs/setting-components/file-component.d.cts +1 -1
  52. package/dist/lib/cjs/setting-components/month-component.cjs +1 -1
  53. package/dist/lib/cjs/setting-components/month-component.d.cts +1 -1
  54. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +1 -1
  55. package/dist/lib/cjs/setting-components/multiple-dropdown-component.d.cts +1 -1
  56. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +1 -1
  57. package/dist/lib/cjs/setting-components/multiple-email-component.d.cts +1 -1
  58. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +1 -1
  59. package/dist/lib/cjs/setting-components/multiple-file-component.d.cts +1 -1
  60. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +1 -1
  61. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +1 -1
  62. package/dist/lib/cjs/setting-components/number-component.cjs +1 -1
  63. package/dist/lib/cjs/setting-components/number-component.d.cts +1 -1
  64. package/dist/lib/cjs/setting-components/password-component.cjs +1 -1
  65. package/dist/lib/cjs/setting-components/password-component.d.cts +1 -1
  66. package/dist/lib/cjs/setting-components/telephone-component.cjs +1 -1
  67. package/dist/lib/cjs/setting-components/telephone-component.d.cts +1 -1
  68. package/dist/lib/cjs/setting-components/time-component.cjs +1 -1
  69. package/dist/lib/cjs/setting-components/time-component.d.cts +1 -1
  70. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +1 -1
  71. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.d.cts +1 -1
  72. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +1 -1
  73. package/dist/lib/cjs/setting-components/typed-dropdown-component.d.cts +1 -1
  74. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +1 -1
  75. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.d.cts +1 -1
  76. package/dist/lib/cjs/setting-components/url-component.cjs +1 -1
  77. package/dist/lib/cjs/setting-components/url-component.d.cts +1 -1
  78. package/dist/lib/cjs/setting-components/week-component.cjs +1 -1
  79. package/dist/lib/cjs/setting-components/week-component.d.cts +1 -1
  80. package/dist/lib/cjs/vault.cjs +2 -2
  81. package/dist/lib/cjs/vault.d.cts +2 -2
  82. package/dist/lib/esm/__merged.d.mts +5 -4
  83. package/dist/lib/esm/__merged.mjs +57 -3
  84. package/dist/lib/esm/attachment-path.mjs +1 -1
  85. package/dist/lib/esm/components/case-insensitive-file-index-component.d.mts +1 -1
  86. package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +1 -1
  87. package/dist/lib/esm/components/plugin-suggestion-component.d.mts +1 -1
  88. package/dist/lib/esm/components/plugin-suggestion-component.mjs +1 -1
  89. package/dist/lib/esm/components/settings-migration-component.d.mts +1 -1
  90. package/dist/lib/esm/components/settings-migration-component.mjs +1 -1
  91. package/dist/lib/esm/css-class.d.mts +4 -2
  92. package/dist/lib/esm/css-class.mjs +1 -1
  93. package/dist/lib/esm/demo-vault-helper-settings.d.mts +1 -1
  94. package/dist/lib/esm/frontmatter.d.mts +1 -1
  95. package/dist/lib/esm/frontmatter.mjs +1 -1
  96. package/dist/lib/esm/generated-during-build.d.mts +2 -2
  97. package/dist/lib/esm/generated-during-build.mjs +2 -2
  98. package/dist/lib/esm/i18n/i18n.d.mts +1 -1
  99. package/dist/lib/esm/i18n/i18n.mjs +2 -2
  100. package/dist/lib/esm/i18n/locales/en.d.mts +4 -1
  101. package/dist/lib/esm/i18n/locales/en.mjs +5 -2
  102. package/dist/lib/esm/i18n/locales/translations-map.d.mts +4 -1
  103. package/dist/lib/esm/link.d.mts +22 -0
  104. package/dist/lib/esm/link.mjs +5 -3
  105. package/dist/lib/esm/metadata-cache.mjs +1 -1
  106. package/dist/lib/esm/modals/minimizable-modal.d.mts +1 -1
  107. package/dist/lib/esm/modals/minimizable-modal.mjs +1 -1
  108. package/dist/lib/esm/modals/suggest-modal-command-builder.d.mts +3 -3
  109. package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +1 -1
  110. package/dist/lib/esm/obsidian-dev-utils-state.d.mts +5 -2
  111. package/dist/lib/esm/obsidian-dev-utils-state.mjs +1 -1
  112. package/dist/lib/esm/path-settings.d.mts +21 -5
  113. package/dist/lib/esm/path-settings.mjs +215 -41
  114. package/dist/lib/esm/plugin/plugin-api.d.mts +24 -7
  115. package/dist/lib/esm/plugin/plugin-api.mjs +16 -2
  116. package/dist/lib/esm/plugin/plugin-context.mjs +1 -1
  117. package/dist/lib/esm/plugin/plugin.d.mts +1 -1
  118. package/dist/lib/esm/plugin/plugin.mjs +2 -2
  119. package/dist/lib/esm/resource-lock.mjs +1 -1
  120. package/dist/lib/esm/setting-components/checkbox-component.d.mts +1 -1
  121. package/dist/lib/esm/setting-components/checkbox-component.mjs +1 -1
  122. package/dist/lib/esm/setting-components/code-highlighter-component.d.mts +1 -1
  123. package/dist/lib/esm/setting-components/code-highlighter-component.mjs +1 -1
  124. package/dist/lib/esm/setting-components/date-component.d.mts +1 -1
  125. package/dist/lib/esm/setting-components/date-component.mjs +1 -1
  126. package/dist/lib/esm/setting-components/date-time-component.d.mts +1 -1
  127. package/dist/lib/esm/setting-components/date-time-component.mjs +1 -1
  128. package/dist/lib/esm/setting-components/email-component.d.mts +1 -1
  129. package/dist/lib/esm/setting-components/email-component.mjs +1 -1
  130. package/dist/lib/esm/setting-components/file-component.d.mts +1 -1
  131. package/dist/lib/esm/setting-components/file-component.mjs +1 -1
  132. package/dist/lib/esm/setting-components/month-component.d.mts +1 -1
  133. package/dist/lib/esm/setting-components/month-component.mjs +1 -1
  134. package/dist/lib/esm/setting-components/multiple-dropdown-component.d.mts +1 -1
  135. package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +1 -1
  136. package/dist/lib/esm/setting-components/multiple-email-component.d.mts +1 -1
  137. package/dist/lib/esm/setting-components/multiple-email-component.mjs +1 -1
  138. package/dist/lib/esm/setting-components/multiple-file-component.d.mts +1 -1
  139. package/dist/lib/esm/setting-components/multiple-file-component.mjs +1 -1
  140. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +1 -1
  141. package/dist/lib/esm/setting-components/multiple-text-component.mjs +1 -1
  142. package/dist/lib/esm/setting-components/number-component.d.mts +1 -1
  143. package/dist/lib/esm/setting-components/number-component.mjs +1 -1
  144. package/dist/lib/esm/setting-components/password-component.d.mts +1 -1
  145. package/dist/lib/esm/setting-components/password-component.mjs +1 -1
  146. package/dist/lib/esm/setting-components/telephone-component.d.mts +1 -1
  147. package/dist/lib/esm/setting-components/telephone-component.mjs +1 -1
  148. package/dist/lib/esm/setting-components/time-component.d.mts +1 -1
  149. package/dist/lib/esm/setting-components/time-component.mjs +1 -1
  150. package/dist/lib/esm/setting-components/tri-state-checkbox-component.d.mts +1 -1
  151. package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +1 -1
  152. package/dist/lib/esm/setting-components/typed-dropdown-component.d.mts +1 -1
  153. package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +1 -1
  154. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.d.mts +1 -1
  155. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +1 -1
  156. package/dist/lib/esm/setting-components/url-component.d.mts +1 -1
  157. package/dist/lib/esm/setting-components/url-component.mjs +1 -1
  158. package/dist/lib/esm/setting-components/week-component.d.mts +1 -1
  159. package/dist/lib/esm/setting-components/week-component.mjs +1 -1
  160. package/dist/lib/esm/vault.d.mts +2 -2
  161. package/dist/lib/esm/vault.mjs +2 -2
  162. package/package.json +5 -4
@@ -13,7 +13,7 @@ import { TypedRangeTextComponent } from './typed-range-text-component.cjs';
13
13
  *
14
14
  * In order to add the styles for the component, use {@link initPluginContext} in your plugin's `onload()` function.
15
15
  *
16
- * Alternatively, you can copy styles from {@link https://github.com/mnaoumov/obsidian-dev-utils/releases/latest/download/styles.css}.
16
+ * Alternatively, you can copy styles from {@link https://unpkg.com/@mnaoumov/obsidian-lib/dist/styles.css}.
17
17
  */
18
18
  export declare class TimeComponent extends TypedRangeTextComponent<moment.Duration> {
19
19
  /**
@@ -196,4 +196,4 @@ class TriStateCheckboxComponent extends import_obsidian.ValueComponent {
196
196
  0 && (module.exports = {
197
197
  TriStateCheckboxComponent
198
198
  });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvdHJpLXN0YXRlLWNoZWNrYm94LWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVHJpLXN0YXRlIGNoZWNrYm94IGNvbXBvbmVudC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvaHRtbC1lbGVtZW50JztcblxuaW1wb3J0IHsgVmFsdWVDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYGluaXRQbHVnaW5Db250ZXh0YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vc2V0dGluZy1leC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGEgdHJpLXN0YXRlIGNoZWNrYm94LlxuICpcbiAqIFlvdSBjYW4gYWRkIHRoaXMgY29tcG9uZW50IHVzaW5nIHtAbGluayBTZXR0aW5nRXguYWRkVHJpU3RhdGVDaGVja2JveH0uXG4gKlxuICogSW4gb3JkZXIgdG8gYWRkIHRoZSBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnQsIHVzZSB7QGxpbmsgaW5pdFBsdWdpbkNvbnRleHR9IGluIHlvdXIgcGx1Z2luJ3MgYG9ubG9hZCgpYCBmdW5jdGlvbi5cbiAqXG4gKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNvcHkgc3R5bGVzIGZyb20ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1kZXYtdXRpbHMvcmVsZWFzZXMvbGF0ZXN0L2Rvd25sb2FkL3N0eWxlcy5jc3N9LlxuICovXG5leHBvcnQgY2xhc3MgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCBleHRlbmRzIFZhbHVlQ29tcG9uZW50PGJvb2xlYW4gfCBudWxsPiBpbXBsZW1lbnRzIFZhbGlkYXRvckNvbXBvbmVudCwgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8Ym9vbGVhbiB8IG51bGw+IHtcbiAgLyoqXG4gICAqIEFuIGlucHV0IGVsZW1lbnQgb2YgdGhlIGNoZWNrYm94LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlucHV0RWw6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEEgdmFsaWRhdG9yIGVsZW1lbnQgb2YgdGhlIGNoZWNrYm94LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdmFsaWRhdG9yIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHZhbGlkYXRvckVsKCk6IFZhbGlkYXRvckVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmlucHV0RWw7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUNhbGxiYWNrPzogKG5ld1ZhbHVlOiBib29sZWFuIHwgbnVsbCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyB0cmktc3RhdGUgY2hlY2tib3ggY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKGNvbnRhaW5lckVsLCBDc3NDbGFzcy5UcmlTdGF0ZUNoZWNrYm94Q29tcG9uZW50KTtcbiAgICB0aGlzLmlucHV0RWwgPSBjb250YWluZXJFbC5jcmVhdGVFbCgnaW5wdXQnLCB7IHR5cGU6ICdjaGVja2JveCcgfSk7XG4gICAgdGhpcy5pbnB1dEVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMub25DaGFuZ2VkLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXRWYWx1ZSgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRFbC5pbmRldGVybWluYXRlID8gbnVsbCA6IHRoaXMuaW5wdXRFbC5jaGVja2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBpcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNoZWNrYm94IGlzIGNoYW5nZWQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb25DaGFuZ2UoY2FsbGJhY2s6IChuZXdWYWx1ZTogYm9vbGVhbiB8IG51bGwpID0+IHZvaWQpOiB0aGlzIHtcbiAgICB0aGlzLmNoYW5nZUNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGNoZWNrYm94IGlzIGNoYW5nZWQuXG4gICAqL1xuICBwdWJsaWMgb25DaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlQ2FsbGJhY2s/Lih0aGlzLmdldFZhbHVlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjaGVja2JveC5cbiAgICpcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgLSBUaGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNoZWNrYm94LlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNldERpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICBzdXBlci5zZXREaXNhYmxlZChpc0Rpc2FibGVkKTtcbiAgICB0aGlzLmlucHV0RWwuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldCB0aGUgY2hlY2tib3ggdG8uXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgc2V0VmFsdWUodmFsdWU6IGJvb2xlYW4gfCBudWxsKTogdGhpcyB7XG4gICAgdGhpcy5pbnB1dEVsLmluZGV0ZXJtaW5hdGUgPSB2YWx1ZSA9PT0gbnVsbDtcbiAgICB0aGlzLmlucHV0RWwuY2hlY2tlZCA9IHZhbHVlID8/IGZhbHNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxzQkFBK0I7QUFTL0IsdUJBQXlCO0FBQ3pCLDRCQUFvQztBQVc3QixNQUFNLGtDQUFrQywrQkFBK0c7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUk1STtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9oQixJQUFXLGNBQWdDO0FBQ3pDLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQSxFQUVRO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0QsWUFBWSxhQUEwQjtBQUMzQyxVQUFNO0FBQ04sbURBQW9CLGFBQWEsMEJBQVMseUJBQXlCO0FBQ25FLFNBQUssVUFBVSxZQUFZLFNBQVMsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pFLFNBQUssUUFBUSxpQkFBaUIsVUFBVSxLQUFLLFVBQVUsS0FBSyxJQUFJLENBQUM7QUFBQSxFQUNuRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9nQixXQUEyQjtBQUN6QyxXQUFPLEtBQUssUUFBUSxnQkFBZ0IsT0FBTyxLQUFLLFFBQVE7QUFBQSxFQUMxRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sU0FBUyxVQUFvRDtBQUNsRSxTQUFLLGlCQUFpQjtBQUN0QixXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08sWUFBa0I7QUFDdkIsU0FBSyxpQkFBaUIsS0FBSyxTQUFTLENBQUM7QUFBQSxFQUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLFlBQVksWUFBMkI7QUFDckQsVUFBTSxZQUFZLFVBQVU7QUFDNUIsU0FBSyxRQUFRLFdBQVc7QUFDeEIsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixTQUFTLE9BQTZCO0FBQ3BELFNBQUssUUFBUSxnQkFBZ0IsVUFBVTtBQUN2QyxTQUFLLFFBQVEsVUFBVSxTQUFTO0FBQ2hDLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwibmFtZXMiOltdfQ==
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvdHJpLXN0YXRlLWNoZWNrYm94LWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVHJpLXN0YXRlIGNoZWNrYm94IGNvbXBvbmVudC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvaHRtbC1lbGVtZW50JztcblxuaW1wb3J0IHsgVmFsdWVDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYGluaXRQbHVnaW5Db250ZXh0YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vc2V0dGluZy1leC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGEgdHJpLXN0YXRlIGNoZWNrYm94LlxuICpcbiAqIFlvdSBjYW4gYWRkIHRoaXMgY29tcG9uZW50IHVzaW5nIHtAbGluayBTZXR0aW5nRXguYWRkVHJpU3RhdGVDaGVja2JveH0uXG4gKlxuICogSW4gb3JkZXIgdG8gYWRkIHRoZSBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnQsIHVzZSB7QGxpbmsgaW5pdFBsdWdpbkNvbnRleHR9IGluIHlvdXIgcGx1Z2luJ3MgYG9ubG9hZCgpYCBmdW5jdGlvbi5cbiAqXG4gKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNvcHkgc3R5bGVzIGZyb20ge0BsaW5rIGh0dHBzOi8vdW5wa2cuY29tL0BtbmFvdW1vdi9vYnNpZGlhbi1saWIvZGlzdC9zdHlsZXMuY3NzfS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyaVN0YXRlQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDxib29sZWFuIHwgbnVsbD4gaW1wbGVtZW50cyBWYWxpZGF0b3JDb21wb25lbnQsIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPGJvb2xlYW4gfCBudWxsPiB7XG4gIC8qKlxuICAgKiBBbiBpbnB1dCBlbGVtZW50IG9mIHRoZSBjaGVja2JveC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbnB1dEVsOiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBBIHZhbGlkYXRvciBlbGVtZW50IG9mIHRoZSBjaGVja2JveC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHZhbGlkYXRvciBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGdldCB2YWxpZGF0b3JFbCgpOiBWYWxpZGF0b3JFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VDYWxsYmFjaz86IChuZXdWYWx1ZTogYm9vbGVhbiB8IG51bGwpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgdHJpLXN0YXRlIGNoZWNrYm94IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lckVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyhjb250YWluZXJFbCwgQ3NzQ2xhc3MuVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCk7XG4gICAgdGhpcy5pbnB1dEVsID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ2lucHV0JywgeyB0eXBlOiAnY2hlY2tib3gnIH0pO1xuICAgIHRoaXMuaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLm9uQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3guXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3guXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0VmFsdWUoKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmlucHV0RWwuaW5kZXRlcm1pbmF0ZSA/IG51bGwgOiB0aGlzLmlucHV0RWwuY2hlY2tlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY2hlY2tib3ggaXMgY2hhbmdlZC5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBpcyBjaGFuZ2VkLlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIG9uQ2hhbmdlKGNhbGxiYWNrOiAobmV3VmFsdWU6IGJvb2xlYW4gfCBudWxsKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgdGhpcy5jaGFuZ2VDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgcHVibGljIG9uQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZUNhbGxiYWNrPy4odGhpcy5nZXRWYWx1ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY2hlY2tib3guXG4gICAqXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIC0gVGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjaGVja2JveC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBzZXREaXNhYmxlZChpc0Rpc2FibGVkOiBib29sZWFuKTogdGhpcyB7XG4gICAgc3VwZXIuc2V0RGlzYWJsZWQoaXNEaXNhYmxlZCk7XG4gICAgdGhpcy5pbnB1dEVsLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3guXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQgdGhlIGNoZWNrYm94IHRvLlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNldFZhbHVlKHZhbHVlOiBib29sZWFuIHwgbnVsbCk6IHRoaXMge1xuICAgIHRoaXMuaW5wdXRFbC5pbmRldGVybWluYXRlID0gdmFsdWUgPT09IG51bGw7XG4gICAgdGhpcy5pbnB1dEVsLmNoZWNrZWQgPSB2YWx1ZSA/PyBmYWxzZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsc0JBQStCO0FBUy9CLHVCQUF5QjtBQUN6Qiw0QkFBb0M7QUFXN0IsTUFBTSxrQ0FBa0MsK0JBQStHO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJNUk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPaEIsSUFBVyxjQUFnQztBQUN6QyxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFFUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9ELFlBQVksYUFBMEI7QUFDM0MsVUFBTTtBQUNOLG1EQUFvQixhQUFhLDBCQUFTLHlCQUF5QjtBQUNuRSxTQUFLLFVBQVUsWUFBWSxTQUFTLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRSxTQUFLLFFBQVEsaUJBQWlCLFVBQVUsS0FBSyxVQUFVLEtBQUssSUFBSSxDQUFDO0FBQUEsRUFDbkU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPZ0IsV0FBMkI7QUFDekMsV0FBTyxLQUFLLFFBQVEsZ0JBQWdCLE9BQU8sS0FBSyxRQUFRO0FBQUEsRUFDMUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLFNBQVMsVUFBb0Q7QUFDbEUsU0FBSyxpQkFBaUI7QUFDdEIsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLFlBQWtCO0FBQ3ZCLFNBQUssaUJBQWlCLEtBQUssU0FBUyxDQUFDO0FBQUEsRUFDdkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixZQUFZLFlBQTJCO0FBQ3JELFVBQU0sWUFBWSxVQUFVO0FBQzVCLFNBQUssUUFBUSxXQUFXO0FBQ3hCLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsU0FBUyxPQUE2QjtBQUNwRCxTQUFLLFFBQVEsZ0JBQWdCLFVBQVU7QUFDdkMsU0FBSyxRQUFRLFVBQVUsU0FBUztBQUNoQyxXQUFPO0FBQUEsRUFDVDtBQUNGOyIsIm5hbWVzIjpbXX0=
@@ -16,7 +16,7 @@ import type { ValueComponentWithChangeTracking } from './value-component-with-ch
16
16
  *
17
17
  * In order to add the styles for the component, use {@link initPluginContext} in your plugin's `onload()` function.
18
18
  *
19
- * Alternatively, you can copy styles from {@link https://github.com/mnaoumov/obsidian-dev-utils/releases/latest/download/styles.css}.
19
+ * Alternatively, you can copy styles from {@link https://unpkg.com/@mnaoumov/obsidian-lib/dist/styles.css}.
20
20
  */
21
21
  export declare class TriStateCheckboxComponent extends ValueComponent<boolean | null> implements ValidatorComponent, ValueComponentWithChangeTracking<boolean | null> {
22
22
  /**
@@ -241,4 +241,4 @@ class TypedDropdownComponent extends import_obsidian.ValueComponent {
241
241
  0 && (module.exports = {
242
242
  TypedDropdownComponent
243
243
  });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvdHlwZWQtZHJvcGRvd24tY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUeXBlZCBkcm9wZG93biBjb21wb25lbnQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBWYWxpZGF0b3JFbGVtZW50IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2h0bWwtZWxlbWVudCc7XG5cbmltcG9ydCB7XG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBWYWx1ZUNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYGluaXRQbHVnaW5Db250ZXh0YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vc2V0dGluZy1leC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcblxuLyoqXG4gKiBBIGRyb3Bkb3duIGNvbXBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIHZhbHVlIGZyb20gYSBsaXN0LlxuICpcbiAqIFlvdSBjYW4gYWRkIHRoaXMgY29tcG9uZW50IHVzaW5nIHtAbGluayBTZXR0aW5nRXguYWRkVHlwZWREcm9wZG93bn0uXG4gKlxuICogSW4gb3JkZXIgdG8gYWRkIHRoZSBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnQsIHVzZSB7QGxpbmsgaW5pdFBsdWdpbkNvbnRleHR9IGluIHlvdXIgcGx1Z2luJ3MgYG9ubG9hZCgpYCBmdW5jdGlvbi5cbiAqXG4gKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNvcHkgc3R5bGVzIGZyb20ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1kZXYtdXRpbHMvcmVsZWFzZXMvbGF0ZXN0L2Rvd25sb2FkL3N0eWxlcy5jc3N9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSB0byBzZWxlY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlZERyb3Bkb3duQ29tcG9uZW50PFQ+IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8bnVsbCB8IFQ+IGltcGxlbWVudHMgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8bnVsbCB8IFQ+IHtcbiAgLyoqXG4gICAqIEEgc2VsZWN0IGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNlbGVjdCBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGdldCBzZWxlY3RFbCgpOiBIVE1MU2VsZWN0RWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25Db21wb25lbnQuc2VsZWN0RWw7XG4gIH1cblxuICAvKipcbiAgICogQSB2YWxpZGF0b3IgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdmFsaWRhdG9yIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHZhbGlkYXRvckVsKCk6IFZhbGlkYXRvckVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdEVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbm5lciBkcm9wZG93biBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd25Db21wb25lbnQ6IERyb3Bkb3duQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBzZWxlY3RhYmxlIG9wdGlvbiB2YWx1ZXMsIGluZGV4ZWQgYnkgdGhlaXIgcG9zaXRpb24gaW4gdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlczogVFtdID0gW107XG5cbiAgcHJpdmF0ZSBzaW11bGF0ZUNoYW5nZUNhbGxiYWNrPzogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtdWx0aXBsZSBkcm9wZG93biBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJFbCAtIFRoZSBjb250YWluZXIgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudCA9IG5ldyBEcm9wZG93bkNvbXBvbmVudChjb250YWluZXJFbCk7XG4gICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyhjb250YWluZXJFbCwgQ3NzQ2xhc3MuVHlwZWREcm9wZG93bkNvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBvcHRpb24gdG8gdGhlIGRyb3Bkb3duLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIG9wdGlvbi5cbiAgICogQHBhcmFtIGRpc3BsYXkgLSBUaGUgZGlzcGxheSB0ZXh0IG9mIHRoZSBvcHRpb24uXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYWRkT3B0aW9uKHZhbHVlOiBULCBkaXNwbGF5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnZhbHVlcy5pbmRleE9mKHZhbHVlKTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgIGluZGV4ID0gdGhpcy52YWx1ZXMubGVuZ3RoIC0gMTtcbiAgICB9XG4gICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5hZGRPcHRpb24oU3RyaW5nKGluZGV4KSwgZGlzcGxheSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBtdWx0aXBsZSBvcHRpb25zIHRvIHRoZSBkcm9wZG93bi5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byBhZGQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYWRkT3B0aW9ucyhvcHRpb25zOiBNYXA8VCwgc3RyaW5nPik6IHRoaXMge1xuICAgIGZvciAoY29uc3QgW3ZhbHVlLCBkaXNwbGF5XSBvZiBvcHRpb25zKSB7XG4gICAgICB0aGlzLmFkZE9wdGlvbih2YWx1ZSwgZGlzcGxheSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGdldFZhbHVlKCk6IG51bGwgfCBUIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbdGhpcy5kcm9wZG93bkNvbXBvbmVudC5zZWxlY3RFbC5zZWxlY3RlZEluZGV4XSA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgY2hhbmdlZC5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgY2hhbmdlZC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBvbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBudWxsIHwgVCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIGNvbnN0IGNoYW5nZUhhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjYWxsYmFjayh0aGlzLmdldFZhbHVlKCkpO1xuICAgIH07XG4gICAgdGhpcy5zaW11bGF0ZUNoYW5nZUNhbGxiYWNrID0gY2hhbmdlSGFuZGxlcjtcbiAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50Lm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIC0gVGhlIGRpc2FibGVkIHN0YXRlIHRvIHNldC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBzZXREaXNhYmxlZChpc0Rpc2FibGVkOiBib29sZWFuKTogdGhpcyB7XG4gICAgc3VwZXIuc2V0RGlzYWJsZWQoaXNEaXNhYmxlZCk7XG4gICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5zZXREaXNhYmxlZChpc0Rpc2FibGVkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBudWxsIHwgVCk6IHRoaXMge1xuICAgIGNvbnN0IGluZGV4ID0gdmFsdWUgPT09IG51bGwgPyAtMSA6IHRoaXMudmFsdWVzLmluZGV4T2YodmFsdWUpO1xuICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuc2VsZWN0RWwuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbXVsYXRlIGEgY2hhbmdlIGV2ZW50LlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugb25seSBmcm9tIHRlc3RzIHRvIHNpbXVsYXRlIGEgY2hhbmdlIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHNpbXVsYXRlQ2hhbmdlX18oKTogdm9pZCB7XG4gICAgdGhpcy5zaW11bGF0ZUNoYW5nZUNhbGxiYWNrPy4oKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsc0JBR087QUFRUCx1QkFBeUI7QUFDekIsNEJBQW9DO0FBYTdCLE1BQU0sK0JBQWtDLCtCQUErRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU01SCxJQUFXLFdBQThCO0FBQ3ZDLFdBQU8sS0FBSyxrQkFBa0I7QUFBQSxFQUNoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsY0FBZ0M7QUFDekMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS21CO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxTQUFjLENBQUM7QUFBQSxFQUUxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9ELFlBQVksYUFBMEI7QUFDM0MsVUFBTTtBQUNOLFNBQUssb0JBQW9CLElBQUksa0NBQWtCLFdBQVc7QUFDMUQsbURBQW9CLGFBQWEsMEJBQVMsc0JBQXNCO0FBQUEsRUFDbEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sVUFBVSxPQUFVLFNBQXVCO0FBQ2hELFFBQUksUUFBUSxLQUFLLE9BQU8sUUFBUSxLQUFLO0FBQ3JDLFFBQUksVUFBVSxJQUFJO0FBQ2hCLFdBQUssT0FBTyxLQUFLLEtBQUs7QUFDdEIsY0FBUSxLQUFLLE9BQU8sU0FBUztBQUFBLElBQy9CO0FBQ0EsU0FBSyxrQkFBa0IsVUFBVSxPQUFPLEtBQUssR0FBRyxPQUFPO0FBQ3ZELFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxXQUFXLFNBQStCO0FBQy9DLGVBQVcsQ0FBQyxPQUFPLE9BQU8sS0FBSyxTQUFTO0FBQ3RDLFdBQUssVUFBVSxPQUFPLE9BQU87QUFBQSxJQUMvQjtBQUNBLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sV0FBcUI7QUFDMUIsV0FBTyxLQUFLLE9BQU8sS0FBSyxrQkFBa0IsU0FBUyxhQUFhLEtBQUs7QUFBQSxFQUN2RTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sU0FBUyxVQUEyQztBQUN6RCxVQUFNLGdCQUFnQixNQUFZO0FBQ2hDLGVBQVMsS0FBSyxTQUFTLENBQUM7QUFBQSxJQUMxQjtBQUNBLFNBQUsseUJBQXlCO0FBQzlCLFNBQUssa0JBQWtCLFNBQVMsYUFBYTtBQUM3QyxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLFlBQVksWUFBMkI7QUFDckQsVUFBTSxZQUFZLFVBQVU7QUFDNUIsU0FBSyxrQkFBa0IsWUFBWSxVQUFVO0FBQzdDLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxTQUFTLE9BQXVCO0FBQ3JDLFVBQU0sUUFBUSxVQUFVLE9BQU8sS0FBSyxLQUFLLE9BQU8sUUFBUSxLQUFLO0FBQzdELFNBQUssa0JBQWtCLFNBQVMsZ0JBQWdCO0FBQ2hELFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sbUJBQXlCO0FBQzlCLFNBQUsseUJBQXlCO0FBQUEsRUFDaEM7QUFDRjsiLCJuYW1lcyI6W119
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvdHlwZWQtZHJvcGRvd24tY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUeXBlZCBkcm9wZG93biBjb21wb25lbnQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBWYWxpZGF0b3JFbGVtZW50IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2h0bWwtZWxlbWVudCc7XG5cbmltcG9ydCB7XG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBWYWx1ZUNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYGluaXRQbHVnaW5Db250ZXh0YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vc2V0dGluZy1leC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcblxuLyoqXG4gKiBBIGRyb3Bkb3duIGNvbXBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIHZhbHVlIGZyb20gYSBsaXN0LlxuICpcbiAqIFlvdSBjYW4gYWRkIHRoaXMgY29tcG9uZW50IHVzaW5nIHtAbGluayBTZXR0aW5nRXguYWRkVHlwZWREcm9wZG93bn0uXG4gKlxuICogSW4gb3JkZXIgdG8gYWRkIHRoZSBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnQsIHVzZSB7QGxpbmsgaW5pdFBsdWdpbkNvbnRleHR9IGluIHlvdXIgcGx1Z2luJ3MgYG9ubG9hZCgpYCBmdW5jdGlvbi5cbiAqXG4gKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNvcHkgc3R5bGVzIGZyb20ge0BsaW5rIGh0dHBzOi8vdW5wa2cuY29tL0BtbmFvdW1vdi9vYnNpZGlhbi1saWIvZGlzdC9zdHlsZXMuY3NzfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdG8gc2VsZWN0LlxuICovXG5leHBvcnQgY2xhc3MgVHlwZWREcm9wZG93bkNvbXBvbmVudDxUPiBleHRlbmRzIFZhbHVlQ29tcG9uZW50PG51bGwgfCBUPiBpbXBsZW1lbnRzIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPG51bGwgfCBUPiB7XG4gIC8qKlxuICAgKiBBIHNlbGVjdCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzZWxlY3QgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2VsZWN0RWwoKTogSFRNTFNlbGVjdEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LnNlbGVjdEVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgdmFsaWRhdG9yIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHZhbGlkYXRvciBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGdldCB2YWxpZGF0b3JFbCgpOiBWYWxpZGF0b3JFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RFbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5uZXIgZHJvcGRvd24gY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duQ29tcG9uZW50OiBEcm9wZG93bkNvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygc2VsZWN0YWJsZSBvcHRpb24gdmFsdWVzLCBpbmRleGVkIGJ5IHRoZWlyIHBvc2l0aW9uIGluIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSB2YWx1ZXM6IFRbXSA9IFtdO1xuXG4gIHByaXZhdGUgc2ltdWxhdGVDaGFuZ2VDYWxsYmFjaz86ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgbXVsdGlwbGUgZHJvcGRvd24gY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQgPSBuZXcgRHJvcGRvd25Db21wb25lbnQoY29udGFpbmVyRWwpO1xuICAgIGFkZFBsdWdpbkNzc0NsYXNzZXMoY29udGFpbmVyRWwsIENzc0NsYXNzLlR5cGVkRHJvcGRvd25Db21wb25lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gb3B0aW9uIHRvIHRoZSBkcm9wZG93bi5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBvcHRpb24uXG4gICAqIEBwYXJhbSBkaXNwbGF5IC0gVGhlIGRpc3BsYXkgdGV4dCBvZiB0aGUgb3B0aW9uLlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGFkZE9wdGlvbih2YWx1ZTogVCwgZGlzcGxheTogc3RyaW5nKTogdGhpcyB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy52YWx1ZXMuaW5kZXhPZih2YWx1ZSk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgdGhpcy52YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICBpbmRleCA9IHRoaXMudmFsdWVzLmxlbmd0aCAtIDE7XG4gICAgfVxuICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuYWRkT3B0aW9uKFN0cmluZyhpbmRleCksIGRpc3BsYXkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgb3B0aW9ucyB0byB0aGUgZHJvcGRvd24uXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gYWRkLlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGFkZE9wdGlvbnMob3B0aW9uczogTWFwPFQsIHN0cmluZz4pOiB0aGlzIHtcbiAgICBmb3IgKGNvbnN0IFt2YWx1ZSwgZGlzcGxheV0gb2Ygb3B0aW9ucykge1xuICAgICAgdGhpcy5hZGRPcHRpb24odmFsdWUsIGRpc3BsYXkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiBudWxsIHwgVCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW3RoaXMuZHJvcGRvd25Db21wb25lbnQuc2VsZWN0RWwuc2VsZWN0ZWRJbmRleF0gPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGNoYW5nZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGNoYW5nZWQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb25DaGFuZ2UoY2FsbGJhY2s6ICh2YWx1ZTogbnVsbCB8IFQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICBjb25zdCBjaGFuZ2VIYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuICAgICAgY2FsbGJhY2sodGhpcy5nZXRWYWx1ZSgpKTtcbiAgICB9O1xuICAgIHRoaXMuc2ltdWxhdGVDaGFuZ2VDYWxsYmFjayA9IGNoYW5nZUhhbmRsZXI7XG4gICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5vbkNoYW5nZShjaGFuZ2VIYW5kbGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCAtIFRoZSBkaXNhYmxlZCBzdGF0ZSB0byBzZXQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgc2V0RGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbik6IHRoaXMge1xuICAgIHN1cGVyLnNldERpc2FibGVkKGlzRGlzYWJsZWQpO1xuICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuc2V0RGlzYWJsZWQoaXNEaXNhYmxlZCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogbnVsbCB8IFQpOiB0aGlzIHtcbiAgICBjb25zdCBpbmRleCA9IHZhbHVlID09PSBudWxsID8gLTEgOiB0aGlzLnZhbHVlcy5pbmRleE9mKHZhbHVlKTtcbiAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LnNlbGVjdEVsLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW11bGF0ZSBhIGNoYW5nZSBldmVudC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIG9ubHkgZnJvbSB0ZXN0cyB0byBzaW11bGF0ZSBhIGNoYW5nZSBldmVudC5cbiAgICovXG4gIHB1YmxpYyBzaW11bGF0ZUNoYW5nZV9fKCk6IHZvaWQge1xuICAgIHRoaXMuc2ltdWxhdGVDaGFuZ2VDYWxsYmFjaz8uKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLHNCQUdPO0FBUVAsdUJBQXlCO0FBQ3pCLDRCQUFvQztBQWE3QixNQUFNLCtCQUFrQywrQkFBK0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNNUgsSUFBVyxXQUE4QjtBQUN2QyxXQUFPLEtBQUssa0JBQWtCO0FBQUEsRUFDaEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLGNBQWdDO0FBQ3pDLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUttQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsU0FBYyxDQUFDO0FBQUEsRUFFMUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPRCxZQUFZLGFBQTBCO0FBQzNDLFVBQU07QUFDTixTQUFLLG9CQUFvQixJQUFJLGtDQUFrQixXQUFXO0FBQzFELG1EQUFvQixhQUFhLDBCQUFTLHNCQUFzQjtBQUFBLEVBQ2xFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNPLFVBQVUsT0FBVSxTQUF1QjtBQUNoRCxRQUFJLFFBQVEsS0FBSyxPQUFPLFFBQVEsS0FBSztBQUNyQyxRQUFJLFVBQVUsSUFBSTtBQUNoQixXQUFLLE9BQU8sS0FBSyxLQUFLO0FBQ3RCLGNBQVEsS0FBSyxPQUFPLFNBQVM7QUFBQSxJQUMvQjtBQUNBLFNBQUssa0JBQWtCLFVBQVUsT0FBTyxLQUFLLEdBQUcsT0FBTztBQUN2RCxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sV0FBVyxTQUErQjtBQUMvQyxlQUFXLENBQUMsT0FBTyxPQUFPLEtBQUssU0FBUztBQUN0QyxXQUFLLFVBQVUsT0FBTyxPQUFPO0FBQUEsSUFDL0I7QUFDQSxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLFdBQXFCO0FBQzFCLFdBQU8sS0FBSyxPQUFPLEtBQUssa0JBQWtCLFNBQVMsYUFBYSxLQUFLO0FBQUEsRUFDdkU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLFNBQVMsVUFBMkM7QUFDekQsVUFBTSxnQkFBZ0IsTUFBWTtBQUNoQyxlQUFTLEtBQUssU0FBUyxDQUFDO0FBQUEsSUFDMUI7QUFDQSxTQUFLLHlCQUF5QjtBQUM5QixTQUFLLGtCQUFrQixTQUFTLGFBQWE7QUFDN0MsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixZQUFZLFlBQTJCO0FBQ3JELFVBQU0sWUFBWSxVQUFVO0FBQzVCLFNBQUssa0JBQWtCLFlBQVksVUFBVTtBQUM3QyxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sU0FBUyxPQUF1QjtBQUNyQyxVQUFNLFFBQVEsVUFBVSxPQUFPLEtBQUssS0FBSyxPQUFPLFFBQVEsS0FBSztBQUM3RCxTQUFLLGtCQUFrQixTQUFTLGdCQUFnQjtBQUNoRCxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLG1CQUF5QjtBQUM5QixTQUFLLHlCQUF5QjtBQUFBLEVBQ2hDO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -16,7 +16,7 @@ import type { ValueComponentWithChangeTracking } from './value-component-with-ch
16
16
  *
17
17
  * In order to add the styles for the component, use {@link initPluginContext} in your plugin's `onload()` function.
18
18
  *
19
- * Alternatively, you can copy styles from {@link https://github.com/mnaoumov/obsidian-dev-utils/releases/latest/download/styles.css}.
19
+ * Alternatively, you can copy styles from {@link https://unpkg.com/@mnaoumov/obsidian-lib/dist/styles.css}.
20
20
  *
21
21
  * @typeParam T - The type of the value to select.
22
22
  */
@@ -243,4 +243,4 @@ class TypedMultipleDropdownComponent extends import_obsidian.ValueComponent {
243
243
  0 && (module.exports = {
244
244
  TypedMultipleDropdownComponent
245
245
  });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvdHlwZWQtbXVsdGlwbGUtZHJvcGRvd24tY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyBhIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhIG11bHRpLXNlbGVjdCBkcm9wZG93bi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvaHRtbC1lbGVtZW50JztcblxuaW1wb3J0IHsgVmFsdWVDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYGluaXRQbHVnaW5Db250ZXh0YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vc2V0dGluZy1leC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbmltcG9ydCB7IE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL211bHRpcGxlLWRyb3Bkb3duLWNvbXBvbmVudC50cyc7XG5cbi8qKlxuICogQSBtdWx0aS1zZWxlY3QgZHJvcGRvd24gY29tcG9uZW50LlxuICpcbiAqIFlvdSBjYW4gYWRkIHRoaXMgY29tcG9uZW50IHVzaW5nIHtAbGluayBTZXR0aW5nRXguYWRkVHlwZWRNdWx0aXBsZURyb3Bkb3dufS5cbiAqXG4gKiBJbiBvcmRlciB0byBhZGQgdGhlIHN0eWxlcyBmb3IgdGhlIGNvbXBvbmVudCwgdXNlIHtAbGluayBpbml0UGx1Z2luQ29udGV4dH0gaW4geW91ciBwbHVnaW4ncyBgb25sb2FkKClgIGZ1bmN0aW9uLlxuICpcbiAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY29weSBzdHlsZXMgZnJvbSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvc3R5bGVzLmNzc30uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHRvIHNlbGVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVkTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudDxUPiBleHRlbmRzIFZhbHVlQ29tcG9uZW50PHJlYWRvbmx5IFRbXT4gaW1wbGVtZW50cyBWYWxpZGF0b3JDb21wb25lbnQsIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPHJlYWRvbmx5IFRbXT4ge1xuICAvKipcbiAgICogQSBzZWxlY3QgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc2VsZWN0IGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNlbGVjdEVsKCk6IEhUTUxTZWxlY3RFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50LnNlbGVjdEVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgdmFsaWRhdG9yIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHZhbGlkYXRvciBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGdldCB2YWxpZGF0b3JFbCgpOiBWYWxpZGF0b3JFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RFbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5uZXIgbXVsdGlwbGUgZHJvcGRvd24gY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG11bHRpcGxlRHJvcGRvd25Db21wb25lbnQ6IE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHNlbGVjdGFibGUgb3B0aW9uIHZhbHVlcywgaW5kZXhlZCBieSB0aGVpciBwb3NpdGlvbiBpbiB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmFsdWVzOiBUW10gPSBbXTtcblxuICBwcml2YXRlIHNpbXVsYXRlQ2hhbmdlQ2FsbGJhY2s/OiAoKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG11bHRpcGxlIGRyb3Bkb3duIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lckVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgPSBuZXcgTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudChjb250YWluZXJFbCk7XG4gICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyhjb250YWluZXJFbCwgQ3NzQ2xhc3MuVHlwZWRNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIG9wdGlvbiB0byB0aGUgZHJvcGRvd24uXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uLlxuICAgKiBAcGFyYW0gZGlzcGxheSAtIFRoZSBkaXNwbGF5IHRleHQgb2YgdGhlIG9wdGlvbi5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBhZGRPcHRpb24odmFsdWU6IFQsIGRpc3BsYXk6IHN0cmluZyk6IHRoaXMge1xuICAgIGxldCBpbmRleCA9IHRoaXMudmFsdWVzLmluZGV4T2YodmFsdWUpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHRoaXMudmFsdWVzLnB1c2godmFsdWUpO1xuICAgICAgaW5kZXggPSB0aGlzLnZhbHVlcy5sZW5ndGggLSAxO1xuICAgIH1cbiAgICB0aGlzLm11bHRpcGxlRHJvcGRvd25Db21wb25lbnQuYWRkT3B0aW9uKFN0cmluZyhpbmRleCksIGRpc3BsYXkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgb3B0aW9ucyB0byB0aGUgZHJvcGRvd24uXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gYWRkLlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGFkZE9wdGlvbnMob3B0aW9uczogTWFwPFQsIHN0cmluZz4pOiB0aGlzIHtcbiAgICBmb3IgKGNvbnN0IFt2YWx1ZSwgZGlzcGxheV0gb2Ygb3B0aW9ucykge1xuICAgICAgdGhpcy5hZGRPcHRpb24odmFsdWUsIGRpc3BsYXkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiByZWFkb25seSBUW10ge1xuICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLm11bHRpcGxlRHJvcGRvd25Db21wb25lbnQuZ2V0VmFsdWUoKS5tYXAoKCRzdHJpbmcpID0+IHBhcnNlSW50KCRzdHJpbmcsIDEwKSk7XG4gICAgcmV0dXJuIGluZGljZXMubWFwKChpbmRleCkgPT4gdGhpcy52YWx1ZXNbaW5kZXhdKS5maWx0ZXIoKHZhbHVlKTogdmFsdWUgaXMgVCA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGNoYW5nZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGNoYW5nZWQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb25DaGFuZ2UoY2FsbGJhY2s6ICh2YWx1ZTogcmVhZG9ubHkgVFtdKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgY29uc3QgY2hhbmdlSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNhbGxiYWNrKHRoaXMuZ2V0VmFsdWUoKSk7XG4gICAgfTtcbiAgICB0aGlzLnNpbXVsYXRlQ2hhbmdlQ2FsbGJhY2sgPSBjaGFuZ2VIYW5kbGVyO1xuICAgIHRoaXMubXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudC5vbkNoYW5nZShjaGFuZ2VIYW5kbGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCAtIFRoZSBkaXNhYmxlZCBzdGF0ZSB0byBzZXQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgc2V0RGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbik6IHRoaXMge1xuICAgIHN1cGVyLnNldERpc2FibGVkKGlzRGlzYWJsZWQpO1xuICAgIHRoaXMubXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudC5zZXREaXNhYmxlZChpc0Rpc2FibGVkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiByZWFkb25seSBUW10pOiB0aGlzIHtcbiAgICBjb25zdCBpbmRpY2VzID0gdmFsdWUubWFwKCh2KSA9PiB0aGlzLnZhbHVlcy5pbmRleE9mKHYpKS5maWx0ZXIoKGluZGV4KSA9PiBpbmRleCAhPT0gLTEpO1xuICAgIHRoaXMubXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudC5zZXRWYWx1ZShpbmRpY2VzLm1hcChTdHJpbmcpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW11bGF0ZSBhIGNoYW5nZSBldmVudC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIG9ubHkgZnJvbSB0ZXN0cyB0byBzaW11bGF0ZSBhIGNoYW5nZSBldmVudC5cbiAgICovXG4gIHB1YmxpYyBzaW11bGF0ZUNoYW5nZV9fKCk6IHZvaWQge1xuICAgIHRoaXMuc2ltdWxhdGVDaGFuZ2VDYWxsYmFjaz8uKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvdHlwZWQtbXVsdGlwbGUtZHJvcGRvd24tY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyBhIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhIG11bHRpLXNlbGVjdCBkcm9wZG93bi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvaHRtbC1lbGVtZW50JztcblxuaW1wb3J0IHsgVmFsdWVDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYGluaXRQbHVnaW5Db250ZXh0YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vc2V0dGluZy1leC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbmltcG9ydCB7IE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL211bHRpcGxlLWRyb3Bkb3duLWNvbXBvbmVudC50cyc7XG5cbi8qKlxuICogQSBtdWx0aS1zZWxlY3QgZHJvcGRvd24gY29tcG9uZW50LlxuICpcbiAqIFlvdSBjYW4gYWRkIHRoaXMgY29tcG9uZW50IHVzaW5nIHtAbGluayBTZXR0aW5nRXguYWRkVHlwZWRNdWx0aXBsZURyb3Bkb3dufS5cbiAqXG4gKiBJbiBvcmRlciB0byBhZGQgdGhlIHN0eWxlcyBmb3IgdGhlIGNvbXBvbmVudCwgdXNlIHtAbGluayBpbml0UGx1Z2luQ29udGV4dH0gaW4geW91ciBwbHVnaW4ncyBgb25sb2FkKClgIGZ1bmN0aW9uLlxuICpcbiAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY29weSBzdHlsZXMgZnJvbSB7QGxpbmsgaHR0cHM6Ly91bnBrZy5jb20vQG1uYW91bW92L29ic2lkaWFuLWxpYi9kaXN0L3N0eWxlcy5jc3N9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSB0byBzZWxlY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQ8VD4gZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDxyZWFkb25seSBUW10+IGltcGxlbWVudHMgVmFsaWRhdG9yQ29tcG9uZW50LCBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxyZWFkb25seSBUW10+IHtcbiAgLyoqXG4gICAqIEEgc2VsZWN0IGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNlbGVjdCBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGdldCBzZWxlY3RFbCgpOiBIVE1MU2VsZWN0RWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudC5zZWxlY3RFbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHZhbGlkYXRvciBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB2YWxpZGF0b3IgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmFsaWRhdG9yRWwoKTogVmFsaWRhdG9yRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0RWw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlubmVyIG11bHRpcGxlIGRyb3Bkb3duIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50OiBNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBzZWxlY3RhYmxlIG9wdGlvbiB2YWx1ZXMsIGluZGV4ZWQgYnkgdGhlaXIgcG9zaXRpb24gaW4gdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlczogVFtdID0gW107XG5cbiAgcHJpdmF0ZSBzaW11bGF0ZUNoYW5nZUNhbGxiYWNrPzogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtdWx0aXBsZSBkcm9wZG93biBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJFbCAtIFRoZSBjb250YWluZXIgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50ID0gbmV3IE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQoY29udGFpbmVyRWwpO1xuICAgIGFkZFBsdWdpbkNzc0NsYXNzZXMoY29udGFpbmVyRWwsIENzc0NsYXNzLlR5cGVkTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBvcHRpb24gdG8gdGhlIGRyb3Bkb3duLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIG9wdGlvbi5cbiAgICogQHBhcmFtIGRpc3BsYXkgLSBUaGUgZGlzcGxheSB0ZXh0IG9mIHRoZSBvcHRpb24uXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYWRkT3B0aW9uKHZhbHVlOiBULCBkaXNwbGF5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnZhbHVlcy5pbmRleE9mKHZhbHVlKTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgIGluZGV4ID0gdGhpcy52YWx1ZXMubGVuZ3RoIC0gMTtcbiAgICB9XG4gICAgdGhpcy5tdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50LmFkZE9wdGlvbihTdHJpbmcoaW5kZXgpLCBkaXNwbGF5KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIG9wdGlvbnMgdG8gdGhlIGRyb3Bkb3duLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGFkZC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBhZGRPcHRpb25zKG9wdGlvbnM6IE1hcDxULCBzdHJpbmc+KTogdGhpcyB7XG4gICAgZm9yIChjb25zdCBbdmFsdWUsIGRpc3BsYXldIG9mIG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuYWRkT3B0aW9uKHZhbHVlLCBkaXNwbGF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFsdWUoKTogcmVhZG9ubHkgVFtdIHtcbiAgICBjb25zdCBpbmRpY2VzID0gdGhpcy5tdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50LmdldFZhbHVlKCkubWFwKCgkc3RyaW5nKSA9PiBwYXJzZUludCgkc3RyaW5nLCAxMCkpO1xuICAgIHJldHVybiBpbmRpY2VzLm1hcCgoaW5kZXgpID0+IHRoaXMudmFsdWVzW2luZGV4XSkuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIFQgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBjaGFuZ2VkLlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIG9uQ2hhbmdlKGNhbGxiYWNrOiAodmFsdWU6IHJlYWRvbmx5IFRbXSkgPT4gdm9pZCk6IHRoaXMge1xuICAgIGNvbnN0IGNoYW5nZUhhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjYWxsYmFjayh0aGlzLmdldFZhbHVlKCkpO1xuICAgIH07XG4gICAgdGhpcy5zaW11bGF0ZUNoYW5nZUNhbGxiYWNrID0gY2hhbmdlSGFuZGxlcjtcbiAgICB0aGlzLm11bHRpcGxlRHJvcGRvd25Db21wb25lbnQub25DaGFuZ2UoY2hhbmdlSGFuZGxlcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgLSBUaGUgZGlzYWJsZWQgc3RhdGUgdG8gc2V0LlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNldERpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICBzdXBlci5zZXREaXNhYmxlZChpc0Rpc2FibGVkKTtcbiAgICB0aGlzLm11bHRpcGxlRHJvcGRvd25Db21wb25lbnQuc2V0RGlzYWJsZWQoaXNEaXNhYmxlZCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogcmVhZG9ubHkgVFtdKTogdGhpcyB7XG4gICAgY29uc3QgaW5kaWNlcyA9IHZhbHVlLm1hcCgodikgPT4gdGhpcy52YWx1ZXMuaW5kZXhPZih2KSkuZmlsdGVyKChpbmRleCkgPT4gaW5kZXggIT09IC0xKTtcbiAgICB0aGlzLm11bHRpcGxlRHJvcGRvd25Db21wb25lbnQuc2V0VmFsdWUoaW5kaWNlcy5tYXAoU3RyaW5nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2ltdWxhdGUgYSBjaGFuZ2UgZXZlbnQuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBvbmx5IGZyb20gdGVzdHMgdG8gc2ltdWxhdGUgYSBjaGFuZ2UgZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgc2ltdWxhdGVDaGFuZ2VfXygpOiB2b2lkIHtcbiAgICB0aGlzLnNpbXVsYXRlQ2hhbmdlQ2FsbGJhY2s/LigpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -18,7 +18,7 @@ import { MultipleDropdownComponent } from './multiple-dropdown-component.cjs';
18
18
  *
19
19
  * In order to add the styles for the component, use {@link initPluginContext} in your plugin's `onload()` function.
20
20
  *
21
- * Alternatively, you can copy styles from {@link https://github.com/mnaoumov/obsidian-dev-utils/releases/latest/download/styles.css}.
21
+ * Alternatively, you can copy styles from {@link https://unpkg.com/@mnaoumov/obsidian-lib/dist/styles.css}.
22
22
  *
23
23
  * @typeParam T - The type of the value to select.
24
24
  */
@@ -143,4 +143,4 @@ class UrlComponent extends import_typed_text_component.TypedTextComponent {
143
143
  0 && (module.exports = {
144
144
  UrlComponent
145
145
  });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvdXJsLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgYSBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhbmQgZWRpdHMgYW4gdXJsLlxuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYGluaXRQbHVnaW5Db250ZXh0YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vc2V0dGluZy1leC50cyc7XG5pbXBvcnQgdHlwZSB7IFRleHRCYXNlZENvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1iYXNlZC1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBUeXBlZFRleHRDb21wb25lbnQgfSBmcm9tICcuL3R5cGVkLXRleHQtY29tcG9uZW50LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhbiB1cmwuXG4gKlxuICogWW91IGNhbiBhZGQgdGhpcyBjb21wb25lbnQgdXNpbmcge0BsaW5rIFNldHRpbmdFeC5hZGRVcmx9LlxuICpcbiAqIEluIG9yZGVyIHRvIGFkZCB0aGUgc3R5bGVzIGZvciB0aGUgY29tcG9uZW50LCB1c2Uge0BsaW5rIGluaXRQbHVnaW5Db250ZXh0fSBpbiB5b3VyIHBsdWdpbidzIGBvbmxvYWQoKWAgZnVuY3Rpb24uXG4gKlxuICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjb3B5IHN0eWxlcyBmcm9tIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXV0aWxzL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9zdHlsZXMuY3NzfS5cbiAqL1xuZXhwb3J0IGNsYXNzIFVybENvbXBvbmVudCBleHRlbmRzIFR5cGVkVGV4dENvbXBvbmVudDxzdHJpbmc+IGltcGxlbWVudHMgVGV4dEJhc2VkQ29tcG9uZW50PHN0cmluZz4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBVcmwgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBzdXBlcih7XG4gICAgICBjb250YWluZXJFbCxcbiAgICAgIGNzc0NsYXNzOiBDc3NDbGFzcy5VcmxDb21wb25lbnQsXG4gICAgICB0eXBlOiAndXJsJ1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtcHRpZXMgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBlbXB0eSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbXBvbmVudCBpcyBlbXB0eS5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBjb21wb25lbnQgaXMgZW1wdHksIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKSA9PT0gJyc7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsYWNlaG9sZGVyVmFsdWUgLSBUaGUgcGxhY2Vob2xkZXIgdmFsdWUgdG8gc2V0LlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHNldFBsYWNlaG9sZGVyVmFsdWUocGxhY2Vob2xkZXJWYWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy50ZXh0Q29tcG9uZW50LnNldFBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyVmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGFuIHVybC5cbiAgICpcbiAgICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIFRoZSB1cmwuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgdmFsdWVGcm9tU3RyaW5nKCRzdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuICRzdHJpbmc7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLHVCQUF5QjtBQUN6QixrQ0FBbUM7QUFXNUIsTUFBTSxxQkFBcUIsK0NBQWlFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTTFGLFlBQVksYUFBMEI7QUFDM0MsVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBLFVBQVUsMEJBQVM7QUFBQSxNQUNuQixNQUFNO0FBQUEsSUFDUixDQUFDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08sUUFBYztBQUNuQixTQUFLLFNBQVMsRUFBRTtBQUFBLEVBQ2xCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sVUFBbUI7QUFDeEIsV0FBTyxLQUFLLFNBQVMsTUFBTTtBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxvQkFBb0Isa0JBQWdDO0FBQ3pELFNBQUssY0FBYyxlQUFlLGdCQUFnQjtBQUNsRCxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGdCQUFnQixTQUF5QjtBQUN2RCxXQUFPO0FBQUEsRUFDVDtBQUNGOyIsIm5hbWVzIjpbXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvdXJsLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgYSBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhbmQgZWRpdHMgYW4gdXJsLlxuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYGluaXRQbHVnaW5Db250ZXh0YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vc2V0dGluZy1leC50cyc7XG5pbXBvcnQgdHlwZSB7IFRleHRCYXNlZENvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1iYXNlZC1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBUeXBlZFRleHRDb21wb25lbnQgfSBmcm9tICcuL3R5cGVkLXRleHQtY29tcG9uZW50LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhbiB1cmwuXG4gKlxuICogWW91IGNhbiBhZGQgdGhpcyBjb21wb25lbnQgdXNpbmcge0BsaW5rIFNldHRpbmdFeC5hZGRVcmx9LlxuICpcbiAqIEluIG9yZGVyIHRvIGFkZCB0aGUgc3R5bGVzIGZvciB0aGUgY29tcG9uZW50LCB1c2Uge0BsaW5rIGluaXRQbHVnaW5Db250ZXh0fSBpbiB5b3VyIHBsdWdpbidzIGBvbmxvYWQoKWAgZnVuY3Rpb24uXG4gKlxuICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjb3B5IHN0eWxlcyBmcm9tIHtAbGluayBodHRwczovL3VucGtnLmNvbS9AbW5hb3Vtb3Yvb2JzaWRpYW4tbGliL2Rpc3Qvc3R5bGVzLmNzc30uXG4gKi9cbmV4cG9ydCBjbGFzcyBVcmxDb21wb25lbnQgZXh0ZW5kcyBUeXBlZFRleHRDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIFRleHRCYXNlZENvbXBvbmVudDxzdHJpbmc+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgVXJsIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lckVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoe1xuICAgICAgY29udGFpbmVyRWwsXG4gICAgICBjc3NDbGFzczogQ3NzQ2xhc3MuVXJsQ29tcG9uZW50LFxuICAgICAgdHlwZTogJ3VybCdcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbXB0aWVzIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgZW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZSgnJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21wb25lbnQgaXMgZW1wdHkuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY29tcG9uZW50IGlzIGVtcHR5LCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkgPT09ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBsYWNlaG9sZGVyIHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwbGFjZWhvbGRlclZhbHVlIC0gVGhlIHBsYWNlaG9sZGVyIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBzZXRQbGFjZWhvbGRlclZhbHVlKHBsYWNlaG9sZGVyVmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudGV4dENvbXBvbmVudC5zZXRQbGFjZWhvbGRlcihwbGFjZWhvbGRlclZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHN0cmluZyB0byBhbiB1cmwuXG4gICAqXG4gICAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyBUaGUgdXJsLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHZhbHVlRnJvbVN0cmluZygkc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAkc3RyaW5nO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZQSx1QkFBeUI7QUFDekIsa0NBQW1DO0FBVzVCLE1BQU0scUJBQXFCLCtDQUFpRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU0xRixZQUFZLGFBQTBCO0FBQzNDLFVBQU07QUFBQSxNQUNKO0FBQUEsTUFDQSxVQUFVLDBCQUFTO0FBQUEsTUFDbkIsTUFBTTtBQUFBLElBQ1IsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLFFBQWM7QUFDbkIsU0FBSyxTQUFTLEVBQUU7QUFBQSxFQUNsQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLFVBQW1CO0FBQ3hCLFdBQU8sS0FBSyxTQUFTLE1BQU07QUFBQSxFQUM3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sb0JBQW9CLGtCQUFnQztBQUN6RCxTQUFLLGNBQWMsZUFBZSxnQkFBZ0I7QUFDbEQsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixnQkFBZ0IsU0FBeUI7QUFDdkQsV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLCJuYW1lcyI6W119
@@ -14,7 +14,7 @@ import { TypedTextComponent } from './typed-text-component.cjs';
14
14
  *
15
15
  * In order to add the styles for the component, use {@link initPluginContext} in your plugin's `onload()` function.
16
16
  *
17
- * Alternatively, you can copy styles from {@link https://github.com/mnaoumov/obsidian-dev-utils/releases/latest/download/styles.css}.
17
+ * Alternatively, you can copy styles from {@link https://unpkg.com/@mnaoumov/obsidian-lib/dist/styles.css}.
18
18
  */
19
19
  export declare class UrlComponent extends TypedTextComponent<string> implements TextBasedComponent<string> {
20
20
  /**
@@ -167,4 +167,4 @@ class WeekComponent extends import_typed_range_text_component.TypedRangeTextComp
167
167
  0 && (module.exports = {
168
168
  WeekComponent
169
169
  });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvd2Vlay1jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgd2Vlay5cbiAqL1xuXG5pbXBvcnQgeyBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmltcG9ydCB7IG1vbWVudCBhcyBtb21lbnRfIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIFdlIG5lZWQgdG8gaW1wb3J0IGBpbml0UGx1Z2luQ29udGV4dGAgdG8gdXNlIGl0IGluIHRoZSB0c2RvY3MuXG5pbXBvcnQgdHlwZSB7IGluaXRQbHVnaW5Db250ZXh0IH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYFNldHRpbmdFeGAgdG8gdXNlIGl0IGluIHRoZSB0c2RvY3MuXG5pbXBvcnQgdHlwZSB7IFNldHRpbmdFeCB9IGZyb20gJy4uL3NldHRpbmctZXgudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBUeXBlZFJhbmdlVGV4dENvbXBvbmVudCB9IGZyb20gJy4vdHlwZWQtcmFuZ2UtdGV4dC1jb21wb25lbnQudHMnO1xuXG5jb25zdCBtb21lbnQgPSBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AobW9tZW50Xyk7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVktW1ddV1cnO1xuXG4vKipcbiAqIEFuIElTTyA4NjAxIHdlZWsgZGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJc29XZWVrIHtcbiAgLyoqXG4gICAqIEFuIElTTyA4NjAxIHdlZWsgbnVtYmVyICgxLTUzKS5cbiAgICovXG4gIHdlZWtOdW1iZXI6IG51bWJlcjtcblxuICAvKipcbiAgICogQSB5ZWFyICgxLTk5OTkpLlxuICAgKi9cbiAgeWVhcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgV2Vlay5cbiAqXG4gKiBZb3UgY2FuIGFkZCB0aGlzIGNvbXBvbmVudCB1c2luZyB7QGxpbmsgU2V0dGluZ0V4LmFkZFdlZWt9LlxuICpcbiAqIEluIG9yZGVyIHRvIGFkZCB0aGUgc3R5bGVzIGZvciB0aGUgY29tcG9uZW50LCB1c2Uge0BsaW5rIGluaXRQbHVnaW5Db250ZXh0fSBpbiB5b3VyIHBsdWdpbidzIGBvbmxvYWQoKWAgZnVuY3Rpb24uXG4gKlxuICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjb3B5IHN0eWxlcyBmcm9tIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXV0aWxzL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9zdHlsZXMuY3NzfS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdlZWtDb21wb25lbnQgZXh0ZW5kcyBUeXBlZFJhbmdlVGV4dENvbXBvbmVudDxJc29XZWVrPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFdlZWsgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBzdXBlcih7XG4gICAgICBjb250YWluZXJFbCxcbiAgICAgIGNzc0NsYXNzOiBDc3NDbGFzcy5XZWVrQ29tcG9uZW50LFxuICAgICAgdHlwZTogJ3dlZWsnXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSBXZWVrLlxuICAgKlxuICAgKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMgVGhlIHdlZWsuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgdmFsdWVGcm9tU3RyaW5nKCRzdHJpbmc6IHN0cmluZyk6IElzb1dlZWsge1xuICAgIGNvbnN0IHBhcnNlZCA9IG1vbWVudCgkc3RyaW5nLCBEQVRFX0ZPUk1BVCk7XG5cbiAgICBpZiAoIXBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3ZWVrJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdlZWtOdW1iZXI6IHBhcnNlZC5pc29XZWVrKCksXG4gICAgICB5ZWFyOiBwYXJzZWQueWVhcigpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHdlZWsgdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB3ZWVrIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIFRoZSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgdmFsdWVUb1N0cmluZyh2YWx1ZTogSXNvV2Vlayk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudCgpLnllYXIodmFsdWUueWVhcikuaXNvV2Vlayh2YWx1ZS53ZWVrTnVtYmVyKTtcbiAgICByZXR1cm4gZGF0ZS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSwwQkFBNEM7QUFDNUMsc0JBQWtDO0FBT2xDLHVCQUF5QjtBQUN6Qix3Q0FBd0M7QUFFeEMsTUFBTSxhQUFTLGlEQUE0QixnQkFBQUEsTUFBTztBQUVsRCxNQUFNLGNBQWM7QUEwQmIsTUFBTSxzQkFBc0IsMERBQWlDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTTNELFlBQVksYUFBMEI7QUFDM0MsVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBLFVBQVUsMEJBQVM7QUFBQSxNQUNuQixNQUFNO0FBQUEsSUFDUixDQUFDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGdCQUFnQixTQUEwQjtBQUN4RCxVQUFNLFNBQVMsT0FBTyxTQUFTLFdBQVc7QUFFMUMsUUFBSSxDQUFDLE9BQU8sUUFBUSxHQUFHO0FBQ3JCLFlBQU0sSUFBSSxNQUFNLGNBQWM7QUFBQSxJQUNoQztBQUVBLFdBQU87QUFBQSxNQUNMLFlBQVksT0FBTyxRQUFRO0FBQUEsTUFDM0IsTUFBTSxPQUFPLEtBQUs7QUFBQSxJQUNwQjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixjQUFjLE9BQXdCO0FBQ3BELFVBQU0sT0FBTyxPQUFPLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxRQUFRLE1BQU0sVUFBVTtBQUMvRCxXQUFPLEtBQUssT0FBTyxXQUFXO0FBQUEsRUFDaEM7QUFDRjsiLCJuYW1lcyI6WyJtb21lbnRfIl19
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvd2Vlay1jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgd2Vlay5cbiAqL1xuXG5pbXBvcnQgeyBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmltcG9ydCB7IG1vbWVudCBhcyBtb21lbnRfIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIFdlIG5lZWQgdG8gaW1wb3J0IGBpbml0UGx1Z2luQ29udGV4dGAgdG8gdXNlIGl0IGluIHRoZSB0c2RvY3MuXG5pbXBvcnQgdHlwZSB7IGluaXRQbHVnaW5Db250ZXh0IH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYFNldHRpbmdFeGAgdG8gdXNlIGl0IGluIHRoZSB0c2RvY3MuXG5pbXBvcnQgdHlwZSB7IFNldHRpbmdFeCB9IGZyb20gJy4uL3NldHRpbmctZXgudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBUeXBlZFJhbmdlVGV4dENvbXBvbmVudCB9IGZyb20gJy4vdHlwZWQtcmFuZ2UtdGV4dC1jb21wb25lbnQudHMnO1xuXG5jb25zdCBtb21lbnQgPSBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AobW9tZW50Xyk7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVktW1ddV1cnO1xuXG4vKipcbiAqIEFuIElTTyA4NjAxIHdlZWsgZGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJc29XZWVrIHtcbiAgLyoqXG4gICAqIEFuIElTTyA4NjAxIHdlZWsgbnVtYmVyICgxLTUzKS5cbiAgICovXG4gIHdlZWtOdW1iZXI6IG51bWJlcjtcblxuICAvKipcbiAgICogQSB5ZWFyICgxLTk5OTkpLlxuICAgKi9cbiAgeWVhcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgV2Vlay5cbiAqXG4gKiBZb3UgY2FuIGFkZCB0aGlzIGNvbXBvbmVudCB1c2luZyB7QGxpbmsgU2V0dGluZ0V4LmFkZFdlZWt9LlxuICpcbiAqIEluIG9yZGVyIHRvIGFkZCB0aGUgc3R5bGVzIGZvciB0aGUgY29tcG9uZW50LCB1c2Uge0BsaW5rIGluaXRQbHVnaW5Db250ZXh0fSBpbiB5b3VyIHBsdWdpbidzIGBvbmxvYWQoKWAgZnVuY3Rpb24uXG4gKlxuICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjb3B5IHN0eWxlcyBmcm9tIHtAbGluayBodHRwczovL3VucGtnLmNvbS9AbW5hb3Vtb3Yvb2JzaWRpYW4tbGliL2Rpc3Qvc3R5bGVzLmNzc30uXG4gKi9cbmV4cG9ydCBjbGFzcyBXZWVrQ29tcG9uZW50IGV4dGVuZHMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQ8SXNvV2Vlaz4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBXZWVrIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lckVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoe1xuICAgICAgY29udGFpbmVyRWwsXG4gICAgICBjc3NDbGFzczogQ3NzQ2xhc3MuV2Vla0NvbXBvbmVudCxcbiAgICAgIHR5cGU6ICd3ZWVrJ1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgV2Vlay5cbiAgICpcbiAgICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIFRoZSB3ZWVrLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHZhbHVlRnJvbVN0cmluZygkc3RyaW5nOiBzdHJpbmcpOiBJc29XZWVrIHtcbiAgICBjb25zdCBwYXJzZWQgPSBtb21lbnQoJHN0cmluZywgREFURV9GT1JNQVQpO1xuXG4gICAgaWYgKCFwYXJzZWQuaXNWYWxpZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgd2VlaycpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB3ZWVrTnVtYmVyOiBwYXJzZWQuaXNvV2VlaygpLFxuICAgICAgeWVhcjogcGFyc2VkLnllYXIoKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSB3ZWVrIHRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgd2VlayB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyBUaGUgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHZhbHVlVG9TdHJpbmcodmFsdWU6IElzb1dlZWspOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoKS55ZWFyKHZhbHVlLnllYXIpLmlzb1dlZWsodmFsdWUud2Vla051bWJlcik7XG4gICAgcmV0dXJuIGRhdGUuZm9ybWF0KERBVEVfRk9STUFUKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsMEJBQTRDO0FBQzVDLHNCQUFrQztBQU9sQyx1QkFBeUI7QUFDekIsd0NBQXdDO0FBRXhDLE1BQU0sYUFBUyxpREFBNEIsZ0JBQUFBLE1BQU87QUFFbEQsTUFBTSxjQUFjO0FBMEJiLE1BQU0sc0JBQXNCLDBEQUFpQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU0zRCxZQUFZLGFBQTBCO0FBQzNDLFVBQU07QUFBQSxNQUNKO0FBQUEsTUFDQSxVQUFVLDBCQUFTO0FBQUEsTUFDbkIsTUFBTTtBQUFBLElBQ1IsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixnQkFBZ0IsU0FBMEI7QUFDeEQsVUFBTSxTQUFTLE9BQU8sU0FBUyxXQUFXO0FBRTFDLFFBQUksQ0FBQyxPQUFPLFFBQVEsR0FBRztBQUNyQixZQUFNLElBQUksTUFBTSxjQUFjO0FBQUEsSUFDaEM7QUFFQSxXQUFPO0FBQUEsTUFDTCxZQUFZLE9BQU8sUUFBUTtBQUFBLE1BQzNCLE1BQU0sT0FBTyxLQUFLO0FBQUEsSUFDcEI7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsY0FBYyxPQUF3QjtBQUNwRCxVQUFNLE9BQU8sT0FBTyxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsUUFBUSxNQUFNLFVBQVU7QUFDL0QsV0FBTyxLQUFLLE9BQU8sV0FBVztBQUFBLEVBQ2hDO0FBQ0Y7IiwibmFtZXMiOlsibW9tZW50XyJdfQ==
@@ -26,7 +26,7 @@ export interface IsoWeek {
26
26
  *
27
27
  * In order to add the styles for the component, use {@link initPluginContext} in your plugin's `onload()` function.
28
28
  *
29
- * Alternatively, you can copy styles from {@link https://github.com/mnaoumov/obsidian-dev-utils/releases/latest/download/styles.css}.
29
+ * Alternatively, you can copy styles from {@link https://unpkg.com/@mnaoumov/obsidian-lib/dist/styles.css}.
30
30
  */
31
31
  export declare class WeekComponent extends TypedRangeTextComponent<IsoWeek> {
32
32
  /**
@@ -643,7 +643,7 @@ async function invokeFileActionSafe(params) {
643
643
  return "invoked" /* Invoked */;
644
644
  } catch (error) {
645
645
  file = (0, import_file_system.getFileOrNull)({ app, pathOrFile: path });
646
- if (!file || file.deleted) {
646
+ if (!file || file.deleted || !await app.vault.adapter.exists(path)) {
647
647
  return "not-invoked" /* NotInvoked */;
648
648
  }
649
649
  throw error;
@@ -686,4 +686,4 @@ async function isExistingEmptyFolder(app, folder) {
686
686
  saveNote,
687
687
  trashSafe
688
688
  });
689
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YXVsdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgT2JzaWRpYW4gVmF1bHQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZXRyeU9wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3ZhbHVlLXByb3ZpZGVyJztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBMaXN0ZWRGaWxlc1xufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGFib3J0U2lnbmFsQW55IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5pbXBvcnQge1xuICBnZXREYXRhQWRhcHRlckV4LFxuICBwYXJlbnRGb2xkZXJQYXRoLFxuICBWaWV3VHlwZVxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBNYXJrZG93blZpZXcsXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW5Ob3RpY2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUge1xuICBQYXRoT3JBYnN0cmFjdEZpbGUsXG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VMb2NrQ29tcG9uZW50IH0gZnJvbSAnLi9yZXNvdXJjZS1sb2NrLnRzJztcblxuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dE5vdGljZSB9IGZyb20gJy4vYXN5bmMtd2l0aC1ub3RpY2UudHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHtcbiAgYXNGaWxlLFxuICBhc0ZvbGRlcixcbiAgRmlsZVN5c3RlbVR5cGUsXG4gIGdldEFic3RyYWN0RmlsZSxcbiAgZ2V0QWJzdHJhY3RGaWxlT3JOdWxsLFxuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGaWxlU3lzdGVtVHlwZSxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiB7QGxpbmsgY3JlYXRlRm9sZGVyU2FmZX0uXG4gKi9cbmV4cG9ydCBlbnVtIENyZWF0ZUZvbGRlclNhZmVSZXN1bHQge1xuICAvKipcbiAgICogVGhlIGZvbGRlciB3YXMgY3JlYXRlZC5cbiAgICovXG4gIENyZWF0ZWQgPSAnY3JlYXRlZCcsXG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgd2FzIG5vdCBjcmVhdGVkIGJlY2F1c2UgaXQgYWxyZWFkeSBleGlzdHMuXG4gICAqL1xuICBOb3RDcmVhdGVkID0gJ25vdC1jcmVhdGVkJ1xufVxuXG4vKipcbiAqIEEgYmVoYXZpb3IgZm9yIGhhbmRsaW5nIGVtcHR5IGZvbGRlcnMgZHVyaW5nIGNsZWFudXAuXG4gKi9cbmV4cG9ydCBlbnVtIEVtcHR5Rm9sZGVyQmVoYXZpb3Ige1xuICAvKipcbiAgICogRGVsZXRlIHRoZSBlbXB0eSBmb2xkZXIuXG4gICAqL1xuICBEZWxldGUgPSAnRGVsZXRlJyxcblxuICAvKipcbiAgICogRGVsZXRlIHRoZSBlbXB0eSBmb2xkZXIgYW5kIGFsbCBpdHMgZW1wdHkgcGFyZW50cy5cbiAgICovXG4gIERlbGV0ZVdpdGhFbXB0eVBhcmVudHMgPSAnRGVsZXRlV2l0aEVtcHR5UGFyZW50cycsXG5cbiAgLyoqXG4gICAqIEtlZXAgdGhlIGVtcHR5IGZvbGRlci5cbiAgICovXG4gIEtlZXAgPSAnS2VlcCdcbn1cblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIHtAbGluayBpbnZva2VGaWxlQWN0aW9uU2FmZX0uXG4gKi9cbmV4cG9ydCBlbnVtIEludm9rZUZpbGVBY3Rpb25TYWZlUmVzdWx0IHtcbiAgSW52b2tlZCA9ICdpbnZva2VkJyxcbiAgTm90SW52b2tlZCA9ICdub3QtaW52b2tlZCdcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2xlYW51cEVtcHR5Rm9sZGVyc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xlYW51cEVtcHR5Rm9sZGVyc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGJlaGF2aW9yIGRldGVybWluaW5nIGhvdyBlbXB0eSBmb2xkZXJzIGFyZSBjbGVhbmVkIHVwLlxuICAgKi9cbiAgcmVhZG9ubHkgZW1wdHlGb2xkZXJCZWhhdmlvcjogRW1wdHlGb2xkZXJCZWhhdmlvcjtcblxuICAvKipcbiAgICogVGhlIHBhdGhzIG9mIHRoZSBmb2xkZXJzIHRvIGNsZWFuIHVwIHdoZW4gZW1wdHkuXG4gICAqL1xuICByZWFkb25seSBmb2xkZXJQYXRoczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQXJndW1lbnRzIGZvciB7QGxpbmsgcHJvY2Vzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEFyZ3VtZW50cyB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBjb250ZW50IG9mIHRoZSBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjb3B5U2FmZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29weVNhZmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIG9yIGZvbGRlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IG5ld1BhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9sZCBwYXRoLCBmaWxlIG9yIGZvbGRlciB0byBjb3B5LiBBIGZvbGRlciBpcyBjb3BpZWQgd2l0aCBpdHMgd2hvbGUgc3VidHJlZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZFBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEFic3RyYWN0RmlsZVBhdGhTYWZlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgZmlsZSBvciBmb2xkZXIgdG8gZ2V0IGEgc2FmZSBwYXRoIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGZpbGUgc3lzdGVtIG9iamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEZpbGVTeXN0ZW1UeXBlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRPckNyZWF0ZUFic3RyYWN0RmlsZVNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldE9yQ3JlYXRlQWJzdHJhY3RGaWxlU2FmZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIGFic3RyYWN0IGZpbGUgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGFic3RyYWN0IGZpbGUgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEZpbGVTeXN0ZW1UeXBlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRTYWZlUmVuYW1lUGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0U2FmZVJlbmFtZVBhdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGFic3RyYWN0IGZpbGUgdG8uXG4gICAqL1xuICByZWFkb25seSBuZXdQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJlbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZFBhdGhPckFic3RyYWN0RmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbnZva2VXaXRoRmlsZVN5c3RlbUxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludm9rZVdpdGhGaWxlU3lzdGVtTG9ja1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBvZiB0aGUgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5ICRmdW5jdGlvbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jayBvZi5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGlzQ2hpbGRPclNlbGZ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzQ2hpbGRPclNlbGZQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2sgd2hldGhlciBpdCBpcyBhIGNoaWxkIG9yIHNlbGYuXG4gICAqL1xuICByZWFkb25seSBjaGlsZFBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjayB3aGV0aGVyIGl0IGlzIGEgcGFyZW50IG9yIHNlbGYuXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRQYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGlzQ2hpbGR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzQ2hpbGRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2sgd2hldGhlciBpdCBpcyBhIGNoaWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hpbGRQYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2sgd2hldGhlciBpdCBpcyBhIHBhcmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudFBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcHJvY2Vzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc09wdGlvbnMgZXh0ZW5kcyBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogUGx1Z2luIG5vdGljZSBjb21wb25lbnQgdXNlZCB0byBzaG93IHRoZSB0aW1lb3V0IG5vdGljZS4gV2hlbiBgbnVsbGAsIG5vIHRpbWVvdXQgbm90aWNlIGlzIHNob3duXG4gICAqIHJlZ2FyZGxlc3Mgb2Yge0BsaW5rIFByb2Nlc3NPcHRpb25zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlfTsgdGhlIHRpbWVvdXQgaXMgb25seSBsb2dnZWQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwgfCBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIEFuIHJlc291cmNlLWxvY2sgY29tcG9uZW50IHVzZWQgdG8gbG9jayB0aGUgZmlsZSdzIGVkaXRvciByZWFkLW9ubHkgZm9yIHRoZSBkdXJhdGlvbiBvZlxuICAgKiBwcm9jZXNzaW5nLiBUaGUgbG9jayBpcyByZWZlcmVuY2UtY291bnRlZCwgc28gaXQgY29tcG9zZXMgd2l0aCBhbnkgb3V0ZXIgb3BlcmF0aW9uLWxldmVsIGxvY2tcbiAgICogb24gdGhlIHNhbWUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlTG9ja0NvbXBvbmVudDogbnVsbCB8IFJlc291cmNlTG9ja0NvbXBvbmVudDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmYWlsIGlmIHRoZSBmaWxlIGlzIG1pc3Npbmcgb3IgZGVsZXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGYWlsT25NaXNzaW5nRmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcHJvY2Vzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1BhcmFtcyBleHRlbmRzIFByb2Nlc3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSwgdHlwaWNhbGx5IHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgdmF1bHQuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSB2YWx1ZSBwcm92aWRlciB0aGF0IHJldHVybnMgdGhlIG5ldyBjb250ZW50IGJhc2VkIG9uIHRoZSBvbGQgY29udGVudCBvZiB0aGUgZmlsZS5cbiAgICogSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb2xkIGNvbnRlbnQgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIG5ldyBjb250ZW50LlxuICAgKlxuICAgKiBBIGZ1bmN0aW9uIGhhcyB0aHJlZSBvdXRjb21lczpcbiAgICpcbiAgICogLSBgbnVsbGAg4oCUIHRoZSBuZXcgY29udGVudCBjYW5ub3QgYmUgcHJvZHVjZWQgWUVUOyB0aGUgcHJvY2VzcyBpcyByZXRyaWVkLlxuICAgKiAtIHRoZSBvbGQgY29udGVudCwgcmV0dXJuZWQgdW5jaGFuZ2VkIOKAlCB0aGVyZSBpcyBub3RoaW5nIHRvIHdyaXRlOyB0aGUgcHJvY2VzcyBjb21wbGV0ZXMgd2l0aG91dFxuICAgKiAgIHRvdWNoaW5nIHRoZSBmaWxlLiBVc2UgdGhpcyBmb3IgYSByZWZ1c2FsIHRoYXQgaXMgcGVybWFuZW50LCBhcyByZXR1cm5pbmcgYG51bGxgIGZvciBvbmUgcmV0cmllc1xuICAgKiAgIGZvcmV2ZXIgYW5kIGhvbGRzIHRoZSBvcGVyYXRpb24gb3Blbi5cbiAgICogLSBhbnkgb3RoZXIgc3RyaW5nIOKAlCB0aGUgY29udGVudCB0byB3cml0ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5ld0NvbnRlbnRQcm92aWRlcjogVmFsdWVQcm92aWRlcjxudWxsIHwgc3RyaW5nLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byBiZSBwcm9jZXNzZWQuIEl0IGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggb3IgYSBmaWxlIG9iamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlbmFtZVNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmFtZVNhZmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gICAqL1xuICByZWFkb25seSBuZXdQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJlbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZFBhdGhPckFic3RyYWN0RmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlO1xufVxuXG5pbnRlcmZhY2UgQ29weUZvbGRlclNhZmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgdG8gY29weS5cbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlcjogVEZvbGRlcjtcblxuICAvKipcbiAgICogVGhlIG5ldyBwYXRoIHRvIGNvcHkgdGhlIGZvbGRlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IG5ld1BhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEludm9rZUZpbGVBY3Rpb25TYWZlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gdGhlIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gcGVyZm9ybSB0aGUgYWN0aW9uIG9uLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFjdGlvbiBpcyBjb21wbGV0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVBY3Rpb246IChmaWxlOiBURmlsZSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byBwZXJmb3JtIHRoZSBhY3Rpb24gb24uXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIENsZWFucyB1cCBlbXB0eSBmb2xkZXJzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4ge0BsaW5rIEVtcHR5Rm9sZGVyQmVoYXZpb3J9LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgY2xlYW5pbmcgdXAgZW1wdHkgZm9sZGVycy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2xlYW51cCBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsZWFudXBFbXB0eUZvbGRlcnMocGFyYW1zOiBDbGVhbnVwRW1wdHlGb2xkZXJzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgZW1wdHlGb2xkZXJCZWhhdmlvcixcbiAgICBmb2xkZXJQYXRoc1xuICB9ID0gcGFyYW1zO1xuICBmb3IgKGNvbnN0IGZvbGRlclBhdGggb2YgZm9sZGVyUGF0aHMpIHtcbiAgICBzd2l0Y2ggKGVtcHR5Rm9sZGVyQmVoYXZpb3IpIHtcbiAgICAgIGNhc2UgRW1wdHlGb2xkZXJCZWhhdmlvci5EZWxldGU6IHtcbiAgICAgICAgYXdhaXQgZGVsZXRlRW1wdHlGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEVtcHR5Rm9sZGVyQmVoYXZpb3IuRGVsZXRlV2l0aEVtcHR5UGFyZW50czoge1xuICAgICAgICBhd2FpdCBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeShhcHAsIGZvbGRlclBhdGgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRW1wdHlGb2xkZXJCZWhhdmlvci5LZWVwOiB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBhc3NlcnROZXZlcihlbXB0eUZvbGRlckJlaGF2aW9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDb3BpZXMgYSBmaWxlIG9yIGZvbGRlciBzYWZlbHkgaW4gdGhlIHZhdWx0LiBBIGZvbGRlciBpcyBjb3BpZWQgd2l0aCBpdHMgd2hvbGUgc3VidHJlZSwgZW1wdHlcbiAqIHN1YmZvbGRlcnMgaW5jbHVkZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBjb3B5aW5nIHRoZSBmaWxlIG9yIGZvbGRlci5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBjb3B5LlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZGVzdGluYXRpb24gcmVzb2x2ZXMgaW5zaWRlIHRoZSBzb3VyY2UgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVNhZmUocGFyYW1zOiBDb3B5U2FmZVBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbmV3UGF0aCxcbiAgICBvbGRQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZTogb2xkUGF0aE9yRmlsZSB9KTtcblxuICBpZiAoYWJzdHJhY3RGaWxlLnBhdGggPT09IG5ld1BhdGgpIHtcbiAgICByZXR1cm4gbmV3UGF0aDtcbiAgfVxuXG4gIGlmICghaXNGaWxlKGFic3RyYWN0RmlsZSkpIHtcbiAgICByZXR1cm4gYXdhaXQgY29weUZvbGRlclNhZmUoeyBhcHAsIGZvbGRlcjogYXNGb2xkZXIoYWJzdHJhY3RGaWxlKSwgbmV3UGF0aCB9KTtcbiAgfVxuXG4gIGNvbnN0IG5ld0ZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKG5ld1BhdGgpO1xuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3Rm9sZGVyUGF0aCk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jb3B5KGFic3RyYWN0RmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHtAbGluayBDcmVhdGVGb2xkZXJTYWZlUmVzdWx0LkNyZWF0ZWR9IGlmIHRoZSBmb2xkZXIgd2FzXG4gKiBjcmVhdGVkLCBvciB7QGxpbmsgQ3JlYXRlRm9sZGVyU2FmZVJlc3VsdC5Ob3RDcmVhdGVkfSBpZiBpdCBhbHJlYWR5IGV4aXN0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVGb2xkZXJTYWZlUmVzdWx0PiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gQ3JlYXRlRm9sZGVyU2FmZVJlc3VsdC5Ob3RDcmVhdGVkO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKHBhdGgpO1xuICAgIHJldHVybiBDcmVhdGVGb2xkZXJTYWZlUmVzdWx0LkNyZWF0ZWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIENyZWF0ZUZvbGRlclNhZmVSZXN1bHQuQ3JlYXRlZDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdmF1bHQgd2l0aCBwYXJlbnQgZm9sZGVycyBpZiBuZWVkZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmaWxlIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBvcmFyeUZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IHBhdGggfSk7XG4gIGlmIChmaWxlKSB7XG4gICAgcmV0dXJuIG5vb3BBc3luYztcbiAgfVxuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wb3JhcnlGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBmaWxlID0gZ2V0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZTogcGF0aCB9KTtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgdHJhc2hTYWZlKGFwcCwgZmlsZSk7XG4gICAgfVxuICAgIGF3YWl0IGZvbGRlckNsZWFudXAoKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZvbGRlciBpbiB0aGUgdmF1bHQgd2l0aCBwYXJlbnQgZm9sZGVycyBpZiBuZWVkZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIGRlbGV0ZSB0aGUgdGVtcG9yYXJ5IGZvbGRlciBhbmQgYWxsIGl0cyBjcmVhdGVkIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZW1wb3JhcnlGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKHsgYXBwLCBwYXRoT3JGb2xkZXI6IHBhdGggfSk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBvcmFyeUZvbGRlcihhcHAsIGZvbGRlclBhdGgpO1xuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wb3JhcnlGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgcGF0aCk7XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBmb2xkZXIgPSBnZXRGb2xkZXIoeyBhcHAsIHBhdGhPckZvbGRlcjogcGF0aCB9KTtcbiAgICBpZiAoIWZvbGRlci5kZWxldGVkKSB7XG4gICAgICBhd2FpdCB0cmFzaFNhZmUoYXBwLCBmb2xkZXIpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlcyBhbiBlbXB0eSBmb2xkZXIuXG4gKlxuICogQSBmb2xkZXIgdGhlIHZhdWx0IGluZGV4IHN0aWxsIGhvbGRzIGJ1dCB0aGUgZGlzayBoYXMgYWxyZWFkeSBsb3N0IGlzIG5vdCBlbXB0eTogaXQgaXMgbm90aGluZyB0byBkZWxldGUsIHNvIGl0XG4gKiBpcyBsZWZ0IGFsb25lIHJhdGhlciB0aGFuIGhhbmRlZCB0byB0aGUgdHJhc2ggYXMgYSBtaXNzaW5nIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgZm9sZGVyIHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZm9sZGVyIGlzIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVFbXB0eUZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBudWxsIHwgUGF0aE9yRm9sZGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbCh7IGFwcCwgcGF0aE9yRm9sZGVyIH0pO1xuICBpZiAoIWZvbGRlciB8fCAhYXdhaXQgaXNFeGlzdGluZ0VtcHR5Rm9sZGVyKGFwcCwgZm9sZGVyKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBhd2FpdCB0cmFzaFNhZmUoYXBwLCBmb2xkZXIpO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgZW1wdHkgZm9sZGVyIGhpZXJhcmNoeSBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiBmb2xkZXIuXG4gKlxuICogVGhlIHdhbGsgc3RvcHMgYXQgdGhlIGZpcnN0IGZvbGRlciB0aGF0IGlzIG5vdCBlbXB0eSBvciBubyBsb25nZXIgZXhpc3RzIG9uIGRpc2suXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgZm9sZGVyIHRvIHN0YXJ0IHJlbW92aW5nIGVtcHR5IGhpZXJhcmNoeSBmcm9tLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBlbXB0eSBoaWVyYXJjaHkgaXMgZGVsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5KGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IG51bGwgfCBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbCh7IGFwcCwgcGF0aE9yRm9sZGVyIH0pO1xuXG4gIHdoaWxlIChmb2xkZXIpIHtcbiAgICBpZiAoIWF3YWl0IGlzRXhpc3RpbmdFbXB0eUZvbGRlcihhcHAsIGZvbGRlcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gZm9sZGVyLnBhcmVudDtcbiAgICBhd2FpdCBkZWxldGVFbXB0eUZvbGRlcihhcHAsIGZvbGRlcik7XG4gICAgZm9sZGVyID0gcGFyZW50O1xuICB9XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcGF0aCBmb3IgYSBmaWxlIG9yIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGdldHRpbmcgYSBzYWZlIHBhdGguXG4gKiBAcmV0dXJucyBUaGUgc2FmZSBwYXRoIGZvciB0aGUgZmlsZSBvciBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEZpbGVQYXRoU2FmZShwYXJhbXM6IEdldEFic3RyYWN0RmlsZVBhdGhTYWZlUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBwYXRoLFxuICAgIHR5cGVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYWJzdHJhY3RGaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKHsgYXBwLCBwYXRoT3JGaWxlOiBwYXRoIH0pO1xuXG4gIHJldHVybiBhYnN0cmFjdEZpbGUgJiYgZ2V0RmlsZVN5c3RlbVR5cGUoYWJzdHJhY3RGaWxlKSA9PT0gdHlwZSA/IHBhdGggOiBnZXRBdmFpbGFibGVQYXRoKGFwcCwgcGF0aCk7XG59XG5cbi8qKlxuICogR2V0cyBhbiBhdmFpbGFibGUgcGF0aCBmb3IgYSBmaWxlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIGF2YWlsYWJsZSBwYXRoIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGgoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IGV4dG5hbWUocGF0aCk7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKGRpcm5hbWUocGF0aCksIGJhc2VuYW1lKHBhdGgsIGV4dGVuc2lvbikpLCBleHRlbnNpb24uc2xpY2UoMSkpO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIGZpbGUgcGF0aCBmb3IgYSBmaWxlIG9yIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSBvciBmb2xkZXIgdG8gZ2V0IGEgc2FmZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBzYWZlIHBhdGggZm9yIHRoZSBmaWxlIG9yIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQYXRoU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldEFic3RyYWN0RmlsZVBhdGhTYWZlKHsgYXBwLCBwYXRoLCB0eXBlOiBGaWxlU3lzdGVtVHlwZS5GaWxlIH0pO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIGZvbGRlciBwYXRoIGZvciBhIGZpbGUgb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlciB0byBnZXQgYSBzYWZlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIHNhZmUgcGF0aCBmb3IgdGhlIGZpbGUgb3IgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyUGF0aFNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRBYnN0cmFjdEZpbGVQYXRoU2FmZSh7IGFwcCwgcGF0aCwgdHlwZTogRmlsZVN5c3RlbVR5cGUuRm9sZGVyIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBmcm9tIHRoZSBhcHAncyB2YXVsdCBhbmQgc29ydHMgdGhlbSBhbHBoYWJldGljYWxseSBieSB0aGVpciBmaWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlc1NvcnRlZChhcHA6IEFwcCk6IFRGaWxlW10ge1xuICByZXR1cm4gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKS5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgaW4gdGhlIHZhdWx0IHNvcnRlZCBieSBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROb3RlRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRBbGxMb2FkZWRGaWxlcygpLmZpbHRlcigoZmlsZSkgPT4gaXNGaWxlKGZpbGUpICYmIGlzTm90ZShmaWxlKSkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSkgYXMgVEZpbGVbXTtcbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYW4gYWJzdHJhY3QgZmlsZSBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIHJldHVybmVkLlxuICogSWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBnZXR0aW5nIG9yIGNyZWF0aW5nIHRoZSBhYnN0cmFjdCBmaWxlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYWJzdHJhY3QgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlQWJzdHJhY3RGaWxlU2FmZShwYXJhbXM6IEdldE9yQ3JlYXRlQWJzdHJhY3RGaWxlU2FmZVBhcmFtcyk6IFByb21pc2U8VEFic3RyYWN0RmlsZT4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIHR5cGVcbiAgfSA9IHBhcmFtcztcbiAgbGV0IHsgcGF0aCB9ID0gcGFyYW1zO1xuICBwYXRoID0gZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmUoeyBhcHAsIHBhdGgsIHR5cGUgfSk7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogcGF0aCB9KTtcbiAgaWYgKGFic3RyYWN0RmlsZSkge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGU7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZpbGVTeXN0ZW1UeXBlLkZpbGU6IHtcbiAgICAgIC8vIGB2YXVsdC5jcmVhdGVgIGRvZXMgbm90IGNyZWF0ZSBtaXNzaW5nIHBhcmVudCBmb2xkZXJzOyB0aGUgYWRhcHRlciByZWZ1c2VzIHRoZSB3cml0ZS5cbiAgICAgIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcbiAgICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKHBhdGgsICcnKTtcbiAgICB9XG4gICAgY2FzZSBGaWxlU3lzdGVtVHlwZS5Gb2xkZXI6IHtcbiAgICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKHBhdGgpO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICBhc3NlcnROZXZlcih0eXBlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZVNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZpbGU+IHtcbiAgcmV0dXJuIGFzRmlsZShhd2FpdCBnZXRPckNyZWF0ZUFic3RyYWN0RmlsZVNhZmUoeyBhcHAsIHBhdGgsIHR5cGU6IEZpbGVTeXN0ZW1UeXBlLkZpbGUgfSkpO1xufVxuXG4vKipcbiAqIEdldHMgb3IgY3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIElmIHRoZSBmb2xkZXIgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZm9sZGVyIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQgYW5kIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURm9sZGVyPiB7XG4gIHJldHVybiBhc0ZvbGRlcihhd2FpdCBnZXRPckNyZWF0ZUFic3RyYWN0RmlsZVNhZmUoeyBhcHAsIHBhdGgsIHR5cGU6IEZpbGVTeXN0ZW1UeXBlLkZvbGRlciB9KSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcmVuYW1lIHBhdGggZm9yIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGdldHRpbmcgYSBzYWZlIHJlbmFtZSBwYXRoLlxuICogQHJldHVybnMgVGhlIHNhZmUgcmVuYW1lIHBhdGggZm9yIHRoZSBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2FmZVJlbmFtZVBhdGgocGFyYW1zOiBHZXRTYWZlUmVuYW1lUGF0aFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgYXBwLCBvbGRQYXRoT3JBYnN0cmFjdEZpbGUgfSA9IHBhcmFtcztcbiAgbGV0IHsgbmV3UGF0aCB9ID0gcGFyYW1zO1xuICBjb25zdCBvbGRQYXRoID0gZ2V0UGF0aChhcHAsIG9sZFBhdGhPckFic3RyYWN0RmlsZSk7XG5cbiAgaWYgKGdldERhdGFBZGFwdGVyRXgoYXBwKS5pbnNlbnNpdGl2ZSkge1xuICAgIGxldCBmb2xkZXJQYXRoID0gZGlybmFtZShuZXdQYXRoKTtcbiAgICBsZXQgbm9uRXhpc3RpbmdQYXRoID0gYmFzZW5hbWUobmV3UGF0aCk7XG4gICAgbGV0IGZvbGRlcjogbnVsbCB8IFRGb2xkZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gVGhlcmUgaXMgbm8gZWxlZ2FudCB3YXkgdG8gcGVyZm9ybSBpbmZpbml0ZSBsb29wcy5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKHsgYXBwLCBpc0Nhc2VJbnNlbnNpdGl2ZTogdHJ1ZSwgcGF0aE9yRm9sZGVyOiBmb2xkZXJQYXRoIH0pO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5vbkV4aXN0aW5nUGF0aCA9IGpvaW4oYmFzZW5hbWUoZm9sZGVyUGF0aCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gICAgICBmb2xkZXJQYXRoID0gZGlybmFtZShmb2xkZXJQYXRoKTtcbiAgICB9XG4gICAgbmV3UGF0aCA9IGpvaW4oZm9sZGVyLmdldFBhcmVudFByZWZpeCgpLCBub25FeGlzdGluZ1BhdGgpO1xuICB9XG5cbiAgcmV0dXJuIG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpID8gbmV3UGF0aCA6IGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcbn1cblxuLyoqXG4gKiBJbnZva2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jay5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGludm9raW5nIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBmaWxlIHN5c3RlbSBsb2NrLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBpbnZva2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKHBhcmFtczogSW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICAkZnVuY3Rpb24sXG4gICAgYXBwLFxuICAgIHBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUgfSk7XG4gIGF3YWl0IGFwcC52YXVsdC5wcm9jZXNzKGZpbGUsIChjb250ZW50KSA9PiB7XG4gICAgJGZ1bmN0aW9uKGNvbnRlbnQpO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGNoZWNraW5nIHdoZXRoZXIgdGhlIGNoaWxkIHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9mIHRoZSBwYXJlbnQgcGF0aCBvciBmaWxlLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgY2hpbGQgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb2YgdGhlIHBhcmVudCBwYXRoIG9yIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NoaWxkKHBhcmFtczogSXNDaGlsZFBhcmFtcyk6IGJvb2xlYW4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGNoaWxkUGF0aE9yRmlsZSxcbiAgICBwYXJlbnRQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGNoaWxkUGF0aCA9IGdldFBhdGgoYXBwLCBjaGlsZFBhdGhPckZpbGUpO1xuICBjb25zdCBwYXJlbnRQYXRoID0gZ2V0UGF0aChhcHAsIHBhcmVudFBhdGhPckZpbGUpO1xuXG4gIHJldHVybiBjaGlsZFBhdGggIT09IHBhcmVudFBhdGggJiYgKHBhcmVudFBhdGggPT09ICcvJyB8fCBjaGlsZFBhdGguc3RhcnRzV2l0aChgJHtwYXJlbnRQYXRofS9gKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb3Igc2VsZiBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGNoZWNraW5nIHdoZXRoZXIgdGhlIGNoaWxkIHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9yIHNlbGYgb2YgdGhlIHBhcmVudCBwYXRoIG9yIGZpbGUuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjaGlsZCBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvciBzZWxmIG9mIHRoZSBwYXJlbnQgcGF0aCBvciBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDaGlsZE9yU2VsZihwYXJhbXM6IElzQ2hpbGRPclNlbGZQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBjaGlsZFBhdGhPckZpbGUsXG4gICAgcGFyZW50UGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBjaGlsZFBhdGggPSBnZXRQYXRoKGFwcCwgY2hpbGRQYXRoT3JGaWxlKTtcbiAgY29uc3QgcGFyZW50UGF0aCA9IGdldFBhdGgoYXBwLCBwYXJlbnRQYXRoT3JGaWxlKTtcbiAgcmV0dXJuIGNoaWxkUGF0aCA9PT0gcGFyZW50UGF0aCB8fCBpc0NoaWxkKHsgYXBwLCBjaGlsZFBhdGhPckZpbGUsIHBhcmVudFBhdGhPckZpbGUgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZm9sZGVyIGlzIGVtcHR5LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0VtcHR5Rm9sZGVyKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBsaXN0ZWRGaWxlcyA9IGF3YWl0IGxpc3RTYWZlKGFwcCwgZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcikpO1xuICByZXR1cm4gbGlzdGVkRmlsZXMuZmlsZXMubGVuZ3RoID09PSAwICYmIGxpc3RlZEZpbGVzLmZvbGRlcnMubGVuZ3RoID09PSAwO1xufVxuXG4vKipcbiAqIFNhZmVseSBsaXN0cyB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgYXQgdGhlIHNwZWNpZmllZCBwYXRoIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byBsaXN0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIHtAbGluayBMaXN0ZWRGaWxlc30gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxpc3RlZCBmaWxlcyBhbmQgZm9sZGVycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RTYWZlKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8TGlzdGVkRmlsZXM+IHtcbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpO1xuICBjb25zdCBFTVBUWSA9IHsgZmlsZXM6IFtdLCBmb2xkZXJzOiBbXSB9O1xuXG4gIGNvbnN0IHBhdGhTdGF0cyA9IGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLnN0YXQocGF0aCk7XG4gIGlmIChwYXRoU3RhdHM/LnR5cGUgIT09ICdmb2xkZXInKSB7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubGlzdChwYXRoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGZpbGUgd2l0aCByZXRyeSBsb2dpYywgdXBkYXRpbmcgaXRzIGNvbnRlbnQgYmFzZWQgb24gYSBwcm92aWRlZCB2YWx1ZSBvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHByb2Nlc3NpbmcgdGhlIGZpbGUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICpcbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJvY2VzcyBmYWlscyBhZnRlciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiByZXRyaWVzIG9yIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzKHBhcmFtczogUHJvY2Vzc1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5ld0NvbnRlbnRQcm92aWRlcixcbiAgICBwYXRoT3JGaWxlLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgICByZXNvdXJjZUxvY2tDb21wb25lbnRcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlOiB0cnVlLFxuICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiB0cnVlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIERlZmF1bHQgdmFsdWUuXG4gICAgdGltZW91dEluTWlsbGlzZWNvbmRzOiA1MDBcbiAgfTtcbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ucGFyYW1zIH07XG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCwgYWJvcnRDb250cm9sbGVyLnNpZ25hbCk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgLy8gUmVmZXJlbmNlLWNvdW50ZWQgbG9jazsgY29tcG9zZXMgd2l0aCBhbnkgb3V0ZXIgbG9jay4gUmVsZWFzZWQgYXQgZnVuY3Rpb24gc2NvcGUgZXhpdC5cbiAgdXNpbmcgX2xvY2sgPSByZXNvdXJjZUxvY2tDb21wb25lbnQ/LmxvY2tGb3JQYXRoKHsgb3BlcmF0aW9uTmFtZTogJ1Byb2Nlc3Mgbm90ZScsIHBhdGhPckZpbGUgfSk7XG5cbiAgYXdhaXQgcmV0cnlXaXRoVGltZW91dE5vdGljZSh7XG4gICAgYXN5bmMgb3BlcmF0aW9uRnVuY3Rpb24oYWJvcnRTaWduYWwpIHtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgICAgaWYgKG9sZENvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHNob3VsZFRyZWF0TWlzc2luZ0ZpbGVBc1N1Y2Nlc3MoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Q29udGVudCA9IGF3YWl0IHJlc29sdmVWYWx1ZShuZXdDb250ZW50UHJvdmlkZXIsIHsgYWJvcnRTaWduYWwsIGNvbnRlbnQ6IG9sZENvbnRlbnQgfSk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICBpZiAobmV3Q29udGVudCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBwcm92aWRlciBoYW5kZWQgYmFjayBleGFjdGx5IHdoYXQgaXQgd2FzIGdpdmVuOiB0aGVyZSBpcyBub3RoaW5nIHRvIHdyaXRlLCBhbmQgdGhlIG9wZXJhdGlvblxuICAgICAgLy8gaXMgY29tcGxldGUuIERpc3RpbmN0IGZyb20gYG51bGxgLCB3aGljaCBhc2tzIGZvciBhIHJldHJ5IOKAlCBhIHByb3ZpZGVyIHdob3NlIHJlZnVzYWwgdG8gcmV3cml0ZSBpc1xuICAgICAgLy8gcGVybWFuZW50IChzZWUgYGFwcGx5Q2FudmFzQ2hhbmdlc2ApIHdvdWxkIG90aGVyd2lzZSBzcGluIGZvcmV2ZXIgYW5kIGhvbGQgdGhlIHNoYXJlZCBvcGVyYXRpb25cbiAgICAgIC8vIHF1ZXVlIG9wZW4gYmVoaW5kIGl0LlxuICAgICAgaWYgKG5ld0NvbnRlbnQgPT09IG9sZENvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGxldCBpc1N1Y2Nlc3MgPSB0cnVlO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW52b2tlRmlsZUFjdGlvblNhZmUoe1xuICAgICAgICBhcHAsXG4gICAgICAgIGFzeW5jIGZpbGVBY3Rpb24oZmlsZSkge1xuICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgICAgYXdhaXQgYXBwLnZhdWx0LnByb2Nlc3MoZmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgICAgICBpZiAoY29udGVudCAhPT0gb2xkQ29udGVudCkge1xuICAgICAgICAgICAgICBnZXRPYnNpZGlhbkxpYkRlYnVnZ2VyKCdWYXVsdDpwcm9jZXNzJykoJ0NvbnRlbnQgaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uJywge1xuICAgICAgICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgICAgICAgIHBhdGg6IGZpbGUucGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHBhdGhPckZpbGVcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdC5Ob3RJbnZva2VkID8gc2hvdWxkVHJlYXRNaXNzaW5nRmlsZUFzU3VjY2VzcygpIDogaXNTdWNjZXNzO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9jb25zaXN0ZW50LWZ1bmN0aW9uLXNjb3BpbmcgLS0gQ2xvc2VzIG92ZXIgYGZ1bGxPcHRpb25zYCBhbmQgYHBhdGhgIGZyb20gdGhlIGVuY2xvc2luZyBzY29wZSwgc28gaXQgY2Fubm90IGJlIGhvaXN0ZWQuXG4gICAgICBmdW5jdGlvbiBzaG91bGRUcmVhdE1pc3NpbmdGaWxlQXNTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgJyR7cGF0aH0nIG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnZhdWx0LnByb2Nlc3NGaWxlLCB7IGZpbGVQYXRoOiBwYXRoIH0pLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgICByZXRyeU9wdGlvbnM6IGZ1bGxPcHRpb25zLFxuICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBmdWxsT3B0aW9ucy5zaG91bGRTaG93VGltZW91dE5vdGljZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY29udGVudCBvZiBhIGZpbGUgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEl0IGNvdmVycyB0aGUgY2FzZSB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyB0aGUgcmVhZGluZy5cbiAqXG4gKiBUaGlzIGlzIE5PVCBhIHB1cmUgcmVhZDogaXQgY2FsbHMge0BsaW5rIHNhdmVOb3RlfSBmaXJzdCwgd2hpY2ggc2F2ZXMgYW55IG9wZW4gZWRpdG9yIHZpZXcgb2YgdGhlXG4gKiBub3RlIHRoYXQgaGFzIHVuc2F2ZWQgY2hhbmdlcywgc28gdGhlIGNvbnRlbnQgaXQgcmV0dXJucyBpcyB3aGF0IHRoZSB1c2VyIHNlZXMuIERvIG5vdCBjYWxsIGl0IGZyb21cbiAqIGFuIGF1dG9tYXRpYyB0cmlnZ2VyIHRoYXQgb25seSBkZWNpZGVzIHdoZXRoZXIgdG8gYWN0LiBTZWUgYGdldENhY2hlU2FmZWAgaW5cbiAqIGBvYnNpZGlhbi1kZXYtdXRpbHMvb2JzaWRpYW4vbWV0YWRhdGEtY2FjaGVgIGZvciB3aHkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byByZWFkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgY29udGVudCBvZiB0aGUgZmlsZSBvciBgbnVsbGAgaWYgdGhlIGZpbGUgaXMgbWlzc2luZyBvciBkZWxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgbGV0IGNvbnRlbnQ6IG51bGwgfCBzdHJpbmcgPSBudWxsO1xuICBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZSh7XG4gICAgYXBwLFxuICAgIGFzeW5jIGZpbGVBY3Rpb24oZmlsZSkge1xuICAgICAgYXdhaXQgc2F2ZU5vdGUoYXBwLCBmaWxlKTtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICB9LFxuICAgIHBhdGhPckZpbGVcbiAgfSk7XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIFJlbmFtZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgdmF1bHQuXG4gKiBJZiB0aGUgbmV3IHBhdGggYWxyZWFkeSBleGlzdHMsIHRoZSBmaWxlIHdpbGwgYmUgcmVuYW1lZCB0byBhbiBhdmFpbGFibGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmFtaW5nIHRoZSBmaWxlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5hbWVTYWZlKHBhcmFtczogUmVuYW1lU2FmZVBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbmV3UGF0aCxcbiAgICBvbGRQYXRoT3JBYnN0cmFjdEZpbGVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3Qgb2xkQWJzdHJhY3RGaWxlID0gZ2V0QWJzdHJhY3RGaWxlKHsgYXBwLCBwYXRoT3JGaWxlOiBvbGRQYXRoT3JBYnN0cmFjdEZpbGUgfSk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKHsgYXBwLCBuZXdQYXRoLCBvbGRQYXRoT3JBYnN0cmFjdEZpbGUgfSk7XG5cbiAgaWYgKG9sZEFic3RyYWN0RmlsZS5wYXRoLnRvTG93ZXJDYXNlKCkgPT09IG5ld0F2YWlsYWJsZVBhdGgudG9Mb3dlckNhc2UoKSkge1xuICAgIGlmIChvbGRBYnN0cmFjdEZpbGUucGF0aCAhPT0gbmV3UGF0aCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnJlbmFtZUZpbGUob2xkQWJzdHJhY3RGaWxlLCBuZXdBdmFpbGFibGVQYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG4gIH1cblxuICBjb25zdCBuZXdGb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChuZXdBdmFpbGFibGVQYXRoKTtcbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIG5ld0ZvbGRlclBhdGgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnJlbmFtZUZpbGUob2xkQWJzdHJhY3RGaWxlLCBuZXdBdmFpbGFibGVQYXRoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkgfHwgYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhvbGRBYnN0cmFjdEZpbGUucGF0aCkpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xufVxuXG4vKipcbiAqIFNhdmVzIHRoZSBzcGVjaWZpZWQgbm90ZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIENhbGxzIGB2aWV3LnNhdmUoKWAgb24gZXZlcnkgb3BlbiBtYXJrZG93biB2aWV3IG9mIHRoZSBub3RlIHRoYXQgaGFzIHVuc2F2ZWQgY2hhbmdlcy4gVGhpcyBpcyBhXG4gKiB3cml0ZSwgYW5kIHNldmVyYWwgaGVscGVycyB3aG9zZSBuYW1lcyByZWFkIGFzIHJlYWRzIGNhbGwgaXQ6IHtAbGluayByZWFkU2FmZX0sIGFuZCBgZ2V0Q2FjaGVTYWZlYCxcbiAqIGBnZXRGcm9udG1hdHRlclNhZmVgIGFuZCBgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmVgIGluIGBvYnNpZGlhbi1kZXYtdXRpbHMvb2JzaWRpYW4vbWV0YWRhdGEtY2FjaGVgLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgbm90ZSB0byBiZSBzYXZlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbm90ZSBpcyBzYXZlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVOb3RlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuXG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoICYmIGxlYWYudmlldy5kaXJ0eSkge1xuICAgICAgYXdhaXQgbGVhZi52aWV3LnNhdmUoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUcmFzaGVzIGFuIGFic3RyYWN0IGZpbGUgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gdHJhc2guXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgaXMgdHJhc2hlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYXNoU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGUgfSk7XG4gIGlmICghZmlsZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmaWxlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhmaWxlLnBhdGgpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBnZXRPYnNpZGlhbkxpYkRlYnVnZ2VyKCdWYXVsdDp0cmFzaFNhZmUnKShgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJhc2hpbmcgJHtmaWxlLnBhdGh9LCBidXQgdGhlIGZpbGUgbm8gbG9uZ2VyIGV4aXN0cy5gLCB7IGVycm9yLCBwYXRoOiBmaWxlLnBhdGggfSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY29weUZvbGRlclNhZmUocGFyYW1zOiBDb3B5Rm9sZGVyU2FmZVBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgZm9sZGVyLFxuICAgIG5ld1BhdGhcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcblxuICAvLyBDb3B5aW5nIGEgZm9sZGVyIGludG8gaXRzIG93biBzdWJ0cmVlIG1ha2VzIHRoZSB3YWxrIGJlbG93IGdyb3cgdGhlIHNvdXJjZSB0cmVlIGFzIGl0IHJlYWRzIGl0LlxuICAvLyBSZWZ1c2luZyBpcyB0aGUgb25seSBmYWl0aGZ1bCBhbnN3ZXI6IHRoZXJlIGlzIG5vIGZpbml0ZSBjb3B5IHRvIG1ha2UuXG4gIGlmIChpc0NoaWxkT3JTZWxmKHsgYXBwLCBjaGlsZFBhdGhPckZpbGU6IG5ld0F2YWlsYWJsZVBhdGgsIHBhcmVudFBhdGhPckZpbGU6IGZvbGRlciB9KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvcHkgZm9sZGVyICcke2ZvbGRlci5wYXRofScgaW50byBpdHMgb3duIHN1YnRyZWUgJyR7bmV3QXZhaWxhYmxlUGF0aH0nYCk7XG4gIH1cblxuICAvLyBDcmVhdGluZyB0aGUgZGVzdGluYXRpb24gZmlyc3QgaXMgd2hhdCBwcmVzZXJ2ZXMgYW4gRU1QVFkgc291cmNlIHN1YmZvbGRlci5cbiAgLy8gQSBmaWxlcy1vbmx5IHdhbGsgd291bGQgc2lsZW50bHkgZHJvcCBpdC5cbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIG5ld0F2YWlsYWJsZVBhdGgpO1xuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgZm9sZGVyLmNoaWxkcmVuKSB7XG4gICAgYXdhaXQgY29weVNhZmUoeyBhcHAsIG5ld1BhdGg6IGpvaW4obmV3QXZhaWxhYmxlUGF0aCwgY2hpbGQubmFtZSksIG9sZFBhdGhPckZpbGU6IGNoaWxkIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGludm9rZUZpbGVBY3Rpb25TYWZlKHBhcmFtczogSW52b2tlRmlsZUFjdGlvblNhZmVQYXJhbXMpOiBQcm9taXNlPEludm9rZUZpbGVBY3Rpb25TYWZlUmVzdWx0PiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgZmlsZUFjdGlvbixcbiAgICBwYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogcGF0aCB9KTtcbiAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgIHJldHVybiBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdC5Ob3RJbnZva2VkO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgZmlsZUFjdGlvbihmaWxlKTtcbiAgICByZXR1cm4gSW52b2tlRmlsZUFjdGlvblNhZmVSZXN1bHQuSW52b2tlZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBmaWxlID0gZ2V0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogcGF0aCB9KTtcbiAgICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgICByZXR1cm4gSW52b2tlRmlsZUFjdGlvblNhZmVSZXN1bHQuTm90SW52b2tlZDtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmb2xkZXIgZXhpc3RzIG9uIGRpc2sgYW5kIGlzIGVtcHR5LlxuICpcbiAqIHtAbGluayBpc0VtcHR5Rm9sZGVyfSBjYWxscyBhIG1pc3NpbmcgcGF0aCBlbXB0eSwgd2hpY2ggaXMgd3JvbmcgZm9yIGEgY2FsbGVyIGFib3V0IHRvIGRlbGV0ZSBpdDogdGhlIHZhdWx0IGluZGV4XG4gKiBjYW4gc3RpbGwgaG9sZCBhIGZvbGRlciB0aGUgZGlzayBoYXMgYWxyZWFkeSBsb3N0LCBiZWNhdXNlIHRoZSBpbmRleCBkcm9wcyBpdCBsYXRlciwgZnJvbSB0aGUgZmlsZSB3YXRjaGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gZm9sZGVyIC0gVGhlIGZvbGRlciB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYHRydWVgIHdoZW4gdGhlIGZvbGRlciBleGlzdHMgb24gZGlzayBhbmQgaXMgZW1wdHkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzRXhpc3RpbmdFbXB0eUZvbGRlcihhcHA6IEFwcCwgZm9sZGVyOiBURm9sZGVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHN0YXRzID0gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuc3RhdChmb2xkZXIucGF0aCk7XG4gIHJldHVybiBzdGF0cz8udHlwZSA9PT0gJ2ZvbGRlcicgJiYgYXdhaXQgaXNFbXB0eUZvbGRlcihhcHAsIGZvbGRlcik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsOEJBQStCO0FBQy9CLHNCQUEwQjtBQUMxQixrQkFLTztBQUNQLHlCQUE0QjtBQUM1Qiw0QkFBNkI7QUFDN0IsNkJBSU87QUFDUCxzQkFLTztBQVVQLCtCQUF1QztBQUN2QyxtQkFBdUM7QUFDdkMseUJBZU87QUFDUCxrQkFBa0I7QUFLWCxJQUFLLHlCQUFMLGtCQUFLQSw0QkFBTDtBQUlMLEVBQUFBLHdCQUFBLGFBQVU7QUFLVixFQUFBQSx3QkFBQSxnQkFBYTtBQVRILFNBQUFBO0FBQUEsR0FBQTtBQWVMLElBQUssc0JBQUwsa0JBQUtDLHlCQUFMO0FBSUwsRUFBQUEscUJBQUEsWUFBUztBQUtULEVBQUFBLHFCQUFBLDRCQUF5QjtBQUt6QixFQUFBQSxxQkFBQSxVQUFPO0FBZEcsU0FBQUE7QUFBQSxHQUFBO0FBb0JMLElBQUssNkJBQUwsa0JBQUtDLGdDQUFMO0FBQ0wsRUFBQUEsNEJBQUEsYUFBVTtBQUNWLEVBQUFBLDRCQUFBLGdCQUFhO0FBRkgsU0FBQUE7QUFBQSxHQUFBO0FBNlNaLGVBQXNCLG9CQUFvQixRQUFrRDtBQUMxRixRQUFNO0FBQUEsSUFDSjtBQUFB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QUNGO0FBRUEsTUFBSTtBQUNGLFVBQU0sSUFBSSxZQUFZLFVBQVUsSUFBSTtBQUFBLEVBQ3RDLFNBQVMsT0FBTztBQUNkLFFBQUksTUFBTSxJQUFJLE1BQU0sT0FBTyxLQUFLLElBQUksR0FBRztBQUNyQyxZQUFNO0FBQUEsSUFDUjtBQUVBLDZDQUF1QixpQkFBaUIsRUFBRSxvQ0FBb0MsS0FBSyxJQUFJLG9DQUFvQyxFQUFFLE9BQU8sTUFBTSxLQUFLLEtBQUssQ0FBQztBQUFBLEVBQ3ZKO0FBQ0Y7QUFFQSxlQUFlLGVBQWUsUUFBK0M7QUFDM0UsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sbUJBQW1CLGlCQUFpQixLQUFLLE9BQU87QUFJdEQsTUFBSSxjQUFjLEVBQUUsS0FBSyxpQkFBaUIsa0JBQWtCLGtCQUFrQixPQUFPLENBQUMsR0FBRztBQUN2RixVQUFNLElBQUksTUFBTSx1QkFBdUIsT0FBTyxJQUFJLDJCQUEyQixnQkFBZ0IsR0FBRztBQUFBLEVBQ2xHO0FBSUEsUUFBTSxpQkFBaUIsS0FBSyxnQkFBZ0I7QUFFNUMsYUFBVyxTQUFTLE9BQU8sVUFBVTtBQUNuQyxVQUFNLFNBQVMsRUFBRSxLQUFLLGFBQVMsa0JBQUssa0JBQWtCLE1BQU0sSUFBSSxHQUFHLGVBQWUsTUFBTSxDQUFDO0FBQUEsRUFDM0Y7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxlQUFlLHFCQUFxQixRQUF5RTtBQUMzRyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osUUFBTSxXQUFPLDRCQUFRLEtBQUssVUFBVTtBQUNwQyxNQUFJLFdBQU8sa0NBQWMsRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDO0FBQ2xELE1BQUksQ0FBQyxRQUFRLEtBQUssU0FBUztBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUk7QUFDRixVQUFNLFdBQVcsSUFBSTtBQUNyQixXQUFPO0FBQUEsRUFDVCxTQUFTLE9BQU87QUFDZCxlQUFPLGtDQUFjLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQztBQUM5QyxRQUFJLENBQUMsUUFBUSxLQUFLLFNBQVM7QUFDekIsYUFBTztBQUFBLElBQ1Q7QUFDQSxVQUFNO0FBQUEsRUFDUjtBQUNGO0FBWUEsZUFBZSxzQkFBc0IsS0FBVSxRQUFtQztBQUNoRixRQUFNLFFBQVEsTUFBTSxJQUFJLE1BQU0sUUFBUSxLQUFLLE9BQU8sSUFBSTtBQUN0RCxTQUFPLE9BQU8sU0FBUyxZQUFZLE1BQU0sY0FBYyxLQUFLLE1BQU07QUFDcEU7IiwibmFtZXMiOlsiQ3JlYXRlRm9sZGVyU2FmZVJlc3VsdCIsIkVtcHR5Rm9sZGVyQmVoYXZpb3IiLCJJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdCJdfQ==
689
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YXVsdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgT2JzaWRpYW4gVmF1bHQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZXRyeU9wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3ZhbHVlLXByb3ZpZGVyJztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBMaXN0ZWRGaWxlc1xufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGFib3J0U2lnbmFsQW55IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5pbXBvcnQge1xuICBnZXREYXRhQWRhcHRlckV4LFxuICBwYXJlbnRGb2xkZXJQYXRoLFxuICBWaWV3VHlwZVxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBNYXJrZG93blZpZXcsXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW5Ob3RpY2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUge1xuICBQYXRoT3JBYnN0cmFjdEZpbGUsXG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VMb2NrQ29tcG9uZW50IH0gZnJvbSAnLi9yZXNvdXJjZS1sb2NrLnRzJztcblxuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dE5vdGljZSB9IGZyb20gJy4vYXN5bmMtd2l0aC1ub3RpY2UudHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHtcbiAgYXNGaWxlLFxuICBhc0ZvbGRlcixcbiAgRmlsZVN5c3RlbVR5cGUsXG4gIGdldEFic3RyYWN0RmlsZSxcbiAgZ2V0QWJzdHJhY3RGaWxlT3JOdWxsLFxuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGaWxlU3lzdGVtVHlwZSxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiB7QGxpbmsgY3JlYXRlRm9sZGVyU2FmZX0uXG4gKi9cbmV4cG9ydCBlbnVtIENyZWF0ZUZvbGRlclNhZmVSZXN1bHQge1xuICAvKipcbiAgICogVGhlIGZvbGRlciB3YXMgY3JlYXRlZC5cbiAgICovXG4gIENyZWF0ZWQgPSAnY3JlYXRlZCcsXG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgd2FzIG5vdCBjcmVhdGVkIGJlY2F1c2UgaXQgYWxyZWFkeSBleGlzdHMuXG4gICAqL1xuICBOb3RDcmVhdGVkID0gJ25vdC1jcmVhdGVkJ1xufVxuXG4vKipcbiAqIEEgYmVoYXZpb3IgZm9yIGhhbmRsaW5nIGVtcHR5IGZvbGRlcnMgZHVyaW5nIGNsZWFudXAuXG4gKi9cbmV4cG9ydCBlbnVtIEVtcHR5Rm9sZGVyQmVoYXZpb3Ige1xuICAvKipcbiAgICogRGVsZXRlIHRoZSBlbXB0eSBmb2xkZXIuXG4gICAqL1xuICBEZWxldGUgPSAnRGVsZXRlJyxcblxuICAvKipcbiAgICogRGVsZXRlIHRoZSBlbXB0eSBmb2xkZXIgYW5kIGFsbCBpdHMgZW1wdHkgcGFyZW50cy5cbiAgICovXG4gIERlbGV0ZVdpdGhFbXB0eVBhcmVudHMgPSAnRGVsZXRlV2l0aEVtcHR5UGFyZW50cycsXG5cbiAgLyoqXG4gICAqIEtlZXAgdGhlIGVtcHR5IGZvbGRlci5cbiAgICovXG4gIEtlZXAgPSAnS2VlcCdcbn1cblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIHtAbGluayBpbnZva2VGaWxlQWN0aW9uU2FmZX0uXG4gKi9cbmV4cG9ydCBlbnVtIEludm9rZUZpbGVBY3Rpb25TYWZlUmVzdWx0IHtcbiAgSW52b2tlZCA9ICdpbnZva2VkJyxcbiAgTm90SW52b2tlZCA9ICdub3QtaW52b2tlZCdcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2xlYW51cEVtcHR5Rm9sZGVyc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xlYW51cEVtcHR5Rm9sZGVyc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGJlaGF2aW9yIGRldGVybWluaW5nIGhvdyBlbXB0eSBmb2xkZXJzIGFyZSBjbGVhbmVkIHVwLlxuICAgKi9cbiAgcmVhZG9ubHkgZW1wdHlGb2xkZXJCZWhhdmlvcjogRW1wdHlGb2xkZXJCZWhhdmlvcjtcblxuICAvKipcbiAgICogVGhlIHBhdGhzIG9mIHRoZSBmb2xkZXJzIHRvIGNsZWFuIHVwIHdoZW4gZW1wdHkuXG4gICAqL1xuICByZWFkb25seSBmb2xkZXJQYXRoczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQXJndW1lbnRzIGZvciB7QGxpbmsgcHJvY2Vzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEFyZ3VtZW50cyB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBjb250ZW50IG9mIHRoZSBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjb3B5U2FmZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29weVNhZmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIG9yIGZvbGRlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IG5ld1BhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9sZCBwYXRoLCBmaWxlIG9yIGZvbGRlciB0byBjb3B5LiBBIGZvbGRlciBpcyBjb3BpZWQgd2l0aCBpdHMgd2hvbGUgc3VidHJlZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZFBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEFic3RyYWN0RmlsZVBhdGhTYWZlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgZmlsZSBvciBmb2xkZXIgdG8gZ2V0IGEgc2FmZSBwYXRoIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGZpbGUgc3lzdGVtIG9iamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEZpbGVTeXN0ZW1UeXBlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRPckNyZWF0ZUFic3RyYWN0RmlsZVNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldE9yQ3JlYXRlQWJzdHJhY3RGaWxlU2FmZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIGFic3RyYWN0IGZpbGUgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGFic3RyYWN0IGZpbGUgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEZpbGVTeXN0ZW1UeXBlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRTYWZlUmVuYW1lUGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0U2FmZVJlbmFtZVBhdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGFic3RyYWN0IGZpbGUgdG8uXG4gICAqL1xuICByZWFkb25seSBuZXdQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJlbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZFBhdGhPckFic3RyYWN0RmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbnZva2VXaXRoRmlsZVN5c3RlbUxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludm9rZVdpdGhGaWxlU3lzdGVtTG9ja1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBvZiB0aGUgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5ICRmdW5jdGlvbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jayBvZi5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGlzQ2hpbGRPclNlbGZ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzQ2hpbGRPclNlbGZQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2sgd2hldGhlciBpdCBpcyBhIGNoaWxkIG9yIHNlbGYuXG4gICAqL1xuICByZWFkb25seSBjaGlsZFBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjayB3aGV0aGVyIGl0IGlzIGEgcGFyZW50IG9yIHNlbGYuXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRQYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGlzQ2hpbGR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzQ2hpbGRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2sgd2hldGhlciBpdCBpcyBhIGNoaWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hpbGRQYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2sgd2hldGhlciBpdCBpcyBhIHBhcmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudFBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcHJvY2Vzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc09wdGlvbnMgZXh0ZW5kcyBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogUGx1Z2luIG5vdGljZSBjb21wb25lbnQgdXNlZCB0byBzaG93IHRoZSB0aW1lb3V0IG5vdGljZS4gV2hlbiBgbnVsbGAsIG5vIHRpbWVvdXQgbm90aWNlIGlzIHNob3duXG4gICAqIHJlZ2FyZGxlc3Mgb2Yge0BsaW5rIFByb2Nlc3NPcHRpb25zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlfTsgdGhlIHRpbWVvdXQgaXMgb25seSBsb2dnZWQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwgfCBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIEFuIHJlc291cmNlLWxvY2sgY29tcG9uZW50IHVzZWQgdG8gbG9jayB0aGUgZmlsZSdzIGVkaXRvciByZWFkLW9ubHkgZm9yIHRoZSBkdXJhdGlvbiBvZlxuICAgKiBwcm9jZXNzaW5nLiBUaGUgbG9jayBpcyByZWZlcmVuY2UtY291bnRlZCwgc28gaXQgY29tcG9zZXMgd2l0aCBhbnkgb3V0ZXIgb3BlcmF0aW9uLWxldmVsIGxvY2tcbiAgICogb24gdGhlIHNhbWUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlTG9ja0NvbXBvbmVudDogbnVsbCB8IFJlc291cmNlTG9ja0NvbXBvbmVudDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmYWlsIGlmIHRoZSBmaWxlIGlzIG1pc3Npbmcgb3IgZGVsZXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGYWlsT25NaXNzaW5nRmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcHJvY2Vzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1BhcmFtcyBleHRlbmRzIFByb2Nlc3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSwgdHlwaWNhbGx5IHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgdmF1bHQuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSB2YWx1ZSBwcm92aWRlciB0aGF0IHJldHVybnMgdGhlIG5ldyBjb250ZW50IGJhc2VkIG9uIHRoZSBvbGQgY29udGVudCBvZiB0aGUgZmlsZS5cbiAgICogSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb2xkIGNvbnRlbnQgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIG5ldyBjb250ZW50LlxuICAgKlxuICAgKiBBIGZ1bmN0aW9uIGhhcyB0aHJlZSBvdXRjb21lczpcbiAgICpcbiAgICogLSBgbnVsbGAg4oCUIHRoZSBuZXcgY29udGVudCBjYW5ub3QgYmUgcHJvZHVjZWQgWUVUOyB0aGUgcHJvY2VzcyBpcyByZXRyaWVkLlxuICAgKiAtIHRoZSBvbGQgY29udGVudCwgcmV0dXJuZWQgdW5jaGFuZ2VkIOKAlCB0aGVyZSBpcyBub3RoaW5nIHRvIHdyaXRlOyB0aGUgcHJvY2VzcyBjb21wbGV0ZXMgd2l0aG91dFxuICAgKiAgIHRvdWNoaW5nIHRoZSBmaWxlLiBVc2UgdGhpcyBmb3IgYSByZWZ1c2FsIHRoYXQgaXMgcGVybWFuZW50LCBhcyByZXR1cm5pbmcgYG51bGxgIGZvciBvbmUgcmV0cmllc1xuICAgKiAgIGZvcmV2ZXIgYW5kIGhvbGRzIHRoZSBvcGVyYXRpb24gb3Blbi5cbiAgICogLSBhbnkgb3RoZXIgc3RyaW5nIOKAlCB0aGUgY29udGVudCB0byB3cml0ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5ld0NvbnRlbnRQcm92aWRlcjogVmFsdWVQcm92aWRlcjxudWxsIHwgc3RyaW5nLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byBiZSBwcm9jZXNzZWQuIEl0IGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggb3IgYSBmaWxlIG9iamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlbmFtZVNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmFtZVNhZmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gICAqL1xuICByZWFkb25seSBuZXdQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJlbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZFBhdGhPckFic3RyYWN0RmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlO1xufVxuXG5pbnRlcmZhY2UgQ29weUZvbGRlclNhZmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgdG8gY29weS5cbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlcjogVEZvbGRlcjtcblxuICAvKipcbiAgICogVGhlIG5ldyBwYXRoIHRvIGNvcHkgdGhlIGZvbGRlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IG5ld1BhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEludm9rZUZpbGVBY3Rpb25TYWZlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gdGhlIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gcGVyZm9ybSB0aGUgYWN0aW9uIG9uLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFjdGlvbiBpcyBjb21wbGV0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVBY3Rpb246IChmaWxlOiBURmlsZSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byBwZXJmb3JtIHRoZSBhY3Rpb24gb24uXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIENsZWFucyB1cCBlbXB0eSBmb2xkZXJzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4ge0BsaW5rIEVtcHR5Rm9sZGVyQmVoYXZpb3J9LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgY2xlYW5pbmcgdXAgZW1wdHkgZm9sZGVycy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2xlYW51cCBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsZWFudXBFbXB0eUZvbGRlcnMocGFyYW1zOiBDbGVhbnVwRW1wdHlGb2xkZXJzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgZW1wdHlGb2xkZXJCZWhhdmlvcixcbiAgICBmb2xkZXJQYXRoc1xuICB9ID0gcGFyYW1zO1xuICBmb3IgKGNvbnN0IGZvbGRlclBhdGggb2YgZm9sZGVyUGF0aHMpIHtcbiAgICBzd2l0Y2ggKGVtcHR5Rm9sZGVyQmVoYXZpb3IpIHtcbiAgICAgIGNhc2UgRW1wdHlGb2xkZXJCZWhhdmlvci5EZWxldGU6IHtcbiAgICAgICAgYXdhaXQgZGVsZXRlRW1wdHlGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEVtcHR5Rm9sZGVyQmVoYXZpb3IuRGVsZXRlV2l0aEVtcHR5UGFyZW50czoge1xuICAgICAgICBhd2FpdCBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeShhcHAsIGZvbGRlclBhdGgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRW1wdHlGb2xkZXJCZWhhdmlvci5LZWVwOiB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBhc3NlcnROZXZlcihlbXB0eUZvbGRlckJlaGF2aW9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDb3BpZXMgYSBmaWxlIG9yIGZvbGRlciBzYWZlbHkgaW4gdGhlIHZhdWx0LiBBIGZvbGRlciBpcyBjb3BpZWQgd2l0aCBpdHMgd2hvbGUgc3VidHJlZSwgZW1wdHlcbiAqIHN1YmZvbGRlcnMgaW5jbHVkZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBjb3B5aW5nIHRoZSBmaWxlIG9yIGZvbGRlci5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBjb3B5LlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZGVzdGluYXRpb24gcmVzb2x2ZXMgaW5zaWRlIHRoZSBzb3VyY2UgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVNhZmUocGFyYW1zOiBDb3B5U2FmZVBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbmV3UGF0aCxcbiAgICBvbGRQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZTogb2xkUGF0aE9yRmlsZSB9KTtcblxuICBpZiAoYWJzdHJhY3RGaWxlLnBhdGggPT09IG5ld1BhdGgpIHtcbiAgICByZXR1cm4gbmV3UGF0aDtcbiAgfVxuXG4gIGlmICghaXNGaWxlKGFic3RyYWN0RmlsZSkpIHtcbiAgICByZXR1cm4gYXdhaXQgY29weUZvbGRlclNhZmUoeyBhcHAsIGZvbGRlcjogYXNGb2xkZXIoYWJzdHJhY3RGaWxlKSwgbmV3UGF0aCB9KTtcbiAgfVxuXG4gIGNvbnN0IG5ld0ZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKG5ld1BhdGgpO1xuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3Rm9sZGVyUGF0aCk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jb3B5KGFic3RyYWN0RmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHtAbGluayBDcmVhdGVGb2xkZXJTYWZlUmVzdWx0LkNyZWF0ZWR9IGlmIHRoZSBmb2xkZXIgd2FzXG4gKiBjcmVhdGVkLCBvciB7QGxpbmsgQ3JlYXRlRm9sZGVyU2FmZVJlc3VsdC5Ob3RDcmVhdGVkfSBpZiBpdCBhbHJlYWR5IGV4aXN0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVGb2xkZXJTYWZlUmVzdWx0PiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gQ3JlYXRlRm9sZGVyU2FmZVJlc3VsdC5Ob3RDcmVhdGVkO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKHBhdGgpO1xuICAgIHJldHVybiBDcmVhdGVGb2xkZXJTYWZlUmVzdWx0LkNyZWF0ZWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIENyZWF0ZUZvbGRlclNhZmVSZXN1bHQuQ3JlYXRlZDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdmF1bHQgd2l0aCBwYXJlbnQgZm9sZGVycyBpZiBuZWVkZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmaWxlIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBvcmFyeUZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IHBhdGggfSk7XG4gIGlmIChmaWxlKSB7XG4gICAgcmV0dXJuIG5vb3BBc3luYztcbiAgfVxuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wb3JhcnlGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBmaWxlID0gZ2V0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZTogcGF0aCB9KTtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgdHJhc2hTYWZlKGFwcCwgZmlsZSk7XG4gICAgfVxuICAgIGF3YWl0IGZvbGRlckNsZWFudXAoKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZvbGRlciBpbiB0aGUgdmF1bHQgd2l0aCBwYXJlbnQgZm9sZGVycyBpZiBuZWVkZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIGRlbGV0ZSB0aGUgdGVtcG9yYXJ5IGZvbGRlciBhbmQgYWxsIGl0cyBjcmVhdGVkIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZW1wb3JhcnlGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKHsgYXBwLCBwYXRoT3JGb2xkZXI6IHBhdGggfSk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBvcmFyeUZvbGRlcihhcHAsIGZvbGRlclBhdGgpO1xuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wb3JhcnlGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgcGF0aCk7XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBmb2xkZXIgPSBnZXRGb2xkZXIoeyBhcHAsIHBhdGhPckZvbGRlcjogcGF0aCB9KTtcbiAgICBpZiAoIWZvbGRlci5kZWxldGVkKSB7XG4gICAgICBhd2FpdCB0cmFzaFNhZmUoYXBwLCBmb2xkZXIpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlcyBhbiBlbXB0eSBmb2xkZXIuXG4gKlxuICogQSBmb2xkZXIgdGhlIHZhdWx0IGluZGV4IHN0aWxsIGhvbGRzIGJ1dCB0aGUgZGlzayBoYXMgYWxyZWFkeSBsb3N0IGlzIG5vdCBlbXB0eTogaXQgaXMgbm90aGluZyB0byBkZWxldGUsIHNvIGl0XG4gKiBpcyBsZWZ0IGFsb25lIHJhdGhlciB0aGFuIGhhbmRlZCB0byB0aGUgdHJhc2ggYXMgYSBtaXNzaW5nIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgZm9sZGVyIHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZm9sZGVyIGlzIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVFbXB0eUZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBudWxsIHwgUGF0aE9yRm9sZGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbCh7IGFwcCwgcGF0aE9yRm9sZGVyIH0pO1xuICBpZiAoIWZvbGRlciB8fCAhYXdhaXQgaXNFeGlzdGluZ0VtcHR5Rm9sZGVyKGFwcCwgZm9sZGVyKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBhd2FpdCB0cmFzaFNhZmUoYXBwLCBmb2xkZXIpO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgZW1wdHkgZm9sZGVyIGhpZXJhcmNoeSBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiBmb2xkZXIuXG4gKlxuICogVGhlIHdhbGsgc3RvcHMgYXQgdGhlIGZpcnN0IGZvbGRlciB0aGF0IGlzIG5vdCBlbXB0eSBvciBubyBsb25nZXIgZXhpc3RzIG9uIGRpc2suXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgZm9sZGVyIHRvIHN0YXJ0IHJlbW92aW5nIGVtcHR5IGhpZXJhcmNoeSBmcm9tLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBlbXB0eSBoaWVyYXJjaHkgaXMgZGVsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5KGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IG51bGwgfCBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbCh7IGFwcCwgcGF0aE9yRm9sZGVyIH0pO1xuXG4gIHdoaWxlIChmb2xkZXIpIHtcbiAgICBpZiAoIWF3YWl0IGlzRXhpc3RpbmdFbXB0eUZvbGRlcihhcHAsIGZvbGRlcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gZm9sZGVyLnBhcmVudDtcbiAgICBhd2FpdCBkZWxldGVFbXB0eUZvbGRlcihhcHAsIGZvbGRlcik7XG4gICAgZm9sZGVyID0gcGFyZW50O1xuICB9XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcGF0aCBmb3IgYSBmaWxlIG9yIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGdldHRpbmcgYSBzYWZlIHBhdGguXG4gKiBAcmV0dXJucyBUaGUgc2FmZSBwYXRoIGZvciB0aGUgZmlsZSBvciBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEZpbGVQYXRoU2FmZShwYXJhbXM6IEdldEFic3RyYWN0RmlsZVBhdGhTYWZlUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBwYXRoLFxuICAgIHR5cGVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYWJzdHJhY3RGaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKHsgYXBwLCBwYXRoT3JGaWxlOiBwYXRoIH0pO1xuXG4gIHJldHVybiBhYnN0cmFjdEZpbGUgJiYgZ2V0RmlsZVN5c3RlbVR5cGUoYWJzdHJhY3RGaWxlKSA9PT0gdHlwZSA/IHBhdGggOiBnZXRBdmFpbGFibGVQYXRoKGFwcCwgcGF0aCk7XG59XG5cbi8qKlxuICogR2V0cyBhbiBhdmFpbGFibGUgcGF0aCBmb3IgYSBmaWxlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIGF2YWlsYWJsZSBwYXRoIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGgoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IGV4dG5hbWUocGF0aCk7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKGRpcm5hbWUocGF0aCksIGJhc2VuYW1lKHBhdGgsIGV4dGVuc2lvbikpLCBleHRlbnNpb24uc2xpY2UoMSkpO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIGZpbGUgcGF0aCBmb3IgYSBmaWxlIG9yIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSBvciBmb2xkZXIgdG8gZ2V0IGEgc2FmZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBzYWZlIHBhdGggZm9yIHRoZSBmaWxlIG9yIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQYXRoU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldEFic3RyYWN0RmlsZVBhdGhTYWZlKHsgYXBwLCBwYXRoLCB0eXBlOiBGaWxlU3lzdGVtVHlwZS5GaWxlIH0pO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIGZvbGRlciBwYXRoIGZvciBhIGZpbGUgb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlciB0byBnZXQgYSBzYWZlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIHNhZmUgcGF0aCBmb3IgdGhlIGZpbGUgb3IgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyUGF0aFNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRBYnN0cmFjdEZpbGVQYXRoU2FmZSh7IGFwcCwgcGF0aCwgdHlwZTogRmlsZVN5c3RlbVR5cGUuRm9sZGVyIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBmcm9tIHRoZSBhcHAncyB2YXVsdCBhbmQgc29ydHMgdGhlbSBhbHBoYWJldGljYWxseSBieSB0aGVpciBmaWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlc1NvcnRlZChhcHA6IEFwcCk6IFRGaWxlW10ge1xuICByZXR1cm4gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKS5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgaW4gdGhlIHZhdWx0IHNvcnRlZCBieSBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROb3RlRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRBbGxMb2FkZWRGaWxlcygpLmZpbHRlcigoZmlsZSkgPT4gaXNGaWxlKGZpbGUpICYmIGlzTm90ZShmaWxlKSkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSkgYXMgVEZpbGVbXTtcbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYW4gYWJzdHJhY3QgZmlsZSBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIHJldHVybmVkLlxuICogSWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBnZXR0aW5nIG9yIGNyZWF0aW5nIHRoZSBhYnN0cmFjdCBmaWxlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYWJzdHJhY3QgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlQWJzdHJhY3RGaWxlU2FmZShwYXJhbXM6IEdldE9yQ3JlYXRlQWJzdHJhY3RGaWxlU2FmZVBhcmFtcyk6IFByb21pc2U8VEFic3RyYWN0RmlsZT4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIHR5cGVcbiAgfSA9IHBhcmFtcztcbiAgbGV0IHsgcGF0aCB9ID0gcGFyYW1zO1xuICBwYXRoID0gZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmUoeyBhcHAsIHBhdGgsIHR5cGUgfSk7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogcGF0aCB9KTtcbiAgaWYgKGFic3RyYWN0RmlsZSkge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGU7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZpbGVTeXN0ZW1UeXBlLkZpbGU6IHtcbiAgICAgIC8vIGB2YXVsdC5jcmVhdGVgIGRvZXMgbm90IGNyZWF0ZSBtaXNzaW5nIHBhcmVudCBmb2xkZXJzOyB0aGUgYWRhcHRlciByZWZ1c2VzIHRoZSB3cml0ZS5cbiAgICAgIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcbiAgICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKHBhdGgsICcnKTtcbiAgICB9XG4gICAgY2FzZSBGaWxlU3lzdGVtVHlwZS5Gb2xkZXI6IHtcbiAgICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKHBhdGgpO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICBhc3NlcnROZXZlcih0eXBlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZVNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZpbGU+IHtcbiAgcmV0dXJuIGFzRmlsZShhd2FpdCBnZXRPckNyZWF0ZUFic3RyYWN0RmlsZVNhZmUoeyBhcHAsIHBhdGgsIHR5cGU6IEZpbGVTeXN0ZW1UeXBlLkZpbGUgfSkpO1xufVxuXG4vKipcbiAqIEdldHMgb3IgY3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIElmIHRoZSBmb2xkZXIgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZm9sZGVyIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQgYW5kIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURm9sZGVyPiB7XG4gIHJldHVybiBhc0ZvbGRlcihhd2FpdCBnZXRPckNyZWF0ZUFic3RyYWN0RmlsZVNhZmUoeyBhcHAsIHBhdGgsIHR5cGU6IEZpbGVTeXN0ZW1UeXBlLkZvbGRlciB9KSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcmVuYW1lIHBhdGggZm9yIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGdldHRpbmcgYSBzYWZlIHJlbmFtZSBwYXRoLlxuICogQHJldHVybnMgVGhlIHNhZmUgcmVuYW1lIHBhdGggZm9yIHRoZSBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2FmZVJlbmFtZVBhdGgocGFyYW1zOiBHZXRTYWZlUmVuYW1lUGF0aFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgYXBwLCBvbGRQYXRoT3JBYnN0cmFjdEZpbGUgfSA9IHBhcmFtcztcbiAgbGV0IHsgbmV3UGF0aCB9ID0gcGFyYW1zO1xuICBjb25zdCBvbGRQYXRoID0gZ2V0UGF0aChhcHAsIG9sZFBhdGhPckFic3RyYWN0RmlsZSk7XG5cbiAgaWYgKGdldERhdGFBZGFwdGVyRXgoYXBwKS5pbnNlbnNpdGl2ZSkge1xuICAgIGxldCBmb2xkZXJQYXRoID0gZGlybmFtZShuZXdQYXRoKTtcbiAgICBsZXQgbm9uRXhpc3RpbmdQYXRoID0gYmFzZW5hbWUobmV3UGF0aCk7XG4gICAgbGV0IGZvbGRlcjogbnVsbCB8IFRGb2xkZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gVGhlcmUgaXMgbm8gZWxlZ2FudCB3YXkgdG8gcGVyZm9ybSBpbmZpbml0ZSBsb29wcy5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKHsgYXBwLCBpc0Nhc2VJbnNlbnNpdGl2ZTogdHJ1ZSwgcGF0aE9yRm9sZGVyOiBmb2xkZXJQYXRoIH0pO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5vbkV4aXN0aW5nUGF0aCA9IGpvaW4oYmFzZW5hbWUoZm9sZGVyUGF0aCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gICAgICBmb2xkZXJQYXRoID0gZGlybmFtZShmb2xkZXJQYXRoKTtcbiAgICB9XG4gICAgbmV3UGF0aCA9IGpvaW4oZm9sZGVyLmdldFBhcmVudFByZWZpeCgpLCBub25FeGlzdGluZ1BhdGgpO1xuICB9XG5cbiAgcmV0dXJuIG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpID8gbmV3UGF0aCA6IGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcbn1cblxuLyoqXG4gKiBJbnZva2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jay5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGludm9raW5nIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBmaWxlIHN5c3RlbSBsb2NrLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBpbnZva2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKHBhcmFtczogSW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICAkZnVuY3Rpb24sXG4gICAgYXBwLFxuICAgIHBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUgfSk7XG4gIGF3YWl0IGFwcC52YXVsdC5wcm9jZXNzKGZpbGUsIChjb250ZW50KSA9PiB7XG4gICAgJGZ1bmN0aW9uKGNvbnRlbnQpO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGNoZWNraW5nIHdoZXRoZXIgdGhlIGNoaWxkIHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9mIHRoZSBwYXJlbnQgcGF0aCBvciBmaWxlLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgY2hpbGQgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb2YgdGhlIHBhcmVudCBwYXRoIG9yIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NoaWxkKHBhcmFtczogSXNDaGlsZFBhcmFtcyk6IGJvb2xlYW4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGNoaWxkUGF0aE9yRmlsZSxcbiAgICBwYXJlbnRQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGNoaWxkUGF0aCA9IGdldFBhdGgoYXBwLCBjaGlsZFBhdGhPckZpbGUpO1xuICBjb25zdCBwYXJlbnRQYXRoID0gZ2V0UGF0aChhcHAsIHBhcmVudFBhdGhPckZpbGUpO1xuXG4gIHJldHVybiBjaGlsZFBhdGggIT09IHBhcmVudFBhdGggJiYgKHBhcmVudFBhdGggPT09ICcvJyB8fCBjaGlsZFBhdGguc3RhcnRzV2l0aChgJHtwYXJlbnRQYXRofS9gKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb3Igc2VsZiBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGNoZWNraW5nIHdoZXRoZXIgdGhlIGNoaWxkIHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9yIHNlbGYgb2YgdGhlIHBhcmVudCBwYXRoIG9yIGZpbGUuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjaGlsZCBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvciBzZWxmIG9mIHRoZSBwYXJlbnQgcGF0aCBvciBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDaGlsZE9yU2VsZihwYXJhbXM6IElzQ2hpbGRPclNlbGZQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBjaGlsZFBhdGhPckZpbGUsXG4gICAgcGFyZW50UGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBjaGlsZFBhdGggPSBnZXRQYXRoKGFwcCwgY2hpbGRQYXRoT3JGaWxlKTtcbiAgY29uc3QgcGFyZW50UGF0aCA9IGdldFBhdGgoYXBwLCBwYXJlbnRQYXRoT3JGaWxlKTtcbiAgcmV0dXJuIGNoaWxkUGF0aCA9PT0gcGFyZW50UGF0aCB8fCBpc0NoaWxkKHsgYXBwLCBjaGlsZFBhdGhPckZpbGUsIHBhcmVudFBhdGhPckZpbGUgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZm9sZGVyIGlzIGVtcHR5LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0VtcHR5Rm9sZGVyKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBsaXN0ZWRGaWxlcyA9IGF3YWl0IGxpc3RTYWZlKGFwcCwgZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcikpO1xuICByZXR1cm4gbGlzdGVkRmlsZXMuZmlsZXMubGVuZ3RoID09PSAwICYmIGxpc3RlZEZpbGVzLmZvbGRlcnMubGVuZ3RoID09PSAwO1xufVxuXG4vKipcbiAqIFNhZmVseSBsaXN0cyB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgYXQgdGhlIHNwZWNpZmllZCBwYXRoIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byBsaXN0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIHtAbGluayBMaXN0ZWRGaWxlc30gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxpc3RlZCBmaWxlcyBhbmQgZm9sZGVycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RTYWZlKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8TGlzdGVkRmlsZXM+IHtcbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpO1xuICBjb25zdCBFTVBUWSA9IHsgZmlsZXM6IFtdLCBmb2xkZXJzOiBbXSB9O1xuXG4gIGNvbnN0IHBhdGhTdGF0cyA9IGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLnN0YXQocGF0aCk7XG4gIGlmIChwYXRoU3RhdHM/LnR5cGUgIT09ICdmb2xkZXInKSB7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubGlzdChwYXRoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGZpbGUgd2l0aCByZXRyeSBsb2dpYywgdXBkYXRpbmcgaXRzIGNvbnRlbnQgYmFzZWQgb24gYSBwcm92aWRlZCB2YWx1ZSBvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHByb2Nlc3NpbmcgdGhlIGZpbGUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICpcbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJvY2VzcyBmYWlscyBhZnRlciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiByZXRyaWVzIG9yIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzKHBhcmFtczogUHJvY2Vzc1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5ld0NvbnRlbnRQcm92aWRlcixcbiAgICBwYXRoT3JGaWxlLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgICByZXNvdXJjZUxvY2tDb21wb25lbnRcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlOiB0cnVlLFxuICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiB0cnVlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIERlZmF1bHQgdmFsdWUuXG4gICAgdGltZW91dEluTWlsbGlzZWNvbmRzOiA1MDBcbiAgfTtcbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ucGFyYW1zIH07XG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCwgYWJvcnRDb250cm9sbGVyLnNpZ25hbCk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgLy8gUmVmZXJlbmNlLWNvdW50ZWQgbG9jazsgY29tcG9zZXMgd2l0aCBhbnkgb3V0ZXIgbG9jay4gUmVsZWFzZWQgYXQgZnVuY3Rpb24gc2NvcGUgZXhpdC5cbiAgdXNpbmcgX2xvY2sgPSByZXNvdXJjZUxvY2tDb21wb25lbnQ/LmxvY2tGb3JQYXRoKHsgb3BlcmF0aW9uTmFtZTogJ1Byb2Nlc3Mgbm90ZScsIHBhdGhPckZpbGUgfSk7XG5cbiAgYXdhaXQgcmV0cnlXaXRoVGltZW91dE5vdGljZSh7XG4gICAgYXN5bmMgb3BlcmF0aW9uRnVuY3Rpb24oYWJvcnRTaWduYWwpIHtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgICAgaWYgKG9sZENvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHNob3VsZFRyZWF0TWlzc2luZ0ZpbGVBc1N1Y2Nlc3MoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Q29udGVudCA9IGF3YWl0IHJlc29sdmVWYWx1ZShuZXdDb250ZW50UHJvdmlkZXIsIHsgYWJvcnRTaWduYWwsIGNvbnRlbnQ6IG9sZENvbnRlbnQgfSk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICBpZiAobmV3Q29udGVudCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBwcm92aWRlciBoYW5kZWQgYmFjayBleGFjdGx5IHdoYXQgaXQgd2FzIGdpdmVuOiB0aGVyZSBpcyBub3RoaW5nIHRvIHdyaXRlLCBhbmQgdGhlIG9wZXJhdGlvblxuICAgICAgLy8gaXMgY29tcGxldGUuIERpc3RpbmN0IGZyb20gYG51bGxgLCB3aGljaCBhc2tzIGZvciBhIHJldHJ5IOKAlCBhIHByb3ZpZGVyIHdob3NlIHJlZnVzYWwgdG8gcmV3cml0ZSBpc1xuICAgICAgLy8gcGVybWFuZW50IChzZWUgYGFwcGx5Q2FudmFzQ2hhbmdlc2ApIHdvdWxkIG90aGVyd2lzZSBzcGluIGZvcmV2ZXIgYW5kIGhvbGQgdGhlIHNoYXJlZCBvcGVyYXRpb25cbiAgICAgIC8vIHF1ZXVlIG9wZW4gYmVoaW5kIGl0LlxuICAgICAgaWYgKG5ld0NvbnRlbnQgPT09IG9sZENvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGxldCBpc1N1Y2Nlc3MgPSB0cnVlO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW52b2tlRmlsZUFjdGlvblNhZmUoe1xuICAgICAgICBhcHAsXG4gICAgICAgIGFzeW5jIGZpbGVBY3Rpb24oZmlsZSkge1xuICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgICAgYXdhaXQgYXBwLnZhdWx0LnByb2Nlc3MoZmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgICAgICBpZiAoY29udGVudCAhPT0gb2xkQ29udGVudCkge1xuICAgICAgICAgICAgICBnZXRPYnNpZGlhbkxpYkRlYnVnZ2VyKCdWYXVsdDpwcm9jZXNzJykoJ0NvbnRlbnQgaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uJywge1xuICAgICAgICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgICAgICAgIHBhdGg6IGZpbGUucGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHBhdGhPckZpbGVcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdC5Ob3RJbnZva2VkID8gc2hvdWxkVHJlYXRNaXNzaW5nRmlsZUFzU3VjY2VzcygpIDogaXNTdWNjZXNzO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9jb25zaXN0ZW50LWZ1bmN0aW9uLXNjb3BpbmcgLS0gQ2xvc2VzIG92ZXIgYGZ1bGxPcHRpb25zYCBhbmQgYHBhdGhgIGZyb20gdGhlIGVuY2xvc2luZyBzY29wZSwgc28gaXQgY2Fubm90IGJlIGhvaXN0ZWQuXG4gICAgICBmdW5jdGlvbiBzaG91bGRUcmVhdE1pc3NpbmdGaWxlQXNTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgJyR7cGF0aH0nIG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnZhdWx0LnByb2Nlc3NGaWxlLCB7IGZpbGVQYXRoOiBwYXRoIH0pLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgICByZXRyeU9wdGlvbnM6IGZ1bGxPcHRpb25zLFxuICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBmdWxsT3B0aW9ucy5zaG91bGRTaG93VGltZW91dE5vdGljZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY29udGVudCBvZiBhIGZpbGUgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEl0IGNvdmVycyB0aGUgY2FzZSB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyB0aGUgcmVhZGluZy5cbiAqXG4gKiBUaGlzIGlzIE5PVCBhIHB1cmUgcmVhZDogaXQgY2FsbHMge0BsaW5rIHNhdmVOb3RlfSBmaXJzdCwgd2hpY2ggc2F2ZXMgYW55IG9wZW4gZWRpdG9yIHZpZXcgb2YgdGhlXG4gKiBub3RlIHRoYXQgaGFzIHVuc2F2ZWQgY2hhbmdlcywgc28gdGhlIGNvbnRlbnQgaXQgcmV0dXJucyBpcyB3aGF0IHRoZSB1c2VyIHNlZXMuIERvIG5vdCBjYWxsIGl0IGZyb21cbiAqIGFuIGF1dG9tYXRpYyB0cmlnZ2VyIHRoYXQgb25seSBkZWNpZGVzIHdoZXRoZXIgdG8gYWN0LiBTZWUgYGdldENhY2hlU2FmZWAgaW5cbiAqIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliL21ldGFkYXRhLWNhY2hlYCBmb3Igd2h5LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmVhZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGZpbGUgb3IgYG51bGxgIGlmIHRoZSBmaWxlIGlzIG1pc3Npbmcgb3IgZGVsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRTYWZlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGxldCBjb250ZW50OiBudWxsIHwgc3RyaW5nID0gbnVsbDtcbiAgYXdhaXQgaW52b2tlRmlsZUFjdGlvblNhZmUoe1xuICAgIGFwcCxcbiAgICBhc3luYyBmaWxlQWN0aW9uKGZpbGUpIHtcbiAgICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgZmlsZSk7XG4gICAgICBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gICAgfSxcbiAgICBwYXRoT3JGaWxlXG4gIH0pO1xuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqXG4gKiBSZW5hbWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICogSWYgdGhlIG5ldyBwYXRoIGFscmVhZHkgZXhpc3RzLCB0aGUgZmlsZSB3aWxsIGJlIHJlbmFtZWQgdG8gYW4gYXZhaWxhYmxlIHBhdGguXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5hbWluZyB0aGUgZmlsZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuYW1lU2FmZShwYXJhbXM6IFJlbmFtZVNhZmVQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5ld1BhdGgsXG4gICAgb2xkUGF0aE9yQWJzdHJhY3RGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IG9sZEFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZTogb2xkUGF0aE9yQWJzdHJhY3RGaWxlIH0pO1xuXG4gIGNvbnN0IG5ld0F2YWlsYWJsZVBhdGggPSBnZXRTYWZlUmVuYW1lUGF0aCh7IGFwcCwgbmV3UGF0aCwgb2xkUGF0aE9yQWJzdHJhY3RGaWxlIH0pO1xuXG4gIGlmIChvbGRBYnN0cmFjdEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdBdmFpbGFibGVQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBpZiAob2xkQWJzdHJhY3RGaWxlLnBhdGggIT09IG5ld1BhdGgpIHtcbiAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci5yZW5hbWVGaWxlKG9sZEFic3RyYWN0RmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3QXZhaWxhYmxlUGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci5yZW5hbWVGaWxlKG9sZEFic3RyYWN0RmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpIHx8IGF3YWl0IGFwcC52YXVsdC5leGlzdHMob2xkQWJzdHJhY3RGaWxlLnBhdGgpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBTYXZlcyB0aGUgc3BlY2lmaWVkIG5vdGUgaW4gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBDYWxscyBgdmlldy5zYXZlKClgIG9uIGV2ZXJ5IG9wZW4gbWFya2Rvd24gdmlldyBvZiB0aGUgbm90ZSB0aGF0IGhhcyB1bnNhdmVkIGNoYW5nZXMuIFRoaXMgaXMgYVxuICogd3JpdGUsIGFuZCBzZXZlcmFsIGhlbHBlcnMgd2hvc2UgbmFtZXMgcmVhZCBhcyByZWFkcyBjYWxsIGl0OiB7QGxpbmsgcmVhZFNhZmV9LCBhbmQgYGdldENhY2hlU2FmZWAsXG4gKiBgZ2V0RnJvbnRtYXR0ZXJTYWZlYCBhbmQgYGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlYCBpbiBgQG1uYW91bW92L29ic2lkaWFuLWxpYi9tZXRhZGF0YS1jYWNoZWAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBub3RlIHRvIGJlIHNhdmVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBub3RlIGlzIHNhdmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZU5vdGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgZm9yIChjb25zdCBsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZpZXdUeXBlLk1hcmtkb3duKSkge1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGggJiYgbGVhZi52aWV3LmRpcnR5KSB7XG4gICAgICBhd2FpdCBsZWFmLnZpZXcuc2F2ZSgpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRyYXNoZXMgYW4gYWJzdHJhY3QgZmlsZSBzYWZlbHkgZnJvbSB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byB0cmFzaC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBpcyB0cmFzaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhc2hTYWZlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZSB9KTtcbiAgaWYgKCFmaWxlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZpbGUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChhd2FpdCBhcHAudmF1bHQuZXhpc3RzKGZpbGUucGF0aCkpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGdldE9ic2lkaWFuTGliRGVidWdnZXIoJ1ZhdWx0OnRyYXNoU2FmZScpKGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cmFzaGluZyAke2ZpbGUucGF0aH0sIGJ1dCB0aGUgZmlsZSBubyBsb25nZXIgZXhpc3RzLmAsIHsgZXJyb3IsIHBhdGg6IGZpbGUucGF0aCB9KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb3B5Rm9sZGVyU2FmZShwYXJhbXM6IENvcHlGb2xkZXJTYWZlUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBmb2xkZXIsXG4gICAgbmV3UGF0aFxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xuXG4gIC8vIENvcHlpbmcgYSBmb2xkZXIgaW50byBpdHMgb3duIHN1YnRyZWUgbWFrZXMgdGhlIHdhbGsgYmVsb3cgZ3JvdyB0aGUgc291cmNlIHRyZWUgYXMgaXQgcmVhZHMgaXQuXG4gIC8vIFJlZnVzaW5nIGlzIHRoZSBvbmx5IGZhaXRoZnVsIGFuc3dlcjogdGhlcmUgaXMgbm8gZmluaXRlIGNvcHkgdG8gbWFrZS5cbiAgaWYgKGlzQ2hpbGRPclNlbGYoeyBhcHAsIGNoaWxkUGF0aE9yRmlsZTogbmV3QXZhaWxhYmxlUGF0aCwgcGFyZW50UGF0aE9yRmlsZTogZm9sZGVyIH0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29weSBmb2xkZXIgJyR7Zm9sZGVyLnBhdGh9JyBpbnRvIGl0cyBvd24gc3VidHJlZSAnJHtuZXdBdmFpbGFibGVQYXRofSdgKTtcbiAgfVxuXG4gIC8vIENyZWF0aW5nIHRoZSBkZXN0aW5hdGlvbiBmaXJzdCBpcyB3aGF0IHByZXNlcnZlcyBhbiBFTVBUWSBzb3VyY2Ugc3ViZm9sZGVyLlxuICAvLyBBIGZpbGVzLW9ubHkgd2FsayB3b3VsZCBzaWxlbnRseSBkcm9wIGl0LlxuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3QXZhaWxhYmxlUGF0aCk7XG5cbiAgZm9yIChjb25zdCBjaGlsZCBvZiBmb2xkZXIuY2hpbGRyZW4pIHtcbiAgICBhd2FpdCBjb3B5U2FmZSh7IGFwcCwgbmV3UGF0aDogam9pbihuZXdBdmFpbGFibGVQYXRoLCBjaGlsZC5uYW1lKSwgb2xkUGF0aE9yRmlsZTogY2hpbGQgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW52b2tlRmlsZUFjdGlvblNhZmUocGFyYW1zOiBJbnZva2VGaWxlQWN0aW9uU2FmZVBhcmFtcyk6IFByb21pc2U8SW52b2tlRmlsZUFjdGlvblNhZmVSZXN1bHQ+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBmaWxlQWN0aW9uLFxuICAgIHBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKTtcbiAgbGV0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKHsgYXBwLCBwYXRoT3JGaWxlOiBwYXRoIH0pO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIEludm9rZUZpbGVBY3Rpb25TYWZlUmVzdWx0Lk5vdEludm9rZWQ7XG4gIH1cbiAgdHJ5IHtcbiAgICBhd2FpdCBmaWxlQWN0aW9uKGZpbGUpO1xuICAgIHJldHVybiBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdC5JbnZva2VkO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGZpbGUgPSBnZXRGaWxlT3JOdWxsKHsgYXBwLCBwYXRoT3JGaWxlOiBwYXRoIH0pO1xuICAgIC8vIEEgZmlsZSBtb3ZlZCBvdXRzaWRlIE9ic2lkaWFuIGlzIGdvbmUgZnJvbSBkaXNrIGJlZm9yZSB0aGUgd2F0Y2hlciBkcm9wcyBpdCBmcm9tIHRoZSB2YXVsdCwgc28gdGhlIHZhdWx0IGFsb25lXG4gICAgLy8gc3RpbGwgY2FsbHMgaXQgcHJlc2VudCBhbmQgdGhlIGFjdGlvbidzIGBFTk9FTlRgIHdvdWxkIGVzY2FwZS5cbiAgICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkIHx8ICFhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICAgIHJldHVybiBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdC5Ob3RJbnZva2VkO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZvbGRlciBleGlzdHMgb24gZGlzayBhbmQgaXMgZW1wdHkuXG4gKlxuICoge0BsaW5rIGlzRW1wdHlGb2xkZXJ9IGNhbGxzIGEgbWlzc2luZyBwYXRoIGVtcHR5LCB3aGljaCBpcyB3cm9uZyBmb3IgYSBjYWxsZXIgYWJvdXQgdG8gZGVsZXRlIGl0OiB0aGUgdmF1bHQgaW5kZXhcbiAqIGNhbiBzdGlsbCBob2xkIGEgZm9sZGVyIHRoZSBkaXNrIGhhcyBhbHJlYWR5IGxvc3QsIGJlY2F1c2UgdGhlIGluZGV4IGRyb3BzIGl0IGxhdGVyLCBmcm9tIHRoZSBmaWxlIHdhdGNoZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmb2xkZXIgLSBUaGUgZm9sZGVyIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBgdHJ1ZWAgd2hlbiB0aGUgZm9sZGVyIGV4aXN0cyBvbiBkaXNrIGFuZCBpcyBlbXB0eS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gaXNFeGlzdGluZ0VtcHR5Rm9sZGVyKGFwcDogQXBwLCBmb2xkZXI6IFRGb2xkZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qgc3RhdHMgPSBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5zdGF0KGZvbGRlci5wYXRoKTtcbiAgcmV0dXJuIHN0YXRzPy50eXBlID09PSAnZm9sZGVyJyAmJiBhd2FpdCBpc0VtcHR5Rm9sZGVyKGFwcCwgZm9sZGVyKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSw4QkFBK0I7QUFDL0Isc0JBQTBCO0FBQzFCLGtCQUtPO0FBQ1AseUJBQTRCO0FBQzVCLDRCQUE2QjtBQUM3Qiw2QkFJTztBQUNQLHNCQUtPO0FBVVAsK0JBQXVDO0FBQ3ZDLG1CQUF1QztBQUN2Qyx5QkFlTztBQUNQLGtCQUFrQjtBQUtYLElBQUsseUJBQUwsa0JBQUtBLDRCQUFMO0FBSUwsRUFBQUEsd0JBQUEsYUFBVTtBQUtWLEVBQUFBLHdCQUFBLGdCQUFhO0FBVEgsU0FBQUE7QUFBQSxHQUFBO0FBZUwsSUFBSyxzQkFBTCxrQkFBS0MseUJBQUw7QUFJTCxFQUFBQSxxQkFB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LElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLFdBQU8sNEJBQVEsS0FBSyxVQUFVO0FBQ3BDLE1BQUksV0FBTyxrQ0FBYyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUM7QUFDbEQsTUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO0FBQ3pCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSTtBQUNGLFVBQU0sV0FBVyxJQUFJO0FBQ3JCLFdBQU87QUFBQSxFQUNULFNBQVMsT0FBTztBQUNkLGVBQU8sa0NBQWMsRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDO0FBRzlDLFFBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDLE1BQU0sSUFBSSxNQUFNLFFBQVEsT0FBTyxJQUFJLEdBQUc7QUFDbEUsYUFBTztBQUFBLElBQ1Q7QUFDQSxVQUFNO0FBQUEsRUFDUjtBQUNGO0FBWUEsZUFBZSxzQkFBc0IsS0FBVSxRQUFtQztBQUNoRixRQUFNLFFBQVEsTUFBTSxJQUFJLE1BQU0sUUFBUSxLQUFLLE9BQU8sSUFBSTtBQUN0RCxTQUFPLE9BQU8sU0FBUyxZQUFZLE1BQU0sY0FBYyxLQUFLLE1BQU07QUFDcEU7IiwibmFtZXMiOlsiQ3JlYXRlRm9sZGVyU2FmZVJlc3VsdCIsIkVtcHR5Rm9sZGVyQmVoYXZpb3IiLCJJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdCJdfQ==
@@ -469,7 +469,7 @@ export declare function process(params: ProcessParams): Promise<void>;
469
469
  * This is NOT a pure read: it calls {@link saveNote} first, which saves any open editor view of the
470
470
  * note that has unsaved changes, so the content it returns is what the user sees. Do not call it from
471
471
  * an automatic trigger that only decides whether to act. See `getCacheSafe` in
472
- * `obsidian-dev-utils/obsidian/metadata-cache` for why.
472
+ * `@mnaoumov/obsidian-lib/metadata-cache` for why.
473
473
  *
474
474
  * @param app - The application instance.
475
475
  * @param pathOrFile - The path or file to read.
@@ -489,7 +489,7 @@ export declare function renameSafe(params: RenameSafeParams): Promise<string>;
489
489
  *
490
490
  * Calls `view.save()` on every open markdown view of the note that has unsaved changes. This is a
491
491
  * write, and several helpers whose names read as reads call it: {@link readSafe}, and `getCacheSafe`,
492
- * `getFrontmatterSafe` and `getBacklinksForFileSafe` in `obsidian-dev-utils/obsidian/metadata-cache`.
492
+ * `getFrontmatterSafe` and `getBacklinksForFileSafe` in `@mnaoumov/obsidian-lib/metadata-cache`.
493
493
  *
494
494
  * @param app - The Obsidian app instance.
495
495
  * @param pathOrFile - The note to be saved.