cdk-nextjs 0.5.2 → 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.
Files changed (33) hide show
  1. package/.jsii +80 -6
  2. package/.jsii.tabl.json +1 -1
  3. package/CLAUDE.md +76 -0
  4. package/assets/lambdas/post-deploy/post-deploy.lambda/index.js +5 -1
  5. package/lib/adapter/adapter.mjs +5 -1
  6. package/lib/adapter/cache-handler.js +24 -21
  7. package/lib/adapter/cache-handler.mjs +15748 -17466
  8. package/lib/adapter/cache-handler.test.js +5 -2
  9. package/lib/adapter/local-file-cache-handler.js +6 -2
  10. package/lib/adapter/memory-cache-handler.js +63 -4
  11. package/lib/adapter/s3-cache-handler.js +10 -3
  12. package/lib/lambdas/post-deploy/post-deploy-function.js +36 -3
  13. package/lib/lambdas/post-deploy/post-deploy.lambda.js +5 -2
  14. package/lib/lambdas/post-deploy/prune-cache-bucket.js +5 -2
  15. package/lib/lambdas/post-deploy/prune-revalidation-table.js +5 -2
  16. package/lib/lambdas/post-deploy/prune-s3.js +5 -2
  17. package/lib/nextjs-api.js +10 -4
  18. package/lib/nextjs-build/nextjs-build.js +41 -5
  19. package/lib/nextjs-build/patch-fetch.js +1 -5
  20. package/lib/nextjs-build/patch-fetch.test.d.ts +1 -0
  21. package/lib/nextjs-build/patch-fetch.test.js +168 -0
  22. package/lib/nextjs-cache.js +7 -4
  23. package/lib/nextjs-compute/nextjs-containers.js +7 -4
  24. package/lib/nextjs-compute/nextjs-functions.js +5 -4
  25. package/lib/nextjs-distribution.js +34 -26
  26. package/lib/nextjs-post-deploy.js +5 -4
  27. package/lib/nextjs-static-assets.js +6 -4
  28. package/lib/root-constructs/nextjs-base-construct.js +9 -4
  29. package/lib/root-constructs/nextjs-global-containers.js +6 -4
  30. package/lib/root-constructs/nextjs-global-functions.js +6 -4
  31. package/lib/root-constructs/nextjs-regional-containers.js +5 -4
  32. package/lib/root-constructs/nextjs-regional-functions.js +6 -4
  33. package/package.json +21 -23
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable import/no-extraneous-dependencies */
4
+ const node_crypto_1 = require("node:crypto");
5
+ function sha256(input) {
6
+ const buffer = typeof input === "string"
7
+ ? Buffer.from(input)
8
+ : Buffer.from(new Uint8Array(input));
9
+ return (0, node_crypto_1.createHash)("sha256").update(buffer).digest("hex");
10
+ }
11
+ describe("patch-fetch", () => {
12
+ let originalFetch;
13
+ let capturedInit;
14
+ beforeEach(() => {
15
+ jest.resetModules();
16
+ capturedInit = undefined;
17
+ originalFetch = jest.fn((_input, init) => {
18
+ capturedInit = init;
19
+ return Promise.resolve(new Response("ok"));
20
+ });
21
+ global.window = {
22
+ location: { href: "https://example.com/", hostname: "example.com" },
23
+ fetch: originalFetch,
24
+ XMLHttpRequest: class {
25
+ open(_method, _url) { }
26
+ send(_body) { }
27
+ setRequestHeader(_name, _value) { }
28
+ },
29
+ };
30
+ // eslint-disable-next-line @typescript-eslint/no-require-imports -- must re-execute against the fresh `window` stub each test
31
+ require("./patch-fetch.js");
32
+ });
33
+ afterEach(() => {
34
+ delete global.window;
35
+ });
36
+ describe("fetch", () => {
37
+ test("hashes URLSearchParams via toString(), not JSON.stringify", async () => {
38
+ const params = new URLSearchParams({ a: "1", b: "2" });
39
+ await global.window.fetch("https://example.com/api", {
40
+ method: "POST",
41
+ body: params,
42
+ });
43
+ const headers = capturedInit.headers;
44
+ expect(headers.get("x-amz-content-sha256")).toBe(sha256(params.toString()));
45
+ expect(headers.get("x-amz-content-sha256")).not.toBe(sha256("{}"));
46
+ });
47
+ test("hashes a plain string body", async () => {
48
+ await global.window.fetch("https://example.com/api", {
49
+ method: "POST",
50
+ body: "raw text body",
51
+ });
52
+ const headers = capturedInit.headers;
53
+ expect(headers.get("x-amz-content-sha256")).toBe(sha256("raw text body"));
54
+ });
55
+ test("hashes a FormData body over its exact encoded bytes and sets content-type", async () => {
56
+ const formData = new FormData();
57
+ formData.append("field", "value");
58
+ formData.append("file", new Blob(["file contents"], { type: "text/plain" }), "file.txt");
59
+ await global.window.fetch("https://example.com/api", {
60
+ method: "POST",
61
+ body: formData,
62
+ });
63
+ // the body sent to the real fetch must be the re-encoded bytes, not the original FormData
64
+ const sentBytes = capturedInit.body;
65
+ expect(sentBytes).toBeInstanceOf(Uint8Array);
66
+ const headers = capturedInit.headers;
67
+ const contentType = headers.get("content-type");
68
+ expect(contentType).toMatch(/^multipart\/form-data; boundary=/);
69
+ expect(headers.get("x-amz-content-sha256")).toBe(sha256(sentBytes));
70
+ // the hashed/sent bytes must round-trip back to the original fields
71
+ const roundTripped = await new Response(sentBytes, {
72
+ headers: { "content-type": contentType },
73
+ }).formData();
74
+ expect(roundTripped.get("field")).toBe("value");
75
+ const file = roundTripped.get("file");
76
+ expect(file.name).toBe("file.txt");
77
+ expect(await file.text()).toBe("file contents");
78
+ });
79
+ test("hashes a Blob body over its raw bytes", async () => {
80
+ const blob = new Blob(["blob contents"], { type: "text/plain" });
81
+ await global.window.fetch("https://example.com/api", {
82
+ method: "POST",
83
+ body: blob,
84
+ });
85
+ const headers = capturedInit.headers;
86
+ expect(headers.get("x-amz-content-sha256")).toBe(sha256(await blob.arrayBuffer()));
87
+ });
88
+ test("hashes an ArrayBuffer body over its raw bytes", async () => {
89
+ const buffer = new TextEncoder().encode("array buffer contents").buffer;
90
+ await global.window.fetch("https://example.com/api", {
91
+ method: "PUT",
92
+ body: buffer,
93
+ });
94
+ const headers = capturedInit.headers;
95
+ expect(headers.get("x-amz-content-sha256")).toBe(sha256(buffer));
96
+ });
97
+ test("hashes an empty byte array when no body is present", async () => {
98
+ await global.window.fetch("https://example.com/api", {
99
+ method: "POST",
100
+ });
101
+ const headers = capturedInit.headers;
102
+ expect(headers.get("x-amz-content-sha256")).toBe(sha256(new Uint8Array(0)));
103
+ });
104
+ test("passes through untouched when init is omitted", async () => {
105
+ await global.window.fetch("https://example.com/api");
106
+ expect(originalFetch).toHaveBeenCalledWith("https://example.com/api", undefined);
107
+ });
108
+ test("passes through without hashing for non-PUT/POST methods", async () => {
109
+ await global.window.fetch("https://example.com/api", {
110
+ method: "GET",
111
+ body: "should not be hashed",
112
+ });
113
+ expect(capturedInit.headers).toBeUndefined();
114
+ });
115
+ test("passes through without hashing for cross-origin requests", async () => {
116
+ await global.window.fetch("https://other-origin.com/api", {
117
+ method: "POST",
118
+ body: "should not be hashed",
119
+ });
120
+ expect(capturedInit.headers).toBeUndefined();
121
+ });
122
+ });
123
+ describe("XMLHttpRequest", () => {
124
+ test("hashes URLSearchParams via toString(), not JSON.stringify", async () => {
125
+ const params = new URLSearchParams({ a: "1", b: "2" });
126
+ const setRequestHeader = jest.fn();
127
+ const xhr = new global.window.XMLHttpRequest();
128
+ xhr.setRequestHeader = setRequestHeader;
129
+ xhr.open("POST", "https://example.com/api");
130
+ await xhr.send(params);
131
+ expect(setRequestHeader).toHaveBeenCalledWith("x-amz-content-sha256", sha256(params.toString()));
132
+ expect(setRequestHeader).not.toHaveBeenCalledWith("x-amz-content-sha256", sha256("{}"));
133
+ });
134
+ test("hashes a plain string body", async () => {
135
+ const setRequestHeader = jest.fn();
136
+ const xhr = new global.window.XMLHttpRequest();
137
+ xhr.setRequestHeader = setRequestHeader;
138
+ xhr.open("PUT", "https://example.com/api");
139
+ await xhr.send("raw text body");
140
+ expect(setRequestHeader).toHaveBeenCalledWith("x-amz-content-sha256", sha256("raw text body"));
141
+ });
142
+ test("does not hash for non-PUT/POST methods", async () => {
143
+ const setRequestHeader = jest.fn();
144
+ const xhr = new global.window.XMLHttpRequest();
145
+ xhr.setRequestHeader = setRequestHeader;
146
+ xhr.open("GET", "https://example.com/api");
147
+ await xhr.send("should not be hashed");
148
+ expect(setRequestHeader).not.toHaveBeenCalled();
149
+ });
150
+ test("does not hash for cross-origin requests", async () => {
151
+ const setRequestHeader = jest.fn();
152
+ const xhr = new global.window.XMLHttpRequest();
153
+ xhr.setRequestHeader = setRequestHeader;
154
+ xhr.open("POST", "https://other-origin.com/api");
155
+ await xhr.send("should not be hashed");
156
+ expect(setRequestHeader).not.toHaveBeenCalled();
157
+ });
158
+ test("does not hash when there is no body", async () => {
159
+ const setRequestHeader = jest.fn();
160
+ const xhr = new global.window.XMLHttpRequest();
161
+ xhr.setRequestHeader = setRequestHeader;
162
+ xhr.open("POST", "https://example.com/api");
163
+ await xhr.send();
164
+ expect(setRequestHeader).not.toHaveBeenCalled();
165
+ });
166
+ });
167
+ });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2gtZmV0Y2gudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXh0anMtYnVpbGQvcGF0Y2gtZmV0Y2gudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNEQUFzRDtBQUN0RCw2Q0FBeUM7QUFFekMsU0FBUyxNQUFNLENBQUMsS0FBd0M7SUFDdEQsTUFBTSxNQUFNLEdBQ1YsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN2QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFPLElBQUEsd0JBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixJQUFJLGFBQXdCLENBQUM7SUFDN0IsSUFBSSxZQUFxQyxDQUFDO0lBRTFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUV6QixhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQWUsRUFBRSxJQUFrQixFQUFFLEVBQUU7WUFDOUQsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVGLE1BQWMsQ0FBQyxNQUFNLEdBQUc7WUFDdkIsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7WUFDbkUsS0FBSyxFQUFFLGFB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QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuXG5mdW5jdGlvbiBzaGEyNTYoaW5wdXQ6IHN0cmluZyB8IEFycmF5QnVmZmVyIHwgVWludDhBcnJheSkge1xuICBjb25zdCBidWZmZXIgPVxuICAgIHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBCdWZmZXIuZnJvbShpbnB1dClcbiAgICAgIDogQnVmZmVyLmZyb20obmV3IFVpbnQ4QXJyYXkoaW5wdXQpKTtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKGJ1ZmZlcikuZGlnZXN0KFwiaGV4XCIpO1xufVxuXG5kZXNjcmliZShcInBhdGNoLWZldGNoXCIsICgpID0+IHtcbiAgbGV0IG9yaWdpbmFsRmV0Y2g6IGplc3QuTW9jaztcbiAgbGV0IGNhcHR1cmVkSW5pdDogUmVxdWVzdEluaXQgfCB1bmRlZmluZWQ7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgamVzdC5yZXNldE1vZHVsZXMoKTtcbiAgICBjYXB0dXJlZEluaXQgPSB1bmRlZmluZWQ7XG5cbiAgICBvcmlnaW5hbEZldGNoID0gamVzdC5mbigoX2lucHV0OiB1bmtub3duLCBpbml0PzogUmVxdWVzdEluaXQpID0+IHtcbiAgICAgIGNhcHR1cmVkSW5pdCA9IGluaXQ7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBSZXNwb25zZShcIm9rXCIpKTtcbiAgICB9KTtcblxuICAgIChnbG9iYWwgYXMgYW55KS53aW5kb3cgPSB7XG4gICAgICBsb2NhdGlvbjogeyBocmVmOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vXCIsIGhvc3RuYW1lOiBcImV4YW1wbGUuY29tXCIgfSxcbiAgICAgIGZldGNoOiBvcmlnaW5hbEZldGNoLFxuICAgICAgWE1MSHR0cFJlcXVlc3Q6IGNsYXNzIHtcbiAgICAgICAgb3BlbihfbWV0aG9kOiBzdHJpbmcsIF91cmw6IHN0cmluZykge31cbiAgICAgICAgc2VuZChfYm9keT86IHVua25vd24pIHt9XG4gICAgICAgIHNldFJlcXVlc3RIZWFkZXIoX25hbWU6IHN0cmluZywgX3ZhbHVlOiBzdHJpbmcpIHt9XG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAtLSBtdXN0IHJlLWV4ZWN1dGUgYWdhaW5zdCB0aGUgZnJlc2ggYHdpbmRvd2Agc3R1YiBlYWNoIHRlc3RcbiAgICByZXF1aXJlKFwiLi9wYXRjaC1mZXRjaC5qc1wiKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBkZWxldGUgKGdsb2JhbCBhcyBhbnkpLndpbmRvdztcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJmZXRjaFwiLCAoKSA9PiB7XG4gICAgdGVzdChcImhhc2hlcyBVUkxTZWFyY2hQYXJhbXMgdmlhIHRvU3RyaW5nKCksIG5vdCBKU09OLnN0cmluZ2lmeVwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHsgYTogXCIxXCIsIGI6IFwiMlwiIH0pO1xuXG4gICAgICBhd2FpdCAoZ2xvYmFsIGFzIGFueSkud2luZG93LmZldGNoKFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGlcIiwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiBwYXJhbXMsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgaGVhZGVycyA9IGNhcHR1cmVkSW5pdCEuaGVhZGVycyBhcyBIZWFkZXJzO1xuICAgICAgZXhwZWN0KGhlYWRlcnMuZ2V0KFwieC1hbXotY29udGVudC1zaGEyNTZcIikpLnRvQmUoXG4gICAgICAgIHNoYTI1NihwYXJhbXMudG9TdHJpbmcoKSksXG4gICAgICApO1xuICAgICAgZXhwZWN0KGhlYWRlcnMuZ2V0KFwieC1hbXotY29udGVudC1zaGEyNTZcIikpLm5vdC50b0JlKHNoYTI1NihcInt9XCIpKTtcbiAgICB9KTtcblxuICAgIHRlc3QoXCJoYXNoZXMgYSBwbGFpbiBzdHJpbmcgYm9keVwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCAoZ2xvYmFsIGFzIGFueSkud2luZG93LmZldGNoKFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGlcIiwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiBcInJhdyB0ZXh0IGJvZHlcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBoZWFkZXJzID0gY2FwdHVyZWRJbml0IS5oZWFkZXJzIGFzIEhlYWRlcnM7XG4gICAgICBleHBlY3QoaGVhZGVycy5nZXQoXCJ4LWFtei1jb250ZW50LXNoYTI1NlwiKSkudG9CZShzaGEyNTYoXCJyYXcgdGV4dCBib2R5XCIpKTtcbiAgICB9KTtcblxuICAgIHRlc3QoXCJoYXNoZXMgYSBGb3JtRGF0YSBib2R5IG92ZXIgaXRzIGV4YWN0IGVuY29kZWQgYnl0ZXMgYW5kIHNldHMgY29udGVudC10eXBlXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWVsZFwiLCBcInZhbHVlXCIpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICBcImZpbGVcIixcbiAgICAgICAgbmV3IEJsb2IoW1wiZmlsZSBjb250ZW50c1wiXSwgeyB0eXBlOiBcInRleHQvcGxhaW5cIiB9KSxcbiAgICAgICAgXCJmaWxlLnR4dFwiLFxuICAgICAgKTtcblxuICAgICAgYXdhaXQgKGdsb2JhbCBhcyBhbnkpLndpbmRvdy5mZXRjaChcImh0dHBzOi8vZXhhbXBsZS5jb20vYXBpXCIsIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICB9KTtcblxuICAgICAgLy8gdGhlIGJvZHkgc2VudCB0byB0aGUgcmVhbCBmZXRjaCBtdXN0IGJlIHRoZSByZS1lbmNvZGVkIGJ5dGVzLCBub3QgdGhlIG9yaWdpbmFsIEZvcm1EYXRhXG4gICAgICBjb25zdCBzZW50Qnl0ZXMgPSBjYXB0dXJlZEluaXQhLmJvZHkgYXMgVWludDhBcnJheTtcbiAgICAgIGV4cGVjdChzZW50Qnl0ZXMpLnRvQmVJbnN0YW5jZU9mKFVpbnQ4QXJyYXkpO1xuXG4gICAgICBjb25zdCBoZWFkZXJzID0gY2FwdHVyZWRJbml0IS5oZWFkZXJzIGFzIEhlYWRlcnM7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9IGhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpITtcbiAgICAgIGV4cGVjdChjb250ZW50VHlwZSkudG9NYXRjaCgvXm11bHRpcGFydFxcL2Zvcm0tZGF0YTsgYm91bmRhcnk9Lyk7XG4gICAgICBleHBlY3QoaGVhZGVycy5nZXQoXCJ4LWFtei1jb250ZW50LXNoYTI1NlwiKSkudG9CZShzaGEyNTYoc2VudEJ5dGVzKSk7XG5cbiAgICAgIC8vIHRoZSBoYXNoZWQvc2VudCBieXRlcyBtdXN0IHJvdW5kLXRyaXAgYmFjayB0byB0aGUgb3JpZ2luYWwgZmllbGRzXG4gICAgICBjb25zdCByb3VuZFRyaXBwZWQgPSBhd2FpdCBuZXcgUmVzcG9uc2Uoc2VudEJ5dGVzLCB7XG4gICAgICAgIGhlYWRlcnM6IHsgXCJjb250ZW50LXR5cGVcIjogY29udGVudFR5cGUgfSxcbiAgICAgIH0pLmZvcm1EYXRhKCk7XG4gICAgICBleHBlY3Qocm91bmRUcmlwcGVkLmdldChcImZpZWxkXCIpKS50b0JlKFwidmFsdWVcIik7XG4gICAgICBjb25zdCBmaWxlID0gcm91bmRUcmlwcGVkLmdldChcImZpbGVcIikgYXMgRmlsZTtcbiAgICAgIGV4cGVjdChmaWxlLm5hbWUpLnRvQmUoXCJmaWxlLnR4dFwiKTtcbiAgICAgIGV4cGVjdChhd2FpdCBmaWxlLnRleHQoKSkudG9CZShcImZpbGUgY29udGVudHNcIik7XG4gICAgfSk7XG5cbiAgICB0ZXN0KFwiaGFzaGVzIGEgQmxvYiBib2R5IG92ZXIgaXRzIHJhdyBieXRlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW1wiYmxvYiBjb250ZW50c1wiXSwgeyB0eXBlOiBcInRleHQvcGxhaW5cIiB9KTtcblxuICAgICAgYXdhaXQgKGdsb2JhbCBhcyBhbnkpLndpbmRvdy5mZXRjaChcImh0dHBzOi8vZXhhbXBsZS5jb20vYXBpXCIsIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgYm9keTogYmxvYixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBoZWFkZXJzID0gY2FwdHVyZWRJbml0IS5oZWFkZXJzIGFzIEhlYWRlcnM7XG4gICAgICBleHBlY3QoaGVhZGVycy5nZXQoXCJ4LWFtei1jb250ZW50LXNoYTI1NlwiKSkudG9CZShcbiAgICAgICAgc2hhMjU2KGF3YWl0IGJsb2IuYXJyYXlCdWZmZXIoKSksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGVzdChcImhhc2hlcyBhbiBBcnJheUJ1ZmZlciBib2R5IG92ZXIgaXRzIHJhdyBieXRlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWZmZXIgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJhcnJheSBidWZmZXIgY29udGVudHNcIikuYnVmZmVyO1xuXG4gICAgICBhd2FpdCAoZ2xvYmFsIGFzIGFueSkud2luZG93LmZldGNoKFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGlcIiwge1xuICAgICAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgICAgIGJvZHk6IGJ1ZmZlcixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBoZWFkZXJzID0gY2FwdHVyZWRJbml0IS5oZWFkZXJzIGFzIEhlYWRlcnM7XG4gICAgICBleHBlY3QoaGVhZGVycy5nZXQoXCJ4LWFtei1jb250ZW50LXNoYTI1NlwiKSkudG9CZShzaGEyNTYoYnVmZmVyKSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KFwiaGFzaGVzIGFuIGVtcHR5IGJ5dGUgYXJyYXkgd2hlbiBubyBib2R5IGlzIHByZXNlbnRcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgKGdsb2JhbCBhcyBhbnkpLndpbmRvdy5mZXRjaChcImh0dHBzOi8vZXhhbXBsZS5jb20vYXBpXCIsIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBoZWFkZXJzID0gY2FwdHVyZWRJbml0IS5oZWFkZXJzIGFzIEhlYWRlcnM7XG4gICAgICBleHBlY3QoaGVhZGVycy5nZXQoXCJ4LWFtei1jb250ZW50LXNoYTI1NlwiKSkudG9CZShcbiAgICAgICAgc2hhMjU2KG5ldyBVaW50OEFycmF5KDApKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KFwicGFzc2VzIHRocm91Z2ggdW50b3VjaGVkIHdoZW4gaW5pdCBpcyBvbWl0dGVkXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IChnbG9iYWwgYXMgYW55KS53aW5kb3cuZmV0Y2goXCJodHRwczovL2V4YW1wbGUuY29tL2FwaVwiKTtcblxuICAgICAgZXhwZWN0KG9yaWdpbmFsRmV0Y2gpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb20vYXBpXCIsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KFwicGFzc2VzIHRocm91Z2ggd2l0aG91dCBoYXNoaW5nIGZvciBub24tUFVUL1BPU1QgbWV0aG9kc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCAoZ2xvYmFsIGFzIGFueSkud2luZG93LmZldGNoKFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGlcIiwge1xuICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgIGJvZHk6IFwic2hvdWxkIG5vdCBiZSBoYXNoZWRcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoY2FwdHVyZWRJbml0IS5oZWFkZXJzKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KFwicGFzc2VzIHRocm91Z2ggd2l0aG91dCBoYXNoaW5nIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHNcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgKGdsb2JhbCBhcyBhbnkpLndpbmRvdy5mZXRjaChcImh0dHBzOi8vb3RoZXItb3JpZ2luLmNvbS9hcGlcIiwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiBcInNob3VsZCBub3QgYmUgaGFzaGVkXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGNhcHR1cmVkSW5pdCEuaGVhZGVycykudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlhNTEh0dHBSZXF1ZXN0XCIsICgpID0+IHtcbiAgICB0ZXN0KFwiaGFzaGVzIFVSTFNlYXJjaFBhcmFtcyB2aWEgdG9TdHJpbmcoKSwgbm90IEpTT04uc3RyaW5naWZ5XCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoeyBhOiBcIjFcIiwgYjogXCIyXCIgfSk7XG4gICAgICBjb25zdCBzZXRSZXF1ZXN0SGVhZGVyID0gamVzdC5mbigpO1xuXG4gICAgICBjb25zdCB4aHIgPSBuZXcgKGdsb2JhbCBhcyBhbnkpLndpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIgPSBzZXRSZXF1ZXN0SGVhZGVyO1xuICAgICAgeGhyLm9wZW4oXCJQT1NUXCIsIFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGlcIik7XG4gICAgICBhd2FpdCB4aHIuc2VuZChwYXJhbXMpO1xuXG4gICAgICBleHBlY3Qoc2V0UmVxdWVzdEhlYWRlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgIFwieC1hbXotY29udGVudC1zaGEyNTZcIixcbiAgICAgICAgc2hhMjU2KHBhcmFtcy50b1N0cmluZygpKSxcbiAgICAgICk7XG4gICAgICBleHBlY3Qoc2V0UmVxdWVzdEhlYWRlcikubm90LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBcIngtYW16LWNvbnRlbnQtc2hhMjU2XCIsXG4gICAgICAgIHNoYTI1NihcInt9XCIpLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRlc3QoXCJoYXNoZXMgYSBwbGFpbiBzdHJpbmcgYm9keVwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXRSZXF1ZXN0SGVhZGVyID0gamVzdC5mbigpO1xuXG4gICAgICBjb25zdCB4aHIgPSBuZXcgKGdsb2JhbCBhcyBhbnkpLndpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIgPSBzZXRSZXF1ZXN0SGVhZGVyO1xuICAgICAgeGhyLm9wZW4oXCJQVVRcIiwgXCJodHRwczovL2V4YW1wbGUuY29tL2FwaVwiKTtcbiAgICAgIGF3YWl0IHhoci5zZW5kKFwicmF3IHRleHQgYm9keVwiKTtcblxuICAgICAgZXhwZWN0KHNldFJlcXVlc3RIZWFkZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBcIngtYW16LWNvbnRlbnQtc2hhMjU2XCIsXG4gICAgICAgIHNoYTI1NihcInJhdyB0ZXh0IGJvZHlcIiksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGVzdChcImRvZXMgbm90IGhhc2ggZm9yIG5vbi1QVVQvUE9TVCBtZXRob2RzXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNldFJlcXVlc3RIZWFkZXIgPSBqZXN0LmZuKCk7XG5cbiAgICAgIGNvbnN0IHhociA9IG5ldyAoZ2xvYmFsIGFzIGFueSkud2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlciA9IHNldFJlcXVlc3RIZWFkZXI7XG4gICAgICB4aHIub3BlbihcIkdFVFwiLCBcImh0dHBzOi8vZXhhbXBsZS5jb20vYXBpXCIpO1xuICAgICAgYXdhaXQgeGhyLnNlbmQoXCJzaG91bGQgbm90IGJlIGhhc2hlZFwiKTtcblxuICAgICAgZXhwZWN0KHNldFJlcXVlc3RIZWFkZXIpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KFwiZG9lcyBub3QgaGFzaCBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNldFJlcXVlc3RIZWFkZXIgPSBqZXN0LmZuKCk7XG5cbiAgICAgIGNvbnN0IHhociA9IG5ldyAoZ2xvYmFsIGFzIGFueSkud2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlciA9IHNldFJlcXVlc3RIZWFkZXI7XG4gICAgICB4aHIub3BlbihcIlBPU1RcIiwgXCJodHRwczovL290aGVyLW9yaWdpbi5jb20vYXBpXCIpO1xuICAgICAgYXdhaXQgeGhyLnNlbmQoXCJzaG91bGQgbm90IGJlIGhhc2hlZFwiKTtcblxuICAgICAgZXhwZWN0KHNldFJlcXVlc3RIZWFkZXIpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KFwiZG9lcyBub3QgaGFzaCB3aGVuIHRoZXJlIGlzIG5vIGJvZHlcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2V0UmVxdWVzdEhlYWRlciA9IGplc3QuZm4oKTtcblxuICAgICAgY29uc3QgeGhyID0gbmV3IChnbG9iYWwgYXMgYW55KS53aW5kb3cuWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyID0gc2V0UmVxdWVzdEhlYWRlcjtcbiAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCBcImh0dHBzOi8vZXhhbXBsZS5jb20vYXBpXCIpO1xuICAgICAgYXdhaXQgeGhyLnNlbmQoKTtcblxuICAgICAgZXhwZWN0KHNldFJlcXVlc3RIZWFkZXIpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.NextjsCache = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -14,6 +13,12 @@ const constants_1 = require("./constants");
14
13
  * Next.js Cache construct providing unified S3 and DynamoDB cache management.
