@dbx-tools/appkit 0.9.95 → 0.9.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -4
- package/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/files-cache.d.ts +2 -0
- package/lib/src/files-cache.js +3 -3
- package/package.json +8 -8
- package/src/files-cache.ts +4 -2
package/README.md
CHANGED
|
@@ -159,15 +159,23 @@ Values are isolated by host, optional workspace id, and attributed user. A
|
|
|
159
159
|
batched invalidation clears matching keys across active user scopes without
|
|
160
160
|
sharing authorization-sensitive values.
|
|
161
161
|
|
|
162
|
-
`forFileSystem(scope, { paths }, load)` retains one framework filesystem
|
|
163
|
-
for the same user and actual mounted paths.
|
|
164
|
-
|
|
165
|
-
|
|
162
|
+
`forFileSystem(scope, { paths, key? }, load)` retains one framework filesystem
|
|
163
|
+
source for the same user and actual mounted paths. `key` separates framework
|
|
164
|
+
instances that use different policies over the same paths. This gives frameworks
|
|
165
|
+
such as Mastra a stable source identity across page refreshes and turns without
|
|
166
|
+
introducing a second parsed catalogue cache.
|
|
166
167
|
|
|
167
168
|
Values and retained filesystem sources use a bounded process-local `lru-cache`.
|
|
168
169
|
Nothing is written to Lakebase or another persistent store. App restarts and
|
|
169
170
|
replica changes begin with a cold filesystem cache.
|
|
170
171
|
|
|
172
|
+
This cache is intentionally separate from AppKit's exported `CacheManager`.
|
|
173
|
+
`CacheManager` owns the application cache and may use Lakebase with an internal
|
|
174
|
+
process-local L1; that L1 is not a public standalone store, and cache writes can
|
|
175
|
+
flow through to persistent storage. `FilesCachePlugin` therefore remains the
|
|
176
|
+
single app-lifetime owner for local-only filesystem values rather than reaching
|
|
177
|
+
into AppKit internals or creating one cache per workspace.
|
|
178
|
+
|
|
171
179
|
`lakebaseResolver.resolveLakebaseConnection()` accepts:
|
|
172
180
|
|
|
173
181
|
| Option | Type | Default | Description |
|
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.99";
|
|
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";
|
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.99";
|
|
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";
|
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.99";
|
|
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";
|
|
@@ -27,4 +27,4 @@ export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER, IDENTITY_MODES,
|
|
|
27
27
|
export { LifecycleBridgePlugin, lifecycleBridge } from "./src/interceptor.js";
|
|
28
28
|
export { SSL_MODES } from "./src/pgaddress.js";
|
|
29
29
|
export { ToolRegistryPlugin } from "./src/tool-provider.js";
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztBQUN0RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFdBQVcsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxLQUFLLGNBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssY0FBYyxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0csT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsSSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9hcHBraXRcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS45OVwiO1xuZXhwb3J0ICogYXMgYXBwa2l0IGZyb20gXCIuL3NyYy9hcHBraXQudHNcIjtcbmV4cG9ydCAqIGFzIGJyYW5kQ29udGV4dCBmcm9tIFwiLi9zcmMvYnJhbmQtY29udGV4dC50c1wiO1xuZXhwb3J0ICogYXMgYnVuZGxlIGZyb20gXCIuL3NyYy9idW5kbGUudHNcIjtcbmV4cG9ydCAqIGFzIGNoaWxkUHJvY2VzcyBmcm9tIFwiLi9zcmMvY2hpbGQtcHJvY2Vzcy50c1wiO1xuZXhwb3J0ICogYXMgZGF0YWJyaWNrcyBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy50c1wiO1xuZXhwb3J0ICogYXMgZmlsZXNDYWNoZSBmcm9tIFwiLi9zcmMvZmlsZXMtY2FjaGUudHNcIjtcbmV4cG9ydCAqIGFzIGlkZW50aXR5IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0ICogYXMgaW50ZXJjZXB0b3IgZnJvbSBcIi4vc3JjL2ludGVyY2VwdG9yLnRzXCI7XG5leHBvcnQgKiBhcyBsYWtlYmFzZVJlc29sdmVyIGZyb20gXCIuL3NyYy9sYWtlYmFzZS1yZXNvbHZlci50c1wiO1xuZXhwb3J0ICogYXMgbWlncmF0aW9uIGZyb20gXCIuL3NyYy9taWdyYXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIHBnYWRkcmVzcyBmcm9tIFwiLi9zcmMvcGdhZGRyZXNzLnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW5FeGVjdXRpb24gZnJvbSBcIi4vc3JjL3BsdWdpbi1leGVjdXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIHBsdWdpblJlZ2lzdHJ5IGZyb20gXCIuL3NyYy9wbHVnaW4tcmVnaXN0cnkudHNcIjtcbmV4cG9ydCAqIGFzIHByb3Zpc2lvbiBmcm9tIFwiLi9zcmMvcHJvdmlzaW9uLnRzXCI7XG5leHBvcnQgKiBhcyByZXF1ZXN0VGFncyBmcm9tIFwiLi9zcmMvcmVxdWVzdC10YWdzLnRzXCI7XG5leHBvcnQgKiBhcyB0b29sUHJvdmlkZXIgZnJvbSBcIi4vc3JjL3Rvb2wtcHJvdmlkZXIudHNcIjtcbmV4cG9ydCAqIGFzIHRvb2xraXRFbnRyaWVzIGZyb20gXCIuL3NyYy90b29sa2l0LWVudHJpZXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0b0NvbmZpZ3VyZU1vZGUsIENyZWF0ZUFwcENvbmZpZywgRXhlY3V0aW9uQ29udGV4dExpa2UsIFdvcmtzcGFjZUNsaWVudExpa2UgfSBmcm9tIFwiLi9zcmMvYXBwa2l0LnRzXCI7XG5leHBvcnQgeyBidW5kbGVBcHBSZXNvdXJjZVNjaGVtYSwgZmxhdHRlbkFwcFlhbWxFbnYsIGZsYXR0ZW5BcHBFbnYsIGdldEJ1bmRsZVBhdGggfSBmcm9tIFwiLi9zcmMvYnVuZGxlLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJ1bmRsZVZhbGlkYXRlSnNvbiwgQ29uZmlnRmlsZSwgQ29uZmlnTWFwVmFsdWUsIENvbmZpZ1NvdXJjZSwgUmVzb2x2ZUNvbmZpZ1ZhbHVlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9idW5kbGUudHNcIjtcbmV4cG9ydCB7IEFwcEtpdENoaWxkUHJvY2VzcyB9IGZyb20gXCIuL3NyYy9jaGlsZC1wcm9jZXNzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEFwcEtpdFNwYXduQXJncywgQXBwS2l0Q2hpbGRQcm9jZXNzSGVhbHRoQ2hlY2tDb250ZXh0LCBBcHBLaXRDaGlsZFByb2Nlc3NIZWFsdGhDaGVjaywgQXBwS2l0Q2hpbGRQcm9jZXNzT3B0aW9ucywgQXBwS2l0Q2hpbGRQcm9jZXNzUnVuT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9jaGlsZC1wcm9jZXNzLnRzXCI7XG5leHBvcnQgdHlwZSB7IENvbnRleHRMaWtlIH0gZnJvbSBcIi4vc3JjL2RhdGFicmlja3MudHNcIjtcbmV4cG9ydCB7IEZpbGVzQ2FjaGVNYW5hZ2VyLCBGaWxlc0NhY2hlUGx1Z2luIH0gZnJvbSBcIi4vc3JjL2ZpbGVzLWNhY2hlLnRzXCI7XG5leHBvcnQgdHlwZSB7IEZpbGVzQ2FjaGVQbHVnaW5Db25maWcsIEZpbGVzQ2FjaGVTY29wZSwgRmlsZXNDYWNoZVNvdXJjZUlkZW50aXR5LCBGaWxlc0NhY2hlRXhwb3J0cyB9IGZyb20gXCIuL3NyYy9maWxlcy1jYWNoZS50c1wiO1xuZXhwb3J0IHsgQUNDRVNTX1RPS0VOX0hFQURFUiwgVVNFUl9JRF9IRUFERVIsIFVTRVJfRU1BSUxfSEVBREVSLCBJREVOVElUWV9NT0RFUywgREVGQVVMVF9JREVOVElUWV9NT0RFIH0gZnJvbSBcIi4vc3JjL2lkZW50aXR5LnRzXCI7XG5leHBvcnQgdHlwZSB7IElkZW50aXR5TW9kZSwgSGVhZGVyQmVhcmluZyB9IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0IHsgTGlmZWN5Y2xlQnJpZGdlUGx1Z2luLCBsaWZlY3ljbGVCcmlkZ2UgfSBmcm9tIFwiLi9zcmMvaW50ZXJjZXB0b3IudHNcIjtcbmV4cG9ydCB0eXBlIHsgTGlmZWN5Y2xlRXZlbnQsIExpZmVjeWNsZUhhbmRsZXIsIFJlc29sdmVkQXBwRW52LCBJbnRlcmNlcHRvckNvbnRleHQsIEludGVyY2VwdG9yLCBJbnRlcmNlcHRvclJ1bnRpbWUgfSBmcm9tIFwiLi9zcmMvaW50ZXJjZXB0b3IudHNcIjtcbmV4cG9ydCB0eXBlIHsgTGFrZWJhc2VSZXNvbHZlcklucHV0cywgTGFrZWJhc2VDb25uZWN0aW9uIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXJlc29sdmVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IE93bmVyc2hpcE1pZ3JhdGlvbkVycm9yT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9taWdyYXRpb24udHNcIjtcbmV4cG9ydCB7IFNTTF9NT0RFUyB9IGZyb20gXCIuL3NyYy9wZ2FkZHJlc3MudHNcIjtcbmV4cG9ydCB0eXBlIHsgU3NsTW9kZSwgUGFyc2VkQWRkcmVzcywgTGFrZWJhc2VDb25uZWN0aW9uSW5wdXRzIH0gZnJvbSBcIi4vc3JjL3BnYWRkcmVzcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBSdW5QbHVnaW5FeGVjdXRpb25PcHRpb25zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbi1leGVjdXRpb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgUGx1Z2luQ29udGV4dExpa2UgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLXJlZ2lzdHJ5LnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlcXVlc3RUYWdWYWx1ZSB9IGZyb20gXCIuL3NyYy9yZXF1ZXN0LXRhZ3MudHNcIjtcbmV4cG9ydCB7IFRvb2xSZWdpc3RyeVBsdWdpbiB9IGZyb20gXCIuL3NyYy90b29sLXByb3ZpZGVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IEFnZW50VG9vbEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tIFwiLi9zcmMvdG9vbC1wcm92aWRlci50c1wiO1xuIl19
|
package/lib/src/files-cache.d.ts
CHANGED
|
@@ -33,6 +33,8 @@ export interface FilesCacheScope {
|
|
|
33
33
|
export interface FilesCacheSourceIdentity {
|
|
34
34
|
/** Actual mounted filesystem paths represented by the source. */
|
|
35
35
|
paths: readonly string[];
|
|
36
|
+
/** Workspace-instance key separating sources with different policies over the same paths. */
|
|
37
|
+
key?: string;
|
|
36
38
|
}
|
|
37
39
|
/** Public exports from {@link FilesCachePlugin}. */
|
|
38
40
|
export interface FilesCacheExports {
|
package/lib/src/files-cache.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
6
|
import { Plugin, toPlugin } from "@databricks/appkit";
|
|
7
|
-
import { posixPath } from "@dbx-tools/shared-fs";
|
|
8
7
|
import { errorUtils, log, object } from "@dbx-tools/shared-core";
|
|
8
|
+
import { posixPath } from "@dbx-tools/shared-fs";
|
|
9
9
|
import { LRUCache } from "lru-cache";
|
|
10
10
|
const DEFAULT_TTL_MS = 60_000;
|
|
11
11
|
const DEFAULT_INVALIDATION_BATCH_MS = 25;
|
|
@@ -43,7 +43,7 @@ export class FilesCacheManager {
|
|
|
43
43
|
const paths = identity.paths.map((path) => posixPath.normalizeRoot(path));
|
|
44
44
|
if (paths.length === 0)
|
|
45
45
|
throw new TypeError("Filesystem source paths must not be empty");
|
|
46
|
-
const sourceKey = object.toStableKey({ paths });
|
|
46
|
+
const sourceKey = object.toStableKey({ paths, key: identity.key });
|
|
47
47
|
let source = state.sources.get(sourceKey);
|
|
48
48
|
if (!source) {
|
|
49
49
|
source = Promise.resolve(load());
|
|
@@ -227,4 +227,4 @@ function retainedSize(key, entry) {
|
|
|
227
227
|
return Number.MAX_SAFE_INTEGER;
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsZXMtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUE4QyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxTQUFTLEVBQXlDLE1BQU0sc0JBQXNCLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUM7QUFDOUIsTUFBTSw2QkFBNkIsR0FBRyxFQUFFLENBQUM7QUFDekMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7QUFDbEMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMzQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUMvQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBaUZ6Qyw4Q0FBOEM7QUFDOUMsTUFBTSxPQUFPLGlCQUFpQjtJQUNYLE1BQU0sQ0FBMkI7SUFDakMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0lBQ3ZDLE1BQU0sQ0FBK0I7SUFFdEQsWUFBWSxTQUFpQyxFQUFFO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO1lBQzlELG1CQUFtQixFQUFFLGdCQUFnQixDQUNuQyxNQUFNLENBQUMsbUJBQW1CLEVBQzFCLDZCQUE2QixFQUM3QixxQkFBcUIsQ0FDdEI7WUFDRCxVQUFVLEVBQUUsZUFBZSxDQUFDLE1BQU0s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O0lBQ2hGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEdBQVcsRUFBRSxLQUFvQjtJQUNyRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBwS2l0LWdsb2JhbCBmaWxlc3lzdGVtIGNhY2hlIHdpdGggdXNlci1pc29sYXRlZCBwcm9jZXNzLWxvY2FsIExSVSB2YWx1ZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IFBsdWdpbiwgdG9QbHVnaW4sIHR5cGUgQmFzZVBsdWdpbkNvbmZpZywgdHlwZSBQbHVnaW5NYW5pZmVzdCB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IHBvc2l4UGF0aCwgdHlwZSBDYWNoZVZhbHVlLCB0eXBlIEZpbGVTeXN0ZW1DYWNoZSB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1mc1wiO1xuaW1wb3J0IHsgZXJyb3JVdGlscywgbG9nLCBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgTFJVQ2FjaGUgfSBmcm9tIFwibHJ1LWNhY2hlXCI7XG5cbmNvbnN0IERFRkFVTFRfVFRMX01TID0gNjBfMDAwO1xuY29uc3QgREVGQVVMVF9JTlZBTElEQVRJT05fQkFUQ0hfTVMgPSAyNTtcbmNvbnN0IERFRkFVTFRfTUFYX0VOVFJJRVMgPSAxXzAwMDtcbmNvbnN0IERFRkFVTFRfTUFYX0JZVEVTID0gNjQgKiAxMDI0ICogMTAyNDtcbmNvbnN0IERFRkFVTFRfTUFYX1NDT1BFUyA9IDI1NjtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJmaWxlcy1jYWNoZVwiKTtcblxuaW50ZXJmYWNlIFJldGFpbmVkRW50cnkge1xuICB2YWx1ZTogQ2FjaGVWYWx1ZTtcbn1cblxuaW50ZXJmYWNlIFNjb3BlU3RhdGUge1xuICBjYWNoZTogRmlsZVN5c3RlbUNhY2hlO1xuICBlbnRyaWVzOiBMUlVDYWNoZTxzdHJpbmcsIFJldGFpbmVkRW50cnk+O1xuICBncm91cDogR3JvdXBTdGF0ZTtcbiAgc2NvcGU6IFJlc29sdmVkRmlsZXNDYWNoZVNjb3BlO1xuICBzb3VyY2VzOiBNYXA8c3RyaW5nLCBQcm9taXNlPG9iamVjdD4+O1xufVxuXG5pbnRlcmZhY2UgR3JvdXBTdGF0ZSB7XG4gIHBlbmRpbmc6IFNldDxzdHJpbmc+O1xuICBzY29wZXM6IFNldDxTY29wZVN0YXRlPjtcbiAgdGltZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0Pjtcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVkRmlsZXNDYWNoZUNvbmZpZyB7XG4gIGludmFsaWRhdGlvbkJhdGNoTXM6IG51bWJlcjtcbiAgbWF4Qnl0ZXM6IG51bWJlcjtcbiAgbWF4RW50cmllczogbnVtYmVyO1xuICBtYXhTY29wZXM6IG51bWJlcjtcbiAgdHRsTXM6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVkRmlsZXNDYWNoZVNjb3BlIHtcbiAgaG9zdDogc3RyaW5nO1xuICB0dGxNczogbnVtYmVyO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIHdvcmtzcGFjZUlkPzogc3RyaW5nO1xufVxuXG4vKiogQ29uZmlndXJhdGlvbiBmb3IgdGhlIEFwcEtpdCBmaWxlcy1jYWNoZSBwbHVnaW4uICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVzQ2FjaGVQbHVnaW5Db25maWcgZXh0ZW5kcyBCYXNlUGx1Z2luQ29uZmlnIHtcbiAgLyoqIERlZmF1bHQgZW50cnkgVFRMIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8gNjAgc2Vjb25kcy4gKi9cbiAgdHRsTXM/OiBudW1iZXI7XG4gIC8qKiBJbnZhbGlkYXRpb24gZGVib3VuY2Ugd2luZG93IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8gMjVtcy4gKi9cbiAgaW52YWxpZGF0aW9uQmF0Y2hNcz86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gZW50cmllcyByZXRhaW5lZCBpbiBlYWNoIHVzZXIgTDEuIERlZmF1bHRzIHRvIDEsMDAwLiAqL1xuICBtYXhFbnRyaWVzPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSByZXRhaW5lZCBieXRlcyBpbiBlYWNoIHVzZXIgTDEuIERlZmF1bHRzIHRvIDY0IE1pQi4gKi9cbiAgbWF4Qnl0ZXM/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIGFjdGl2ZSB1c2VyIHNjb3BlcyByZXRhaW5lZCBieSB0aGUgcHJvY2Vzcy4gRGVmYXVsdHMgdG8gMjU2LiAqL1xuICBtYXhTY29wZXM/OiBudW1iZXI7XG59XG5cbi8qKiBJZGVudGl0eSBmb3Igb25lIGF1dGhvcml6YXRpb24tc2FmZSBmaWxlc3lzdGVtIGNhY2hlIHNjb3BlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlc0NhY2hlU2NvcGUge1xuICAvKiogRGF0YWJyaWNrcyB3b3Jrc3BhY2UgaG9zdC4gKi9cbiAgaG9zdDogc3RyaW5nO1xuICAvKiogQXR0cmlidXRlZCB1c2VyIGlkZW50aWZpZXIgdXNlZCB0byBpc29sYXRlIHZhbHVlcy4gKi9cbiAgdXNlcktleTogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgd29ya3NwYWNlIGlkZW50aWZpZXIgaW5jbHVkZWQgaW4gc2hhcmVkIGludmFsaWRhdGlvbiBzY29wZS4gKi9cbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBwZXItc2NvcGUgZW50cnkgVFRMIG92ZXJyaWRlIGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgdHRsTXM/OiBudW1iZXI7XG59XG5cbi8qKiBTdGFibGUgaWRlbnRpdHkgZm9yIGEgZnJhbWV3b3JrIGZpbGVzeXN0ZW0gc291cmNlIHJldGFpbmVkIHdpdGhpbiBvbmUgdXNlciBzY29wZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZXNDYWNoZVNvdXJjZUlkZW50aXR5IHtcbiAgLyoqIEFjdHVhbCBtb3VudGVkIGZpbGVzeXN0ZW0gcGF0aHMgcmVwcmVzZW50ZWQgYnkgdGhlIHNvdXJjZS4gKi9cbiAgcGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKiogUHVibGljIGV4cG9ydHMgZnJvbSB7QGxpbmsgRmlsZXNDYWNoZVBsdWdpbn0uICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVzQ2FjaGVFeHBvcnRzIHtcbiAgLyoqIFJlc29sdmUgb25lIHVzZXItaXNvbGF0ZWQgZmlsZXN5c3RlbSBjYWNoZS4gKi9cbiAgZm9yU2NvcGUoc2NvcGU6IEZpbGVzQ2FjaGVTY29wZSk6IFByb21pc2U8RmlsZVN5c3RlbUNhY2hlPjtcbiAgLyoqIFJlc29sdmUgb25lIGFwcC1saWZldGltZSBmaWxlc3lzdGVtIHNvdXJjZSBmb3IgYSB1c2VyIGFuZCBpdHMgYWN0dWFsIG1vdW50ZWQgcGF0aHMuICovXG4gIGZvckZpbGVTeXN0ZW08VCBleHRlbmRzIG9iamVjdD4oXG4gICAgc2NvcGU6IEZpbGVzQ2FjaGVTY29wZSxcbiAgICBpZGVudGl0eTogRmlsZXNDYWNoZVNvdXJjZUlkZW50aXR5LFxuICAgIGxvYWQ6ICgpID0+IFQgfCBQcm9taXNlPFQ+LFxuICApOiBQcm9taXNlPFQ+O1xuICAvKiogRmx1c2ggcGVuZGluZyBpbnZhbGlkYXRpb24gYmF0Y2hlcy4gKi9cbiAgZmx1c2goKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIFByb2Nlc3MtbG9jYWwgZmlsZXN5c3RlbSBjYWNoZSBtYW5hZ2VyLiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVzQ2FjaGVNYW5hZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFJlc29sdmVkRmlsZXNDYWNoZUNvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBncm91cHMgPSBuZXcgTWFwPHN0cmluZywgR3JvdXBTdGF0ZT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzY29wZXM6IExSVUNhY2hlPHN0cmluZywgU2NvcGVTdGF0ZT47XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBGaWxlc0NhY2hlUGx1Z2luQ29uZmlnID0ge30pIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIHR0bE1zOiBwb3NpdGl2ZUR1cmF0aW9uKGNvbmZpZy50dGxNcywgREVGQVVMVF9UVExfTVMsIFwidHRsTXNcIiksXG4gICAgICBpbnZhbGlkYXRpb25CYXRjaE1zOiBwb3NpdGl2ZUR1cmF0aW9uKFxuICAgICAgICBjb25maWcuaW52YWxpZGF0aW9uQmF0Y2hNcyxcbiAgICAgICAgREVGQVVMVF9JTlZBTElEQVRJT05fQkFUQ0hfTVMsXG4gICAgICAgIFwiaW52YWxpZGF0aW9uQmF0Y2hNc1wiLFxuICAgICAgKSxcbiAgICAgIG1heEVudHJpZXM6IHBvc2l0aXZlSW50ZWdlcihjb25maWcubWF4RW50cmllcywgREVGQVVMVF9NQVhfRU5UUklFUywgXCJtYXhFbnRyaWVzXCIpLFxuICAgICAgbWF4Qnl0ZXM6IHBvc2l0aXZlSW50ZWdlcihjb25maWcubWF4Qnl0ZXMsIERFRkFVTFRfTUFYX0JZVEVTLCBcIm1heEJ5dGVzXCIpLFxuICAgICAgbWF4U2NvcGVzOiBwb3NpdGl2ZUludGVnZXIoY29uZmlnLm1heFNjb3BlcywgREVGQVVMVF9NQVhfU0NPUEVTLCBcIm1heFNjb3Blc1wiKSxcbiAgICB9O1xuICAgIHRoaXMuc2NvcGVzID0gbmV3IExSVUNhY2hlKHtcbiAgICAgIG1heDogdGhpcy5jb25maWcubWF4U2NvcGVzLFxuICAgICAgZGlzcG9zZTogKHN0YXRlKSA9PiB7XG4gICAgICAgIHN0YXRlLmdyb3VwLnNjb3Blcy5kZWxldGUoc3RhdGUpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gb25lIHVzZXItaXNvbGF0ZWQgY2FjaGUgd2l0aGluIGEgaG9zdC93b3Jrc3BhY2UgaW52YWxpZGF0aW9uIGdyb3VwLiAqL1xuICBhc3luYyBmb3JTY29wZShpbnB1dDogRmlsZXNDYWNoZVNjb3BlKTogUHJvbWlzZTxGaWxlU3lzdGVtQ2FjaGU+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMucmVzb2x2ZVNjb3BlU3RhdGUoaW5wdXQpKS5jYWNoZTtcbiAgfVxuXG4gIC8qKiBSZXRhaW4gb25lIHN0YWJsZSBmcmFtZXdvcmsgZmlsZXN5c3RlbSBzb3VyY2UgZm9yIHRoZSBzY29wZSBhbmQgbW91bnRlZCBwYXRocy4gKi9cbiAgYXN5bmMgZm9yRmlsZVN5c3RlbTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgICBpbnB1dDogRmlsZXNDYWNoZVNjb3BlLFxuICAgIGlkZW50aXR5OiBGaWxlc0NhY2hlU291cmNlSWRlbnRpdHksXG4gICAgbG9hZDogKCkgPT4gVCB8IFByb21pc2U8VD4sXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgdGhpcy5yZXNvbHZlU2NvcGVTdGF0ZShpbnB1dCk7XG4gICAgY29uc3QgcGF0aHMgPSBpZGVudGl0eS5wYXRocy5tYXAoKHBhdGgpID0+IHBvc2l4UGF0aC5ub3JtYWxpemVSb290KHBhdGgpKTtcbiAgICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlsZXN5c3RlbSBzb3VyY2UgcGF0aHMgbXVzdCBub3QgYmUgZW1wdHlcIik7XG4gICAgY29uc3Qgc291cmNlS2V5ID0gb2JqZWN0LnRvU3RhYmxlS2V5KHsgcGF0aHMgfSk7XG4gICAgbGV0IHNvdXJjZSA9IHN0YXRlLnNvdXJjZXMuZ2V0KHNvdXJjZUtleSk7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIHNvdXJjZSA9IFByb21pc2UucmVzb2x2ZShsb2FkKCkpO1xuICAgICAgc3RhdGUuc291cmNlcy5zZXQoc291cmNlS2V5LCBzb3VyY2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChhd2FpdCBzb3VyY2UpIGFzIFQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChzdGF0ZS5zb3VyY2VzLmdldChzb3VyY2VLZXkpID09PSBzb3VyY2UpIHN0YXRlLnNvdXJjZXMuZGVsZXRlKHNvdXJjZUtleSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVTY29wZVN0YXRlKGlucHV0OiBGaWxlc0NhY2hlU2NvcGUpOiBQcm9taXNlPFNjb3BlU3RhdGU+IHtcbiAgICBjb25zdCBzY29wZSA9IHJlc29sdmVTY29wZShpbnB1dCwgdGhpcy5jb25maWcudHRsTXMpO1xuICAgIGNvbnN0IHNjb3BlS2V5ID0gb2JqZWN0LnRvU3RhYmxlS2V5KHtcbiAgICAgIGhvc3Q6IHNjb3BlLmhvc3QsXG4gICAgICB1c2VyS2V5OiBzY29wZS51c2VyS2V5LFxuICAgICAgd29ya3NwYWNlSWQ6IHNjb3BlLndvcmtzcGFjZUlkLFxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuc2NvcGVzLmdldChzY29wZUtleSk7XG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwKHNjb3BlKTtcbiAgICAgIHN0YXRlID0gdGhpcy5jcmVhdGVTY29wZShzY29wZSwgZ3JvdXApO1xuICAgICAgZ3JvdXAuc2NvcGVzLmFkZChzdGF0ZSk7XG4gICAgICB0aGlzLnNjb3Blcy5zZXQoc2NvcGVLZXksIHN0YXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLyoqIEZsdXNoIGV2ZXJ5IHBlbmRpbmcgaW52YWxpZGF0aW9uIGJhdGNoLiAqL1xuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbLi4udGhpcy5ncm91cHMudmFsdWVzKCldLm1hcCgoZ3JvdXApID0+IHRoaXMuZmx1c2hJbnZhbGlkYXRpb25zKGdyb3VwKSkpO1xuICB9XG5cbiAgLyoqIEZsdXNoIHN0YXRlIGFuZCByZWxlYXNlIGFsbCBwcm9jZXNzLWxvY2FsIGVudHJpZXMgYW5kIHRpbWVycy4gKi9cbiAgYXN5bmMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdyb3Vwcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGdyb3VwLnRpbWVyKSBjbGVhclRpbWVvdXQoZ3JvdXAudGltZXIpO1xuICAgICAgZ3JvdXAudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuZmx1c2goKTtcbiAgICB0aGlzLnNjb3Blcy5jbGVhcigpO1xuICAgIHRoaXMuZ3JvdXBzLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGdyb3VwKHNjb3BlOiBSZXNvbHZlZEZpbGVzQ2FjaGVTY29wZSk6IEdyb3VwU3RhdGUge1xuICAgIGNvbnN0IGtleSA9IG9iamVjdC50b1N0YWJsZUtleSh7XG4gICAgICBob3N0OiBzY29wZS5ob3N0LFxuICAgICAgd29ya3NwYWNlSWQ6IHNjb3BlLndvcmtzcGFjZUlkLFxuICAgIH0pO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5ncm91cHMuZ2V0KGtleSk7XG4gICAgaWYgKGV4aXN0aW5nKSByZXR1cm4gZXhpc3Rpbmc7XG4gICAgY29uc3QgZ3JvdXA6IEdyb3VwU3RhdGUgPSB7XG4gICAgICBwZW5kaW5nOiBuZXcgU2V0KCksXG4gICAgICBzY29wZXM6IG5ldyBTZXQoKSxcbiAgICB9O1xuICAgIHRoaXMuZ3JvdXBzLnNldChrZXksIGdyb3VwKTtcbiAgICByZXR1cm4gZ3JvdXA7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNjb3BlKHNjb3BlOiBSZXNvbHZlZEZpbGVzQ2FjaGVTY29wZSwgZ3JvdXA6IEdyb3VwU3RhdGUpOiBTY29wZVN0YXRlIHtcbiAgICBjb25zdCBzdGF0ZSA9IHt9IGFzIFNjb3BlU3RhdGU7XG4gICAgc3RhdGUuc2NvcGUgPSBzY29wZTtcbiAgICBzdGF0ZS5ncm91cCA9IGdyb3VwO1xuICAgIHN0YXRlLmVudHJpZXMgPSBuZXcgTFJVQ2FjaGUoe1xuICAgICAgbWF4OiB0aGlzLmNvbmZpZy5tYXhFbnRyaWVzLFxuICAgICAgbWF4U2l6ZTogdGhpcy5jb25maWcubWF4Qnl0ZXMsXG4gICAgICBzaXplQ2FsY3VsYXRpb246IChlbnRyeSwgY2FjaGVLZXkpID0+IHJldGFpbmVkU2l6ZShjYWNoZUtleSwgZW50cnkpLFxuICAgIH0pO1xuICAgIHN0YXRlLnNvdXJjZXMgPSBuZXcgTWFwKCk7XG4gICAgc3RhdGUuY2FjaGUgPSB7XG4gICAgICByZWFkOiA8VCBleHRlbmRzIENhY2hlVmFsdWU+KGNhY2hlS2V5OiBzdHJpbmcsIGxvYWQ6ICgpID0+IFQgfCBQcm9taXNlPFQ+KSA9PlxuICAgICAgICB0aGlzLnJlYWQoc3RhdGUsIGNhY2hlS2V5LCBsb2FkKSxcbiAgICAgIGludmFsaWRhdGU6IChjYWNoZUtleTogc3RyaW5nKSA9PiB0aGlzLnF1ZXVlSW52YWxpZGF0aW9uKHN0YXRlLCBjYWNoZUtleSksXG4gICAgICBrZXlzOiAoKSA9PiB0aGlzLmtleXMoc3RhdGUpLFxuICAgIH07XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWFkPFQgZXh0ZW5kcyBDYWNoZVZhbHVlPihcbiAgICBzdGF0ZTogU2NvcGVTdGF0ZSxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBsb2FkOiAoKSA9PiBUIHwgUHJvbWlzZTxUPixcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFzdGF0ZS5ncm91cC5wZW5kaW5nLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCByZXRhaW5lZCA9IHN0YXRlLmVudHJpZXMuZ2V0KGtleSk7XG4gICAgICBpZiAocmV0YWluZWQpIHJldHVybiByZXRhaW5lZC52YWx1ZSBhcyBUO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGxvYWQoKTtcbiAgICBzdGF0ZS5lbnRyaWVzLnNldChrZXksIHsgdmFsdWUgfSwgeyB0dGw6IHN0YXRlLnNjb3BlLnR0bE1zIH0pO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgKmtleXMoc3RhdGU6IFNjb3BlU3RhdGUpOiBJdGVyYWJsZTxzdHJpbmc+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzdGF0ZS5lbnRyaWVzLmtleXMoKSkge1xuICAgICAgaWYgKCFzdGF0ZS5ncm91cC5wZW5kaW5nLmhhcyhrZXkpKSB5aWVsZCBrZXk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUludmFsaWRhdGlvbihzdGF0ZTogU2NvcGVTdGF0ZSwga2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzdGF0ZS5ncm91cC5wZW5kaW5nLmFkZChrZXkpO1xuICAgIGlmIChzdGF0ZS5ncm91cC50aW1lcikgcmV0dXJuO1xuICAgIHN0YXRlLmdyb3VwLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzdGF0ZS5ncm91cC50aW1lciA9IHVuZGVmaW5lZDtcbiAgICAgIHZvaWQgdGhpcy5mbHVzaEludmFsaWRhdGlvbnMoc3RhdGUuZ3JvdXApLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBsb2dnZXIud2FybihcImZpbGVzeXN0ZW0gY2FjaGUgaW52YWxpZGF0aW9uIGJhdGNoIGZhaWxlZFwiLCB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yVXRpbHMuZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCB0aGlzLmNvbmZpZy5pbnZhbGlkYXRpb25CYXRjaE1zKTtcbiAgICBzdGF0ZS5ncm91cC50aW1lci51bnJlZj8uKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZsdXNoSW52YWxpZGF0aW9ucyhncm91cDogR3JvdXBTdGF0ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChncm91cC50aW1lcikgY2xlYXJUaW1lb3V0KGdyb3VwLnRpbWVyKTtcbiAgICBncm91cC50aW1lciA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZ3JvdXAucGVuZGluZy5zaXplID09PSAwKSByZXR1cm47XG4gICAgY29uc3Qga2V5cyA9IFsuLi5ncm91cC5wZW5kaW5nXTtcbiAgICBncm91cC5wZW5kaW5nLmNsZWFyKCk7XG4gICAgZm9yIChjb25zdCBzdGF0ZSBvZiBncm91cC5zY29wZXMpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHN0YXRlLmVudHJpZXMuZGVsZXRlKGtleSk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBBcHBLaXQgcGx1Z2luIHRoYXQgb3ducyBwcm9jZXNzLWxvY2FsIGZpbGVzeXN0ZW0gTFJVIGNhY2hlcy4gKi9cbmV4cG9ydCBjbGFzcyBGaWxlc0NhY2hlUGx1Z2luIGV4dGVuZHMgUGx1Z2luPEZpbGVzQ2FjaGVQbHVnaW5Db25maWc+IHtcbiAgc3RhdGljIG1hbmlmZXN0ID0ge1xuICAgIG5hbWU6IFwiZmlsZXMtY2FjaGVcIixcbiAgICBkaXNwbGF5TmFtZTogXCJGaWxlcyBDYWNoZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlByb3ZpZGVzIGJvdW5kZWQgdXNlci1zY29wZWQgcHJvY2Vzcy1sb2NhbCBmaWxlc3lzdGVtIGNhY2hlcy5cIixcbiAgICBzdGFiaWxpdHk6IFwiYmV0YVwiLFxuICAgIHJlc291cmNlczogeyByZXF1aXJlZDogW10sIG9wdGlvbmFsOiBbXSB9LFxuICB9IHNhdGlzZmllcyBQbHVnaW5NYW5pZmVzdDxcImZpbGVzLWNhY2hlXCI+O1xuXG4gIHByaXZhdGUgbWFuYWdlcj86IEZpbGVzQ2FjaGVNYW5hZ2VyO1xuXG4gIG92ZXJyaWRlIGFzeW5jIHNldHVwKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubWFuYWdlciA9IG5ldyBGaWxlc0NhY2hlTWFuYWdlcih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5jb250ZXh0Py5vbkxpZmVjeWNsZShcInNodXRkb3duXCIsICgpID0+IHRoaXMubWFuYWdlcj8uY2xvc2UoKSk7XG4gIH1cblxuICBvdmVycmlkZSBleHBvcnRzKCk6IEZpbGVzQ2FjaGVFeHBvcnRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9yU2NvcGU6IChzY29wZSkgPT4gdGhpcy5yZXF1aXJlTWFuYWdlcigpLmZvclNjb3BlKHNjb3BlKSxcbiAgICAgIGZvckZpbGVTeXN0ZW06IChzY29wZSwgaWRlbnRpdHksIGxvYWQpID0+XG4gICAgICAgIHRoaXMucmVxdWlyZU1hbmFnZXIoKS5mb3JGaWxlU3lzdGVtKHNjb3BlLCBpZGVudGl0eSwgbG9hZCksXG4gICAgICBmbHVzaDogKCkgPT4gdGhpcy5yZXF1aXJlTWFuYWdlcigpLmZsdXNoKCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVxdWlyZU1hbmFnZXIoKTogRmlsZXNDYWNoZU1hbmFnZXIge1xuICAgIGlmICghdGhpcy5tYW5hZ2VyKSB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlcyBjYWNoZSBwbHVnaW4gaGFzIG5vdCBjb21wbGV0ZWQgc2V0dXBcIik7XG4gICAgcmV0dXJuIHRoaXMubWFuYWdlcjtcbiAgfVxufVxuXG4vKiogQXBwS2l0IHJlZ2lzdHJhdGlvbiBmYWN0b3J5IGZvciB7QGxpbmsgRmlsZXNDYWNoZVBsdWdpbn0uICovXG5leHBvcnQgY29uc3QgZmlsZXNDYWNoZSA9IHRvUGx1Z2luKEZpbGVzQ2FjaGVQbHVnaW4pO1xuXG5mdW5jdGlvbiByZXNvbHZlU2NvcGUoaW5wdXQ6IEZpbGVzQ2FjaGVTY29wZSwgZGVmYXVsdFR0bE1zOiBudW1iZXIpOiBSZXNvbHZlZEZpbGVzQ2FjaGVTY29wZSB7XG4gIGNvbnN0IGhvc3QgPSBpbnB1dC5ob3N0LnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICBjb25zdCB1c2VyS2V5ID0gaW5wdXQudXNlcktleS50cmltKCk7XG4gIGNvbnN0IHdvcmtzcGFjZUlkID0gaW5wdXQud29ya3NwYWNlSWQ/LnRyaW0oKSB8fCB1bmRlZmluZWQ7XG4gIGlmICghaG9zdCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpbGVzIGNhY2hlIHNjb3BlIGhvc3QgbXVzdCBub3QgYmUgYmxhbmtcIik7XG4gIGlmICghdXNlcktleSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpbGVzIGNhY2hlIHNjb3BlIHVzZXJLZXkgbXVzdCBub3QgYmUgYmxhbmtcIik7XG4gIHJldHVybiB7XG4gICAgaG9zdCxcbiAgICB1c2VyS2V5LFxuICAgIC4uLih3b3Jrc3BhY2VJZCA/IHsgd29ya3NwYWNlSWQgfSA6IHt9KSxcbiAgICB0dGxNczogcG9zaXRpdmVEdXJhdGlvbihpbnB1dC50dGxNcywgZGVmYXVsdFR0bE1zLCBcInNjb3BlLnR0bE1zXCIpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBwb3NpdGl2ZUR1cmF0aW9uKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsIGZhbGxiYWNrOiBudW1iZXIsIG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHJlc29sdmVkID0gdmFsdWUgPz8gZmFsbGJhY2s7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHJlc29sdmVkKSB8fCByZXNvbHZlZCA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCR7bmFtZX0gbXVzdCBiZSBhIGZpbml0ZSBwb3NpdGl2ZSBudW1iZXJgKTtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZWQ7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aXZlSW50ZWdlcih2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogbnVtYmVyLCBuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5mbG9vcihwb3NpdGl2ZUR1cmF0aW9uKHZhbHVlLCBmYWxsYmFjaywgbmFtZSkpO1xufVxuXG5mdW5jdGlvbiByZXRhaW5lZFNpemUoa2V5OiBzdHJpbmcsIGVudHJ5OiBSZXRhaW5lZEVudHJ5KTogbnVtYmVyIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gQnVmZmVyLmJ5dGVMZW5ndGgoa2V5KSArIEJ1ZmZlci5ieXRlTGVuZ3RoKEpTT04uc3RyaW5naWZ5KGVudHJ5LnZhbHVlKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgfVxufVxuIl19
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsZXMtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUE4QyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQXlDLE1BQU0sc0JBQXNCLENBQUM7QUFDeEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUM7QUFDOUIsTUFBTSw2QkFBNkIsR0FBRyxFQUFFLENBQUM7QUFDekMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7QUFDbEMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMzQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUMvQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBbUZ6Qyw4Q0FBOEM7QUFDOUMsTUFBTSxPQUFPLGlCQUFpQjtJQUNYLE1BQU0sQ0FBMkI7SUFDakMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0lBQ3ZDLE1BQU0sQ0FBK0I7SUFFdEQsWUFBWSxTQUFpQyxFQUFFO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO1lBQzlELG1CQUFtQixFQUFFLGdCQUFnQixDQUNuQyxNQUFNLENBQUMsbUJBQW1CLEVBQzFCLDZCQUE2QixFQUM3QixxQkFBcUIsQ0FDdEI7WUFDRCxVQUFVLEVBQUUsZUFBZSxDQUFDLE1BQU0s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QUFDLEtBQXlCLEVBQUUsUUFBZ0IsRUFBRSxJQUFZO0lBQ2hGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEdBQVcsRUFBRSxLQUFvQjtJQUNyRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBwS2l0LWdsb2JhbCBmaWxlc3lzdGVtIGNhY2hlIHdpdGggdXNlci1pc29sYXRlZCBwcm9jZXNzLWxvY2FsIExSVSB2YWx1ZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IFBsdWdpbiwgdG9QbHVnaW4sIHR5cGUgQmFzZVBsdWdpbkNvbmZpZywgdHlwZSBQbHVnaW5NYW5pZmVzdCB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGVycm9yVXRpbHMsIGxvZywgb2JqZWN0IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHBvc2l4UGF0aCwgdHlwZSBDYWNoZVZhbHVlLCB0eXBlIEZpbGVTeXN0ZW1DYWNoZSB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1mc1wiO1xuaW1wb3J0IHsgTFJVQ2FjaGUgfSBmcm9tIFwibHJ1LWNhY2hlXCI7XG5cbmNvbnN0IERFRkFVTFRfVFRMX01TID0gNjBfMDAwO1xuY29uc3QgREVGQVVMVF9JTlZBTElEQVRJT05fQkFUQ0hfTVMgPSAyNTtcbmNvbnN0IERFRkFVTFRfTUFYX0VOVFJJRVMgPSAxXzAwMDtcbmNvbnN0IERFRkFVTFRfTUFYX0JZVEVTID0gNjQgKiAxMDI0ICogMTAyNDtcbmNvbnN0IERFRkFVTFRfTUFYX1NDT1BFUyA9IDI1NjtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJmaWxlcy1jYWNoZVwiKTtcblxuaW50ZXJmYWNlIFJldGFpbmVkRW50cnkge1xuICB2YWx1ZTogQ2FjaGVWYWx1ZTtcbn1cblxuaW50ZXJmYWNlIFNjb3BlU3RhdGUge1xuICBjYWNoZTogRmlsZVN5c3RlbUNhY2hlO1xuICBlbnRyaWVzOiBMUlVDYWNoZTxzdHJpbmcsIFJldGFpbmVkRW50cnk+O1xuICBncm91cDogR3JvdXBTdGF0ZTtcbiAgc2NvcGU6IFJlc29sdmVkRmlsZXNDYWNoZVNjb3BlO1xuICBzb3VyY2VzOiBNYXA8c3RyaW5nLCBQcm9taXNlPG9iamVjdD4+O1xufVxuXG5pbnRlcmZhY2UgR3JvdXBTdGF0ZSB7XG4gIHBlbmRpbmc6IFNldDxzdHJpbmc+O1xuICBzY29wZXM6IFNldDxTY29wZVN0YXRlPjtcbiAgdGltZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0Pjtcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVkRmlsZXNDYWNoZUNvbmZpZyB7XG4gIGludmFsaWRhdGlvbkJhdGNoTXM6IG51bWJlcjtcbiAgbWF4Qnl0ZXM6IG51bWJlcjtcbiAgbWF4RW50cmllczogbnVtYmVyO1xuICBtYXhTY29wZXM6IG51bWJlcjtcbiAgdHRsTXM6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVkRmlsZXNDYWNoZVNjb3BlIHtcbiAgaG9zdDogc3RyaW5nO1xuICB0dGxNczogbnVtYmVyO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIHdvcmtzcGFjZUlkPzogc3RyaW5nO1xufVxuXG4vKiogQ29uZmlndXJhdGlvbiBmb3IgdGhlIEFwcEtpdCBmaWxlcy1jYWNoZSBwbHVnaW4uICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVzQ2FjaGVQbHVnaW5Db25maWcgZXh0ZW5kcyBCYXNlUGx1Z2luQ29uZmlnIHtcbiAgLyoqIERlZmF1bHQgZW50cnkgVFRMIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8gNjAgc2Vjb25kcy4gKi9cbiAgdHRsTXM/OiBudW1iZXI7XG4gIC8qKiBJbnZhbGlkYXRpb24gZGVib3VuY2Ugd2luZG93IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8gMjVtcy4gKi9cbiAgaW52YWxpZGF0aW9uQmF0Y2hNcz86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gZW50cmllcyByZXRhaW5lZCBpbiBlYWNoIHVzZXIgTDEuIERlZmF1bHRzIHRvIDEsMDAwLiAqL1xuICBtYXhFbnRyaWVzPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSByZXRhaW5lZCBieXRlcyBpbiBlYWNoIHVzZXIgTDEuIERlZmF1bHRzIHRvIDY0IE1pQi4gKi9cbiAgbWF4Qnl0ZXM/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIGFjdGl2ZSB1c2VyIHNjb3BlcyByZXRhaW5lZCBieSB0aGUgcHJvY2Vzcy4gRGVmYXVsdHMgdG8gMjU2LiAqL1xuICBtYXhTY29wZXM/OiBudW1iZXI7XG59XG5cbi8qKiBJZGVudGl0eSBmb3Igb25lIGF1dGhvcml6YXRpb24tc2FmZSBmaWxlc3lzdGVtIGNhY2hlIHNjb3BlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlc0NhY2hlU2NvcGUge1xuICAvKiogRGF0YWJyaWNrcyB3b3Jrc3BhY2UgaG9zdC4gKi9cbiAgaG9zdDogc3RyaW5nO1xuICAvKiogQXR0cmlidXRlZCB1c2VyIGlkZW50aWZpZXIgdXNlZCB0byBpc29sYXRlIHZhbHVlcy4gKi9cbiAgdXNlcktleTogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgd29ya3NwYWNlIGlkZW50aWZpZXIgaW5jbHVkZWQgaW4gc2hhcmVkIGludmFsaWRhdGlvbiBzY29wZS4gKi9cbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBwZXItc2NvcGUgZW50cnkgVFRMIG92ZXJyaWRlIGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgdHRsTXM/OiBudW1iZXI7XG59XG5cbi8qKiBTdGFibGUgaWRlbnRpdHkgZm9yIGEgZnJhbWV3b3JrIGZpbGVzeXN0ZW0gc291cmNlIHJldGFpbmVkIHdpdGhpbiBvbmUgdXNlciBzY29wZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZXNDYWNoZVNvdXJjZUlkZW50aXR5IHtcbiAgLyoqIEFjdHVhbCBtb3VudGVkIGZpbGVzeXN0ZW0gcGF0aHMgcmVwcmVzZW50ZWQgYnkgdGhlIHNvdXJjZS4gKi9cbiAgcGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogV29ya3NwYWNlLWluc3RhbmNlIGtleSBzZXBhcmF0aW5nIHNvdXJjZXMgd2l0aCBkaWZmZXJlbnQgcG9saWNpZXMgb3ZlciB0aGUgc2FtZSBwYXRocy4gKi9cbiAga2V5Pzogc3RyaW5nO1xufVxuXG4vKiogUHVibGljIGV4cG9ydHMgZnJvbSB7QGxpbmsgRmlsZXNDYWNoZVBsdWdpbn0uICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVzQ2FjaGVFeHBvcnRzIHtcbiAgLyoqIFJlc29sdmUgb25lIHVzZXItaXNvbGF0ZWQgZmlsZXN5c3RlbSBjYWNoZS4gKi9cbiAgZm9yU2NvcGUoc2NvcGU6IEZpbGVzQ2FjaGVTY29wZSk6IFByb21pc2U8RmlsZVN5c3RlbUNhY2hlPjtcbiAgLyoqIFJlc29sdmUgb25lIGFwcC1saWZldGltZSBmaWxlc3lzdGVtIHNvdXJjZSBmb3IgYSB1c2VyIGFuZCBpdHMgYWN0dWFsIG1vdW50ZWQgcGF0aHMuICovXG4gIGZvckZpbGVTeXN0ZW08VCBleHRlbmRzIG9iamVjdD4oXG4gICAgc2NvcGU6IEZpbGVzQ2FjaGVTY29wZSxcbiAgICBpZGVudGl0eTogRmlsZXNDYWNoZVNvdXJjZUlkZW50aXR5LFxuICAgIGxvYWQ6ICgpID0+IFQgfCBQcm9taXNlPFQ+LFxuICApOiBQcm9taXNlPFQ+O1xuICAvKiogRmx1c2ggcGVuZGluZyBpbnZhbGlkYXRpb24gYmF0Y2hlcy4gKi9cbiAgZmx1c2goKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIFByb2Nlc3MtbG9jYWwgZmlsZXN5c3RlbSBjYWNoZSBtYW5hZ2VyLiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVzQ2FjaGVNYW5hZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFJlc29sdmVkRmlsZXNDYWNoZUNvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBncm91cHMgPSBuZXcgTWFwPHN0cmluZywgR3JvdXBTdGF0ZT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzY29wZXM6IExSVUNhY2hlPHN0cmluZywgU2NvcGVTdGF0ZT47XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBGaWxlc0NhY2hlUGx1Z2luQ29uZmlnID0ge30pIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIHR0bE1zOiBwb3NpdGl2ZUR1cmF0aW9uKGNvbmZpZy50dGxNcywgREVGQVVMVF9UVExfTVMsIFwidHRsTXNcIiksXG4gICAgICBpbnZhbGlkYXRpb25CYXRjaE1zOiBwb3NpdGl2ZUR1cmF0aW9uKFxuICAgICAgICBjb25maWcuaW52YWxpZGF0aW9uQmF0Y2hNcyxcbiAgICAgICAgREVGQVVMVF9JTlZBTElEQVRJT05fQkFUQ0hfTVMsXG4gICAgICAgIFwiaW52YWxpZGF0aW9uQmF0Y2hNc1wiLFxuICAgICAgKSxcbiAgICAgIG1heEVudHJpZXM6IHBvc2l0aXZlSW50ZWdlcihjb25maWcubWF4RW50cmllcywgREVGQVVMVF9NQVhfRU5UUklFUywgXCJtYXhFbnRyaWVzXCIpLFxuICAgICAgbWF4Qnl0ZXM6IHBvc2l0aXZlSW50ZWdlcihjb25maWcubWF4Qnl0ZXMsIERFRkFVTFRfTUFYX0JZVEVTLCBcIm1heEJ5dGVzXCIpLFxuICAgICAgbWF4U2NvcGVzOiBwb3NpdGl2ZUludGVnZXIoY29uZmlnLm1heFNjb3BlcywgREVGQVVMVF9NQVhfU0NPUEVTLCBcIm1heFNjb3Blc1wiKSxcbiAgICB9O1xuICAgIHRoaXMuc2NvcGVzID0gbmV3IExSVUNhY2hlKHtcbiAgICAgIG1heDogdGhpcy5jb25maWcubWF4U2NvcGVzLFxuICAgICAgZGlzcG9zZTogKHN0YXRlKSA9PiB7XG4gICAgICAgIHN0YXRlLmdyb3VwLnNjb3Blcy5kZWxldGUoc3RhdGUpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gb25lIHVzZXItaXNvbGF0ZWQgY2FjaGUgd2l0aGluIGEgaG9zdC93b3Jrc3BhY2UgaW52YWxpZGF0aW9uIGdyb3VwLiAqL1xuICBhc3luYyBmb3JTY29wZShpbnB1dDogRmlsZXNDYWNoZVNjb3BlKTogUHJvbWlzZTxGaWxlU3lzdGVtQ2FjaGU+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMucmVzb2x2ZVNjb3BlU3RhdGUoaW5wdXQpKS5jYWNoZTtcbiAgfVxuXG4gIC8qKiBSZXRhaW4gb25lIHN0YWJsZSBmcmFtZXdvcmsgZmlsZXN5c3RlbSBzb3VyY2UgZm9yIHRoZSBzY29wZSBhbmQgbW91bnRlZCBwYXRocy4gKi9cbiAgYXN5bmMgZm9yRmlsZVN5c3RlbTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgICBpbnB1dDogRmlsZXNDYWNoZVNjb3BlLFxuICAgIGlkZW50aXR5OiBGaWxlc0NhY2hlU291cmNlSWRlbnRpdHksXG4gICAgbG9hZDogKCkgPT4gVCB8IFByb21pc2U8VD4sXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgdGhpcy5yZXNvbHZlU2NvcGVTdGF0ZShpbnB1dCk7XG4gICAgY29uc3QgcGF0aHMgPSBpZGVudGl0eS5wYXRocy5tYXAoKHBhdGgpID0+IHBvc2l4UGF0aC5ub3JtYWxpemVSb290KHBhdGgpKTtcbiAgICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlsZXN5c3RlbSBzb3VyY2UgcGF0aHMgbXVzdCBub3QgYmUgZW1wdHlcIik7XG4gICAgY29uc3Qgc291cmNlS2V5ID0gb2JqZWN0LnRvU3RhYmxlS2V5KHsgcGF0aHMsIGtleTogaWRlbnRpdHkua2V5IH0pO1xuICAgIGxldCBzb3VyY2UgPSBzdGF0ZS5zb3VyY2VzLmdldChzb3VyY2VLZXkpO1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICBzb3VyY2UgPSBQcm9taXNlLnJlc29sdmUobG9hZCgpKTtcbiAgICAgIHN0YXRlLnNvdXJjZXMuc2V0KHNvdXJjZUtleSwgc291cmNlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoYXdhaXQgc291cmNlKSBhcyBUO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoc3RhdGUuc291cmNlcy5nZXQoc291cmNlS2V5KSA9PT0gc291cmNlKSBzdGF0ZS5zb3VyY2VzLmRlbGV0ZShzb3VyY2VLZXkpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNvbHZlU2NvcGVTdGF0ZShpbnB1dDogRmlsZXNDYWNoZVNjb3BlKTogUHJvbWlzZTxTY29wZVN0YXRlPiB7XG4gICAgY29uc3Qgc2NvcGUgPSByZXNvbHZlU2NvcGUoaW5wdXQsIHRoaXMuY29uZmlnLnR0bE1zKTtcbiAgICBjb25zdCBzY29wZUtleSA9IG9iamVjdC50b1N0YWJsZUtleSh7XG4gICAgICBob3N0OiBzY29wZS5ob3N0LFxuICAgICAgdXNlcktleTogc2NvcGUudXNlcktleSxcbiAgICAgIHdvcmtzcGFjZUlkOiBzY29wZS53b3Jrc3BhY2VJZCxcbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLnNjb3Blcy5nZXQoc2NvcGVLZXkpO1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5ncm91cChzY29wZSk7XG4gICAgICBzdGF0ZSA9IHRoaXMuY3JlYXRlU2NvcGUoc2NvcGUsIGdyb3VwKTtcbiAgICAgIGdyb3VwLnNjb3Blcy5hZGQoc3RhdGUpO1xuICAgICAgdGhpcy5zY29wZXMuc2V0KHNjb3BlS2V5LCBzdGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8qKiBGbHVzaCBldmVyeSBwZW5kaW5nIGludmFsaWRhdGlvbiBiYXRjaC4gKi9cbiAgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoWy4uLnRoaXMuZ3JvdXBzLnZhbHVlcygpXS5tYXAoKGdyb3VwKSA9PiB0aGlzLmZsdXNoSW52YWxpZGF0aW9ucyhncm91cCkpKTtcbiAgfVxuXG4gIC8qKiBGbHVzaCBzdGF0ZSBhbmQgcmVsZWFzZSBhbGwgcHJvY2Vzcy1sb2NhbCBlbnRyaWVzIGFuZCB0aW1lcnMuICovXG4gIGFzeW5jIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5ncm91cHMudmFsdWVzKCkpIHtcbiAgICAgIGlmIChncm91cC50aW1lcikgY2xlYXJUaW1lb3V0KGdyb3VwLnRpbWVyKTtcbiAgICAgIGdyb3VwLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmZsdXNoKCk7XG4gICAgdGhpcy5zY29wZXMuY2xlYXIoKTtcbiAgICB0aGlzLmdyb3Vwcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBncm91cChzY29wZTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUpOiBHcm91cFN0YXRlIHtcbiAgICBjb25zdCBrZXkgPSBvYmplY3QudG9TdGFibGVLZXkoe1xuICAgICAgaG9zdDogc2NvcGUuaG9zdCxcbiAgICAgIHdvcmtzcGFjZUlkOiBzY29wZS53b3Jrc3BhY2VJZCxcbiAgICB9KTtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuZ3JvdXBzLmdldChrZXkpO1xuICAgIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nO1xuICAgIGNvbnN0IGdyb3VwOiBHcm91cFN0YXRlID0ge1xuICAgICAgcGVuZGluZzogbmV3IFNldCgpLFxuICAgICAgc2NvcGVzOiBuZXcgU2V0KCksXG4gICAgfTtcbiAgICB0aGlzLmdyb3Vwcy5zZXQoa2V5LCBncm91cCk7XG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTY29wZShzY29wZTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUsIGdyb3VwOiBHcm91cFN0YXRlKTogU2NvcGVTdGF0ZSB7XG4gICAgY29uc3Qgc3RhdGUgPSB7fSBhcyBTY29wZVN0YXRlO1xuICAgIHN0YXRlLnNjb3BlID0gc2NvcGU7XG4gICAgc3RhdGUuZ3JvdXAgPSBncm91cDtcbiAgICBzdGF0ZS5lbnRyaWVzID0gbmV3IExSVUNhY2hlKHtcbiAgICAgIG1heDogdGhpcy5jb25maWcubWF4RW50cmllcyxcbiAgICAgIG1heFNpemU6IHRoaXMuY29uZmlnLm1heEJ5dGVzLFxuICAgICAgc2l6ZUNhbGN1bGF0aW9uOiAoZW50cnksIGNhY2hlS2V5KSA9PiByZXRhaW5lZFNpemUoY2FjaGVLZXksIGVudHJ5KSxcbiAgICB9KTtcbiAgICBzdGF0ZS5zb3VyY2VzID0gbmV3IE1hcCgpO1xuICAgIHN0YXRlLmNhY2hlID0ge1xuICAgICAgcmVhZDogPFQgZXh0ZW5kcyBDYWNoZVZhbHVlPihjYWNoZUtleTogc3RyaW5nLCBsb2FkOiAoKSA9PiBUIHwgUHJvbWlzZTxUPikgPT5cbiAgICAgICAgdGhpcy5yZWFkKHN0YXRlLCBjYWNoZUtleSwgbG9hZCksXG4gICAgICBpbnZhbGlkYXRlOiAoY2FjaGVLZXk6IHN0cmluZykgPT4gdGhpcy5xdWV1ZUludmFsaWRhdGlvbihzdGF0ZSwgY2FjaGVLZXkpLFxuICAgICAga2V5czogKCkgPT4gdGhpcy5rZXlzKHN0YXRlKSxcbiAgICB9O1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVhZDxUIGV4dGVuZHMgQ2FjaGVWYWx1ZT4oXG4gICAgc3RhdGU6IFNjb3BlU3RhdGUsXG4gICAga2V5OiBzdHJpbmcsXG4gICAgbG9hZDogKCkgPT4gVCB8IFByb21pc2U8VD4sXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGlmICghc3RhdGUuZ3JvdXAucGVuZGluZy5oYXMoa2V5KSkge1xuICAgICAgY29uc3QgcmV0YWluZWQgPSBzdGF0ZS5lbnRyaWVzLmdldChrZXkpO1xuICAgICAgaWYgKHJldGFpbmVkKSByZXR1cm4gcmV0YWluZWQudmFsdWUgYXMgVDtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBhd2FpdCBsb2FkKCk7XG4gICAgc3RhdGUuZW50cmllcy5zZXQoa2V5LCB7IHZhbHVlIH0sIHsgdHRsOiBzdGF0ZS5zY29wZS50dGxNcyB9KTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlICprZXlzKHN0YXRlOiBTY29wZVN0YXRlKTogSXRlcmFibGU8c3RyaW5nPiB7XG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc3RhdGUuZW50cmllcy5rZXlzKCkpIHtcbiAgICAgIGlmICghc3RhdGUuZ3JvdXAucGVuZGluZy5oYXMoa2V5KSkgeWllbGQga2V5O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVJbnZhbGlkYXRpb24oc3RhdGU6IFNjb3BlU3RhdGUsIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgc3RhdGUuZ3JvdXAucGVuZGluZy5hZGQoa2V5KTtcbiAgICBpZiAoc3RhdGUuZ3JvdXAudGltZXIpIHJldHVybjtcbiAgICBzdGF0ZS5ncm91cC50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc3RhdGUuZ3JvdXAudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICB2b2lkIHRoaXMuZmx1c2hJbnZhbGlkYXRpb25zKHN0YXRlLmdyb3VwKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJmaWxlc3lzdGVtIGNhY2hlIGludmFsaWRhdGlvbiBiYXRjaCBmYWlsZWRcIiwge1xuICAgICAgICAgIGVycm9yOiBlcnJvclV0aWxzLmVycm9yTWVzc2FnZShlcnJvciksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy5jb25maWcuaW52YWxpZGF0aW9uQmF0Y2hNcyk7XG4gICAgc3RhdGUuZ3JvdXAudGltZXIudW5yZWY/LigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmbHVzaEludmFsaWRhdGlvbnMoZ3JvdXA6IEdyb3VwU3RhdGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoZ3JvdXAudGltZXIpIGNsZWFyVGltZW91dChncm91cC50aW1lcik7XG4gICAgZ3JvdXAudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGdyb3VwLnBlbmRpbmcuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGtleXMgPSBbLi4uZ3JvdXAucGVuZGluZ107XG4gICAgZ3JvdXAucGVuZGluZy5jbGVhcigpO1xuICAgIGZvciAoY29uc3Qgc3RhdGUgb2YgZ3JvdXAuc2NvcGVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSBzdGF0ZS5lbnRyaWVzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgfVxufVxuXG4vKiogQXBwS2l0IHBsdWdpbiB0aGF0IG93bnMgcHJvY2Vzcy1sb2NhbCBmaWxlc3lzdGVtIExSVSBjYWNoZXMuICovXG5leHBvcnQgY2xhc3MgRmlsZXNDYWNoZVBsdWdpbiBleHRlbmRzIFBsdWdpbjxGaWxlc0NhY2hlUGx1Z2luQ29uZmlnPiB7XG4gIHN0YXRpYyBtYW5pZmVzdCA9IHtcbiAgICBuYW1lOiBcImZpbGVzLWNhY2hlXCIsXG4gICAgZGlzcGxheU5hbWU6IFwiRmlsZXMgQ2FjaGVcIixcbiAgICBkZXNjcmlwdGlvbjogXCJQcm92aWRlcyBib3VuZGVkIHVzZXItc2NvcGVkIHByb2Nlc3MtbG9jYWwgZmlsZXN5c3RlbSBjYWNoZXMuXCIsXG4gICAgc3RhYmlsaXR5OiBcImJldGFcIixcbiAgICByZXNvdXJjZXM6IHsgcmVxdWlyZWQ6IFtdLCBvcHRpb25hbDogW10gfSxcbiAgfSBzYXRpc2ZpZXMgUGx1Z2luTWFuaWZlc3Q8XCJmaWxlcy1jYWNoZVwiPjtcblxuICBwcml2YXRlIG1hbmFnZXI/OiBGaWxlc0NhY2hlTWFuYWdlcjtcblxuICBvdmVycmlkZSBhc3luYyBzZXR1cCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLm1hbmFnZXIgPSBuZXcgRmlsZXNDYWNoZU1hbmFnZXIodGhpcy5jb25maWcpO1xuICAgIHRoaXMuY29udGV4dD8ub25MaWZlY3ljbGUoXCJzaHV0ZG93blwiLCAoKSA9PiB0aGlzLm1hbmFnZXI/LmNsb3NlKCkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZXhwb3J0cygpOiBGaWxlc0NhY2hlRXhwb3J0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvclNjb3BlOiAoc2NvcGUpID0+IHRoaXMucmVxdWlyZU1hbmFnZXIoKS5mb3JTY29wZShzY29wZSksXG4gICAgICBmb3JGaWxlU3lzdGVtOiAoc2NvcGUsIGlkZW50aXR5LCBsb2FkKSA9PlxuICAgICAgICB0aGlzLnJlcXVpcmVNYW5hZ2VyKCkuZm9yRmlsZVN5c3RlbShzY29wZSwgaWRlbnRpdHksIGxvYWQpLFxuICAgICAgZmx1c2g6ICgpID0+IHRoaXMucmVxdWlyZU1hbmFnZXIoKS5mbHVzaCgpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlcXVpcmVNYW5hZ2VyKCk6IEZpbGVzQ2FjaGVNYW5hZ2VyIHtcbiAgICBpZiAoIXRoaXMubWFuYWdlcikgdGhyb3cgbmV3IEVycm9yKFwiRmlsZXMgY2FjaGUgcGx1Z2luIGhhcyBub3QgY29tcGxldGVkIHNldHVwXCIpO1xuICAgIHJldHVybiB0aGlzLm1hbmFnZXI7XG4gIH1cbn1cblxuLyoqIEFwcEtpdCByZWdpc3RyYXRpb24gZmFjdG9yeSBmb3Ige0BsaW5rIEZpbGVzQ2FjaGVQbHVnaW59LiAqL1xuZXhwb3J0IGNvbnN0IGZpbGVzQ2FjaGUgPSB0b1BsdWdpbihGaWxlc0NhY2hlUGx1Z2luKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVNjb3BlKGlucHV0OiBGaWxlc0NhY2hlU2NvcGUsIGRlZmF1bHRUdGxNczogbnVtYmVyKTogUmVzb2x2ZWRGaWxlc0NhY2hlU2NvcGUge1xuICBjb25zdCBob3N0ID0gaW5wdXQuaG9zdC50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgY29uc3QgdXNlcktleSA9IGlucHV0LnVzZXJLZXkudHJpbSgpO1xuICBjb25zdCB3b3Jrc3BhY2VJZCA9IGlucHV0LndvcmtzcGFjZUlkPy50cmltKCkgfHwgdW5kZWZpbmVkO1xuICBpZiAoIWhvc3QpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGaWxlcyBjYWNoZSBzY29wZSBob3N0IG11c3Qgbm90IGJlIGJsYW5rXCIpO1xuICBpZiAoIXVzZXJLZXkpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGaWxlcyBjYWNoZSBzY29wZSB1c2VyS2V5IG11c3Qgbm90IGJlIGJsYW5rXCIpO1xuICByZXR1cm4ge1xuICAgIGhvc3QsXG4gICAgdXNlcktleSxcbiAgICAuLi4od29ya3NwYWNlSWQgPyB7IHdvcmtzcGFjZUlkIH0gOiB7fSksXG4gICAgdHRsTXM6IHBvc2l0aXZlRHVyYXRpb24oaW5wdXQudHRsTXMsIGRlZmF1bHRUdGxNcywgXCJzY29wZS50dGxNc1wiKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpdmVEdXJhdGlvbih2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogbnVtYmVyLCBuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCByZXNvbHZlZCA9IHZhbHVlID8/IGZhbGxiYWNrO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShyZXNvbHZlZCkgfHwgcmVzb2x2ZWQgPD0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGAke25hbWV9IG11c3QgYmUgYSBmaW5pdGUgcG9zaXRpdmUgbnVtYmVyYCk7XG4gIH1cbiAgcmV0dXJuIHJlc29sdmVkO1xufVxuXG5mdW5jdGlvbiBwb3NpdGl2ZUludGVnZXIodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IG51bWJlciwgbmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IocG9zaXRpdmVEdXJhdGlvbih2YWx1ZSwgZmFsbGJhY2ssIG5hbWUpKTtcbn1cblxuZnVuY3Rpb24gcmV0YWluZWRTaXplKGtleTogc3RyaW5nLCBlbnRyeTogUmV0YWluZWRFbnRyeSk6IG51bWJlciB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5ieXRlTGVuZ3RoKGtleSkgKyBCdWZmZXIuYnl0ZUxlbmd0aChKU09OLnN0cmluZ2lmeShlbnRyeS52YWx1ZSkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@databricks/appkit": "0.81.0",
|
|
23
|
-
"@dbx-tools/projen": "^0.9.
|
|
23
|
+
"@dbx-tools/projen": "^0.9.99",
|
|
24
24
|
"@types/node": "^24.6.0",
|
|
25
25
|
"typescript": "^5.9.3",
|
|
26
26
|
"vitest": "3.2.4"
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@databricks/sdk-experimental": "^0.17.0",
|
|
33
|
-
"@dbx-tools/auth": "^0.9.
|
|
34
|
-
"@dbx-tools/core": "^0.9.
|
|
35
|
-
"@dbx-tools/lakebase": "^0.9.
|
|
36
|
-
"@dbx-tools/postgres": "^0.9.
|
|
37
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
38
|
-
"@dbx-tools/shared-fs": "^0.9.
|
|
33
|
+
"@dbx-tools/auth": "^0.9.99",
|
|
34
|
+
"@dbx-tools/core": "^0.9.99",
|
|
35
|
+
"@dbx-tools/lakebase": "^0.9.99",
|
|
36
|
+
"@dbx-tools/postgres": "^0.9.99",
|
|
37
|
+
"@dbx-tools/shared-core": "^0.9.99",
|
|
38
|
+
"@dbx-tools/shared-fs": "^0.9.99",
|
|
39
39
|
"lru-cache": "11.5.3",
|
|
40
40
|
"zod": "4.3.6"
|
|
41
41
|
},
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
"./package.json": "./package.json"
|
|
122
122
|
}
|
|
123
123
|
},
|
|
124
|
-
"version": "0.9.
|
|
124
|
+
"version": "0.9.99",
|
|
125
125
|
"types": "./lib/index.d.ts",
|
|
126
126
|
"dbxToolsConfig": {
|
|
127
127
|
"tags": [
|
package/src/files-cache.ts
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Plugin, toPlugin, type BasePluginConfig, type PluginManifest } from "@databricks/appkit";
|
|
8
|
-
import { posixPath, type CacheValue, type FileSystemCache } from "@dbx-tools/shared-fs";
|
|
9
8
|
import { errorUtils, log, object } from "@dbx-tools/shared-core";
|
|
9
|
+
import { posixPath, type CacheValue, type FileSystemCache } from "@dbx-tools/shared-fs";
|
|
10
10
|
import { LRUCache } from "lru-cache";
|
|
11
11
|
|
|
12
12
|
const DEFAULT_TTL_MS = 60_000;
|
|
@@ -79,6 +79,8 @@ export interface FilesCacheScope {
|
|
|
79
79
|
export interface FilesCacheSourceIdentity {
|
|
80
80
|
/** Actual mounted filesystem paths represented by the source. */
|
|
81
81
|
paths: readonly string[];
|
|
82
|
+
/** Workspace-instance key separating sources with different policies over the same paths. */
|
|
83
|
+
key?: string;
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
/** Public exports from {@link FilesCachePlugin}. */
|
|
@@ -135,7 +137,7 @@ export class FilesCacheManager {
|
|
|
135
137
|
const state = await this.resolveScopeState(input);
|
|
136
138
|
const paths = identity.paths.map((path) => posixPath.normalizeRoot(path));
|
|
137
139
|
if (paths.length === 0) throw new TypeError("Filesystem source paths must not be empty");
|
|
138
|
-
const sourceKey = object.toStableKey({ paths });
|
|
140
|
+
const sourceKey = object.toStableKey({ paths, key: identity.key });
|
|
139
141
|
let source = state.sources.get(sourceKey);
|
|
140
142
|
if (!source) {
|
|
141
143
|
source = Promise.resolve(load());
|