obsidian-dev-utils 64.0.0 → 65.0.1
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/CHANGELOG.md +16 -0
- package/dist/dev/main.js +25 -22
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/typings/obsidian-ex.d.cts +1 -1
- package/dist/lib/cjs/obsidian/attachment-path.cjs +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +11 -11
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +9 -9
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +1 -1
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +10 -10
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +9 -9
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +2 -1
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +2 -1
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +2 -1
- package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.d.cts +2 -2
- package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +2 -2
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +1 -1
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +1 -1
- package/dist/lib/cjs/obsidian/file-change.cjs +2 -2
- package/dist/lib/cjs/obsidian/file-system.cjs +2 -2
- package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +2 -2
- package/dist/lib/cjs/obsidian/link.cjs +2 -2
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +1 -1
- package/dist/lib/cjs/obsidian/markdown.cjs +2 -2
- package/dist/lib/cjs/obsidian/metadata-cache.cjs +2 -2
- package/dist/lib/cjs/obsidian/metadata-cache.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/confirm.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/confirm.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +2 -2
- package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +4 -3
- package/dist/lib/cjs/obsidian/reference.cjs +2 -2
- package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +2 -2
- package/dist/lib/cjs/obsidian/resource-url.cjs +2 -2
- package/dist/lib/cjs/obsidian/vault.cjs +2 -2
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -1
- package/dist/lib/cjs/script-utils/exec.cjs +1 -1
- package/dist/lib/cjs/script-utils/exec.d.cts +3 -3
- package/dist/lib/cjs/script-utils/formatters/dprint.cjs +1 -1
- package/dist/lib/cjs/script-utils/formatters/dprint.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/cspell.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/cspell.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +7 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/index.d.cts +2 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +5 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.cjs +277 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +19 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-members.cjs +172 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-members.d.cts +13 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +29 -4
- package/dist/lib/cjs/script-utils/linters/eslint.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +2 -2
- package/dist/lib/cjs/script-utils/root.cjs +1 -1
- package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +1 -1
- package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +2 -2
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/obsidian/@types/dataview/typings/obsidian-ex.d.mts +1 -1
- package/dist/lib/esm/obsidian/attachment-path.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +9 -9
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +11 -11
- package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +1 -1
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +9 -9
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +10 -10
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -1
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -1
- package/dist/lib/esm/obsidian/command-handlers/global-command-handler.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +2 -1
- package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +2 -2
- package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.d.mts +1 -1
- package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +1 -1
- package/dist/lib/esm/obsidian/file-change.mjs +2 -2
- package/dist/lib/esm/obsidian/file-system.mjs +7 -7
- package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +2 -2
- package/dist/lib/esm/obsidian/link.mjs +2 -2
- package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +1 -1
- package/dist/lib/esm/obsidian/markdown.mjs +2 -2
- package/dist/lib/esm/obsidian/metadata-cache.d.mts +1 -1
- package/dist/lib/esm/obsidian/metadata-cache.mjs +2 -2
- package/dist/lib/esm/obsidian/modals/confirm.d.mts +1 -1
- package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin.d.mts +4 -3
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +1 -1
- package/dist/lib/esm/obsidian/reference.mjs +2 -2
- package/dist/lib/esm/obsidian/rename-delete-handler.mjs +5 -5
- package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
- package/dist/lib/esm/obsidian/vault.mjs +6 -6
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
- package/dist/lib/esm/script-utils/exec.d.mts +3 -3
- package/dist/lib/esm/script-utils/exec.mjs +1 -1
- package/dist/lib/esm/script-utils/formatters/dprint.d.mts +2 -2
- package/dist/lib/esm/script-utils/formatters/dprint.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/cspell.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/cspell.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-config.d.mts +2 -2
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/index.d.mts +2 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +5 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +5 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.d.mts +19 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.mjs +168 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-members.d.mts +13 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-members.mjs +63 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +29 -4
- package/dist/lib/esm/script-utils/linters/eslint.d.mts +2 -2
- package/dist/lib/esm/script-utils/linters/eslint.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +2 -2
- package/dist/lib/esm/script-utils/linters/markdownlint.mjs +1 -1
- package/dist/lib/esm/script-utils/root.mjs +1 -1
- package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +2 -2
- package/dist/lib/esm/script-utils/test-runners/vitest.mjs +1 -1
- package/package.json +8 -15
- package/script-utils/linters/eslint-rules/params-options-name-match/package.json +6 -0
- package/script-utils/linters/eslint-rules/readonly-params-options-members/package.json +6 -0
|
@@ -172,4 +172,4 @@ export {
|
|
|
172
172
|
dev,
|
|
173
173
|
invokeEsbuild
|
|
174
174
|
};
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvb2JzaWRpYW4tcGx1Z2luLWJ1aWxkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHRvIGJ1aWxkIGFuZCBidW5kbGUgYW4gT2JzaWRpYW4gcGx1Z2luIHVzaW5nIGVzYnVpbGQuXG4gKiBJdCBpbmNsdWRlcyBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBidWlsZCBwcm9jZXNzIGJhc2VkIG9uIGRpZmZlcmVudCBidWlsZCBtb2RlcyAoZGV2ZWxvcG1lbnQgb3IgcHJvZHVjdGlvbiksXG4gKiBhbmQgaXQgc2V0cyB1cCB2YXJpb3VzIGVzYnVpbGQgcGx1Z2lucyB0byBwcmVwcm9jZXNzLCBsaW50LCBmaXggc291cmNlIG1hcHMsIGFuZCBjb3B5IGZpbGVzIHRvIHRoZSBPYnNpZGlhbiBwbHVnaW5zIGZvbGRlci5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZC1iYXNlZCBidWlsZCBwaXBlbGluZSB3aXRoIHNhc3Mvc3ZlbHRlIHBsdWdpbnMgYW5kIGZpbGUgd2F0Y2hlcnM7IHJlcXVpcmVzIGEgbGl2ZSBlc2J1aWxkIGNvbnRleHQuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQnVpbGRDb250ZXh0LFxuICBCdWlsZE9wdGlvbnMsXG4gIFBsdWdpblxufSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHsgY29udGV4dCB9IGZyb20gJ2VzYnVpbGQnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFdlIG5lZWQgYSB0ZW1wIHZhcmlhYmxlIHRvIGFwcGx5IGBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AoKWAgZml4IGJlbG93LlxuaW1wb3J0IHNhc3NQbHVnaW5fIGZyb20gJ2VzYnVpbGQtc2Fzcy1wbHVnaW4nO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyLFxuICBybSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgYnVpbHRpbk1vZHVsZXMgfSBmcm9tICdub2RlOm1vZHVsZSc7XG5pbXBvcnQgcHJvY2VzcywgeyBsb2FkRW52RmlsZSB9IGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcCB9IGZyb20gJy4uLy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uLy4uLy4uL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vLi4vLi4vcGF0aC50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IENsaVRhc2tSZXN1bHQgfSBmcm9tICcuLi8uLi9jbGktdXRpbHMudHMnO1xuaW1wb3J0IHsgbnBtUnVuIH0gZnJvbSAnLi4vLi4vbnBtLXJ1bi50cyc7XG5pbXBvcnQgeyByZWFkUGFja2FnZUpzb24gfSBmcm9tICcuLi8uLi9ucG0udHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBhdGhGcm9tUm9vdCB9IGZyb20gJy4uLy4uL3Jvb3QudHMnO1xuaW1wb3J0IHsgY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luIH0gZnJvbSAnLi9jb3B5LXRvLW9ic2lkaWFuLXBsdWdpbnMtZm9sZGVyLXBsdWdpbi50cyc7XG5pbXBvcnQgeyBjdXN0b21Fc2J1aWxkT3B0aW9uc1BsdWdpbiB9IGZyb20gJy4vY3VzdG9tLWVzYnVpbGQtb3B0aW9ucy1wbHVnaW4udHMnO1xuaW1wb3J0IHsgZml4RXNtUGx1Z2luIH0gZnJvbSAnLi9maXgtZXNtLXBsdWdpbi50cyc7XG5pbXBvcnQgeyBmaXhTb3VyY2VNYXBzUGx1Z2luIH0gZnJvbSAnLi9maXgtc291cmNlLW1hcHMtcGx1Z2luLnRzJztcbmltcG9ydCB7IHByZXByb2Nlc3NQbHVnaW4gfSBmcm9tICcuL3ByZXByb2Nlc3MtcGx1Z2luLnRzJztcbmltcG9ydCB7IHJlbmFtZUNzc1BsdWdpbiB9IGZyb20gJy4vcmVuYW1lLWNzcy1wbHVnaW4udHMnO1xuaW1wb3J0IHsgc3ZlbHRlV3JhcHBlclBsdWdpbiB9IGZyb20gJy4vc3ZlbHRlLXdyYXBwZXItcGx1Z2luLnRzJztcblxuY29uc3Qgc2Fzc1BsdWdpbiA9IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcChzYXNzUGx1Z2luXyk7XG5cbi8qKlxuICogRW51bWVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBidWlsZCBtb2Rlcy5cbiAqL1xuZXhwb3J0IGVudW0gQnVpbGRNb2RlIHtcbiAgLyoqIERldmVsb3BtZW50IG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgRGV2ZWxvcG1lbnQsXG4gIC8qKiBQcm9kdWN0aW9uIG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgUHJvZHVjdGlvblxufVxuXG4vKipcbiAqIEJhbm5lciB0ZXh0IHRvIGJlIGluY2x1ZGVkIGF0IHRoZSB0b3Agb2YgdGhlIGdlbmVyYXRlZCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJhbm5lciA9IGAvKlxuVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgRVNCVUlMRFxuaWYgeW91IHdhbnQgdG8gdmlldyB0aGUgc291cmNlLCBwbGVhc2UgdmlzaXQgdGhlIGdpdGh1YiByZXBvc2l0b3J5IG9mIHRoaXMgcGx1Z2luXG4qL1xuYDtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgYnVpbGRPYnNpZGlhblBsdWdpbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRPYnNpZGlhblBsdWdpblBhcmFtcyB7XG4gIC8qKlxuICAgKiBDdXN0b20gZXNidWlsZCBwbHVnaW5zIHRvIGJlIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRXNidWlsZFBsdWdpbnM/OiBQbHVnaW5bXTtcblxuICAvKipcbiAgICogQ3VzdG9taXplcyB0aGUgYGVzYnVpbGRgIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21pemVFc2J1aWxkT3B0aW9ucz86IChvcHRpb25zOiBCdWlsZE9wdGlvbnMpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEEgYnVpbGQgbW9kZSwgZWl0aGVyIGBEZXZlbG9wbWVudGAgb3IgYFByb2R1Y3Rpb25gXG4gICAqL1xuICByZWFkb25seSBtb2RlOiBCdWlsZE1vZGU7XG5cbiAgLyoqXG4gICAqIEEgZm9sZGVyIGZvciBPYnNpZGlhbiBjb25maWd1cmF0aW9uLiBEZWZhdWx0cyB0byB0aGUgYE9CU0lESUFOX0NPTkZJR19GT0xERVJgIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5Db25maWdGb2xkZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQnVpbGQgcGFyYW1ldGVycyB3aXRob3V0IHRoZSBtb2RlIGZpZWxkLCBmb3IgdXNlIHdpdGgge0BsaW5rIGJ1aWxkfSBhbmQge0BsaW5rIGRldn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRQYXJhbXMge1xuICAvKipcbiAgICogQ3VzdG9tIGVzYnVpbGQgcGx1Z2lucyB0byBiZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUVzYnVpbGRQbHVnaW5zPzogUGx1Z2luW107XG5cbiAgLyoqXG4gICAqIEN1c3RvbWl6ZXMgdGhlIGBlc2J1aWxkYCBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9taXplRXNidWlsZE9wdGlvbnM/OiAob3B0aW9uczogQnVpbGRPcHRpb25zKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBIGZvbGRlciBmb3IgT2JzaWRpYW4gY29uZmlndXJhdGlvbi4gRGVmYXVsdHMgdG8gdGhlIGBPQlNJRElBTl9DT05GSUdfRk9MREVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuQ29uZmlnRm9sZGVyPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgT2JzaWRpYW5QbHVnaW5CdWlsZGVyRW52IHtcbiAgT0JTSURJQU5fQ09ORklHX0ZPTERFUjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgT2JzaWRpYW4gcGx1Z2luIGluIHByb2R1Y3Rpb24gbW9kZSB1c2luZyBlc2J1aWxkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBidWlsZCBwYXJhbWV0ZXJzIChtb2RlIGlzIHNldCB0byBQcm9kdWN0aW9uIGF1dG9tYXRpY2FsbHkpLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBidWlsZCBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkKHBhcmFtcz86IEJ1aWxkUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkT2JzaWRpYW5QbHVnaW4oeyAuLi5wYXJhbXMsIG1vZGU6IEJ1aWxkTW9kZS5Qcm9kdWN0aW9uIH0pO1xuICByZXN1bHQudGhyb3dPbkZhaWx1cmUoKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIE9ic2lkaWFuIHBsdWdpbiBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIG1vZGUgYW5kIGNvbmZpZ3VyYXRpb24gZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgYnVpbGRpbmcgdGhlIHBsdWdpbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gaW5kaWNhdGluZyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBidWlsZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkT2JzaWRpYW5QbHVnaW4ocGFyYW1zOiBCdWlsZE9ic2lkaWFuUGx1Z2luUGFyYW1zKTogUHJvbWlzZTxDbGlUYXNrUmVzdWx0PiB7XG4gIGF3YWl0IG5wbVJ1bignYnVpbGQ6Y29tcGlsZScpO1xuICBjb25zdCBlbnZQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdCgnLmVudicpO1xuICBpZiAoZW52UGF0aCAmJiBleGlzdHNTeW5jKGVudlBhdGgpKSB7XG4gICAgbG9hZEVudkZpbGUoZW52UGF0aCk7XG4gIH1cbiAgY29uc3Qgb2JzaWRpYW5QbHVnaW5CdWlsZGVyRW52ID0gcHJvY2Vzcy5lbnYgYXMgUGFydGlhbDxPYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnY+O1xuXG4gIGNvbnN0IG9ic2lkaWFuQ29uZmlnRm9sZGVyID0gcGFyYW1zLm9ic2lkaWFuQ29uZmlnRm9sZGVyID8/IG9ic2lkaWFuUGx1Z2luQnVpbGRlckVudi5PQlNJRElBTl9DT05GSUdfRk9MREVSID8/ICcnO1xuICBjb25zdCBpc1Byb2R1Y3Rpb25CdWlsZCA9IHBhcmFtcy5tb2RlID09PSBCdWlsZE1vZGUuUHJvZHVjdGlvbjtcblxuICBjb25zdCBkaXN0Rm9sZGVyID0gZW5zdXJlTm9uTnVsbGFibGUoXG4gICAgcmVzb2x2ZVBhdGhGcm9tUm9vdChpc1Byb2R1Y3Rpb25CdWlsZCA/IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCA6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3REZXYpLFxuICAgICdDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBkaXN0IGZvbGRlcidcbiAgKTtcblxuICBpZiAoZXhpc3RzU3luYyhkaXN0Rm9sZGVyKSkge1xuICAgIGF3YWl0IHJtKGRpc3RGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG4gIGF3YWl0IG1rZGlyKGRpc3RGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGRpc3RGaWxlTmFtZXMgPSBbXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uXG4gIF07XG4gIGlmICghaXNQcm9kdWN0aW9uQnVpbGQpIHtcbiAgICBhd2FpdCB3cml0ZUZpbGUoam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Ib3RSZWxvYWQpLCAnJywgJ3V0Zi04Jyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGRpc3RGaWxlTmFtZXMpIHtcbiAgICBjb25zdCBsb2NhbEZpbGUgPSBlbnN1cmVOb25OdWxsYWJsZShyZXNvbHZlUGF0aEZyb21Sb290KGZpbGVOYW1lKSwgYENvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGxvY2FsIGZpbGUgZm9yICR7ZmlsZU5hbWV9YCk7XG4gICAgY29uc3QgZGlzdEZpbGUgPSBqb2luKGRpc3RGb2xkZXIsIGZpbGVOYW1lKTtcblxuICAgIGlmIChleGlzdHNTeW5jKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGNwKGxvY2FsRmlsZSwgZGlzdEZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpc3RQYXRoID0gam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnMpO1xuICBjb25zdCBjc3NQYXRoID0gam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TdHlsZXNDc3MpO1xuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIGNvbnN0IHBsdWdpbk5hbWUgPSBwYWNrYWdlSnNvbi5uYW1lID8/ICcodW5rbm93biknO1xuXG4gIGNvbnN0IGJ1aWxkT3B0aW9uczogQnVpbGRPcHRpb25zID0ge1xuICAgIGJhbm5lcjoge1xuICAgICAganM6IGJhbm5lclxuICAgIH0sXG4gICAgYnVuZGxlOiB0cnVlLFxuICAgIGNvbmRpdGlvbnM6IFsnYnJvd3NlciddLFxuICAgIGVudHJ5UG9pbnRzOiBbXG4gICAgICBlbnN1cmVOb25OdWxsYWJsZShcbiAgICAgICAgcmVzb2x2ZVBhdGhGcm9tUm9vdChqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFpblRzKSksXG4gICAgICAgICdDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIHBsdWdpbidcbiAgICAgIClcbiAgICBdLFxuICAgIGV4dGVybmFsOiBbXG4gICAgICAnb2JzaWRpYW4nLFxuICAgICAgJ2VsZWN0cm9uJyxcbiAgICAgICdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2NvbGxhYicsXG4gICAgICAnQGNvZGVtaXJyb3IvY29tbWFuZHMnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2xhbmd1YWdlJyxcbiAgICAgICdAY29kZW1pcnJvci9saW50JyxcbiAgICAgICdAY29kZW1pcnJvci9zZWFyY2gnLFxuICAgICAgJ0Bjb2RlbWlycm9yL3N0YXRlJyxcbiAgICAgICdAY29kZW1pcnJvci92aWV3JyxcbiAgICAgICdAbGV6ZXIvY29tbW9uJyxcbiAgICAgICdAbGV6ZXIvaGlnaGxpZ2h0JyxcbiAgICAgICdAbGV6ZXIvbHInLFxuICAgICAgJ2VzYnVpbGQnLFxuICAgICAgJ2VzbGludCcsXG4gICAgICAuLi5idWlsdGluTW9kdWxlc1xuICAgIF0sXG4gICAgZm9ybWF0OiAnY2pzJyxcbiAgICBrZWVwTmFtZXM6IHRydWUsXG4gICAgbG9nTGV2ZWw6ICdpbmZvJyxcbiAgICBtaW5pZnk6IGlzUHJvZHVjdGlvbkJ1aWxkLFxuICAgIG91dGZpbGU6IGRpc3RQYXRoLFxuICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgcGx1Z2luczogW1xuICAgICAgY3VzdG9tRXNidWlsZE9wdGlvbnNQbHVnaW4ocGFyYW1zLmN1c3RvbWl6ZUVzYnVpbGRPcHRpb25zPy5iaW5kKHBhcmFtcykpLFxuICAgICAgc3ZlbHRlV3JhcHBlclBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZCksXG4gICAgICBzYXNzUGx1Z2luKHtcbiAgICAgICAgc291cmNlTWFwOiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICAgIH0pLFxuICAgICAgcmVuYW1lQ3NzUGx1Z2luKGRpc3RGb2xkZXIpLFxuICAgICAgcHJlcHJvY2Vzc1BsdWdpbigpLFxuICAgICAgZml4RXNtUGx1Z2luKCksXG4gICAgICBmaXhTb3VyY2VNYXBzUGx1Z2luKGlzUHJvZHVjdGlvbkJ1aWxkLCBbZGlzdFBhdGgsIGNzc1BhdGhdLCBwbHVnaW5OYW1lKSxcbiAgICAgIC4uLnBhcmFtcy5jdXN0b21Fc2J1aWxkUGx1Z2lucyA/PyBbXSxcbiAgICAgIGNvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZCwgZGlzdEZvbGRlciwgb2JzaWRpYW5Db25maWdGb2xkZXIsIHBsdWdpbk5hbWUpXG4gICAgXSxcbiAgICBzb3VyY2VtYXA6IGlzUHJvZHVjdGlvbkJ1aWxkID8gZmFsc2UgOiAnaW5saW5lJyxcbiAgICB0YXJnZXQ6ICdlc25leHQnLFxuICAgIHRyZWVTaGFraW5nOiB0cnVlXG4gIH07XG5cbiAgY29uc3QgYnVpbGRDb250ZXh0ID0gYXdhaXQgY29udGV4dChidWlsZE9wdGlvbnMpO1xuICByZXR1cm4gYXdhaXQgaW52b2tlRXNidWlsZChidWlsZENvbnRleHQsIGlzUHJvZHVjdGlvbkJ1aWxkKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIE9ic2lkaWFuIHBsdWdpbiBpbiBkZXZlbG9wbWVudCBtb2RlIHVzaW5nIGVzYnVpbGQgd2l0aCB3YXRjaC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gT3B0aW9uYWwgYnVpbGQgcGFyYW1ldGVycyAobW9kZSBpcyBzZXQgdG8gRGV2ZWxvcG1lbnQgYXV0b21hdGljYWxseSkuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IGluZGljYXRpbmcgdGhlIGJ1aWxkIHJlc3VsdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRldihwYXJhbXM/OiBCdWlsZFBhcmFtcyk6IFByb21pc2U8Q2xpVGFza1Jlc3VsdD4ge1xuICByZXR1cm4gYXdhaXQgYnVpbGRPYnNpZGlhblBsdWdpbih7IC4uLnBhcmFtcywgbW9kZTogQnVpbGRNb2RlLkRldmVsb3BtZW50IH0pO1xufVxuXG4vKipcbiAqIEludm9rZXMgdGhlIGJ1aWxkIHByb2Nlc3Mgd2l0aCB0aGUgcHJvdmlkZWQgYnVpbGQgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gYnVpbGRDb250ZXh0IC0gVGhlIGJ1aWxkIGNvbnRleHQgZ2VuZXJhdGVkIGJ5IGVzYnVpbGQuXG4gKiBAcGFyYW0gaXNQcm9kdWN0aW9uQnVpbGQgLSBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBidWlsZCBpcyBhIHByb2R1Y3Rpb24gYnVpbGQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IGluZGljYXRpbmcgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgYnVpbGQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnZva2VFc2J1aWxkKGJ1aWxkQ29udGV4dDogQnVpbGRDb250ZXh0LCBpc1Byb2R1Y3Rpb25CdWlsZDogYm9vbGVhbik6IFByb21pc2U8Q2xpVGFza1Jlc3VsdD4ge1xuICBpZiAoaXNQcm9kdWN0aW9uQnVpbGQpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBidWlsZENvbnRleHQucmVidWlsZCgpO1xuICAgIGNvbnN0IGlzU3VjY2VzcyA9IHJlc3VsdC5lcnJvcnMubGVuZ3RoID09PSAwICYmIHJlc3VsdC53YXJuaW5ncy5sZW5ndGggPT09IDA7XG4gICAgcmV0dXJuIENsaVRhc2tSZXN1bHQuU3VjY2Vzcyhpc1N1Y2Nlc3MpO1xuICB9XG4gIGF3YWl0IGJ1aWxkQ29udGV4dC53YXRjaCgpO1xuICByZXR1cm4gQ2xpVGFza1Jlc3VsdC5Eb05vdEV4aXQoKTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLFNBQVMsZUFBZTtBQUV4QixPQUFPLGlCQUFpQjtBQUN4QixTQUFTLGtCQUFrQjtBQUMzQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxzQkFBc0I7QUFDL0IsT0FBTyxXQUFXLG1CQUFtQjtBQUVyQyxTQUFTLG1DQUFtQztBQUM1QyxTQUFTLCtCQUErQjtBQUN4QyxTQUFTLFlBQVk7QUFDckIsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxxQkFBcUI7QUFDOUIsU0FBUyxjQUFjO0FBQ3ZCLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMseUNBQXlDO0FBQ2xELFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsMkJBQTJCO0FBRXBDLE1BQU0sYUFBYSw0QkFBNEIsV0FBVztBQUtuRCxJQUFLLFlBQUwsa0JBQUtBLGVBQUw7QUFFTCxFQUFBQSxzQkFBQTtBQUVBLEVBQUFBLHNCQUFBO0FBSlUsU0FBQUE7QUFBQSxHQUFBO0FBVUwsTUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2RHRCLGVBQXNCLE1BQU0sUUFBcUM7QUFDL0QsUUFBTSxTQUFTLE1BQU0sb0JBQW9CLEVBQUUsR0FBRyxRQUFRLE1BQU0sbUJBQXFCLENBQUM7QUFDbEYsU0FBTyxlQUFlO0FBQ3hCO0FBUUEsZUFBc0Isb0JBQW9CLFFBQTJEO0FBQ25HLFFBQU0sT0FBTyxlQUFlO0FBQzVCLFFBQU0sVUFBVSxvQkFBb0IsTUFBTTtBQUMxQyxNQUFJLFdBQVcsV0FBVyxPQUFPLEdBQUc7QUFDbEMsZ0JBQVksT0FBTztBQUFBLEVBQ3JCO0FBQ0EsUUFBTSwyQkFBMkIsUUFBUTtBQUV6QyxRQUFNLHVCQUF1QixPQUFPLHdCQUF3Qix5QkFBeUIsMEJBQTBCO0FBQy9HLFFBQU0sb0JBQW9CLE9BQU8sU0FBUztBQUUxQyxRQUFNLGFBQWE7QUFBQSxJQUNqQixvQkFBb0Isb0JBQW9CLHdCQUF3QixZQUFZLHdCQUF3QixPQUFPO0FBQUEsSUFDM0c7QUFBQSxFQUNGO0FBRUEsTUFBSSxXQUFXLFVBQVUsR0FBRztBQUMxQixVQUFNLEdBQUcsWUFBWSxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQUEsRUFDMUM7QUFDQSxRQUFNLE1BQU0sWUFBWSxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBRTNDLFFBQU0sZ0JBQWdCO0FBQUEsSUFDcEIsd0JBQXdCO0FBQUEsRUFDMUI7QUFDQSxNQUFJLENBQUMsbUJBQW1CO0FBQ3RCLFVBQU0sVUFBVSxLQUFLLFlBQVksd0JBQXdCLFNBQVMsR0FBRyxJQUFJLE9BQU87QUFBQSxFQUNsRjtBQUVBLGFBQVcsWUFBWSxlQUFlO0FBQ3BDLFVBQU0sWUFBWSxrQkFBa0Isb0JBQW9CLFFBQVEsR0FBRywwQ0FBMEMsUUFBUSxFQUFFO0FBQ3ZILFVBQU0sV0FBVyxLQUFLLFlBQVksUUFBUTtBQUUxQyxRQUFJLFdBQVcsU0FBUyxHQUFHO0FBQ3pCLFlBQU0sR0FBRyxXQUFXLFFBQVE7QUFBQSxJQUM5QjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFdBQVcsS0FBSyxZQUFZLHdCQUF3QixNQUFNO0FBQ2hFLFFBQU0sVUFBVSxLQUFLLFlBQVksd0JBQXdCLFNBQVM7QUFFbEUsUUFBTSxjQUFjLE1BQU0sZ0JBQWdCO0FBQzFDLFFBQU0sYUFBYSxZQUFZLFFBQVE7QUFFdkMsUUFBTSxlQUE2QjtBQUFBLElBQ2pDLFFBQVE7QUFBQSxNQUNOLElBQUk7QUFBQSxJQUNOO0FBQUEsSUFDQSxRQUFRO0FBQUEsSUFDUixZQUFZLENBQUMsU0FBUztBQUFBLElBQ3RCLGFBQWE7QUFBQSxNQUNYO0FBQUEsUUFDRSxvQkFBb0IsS0FBSyx3QkFBd0IsS0FBSyx3QkFBd0IsTUFBTSxDQUFDO0FBQUEsUUFDckY7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0EsR0FBRztBQUFBLElBQ0w7QUFBQSxJQUNBLFFBQVE7QUFBQSxJQUNSLFdBQVc7QUFBQSxJQUNYLFVBQVU7QUFBQSxJQUNWLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxJQUNWLFNBQVM7QUFBQSxNQUNQLDJCQUEyQixPQUFPLHlCQUF5QixLQUFLLE1BQU0sQ0FBQztBQUFBLE1BQ3ZFLG9CQUFvQixpQkFBaUI7QUFBQSxNQUNyQyxXQUFXO0FBQUEsUUFDVCxXQUFXLENBQUM7QUFBQSxNQUNkLENBQUM7QUFBQSxNQUNELGdCQUFnQixVQUFVO0FBQUEsTUFDMUIsaUJBQWlCO0FBQUEsTUFDakIsYUFBYTtBQUFBLE1BQ2Isb0JBQW9CLG1CQUFtQixDQUFDLFVBQVUsT0FBTyxHQUFHLFVBQVU7QUFBQSxNQUN0RSxHQUFHLE9BQU8sd0JBQXdCLENBQUM7QUFBQSxNQUNuQyxrQ0FBa0MsbUJBQW1CLFlBQVksc0JBQXNCLFVBQVU7QUFBQSxJQUNuRztBQUFBLElBQ0EsV0FBVyxvQkFBb0IsUUFBUTtBQUFBLElBQ3ZDLFFBQVE7QUFBQSxJQUNSLGFBQWE7QUFBQSxFQUNmO0FBRUEsUUFBTSxlQUFlLE1BQU0sUUFBUSxZQUFZO0FBQy9DLFNBQU8sTUFBTSxjQUFjLGNBQWMsaUJBQWlCO0FBQzVEO0FBUUEsZUFBc0IsSUFBSSxRQUE4QztBQUN0RSxTQUFPLE1BQU0sb0JBQW9CLEVBQUUsR0FBRyxRQUFRLE1BQU0sb0JBQXNCLENBQUM7QUFDN0U7QUFTQSxlQUFzQixjQUFjLGNBQTRCLG1CQUFvRDtBQUNsSCxNQUFJLG1CQUFtQjtBQUNyQixVQUFNLFNBQVMsTUFBTSxhQUFhLFFBQVE7QUFDMUMsVUFBTSxZQUFZLE9BQU8sT0FBTyxXQUFXLEtBQUssT0FBTyxTQUFTLFdBQVc7QUFDM0UsV0FBTyxjQUFjLFFBQVEsU0FBUztBQUFBLEVBQ3hDO0FBQ0EsUUFBTSxhQUFhLE1BQU07QUFDekIsU0FBTyxjQUFjLFVBQVU7QUFDakM7IiwKICAibmFtZXMiOiBbIkJ1aWxkTW9kZSJdCn0K
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvb2JzaWRpYW4tcGx1Z2luLWJ1aWxkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHRvIGJ1aWxkIGFuZCBidW5kbGUgYW4gT2JzaWRpYW4gcGx1Z2luIHVzaW5nIGVzYnVpbGQuXG4gKiBJdCBpbmNsdWRlcyBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBidWlsZCBwcm9jZXNzIGJhc2VkIG9uIGRpZmZlcmVudCBidWlsZCBtb2RlcyAoZGV2ZWxvcG1lbnQgb3IgcHJvZHVjdGlvbiksXG4gKiBhbmQgaXQgc2V0cyB1cCB2YXJpb3VzIGVzYnVpbGQgcGx1Z2lucyB0byBwcmVwcm9jZXNzLCBsaW50LCBmaXggc291cmNlIG1hcHMsIGFuZCBjb3B5IGZpbGVzIHRvIHRoZSBPYnNpZGlhbiBwbHVnaW5zIGZvbGRlci5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZC1iYXNlZCBidWlsZCBwaXBlbGluZSB3aXRoIHNhc3Mvc3ZlbHRlIHBsdWdpbnMgYW5kIGZpbGUgd2F0Y2hlcnM7IHJlcXVpcmVzIGEgbGl2ZSBlc2J1aWxkIGNvbnRleHQuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQnVpbGRDb250ZXh0LFxuICBCdWlsZE9wdGlvbnMsXG4gIFBsdWdpblxufSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHsgY29udGV4dCB9IGZyb20gJ2VzYnVpbGQnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFdlIG5lZWQgYSB0ZW1wIHZhcmlhYmxlIHRvIGFwcGx5IGBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AoKWAgZml4IGJlbG93LlxuaW1wb3J0IHNhc3NQbHVnaW5fIGZyb20gJ2VzYnVpbGQtc2Fzcy1wbHVnaW4nO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyLFxuICBybSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgYnVpbHRpbk1vZHVsZXMgfSBmcm9tICdub2RlOm1vZHVsZSc7XG5pbXBvcnQgcHJvY2VzcywgeyBsb2FkRW52RmlsZSB9IGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcCB9IGZyb20gJy4uLy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uLy4uLy4uL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vLi4vLi4vcGF0aC50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IENsaVRhc2tSZXN1bHQgfSBmcm9tICcuLi8uLi9jbGktdXRpbHMudHMnO1xuaW1wb3J0IHsgbnBtUnVuIH0gZnJvbSAnLi4vLi4vbnBtLXJ1bi50cyc7XG5pbXBvcnQgeyByZWFkUGFja2FnZUpzb24gfSBmcm9tICcuLi8uLi9ucG0udHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBhdGhGcm9tUm9vdCB9IGZyb20gJy4uLy4uL3Jvb3QudHMnO1xuaW1wb3J0IHsgY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luIH0gZnJvbSAnLi9jb3B5LXRvLW9ic2lkaWFuLXBsdWdpbnMtZm9sZGVyLXBsdWdpbi50cyc7XG5pbXBvcnQgeyBjdXN0b21Fc2J1aWxkT3B0aW9uc1BsdWdpbiB9IGZyb20gJy4vY3VzdG9tLWVzYnVpbGQtb3B0aW9ucy1wbHVnaW4udHMnO1xuaW1wb3J0IHsgZml4RXNtUGx1Z2luIH0gZnJvbSAnLi9maXgtZXNtLXBsdWdpbi50cyc7XG5pbXBvcnQgeyBmaXhTb3VyY2VNYXBzUGx1Z2luIH0gZnJvbSAnLi9maXgtc291cmNlLW1hcHMtcGx1Z2luLnRzJztcbmltcG9ydCB7IHByZXByb2Nlc3NQbHVnaW4gfSBmcm9tICcuL3ByZXByb2Nlc3MtcGx1Z2luLnRzJztcbmltcG9ydCB7IHJlbmFtZUNzc1BsdWdpbiB9IGZyb20gJy4vcmVuYW1lLWNzcy1wbHVnaW4udHMnO1xuaW1wb3J0IHsgc3ZlbHRlV3JhcHBlclBsdWdpbiB9IGZyb20gJy4vc3ZlbHRlLXdyYXBwZXItcGx1Z2luLnRzJztcblxuY29uc3Qgc2Fzc1BsdWdpbiA9IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcChzYXNzUGx1Z2luXyk7XG5cbi8qKlxuICogRW51bWVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBidWlsZCBtb2Rlcy5cbiAqL1xuZXhwb3J0IGVudW0gQnVpbGRNb2RlIHtcbiAgLyoqIERldmVsb3BtZW50IG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgRGV2ZWxvcG1lbnQsXG4gIC8qKiBQcm9kdWN0aW9uIG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgUHJvZHVjdGlvblxufVxuXG4vKipcbiAqIEJhbm5lciB0ZXh0IHRvIGJlIGluY2x1ZGVkIGF0IHRoZSB0b3Agb2YgdGhlIGdlbmVyYXRlZCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJhbm5lciA9IGAvKlxuVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgRVNCVUlMRFxuaWYgeW91IHdhbnQgdG8gdmlldyB0aGUgc291cmNlLCBwbGVhc2UgdmlzaXQgdGhlIGdpdGh1YiByZXBvc2l0b3J5IG9mIHRoaXMgcGx1Z2luXG4qL1xuYDtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgYnVpbGRPYnNpZGlhblBsdWdpbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRPYnNpZGlhblBsdWdpblBhcmFtcyB7XG4gIC8qKlxuICAgKiBDdXN0b20gZXNidWlsZCBwbHVnaW5zIHRvIGJlIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRXNidWlsZFBsdWdpbnM/OiBQbHVnaW5bXTtcblxuICAvKipcbiAgICogQ3VzdG9taXplcyB0aGUgYGVzYnVpbGRgIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21pemVFc2J1aWxkT3B0aW9ucz86IChvcHRpb25zOiBCdWlsZE9wdGlvbnMpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEEgYnVpbGQgbW9kZSwgZWl0aGVyIGBEZXZlbG9wbWVudGAgb3IgYFByb2R1Y3Rpb25gXG4gICAqL1xuICByZWFkb25seSBtb2RlOiBCdWlsZE1vZGU7XG5cbiAgLyoqXG4gICAqIEEgZm9sZGVyIGZvciBPYnNpZGlhbiBjb25maWd1cmF0aW9uLiBEZWZhdWx0cyB0byB0aGUgYE9CU0lESUFOX0NPTkZJR19GT0xERVJgIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5Db25maWdGb2xkZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQnVpbGQgcGFyYW1ldGVycyB3aXRob3V0IHRoZSBtb2RlIGZpZWxkLCBmb3IgdXNlIHdpdGgge0BsaW5rIGJ1aWxkfSBhbmQge0BsaW5rIGRldn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRQYXJhbXMge1xuICAvKipcbiAgICogQ3VzdG9tIGVzYnVpbGQgcGx1Z2lucyB0byBiZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUVzYnVpbGRQbHVnaW5zPzogUGx1Z2luW107XG5cbiAgLyoqXG4gICAqIEN1c3RvbWl6ZXMgdGhlIGBlc2J1aWxkYCBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9taXplRXNidWlsZE9wdGlvbnM/OiAob3B0aW9uczogQnVpbGRPcHRpb25zKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBIGZvbGRlciBmb3IgT2JzaWRpYW4gY29uZmlndXJhdGlvbi4gRGVmYXVsdHMgdG8gdGhlIGBPQlNJRElBTl9DT05GSUdfRk9MREVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuQ29uZmlnRm9sZGVyPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgT2JzaWRpYW5QbHVnaW5CdWlsZGVyRW52IHtcbiAgT0JTSURJQU5fQ09ORklHX0ZPTERFUjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgT2JzaWRpYW4gcGx1Z2luIGluIHByb2R1Y3Rpb24gbW9kZSB1c2luZyBlc2J1aWxkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBidWlsZCBwYXJhbWV0ZXJzIChtb2RlIGlzIHNldCB0byBQcm9kdWN0aW9uIGF1dG9tYXRpY2FsbHkpLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBidWlsZCBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkKHBhcmFtcz86IEJ1aWxkUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkT2JzaWRpYW5QbHVnaW4oeyAuLi5wYXJhbXMsIG1vZGU6IEJ1aWxkTW9kZS5Qcm9kdWN0aW9uIH0pO1xuICByZXN1bHQudGhyb3dPbkZhaWx1cmUoKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIE9ic2lkaWFuIHBsdWdpbiBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIG1vZGUgYW5kIGNvbmZpZ3VyYXRpb24gZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgYnVpbGRpbmcgdGhlIHBsdWdpbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gaW5kaWNhdGluZyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBidWlsZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkT2JzaWRpYW5QbHVnaW4ocGFyYW1zOiBCdWlsZE9ic2lkaWFuUGx1Z2luUGFyYW1zKTogUHJvbWlzZTxDbGlUYXNrUmVzdWx0PiB7XG4gIGF3YWl0IG5wbVJ1bignYnVpbGQ6Y29tcGlsZScpO1xuICBjb25zdCBlbnZQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdCgnLmVudicpO1xuICBpZiAoZW52UGF0aCAmJiBleGlzdHNTeW5jKGVudlBhdGgpKSB7XG4gICAgbG9hZEVudkZpbGUoZW52UGF0aCk7XG4gIH1cbiAgY29uc3Qgb2JzaWRpYW5QbHVnaW5CdWlsZGVyRW52ID0gcHJvY2Vzcy5lbnYgYXMgUGFydGlhbDxPYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnY+O1xuXG4gIGNvbnN0IG9ic2lkaWFuQ29uZmlnRm9sZGVyID0gcGFyYW1zLm9ic2lkaWFuQ29uZmlnRm9sZGVyID8/IG9ic2lkaWFuUGx1Z2luQnVpbGRlckVudi5PQlNJRElBTl9DT05GSUdfRk9MREVSID8/ICcnO1xuICBjb25zdCBpc1Byb2R1Y3Rpb25CdWlsZCA9IHBhcmFtcy5tb2RlID09PSBCdWlsZE1vZGUuUHJvZHVjdGlvbjtcblxuICBjb25zdCBkaXN0Rm9sZGVyID0gZW5zdXJlTm9uTnVsbGFibGUoXG4gICAgcmVzb2x2ZVBhdGhGcm9tUm9vdChpc1Byb2R1Y3Rpb25CdWlsZCA/IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCA6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3REZXYpLFxuICAgICdDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBkaXN0IGZvbGRlcidcbiAgKTtcblxuICBpZiAoZXhpc3RzU3luYyhkaXN0Rm9sZGVyKSkge1xuICAgIGF3YWl0IHJtKGRpc3RGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG4gIGF3YWl0IG1rZGlyKGRpc3RGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGRpc3RGaWxlTmFtZXMgPSBbXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uXG4gIF07XG4gIGlmICghaXNQcm9kdWN0aW9uQnVpbGQpIHtcbiAgICBhd2FpdCB3cml0ZUZpbGUoam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Ib3RSZWxvYWQpLCAnJywgJ3V0Zi04Jyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGRpc3RGaWxlTmFtZXMpIHtcbiAgICBjb25zdCBsb2NhbEZpbGUgPSBlbnN1cmVOb25OdWxsYWJsZShyZXNvbHZlUGF0aEZyb21Sb290KGZpbGVOYW1lKSwgYENvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGxvY2FsIGZpbGUgZm9yICR7ZmlsZU5hbWV9YCk7XG4gICAgY29uc3QgZGlzdEZpbGUgPSBqb2luKGRpc3RGb2xkZXIsIGZpbGVOYW1lKTtcblxuICAgIGlmIChleGlzdHNTeW5jKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGNwKGxvY2FsRmlsZSwgZGlzdEZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpc3RQYXRoID0gam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnMpO1xuICBjb25zdCBjc3NQYXRoID0gam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TdHlsZXNDc3MpO1xuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIGNvbnN0IHBsdWdpbk5hbWUgPSBwYWNrYWdlSnNvbi5uYW1lID8/ICcodW5rbm93biknO1xuXG4gIGNvbnN0IGJ1aWxkT3B0aW9uczogQnVpbGRPcHRpb25zID0ge1xuICAgIGJhbm5lcjoge1xuICAgICAganM6IGJhbm5lclxuICAgIH0sXG4gICAgYnVuZGxlOiB0cnVlLFxuICAgIGNvbmRpdGlvbnM6IFsnYnJvd3NlciddLFxuICAgIGVudHJ5UG9pbnRzOiBbXG4gICAgICBlbnN1cmVOb25OdWxsYWJsZShcbiAgICAgICAgcmVzb2x2ZVBhdGhGcm9tUm9vdChqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFpblRzKSksXG4gICAgICAgICdDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIHBsdWdpbidcbiAgICAgIClcbiAgICBdLFxuICAgIGV4dGVybmFsOiBbXG4gICAgICAnb2JzaWRpYW4nLFxuICAgICAgJ2VsZWN0cm9uJyxcbiAgICAgICdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2NvbGxhYicsXG4gICAgICAnQGNvZGVtaXJyb3IvY29tbWFuZHMnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2xhbmd1YWdlJyxcbiAgICAgICdAY29kZW1pcnJvci9saW50JyxcbiAgICAgICdAY29kZW1pcnJvci9zZWFyY2gnLFxuICAgICAgJ0Bjb2RlbWlycm9yL3N0YXRlJyxcbiAgICAgICdAY29kZW1pcnJvci92aWV3JyxcbiAgICAgICdAbGV6ZXIvY29tbW9uJyxcbiAgICAgICdAbGV6ZXIvaGlnaGxpZ2h0JyxcbiAgICAgICdAbGV6ZXIvbHInLFxuICAgICAgJ2VzYnVpbGQnLFxuICAgICAgJ2VzbGludCcsXG4gICAgICAuLi5idWlsdGluTW9kdWxlc1xuICAgIF0sXG4gICAgZm9ybWF0OiAnY2pzJyxcbiAgICBrZWVwTmFtZXM6IHRydWUsXG4gICAgbG9nTGV2ZWw6ICdpbmZvJyxcbiAgICBtaW5pZnk6IGlzUHJvZHVjdGlvbkJ1aWxkLFxuICAgIG91dGZpbGU6IGRpc3RQYXRoLFxuICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgcGx1Z2luczogW1xuICAgICAgY3VzdG9tRXNidWlsZE9wdGlvbnNQbHVnaW4ocGFyYW1zLmN1c3RvbWl6ZUVzYnVpbGRPcHRpb25zPy5iaW5kKHBhcmFtcykpLFxuICAgICAgc3ZlbHRlV3JhcHBlclBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZCksXG4gICAgICBzYXNzUGx1Z2luKHtcbiAgICAgICAgc291cmNlTWFwOiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICAgIH0pLFxuICAgICAgcmVuYW1lQ3NzUGx1Z2luKGRpc3RGb2xkZXIpLFxuICAgICAgcHJlcHJvY2Vzc1BsdWdpbigpLFxuICAgICAgZml4RXNtUGx1Z2luKCksXG4gICAgICBmaXhTb3VyY2VNYXBzUGx1Z2luKGlzUHJvZHVjdGlvbkJ1aWxkLCBbZGlzdFBhdGgsIGNzc1BhdGhdLCBwbHVnaW5OYW1lKSxcbiAgICAgIC4uLnBhcmFtcy5jdXN0b21Fc2J1aWxkUGx1Z2lucyA/PyBbXSxcbiAgICAgIGNvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZCwgZGlzdEZvbGRlciwgb2JzaWRpYW5Db25maWdGb2xkZXIsIHBsdWdpbk5hbWUpXG4gICAgXSxcbiAgICBzb3VyY2VtYXA6IGlzUHJvZHVjdGlvbkJ1aWxkID8gZmFsc2UgOiAnaW5saW5lJyxcbiAgICB0YXJnZXQ6ICdlc25leHQnLFxuICAgIHRyZWVTaGFraW5nOiB0cnVlXG4gIH07XG5cbiAgY29uc3QgYnVpbGRDb250ZXh0ID0gYXdhaXQgY29udGV4dChidWlsZE9wdGlvbnMpO1xuICByZXR1cm4gYXdhaXQgaW52b2tlRXNidWlsZChidWlsZENvbnRleHQsIGlzUHJvZHVjdGlvbkJ1aWxkKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIE9ic2lkaWFuIHBsdWdpbiBpbiBkZXZlbG9wbWVudCBtb2RlIHVzaW5nIGVzYnVpbGQgd2l0aCB3YXRjaC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gT3B0aW9uYWwgYnVpbGQgcGFyYW1ldGVycyAobW9kZSBpcyBzZXQgdG8gRGV2ZWxvcG1lbnQgYXV0b21hdGljYWxseSkuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IGluZGljYXRpbmcgdGhlIGJ1aWxkIHJlc3VsdC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIC0tIEludGVudGlvbmFsbHkgc2hhcmVzIEJ1aWxkUGFyYW1zIHdpdGggYnVpbGQoKS5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXYocGFyYW1zPzogQnVpbGRQYXJhbXMpOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgcmV0dXJuIGF3YWl0IGJ1aWxkT2JzaWRpYW5QbHVnaW4oeyAuLi5wYXJhbXMsIG1vZGU6IEJ1aWxkTW9kZS5EZXZlbG9wbWVudCB9KTtcbn1cblxuLyoqXG4gKiBJbnZva2VzIHRoZSBidWlsZCBwcm9jZXNzIHdpdGggdGhlIHByb3ZpZGVkIGJ1aWxkIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIGJ1aWxkQ29udGV4dCAtIFRoZSBidWlsZCBjb250ZXh0IGdlbmVyYXRlZCBieSBlc2J1aWxkLlxuICogQHBhcmFtIGlzUHJvZHVjdGlvbkJ1aWxkIC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgYnVpbGQgaXMgYSBwcm9kdWN0aW9uIGJ1aWxkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBpbmRpY2F0aW5nIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGJ1aWxkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlRXNidWlsZChidWlsZENvbnRleHQ6IEJ1aWxkQ29udGV4dCwgaXNQcm9kdWN0aW9uQnVpbGQ6IGJvb2xlYW4pOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgaWYgKGlzUHJvZHVjdGlvbkJ1aWxkKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYnVpbGRDb250ZXh0LnJlYnVpbGQoKTtcbiAgICBjb25zdCBpc1N1Y2Nlc3MgPSByZXN1bHQuZXJyb3JzLmxlbmd0aCA9PT0gMCAmJiByZXN1bHQud2FybmluZ3MubGVuZ3RoID09PSAwO1xuICAgIHJldHVybiBDbGlUYXNrUmVzdWx0LlN1Y2Nlc3MoaXNTdWNjZXNzKTtcbiAgfVxuICBhd2FpdCBidWlsZENvbnRleHQud2F0Y2goKTtcbiAgcmV0dXJuIENsaVRhc2tSZXN1bHQuRG9Ob3RFeGl0KCk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxTQUFTLGVBQWU7QUFFeEIsT0FBTyxpQkFBaUI7QUFDeEIsU0FBUyxrQkFBa0I7QUFDM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsc0JBQXNCO0FBQy9CLE9BQU8sV0FBVyxtQkFBbUI7QUFFckMsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUywrQkFBK0I7QUFDeEMsU0FBUyxZQUFZO0FBQ3JCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsY0FBYztBQUN2QixTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLHlDQUF5QztBQUNsRCxTQUFTLGtDQUFrQztBQUMzQyxTQUFTLG9CQUFvQjtBQUM3QixTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLHdCQUF3QjtBQUNqQyxTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLDJCQUEyQjtBQUVwQyxNQUFNLGFBQWEsNEJBQTRCLFdBQVc7QUFLbkQsSUFBSyxZQUFMLGtCQUFLQSxlQUFMO0FBRUwsRUFBQUEsc0JBQUE7QUFFQSxFQUFBQSxzQkFBQTtBQUpVLFNBQUFBO0FBQUEsR0FBQTtBQVVMLE1BQU0sU0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkR0QixlQUFzQixN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
|
|
@@ -21,7 +21,7 @@ export interface ExecArg {
|
|
|
21
21
|
/**
|
|
22
22
|
* Options for {@link exec} that return detailed results.
|
|
23
23
|
*/
|
|
24
|
-
export interface ExecDetailedOptions extends
|
|
24
|
+
export interface ExecDetailedOptions extends ExecOptions {
|
|
25
25
|
/**
|
|
26
26
|
* Must be `true` to receive detailed results.
|
|
27
27
|
*/
|
|
@@ -30,7 +30,7 @@ export interface ExecDetailedOptions extends ExecOption {
|
|
|
30
30
|
/**
|
|
31
31
|
* Options for executing a command.
|
|
32
32
|
*/
|
|
33
|
-
export interface
|
|
33
|
+
export interface ExecOptions {
|
|
34
34
|
/**
|
|
35
35
|
* A current working folder for the command execution.
|
|
36
36
|
*/
|
|
@@ -80,7 +80,7 @@ export interface ExecResult {
|
|
|
80
80
|
/**
|
|
81
81
|
* Options for {@link exec} that return only stdout.
|
|
82
82
|
*/
|
|
83
|
-
export interface ExecSimpleOptions extends
|
|
83
|
+
export interface ExecSimpleOptions extends ExecOptions {
|
|
84
84
|
/**
|
|
85
85
|
* Must be `false` or omitted to receive only stdout.
|
|
86
86
|
*/
|
|
@@ -216,4 +216,4 @@ function spawnViaShell(command, cwd, rawArgs) {
|
|
|
216
216
|
export {
|
|
217
217
|
exec
|
|
218
218
|
};
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9leGVjLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7XG4gIGNtZEVzY2FwZUNvbW1hbmRMaW5lLFxuICB0b0NvbW1hbmRMaW5lXG59IGZyb20gJy4vY2xpLXV0aWxzLnRzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcGFydDogZWl0aGVyIGEgcGxhaW4gc3RyaW5nIG9yIGFuIHtAbGluayBFeGVjQXJnfSB3aXRoIGJhdGNoZWQgYXJndW1lbnRzLlxuICovXG5leHBvcnQgdHlwZSBDb21tYW5kUGFydCA9IEV4ZWNBcmcgfCBzdHJpbmc7XG5cbi8qKlxuICogQSBjb21tYW5kIGFyZ3VtZW50IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIGFyZ3MgdG8gYmUgYmF0Y2hlZC5cbiAqIElmIHRoZSBleHBhbmRlZCBjb21tYW5kIGV4Y2VlZHMgdGhlIHBsYXRmb3JtJ3MgbWF4IGNvbW1hbmQgbGVuZ3RoLFxuICogdGhlIGJhdGNoZWQgYXJncyBhcmUgc3BsaXQgaW50byBzZXF1ZW50aWFsIGV4ZWN1dGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0FyZyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIGJhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hlZEFyZ3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBkZXRhaWxlZCByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgYHRydWVgIHRvIHJlY2VpdmUgZGV0YWlsZWQgcmVzdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzOiB0cnVlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGV4ZWN1dGluZyBhIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY09wdGlvbiB7XG4gIC8qKlxuICAgKiBBIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgZm9yIHRoZSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBzdXBwcmVzc2VzIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBpc1F1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNvbW1hbmQgZmFpbHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGYWlsSWZDYWxsZWRGcm9tT3V0c2lkZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGlnbm9yZXMgdGhlIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZElnbm9yZUV4aXRDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYGZhbHNlYCwgb25seSByZXR1cm5zIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGlucHV0IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZGluPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmVzdWx0IG9mIHtAbGluayBleGVjfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjUmVzdWx0IHtcbiAgLyoqXG4gICAqIEFuIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MgZGlkIG5vdCBleGl0IG5vcm1hbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdENvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc2lnbmFsIHRoYXQgY2F1c2VkIHRoZSBwcm9jZXNzIHRvIGJlIHRlcm1pbmF0ZWQuIEEgdmFsdWUgb2YgYG51bGxgIGluZGljYXRlcyB0aGF0IG5vIHNpZ25hbCB3YXMgcmVjZWl2ZWQuXG4gICAqL1xuICByZWFkb25seSBleGl0U2lnbmFsOiBOb2RlSlMuU2lnbmFscyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzdGRlcnI6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdGFuZGFyZCBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZG91dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBvbmx5IHN0ZG91dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjU2ltcGxlT3B0aW9ucyBleHRlbmRzIEV4ZWNPcHRpb24ge1xuICAvKipcbiAgICogTXVzdCBiZSBgZmFsc2VgIG9yIG9taXR0ZWQgdG8gcmVjZWl2ZSBvbmx5IHN0ZG91dC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzPzogZmFsc2U7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9ucz86IEV4ZWNTaW1wbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjRGV0YWlsZWRPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0Pjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9uID0ge30pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29tbWFuZCkpIHtcbiAgICBjb25zdCBiYXRjaFJlc3VsdCA9IGhhbmRsZUJhdGNoZWRDb21tYW5kKGNvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmIChiYXRjaFJlc3VsdCkge1xuICAgICAgcmV0dXJuIGJhdGNoUmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCBhcmdzID0gY29tbWFuZC5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gdG9Db21tYW5kTGluZShhcmdzKTtcblxuICAgIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG4gICAgaWYgKGNvbW1hbmRMaW5lLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgIGBDb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgKCR7U3RyaW5nKGNvbW1hbmRMaW5lLmxlbmd0aCl9IGNoYXJzLCBtYXggJHtcbiAgICAgICAgICAgIFN0cmluZyhtYXhDb21tYW5kTGVuZ3RoKVxuICAgICAgICAgIH0gb24gJHtwcm9jZXNzLnBsYXRmb3JtfSkuIENvbnNpZGVyIHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgYmF0Y2hlcyBvciB1c2UgRXhlY0FyZy5gXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4ZWNTdHJpbmcoY29tbWFuZExpbmUsIG9wdGlvbnMsIGFyZ3MpO1xuICB9XG5cbiAgY29uc3QgbWF4Q29tbWFuZExlbmd0aCA9IGdldE1heENvbW1hbmRMZW5ndGgoKTtcbiAgaWYgKGNvbW1hbmQubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgYENvbW1hbmQgbGluZSBpcyB0b28gbG9uZyAoJHtTdHJpbmcoY29tbWFuZC5sZW5ndGgpfSBjaGFycywgbWF4ICR7XG4gICAgICAgICAgU3RyaW5nKG1heENvbW1hbmRMZW5ndGgpXG4gICAgICAgIH0gb24gJHtwcm9jZXNzLnBsYXRmb3JtfSkuIENvbnNpZGVyIHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgYmF0Y2hlcyBvciB1c2UgRXhlY0FyZy5gXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBleGVjU3RyaW5nKGNvbW1hbmQsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgc2luZ2xlIHN0cmluZyBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgc3RyaW5nLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHBhcmFtIHJhd0FyZ3MgLSBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSksIHVzZWQgYnkgdGhlIFBvd2VyU2hlbGxcbiAqICAgZmFsbGJhY2sgcGF0aCB0byBxdW90ZSBhcmd1bWVudHMgd2l0aCBQb3dlclNoZWxsLW5hdGl2ZSBzaW5nbGUgcXVvdGVzLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBleGVjU3RyaW5nKGNvbW1hbmQ6IHN0cmluZywgb3B0aW9uczogRXhlY09wdGlvbiA9IHt9LCByYXdBcmdzPzogc3RyaW5nW10pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGN3ZCA9IHByb2Nlc3MuY3dkKCksXG4gICAgaXNRdWlldDogcXVpZXQgPSBmYWxzZSxcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogaWdub3JlRXhpdENvZGUgPSBmYWxzZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlscyA9IGZhbHNlLFxuICAgIHN0ZGluID0gJydcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBnZXRMaWJEZWJ1Z2dlcignRXhlYycpKGBFeGVjdXRpbmcgY29tbWFuZDogJHtjb21tYW5kfWApO1xuXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3blZpYVNoZWxsKGNvbW1hbmQsIGN3ZCwgcmF3QXJncyk7XG5cbiAgICBsZXQgc3Rkb3V0ID0gJyc7XG4gICAgbGV0IHN0ZGVyciA9ICcnO1xuXG4gICAgY2hpbGQuc3RkaW4ud3JpdGUoc3RkaW4pO1xuICAgIGNoaWxkLnN0ZGluLmVuZCgpO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZG91dCArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRvdXQgPSB0cmltRW5kKHN0ZG91dCwgJ1xcbicpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZGVyciArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRlcnIgPSB0cmltRW5kKHN0ZGVyciwgJ1xcbicpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Nsb3NlJywgKGV4aXRDb2RlLCBleGl0U2lnbmFsKSA9PiB7XG4gICAgICBpZiAoZXhpdENvZGUgIT09IDAgJiYgIWlnbm9yZUV4aXRDb2RlKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7ZXhpdENvZGUgPyBTdHJpbmcoZXhpdENvZGUpIDogJyhudWxsKSd9XFxuJHtzdGRlcnJ9YCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICAgICAgcmVzb2x2ZShzdGRvdXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGUsXG4gICAgICAgIGV4aXRTaWduYWwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNoaWxkLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGlmICghaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgICAgICByZXNvbHZlKHN0ZG91dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlOiBudWxsLFxuICAgICAgICBleGl0U2lnbmFsOiBudWxsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIERlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHBhc3NlZCB0byBjaGlsZCBwcm9jZXNzZXMuXG4gKi9cbmNvbnN0IENISUxEX0VOViA9IHtcbiAgREVCVUdfQ09MT1JTOiAnMScsXG4gIC4uLnByb2Nlc3MuZW52XG59O1xuXG4vKipcbiAqIEV4ZWN1dGVzIGJhdGNoZWQgY29tbWFuZHMgc2VxdWVudGlhbGx5IGFuZCBjb25jYXRlbmF0ZXMgc3Rkb3V0LlxuICpcbiAqIEBwYXJhbSBiYXNlQ29tbWFuZCAtIFRoZSBiYXNlIGNvbW1hbmQgd2l0aG91dCBiYXRjaGVkIGFyZ3MuXG4gKiBAcGFyYW0gYmF0Y2hlcyAtIFRoZSBiYXRjaGVzIG9mIGFyZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBleGVjIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjb25jYXRlbmF0ZWQgcmVzdWx0LlxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQmF0Y2hlcyhiYXNlQ29tbWFuZDogc3RyaW5nLCBiYXRjaGVzOiBzdHJpbmdbXVtdLCBvcHRpb25zOiBFeGVjT3B0aW9uKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGNvbnN0IHJlc3VsdHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBiYXRjaCBvZiBiYXRjaGVzKSB7XG4gICAgY29uc3QgYmF0Y2hDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7YmF0Y2guam9pbignICcpfWA7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY1N0cmluZyhiYXRjaENvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICByZXR1cm4geyBleGl0Q29kZTogMCwgZXhpdFNpZ25hbDogbnVsbCwgc3RkZXJyOiAnJywgc3Rkb3V0OiByZXN1bHRzLmpvaW4oJ1xcbicpIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBtYXggY29tbWFuZCBsaW5lIGxlbmd0aC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbWF4IGNvbW1hbmQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuXG4gKi9cbmZ1bmN0aW9uIGdldE1heENvbW1hbmRMZW5ndGgoKTogbnVtYmVyIHtcbiAgY29uc3QgV0lORE9XU19NQVhfQ09NTUFORF9MRU5HVEggPSA4MTkxO1xuICBjb25zdCBVTklYX01BWF9DT01NQU5EX0xFTkdUSCA9IDEzMTA3MjtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA6IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBjb21tYW5kIGFycmF5IHRoYXQgbWF5IGNvbnRhaW4gYW4ge0BsaW5rIEV4ZWNBcmd9LlxuICogUmV0dXJucyBhIFByb21pc2UgaWYgYmF0Y2hpbmcgaXMgbmVlZGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgY29tbWFuZFxuICogaGFzIG5vIEV4ZWNBcmcgYW5kIHNob3VsZCBiZSBwcm9jZXNzZWQgbm9ybWFsbHkuXG4gKlxuICogQHBhcmFtIHBhcnRzIC0gVGhlIGNvbW1hbmQgcGFydHMuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBleGVjIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgaWYgYmF0Y2hpbmcgaXMgaGFuZGxlZCwgb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUJhdGNoZWRDb21tYW5kKHBhcnRzOiBDb21tYW5kUGFydFtdLCBvcHRpb25zOiBFeGVjT3B0aW9uKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGV4ZWNBcmdzID0gcGFydHMuZmlsdGVyKGlzRXhlY0FyZyk7XG4gIGlmIChleGVjQXJncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChleGVjQXJncy5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignT25seSBvbmUgRXhlY0FyZyB3aXRoIGJhdGNoZWRBcmdzIGlzIGFsbG93ZWQgcGVyIGNvbW1hbmQnKSk7XG4gIH1cblxuICBjb25zdCBleGVjQXJnID0gZXhlY0FyZ3NbMF07XG4gIGFzc2VydE5vbk51bGxhYmxlKGV4ZWNBcmcpO1xuICBjb25zdCBzdGF0aWNQYXJ0cyA9IHBhcnRzLmZpbHRlcigocGFydCk6IHBhcnQgaXMgc3RyaW5nID0+IHR5cGVvZiBwYXJ0ID09PSAnc3RyaW5nJyk7XG4gIGNvbnN0IGJhc2VDb21tYW5kID0gdG9Db21tYW5kTGluZShzdGF0aWNQYXJ0cyk7XG4gIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG5cbiAgLy8gVHJ5IGV4cGFuZGluZyBhbGwgYXJncyBpbmxpbmVcbiAgY29uc3QgZnVsbENvbW1hbmQgPSBgJHtiYXNlQ29tbWFuZH0gJHtleGVjQXJnLmJhdGNoZWRBcmdzLmpvaW4oJyAnKX1gO1xuICBpZiAoZnVsbENvbW1hbmQubGVuZ3RoIDw9IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICByZXR1cm4gZXhlY1N0cmluZyhmdWxsQ29tbWFuZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyBTcGxpdCBpbnRvIGJhdGNoZXNcbiAgY29uc3QgYmF0Y2hlczogc3RyaW5nW11bXSA9IFtdO1xuICBsZXQgY3VycmVudEJhdGNoOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYXJnIG9mIGV4ZWNBcmcuYmF0Y2hlZEFyZ3MpIHtcbiAgICBjb25zdCB0ZW50YXRpdmUgPSBgJHtiYXNlQ29tbWFuZH0gJHtbLi4uY3VycmVudEJhdGNoLCBhcmddLmpvaW4oJyAnKX1gO1xuICAgIGlmICh0ZW50YXRpdmUubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgICAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3Qgc3BsaXQgY29tbWFuZCBpbnRvIGJhdGNoZXM6IGEgc2luZ2xlIGFyZ3VtZW50ICgke1N0cmluZyhhcmcubGVuZ3RoKX0gY2hhcnMpIHBsdXMgdGhlIGJhc2UgY29tbWFuZCAoJHtcbiAgICAgICAgICAgICAgU3RyaW5nKGJhc2VDb21tYW5kLmxlbmd0aClcbiAgICAgICAgICAgIH0gY2hhcnMpIGV4Y2VlZHMgdGhlIG1heCBjb21tYW5kIGxlbmd0aCAoJHtTdHJpbmcobWF4Q29tbWFuZExlbmd0aCl9KS5gXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYmF0Y2hlcy5wdXNoKGN1cnJlbnRCYXRjaCk7XG4gICAgICBjdXJyZW50QmF0Y2ggPSBbYXJnXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEJhdGNoLnB1c2goYXJnKTtcbiAgICB9XG4gIH1cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnVlIGFmdGVyIHRoZSBsb29wOyBiYXRjaGVkQXJncyBpcyBub24tZW1wdHkgYXQgdGhpcyBwb2ludC4gKi9cbiAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPiAwKSB7XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBiYXRjaGVzLnB1c2goY3VycmVudEJhdGNoKTtcbiAgfVxuXG4gIHJldHVybiBleGVjdXRlQmF0Y2hlcyhiYXNlQ29tbWFuZCwgYmF0Y2hlcywgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgY29tbWFuZCBwYXJ0IGlzIGFuIHtAbGluayBFeGVjQXJnfS5cbiAqXG4gKiBAcGFyYW0gcGFydCAtIFRoZSBjb21tYW5kIHBhcnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwYXJ0IGlzIGFuIEV4ZWNBcmcuXG4gKi9cbmZ1bmN0aW9uIGlzRXhlY0FyZyhwYXJ0OiBDb21tYW5kUGFydCk6IHBhcnQgaXMgRXhlY0FyZyB7XG4gIHJldHVybiB0eXBlb2YgcGFydCA9PT0gJ29iamVjdCcgJiYgJ2JhdGNoZWRBcmdzJyBpbiBwYXJ0O1xufVxuXG4vKipcbiAqIFNwYXducyBhIGNoaWxkIHByb2Nlc3MgdmlhIHRoZSBhcHByb3ByaWF0ZSBzaGVsbC5cbiAqXG4gKiBPbiBXaW5kb3dzLCBpZiB0aGUgY29tbWFuZCBjb250YWlucyBuZXdsaW5lcyAod2hpY2ggYGNtZC5leGVgIGNhbm5vdCBoYW5kbGUpXG4gKiBhbmQgdGhlIHJhdyBhcmdzIGFycmF5IGlzIGF2YWlsYWJsZSwgc3Bhd25zIHRoZSBwcm9jZXNzIGRpcmVjdGx5IHdpdGhvdXRcbiAqIGFueSBzaGVsbCBcdTIwMTQgcGFzc2luZyBhcmdzIHZpYSBgQ3JlYXRlUHJvY2Vzc2AsIHdoaWNoIGF2b2lkcyBhbGwgcXVvdGluZyBpc3N1ZXMuXG4gKlxuICogT24gV2luZG93cyAoY21kLmV4ZSBwYXRoKSwgYXBwbGllcyBgXmAtZXNjYXBpbmcgZm9yIGNtZCBtZXRhY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZyB0byBleGVjdXRlLlxuICogQHBhcmFtIGN3ZCAtIFRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSByYXdBcmdzIC0gVGhlIG9yaWdpbmFsIGFyZ3VtZW50IGFycmF5IChpZiBhdmFpbGFibGUpLlxuICogQHJldHVybnMgVGhlIHNwYXduZWQgY2hpbGQgcHJvY2Vzcy5cbiAqL1xuZnVuY3Rpb24gc3Bhd25WaWFTaGVsbChjb21tYW5kOiBzdHJpbmcsIGN3ZDogc3RyaW5nLCByYXdBcmdzPzogc3RyaW5nW10pOiBDaGlsZFByb2Nlc3NXaXRob3V0TnVsbFN0cmVhbXMge1xuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiBjb21tYW5kLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgIGlmICghcmF3QXJncykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kcyBjb250YWluaW5nIG5ld2xpbmVzIGNhbm5vdCBiZSBleGVjdXRlZCB0aHJvdWdoIGNtZC5leGUgb24gV2luZG93cy4gUGFzcyBhbiBhcmd1bWVudCBhcnJheSBpbnN0ZWFkIG9mIGEgc3RyaW5nLicpO1xuICAgIH1cbiAgICBjb25zdCBbcHJvZ3JhbSwgLi4uYXJnc10gPSByYXdBcmdzO1xuICAgIGFzc2VydE5vbk51bGxhYmxlKHByb2dyYW0sICdDb21tYW5kIGFycmF5IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gICAgcmV0dXJuIHNwYXduKHByb2dyYW0sIGFyZ3MsIHtcbiAgICAgIGN3ZCxcbiAgICAgIGVudjogQ0hJTERfRU5WLFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgc2hlbGxDb21tYW5kID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IGNtZEVzY2FwZUNvbW1hbmRMaW5lKGNvbW1hbmQpIDogY29tbWFuZDtcbiAgcmV0dXJuIHNwYXduKHNoZWxsQ29tbWFuZCwgW10sIHtcbiAgICBjd2QsXG4gICAgZW52OiBDSElMRF9FTlYsXG4gICAgc2hlbGw6IHRydWUsXG4gICAgc3RkaW86ICdwaXBlJ1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEsU0FBUyxhQUFhO0FBQ3RCLE9BQU8sYUFBYTtBQUVwQixTQUFTLHNCQUFzQjtBQUMvQixTQUFTLGVBQWU7QUFDeEIsU0FBUyx5QkFBeUI7QUFDbEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUF3SUEsU0FBUyxLQUFLLFNBQWlDLFVBQXNCLENBQUMsR0FBaUM7QUFDNUcsTUFBSSxNQUFNLFFBQVEsT0FBTyxHQUFHO0FBQzFCLFVBQU0sY0FBYyxxQkFBcUIsU0FBUyxPQUFPO0FBQ3pELFFBQUksYUFBYTtBQUNmLGFBQU87QUFBQSxJQUNUO0FBQ0EsVUFBTSxPQUFPLFFBQVEsT0FBTyxDQUFDLFNBQXlCLE9BQU8sU0FBUyxRQUFRO0FBQzlFLFVBQU0sY0FBYyxjQUFjLElBQUk7QUFFdEMsVUFBTUEsb0JBQW1CLG9CQUFvQjtBQUM3QyxRQUFJLFlBQVksU0FBU0EsbUJBQWtCO0FBQ3pDLGFBQU8sUUFBUTtBQUFBLFFBQ2IsSUFBSTtBQUFBLFVBQ0YsNkJBQTZCLE9BQU8sWUFBWSxNQUFNLENBQUMsZUFDckQsT0FBT0EsaUJBQWdCLENBQ3pCLE9BQU8sUUFBUSxRQUFRO0FBQUEsUUFDekI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLFdBQU8sV0FBVyxhQUFhLFNBQVMsSUFBSTtBQUFBLEVBQzlDO0FBRUEsUUFBTSxtQkFBbUIsb0JBQW9CO0FBQzdDLE1BQUksUUFBUSxTQUFTLGtCQUFrQjtBQUNyQyxXQUFPLFFBQVE7QUFBQSxNQUNiLElBQUk7QUFBQSxRQUNGLDZCQUE2QixPQUFPLFFBQVEsTUFBTSxDQUFDLGVBQ2pELE9BQU8sZ0JBQWdCLENBQ3pCLE9BQU8sUUFBUSxRQUFRO0FBQUEsTUFDekI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sV0FB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
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9leGVjLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7XG4gIGNtZEVzY2FwZUNvbW1hbmRMaW5lLFxuICB0b0NvbW1hbmRMaW5lXG59IGZyb20gJy4vY2xpLXV0aWxzLnRzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcGFydDogZWl0aGVyIGEgcGxhaW4gc3RyaW5nIG9yIGFuIHtAbGluayBFeGVjQXJnfSB3aXRoIGJhdGNoZWQgYXJndW1lbnRzLlxuICovXG5leHBvcnQgdHlwZSBDb21tYW5kUGFydCA9IEV4ZWNBcmcgfCBzdHJpbmc7XG5cbi8qKlxuICogQSBjb21tYW5kIGFyZ3VtZW50IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIGFyZ3MgdG8gYmUgYmF0Y2hlZC5cbiAqIElmIHRoZSBleHBhbmRlZCBjb21tYW5kIGV4Y2VlZHMgdGhlIHBsYXRmb3JtJ3MgbWF4IGNvbW1hbmQgbGVuZ3RoLFxuICogdGhlIGJhdGNoZWQgYXJncyBhcmUgc3BsaXQgaW50byBzZXF1ZW50aWFsIGV4ZWN1dGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0FyZyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIGJhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hlZEFyZ3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBkZXRhaWxlZCByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNdXN0IGJlIGB0cnVlYCB0byByZWNlaXZlIGRldGFpbGVkIHJlc3VsdHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlsczogdHJ1ZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBleGVjdXRpbmcgYSBjb21tYW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgY3VycmVudCB3b3JraW5nIGZvbGRlciBmb3IgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHN1cHByZXNzZXMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzUXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgY29tbWFuZCBmYWlscy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZhaWxJZkNhbGxlZEZyb21PdXRzaWRlUm9vdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgaWdub3JlcyB0aGUgZXhpdCBjb2RlIG9mIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSWdub3JlRXhpdENvZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgZmFsc2VgLCBvbmx5IHJldHVybnMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW4gaW5wdXQgdG8gYmUgcGFzc2VkIHRvIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RkaW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSByZXN1bHQgb2Yge0BsaW5rIGV4ZWN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNSZXN1bHQge1xuICAvKipcbiAgICogQW4gZXhpdCBjb2RlIG9mIHRoZSBjb21tYW5kLiBBIHZhbHVlIG9mIGBudWxsYCBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJvY2VzcyBkaWQgbm90IGV4aXQgbm9ybWFsbHkuXG4gICAqL1xuICByZWFkb25seSBleGl0Q29kZTogbnVsbCB8IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzaWduYWwgdGhhdCBjYXVzZWQgdGhlIHByb2Nlc3MgdG8gYmUgdGVybWluYXRlZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgbm8gc2lnbmFsIHdhcyByZWNlaXZlZC5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRTaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbDtcblxuICAvKipcbiAgICogQSBzdGFuZGFyZCBlcnJvciBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZGVycjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3Rkb3V0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGV4ZWN9IHRoYXQgcmV0dXJuIG9ubHkgc3Rkb3V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNTaW1wbGVPcHRpb25zIGV4dGVuZHMgRXhlY09wdGlvbnMge1xuICAvKipcbiAgICogTXVzdCBiZSBgZmFsc2VgIG9yIG9taXR0ZWQgdG8gcmVjZWl2ZSBvbmx5IHN0ZG91dC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzPzogZmFsc2U7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9ucz86IEV4ZWNTaW1wbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjRGV0YWlsZWRPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0Pjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbW1hbmQpKSB7XG4gICAgY29uc3QgYmF0Y2hSZXN1bHQgPSBoYW5kbGVCYXRjaGVkQ29tbWFuZChjb21tYW5kLCBvcHRpb25zKTtcbiAgICBpZiAoYmF0Y2hSZXN1bHQpIHtcbiAgICAgIHJldHVybiBiYXRjaFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgYXJncyA9IGNvbW1hbmQuZmlsdGVyKChwYXJ0KTogcGFydCBpcyBzdHJpbmcgPT4gdHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKTtcbiAgICBjb25zdCBjb21tYW5kTGluZSA9IHRvQ29tbWFuZExpbmUoYXJncyk7XG5cbiAgICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICAgIGlmIChjb21tYW5kTGluZS5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kTGluZS5sZW5ndGgpfSBjaGFycywgbWF4ICR7XG4gICAgICAgICAgICBTdHJpbmcobWF4Q29tbWFuZExlbmd0aClcbiAgICAgICAgICB9IG9uICR7cHJvY2Vzcy5wbGF0Zm9ybX0pLiBDb25zaWRlciBzcGxpdHRpbmcgaW50byBzbWFsbGVyIGJhdGNoZXMgb3IgdXNlIEV4ZWNBcmcuYFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBleGVjU3RyaW5nKGNvbW1hbmRMaW5lLCBvcHRpb25zLCBhcmdzKTtcbiAgfVxuXG4gIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG4gIGlmIChjb21tYW5kLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICBuZXcgRXJyb3IoXG4gICAgICAgIGBDb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgKCR7U3RyaW5nKGNvbW1hbmQubGVuZ3RoKX0gY2hhcnMsIG1heCAke1xuICAgICAgICAgIFN0cmluZyhtYXhDb21tYW5kTGVuZ3RoKVxuICAgICAgICB9IG9uICR7cHJvY2Vzcy5wbGF0Zm9ybX0pLiBDb25zaWRlciBzcGxpdHRpbmcgaW50byBzbWFsbGVyIGJhdGNoZXMgb3IgdXNlIEV4ZWNBcmcuYFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZXhlY1N0cmluZyhjb21tYW5kLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIHNpbmdsZSBzdHJpbmcgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEBwYXJhbSByYXdBcmdzIC0gVGhlIG9yaWdpbmFsIGFyZ3VtZW50IGFycmF5IChpZiBhdmFpbGFibGUpLCB1c2VkIGJ5IHRoZSBQb3dlclNoZWxsXG4gKiAgIGZhbGxiYWNrIHBhdGggdG8gcXVvdGUgYXJndW1lbnRzIHdpdGggUG93ZXJTaGVsbC1uYXRpdmUgc2luZ2xlIHF1b3Rlcy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHJlc3VsdC5cbiAqL1xuZnVuY3Rpb24gZXhlY1N0cmluZyhjb21tYW5kOiBzdHJpbmcsIG9wdGlvbnM6IEV4ZWNPcHRpb25zID0ge30sIHJhd0FyZ3M/OiBzdHJpbmdbXSk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgY3dkID0gcHJvY2Vzcy5jd2QoKSxcbiAgICBpc1F1aWV0OiBxdWlldCA9IGZhbHNlLFxuICAgIHNob3VsZElnbm9yZUV4aXRDb2RlOiBpZ25vcmVFeGl0Q29kZSA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVEZXRhaWxzID0gZmFsc2UsXG4gICAgc3RkaW4gPSAnJ1xuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGdldExpYkRlYnVnZ2VyKCdFeGVjJykoYEV4ZWN1dGluZyBjb21tYW5kOiAke2NvbW1hbmR9YCk7XG5cbiAgICBjb25zdCBjaGlsZCA9IHNwYXduVmlhU2hlbGwoY29tbWFuZCwgY3dkLCByYXdBcmdzKTtcblxuICAgIGxldCBzdGRvdXQgPSAnJztcbiAgICBsZXQgc3RkZXJyID0gJyc7XG5cbiAgICBjaGlsZC5zdGRpbi53cml0ZShzdGRpbik7XG4gICAgY2hpbGQuc3RkaW4uZW5kKCk7XG5cbiAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGRhdGEpO1xuICAgICAgfVxuICAgICAgc3Rkb3V0ICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRvdXQub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHN0ZG91dCA9IHRyaW1FbmQoc3Rkb3V0LCAnXFxuJyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGRhdGEpO1xuICAgICAgfVxuICAgICAgc3RkZXJyICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHN0ZGVyciA9IHRyaW1FbmQoc3RkZXJyLCAnXFxuJyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignY2xvc2UnLCAoZXhpdENvZGUsIGV4aXRTaWduYWwpID0+IHtcbiAgICAgIGlmIChleGl0Q29kZSAhPT0gMCAmJiAhaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJHtleGl0Q29kZSA/IFN0cmluZyhleGl0Q29kZSkgOiAnKG51bGwpJ31cXG4ke3N0ZGVycn1gKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgICAgICByZXNvbHZlKHN0ZG91dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoe1xuICAgICAgICBleGl0Q29kZSxcbiAgICAgICAgZXhpdFNpZ25hbCxcbiAgICAgICAgc3RkZXJyLFxuICAgICAgICBzdGRvdXRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgaWYgKCFpZ25vcmVFeGl0Q29kZSkge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICAgIGV4aXRTaWduYWw6IG51bGwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogRGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcGFzc2VkIHRvIGNoaWxkIHByb2Nlc3Nlcy5cbiAqL1xuY29uc3QgQ0hJTERfRU5WID0ge1xuICBERUJVR19DT0xPUlM6ICcxJyxcbiAgLi4ucHJvY2Vzcy5lbnZcbn07XG5cbi8qKlxuICogRXhlY3V0ZXMgYmF0Y2hlZCBjb21tYW5kcyBzZXF1ZW50aWFsbHkgYW5kIGNvbmNhdGVuYXRlcyBzdGRvdXQuXG4gKlxuICogQHBhcmFtIGJhc2VDb21tYW5kIC0gVGhlIGJhc2UgY29tbWFuZCB3aXRob3V0IGJhdGNoZWQgYXJncy5cbiAqIEBwYXJhbSBiYXRjaGVzIC0gVGhlIGJhdGNoZXMgb2YgYXJncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVCYXRjaGVzKGJhc2VDb21tYW5kOiBzdHJpbmcsIGJhdGNoZXM6IHN0cmluZ1tdW10sIG9wdGlvbnM6IEV4ZWNPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGNvbnN0IHJlc3VsdHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBiYXRjaCBvZiBiYXRjaGVzKSB7XG4gICAgY29uc3QgYmF0Y2hDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7YmF0Y2guam9pbignICcpfWA7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY1N0cmluZyhiYXRjaENvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICByZXR1cm4geyBleGl0Q29kZTogMCwgZXhpdFNpZ25hbDogbnVsbCwgc3RkZXJyOiAnJywgc3Rkb3V0OiByZXN1bHRzLmpvaW4oJ1xcbicpIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBtYXggY29tbWFuZCBsaW5lIGxlbmd0aC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbWF4IGNvbW1hbmQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuXG4gKi9cbmZ1bmN0aW9uIGdldE1heENvbW1hbmRMZW5ndGgoKTogbnVtYmVyIHtcbiAgY29uc3QgV0lORE9XU19NQVhfQ09NTUFORF9MRU5HVEggPSA4MTkxO1xuICBjb25zdCBVTklYX01BWF9DT01NQU5EX0xFTkdUSCA9IDEzMTA3MjtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA6IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBjb21tYW5kIGFycmF5IHRoYXQgbWF5IGNvbnRhaW4gYW4ge0BsaW5rIEV4ZWNBcmd9LlxuICogUmV0dXJucyBhIFByb21pc2UgaWYgYmF0Y2hpbmcgaXMgbmVlZGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgY29tbWFuZFxuICogaGFzIG5vIEV4ZWNBcmcgYW5kIHNob3VsZCBiZSBwcm9jZXNzZWQgbm9ybWFsbHkuXG4gKlxuICogQHBhcmFtIHBhcnRzIC0gVGhlIGNvbW1hbmQgcGFydHMuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBleGVjIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgaWYgYmF0Y2hpbmcgaXMgaGFuZGxlZCwgb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUJhdGNoZWRDb21tYW5kKHBhcnRzOiBDb21tYW5kUGFydFtdLCBvcHRpb25zOiBFeGVjT3B0aW9ucyk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4gfCB1bmRlZmluZWQge1xuICBjb25zdCBleGVjQXJncyA9IHBhcnRzLmZpbHRlcihpc0V4ZWNBcmcpO1xuICBpZiAoZXhlY0FyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZXhlY0FyZ3MubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ09ubHkgb25lIEV4ZWNBcmcgd2l0aCBiYXRjaGVkQXJncyBpcyBhbGxvd2VkIHBlciBjb21tYW5kJykpO1xuICB9XG5cbiAgY29uc3QgZXhlY0FyZyA9IGV4ZWNBcmdzWzBdO1xuICBhc3NlcnROb25OdWxsYWJsZShleGVjQXJnKTtcbiAgY29uc3Qgc3RhdGljUGFydHMgPSBwYXJ0cy5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICBjb25zdCBiYXNlQ29tbWFuZCA9IHRvQ29tbWFuZExpbmUoc3RhdGljUGFydHMpO1xuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuXG4gIC8vIFRyeSBleHBhbmRpbmcgYWxsIGFyZ3MgaW5saW5lXG4gIGNvbnN0IGZ1bGxDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7ZXhlY0FyZy5iYXRjaGVkQXJncy5qb2luKCcgJyl9YDtcbiAgaWYgKGZ1bGxDb21tYW5kLmxlbmd0aCA8PSBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGV4ZWNTdHJpbmcoZnVsbENvbW1hbmQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gU3BsaXQgaW50byBiYXRjaGVzXG4gIGNvbnN0IGJhdGNoZXM6IHN0cmluZ1tdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRCYXRjaDogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFyZyBvZiBleGVjQXJnLmJhdGNoZWRBcmdzKSB7XG4gICAgY29uc3QgdGVudGF0aXZlID0gYCR7YmFzZUNvbW1hbmR9ICR7Wy4uLmN1cnJlbnRCYXRjaCwgYXJnXS5qb2luKCcgJyl9YDtcbiAgICBpZiAodGVudGF0aXZlLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICAgIGlmIChjdXJyZW50QmF0Y2gubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ2Fubm90IHNwbGl0IGNvbW1hbmQgaW50byBiYXRjaGVzOiBhIHNpbmdsZSBhcmd1bWVudCAoJHtTdHJpbmcoYXJnLmxlbmd0aCl9IGNoYXJzKSBwbHVzIHRoZSBiYXNlIGNvbW1hbmQgKCR7XG4gICAgICAgICAgICAgIFN0cmluZyhiYXNlQ29tbWFuZC5sZW5ndGgpXG4gICAgICAgICAgICB9IGNoYXJzKSBleGNlZWRzIHRoZSBtYXggY29tbWFuZCBsZW5ndGggKCR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSkuYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGJhdGNoZXMucHVzaChjdXJyZW50QmF0Y2gpO1xuICAgICAgY3VycmVudEJhdGNoID0gW2FyZ107XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRCYXRjaC5wdXNoKGFyZyk7XG4gICAgfVxuICB9XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbHdheXMgdHJ1ZSBhZnRlciB0aGUgbG9vcDsgYmF0Y2hlZEFyZ3MgaXMgbm9uLWVtcHR5IGF0IHRoaXMgcG9pbnQuICovXG4gIGlmIChjdXJyZW50QmF0Y2gubGVuZ3RoID4gMCkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgYmF0Y2hlcy5wdXNoKGN1cnJlbnRCYXRjaCk7XG4gIH1cblxuICByZXR1cm4gZXhlY3V0ZUJhdGNoZXMoYmFzZUNvbW1hbmQsIGJhdGNoZXMsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGNvbW1hbmQgcGFydCBpcyBhbiB7QGxpbmsgRXhlY0FyZ30uXG4gKlxuICogQHBhcmFtIHBhcnQgLSBUaGUgY29tbWFuZCBwYXJ0IHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcGFydCBpcyBhbiBFeGVjQXJnLlxuICovXG5mdW5jdGlvbiBpc0V4ZWNBcmcocGFydDogQ29tbWFuZFBhcnQpOiBwYXJ0IGlzIEV4ZWNBcmcge1xuICByZXR1cm4gdHlwZW9mIHBhcnQgPT09ICdvYmplY3QnICYmICdiYXRjaGVkQXJncycgaW4gcGFydDtcbn1cblxuLyoqXG4gKiBTcGF3bnMgYSBjaGlsZCBwcm9jZXNzIHZpYSB0aGUgYXBwcm9wcmlhdGUgc2hlbGwuXG4gKlxuICogT24gV2luZG93cywgaWYgdGhlIGNvbW1hbmQgY29udGFpbnMgbmV3bGluZXMgKHdoaWNoIGBjbWQuZXhlYCBjYW5ub3QgaGFuZGxlKVxuICogYW5kIHRoZSByYXcgYXJncyBhcnJheSBpcyBhdmFpbGFibGUsIHNwYXducyB0aGUgcHJvY2VzcyBkaXJlY3RseSB3aXRob3V0XG4gKiBhbnkgc2hlbGwgXHUyMDE0IHBhc3NpbmcgYXJncyB2aWEgYENyZWF0ZVByb2Nlc3NgLCB3aGljaCBhdm9pZHMgYWxsIHF1b3RpbmcgaXNzdWVzLlxuICpcbiAqIE9uIFdpbmRvd3MgKGNtZC5leGUgcGF0aCksIGFwcGxpZXMgYF5gLWVzY2FwaW5nIGZvciBjbWQgbWV0YWNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCBzdHJpbmcgdG8gZXhlY3V0ZS5cbiAqIEBwYXJhbSBjd2QgLSBUaGUgd29ya2luZyBkaXJlY3RvcnkuXG4gKiBAcGFyYW0gcmF3QXJncyAtIFRoZSBvcmlnaW5hbCBhcmd1bWVudCBhcnJheSAoaWYgYXZhaWxhYmxlKS5cbiAqIEByZXR1cm5zIFRoZSBzcGF3bmVkIGNoaWxkIHByb2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIHNwYXduVmlhU2hlbGwoY29tbWFuZDogc3RyaW5nLCBjd2Q6IHN0cmluZywgcmF3QXJncz86IHN0cmluZ1tdKTogQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIHtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgJiYgY29tbWFuZC5pbmNsdWRlcygnXFxuJykpIHtcbiAgICBpZiAoIXJhd0FyZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29tbWFuZHMgY29udGFpbmluZyBuZXdsaW5lcyBjYW5ub3QgYmUgZXhlY3V0ZWQgdGhyb3VnaCBjbWQuZXhlIG9uIFdpbmRvd3MuIFBhc3MgYW4gYXJndW1lbnQgYXJyYXkgaW5zdGVhZCBvZiBhIHN0cmluZy4nKTtcbiAgICB9XG4gICAgY29uc3QgW3Byb2dyYW0sIC4uLmFyZ3NdID0gcmF3QXJncztcbiAgICBhc3NlcnROb25OdWxsYWJsZShwcm9ncmFtLCAnQ29tbWFuZCBhcnJheSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICAgIHJldHVybiBzcGF3bihwcm9ncmFtLCBhcmdzLCB7XG4gICAgICBjd2QsXG4gICAgICBlbnY6IENISUxEX0VOVixcbiAgICAgIHN0ZGlvOiAncGlwZSdcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHNoZWxsQ29tbWFuZCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBjbWRFc2NhcGVDb21tYW5kTGluZShjb21tYW5kKSA6IGNvbW1hbmQ7XG4gIHJldHVybiBzcGF3bihzaGVsbENvbW1hbmQsIFtdLCB7XG4gICAgY3dkLFxuICAgIGVudjogQ0hJTERfRU5WLFxuICAgIHNoZWxsOiB0cnVlLFxuICAgIHN0ZGlvOiAncGlwZSdcbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsYUFBYTtBQUN0QixPQUFPLGFBQWE7QUFFcEIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxlQUFlO0FBQ3hCLFNBQVMseUJBQXlCO0FBQ2xDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBd0lBLFNBQVMsS0FBSyxTQUFpQyxVQUF1QixDQUFDLEdBQWlDO0FBQzdHLE1BQUksTUFBTSxRQUFRLE9BQU8sR0FBRztBQUMxQixVQUFNLGNBQWMscUJBQXFCLFNBQVMsT0FBTztBQUN6RCxRQUFJLGFBQWE7QUFDZixhQUFPO0FBQUEsSUFDVDtBQUNBLFVBQU0sT0FBTyxRQUFRLE9BQU8sQ0FBQyxTQUF5QixPQUFPLFNBQVMsUUFBUTtBQUM5RSxVQUFNLGNBQWMsY0FBYyxJQUFJO0FBRXRDLFVBQU1BLG9CQUFtQixvQkFBb0I7QUFDN0MsUUFBSSxZQUFZLFNBQVNBLG1CQUFrQjtBQUN6QyxhQUFPLFFBQVE7QUFBQSxRQUNiLElBQUk7QUFBQSxVQUNGLDZCQUE2QixPQUFPLFlBQVksTUFBTSxDQUFDLGVBQ3JELE9BQU9BLGlCQUFnQixDQUN6QixPQUFPLFFBQVEsUUFBUTtBQUFBLFFBQ3pCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxXQUFPLFdBQVcsYUFBYSxTQUFTLElBQUk7QUFBQSxFQUM5QztBQUVBLFFBQU0sbUJBQW1CLG9CQUFvQjtBQUM3QyxNQUFJLFFBQVEsU0FBUyxrQkFBa0I7QUFDckMsV0FBTyxRQUFRO0FBQUEsTUFDYixJQUFJO0FBQUEsUUFDRiw2QkFBNkIsT0FBTyxRQUFRLE1BQU0sQ0FBQyxlQUNqRCxPQUFPLGdCQUFnQixDQUN6QixPQUFPLFFBQVEsUUFBUTtBQUFBLE1BQ3pCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLFdBQVcsU0FBUyxPQUFPO0FBQ3BDO0FBV0EsU0FBUyxXQUFXLFNBQWlCLFVBQXVCLENBQUMsR0FBRyxTQUFrRDtBQUNoSCxRQUFNO0FBQUEsSUFDSixNQUFNLFFBQVEsSUFBSTtBQUFBLElBQ2xCLFNBQVMsUUFBUTtBQUFBLElBQ2pCLHNCQUFzQixpQkFBaUI7QUFBQSxJQUN2Qyx1QkFBdUI7QUFBQSxJQUN2QixRQUFRO0FBQUEsRUFDVixJQUFJO0FBRUosU0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDdEMsbUJBQWUsTUFBTSxFQUFFLHNCQUFzQixPQUFPLEVBQUU7QUFFdEQsVUFBTSxRQUFRLGNBQWMsU0FBUyxLQUFLLE9BQU87QUFFakQsUUFBSSxTQUFTO0FBQ2IsUUFBSSxTQUFTO0FBRWIsVUFBTSxNQUFNLE1BQU0sS0FBSztBQUN2QixVQUFNLE1BQU0sSUFBSTtBQUVoQixVQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBaUI7QUFDeEMsVUFBSSxDQUFDLE9BQU87QUFDVixnQkFBUSxPQUFPLE1BQU0sSUFBSTtBQUFBLE1BQzNCO0FBQ0EsZ0JBQVUsS0FBSyxTQUFTLE9BQU87QUFBQSxJQUNqQyxDQUFDO0FBRUQsVUFBTSxPQUFPLEdBQUcsT0FBTyxNQUFNO0FBQzNCLGVBQVMsUUFBUSxRQUFRLElBQUk7QUFBQSxJQUMvQixDQUFDO0FBRUQsVUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQWlCO0FBQ3hDLFVBQUksQ0FBQyxPQUFPO0FBQ1YsZ0JBQVEsT0FBTyxNQUFNLElBQUk7QUFBQSxNQUMzQjtBQUNBLGdCQUFVLEtBQUssU0FBUyxPQUFPO0FBQUEsSUFDakMsQ0FBQztBQUVELFVBQU0sT0FBTyxHQUFHLE9BQU8sTUFBTTtBQUMzQixlQUFTLFFBQVEsUUFBUSxJQUFJO0FBQUEsSUFDL0IsQ0FBQztBQUVELFVBQU0sR0FBRyxTQUFTLENBQUMsVUFBVSxlQUFlO0FBQzFDLFVBQUksYUFBYSxLQUFLLENBQUMsZ0JBQWdCO0FBQ3JDLGVBQU8sSUFBSSxNQUFNLGlDQUFpQyxXQUFXLE9BQU8sUUFBUSxJQUFJLFFBQVE7QUFBQSxFQUFLLE1BQU0sRUFBRSxDQUFDO0FBQ3RHO0FBQUEsTUFDRjtBQUVBLFVBQUksQ0FBQyxzQkFBc0I7QUFDekIsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFDRjtBQUNBLGNBQVE7QUFBQSxRQUNOO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBRUQsVUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRO0FBQ3pCLFVBQUksQ0FBQyxnQkFBZ0I7QUFDbkIsZUFBTyxHQUFHO0FBQ1Y7QUFBQSxNQUNGO0FBRUEsVUFBSSxDQUFDLHNCQUFzQjtBQUN6QixnQkFBUSxNQUFNO0FBQ2Q7QUFBQSxNQUNGO0FBRUEsY0FBUTtBQUFBLFFBQ04sVUFBVTtBQUFBLFFBQ1YsWUFBWTtBQUFBLFFBQ1o7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFLQSxNQUFNLFlBQVk7QUFBQSxFQUNoQixjQUFjO0FBQUEsRUFDZCxHQUFHLFFBQVE7QUFDYjtBQVVBLGVBQWUsZUFBZSxhQUFxQixTQUFxQixTQUFvRDtBQUMxSCxRQUFNLFVBQW9CLENBQUM7QUFFM0IsYUFBVyxTQUFTLFNBQVM7QUFDM0IsVUFBTSxlQUFlLEdBQUcsV0FBVyxJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUM7QUFDdEQsVUFBTSxTQUFTLE1BQU0sV0FBVyxjQUFjLE9BQU87QUFDckQsUUFBSSxPQUFPLFdBQVcsVUFBVTtBQUM5QixjQUFRLEtBQUssTUFBTTtBQUFBLElBQ3JCO0FBQUEsRUFDRjtBQUVBLE1BQUksUUFBUSxzQkFBc0I7QUFDaEMsV0FBTyxFQUFFLFVBQVUsR0FBRyxZQUFZLE1BQU0sUUFBUSxJQUFJLFFBQVEsUUFBUSxLQUFLLElBQUksRUFBRTtBQUFBLEVBQ2pGO0FBRUEsU0FBTyxRQUFRLEtBQUssSUFBSTtBQUMxQjtBQU9BLFNBQVMsc0JBQThCO0FBQ3JDLFFBQU0sNkJBQTZCO0FBQ25DLFFBQU0sMEJBQTBCO0FBQ2hDLFNBQU8sUUFBUSxhQUFhLFVBQVUsNkJBQTZCO0FBQ3JFO0FBV0EsU0FBUyxxQkFBcUIsT0FBc0IsU0FBZ0U7QUFDbEgsUUFBTSxXQUFXLE1BQU0sT0FBTyxTQUFTO0FBQ3ZDLE1BQUksU0FBUyxXQUFXLEdBQUc7QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLFNBQVMsU0FBUyxHQUFHO0FBQ3ZCLFdBQU8sUUFBUSxPQUFPLElBQUksTUFBTSwwREFBMEQsQ0FBQztBQUFBLEVBQzdGO0FBRUEsUUFBTSxVQUFVLFNBQVMsQ0FBQztBQUMxQixvQkFBa0IsT0FBTztBQUN6QixRQUFNLGNBQWMsTUFBTSxPQUFPLENBQUMsU0FBeUIsT0FBTyxTQUFTLFFBQVE7QUFDbkYsUUFBTSxjQUFjLGNBQWMsV0FBVztBQUM3QyxRQUFNLG1CQUFtQixvQkFBb0I7QUFHN0MsUUFBTSxjQUFjLEdBQUcsV0FBVyxJQUFJLFFBQVEsWUFBWSxLQUFLLEdBQUcsQ0FBQztBQUNuRSxNQUFJLFlBQVksVUFBVSxrQkFBa0I7QUFDMUMsV0FBTyxXQUFXLGFBQWEsT0FBTztBQUFBLEVBQ3hDO0FBR0EsUUFBTSxVQUFzQixDQUFDO0FBQzdCLE1BQUksZUFBeUIsQ0FBQztBQUU5QixhQUFXLE9BQU8sUUFBUSxhQUFhO0FBQ3JDLFVBQU0sWUFBWSxHQUFHLFdBQVcsSUFBSSxDQUFDLEdBQUcsY0FBYyxHQUFHLEVBQUUsS0FBSyxHQUFHLENBQUM7QUFDcEUsUUFBSSxVQUFVLFNBQVMsa0JBQWtCO0FBQ3ZDLFVBQUksYUFBYSxXQUFXLEdBQUc7QUFDN0IsZUFBTyxRQUFRO0FBQUEsVUFDYixJQUFJO0FBQUEsWUFDRix5REFBeUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxrQ0FDekUsT0FBTyxZQUFZLE1BQU0sQ0FDM0IsMkNBQTJDLE9BQU8sZ0JBQWdCLENBQUM7QUFBQSxVQUNyRTtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0EsY0FBUSxLQUFLLFlBQVk7QUFDekIscUJBQWUsQ0FBQyxHQUFHO0FBQUEsSUFDckIsT0FBTztBQUNMLG1CQUFhLEtBQUssR0FBRztBQUFBLElBQ3ZCO0FBQUEsRUFDRjtBQUVBLE1BQUksYUFBYSxTQUFTLEdBQUc7QUFFM0IsWUFBUSxLQUFLLFlBQVk7QUFBQSxFQUMzQjtBQUVBLFNBQU8sZUFBZSxhQUFhLFNBQVMsT0FBTztBQUNyRDtBQVFBLFNBQVMsVUFBVSxNQUFvQztBQUNyRCxTQUFPLE9BQU8sU0FBUyxZQUFZLGlCQUFpQjtBQUN0RDtBQWdCQSxTQUFTLGNBQWMsU0FBaUIsS0FBYSxTQUFvRDtBQUN2RyxNQUFJLFFBQVEsYUFBYSxXQUFXLFFBQVEsU0FBUyxJQUFJLEdBQUc7QUFDMUQsUUFBSSxDQUFDLFNBQVM7QUFDWixZQUFNLElBQUksTUFBTSx5SEFBeUg7QUFBQSxJQUMzSTtBQUNBLFVBQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJO0FBQzNCLHNCQUFrQixTQUFTLGlDQUFpQztBQUM1RCxXQUFPLE1BQU0sU0FBUyxNQUFNO0FBQUEsTUFDMUI7QUFBQSxNQUNBLEtBQUs7QUFBQSxNQUNMLE9BQU87QUFBQSxJQUNULENBQUM7QUFBQSxFQUNIO0FBRUEsUUFBTSxlQUFlLFFBQVEsYUFBYSxVQUFVLHFCQUFxQixPQUFPLElBQUk7QUFDcEYsU0FBTyxNQUFNLGNBQWMsQ0FBQyxHQUFHO0FBQUEsSUFDN0I7QUFBQSxJQUNBLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxFQUNULENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsibWF4Q29tbWFuZExlbmd0aCJdCn0K
|
|
@@ -10,11 +10,11 @@ export interface FormatParams {
|
|
|
10
10
|
/**
|
|
11
11
|
* Optional file paths to format. If omitted, formats the entire project.
|
|
12
12
|
*/
|
|
13
|
-
paths?: string[] | undefined;
|
|
13
|
+
readonly paths?: string[] | undefined;
|
|
14
14
|
/**
|
|
15
15
|
* Whether to rewrite the source code.
|
|
16
16
|
*/
|
|
17
|
-
rewrite?: boolean | undefined;
|
|
17
|
+
readonly rewrite?: boolean | undefined;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Format the source code.
|
|
@@ -53,4 +53,4 @@ async function format(params) {
|
|
|
53
53
|
export {
|
|
54
54
|
format
|
|
55
55
|
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9mb3JtYXR0ZXJzL2RwcmludC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEZvcm1hdCB0aGUgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuXG5pbXBvcnQge1xuICBnZXRGb2xkZXJOYW1lLFxuICBqb2luXG59IGZyb20gJy4uLy4uL3BhdGgudHMnO1xuaW1wb3J0IHsgYXNzZXJ0Tm9uTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4tZGV2LXV0aWxzLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB0aGUge0BsaW5rIGZvcm1hdH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0UGFyYW1zIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZpbGUgcGF0aHMgdG8gZm9ybWF0LiBJZiBvbWl0dGVkLCBmb3JtYXRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV3cml0ZSB0aGUgc291cmNlIGNvZGUuXG4gICAqL1xuICByZWFkb25seSByZXdyaXRlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBGb3JtYXQgdGhlIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEZvcm1hdFBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNvdXJjZSBjb2RlIGhhcyBiZWVuIGZvcm1hdHRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZvcm1hdChwYXJhbXM/OiBGb3JtYXRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwYXRocywgcmV3cml0ZSA9IHRydWUgfSA9IHBhcmFtcyA/PyB7fTtcbiAgY29uc3Qgcm9vdEZvbGRlciA9IGdldFJvb3RGb2xkZXIoKTtcbiAgYXNzZXJ0Tm9uTnVsbGFibGUocm9vdEZvbGRlciwgJ1Jvb3QgZm9sZGVyIG5vdCBmb3VuZCcpO1xuICBsZXQgZHByaW50SnNvblBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRwcmludEpzb24pO1xuICBpZiAoIWV4aXN0c1N5bmMoZHByaW50SnNvblBhdGgpKSB7XG4gICAgY29uc3QgcGFja2FnZUZvbGRlciA9IGdldFJvb3RGb2xkZXIoZ2V0Rm9sZGVyTmFtZShpbXBvcnQubWV0YS51cmwpKTtcbiAgICBhc3NlcnROb25OdWxsYWJsZShwYWNrYWdlRm9sZGVyLCAnQ291bGQgbm90IGZpbmQgcGFja2FnZSBmb2xkZXIuJyk7XG4gICAgZHByaW50SnNvblBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShqb2luKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EcHJpbnRKc29uKSwgcGFja2FnZUZvbGRlcik7XG4gIH1cblxuICBpZiAoIWV4aXN0c1N5bmMoZHByaW50SnNvblBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkcHJpbnQuanNvbiBub3QgZm91bmQnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbW1hbmQgPSByZXdyaXRlID8gJ2ZtdCcgOiAnY2hlY2snO1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHRhcmdldHMgPSBwYXRocz8ubGVuZ3RoID8gcGF0aHMgOiBbJyoqLyonXTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnbnB4JywgJ2RwcmludCcsIGNvbW1hbmQsICctLWNvbmZpZycsIGRwcmludEpzb25QYXRoLCB7IGJhdGNoZWRBcmdzOiB0YXJnZXRzIH1dKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsU0FBUyxrQkFBa0I7QUFFM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGlDQUFpQztBQUMxQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUF1QlAsZUFBc0IsT0FBTyxRQUFzQztBQUNqRSxRQUFNLEVBQUUsT0FBTyxVQUFVLEtBQUssSUFBSSxVQUFVLENBQUM7QUFDN0MsUUFBTSxhQUFhLGNBQWM7QUFDakMsb0JBQWtCLFlBQVksdUJBQXVCO0FBQ3JELE1BQUksaUJBQWlCLHdCQUF3QiwwQkFBMEIsVUFBVTtBQUNqRixNQUFJLENBQUMsV0FBVyxjQUFjLEdBQUc7QUFDL0IsVUFBTSxnQkFBZ0IsY0FBYyxjQUFjLFlBQVksR0FBRyxDQUFDO0FBQ2xFLHNCQUFrQixlQUFlLGdDQUFnQztBQUNqRSxxQkFBaUIsd0JBQXdCLEtBQUssMEJBQTBCLE1BQU0sMEJBQTBCLFVBQVUsR0FBRyxhQUFhO0FBQUEsRUFDcEk7QUFFQSxNQUFJLENBQUMsV0FBVyxjQUFjLEdBQUc7QUFDL0IsVUFBTSxJQUFJLE1BQU0sdUJBQXVCO0FBQUEsRUFDekM7QUFFQSxRQUFNLFVBQVUsVUFBVSxRQUFRO0FBRWxDLFFBQU0sVUFBVSxPQUFPLFNBQVMsUUFBUSxDQUFDLE1BQU07QUFFL0MsUUFBTSxhQUFhLENBQUMsT0FBTyxVQUFVLFNBQVMsWUFBWSxnQkFBZ0IsRUFBRSxhQUFhLFFBQVEsQ0FBQyxDQUFDO0FBQ3JHOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -11,7 +11,7 @@ export interface SpellcheckParams {
|
|
|
11
11
|
/**
|
|
12
12
|
* Optional file paths to check. If omitted, checks the entire project.
|
|
13
13
|
*/
|
|
14
|
-
paths?: string[] | undefined;
|
|
14
|
+
readonly paths?: string[] | undefined;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Runs a spellcheck on the entire codebase using `cspell`.
|
|
@@ -30,4 +30,4 @@ async function spellcheck(params) {
|
|
|
30
30
|
export {
|
|
31
31
|
spellcheck
|
|
32
32
|
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2NzcGVsbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZnVuY3Rpb24gZm9yIHJ1bm5pbmcgYSBzcGVsbGNoZWNrIG9uIHRoZSBjb2RlYmFzZSB1c2luZyB0aGUgYGNzcGVsbGAgbGlicmFyeS5cbiAqIEl0IHJlcG9ydHMgYW55IHNwZWxsaW5nIGlzc3VlcyBmb3VuZCBpbiB0aGUgY29kZSBhbmQgcmV0dXJucyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHNwZWxsY2hlY2sgd2FzIHN1Y2Nlc3NmdWwuXG4gKi9cblxuaW1wb3J0IHsgZXhlY0Zyb21Sb290IH0gZnJvbSAnLi4vcm9vdC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBzcGVsbGNoZWNrfSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGVsbGNoZWNrUGFyYW1zIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZpbGUgcGF0aHMgdG8gY2hlY2suIElmIG9taXR0ZWQsIGNoZWNrcyB0aGUgZW50aXJlIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJ1bnMgYSBzcGVsbGNoZWNrIG9uIHRoZSBlbnRpcmUgY29kZWJhc2UgdXNpbmcgYGNzcGVsbGAuXG4gKlxuICogQ2hlY2tzIGFsbCBmaWxlcyBpbiB0aGUgY3VycmVudCBmb2xkZXIgYW5kIGl0cyBzdWJmb2xkZXJzIGZvciBzcGVsbGluZyBpc3N1ZXMuXG4gKiBJZiBpc3N1ZXMgYXJlIGZvdW5kLCB0aGV5IGFyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUgd2l0aCB0aGVpciBmaWxlIHBhdGgsIGxpbmUsIGFuZCBjb2x1bW4gbnVtYmVyLlxuICpcbiAqIFVzZXMgYC0tbm8tbXVzdC1maW5kLWZpbGVzYCBzbyB0aGF0IGNzcGVsbCBkb2VzIG5vdCBmYWlsIHdoZW4gYWxsIHByb3ZpZGVkIHBhdGhzXG4gKiBhcmUgZXhjbHVkZWQgYnkgYnVpbHQtaW4gaWdub3JlIHJ1bGVzIChlLmcuLCBgcGFja2FnZS1sb2NrLmpzb25gKS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBTcGVsbGNoZWNrUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0sIGluZGljYXRpbmcgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgc3BlbGxjaGVjay5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNwZWxsY2hlY2socGFyYW1zPzogU3BlbGxjaGVja1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHBhdGhzIH0gPSBwYXJhbXMgPz8ge307XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoIGlzIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFsnLiddO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWyducHgnLCAnY3NwZWxsJywgJy0tbm8tcHJvZ3Jlc3MnLCAnLS1uby1tdXN0LWZpbmQtZmlsZXMnLCB7IGJhdGNoZWRBcmdzOiB0YXJnZXRzIH1dKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsU0FBUyxvQkFBb0I7QUF3QjdCLGVBQXNCLFdBQVcsUUFBMEM7QUFDekUsUUFBTSxFQUFFLE1BQU0sSUFBSSxVQUFVLENBQUM7QUFFN0IsUUFBTSxVQUFVLE9BQU8sU0FBUyxRQUFRLENBQUMsR0FBRztBQUU1QyxRQUFNLGFBQWEsQ0FBQyxPQUFPLFVBQVUsaUJBQWlCLHdCQUF3QixFQUFFLGFBQWEsUUFBUSxDQUFDLENBQUM7QUFDekc7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -19,13 +19,13 @@ export interface DefineEslintConfigsParams {
|
|
|
19
19
|
* @param context - The ESLint configuration context.
|
|
20
20
|
* @returns The custom ESLint configurations.
|
|
21
21
|
*/
|
|
22
|
-
customConfigs
|
|
22
|
+
readonly customConfigs?: (context: EslintConfigContext) => Linter.Config[];
|
|
23
23
|
/**
|
|
24
24
|
* A function that edits the ESLint configuration context.
|
|
25
25
|
*
|
|
26
26
|
* @param context - The ESLint configuration context.
|
|
27
27
|
*/
|
|
28
|
-
editContext
|
|
28
|
+
readonly editContext?: (context: EslintConfigContext) => void;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* The context for defining ESLint configurations.
|
|
@@ -413,6 +413,8 @@ function getObsidianDevUtilsPluginConfigs(context) {
|
|
|
413
413
|
rules: {
|
|
414
414
|
"obsidian-dev-utils/no-async-callback-to-unsafe-return": "error",
|
|
415
415
|
"obsidian-dev-utils/no-used-underscore-variables": "error",
|
|
416
|
+
"obsidian-dev-utils/params-options-name-match": "error",
|
|
417
|
+
"obsidian-dev-utils/readonly-params-options-members": "error",
|
|
416
418
|
"obsidian-dev-utils/require-super-call": "error"
|
|
417
419
|
}
|
|
418
420
|
}
|
|
@@ -589,4 +591,4 @@ export {
|
|
|
589
591
|
EslintConfigContext,
|
|
590
592
|
defineEslintConfigs
|
|
591
593
|
};
|
|
592
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgY29uZmlndXJhdGlvbiBmb3IgVHlwZVNjcmlwdCBwcm9qZWN0cyB3aXRoIHZhcmlvdXMgcGx1Z2lucy5cbiAqXG4gKiBUaGlzIG1vZHVsZSBleHBvcnRzIEVTTGludCBjb25maWd1cmF0aW9ucyBmb3IgVHlwZVNjcmlwdCBwcm9qZWN0cywgaW50ZWdyYXRpbmcgbXVsdGlwbGUgRVNMaW50IHBsdWdpbnNcbiAqIHN1Y2ggYXMgYEB0eXBlc2NyaXB0LWVzbGludC9wYXJzZXJgLCBgQHR5cGVzY3JpcHQtZXNsaW50L2VzbGludC1wbHVnaW5gLFxuICogYGVzbGludC1wbHVnaW4tbW9kdWxlcy1uZXdsaW5lc2AsIGBAc3R5bGlzdGljL2VzbGludC1wbHVnaW5gLlxuICogSXQgc2V0cyB1cCBwYXJzZXJzLCBwbHVnaW5zLCBhbmQgcnVsZXMgZm9yIG1haW50YWluaW5nIGNvZGUgcXVhbGl0eSBhbmQgY29uc2lzdGVuY3kuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlY2xhcmF0aXZlIEVTTGludCBydWxlL3BsdWdpbiBjb25maWd1cmF0aW9uOyBjb3JyZWN0bmVzcyBpcyB2ZXJpZmllZCBieSBydW5uaW5nIEVTTGludCwgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSAnZXNsaW50JztcblxuLyogZXNsaW50LWRpc2FibGUgbm8tbWFnaWMtbnVtYmVycyAtLSBXZSBkaXNhYmxlZCBtYWdpYyBudW1iZXJzIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBhbGwgb3ZlciB0aGUgY29uZmlncy4gKi9cbmltcG9ydCBjb21tZW50c0NvbmZpZ3MgZnJvbSAnQGVzbGludC1jb21tdW5pdHkvZXNsaW50LXBsdWdpbi1lc2xpbnQtY29tbWVudHMvY29uZmlncyc7XG5pbXBvcnQgeyBpbmNsdWRlSWdub3JlRmlsZSB9IGZyb20gJ0Blc2xpbnQvY29uZmlnLWhlbHBlcnMnO1xuaW1wb3J0IGVzbGludCBmcm9tICdAZXNsaW50L2pzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1yZW5hbWUtZGVmYXVsdCAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgcGx1Z2luYCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IHN0eWxpc3RpYyBmcm9tICdAc3R5bGlzdGljL2VzbGludC1wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlVHlwZVNjcmlwdEltcG9ydFJlc29sdmVyIH0gZnJvbSAnZXNsaW50LWltcG9ydC1yZXNvbHZlci10eXBlc2NyaXB0JztcbmltcG9ydCB7IGZsYXRDb25maWdzIGFzIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncyB9IGZyb20gJ2VzbGludC1wbHVnaW4taW1wb3J0LXgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgb2JzaWRpYW5tZCBmcm9tICdlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWQnO1xuaW1wb3J0IHsgY29uZmlncyBhcyBwZXJmZWN0aW9uaXN0Q29uZmlncyB9IGZyb20gJ2VzbGludC1wbHVnaW4tcGVyZmVjdGlvbmlzdCc7XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICdlc2xpbnQvY29uZmlnJztcbmltcG9ydCBnbG9iYWxzIGZyb20gJ2dsb2JhbHMnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbmltcG9ydCB0c2VzbGludCBmcm9tICd0eXBlc2NyaXB0LWVzbGludCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4vcGx1Z2luL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi8uLi9wYXRoLnRzJztcbmltcG9ydCB7IGdldFJvb3RGb2xkZXIgfSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7IG9ic2lkaWFuRGV2VXRpbHNQbHVnaW4gfSBmcm9tICcuL2VzbGludC1ydWxlcy9vYnNpZGlhbi1kZXYtdXRpbHMtcGx1Z2luLnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUVzbGludENvbmZpZ3NQYXJhbXMge1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGJ1aWxkcyBjdXN0b20gRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBUaGUgY3VzdG9tIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAgICovXG4gIGN1c3RvbUNvbmZpZ3M/KGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW107XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBlZGl0cyB0aGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICovXG4gIGVkaXRDb250ZXh0Pyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgRXNsaW50Q29uZmlnQ29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgcm9vdCBjb25maWd1cmF0aW9uIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvb3RDb25maWdGaWxlczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIHNjcmlwdCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzY3JpcHRGaWxlczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2VGaWxlczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIHRlc3QgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGVzdEZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxsIGZpbGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYWxsIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIGFsbEZpbGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMudGVzdEZpbGVzLCAuLi50aGlzLnNjcmlwdEZpbGVzLCAuLi50aGlzLnJvb3RDb25maWdGaWxlcywgLi4udGhpcy5zb3VyY2VGaWxlc107XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBidWlsZHMgRVNMaW50IGNvbmZpZ3VyYXRpb25zIGZvciBUeXBlU2NyaXB0IHByb2plY3RzLCBpbnRlZ3JhdGluZyBtdWx0aXBsZSBFU0xpbnQgcGx1Z2luc1xuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICogQHJldHVybnMgVGhlIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUVzbGludENvbmZpZ3MocGFyYW1zOiBEZWZpbmVFc2xpbnRDb25maWdzUGFyYW1zID0ge30pOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEVzbGludENvbmZpZ0NvbnRleHQoKTtcbiAgY29udGV4dC5yb290Q29uZmlnRmlsZXMucHVzaChcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Db21taXRsaW50Q29uZmlnVHMsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlZpdGVzdENvbmZpZ1RzXG4gICk7XG4gIGNvbnRleHQuc2NyaXB0RmlsZXMucHVzaChcbiAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNjcmlwdHMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzKVxuICApO1xuICBjb250ZXh0LnNvdXJjZUZpbGVzLnB1c2goXG4gICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzKSxcbiAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55VHN4KVxuICApO1xuICBjb250ZXh0LnRlc3RGaWxlcy5wdXNoKFxuICAgIGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuVGVzdHMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzKSxcbiAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1vY2tzLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlQYXRoLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRlc3RUcylcbiAgKTtcblxuICBpZiAocGFyYW1zLmVkaXRDb250ZXh0KSB7XG4gICAgcGFyYW1zLmVkaXRDb250ZXh0KGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgY3VzdG9tQ29uZmlncyA9IHBhcmFtcy5jdXN0b21Db25maWdzPy4oY29udGV4dCkgPz8gW107XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhcbiAgICAuLi5nZXRHaXRJZ25vcmVDb25maWdzKCksXG4gICAgLy8gT2JzaWRpYW5tZCBjb25maWdzIHJ1biBmaXJzdCBzbyBvdXIgc3RyaWN0ZXIgcnVsZXMgb3ZlcnJpZGUgdGhlaXIgcmVsYXhlZCBkZWZhdWx0c1xuICAgIC4uLmdldE9ic2lkaWFuTGludENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0RXNsaW50Q29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRUc2VzbGludENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0U3R5bGlzdGljQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRQZXJmZWN0aW9uaXN0Q29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRFc2xpbnRJbXBvcnRSZXNvbHZlclR5cGVzY3JpcHRDb25maWdzKCksXG4gICAgLi4uZ2V0RXNsaW50Q29tbWVudHNDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldE9ic2lkaWFuRGV2VXRpbHNQbHVnaW5Db25maWdzKGNvbnRleHQpLFxuICAgIC4uLmN1c3RvbUNvbmZpZ3NcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50Q29tbWVudHNDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tbmFtZWQtYXMtZGVmYXVsdC1tZW1iZXIgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYHJlY29tbWVuZGVkYCBpcyB0b28gY29uZnVzaW5nLlxuICAgICAgZXh0ZW5kczogW2NvbW1lbnRzQ29uZmlncy5yZWNvbW1lbmRlZF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0Blc2xpbnQtY29tbXVuaXR5L2VzbGludC1jb21tZW50cy9yZXF1aXJlLWRlc2NyaXB0aW9uJzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldEVzbGludENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGV4dGVuZHM6IFtlc2xpbnQuY29uZmlncy5yZWNvbW1lbmRlZF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2FjY2Vzc29yLXBhaXJzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2FycmF5LWNhbGxiYWNrLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICdjYW1lbGNhc2UnOiAnZXJyb3InLFxuICAgICAgICAnY2FwaXRhbGl6ZWQtY29tbWVudHMnOiBbJ2Vycm9yJywgJ2Fsd2F5cycsIHsgYmxvY2s6IHsgaWdub3JlUGF0dGVybjogJ3Y4JyB9IH1dLFxuICAgICAgICAnY29tcGxleGl0eSc6ICdlcnJvcicsXG4gICAgICAgICdjb25zaXN0ZW50LXRoaXMnOiAnZXJyb3InLFxuICAgICAgICAnY3VybHknOiAnZXJyb3InLFxuICAgICAgICAnZGVmYXVsdC1jYXNlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZS1sYXN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtcGFyYW0tbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdlcWVxZXEnOiAnZXJyb3InLFxuICAgICAgICAnZnVuYy1uYW1lLW1hdGNoaW5nJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZXMnOiAnZXJyb3InLFxuICAgICAgICAnZnVuYy1zdHlsZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdkZWNsYXJhdGlvbicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3dBcnJvd0Z1bmN0aW9uczogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICdncm91cGVkLWFjY2Vzc29yLXBhaXJzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ2dldEJlZm9yZVNldCdcbiAgICAgICAgXSxcbiAgICAgICAgJ2d1YXJkLWZvci1pbic6ICdlcnJvcicsXG4gICAgICAgICduby1hbGVydCc6ICdlcnJvcicsXG4gICAgICAgICduby1hcnJheS1jb25zdHJ1Y3Rvcic6ICdlcnJvcicsXG4gICAgICAgICduby1iaXR3aXNlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWNhbGxlcic6ICdlcnJvcicsXG4gICAgICAgICduby1jb25zb2xlJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3c6IFtcbiAgICAgICAgICAgICAgJ3dhcm4nLFxuICAgICAgICAgICAgICAnZXJyb3InXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8tY29uc3RydWN0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWRpdi1yZWdleCc6ICdlcnJvcicsXG4gICAgICAgICduby1lbHNlLXJldHVybic6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93RWxzZUlmOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWVtcHR5LWZ1bmN0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dGVuZC1uYXRpdmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtYmluZCc6ICdlcnJvcicsXG4gICAgICAgICduby1leHRyYS1sYWJlbCc6ICdlcnJvcicsXG4gICAgICAgICduby1pbXBsaWNpdC1jb2VyY2lvbic6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICchISdcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1pbXBsaWVkLWV2YWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW5uZXItZGVjbGFyYXRpb25zJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWl0ZXJhdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxhYmVsLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbHMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbG9uZS1ibG9ja3MnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbG9uZWx5LWlmJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvb3AtZnVuYyc6ICdlcnJvcicsXG4gICAgICAgICduby1tYWdpYy1udW1iZXJzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGV0ZWN0T2JqZWN0czogdHJ1ZSxcbiAgICAgICAgICAgIGVuZm9yY2VDb25zdDogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZTogW1xuICAgICAgICAgICAgICAtMSxcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLW11bHRpLWFzc2lnbic6ICdlcnJvcicsXG4gICAgICAgICduby1tdWx0aS1zdHInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbmVnYXRlZC1jb25kaXRpb24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbmVzdGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tbmV3LWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbmV3LXdyYXBwZXJzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW9iamVjdC1jb25zdHJ1Y3Rvcic6ICdlcnJvcicsXG4gICAgICAgICduby1vY3RhbC1lc2NhcGUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tcHJvbWlzZS1leGVjdXRvci1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tcHJvdG8nOiAnZXJyb3InLFxuICAgICAgICAnbm8tcmVzdHJpY3RlZC1zeW50YXgnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBkZWZpbml0ZSBhc3NpZ25tZW50IGFzc2VydGlvbnMgKCEpLiBJbml0aWFsaXplIHRoZSBmaWVsZCBvciBtYWtlIGl0IG9wdGlvbmFsLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ1Byb3BlcnR5RGVmaW5pdGlvbltkZWZpbml0ZT10cnVlXSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9ucyAoISkgb24gYWJzdHJhY3QgZmllbGRzLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ1RTQWJzdHJhY3RQcm9wZXJ0eURlZmluaXRpb25bZGVmaW5pdGU9dHJ1ZV0nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBhbm9ueW1vdXMgaW5saW5lIG9iamVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXJzLiBEZWZpbmUgYSBuYW1lZCBpbnRlcmZhY2UgaW5zdGVhZC4nLFxuICAgICAgICAgICAgc2VsZWN0b3I6ICc6ZnVuY3Rpb24gPiBJZGVudGlmaWVyIFRTVHlwZUxpdGVyYWwnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBhbm9ueW1vdXMgaW5saW5lIG9iamVjdCB0eXBlcyBpbiBmdW5jdGlvbiByZXR1cm4gdHlwZXMuIERlZmluZSBhIG5hbWVkIGludGVyZmFjZSBpbnN0ZWFkLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJzpmdW5jdGlvbiA+IFRTVHlwZUFubm90YXRpb24gVFNUeXBlTGl0ZXJhbCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzIGluIGludGVyZmFjZS9tZXRob2Qgc2lnbmF0dXJlcy4gRGVmaW5lIGEgbmFtZWQgaW50ZXJmYWNlIGluc3RlYWQuJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnVFNNZXRob2RTaWduYXR1cmUgVFNUeXBlTGl0ZXJhbCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzIGFzIHR5cGUgYXJndW1lbnRzLiBEZWZpbmUgYSBuYW1lZCBpbnRlcmZhY2UgaW5zdGVhZC4nLFxuICAgICAgICAgICAgc2VsZWN0b3I6ICdUU1R5cGVQYXJhbWV0ZXJJbnN0YW50aWF0aW9uIFRTVHlwZUxpdGVyYWwnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBhbm9ueW1vdXMgaW5saW5lIG9iamVjdCB0eXBlcyBpbiB0eXBlIGFubm90YXRpb25zLiBEZWZpbmUgYSBuYW1lZCBpbnRlcmZhY2UgaW5zdGVhZC4nLFxuICAgICAgICAgICAgc2VsZWN0b3I6ICdUU1R5cGVBbm5vdGF0aW9uIFRTVHlwZUxpdGVyYWwnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBhbm9ueW1vdXMgaW5saW5lIG9iamVjdCB0eXBlcyBpbiB0eXBlIGFzc2VydGlvbnMuIERlZmluZSBhIG5hbWVkIGludGVyZmFjZSBpbnN0ZWFkLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ1RTQXNFeHByZXNzaW9uIFRTVHlwZUxpdGVyYWwnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBkb3VibGUgdHlwZSBhc3NlcnRpb25zIChhcyBYIGFzIFkpLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ1RTQXNFeHByZXNzaW9uID4gVFNBc0V4cHJlc3Npb24nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBfIHByZWZpeCBvbiBtZXRob2RzIG9yIGZ1bmN0aW9ucy4gVGhlIF8gcHJlZml4IGlzIGZvciB1bnVzZWQgcGFyYW1ldGVycyBvbmx5LicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ01ldGhvZERlZmluaXRpb25ba2V5Lm5hbWU9L15fL106bm90KFtvdmVycmlkZT10cnVlXSknXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBfIHByZWZpeCBvbiBtZXRob2RzIG9yIGZ1bmN0aW9ucy4gVGhlIF8gcHJlZml4IGlzIGZvciB1bnVzZWQgcGFyYW1ldGVycyBvbmx5LicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ0Z1bmN0aW9uRGVjbGFyYXRpb25baWQubmFtZT0vXl8vXSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgcmVuYW1lIGltcG9ydHMgd2l0aCBcIk1vY2tcIiBpbiB0aGUgYWxpYXMuIE1vY2sgY2xhc3NlcyBhcmUgdGhlIGNhbm9uaWNhbCB0eXBlcyBcdTIwMTQgdXNlIHRoZSBvcmlnaW5hbCBuYW1lLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ0ltcG9ydFNwZWNpZmllcltsb2NhbC5uYW1lPS9Nb2NrL106bm90KFtpbXBvcnRlZC5uYW1lPS9Nb2NrL10pJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWVzc2FnZTogJ0F2b2lkIGR5bmFtaWMgaW1wb3J0KCkuIFVzZSBzdGF0aWMgaW1wb3J0cyBpbnN0ZWFkLiBPbmx5IHVzZSBkeW5hbWljIGltcG9ydHMgZm9yIGxhenkvY29uZGl0aW9uYWwgbG9hZGluZy4nLFxuICAgICAgICAgICAgc2VsZWN0b3I6ICdJbXBvcnRFeHByZXNzaW9uJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWVzc2FnZTogJ0RvIG5vdCB1c2UgYGRlY2xhcmVgIG9uIGNsYXNzIHByb3BlcnRpZXMuIEluaXRpYWxpemUgdGhlIHByb3BlcnR5IG9yIHVzZSBhIHJlZ3VsYXIgdHlwZSBhbm5vdGF0aW9uLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ1Byb3BlcnR5RGVmaW5pdGlvbltkZWNsYXJlPXRydWVdJ1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2NyaXB0LXVybCc6ICdlcnJvcicsXG4gICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNoYWRvdyc6ICdlcnJvcicsXG4gICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubmVlZGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbmNhdCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAnb3BlcmF0b3ItYXNzaWdubWVudCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbmFtZWQtY2FwdHVyZS1ncm91cCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LWhhcy1vd24nOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3JhZGl4JzogJ2Vycm9yJyxcbiAgICAgICAgJ3JlcXVpcmUtYXRvbWljLXVwZGF0ZXMnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAndW5pY29kZS1ib20nOiAnZXJyb3InLFxuICAgICAgICAndmFycy1vbi10b3AnOiAnZXJyb3InLFxuICAgICAgICAneW9kYSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduby1tYWdpYy1udW1iZXJzJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRFc2xpbnRJbXBvcnRSZXNvbHZlclR5cGVzY3JpcHRDb25maWdzKCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICdpbXBvcnQteC9yZXNvbHZlci1uZXh0JzogW1xuICAgICAgICAgIGNyZWF0ZVR5cGVTY3JpcHRJbXBvcnRSZXNvbHZlcih7XG4gICAgICAgICAgICBhbHdheXNUcnlUeXBlczogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRHaXRJZ25vcmVDb25maWdzKCk6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBqb2luKGdldFJvb3RGb2xkZXIoKSA/PyAnJywgJy5naXRpZ25vcmUnKTtcbiAgaWYgKCFleGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiBbaW5jbHVkZUlnbm9yZUZpbGUoZ2l0aWdub3JlUGF0aCldO1xufVxuXG5mdW5jdGlvbiBnZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy50eXBlc2NyaXB0LFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MuZXJyb3JzLFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3Mud2FybmluZ3NcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L2NvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvZXh0ZW5zaW9ucyc6IFsnZXJyb3InLCAnaWdub3JlUGFja2FnZXMnXSxcbiAgICAgICAgJ2ltcG9ydC14L2ZpcnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L2ltcG9ydHMtZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbmV3bGluZS1hZnRlci1pbXBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYWJzb2x1dGUtcGF0aCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWNvbW1vbmpzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWN5Y2xlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlcHJlY2F0ZWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1keW5hbWljLXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1tdXRhYmxlLWV4cG9ydHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lc3BhY2UnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVsYXRpdmUtcGFja2FnZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVzdHJpY3RlZC1wYXRocyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1zZWxmLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby11bmFzc2lnbmVkLWltcG9ydCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICcqKi8qLmNzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNhc3MnLFxuICAgICAgICAgICAgICAnKiovKi5zY3NzJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVudXNlZC1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdpbXBvcnQteC9uby11c2VsZXNzLXBhdGgtc2VnbWVudHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8td2VicGFjay1sb2FkZXItc3ludGF4JzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc2NyaXB0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IFtcbiAgICAgICAgLi4uY29udGV4dC5yb290Q29uZmlnRmlsZXMsXG4gICAgICAgIGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3JjLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluVHMpXG4gICAgICBdLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRPYnNpZGlhbkRldlV0aWxzUGx1Z2luQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuYWxsRmlsZXMoKSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscyc6IG9ic2lkaWFuRGV2VXRpbHNQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL25vLWFzeW5jLWNhbGxiYWNrLXRvLXVuc2FmZS1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL3JlcXVpcmUtc3VwZXItY2FsbCc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRPYnNpZGlhbkxpbnRDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBvYnNpZGlhblJlY29tbWVuZGVkQ29uZmlncyA9IG9ic2lkaWFubWQuY29uZmlncy5yZWNvbW1lbmRlZDtcblxuICBjb25zdCBzY29wZWRPYnNpZGlhblJlY29tbWVuZGVkQ29uZmlncyA9IG9ic2lkaWFuUmVjb21tZW5kZWRDb25maWdzLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgaWYgKGNvbmZpZy5maWxlcz8uaW5jbHVkZXMoJ3BhY2thZ2UuanNvbicpKSB7XG4gICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGaWxlc1xuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIC4uLnNjb3BlZE9ic2lkaWFuUmVjb21tZW5kZWRDb25maWdzLFxuICAgIHtcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgb2JzaWRpYW5tZFxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbGFuZ3VhZ2VPcHRpb25zOiB7XG4gICAgICAgIGdsb2JhbHM6IHtcbiAgICAgICAgICAuLi5nbG9iYWxzLmJyb3dzZXIsXG4gICAgICAgICAgLi4uZ2xvYmFscy5ub2RlLFxuICAgICAgICAgIGFjdGl2ZURvY3VtZW50OiAncmVhZG9ubHknLFxuICAgICAgICAgIGFjdGl2ZVdpbmRvdzogJ3JlYWRvbmx5JyxcbiAgICAgICAgICBhamF4OiAncmVhZG9ubHknLFxuICAgICAgICAgIGFqYXhQcm9taXNlOiAncmVhZG9ubHknLFxuICAgICAgICAgIGNyZWF0ZURpdjogJ3JlYWRvbmx5JyxcbiAgICAgICAgICBjcmVhdGVFbDogJ3JlYWRvbmx5JyxcbiAgICAgICAgICBjcmVhdGVGcmFnbWVudDogJ3JlYWRvbmx5JyxcbiAgICAgICAgICBjcmVhdGVTcGFuOiAncmVhZG9ubHknLFxuICAgICAgICAgIGNyZWF0ZVN2ZzogJ3JlYWRvbmx5JyxcbiAgICAgICAgICBEb21FbGVtZW50SW5mbzogJ3JlYWRvbmx5JyxcbiAgICAgICAgICBmaXNoOiAncmVhZG9ubHknLFxuICAgICAgICAgIGZpc2hBbGw6ICdyZWFkb25seScsXG4gICAgICAgICAgaXNCb29sZWFuOiAncmVhZG9ubHknLFxuICAgICAgICAgIG5leHRGcmFtZTogJ3JlYWRvbmx5JyxcbiAgICAgICAgICBOb2RlSlM6ICdyZWFkb25seScsXG4gICAgICAgICAgcmVhZHk6ICdyZWFkb25seScsXG4gICAgICAgICAgc2xlZXA6ICdyZWFkb25seSdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldFBlcmZlY3Rpb25pc3RDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFt7XG4gICAgZXh0ZW5kczogW3BlcmZlY3Rpb25pc3RDb25maWdzWydyZWNvbW1lbmRlZC1hbHBoYWJldGljYWwnXV0sXG4gICAgZmlsZXM6IGNvbnRleHQuYWxsRmlsZXMoKVxuICB9XSk7XG59XG5cbmZ1bmN0aW9uIGdldFN0eWxpc3RpY0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGV4dGVuZHM6IFtcbiAgICAgICAgc3R5bGlzdGljLmNvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgICAgIHN0eWxpc3RpYy5jb25maWdzLmN1c3RvbWl6ZSh7XG4gICAgICAgICAgYXJyb3dQYXJlbnM6IHRydWUsXG4gICAgICAgICAgYnJhY2VTdHlsZTogJzF0YnMnLFxuICAgICAgICAgIGNvbW1hRGFuZ2xlOiAnbmV2ZXInLFxuICAgICAgICAgIHNlbWk6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0BzdHlsaXN0aWMvZ2VuZXJhdG9yLXN0YXItc3BhY2luZyc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9pbmRlbnQnOiAnb2ZmJyxcbiAgICAgICAgJ0BzdHlsaXN0aWMvaW5kZW50LWJpbmFyeS1vcHMnOiAnb2ZmJyxcbiAgICAgICAgJ0BzdHlsaXN0aWMvanN4LW9uZS1leHByZXNzaW9uLXBlci1saW5lJzogJ29mZicsXG4gICAgICAgICdAc3R5bGlzdGljL25vLWV4dHJhLXNlbWknOiAnZXJyb3InLFxuICAgICAgICAnQHN0eWxpc3RpYy9vYmplY3QtY3VybHktbmV3bGluZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEV4cG9ydERlY2xhcmF0aW9uOiB7XG4gICAgICAgICAgICAgIG1pblByb3BlcnRpZXM6IDIsXG4gICAgICAgICAgICAgIG11bHRpbGluZTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEltcG9ydERlY2xhcmF0aW9uOiB7XG4gICAgICAgICAgICAgIG1pblByb3BlcnRpZXM6IDIsXG4gICAgICAgICAgICAgIG11bHRpbGluZTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ0BzdHlsaXN0aWMvb3BlcmF0b3ItbGluZWJyZWFrJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ2JlZm9yZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgICAgICAgICc9JzogJ2FmdGVyJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ0BzdHlsaXN0aWMvcXVvdGVzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ3NpbmdsZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3dUZW1wbGF0ZUxpdGVyYWxzOiAnbmV2ZXInXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHNlc2xpbnRDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBleHRlbmRzOiBbXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgX2RlZmF1bHRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICAgIC4uLnRzZXNsaW50LmNvbmZpZ3Muc3RyaWN0VHlwZUNoZWNrZWQsXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgX2RlZmF1bHRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICAgIC4uLnRzZXNsaW50LmNvbmZpZ3Muc3R5bGlzdGljVHlwZUNoZWNrZWRcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgbGFuZ3VhZ2VPcHRpb25zOiB7XG4gICAgICAgIHBhcnNlck9wdGlvbnM6IHtcbiAgICAgICAgICBlY21hRmVhdHVyZXM6IHtcbiAgICAgICAgICAgIGpzeDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJvamVjdFNlcnZpY2U6IHRydWUsXG4gICAgICAgICAgdHNjb25maWdSb290RGlyOiBnZXRSb290Rm9sZGVyKCkgPz8gJydcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtZnVuY3Rpb24tcmV0dXJuLXR5cGUnOiAnZXJyb3InLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1lbWJlci1hY2Nlc3NpYmlsaXR5JzogJ2Vycm9yJyxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZSc6IFsnZXJyb3InLCB7XG4gICAgICAgICAgYWxsb3dBc1RoaXNQYXJhbWV0ZXI6IHRydWVcbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhcyc6IFsnZXJyb3InLCB7XG4gICAgICAgICAgYWxsb3dlZE5hbWVzOiBbXG4gICAgICAgICAgICAndGhhdCdcbiAgICAgICAgICBdXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXJnczogJ2FsbCcsXG4gICAgICAgICAgICBhcmdzSWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGNhdWdodEVycm9yczogJ2FsbCcsXG4gICAgICAgICAgICBjYXVnaHRFcnJvcnNJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgZGVzdHJ1Y3R1cmVkQXJyYXlJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgaWdub3JlUmVzdFNpYmxpbmdzOiB0cnVlLFxuICAgICAgICAgICAgdmFyc0lnbm9yZVBhdHRlcm46ICdeXydcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLXJlYWRvbmx5JzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb24nOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGFsbG93UHJpdmF0ZUNsYXNzUHJvcGVydHlBY2Nlc3M6IHRydWUsXG4gICAgICAgICAgYWxsb3dQcm90ZWN0ZWRDbGFzc1Byb3BlcnR5QWNjZXNzOiB0cnVlXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIHJlYWN0OiB7XG4gICAgICAgICAgdmVyc2lvbjogJ2RldGVjdCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qIGVzbGludC1lbmFibGUgbm8tbWFnaWMtbnVtYmVycyAtLSBXZSBkaXNhYmxlZCBtYWdpYyBudW1iZXJzIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBhbGwgb3ZlciB0aGUgY29uZmlncy4gKi9cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLE9BQU8scUJBQXFCO0FBQzVCLFNBQVMseUJBQXlCO0FBQ2xDLE9BQU8s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
|
|
594
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgY29uZmlndXJhdGlvbiBmb3IgVHlwZVNjcmlwdCBwcm9qZWN0cyB3aXRoIHZhcmlvdXMgcGx1Z2lucy5cbiAqXG4gKiBUaGlzIG1vZHVsZSBleHBvcnRzIEVTTGludCBjb25maWd1cmF0aW9ucyBmb3IgVHlwZVNjcmlwdCBwcm9qZWN0cywgaW50ZWdyYXRpbmcgbXVsdGlwbGUgRVNMaW50IHBsdWdpbnNcbiAqIHN1Y2ggYXMgYEB0eXBlc2NyaXB0LWVzbGludC9wYXJzZXJgLCBgQHR5cGVzY3JpcHQtZXNsaW50L2VzbGludC1wbHVnaW5gLFxuICogYGVzbGludC1wbHVnaW4tbW9kdWxlcy1uZXdsaW5lc2AsIGBAc3R5bGlzdGljL2VzbGludC1wbHVnaW5gLlxuICogSXQgc2V0cyB1cCBwYXJzZXJzLCBwbHVnaW5zLCBhbmQgcnVsZXMgZm9yIG1haW50YWluaW5nIGNvZGUgcXVhbGl0eSBhbmQgY29uc2lzdGVuY3kuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlY2xhcmF0aXZlIEVTTGludCBydWxlL3BsdWdpbiBjb25maWd1cmF0aW9uOyBjb3JyZWN0bmVzcyBpcyB2ZXJpZmllZCBieSBydW5uaW5nIEVTTGludCwgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSAnZXNsaW50JztcblxuLyogZXNsaW50LWRpc2FibGUgbm8tbWFnaWMtbnVtYmVycyAtLSBXZSBkaXNhYmxlZCBtYWdpYyBudW1iZXJzIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBhbGwgb3ZlciB0aGUgY29uZmlncy4gKi9cbmltcG9ydCBjb21tZW50c0NvbmZpZ3MgZnJvbSAnQGVzbGludC1jb21tdW5pdHkvZXNsaW50LXBsdWdpbi1lc2xpbnQtY29tbWVudHMvY29uZmlncyc7XG5pbXBvcnQgeyBpbmNsdWRlSWdub3JlRmlsZSB9IGZyb20gJ0Blc2xpbnQvY29uZmlnLWhlbHBlcnMnO1xuaW1wb3J0IGVzbGludCBmcm9tICdAZXNsaW50L2pzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1yZW5hbWUtZGVmYXVsdCAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgcGx1Z2luYCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IHN0eWxpc3RpYyBmcm9tICdAc3R5bGlzdGljL2VzbGludC1wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlVHlwZVNjcmlwdEltcG9ydFJlc29sdmVyIH0gZnJvbSAnZXNsaW50LWltcG9ydC1yZXNvbHZlci10eXBlc2NyaXB0JztcbmltcG9ydCB7IGZsYXRDb25maWdzIGFzIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncyB9IGZyb20gJ2VzbGludC1wbHVnaW4taW1wb3J0LXgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgb2JzaWRpYW5tZCBmcm9tICdlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWQnO1xuaW1wb3J0IHsgY29uZmlncyBhcyBwZXJmZWN0aW9uaXN0Q29uZmlncyB9IGZyb20gJ2VzbGludC1wbHVnaW4tcGVyZmVjdGlvbmlzdCc7XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICdlc2xpbnQvY29uZmlnJztcbmltcG9ydCBnbG9iYWxzIGZyb20gJ2dsb2JhbHMnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbmltcG9ydCB0c2VzbGludCBmcm9tICd0eXBlc2NyaXB0LWVzbGludCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4vcGx1Z2luL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi8uLi9wYXRoLnRzJztcbmltcG9ydCB7IGdldFJvb3RGb2xkZXIgfSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7IG9ic2lkaWFuRGV2VXRpbHNQbHVnaW4gfSBmcm9tICcuL2VzbGludC1ydWxlcy9vYnNpZGlhbi1kZXYtdXRpbHMtcGx1Z2luLnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUVzbGludENvbmZpZ3NQYXJhbXMge1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGJ1aWxkcyBjdXN0b20gRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBUaGUgY3VzdG9tIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUNvbmZpZ3M/OiAoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCkgPT4gTGludGVyLkNvbmZpZ1tdO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgZWRpdHMgdGhlIEVTTGludCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIEVTTGludCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBlZGl0Q29udGV4dD86IChjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFRoZSBjb250ZXh0IGZvciBkZWZpbmluZyBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFc2xpbnRDb25maWdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSByb290IGNvbmZpZ3VyYXRpb24gZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm9vdENvbmZpZ0ZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NyaXB0IGZpbGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNjcmlwdEZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZUZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdGVzdCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBhbGwgZmlsZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhbGwgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgYWxsRmlsZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy50ZXN0RmlsZXMsIC4uLnRoaXMuc2NyaXB0RmlsZXMsIC4uLnRoaXMucm9vdENvbmZpZ0ZpbGVzLCAuLi50aGlzLnNvdXJjZUZpbGVzXTtcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBFU0xpbnQgY29uZmlndXJhdGlvbnMgZm9yIFR5cGVTY3JpcHQgcHJvamVjdHMsIGludGVncmF0aW5nIG11bHRpcGxlIEVTTGludCBwbHVnaW5zXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBkZWZpbmluZyBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lRXNsaW50Q29uZmlncyhwYXJhbXM6IERlZmluZUVzbGludENvbmZpZ3NQYXJhbXMgPSB7fSk6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgRXNsaW50Q29uZmlnQ29udGV4dCgpO1xuICBjb250ZXh0LnJvb3RDb25maWdGaWxlcy5wdXNoKFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNvbW1pdGxpbnRDb25maWdUcyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Fc2xpbnRDb25maWdNdHMsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuVml0ZXN0Q29uZmlnVHNcbiAgKTtcbiAgY29udGV4dC5zY3JpcHRGaWxlcy5wdXNoKFxuICAgIGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU2NyaXB0cywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55VHMpXG4gICk7XG4gIGNvbnRleHQuc291cmNlRmlsZXMucHVzaChcbiAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55VHMpLFxuICAgIGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3JjLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlQYXRoLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlUc3gpXG4gICk7XG4gIGNvbnRleHQudGVzdEZpbGVzLnB1c2goXG4gICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5UZXN0cywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55VHMpLFxuICAgIGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTW9ja3MsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzKSxcbiAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55VGVzdFRzKVxuICApO1xuXG4gIGlmIChwYXJhbXMuZWRpdENvbnRleHQpIHtcbiAgICBwYXJhbXMuZWRpdENvbnRleHQoY29udGV4dCk7XG4gIH1cblxuICBjb25zdCBjdXN0b21Db25maWdzID0gcGFyYW1zLmN1c3RvbUNvbmZpZ3M/Lihjb250ZXh0KSA/PyBbXTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLmdldEdpdElnbm9yZUNvbmZpZ3MoKSxcbiAgICAvLyBPYnNpZGlhbm1kIGNvbmZpZ3MgcnVuIGZpcnN0IHNvIG91ciBzdHJpY3RlciBydWxlcyBvdmVycmlkZSB0aGVpciByZWxheGVkIGRlZmF1bHRzXG4gICAgLi4uZ2V0T2JzaWRpYW5MaW50Q29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRFc2xpbnRDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldFRzZXNsaW50Q29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRTdHlsaXN0aWNDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldEltcG9ydFhDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldFBlcmZlY3Rpb25pc3RDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldEVzbGludEltcG9ydFJlc29sdmVyVHlwZXNjcmlwdENvbmZpZ3MoKSxcbiAgICAuLi5nZXRFc2xpbnRDb21tZW50c0NvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0T2JzaWRpYW5EZXZVdGlsc1BsdWdpbkNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uY3VzdG9tQ29uZmlnc1xuICApO1xufVxuXG5mdW5jdGlvbiBnZXRFc2xpbnRDb21tZW50c0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgcmVjb21tZW5kZWRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICBleHRlbmRzOiBbY29tbWVudHNDb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQGVzbGludC1jb21tdW5pdHkvZXNsaW50LWNvbW1lbnRzL3JlcXVpcmUtZGVzY3JpcHRpb24nOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50Q29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW2VzbGludC5jb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnYWNjZXNzb3ItcGFpcnMnOiAnZXJyb3InLFxuICAgICAgICAnYXJyYXktY2FsbGJhY2stcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NhbWVsY2FzZSc6ICdlcnJvcicsXG4gICAgICAgICdjYXBpdGFsaXplZC1jb21tZW50cyc6IFsnZXJyb3InLCAnYWx3YXlzJywgeyBibG9jazogeyBpZ25vcmVQYXR0ZXJuOiAndjgnIH0gfV0sXG4gICAgICAgICdjb21wbGV4aXR5JzogJ2Vycm9yJyxcbiAgICAgICAgJ2NvbnNpc3RlbnQtdGhpcyc6ICdlcnJvcicsXG4gICAgICAgICdjdXJseSc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LWNhc2UnOiAnZXJyb3InLFxuICAgICAgICAnZGVmYXVsdC1jYXNlLWxhc3QnOiAnZXJyb3InLFxuICAgICAgICAnZGVmYXVsdC1wYXJhbS1sYXN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2VxZXFlcSc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLW5hbWUtbWF0Y2hpbmcnOiAnZXJyb3InLFxuICAgICAgICAnZnVuYy1uYW1lcyc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLXN0eWxlJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ2RlY2xhcmF0aW9uJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd0Fycm93RnVuY3Rpb25zOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2dyb3VwZWQtYWNjZXNzb3ItcGFpcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnZ2V0QmVmb3JlU2V0J1xuICAgICAgICBdLFxuICAgICAgICAnZ3VhcmQtZm9yLWluJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWFsZXJ0JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWFycmF5LWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWJpdHdpc2UnOiAnZXJyb3InLFxuICAgICAgICAnbm8tY2FsbGVyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWNvbnNvbGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICAnd2FybicsXG4gICAgICAgICAgICAgICdlcnJvcidcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1jb25zdHJ1Y3Rvci1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tZGl2LXJlZ2V4JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWVsc2UtcmV0dXJuJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3dFbHNlSWY6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8tZW1wdHktZnVuY3Rpb24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0ZW5kLW5hdGl2ZSc6ICdlcnJvcicsXG4gICAgICAgICduby1leHRyYS1iaW5kJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dHJhLWxhYmVsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWltcGxpY2l0LWNvZXJjaW9uJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3c6IFtcbiAgICAgICAgICAgICAgJyEhJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWltcGxpZWQtZXZhbCc6ICdlcnJvcicsXG4gICAgICAgICduby1pbm5lci1kZWNsYXJhdGlvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8taXRlcmF0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tbGFiZWwtdmFyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxhYmVscyc6ICdlcnJvcicsXG4gICAgICAgICduby1sb25lLWJsb2Nrcyc6ICdlcnJvcicsXG4gICAgICAgICduby1sb25lbHktaWYnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbG9vcC1mdW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW1hZ2ljLW51bWJlcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkZXRlY3RPYmplY3RzOiB0cnVlLFxuICAgICAgICAgICAgZW5mb3JjZUNvbnN0OiB0cnVlLFxuICAgICAgICAgICAgaWdub3JlOiBbXG4gICAgICAgICAgICAgIC0xLFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8tbXVsdGktYXNzaWduJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW11bHRpLXN0cic6ICdlcnJvcicsXG4gICAgICAgICduby1uZWdhdGVkLWNvbmRpdGlvbic6ICdlcnJvcicsXG4gICAgICAgICduby1uZXN0ZWQtdGVybmFyeSc6ICdlcnJvcicsXG4gICAgICAgICduby1uZXctZnVuYyc6ICdlcnJvcicsXG4gICAgICAgICduby1uZXctd3JhcHBlcnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tb2JqZWN0LWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW9jdGFsLWVzY2FwZSc6ICdlcnJvcicsXG4gICAgICAgICduby1wcm9taXNlLWV4ZWN1dG9yLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICduby1wcm90byc6ICdlcnJvcicsXG4gICAgICAgICduby1yZXN0cmljdGVkLXN5bnRheCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9ucyAoISkuIEluaXRpYWxpemUgdGhlIGZpZWxkIG9yIG1ha2UgaXQgb3B0aW9uYWwuJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnUHJvcGVydHlEZWZpbml0aW9uW2RlZmluaXRlPXRydWVdJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWVzc2FnZTogJ0RvIG5vdCB1c2UgZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb25zICghKSBvbiBhYnN0cmFjdCBmaWVsZHMuJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnVFNBYnN0cmFjdFByb3BlcnR5RGVmaW5pdGlvbltkZWZpbml0ZT10cnVlXSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzIGluIGZ1bmN0aW9uIHBhcmFtZXRlcnMuIERlZmluZSBhIG5hbWVkIGludGVyZmFjZSBpbnN0ZWFkLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJzpmdW5jdGlvbiA+IElkZW50aWZpZXIgVFNUeXBlTGl0ZXJhbCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzIGluIGZ1bmN0aW9uIHJldHVybiB0eXBlcy4gRGVmaW5lIGEgbmFtZWQgaW50ZXJmYWNlIGluc3RlYWQuJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnOmZ1bmN0aW9uID4gVFNUeXBlQW5ub3RhdGlvbiBUU1R5cGVMaXRlcmFsJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWVzc2FnZTogJ0RvIG5vdCB1c2UgYW5vbnltb3VzIGlubGluZSBvYmplY3QgdHlwZXMgaW4gaW50ZXJmYWNlL21ldGhvZCBzaWduYXR1cmVzLiBEZWZpbmUgYSBuYW1lZCBpbnRlcmZhY2UgaW5zdGVhZC4nLFxuICAgICAgICAgICAgc2VsZWN0b3I6ICdUU01ldGhvZFNpZ25hdHVyZSBUU1R5cGVMaXRlcmFsJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWVzc2FnZTogJ0RvIG5vdCB1c2UgYW5vbnltb3VzIGlubGluZSBvYmplY3QgdHlwZXMgYXMgdHlwZSBhcmd1bWVudHMuIERlZmluZSBhIG5hbWVkIGludGVyZmFjZSBpbnN0ZWFkLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ1RTVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb24gVFNUeXBlTGl0ZXJhbCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzIGluIHR5cGUgYW5ub3RhdGlvbnMuIERlZmluZSBhIG5hbWVkIGludGVyZmFjZSBpbnN0ZWFkLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ1RTVHlwZUFubm90YXRpb24gVFNUeXBlTGl0ZXJhbCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzIGluIHR5cGUgYXNzZXJ0aW9ucy4gRGVmaW5lIGEgbmFtZWQgaW50ZXJmYWNlIGluc3RlYWQuJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnVFNBc0V4cHJlc3Npb24gVFNUeXBlTGl0ZXJhbCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRvdWJsZSB0eXBlIGFzc2VydGlvbnMgKGFzIFggYXMgWSkuJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnVFNBc0V4cHJlc3Npb24gPiBUU0FzRXhwcmVzc2lvbidcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIF8gcHJlZml4IG9uIG1ldGhvZHMgb3IgZnVuY3Rpb25zLiBUaGUgXyBwcmVmaXggaXMgZm9yIHVudXNlZCBwYXJhbWV0ZXJzIG9ubHkuJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnTWV0aG9kRGVmaW5pdGlvbltrZXkubmFtZT0vXl8vXTpub3QoW292ZXJyaWRlPXRydWVdKSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIF8gcHJlZml4IG9uIG1ldGhvZHMgb3IgZnVuY3Rpb25zLiBUaGUgXyBwcmVmaXggaXMgZm9yIHVudXNlZCBwYXJhbWV0ZXJzIG9ubHkuJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnRnVuY3Rpb25EZWNsYXJhdGlvbltpZC5uYW1lPS9eXy9dJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWVzc2FnZTogJ0RvIG5vdCByZW5hbWUgaW1wb3J0cyB3aXRoIFwiTW9ja1wiIGluIHRoZSBhbGlhcy4gTW9jayBjbGFzc2VzIGFyZSB0aGUgY2Fub25pY2FsIHR5cGVzIFx1MjAxNCB1c2UgdGhlIG9yaWdpbmFsIG5hbWUuJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnSW1wb3J0U3BlY2lmaWVyW2xvY2FsLm5hbWU9L01vY2svXTpub3QoW2ltcG9ydGVkLm5hbWU9L01vY2svXSknXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnQXZvaWQgZHluYW1pYyBpbXBvcnQoKS4gVXNlIHN0YXRpYyBpbXBvcnRzIGluc3RlYWQuIE9ubHkgdXNlIGR5bmFtaWMgaW1wb3J0cyBmb3IgbGF6eS9jb25kaXRpb25hbCBsb2FkaW5nLicsXG4gICAgICAgICAgICBzZWxlY3RvcjogJ0ltcG9ydEV4cHJlc3Npb24nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBgZGVjbGFyZWAgb24gY2xhc3MgcHJvcGVydGllcy4gSW5pdGlhbGl6ZSB0aGUgcHJvcGVydHkgb3IgdXNlIGEgcmVndWxhciB0eXBlIGFubm90YXRpb24uJyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnUHJvcGVydHlEZWZpbml0aW9uW2RlY2xhcmU9dHJ1ZV0nXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8tcmV0dXJuLWFzc2lnbic6ICdlcnJvcicsXG4gICAgICAgICduby1zY3JpcHQtdXJsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNlbGYtY29tcGFyZSc6ICdlcnJvcicsXG4gICAgICAgICduby1zZXF1ZW5jZXMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2hhZG93JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZyc6ICdlcnJvcicsXG4gICAgICAgICduby10aHJvdy1saXRlcmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubW9kaWZpZWQtbG9vcC1jb25kaXRpb24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5uZWVkZWQtdGVybmFyeSc6ICdlcnJvcicsXG4gICAgICAgICduby11bnJlYWNoYWJsZS1sb29wJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVudXNlZC1leHByZXNzaW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWFzc2lnbm1lbnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1jYWxsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY29tcHV0ZWQta2V5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY29uY2F0JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1yZW5hbWUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tdmFyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZvaWQnOiAnZXJyb3InLFxuICAgICAgICAnb2JqZWN0LXNob3J0aGFuZCc6ICdlcnJvcicsXG4gICAgICAgICdvcGVyYXRvci1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1hcnJvdy1jYWxsYmFjayc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItY29uc3QnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1uYW1lZC1jYXB0dXJlLWdyb3VwJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1udW1lcmljLWxpdGVyYWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1vYmplY3QtaGFzLW93bic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LXNwcmVhZCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcHJvbWlzZS1yZWplY3QtZXJyb3JzJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1yZWdleC1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVzdC1wYXJhbXMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXNwcmVhZCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItdGVtcGxhdGUnOiAnZXJyb3InLFxuICAgICAgICAncmFkaXgnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hdG9taWMtdXBkYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdyZXF1aXJlLWF3YWl0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3N5bWJvbC1kZXNjcmlwdGlvbic6ICdlcnJvcicsXG4gICAgICAgICd1bmljb2RlLWJvbSc6ICdlcnJvcicsXG4gICAgICAgICd2YXJzLW9uLXRvcCc6ICdlcnJvcicsXG4gICAgICAgICd5b2RhJzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ25vLW1hZ2ljLW51bWJlcnMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldEVzbGludEltcG9ydFJlc29sdmVyVHlwZXNjcmlwdENvbmZpZ3MoKTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgJ2ltcG9ydC14L3Jlc29sdmVyLW5leHQnOiBbXG4gICAgICAgICAgY3JlYXRlVHlwZVNjcmlwdEltcG9ydFJlc29sdmVyKHtcbiAgICAgICAgICAgIGFsd2F5c1RyeVR5cGVzOiB0cnVlXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldEdpdElnbm9yZUNvbmZpZ3MoKTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgZ2l0aWdub3JlUGF0aCA9IGpvaW4oZ2V0Um9vdEZvbGRlcigpID8/ICcnLCAnLmdpdGlnbm9yZScpO1xuICBpZiAoIWV4aXN0c1N5bmMoZ2l0aWdub3JlUGF0aCkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIFtpbmNsdWRlSWdub3JlRmlsZShnaXRpZ25vcmVQYXRoKV07XG59XG5cbmZ1bmN0aW9uIGdldEltcG9ydFhDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBleHRlbmRzOiBbXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy5yZWNvbW1lbmRlZCxcbiAgICAgICAgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzLnR5cGVzY3JpcHQsXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy5lcnJvcnMsXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy53YXJuaW5nc1xuICAgICAgXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvY29uc2lzdGVudC10eXBlLXNwZWNpZmllci1zdHlsZSc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9leHRlbnNpb25zJzogWydlcnJvcicsICdpZ25vcmVQYWNrYWdlcyddLFxuICAgICAgICAnaW1wb3J0LXgvZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvaW1wb3J0cy1maXJzdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uZXdsaW5lLWFmdGVyLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hYnNvbHV0ZS1wYXRoJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWFtZCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbm9ueW1vdXMtZGVmYXVsdC1leHBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tY29tbW9uanMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tY3ljbGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZGVmYXVsdC1leHBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZGVwcmVjYXRlZCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1kdXBsaWNhdGVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWR5bmFtaWMtcmVxdWlyZSc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1lbXB0eS1uYW1lZC1ibG9ja3MnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8taW1wb3J0LW1vZHVsZS1leHBvcnRzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLW11dGFibGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lZC1kZWZhdWx0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLW5hbWVzcGFjZSc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1yZWxhdGl2ZS1wYWNrYWdlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1yZXN0cmljdGVkLXBhdGhzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLXNlbGYtaW1wb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVuYXNzaWduZWQtaW1wb3J0JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3c6IFtcbiAgICAgICAgICAgICAgJyoqLyouY3NzJyxcbiAgICAgICAgICAgICAgJyoqLyouc2FzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNjc3MnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnaW1wb3J0LXgvbm8tdW51c2VkLW1vZHVsZXMnOiAnb2ZmJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVzZWxlc3MtcGF0aC1zZWdtZW50cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby13ZWJwYWNrLWxvYWRlci1zeW50YXgnOiAnZXJyb3InXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlczogY29udGV4dC5zY3JpcHRGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcyc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlczogW1xuICAgICAgICAuLi5jb250ZXh0LnJvb3RDb25maWdGaWxlcyxcbiAgICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1haW5UcylcbiAgICAgIF0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tZGVmYXVsdC1leHBvcnQnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldE9ic2lkaWFuRGV2VXRpbHNQbHVnaW5Db25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzJzogb2JzaWRpYW5EZXZVdGlsc1BsdWdpblxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlcyc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvcmVhZG9ubHktcGFyYW1zLW9wdGlvbnMtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvcmVxdWlyZS1zdXBlci1jYWxsJzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldE9ic2lkaWFuTGludENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IG9ic2lkaWFuUmVjb21tZW5kZWRDb25maWdzID0gb2JzaWRpYW5tZC5jb25maWdzLnJlY29tbWVuZGVkO1xuXG4gIGNvbnN0IHNjb3BlZE9ic2lkaWFuUmVjb21tZW5kZWRDb25maWdzID0gb2JzaWRpYW5SZWNvbW1lbmRlZENvbmZpZ3MubWFwKChjb25maWcpID0+IHtcbiAgICBpZiAoY29uZmlnLmZpbGVzPy5pbmNsdWRlcygncGFja2FnZS5qc29uJykpIHtcbiAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGZpbGVzOiBjb250ZXh0LnNvdXJjZUZpbGVzXG4gICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAgLi4uc2NvcGVkT2JzaWRpYW5SZWNvbW1lbmRlZENvbmZpZ3MsXG4gICAge1xuICAgICAgcGx1Z2luczoge1xuICAgICAgICBvYnNpZGlhbm1kXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgZ2xvYmFsczoge1xuICAgICAgICAgIC4uLmdsb2JhbHMuYnJvd3NlcixcbiAgICAgICAgICAuLi5nbG9iYWxzLm5vZGUsXG4gICAgICAgICAgYWN0aXZlRG9jdW1lbnQ6ICdyZWFkb25seScsXG4gICAgICAgICAgYWN0aXZlV2luZG93OiAncmVhZG9ubHknLFxuICAgICAgICAgIGFqYXg6ICdyZWFkb25seScsXG4gICAgICAgICAgYWpheFByb21pc2U6ICdyZWFkb25seScsXG4gICAgICAgICAgY3JlYXRlRGl2OiAncmVhZG9ubHknLFxuICAgICAgICAgIGNyZWF0ZUVsOiAncmVhZG9ubHknLFxuICAgICAgICAgIGNyZWF0ZUZyYWdtZW50OiAncmVhZG9ubHknLFxuICAgICAgICAgIGNyZWF0ZVNwYW46ICdyZWFkb25seScsXG4gICAgICAgICAgY3JlYXRlU3ZnOiAncmVhZG9ubHknLFxuICAgICAgICAgIERvbUVsZW1lbnRJbmZvOiAncmVhZG9ubHknLFxuICAgICAgICAgIGZpc2g6ICdyZWFkb25seScsXG4gICAgICAgICAgZmlzaEFsbDogJ3JlYWRvbmx5JyxcbiAgICAgICAgICBpc0Jvb2xlYW46ICdyZWFkb25seScsXG4gICAgICAgICAgbmV4dEZyYW1lOiAncmVhZG9ubHknLFxuICAgICAgICAgIE5vZGVKUzogJ3JlYWRvbmx5JyxcbiAgICAgICAgICByZWFkeTogJ3JlYWRvbmx5JyxcbiAgICAgICAgICBzbGVlcDogJ3JlYWRvbmx5J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW3tcbiAgICBleHRlbmRzOiBbcGVyZmVjdGlvbmlzdENvbmZpZ3NbJ3JlY29tbWVuZGVkLWFscGhhYmV0aWNhbCddXSxcbiAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpXG4gIH1dKTtcbn1cblxuZnVuY3Rpb24gZ2V0U3R5bGlzdGljQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBzdHlsaXN0aWMuY29uZmlncy5yZWNvbW1lbmRlZCxcbiAgICAgICAgc3R5bGlzdGljLmNvbmZpZ3MuY3VzdG9taXplKHtcbiAgICAgICAgICBhcnJvd1BhcmVuczogdHJ1ZSxcbiAgICAgICAgICBicmFjZVN0eWxlOiAnMXRicycsXG4gICAgICAgICAgY29tbWFEYW5nbGU6ICduZXZlcicsXG4gICAgICAgICAgc2VtaTogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQHN0eWxpc3RpYy9nZW5lcmF0b3Itc3Rhci1zcGFjaW5nJzogJ29mZicsXG4gICAgICAgICdAc3R5bGlzdGljL2luZGVudCc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9pbmRlbnQtYmluYXJ5LW9wcyc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9qc3gtb25lLWV4cHJlc3Npb24tcGVyLWxpbmUnOiAnb2ZmJyxcbiAgICAgICAgJ0BzdHlsaXN0aWMvbm8tZXh0cmEtc2VtaSc6ICdlcnJvcicsXG4gICAgICAgICdAc3R5bGlzdGljL29iamVjdC1jdXJseS1uZXdsaW5lJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgRXhwb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9vcGVyYXRvci1saW5lYnJlYWsnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnYmVmb3JlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgJz0nOiAnYWZ0ZXInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9xdW90ZXMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnc2luZ2xlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd1RlbXBsYXRlTGl0ZXJhbHM6ICduZXZlcidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRUc2VzbGludENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGV4dGVuZHM6IFtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHJpY3RUeXBlQ2hlY2tlZCxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHlsaXN0aWNUeXBlQ2hlY2tlZFxuICAgICAgXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgIGVjbWFGZWF0dXJlczoge1xuICAgICAgICAgICAganN4OiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9qZWN0U2VydmljZTogdHJ1ZSxcbiAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGdldFJvb3RGb2xkZXIoKSA/PyAnJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbWVtYmVyLWFjY2Vzc2liaWxpdHknOiAnZXJyb3InLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd0FzVGhpc1BhcmFtZXRlcjogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd2VkTmFtZXM6IFtcbiAgICAgICAgICAgICd0aGF0J1xuICAgICAgICAgIF1cbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhcmdzOiAnYWxsJyxcbiAgICAgICAgICAgIGFyZ3NJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgY2F1Z2h0RXJyb3JzOiAnYWxsJyxcbiAgICAgICAgICAgIGNhdWdodEVycm9yc0lnbm9yZVBhdHRlcm46ICdeXycsXG4gICAgICAgICAgICBkZXN0cnVjdHVyZWRBcnJheUlnbm9yZVBhdHRlcm46ICdeXycsXG4gICAgICAgICAgICBpZ25vcmVSZXN0U2libGluZ3M6IHRydWUsXG4gICAgICAgICAgICB2YXJzSWdub3JlUGF0dGVybjogJ15fJ1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItcmVhZG9ubHknOiAnZXJyb3InXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlczogY29udGV4dC50ZXN0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L2RvdC1ub3RhdGlvbic6IFsnZXJyb3InLCB7XG4gICAgICAgICAgYWxsb3dQcml2YXRlQ2xhc3NQcm9wZXJ0eUFjY2VzczogdHJ1ZSxcbiAgICAgICAgICBhbGxvd1Byb3RlY3RlZENsYXNzUHJvcGVydHlBY2Nlc3M6IHRydWVcbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgcmVhY3Q6IHtcbiAgICAgICAgICB2ZXJzaW9uOiAnZGV0ZWN0J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuLyogZXNsaW50LWVuYWJsZSBuby1tYWdpYy1udW1iZXJzIC0tIFdlIGRpc2FibGVkIG1hZ2ljIG51bWJlcnMgYmVjYXVzZSB0aGV5IGFyZSB1c2VkIGFsbCBvdmVyIHRoZSBjb25maWdzLiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsT0FBTyxxQkFBcUI7QUFDNUIsU0FBUyx5QkFBeUI7QUFDbEMsT0FBTyxZQUFZO0FBRW5CLE9BQU8sZUFBZTtBQUN0QixTQUFTLHNDQUFzQztBQUMvQyxTQUFTLGVBQWUsc0NBQXNDO0FBRTlELE9BQU8sZ0JBQWdCO0FBQ3ZCLFNBQVMsV0FBVyw0QkFBNEI7QUFDaEQsU0FBUyxvQkFBb0I7QUFDN0IsT0FBTyxhQUFhO0FBQ3BCLFNBQVMsa0JBQWtCO0FBRTNCLE9BQU8sY0FBYztBQUVyQixTQUFTLCtCQUErQjtBQUN4QyxTQUFTLFlBQVk7QUFDckIsU0FBUyxxQkFBcUI7QUFDOUIsU0FBUyw4QkFBOEI7QUF5QmhDLE1BQU0sb0JBQW9CO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJZixrQkFBNEIsQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSzdCLGNBQXdCLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUt6QixjQUF3QixDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLekIsWUFBc0IsQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9oQyxXQUFxQjtBQUMxQixXQUFPLENBQUMsR0FBRyxLQUFLLFdBQVcsR0FBRyxLQUFLLGFBQWEsR0FBRyxLQUFLLGlCQUFpQixHQUFHLEtBQUssV0FBVztBQUFBLEVBQzlGO0FBQ0Y7QUFVTyxTQUFTLG9CQUFvQixTQUFvQyxDQUFDLEdBQW9CO0FBQzNGLFFBQU0sVUFBVSxJQUFJLG9CQUFvQjtBQUN4QyxVQUFRLGdCQUFnQjtBQUFBLElBQ3RCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLEVBQzFCO0FBQ0EsVUFBUSxZQUFZO0FBQUEsSUFDbEIsS0FBSyx3QkFBd0IsU0FBUyx3QkFB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
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * as 'no-async-callback-to-unsafe-return' from './no-async-callback-to-unsafe-return.mjs';
|
|
2
2
|
export * as 'no-used-underscore-variables' from './no-used-underscore-variables.mjs';
|
|
3
3
|
export * as 'obsidian-dev-utils-plugin' from './obsidian-dev-utils-plugin.mjs';
|
|
4
|
+
export * as 'params-options-name-match' from './params-options-name-match.mjs';
|
|
5
|
+
export * as 'readonly-params-options-members' from './readonly-params-options-members.mjs';
|
|
4
6
|
export * as 'require-super-call' from './require-super-call.mjs';
|
|
5
7
|
export * as 'rule-tester-helper' from './rule-tester-helper.mjs';
|
|
@@ -24,13 +24,17 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
24
24
|
import * as no_async_callback_to_unsafe_return from "./no-async-callback-to-unsafe-return.mjs";
|
|
25
25
|
import * as no_used_underscore_variables from "./no-used-underscore-variables.mjs";
|
|
26
26
|
import * as obsidian_dev_utils_plugin from "./obsidian-dev-utils-plugin.mjs";
|
|
27
|
+
import * as params_options_name_match from "./params-options-name-match.mjs";
|
|
28
|
+
import * as readonly_params_options_members from "./readonly-params-options-members.mjs";
|
|
27
29
|
import * as require_super_call from "./require-super-call.mjs";
|
|
28
30
|
import * as rule_tester_helper from "./rule-tester-helper.mjs";
|
|
29
31
|
export {
|
|
30
32
|
no_async_callback_to_unsafe_return as "no-async-callback-to-unsafe-return",
|
|
31
33
|
no_used_underscore_variables as "no-used-underscore-variables",
|
|
32
34
|
obsidian_dev_utils_plugin as "obsidian-dev-utils-plugin",
|
|
35
|
+
params_options_name_match as "params-options-name-match",
|
|
36
|
+
readonly_params_options_members as "readonly-params-options-members",
|
|
33
37
|
require_super_call as "require-super-call",
|
|
34
38
|
rule_tester_helper as "rule-tester-helper"
|
|
35
39
|
};
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICduby1hc3luYy1jYWxsYmFjay10by11bnNhZmUtcmV0dXJuJyBmcm9tICcuL25vLWFzeW5jLWNhbGxiYWNrLXRvLXVuc2FmZS1yZXR1cm4udHMnO1xuZXhwb3J0ICogYXMgJ25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnIGZyb20gJy4vbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlcy50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4tZGV2LXV0aWxzLXBsdWdpbicgZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtcGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzICdwYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoJyBmcm9tICcuL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2gudHMnO1xuZXhwb3J0ICogYXMgJ3JlYWRvbmx5LXBhcmFtcy1vcHRpb25zLW1lbWJlcnMnIGZyb20gJy4vcmVhZG9ubHktcGFyYW1zLW9wdGlvbnMtbWVtYmVycy50cyc7XG5leHBvcnQgKiBhcyAncmVxdWlyZS1zdXBlci1jYWxsJyBmcm9tICcuL3JlcXVpcmUtc3VwZXItY2FsbC50cyc7XG5leHBvcnQgKiBhcyAncnVsZS10ZXN0ZXItaGVscGVyJyBmcm9tICcuL3J1bGUtdGVzdGVyLWhlbHBlci50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFlBQVlBLHdDQUEwQztBQUN0RCxZQUFZQyxrQ0FBb0M7QUFDaEQsWUFBWUMsK0JBQWlDO0FBQzdDLFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZQyxxQ0FBdUM7QUFDbkQsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLHdCQUEwQjsiLAogICJuYW1lcyI6IFsibm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybiIsICJuby11c2VkLXVuZGVyc2NvcmUtdmFyaWFibGVzIiwgIm9ic2lkaWFuLWRldi11dGlscy1wbHVnaW4iLCAicGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCIsICJyZWFkb25seS1wYXJhbXMtb3B0aW9ucy1tZW1iZXJzIiwgInJlcXVpcmUtc3VwZXItY2FsbCIsICJydWxlLXRlc3Rlci1oZWxwZXIiXQp9Cg==
|
|
@@ -23,15 +23,19 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
23
23
|
|
|
24
24
|
import { noAsyncCallbackToUnsafeReturn } from "./no-async-callback-to-unsafe-return.mjs";
|
|
25
25
|
import { noUsedUnderscoreVariables } from "./no-used-underscore-variables.mjs";
|
|
26
|
+
import { paramsOptionsNameMatch } from "./params-options-name-match.mjs";
|
|
27
|
+
import { readonlyParamsOptionsMembers } from "./readonly-params-options-members.mjs";
|
|
26
28
|
import { requireSuperCall } from "./require-super-call.mjs";
|
|
27
29
|
const obsidianDevUtilsPlugin = {
|
|
28
30
|
rules: {
|
|
29
31
|
"no-async-callback-to-unsafe-return": noAsyncCallbackToUnsafeReturn,
|
|
30
32
|
"no-used-underscore-variables": noUsedUnderscoreVariables,
|
|
33
|
+
"params-options-name-match": paramsOptionsNameMatch,
|
|
34
|
+
"readonly-params-options-members": readonlyParamsOptionsMembers,
|
|
31
35
|
"require-super-call": requireSuperCall
|
|
32
36
|
}
|
|
33
37
|
};
|
|
34
38
|
export {
|
|
35
39
|
obsidianDevUtilsPlugin
|
|
36
40
|
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9vYnNpZGlhbi1kZXYtdXRpbHMtcGx1Z2luLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHBsdWdpbiBmb3IgT2JzaWRpYW4gZGV2ZWxvcG1lbnQgdXRpbGl0aWVzLlxuICovXG5pbXBvcnQgdHlwZSB7IEVTTGludCB9IGZyb20gJ2VzbGludCc7XG5cbmltcG9ydCB7IG5vQXN5bmNDYWxsYmFja1RvVW5zYWZlUmV0dXJuIH0gZnJvbSAnLi9uby1hc3luYy1jYWxsYmFjay10by11bnNhZmUtcmV0dXJuLnRzJztcbmltcG9ydCB7IG5vVXNlZFVuZGVyc2NvcmVWYXJpYWJsZXMgfSBmcm9tICcuL25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMudHMnO1xuaW1wb3J0IHsgcGFyYW1zT3B0aW9uc05hbWVNYXRjaCB9IGZyb20gJy4vcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaC50cyc7XG5pbXBvcnQgeyByZWFkb25seVBhcmFtc09wdGlvbnNNZW1iZXJzIH0gZnJvbSAnLi9yZWFkb25seS1wYXJhbXMtb3B0aW9ucy1tZW1iZXJzLnRzJztcbmltcG9ydCB7IHJlcXVpcmVTdXBlckNhbGwgfSBmcm9tICcuL3JlcXVpcmUtc3VwZXItY2FsbC50cyc7XG5cbmV4cG9ydCBjb25zdCBvYnNpZGlhbkRldlV0aWxzUGx1Z2luOiBFU0xpbnQuUGx1Z2luID0ge1xuICBydWxlczoge1xuICAgICduby1hc3luYy1jYWxsYmFjay10by11bnNhZmUtcmV0dXJuJzogbm9Bc3luY0NhbGxiYWNrVG9VbnNhZmVSZXR1cm4sXG4gICAgJ25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnOiBub1VzZWRVbmRlcnNjb3JlVmFyaWFibGVzLFxuICAgICdwYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoJzogcGFyYW1zT3B0aW9uc05hbWVNYXRjaCxcbiAgICAncmVhZG9ubHktcGFyYW1zLW9wdGlvbnMtbWVtYmVycyc6IHJlYWRvbmx5UGFyYW1zT3B0aW9uc01lbWJlcnMsXG4gICAgJ3JlcXVpcmUtc3VwZXItY2FsbCc6IHJlcXVpcmVTdXBlckNhbGxcbiAgfVxufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsU0FBUyxxQ0FBcUM7QUFDOUMsU0FBUyxpQ0FBaUM7QUFDMUMsU0FBUyw4QkFBOEI7QUFDdkMsU0FBUyxvQ0FBb0M7QUFDN0MsU0FBUyx3QkFBd0I7QUFFMUIsTUFBTSx5QkFBd0M7QUFBQSxFQUNuRCxPQUFPO0FBQUEsSUFDTCxzQ0FBc0M7QUFBQSxJQUN0QyxnQ0FBZ0M7QUFBQSxJQUNoQyw2QkFBNkI7QUFBQSxJQUM3QixtQ0FBbUM7QUFBQSxJQUNuQyxzQkFBc0I7QUFBQSxFQUN4QjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* ESLint rule: params-options-name-match
|
|
5
|
+
*
|
|
6
|
+
* Ensures that parameter-bag type names match the function or constructor they
|
|
7
|
+
* belong to:
|
|
8
|
+
*
|
|
9
|
+
* - `fooBar(params: FooBarParams)` — PascalCase of function name + `Params`
|
|
10
|
+
* - `class Baz { constructor(params: BazConstructorParams) }` — ClassName + `ConstructorParams`
|
|
11
|
+
* - `class Baz { method(params: BazMethodParams) }` — ClassName + PascalCase(methodName) + `Params`
|
|
12
|
+
*
|
|
13
|
+
* Only checks parameters whose type annotation name ends with `Params` or
|
|
14
|
+
* `Options`. Only checks exported functions and public/protected class members
|
|
15
|
+
* to avoid false positives from internal options-passthrough helpers.
|
|
16
|
+
*/
|
|
17
|
+
import type { Rule } from 'eslint';
|
|
18
|
+
export declare const MESSAGE_ID = "paramsOptionsNameMatch";
|
|
19
|
+
export declare const paramsOptionsNameMatch: Rule.RuleModule;
|