15
14
  */
16
15
  class NextjsCache extends constructs_1.Construct {
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsCache", version: "0.5.4" };
17
+ cacheBucket;
18
+ revalidationTable;
19
+ buildId;
20
+ bucketDeployment;
21
+ props;
17
22
  constructor(scope, id, props) {
18
23
  super(scope, id);
19
24
  this.props = props;
@@ -79,6 +84,4 @@ class NextjsCache extends constructs_1.Construct {
79
84
  }
80
85
  }
81
86
  exports.NextjsCache = NextjsCache;
82
- _a = JSII_RTTI_SYMBOL_1;
83
- NextjsCache[_a] = { fqn: "cdk-nextjs.NextjsCache", version: "0.5.2" };
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25leHRqcy1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJCQUFnQztBQUNoQyw2Q0FBNEM7QUFDNUMsMkRBTWtDO0FBQ2xDLCtDQU00QjtBQUM1QixxRUFJdUM7QUFDdkMsMkNBQXVDO0FBQ3ZDLDJDQUF5QztBQStCekM7O0dBRUc7QUFDSCxNQUFhLFdBQVksU0FBUSxzQkFBUztJQU94QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3BCLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssaUJBQWlCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDeEMsVUFBVSxFQUFFLHlCQUFnQixDQUFDLFVBQVU7WUFDdkMsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztZQUM5QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsVUFBVSxFQUFFLElBQUk7WUFDaEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0I7U0FDMUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHVCQUF1QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLHNCQUFPLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ25ELFlBQVksRUFBRTtnQkFDWixJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsNEJBQWEsQ0FBQyxNQUFNO2FBQzNCO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSw0QkFBYSxDQUFDLE1BQU07YUFDM0I7WUFDRCxPQUFPLEVBQUUsc0JBQU8sQ0FBQyxRQUFRLEVBQUU7WUFDM0IsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztZQUNwQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHNCQUFzQjtTQUNoRCxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQjtRQUN0QixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLElBQUEsZUFBVSxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLENBQUMsR0FBRyxDQUNULEdBQUcsc0JBQVUsZ0NBQWdDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxrQ0FBa0MsQ0FDdkcsQ0FBQztZQUNGLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUNULEdBQUcsc0JBQVUsOEJBQThCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQ3JFLENBQUM7UUFFRix1REFBdUQ7UUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLG9DQUFnQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUN6RSxPQUFPLEVBQUUsQ0FBQywwQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hELGlCQUFpQixFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ25DLG9CQUFvQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLDJDQUEyQztZQUNyRixLQUFLLEVBQUUsS0FBSyxFQUFFLDBHQUEwRztZQUN4SCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHFCQUFxQjtTQUMvQyxDQUFDLENBQUM7UUFDSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7O0FBaEZILGtDQWlGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZVR5cGUsXG4gIEJpbGxpbmcsXG4gIFRhYmxlVjIsXG4gIFRhYmxlUHJvcHNWMixcbiAgSVRhYmxlVjIsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGJcIjtcbmltcG9ydCB7XG4gIEJ1Y2tldCxcbiAgQnVja2V0RW5jcnlwdGlvbixcbiAgQnVja2V0UHJvcHMsXG4gIEJsb2NrUHVibGljQWNjZXNzLFxuICBJQnVja2V0LFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQge1xuICBCdWNrZXREZXBsb3ltZW50LFxuICBCdWNrZXREZXBsb3ltZW50UHJvcHMsXG4gIFNvdXJjZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zMy1kZXBsb3ltZW50XCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTE9HX1BSRUZJWCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0NhY2hlT3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgY2FjaGVCdWNrZXRQcm9wcz86IEJ1Y2tldFByb3BzO1xuICByZWFkb25seSByZXZhbGlkYXRpb25UYWJsZVByb3BzPzogVGFibGVQcm9wc1YyO1xuICByZWFkb25seSBidWNrZXREZXBsb3ltZW50UHJvcHM/OiBCdWNrZXREZXBsb3ltZW50UHJvcHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQ2FjaGVQcm9wcyB7XG4gIHJlYWRvbmx5IGJ1aWxkSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIFMzIGJ1Y2tldCBmb3IgY2FjaGUgc3RvcmFnZS4gV2hlbiBwcm92aWRlZCwgY2RrLW5leHRqc1xuICAgKiB3aWxsIHNraXAgY3JlYXRpbmcgYSBuZXcgYnVja2V0LiBDYWNoZSBvYmplY3RzIGFyZSBwcmVmaXhlZCB3aXRoIGBidWlsZElkYFxuICAgKiBzbyBtdWx0aXBsZSBkZXBsb3ltZW50cyBjYW4gc2FmZWx5IHNoYXJlIG9uZSBidWNrZXQuXG4gICAqL1xuICByZWFkb25seSBjYWNoZUJ1Y2tldD86IElCdWNrZXQ7XG4gIC8qKlxuICAgKiBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBpbml0IGNhY2hlIGRpcmVjdG9yeVxuICAgKiBAZXhhbXBsZSBcIi9Vc2Vycy9qb2huL215YXBwLy5uZXh0L2Nkay1uZXh0anMtaW5pdC1jYWNoZVwiXG4gICAqL1xuICByZWFkb25seSBpbml0Q2FjaGVEaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogTmV4dGpzQ2FjaGVPdmVycmlkZXM7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBEeW5hbW9EQiB0YWJsZSBmb3IgcmV2YWxpZGF0aW9uIG1ldGFkYXRhLiBXaGVuIHByb3ZpZGVkLFxuICAgKiBjZGstbmV4dGpzIHdpbGwgc2tpcCBjcmVhdGluZyBhIG5ldyB0YWJsZS4gVGhlIHRhYmxlIG11c3QgaGF2ZSBgcGtgIChTdHJpbmcpXG4gICAqIGFzIHBhcnRpdGlvbiBrZXkgYW5kIGBza2AgKFN0cmluZykgYXMgc29ydCBrZXkuIEVudHJpZXMgYXJlIHBhcnRpdGlvbmVkIGJ5XG4gICAqIGBidWlsZElkYCBzbyBtdWx0aXBsZSBkZXBsb3ltZW50cyBjYW4gc2FmZWx5IHNoYXJlIG9uZSB0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlPzogSVRhYmxlVjI7XG59XG5cbi8qKlxuICogTmV4dC5qcyBDYWNoZSBjb25zdHJ1Y3QgcHJvdmlkaW5nIHVuaWZpZWQgUzMgYW5kIER5bmFtb0RCIGNhY2hlIG1hbmFnZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXh0anNDYWNoZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0OiBJQnVja2V0O1xuICByZWFkb25seSByZXZhbGlkYXRpb25UYWJsZTogSVRhYmxlVjI7XG4gIHJlYWRvbmx5IGJ1aWxkSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgYnVja2V0RGVwbG95bWVudD86IEJ1Y2tldERlcGxveW1lbnQ7XG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc0NhY2hlUHJvcHM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5leHRqc0NhY2hlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmJ1aWxkSWQgPSBwcm9wcy5idWlsZElkO1xuICAgIHRoaXMuY2FjaGVCdWNrZXQgPSBwcm9wcy5jYWNoZUJ1Y2tldCA/PyB0aGlzLmNyZWF0ZUNhY2hlQnVja2V0KCk7XG4gICAgdGhpcy5yZXZhbGlkYXRpb25UYWJsZSA9XG4gICAgICBwcm9wcy5yZXZhbGlkYXRpb25UYWJsZSA/PyB0aGlzLmNyZWF0ZVJldmFsaWRhdGlvblRhYmxlKCk7XG4gICAgdGhpcy5idWNrZXREZXBsb3ltZW50ID0gdGhpcy5jcmVhdGVEZXBsb3ltZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBTMyBidWNrZXQgZm9yIGNhY2hlIHN0b3JhZ2Ugd2l0aCBCVUlMRF9JRCBwcmVmaXhpbmcuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUNhY2hlQnVja2V0KCk6IElCdWNrZXQge1xuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBCdWNrZXQodGhpcywgXCJCdWNrZXRcIiwge1xuICAgICAgZW5jcnlwdGlvbjogQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5jYWNoZUJ1Y2tldFByb3BzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJ1Y2tldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIER5bmFtb0RCIHRhYmxlIGZvciByZXZhbGlkYXRpb24gbWV0YWRhdGFcbiAgICogU2NoZW1hOiBwayAoYnVpbGRJZCBvciBcIk1FVEFEQVRBXCIpLCBzayAodGFnI2NhY2hlS2V5IG9yIFwiQ1VSUkVOVF9CVUlMRFwiKSwgY3JlYXRlZEF0LCByZXZhbGlkYXRlZEF0XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVJldmFsaWRhdGlvblRhYmxlKCk6IFRhYmxlVjIge1xuICAgIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlVjIodGhpcywgXCJSZXZhbGlkYXRpb25UYWJsZVwiLCB7XG4gICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgbmFtZTogXCJwa1wiLFxuICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBzb3J0S2V5OiB7XG4gICAgICAgIG5hbWU6IFwic2tcIixcbiAgICAgICAgdHlwZTogQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICB9LFxuICAgICAgYmlsbGluZzogQmlsbGluZy5vbkRlbWFuZCgpLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LnJldmFsaWRhdGlvblRhYmxlUHJvcHMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGFibGU7XG4gIH1cblxuICAvKipcbiAgICogRGVwbG95IHByZS1idWlsdCBjYWNoZSBmaWxlcyBmcm9tIC5uZXh0L2Nkay1uZXh0anMtaW5pdC1jYWNoZSB0byBTM1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVEZXBsb3ltZW50KCk6IEJ1Y2tldERlcGxveW1lbnQgfCB1bmRlZmluZWQge1xuICAgIC8vIENoZWNrIGlmIGNhY2hlIGRpcmVjdG9yeSBleGlzdHNcbiAgICBpZiAoIWV4aXN0c1N5bmModGhpcy5wcm9wcy5pbml0Q2FjaGVEaXIpKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYCR7TE9HX1BSRUZJWH0gTm8gcHJlLWJ1aWx0IGNhY2hlIGZvdW5kIGF0ICR7dGhpcy5wcm9wcy5pbml0Q2FjaGVEaXJ9LCBza2lwcGluZyBpbml0IGNhY2hlIGRlcGxveW1lbnRgLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtMT0dfUFJFRklYfSBEZXBsb3lpbmcgaW5pdCBjYWNoZSBmcm9tICR7dGhpcy5wcm9wcy5pbml0Q2FjaGVEaXJ9YCxcbiAgICApO1xuXG4gICAgLy8gVXNlIHN0YW5kYXJkIEJ1Y2tldERlcGxveW1lbnQgZm9yIHJlZ3VsYXIgUzMgYnVja2V0c1xuICAgIGNvbnN0IGJ1Y2tldERlcGxveW1lbnQgPSBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBcIkluaXRDYWNoZURlcGxveW1lbnRcIiwge1xuICAgICAgc291cmNlczogW1NvdXJjZS5hc3NldCh0aGlzLnByb3BzLmluaXRDYWNoZURpcildLFxuICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHRoaXMuY2FjaGVCdWNrZXQsXG4gICAgICBkZXN0aW5hdGlvbktleVByZWZpeDogdGhpcy5wcm9wcy5idWlsZElkLCAvLyBBZGQgYnVpbGRJZCBwcmVmaXggdG8gYWxsIHVwbG9hZGVkIGZpbGVzXG4gICAgICBwcnVuZTogZmFsc2UsIC8vIERvbid0IGRlbGV0ZSBleGlzdGluZyBvYmplY3RzIHRvIHByZXZlbnQgNDA0cyBkdXJpbmcgZGVwbG95bWVudCwgcHJ1bmluZyB3aWxsIGJlIGhhbmRsZWQgYnkgcG9zdC1kZXBsb3lcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5idWNrZXREZXBsb3ltZW50UHJvcHMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGJ1Y2tldERlcGxveW1lbnQ7XG4gIH1cbn1cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25leHRqcy1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkJBQWdDO0FBQ2hDLDZDQUE0QztBQUM1QywyREFNa0M7QUFDbEMsK0NBTTRCO0FBQzVCLHFFQUl1QztBQUN2QywyQ0FBdUM7QUFDdkMsMkNBQXlDO0FBK0J6Qzs7R0FFRztBQUNILE1BQWEsV0FBWSxTQUFRLHNCQUFTOztJQUMvQixXQUFXLENBQVU7SUFDckIsaUJBQWlCLENBQVc7SUFDNUIsT0FBTyxDQUFTO0lBQ2hCLGdCQUFnQixDQUFvQjtJQUNyQyxLQUFLLENBQW1CO0lBRWhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxpQkFBaUI7WUFDcEIsS0FBSyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQkFBaUI7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxVQUFVLEVBQUUseUJBQWdCLENBQUMsVUFBVTtZQUN2QyxpQkFBaUIsRUFBRSwwQkFBaUIsQ0FBQyxTQUFTO1lBQzlDLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87WUFDcEMsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixVQUFVLEVBQUUsSUFBSTtZQUNoQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGdCQUFnQjtTQUMxQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssdUJBQXVCO1FBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksc0JBQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDbkQsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSw0QkFBYSxDQUFDLE1BQU07YUFDM0I7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsSUFBSSxFQUFFLDRCQUFhLENBQUMsTUFBTTthQUMzQjtZQUNELE9BQU8sRUFBRSxzQkFBTyxDQUFDLFFBQVEsRUFBRTtZQUMzQixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsc0JBQXNCO1NBQ2hELENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsSUFBQSxlQUFVLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsR0FBRyxzQkFBVSxnQ0FBZ0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLGtDQUFrQyxDQUN2RyxDQUFDO1lBQ0YsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQ1QsR0FBRyxzQkFBVSw4QkFBOEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FDckUsQ0FBQztRQUVGLHVEQUF1RDtRQUN2RCxNQUFNLGdCQUFnQixHQUFHLElBQUksb0NBQWdCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ3pFLE9BQU8sRUFBRSxDQUFDLDBCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEQsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDbkMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsMkNBQTJDO1lBQ3JGLEtBQUssRUFBRSxLQUFLLEVBQUUsMEdBQTBHO1lBQ3hILEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUscUJBQXFCO1NBQy9DLENBQUMsQ0FBQztRQUNILE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQzs7QUFoRkgsa0NBaUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRlVHlwZSxcbiAgQmlsbGluZyxcbiAgVGFibGVWMixcbiAgVGFibGVQcm9wc1YyLFxuICBJVGFibGVWMixcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHtcbiAgQnVja2V0LFxuICBCdWNrZXRFbmNyeXB0aW9uLFxuICBCdWNrZXRQcm9wcyxcbiAgQmxvY2tQdWJsaWNBY2Nlc3MsXG4gIElCdWNrZXQsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7XG4gIEJ1Y2tldERlcGxveW1lbnQsXG4gIEJ1Y2tldERlcGxveW1lbnRQcm9wcyxcbiAgU291cmNlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnRcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBMT0dfUFJFRklYIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQ2FjaGVPdmVycmlkZXMge1xuICByZWFkb25seSBjYWNoZUJ1Y2tldFByb3BzPzogQnVja2V0UHJvcHM7XG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlUHJvcHM/OiBUYWJsZVByb3BzVjI7XG4gIHJlYWRvbmx5IGJ1Y2tldERlcGxveW1lbnRQcm9wcz86IEJ1Y2tldERlcGxveW1lbnRQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNDYWNoZVByb3BzIHtcbiAgcmVhZG9ubHkgYnVpbGRJZDogc3RyaW5nO1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gUzMgYnVja2V0IGZvciBjYWNoZSBzdG9yYWdlLiBXaGVuIHByb3ZpZGVkLCBjZGstbmV4dGpzXG4gICAqIHdpbGwgc2tpcCBjcmVhdGluZyBhIG5ldyBidWNrZXQuIENhY2hlIG9iamVjdHMgYXJlIHByZWZpeGVkIHdpdGggYGJ1aWxkSWRgXG4gICAqIHNvIG11bHRpcGxlIGRlcGxveW1lbnRzIGNhbiBzYWZlbHkgc2hhcmUgb25lIGJ1Y2tldC5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0PzogSUJ1Y2tldDtcbiAgLyoqXG4gICAqIEFic29sdXRlIHBhdGggdG8gdGhlIGluaXQgY2FjaGUgZGlyZWN0b3J5XG4gICAqIEBleGFtcGxlIFwiL1VzZXJzL2pvaG4vbXlhcHAvLm5leHQvY2RrLW5leHRqcy1pbml0LWNhY2hlXCJcbiAgICovXG4gIHJlYWRvbmx5IGluaXRDYWNoZURpcjogc3RyaW5nO1xuICByZWFkb25seSBvdmVycmlkZXM/OiBOZXh0anNDYWNoZU92ZXJyaWRlcztcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIER5bmFtb0RCIHRhYmxlIGZvciByZXZhbGlkYXRpb24gbWV0YWRhdGEuIFdoZW4gcHJvdmlkZWQsXG4gICAqIGNkay1uZXh0anMgd2lsbCBza2lwIGNyZWF0aW5nIGEgbmV3IHRhYmxlLiBUaGUgdGFibGUgbXVzdCBoYXZlIGBwa2AgKFN0cmluZylcbiAgICogYXMgcGFydGl0aW9uIGtleSBhbmQgYHNrYCAoU3RyaW5nKSBhcyBzb3J0IGtleS4gRW50cmllcyBhcmUgcGFydGl0aW9uZWQgYnlcbiAgICogYGJ1aWxkSWRgIHNvIG11bHRpcGxlIGRlcGxveW1lbnRzIGNhbiBzYWZlbHkgc2hhcmUgb25lIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV2YWxpZGF0aW9uVGFibGU/OiBJVGFibGVWMjtcbn1cblxuLyoqXG4gKiBOZXh0LmpzIENhY2hlIGNvbnN0cnVjdCBwcm92aWRpbmcgdW5pZmllZCBTMyBhbmQgRHluYW1vREIgY2FjaGUgbWFuYWdlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0NhY2hlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgY2FjaGVCdWNrZXQ6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlOiBJVGFibGVWMjtcbiAgcmVhZG9ubHkgYnVpbGRJZDogc3RyaW5nO1xuICByZWFkb25seSBidWNrZXREZXBsb3ltZW50PzogQnVja2V0RGVwbG95bWVudDtcbiAgcHJpdmF0ZSBwcm9wczogTmV4dGpzQ2FjaGVQcm9wcztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTmV4dGpzQ2FjaGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMuYnVpbGRJZCA9IHByb3BzLmJ1aWxkSWQ7XG4gICAgdGhpcy5jYWNoZUJ1Y2tldCA9IHByb3BzLmNhY2hlQnVja2V0ID8/IHRoaXMuY3JlYXRlQ2FjaGVCdWNrZXQoKTtcbiAgICB0aGlzLnJldmFsaWRhdGlvblRhYmxlID1cbiAgICAgIHByb3BzLnJldmFsaWRhdGlvblRhYmxlID8/IHRoaXMuY3JlYXRlUmV2YWxpZGF0aW9uVGFibGUoKTtcbiAgICB0aGlzLmJ1Y2tldERlcGxveW1lbnQgPSB0aGlzLmNyZWF0ZURlcGxveW1lbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIFMzIGJ1Y2tldCBmb3IgY2FjaGUgc3RvcmFnZSB3aXRoIEJVSUxEX0lEIHByZWZpeGluZy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQ2FjaGVCdWNrZXQoKTogSUJ1Y2tldCB7XG4gICAgY29uc3QgYnVja2V0ID0gbmV3IEJ1Y2tldCh0aGlzLCBcIkJ1Y2tldFwiLCB7XG4gICAgICBlbmNyeXB0aW9uOiBCdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmNhY2hlQnVja2V0UHJvcHMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnVja2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgRHluYW1vREIgdGFibGUgZm9yIHJldmFsaWRhdGlvbiBtZXRhZGF0YVxuICAgKiBTY2hlbWE6IHBrIChidWlsZElkIG9yIFwiTUVUQURBVEFcIiksIHNrICh0YWcjY2FjaGVLZXkgb3IgXCJDVVJSRU5UX0JVSUxEXCIpLCBjcmVhdGVkQXQsIHJldmFsaWRhdGVkQXRcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlUmV2YWxpZGF0aW9uVGFibGUoKTogVGFibGVWMiB7XG4gICAgY29uc3QgdGFibGUgPSBuZXcgVGFibGVWMih0aGlzLCBcIlJldmFsaWRhdGlvblRhYmxlXCIsIHtcbiAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICBuYW1lOiBcInBrXCIsXG4gICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIHNvcnRLZXk6IHtcbiAgICAgICAgbmFtZTogXCJza1wiLFxuICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBiaWxsaW5nOiBCaWxsaW5nLm9uRGVtYW5kKCksXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ucmV2YWxpZGF0aW9uVGFibGVQcm9wcyxcbiAgICB9KTtcblxuICAgIHJldHVybiB0YWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXBsb3kgcHJlLWJ1aWx0IGNhY2hlIGZpbGVzIGZyb20gLm5leHQvY2RrLW5leHRqcy1pbml0LWNhY2hlIHRvIFMzXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURlcGxveW1lbnQoKTogQnVja2V0RGVwbG95bWVudCB8IHVuZGVmaW5lZCB7XG4gICAgLy8gQ2hlY2sgaWYgY2FjaGUgZGlyZWN0b3J5IGV4aXN0c1xuICAgIGlmICghZXhpc3RzU3luYyh0aGlzLnByb3BzLmluaXRDYWNoZURpcikpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgJHtMT0dfUFJFRklYfSBObyBwcmUtYnVpbHQgY2FjaGUgZm91bmQgYXQgJHt0aGlzLnByb3BzLmluaXRDYWNoZURpcn0sIHNraXBwaW5nIGluaXQgY2FjaGUgZGVwbG95bWVudGAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAke0xPR19QUkVGSVh9IERlcGxveWluZyBpbml0IGNhY2hlIGZyb20gJHt0aGlzLnByb3BzLmluaXRDYWNoZURpcn1gLFxuICAgICk7XG5cbiAgICAvLyBVc2Ugc3RhbmRhcmQgQnVja2V0RGVwbG95bWVudCBmb3IgcmVndWxhciBTMyBidWNrZXRzXG4gICAgY29uc3QgYnVja2V0RGVwbG95bWVudCA9IG5ldyBCdWNrZXREZXBsb3ltZW50KHRoaXMsIFwiSW5pdENhY2hlRGVwbG95bWVudFwiLCB7XG4gICAgICBzb3VyY2VzOiBbU291cmNlLmFzc2V0KHRoaXMucHJvcHMuaW5pdENhY2hlRGlyKV0sXG4gICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogdGhpcy5jYWNoZUJ1Y2tldCxcbiAgICAgIGRlc3RpbmF0aW9uS2V5UHJlZml4OiB0aGlzLnByb3BzLmJ1aWxkSWQsIC8vIEFkZCBidWlsZElkIHByZWZpeCB0byBhbGwgdXBsb2FkZWQgZmlsZXNcbiAgICAgIHBydW5lOiBmYWxzZSwgLy8gRG9uJ3QgZGVsZXRlIGV4aXN0aW5nIG9iamVjdHMgdG8gcHJldmVudCA0MDRzIGR1cmluZyBkZXBsb3ltZW50LCBwcnVuaW5nIHdpbGwgYmUgaGFuZGxlZCBieSBwb3N0LWRlcGxveVxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmJ1Y2tldERlcGxveW1lbnRQcm9wcyxcbiAgICB9KTtcbiAgICByZXR1cm4gYnVja2V0RGVwbG95bWVudDtcbiAgfVxufVxuIl19
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.NextjsContainers = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -19,6 +18,12 @@ const constants_1 = require("../constants");
19
18
  * Fargate.
20
19
  */
21
20
  class NextjsContainers extends constructs_1.Construct {
21
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsContainers", version: "0.5.4" };
22
+ albFargateService;
23
+ ecsCluster;
24
+ url;
25
+ dockerImageAsset;
26
+ props;
22
27
  constructor(scope, id, props) {
23
28
  super(scope, id);
24
29
  this.props = props;
@@ -266,6 +271,4 @@ class NextjsContainers extends constructs_1.Construct {
266
271
  }
267
272
  }
268
273
  exports.NextjsContainers = NextjsContainers;
269
- _a = JSII_RTTI_SYMBOL_1;
270
- NextjsContainers[_a] = { fqn: "cdk-nextjs.NextjsContainers", version: "0.5.2" };
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWNvbnRhaW5lcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWNvbnRhaW5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQseUNBQTZDO0FBQzdDLDZDQUFzRTtBQUN0RSxpREFBbUU7QUFDbkUsK0RBQThEO0FBQzlELGlEQVM2QjtBQUM3QixtRUFHc0M7QUFDdEMsdUZBR2dEO0FBQ2hELDJDQUE4QztBQUM5QywyQ0FBdUM7QUFFdkMsNENBQXNEO0FBOEJ0RDs7O0dBR0c7QUFDSCxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBUTdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7UUFDcEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQiwyREFBMkQ7UUFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RELElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLElB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LENBQUMsZUFBZSxLQUFLLDJDQUEyQyxFQUNyRSxDQUFDO29CQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztZQUNELFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxzRkFBc0Y7UUFDdEYsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDeEMsSUFBSSxLQUFLLFlBQVksdUJBQVMsRUFBRSxDQUFDO2dCQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOztBQXBUSCw0Q0FxVEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb3B5RmlsZVN5bmMsIGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiBhcyBqb2luUGF0aCB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgQ2ZuUmVzb3VyY2UsIER1cmF0aW9uLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBEb2NrZXJJbWFnZUFzc2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3ItYXNzZXRzXCI7XG5pbXBvcnQge1xuICBBd3NMb2dEcml2ZXJNb2RlLFxuICBDbHVzdGVyLFxuICBDb250YWluZXJJbWFnZSxcbiAgQ29udGFpbmVySW5zaWdodHMsXG4gIENwdUFyY2hpdGVjdHVyZSxcbiAgSGVhbHRoQ2hlY2ssXG4gIElDbHVzdGVyLFxuICBMb2dEcml2ZXJzLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZSxcbiAgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZVByb3BzLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjcy1wYXR0ZXJuc1wiO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Qcm90b2NvbFZlcnNpb24sXG4gIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQgeyBDZm5FbGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2NvcmVcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBOZXh0anNDb21wdXRlQmFzZVByb3BzIH0gZnJvbSBcIi4vbmV4dGpzLWNvbXB1dGUtYmFzZS1wcm9wc1wiO1xuaW1wb3J0IHsgTE9HX1BSRUZJWCwgTmV4dGpzVHlwZSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE9wdGlvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRUYXNrSW1hZ2VPcHRpb25zIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRUYXNrSW1hZ2VPcHRpb25zXCI7XG5pbXBvcnQgeyBPcHRpb25hbENsdXN0ZXJQcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbENsdXN0ZXJQcm9wc1wiO1xuaW1wb3J0IHsgT3B0aW9uYWxEb2NrZXJJbWFnZUFzc2V0UHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxEb2NrZXJJbWFnZUFzc2V0UHJvcHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNDb250YWluZXJzT3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgZWNzQ2x1c3RlclByb3BzPzogT3B0aW9uYWxDbHVzdGVyUHJvcHM7XG4gIHJlYWRvbmx5IGFsYkZhcmdhdGVTZXJ2aWNlUHJvcHM/OiBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlUHJvcHM7XG4gIHJlYWRvbmx5IHRhc2tJbWFnZU9wdGlvbnM/OiBPcHRpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkVGFza0ltYWdlT3B0aW9ucztcbiAgcmVhZG9ubHkgZG9ja2VySW1hZ2VBc3NldFByb3BzPzogT3B0aW9uYWxEb2NrZXJJbWFnZUFzc2V0UHJvcHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQ29udGFpbmVyc1Byb3BzIGV4dGVuZHMgTmV4dGpzQ29tcHV0ZUJhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyLiBXaGVuIHByb3ZpZGVkLCBpdCBpcyBwYXNzZWRcbiAgICogZGlyZWN0bHkgdG8gYEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2VgLiBJZiB0aGUgQUxCIGFscmVhZHlcbiAgICogaGFzIGEgbGlzdGVuZXIgb24gcG9ydCA4MCwgY2FsbCBgcmVtb3ZlQXV0b0NyZWF0ZWRMaXN0ZW5lcigpYCBhZnRlclxuICAgKiBjb25zdHJ1Y3Rpb24gdG8gYXZvaWQgZGVwbG95bWVudCBmYWlsdXJlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFsYj86IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIEVDUyBjbHVzdGVyLiBXaGVuIHByb3ZpZGVkLCBjZGstbmV4dGpzIHdpbGwgc2tpcCBjcmVhdGluZ1xuICAgKiBhIG5ldyBjbHVzdGVyIGFuZCBWUEMgZ2F0ZXdheSBlbmRwb2ludHMuIFRoZSBjbHVzdGVyIGlzIHBhc3NlZCBkaXJlY3RseVxuICAgKiB0byBgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZWAuXG4gICAqL1xuICByZWFkb25seSBlY3NDbHVzdGVyPzogSUNsdXN0ZXI7XG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXM7XG4gIHJlYWRvbmx5IHJlbGF0aXZlRW50cnlwb2ludFBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBOZXh0LmpzIGxvYWQgYmFsYW5jZWQgdmlhIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIgd2l0aCBjb250YWluZXJzIHZpYSBBV1NcbiAqIEZhcmdhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXh0anNDb250YWluZXJzIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgYWxiRmFyZ2F0ZVNlcnZpY2U6IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2U7XG4gIGVjc0NsdXN0ZXI6IElDbHVzdGVyO1xuICB1cmw6IHN0cmluZztcbiAgZG9ja2VySW1hZ2VBc3NldDogRG9ja2VySW1hZ2VBc3NldDtcblxuICBwcml2YXRlIHByb3BzOiBOZXh0anNDb250YWluZXJzUHJvcHM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5leHRqc0NvbnRhaW5lcnNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgLy8gQWx3YXlzIGNyZWF0ZSBEb2NrZXIgaW1hZ2UgYXNzZXQgZnJvbSBsb2NhbCBidWlsZCBvdXRwdXRcbiAgICB0aGlzLmRvY2tlckltYWdlQXNzZXQgPSB0aGlzLmNyZWF0ZURvY2tlckltYWdlQXNzZXQoKTtcbiAgICBpZiAocHJvcHMuZWNzQ2x1c3Rlcikge1xuICAgICAgdGhpcy5lY3NDbHVzdGVyID0gcHJvcHMuZWNzQ2x1c3RlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lY3NDbHVzdGVyID0gdGhpcy5jcmVhdGVFY3NDbHVzdGVyKCk7XG4gICAgICBpZiAoIXByb3BzLm92ZXJyaWRlcz8uZWNzQ2x1c3RlclByb3BzPy52cGMpIHtcbiAgICAgICAgdGhpcy5hZGRWcGNHYXRld2F5RW5kcG9pbnRzKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWxiRmFyZ2F0ZVNlcnZpY2UgPSB0aGlzLmNyZWF0ZUFsYkZhcmdhdGVTZXZpY2UoKTtcbiAgICB0aGlzLmNvbmZpZ3VyZUhlYWx0aENoZWNrKCk7XG4gICAgdGhpcy51cmwgPSB0aGlzLmdldFVybCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFY3NDbHVzdGVyKCk6IENsdXN0ZXIge1xuICAgIHJldHVybiBuZXcgQ2x1c3Rlcih0aGlzLCBcIkVjc0NsdXN0ZXJcIiwge1xuICAgICAgZW5hYmxlRmFyZ2F0ZUNhcGFjaXR5UHJvdmlkZXJzOiB0cnVlLFxuICAgICAgY29udGFpbmVySW5zaWdodHNWMjogQ29udGFpbmVySW5zaWdodHMuRU5BQkxFRCxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5lY3NDbHVzdGVyUHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIEdhdGV3YXkgVlBDIGVuZHBvaW50cyBmb3IgUzMgYW5kIER5bmFtb0RCIGlmIHVzZXIgZGlkbid0IHByb3ZpZGUgYSBWUEMuXG4gICAqIEdhdGV3YXkgZW5kcG9pbnRzIGFyZSBmcmVlIGFuZCBpbXByb3ZlIHBlcmZvcm1hbmNlIGJ5IGtlZXBpbmcgdHJhZmZpYyB3aXRoaW4gQVdTIG5ldHdvcmsuXG4gICAqL1xuICBwcml2YXRlIGFkZFZwY0dhdGV3YXlFbmRwb2ludHMoKTogdm9pZCB7XG4gICAgdGhpcy5lY3NDbHVzdGVyLnZwYy5hZGRHYXRld2F5RW5kcG9pbnQoXCJTM0dhdGV3YXlFbmRwb2ludFwiLCB7XG4gICAgICBzZXJ2aWNlOiBHYXRld2F5VnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlMzLFxuICAgIH0pO1xuICAgIHRoaXMuZWNzQ2x1c3Rlci52cGMuYWRkR2F0ZXdheUVuZHBvaW50KFwiRHluYW1vRGJHYXRld2F5RW5kcG9pbnRcIiwge1xuICAgICAgc2VydmljZTogR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5EWU5BTU9EQixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRG9ja2VySW1hZ2VBc3NldCgpOiBEb2NrZXJJbWFnZUFzc2V0IHtcbiAgICAvLyBCdWlsZCBjb250ZXh0IGlzIHRoZSBidWlsZERpcmVjdG9yeSAod2hlcmUgdGhlIE5leHQuanMgYXBwIGlzIGxvY2F0ZWQpXG4gICAgY29uc3QgYnVpbGRDb250ZXh0ID0gdGhpcy5wcm9wcy5idWlsZERpcmVjdG9yeTtcbiAgICBjb25zdCBkb2NrZXJmaWxlTmFtZSA9IHRoaXMuZ2V0RG9ja2VyZmlsZU5hbWUoKTtcblxuICAgIHRoaXMuY29weURvY2tlcmZpbGVUb0NvbnRleHQoYnVpbGRDb250ZXh0LCBkb2NrZXJmaWxlTmFtZSk7XG5cbiAgICByZXR1cm4gbmV3IERvY2tlckltYWdlQXNzZXQodGhpcywgXCJEb2NrZXJJbWFnZUFzc2V0XCIsIHtcbiAgICAgIGRpcmVjdG9yeTogYnVpbGRDb250ZXh0LFxuICAgICAgZmlsZTogZG9ja2VyZmlsZU5hbWUsXG4gICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgUkVMQVRJVkVfUEFUSF9UT19QQUNLQUdFOiB0aGlzLnByb3BzLnJlbGF0aXZlUGF0aFRvUGFja2FnZSB8fCBcIi5cIixcbiAgICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmRvY2tlckltYWdlQXNzZXRQcm9wcz8uYnVpbGRBcmdzLFxuICAgICAgfSxcbiAgICAgIGV4Y2x1ZGU6IFtcImNkay5vdXRcIl0sIC8vIGZvciBjb21tb24gY2FzZSB3aGVyZSBjZGsgZGVwbG95IGlzIHJ1biBpbiBzYW1lIGRpcmVjdG9yeSBhcyBuZXh0anMgYXBwXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8uZG9ja2VySW1hZ2VBc3NldFByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb2NrZXJmaWxlTmFtZSgpOiBzdHJpbmcge1xuICAgIC8vIFVzZSB0aGUgYXBwcm9wcmlhdGUgRG9ja2VyZmlsZSBiYXNlZCBvbiBkZXBsb3ltZW50IHR5cGVcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5uZXh0anNUeXBlID09PSBOZXh0anNUeXBlLkdMT0JBTF9DT05UQUlORVJTXG4gICAgICA/IFwiZ2xvYmFsLWNvbnRhaW5lcnMuRG9ja2VyZmlsZVwiXG4gICAgICA6IFwicmVnaW9uYWwtY29udGFpbmVycy5Eb2NrZXJmaWxlXCI7XG4gIH1cblxuICBwcml2YXRlIGNvcHlEb2NrZXJmaWxlVG9Db250ZXh0KFxuICAgIGJ1aWxkQ29udGV4dDogc3RyaW5nLFxuICAgIGRvY2tlcmZpbGVOYW1lOiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldERvY2tlcmZpbGUgPSBqb2luUGF0aChidWlsZENvbnRleHQsIGRvY2tlcmZpbGVOYW1lKTtcblxuICAgIC8vIENoZWNrIGlmIERvY2tlcmZpbGUgYWxyZWFkeSBleGlzdHMgLSBpZiBzbywgdXNlIHRoZSBleGlzdGluZyBvbmUgKGRldmVsb3BlciBjb250cm9sKVxuICAgIGlmIChleGlzdHNTeW5jKHRhcmdldERvY2tlcmZpbGUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtMT0dfUFJFRklYfSBVc2luZyBleGlzdGluZyBEb2NrZXJmaWxlOiAke2RvY2tlcmZpbGVOYW1lfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb3VyY2VEb2NrZXJmaWxlID0gam9pblBhdGgoXG4gICAgICAgIF9fZGlybmFtZSxcbiAgICAgICAgXCIuLlwiLFxuICAgICAgICBcIm5leHRqcy1idWlsZFwiLFxuICAgICAgICBkb2NrZXJmaWxlTmFtZSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghZXhpc3RzU3luYyhzb3VyY2VEb2NrZXJmaWxlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFNvdXJjZSBEb2NrZXJmaWxlIG5vdCBmb3VuZDogJHtzb3VyY2VEb2NrZXJmaWxlfS4gRW5zdXJlIHRoZSBjZGstbmV4dGpzIHBhY2thZ2UgaXMgcHJvcGVybHkgYnVpbHQuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29weUZpbGVTeW5jKHNvdXJjZURvY2tlcmZpbGUsIHRhcmdldERvY2tlcmZpbGUpO1xuICAgICAgY29uc29sZS5sb2coYCR7TE9HX1BSRUZJWH0gQ3JlYXRlZCAke3RhcmdldERvY2tlcmZpbGV9LmApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWxiRmFyZ2F0ZVNldmljZSgpOiBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlIHtcbiAgICBsZXQgY3B1QXJjaGl0ZWN0dXJlOiBDcHVBcmNoaXRlY3R1cmUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHByb2Nlc3MuYXJjaCA9PT0gXCJ4NjRcIikge1xuICAgICAgY3B1QXJjaGl0ZWN0dXJlID0gQ3B1QXJjaGl0ZWN0dXJlLlg4Nl82NDtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuYXJjaCA9PT0gXCJhcm02NFwiKSB7XG4gICAgICBjcHVBcmNoaXRlY3R1cmUgPSBDcHVBcmNoaXRlY3R1cmUuQVJNNjQ7XG4gICAgfVxuICAgIGNvbnN0IGFsYkZhcmdhdGVTZXJ2aWNlID0gbmV3IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJBbGJGYXJnYXRlU2VydmljZVwiLFxuICAgICAge1xuICAgICAgICBjaXJjdWl0QnJlYWtlcjogeyByb2xsYmFjazogdHJ1ZSwgZW5hYmxlOiB0cnVlIH0sXG4gICAgICAgIGNsdXN0ZXI6IHRoaXMuZWNzQ2x1c3RlcixcbiAgICAgICAgY3B1OiAxMDI0LFxuICAgICAgICBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBEdXJhdGlvbi5zZWNvbmRzKDEwKSxcbiAgICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDIwMCxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IDIwNDgsXG4gICAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsIC8vIG1haW50YWluIHNlcnZpY2UgYXZhaWxhYmlsaXR5IGR1cmluZyBkZXBsb3ltZW50XG4gICAgICAgIC8qXG4gICAgICAgICAgVGhpcyBwcm90b2NvbCB2ZXJzaW9uIGlzIGZvciB0aGUgdGFyZ2V0IGdyb3VwIChGYXJnYXRlKSwgbm90IHRoZSBBTEJcbiAgICAgICAgICBMaXN0ZW5lci4gRnJvbSBkb2NzLCBcIkFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJzIHByb3ZpZGUgbmF0aXZlIHN1cHBvcnRcbiAgICAgICAgICBmb3IgSFRUUC8yIHdpdGggSFRUUFMgbGlzdGVuZXJzXCIuIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWxhc3RpY2xvYWRiYWxhbmNpbmcvbGF0ZXN0L2FwcGxpY2F0aW9uL2xvYWQtYmFsYW5jZXItbGlzdGVuZXJzLmh0bWxcbiAgICAgICAgICBOZXh0LmpzIGRlZmF1bHQgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgSFRUUC8yIGFzIGl0J3MgcmVjb21tZW5kZWRcbiAgICAgICAgICB0byBwcm94eSB5b3VyIE5leHQuanMgc2VydmVyIHdoaWNoIHdlJ3JlIGRvaW5nIHdpdGggQUxCLlxuICAgICAgICAgIEFsc28gbm90ZSwgQ2xvdWRGcm9udCBvbmx5IHN1cHBvcnRzIEhUVFAvMS4xIG9yaWdpbnMuXG4gICAgICAgICAgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1JlcXVlc3RBbmRSZXNwb25zZUJlaGF2aW9yQ3VzdG9tT3JpZ2luLmh0bWwjUmVxdWVzdEN1c3RvbUhUVFBWZXJzaW9uXG4gICAgICAgICovXG4gICAgICAgIHByb3RvY29sVmVyc2lvbjogQXBwbGljYXRpb25Qcm90b2NvbFZlcnNpb24uSFRUUDEsXG4gICAgICAgIC8vIGlmIE5leHRqc1R5cGUuR0xPQkFMX0NPTlRBSU5FUlMgdGhlbiB3ZSB1c2UgVlBDIE9yaWdpbiBBY2Nlc3Mgd2hpY2ggYWxsb3dzIHB1dHRpbmcgQUxCIGluIHByaXZhdGUgc3VibmV0XG4gICAgICAgIHB1YmxpY0xvYWRCYWxhbmNlcjpcbiAgICAgICAgICB0aGlzLnByb3BzLm5leHRqc1R5cGUgPT09IE5leHRqc1R5cGUuUkVHSU9OQUxfQ09OVEFJTkVSUyxcbiAgICAgICAgcnVudGltZVBsYXRmb3JtOiB7XG4gICAgICAgICAgY3B1QXJjaGl0ZWN0dXJlLFxuICAgICAgICB9LFxuICAgICAgICB0YXNrSW1hZ2VPcHRpb25zOiB7XG4gICAgICAgICAgY29tbWFuZDogW1wibm9kZVwiLCB0aGlzLnByb3BzLnJlbGF0aXZlRW50cnlwb2ludFBhdGhdLFxuICAgICAgICAgIGNvbnRhaW5lck5hbWU6IFwibmV4dGpzXCIsXG4gICAgICAgICAgY29udGFpbmVyUG9ydDogMzAwMCxcbiAgICAgICAgICBpbWFnZTogQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckltYWdlQXNzZXQodGhpcy5kb2NrZXJJbWFnZUFzc2V0KSxcbiAgICAgICAgICBsb2dEcml2ZXI6IExvZ0RyaXZlcnMuYXdzTG9ncyh7XG4gICAgICAgICAgICBzdHJlYW1QcmVmaXg6IFwibmV4dGpzXCIsXG4gICAgICAgICAgICBtb2RlOiBBd3NMb2dEcml2ZXJNb2RlLk5PTl9CTE9DS0lORyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8udGFza0ltYWdlT3B0aW9ucyxcbiAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgLy8gQ2FjaGUgY29uZmlndXJhdGlvbiBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICAgICAgICAgIENES19ORVhUSlNfQ0FDSEVfQlVDS0VUX05BTUU6IHRoaXMucHJvcHMuY2FjaGVCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIENES19ORVhUSlNfUkVWQUxJREFUSU9OX1RBQkxFX05BTUU6XG4gICAgICAgICAgICAgIHRoaXMucHJvcHMucmV2YWxpZGF0aW9uVGFibGUudGFibGVOYW1lLFxuICAgICAgICAgICAgQ0RLX05FWFRKU19CVUlMRF9JRDogdGhpcy5wcm9wcy5idWlsZElkLFxuICAgICAgICAgICAgLy8gTWVyZ2Ugd2l0aCB1c2VyLXByb3ZpZGVkIGVudmlyb25tZW50IHZhcmlhYmxlcyAodXNlciB2YWx1ZXMgdGFrZSBwcmVjZWRlbmNlKVxuICAgICAgICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LnRhc2tJbWFnZU9wdGlvbnM/LmVudmlyb25tZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5hbGJGYXJnYXRlU2VydmljZVByb3BzLFxuICAgICAgICAuLi4odGhpcy5wcm9wcy5hbGIgPyB7IGxvYWRCYWxhbmNlcjogdGhpcy5wcm9wcy5hbGIgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICAvLyByZXF1aXJlZCBvciBoZWFsdGggY2hlY2tzIGZhaWxcbiAgICBhbGJGYXJnYXRlU2VydmljZS50YXNrRGVmaW5pdGlvbi5kZWZhdWx0Q29udGFpbmVyPy5hZGRFbnZpcm9ubWVudChcbiAgICAgIFwiSE9TVE5BTUVcIixcbiAgICAgIFwiMC4wLjAuMFwiLFxuICAgICk7XG5cbiAgICAvLyBHcmFudCBjYWNoZSBhY2Nlc3MgcGVybWlzc2lvbnNcbiAgICB0aGlzLnByb3BzLmNhY2hlQnVja2V0LmdyYW50UmVhZFdyaXRlKFxuICAgICAgYWxiRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUsXG4gICAgKTtcbiAgICB0aGlzLnByb3BzLnJldmFsaWRhdGlvblRhYmxlLmdyYW50UmVhZFdyaXRlRGF0YShcbiAgICAgIGFsYkZhcmdhdGVTZXJ2aWNlLnRhc2tEZWZpbml0aW9uLnRhc2tSb2xlLFxuICAgICk7XG5cbiAgICAvLyBzcGVlZCB1cCBkZXBsb3ltZW50cyBieSBzaG9ydGVuaW5nIGRlcmVnaXN0cmF0aW9uIGRlbGF5XG4gICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvYmVzdHByYWN0aWNlc2d1aWRlL2xvYWQtYmFsYW5jZXItY29ubmVjdGlvbi1kcmFpbmluZy5odG1sXG4gICAgLy8gVE9ETzogZG9jdW1lbnQgdGhhdCB0aGlzIHNob3VsZCBiZSBpbmNyZWFzZWQgaWYgbG9uZyBsaXZlZCBjb25uZWN0aW9ucyBhcmUgZXhwZWN0ZWRcbiAgICBhbGJGYXJnYXRlU2VydmljZS50YXJnZXRHcm91cC5zZXRBdHRyaWJ1dGUoXG4gICAgICBcImRlcmVnaXN0cmF0aW9uX2RlbGF5LnRpbWVvdXRfc2Vjb25kc1wiLFxuICAgICAgXCIzMFwiLFxuICAgICk7XG4gICAgLy8gT25seSBjb25maWd1cmUgQUxCIGF0dHJpYnV0ZXMgd2hlbiB3ZSBvd24gdGhlIEFMQi5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVkIHRoZWlyIG93biwgdGhleSdyZSByZXNwb25zaWJsZSBmb3IgaXRzIGNvbmZpZ3VyYXRpb24uXG4gICAgaWYgKFxuICAgICAgIXRoaXMucHJvcHMuYWxiICYmXG4gICAgICAhdGhpcy5wcm9wcy5vdmVycmlkZXM/LmFsYkZhcmdhdGVTZXJ2aWNlUHJvcHM/LmxvYWRCYWxhbmNlclxuICAgICkge1xuICAgICAgLy8gYmVzdCBwcmFjdGljZSB0byBlbmFibGUgY3Jvc3Mgem9uZSBsb2FkIGJhbGFuY2luZ1xuICAgICAgLy8gQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWxhc3RpY2xvYWRiYWxhbmNpbmcvbGF0ZXN0L2FwcGxpY2F0aW9uL2Rpc2FibGUtY3Jvc3Mtem9uZS5odG1sXG4gICAgICBhbGJGYXJnYXRlU2VydmljZS5sb2FkQmFsYW5jZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICBcImxvYWRfYmFsYW5jaW5nLmNyb3NzX3pvbmUuZW5hYmxlZFwiLFxuICAgICAgICBcInRydWVcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBhbGJGYXJnYXRlU2VydmljZTtcbiAgfVxuICAvKipcbiAgICogQ29uZmlndXJlIGhlYWx0aCBjaGVja3MgZm9yIGNvbnRhaW5lcnMgYXQgQUxCIGFuZCBFQ1MgbGV2ZWwuIFRoaXMgZW5zdXJlc1xuICAgKiB1bmhlYWx0aHkgY29udGFpbmVycyBhcmUgcmVtb3ZlZC4gQm90aCBvZiB0aGVzZSBoZWFsdGggY2hlY2tzIGNhbiBiZVxuICAgKiBvdmVyd3JpdHRlbiBieSB1c2VyIGJ5IGFjY2Vzc2luZyBgYWxiRmFyZ2F0ZVNlcnZpY2VgIHByb3BlcnR5LCBzbyBubyBuZWVkXG4gICAqIGZvciBgb3ZlcnJpZGVzYC5cbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlSGVhbHRoQ2hlY2soKSB7XG4gICAgLy8gc3BlZWQgdXAgZGVwbG95bWVudHMgYnkgc2hvcnRlbmluZyBoZWFsdGggY2hlY2tzXG4gICAgLy8gc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2Jlc3RwcmFjdGljZXNndWlkZS9sb2FkLWJhbGFuY2VyLWhlYWx0aGNoZWNrLmh0bWxcbiAgICB0aGlzLmFsYkZhcmdhdGVTZXJ2aWNlLnRhcmdldEdyb3VwLmNvbmZpZ3VyZUhlYWx0aENoZWNrKHtcbiAgICAgIHBhdGg6IHRoaXMucHJvcHMuaGVhbHRoQ2hlY2tQYXRoLFxuICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAyLFxuICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMTApLCAvLyB0b28gZnJlcXVlbnQ/IGJ1dCBlbmFibGVzIGZhc3RlciByb2xsYmFjay4uLlxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSwgLy8gbXVzdCBiZSBsZXNzIHRoYW4gaW50ZXJ2YWxcbiAgICB9KTtcbiAgICBjb25zdCBoZWFsdGhDaGVjazogSGVhbHRoQ2hlY2sgPSB7XG4gICAgICBjb21tYW5kOiBbXG4gICAgICAgIFwiQ01ELVNIRUxMXCIsXG4gICAgICAgIC8vIGN1cmwgaXNuJ3QgYXZhaWxhYmxlIGluIGFscGluZSBsaW51eFxuICAgICAgICBgd2dldCAtLXF1aWV0IC0tdHJpZXM9MSAtLXNwaWRlciBodHRwOi8vbG9jYWxob3N0OjMwMDAke3RoaXMucHJvcHMuaGVhbHRoQ2hlY2tQYXRofSB8fCBleGl0IDFgLFxuICAgICAgXSxcbiAgICB9O1xuICAgIGNvbnN0IGRlZmF1bHRDb250YWluZXIgPVxuICAgICAgdGhpcy5hbGJGYXJnYXRlU2VydmljZS50YXNrRGVmaW5pdGlvbi5kZWZhdWx0Q29udGFpbmVyO1xuICAgIGlmIChkZWZhdWx0Q29udGFpbmVyKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG11c3QgdXNlIGludGVybmFsIFwicHJvcHNcIiBhdHRyaWJ1dGUgYi9jIG5vIG90aGVyIHdheSB0byBhZGQgaGVhbHRoIGNoZWNrXG4gICAgICBkZWZhdWx0Q29udGFpbmVyLnByb3BzLmhlYWx0aENoZWNrID0gaGVhbHRoQ2hlY2s7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZ2V0VXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLmFsYkZhcmdhdGVTZXJ2aWNlLmNlcnRpZmljYXRlID8gXCJodHRwc1wiIDogXCJodHRwXCI7XG4gICAgLy8gd2UgY2hlY2sgdG9wLWxldmVsIGFsYiBhbmQgb3ZlcnJpZGVzIGZpcnN0IGIvYyBpZiB1c2luZyBpbXBvcnRlZFxuICAgIC8vIGxvYWRCYWxhbmNlciB0aGVuIHlvdSBjYW5ub3QgYWNjZXNzIGBhbGJGYXJnYXRlU2VydmljZS5sb2FkQmFsYW5jZXJgLFxuICAgIC8vIHlvdSBtdXN0IGFjY2VzcyB2aWEgcGFzc2VkIGluIGBsb2FkQmFsYW5jZXJgIHdoaWNoXG4gICAgLy8gYEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2VgIGFjY2VwdHMgYXMgcHJvcHNcbiAgICBjb25zdCBkbnNOYW1lID1cbiAgICAgIHRoaXMucHJvcHMuYWxiPy5sb2FkQmFsYW5jZXJEbnNOYW1lID8/XG4gICAgICB0aGlzLnByb3BzLm92ZXJyaWRlcz8uYWxiRmFyZ2F0ZVNlcnZpY2VQcm9wcz8ubG9hZEJhbGFuY2VyXG4gICAgICAgID8ubG9hZEJhbGFuY2VyRG5zTmFtZSA/P1xuICAgICAgdGhpcy5hbGJGYXJnYXRlU2VydmljZS5sb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyRG5zTmFtZTtcbiAgICByZXR1cm4gYCR7cHJvdG9jb2x9Oi8vJHtkbnNOYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBIVFRQIGxpc3RlbmVyIHRoYXQgYEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2VgXG4gICAqIGFsd2F5cyBjcmVhdGVzLiBDYWxsIHRoaXMgd2hlbiB5b3UgYnJpbmcgeW91ciBvd24gQUxCIHRoYXQgYWxyZWFkeSBoYXMgYVxuICAgKiBsaXN0ZW5lciBvbiB0aGUgc2FtZSBwb3J0ICh0eXBpY2FsbHkgcG9ydCA4MCkgdG8gYXZvaWQgYVxuICAgKiBcImxpc3RlbmVyIGFscmVhZHkgZXhpc3RzIG9uIHRoaXMgcG9ydFwiIGRlcGxveW1lbnQgZmFpbHVyZS5cbiAgICpcbiAgICogVGhpcyBtZXRob2Q6XG4gICAqIDEuIFJlbW92ZXMgdGhlIEwxIGBDZm5MaXN0ZW5lcmAgcmVzb3VyY2UgKGtlZXBzIHRoZSBMMiBub2RlIHNvIHRoZVxuICAgKiAgICB0YXJnZXQgZ3JvdXAgY2hpbGQgaXMgcHJlc2VydmVkKS5cbiAgICogMi4gUmVtb3ZlcyB0aGUgYXNzb2NpYXRlZCBzZWN1cml0eS1ncm91cCBpbmdyZXNzIHJ1bGUgZm9yIHBvcnQgODAuXG4gICAqIDMuIFJlYnVpbGRzIHRoZSBFQ1Mgc2VydmljZSBgRGVwZW5kc09uYCB3aXRob3V0IHRoZSBkZWxldGVkIGxpc3RlbmVyLlxuICAgKiA0LiBSZW1vdmVzIGBDZm5PdXRwdXRgIHJlc291cmNlcyBhdXRvLWNyZWF0ZWQgYnkgdGhlIGVjcy1wYXR0ZXJucyBjb25zdHJ1Y3QuXG4gICAqL1xuICByZW1vdmVBdXRvQ3JlYXRlZExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gdGhpcy5hbGJGYXJnYXRlU2VydmljZS5saXN0ZW5lcjtcbiAgICBjb25zdCBjZm5MaXN0ZW5lciA9IGxpc3RlbmVyLm5vZGUuZGVmYXVsdENoaWxkO1xuICAgIGlmICghKGNmbkxpc3RlbmVyIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UpKSByZXR1cm47XG5cbiAgICAvLyAxLiBSZW1vdmUgb25seSB0aGUgQ2ZuTGlzdGVuZXIgTDEgcmVzb3VyY2UsIG5vdCB0aGUgTDIgY29uc3RydWN0LlxuICAgIC8vICAgIFRoZSB0YXJnZXQgZ3JvdXAgKGEgc2libGluZyBjaGlsZCBvZiB0aGUgbGlzdGVuZXIgbm9kZSkgc3RheXMuXG4gICAgbGlzdGVuZXIubm9kZS50cnlSZW1vdmVDaGlsZChjZm5MaXN0ZW5lci5ub2RlLmlkKTtcblxuICAgIC8vIDIuIFJlbW92ZSB0aGUgU0cgaW5ncmVzcyBydWxlIHRoZSBsaXN0ZW5lciBhdXRvLWNyZWF0ZXMgZm9yIHBvcnQgODAuXG4gICAgY29uc3QgYWxiU2dOb2RlID0gdGhpcy5ub2RlXG4gICAgICAuZmluZEFsbCgpXG4gICAgICAuZmluZChcbiAgICAgICAgKGMpID0+XG4gICAgICAgICAgYyBpbnN0YW5jZW9mIENmblJlc291cmNlICYmXG4gICAgICAgICAgYy5jZm5SZXNvdXJjZVR5cGUgPT09IFwiQVdTOjpFQzI6OlNlY3VyaXR5R3JvdXBJbmdyZXNzXCIgJiZcbiAgICAgICAgICBjLm5vZGUucGF0aC5pbmNsdWRlcyhcImZyb20gMC4wLjAuMC8wOjgwXCIpLFxuICAgICAgKTtcbiAgICBpZiAoYWxiU2dOb2RlKSB7XG4gICAgICBhbGJTZ05vZGUubm9kZS5zY29wZT8ubm9kZS50cnlSZW1vdmVDaGlsZChhbGJTZ05vZGUubm9kZS5pZCk7XG4gICAgfVxuXG4gICAgLy8gMy4gUmVidWlsZCB0aGUgRUNTIHNlcnZpY2UgRGVwZW5kc09uIHdpdGhvdXQgdGhlIGRlbGV0ZWQgbGlzdGVuZXIuXG4gICAgLy8gICAgQ0RLIGdlbmVyYXRlcyBEZXBlbmRzT24gZHVyaW5nIF90b0Nsb3VkRm9ybWF0aW9uKCkuIGFkZE92ZXJyaWRlXG4gICAgLy8gICAgcnVucyBhZnRlciB0aGF0IGFuZCByZXBsYWNlcyB0aGUgZ2VuZXJhdGVkIHZhbHVlLlxuICAgIGNvbnN0IGNmblNlcnZpY2UgPSB0aGlzLmFsYkZhcmdhdGVTZXJ2aWNlLnNlcnZpY2Uubm9kZS5kZWZhdWx0Q2hpbGQ7XG4gICAgY29uc3QgY2ZuVGFyZ2V0R3JvdXAgPSB0aGlzLmFsYkZhcmdhdGVTZXJ2aWNlLnRhcmdldEdyb3VwLm5vZGUuZGVmYXVsdENoaWxkO1xuICAgIGNvbnN0IHRhc2tEZWYgPSB0aGlzLmFsYkZhcmdhdGVTZXJ2aWNlLnRhc2tEZWZpbml0aW9uO1xuICAgIGNvbnN0IHRhc2tSb2xlID0gdGFza0RlZi50YXNrUm9sZS5ub2RlLmRlZmF1bHRDaGlsZDtcbiAgICBjb25zdCB0YXNrUm9sZVBvbGljeSA9XG4gICAgICB0YXNrRGVmLnRhc2tSb2xlLm5vZGUudHJ5RmluZENoaWxkKFwiRGVmYXVsdFBvbGljeVwiKT8ubm9kZS5kZWZhdWx0Q2hpbGQ7XG5cbiAgICBpZiAoY2ZuU2VydmljZSBpbnN0YW5jZW9mIENmblJlc291cmNlKSB7XG4gICAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgICAgY29uc3Qga2VlcERlcHMgPSBbY2ZuVGFyZ2V0R3JvdXAsIHRhc2tSb2xlLCB0YXNrUm9sZVBvbGljeV1cbiAgICAgICAgLmZpbHRlcigoZCk6IGQgaXMgQ2ZuRWxlbWVudCA9PiBkIGluc3RhbmNlb2YgQ2ZuRWxlbWVudClcbiAgICAgICAgLm1hcCgoZCkgPT4gc3RhY2suZ2V0TG9naWNhbElkKGQpKTtcblxuICAgICAgLy8gQWxzbyBrZWVwIGFueSBsaXN0ZW5lciBydWxlcyAoZS5nLiBwYXRoLWJhc2VkIHJvdXRpbmcgcnVsZXMpXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHN0YWNrLm5vZGUuZmluZEFsbCgpKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjaGlsZCBpbnN0YW5jZW9mIENmblJlc291cmNlICYmXG4gICAgICAgICAgY2hpbGQuY2ZuUmVzb3VyY2VUeXBlID09PSBcIkFXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TGlzdGVuZXJSdWxlXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAga2VlcERlcHMucHVzaChzdGFjay5nZXRMb2dpY2FsSWQoY2hpbGQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2ZuU2VydmljZS5hZGRPdmVycmlkZShcIkRlcGVuZHNPblwiLCBrZWVwRGVwcyk7XG4gICAgfVxuXG4gICAgLy8gNC4gUmVtb3ZlIENmbk91dHB1dCByZXNvdXJjZXMgYXV0by1jcmVhdGVkIGJ5IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2VcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMubm9kZS5maW5kQWxsKCkpIHtcbiAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIENmbk91dHB1dCkge1xuICAgICAgICBjaGlsZC5ub2RlLnNjb3BlPy5ub2RlLnRyeVJlbW92ZUNoaWxkKGNoaWxkLm5vZGUuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWNvbnRhaW5lcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWNvbnRhaW5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHFDQUFtRDtBQUNuRCx5Q0FBNkM7QUFDN0MsNkNBQXNFO0FBQ3RFLGlEQUFtRTtBQUNuRSwrREFBOEQ7QUFDOUQsaURBUzZCO0FBQzdCLG1FQUdzQztBQUN0Qyx1RkFHZ0Q7QUFDaEQsMkNBQThDO0FBQzlDLDJDQUF1QztBQUV2Qyw0Q0FBc0Q7QUE4QnREOzs7R0FHRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsc0JBQVM7O0lBQzdDLGlCQUFpQixDQUF3QztJQUN6RCxVQUFVLENBQVc7SUFDckIsR0FBRyxDQUFTO0lBQ1osZ0JBQWdCLENBQW1CO0lBRTNCLEtBQUssQ0FBd0I7SUFFckMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdEQsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElB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SyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDekMsSUFDRSxLQUFLLFlBQVkseUJBQVc7b0JBQzVCLEtBQUssQ0FBQyxlQUFlLEtBQUssMkNBQTJDLEVBQ3JFLENBQUM7b0JBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDSCxDQUFDO1lBQ0QsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELHNGQUFzRjtRQUN0RixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN4QyxJQUFJLEtBQUssWUFBWSx1QkFBUyxFQUFFLENBQUM7Z0JBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7O0FBcFRILDRDQXFUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcHlGaWxlU3luYywgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBqb2luIGFzIGpvaW5QYXRoIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0LCBDZm5SZXNvdXJjZSwgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBHYXRld2F5VnBjRW5kcG9pbnRBd3NTZXJ2aWNlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IERvY2tlckltYWdlQXNzZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjci1hc3NldHNcIjtcbmltcG9ydCB7XG4gIEF3c0xvZ0RyaXZlck1vZGUsXG4gIENsdXN0ZXIsXG4gIENvbnRhaW5lckltYWdlLFxuICBDb250YWluZXJJbnNpZ2h0cyxcbiAgQ3B1QXJjaGl0ZWN0dXJlLFxuICBIZWFsdGhDaGVjayxcbiAgSUNsdXN0ZXIsXG4gIExvZ0RyaXZlcnMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlLFxuICBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlUHJvcHMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzLXBhdHRlcm5zXCI7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblByb3RvY29sVmVyc2lvbixcbiAgSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCB7IENmbkVsZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvY29yZVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE5leHRqc0NvbXB1dGVCYXNlUHJvcHMgfSBmcm9tIFwiLi9uZXh0anMtY29tcHV0ZS1iYXNlLXByb3BzXCI7XG5pbXBvcnQgeyBMT0dfUFJFRklYLCBOZXh0anNUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgT3B0aW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZFRhc2tJbWFnZU9wdGlvbnMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZFRhc2tJbWFnZU9wdGlvbnNcIjtcbmltcG9ydCB7IE9wdGlvbmFsQ2x1c3RlclByb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQ2x1c3RlclByb3BzXCI7XG5pbXBvcnQgeyBPcHRpb25hbERvY2tlckltYWdlQXNzZXRQcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERvY2tlckltYWdlQXNzZXRQcm9wc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXMge1xuICByZWFkb25seSBlY3NDbHVzdGVyUHJvcHM/OiBPcHRpb25hbENsdXN0ZXJQcm9wcztcbiAgcmVhZG9ubHkgYWxiRmFyZ2F0ZVNlcnZpY2VQcm9wcz86IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2VQcm9wcztcbiAgcmVhZG9ubHkgdGFza0ltYWdlT3B0aW9ucz86IE9wdGlvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRUYXNrSW1hZ2VPcHRpb25zO1xuICByZWFkb25seSBkb2NrZXJJbWFnZUFzc2V0UHJvcHM/OiBPcHRpb25hbERvY2tlckltYWdlQXNzZXRQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNDb250YWluZXJzUHJvcHMgZXh0ZW5kcyBOZXh0anNDb21wdXRlQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIuIFdoZW4gcHJvdmlkZWQsIGl0IGlzIHBhc3NlZFxuICAgKiBkaXJlY3RseSB0byBgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZWAuIElmIHRoZSBBTEIgYWxyZWFkeVxuICAgKiBoYXMgYSBsaXN0ZW5lciBvbiBwb3J0IDgwLCBjYWxsIGByZW1vdmVBdXRvQ3JlYXRlZExpc3RlbmVyKClgIGFmdGVyXG4gICAqIGNvbnN0cnVjdGlvbiB0byBhdm9pZCBkZXBsb3ltZW50IGZhaWx1cmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxiPzogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyO1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gRUNTIGNsdXN0ZXIuIFdoZW4gcHJvdmlkZWQsIGNkay1uZXh0anMgd2lsbCBza2lwIGNyZWF0aW5nXG4gICAqIGEgbmV3IGNsdXN0ZXIgYW5kIFZQQyBnYXRld2F5IGVuZHBvaW50cy4gVGhlIGNsdXN0ZXIgaXMgcGFzc2VkIGRpcmVjdGx5XG4gICAqIHRvIGBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlYC5cbiAgICovXG4gIHJlYWRvbmx5IGVjc0NsdXN0ZXI/OiBJQ2x1c3RlcjtcbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogTmV4dGpzQ29udGFpbmVyc092ZXJyaWRlcztcbiAgcmVhZG9ubHkgcmVsYXRpdmVFbnRyeXBvaW50UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE5leHQuanMgbG9hZCBiYWxhbmNlZCB2aWEgQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlciB3aXRoIGNvbnRhaW5lcnMgdmlhIEFXU1xuICogRmFyZ2F0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0NvbnRhaW5lcnMgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBhbGJGYXJnYXRlU2VydmljZTogQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZTtcbiAgZWNzQ2x1c3RlcjogSUNsdXN0ZXI7XG4gIHVybDogc3RyaW5nO1xuICBkb2NrZXJJbWFnZUFzc2V0OiBEb2NrZXJJbWFnZUFzc2V0O1xuXG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc0NvbnRhaW5lcnNQcm9wcztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTmV4dGpzQ29udGFpbmVyc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBBbHdheXMgY3JlYXRlIERvY2tlciBpbWFnZSBhc3NldCBmcm9tIGxvY2FsIGJ1aWxkIG91dHB1dFxuICAgIHRoaXMuZG9ja2VySW1hZ2VBc3NldCA9IHRoaXMuY3JlYXRlRG9ja2VySW1hZ2VBc3NldCgpO1xuICAgIGlmIChwcm9wcy5lY3NDbHVzdGVyKSB7XG4gICAgICB0aGlzLmVjc0NsdXN0ZXIgPSBwcm9wcy5lY3NDbHVzdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVjc0NsdXN0ZXIgPSB0aGlzLmNyZWF0ZUVjc0NsdXN0ZXIoKTtcbiAgICAgIGlmICghcHJvcHMub3ZlcnJpZGVzPy5lY3NDbHVzdGVyUHJvcHM/LnZwYykge1xuICAgICAgICB0aGlzLmFkZFZwY0dhdGV3YXlFbmRwb2ludHMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hbGJGYXJnYXRlU2VydmljZSA9IHRoaXMuY3JlYXRlQWxiRmFyZ2F0ZVNldmljZSgpO1xuICAgIHRoaXMuY29uZmlndXJlSGVhbHRoQ2hlY2soKTtcbiAgICB0aGlzLnVybCA9IHRoaXMuZ2V0VXJsKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUVjc0NsdXN0ZXIoKTogQ2x1c3RlciB7XG4gICAgcmV0dXJuIG5ldyBDbHVzdGVyKHRoaXMsIFwiRWNzQ2x1c3RlclwiLCB7XG4gICAgICBlbmFibGVGYXJnYXRlQ2FwYWNpdHlQcm92aWRlcnM6IHRydWUsXG4gICAgICBjb250YWluZXJJbnNpZ2h0c1YyOiBDb250YWluZXJJbnNpZ2h0cy5FTkFCTEVELFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmVjc0NsdXN0ZXJQcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgR2F0ZXdheSBWUEMgZW5kcG9pbnRzIGZvciBTMyBhbmQgRHluYW1vREIgaWYgdXNlciBkaWRuJ3QgcHJvdmlkZSBhIFZQQy5cbiAgICogR2F0ZXdheSBlbmRwb2ludHMgYXJlIGZyZWUgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2UgYnkga2VlcGluZyB0cmFmZmljIHdpdGhpbiBBV1MgbmV0d29yay5cbiAgICovXG4gIHByaXZhdGUgYWRkVnBjR2F0ZXdheUVuZHBvaW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmVjc0NsdXN0ZXIudnBjLmFkZEdhdGV3YXlFbmRwb2ludChcIlMzR2F0ZXdheUVuZHBvaW50XCIsIHtcbiAgICAgIHNlcnZpY2U6IEdhdGV3YXlWcGNFbmRwb2ludEF3c1NlcnZpY2UuUzMsXG4gICAgfSk7XG4gICAgdGhpcy5lY3NDbHVzdGVyLnZwYy5hZGRHYXRld2F5RW5kcG9pbnQoXCJEeW5hbW9EYkdhdGV3YXlFbmRwb2ludFwiLCB7XG4gICAgICBzZXJ2aWNlOiBHYXRld2F5VnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkRZTkFNT0RCLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEb2NrZXJJbWFnZUFzc2V0KCk6IERvY2tlckltYWdlQXNzZXQge1xuICAgIC8vIEJ1aWxkIGNvbnRleHQgaXMgdGhlIGJ1aWxkRGlyZWN0b3J5ICh3aGVyZSB0aGUgTmV4dC5qcyBhcHAgaXMgbG9jYXRlZClcbiAgICBjb25zdCBidWlsZENvbnRleHQgPSB0aGlzLnByb3BzLmJ1aWxkRGlyZWN0b3J5O1xuICAgIGNvbnN0IGRvY2tlcmZpbGVOYW1lID0gdGhpcy5nZXREb2NrZXJmaWxlTmFtZSgpO1xuXG4gICAgdGhpcy5jb3B5RG9ja2VyZmlsZVRvQ29udGV4dChidWlsZENvbnRleHQsIGRvY2tlcmZpbGVOYW1lKTtcblxuICAgIHJldHVybiBuZXcgRG9ja2VySW1hZ2VBc3NldCh0aGlzLCBcIkRvY2tlckltYWdlQXNzZXRcIiwge1xuICAgICAgZGlyZWN0b3J5OiBidWlsZENvbnRleHQsXG4gICAgICBmaWxlOiBkb2NrZXJmaWxlTmFtZSxcbiAgICAgIGJ1aWxkQXJnczoge1xuICAgICAgICBSRUxBVElWRV9QQVRIX1RPX1BBQ0tBR0U6IHRoaXMucHJvcHMucmVsYXRpdmVQYXRoVG9QYWNrYWdlIHx8IFwiLlwiLFxuICAgICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8uZG9ja2VySW1hZ2VBc3NldFByb3BzPy5idWlsZEFyZ3MsXG4gICAgICB9LFxuICAgICAgZXhjbHVkZTogW1wiY2RrLm91dFwiXSwgLy8gZm9yIGNvbW1vbiBjYXNlIHdoZXJlIGNkayBkZXBsb3kgaXMgcnVuIGluIHNhbWUgZGlyZWN0b3J5IGFzIG5leHRqcyBhcHBcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5kb2NrZXJJbWFnZUFzc2V0UHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldERvY2tlcmZpbGVOYW1lKCk6IHN0cmluZyB7XG4gICAgLy8gVXNlIHRoZSBhcHByb3ByaWF0ZSBEb2NrZXJmaWxlIGJhc2VkIG9uIGRlcGxveW1lbnQgdHlwZVxuICAgIHJldHVybiB0aGlzLnByb3BzLm5leHRqc1R5cGUgPT09IE5leHRqc1R5cGUuR0xPQkFMX0NPTlRBSU5FUlNcbiAgICAgID8gXCJnbG9iYWwtY29udGFpbmVycy5Eb2NrZXJmaWxlXCJcbiAgICAgIDogXCJyZWdpb25hbC1jb250YWluZXJzLkRvY2tlcmZpbGVcIjtcbiAgfVxuXG4gIHByaXZhdGUgY29weURvY2tlcmZpbGVUb0NvbnRleHQoXG4gICAgYnVpbGRDb250ZXh0OiBzdHJpbmcsXG4gICAgZG9ja2VyZmlsZU5hbWU6IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0RG9ja2VyZmlsZSA9IGpvaW5QYXRoKGJ1aWxkQ29udGV4dCwgZG9ja2VyZmlsZU5hbWUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgRG9ja2VyZmlsZSBhbHJlYWR5IGV4aXN0cyAtIGlmIHNvLCB1c2UgdGhlIGV4aXN0aW5nIG9uZSAoZGV2ZWxvcGVyIGNvbnRyb2wpXG4gICAgaWYgKGV4aXN0c1N5bmModGFyZ2V0RG9ja2VyZmlsZSkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke0xPR19QUkVGSVh9IFVzaW5nIGV4aXN0aW5nIERvY2tlcmZpbGU6ICR7ZG9ja2VyZmlsZU5hbWV9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNvdXJjZURvY2tlcmZpbGUgPSBqb2luUGF0aChcbiAgICAgICAgX19kaXJuYW1lLFxuICAgICAgICBcIi4uXCIsXG4gICAgICAgIFwibmV4dGpzLWJ1aWxkXCIsXG4gICAgICAgIGRvY2tlcmZpbGVOYW1lLFxuICAgICAgKTtcblxuICAgICAgaWYgKCFleGlzdHNTeW5jKHNvdXJjZURvY2tlcmZpbGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgU291cmNlIERvY2tlcmZpbGUgbm90IGZvdW5kOiAke3NvdXJjZURvY2tlcmZpbGV9LiBFbnN1cmUgdGhlIGNkay1uZXh0anMgcGFja2FnZSBpcyBwcm9wZXJseSBidWlsdC5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb3B5RmlsZVN5bmMoc291cmNlRG9ja2VyZmlsZSwgdGFyZ2V0RG9ja2VyZmlsZSk7XG4gICAgICBjb25zb2xlLmxvZyhgJHtMT0dfUFJFRklYfSBDcmVhdGVkICR7dGFyZ2V0RG9ja2VyZmlsZX0uYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbGJGYXJnYXRlU2V2aWNlKCk6IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2Uge1xuICAgIGxldCBjcHVBcmNoaXRlY3R1cmU6IENwdUFyY2hpdGVjdHVyZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvY2Vzcy5hcmNoID09PSBcIng2NFwiKSB7XG4gICAgICBjcHVBcmNoaXRlY3R1cmUgPSBDcHVBcmNoaXRlY3R1cmUuWDg2XzY0O1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSBcImFybTY0XCIpIHtcbiAgICAgIGNwdUFyY2hpdGVjdHVyZSA9IENwdUFyY2hpdGVjdHVyZS5BUk02NDtcbiAgICB9XG4gICAgY29uc3QgYWxiRmFyZ2F0ZVNlcnZpY2UgPSBuZXcgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZShcbiAgICAgIHRoaXMsXG4gICAgICBcIkFsYkZhcmdhdGVTZXJ2aWNlXCIsXG4gICAgICB7XG4gICAgICAgIGNpcmN1aXRCcmVha2VyOiB7IHJvbGxiYWNrOiB0cnVlLCBlbmFibGU6IHRydWUgfSxcbiAgICAgICAgY2x1c3RlcjogdGhpcy5lY3NDbHVzdGVyLFxuICAgICAgICBjcHU6IDEwMjQsXG4gICAgICAgIGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IER1cmF0aW9uLnNlY29uZHMoMTApLFxuICAgICAgICBtYXhIZWFsdGh5UGVyY2VudDogMjAwLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogMjA0OCxcbiAgICAgICAgbWluSGVhbHRoeVBlcmNlbnQ6IDEwMCwgLy8gbWFpbnRhaW4gc2VydmljZSBhdmFpbGFiaWxpdHkgZHVyaW5nIGRlcGxveW1lbnRcbiAgICAgICAgLypcbiAgICAgICAgICBUaGlzIHByb3RvY29sIHZlcnNpb24gaXMgZm9yIHRoZSB0YXJnZXQgZ3JvdXAgKEZhcmdhdGUpLCBub3QgdGhlIEFMQlxuICAgICAgICAgIExpc3RlbmVyLiBGcm9tIGRvY3MsIFwiQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlcnMgcHJvdmlkZSBuYXRpdmUgc3VwcG9ydFxuICAgICAgICAgIGZvciBIVFRQLzIgd2l0aCBIVFRQUyBsaXN0ZW5lcnNcIi4gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvYXBwbGljYXRpb24vbG9hZC1iYWxhbmNlci1saXN0ZW5lcnMuaHRtbFxuICAgICAgICAgIE5leHQuanMgZGVmYXVsdCBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBIVFRQLzIgYXMgaXQncyByZWNvbW1lbmRlZFxuICAgICAgICAgIHRvIHByb3h5IHlvdXIgTmV4dC5qcyBzZXJ2ZXIgd2hpY2ggd2UncmUgZG9pbmcgd2l0aCBBTEIuXG4gICAgICAgICAgQWxzbyBub3RlLCBDbG91ZEZyb250IG9ubHkgc3VwcG9ydHMgSFRUUC8xLjEgb3JpZ2lucy5cbiAgICAgICAgICBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVxdWVzdEFuZFJlc3BvbnNlQmVoYXZpb3JDdXN0b21PcmlnaW4uaHRtbCNSZXF1ZXN0Q3VzdG9tSFRUUFZlcnNpb25cbiAgICAgICAgKi9cbiAgICAgICAgcHJvdG9jb2xWZXJzaW9uOiBBcHBsaWNhdGlvblByb3RvY29sVmVyc2lvbi5IVFRQMSxcbiAgICAgICAgLy8gaWYgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSUyB0aGVuIHdlIHVzZSBWUEMgT3JpZ2luIEFjY2VzcyB3aGljaCBhbGxvd3MgcHV0dGluZyBBTEIgaW4gcHJpdmF0ZSBzdWJuZXRcbiAgICAgICAgcHVibGljTG9hZEJhbGFuY2VyOlxuICAgICAgICAgIHRoaXMucHJvcHMubmV4dGpzVHlwZSA9PT0gTmV4dGpzVHlwZS5SRUdJT05BTF9DT05UQUlORVJTLFxuICAgICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgICBjcHVBcmNoaXRlY3R1cmUsXG4gICAgICAgIH0sXG4gICAgICAgIHRhc2tJbWFnZU9wdGlvbnM6IHtcbiAgICAgICAgICBjb21tYW5kOiBbXCJub2RlXCIsIHRoaXMucHJvcHMucmVsYXRpdmVFbnRyeXBvaW50UGF0aF0sXG4gICAgICAgICAgY29udGFpbmVyTmFtZTogXCJuZXh0anNcIixcbiAgICAgICAgICBjb250YWluZXJQb3J0OiAzMDAwLFxuICAgICAgICAgIGltYWdlOiBDb250YWluZXJJbWFnZS5mcm9tRG9ja2VySW1hZ2VBc3NldCh0aGlzLmRvY2tlckltYWdlQXNzZXQpLFxuICAgICAgICAgIGxvZ0RyaXZlcjogTG9nRHJpdmVycy5hd3NMb2dzKHtcbiAgICAgICAgICAgIHN0cmVhbVByZWZpeDogXCJuZXh0anNcIixcbiAgICAgICAgICAgIG1vZGU6IEF3c0xvZ0RyaXZlck1vZGUuTk9OX0JMT0NLSU5HLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy50YXNrSW1hZ2VPcHRpb25zLFxuICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAvLyBDYWNoZSBjb25maWd1cmF0aW9uIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgICAgICAgICAgQ0RLX05FWFRKU19DQUNIRV9CVUNLRVRfTkFNRTogdGhpcy5wcm9wcy5jYWNoZUJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgQ0RLX05FWFRKU19SRVZBTElEQVRJT05fVEFCTEVfTkFNRTpcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5yZXZhbGlkYXRpb25UYWJsZS50YWJsZU5hbWUsXG4gICAgICAgICAgICBDREtfTkVYVEpTX0JVSUxEX0lEOiB0aGlzLnByb3BzLmJ1aWxkSWQsXG4gICAgICAgICAgICAvLyBNZXJnZSB3aXRoIHVzZXItcHJvdmlkZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzICh1c2VyIHZhbHVlcyB0YWtlIHByZWNlZGVuY2UpXG4gICAgICAgICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8udGFza0ltYWdlT3B0aW9ucz8uZW52aXJvbm1lbnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmFsYkZhcmdhdGVTZXJ2aWNlUHJvcHMsXG4gICAgICAgIC4uLih0aGlzLnByb3BzLmFsYiA/IHsgbG9hZEJhbGFuY2VyOiB0aGlzLnByb3BzLmFsYiB9IDoge30pLFxuICAgICAgfSxcbiAgICApO1xuICAgIC8vIHJlcXVpcmVkIG9yIGhlYWx0aCBjaGVja3MgZmFpbFxuICAgIGFsYkZhcmdhdGVTZXJ2aWNlLnRhc2tEZWZpbml0aW9uLmRlZmF1bHRDb250YWluZXI/LmFkZEVudmlyb25tZW50KFxuICAgICAgXCJIT1NUTkFNRVwiLFxuICAgICAgXCIwLjAuMC4wXCIsXG4gICAgKTtcblxuICAgIC8vIEdyYW50IGNhY2hlIGFjY2VzcyBwZXJtaXNzaW9uc1xuICAgIHRoaXMucHJvcHMuY2FjaGVCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoXG4gICAgICBhbGJGYXJnYXRlU2VydmljZS50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICApO1xuICAgIHRoaXMucHJvcHMucmV2YWxpZGF0aW9uVGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKFxuICAgICAgYWxiRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUsXG4gICAgKTtcblxuICAgIC8vIHNwZWVkIHVwIGRlcGxveW1lbnRzIGJ5IHNob3J0ZW5pbmcgZGVyZWdpc3RyYXRpb24gZGVsYXlcbiAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9iZXN0cHJhY3RpY2VzZ3VpZGUvbG9hZC1iYWxhbmNlci1jb25uZWN0aW9uLWRyYWluaW5nLmh0bWxcbiAgICAvLyBUT0RPOiBkb2N1bWVudCB0aGF0IHRoaXMgc2hvdWxkIGJlIGluY3JlYXNlZCBpZiBsb25nIGxpdmVkIGNvbm5lY3Rpb25zIGFyZSBleHBlY3RlZFxuICAgIGFsYkZhcmdhdGVTZXJ2aWNlLnRhcmdldEdyb3VwLnNldEF0dHJpYnV0ZShcbiAgICAgIFwiZGVyZWdpc3RyYXRpb25fZGVsYXkudGltZW91dF9zZWNvbmRzXCIsXG4gICAgICBcIjMwXCIsXG4gICAgKTtcbiAgICAvLyBPbmx5IGNvbmZpZ3VyZSBBTEIgYXR0cmlidXRlcyB3aGVuIHdlIG93biB0aGUgQUxCLlxuICAgIC8vIElmIHVzZXIgcHJvdmlkZWQgdGhlaXIgb3duLCB0aGV5J3JlIHJlc3BvbnNpYmxlIGZvciBpdHMgY29uZmlndXJhdGlvbi5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5wcm9wcy5hbGIgJiZcbiAgICAgICF0aGlzLnByb3BzLm92ZXJyaWRlcz8uYWxiRmFyZ2F0ZVNlcnZpY2VQcm9wcz8ubG9hZEJhbGFuY2VyXG4gICAgKSB7XG4gICAgICAvLyBiZXN0IHByYWN0aWNlIHRvIGVuYWJsZSBjcm9zcyB6b25lIGxvYWQgYmFsYW5jaW5nXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvYXBwbGljYXRpb24vZGlzYWJsZS1jcm9zcy16b25lLmh0bWxcbiAgICAgIGFsYkZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIFwibG9hZF9iYWxhbmNpbmcuY3Jvc3Nfem9uZS5lbmFibGVkXCIsXG4gICAgICAgIFwidHJ1ZVwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFsYkZhcmdhdGVTZXJ2aWNlO1xuICB9XG4gIC8qKlxuICAgKiBDb25maWd1cmUgaGVhbHRoIGNoZWNrcyBmb3IgY29udGFpbmVycyBhdCBBTEIgYW5kIEVDUyBsZXZlbC4gVGhpcyBlbnN1cmVzXG4gICAqIHVuaGVhbHRoeSBjb250YWluZXJzIGFyZSByZW1vdmVkLiBCb3RoIG9mIHRoZXNlIGhlYWx0aCBjaGVja3MgY2FuIGJlXG4gICAqIG92ZXJ3cml0dGVuIGJ5IHVzZXIgYnkgYWNjZXNzaW5nIGBhbGJGYXJnYXRlU2VydmljZWAgcHJvcGVydHksIHNvIG5vIG5lZWRcbiAgICogZm9yIGBvdmVycmlkZXNgLlxuICAgKi9cbiAgcHJpdmF0ZSBjb25maWd1cmVIZWFsdGhDaGVjaygpIHtcbiAgICAvLyBzcGVlZCB1cCBkZXBsb3ltZW50cyBieSBzaG9ydGVuaW5nIGhlYWx0aCBjaGVja3NcbiAgICAvLyBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvYmVzdHByYWN0aWNlc2d1aWRlL2xvYWQtYmFsYW5jZXItaGVhbHRoY2hlY2suaHRtbFxuICAgIHRoaXMuYWxiRmFyZ2F0ZVNlcnZpY2UudGFyZ2V0R3JvdXAuY29uZmlndXJlSGVhbHRoQ2hlY2soe1xuICAgICAgcGF0aDogdGhpcy5wcm9wcy5oZWFsdGhDaGVja1BhdGgsXG4gICAgICBoZWFsdGh5VGhyZXNob2xkQ291bnQ6IDIsXG4gICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygxMCksIC8vIHRvbyBmcmVxdWVudD8gYnV0IGVuYWJsZXMgZmFzdGVyIHJvbGxiYWNrLi4uXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLCAvLyBtdXN0IGJlIGxlc3MgdGhhbiBpbnRlcnZhbFxuICAgIH0pO1xuICAgIGNvbnN0IGhlYWx0aENoZWNrOiBIZWFsdGhDaGVjayA9IHtcbiAgICAgIGNvbW1hbmQ6IFtcbiAgICAgICAgXCJDTUQtU0hFTExcIixcbiAgICAgICAgLy8gY3VybCBpc24ndCBhdmFpbGFibGUgaW4gYWxwaW5lIGxpbnV4XG4gICAgICAgIGB3Z2V0IC0tcXVpZXQgLS10cmllcz0xIC0tc3BpZGVyIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCR7dGhpcy5wcm9wcy5oZWFsdGhDaGVja1BhdGh9IHx8IGV4aXQgMWAsXG4gICAgICBdLFxuICAgIH07XG4gICAgY29uc3QgZGVmYXVsdENvbnRhaW5lciA9XG4gICAgICB0aGlzLmFsYkZhcmdhdGVTZXJ2aWNlLnRhc2tEZWZpbml0aW9uLmRlZmF1bHRDb250YWluZXI7XG4gICAgaWYgKGRlZmF1bHRDb250YWluZXIpIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbXVzdCB1c2UgaW50ZXJuYWwgXCJwcm9wc1wiIGF0dHJpYnV0ZSBiL2Mgbm8gb3RoZXIgd2F5IHRvIGFkZCBoZWFsdGggY2hlY2tcbiAgICAgIGRlZmF1bHRDb250YWluZXIucHJvcHMuaGVhbHRoQ2hlY2sgPSBoZWFsdGhDaGVjaztcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBnZXRVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm90b2NvbCA9IHRoaXMuYWxiRmFyZ2F0ZVNlcnZpY2UuY2VydGlmaWNhdGUgPyBcImh0dHBzXCIgOiBcImh0dHBcIjtcbiAgICAvLyB3ZSBjaGVjayB0b3AtbGV2ZWwgYWxiIGFuZCBvdmVycmlkZXMgZmlyc3QgYi9jIGlmIHVzaW5nIGltcG9ydGVkXG4gICAgLy8gbG9hZEJhbGFuY2VyIHRoZW4geW91IGNhbm5vdCBhY2Nlc3MgYGFsYkZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlcmAsXG4gICAgLy8geW91IG11c3QgYWNjZXNzIHZpYSBwYXNzZWQgaW4gYGxvYWRCYWxhbmNlcmAgd2hpY2hcbiAgICAvLyBgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZWAgYWNjZXB0cyBhcyBwcm9wc1xuICAgIGNvbnN0IGRuc05hbWUgPVxuICAgICAgdGhpcy5wcm9wcy5hbGI/LmxvYWRCYWxhbmNlckRuc05hbWUgPz9cbiAgICAgIHRoaXMucHJvcHMub3ZlcnJpZGVzPy5hbGJGYXJnYXRlU2VydmljZVByb3BzPy5sb2FkQmFsYW5jZXJcbiAgICAgICAgPy5sb2FkQmFsYW5jZXJEbnNOYW1lID8/XG4gICAgICB0aGlzLmFsYkZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlci5sb2FkQmFsYW5jZXJEbnNOYW1lO1xuICAgIHJldHVybiBgJHtwcm90b2NvbH06Ly8ke2Ruc05hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIEhUVFAgbGlzdGVuZXIgdGhhdCBgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZWBcbiAgICogYWx3YXlzIGNyZWF0ZXMuIENhbGwgdGhpcyB3aGVuIHlvdSBicmluZyB5b3VyIG93biBBTEIgdGhhdCBhbHJlYWR5IGhhcyBhXG4gICAqIGxpc3RlbmVyIG9uIHRoZSBzYW1lIHBvcnQgKHR5cGljYWxseSBwb3J0IDgwKSB0byBhdm9pZCBhXG4gICAqIFwibGlzdGVuZXIgYWxyZWFkeSBleGlzdHMgb24gdGhpcyBwb3J0XCIgZGVwbG95bWVudCBmYWlsdXJlLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZDpcbiAgICogMS4gUmVtb3ZlcyB0aGUgTDEgYENmbkxpc3RlbmVyYCByZXNvdXJjZSAoa2VlcHMgdGhlIEwyIG5vZGUgc28gdGhlXG4gICAqICAgIHRhcmdldCBncm91cCBjaGlsZCBpcyBwcmVzZXJ2ZWQpLlxuICAgKiAyLiBSZW1vdmVzIHRoZSBhc3NvY2lhdGVkIHNlY3VyaXR5LWdyb3VwIGluZ3Jlc3MgcnVsZSBmb3IgcG9ydCA4MC5cbiAgICogMy4gUmVidWlsZHMgdGhlIEVDUyBzZXJ2aWNlIGBEZXBlbmRzT25gIHdpdGhvdXQgdGhlIGRlbGV0ZWQgbGlzdGVuZXIuXG4gICAqIDQuIFJlbW92ZXMgYENmbk91dHB1dGAgcmVzb3VyY2VzIGF1dG8tY3JlYXRlZCBieSB0aGUgZWNzLXBhdHRlcm5zIGNvbnN0cnVjdC5cbiAgICovXG4gIHJlbW92ZUF1dG9DcmVhdGVkTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLmFsYkZhcmdhdGVTZXJ2aWNlLmxpc3RlbmVyO1xuICAgIGNvbnN0IGNmbkxpc3RlbmVyID0gbGlzdGVuZXIubm9kZS5kZWZhdWx0Q2hpbGQ7XG4gICAgaWYgKCEoY2ZuTGlzdGVuZXIgaW5zdGFuY2VvZiBDZm5SZXNvdXJjZSkpIHJldHVybjtcblxuICAgIC8vIDEuIFJlbW92ZSBvbmx5IHRoZSBDZm5MaXN0ZW5lciBMMSByZXNvdXJjZSwgbm90IHRoZSBMMiBjb25zdHJ1Y3QuXG4gICAgLy8gICAgVGhlIHRhcmdldCBncm91cCAoYSBzaWJsaW5nIGNoaWxkIG9mIHRoZSBsaXN0ZW5lciBub2RlKSBzdGF5cy5cbiAgICBsaXN0ZW5lci5ub2RlLnRyeVJlbW92ZUNoaWxkKGNmbkxpc3RlbmVyLm5vZGUuaWQpO1xuXG4gICAgLy8gMi4gUmVtb3ZlIHRoZSBTRyBpbmdyZXNzIHJ1bGUgdGhlIGxpc3RlbmVyIGF1dG8tY3JlYXRlcyBmb3IgcG9ydCA4MC5cbiAgICBjb25zdCBhbGJTZ05vZGUgPSB0aGlzLm5vZGVcbiAgICAgIC5maW5kQWxsKClcbiAgICAgIC5maW5kKFxuICAgICAgICAoYykgPT5cbiAgICAgICAgICBjIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UgJiZcbiAgICAgICAgICBjLmNmblJlc291cmNlVHlwZSA9PT0gXCJBV1M6OkVDMjo6U2VjdXJpdHlHcm91cEluZ3Jlc3NcIiAmJlxuICAgICAgICAgIGMubm9kZS5wYXRoLmluY2x1ZGVzKFwiZnJvbSAwLjAuMC4wLzA6ODBcIiksXG4gICAgICApO1xuICAgIGlmIChhbGJTZ05vZGUpIHtcbiAgICAgIGFsYlNnTm9kZS5ub2RlLnNjb3BlPy5ub2RlLnRyeVJlbW92ZUNoaWxkKGFsYlNnTm9kZS5ub2RlLmlkKTtcbiAgICB9XG5cbiAgICAvLyAzLiBSZWJ1aWxkIHRoZSBFQ1Mgc2VydmljZSBEZXBlbmRzT24gd2l0aG91dCB0aGUgZGVsZXRlZCBsaXN0ZW5lci5cbiAgICAvLyAgICBDREsgZ2VuZXJhdGVzIERlcGVuZHNPbiBkdXJpbmcgX3RvQ2xvdWRGb3JtYXRpb24oKS4gYWRkT3ZlcnJpZGVcbiAgICAvLyAgICBydW5zIGFmdGVyIHRoYXQgYW5kIHJlcGxhY2VzIHRoZSBnZW5lcmF0ZWQgdmFsdWUuXG4gICAgY29uc3QgY2ZuU2VydmljZSA9IHRoaXMuYWxiRmFyZ2F0ZVNlcnZpY2Uuc2VydmljZS5ub2RlLmRlZmF1bHRDaGlsZDtcbiAgICBjb25zdCBjZm5UYXJnZXRHcm91cCA9IHRoaXMuYWxiRmFyZ2F0ZVNlcnZpY2UudGFyZ2V0R3JvdXAubm9kZS5kZWZhdWx0Q2hpbGQ7XG4gICAgY29uc3QgdGFza0RlZiA9IHRoaXMuYWxiRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb247XG4gICAgY29uc3QgdGFza1JvbGUgPSB0YXNrRGVmLnRhc2tSb2xlLm5vZGUuZGVmYXVsdENoaWxkO1xuICAgIGNvbnN0IHRhc2tSb2xlUG9saWN5ID1cbiAgICAgIHRhc2tEZWYudGFza1JvbGUubm9kZS50cnlGaW5kQ2hpbGQoXCJEZWZhdWx0UG9saWN5XCIpPy5ub2RlLmRlZmF1bHRDaGlsZDtcblxuICAgIGlmIChjZm5TZXJ2aWNlIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UpIHtcbiAgICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgICBjb25zdCBrZWVwRGVwcyA9IFtjZm5UYXJnZXRHcm91cCwgdGFza1JvbGUsIHRhc2tSb2xlUG9saWN5XVxuICAgICAgICAuZmlsdGVyKChkKTogZCBpcyBDZm5FbGVtZW50ID0+IGQgaW5zdGFuY2VvZiBDZm5FbGVtZW50KVxuICAgICAgICAubWFwKChkKSA9PiBzdGFjay5nZXRMb2dpY2FsSWQoZCkpO1xuXG4gICAgICAvLyBBbHNvIGtlZXAgYW55IGxpc3RlbmVyIHJ1bGVzIChlLmcuIHBhdGgtYmFzZWQgcm91dGluZyBydWxlcylcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygc3RhY2subm9kZS5maW5kQWxsKCkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNoaWxkIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UgJiZcbiAgICAgICAgICBjaGlsZC5jZm5SZXNvdXJjZVR5cGUgPT09IFwiQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMaXN0ZW5lclJ1bGVcIlxuICAgICAgICApIHtcbiAgICAgICAgICBrZWVwRGVwcy5wdXNoKHN0YWNrLmdldExvZ2ljYWxJZChjaGlsZCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjZm5TZXJ2aWNlLmFkZE92ZXJyaWRlKFwiRGVwZW5kc09uXCIsIGtlZXBEZXBzKTtcbiAgICB9XG5cbiAgICAvLyA0LiBSZW1vdmUgQ2ZuT3V0cHV0IHJlc291cmNlcyBhdXRvLWNyZWF0ZWQgYnkgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZVxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5ub2RlLmZpbmRBbGwoKSkge1xuICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgQ2ZuT3V0cHV0KSB7XG4gICAgICAgIGNoaWxkLm5vZGUuc2NvcGU/Lm5vZGUudHJ5UmVtb3ZlQ2hpbGQoY2hpbGQubm9kZS5pZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.NextjsFunctions = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -16,6 +15,10 @@ const get_architecture_1 = require("../utils/get-architecture");
16
15
  * Run Next.js in functions on AWS with AWS Lambda.
17
16
  */
18
17
  class NextjsFunctions extends constructs_1.Construct {
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsFunctions", version: "0.5.4" };
19
+ function;
20
+ functionUrl;
21
+ props;
19
22
  constructor(scope, id, props) {
20
23
  super(scope, id);
21
24
  this.props = props;
@@ -95,6 +98,4 @@ class NextjsFunctions extends constructs_1.Construct {
95
98
  }
96
99
  }
97
100
  exports.NextjsFunctions = NextjsFunctions;
98
- _a = JSII_RTTI_SYMBOL_1;
99
- NextjsFunctions[_a] = { fqn: "cdk-nextjs.NextjsFunctions", version: "0.5.2" };
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXh0anMtY29tcHV0ZS9uZXh0anMtZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELHlDQUE2QztBQUM3QywyQ0FBb0Q7QUFDcEQsNkNBQXVDO0FBQ3ZDLGlEQUF1RDtBQUN2RCx1REFRZ0M7QUFDaEMsMkNBQXVDO0FBRXZDLDRDQUFzRDtBQUd0RCxnRUFBa0U7QUFZbEU7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFNNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxzQkFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3ZCLElBQUksMEJBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FDakQsQ0FBQztZQUNGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7Z0JBQzlDLFFBQVEsRUFBRSxnQ0FBbUIsQ0FBQyxPQUFPO2dCQUNyQyxVQUFVLEVBQUUsdUJBQVUsQ0FBQyxlQUFlO2dCQUN0QyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGdCQUFnQjthQUMxQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWM7UUFDcEIsaUZBQWlGO1FBQ2pGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXJELE1BQU0sYUFBYSxHQUE2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QztZQUNOLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSxnQkFBUSxFQUMvQixTQUFTLEVBQ1QsSUFBSSxFQUNKLGNBQWMsRUFDZCxjQUFjLENBQ2YsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFBLG9CQUFVLEVBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLGdDQUFnQyxnQkFBZ0Isb0RBQW9ELENBQ3JHLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBQSxzQkFBWSxFQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxHQUFHLHNCQUFVLFlBQVksY0FBYyw2QkFBNkIsQ0FDckUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOztBQTdHSCwwQ0E4R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb3B5RmlsZVN5bmMsIGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiBhcyBqb2luUGF0aCB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGpvaW4gYXMgam9pblBvc2l4IH0gZnJvbSBcIm5vZGU6cGF0aC9wb3NpeFwiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHtcbiAgQXNzZXRJbWFnZUNvZGVQcm9wcyxcbiAgRG9ja2VySW1hZ2VDb2RlLFxuICBEb2NrZXJJbWFnZUZ1bmN0aW9uLFxuICBEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMsXG4gIEZ1bmN0aW9uVXJsLFxuICBGdW5jdGlvblVybEF1dGhUeXBlLFxuICBJbnZva2VNb2RlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE5leHRqc0NvbXB1dGVCYXNlUHJvcHMgfSBmcm9tIFwiLi9uZXh0anMtY29tcHV0ZS1iYXNlLXByb3BzXCI7XG5pbXBvcnQgeyBMT0dfUFJFRklYLCBOZXh0anNUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHNcIjtcbmltcG9ydCB7IE9wdGlvbmFsRnVuY3Rpb25VcmxQcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEZ1bmN0aW9uVXJsUHJvcHNcIjtcbmltcG9ydCB7IGdldExhbWJkYUFyY2hpdGVjdHVyZSB9IGZyb20gXCIuLi91dGlscy9nZXQtYXJjaGl0ZWN0dXJlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgZG9ja2VySW1hZ2VGdW5jdGlvblByb3BzPzogT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHM7XG4gIHJlYWRvbmx5IGZ1bmN0aW9uVXJsUHJvcHM/OiBPcHRpb25hbEZ1bmN0aW9uVXJsUHJvcHM7XG4gIHJlYWRvbmx5IGFzc2V0SW1hZ2VDb2RlUHJvcHM/OiBBc3NldEltYWdlQ29kZVByb3BzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0Z1bmN0aW9uc1Byb3BzIGV4dGVuZHMgTmV4dGpzQ29tcHV0ZUJhc2VQcm9wcyB7XG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcztcbn1cblxuLyoqXG4gKiBSdW4gTmV4dC5qcyBpbiBmdW5jdGlvbnMgb24gQVdTIHdpdGggQVdTIExhbWJkYS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0Z1bmN0aW9ucyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGZ1bmN0aW9uOiBEb2NrZXJJbWFnZUZ1bmN0aW9uO1xuICBmdW5jdGlvblVybD86IEZ1bmN0aW9uVXJsO1xuXG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc0Z1bmN0aW9uc1Byb3BzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXh0anNGdW5jdGlvbnNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMuZnVuY3Rpb24gPSB0aGlzLmNyZWF0ZUZ1bmN0aW9uKCk7XG4gICAgaWYgKHByb3BzLm5leHRqc1R5cGUgPT09IE5leHRqc1R5cGUuR0xPQkFMX0ZVTkNUSU9OUykge1xuICAgICAgdGhpcy5mdW5jdGlvbi5ncmFudEludm9rZShcbiAgICAgICAgbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJjbG91ZGZyb250LmFtYXpvbmF3cy5jb21cIiksXG4gICAgICApO1xuICAgICAgdGhpcy5mdW5jdGlvblVybCA9IHRoaXMuZnVuY3Rpb24uYWRkRnVuY3Rpb25Vcmwoe1xuICAgICAgICBhdXRoVHlwZTogRnVuY3Rpb25VcmxBdXRoVHlwZS5BV1NfSUFNLFxuICAgICAgICBpbnZva2VNb2RlOiBJbnZva2VNb2RlLlJFU1BPTlNFX1NUUkVBTSxcbiAgICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmZ1bmN0aW9uVXJsUHJvcHMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZ1bmN0aW9uKCkge1xuICAgIC8vIENyZWF0ZSBEb2NrZXJJbWFnZUNvZGUgZnJvbSBsb2NhbCBidWlsZCBvdXRwdXQgb3IgdXNlIHByb3ZpZGVkIGRvY2tlckltYWdlQ29kZVxuICAgIGNvbnN0IGRvY2tlckltYWdlQ29kZSA9IHRoaXMuY3JlYXRlRG9ja2VySW1hZ2VDb2RlKCk7XG5cbiAgICBjb25zdCBmdW5jdGlvblByb3BzOiBEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMgPSB7XG4gICAgICBhcmNoaXRlY3R1cmU6IGdldExhbWJkYUFyY2hpdGVjdHVyZSgpLFxuICAgICAgY29kZTogZG9ja2VySW1hZ2VDb2RlLFxuICAgICAgbWVtb3J5U2l6ZTogMjA0OCxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmRvY2tlckltYWdlRnVuY3Rpb25Qcm9wcyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19MV0FfRU5BQkxFX0NPTVBSRVNTSU9OOiBcInRydWVcIixcbiAgICAgICAgQVdTX0xXQV9JTlZPS0VfTU9ERTogXCJyZXNwb25zZV9zdHJlYW1cIixcbiAgICAgICAgQVdTX0xXQV9SRUFESU5FU1NfQ0hFQ0tfUEFUSDogdGhpcy5wcm9wcy5oZWFsdGhDaGVja1BhdGgsXG4gICAgICAgIEFXU19MV0FfUkVBRElORVNTX0NIRUNLX1BPUlQ6IFwiMzAwMFwiLFxuICAgICAgICBSRUFESU5FU1NfQ0hFQ0tfUEFUSDogYGh0dHA6Ly8xMjcuMC4wLjE6MzAwMCR7dGhpcy5wcm9wcy5oZWFsdGhDaGVja1BhdGh9YCxcbiAgICAgICAgLy8gQ2FjaGUgY29uZmlndXJhdGlvbiBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICAgICAgQ0RLX05FWFRKU19DQUNIRV9CVUNLRVRfTkFNRTogdGhpcy5wcm9wcy5jYWNoZUJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBDREtfTkVYVEpTX1JFVkFMSURBVElPTl9UQUJMRV9OQU1FOlxuICAgICAgICAgIHRoaXMucHJvcHMucmV2YWxpZGF0aW9uVGFibGUudGFibGVOYW1lLFxuICAgICAgICBDREtfTkVYVEpTX0JVSUxEX0lEOiB0aGlzLnByb3BzLmJ1aWxkSWQsXG4gICAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5kb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHM/LmVudmlyb25tZW50LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgZm4gPSBuZXcgRG9ja2VySW1hZ2VGdW5jdGlvbih0aGlzLCBcIkZ1bmN0aW9uc1wiLCBmdW5jdGlvblByb3BzKTtcblxuICAgIC8vIEdyYW50IGNhY2hlIGFjY2VzcyBwZXJtaXNzaW9uc1xuICAgIHRoaXMucHJvcHMuY2FjaGVCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoZm4pO1xuICAgIHRoaXMucHJvcHMucmV2YWxpZGF0aW9uVGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGZuKTtcblxuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRG9ja2VySW1hZ2VDb2RlKCk6IERvY2tlckltYWdlQ29kZSB7XG4gICAgLy8gQnVpbGQgY29udGV4dCBpcyB0aGUgYnVpbGREaXJlY3RvcnkgKHdoZXJlIHRoZSBOZXh0LmpzIGFwcCBpcyBsb2NhdGVkKVxuICAgIGNvbnN0IGJ1aWxkQ29udGV4dCA9IHRoaXMucHJvcHMuYnVpbGREaXJlY3Rvcnk7XG4gICAgY29uc3QgZG9ja2VyZmlsZU5hbWUgPSBcImZ1bmN0aW9ucy5Eb2NrZXJmaWxlXCI7XG5cbiAgICAvLyBDb3B5IERvY2tlcmZpbGUgdG8gYnVpbGQgY29udGV4dCB0byBhdm9pZCBwYXRoIHJlc29sdXRpb24gaXNzdWVzXG4gICAgdGhpcy5jb3B5RG9ja2VyZmlsZVRvQ29udGV4dChidWlsZENvbnRleHQsIGRvY2tlcmZpbGVOYW1lKTtcblxuICAgIGNvbnN0IHJlbGF0aXZlRW50cnlwb2ludFBhdGggPSB0aGlzLnByb3BzLnJlbGF0aXZlUGF0aFRvUGFja2FnZVxuICAgICAgPyAvLyBqb2luUG9zaXggYi9jIHRoaXMgd2lsbCBiZSByZWZlcmVuY2VkIGluIERvY2tlciBjb250YWluZXIgKExpbnV4KVxuICAgICAgICBqb2luUG9zaXgodGhpcy5wcm9wcy5yZWxhdGl2ZVBhdGhUb1BhY2thZ2UsIFwic2VydmVyLmpzXCIpXG4gICAgICA6IFwic2VydmVyLmpzXCI7XG5cbiAgICByZXR1cm4gRG9ja2VySW1hZ2VDb2RlLmZyb21JbWFnZUFzc2V0KGJ1aWxkQ29udGV4dCwge1xuICAgICAgZmlsZTogZG9ja2VyZmlsZU5hbWUsIC8vIE5vdyBpdCdzIGp1c3QgdGhlIGZpbGVuYW1lIGluIHRoZSBidWlsZCBjb250ZXh0XG4gICAgICBjbWQ6IFtcIm5vZGVcIiwgcmVsYXRpdmVFbnRyeXBvaW50UGF0aF0sXG4gICAgICBleGNsdWRlOiBbXCJjZGsub3V0XCJdLCAvLyBmb3IgY29tbW9uIGNhc2Ugd2hlcmUgY2RrIGRlcGxveSBpcyBydW4gaW4gc2FtZSBkaXJlY3RvcnkgYXMgbmV4dGpzIGFwcFxuICAgICAgYnVpbGRBcmdzOiB7XG4gICAgICAgIFJFTEFUSVZFX1BBVEhfVE9fUEFDS0FHRTogdGhpcy5wcm9wcy5yZWxhdGl2ZVBhdGhUb1BhY2thZ2UgfHwgXCIuXCIsXG4gICAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5hc3NldEltYWdlQ29kZVByb3BzPy5idWlsZEFyZ3MsXG4gICAgICB9LFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmFzc2V0SW1hZ2VDb2RlUHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvcHlEb2NrZXJmaWxlVG9Db250ZXh0KFxuICAgIGJ1aWxkQ29udGV4dDogc3RyaW5nLFxuICAgIGRvY2tlcmZpbGVOYW1lOiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldERvY2tlcmZpbGUgPSBqb2luUGF0aChidWlsZENvbnRleHQsIGRvY2tlcmZpbGVOYW1lKTtcblxuICAgIC8vIENoZWNrIGlmIERvY2tlcmZpbGUgYWxyZWFkeSBleGlzdHMgLSBpZiBzbywgdXNlIHRoZSBleGlzdGluZyBvbmUgKGRldmVsb3BlciBjb250cm9sKVxuICAgIGlmIChleGlzdHNTeW5jKHRhcmdldERvY2tlcmZpbGUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtMT0dfUFJFRklYfSBVc2luZyBleGlzdGluZyBEb2NrZXJmaWxlOiAke2RvY2tlcmZpbGVOYW1lfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb3VyY2VEb2NrZXJmaWxlID0gam9pblBhdGgoXG4gICAgICAgIF9fZGlybmFtZSxcbiAgICAgICAgXCIuLlwiLFxuICAgICAgICBcIm5leHRqcy1idWlsZFwiLFxuICAgICAgICBkb2NrZXJmaWxlTmFtZSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghZXhpc3RzU3luYyhzb3VyY2VEb2NrZXJmaWxlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFNvdXJjZSBEb2NrZXJmaWxlIG5vdCBmb3VuZDogJHtzb3VyY2VEb2NrZXJmaWxlfS4gRW5zdXJlIHRoZSBjZGstbmV4dGpzIHBhY2thZ2UgaXMgcHJvcGVybHkgYnVpbHQuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29weUZpbGVTeW5jKHNvdXJjZURvY2tlcmZpbGUsIHRhcmdldERvY2tlcmZpbGUpO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGAke0xPR19QUkVGSVh9IENyZWF0ZWQgJHtkb2NrZXJmaWxlTmFtZX0gaW4geW91ciBwcm9qZWN0IGRpcmVjdG9yeS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXh0anMtY29tcHV0ZS9uZXh0anMtZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQseUNBQTZDO0FBQzdDLDJDQUFvRDtBQUNwRCw2Q0FBdUM7QUFDdkMsaURBQXVEO0FBQ3ZELHVEQVFnQztBQUNoQywyQ0FBdUM7QUFFdkMsNENBQXNEO0FBR3RELGdFQUFrRTtBQVlsRTs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxzQkFBUzs7SUFDNUMsUUFBUSxDQUFzQjtJQUM5QixXQUFXLENBQWU7SUFFbEIsS0FBSyxDQUF1QjtJQUVwQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEMsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLHNCQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDdkIsSUFBSSwwQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUNqRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztnQkFDOUMsUUFBUSxFQUFFLGdDQUFtQixDQUFDLE9BQU87Z0JBQ3JDLFVBQVUsRUFBRSx1QkFBVSxDQUFDLGVBQWU7Z0JBQ3RDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCO2FBQzFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixpRkFBaUY7UUFDakYsTUFBTSxlQUFlLEdB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QUFVLCtCQUErQixjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLGdCQUFRLEVBQy9CLFNBQVMsRUFDVCxJQUFJLEVBQ0osY0FBYyxFQUNkLGNBQWMsQ0FDZixDQUFDO1lBRUYsSUFBSSxDQUFDLElBQUEsb0JBQVUsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0NBQWdDLGdCQUFnQixvREFBb0QsQ0FDckcsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFBLHNCQUFZLEVBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRCxPQUFPLENBQUMsR0FBRyxDQUNULEdBQUcsc0JBQVUsWUFBWSxjQUFjLDZCQUE2QixDQUNyRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBN0dILDBDQThHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcHlGaWxlU3luYywgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBqb2luIGFzIGpvaW5QYXRoIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgam9pbiBhcyBqb2luUG9zaXggfSBmcm9tIFwibm9kZTpwYXRoL3Bvc2l4XCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgU2VydmljZVByaW5jaXBhbCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBc3NldEltYWdlQ29kZVByb3BzLFxuICBEb2NrZXJJbWFnZUNvZGUsXG4gIERvY2tlckltYWdlRnVuY3Rpb24sXG4gIERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcyxcbiAgRnVuY3Rpb25VcmwsXG4gIEZ1bmN0aW9uVXJsQXV0aFR5cGUsXG4gIEludm9rZU1vZGUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTmV4dGpzQ29tcHV0ZUJhc2VQcm9wcyB9IGZyb20gXCIuL25leHRqcy1jb21wdXRlLWJhc2UtcHJvcHNcIjtcbmltcG9ydCB7IExPR19QUkVGSVgsIE5leHRqc1R5cGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBPcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wc1wiO1xuaW1wb3J0IHsgT3B0aW9uYWxGdW5jdGlvblVybFByb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRnVuY3Rpb25VcmxQcm9wc1wiO1xuaW1wb3J0IHsgZ2V0TGFtYmRhQXJjaGl0ZWN0dXJlIH0gZnJvbSBcIi4uL3V0aWxzL2dldC1hcmNoaXRlY3R1cmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNGdW5jdGlvbnNPdmVycmlkZXMge1xuICByZWFkb25seSBkb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHM/OiBPcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcztcbiAgcmVhZG9ubHkgZnVuY3Rpb25VcmxQcm9wcz86IE9wdGlvbmFsRnVuY3Rpb25VcmxQcm9wcztcbiAgcmVhZG9ubHkgYXNzZXRJbWFnZUNvZGVQcm9wcz86IEFzc2V0SW1hZ2VDb2RlUHJvcHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzRnVuY3Rpb25zUHJvcHMgZXh0ZW5kcyBOZXh0anNDb21wdXRlQmFzZVByb3BzIHtcbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzO1xufVxuXG4vKipcbiAqIFJ1biBOZXh0LmpzIGluIGZ1bmN0aW9ucyBvbiBBV1Mgd2l0aCBBV1MgTGFtYmRhLlxuICovXG5leHBvcnQgY2xhc3MgTmV4dGpzRnVuY3Rpb25zIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgZnVuY3Rpb246IERvY2tlckltYWdlRnVuY3Rpb247XG4gIGZ1bmN0aW9uVXJsPzogRnVuY3Rpb25Vcmw7XG5cbiAgcHJpdmF0ZSBwcm9wczogTmV4dGpzRnVuY3Rpb25zUHJvcHM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5leHRqc0Z1bmN0aW9uc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5mdW5jdGlvbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb24oKTtcbiAgICBpZiAocHJvcHMubmV4dGpzVHlwZSA9PT0gTmV4dGpzVHlwZS5HTE9CQUxfRlVOQ1RJT05TKSB7XG4gICAgICB0aGlzLmZ1bmN0aW9uLmdyYW50SW52b2tlKFxuICAgICAgICBuZXcgU2VydmljZVByaW5jaXBhbChcImNsb3VkZnJvbnQuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgICk7XG4gICAgICB0aGlzLmZ1bmN0aW9uVXJsID0gdGhpcy5mdW5jdGlvbi5hZGRGdW5jdGlvblVybCh7XG4gICAgICAgIGF1dGhUeXBlOiBGdW5jdGlvblVybEF1dGhUeXBlLkFXU19JQU0sXG4gICAgICAgIGludm9rZU1vZGU6IEludm9rZU1vZGUuUkVTUE9OU0VfU1RSRUFNLFxuICAgICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8uZnVuY3Rpb25VcmxQcm9wcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRnVuY3Rpb24oKSB7XG4gICAgLy8gQ3JlYXRlIERvY2tlckltYWdlQ29kZSBmcm9tIGxvY2FsIGJ1aWxkIG91dHB1dCBvciB1c2UgcHJvdmlkZWQgZG9ja2VySW1hZ2VDb2RlXG4gICAgY29uc3QgZG9ja2VySW1hZ2VDb2RlID0gdGhpcy5jcmVhdGVEb2NrZXJJbWFnZUNvZGUoKTtcblxuICAgIGNvbnN0IGZ1bmN0aW9uUHJvcHM6IERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICAgIGFyY2hpdGVjdHVyZTogZ2V0TGFtYmRhQXJjaGl0ZWN0dXJlKCksXG4gICAgICBjb2RlOiBkb2NrZXJJbWFnZUNvZGUsXG4gICAgICBtZW1vcnlTaXplOiAyMDQ4LFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8uZG9ja2VySW1hZ2VGdW5jdGlvblByb3BzLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQVdTX0xXQV9FTkFCTEVfQ09NUFJFU1NJT046IFwidHJ1ZVwiLFxuICAgICAgICBBV1NfTFdBX0lOVk9LRV9NT0RFOiBcInJlc3BvbnNlX3N0cmVhbVwiLFxuICAgICAgICBBV1NfTFdBX1JFQURJTkVTU19DSEVDS19QQVRIOiB0aGlzLnByb3BzLmhlYWx0aENoZWNrUGF0aCxcbiAgICAgICAgQVdTX0xXQV9SRUFESU5FU1NfQ0hFQ0tfUE9SVDogXCIzMDAwXCIsXG4gICAgICAgIFJFQURJTkVTU19DSEVDS19QQVRIOiBgaHR0cDovLzEyNy4wLjAuMTozMDAwJHt0aGlzLnByb3BzLmhlYWx0aENoZWNrUGF0aH1gLFxuICAgICAgICAvLyBDYWNoZSBjb25maWd1cmF0aW9uIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgICAgICBDREtfTkVYVEpTX0NBQ0hFX0JVQ0tFVF9OQU1FOiB0aGlzLnByb3BzLmNhY2hlQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgIENES19ORVhUSlNfUkVWQUxJREFUSU9OX1RBQkxFX05BTUU6XG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXZhbGlkYXRpb25UYWJsZS50YWJsZU5hbWUsXG4gICAgICAgIENES19ORVhUSlNfQlVJTERfSUQ6IHRoaXMucHJvcHMuYnVpbGRJZCxcbiAgICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmRvY2tlckltYWdlRnVuY3Rpb25Qcm9wcz8uZW52aXJvbm1lbnQsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBmbiA9IG5ldyBEb2NrZXJJbWFnZUZ1bmN0aW9uKHRoaXMsIFwiRnVuY3Rpb25zXCIsIGZ1bmN0aW9uUHJvcHMpO1xuXG4gICAgLy8gR3JhbnQgY2FjaGUgYWNjZXNzIHBlcm1pc3Npb25zXG4gICAgdGhpcy5wcm9wcy5jYWNoZUJ1Y2tldC5ncmFudFJlYWRXcml0ZShmbik7XG4gICAgdGhpcy5wcm9wcy5yZXZhbGlkYXRpb25UYWJsZS5ncmFudFJlYWRXcml0ZURhdGEoZm4pO1xuXG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEb2NrZXJJbWFnZUNvZGUoKTogRG9ja2VySW1hZ2VDb2RlIHtcbiAgICAvLyBCdWlsZCBjb250ZXh0IGlzIHRoZSBidWlsZERpcmVjdG9yeSAod2hlcmUgdGhlIE5leHQuanMgYXBwIGlzIGxvY2F0ZWQpXG4gICAgY29uc3QgYnVpbGRDb250ZXh0ID0gdGhpcy5wcm9wcy5idWlsZERpcmVjdG9yeTtcbiAgICBjb25zdCBkb2NrZXJmaWxlTmFtZSA9IFwiZnVuY3Rpb25zLkRvY2tlcmZpbGVcIjtcblxuICAgIC8vIENvcHkgRG9ja2VyZmlsZSB0byBidWlsZCBjb250ZXh0IHRvIGF2b2lkIHBhdGggcmVzb2x1dGlvbiBpc3N1ZXNcbiAgICB0aGlzLmNvcHlEb2NrZXJmaWxlVG9Db250ZXh0KGJ1aWxkQ29udGV4dCwgZG9ja2VyZmlsZU5hbWUpO1xuXG4gICAgY29uc3QgcmVsYXRpdmVFbnRyeXBvaW50UGF0aCA9IHRoaXMucHJvcHMucmVsYXRpdmVQYXRoVG9QYWNrYWdlXG4gICAgICA/IC8vIGpvaW5Qb3NpeCBiL2MgdGhpcyB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gRG9ja2VyIGNvbnRhaW5lciAoTGludXgpXG4gICAgICAgIGpvaW5Qb3NpeCh0aGlzLnByb3BzLnJlbGF0aXZlUGF0aFRvUGFja2FnZSwgXCJzZXJ2ZXIuanNcIilcbiAgICAgIDogXCJzZXJ2ZXIuanNcIjtcblxuICAgIHJldHVybiBEb2NrZXJJbWFnZUNvZGUuZnJvbUltYWdlQXNzZXQoYnVpbGRDb250ZXh0LCB7XG4gICAgICBmaWxlOiBkb2NrZXJmaWxlTmFtZSwgLy8gTm93IGl0J3MganVzdCB0aGUgZmlsZW5hbWUgaW4gdGhlIGJ1aWxkIGNvbnRleHRcbiAgICAgIGNtZDogW1wibm9kZVwiLCByZWxhdGl2ZUVudHJ5cG9pbnRQYXRoXSxcbiAgICAgIGV4Y2x1ZGU6IFtcImNkay5vdXRcIl0sIC8vIGZvciBjb21tb24gY2FzZSB3aGVyZSBjZGsgZGVwbG95IGlzIHJ1biBpbiBzYW1lIGRpcmVjdG9yeSBhcyBuZXh0anMgYXBwXG4gICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgUkVMQVRJVkVfUEFUSF9UT19QQUNLQUdFOiB0aGlzLnByb3BzLnJlbGF0aXZlUGF0aFRvUGFja2FnZSB8fCBcIi5cIixcbiAgICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/LmFzc2V0SW1hZ2VDb2RlUHJvcHM/LmJ1aWxkQXJncyxcbiAgICAgIH0sXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8uYXNzZXRJbWFnZUNvZGVQcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29weURvY2tlcmZpbGVUb0NvbnRleHQoXG4gICAgYnVpbGRDb250ZXh0OiBzdHJpbmcsXG4gICAgZG9ja2VyZmlsZU5hbWU6IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0RG9ja2VyZmlsZSA9IGpvaW5QYXRoKGJ1aWxkQ29udGV4dCwgZG9ja2VyZmlsZU5hbWUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgRG9ja2VyZmlsZSBhbHJlYWR5IGV4aXN0cyAtIGlmIHNvLCB1c2UgdGhlIGV4aXN0aW5nIG9uZSAoZGV2ZWxvcGVyIGNvbnRyb2wpXG4gICAgaWYgKGV4aXN0c1N5bmModGFyZ2V0RG9ja2VyZmlsZSkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke0xPR19QUkVGSVh9IFVzaW5nIGV4aXN0aW5nIERvY2tlcmZpbGU6ICR7ZG9ja2VyZmlsZU5hbWV9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNvdXJjZURvY2tlcmZpbGUgPSBqb2luUGF0aChcbiAgICAgICAgX19kaXJuYW1lLFxuICAgICAgICBcIi4uXCIsXG4gICAgICAgIFwibmV4dGpzLWJ1aWxkXCIsXG4gICAgICAgIGRvY2tlcmZpbGVOYW1lLFxuICAgICAgKTtcblxuICAgICAgaWYgKCFleGlzdHNTeW5jKHNvdXJjZURvY2tlcmZpbGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgU291cmNlIERvY2tlcmZpbGUgbm90IGZvdW5kOiAke3NvdXJjZURvY2tlcmZpbGV9LiBFbnN1cmUgdGhlIGNkay1uZXh0anMgcGFja2FnZSBpcyBwcm9wZXJseSBidWlsdC5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb3B5RmlsZVN5bmMoc291cmNlRG9ja2VyZmlsZSwgdGFyZ2V0RG9ja2VyZmlsZSk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYCR7TE9HX1BSRUZJWH0gQ3JlYXRlZCAke2RvY2tlcmZpbGVOYW1lfSBpbiB5b3VyIHByb2plY3QgZGlyZWN0b3J5LmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19