@mnaoumov/obsidian-lib 4.1.0 → 4.2.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/dist/lib/cjs/__merged.cjs +9 -2
- package/dist/lib/cjs/__merged.d.cts +2 -2
- package/dist/lib/cjs/active-file-provider.cjs +3 -2
- package/dist/lib/cjs/app.cjs +3 -2
- package/dist/lib/cjs/async-with-notice.cjs +3 -2
- package/dist/lib/cjs/attachment-path.cjs +3 -2
- package/dist/lib/cjs/attachment-unit-folder.cjs +3 -2
- package/dist/lib/cjs/backlink-index.cjs +3 -2
- package/dist/lib/cjs/backlink.cjs +3 -2
- package/dist/lib/cjs/bases-view-registrar.cjs +3 -2
- package/dist/lib/cjs/callout.cjs +3 -2
- package/dist/lib/cjs/canvas.cjs +3 -2
- package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -2
- package/dist/lib/cjs/code-block-markdown-information.cjs +3 -2
- package/dist/lib/cjs/code-block-reg-exp.cjs +3 -2
- package/dist/lib/cjs/codemirror/index.cjs +3 -2
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +3 -2
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +3 -2
- package/dist/lib/cjs/command-handlers/command-handler-component.cjs +3 -2
- package/dist/lib/cjs/command-handlers/command-handler.cjs +3 -2
- package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +3 -2
- package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -2
- package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -2
- package/dist/lib/cjs/command-handlers/global-command-handler.cjs +3 -2
- package/dist/lib/cjs/command-handlers/index.cjs +3 -2
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +3 -2
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +3 -2
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +3 -2
- package/dist/lib/cjs/command-registrar.cjs +3 -2
- package/dist/lib/cjs/community-plugins.cjs +47 -4
- package/dist/lib/cjs/community-plugins.d.cts +36 -1
- package/dist/lib/cjs/components/abort-signal-component.cjs +3 -2
- package/dist/lib/cjs/components/all-windows-event-component.cjs +3 -2
- package/dist/lib/cjs/components/async-error-handler-component.cjs +3 -2
- package/dist/lib/cjs/components/async-events-component.cjs +3 -2
- package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +3 -2
- package/dist/lib/cjs/components/component-ex.cjs +3 -2
- package/dist/lib/cjs/components/console-debug-component.cjs +3 -2
- package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +3 -2
- package/dist/lib/cjs/components/disposable-component.cjs +3 -2
- package/dist/lib/cjs/components/embed-extensions-component.cjs +3 -2
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +3 -2
- package/dist/lib/cjs/components/index.cjs +3 -2
- package/dist/lib/cjs/components/layout-ready-component.cjs +3 -2
- package/dist/lib/cjs/components/menu-event-registrar-component.cjs +3 -2
- package/dist/lib/cjs/components/monkey-around-component.cjs +3 -2
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +3 -2
- package/dist/lib/cjs/components/plugin-context-component.cjs +3 -2
- package/dist/lib/cjs/components/plugin-gate-component.cjs +26 -4
- package/dist/lib/cjs/components/plugin-gate-component.d.cts +10 -0
- package/dist/lib/cjs/components/plugin-notice-component.cjs +3 -2
- package/dist/lib/cjs/components/plugin-settings-component.cjs +3 -2
- package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +3 -2
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +3 -2
- package/dist/lib/cjs/components/pointer-position-component.cjs +3 -2
- package/dist/lib/cjs/components/registry-component.cjs +3 -2
- package/dist/lib/cjs/components/release-notes-component.cjs +3 -2
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +3 -2
- package/dist/lib/cjs/components/rmdir-guard-component.cjs +3 -2
- package/dist/lib/cjs/components/settings-migration-component.cjs +3 -2
- package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -2
- package/dist/lib/cjs/components/templates-language-component.cjs +3 -2
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +3 -2
- package/dist/lib/cjs/constructors/index.cjs +3 -2
- package/dist/lib/cjs/css-class.cjs +3 -2
- package/dist/lib/cjs/data-handler.cjs +3 -2
- package/dist/lib/cjs/dataview-link.cjs +3 -2
- package/dist/lib/cjs/dataview.cjs +3 -2
- package/dist/lib/cjs/debug.cjs +3 -2
- package/dist/lib/cjs/demo-vault-helper-settings.cjs +3 -2
- package/dist/lib/cjs/demo-vault-helper.cjs +3 -2
- package/dist/lib/cjs/demo-vault-naming.cjs +3 -2
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +3 -2
- package/dist/lib/cjs/desktop-trusted-input.cjs +3 -2
- package/dist/lib/cjs/editor-extension-registrar.cjs +3 -2
- package/dist/lib/cjs/editor-suggest-registrar.cjs +3 -2
- package/dist/lib/cjs/editor.cjs +3 -2
- package/dist/lib/cjs/events.cjs +3 -2
- package/dist/lib/cjs/extensions-registrar.cjs +3 -2
- package/dist/lib/cjs/file-change.cjs +3 -2
- package/dist/lib/cjs/file-explorer.cjs +3 -2
- package/dist/lib/cjs/file-manager.cjs +3 -2
- package/dist/lib/cjs/file-system.cjs +3 -2
- package/dist/lib/cjs/folder-note.cjs +3 -2
- package/dist/lib/cjs/frontmatter-formatting.cjs +3 -2
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +3 -2
- package/dist/lib/cjs/frontmatter.cjs +3 -2
- package/dist/lib/cjs/generated-during-build.cjs +4 -3
- package/dist/lib/cjs/hover-link-source-registrar.cjs +3 -2
- package/dist/lib/cjs/html-element.cjs +3 -2
- package/dist/lib/cjs/i18n/custom-type-options.cjs +3 -2
- package/dist/lib/cjs/i18n/default-translations.cjs +3 -2
- package/dist/lib/cjs/i18n/i18n.cjs +3 -2
- package/dist/lib/cjs/i18n/index.cjs +3 -2
- package/dist/lib/cjs/i18n/locales/en.cjs +7 -2
- package/dist/lib/cjs/i18n/locales/en.d.cts +4 -0
- package/dist/lib/cjs/i18n/locales/index.cjs +3 -2
- package/dist/lib/cjs/i18n/locales/translations-map.cjs +3 -2
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +4 -0
- package/dist/lib/cjs/index.cjs +3 -2
- package/dist/lib/cjs/is-in-obsidian.cjs +3 -2
- package/dist/lib/cjs/library-styles.cjs +3 -2
- package/dist/lib/cjs/library.cjs +3 -2
- package/dist/lib/cjs/link-name.cjs +3 -2
- package/dist/lib/cjs/link-update-progress.cjs +3 -2
- package/dist/lib/cjs/link.cjs +3 -2
- package/dist/lib/cjs/logger.cjs +3 -2
- package/dist/lib/cjs/loop.cjs +3 -2
- package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +3 -2
- package/dist/lib/cjs/markdown-code-block-processor.cjs +3 -2
- package/dist/lib/cjs/markdown-post-processor-registrar.cjs +3 -2
- package/dist/lib/cjs/markdown-view.cjs +3 -2
- package/dist/lib/cjs/markdown.cjs +3 -2
- package/dist/lib/cjs/menu-event-registrar.cjs +3 -2
- package/dist/lib/cjs/metadata-cache.cjs +3 -2
- package/dist/lib/cjs/mobile-trusted-input.cjs +3 -2
- package/dist/lib/cjs/modals/alert.cjs +3 -2
- package/dist/lib/cjs/modals/confirm.cjs +3 -2
- package/dist/lib/cjs/modals/index.cjs +3 -2
- package/dist/lib/cjs/modals/minimizable-modal.cjs +3 -2
- package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -2
- package/dist/lib/cjs/modals/modal.cjs +3 -2
- package/dist/lib/cjs/modals/prompt.cjs +3 -2
- package/dist/lib/cjs/modals/select-item.cjs +3 -2
- package/dist/lib/cjs/modals/select-option.cjs +3 -2
- package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +3 -2
- package/dist/lib/cjs/note-priority.cjs +3 -2
- package/dist/lib/cjs/notebook-navigator.cjs +3 -2
- package/dist/lib/cjs/obsidian-dev-utils-state.cjs +3 -2
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +3 -2
- package/dist/lib/cjs/obsidian-settings.cjs +3 -2
- package/dist/lib/cjs/parse-link.cjs +3 -2
- package/dist/lib/cjs/path-settings.cjs +3 -2
- package/dist/lib/cjs/pdf.cjs +3 -2
- package/dist/lib/cjs/plugin/index.cjs +3 -2
- package/dist/lib/cjs/plugin/plugin-api-schema.cjs +3 -2
- package/dist/lib/cjs/plugin/plugin-api.cjs +6 -2
- package/dist/lib/cjs/plugin/plugin-api.d.cts +10 -0
- package/dist/lib/cjs/plugin/plugin-context.cjs +3 -2
- package/dist/lib/cjs/plugin/plugin-event-source.cjs +3 -2
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +31 -4
- package/dist/lib/cjs/plugin/plugin-install-state.d.cts +38 -0
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +3 -2
- package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +3 -2
- package/dist/lib/cjs/plugin/plugin.cjs +3 -2
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +3 -2
- package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +3 -2
- package/dist/lib/cjs/popovers/field-popover.cjs +3 -2
- package/dist/lib/cjs/popovers/index.cjs +3 -2
- package/dist/lib/cjs/popovers/popover-anchor.cjs +3 -2
- package/dist/lib/cjs/popovers/popover.cjs +3 -2
- package/dist/lib/cjs/property-entry.cjs +3 -2
- package/dist/lib/cjs/queue.cjs +3 -2
- package/dist/lib/cjs/react/app-context.cjs +3 -2
- package/dist/lib/cjs/react/index.cjs +3 -2
- package/dist/lib/cjs/reference.cjs +3 -2
- package/dist/lib/cjs/resource-lock.cjs +3 -2
- package/dist/lib/cjs/resource-url.cjs +3 -2
- package/dist/lib/cjs/ribbon-icon-registrar.cjs +3 -2
- package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/date-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/date-time-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/email-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/file-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/index.cjs +3 -2
- package/dist/lib/cjs/setting-components/month-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/multiple-email-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/multiple-text-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/number-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/password-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -2
- package/dist/lib/cjs/setting-components/telephone-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/text-based-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/time-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/url-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/validator-component.cjs +3 -2
- package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +3 -2
- package/dist/lib/cjs/setting-components/week-component.cjs +3 -2
- package/dist/lib/cjs/setting-ex.cjs +3 -2
- package/dist/lib/cjs/setting-group-ex.cjs +3 -2
- package/dist/lib/cjs/status-bar-item-registrar.cjs +3 -2
- package/dist/lib/cjs/templater.cjs +3 -2
- package/dist/lib/cjs/transformers/duration-transformer.cjs +3 -2
- package/dist/lib/cjs/transformers/index.cjs +3 -2
- package/dist/lib/cjs/trusted-input.cjs +3 -2
- package/dist/lib/cjs/validation.cjs +3 -2
- package/dist/lib/cjs/vault-delete.cjs +3 -2
- package/dist/lib/cjs/vault-transaction.cjs +3 -2
- package/dist/lib/cjs/vault.cjs +3 -2
- package/dist/lib/cjs/view-registrar.cjs +3 -2
- package/dist/lib/cjs/workspace.cjs +3 -2
- package/dist/lib/esm/__merged.d.mts +2 -2
- package/dist/lib/esm/__merged.mjs +9 -3
- package/dist/lib/esm/community-plugins.d.mts +36 -1
- package/dist/lib/esm/community-plugins.mjs +42 -2
- package/dist/lib/esm/components/plugin-gate-component.d.mts +10 -0
- package/dist/lib/esm/components/plugin-gate-component.mjs +30 -5
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/i18n/locales/en.d.mts +4 -0
- package/dist/lib/esm/i18n/locales/en.mjs +5 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +4 -0
- package/dist/lib/esm/plugin/plugin-api.d.mts +10 -0
- package/dist/lib/esm/plugin/plugin-api.mjs +4 -1
- package/dist/lib/esm/plugin/plugin-install-state.d.mts +38 -0
- package/dist/lib/esm/plugin/plugin-install-state.mjs +30 -3
- package/package.json +11 -4
|
@@ -77,7 +77,8 @@ ensureBrowserProcess();
|
|
|
77
77
|
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
78
78
|
return originalRequire?.(id);
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
const app = globalThis.app;
|
|
81
|
+
if (app?.isMobile) {
|
|
81
82
|
if (id === "process" || id === "node:process") {
|
|
82
83
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
83
84
|
return process;
|
|
@@ -357,4 +358,4 @@ async function renderPaginated(params) {
|
|
|
357
358
|
renderPaginatedList,
|
|
358
359
|
renderPaginatedTable
|
|
359
360
|
});
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhdmlldy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBgRGF0YXZpZXdgIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRGF0YUFycmF5LFxuICBEYXRhdmlld0FwaSxcbiAgU01hcmtkb3duUGFnZVxufSBmcm9tICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGF0YXZpZXcnO1xuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWRhdGF2aWV3L2FwaS9pbmxpbmUtYXBpJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBlcnJvclRvU3RyaW5nIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0UGF0aFxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9yZXNvdXJjZS11cmwudHMnO1xuXG4vKipcbiAqIEV4cG9ydCBEYXRlVGltZSBhbmQgTGluayB0eXBlcyBmcm9tIHRoZSBgRGF0YXZpZXdgIEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBEYXRlVGltZSxcbiAgTGlua1xufSBmcm9tICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGF0YXZpZXcnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0FwaX0gb2JqZWN0IHJlcHJlc2VudHMgdGhlIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBgRGF0YXZpZXdgIGluIE9ic2lkaWFuLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhcnMtb24tdG9wIC0tIEl0IGlzIGEgYHZhcmAgaW4gbW9kdWxlIGRlY2xhcmF0aW9uLiBFU0xpbnQgbWlzdGFrZW5seSBjb25mdXNlcyBpdCB3aXRoIGB2YXJgIGFzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG5cbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgLyoqXG4gICAgICogVGhlIGdsb2JhbCB7QGxpbmsgRGF0YXZpZXdBcGl9IG9iamVjdCBgRGF0YXZpZXdgIGluc3RhbGxzIG9uIGV2ZXJ5IHdpbmRvdy5cbiAgICAgKi9cbiAgICBEYXRhdmlld0FQST86IERhdGF2aWV3QXBpO1xuICB9XG59XG5cbi8qKlxuICogQSBjb21iaW5lZCBwYWdlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25QYWdlLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4gPSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiAmIFNNYXJrZG93blBhZ2U7XG5cbi8qKlxuICogRXh0ZW5kZWQgaW50ZXJmYWNlIGZvciB0aGUgYERhdGF2aWV3YCBJbmxpbmUgQVBJLCBwcm92aWRpbmcgYWRkaXRpb25hbCBtZXRob2RzIGZvciBjdXN0b20gcGFnZSB0eXBlcyBhbmQgYXJyYXkgaGFuZGxpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXZpZXdJbmxpbmVBcGkgZXh0ZW5kcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIHtcbiAgLyoqXG4gICAqIFdyYXBzIGFuIGFycmF5IG9mIGl0ZW1zIGludG8gYSB7QGxpbmsgRGF0YUFycmF5fSBvYmplY3QuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuXG4gICAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSBvZiBpdGVtcyB0byB3cmFwLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IGNvbnRhaW5pbmcgdGhlIGl0ZW1zLlxuICAgKi9cbiAgYXJyYXk6IDxUPihhcnJheTogVFtdKSA9PiBEYXRhQXJyYXk8VD47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBwYWdlLCB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSBwYWdlIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWdlLlxuICAgKi9cbiAgY3VycmVudDogPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4oKSA9PiBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXI+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgcGFnZXMgYmFzZWQgb24gYW4gb3B0aW9uYWwgcXVlcnksIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEBwYXJhbSBxdWVyeSAtIEFuIG9wdGlvbmFsIHN0cmluZyBxdWVyeSB0byBmaWx0ZXIgdGhlIHBhZ2VzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IG9mIHBhZ2VzIG1hdGNoaW5nIHRoZSBxdWVyeS5cbiAgICovXG4gIHBhZ2VzOiA8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihxdWVyeT86IHN0cmluZykgPT4gRGF0YUFycmF5PENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlcj4+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGFyYWdyYXBoIEhUTUwgZWxlbWVudCB3aXRoIHRoZSBwcm92aWRlZCB0ZXh0IGFuZCBvcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRoZSBjb250ZW50IG9mIHRoZSBwYXJhZ3JhcGguXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgRE9NIGVsZW1lbnQgb3B0aW9ucywgaW5jbHVkaW5nIGFuIG9wdGlvbmFsIGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgSFRNTCBwYXJhZ3JhcGggZWxlbWVudC5cbiAgICovXG4gIHBhcmFncmFwaDogKFxuICAgIHRleHQ6IHVua25vd24sXG4gICAgb3B0aW9ucz86IERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lclxuICApID0+IEhUTUxQYXJhZ3JhcGhFbGVtZW50O1xufVxuXG4vKipcbiAqIERvbUVsZW1lbnRJbmZvIHdpdGggYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICovXG5leHBvcnQgdHlwZSBEb21FbGVtZW50SW5mb1dpdGhDb250YWluZXIgPSBDb250YWluZXJJbmZvICYgRG9tRWxlbWVudEluZm87XG5cbi8qKlxuICogQSBjb21iaW5lZCBmaWxlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25GaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZSA9IFNNYXJrZG93blBhZ2VbJ2ZpbGUnXTtcblxuLyoqXG4gKiBMaXN0IG9mIHBhZ2UgZmlsZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VGaWxlcyA9IEFycmF5T3JEYXRhQXJyYXk8UGFnZUZpbGU+O1xuXG5pbnRlcmZhY2UgQ29udGFpbmVySW5mbyB7XG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50O1xufVxuXG4vKipcbiAqIFJlbG9hZHMgdGhlIGN1cnJlbnQgZmlsZSBjYWNoZSB1c2luZyB0aGUgYERhdGF2aWV3YCBBUEkuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjYWNoZSBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZEN1cnJlbnRGaWxlQ2FjaGUoZHY6IERhdGF2aWV3SW5saW5lQXBpKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGFjdGl2ZVdpbmRvdy5EYXRhdmlld0FQST8uaW5kZXgucmVsb2FkKGdldEZpbGUoe1xuICAgIGFwcDogZHYuYXBwLFxuICAgIHBhdGhPckZpbGU6IGR2LmN1cnJlbnQoKS5maWxlLnBhdGhcbiAgfSkpO1xufVxuXG5jb25zdCBwYWdpbmF0aW9uQ3NzID0gYFxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjb2xvcjogZ3JheTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluayB7XG4gIG1hcmdpbjogMCA1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogYmx1ZTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluazpob3Zlcjpub3QoLmRpc2FibGVkKSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5jdXJyZW50IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ucGFnaW5hdGlvbiBzZWxlY3QsXG4ucGFnaW5hdGlvbiBpbnB1dCB7XG4gIG1hcmdpbjogMCA1cHg7XG59XG5gO1xuXG4vKipcbiAqIEFycmF5IG9yIERhdGFBcnJheSB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5zZXJ0Q29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDb2RlQmxvY2tQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvZGUgY29udGVudCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UgdG8gaW5zZXJ0IHRoZSBjb2RlIGJsb2NrIGludG8uXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIGZvciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlcklmcmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQSBoZWlnaHQgb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCc2MDBweCdgXG4gICAqL1xuICByZWFkb25seSBoZWlnaHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgcmVzb3VyY2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpZnJhbWUuXG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgd2lkdGggb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcxMDAlJ2BcbiAgICovXG4gIHJlYWRvbmx5IHdpZHRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJQYWdpbmF0ZWRMaXN0fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgbGlzdCBpdGVtcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRMaXN0UGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzRm9yT25lUGFnZSAtIFRoZSByb3dzIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVuZGVyZXI6IChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPikgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogUm93cyB0byBwYWdpbmF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlclBhZ2luYXRlZFRhYmxlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdGFibGUgcm93IGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkVGFibGVQYXJhbXM8VD4ge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGhlYWRlcnMgb2YgdGhlIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgWzEwLCAyMCwgNTAsIDEwMF1gXG4gICAqL1xuICByZWFkb25seSBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFJvd3Mgb2YgdGhlIHRhYmxlIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlUGFnZUxpbmt9LlxuICovXG5pbnRlcmZhY2UgQ3JlYXRlUGFnZUxpbmtQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHBhZ2UgbnVtYmVyIHRoZSBsaW5rIHBvaW50cyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRQYWdlTnVtYmVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxpbmsgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGNvbnRlbnQgdXNpbmcgdGhlIHByb3ZpZGVkIHJlbmRlcmVyIGZ1bmN0aW9uIGluIGEgdGVtcG9yYXJ5IGNvbnRhaW5lcixcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIGNvbnRhaW5lci5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcmVuZGVyZXIgLSBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnRcbiAqIHRoYXQgd2FzIHVzZWQgYXMgdGhlIHRlbXBvcmFyeSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZW5kZXJlZENvbnRhaW5lcihkdjogRGF0YXZpZXdJbmxpbmVBcGksIHJlbmRlcmVyOiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogUHJvbWlzZTxIVE1MUGFyYWdyYXBoRWxlbWVudD4ge1xuICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG4gIGNvbnN0IHRlbXBvcmFyeUNvbnRhaW5lciA9IGR2LnBhcmFncmFwaCgnJyk7XG4gIGR2LmNvbnRhaW5lciA9IHRlbXBvcmFyeUNvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGR2LnBhcmFncmFwaChg4p2MJHtlcnJvclRvU3RyaW5nKGVycm9yKX1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlcyAtLSBZZXMsIGl0IGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLCBidXQgSSBkb24ndCBhbiBlbGVnYW50IHdheSB0byBmaXggaXQuXG4gICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIHRlbXBvcmFyeUNvbnRhaW5lci5yZW1vdmUoKTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wb3JhcnlDb250YWluZXI7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIGNvZGUgYmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIGBEYXRhdmlld2AgaW5zdGFuY2UgdXNpbmcgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIGFuZCBjb2RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgaW5zZXJ0aW5nIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29kZUJsb2NrKHBhcmFtczogSW5zZXJ0Q29kZUJsb2NrUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBjb2RlLFxuICAgIGR2LFxuICAgIGxhbmd1YWdlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IE1JTl9GRU5DRV9MRU5HVEggPSAzO1xuICBjb25zdCBmZW5jZVJlZ0V4cCA9IG5ldyBSZWdFeHAoYF5cXGB7JHtTdHJpbmcoTUlOX0ZFTkNFX0xFTkdUSCl9LH1gLCAnZ20nKTtcbiAgY29uc3QgZmVuY2VNYXRjaGVzID0gY29kZS5tYXRjaEFsbChmZW5jZVJlZ0V4cCk7XG4gIGNvbnN0IGZlbmNlTGVuZ3RocyA9IFsuLi5mZW5jZU1hdGNoZXNdLm1hcCgoZmVuY2VNYXRjaCkgPT4gZmVuY2VNYXRjaFswXS5sZW5ndGgpO1xuICBjb25zdCBtYXhGZW5jZUxlbmd0aCA9IE1hdGgubWF4KDAsIC4uLmZlbmNlTGVuZ3Rocyk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlTGVuZ3RoID0gTWF0aC5tYXgoTUlOX0ZFTkNFX0xFTkdUSCwgbWF4RmVuY2VMZW5ndGggKyAxKTtcbiAgY29uc3QgcmVzdWx0RmVuY2UgPSAnYCcucmVwZWF0KHJlc3VsdEZlbmNlTGVuZ3RoKTtcblxuICBkdi5wYXJhZ3JhcGgoYCR7cmVzdWx0RmVuY2V9JHtsYW5ndWFnZX1cbiR7Y29kZX1cbiR7cmVzdWx0RmVuY2V9YCk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhbiBpZnJhbWUgaW4gdGhlIGBEYXRhdmlld2AgY29udGFpbmVyIHdpdGggdGhlIHNwZWNpZmllZCByZWxhdGl2ZSBwYXRoLCB3aWR0aCwgYW5kIGhlaWdodC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgaWZyYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVySWZyYW1lKHBhcmFtczogUmVuZGVySWZyYW1lUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBoZWlnaHQgPSAnNjAwcHgnLFxuICAgIHJlbGF0aXZlUGF0aE9yRmlsZSxcbiAgICB3aWR0aCA9ICcxMDAlJ1xuICB9ID0gcGFyYW1zO1xuICBkdi5lbCgnaWZyYW1lJywgJycsIHtcbiAgICBhdHRyOiB7XG4gICAgICBoZWlnaHQsXG4gICAgICBzcmM6IHJlbGF0aXZlUGF0aFRvUmVzb3VyY2VVcmwoe1xuICAgICAgICBhcHA6IGR2LmFwcCxcbiAgICAgICAgbm90ZVBhdGg6IGR2LmN1cnJlbnQoKS5maWxlLnBhdGgsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogZ2V0UGF0aChkdi5hcHAsIHJlbGF0aXZlUGF0aE9yRmlsZSlcbiAgICAgIH0pLFxuICAgICAgd2lkdGhcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgbGlzdCB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIGxpc3QuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCBsaXN0LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGlzdCBpcyByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZExpc3Q8VD4ocGFyYW1zOiBSZW5kZXJQYWdpbmF0ZWRMaXN0UGFyYW1zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBkdi5saXN0KHJvd3NGb3JPbmVQYWdlKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCB0YWJsZSB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIHRhYmxlIHJvd3MuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCB0YWJsZS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhYmxlIGlzIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkVGFibGU8VCBleHRlbmRzIHVua25vd25bXT4ocGFyYW1zOiBSZW5kZXJQYWdpbmF0ZWRUYWJsZVBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgaGVhZGVycyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBkdi50YWJsZShoZWFkZXJzLCByb3dzRm9yT25lUGFnZSk7XG4gICAgfSxcbiAgICByb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byByZW5kZXIgcGFnaW5hdGVkIGNvbnRlbnQgdXNpbmcgdGhlIHNwZWNpZmllZCByZW5kZXJlci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyB0byBwYWdpbmF0ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWQ8VD4ocGFyYW1zOiBSZW5kZXJQYWdpbmF0ZWRQYXJhbXM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgU0VDT05EX1BBR0VfTlVNQkVSID0gMjtcbiAgY29uc3QgTU9SRV9QQUdFX05VTUJFUiA9IDM7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBwYXJhbXM7XG4gIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgIGR2LnBhcmFncmFwaCgnTm8gaXRlbXMgZm91bmQnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBsZXQgaXRlbXNQZXJQYWdlID0gZW5zdXJlTm9uTnVsbGFibGUoaXRlbXNQZXJQYWdlT3B0aW9uc1swXSwgJ0l0ZW1zIHBlciBwYWdlIG9wdGlvbnMgYXJlIGVtcHR5Jyk7XG4gIGxldCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcblxuICBmdW5jdGlvbiBjcmVhdGVQYWdpbmF0aW9uQ29udHJvbHMocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkRpdiA9IGNvbnRhaW5lci5jcmVhdGVEaXYoeyBjbHM6ICdwYWdpbmF0aW9uJyB9KTtcbiAgICBjb25zdCBwYWdpbmF0aW9uUm93MURpdiA9IHBhZ2luYXRpb25EaXYuY3JlYXRlRGl2KCk7XG5cbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiAxLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gMSwgdGV4dDogJ0ZpcnN0JyB9KTtcbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiBwYWdlTnVtYmVyIC0gMSwgZGlzYWJsZWQ6IHBhZ2VOdW1iZXIgPT09IDEsIHRleHQ6ICdQcmV2JyB9KTtcblxuICAgIGlmIChwYWdlTnVtYmVyID4gTU9SRV9QQUdFX05VTUJFUikge1xuICAgICAgcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlU3Bhbih7IHRleHQ6ICcuLi4nIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGluZGV4ID0gTWF0aC5tYXgoMSwgcGFnZU51bWJlciAtIFNFQ09ORF9QQUdFX05VTUJFUik7IGluZGV4IDw9IE1hdGgubWluKHRvdGFsUGFnZXMsIHBhZ2VOdW1iZXIgKyBTRUNPTkRfUEFHRV9OVU1CRVIpOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBwYWdlTGluayA9IGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IGluZGV4LCBkaXNhYmxlZDogaW5kZXggPT09IHBhZ2VOdW1iZXIsIHRleHQ6IFN0cmluZyhpbmRleCkgfSk7XG4gICAgICBpZiAoaW5kZXggPT09IHBhZ2VOdW1iZXIpIHtcbiAgICAgICAgcGFnZUxpbmsuYWRkQ2xhc3MoJ2N1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFnZU51bWJlciA8IHRvdGFsUGFnZXMgLSBTRUNPTkRfUEFHRV9OVU1CRVIpIHtcbiAgICAgIHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiAnLi4uJyB9KTtcbiAgICB9XG5cbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiBwYWdlTnVtYmVyICsgMSwgZGlzYWJsZWQ6IHBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXMsIHRleHQ6ICdOZXh0JyB9KTtcbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiB0b3RhbFBhZ2VzLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcywgdGV4dDogJ0xhc3QnIH0pO1xuXG4gICAgY29uc3QgcGFnaW5hdGlvblJvdzJEaXYgPSBwYWdpbmF0aW9uRGl2LmNyZWF0ZURpdigpO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IGAgJHt0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcuaXRlbXNQZXJQYWdlKX0gYCB9KTtcblxuICAgIGNvbnN0IGl0ZW1zUGVyUGFnZVNlbGVjdCA9IHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdzZWxlY3QnKTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBpdGVtc1BlclBhZ2VPcHRpb25zKSB7XG4gICAgICBpdGVtc1BlclBhZ2VTZWxlY3QuY3JlYXRlRWwoJ29wdGlvbicsIHsgdGV4dDogU3RyaW5nKG9wdGlvbiksIHZhbHVlOiBTdHJpbmcob3B0aW9uKSB9KTtcbiAgICB9XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlID0gU3RyaW5nKGl0ZW1zUGVyUGFnZSk7XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGl0ZW1zUGVyUGFnZSA9IHBhcnNlSW50KGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSwgMTApO1xuICAgICAgICB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgICAgICAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiBgICR7dCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3Lmp1bXBUb1BhZ2UpfSBgIH0pO1xuXG4gICAgY29uc3QganVtcFRvUGFnZUlucHV0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ2lucHV0JywgeyBhdHRyOiB7IG1heDogdG90YWxQYWdlcywgbWluOiAxIH0sIHR5cGU6ICdudW1iZXInIH0pO1xuICAgIGp1bXBUb1BhZ2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFnZSA9IHBhcnNlSW50KGp1bXBUb1BhZ2VJbnB1dC52YWx1ZSwgMTApO1xuICAgICAgICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdG90YWxQYWdlcykge1xuICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UocGFnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcucGFnZUhlYWRlciwgeyBwYWdlTnVtYmVyLCB0b3RhbEl0ZW1zOiByb3dzLmxlbmd0aCwgdG90YWxQYWdlcyB9KSB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZ2VMaW5rKHBhcmFtczI6IENyZWF0ZVBhZ2VMaW5rUGFyYW1zKTogSFRNTEFuY2hvckVsZW1lbnQge1xuICAgICAgY29uc3Qge1xuICAgICAgICBjdXJyZW50UGFnZU51bWJlcixcbiAgICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgICAgdGV4dFxuICAgICAgfSA9IHBhcmFtczI7XG4gICAgICBjb25zdCBsaW5rID0gcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlRWwoJ2EnLCB7IGNsczogJ3BhZ2UtbGluaycsIGhyZWY6IGAjJHtTdHJpbmcoY3VycmVudFBhZ2VOdW1iZXIpfWAsIHRleHQgfSk7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgbGluay5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLWFkZC1ldmVudC1saXN0ZW5lciAtLSBUaGUgaGFuZGxlciBpcyBhc3NpZ25lZCB0byBgb25jbGlja2Agc28gaXQgc3RheXMgcmVhZGFibGUgYmFjayBvZmYgdGhlIGVsZW1lbnQsIHdoaWNoIGlzIGhvdyBpdCBpcyBpbnZva2VkIGluIHRlc3RzIGFuZCBob3cgYSBsYXRlciBhc3NpZ25tZW50IGNhbiByZXBsYWNlIGl0LlxuICAgICAgICBsaW5rLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLWFkZC1ldmVudC1saXN0ZW5lciAtLSBUaGUgaGFuZGxlciBpcyBhc3NpZ25lZCB0byBgb25jbGlja2Agc28gaXQgc3RheXMgcmVhZGFibGUgYmFjayBvZmYgdGhlIGVsZW1lbnQsIHdoaWNoIGlzIGhvdyBpdCBpcyBpbnZva2VkIGluIHRlc3RzIGFuZCBob3cgYSBsYXRlciBhc3NpZ25tZW50IGNhbiByZXBsYWNlIGl0LlxuICAgICAgICBsaW5rLm9uY2xpY2sgPSBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKGV2ZW50OiBNb3VzZUV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKGN1cnJlbnRQYWdlTnVtYmVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluaztcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnRhaW5lci5lbXB0eSgpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWZvcmJpZGRlbi1lbGVtZW50cyAtLSBXZSBuZWVkIHRvIGNyZWF0ZSBhIHN0eWxlIGVsZW1lbnQgdG8gYXBwbHkgdGhlIHBhZ2luYXRpb24gQ1NTLlxuICAgIGNvbnRhaW5lci5jcmVhdGVFbCgnc3R5bGUnLCB7IHRleHQ6IHBhZ2luYXRpb25Dc3MgfSk7XG5cbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHBhZ2VOdW1iZXIgLSAxKSAqIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3Qgcm93c0ZvckN1cnJlbnRQYWdlID0gcm93cy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XG5cbiAgICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG5cbiAgICBkdi5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHBhcmFtcy5yZW5kZXJlcihyb3dzRm9yQ3VycmVudFBhZ2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkdi5wYXJhZ3JhcGgoYOKdjCR7ZXJyb3JUb1N0cmluZyhlcnJvcil9YCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzIC0tIFllcywgaXQgaXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24sIGJ1dCBJIGRvbid0IGFuIGVsZWdhbnQgd2F5IHRvIGZpeCBpdC5cbiAgICAgIGR2LmNvbnRhaW5lciA9IG9sZENvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBjcmVhdGVQYWdpbmF0aW9uQ29udHJvbHMocGFnZU51bWJlcik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBLG1CQUFtQztBQUNuQyxtQkFBOEI7QUFDOUIseUJBQWtDO0FBS2xDLHlCQUdPO0FBQ1Asa0JBQWtCO0FBQ2xCLDBCQUEwQztBQW9HMUMsZUFBc0IsdUJBQXVCLElBQXNDO0FBQ2pGLFFBQU0sYUFBYSxhQUFhLE1BQU0sV0FBTyw0QkFBUTtBQUFBLElBQ25ELEtBQUssR0FBRztBQUFBLElBQ1IsWUFBWSxHQUFHLFFBQVEsRUFBRSxLQUFLO0FBQUEsRUFDaEMsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxNQUFNLGdCQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcU10QixlQUFzQixxQkFBcUIsSUFBdUIsVUFBaUU7QUFDakksUUFBTSxlQUFlLEdBQUc7QUFDeEIsUUFBTSxxQkFBcUIsR0FBRyxVQUFVLEVBQUU7QUFDMUMsS0FBRyxZQUFZO0FBQ2YsS0FBRyxVQUFVLE1BQU07QUFFbkIsTUFBSTtBQUNGLFVBQU0sU0FBUztBQUFBLEVBQ2pCLFNBQVMsT0FBTztBQUNkLE9BQUcsVUFBVSxhQUFJLDRCQUFjLEtBQUssQ0FBQyxFQUFFO0FBQUEsRUFDekMsVUFBRTtBQUVBLE9BQUcsWUFBWTtBQUNmLHVCQUFtQixPQUFPO0FBQUEsRUFDNUI7QUFFQSxTQUFPO0FBQ1Q7QUFP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
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhdmlldy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBgRGF0YXZpZXdgIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRGF0YUFycmF5LFxuICBEYXRhdmlld0FwaSxcbiAgU01hcmtkb3duUGFnZVxufSBmcm9tICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGF0YXZpZXcnO1xuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWRhdGF2aWV3L2FwaS9pbmxpbmUtYXBpJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBlcnJvclRvU3RyaW5nIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0UGF0aFxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9yZXNvdXJjZS11cmwudHMnO1xuXG4vKipcbiAqIEV4cG9ydCBEYXRlVGltZSBhbmQgTGluayB0eXBlcyBmcm9tIHRoZSBgRGF0YXZpZXdgIEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBEYXRlVGltZSxcbiAgTGlua1xufSBmcm9tICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGF0YXZpZXcnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0FwaX0gb2JqZWN0IHJlcHJlc2VudHMgdGhlIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBgRGF0YXZpZXdgIGluIE9ic2lkaWFuLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhcnMtb24tdG9wIC0tIEl0IGlzIGEgYHZhcmAgaW4gbW9kdWxlIGRlY2xhcmF0aW9uLiBFU0xpbnQgbWlzdGFrZW5seSBjb25mdXNlcyBpdCB3aXRoIGB2YXJgIGFzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG5cbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgLyoqXG4gICAgICogVGhlIGdsb2JhbCB7QGxpbmsgRGF0YXZpZXdBcGl9IG9iamVjdCBgRGF0YXZpZXdgIGluc3RhbGxzIG9uIGV2ZXJ5IHdpbmRvdy5cbiAgICAgKi9cbiAgICBEYXRhdmlld0FQST86IERhdGF2aWV3QXBpO1xuICB9XG59XG5cbi8qKlxuICogQSBjb21iaW5lZCBwYWdlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25QYWdlLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4gPSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiAmIFNNYXJrZG93blBhZ2U7XG5cbi8qKlxuICogRXh0ZW5kZWQgaW50ZXJmYWNlIGZvciB0aGUgYERhdGF2aWV3YCBJbmxpbmUgQVBJLCBwcm92aWRpbmcgYWRkaXRpb25hbCBtZXRob2RzIGZvciBjdXN0b20gcGFnZSB0eXBlcyBhbmQgYXJyYXkgaGFuZGxpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXZpZXdJbmxpbmVBcGkgZXh0ZW5kcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIHtcbiAgLyoqXG4gICAqIFdyYXBzIGFuIGFycmF5IG9mIGl0ZW1zIGludG8gYSB7QGxpbmsgRGF0YUFycmF5fSBvYmplY3QuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuXG4gICAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSBvZiBpdGVtcyB0byB3cmFwLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IGNvbnRhaW5pbmcgdGhlIGl0ZW1zLlxuICAgKi9cbiAgYXJyYXk6IDxUPihhcnJheTogVFtdKSA9PiBEYXRhQXJyYXk8VD47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBwYWdlLCB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSBwYWdlIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWdlLlxuICAgKi9cbiAgY3VycmVudDogPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4oKSA9PiBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXI+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgcGFnZXMgYmFzZWQgb24gYW4gb3B0aW9uYWwgcXVlcnksIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEBwYXJhbSBxdWVyeSAtIEFuIG9wdGlvbmFsIHN0cmluZyBxdWVyeSB0byBmaWx0ZXIgdGhlIHBhZ2VzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IG9mIHBhZ2VzIG1hdGNoaW5nIHRoZSBxdWVyeS5cbiAgICovXG4gIHBhZ2VzOiA8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihxdWVyeT86IHN0cmluZykgPT4gRGF0YUFycmF5PENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlcj4+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGFyYWdyYXBoIEhUTUwgZWxlbWVudCB3aXRoIHRoZSBwcm92aWRlZCB0ZXh0IGFuZCBvcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRoZSBjb250ZW50IG9mIHRoZSBwYXJhZ3JhcGguXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgRE9NIGVsZW1lbnQgb3B0aW9ucywgaW5jbHVkaW5nIGFuIG9wdGlvbmFsIGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgSFRNTCBwYXJhZ3JhcGggZWxlbWVudC5cbiAgICovXG4gIHBhcmFncmFwaDogKFxuICAgIHRleHQ6IHVua25vd24sXG4gICAgb3B0aW9ucz86IERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lclxuICApID0+IEhUTUxQYXJhZ3JhcGhFbGVtZW50O1xufVxuXG4vKipcbiAqIERvbUVsZW1lbnRJbmZvIHdpdGggYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICovXG5leHBvcnQgdHlwZSBEb21FbGVtZW50SW5mb1dpdGhDb250YWluZXIgPSBDb250YWluZXJJbmZvICYgRG9tRWxlbWVudEluZm87XG5cbi8qKlxuICogQSBjb21iaW5lZCBmaWxlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25GaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZSA9IFNNYXJrZG93blBhZ2VbJ2ZpbGUnXTtcblxuLyoqXG4gKiBMaXN0IG9mIHBhZ2UgZmlsZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VGaWxlcyA9IEFycmF5T3JEYXRhQXJyYXk8UGFnZUZpbGU+O1xuXG5pbnRlcmZhY2UgQ29udGFpbmVySW5mbyB7XG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50O1xufVxuXG4vKipcbiAqIFJlbG9hZHMgdGhlIGN1cnJlbnQgZmlsZSBjYWNoZSB1c2luZyB0aGUgYERhdGF2aWV3YCBBUEkuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjYWNoZSBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZEN1cnJlbnRGaWxlQ2FjaGUoZHY6IERhdGF2aWV3SW5saW5lQXBpKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGFjdGl2ZVdpbmRvdy5EYXRhdmlld0FQST8uaW5kZXgucmVsb2FkKGdldEZpbGUoe1xuICAgIGFwcDogZHYuYXBwLFxuICAgIHBhdGhPckZpbGU6IGR2LmN1cnJlbnQoKS5maWxlLnBhdGhcbiAgfSkpO1xufVxuXG5jb25zdCBwYWdpbmF0aW9uQ3NzID0gYFxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjb2xvcjogZ3JheTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluayB7XG4gIG1hcmdpbjogMCA1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogYmx1ZTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluazpob3Zlcjpub3QoLmRpc2FibGVkKSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5jdXJyZW50IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ucGFnaW5hdGlvbiBzZWxlY3QsXG4ucGFnaW5hdGlvbiBpbnB1dCB7XG4gIG1hcmdpbjogMCA1cHg7XG59XG5gO1xuXG4vKipcbiAqIEFycmF5IG9yIERhdGFBcnJheSB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5zZXJ0Q29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDb2RlQmxvY2tQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvZGUgY29udGVudCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UgdG8gaW5zZXJ0IHRoZSBjb2RlIGJsb2NrIGludG8uXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIGZvciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlcklmcmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQSBoZWlnaHQgb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCc2MDBweCdgXG4gICAqL1xuICByZWFkb25seSBoZWlnaHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgcmVzb3VyY2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpZnJhbWUuXG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgd2lkdGggb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcxMDAlJ2BcbiAgICovXG4gIHJlYWRvbmx5IHdpZHRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJQYWdpbmF0ZWRMaXN0fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgbGlzdCBpdGVtcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRMaXN0UGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzRm9yT25lUGFnZSAtIFRoZSByb3dzIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVuZGVyZXI6IChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPikgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogUm93cyB0byBwYWdpbmF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlclBhZ2luYXRlZFRhYmxlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdGFibGUgcm93IGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkVGFibGVQYXJhbXM8VD4ge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGhlYWRlcnMgb2YgdGhlIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgWzEwLCAyMCwgNTAsIDEwMF1gXG4gICAqL1xuICByZWFkb25seSBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFJvd3Mgb2YgdGhlIHRhYmxlIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlUGFnZUxpbmt9LlxuICovXG5pbnRlcmZhY2UgQ3JlYXRlUGFnZUxpbmtQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHBhZ2UgbnVtYmVyIHRoZSBsaW5rIHBvaW50cyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRQYWdlTnVtYmVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxpbmsgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGNvbnRlbnQgdXNpbmcgdGhlIHByb3ZpZGVkIHJlbmRlcmVyIGZ1bmN0aW9uIGluIGEgdGVtcG9yYXJ5IGNvbnRhaW5lcixcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIGNvbnRhaW5lci5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcmVuZGVyZXIgLSBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnRcbiAqIHRoYXQgd2FzIHVzZWQgYXMgdGhlIHRlbXBvcmFyeSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZW5kZXJlZENvbnRhaW5lcihkdjogRGF0YXZpZXdJbmxpbmVBcGksIHJlbmRlcmVyOiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogUHJvbWlzZTxIVE1MUGFyYWdyYXBoRWxlbWVudD4ge1xuICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG4gIGNvbnN0IHRlbXBvcmFyeUNvbnRhaW5lciA9IGR2LnBhcmFncmFwaCgnJyk7XG4gIGR2LmNvbnRhaW5lciA9IHRlbXBvcmFyeUNvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGR2LnBhcmFncmFwaChg4p2MJHtlcnJvclRvU3RyaW5nKGVycm9yKX1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlcyAtLSBZZXMsIGl0IGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLCBidXQgSSBkb24ndCBhbiBlbGVnYW50IHdheSB0byBmaXggaXQuXG4gICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIHRlbXBvcmFyeUNvbnRhaW5lci5yZW1vdmUoKTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wb3JhcnlDb250YWluZXI7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIGNvZGUgYmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIGBEYXRhdmlld2AgaW5zdGFuY2UgdXNpbmcgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIGFuZCBjb2RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgaW5zZXJ0aW5nIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29kZUJsb2NrKHBhcmFtczogSW5zZXJ0Q29kZUJsb2NrUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBjb2RlLFxuICAgIGR2LFxuICAgIGxhbmd1YWdlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IE1JTl9GRU5DRV9MRU5HVEggPSAzO1xuICBjb25zdCBmZW5jZVJlZ0V4cCA9IG5ldyBSZWdFeHAoYF5cXGB7JHtTdHJpbmcoTUlOX0ZFTkNFX0xFTkdUSCl9LH1gLCAnZ20nKTtcbiAgY29uc3QgZmVuY2VNYXRjaGVzID0gY29kZS5tYXRjaEFsbChmZW5jZVJlZ0V4cCk7XG4gIGNvbnN0IGZlbmNlTGVuZ3RocyA9IFsuLi5mZW5jZU1hdGNoZXNdLm1hcCgoZmVuY2VNYXRjaCkgPT4gZmVuY2VNYXRjaFswXS5sZW5ndGgpO1xuICBjb25zdCBtYXhGZW5jZUxlbmd0aCA9IE1hdGgubWF4KDAsIC4uLmZlbmNlTGVuZ3Rocyk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlTGVuZ3RoID0gTWF0aC5tYXgoTUlOX0ZFTkNFX0xFTkdUSCwgbWF4RmVuY2VMZW5ndGggKyAxKTtcbiAgY29uc3QgcmVzdWx0RmVuY2UgPSAnYCcucmVwZWF0KHJlc3VsdEZlbmNlTGVuZ3RoKTtcblxuICBkdi5wYXJhZ3JhcGgoYCR7cmVzdWx0RmVuY2V9JHtsYW5ndWFnZX1cbiR7Y29kZX1cbiR7cmVzdWx0RmVuY2V9YCk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhbiBpZnJhbWUgaW4gdGhlIGBEYXRhdmlld2AgY29udGFpbmVyIHdpdGggdGhlIHNwZWNpZmllZCByZWxhdGl2ZSBwYXRoLCB3aWR0aCwgYW5kIGhlaWdodC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgaWZyYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVySWZyYW1lKHBhcmFtczogUmVuZGVySWZyYW1lUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBoZWlnaHQgPSAnNjAwcHgnLFxuICAgIHJlbGF0aXZlUGF0aE9yRmlsZSxcbiAgICB3aWR0aCA9ICcxMDAlJ1xuICB9ID0gcGFyYW1zO1xuICBkdi5lbCgnaWZyYW1lJywgJycsIHtcbiAgICBhdHRyOiB7XG4gICAgICBoZWlnaHQsXG4gICAgICBzcmM6IHJlbGF0aXZlUGF0aFRvUmVzb3VyY2VVcmwoe1xuICAgICAgICBhcHA6IGR2LmFwcCxcbiAgICAgICAgbm90ZVBhdGg6IGR2LmN1cnJlbnQoKS5maWxlLnBhdGgsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogZ2V0UGF0aChkdi5hcHAsIHJlbGF0aXZlUGF0aE9yRmlsZSlcbiAgICAgIH0pLFxuICAgICAgd2lkdGhcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgbGlzdCB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIGxpc3QuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCBsaXN0LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGlzdCBpcyByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZExpc3Q8VD4ocGFyYW1zOiBSZW5kZXJQYWdpbmF0ZWRMaXN0UGFyYW1zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBkdi5saXN0KHJvd3NGb3JPbmVQYWdlKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCB0YWJsZSB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIHRhYmxlIHJvd3MuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCB0YWJsZS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhYmxlIGlzIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkVGFibGU8VCBleHRlbmRzIHVua25vd25bXT4ocGFyYW1zOiBSZW5kZXJQYWdpbmF0ZWRUYWJsZVBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgaGVhZGVycyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBkdi50YWJsZShoZWFkZXJzLCByb3dzRm9yT25lUGFnZSk7XG4gICAgfSxcbiAgICByb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byByZW5kZXIgcGFnaW5hdGVkIGNvbnRlbnQgdXNpbmcgdGhlIHNwZWNpZmllZCByZW5kZXJlci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyB0byBwYWdpbmF0ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWQ8VD4ocGFyYW1zOiBSZW5kZXJQYWdpbmF0ZWRQYXJhbXM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgU0VDT05EX1BBR0VfTlVNQkVSID0gMjtcbiAgY29uc3QgTU9SRV9QQUdFX05VTUJFUiA9IDM7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBwYXJhbXM7XG4gIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgIGR2LnBhcmFncmFwaCgnTm8gaXRlbXMgZm91bmQnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBsZXQgaXRlbXNQZXJQYWdlID0gZW5zdXJlTm9uTnVsbGFibGUoaXRlbXNQZXJQYWdlT3B0aW9uc1swXSwgJ0l0ZW1zIHBlciBwYWdlIG9wdGlvbnMgYXJlIGVtcHR5Jyk7XG4gIGxldCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcblxuICBmdW5jdGlvbiBjcmVhdGVQYWdpbmF0aW9uQ29udHJvbHMocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkRpdiA9IGNvbnRhaW5lci5jcmVhdGVEaXYoeyBjbHM6ICdwYWdpbmF0aW9uJyB9KTtcbiAgICBjb25zdCBwYWdpbmF0aW9uUm93MURpdiA9IHBhZ2luYXRpb25EaXYuY3JlYXRlRGl2KCk7XG5cbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiAxLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gMSwgdGV4dDogJ0ZpcnN0JyB9KTtcbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiBwYWdlTnVtYmVyIC0gMSwgZGlzYWJsZWQ6IHBhZ2VOdW1iZXIgPT09IDEsIHRleHQ6ICdQcmV2JyB9KTtcblxuICAgIGlmIChwYWdlTnVtYmVyID4gTU9SRV9QQUdFX05VTUJFUikge1xuICAgICAgcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlU3Bhbih7IHRleHQ6ICcuLi4nIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGluZGV4ID0gTWF0aC5tYXgoMSwgcGFnZU51bWJlciAtIFNFQ09ORF9QQUdFX05VTUJFUik7IGluZGV4IDw9IE1hdGgubWluKHRvdGFsUGFnZXMsIHBhZ2VOdW1iZXIgKyBTRUNPTkRfUEFHRV9OVU1CRVIpOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBwYWdlTGluayA9IGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IGluZGV4LCBkaXNhYmxlZDogaW5kZXggPT09IHBhZ2VOdW1iZXIsIHRleHQ6IFN0cmluZyhpbmRleCkgfSk7XG4gICAgICBpZiAoaW5kZXggPT09IHBhZ2VOdW1iZXIpIHtcbiAgICAgICAgcGFnZUxpbmsuYWRkQ2xhc3MoJ2N1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFnZU51bWJlciA8IHRvdGFsUGFnZXMgLSBTRUNPTkRfUEFHRV9OVU1CRVIpIHtcbiAgICAgIHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiAnLi4uJyB9KTtcbiAgICB9XG5cbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiBwYWdlTnVtYmVyICsgMSwgZGlzYWJsZWQ6IHBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXMsIHRleHQ6ICdOZXh0JyB9KTtcbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiB0b3RhbFBhZ2VzLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcywgdGV4dDogJ0xhc3QnIH0pO1xuXG4gICAgY29uc3QgcGFnaW5hdGlvblJvdzJEaXYgPSBwYWdpbmF0aW9uRGl2LmNyZWF0ZURpdigpO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IGAgJHt0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcuaXRlbXNQZXJQYWdlKX0gYCB9KTtcblxuICAgIGNvbnN0IGl0ZW1zUGVyUGFnZVNlbGVjdCA9IHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdzZWxlY3QnKTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBpdGVtc1BlclBhZ2VPcHRpb25zKSB7XG4gICAgICBpdGVtc1BlclBhZ2VTZWxlY3QuY3JlYXRlRWwoJ29wdGlvbicsIHsgdGV4dDogU3RyaW5nKG9wdGlvbiksIHZhbHVlOiBTdHJpbmcob3B0aW9uKSB9KTtcbiAgICB9XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlID0gU3RyaW5nKGl0ZW1zUGVyUGFnZSk7XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGl0ZW1zUGVyUGFnZSA9IHBhcnNlSW50KGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSwgMTApO1xuICAgICAgICB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgICAgICAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiBgICR7dCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3Lmp1bXBUb1BhZ2UpfSBgIH0pO1xuXG4gICAgY29uc3QganVtcFRvUGFnZUlucHV0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ2lucHV0JywgeyBhdHRyOiB7IG1heDogdG90YWxQYWdlcywgbWluOiAxIH0sIHR5cGU6ICdudW1iZXInIH0pO1xuICAgIGp1bXBUb1BhZ2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFnZSA9IHBhcnNlSW50KGp1bXBUb1BhZ2VJbnB1dC52YWx1ZSwgMTApO1xuICAgICAgICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdG90YWxQYWdlcykge1xuICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UocGFnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcucGFnZUhlYWRlciwgeyBwYWdlTnVtYmVyLCB0b3RhbEl0ZW1zOiByb3dzLmxlbmd0aCwgdG90YWxQYWdlcyB9KSB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZ2VMaW5rKHBhcmFtczI6IENyZWF0ZVBhZ2VMaW5rUGFyYW1zKTogSFRNTEFuY2hvckVsZW1lbnQge1xuICAgICAgY29uc3Qge1xuICAgICAgICBjdXJyZW50UGFnZU51bWJlcixcbiAgICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgICAgdGV4dFxuICAgICAgfSA9IHBhcmFtczI7XG4gICAgICBjb25zdCBsaW5rID0gcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlRWwoJ2EnLCB7IGNsczogJ3BhZ2UtbGluaycsIGhyZWY6IGAjJHtTdHJpbmcoY3VycmVudFBhZ2VOdW1iZXIpfWAsIHRleHQgfSk7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgbGluay5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLWFkZC1ldmVudC1saXN0ZW5lciAtLSBUaGUgaGFuZGxlciBpcyBhc3NpZ25lZCB0byBgb25jbGlja2Agc28gaXQgc3RheXMgcmVhZGFibGUgYmFjayBvZmYgdGhlIGVsZW1lbnQsIHdoaWNoIGlzIGhvdyBpdCBpcyBpbnZva2VkIGluIHRlc3RzIGFuZCBob3cgYSBsYXRlciBhc3NpZ25tZW50IGNhbiByZXBsYWNlIGl0LlxuICAgICAgICBsaW5rLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLWFkZC1ldmVudC1saXN0ZW5lciAtLSBUaGUgaGFuZGxlciBpcyBhc3NpZ25lZCB0byBgb25jbGlja2Agc28gaXQgc3RheXMgcmVhZGFibGUgYmFjayBvZmYgdGhlIGVsZW1lbnQsIHdoaWNoIGlzIGhvdyBpdCBpcyBpbnZva2VkIGluIHRlc3RzIGFuZCBob3cgYSBsYXRlciBhc3NpZ25tZW50IGNhbiByZXBsYWNlIGl0LlxuICAgICAgICBsaW5rLm9uY2xpY2sgPSBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKGV2ZW50OiBNb3VzZUV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKGN1cnJlbnRQYWdlTnVtYmVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluaztcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnRhaW5lci5lbXB0eSgpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWZvcmJpZGRlbi1lbGVtZW50cyAtLSBXZSBuZWVkIHRvIGNyZWF0ZSBhIHN0eWxlIGVsZW1lbnQgdG8gYXBwbHkgdGhlIHBhZ2luYXRpb24gQ1NTLlxuICAgIGNvbnRhaW5lci5jcmVhdGVFbCgnc3R5bGUnLCB7IHRleHQ6IHBhZ2luYXRpb25Dc3MgfSk7XG5cbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHBhZ2VOdW1iZXIgLSAxKSAqIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3Qgcm93c0ZvckN1cnJlbnRQYWdlID0gcm93cy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XG5cbiAgICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG5cbiAgICBkdi5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHBhcmFtcy5yZW5kZXJlcihyb3dzRm9yQ3VycmVudFBhZ2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkdi5wYXJhZ3JhcGgoYOKdjCR7ZXJyb3JUb1N0cmluZyhlcnJvcil9YCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzIC0tIFllcywgaXQgaXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24sIGJ1dCBJIGRvbid0IGFuIGVsZWdhbnQgd2F5IHRvIGZpeCBpdC5cbiAgICAgIGR2LmNvbnRhaW5lciA9IG9sZENvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBjcmVhdGVQYWdpbmF0aW9uQ29udHJvbHMocGFnZU51bWJlcik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQSxtQkFBbUM7QUFDbkMsbUJBQThCO0FBQzlCLHlCQUFrQztBQUtsQyx5QkFHTztBQUNQLGtCQUFrQjtBQUNsQiwwQkFBMEM7QUFvRzFDLGVBQXNCLHVCQUF1QixJQUFzQztBQUNqRixRQUFNLGFBQWEsYUFBYSxNQUFNLFdBQU8sNEJBQVE7QUFBQSxJQUNuRCxLQUFLLEdBQUc7QUFBQSxJQUNSLFlBQVksR0FBRyxRQUFRLEVBQUUsS0FBSztBQUFBLEVBQ2hDLENBQUMsQ0FBQztBQUNKO0FBRUEsTUFBTSxnQkFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFNdEIsZUFBc0IscUJBQXFCLElBQXVCLFVBQWlFO0FBQ2pJLFFBQU0sZUFBZSxHQUFHO0FBQ3hCLFFBQU0scUJBQXFCLEdBQUcsVUFBVSxFQUFFO0FBQzFDLEtBQUcsWUFBWTtBQUNmLEtBQUcsVUFBVSxNQUFNO0FBRW5CLE1BQUk7QUFDRixVQUFNLFNBQVM7QUFBQSxFQUNqQixTQUFTLE9BQU87QUFDZCxPQUFHLFVBQVUsYUFBSSw0QkFBYyxLQUFLLENBQUMsRUFBRTtBQUFBLEVBQ3pDLFVBQUU7QUFFQSxPQUFHLFlBQVk7QUFDZix1QkFBbUIsT0FBTztBQUFBLEVBQzVCO0FBRUEsU0FBTztBQUNUO0FB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
|
package/dist/lib/cjs/debug.cjs
CHANGED
|
@@ -77,7 +77,8 @@ ensureBrowserProcess();
|
|
|
77
77
|
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
78
78
|
return originalRequire?.(id);
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
const app = globalThis.app;
|
|
81
|
+
if (app?.isMobile) {
|
|
81
82
|
if (id === "process" || id === "node:process") {
|
|
82
83
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
83
84
|
return process;
|
|
@@ -126,4 +127,4 @@ function getObsidianLibDebugger(namespace) {
|
|
|
126
127
|
0 && (module.exports = {
|
|
127
128
|
getObsidianLibDebugger
|
|
128
129
|
});
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGRlYnVnZ2VycyBvZiBgQG1uYW91bW92L29ic2lkaWFuLWxpYmAncyBvd24gbW9kdWxlcy5cbiAqL1xuXG5pbXBvcnQgeyBnZXREZWJ1Z2dlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kZWJ1Zyc7XG5pbXBvcnQgeyBMaWJyYXJ5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2xpYnJhcnknO1xuXG5pbXBvcnQgeyBPQlNJRElBTl9MSUJSQVJZX05BTUUgfSBmcm9tICcuL2xpYnJhcnkudHMnO1xuXG4vKipcbiAqIFJldHVybnMgYSBkZWJ1Z2dlciBmb3Igb25lIG9mIHRoaXMgbGlicmFyeSdzIG93biBtb2R1bGVzLlxuICpcbiAqIFRoZSBuYW1lc3BhY2UgaXMgYWx3YXlzIHVuZGVyIHtAbGluayBPQlNJRElBTl9MSUJSQVJZX05BTUV9LCB3aGV0aGVyIG9yIG5vdCBgaW5pdFBsdWdpbkNvbnRleHRgIGhhcyBydW4geWV0LCBzb1xuICogYSBuYW1lc3BhY2UgYSBndWlkZSB0ZWxscyB1c2VycyB0byBlbmFibGUgKGBvYnNpZGlhbi1kZXYtdXRpbHM6UGx1Z2luQXBpYCkgbWVhbnMgdGhlIHNhbWUgdGhpbmcgaW4gYSB0ZXN0LCBpbiBhXG4gKiBzY3JpcHQgYW5kIGluIGEgcGx1Z2luLiBUaGUgZ2VuZXJpYyBtb2R1bGVzIG9mIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxvZyB1bmRlciB0aGUgbmFtZXNwYWNlXG4gKiBgaW5pdFBsdWdpbkNvbnRleHRgIGluamVjdHMgaW50byB0aGUgZ2VuZXJpYyBgTGlicmFyeWAsIHdoaWNoIGlzIHRoZSBzYW1lIG9uZSBvbmNlIGEgcGx1Z2luIGlzIHVwLlxuICpcbiAqIEBwYXJhbSBuYW1lc3BhY2UgLSBUaGUgbmFtZXNwYWNlIHdpdGhpbiB0aGUgbGlicmFyeSdzLlxuICogQHJldHVybnMgVGhlIGRlYnVnZ2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlcihuYW1lc3BhY2U6IHN0cmluZyk6IFJldHVyblR5cGU8dHlwZW9mIGdldERlYnVnZ2VyPiB7XG4gIHJldHVybiBnZXREZWJ1Z2dlcihgJHtMaWJyYXJ5LmRlYnVnUHJlZml4TmFtZXNwYWNlfSR7T0JTSURJQU5fTElCUkFSWV9OQU1FfToke25hbWVzcGFjZX1gKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLG1CQUE0QjtBQUM1QixxQkFBd0I7QUFFeEIsSUFBQUEsa0JBQXNDO0FBYS9CLFNBQVMsdUJBQXVCLFdBQW1EO0FBQ3hGLGFBQU8sMEJBQVksR0FBRyx1QkFBUSxvQkFBb0IsR0FBRyxxQ0FBcUIsSUFBSSxTQUFTLEVBQUU7QUFDM0Y7IiwibmFtZXMiOlsiaW1wb3J0X2xpYnJhcnkiXX0=
|
|
@@ -50,7 +50,8 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
50
50
|
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
51
51
|
return originalRequire?.(id);
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
const app = globalThis.app;
|
|
54
|
+
if (app?.isMobile) {
|
|
54
55
|
if (id === "process" || id === "node:process") {
|
|
55
56
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
56
57
|
return process;
|
|
@@ -82,4 +83,4 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
82
83
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
83
84
|
var demo_vault_helper_settings_exports = {};
|
|
84
85
|
module.exports = __toCommonJS(demo_vault_helper_settings_exports);
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGBkZW1vLXZhdWx0LWhlbHBlcmAgcGx1Z2luJ3Mgb3duIHNldHRpbmdzIOKAlCB0aGUgY29udHJhY3QgYmV0d2VlbiB0aGUgZGVtby12YXVsdCBwYWNrYWdpbmcgc3RlcFxuICogYW5kIHRoZSBib290c3RyYXAgdGhhdCBydW5zIGluc2lkZSB0aGUgb3BlbmVkIHZhdWx0LlxuICpcbiAqIFRoZSBoZWxwZXIgaGFzIHRvIG5hbWUgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzLCBhbmQgbm90aGluZyBpbnNpZGUgdGhlIHZhdWx0IHJlbGlhYmx5IHNheXNcbiAqIHdoaWNoIG9uZSB0aGF0IGlzOiB0aGUgcGx1Z2luIGZvbGRlcnMgYWxzbyBob2xkIHRoZSBoZWxwZXIgaXRzZWxmLCBgQ29kZVNjcmlwdCBUb29sa2l0YCBvbmNlIHRoZVxuICogYm9vdHN0cmFwIGhhcyBpbnN0YWxsZWQgaXQsIGFuZCBhbnl0aGluZyBhIGRlbW8gbm90ZSdzIHByZXJlcXVpc2l0ZXMgaW5zdGFsbGVkLCBzbyBjb3VudGluZyB0aGVtXG4gKiBndWVzc2VzIChhbmQgZ3Vlc3NlcyBkaWZmZXJlbnRseSBvbiBhIHJlLW9wZW4pLiBUaGUgcGFja2FnaW5nIHN0ZXAsIG9uIHRoZSBvdGhlciBoYW5kLCBLTk9XUyDigJQgaXRcbiAqIHJlYWRzIHRoZSBwbHVnaW4ncyBgbWFuaWZlc3QuanNvbmAgdG8gbmFtZSB0aGUgYXJjaGl2ZSDigJQgc28gaXQgd3JpdGVzIHRoZSBpZCBkb3duIGhlcmUgYW5kIHRoZVxuICogYm9vdHN0cmFwIHNpbXBseSByZWFkcyBpdC5cbiAqXG4gKiBUaGUgbWFya2VyIGFuZCB0aGUgaGVscGVyIGJpbmFyeSBhcmUgd3JpdHRlbiB0b2dldGhlciwgYnkgdGhlIHNhbWUgYG9ic2lkaWFuLWRldi11dGlsc2AgdmVyc2lvbiwgaW50b1xuICogdGhlIHNhbWUgYXJjaGl2ZSwgc28gdGhlIHR3byBjYW4gbmV2ZXIgZGlzYWdyZWUuXG4gKlxuICogS2VwdCBmcmVlIG9mIGBvYnNpZGlhbmAgaW1wb3J0cyBvbiBwdXJwb3NlOiB0aGUgcGFja2FnaW5nIHN0ZXAgKHtAbGluayBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0fSkgcnVuc1xuICogdW5kZXIgTm9kZSwgd2hlcmUgdGhlIGBvYnNpZGlhbmAgbW9kdWxlIGRvZXMgbm90IGV4aXN0LlxuICovXG5cbi8qKlxuICogVGhlIGBkZW1vLXZhdWx0LWhlbHBlcmAgcGx1Z2luJ3MgYGRhdGEuanNvbmAsIHdyaXR0ZW4gaW50byB0aGUgZGVtbyB2YXVsdCBhdCBwYWNrYWdpbmcgdGltZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzLCB0YWtlbiBmcm9tIHRoYXQgcGx1Z2luJ3MgYG1hbmlmZXN0Lmpzb25gLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVtb2VkUGx1Z2luSWQ6IHN0cmluZztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBOyIsIm5hbWVzIjpbXX0=
|
|
@@ -77,7 +77,8 @@ ensureBrowserProcess();
|
|
|
77
77
|
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
78
78
|
return originalRequire?.(id);
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
const app = globalThis.app;
|
|
81
|
+
if (app?.isMobile) {
|
|
81
82
|
if (id === "process" || id === "node:process") {
|
|
82
83
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
83
84
|
return process;
|
|
@@ -211,4 +212,4 @@ function showSandboxNotice(app, demoedPluginId) {
|
|
|
211
212
|
0 && (module.exports = {
|
|
212
213
|
bootstrapDemoVault
|
|
213
214
|
});
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LWhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgYnkgaW5zdGFsbGluZywgY29uZmlndXJpbmcsIGFuZCBlbmFibGluZyBgQ29kZVNjcmlwdCBUb29sa2l0YC5cbiAqXG4gKiBBIHBsdWdpbidzIGRlbW8gdmF1bHQgc2hvd2Nhc2VzIHRoZSBwbHVnaW4gdGhyb3VnaCBub3RlcyB3aG9zZSBgY29kZS1idXR0b25gcyBydW4gVHlwZVNjcmlwdCB2aWFcbiAqIGBDb2RlU2NyaXB0IFRvb2xraXRgLiBBIGRlbW8gdmF1bHQgdGhhdCBkb2VzIG5vdCBpdHNlbGYgc2hpcCBgQ29kZVNjcmlwdCBUb29sa2l0YCB0aGVyZWZvcmUgbmVlZHMgaXRcbiAqIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWQgYmVmb3JlIHRob3NlIGJ1dHRvbnMgd29yay4ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0gZG9lcyBleGFjdGx5XG4gKiB0aGF0IHdpdGggbm8gY29tbWl0dGVkIGBDb2RlU2NyaXB0IFRvb2xraXRgIGNvbmZpZyBhbmQgbm8gbWFudWFsIHNldHVwLCBzbyBpdCBjYW4gYmUgZHJpdmVuIGZyb20gYSB0aW55XG4gKiBjb21taXR0ZWQgYm9vdHN0cmFwIHBsdWdpbiAoYGRlbW8tdmF1bHQtaGVscGVyYCkgdGhhdCBpcyBpbmplY3RlZCBpbnRvIGV2ZXJ5IGRlbW8gdmF1bHQgYXQgcmVsZWFzZVxuICogdGltZS5cbiAqXG4gKiBUaGUgcGx1Z2luIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMgaXMgcmVhZCBmcm9tIHRoZSBoZWxwZXIncyBvd24gYGRhdGEuanNvbmAsIHdyaXR0ZW4gYnkgdGhlIHBhY2thZ2luZ1xuICogc3RlcCAoe0BsaW5rIERlbW9WYXVsdEhlbHBlclNldHRpbmdzfSk7IGEgdmF1bHQgd2l0aG91dCB0aGF0IG1hcmtlciBpcyByZWZ1c2VkIGFzIG5vdCBhIGRlbW8gdmF1bHQuXG4gKlxuICogSXQgd3JpdGVzIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3Mgc2V0dGluZ3MgQkVGT1JFIGVuYWJsaW5nIGl0LCBzbyB0aGUgcGx1Z2luIGxvYWRzIGFscmVhZHkgY29uZmlndXJlZCDigJRcbiAqIG5vIHJlbG9hZC4gYENvZGVTY3JpcHQgVG9vbGtpdGAgdGhlbiBydW5zIHRoZSB2YXVsdCdzIGBzdGFydHVwLnRzYCAodmlhIGl0cyBgc3RhcnR1cFNjcmlwdFBhdGhgXG4gKiBzZXR0aW5nKSwgd2hpY2ggaXMgd2hlcmUgZWFjaCB2YXVsdCBvcGVucyBpdHMgc3RhcnQgbm90ZSBhbmQgZG9lcyBhbnkgcGx1Z2luLXNwZWNpZmljIHNldHVwLlxuICpcbiAqIEl0IGFsc28gY3JlYXRlcyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIGludm9jYWJsZS1zY3JpcHRzIGZvbGRlciBpZiBpdCBpcyBtaXNzaW5nLCBzbyBldmVyeSBkZW1vIHZhdWx0XG4gKiBoYXMgdGhlIHNhbWUgbGF5b3V0IGV2ZW4gd2hlbiB0aGUgdmF1bHQgc2hpcHMgbm8gaW52b2NhYmxlIHNjcmlwdHMg4oCUIHRoZSB2YXVsdHMgdGhlbXNlbHZlcyBjb21taXQgbm9cbiAqIGVtcHR5IGZvbGRlciBmb3IgaXQuXG4gKlxuICogSXQgdGhlbiBpbnN0YWxscyB0aGUgYEZvbGRlciBOb3Rlc2AgcGx1Z2luLCBjb25maWd1cmVkIHRvIHRyZWF0IGBSRUFETUUubWRgIGFzIGEgZm9sZGVyJ3Mgb3duIG5vdGUuIEFcbiAqIGRlbW8gdmF1bHQgdGhhdCBoYXMgb3V0Z3Jvd24gYSBmbGF0IG5vdGUgbGlzdCBncm91cHMgaXRzIG5vdGVzIGludG8gZm9sZGVycywgYW5kIGEgZ3JvdXAgZm9sZGVyIG9ubHlcbiAqIHNheXMgd2hhdCBpdCBpcyBmb3IgaWYgaXQgaGFzIGEgbm90ZSBvZiBpdHMgb3duIOKAlCBgUkVBRE1FLm1kYCwgYmVjYXVzZSB0aGF0IGlzIGFsc28gdGhlIGZpbGUgR2l0SHViXG4gKiByZW5kZXJzIHVuZGVyIHRoZSBmaWxlIGxpc3Qgd2hlbiB0aGUgc2FtZSB2YXVsdCBpcyBicm93c2VkIGFzIGEgcmVwb3NpdG9yeSwgc28gb25lIGZpbGUgc2VydmVzIGJvdGhcbiAqIHJlYWRlcnMuXG4gKlxuICogRmluYWxseSBpdCByYWlzZXMgdGhlIHNhbmRib3ggbm90aWNlIGV4cGxhaW5pbmcgdGhhdCB0aGUgb3BlbmVkIHZhdWx0IGlzIGEgdGhyb3dhd2F5IGNvcHksIHNvIGEgdXNlclxuICogd2hvIHdyaXRlcyB0aGVpciBvd24gbm90ZXMgaW4gaXQgaXMgbmV2ZXIgc3VycHJpc2VkIGJ5IHRoZW0gYmVpbmcgYWJzZW50IGZyb20gdGhlIG5leHQgY29weS4gU2V0dGluZ3NcbiAqIGlzIGNsb3NlZCBmaXJzdCwgc28gdGhlIG5vdGljZSBsYW5kcyBpbiB0aGUgdmF1bHQncyBtYWluIHdpbmRvdyByYXRoZXIgdGhhbiBpbiB0aGUgc2V0dGluZ3MgcG9wb3V0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgRU1QVFkgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmltcG9ydCB7IE5vdGljZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyB9IGZyb20gJy4vZGVtby12YXVsdC1oZWxwZXItc2V0dGluZ3MudHMnO1xuXG5pbXBvcnQge1xuICBjb25maWd1cmVDb21tdW5pdHlQbHVnaW4sXG4gIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdCxcbiAgZGlzYWJsZUNvbW11bml0eVBsdWdpbixcbiAgZW5hYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luLFxuICBpbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuaW1wb3J0IHsgYXBwZW5kQ29kZUJsb2NrIH0gZnJvbSAnLi9odG1sLWVsZW1lbnQudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBib290c3RyYXBEZW1vVmF1bHR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcERlbW9WYXVsdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG59XG5cbi8qKlxuICogYENvZGVTY3JpcHQgVG9vbGtpdGAncyBzZXR0aW5ncywgd3JpdHRlbiBpbnRvIGl0cyBgZGF0YS5qc29uYCBiZWZvcmUgaXQgaXMgZW5hYmxlZC5cbiAqL1xuaW50ZXJmYWNlIENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3Mge1xuICAvKipcbiAgICogVGhlIFlBTUwgZnJvbnRtYXR0ZXIgbWVyZ2VkIGludG8gZXZlcnkgYGNvZGUtYnV0dG9uYCBibG9jaydzIG93biBjb25maWcsIHVzZWQgaGVyZSB0byB0dXJuIHRoZVxuICAgKiBzb3VyY2Ugdmlld2VyIG9uIGZvciBldmVyeSBidXR0b24gaW4gZXZlcnkgZGVtbyB2YXVsdCB3aXRob3V0IGVkaXRpbmcgYSBzaW5nbGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgKHVuZGVyIHtAbGluayBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzLm1vZHVsZXNSb290fSkgaG9sZGluZyBpbnZvY2FibGUgc2NyaXB0cy5cbiAgICovXG4gIHJlYWRvbmx5IGludm9jYWJsZVNjcmlwdHNGb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIGZvbGRlciB0aGF0IGByZXF1aXJlKCcv4oCmJylgIHJlc29sdmVzIG1vZHVsZSBwYXRocyBhZ2FpbnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc1Jvb3Q6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBgQ29kZVNjcmlwdCBUb29sa2l0YCBoYW5kbGVzIGBvYnNpZGlhbjovL2AgcHJvdG9jb2wgVVJMcy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEhhbmRsZVByb3RvY29sVXJsczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggKHVuZGVyIHtAbGluayBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzLm1vZHVsZXNSb290fSkgb2YgdGhlIHNjcmlwdCBydW4gb24gbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0dXBTY3JpcHRQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogYEZvbGRlciBOb3Rlc2AnIHNldHRpbmdzLCB3cml0dGVuIGludG8gaXRzIGBkYXRhLmpzb25gIGJlZm9yZSBpdCBpcyBlbmFibGVkLlxuICovXG5pbnRlcmZhY2UgRm9sZGVyTm90ZXNTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBhIGZvbGRlcidzIG93biBub3RlIGlzIGxvb2tlZCBmb3IgdW5kZXIsIHdpdGhvdXQgdGhlIGV4dGVuc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlck5vdGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBmb2xkZXIncyBvd24gbm90ZSBpcyBoaWRkZW4gZnJvbSB0aGUgZmlsZSBleHBsb3Jlciwgc28gdGhlIGZvbGRlciBpdHNlbGYgc3RhbmRzIGZvciBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGhpZGVGb2xkZXJOb3RlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVyZSBhIGZvbGRlcidzIG93biBub3RlIGlzIGtlcHQsIHJlbGF0aXZlIHRvIHRoZSBmb2xkZXIgaXQgZGVzY3JpYmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUxvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmNvbnN0IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEID0gJ2ZpeC1yZXF1aXJlLW1vZHVsZXMnO1xuY29uc3QgQ09ERV9TQ1JJUFRfVE9PTEtJVF9NT0RVTEVTX1JPT1QgPSAnX2Fzc2V0cy9Db2RlU2NyaXB0VG9vbGtpdCc7XG5jb25zdCBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTOiBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzID0ge1xuICBkZWZhdWx0Q29kZUJ1dHRvbkNvbmZpZzogJy0tLVxcbnNvdXJjZVZpc2liaWxpdHk6IGNvbGxhcHNlZFxcbi0tLScsXG4gIGludm9jYWJsZVNjcmlwdHNGb2xkZXI6ICdJbnZvY2FibGVzJyxcbiAgbW9kdWxlc1Jvb3Q6IENPREVfU0NSSVBUX1RPT0xLSVRfTU9EVUxFU19ST09ULFxuICBzaG91bGRIYW5kbGVQcm90b2NvbFVybHM6IHRydWUsXG4gIHN0YXJ0dXBTY3JpcHRQYXRoOiAnc3RhcnR1cC50cydcbn07XG5cbmNvbnN0IEZPTERFUl9OT1RFU19QTFVHSU5fSUQgPSAnZm9sZGVyLW5vdGVzJztcbi8vIGBSRUFETUVgIHJhdGhlciB0aGFuIGBGb2xkZXIgTm90ZXNgJyBvd24gYHt7Zm9sZGVyX25hbWV9fWAgZGVmYXVsdDogdGhlIHNhbWUgZmlsZSBoYXMgdG8gYmUgdGhlIGZvbGRlcidzXG4vLyBub3RlIGluIE9ic2lkaWFuIEFORCB0aGUgcGFnZSBHaXRIdWIgcmVuZGVycyB3aGVuIHRoZSB2YXVsdCBpcyBicm93c2VkIGFzIGEgcmVwb3NpdG9yeSwgYW5kIEdpdEh1YlxuLy8gb25seSBkb2VzIHRoYXQgZm9yIGBSRUFETUUubWRgLiBgaW5zaWRlRm9sZGVyYCBrZWVwcyBpdCB3aXRoIHRoZSBub3RlcyBpdCBkZXNjcmliZXMgcmF0aGVyIHRoYW4gYmVzaWRlXG4vLyB0aGUgZm9sZGVyLCBhbmQgaGlkaW5nIGl0IGxldHMgdGhlIGZvbGRlciBpdHNlbGYgc3RhbmQgZm9yIHRoZSBub3RlIGluc3RlYWQgb2YgbGlzdGluZyBib3RoLlxuY29uc3QgRk9MREVSX05PVEVTX1NFVFRJTkdTOiBGb2xkZXJOb3Rlc1NldHRpbmdzID0ge1xuICBmb2xkZXJOb3RlTmFtZTogJ1JFQURNRScsXG4gIGhpZGVGb2xkZXJOb3RlOiB0cnVlLFxuICBzdG9yYWdlTG9jYXRpb246ICdpbnNpZGVGb2xkZXInXG59O1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgUExVR0lOU19GT0xERVJfTkFNRSA9ICdwbHVnaW5zJztcbmNvbnN0IERBVEFfSlNPTl9GSUxFX05BTUUgPSAnZGF0YS5qc29uJztcbmNvbnN0IElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFID0gJ0ludmFsaWQgZGVtbyB2YXVsdCc7XG5jb25zdCBPUEVOX0RFTU9fVkFVTFRfQ09NTUFORF9OQU1FID0gJ09wZW4gZGVtbyB2YXVsdCc7XG4vLyBgMGAgYXNrcyBPYnNpZGlhbiB0byBrZWVwIHRoZSBub3RpY2UgdXAgdW50aWwgdGhlIHVzZXIgY2xpY2tzIGl0IOKAlCB0aGUgc2FtZSB0cmVhdG1lbnQgT2JzaWRpYW4gZ2l2ZXNcbi8vIGl0cyBvd24gc2FuZGJveC12YXVsdCBub3RpY2UsIGFuZCB3aGF0IHRoZSBkZW1vLXZhdWx0IG5vdGljZSBpcyBtb2RlbGxlZCBvbi5cbmNvbnN0IFNBTkRCT1hfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyA9IDA7XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgc28gaXRzIG5vdGVzJyBgY29kZS1idXR0b25gcyB3b3JrIHdpdGggbm8gbWFudWFsIHNldHVwOiBpbnN0YWxscyBDb2RlU2NyaXB0XG4gKiBUb29sa2l0IGZyb20gdGhlIGNvbW11bml0eSBzdG9yZSAoaWYgaXQgaXMgbm90IGFscmVhZHkgaW5zdGFsbGVkKSwgd3JpdGVzIGl0cyBzZXR0aW5ncywgdGhlbiBlbmFibGVzXG4gKiBpdCDigJQgd3JpdGluZyB0aGUgc2V0dGluZ3MgQkVGT1JFIGVuYWJsaW5nIHNvIGEgZnJlc2ggZW5hYmxlIGxvYWRzIGl0IGFscmVhZHkgY29uZmlndXJlZCwgd2l0aCBub1xuICogcmVsb2FkLiBJZiBgQ29kZVNjcmlwdCBUb29sa2l0YCBpcyBhbHJlYWR5IGVuYWJsZWQgYnV0IHRoZSBzZXR0aW5ncyBqdXN0IGNoYW5nZWQsIGl0IGlzIHJlbG9hZGVkXG4gKiAoZGlzYWJsZWQgdGhlbiBlbmFibGVkKSBzbyBpdCByZS1yZWFkcyBgZGF0YS5qc29uYDsgd2hlbiB0aGUgc2V0dGluZ3Mgd2VyZSBhbHJlYWR5IGluIHBsYWNlLCBub3RoaW5nIGlzXG4gKiByZWxvYWRlZCAoc28gYSByb3V0aW5lIHZhdWx0IHJlLW9wZW4gZG9lcyBub3QgcmUtcnVuIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3Mgc3RhcnR1cCkuIGBDb2RlU2NyaXB0IFRvb2xraXRgXG4gKiB0aGVuIHJ1bnMgdGhlIHZhdWx0J3MgYHN0YXJ0dXAudHNgLiBgRm9sZGVyIE5vdGVzYCBpcyBpbnN0YWxsZWQgbmV4dCwgY29uZmlndXJlZCB0byB0cmVhdCBgUkVBRE1FLm1kYCBhc1xuICogYSBmb2xkZXIncyBvd24gbm90ZSwgc28gYSB2YXVsdCB3aG9zZSBub3RlcyBhcmUgZ3JvdXBlZCBpbnRvIGZvbGRlcnMgZGVzY3JpYmVzIGVhY2ggZ3JvdXAgaW4gdGhlIGZpbGVcbiAqIGV4cGxvcmVyLiBGaW5hbGx5IGl0IGNsb3NlcyBTZXR0aW5ncyAoc28gdGhlIG5vdGljZSBjYW5ub3QgYmUgcmFpc2VkIGluc2lkZSB0aGUgc2V0dGluZ3MgcG9wb3V0KSBhbmRcbiAqIHJhaXNlcyB0aGUgc2FuZGJveCBub3RpY2UgZGVzY3JpYmluZyB0aGUgb3BlbmVkIHZhdWx0IGFzIGEgdGhyb3dhd2F5IGNvcHkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSBgQ29kZVNjcmlwdCBUb29sa2l0YCBpcyBpbnN0YWxsZWQsIGNvbmZpZ3VyZWQsIGFuZCBlbmFibGVkXG4gKiBhbmQgdGhlIHNhbmRib3ggbm90aWNlIGhhcyBiZWVuIHNob3duLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYm9vdHN0cmFwRGVtb1ZhdWx0KHBhcmFtczogQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwIH0gPSBwYXJhbXM7XG4gIC8vIFJlc29sdmVkIGZpcnN0LCBzbyBhIHZhdWx0IHRoYXQgaXMgbm90IGEgZGVtbyB2YXVsdCBpcyByZWZ1c2VkIGJlZm9yZSBhbnl0aGluZyBpcyBpbnN0YWxsZWQgaW50byBpdC5cbiAgY29uc3QgZGVtb2VkUGx1Z2luSWQgPSBhd2FpdCBnZXREZW1vZWRQbHVnaW5JZChhcHApO1xuICBhd2FpdCBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgfSk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbih7XG4gICAgYXBwLFxuICAgIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCxcbiAgICBzZXR0aW5nczogQ09ERV9TQ1JJUFRfVE9PTEtJVF9TRVRUSU5HU1xuICB9KTtcbiAgYXdhaXQgZW5zdXJlSW52b2NhYmxlU2NyaXB0c0ZvbGRlcihhcHApO1xuXG4gIGlmICghYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEKSkge1xuICAgIGF3YWl0IGVuYWJsZUNvbW11bml0eVBsdWdpbih7IGFwcCwgcGx1Z2luSWQ6IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEIH0pO1xuICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlN1Y2Nlc3MpIHtcbiAgICAvLyBBbHJlYWR5IGVuYWJsZWQgd2l0aCBzdGFsZSBzZXR0aW5ncyDigJQgcmVsb2FkIHNvIGBDb2RlU2NyaXB0IFRvb2xraXRgIHJlLXJlYWRzIHRoZSBmcmVzaGx5IHdyaXR0ZW4gZGF0YS5qc29uLlxuICAgIGF3YWl0IGRpc2FibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgfVxuXG4gIC8vIEFmdGVyIGBDb2RlU2NyaXB0IFRvb2xraXRgLCBzbyB0aGUgdmF1bHQncyBzdGFydHVwIHNjcmlwdCBoYXMgYWxyZWFkeSBvcGVuZWQgdGhlIHN0YXJ0IG5vdGUgYnkgdGhlIHRpbWVcbiAgLy8gdGhlIGZpbGUgZXhwbG9yZXIgZ2FpbnMgaXRzIGZvbGRlci1ub3RlIGJlaGF2aW9yLlxuICBhd2FpdCBpbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luKHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQ6IEZPTERFUl9OT1RFU19QTFVHSU5fSUQsXG4gICAgc2V0dGluZ3M6IEZPTERFUl9OT1RFU19TRVRUSU5HU1xuICB9KTtcblxuICBzaG93U2FuZGJveE5vdGljZShhcHAsIGRlbW9lZFBsdWdpbklkKTtcbn1cblxuLy8gQnVpbGRzIHRoZSBzYW5kYm94IG5vdGljZSBjb250ZW50OiB3aGF0IHRoaXMgdmF1bHQgaXMsIHdoZXJlIGl0IGxpdmVzLCBob3cgbG9uZyBpdCBsaXZlcywgYW5kIHdoeVxuLy8gcmUtcnVubmluZyB0aGUgY29tbWFuZCBwcm9kdWNlcyBhIHZhdWx0IHdpdGhvdXQgdGhlIG5vdGVzIGp1c3Qgd3JpdHRlbiBoZXJlLlxuLy9cbi8vIEV2ZXJ5IGNsYWltIGhhcyB0byBzdGF5IHRydWUgb2YgdGhlIG9wZW5lciAoYGRlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHNgKTogaXQgZXh0cmFjdHMgYSBGUkVTSCBjb3B5XG4vLyBpbnRvIGl0cyBvd24gZm9sZGVyIG9uIGV2ZXJ5IG9wZW4sIGFuZCBkZWxldGVzIGV4dHJhY3RlZCBmb2xkZXJzIG9sZGVyIHRoYW4gYSBkYXkgb24gZWFjaCBsYXRlciBvcGVuLlxuLy8gU28gdGhlIHZhdWx0IGlzIGEgdGVtcG9yYXJ5IHNhbmRib3gg4oCUIGl0IG11c3QgbmV2ZXIgYmUgZGVzY3JpYmVkIGFzIGEgcGxhY2Ugd29yayBjYW4gYmUgbGVmdC5cbmZ1bmN0aW9uIGJ1aWxkU2FuZGJveE5vdGljZUZyYWdtZW50KHBsdWdpbk5hbWU6IHN0cmluZyk6IERvY3VtZW50RnJhZ21lbnQge1xuICByZXR1cm4gY3JlYXRlRnJhZ21lbnQoKGZyYWdtZW50KSA9PiB7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnVGhpcyBpcyBhIGRlbW8gdmF1bHQgZm9yICcpO1xuICAgIGFwcGVuZENvZGVCbG9jayhmcmFnbWVudCwgcGx1Z2luTmFtZSk7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnLicpO1xuXG4gICAgZnJhZ21lbnQuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnSXQgaXMgYSB0ZW1wb3Jhcnkgc2FuZGJveCwgY2xlYW5lZCB1cCBhdXRvbWF0aWNhbGx5IGFib3V0IGEgZGF5IGFmdGVyIHlvdSBsYXN0IHVzZSBpdC4nKTtcblxuICAgIGZyYWdtZW50LmNyZWF0ZUVsKCdicicpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ0V4ZWN1dGluZyAnKTtcbiAgICBmcmFnbWVudC5jcmVhdGVFbCgnYicsIHsgdGV4dDogYCR7cGx1Z2luTmFtZX06ICR7T1BFTl9ERU1PX1ZBVUxUX0NPTU1BTkRfTkFNRX1gIH0pO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJyBjb21tYW5kIGFnYWluIGNyZWF0ZXMgYSBuZXcgY29weSB3aXRoIHRoZSBsYXRlc3QgcGx1Z2luIHZlcnNpb24sIHNvIHlvdXIgbm90ZXMgd2lsbCBub3QgYXBwZWFyIGluIGl0LicpO1xuICB9KTtcbn1cblxuLy8gQ3JlYXRlcyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIGludm9jYWJsZS1zY3JpcHRzIGZvbGRlciAodW5kZXIgYG1vZHVsZXNSb290YCkgaWYgaXQgaXMgbWlzc2luZy5cbi8vIEV2ZXJ5IGRlbW8gdmF1bHQgdGhlbiBoYXMgdGhlIHNhbWUgYENvZGVTY3JpcHQgVG9vbGtpdGAgbGF5b3V0IGV2ZW4gd2hlbiBpdCBzaGlwcyBubyBpbnZvY2FibGUgc2NyaXB0cy5cbi8vIFRoZSBjb21taXR0ZWQgdmF1bHQgdGhlcmVmb3JlIGNhcnJpZXMgbm8gb3RoZXJ3aXNlLWVtcHR5IHBsYWNlaG9sZGVyIGZvbGRlci5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZUludm9jYWJsZVNjcmlwdHNGb2xkZXIoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaW52b2NhYmxlU2NyaXB0c0ZvbGRlclBhdGggPSBqb2luKENPREVfU0NSSVBUX1RPT0xLSVRfTU9EVUxFU19ST09ULCBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTLmludm9jYWJsZVNjcmlwdHNGb2xkZXIpO1xuICBpZiAoIWF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCkpIHtcbiAgICBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5ta2RpcihpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCk7XG4gIH1cbn1cblxuLy8gUmVhZHMgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzIG91dCBvZiB0aGlzIGhlbHBlcidzIG93biBgZGF0YS5qc29uYCwgd3JpdHRlbiBieSB0aGVcbi8vIHBhY2thZ2luZyBzdGVwIChzZWUgYERlbW9WYXVsdEhlbHBlclNldHRpbmdzYCkuIEEgdmF1bHQgd2l0aG91dCBhIHJlYWRhYmxlIG1hcmtlciB3YXMgbm90IHByb2R1Y2VkIGJ5XG4vLyB0aGF0IHN0ZXAg4oCUIGhhbmQtYXNzZW1ibGVkLCBvciB1bnBhY2tlZCBmcm9tIHNvbWV0aGluZyB0aGF0IGlzIG5vdCBhIGRlbW8gdmF1bHQg4oCUIHNvIGl0IGlzIHJlZnVzZWRcbi8vIHJhdGhlciB0aGFuIGJvb3RzdHJhcHBlZCBhZ2FpbnN0IGEgZ3Vlc3MuXG5hc3luYyBmdW5jdGlvbiBnZXREZW1vZWRQbHVnaW5JZChhcHA6IEFwcCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNldHRpbmdzUGF0aCA9IGpvaW4oYXBwLnZhdWx0LmNvbmZpZ0RpciwgUExVR0lOU19GT0xERVJfTkFNRSwgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lELCBEQVRBX0pTT05fRklMRV9OQU1FKTtcbiAgaWYgKCFhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoc2V0dGluZ3NQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSk7XG4gIH1cblxuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChzZXR0aW5nc1BhdGgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UsIHsgY2F1c2U6IGVycm9yIH0pO1xuICB9XG5cbiAgY29uc3QgZGVtb2VkUGx1Z2luSWQgPSAocGFyc2VkIGFzIG51bGwgfCBQYXJ0aWFsPERlbW9WYXVsdEhlbHBlclNldHRpbmdzPik/LmRlbW9lZFBsdWdpbklkO1xuICBpZiAodHlwZW9mIGRlbW9lZFBsdWdpbklkICE9PSAnc3RyaW5nJyB8fCBkZW1vZWRQbHVnaW5JZCA9PT0gRU1QVFkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UpO1xuICB9XG4gIHJldHVybiBkZW1vZWRQbHVnaW5JZDtcbn1cblxuLy8gVGVsbHMgdGhlIHVzZXIgdGhpcyB2YXVsdCBpcyBhIHNhbmRib3gsIHVzaW5nIE9ic2lkaWFuJ3Mgb3duIHNhbmRib3gtdmF1bHQgdHJlYXRtZW50OiBhbiBpbmZpbml0ZVxuLy8gZHVyYXRpb24sIGRpc21pc3NlZCBieSBjbGlja2luZyBpdC4gUmFpc2VkIGxhc3QsIHNvIGl0IGlzIHRoZSBuZXdlc3Qgbm90aWNlIG9uIHNjcmVlbiBvbmNlXG4vLyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIHN0YXJ0dXAgc2NyaXB0IGhhcyBkb25lIGl0cyBvd24gd29yay5cbi8vXG4vLyBBIGBOb3RpY2VgIGlzIGJ1aWx0IGluc2lkZSB3aGF0ZXZlciB3aW5kb3cgaXMgYWN0aXZlIGF0IHRoYXQgbW9tZW50LCBhbmQgU2V0dGluZ3MgaXMgYSBQT1BPVVQgV0lORE9XXG4vLyAodmVyaWZpZWQgb24gMS4xMy42KSB0aGF0IGJlY29tZXMgdGhlIGFjdGl2ZSBvbmUgd2hpbGUgaXQgaXMgb3BlbiDigJQgc28gYSBub3RpY2UgcmFpc2VkIHRoZW4gd291bGQgYmVcbi8vIGNyZWF0ZWQgaW4gdGhlIHNldHRpbmdzIHdpbmRvdyBhbmQgdmFuaXNoIHdpdGggaXQuIFNldHRpbmdzIGlzIHRoZXJlZm9yZSBjbG9zZWQgZmlyc3Q6IE9ic2lkaWFuIGhhbmRzXG4vLyB0aGUgbWFpbiB3aW5kb3cgYmFjayBhcyB0aGUgcG9wb3V0IGdvZXMgYXdheSAoc3luY2hyb25vdXNseSwgYmVmb3JlIHRoZSBub3RpY2UgaXMgYnVpbHQpLCBhbmQgYSB1c2VyXG4vLyB3aG8gaGFzIGp1c3Qgb3BlbmVkIGEgZGVtbyB2YXVsdCB3YW50cyB0byBzZWUgdGhlIHZhdWx0IHJhdGhlciB0aGFuIGEgc2V0dGluZ3Mgd2luZG93IGFueXdheS4gQ2xvc2luZ1xuLy8gYW4gYWxyZWFkeS1jbG9zZWQgU2V0dGluZ3MgaXMgYSBuby1vcCwgc28gbm8gb3Blbi1zdGF0ZSBwcm9iZSBpcyBuZWVkZWQuXG5mdW5jdGlvbiBzaG93U2FuZGJveE5vdGljZShhcHA6IEFwcCwgZGVtb2VkUGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBwbHVnaW5OYW1lID0gYXBwLnBsdWdpbnMubWFuaWZlc3RzW2RlbW9lZFBsdWdpbklkXT8ubmFtZSA/PyBkZW1vZWRQbHVnaW5JZDtcbiAgY29uc3QgZnJhZ21lbnQgPSBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lKTtcbiAgYXBwLnNldHRpbmcuY2xvc2UoKTtcbiAgbmV3IE5vdGljZShmcmFnbWVudCwgU0FOREJPWF9OT1RJQ0VfRFVSQVRJT05fSU5fTUlMTElTRUNPTkRTKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0NBLGtCQUFxQjtBQUNyQixvQkFBc0I7QUFDdEIsc0JBQXVCO0FBSXZCLCtCQU9PO0FBQ1AsMEJBQWdDO0FBK0RoQyxNQUFNLGdDQUFnQztBQUN0QyxNQUFNLG1DQUFtQztBQUN6QyxNQUFNLCtCQUEwRDtBQUFBLEVBQzlELHlCQUF5QjtBQUFBLEVBQ3pCLHdCQUF3QjtBQUFBLEVBQ3hCLGFBQWE7QUFBQSxFQUNiLDBCQUEwQjtBQUFBLEVBQzFCLG1CQUFtQjtBQUNyQjtBQUVBLE1BQU0seUJBQXlCO0FBSy9CLE1BQU0sd0JBQTZDO0FBQUEsRUFDakQsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsaUJBQWlCO0FBQ25CO0FBRUEsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSxtQ0FBbUM7QUFDekMsTUFBTSwrQkFBK0I7QUFHckMsTUFBTSwwQ0FBMEM7QUFrQmhELGVBQXNCLG1CQUFtQixRQUFpRDtB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
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LWhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgYnkgaW5zdGFsbGluZywgY29uZmlndXJpbmcsIGFuZCBlbmFibGluZyBgQ29kZVNjcmlwdCBUb29sa2l0YC5cbiAqXG4gKiBBIHBsdWdpbidzIGRlbW8gdmF1bHQgc2hvd2Nhc2VzIHRoZSBwbHVnaW4gdGhyb3VnaCBub3RlcyB3aG9zZSBgY29kZS1idXR0b25gcyBydW4gVHlwZVNjcmlwdCB2aWFcbiAqIGBDb2RlU2NyaXB0IFRvb2xraXRgLiBBIGRlbW8gdmF1bHQgdGhhdCBkb2VzIG5vdCBpdHNlbGYgc2hpcCBgQ29kZVNjcmlwdCBUb29sa2l0YCB0aGVyZWZvcmUgbmVlZHMgaXRcbiAqIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWQgYmVmb3JlIHRob3NlIGJ1dHRvbnMgd29yay4ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0gZG9lcyBleGFjdGx5XG4gKiB0aGF0IHdpdGggbm8gY29tbWl0dGVkIGBDb2RlU2NyaXB0IFRvb2xraXRgIGNvbmZpZyBhbmQgbm8gbWFudWFsIHNldHVwLCBzbyBpdCBjYW4gYmUgZHJpdmVuIGZyb20gYSB0aW55XG4gKiBjb21taXR0ZWQgYm9vdHN0cmFwIHBsdWdpbiAoYGRlbW8tdmF1bHQtaGVscGVyYCkgdGhhdCBpcyBpbmplY3RlZCBpbnRvIGV2ZXJ5IGRlbW8gdmF1bHQgYXQgcmVsZWFzZVxuICogdGltZS5cbiAqXG4gKiBUaGUgcGx1Z2luIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMgaXMgcmVhZCBmcm9tIHRoZSBoZWxwZXIncyBvd24gYGRhdGEuanNvbmAsIHdyaXR0ZW4gYnkgdGhlIHBhY2thZ2luZ1xuICogc3RlcCAoe0BsaW5rIERlbW9WYXVsdEhlbHBlclNldHRpbmdzfSk7IGEgdmF1bHQgd2l0aG91dCB0aGF0IG1hcmtlciBpcyByZWZ1c2VkIGFzIG5vdCBhIGRlbW8gdmF1bHQuXG4gKlxuICogSXQgd3JpdGVzIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3Mgc2V0dGluZ3MgQkVGT1JFIGVuYWJsaW5nIGl0LCBzbyB0aGUgcGx1Z2luIGxvYWRzIGFscmVhZHkgY29uZmlndXJlZCDigJRcbiAqIG5vIHJlbG9hZC4gYENvZGVTY3JpcHQgVG9vbGtpdGAgdGhlbiBydW5zIHRoZSB2YXVsdCdzIGBzdGFydHVwLnRzYCAodmlhIGl0cyBgc3RhcnR1cFNjcmlwdFBhdGhgXG4gKiBzZXR0aW5nKSwgd2hpY2ggaXMgd2hlcmUgZWFjaCB2YXVsdCBvcGVucyBpdHMgc3RhcnQgbm90ZSBhbmQgZG9lcyBhbnkgcGx1Z2luLXNwZWNpZmljIHNldHVwLlxuICpcbiAqIEl0IGFsc28gY3JlYXRlcyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIGludm9jYWJsZS1zY3JpcHRzIGZvbGRlciBpZiBpdCBpcyBtaXNzaW5nLCBzbyBldmVyeSBkZW1vIHZhdWx0XG4gKiBoYXMgdGhlIHNhbWUgbGF5b3V0IGV2ZW4gd2hlbiB0aGUgdmF1bHQgc2hpcHMgbm8gaW52b2NhYmxlIHNjcmlwdHMg4oCUIHRoZSB2YXVsdHMgdGhlbXNlbHZlcyBjb21taXQgbm9cbiAqIGVtcHR5IGZvbGRlciBmb3IgaXQuXG4gKlxuICogSXQgdGhlbiBpbnN0YWxscyB0aGUgYEZvbGRlciBOb3Rlc2AgcGx1Z2luLCBjb25maWd1cmVkIHRvIHRyZWF0IGBSRUFETUUubWRgIGFzIGEgZm9sZGVyJ3Mgb3duIG5vdGUuIEFcbiAqIGRlbW8gdmF1bHQgdGhhdCBoYXMgb3V0Z3Jvd24gYSBmbGF0IG5vdGUgbGlzdCBncm91cHMgaXRzIG5vdGVzIGludG8gZm9sZGVycywgYW5kIGEgZ3JvdXAgZm9sZGVyIG9ubHlcbiAqIHNheXMgd2hhdCBpdCBpcyBmb3IgaWYgaXQgaGFzIGEgbm90ZSBvZiBpdHMgb3duIOKAlCBgUkVBRE1FLm1kYCwgYmVjYXVzZSB0aGF0IGlzIGFsc28gdGhlIGZpbGUgR2l0SHViXG4gKiByZW5kZXJzIHVuZGVyIHRoZSBmaWxlIGxpc3Qgd2hlbiB0aGUgc2FtZSB2YXVsdCBpcyBicm93c2VkIGFzIGEgcmVwb3NpdG9yeSwgc28gb25lIGZpbGUgc2VydmVzIGJvdGhcbiAqIHJlYWRlcnMuXG4gKlxuICogRmluYWxseSBpdCByYWlzZXMgdGhlIHNhbmRib3ggbm90aWNlIGV4cGxhaW5pbmcgdGhhdCB0aGUgb3BlbmVkIHZhdWx0IGlzIGEgdGhyb3dhd2F5IGNvcHksIHNvIGEgdXNlclxuICogd2hvIHdyaXRlcyB0aGVpciBvd24gbm90ZXMgaW4gaXQgaXMgbmV2ZXIgc3VycHJpc2VkIGJ5IHRoZW0gYmVpbmcgYWJzZW50IGZyb20gdGhlIG5leHQgY29weS4gU2V0dGluZ3NcbiAqIGlzIGNsb3NlZCBmaXJzdCwgc28gdGhlIG5vdGljZSBsYW5kcyBpbiB0aGUgdmF1bHQncyBtYWluIHdpbmRvdyByYXRoZXIgdGhhbiBpbiB0aGUgc2V0dGluZ3MgcG9wb3V0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgRU1QVFkgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmltcG9ydCB7IE5vdGljZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyB9IGZyb20gJy4vZGVtby12YXVsdC1oZWxwZXItc2V0dGluZ3MudHMnO1xuXG5pbXBvcnQge1xuICBjb25maWd1cmVDb21tdW5pdHlQbHVnaW4sXG4gIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdCxcbiAgZGlzYWJsZUNvbW11bml0eVBsdWdpbixcbiAgZW5hYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luLFxuICBpbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuaW1wb3J0IHsgYXBwZW5kQ29kZUJsb2NrIH0gZnJvbSAnLi9odG1sLWVsZW1lbnQudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBib290c3RyYXBEZW1vVmF1bHR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcERlbW9WYXVsdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG59XG5cbi8qKlxuICogYENvZGVTY3JpcHQgVG9vbGtpdGAncyBzZXR0aW5ncywgd3JpdHRlbiBpbnRvIGl0cyBgZGF0YS5qc29uYCBiZWZvcmUgaXQgaXMgZW5hYmxlZC5cbiAqL1xuaW50ZXJmYWNlIENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3Mge1xuICAvKipcbiAgICogVGhlIFlBTUwgZnJvbnRtYXR0ZXIgbWVyZ2VkIGludG8gZXZlcnkgYGNvZGUtYnV0dG9uYCBibG9jaydzIG93biBjb25maWcsIHVzZWQgaGVyZSB0byB0dXJuIHRoZVxuICAgKiBzb3VyY2Ugdmlld2VyIG9uIGZvciBldmVyeSBidXR0b24gaW4gZXZlcnkgZGVtbyB2YXVsdCB3aXRob3V0IGVkaXRpbmcgYSBzaW5nbGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgKHVuZGVyIHtAbGluayBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzLm1vZHVsZXNSb290fSkgaG9sZGluZyBpbnZvY2FibGUgc2NyaXB0cy5cbiAgICovXG4gIHJlYWRvbmx5IGludm9jYWJsZVNjcmlwdHNGb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIGZvbGRlciB0aGF0IGByZXF1aXJlKCcv4oCmJylgIHJlc29sdmVzIG1vZHVsZSBwYXRocyBhZ2FpbnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc1Jvb3Q6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBgQ29kZVNjcmlwdCBUb29sa2l0YCBoYW5kbGVzIGBvYnNpZGlhbjovL2AgcHJvdG9jb2wgVVJMcy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEhhbmRsZVByb3RvY29sVXJsczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggKHVuZGVyIHtAbGluayBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzLm1vZHVsZXNSb290fSkgb2YgdGhlIHNjcmlwdCBydW4gb24gbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0dXBTY3JpcHRQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogYEZvbGRlciBOb3Rlc2AnIHNldHRpbmdzLCB3cml0dGVuIGludG8gaXRzIGBkYXRhLmpzb25gIGJlZm9yZSBpdCBpcyBlbmFibGVkLlxuICovXG5pbnRlcmZhY2UgRm9sZGVyTm90ZXNTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBhIGZvbGRlcidzIG93biBub3RlIGlzIGxvb2tlZCBmb3IgdW5kZXIsIHdpdGhvdXQgdGhlIGV4dGVuc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlck5vdGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBmb2xkZXIncyBvd24gbm90ZSBpcyBoaWRkZW4gZnJvbSB0aGUgZmlsZSBleHBsb3Jlciwgc28gdGhlIGZvbGRlciBpdHNlbGYgc3RhbmRzIGZvciBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGhpZGVGb2xkZXJOb3RlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVyZSBhIGZvbGRlcidzIG93biBub3RlIGlzIGtlcHQsIHJlbGF0aXZlIHRvIHRoZSBmb2xkZXIgaXQgZGVzY3JpYmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUxvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmNvbnN0IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEID0gJ2ZpeC1yZXF1aXJlLW1vZHVsZXMnO1xuY29uc3QgQ09ERV9TQ1JJUFRfVE9PTEtJVF9NT0RVTEVTX1JPT1QgPSAnX2Fzc2V0cy9Db2RlU2NyaXB0VG9vbGtpdCc7XG5jb25zdCBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTOiBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzID0ge1xuICBkZWZhdWx0Q29kZUJ1dHRvbkNvbmZpZzogJy0tLVxcbnNvdXJjZVZpc2liaWxpdHk6IGNvbGxhcHNlZFxcbi0tLScsXG4gIGludm9jYWJsZVNjcmlwdHNGb2xkZXI6ICdJbnZvY2FibGVzJyxcbiAgbW9kdWxlc1Jvb3Q6IENPREVfU0NSSVBUX1RPT0xLSVRfTU9EVUxFU19ST09ULFxuICBzaG91bGRIYW5kbGVQcm90b2NvbFVybHM6IHRydWUsXG4gIHN0YXJ0dXBTY3JpcHRQYXRoOiAnc3RhcnR1cC50cydcbn07XG5cbmNvbnN0IEZPTERFUl9OT1RFU19QTFVHSU5fSUQgPSAnZm9sZGVyLW5vdGVzJztcbi8vIGBSRUFETUVgIHJhdGhlciB0aGFuIGBGb2xkZXIgTm90ZXNgJyBvd24gYHt7Zm9sZGVyX25hbWV9fWAgZGVmYXVsdDogdGhlIHNhbWUgZmlsZSBoYXMgdG8gYmUgdGhlIGZvbGRlcidzXG4vLyBub3RlIGluIE9ic2lkaWFuIEFORCB0aGUgcGFnZSBHaXRIdWIgcmVuZGVycyB3aGVuIHRoZSB2YXVsdCBpcyBicm93c2VkIGFzIGEgcmVwb3NpdG9yeSwgYW5kIEdpdEh1YlxuLy8gb25seSBkb2VzIHRoYXQgZm9yIGBSRUFETUUubWRgLiBgaW5zaWRlRm9sZGVyYCBrZWVwcyBpdCB3aXRoIHRoZSBub3RlcyBpdCBkZXNjcmliZXMgcmF0aGVyIHRoYW4gYmVzaWRlXG4vLyB0aGUgZm9sZGVyLCBhbmQgaGlkaW5nIGl0IGxldHMgdGhlIGZvbGRlciBpdHNlbGYgc3RhbmQgZm9yIHRoZSBub3RlIGluc3RlYWQgb2YgbGlzdGluZyBib3RoLlxuY29uc3QgRk9MREVSX05PVEVTX1NFVFRJTkdTOiBGb2xkZXJOb3Rlc1NldHRpbmdzID0ge1xuICBmb2xkZXJOb3RlTmFtZTogJ1JFQURNRScsXG4gIGhpZGVGb2xkZXJOb3RlOiB0cnVlLFxuICBzdG9yYWdlTG9jYXRpb246ICdpbnNpZGVGb2xkZXInXG59O1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgUExVR0lOU19GT0xERVJfTkFNRSA9ICdwbHVnaW5zJztcbmNvbnN0IERBVEFfSlNPTl9GSUxFX05BTUUgPSAnZGF0YS5qc29uJztcbmNvbnN0IElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFID0gJ0ludmFsaWQgZGVtbyB2YXVsdCc7XG5jb25zdCBPUEVOX0RFTU9fVkFVTFRfQ09NTUFORF9OQU1FID0gJ09wZW4gZGVtbyB2YXVsdCc7XG4vLyBgMGAgYXNrcyBPYnNpZGlhbiB0byBrZWVwIHRoZSBub3RpY2UgdXAgdW50aWwgdGhlIHVzZXIgY2xpY2tzIGl0IOKAlCB0aGUgc2FtZSB0cmVhdG1lbnQgT2JzaWRpYW4gZ2l2ZXNcbi8vIGl0cyBvd24gc2FuZGJveC12YXVsdCBub3RpY2UsIGFuZCB3aGF0IHRoZSBkZW1vLXZhdWx0IG5vdGljZSBpcyBtb2RlbGxlZCBvbi5cbmNvbnN0IFNBTkRCT1hfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyA9IDA7XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgc28gaXRzIG5vdGVzJyBgY29kZS1idXR0b25gcyB3b3JrIHdpdGggbm8gbWFudWFsIHNldHVwOiBpbnN0YWxscyBDb2RlU2NyaXB0XG4gKiBUb29sa2l0IGZyb20gdGhlIGNvbW11bml0eSBzdG9yZSAoaWYgaXQgaXMgbm90IGFscmVhZHkgaW5zdGFsbGVkKSwgd3JpdGVzIGl0cyBzZXR0aW5ncywgdGhlbiBlbmFibGVzXG4gKiBpdCDigJQgd3JpdGluZyB0aGUgc2V0dGluZ3MgQkVGT1JFIGVuYWJsaW5nIHNvIGEgZnJlc2ggZW5hYmxlIGxvYWRzIGl0IGFscmVhZHkgY29uZmlndXJlZCwgd2l0aCBub1xuICogcmVsb2FkLiBJZiBgQ29kZVNjcmlwdCBUb29sa2l0YCBpcyBhbHJlYWR5IGVuYWJsZWQgYnV0IHRoZSBzZXR0aW5ncyBqdXN0IGNoYW5nZWQsIGl0IGlzIHJlbG9hZGVkXG4gKiAoZGlzYWJsZWQgdGhlbiBlbmFibGVkKSBzbyBpdCByZS1yZWFkcyBgZGF0YS5qc29uYDsgd2hlbiB0aGUgc2V0dGluZ3Mgd2VyZSBhbHJlYWR5IGluIHBsYWNlLCBub3RoaW5nIGlzXG4gKiByZWxvYWRlZCAoc28gYSByb3V0aW5lIHZhdWx0IHJlLW9wZW4gZG9lcyBub3QgcmUtcnVuIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3Mgc3RhcnR1cCkuIGBDb2RlU2NyaXB0IFRvb2xraXRgXG4gKiB0aGVuIHJ1bnMgdGhlIHZhdWx0J3MgYHN0YXJ0dXAudHNgLiBgRm9sZGVyIE5vdGVzYCBpcyBpbnN0YWxsZWQgbmV4dCwgY29uZmlndXJlZCB0byB0cmVhdCBgUkVBRE1FLm1kYCBhc1xuICogYSBmb2xkZXIncyBvd24gbm90ZSwgc28gYSB2YXVsdCB3aG9zZSBub3RlcyBhcmUgZ3JvdXBlZCBpbnRvIGZvbGRlcnMgZGVzY3JpYmVzIGVhY2ggZ3JvdXAgaW4gdGhlIGZpbGVcbiAqIGV4cGxvcmVyLiBGaW5hbGx5IGl0IGNsb3NlcyBTZXR0aW5ncyAoc28gdGhlIG5vdGljZSBjYW5ub3QgYmUgcmFpc2VkIGluc2lkZSB0aGUgc2V0dGluZ3MgcG9wb3V0KSBhbmRcbiAqIHJhaXNlcyB0aGUgc2FuZGJveCBub3RpY2UgZGVzY3JpYmluZyB0aGUgb3BlbmVkIHZhdWx0IGFzIGEgdGhyb3dhd2F5IGNvcHkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSBgQ29kZVNjcmlwdCBUb29sa2l0YCBpcyBpbnN0YWxsZWQsIGNvbmZpZ3VyZWQsIGFuZCBlbmFibGVkXG4gKiBhbmQgdGhlIHNhbmRib3ggbm90aWNlIGhhcyBiZWVuIHNob3duLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYm9vdHN0cmFwRGVtb1ZhdWx0KHBhcmFtczogQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwIH0gPSBwYXJhbXM7XG4gIC8vIFJlc29sdmVkIGZpcnN0LCBzbyBhIHZhdWx0IHRoYXQgaXMgbm90IGEgZGVtbyB2YXVsdCBpcyByZWZ1c2VkIGJlZm9yZSBhbnl0aGluZyBpcyBpbnN0YWxsZWQgaW50byBpdC5cbiAgY29uc3QgZGVtb2VkUGx1Z2luSWQgPSBhd2FpdCBnZXREZW1vZWRQbHVnaW5JZChhcHApO1xuICBhd2FpdCBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgfSk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbih7XG4gICAgYXBwLFxuICAgIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCxcbiAgICBzZXR0aW5nczogQ09ERV9TQ1JJUFRfVE9PTEtJVF9TRVRUSU5HU1xuICB9KTtcbiAgYXdhaXQgZW5zdXJlSW52b2NhYmxlU2NyaXB0c0ZvbGRlcihhcHApO1xuXG4gIGlmICghYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEKSkge1xuICAgIGF3YWl0IGVuYWJsZUNvbW11bml0eVBsdWdpbih7IGFwcCwgcGx1Z2luSWQ6IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEIH0pO1xuICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlN1Y2Nlc3MpIHtcbiAgICAvLyBBbHJlYWR5IGVuYWJsZWQgd2l0aCBzdGFsZSBzZXR0aW5ncyDigJQgcmVsb2FkIHNvIGBDb2RlU2NyaXB0IFRvb2xraXRgIHJlLXJlYWRzIHRoZSBmcmVzaGx5IHdyaXR0ZW4gZGF0YS5qc29uLlxuICAgIGF3YWl0IGRpc2FibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgfVxuXG4gIC8vIEFmdGVyIGBDb2RlU2NyaXB0IFRvb2xraXRgLCBzbyB0aGUgdmF1bHQncyBzdGFydHVwIHNjcmlwdCBoYXMgYWxyZWFkeSBvcGVuZWQgdGhlIHN0YXJ0IG5vdGUgYnkgdGhlIHRpbWVcbiAgLy8gdGhlIGZpbGUgZXhwbG9yZXIgZ2FpbnMgaXRzIGZvbGRlci1ub3RlIGJlaGF2aW9yLlxuICBhd2FpdCBpbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luKHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQ6IEZPTERFUl9OT1RFU19QTFVHSU5fSUQsXG4gICAgc2V0dGluZ3M6IEZPTERFUl9OT1RFU19TRVRUSU5HU1xuICB9KTtcblxuICBzaG93U2FuZGJveE5vdGljZShhcHAsIGRlbW9lZFBsdWdpbklkKTtcbn1cblxuLy8gQnVpbGRzIHRoZSBzYW5kYm94IG5vdGljZSBjb250ZW50OiB3aGF0IHRoaXMgdmF1bHQgaXMsIHdoZXJlIGl0IGxpdmVzLCBob3cgbG9uZyBpdCBsaXZlcywgYW5kIHdoeVxuLy8gcmUtcnVubmluZyB0aGUgY29tbWFuZCBwcm9kdWNlcyBhIHZhdWx0IHdpdGhvdXQgdGhlIG5vdGVzIGp1c3Qgd3JpdHRlbiBoZXJlLlxuLy9cbi8vIEV2ZXJ5IGNsYWltIGhhcyB0byBzdGF5IHRydWUgb2YgdGhlIG9wZW5lciAoYGRlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHNgKTogaXQgZXh0cmFjdHMgYSBGUkVTSCBjb3B5XG4vLyBpbnRvIGl0cyBvd24gZm9sZGVyIG9uIGV2ZXJ5IG9wZW4sIGFuZCBkZWxldGVzIGV4dHJhY3RlZCBmb2xkZXJzIG9sZGVyIHRoYW4gYSBkYXkgb24gZWFjaCBsYXRlciBvcGVuLlxuLy8gU28gdGhlIHZhdWx0IGlzIGEgdGVtcG9yYXJ5IHNhbmRib3gg4oCUIGl0IG11c3QgbmV2ZXIgYmUgZGVzY3JpYmVkIGFzIGEgcGxhY2Ugd29yayBjYW4gYmUgbGVmdC5cbmZ1bmN0aW9uIGJ1aWxkU2FuZGJveE5vdGljZUZyYWdtZW50KHBsdWdpbk5hbWU6IHN0cmluZyk6IERvY3VtZW50RnJhZ21lbnQge1xuICByZXR1cm4gY3JlYXRlRnJhZ21lbnQoKGZyYWdtZW50KSA9PiB7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnVGhpcyBpcyBhIGRlbW8gdmF1bHQgZm9yICcpO1xuICAgIGFwcGVuZENvZGVCbG9jayhmcmFnbWVudCwgcGx1Z2luTmFtZSk7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnLicpO1xuXG4gICAgZnJhZ21lbnQuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnSXQgaXMgYSB0ZW1wb3Jhcnkgc2FuZGJveCwgY2xlYW5lZCB1cCBhdXRvbWF0aWNhbGx5IGFib3V0IGEgZGF5IGFmdGVyIHlvdSBsYXN0IHVzZSBpdC4nKTtcblxuICAgIGZyYWdtZW50LmNyZWF0ZUVsKCdicicpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ0V4ZWN1dGluZyAnKTtcbiAgICBmcmFnbWVudC5jcmVhdGVFbCgnYicsIHsgdGV4dDogYCR7cGx1Z2luTmFtZX06ICR7T1BFTl9ERU1PX1ZBVUxUX0NPTU1BTkRfTkFNRX1gIH0pO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJyBjb21tYW5kIGFnYWluIGNyZWF0ZXMgYSBuZXcgY29weSB3aXRoIHRoZSBsYXRlc3QgcGx1Z2luIHZlcnNpb24sIHNvIHlvdXIgbm90ZXMgd2lsbCBub3QgYXBwZWFyIGluIGl0LicpO1xuICB9KTtcbn1cblxuLy8gQ3JlYXRlcyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIGludm9jYWJsZS1zY3JpcHRzIGZvbGRlciAodW5kZXIgYG1vZHVsZXNSb290YCkgaWYgaXQgaXMgbWlzc2luZy5cbi8vIEV2ZXJ5IGRlbW8gdmF1bHQgdGhlbiBoYXMgdGhlIHNhbWUgYENvZGVTY3JpcHQgVG9vbGtpdGAgbGF5b3V0IGV2ZW4gd2hlbiBpdCBzaGlwcyBubyBpbnZvY2FibGUgc2NyaXB0cy5cbi8vIFRoZSBjb21taXR0ZWQgdmF1bHQgdGhlcmVmb3JlIGNhcnJpZXMgbm8gb3RoZXJ3aXNlLWVtcHR5IHBsYWNlaG9sZGVyIGZvbGRlci5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZUludm9jYWJsZVNjcmlwdHNGb2xkZXIoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaW52b2NhYmxlU2NyaXB0c0ZvbGRlclBhdGggPSBqb2luKENPREVfU0NSSVBUX1RPT0xLSVRfTU9EVUxFU19ST09ULCBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTLmludm9jYWJsZVNjcmlwdHNGb2xkZXIpO1xuICBpZiAoIWF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCkpIHtcbiAgICBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5ta2RpcihpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCk7XG4gIH1cbn1cblxuLy8gUmVhZHMgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzIG91dCBvZiB0aGlzIGhlbHBlcidzIG93biBgZGF0YS5qc29uYCwgd3JpdHRlbiBieSB0aGVcbi8vIHBhY2thZ2luZyBzdGVwIChzZWUgYERlbW9WYXVsdEhlbHBlclNldHRpbmdzYCkuIEEgdmF1bHQgd2l0aG91dCBhIHJlYWRhYmxlIG1hcmtlciB3YXMgbm90IHByb2R1Y2VkIGJ5XG4vLyB0aGF0IHN0ZXAg4oCUIGhhbmQtYXNzZW1ibGVkLCBvciB1bnBhY2tlZCBmcm9tIHNvbWV0aGluZyB0aGF0IGlzIG5vdCBhIGRlbW8gdmF1bHQg4oCUIHNvIGl0IGlzIHJlZnVzZWRcbi8vIHJhdGhlciB0aGFuIGJvb3RzdHJhcHBlZCBhZ2FpbnN0IGEgZ3Vlc3MuXG5hc3luYyBmdW5jdGlvbiBnZXREZW1vZWRQbHVnaW5JZChhcHA6IEFwcCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNldHRpbmdzUGF0aCA9IGpvaW4oYXBwLnZhdWx0LmNvbmZpZ0RpciwgUExVR0lOU19GT0xERVJfTkFNRSwgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lELCBEQVRBX0pTT05fRklMRV9OQU1FKTtcbiAgaWYgKCFhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoc2V0dGluZ3NQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSk7XG4gIH1cblxuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChzZXR0aW5nc1BhdGgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UsIHsgY2F1c2U6IGVycm9yIH0pO1xuICB9XG5cbiAgY29uc3QgZGVtb2VkUGx1Z2luSWQgPSAocGFyc2VkIGFzIG51bGwgfCBQYXJ0aWFsPERlbW9WYXVsdEhlbHBlclNldHRpbmdzPik/LmRlbW9lZFBsdWdpbklkO1xuICBpZiAodHlwZW9mIGRlbW9lZFBsdWdpbklkICE9PSAnc3RyaW5nJyB8fCBkZW1vZWRQbHVnaW5JZCA9PT0gRU1QVFkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UpO1xuICB9XG4gIHJldHVybiBkZW1vZWRQbHVnaW5JZDtcbn1cblxuLy8gVGVsbHMgdGhlIHVzZXIgdGhpcyB2YXVsdCBpcyBhIHNhbmRib3gsIHVzaW5nIE9ic2lkaWFuJ3Mgb3duIHNhbmRib3gtdmF1bHQgdHJlYXRtZW50OiBhbiBpbmZpbml0ZVxuLy8gZHVyYXRpb24sIGRpc21pc3NlZCBieSBjbGlja2luZyBpdC4gUmFpc2VkIGxhc3QsIHNvIGl0IGlzIHRoZSBuZXdlc3Qgbm90aWNlIG9uIHNjcmVlbiBvbmNlXG4vLyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIHN0YXJ0dXAgc2NyaXB0IGhhcyBkb25lIGl0cyBvd24gd29yay5cbi8vXG4vLyBBIGBOb3RpY2VgIGlzIGJ1aWx0IGluc2lkZSB3aGF0ZXZlciB3aW5kb3cgaXMgYWN0aXZlIGF0IHRoYXQgbW9tZW50LCBhbmQgU2V0dGluZ3MgaXMgYSBQT1BPVVQgV0lORE9XXG4vLyAodmVyaWZpZWQgb24gMS4xMy42KSB0aGF0IGJlY29tZXMgdGhlIGFjdGl2ZSBvbmUgd2hpbGUgaXQgaXMgb3BlbiDigJQgc28gYSBub3RpY2UgcmFpc2VkIHRoZW4gd291bGQgYmVcbi8vIGNyZWF0ZWQgaW4gdGhlIHNldHRpbmdzIHdpbmRvdyBhbmQgdmFuaXNoIHdpdGggaXQuIFNldHRpbmdzIGlzIHRoZXJlZm9yZSBjbG9zZWQgZmlyc3Q6IE9ic2lkaWFuIGhhbmRzXG4vLyB0aGUgbWFpbiB3aW5kb3cgYmFjayBhcyB0aGUgcG9wb3V0IGdvZXMgYXdheSAoc3luY2hyb25vdXNseSwgYmVmb3JlIHRoZSBub3RpY2UgaXMgYnVpbHQpLCBhbmQgYSB1c2VyXG4vLyB3aG8gaGFzIGp1c3Qgb3BlbmVkIGEgZGVtbyB2YXVsdCB3YW50cyB0byBzZWUgdGhlIHZhdWx0IHJhdGhlciB0aGFuIGEgc2V0dGluZ3Mgd2luZG93IGFueXdheS4gQ2xvc2luZ1xuLy8gYW4gYWxyZWFkeS1jbG9zZWQgU2V0dGluZ3MgaXMgYSBuby1vcCwgc28gbm8gb3Blbi1zdGF0ZSBwcm9iZSBpcyBuZWVkZWQuXG5mdW5jdGlvbiBzaG93U2FuZGJveE5vdGljZShhcHA6IEFwcCwgZGVtb2VkUGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBwbHVnaW5OYW1lID0gYXBwLnBsdWdpbnMubWFuaWZlc3RzW2RlbW9lZFBsdWdpbklkXT8ubmFtZSA/PyBkZW1vZWRQbHVnaW5JZDtcbiAgY29uc3QgZnJhZ21lbnQgPSBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lKTtcbiAgYXBwLnNldHRpbmcuY2xvc2UoKTtcbiAgbmV3IE5vdGljZShmcmFnbWVudCwgU0FOREJPWF9OT1RJQ0VfRFVSQVRJT05fSU5fTUlMTElTRUNPTkRTKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9DQSxrQkFBcUI7QUFDckIsb0JBQXNCO0FBQ3RCLHNCQUF1QjtBQUl2QiwrQkFPTztBQUNQLDBCQUFnQztBQStEaEMsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSxtQ0FBbUM7QUFDekMsTUFBTSwrQkFBMEQ7QUFBQSxFQUM5RCx5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4QixhQUFhO0FBQUEsRUFDYiwwQkFBMEI7QUFBQSxFQUMxQixtQkFBbUI7QUFDckI7QUFFQSxNQUFNLHlCQUF5QjtBQUsvQixNQUFNLHdCQUE2QztBQUFBLEVBQ2pELGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGlCQUFpQjtBQUNuQjtBQUVBLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sbUNBQW1DO0FBQ3pDLE1BQU0sK0JBQStCO0FBR3JDLE1BQU0sMENBQTBDO0FBa0JoRCxlQUFzQixtQkFBbUIsUUFBaUQ7QUFDeEYsUUFBTSxFQUFFLElBQUksSUFBSTtBQUVoQixRQUFNLGlCQUFpQixNQUFNLGtCQUFrQixHQUFHO0FBQ2xELFlBQU0saURBQXVCLEVBQUUsS0FBSyxVQUFVLDhCQUE4QixDQUFDO0FBQzdFLFFBQU0sU0FBUyxVQUFNLG1EQUF5QjtBQUFBLElBQzVDO0FBQUEsSUFDQSxVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFDWixDQUFDO0FBQ0QsUUFBTSw2QkFBNkIsR0FBRztBQUV0QyxNQUFJLENBQUMsSUFBSSxRQUFRLGVBQWUsSUFBSSw2QkFBNkIsR0FBRztBQUNsRSxjQUFNLGdEQUFzQixFQUFFLEtBQUssVUFBVSw4QkFBOEIsQ0FBQztBQUFBLEVBQzlFLFdBQVcsV0FBVyx3REFBK0IsU0FBUztBQUU1RCxjQUFNLGlEQUF1QixFQUFFLEtBQUssVUFBVSw4QkFBOEIsQ0FBQztBQUM3RSxjQUFNLGdEQUFzQixFQUFFLEtBQUssVUFBVSw4QkFBOEIsQ0FBQztBQUFBLEVBQzlFO0FBSUEsWUFBTSxnRUFBc0M7QUFBQSxJQUMxQztBQUFBLElBQ0EsVUFBVTtBQUFBLElBQ1YsVUFBVTtBQUFBLEVBQ1osQ0FBQztBQUVELG9CQUFrQixLQUFLLGNBQWM7QUFDdkM7QUFRQSxTQUFTLDJCQUEyQixZQUFzQztBQUN4RSxTQUFPLGVBQWUsQ0FBQyxhQUFhO0FBQ2xDLGFBQVMsV0FBVywyQkFBMkI7QUFDL0MsNkNBQWdCLFVBQVUsVUFBVTtBQUNwQyxhQUFTLFdBQVcsR0FBRztBQUV2QixhQUFTLFNBQVMsSUFBSTtBQUN0QixhQUFTLFdBQVcsd0ZBQXdGO0FBRTVHLGFBQVMsU0FBUyxJQUFJO0FBQ3RCLGFBQVMsV0FBVyxZQUFZO0FBQ2hDLGFBQVMsU0FBUyxLQUFLLEVBQUUsTUFBTSxHQUFHLFVBQVUsS0FBSyw0QkFBNEIsR0FBRyxDQUFDO0FBQ2pGLGFBQVMsV0FBVyx3R0FBd0c7QUFBQSxFQUM5SCxDQUFDO0FBQ0g7QUFLQSxlQUFlLDZCQUE2QixLQUF5QjtBQUNuRSxRQUFNLGlDQUE2QixrQkFBSyxrQ0FBa0MsNkJBQTZCLHNCQUFzQjtBQUM3SCxNQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sUUFBUSxPQUFPLDBCQUEwQixHQUFHO0FBQy9ELFVBQU0sSUFBSSxNQUFNLFFBQVEsTUFBTSwwQkFBMEI7QUFBQSxFQUMxRDtBQUNGO0FBTUEsZUFBZSxrQkFBa0IsS0FBMkI7QUFDMUQsUUFBTSxtQkFBZSxrQkFBSyxJQUFJLE1BQU0sV0FBVyxxQkFBcUIsNkJBQTZCLG1CQUFtQjtBQUNwSCxNQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sUUFBUSxPQUFPLFlBQVksR0FBRztBQUNqRCxVQUFNLElBQUksTUFBTSxnQ0FBZ0M7QUFBQSxFQUNsRDtBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0YsYUFBUyxLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sUUFBUSxLQUFLLFlBQVksQ0FBQztBQUFBLEVBQ2hFLFNBQVMsT0FBTztBQUNkLFVBQU0sSUFBSSxNQUFNLGtDQUFrQyxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQUEsRUFDcEU7QUFFQSxRQUFNLGlCQUFrQixRQUFvRDtBQUM1RSxNQUFJLE9BQU8sbUJBQW1CLFlBQVksbUJBQW1CLHFCQUFPO0FBQ2xFLFVBQU0sSUFBSSxNQUFNLGdDQUFnQztBQUFBLEVBQ2xEO0FBQ0EsU0FBTztBQUNUO0FBWUEsU0FBUyxrQkFBa0IsS0FBVSxnQkFBOEI7QUFDakUsUUFBTSxhQUFhLElBQUksUUFBUSxVQUFVLGNBQWMsR0FBRyxRQUFRO0FBQ2xFLFFBQU0sV0FBVywyQkFBMkIsVUFBVTtBQUN0RCxNQUFJLFFBQVEsTUFBTTtBQUNsQixNQUFJLHVCQUFPLFVBQVUsdUNBQXVDO0FBQzlEOyIsIm5hbWVzIjpbXX0=
|
|
@@ -50,7 +50,8 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
50
50
|
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
51
51
|
return originalRequire?.(id);
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
const app = globalThis.app;
|
|
54
|
+
if (app?.isMobile) {
|
|
54
55
|
if (id === "process" || id === "node:process") {
|
|
55
56
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
56
57
|
return process;
|
|
@@ -108,4 +109,4 @@ function getDemoVaultBaseName(pluginId) {
|
|
|
108
109
|
getDemoVaultArchiveFileName,
|
|
109
110
|
getDemoVaultFolderName
|
|
110
111
|
});
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LW5hbWluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIG5hbWVzIGEgcGx1Z2luJ3MgZGVtby12YXVsdCByZWxlYXNlIGFydGlmYWN0IGNhcnJpZXMg4oCUIHRoZSBvbmUgY29udHJhY3QgYmV0d2VlbiB0aGUgcmVsZWFzZS10aW1lXG4gKiBwYWNrYWdpbmcgc3RlcCBhbmQgdGhlIHJ1bnRpbWUgb3BlbmVyLlxuICpcbiAqIFRoZSB0d28gbGl2ZSBmYXIgYXBhcnQ6IGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2AgcnVucyB1bmRlciBOb2RlIGF0IHJlbGVhc2UgdGltZSBhbmQgV1JJVEVTIHRoZVxuICogYXJjaGl2ZSwgd2hpbGUgYGRlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHNgIHJ1bnMgaW5zaWRlIE9ic2lkaWFuIGFuZCBET1dOTE9BRFMgaXQgYnkgbmFtZS4gVGhleSB1c2VkXG4gKiB0byBhZ3JlZSBieSBhIGNvbW1lbnQgb24gZWFjaCBzaWRlIHNheWluZyB0aGUgb3RoZXIgbXVzdCBiZSBjaGFuZ2VkIHRvbywgd2hpY2ggaXMgZXhhY3RseSB0aGUgc29ydCBvZlxuICogcGFpcmluZyB0aGF0IHN1cnZpdmVzIHVudGlsIHRoZSBkYXkgaXQgZG9lcyBub3QuIEJvdGggbm93IGRlcml2ZSBldmVyeSBzaGFyZWQgbmFtZSBmcm9tIGhlcmUuXG4gKlxuICogS2VwdCBmcmVlIG9mIGBvYnNpZGlhbmAgYW5kIGBub2RlOmAgaW1wb3J0cyBvbiBwdXJwb3NlOiB0aGUgcGFja2FnaW5nIHN0ZXAgcnVucyB1bmRlciBOb2RlLCB3aGVyZSB0aGVcbiAqIGBvYnNpZGlhbmAgbW9kdWxlIGRvZXMgbm90IGV4aXN0LCBhbmQgdGhlIG9wZW5lciBzaXRzIGluIHRoZSBnZW5lcmF0ZWQgYmFycmVscywgd2hpY2ggbXVzdCBzdGF5IHNhZmUgdG9cbiAqIGV2YWx1YXRlIG9uIG1vYmlsZS5cbiAqL1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXREZW1vVmF1bHRGb2xkZXJOYW1lfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXREZW1vVmF1bHRGb2xkZXJOYW1lUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQgdGhlIHZhdWx0IGRlbW9uc3RyYXRlcywgZnJvbSB0aGF0IHBsdWdpbidzIGBtYW5pZmVzdC5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gdmVyc2lvbiB0aGUgdmF1bHQgc2hpcHMgd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgZmlsZSBuYW1lIG9mIHRoZSBkZW1vLXZhdWx0IGFyY2hpdmUgYXR0YWNoZWQgdG8gYSBwbHVnaW4ncyBHaXRIdWIgcmVsZWFzZS5cbiAqXG4gKiBDYXJyaWVzIHRoZSBwbHVnaW4gaWQgc28gc2V2ZXJhbCBwbHVnaW5zJyBkZW1vIHZhdWx0cyBuZXZlciBjb2xsaWRlLCBhbmQgZGVsaWJlcmF0ZWx5IE5PVCB0aGUgdmVyc2lvbjpcbiAqIGEgcmVsZWFzZSBhc3NldCBpcyBhbHJlYWR5IG5hbWVzcGFjZWQgYnkgaXRzIHJlbGVhc2UgdGFnIChg4oCmL3JlbGVhc2VzL2Rvd25sb2FkLzx2ZXJzaW9uPi/
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LW5hbWluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIG5hbWVzIGEgcGx1Z2luJ3MgZGVtby12YXVsdCByZWxlYXNlIGFydGlmYWN0IGNhcnJpZXMg4oCUIHRoZSBvbmUgY29udHJhY3QgYmV0d2VlbiB0aGUgcmVsZWFzZS10aW1lXG4gKiBwYWNrYWdpbmcgc3RlcCBhbmQgdGhlIHJ1bnRpbWUgb3BlbmVyLlxuICpcbiAqIFRoZSB0d28gbGl2ZSBmYXIgYXBhcnQ6IGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2AgcnVucyB1bmRlciBOb2RlIGF0IHJlbGVhc2UgdGltZSBhbmQgV1JJVEVTIHRoZVxuICogYXJjaGl2ZSwgd2hpbGUgYGRlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHNgIHJ1bnMgaW5zaWRlIE9ic2lkaWFuIGFuZCBET1dOTE9BRFMgaXQgYnkgbmFtZS4gVGhleSB1c2VkXG4gKiB0byBhZ3JlZSBieSBhIGNvbW1lbnQgb24gZWFjaCBzaWRlIHNheWluZyB0aGUgb3RoZXIgbXVzdCBiZSBjaGFuZ2VkIHRvbywgd2hpY2ggaXMgZXhhY3RseSB0aGUgc29ydCBvZlxuICogcGFpcmluZyB0aGF0IHN1cnZpdmVzIHVudGlsIHRoZSBkYXkgaXQgZG9lcyBub3QuIEJvdGggbm93IGRlcml2ZSBldmVyeSBzaGFyZWQgbmFtZSBmcm9tIGhlcmUuXG4gKlxuICogS2VwdCBmcmVlIG9mIGBvYnNpZGlhbmAgYW5kIGBub2RlOmAgaW1wb3J0cyBvbiBwdXJwb3NlOiB0aGUgcGFja2FnaW5nIHN0ZXAgcnVucyB1bmRlciBOb2RlLCB3aGVyZSB0aGVcbiAqIGBvYnNpZGlhbmAgbW9kdWxlIGRvZXMgbm90IGV4aXN0LCBhbmQgdGhlIG9wZW5lciBzaXRzIGluIHRoZSBnZW5lcmF0ZWQgYmFycmVscywgd2hpY2ggbXVzdCBzdGF5IHNhZmUgdG9cbiAqIGV2YWx1YXRlIG9uIG1vYmlsZS5cbiAqL1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXREZW1vVmF1bHRGb2xkZXJOYW1lfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXREZW1vVmF1bHRGb2xkZXJOYW1lUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQgdGhlIHZhdWx0IGRlbW9uc3RyYXRlcywgZnJvbSB0aGF0IHBsdWdpbidzIGBtYW5pZmVzdC5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gdmVyc2lvbiB0aGUgdmF1bHQgc2hpcHMgd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgZmlsZSBuYW1lIG9mIHRoZSBkZW1vLXZhdWx0IGFyY2hpdmUgYXR0YWNoZWQgdG8gYSBwbHVnaW4ncyBHaXRIdWIgcmVsZWFzZS5cbiAqXG4gKiBDYXJyaWVzIHRoZSBwbHVnaW4gaWQgc28gc2V2ZXJhbCBwbHVnaW5zJyBkZW1vIHZhdWx0cyBuZXZlciBjb2xsaWRlLCBhbmQgZGVsaWJlcmF0ZWx5IE5PVCB0aGUgdmVyc2lvbjpcbiAqIGEgcmVsZWFzZSBhc3NldCBpcyBhbHJlYWR5IG5hbWVzcGFjZWQgYnkgaXRzIHJlbGVhc2UgdGFnIChg4oCmL3JlbGVhc2VzL2Rvd25sb2FkLzx2ZXJzaW9uPi/igKZgKSwgc28gdGhlXG4gKiB2ZXJzaW9uIGJvdWdodCBubyBkaXNhbWJpZ3VhdGlvbiB3aGlsZSBtYWtpbmcgdGhlIGFzc2V0IG5hbWUgY2hhbmdlIG9uIGV2ZXJ5IHJlbGVhc2Ug4oCUIHdoaWNoIGlzIHdoYXRcbiAqIGJyb2tlIHRoZSBDb21tdW5pdHkgZGlyZWN0b3J5J3MgZmluZGluZyBvdmVycmlkZXMsIHdob3NlIGZpbmdlcnByaW50IGluY2x1ZGVzIHRoZSBuYW1lLiBUaGUgdmVyc2lvblxuICogbGl2ZXMgaW5zaWRlIHRoZSBhcmNoaXZlIGluc3RlYWQsIGFzIHtAbGluayBnZXREZW1vVmF1bHRGb2xkZXJOYW1lfSBhbmQgb24gdGhlIFJFQURNRSdzIGhlYWRpbmcuXG4gKlxuICogQHBhcmFtIHBsdWdpbklkIC0gVGhlIHBsdWdpbiBpZCB0aGUgdmF1bHQgZGVtb25zdHJhdGVzLlxuICogQHJldHVybnMgVGhlIGFyY2hpdmUgZmlsZSBuYW1lLCBlLmcuIGBteS1wbHVnaW4tZGVtby12YXVsdC56aXBgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKHBsdWdpbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Z2V0RGVtb1ZhdWx0QmFzZU5hbWUocGx1Z2luSWQpfS56aXBgO1xufVxuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBkZW1vIHZhdWx0J3Mgb3duIGZvbGRlciDigJQgdGhlIGFyY2hpdmUncyBzaW5nbGUgdG9wLWxldmVsIGVudHJ5LCBhbmQgdGhlIGZvbGRlciB0aGVcbiAqIG9wZW5lciBleHRyYWN0cyBpdCB0by5cbiAqXG4gKiBPbmUgbmFtZSBzZXJ2ZXMgYm90aCBiZWNhdXNlIHRoZXkgYXJlIHRoZSBzYW1lIGZvbGRlciBzZWVuIHR3aWNlOiBhIHVzZXIgd2hvIHVuemlwcyB0aGUgYXJjaGl2ZSBieSBoYW5kXG4gKiBnZXRzIGEgc2VsZi1kZXNjcmliaW5nLCB2ZXJzaW9uLWRpc3RpbmN0IGZvbGRlciByYXRoZXIgdGhhbiBhbiBhbm9ueW1vdXMgb25lLCBhbmQgYSB1c2VyIHdobyBydW5zIHRoZVxuICogYE9wZW4gZGVtbyB2YXVsdGAgY29tbWFuZCBzZWVzIHRoYXQgc2FtZSBuYW1lIGluIE9ic2lkaWFuJ3MgdmF1bHQgc3dpdGNoZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgR2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZVBhcmFtc30uXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIG5hbWUsIGUuZy4gYG15LXBsdWdpbi1kZW1vLXZhdWx0LTEuMi4zYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlbW9WYXVsdEZvbGRlck5hbWUocGFyYW1zOiBHZXREZW1vVmF1bHRGb2xkZXJOYW1lUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIHBsdWdpbklkLFxuICAgIHZlcnNpb25cbiAgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGAke2dldERlbW9WYXVsdEJhc2VOYW1lKHBsdWdpbklkKX0tJHt2ZXJzaW9ufWA7XG59XG5cbmZ1bmN0aW9uIGdldERlbW9WYXVsdEJhc2VOYW1lKHBsdWdpbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7cGx1Z2luSWR9LWRlbW8tdmF1bHRgO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyQ08sU0FBUyw0QkFBNEIsVUFBMEI7QUFDcEUsU0FBTyxHQUFHLHFCQUFxQixRQUFRLENBQUM7QUFDMUM7QUFhTyxTQUFTLHVCQUF1QixRQUE4QztBQUNuRixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixTQUFPLEdBQUcscUJBQXFCLFFBQVEsQ0FBQyxJQUFJLE9BQU87QUFDckQ7QUFFQSxTQUFTLHFCQUFxQixVQUEwQjtBQUN0RCxTQUFPLEdBQUcsUUFBUTtBQUNwQjsiLCJuYW1lcyI6W119
|
|
@@ -83,7 +83,8 @@ ensureBrowserProcess();
|
|
|
83
83
|
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
|
-
|
|
86
|
+
const app = globalThis.app;
|
|
87
|
+
if (app?.isMobile) {
|
|
87
88
|
if (id === "process" || id === "node:process") {
|
|
88
89
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
89
90
|
return process;
|
|
@@ -333,4 +334,4 @@ async function resolveDemoVaultArchive(params) {
|
|
|
333
334
|
0 && (module.exports = {
|
|
334
335
|
openDemoVault
|
|
335
336
|
});
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEb3dubG9hZHMgYW5kIG9wZW5zIGEgcGx1Z2luJ3Mgc2hpcHBlZCBkZW1vIHZhdWx0IGluIGEgbmV3IE9ic2lkaWFuIHdpbmRvdyAoZGVza3RvcCBvbmx5KS5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gYXR0YWNoIGEgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCBhcmNoaXZlIHRvIGVhY2ggR2l0SHViIHJlbGVhc2UgKHNlZVxuICogYGFyY2hpdmVQbHVnaW5EZW1vVmF1bHRgIGluIGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2A7IGV2ZXJ5IG5hbWUgc2hhcmVkIHdpdGggaXQgY29tZXMgZnJvbVxuICogYGRlbW8tdmF1bHQtbmFtaW5nLnRzYCkuIFRoaXMgcmVzb2x2ZXMgdGhlIHBsdWdpbidzIHJlcG9zaXRvcnkgZnJvbSBPYnNpZGlhbidzIGNvbW11bml0eSByZWdpc3RyeSxcbiAqIGRvd25sb2FkcyB0aGUgYXJjaGl2ZSBmb3IgdGhlIGNob3NlbiB2ZXJzaW9uLCBhbmQgb3BlbnMgaXQgYXMgYSB2YXVsdCBpbiBhIG5ldyB3aW5kb3cuIFdoZW4gdGhlXG4gKiBpbnN0YWxsZWQgcGx1Z2luIHZlcnNpb24gaXMgYmVoaW5kIHRoZSBsYXRlc3QgcmVsZWFzZSwgdGhlIHVzZXIgaXMgb2ZmZXJlZCBhIGNob2ljZSBiZXR3ZWVuIHRoZSB0d29cbiAqIHZlcnNpb25zLlxuICpcbiAqIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duIGltbWVkaWF0ZWx5IChkb3dubG9hZCArIGV4dHJhY3Rpb24gY2FuIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWVcbiAqIHNvbWV0aGluZyBpcyBoYXBwZW5pbmcgcmlnaHQgYXdheSkuIE9ubHkgdGhlIGRvd25sb2FkZWQgQVJDSElWRSBpcyBjYWNoZWQgKHVuZGVyIHRoZSBPUyB0ZW1wXG4gKiBkaXJlY3RvcnkpOyBldmVyeSBpbnZvY2F0aW9uIGV4dHJhY3RzIGEgRlJFU0ggY29weSBpbnRvIGl0cyBvd24gdGVtcG9yYXJ5IGZvbGRlciBhbmQgb3BlbnMgdGhhdCwgc28gYVxuICogcHJldmlvdXMgc2Vzc2lvbidzIGVkaXRzIG5ldmVyIGxlYWsgaW50byBhIG5ldyBvbmUuIFRoZSB2YXVsdCBmb2xkZXIgaXMgdGhlIGFyY2hpdmUncyBvd24gc2luZ2xlXG4gKiB0b3AtbGV2ZWwgZm9sZGVyLCBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj5gLCB3aGljaCByZWFkcyBuaWNlbHkgaW4gT2JzaWRpYW4ncyB2YXVsdCBzd2l0Y2hlclxuICogYW5kIGlzIHRoZSBzYW1lIG5hbWUgYSBoYW5kLXVuemlwcGVkIGFyY2hpdmUgcHJvZHVjZXMuIE9ycGhhbmVkIGV4dHJhY3RlZCBmb2xkZXJzIGxlZnQgb3ZlciBmcm9tXG4gKiBlYXJsaWVyIHNlc3Npb25zIGFyZSBjbGVhbmVkIHVwIChiZXN0LWVmZm9ydCkgb24gZWFjaCBvcGVuLlxuICpcbiAqICoqTm90aGluZyBoZXJlIG1heSB0b3VjaCBhIHBsYXRmb3JtLW9ubHkgQVBJIHdoaWxlIHRoZSBtb2R1bGUgSU5JVElBTElaRVMuKiogVGhlIGBub2RlOmAgaW1wb3J0cyBiZWxvd1xuICogYXJlIHNhZmUgdG8gbWVyZWx5IGV2YWx1YXRlIG9uIG1vYmlsZSDigJQgYHJlcXVpcmVgIGhhbmRzIGJhY2sgYHVuZGVmaW5lZGAgdGhlcmUgYW5kIG5vdGhpbmcgcmVhZHMgaXQgYXRcbiAqIGxvYWQgdGltZSDigJQgYW5kIGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBiYXJyZWxzIHJlLWV4cG9ydCB0aGlzIG1vZHVsZSwgdGhhdCBpcyBhIGxvYWQtYmVhcmluZyBwcm9wZXJ0eSBvZlxuICogdGhlIHdob2xlIGxpYnJhcnkgcmF0aGVyIHRoYW4gYSBkZXRhaWwgb2YgdGhpcyBmaWxlLiBJdCB3YXMgbGVhcm5lZCB0aGUgaGFyZCB3YXk6IHRoaXMgbW9kdWxlIG9uY2VcbiAqIGltcG9ydGVkIGBhZG0temlwYCwgd2hvc2UgemlwLWNyeXB0byBtZXRob2Qgb3BlbnMgd2l0aCBhIHRvcC1sZXZlbFxuICogYGNvbnN0IHsgcmFuZG9tRmlsbFN5bmMgfSA9IHJlcXVpcmUoJ2NyeXB0bycpYCwgYW5kIGEgc3RhdGljIGBpbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnYCB0aGVyZWZvcmVcbiAqIGtpbGxlZCB0aGUgbGlicmFyeSdzIGxvYWQgb24gQW5kcm9pZCAoc2VlIHRoZSBtb2JpbGUtbG9hZCBjaGVjayBpblxuICogYHNjcmlwdHMvaGVscGVycy9hc3NlcnQtbW9iaWxlLWxvYWRhYmxlLWJ1bmRsZS50c2AsIHdoaWNoIGZhaWxzIHRoZSBidWlsZCBvbiBleGFjdGx5IHRoYXQpLiBFeHRyYWN0aW9uXG4gKiBub3cgZ29lcyB0aHJvdWdoIGBkZXNrdG9wLXppcC1leHRyYWN0b3IudHNgLCB3aGljaCBuZWVkcyBubyBkZXBlbmRlbmN5IGF0IGFsbCDigJQgYnV0IGFueSBmdXR1cmVcbiAqIGRlcGVuZGVuY3kgdGhhdCBpbml0aWFsaXplcyBhZ2FpbnN0IGEgcGxhdGZvcm0tb25seSBBUEkgc3RpbGwgaGFzIHRvIGJlIGRlZmVycmVkIGJlaGluZCBhIGNhbGwtdGltZVxuICogYGltcG9ydCgpYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZXh0cmFjdFppcEFyY2hpdmUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGVza3RvcC16aXAtZXh0cmFjdG9yJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ25vZGU6YnVmZmVyJztcbmltcG9ydCB7XG4gIGV4aXN0c1N5bmMsXG4gIG1rZGlyU3luYyxcbiAgbWtkdGVtcFN5bmMsXG4gIHJlYWRkaXJTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHJtU3luYyxcbiAgc3RhdFN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IHJlcXVlc3RVcmwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICBQbHVnaW5Ob3RpY2VDb21wb25lbnREZWxheWVkTm90aWNlXG59IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7XG4gIGdldENvbW11bml0eVBsdWdpblJlcG8sXG4gIGdldExhdGVzdFJlbGVhc2VWZXJzaW9uXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuaW1wb3J0IHsgUGx1Z2luTm90aWNlTW9kZSB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5pbXBvcnQge1xuICBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUsXG4gIGdldERlbW9WYXVsdEZvbGRlck5hbWVcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LW5hbWluZy50cyc7XG5pbXBvcnQge1xuICBhc0NvZGVCbG9jayxcbiAgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc1xufSBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5pbXBvcnQgeyBzZWxlY3RPcHRpb24gfSBmcm9tICcuL21vZGFscy9zZWxlY3Qtb3B0aW9uLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgb3BlbkRlbW9WYXVsdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkRlbW9WYXVsdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQsIHVzZWQgdG8gbG9jYXRlIHRoZSBHaXRIdWIgcmVwb3NpdG9yeSwgdG8gbmFtZSB0aGUgYXJjaGl2ZSBhc3NldCwgYW5kIHRvIG5hbWUgdGhlXG4gICAqIGNhY2hlZCBhcmNoaXZlIGFuZCB0aGUgZXh0cmFjdGVkIHZhdWx0IGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZGlzcGxheSBuYW1lLCB1c2VkIHRvIGxhYmVsIHRoZSBub3RpY2VzIGFuZCB0aGUgdmVyc2lvbi1jaG9pY2UgZGlhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90aWNlIGNvbXBvbmVudCB1c2VkIHRvIHJlcG9ydCBwcm9ncmVzcyBhbmQgcHJvYmxlbXMgKHBsdWdpbiBub3QgaW4gdGhlIHJlZ2lzdHJ5LCBtaXNzaW5nXG4gICAqIGFyY2hpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uLCBvZmZlcmVkIGFzIG9uZSBvZiB0aGUgdmVyc2lvbiBjaG9pY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luVmVyc2lvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXJQYXJhbXMge1xuICByZWFkb25seSBhcmNoaXZlOiBCdWZmZXI7XG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcbiAgcmVhZG9ubHkgcHJvZ3Jlc3NOb3RpY2U6IFBsdWdpbk5vdGljZUNvbXBvbmVudERlbGF5ZWROb3RpY2U7XG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5jb25zdCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIgPSAnb2JzaWRpYW4tZGVtby12YXVsdHMnO1xuY29uc3QgQVJDSElWRVNfU1VCRk9MREVSID0gJ2FyY2hpdmVzJztcbmNvbnN0IEVYVFJBQ1RFRF9WQVVMVFNfU1VCRk9MREVSID0gJ2V4dHJhY3RlZCc7XG5jb25zdCBIVFRQX1NUQVRVU19PSyA9IDIwMDtcbi8vIE9uZSBkYXkgaW4gbWlsbGlzZWNvbmRzICgyNCAqIDYwICogNjAgKiAxMDAwKS5cbmNvbnN0IE9SUEhBTkVEX0VYVFJBQ1RFRF9WQVVMVF9NQVhfQUdFX0lOX01JTExJU0VDT05EUyA9IDg2XzQwMF8wMDA7XG5cbi8qKlxuICogRG93bmxvYWRzIGFuZCBvcGVucyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCBpbiBhIG5ldyBPYnNpZGlhbiB3aW5kb3cuIERlc2t0b3Agb25seS5cbiAqXG4gKiBJZiB0aGUgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uIGlzIHRoZSBsYXRlc3QgKG9yIG5ld2VyKSwgaXRzIGRlbW8gdmF1bHQgb3BlbnMgZGlyZWN0bHk7IG90aGVyd2lzZVxuICogdGhlIHVzZXIgY2hvb3NlcyBiZXR3ZWVuIHRoZSBsYXRlc3QgYW5kIHRoZSBjdXJyZW50bHktaW5zdGFsbGVkIHZlcnNpb24uIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duXG4gKiBpbW1lZGlhdGVseS4gVGhlIGNob3NlbiB2ZXJzaW9uJ3MgYXJjaGl2ZSBpcyBkb3dubG9hZGVkIG9uY2UgKHRoZW4gcmV1c2VkIGZyb20gdGhlIGFyY2hpdmUgY2FjaGUpLFxuICogYnV0IGEgZnJlc2ggY29weSBpcyBleHRyYWN0ZWQgaW50byBpdHMgb3duIHRlbXBvcmFyeSBmb2xkZXIgb24gZXZlcnkgb3BlbiDigJQgdGhlIHZhdWx0IGlzIG5ldmVyIHJldXNlZFxuICogYWNyb3NzIHNlc3Npb25zLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIE9wZW5EZW1vVmF1bHRQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSB2YXVsdCBoYXMgYmVlbiBvcGVuZWQsIG9yIG9uY2UgdGhlIG9wZXJhdGlvbiBoYXNcbiAqIGJlZW4gcmVwb3J0ZWQgYXMgbm90IHBvc3NpYmxlIChub3RpY2Ugc2hvd24pIG9yIGNhbmNlbGxlZCBieSB0aGUgdXNlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5EZW1vVmF1bHQocGFyYW1zOiBPcGVuRGVtb1ZhdWx0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQsXG4gICAgcGx1Z2luTmFtZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQsXG4gICAgcGx1Z2luVmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIC8vIFNob3duIGltbWVkaWF0ZWx5IChgZGVsYXlJbk1pbGxpc2Vjb25kczogMGApOiByZXNvbHZpbmcgdGhlIHJlbGVhc2UsIGRvd25sb2FkaW5nIGFuZCBleHRyYWN0aW5nIGNhblxuICAvLyBlYWNoIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWUgcHJvZ3Jlc3MgdGhlIG1vbWVudCB0aGUgY29tbWFuZCBpcyBpbnZva2VkLlxuICAvL1xuICAvLyBLZXB0IG91dCBvZiB0aGUgc2hhcmVkIHNsb3QgKGBTZXBhcmF0ZWApLCBiZWNhdXNlIHRoaXMgdmVyeSBmdW5jdGlvbiByYWlzZXMgb3JkaW5hcnkgbm90aWNlcyB3aGlsZVxuICAvLyB0aGUgb3BlcmF0aW9uIGlzIHN0aWxsIHJ1bm5pbmcg4oCUIFwibm90IGluIHRoZSByZWdpc3RyeVwiLCBcIm5vIGRlbW8gdmF1bHQgZm9yIHRoaXMgdmVyc2lvblwiIOKAlCBhbmQgYVxuICAvLyBzbG90IG5vdGljZSB3b3VsZCBoaWRlIHRoZSBwcm9ncmVzcyBub3RpY2UgcmF0aGVyIHRoYW4gYXBwZWFyIGJlc2lkZSBpdC5cbiAgdXNpbmcgcHJvZ3Jlc3NOb3RpY2UgPSBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZUFmdGVyRGVsYXkoe1xuICAgIGNvbnRlbnQ6IGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYE9wZW5pbmcgZGVtbyB2YXVsdCBmb3IgJHthc0NvZGVCbG9jayhwbHVnaW5OYW1lKX3igKZgKSxcbiAgICBkZWxheUluTWlsbGlzZWNvbmRzOiAwLFxuICAgIG1vZGU6IFBsdWdpbk5vdGljZU1vZGUuU2VwYXJhdGVcbiAgfSk7XG5cbiAgY29uc3QgcmVwbyA9IGF3YWl0IGdldENvbW11bml0eVBsdWdpblJlcG8ocGx1Z2luSWQpO1xuICBpZiAoIXJlcG8pIHtcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZShjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzKGBDb3VsZCBub3QgZmluZCBwbHVnaW4gJHthc0NvZGVCbG9jayhwbHVnaW5OYW1lKX0gaW4gdGhlIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LmApKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IHBsdWdpblZlcnNpb247XG4gIGNvbnN0IGxhdGVzdFZlcnNpb24gPSBhd2FpdCBnZXRMYXRlc3RSZWxlYXNlVmVyc2lvbihyZXBvKTtcblxuICBsZXQgdmVyc2lvblRvT3Blbjogc3RyaW5nO1xuICBpZiAoY29tcGFyZVZlcnNpb25zKGN1cnJlbnRWZXJzaW9uLCBsYXRlc3RWZXJzaW9uKSA+PSAwKSB7XG4gICAgdmVyc2lvblRvT3BlbiA9IGN1cnJlbnRWZXJzaW9uO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNob3NlblZlcnNpb24gPSBhd2FpdCBzZWxlY3RPcHRpb248bnVsbCB8IHN0cmluZz4oe1xuICAgICAgYXBwLFxuICAgICAgbWVzc2FnZTogY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2NrcyhgQ3VycmVudCB2ZXJzaW9uIG9mIHBsdWdpbiAke2FzQ29kZUJsb2NrKHBsdWdpbk5hbWUpfSB2JHtjdXJyZW50VmVyc2lvbn0gaXMgbm90IHRoZSBsYXRlc3QgKHYke2xhdGVzdFZlcnNpb259KWApLFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgaXNDdGE6IHRydWUsXG4gICAgICAgICAgdGV4dDogYE9wZW4gZGVtbyB2YXVsdCBmb3IgbGF0ZXN0IHZlcnNpb24gKHYke2xhdGVzdFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGxhdGVzdFZlcnNpb25cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IGBPcGVuIGRlbW8gdmF1bHQgZm9yIGN1cnJlbnQgdmVyc2lvbiAodiR7Y3VycmVudFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRWZXJzaW9uXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgdGl0bGU6IGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYXNDb2RlQmxvY2socGx1Z2luTmFtZSkpXG4gICAgfSk7XG4gICAgaWYgKGNob3NlblZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVyc2lvblRvT3BlbiA9IGNob3NlblZlcnNpb247XG4gIH1cblxuICBjb25zdCBhcmNoaXZlID0gYXdhaXQgcmVzb2x2ZURlbW9WYXVsdEFyY2hpdmUoe1xuICAgIHBsdWdpbklkLFxuICAgIHBsdWdpbk5hbWUsXG4gICAgcGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICAgIHByb2dyZXNzTm90aWNlLFxuICAgIHJlcG8sXG4gICAgdmVyc2lvbjogdmVyc2lvblRvT3BlblxuICB9KTtcbiAgaWYgKCFhcmNoaXZlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJvZ3Jlc3NOb3RpY2Uuc2V0Q29udGVudChjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzKGBFeHRyYWN0aW5nIGRlbW8gdmF1bHQgZm9yICR7YXNDb2RlQmxvY2socGx1Z2luTmFtZSl9IHYke3ZlcnNpb25Ub09wZW594oCmYCkpO1xuICBjbGVhbnVwT3JwaGFuZWRFeHRyYWN0ZWRWYXVsdHMoKTtcbiAgY29uc3QgdmF1bHREaXJlY3RvcnkgPSBleHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlcih7XG4gICAgYXJjaGl2ZSxcbiAgICBwbHVnaW5JZCxcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uVG9PcGVuXG4gIH0pO1xuXG4gIHdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kU3luYygndmF1bHQtb3BlbicsIHZhdWx0RGlyZWN0b3J5LCBmYWxzZSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBleHRyYWN0ZWQgZGVtby12YXVsdCBmb2xkZXJzIGxlZnQgb3ZlciBmcm9tIGVhcmxpZXIgc2Vzc2lvbnMgKGJlc3QtZWZmb3J0KS5cbiAqXG4gKiBFdmVyeSBvcGVuIGV4dHJhY3RzIGEgZnJlc2ggY29weSBpbnRvIGl0cyBvd24gZm9sZGVyIGFuZCBuZXZlciBkZWxldGVzIGl0IGFmdGVyd2FyZHMgKHRoZSB2YXVsdCBzdGF5c1xuICogb3BlbiBpbiBpdHMgd2luZG93KSwgc28gdGhlc2UgYWNjdW11bGF0ZS4gVGhpcyBkcm9wcyBmb2xkZXJzIG9sZGVyIHRoYW5cbiAqIHtAbGluayBPUlBIQU5FRF9FWFRSQUNURURfVkFVTFRfTUFYX0FHRV9JTl9NSUxMSVNFQ09ORFN9LiBBIGZvbGRlciB3aG9zZSB2YXVsdCBpcyBzdGlsbCBvcGVuIGluIGFub3RoZXJcbiAqIHdpbmRvdyBpcyBsb2NrZWQgb24gV2luZG93cyBhbmQgY2Fubm90IGJlIHJlbW92ZWQg4oCUIHRoZSByZW1vdmFsIGlzIHdyYXBwZWQgc28gc3VjaCBhIGZvbGRlciBpcyBzaW1wbHlcbiAqIHNraXBwZWQgYW5kIHJldHJpZWQgb24gYSBsYXRlciBvcGVuLlxuICovXG5mdW5jdGlvbiBjbGVhbnVwT3JwaGFuZWRFeHRyYWN0ZWRWYXVsdHMoKTogdm9pZCB7XG4gIGNvbnN0IGV4dHJhY3RlZFZhdWx0c1Jvb3QgPSBqb2luKHRtcGRpcigpLCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIsIEVYVFJBQ1RFRF9WQVVMVFNfU1VCRk9MREVSKTtcbiAgaWYgKCFleGlzdHNTeW5jKGV4dHJhY3RlZFZhdWx0c1Jvb3QpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgZm9yIChjb25zdCBlbnRyeU5hbWUgb2YgcmVhZGRpclN5bmMoZXh0cmFjdGVkVmF1bHRzUm9vdCkpIHtcbiAgICBjb25zdCBlbnRyeVBhdGggPSBqb2luKGV4dHJhY3RlZFZhdWx0c1Jvb3QsIGVudHJ5TmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gc3RhdFN5bmMoZW50cnlQYXRoKTtcbiAgICAgIGlmIChub3cgLSBzdGF0cy5tdGltZU1zIDwgT1JQSEFORURfRVhUUkFDVEVEX1ZBVUxUX01BWF9BR0VfSU5fTUlMTElTRUNPTkRTKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcm1TeW5jKGVudHJ5UGF0aCwgeyBmb3JjZTogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQmVzdC1lZmZvcnQgY2xlYW51cDogYW4gb3JwaGFuIHdob3NlIHZhdWx0IGlzIHN0aWxsIG9wZW4gKGxvY2tlZCBvbiBXaW5kb3dzKSBjYW5ub3QgYmUgcmVtb3ZlZDsgc2tpcCBpdCBhbmQgcmV0cnkgb24gYSBsYXRlciBvcGVuLlxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEV4dHJhY3RzIGEgZG93bmxvYWRlZCBkZW1vLXZhdWx0IGFyY2hpdmUgdG8gZGlzay5cbiAqXG4gKiBFeHRyYWN0aW9uIGlzIHdyaXR0ZW4gd2l0aCBFbGVjdHJvbidzIGBvcmlnaW5hbC1mc2Ag4oCUIHRoZSByZWFsIGBmc2Agd2l0aCBhc2FyIGludGVyY2VwdGlvbiBkaXNhYmxlZCDigJRcbiAqIHJhdGhlciB0aGFuIHdpdGggYG5vZGU6ZnNgLiBBIGRlbW8gdmF1bHQgbWF5IHNoaXAgYSBmaWxlIHRoYXQgbWVyZWx5IExPT0tTIGxpa2UgYW4gRWxlY3Ryb24gYXJjaGl2ZVxuICogKGUuZy4gYF9hc3NldHMvQ29kZVNjcmlwdFRvb2xraXQvbW9kdWxlLmFzYXJgIGRlbW9uc3RyYXRpbmcgdGhlIEFTQVIgcmVxdWlyZSBmZWF0dXJlKSwgYW5kIEVsZWN0cm9uJ3NcbiAqIGFzYXIgbGF5ZXIgaW50ZXJjZXB0cyBgZnNgIG9wZXJhdGlvbnMgb24gYW55IHBhdGggY29udGFpbmluZyBgLmFzYXJgLCB0cmVhdGluZyBpdCBhcyBhbiBhcmNoaXZlIHJvb3RcbiAqIHJhdGhlciB0aGFuIGEgcGxhaW4gZmlsZS4gVGhhdCBhbHJlYWR5IGNvc3Qgb25lIHByb2R1Y3Rpb24gYnVnIHdoZW4gdGhlIGV4dHJhY3RvciBgY2htb2RgLWVkIHN1Y2ggYVxuICogZmlsZSBhbmQgZ290IGBFTk9FTlRgOyBub3RoaW5nIGBjaG1vZGBzIGFueSBtb3JlLCBidXQgd3JpdGluZyB0aG9zZSBieXRlcyB0aHJvdWdoIHRoZSBjb3B5IHRoYXQgaGFzIG5vXG4gKiBhc2FyIGxheWVyIGNvc3RzIG5vdGhpbmcgYW5kIGtlZXBzIHRoZSB3aG9sZSBjbGFzcyBvZiBmYWlsdXJlIG9mZiB0aGlzIHBhdGguIGBvcmlnaW5hbC1mc2AgaXMgYSBkZXNrdG9wLW9ubHlcbiAqIEVsZWN0cm9uIG1vZHVsZSB3aXRoIG5vIGJ1bmRsZWQgdHlwZXMsIHNvIGl0IGlzIGxvYWRlZCB2aWEgYHdpbmRvdy5yZXF1aXJlYCBhbmQgdHlwZWQgYXMgYG5vZGU6ZnNgJ3NcbiAqIHNoYXBlLlxuICpcbiAqIEBwYXJhbSBhcmNoaXZlIC0gVGhlIHJhdyB6aXAgYXJjaGl2ZSBieXRlcy5cbiAqIEBwYXJhbSB0YXJnZXREaXJlY3RvcnkgLSBUaGUgZGlyZWN0b3J5IHRvIGV4dHJhY3QgaW50by5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdERlbW9WYXVsdEFyY2hpdmUoYXJjaGl2ZTogQnVmZmVyLCB0YXJnZXREaXJlY3Rvcnk6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBvcmlnaW5hbEZzID0gd2luZG93LnJlcXVpcmUoJ25vZGU6b3JpZ2luYWwtZnMnKSBhcyB0eXBlb2YgaW1wb3J0KCdub2RlOmZzJyk7XG4gIGV4dHJhY3RaaXBBcmNoaXZlKHtcbiAgICBhcmNoaXZlLFxuICAgIGZpbGVTeXN0ZW06IG9yaWdpbmFsRnMsXG4gICAgdGFyZ2V0RGlyZWN0b3J5XG4gIH0pO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBhcmNoaXZlIGludG8gYSBmcmVzaCwgdW5pcXVlbHktbmFtZWQgdGVtcG9yYXJ5IGZvbGRlciBhbmQgcmV0dXJucyB0aGUgdmF1bHQgcGF0aC5cbiAqXG4gKiBBIHVuaXF1ZSBwYXJlbnQgZm9sZGVyIChgbWtkdGVtcFN5bmNgKSBndWFyYW50ZWVzIGEgYnJhbmQtbmV3IGV4dHJhY3Rpb24gZXZlcnkgdGltZSDigJQgdGhlIGRlbW8gdmF1bHRcbiAqIGlzIG5ldmVyIHJldXNlZCBhY3Jvc3Mgb3BlbnMsIHNvIGEgcHJldmlvdXMgc2Vzc2lvbidzIGVkaXRzIG5ldmVyIGxlYWsgaW4uIFRoZSBhcmNoaXZlIGlzIGV4dHJhY3RlZFxuICogaW50byB0aGF0IHBhcmVudCBhbmQgdGhlIHZhdWx0IGlzIHRoZSBzaW5nbGUgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQtPHZlcnNpb24+YCBmb2xkZXIgaXQgY29udGFpbnMsIHNvXG4gKiBPYnNpZGlhbidzIHZhdWx0IHN3aXRjaGVyIHNob3dzIGEgZnJpZW5kbHkgbmFtZSAoaXRzIGJhc2VuYW1lKSByYXRoZXIgdGhhbiB0aGUgcmFuZG9tIHRlbXAgaWQuXG4gKlxuICogVGhhdCBmb2xkZXIgaXMgbm90IHNlYXJjaGVkIGZvcjoge0BsaW5rIGdldERlbW9WYXVsdEZvbGRlck5hbWV9IG5hbWVzIGl0IG9uIGJvdGggc2lkZXMsIHNvIHRoZSBwYXRoIGlzXG4gKiBrbm93biBiZWZvcmUgYSBieXRlIGlzIHdyaXR0ZW4uIFdoaWNoIGtlZXBzIHRoZSBleHRyYWN0b3IgZnJlZSBvZiBhbnkgcmVhZCDigJQgZGVsaWJlcmF0ZSwgYmVjYXVzZVxuICogRWxlY3Ryb24ncyBhc2FyIGxheWVyIGludGVyY2VwdHMgYGZzYCByZWFkcyBvbiBhbnkgcGF0aCBjb250YWluaW5nIGAuYXNhcmAsIGFuZCBhIGRlbW8gdmF1bHQgbWF5XG4gKiBsZWdpdGltYXRlbHkgc2hpcCBzdWNoIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBFeHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlclBhcmFtc30uXG4gKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZnJlc2hseSBleHRyYWN0ZWQgdmF1bHQgZm9sZGVyLlxuICovXG5mdW5jdGlvbiBleHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlcihwYXJhbXM6IEV4dHJhY3REZW1vVmF1bHRUb0ZyZXNoRm9sZGVyUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3QgeyBhcmNoaXZlLCBwbHVnaW5JZCwgdmVyc2lvbiB9ID0gcGFyYW1zO1xuICBjb25zdCBleHRyYWN0ZWRWYXVsdHNSb290ID0gam9pbih0bXBkaXIoKSwgREVNT19WQVVMVFNfQ0FDSEVfRk9MREVSLCBFWFRSQUNURURfVkFVTFRTX1NVQkZPTERFUik7XG4gIG1rZGlyU3luYyhleHRyYWN0ZWRWYXVsdHNSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3QgdW5pcXVlUGFyZW50RGlyZWN0b3J5ID0gbWtkdGVtcFN5bmMoam9pbihleHRyYWN0ZWRWYXVsdHNSb290LCBgJHtwbHVnaW5JZH0tJHt2ZXJzaW9ufS1gKSk7XG4gIGV4dHJhY3REZW1vVmF1bHRBcmNoaXZlKGFyY2hpdmUsIHVuaXF1ZVBhcmVudERpcmVjdG9yeSk7XG4gIHJldHVybiBqb2luKFxuICAgIHVuaXF1ZVBhcmVudERpcmVjdG9yeSxcbiAgICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lKHtcbiAgICAgIHBsdWdpbklkLFxuICAgICAgdmVyc2lvblxuICAgIH0pXG4gICk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGRlbW8tdmF1bHQgYXJjaGl2ZSBieXRlcyBmb3IgYSB2ZXJzaW9uLCBkb3dubG9hZGluZyBhbmQgY2FjaGluZyB0aGVtIG9uIGZpcnN0IHVzZS5cbiAqXG4gKiBPbmx5IHRoZSBhcmNoaXZlIGlzIGNhY2hlZCAoa2V5ZWQgYnkgcGx1Z2luIGlkICsgdmVyc2lvbik7IHRoZSBleHRyYWN0ZWQgdmF1bHQgaXMgbm90LiBBIGNhY2hlIGhpdCBpc1xuICogcmV0dXJuZWQgd2l0aG91dCBhbnkgbmV0d29yayByZXF1ZXN0OyBhIG1pc3MgZG93bmxvYWRzIHRoZSByZWxlYXNlIGFzc2V0LCB3cml0ZXMgaXQgdG8gdGhlIGFyY2hpdmVcbiAqIGNhY2hlLCBhbmQgcmV0dXJucyB0aGUgZnJlc2hseSBkb3dubG9hZGVkIGJ5dGVzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUgYXJjaGl2ZSBieXRlcywgb3IgYG51bGxgIHdoZW4gbm8gYXJjaGl2ZSBpcyBhdmFpbGFibGUgZm9yXG4gKiB0aGUgdmVyc2lvbiAoYSBub3RpY2UgaGFzIGJlZW4gc2hvd24pLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZShwYXJhbXM6IFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gIGNvbnN0IHtcbiAgICBwbHVnaW5JZCxcbiAgICBwbHVnaW5OYW1lLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgICBwcm9ncmVzc05vdGljZSxcbiAgICByZXBvLFxuICAgIHZlcnNpb25cbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBhcmNoaXZlc0RpcmVjdG9yeSA9IGpvaW4odG1wZGlyKCksIERFTU9fVkFVTFRTX0NBQ0hFX0ZPTERFUiwgQVJDSElWRVNfU1VCRk9MREVSKTtcbiAgY29uc3QgYXJjaGl2ZVBhdGggPSBqb2luKGFyY2hpdmVzRGlyZWN0b3J5LCBgJHtwbHVnaW5JZH0tJHt2ZXJzaW9ufS56aXBgKTtcbiAgaWYgKGV4aXN0c1N5bmMoYXJjaGl2ZVBhdGgpKSB7XG4gICAgcmV0dXJuIHJlYWRGaWxlU3luYyhhcmNoaXZlUGF0aCk7XG4gIH1cblxuICBwcm9ncmVzc05vdGljZS5zZXRDb250ZW50KGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYERvd25sb2FkaW5nIGRlbW8gdmF1bHQgZm9yICR7YXNDb2RlQmxvY2socGx1Z2luTmFtZSl9IHYke3ZlcnNpb2594oCmYCkpO1xuICBjb25zdCBhc3NldFVybCA9IGBodHRwczovL2dpdGh1Yi5jb20vJHtyZXBvfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7Z2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKHBsdWdpbklkKX1gO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmwoe1xuICAgIHRocm93OiBmYWxzZSxcbiAgICB1cmw6IGFzc2V0VXJsXG4gIH0pO1xuICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSBIVFRQX1NUQVRVU19PSykge1xuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYE5vIGRlbW8gdmF1bHQgaXMgYXZhaWxhYmxlIGZvciBwbHVnaW4gJHthc0NvZGVCbG9jayhwbHVnaW5OYW1lKX0gdiR7dmVyc2lvbn0uYCkpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYXJjaGl2ZSA9IEJ1ZmZlci5mcm9tKHJlc3BvbnNlLmFycmF5QnVmZmVyKTtcbiAgbWtkaXJTeW5jKGFyY2hpdmVzRGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhhcmNoaXZlUGF0aCwgYXJjaGl2ZSk7XG4gIHJldHVybiBhcmNoaXZlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQ0EsbUNBQWtDO0FBQ2xDLGtCQUFxQjtBQUNyQiw4QkFBZ0M7QUFDaEMseUJBQXVCO0FBQ3ZCLHFCQVNPO0FBQ1AscUJBQXVCO0FBQ3ZCLHNCQUEyQjtBQU8zQiwrQkFHTztBQUNQLHFDQUFpQztBQUNqQywrQkFHTztBQUNQLDBCQUdPO0FBQ1AsMkJBQTZCO0FBaUQ3QixNQUFNLDJCQUEyQjtBQUNqQyxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLDZCQUE2QjtBQUNuQyxNQUFNLGlCQUFpQjtBQUV2QixNQUFNLG1EQUFtRDtBQWV6RCxlQUFzQixjQUFjLFFBQTRDO0FBZTlFO0FBQUE7QUFkQSxVQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFRSixVQUFNLGlCQUFpQixzQ0FBc0IscUJBQXFCO0FBQUEsTUFDaEUsYUFBUyxrREFBNkIsOEJBQTBCLGlDQUFZLFVBQVUsQ0FB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
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEb3dubG9hZHMgYW5kIG9wZW5zIGEgcGx1Z2luJ3Mgc2hpcHBlZCBkZW1vIHZhdWx0IGluIGEgbmV3IE9ic2lkaWFuIHdpbmRvdyAoZGVza3RvcCBvbmx5KS5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gYXR0YWNoIGEgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCBhcmNoaXZlIHRvIGVhY2ggR2l0SHViIHJlbGVhc2UgKHNlZVxuICogYGFyY2hpdmVQbHVnaW5EZW1vVmF1bHRgIGluIGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2A7IGV2ZXJ5IG5hbWUgc2hhcmVkIHdpdGggaXQgY29tZXMgZnJvbVxuICogYGRlbW8tdmF1bHQtbmFtaW5nLnRzYCkuIFRoaXMgcmVzb2x2ZXMgdGhlIHBsdWdpbidzIHJlcG9zaXRvcnkgZnJvbSBPYnNpZGlhbidzIGNvbW11bml0eSByZWdpc3RyeSxcbiAqIGRvd25sb2FkcyB0aGUgYXJjaGl2ZSBmb3IgdGhlIGNob3NlbiB2ZXJzaW9uLCBhbmQgb3BlbnMgaXQgYXMgYSB2YXVsdCBpbiBhIG5ldyB3aW5kb3cuIFdoZW4gdGhlXG4gKiBpbnN0YWxsZWQgcGx1Z2luIHZlcnNpb24gaXMgYmVoaW5kIHRoZSBsYXRlc3QgcmVsZWFzZSwgdGhlIHVzZXIgaXMgb2ZmZXJlZCBhIGNob2ljZSBiZXR3ZWVuIHRoZSB0d29cbiAqIHZlcnNpb25zLlxuICpcbiAqIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duIGltbWVkaWF0ZWx5IChkb3dubG9hZCArIGV4dHJhY3Rpb24gY2FuIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWVcbiAqIHNvbWV0aGluZyBpcyBoYXBwZW5pbmcgcmlnaHQgYXdheSkuIE9ubHkgdGhlIGRvd25sb2FkZWQgQVJDSElWRSBpcyBjYWNoZWQgKHVuZGVyIHRoZSBPUyB0ZW1wXG4gKiBkaXJlY3RvcnkpOyBldmVyeSBpbnZvY2F0aW9uIGV4dHJhY3RzIGEgRlJFU0ggY29weSBpbnRvIGl0cyBvd24gdGVtcG9yYXJ5IGZvbGRlciBhbmQgb3BlbnMgdGhhdCwgc28gYVxuICogcHJldmlvdXMgc2Vzc2lvbidzIGVkaXRzIG5ldmVyIGxlYWsgaW50byBhIG5ldyBvbmUuIFRoZSB2YXVsdCBmb2xkZXIgaXMgdGhlIGFyY2hpdmUncyBvd24gc2luZ2xlXG4gKiB0b3AtbGV2ZWwgZm9sZGVyLCBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj5gLCB3aGljaCByZWFkcyBuaWNlbHkgaW4gT2JzaWRpYW4ncyB2YXVsdCBzd2l0Y2hlclxuICogYW5kIGlzIHRoZSBzYW1lIG5hbWUgYSBoYW5kLXVuemlwcGVkIGFyY2hpdmUgcHJvZHVjZXMuIE9ycGhhbmVkIGV4dHJhY3RlZCBmb2xkZXJzIGxlZnQgb3ZlciBmcm9tXG4gKiBlYXJsaWVyIHNlc3Npb25zIGFyZSBjbGVhbmVkIHVwIChiZXN0LWVmZm9ydCkgb24gZWFjaCBvcGVuLlxuICpcbiAqICoqTm90aGluZyBoZXJlIG1heSB0b3VjaCBhIHBsYXRmb3JtLW9ubHkgQVBJIHdoaWxlIHRoZSBtb2R1bGUgSU5JVElBTElaRVMuKiogVGhlIGBub2RlOmAgaW1wb3J0cyBiZWxvd1xuICogYXJlIHNhZmUgdG8gbWVyZWx5IGV2YWx1YXRlIG9uIG1vYmlsZSDigJQgYHJlcXVpcmVgIGhhbmRzIGJhY2sgYHVuZGVmaW5lZGAgdGhlcmUgYW5kIG5vdGhpbmcgcmVhZHMgaXQgYXRcbiAqIGxvYWQgdGltZSDigJQgYW5kIGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBiYXJyZWxzIHJlLWV4cG9ydCB0aGlzIG1vZHVsZSwgdGhhdCBpcyBhIGxvYWQtYmVhcmluZyBwcm9wZXJ0eSBvZlxuICogdGhlIHdob2xlIGxpYnJhcnkgcmF0aGVyIHRoYW4gYSBkZXRhaWwgb2YgdGhpcyBmaWxlLiBJdCB3YXMgbGVhcm5lZCB0aGUgaGFyZCB3YXk6IHRoaXMgbW9kdWxlIG9uY2VcbiAqIGltcG9ydGVkIGBhZG0temlwYCwgd2hvc2UgemlwLWNyeXB0byBtZXRob2Qgb3BlbnMgd2l0aCBhIHRvcC1sZXZlbFxuICogYGNvbnN0IHsgcmFuZG9tRmlsbFN5bmMgfSA9IHJlcXVpcmUoJ2NyeXB0bycpYCwgYW5kIGEgc3RhdGljIGBpbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnYCB0aGVyZWZvcmVcbiAqIGtpbGxlZCB0aGUgbGlicmFyeSdzIGxvYWQgb24gQW5kcm9pZCAoc2VlIHRoZSBtb2JpbGUtbG9hZCBjaGVjayBpblxuICogYHNjcmlwdHMvaGVscGVycy9hc3NlcnQtbW9iaWxlLWxvYWRhYmxlLWJ1bmRsZS50c2AsIHdoaWNoIGZhaWxzIHRoZSBidWlsZCBvbiBleGFjdGx5IHRoYXQpLiBFeHRyYWN0aW9uXG4gKiBub3cgZ29lcyB0aHJvdWdoIGBkZXNrdG9wLXppcC1leHRyYWN0b3IudHNgLCB3aGljaCBuZWVkcyBubyBkZXBlbmRlbmN5IGF0IGFsbCDigJQgYnV0IGFueSBmdXR1cmVcbiAqIGRlcGVuZGVuY3kgdGhhdCBpbml0aWFsaXplcyBhZ2FpbnN0IGEgcGxhdGZvcm0tb25seSBBUEkgc3RpbGwgaGFzIHRvIGJlIGRlZmVycmVkIGJlaGluZCBhIGNhbGwtdGltZVxuICogYGltcG9ydCgpYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZXh0cmFjdFppcEFyY2hpdmUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGVza3RvcC16aXAtZXh0cmFjdG9yJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ25vZGU6YnVmZmVyJztcbmltcG9ydCB7XG4gIGV4aXN0c1N5bmMsXG4gIG1rZGlyU3luYyxcbiAgbWtkdGVtcFN5bmMsXG4gIHJlYWRkaXJTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHJtU3luYyxcbiAgc3RhdFN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IHJlcXVlc3RVcmwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICBQbHVnaW5Ob3RpY2VDb21wb25lbnREZWxheWVkTm90aWNlXG59IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7XG4gIGdldENvbW11bml0eVBsdWdpblJlcG8sXG4gIGdldExhdGVzdFJlbGVhc2VWZXJzaW9uXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuaW1wb3J0IHsgUGx1Z2luTm90aWNlTW9kZSB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5pbXBvcnQge1xuICBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUsXG4gIGdldERlbW9WYXVsdEZvbGRlck5hbWVcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LW5hbWluZy50cyc7XG5pbXBvcnQge1xuICBhc0NvZGVCbG9jayxcbiAgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc1xufSBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5pbXBvcnQgeyBzZWxlY3RPcHRpb24gfSBmcm9tICcuL21vZGFscy9zZWxlY3Qtb3B0aW9uLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgb3BlbkRlbW9WYXVsdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkRlbW9WYXVsdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQsIHVzZWQgdG8gbG9jYXRlIHRoZSBHaXRIdWIgcmVwb3NpdG9yeSwgdG8gbmFtZSB0aGUgYXJjaGl2ZSBhc3NldCwgYW5kIHRvIG5hbWUgdGhlXG4gICAqIGNhY2hlZCBhcmNoaXZlIGFuZCB0aGUgZXh0cmFjdGVkIHZhdWx0IGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZGlzcGxheSBuYW1lLCB1c2VkIHRvIGxhYmVsIHRoZSBub3RpY2VzIGFuZCB0aGUgdmVyc2lvbi1jaG9pY2UgZGlhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90aWNlIGNvbXBvbmVudCB1c2VkIHRvIHJlcG9ydCBwcm9ncmVzcyBhbmQgcHJvYmxlbXMgKHBsdWdpbiBub3QgaW4gdGhlIHJlZ2lzdHJ5LCBtaXNzaW5nXG4gICAqIGFyY2hpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uLCBvZmZlcmVkIGFzIG9uZSBvZiB0aGUgdmVyc2lvbiBjaG9pY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luVmVyc2lvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXJQYXJhbXMge1xuICByZWFkb25seSBhcmNoaXZlOiBCdWZmZXI7XG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcbiAgcmVhZG9ubHkgcHJvZ3Jlc3NOb3RpY2U6IFBsdWdpbk5vdGljZUNvbXBvbmVudERlbGF5ZWROb3RpY2U7XG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5jb25zdCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIgPSAnb2JzaWRpYW4tZGVtby12YXVsdHMnO1xuY29uc3QgQVJDSElWRVNfU1VCRk9MREVSID0gJ2FyY2hpdmVzJztcbmNvbnN0IEVYVFJBQ1RFRF9WQVVMVFNfU1VCRk9MREVSID0gJ2V4dHJhY3RlZCc7XG5jb25zdCBIVFRQX1NUQVRVU19PSyA9IDIwMDtcbi8vIE9uZSBkYXkgaW4gbWlsbGlzZWNvbmRzICgyNCAqIDYwICogNjAgKiAxMDAwKS5cbmNvbnN0IE9SUEhBTkVEX0VYVFJBQ1RFRF9WQVVMVF9NQVhfQUdFX0lOX01JTExJU0VDT05EUyA9IDg2XzQwMF8wMDA7XG5cbi8qKlxuICogRG93bmxvYWRzIGFuZCBvcGVucyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCBpbiBhIG5ldyBPYnNpZGlhbiB3aW5kb3cuIERlc2t0b3Agb25seS5cbiAqXG4gKiBJZiB0aGUgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uIGlzIHRoZSBsYXRlc3QgKG9yIG5ld2VyKSwgaXRzIGRlbW8gdmF1bHQgb3BlbnMgZGlyZWN0bHk7IG90aGVyd2lzZVxuICogdGhlIHVzZXIgY2hvb3NlcyBiZXR3ZWVuIHRoZSBsYXRlc3QgYW5kIHRoZSBjdXJyZW50bHktaW5zdGFsbGVkIHZlcnNpb24uIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duXG4gKiBpbW1lZGlhdGVseS4gVGhlIGNob3NlbiB2ZXJzaW9uJ3MgYXJjaGl2ZSBpcyBkb3dubG9hZGVkIG9uY2UgKHRoZW4gcmV1c2VkIGZyb20gdGhlIGFyY2hpdmUgY2FjaGUpLFxuICogYnV0IGEgZnJlc2ggY29weSBpcyBleHRyYWN0ZWQgaW50byBpdHMgb3duIHRlbXBvcmFyeSBmb2xkZXIgb24gZXZlcnkgb3BlbiDigJQgdGhlIHZhdWx0IGlzIG5ldmVyIHJldXNlZFxuICogYWNyb3NzIHNlc3Npb25zLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIE9wZW5EZW1vVmF1bHRQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSB2YXVsdCBoYXMgYmVlbiBvcGVuZWQsIG9yIG9uY2UgdGhlIG9wZXJhdGlvbiBoYXNcbiAqIGJlZW4gcmVwb3J0ZWQgYXMgbm90IHBvc3NpYmxlIChub3RpY2Ugc2hvd24pIG9yIGNhbmNlbGxlZCBieSB0aGUgdXNlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5EZW1vVmF1bHQocGFyYW1zOiBPcGVuRGVtb1ZhdWx0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQsXG4gICAgcGx1Z2luTmFtZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQsXG4gICAgcGx1Z2luVmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIC8vIFNob3duIGltbWVkaWF0ZWx5IChgZGVsYXlJbk1pbGxpc2Vjb25kczogMGApOiByZXNvbHZpbmcgdGhlIHJlbGVhc2UsIGRvd25sb2FkaW5nIGFuZCBleHRyYWN0aW5nIGNhblxuICAvLyBlYWNoIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWUgcHJvZ3Jlc3MgdGhlIG1vbWVudCB0aGUgY29tbWFuZCBpcyBpbnZva2VkLlxuICAvL1xuICAvLyBLZXB0IG91dCBvZiB0aGUgc2hhcmVkIHNsb3QgKGBTZXBhcmF0ZWApLCBiZWNhdXNlIHRoaXMgdmVyeSBmdW5jdGlvbiByYWlzZXMgb3JkaW5hcnkgbm90aWNlcyB3aGlsZVxuICAvLyB0aGUgb3BlcmF0aW9uIGlzIHN0aWxsIHJ1bm5pbmcg4oCUIFwibm90IGluIHRoZSByZWdpc3RyeVwiLCBcIm5vIGRlbW8gdmF1bHQgZm9yIHRoaXMgdmVyc2lvblwiIOKAlCBhbmQgYVxuICAvLyBzbG90IG5vdGljZSB3b3VsZCBoaWRlIHRoZSBwcm9ncmVzcyBub3RpY2UgcmF0aGVyIHRoYW4gYXBwZWFyIGJlc2lkZSBpdC5cbiAgdXNpbmcgcHJvZ3Jlc3NOb3RpY2UgPSBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZUFmdGVyRGVsYXkoe1xuICAgIGNvbnRlbnQ6IGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYE9wZW5pbmcgZGVtbyB2YXVsdCBmb3IgJHthc0NvZGVCbG9jayhwbHVnaW5OYW1lKX3igKZgKSxcbiAgICBkZWxheUluTWlsbGlzZWNvbmRzOiAwLFxuICAgIG1vZGU6IFBsdWdpbk5vdGljZU1vZGUuU2VwYXJhdGVcbiAgfSk7XG5cbiAgY29uc3QgcmVwbyA9IGF3YWl0IGdldENvbW11bml0eVBsdWdpblJlcG8ocGx1Z2luSWQpO1xuICBpZiAoIXJlcG8pIHtcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZShjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzKGBDb3VsZCBub3QgZmluZCBwbHVnaW4gJHthc0NvZGVCbG9jayhwbHVnaW5OYW1lKX0gaW4gdGhlIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LmApKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IHBsdWdpblZlcnNpb247XG4gIGNvbnN0IGxhdGVzdFZlcnNpb24gPSBhd2FpdCBnZXRMYXRlc3RSZWxlYXNlVmVyc2lvbihyZXBvKTtcblxuICBsZXQgdmVyc2lvblRvT3Blbjogc3RyaW5nO1xuICBpZiAoY29tcGFyZVZlcnNpb25zKGN1cnJlbnRWZXJzaW9uLCBsYXRlc3RWZXJzaW9uKSA+PSAwKSB7XG4gICAgdmVyc2lvblRvT3BlbiA9IGN1cnJlbnRWZXJzaW9uO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNob3NlblZlcnNpb24gPSBhd2FpdCBzZWxlY3RPcHRpb248bnVsbCB8IHN0cmluZz4oe1xuICAgICAgYXBwLFxuICAgICAgbWVzc2FnZTogY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2NrcyhgQ3VycmVudCB2ZXJzaW9uIG9mIHBsdWdpbiAke2FzQ29kZUJsb2NrKHBsdWdpbk5hbWUpfSB2JHtjdXJyZW50VmVyc2lvbn0gaXMgbm90IHRoZSBsYXRlc3QgKHYke2xhdGVzdFZlcnNpb259KWApLFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgaXNDdGE6IHRydWUsXG4gICAgICAgICAgdGV4dDogYE9wZW4gZGVtbyB2YXVsdCBmb3IgbGF0ZXN0IHZlcnNpb24gKHYke2xhdGVzdFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGxhdGVzdFZlcnNpb25cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IGBPcGVuIGRlbW8gdmF1bHQgZm9yIGN1cnJlbnQgdmVyc2lvbiAodiR7Y3VycmVudFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRWZXJzaW9uXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgdGl0bGU6IGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYXNDb2RlQmxvY2socGx1Z2luTmFtZSkpXG4gICAgfSk7XG4gICAgaWYgKGNob3NlblZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVyc2lvblRvT3BlbiA9IGNob3NlblZlcnNpb247XG4gIH1cblxuICBjb25zdCBhcmNoaXZlID0gYXdhaXQgcmVzb2x2ZURlbW9WYXVsdEFyY2hpdmUoe1xuICAgIHBsdWdpbklkLFxuICAgIHBsdWdpbk5hbWUsXG4gICAgcGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICAgIHByb2dyZXNzTm90aWNlLFxuICAgIHJlcG8sXG4gICAgdmVyc2lvbjogdmVyc2lvblRvT3BlblxuICB9KTtcbiAgaWYgKCFhcmNoaXZlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJvZ3Jlc3NOb3RpY2Uuc2V0Q29udGVudChjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzKGBFeHRyYWN0aW5nIGRlbW8gdmF1bHQgZm9yICR7YXNDb2RlQmxvY2socGx1Z2luTmFtZSl9IHYke3ZlcnNpb25Ub09wZW594oCmYCkpO1xuICBjbGVhbnVwT3JwaGFuZWRFeHRyYWN0ZWRWYXVsdHMoKTtcbiAgY29uc3QgdmF1bHREaXJlY3RvcnkgPSBleHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlcih7XG4gICAgYXJjaGl2ZSxcbiAgICBwbHVnaW5JZCxcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uVG9PcGVuXG4gIH0pO1xuXG4gIHdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kU3luYygndmF1bHQtb3BlbicsIHZhdWx0RGlyZWN0b3J5LCBmYWxzZSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBleHRyYWN0ZWQgZGVtby12YXVsdCBmb2xkZXJzIGxlZnQgb3ZlciBmcm9tIGVhcmxpZXIgc2Vzc2lvbnMgKGJlc3QtZWZmb3J0KS5cbiAqXG4gKiBFdmVyeSBvcGVuIGV4dHJhY3RzIGEgZnJlc2ggY29weSBpbnRvIGl0cyBvd24gZm9sZGVyIGFuZCBuZXZlciBkZWxldGVzIGl0IGFmdGVyd2FyZHMgKHRoZSB2YXVsdCBzdGF5c1xuICogb3BlbiBpbiBpdHMgd2luZG93KSwgc28gdGhlc2UgYWNjdW11bGF0ZS4gVGhpcyBkcm9wcyBmb2xkZXJzIG9sZGVyIHRoYW5cbiAqIHtAbGluayBPUlBIQU5FRF9FWFRSQUNURURfVkFVTFRfTUFYX0FHRV9JTl9NSUxMSVNFQ09ORFN9LiBBIGZvbGRlciB3aG9zZSB2YXVsdCBpcyBzdGlsbCBvcGVuIGluIGFub3RoZXJcbiAqIHdpbmRvdyBpcyBsb2NrZWQgb24gV2luZG93cyBhbmQgY2Fubm90IGJlIHJlbW92ZWQg4oCUIHRoZSByZW1vdmFsIGlzIHdyYXBwZWQgc28gc3VjaCBhIGZvbGRlciBpcyBzaW1wbHlcbiAqIHNraXBwZWQgYW5kIHJldHJpZWQgb24gYSBsYXRlciBvcGVuLlxuICovXG5mdW5jdGlvbiBjbGVhbnVwT3JwaGFuZWRFeHRyYWN0ZWRWYXVsdHMoKTogdm9pZCB7XG4gIGNvbnN0IGV4dHJhY3RlZFZhdWx0c1Jvb3QgPSBqb2luKHRtcGRpcigpLCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIsIEVYVFJBQ1RFRF9WQVVMVFNfU1VCRk9MREVSKTtcbiAgaWYgKCFleGlzdHNTeW5jKGV4dHJhY3RlZFZhdWx0c1Jvb3QpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgZm9yIChjb25zdCBlbnRyeU5hbWUgb2YgcmVhZGRpclN5bmMoZXh0cmFjdGVkVmF1bHRzUm9vdCkpIHtcbiAgICBjb25zdCBlbnRyeVBhdGggPSBqb2luKGV4dHJhY3RlZFZhdWx0c1Jvb3QsIGVudHJ5TmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gc3RhdFN5bmMoZW50cnlQYXRoKTtcbiAgICAgIGlmIChub3cgLSBzdGF0cy5tdGltZU1zIDwgT1JQSEFORURfRVhUUkFDVEVEX1ZBVUxUX01BWF9BR0VfSU5fTUlMTElTRUNPTkRTKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcm1TeW5jKGVudHJ5UGF0aCwgeyBmb3JjZTogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQmVzdC1lZmZvcnQgY2xlYW51cDogYW4gb3JwaGFuIHdob3NlIHZhdWx0IGlzIHN0aWxsIG9wZW4gKGxvY2tlZCBvbiBXaW5kb3dzKSBjYW5ub3QgYmUgcmVtb3ZlZDsgc2tpcCBpdCBhbmQgcmV0cnkgb24gYSBsYXRlciBvcGVuLlxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEV4dHJhY3RzIGEgZG93bmxvYWRlZCBkZW1vLXZhdWx0IGFyY2hpdmUgdG8gZGlzay5cbiAqXG4gKiBFeHRyYWN0aW9uIGlzIHdyaXR0ZW4gd2l0aCBFbGVjdHJvbidzIGBvcmlnaW5hbC1mc2Ag4oCUIHRoZSByZWFsIGBmc2Agd2l0aCBhc2FyIGludGVyY2VwdGlvbiBkaXNhYmxlZCDigJRcbiAqIHJhdGhlciB0aGFuIHdpdGggYG5vZGU6ZnNgLiBBIGRlbW8gdmF1bHQgbWF5IHNoaXAgYSBmaWxlIHRoYXQgbWVyZWx5IExPT0tTIGxpa2UgYW4gRWxlY3Ryb24gYXJjaGl2ZVxuICogKGUuZy4gYF9hc3NldHMvQ29kZVNjcmlwdFRvb2xraXQvbW9kdWxlLmFzYXJgIGRlbW9uc3RyYXRpbmcgdGhlIEFTQVIgcmVxdWlyZSBmZWF0dXJlKSwgYW5kIEVsZWN0cm9uJ3NcbiAqIGFzYXIgbGF5ZXIgaW50ZXJjZXB0cyBgZnNgIG9wZXJhdGlvbnMgb24gYW55IHBhdGggY29udGFpbmluZyBgLmFzYXJgLCB0cmVhdGluZyBpdCBhcyBhbiBhcmNoaXZlIHJvb3RcbiAqIHJhdGhlciB0aGFuIGEgcGxhaW4gZmlsZS4gVGhhdCBhbHJlYWR5IGNvc3Qgb25lIHByb2R1Y3Rpb24gYnVnIHdoZW4gdGhlIGV4dHJhY3RvciBgY2htb2RgLWVkIHN1Y2ggYVxuICogZmlsZSBhbmQgZ290IGBFTk9FTlRgOyBub3RoaW5nIGBjaG1vZGBzIGFueSBtb3JlLCBidXQgd3JpdGluZyB0aG9zZSBieXRlcyB0aHJvdWdoIHRoZSBjb3B5IHRoYXQgaGFzIG5vXG4gKiBhc2FyIGxheWVyIGNvc3RzIG5vdGhpbmcgYW5kIGtlZXBzIHRoZSB3aG9sZSBjbGFzcyBvZiBmYWlsdXJlIG9mZiB0aGlzIHBhdGguIGBvcmlnaW5hbC1mc2AgaXMgYSBkZXNrdG9wLW9ubHlcbiAqIEVsZWN0cm9uIG1vZHVsZSB3aXRoIG5vIGJ1bmRsZWQgdHlwZXMsIHNvIGl0IGlzIGxvYWRlZCB2aWEgYHdpbmRvdy5yZXF1aXJlYCBhbmQgdHlwZWQgYXMgYG5vZGU6ZnNgJ3NcbiAqIHNoYXBlLlxuICpcbiAqIEBwYXJhbSBhcmNoaXZlIC0gVGhlIHJhdyB6aXAgYXJjaGl2ZSBieXRlcy5cbiAqIEBwYXJhbSB0YXJnZXREaXJlY3RvcnkgLSBUaGUgZGlyZWN0b3J5IHRvIGV4dHJhY3QgaW50by5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdERlbW9WYXVsdEFyY2hpdmUoYXJjaGl2ZTogQnVmZmVyLCB0YXJnZXREaXJlY3Rvcnk6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBvcmlnaW5hbEZzID0gd2luZG93LnJlcXVpcmUoJ25vZGU6b3JpZ2luYWwtZnMnKSBhcyB0eXBlb2YgaW1wb3J0KCdub2RlOmZzJyk7XG4gIGV4dHJhY3RaaXBBcmNoaXZlKHtcbiAgICBhcmNoaXZlLFxuICAgIGZpbGVTeXN0ZW06IG9yaWdpbmFsRnMsXG4gICAgdGFyZ2V0RGlyZWN0b3J5XG4gIH0pO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBhcmNoaXZlIGludG8gYSBmcmVzaCwgdW5pcXVlbHktbmFtZWQgdGVtcG9yYXJ5IGZvbGRlciBhbmQgcmV0dXJucyB0aGUgdmF1bHQgcGF0aC5cbiAqXG4gKiBBIHVuaXF1ZSBwYXJlbnQgZm9sZGVyIChgbWtkdGVtcFN5bmNgKSBndWFyYW50ZWVzIGEgYnJhbmQtbmV3IGV4dHJhY3Rpb24gZXZlcnkgdGltZSDigJQgdGhlIGRlbW8gdmF1bHRcbiAqIGlzIG5ldmVyIHJldXNlZCBhY3Jvc3Mgb3BlbnMsIHNvIGEgcHJldmlvdXMgc2Vzc2lvbidzIGVkaXRzIG5ldmVyIGxlYWsgaW4uIFRoZSBhcmNoaXZlIGlzIGV4dHJhY3RlZFxuICogaW50byB0aGF0IHBhcmVudCBhbmQgdGhlIHZhdWx0IGlzIHRoZSBzaW5nbGUgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQtPHZlcnNpb24+YCBmb2xkZXIgaXQgY29udGFpbnMsIHNvXG4gKiBPYnNpZGlhbidzIHZhdWx0IHN3aXRjaGVyIHNob3dzIGEgZnJpZW5kbHkgbmFtZSAoaXRzIGJhc2VuYW1lKSByYXRoZXIgdGhhbiB0aGUgcmFuZG9tIHRlbXAgaWQuXG4gKlxuICogVGhhdCBmb2xkZXIgaXMgbm90IHNlYXJjaGVkIGZvcjoge0BsaW5rIGdldERlbW9WYXVsdEZvbGRlck5hbWV9IG5hbWVzIGl0IG9uIGJvdGggc2lkZXMsIHNvIHRoZSBwYXRoIGlzXG4gKiBrbm93biBiZWZvcmUgYSBieXRlIGlzIHdyaXR0ZW4uIFdoaWNoIGtlZXBzIHRoZSBleHRyYWN0b3IgZnJlZSBvZiBhbnkgcmVhZCDigJQgZGVsaWJlcmF0ZSwgYmVjYXVzZVxuICogRWxlY3Ryb24ncyBhc2FyIGxheWVyIGludGVyY2VwdHMgYGZzYCByZWFkcyBvbiBhbnkgcGF0aCBjb250YWluaW5nIGAuYXNhcmAsIGFuZCBhIGRlbW8gdmF1bHQgbWF5XG4gKiBsZWdpdGltYXRlbHkgc2hpcCBzdWNoIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBFeHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlclBhcmFtc30uXG4gKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZnJlc2hseSBleHRyYWN0ZWQgdmF1bHQgZm9sZGVyLlxuICovXG5mdW5jdGlvbiBleHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlcihwYXJhbXM6IEV4dHJhY3REZW1vVmF1bHRUb0ZyZXNoRm9sZGVyUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3QgeyBhcmNoaXZlLCBwbHVnaW5JZCwgdmVyc2lvbiB9ID0gcGFyYW1zO1xuICBjb25zdCBleHRyYWN0ZWRWYXVsdHNSb290ID0gam9pbih0bXBkaXIoKSwgREVNT19WQVVMVFNfQ0FDSEVfRk9MREVSLCBFWFRSQUNURURfVkFVTFRTX1NVQkZPTERFUik7XG4gIG1rZGlyU3luYyhleHRyYWN0ZWRWYXVsdHNSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3QgdW5pcXVlUGFyZW50RGlyZWN0b3J5ID0gbWtkdGVtcFN5bmMoam9pbihleHRyYWN0ZWRWYXVsdHNSb290LCBgJHtwbHVnaW5JZH0tJHt2ZXJzaW9ufS1gKSk7XG4gIGV4dHJhY3REZW1vVmF1bHRBcmNoaXZlKGFyY2hpdmUsIHVuaXF1ZVBhcmVudERpcmVjdG9yeSk7XG4gIHJldHVybiBqb2luKFxuICAgIHVuaXF1ZVBhcmVudERpcmVjdG9yeSxcbiAgICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lKHtcbiAgICAgIHBsdWdpbklkLFxuICAgICAgdmVyc2lvblxuICAgIH0pXG4gICk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGRlbW8tdmF1bHQgYXJjaGl2ZSBieXRlcyBmb3IgYSB2ZXJzaW9uLCBkb3dubG9hZGluZyBhbmQgY2FjaGluZyB0aGVtIG9uIGZpcnN0IHVzZS5cbiAqXG4gKiBPbmx5IHRoZSBhcmNoaXZlIGlzIGNhY2hlZCAoa2V5ZWQgYnkgcGx1Z2luIGlkICsgdmVyc2lvbik7IHRoZSBleHRyYWN0ZWQgdmF1bHQgaXMgbm90LiBBIGNhY2hlIGhpdCBpc1xuICogcmV0dXJuZWQgd2l0aG91dCBhbnkgbmV0d29yayByZXF1ZXN0OyBhIG1pc3MgZG93bmxvYWRzIHRoZSByZWxlYXNlIGFzc2V0LCB3cml0ZXMgaXQgdG8gdGhlIGFyY2hpdmVcbiAqIGNhY2hlLCBhbmQgcmV0dXJucyB0aGUgZnJlc2hseSBkb3dubG9hZGVkIGJ5dGVzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUgYXJjaGl2ZSBieXRlcywgb3IgYG51bGxgIHdoZW4gbm8gYXJjaGl2ZSBpcyBhdmFpbGFibGUgZm9yXG4gKiB0aGUgdmVyc2lvbiAoYSBub3RpY2UgaGFzIGJlZW4gc2hvd24pLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZShwYXJhbXM6IFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gIGNvbnN0IHtcbiAgICBwbHVnaW5JZCxcbiAgICBwbHVnaW5OYW1lLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgICBwcm9ncmVzc05vdGljZSxcbiAgICByZXBvLFxuICAgIHZlcnNpb25cbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBhcmNoaXZlc0RpcmVjdG9yeSA9IGpvaW4odG1wZGlyKCksIERFTU9fVkFVTFRTX0NBQ0hFX0ZPTERFUiwgQVJDSElWRVNfU1VCRk9MREVSKTtcbiAgY29uc3QgYXJjaGl2ZVBhdGggPSBqb2luKGFyY2hpdmVzRGlyZWN0b3J5LCBgJHtwbHVnaW5JZH0tJHt2ZXJzaW9ufS56aXBgKTtcbiAgaWYgKGV4aXN0c1N5bmMoYXJjaGl2ZVBhdGgpKSB7XG4gICAgcmV0dXJuIHJlYWRGaWxlU3luYyhhcmNoaXZlUGF0aCk7XG4gIH1cblxuICBwcm9ncmVzc05vdGljZS5zZXRDb250ZW50KGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYERvd25sb2FkaW5nIGRlbW8gdmF1bHQgZm9yICR7YXNDb2RlQmxvY2socGx1Z2luTmFtZSl9IHYke3ZlcnNpb2594oCmYCkpO1xuICBjb25zdCBhc3NldFVybCA9IGBodHRwczovL2dpdGh1Yi5jb20vJHtyZXBvfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7Z2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKHBsdWdpbklkKX1gO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmwoe1xuICAgIHRocm93OiBmYWxzZSxcbiAgICB1cmw6IGFzc2V0VXJsXG4gIH0pO1xuICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSBIVFRQX1NUQVRVU19PSykge1xuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYE5vIGRlbW8gdmF1bHQgaXMgYXZhaWxhYmxlIGZvciBwbHVnaW4gJHthc0NvZGVCbG9jayhwbHVnaW5OYW1lKX0gdiR7dmVyc2lvbn0uYCkpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYXJjaGl2ZSA9IEJ1ZmZlci5mcm9tKHJlc3BvbnNlLmFycmF5QnVmZmVyKTtcbiAgbWtkaXJTeW5jKGFyY2hpdmVzRGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhhcmNoaXZlUGF0aCwgYXJjaGl2ZSk7XG4gIHJldHVybiBhcmNoaXZlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUNBLG1DQUFrQztBQUNsQyxrQkFBcUI7QUFDckIsOEJBQWdDO0FBQ2hDLHlCQUF1QjtBQUN2QixxQkFTTztBQUNQLHFCQUF1QjtBQUN2QixzQkFBMkI7QUFPM0IsK0JBR087QUFDUCxxQ0FBaUM7QUFDakMsK0JBR087QUFDUCwwQkFHTztBQUNQLDJCQUE2QjtBQWlEN0IsTUFBTSwyQkFBMkI7QUFDakMsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSw2QkFBNkI7QUFDbkMsTUFBTSxpQkFBaUI7QUFFdkIsTUFBTSxtREFBbUQ7QUFlekQsZUFBc0IsY0FBYyxRQUE0QztBQWU5RTtBQUFBO0FBZEEsVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixJQUFJO0FBUUosVUFBTSxpQkFBaUIsc0NBQXNCLHFCQUFxQjtBQUFBLE1BQ2hFLGFBQVMsa0RBQTZCLDhCQUEwQixpQ0FBWSxVQUFVLENB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
|