cdk-nextjs 0.5.3 → 0.5.4
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/.jsii +80 -6
- package/.jsii.tabl.json +1 -1
- package/CLAUDE.md +76 -0
- package/assets/lambdas/post-deploy/post-deploy.lambda/index.js +5 -1
- package/lib/adapter/adapter.mjs +5 -1
- package/lib/adapter/cache-handler.js +24 -21
- package/lib/adapter/cache-handler.mjs +15748 -17466
- package/lib/adapter/cache-handler.test.js +5 -2
- package/lib/adapter/local-file-cache-handler.js +6 -2
- package/lib/adapter/memory-cache-handler.js +63 -4
- package/lib/adapter/s3-cache-handler.js +10 -3
- package/lib/lambdas/post-deploy/post-deploy-function.js +36 -3
- package/lib/lambdas/post-deploy/post-deploy.lambda.js +5 -2
- package/lib/lambdas/post-deploy/prune-cache-bucket.js +5 -2
- package/lib/lambdas/post-deploy/prune-revalidation-table.js +5 -2
- package/lib/lambdas/post-deploy/prune-s3.js +5 -2
- package/lib/nextjs-api.js +10 -4
- package/lib/nextjs-build/nextjs-build.js +41 -5
- package/lib/nextjs-build/patch-fetch.js +1 -1
- package/lib/nextjs-build/patch-fetch.test.d.ts +1 -0
- package/lib/nextjs-build/patch-fetch.test.js +168 -0
- package/lib/nextjs-cache.js +7 -4
- package/lib/nextjs-compute/nextjs-containers.js +7 -4
- package/lib/nextjs-compute/nextjs-functions.js +5 -4
- package/lib/nextjs-distribution.js +34 -26
- package/lib/nextjs-post-deploy.js +5 -4
- package/lib/nextjs-static-assets.js +6 -4
- package/lib/root-constructs/nextjs-base-construct.js +9 -4
- package/lib/root-constructs/nextjs-global-containers.js +6 -4
- package/lib/root-constructs/nextjs-global-functions.js +6 -4
- package/lib/root-constructs/nextjs-regional-containers.js +5 -4
- package/lib/root-constructs/nextjs-regional-functions.js +6 -4
- package/package.json +21 -23
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
/*
|
|
4
7
|
Next.js Custom Cache Handler. See: https://nextjs.org/docs/app/api-reference/next-config-js/incrementalCacheHandlerPath
|
|
@@ -8,7 +11,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
11
|
- Runtime: MemoryCacheHandler (fast) + S3DynamoCacheHandler (persistent)
|
|
9
12
|
*/
|
|
10
13
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
11
|
-
const debug_1 = require("debug");
|
|
14
|
+
const debug_1 = __importDefault(require("debug"));
|
|
12
15
|
const local_file_cache_handler_1 = require("./local-file-cache-handler");
|
|
13
16
|
const memory_cache_handler_1 = require("./memory-cache-handler");
|
|
14
17
|
const s3_cache_handler_1 = require("./s3-cache-handler");
|
|
@@ -18,14 +21,26 @@ const getTags = (ctx) => ("tags" in ctx ? ctx.tags : undefined);
|
|
|
18
21
|
* Orchestrator cache handler that conditionally instantiates handlers based on environment
|
|
19
22
|
*/
|
|
20
23
|
class CdkNextjsCacheHandler {
|
|
24
|
+
/**
|
|
25
|
+
* Shared singleton handlers for runtime.
|
|
26
|
+
*
|
|
27
|
+
* Next.js creates multiple cache handler instances (one each for APP_PAGE, APP_ROUTE, FETCH, etc).
|
|
28
|
+
* Using singleton pattern provides:
|
|
29
|
+
* - Single S3 client connection pool shared across all cache types
|
|
30
|
+
* - Unified memory cache accessible by all instances (cache hits benefit all)
|
|
31
|
+
* - Lower memory footprint and faster initialization
|
|
32
|
+
* - Same CacheHandlerContext for all instances, so no configuration loss
|
|
33
|
+
*/
|
|
34
|
+
static sharedMemoryHandler = null;
|
|
35
|
+
static sharedS3DynamoHandler = null;
|
|
36
|
+
isBuildTime = process.env.NEXT_PHASE === "phase-production-build";
|
|
37
|
+
debug = (0, debug_1.default)("cdk-nextjs:cache-handler:orchestrator");
|
|
38
|
+
// Build-time handler
|
|
39
|
+
localFileHandler = null;
|
|
40
|
+
// Runtime handlers (shared across all instances)
|
|
41
|
+
memoryHandler = null;
|
|
42
|
+
s3DynamoHandler = null;
|
|
21
43
|
constructor(options) {
|
|
22
|
-
this.isBuildTime = process.env.NEXT_PHASE === "phase-production-build";
|
|
23
|
-
this.debug = (0, debug_1.default)("cdk-nextjs:cache-handler:orchestrator");
|
|
24
|
-
// Build-time handler
|
|
25
|
-
this.localFileHandler = null;
|
|
26
|
-
// Runtime handlers (shared across all instances)
|
|
27
|
-
this.memoryHandler = null;
|
|
28
|
-
this.s3DynamoHandler = null;
|
|
29
44
|
if (this.isBuildTime) {
|
|
30
45
|
// Build time: only local file cache
|
|
31
46
|
this.localFileHandler = new local_file_cache_handler_1.LocalFileCacheHandler();
|
|
@@ -160,17 +175,5 @@ class CdkNextjsCacheHandler {
|
|
|
160
175
|
}
|
|
161
176
|
}
|
|
162
177
|
}
|
|
163
|
-
/**
|
|
164
|
-
* Shared singleton handlers for runtime.
|
|
165
|
-
*
|
|
166
|
-
* Next.js creates multiple cache handler instances (one each for APP_PAGE, APP_ROUTE, FETCH, etc).
|
|
167
|
-
* Using singleton pattern provides:
|
|
168
|
-
* - Single S3 client connection pool shared across all cache types
|
|
169
|
-
* - Unified memory cache accessible by all instances (cache hits benefit all)
|
|
170
|
-
* - Lower memory footprint and faster initialization
|
|
171
|
-
* - Same CacheHandlerContext for all instances, so no configuration loss
|
|
172
|
-
*/
|
|
173
|
-
CdkNextjsCacheHandler.sharedMemoryHandler = null;
|
|
174
|
-
CdkNextjsCacheHandler.sharedS3DynamoHandler = null;
|
|
175
178
|
exports.default = CdkNextjsCacheHandler;
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyL2NhY2hlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0VBTUU7QUFDRixzREFBc0Q7QUFDdEQsaUNBQTZCO0FBYTdCLHlFQUFtRTtBQUNuRSxpRUFBNEQ7QUFDNUQseURBQW9EO0FBRXBELDZDQUE2QztBQUM3QyxNQUFNLE9BQU8sR0FBRyxDQUNkLEdBQXlFLEVBQ25ELEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxFOztHQUVHO0FBQ0gsTUFBcUIscUJBQXFCO0lBeUJ4QyxZQUFZLE9BQTRCO1FBWHZCLGdCQUFXLEdBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxLQUFLLHdCQUF3QixDQUFDO1FBQ3JDLFVBQUssR0FBRyxJQUFBLGVBQVEsRUFBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBRTNFLHFCQUFxQjtRQUNiLHFCQUFnQixHQUFpQyxJQUFJLENBQUM7UUFFOUQsaURBQWlEO1FBQ3pDLGtCQUFhLEdBQThCLElBQUksQ0FBQztRQUNoRCxvQkFBZSxHQUEwQixJQUFJLENBQUM7UUFHcEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsb0NBQW9DO1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdEQUFxQixFQUFFLENBQUM7WUFFcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQzthQUFNLENBQUM7WUFDTixxREFBcUQ7WUFDckQsd0NBQXdDO1lBQ3hDLElBQUksQ0FBQyxx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YSxDQUFDLEdBQVc7UUFDN0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQseUJBQXlCO1FBQ3pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxpQkFBaUI7UUFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7O0FBL0tEOzs7Ozs7Ozs7R0FTRztBQUNZLHlDQUFtQixHQUE4QixJQUFJLEFBQWxDLENBQW1DO0FBQ3RELDJDQUFxQixHQUEwQixJQUFJLEFBQTlCLENBQStCO2tCQVpoRCxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBOZXh0LmpzIEN1c3RvbSBDYWNoZSBIYW5kbGVyLiBTZWU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL25leHQtY29uZmlnLWpzL2luY3JlbWVudGFsQ2FjaGVIYW5kbGVyUGF0aFxuICBcbiAgT3JjaGVzdHJhdG9yIGNhY2hlIGhhbmRsZXIgdGhhdCBjb25kaXRpb25hbGx5IHVzZXMgZGlmZmVyZW50IGNhY2hpbmcgc3RyYXRlZ2llczpcbiAgLSBCdWlsZCB0aW1lOiBMb2NhbEZpbGVDYWNoZUhhbmRsZXIgZm9yIHByZS1jYWNoaW5nXG4gIC0gUnVudGltZTogTWVtb3J5Q2FjaGVIYW5kbGVyIChmYXN0KSArIFMzRHluYW1vQ2FjaGVIYW5kbGVyIChwZXJzaXN0ZW50KVxuKi9cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IGdldERlYnVnIGZyb20gXCJkZWJ1Z1wiO1xuaW1wb3J0IHtcbiAgQ2FjaGVIYW5kbGVyLFxuICBDYWNoZUhhbmRsZXJWYWx1ZSxcbiAgQ2FjaGVIYW5kbGVyQ29udGV4dCxcbn0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL2luY3JlbWVudGFsLWNhY2hlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEluY3JlbWVudGFsQ2FjaGVWYWx1ZSxcbiAgR2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCxcbiAgR2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgU2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCxcbiAgU2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbn0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVzcG9uc2UtY2FjaGVcIjtcbmltcG9ydCB7IExvY2FsRmlsZUNhY2hlSGFuZGxlciB9IGZyb20gXCIuL2xvY2FsLWZpbGUtY2FjaGUtaGFuZGxlclwiO1xuaW1wb3J0IHsgTWVtb3J5Q2FjaGVIYW5kbGVyIH0gZnJvbSBcIi4vbWVtb3J5LWNhY2hlLWhhbmRsZXJcIjtcbmltcG9ydCB7IFMzQ2FjaGVIYW5kbGVyIH0gZnJvbSBcIi4vczMtY2FjaGUtaGFuZGxlclwiO1xuXG4vLyBIZWxwZXIgdG8gc2FmZWx5IGV4dHJhY3QgdGFncyBmcm9tIGNvbnRleHRcbmNvbnN0IGdldFRhZ3MgPSAoXG4gIGN0eDogU2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCB8IFNldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG4pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9PiAoXCJ0YWdzXCIgaW4gY3R4ID8gY3R4LnRhZ3MgOiB1bmRlZmluZWQpO1xuXG4vKipcbiAqIE9yY2hlc3RyYXRvciBjYWNoZSBoYW5kbGVyIHRoYXQgY29uZGl0aW9uYWxseSBpbnN0YW50aWF0ZXMgaGFuZGxlcnMgYmFzZWQgb24gZW52aXJvbm1lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyIGltcGxlbWVudHMgQ2FjaGVIYW5kbGVyIHtcbiAgLyoqXG4gICAqIFNoYXJlZCBzaW5nbGV0b24gaGFuZGxlcnMgZm9yIHJ1bnRpbWUuXG4gICAqXG4gICAqIE5leHQuanMgY3JlYXRlcyBtdWx0aXBsZSBjYWNoZSBoYW5kbGVyIGluc3RhbmNlcyAob25lIGVhY2ggZm9yIEFQUF9QQUdFLCBBUFBfUk9VVEUsIEZFVENILCBldGMpLlxuICAgKiBVc2luZyBzaW5nbGV0b24gcGF0dGVybiBwcm92aWRlczpcbiAgICogLSBTaW5nbGUgUzMgY2xpZW50IGNvbm5lY3Rpb24gcG9vbCBzaGFyZWQgYWNyb3NzIGFsbCBjYWNoZSB0eXBlc1xuICAgKiAtIFVuaWZpZWQgbWVtb3J5IGNhY2hlIGFjY2Vzc2libGUgYnkgYWxsIGluc3RhbmNlcyAoY2FjaGUgaGl0cyBiZW5lZml0IGFsbClcbiAgICogLSBMb3dlciBtZW1vcnkgZm9vdHByaW50IGFuZCBmYXN0ZXIgaW5pdGlhbGl6YXRpb25cbiAgICogLSBTYW1lIENhY2hlSGFuZGxlckNvbnRleHQgZm9yIGFsbCBpbnN0YW5jZXMsIHNvIG5vIGNvbmZpZ3VyYXRpb24gbG9zc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgc2hhcmVkTWVtb3J5SGFuZGxlcjogTWVtb3J5Q2FjaGVIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIHNoYXJlZFMzRHluYW1vSGFuZGxlcjogUzNDYWNoZUhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlzQnVpbGRUaW1lID1cbiAgICBwcm9jZXNzLmVudi5ORVhUX1BIQVNFID09PSBcInBoYXNlLXByb2R1Y3Rpb24tYnVpbGRcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWJ1ZyA9IGdldERlYnVnKFwiY2RrLW5leHRqczpjYWNoZS1oYW5kbGVyOm9yY2hlc3RyYXRvclwiKTtcblxuICAvLyBCdWlsZC10aW1lIGhhbmRsZXJcbiAgcHJpdmF0ZSBsb2NhbEZpbGVIYW5kbGVyOiBMb2NhbEZpbGVDYWNoZUhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuICAvLyBSdW50aW1lIGhhbmRsZXJzIChzaGFyZWQgYWNyb3NzIGFsbCBpbnN0YW5jZXMpXG4gIHByaXZhdGUgbWVtb3J5SGFuZGxlcjogTWVtb3J5Q2FjaGVIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgczNEeW5hbW9IYW5kbGVyOiBTM0NhY2hlSGFuZGxlciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENhY2hlSGFuZGxlckNvbnRleHQpIHtcbiAgICBpZiAodGhpcy5pc0J1aWxkVGltZSkge1xuICAgICAgLy8gQnVpbGQgdGltZTogb25seSBsb2NhbCBmaWxlIGNhY2hlXG4gICAgICB0aGlzLmxvY2FsRmlsZUhhbmRsZXIgPSBuZXcgTG9jYWxGaWxlQ2FjaGVIYW5kbGVyKCk7XG5cbiAgICAgIHRoaXMuZGVidWcoXCJCdWlsZC10aW1lIG1vZGU6IExvY2FsRmlsZUNhY2hlSGFuZGxlciBpbml0aWFsaXplZFwiKTtcbiAgICAgIHRoaXMuZGVidWcoYENhY2hlIGRpcmVjdG9yeTogJHt0aGlzLmxvY2FsRmlsZUhhbmRsZXIuZ2V0Q2FjaGVEaXIoKX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUnVudGltZTogcmV1c2Ugc2hhcmVkIGhhbmRsZXJzIChzaW5nbGV0b24gcGF0dGVybilcbiAgICAgIC8vIEluaXRpYWxpemUgb25jZSBvbiBmaXJzdCBjb25zdHJ1Y3Rpb25cbiAgICAgIGlmICghQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyLnNoYXJlZFMzRHluYW1vSGFuZGxlcikge1xuICAgICAgICBDZGtOZXh0anNDYWNoZUhhbmRsZXIuc2hhcmVkUzNEeW5hbW9IYW5kbGVyID0gbmV3IFMzQ2FjaGVIYW5kbGVyKHtcbiAgICAgICAgICBjb250ZXh0OiBvcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kZWJ1ZyhcIkluaXRpYWxpemVkIHNoYXJlZCBTMy9EeW5hbW9EQiBoYW5kbGVyXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIUNka05leHRqc0NhY2hlSGFuZGxlci5zaGFyZWRNZW1vcnlIYW5kbGVyKSB7XG4gICAgICAgIENka05leHRqc0NhY2hlSGFuZGxlci5zaGFyZWRNZW1vcnlIYW5kbGVyID0gbmV3IE1lbW9yeUNhY2hlSGFuZGxlcih7XG4gICAgICAgICAgY29udGV4dDogb3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGVidWcoXCJJbml0aWFsaXplZCBzaGFyZWQgTWVtb3J5IGhhbmRsZXJcIik7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlZmVyZW5jZSBzaGFyZWQgaW5zdGFuY2VzXG4gICAgICB0aGlzLnMzRHluYW1vSGFuZGxlciA9IENka05leHRqc0NhY2hlSGFuZGxlci5zaGFyZWRTM0R5bmFtb0hhbmRsZXI7XG4gICAgICB0aGlzLm1lbW9yeUhhbmRsZXIgPSBDZGtOZXh0anNDYWNoZUhhbmRsZXIuc2hhcmVkTWVtb3J5SGFuZGxlcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNhY2hlIGVudHJ5XG4gICAqIC0gQnVpbGQgdGltZTogTm90IGltcGxlbWVudGVkIChidWlsZCBkb2Vzbid0IHJlYWQgY2FjaGUpXG4gICAqIC0gUnVudGltZTogVHJ5IG1lbW9yeSBmaXJzdCwgdGhlbiBTMy9EeW5hbW9EQlxuICAgKi9cbiAgYXN5bmMgZ2V0KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgY3R4OiBHZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0IHwgR2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgKTogUHJvbWlzZTxDYWNoZUhhbmRsZXJWYWx1ZSB8IG51bGw+IHtcbiAgICBpZiAodGhpcy5pc0J1aWxkVGltZSkge1xuICAgICAgLy8gQnVpbGQgdGltZSBkb2Vzbid0IHJlYWQgZnJvbSBjYWNoZVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gUnVudGltZTogdHJ5IG1lbW9yeSBmaXJzdFxuICAgIGlmICh0aGlzLm1lbW9yeUhhbmRsZXIpIHtcbiAgICAgIGNvbnN0IG1lbW9yeVJlc3VsdCA9IGF3YWl0IHRoaXMubWVtb3J5SGFuZGxlci5nZXQoY2FjaGVLZXksIGN0eCk7XG4gICAgICBpZiAobWVtb3J5UmVzdWx0KSB7XG4gICAgICAgIHRoaXMuZGVidWcoYE1lbW9yeSBjYWNoZSBISVQ6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgIHJldHVybiBtZW1vcnlSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWVtb3J5IG1pc3MgLSB0cnkgUzMvRHluYW1vREJcbiAgICBpZiAodGhpcy5zM0R5bmFtb0hhbmRsZXIpIHtcbiAgICAgIGNvbnN0IHMzUmVzdWx0ID0gYXdhaXQgdGhpcy5zM0R5bmFtb0hhbmRsZXIuZ2V0KGNhY2hlS2V5LCBjdHgpO1xuICAgICAgaWYgKHMzUmVzdWx0KSB7XG4gICAgICAgIHRoaXMuZGVidWcoYFMzIGNhY2hlIEhJVDogJHtjYWNoZUtleX1gKTtcbiAgICAgICAgLy8gUG9wdWxhdGUgbWVtb3J5IGNhY2hlIGZvciBuZXh0IHRpbWVcbiAgICAgICAgaWYgKHRoaXMubWVtb3J5SGFuZGxlcikge1xuICAgICAgICAgIGF3YWl0IHRoaXMubWVtb3J5SGFuZGxlci5zZXQoY2FjaGVLZXksIHMzUmVzdWx0LnZhbHVlLCBjdHggYXMgYW55KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczNSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kZWJ1ZyhgQ2FjaGUgTUlTUzogJHtjYWNoZUtleX1gKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2FjaGUgZW50cnlcbiAgICogLSBCdWlsZCB0aW1lOiBXcml0ZSB0byBsb2NhbCBmaWxlIGNhY2hlIG9ubHkgKG9yIGRlbGV0ZSBpZiBkYXRhIGlzIG51bGwpXG4gICAqIC0gUnVudGltZTogV3JpdGUgdG8gYm90aCBtZW1vcnkgYW5kIFMzL0R5bmFtb0RCIChvciBkZWxldGUgaWYgZGF0YSBpcyBudWxsKVxuICAgKi9cbiAgYXN5bmMgc2V0KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgZGF0YTogSW5jcmVtZW50YWxDYWNoZVZhbHVlIHwgbnVsbCxcbiAgICBjdHg6IFNldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQgfCBTZXRJbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVDb250ZXh0LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0J1aWxkVGltZSkge1xuICAgICAgLy8gQnVpbGQgdGltZTogd3JpdGUgb3IgZGVsZXRlIGZyb20gbG9jYWwgZmlsZSBjYWNoZVxuICAgICAgaWYgKHRoaXMubG9jYWxGaWxlSGFuZGxlcikge1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgIGNvbnN0IHRhZ3MgPSBnZXRUYWdzKGN0eCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5sb2NhbEZpbGVIYW5kbGVyLnNldChjYWNoZUtleSwgZGF0YSwgdGFncyk7XG4gICAgICAgICAgdGhpcy5kZWJ1ZyhgQnVpbGQgY2FjaGUgd3JpdGU6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRGVsZXRlIG5vdCBpbXBsZW1lbnRlZCBmb3IgbG9jYWwgZmlsZSBjYWNoZSAoYnVpbGQtdGltZSBvbmx5IGNyZWF0ZXMgZmlsZXMpXG4gICAgICAgICAgdGhpcy5kZWJ1ZyhgQnVpbGQgY2FjaGUgZGVsZXRlIGlnbm9yZWQ6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUnVudGltZTogd3JpdGUgb3IgZGVsZXRlIGZyb20gbWVtb3J5IGFuZCBTMy9EeW5hbW9EQlxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgLy8gV3JpdGUgdG8gbWVtb3J5XG4gICAgICAgIGlmICh0aGlzLm1lbW9yeUhhbmRsZXIpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm1lbW9yeUhhbmRsZXIuc2V0KGNhY2hlS2V5LCBkYXRhLCBjdHgpO1xuICAgICAgICAgIHRoaXMuZGVidWcoYE1lbW9yeSBjYWNoZSB3cml0ZTogJHtjYWNoZUtleX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFsc28gd3JpdGUgdG8gUzMvRHluYW1vREIgZm9yIHBlcnNpc3RlbmNlXG4gICAgICAgIGlmICh0aGlzLnMzRHluYW1vSGFuZGxlcikge1xuICAgICAgICAgIGF3YWl0IHRoaXMuczNEeW5hbW9IYW5kbGVyLnNldChjYWNoZUtleSwgZGF0YSwgY3R4KTtcbiAgICAgICAgICB0aGlzLmRlYnVnKGBTMyBjYWNoZSB3cml0ZTogJHtjYWNoZUtleX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRGVsZXRlIGZyb20gYm90aCBsYXllcnNcbiAgICAgICAgdGhpcy5kZWJ1ZyhgQ2FjaGUgZGVsZXRlOiAke2NhY2hlS2V5fWApO1xuXG4gICAgICAgIC8vIERlbGV0ZSBmcm9tIG1lbW9yeSAocmVtb3ZlcyBmcm9tIGNhY2hlIE1hcClcbiAgICAgICAgaWYgKHRoaXMubWVtb3J5SGFuZGxlcikge1xuICAgICAgICAgIGF3YWl0IHRoaXMubWVtb3J5SGFuZGxlci5zZXQoY2FjaGVLZXksIG51bGwsIGN0eCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWxldGUgZnJvbSBTMy9EeW5hbW9EQlxuICAgICAgICBpZiAodGhpcy5zM0R5bmFtb0hhbmRsZXIpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnMzRHluYW1vSGFuZGxlci5zZXQoY2FjaGVLZXksIG51bGwsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV2YWxpZGF0ZSB0YWdzXG4gICAqIC0gQnVpbGQgdGltZTogTm90IGltcGxlbWVudGVkXG4gICAqIC0gUnVudGltZTogRGVsZWdhdGUgdG8gUzMvRHluYW1vREIgaGFuZGxlclxuICAgKi9cbiAgYXN5bmMgcmV2YWxpZGF0ZVRhZyh0YWc6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzQnVpbGRUaW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgZnJvbSBtZW1vcnlcbiAgICBpZiAodGhpcy5tZW1vcnlIYW5kbGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLm1lbW9yeUhhbmRsZXIucmV2YWxpZGF0ZVRhZyh0YWcpO1xuICAgIH1cblxuICAgIC8vIENsZWFyIGZyb20gUzMvRHluYW1vREJcbiAgICBpZiAodGhpcy5zM0R5bmFtb0hhbmRsZXIpIHtcbiAgICAgIGF3YWl0IHRoaXMuczNEeW5hbW9IYW5kbGVyLnJldmFsaWRhdGVUYWcodGFnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgcmVxdWVzdCBjYWNoZSAoY2FsbGVkIGJldHdlZW4gcmVxdWVzdHMpXG4gICAqL1xuICBhc3luYyByZXNldFJlcXVlc3RDYWNoZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5tZW1vcnlIYW5kbGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLm1lbW9yeUhhbmRsZXIucmVzZXRSZXF1ZXN0Q2FjaGUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyL2NhY2hlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7O0VBTUU7QUFDRixzREFBc0Q7QUFDdEQsa0RBQTZCO0FBYTdCLHlFQUFtRTtBQUNuRSxpRUFBNEQ7QUFDNUQseURBQW9EO0FBRXBELDZDQUE2QztBQUM3QyxNQUFNLE9BQU8sR0FBRyxDQUNkLEdBQXlFLEVBQ25ELEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxFOztHQUVHO0FBQ0gsTUFBcUIscUJBQXFCO0lBQ3hDOzs7Ozs7Ozs7T0FTRztJQUNLLE1BQU0sQ0FBQyxtQkFBbUIsR0FBOEIsSUFBSSxDQUFDO0lBQzdELE1BQU0sQ0FBQyxxQkFBcUIsR0FBMEIsSUFBSSxDQUFDO0lBRWxELFdBQVcsR0FDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEtBQUssd0JBQXdCLENBQUM7SUFDckMsS0FBSyxHQUFHLElBQUEsZUFBUSxFQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFFM0UscUJBQXFCO0lBQ2IsZ0JBQWdCLEdBQWlDLElBQUksQ0FBQztJQUU5RCxpREFBaUQ7SUFDekMsYUFBYSxHQUE4QixJQUFJLENBQUM7SUFDaEQsZUFBZSxHQUEwQixJQUFJLENBQUM7SUFFdEQsWUFBWSxPQUE0QjtRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixvQ0FBb0M7WUFDcEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0RBQXFCLEVBQUUsQ0FBQztZQUVwRCxJQUFJLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLGdCQUFn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SSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBVztRQUM3QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUVELG9CQUFvQjtRQUNwQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQjtRQUNyQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQzs7QUFoTEgsd0NBaUxDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgTmV4dC5qcyBDdXN0b20gQ2FjaGUgSGFuZGxlci4gU2VlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9uZXh0LWNvbmZpZy1qcy9pbmNyZW1lbnRhbENhY2hlSGFuZGxlclBhdGhcbiAgXG4gIE9yY2hlc3RyYXRvciBjYWNoZSBoYW5kbGVyIHRoYXQgY29uZGl0aW9uYWxseSB1c2VzIGRpZmZlcmVudCBjYWNoaW5nIHN0cmF0ZWdpZXM6XG4gIC0gQnVpbGQgdGltZTogTG9jYWxGaWxlQ2FjaGVIYW5kbGVyIGZvciBwcmUtY2FjaGluZ1xuICAtIFJ1bnRpbWU6IE1lbW9yeUNhY2hlSGFuZGxlciAoZmFzdCkgKyBTM0R5bmFtb0NhY2hlSGFuZGxlciAocGVyc2lzdGVudClcbiovXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCBnZXREZWJ1ZyBmcm9tIFwiZGVidWdcIjtcbmltcG9ydCB7XG4gIENhY2hlSGFuZGxlcixcbiAgQ2FjaGVIYW5kbGVyVmFsdWUsXG4gIENhY2hlSGFuZGxlckNvbnRleHQsXG59IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9pbmNyZW1lbnRhbC1jYWNoZVwiO1xuaW1wb3J0IHR5cGUge1xuICBJbmNyZW1lbnRhbENhY2hlVmFsdWUsXG4gIEdldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQsXG4gIEdldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG4gIFNldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQsXG4gIFNldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG59IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3Jlc3BvbnNlLWNhY2hlXCI7XG5pbXBvcnQgeyBMb2NhbEZpbGVDYWNoZUhhbmRsZXIgfSBmcm9tIFwiLi9sb2NhbC1maWxlLWNhY2hlLWhhbmRsZXJcIjtcbmltcG9ydCB7IE1lbW9yeUNhY2hlSGFuZGxlciB9IGZyb20gXCIuL21lbW9yeS1jYWNoZS1oYW5kbGVyXCI7XG5pbXBvcnQgeyBTM0NhY2hlSGFuZGxlciB9IGZyb20gXCIuL3MzLWNhY2hlLWhhbmRsZXJcIjtcblxuLy8gSGVscGVyIHRvIHNhZmVseSBleHRyYWN0IHRhZ3MgZnJvbSBjb250ZXh0XG5jb25zdCBnZXRUYWdzID0gKFxuICBjdHg6IFNldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQgfCBTZXRJbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVDb250ZXh0LFxuKTogc3RyaW5nW10gfCB1bmRlZmluZWQgPT4gKFwidGFnc1wiIGluIGN0eCA/IGN0eC50YWdzIDogdW5kZWZpbmVkKTtcblxuLyoqXG4gKiBPcmNoZXN0cmF0b3IgY2FjaGUgaGFuZGxlciB0aGF0IGNvbmRpdGlvbmFsbHkgaW5zdGFudGlhdGVzIGhhbmRsZXJzIGJhc2VkIG9uIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENka05leHRqc0NhY2hlSGFuZGxlciBpbXBsZW1lbnRzIENhY2hlSGFuZGxlciB7XG4gIC8qKlxuICAgKiBTaGFyZWQgc2luZ2xldG9uIGhhbmRsZXJzIGZvciBydW50aW1lLlxuICAgKlxuICAgKiBOZXh0LmpzIGNyZWF0ZXMgbXVsdGlwbGUgY2FjaGUgaGFuZGxlciBpbnN0YW5jZXMgKG9uZSBlYWNoIGZvciBBUFBfUEFHRSwgQVBQX1JPVVRFLCBGRVRDSCwgZXRjKS5cbiAgICogVXNpbmcgc2luZ2xldG9uIHBhdHRlcm4gcHJvdmlkZXM6XG4gICAqIC0gU2luZ2xlIFMzIGNsaWVudCBjb25uZWN0aW9uIHBvb2wgc2hhcmVkIGFjcm9zcyBhbGwgY2FjaGUgdHlwZXNcbiAgICogLSBVbmlmaWVkIG1lbW9yeSBjYWNoZSBhY2Nlc3NpYmxlIGJ5IGFsbCBpbnN0YW5jZXMgKGNhY2hlIGhpdHMgYmVuZWZpdCBhbGwpXG4gICAqIC0gTG93ZXIgbWVtb3J5IGZvb3RwcmludCBhbmQgZmFzdGVyIGluaXRpYWxpemF0aW9uXG4gICAqIC0gU2FtZSBDYWNoZUhhbmRsZXJDb250ZXh0IGZvciBhbGwgaW5zdGFuY2VzLCBzbyBubyBjb25maWd1cmF0aW9uIGxvc3NcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNoYXJlZE1lbW9yeUhhbmRsZXI6IE1lbW9yeUNhY2hlSGFuZGxlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBzaGFyZWRTM0R5bmFtb0hhbmRsZXI6IFMzQ2FjaGVIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc0J1aWxkVGltZSA9XG4gICAgcHJvY2Vzcy5lbnYuTkVYVF9QSEFTRSA9PT0gXCJwaGFzZS1wcm9kdWN0aW9uLWJ1aWxkXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVidWcgPSBnZXREZWJ1ZyhcImNkay1uZXh0anM6Y2FjaGUtaGFuZGxlcjpvcmNoZXN0cmF0b3JcIik7XG5cbiAgLy8gQnVpbGQtdGltZSBoYW5kbGVyXG4gIHByaXZhdGUgbG9jYWxGaWxlSGFuZGxlcjogTG9jYWxGaWxlQ2FjaGVIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gUnVudGltZSBoYW5kbGVycyAoc2hhcmVkIGFjcm9zcyBhbGwgaW5zdGFuY2VzKVxuICBwcml2YXRlIG1lbW9yeUhhbmRsZXI6IE1lbW9yeUNhY2hlSGFuZGxlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHMzRHluYW1vSGFuZGxlcjogUzNDYWNoZUhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDYWNoZUhhbmRsZXJDb250ZXh0KSB7XG4gICAgaWYgKHRoaXMuaXNCdWlsZFRpbWUpIHtcbiAgICAgIC8vIEJ1aWxkIHRpbWU6IG9ubHkgbG9jYWwgZmlsZSBjYWNoZVxuICAgICAgdGhpcy5sb2NhbEZpbGVIYW5kbGVyID0gbmV3IExvY2FsRmlsZUNhY2hlSGFuZGxlcigpO1xuXG4gICAgICB0aGlzLmRlYnVnKFwiQnVpbGQtdGltZSBtb2RlOiBMb2NhbEZpbGVDYWNoZUhhbmRsZXIgaW5pdGlhbGl6ZWRcIik7XG4gICAgICB0aGlzLmRlYnVnKGBDYWNoZSBkaXJlY3Rvcnk6ICR7dGhpcy5sb2NhbEZpbGVIYW5kbGVyLmdldENhY2hlRGlyKCl9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJ1bnRpbWU6IHJldXNlIHNoYXJlZCBoYW5kbGVycyAoc2luZ2xldG9uIHBhdHRlcm4pXG4gICAgICAvLyBJbml0aWFsaXplIG9uY2Ugb24gZmlyc3QgY29uc3RydWN0aW9uXG4gICAgICBpZiAoIUNka05leHRqc0NhY2hlSGFuZGxlci5zaGFyZWRTM0R5bmFtb0hhbmRsZXIpIHtcbiAgICAgICAgQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyLnNoYXJlZFMzRHluYW1vSGFuZGxlciA9IG5ldyBTM0NhY2hlSGFuZGxlcih7XG4gICAgICAgICAgY29udGV4dDogb3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGVidWcoXCJJbml0aWFsaXplZCBzaGFyZWQgUzMvRHluYW1vREIgaGFuZGxlclwiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFDZGtOZXh0anNDYWNoZUhhbmRsZXIuc2hhcmVkTWVtb3J5SGFuZGxlcikge1xuICAgICAgICBDZGtOZXh0anNDYWNoZUhhbmRsZXIuc2hhcmVkTWVtb3J5SGFuZGxlciA9IG5ldyBNZW1vcnlDYWNoZUhhbmRsZXIoe1xuICAgICAgICAgIGNvbnRleHQ6IG9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRlYnVnKFwiSW5pdGlhbGl6ZWQgc2hhcmVkIE1lbW9yeSBoYW5kbGVyXCIpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZWZlcmVuY2Ugc2hhcmVkIGluc3RhbmNlc1xuICAgICAgdGhpcy5zM0R5bmFtb0hhbmRsZXIgPSBDZGtOZXh0anNDYWNoZUhhbmRsZXIuc2hhcmVkUzNEeW5hbW9IYW5kbGVyO1xuICAgICAgdGhpcy5tZW1vcnlIYW5kbGVyID0gQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyLnNoYXJlZE1lbW9yeUhhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjYWNoZSBlbnRyeVxuICAgKiAtIEJ1aWxkIHRpbWU6IE5vdCBpbXBsZW1lbnRlZCAoYnVpbGQgZG9lc24ndCByZWFkIGNhY2hlKVxuICAgKiAtIFJ1bnRpbWU6IFRyeSBtZW1vcnkgZmlyc3QsIHRoZW4gUzMvRHluYW1vREJcbiAgICovXG4gIGFzeW5jIGdldChcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgIGN0eDogR2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCB8IEdldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG4gICk6IFByb21pc2U8Q2FjaGVIYW5kbGVyVmFsdWUgfCBudWxsPiB7XG4gICAgaWYgKHRoaXMuaXNCdWlsZFRpbWUpIHtcbiAgICAgIC8vIEJ1aWxkIHRpbWUgZG9lc24ndCByZWFkIGZyb20gY2FjaGVcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIFJ1bnRpbWU6IHRyeSBtZW1vcnkgZmlyc3RcbiAgICBpZiAodGhpcy5tZW1vcnlIYW5kbGVyKSB7XG4gICAgICBjb25zdCBtZW1vcnlSZXN1bHQgPSBhd2FpdCB0aGlzLm1lbW9yeUhhbmRsZXIuZ2V0KGNhY2hlS2V5LCBjdHgpO1xuICAgICAgaWYgKG1lbW9yeVJlc3VsdCkge1xuICAgICAgICB0aGlzLmRlYnVnKGBNZW1vcnkgY2FjaGUgSElUOiAke2NhY2hlS2V5fWApO1xuICAgICAgICByZXR1cm4gbWVtb3J5UmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1lbW9yeSBtaXNzIC0gdHJ5IFMzL0R5bmFtb0RCXG4gICAgaWYgKHRoaXMuczNEeW5hbW9IYW5kbGVyKSB7XG4gICAgICBjb25zdCBzM1Jlc3VsdCA9IGF3YWl0IHRoaXMuczNEeW5hbW9IYW5kbGVyLmdldChjYWNoZUtleSwgY3R4KTtcbiAgICAgIGlmIChzM1Jlc3VsdCkge1xuICAgICAgICB0aGlzLmRlYnVnKGBTMyBjYWNoZSBISVQ6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgIC8vIFBvcHVsYXRlIG1lbW9yeSBjYWNoZSBmb3IgbmV4dCB0aW1lXG4gICAgICAgIGlmICh0aGlzLm1lbW9yeUhhbmRsZXIpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm1lbW9yeUhhbmRsZXIuc2V0KGNhY2hlS2V5LCBzM1Jlc3VsdC52YWx1ZSwgY3R4IGFzIGFueSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMzUmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZGVidWcoYENhY2hlIE1JU1M6ICR7Y2FjaGVLZXl9YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNhY2hlIGVudHJ5XG4gICAqIC0gQnVpbGQgdGltZTogV3JpdGUgdG8gbG9jYWwgZmlsZSBjYWNoZSBvbmx5IChvciBkZWxldGUgaWYgZGF0YSBpcyBudWxsKVxuICAgKiAtIFJ1bnRpbWU6IFdyaXRlIHRvIGJvdGggbWVtb3J5IGFuZCBTMy9EeW5hbW9EQiAob3IgZGVsZXRlIGlmIGRhdGEgaXMgbnVsbClcbiAgICovXG4gIGFzeW5jIHNldChcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgIGRhdGE6IEluY3JlbWVudGFsQ2FjaGVWYWx1ZSB8IG51bGwsXG4gICAgY3R4OiBTZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0IHwgU2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNCdWlsZFRpbWUpIHtcbiAgICAgIC8vIEJ1aWxkIHRpbWU6IHdyaXRlIG9yIGRlbGV0ZSBmcm9tIGxvY2FsIGZpbGUgY2FjaGVcbiAgICAgIGlmICh0aGlzLmxvY2FsRmlsZUhhbmRsZXIpIHtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICBjb25zdCB0YWdzID0gZ2V0VGFncyhjdHgpO1xuICAgICAgICAgIGF3YWl0IHRoaXMubG9jYWxGaWxlSGFuZGxlci5zZXQoY2FjaGVLZXksIGRhdGEsIHRhZ3MpO1xuICAgICAgICAgIHRoaXMuZGVidWcoYEJ1aWxkIGNhY2hlIHdyaXRlOiAke2NhY2hlS2V5fWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIERlbGV0ZSBub3QgaW1wbGVtZW50ZWQgZm9yIGxvY2FsIGZpbGUgY2FjaGUgKGJ1aWxkLXRpbWUgb25seSBjcmVhdGVzIGZpbGVzKVxuICAgICAgICAgIHRoaXMuZGVidWcoYEJ1aWxkIGNhY2hlIGRlbGV0ZSBpZ25vcmVkOiAke2NhY2hlS2V5fWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJ1bnRpbWU6IHdyaXRlIG9yIGRlbGV0ZSBmcm9tIG1lbW9yeSBhbmQgUzMvRHluYW1vREJcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIC8vIFdyaXRlIHRvIG1lbW9yeVxuICAgICAgICBpZiAodGhpcy5tZW1vcnlIYW5kbGVyKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5tZW1vcnlIYW5kbGVyLnNldChjYWNoZUtleSwgZGF0YSwgY3R4KTtcbiAgICAgICAgICB0aGlzLmRlYnVnKGBNZW1vcnkgY2FjaGUgd3JpdGU6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBbHNvIHdyaXRlIHRvIFMzL0R5bmFtb0RCIGZvciBwZXJzaXN0ZW5jZVxuICAgICAgICBpZiAodGhpcy5zM0R5bmFtb0hhbmRsZXIpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnMzRHluYW1vSGFuZGxlci5zZXQoY2FjaGVLZXksIGRhdGEsIGN0eCk7XG4gICAgICAgICAgdGhpcy5kZWJ1ZyhgUzMgY2FjaGUgd3JpdGU6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERlbGV0ZSBmcm9tIGJvdGggbGF5ZXJzXG4gICAgICAgIHRoaXMuZGVidWcoYENhY2hlIGRlbGV0ZTogJHtjYWNoZUtleX1gKTtcblxuICAgICAgICAvLyBEZWxldGUgZnJvbSBtZW1vcnkgKHJlbW92ZXMgZnJvbSBjYWNoZSBNYXApXG4gICAgICAgIGlmICh0aGlzLm1lbW9yeUhhbmRsZXIpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm1lbW9yeUhhbmRsZXIuc2V0KGNhY2hlS2V5LCBudWxsLCBjdHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVsZXRlIGZyb20gUzMvRHluYW1vREJcbiAgICAgICAgaWYgKHRoaXMuczNEeW5hbW9IYW5kbGVyKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zM0R5bmFtb0hhbmRsZXIuc2V0KGNhY2hlS2V5LCBudWxsLCBjdHgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGUgdGFnc1xuICAgKiAtIEJ1aWxkIHRpbWU6IE5vdCBpbXBsZW1lbnRlZFxuICAgKiAtIFJ1bnRpbWU6IERlbGVnYXRlIHRvIFMzL0R5bmFtb0RCIGhhbmRsZXJcbiAgICovXG4gIGFzeW5jIHJldmFsaWRhdGVUYWcodGFnOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0J1aWxkVGltZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENsZWFyIGZyb20gbWVtb3J5XG4gICAgaWYgKHRoaXMubWVtb3J5SGFuZGxlcikge1xuICAgICAgYXdhaXQgdGhpcy5tZW1vcnlIYW5kbGVyLnJldmFsaWRhdGVUYWcodGFnKTtcbiAgICB9XG5cbiAgICAvLyBDbGVhciBmcm9tIFMzL0R5bmFtb0RCXG4gICAgaWYgKHRoaXMuczNEeW5hbW9IYW5kbGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLnMzRHluYW1vSGFuZGxlci5yZXZhbGlkYXRlVGFnKHRhZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHJlcXVlc3QgY2FjaGUgKGNhbGxlZCBiZXR3ZWVuIHJlcXVlc3RzKVxuICAgKi9cbiAgYXN5bmMgcmVzZXRSZXF1ZXN0Q2FjaGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubWVtb3J5SGFuZGxlcikge1xuICAgICAgYXdhaXQgdGhpcy5tZW1vcnlIYW5kbGVyLnJlc2V0UmVxdWVzdENhY2hlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|