@mnaoumov/obsidian-lib 10.11.0 → 11.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.
- package/README.md +26 -0
- package/components/all-windows-status-bar-item-component/package.json +6 -0
- package/components/shared-component-pool-component/package.json +6 -0
- package/components/worker-component/package.json +6 -0
- package/components/worker-pool-component/package.json +6 -0
- package/components/workspace-layout-state-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +477 -285
- package/dist/lib/cjs/__merged.d.cts +26 -10
- package/dist/lib/cjs/anchored-suggest.cjs +1 -1
- package/dist/lib/cjs/app.cjs +2 -2
- package/dist/lib/cjs/async-with-notice.cjs +4 -4
- package/dist/lib/cjs/attachment-path.cjs +9 -9
- package/dist/lib/cjs/attachment-path.d.cts +3 -3
- package/dist/lib/cjs/attachment-unit-folder.cjs +2 -2
- package/dist/lib/cjs/backlink-index.cjs +5 -5
- package/dist/lib/cjs/backlink.cjs +7 -7
- package/dist/lib/cjs/bases-view-registrar.cjs +1 -1
- package/dist/lib/cjs/broken-link-candidates.cjs +1 -1
- package/dist/lib/cjs/bug-report-diagnostics.cjs +222 -0
- package/dist/lib/cjs/bug-report-diagnostics.d.cts +186 -0
- package/dist/lib/cjs/bug-report.cjs +38 -12
- package/dist/lib/cjs/bug-report.d.cts +65 -0
- package/dist/lib/cjs/bulk-operation-progress.cjs +1 -1
- package/dist/lib/cjs/bulk-operation.cjs +2 -2
- package/dist/lib/cjs/callout.cjs +6 -6
- package/dist/lib/cjs/canvas.cjs +11 -9
- package/dist/lib/cjs/canvas.d.cts +13 -0
- package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -3
- package/dist/lib/cjs/code-block-render-handoff.cjs +5 -5
- package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +4 -4
- package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +2 -2
- package/dist/lib/cjs/codemirror/index.cjs +7 -7
- package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +5 -5
- package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +2 -2
- package/dist/lib/cjs/codemirror/settings-facet.cjs +1 -1
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +17 -17
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +13 -13
- package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -2
- package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +10 -10
- package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +7 -7
- package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -3
- package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -3
- package/dist/lib/cjs/command-handlers/global-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/index.cjs +15 -15
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +95 -4
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +34 -2
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +1 -1
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -1
- package/dist/lib/cjs/community-plugins.cjs +3 -3
- package/dist/lib/cjs/components/abort-signal-component.cjs +2 -2
- package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
- package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +245 -0
- package/dist/lib/cjs/components/all-windows-status-bar-item-component.d.cts +146 -0
- package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
- package/dist/lib/cjs/components/async-events-component.cjs +1 -1
- package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +12 -12
- package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +2 -2
- package/dist/lib/cjs/components/component-ex.cjs +21 -11
- package/dist/lib/cjs/components/component-ex.d.cts +11 -0
- package/dist/lib/cjs/components/console-debug-component.cjs +2 -2
- package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -2
- package/dist/lib/cjs/components/disposable-component.cjs +2 -2
- package/dist/lib/cjs/components/embed-extensions-component.cjs +21 -4
- package/dist/lib/cjs/components/embed-extensions-component.d.cts +8 -0
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +24 -10
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.d.cts +9 -0
- package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +7 -7
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +2 -2
- package/dist/lib/cjs/components/incremental-file-index-component.cjs +4 -4
- package/dist/lib/cjs/components/index.cjs +54 -39
- package/dist/lib/cjs/components/index.d.cts +5 -0
- package/dist/lib/cjs/components/layout-ready-component.cjs +3 -3
- package/dist/lib/cjs/components/menu-event-registrar-component.cjs +2 -2
- package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
- package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
- package/dist/lib/cjs/components/plugin-gate-component.cjs +69 -36
- package/dist/lib/cjs/components/plugin-gate-component.d.cts +36 -13
- package/dist/lib/cjs/components/plugin-notice-component.cjs +39 -33
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +4 -3
- package/dist/lib/cjs/components/plugin-settings-component.cjs +119 -18
- package/dist/lib/cjs/components/plugin-settings-component.d.cts +35 -5
- package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -2
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +8 -8
- package/dist/lib/cjs/components/pointer-position-component.cjs +2 -2
- package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +3 -3
- package/dist/lib/cjs/components/registry-component.cjs +2 -2
- package/dist/lib/cjs/components/release-notes-component.cjs +6 -6
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +25 -25
- package/dist/lib/cjs/components/rmdir-guard-component.cjs +2 -2
- package/dist/lib/cjs/components/settings-facet-component.cjs +1 -1
- package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
- package/dist/lib/cjs/components/shared-component-pool-component.cjs +368 -0
- package/dist/lib/cjs/components/shared-component-pool-component.d.cts +129 -0
- package/dist/lib/cjs/components/style-sheet-component.cjs +3 -3
- package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -3
- package/dist/lib/cjs/components/templates-language-component.cjs +1 -1
- package/dist/lib/cjs/components/worker-component.cjs +363 -0
- package/dist/lib/cjs/components/worker-component.d.cts +156 -0
- package/dist/lib/cjs/components/worker-pool-component.cjs +185 -0
- package/dist/lib/cjs/components/worker-pool-component.d.cts +102 -0
- package/dist/lib/cjs/components/workspace-layout-state-component.cjs +495 -0
- package/dist/lib/cjs/components/workspace-layout-state-component.d.cts +239 -0
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
- package/dist/lib/cjs/constructors/index.cjs +1 -1
- package/dist/lib/cjs/css-class.cjs +5 -1
- package/dist/lib/cjs/css-class.d.cts +16 -0
- package/dist/lib/cjs/data-handler.cjs +264 -6
- package/dist/lib/cjs/data-handler.d.cts +219 -2
- package/dist/lib/cjs/data-stores/data-store-locations.cjs +82 -24
- package/dist/lib/cjs/data-stores/data-store-locations.d.cts +15 -0
- package/dist/lib/cjs/data-stores/data-store-replica.cjs +33 -5
- package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
- package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +2 -2
- package/dist/lib/cjs/data-stores/data-store-transport.cjs +81 -8
- package/dist/lib/cjs/data-stores/data-store-transport.d.cts +30 -1
- package/dist/lib/cjs/data-stores/index.cjs +6 -6
- package/dist/lib/cjs/data-stores/local-data-store.cjs +74 -10
- package/dist/lib/cjs/data-stores/local-data-store.d.cts +58 -1
- package/dist/lib/cjs/data-stores/shared-data-store.cjs +76 -19
- package/dist/lib/cjs/data-stores/shared-data-store.d.cts +18 -1
- package/dist/lib/cjs/dataview-link.cjs +2 -2
- package/dist/lib/cjs/dataview.cjs +27 -7
- package/dist/lib/cjs/dataview.d.cts +14 -0
- package/dist/lib/cjs/debug.cjs +3 -3
- package/dist/lib/cjs/demo-vault-helper.cjs +34 -6
- package/dist/lib/cjs/demo-vault-helper.d.cts +6 -2
- package/dist/lib/cjs/desktop-bulk-operation-git.cjs +10 -10
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +13 -13
- package/dist/lib/cjs/desktop-git-runner.cjs +4 -14
- package/dist/lib/cjs/desktop-git-runner.d.cts +8 -2
- package/dist/lib/cjs/desktop-operating-system.cjs +1 -1
- package/dist/lib/cjs/desktop-request-url-stream.cjs +8 -14
- package/dist/lib/cjs/desktop-trusted-input.cjs +2 -2
- package/dist/lib/cjs/disposable.cjs +150 -0
- package/dist/lib/cjs/disposable.d.cts +39 -0
- package/dist/lib/cjs/editor-extension-registrar.cjs +1 -1
- package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -2
- package/dist/lib/cjs/editor-suggest.cjs +1 -1
- package/dist/lib/cjs/editor.cjs +6 -6
- package/dist/lib/cjs/events.cjs +2 -2
- package/dist/lib/cjs/extensions-registrar.cjs +1 -1
- package/dist/lib/cjs/feature-request.cjs +1 -1
- package/dist/lib/cjs/file-change.cjs +10 -10
- package/dist/lib/cjs/file-explorer.cjs +2 -2
- package/dist/lib/cjs/file-manager.cjs +5 -5
- package/dist/lib/cjs/file-system.cjs +10 -10
- package/dist/lib/cjs/folder-note.cjs +4 -4
- package/dist/lib/cjs/frontmatter-formatting.cjs +7 -6
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +1 -1
- package/dist/lib/cjs/frontmatter.cjs +5 -5
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/git-rename-history.cjs +1 -1
- package/dist/lib/cjs/git-rename-history.d.cts +2 -2
- package/dist/lib/cjs/hotkey.cjs +1 -1
- package/dist/lib/cjs/hover-link-source-registrar.cjs +1 -1
- package/dist/lib/cjs/html-element.cjs +2 -2
- package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -1
- package/dist/lib/cjs/i18n/default-translations.cjs +1 -1
- package/dist/lib/cjs/i18n/i18n.cjs +7 -7
- package/dist/lib/cjs/i18n/index.cjs +4 -4
- package/dist/lib/cjs/i18n/locales/en.cjs +27 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +26 -0
- package/dist/lib/cjs/i18n/locales/index.cjs +2 -2
- package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -1
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +26 -0
- package/dist/lib/cjs/index.cjs +147 -126
- package/dist/lib/cjs/index.d.cts +7 -0
- package/dist/lib/cjs/inline-token-renderer.cjs +2 -2
- package/dist/lib/cjs/is-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/library-styles.cjs +3 -3
- package/dist/lib/cjs/link-and-tag-input-suggest.cjs +2 -2
- package/dist/lib/cjs/link.cjs +76 -56
- package/dist/lib/cjs/link.d.cts +20 -14
- package/dist/lib/cjs/logger.cjs +4 -4
- package/dist/lib/cjs/loop.cjs +10 -16
- package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +17 -2
- package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +7 -0
- package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -13
- package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -2
- package/dist/lib/cjs/markdown-view.cjs +191 -3
- package/dist/lib/cjs/markdown-view.d.cts +48 -1
- package/dist/lib/cjs/markdown.cjs +12 -12
- package/dist/lib/cjs/metadata-cache.cjs +23 -23
- package/dist/lib/cjs/metadata-cache.d.cts +5 -4
- package/dist/lib/cjs/misplaced-attachment.cjs +297 -0
- package/dist/lib/cjs/misplaced-attachment.d.cts +228 -0
- package/dist/lib/cjs/mobile-app-info.cjs +1 -1
- package/dist/lib/cjs/modals/alert.cjs +4 -4
- package/dist/lib/cjs/modals/code-block-builder.cjs +7 -7
- package/dist/lib/cjs/modals/confirm.cjs +4 -4
- package/dist/lib/cjs/modals/copy-text-manually.cjs +181 -0
- package/dist/lib/cjs/modals/copy-text-manually.d.cts +38 -0
- package/dist/lib/cjs/modals/index.cjs +17 -11
- package/dist/lib/cjs/modals/index.d.cts +2 -0
- package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
- package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -3
- package/dist/lib/cjs/modals/modal.cjs +3 -3
- package/dist/lib/cjs/modals/prompt.cjs +10 -10
- package/dist/lib/cjs/modals/prompt.d.cts +1 -1
- package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +202 -0
- package/dist/lib/cjs/modals/review-bug-report-diagnostics.d.cts +30 -0
- package/dist/lib/cjs/modals/select-item.cjs +6 -6
- package/dist/lib/cjs/modals/select-option.cjs +3 -3
- package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
- package/dist/lib/cjs/note-priority.cjs +2 -2
- package/dist/lib/cjs/notebook-navigator.cjs +12 -2
- package/dist/lib/cjs/notebook-navigator.d.cts +6 -0
- package/dist/lib/cjs/obsidian-lib-state.cjs +1 -1
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +1 -1
- package/dist/lib/cjs/obsidian-settings.cjs +1 -1
- package/dist/lib/cjs/obsidian-word-characters.cjs +1 -1
- package/dist/lib/cjs/parse-link.cjs +14 -14
- package/dist/lib/cjs/path-compatibility.cjs +368 -0
- package/dist/lib/cjs/path-compatibility.d.cts +263 -0
- package/dist/lib/cjs/path-settings.cjs +3 -3
- package/dist/lib/cjs/pdf.cjs +2 -2
- package/dist/lib/cjs/plugin/index.cjs +18 -12
- package/dist/lib/cjs/plugin/index.d.cts +2 -0
- package/dist/lib/cjs/plugin/plugin-api.cjs +21 -12
- package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -1
- package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +6 -3
- package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +5 -0
- package/dist/lib/cjs/plugin/plugin-context.cjs +10 -9
- package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -1
- package/dist/lib/cjs/plugin/plugin-event-source.d.cts +4 -4
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +49 -4
- package/dist/lib/cjs/plugin/plugin-install-state.d.cts +30 -0
- package/dist/lib/cjs/plugin/plugin-instance.cjs +450 -0
- package/dist/lib/cjs/plugin/plugin-instance.d.cts +258 -0
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -1
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +6 -4
- package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +15 -15
- package/dist/lib/cjs/plugin/plugin.cjs +133 -34
- package/dist/lib/cjs/plugin/plugin.d.cts +35 -5
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +1 -1
- package/dist/lib/cjs/plugin/third-party-plugin.cjs +231 -0
- package/dist/lib/cjs/plugin/third-party-plugin.d.cts +244 -0
- package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -2
- package/dist/lib/cjs/popovers/field-popover.cjs +4 -4
- package/dist/lib/cjs/popovers/index.cjs +3 -3
- package/dist/lib/cjs/popovers/popover-anchor.cjs +1 -1
- package/dist/lib/cjs/popovers/popover.cjs +5 -5
- package/dist/lib/cjs/queue.cjs +8 -8
- package/dist/lib/cjs/react/app-context.cjs +3 -3
- package/dist/lib/cjs/react/index.cjs +1 -1
- package/dist/lib/cjs/reference-definition.cjs +1 -1
- package/dist/lib/cjs/reference.cjs +3 -3
- package/dist/lib/cjs/release-asset.cjs +5 -5
- package/dist/lib/cjs/rendered-markdown.cjs +4 -4
- package/dist/lib/cjs/request-url.cjs +4 -4
- package/dist/lib/cjs/resource-lock.cjs +46 -42
- package/dist/lib/cjs/resource-lock.d.cts +8 -7
- package/dist/lib/cjs/resource-url.cjs +3 -3
- package/dist/lib/cjs/ribbon-icon-registrar.cjs +1 -1
- package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +7 -7
- package/dist/lib/cjs/setting-components/date-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/date-time-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/email-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/file-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/folder-list-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/hotkey-component.cjs +5 -5
- package/dist/lib/cjs/setting-components/index.cjs +30 -30
- package/dist/lib/cjs/setting-components/list-component.cjs +5 -5
- package/dist/lib/cjs/setting-components/month-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/multiple-email-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/multiple-text-component.cjs +9 -6
- package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +4 -1
- package/dist/lib/cjs/setting-components/number-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/password-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -3
- package/dist/lib/cjs/setting-components/tag-list-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/telephone-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/text-based-component.cjs +1 -1
- package/dist/lib/cjs/setting-components/time-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -1
- package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/url-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/validator-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/week-component.cjs +4 -4
- package/dist/lib/cjs/setting-ex.cjs +26 -26
- package/dist/lib/cjs/setting-group-ex.cjs +2 -2
- package/dist/lib/cjs/settings-recovery.cjs +217 -0
- package/dist/lib/cjs/settings-recovery.d.cts +178 -0
- package/dist/lib/cjs/settings-tabs.cjs +5 -5
- package/dist/lib/cjs/status-bar-item-registrar.cjs +1 -1
- package/dist/lib/cjs/templater.cjs +14 -4
- package/dist/lib/cjs/templater.d.cts +6 -0
- package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -2
- package/dist/lib/cjs/transformers/index.cjs +1 -1
- package/dist/lib/cjs/trusted-input.cjs +1 -1
- package/dist/lib/cjs/validation.cjs +4 -4
- package/dist/lib/cjs/vault-delete.cjs +6 -6
- package/dist/lib/cjs/vault-transaction.cjs +5 -5
- package/dist/lib/cjs/vault.cjs +12 -12
- package/dist/lib/cjs/view-registrar.cjs +1 -1
- package/dist/lib/cjs/virtual-file.cjs +16 -14
- package/dist/lib/cjs/virtual-file.d.cts +2 -1
- package/dist/lib/cjs/wasm.cjs +119 -0
- package/dist/lib/cjs/wasm.d.cts +54 -0
- package/dist/lib/cjs/worker-protocol.cjs +209 -0
- package/dist/lib/cjs/worker-protocol.d.cts +282 -0
- package/dist/lib/cjs/workspace.cjs +1 -1
- package/dist/lib/esm/__merged.d.mts +26 -10
- package/dist/lib/esm/__merged.mjs +215 -5
- package/dist/lib/esm/app.mjs +2 -2
- package/dist/lib/esm/attachment-path.d.mts +3 -3
- package/dist/lib/esm/attachment-path.mjs +2 -2
- package/dist/lib/esm/backlink-index.mjs +2 -2
- package/dist/lib/esm/bug-report-diagnostics.d.mts +186 -0
- package/dist/lib/esm/bug-report-diagnostics.mjs +127 -0
- package/dist/lib/esm/bug-report.d.mts +65 -0
- package/dist/lib/esm/bug-report.mjs +33 -10
- package/dist/lib/esm/canvas.d.mts +13 -0
- package/dist/lib/esm/canvas.mjs +6 -5
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +13 -13
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +14 -14
- package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +7 -7
- package/dist/lib/esm/command-handlers/editor-command-handler.mjs +8 -8
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +34 -2
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +99 -3
- package/dist/lib/esm/components/all-windows-status-bar-item-component.d.mts +146 -0
- package/dist/lib/esm/components/all-windows-status-bar-item-component.mjs +154 -0
- package/dist/lib/esm/components/component-ex.d.mts +11 -0
- package/dist/lib/esm/components/component-ex.mjs +19 -6
- package/dist/lib/esm/components/disposable-component.mjs +1 -1
- package/dist/lib/esm/components/embed-extensions-component.d.mts +8 -0
- package/dist/lib/esm/components/embed-extensions-component.mjs +20 -3
- package/dist/lib/esm/components/embeddable-markdown-editor-component.d.mts +9 -0
- package/dist/lib/esm/components/embeddable-markdown-editor-component.mjs +16 -2
- package/dist/lib/esm/components/index.d.mts +5 -0
- package/dist/lib/esm/components/index.mjs +12 -2
- package/dist/lib/esm/components/plugin-gate-component.d.mts +36 -13
- package/dist/lib/esm/components/plugin-gate-component.mjs +61 -26
- package/dist/lib/esm/components/plugin-notice-component.d.mts +4 -3
- package/dist/lib/esm/components/plugin-notice-component.mjs +30 -21
- package/dist/lib/esm/components/plugin-settings-component.d.mts +35 -5
- package/dist/lib/esm/components/plugin-settings-component.mjs +105 -4
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +2 -2
- package/dist/lib/esm/components/shared-component-pool-component.d.mts +129 -0
- package/dist/lib/esm/components/shared-component-pool-component.mjs +280 -0
- package/dist/lib/esm/components/worker-component.d.mts +156 -0
- package/dist/lib/esm/components/worker-component.mjs +279 -0
- package/dist/lib/esm/components/worker-pool-component.d.mts +102 -0
- package/dist/lib/esm/components/worker-pool-component.mjs +95 -0
- package/dist/lib/esm/components/workspace-layout-state-component.d.mts +239 -0
- package/dist/lib/esm/components/workspace-layout-state-component.mjs +404 -0
- package/dist/lib/esm/css-class.d.mts +16 -0
- package/dist/lib/esm/css-class.mjs +5 -1
- package/dist/lib/esm/data-handler.d.mts +219 -2
- package/dist/lib/esm/data-handler.mjs +262 -5
- package/dist/lib/esm/data-stores/data-store-locations.d.mts +15 -0
- package/dist/lib/esm/data-stores/data-store-locations.mjs +80 -22
- package/dist/lib/esm/data-stores/data-store-replica.mjs +33 -5
- package/dist/lib/esm/data-stores/data-store-seeds.d.mts +2 -2
- package/dist/lib/esm/data-stores/data-store-seeds.mjs +4 -4
- package/dist/lib/esm/data-stores/data-store-transport.d.mts +30 -1
- package/dist/lib/esm/data-stores/data-store-transport.mjs +78 -5
- package/dist/lib/esm/data-stores/local-data-store.d.mts +58 -1
- package/dist/lib/esm/data-stores/local-data-store.mjs +71 -9
- package/dist/lib/esm/data-stores/shared-data-store.d.mts +18 -1
- package/dist/lib/esm/data-stores/shared-data-store.mjs +72 -15
- package/dist/lib/esm/dataview.d.mts +14 -0
- package/dist/lib/esm/dataview.mjs +19 -1
- package/dist/lib/esm/demo-vault-helper.d.mts +6 -2
- package/dist/lib/esm/demo-vault-helper.mjs +29 -1
- package/dist/lib/esm/desktop-demo-vault-opener.mjs +1 -1
- package/dist/lib/esm/desktop-git-runner.d.mts +8 -2
- package/dist/lib/esm/desktop-git-runner.mjs +3 -3
- package/dist/lib/esm/desktop-request-url-stream.mjs +4 -10
- package/dist/lib/esm/disposable.d.mts +39 -0
- package/dist/lib/esm/disposable.mjs +64 -0
- package/dist/lib/esm/file-system.mjs +2 -2
- package/dist/lib/esm/frontmatter-formatting.mjs +2 -1
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/git-rename-history.d.mts +2 -2
- package/dist/lib/esm/git-rename-history.mjs +1 -1
- package/dist/lib/esm/i18n/locales/en.d.mts +26 -0
- package/dist/lib/esm/i18n/locales/en.mjs +27 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +26 -0
- package/dist/lib/esm/index.d.mts +7 -0
- package/dist/lib/esm/index.mjs +15 -1
- package/dist/lib/esm/link.d.mts +20 -14
- package/dist/lib/esm/link.mjs +57 -38
- package/dist/lib/esm/loop.mjs +2 -8
- package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +7 -0
- package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +16 -1
- package/dist/lib/esm/markdown-view.d.mts +48 -1
- package/dist/lib/esm/markdown-view.mjs +192 -2
- package/dist/lib/esm/metadata-cache.d.mts +5 -4
- package/dist/lib/esm/metadata-cache.mjs +6 -6
- package/dist/lib/esm/misplaced-attachment.d.mts +228 -0
- package/dist/lib/esm/misplaced-attachment.mjs +212 -0
- package/dist/lib/esm/modals/copy-text-manually.d.mts +38 -0
- package/dist/lib/esm/modals/copy-text-manually.mjs +99 -0
- package/dist/lib/esm/modals/index.d.mts +2 -0
- package/dist/lib/esm/modals/index.mjs +5 -1
- package/dist/lib/esm/modals/prompt.d.mts +1 -1
- package/dist/lib/esm/modals/prompt.mjs +1 -1
- package/dist/lib/esm/modals/review-bug-report-diagnostics.d.mts +30 -0
- package/dist/lib/esm/modals/review-bug-report-diagnostics.mjs +120 -0
- package/dist/lib/esm/notebook-navigator.d.mts +6 -0
- package/dist/lib/esm/notebook-navigator.mjs +11 -2
- package/dist/lib/esm/parse-link.mjs +4 -4
- package/dist/lib/esm/path-compatibility.d.mts +263 -0
- package/dist/lib/esm/path-compatibility.mjs +277 -0
- package/dist/lib/esm/plugin/index.d.mts +2 -0
- package/dist/lib/esm/plugin/index.mjs +6 -2
- package/dist/lib/esm/plugin/plugin-api.d.mts +5 -1
- package/dist/lib/esm/plugin/plugin-api.mjs +13 -4
- package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +5 -0
- package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +3 -1
- package/dist/lib/esm/plugin/plugin-context.mjs +2 -1
- package/dist/lib/esm/plugin/plugin-event-source.d.mts +4 -4
- package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
- package/dist/lib/esm/plugin/plugin-install-state.d.mts +30 -0
- package/dist/lib/esm/plugin/plugin-install-state.mjs +44 -1
- package/dist/lib/esm/plugin/plugin-instance.d.mts +258 -0
- package/dist/lib/esm/plugin/plugin-instance.mjs +367 -0
- package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +6 -4
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -1
- package/dist/lib/esm/plugin/plugin.d.mts +35 -5
- package/dist/lib/esm/plugin/plugin.mjs +118 -9
- package/dist/lib/esm/plugin/third-party-plugin.d.mts +244 -0
- package/dist/lib/esm/plugin/third-party-plugin.mjs +147 -0
- package/dist/lib/esm/release-asset.mjs +1 -1
- package/dist/lib/esm/resource-lock.d.mts +8 -7
- package/dist/lib/esm/resource-lock.mjs +31 -26
- package/dist/lib/esm/setting-components/multiple-text-component.d.mts +4 -1
- package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -3
- package/dist/lib/esm/settings-recovery.d.mts +178 -0
- package/dist/lib/esm/settings-recovery.mjs +125 -0
- package/dist/lib/esm/settings-tabs.mjs +2 -2
- package/dist/lib/esm/templater.d.mts +6 -0
- package/dist/lib/esm/templater.mjs +11 -2
- package/dist/lib/esm/vault.mjs +1 -1
- package/dist/lib/esm/virtual-file.d.mts +2 -1
- package/dist/lib/esm/virtual-file.mjs +7 -5
- package/dist/lib/esm/wasm.d.mts +54 -0
- package/dist/lib/esm/wasm.mjs +30 -0
- package/dist/lib/esm/worker-protocol.d.mts +282 -0
- package/dist/lib/esm/worker-protocol.mjs +113 -0
- package/dist/styles.css +16 -1
- package/modals/copy-text-manually/package.json +6 -0
- package/modals/review-bug-report-diagnostics/package.json +6 -0
- package/package.json +10 -8
- package/plugin/plugin-instance/package.json +6 -0
- package/plugin/third-party-plugin/package.json +6 -0
|
@@ -157,6 +157,15 @@ export declare class EmbeddableMarkdownEditorComponent extends ComponentEx {
|
|
|
157
157
|
* @returns The CodeMirror view.
|
|
158
158
|
*/
|
|
159
159
|
get editorView(): EditorView;
|
|
160
|
+
/**
|
|
161
|
+
* Whether the editor holds the focus within its window.
|
|
162
|
+
*
|
|
163
|
+
* Unlike CodeMirror's `EditorView.hasFocus`, this does not also require the window to have the operating system's
|
|
164
|
+
* focus, so it stays `true` while the user is in another application or another Obsidian window is in front.
|
|
165
|
+
*
|
|
166
|
+
* @returns `true` when the editor's content element is its document's active element.
|
|
167
|
+
*/
|
|
168
|
+
get hasFocus(): boolean;
|
|
160
169
|
/**
|
|
161
170
|
* The current document.
|
|
162
171
|
*
|
|
@@ -63,6 +63,17 @@ class EmbeddableMarkdownEditorComponent extends ComponentEx {
|
|
|
63
63
|
get editorView() {
|
|
64
64
|
return this.getScrollableEditor().cm;
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Whether the editor holds the focus within its window.
|
|
68
|
+
*
|
|
69
|
+
* Unlike CodeMirror's `EditorView.hasFocus`, this does not also require the window to have the operating system's
|
|
70
|
+
* focus, so it stays `true` while the user is in another application or another Obsidian window is in front.
|
|
71
|
+
*
|
|
72
|
+
* @returns `true` when the editor's content element is its document's active element.
|
|
73
|
+
*/
|
|
74
|
+
get hasFocus() {
|
|
75
|
+
return isEditorViewFocusedInItsWindow(this.getScrollableEditor().activeCM);
|
|
76
|
+
}
|
|
66
77
|
/**
|
|
67
78
|
* The current document.
|
|
68
79
|
*
|
|
@@ -161,7 +172,7 @@ class EmbeddableMarkdownEditorComponent extends ComponentEx {
|
|
|
161
172
|
$object: this.app.workspace,
|
|
162
173
|
methodName: "setActiveLeaf",
|
|
163
174
|
patchHandler: ({ fallback }) => {
|
|
164
|
-
if (scrollableEditor.activeCM
|
|
175
|
+
if (isEditorViewFocusedInItsWindow(scrollableEditor.activeCM)) {
|
|
165
176
|
return;
|
|
166
177
|
}
|
|
167
178
|
fallback();
|
|
@@ -287,7 +298,10 @@ function getScrollableMarkdownEditorConstructor(app) {
|
|
|
287
298
|
widgetEditorView.unload();
|
|
288
299
|
}
|
|
289
300
|
}
|
|
301
|
+
function isEditorViewFocusedInItsWindow(editorView) {
|
|
302
|
+
return editorView.root.activeElement === editorView.contentDOM;
|
|
303
|
+
}
|
|
290
304
|
export {
|
|
291
305
|
EmbeddableMarkdownEditorComponent
|
|
292
306
|
};
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2VtYmVkZGFibGUtbWFya2Rvd24tZWRpdG9yLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgY2xhc3Mge0BsaW5rIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudH06IGEgZnVsbCBPYnNpZGlhbiBNYXJrZG93biBlZGl0b3IgKExpdmUgUHJldmlldywgZWRpdG9yXG4gKiBjb21tYW5kcywgaG90a2V5cykgbW91bnRlZCBpbiBhbnkgZWxlbWVudCBhbmQgb3duZWQgYXMgYSBjb21wb25lbnQuXG4gKlxuICogT2JzaWRpYW4gZG9lcyBub3QgZXhwb3J0IGl0cyBlZGl0b3IgY2xhc3MsIHNvIHRoZSBjb21wb25lbnQgYm9ycm93cyBpdCBmcm9tIGEgdGhyb3dhd2F5IE1hcmtkb3duIGVtYmVkOiBhbiBlZGl0YWJsZVxuICogZW1iZWQgYnVpbGRzIGFuIGlmcmFtZWQgZWRpdG9yIHdob3NlIGdyYW5kcGFyZW50IHByb3RvdHlwZSBpcyB0aGUgc2Nyb2xsYWJsZSBNYXJrZG93biBlZGl0b3IgZXZlcnkgZW1iZWQgYW5kIHRhYmxlXG4gKiBjZWxsIGVkaXRvciB1c2VzLiBUaGUgcHJvYmUgb3BlbnMgbm8gbGVhZiBhbmQgZmlyZXMgbm8gd29ya3NwYWNlIGV2ZW50IChgZW1iZWRkYWJsZS1tYXJrZG93bi1lZGl0b3ItY29tcG9uZW50XG4gKiAub2JzaWRpYW4uaW50ZWdyYXRpb24udGVzdC50c2AgbWVhc3VyZXMgdGhhdCksIGFuZCBpdCBydW5zIG9uY2UgcGVyIGNvcHkgb2YgdGhpcyBsaWJyYXJ5LCBvbiBmaXJzdCB1c2UgcmF0aGVyIHRoYW4gYXRcbiAqIG1vZHVsZSBsb2FkLiBUaGUgY2xhc3MgaXMgY2FjaGVkIHBlciBjb3B5IGFuZCBuZXZlciBpbiB0aGUgc2hhcmVkLXN0YXRlIGJhZywgYmVjYXVzZSBhIGNvbnN0cnVjdG9yIGlzIG5vdCBwbGFpbiBkYXRhLlxuICpcbiAqIEFkYXB0ZWQgZnJvbSB0aGUgXCJFbWJlZGRhYmxlIENNIE1hcmtkb3duIEVkaXRvclwiIGdpc3RcbiAqIChodHRwczovL2dpc3QuZ2l0aHViLmNvbS9GZXZvbC9jYWE0NzhjZTMwM2U2OWVhYmVkZTdiMTJiMjMyMzgzOCksIGl0c2VsZiBhIHJld29yayBvZiB0aGUgYEthbmJhbmAgcGx1Z2luJ3NcbiAqIGBzcmMvY29tcG9uZW50cy9FZGl0b3IvTWFya2Rvd25FZGl0b3IudHN4YCwgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGJlbG93LlxuICpcbiAqIENvcHlyaWdodCAyMDI0IE1hdHRoZXcgTWV5ZXJzLCBGZXZvbFxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZFxuICogZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIOKAnFNvZnR3YXJl4oCdKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbiAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0b1xuICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZVxuICogU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1JcbiAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1JcbiAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4vLyBjc3BlbGw6d29yZHMgRmV2b2wgLS0gVGhlIGdpc3QgYXV0aG9yJ3MgaGFuZGxlLCBhcyB0aGUgbGljZW5zZSBub3RpY2UgYWJvdmUgbmFtZXMgaXQuXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBCdWlsZHMgb24gT2JzaWRpYW4ncyB1bmV4cG9ydGVkIGVkaXRvciBjbGFzcywgd2hpY2ggb25seSBhIHJ1bm5pbmcgT2JzaWRpYW4gaGFzOyBjb3ZlcmVkIGJ5IGl0cyBpbnRlZ3JhdGlvbiB0ZXN0LiAqL1xuXG5pbXBvcnQgdHlwZSB7IEV4dGVuc2lvbiB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB0eXBlIHsgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHR5cGUge1xuICBFeHRyYWN0Q29uc3RydWN0b3IsXG4gIE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3LFxuICBNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlld093bmVyLFxuICBXaWRnZXRFZGl0b3JWaWV3XG59IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBFZGl0b3JTZWxlY3Rpb24sXG4gIFByZWNcbn0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHtcbiAgRWRpdG9yVmlldyxcbiAga2V5bWFwLFxuICBwbGFjZWhvbGRlclxufSBmcm9tICdAY29kZW1pcnJvci92aWV3JztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZnVuY3Rpb24nO1xuaW1wb3J0IHsgY2FzdFRvIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyBTY29wZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuL2NvbXBvbmVudC1leC50cyc7XG5pbXBvcnQgeyBNb25rZXlBcm91bmRDb21wb25lbnQgfSBmcm9tICcuL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBvZiB0aGUge0BsaW5rIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudH0gY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBhZGRlZCB0byB0aGUgZWRpdG9yIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSBjbHM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoZSBlZGl0b3IgaXMgbW91bnRlZCBpbi4gVGhlIGVkaXRvciBhcHBlbmRzIGl0cyBvd24gZWxlbWVudCB0byBpdCBhbmQgcmVtb3ZlcyBvbmx5IHRoYXQgZWxlbWVudCB3aGVuXG4gICAqIGl0IHVubG9hZHMuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHNlbGVjdGlvbiwgYXMgZG9jdW1lbnQgb2Zmc2V0cy4gVGhlIGN1cnNvciBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY3Vyc29yTG9jYXRpb24/OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMsIHdoaWxlIHRoZSBjb21wb25lbnQgaXMgc3RpbGwgbG9hZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgb25CbHVyPzogKGNvbXBvbmVudDogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZXZlcnkgY2hhbmdlIHRvIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9uQ2hhbmdlPzogKHVwZGF0ZTogVmlld1VwZGF0ZSwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBgRW50ZXJgLCBgU2hpZnQrRW50ZXJgLCBgTW9kK0VudGVyYCBhbmQgYE1vZCtTaGlmdCtFbnRlcmAuXG4gICAqXG4gICAqIFdoZW4gZ2l2ZW4sIGBNb2QrRW50ZXJgIG5vIGxvbmdlciBydW5zIHRoZSBPYnNpZGlhbiBob3RrZXkgYm91bmQgdG8gaXQgKGJ5IGRlZmF1bHQsIG9wZW5pbmcgdGhlIGxpbmsgdW5kZXIgdGhlXG4gICAqIGN1cnNvciBpbiBhIG5ldyB0YWIpIHdoaWxlIHRoZSBlZGl0b3IgaGFzIHRoZSBmb2N1cywgc28gYSBmb3JtIGNhbiB1c2UgaXQgdG8gc3VibWl0LlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUga2V5IHdhcyBoYW5kbGVkLCB3aGljaCBzdG9wcyB0aGUgZWRpdG9yIGluc2VydGluZyBhIGxpbmUgYnJlYWs7IGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgb25FbnRlcj86IChwYXJhbXM6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudEVudGVyUGFyYW1zKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgb24gYEVzY2FwZWAuIFdoZW4gZ2l2ZW4sIHRoZSBrZXkgZ29lcyBubyBmdXJ0aGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb25Fc2NhcGU/OiAoY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBhIHBhc3RlIGludG8gdGhlIGVkaXRvciwgYmVmb3JlIHRoZSBlZGl0b3IgaGFuZGxlcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IG9uUGFzdGU/OiAoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHNob3duIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBlbXB0eS5cbiAgICovXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwYXJhbWV0ZXJzIG9mIHtAbGluayBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5vbkVudGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRFbnRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZWRpdG9yIGNvbXBvbmVudCB0aGUga2V5IHdhcyBwcmVzc2VkIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsYXRmb3JtIG1vZGlmaWVyIChgQ3RybGAsIG9yIGBDbWRgIG9uIG1hY09TKSB3YXMgaGVsZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzTW9kaWZpZXJQcmVzc2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGBTaGlmdGAgd2FzIGhlbGQuXG4gICAqL1xuICByZWFkb25seSBpc1NoaWZ0UHJlc3NlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHNlbGVjdGlvbiBpbiBhbiB7QGxpbmsgRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50fSwgYXMgZG9jdW1lbnQgb2Zmc2V0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRTZWxlY3Rpb24ge1xuICAvKipcbiAgICogVGhlIG9mZnNldCB0aGUgc2VsZWN0aW9uIHN0YXJ0cyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgYW5jaG9yOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvZmZzZXQgdGhlIHNlbGVjdGlvbiBleHRlbmRzIHRvLCB3aGVyZSB0aGUgY3Vyc29yIGlzLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRWRpdG9ySG9va3Mge1xuICByZWFkb25seSBidWlsZEV4dGVuc2lvbnM6ICgpID0+IEV4dGVuc2lvbltdO1xuICByZWFkb25seSBoYW5kbGVVcGRhdGU6ICh1cGRhdGU6IFZpZXdVcGRhdGUsIGlzQ2hhbmdlZDogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxudHlwZSBFbWJlZGRlZFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yID0gbmV3IChcbiAgYXBwOiBBcHAsXG4gIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCxcbiAgb3duZXI6IE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3T3duZXIsXG4gIGhvb2tzOiBFZGl0b3JIb29rc1xuKSA9PiBNYXJrZG93blNjcm9sbGFibGVFZGl0VmlldztcblxudHlwZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlldz47XG5cbmludGVyZmFjZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvckNhY2hlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMgLS0gRmlsbGVkIG9uIGZpcnN0IHVzZS5cbiAgdmFsdWU6IG51bGwgfCBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cblxuLyogZXNsaW50LWRpc2FibGUgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyAtLSBUaGUgb3duZXIgbGVhcm5zIGl0cyBlZGl0b3IgYWZ0ZXIgdGhlIGVkaXRvciwgd2hpY2ggbmVlZHMgdGhlIG93bmVyLCBpcyBidWlsdC4gKi9cbmludGVyZmFjZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JPd25lciBleHRlbmRzIE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3T3duZXIge1xuICBlZGl0TW9kZTogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcgfCBudWxsO1xuICByZWFkb25seSBnZXRNb2RlOiAoKSA9PiAnc291cmNlJztcbn1cbi8qIGVzbGludC1lbmFibGUgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyAtLSBSZXN0b3JlIHRoZSBydWxlIGFmdGVyIHRoZSBvd25lci4gKi9cblxuaW50ZXJmYWNlIFNjcm9sbGFibGVNYXJrZG93bkVkaXRvclByb3RvdHlwZSB7XG4gIHJlYWRvbmx5IGNvbnN0cnVjdG9yOiBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cblxuY29uc3Qgc2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZTogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZSA9IHsgdmFsdWU6IG51bGwgfTtcblxuLyoqXG4gKiBBIGZ1bGwgT2JzaWRpYW4gTWFya2Rvd24gZWRpdG9yIG1vdW50ZWQgaW4gYW55IGVsZW1lbnQ6IExpdmUgUHJldmlldywgZWRpdG9yIGNvbW1hbmRzLCBob3RrZXlzIGFuZCB0aGUgZWRpdG9yXG4gKiBzdWdnZXN0ZXJzIGFsbCB3b3JrIGluIGl0IGFzIHRoZXkgZG8gaW4gYSBub3RlLlxuICpcbiAqIEFkZCBpdCBhcyBhIGNoaWxkIG9mIHRoZSBjb21wb25lbnQgdGhhdCBvd25zIGl0cyBlbGVtZW50OyB1bmxvYWRpbmcgaXQgZGVzdHJveXMgdGhlIGVkaXRvciBhbmQgcmVtb3ZlcyB0aGUgZWRpdG9yJ3NcbiAqIGVsZW1lbnQuIEl0IHdvcmtzIG9uIGRlc2t0b3AgYW5kIG1vYmlsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCh7XG4gKiAgIGFwcDogdGhpcy5hcHAsXG4gKiAgIGNvbnRhaW5lckVsLFxuICogICBvbkVudGVyOiAoeyBjb21wb25lbnQsIGlzTW9kaWZpZXJQcmVzc2VkIH0pID0+IHtcbiAqICAgICBpZiAoIWlzTW9kaWZpZXJQcmVzc2VkKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICogICAgIHNhdmUoY29tcG9uZW50LnZhbHVlKTtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfSxcbiAqICAgdmFsdWU6ICdJbml0aWFsIHRleHQnXG4gKiB9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBlZGl0b3IsIGFzIGluIGEgbm90ZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGVkaXRvci5cbiAgICovXG4gIHB1YmxpYyBnZXQgZWRpdG9yKCk6IEVkaXRvciB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLmVkaXRvcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIENvZGVNaXJyb3IgdmlldyBiZWhpbmQgdGhlIGVkaXRvci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIENvZGVNaXJyb3Igdmlldy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZWRpdG9yVmlldygpOiBFZGl0b3JWaWV3IHtcbiAgICByZXR1cm4gdGhpcy5nZXRTY3JvbGxhYmxlRWRpdG9yKCkuY207XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZG9jdW1lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBkb2N1bWVudCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFNjcm9sbGFibGVFZGl0b3IoKS5jbS5zdGF0ZS5kb2MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGUgZWRpdG9yIGlzIG1vdW50ZWQgaW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xzOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3Vyc29yTG9jYXRpb246IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudFNlbGVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkga2V5bWFwU2NvcGU6IFNjb3BlO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQmx1cjogKChjb21wb25lbnQ6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCkgPT4gdm9pZCkgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQ2hhbmdlOiAoKHVwZGF0ZTogVmlld1VwZGF0ZSwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQpIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkVudGVyOiAoKHBhcmFtczogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50RW50ZXJQYXJhbXMpID0+IGJvb2xlYW4pIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkVzY2FwZTogKChjb21wb25lbnQ6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCkgPT4gdm9pZCkgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uUGFzdGU6ICgoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQpIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvd25lcjogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yT3duZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmc7XG4gIHByaXZhdGUgc2Nyb2xsYWJsZUVkaXRvcjogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgY29tcG9uZW50LiBUaGUgZWRpdG9yIGlzIGJ1aWx0IHdoZW4gdGhlIGNvbXBvbmVudCBsb2Fkcy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLmNvbnRhaW5lckVsID0gcGFyYW1zLmNvbnRhaW5lckVsO1xuICAgIHRoaXMuY2xzID0gcGFyYW1zLmNscyA/PyAnJztcbiAgICB0aGlzLmN1cnNvckxvY2F0aW9uID0gcGFyYW1zLmN1cnNvckxvY2F0aW9uID8/IG51bGw7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSBwYXJhbXMudmFsdWUgPz8gJyc7XG4gICAgdGhpcy5vbkJsdXIgPSBwYXJhbXMub25CbHVyID8/IG51bGw7XG4gICAgdGhpcy5vbkNoYW5nZSA9IHBhcmFtcy5vbkNoYW5nZSA/PyBudWxsO1xuICAgIHRoaXMub25FbnRlciA9IHBhcmFtcy5vbkVudGVyID8/IG51bGw7XG4gICAgdGhpcy5vbkVzY2FwZSA9IHBhcmFtcy5vbkVzY2FwZSA/PyBudWxsO1xuICAgIHRoaXMub25QYXN0ZSA9IHBhcmFtcy5vblBhc3RlID8/IG51bGw7XG4gICAgdGhpcy5wbGFjZWhvbGRlclRleHQgPSBwYXJhbXMucGxhY2Vob2xkZXIgPz8gJyc7XG4gICAgdGhpcy5rZXltYXBTY29wZSA9IG5ldyBTY29wZShwYXJhbXMuYXBwLnNjb3BlKTtcbiAgICAvLyBUaGUgZWRpdG9yJ3Mgb3duZXIgc3RhbmRzIGluIGZvciBhIGBNYXJrZG93blZpZXdgLiBUaGUgZWRpdG9yIGNvbW1hbmRzIHJlYWNoIHRoZSBlZGl0b3IgdGhyb3VnaFxuICAgIC8vIGBhY3RpdmVFZGl0b3IuZWRpdE1vZGVgIGFuZCBgYWN0aXZlRWRpdG9yLmVkaXRvcmAsIGFuZCBzY3JvbGxpbmcgY2FsbHMgYmFjayBpbnRvIHRoZSBvd25lci5cbiAgICB0aGlzLm93bmVyID0ge1xuICAgICAgYXBwOiBwYXJhbXMuYXBwLFxuICAgICAgZWRpdE1vZGU6IG51bGwsXG4gICAgICBmaWxlOiBudWxsLFxuICAgICAgZ2V0TW9kZTogKCk6ICdzb3VyY2UnID0+ICdzb3VyY2UnLFxuICAgICAgaG92ZXJQb3BvdmVyOiBudWxsLFxuICAgICAgc3luY1Njcm9sbDogbm9vcFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgZWRpdG9yLlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBlZGl0b3IgYW5kIG1vdW50cyBpdCBpbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcbiAgICBjb25zdCBFZGl0b3JDb25zdHJ1Y3RvciA9IGNyZWF0ZUVkaXRvckNsYXNzKGdldFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yKHRoaXMuYXBwKSk7XG4gICAgY29uc3Qgc2Nyb2xsYWJsZUVkaXRvciA9IG5ldyBFZGl0b3JDb25zdHJ1Y3Rvcih0aGlzLmFwcCwgdGhpcy5jb250YWluZXJFbCwgdGhpcy5vd25lciwge1xuICAgICAgYnVpbGRFeHRlbnNpb25zOiAoKTogRXh0ZW5zaW9uW10gPT4gdGhpcy5idWlsZEV4dGVuc2lvbnMoKSxcbiAgICAgIGhhbmRsZVVwZGF0ZTogKHVwZGF0ZTogVmlld1VwZGF0ZSwgaXNDaGFuZ2VkOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlVXBkYXRlKHVwZGF0ZSwgaXNDaGFuZ2VkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNjcm9sbGFibGVFZGl0b3IgPSBzY3JvbGxhYmxlRWRpdG9yO1xuICAgIHRoaXMub3duZXIuZWRpdE1vZGUgPSBzY3JvbGxhYmxlRWRpdG9yO1xuICAgIHRoaXMub3duZXIuZWRpdG9yID0gZW5zdXJlTm9uTnVsbGFibGUoc2Nyb2xsYWJsZUVkaXRvci5lZGl0b3IpO1xuICAgIHRoaXMuYWRkQ2hpbGQoc2Nyb2xsYWJsZUVkaXRvcik7XG5cbiAgICBpZiAodGhpcy5vbkVudGVyKSB7XG4gICAgICAvLyBPYnNpZGlhbidzIGhvdGtleXMgcnVuIGJlZm9yZSBDb2RlTWlycm9yJ3Mga2V5bWFwLCBhbmQgYE1vZCtFbnRlcmAgb3BlbnMgdGhlIGxpbmsgdW5kZXIgdGhlIGN1cnNvci4gQSBoYW5kbGVyXG4gICAgICAvLyByZXR1cm5pbmcgYHRydWVgIHN0b3BzIHRoYXQgaG90a2V5IHdpdGhvdXQgc3RvcHBpbmcgdGhlIGV2ZW50LCBzbyB0aGUgZWRpdG9yIGtleW1hcCBzdGlsbCBzZWVzIHRoZSBrZXkuXG4gICAgICBjb25zdCBzdWJtaXRIb3RrZXlIYW5kbGVyID0gdGhpcy5rZXltYXBTY29wZS5yZWdpc3RlcihbJ01vZCddLCAnRW50ZXInLCAoKSA9PiB0cnVlKTtcbiAgICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmtleW1hcFNjb3BlLnVucmVnaXN0ZXIoc3VibWl0SG90a2V5SGFuZGxlcik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbHMpIHtcbiAgICAgIHNjcm9sbGFibGVFZGl0b3IuZWRpdG9yRWwuYWRkQ2xhc3ModGhpcy5jbHMpO1xuICAgIH1cblxuICAgIHNjcm9sbGFibGVFZGl0b3Iuc2V0KHRoaXMuaW5pdGlhbFZhbHVlLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5jdXJzb3JMb2NhdGlvbikge1xuICAgICAgc2Nyb2xsYWJsZUVkaXRvci5jbS5kaXNwYXRjaCh7XG4gICAgICAgIHNlbGVjdGlvbjogRWRpdG9yU2VsZWN0aW9uLnJhbmdlKHRoaXMuY3Vyc29yTG9jYXRpb24uYW5jaG9yLCB0aGlzLmN1cnNvckxvY2F0aW9uLmhlYWQpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb2N1c0d1YXJkUGF0Y2hDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBNb25rZXlBcm91bmRDb21wb25lbnQoKSk7XG4gICAgZm9jdXNHdWFyZFBhdGNoQ29tcG9uZW50LnJlZ2lzdGVyTWV0aG9kUGF0Y2goe1xuICAgICAgJG9iamVjdDogdGhpcy5hcHAud29ya3NwYWNlLFxuICAgICAgbWV0aG9kTmFtZTogJ3NldEFjdGl2ZUxlYWYnLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjayB9KSA9PiB7XG4gICAgICAgIC8vIEEgZm9jdXNlZCBlZGl0b3IgdGhhdCBiZWxvbmdzIHRvIG5vIGxlYWYgd291bGQgb3RoZXJ3aXNlIGxvc2UgaXRzIGZvY3VzIHRvIHRoZSBsZWFmIHRoZSB3b3Jrc3BhY2UgYWN0aXZhdGVzLlxuICAgICAgICBpZiAoc2Nyb2xsYWJsZUVkaXRvci5hY3RpdmVDTS5oYXNGb2N1cykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiB7XG4gICAgICB0aGlzLmFwcC5rZXltYXAucG9wU2NvcGUodGhpcy5rZXltYXBTY29wZSk7XG4gICAgICBpZiAodGhpcy5hcHAud29ya3NwYWNlLmFjdGl2ZUVkaXRvciA9PT0gdGhpcy5vd25lcikge1xuICAgICAgICB0aGlzLmFwcC53b3Jrc3BhY2UuYWN0aXZlRWRpdG9yID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHNjcm9sbGFibGVFZGl0b3IuZGVzdHJveSgpO1xuICAgICAgc2Nyb2xsYWJsZUVkaXRvci5lZGl0b3JFbC5yZW1vdmUoKTtcbiAgICAgIHRoaXMub3duZXIuZWRpdE1vZGUgPSBudWxsO1xuICAgICAgZGVsZXRlIHRoaXMub3duZXIuZWRpdG9yO1xuICAgICAgdGhpcy5zY3JvbGxhYmxlRWRpdG9yID0gbnVsbDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgZG9jdW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBuZXcgZG9jdW1lbnQuXG4gICAqL1xuICBwdWJsaWMgc2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLnNldCh2YWx1ZSwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgZWRpdG9yJ3Mgb3duIGV4dGVuc2lvbnM6IHRoZSBwbGFjZWhvbGRlciwgdGhlIGZvY3VzIGFuZCBwYXN0ZSBoYW5kbGVycywgYW5kIHRoZSBrZXkgaGFuZGxlcnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBleHRlbnNpb25zLlxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkRXh0ZW5zaW9ucygpOiBFeHRlbnNpb25bXSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uczogRXh0ZW5zaW9uW10gPSBbXG4gICAgICBFZGl0b3JWaWV3LmRvbUV2ZW50SGFuZGxlcnMoe1xuICAgICAgICBibHVyOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5hcHAua2V5bWFwLnBvcFNjb3BlKHRoaXMua2V5bWFwU2NvcGUpO1xuICAgICAgICAgIGlmICh0aGlzLl9sb2FkZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25CbHVyPy4odGhpcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmb2N1czogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwLmtleW1hcC5wdXNoU2NvcGUodGhpcy5rZXltYXBTY29wZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBhc3RlOiAoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMub25QYXN0ZT8uKCRldmVudCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgUHJlYy5oaWdoZXN0KGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6ICdFbnRlcicsXG4gICAgICAgICAgcnVuOiAoKTogYm9vbGVhbiA9PiB0aGlzLmlzRW50ZXJIYW5kbGVkKGZhbHNlLCBmYWxzZSksXG4gICAgICAgICAgc2hpZnQ6ICgpOiBib29sZWFuID0+IHRoaXMuaXNFbnRlckhhbmRsZWQoZmFsc2UsIHRydWUpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6ICdNb2QtRW50ZXInLFxuICAgICAgICAgIHJ1bjogKCk6IGJvb2xlYW4gPT4gdGhpcy5pc0VudGVySGFuZGxlZCh0cnVlLCBmYWxzZSksXG4gICAgICAgICAgc2hpZnQ6ICgpOiBib29sZWFuID0+IHRoaXMuaXNFbnRlckhhbmRsZWQodHJ1ZSwgdHJ1ZSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGtleTogJ0VzY2FwZScsXG4gICAgICAgICAgcHJldmVudERlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgcnVuOiAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMub25Fc2NhcGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbkVzY2FwZSh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSkpXG4gICAgXTtcblxuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyVGV4dCkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKHBsYWNlaG9sZGVyKHRoaXMucGxhY2Vob2xkZXJUZXh0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dGVuc2lvbnM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGV2ZXJ5IHVwZGF0ZSBvZiB0aGUgZWRpdG9yLCB3aXRoIHdoZXRoZXIgdGhlIGRvY3VtZW50IGNoYW5nZWQuXG4gICAqXG4gICAqIEBwYXJhbSB1cGRhdGUgLSBUaGUgQ29kZU1pcnJvciB1cGRhdGUuXG4gICAqIEBwYXJhbSBpc0NoYW5nZWQgLSBXaGV0aGVyIHRoZSBkb2N1bWVudCBjaGFuZ2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUsIGlzQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0NoYW5nZWQpIHtcbiAgICAgIHRoaXMub25DaGFuZ2U/Lih1cGRhdGUsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Nyb2xsYWJsZUVkaXRvcigpOiBNYXJrZG93blNjcm9sbGFibGVFZGl0VmlldyB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuc2Nyb2xsYWJsZUVkaXRvciwgJ1RoZSBlZGl0b3IgaXMgYnVpbHQgd2hlbiB0aGUgY29tcG9uZW50IGxvYWRzLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VudGVySGFuZGxlZChpc01vZGlmaWVyUHJlc3NlZDogYm9vbGVhbiwgaXNTaGlmdFByZXNzZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbkVudGVyPy4oeyBjb21wb25lbnQ6IHRoaXMsIGlzTW9kaWZpZXJQcmVzc2VkLCBpc1NoaWZ0UHJlc3NlZCB9KSA/PyBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVFZGl0b3JDbGFzcyhCYXNlQ29uc3RydWN0b3I6IFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yKTogRW1iZWRkZWRTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBjbGFzcyBFbWJlZGRlZFNjcm9sbGFibGVNYXJrZG93bkVkaXRvciBleHRlbmRzIEJhc2VDb25zdHJ1Y3RvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIG93bmVyOiBNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlld093bmVyLCBwcml2YXRlIHJlYWRvbmx5IGhvb2tzOiBFZGl0b3JIb29rcykge1xuICAgICAgLy8gVGhlIGJhc2UgYnVpbGRzIGl0cyBleHRlbnNpb25zIGxhemlseSwgb24gdGhlIGZpcnN0IGBzZXQoKWAsIHNvIHRoZSBob29rcyBhcmUgbm90IG5lZWRlZCBkdXJpbmcgYHN1cGVyKClgLlxuICAgICAgc3VwZXIoYXBwLCBjb250YWluZXJFbCwgb3duZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBidWlsZExvY2FsRXh0ZW5zaW9ucygpOiBFeHRlbnNpb25bXSB7XG4gICAgICByZXR1cm4gWy4uLnN1cGVyLmJ1aWxkTG9jYWxFeHRlbnNpb25zKCksIC4uLnRoaXMuaG9va3MuYnVpbGRFeHRlbnNpb25zKCldO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBvblVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUsIGlzQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgc3VwZXIub25VcGRhdGUodXBkYXRlLCBpc0NoYW5nZWQpO1xuICAgICAgdGhpcy5ob29rcy5oYW5kbGVVcGRhdGUodXBkYXRlLCBpc0NoYW5nZWQpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3IoYXBwOiBBcHApOiBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvciB7XG4gIGlmIChzY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvckNhY2hlLnZhbHVlKSB7XG4gICAgcmV0dXJuIHNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yQ2FjaGUudmFsdWU7XG4gIH1cblxuICAvLyBBbiBlZGl0YWJsZSBNYXJrZG93biBlbWJlZCBidWlsZHMgYW4gaWZyYW1lZCBlZGl0b3Igd2hvc2UgYmFzZSBjbGFzcyBpcyB0aGUgc2Nyb2xsYWJsZSBlZGl0b3IuIFRoZSBlbWJlZCBpcyBnaXZlblxuICAvLyBubyBmaWxlLCB3aGljaCBpcyB3aGF0IGtlZXBzIGl0IGZyb20gcmVhZGluZyBvciB3YXRjaGluZyBvbmUuXG4gIGNvbnN0IHdpZGdldEVkaXRvclZpZXcgPSBjYXN0VG88V2lkZ2V0RWRpdG9yVmlldz4oYXBwLmVtYmVkUmVnaXN0cnkuZW1iZWRCeUV4dGVuc2lvbi5tZCh7IGFwcCwgY29udGFpbmVyRWw6IGNyZWF0ZURpdigpIH0sIGNhc3RUbzxURmlsZT4obnVsbCksICcnKSk7XG5cbiAgdHJ5IHtcbiAgICB3aWRnZXRFZGl0b3JWaWV3LmVkaXRhYmxlID0gdHJ1ZTtcbiAgICB3aWRnZXRFZGl0b3JWaWV3LnNob3dFZGl0b3IoKTtcbiAgICBjb25zdCBpZnJhbWVkRWRpdG9yID0gZW5zdXJlTm9uTnVsbGFibGUod2lkZ2V0RWRpdG9yVmlldy5lZGl0TW9kZSwgJ1RoZSBNYXJrZG93biBlbWJlZCBidWlsdCBubyBlZGl0b3IuJyk7XG4gICAgY29uc3Qgc2Nyb2xsYWJsZUVkaXRvclByb3RvdHlwZSA9IGNhc3RUbzxTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JQcm90b3R5cGU+KE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoaWZyYW1lZEVkaXRvcikgYXMgb2JqZWN0KSk7XG4gICAgc2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZS52YWx1ZSA9IHNjcm9sbGFibGVFZGl0b3JQcm90b3R5cGUuY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIHNjcm9sbGFibGVFZGl0b3JQcm90b3R5cGUuY29uc3RydWN0b3I7XG4gIH0gZmluYWxseSB7XG4gICAgd2lkZ2V0RWRpdG9yVmlldy51bmxvYWQoKTtcbiAgfVxufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtEQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsWUFBWTtBQUNyQixTQUFTLGNBQWM7QUFDdkIsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxhQUFhO0FBRXRCLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsNkJBQTZCO0FBcUl0QyxNQUFNLDJDQUFxRixFQUFFLE9BQU8sS0FBSztBQXlCbEcsTUFBTSwwQ0FBMEMsWUFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1qRSxJQUFXLFNBQWlCO0FBQzFCLFdBQU8sa0JBQWtCLEtBQUssb0JBQW9CLEVBQUUsTUFBTTtBQUFBLEVBQzVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxhQUF5QjtBQUNsQyxXQUFPLEtBQUssb0JBQW9CLEVBQUU7QUFBQSxFQUNwQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsUUFBZ0I7QUFDekIsV0FBTyxLQUFLLG9CQUFvQixFQUFFLEdBQUcsTUFBTSxJQUFJLFNBQVM7QUFBQSxFQUMxRDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS21CO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBLEVBRUY7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVB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
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2VtYmVkZGFibGUtbWFya2Rvd24tZWRpdG9yLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgY2xhc3Mge0BsaW5rIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudH06IGEgZnVsbCBPYnNpZGlhbiBNYXJrZG93biBlZGl0b3IgKExpdmUgUHJldmlldywgZWRpdG9yXG4gKiBjb21tYW5kcywgaG90a2V5cykgbW91bnRlZCBpbiBhbnkgZWxlbWVudCBhbmQgb3duZWQgYXMgYSBjb21wb25lbnQuXG4gKlxuICogT2JzaWRpYW4gZG9lcyBub3QgZXhwb3J0IGl0cyBlZGl0b3IgY2xhc3MsIHNvIHRoZSBjb21wb25lbnQgYm9ycm93cyBpdCBmcm9tIGEgdGhyb3dhd2F5IE1hcmtkb3duIGVtYmVkOiBhbiBlZGl0YWJsZVxuICogZW1iZWQgYnVpbGRzIGFuIGlmcmFtZWQgZWRpdG9yIHdob3NlIGdyYW5kcGFyZW50IHByb3RvdHlwZSBpcyB0aGUgc2Nyb2xsYWJsZSBNYXJrZG93biBlZGl0b3IgZXZlcnkgZW1iZWQgYW5kIHRhYmxlXG4gKiBjZWxsIGVkaXRvciB1c2VzLiBUaGUgcHJvYmUgb3BlbnMgbm8gbGVhZiBhbmQgZmlyZXMgbm8gd29ya3NwYWNlIGV2ZW50IChgZW1iZWRkYWJsZS1tYXJrZG93bi1lZGl0b3ItY29tcG9uZW50XG4gKiAub2JzaWRpYW4uaW50ZWdyYXRpb24udGVzdC50c2AgbWVhc3VyZXMgdGhhdCksIGFuZCBpdCBydW5zIG9uY2UgcGVyIGNvcHkgb2YgdGhpcyBsaWJyYXJ5LCBvbiBmaXJzdCB1c2UgcmF0aGVyIHRoYW4gYXRcbiAqIG1vZHVsZSBsb2FkLiBUaGUgY2xhc3MgaXMgY2FjaGVkIHBlciBjb3B5IGFuZCBuZXZlciBpbiB0aGUgc2hhcmVkLXN0YXRlIGJhZywgYmVjYXVzZSBhIGNvbnN0cnVjdG9yIGlzIG5vdCBwbGFpbiBkYXRhLlxuICpcbiAqIEFkYXB0ZWQgZnJvbSB0aGUgXCJFbWJlZGRhYmxlIENNIE1hcmtkb3duIEVkaXRvclwiIGdpc3RcbiAqIChodHRwczovL2dpc3QuZ2l0aHViLmNvbS9GZXZvbC9jYWE0NzhjZTMwM2U2OWVhYmVkZTdiMTJiMjMyMzgzOCksIGl0c2VsZiBhIHJld29yayBvZiB0aGUgYEthbmJhbmAgcGx1Z2luJ3NcbiAqIGBzcmMvY29tcG9uZW50cy9FZGl0b3IvTWFya2Rvd25FZGl0b3IudHN4YCwgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGJlbG93LlxuICpcbiAqIENvcHlyaWdodCAyMDI0IE1hdHRoZXcgTWV5ZXJzLCBGZXZvbFxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZFxuICogZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIOKAnFNvZnR3YXJl4oCdKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbiAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0b1xuICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZVxuICogU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1JcbiAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1JcbiAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4vLyBjc3BlbGw6d29yZHMgRmV2b2wgLS0gVGhlIGdpc3QgYXV0aG9yJ3MgaGFuZGxlLCBhcyB0aGUgbGljZW5zZSBub3RpY2UgYWJvdmUgbmFtZXMgaXQuXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBCdWlsZHMgb24gT2JzaWRpYW4ncyB1bmV4cG9ydGVkIGVkaXRvciBjbGFzcywgd2hpY2ggb25seSBhIHJ1bm5pbmcgT2JzaWRpYW4gaGFzOyBjb3ZlcmVkIGJ5IGl0cyBpbnRlZ3JhdGlvbiB0ZXN0LiAqL1xuXG5pbXBvcnQgdHlwZSB7IEV4dGVuc2lvbiB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB0eXBlIHsgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHR5cGUge1xuICBFeHRyYWN0Q29uc3RydWN0b3IsXG4gIE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3LFxuICBNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlld093bmVyLFxuICBXaWRnZXRFZGl0b3JWaWV3XG59IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBFZGl0b3JTZWxlY3Rpb24sXG4gIFByZWNcbn0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHtcbiAgRWRpdG9yVmlldyxcbiAga2V5bWFwLFxuICBwbGFjZWhvbGRlclxufSBmcm9tICdAY29kZW1pcnJvci92aWV3JztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZnVuY3Rpb24nO1xuaW1wb3J0IHsgY2FzdFRvIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyBTY29wZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuL2NvbXBvbmVudC1leC50cyc7XG5pbXBvcnQgeyBNb25rZXlBcm91bmRDb21wb25lbnQgfSBmcm9tICcuL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBvZiB0aGUge0BsaW5rIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudH0gY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBhZGRlZCB0byB0aGUgZWRpdG9yIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSBjbHM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoZSBlZGl0b3IgaXMgbW91bnRlZCBpbi4gVGhlIGVkaXRvciBhcHBlbmRzIGl0cyBvd24gZWxlbWVudCB0byBpdCBhbmQgcmVtb3ZlcyBvbmx5IHRoYXQgZWxlbWVudCB3aGVuXG4gICAqIGl0IHVubG9hZHMuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHNlbGVjdGlvbiwgYXMgZG9jdW1lbnQgb2Zmc2V0cy4gVGhlIGN1cnNvciBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY3Vyc29yTG9jYXRpb24/OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMsIHdoaWxlIHRoZSBjb21wb25lbnQgaXMgc3RpbGwgbG9hZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgb25CbHVyPzogKGNvbXBvbmVudDogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZXZlcnkgY2hhbmdlIHRvIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9uQ2hhbmdlPzogKHVwZGF0ZTogVmlld1VwZGF0ZSwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBgRW50ZXJgLCBgU2hpZnQrRW50ZXJgLCBgTW9kK0VudGVyYCBhbmQgYE1vZCtTaGlmdCtFbnRlcmAuXG4gICAqXG4gICAqIFdoZW4gZ2l2ZW4sIGBNb2QrRW50ZXJgIG5vIGxvbmdlciBydW5zIHRoZSBPYnNpZGlhbiBob3RrZXkgYm91bmQgdG8gaXQgKGJ5IGRlZmF1bHQsIG9wZW5pbmcgdGhlIGxpbmsgdW5kZXIgdGhlXG4gICAqIGN1cnNvciBpbiBhIG5ldyB0YWIpIHdoaWxlIHRoZSBlZGl0b3IgaGFzIHRoZSBmb2N1cywgc28gYSBmb3JtIGNhbiB1c2UgaXQgdG8gc3VibWl0LlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUga2V5IHdhcyBoYW5kbGVkLCB3aGljaCBzdG9wcyB0aGUgZWRpdG9yIGluc2VydGluZyBhIGxpbmUgYnJlYWs7IGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgb25FbnRlcj86IChwYXJhbXM6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudEVudGVyUGFyYW1zKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgb24gYEVzY2FwZWAuIFdoZW4gZ2l2ZW4sIHRoZSBrZXkgZ29lcyBubyBmdXJ0aGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb25Fc2NhcGU/OiAoY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBhIHBhc3RlIGludG8gdGhlIGVkaXRvciwgYmVmb3JlIHRoZSBlZGl0b3IgaGFuZGxlcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IG9uUGFzdGU/OiAoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHNob3duIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBlbXB0eS5cbiAgICovXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwYXJhbWV0ZXJzIG9mIHtAbGluayBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5vbkVudGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRFbnRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZWRpdG9yIGNvbXBvbmVudCB0aGUga2V5IHdhcyBwcmVzc2VkIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsYXRmb3JtIG1vZGlmaWVyIChgQ3RybGAsIG9yIGBDbWRgIG9uIG1hY09TKSB3YXMgaGVsZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzTW9kaWZpZXJQcmVzc2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGBTaGlmdGAgd2FzIGhlbGQuXG4gICAqL1xuICByZWFkb25seSBpc1NoaWZ0UHJlc3NlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHNlbGVjdGlvbiBpbiBhbiB7QGxpbmsgRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50fSwgYXMgZG9jdW1lbnQgb2Zmc2V0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRTZWxlY3Rpb24ge1xuICAvKipcbiAgICogVGhlIG9mZnNldCB0aGUgc2VsZWN0aW9uIHN0YXJ0cyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgYW5jaG9yOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvZmZzZXQgdGhlIHNlbGVjdGlvbiBleHRlbmRzIHRvLCB3aGVyZSB0aGUgY3Vyc29yIGlzLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRWRpdG9ySG9va3Mge1xuICByZWFkb25seSBidWlsZEV4dGVuc2lvbnM6ICgpID0+IEV4dGVuc2lvbltdO1xuICByZWFkb25seSBoYW5kbGVVcGRhdGU6ICh1cGRhdGU6IFZpZXdVcGRhdGUsIGlzQ2hhbmdlZDogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxudHlwZSBFbWJlZGRlZFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yID0gbmV3IChcbiAgYXBwOiBBcHAsXG4gIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCxcbiAgb3duZXI6IE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3T3duZXIsXG4gIGhvb2tzOiBFZGl0b3JIb29rc1xuKSA9PiBNYXJrZG93blNjcm9sbGFibGVFZGl0VmlldztcblxudHlwZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlldz47XG5cbmludGVyZmFjZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvckNhY2hlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMgLS0gRmlsbGVkIG9uIGZpcnN0IHVzZS5cbiAgdmFsdWU6IG51bGwgfCBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cblxuLyogZXNsaW50LWRpc2FibGUgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyAtLSBUaGUgb3duZXIgbGVhcm5zIGl0cyBlZGl0b3IgYWZ0ZXIgdGhlIGVkaXRvciwgd2hpY2ggbmVlZHMgdGhlIG93bmVyLCBpcyBidWlsdC4gKi9cbmludGVyZmFjZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JPd25lciBleHRlbmRzIE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3T3duZXIge1xuICBlZGl0TW9kZTogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcgfCBudWxsO1xuICByZWFkb25seSBnZXRNb2RlOiAoKSA9PiAnc291cmNlJztcbn1cbi8qIGVzbGludC1lbmFibGUgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyAtLSBSZXN0b3JlIHRoZSBydWxlIGFmdGVyIHRoZSBvd25lci4gKi9cblxuaW50ZXJmYWNlIFNjcm9sbGFibGVNYXJrZG93bkVkaXRvclByb3RvdHlwZSB7XG4gIHJlYWRvbmx5IGNvbnN0cnVjdG9yOiBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cblxuY29uc3Qgc2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZTogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZSA9IHsgdmFsdWU6IG51bGwgfTtcblxuLyoqXG4gKiBBIGZ1bGwgT2JzaWRpYW4gTWFya2Rvd24gZWRpdG9yIG1vdW50ZWQgaW4gYW55IGVsZW1lbnQ6IExpdmUgUHJldmlldywgZWRpdG9yIGNvbW1hbmRzLCBob3RrZXlzIGFuZCB0aGUgZWRpdG9yXG4gKiBzdWdnZXN0ZXJzIGFsbCB3b3JrIGluIGl0IGFzIHRoZXkgZG8gaW4gYSBub3RlLlxuICpcbiAqIEFkZCBpdCBhcyBhIGNoaWxkIG9mIHRoZSBjb21wb25lbnQgdGhhdCBvd25zIGl0cyBlbGVtZW50OyB1bmxvYWRpbmcgaXQgZGVzdHJveXMgdGhlIGVkaXRvciBhbmQgcmVtb3ZlcyB0aGUgZWRpdG9yJ3NcbiAqIGVsZW1lbnQuIEl0IHdvcmtzIG9uIGRlc2t0b3AgYW5kIG1vYmlsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCh7XG4gKiAgIGFwcDogdGhpcy5hcHAsXG4gKiAgIGNvbnRhaW5lckVsLFxuICogICBvbkVudGVyOiAoeyBjb21wb25lbnQsIGlzTW9kaWZpZXJQcmVzc2VkIH0pID0+IHtcbiAqICAgICBpZiAoIWlzTW9kaWZpZXJQcmVzc2VkKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICogICAgIHNhdmUoY29tcG9uZW50LnZhbHVlKTtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfSxcbiAqICAgdmFsdWU6ICdJbml0aWFsIHRleHQnXG4gKiB9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBlZGl0b3IsIGFzIGluIGEgbm90ZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGVkaXRvci5cbiAgICovXG4gIHB1YmxpYyBnZXQgZWRpdG9yKCk6IEVkaXRvciB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLmVkaXRvcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIENvZGVNaXJyb3IgdmlldyBiZWhpbmQgdGhlIGVkaXRvci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIENvZGVNaXJyb3Igdmlldy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZWRpdG9yVmlldygpOiBFZGl0b3JWaWV3IHtcbiAgICByZXR1cm4gdGhpcy5nZXRTY3JvbGxhYmxlRWRpdG9yKCkuY207XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZWRpdG9yIGhvbGRzIHRoZSBmb2N1cyB3aXRoaW4gaXRzIHdpbmRvdy5cbiAgICpcbiAgICogVW5saWtlIENvZGVNaXJyb3IncyBgRWRpdG9yVmlldy5oYXNGb2N1c2AsIHRoaXMgZG9lcyBub3QgYWxzbyByZXF1aXJlIHRoZSB3aW5kb3cgdG8gaGF2ZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzXG4gICAqIGZvY3VzLCBzbyBpdCBzdGF5cyBgdHJ1ZWAgd2hpbGUgdGhlIHVzZXIgaXMgaW4gYW5vdGhlciBhcHBsaWNhdGlvbiBvciBhbm90aGVyIE9ic2lkaWFuIHdpbmRvdyBpcyBpbiBmcm9udC5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGVkaXRvcidzIGNvbnRlbnQgZWxlbWVudCBpcyBpdHMgZG9jdW1lbnQncyBhY3RpdmUgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzRm9jdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRWRpdG9yVmlld0ZvY3VzZWRJbkl0c1dpbmRvdyh0aGlzLmdldFNjcm9sbGFibGVFZGl0b3IoKS5hY3RpdmVDTSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZG9jdW1lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBkb2N1bWVudCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFNjcm9sbGFibGVFZGl0b3IoKS5jbS5zdGF0ZS5kb2MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGUgZWRpdG9yIGlzIG1vdW50ZWQgaW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xzOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3Vyc29yTG9jYXRpb246IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudFNlbGVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkga2V5bWFwU2NvcGU6IFNjb3BlO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQmx1cjogKChjb21wb25lbnQ6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCkgPT4gdm9pZCkgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQ2hhbmdlOiAoKHVwZGF0ZTogVmlld1VwZGF0ZSwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQpIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkVudGVyOiAoKHBhcmFtczogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50RW50ZXJQYXJhbXMpID0+IGJvb2xlYW4pIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkVzY2FwZTogKChjb21wb25lbnQ6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCkgPT4gdm9pZCkgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uUGFzdGU6ICgoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQpIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvd25lcjogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yT3duZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmc7XG4gIHByaXZhdGUgc2Nyb2xsYWJsZUVkaXRvcjogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgY29tcG9uZW50LiBUaGUgZWRpdG9yIGlzIGJ1aWx0IHdoZW4gdGhlIGNvbXBvbmVudCBsb2Fkcy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLmNvbnRhaW5lckVsID0gcGFyYW1zLmNvbnRhaW5lckVsO1xuICAgIHRoaXMuY2xzID0gcGFyYW1zLmNscyA/PyAnJztcbiAgICB0aGlzLmN1cnNvckxvY2F0aW9uID0gcGFyYW1zLmN1cnNvckxvY2F0aW9uID8/IG51bGw7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSBwYXJhbXMudmFsdWUgPz8gJyc7XG4gICAgdGhpcy5vbkJsdXIgPSBwYXJhbXMub25CbHVyID8/IG51bGw7XG4gICAgdGhpcy5vbkNoYW5nZSA9IHBhcmFtcy5vbkNoYW5nZSA/PyBudWxsO1xuICAgIHRoaXMub25FbnRlciA9IHBhcmFtcy5vbkVudGVyID8/IG51bGw7XG4gICAgdGhpcy5vbkVzY2FwZSA9IHBhcmFtcy5vbkVzY2FwZSA/PyBudWxsO1xuICAgIHRoaXMub25QYXN0ZSA9IHBhcmFtcy5vblBhc3RlID8/IG51bGw7XG4gICAgdGhpcy5wbGFjZWhvbGRlclRleHQgPSBwYXJhbXMucGxhY2Vob2xkZXIgPz8gJyc7XG4gICAgdGhpcy5rZXltYXBTY29wZSA9IG5ldyBTY29wZShwYXJhbXMuYXBwLnNjb3BlKTtcbiAgICAvLyBUaGUgZWRpdG9yJ3Mgb3duZXIgc3RhbmRzIGluIGZvciBhIGBNYXJrZG93blZpZXdgLiBUaGUgZWRpdG9yIGNvbW1hbmRzIHJlYWNoIHRoZSBlZGl0b3IgdGhyb3VnaFxuICAgIC8vIGBhY3RpdmVFZGl0b3IuZWRpdE1vZGVgIGFuZCBgYWN0aXZlRWRpdG9yLmVkaXRvcmAsIGFuZCBzY3JvbGxpbmcgY2FsbHMgYmFjayBpbnRvIHRoZSBvd25lci5cbiAgICB0aGlzLm93bmVyID0ge1xuICAgICAgYXBwOiBwYXJhbXMuYXBwLFxuICAgICAgZWRpdE1vZGU6IG51bGwsXG4gICAgICBmaWxlOiBudWxsLFxuICAgICAgZ2V0TW9kZTogKCk6ICdzb3VyY2UnID0+ICdzb3VyY2UnLFxuICAgICAgaG92ZXJQb3BvdmVyOiBudWxsLFxuICAgICAgc3luY1Njcm9sbDogbm9vcFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgZWRpdG9yLlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBlZGl0b3IgYW5kIG1vdW50cyBpdCBpbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcbiAgICBjb25zdCBFZGl0b3JDb25zdHJ1Y3RvciA9IGNyZWF0ZUVkaXRvckNsYXNzKGdldFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yKHRoaXMuYXBwKSk7XG4gICAgY29uc3Qgc2Nyb2xsYWJsZUVkaXRvciA9IG5ldyBFZGl0b3JDb25zdHJ1Y3Rvcih0aGlzLmFwcCwgdGhpcy5jb250YWluZXJFbCwgdGhpcy5vd25lciwge1xuICAgICAgYnVpbGRFeHRlbnNpb25zOiAoKTogRXh0ZW5zaW9uW10gPT4gdGhpcy5idWlsZEV4dGVuc2lvbnMoKSxcbiAgICAgIGhhbmRsZVVwZGF0ZTogKHVwZGF0ZTogVmlld1VwZGF0ZSwgaXNDaGFuZ2VkOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlVXBkYXRlKHVwZGF0ZSwgaXNDaGFuZ2VkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNjcm9sbGFibGVFZGl0b3IgPSBzY3JvbGxhYmxlRWRpdG9yO1xuICAgIHRoaXMub3duZXIuZWRpdE1vZGUgPSBzY3JvbGxhYmxlRWRpdG9yO1xuICAgIHRoaXMub3duZXIuZWRpdG9yID0gZW5zdXJlTm9uTnVsbGFibGUoc2Nyb2xsYWJsZUVkaXRvci5lZGl0b3IpO1xuICAgIHRoaXMuYWRkQ2hpbGQoc2Nyb2xsYWJsZUVkaXRvcik7XG5cbiAgICBpZiAodGhpcy5vbkVudGVyKSB7XG4gICAgICAvLyBPYnNpZGlhbidzIGhvdGtleXMgcnVuIGJlZm9yZSBDb2RlTWlycm9yJ3Mga2V5bWFwLCBhbmQgYE1vZCtFbnRlcmAgb3BlbnMgdGhlIGxpbmsgdW5kZXIgdGhlIGN1cnNvci4gQSBoYW5kbGVyXG4gICAgICAvLyByZXR1cm5pbmcgYHRydWVgIHN0b3BzIHRoYXQgaG90a2V5IHdpdGhvdXQgc3RvcHBpbmcgdGhlIGV2ZW50LCBzbyB0aGUgZWRpdG9yIGtleW1hcCBzdGlsbCBzZWVzIHRoZSBrZXkuXG4gICAgICBjb25zdCBzdWJtaXRIb3RrZXlIYW5kbGVyID0gdGhpcy5rZXltYXBTY29wZS5yZWdpc3RlcihbJ01vZCddLCAnRW50ZXInLCAoKSA9PiB0cnVlKTtcbiAgICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmtleW1hcFNjb3BlLnVucmVnaXN0ZXIoc3VibWl0SG90a2V5SGFuZGxlcik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbHMpIHtcbiAgICAgIHNjcm9sbGFibGVFZGl0b3IuZWRpdG9yRWwuYWRkQ2xhc3ModGhpcy5jbHMpO1xuICAgIH1cblxuICAgIHNjcm9sbGFibGVFZGl0b3Iuc2V0KHRoaXMuaW5pdGlhbFZhbHVlLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5jdXJzb3JMb2NhdGlvbikge1xuICAgICAgc2Nyb2xsYWJsZUVkaXRvci5jbS5kaXNwYXRjaCh7XG4gICAgICAgIHNlbGVjdGlvbjogRWRpdG9yU2VsZWN0aW9uLnJhbmdlKHRoaXMuY3Vyc29yTG9jYXRpb24uYW5jaG9yLCB0aGlzLmN1cnNvckxvY2F0aW9uLmhlYWQpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb2N1c0d1YXJkUGF0Y2hDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBNb25rZXlBcm91bmRDb21wb25lbnQoKSk7XG4gICAgZm9jdXNHdWFyZFBhdGNoQ29tcG9uZW50LnJlZ2lzdGVyTWV0aG9kUGF0Y2goe1xuICAgICAgJG9iamVjdDogdGhpcy5hcHAud29ya3NwYWNlLFxuICAgICAgbWV0aG9kTmFtZTogJ3NldEFjdGl2ZUxlYWYnLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjayB9KSA9PiB7XG4gICAgICAgIC8vIEEgZm9jdXNlZCBlZGl0b3IgdGhhdCBiZWxvbmdzIHRvIG5vIGxlYWYgd291bGQgb3RoZXJ3aXNlIGxvc2UgaXRzIGZvY3VzIHRvIHRoZSBsZWFmIHRoZSB3b3Jrc3BhY2UgYWN0aXZhdGVzLlxuICAgICAgICAvLyBDb2RlTWlycm9yJ3Mgb3duIGBoYXNGb2N1c2AgaXMgYGZhbHNlYCB3aGVuZXZlciB0aGUgd2luZG93IGxhY2tzIHRoZSBvcGVyYXRpbmcgc3lzdGVtJ3MgZm9jdXMsIHdoaWNoIHdvdWxkIGxldFxuICAgICAgICAvLyB0aGUgd29ya3NwYWNlIHRha2UgdGhlIGZvY3VzIGF3YXkgd2hpbGUgYW5vdGhlciB3aW5kb3cgaXMgaW4gZnJvbnQsIHNvIHRoZSBndWFyZCByZWFkcyB0aGUgRE9NIGZvY3VzIGluc3RlYWQuXG4gICAgICAgIGlmIChpc0VkaXRvclZpZXdGb2N1c2VkSW5JdHNXaW5kb3coc2Nyb2xsYWJsZUVkaXRvci5hY3RpdmVDTSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgdGhpcy5hcHAua2V5bWFwLnBvcFNjb3BlKHRoaXMua2V5bWFwU2NvcGUpO1xuICAgICAgaWYgKHRoaXMuYXBwLndvcmtzcGFjZS5hY3RpdmVFZGl0b3IgPT09IHRoaXMub3duZXIpIHtcbiAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLmFjdGl2ZUVkaXRvciA9IG51bGw7XG4gICAgICB9XG4gICAgICBzY3JvbGxhYmxlRWRpdG9yLmRlc3Ryb3koKTtcbiAgICAgIHNjcm9sbGFibGVFZGl0b3IuZWRpdG9yRWwucmVtb3ZlKCk7XG4gICAgICB0aGlzLm93bmVyLmVkaXRNb2RlID0gbnVsbDtcbiAgICAgIGRlbGV0ZSB0aGlzLm93bmVyLmVkaXRvcjtcbiAgICAgIHRoaXMuc2Nyb2xsYWJsZUVkaXRvciA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIGRvY3VtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgbmV3IGRvY3VtZW50LlxuICAgKi9cbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmdldFNjcm9sbGFibGVFZGl0b3IoKS5zZXQodmFsdWUsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGVkaXRvcidzIG93biBleHRlbnNpb25zOiB0aGUgcGxhY2Vob2xkZXIsIHRoZSBmb2N1cyBhbmQgcGFzdGUgaGFuZGxlcnMsIGFuZCB0aGUga2V5IGhhbmRsZXJzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZXh0ZW5zaW9ucy5cbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEV4dGVuc2lvbnMoKTogRXh0ZW5zaW9uW10ge1xuICAgIGNvbnN0IGV4dGVuc2lvbnM6IEV4dGVuc2lvbltdID0gW1xuICAgICAgRWRpdG9yVmlldy5kb21FdmVudEhhbmRsZXJzKHtcbiAgICAgICAgYmx1cjogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwLmtleW1hcC5wb3BTY29wZSh0aGlzLmtleW1hcFNjb3BlKTtcbiAgICAgICAgICBpZiAodGhpcy5fbG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uQmx1cj8uKHRoaXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZm9jdXM6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmFwcC5rZXltYXAucHVzaFNjb3BlKHRoaXMua2V5bWFwU2NvcGUpO1xuICAgICAgICB9LFxuICAgICAgICBwYXN0ZTogKCRldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLm9uUGFzdGU/LigkZXZlbnQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIFByZWMuaGlnaGVzdChrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiAnRW50ZXInLFxuICAgICAgICAgIHJ1bjogKCk6IGJvb2xlYW4gPT4gdGhpcy5pc0VudGVySGFuZGxlZChmYWxzZSwgZmFsc2UpLFxuICAgICAgICAgIHNoaWZ0OiAoKTogYm9vbGVhbiA9PiB0aGlzLmlzRW50ZXJIYW5kbGVkKGZhbHNlLCB0cnVlKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAga2V5OiAnTW9kLUVudGVyJyxcbiAgICAgICAgICBydW46ICgpOiBib29sZWFuID0+IHRoaXMuaXNFbnRlckhhbmRsZWQodHJ1ZSwgZmFsc2UpLFxuICAgICAgICAgIHNoaWZ0OiAoKTogYm9vbGVhbiA9PiB0aGlzLmlzRW50ZXJIYW5kbGVkKHRydWUsIHRydWUpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6ICdFc2NhcGUnLFxuICAgICAgICAgIHByZXZlbnREZWZhdWx0OiB0cnVlLFxuICAgICAgICAgIHJ1bjogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm9uRXNjYXBlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25Fc2NhcGUodGhpcyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0pKVxuICAgIF07XG5cbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlclRleHQpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChwbGFjZWhvbGRlcih0aGlzLnBsYWNlaG9sZGVyVGV4dCkpO1xuICAgIH1cblxuICAgIHJldHVybiBleHRlbnNpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBldmVyeSB1cGRhdGUgb2YgdGhlIGVkaXRvciwgd2l0aCB3aGV0aGVyIHRoZSBkb2N1bWVudCBjaGFuZ2VkLlxuICAgKlxuICAgKiBAcGFyYW0gdXBkYXRlIC0gVGhlIENvZGVNaXJyb3IgdXBkYXRlLlxuICAgKiBAcGFyYW0gaXNDaGFuZ2VkIC0gV2hldGhlciB0aGUgZG9jdW1lbnQgY2hhbmdlZC5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVVcGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlLCBpc0NoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNDaGFuZ2VkKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlPy4odXBkYXRlLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNjcm9sbGFibGVFZGl0b3IoKTogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcge1xuICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZSh0aGlzLnNjcm9sbGFibGVFZGl0b3IsICdUaGUgZWRpdG9yIGlzIGJ1aWx0IHdoZW4gdGhlIGNvbXBvbmVudCBsb2Fkcy4nKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbnRlckhhbmRsZWQoaXNNb2RpZmllclByZXNzZWQ6IGJvb2xlYW4sIGlzU2hpZnRQcmVzc2VkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub25FbnRlcj8uKHsgY29tcG9uZW50OiB0aGlzLCBpc01vZGlmaWVyUHJlc3NlZCwgaXNTaGlmdFByZXNzZWQgfSkgPz8gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRWRpdG9yQ2xhc3MoQmFzZUNvbnN0cnVjdG9yOiBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcik6IEVtYmVkZGVkU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3Ige1xuICByZXR1cm4gY2xhc3MgRW1iZWRkZWRTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3IgZXh0ZW5kcyBCYXNlQ29uc3RydWN0b3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBvd25lcjogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXdPd25lciwgcHJpdmF0ZSByZWFkb25seSBob29rczogRWRpdG9ySG9va3MpIHtcbiAgICAgIC8vIFRoZSBiYXNlIGJ1aWxkcyBpdHMgZXh0ZW5zaW9ucyBsYXppbHksIG9uIHRoZSBmaXJzdCBgc2V0KClgLCBzbyB0aGUgaG9va3MgYXJlIG5vdCBuZWVkZWQgZHVyaW5nIGBzdXBlcigpYC5cbiAgICAgIHN1cGVyKGFwcCwgY29udGFpbmVyRWwsIG93bmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYnVpbGRMb2NhbEV4dGVuc2lvbnMoKTogRXh0ZW5zaW9uW10ge1xuICAgICAgcmV0dXJuIFsuLi5zdXBlci5idWlsZExvY2FsRXh0ZW5zaW9ucygpLCAuLi50aGlzLmhvb2tzLmJ1aWxkRXh0ZW5zaW9ucygpXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgb25VcGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlLCBpc0NoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLm9uVXBkYXRlKHVwZGF0ZSwgaXNDaGFuZ2VkKTtcbiAgICAgIHRoaXMuaG9va3MuaGFuZGxlVXBkYXRlKHVwZGF0ZSwgaXNDaGFuZ2VkKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yKGFwcDogQXBwKTogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3Ige1xuICBpZiAoc2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZS52YWx1ZSkge1xuICAgIHJldHVybiBzY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvckNhY2hlLnZhbHVlO1xuICB9XG5cbiAgLy8gQW4gZWRpdGFibGUgTWFya2Rvd24gZW1iZWQgYnVpbGRzIGFuIGlmcmFtZWQgZWRpdG9yIHdob3NlIGJhc2UgY2xhc3MgaXMgdGhlIHNjcm9sbGFibGUgZWRpdG9yLiBUaGUgZW1iZWQgaXMgZ2l2ZW5cbiAgLy8gbm8gZmlsZSwgd2hpY2ggaXMgd2hhdCBrZWVwcyBpdCBmcm9tIHJlYWRpbmcgb3Igd2F0Y2hpbmcgb25lLlxuICBjb25zdCB3aWRnZXRFZGl0b3JWaWV3ID0gY2FzdFRvPFdpZGdldEVkaXRvclZpZXc+KGFwcC5lbWJlZFJlZ2lzdHJ5LmVtYmVkQnlFeHRlbnNpb24ubWQoeyBhcHAsIGNvbnRhaW5lckVsOiBjcmVhdGVEaXYoKSB9LCBjYXN0VG88VEZpbGU+KG51bGwpLCAnJykpO1xuXG4gIHRyeSB7XG4gICAgd2lkZ2V0RWRpdG9yVmlldy5lZGl0YWJsZSA9IHRydWU7XG4gICAgd2lkZ2V0RWRpdG9yVmlldy5zaG93RWRpdG9yKCk7XG4gICAgY29uc3QgaWZyYW1lZEVkaXRvciA9IGVuc3VyZU5vbk51bGxhYmxlKHdpZGdldEVkaXRvclZpZXcuZWRpdE1vZGUsICdUaGUgTWFya2Rvd24gZW1iZWQgYnVpbHQgbm8gZWRpdG9yLicpO1xuICAgIGNvbnN0IHNjcm9sbGFibGVFZGl0b3JQcm90b3R5cGUgPSBjYXN0VG88U2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yUHJvdG90eXBlPihPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKGlmcmFtZWRFZGl0b3IpIGFzIG9iamVjdCkpO1xuICAgIHNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yQ2FjaGUudmFsdWUgPSBzY3JvbGxhYmxlRWRpdG9yUHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBzY3JvbGxhYmxlRWRpdG9yUHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuICB9IGZpbmFsbHkge1xuICAgIHdpZGdldEVkaXRvclZpZXcudW5sb2FkKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNFZGl0b3JWaWV3Rm9jdXNlZEluSXRzV2luZG93KGVkaXRvclZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGVkaXRvclZpZXcucm9vdC5hY3RpdmVFbGVtZW50ID09PSBlZGl0b3JWaWV3LmNvbnRlbnRET007XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0RBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsY0FBYztBQUN2QixTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGFBQWE7QUFFdEIsU0FBUyxtQkFBbUI7QUFDNUIsU0FBUyw2QkFBNkI7QUFxSXRDLE1BQU0sMkNBQXFGLEVBQUUsT0FBTyxLQUFLO0FBeUJsRyxNQUFNLDBDQUEwQyxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTWpFLElBQVcsU0FBaUI7QUFDMUIsV0FBTyxrQkFBa0IsS0FBSyxvQkFBb0IsRUFBRSxNQUFNO0FBQUEsRUFDNUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLGFBQXlCO0FBQ2xDLFdBQU8sS0FBSyxvQkFBb0IsRUFBRTtBQUFBLEVBQ3BDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVUEsSUFBVyxXQUFvQjtBQUM3QixXQUFPLCtCQUErQixLQUFLLG9CQUFvQixFQUFFLFFBQVE7QUFBQSxFQUMzRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsUUFBZ0I7QUFDekIsV0FBTyxLQUFLLG9CQUFvQixFQUFFLEdBQUcsTUFBTSxJQUFJLFNBQVM7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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference path="../library-references.d.mts" />
|
|
2
2
|
export * as 'abort-signal-component' from './abort-signal-component.mjs';
|
|
3
3
|
export * as 'all-windows-event-component' from './all-windows-event-component.mjs';
|
|
4
|
+
export * as 'all-windows-status-bar-item-component' from './all-windows-status-bar-item-component.mjs';
|
|
4
5
|
export * as 'async-error-handler-component' from './async-error-handler-component.mjs';
|
|
5
6
|
export * as 'async-events-component' from './async-events-component.mjs';
|
|
6
7
|
export * as 'bulk-operation-commit-component' from './bulk-operation-commit-component.mjs';
|
|
@@ -32,6 +33,10 @@ export * as 'rename-delete-handler-component' from './rename-delete-handler-comp
|
|
|
32
33
|
export * as 'rmdir-guard-component' from './rmdir-guard-component.mjs';
|
|
33
34
|
export * as 'settings-facet-component' from './settings-facet-component.mjs';
|
|
34
35
|
export * as 'settings-migration-component' from './settings-migration-component.mjs';
|
|
36
|
+
export * as 'shared-component-pool-component' from './shared-component-pool-component.mjs';
|
|
35
37
|
export * as 'style-sheet-component' from './style-sheet-component.mjs';
|
|
36
38
|
export * as 'syntax-highlighting-component' from './syntax-highlighting-component.mjs';
|
|
37
39
|
export * as 'templates-language-component' from './templates-language-component.mjs';
|
|
40
|
+
export * as 'worker-component' from './worker-component.mjs';
|
|
41
|
+
export * as 'worker-pool-component' from './worker-pool-component.mjs';
|
|
42
|
+
export * as 'workspace-layout-state-component' from './workspace-layout-state-component.mjs';
|
|
@@ -5,6 +5,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
import * as abort_signal_component from "./abort-signal-component.mjs";
|
|
7
7
|
import * as all_windows_event_component from "./all-windows-event-component.mjs";
|
|
8
|
+
import * as all_windows_status_bar_item_component from "./all-windows-status-bar-item-component.mjs";
|
|
8
9
|
import * as async_error_handler_component from "./async-error-handler-component.mjs";
|
|
9
10
|
import * as async_events_component from "./async-events-component.mjs";
|
|
10
11
|
import * as bulk_operation_commit_component from "./bulk-operation-commit-component.mjs";
|
|
@@ -36,12 +37,17 @@ import * as rename_delete_handler_component from "./rename-delete-handler-compon
|
|
|
36
37
|
import * as rmdir_guard_component from "./rmdir-guard-component.mjs";
|
|
37
38
|
import * as settings_facet_component from "./settings-facet-component.mjs";
|
|
38
39
|
import * as settings_migration_component from "./settings-migration-component.mjs";
|
|
40
|
+
import * as shared_component_pool_component from "./shared-component-pool-component.mjs";
|
|
39
41
|
import * as style_sheet_component from "./style-sheet-component.mjs";
|
|
40
42
|
import * as syntax_highlighting_component from "./syntax-highlighting-component.mjs";
|
|
41
43
|
import * as templates_language_component from "./templates-language-component.mjs";
|
|
44
|
+
import * as worker_component from "./worker-component.mjs";
|
|
45
|
+
import * as worker_pool_component from "./worker-pool-component.mjs";
|
|
46
|
+
import * as workspace_layout_state_component from "./workspace-layout-state-component.mjs";
|
|
42
47
|
export {
|
|
43
48
|
abort_signal_component as "abort-signal-component",
|
|
44
49
|
all_windows_event_component as "all-windows-event-component",
|
|
50
|
+
all_windows_status_bar_item_component as "all-windows-status-bar-item-component",
|
|
45
51
|
async_error_handler_component as "async-error-handler-component",
|
|
46
52
|
async_events_component as "async-events-component",
|
|
47
53
|
bulk_operation_commit_component as "bulk-operation-commit-component",
|
|
@@ -73,8 +79,12 @@ export {
|
|
|
73
79
|
rmdir_guard_component as "rmdir-guard-component",
|
|
74
80
|
settings_facet_component as "settings-facet-component",
|
|
75
81
|
settings_migration_component as "settings-migration-component",
|
|
82
|
+
shared_component_pool_component as "shared-component-pool-component",
|
|
76
83
|
style_sheet_component as "style-sheet-component",
|
|
77
84
|
syntax_highlighting_component as "syntax-highlighting-component",
|
|
78
|
-
templates_language_component as "templates-language-component"
|
|
85
|
+
templates_language_component as "templates-language-component",
|
|
86
|
+
worker_component as "worker-component",
|
|
87
|
+
worker_pool_component as "worker-pool-component",
|
|
88
|
+
workspace_layout_state_component as "workspace-layout-state-component"
|
|
79
89
|
};
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJvcnQtc2lnbmFsLWNvbXBvbmVudCcgZnJvbSAnLi9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQnIGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1zdGF0dXMtYmFyLWl0ZW0tY29tcG9uZW50JyBmcm9tICcuL2FsbC13aW5kb3dzLXN0YXR1cy1iYXItaXRlbS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50JyBmcm9tICcuL2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy1ldmVudHMtY29tcG9uZW50JyBmcm9tICcuL2FzeW5jLWV2ZW50cy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2J1bGstb3BlcmF0aW9uLWNvbW1pdC1jb21wb25lbnQnIGZyb20gJy4vYnVsay1vcGVyYXRpb24tY29tbWl0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LWNvbXBvbmVudCcgZnJvbSAnLi9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjb21wb25lbnQtZXgnIGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmV4cG9ydCAqIGFzICdjb25zb2xlLWRlYnVnLWNvbXBvbmVudCcgZnJvbSAnLi9jb25zb2xlLWRlYnVnLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnY29yZS1wbHVnaW4tdG9nZ2xlLWNvbXBvbmVudCcgZnJvbSAnLi9jb3JlLXBsdWdpbi10b2dnbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdkaXNwb3NhYmxlLWNvbXBvbmVudCcgZnJvbSAnLi9kaXNwb3NhYmxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQnIGZyb20gJy4vZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2VtYmVkZGFibGUtbWFya2Rvd24tZWRpdG9yLWNvbXBvbmVudCcgZnJvbSAnLi9lbWJlZGRhYmxlLW1hcmtkb3duLWVkaXRvci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2ZpbGUtZXhwbG9yZXItcm9vdC1tZW51LWNvbXBvbmVudCcgZnJvbSAnLi9maWxlLWV4cGxvcmVyLXJvb3QtbWVudS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50JyBmcm9tICcuL2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdpbmNyZW1lbnRhbC1maWxlLWluZGV4LWNvbXBvbmVudCcgZnJvbSAnLi9pbmNyZW1lbnRhbC1maWxlLWluZGV4LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbGF5b3V0LXJlYWR5LWNvbXBvbmVudCcgZnJvbSAnLi9sYXlvdXQtcmVhZHktY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdtZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQnIGZyb20gJy4vbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdtb25rZXktYXJvdW5kLWNvbXBvbmVudCcgZnJvbSAnLi9tb25rZXktYXJvdW5kLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbm90ZWJvb2stbmF2aWdhdG9yLW1lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCcgZnJvbSAnLi9ub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tY29udGV4dC1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tZ2F0ZS1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLWdhdGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbm90aWNlLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXN1Z2dlc3Rpb24tY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncG9pbnRlci1wb3NpdGlvbi1jb21wb25lbnQnIGZyb20gJy4vcG9pbnRlci1wb3NpdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3JlY29uZmlndXJhYmxlLWVkaXRvci1leHRlbnNpb24tY29tcG9uZW50JyBmcm9tICcuL3JlY29uZmlndXJhYmxlLWVkaXRvci1leHRlbnNpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdyZWdpc3RyeS1jb21wb25lbnQnIGZyb20gJy4vcmVnaXN0cnktY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdyZWxlYXNlLW5vdGVzLWNvbXBvbmVudCcgZnJvbSAnLi9yZWxlYXNlLW5vdGVzLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9yZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdybWRpci1ndWFyZC1jb21wb25lbnQnIGZyb20gJy4vcm1kaXItZ3VhcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5ncy1mYWNldC1jb21wb25lbnQnIGZyb20gJy4vc2V0dGluZ3MtZmFjZXQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5ncy1taWdyYXRpb24tY29tcG9uZW50JyBmcm9tICcuL3NldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3NoYXJlZC1jb21wb25lbnQtcG9vbC1jb21wb25lbnQnIGZyb20gJy4vc2hhcmVkLWNvbXBvbmVudC1wb29sLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnc3R5bGUtc2hlZXQtY29tcG9uZW50JyBmcm9tICcuL3N0eWxlLXNoZWV0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnc3ludGF4LWhpZ2hsaWdodGluZy1jb21wb25lbnQnIGZyb20gJy4vc3ludGF4LWhpZ2hsaWdodGluZy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3RlbXBsYXRlcy1sYW5ndWFnZS1jb21wb25lbnQnIGZyb20gJy4vdGVtcGxhdGVzLWxhbmd1YWdlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnd29ya2VyLWNvbXBvbmVudCcgZnJvbSAnLi93b3JrZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICd3b3JrZXItcG9vbC1jb21wb25lbnQnIGZyb20gJy4vd29ya2VyLXBvb2wtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICd3b3Jrc3BhY2UtbGF5b3V0LXN0YXRlLWNvbXBvbmVudCcgZnJvbSAnLi93b3Jrc3BhY2UtbGF5b3V0LXN0YXRlLWNvbXBvbmVudC50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQUVBLFlBQVlBLDRCQUE4QjtBQUMxQyxZQUFZQyxpQ0FBbUM7QUFDL0MsWUFBWUMsMkNBQTZDO0FBQ3pELFlBQVlDLG1DQUFxQztBQUNqRCxZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMscUNBQXVDO0FBQ25ELFlBQVlDLDJDQUE2QztBQUN6RCxZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLGtDQUFvQztBQUNoRCxZQUFZQywwQkFBNEI7QUFDeEMsWUFBWUMsZ0NBQWtDO0FBQzlDLFlBQVlDLDBDQUE0QztBQUN4RCxZQUFZQyx1Q0FBeUM7QUFDckQsWUFBWUMscURBQXVEO0FBQ25FLFlBQVlDLHNDQUF3QztBQUNwRCxZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMsb0NBQXNDO0FBQ2xELFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyx1REFBeUQ7QUFDckUsWUFBWUMsOEJBQWdDO0FBQzVDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZQyw2QkFBK0I7QUFDM0MsWUFBWUMsK0JBQWlDO0FBQzdDLFlBQVlDLG1DQUFxQztBQUNqRCxZQUFZQyxpQ0FBbUM7QUFDL0MsWUFBWUMsZ0NBQWtDO0FBQzlDLFlBQVlDLCtDQUFpRDtBQUM3RCxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLHFDQUF1QztBQUNuRCxZQUFZQywyQkFBNkI7QUFDekMsWUFBWUMsOEJBQWdDO0FBQzVDLFlBQVlDLGtDQUFvQztBQUNoRCxZQUFZQyxxQ0FBdUM7QUFDbkQsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLG1DQUFxQztBQUNqRCxZQUFZQyxrQ0FBb0M7QUFDaEQsWUFBWUMsc0JBQXdCO0FBQ3BDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZQyxzQ0FBd0M7IiwKICAibmFtZXMiOiBbImFib3J0LXNpZ25hbC1jb21wb25lbnQiLCAiYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50IiwgImFsbC13aW5kb3dzLXN0YXR1cy1iYXItaXRlbS1jb21wb25lbnQiLCAiYXN5bmMtZXJyb3ItaGFuZGxlci1jb21wb25lbnQiLCAiYXN5bmMtZXZlbnRzLWNvbXBvbmVudCIsICJidWxrLW9wZXJhdGlvbi1jb21taXQtY29tcG9uZW50IiwgImNhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC1jb21wb25lbnQiLCAiY29tcG9uZW50LWV4IiwgImNvbnNvbGUtZGVidWctY29tcG9uZW50IiwgImNvcmUtcGx1Z2luLXRvZ2dsZS1jb21wb25lbnQiLCAiZGlzcG9zYWJsZS1jb21wb25lbnQiLCAiZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQiLCAiZW1iZWRkYWJsZS1tYXJrZG93bi1lZGl0b3ItY29tcG9uZW50IiwgImZpbGUtZXhwbG9yZXItcm9vdC1tZW51LWNvbXBvbmVudCIsICJnZW5lcmF0ZS1tYXJrZG93bi1saW5rLWRlZmF1bHQtcGFyYW1zLWNvbXBvbmVudCIsICJpbmNyZW1lbnRhbC1maWxlLWluZGV4LWNvbXBvbmVudCIsICJsYXlvdXQtcmVhZHktY29tcG9uZW50IiwgIm1lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCIsICJtb25rZXktYXJvdW5kLWNvbXBvbmVudCIsICJub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50IiwgInBsdWdpbi1jb250ZXh0LWNvbXBvbmVudCIsICJwbHVnaW4tZ2F0ZS1jb21wb25lbnQiLCAicGx1Z2luLW5vdGljZS1jb21wb25lbnQiLCAicGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudCIsICJwbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudCIsICJwbHVnaW4tc3VnZ2VzdGlvbi1jb21wb25lbnQiLCAicG9pbnRlci1wb3NpdGlvbi1jb21wb25lbnQiLCAicmVjb25maWd1cmFibGUtZWRpdG9yLWV4dGVuc2lvbi1jb21wb25lbnQiLCAicmVnaXN0cnktY29tcG9uZW50IiwgInJlbGVhc2Utbm90ZXMtY29tcG9uZW50IiwgInJlbmFtZS1kZWxldGUtaGFuZGxlci1jb21wb25lbnQiLCAicm1kaXItZ3VhcmQtY29tcG9uZW50IiwgInNldHRpbmdzLWZhY2V0LWNvbXBvbmVudCIsICJzZXR0aW5ncy1taWdyYXRpb24tY29tcG9uZW50IiwgInNoYXJlZC1jb21wb25lbnQtcG9vbC1jb21wb25lbnQiLCAic3R5bGUtc2hlZXQtY29tcG9uZW50IiwgInN5bnRheC1oaWdobGlnaHRpbmctY29tcG9uZW50IiwgInRlbXBsYXRlcy1sYW5ndWFnZS1jb21wb25lbnQiLCAid29ya2VyLWNvbXBvbmVudCIsICJ3b3JrZXItcG9vbC1jb21wb25lbnQiLCAid29ya3NwYWNlLWxheW91dC1zdGF0ZS1jb21wb25lbnQiXQp9Cg==
|
|
@@ -66,12 +66,11 @@
|
|
|
66
66
|
*
|
|
67
67
|
* ## What this can and cannot see
|
|
68
68
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* broadcast
|
|
74
|
-
* manifest is read.
|
|
69
|
+
* Every conflicting plugin is caught the moment it is enabled, disabled, installed, uninstalled or
|
|
70
|
+
* updated, whoever wrote it. Read from Obsidian `1.15.1`: `app.plugins` is an `Events` source whose
|
|
71
|
+
* `didChange` triggers `changed`, debounced by one macrotask, after each of those, and the gate re-reads
|
|
72
|
+
* the manifests on it. A plugin built on this library also announces itself through the lifecycle
|
|
73
|
+
* broadcast (`plugin-lifecycle-events.ts`), which the gate re-reads on too.
|
|
75
74
|
*
|
|
76
75
|
* ## Why a loss is announced late
|
|
77
76
|
*
|
|
@@ -85,6 +84,7 @@
|
|
|
85
84
|
* dependency — outlasts the window and is announced as before, only a few seconds later.
|
|
86
85
|
*/
|
|
87
86
|
import type { Plugin } from 'obsidian';
|
|
87
|
+
import type { ThirdPartyPluginDependency } from '../plugin/third-party-plugin.mjs';
|
|
88
88
|
import type { PluginNoticeComponent } from './plugin-notice-component.mjs';
|
|
89
89
|
import { ComponentEx } from './component-ex.mjs';
|
|
90
90
|
/**
|
|
@@ -106,6 +106,12 @@ export declare enum PluginConflictSeverity {
|
|
|
106
106
|
*/
|
|
107
107
|
Warn = "warn"
|
|
108
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* A dependency `PluginBase.getPluginDependencies()` may declare: a plugin built on this library that publishes
|
|
111
|
+
* its API ({@link PluginDependency}), or a third-party plugin read through an adapter
|
|
112
|
+
* ({@link ThirdPartyPluginDependency}).
|
|
113
|
+
*/
|
|
114
|
+
export type DeclaredPluginDependency = PluginDependency | ThirdPartyPluginDependency;
|
|
109
115
|
/**
|
|
110
116
|
* A plugin another plugin refuses to run beside, or warns about running beside.
|
|
111
117
|
*/
|
|
@@ -144,9 +150,9 @@ export interface PluginConflict {
|
|
|
144
150
|
readonly severity: PluginConflictSeverity;
|
|
145
151
|
}
|
|
146
152
|
/**
|
|
147
|
-
* A plugin another plugin cannot work without.
|
|
153
|
+
* A plugin another plugin cannot work without, publishing its API through this library's registry.
|
|
148
154
|
*/
|
|
149
|
-
export interface PluginDependency {
|
|
155
|
+
export interface PluginDependency extends PluginDependencyBase {
|
|
150
156
|
/**
|
|
151
157
|
* The semver range of API contract versions the dependent compiled against, e.g. `'^2'`.
|
|
152
158
|
*
|
|
@@ -155,11 +161,16 @@ export interface PluginDependency {
|
|
|
155
161
|
* one" message. Spell "any version" as `'>=0.0.0'` — `compare-versions` rejects a bare `*`.
|
|
156
162
|
*/
|
|
157
163
|
readonly apiVersionRange: string;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* What every declared dependency has, whichever way its API is read.
|
|
167
|
+
*/
|
|
168
|
+
export interface PluginDependencyBase {
|
|
158
169
|
/**
|
|
159
170
|
* The oldest release of the required plugin the dependent works with, e.g. `'2.2.0'`.
|
|
160
171
|
*
|
|
161
172
|
* For a provider whose BEHAVIOR changed while its API contract stayed the same, which
|
|
162
|
-
* {@link apiVersionRange} cannot see. A dependency enabled below it counts as UNSATISFIED and asks the
|
|
173
|
+
* {@link PluginDependency.apiVersionRange} cannot see. A dependency enabled below it counts as UNSATISFIED and asks the
|
|
163
174
|
* user to update it. Evaluated against `manifest.version`; a version that cannot be parsed counts as too
|
|
164
175
|
* old. A minimum rather than a range, because the only advice the gate can give is "update it", and an
|
|
165
176
|
* upper bound is a version no update reaches.
|
|
@@ -196,7 +207,7 @@ export interface PluginGateComponentConstructorParams {
|
|
|
196
207
|
* The dependencies to enforce. An empty list means the plugin depends on nothing, and its feature
|
|
197
208
|
* surface loads immediately.
|
|
198
209
|
*/
|
|
199
|
-
readonly dependencies: readonly
|
|
210
|
+
readonly dependencies: readonly DeclaredPluginDependency[];
|
|
200
211
|
/**
|
|
201
212
|
* Loads the host plugin's feature surface. Called once every dependency is satisfied and no blocking
|
|
202
213
|
* conflict holds, and again after a gate that had closed opens back up.
|
|
@@ -222,7 +233,7 @@ export interface PluginGateComponentConstructorParams {
|
|
|
222
233
|
*/
|
|
223
234
|
export declare class PluginGateComponent extends ComponentEx {
|
|
224
235
|
private readonly announcedWarningPluginIds;
|
|
225
|
-
private readonly
|
|
236
|
+
private readonly apiWatches;
|
|
226
237
|
private blockedSettingTab;
|
|
227
238
|
private readonly conflicts;
|
|
228
239
|
private readonly dependencies;
|
|
@@ -307,7 +318,7 @@ export declare class PluginGateComponent extends ComponentEx {
|
|
|
307
318
|
* reloading the provider, which fires the API watch's `change`, so the gate opens without a restart.
|
|
308
319
|
*
|
|
309
320
|
* @param dependency - The declared dependency.
|
|
310
|
-
* @returns Whether the dependency is enabled below its {@link
|
|
321
|
+
* @returns Whether the dependency is enabled below its {@link PluginDependencyBase.minPluginVersion}; `false`
|
|
311
322
|
* when it declares none or is not enabled, since its API is then absent anyway.
|
|
312
323
|
*/
|
|
313
324
|
private isBelowMinPluginVersion;
|
|
@@ -340,7 +351,7 @@ export declare class PluginGateComponent extends ComponentEx {
|
|
|
340
351
|
/**
|
|
341
352
|
* Decides whether a dependency is running but too old for this plugin, so the advice is "update it".
|
|
342
353
|
*
|
|
343
|
-
* Two independent signals say so: a release below {@link
|
|
354
|
+
* Two independent signals say so: a release below {@link PluginDependencyBase.minPluginVersion}, and a published
|
|
344
355
|
* API whose contract version is outside {@link PluginDependency.apiVersionRange}.
|
|
345
356
|
*
|
|
346
357
|
* @param dependency - The declared dependency.
|
|
@@ -384,4 +395,16 @@ export declare class PluginGateComponent extends ComponentEx {
|
|
|
384
395
|
private renderConflictEntry;
|
|
385
396
|
private renderOpenSettingsButton;
|
|
386
397
|
private showBlockedSettingTab;
|
|
398
|
+
/**
|
|
399
|
+
* Starts watching one dependency's API, the way its kind is read.
|
|
400
|
+
*
|
|
401
|
+
* A third-party dependency is read through its adapter, which has no contract version, so it never reports
|
|
402
|
+
* an API version mismatch: its "too old" signal is {@link PluginDependencyBase.minPluginVersion} alone, which
|
|
403
|
+
* `isBelowMinPluginVersion` reads for both kinds. So the watch is NOT handed the minimum: the ref would only
|
|
404
|
+
* read `null` for the same reason, and the gate could no longer tell "update it" from "install it".
|
|
405
|
+
*
|
|
406
|
+
* @param dependency - The declared dependency.
|
|
407
|
+
* @returns The watch.
|
|
408
|
+
*/
|
|
409
|
+
private watchDependencyApi;
|
|
387
410
|
}
|