@mnaoumov/obsidian-lib 1.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/cjs/__merged.cjs +15 -1
- package/dist/lib/cjs/__merged.d.cts +5 -3
- package/dist/lib/cjs/app.cjs +1 -1
- package/dist/lib/cjs/attachment-path.cjs +62 -9
- package/dist/lib/cjs/attachment-path.d.cts +21 -43
- package/dist/lib/cjs/attachment-unit-folder.cjs +1 -1
- package/dist/lib/cjs/attachment-unit-folder.d.cts +8 -9
- package/dist/lib/cjs/components/plugin-notice-component.cjs +7 -2
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +3 -0
- package/dist/lib/cjs/components/release-notes-component.cjs +3 -2
- package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
- package/dist/lib/cjs/components/settings-migration-component.d.cts +6 -4
- package/dist/lib/cjs/dataview.cjs +1 -1
- package/dist/lib/cjs/dataview.d.cts +9 -3
- package/dist/lib/cjs/demo-vault-helper.cjs +3 -2
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +9 -8
- package/dist/lib/cjs/file-system.cjs +6 -1
- package/dist/lib/cjs/file-system.d.cts +7 -0
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/metadata-cache.cjs +25 -7
- package/dist/lib/cjs/metadata-cache.d.cts +8 -19
- package/dist/lib/cjs/plugin/index.cjs +4 -1
- package/dist/lib/cjs/plugin/index.d.cts +1 -0
- package/dist/lib/cjs/plugin/plugin-api-schema.cjs +171 -0
- package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +59 -0
- package/dist/lib/cjs/plugin/plugin-api.cjs +7 -1
- package/dist/lib/cjs/plugin/plugin-api.d.cts +83 -10
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +30 -1
- package/dist/lib/cjs/plugin/settings-migration-api.d.cts +16 -3
- package/dist/lib/esm/__merged.d.mts +5 -3
- package/dist/lib/esm/__merged.mjs +15 -1
- package/dist/lib/esm/app.mjs +1 -1
- package/dist/lib/esm/attachment-path.d.mts +21 -43
- package/dist/lib/esm/attachment-path.mjs +65 -9
- package/dist/lib/esm/attachment-unit-folder.d.mts +8 -9
- package/dist/lib/esm/attachment-unit-folder.mjs +1 -1
- package/dist/lib/esm/components/plugin-notice-component.d.mts +3 -0
- package/dist/lib/esm/components/plugin-notice-component.mjs +7 -2
- package/dist/lib/esm/components/release-notes-component.mjs +6 -2
- package/dist/lib/esm/components/settings-migration-component.d.mts +6 -4
- package/dist/lib/esm/components/settings-migration-component.mjs +5 -5
- package/dist/lib/esm/dataview.d.mts +9 -3
- package/dist/lib/esm/dataview.mjs +1 -1
- package/dist/lib/esm/demo-vault-helper.mjs +3 -2
- package/dist/lib/esm/desktop-demo-vault-opener.mjs +12 -8
- package/dist/lib/esm/file-system.d.mts +7 -0
- package/dist/lib/esm/file-system.mjs +5 -1
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/metadata-cache.d.mts +8 -19
- package/dist/lib/esm/metadata-cache.mjs +30 -8
- package/dist/lib/esm/plugin/index.d.mts +1 -0
- package/dist/lib/esm/plugin/index.mjs +3 -1
- package/dist/lib/esm/plugin/plugin-api-schema.d.mts +59 -0
- package/dist/lib/esm/plugin/plugin-api-schema.mjs +73 -0
- package/dist/lib/esm/plugin/plugin-api.d.mts +83 -10
- package/dist/lib/esm/plugin/plugin-api.mjs +6 -1
- package/dist/lib/esm/plugin/settings-migration-api.d.mts +16 -3
- package/dist/lib/esm/plugin/settings-migration-api.mjs +25 -1
- package/dist/styles.css +4 -1
- package/package.json +4 -135
- package/plugin/plugin-api-schema/package.json +6 -0
- package/@types/dataview/api/data-array/package.json +0 -4
- package/@types/dataview/api/extensions/package.json +0 -4
- package/@types/dataview/api/inline-api/package.json +0 -4
- package/@types/dataview/api/plugin-api/package.json +0 -4
- package/@types/dataview/api/result/package.json +0 -4
- package/@types/dataview/data-import/common/package.json +0 -4
- package/@types/dataview/data-import/csv/package.json +0 -4
- package/@types/dataview/data-import/inline-field/package.json +0 -4
- package/@types/dataview/data-import/markdown-file/package.json +0 -4
- package/@types/dataview/data-import/persister/package.json +0 -4
- package/@types/dataview/data-import/web-worker/import-entry/package.json +0 -4
- package/@types/dataview/data-import/web-worker/import-impl/package.json +0 -4
- package/@types/dataview/data-import/web-worker/import-manager/package.json +0 -4
- package/@types/dataview/data-index/index/package.json +0 -4
- package/@types/dataview/data-index/package.json +0 -4
- package/@types/dataview/data-index/resolver/package.json +0 -4
- package/@types/dataview/data-index/source/package.json +0 -4
- package/@types/dataview/data-model/markdown/package.json +0 -4
- package/@types/dataview/data-model/serialized/markdown/package.json +0 -4
- package/@types/dataview/data-model/transferable/package.json +0 -4
- package/@types/dataview/data-model/value/package.json +0 -4
- package/@types/dataview/expression/binaryop/package.json +0 -4
- package/@types/dataview/expression/context/package.json +0 -4
- package/@types/dataview/expression/field/package.json +0 -4
- package/@types/dataview/expression/functions/package.json +0 -4
- package/@types/dataview/expression/parse/package.json +0 -4
- package/@types/dataview/index/package.json +0 -4
- package/@types/dataview/main/package.json +0 -4
- package/@types/dataview/package.json +0 -4
- package/@types/dataview/query/engine/package.json +0 -4
- package/@types/dataview/query/parse/package.json +0 -4
- package/@types/dataview/query/query/package.json +0 -4
- package/@types/dataview/settings/package.json +0 -4
- package/@types/dataview/typings/obsidian-ex/package.json +0 -4
- package/@types/dataview/typings/workers/package.json +0 -4
- package/@types/dataview/ui/export/markdown/package.json +0 -4
- package/@types/dataview/ui/lp-render/package.json +0 -4
- package/@types/dataview/ui/markdown/package.json +0 -4
- package/@types/dataview/ui/refreshable-view/package.json +0 -4
- package/@types/dataview/ui/render/package.json +0 -4
- package/@types/dataview/ui/views/calendar-view/package.json +0 -4
- package/@types/dataview/ui/views/inline-field-live-preview/package.json +0 -4
- package/@types/dataview/ui/views/inline-view/package.json +0 -4
- package/@types/dataview/ui/views/js-view/package.json +0 -4
- package/@types/dataview/ui/views/list-view/package.json +0 -4
- package/@types/dataview/ui/views/table-view/package.json +0 -4
- package/@types/dataview/ui/views/task-view/package.json +0 -4
- package/@types/dataview/util/hash/package.json +0 -4
- package/@types/dataview/util/locale/package.json +0 -4
- package/@types/dataview/util/media/package.json +0 -4
- package/@types/dataview/util/normalize/package.json +0 -4
- package/dist/lib/cjs/@types/dataview/api/data-array.d.cts +0 -137
- package/dist/lib/cjs/@types/dataview/api/extensions.d.cts +0 -16
- package/dist/lib/cjs/@types/dataview/api/inline-api.d.cts +0 -187
- package/dist/lib/cjs/@types/dataview/api/plugin-api.d.cts +0 -210
- package/dist/lib/cjs/@types/dataview/api/result.d.cts +0 -39
- package/dist/lib/cjs/@types/dataview/data-import/common.d.cts +0 -4
- package/dist/lib/cjs/@types/dataview/data-import/csv.d.cts +0 -4
- package/dist/lib/cjs/@types/dataview/data-import/inline-field.d.cts +0 -43
- package/dist/lib/cjs/@types/dataview/data-import/markdown-file.d.cts +0 -53
- package/dist/lib/cjs/@types/dataview/data-import/persister.d.cts +0 -33
- package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-entry.d.cts +0 -2
- package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-impl.d.cts +0 -7
- package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-manager.d.cts +0 -38
- package/dist/lib/cjs/@types/dataview/data-index/index.d.cts +0 -187
- package/dist/lib/cjs/@types/dataview/data-index/resolver.d.cts +0 -24
- package/dist/lib/cjs/@types/dataview/data-index/source.d.cts +0 -72
- package/dist/lib/cjs/@types/dataview/data-model/markdown.d.cts +0 -116
- package/dist/lib/cjs/@types/dataview/data-model/serialized/markdown.d.cts +0 -107
- package/dist/lib/cjs/@types/dataview/data-model/transferable.d.cts +0 -8
- package/dist/lib/cjs/@types/dataview/data-model/value.d.cts +0 -176
- package/dist/lib/cjs/@types/dataview/expression/binaryop.d.cts +0 -44
- package/dist/lib/cjs/@types/dataview/expression/context.d.cts +0 -50
- package/dist/lib/cjs/@types/dataview/expression/field.d.cts +0 -83
- package/dist/lib/cjs/@types/dataview/expression/functions.d.cts +0 -150
- package/dist/lib/cjs/@types/dataview/expression/parse.d.cts +0 -164
- package/dist/lib/cjs/@types/dataview/index.d.cts +0 -56
- package/dist/lib/cjs/@types/dataview/main.d.cts +0 -53
- package/dist/lib/cjs/@types/dataview/query/engine.d.cts +0 -104
- package/dist/lib/cjs/@types/dataview/query/parse.d.cts +0 -45
- package/dist/lib/cjs/@types/dataview/query/query.d.cts +0 -96
- package/dist/lib/cjs/@types/dataview/settings.d.cts +0 -61
- package/dist/lib/cjs/@types/dataview/typings/obsidian-ex.d.cts +0 -29
- package/dist/lib/cjs/@types/dataview/typings/workers.d.cts +0 -5
- package/dist/lib/cjs/@types/dataview/ui/export/markdown.d.cts +0 -16
- package/dist/lib/cjs/@types/dataview/ui/lp-render.d.cts +0 -38
- package/dist/lib/cjs/@types/dataview/ui/markdown.d.cts +0 -87
- package/dist/lib/cjs/@types/dataview/ui/refreshable-view.d.cts +0 -19
- package/dist/lib/cjs/@types/dataview/ui/render.d.cts +0 -34
- package/dist/lib/cjs/@types/dataview/ui/views/calendar-view.d.cts +0 -18
- package/dist/lib/cjs/@types/dataview/ui/views/inline-field-live-preview.d.cts +0 -43
- package/dist/lib/cjs/@types/dataview/ui/views/inline-view.d.cts +0 -29
- package/dist/lib/cjs/@types/dataview/ui/views/js-view.d.cts +0 -24
- package/dist/lib/cjs/@types/dataview/ui/views/list-view.d.cts +0 -26
- package/dist/lib/cjs/@types/dataview/ui/views/table-view.d.cts +0 -29
- package/dist/lib/cjs/@types/dataview/ui/views/task-view.d.cts +0 -52
- package/dist/lib/cjs/@types/dataview/util/hash.d.cts +0 -2
- package/dist/lib/cjs/@types/dataview/util/locale.d.cts +0 -3
- package/dist/lib/cjs/@types/dataview/util/media.d.cts +0 -7
- package/dist/lib/cjs/@types/dataview/util/normalize.d.cts +0 -45
- package/dist/lib/esm/@types/dataview/api/data-array.d.mts +0 -137
- package/dist/lib/esm/@types/dataview/api/extensions.d.mts +0 -16
- package/dist/lib/esm/@types/dataview/api/inline-api.d.mts +0 -187
- package/dist/lib/esm/@types/dataview/api/plugin-api.d.mts +0 -210
- package/dist/lib/esm/@types/dataview/api/result.d.mts +0 -39
- package/dist/lib/esm/@types/dataview/data-import/common.d.mts +0 -4
- package/dist/lib/esm/@types/dataview/data-import/csv.d.mts +0 -4
- package/dist/lib/esm/@types/dataview/data-import/inline-field.d.mts +0 -43
- package/dist/lib/esm/@types/dataview/data-import/markdown-file.d.mts +0 -53
- package/dist/lib/esm/@types/dataview/data-import/persister.d.mts +0 -33
- package/dist/lib/esm/@types/dataview/data-import/web-worker/import-entry.d.mts +0 -2
- package/dist/lib/esm/@types/dataview/data-import/web-worker/import-impl.d.mts +0 -7
- package/dist/lib/esm/@types/dataview/data-import/web-worker/import-manager.d.mts +0 -38
- package/dist/lib/esm/@types/dataview/data-index/index.d.mts +0 -187
- package/dist/lib/esm/@types/dataview/data-index/resolver.d.mts +0 -24
- package/dist/lib/esm/@types/dataview/data-index/source.d.mts +0 -72
- package/dist/lib/esm/@types/dataview/data-model/markdown.d.mts +0 -116
- package/dist/lib/esm/@types/dataview/data-model/serialized/markdown.d.mts +0 -107
- package/dist/lib/esm/@types/dataview/data-model/transferable.d.mts +0 -8
- package/dist/lib/esm/@types/dataview/data-model/value.d.mts +0 -176
- package/dist/lib/esm/@types/dataview/expression/binaryop.d.mts +0 -44
- package/dist/lib/esm/@types/dataview/expression/context.d.mts +0 -50
- package/dist/lib/esm/@types/dataview/expression/field.d.mts +0 -83
- package/dist/lib/esm/@types/dataview/expression/functions.d.mts +0 -150
- package/dist/lib/esm/@types/dataview/expression/parse.d.mts +0 -164
- package/dist/lib/esm/@types/dataview/index.d.mts +0 -56
- package/dist/lib/esm/@types/dataview/main.d.mts +0 -53
- package/dist/lib/esm/@types/dataview/query/engine.d.mts +0 -104
- package/dist/lib/esm/@types/dataview/query/parse.d.mts +0 -45
- package/dist/lib/esm/@types/dataview/query/query.d.mts +0 -96
- package/dist/lib/esm/@types/dataview/settings.d.mts +0 -61
- package/dist/lib/esm/@types/dataview/typings/obsidian-ex.d.mts +0 -29
- package/dist/lib/esm/@types/dataview/typings/workers.d.mts +0 -5
- package/dist/lib/esm/@types/dataview/ui/export/markdown.d.mts +0 -16
- package/dist/lib/esm/@types/dataview/ui/lp-render.d.mts +0 -38
- package/dist/lib/esm/@types/dataview/ui/markdown.d.mts +0 -87
- package/dist/lib/esm/@types/dataview/ui/refreshable-view.d.mts +0 -19
- package/dist/lib/esm/@types/dataview/ui/render.d.mts +0 -34
- package/dist/lib/esm/@types/dataview/ui/views/calendar-view.d.mts +0 -18
- package/dist/lib/esm/@types/dataview/ui/views/inline-field-live-preview.d.mts +0 -43
- package/dist/lib/esm/@types/dataview/ui/views/inline-view.d.mts +0 -29
- package/dist/lib/esm/@types/dataview/ui/views/js-view.d.mts +0 -24
- package/dist/lib/esm/@types/dataview/ui/views/list-view.d.mts +0 -26
- package/dist/lib/esm/@types/dataview/ui/views/table-view.d.mts +0 -29
- package/dist/lib/esm/@types/dataview/ui/views/task-view.d.mts +0 -52
- package/dist/lib/esm/@types/dataview/util/hash.d.mts +0 -2
- package/dist/lib/esm/@types/dataview/util/locale.d.mts +0 -3
- package/dist/lib/esm/@types/dataview/util/media.d.mts +0 -7
- package/dist/lib/esm/@types/dataview/util/normalize.d.mts +0 -45
|
@@ -277,4 +277,4 @@ export {
|
|
|
277
277
|
renderPaginatedList,
|
|
278
278
|
renderPaginatedTable
|
|
279
279
|
};
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBEYXRhdmlldyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb252ZXJ0QXN5bmNUb1N5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHsgZXJyb3JUb1N0cmluZyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9lcnJvcic7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB0eXBlIHsgRGF0YXZpZXdJbmxpbmVBcGkgYXMgRGF0YXZpZXdJbmxpbmVBcGlPcmlnaW5hbCB9IGZyb20gJy4vQHR5cGVzL2RhdGF2aWV3L2FwaS9pbmxpbmUtYXBpLmQudHMnO1xuaW1wb3J0IHR5cGUge1xuICBEYXRhQXJyYXksXG4gIERhdGF2aWV3QXBpLFxuICBTTWFya2Rvd25QYWdlXG59IGZyb20gJy4vQHR5cGVzL2RhdGF2aWV3L2luZGV4LmQudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0UGF0aFxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9yZXNvdXJjZS11cmwudHMnO1xuXG4vKipcbiAqIEV4cG9ydCBEYXRlVGltZSBhbmQgTGluayB0eXBlcyBmcm9tIHRoZSBEYXRhdmlldyBBUEkuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgRGF0ZVRpbWUsXG4gIExpbmtcbn0gZnJvbSAnLi9AdHlwZXMvZGF0YXZpZXcvaW5kZXguZC50cyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3QXBpfSBvYmplY3QgcmVwcmVzZW50cyB0aGUgQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIERhdGF2aWV3IGluIE9ic2lkaWFuLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhcnMtb24tdG9wIC0tIEl0IGlzIGEgYHZhcmAgaW4gbW9kdWxlIGRlY2xhcmF0aW9uLiBFU0xpbnQgbWlzdGFrZW5seSBjb25mdXNlcyBpdCB3aXRoIGB2YXJgIGFzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQSBjb21iaW5lZCBwYWdlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25QYWdlLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4gPSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiAmIFNNYXJrZG93blBhZ2U7XG5cbi8qKlxuICogRXh0ZW5kZWQgaW50ZXJmYWNlIGZvciB0aGUgRGF0YXZpZXcgSW5saW5lIEFQSSwgcHJvdmlkaW5nIGFkZGl0aW9uYWwgbWV0aG9kcyBmb3IgY3VzdG9tIHBhZ2UgdHlwZXMgYW5kIGFycmF5IGhhbmRsaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGF2aWV3SW5saW5lQXBpIGV4dGVuZHMgRGF0YXZpZXdJbmxpbmVBcGlPcmlnaW5hbCB7XG4gIC8qKlxuICAgKiBXcmFwcyBhbiBhcnJheSBvZiBpdGVtcyBpbnRvIGEge0BsaW5rIERhdGFBcnJheX0gb2JqZWN0LlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LlxuICAgKiBAcGFyYW0gYXJyYXkgLSBUaGUgYXJyYXkgb2YgaXRlbXMgdG8gd3JhcC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgRGF0YUFycmF5fSBjb250YWluaW5nIHRoZSBpdGVtcy5cbiAgICovXG4gIGFycmF5OiA8VD4oYXJyYXk6IFRbXSkgPT4gRGF0YUFycmF5PFQ+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgcGFnZSwgd2l0aCBhbiBvcHRpb25hbCBjdXN0b20gcGFnZSB0eXBlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIGN1cnJlbnQ6IDxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KCkgPT4gQ29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyPjtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHBhZ2VzIGJhc2VkIG9uIGFuIG9wdGlvbmFsIHF1ZXJ5LCB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSBwYWdlIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICAgKiBAcGFyYW0gcXVlcnkgLSBBbiBvcHRpb25hbCBzdHJpbmcgcXVlcnkgdG8gZmlsdGVyIHRoZSBwYWdlcy5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgRGF0YUFycmF5fSBvZiBwYWdlcyBtYXRjaGluZyB0aGUgcXVlcnkuXG4gICAqL1xuICBwYWdlczogPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4ocXVlcnk/OiBzdHJpbmcpID0+IERhdGFBcnJheTxDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXI+PjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBhcmFncmFwaCBIVE1MIGVsZW1lbnQgd2l0aCB0aGUgcHJvdmlkZWQgdGV4dCBhbmQgb3B0aW9uYWwgRE9NIGVsZW1lbnQgb3B0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUaGUgY29udGVudCBvZiB0aGUgcGFyYWdyYXBoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIERPTSBlbGVtZW50IG9wdGlvbnMsIGluY2x1ZGluZyBhbiBvcHRpb25hbCBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnQuXG4gICAqL1xuICBwYXJhZ3JhcGg6IChcbiAgICB0ZXh0OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBEb21FbGVtZW50SW5mb1dpdGhDb250YWluZXJcbiAgKSA9PiBIVE1MUGFyYWdyYXBoRWxlbWVudDtcbn1cblxuLyoqXG4gKiBEb21FbGVtZW50SW5mbyB3aXRoIGFuIG9wdGlvbmFsIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IHR5cGUgRG9tRWxlbWVudEluZm9XaXRoQ29udGFpbmVyID0gQ29udGFpbmVySW5mbyAmIERvbUVsZW1lbnRJbmZvO1xuXG4vKipcbiAqIEEgY29tYmluZWQgZmlsZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duRmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUZpbGUgPSBTTWFya2Rvd25QYWdlWydmaWxlJ107XG5cbi8qKlxuICogTGlzdCBvZiBwYWdlIGZpbGVzLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZXMgPSBBcnJheU9yRGF0YUFycmF5PFBhZ2VGaWxlPjtcblxuaW50ZXJmYWNlIENvbnRhaW5lckluZm8ge1xuICBjb250YWluZXI/OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBSZWxvYWRzIHRoZSBjdXJyZW50IGZpbGUgY2FjaGUgdXNpbmcgdGhlIERhdGF2aWV3IEFQSS5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNhY2hlIGlzIHJlbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVsb2FkQ3VycmVudEZpbGVDYWNoZShkdjogRGF0YXZpZXdJbmxpbmVBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgYWN0aXZlV2luZG93LkRhdGF2aWV3QVBJPy5pbmRleC5yZWxvYWQoZ2V0RmlsZSh7XG4gICAgYXBwOiBkdi5hcHAsXG4gICAgcGF0aE9yRmlsZTogZHYuY3VycmVudCgpLmZpbGUucGF0aFxuICB9KSk7XG59XG5cbmNvbnN0IHBhZ2luYXRpb25Dc3MgPSBgXG4ucGFnaW5hdGlvbiAucGFnZS1saW5rLmRpc2FibGVkIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGNvbG9yOiBncmF5O1xufVxuXG4ucGFnaW5hdGlvbiAucGFnZS1saW5rIHtcbiAgbWFyZ2luOiAwIDVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBibHVlO1xufVxuXG4ucGFnaW5hdGlvbiAucGFnZS1saW5rOmhvdmVyOm5vdCguZGlzYWJsZWQpIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4ucGFnaW5hdGlvbiAucGFnZS1saW5rLmN1cnJlbnQge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5wYWdpbmF0aW9uIHNlbGVjdCxcbi5wYWdpbmF0aW9uIGlucHV0IHtcbiAgbWFyZ2luOiAwIDVweDtcbn1cbmA7XG5cbi8qKlxuICogQXJyYXkgb3IgRGF0YUFycmF5IHR5cGUuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGVsZW1lbnRzLlxuICovXG5leHBvcnQgdHlwZSBBcnJheU9yRGF0YUFycmF5PFQ+ID0gRGF0YUFycmF5PFQ+IHwgVFtdO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbnNlcnRDb2RlQmxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc2VydENvZGVCbG9ja1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY29kZSBjb250ZW50IHRvIGJlIGluc2VydGVkIGludG8gdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICByZWFkb25seSBjb2RlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZSB0byBpbnNlcnQgdGhlIGNvZGUgYmxvY2sgaW50by5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogVGhlIGxhbmd1YWdlIGlkZW50aWZpZXIgZm9yIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFuZ3VhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVySWZyYW1lfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJJZnJhbWVQYXJhbXMge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGhlaWdodCBvZiB0aGUgaWZyYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJzYwMHB4J2BcbiAgICovXG4gIHJlYWRvbmx5IGhlaWdodD86IHN0cmluZztcblxuICAvKipcbiAgICogQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSByZXNvdXJjZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGlmcmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGF0aXZlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSB3aWR0aCBvZiB0aGUgaWZyYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJzEwMCUnYFxuICAgKi9cbiAgcmVhZG9ubHkgd2lkdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlclBhZ2luYXRlZExpc3R9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBsaXN0IGl0ZW1zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZExpc3RQYXJhbXM8VD4ge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYFsxMCwgMjAsIDUwLCAxMDBdYFxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlT3B0aW9ucz86IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgaXRlbXMgdG8gcGFnaW5hdGUuXG4gICAqL1xuICByZWFkb25seSByb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJQYWdpbmF0ZWR9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyB0byBwYWdpbmF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRQYXJhbXM8VD4ge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYFsxMCwgMjAsIDUwLCAxMDBdYFxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlT3B0aW9ucz86IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHRoZSBwYWdpbmF0ZWQgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHJvd3NGb3JPbmVQYWdlIC0gVGhlIHJvd3MgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbnRlbnQgaXMgcmVuZGVyZWQuXG4gICAqL1xuICByZWFkb25seSByZW5kZXJlcjogKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSb3dzIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkVGFibGV9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB0YWJsZSByb3cgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRUYWJsZVBhcmFtczxUPiB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVhZGVycyBvZiB0aGUgdGFibGUuXG4gICAqL1xuICByZWFkb25seSBoZWFkZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogUm93cyBvZiB0aGUgdGFibGUgdG8gcGFnaW5hdGUuXG4gICAqL1xuICByZWFkb25seSByb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjcmVhdGVQYWdlTGlua30uXG4gKi9cbmludGVyZmFjZSBDcmVhdGVQYWdlTGlua1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcGFnZSBudW1iZXIgdGhlIGxpbmsgcG9pbnRzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VycmVudFBhZ2VOdW1iZXI6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbGluayBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICByZWFkb25seSB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgY29udGVudCB1c2luZyB0aGUgcHJvdmlkZWQgcmVuZGVyZXIgZnVuY3Rpb24gaW4gYSB0ZW1wb3JhcnkgY29udGFpbmVyLFxuICogYW5kIHRoZW4gcmV0dXJucyB0aGUgY29udGFpbmVyLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqIEBwYXJhbSByZW5kZXJlciAtIFRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5nIHRoZSBjb250ZW50LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgSFRNTCBwYXJhZ3JhcGggZWxlbWVudFxuICogdGhhdCB3YXMgdXNlZCBhcyB0aGUgdGVtcG9yYXJ5IGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJlbmRlcmVkQ29udGFpbmVyKGR2OiBEYXRhdmlld0lubGluZUFwaSwgcmVuZGVyZXI6ICgpID0+IFByb21pc2FibGU8dm9pZD4pOiBQcm9taXNlPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiB7XG4gIGNvbnN0IG9sZENvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcbiAgY29uc3QgdGVtcG9yYXJ5Q29udGFpbmVyID0gZHYucGFyYWdyYXBoKCcnKTtcbiAgZHYuY29udGFpbmVyID0gdGVtcG9yYXJ5Q29udGFpbmVyO1xuICBkdi5jb250YWluZXIuZW1wdHkoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IHJlbmRlcmVyKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZHYucGFyYWdyYXBoKGBcdTI3NEMke2Vycm9yVG9TdHJpbmcoZXJyb3IpfWApO1xuICB9IGZpbmFsbHkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzIC0tIFllcywgaXQgaXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24sIGJ1dCBJIGRvbid0IGFuIGVsZWdhbnQgd2F5IHRvIGZpeCBpdC5cbiAgICBkdi5jb250YWluZXIgPSBvbGRDb250YWluZXI7XG4gICAgdGVtcG9yYXJ5Q29udGFpbmVyLnJlbW92ZSgpO1xuICB9XG5cbiAgcmV0dXJuIHRlbXBvcmFyeUNvbnRhaW5lcjtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIGEgY29kZSBibG9jayBpbnRvIHRoZSBzcGVjaWZpZWQgRGF0YXZpZXcgaW5zdGFuY2UgdXNpbmcgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIGFuZCBjb2RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgaW5zZXJ0aW5nIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29kZUJsb2NrKHBhcmFtczogSW5zZXJ0Q29kZUJsb2NrUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBjb2RlLFxuICAgIGR2LFxuICAgIGxhbmd1YWdlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IE1JTl9GRU5DRV9MRU5HVEggPSAzO1xuICBjb25zdCBmZW5jZVJlZ0V4cCA9IG5ldyBSZWdFeHAoYF5cXGB7JHtTdHJpbmcoTUlOX0ZFTkNFX0xFTkdUSCl9LH1gLCAnZ20nKTtcbiAgY29uc3QgZmVuY2VNYXRjaGVzID0gY29kZS5tYXRjaEFsbChmZW5jZVJlZ0V4cCk7XG4gIGNvbnN0IGZlbmNlTGVuZ3RocyA9IFsuLi5mZW5jZU1hdGNoZXNdLm1hcCgoZmVuY2VNYXRjaCkgPT4gZmVuY2VNYXRjaFswXS5sZW5ndGgpO1xuICBjb25zdCBtYXhGZW5jZUxlbmd0aCA9IE1hdGgubWF4KDAsIC4uLmZlbmNlTGVuZ3Rocyk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlTGVuZ3RoID0gTWF0aC5tYXgoTUlOX0ZFTkNFX0xFTkdUSCwgbWF4RmVuY2VMZW5ndGggKyAxKTtcbiAgY29uc3QgcmVzdWx0RmVuY2UgPSAnYCcucmVwZWF0KHJlc3VsdEZlbmNlTGVuZ3RoKTtcblxuICBkdi5wYXJhZ3JhcGgoYCR7cmVzdWx0RmVuY2V9JHtsYW5ndWFnZX1cbiR7Y29kZX1cbiR7cmVzdWx0RmVuY2V9YCk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhbiBpZnJhbWUgaW4gdGhlIERhdGF2aWV3IGNvbnRhaW5lciB3aXRoIHRoZSBzcGVjaWZpZWQgcmVsYXRpdmUgcGF0aCwgd2lkdGgsIGFuZCBoZWlnaHQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIGlmcmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcklmcmFtZShwYXJhbXM6IFJlbmRlcklmcmFtZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgaGVpZ2h0ID0gJzYwMHB4JyxcbiAgICByZWxhdGl2ZVBhdGhPckZpbGUsXG4gICAgd2lkdGggPSAnMTAwJSdcbiAgfSA9IHBhcmFtcztcbiAgZHYuZWwoJ2lmcmFtZScsICcnLCB7XG4gICAgYXR0cjoge1xuICAgICAgaGVpZ2h0LFxuICAgICAgc3JjOiByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsKHtcbiAgICAgICAgYXBwOiBkdi5hcHAsXG4gICAgICAgIG5vdGVQYXRoOiBkdi5jdXJyZW50KCkuZmlsZS5wYXRoLFxuICAgICAgICByZWxhdGl2ZVBhdGg6IGdldFBhdGgoZHYuYXBwLCByZWxhdGl2ZVBhdGhPckZpbGUpXG4gICAgICB9KSxcbiAgICAgIHdpZHRoXG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgcGFnaW5hdGVkIGxpc3QgdXNpbmcgdGhlIHByb3ZpZGVkIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIGluIHRoZSBsaXN0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgbGlzdC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxpc3QgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRMaXN0PFQ+KHBhcmFtczogUmVuZGVyUGFnaW5hdGVkTGlzdFBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gcGFyYW1zO1xuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWQoe1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMsXG4gICAgcmVuZGVyZXI6IGFzeW5jIChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgZHYubGlzdChyb3dzRm9yT25lUGFnZSk7XG4gICAgfSxcbiAgICByb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgdGFibGUgdXNpbmcgdGhlIHByb3ZpZGVkIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIGluIHRoZSB0YWJsZSByb3dzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgdGFibGUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0YWJsZSBpcyByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZFRhYmxlPFQgZXh0ZW5kcyB1bmtub3duW10+KHBhcmFtczogUmVuZGVyUGFnaW5hdGVkVGFibGVQYXJhbXM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlYWRlcnMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gcGFyYW1zO1xuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWQoe1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMsXG4gICAgcmVuZGVyZXI6IGFzeW5jIChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgZHYudGFibGUoaGVhZGVycywgcm93c0Zvck9uZVBhZ2UpO1xuICAgIH0sXG4gICAgcm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVuZGVyIHBhZ2luYXRlZCBjb250ZW50IHVzaW5nIHRoZSBzcGVjaWZpZWQgcmVuZGVyZXIuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCBjb250ZW50LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29udGVudCBpcyByZW5kZXJlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkPFQ+KHBhcmFtczogUmVuZGVyUGFnaW5hdGVkUGFyYW1zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IFNFQ09ORF9QQUdFX05VTUJFUiA9IDI7XG4gIGNvbnN0IE1PUkVfUEFHRV9OVU1CRVIgPSAzO1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gcGFyYW1zO1xuICBpZiAocm93cy5sZW5ndGggPT09IDApIHtcbiAgICBkdi5wYXJhZ3JhcGgoJ05vIGl0ZW1zIGZvdW5kJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGNvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcbiAgbGV0IGl0ZW1zUGVyUGFnZSA9IGVuc3VyZU5vbk51bGxhYmxlKGl0ZW1zUGVyUGFnZU9wdGlvbnNbMF0sICdJdGVtcyBwZXIgcGFnZSBvcHRpb25zIGFyZSBlbXB0eScpO1xuICBsZXQgdG90YWxQYWdlcyA9IE1hdGguY2VpbChyb3dzLmxlbmd0aCAvIGl0ZW1zUGVyUGFnZSk7XG4gIGF3YWl0IHJlbmRlclBhZ2UoMSk7XG5cbiAgZnVuY3Rpb24gY3JlYXRlUGFnaW5hdGlvbkNvbnRyb2xzKHBhZ2VOdW1iZXI6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2luYXRpb25EaXYgPSBjb250YWluZXIuY3JlYXRlRGl2KHsgY2xzOiAncGFnaW5hdGlvbicgfSk7XG4gICAgY29uc3QgcGFnaW5hdGlvblJvdzFEaXYgPSBwYWdpbmF0aW9uRGl2LmNyZWF0ZURpdigpO1xuXG4gICAgY3JlYXRlUGFnZUxpbmsoeyBjdXJyZW50UGFnZU51bWJlcjogMSwgZGlzYWJsZWQ6IHBhZ2VOdW1iZXIgPT09IDEsIHRleHQ6ICdGaXJzdCcgfSk7XG4gICAgY3JlYXRlUGFnZUxpbmsoeyBjdXJyZW50UGFnZU51bWJlcjogcGFnZU51bWJlciAtIDEsIGRpc2FibGVkOiBwYWdlTnVtYmVyID09PSAxLCB0ZXh0OiAnUHJldicgfSk7XG5cbiAgICBpZiAocGFnZU51bWJlciA+IE1PUkVfUEFHRV9OVU1CRVIpIHtcbiAgICAgIHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiAnLi4uJyB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IE1hdGgubWF4KDEsIHBhZ2VOdW1iZXIgLSBTRUNPTkRfUEFHRV9OVU1CRVIpOyBpbmRleCA8PSBNYXRoLm1pbih0b3RhbFBhZ2VzLCBwYWdlTnVtYmVyICsgU0VDT05EX1BBR0VfTlVNQkVSKTsgaW5kZXgrKykge1xuICAgICAgY29uc3QgcGFnZUxpbmsgPSBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiBpbmRleCwgZGlzYWJsZWQ6IGluZGV4ID09PSBwYWdlTnVtYmVyLCB0ZXh0OiBTdHJpbmcoaW5kZXgpIH0pO1xuICAgICAgaWYgKGluZGV4ID09PSBwYWdlTnVtYmVyKSB7XG4gICAgICAgIHBhZ2VMaW5rLmFkZENsYXNzKCdjdXJyZW50Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhZ2VOdW1iZXIgPCB0b3RhbFBhZ2VzIC0gU0VDT05EX1BBR0VfTlVNQkVSKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVTcGFuKHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFnZUxpbmsoeyBjdXJyZW50UGFnZU51bWJlcjogcGFnZU51bWJlciArIDEsIGRpc2FibGVkOiBwYWdlTnVtYmVyID09PSB0b3RhbFBhZ2VzLCB0ZXh0OiAnTmV4dCcgfSk7XG4gICAgY3JlYXRlUGFnZUxpbmsoeyBjdXJyZW50UGFnZU51bWJlcjogdG90YWxQYWdlcywgZGlzYWJsZWQ6IHBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXMsIHRleHQ6ICdMYXN0JyB9KTtcblxuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cyRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiBgICR7dCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3Lml0ZW1zUGVyUGFnZSl9IGAgfSk7XG5cbiAgICBjb25zdCBpdGVtc1BlclBhZ2VTZWxlY3QgPSBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnc2VsZWN0Jyk7XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgaXRlbXNQZXJQYWdlT3B0aW9ucykge1xuICAgICAgaXRlbXNQZXJQYWdlU2VsZWN0LmNyZWF0ZUVsKCdvcHRpb24nLCB7IHRleHQ6IFN0cmluZyhvcHRpb24pLCB2YWx1ZTogU3RyaW5nKG9wdGlvbikgfSk7XG4gICAgfVxuICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSA9IFN0cmluZyhpdGVtc1BlclBhZ2UpO1xuICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NoYW5nZScsXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpdGVtc1BlclBhZ2UgPSBwYXJzZUludChpdGVtc1BlclBhZ2VTZWxlY3QudmFsdWUsIDEwKTtcbiAgICAgICAgdG90YWxQYWdlcyA9IE1hdGguY2VpbChyb3dzLmxlbmd0aCAvIGl0ZW1zUGVyUGFnZSk7XG4gICAgICAgIGF3YWl0IHJlbmRlclBhZ2UoMSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVTcGFuKHsgdGV4dDogYCAke3QoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5kYXRhdmlldy5qdW1wVG9QYWdlKX0gYCB9KTtcblxuICAgIGNvbnN0IGp1bXBUb1BhZ2VJbnB1dCA9IHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdpbnB1dCcsIHsgYXR0cjogeyBtYXg6IHRvdGFsUGFnZXMsIG1pbjogMSB9LCB0eXBlOiAnbnVtYmVyJyB9KTtcbiAgICBqdW1wVG9QYWdlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBwYXJzZUludChqdW1wVG9QYWdlSW5wdXQudmFsdWUsIDEwKTtcbiAgICAgICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKHBhZ2UpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVTcGFuKHsgdGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3LnBhZ2VIZWFkZXIsIHsgcGFnZU51bWJlciwgdG90YWxJdGVtczogcm93cy5sZW5ndGgsIHRvdGFsUGFnZXMgfSkgfSk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVQYWdlTGluayhwYXJhbXMyOiBDcmVhdGVQYWdlTGlua1BhcmFtcyk6IEhUTUxBbmNob3JFbGVtZW50IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY3VycmVudFBhZ2VOdW1iZXIsXG4gICAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICAgIHRleHRcbiAgICAgIH0gPSBwYXJhbXMyO1xuICAgICAgY29uc3QgbGluayA9IHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZUVsKCdhJywgeyBjbHM6ICdwYWdlLWxpbmsnLCBocmVmOiBgIyR7U3RyaW5nKGN1cnJlbnRQYWdlTnVtYmVyKX1gLCB0ZXh0IH0pO1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIGxpbmsuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1hZGQtZXZlbnQtbGlzdGVuZXIgLS0gVGhlIGhhbmRsZXIgaXMgYXNzaWduZWQgdG8gYG9uY2xpY2tgIHNvIGl0IHN0YXlzIHJlYWRhYmxlIGJhY2sgb2ZmIHRoZSBlbGVtZW50LCB3aGljaCBpcyBob3cgaXQgaXMgaW52b2tlZCBpbiB0ZXN0cyBhbmQgaG93IGEgbGF0ZXIgYXNzaWdubWVudCBjYW4gcmVwbGFjZSBpdC5cbiAgICAgICAgbGluay5vbmNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1hZGQtZXZlbnQtbGlzdGVuZXIgLS0gVGhlIGhhbmRsZXIgaXMgYXNzaWduZWQgdG8gYG9uY2xpY2tgIHNvIGl0IHN0YXlzIHJlYWRhYmxlIGJhY2sgb2ZmIHRoZSBlbGVtZW50LCB3aGljaCBpcyBob3cgaXQgaXMgaW52b2tlZCBpbiB0ZXN0cyBhbmQgaG93IGEgbGF0ZXIgYXNzaWdubWVudCBjYW4gcmVwbGFjZSBpdC5cbiAgICAgICAgbGluay5vbmNsaWNrID0gY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogTW91c2VFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYXdhaXQgcmVuZGVyUGFnZShjdXJyZW50UGFnZU51bWJlcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnZShwYWdlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb250YWluZXIuZW1wdHkoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9uby1mb3JiaWRkZW4tZWxlbWVudHMgLS0gV2UgbmVlZCB0byBjcmVhdGUgYSBzdHlsZSBlbGVtZW50IHRvIGFwcGx5IHRoZSBwYWdpbmF0aW9uIENTUy5cbiAgICBjb250YWluZXIuY3JlYXRlRWwoJ3N0eWxlJywgeyB0ZXh0OiBwYWdpbmF0aW9uQ3NzIH0pO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChwYWdlTnVtYmVyIC0gMSkgKiBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgaXRlbXNQZXJQYWdlO1xuICAgIGNvbnN0IHJvd3NGb3JDdXJyZW50UGFnZSA9IHJvd3Muc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuXG4gICAgY29uc3Qgb2xkQ29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuXG4gICAgZHYuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBwYXJhbXMucmVuZGVyZXIocm93c0ZvckN1cnJlbnRQYWdlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZHYucGFyYWdyYXBoKGBcdTI3NEMke2Vycm9yVG9TdHJpbmcoZXJyb3IpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlcyAtLSBZZXMsIGl0IGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLCBidXQgSSBkb24ndCBhbiBlbGVnYW50IHdheSB0byBmaXggaXQuXG4gICAgICBkdi5jb250YWluZXIgPSBvbGRDb250YWluZXI7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFnaW5hdGlvbkNvbnRyb2xzKHBhZ2VOdW1iZXIpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMs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
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBEYXRhdmlldyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERhdGFBcnJheSxcbiAgRGF0YXZpZXdBcGksXG4gIFNNYXJrZG93blBhZ2Vcbn0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWRhdGF2aWV3JztcbmltcG9ydCB0eXBlIHsgRGF0YXZpZXdJbmxpbmVBcGkgYXMgRGF0YXZpZXdJbmxpbmVBcGlPcmlnaW5hbCB9IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1kYXRhdmlldy9hcGkvaW5saW5lLWFwaSc7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb252ZXJ0QXN5bmNUb1N5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHsgZXJyb3JUb1N0cmluZyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9lcnJvcic7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5cbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldFBhdGhcbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHsgcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybCB9IGZyb20gJy4vcmVzb3VyY2UtdXJsLnRzJztcblxuLyoqXG4gKiBFeHBvcnQgRGF0ZVRpbWUgYW5kIExpbmsgdHlwZXMgZnJvbSB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIERhdGVUaW1lLFxuICBMaW5rXG59IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1kYXRhdmlldyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3QXBpfSBvYmplY3QgcmVwcmVzZW50cyB0aGUgQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIERhdGF2aWV3IGluIE9ic2lkaWFuLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhcnMtb24tdG9wIC0tIEl0IGlzIGEgYHZhcmAgaW4gbW9kdWxlIGRlY2xhcmF0aW9uLiBFU0xpbnQgbWlzdGFrZW5seSBjb25mdXNlcyBpdCB3aXRoIGB2YXJgIGFzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG5cbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgLyoqXG4gICAgICogVGhlIGdsb2JhbCB7QGxpbmsgRGF0YXZpZXdBcGl9IG9iamVjdCBEYXRhdmlldyBpbnN0YWxscyBvbiBldmVyeSB3aW5kb3cuXG4gICAgICovXG4gICAgRGF0YXZpZXdBUEk/OiBEYXRhdmlld0FwaTtcbiAgfVxufVxuXG4vKipcbiAqIEEgY29tYmluZWQgcGFnZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duUGFnZS5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250bWF0dGVyIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+ID0gQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4gJiBTTWFya2Rvd25QYWdlO1xuXG4vKipcbiAqIEV4dGVuZGVkIGludGVyZmFjZSBmb3IgdGhlIERhdGF2aWV3IElubGluZSBBUEksIHByb3ZpZGluZyBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGN1c3RvbSBwYWdlIHR5cGVzIGFuZCBhcnJheSBoYW5kbGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhdmlld0lubGluZUFwaSBleHRlbmRzIERhdGF2aWV3SW5saW5lQXBpT3JpZ2luYWwge1xuICAvKipcbiAgICogV3JhcHMgYW4gYXJyYXkgb2YgaXRlbXMgaW50byBhIHtAbGluayBEYXRhQXJyYXl9IG9iamVjdC5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGluIHRoZSBhcnJheS5cbiAgICogQHBhcmFtIGFycmF5IC0gVGhlIGFycmF5IG9mIGl0ZW1zIHRvIHdyYXAuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERhdGFBcnJheX0gY29udGFpbmluZyB0aGUgaXRlbXMuXG4gICAqL1xuICBhcnJheTogPFQ+KGFycmF5OiBUW10pID0+IERhdGFBcnJheTxUPjtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHBhZ2UsIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHBhZ2UuXG4gICAqL1xuICBjdXJyZW50OiA8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPigpID0+IENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlcj47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBwYWdlcyBiYXNlZCBvbiBhbiBvcHRpb25hbCBxdWVyeSwgd2l0aCBhbiBvcHRpb25hbCBjdXN0b20gcGFnZSB0eXBlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAgICogQHBhcmFtIHF1ZXJ5IC0gQW4gb3B0aW9uYWwgc3RyaW5nIHF1ZXJ5IHRvIGZpbHRlciB0aGUgcGFnZXMuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERhdGFBcnJheX0gb2YgcGFnZXMgbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcGFnZXM6IDxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KHF1ZXJ5Pzogc3RyaW5nKSA9PiBEYXRhQXJyYXk8Q29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyPj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYXJhZ3JhcGggSFRNTCBlbGVtZW50IHdpdGggdGhlIHByb3ZpZGVkIHRleHQgYW5kIG9wdGlvbmFsIERPTSBlbGVtZW50IG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGhlIGNvbnRlbnQgb2YgdGhlIHBhcmFncmFwaC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLCBpbmNsdWRpbmcgYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBIVE1MIHBhcmFncmFwaCBlbGVtZW50LlxuICAgKi9cbiAgcGFyYWdyYXBoOiAoXG4gICAgdGV4dDogdW5rbm93bixcbiAgICBvcHRpb25zPzogRG9tRWxlbWVudEluZm9XaXRoQ29udGFpbmVyXG4gICkgPT4gSFRNTFBhcmFncmFwaEVsZW1lbnQ7XG59XG5cbi8qKlxuICogRG9tRWxlbWVudEluZm8gd2l0aCBhbiBvcHRpb25hbCBjb250YWluZXIuXG4gKi9cbmV4cG9ydCB0eXBlIERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lciA9IENvbnRhaW5lckluZm8gJiBEb21FbGVtZW50SW5mbztcblxuLyoqXG4gKiBBIGNvbWJpbmVkIGZpbGUgdHlwZSwgd2hpY2ggaW5jbHVkZXMgdGhlIGZyb250IG1hdHRlciBhbmQgdGhlIFNNYXJrZG93bkZpbGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VGaWxlID0gU01hcmtkb3duUGFnZVsnZmlsZSddO1xuXG4vKipcbiAqIExpc3Qgb2YgcGFnZSBmaWxlcy5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUZpbGVzID0gQXJyYXlPckRhdGFBcnJheTxQYWdlRmlsZT47XG5cbmludGVyZmFjZSBDb250YWluZXJJbmZvIHtcbiAgY29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG59XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgY3VycmVudCBmaWxlIGNhY2hlIHVzaW5nIHRoZSBEYXRhdmlldyBBUEkuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjYWNoZSBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZEN1cnJlbnRGaWxlQ2FjaGUoZHY6IERhdGF2aWV3SW5saW5lQXBpKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGFjdGl2ZVdpbmRvdy5EYXRhdmlld0FQST8uaW5kZXgucmVsb2FkKGdldEZpbGUoe1xuICAgIGFwcDogZHYuYXBwLFxuICAgIHBhdGhPckZpbGU6IGR2LmN1cnJlbnQoKS5maWxlLnBhdGhcbiAgfSkpO1xufVxuXG5jb25zdCBwYWdpbmF0aW9uQ3NzID0gYFxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjb2xvcjogZ3JheTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluayB7XG4gIG1hcmdpbjogMCA1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogYmx1ZTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluazpob3Zlcjpub3QoLmRpc2FibGVkKSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5jdXJyZW50IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ucGFnaW5hdGlvbiBzZWxlY3QsXG4ucGFnaW5hdGlvbiBpbnB1dCB7XG4gIG1hcmdpbjogMCA1cHg7XG59XG5gO1xuXG4vKipcbiAqIEFycmF5IG9yIERhdGFBcnJheSB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5zZXJ0Q29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDb2RlQmxvY2tQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvZGUgY29udGVudCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UgdG8gaW5zZXJ0IHRoZSBjb2RlIGJsb2NrIGludG8uXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIGZvciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlcklmcmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQSBoZWlnaHQgb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCc2MDBweCdgXG4gICAqL1xuICByZWFkb25seSBoZWlnaHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgcmVzb3VyY2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpZnJhbWUuXG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgd2lkdGggb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcxMDAlJ2BcbiAgICovXG4gIHJlYWRvbmx5IHdpZHRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJQYWdpbmF0ZWRMaXN0fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgbGlzdCBpdGVtcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRMaXN0UGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzRm9yT25lUGFnZSAtIFRoZSByb3dzIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVuZGVyZXI6IChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPikgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogUm93cyB0byBwYWdpbmF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlclBhZ2luYXRlZFRhYmxlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdGFibGUgcm93IGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkVGFibGVQYXJhbXM8VD4ge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGhlYWRlcnMgb2YgdGhlIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgWzEwLCAyMCwgNTAsIDEwMF1gXG4gICAqL1xuICByZWFkb25seSBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFJvd3Mgb2YgdGhlIHRhYmxlIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlUGFnZUxpbmt9LlxuICovXG5pbnRlcmZhY2UgQ3JlYXRlUGFnZUxpbmtQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHBhZ2UgbnVtYmVyIHRoZSBsaW5rIHBvaW50cyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRQYWdlTnVtYmVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxpbmsgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGNvbnRlbnQgdXNpbmcgdGhlIHByb3ZpZGVkIHJlbmRlcmVyIGZ1bmN0aW9uIGluIGEgdGVtcG9yYXJ5IGNvbnRhaW5lcixcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIGNvbnRhaW5lci5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcmVuZGVyZXIgLSBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnRcbiAqIHRoYXQgd2FzIHVzZWQgYXMgdGhlIHRlbXBvcmFyeSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZW5kZXJlZENvbnRhaW5lcihkdjogRGF0YXZpZXdJbmxpbmVBcGksIHJlbmRlcmVyOiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogUHJvbWlzZTxIVE1MUGFyYWdyYXBoRWxlbWVudD4ge1xuICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG4gIGNvbnN0IHRlbXBvcmFyeUNvbnRhaW5lciA9IGR2LnBhcmFncmFwaCgnJyk7XG4gIGR2LmNvbnRhaW5lciA9IHRlbXBvcmFyeUNvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGR2LnBhcmFncmFwaChgXHUyNzRDJHtlcnJvclRvU3RyaW5nKGVycm9yKX1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlcyAtLSBZZXMsIGl0IGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLCBidXQgSSBkb24ndCBhbiBlbGVnYW50IHdheSB0byBmaXggaXQuXG4gICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIHRlbXBvcmFyeUNvbnRhaW5lci5yZW1vdmUoKTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wb3JhcnlDb250YWluZXI7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIGNvZGUgYmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIERhdGF2aWV3IGluc3RhbmNlIHVzaW5nIHRoZSBwcm92aWRlZCBsYW5ndWFnZSBhbmQgY29kZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGluc2VydGluZyB0aGUgY29kZSBibG9jay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydENvZGVCbG9jayhwYXJhbXM6IEluc2VydENvZGVCbG9ja1BhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgY29kZSxcbiAgICBkdixcbiAgICBsYW5ndWFnZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBNSU5fRkVOQ0VfTEVOR1RIID0gMztcbiAgY29uc3QgZmVuY2VSZWdFeHAgPSBuZXcgUmVnRXhwKGBeXFxgeyR7U3RyaW5nKE1JTl9GRU5DRV9MRU5HVEgpfSx9YCwgJ2dtJyk7XG4gIGNvbnN0IGZlbmNlTWF0Y2hlcyA9IGNvZGUubWF0Y2hBbGwoZmVuY2VSZWdFeHApO1xuICBjb25zdCBmZW5jZUxlbmd0aHMgPSBbLi4uZmVuY2VNYXRjaGVzXS5tYXAoKGZlbmNlTWF0Y2gpID0+IGZlbmNlTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgY29uc3QgbWF4RmVuY2VMZW5ndGggPSBNYXRoLm1heCgwLCAuLi5mZW5jZUxlbmd0aHMpO1xuICBjb25zdCByZXN1bHRGZW5jZUxlbmd0aCA9IE1hdGgubWF4KE1JTl9GRU5DRV9MRU5HVEgsIG1heEZlbmNlTGVuZ3RoICsgMSk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlID0gJ2AnLnJlcGVhdChyZXN1bHRGZW5jZUxlbmd0aCk7XG5cbiAgZHYucGFyYWdyYXBoKGAke3Jlc3VsdEZlbmNlfSR7bGFuZ3VhZ2V9XG4ke2NvZGV9XG4ke3Jlc3VsdEZlbmNlfWApO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaWZyYW1lIGluIHRoZSBEYXRhdmlldyBjb250YWluZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHJlbGF0aXZlIHBhdGgsIHdpZHRoLCBhbmQgaGVpZ2h0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBpZnJhbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJZnJhbWUocGFyYW1zOiBSZW5kZXJJZnJhbWVQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlaWdodCA9ICc2MDBweCcsXG4gICAgcmVsYXRpdmVQYXRoT3JGaWxlLFxuICAgIHdpZHRoID0gJzEwMCUnXG4gIH0gPSBwYXJhbXM7XG4gIGR2LmVsKCdpZnJhbWUnLCAnJywge1xuICAgIGF0dHI6IHtcbiAgICAgIGhlaWdodCxcbiAgICAgIHNyYzogcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybCh7XG4gICAgICAgIGFwcDogZHYuYXBwLFxuICAgICAgICBub3RlUGF0aDogZHYuY3VycmVudCgpLmZpbGUucGF0aCxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBnZXRQYXRoKGR2LmFwcCwgcmVsYXRpdmVQYXRoT3JGaWxlKVxuICAgICAgfSksXG4gICAgICB3aWR0aFxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCBsaXN0IHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyBpbiB0aGUgbGlzdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGxpc3QuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBsaXN0IGlzIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkTGlzdDxUPihwYXJhbXM6IFJlbmRlclBhZ2luYXRlZExpc3RQYXJhbXM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IHBhcmFtcztcbiAgYXdhaXQgcmVuZGVyUGFnaW5hdGVkKHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLFxuICAgIHJlbmRlcmVyOiBhc3luYyAocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2Lmxpc3Qocm93c0Zvck9uZVBhZ2UpO1xuICAgIH0sXG4gICAgcm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgcGFnaW5hdGVkIHRhYmxlIHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyBpbiB0aGUgdGFibGUgcm93cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIHRhYmxlLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFibGUgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRUYWJsZTxUIGV4dGVuZHMgdW5rbm93bltdPihwYXJhbXM6IFJlbmRlclBhZ2luYXRlZFRhYmxlUGFyYW1zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBoZWFkZXJzLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IHBhcmFtcztcbiAgYXdhaXQgcmVuZGVyUGFnaW5hdGVkKHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLFxuICAgIHJlbmRlcmVyOiBhc3luYyAocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2LnRhYmxlKGhlYWRlcnMsIHJvd3NGb3JPbmVQYWdlKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHJlbmRlciBwYWdpbmF0ZWQgY29udGVudCB1c2luZyB0aGUgc3BlY2lmaWVkIHJlbmRlcmVyLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgY29udGVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbnRlbnQgaXMgcmVuZGVyZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZDxUPihwYXJhbXM6IFJlbmRlclBhZ2luYXRlZFBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBTRUNPTkRfUEFHRV9OVU1CRVIgPSAyO1xuICBjb25zdCBNT1JFX1BBR0VfTlVNQkVSID0gMztcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IHBhcmFtcztcbiAgaWYgKHJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgZHYucGFyYWdyYXBoKCdObyBpdGVtcyBmb3VuZCcpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBjb250YWluZXIgPSBkdi5jb250YWluZXI7XG4gIGxldCBpdGVtc1BlclBhZ2UgPSBlbnN1cmVOb25OdWxsYWJsZShpdGVtc1BlclBhZ2VPcHRpb25zWzBdLCAnSXRlbXMgcGVyIHBhZ2Ugb3B0aW9ucyBhcmUgZW1wdHknKTtcbiAgbGV0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdpbmF0aW9uRGl2ID0gY29udGFpbmVyLmNyZWF0ZURpdih7IGNsczogJ3BhZ2luYXRpb24nIH0pO1xuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cxRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IDEsIGRpc2FibGVkOiBwYWdlTnVtYmVyID09PSAxLCB0ZXh0OiAnRmlyc3QnIH0pO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IHBhZ2VOdW1iZXIgLSAxLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gMSwgdGV4dDogJ1ByZXYnIH0pO1xuXG4gICAgaWYgKHBhZ2VOdW1iZXIgPiBNT1JFX1BBR0VfTlVNQkVSKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVTcGFuKHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaW5kZXggPSBNYXRoLm1heCgxLCBwYWdlTnVtYmVyIC0gU0VDT05EX1BBR0VfTlVNQkVSKTsgaW5kZXggPD0gTWF0aC5taW4odG90YWxQYWdlcywgcGFnZU51bWJlciArIFNFQ09ORF9QQUdFX05VTUJFUik7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHBhZ2VMaW5rID0gY3JlYXRlUGFnZUxpbmsoeyBjdXJyZW50UGFnZU51bWJlcjogaW5kZXgsIGRpc2FibGVkOiBpbmRleCA9PT0gcGFnZU51bWJlciwgdGV4dDogU3RyaW5nKGluZGV4KSB9KTtcbiAgICAgIGlmIChpbmRleCA9PT0gcGFnZU51bWJlcikge1xuICAgICAgICBwYWdlTGluay5hZGRDbGFzcygnY3VycmVudCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYWdlTnVtYmVyIDwgdG90YWxQYWdlcyAtIFNFQ09ORF9QQUdFX05VTUJFUikge1xuICAgICAgcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlU3Bhbih7IHRleHQ6ICcuLi4nIH0pO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IHBhZ2VOdW1iZXIgKyAxLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcywgdGV4dDogJ05leHQnIH0pO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IHRvdGFsUGFnZXMsIGRpc2FibGVkOiBwYWdlTnVtYmVyID09PSB0b3RhbFBhZ2VzLCB0ZXh0OiAnTGFzdCcgfSk7XG5cbiAgICBjb25zdCBwYWdpbmF0aW9uUm93MkRpdiA9IHBhZ2luYXRpb25EaXYuY3JlYXRlRGl2KCk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVTcGFuKHsgdGV4dDogYCAke3QoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5kYXRhdmlldy5pdGVtc1BlclBhZ2UpfSBgIH0pO1xuXG4gICAgY29uc3QgaXRlbXNQZXJQYWdlU2VsZWN0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ3NlbGVjdCcpO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGl0ZW1zUGVyUGFnZU9wdGlvbnMpIHtcbiAgICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC5jcmVhdGVFbCgnb3B0aW9uJywgeyB0ZXh0OiBTdHJpbmcob3B0aW9uKSwgdmFsdWU6IFN0cmluZyhvcHRpb24pIH0pO1xuICAgIH1cbiAgICBpdGVtc1BlclBhZ2VTZWxlY3QudmFsdWUgPSBTdHJpbmcoaXRlbXNQZXJQYWdlKTtcbiAgICBpdGVtc1BlclBhZ2VTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgaXRlbXNQZXJQYWdlID0gcGFyc2VJbnQoaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlLCAxMCk7XG4gICAgICAgIHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICAgICAgICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IGAgJHt0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcuanVtcFRvUGFnZSl9IGAgfSk7XG5cbiAgICBjb25zdCBqdW1wVG9QYWdlSW5wdXQgPSBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnaW5wdXQnLCB7IGF0dHI6IHsgbWF4OiB0b3RhbFBhZ2VzLCBtaW46IDEgfSwgdHlwZTogJ251bWJlcicgfSk7XG4gICAganVtcFRvUGFnZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgIT09ICdFbnRlcicpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYWdlID0gcGFyc2VJbnQoanVtcFRvUGFnZUlucHV0LnZhbHVlLCAxMCk7XG4gICAgICAgIGlmIChwYWdlID49IDEgJiYgcGFnZSA8PSB0b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgYXdhaXQgcmVuZGVyUGFnZShwYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5kYXRhdmlldy5wYWdlSGVhZGVyLCB7IHBhZ2VOdW1iZXIsIHRvdGFsSXRlbXM6IHJvd3MubGVuZ3RoLCB0b3RhbFBhZ2VzIH0pIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFnZUxpbmsocGFyYW1zMjogQ3JlYXRlUGFnZUxpbmtQYXJhbXMpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGN1cnJlbnRQYWdlTnVtYmVyLFxuICAgICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgICB0ZXh0XG4gICAgICB9ID0gcGFyYW1zMjtcbiAgICAgIGNvbnN0IGxpbmsgPSBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVFbCgnYScsIHsgY2xzOiAncGFnZS1saW5rJywgaHJlZjogYCMke1N0cmluZyhjdXJyZW50UGFnZU51bWJlcil9YCwgdGV4dCB9KTtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICBsaW5rLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItYWRkLWV2ZW50LWxpc3RlbmVyIC0tIFRoZSBoYW5kbGVyIGlzIGFzc2lnbmVkIHRvIGBvbmNsaWNrYCBzbyBpdCBzdGF5cyByZWFkYWJsZSBiYWNrIG9mZiB0aGUgZWxlbWVudCwgd2hpY2ggaXMgaG93IGl0IGlzIGludm9rZWQgaW4gdGVzdHMgYW5kIGhvdyBhIGxhdGVyIGFzc2lnbm1lbnQgY2FuIHJlcGxhY2UgaXQuXG4gICAgICAgIGxpbmsub25jbGljayA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItYWRkLWV2ZW50LWxpc3RlbmVyIC0tIFRoZSBoYW5kbGVyIGlzIGFzc2lnbmVkIHRvIGBvbmNsaWNrYCBzbyBpdCBzdGF5cyByZWFkYWJsZSBiYWNrIG9mZiB0aGUgZWxlbWVudCwgd2hpY2ggaXMgaG93IGl0IGlzIGludm9rZWQgaW4gdGVzdHMgYW5kIGhvdyBhIGxhdGVyIGFzc2lnbm1lbnQgY2FuIHJlcGxhY2UgaXQuXG4gICAgICAgIGxpbmsub25jbGljayA9IGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UoY3VycmVudFBhZ2VOdW1iZXIpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5rO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2UocGFnZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29udGFpbmVyLmVtcHR5KCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvbm8tZm9yYmlkZGVuLWVsZW1lbnRzIC0tIFdlIG5lZWQgdG8gY3JlYXRlIGEgc3R5bGUgZWxlbWVudCB0byBhcHBseSB0aGUgcGFnaW5hdGlvbiBDU1MuXG4gICAgY29udGFpbmVyLmNyZWF0ZUVsKCdzdHlsZScsIHsgdGV4dDogcGFnaW5hdGlvbkNzcyB9KTtcblxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAocGFnZU51bWJlciAtIDEpICogaXRlbXNQZXJQYWdlO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCByb3dzRm9yQ3VycmVudFBhZ2UgPSByb3dzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcblxuICAgIGNvbnN0IG9sZENvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcblxuICAgIGR2LmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcGFyYW1zLnJlbmRlcmVyKHJvd3NGb3JDdXJyZW50UGFnZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGR2LnBhcmFncmFwaChgXHUyNzRDJHtlcnJvclRvU3RyaW5nKGVycm9yKX1gKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gWWVzLCBpdCBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgYnV0IEkgZG9uJ3QgYW4gZWxlZ2FudCB3YXkgdG8gZml4IGl0LlxuICAgICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLHFCQUFxQjtBQUM5QixTQUFTLHlCQUF5QjtBQUtsQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsU0FBUztBQUNsQixTQUFTLGlDQUFpQztBQW9HMUMsZUFBc0IsdUJBQXVCLElBQXNDO0FBQ2pGLFFBQU0sYUFBYSxhQUFhLE1BQU0sT0FBTyxRQUFRO0FBQUEsSUFDbkQsS0FBSyxHQUFHO0FBQUEsSUFDUixZQUFZLEdBQUcsUUFBUSxFQUFFLEtBQUs7QUFBQSxFQUNoQyxDQUFDLENBQUM7QUFDSjtBQUVBLE1BQU0sZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxTXRCLGVBQXNCLHFCQUFxQixJQUF1QixVQUFpRTtBQUNqSSxRQUFNLGVBQWUsR0FBRztBQUN4QixRQUFNLHFCQUFxQixHQUFHLFVBQVUsRUFBRTtBQUMxQyxLQUFHLFlBQVk7QUFDZixLQUFHLFVBQVUsTUFBTTtBQUVuQixNQUFJO0FBQ0YsVUFBTSxTQUFTO0FBQUEsRUFDakIsU0FBUyxPQUFPO0FBQ2QsT0FBRyxVQUFVLFNBQUksY0FBYyxLQUFLLENBQUMsRUFBRTtBQUFBLEVBQ3pDLFVBQUU7QUFFQSxPQUFHLFlBQVk7QUFDZix1QkFBbUIsT0FBTztBQUFBLEVBQzVCO0FBRUEsU0FBTztBQUNUO0FBT08sU0FBUyxnQkFBZ0IsUUFBcUM7QUFDbkUsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sbUJBQW1CO0FBQ3pCLFFBQU0sY0FBYyxJQUFJLE9BQU8sT0FBTyxPQUFPLGdCQUFnQixDQUFDLE1BQU0sSUFBSTtBQUN4RSxRQUFNLGVBQWUsS0FBSyxTQUFTLFdBQVc7QUFDOUMsUUFBTSxlQUFlLENBQUMsR0FBRyxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsV0FBVyxDQUFDLEVBQUUsTUFBTTtBQUMvRSxRQUFNLGlCQUFpQixLQUFLLElBQUksR0FBRyxHQUFHLFlBQVk7QUFDbEQsUUFBTSxvQkFBb0IsS0FBSyxJQUFJLGtCQUFrQixpQkFBaUIsQ0FBQztBQUN2RSxRQUFNLGNBQWMsSUFBSSxPQUFPLGlCQUFpQjtBQUVoRCxLQUFHLFVBQVUsR0FBRyxXQUFXLEdBQUcsUUFBUTtBQUFBLEVBQ3RDLElBQUk7QUFBQSxFQUNKLFdBQVcsRUFBRTtBQUNmO0FBT08sU0FBUyxhQUFhLFFBQWtDO0FBQzdELFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVDtBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1YsSUFBSTtBQUNKLEtBQUcsR0FBRyxVQUFVLElBQUk7QUFBQSxJQUNsQixNQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0EsS0FBSywwQkFBMEI7QUFBQSxRQUM3QixLQUFLLEdBQUc7QUFBQSxRQUNSLFVBQVUsR0FBRyxRQUFRLEVBQUUsS0FBSztBQUFBLFFBQzVCLGNBQWMsUUFBUSxHQUFHLEtBQUssa0JBQWtCO0FBQUEsTUFDbEQsQ0FBQztBQUFBLE1BQ0Q7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFXQSxlQUFzQixvQkFBdUIsUUFBcUQ7QUFDaEcsUUFBTTtBQUFBLElBQ0o7QUFBQTtBQUFBLElBRUEsc0JBQXNCLENBQUMsSUFBSSxJQUFJLElBQUksR0FBRztBQUFBLElBQ3RDO0FBQUEsRUFDRixJQUFJO0FBQ0osUUFBTSxnQkFBZ0I7QUFBQSxJQUNwQjtBQUFBLElBQ0E7QUFBQSxJQUNBLFVBQVUsT0FBTyxtQkFBdUQ7QUFDdEUsWUFBTSxHQUFHLEtBQUssY0FBYztBQUFBLElBQzlCO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBV0EsZUFBc0IscUJBQTBDLFFBQXNEO0FBQ3BILFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBO0FBQUEsSUFFQSxzQkFBc0IsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHO0FBQUEsSUFDdEM7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLGdCQUFnQjtBQUFBLElBQ3BCO0FBQUEsSUFDQTtBQUFBLElBQ0EsVUFBVSxPQUFPLG1CQUF1RDtBQUN0RSxZQUFNLEdBQUcsTUFBTSxTQUFTLGNBQWM7QUFBQSxJQUN4QztBQUFBLElBQ0E7QUFBQSxFQUNGLENBQUM7QUFDSDtBQVdBLGVBQWUsZ0JBQW1CLFFBQWlEO0FBQ2pGLFFBQU0scUJBQXFCO0FBQzNCLFFBQU0sbUJBQW1CO0FBQ3pCLFFBQU07QUFBQSxJQUNKO0FBQUE7QUFBQSxJQUVBLHNCQUFzQixDQUFDLElBQUksSUFBSSxJQUFJLEdBQUc7QUFBQSxJQUN0QztBQUFBLEVBQ0YsSUFBSTtBQUNKLE1BQUksS0FBSyxXQUFXLEdBQUc7QUFDckIsT0FBRyxVQUFVLGdCQUFnQjtBQUM3QjtBQUFBLEVBQ0Y7QUFDQSxRQUFNLFlBQVksR0FBRztBQUNyQixNQUFJLGVBQWUsa0JBQWtCLG9CQUFvQixDQUFDLEdBQUcsa0NBQWtDO0FBQy9GLE1BQUksYUFBYSxLQUFLLEtBQUssS0FBSyxTQUFTLFlBQVk7QUFDckQsUUFBTSxXQUFXLENBQUM7QUFFbEIsV0FBUyx5QkFBeUIsWUFBMEI7QUFDMUQsVUFBTSxnQkFBZ0IsVUFBVSxVQUFVLEVBQUUsS0FBSyxhQUFhLENBQUM7QUFDL0QsVUFBTSxvQkFBb0IsY0FBYyxVQUFVO0FBRWxELG1CQUFlLEVBQUUsbUJBQW1CLEdBQUcsVUFBVSxlQUFlLEdBQUcsTUFBTSxRQUFRLENBQUM7QUFDbEYsbUJBQWUsRUFBRSxtQkFBbUIsYUFBYSxHQUFHLFVBQVUsZUFBZSxHQUFHLE1BQU0sT0FBTyxDQUFDO0FBRTlGLFFBQUksYUFBYSxrQkFBa0I7QUFDakMsd0JBQWtCLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUFBLElBQzlDO0FBRUEsYUFBUyxRQUFRLEtBQUssSUFBSSxHQUFHLGFBQWEsa0JBQWtCLEdBQUcsU0FBUyxLQUFLLElBQUksWUFBWSxhQUFhLGtCQUFrQixHQUFHLFNBQVM7QUFDdEksWUFBTSxXQUFXLGVBQWUsRUFBRSxtQkFBbUIsT0FBTyxVQUFVLFVBQVUsWUFBWSxNQUFNLE9BQU8sS0FBSyxFQUFFLENBQUM7QUFDakgsVUFBSSxVQUFVLFlBQVk7QUFDeEIsaUJBQVMsU0FBUyxTQUFTO0FBQUEsTUFDN0I7QUFBQSxJQUNGO0FBRUEsUUFBSSxhQUFhLGFBQWEsb0JBQW9CO0FBQ2hELHdCQUFrQixXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFBQSxJQUM5QztBQUVBLG1CQUFlLEVBQUUsbUJBQW1CLGFBQWEsR0FBRyxVQUFVLGVBQWUsWUFBWSxNQUFNLE9BQU8sQ0FBQztBQUN2RyxtQkFBZSxFQUFFLG1CQUFtQixZQUFZLFVBQVUsZUFBZSxZQUFZLE1BQU0sT0FBTyxDQUFDO0FBRW5HLFVBQU0sb0JBQW9CLGNBQWMsVUFBVTtBQUVsRCxzQkFBa0IsV0FBVyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixTQUFTLFlBQVksQ0FBQyxJQUFJLENBQUM7QUFFaEcsVUFBTSxxQkFBcUIsa0JBQWtCLFNBQVMsUUFBUTtBQUM5RCxlQUFXLFVBQVUscUJBQXFCO0FBQ3hDLHlCQUFtQixTQUFTLFVBQVUsRUFBRSxNQUFNLE9BQU8sTUFBTSxHQUFHLE9BQU8sT0FBTyxNQUFNLEVBQUUsQ0FBQztBQUFBLElBQ3ZGO0FBQ0EsdUJBQW1CLFFBQVEsT0FBTyxZQUFZO0FBQzlDLHVCQUFtQjtBQUFBLE1BQ2pCO0FBQUEsTUFDQSxtQkFBbUIsWUFBMkI7QUFDNUMsdUJBQWUsU0FBUyxtQkFBbUIsT0FBTyxFQUFFO0FBQ3BELHFCQUFhLEtBQUssS0FBSyxLQUFLLFNBQVMsWUFBWTtBQUNqRCxjQUFNLFdBQVcsQ0FBQztBQUFBLE1BQ3BCLENBQUM7QUFBQSxJQUNIO0FBRUEsc0JBQWtCLFdBQVcsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsU0FBUyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBRTlGLFVBQU0sa0JBQWtCLGtCQUFrQixTQUFTLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxZQUFZLEtBQUssRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDO0FBQ2pILG9CQUFnQjtBQUFBLE1BQ2Q7QUFBQSxNQUNBLG1CQUFtQixPQUFPLFVBQXdDO0FBQ2hFLFlBQUksTUFBTSxRQUFRLFNBQVM7QUFDekI7QUFBQSxRQUNGO0FBRUEsY0FBTSxPQUFPLFNBQVMsZ0JBQWdCLE9BQU8sRUFBRTtBQUMvQyxZQUFJLFFBQVEsS0FBSyxRQUFRLFlBQVk7QUFDbkMsZ0JBQU0sV0FBVyxJQUFJO0FBQUEsUUFDdkI7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBRUEsc0JBQWtCLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLFNBQVMsWUFBWSxFQUFFLFlBQVksWUFBWSxLQUFLLFFBQVEsV0FBVyxDQUFDLEVBQUUsQ0FBQztBQUU1SSxhQUFTLGVBQWUsU0FBa0Q7QUFDeEUsWUFBTTtBQUFBLFFBQ0o7QUFBQSxRQUNBLFdBQVc7QUFBQSxRQUNYO0FBQUEsTUFDRixJQUFJO0FBQ0osWUFBTSxPQUFPLGtCQUFrQixTQUFTLEtBQUssRUFBRSxLQUFLLGFBQWEsTUFBTSxJQUFJLE9BQU8saUJBQWlCLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDOUcsVUFBSSxVQUFVO0FBQ1osYUFBSyxTQUFTLFVBQVU7QUFFeEIsYUFBSyxVQUFVLENBQUMsVUFBNEI7QUFDMUMsZ0JBQU0sZUFBZTtBQUFBLFFBQ3ZCO0FBQUEsTUFDRixPQUFPO0FBRUwsYUFBSyxVQUFVLG1CQUFtQixPQUFPLFVBQXFDO0FBQzVFLGdCQUFNLGVBQWU7QUFDckIsZ0JBQU0sV0FBVyxpQkFBaUI7QUFBQSxRQUNwQyxDQUFDO0FBQUEsTUFDSDtBQUNBLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLGlCQUFlLFdBQVcsWUFBbUM7QUFDM0QsY0FBVSxNQUFNO0FBRWhCLGNBQVUsU0FBUyxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkQsVUFBTSxjQUFjLGFBQWEsS0FBSztBQUN0QyxVQUFNLFdBQVcsYUFBYTtBQUM5QixVQUFNLHFCQUFxQixLQUFLLE1BQU0sWUFBWSxRQUFRO0FBRTFELFVBQU0sZUFBZSxHQUFHO0FBRXhCLE9BQUcsWUFBWTtBQUNmLFFBQUk7QUFDRixZQUFNLE9BQU8sU0FBUyxrQkFBa0I7QUFBQSxJQUMxQyxTQUFTLE9BQU87QUFDZCxTQUFHLFVBQVUsU0FBSSxjQUFjLEtBQUssQ0FBQyxFQUFFO0FBQUEsSUFDekMsVUFBRTtBQUVBLFNBQUcsWUFBWTtBQUFBLElBQ2pCO0FBRUEsNkJBQXlCLFVBQVU7QUFBQSxFQUNyQztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -50,6 +50,7 @@ import {
|
|
|
50
50
|
installCommunityPlugin,
|
|
51
51
|
installConfigureEnableCommunityPlugin
|
|
52
52
|
} from "./community-plugins.mjs";
|
|
53
|
+
import { appendCodeBlock } from "./html-element.mjs";
|
|
53
54
|
const CODE_SCRIPT_TOOLKIT_PLUGIN_ID = "fix-require-modules";
|
|
54
55
|
const CODE_SCRIPT_TOOLKIT_MODULES_ROOT = "_assets/CodeScriptToolkit";
|
|
55
56
|
const CODE_SCRIPT_TOOLKIT_SETTINGS = {
|
|
@@ -97,7 +98,7 @@ async function bootstrapDemoVault(params) {
|
|
|
97
98
|
function buildSandboxNoticeFragment(pluginName) {
|
|
98
99
|
return createFragment((fragment) => {
|
|
99
100
|
fragment.appendText("This is a demo vault for ");
|
|
100
|
-
fragment
|
|
101
|
+
appendCodeBlock(fragment, pluginName);
|
|
101
102
|
fragment.appendText(".");
|
|
102
103
|
fragment.createEl("br");
|
|
103
104
|
fragment.appendText("It is a temporary sandbox, cleaned up automatically about a day after you last use it.");
|
|
@@ -139,4 +140,4 @@ function showSandboxNotice(app, demoedPluginId) {
|
|
|
139
140
|
export {
|
|
140
141
|
bootstrapDemoVault
|
|
141
142
|
};
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQtaGVscGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgYnkgaW5zdGFsbGluZywgY29uZmlndXJpbmcsIGFuZCBlbmFibGluZyBDb2RlU2NyaXB0IFRvb2xraXQuXG4gKlxuICogQSBwbHVnaW4ncyBkZW1vIHZhdWx0IHNob3djYXNlcyB0aGUgcGx1Z2luIHRocm91Z2ggbm90ZXMgd2hvc2UgYGNvZGUtYnV0dG9uYHMgcnVuIFR5cGVTY3JpcHQgdmlhXG4gKiBDb2RlU2NyaXB0IFRvb2xraXQuIEEgZGVtbyB2YXVsdCB0aGF0IGRvZXMgbm90IGl0c2VsZiBzaGlwIENvZGVTY3JpcHQgVG9vbGtpdCB0aGVyZWZvcmUgbmVlZHMgaXRcbiAqIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWQgYmVmb3JlIHRob3NlIGJ1dHRvbnMgd29yay4ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0gZG9lcyBleGFjdGx5XG4gKiB0aGF0IHdpdGggbm8gY29tbWl0dGVkIENvZGVTY3JpcHQgVG9vbGtpdCBjb25maWcgYW5kIG5vIG1hbnVhbCBzZXR1cCwgc28gaXQgY2FuIGJlIGRyaXZlbiBmcm9tIGEgdGlueVxuICogY29tbWl0dGVkIGJvb3RzdHJhcCBwbHVnaW4gKGBkZW1vLXZhdWx0LWhlbHBlcmApIHRoYXQgaXMgaW5qZWN0ZWQgaW50byBldmVyeSBkZW1vIHZhdWx0IGF0IHJlbGVhc2VcbiAqIHRpbWUuXG4gKlxuICogVGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzIGlzIHJlYWQgZnJvbSB0aGUgaGVscGVyJ3Mgb3duIGBkYXRhLmpzb25gLCB3cml0dGVuIGJ5IHRoZSBwYWNrYWdpbmdcbiAqIHN0ZXAgKHtAbGluayBEZW1vVmF1bHRIZWxwZXJTZXR0aW5nc30pOyBhIHZhdWx0IHdpdGhvdXQgdGhhdCBtYXJrZXIgaXMgcmVmdXNlZCBhcyBub3QgYSBkZW1vIHZhdWx0LlxuICpcbiAqIEl0IHdyaXRlcyBDb2RlU2NyaXB0IFRvb2xraXQncyBzZXR0aW5ncyBCRUZPUkUgZW5hYmxpbmcgaXQsIHNvIHRoZSBwbHVnaW4gbG9hZHMgYWxyZWFkeSBjb25maWd1cmVkIFx1MjAxNFxuICogbm8gcmVsb2FkLiBDb2RlU2NyaXB0IFRvb2xraXQgdGhlbiBydW5zIHRoZSB2YXVsdCdzIGBzdGFydHVwLnRzYCAodmlhIGl0cyBgc3RhcnR1cFNjcmlwdFBhdGhgXG4gKiBzZXR0aW5nKSwgd2hpY2ggaXMgd2hlcmUgZWFjaCB2YXVsdCBvcGVucyBpdHMgc3RhcnQgbm90ZSBhbmQgZG9lcyBhbnkgcGx1Z2luLXNwZWNpZmljIHNldHVwLlxuICpcbiAqIEl0IGFsc28gY3JlYXRlcyBDb2RlU2NyaXB0IFRvb2xraXQncyBpbnZvY2FibGUtc2NyaXB0cyBmb2xkZXIgaWYgaXQgaXMgbWlzc2luZywgc28gZXZlcnkgZGVtbyB2YXVsdFxuICogaGFzIHRoZSBzYW1lIGxheW91dCBldmVuIHdoZW4gdGhlIHZhdWx0IHNoaXBzIG5vIGludm9jYWJsZSBzY3JpcHRzIFx1MjAxNCB0aGUgdmF1bHRzIHRoZW1zZWx2ZXMgY29tbWl0IG5vXG4gKiBlbXB0eSBmb2xkZXIgZm9yIGl0LlxuICpcbiAqIEl0IHRoZW4gaW5zdGFsbHMgdGhlIEZvbGRlciBOb3RlcyBwbHVnaW4sIGNvbmZpZ3VyZWQgdG8gdHJlYXQgYFJFQURNRS5tZGAgYXMgYSBmb2xkZXIncyBvd24gbm90ZS4gQVxuICogZGVtbyB2YXVsdCB0aGF0IGhhcyBvdXRncm93biBhIGZsYXQgbm90ZSBsaXN0IGdyb3VwcyBpdHMgbm90ZXMgaW50byBmb2xkZXJzLCBhbmQgYSBncm91cCBmb2xkZXIgb25seVxuICogc2F5cyB3aGF0IGl0IGlzIGZvciBpZiBpdCBoYXMgYSBub3RlIG9mIGl0cyBvd24gXHUyMDE0IGBSRUFETUUubWRgLCBiZWNhdXNlIHRoYXQgaXMgYWxzbyB0aGUgZmlsZSBHaXRIdWJcbiAqIHJlbmRlcnMgdW5kZXIgdGhlIGZpbGUgbGlzdCB3aGVuIHRoZSBzYW1lIHZhdWx0IGlzIGJyb3dzZWQgYXMgYSByZXBvc2l0b3J5LCBzbyBvbmUgZmlsZSBzZXJ2ZXMgYm90aFxuICogcmVhZGVycy5cbiAqXG4gKiBGaW5hbGx5IGl0IHJhaXNlcyB0aGUgc2FuZGJveCBub3RpY2UgZXhwbGFpbmluZyB0aGF0IHRoZSBvcGVuZWQgdmF1bHQgaXMgYSB0aHJvd2F3YXkgY29weSwgc28gYSB1c2VyXG4gKiB3aG8gd3JpdGVzIHRoZWlyIG93biBub3RlcyBpbiBpdCBpcyBuZXZlciBzdXJwcmlzZWQgYnkgdGhlbSBiZWluZyBhYnNlbnQgZnJvbSB0aGUgbmV4dCBjb3B5LiBTZXR0aW5nc1xuICogaXMgY2xvc2VkIGZpcnN0LCBzbyB0aGUgbm90aWNlIGxhbmRzIGluIHRoZSB2YXVsdCdzIG1haW4gd2luZG93IHJhdGhlciB0aGFuIGluIHRoZSBzZXR0aW5ncyBwb3BvdXQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEhlbHBlclNldHRpbmdzIH0gZnJvbSAnLi9kZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncy50cyc7XG5cbmltcG9ydCB7XG4gIGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbixcbiAgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LFxuICBkaXNhYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBlbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIGluc3RhbGxDb21tdW5pdHlQbHVnaW4sXG4gIGluc3RhbGxDb25maWd1cmVFbmFibGVDb21tdW5pdHlQbHVnaW5cbn0gZnJvbSAnLi9jb21tdW5pdHktcGx1Z2lucy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbn1cblxuLyoqXG4gKiBDb2RlU2NyaXB0IFRvb2xraXQncyBzZXR0aW5ncywgd3JpdHRlbiBpbnRvIGl0cyBgZGF0YS5qc29uYCBiZWZvcmUgaXQgaXMgZW5hYmxlZC5cbiAqL1xuaW50ZXJmYWNlIENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3Mge1xuICAvKipcbiAgICogVGhlIFlBTUwgZnJvbnRtYXR0ZXIgbWVyZ2VkIGludG8gZXZlcnkgYGNvZGUtYnV0dG9uYCBibG9jaydzIG93biBjb25maWcsIHVzZWQgaGVyZSB0byB0dXJuIHRoZVxuICAgKiBzb3VyY2Ugdmlld2VyIG9uIGZvciBldmVyeSBidXR0b24gaW4gZXZlcnkgZGVtbyB2YXVsdCB3aXRob3V0IGVkaXRpbmcgYSBzaW5nbGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgKHVuZGVyIHtAbGluayBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzLm1vZHVsZXNSb290fSkgaG9sZGluZyBpbnZvY2FibGUgc2NyaXB0cy5cbiAgICovXG4gIHJlYWRvbmx5IGludm9jYWJsZVNjcmlwdHNGb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIGZvbGRlciB0aGF0IGByZXF1aXJlKCcvXHUyMDI2JylgIHJlc29sdmVzIG1vZHVsZSBwYXRocyBhZ2FpbnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc1Jvb3Q6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBDb2RlU2NyaXB0IFRvb2xraXQgaGFuZGxlcyBgb2JzaWRpYW46Ly9gIHByb3RvY29sIFVSTHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRIYW5kbGVQcm90b2NvbFVybHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoICh1bmRlciB7QGxpbmsgQ29kZVNjcmlwdFRvb2xraXRTZXR0aW5ncy5tb2R1bGVzUm9vdH0pIG9mIHRoZSBzY3JpcHQgcnVuIG9uIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzdGFydHVwU2NyaXB0UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZvbGRlciBOb3Rlcycgc2V0dGluZ3MsIHdyaXR0ZW4gaW50byBpdHMgYGRhdGEuanNvbmAgYmVmb3JlIGl0IGlzIGVuYWJsZWQuXG4gKi9cbmludGVyZmFjZSBGb2xkZXJOb3Rlc1NldHRpbmdzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIGEgZm9sZGVyJ3Mgb3duIG5vdGUgaXMgbG9va2VkIGZvciB1bmRlciwgd2l0aG91dCB0aGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyTm90ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBhIGZvbGRlcidzIG93biBub3RlIGlzIGhpZGRlbiBmcm9tIHRoZSBmaWxlIGV4cGxvcmVyLCBzbyB0aGUgZm9sZGVyIGl0c2VsZiBzdGFuZHMgZm9yIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgaGlkZUZvbGRlck5vdGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXJlIGEgZm9sZGVyJ3Mgb3duIG5vdGUgaXMga2VwdCwgcmVsYXRpdmUgdG8gdGhlIGZvbGRlciBpdCBkZXNjcmliZXMuXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlTG9jYXRpb246IHN0cmluZztcbn1cblxuY29uc3QgQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgPSAnZml4LXJlcXVpcmUtbW9kdWxlcyc7XG5jb25zdCBDT0RFX1NDUklQVF9UT09MS0lUX01PRFVMRVNfUk9PVCA9ICdfYXNzZXRzL0NvZGVTY3JpcHRUb29sa2l0JztcbmNvbnN0IENPREVfU0NSSVBUX1RPT0xLSVRfU0VUVElOR1M6IENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3MgPSB7XG4gIGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiAnLS0tXFxuc291cmNlVmlzaWJpbGl0eTogY29sbGFwc2VkXFxuLS0tJyxcbiAgaW52b2NhYmxlU2NyaXB0c0ZvbGRlcjogJ0ludm9jYWJsZXMnLFxuICBtb2R1bGVzUm9vdDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9NT0RVTEVTX1JPT1QsXG4gIHNob3VsZEhhbmRsZVByb3RvY29sVXJsczogdHJ1ZSxcbiAgc3RhcnR1cFNjcmlwdFBhdGg6ICdzdGFydHVwLnRzJ1xufTtcblxuY29uc3QgRk9MREVSX05PVEVTX1BMVUdJTl9JRCA9ICdmb2xkZXItbm90ZXMnO1xuLy8gYFJFQURNRWAgcmF0aGVyIHRoYW4gRm9sZGVyIE5vdGVzJyBvd24gYHt7Zm9sZGVyX25hbWV9fWAgZGVmYXVsdDogdGhlIHNhbWUgZmlsZSBoYXMgdG8gYmUgdGhlIGZvbGRlcidzXG4vLyBub3RlIGluIE9ic2lkaWFuIEFORCB0aGUgcGFnZSBHaXRIdWIgcmVuZGVycyB3aGVuIHRoZSB2YXVsdCBpcyBicm93c2VkIGFzIGEgcmVwb3NpdG9yeSwgYW5kIEdpdEh1YlxuLy8gb25seSBkb2VzIHRoYXQgZm9yIGBSRUFETUUubWRgLiBgaW5zaWRlRm9sZGVyYCBrZWVwcyBpdCB3aXRoIHRoZSBub3RlcyBpdCBkZXNjcmliZXMgcmF0aGVyIHRoYW4gYmVzaWRlXG4vLyB0aGUgZm9sZGVyLCBhbmQgaGlkaW5nIGl0IGxldHMgdGhlIGZvbGRlciBpdHNlbGYgc3RhbmQgZm9yIHRoZSBub3RlIGluc3RlYWQgb2YgbGlzdGluZyBib3RoLlxuY29uc3QgRk9MREVSX05PVEVTX1NFVFRJTkdTOiBGb2xkZXJOb3Rlc1NldHRpbmdzID0ge1xuICBmb2xkZXJOb3RlTmFtZTogJ1JFQURNRScsXG4gIGhpZGVGb2xkZXJOb3RlOiB0cnVlLFxuICBzdG9yYWdlTG9jYXRpb246ICdpbnNpZGVGb2xkZXInXG59O1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgUExVR0lOU19GT0xERVJfTkFNRSA9ICdwbHVnaW5zJztcbmNvbnN0IERBVEFfSlNPTl9GSUxFX05BTUUgPSAnZGF0YS5qc29uJztcbmNvbnN0IElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFID0gJ0ludmFsaWQgZGVtbyB2YXVsdCc7XG5jb25zdCBPUEVOX0RFTU9fVkFVTFRfQ09NTUFORF9OQU1FID0gJ09wZW4gZGVtbyB2YXVsdCc7XG4vLyBgMGAgYXNrcyBPYnNpZGlhbiB0byBrZWVwIHRoZSBub3RpY2UgdXAgdW50aWwgdGhlIHVzZXIgY2xpY2tzIGl0IFx1MjAxNCB0aGUgc2FtZSB0cmVhdG1lbnQgT2JzaWRpYW4gZ2l2ZXNcbi8vIGl0cyBvd24gc2FuZGJveC12YXVsdCBub3RpY2UsIGFuZCB3aGF0IHRoZSBkZW1vLXZhdWx0IG5vdGljZSBpcyBtb2RlbGxlZCBvbi5cbmNvbnN0IFNBTkRCT1hfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyA9IDA7XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgc28gaXRzIG5vdGVzJyBgY29kZS1idXR0b25gcyB3b3JrIHdpdGggbm8gbWFudWFsIHNldHVwOiBpbnN0YWxscyBDb2RlU2NyaXB0XG4gKiBUb29sa2l0IGZyb20gdGhlIGNvbW11bml0eSBzdG9yZSAoaWYgaXQgaXMgbm90IGFscmVhZHkgaW5zdGFsbGVkKSwgd3JpdGVzIGl0cyBzZXR0aW5ncywgdGhlbiBlbmFibGVzXG4gKiBpdCBcdTIwMTQgd3JpdGluZyB0aGUgc2V0dGluZ3MgQkVGT1JFIGVuYWJsaW5nIHNvIGEgZnJlc2ggZW5hYmxlIGxvYWRzIGl0IGFscmVhZHkgY29uZmlndXJlZCwgd2l0aCBub1xuICogcmVsb2FkLiBJZiBDb2RlU2NyaXB0IFRvb2xraXQgaXMgYWxyZWFkeSBlbmFibGVkIGJ1dCB0aGUgc2V0dGluZ3MganVzdCBjaGFuZ2VkLCBpdCBpcyByZWxvYWRlZFxuICogKGRpc2FibGVkIHRoZW4gZW5hYmxlZCkgc28gaXQgcmUtcmVhZHMgYGRhdGEuanNvbmA7IHdoZW4gdGhlIHNldHRpbmdzIHdlcmUgYWxyZWFkeSBpbiBwbGFjZSwgbm90aGluZyBpc1xuICogcmVsb2FkZWQgKHNvIGEgcm91dGluZSB2YXVsdCByZS1vcGVuIGRvZXMgbm90IHJlLXJ1biBDb2RlU2NyaXB0IFRvb2xraXQncyBzdGFydHVwKS4gQ29kZVNjcmlwdCBUb29sa2l0XG4gKiB0aGVuIHJ1bnMgdGhlIHZhdWx0J3MgYHN0YXJ0dXAudHNgLiBGb2xkZXIgTm90ZXMgaXMgaW5zdGFsbGVkIG5leHQsIGNvbmZpZ3VyZWQgdG8gdHJlYXQgYFJFQURNRS5tZGAgYXNcbiAqIGEgZm9sZGVyJ3Mgb3duIG5vdGUsIHNvIGEgdmF1bHQgd2hvc2Ugbm90ZXMgYXJlIGdyb3VwZWQgaW50byBmb2xkZXJzIGRlc2NyaWJlcyBlYWNoIGdyb3VwIGluIHRoZSBmaWxlXG4gKiBleHBsb3Jlci4gRmluYWxseSBpdCBjbG9zZXMgU2V0dGluZ3MgKHNvIHRoZSBub3RpY2UgY2Fubm90IGJlIHJhaXNlZCBpbnNpZGUgdGhlIHNldHRpbmdzIHBvcG91dCkgYW5kXG4gKiByYWlzZXMgdGhlIHNhbmRib3ggbm90aWNlIGRlc2NyaWJpbmcgdGhlIG9wZW5lZCB2YXVsdCBhcyBhIHRocm93YXdheSBjb3B5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEJvb3RzdHJhcERlbW9WYXVsdFBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgQ29kZVNjcmlwdCBUb29sa2l0IGlzIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWRcbiAqIGFuZCB0aGUgc2FuZGJveCBub3RpY2UgaGFzIGJlZW4gc2hvd24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBib290c3RyYXBEZW1vVmF1bHQocGFyYW1zOiBCb290c3RyYXBEZW1vVmF1bHRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAgfSA9IHBhcmFtcztcbiAgLy8gUmVzb2x2ZWQgZmlyc3QsIHNvIGEgdmF1bHQgdGhhdCBpcyBub3QgYSBkZW1vIHZhdWx0IGlzIHJlZnVzZWQgYmVmb3JlIGFueXRoaW5nIGlzIGluc3RhbGxlZCBpbnRvIGl0LlxuICBjb25zdCBkZW1vZWRQbHVnaW5JZCA9IGF3YWl0IGdldERlbW9lZFBsdWdpbklkKGFwcCk7XG4gIGF3YWl0IGluc3RhbGxDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2luKHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQ6IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lELFxuICAgIHNldHRpbmdzOiBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTXG4gIH0pO1xuICBhd2FpdCBlbnN1cmVJbnZvY2FibGVTY3JpcHRzRm9sZGVyKGFwcCk7XG5cbiAgaWYgKCFhcHAucGx1Z2lucy5lbmFibGVkUGx1Z2lucy5oYXMoQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQpKSB7XG4gICAgYXdhaXQgZW5hYmxlQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgfSk7XG4gIH0gZWxzZSBpZiAocmVzdWx0ID09PSBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQuU3VjY2Vzcykge1xuICAgIC8vIEFscmVhZHkgZW5hYmxlZCB3aXRoIHN0YWxlIHNldHRpbmdzIFx1MjAxNCByZWxvYWQgc28gQ29kZVNjcmlwdCBUb29sa2l0IHJlLXJlYWRzIHRoZSBmcmVzaGx5IHdyaXR0ZW4gZGF0YS5qc29uLlxuICAgIGF3YWl0IGRpc2FibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgfVxuXG4gIC8vIEFmdGVyIENvZGVTY3JpcHQgVG9vbGtpdCwgc28gdGhlIHZhdWx0J3Mgc3RhcnR1cCBzY3JpcHQgaGFzIGFscmVhZHkgb3BlbmVkIHRoZSBzdGFydCBub3RlIGJ5IHRoZSB0aW1lXG4gIC8vIHRoZSBmaWxlIGV4cGxvcmVyIGdhaW5zIGl0cyBmb2xkZXItbm90ZSBiZWhhdmlvci5cbiAgYXdhaXQgaW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpbih7XG4gICAgYXBwLFxuICAgIHBsdWdpbklkOiBGT0xERVJfTk9URVNfUExVR0lOX0lELFxuICAgIHNldHRpbmdzOiBGT0xERVJfTk9URVNfU0VUVElOR1NcbiAgfSk7XG5cbiAgc2hvd1NhbmRib3hOb3RpY2UoYXBwLCBkZW1vZWRQbHVnaW5JZCk7XG59XG5cbi8vIEJ1aWxkcyB0aGUgc2FuZGJveCBub3RpY2UgY29udGVudDogd2hhdCB0aGlzIHZhdWx0IGlzLCB3aGVyZSBpdCBsaXZlcywgaG93IGxvbmcgaXQgbGl2ZXMsIGFuZCB3aHlcbi8vIHJlLXJ1bm5pbmcgdGhlIGNvbW1hbmQgcHJvZHVjZXMgYSB2YXVsdCB3aXRob3V0IHRoZSBub3RlcyBqdXN0IHdyaXR0ZW4gaGVyZS5cbi8vXG4vLyBFdmVyeSBjbGFpbSBoYXMgdG8gc3RheSB0cnVlIG9mIHRoZSBvcGVuZXIgKGBkZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyLnRzYCk6IGl0IGV4dHJhY3RzIGEgRlJFU0ggY29weVxuLy8gaW50byBpdHMgb3duIGZvbGRlciBvbiBldmVyeSBvcGVuLCBhbmQgZGVsZXRlcyBleHRyYWN0ZWQgZm9sZGVycyBvbGRlciB0aGFuIGEgZGF5IG9uIGVhY2ggbGF0ZXIgb3Blbi5cbi8vIFNvIHRoZSB2YXVsdCBpcyBhIHRlbXBvcmFyeSBzYW5kYm94IFx1MjAxNCBpdCBtdXN0IG5ldmVyIGJlIGRlc2NyaWJlZCBhcyBhIHBsYWNlIHdvcmsgY2FuIGJlIGxlZnQuXG5mdW5jdGlvbiBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lOiBzdHJpbmcpOiBEb2N1bWVudEZyYWdtZW50IHtcbiAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50KChmcmFnbWVudCkgPT4ge1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ1RoaXMgaXMgYSBkZW1vIHZhdWx0IGZvciAnKTtcbiAgICBmcmFnbWVudC5jcmVhdGVFbCgnYicsIHsgdGV4dDogcGx1Z2luTmFtZSB9KTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCcuJyk7XG5cbiAgICBmcmFnbWVudC5jcmVhdGVFbCgnYnInKTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCdJdCBpcyBhIHRlbXBvcmFyeSBzYW5kYm94LCBjbGVhbmVkIHVwIGF1dG9tYXRpY2FsbHkgYWJvdXQgYSBkYXkgYWZ0ZXIgeW91IGxhc3QgdXNlIGl0LicpO1xuXG4gICAgZnJhZ21lbnQuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnRXhlY3V0aW5nICcpO1xuICAgIGZyYWdtZW50LmNyZWF0ZUVsKCdiJywgeyB0ZXh0OiBgJHtwbHVnaW5OYW1lfTogJHtPUEVOX0RFTU9fVkFVTFRfQ09NTUFORF9OQU1FfWAgfSk7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnIGNvbW1hbmQgYWdhaW4gY3JlYXRlcyBhIG5ldyBjb3B5IHdpdGggdGhlIGxhdGVzdCBwbHVnaW4gdmVyc2lvbiwgc28geW91ciBub3RlcyB3aWxsIG5vdCBhcHBlYXIgaW4gaXQuJyk7XG4gIH0pO1xufVxuXG4vLyBDcmVhdGVzIENvZGVTY3JpcHQgVG9vbGtpdCdzIGludm9jYWJsZS1zY3JpcHRzIGZvbGRlciAodW5kZXIgYG1vZHVsZXNSb290YCkgaWYgaXQgaXMgbWlzc2luZy5cbi8vIEV2ZXJ5IGRlbW8gdmF1bHQgdGhlbiBoYXMgdGhlIHNhbWUgQ29kZVNjcmlwdCBUb29sa2l0IGxheW91dCBldmVuIHdoZW4gaXQgc2hpcHMgbm8gaW52b2NhYmxlIHNjcmlwdHMuXG4vLyBUaGUgY29tbWl0dGVkIHZhdWx0IHRoZXJlZm9yZSBjYXJyaWVzIG5vIG90aGVyd2lzZS1lbXB0eSBwbGFjZWhvbGRlciBmb2xkZXIuXG5hc3luYyBmdW5jdGlvbiBlbnN1cmVJbnZvY2FibGVTY3JpcHRzRm9sZGVyKGFwcDogQXBwKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGludm9jYWJsZVNjcmlwdHNGb2xkZXJQYXRoID0gam9pbihDT0RFX1NDUklQVF9UT09MS0lUX01PRFVMRVNfUk9PVCwgQ09ERV9TQ1JJUFRfVE9PTEtJVF9TRVRUSU5HUy5pbnZvY2FibGVTY3JpcHRzRm9sZGVyKTtcbiAgaWYgKCFhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoaW52b2NhYmxlU2NyaXB0c0ZvbGRlclBhdGgpKSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubWtkaXIoaW52b2NhYmxlU2NyaXB0c0ZvbGRlclBhdGgpO1xuICB9XG59XG5cbi8vIFJlYWRzIHRoZSBwbHVnaW4gdGhlIHZhdWx0IGRlbW9uc3RyYXRlcyBvdXQgb2YgdGhpcyBoZWxwZXIncyBvd24gYGRhdGEuanNvbmAsIHdyaXR0ZW4gYnkgdGhlXG4vLyBwYWNrYWdpbmcgc3RlcCAoc2VlIGBEZW1vVmF1bHRIZWxwZXJTZXR0aW5nc2ApLiBBIHZhdWx0IHdpdGhvdXQgYSByZWFkYWJsZSBtYXJrZXIgd2FzIG5vdCBwcm9kdWNlZCBieVxuLy8gdGhhdCBzdGVwIFx1MjAxNCBoYW5kLWFzc2VtYmxlZCwgb3IgdW5wYWNrZWQgZnJvbSBzb21ldGhpbmcgdGhhdCBpcyBub3QgYSBkZW1vIHZhdWx0IFx1MjAxNCBzbyBpdCBpcyByZWZ1c2VkXG4vLyByYXRoZXIgdGhhbiBib290c3RyYXBwZWQgYWdhaW5zdCBhIGd1ZXNzLlxuYXN5bmMgZnVuY3Rpb24gZ2V0RGVtb2VkUGx1Z2luSWQoYXBwOiBBcHApOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBzZXR0aW5nc1BhdGggPSBqb2luKGFwcC52YXVsdC5jb25maWdEaXIsIFBMVUdJTlNfRk9MREVSX05BTUUsIERFTU9fVkFVTFRfSEVMUEVSX1BMVUdJTl9JRCwgREFUQV9KU09OX0ZJTEVfTkFNRSk7XG4gIGlmICghYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKHNldHRpbmdzUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UpO1xuICB9XG5cbiAgbGV0IHBhcnNlZDogdW5rbm93bjtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLnJlYWQoc2V0dGluZ3NQYXRoKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgfVxuXG4gIGNvbnN0IGRlbW9lZFBsdWdpbklkID0gKHBhcnNlZCBhcyBudWxsIHwgUGFydGlhbDxEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncz4pPy5kZW1vZWRQbHVnaW5JZDtcbiAgaWYgKHR5cGVvZiBkZW1vZWRQbHVnaW5JZCAhPT0gJ3N0cmluZycgfHwgZGVtb2VkUGx1Z2luSWQgPT09IEVNUFRZKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFKTtcbiAgfVxuICByZXR1cm4gZGVtb2VkUGx1Z2luSWQ7XG59XG5cbi8vIFRlbGxzIHRoZSB1c2VyIHRoaXMgdmF1bHQgaXMgYSBzYW5kYm94LCB1c2luZyBPYnNpZGlhbidzIG93biBzYW5kYm94LXZhdWx0IHRyZWF0bWVudDogYW4gaW5maW5pdGVcbi8vIGR1cmF0aW9uLCBkaXNtaXNzZWQgYnkgY2xpY2tpbmcgaXQuIFJhaXNlZCBsYXN0LCBzbyBpdCBpcyB0aGUgbmV3ZXN0IG5vdGljZSBvbiBzY3JlZW4gb25jZVxuLy8gQ29kZVNjcmlwdCBUb29sa2l0J3Mgc3RhcnR1cCBzY3JpcHQgaGFzIGRvbmUgaXRzIG93biB3b3JrLlxuLy9cbi8vIEEgYE5vdGljZWAgaXMgYnVpbHQgaW5zaWRlIHdoYXRldmVyIHdpbmRvdyBpcyBhY3RpdmUgYXQgdGhhdCBtb21lbnQsIGFuZCBTZXR0aW5ncyBpcyBhIFBPUE9VVCBXSU5ET1dcbi8vICh2ZXJpZmllZCBvbiAxLjEzLjYpIHRoYXQgYmVjb21lcyB0aGUgYWN0aXZlIG9uZSB3aGlsZSBpdCBpcyBvcGVuIFx1MjAxNCBzbyBhIG5vdGljZSByYWlzZWQgdGhlbiB3b3VsZCBiZVxuLy8gY3JlYXRlZCBpbiB0aGUgc2V0dGluZ3Mgd2luZG93IGFuZCB2YW5pc2ggd2l0aCBpdC4gU2V0dGluZ3MgaXMgdGhlcmVmb3JlIGNsb3NlZCBmaXJzdDogT2JzaWRpYW4gaGFuZHNcbi8vIHRoZSBtYWluIHdpbmRvdyBiYWNrIGFzIHRoZSBwb3BvdXQgZ29lcyBhd2F5IChzeW5jaHJvbm91c2x5LCBiZWZvcmUgdGhlIG5vdGljZSBpcyBidWlsdCksIGFuZCBhIHVzZXJcbi8vIHdobyBoYXMganVzdCBvcGVuZWQgYSBkZW1vIHZhdWx0IHdhbnRzIHRvIHNlZSB0aGUgdmF1bHQgcmF0aGVyIHRoYW4gYSBzZXR0aW5ncyB3aW5kb3cgYW55d2F5LiBDbG9zaW5nXG4vLyBhbiBhbHJlYWR5LWNsb3NlZCBTZXR0aW5ncyBpcyBhIG5vLW9wLCBzbyBubyBvcGVuLXN0YXRlIHByb2JlIGlzIG5lZWRlZC5cbmZ1bmN0aW9uIHNob3dTYW5kYm94Tm90aWNlKGFwcDogQXBwLCBkZW1vZWRQbHVnaW5JZDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHBsdWdpbk5hbWUgPSBhcHAucGx1Z2lucy5tYW5pZmVzdHNbZGVtb2VkUGx1Z2luSWRdPy5uYW1lID8/IGRlbW9lZFBsdWdpbklkO1xuICBjb25zdCBmcmFnbWVudCA9IGJ1aWxkU2FuZGJveE5vdGljZUZyYWdtZW50KHBsdWdpbk5hbWUpO1xuICBhcHAuc2V0dGluZy5jbG9zZSgpO1xuICBuZXcgTm90aWNlKGZyYWdtZW50LCBTQU5EQk9YX05PVElDRV9EVVJBVElPTl9JTl9NSUxMSVNFQ09ORFMpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQ0EsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsYUFBYTtBQUN0QixTQUFTLGNBQWM7QUFJdkI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBK0RQLE1BQU0sZ0NBQWdDO0FBQ3RDLE1BQU0sbUNBQW1DO0FBQ3pDLE1BQU0sK0JBQTBEO0FBQUEsRUFDOUQseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsYUFBYTtBQUFBLEVBQ2IsMEJBQTBCO0FBQUEsRUFDMUIsbUJBQW1CO0FBQ3JCO0FBRUEsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSx3QkFBNkM7QUFBQSxFQUNqRCxnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixpQkFBaUI7QUFDbkI7QUFFQSxNQUFNLDhCQUE4QjtBQUNwQyxNQUFNLHNCQUFzQjtBQUM1QixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLG1DQUFtQztBQUN6QyxNQUFNLCtCQUErQjtBQUdyQyxNQUFNLDBDQUEwQztBQWtCaEQsZUFBc0IsbUJBQW1CLFFBQWlEO0FBQ3hGLFFBQU0sRUFBRSxJQUFJLElBQUk7QUFFaEIsUUFBTSxpQkFBaUIsTUFBTSxrQkFBa0IsR0FBRztBQUNsRCxRQUFNLHVCQUF1QixF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
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQtaGVscGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgYnkgaW5zdGFsbGluZywgY29uZmlndXJpbmcsIGFuZCBlbmFibGluZyBDb2RlU2NyaXB0IFRvb2xraXQuXG4gKlxuICogQSBwbHVnaW4ncyBkZW1vIHZhdWx0IHNob3djYXNlcyB0aGUgcGx1Z2luIHRocm91Z2ggbm90ZXMgd2hvc2UgYGNvZGUtYnV0dG9uYHMgcnVuIFR5cGVTY3JpcHQgdmlhXG4gKiBDb2RlU2NyaXB0IFRvb2xraXQuIEEgZGVtbyB2YXVsdCB0aGF0IGRvZXMgbm90IGl0c2VsZiBzaGlwIENvZGVTY3JpcHQgVG9vbGtpdCB0aGVyZWZvcmUgbmVlZHMgaXRcbiAqIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWQgYmVmb3JlIHRob3NlIGJ1dHRvbnMgd29yay4ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0gZG9lcyBleGFjdGx5XG4gKiB0aGF0IHdpdGggbm8gY29tbWl0dGVkIENvZGVTY3JpcHQgVG9vbGtpdCBjb25maWcgYW5kIG5vIG1hbnVhbCBzZXR1cCwgc28gaXQgY2FuIGJlIGRyaXZlbiBmcm9tIGEgdGlueVxuICogY29tbWl0dGVkIGJvb3RzdHJhcCBwbHVnaW4gKGBkZW1vLXZhdWx0LWhlbHBlcmApIHRoYXQgaXMgaW5qZWN0ZWQgaW50byBldmVyeSBkZW1vIHZhdWx0IGF0IHJlbGVhc2VcbiAqIHRpbWUuXG4gKlxuICogVGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzIGlzIHJlYWQgZnJvbSB0aGUgaGVscGVyJ3Mgb3duIGBkYXRhLmpzb25gLCB3cml0dGVuIGJ5IHRoZSBwYWNrYWdpbmdcbiAqIHN0ZXAgKHtAbGluayBEZW1vVmF1bHRIZWxwZXJTZXR0aW5nc30pOyBhIHZhdWx0IHdpdGhvdXQgdGhhdCBtYXJrZXIgaXMgcmVmdXNlZCBhcyBub3QgYSBkZW1vIHZhdWx0LlxuICpcbiAqIEl0IHdyaXRlcyBDb2RlU2NyaXB0IFRvb2xraXQncyBzZXR0aW5ncyBCRUZPUkUgZW5hYmxpbmcgaXQsIHNvIHRoZSBwbHVnaW4gbG9hZHMgYWxyZWFkeSBjb25maWd1cmVkIFx1MjAxNFxuICogbm8gcmVsb2FkLiBDb2RlU2NyaXB0IFRvb2xraXQgdGhlbiBydW5zIHRoZSB2YXVsdCdzIGBzdGFydHVwLnRzYCAodmlhIGl0cyBgc3RhcnR1cFNjcmlwdFBhdGhgXG4gKiBzZXR0aW5nKSwgd2hpY2ggaXMgd2hlcmUgZWFjaCB2YXVsdCBvcGVucyBpdHMgc3RhcnQgbm90ZSBhbmQgZG9lcyBhbnkgcGx1Z2luLXNwZWNpZmljIHNldHVwLlxuICpcbiAqIEl0IGFsc28gY3JlYXRlcyBDb2RlU2NyaXB0IFRvb2xraXQncyBpbnZvY2FibGUtc2NyaXB0cyBmb2xkZXIgaWYgaXQgaXMgbWlzc2luZywgc28gZXZlcnkgZGVtbyB2YXVsdFxuICogaGFzIHRoZSBzYW1lIGxheW91dCBldmVuIHdoZW4gdGhlIHZhdWx0IHNoaXBzIG5vIGludm9jYWJsZSBzY3JpcHRzIFx1MjAxNCB0aGUgdmF1bHRzIHRoZW1zZWx2ZXMgY29tbWl0IG5vXG4gKiBlbXB0eSBmb2xkZXIgZm9yIGl0LlxuICpcbiAqIEl0IHRoZW4gaW5zdGFsbHMgdGhlIEZvbGRlciBOb3RlcyBwbHVnaW4sIGNvbmZpZ3VyZWQgdG8gdHJlYXQgYFJFQURNRS5tZGAgYXMgYSBmb2xkZXIncyBvd24gbm90ZS4gQVxuICogZGVtbyB2YXVsdCB0aGF0IGhhcyBvdXRncm93biBhIGZsYXQgbm90ZSBsaXN0IGdyb3VwcyBpdHMgbm90ZXMgaW50byBmb2xkZXJzLCBhbmQgYSBncm91cCBmb2xkZXIgb25seVxuICogc2F5cyB3aGF0IGl0IGlzIGZvciBpZiBpdCBoYXMgYSBub3RlIG9mIGl0cyBvd24gXHUyMDE0IGBSRUFETUUubWRgLCBiZWNhdXNlIHRoYXQgaXMgYWxzbyB0aGUgZmlsZSBHaXRIdWJcbiAqIHJlbmRlcnMgdW5kZXIgdGhlIGZpbGUgbGlzdCB3aGVuIHRoZSBzYW1lIHZhdWx0IGlzIGJyb3dzZWQgYXMgYSByZXBvc2l0b3J5LCBzbyBvbmUgZmlsZSBzZXJ2ZXMgYm90aFxuICogcmVhZGVycy5cbiAqXG4gKiBGaW5hbGx5IGl0IHJhaXNlcyB0aGUgc2FuZGJveCBub3RpY2UgZXhwbGFpbmluZyB0aGF0IHRoZSBvcGVuZWQgdmF1bHQgaXMgYSB0aHJvd2F3YXkgY29weSwgc28gYSB1c2VyXG4gKiB3aG8gd3JpdGVzIHRoZWlyIG93biBub3RlcyBpbiBpdCBpcyBuZXZlciBzdXJwcmlzZWQgYnkgdGhlbSBiZWluZyBhYnNlbnQgZnJvbSB0aGUgbmV4dCBjb3B5LiBTZXR0aW5nc1xuICogaXMgY2xvc2VkIGZpcnN0LCBzbyB0aGUgbm90aWNlIGxhbmRzIGluIHRoZSB2YXVsdCdzIG1haW4gd2luZG93IHJhdGhlciB0aGFuIGluIHRoZSBzZXR0aW5ncyBwb3BvdXQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEhlbHBlclNldHRpbmdzIH0gZnJvbSAnLi9kZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncy50cyc7XG5cbmltcG9ydCB7XG4gIGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbixcbiAgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LFxuICBkaXNhYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBlbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIGluc3RhbGxDb21tdW5pdHlQbHVnaW4sXG4gIGluc3RhbGxDb25maWd1cmVFbmFibGVDb21tdW5pdHlQbHVnaW5cbn0gZnJvbSAnLi9jb21tdW5pdHktcGx1Z2lucy50cyc7XG5pbXBvcnQgeyBhcHBlbmRDb2RlQmxvY2sgfSBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbn1cblxuLyoqXG4gKiBDb2RlU2NyaXB0IFRvb2xraXQncyBzZXR0aW5ncywgd3JpdHRlbiBpbnRvIGl0cyBgZGF0YS5qc29uYCBiZWZvcmUgaXQgaXMgZW5hYmxlZC5cbiAqL1xuaW50ZXJmYWNlIENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3Mge1xuICAvKipcbiAgICogVGhlIFlBTUwgZnJvbnRtYXR0ZXIgbWVyZ2VkIGludG8gZXZlcnkgYGNvZGUtYnV0dG9uYCBibG9jaydzIG93biBjb25maWcsIHVzZWQgaGVyZSB0byB0dXJuIHRoZVxuICAgKiBzb3VyY2Ugdmlld2VyIG9uIGZvciBldmVyeSBidXR0b24gaW4gZXZlcnkgZGVtbyB2YXVsdCB3aXRob3V0IGVkaXRpbmcgYSBzaW5nbGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgKHVuZGVyIHtAbGluayBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzLm1vZHVsZXNSb290fSkgaG9sZGluZyBpbnZvY2FibGUgc2NyaXB0cy5cbiAgICovXG4gIHJlYWRvbmx5IGludm9jYWJsZVNjcmlwdHNGb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIGZvbGRlciB0aGF0IGByZXF1aXJlKCcvXHUyMDI2JylgIHJlc29sdmVzIG1vZHVsZSBwYXRocyBhZ2FpbnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc1Jvb3Q6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBDb2RlU2NyaXB0IFRvb2xraXQgaGFuZGxlcyBgb2JzaWRpYW46Ly9gIHByb3RvY29sIFVSTHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRIYW5kbGVQcm90b2NvbFVybHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoICh1bmRlciB7QGxpbmsgQ29kZVNjcmlwdFRvb2xraXRTZXR0aW5ncy5tb2R1bGVzUm9vdH0pIG9mIHRoZSBzY3JpcHQgcnVuIG9uIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzdGFydHVwU2NyaXB0UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZvbGRlciBOb3Rlcycgc2V0dGluZ3MsIHdyaXR0ZW4gaW50byBpdHMgYGRhdGEuanNvbmAgYmVmb3JlIGl0IGlzIGVuYWJsZWQuXG4gKi9cbmludGVyZmFjZSBGb2xkZXJOb3Rlc1NldHRpbmdzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIGEgZm9sZGVyJ3Mgb3duIG5vdGUgaXMgbG9va2VkIGZvciB1bmRlciwgd2l0aG91dCB0aGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyTm90ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBhIGZvbGRlcidzIG93biBub3RlIGlzIGhpZGRlbiBmcm9tIHRoZSBmaWxlIGV4cGxvcmVyLCBzbyB0aGUgZm9sZGVyIGl0c2VsZiBzdGFuZHMgZm9yIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgaGlkZUZvbGRlck5vdGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXJlIGEgZm9sZGVyJ3Mgb3duIG5vdGUgaXMga2VwdCwgcmVsYXRpdmUgdG8gdGhlIGZvbGRlciBpdCBkZXNjcmliZXMuXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlTG9jYXRpb246IHN0cmluZztcbn1cblxuY29uc3QgQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgPSAnZml4LXJlcXVpcmUtbW9kdWxlcyc7XG5jb25zdCBDT0RFX1NDUklQVF9UT09MS0lUX01PRFVMRVNfUk9PVCA9ICdfYXNzZXRzL0NvZGVTY3JpcHRUb29sa2l0JztcbmNvbnN0IENPREVfU0NSSVBUX1RPT0xLSVRfU0VUVElOR1M6IENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3MgPSB7XG4gIGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiAnLS0tXFxuc291cmNlVmlzaWJpbGl0eTogY29sbGFwc2VkXFxuLS0tJyxcbiAgaW52b2NhYmxlU2NyaXB0c0ZvbGRlcjogJ0ludm9jYWJsZXMnLFxuICBtb2R1bGVzUm9vdDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9NT0RVTEVTX1JPT1QsXG4gIHNob3VsZEhhbmRsZVByb3RvY29sVXJsczogdHJ1ZSxcbiAgc3RhcnR1cFNjcmlwdFBhdGg6ICdzdGFydHVwLnRzJ1xufTtcblxuY29uc3QgRk9MREVSX05PVEVTX1BMVUdJTl9JRCA9ICdmb2xkZXItbm90ZXMnO1xuLy8gYFJFQURNRWAgcmF0aGVyIHRoYW4gRm9sZGVyIE5vdGVzJyBvd24gYHt7Zm9sZGVyX25hbWV9fWAgZGVmYXVsdDogdGhlIHNhbWUgZmlsZSBoYXMgdG8gYmUgdGhlIGZvbGRlcidzXG4vLyBub3RlIGluIE9ic2lkaWFuIEFORCB0aGUgcGFnZSBHaXRIdWIgcmVuZGVycyB3aGVuIHRoZSB2YXVsdCBpcyBicm93c2VkIGFzIGEgcmVwb3NpdG9yeSwgYW5kIEdpdEh1YlxuLy8gb25seSBkb2VzIHRoYXQgZm9yIGBSRUFETUUubWRgLiBgaW5zaWRlRm9sZGVyYCBrZWVwcyBpdCB3aXRoIHRoZSBub3RlcyBpdCBkZXNjcmliZXMgcmF0aGVyIHRoYW4gYmVzaWRlXG4vLyB0aGUgZm9sZGVyLCBhbmQgaGlkaW5nIGl0IGxldHMgdGhlIGZvbGRlciBpdHNlbGYgc3RhbmQgZm9yIHRoZSBub3RlIGluc3RlYWQgb2YgbGlzdGluZyBib3RoLlxuY29uc3QgRk9MREVSX05PVEVTX1NFVFRJTkdTOiBGb2xkZXJOb3Rlc1NldHRpbmdzID0ge1xuICBmb2xkZXJOb3RlTmFtZTogJ1JFQURNRScsXG4gIGhpZGVGb2xkZXJOb3RlOiB0cnVlLFxuICBzdG9yYWdlTG9jYXRpb246ICdpbnNpZGVGb2xkZXInXG59O1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgUExVR0lOU19GT0xERVJfTkFNRSA9ICdwbHVnaW5zJztcbmNvbnN0IERBVEFfSlNPTl9GSUxFX05BTUUgPSAnZGF0YS5qc29uJztcbmNvbnN0IElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFID0gJ0ludmFsaWQgZGVtbyB2YXVsdCc7XG5jb25zdCBPUEVOX0RFTU9fVkFVTFRfQ09NTUFORF9OQU1FID0gJ09wZW4gZGVtbyB2YXVsdCc7XG4vLyBgMGAgYXNrcyBPYnNpZGlhbiB0byBrZWVwIHRoZSBub3RpY2UgdXAgdW50aWwgdGhlIHVzZXIgY2xpY2tzIGl0IFx1MjAxNCB0aGUgc2FtZSB0cmVhdG1lbnQgT2JzaWRpYW4gZ2l2ZXNcbi8vIGl0cyBvd24gc2FuZGJveC12YXVsdCBub3RpY2UsIGFuZCB3aGF0IHRoZSBkZW1vLXZhdWx0IG5vdGljZSBpcyBtb2RlbGxlZCBvbi5cbmNvbnN0IFNBTkRCT1hfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyA9IDA7XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgc28gaXRzIG5vdGVzJyBgY29kZS1idXR0b25gcyB3b3JrIHdpdGggbm8gbWFudWFsIHNldHVwOiBpbnN0YWxscyBDb2RlU2NyaXB0XG4gKiBUb29sa2l0IGZyb20gdGhlIGNvbW11bml0eSBzdG9yZSAoaWYgaXQgaXMgbm90IGFscmVhZHkgaW5zdGFsbGVkKSwgd3JpdGVzIGl0cyBzZXR0aW5ncywgdGhlbiBlbmFibGVzXG4gKiBpdCBcdTIwMTQgd3JpdGluZyB0aGUgc2V0dGluZ3MgQkVGT1JFIGVuYWJsaW5nIHNvIGEgZnJlc2ggZW5hYmxlIGxvYWRzIGl0IGFscmVhZHkgY29uZmlndXJlZCwgd2l0aCBub1xuICogcmVsb2FkLiBJZiBDb2RlU2NyaXB0IFRvb2xraXQgaXMgYWxyZWFkeSBlbmFibGVkIGJ1dCB0aGUgc2V0dGluZ3MganVzdCBjaGFuZ2VkLCBpdCBpcyByZWxvYWRlZFxuICogKGRpc2FibGVkIHRoZW4gZW5hYmxlZCkgc28gaXQgcmUtcmVhZHMgYGRhdGEuanNvbmA7IHdoZW4gdGhlIHNldHRpbmdzIHdlcmUgYWxyZWFkeSBpbiBwbGFjZSwgbm90aGluZyBpc1xuICogcmVsb2FkZWQgKHNvIGEgcm91dGluZSB2YXVsdCByZS1vcGVuIGRvZXMgbm90IHJlLXJ1biBDb2RlU2NyaXB0IFRvb2xraXQncyBzdGFydHVwKS4gQ29kZVNjcmlwdCBUb29sa2l0XG4gKiB0aGVuIHJ1bnMgdGhlIHZhdWx0J3MgYHN0YXJ0dXAudHNgLiBGb2xkZXIgTm90ZXMgaXMgaW5zdGFsbGVkIG5leHQsIGNvbmZpZ3VyZWQgdG8gdHJlYXQgYFJFQURNRS5tZGAgYXNcbiAqIGEgZm9sZGVyJ3Mgb3duIG5vdGUsIHNvIGEgdmF1bHQgd2hvc2Ugbm90ZXMgYXJlIGdyb3VwZWQgaW50byBmb2xkZXJzIGRlc2NyaWJlcyBlYWNoIGdyb3VwIGluIHRoZSBmaWxlXG4gKiBleHBsb3Jlci4gRmluYWxseSBpdCBjbG9zZXMgU2V0dGluZ3MgKHNvIHRoZSBub3RpY2UgY2Fubm90IGJlIHJhaXNlZCBpbnNpZGUgdGhlIHNldHRpbmdzIHBvcG91dCkgYW5kXG4gKiByYWlzZXMgdGhlIHNhbmRib3ggbm90aWNlIGRlc2NyaWJpbmcgdGhlIG9wZW5lZCB2YXVsdCBhcyBhIHRocm93YXdheSBjb3B5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEJvb3RzdHJhcERlbW9WYXVsdFBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgQ29kZVNjcmlwdCBUb29sa2l0IGlzIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWRcbiAqIGFuZCB0aGUgc2FuZGJveCBub3RpY2UgaGFzIGJlZW4gc2hvd24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBib290c3RyYXBEZW1vVmF1bHQocGFyYW1zOiBCb290c3RyYXBEZW1vVmF1bHRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAgfSA9IHBhcmFtcztcbiAgLy8gUmVzb2x2ZWQgZmlyc3QsIHNvIGEgdmF1bHQgdGhhdCBpcyBub3QgYSBkZW1vIHZhdWx0IGlzIHJlZnVzZWQgYmVmb3JlIGFueXRoaW5nIGlzIGluc3RhbGxlZCBpbnRvIGl0LlxuICBjb25zdCBkZW1vZWRQbHVnaW5JZCA9IGF3YWl0IGdldERlbW9lZFBsdWdpbklkKGFwcCk7XG4gIGF3YWl0IGluc3RhbGxDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2luKHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQ6IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lELFxuICAgIHNldHRpbmdzOiBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTXG4gIH0pO1xuICBhd2FpdCBlbnN1cmVJbnZvY2FibGVTY3JpcHRzRm9sZGVyKGFwcCk7XG5cbiAgaWYgKCFhcHAucGx1Z2lucy5lbmFibGVkUGx1Z2lucy5oYXMoQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQpKSB7XG4gICAgYXdhaXQgZW5hYmxlQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgfSk7XG4gIH0gZWxzZSBpZiAocmVzdWx0ID09PSBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQuU3VjY2Vzcykge1xuICAgIC8vIEFscmVhZHkgZW5hYmxlZCB3aXRoIHN0YWxlIHNldHRpbmdzIFx1MjAxNCByZWxvYWQgc28gQ29kZVNjcmlwdCBUb29sa2l0IHJlLXJlYWRzIHRoZSBmcmVzaGx5IHdyaXR0ZW4gZGF0YS5qc29uLlxuICAgIGF3YWl0IGRpc2FibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgfVxuXG4gIC8vIEFmdGVyIENvZGVTY3JpcHQgVG9vbGtpdCwgc28gdGhlIHZhdWx0J3Mgc3RhcnR1cCBzY3JpcHQgaGFzIGFscmVhZHkgb3BlbmVkIHRoZSBzdGFydCBub3RlIGJ5IHRoZSB0aW1lXG4gIC8vIHRoZSBmaWxlIGV4cGxvcmVyIGdhaW5zIGl0cyBmb2xkZXItbm90ZSBiZWhhdmlvci5cbiAgYXdhaXQgaW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpbih7XG4gICAgYXBwLFxuICAgIHBsdWdpbklkOiBGT0xERVJfTk9URVNfUExVR0lOX0lELFxuICAgIHNldHRpbmdzOiBGT0xERVJfTk9URVNfU0VUVElOR1NcbiAgfSk7XG5cbiAgc2hvd1NhbmRib3hOb3RpY2UoYXBwLCBkZW1vZWRQbHVnaW5JZCk7XG59XG5cbi8vIEJ1aWxkcyB0aGUgc2FuZGJveCBub3RpY2UgY29udGVudDogd2hhdCB0aGlzIHZhdWx0IGlzLCB3aGVyZSBpdCBsaXZlcywgaG93IGxvbmcgaXQgbGl2ZXMsIGFuZCB3aHlcbi8vIHJlLXJ1bm5pbmcgdGhlIGNvbW1hbmQgcHJvZHVjZXMgYSB2YXVsdCB3aXRob3V0IHRoZSBub3RlcyBqdXN0IHdyaXR0ZW4gaGVyZS5cbi8vXG4vLyBFdmVyeSBjbGFpbSBoYXMgdG8gc3RheSB0cnVlIG9mIHRoZSBvcGVuZXIgKGBkZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyLnRzYCk6IGl0IGV4dHJhY3RzIGEgRlJFU0ggY29weVxuLy8gaW50byBpdHMgb3duIGZvbGRlciBvbiBldmVyeSBvcGVuLCBhbmQgZGVsZXRlcyBleHRyYWN0ZWQgZm9sZGVycyBvbGRlciB0aGFuIGEgZGF5IG9uIGVhY2ggbGF0ZXIgb3Blbi5cbi8vIFNvIHRoZSB2YXVsdCBpcyBhIHRlbXBvcmFyeSBzYW5kYm94IFx1MjAxNCBpdCBtdXN0IG5ldmVyIGJlIGRlc2NyaWJlZCBhcyBhIHBsYWNlIHdvcmsgY2FuIGJlIGxlZnQuXG5mdW5jdGlvbiBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lOiBzdHJpbmcpOiBEb2N1bWVudEZyYWdtZW50IHtcbiAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50KChmcmFnbWVudCkgPT4ge1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ1RoaXMgaXMgYSBkZW1vIHZhdWx0IGZvciAnKTtcbiAgICBhcHBlbmRDb2RlQmxvY2soZnJhZ21lbnQsIHBsdWdpbk5hbWUpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJy4nKTtcblxuICAgIGZyYWdtZW50LmNyZWF0ZUVsKCdicicpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ0l0IGlzIGEgdGVtcG9yYXJ5IHNhbmRib3gsIGNsZWFuZWQgdXAgYXV0b21hdGljYWxseSBhYm91dCBhIGRheSBhZnRlciB5b3UgbGFzdCB1c2UgaXQuJyk7XG5cbiAgICBmcmFnbWVudC5jcmVhdGVFbCgnYnInKTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCdFeGVjdXRpbmcgJyk7XG4gICAgZnJhZ21lbnQuY3JlYXRlRWwoJ2InLCB7IHRleHQ6IGAke3BsdWdpbk5hbWV9OiAke09QRU5fREVNT19WQVVMVF9DT01NQU5EX05BTUV9YCB9KTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCcgY29tbWFuZCBhZ2FpbiBjcmVhdGVzIGEgbmV3IGNvcHkgd2l0aCB0aGUgbGF0ZXN0IHBsdWdpbiB2ZXJzaW9uLCBzbyB5b3VyIG5vdGVzIHdpbGwgbm90IGFwcGVhciBpbiBpdC4nKTtcbiAgfSk7XG59XG5cbi8vIENyZWF0ZXMgQ29kZVNjcmlwdCBUb29sa2l0J3MgaW52b2NhYmxlLXNjcmlwdHMgZm9sZGVyICh1bmRlciBgbW9kdWxlc1Jvb3RgKSBpZiBpdCBpcyBtaXNzaW5nLlxuLy8gRXZlcnkgZGVtbyB2YXVsdCB0aGVuIGhhcyB0aGUgc2FtZSBDb2RlU2NyaXB0IFRvb2xraXQgbGF5b3V0IGV2ZW4gd2hlbiBpdCBzaGlwcyBubyBpbnZvY2FibGUgc2NyaXB0cy5cbi8vIFRoZSBjb21taXR0ZWQgdmF1bHQgdGhlcmVmb3JlIGNhcnJpZXMgbm8gb3RoZXJ3aXNlLWVtcHR5IHBsYWNlaG9sZGVyIGZvbGRlci5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZUludm9jYWJsZVNjcmlwdHNGb2xkZXIoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaW52b2NhYmxlU2NyaXB0c0ZvbGRlclBhdGggPSBqb2luKENPREVfU0NSSVBUX1RPT0xLSVRfTU9EVUxFU19ST09ULCBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTLmludm9jYWJsZVNjcmlwdHNGb2xkZXIpO1xuICBpZiAoIWF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCkpIHtcbiAgICBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5ta2RpcihpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCk7XG4gIH1cbn1cblxuLy8gUmVhZHMgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzIG91dCBvZiB0aGlzIGhlbHBlcidzIG93biBgZGF0YS5qc29uYCwgd3JpdHRlbiBieSB0aGVcbi8vIHBhY2thZ2luZyBzdGVwIChzZWUgYERlbW9WYXVsdEhlbHBlclNldHRpbmdzYCkuIEEgdmF1bHQgd2l0aG91dCBhIHJlYWRhYmxlIG1hcmtlciB3YXMgbm90IHByb2R1Y2VkIGJ5XG4vLyB0aGF0IHN0ZXAgXHUyMDE0IGhhbmQtYXNzZW1ibGVkLCBvciB1bnBhY2tlZCBmcm9tIHNvbWV0aGluZyB0aGF0IGlzIG5vdCBhIGRlbW8gdmF1bHQgXHUyMDE0IHNvIGl0IGlzIHJlZnVzZWRcbi8vIHJhdGhlciB0aGFuIGJvb3RzdHJhcHBlZCBhZ2FpbnN0IGEgZ3Vlc3MuXG5hc3luYyBmdW5jdGlvbiBnZXREZW1vZWRQbHVnaW5JZChhcHA6IEFwcCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNldHRpbmdzUGF0aCA9IGpvaW4oYXBwLnZhdWx0LmNvbmZpZ0RpciwgUExVR0lOU19GT0xERVJfTkFNRSwgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lELCBEQVRBX0pTT05fRklMRV9OQU1FKTtcbiAgaWYgKCFhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoc2V0dGluZ3NQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSk7XG4gIH1cblxuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChzZXR0aW5nc1BhdGgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UsIHsgY2F1c2U6IGVycm9yIH0pO1xuICB9XG5cbiAgY29uc3QgZGVtb2VkUGx1Z2luSWQgPSAocGFyc2VkIGFzIG51bGwgfCBQYXJ0aWFsPERlbW9WYXVsdEhlbHBlclNldHRpbmdzPik/LmRlbW9lZFBsdWdpbklkO1xuICBpZiAodHlwZW9mIGRlbW9lZFBsdWdpbklkICE9PSAnc3RyaW5nJyB8fCBkZW1vZWRQbHVnaW5JZCA9PT0gRU1QVFkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UpO1xuICB9XG4gIHJldHVybiBkZW1vZWRQbHVnaW5JZDtcbn1cblxuLy8gVGVsbHMgdGhlIHVzZXIgdGhpcyB2YXVsdCBpcyBhIHNhbmRib3gsIHVzaW5nIE9ic2lkaWFuJ3Mgb3duIHNhbmRib3gtdmF1bHQgdHJlYXRtZW50OiBhbiBpbmZpbml0ZVxuLy8gZHVyYXRpb24sIGRpc21pc3NlZCBieSBjbGlja2luZyBpdC4gUmFpc2VkIGxhc3QsIHNvIGl0IGlzIHRoZSBuZXdlc3Qgbm90aWNlIG9uIHNjcmVlbiBvbmNlXG4vLyBDb2RlU2NyaXB0IFRvb2xraXQncyBzdGFydHVwIHNjcmlwdCBoYXMgZG9uZSBpdHMgb3duIHdvcmsuXG4vL1xuLy8gQSBgTm90aWNlYCBpcyBidWlsdCBpbnNpZGUgd2hhdGV2ZXIgd2luZG93IGlzIGFjdGl2ZSBhdCB0aGF0IG1vbWVudCwgYW5kIFNldHRpbmdzIGlzIGEgUE9QT1VUIFdJTkRPV1xuLy8gKHZlcmlmaWVkIG9uIDEuMTMuNikgdGhhdCBiZWNvbWVzIHRoZSBhY3RpdmUgb25lIHdoaWxlIGl0IGlzIG9wZW4gXHUyMDE0IHNvIGEgbm90aWNlIHJhaXNlZCB0aGVuIHdvdWxkIGJlXG4vLyBjcmVhdGVkIGluIHRoZSBzZXR0aW5ncyB3aW5kb3cgYW5kIHZhbmlzaCB3aXRoIGl0LiBTZXR0aW5ncyBpcyB0aGVyZWZvcmUgY2xvc2VkIGZpcnN0OiBPYnNpZGlhbiBoYW5kc1xuLy8gdGhlIG1haW4gd2luZG93IGJhY2sgYXMgdGhlIHBvcG91dCBnb2VzIGF3YXkgKHN5bmNocm9ub3VzbHksIGJlZm9yZSB0aGUgbm90aWNlIGlzIGJ1aWx0KSwgYW5kIGEgdXNlclxuLy8gd2hvIGhhcyBqdXN0IG9wZW5lZCBhIGRlbW8gdmF1bHQgd2FudHMgdG8gc2VlIHRoZSB2YXVsdCByYXRoZXIgdGhhbiBhIHNldHRpbmdzIHdpbmRvdyBhbnl3YXkuIENsb3Npbmdcbi8vIGFuIGFscmVhZHktY2xvc2VkIFNldHRpbmdzIGlzIGEgbm8tb3AsIHNvIG5vIG9wZW4tc3RhdGUgcHJvYmUgaXMgbmVlZGVkLlxuZnVuY3Rpb24gc2hvd1NhbmRib3hOb3RpY2UoYXBwOiBBcHAsIGRlbW9lZFBsdWdpbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcGx1Z2luTmFtZSA9IGFwcC5wbHVnaW5zLm1hbmlmZXN0c1tkZW1vZWRQbHVnaW5JZF0/Lm5hbWUgPz8gZGVtb2VkUGx1Z2luSWQ7XG4gIGNvbnN0IGZyYWdtZW50ID0gYnVpbGRTYW5kYm94Tm90aWNlRnJhZ21lbnQocGx1Z2luTmFtZSk7XG4gIGFwcC5zZXR0aW5nLmNsb3NlKCk7XG4gIG5ldyBOb3RpY2UoZnJhZ21lbnQsIFNBTkRCT1hfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9DQSxTQUFTLFlBQVk7QUFDckIsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsY0FBYztBQUl2QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHVCQUF1QjtBQStEaEMsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSxtQ0FBbUM7QUFDekMsTUFBTSwrQkFBMEQ7QUFBQSxFQUM5RCx5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4QixhQUFhO0FBQUEsRUFDYiwwQkFBMEI7QUFBQSxFQUMxQixtQkFBbUI7QUFDckI7QUFFQSxNQUFNLHlCQUF5QjtBQUsvQixNQUFNLHdCQUE2QztBQUFBLEVBQ2pELGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGlCQUFpQjtBQUNuQjtBQUVBLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sbUNBQW1DO0FBQ3pDLE1BQU0sK0JBQStCO0FBR3JDLE1BQU0sMENBQTBDO0FBa0JoRCxlQUFzQixtQkFBbUIsUUFBaUQ7QUFDeEYsUUFBTSxFQUFF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
|
|
@@ -109,6 +109,10 @@ import {
|
|
|
109
109
|
getDemoVaultArchiveFileName,
|
|
110
110
|
getDemoVaultFolderName
|
|
111
111
|
} from "./demo-vault-naming.mjs";
|
|
112
|
+
import {
|
|
113
|
+
asCodeBlock,
|
|
114
|
+
createFragmentWithCodeBlocks
|
|
115
|
+
} from "./html-element.mjs";
|
|
112
116
|
import { selectOption } from "./modals/select-option.mjs";
|
|
113
117
|
const DEMO_VAULTS_CACHE_FOLDER = "obsidian-demo-vaults";
|
|
114
118
|
const ARCHIVES_SUBFOLDER = "archives";
|
|
@@ -126,13 +130,13 @@ async function openDemoVault(params) {
|
|
|
126
130
|
pluginVersion
|
|
127
131
|
} = params;
|
|
128
132
|
const progressNotice = __using(_stack, pluginNoticeComponent.showNoticeAfterDelay({
|
|
129
|
-
content: `Opening demo vault for ${pluginName}\u2026
|
|
133
|
+
content: createFragmentWithCodeBlocks(`Opening demo vault for ${asCodeBlock(pluginName)}\u2026`),
|
|
130
134
|
delayInMilliseconds: 0,
|
|
131
135
|
mode: PluginNoticeMode.Separate
|
|
132
136
|
}));
|
|
133
137
|
const repo = await getCommunityPluginRepo(pluginId);
|
|
134
138
|
if (!repo) {
|
|
135
|
-
pluginNoticeComponent.showNotice(`Could not find plugin ${pluginName} in the community plugins registry.`);
|
|
139
|
+
pluginNoticeComponent.showNotice(createFragmentWithCodeBlocks(`Could not find plugin ${asCodeBlock(pluginName)} in the community plugins registry.`));
|
|
136
140
|
return;
|
|
137
141
|
}
|
|
138
142
|
const currentVersion = pluginVersion;
|
|
@@ -143,7 +147,7 @@ async function openDemoVault(params) {
|
|
|
143
147
|
} else {
|
|
144
148
|
const chosenVersion = await selectOption({
|
|
145
149
|
app,
|
|
146
|
-
message: `Current version of plugin ${pluginName} v${currentVersion} is not the latest (v${latestVersion})
|
|
150
|
+
message: createFragmentWithCodeBlocks(`Current version of plugin ${asCodeBlock(pluginName)} v${currentVersion} is not the latest (v${latestVersion})`),
|
|
147
151
|
options: [
|
|
148
152
|
{
|
|
149
153
|
isCta: true,
|
|
@@ -159,7 +163,7 @@ async function openDemoVault(params) {
|
|
|
159
163
|
value: null
|
|
160
164
|
}
|
|
161
165
|
],
|
|
162
|
-
title: pluginName
|
|
166
|
+
title: createFragmentWithCodeBlocks(asCodeBlock(pluginName))
|
|
163
167
|
});
|
|
164
168
|
if (chosenVersion === null) {
|
|
165
169
|
return;
|
|
@@ -177,7 +181,7 @@ async function openDemoVault(params) {
|
|
|
177
181
|
if (!archive) {
|
|
178
182
|
return;
|
|
179
183
|
}
|
|
180
|
-
progressNotice.setContent(`Extracting demo vault for ${pluginName} v${versionToOpen}\u2026`);
|
|
184
|
+
progressNotice.setContent(createFragmentWithCodeBlocks(`Extracting demo vault for ${asCodeBlock(pluginName)} v${versionToOpen}\u2026`));
|
|
181
185
|
cleanupOrphanedExtractedVaults();
|
|
182
186
|
const vaultDirectory = extractDemoVaultToFreshFolder({
|
|
183
187
|
archive,
|
|
@@ -245,14 +249,14 @@ async function resolveDemoVaultArchive(params) {
|
|
|
245
249
|
if (existsSync(archivePath)) {
|
|
246
250
|
return readFileSync(archivePath);
|
|
247
251
|
}
|
|
248
|
-
progressNotice.setContent(`Downloading demo vault for ${pluginName} v${version}\u2026`);
|
|
252
|
+
progressNotice.setContent(createFragmentWithCodeBlocks(`Downloading demo vault for ${asCodeBlock(pluginName)} v${version}\u2026`));
|
|
249
253
|
const assetUrl = `https://github.com/${repo}/releases/download/${version}/${getDemoVaultArchiveFileName(pluginId)}`;
|
|
250
254
|
const response = await requestUrl({
|
|
251
255
|
throw: false,
|
|
252
256
|
url: assetUrl
|
|
253
257
|
});
|
|
254
258
|
if (response.status !== HTTP_STATUS_OK) {
|
|
255
|
-
pluginNoticeComponent.showNotice(`No demo vault is available for plugin ${pluginName} v${version}.`);
|
|
259
|
+
pluginNoticeComponent.showNotice(createFragmentWithCodeBlocks(`No demo vault is available for plugin ${asCodeBlock(pluginName)} v${version}.`));
|
|
256
260
|
return null;
|
|
257
261
|
}
|
|
258
262
|
const archive = Buffer2.from(response.arrayBuffer);
|
|
@@ -263,4 +267,4 @@ async function resolveDemoVaultArchive(params) {
|
|
|
263
267
|
export {
|
|
264
268
|
openDemoVault
|
|
265
269
|
};
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEb3dubG9hZHMgYW5kIG9wZW5zIGEgcGx1Z2luJ3Mgc2hpcHBlZCBkZW1vIHZhdWx0IGluIGEgbmV3IE9ic2lkaWFuIHdpbmRvdyAoZGVza3RvcCBvbmx5KS5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gYXR0YWNoIGEgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCBhcmNoaXZlIHRvIGVhY2ggR2l0SHViIHJlbGVhc2UgKHNlZVxuICogYGFyY2hpdmVQbHVnaW5EZW1vVmF1bHRgIGluIGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2A7IGV2ZXJ5IG5hbWUgc2hhcmVkIHdpdGggaXQgY29tZXMgZnJvbVxuICogYGRlbW8tdmF1bHQtbmFtaW5nLnRzYCkuIFRoaXMgcmVzb2x2ZXMgdGhlIHBsdWdpbidzIHJlcG9zaXRvcnkgZnJvbSBPYnNpZGlhbidzIGNvbW11bml0eSByZWdpc3RyeSxcbiAqIGRvd25sb2FkcyB0aGUgYXJjaGl2ZSBmb3IgdGhlIGNob3NlbiB2ZXJzaW9uLCBhbmQgb3BlbnMgaXQgYXMgYSB2YXVsdCBpbiBhIG5ldyB3aW5kb3cuIFdoZW4gdGhlXG4gKiBpbnN0YWxsZWQgcGx1Z2luIHZlcnNpb24gaXMgYmVoaW5kIHRoZSBsYXRlc3QgcmVsZWFzZSwgdGhlIHVzZXIgaXMgb2ZmZXJlZCBhIGNob2ljZSBiZXR3ZWVuIHRoZSB0d29cbiAqIHZlcnNpb25zLlxuICpcbiAqIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duIGltbWVkaWF0ZWx5IChkb3dubG9hZCArIGV4dHJhY3Rpb24gY2FuIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWVcbiAqIHNvbWV0aGluZyBpcyBoYXBwZW5pbmcgcmlnaHQgYXdheSkuIE9ubHkgdGhlIGRvd25sb2FkZWQgQVJDSElWRSBpcyBjYWNoZWQgKHVuZGVyIHRoZSBPUyB0ZW1wXG4gKiBkaXJlY3RvcnkpOyBldmVyeSBpbnZvY2F0aW9uIGV4dHJhY3RzIGEgRlJFU0ggY29weSBpbnRvIGl0cyBvd24gdGVtcG9yYXJ5IGZvbGRlciBhbmQgb3BlbnMgdGhhdCwgc28gYVxuICogcHJldmlvdXMgc2Vzc2lvbidzIGVkaXRzIG5ldmVyIGxlYWsgaW50byBhIG5ldyBvbmUuIFRoZSB2YXVsdCBmb2xkZXIgaXMgdGhlIGFyY2hpdmUncyBvd24gc2luZ2xlXG4gKiB0b3AtbGV2ZWwgZm9sZGVyLCBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj5gLCB3aGljaCByZWFkcyBuaWNlbHkgaW4gT2JzaWRpYW4ncyB2YXVsdCBzd2l0Y2hlclxuICogYW5kIGlzIHRoZSBzYW1lIG5hbWUgYSBoYW5kLXVuemlwcGVkIGFyY2hpdmUgcHJvZHVjZXMuIE9ycGhhbmVkIGV4dHJhY3RlZCBmb2xkZXJzIGxlZnQgb3ZlciBmcm9tXG4gKiBlYXJsaWVyIHNlc3Npb25zIGFyZSBjbGVhbmVkIHVwIChiZXN0LWVmZm9ydCkgb24gZWFjaCBvcGVuLlxuICpcbiAqICoqTm90aGluZyBoZXJlIG1heSB0b3VjaCBhIHBsYXRmb3JtLW9ubHkgQVBJIHdoaWxlIHRoZSBtb2R1bGUgSU5JVElBTElaRVMuKiogVGhlIGBub2RlOmAgaW1wb3J0cyBiZWxvd1xuICogYXJlIHNhZmUgdG8gbWVyZWx5IGV2YWx1YXRlIG9uIG1vYmlsZSBcdTIwMTQgYHJlcXVpcmVgIGhhbmRzIGJhY2sgYHVuZGVmaW5lZGAgdGhlcmUgYW5kIG5vdGhpbmcgcmVhZHMgaXQgYXRcbiAqIGxvYWQgdGltZSBcdTIwMTQgYW5kIGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBiYXJyZWxzIHJlLWV4cG9ydCB0aGlzIG1vZHVsZSwgdGhhdCBpcyBhIGxvYWQtYmVhcmluZyBwcm9wZXJ0eSBvZlxuICogdGhlIHdob2xlIGxpYnJhcnkgcmF0aGVyIHRoYW4gYSBkZXRhaWwgb2YgdGhpcyBmaWxlLiBJdCB3YXMgbGVhcm5lZCB0aGUgaGFyZCB3YXk6IHRoaXMgbW9kdWxlIG9uY2VcbiAqIGltcG9ydGVkIGBhZG0temlwYCwgd2hvc2UgemlwLWNyeXB0byBtZXRob2Qgb3BlbnMgd2l0aCBhIHRvcC1sZXZlbFxuICogYGNvbnN0IHsgcmFuZG9tRmlsbFN5bmMgfSA9IHJlcXVpcmUoJ2NyeXB0bycpYCwgYW5kIGEgc3RhdGljIGBpbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnYCB0aGVyZWZvcmVcbiAqIGtpbGxlZCB0aGUgbGlicmFyeSdzIGxvYWQgb24gQW5kcm9pZCAoc2VlIHRoZSBtb2JpbGUtbG9hZCBjaGVjayBpblxuICogYHNjcmlwdHMvaGVscGVycy9hc3NlcnQtbW9iaWxlLWxvYWRhYmxlLWJ1bmRsZS50c2AsIHdoaWNoIGZhaWxzIHRoZSBidWlsZCBvbiBleGFjdGx5IHRoYXQpLiBFeHRyYWN0aW9uXG4gKiBub3cgZ29lcyB0aHJvdWdoIGBkZXNrdG9wLXppcC1leHRyYWN0b3IudHNgLCB3aGljaCBuZWVkcyBubyBkZXBlbmRlbmN5IGF0IGFsbCBcdTIwMTQgYnV0IGFueSBmdXR1cmVcbiAqIGRlcGVuZGVuY3kgdGhhdCBpbml0aWFsaXplcyBhZ2FpbnN0IGEgcGxhdGZvcm0tb25seSBBUEkgc3RpbGwgaGFzIHRvIGJlIGRlZmVycmVkIGJlaGluZCBhIGNhbGwtdGltZVxuICogYGltcG9ydCgpYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZXh0cmFjdFppcEFyY2hpdmUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGVza3RvcC16aXAtZXh0cmFjdG9yJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ25vZGU6YnVmZmVyJztcbmltcG9ydCB7XG4gIGV4aXN0c1N5bmMsXG4gIG1rZGlyU3luYyxcbiAgbWtkdGVtcFN5bmMsXG4gIHJlYWRkaXJTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHJtU3luYyxcbiAgc3RhdFN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IHJlcXVlc3RVcmwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICBQbHVnaW5Ob3RpY2VDb21wb25lbnREZWxheWVkTm90aWNlXG59IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7XG4gIGdldENvbW11bml0eVBsdWdpblJlcG8sXG4gIGdldExhdGVzdFJlbGVhc2VWZXJzaW9uXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuaW1wb3J0IHsgUGx1Z2luTm90aWNlTW9kZSB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5pbXBvcnQge1xuICBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUsXG4gIGdldERlbW9WYXVsdEZvbGRlck5hbWVcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LW5hbWluZy50cyc7XG5pbXBvcnQgeyBzZWxlY3RPcHRpb24gfSBmcm9tICcuL21vZGFscy9zZWxlY3Qtb3B0aW9uLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgb3BlbkRlbW9WYXVsdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkRlbW9WYXVsdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQsIHVzZWQgdG8gbG9jYXRlIHRoZSBHaXRIdWIgcmVwb3NpdG9yeSwgdG8gbmFtZSB0aGUgYXJjaGl2ZSBhc3NldCwgYW5kIHRvIG5hbWUgdGhlXG4gICAqIGNhY2hlZCBhcmNoaXZlIGFuZCB0aGUgZXh0cmFjdGVkIHZhdWx0IGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZGlzcGxheSBuYW1lLCB1c2VkIHRvIGxhYmVsIHRoZSBub3RpY2VzIGFuZCB0aGUgdmVyc2lvbi1jaG9pY2UgZGlhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90aWNlIGNvbXBvbmVudCB1c2VkIHRvIHJlcG9ydCBwcm9ncmVzcyBhbmQgcHJvYmxlbXMgKHBsdWdpbiBub3QgaW4gdGhlIHJlZ2lzdHJ5LCBtaXNzaW5nXG4gICAqIGFyY2hpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uLCBvZmZlcmVkIGFzIG9uZSBvZiB0aGUgdmVyc2lvbiBjaG9pY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luVmVyc2lvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXJQYXJhbXMge1xuICByZWFkb25seSBhcmNoaXZlOiBCdWZmZXI7XG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcbiAgcmVhZG9ubHkgcHJvZ3Jlc3NOb3RpY2U6IFBsdWdpbk5vdGljZUNvbXBvbmVudERlbGF5ZWROb3RpY2U7XG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5jb25zdCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIgPSAnb2JzaWRpYW4tZGVtby12YXVsdHMnO1xuY29uc3QgQVJDSElWRVNfU1VCRk9MREVSID0gJ2FyY2hpdmVzJztcbmNvbnN0IEVYVFJBQ1RFRF9WQVVMVFNfU1VCRk9MREVSID0gJ2V4dHJhY3RlZCc7XG5jb25zdCBIVFRQX1NUQVRVU19PSyA9IDIwMDtcbi8vIE9uZSBkYXkgaW4gbWlsbGlzZWNvbmRzICgyNCAqIDYwICogNjAgKiAxMDAwKS5cbmNvbnN0IE9SUEhBTkVEX0VYVFJBQ1RFRF9WQVVMVF9NQVhfQUdFX0lOX01JTExJU0VDT05EUyA9IDg2XzQwMF8wMDA7XG5cbi8qKlxuICogRG93bmxvYWRzIGFuZCBvcGVucyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCBpbiBhIG5ldyBPYnNpZGlhbiB3aW5kb3cuIERlc2t0b3Agb25seS5cbiAqXG4gKiBJZiB0aGUgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uIGlzIHRoZSBsYXRlc3QgKG9yIG5ld2VyKSwgaXRzIGRlbW8gdmF1bHQgb3BlbnMgZGlyZWN0bHk7IG90aGVyd2lzZVxuICogdGhlIHVzZXIgY2hvb3NlcyBiZXR3ZWVuIHRoZSBsYXRlc3QgYW5kIHRoZSBjdXJyZW50bHktaW5zdGFsbGVkIHZlcnNpb24uIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duXG4gKiBpbW1lZGlhdGVseS4gVGhlIGNob3NlbiB2ZXJzaW9uJ3MgYXJjaGl2ZSBpcyBkb3dubG9hZGVkIG9uY2UgKHRoZW4gcmV1c2VkIGZyb20gdGhlIGFyY2hpdmUgY2FjaGUpLFxuICogYnV0IGEgZnJlc2ggY29weSBpcyBleHRyYWN0ZWQgaW50byBpdHMgb3duIHRlbXBvcmFyeSBmb2xkZXIgb24gZXZlcnkgb3BlbiBcdTIwMTQgdGhlIHZhdWx0IGlzIG5ldmVyIHJldXNlZFxuICogYWNyb3NzIHNlc3Npb25zLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIE9wZW5EZW1vVmF1bHRQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSB2YXVsdCBoYXMgYmVlbiBvcGVuZWQsIG9yIG9uY2UgdGhlIG9wZXJhdGlvbiBoYXNcbiAqIGJlZW4gcmVwb3J0ZWQgYXMgbm90IHBvc3NpYmxlIChub3RpY2Ugc2hvd24pIG9yIGNhbmNlbGxlZCBieSB0aGUgdXNlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5EZW1vVmF1bHQocGFyYW1zOiBPcGVuRGVtb1ZhdWx0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQsXG4gICAgcGx1Z2luTmFtZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQsXG4gICAgcGx1Z2luVmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIC8vIFNob3duIGltbWVkaWF0ZWx5IChgZGVsYXlJbk1pbGxpc2Vjb25kczogMGApOiByZXNvbHZpbmcgdGhlIHJlbGVhc2UsIGRvd25sb2FkaW5nIGFuZCBleHRyYWN0aW5nIGNhblxuICAvLyBlYWNoIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWUgcHJvZ3Jlc3MgdGhlIG1vbWVudCB0aGUgY29tbWFuZCBpcyBpbnZva2VkLlxuICAvL1xuICAvLyBLZXB0IG91dCBvZiB0aGUgc2hhcmVkIHNsb3QgKGBTZXBhcmF0ZWApLCBiZWNhdXNlIHRoaXMgdmVyeSBmdW5jdGlvbiByYWlzZXMgb3JkaW5hcnkgbm90aWNlcyB3aGlsZVxuICAvLyB0aGUgb3BlcmF0aW9uIGlzIHN0aWxsIHJ1bm5pbmcgXHUyMDE0IFwibm90IGluIHRoZSByZWdpc3RyeVwiLCBcIm5vIGRlbW8gdmF1bHQgZm9yIHRoaXMgdmVyc2lvblwiIFx1MjAxNCBhbmQgYVxuICAvLyBzbG90IG5vdGljZSB3b3VsZCBoaWRlIHRoZSBwcm9ncmVzcyBub3RpY2UgcmF0aGVyIHRoYW4gYXBwZWFyIGJlc2lkZSBpdC5cbiAgdXNpbmcgcHJvZ3Jlc3NOb3RpY2UgPSBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZUFmdGVyRGVsYXkoe1xuICAgIGNvbnRlbnQ6IGBPcGVuaW5nIGRlbW8gdmF1bHQgZm9yICR7cGx1Z2luTmFtZX1cdTIwMjZgLFxuICAgIGRlbGF5SW5NaWxsaXNlY29uZHM6IDAsXG4gICAgbW9kZTogUGx1Z2luTm90aWNlTW9kZS5TZXBhcmF0ZVxuICB9KTtcblxuICBjb25zdCByZXBvID0gYXdhaXQgZ2V0Q29tbXVuaXR5UGx1Z2luUmVwbyhwbHVnaW5JZCk7XG4gIGlmICghcmVwbykge1xuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKGBDb3VsZCBub3QgZmluZCBwbHVnaW4gJHtwbHVnaW5OYW1lfSBpbiB0aGUgY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuYCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY3VycmVudFZlcnNpb24gPSBwbHVnaW5WZXJzaW9uO1xuICBjb25zdCBsYXRlc3RWZXJzaW9uID0gYXdhaXQgZ2V0TGF0ZXN0UmVsZWFzZVZlcnNpb24ocmVwbyk7XG5cbiAgbGV0IHZlcnNpb25Ub09wZW46IHN0cmluZztcbiAgaWYgKGNvbXBhcmVWZXJzaW9ucyhjdXJyZW50VmVyc2lvbiwgbGF0ZXN0VmVyc2lvbikgPj0gMCkge1xuICAgIHZlcnNpb25Ub09wZW4gPSBjdXJyZW50VmVyc2lvbjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjaG9zZW5WZXJzaW9uID0gYXdhaXQgc2VsZWN0T3B0aW9uPG51bGwgfCBzdHJpbmc+KHtcbiAgICAgIGFwcCxcbiAgICAgIG1lc3NhZ2U6IGBDdXJyZW50IHZlcnNpb24gb2YgcGx1Z2luICR7cGx1Z2luTmFtZX0gdiR7Y3VycmVudFZlcnNpb259IGlzIG5vdCB0aGUgbGF0ZXN0ICh2JHtsYXRlc3RWZXJzaW9ufSlgLFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgaXNDdGE6IHRydWUsXG4gICAgICAgICAgdGV4dDogYE9wZW4gZGVtbyB2YXVsdCBmb3IgbGF0ZXN0IHZlcnNpb24gKHYke2xhdGVzdFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGxhdGVzdFZlcnNpb25cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IGBPcGVuIGRlbW8gdmF1bHQgZm9yIGN1cnJlbnQgdmVyc2lvbiAodiR7Y3VycmVudFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRWZXJzaW9uXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgdGl0bGU6IHBsdWdpbk5hbWVcbiAgICB9KTtcbiAgICBpZiAoY2hvc2VuVmVyc2lvbiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2ZXJzaW9uVG9PcGVuID0gY2hvc2VuVmVyc2lvbjtcbiAgfVxuXG4gIGNvbnN0IGFyY2hpdmUgPSBhd2FpdCByZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZSh7XG4gICAgcGx1Z2luSWQsXG4gICAgcGx1Z2luTmFtZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQsXG4gICAgcHJvZ3Jlc3NOb3RpY2UsXG4gICAgcmVwbyxcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uVG9PcGVuXG4gIH0pO1xuICBpZiAoIWFyY2hpdmUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBwcm9ncmVzc05vdGljZS5zZXRDb250ZW50KGBFeHRyYWN0aW5nIGRlbW8gdmF1bHQgZm9yICR7cGx1Z2luTmFtZX0gdiR7dmVyc2lvblRvT3Blbn1cdTIwMjZgKTtcbiAgY2xlYW51cE9ycGhhbmVkRXh0cmFjdGVkVmF1bHRzKCk7XG4gIGNvbnN0IHZhdWx0RGlyZWN0b3J5ID0gZXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXIoe1xuICAgIGFyY2hpdmUsXG4gICAgcGx1Z2luSWQsXG4gICAgdmVyc2lvbjogdmVyc2lvblRvT3BlblxuICB9KTtcblxuICB3aW5kb3cuZWxlY3Ryb24uaXBjUmVuZGVyZXIuc2VuZFN5bmMoJ3ZhdWx0LW9wZW4nLCB2YXVsdERpcmVjdG9yeSwgZmFsc2UpO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgZXh0cmFjdGVkIGRlbW8tdmF1bHQgZm9sZGVycyBsZWZ0IG92ZXIgZnJvbSBlYXJsaWVyIHNlc3Npb25zIChiZXN0LWVmZm9ydCkuXG4gKlxuICogRXZlcnkgb3BlbiBleHRyYWN0cyBhIGZyZXNoIGNvcHkgaW50byBpdHMgb3duIGZvbGRlciBhbmQgbmV2ZXIgZGVsZXRlcyBpdCBhZnRlcndhcmRzICh0aGUgdmF1bHQgc3RheXNcbiAqIG9wZW4gaW4gaXRzIHdpbmRvdyksIHNvIHRoZXNlIGFjY3VtdWxhdGUuIFRoaXMgZHJvcHMgZm9sZGVycyBvbGRlciB0aGFuXG4gKiB7QGxpbmsgT1JQSEFORURfRVhUUkFDVEVEX1ZBVUxUX01BWF9BR0VfSU5fTUlMTElTRUNPTkRTfS4gQSBmb2xkZXIgd2hvc2UgdmF1bHQgaXMgc3RpbGwgb3BlbiBpbiBhbm90aGVyXG4gKiB3aW5kb3cgaXMgbG9ja2VkIG9uIFdpbmRvd3MgYW5kIGNhbm5vdCBiZSByZW1vdmVkIFx1MjAxNCB0aGUgcmVtb3ZhbCBpcyB3cmFwcGVkIHNvIHN1Y2ggYSBmb2xkZXIgaXMgc2ltcGx5XG4gKiBza2lwcGVkIGFuZCByZXRyaWVkIG9uIGEgbGF0ZXIgb3Blbi5cbiAqL1xuZnVuY3Rpb24gY2xlYW51cE9ycGhhbmVkRXh0cmFjdGVkVmF1bHRzKCk6IHZvaWQge1xuICBjb25zdCBleHRyYWN0ZWRWYXVsdHNSb290ID0gam9pbih0bXBkaXIoKSwgREVNT19WQVVMVFNfQ0FDSEVfRk9MREVSLCBFWFRSQUNURURfVkFVTFRTX1NVQkZPTERFUik7XG4gIGlmICghZXhpc3RzU3luYyhleHRyYWN0ZWRWYXVsdHNSb290KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGZvciAoY29uc3QgZW50cnlOYW1lIG9mIHJlYWRkaXJTeW5jKGV4dHJhY3RlZFZhdWx0c1Jvb3QpKSB7XG4gICAgY29uc3QgZW50cnlQYXRoID0gam9pbihleHRyYWN0ZWRWYXVsdHNSb290LCBlbnRyeU5hbWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0cyA9IHN0YXRTeW5jKGVudHJ5UGF0aCk7XG4gICAgICBpZiAobm93IC0gc3RhdHMubXRpbWVNcyA8IE9SUEhBTkVEX0VYVFJBQ1RFRF9WQVVMVF9NQVhfQUdFX0lOX01JTExJU0VDT05EUykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJtU3luYyhlbnRyeVBhdGgsIHsgZm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEJlc3QtZWZmb3J0IGNsZWFudXA6IGFuIG9ycGhhbiB3aG9zZSB2YXVsdCBpcyBzdGlsbCBvcGVuIChsb2NrZWQgb24gV2luZG93cykgY2Fubm90IGJlIHJlbW92ZWQ7IHNraXAgaXQgYW5kIHJldHJ5IG9uIGEgbGF0ZXIgb3Blbi5cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBhIGRvd25sb2FkZWQgZGVtby12YXVsdCBhcmNoaXZlIHRvIGRpc2suXG4gKlxuICogRXh0cmFjdGlvbiBpcyB3cml0dGVuIHdpdGggRWxlY3Ryb24ncyBgb3JpZ2luYWwtZnNgIFx1MjAxNCB0aGUgcmVhbCBgZnNgIHdpdGggYXNhciBpbnRlcmNlcHRpb24gZGlzYWJsZWQgXHUyMDE0XG4gKiByYXRoZXIgdGhhbiB3aXRoIGBub2RlOmZzYC4gQSBkZW1vIHZhdWx0IG1heSBzaGlwIGEgZmlsZSB0aGF0IG1lcmVseSBMT09LUyBsaWtlIGFuIEVsZWN0cm9uIGFyY2hpdmVcbiAqIChlLmcuIGBfYXNzZXRzL0NvZGVTY3JpcHRUb29sa2l0L21vZHVsZS5hc2FyYCBkZW1vbnN0cmF0aW5nIHRoZSBBU0FSIHJlcXVpcmUgZmVhdHVyZSksIGFuZCBFbGVjdHJvbidzXG4gKiBhc2FyIGxheWVyIGludGVyY2VwdHMgYGZzYCBvcGVyYXRpb25zIG9uIGFueSBwYXRoIGNvbnRhaW5pbmcgYC5hc2FyYCwgdHJlYXRpbmcgaXQgYXMgYW4gYXJjaGl2ZSByb290XG4gKiByYXRoZXIgdGhhbiBhIHBsYWluIGZpbGUuIFRoYXQgYWxyZWFkeSBjb3N0IG9uZSBwcm9kdWN0aW9uIGJ1ZyB3aGVuIHRoZSBleHRyYWN0b3IgYGNobW9kYC1lZCBzdWNoIGFcbiAqIGZpbGUgYW5kIGdvdCBgRU5PRU5UYDsgbm90aGluZyBgY2htb2RgcyBhbnkgbW9yZSwgYnV0IHdyaXRpbmcgdGhvc2UgYnl0ZXMgdGhyb3VnaCB0aGUgY29weSB0aGF0IGhhcyBub1xuICogYXNhciBsYXllciBjb3N0cyBub3RoaW5nIGFuZCBrZWVwcyB0aGUgd2hvbGUgY2xhc3Mgb2YgZmFpbHVyZSBvZmYgdGhpcyBwYXRoLiBgb3JpZ2luYWwtZnNgIGlzIGEgZGVza3RvcC1vbmx5XG4gKiBFbGVjdHJvbiBtb2R1bGUgd2l0aCBubyBidW5kbGVkIHR5cGVzLCBzbyBpdCBpcyBsb2FkZWQgdmlhIGB3aW5kb3cucmVxdWlyZWAgYW5kIHR5cGVkIGFzIGBub2RlOmZzYCdzXG4gKiBzaGFwZS5cbiAqXG4gKiBAcGFyYW0gYXJjaGl2ZSAtIFRoZSByYXcgemlwIGFyY2hpdmUgYnl0ZXMuXG4gKiBAcGFyYW0gdGFyZ2V0RGlyZWN0b3J5IC0gVGhlIGRpcmVjdG9yeSB0byBleHRyYWN0IGludG8uXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3REZW1vVmF1bHRBcmNoaXZlKGFyY2hpdmU6IEJ1ZmZlciwgdGFyZ2V0RGlyZWN0b3J5OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3Qgb3JpZ2luYWxGcyA9IHdpbmRvdy5yZXF1aXJlKCdub2RlOm9yaWdpbmFsLWZzJykgYXMgdHlwZW9mIGltcG9ydCgnbm9kZTpmcycpO1xuICBleHRyYWN0WmlwQXJjaGl2ZSh7XG4gICAgYXJjaGl2ZSxcbiAgICBmaWxlU3lzdGVtOiBvcmlnaW5hbEZzLFxuICAgIHRhcmdldERpcmVjdG9yeVxuICB9KTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYXJjaGl2ZSBpbnRvIGEgZnJlc2gsIHVuaXF1ZWx5LW5hbWVkIHRlbXBvcmFyeSBmb2xkZXIgYW5kIHJldHVybnMgdGhlIHZhdWx0IHBhdGguXG4gKlxuICogQSB1bmlxdWUgcGFyZW50IGZvbGRlciAoYG1rZHRlbXBTeW5jYCkgZ3VhcmFudGVlcyBhIGJyYW5kLW5ldyBleHRyYWN0aW9uIGV2ZXJ5IHRpbWUgXHUyMDE0IHRoZSBkZW1vIHZhdWx0XG4gKiBpcyBuZXZlciByZXVzZWQgYWNyb3NzIG9wZW5zLCBzbyBhIHByZXZpb3VzIHNlc3Npb24ncyBlZGl0cyBuZXZlciBsZWFrIGluLiBUaGUgYXJjaGl2ZSBpcyBleHRyYWN0ZWRcbiAqIGludG8gdGhhdCBwYXJlbnQgYW5kIHRoZSB2YXVsdCBpcyB0aGUgc2luZ2xlIGA8cGx1Z2luLWlkPi1kZW1vLXZhdWx0LTx2ZXJzaW9uPmAgZm9sZGVyIGl0IGNvbnRhaW5zLCBzb1xuICogT2JzaWRpYW4ncyB2YXVsdCBzd2l0Y2hlciBzaG93cyBhIGZyaWVuZGx5IG5hbWUgKGl0cyBiYXNlbmFtZSkgcmF0aGVyIHRoYW4gdGhlIHJhbmRvbSB0ZW1wIGlkLlxuICpcbiAqIFRoYXQgZm9sZGVyIGlzIG5vdCBzZWFyY2hlZCBmb3I6IHtAbGluayBnZXREZW1vVmF1bHRGb2xkZXJOYW1lfSBuYW1lcyBpdCBvbiBib3RoIHNpZGVzLCBzbyB0aGUgcGF0aCBpc1xuICoga25vd24gYmVmb3JlIGEgYnl0ZSBpcyB3cml0dGVuLiBXaGljaCBrZWVwcyB0aGUgZXh0cmFjdG9yIGZyZWUgb2YgYW55IHJlYWQgXHUyMDE0IGRlbGliZXJhdGUsIGJlY2F1c2VcbiAqIEVsZWN0cm9uJ3MgYXNhciBsYXllciBpbnRlcmNlcHRzIGBmc2AgcmVhZHMgb24gYW55IHBhdGggY29udGFpbmluZyBgLmFzYXJgLCBhbmQgYSBkZW1vIHZhdWx0IG1heVxuICogbGVnaXRpbWF0ZWx5IHNoaXAgc3VjaCBhIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgRXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXJQYXJhbXN9LlxuICogQHJldHVybnMgVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGZyZXNobHkgZXh0cmFjdGVkIHZhdWx0IGZvbGRlci5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXIocGFyYW1zOiBFeHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlclBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgYXJjaGl2ZSwgcGx1Z2luSWQsIHZlcnNpb24gfSA9IHBhcmFtcztcbiAgY29uc3QgZXh0cmFjdGVkVmF1bHRzUm9vdCA9IGpvaW4odG1wZGlyKCksIERFTU9fVkFVTFRTX0NBQ0hFX0ZPTERFUiwgRVhUUkFDVEVEX1ZBVUxUU19TVUJGT0xERVIpO1xuICBta2RpclN5bmMoZXh0cmFjdGVkVmF1bHRzUm9vdCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGNvbnN0IHVuaXF1ZVBhcmVudERpcmVjdG9yeSA9IG1rZHRlbXBTeW5jKGpvaW4oZXh0cmFjdGVkVmF1bHRzUm9vdCwgYCR7cGx1Z2luSWR9LSR7dmVyc2lvbn0tYCkpO1xuICBleHRyYWN0RGVtb1ZhdWx0QXJjaGl2ZShhcmNoaXZlLCB1bmlxdWVQYXJlbnREaXJlY3RvcnkpO1xuICByZXR1cm4gam9pbihcbiAgICB1bmlxdWVQYXJlbnREaXJlY3RvcnksXG4gICAgZ2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZSh7XG4gICAgICBwbHVnaW5JZCxcbiAgICAgIHZlcnNpb25cbiAgICB9KVxuICApO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBkZW1vLXZhdWx0IGFyY2hpdmUgYnl0ZXMgZm9yIGEgdmVyc2lvbiwgZG93bmxvYWRpbmcgYW5kIGNhY2hpbmcgdGhlbSBvbiBmaXJzdCB1c2UuXG4gKlxuICogT25seSB0aGUgYXJjaGl2ZSBpcyBjYWNoZWQgKGtleWVkIGJ5IHBsdWdpbiBpZCArIHZlcnNpb24pOyB0aGUgZXh0cmFjdGVkIHZhdWx0IGlzIG5vdC4gQSBjYWNoZSBoaXQgaXNcbiAqIHJldHVybmVkIHdpdGhvdXQgYW55IG5ldHdvcmsgcmVxdWVzdDsgYSBtaXNzIGRvd25sb2FkcyB0aGUgcmVsZWFzZSBhc3NldCwgd3JpdGVzIGl0IHRvIHRoZSBhcmNoaXZlXG4gKiBjYWNoZSwgYW5kIHJldHVybnMgdGhlIGZyZXNobHkgZG93bmxvYWRlZCBieXRlcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBSZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZVBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgdG8gdGhlIGFyY2hpdmUgYnl0ZXMsIG9yIGBudWxsYCB3aGVuIG5vIGFyY2hpdmUgaXMgYXZhaWxhYmxlIGZvclxuICogdGhlIHZlcnNpb24gKGEgbm90aWNlIGhhcyBiZWVuIHNob3duKS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZURlbW9WYXVsdEFyY2hpdmUocGFyYW1zOiBSZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZVBhcmFtcyk6IFByb21pc2U8QnVmZmVyIHwgbnVsbD4ge1xuICBjb25zdCB7XG4gICAgcGx1Z2luSWQsXG4gICAgcGx1Z2luTmFtZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQsXG4gICAgcHJvZ3Jlc3NOb3RpY2UsXG4gICAgcmVwbyxcbiAgICB2ZXJzaW9uXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgYXJjaGl2ZXNEaXJlY3RvcnkgPSBqb2luKHRtcGRpcigpLCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIsIEFSQ0hJVkVTX1NVQkZPTERFUik7XG4gIGNvbnN0IGFyY2hpdmVQYXRoID0gam9pbihhcmNoaXZlc0RpcmVjdG9yeSwgYCR7cGx1Z2luSWR9LSR7dmVyc2lvbn0uemlwYCk7XG4gIGlmIChleGlzdHNTeW5jKGFyY2hpdmVQYXRoKSkge1xuICAgIHJldHVybiByZWFkRmlsZVN5bmMoYXJjaGl2ZVBhdGgpO1xuICB9XG5cbiAgcHJvZ3Jlc3NOb3RpY2Uuc2V0Q29udGVudChgRG93bmxvYWRpbmcgZGVtbyB2YXVsdCBmb3IgJHtwbHVnaW5OYW1lfSB2JHt2ZXJzaW9ufVx1MjAyNmApO1xuICBjb25zdCBhc3NldFVybCA9IGBodHRwczovL2dpdGh1Yi5jb20vJHtyZXBvfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7Z2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKHBsdWdpbklkKX1gO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmwoe1xuICAgIHRocm93OiBmYWxzZSxcbiAgICB1cmw6IGFzc2V0VXJsXG4gIH0pO1xuICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSBIVFRQX1NUQVRVU19PSykge1xuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKGBObyBkZW1vIHZhdWx0IGlzIGF2YWlsYWJsZSBmb3IgcGx1Z2luICR7cGx1Z2luTmFtZX0gdiR7dmVyc2lvbn0uYCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBhcmNoaXZlID0gQnVmZmVyLmZyb20ocmVzcG9uc2UuYXJyYXlCdWZmZXIpO1xuICBta2RpclN5bmMoYXJjaGl2ZXNEaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB3cml0ZUZpbGVTeW5jKGFyY2hpdmVQYXRoLCBhcmNoaXZlKTtcbiAgcmV0dXJuIGFyY2hpdmU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEb3dubG9hZHMgYW5kIG9wZW5zIGEgcGx1Z2luJ3Mgc2hpcHBlZCBkZW1vIHZhdWx0IGluIGEgbmV3IE9ic2lkaWFuIHdpbmRvdyAoZGVza3RvcCBvbmx5KS5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gYXR0YWNoIGEgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCBhcmNoaXZlIHRvIGVhY2ggR2l0SHViIHJlbGVhc2UgKHNlZVxuICogYGFyY2hpdmVQbHVnaW5EZW1vVmF1bHRgIGluIGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2A7IGV2ZXJ5IG5hbWUgc2hhcmVkIHdpdGggaXQgY29tZXMgZnJvbVxuICogYGRlbW8tdmF1bHQtbmFtaW5nLnRzYCkuIFRoaXMgcmVzb2x2ZXMgdGhlIHBsdWdpbidzIHJlcG9zaXRvcnkgZnJvbSBPYnNpZGlhbidzIGNvbW11bml0eSByZWdpc3RyeSxcbiAqIGRvd25sb2FkcyB0aGUgYXJjaGl2ZSBmb3IgdGhlIGNob3NlbiB2ZXJzaW9uLCBhbmQgb3BlbnMgaXQgYXMgYSB2YXVsdCBpbiBhIG5ldyB3aW5kb3cuIFdoZW4gdGhlXG4gKiBpbnN0YWxsZWQgcGx1Z2luIHZlcnNpb24gaXMgYmVoaW5kIHRoZSBsYXRlc3QgcmVsZWFzZSwgdGhlIHVzZXIgaXMgb2ZmZXJlZCBhIGNob2ljZSBiZXR3ZWVuIHRoZSB0d29cbiAqIHZlcnNpb25zLlxuICpcbiAqIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duIGltbWVkaWF0ZWx5IChkb3dubG9hZCArIGV4dHJhY3Rpb24gY2FuIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWVcbiAqIHNvbWV0aGluZyBpcyBoYXBwZW5pbmcgcmlnaHQgYXdheSkuIE9ubHkgdGhlIGRvd25sb2FkZWQgQVJDSElWRSBpcyBjYWNoZWQgKHVuZGVyIHRoZSBPUyB0ZW1wXG4gKiBkaXJlY3RvcnkpOyBldmVyeSBpbnZvY2F0aW9uIGV4dHJhY3RzIGEgRlJFU0ggY29weSBpbnRvIGl0cyBvd24gdGVtcG9yYXJ5IGZvbGRlciBhbmQgb3BlbnMgdGhhdCwgc28gYVxuICogcHJldmlvdXMgc2Vzc2lvbidzIGVkaXRzIG5ldmVyIGxlYWsgaW50byBhIG5ldyBvbmUuIFRoZSB2YXVsdCBmb2xkZXIgaXMgdGhlIGFyY2hpdmUncyBvd24gc2luZ2xlXG4gKiB0b3AtbGV2ZWwgZm9sZGVyLCBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj5gLCB3aGljaCByZWFkcyBuaWNlbHkgaW4gT2JzaWRpYW4ncyB2YXVsdCBzd2l0Y2hlclxuICogYW5kIGlzIHRoZSBzYW1lIG5hbWUgYSBoYW5kLXVuemlwcGVkIGFyY2hpdmUgcHJvZHVjZXMuIE9ycGhhbmVkIGV4dHJhY3RlZCBmb2xkZXJzIGxlZnQgb3ZlciBmcm9tXG4gKiBlYXJsaWVyIHNlc3Npb25zIGFyZSBjbGVhbmVkIHVwIChiZXN0LWVmZm9ydCkgb24gZWFjaCBvcGVuLlxuICpcbiAqICoqTm90aGluZyBoZXJlIG1heSB0b3VjaCBhIHBsYXRmb3JtLW9ubHkgQVBJIHdoaWxlIHRoZSBtb2R1bGUgSU5JVElBTElaRVMuKiogVGhlIGBub2RlOmAgaW1wb3J0cyBiZWxvd1xuICogYXJlIHNhZmUgdG8gbWVyZWx5IGV2YWx1YXRlIG9uIG1vYmlsZSBcdTIwMTQgYHJlcXVpcmVgIGhhbmRzIGJhY2sgYHVuZGVmaW5lZGAgdGhlcmUgYW5kIG5vdGhpbmcgcmVhZHMgaXQgYXRcbiAqIGxvYWQgdGltZSBcdTIwMTQgYW5kIGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBiYXJyZWxzIHJlLWV4cG9ydCB0aGlzIG1vZHVsZSwgdGhhdCBpcyBhIGxvYWQtYmVhcmluZyBwcm9wZXJ0eSBvZlxuICogdGhlIHdob2xlIGxpYnJhcnkgcmF0aGVyIHRoYW4gYSBkZXRhaWwgb2YgdGhpcyBmaWxlLiBJdCB3YXMgbGVhcm5lZCB0aGUgaGFyZCB3YXk6IHRoaXMgbW9kdWxlIG9uY2VcbiAqIGltcG9ydGVkIGBhZG0temlwYCwgd2hvc2UgemlwLWNyeXB0byBtZXRob2Qgb3BlbnMgd2l0aCBhIHRvcC1sZXZlbFxuICogYGNvbnN0IHsgcmFuZG9tRmlsbFN5bmMgfSA9IHJlcXVpcmUoJ2NyeXB0bycpYCwgYW5kIGEgc3RhdGljIGBpbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnYCB0aGVyZWZvcmVcbiAqIGtpbGxlZCB0aGUgbGlicmFyeSdzIGxvYWQgb24gQW5kcm9pZCAoc2VlIHRoZSBtb2JpbGUtbG9hZCBjaGVjayBpblxuICogYHNjcmlwdHMvaGVscGVycy9hc3NlcnQtbW9iaWxlLWxvYWRhYmxlLWJ1bmRsZS50c2AsIHdoaWNoIGZhaWxzIHRoZSBidWlsZCBvbiBleGFjdGx5IHRoYXQpLiBFeHRyYWN0aW9uXG4gKiBub3cgZ29lcyB0aHJvdWdoIGBkZXNrdG9wLXppcC1leHRyYWN0b3IudHNgLCB3aGljaCBuZWVkcyBubyBkZXBlbmRlbmN5IGF0IGFsbCBcdTIwMTQgYnV0IGFueSBmdXR1cmVcbiAqIGRlcGVuZGVuY3kgdGhhdCBpbml0aWFsaXplcyBhZ2FpbnN0IGEgcGxhdGZvcm0tb25seSBBUEkgc3RpbGwgaGFzIHRvIGJlIGRlZmVycmVkIGJlaGluZCBhIGNhbGwtdGltZVxuICogYGltcG9ydCgpYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZXh0cmFjdFppcEFyY2hpdmUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGVza3RvcC16aXAtZXh0cmFjdG9yJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ25vZGU6YnVmZmVyJztcbmltcG9ydCB7XG4gIGV4aXN0c1N5bmMsXG4gIG1rZGlyU3luYyxcbiAgbWtkdGVtcFN5bmMsXG4gIHJlYWRkaXJTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHJtU3luYyxcbiAgc3RhdFN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IHJlcXVlc3RVcmwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICBQbHVnaW5Ob3RpY2VDb21wb25lbnREZWxheWVkTm90aWNlXG59IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7XG4gIGdldENvbW11bml0eVBsdWdpblJlcG8sXG4gIGdldExhdGVzdFJlbGVhc2VWZXJzaW9uXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuaW1wb3J0IHsgUGx1Z2luTm90aWNlTW9kZSB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5pbXBvcnQge1xuICBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUsXG4gIGdldERlbW9WYXVsdEZvbGRlck5hbWVcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LW5hbWluZy50cyc7XG5pbXBvcnQge1xuICBhc0NvZGVCbG9jayxcbiAgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc1xufSBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5pbXBvcnQgeyBzZWxlY3RPcHRpb24gfSBmcm9tICcuL21vZGFscy9zZWxlY3Qtb3B0aW9uLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgb3BlbkRlbW9WYXVsdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkRlbW9WYXVsdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQsIHVzZWQgdG8gbG9jYXRlIHRoZSBHaXRIdWIgcmVwb3NpdG9yeSwgdG8gbmFtZSB0aGUgYXJjaGl2ZSBhc3NldCwgYW5kIHRvIG5hbWUgdGhlXG4gICAqIGNhY2hlZCBhcmNoaXZlIGFuZCB0aGUgZXh0cmFjdGVkIHZhdWx0IGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZGlzcGxheSBuYW1lLCB1c2VkIHRvIGxhYmVsIHRoZSBub3RpY2VzIGFuZCB0aGUgdmVyc2lvbi1jaG9pY2UgZGlhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90aWNlIGNvbXBvbmVudCB1c2VkIHRvIHJlcG9ydCBwcm9ncmVzcyBhbmQgcHJvYmxlbXMgKHBsdWdpbiBub3QgaW4gdGhlIHJlZ2lzdHJ5LCBtaXNzaW5nXG4gICAqIGFyY2hpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uLCBvZmZlcmVkIGFzIG9uZSBvZiB0aGUgdmVyc2lvbiBjaG9pY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luVmVyc2lvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXJQYXJhbXMge1xuICByZWFkb25seSBhcmNoaXZlOiBCdWZmZXI7XG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcbiAgcmVhZG9ubHkgcHJvZ3Jlc3NOb3RpY2U6IFBsdWdpbk5vdGljZUNvbXBvbmVudERlbGF5ZWROb3RpY2U7XG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5jb25zdCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIgPSAnb2JzaWRpYW4tZGVtby12YXVsdHMnO1xuY29uc3QgQVJDSElWRVNfU1VCRk9MREVSID0gJ2FyY2hpdmVzJztcbmNvbnN0IEVYVFJBQ1RFRF9WQVVMVFNfU1VCRk9MREVSID0gJ2V4dHJhY3RlZCc7XG5jb25zdCBIVFRQX1NUQVRVU19PSyA9IDIwMDtcbi8vIE9uZSBkYXkgaW4gbWlsbGlzZWNvbmRzICgyNCAqIDYwICogNjAgKiAxMDAwKS5cbmNvbnN0IE9SUEhBTkVEX0VYVFJBQ1RFRF9WQVVMVF9NQVhfQUdFX0lOX01JTExJU0VDT05EUyA9IDg2XzQwMF8wMDA7XG5cbi8qKlxuICogRG93bmxvYWRzIGFuZCBvcGVucyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCBpbiBhIG5ldyBPYnNpZGlhbiB3aW5kb3cuIERlc2t0b3Agb25seS5cbiAqXG4gKiBJZiB0aGUgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uIGlzIHRoZSBsYXRlc3QgKG9yIG5ld2VyKSwgaXRzIGRlbW8gdmF1bHQgb3BlbnMgZGlyZWN0bHk7IG90aGVyd2lzZVxuICogdGhlIHVzZXIgY2hvb3NlcyBiZXR3ZWVuIHRoZSBsYXRlc3QgYW5kIHRoZSBjdXJyZW50bHktaW5zdGFsbGVkIHZlcnNpb24uIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duXG4gKiBpbW1lZGlhdGVseS4gVGhlIGNob3NlbiB2ZXJzaW9uJ3MgYXJjaGl2ZSBpcyBkb3dubG9hZGVkIG9uY2UgKHRoZW4gcmV1c2VkIGZyb20gdGhlIGFyY2hpdmUgY2FjaGUpLFxuICogYnV0IGEgZnJlc2ggY29weSBpcyBleHRyYWN0ZWQgaW50byBpdHMgb3duIHRlbXBvcmFyeSBmb2xkZXIgb24gZXZlcnkgb3BlbiBcdTIwMTQgdGhlIHZhdWx0IGlzIG5ldmVyIHJldXNlZFxuICogYWNyb3NzIHNlc3Npb25zLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIE9wZW5EZW1vVmF1bHRQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSB2YXVsdCBoYXMgYmVlbiBvcGVuZWQsIG9yIG9uY2UgdGhlIG9wZXJhdGlvbiBoYXNcbiAqIGJlZW4gcmVwb3J0ZWQgYXMgbm90IHBvc3NpYmxlIChub3RpY2Ugc2hvd24pIG9yIGNhbmNlbGxlZCBieSB0aGUgdXNlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5EZW1vVmF1bHQocGFyYW1zOiBPcGVuRGVtb1ZhdWx0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQsXG4gICAgcGx1Z2luTmFtZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQsXG4gICAgcGx1Z2luVmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIC8vIFNob3duIGltbWVkaWF0ZWx5IChgZGVsYXlJbk1pbGxpc2Vjb25kczogMGApOiByZXNvbHZpbmcgdGhlIHJlbGVhc2UsIGRvd25sb2FkaW5nIGFuZCBleHRyYWN0aW5nIGNhblxuICAvLyBlYWNoIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWUgcHJvZ3Jlc3MgdGhlIG1vbWVudCB0aGUgY29tbWFuZCBpcyBpbnZva2VkLlxuICAvL1xuICAvLyBLZXB0IG91dCBvZiB0aGUgc2hhcmVkIHNsb3QgKGBTZXBhcmF0ZWApLCBiZWNhdXNlIHRoaXMgdmVyeSBmdW5jdGlvbiByYWlzZXMgb3JkaW5hcnkgbm90aWNlcyB3aGlsZVxuICAvLyB0aGUgb3BlcmF0aW9uIGlzIHN0aWxsIHJ1bm5pbmcgXHUyMDE0IFwibm90IGluIHRoZSByZWdpc3RyeVwiLCBcIm5vIGRlbW8gdmF1bHQgZm9yIHRoaXMgdmVyc2lvblwiIFx1MjAxNCBhbmQgYVxuICAvLyBzbG90IG5vdGljZSB3b3VsZCBoaWRlIHRoZSBwcm9ncmVzcyBub3RpY2UgcmF0aGVyIHRoYW4gYXBwZWFyIGJlc2lkZSBpdC5cbiAgdXNpbmcgcHJvZ3Jlc3NOb3RpY2UgPSBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZUFmdGVyRGVsYXkoe1xuICAgIGNvbnRlbnQ6IGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYE9wZW5pbmcgZGVtbyB2YXVsdCBmb3IgJHthc0NvZGVCbG9jayhwbHVnaW5OYW1lKX1cdTIwMjZgKSxcbiAgICBkZWxheUluTWlsbGlzZWNvbmRzOiAwLFxuICAgIG1vZGU6IFBsdWdpbk5vdGljZU1vZGUuU2VwYXJhdGVcbiAgfSk7XG5cbiAgY29uc3QgcmVwbyA9IGF3YWl0IGdldENvbW11bml0eVBsdWdpblJlcG8ocGx1Z2luSWQpO1xuICBpZiAoIXJlcG8pIHtcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZShjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzKGBDb3VsZCBub3QgZmluZCBwbHVnaW4gJHthc0NvZGVCbG9jayhwbHVnaW5OYW1lKX0gaW4gdGhlIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LmApKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IHBsdWdpblZlcnNpb247XG4gIGNvbnN0IGxhdGVzdFZlcnNpb24gPSBhd2FpdCBnZXRMYXRlc3RSZWxlYXNlVmVyc2lvbihyZXBvKTtcblxuICBsZXQgdmVyc2lvblRvT3Blbjogc3RyaW5nO1xuICBpZiAoY29tcGFyZVZlcnNpb25zKGN1cnJlbnRWZXJzaW9uLCBsYXRlc3RWZXJzaW9uKSA+PSAwKSB7XG4gICAgdmVyc2lvblRvT3BlbiA9IGN1cnJlbnRWZXJzaW9uO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNob3NlblZlcnNpb24gPSBhd2FpdCBzZWxlY3RPcHRpb248bnVsbCB8IHN0cmluZz4oe1xuICAgICAgYXBwLFxuICAgICAgbWVzc2FnZTogY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2NrcyhgQ3VycmVudCB2ZXJzaW9uIG9mIHBsdWdpbiAke2FzQ29kZUJsb2NrKHBsdWdpbk5hbWUpfSB2JHtjdXJyZW50VmVyc2lvbn0gaXMgbm90IHRoZSBsYXRlc3QgKHYke2xhdGVzdFZlcnNpb259KWApLFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgaXNDdGE6IHRydWUsXG4gICAgICAgICAgdGV4dDogYE9wZW4gZGVtbyB2YXVsdCBmb3IgbGF0ZXN0IHZlcnNpb24gKHYke2xhdGVzdFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGxhdGVzdFZlcnNpb25cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IGBPcGVuIGRlbW8gdmF1bHQgZm9yIGN1cnJlbnQgdmVyc2lvbiAodiR7Y3VycmVudFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRWZXJzaW9uXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgdGl0bGU6IGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYXNDb2RlQmxvY2socGx1Z2luTmFtZSkpXG4gICAgfSk7XG4gICAgaWYgKGNob3NlblZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVyc2lvblRvT3BlbiA9IGNob3NlblZlcnNpb247XG4gIH1cblxuICBjb25zdCBhcmNoaXZlID0gYXdhaXQgcmVzb2x2ZURlbW9WYXVsdEFyY2hpdmUoe1xuICAgIHBsdWdpbklkLFxuICAgIHBsdWdpbk5hbWUsXG4gICAgcGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICAgIHByb2dyZXNzTm90aWNlLFxuICAgIHJlcG8sXG4gICAgdmVyc2lvbjogdmVyc2lvblRvT3BlblxuICB9KTtcbiAgaWYgKCFhcmNoaXZlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJvZ3Jlc3NOb3RpY2Uuc2V0Q29udGVudChjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzKGBFeHRyYWN0aW5nIGRlbW8gdmF1bHQgZm9yICR7YXNDb2RlQmxvY2socGx1Z2luTmFtZSl9IHYke3ZlcnNpb25Ub09wZW59XHUyMDI2YCkpO1xuICBjbGVhbnVwT3JwaGFuZWRFeHRyYWN0ZWRWYXVsdHMoKTtcbiAgY29uc3QgdmF1bHREaXJlY3RvcnkgPSBleHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlcih7XG4gICAgYXJjaGl2ZSxcbiAgICBwbHVnaW5JZCxcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uVG9PcGVuXG4gIH0pO1xuXG4gIHdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kU3luYygndmF1bHQtb3BlbicsIHZhdWx0RGlyZWN0b3J5LCBmYWxzZSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBleHRyYWN0ZWQgZGVtby12YXVsdCBmb2xkZXJzIGxlZnQgb3ZlciBmcm9tIGVhcmxpZXIgc2Vzc2lvbnMgKGJlc3QtZWZmb3J0KS5cbiAqXG4gKiBFdmVyeSBvcGVuIGV4dHJhY3RzIGEgZnJlc2ggY29weSBpbnRvIGl0cyBvd24gZm9sZGVyIGFuZCBuZXZlciBkZWxldGVzIGl0IGFmdGVyd2FyZHMgKHRoZSB2YXVsdCBzdGF5c1xuICogb3BlbiBpbiBpdHMgd2luZG93KSwgc28gdGhlc2UgYWNjdW11bGF0ZS4gVGhpcyBkcm9wcyBmb2xkZXJzIG9sZGVyIHRoYW5cbiAqIHtAbGluayBPUlBIQU5FRF9FWFRSQUNURURfVkFVTFRfTUFYX0FHRV9JTl9NSUxMSVNFQ09ORFN9LiBBIGZvbGRlciB3aG9zZSB2YXVsdCBpcyBzdGlsbCBvcGVuIGluIGFub3RoZXJcbiAqIHdpbmRvdyBpcyBsb2NrZWQgb24gV2luZG93cyBhbmQgY2Fubm90IGJlIHJlbW92ZWQgXHUyMDE0IHRoZSByZW1vdmFsIGlzIHdyYXBwZWQgc28gc3VjaCBhIGZvbGRlciBpcyBzaW1wbHlcbiAqIHNraXBwZWQgYW5kIHJldHJpZWQgb24gYSBsYXRlciBvcGVuLlxuICovXG5mdW5jdGlvbiBjbGVhbnVwT3JwaGFuZWRFeHRyYWN0ZWRWYXVsdHMoKTogdm9pZCB7XG4gIGNvbnN0IGV4dHJhY3RlZFZhdWx0c1Jvb3QgPSBqb2luKHRtcGRpcigpLCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIsIEVYVFJBQ1RFRF9WQVVMVFNfU1VCRk9MREVSKTtcbiAgaWYgKCFleGlzdHNTeW5jKGV4dHJhY3RlZFZhdWx0c1Jvb3QpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgZm9yIChjb25zdCBlbnRyeU5hbWUgb2YgcmVhZGRpclN5bmMoZXh0cmFjdGVkVmF1bHRzUm9vdCkpIHtcbiAgICBjb25zdCBlbnRyeVBhdGggPSBqb2luKGV4dHJhY3RlZFZhdWx0c1Jvb3QsIGVudHJ5TmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gc3RhdFN5bmMoZW50cnlQYXRoKTtcbiAgICAgIGlmIChub3cgLSBzdGF0cy5tdGltZU1zIDwgT1JQSEFORURfRVhUUkFDVEVEX1ZBVUxUX01BWF9BR0VfSU5fTUlMTElTRUNPTkRTKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcm1TeW5jKGVudHJ5UGF0aCwgeyBmb3JjZTogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQmVzdC1lZmZvcnQgY2xlYW51cDogYW4gb3JwaGFuIHdob3NlIHZhdWx0IGlzIHN0aWxsIG9wZW4gKGxvY2tlZCBvbiBXaW5kb3dzKSBjYW5ub3QgYmUgcmVtb3ZlZDsgc2tpcCBpdCBhbmQgcmV0cnkgb24gYSBsYXRlciBvcGVuLlxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEV4dHJhY3RzIGEgZG93bmxvYWRlZCBkZW1vLXZhdWx0IGFyY2hpdmUgdG8gZGlzay5cbiAqXG4gKiBFeHRyYWN0aW9uIGlzIHdyaXR0ZW4gd2l0aCBFbGVjdHJvbidzIGBvcmlnaW5hbC1mc2AgXHUyMDE0IHRoZSByZWFsIGBmc2Agd2l0aCBhc2FyIGludGVyY2VwdGlvbiBkaXNhYmxlZCBcdTIwMTRcbiAqIHJhdGhlciB0aGFuIHdpdGggYG5vZGU6ZnNgLiBBIGRlbW8gdmF1bHQgbWF5IHNoaXAgYSBmaWxlIHRoYXQgbWVyZWx5IExPT0tTIGxpa2UgYW4gRWxlY3Ryb24gYXJjaGl2ZVxuICogKGUuZy4gYF9hc3NldHMvQ29kZVNjcmlwdFRvb2xraXQvbW9kdWxlLmFzYXJgIGRlbW9uc3RyYXRpbmcgdGhlIEFTQVIgcmVxdWlyZSBmZWF0dXJlKSwgYW5kIEVsZWN0cm9uJ3NcbiAqIGFzYXIgbGF5ZXIgaW50ZXJjZXB0cyBgZnNgIG9wZXJhdGlvbnMgb24gYW55IHBhdGggY29udGFpbmluZyBgLmFzYXJgLCB0cmVhdGluZyBpdCBhcyBhbiBhcmNoaXZlIHJvb3RcbiAqIHJhdGhlciB0aGFuIGEgcGxhaW4gZmlsZS4gVGhhdCBhbHJlYWR5IGNvc3Qgb25lIHByb2R1Y3Rpb24gYnVnIHdoZW4gdGhlIGV4dHJhY3RvciBgY2htb2RgLWVkIHN1Y2ggYVxuICogZmlsZSBhbmQgZ290IGBFTk9FTlRgOyBub3RoaW5nIGBjaG1vZGBzIGFueSBtb3JlLCBidXQgd3JpdGluZyB0aG9zZSBieXRlcyB0aHJvdWdoIHRoZSBjb3B5IHRoYXQgaGFzIG5vXG4gKiBhc2FyIGxheWVyIGNvc3RzIG5vdGhpbmcgYW5kIGtlZXBzIHRoZSB3aG9sZSBjbGFzcyBvZiBmYWlsdXJlIG9mZiB0aGlzIHBhdGguIGBvcmlnaW5hbC1mc2AgaXMgYSBkZXNrdG9wLW9ubHlcbiAqIEVsZWN0cm9uIG1vZHVsZSB3aXRoIG5vIGJ1bmRsZWQgdHlwZXMsIHNvIGl0IGlzIGxvYWRlZCB2aWEgYHdpbmRvdy5yZXF1aXJlYCBhbmQgdHlwZWQgYXMgYG5vZGU6ZnNgJ3NcbiAqIHNoYXBlLlxuICpcbiAqIEBwYXJhbSBhcmNoaXZlIC0gVGhlIHJhdyB6aXAgYXJjaGl2ZSBieXRlcy5cbiAqIEBwYXJhbSB0YXJnZXREaXJlY3RvcnkgLSBUaGUgZGlyZWN0b3J5IHRvIGV4dHJhY3QgaW50by5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdERlbW9WYXVsdEFyY2hpdmUoYXJjaGl2ZTogQnVmZmVyLCB0YXJnZXREaXJlY3Rvcnk6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBvcmlnaW5hbEZzID0gd2luZG93LnJlcXVpcmUoJ25vZGU6b3JpZ2luYWwtZnMnKSBhcyB0eXBlb2YgaW1wb3J0KCdub2RlOmZzJyk7XG4gIGV4dHJhY3RaaXBBcmNoaXZlKHtcbiAgICBhcmNoaXZlLFxuICAgIGZpbGVTeXN0ZW06IG9yaWdpbmFsRnMsXG4gICAgdGFyZ2V0RGlyZWN0b3J5XG4gIH0pO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBhcmNoaXZlIGludG8gYSBmcmVzaCwgdW5pcXVlbHktbmFtZWQgdGVtcG9yYXJ5IGZvbGRlciBhbmQgcmV0dXJucyB0aGUgdmF1bHQgcGF0aC5cbiAqXG4gKiBBIHVuaXF1ZSBwYXJlbnQgZm9sZGVyIChgbWtkdGVtcFN5bmNgKSBndWFyYW50ZWVzIGEgYnJhbmQtbmV3IGV4dHJhY3Rpb24gZXZlcnkgdGltZSBcdTIwMTQgdGhlIGRlbW8gdmF1bHRcbiAqIGlzIG5ldmVyIHJldXNlZCBhY3Jvc3Mgb3BlbnMsIHNvIGEgcHJldmlvdXMgc2Vzc2lvbidzIGVkaXRzIG5ldmVyIGxlYWsgaW4uIFRoZSBhcmNoaXZlIGlzIGV4dHJhY3RlZFxuICogaW50byB0aGF0IHBhcmVudCBhbmQgdGhlIHZhdWx0IGlzIHRoZSBzaW5nbGUgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQtPHZlcnNpb24+YCBmb2xkZXIgaXQgY29udGFpbnMsIHNvXG4gKiBPYnNpZGlhbidzIHZhdWx0IHN3aXRjaGVyIHNob3dzIGEgZnJpZW5kbHkgbmFtZSAoaXRzIGJhc2VuYW1lKSByYXRoZXIgdGhhbiB0aGUgcmFuZG9tIHRlbXAgaWQuXG4gKlxuICogVGhhdCBmb2xkZXIgaXMgbm90IHNlYXJjaGVkIGZvcjoge0BsaW5rIGdldERlbW9WYXVsdEZvbGRlck5hbWV9IG5hbWVzIGl0IG9uIGJvdGggc2lkZXMsIHNvIHRoZSBwYXRoIGlzXG4gKiBrbm93biBiZWZvcmUgYSBieXRlIGlzIHdyaXR0ZW4uIFdoaWNoIGtlZXBzIHRoZSBleHRyYWN0b3IgZnJlZSBvZiBhbnkgcmVhZCBcdTIwMTQgZGVsaWJlcmF0ZSwgYmVjYXVzZVxuICogRWxlY3Ryb24ncyBhc2FyIGxheWVyIGludGVyY2VwdHMgYGZzYCByZWFkcyBvbiBhbnkgcGF0aCBjb250YWluaW5nIGAuYXNhcmAsIGFuZCBhIGRlbW8gdmF1bHQgbWF5XG4gKiBsZWdpdGltYXRlbHkgc2hpcCBzdWNoIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBFeHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlclBhcmFtc30uXG4gKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZnJlc2hseSBleHRyYWN0ZWQgdmF1bHQgZm9sZGVyLlxuICovXG5mdW5jdGlvbiBleHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlcihwYXJhbXM6IEV4dHJhY3REZW1vVmF1bHRUb0ZyZXNoRm9sZGVyUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3QgeyBhcmNoaXZlLCBwbHVnaW5JZCwgdmVyc2lvbiB9ID0gcGFyYW1zO1xuICBjb25zdCBleHRyYWN0ZWRWYXVsdHNSb290ID0gam9pbih0bXBkaXIoKSwgREVNT19WQVVMVFNfQ0FDSEVfRk9MREVSLCBFWFRSQUNURURfVkFVTFRTX1NVQkZPTERFUik7XG4gIG1rZGlyU3luYyhleHRyYWN0ZWRWYXVsdHNSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3QgdW5pcXVlUGFyZW50RGlyZWN0b3J5ID0gbWtkdGVtcFN5bmMoam9pbihleHRyYWN0ZWRWYXVsdHNSb290LCBgJHtwbHVnaW5JZH0tJHt2ZXJzaW9ufS1gKSk7XG4gIGV4dHJhY3REZW1vVmF1bHRBcmNoaXZlKGFyY2hpdmUsIHVuaXF1ZVBhcmVudERpcmVjdG9yeSk7XG4gIHJldHVybiBqb2luKFxuICAgIHVuaXF1ZVBhcmVudERpcmVjdG9yeSxcbiAgICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lKHtcbiAgICAgIHBsdWdpbklkLFxuICAgICAgdmVyc2lvblxuICAgIH0pXG4gICk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGRlbW8tdmF1bHQgYXJjaGl2ZSBieXRlcyBmb3IgYSB2ZXJzaW9uLCBkb3dubG9hZGluZyBhbmQgY2FjaGluZyB0aGVtIG9uIGZpcnN0IHVzZS5cbiAqXG4gKiBPbmx5IHRoZSBhcmNoaXZlIGlzIGNhY2hlZCAoa2V5ZWQgYnkgcGx1Z2luIGlkICsgdmVyc2lvbik7IHRoZSBleHRyYWN0ZWQgdmF1bHQgaXMgbm90LiBBIGNhY2hlIGhpdCBpc1xuICogcmV0dXJuZWQgd2l0aG91dCBhbnkgbmV0d29yayByZXF1ZXN0OyBhIG1pc3MgZG93bmxvYWRzIHRoZSByZWxlYXNlIGFzc2V0LCB3cml0ZXMgaXQgdG8gdGhlIGFyY2hpdmVcbiAqIGNhY2hlLCBhbmQgcmV0dXJucyB0aGUgZnJlc2hseSBkb3dubG9hZGVkIGJ5dGVzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUgYXJjaGl2ZSBieXRlcywgb3IgYG51bGxgIHdoZW4gbm8gYXJjaGl2ZSBpcyBhdmFpbGFibGUgZm9yXG4gKiB0aGUgdmVyc2lvbiAoYSBub3RpY2UgaGFzIGJlZW4gc2hvd24pLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZShwYXJhbXM6IFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gIGNvbnN0IHtcbiAgICBwbHVnaW5JZCxcbiAgICBwbHVnaW5OYW1lLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgICBwcm9ncmVzc05vdGljZSxcbiAgICByZXBvLFxuICAgIHZlcnNpb25cbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBhcmNoaXZlc0RpcmVjdG9yeSA9IGpvaW4odG1wZGlyKCksIERFTU9fVkFVTFRTX0NBQ0hFX0ZPTERFUiwgQVJDSElWRVNfU1VCRk9MREVSKTtcbiAgY29uc3QgYXJjaGl2ZVBhdGggPSBqb2luKGFyY2hpdmVzRGlyZWN0b3J5LCBgJHtwbHVnaW5JZH0tJHt2ZXJzaW9ufS56aXBgKTtcbiAgaWYgKGV4aXN0c1N5bmMoYXJjaGl2ZVBhdGgpKSB7XG4gICAgcmV0dXJuIHJlYWRGaWxlU3luYyhhcmNoaXZlUGF0aCk7XG4gIH1cblxuICBwcm9ncmVzc05vdGljZS5zZXRDb250ZW50KGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYERvd25sb2FkaW5nIGRlbW8gdmF1bHQgZm9yICR7YXNDb2RlQmxvY2socGx1Z2luTmFtZSl9IHYke3ZlcnNpb259XHUyMDI2YCkpO1xuICBjb25zdCBhc3NldFVybCA9IGBodHRwczovL2dpdGh1Yi5jb20vJHtyZXBvfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7Z2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKHBsdWdpbklkKX1gO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmwoe1xuICAgIHRocm93OiBmYWxzZSxcbiAgICB1cmw6IGFzc2V0VXJsXG4gIH0pO1xuICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSBIVFRQX1NUQVRVU19PSykge1xuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MoYE5vIGRlbW8gdmF1bHQgaXMgYXZhaWxhYmxlIGZvciBwbHVnaW4gJHthc0NvZGVCbG9jayhwbHVnaW5OYW1lKX0gdiR7dmVyc2lvbn0uYCkpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYXJjaGl2ZSA9IEJ1ZmZlci5mcm9tKHJlc3BvbnNlLmFycmF5QnVmZmVyKTtcbiAgbWtkaXJTeW5jKGFyY2hpdmVzRGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhhcmNoaXZlUGF0aCwgYXJjaGl2ZSk7XG4gIHJldHVybiBhcmNoaXZlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQ0EsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsVUFBQUEsZUFBYztBQUN2QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsY0FBYztBQUN2QixTQUFTLGtCQUFrQjtBQU8zQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsd0JBQXdCO0FBQ2pDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG9CQUFvQjtBQWlEN0IsTUFBTSwyQkFBMkI7QUFDakMsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSw2QkFBNkI7QUFDbkMsTUFBTSxpQkFBaUI7QUFFdkIsTUFBTSxtREFBbUQ7QUFlekQsZUFBc0IsY0FBYyxRQUE0QztBQWU5RTtBQUFB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
|
|
@@ -528,6 +528,13 @@ export declare function isMarkdownFile(pathOrFile: null | PathOrAbstractFile): b
|
|
|
528
528
|
* @returns A boolean indicating whether the file is a note.
|
|
529
529
|
*/
|
|
530
530
|
export declare function isNote(pathOrFile: null | PathOrAbstractFile): boolean;
|
|
531
|
+
/**
|
|
532
|
+
* Checks if the given value is a path or a file.
|
|
533
|
+
*
|
|
534
|
+
* @param value - The value to check.
|
|
535
|
+
* @returns A boolean indicating whether the value is a string or an instance of file.
|
|
536
|
+
*/
|
|
537
|
+
export declare function isPathOrFile(value: unknown): value is PathOrFile;
|
|
531
538
|
/**
|
|
532
539
|
* Checks if the given file should be treated as an attachment because of its extension.
|
|
533
540
|
*
|