@dbx-tools/appkit 0.9.119 → 0.9.120
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/index.ts +3 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +3 -2
- package/lib/src/appkit.js +3 -1
- package/lib/src/cache-storage.js +3 -3
- package/lib/src/files-cache.js +2 -2
- package/lib/src/identity.d.ts +12 -0
- package/lib/src/identity.js +69 -3
- package/lib/src/interceptor.js +6 -3
- package/lib/src/lakebase-resolver.d.ts +14 -0
- package/lib/src/lakebase-resolver.js +22 -3
- package/lib/src/migration.js +6 -7
- package/lib/src/plugin-execution.js +3 -3
- package/lib/src/provision.js +2 -2
- package/lib/src/tool-operations.d.ts +33 -0
- package/lib/src/tool-operations.js +43 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -9
- package/src/appkit.ts +2 -0
- package/src/cache-storage.ts +2 -2
- package/src/files-cache.ts +1 -1
- package/src/identity.ts +67 -2
- package/src/interceptor.ts +5 -2
- package/src/lakebase-resolver.ts +23 -1
- package/src/migration.ts +3 -5
- package/src/plugin-execution.ts +2 -2
- package/src/provision.ts +1 -1
- package/src/tool-operations.ts +80 -0
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/appkit";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.120";
|
|
7
7
|
export * as appkit from "./src/appkit.ts";
|
|
8
8
|
export * as brandContext from "./src/brand-context.ts";
|
|
9
9
|
export * as bundle from "./src/bundle.ts";
|
|
@@ -20,6 +20,7 @@ export * as pluginExecution from "./src/plugin-execution.ts";
|
|
|
20
20
|
export * as pluginRegistry from "./src/plugin-registry.ts";
|
|
21
21
|
export * as provision from "./src/provision.ts";
|
|
22
22
|
export * as requestTags from "./src/request-tags.ts";
|
|
23
|
+
export * as toolOperations from "./src/tool-operations.ts";
|
|
23
24
|
export * as toolProvider from "./src/tool-provider.ts";
|
|
24
25
|
export * as toolkitEntries from "./src/toolkit-entries.ts";
|
|
25
26
|
export type { AutoConfigureMode, CreateAppConfig, ExecutionContextLike, WorkspaceClientLike } from "./src/appkit.ts";
|
|
@@ -43,5 +44,6 @@ export type { SslMode, ParsedAddress, LakebaseConnectionInputs } from "./src/pga
|
|
|
43
44
|
export type { RunPluginExecutionOptions } from "./src/plugin-execution.ts";
|
|
44
45
|
export type { PluginContextLike } from "./src/plugin-registry.ts";
|
|
45
46
|
export type { RequestTagValue } from "./src/request-tags.ts";
|
|
47
|
+
export type { AppKitToolMeta, AppKitOperationSchemaMeta, AppKitOperation } from "./src/tool-operations.ts";
|
|
46
48
|
export { ToolRegistryPlugin } from "./src/tool-provider.ts";
|
|
47
49
|
export type { AgentToolExecutionContext } from "./src/tool-provider.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/appkit";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.120";
|
|
3
3
|
export * as appkit from "./src/appkit.ts";
|
|
4
4
|
export * as brandContext from "./src/brand-context.ts";
|
|
5
5
|
export * as bundle from "./src/bundle.ts";
|
|
@@ -16,6 +16,7 @@ export * as pluginExecution from "./src/plugin-execution.ts";
|
|
|
16
16
|
export * as pluginRegistry from "./src/plugin-registry.ts";
|
|
17
17
|
export * as provision from "./src/provision.ts";
|
|
18
18
|
export * as requestTags from "./src/request-tags.ts";
|
|
19
|
+
export * as toolOperations from "./src/tool-operations.ts";
|
|
19
20
|
export * as toolProvider from "./src/tool-provider.ts";
|
|
20
21
|
export * as toolkitEntries from "./src/toolkit-entries.ts";
|
|
21
22
|
export type { AutoConfigureMode, CreateAppConfig, ExecutionContextLike, WorkspaceClientLike } from "./src/appkit.ts";
|
|
@@ -39,5 +40,6 @@ export type { SslMode, ParsedAddress, LakebaseConnectionInputs } from "./src/pga
|
|
|
39
40
|
export type { RunPluginExecutionOptions } from "./src/plugin-execution.ts";
|
|
40
41
|
export type { PluginContextLike } from "./src/plugin-registry.ts";
|
|
41
42
|
export type { RequestTagValue } from "./src/request-tags.ts";
|
|
43
|
+
export type { AppKitToolMeta, AppKitOperationSchemaMeta, AppKitOperation } from "./src/tool-operations.ts";
|
|
42
44
|
export { ToolRegistryPlugin } from "./src/tool-provider.ts";
|
|
43
45
|
export type { AgentToolExecutionContext } from "./src/tool-provider.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/appkit";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.120";
|
|
6
6
|
export * as appkit from "./src/appkit.js";
|
|
7
7
|
export * as brandContext from "./src/brand-context.js";
|
|
8
8
|
export * as bundle from "./src/bundle.js";
|
|
@@ -19,6 +19,7 @@ export * as pluginExecution from "./src/plugin-execution.js";
|
|
|
19
19
|
export * as pluginRegistry from "./src/plugin-registry.js";
|
|
20
20
|
export * as provision from "./src/provision.js";
|
|
21
21
|
export * as requestTags from "./src/request-tags.js";
|
|
22
|
+
export * as toolOperations from "./src/tool-operations.js";
|
|
22
23
|
export * as toolProvider from "./src/tool-provider.js";
|
|
23
24
|
export * as toolkitEntries from "./src/toolkit-entries.js";
|
|
24
25
|
export { bundleAppResourceSchema, flattenAppYamlEnv, flattenAppEnv, getBundlePath } from "./src/bundle.js";
|
|
@@ -29,4 +30,4 @@ export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER, IDENTITY_MODES,
|
|
|
29
30
|
export { LifecycleBridgePlugin, lifecycleBridge } from "./src/interceptor.js";
|
|
30
31
|
export { SSL_MODES } from "./src/pgaddress.js";
|
|
31
32
|
export { ToolRegistryPlugin } from "./src/tool-provider.js";
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztBQUN0RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssVUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLGVBQWUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEtBQUssY0FBYyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLFdBQVcsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssY0FBYyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxLQUFLLGNBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEksT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU0vQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTIwXCI7XG5leHBvcnQgKiBhcyBhcHBraXQgZnJvbSBcIi4vc3JjL2FwcGtpdC50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRDb250ZXh0IGZyb20gXCIuL3NyYy9icmFuZC1jb250ZXh0LnRzXCI7XG5leHBvcnQgKiBhcyBidW5kbGUgZnJvbSBcIi4vc3JjL2J1bmRsZS50c1wiO1xuZXhwb3J0ICogYXMgY2FjaGVTdG9yYWdlIGZyb20gXCIuL3NyYy9jYWNoZS1zdG9yYWdlLnRzXCI7XG5leHBvcnQgKiBhcyBjaGlsZFByb2Nlc3MgZnJvbSBcIi4vc3JjL2NoaWxkLXByb2Nlc3MudHNcIjtcbmV4cG9ydCAqIGFzIGRhdGFicmlja3MgZnJvbSBcIi4vc3JjL2RhdGFicmlja3MudHNcIjtcbmV4cG9ydCAqIGFzIGZpbGVzQ2FjaGUgZnJvbSBcIi4vc3JjL2ZpbGVzLWNhY2hlLnRzXCI7XG5leHBvcnQgKiBhcyBpZGVudGl0eSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCAqIGFzIGludGVyY2VwdG9yIGZyb20gXCIuL3NyYy9pbnRlcmNlcHRvci50c1wiO1xuZXhwb3J0ICogYXMgbGFrZWJhc2VSZXNvbHZlciBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcmVzb2x2ZXIudHNcIjtcbmV4cG9ydCAqIGFzIG1pZ3JhdGlvbiBmcm9tIFwiLi9zcmMvbWlncmF0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyBwZ2FkZHJlc3MgZnJvbSBcIi4vc3JjL3BnYWRkcmVzcy50c1wiO1xuZXhwb3J0ICogYXMgcGx1Z2luRXhlY3V0aW9uIGZyb20gXCIuL3NyYy9wbHVnaW4tZXhlY3V0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW5SZWdpc3RyeSBmcm9tIFwiLi9zcmMvcGx1Z2luLXJlZ2lzdHJ5LnRzXCI7XG5leHBvcnQgKiBhcyBwcm92aXNpb24gZnJvbSBcIi4vc3JjL3Byb3Zpc2lvbi50c1wiO1xuZXhwb3J0ICogYXMgcmVxdWVzdFRhZ3MgZnJvbSBcIi4vc3JjL3JlcXVlc3QtdGFncy50c1wiO1xuZXhwb3J0ICogYXMgdG9vbE9wZXJhdGlvbnMgZnJvbSBcIi4vc3JjL3Rvb2wtb3BlcmF0aW9ucy50c1wiO1xuZXhwb3J0ICogYXMgdG9vbFByb3ZpZGVyIGZyb20gXCIuL3NyYy90b29sLXByb3ZpZGVyLnRzXCI7XG5leHBvcnQgKiBhcyB0b29sa2l0RW50cmllcyBmcm9tIFwiLi9zcmMvdG9vbGtpdC1lbnRyaWVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEF1dG9Db25maWd1cmVNb2RlLCBDcmVhdGVBcHBDb25maWcsIEV4ZWN1dGlvbkNvbnRleHRMaWtlLCBXb3Jrc3BhY2VDbGllbnRMaWtlIH0gZnJvbSBcIi4vc3JjL2FwcGtpdC50c1wiO1xuZXhwb3J0IHsgYnVuZGxlQXBwUmVzb3VyY2VTY2hlbWEsIGZsYXR0ZW5BcHBZYW1sRW52LCBmbGF0dGVuQXBwRW52LCBnZXRCdW5kbGVQYXRoIH0gZnJvbSBcIi4vc3JjL2J1bmRsZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBCdW5kbGVWYWxpZGF0ZUpzb24sIENvbmZpZ0ZpbGUsIENvbmZpZ01hcFZhbHVlLCBDb25maWdTb3VyY2UsIFJlc29sdmVDb25maWdWYWx1ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvYnVuZGxlLnRzXCI7XG5leHBvcnQgeyBBcHBLaXRDYWNoZVN0b3JhZ2UgfSBmcm9tIFwiLi9zcmMvY2FjaGUtc3RvcmFnZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBBcHBLaXRDYWNoZVN0b3JhZ2VPcHRpb25zLCBQZXJzaXN0ZW50U3RvcmFnZUJhc2UgfSBmcm9tIFwiLi9zcmMvY2FjaGUtc3RvcmFnZS50c1wiO1xuZXhwb3J0IHsgQXBwS2l0Q2hpbGRQcm9jZXNzIH0gZnJvbSBcIi4vc3JjL2NoaWxkLXByb2Nlc3MudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXBwS2l0U3Bhd25BcmdzLCBBcHBLaXRDaGlsZFByb2Nlc3NIZWFsdGhDaGVja0NvbnRleHQsIEFwcEtpdENoaWxkUHJvY2Vzc0hlYWx0aENoZWNrLCBBcHBLaXRDaGlsZFByb2Nlc3NPcHRpb25zLCBBcHBLaXRDaGlsZFByb2Nlc3NSdW5PcHRpb25zIH0gZnJvbSBcIi4vc3JjL2NoaWxkLXByb2Nlc3MudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ29udGV4dExpa2UgfSBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy50c1wiO1xuZXhwb3J0IHsgRmlsZXNDYWNoZU1hbmFnZXIsIEZpbGVzQ2FjaGVQbHVnaW4gfSBmcm9tIFwiLi9zcmMvZmlsZXMtY2FjaGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgRmlsZXNDYWNoZVBsdWdpbkNvbmZpZywgRmlsZXNDYWNoZVNjb3BlLCBGaWxlc0NhY2hlU291cmNlSWRlbnRpdHksIEZpbGVzQ2FjaGVFeHBvcnRzIH0gZnJvbSBcIi4vc3JjL2ZpbGVzLWNhY2hlLnRzXCI7XG5leHBvcnQgeyBBQ0NFU1NfVE9LRU5fSEVBREVSLCBVU0VSX0lEX0hFQURFUiwgVVNFUl9FTUFJTF9IRUFERVIsIElERU5USVRZX01PREVTLCBERUZBVUxUX0lERU5USVRZX01PREUgfSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCB0eXBlIHsgSWRlbnRpdHlNb2RlLCBIZWFkZXJCZWFyaW5nIH0gZnJvbSBcIi4vc3JjL2lkZW50aXR5LnRzXCI7XG5leHBvcnQgeyBMaWZlY3ljbGVCcmlkZ2VQbHVnaW4sIGxpZmVjeWNsZUJyaWRnZSB9IGZyb20gXCIuL3NyYy9pbnRlcmNlcHRvci50c1wiO1xuZXhwb3J0IHR5cGUgeyBMaWZlY3ljbGVFdmVudCwgTGlmZWN5Y2xlSGFuZGxlciwgUmVzb2x2ZWRBcHBFbnYsIEludGVyY2VwdG9yQ29udGV4dCwgSW50ZXJjZXB0b3IsIEludGVyY2VwdG9yUnVudGltZSB9IGZyb20gXCIuL3NyYy9pbnRlcmNlcHRvci50c1wiO1xuZXhwb3J0IHR5cGUgeyBMYWtlYmFzZVJlc29sdmVySW5wdXRzLCBMYWtlYmFzZUNvbm5lY3Rpb24gfSBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcmVzb2x2ZXIudHNcIjtcbmV4cG9ydCB0eXBlIHsgT3duZXJzaGlwTWlncmF0aW9uRXJyb3JPcHRpb25zIH0gZnJvbSBcIi4vc3JjL21pZ3JhdGlvbi50c1wiO1xuZXhwb3J0IHsgU1NMX01PREVTIH0gZnJvbSBcIi4vc3JjL3BnYWRkcmVzcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBTc2xNb2RlLCBQYXJzZWRBZGRyZXNzLCBMYWtlYmFzZUNvbm5lY3Rpb25JbnB1dHMgfSBmcm9tIFwiLi9zcmMvcGdhZGRyZXNzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJ1blBsdWdpbkV4ZWN1dGlvbk9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLWV4ZWN1dGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBQbHVnaW5Db250ZXh0TGlrZSB9IGZyb20gXCIuL3NyYy9wbHVnaW4tcmVnaXN0cnkudHNcIjtcbmV4cG9ydCB0eXBlIHsgUmVxdWVzdFRhZ1ZhbHVlIH0gZnJvbSBcIi4vc3JjL3JlcXVlc3QtdGFncy50c1wiO1xuZXhwb3J0IHR5cGUgeyBBcHBLaXRUb29sTWV0YSwgQXBwS2l0T3BlcmF0aW9uU2NoZW1hTWV0YSwgQXBwS2l0T3BlcmF0aW9uIH0gZnJvbSBcIi4vc3JjL3Rvb2wtb3BlcmF0aW9ucy50c1wiO1xuZXhwb3J0IHsgVG9vbFJlZ2lzdHJ5UGx1Z2luIH0gZnJvbSBcIi4vc3JjL3Rvb2wtcHJvdmlkZXIudHNcIjtcbmV4cG9ydCB0eXBlIHsgQWdlbnRUb29sRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCIuL3NyYy90b29sLXByb3ZpZGVyLnRzXCI7XG4iXX0=
|
package/lib/src/appkit.js
CHANGED
|
@@ -33,6 +33,7 @@ import { resolveAutoConfigurePolicy } from "./_auto-configure.js";
|
|
|
33
33
|
import { loadBrandContext } from "./brand-context.js";
|
|
34
34
|
import { createAppKitCacheStorage } from "./cache-storage.js";
|
|
35
35
|
import { createInterceptorContext, lifecycleBridge, } from "./interceptor.js";
|
|
36
|
+
import { installAsUserDevelopmentPatch } from "./identity.js";
|
|
36
37
|
import { applyLakebaseEnv } from "./lakebase-resolver.js";
|
|
37
38
|
import { provisionCacheSchema } from "./provision.js";
|
|
38
39
|
const logger = log.logger("appkit");
|
|
@@ -210,6 +211,7 @@ function interceptorList(interceptor) {
|
|
|
210
211
|
* const app = await appkit.createApp({ plugins: [server(), lakebase()] });
|
|
211
212
|
*/
|
|
212
213
|
export async function createApp(config) {
|
|
214
|
+
installAsUserDevelopmentPatch();
|
|
213
215
|
const plugins = pluginNames(config);
|
|
214
216
|
const interceptors = interceptorList(config?.interceptor);
|
|
215
217
|
logger.debug("createApp: start", {
|
|
@@ -322,4 +324,4 @@ export async function ensureInitialized() {
|
|
|
322
324
|
await createApp({ plugins: [], autoConfigure: false });
|
|
323
325
|
logger.debug("ensureInitialized: bare AppKit initialization complete");
|
|
324
326
|
}
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwa2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGtpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsT0FBTyxFQUNMLFNBQVMsSUFBSSxlQUFlLEVBQzVCLG1CQUFtQixFQUNuQixtQkFBbUIsR0FDcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUk1QixPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUNMLHdCQUF3QixFQUd4QixlQUFlLEdBRWhCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGdCQUFnQixFQUEyQixNQUFNLHdCQUF3QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFcEMsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsU0FBNkMsT0FBTyxDQUFDLEdBQUcsRUFDeEQsTUFBYyxPQUFPLENBQUMsR0FBRyxFQUFFO0lBRTNCLElBQUksZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDN0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENB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QztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQjtJQUNyQyxJQUFJLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztRQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDdkQsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDM0QsTUFBTSxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcHBLaXQgcnVudGltZSBnbHVlOiB0aGUgYXV0by1jb25maWd1cmluZyBgY3JlYXRlQXBwYCBkcm9wLWluLCBwbHVzIHRoZVxuICogcGVyLXJlcXVlc3QgZXhlY3V0aW9uIGNvbnRleHQgaGVscGVycyBhbmQgdHlwZXMgZGVyaXZlZCBmcm9tIGl0LlxuICpcbiAqIGBjcmVhdGVBcHBgIHJ1bnMgZGJ4LXRvb2xzIGF1dG8tY29uZmlndXJhdGlvbiwgdGhlbiBkZWxlZ2F0ZXMgdG8gQXBwS2l0J3Mgb3duXG4gKiBgY3JlYXRlQXBwYCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhbmQgdGhlIHNhbWUgdHlwZWQgcGx1Z2luLWV4cG9ydCBtYXAuXG4gKiBEcm9wIGl0IGluIGFzIGEgb25lLWZvci1vbmUgcmVwbGFjZW1lbnQ6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGxha2ViYXNlLCBzZXJ2ZXIgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG4gKiBpbXBvcnQgeyBhcHBraXQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbiAqXG4gKiBhd2FpdCBhcHBraXQuY3JlYXRlQXBwKHsgcGx1Z2luczogW3NlcnZlcigpLCBsYWtlYmFzZSgpXSB9KTtcbiAqIGBgYFxuICpcbiAqIEF1dG8tY29uZmlndXJhdGlvbiBydW5zIEJFRk9SRSBkZWxlZ2F0aW5nIHNvIHBsdWdpbnMgc2VlIGEgZnVsbHkgcG9wdWxhdGVkXG4gKiBgcHJvY2Vzcy5lbnZgIGR1cmluZyB0aGVpciBzeW5jaHJvbm91cyBgc2V0dXAoKWAuIExha2ViYXNlIFBvc3RncmVzIHJlc29sdXRpb25cbiAqIHJ1bnMgd2hlbiBhIG5hdGl2ZSBgbGFrZWJhc2VgIG9yIGBkYXRhYmFzZWAgcGx1Z2luIGlzIHByZXNlbnQsIG9yIHdoZW5cbiAqIHtAbGluayBBdXRvQ29uZmlndXJlTW9kZX0gaXMgc2V0IGV4cGxpY2l0bHkgb24gdGhlIGNvbmZpZyBvYmplY3QuXG4gKlxuICogYGdldEV4ZWN1dGlvbkNvbnRleHQoKWAgaXMgQXBwS2l0J3Mgb3duIGFjY2Vzc29yIGZvciB0aGUgT0JPLXNjb3BlZCB3b3Jrc3BhY2VcbiAqIGNsaWVudCArIHJlcXVlc3QgbWV0YWRhdGE7IHRoZSB3cmFwcGVycyBoZXJlIG1ha2UgaXQgc2FmZSB0byBjYWxsIG91dHNpZGUgYVxuICogcmVxdWVzdCBzY29wZSAoe0BsaW5rIHRyeUdldEV4ZWN1dGlvbkNvbnRleHR9KSBhbmQgdG8gbGF6aWx5IGJvb3QgYSBiYXJlIGFwcFxuICogKHtAbGluayBlbnN1cmVJbml0aWFsaXplZH0pLCBhbmQgcmUtZXhwb3J0IHRoZSBkZXJpdmVkIHR5cGVzIHNvIGFkZC1vblxuICogcGFja2FnZXMgY2FuIHR5cGUgYSBjb250ZXh0IC8gY2xpZW50IHdpdGhvdXQgcmUtZGVyaXZpbmcgdGhlbSBpbmxpbmUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIGNyZWF0ZUFwcCBhcyBhcHBraXRDcmVhdGVBcHAsXG4gIGdldEV4ZWN1dGlvbkNvbnRleHQsXG4gIEluaXRpYWxpemF0aW9uRXJyb3IsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbi8vIEFwcEtpdCdzIHJvb3QgYmFycmVsIHJlLWV4cG9ydHMgYFBsdWdpbkRhdGFgIGJ1dCBub3QgYFBsdWdpbk1hcGA7IHRoZSBwYWNrYWdlXG4vLyBwdWJsaXNoZXMgdGhpcyBzdWJwYXRoIGZvciBleGFjdGx5IHRoYXQgdHlwZS5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTWFwIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdC9kaXN0L3NoYXJlZC9zcmMvcGx1Z2luXCI7XG5pbXBvcnQgeyBwcm9maWxlIGFzIGF1dGhQcm9maWxlIH0gZnJvbSBcIkBkYngtdG9vbHMvYXV0aFwiO1xuaW1wb3J0IHsgYXN5bmNVdGlscywgZW52aXJvbm1lbnRVdGlscywgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcblxuaW1wb3J0IHsgcmVzb2x2ZUF1dG9Db25maWd1cmVQb2xpY3kgfSBmcm9tIFwiLi9fYXV0by1jb25maWd1cmUudHNcIjtcbmltcG9ydCB7IGxvYWRCcmFuZENvbnRleHQgfSBmcm9tIFwiLi9icmFuZC1jb250ZXh0LnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVBcHBLaXRDYWNoZVN0b3JhZ2UgfSBmcm9tIFwiLi9jYWNoZS1zdG9yYWdlLnRzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVJbnRlcmNlcHRvckNvbnRleHQsXG4gIHR5cGUgSW50ZXJjZXB0b3IsXG4gIHR5cGUgSW50ZXJjZXB0b3JSdW50aW1lLFxuICBsaWZlY3ljbGVCcmlkZ2UsXG4gIHR5cGUgUmVzb2x2ZWRBcHBFbnYsXG59IGZyb20gXCIuL2ludGVyY2VwdG9yLnRzXCI7XG5pbXBvcnQgeyBhcHBseUxha2ViYXNlRW52LCB0eXBlIExha2ViYXNlQ29ubmVjdGlvbiB9IGZyb20gXCIuL2xha2ViYXNlLXJlc29sdmVyLnRzXCI7XG5pbXBvcnQgeyBwcm92aXNpb25DYWNoZVNjaGVtYSB9IGZyb20gXCIuL3Byb3Zpc2lvbi50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiYXBwa2l0XCIpO1xuXG4vKiogRGV0ZWN0IHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGFzIGEgZGVwbG95ZWQgRGF0YWJyaWNrcyBBcHAuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhYnJpY2tzQXBwRW52KFxuICBzb3VyY2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gPSBwcm9jZXNzLmVudixcbiAgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuKTogYm9vbGVhbiB7XG4gIGlmIChlbnZpcm9ubWVudFV0aWxzLmlzRGF0YWJyaWNrc0FwcEVudihzb3VyY2UpKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IGN3ZC5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgcmV0dXJuIChcbiAgICBub3JtYWxpemVkID09PSBcIi9hcHAvcHl0aG9uL3NvdXJjZV9jb2RlXCIgfHwgbm9ybWFsaXplZC5zdGFydHNXaXRoKFwiL2FwcC9weXRob24vc291cmNlX2NvZGUvXCIpXG4gICk7XG59XG5cbnR5cGUgQXBwS2l0Q3JlYXRlQXBwQ29uZmlnID0gTm9uTnVsbGFibGU8UGFyYW1ldGVyczx0eXBlb2YgYXBwa2l0Q3JlYXRlQXBwPlswXT47XG50eXBlIEFwcEtpdFBsdWdpbnMgPSBOb25OdWxsYWJsZTxBcHBLaXRDcmVhdGVBcHBDb25maWdbXCJwbHVnaW5zXCJdPjtcblxuLyoqXG4gKiBXaGF0IGF1dG8tY29uZmlndXJhdGlvbiBkb2VzIGJlZm9yZSBBcHBLaXQgYm9vdHMuXG4gKlxuICogLSBgXCJwcm92aXNpb25cImA6IHJlc29sdmUgdGhlIExha2ViYXNlIGNvbm5lY3Rpb24gaW50byBgcHJvY2Vzcy5lbnZgLCB0aGVuXG4gKiAgIGdyYW50IHRoZSBBcHBLaXQgY2FjaGUgc2NoZW1hIHRvIHRoZSBjb25uZWN0aW5nIHJvbGUuXG4gKiAtIGBcImVudlwiYDogcmVzb2x2ZSB0aGUgTGFrZWJhc2UgY29ubmVjdGlvbiBpbnRvIGBwcm9jZXNzLmVudmAgb25seS5cbiAqXG4gKiBPbWl0IGl0IHRvIHJlc29sdmUgZGF0YWJhc2UgZW52aXJvbm1lbnQgd2hlbiBhIG5hdGl2ZSBgbGFrZWJhc2VgIG9yXG4gKiBgZGF0YWJhc2VgIHBsdWdpbiBpcyByZWdpc3RlcmVkLiBJbXBsaWNpdCBjYWNoZS1zY2hlbWEgZ3JhbnRzIHJlbWFpbiBnYXRlZCBvblxuICogYGxha2ViYXNlYDsgYGRhdGFiYXNlYCBvd25zIGl0cyBvd24gcG9vbCBhbmQgZG9lcyBub3QgYnJvYWRlbiBncmFudHMuIFNldCB0aGVcbiAqIG1vZGUgZXhwbGljaXRseSB0byBydW4gcmVnYXJkbGVzcyBvZiB0aGUgcGx1Z2luIGxpc3QsIG9yIHBhc3MgYGZhbHNlYCB0byBza2lwXG4gKiBhdXRvLWNvbmZpZ3VyYXRpb24gZW50aXJlbHkuXG4gKlxuICogU2V0IGl0IEVYUExJQ0lUTFkgb24gYW4gYXBwIHRoYXQgaGFzIG5vIGBsYWtlYmFzZSgpYCBwbHVnaW4gYnV0IHN0aWxsIHdhbnRzXG4gKiBBcHBLaXQncyBQRVJTSVNURU5UIGNhY2hlLiBBcHBLaXQgcGlja3MgTGFrZWJhc2UgZm9yIGBDYWNoZU1hbmFnZXJgIG9ubHkgd2hlblxuICogYGNyZWF0ZUxha2ViYXNlUG9vbCgpYCBjYW4gYnVpbGQgYSBwb29sLCBhbmQgdGhhdCByZWFkcyBgTEFLRUJBU0VfRU5EUE9JTlRgIC9cbiAqIGBQR0hPU1RgIC8gYFBHREFUQUJBU0VgIHN0cmFpZ2h0IGZyb20gYHByb2Nlc3MuZW52YCAtIHNvIHdpdGhvdXQgdGhpcyBzdGVwIHRoZVxuICogY2FjaGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byBpbi1tZW1vcnksIGFuZCBhbnl0aGluZyBpdCBob2xkcyAoYSBzZXNzaW9uXG4gKiBzaWduaW5nIGtleSwgYSBvbmUtdGltZSBjb2RlKSBpcyBsb3N0IG9uIHJlc3RhcnQuIGBcImVudlwiYCBpcyB0aGUgcmlnaHQgbW9kZVxuICogdGhlcmU6IHRoZSBhcHAgU1AgY2Fubm90IGdyYW50IG9uIHRoZSBjYWNoZSBzY2hlbWEgYW55d2F5LlxuICovXG5leHBvcnQgdHlwZSBBdXRvQ29uZmlndXJlTW9kZSA9IFwiZW52XCIgfCBcInByb3Zpc2lvblwiO1xuXG4vKiogQXBwS2l0J3MgYGNyZWF0ZUFwcGAgY29uZmlnIHBsdXMgdGhlIGRieC10b29scyBhdXRvLWNvbmZpZ3VyYXRpb24gc3dpdGNoLiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlQXBwQ29uZmlnPFQgZXh0ZW5kcyBBcHBLaXRQbHVnaW5zID0gQXBwS2l0UGx1Z2lucz4gPSBPbWl0PFxuICBBcHBLaXRDcmVhdGVBcHBDb25maWcsXG4gIFwicGx1Z2luc1wiIHwgXCJvblBsdWdpbnNSZWFkeVwiXG4+ICYge1xuICBwbHVnaW5zPzogVDtcbiAgb25QbHVnaW5zUmVhZHk/OiAoYXBwa2l0OiBQbHVnaW5NYXA8VD4pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAvKiogQXV0by1jb25maWd1cmF0aW9uIHRvIHJ1biBiZWZvcmUgQXBwS2l0IGJvb3RzLiBEZWZhdWx0cyB0byBgXCJwcm92aXNpb25cImAuICovXG4gIGF1dG9Db25maWd1cmU/OiBBdXRvQ29uZmlndXJlTW9kZSB8IGZhbHNlO1xuICAvKipcbiAgICogT25lIG9yIG1hbnkge0BsaW5rIEludGVyY2VwdG9yfXMgaGFuZGVkIGFuIHtAbGluayBJbnRlcmNlcHRvckNvbnRleHR9IG9uY2VcbiAgICogYXV0by1jb25maWd1cmF0aW9uIGhhcyBjb21wdXRlZCB0aGUgZW52LiBFYWNoIHJlY2VpdmVzIHRoZSByZXNvbHZlZCBlbnYsIGFuXG4gICAqIEFwcEtpdCBsaWZlY3ljbGUgaG9vay4gU2VlIGAuL2ludGVyY2VwdG9yYC4gVGhlIHR1bm5lbCBpcyB0aGUgcHJpbWFyeVxuICAgKiBjb25zdW1lci5cbiAgICovXG4gIGludGVyY2VwdG9yPzogSW50ZXJjZXB0b3IgfCBJbnRlcmNlcHRvcltdO1xufTtcblxuY29uc3QgTEFLRUJBU0VfUExVR0lOID0gXCJsYWtlYmFzZVwiO1xuXG4vKipcbiAqIFVwcGVyIGJvdW5kIG9uIGJvb3QtdGltZSBhdXRvLWNvbmZpZ3VyYXRpb24uIEl0IHJ1bnMgYXMgdGhlIHNlcnZpY2UgcHJpbmNpcGFsXG4gKiBiZWZvcmUgYW55IHBsdWdpbiBpcyBjb25zdHJ1Y3RlZCwgc28gaXQgc2l0cyBvdXRzaWRlIEFwcEtpdCdzIGludGVyY2VwdG9yXG4gKiBjaGFpbiBhbmQgaW5oZXJpdHMgbm8gdGltZW91dCwgcmV0cnksIG9yIHRlbGVtZXRyeSBmcm9tIGl0LiBUaGUgYnVkZ2V0IGNvdmVyc1xuICogdGhlIHJlc29sdmVyJ3Mgb3duIHdvcnN0IGNhc2UgKGNyZWF0ZSBhIHByb2plY3QsIHRoZW4gd2FpdCBmb3IgaXRzIGVuZHBvaW50KVxuICogcGx1cyB0aGUgY2FjaGUtc2NoZW1hIGdyYW50cy5cbiAqL1xuY29uc3QgQVVUT19DT05GSUdVUkVfVElNRU9VVF9NUyA9IDExICogNjBfMDAwO1xuXG5mdW5jdGlvbiB1c2VzUGx1Z2luPFQgZXh0ZW5kcyBBcHBLaXRQbHVnaW5zPihcbiAgY29uZmlnOiBDcmVhdGVBcHBDb25maWc8VD4gfCB1bmRlZmluZWQsXG4gIG5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihjb25maWc/LnBsdWdpbnM/LnNvbWUoKGVudHJ5KSA9PiBlbnRyeS5uYW1lID09PSBuYW1lKSk7XG59XG5cbi8qKiBQbHVnaW4gbmFtZXMgZm9yIGJvb3QgbG9ncyAob3JkZXIgcHJlc2VydmVkKS4gKi9cbmZ1bmN0aW9uIHBsdWdpbk5hbWVzKGNvbmZpZzogQ3JlYXRlQXBwQ29uZmlnIHwgdW5kZWZpbmVkKTogc3RyaW5nW10ge1xuICByZXR1cm4gKGNvbmZpZz8ucGx1Z2lucyA/PyBbXSkubWFwKChlbnRyeSkgPT4gZW50cnkubmFtZSk7XG59XG5cbi8qKlxuICogUnVuIGVuYWJsZWQgYXV0by1jb25maWd1cmF0aW9uIHN0ZXBzIHdpdGhvdXQgY2FsbGluZyBBcHBLaXQncyBgY3JlYXRlQXBwYC5cbiAqXG4gKiBMYWtlYmFzZSBQb3N0Z3JlcyByZXNvbHZlcyB3aGVuIHtAbGluayBDcmVhdGVBcHBDb25maWcuYXV0b0NvbmZpZ3VyZX0gaXMgc2V0XG4gKiBleHBsaWNpdGx5IG9yIGEgbmF0aXZlIGBsYWtlYmFzZWAvYGRhdGFiYXNlYCBwbHVnaW4gaXMgbGlzdGVkIGluXG4gKiBgY29uZmlnLnBsdWdpbnNgLiBgc2lnbmFsYCBjYW5jZWxzIHRoZSByZXNvbHV0aW9uOyBpdCBpcyBjb21iaW5lZCB3aXRoIGFuXG4gKiBpbnRlcm5hbCBib290IHRpbWVvdXQgZWl0aGVyIHdheS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG4gKlxuICogLy8gUG9wdWxhdGUgUEdIT1NUIC8gUEdEQVRBQkFTRSAvIExBS0VCQVNFX0VORFBPSU5UIHdpdGhvdXQgYm9vdGluZyBBcHBLaXQuXG4gKiBhd2FpdCBhcHBraXQuYXV0b0NvbmZpZ3VyZSh7IGF1dG9Db25maWd1cmU6IFwiZW52XCIgfSk7XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhdXRvQ29uZmlndXJlPFQgZXh0ZW5kcyBBcHBLaXRQbHVnaW5zPihcbiAgY29uZmlnPzogQ3JlYXRlQXBwQ29uZmlnPFQ+LFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbik6IFByb21pc2U8TGFrZWJhc2VDb25uZWN0aW9uIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGJ1bmRsZVByb2ZpbGUgPSBhcHBseURlZmF1bHRQcm9maWxlKCk7XG4gIGNvbnN0IHBsdWdpbnMgPSBwbHVnaW5OYW1lcyhjb25maWcpO1xuICBjb25zdCBwb2xpY3kgPSByZXNvbHZlQXV0b0NvbmZpZ3VyZVBvbGljeShwbHVnaW5zLCBjb25maWc/LmF1dG9Db25maWd1cmUpO1xuICBsb2dnZXIuZGVidWcoXCJhdXRvQ29uZmlndXJlOiBzdGFydFwiLCB7XG4gICAgLi4ucG9saWN5LFxuICAgIHBsdWdpbnMsXG4gICAgdGltZW91dE1zOiBBVVRPX0NPTkZJR1VSRV9USU1FT1VUX01TLFxuICAgIGNhbGxlclNpZ25hbDogQm9vbGVhbihzaWduYWwpLFxuICB9KTtcblxuICBpZiAoIXBvbGljeS5zaG91bGRSZXNvbHZlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiYXV0b0NvbmZpZ3VyZTogc2tpcFwiLCB7IC4uLnBvbGljeSwgcGx1Z2lucyB9KTtcbiAgICBsb2dnZXIuaW5mbyhcInJlYWR5XCIsIHtcbiAgICAgIGF1dG9Db25maWd1cmU6IHBvbGljeS5tb2RlLFxuICAgICAgbGFrZWJhc2VQbHVnaW5QcmVzZW50OiBwb2xpY3kubGFrZWJhc2VQbHVnaW5QcmVzZW50LFxuICAgICAgZGF0YWJhc2VQbHVnaW5QcmVzZW50OiBwb2xpY3kuZGF0YWJhc2VQbHVnaW5QcmVzZW50LFxuICAgICAgcHJvdmlzaW9uZWQ6IGZhbHNlLFxuICAgICAgc2tpcHBlZFJlYXNvbjogcG9saWN5LnNraXBwZWRSZWFzb24sXG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGFzeW5jVXRpbHMudGllQWJvcnRTaWduYWwoY29udHJvbGxlciwgc2lnbmFsKTtcbiAgYXN5bmNVdGlscy50aWVBYm9ydFNpZ25hbChjb250cm9sbGVyLCBBYm9ydFNpZ25hbC50aW1lb3V0KEFVVE9fQ09ORklHVVJFX1RJTUVPVVRfTVMpKTtcblxuICBsb2dnZXIuZGVidWcoXCJhdXRvQ29uZmlndXJlOiByZXNvbHZlIGxha2ViYXNlXCIsIHtcbiAgICBwcm92aXNpb246IHBvbGljeS5wcm92aXNpb24sXG4gICAgbW9kZTogcG9saWN5Lm1vZGUsXG4gIH0pO1xuICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IGF1dG9Db25maWd1cmVMYWtlYmFzZShwb2xpY3kucHJvdmlzaW9uLCBjb250cm9sbGVyLnNpZ25hbCwgYnVuZGxlUHJvZmlsZSk7XG4gIGxvZ2dlci5kZWJ1ZyhcImF1dG9Db25maWd1cmU6IGRvbmVcIiwge1xuICAgIG1vZGU6IHBvbGljeS5tb2RlLFxuICAgIGxha2ViYXNlUGx1Z2luUHJlc2VudDogcG9saWN5Lmxha2ViYXNlUGx1Z2luUHJlc2VudCxcbiAgICBkYXRhYmFzZVBsdWdpblByZXNlbnQ6IHBvbGljeS5kYXRhYmFzZVBsdWdpblByZXNlbnQsXG4gICAgcHJvdmlzaW9uZWQ6IHBvbGljeS5wcm92aXNpb24sXG4gICAgLi4ucmVkYWN0TGFrZWJhc2VDb25uZWN0aW9uKHJlc29sdmVkKSxcbiAgfSk7XG4gIGxvZ2dlci5pbmZvKFwicmVhZHlcIiwge1xuICAgIGF1dG9Db25maWd1cmU6IHBvbGljeS5tb2RlLFxuICAgIGxha2ViYXNlUGx1Z2luUHJlc2VudDogcG9saWN5Lmxha2ViYXNlUGx1Z2luUHJlc2VudCxcbiAgICBkYXRhYmFzZVBsdWdpblByZXNlbnQ6IHBvbGljeS5kYXRhYmFzZVBsdWdpblByZXNlbnQsXG4gICAgcHJvdmlzaW9uZWQ6IHBvbGljeS5wcm92aXNpb24sXG4gIH0pO1xuICByZXR1cm4gcmVzb2x2ZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBMYWtlYmFzZSBQb3N0Z3JlcyBjb25uZWN0aW9uIGluZm8sIHdyaXRlIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG9cbiAqIGBwcm9jZXNzLmVudmAsIGFuZCByZXR1cm4gdGhlIHJlY29yZC4gVXNlZCBieSB7QGxpbmsgYXV0b0NvbmZpZ3VyZX07IGNhbGxcbiAqIHtAbGluayBhcHBseUxha2ViYXNlRW52fSBkaXJlY3RseSB3aGVuIGZpbmVyIGNvbnRyb2wgaXMgbmVlZGVkIChhIGRpZmZlcmVudFxuICogYGF1dG9DcmVhdGVgIHBvbGljeSwgb3IgYSBjYWxsZXIgdGhhdCB3YW50cyB0aGUgZW52IHdpdGhvdXQgYm9vdGluZyBBcHBLaXQpLlxuICovXG5hc3luYyBmdW5jdGlvbiBhdXRvQ29uZmlndXJlTGFrZWJhc2UoXG4gIHByb3Zpc2lvbjogYm9vbGVhbixcbiAgc2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgYnVuZGxlUHJvZmlsZT86IHN0cmluZyxcbik6IFByb21pc2U8TGFrZWJhc2VDb25uZWN0aW9uPiB7XG4gIGxvZ2dlci5kZWJ1ZyhcImF1dG9Db25maWd1cmVMYWtlYmFzZTogYXBwbHlMYWtlYmFzZUVudlwiKTtcbiAgY29uc3QgeyByZXNvbHZlZCwgdXNlciB9ID0gYXdhaXQgYXBwbHlMYWtlYmFzZUVudih7IGJ1bmRsZVByb2ZpbGUgfSwgc2lnbmFsKTtcbiAgbG9nZ2VyLmRlYnVnKFwiYXV0b0NvbmZpZ3VyZUxha2ViYXNlOiBlbnYgYXBwbGllZFwiLCB7XG4gICAgLi4ucmVkYWN0TGFrZWJhc2VDb25uZWN0aW9uKHJlc29sdmVkKSxcbiAgICB1c2VyLFxuICAgIGVudjoge1xuICAgICAgTEFLRUJBU0VfRU5EUE9JTlQ6IHByb2Nlc3MuZW52LkxBS0VCQVNFX0VORFBPSU5ULFxuICAgICAgUEdIT1NUOiBwcm9jZXNzLmVudi5QR0hPU1QsXG4gICAgICBQR1BPUlQ6IHByb2Nlc3MuZW52LlBHUE9SVCxcbiAgICAgIFBHREFUQUJBU0U6IHByb2Nlc3MuZW52LlBHREFUQUJBU0UsXG4gICAgICBQR1VTRVI6IHByb2Nlc3MuZW52LlBHVVNFUixcbiAgICAgIFBHU1NMTU9ERTogcHJvY2Vzcy5lbnYuUEdTU0xNT0RFLFxuICAgIH0sXG4gIH0pO1xuICBsb2dnZXIuaW5mbyhcImVudiB1cGRhdGVkXCIsIHsgLi4ucmVkYWN0TGFrZWJhc2VDb25uZWN0aW9uKHJlc29sdmVkKSwgdXNlciB9KTtcbiAgaWYgKHByb3Zpc2lvbikge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImF1dG9Db25maWd1cmVMYWtlYmFzZTogcHJvdmlzaW9uQ2FjaGVTY2hlbWFcIiwgeyB1c2VyIH0pO1xuICAgIGF3YWl0IHByb3Zpc2lvbkNhY2hlU2NoZW1hKHVzZXIsIGxvZ2dlcik7XG4gICAgbG9nZ2VyLmRlYnVnKFwiYXV0b0NvbmZpZ3VyZUxha2ViYXNlOiBwcm92aXNpb25DYWNoZVNjaGVtYSBkb25lXCIpO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImF1dG9Db25maWd1cmVMYWtlYmFzZTogc2tpcCBwcm92aXNpb24gKG1vZGU9ZW52KVwiKTtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZWQ7XG59XG5cbmZ1bmN0aW9uIGFwcGx5RGVmYXVsdFByb2ZpbGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY29uZmlndXJlZCA9IHByb2Nlc3MuZW52LkRBVEFCUklDS1NfQ09ORklHX1BST0ZJTEU/LnRyaW0oKTtcbiAgY29uc3QgcmVzb2x2ZWQgPSBhdXRoUHJvZmlsZS5yZXNvbHZlUHJvZmlsZShjb25maWd1cmVkID8geyBwcm9maWxlOiBjb25maWd1cmVkIH0gOiB7fSk7XG4gIGlmICghcmVzb2x2ZWQpIHtcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuREFUQUJSSUNLU19DT05GSUdfUFJPRklMRTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHByb2Nlc3MuZW52LkRBVEFCUklDS1NfQ09ORklHX1BST0ZJTEUgPSByZXNvbHZlZC5uYW1lO1xuICByZXR1cm4gcmVzb2x2ZWQubmFtZTtcbn1cblxuLyoqIFdoZXRoZXIgYGNyZWF0ZUFwcGAgc2hvdWxkIGluamVjdCB0aGUgZGVmYXVsdCBtZW1vcnktZmlyc3QgY2FjaGUgc3RvcmFnZS4gKi9cbmZ1bmN0aW9uIHNob3VsZEluamVjdENhY2hlU3RvcmFnZShjb25maWc6IENyZWF0ZUFwcENvbmZpZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBjb25zdCBjYWNoZSA9IGNvbmZpZz8uY2FjaGU7XG4gIGlmIChjYWNoZT8uZW5hYmxlZCA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgaWYgKGNhY2hlPy5zdG9yYWdlKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWRhY3RMYWtlYmFzZUNvbm5lY3Rpb24ocmVzb2x2ZWQ6IExha2ViYXNlQ29ubmVjdGlvbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHtcbiAgICBwcm9qZWN0OiByZXNvbHZlZC5wcm9qZWN0LFxuICAgIGJyYW5jaDogcmVzb2x2ZWQuYnJhbmNoLFxuICAgIGVuZHBvaW50OiByZXNvbHZlZC5lbmRwb2ludCxcbiAgICBkYXRhYmFzZTogcmVzb2x2ZWQuZGF0YWJhc2UsXG4gICAgaG9zdDogcmVzb2x2ZWQuaG9zdCxcbiAgICBwb3J0OiByZXNvbHZlZC5wb3J0LFxuICAgIHNzbE1vZGU6IHJlc29sdmVkLnNzbE1vZGUsXG4gIH07XG59XG5cbi8qKiBCdWlsZCB0aGUge0BsaW5rIFJlc29sdmVkQXBwRW52fSBpbnRlcmNlcHRvcnMgcmVhZCwgZnJvbSB0aGUgYXV0by1jb25maWcgcmVzdWx0LiAqL1xuZnVuY3Rpb24gcmVzb2x2ZWRBcHBFbnYobGFrZWJhc2U6IExha2ViYXNlQ29ubmVjdGlvbiB8IHVuZGVmaW5lZCk6IFJlc29sdmVkQXBwRW52IHtcbiAgcmV0dXJuIHtcbiAgICAuLi4obGFrZWJhc2UgPyB7IGxha2ViYXNlIH0gOiB7fSksXG4gICAgLi4uKHByb2Nlc3MuZW52LkRBVEFCUklDS1NfSE9TVCA/IHsgZGF0YWJyaWNrc0hvc3Q6IHByb2Nlc3MuZW52LkRBVEFCUklDS1NfSE9TVCB9IDoge30pLFxuICB9O1xufVxuXG4vKiogTm9ybWFsaXplIHRoZSBgaW50ZXJjZXB0b3I/OiBJbnRlcmNlcHRvciB8IEludGVyY2VwdG9yW11gIG9wdGlvbiB0byBhbiBhcnJheS4gKi9cbmZ1bmN0aW9uIGludGVyY2VwdG9yTGlzdChpbnRlcmNlcHRvcjogQ3JlYXRlQXBwQ29uZmlnW1wiaW50ZXJjZXB0b3JcIl0pOiBJbnRlcmNlcHRvcltdIHtcbiAgaWYgKCFpbnRlcmNlcHRvcikgcmV0dXJuIFtdO1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShpbnRlcmNlcHRvcikgPyBpbnRlcmNlcHRvciA6IFtpbnRlcmNlcHRvcl07XG59XG5cbi8qKlxuICogQXV0by1jb25maWd1cmluZyBkcm9wLWluIGZvciBBcHBLaXQncyBgY3JlYXRlQXBwYDogc2FtZSBjb25maWcsIHNhbWUgdHlwZWRcbiAqIHBsdWdpbi1leHBvcnQgbWFwLCB3aXRoIHtAbGluayBhdXRvQ29uZmlndXJlfSBydW4gZmlyc3QuXG4gKlxuICogV2hlbiB7QGxpbmsgQ3JlYXRlQXBwQ29uZmlnLmludGVyY2VwdG9yfXMgYXJlIGdpdmVuLCBlYWNoIGlzIGludm9rZWQgd2l0aCBhblxuICoge0BsaW5rIEludGVyY2VwdG9yQ29udGV4dH0gQUZURVIgYXV0by1jb25maWd1cmF0aW9uIGNvbXB1dGVzIHRoZSBlbnYgYW5kIEJFRk9SRVxuICogQXBwS2l0IGJvb3RzIC0gc28gYW4gaW50ZXJjZXB0b3IgY2FuIHJlYWQgdGhlIHJlc29sdmVkIGNvbm5lY3Rpb24sIHJlZ2lzdGVyXG4gKiBsaWZlY3ljbGUgaGFuZGxlcnMsIGFuZCBzdGFydCBhdXhpbGlhcnkgd29yay4gQSBoaWRkZW4ge0BsaW5rIGxpZmVjeWNsZUJyaWRnZX1cbiAqIHBsdWdpbiBpcyBpbmplY3RlZCBzbyB0aG9zZSBgb25MaWZlY3ljbGVgIGhhbmRsZXJzIGZpcmUgb24gdGhlIGdlbnVpbmUgQXBwS2l0XG4gKiBldmVudHM7IGl0IGhhcyBubyBleHBvcnRzLCBzbyB0aGUgcmV0dXJuZWQge0BsaW5rIFBsdWdpbk1hcH0gaXMgdW5jaGFuZ2VkLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBsYWtlYmFzZSwgc2VydmVyIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuICogaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG4gKlxuICogY29uc3QgYXBwID0gYXdhaXQgYXBwa2l0LmNyZWF0ZUFwcCh7IHBsdWdpbnM6IFtzZXJ2ZXIoKSwgbGFrZWJhc2UoKV0gfSk7XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVBcHA8VCBleHRlbmRzIEFwcEtpdFBsdWdpbnM+KFxuICBjb25maWc/OiBDcmVhdGVBcHBDb25maWc8VD4sXG4pOiBQcm9taXNlPFBsdWdpbk1hcDxUPj4ge1xuICBjb25zdCBwbHVnaW5zID0gcGx1Z2luTmFtZXMoY29uZmlnKTtcbiAgY29uc3QgaW50ZXJjZXB0b3JzID0gaW50ZXJjZXB0b3JMaXN0KGNvbmZpZz8uaW50ZXJjZXB0b3IpO1xuICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IHN0YXJ0XCIsIHtcbiAgICBwbHVnaW5zLFxuICAgIHBsdWdpbkNvdW50OiBwbHVnaW5zLmxlbmd0aCxcbiAgICBpbnRlcmNlcHRvckNvdW50OiBpbnRlcmNlcHRvcnMubGVuZ3RoLFxuICAgIGF1dG9Db25maWd1cmU6IGNvbmZpZz8uYXV0b0NvbmZpZ3VyZSA/PyBcIihkZWZhdWx0KVwiLFxuICAgIGhhc09uUGx1Z2luc1JlYWR5OiB0eXBlb2YgY29uZmlnPy5vblBsdWdpbnNSZWFkeSA9PT0gXCJmdW5jdGlvblwiLFxuICB9KTtcblxuICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IGF1dG9Db25maWd1cmVcIik7XG4gIGNvbnN0IGJyYW5kQ29udGV4dCA9IGF3YWl0IGxvYWRCcmFuZENvbnRleHQoKTtcbiAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRlQXBwOiBicmFuZCBjb250ZXh0IGxvYWRlZFwiLCB7IG5hbWU6IGJyYW5kQ29udGV4dC5uYW1lIH0pO1xuICBjb25zdCBsYWtlYmFzZSA9IGF3YWl0IGF1dG9Db25maWd1cmUoY29uZmlnKTtcbiAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRlQXBwOiBhdXRvQ29uZmlndXJlIHJldHVybmVkXCIsIHtcbiAgICBsYWtlYmFzZTogbGFrZWJhc2UgPyByZWRhY3RMYWtlYmFzZUNvbm5lY3Rpb24obGFrZWJhc2UpIDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBhcHBDb25maWcgPSB7IC4uLmNvbmZpZyB9O1xuICBkZWxldGUgYXBwQ29uZmlnLmF1dG9Db25maWd1cmU7XG4gIGRlbGV0ZSBhcHBDb25maWcuaW50ZXJjZXB0b3I7XG5cbiAgaWYgKHNob3VsZEluamVjdENhY2hlU3RvcmFnZShjb25maWcpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRlQXBwOiBpbmplY3QgbWVtb3J5LWZpcnN0IGNhY2hlIHN0b3JhZ2VcIik7XG4gICAgY29uc3Qgc3RvcmFnZSA9IGF3YWl0IGNyZWF0ZUFwcEtpdENhY2hlU3RvcmFnZSh7XG4gICAgICBjYWNoZTogY29uZmlnPy5jYWNoZSxcbiAgICAgIHByZWZlckxha2ViYXNlOiBCb29sZWFuKGxha2ViYXNlKSB8fCB1c2VzUGx1Z2luKGNvbmZpZywgTEFLRUJBU0VfUExVR0lOKSxcbiAgICB9KTtcbiAgICBhcHBDb25maWcuY2FjaGUgPSB7IC4uLmNvbmZpZz8uY2FjaGUsIHN0b3JhZ2UgfTtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IG1lbW9yeS1maXJzdCBjYWNoZSBzdG9yYWdlIHJlYWR5XCIsIHtcbiAgICAgIHBlcnNpc3RlbnQ6IHN0b3JhZ2UuaXNQZXJzaXN0ZW50KCksXG4gICAgfSk7XG4gIH1cblxuICBpZiAoaW50ZXJjZXB0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImNyZWF0ZUFwcDogbm8gaW50ZXJjZXB0b3JzOyBkZWxlZ2F0aW5nIHRvIEFwcEtpdCBjcmVhdGVBcHBcIiwge1xuICAgICAgcGx1Z2luczogcGx1Z2luTmFtZXMoYXBwQ29uZmlnKSxcbiAgICB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBraXRDcmVhdGVBcHA8VD4oYXBwQ29uZmlnKTtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IEFwcEtpdCBjcmVhdGVBcHAgcmV0dXJuZWRcIiwge1xuICAgICAgZXhwb3J0S2V5czogT2JqZWN0LmtleXMocmVzdWx0ID8/IHt9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQnVpbGQgdGhlIGNvbnRleHQgZnJvbSB0aGUgY29tcHV0ZWQgZW52LCBydW4gZWFjaCBpbnRlcmNlcHRvciAodGhleSByZWdpc3RlclxuICAvLyBsaWZlY3ljbGUgaGFuZGxlcnMgKyBiaW5kIHByb2Nlc3NlcyksIHRoZW4gaW5qZWN0IHRoZSBicmlkZ2UgdGhhdCByZWxheXMgdGhlXG4gIC8vIFJFQUwgQXBwS2l0IGxpZmVjeWNsZSBpbnRvIGBydW50aW1lLmVtaXRMaWZlY3ljbGVgIGR1cmluZyBpdHMgYHNldHVwKClgLlxuICBjb25zdCBlbnYgPSByZXNvbHZlZEFwcEVudihsYWtlYmFzZSk7XG4gIGxvZ2dlci5kZWJ1ZyhcImNyZWF0ZUFwcDogaW50ZXJjZXB0b3IgY29udGV4dFwiLCB7XG4gICAgaGFzTGFrZWJhc2U6IEJvb2xlYW4oZW52Lmxha2ViYXNlKSxcbiAgICBkYXRhYnJpY2tzSG9zdDogZW52LmRhdGFicmlja3NIb3N0LFxuICAgIGludGVyY2VwdG9yQ291bnQ6IGludGVyY2VwdG9ycy5sZW5ndGgsXG4gIH0pO1xuICBjb25zdCBydW50aW1lOiBJbnRlcmNlcHRvclJ1bnRpbWUgPSBjcmVhdGVJbnRlcmNlcHRvckNvbnRleHQoZW52KTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcmNlcHRvcnMubGVuZ3RoOyBpKyspIHtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IHJ1biBpbnRlcmNlcHRvclwiLCB7IGluZGV4OiBpLCBvZjogaW50ZXJjZXB0b3JzLmxlbmd0aCB9KTtcbiAgICBhd2FpdCBpbnRlcmNlcHRvcnNbaV0hKHJ1bnRpbWUuY29udGV4dCk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRlQXBwOiBpbnRlcmNlcHRvciBkb25lXCIsIHsgaW5kZXg6IGkgfSk7XG4gIH1cbiAgLy8gQXBwZW5kIHRoZSBicmlkZ2UgdG8gdGhlIHBsdWdpbnMgdHVwbGUuIEl0IGlzIGhpZGRlbiBhbmQgZXhwb3J0cyBub3RoaW5nLCBzb1xuICAvLyB0aGUgcmV0dXJuZWQgbWFwIHN0aWxsIG1hdGNoZXMgYFBsdWdpbk1hcDxUPmA7IHRoZSBjYXN0ICh0aHJvdWdoIGB1bmtub3duYCkgaXNcbiAgLy8gb25seSBiZWNhdXNlIGFwcGVuZGluZyB3aWRlbnMgdGhlIHR1cGxlIHR5cGUgYmV5b25kIGBUYC5cbiAgYXBwQ29uZmlnLnBsdWdpbnMgPSBbLi4uKGFwcENvbmZpZy5wbHVnaW5zID8/IFtdKSwgbGlmZWN5Y2xlQnJpZGdlKHsgcnVudGltZSB9KV0gYXMgdW5rbm93biBhcyBUO1xuICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IGxpZmVjeWNsZSBicmlkZ2UgaW5qZWN0ZWQ7IGRlbGVnYXRpbmcgdG8gQXBwS2l0IGNyZWF0ZUFwcFwiLCB7XG4gICAgcGx1Z2luczogcGx1Z2luTmFtZXMoYXBwQ29uZmlnKSxcbiAgfSk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcGtpdENyZWF0ZUFwcDxUPihhcHBDb25maWcpO1xuICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IEFwcEtpdCBjcmVhdGVBcHAgcmV0dXJuZWRcIiwge1xuICAgIGV4cG9ydEtleXM6IE9iamVjdC5rZXlzKHJlc3VsdCA/PyB7fSksXG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFRoZSBBcHBLaXQgcGVyLXJlcXVlc3QgZXhlY3V0aW9uIGNvbnRleHQgcmV0dXJuZWQgYnkgYGdldEV4ZWN1dGlvbkNvbnRleHQoKWBcbiAqIC0gdGhlIE9CTy1zY29wZWQgd29ya3NwYWNlIGNsaWVudCBwbHVzIHRoZSBzdXJyb3VuZGluZyByZXF1ZXN0IG1ldGFkYXRhLlxuICogRGVyaXZlZCBmcm9tIEFwcEtpdCdzIG93biByZXR1cm4gdHlwZSBzbyBpdCB0cmFja3MgdGhlIGluc3RhbGxlZCB2ZXJzaW9uLCBhbmRcbiAqIHJlLWV4cG9ydGVkIGhlcmUgc28gYWRkLW9uIHBhY2thZ2VzIGNhbiB0eXBlIGEgY29udGV4dCBwYXJhbWV0ZXIgd2l0aG91dCBlYWNoXG4gKiByZS1kZXJpdmluZyB0aGUgc2FtZSBgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RXhlY3V0aW9uQ29udGV4dD5gIGlubGluZS5cbiAqL1xuZXhwb3J0IHR5cGUgRXhlY3V0aW9uQ29udGV4dExpa2UgPSBSZXR1cm5UeXBlPHR5cGVvZiBnZXRFeGVjdXRpb25Db250ZXh0PjtcblxuLyoqXG4gKiBUaGUgYXV0aC1zY29wZWQgRGF0YWJyaWNrcyB3b3Jrc3BhY2UgY2xpZW50IGNhcnJpZWQgb24gYW5cbiAqIGBFeGVjdXRpb25Db250ZXh0TGlrZWAgKGBnZXRFeGVjdXRpb25Db250ZXh0KCkuY2xpZW50YCkuIFR5cGVkIHN0cnVjdHVyYWxseVxuICogb2ZmIEFwcEtpdCBzbyBjb25zdW1lcnMgZG9uJ3QgdGFrZSBhIGRpcmVjdCBgQGRhdGFicmlja3Mvc2RrLWV4cGVyaW1lbnRhbGBcbiAqIGRlcGVuZGVuY3kgLSB0aGUgZGVwIGZsb3dzIGluIHRyYW5zaXRpdmVseSB0aHJvdWdoIGBAZGF0YWJyaWNrcy9hcHBraXRgLlxuICovXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VDbGllbnRMaWtlID0gRXhlY3V0aW9uQ29udGV4dExpa2VbXCJjbGllbnRcIl07XG5cbi8qKlxuICogVGhlIGN1cnJlbnQgQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0LCBvciBgdW5kZWZpbmVkYCB3aGVuIEFwcEtpdCBpc24ndFxuICogaW5pdGlhbGl6ZWQgKG91dHNpZGUgYSByZXF1ZXN0IHNjb3BlKS4gU3dhbGxvd3MgQXBwS2l0J3NcbiAqIHtAbGluayBJbml0aWFsaXphdGlvbkVycm9yfTsgYW55IG90aGVyIGVycm9yIHByb3BhZ2F0ZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuICogaW1wb3J0IHsgY3JlYXRlV29ya3NwYWNlQ2xpZW50IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuICpcbiAqIC8vIE9CTy1zY29wZWQgaW5zaWRlIGEgcmVxdWVzdCwgc2VydmljZSBwcmluY2lwYWwgZnJvbSBhIENMSSBvciBzY3JpcHQuXG4gKiBjb25zdCBjbGllbnQgPSBhcHBraXQudHJ5R2V0RXhlY3V0aW9uQ29udGV4dCgpPy5jbGllbnQgPz8gY3JlYXRlV29ya3NwYWNlQ2xpZW50KCk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlHZXRFeGVjdXRpb25Db250ZXh0KCk6IEV4ZWN1dGlvbkNvbnRleHRMaWtlIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjdHggPSBnZXRFeGVjdXRpb25Db250ZXh0KCk7XG4gICAgaWYgKGN0eD8uY2xpZW50KSB7XG4gICAgICByZXR1cm4gY3R4O1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIEluaXRpYWxpemF0aW9uRXJyb3IpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGEgYmFyZSBBcHBLaXQgYXBwIChubyBwbHVnaW5zKSB3aGVuIG5vbmUgaXMgcnVubmluZyB5ZXQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuICpcbiAqIGF3YWl0IGFwcGtpdC5lbnN1cmVJbml0aWFsaXplZCgpO1xuICogY29uc3QgY2xpZW50ID0gYXBwa2l0LnRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKT8uY2xpZW50O1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlSW5pdGlhbGl6ZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICh0cnlHZXRFeGVjdXRpb25Db250ZXh0KCkpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJlbnN1cmVJbml0aWFsaXplZDogYWxyZWFkeSBpbml0aWFsaXplZFwiKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbG9nZ2VyLmRlYnVnKFwiZW5zdXJlSW5pdGlhbGl6ZWQ6IGJvb3RpbmcgYmFyZSBBcHBLaXQgYXBwXCIpO1xuICBhd2FpdCBjcmVhdGVBcHAoeyBwbHVnaW5zOiBbXSwgYXV0b0NvbmZpZ3VyZTogZmFsc2UgfSk7XG4gIGxvZ2dlci5kZWJ1ZyhcImVuc3VyZUluaXRpYWxpemVkOiBiYXJlIEFwcEtpdCBpbml0aWFsaXphdGlvbiBjb21wbGV0ZVwiKTtcbn1cbiJdfQ==
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwa2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGtpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsT0FBTyxFQUNMLFNBQVMsSUFBSSxlQUFlLEVBQzVCLG1CQUFtQixFQUNuQixtQkFBbUIsR0FDcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUk1QixPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUNMLHdCQUF3QixFQUd4QixlQUFlLEdBRWhCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBMkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXBDLGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLFNBQTZDLE9BQU8sQ0FBQyxHQUFHLEVBQ3hELE1BQWMsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUUzQixJQUFJLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzdELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsT0FBTyxDQUNMLFVBQVUsS0FBSyx5QkFBeUIsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLENBQzlGLENBQUM7QUFDSixDQUFDO0FBOENELE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUVuQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLHlCQUF5QixHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7QUFFOUMsU0FBUyxVQUFVLENBQ2pCLE1BQXNDLEVBQ3RDLElBQVk7SUFFWixPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxvREFBb0Q7QUFDcEQsU0FBUyxXQUFXLENBQUMsTUFBbUM7SUFDdEQsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FDakMsTUFBMkIsRUFDM0IsTUFBb0I7SUFFcEIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztJQUM1QyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTSxNQUFNLEdBQUcsMEJBQTBCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMxRSxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFO1FBQ25DLEdBQUcsTUFBTTtRQUNULE9BQU87UUFDUCxTQUFTLEVBQUUseUJBQXlCO1FBQ3BDLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO0tBQzlCLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbkIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQzFCLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxxQkFBcUI7WUFDbkQscUJBQXFCLEVBQUUsTUFBTSxDQUFDLHFCQUFxQjtZQUNuRCxXQUFXLEVBQUUsS0FBSztZQUNsQixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7U0FDcEMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7SUFDekMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7SUFFdEYsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRTtRQUM5QyxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO0tBQ2xCLENBQUMsQ0FBQztJQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0scUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUU7UUFDbEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxxQkFBcUI7UUFDbkQscUJBQXFCLEVBQUUsTUFBTSxDQUFDLHFCQUFxQjtRQUNuRCxXQUFXLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDN0IsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7S0FDdEMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDbkIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQzFCLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxxQkFBcUI7UUFDbkQscUJBQXFCLEVBQUUsTUFBTSxDQUFDLHFCQUFxQjtRQUNuRCxXQUFXLEVBQUUsTUFBTSxDQUFDLFNBQVM7S0FDOUIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsS0FBSyxVQUFVLHFCQUFxQixDQUNsQyxTQUFrQixFQUNsQixNQUFtQixFQUNuQixhQUFzQjtJQUV0QixNQUFNLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDeEQsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0UsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRTtRQUNqRCxHQUFHLHdCQUF3QixDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJO1FBQ0osR0FBRyxFQUFFO1lBQ0gsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUI7WUFDaEQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTtZQUMxQixNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNO1lBQzFCLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVU7WUFDbEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTtZQUMxQixTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTO1NBQ2pDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUUsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUNuRSxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsbUJBQW1CO0lBQzFCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakUsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7UUFDN0MsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztJQUN0RCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQztBQUVELGdGQUFnRjtBQUNoRixTQUFTLHdCQUF3QixDQUFDLE1BQW1DO0lBQ25FLE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUM7SUFDNUIsSUFBSSxLQUFLLEVBQUUsT0FBTyxLQUFLLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQyxJQUFJLEtBQUssRUFBRSxPQUFPO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDakMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxRQUE0QjtJQUM1RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1FBQ3pCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtRQUN2QixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7UUFDM0IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1FBQzNCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtRQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7UUFDbkIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO0tBQzFCLENBQUM7QUFDSixDQUFDO0FBRUQsdUZBQXVGO0FBQ3ZGLFNBQVMsY0FBYyxDQUFDLFFBQXdDO0lBQzlELE9BQU87UUFDTCxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDeEYsQ0FBQztBQUNKLENBQUM7QUFFRCxvRkFBb0Y7QUFDcEYsU0FBUyxlQUFlLENBQUMsV0FBMkM7SUFDbEUsSUFBSSxDQUFDLFdBQVc7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM1QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FDN0IsTUFBMkI7SUFFM0IsNkJBQTZCLEVBQUUsQ0FBQztJQUNoQyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1FBQy9CLE9BQU87UUFDUCxXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDM0IsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLE1BQU07UUFDckMsYUFBYSxFQUFFLE1BQU0sRUFBRSxhQUFhLElBQUksV0FBVztRQUNuRCxpQkFBaUIsRUFBRSxPQUFPLE1BQU0sRUFBRSxjQUFjLEtBQUssVUFBVTtLQUNoRSxDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDekMsTUFBTSxZQUFZLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0UsTUFBTSxRQUFRLEdBQUcsTUFBTSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUNoRCxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztLQUNwRSxDQUFDLENBQUM7SUFFSCxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDaEMsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDO0lBQy9CLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQztJQUU3QixJQUFJLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sT0FBTyxHQUFHLE1BQU0sd0JBQXdCLENBQUM7WUFDN0MsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLO1lBQ3BCLGNBQWMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUM7U0FDekUsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoRCxNQUFNLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxFQUFFO1lBQzFELFVBQVUsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFO1NBQ25DLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyw0REFBNEQsRUFBRTtZQUN6RSxPQUFPLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQztTQUNoQyxDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBSSxTQUFTLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxFQUFFO1lBQ25ELFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7U0FDdEMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELCtFQUErRTtJQUMvRSwrRUFBK0U7SUFDL0UsMkVBQTJFO0lBQzNFLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFO1FBQzdDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNsQyxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLE1BQU07S0FDdEMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQXVCLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDN0MsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sWUFBWSxDQUFDLENBQUMsQ0FBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELCtFQUErRTtJQUMvRSxpRkFBaUY7SUFDakYsMkRBQTJEO0lBQzNELFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFpQixDQUFDO0lBQ2pHLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0VBQXNFLEVBQUU7UUFDbkYsT0FBTyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUM7S0FDaEMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUksU0FBUyxDQUFDLENBQUM7SUFDbkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRTtRQUNuRCxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0tBQ3RDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFtQkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFDbEMsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDaEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQjtJQUNyQyxJQUFJLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztRQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDdkQsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDM0QsTUFBTSxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcHBLaXQgcnVudGltZSBnbHVlOiB0aGUgYXV0by1jb25maWd1cmluZyBgY3JlYXRlQXBwYCBkcm9wLWluLCBwbHVzIHRoZVxuICogcGVyLXJlcXVlc3QgZXhlY3V0aW9uIGNvbnRleHQgaGVscGVycyBhbmQgdHlwZXMgZGVyaXZlZCBmcm9tIGl0LlxuICpcbiAqIGBjcmVhdGVBcHBgIHJ1bnMgZGJ4LXRvb2xzIGF1dG8tY29uZmlndXJhdGlvbiwgdGhlbiBkZWxlZ2F0ZXMgdG8gQXBwS2l0J3Mgb3duXG4gKiBgY3JlYXRlQXBwYCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhbmQgdGhlIHNhbWUgdHlwZWQgcGx1Z2luLWV4cG9ydCBtYXAuXG4gKiBEcm9wIGl0IGluIGFzIGEgb25lLWZvci1vbmUgcmVwbGFjZW1lbnQ6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGxha2ViYXNlLCBzZXJ2ZXIgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG4gKiBpbXBvcnQgeyBhcHBraXQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbiAqXG4gKiBhd2FpdCBhcHBraXQuY3JlYXRlQXBwKHsgcGx1Z2luczogW3NlcnZlcigpLCBsYWtlYmFzZSgpXSB9KTtcbiAqIGBgYFxuICpcbiAqIEF1dG8tY29uZmlndXJhdGlvbiBydW5zIEJFRk9SRSBkZWxlZ2F0aW5nIHNvIHBsdWdpbnMgc2VlIGEgZnVsbHkgcG9wdWxhdGVkXG4gKiBgcHJvY2Vzcy5lbnZgIGR1cmluZyB0aGVpciBzeW5jaHJvbm91cyBgc2V0dXAoKWAuIExha2ViYXNlIFBvc3RncmVzIHJlc29sdXRpb25cbiAqIHJ1bnMgd2hlbiBhIG5hdGl2ZSBgbGFrZWJhc2VgIG9yIGBkYXRhYmFzZWAgcGx1Z2luIGlzIHByZXNlbnQsIG9yIHdoZW5cbiAqIHtAbGluayBBdXRvQ29uZmlndXJlTW9kZX0gaXMgc2V0IGV4cGxpY2l0bHkgb24gdGhlIGNvbmZpZyBvYmplY3QuXG4gKlxuICogYGdldEV4ZWN1dGlvbkNvbnRleHQoKWAgaXMgQXBwS2l0J3Mgb3duIGFjY2Vzc29yIGZvciB0aGUgT0JPLXNjb3BlZCB3b3Jrc3BhY2VcbiAqIGNsaWVudCArIHJlcXVlc3QgbWV0YWRhdGE7IHRoZSB3cmFwcGVycyBoZXJlIG1ha2UgaXQgc2FmZSB0byBjYWxsIG91dHNpZGUgYVxuICogcmVxdWVzdCBzY29wZSAoe0BsaW5rIHRyeUdldEV4ZWN1dGlvbkNvbnRleHR9KSBhbmQgdG8gbGF6aWx5IGJvb3QgYSBiYXJlIGFwcFxuICogKHtAbGluayBlbnN1cmVJbml0aWFsaXplZH0pLCBhbmQgcmUtZXhwb3J0IHRoZSBkZXJpdmVkIHR5cGVzIHNvIGFkZC1vblxuICogcGFja2FnZXMgY2FuIHR5cGUgYSBjb250ZXh0IC8gY2xpZW50IHdpdGhvdXQgcmUtZGVyaXZpbmcgdGhlbSBpbmxpbmUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIGNyZWF0ZUFwcCBhcyBhcHBraXRDcmVhdGVBcHAsXG4gIGdldEV4ZWN1dGlvbkNvbnRleHQsXG4gIEluaXRpYWxpemF0aW9uRXJyb3IsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbi8vIEFwcEtpdCdzIHJvb3QgYmFycmVsIHJlLWV4cG9ydHMgYFBsdWdpbkRhdGFgIGJ1dCBub3QgYFBsdWdpbk1hcGA7IHRoZSBwYWNrYWdlXG4vLyBwdWJsaXNoZXMgdGhpcyBzdWJwYXRoIGZvciBleGFjdGx5IHRoYXQgdHlwZS5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTWFwIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdC9kaXN0L3NoYXJlZC9zcmMvcGx1Z2luXCI7XG5pbXBvcnQgeyBwcm9maWxlIGFzIGF1dGhQcm9maWxlIH0gZnJvbSBcIkBkYngtdG9vbHMvYXV0aFwiO1xuaW1wb3J0IHsgYXN5bmNVdGlscywgZW52aXJvbm1lbnRVdGlscywgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcblxuaW1wb3J0IHsgcmVzb2x2ZUF1dG9Db25maWd1cmVQb2xpY3kgfSBmcm9tIFwiLi9fYXV0by1jb25maWd1cmUudHNcIjtcbmltcG9ydCB7IGxvYWRCcmFuZENvbnRleHQgfSBmcm9tIFwiLi9icmFuZC1jb250ZXh0LnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVBcHBLaXRDYWNoZVN0b3JhZ2UgfSBmcm9tIFwiLi9jYWNoZS1zdG9yYWdlLnRzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVJbnRlcmNlcHRvckNvbnRleHQsXG4gIHR5cGUgSW50ZXJjZXB0b3IsXG4gIHR5cGUgSW50ZXJjZXB0b3JSdW50aW1lLFxuICBsaWZlY3ljbGVCcmlkZ2UsXG4gIHR5cGUgUmVzb2x2ZWRBcHBFbnYsXG59IGZyb20gXCIuL2ludGVyY2VwdG9yLnRzXCI7XG5pbXBvcnQgeyBpbnN0YWxsQXNVc2VyRGV2ZWxvcG1lbnRQYXRjaCB9IGZyb20gXCIuL2lkZW50aXR5LnRzXCI7XG5pbXBvcnQgeyBhcHBseUxha2ViYXNlRW52LCB0eXBlIExha2ViYXNlQ29ubmVjdGlvbiB9IGZyb20gXCIuL2xha2ViYXNlLXJlc29sdmVyLnRzXCI7XG5pbXBvcnQgeyBwcm92aXNpb25DYWNoZVNjaGVtYSB9IGZyb20gXCIuL3Byb3Zpc2lvbi50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiYXBwa2l0XCIpO1xuXG4vKiogRGV0ZWN0IHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGFzIGEgZGVwbG95ZWQgRGF0YWJyaWNrcyBBcHAuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhYnJpY2tzQXBwRW52KFxuICBzb3VyY2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gPSBwcm9jZXNzLmVudixcbiAgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuKTogYm9vbGVhbiB7XG4gIGlmIChlbnZpcm9ubWVudFV0aWxzLmlzRGF0YWJyaWNrc0FwcEVudihzb3VyY2UpKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IGN3ZC5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgcmV0dXJuIChcbiAgICBub3JtYWxpemVkID09PSBcIi9hcHAvcHl0aG9uL3NvdXJjZV9jb2RlXCIgfHwgbm9ybWFsaXplZC5zdGFydHNXaXRoKFwiL2FwcC9weXRob24vc291cmNlX2NvZGUvXCIpXG4gICk7XG59XG5cbnR5cGUgQXBwS2l0Q3JlYXRlQXBwQ29uZmlnID0gTm9uTnVsbGFibGU8UGFyYW1ldGVyczx0eXBlb2YgYXBwa2l0Q3JlYXRlQXBwPlswXT47XG50eXBlIEFwcEtpdFBsdWdpbnMgPSBOb25OdWxsYWJsZTxBcHBLaXRDcmVhdGVBcHBDb25maWdbXCJwbHVnaW5zXCJdPjtcblxuLyoqXG4gKiBXaGF0IGF1dG8tY29uZmlndXJhdGlvbiBkb2VzIGJlZm9yZSBBcHBLaXQgYm9vdHMuXG4gKlxuICogLSBgXCJwcm92aXNpb25cImA6IHJlc29sdmUgdGhlIExha2ViYXNlIGNvbm5lY3Rpb24gaW50byBgcHJvY2Vzcy5lbnZgLCB0aGVuXG4gKiAgIGdyYW50IHRoZSBBcHBLaXQgY2FjaGUgc2NoZW1hIHRvIHRoZSBjb25uZWN0aW5nIHJvbGUuXG4gKiAtIGBcImVudlwiYDogcmVzb2x2ZSB0aGUgTGFrZWJhc2UgY29ubmVjdGlvbiBpbnRvIGBwcm9jZXNzLmVudmAgb25seS5cbiAqXG4gKiBPbWl0IGl0IHRvIHJlc29sdmUgZGF0YWJhc2UgZW52aXJvbm1lbnQgd2hlbiBhIG5hdGl2ZSBgbGFrZWJhc2VgIG9yXG4gKiBgZGF0YWJhc2VgIHBsdWdpbiBpcyByZWdpc3RlcmVkLiBJbXBsaWNpdCBjYWNoZS1zY2hlbWEgZ3JhbnRzIHJlbWFpbiBnYXRlZCBvblxuICogYGxha2ViYXNlYDsgYGRhdGFiYXNlYCBvd25zIGl0cyBvd24gcG9vbCBhbmQgZG9lcyBub3QgYnJvYWRlbiBncmFudHMuIFNldCB0aGVcbiAqIG1vZGUgZXhwbGljaXRseSB0byBydW4gcmVnYXJkbGVzcyBvZiB0aGUgcGx1Z2luIGxpc3QsIG9yIHBhc3MgYGZhbHNlYCB0byBza2lwXG4gKiBhdXRvLWNvbmZpZ3VyYXRpb24gZW50aXJlbHkuXG4gKlxuICogU2V0IGl0IEVYUExJQ0lUTFkgb24gYW4gYXBwIHRoYXQgaGFzIG5vIGBsYWtlYmFzZSgpYCBwbHVnaW4gYnV0IHN0aWxsIHdhbnRzXG4gKiBBcHBLaXQncyBQRVJTSVNURU5UIGNhY2hlLiBBcHBLaXQgcGlja3MgTGFrZWJhc2UgZm9yIGBDYWNoZU1hbmFnZXJgIG9ubHkgd2hlblxuICogYGNyZWF0ZUxha2ViYXNlUG9vbCgpYCBjYW4gYnVpbGQgYSBwb29sLCBhbmQgdGhhdCByZWFkcyBgTEFLRUJBU0VfRU5EUE9JTlRgIC9cbiAqIGBQR0hPU1RgIC8gYFBHREFUQUJBU0VgIHN0cmFpZ2h0IGZyb20gYHByb2Nlc3MuZW52YCAtIHNvIHdpdGhvdXQgdGhpcyBzdGVwIHRoZVxuICogY2FjaGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byBpbi1tZW1vcnksIGFuZCBhbnl0aGluZyBpdCBob2xkcyAoYSBzZXNzaW9uXG4gKiBzaWduaW5nIGtleSwgYSBvbmUtdGltZSBjb2RlKSBpcyBsb3N0IG9uIHJlc3RhcnQuIGBcImVudlwiYCBpcyB0aGUgcmlnaHQgbW9kZVxuICogdGhlcmU6IHRoZSBhcHAgU1AgY2Fubm90IGdyYW50IG9uIHRoZSBjYWNoZSBzY2hlbWEgYW55d2F5LlxuICovXG5leHBvcnQgdHlwZSBBdXRvQ29uZmlndXJlTW9kZSA9IFwiZW52XCIgfCBcInByb3Zpc2lvblwiO1xuXG4vKiogQXBwS2l0J3MgYGNyZWF0ZUFwcGAgY29uZmlnIHBsdXMgdGhlIGRieC10b29scyBhdXRvLWNvbmZpZ3VyYXRpb24gc3dpdGNoLiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlQXBwQ29uZmlnPFQgZXh0ZW5kcyBBcHBLaXRQbHVnaW5zID0gQXBwS2l0UGx1Z2lucz4gPSBPbWl0PFxuICBBcHBLaXRDcmVhdGVBcHBDb25maWcsXG4gIFwicGx1Z2luc1wiIHwgXCJvblBsdWdpbnNSZWFkeVwiXG4+ICYge1xuICBwbHVnaW5zPzogVDtcbiAgb25QbHVnaW5zUmVhZHk/OiAoYXBwa2l0OiBQbHVnaW5NYXA8VD4pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAvKiogQXV0by1jb25maWd1cmF0aW9uIHRvIHJ1biBiZWZvcmUgQXBwS2l0IGJvb3RzLiBEZWZhdWx0cyB0byBgXCJwcm92aXNpb25cImAuICovXG4gIGF1dG9Db25maWd1cmU/OiBBdXRvQ29uZmlndXJlTW9kZSB8IGZhbHNlO1xuICAvKipcbiAgICogT25lIG9yIG1hbnkge0BsaW5rIEludGVyY2VwdG9yfXMgaGFuZGVkIGFuIHtAbGluayBJbnRlcmNlcHRvckNvbnRleHR9IG9uY2VcbiAgICogYXV0by1jb25maWd1cmF0aW9uIGhhcyBjb21wdXRlZCB0aGUgZW52LiBFYWNoIHJlY2VpdmVzIHRoZSByZXNvbHZlZCBlbnYsIGFuXG4gICAqIEFwcEtpdCBsaWZlY3ljbGUgaG9vay4gU2VlIGAuL2ludGVyY2VwdG9yYC4gVGhlIHR1bm5lbCBpcyB0aGUgcHJpbWFyeVxuICAgKiBjb25zdW1lci5cbiAgICovXG4gIGludGVyY2VwdG9yPzogSW50ZXJjZXB0b3IgfCBJbnRlcmNlcHRvcltdO1xufTtcblxuY29uc3QgTEFLRUJBU0VfUExVR0lOID0gXCJsYWtlYmFzZVwiO1xuXG4vKipcbiAqIFVwcGVyIGJvdW5kIG9uIGJvb3QtdGltZSBhdXRvLWNvbmZpZ3VyYXRpb24uIEl0IHJ1bnMgYXMgdGhlIHNlcnZpY2UgcHJpbmNpcGFsXG4gKiBiZWZvcmUgYW55IHBsdWdpbiBpcyBjb25zdHJ1Y3RlZCwgc28gaXQgc2l0cyBvdXRzaWRlIEFwcEtpdCdzIGludGVyY2VwdG9yXG4gKiBjaGFpbiBhbmQgaW5oZXJpdHMgbm8gdGltZW91dCwgcmV0cnksIG9yIHRlbGVtZXRyeSBmcm9tIGl0LiBUaGUgYnVkZ2V0IGNvdmVyc1xuICogdGhlIHJlc29sdmVyJ3Mgb3duIHdvcnN0IGNhc2UgKGNyZWF0ZSBhIHByb2plY3QsIHRoZW4gd2FpdCBmb3IgaXRzIGVuZHBvaW50KVxuICogcGx1cyB0aGUgY2FjaGUtc2NoZW1hIGdyYW50cy5cbiAqL1xuY29uc3QgQVVUT19DT05GSUdVUkVfVElNRU9VVF9NUyA9IDExICogNjBfMDAwO1xuXG5mdW5jdGlvbiB1c2VzUGx1Z2luPFQgZXh0ZW5kcyBBcHBLaXRQbHVnaW5zPihcbiAgY29uZmlnOiBDcmVhdGVBcHBDb25maWc8VD4gfCB1bmRlZmluZWQsXG4gIG5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihjb25maWc/LnBsdWdpbnM/LnNvbWUoKGVudHJ5KSA9PiBlbnRyeS5uYW1lID09PSBuYW1lKSk7XG59XG5cbi8qKiBQbHVnaW4gbmFtZXMgZm9yIGJvb3QgbG9ncyAob3JkZXIgcHJlc2VydmVkKS4gKi9cbmZ1bmN0aW9uIHBsdWdpbk5hbWVzKGNvbmZpZzogQ3JlYXRlQXBwQ29uZmlnIHwgdW5kZWZpbmVkKTogc3RyaW5nW10ge1xuICByZXR1cm4gKGNvbmZpZz8ucGx1Z2lucyA/PyBbXSkubWFwKChlbnRyeSkgPT4gZW50cnkubmFtZSk7XG59XG5cbi8qKlxuICogUnVuIGVuYWJsZWQgYXV0by1jb25maWd1cmF0aW9uIHN0ZXBzIHdpdGhvdXQgY2FsbGluZyBBcHBLaXQncyBgY3JlYXRlQXBwYC5cbiAqXG4gKiBMYWtlYmFzZSBQb3N0Z3JlcyByZXNvbHZlcyB3aGVuIHtAbGluayBDcmVhdGVBcHBDb25maWcuYXV0b0NvbmZpZ3VyZX0gaXMgc2V0XG4gKiBleHBsaWNpdGx5IG9yIGEgbmF0aXZlIGBsYWtlYmFzZWAvYGRhdGFiYXNlYCBwbHVnaW4gaXMgbGlzdGVkIGluXG4gKiBgY29uZmlnLnBsdWdpbnNgLiBgc2lnbmFsYCBjYW5jZWxzIHRoZSByZXNvbHV0aW9uOyBpdCBpcyBjb21iaW5lZCB3aXRoIGFuXG4gKiBpbnRlcm5hbCBib290IHRpbWVvdXQgZWl0aGVyIHdheS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG4gKlxuICogLy8gUG9wdWxhdGUgUEdIT1NUIC8gUEdEQVRBQkFTRSAvIExBS0VCQVNFX0VORFBPSU5UIHdpdGhvdXQgYm9vdGluZyBBcHBLaXQuXG4gKiBhd2FpdCBhcHBraXQuYXV0b0NvbmZpZ3VyZSh7IGF1dG9Db25maWd1cmU6IFwiZW52XCIgfSk7XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhdXRvQ29uZmlndXJlPFQgZXh0ZW5kcyBBcHBLaXRQbHVnaW5zPihcbiAgY29uZmlnPzogQ3JlYXRlQXBwQ29uZmlnPFQ+LFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbik6IFByb21pc2U8TGFrZWJhc2VDb25uZWN0aW9uIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGJ1bmRsZVByb2ZpbGUgPSBhcHBseURlZmF1bHRQcm9maWxlKCk7XG4gIGNvbnN0IHBsdWdpbnMgPSBwbHVnaW5OYW1lcyhjb25maWcpO1xuICBjb25zdCBwb2xpY3kgPSByZXNvbHZlQXV0b0NvbmZpZ3VyZVBvbGljeShwbHVnaW5zLCBjb25maWc/LmF1dG9Db25maWd1cmUpO1xuICBsb2dnZXIuZGVidWcoXCJhdXRvQ29uZmlndXJlOiBzdGFydFwiLCB7XG4gICAgLi4ucG9saWN5LFxuICAgIHBsdWdpbnMsXG4gICAgdGltZW91dE1zOiBBVVRPX0NPTkZJR1VSRV9USU1FT1VUX01TLFxuICAgIGNhbGxlclNpZ25hbDogQm9vbGVhbihzaWduYWwpLFxuICB9KTtcblxuICBpZiAoIXBvbGljeS5zaG91bGRSZXNvbHZlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiYXV0b0NvbmZpZ3VyZTogc2tpcFwiLCB7IC4uLnBvbGljeSwgcGx1Z2lucyB9KTtcbiAgICBsb2dnZXIuaW5mbyhcInJlYWR5XCIsIHtcbiAgICAgIGF1dG9Db25maWd1cmU6IHBvbGljeS5tb2RlLFxuICAgICAgbGFrZWJhc2VQbHVnaW5QcmVzZW50OiBwb2xpY3kubGFrZWJhc2VQbHVnaW5QcmVzZW50LFxuICAgICAgZGF0YWJhc2VQbHVnaW5QcmVzZW50OiBwb2xpY3kuZGF0YWJhc2VQbHVnaW5QcmVzZW50LFxuICAgICAgcHJvdmlzaW9uZWQ6IGZhbHNlLFxuICAgICAgc2tpcHBlZFJlYXNvbjogcG9saWN5LnNraXBwZWRSZWFzb24sXG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGFzeW5jVXRpbHMudGllQWJvcnRTaWduYWwoY29udHJvbGxlciwgc2lnbmFsKTtcbiAgYXN5bmNVdGlscy50aWVBYm9ydFNpZ25hbChjb250cm9sbGVyLCBBYm9ydFNpZ25hbC50aW1lb3V0KEFVVE9fQ09ORklHVVJFX1RJTUVPVVRfTVMpKTtcblxuICBsb2dnZXIuZGVidWcoXCJhdXRvQ29uZmlndXJlOiByZXNvbHZlIGxha2ViYXNlXCIsIHtcbiAgICBwcm92aXNpb246IHBvbGljeS5wcm92aXNpb24sXG4gICAgbW9kZTogcG9saWN5Lm1vZGUsXG4gIH0pO1xuICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IGF1dG9Db25maWd1cmVMYWtlYmFzZShwb2xpY3kucHJvdmlzaW9uLCBjb250cm9sbGVyLnNpZ25hbCwgYnVuZGxlUHJvZmlsZSk7XG4gIGxvZ2dlci5kZWJ1ZyhcImF1dG9Db25maWd1cmU6IGRvbmVcIiwge1xuICAgIG1vZGU6IHBvbGljeS5tb2RlLFxuICAgIGxha2ViYXNlUGx1Z2luUHJlc2VudDogcG9saWN5Lmxha2ViYXNlUGx1Z2luUHJlc2VudCxcbiAgICBkYXRhYmFzZVBsdWdpblByZXNlbnQ6IHBvbGljeS5kYXRhYmFzZVBsdWdpblByZXNlbnQsXG4gICAgcHJvdmlzaW9uZWQ6IHBvbGljeS5wcm92aXNpb24sXG4gICAgLi4ucmVkYWN0TGFrZWJhc2VDb25uZWN0aW9uKHJlc29sdmVkKSxcbiAgfSk7XG4gIGxvZ2dlci5pbmZvKFwicmVhZHlcIiwge1xuICAgIGF1dG9Db25maWd1cmU6IHBvbGljeS5tb2RlLFxuICAgIGxha2ViYXNlUGx1Z2luUHJlc2VudDogcG9saWN5Lmxha2ViYXNlUGx1Z2luUHJlc2VudCxcbiAgICBkYXRhYmFzZVBsdWdpblByZXNlbnQ6IHBvbGljeS5kYXRhYmFzZVBsdWdpblByZXNlbnQsXG4gICAgcHJvdmlzaW9uZWQ6IHBvbGljeS5wcm92aXNpb24sXG4gIH0pO1xuICByZXR1cm4gcmVzb2x2ZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBMYWtlYmFzZSBQb3N0Z3JlcyBjb25uZWN0aW9uIGluZm8sIHdyaXRlIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG9cbiAqIGBwcm9jZXNzLmVudmAsIGFuZCByZXR1cm4gdGhlIHJlY29yZC4gVXNlZCBieSB7QGxpbmsgYXV0b0NvbmZpZ3VyZX07IGNhbGxcbiAqIHtAbGluayBhcHBseUxha2ViYXNlRW52fSBkaXJlY3RseSB3aGVuIGZpbmVyIGNvbnRyb2wgaXMgbmVlZGVkIChhIGRpZmZlcmVudFxuICogYGF1dG9DcmVhdGVgIHBvbGljeSwgb3IgYSBjYWxsZXIgdGhhdCB3YW50cyB0aGUgZW52IHdpdGhvdXQgYm9vdGluZyBBcHBLaXQpLlxuICovXG5hc3luYyBmdW5jdGlvbiBhdXRvQ29uZmlndXJlTGFrZWJhc2UoXG4gIHByb3Zpc2lvbjogYm9vbGVhbixcbiAgc2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgYnVuZGxlUHJvZmlsZT86IHN0cmluZyxcbik6IFByb21pc2U8TGFrZWJhc2VDb25uZWN0aW9uPiB7XG4gIGxvZ2dlci5kZWJ1ZyhcImF1dG9Db25maWd1cmVMYWtlYmFzZTogYXBwbHlMYWtlYmFzZUVudlwiKTtcbiAgY29uc3QgeyByZXNvbHZlZCwgdXNlciB9ID0gYXdhaXQgYXBwbHlMYWtlYmFzZUVudih7IGJ1bmRsZVByb2ZpbGUgfSwgc2lnbmFsKTtcbiAgbG9nZ2VyLmRlYnVnKFwiYXV0b0NvbmZpZ3VyZUxha2ViYXNlOiBlbnYgYXBwbGllZFwiLCB7XG4gICAgLi4ucmVkYWN0TGFrZWJhc2VDb25uZWN0aW9uKHJlc29sdmVkKSxcbiAgICB1c2VyLFxuICAgIGVudjoge1xuICAgICAgTEFLRUJBU0VfRU5EUE9JTlQ6IHByb2Nlc3MuZW52LkxBS0VCQVNFX0VORFBPSU5ULFxuICAgICAgUEdIT1NUOiBwcm9jZXNzLmVudi5QR0hPU1QsXG4gICAgICBQR1BPUlQ6IHByb2Nlc3MuZW52LlBHUE9SVCxcbiAgICAgIFBHREFUQUJBU0U6IHByb2Nlc3MuZW52LlBHREFUQUJBU0UsXG4gICAgICBQR1VTRVI6IHByb2Nlc3MuZW52LlBHVVNFUixcbiAgICAgIFBHU1NMTU9ERTogcHJvY2Vzcy5lbnYuUEdTU0xNT0RFLFxuICAgIH0sXG4gIH0pO1xuICBsb2dnZXIuaW5mbyhcImVudiB1cGRhdGVkXCIsIHsgLi4ucmVkYWN0TGFrZWJhc2VDb25uZWN0aW9uKHJlc29sdmVkKSwgdXNlciB9KTtcbiAgaWYgKHByb3Zpc2lvbikge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImF1dG9Db25maWd1cmVMYWtlYmFzZTogcHJvdmlzaW9uQ2FjaGVTY2hlbWFcIiwgeyB1c2VyIH0pO1xuICAgIGF3YWl0IHByb3Zpc2lvbkNhY2hlU2NoZW1hKHVzZXIsIGxvZ2dlcik7XG4gICAgbG9nZ2VyLmRlYnVnKFwiYXV0b0NvbmZpZ3VyZUxha2ViYXNlOiBwcm92aXNpb25DYWNoZVNjaGVtYSBkb25lXCIpO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImF1dG9Db25maWd1cmVMYWtlYmFzZTogc2tpcCBwcm92aXNpb24gKG1vZGU9ZW52KVwiKTtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZWQ7XG59XG5cbmZ1bmN0aW9uIGFwcGx5RGVmYXVsdFByb2ZpbGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY29uZmlndXJlZCA9IHByb2Nlc3MuZW52LkRBVEFCUklDS1NfQ09ORklHX1BST0ZJTEU/LnRyaW0oKTtcbiAgY29uc3QgcmVzb2x2ZWQgPSBhdXRoUHJvZmlsZS5yZXNvbHZlUHJvZmlsZShjb25maWd1cmVkID8geyBwcm9maWxlOiBjb25maWd1cmVkIH0gOiB7fSk7XG4gIGlmICghcmVzb2x2ZWQpIHtcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuREFUQUJSSUNLU19DT05GSUdfUFJPRklMRTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHByb2Nlc3MuZW52LkRBVEFCUklDS1NfQ09ORklHX1BST0ZJTEUgPSByZXNvbHZlZC5uYW1lO1xuICByZXR1cm4gcmVzb2x2ZWQubmFtZTtcbn1cblxuLyoqIFdoZXRoZXIgYGNyZWF0ZUFwcGAgc2hvdWxkIGluamVjdCB0aGUgZGVmYXVsdCBtZW1vcnktZmlyc3QgY2FjaGUgc3RvcmFnZS4gKi9cbmZ1bmN0aW9uIHNob3VsZEluamVjdENhY2hlU3RvcmFnZShjb25maWc6IENyZWF0ZUFwcENvbmZpZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBjb25zdCBjYWNoZSA9IGNvbmZpZz8uY2FjaGU7XG4gIGlmIChjYWNoZT8uZW5hYmxlZCA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgaWYgKGNhY2hlPy5zdG9yYWdlKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWRhY3RMYWtlYmFzZUNvbm5lY3Rpb24ocmVzb2x2ZWQ6IExha2ViYXNlQ29ubmVjdGlvbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHtcbiAgICBwcm9qZWN0OiByZXNvbHZlZC5wcm9qZWN0LFxuICAgIGJyYW5jaDogcmVzb2x2ZWQuYnJhbmNoLFxuICAgIGVuZHBvaW50OiByZXNvbHZlZC5lbmRwb2ludCxcbiAgICBkYXRhYmFzZTogcmVzb2x2ZWQuZGF0YWJhc2UsXG4gICAgaG9zdDogcmVzb2x2ZWQuaG9zdCxcbiAgICBwb3J0OiByZXNvbHZlZC5wb3J0LFxuICAgIHNzbE1vZGU6IHJlc29sdmVkLnNzbE1vZGUsXG4gIH07XG59XG5cbi8qKiBCdWlsZCB0aGUge0BsaW5rIFJlc29sdmVkQXBwRW52fSBpbnRlcmNlcHRvcnMgcmVhZCwgZnJvbSB0aGUgYXV0by1jb25maWcgcmVzdWx0LiAqL1xuZnVuY3Rpb24gcmVzb2x2ZWRBcHBFbnYobGFrZWJhc2U6IExha2ViYXNlQ29ubmVjdGlvbiB8IHVuZGVmaW5lZCk6IFJlc29sdmVkQXBwRW52IHtcbiAgcmV0dXJuIHtcbiAgICAuLi4obGFrZWJhc2UgPyB7IGxha2ViYXNlIH0gOiB7fSksXG4gICAgLi4uKHByb2Nlc3MuZW52LkRBVEFCUklDS1NfSE9TVCA/IHsgZGF0YWJyaWNrc0hvc3Q6IHByb2Nlc3MuZW52LkRBVEFCUklDS1NfSE9TVCB9IDoge30pLFxuICB9O1xufVxuXG4vKiogTm9ybWFsaXplIHRoZSBgaW50ZXJjZXB0b3I/OiBJbnRlcmNlcHRvciB8IEludGVyY2VwdG9yW11gIG9wdGlvbiB0byBhbiBhcnJheS4gKi9cbmZ1bmN0aW9uIGludGVyY2VwdG9yTGlzdChpbnRlcmNlcHRvcjogQ3JlYXRlQXBwQ29uZmlnW1wiaW50ZXJjZXB0b3JcIl0pOiBJbnRlcmNlcHRvcltdIHtcbiAgaWYgKCFpbnRlcmNlcHRvcikgcmV0dXJuIFtdO1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShpbnRlcmNlcHRvcikgPyBpbnRlcmNlcHRvciA6IFtpbnRlcmNlcHRvcl07XG59XG5cbi8qKlxuICogQXV0by1jb25maWd1cmluZyBkcm9wLWluIGZvciBBcHBLaXQncyBgY3JlYXRlQXBwYDogc2FtZSBjb25maWcsIHNhbWUgdHlwZWRcbiAqIHBsdWdpbi1leHBvcnQgbWFwLCB3aXRoIHtAbGluayBhdXRvQ29uZmlndXJlfSBydW4gZmlyc3QuXG4gKlxuICogV2hlbiB7QGxpbmsgQ3JlYXRlQXBwQ29uZmlnLmludGVyY2VwdG9yfXMgYXJlIGdpdmVuLCBlYWNoIGlzIGludm9rZWQgd2l0aCBhblxuICoge0BsaW5rIEludGVyY2VwdG9yQ29udGV4dH0gQUZURVIgYXV0by1jb25maWd1cmF0aW9uIGNvbXB1dGVzIHRoZSBlbnYgYW5kIEJFRk9SRVxuICogQXBwS2l0IGJvb3RzIC0gc28gYW4gaW50ZXJjZXB0b3IgY2FuIHJlYWQgdGhlIHJlc29sdmVkIGNvbm5lY3Rpb24sIHJlZ2lzdGVyXG4gKiBsaWZlY3ljbGUgaGFuZGxlcnMsIGFuZCBzdGFydCBhdXhpbGlhcnkgd29yay4gQSBoaWRkZW4ge0BsaW5rIGxpZmVjeWNsZUJyaWRnZX1cbiAqIHBsdWdpbiBpcyBpbmplY3RlZCBzbyB0aG9zZSBgb25MaWZlY3ljbGVgIGhhbmRsZXJzIGZpcmUgb24gdGhlIGdlbnVpbmUgQXBwS2l0XG4gKiBldmVudHM7IGl0IGhhcyBubyBleHBvcnRzLCBzbyB0aGUgcmV0dXJuZWQge0BsaW5rIFBsdWdpbk1hcH0gaXMgdW5jaGFuZ2VkLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBsYWtlYmFzZSwgc2VydmVyIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuICogaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG4gKlxuICogY29uc3QgYXBwID0gYXdhaXQgYXBwa2l0LmNyZWF0ZUFwcCh7IHBsdWdpbnM6IFtzZXJ2ZXIoKSwgbGFrZWJhc2UoKV0gfSk7XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVBcHA8VCBleHRlbmRzIEFwcEtpdFBsdWdpbnM+KFxuICBjb25maWc/OiBDcmVhdGVBcHBDb25maWc8VD4sXG4pOiBQcm9taXNlPFBsdWdpbk1hcDxUPj4ge1xuICBpbnN0YWxsQXNVc2VyRGV2ZWxvcG1lbnRQYXRjaCgpO1xuICBjb25zdCBwbHVnaW5zID0gcGx1Z2luTmFtZXMoY29uZmlnKTtcbiAgY29uc3QgaW50ZXJjZXB0b3JzID0gaW50ZXJjZXB0b3JMaXN0KGNvbmZpZz8uaW50ZXJjZXB0b3IpO1xuICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IHN0YXJ0XCIsIHtcbiAgICBwbHVnaW5zLFxuICAgIHBsdWdpbkNvdW50OiBwbHVnaW5zLmxlbmd0aCxcbiAgICBpbnRlcmNlcHRvckNvdW50OiBpbnRlcmNlcHRvcnMubGVuZ3RoLFxuICAgIGF1dG9Db25maWd1cmU6IGNvbmZpZz8uYXV0b0NvbmZpZ3VyZSA/PyBcIihkZWZhdWx0KVwiLFxuICAgIGhhc09uUGx1Z2luc1JlYWR5OiB0eXBlb2YgY29uZmlnPy5vblBsdWdpbnNSZWFkeSA9PT0gXCJmdW5jdGlvblwiLFxuICB9KTtcblxuICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IGF1dG9Db25maWd1cmVcIik7XG4gIGNvbnN0IGJyYW5kQ29udGV4dCA9IGF3YWl0IGxvYWRCcmFuZENvbnRleHQoKTtcbiAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRlQXBwOiBicmFuZCBjb250ZXh0IGxvYWRlZFwiLCB7IG5hbWU6IGJyYW5kQ29udGV4dC5uYW1lIH0pO1xuICBjb25zdCBsYWtlYmFzZSA9IGF3YWl0IGF1dG9Db25maWd1cmUoY29uZmlnKTtcbiAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRlQXBwOiBhdXRvQ29uZmlndXJlIHJldHVybmVkXCIsIHtcbiAgICBsYWtlYmFzZTogbGFrZWJhc2UgPyByZWRhY3RMYWtlYmFzZUNvbm5lY3Rpb24obGFrZWJhc2UpIDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBhcHBDb25maWcgPSB7IC4uLmNvbmZpZyB9O1xuICBkZWxldGUgYXBwQ29uZmlnLmF1dG9Db25maWd1cmU7XG4gIGRlbGV0ZSBhcHBDb25maWcuaW50ZXJjZXB0b3I7XG5cbiAgaWYgKHNob3VsZEluamVjdENhY2hlU3RvcmFnZShjb25maWcpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRlQXBwOiBpbmplY3QgbWVtb3J5LWZpcnN0IGNhY2hlIHN0b3JhZ2VcIik7XG4gICAgY29uc3Qgc3RvcmFnZSA9IGF3YWl0IGNyZWF0ZUFwcEtpdENhY2hlU3RvcmFnZSh7XG4gICAgICBjYWNoZTogY29uZmlnPy5jYWNoZSxcbiAgICAgIHByZWZlckxha2ViYXNlOiBCb29sZWFuKGxha2ViYXNlKSB8fCB1c2VzUGx1Z2luKGNvbmZpZywgTEFLRUJBU0VfUExVR0lOKSxcbiAgICB9KTtcbiAgICBhcHBDb25maWcuY2FjaGUgPSB7IC4uLmNvbmZpZz8uY2FjaGUsIHN0b3JhZ2UgfTtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IG1lbW9yeS1maXJzdCBjYWNoZSBzdG9yYWdlIHJlYWR5XCIsIHtcbiAgICAgIHBlcnNpc3RlbnQ6IHN0b3JhZ2UuaXNQZXJzaXN0ZW50KCksXG4gICAgfSk7XG4gIH1cblxuICBpZiAoaW50ZXJjZXB0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImNyZWF0ZUFwcDogbm8gaW50ZXJjZXB0b3JzOyBkZWxlZ2F0aW5nIHRvIEFwcEtpdCBjcmVhdGVBcHBcIiwge1xuICAgICAgcGx1Z2luczogcGx1Z2luTmFtZXMoYXBwQ29uZmlnKSxcbiAgICB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBraXRDcmVhdGVBcHA8VD4oYXBwQ29uZmlnKTtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IEFwcEtpdCBjcmVhdGVBcHAgcmV0dXJuZWRcIiwge1xuICAgICAgZXhwb3J0S2V5czogT2JqZWN0LmtleXMocmVzdWx0ID8/IHt9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQnVpbGQgdGhlIGNvbnRleHQgZnJvbSB0aGUgY29tcHV0ZWQgZW52LCBydW4gZWFjaCBpbnRlcmNlcHRvciAodGhleSByZWdpc3RlclxuICAvLyBsaWZlY3ljbGUgaGFuZGxlcnMgKyBiaW5kIHByb2Nlc3NlcyksIHRoZW4gaW5qZWN0IHRoZSBicmlkZ2UgdGhhdCByZWxheXMgdGhlXG4gIC8vIFJFQUwgQXBwS2l0IGxpZmVjeWNsZSBpbnRvIGBydW50aW1lLmVtaXRMaWZlY3ljbGVgIGR1cmluZyBpdHMgYHNldHVwKClgLlxuICBjb25zdCBlbnYgPSByZXNvbHZlZEFwcEVudihsYWtlYmFzZSk7XG4gIGxvZ2dlci5kZWJ1ZyhcImNyZWF0ZUFwcDogaW50ZXJjZXB0b3IgY29udGV4dFwiLCB7XG4gICAgaGFzTGFrZWJhc2U6IEJvb2xlYW4oZW52Lmxha2ViYXNlKSxcbiAgICBkYXRhYnJpY2tzSG9zdDogZW52LmRhdGFicmlja3NIb3N0LFxuICAgIGludGVyY2VwdG9yQ291bnQ6IGludGVyY2VwdG9ycy5sZW5ndGgsXG4gIH0pO1xuICBjb25zdCBydW50aW1lOiBJbnRlcmNlcHRvclJ1bnRpbWUgPSBjcmVhdGVJbnRlcmNlcHRvckNvbnRleHQoZW52KTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcmNlcHRvcnMubGVuZ3RoOyBpKyspIHtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IHJ1biBpbnRlcmNlcHRvclwiLCB7IGluZGV4OiBpLCBvZjogaW50ZXJjZXB0b3JzLmxlbmd0aCB9KTtcbiAgICBhd2FpdCBpbnRlcmNlcHRvcnNbaV0hKHJ1bnRpbWUuY29udGV4dCk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRlQXBwOiBpbnRlcmNlcHRvciBkb25lXCIsIHsgaW5kZXg6IGkgfSk7XG4gIH1cbiAgLy8gQXBwZW5kIHRoZSBicmlkZ2UgdG8gdGhlIHBsdWdpbnMgdHVwbGUuIEl0IGlzIGhpZGRlbiBhbmQgZXhwb3J0cyBub3RoaW5nLCBzb1xuICAvLyB0aGUgcmV0dXJuZWQgbWFwIHN0aWxsIG1hdGNoZXMgYFBsdWdpbk1hcDxUPmA7IHRoZSBjYXN0ICh0aHJvdWdoIGB1bmtub3duYCkgaXNcbiAgLy8gb25seSBiZWNhdXNlIGFwcGVuZGluZyB3aWRlbnMgdGhlIHR1cGxlIHR5cGUgYmV5b25kIGBUYC5cbiAgYXBwQ29uZmlnLnBsdWdpbnMgPSBbLi4uKGFwcENvbmZpZy5wbHVnaW5zID8/IFtdKSwgbGlmZWN5Y2xlQnJpZGdlKHsgcnVudGltZSB9KV0gYXMgdW5rbm93biBhcyBUO1xuICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IGxpZmVjeWNsZSBicmlkZ2UgaW5qZWN0ZWQ7IGRlbGVnYXRpbmcgdG8gQXBwS2l0IGNyZWF0ZUFwcFwiLCB7XG4gICAgcGx1Z2luczogcGx1Z2luTmFtZXMoYXBwQ29uZmlnKSxcbiAgfSk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcGtpdENyZWF0ZUFwcDxUPihhcHBDb25maWcpO1xuICBsb2dnZXIuZGVidWcoXCJjcmVhdGVBcHA6IEFwcEtpdCBjcmVhdGVBcHAgcmV0dXJuZWRcIiwge1xuICAgIGV4cG9ydEtleXM6IE9iamVjdC5rZXlzKHJlc3VsdCA/PyB7fSksXG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFRoZSBBcHBLaXQgcGVyLXJlcXVlc3QgZXhlY3V0aW9uIGNvbnRleHQgcmV0dXJuZWQgYnkgYGdldEV4ZWN1dGlvbkNvbnRleHQoKWBcbiAqIC0gdGhlIE9CTy1zY29wZWQgd29ya3NwYWNlIGNsaWVudCBwbHVzIHRoZSBzdXJyb3VuZGluZyByZXF1ZXN0IG1ldGFkYXRhLlxuICogRGVyaXZlZCBmcm9tIEFwcEtpdCdzIG93biByZXR1cm4gdHlwZSBzbyBpdCB0cmFja3MgdGhlIGluc3RhbGxlZCB2ZXJzaW9uLCBhbmRcbiAqIHJlLWV4cG9ydGVkIGhlcmUgc28gYWRkLW9uIHBhY2thZ2VzIGNhbiB0eXBlIGEgY29udGV4dCBwYXJhbWV0ZXIgd2l0aG91dCBlYWNoXG4gKiByZS1kZXJpdmluZyB0aGUgc2FtZSBgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RXhlY3V0aW9uQ29udGV4dD5gIGlubGluZS5cbiAqL1xuZXhwb3J0IHR5cGUgRXhlY3V0aW9uQ29udGV4dExpa2UgPSBSZXR1cm5UeXBlPHR5cGVvZiBnZXRFeGVjdXRpb25Db250ZXh0PjtcblxuLyoqXG4gKiBUaGUgYXV0aC1zY29wZWQgRGF0YWJyaWNrcyB3b3Jrc3BhY2UgY2xpZW50IGNhcnJpZWQgb24gYW5cbiAqIGBFeGVjdXRpb25Db250ZXh0TGlrZWAgKGBnZXRFeGVjdXRpb25Db250ZXh0KCkuY2xpZW50YCkuIFR5cGVkIHN0cnVjdHVyYWxseVxuICogb2ZmIEFwcEtpdCBzbyBjb25zdW1lcnMgZG9uJ3QgdGFrZSBhIGRpcmVjdCBgQGRhdGFicmlja3Mvc2RrLWV4cGVyaW1lbnRhbGBcbiAqIGRlcGVuZGVuY3kgLSB0aGUgZGVwIGZsb3dzIGluIHRyYW5zaXRpdmVseSB0aHJvdWdoIGBAZGF0YWJyaWNrcy9hcHBraXRgLlxuICovXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VDbGllbnRMaWtlID0gRXhlY3V0aW9uQ29udGV4dExpa2VbXCJjbGllbnRcIl07XG5cbi8qKlxuICogVGhlIGN1cnJlbnQgQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0LCBvciBgdW5kZWZpbmVkYCB3aGVuIEFwcEtpdCBpc24ndFxuICogaW5pdGlhbGl6ZWQgKG91dHNpZGUgYSByZXF1ZXN0IHNjb3BlKS4gU3dhbGxvd3MgQXBwS2l0J3NcbiAqIHtAbGluayBJbml0aWFsaXphdGlvbkVycm9yfTsgYW55IG90aGVyIGVycm9yIHByb3BhZ2F0ZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuICogaW1wb3J0IHsgY3JlYXRlV29ya3NwYWNlQ2xpZW50IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuICpcbiAqIC8vIE9CTy1zY29wZWQgaW5zaWRlIGEgcmVxdWVzdCwgc2VydmljZSBwcmluY2lwYWwgZnJvbSBhIENMSSBvciBzY3JpcHQuXG4gKiBjb25zdCBjbGllbnQgPSBhcHBraXQudHJ5R2V0RXhlY3V0aW9uQ29udGV4dCgpPy5jbGllbnQgPz8gY3JlYXRlV29ya3NwYWNlQ2xpZW50KCk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlHZXRFeGVjdXRpb25Db250ZXh0KCk6IEV4ZWN1dGlvbkNvbnRleHRMaWtlIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjdHggPSBnZXRFeGVjdXRpb25Db250ZXh0KCk7XG4gICAgaWYgKGN0eD8uY2xpZW50KSB7XG4gICAgICByZXR1cm4gY3R4O1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIEluaXRpYWxpemF0aW9uRXJyb3IpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGEgYmFyZSBBcHBLaXQgYXBwIChubyBwbHVnaW5zKSB3aGVuIG5vbmUgaXMgcnVubmluZyB5ZXQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuICpcbiAqIGF3YWl0IGFwcGtpdC5lbnN1cmVJbml0aWFsaXplZCgpO1xuICogY29uc3QgY2xpZW50ID0gYXBwa2l0LnRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKT8uY2xpZW50O1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlSW5pdGlhbGl6ZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICh0cnlHZXRFeGVjdXRpb25Db250ZXh0KCkpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJlbnN1cmVJbml0aWFsaXplZDogYWxyZWFkeSBpbml0aWFsaXplZFwiKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbG9nZ2VyLmRlYnVnKFwiZW5zdXJlSW5pdGlhbGl6ZWQ6IGJvb3RpbmcgYmFyZSBBcHBLaXQgYXBwXCIpO1xuICBhd2FpdCBjcmVhdGVBcHAoeyBwbHVnaW5zOiBbXSwgYXV0b0NvbmZpZ3VyZTogZmFsc2UgfSk7XG4gIGxvZ2dlci5kZWJ1ZyhcImVuc3VyZUluaXRpYWxpemVkOiBiYXJlIEFwcEtpdCBpbml0aWFsaXphdGlvbiBjb21wbGV0ZVwiKTtcbn1cbiJdfQ==
|
package/lib/src/cache-storage.js
CHANGED
|
@@ -145,7 +145,7 @@ export function loadPersistentStorage() {
|
|
|
145
145
|
}
|
|
146
146
|
catch (err) {
|
|
147
147
|
logger.debug("soft persistent cache skipped (PersistentStorage unavailable)", {
|
|
148
|
-
error: errorUtils.
|
|
148
|
+
error: errorUtils.toError(err),
|
|
149
149
|
});
|
|
150
150
|
persistentStorageCtor = undefined;
|
|
151
151
|
return undefined;
|
|
@@ -245,7 +245,7 @@ async function createPersistentStorage(cache) {
|
|
|
245
245
|
}
|
|
246
246
|
catch (err) {
|
|
247
247
|
logger.debug("soft persistent cache unavailable", {
|
|
248
|
-
error: errorUtils.
|
|
248
|
+
error: errorUtils.toError(err),
|
|
249
249
|
});
|
|
250
250
|
if (pool) {
|
|
251
251
|
await pool.end().catch(() => { });
|
|
@@ -273,4 +273,4 @@ export async function createAppKitCacheStorage(options = {}) {
|
|
|
273
273
|
: projectCache(options.diskScope ?? "appkit", common);
|
|
274
274
|
return new AppKitCacheStorage(cache, persistent);
|
|
275
275
|
}
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jYWNoZS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RixPQUFPLEVBQ0wsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsWUFBWSxHQUViLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQXNDM0MsSUFBSSxxQkFBcUIsR0FBb0QsSUFBSSxDQUFDO0FBRWxGLE1BQU0sa0JBQW1CLFNBQVEsWUFBWTtJQUdkO0lBRnBCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFbkIsWUFBNkIsT0FBcUI7UUFDaEQsS0FBSyxFQUFFLENBQUM7UUFEbUIsWUFBTyxHQUFQLE9BQU8sQ0FBYztJQUVsRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBSSxHQUFXO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUksR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFD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QXdCLENBQzVDLFVBQXFDLEVBQUU7SUFFdkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNsQyxNQUFNLFVBQVUsR0FDZCxPQUFPLENBQUMsY0FBYyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVGLE1BQU0sTUFBTSxHQUFpQjtRQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxXQUFXLEVBQUUsT0FBTztRQUN0RCxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7S0FDbkMsQ0FBQztJQUNGLE1BQU0sS0FBSyxHQUFHLFVBQVU7UUFDdEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUNWLEdBQUcsTUFBTTtZQUNULE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7U0FDbkYsQ0FBQztRQUNKLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEQsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZW1vcnktZmlyc3QgQXBwS2l0IGNhY2hlIHN0b3JhZ2Ugd2l0aCBzb2Z0LWZhaWwgTGFrZWJhc2UgcGVyc2lzdGVuY2UuXG4gKlxuICogQXBwS2l0J3MgYFBlcnNpc3RlbnRTdG9yYWdlLmluaXRpYWxpemUoKWAgcnVucyBEREwgbWlncmF0aW9ucyBhbmQgdGhyb3dzIG9uXG4gKiBhbnkgc3RlcCBmYWlsdXJlLiBXaXRoIGBjYWNoZS5zdHJpY3RQZXJzaXN0ZW5jZTogdHJ1ZWAgdGhhdCB0aHJvdyBtYWtlc1xuICogYENhY2hlTWFuYWdlcmAgc2lsZW50bHkgZGlzYWJsZSB0aGUgY2FjaGUuIFRoaXMgd3JhcHMgdGhlIHNhbWUgc3RvcmFnZSxcbiAqIHN0aWxsIHJ1bnMgaXRzIG1pZ3JhdGlvbnMsIGJ1dCBsb2dzIGEgZmFpbGVkIHN0ZXAgaW5zdGVhZCBvZiB0aHJvd2luZyBzbyBhXG4gKiB1c2FibGUgdGFibGUga2VlcHMgc2VydmluZy5cbiAqXG4gKiBgUGVyc2lzdGVudFN0b3JhZ2VgIGlzIG5vdCBvbiBBcHBLaXQncyBwdWJsaWMgZXhwb3J0IG1hcC4gVGhlIGRlZXAgbG9hZCBpc1xuICogbGF6eSBhbmQgYmVzdC1lZmZvcnQ6IGlmIHRoZSBpbnN0YWxsZWQgQXBwS2l0IGxheW91dCBjaGFuZ2VzLCBMYWtlYmFzZSBpc1xuICogc2tpcHBlZCBhbmQgdGhlIGFkYXB0ZXIga2VlcHMgaXRzIHByb2plY3Qtc2NvcGVkIGRpc2sgcGVyc2lzdGVuY2UuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJub2RlOmV2ZW50c1wiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGNyZWF0ZUxha2ViYXNlUG9vbCwgZ2V0V29ya3NwYWNlQ2xpZW50LCB0eXBlIENhY2hlQ29uZmlnIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHtcbiAgY2xvc2VDYWNoZSxcbiAgY3JlYXRlQ2FjaGUsXG4gIGZsdXNoQ2FjaGUsXG4gIHByb2plY3RDYWNoZSxcbiAgdHlwZSBDYWNoZU9wdGlvbnMsXG59IGZyb20gXCJAZGJ4LXRvb2xzL2NhY2hlL2NhY2hlXCI7XG5pbXBvcnQgeyBwb3N0Z3Jlc0Nvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSBcIkBkYngtdG9vbHMvcG9zdGdyZXNcIjtcbmltcG9ydCB7IGVycm9yVXRpbHMsIGhhc2gsIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBoYW5kbGVPd25lcnNoaXBNaWdyYXRpb25FcnJvciB9IGZyb20gXCIuL21pZ3JhdGlvbi50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiY2FjaGUtc3RvcmFnZVwiKTtcblxudHlwZSBMYWtlYmFzZVBvb2wgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVMYWtlYmFzZVBvb2w+O1xudHlwZSBDYWNoZVN0b3JhZ2UgPSBOb25OdWxsYWJsZTxDYWNoZUNvbmZpZ1tcInN0b3JhZ2VcIl0+O1xuXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeTxUID0gdW5rbm93bj4ge1xuICBleHBpcnk6IG51bWJlcjtcbiAgdmFsdWU6IFQ7XG59XG5cbi8qKiBPcHRpb25zIGZvciBBcHBLaXQncyBtZW1vcnktZmlyc3QgY2FjaGUgc3RvcmFnZSBhZGFwdGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBLaXRDYWNoZVN0b3JhZ2VPcHRpb25zIHtcbiAgLyoqIE5hdGl2ZSBBcHBLaXQgY2FjaGUgY29uZmlndXJhdGlvbi4gKi9cbiAgY2FjaGU/OiBDYWNoZUNvbmZpZztcbiAgLyoqIFdoZXRoZXIgdG8gYXR0ZW1wdCBBcHBLaXQncyBMYWtlYmFzZSBQZXJzaXN0ZW50U3RvcmFnZS4gRGVmYXVsdHMgdG8gdHJ1ZS4gKi9cbiAgcHJlZmVyTGFrZWJhc2U/OiBib29sZWFuO1xuICAvKiogUG9ydGFibGUgZGlzayBzY29wZSB1c2VkIHdoZW4gTGFrZWJhc2UgaXMgdW5hdmFpbGFibGUuICovXG4gIGRpc2tTY29wZT86IHN0cmluZztcbiAgLyoqIFdyaXRlLWJlaGluZCBjb2FsZXNjaW5nIGRlbGF5IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgd3JpdGVEZWxheU1zPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBlbnRyaWVzIHJldGFpbmVkIGluIHRoZSBwcm9jZXNzLWxvY2FsIG1lbW9yeSBwcmltYXJ5LiAqL1xuICBtYXhFbnRyaWVzPzogbnVtYmVyO1xufVxuXG4vKiogQXBwS2l0J3MgaW50ZXJuYWwgcGVyc2lzdGVudCBzdG9yYWdlIHN1cmZhY2UuICovXG5leHBvcnQgdHlwZSBQZXJzaXN0ZW50U3RvcmFnZUJhc2UgPSBDYWNoZVN0b3JhZ2UgJiB7XG4gIGNsZWFudXBFeHBpcmVkPygpOiBQcm9taXNlPG51bWJlcj47XG4gIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPjtcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gIHNjaGVtYU5hbWU/OiBzdHJpbmc7XG4gIHRhYmxlTmFtZT86IHN0cmluZztcbn07XG5cbnR5cGUgUGVyc2lzdGVudFN0b3JhZ2VDb25zdHJ1Y3RvciA9IG5ldyAoXG4gIGNvbmZpZzogQ2FjaGVDb25maWcsXG4gIHBvb2w6IExha2ViYXNlUG9vbCxcbikgPT4gUGVyc2lzdGVudFN0b3JhZ2VCYXNlO1xuXG5sZXQgcGVyc2lzdGVudFN0b3JhZ2VDdG9yOiBQZXJzaXN0ZW50U3RvcmFnZUNvbnN0cnVjdG9yIHwgdW5kZWZpbmVkIHwgbnVsbCA9IG51bGw7XG5cbmNsYXNzIEFwcEtpdFN0b3JhZ2VMZXZlbCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHJlYWRvbmx5IG9wdHMgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2U6IENhY2hlU3RvcmFnZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBhc3luYyBnZXQ8VD4oa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQ8VD4oa2V5KTtcbiAgICBpZiAoIWVudHJ5KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChlbnRyeS5leHBpcnkgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5LnZhbHVlO1xuICB9XG5cbiAgYXN5bmMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgdHRsPzogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChrZXksIHtcbiAgICAgIHZhbHVlLFxuICAgICAgZXhwaXJ5OiBEYXRlLm5vdygpICsgKHR0bCA/PyA2MF8wMDApLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGtleTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy5zdG9yYWdlLmRlbGV0ZShrZXkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2xlYXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5jbGVhcigpO1xuICB9XG5cbiAgaGFzKGtleTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5oYXMoa2V5KTtcbiAgfVxuXG4gIGRpc2Nvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5jbG9zZSgpO1xuICB9XG59XG5cbi8qKiBNZW1vcnktZmlyc3QgQXBwS2l0IENhY2hlU3RvcmFnZSBiYWNrZWQgYnkgQGRieC10b29scy9jYWNoZS4gKi9cbmV4cG9ydCBjbGFzcyBBcHBLaXRDYWNoZVN0b3JhZ2UgaW1wbGVtZW50cyBDYWNoZVN0b3JhZ2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDYWNoZT47XG4gIHByaXZhdGUgcmVhZG9ubHkga2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBwcml2YXRlIGNsb3NlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNhY2hlOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDYWNoZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJzaXN0ZW50OiBDYWNoZVN0b3JhZ2UgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgfVxuXG4gIGFzeW5jIGdldDxUPihrZXk6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVFbnRyeTxUPiB8IG51bGw+IHtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IHRoaXMuY2FjaGUuZ2V0PENhY2hlRW50cnk8VD4+KGtleSk7XG4gICAgaWYgKCFlbnRyeSkgcmV0dXJuIG51bGw7XG4gICAgdGhpcy5rZXlzLmFkZChrZXkpO1xuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuXG4gIGFzeW5jIHNldDxUPihrZXk6IHN0cmluZywgZW50cnk6IENhY2hlRW50cnk8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0dGwgPSBlbnRyeS5leHBpcnkgLSBEYXRlLm5vdygpO1xuICAgIGlmICh0dGwgPD0gMCkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGUoa2V5KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jYWNoZS5zZXQoa2V5LCBlbnRyeSwgeyB0dGwgfSk7XG4gICAgdGhpcy5rZXlzLmFkZChrZXkpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jYWNoZS5kZWxldGUoa2V5KTtcbiAgICB0aGlzLmtleXMuZGVsZXRlKGtleSk7XG4gIH1cblxuICBhc3luYyBjbGVhcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5rZXlzLmNsZWFyKCk7XG4gIH1cblxuICBhc3luYyBoYXMoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5oYXMoa2V5KTtcbiAgfVxuXG4gIGFzeW5jIHNpemUoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJzaXN0ZW50ID8gdGhpcy5wZXJzaXN0ZW50LnNpemUoKSA6IHRoaXMua2V5cy5zaXplO1xuICB9XG5cbiAgaXNQZXJzaXN0ZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgaGVhbHRoQ2hlY2soKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGVyc2lzdGVudCA/IHRoaXMucGVyc2lzdGVudC5oZWFsdGhDaGVjaygpIDogdHJ1ZTtcbiAgfVxuXG4gIC8qKiBEcmFpbiB0cmFja2VkIHdyaXRlLWJlaGluZCBwZXJzaXN0ZW5jZSB3aXRob3V0IGNsb3NpbmcgdGhlIHN0b3JhZ2UuICovXG4gIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBmbHVzaENhY2hlKHRoaXMuY2FjaGUpO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgYXdhaXQgY2xvc2VDYWNoZSh0aGlzLmNhY2hlKTtcbiAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgdGhpcy5rZXlzLmNsZWFyKCk7XG4gIH1cblxuICAvKiogRm9yd2FyZCBBcHBLaXQncyBydW50aW1lLW9ubHkgcGVyc2lzdGVudCBjbGVhbnVwIGhvb2sgd2hlbiBhdmFpbGFibGUuICovXG4gIGFzeW5jIGNsZWFudXBFeHBpcmVkKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgY2xlYW51cCA9IChcbiAgICAgIHRoaXMucGVyc2lzdGVudCBhc1xuICAgICAgICB8IChDYWNoZVN0b3JhZ2UgJiB7XG4gICAgICAgICAgICBjbGVhbnVwRXhwaXJlZD86ICgpID0+IFByb21pc2U8bnVtYmVyPjtcbiAgICAgICAgICB9KVxuICAgICAgICB8IHVuZGVmaW5lZFxuICAgICk/LmNsZWFudXBFeHBpcmVkO1xuICAgIHJldHVybiBjbGVhbnVwICYmIHRoaXMucGVyc2lzdGVudCA/IGNsZWFudXAuY2FsbCh0aGlzLnBlcnNpc3RlbnQpIDogMDtcbiAgfVxufVxuXG4vKipcbiAqIExhemlseSByZXNvbHZlIEFwcEtpdCdzIGludGVybmFsIGBQZXJzaXN0ZW50U3RvcmFnZWAgY29uc3RydWN0b3IuIGBudWxsYFxuICogbWVhbnMgbm90IGF0dGVtcHRlZCB5ZXQ7IGB1bmRlZmluZWRgIG1lYW5zIHRoZSBsb29rdXAgYWxyZWFkeSBmYWlsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUGVyc2lzdGVudFN0b3JhZ2UoKTogUGVyc2lzdGVudFN0b3JhZ2VDb25zdHJ1Y3RvciB8IHVuZGVmaW5lZCB7XG4gIGlmIChwZXJzaXN0ZW50U3RvcmFnZUN0b3IgIT09IG51bGwpIHtcbiAgICByZXR1cm4gcGVyc2lzdGVudFN0b3JhZ2VDdG9yO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcbiAgICBjb25zdCBtb2R1bGVQYXRoID0gam9pbihcbiAgICAgIGRpcm5hbWUocmVxdWlyZS5yZXNvbHZlKFwiQGRhdGFicmlja3MvYXBwa2l0XCIpKSxcbiAgICAgIFwiY2FjaGUvc3RvcmFnZS9wZXJzaXN0ZW50LmpzXCIsXG4gICAgKTtcbiAgICBjb25zdCBsb2FkZWQgPSByZXF1aXJlKG1vZHVsZVBhdGgpLlBlcnNpc3RlbnRTdG9yYWdlIGFzXG4gICAgICBQZXJzaXN0ZW50U3RvcmFnZUNvbnN0cnVjdG9yIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgbG9hZGVkICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcInNvZnQgcGVyc2lzdGVudCBjYWNoZSBza2lwcGVkIChQZXJzaXN0ZW50U3RvcmFnZSBtaXNzaW5nKVwiKTtcbiAgICAgIHBlcnNpc3RlbnRTdG9yYWdlQ3RvciA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHBlcnNpc3RlbnRTdG9yYWdlQ3RvciA9IGxvYWRlZDtcbiAgICByZXR1cm4gbG9hZGVkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJzb2Z0IHBlcnNpc3RlbnQgY2FjaGUgc2tpcHBlZCAoUGVyc2lzdGVudFN0b3JhZ2UgdW5hdmFpbGFibGUpXCIsIHtcbiAgICAgIGVycm9yOiBlcnJvclV0aWxzLmVycm9yTWVzc2FnZShlcnIpLFxuICAgIH0pO1xuICAgIHBlcnNpc3RlbnRTdG9yYWdlQ3RvciA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciBhbiBleGlzdGluZyBjYWNoZSB0YWJsZSBiZWxvbmdzIHRvIGFub3RoZXIgcm9sZS5cbiAqXG4gKiBQb3N0Z3JlU1FMIGFsbG93cyBncmFudGVkIHJlYWRzL3dyaXRlcyBidXQgcmVzZXJ2ZXMgaW5kZXggRERMIGZvciB0aGUgdGFibGVcbiAqIG93bmVyLiBTa2lwIEFwcEtpdCBtaWdyYXRpb25zIGluIHRoYXQgY2FzZTsge0BsaW5rIHByb2JlU3RvcmFnZX0gc3RpbGwgcHJvdmVzXG4gKiB0aGUgZXhpc3RpbmcgdGFibGUgY2FuIHNlcnZlIHRoZSBjYWNoZSBiZWZvcmUgaXQgaXMgYWNjZXB0ZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHRhYmxlT3duZWRCeUFub3RoZXJSb2xlKFxuICBzdG9yYWdlOiBQZXJzaXN0ZW50U3RvcmFnZUJhc2UsXG4gIHBvb2w6IExha2ViYXNlUG9vbCxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoIXN0b3JhZ2Uuc2NoZW1hTmFtZSB8fCAhc3RvcmFnZS50YWJsZU5hbWUpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeShcbiAgICBgU0VMRUNUIHBnX2dldF91c2VyYnlpZChjLnJlbG93bmVyKSA9IGN1cnJlbnRfdXNlciBBUyBvd25lZFxuICAgICBGUk9NIHBnX2NsYXNzIGNcbiAgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlXG4gICAgIFdIRVJFIG4ubnNwbmFtZSA9ICQxIEFORCBjLnJlbG5hbWUgPSAkMiBBTkQgYy5yZWxraW5kIElOICgncicsICdwJylgLFxuICAgIFtzdG9yYWdlLnNjaGVtYU5hbWUsIHN0b3JhZ2UudGFibGVOYW1lXSxcbiAgKTtcbiAgaWYgKHJlc3VsdC5yb3dzWzBdPy5vd25lZCAhPT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgbG9nZ2VyLndhcm4oXCJwZXJzaXN0ZW50IGNhY2hlIG1pZ3JhdGlvbnMgc2tpcHBlZCAodGFibGUgb3duZWQgYnkgYW5vdGhlciByb2xlKVwiLCB7XG4gICAgc2NoZW1hOiBzdG9yYWdlLnNjaGVtYU5hbWUsXG4gICAgdGFibGU6IHN0b3JhZ2UudGFibGVOYW1lLFxuICB9KTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBTb2Z0ZW4gYGluaXRpYWxpemUoKWAgc28gYW4gb3duZXJzaGlwLW9ubHkgbWlncmF0aW9uIGZhaWx1cmUgaXMgbm90IGZhdGFsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvZnRlbkluaXRpYWxpemUoXG4gIHN0b3JhZ2U6IFBlcnNpc3RlbnRTdG9yYWdlQmFzZSxcbiAgc2tpcE1pZ3JhdGlvbnM/OiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+LFxuKTogdm9pZCB7XG4gIGNvbnN0IG9yaWdpbmFsSW5pdGlhbGl6ZSA9IHN0b3JhZ2UuaW5pdGlhbGl6ZS5iaW5kKHN0b3JhZ2UpO1xuICBsZXQgc29mdEluaXRQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuXG4gIHN0b3JhZ2UuaW5pdGlhbGl6ZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoc3RvcmFnZS5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIHNvZnRJbml0UHJvbWlzZSA/Pz0gKGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghKGF3YWl0IHNraXBNaWdyYXRpb25zPy4oKSkpIGF3YWl0IG9yaWdpbmFsSW5pdGlhbGl6ZSgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaGFuZGxlT3duZXJzaGlwTWlncmF0aW9uRXJyb3IoZXJyLCB7XG4gICAgICAgICAgICBzY29wZTogXCJjYWNoZS1zdG9yYWdlXCIsXG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICBldmVudDogXCJwZXJzaXN0ZW50IGNhY2hlIG1pZ3JhdGlvbiBmYWlsZWRcIixcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSgpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBzb2Z0SW5pdFByb21pc2U7XG4gICAgICBzdG9yYWdlLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNvZnRJbml0UHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH07XG59XG5cbi8qKiBWZXJpZnkgdGhlIG1pZ3JhdGVkIGNhY2hlIHRhYmxlIGNhbiBzZXJ2ZSB0aGUgcmVhZHMgYW5kIHdyaXRlcyBBcHBLaXQgbmVlZHMuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvYmVTdG9yYWdlKHN0b3JhZ2U6IFBlcnNpc3RlbnRTdG9yYWdlQmFzZSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBrZXkgPSBgZGJ4LXRvb2xzOmNhY2hlLXByb2JlOiR7aGFzaC5pZCgpfWA7XG4gIHRyeSB7XG4gICAgYXdhaXQgc3RvcmFnZS5zZXQoa2V5LCB7IHZhbHVlOiBrZXksIGV4cGlyeTogRGF0ZS5ub3coKSArIDYwXzAwMCB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLmdldChrZXkpO1xuICAgIGlmIChyZXN1bHQ/LnZhbHVlICE9PSBrZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInBlcnNpc3RlbnQgY2FjaGUgcHJvYmUgcmV0dXJuZWQgYW4gdW5leHBlY3RlZCB2YWx1ZVwiKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgc3RvcmFnZS5kZWxldGUoa2V5KS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBzb2Z0LWZhaWwgTGFrZWJhc2UgY2FjaGUgc3RvcmFnZSB3aGVuIGEgcG9vbCBjYW4gYmUgY3JlYXRlZCBhbmRcbiAqIEFwcEtpdCdzIFBlcnNpc3RlbnRTdG9yYWdlIGNhbiBiZSBsb2FkZWQuIFJldHVybnMgYHVuZGVmaW5lZGAgb3RoZXJ3aXNlIHNvXG4gKiB0aGUgY2FsbGVyIGNhbiB1c2UgcG9ydGFibGUgZGlzayBwZXJzaXN0ZW5jZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUGVyc2lzdGVudFN0b3JhZ2UoXG4gIGNhY2hlOiBDYWNoZUNvbmZpZyB8IHVuZGVmaW5lZCxcbik6IFByb21pc2U8Q2FjaGVTdG9yYWdlIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IFBlcnNpc3RlbnRTdG9yYWdlID0gbG9hZFBlcnNpc3RlbnRTdG9yYWdlKCk7XG4gIGlmICghUGVyc2lzdGVudFN0b3JhZ2UpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IHBvb2w6IExha2ViYXNlUG9vbCB8IHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBjcmVhdGVkUG9vbCA9IGNyZWF0ZUxha2ViYXNlUG9vbChcbiAgICAgIHBvc3RncmVzQ29ubmVjdGlvbk9wdGlvbnMoeyB3b3Jrc3BhY2VDbGllbnQ6IGdldFdvcmtzcGFjZUNsaWVudCh7fSkgfSksXG4gICAgKTtcbiAgICBwb29sID0gY3JlYXRlZFBvb2w7XG4gICAgY29uc3Qgc3RvcmFnZSA9IG5ldyBQZXJzaXN0ZW50U3RvcmFnZShjYWNoZSA/PyB7fSwgY3JlYXRlZFBvb2wpO1xuICAgIHNvZnRlbkluaXRpYWxpemUoc3RvcmFnZSwgKCkgPT4gdGFibGVPd25lZEJ5QW5vdGhlclJvbGUoc3RvcmFnZSwgY3JlYXRlZFBvb2wpKTtcbiAgICBpZiAoIShhd2FpdCBzdG9yYWdlLmhlYWx0aENoZWNrKCkpKSB7XG4gICAgICBhd2FpdCBzdG9yYWdlLmNsb3NlKCkuY2F0Y2goKCkgPT4ge30pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgYXdhaXQgc3RvcmFnZS5pbml0aWFsaXplKCk7XG4gICAgYXdhaXQgcHJvYmVTdG9yYWdlKHN0b3JhZ2UpO1xuICAgIHJldHVybiBzdG9yYWdlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJzb2Z0IHBlcnNpc3RlbnQgY2FjaGUgdW5hdmFpbGFibGVcIiwge1xuICAgICAgZXJyb3I6IGVycm9yVXRpbHMuZXJyb3JNZXNzYWdlKGVyciksXG4gICAgfSk7XG4gICAgaWYgKHBvb2wpIHtcbiAgICAgIGF3YWl0IHBvb2wuZW5kKCkuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIEFwcEtpdCBDYWNoZVN0b3JhZ2Ugd2l0aCBib3VuZGVkIG1lbW9yeSBmaXJzdCBhbmQgdHJhY2tlZCBwZXJzaXN0ZW5jZS5cbiAqIExha2ViYXNlIHJlbWFpbnMgQXBwS2l0J3MgcGVyc2lzdGVudCBvd25lciB3aGVuIGF2YWlsYWJsZTsgb3RoZXJ3aXNlIHRoZVxuICogc2hhcmVkIHByb2plY3Qtc2NvcGVkIHBvcnRhYmxlIGRpc2sgbGV2ZWwgaXMgdXNlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFwcEtpdENhY2hlU3RvcmFnZShcbiAgb3B0aW9uczogQXBwS2l0Q2FjaGVTdG9yYWdlT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxBcHBLaXRDYWNoZVN0b3JhZ2U+IHtcbiAgY29uc3QgbmF0aXZlQ2FjaGUgPSBvcHRpb25zLmNhY2hlO1xuICBjb25zdCBwZXJzaXN0ZW50ID1cbiAgICBvcHRpb25zLnByZWZlckxha2ViYXNlID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IGF3YWl0IGNyZWF0ZVBlcnNpc3RlbnRTdG9yYWdlKG5hdGl2ZUNhY2hlKTtcbiAgY29uc3QgY29tbW9uOiBDYWNoZU9wdGlvbnMgPSB7XG4gICAgbWF4RW50cmllczogb3B0aW9ucy5tYXhFbnRyaWVzID8/IG5hdGl2ZUNhY2hlPy5tYXhTaXplLFxuICAgIHdyaXRlRGVsYXlNczogb3B0aW9ucy53cml0ZURlbGF5TXMsXG4gIH07XG4gIGNvbnN0IGNhY2hlID0gcGVyc2lzdGVudFxuICAgID8gY3JlYXRlQ2FjaGUoe1xuICAgICAgICAuLi5jb21tb24sXG4gICAgICAgIGxldmVsczogW3sgbmFtZTogXCJhcHBraXQtcGVyc2lzdGVudFwiLCBzdG9yZTogbmV3IEFwcEtpdFN0b3JhZ2VMZXZlbChwZXJzaXN0ZW50KSB9XSxcbiAgICAgIH0pXG4gICAgOiBwcm9qZWN0Q2FjaGUob3B0aW9ucy5kaXNrU2NvcGUgPz8gXCJhcHBraXRcIiwgY29tbW9uKTtcbiAgcmV0dXJuIG5ldyBBcHBLaXRDYWNoZVN0b3JhZ2UoY2FjaGUsIHBlcnNpc3RlbnQpO1xufVxuIl19
|
|
276
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jYWNoZS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RixPQUFPLEVBQ0wsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsWUFBWSxHQUViLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQXNDM0MsSUFBSSxxQkFBcUIsR0FBb0QsSUFBSSxDQUFDO0FBRWxGLE1BQU0sa0JBQW1CLFNBQVEsWUFBWTtJQUdkO0lBRnBCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFbkIsWUFBNkIsT0FBcUI7UUFDaEQsS0FBSyxFQUFFLENBQUM7UUFEbUIsWUFBTyxHQUFQLE9BQU8sQ0FBYztJQUVsRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBSSxHQUFXO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUksR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFD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QXdCLENBQzVDLFVBQXFDLEVBQUU7SUFFdkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNsQyxNQUFNLFVBQVUsR0FDZCxPQUFPLENBQUMsY0FBYyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVGLE1BQU0sTUFBTSxHQUFpQjtRQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxXQUFXLEVBQUUsT0FBTztRQUN0RCxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7S0FDbkMsQ0FBQztJQUNGLE1BQU0sS0FBSyxHQUFHLFVBQVU7UUFDdEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUNWLEdBQUcsTUFBTTtZQUNULE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7U0FDbkYsQ0FBQztRQUNKLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEQsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZW1vcnktZmlyc3QgQXBwS2l0IGNhY2hlIHN0b3JhZ2Ugd2l0aCBzb2Z0LWZhaWwgTGFrZWJhc2UgcGVyc2lzdGVuY2UuXG4gKlxuICogQXBwS2l0J3MgYFBlcnNpc3RlbnRTdG9yYWdlLmluaXRpYWxpemUoKWAgcnVucyBEREwgbWlncmF0aW9ucyBhbmQgdGhyb3dzIG9uXG4gKiBhbnkgc3RlcCBmYWlsdXJlLiBXaXRoIGBjYWNoZS5zdHJpY3RQZXJzaXN0ZW5jZTogdHJ1ZWAgdGhhdCB0aHJvdyBtYWtlc1xuICogYENhY2hlTWFuYWdlcmAgc2lsZW50bHkgZGlzYWJsZSB0aGUgY2FjaGUuIFRoaXMgd3JhcHMgdGhlIHNhbWUgc3RvcmFnZSxcbiAqIHN0aWxsIHJ1bnMgaXRzIG1pZ3JhdGlvbnMsIGJ1dCBsb2dzIGEgZmFpbGVkIHN0ZXAgaW5zdGVhZCBvZiB0aHJvd2luZyBzbyBhXG4gKiB1c2FibGUgdGFibGUga2VlcHMgc2VydmluZy5cbiAqXG4gKiBgUGVyc2lzdGVudFN0b3JhZ2VgIGlzIG5vdCBvbiBBcHBLaXQncyBwdWJsaWMgZXhwb3J0IG1hcC4gVGhlIGRlZXAgbG9hZCBpc1xuICogbGF6eSBhbmQgYmVzdC1lZmZvcnQ6IGlmIHRoZSBpbnN0YWxsZWQgQXBwS2l0IGxheW91dCBjaGFuZ2VzLCBMYWtlYmFzZSBpc1xuICogc2tpcHBlZCBhbmQgdGhlIGFkYXB0ZXIga2VlcHMgaXRzIHByb2plY3Qtc2NvcGVkIGRpc2sgcGVyc2lzdGVuY2UuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJub2RlOmV2ZW50c1wiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGNyZWF0ZUxha2ViYXNlUG9vbCwgZ2V0V29ya3NwYWNlQ2xpZW50LCB0eXBlIENhY2hlQ29uZmlnIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHtcbiAgY2xvc2VDYWNoZSxcbiAgY3JlYXRlQ2FjaGUsXG4gIGZsdXNoQ2FjaGUsXG4gIHByb2plY3RDYWNoZSxcbiAgdHlwZSBDYWNoZU9wdGlvbnMsXG59IGZyb20gXCJAZGJ4LXRvb2xzL2NhY2hlL2NhY2hlXCI7XG5pbXBvcnQgeyBwb3N0Z3Jlc0Nvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSBcIkBkYngtdG9vbHMvcG9zdGdyZXNcIjtcbmltcG9ydCB7IGVycm9yVXRpbHMsIGhhc2gsIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBoYW5kbGVPd25lcnNoaXBNaWdyYXRpb25FcnJvciB9IGZyb20gXCIuL21pZ3JhdGlvbi50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiY2FjaGUtc3RvcmFnZVwiKTtcblxudHlwZSBMYWtlYmFzZVBvb2wgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVMYWtlYmFzZVBvb2w+O1xudHlwZSBDYWNoZVN0b3JhZ2UgPSBOb25OdWxsYWJsZTxDYWNoZUNvbmZpZ1tcInN0b3JhZ2VcIl0+O1xuXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeTxUID0gdW5rbm93bj4ge1xuICBleHBpcnk6IG51bWJlcjtcbiAgdmFsdWU6IFQ7XG59XG5cbi8qKiBPcHRpb25zIGZvciBBcHBLaXQncyBtZW1vcnktZmlyc3QgY2FjaGUgc3RvcmFnZSBhZGFwdGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBLaXRDYWNoZVN0b3JhZ2VPcHRpb25zIHtcbiAgLyoqIE5hdGl2ZSBBcHBLaXQgY2FjaGUgY29uZmlndXJhdGlvbi4gKi9cbiAgY2FjaGU/OiBDYWNoZUNvbmZpZztcbiAgLyoqIFdoZXRoZXIgdG8gYXR0ZW1wdCBBcHBLaXQncyBMYWtlYmFzZSBQZXJzaXN0ZW50U3RvcmFnZS4gRGVmYXVsdHMgdG8gdHJ1ZS4gKi9cbiAgcHJlZmVyTGFrZWJhc2U/OiBib29sZWFuO1xuICAvKiogUG9ydGFibGUgZGlzayBzY29wZSB1c2VkIHdoZW4gTGFrZWJhc2UgaXMgdW5hdmFpbGFibGUuICovXG4gIGRpc2tTY29wZT86IHN0cmluZztcbiAgLyoqIFdyaXRlLWJlaGluZCBjb2FsZXNjaW5nIGRlbGF5IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgd3JpdGVEZWxheU1zPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBlbnRyaWVzIHJldGFpbmVkIGluIHRoZSBwcm9jZXNzLWxvY2FsIG1lbW9yeSBwcmltYXJ5LiAqL1xuICBtYXhFbnRyaWVzPzogbnVtYmVyO1xufVxuXG4vKiogQXBwS2l0J3MgaW50ZXJuYWwgcGVyc2lzdGVudCBzdG9yYWdlIHN1cmZhY2UuICovXG5leHBvcnQgdHlwZSBQZXJzaXN0ZW50U3RvcmFnZUJhc2UgPSBDYWNoZVN0b3JhZ2UgJiB7XG4gIGNsZWFudXBFeHBpcmVkPygpOiBQcm9taXNlPG51bWJlcj47XG4gIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPjtcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gIHNjaGVtYU5hbWU/OiBzdHJpbmc7XG4gIHRhYmxlTmFtZT86IHN0cmluZztcbn07XG5cbnR5cGUgUGVyc2lzdGVudFN0b3JhZ2VDb25zdHJ1Y3RvciA9IG5ldyAoXG4gIGNvbmZpZzogQ2FjaGVDb25maWcsXG4gIHBvb2w6IExha2ViYXNlUG9vbCxcbikgPT4gUGVyc2lzdGVudFN0b3JhZ2VCYXNlO1xuXG5sZXQgcGVyc2lzdGVudFN0b3JhZ2VDdG9yOiBQZXJzaXN0ZW50U3RvcmFnZUNvbnN0cnVjdG9yIHwgdW5kZWZpbmVkIHwgbnVsbCA9IG51bGw7XG5cbmNsYXNzIEFwcEtpdFN0b3JhZ2VMZXZlbCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHJlYWRvbmx5IG9wdHMgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2U6IENhY2hlU3RvcmFnZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBhc3luYyBnZXQ8VD4oa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQ8VD4oa2V5KTtcbiAgICBpZiAoIWVudHJ5KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChlbnRyeS5leHBpcnkgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5LnZhbHVlO1xuICB9XG5cbiAgYXN5bmMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgdHRsPzogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChrZXksIHtcbiAgICAgIHZhbHVlLFxuICAgICAgZXhwaXJ5OiBEYXRlLm5vdygpICsgKHR0bCA/PyA2MF8wMDApLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGtleTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy5zdG9yYWdlLmRlbGV0ZShrZXkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2xlYXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5jbGVhcigpO1xuICB9XG5cbiAgaGFzKGtleTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5oYXMoa2V5KTtcbiAgfVxuXG4gIGRpc2Nvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5jbG9zZSgpO1xuICB9XG59XG5cbi8qKiBNZW1vcnktZmlyc3QgQXBwS2l0IENhY2hlU3RvcmFnZSBiYWNrZWQgYnkgQGRieC10b29scy9jYWNoZS4gKi9cbmV4cG9ydCBjbGFzcyBBcHBLaXRDYWNoZVN0b3JhZ2UgaW1wbGVtZW50cyBDYWNoZVN0b3JhZ2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDYWNoZT47XG4gIHByaXZhdGUgcmVhZG9ubHkga2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBwcml2YXRlIGNsb3NlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNhY2hlOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDYWNoZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJzaXN0ZW50OiBDYWNoZVN0b3JhZ2UgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgfVxuXG4gIGFzeW5jIGdldDxUPihrZXk6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVFbnRyeTxUPiB8IG51bGw+IHtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IHRoaXMuY2FjaGUuZ2V0PENhY2hlRW50cnk8VD4+KGtleSk7XG4gICAgaWYgKCFlbnRyeSkgcmV0dXJuIG51bGw7XG4gICAgdGhpcy5rZXlzLmFkZChrZXkpO1xuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuXG4gIGFzeW5jIHNldDxUPihrZXk6IHN0cmluZywgZW50cnk6IENhY2hlRW50cnk8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0dGwgPSBlbnRyeS5leHBpcnkgLSBEYXRlLm5vdygpO1xuICAgIGlmICh0dGwgPD0gMCkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGUoa2V5KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jYWNoZS5zZXQoa2V5LCBlbnRyeSwgeyB0dGwgfSk7XG4gICAgdGhpcy5rZXlzLmFkZChrZXkpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jYWNoZS5kZWxldGUoa2V5KTtcbiAgICB0aGlzLmtleXMuZGVsZXRlKGtleSk7XG4gIH1cblxuICBhc3luYyBjbGVhcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5rZXlzLmNsZWFyKCk7XG4gIH1cblxuICBhc3luYyBoYXMoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5oYXMoa2V5KTtcbiAgfVxuXG4gIGFzeW5jIHNpemUoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJzaXN0ZW50ID8gdGhpcy5wZXJzaXN0ZW50LnNpemUoKSA6IHRoaXMua2V5cy5zaXplO1xuICB9XG5cbiAgaXNQZXJzaXN0ZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgaGVhbHRoQ2hlY2soKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGVyc2lzdGVudCA/IHRoaXMucGVyc2lzdGVudC5oZWFsdGhDaGVjaygpIDogdHJ1ZTtcbiAgfVxuXG4gIC8qKiBEcmFpbiB0cmFja2VkIHdyaXRlLWJlaGluZCBwZXJzaXN0ZW5jZSB3aXRob3V0IGNsb3NpbmcgdGhlIHN0b3JhZ2UuICovXG4gIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBmbHVzaENhY2hlKHRoaXMuY2FjaGUpO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgYXdhaXQgY2xvc2VDYWNoZSh0aGlzLmNhY2hlKTtcbiAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgdGhpcy5rZXlzLmNsZWFyKCk7XG4gIH1cblxuICAvKiogRm9yd2FyZCBBcHBLaXQncyBydW50aW1lLW9ubHkgcGVyc2lzdGVudCBjbGVhbnVwIGhvb2sgd2hlbiBhdmFpbGFibGUuICovXG4gIGFzeW5jIGNsZWFudXBFeHBpcmVkKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgY2xlYW51cCA9IChcbiAgICAgIHRoaXMucGVyc2lzdGVudCBhc1xuICAgICAgICB8IChDYWNoZVN0b3JhZ2UgJiB7XG4gICAgICAgICAgICBjbGVhbnVwRXhwaXJlZD86ICgpID0+IFByb21pc2U8bnVtYmVyPjtcbiAgICAgICAgICB9KVxuICAgICAgICB8IHVuZGVmaW5lZFxuICAgICk/LmNsZWFudXBFeHBpcmVkO1xuICAgIHJldHVybiBjbGVhbnVwICYmIHRoaXMucGVyc2lzdGVudCA/IGNsZWFudXAuY2FsbCh0aGlzLnBlcnNpc3RlbnQpIDogMDtcbiAgfVxufVxuXG4vKipcbiAqIExhemlseSByZXNvbHZlIEFwcEtpdCdzIGludGVybmFsIGBQZXJzaXN0ZW50U3RvcmFnZWAgY29uc3RydWN0b3IuIGBudWxsYFxuICogbWVhbnMgbm90IGF0dGVtcHRlZCB5ZXQ7IGB1bmRlZmluZWRgIG1lYW5zIHRoZSBsb29rdXAgYWxyZWFkeSBmYWlsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUGVyc2lzdGVudFN0b3JhZ2UoKTogUGVyc2lzdGVudFN0b3JhZ2VDb25zdHJ1Y3RvciB8IHVuZGVmaW5lZCB7XG4gIGlmIChwZXJzaXN0ZW50U3RvcmFnZUN0b3IgIT09IG51bGwpIHtcbiAgICByZXR1cm4gcGVyc2lzdGVudFN0b3JhZ2VDdG9yO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcbiAgICBjb25zdCBtb2R1bGVQYXRoID0gam9pbihcbiAgICAgIGRpcm5hbWUocmVxdWlyZS5yZXNvbHZlKFwiQGRhdGFicmlja3MvYXBwa2l0XCIpKSxcbiAgICAgIFwiY2FjaGUvc3RvcmFnZS9wZXJzaXN0ZW50LmpzXCIsXG4gICAgKTtcbiAgICBjb25zdCBsb2FkZWQgPSByZXF1aXJlKG1vZHVsZVBhdGgpLlBlcnNpc3RlbnRTdG9yYWdlIGFzXG4gICAgICBQZXJzaXN0ZW50U3RvcmFnZUNvbnN0cnVjdG9yIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgbG9hZGVkICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcInNvZnQgcGVyc2lzdGVudCBjYWNoZSBza2lwcGVkIChQZXJzaXN0ZW50U3RvcmFnZSBtaXNzaW5nKVwiKTtcbiAgICAgIHBlcnNpc3RlbnRTdG9yYWdlQ3RvciA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHBlcnNpc3RlbnRTdG9yYWdlQ3RvciA9IGxvYWRlZDtcbiAgICByZXR1cm4gbG9hZGVkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJzb2Z0IHBlcnNpc3RlbnQgY2FjaGUgc2tpcHBlZCAoUGVyc2lzdGVudFN0b3JhZ2UgdW5hdmFpbGFibGUpXCIsIHtcbiAgICAgIGVycm9yOiBlcnJvclV0aWxzLnRvRXJyb3IoZXJyKSxcbiAgICB9KTtcbiAgICBwZXJzaXN0ZW50U3RvcmFnZUN0b3IgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgYW4gZXhpc3RpbmcgY2FjaGUgdGFibGUgYmVsb25ncyB0byBhbm90aGVyIHJvbGUuXG4gKlxuICogUG9zdGdyZVNRTCBhbGxvd3MgZ3JhbnRlZCByZWFkcy93cml0ZXMgYnV0IHJlc2VydmVzIGluZGV4IERETCBmb3IgdGhlIHRhYmxlXG4gKiBvd25lci4gU2tpcCBBcHBLaXQgbWlncmF0aW9ucyBpbiB0aGF0IGNhc2U7IHtAbGluayBwcm9iZVN0b3JhZ2V9IHN0aWxsIHByb3Zlc1xuICogdGhlIGV4aXN0aW5nIHRhYmxlIGNhbiBzZXJ2ZSB0aGUgY2FjaGUgYmVmb3JlIGl0IGlzIGFjY2VwdGVkLlxuICovXG5hc3luYyBmdW5jdGlvbiB0YWJsZU93bmVkQnlBbm90aGVyUm9sZShcbiAgc3RvcmFnZTogUGVyc2lzdGVudFN0b3JhZ2VCYXNlLFxuICBwb29sOiBMYWtlYmFzZVBvb2wsXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKCFzdG9yYWdlLnNjaGVtYU5hbWUgfHwgIXN0b3JhZ2UudGFibGVOYW1lKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnkoXG4gICAgYFNFTEVDVCBwZ19nZXRfdXNlcmJ5aWQoYy5yZWxvd25lcikgPSBjdXJyZW50X3VzZXIgQVMgb3duZWRcbiAgICAgRlJPTSBwZ19jbGFzcyBjXG4gICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZVxuICAgICBXSEVSRSBuLm5zcG5hbWUgPSAkMSBBTkQgYy5yZWxuYW1lID0gJDIgQU5EIGMucmVsa2luZCBJTiAoJ3InLCAncCcpYCxcbiAgICBbc3RvcmFnZS5zY2hlbWFOYW1lLCBzdG9yYWdlLnRhYmxlTmFtZV0sXG4gICk7XG4gIGlmIChyZXN1bHQucm93c1swXT8ub3duZWQgIT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gIGxvZ2dlci53YXJuKFwicGVyc2lzdGVudCBjYWNoZSBtaWdyYXRpb25zIHNraXBwZWQgKHRhYmxlIG93bmVkIGJ5IGFub3RoZXIgcm9sZSlcIiwge1xuICAgIHNjaGVtYTogc3RvcmFnZS5zY2hlbWFOYW1lLFxuICAgIHRhYmxlOiBzdG9yYWdlLnRhYmxlTmFtZSxcbiAgfSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogU29mdGVuIGBpbml0aWFsaXplKClgIHNvIGFuIG93bmVyc2hpcC1vbmx5IG1pZ3JhdGlvbiBmYWlsdXJlIGlzIG5vdCBmYXRhbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb2Z0ZW5Jbml0aWFsaXplKFxuICBzdG9yYWdlOiBQZXJzaXN0ZW50U3RvcmFnZUJhc2UsXG4gIHNraXBNaWdyYXRpb25zPzogKCkgPT4gUHJvbWlzZTxib29sZWFuPixcbik6IHZvaWQge1xuICBjb25zdCBvcmlnaW5hbEluaXRpYWxpemUgPSBzdG9yYWdlLmluaXRpYWxpemUuYmluZChzdG9yYWdlKTtcbiAgbGV0IHNvZnRJbml0UHJvbWlzZTogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZDtcblxuICBzdG9yYWdlLmluaXRpYWxpemUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHN0b3JhZ2UuaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICBzb2Z0SW5pdFByb21pc2UgPz89IChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIShhd2FpdCBza2lwTWlncmF0aW9ucz8uKCkpKSBhd2FpdCBvcmlnaW5hbEluaXRpYWxpemUoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWhhbmRsZU93bmVyc2hpcE1pZ3JhdGlvbkVycm9yKGVyciwge1xuICAgICAgICAgICAgc2NvcGU6IFwiY2FjaGUtc3RvcmFnZVwiLFxuICAgICAgICAgICAgbG9nZ2VyLFxuICAgICAgICAgICAgZXZlbnQ6IFwicGVyc2lzdGVudCBjYWNoZSBtaWdyYXRpb24gZmFpbGVkXCIsXG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgc29mdEluaXRQcm9taXNlO1xuICAgICAgc3RvcmFnZS5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzb2Z0SW5pdFByb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9O1xufVxuXG4vKiogVmVyaWZ5IHRoZSBtaWdyYXRlZCBjYWNoZSB0YWJsZSBjYW4gc2VydmUgdGhlIHJlYWRzIGFuZCB3cml0ZXMgQXBwS2l0IG5lZWRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2JlU3RvcmFnZShzdG9yYWdlOiBQZXJzaXN0ZW50U3RvcmFnZUJhc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qga2V5ID0gYGRieC10b29sczpjYWNoZS1wcm9iZToke2hhc2guaWQoKX1gO1xuICB0cnkge1xuICAgIGF3YWl0IHN0b3JhZ2Uuc2V0KGtleSwgeyB2YWx1ZToga2V5LCBleHBpcnk6IERhdGUubm93KCkgKyA2MF8wMDAgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS5nZXQoa2V5KTtcbiAgICBpZiAocmVzdWx0Py52YWx1ZSAhPT0ga2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwZXJzaXN0ZW50IGNhY2hlIHByb2JlIHJldHVybmVkIGFuIHVuZXhwZWN0ZWQgdmFsdWVcIik7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHN0b3JhZ2UuZGVsZXRlKGtleSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIGEgc29mdC1mYWlsIExha2ViYXNlIGNhY2hlIHN0b3JhZ2Ugd2hlbiBhIHBvb2wgY2FuIGJlIGNyZWF0ZWQgYW5kXG4gKiBBcHBLaXQncyBQZXJzaXN0ZW50U3RvcmFnZSBjYW4gYmUgbG9hZGVkLiBSZXR1cm5zIGB1bmRlZmluZWRgIG90aGVyd2lzZSBzb1xuICogdGhlIGNhbGxlciBjYW4gdXNlIHBvcnRhYmxlIGRpc2sgcGVyc2lzdGVuY2UuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVBlcnNpc3RlbnRTdG9yYWdlKFxuICBjYWNoZTogQ2FjaGVDb25maWcgfCB1bmRlZmluZWQsXG4pOiBQcm9taXNlPENhY2hlU3RvcmFnZSB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBQZXJzaXN0ZW50U3RvcmFnZSA9IGxvYWRQZXJzaXN0ZW50U3RvcmFnZSgpO1xuICBpZiAoIVBlcnNpc3RlbnRTdG9yYWdlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGxldCBwb29sOiBMYWtlYmFzZVBvb2wgfCB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgY29uc3QgY3JlYXRlZFBvb2wgPSBjcmVhdGVMYWtlYmFzZVBvb2woXG4gICAgICBwb3N0Z3Jlc0Nvbm5lY3Rpb25PcHRpb25zKHsgd29ya3NwYWNlQ2xpZW50OiBnZXRXb3Jrc3BhY2VDbGllbnQoe30pIH0pLFxuICAgICk7XG4gICAgcG9vbCA9IGNyZWF0ZWRQb29sO1xuICAgIGNvbnN0IHN0b3JhZ2UgPSBuZXcgUGVyc2lzdGVudFN0b3JhZ2UoY2FjaGUgPz8ge30sIGNyZWF0ZWRQb29sKTtcbiAgICBzb2Z0ZW5Jbml0aWFsaXplKHN0b3JhZ2UsICgpID0+IHRhYmxlT3duZWRCeUFub3RoZXJSb2xlKHN0b3JhZ2UsIGNyZWF0ZWRQb29sKSk7XG4gICAgaWYgKCEoYXdhaXQgc3RvcmFnZS5oZWFsdGhDaGVjaygpKSkge1xuICAgICAgYXdhaXQgc3RvcmFnZS5jbG9zZSgpLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGF3YWl0IHN0b3JhZ2UuaW5pdGlhbGl6ZSgpO1xuICAgIGF3YWl0IHByb2JlU3RvcmFnZShzdG9yYWdlKTtcbiAgICByZXR1cm4gc3RvcmFnZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwic29mdCBwZXJzaXN0ZW50IGNhY2hlIHVuYXZhaWxhYmxlXCIsIHtcbiAgICAgIGVycm9yOiBlcnJvclV0aWxzLnRvRXJyb3IoZXJyKSxcbiAgICB9KTtcbiAgICBpZiAocG9vbCkge1xuICAgICAgYXdhaXQgcG9vbC5lbmQoKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgQXBwS2l0IENhY2hlU3RvcmFnZSB3aXRoIGJvdW5kZWQgbWVtb3J5IGZpcnN0IGFuZCB0cmFja2VkIHBlcnNpc3RlbmNlLlxuICogTGFrZWJhc2UgcmVtYWlucyBBcHBLaXQncyBwZXJzaXN0ZW50IG93bmVyIHdoZW4gYXZhaWxhYmxlOyBvdGhlcndpc2UgdGhlXG4gKiBzaGFyZWQgcHJvamVjdC1zY29wZWQgcG9ydGFibGUgZGlzayBsZXZlbCBpcyB1c2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQXBwS2l0Q2FjaGVTdG9yYWdlKFxuICBvcHRpb25zOiBBcHBLaXRDYWNoZVN0b3JhZ2VPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPEFwcEtpdENhY2hlU3RvcmFnZT4ge1xuICBjb25zdCBuYXRpdmVDYWNoZSA9IG9wdGlvbnMuY2FjaGU7XG4gIGNvbnN0IHBlcnNpc3RlbnQgPVxuICAgIG9wdGlvbnMucHJlZmVyTGFrZWJhc2UgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogYXdhaXQgY3JlYXRlUGVyc2lzdGVudFN0b3JhZ2UobmF0aXZlQ2FjaGUpO1xuICBjb25zdCBjb21tb246IENhY2hlT3B0aW9ucyA9IHtcbiAgICBtYXhFbnRyaWVzOiBvcHRpb25zLm1heEVudHJpZXMgPz8gbmF0aXZlQ2FjaGU/Lm1heFNpemUsXG4gICAgd3JpdGVEZWxheU1zOiBvcHRpb25zLndyaXRlRGVsYXlNcyxcbiAgfTtcbiAgY29uc3QgY2FjaGUgPSBwZXJzaXN0ZW50XG4gICAgPyBjcmVhdGVDYWNoZSh7XG4gICAgICAgIC4uLmNvbW1vbixcbiAgICAgICAgbGV2ZWxzOiBbeyBuYW1lOiBcImFwcGtpdC1wZXJzaXN0ZW50XCIsIHN0b3JlOiBuZXcgQXBwS2l0U3RvcmFnZUxldmVsKHBlcnNpc3RlbnQpIH1dLFxuICAgICAgfSlcbiAgICA6IHByb2plY3RDYWNoZShvcHRpb25zLmRpc2tTY29wZSA/PyBcImFwcGtpdFwiLCBjb21tb24pO1xuICByZXR1cm4gbmV3IEFwcEtpdENhY2hlU3RvcmFnZShjYWNoZSwgcGVyc2lzdGVudCk7XG59XG4iXX0=
|
package/lib/src/files-cache.js
CHANGED
|
@@ -155,7 +155,7 @@ export class FilesCacheManager {
|
|
|
155
155
|
state.group.timer = undefined;
|
|
156
156
|
void this.flushInvalidations(state.group).catch((error) => {
|
|
157
157
|
logger.warn("filesystem cache invalidation batch failed", {
|
|
158
|
-
error: errorUtils.
|
|
158
|
+
error: errorUtils.toError(error),
|
|
159
159
|
});
|
|
160
160
|
});
|
|
161
161
|
}, this.config.invalidationBatchMs);
|
|
@@ -228,4 +228,4 @@ function positiveDuration(value, fallback, name) {
|
|
|
228
228
|
function positiveInteger(value, fallback, name) {
|
|
229
229
|
return Math.floor(positiveDuration(value, fallback, name));
|
|
230
230
|
}
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsZXMtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUE4QyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUF5QyxNQUFNLHNCQUFzQixDQUFDO0FBRXhGLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUM5QixNQUFNLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQztBQUNsQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUMvQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBNEV6Qyw4Q0FBOEM7QUFDOUMsTUFBTSxPQUFPLGlCQUFpQjtJQUNYLE1BQU0sQ0FBMkI7SUFDakMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0lBQ3ZDLE1BQU0sQ0FBaUM7SUFFeEQsWUFBWSxTQUFpQyxFQUFFO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO1lBQzlELG1CQUFtQixFQUFFLGdCQUFnQixDQUNuQyxNQUFNLENBQUMsbUJBQW1CLEVBQzFCLDZCQUE2QixFQUM3QixxQkFBcUIsQ0FDdEI7WUFDRCxVQUFVLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsbUJBQW1C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ICogQXBwS2l0LWdsb2JhbCBmaWxlc3lzdGVtIGNhY2hlIHdpdGggdXNlci1pc29sYXRlZCBwcm9jZXNzLWxvY2FsIHZhbHVlcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgUGx1Z2luLCB0b1BsdWdpbiwgdHlwZSBCYXNlUGx1Z2luQ29uZmlnLCB0eXBlIFBsdWdpbk1hbmlmZXN0IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgY2FjaGVLZXlzLCBjbG9zZUNhY2hlLCBjcmVhdGVDYWNoZSwgZ2V0T3JTZXQgfSBmcm9tIFwiQGRieC10b29scy9jYWNoZS9jYWNoZVwiO1xuaW1wb3J0IHsgZXJyb3JVdGlscywgbG9nLCBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgcG9zaXhQYXRoLCB0eXBlIENhY2hlVmFsdWUsIHR5cGUgRmlsZVN5c3RlbUNhY2hlIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWZzXCI7XG5cbmNvbnN0IERFRkFVTFRfVFRMX01TID0gNjBfMDAwO1xuY29uc3QgREVGQVVMVF9JTlZBTElEQVRJT05fQkFUQ0hfTVMgPSAyNTtcbmNvbnN0IERFRkFVTFRfTUFYX0VOVFJJRVMgPSAxXzAwMDtcbmNvbnN0IERFRkFVTFRfTUFYX1NDT1BFUyA9IDI1NjtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJmaWxlcy1jYWNoZVwiKTtcblxuaW50ZXJmYWNlIFNjb3BlU3RhdGUge1xuICBjYWNoZTogRmlsZVN5c3RlbUNhY2hlO1xuICBlbnRyaWVzOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDYWNoZT47XG4gIGdyb3VwOiBHcm91cFN0YXRlO1xuICBzY29wZTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGU7XG4gIHNvdXJjZXM6IE1hcDxzdHJpbmcsIFByb21pc2U8b2JqZWN0Pj47XG59XG5cbmludGVyZmFjZSBHcm91cFN0YXRlIHtcbiAgcGVuZGluZzogU2V0PHN0cmluZz47XG4gIHNjb3BlczogU2V0PFNjb3BlU3RhdGU+O1xuICB0aW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xufVxuXG5pbnRlcmZhY2UgUmVzb2x2ZWRGaWxlc0NhY2hlQ29uZmlnIHtcbiAgaW52YWxpZGF0aW9uQmF0Y2hNczogbnVtYmVyO1xuICBtYXhFbnRyaWVzOiBudW1iZXI7XG4gIG1heFNjb3BlczogbnVtYmVyO1xuICB0dGxNczogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUge1xuICBob3N0OiBzdHJpbmc7XG4gIHR0bE1zOiBudW1iZXI7XG4gIHVzZXJLZXk6IHN0cmluZztcbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIGZvciB0aGUgQXBwS2l0IGZpbGVzLWNhY2hlIHBsdWdpbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZXNDYWNoZVBsdWdpbkNvbmZpZyBleHRlbmRzIEJhc2VQbHVnaW5Db25maWcge1xuICAvKiogRGVmYXVsdCBlbnRyeSBUVEwgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byA2MCBzZWNvbmRzLiAqL1xuICB0dGxNcz86IG51bWJlcjtcbiAgLyoqIEludmFsaWRhdGlvbiBkZWJvdW5jZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byAyNW1zLiAqL1xuICBpbnZhbGlkYXRpb25CYXRjaE1zPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBlbnRyaWVzIHJldGFpbmVkIGluIGVhY2ggdXNlciBMMS4gRGVmYXVsdHMgdG8gMSwwMDAuICovXG4gIG1heEVudHJpZXM/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIGFjdGl2ZSB1c2VyIHNjb3BlcyByZXRhaW5lZCBieSB0aGUgcHJvY2Vzcy4gRGVmYXVsdHMgdG8gMjU2LiAqL1xuICBtYXhTY29wZXM/OiBudW1iZXI7XG59XG5cbi8qKiBJZGVudGl0eSBmb3Igb25lIGF1dGhvcml6YXRpb24tc2FmZSBmaWxlc3lzdGVtIGNhY2hlIHNjb3BlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlc0NhY2hlU2NvcGUge1xuICAvKiogRGF0YWJyaWNrcyB3b3Jrc3BhY2UgaG9zdC4gKi9cbiAgaG9zdDogc3RyaW5nO1xuICAvKiogQXR0cmlidXRlZCB1c2VyIGlkZW50aWZpZXIgdXNlZCB0byBpc29sYXRlIHZhbHVlcy4gKi9cbiAgdXNlcktleTogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgd29ya3NwYWNlIGlkZW50aWZpZXIgaW5jbHVkZWQgaW4gc2hhcmVkIGludmFsaWRhdGlvbiBzY29wZS4gKi9cbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBwZXItc2NvcGUgZW50cnkgVFRMIG92ZXJyaWRlIGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgdHRsTXM/OiBudW1iZXI7XG59XG5cbi8qKiBTdGFibGUgaWRlbnRpdHkgZm9yIGEgZnJhbWV3b3JrIGZpbGVzeXN0ZW0gc291cmNlIHJldGFpbmVkIHdpdGhpbiBvbmUgdXNlciBzY29wZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZXNDYWNoZVNvdXJjZUlkZW50aXR5IHtcbiAgLyoqIEFjdHVhbCBtb3VudGVkIGZpbGVzeXN0ZW0gcGF0aHMgcmVwcmVzZW50ZWQgYnkgdGhlIHNvdXJjZS4gKi9cbiAgcGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogV29ya3NwYWNlLWluc3RhbmNlIGtleSBzZXBhcmF0aW5nIHNvdXJjZXMgd2l0aCBkaWZmZXJlbnQgcG9saWNpZXMgb3ZlciB0aGUgc2FtZSBwYXRocy4gKi9cbiAga2V5Pzogc3RyaW5nO1xufVxuXG4vKiogUHVibGljIGV4cG9ydHMgZnJvbSB7QGxpbmsgRmlsZXNDYWNoZVBsdWdpbn0uICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVzQ2FjaGVFeHBvcnRzIHtcbiAgLyoqIFJlc29sdmUgb25lIHVzZXItaXNvbGF0ZWQgZmlsZXN5c3RlbSBjYWNoZS4gKi9cbiAgZm9yU2NvcGUoc2NvcGU6IEZpbGVzQ2FjaGVTY29wZSk6IFByb21pc2U8RmlsZVN5c3RlbUNhY2hlPjtcbiAgLyoqIFJlc29sdmUgb25lIGFwcC1saWZldGltZSBmaWxlc3lzdGVtIHNvdXJjZSBmb3IgYSB1c2VyIGFuZCBpdHMgYWN0dWFsIG1vdW50ZWQgcGF0aHMuICovXG4gIGZvckZpbGVTeXN0ZW08VCBleHRlbmRzIG9iamVjdD4oXG4gICAgc2NvcGU6IEZpbGVzQ2FjaGVTY29wZSxcbiAgICBpZGVudGl0eTogRmlsZXNDYWNoZVNvdXJjZUlkZW50aXR5LFxuICAgIGxvYWQ6ICgpID0+IFQgfCBQcm9taXNlPFQ+LFxuICApOiBQcm9taXNlPFQ+O1xuICAvKiogRmx1c2ggcGVuZGluZyBpbnZhbGlkYXRpb24gYmF0Y2hlcy4gKi9cbiAgZmx1c2goKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIFByb2Nlc3MtbG9jYWwgZmlsZXN5c3RlbSBjYWNoZSBtYW5hZ2VyLiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVzQ2FjaGVNYW5hZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFJlc29sdmVkRmlsZXNDYWNoZUNvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBncm91cHMgPSBuZXcgTWFwPHN0cmluZywgR3JvdXBTdGF0ZT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzY29wZXM6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNhY2hlPjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEZpbGVzQ2FjaGVQbHVnaW5Db25maWcgPSB7fSkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgdHRsTXM6IHBvc2l0aXZlRHVyYXRpb24oY29uZmlnLnR0bE1zLCBERUZBVUxUX1RUTF9NUywgXCJ0dGxNc1wiKSxcbiAgICAgIGludmFsaWRhdGlvbkJhdGNoTXM6IHBvc2l0aXZlRHVyYXRpb24oXG4gICAgICAgIGNvbmZpZy5pbnZhbGlkYXRpb25CYXRjaE1zLFxuICAgICAgICBERUZBVUxUX0lOVkFMSURBVElPTl9CQVRDSF9NUyxcbiAgICAgICAgXCJpbnZhbGlkYXRpb25CYXRjaE1zXCIsXG4gICAgICApLFxuICAgICAgbWF4RW50cmllczogcG9zaXRpdmVJbnRlZ2VyKGNvbmZpZy5tYXhFbnRyaWVzLCBERUZBVUxUX01BWF9FTlRSSUVTLCBcIm1heEVudHJpZXNcIiksXG4gICAgICBtYXhTY29wZXM6IHBvc2l0aXZlSW50ZWdlcihjb25maWcubWF4U2NvcGVzLCBERUZBVUxUX01BWF9TQ09QRVMsIFwibWF4U2NvcGVzXCIpLFxuICAgIH07XG4gICAgdGhpcy5zY29wZXMgPSBjcmVhdGVDYWNoZSh7IG1heEVudHJpZXM6IHRoaXMuY29uZmlnLm1heFNjb3BlcywgdXNlQ2xvbmU6IGZhbHNlIH0pO1xuICB9XG5cbiAgLyoqIFJldHVybiBvbmUgdXNlci1pc29sYXRlZCBjYWNoZSB3aXRoaW4gYSBob3N0L3dvcmtzcGFjZSBpbnZhbGlkYXRpb24gZ3JvdXAuICovXG4gIGFzeW5jIGZvclNjb3BlKGlucHV0OiBGaWxlc0NhY2hlU2NvcGUpOiBQcm9taXNlPEZpbGVTeXN0ZW1DYWNoZT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5yZXNvbHZlU2NvcGVTdGF0ZShpbnB1dCkpLmNhY2hlO1xuICB9XG5cbiAgLyoqIFJldGFpbiBvbmUgc3RhYmxlIGZyYW1ld29yayBmaWxlc3lzdGVtIHNvdXJjZSBmb3IgdGhlIHNjb3BlIGFuZCBtb3VudGVkIHBhdGhzLiAqL1xuICBhc3luYyBmb3JGaWxlU3lzdGVtPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIGlucHV0OiBGaWxlc0NhY2hlU2NvcGUsXG4gICAgaWRlbnRpdHk6IEZpbGVzQ2FjaGVTb3VyY2VJZGVudGl0eSxcbiAgICBsb2FkOiAoKSA9PiBUIHwgUHJvbWlzZTxUPixcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3Qgc3RhdGUgPSBhd2FpdCB0aGlzLnJlc29sdmVTY29wZVN0YXRlKGlucHV0KTtcbiAgICBjb25zdCBwYXRocyA9IGlkZW50aXR5LnBhdGhzLm1hcCgocGF0aCkgPT4gcG9zaXhQYXRoLm5vcm1hbGl6ZVJvb3QocGF0aCkpO1xuICAgIGlmIChwYXRocy5sZW5ndGggPT09IDApIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGaWxlc3lzdGVtIHNvdXJjZSBwYXRocyBtdXN0IG5vdCBiZSBlbXB0eVwiKTtcbiAgICBjb25zdCBzb3VyY2VLZXkgPSBvYmplY3QudG9TdGFibGVLZXkoeyBwYXRocywga2V5OiBpZGVudGl0eS5rZXkgfSk7XG4gICAgbGV0IHNvdXJjZSA9IHN0YXRlLnNvdXJjZXMuZ2V0KHNvdXJjZUtleSk7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIHNvdXJjZSA9IFByb21pc2UucmVzb2x2ZShsb2FkKCkpO1xuICAgICAgc3RhdGUuc291cmNlcy5zZXQoc291cmNlS2V5LCBzb3VyY2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChhd2FpdCBzb3VyY2UpIGFzIFQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChzdGF0ZS5zb3VyY2VzLmdldChzb3VyY2VLZXkpID09PSBzb3VyY2UpIHN0YXRlLnNvdXJjZXMuZGVsZXRlKHNvdXJjZUtleSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVTY29wZVN0YXRlKGlucHV0OiBGaWxlc0NhY2hlU2NvcGUpOiBQcm9taXNlPFNjb3BlU3RhdGU+IHtcbiAgICBjb25zdCBzY29wZSA9IHJlc29sdmVTY29wZShpbnB1dCwgdGhpcy5jb25maWcudHRsTXMpO1xuICAgIGNvbnN0IHNjb3BlS2V5ID0gb2JqZWN0LnRvU3RhYmxlS2V5KHtcbiAgICAgIGhvc3Q6IHNjb3BlLmhvc3QsXG4gICAgICB1c2VyS2V5OiBzY29wZS51c2VyS2V5LFxuICAgICAgd29ya3NwYWNlSWQ6IHNjb3BlLndvcmtzcGFjZUlkLFxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IGF3YWl0IHRoaXMuc2NvcGVzLmdldDxTY29wZVN0YXRlPihzY29wZUtleSk7XG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgaWYgKFsuLi5jYWNoZUtleXModGhpcy5zY29wZXMpXS5sZW5ndGggPj0gdGhpcy5jb25maWcubWF4U2NvcGVzKSB7XG4gICAgICAgIGNvbnN0IG9sZGVzdEtleSA9IGNhY2hlS2V5cyh0aGlzLnNjb3BlcykubmV4dCgpLnZhbHVlO1xuICAgICAgICBpZiAob2xkZXN0S2V5KSB7XG4gICAgICAgICAgY29uc3Qgb2xkZXN0ID0gYXdhaXQgdGhpcy5zY29wZXMuZ2V0PFNjb3BlU3RhdGU+KG9sZGVzdEtleSk7XG4gICAgICAgICAgaWYgKG9sZGVzdCkge1xuICAgICAgICAgICAgb2xkZXN0Lmdyb3VwLnNjb3Blcy5kZWxldGUob2xkZXN0KTtcbiAgICAgICAgICAgIGF3YWl0IGNsb3NlQ2FjaGUob2xkZXN0LmVudHJpZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCB0aGlzLnNjb3Blcy5kZWxldGUob2xkZXN0S2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwKHNjb3BlKTtcbiAgICAgIHN0YXRlID0gdGhpcy5jcmVhdGVTY29wZShzY29wZSwgZ3JvdXApO1xuICAgICAgZ3JvdXAuc2NvcGVzLmFkZChzdGF0ZSk7XG4gICAgICBhd2FpdCB0aGlzLnNjb3Blcy5zZXQoc2NvcGVLZXksIHN0YXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLyoqIEZsdXNoIGV2ZXJ5IHBlbmRpbmcgaW52YWxpZGF0aW9uIGJhdGNoLiAqL1xuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbLi4udGhpcy5ncm91cHMudmFsdWVzKCldLm1hcCgoZ3JvdXApID0+IHRoaXMuZmx1c2hJbnZhbGlkYXRpb25zKGdyb3VwKSkpO1xuICB9XG5cbiAgLyoqIEZsdXNoIHN0YXRlIGFuZCByZWxlYXNlIGFsbCBwcm9jZXNzLWxvY2FsIGVudHJpZXMgYW5kIHRpbWVycy4gKi9cbiAgYXN5bmMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdyb3Vwcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGdyb3VwLnRpbWVyKSBjbGVhclRpbWVvdXQoZ3JvdXAudGltZXIpO1xuICAgICAgZ3JvdXAudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuZmx1c2goKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBjYWNoZUtleXModGhpcy5zY29wZXMpKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IHRoaXMuc2NvcGVzLmdldDxTY29wZVN0YXRlPihrZXkpO1xuICAgICAgaWYgKHN0YXRlKSBhd2FpdCBjbG9zZUNhY2hlKHN0YXRlLmVudHJpZXMpO1xuICAgIH1cbiAgICBhd2FpdCBjbG9zZUNhY2hlKHRoaXMuc2NvcGVzKTtcbiAgICB0aGlzLmdyb3Vwcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBncm91cChzY29wZTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUpOiBHcm91cFN0YXRlIHtcbiAgICBjb25zdCBrZXkgPSBvYmplY3QudG9TdGFibGVLZXkoe1xuICAgICAgaG9zdDogc2NvcGUuaG9zdCxcbiAgICAgIHdvcmtzcGFjZUlkOiBzY29wZS53b3Jrc3BhY2VJZCxcbiAgICB9KTtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuZ3JvdXBzLmdldChrZXkpO1xuICAgIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nO1xuICAgIGNvbnN0IGdyb3VwOiBHcm91cFN0YXRlID0ge1xuICAgICAgcGVuZGluZzogbmV3IFNldCgpLFxuICAgICAgc2NvcGVzOiBuZXcgU2V0KCksXG4gICAgfTtcbiAgICB0aGlzLmdyb3Vwcy5zZXQoa2V5LCBncm91cCk7XG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTY29wZShzY29wZTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUsIGdyb3VwOiBHcm91cFN0YXRlKTogU2NvcGVTdGF0ZSB7XG4gICAgY29uc3Qgc3RhdGUgPSB7fSBhcyBTY29wZVN0YXRlO1xuICAgIHN0YXRlLnNjb3BlID0gc2NvcGU7XG4gICAgc3RhdGUuZ3JvdXAgPSBncm91cDtcbiAgICBzdGF0ZS5lbnRyaWVzID0gY3JlYXRlQ2FjaGUoeyBtYXhFbnRyaWVzOiB0aGlzLmNvbmZpZy5tYXhFbnRyaWVzLCB1c2VDbG9uZTogZmFsc2UgfSk7XG4gICAgc3RhdGUuc291cmNlcyA9IG5ldyBNYXAoKTtcbiAgICBzdGF0ZS5jYWNoZSA9IHtcbiAgICAgIHJlYWQ6IDxUIGV4dGVuZHMgQ2FjaGVWYWx1ZT4oY2FjaGVLZXk6IHN0cmluZywgbG9hZDogKCkgPT4gVCB8IFByb21pc2U8VD4pID0+XG4gICAgICAgIHRoaXMucmVhZChzdGF0ZSwgY2FjaGVLZXksIGxvYWQpLFxuICAgICAgaW52YWxpZGF0ZTogKGNhY2hlS2V5OiBzdHJpbmcpID0+IHRoaXMucXVldWVJbnZhbGlkYXRpb24oc3RhdGUsIGNhY2hlS2V5KSxcbiAgICAgIGtleXM6ICgpID0+IHRoaXMua2V5cyhzdGF0ZSksXG4gICAgfTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlYWQ8VCBleHRlbmRzIENhY2hlVmFsdWU+KFxuICAgIHN0YXRlOiBTY29wZVN0YXRlLFxuICAgIGtleTogc3RyaW5nLFxuICAgIGxvYWQ6ICgpID0+IFQgfCBQcm9taXNlPFQ+LFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAoIXN0YXRlLmdyb3VwLnBlbmRpbmcuaGFzKGtleSkpIHtcbiAgICAgIGNvbnN0IHJldGFpbmVkID0gYXdhaXQgc3RhdGUuZW50cmllcy5nZXQ8VD4oa2V5KTtcbiAgICAgIGlmIChyZXRhaW5lZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcmV0YWluZWQ7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5ncm91cC5wZW5kaW5nLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGxvYWQoKTtcbiAgICAgIGF3YWl0IHN0YXRlLmVudHJpZXMuc2V0KGtleSwgdmFsdWUsIHsgdHRsOiBzdGF0ZS5zY29wZS50dGxNcyB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCBnZXRPclNldChzdGF0ZS5lbnRyaWVzLCBrZXksICgpID0+IFByb21pc2UucmVzb2x2ZShsb2FkKCkpLCB7XG4gICAgICB0dGw6IHN0YXRlLnNjb3BlLnR0bE1zLFxuICAgIH0pKSBhcyBUO1xuICB9XG5cbiAgcHJpdmF0ZSAqa2V5cyhzdGF0ZTogU2NvcGVTdGF0ZSk6IEl0ZXJhYmxlPHN0cmluZz4ge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGNhY2hlS2V5cyhzdGF0ZS5lbnRyaWVzKSkge1xuICAgICAgaWYgKCFzdGF0ZS5ncm91cC5wZW5kaW5nLmhhcyhrZXkpKSB5aWVsZCBrZXk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUludmFsaWRhdGlvbihzdGF0ZTogU2NvcGVTdGF0ZSwga2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzdGF0ZS5ncm91cC5wZW5kaW5nLmFkZChrZXkpO1xuICAgIGlmIChzdGF0ZS5ncm91cC50aW1lcikgcmV0dXJuO1xuICAgIHN0YXRlLmdyb3VwLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzdGF0ZS5ncm91cC50aW1lciA9IHVuZGVmaW5lZDtcbiAgICAgIHZvaWQgdGhpcy5mbHVzaEludmFsaWRhdGlvbnMoc3RhdGUuZ3JvdXApLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBsb2dnZXIud2FybihcImZpbGVzeXN0ZW0gY2FjaGUgaW52YWxpZGF0aW9uIGJhdGNoIGZhaWxlZFwiLCB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yVXRpbHMuZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCB0aGlzLmNvbmZpZy5pbnZhbGlkYXRpb25CYXRjaE1zKTtcbiAgICBzdGF0ZS5ncm91cC50aW1lci51bnJlZj8uKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZsdXNoSW52YWxpZGF0aW9ucyhncm91cDogR3JvdXBTdGF0ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChncm91cC50aW1lcikgY2xlYXJUaW1lb3V0KGdyb3VwLnRpbWVyKTtcbiAgICBncm91cC50aW1lciA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZ3JvdXAucGVuZGluZy5zaXplID09PSAwKSByZXR1cm47XG4gICAgY29uc3Qga2V5cyA9IFsuLi5ncm91cC5wZW5kaW5nXTtcbiAgICBncm91cC5wZW5kaW5nLmNsZWFyKCk7XG4gICAgZm9yIChjb25zdCBzdGF0ZSBvZiBncm91cC5zY29wZXMpIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGtleXMubWFwKChrZXkpID0+IHN0YXRlLmVudHJpZXMuZGVsZXRlKGtleSkpKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIEFwcEtpdCBwbHVnaW4gdGhhdCBvd25zIHByb2Nlc3MtbG9jYWwgZmlsZXN5c3RlbSBjYWNoZXMuICovXG5leHBvcnQgY2xhc3MgRmlsZXNDYWNoZVBsdWdpbiBleHRlbmRzIFBsdWdpbjxGaWxlc0NhY2hlUGx1Z2luQ29uZmlnPiB7XG4gIHN0YXRpYyBtYW5pZmVzdCA9IHtcbiAgICBuYW1lOiBcImZpbGVzLWNhY2hlXCIsXG4gICAgZGlzcGxheU5hbWU6IFwiRmlsZXMgQ2FjaGVcIixcbiAgICBkZXNjcmlwdGlvbjogXCJQcm92aWRlcyBib3VuZGVkIHVzZXItc2NvcGVkIHByb2Nlc3MtbG9jYWwgZmlsZXN5c3RlbSBjYWNoZXMuXCIsXG4gICAgc3RhYmlsaXR5OiBcImJldGFcIixcbiAgICByZXNvdXJjZXM6IHsgcmVxdWlyZWQ6IFtdLCBvcHRpb25hbDogW10gfSxcbiAgfSBzYXRpc2ZpZXMgUGx1Z2luTWFuaWZlc3Q8XCJmaWxlcy1jYWNoZVwiPjtcblxuICBwcml2YXRlIG1hbmFnZXI/OiBGaWxlc0NhY2hlTWFuYWdlcjtcblxuICBvdmVycmlkZSBhc3luYyBzZXR1cCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLm1hbmFnZXIgPSBuZXcgRmlsZXNDYWNoZU1hbmFnZXIodGhpcy5jb25maWcpO1xuICAgIHRoaXMuY29udGV4dD8ub25MaWZlY3ljbGUoXCJzaHV0ZG93blwiLCAoKSA9PiB0aGlzLm1hbmFnZXI/LmNsb3NlKCkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZXhwb3J0cygpOiBGaWxlc0NhY2hlRXhwb3J0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvclNjb3BlOiAoc2NvcGUpID0+IHRoaXMucmVxdWlyZU1hbmFnZXIoKS5mb3JTY29wZShzY29wZSksXG4gICAgICBmb3JGaWxlU3lzdGVtOiAoc2NvcGUsIGlkZW50aXR5LCBsb2FkKSA9PlxuICAgICAgICB0aGlzLnJlcXVpcmVNYW5hZ2VyKCkuZm9yRmlsZVN5c3RlbShzY29wZSwgaWRlbnRpdHksIGxvYWQpLFxuICAgICAgZmx1c2g6ICgpID0+IHRoaXMucmVxdWlyZU1hbmFnZXIoKS5mbHVzaCgpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlcXVpcmVNYW5hZ2VyKCk6IEZpbGVzQ2FjaGVNYW5hZ2VyIHtcbiAgICBpZiAoIXRoaXMubWFuYWdlcikgdGhyb3cgbmV3IEVycm9yKFwiRmlsZXMgY2FjaGUgcGx1Z2luIGhhcyBub3QgY29tcGxldGVkIHNldHVwXCIpO1xuICAgIHJldHVybiB0aGlzLm1hbmFnZXI7XG4gIH1cbn1cblxuLyoqIEFwcEtpdCByZWdpc3RyYXRpb24gZmFjdG9yeSBmb3Ige0BsaW5rIEZpbGVzQ2FjaGVQbHVnaW59LiAqL1xuZXhwb3J0IGNvbnN0IGZpbGVzQ2FjaGUgPSB0b1BsdWdpbihGaWxlc0NhY2hlUGx1Z2luKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVNjb3BlKGlucHV0OiBGaWxlc0NhY2hlU2NvcGUsIGRlZmF1bHRUdGxNczogbnVtYmVyKTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUge1xuICBjb25zdCBob3N0ID0gaW5wdXQuaG9zdC50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgY29uc3QgdXNlcktleSA9IGlucHV0LnVzZXJLZXkudHJpbSgpO1xuICBjb25zdCB3b3Jrc3BhY2VJZCA9IGlucHV0LndvcmtzcGFjZUlkPy50cmltKCkgfHwgdW5kZWZpbmVkO1xuICBpZiAoIWhvc3QpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGaWxlcyBjYWNoZSBzY29wZSBob3N0IG11c3Qgbm90IGJlIGJsYW5rXCIpO1xuICBpZiAoIXVzZXJLZXkpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGaWxlcyBjYWNoZSBzY29wZSB1c2VyS2V5IG11c3Qgbm90IGJlIGJsYW5rXCIpO1xuICByZXR1cm4ge1xuICAgIGhvc3QsXG4gICAgdXNlcktleSxcbiAgICAuLi4od29ya3NwYWNlSWQgPyB7IHdvcmtzcGFjZUlkIH0gOiB7fSksXG4gICAgdHRsTXM6IHBvc2l0aXZlRHVyYXRpb24oaW5wdXQudHRsTXMsIGRlZmF1bHRUdGxNcywgXCJzY29wZS50dGxNc1wiKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpdmVEdXJhdGlvbih2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogbnVtYmVyLCBuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCByZXNvbHZlZCA9IHZhbHVlID8/IGZhbGxiYWNrO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShyZXNvbHZlZCkgfHwgcmVzb2x2ZWQgPD0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGAke25hbWV9IG11c3QgYmUgYSBmaW5pdGUgcG9zaXRpdmUgbnVtYmVyYCk7XG4gIH1cbiAgcmV0dXJuIHJlc29sdmVkO1xufVxuXG5mdW5jdGlvbiBwb3NpdGl2ZUludGVnZXIodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IG51bWJlciwgbmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IocG9zaXRpdmVEdXJhdGlvbih2YWx1ZSwgZmFsbGJhY2ssIG5hbWUpKTtcbn1cbiJdfQ==
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsZXMtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUE4QyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUF5QyxNQUFNLHNCQUFzQixDQUFDO0FBRXhGLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUM5QixNQUFNLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQztBQUNsQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUMvQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBNEV6Qyw4Q0FBOEM7QUFDOUMsTUFBTSxPQUFPLGlCQUFpQjtJQUNYLE1BQU0sQ0FBMkI7SUFDakMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0lBQ3ZDLE1BQU0sQ0FBaUM7SUFFeEQsWUFBWSxTQUFpQyxFQUFFO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO1lBQzlELG1CQUFtQixFQUFFLGdCQUFnQixDQUNuQyxNQUFNLENBQUMsbUJBQW1CLEVBQzFCLDZCQUE2QixFQUM3QixxQkFBcUIsQ0FDdEI7WUFDRCxVQUFVLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsbUJBQW1C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ICogQXBwS2l0LWdsb2JhbCBmaWxlc3lzdGVtIGNhY2hlIHdpdGggdXNlci1pc29sYXRlZCBwcm9jZXNzLWxvY2FsIHZhbHVlcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgUGx1Z2luLCB0b1BsdWdpbiwgdHlwZSBCYXNlUGx1Z2luQ29uZmlnLCB0eXBlIFBsdWdpbk1hbmlmZXN0IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgY2FjaGVLZXlzLCBjbG9zZUNhY2hlLCBjcmVhdGVDYWNoZSwgZ2V0T3JTZXQgfSBmcm9tIFwiQGRieC10b29scy9jYWNoZS9jYWNoZVwiO1xuaW1wb3J0IHsgZXJyb3JVdGlscywgbG9nLCBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgcG9zaXhQYXRoLCB0eXBlIENhY2hlVmFsdWUsIHR5cGUgRmlsZVN5c3RlbUNhY2hlIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWZzXCI7XG5cbmNvbnN0IERFRkFVTFRfVFRMX01TID0gNjBfMDAwO1xuY29uc3QgREVGQVVMVF9JTlZBTElEQVRJT05fQkFUQ0hfTVMgPSAyNTtcbmNvbnN0IERFRkFVTFRfTUFYX0VOVFJJRVMgPSAxXzAwMDtcbmNvbnN0IERFRkFVTFRfTUFYX1NDT1BFUyA9IDI1NjtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJmaWxlcy1jYWNoZVwiKTtcblxuaW50ZXJmYWNlIFNjb3BlU3RhdGUge1xuICBjYWNoZTogRmlsZVN5c3RlbUNhY2hlO1xuICBlbnRyaWVzOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDYWNoZT47XG4gIGdyb3VwOiBHcm91cFN0YXRlO1xuICBzY29wZTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGU7XG4gIHNvdXJjZXM6IE1hcDxzdHJpbmcsIFByb21pc2U8b2JqZWN0Pj47XG59XG5cbmludGVyZmFjZSBHcm91cFN0YXRlIHtcbiAgcGVuZGluZzogU2V0PHN0cmluZz47XG4gIHNjb3BlczogU2V0PFNjb3BlU3RhdGU+O1xuICB0aW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xufVxuXG5pbnRlcmZhY2UgUmVzb2x2ZWRGaWxlc0NhY2hlQ29uZmlnIHtcbiAgaW52YWxpZGF0aW9uQmF0Y2hNczogbnVtYmVyO1xuICBtYXhFbnRyaWVzOiBudW1iZXI7XG4gIG1heFNjb3BlczogbnVtYmVyO1xuICB0dGxNczogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUge1xuICBob3N0OiBzdHJpbmc7XG4gIHR0bE1zOiBudW1iZXI7XG4gIHVzZXJLZXk6IHN0cmluZztcbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIGZvciB0aGUgQXBwS2l0IGZpbGVzLWNhY2hlIHBsdWdpbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZXNDYWNoZVBsdWdpbkNvbmZpZyBleHRlbmRzIEJhc2VQbHVnaW5Db25maWcge1xuICAvKiogRGVmYXVsdCBlbnRyeSBUVEwgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byA2MCBzZWNvbmRzLiAqL1xuICB0dGxNcz86IG51bWJlcjtcbiAgLyoqIEludmFsaWRhdGlvbiBkZWJvdW5jZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byAyNW1zLiAqL1xuICBpbnZhbGlkYXRpb25CYXRjaE1zPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBlbnRyaWVzIHJldGFpbmVkIGluIGVhY2ggdXNlciBMMS4gRGVmYXVsdHMgdG8gMSwwMDAuICovXG4gIG1heEVudHJpZXM/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIGFjdGl2ZSB1c2VyIHNjb3BlcyByZXRhaW5lZCBieSB0aGUgcHJvY2Vzcy4gRGVmYXVsdHMgdG8gMjU2LiAqL1xuICBtYXhTY29wZXM/OiBudW1iZXI7XG59XG5cbi8qKiBJZGVudGl0eSBmb3Igb25lIGF1dGhvcml6YXRpb24tc2FmZSBmaWxlc3lzdGVtIGNhY2hlIHNjb3BlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlc0NhY2hlU2NvcGUge1xuICAvKiogRGF0YWJyaWNrcyB3b3Jrc3BhY2UgaG9zdC4gKi9cbiAgaG9zdDogc3RyaW5nO1xuICAvKiogQXR0cmlidXRlZCB1c2VyIGlkZW50aWZpZXIgdXNlZCB0byBpc29sYXRlIHZhbHVlcy4gKi9cbiAgdXNlcktleTogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgd29ya3NwYWNlIGlkZW50aWZpZXIgaW5jbHVkZWQgaW4gc2hhcmVkIGludmFsaWRhdGlvbiBzY29wZS4gKi9cbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBwZXItc2NvcGUgZW50cnkgVFRMIG92ZXJyaWRlIGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgdHRsTXM/OiBudW1iZXI7XG59XG5cbi8qKiBTdGFibGUgaWRlbnRpdHkgZm9yIGEgZnJhbWV3b3JrIGZpbGVzeXN0ZW0gc291cmNlIHJldGFpbmVkIHdpdGhpbiBvbmUgdXNlciBzY29wZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZXNDYWNoZVNvdXJjZUlkZW50aXR5IHtcbiAgLyoqIEFjdHVhbCBtb3VudGVkIGZpbGVzeXN0ZW0gcGF0aHMgcmVwcmVzZW50ZWQgYnkgdGhlIHNvdXJjZS4gKi9cbiAgcGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogV29ya3NwYWNlLWluc3RhbmNlIGtleSBzZXBhcmF0aW5nIHNvdXJjZXMgd2l0aCBkaWZmZXJlbnQgcG9saWNpZXMgb3ZlciB0aGUgc2FtZSBwYXRocy4gKi9cbiAga2V5Pzogc3RyaW5nO1xufVxuXG4vKiogUHVibGljIGV4cG9ydHMgZnJvbSB7QGxpbmsgRmlsZXNDYWNoZVBsdWdpbn0uICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVzQ2FjaGVFeHBvcnRzIHtcbiAgLyoqIFJlc29sdmUgb25lIHVzZXItaXNvbGF0ZWQgZmlsZXN5c3RlbSBjYWNoZS4gKi9cbiAgZm9yU2NvcGUoc2NvcGU6IEZpbGVzQ2FjaGVTY29wZSk6IFByb21pc2U8RmlsZVN5c3RlbUNhY2hlPjtcbiAgLyoqIFJlc29sdmUgb25lIGFwcC1saWZldGltZSBmaWxlc3lzdGVtIHNvdXJjZSBmb3IgYSB1c2VyIGFuZCBpdHMgYWN0dWFsIG1vdW50ZWQgcGF0aHMuICovXG4gIGZvckZpbGVTeXN0ZW08VCBleHRlbmRzIG9iamVjdD4oXG4gICAgc2NvcGU6IEZpbGVzQ2FjaGVTY29wZSxcbiAgICBpZGVudGl0eTogRmlsZXNDYWNoZVNvdXJjZUlkZW50aXR5LFxuICAgIGxvYWQ6ICgpID0+IFQgfCBQcm9taXNlPFQ+LFxuICApOiBQcm9taXNlPFQ+O1xuICAvKiogRmx1c2ggcGVuZGluZyBpbnZhbGlkYXRpb24gYmF0Y2hlcy4gKi9cbiAgZmx1c2goKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIFByb2Nlc3MtbG9jYWwgZmlsZXN5c3RlbSBjYWNoZSBtYW5hZ2VyLiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVzQ2FjaGVNYW5hZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFJlc29sdmVkRmlsZXNDYWNoZUNvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBncm91cHMgPSBuZXcgTWFwPHN0cmluZywgR3JvdXBTdGF0ZT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzY29wZXM6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNhY2hlPjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEZpbGVzQ2FjaGVQbHVnaW5Db25maWcgPSB7fSkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgdHRsTXM6IHBvc2l0aXZlRHVyYXRpb24oY29uZmlnLnR0bE1zLCBERUZBVUxUX1RUTF9NUywgXCJ0dGxNc1wiKSxcbiAgICAgIGludmFsaWRhdGlvbkJhdGNoTXM6IHBvc2l0aXZlRHVyYXRpb24oXG4gICAgICAgIGNvbmZpZy5pbnZhbGlkYXRpb25CYXRjaE1zLFxuICAgICAgICBERUZBVUxUX0lOVkFMSURBVElPTl9CQVRDSF9NUyxcbiAgICAgICAgXCJpbnZhbGlkYXRpb25CYXRjaE1zXCIsXG4gICAgICApLFxuICAgICAgbWF4RW50cmllczogcG9zaXRpdmVJbnRlZ2VyKGNvbmZpZy5tYXhFbnRyaWVzLCBERUZBVUxUX01BWF9FTlRSSUVTLCBcIm1heEVudHJpZXNcIiksXG4gICAgICBtYXhTY29wZXM6IHBvc2l0aXZlSW50ZWdlcihjb25maWcubWF4U2NvcGVzLCBERUZBVUxUX01BWF9TQ09QRVMsIFwibWF4U2NvcGVzXCIpLFxuICAgIH07XG4gICAgdGhpcy5zY29wZXMgPSBjcmVhdGVDYWNoZSh7IG1heEVudHJpZXM6IHRoaXMuY29uZmlnLm1heFNjb3BlcywgdXNlQ2xvbmU6IGZhbHNlIH0pO1xuICB9XG5cbiAgLyoqIFJldHVybiBvbmUgdXNlci1pc29sYXRlZCBjYWNoZSB3aXRoaW4gYSBob3N0L3dvcmtzcGFjZSBpbnZhbGlkYXRpb24gZ3JvdXAuICovXG4gIGFzeW5jIGZvclNjb3BlKGlucHV0OiBGaWxlc0NhY2hlU2NvcGUpOiBQcm9taXNlPEZpbGVTeXN0ZW1DYWNoZT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5yZXNvbHZlU2NvcGVTdGF0ZShpbnB1dCkpLmNhY2hlO1xuICB9XG5cbiAgLyoqIFJldGFpbiBvbmUgc3RhYmxlIGZyYW1ld29yayBmaWxlc3lzdGVtIHNvdXJjZSBmb3IgdGhlIHNjb3BlIGFuZCBtb3VudGVkIHBhdGhzLiAqL1xuICBhc3luYyBmb3JGaWxlU3lzdGVtPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIGlucHV0OiBGaWxlc0NhY2hlU2NvcGUsXG4gICAgaWRlbnRpdHk6IEZpbGVzQ2FjaGVTb3VyY2VJZGVudGl0eSxcbiAgICBsb2FkOiAoKSA9PiBUIHwgUHJvbWlzZTxUPixcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3Qgc3RhdGUgPSBhd2FpdCB0aGlzLnJlc29sdmVTY29wZVN0YXRlKGlucHV0KTtcbiAgICBjb25zdCBwYXRocyA9IGlkZW50aXR5LnBhdGhzLm1hcCgocGF0aCkgPT4gcG9zaXhQYXRoLm5vcm1hbGl6ZVJvb3QocGF0aCkpO1xuICAgIGlmIChwYXRocy5sZW5ndGggPT09IDApIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGaWxlc3lzdGVtIHNvdXJjZSBwYXRocyBtdXN0IG5vdCBiZSBlbXB0eVwiKTtcbiAgICBjb25zdCBzb3VyY2VLZXkgPSBvYmplY3QudG9TdGFibGVLZXkoeyBwYXRocywga2V5OiBpZGVudGl0eS5rZXkgfSk7XG4gICAgbGV0IHNvdXJjZSA9IHN0YXRlLnNvdXJjZXMuZ2V0KHNvdXJjZUtleSk7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIHNvdXJjZSA9IFByb21pc2UucmVzb2x2ZShsb2FkKCkpO1xuICAgICAgc3RhdGUuc291cmNlcy5zZXQoc291cmNlS2V5LCBzb3VyY2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChhd2FpdCBzb3VyY2UpIGFzIFQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChzdGF0ZS5zb3VyY2VzLmdldChzb3VyY2VLZXkpID09PSBzb3VyY2UpIHN0YXRlLnNvdXJjZXMuZGVsZXRlKHNvdXJjZUtleSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVTY29wZVN0YXRlKGlucHV0OiBGaWxlc0NhY2hlU2NvcGUpOiBQcm9taXNlPFNjb3BlU3RhdGU+IHtcbiAgICBjb25zdCBzY29wZSA9IHJlc29sdmVTY29wZShpbnB1dCwgdGhpcy5jb25maWcudHRsTXMpO1xuICAgIGNvbnN0IHNjb3BlS2V5ID0gb2JqZWN0LnRvU3RhYmxlS2V5KHtcbiAgICAgIGhvc3Q6IHNjb3BlLmhvc3QsXG4gICAgICB1c2VyS2V5OiBzY29wZS51c2VyS2V5LFxuICAgICAgd29ya3NwYWNlSWQ6IHNjb3BlLndvcmtzcGFjZUlkLFxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IGF3YWl0IHRoaXMuc2NvcGVzLmdldDxTY29wZVN0YXRlPihzY29wZUtleSk7XG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgaWYgKFsuLi5jYWNoZUtleXModGhpcy5zY29wZXMpXS5sZW5ndGggPj0gdGhpcy5jb25maWcubWF4U2NvcGVzKSB7XG4gICAgICAgIGNvbnN0IG9sZGVzdEtleSA9IGNhY2hlS2V5cyh0aGlzLnNjb3BlcykubmV4dCgpLnZhbHVlO1xuICAgICAgICBpZiAob2xkZXN0S2V5KSB7XG4gICAgICAgICAgY29uc3Qgb2xkZXN0ID0gYXdhaXQgdGhpcy5zY29wZXMuZ2V0PFNjb3BlU3RhdGU+KG9sZGVzdEtleSk7XG4gICAgICAgICAgaWYgKG9sZGVzdCkge1xuICAgICAgICAgICAgb2xkZXN0Lmdyb3VwLnNjb3Blcy5kZWxldGUob2xkZXN0KTtcbiAgICAgICAgICAgIGF3YWl0IGNsb3NlQ2FjaGUob2xkZXN0LmVudHJpZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCB0aGlzLnNjb3Blcy5kZWxldGUob2xkZXN0S2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwKHNjb3BlKTtcbiAgICAgIHN0YXRlID0gdGhpcy5jcmVhdGVTY29wZShzY29wZSwgZ3JvdXApO1xuICAgICAgZ3JvdXAuc2NvcGVzLmFkZChzdGF0ZSk7XG4gICAgICBhd2FpdCB0aGlzLnNjb3Blcy5zZXQoc2NvcGVLZXksIHN0YXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLyoqIEZsdXNoIGV2ZXJ5IHBlbmRpbmcgaW52YWxpZGF0aW9uIGJhdGNoLiAqL1xuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbLi4udGhpcy5ncm91cHMudmFsdWVzKCldLm1hcCgoZ3JvdXApID0+IHRoaXMuZmx1c2hJbnZhbGlkYXRpb25zKGdyb3VwKSkpO1xuICB9XG5cbiAgLyoqIEZsdXNoIHN0YXRlIGFuZCByZWxlYXNlIGFsbCBwcm9jZXNzLWxvY2FsIGVudHJpZXMgYW5kIHRpbWVycy4gKi9cbiAgYXN5bmMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdyb3Vwcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGdyb3VwLnRpbWVyKSBjbGVhclRpbWVvdXQoZ3JvdXAudGltZXIpO1xuICAgICAgZ3JvdXAudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuZmx1c2goKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBjYWNoZUtleXModGhpcy5zY29wZXMpKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IHRoaXMuc2NvcGVzLmdldDxTY29wZVN0YXRlPihrZXkpO1xuICAgICAgaWYgKHN0YXRlKSBhd2FpdCBjbG9zZUNhY2hlKHN0YXRlLmVudHJpZXMpO1xuICAgIH1cbiAgICBhd2FpdCBjbG9zZUNhY2hlKHRoaXMuc2NvcGVzKTtcbiAgICB0aGlzLmdyb3Vwcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBncm91cChzY29wZTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUpOiBHcm91cFN0YXRlIHtcbiAgICBjb25zdCBrZXkgPSBvYmplY3QudG9TdGFibGVLZXkoe1xuICAgICAgaG9zdDogc2NvcGUuaG9zdCxcbiAgICAgIHdvcmtzcGFjZUlkOiBzY29wZS53b3Jrc3BhY2VJZCxcbiAgICB9KTtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuZ3JvdXBzLmdldChrZXkpO1xuICAgIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nO1xuICAgIGNvbnN0IGdyb3VwOiBHcm91cFN0YXRlID0ge1xuICAgICAgcGVuZGluZzogbmV3IFNldCgpLFxuICAgICAgc2NvcGVzOiBuZXcgU2V0KCksXG4gICAgfTtcbiAgICB0aGlzLmdyb3Vwcy5zZXQoa2V5LCBncm91cCk7XG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTY29wZShzY29wZTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUsIGdyb3VwOiBHcm91cFN0YXRlKTogU2NvcGVTdGF0ZSB7XG4gICAgY29uc3Qgc3RhdGUgPSB7fSBhcyBTY29wZVN0YXRlO1xuICAgIHN0YXRlLnNjb3BlID0gc2NvcGU7XG4gICAgc3RhdGUuZ3JvdXAgPSBncm91cDtcbiAgICBzdGF0ZS5lbnRyaWVzID0gY3JlYXRlQ2FjaGUoeyBtYXhFbnRyaWVzOiB0aGlzLmNvbmZpZy5tYXhFbnRyaWVzLCB1c2VDbG9uZTogZmFsc2UgfSk7XG4gICAgc3RhdGUuc291cmNlcyA9IG5ldyBNYXAoKTtcbiAgICBzdGF0ZS5jYWNoZSA9IHtcbiAgICAgIHJlYWQ6IDxUIGV4dGVuZHMgQ2FjaGVWYWx1ZT4oY2FjaGVLZXk6IHN0cmluZywgbG9hZDogKCkgPT4gVCB8IFByb21pc2U8VD4pID0+XG4gICAgICAgIHRoaXMucmVhZChzdGF0ZSwgY2FjaGVLZXksIGxvYWQpLFxuICAgICAgaW52YWxpZGF0ZTogKGNhY2hlS2V5OiBzdHJpbmcpID0+IHRoaXMucXVldWVJbnZhbGlkYXRpb24oc3RhdGUsIGNhY2hlS2V5KSxcbiAgICAgIGtleXM6ICgpID0+IHRoaXMua2V5cyhzdGF0ZSksXG4gICAgfTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlYWQ8VCBleHRlbmRzIENhY2hlVmFsdWU+KFxuICAgIHN0YXRlOiBTY29wZVN0YXRlLFxuICAgIGtleTogc3RyaW5nLFxuICAgIGxvYWQ6ICgpID0+IFQgfCBQcm9taXNlPFQ+LFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAoIXN0YXRlLmdyb3VwLnBlbmRpbmcuaGFzKGtleSkpIHtcbiAgICAgIGNvbnN0IHJldGFpbmVkID0gYXdhaXQgc3RhdGUuZW50cmllcy5nZXQ8VD4oa2V5KTtcbiAgICAgIGlmIChyZXRhaW5lZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcmV0YWluZWQ7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5ncm91cC5wZW5kaW5nLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGxvYWQoKTtcbiAgICAgIGF3YWl0IHN0YXRlLmVudHJpZXMuc2V0KGtleSwgdmFsdWUsIHsgdHRsOiBzdGF0ZS5zY29wZS50dGxNcyB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCBnZXRPclNldChzdGF0ZS5lbnRyaWVzLCBrZXksICgpID0+IFByb21pc2UucmVzb2x2ZShsb2FkKCkpLCB7XG4gICAgICB0dGw6IHN0YXRlLnNjb3BlLnR0bE1zLFxuICAgIH0pKSBhcyBUO1xuICB9XG5cbiAgcHJpdmF0ZSAqa2V5cyhzdGF0ZTogU2NvcGVTdGF0ZSk6IEl0ZXJhYmxlPHN0cmluZz4ge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGNhY2hlS2V5cyhzdGF0ZS5lbnRyaWVzKSkge1xuICAgICAgaWYgKCFzdGF0ZS5ncm91cC5wZW5kaW5nLmhhcyhrZXkpKSB5aWVsZCBrZXk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUludmFsaWRhdGlvbihzdGF0ZTogU2NvcGVTdGF0ZSwga2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzdGF0ZS5ncm91cC5wZW5kaW5nLmFkZChrZXkpO1xuICAgIGlmIChzdGF0ZS5ncm91cC50aW1lcikgcmV0dXJuO1xuICAgIHN0YXRlLmdyb3VwLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzdGF0ZS5ncm91cC50aW1lciA9IHVuZGVmaW5lZDtcbiAgICAgIHZvaWQgdGhpcy5mbHVzaEludmFsaWRhdGlvbnMoc3RhdGUuZ3JvdXApLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBsb2dnZXIud2FybihcImZpbGVzeXN0ZW0gY2FjaGUgaW52YWxpZGF0aW9uIGJhdGNoIGZhaWxlZFwiLCB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yVXRpbHMudG9FcnJvcihlcnJvciksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy5jb25maWcuaW52YWxpZGF0aW9uQmF0Y2hNcyk7XG4gICAgc3RhdGUuZ3JvdXAudGltZXIudW5yZWY/LigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmbHVzaEludmFsaWRhdGlvbnMoZ3JvdXA6IEdyb3VwU3RhdGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoZ3JvdXAudGltZXIpIGNsZWFyVGltZW91dChncm91cC50aW1lcik7XG4gICAgZ3JvdXAudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGdyb3VwLnBlbmRpbmcuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGtleXMgPSBbLi4uZ3JvdXAucGVuZGluZ107XG4gICAgZ3JvdXAucGVuZGluZy5jbGVhcigpO1xuICAgIGZvciAoY29uc3Qgc3RhdGUgb2YgZ3JvdXAuc2NvcGVzKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChrZXlzLm1hcCgoa2V5KSA9PiBzdGF0ZS5lbnRyaWVzLmRlbGV0ZShrZXkpKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBBcHBLaXQgcGx1Z2luIHRoYXQgb3ducyBwcm9jZXNzLWxvY2FsIGZpbGVzeXN0ZW0gY2FjaGVzLiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVzQ2FjaGVQbHVnaW4gZXh0ZW5kcyBQbHVnaW48RmlsZXNDYWNoZVBsdWdpbkNvbmZpZz4ge1xuICBzdGF0aWMgbWFuaWZlc3QgPSB7XG4gICAgbmFtZTogXCJmaWxlcy1jYWNoZVwiLFxuICAgIGRpc3BsYXlOYW1lOiBcIkZpbGVzIENhY2hlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUHJvdmlkZXMgYm91bmRlZCB1c2VyLXNjb3BlZCBwcm9jZXNzLWxvY2FsIGZpbGVzeXN0ZW0gY2FjaGVzLlwiLFxuICAgIHN0YWJpbGl0eTogXCJiZXRhXCIsXG4gICAgcmVzb3VyY2VzOiB7IHJlcXVpcmVkOiBbXSwgb3B0aW9uYWw6IFtdIH0sXG4gIH0gc2F0aXNmaWVzIFBsdWdpbk1hbmlmZXN0PFwiZmlsZXMtY2FjaGVcIj47XG5cbiAgcHJpdmF0ZSBtYW5hZ2VyPzogRmlsZXNDYWNoZU1hbmFnZXI7XG5cbiAgb3ZlcnJpZGUgYXN5bmMgc2V0dXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5tYW5hZ2VyID0gbmV3IEZpbGVzQ2FjaGVNYW5hZ2VyKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmNvbnRleHQ/Lm9uTGlmZWN5Y2xlKFwic2h1dGRvd25cIiwgKCkgPT4gdGhpcy5tYW5hZ2VyPy5jbG9zZSgpKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGV4cG9ydHMoKTogRmlsZXNDYWNoZUV4cG9ydHMge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JTY29wZTogKHNjb3BlKSA9PiB0aGlzLnJlcXVpcmVNYW5hZ2VyKCkuZm9yU2NvcGUoc2NvcGUpLFxuICAgICAgZm9yRmlsZVN5c3RlbTogKHNjb3BlLCBpZGVudGl0eSwgbG9hZCkgPT5cbiAgICAgICAgdGhpcy5yZXF1aXJlTWFuYWdlcigpLmZvckZpbGVTeXN0ZW0oc2NvcGUsIGlkZW50aXR5LCBsb2FkKSxcbiAgICAgIGZsdXNoOiAoKSA9PiB0aGlzLnJlcXVpcmVNYW5hZ2VyKCkuZmx1c2goKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZXF1aXJlTWFuYWdlcigpOiBGaWxlc0NhY2hlTWFuYWdlciB7XG4gICAgaWYgKCF0aGlzLm1hbmFnZXIpIHRocm93IG5ldyBFcnJvcihcIkZpbGVzIGNhY2hlIHBsdWdpbiBoYXMgbm90IGNvbXBsZXRlZCBzZXR1cFwiKTtcbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyO1xuICB9XG59XG5cbi8qKiBBcHBLaXQgcmVnaXN0cmF0aW9uIGZhY3RvcnkgZm9yIHtAbGluayBGaWxlc0NhY2hlUGx1Z2lufS4gKi9cbmV4cG9ydCBjb25zdCBmaWxlc0NhY2hlID0gdG9QbHVnaW4oRmlsZXNDYWNoZVBsdWdpbik7XG5cbmZ1bmN0aW9uIHJlc29sdmVTY29wZShpbnB1dDogRmlsZXNDYWNoZVNjb3BlLCBkZWZhdWx0VHRsTXM6IG51bWJlcik6IFJlc29sdmVkRmlsZXNDYWNoZVNjb3BlIHtcbiAgY29uc3QgaG9zdCA9IGlucHV0Lmhvc3QudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gIGNvbnN0IHVzZXJLZXkgPSBpbnB1dC51c2VyS2V5LnRyaW0oKTtcbiAgY29uc3Qgd29ya3NwYWNlSWQgPSBpbnB1dC53b3Jrc3BhY2VJZD8udHJpbSgpIHx8IHVuZGVmaW5lZDtcbiAgaWYgKCFob3N0KSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlsZXMgY2FjaGUgc2NvcGUgaG9zdCBtdXN0IG5vdCBiZSBibGFua1wiKTtcbiAgaWYgKCF1c2VyS2V5KSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlsZXMgY2FjaGUgc2NvcGUgdXNlcktleSBtdXN0IG5vdCBiZSBibGFua1wiKTtcbiAgcmV0dXJuIHtcbiAgICBob3N0LFxuICAgIHVzZXJLZXksXG4gICAgLi4uKHdvcmtzcGFjZUlkID8geyB3b3Jrc3BhY2VJZCB9IDoge30pLFxuICAgIHR0bE1zOiBwb3NpdGl2ZUR1cmF0aW9uKGlucHV0LnR0bE1zLCBkZWZhdWx0VHRsTXMsIFwic2NvcGUudHRsTXNcIiksXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBvc2l0aXZlRHVyYXRpb24odmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IG51bWJlciwgbmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgcmVzb2x2ZWQgPSB2YWx1ZSA/PyBmYWxsYmFjaztcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUocmVzb2x2ZWQpIHx8IHJlc29sdmVkIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgZmluaXRlIHBvc2l0aXZlIG51bWJlcmApO1xuICB9XG4gIHJldHVybiByZXNvbHZlZDtcbn1cblxuZnVuY3Rpb24gcG9zaXRpdmVJbnRlZ2VyKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsIGZhbGxiYWNrOiBudW1iZXIsIG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLmZsb29yKHBvc2l0aXZlRHVyYXRpb24odmFsdWUsIGZhbGxiYWNrLCBuYW1lKSk7XG59XG4iXX0=
|
package/lib/src/identity.d.ts
CHANGED
|
@@ -116,3 +116,15 @@ export declare function requestUserEmail(req: HeaderBearing | undefined): string
|
|
|
116
116
|
* before it can throw.
|
|
117
117
|
*/
|
|
118
118
|
export declare function useServicePrincipal(mode: IdentityMode, req?: HeaderBearing): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* In development, keep AppKit `asUser` behavior. The first missing-token skip
|
|
121
|
+
* for a forwarded email or user id uses AppKit's own warn; later skips for
|
|
122
|
+
* that user, and every skip with no forwarded identity, are silent. Request
|
|
123
|
+
* objects are not a stable key: each plugin call typically has its own `req`.
|
|
124
|
+
*
|
|
125
|
+
* No-op outside development, when `Plugin.asUser` is missing or not a
|
|
126
|
+
* function, or if the prototype cannot be rewritten. Failures never throw:
|
|
127
|
+
* AppKit keeps its original `asUser`. Extra arguments are forwarded so a
|
|
128
|
+
* later signature change still reaches the original method.
|
|
129
|
+
*/
|
|
130
|
+
export declare function installAsUserDevelopmentPatch(): void;
|