@dbx-tools/shared-generator 0.9.203 → 0.9.205
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/workflow.js +4 -16
- package/package.json +2 -2
- package/src/workflow.ts +14 -26
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-generator";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.205";
|
|
7
7
|
export * as brand from "./src/brand.ts";
|
|
8
8
|
export * as kpi from "./src/kpi.ts";
|
|
9
9
|
export * as workflow from "./src/workflow.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-generator";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.205";
|
|
3
3
|
export * as brand from "./src/brand.ts";
|
|
4
4
|
export * as kpi from "./src/kpi.ts";
|
|
5
5
|
export * as workflow from "./src/workflow.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-generator";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.205";
|
|
6
6
|
export * as brand from "./src/brand.js";
|
|
7
7
|
export * as kpi from "./src/kpi.js";
|
|
8
8
|
export * as workflow from "./src/workflow.js";
|
|
9
9
|
export { GENERATOR_PLUGIN_NAME, GENERATOR_BASE_PATH, GENERATOR_ROUTES, BrandGenerationRequestSchema, BrandPackageSourceSchema, BrandVisualImageSchema, BrandVisualReferenceSchema, BrandPackageSchema, BrandHistoryEntrySchema, BrandHistoryResponseSchema, BrandGenerationStageSchema, BrandGenerationProgressEventSchema, BrandGenerationResultEventSchema, BrandGenerationErrorEventSchema, BrandGenerationEventSchema, GeneratorClientConfigSchema, brandGenerateUrl, brandHistoryUrl, GeneratorPluginClient } from "./src/brand.js";
|
|
10
10
|
export { ResearchedKpiSchema, KpiResearchRequestSchema, KpiResearchResultSchema } from "./src/kpi.js";
|
|
11
11
|
export { PresentationModeSchema, GeneratorRequestSchema, GeneratedColumnSchema, GeneratedMetricSchema, GeneratorPlanSchema, PlanGeneratorDataRequestSchema, GeneratedSchemaSchema, ProvisionGeneratorSchemaRequestSchema, MaterializeGeneratorDataRequestSchema, MaterializedGeneratorDataSchema, CreateGeneratorPresentationRequestSchema, GeneratedDashboardSchema, GeneratedGenieSpaceSchema, GeneratedAssetsSchema } from "./src/workflow.js";
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyw2QkFBNkIsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLEVBQUUsa0NBQWtDLEVBQUUsZ0NBQWdDLEVBQUUsK0JBQStCLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFemdCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsOEJBQThCLEVBQUUscUJBQXFCLEVBQUUscUNBQXFDLEVBQUUscUNBQXFDLEVBQUUsK0JBQStCLEVBQUUsd0NBQXdDLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmVyYXRvclwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjIwNVwiO1xuZXhwb3J0ICogYXMgYnJhbmQgZnJvbSBcIi4vc3JjL2JyYW5kLnRzXCI7XG5leHBvcnQgKiBhcyBrcGkgZnJvbSBcIi4vc3JjL2twaS50c1wiO1xuZXhwb3J0ICogYXMgd29ya2Zsb3cgZnJvbSBcIi4vc3JjL3dvcmtmbG93LnRzXCI7XG5leHBvcnQgeyBHRU5FUkFUT1JfUExVR0lOX05BTUUsIEdFTkVSQVRPUl9CQVNFX1BBVEgsIEdFTkVSQVRPUl9ST1VURVMsIEJyYW5kR2VuZXJhdGlvblJlcXVlc3RTY2hlbWEsIEJyYW5kUGFja2FnZVNvdXJjZVNjaGVtYSwgQnJhbmRWaXN1YWxJbWFnZVNjaGVtYSwgQnJhbmRWaXN1YWxSZWZlcmVuY2VTY2hlbWEsIEJyYW5kUGFja2FnZVNjaGVtYSwgQnJhbmRIaXN0b3J5RW50cnlTY2hlbWEsIEJyYW5kSGlzdG9yeVJlc3BvbnNlU2NoZW1hLCBCcmFuZEdlbmVyYXRpb25TdGFnZVNjaGVtYSwgQnJhbmRHZW5lcmF0aW9uUHJvZ3Jlc3NFdmVudFNjaGVtYSwgQnJhbmRHZW5lcmF0aW9uUmVzdWx0RXZlbnRTY2hlbWEsIEJyYW5kR2VuZXJhdGlvbkVycm9yRXZlbnRTY2hlbWEsIEJyYW5kR2VuZXJhdGlvbkV2ZW50U2NoZW1hLCBHZW5lcmF0b3JDbGllbnRDb25maWdTY2hlbWEsIGJyYW5kR2VuZXJhdGVVcmwsIGJyYW5kSGlzdG9yeVVybCwgR2VuZXJhdG9yUGx1Z2luQ2xpZW50IH0gZnJvbSBcIi4vc3JjL2JyYW5kLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kR2VuZXJhdGlvblJlcXVlc3QsIEJyYW5kUGFja2FnZVNvdXJjZSwgQnJhbmRWaXN1YWxJbWFnZSwgQnJhbmRWaXN1YWxSZWZlcmVuY2UsIEJyYW5kUGFja2FnZSwgQnJhbmRIaXN0b3J5RW50cnksIEJyYW5kSGlzdG9yeVJlc3BvbnNlLCBCcmFuZEdlbmVyYXRpb25TdGFnZSwgQnJhbmRHZW5lcmF0aW9uUHJvZ3Jlc3NFdmVudCwgQnJhbmRHZW5lcmF0aW9uUmVzdWx0RXZlbnQsIEJyYW5kR2VuZXJhdGlvbkVycm9yRXZlbnQsIEJyYW5kR2VuZXJhdGlvbkV2ZW50LCBHZW5lcmF0b3JDbGllbnRDb25maWcsIEJyYW5kR2VuZXJhdGlvblN0cmVhbU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvYnJhbmQudHNcIjtcbmV4cG9ydCB7IFJlc2VhcmNoZWRLcGlTY2hlbWEsIEtwaVJlc2VhcmNoUmVxdWVzdFNjaGVtYSwgS3BpUmVzZWFyY2hSZXN1bHRTY2hlbWEgfSBmcm9tIFwiLi9zcmMva3BpLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlc2VhcmNoZWRLcGksIEtwaVJlc2VhcmNoUmVxdWVzdCwgS3BpUmVzZWFyY2hSZXN1bHQgfSBmcm9tIFwiLi9zcmMva3BpLnRzXCI7XG5leHBvcnQgeyBQcmVzZW50YXRpb25Nb2RlU2NoZW1hLCBHZW5lcmF0b3JSZXF1ZXN0U2NoZW1hLCBHZW5lcmF0ZWRDb2x1bW5TY2hlbWEsIEdlbmVyYXRlZE1ldHJpY1NjaGVtYSwgR2VuZXJhdG9yUGxhblNjaGVtYSwgUGxhbkdlbmVyYXRvckRhdGFSZXF1ZXN0U2NoZW1hLCBHZW5lcmF0ZWRTY2hlbWFTY2hlbWEsIFByb3Zpc2lvbkdlbmVyYXRvclNjaGVtYVJlcXVlc3RTY2hlbWEsIE1hdGVyaWFsaXplR2VuZXJhdG9yRGF0YVJlcXVlc3RTY2hlbWEsIE1hdGVyaWFsaXplZEdlbmVyYXRvckRhdGFTY2hlbWEsIENyZWF0ZUdlbmVyYXRvclByZXNlbnRhdGlvblJlcXVlc3RTY2hlbWEsIEdlbmVyYXRlZERhc2hib2FyZFNjaGVtYSwgR2VuZXJhdGVkR2VuaWVTcGFjZVNjaGVtYSwgR2VuZXJhdGVkQXNzZXRzU2NoZW1hIH0gZnJvbSBcIi4vc3JjL3dvcmtmbG93LnRzXCI7XG5leHBvcnQgdHlwZSB7IFByZXNlbnRhdGlvbk1vZGUsIEdlbmVyYXRvclJlcXVlc3QsIEdlbmVyYXRlZENvbHVtbiwgR2VuZXJhdGVkTWV0cmljLCBHZW5lcmF0b3JQbGFuLCBQbGFuR2VuZXJhdG9yRGF0YVJlcXVlc3QsIEdlbmVyYXRlZFNjaGVtYSwgUHJvdmlzaW9uR2VuZXJhdG9yU2NoZW1hUmVxdWVzdCwgTWF0ZXJpYWxpemVHZW5lcmF0b3JEYXRhUmVxdWVzdCwgTWF0ZXJpYWxpemVkR2VuZXJhdG9yRGF0YSwgQ3JlYXRlR2VuZXJhdG9yUHJlc2VudGF0aW9uUmVxdWVzdCwgR2VuZXJhdGVkRGFzaGJvYXJkLCBHZW5lcmF0ZWRHZW5pZVNwYWNlLCBHZW5lcmF0ZWRBc3NldHMgfSBmcm9tIFwiLi9zcmMvd29ya2Zsb3cudHNcIjtcbiJdfQ==
|
package/lib/src/workflow.js
CHANGED
|
@@ -5,26 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { BrandPackageSchema } from "./brand.js";
|
|
8
|
-
import { KpiResearchResultSchema, ResearchedKpiSchema } from "./kpi.js";
|
|
8
|
+
import { KpiResearchRequestSchema, KpiResearchResultSchema, ResearchedKpiSchema } from "./kpi.js";
|
|
9
9
|
const nonBlankString = z.string().trim().min(1);
|
|
10
10
|
const identifier = z.string().regex(/^[a-z][a-z0-9_]*$/, "Expected a lowercase SQL identifier.");
|
|
11
11
|
/** Presentation created after generated data is validated. */
|
|
12
12
|
export const PresentationModeSchema = z.enum(["dashboard", "genie"]);
|
|
13
13
|
/** Complete input for the governed generator workflow. */
|
|
14
|
-
export const GeneratorRequestSchema =
|
|
15
|
-
.
|
|
16
|
-
company: nonBlankString.max(200).describe("Company or brand represented by the demo."),
|
|
17
|
-
purpose: nonBlankString.max(200).describe("Short purpose used in schema and asset names."),
|
|
18
|
-
queries: z
|
|
19
|
-
.array(nonBlankString.max(500))
|
|
20
|
-
.min(1)
|
|
21
|
-
.max(10)
|
|
22
|
-
.describe("Business questions that shape KPI research and generated data."),
|
|
23
|
-
website: z
|
|
24
|
-
.string()
|
|
25
|
-
.url()
|
|
26
|
-
.optional()
|
|
27
|
-
.describe("Known company website for brand disambiguation."),
|
|
14
|
+
export const GeneratorRequestSchema = KpiResearchRequestSchema.extend({
|
|
15
|
+
website: z.string().url().optional().describe("Known company website for brand disambiguation."),
|
|
28
16
|
presentation: PresentationModeSchema.default("dashboard").describe("Dashboard with automatic companion Genie, or standalone Genie without a dashboard."),
|
|
29
17
|
rowCount: z
|
|
30
18
|
.number()
|
|
@@ -237,4 +225,4 @@ export const GeneratedAssetsSchema = z
|
|
|
237
225
|
}
|
|
238
226
|
})
|
|
239
227
|
.describe("Generated Databricks data and presentation assets.");
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV4RSxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsc0NBQXNDLENBQUMsQ0FBQztBQUVqRyw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBS3JFLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDO0tBQ3BDLE1BQU0sQ0FBQztJQUNOLE9BQU8sRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQywyQ0FBMkMsQ0FBQztJQUN0RixPQUFPLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsK0NBQStDLENBQUM7SUFDMUYsT0FBTyxFQUFFLENBQUM7U0FDUCxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QixHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ04sR0FBRyxDQUFDLEVBQUUsQ0FBQztTQUNQLFFBQVEsQ0FBQyxnRUFBZ0UsQ0FBQztJQUM3RSxP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RTtJQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNwRSxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1gsSUFBSSxFQUFFLFFBQVE7WUFDZCxPQUFPLEVBQUUsOERBQThEO1NBQ3hFLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDLENBQUM7S0FDRCxRQUFRLENBQUMsb0RBQW9ELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIGNvbnRyYWN0cyBmb3IgZ2VuZXJhdGVkIERhdGFicmlja3MgZGVtbyBhc3NldHMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBCcmFuZFBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiLi9icmFuZC50c1wiO1xuaW1wb3J0IHsgS3BpUmVzZWFyY2hSZXN1bHRTY2hlbWEsIFJlc2VhcmNoZWRLcGlTY2hlbWEgfSBmcm9tIFwiLi9rcGkudHNcIjtcblxuY29uc3Qgbm9uQmxhbmtTdHJpbmcgPSB6LnN0cmluZygpLnRyaW0oKS5taW4oMSk7XG5jb25zdCBpZGVudGlmaWVyID0gei5zdHJpbmcoKS5yZWdleCgvXlthLXpdW2EtejAtOV9dKiQvLCBcIkV4cGVjdGVkIGEgbG93ZXJjYXNlIFNRTCBpZGVudGlmaWVyLlwiKTtcblxuLyoqIFByZXNlbnRhdGlvbiBjcmVhdGVkIGFmdGVyIGdlbmVyYXRlZCBkYXRhIGlzIHZhbGlkYXRlZC4gKi9cbmV4cG9ydCBjb25zdCBQcmVzZW50YXRpb25Nb2RlU2NoZW1hID0gei5lbnVtKFtcImRhc2hib2FyZFwiLCBcImdlbmllXCJdKTtcblxuLyoqIFByZXNlbnRhdGlvbiBtb2RlLiAqL1xuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uTW9kZSA9IHouaW5mZXI8dHlwZW9mIFByZXNlbnRhdGlvbk1vZGVTY2hlbWE+O1xuXG4vKiogQ29tcGxldGUgaW5wdXQgZm9yIHRoZSBnb3Zlcm5lZCBnZW5lcmF0b3Igd29ya2Zsb3cuICovXG5leHBvcnQgY29uc3QgR2VuZXJhdG9yUmVxdWVzdFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgY29tcGFueTogbm9uQmxhbmtTdHJpbmcubWF4KDIwMCkuZGVzY3JpYmUoXCJDb21wYW55IG9yIGJyYW5kIHJlcHJlc2VudGVkIGJ5IHRoZSBkZW1vLlwiKSxcbiAgICBwdXJwb3NlOiBub25CbGFua1N0cmluZy5tYXgoMjAwKS5kZXNjcmliZShcIlNob3J0IHB1cnBvc2UgdXNlZCBpbiBzY2hlbWEgYW5kIGFzc2V0IG5hbWVzLlwiKSxcbiAgICBxdWVyaWVzOiB6XG4gICAgICAuYXJyYXkobm9uQmxhbmtTdHJpbmcubWF4KDUwMCkpXG4gICAgICAubWluKDEpXG4gICAgICAubWF4KDEwKVxuICAgICAgLmRlc2NyaWJlKFwiQnVzaW5lc3MgcXVlc3Rpb25zIHRoYXQgc2hhcGUgS1BJIHJlc2VhcmNoIGFuZCBnZW5lcmF0ZWQgZGF0YS5cIiksXG4gICAgd2Vic2l0ZTogelxuICAgICAgLnN0cmluZygpXG4gICAgICAudXJsKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJLbm93biBjb21wYW55IHdlYnNpdGUgZm9yIGJyYW5kIGRpc2FtYmlndWF0aW9uLlwiKSxcbiAgICBwcmVzZW50YXRpb246IFByZXNlbnRhdGlvbk1vZGVTY2hlbWEuZGVmYXVsdChcImRhc2hib2FyZFwiKS5kZXNjcmliZShcbiAgICAgIFwiRGFzaGJvYXJkIHdpdGggYXV0b21hdGljIGNvbXBhbmlvbiBHZW5pZSwgb3Igc3RhbmRhbG9uZSBHZW5pZSB3aXRob3V0IGEgZGFzaGJvYXJkLlwiLFxuICAgICksXG4gICAgcm93Q291bnQ6IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLmludCgpXG4gICAgICAubWluKDFfMDAwKVxuICAgICAgLm1heCgxMDBfMDAwKVxuICAgICAgLmRlZmF1bHQoNTBfMDAwKVxuICAgICAgLmRlc2NyaWJlKFwiUm93cyBnZW5lcmF0ZWQgaW4gdGhlIHByaW1hcnkgZmFjdCB0YWJsZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJSZXF1ZXN0IGZvciBhIHBlci11c2VyIERhdGFicmlja3MgZGVtbyBkYXRhIGVudmlyb25tZW50LlwiKTtcblxuLyoqIEdlbmVyYXRvciB3b3JrZmxvdyBpbnB1dCBhZnRlciBkZWZhdWx0cy4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyYXRvclJlcXVlc3QgPSB6Lm91dHB1dDx0eXBlb2YgR2VuZXJhdG9yUmVxdWVzdFNjaGVtYT47XG5cbi8qKiBTdXBwb3J0ZWQgZGV0ZXJtaW5pc3RpYyBjb2x1bW4gZ2VuZXJhdG9ycy4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmF0ZWRDb2x1bW5TY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcImdlbmVyYXRvclwiLCBbXG4gIHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG5hbWU6IGlkZW50aWZpZXIuZGVzY3JpYmUoXCJDb2x1bW4gbmFtZS5cIiksXG4gICAgICBnZW5lcmF0b3I6IHoubGl0ZXJhbChcImlkXCIpLFxuICAgICAgZGVzY3JpcHRpb246IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiQ29sdW1uIGJ1c2luZXNzIG1lYW5pbmcuXCIpLFxuICAgIH0pXG4gICAgLnN0cmljdCgpLFxuICB6XG4gICAgLm9iamVjdCh7XG4gICAgICBuYW1lOiBpZGVudGlmaWVyLmRlc2NyaWJlKFwiQ29sdW1uIG5hbWUuXCIpLFxuICAgICAgZ2VuZXJhdG9yOiB6LmxpdGVyYWwoXCJkYXRlXCIpLFxuICAgICAgZGVzY3JpcHRpb246IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiQ29sdW1uIGJ1c2luZXNzIG1lYW5pbmcuXCIpLFxuICAgICAgZGF5czogei5udW1iZXIoKS5pbnQoKS5taW4oMzApLm1heCgxXzA5NSkuZGVzY3JpYmUoXCJHZW5lcmF0ZWQgaGlzdG9yeSB3aW5kb3cgaW4gZGF5cy5cIiksXG4gICAgfSlcbiAgICAuc3RyaWN0KCksXG4gIHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG5hbWU6IGlkZW50aWZpZXIuZGVzY3JpYmUoXCJDb2x1bW4gbmFtZS5cIiksXG4gICAgICBnZW5lcmF0b3I6IHoubGl0ZXJhbChcImNhdGVnb3J5XCIpLFxuICAgICAgZGVzY3JpcHRpb246IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiQ29sdW1uIGJ1c2luZXNzIG1lYW5pbmcuXCIpLFxuICAgICAgdmFsdWVzOiB6LmFycmF5KG5vbkJsYW5rU3RyaW5nLm1heCg4MCkpLm1pbigyKS5tYXgoMTIpLmRlc2NyaWJlKFwiU2tld2VkIGNhdGVnb3J5IHZhbHVlcy5cIiksXG4gICAgfSlcbiAgICAuc3RyaWN0KCksXG4gIHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG5hbWU6IGlkZW50aWZpZXIuZGVzY3JpYmUoXCJDb2x1bW4gbmFtZS5cIiksXG4gICAgICBnZW5lcmF0b3I6IHoubGl0ZXJhbChcIm51bWJlclwiKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIkNvbHVtbiBidXNpbmVzcyBtZWFuaW5nLlwiKSxcbiAgICAgIG1pbmltdW06IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJNaW5pbXVtIGdlbmVyYXRlZCB2YWx1ZS5cIiksXG4gICAgICBtYXhpbXVtOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiTWF4aW11bSBnZW5lcmF0ZWQgdmFsdWUuXCIpLFxuICAgICAgZGVjaW1hbHM6IHoubnVtYmVyKCkuaW50KCkubWluKDApLm1heCg0KS5kZWZhdWx0KDIpLmRlc2NyaWJlKFwiRGVjaW1hbCBwcmVjaXNpb24uXCIpLFxuICAgIH0pXG4gICAgLnN0cmljdCgpLFxuICB6XG4gICAgLm9iamVjdCh7XG4gICAgICBuYW1lOiBpZGVudGlmaWVyLmRlc2NyaWJlKFwiQ29sdW1uIG5hbWUuXCIpLFxuICAgICAgZ2VuZXJhdG9yOiB6LmxpdGVyYWwoXCJib29sZWFuXCIpLFxuICAgICAgZGVzY3JpcHRpb246IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiQ29sdW1uIGJ1c2luZXNzIG1lYW5pbmcuXCIpLFxuICAgICAgdHJ1ZVByb2JhYmlsaXR5OiB6Lm51bWJlcigpLm1pbigwLjAxKS5tYXgoMC45OSkuZGVzY3JpYmUoXCJTaGFyZSBvZiB0cnVlIHJvd3MuXCIpLFxuICAgIH0pXG4gICAgLnN0cmljdCgpLFxuXSk7XG5cbi8qKiBEZXRlcm1pbmlzdGljIGdlbmVyYXRlZCBjb2x1bW4gc3BlY2lmaWNhdGlvbi4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyYXRlZENvbHVtbiA9IHouaW5mZXI8dHlwZW9mIEdlbmVyYXRlZENvbHVtblNjaGVtYT47XG5cbi8qKiBLUEkgYmluZGluZyBjb21waWxlZCBpbnRvIHZhbGlkYXRpb24gU1FMIGFuZCBkYXNoYm9hcmQgbWVhc3VyZXMuICovXG5leHBvcnQgY29uc3QgR2VuZXJhdGVkTWV0cmljU2NoZW1hID0gUmVzZWFyY2hlZEtwaVNjaGVtYS5leHRlbmQoe1xuICBhZ2dyZWdhdGlvbjogelxuICAgIC5lbnVtKFtcImNvdW50XCIsIFwic3VtXCIsIFwiYXZlcmFnZVwiXSlcbiAgICAuZGVzY3JpYmUoXCJTYWZlIGFnZ3JlZ2F0ZSBjb21waWxlZCBieSB0aGUgZ2VuZXJhdG9yLlwiKSxcbiAgY29sdW1uOiBpZGVudGlmaWVyLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJOdW1lcmljIHNvdXJjZSBjb2x1bW47IG9taXR0ZWQgZm9yIGNvdW50LlwiKSxcbn0pLnN0cmljdCgpO1xuXG4vKiogS1BJIGJpbmRpbmcuICovXG5leHBvcnQgdHlwZSBHZW5lcmF0ZWRNZXRyaWMgPSB6LmluZmVyPHR5cGVvZiBHZW5lcmF0ZWRNZXRyaWNTY2hlbWE+O1xuXG4vKiogU3RydWN0dXJlZCBwbGFuIGNvbXBpbGVkIGludG8gU1FMIGFuZCBwcmVzZW50YXRpb24gYXNzZXRzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRvclBsYW5TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHRhYmxlOiBpZGVudGlmaWVyLmRlc2NyaWJlKFwiUHJpbWFyeSBnZW5lcmF0ZWQgRGVsdGEgdGFibGUgbmFtZS5cIiksXG4gICAgcm93Q291bnQ6IHoubnVtYmVyKCkuaW50KCkubWluKDFfMDAwKS5tYXgoMTAwXzAwMCkuZGVzY3JpYmUoXCJSb3dzIHRvIGdlbmVyYXRlLlwiKSxcbiAgICBjb2x1bW5zOiB6XG4gICAgICAuYXJyYXkoR2VuZXJhdGVkQ29sdW1uU2NoZW1hKVxuICAgICAgLm1pbig0KVxuICAgICAgLm1heCgxNilcbiAgICAgIC5kZXNjcmliZShcIlR5cGVkIGRldGVybWluaXN0aWMgY29sdW1uIGdlbmVyYXRvcnMuXCIpLFxuICAgIG1ldHJpY3M6IHouYXJyYXkoR2VuZXJhdGVkTWV0cmljU2NoZW1hKS5taW4oMSkubWF4KDYpLmRlc2NyaWJlKFwiRGFzaGJvYXJkIGFuZCBHZW5pZSBLUElzLlwiKSxcbiAgICBzdG9yeTogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJCdXNpbmVzcyBhbm9tYWx5IGFuZCBpbXBhY3QgcmVwcmVzZW50ZWQgaW4gdGhlIGRhdGEuXCIpLFxuICAgIHNhbXBsZVF1ZXN0aW9uczogelxuICAgICAgLmFycmF5KG5vbkJsYW5rU3RyaW5nLm1heCgzMDApKVxuICAgICAgLm1pbigzKVxuICAgICAgLm1heCg4KVxuICAgICAgLmRlc2NyaWJlKFwiUXVlc3Rpb25zIHN1cHBvcnRlZCBieSB0aGUgZ2VuZXJhdGVkIHRhYmxlLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5zdXBlclJlZmluZSgodmFsdWUsIGN0eCkgPT4ge1xuICAgIGNvbnN0IG5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBbaW5kZXgsIGNvbHVtbl0gb2YgdmFsdWUuY29sdW1ucy5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChuYW1lcy5oYXMoY29sdW1uLm5hbWUpKSB7XG4gICAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgICBwYXRoOiBbXCJjb2x1bW5zXCIsIGluZGV4LCBcIm5hbWVcIl0sXG4gICAgICAgICAgbWVzc2FnZTogXCJHZW5lcmF0ZWQgY29sdW1uIG5hbWVzIG11c3QgYmUgdW5pcXVlLlwiLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG5hbWVzLmFkZChjb2x1bW4ubmFtZSk7XG4gICAgfVxuICAgIGlmICghdmFsdWUuY29sdW1ucy5zb21lKCh7IGdlbmVyYXRvciB9KSA9PiBnZW5lcmF0b3IgPT09IFwiaWRcIikpIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7IGNvZGU6IFwiY3VzdG9tXCIsIHBhdGg6IFtcImNvbHVtbnNcIl0sIG1lc3NhZ2U6IFwiQW4gaWQgY29sdW1uIGlzIHJlcXVpcmVkLlwiIH0pO1xuICAgIH1cbiAgICBpZiAoIXZhbHVlLmNvbHVtbnMuc29tZSgoeyBnZW5lcmF0b3IgfSkgPT4gZ2VuZXJhdG9yID09PSBcImRhdGVcIikpIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7IGNvZGU6IFwiY3VzdG9tXCIsIHBhdGg6IFtcImNvbHVtbnNcIl0sIG1lc3NhZ2U6IFwiQSBkYXRlIGNvbHVtbiBpcyByZXF1aXJlZC5cIiB9KTtcbiAgICB9XG4gICAgaWYgKCF2YWx1ZS5jb2x1bW5zLnNvbWUoKHsgZ2VuZXJhdG9yIH0pID0+IGdlbmVyYXRvciA9PT0gXCJjYXRlZ29yeVwiKSkge1xuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgcGF0aDogW1wiY29sdW1uc1wiXSxcbiAgICAgICAgbWVzc2FnZTogXCJBIGNhdGVnb3J5IGNvbHVtbiBpcyByZXF1aXJlZC5cIixcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBudW1lcmljID0gbmV3IFNldChcbiAgICAgIHZhbHVlLmNvbHVtbnMuZmlsdGVyKCh7IGdlbmVyYXRvciB9KSA9PiBnZW5lcmF0b3IgPT09IFwibnVtYmVyXCIpLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpLFxuICAgICk7XG4gICAgZm9yIChjb25zdCBbaW5kZXgsIG1ldHJpY10gb2YgdmFsdWUubWV0cmljcy5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChtZXRyaWMuYWdncmVnYXRpb24gIT09IFwiY291bnRcIiAmJiAoIW1ldHJpYy5jb2x1bW4gfHwgIW51bWVyaWMuaGFzKG1ldHJpYy5jb2x1bW4pKSkge1xuICAgICAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgICAgcGF0aDogW1wibWV0cmljc1wiLCBpbmRleCwgXCJjb2x1bW5cIl0sXG4gICAgICAgICAgbWVzc2FnZTogXCJTdW0gYW5kIGF2ZXJhZ2UgbWV0cmljcyByZXF1aXJlIGEgZ2VuZXJhdGVkIG51bWVyaWMgY29sdW1uLlwiLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIC5kZXNjcmliZShcIlZhbGlkYXRlZCBwbGFuIGZvciBkZXRlcm1pbmlzdGljIHN5bnRoZXRpYyBkYXRhIGFuZCBhbmFseXRpY3MgYXNzZXRzLlwiKTtcblxuLyoqIFN0cnVjdHVyZWQgZ2VuZXJhdG9yIHBsYW4uICovXG5leHBvcnQgdHlwZSBHZW5lcmF0b3JQbGFuID0gei5pbmZlcjx0eXBlb2YgR2VuZXJhdG9yUGxhblNjaGVtYT47XG5cbi8qKiBJbnB1dCBmb3IgdGhlIHN0YW5kYWxvbmUgc3RydWN0dXJlZCBkYXRhLXBsYW5uaW5nIHRvb2wuICovXG5leHBvcnQgY29uc3QgUGxhbkdlbmVyYXRvckRhdGFSZXF1ZXN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICByZXF1ZXN0OiBHZW5lcmF0b3JSZXF1ZXN0U2NoZW1hLFxuICAgIGJyYW5kOiBCcmFuZFBhY2thZ2VTY2hlbWEsXG4gICAga3BpUmVzZWFyY2g6IEtwaVJlc2VhcmNoUmVzdWx0U2NoZW1hLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiSW5wdXRzIG5lZWRlZCB0byBidWlsZCBhIHR5cGVkIGdlbmVyYXRvciBwbGFuLlwiKTtcblxuLyoqIElucHV0IGZvciB0aGUgc3RhbmRhbG9uZSBzdHJ1Y3R1cmVkIGRhdGEtcGxhbm5pbmcgdG9vbC4gKi9cbmV4cG9ydCB0eXBlIFBsYW5HZW5lcmF0b3JEYXRhUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIFBsYW5HZW5lcmF0b3JEYXRhUmVxdWVzdFNjaGVtYT47XG5cbi8qKiBMb2NhdGlvbiBhbmQgdHJ1c3RlZCBpZGVudGl0eSBmb3Igb25lIGdlbmVyYXRlZCBzY2hlbWEuICovXG5leHBvcnQgY29uc3QgR2VuZXJhdGVkU2NoZW1hU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBjYXRhbG9nOiBpZGVudGlmaWVyLmRlc2NyaWJlKFwiQ29uZmlndXJlZCBVbml0eSBDYXRhbG9nLlwiKSxcbiAgICBzY2hlbWE6IGlkZW50aWZpZXIuZGVzY3JpYmUoXCJQZXItdXNlciBnZW5lcmF0ZWQgc2NoZW1hLlwiKSxcbiAgICBmdWxsTmFtZTogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJRdW90ZWQtc2FmZSBjYXRhbG9nLnNjaGVtYSBkaXNwbGF5IG5hbWUuXCIpLFxuICAgIHByaW5jaXBhbDogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJUcnVzdGVkIE9CTyBEYXRhYnJpY2tzIHVzZXIgbmFtZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJQcm92aXNpb25lZCBwZXItdXNlciBVbml0eSBDYXRhbG9nIHNjaGVtYS5cIik7XG5cbi8qKiBQcm92aXNpb25lZCBnZW5lcmF0ZWQgc2NoZW1hLiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJhdGVkU2NoZW1hID0gei5pbmZlcjx0eXBlb2YgR2VuZXJhdGVkU2NoZW1hU2NoZW1hPjtcblxuLyoqIElucHV0IGZvciBwZXItdXNlciBzY2hlbWEgcHJvdmlzaW9uaW5nLiAqL1xuZXhwb3J0IGNvbnN0IFByb3Zpc2lvbkdlbmVyYXRvclNjaGVtYVJlcXVlc3RTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHJlcXVlc3Q6IEdlbmVyYXRvclJlcXVlc3RTY2hlbWEucGljayh7IGNvbXBhbnk6IHRydWUsIHB1cnBvc2U6IHRydWUgfSksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJSZXF1ZXN0IHRvIHByb3Zpc2lvbiB0aGUgYWN0aXZlIHVzZXIncyBnZW5lcmF0ZWQgc2NoZW1hLlwiKTtcblxuLyoqIElucHV0IGZvciBwZXItdXNlciBzY2hlbWEgcHJvdmlzaW9uaW5nLiAqL1xuZXhwb3J0IHR5cGUgUHJvdmlzaW9uR2VuZXJhdG9yU2NoZW1hUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIFByb3Zpc2lvbkdlbmVyYXRvclNjaGVtYVJlcXVlc3RTY2hlbWE+O1xuXG4vKiogSW5wdXQgZm9yIGdlbmVyYXRlZCBkYXRhIG1hdGVyaWFsaXphdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBNYXRlcmlhbGl6ZUdlbmVyYXRvckRhdGFSZXF1ZXN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBsb2NhdGlvbjogR2VuZXJhdGVkU2NoZW1hU2NoZW1hLFxuICAgIHBsYW46IEdlbmVyYXRvclBsYW5TY2hlbWEsXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJSZXF1ZXN0IHRvIG1hdGVyaWFsaXplIGFuZCB2YWxpZGF0ZSBnZW5lcmF0ZWQgRGVsdGEgZGF0YS5cIik7XG5cbi8qKiBJbnB1dCBmb3IgZ2VuZXJhdGVkIGRhdGEgbWF0ZXJpYWxpemF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTWF0ZXJpYWxpemVHZW5lcmF0b3JEYXRhUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIE1hdGVyaWFsaXplR2VuZXJhdG9yRGF0YVJlcXVlc3RTY2hlbWE+O1xuXG4vKiogQ3JlYXRlZCB0YWJsZXMgYW5kIEtQSSB2YWxpZGF0aW9uIHN0YXRlbWVudHMuICovXG5leHBvcnQgY29uc3QgTWF0ZXJpYWxpemVkR2VuZXJhdG9yRGF0YVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdGFibGVzOiB6LmFycmF5KG5vbkJsYW5rU3RyaW5nKS5taW4oMSkuZGVzY3JpYmUoXCJDcmVhdGVkIGZ1bGx5IHF1YWxpZmllZCBEZWx0YSB0YWJsZXMuXCIpLFxuICAgIHZhbGlkYXRpb25TdGF0ZW1lbnRzOiB6XG4gICAgICAucmVjb3JkKGlkZW50aWZpZXIsIG5vbkJsYW5rU3RyaW5nKVxuICAgICAgLmRlc2NyaWJlKFwiU3RhdGVtZW50IElEcyBrZXllZCBieSB2YWxpZGF0ZWQgS1BJIG5hbWUuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiTWF0ZXJpYWxpemVkIGFuZCB2YWxpZGF0ZWQgZ2VuZXJhdGVkIGRhdGEuXCIpO1xuXG4vKiogQ3JlYXRlZCB0YWJsZXMgYW5kIEtQSSB2YWxpZGF0aW9uIHN0YXRlbWVudHMuICovXG5leHBvcnQgdHlwZSBNYXRlcmlhbGl6ZWRHZW5lcmF0b3JEYXRhID0gei5pbmZlcjx0eXBlb2YgTWF0ZXJpYWxpemVkR2VuZXJhdG9yRGF0YVNjaGVtYT47XG5cbi8qKiBJbnB1dCBzaGFyZWQgYnkgZGFzaGJvYXJkIGFuZCBzdGFuZGFsb25lIEdlbmllIGNyZWF0aW9uIHRvb2xzLiAqL1xuZXhwb3J0IGNvbnN0IENyZWF0ZUdlbmVyYXRvclByZXNlbnRhdGlvblJlcXVlc3RTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHJlcXVlc3Q6IEdlbmVyYXRvclJlcXVlc3RTY2hlbWEucGljayh7XG4gICAgICBjb21wYW55OiB0cnVlLFxuICAgICAgcHVycG9zZTogdHJ1ZSxcbiAgICB9KSxcbiAgICBsb2NhdGlvbjogR2VuZXJhdGVkU2NoZW1hU2NoZW1hLFxuICAgIHBsYW46IEdlbmVyYXRvclBsYW5TY2hlbWEsXG4gICAgYnJhbmQ6IEJyYW5kUGFja2FnZVNjaGVtYSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlJlcXVlc3QgdG8gY3JlYXRlIGEgcHJlc2VudGF0aW9uIGFzc2V0IG92ZXIgZ2VuZXJhdGVkIGRhdGEuXCIpO1xuXG4vKiogSW5wdXQgc2hhcmVkIGJ5IGRhc2hib2FyZCBhbmQgc3RhbmRhbG9uZSBHZW5pZSBjcmVhdGlvbiB0b29scy4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZUdlbmVyYXRvclByZXNlbnRhdGlvblJlcXVlc3QgPSB6LmluZmVyPFxuICB0eXBlb2YgQ3JlYXRlR2VuZXJhdG9yUHJlc2VudGF0aW9uUmVxdWVzdFNjaGVtYVxuPjtcblxuLyoqIERhc2hib2FyZCBvdXRwdXQgd2l0aCBpdHMgYXV0b21hdGljIGNvbXBhbmlvbiBHZW5pZSBBZ2VudC4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmF0ZWREYXNoYm9hcmRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGRhc2hib2FyZElkOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIkNyZWF0ZWQgTGFrZXZpZXcgZGFzaGJvYXJkIElELlwiKSxcbiAgICBwYXRoOiBub25CbGFua1N0cmluZy5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV29ya3NwYWNlIHBhdGgsIHdoZW4gcmV0dXJuZWQuXCIpLFxuICAgIGNvbXBhbmlvbkdlbmllOiB6LmxpdGVyYWwoXCJBVVRPXCIpLmRlc2NyaWJlKFwiRGFzaGJvYXJkLXB1Ymxpc2hlZCBjb21wYW5pb24gR2VuaWUgbW9kZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuLyoqIFB1Ymxpc2hlZCBkYXNoYm9hcmQgd2l0aCBhdXRvbWF0aWMgY29tcGFuaW9uIEdlbmllLiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJhdGVkRGFzaGJvYXJkID0gei5pbmZlcjx0eXBlb2YgR2VuZXJhdGVkRGFzaGJvYXJkU2NoZW1hPjtcblxuLyoqIFN0YW5kYWxvbmUgR2VuaWUgb3V0cHV0IHVzZWQgb25seSB3aGVuIG5vIGRhc2hib2FyZCBpcyByZXF1ZXN0ZWQuICovXG5leHBvcnQgY29uc3QgR2VuZXJhdGVkR2VuaWVTcGFjZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgc3BhY2VJZDogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJDcmVhdGVkIHN0YW5kYWxvbmUgR2VuaWUgc3BhY2UgSUQuXCIpLFxuICAgIHRpdGxlOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIkdlbmllIHNwYWNlIHRpdGxlLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG4vKiogQ3JlYXRlZCBzdGFuZGFsb25lIEdlbmllIHNwYWNlLiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJhdGVkR2VuaWVTcGFjZSA9IHouaW5mZXI8dHlwZW9mIEdlbmVyYXRlZEdlbmllU3BhY2VTY2hlbWE+O1xuXG4vKiogVGVybWluYWwgd29ya2Zsb3cgb3V0cHV0LiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZEFzc2V0c1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcmVxdWVzdDogR2VuZXJhdG9yUmVxdWVzdFNjaGVtYSxcbiAgICBzY2hlbWE6IEdlbmVyYXRlZFNjaGVtYVNjaGVtYSxcbiAgICB0YWJsZXM6IHouYXJyYXkobm9uQmxhbmtTdHJpbmcpLm1pbigxKS5kZXNjcmliZShcIkNyZWF0ZWQgZnVsbHkgcXVhbGlmaWVkIERlbHRhIHRhYmxlcy5cIiksXG4gICAgYnJhbmQ6IEJyYW5kUGFja2FnZVNjaGVtYSxcbiAgICBrcGlSZXNlYXJjaDogS3BpUmVzZWFyY2hSZXN1bHRTY2hlbWEsXG4gICAgcGxhbjogR2VuZXJhdG9yUGxhblNjaGVtYSxcbiAgICBkYXNoYm9hcmQ6IEdlbmVyYXRlZERhc2hib2FyZFNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGdlbmllOiBHZW5lcmF0ZWRHZW5pZVNwYWNlU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuc3VwZXJSZWZpbmUoKHZhbHVlLCBjdHgpID0+IHtcbiAgICBpZiAoKHZhbHVlLmRhc2hib2FyZCA9PT0gdW5kZWZpbmVkKSA9PT0gKHZhbHVlLmdlbmllID09PSB1bmRlZmluZWQpKSB7XG4gICAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgICBjb2RlOiBcImN1c3RvbVwiLFxuICAgICAgICBtZXNzYWdlOiBcIkV4YWN0bHkgb25lIGRhc2hib2FyZCBvciBzdGFuZGFsb25lIEdlbmllIHNwYWNlIGlzIHJlcXVpcmVkLlwiLFxuICAgICAgfSk7XG4gICAgfVxuICB9KVxuICAuZGVzY3JpYmUoXCJHZW5lcmF0ZWQgRGF0YWJyaWNrcyBkYXRhIGFuZCBwcmVzZW50YXRpb24gYXNzZXRzLlwiKTtcblxuLyoqIFRlcm1pbmFsIGdlbmVyYXRvciB3b3JrZmxvdyBvdXRwdXQuICovXG5leHBvcnQgdHlwZSBHZW5lcmF0ZWRBc3NldHMgPSB6LmluZmVyPHR5cGVvZiBHZW5lcmF0ZWRBc3NldHNTY2hlbWE+O1xuIl19
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsRyxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsc0NBQXNDLENBQUMsQ0FBQztBQUVqRyw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBS3JFLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUM7SUFDcEUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsaURBQWlELENBQUM7SUFDaEcsWUFBWSxFQUFFLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQ2hFLG9GQUFvRixDQUNyRjtJQUNELFFBQVEsRUFBRSxDQUFDO1NBQ1IsTUFBTSxFQUFFO1NBQ1IsR0FBRyxFQUFFO1NBQ0wsR0FBRyxDQUFDLEtBQUssQ0FBQztTQUNWLEdBQUcsQ0FBQyxPQUFPLENBQUM7U0FDWixPQUFPLENBQUMsTUFBTSxDQUFDO1NBQ2YsUUFBUSxDQUFDLDJDQUEyQyxDQUFDO0NBQ3pELENBQUM7S0FDQyxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsMERBQTBELENBQUMsQ0FBQztBQUt4RSxpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRTtJQUNyRSxDQUFDO1NBQ0UsTUFBTSxDQUFDO1FBQ04sSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQ3pDLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMxQixXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQztLQUNqRSxDQUFDO1NBQ0QsTUFBTSxFQUFFO0lBQ1gsQ0FBQztTQUNFLE1BQU0sQ0FBQztRQUNOLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUN6QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDNUIsV0FBVyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUM7UUFDaEUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQztLQUN4RixDQUFDO1NBQ0QsTUFBTSxFQUFFO0lBQ1gsQ0FBQztTQUNFLE1BQU0sQ0FBQztRQUNOLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUN6QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDaEMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUM7UUFDaEUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO0tBQzNGLENBQUM7U0FDRCxNQUFNLEVBQUU7SUFDWCxDQUFDO1NBQ0UsTUFBTSxDQUFDO1FBQ04sSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQ3pDLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUM5QixXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQztRQUNoRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQztRQUN4RCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQztRQUN4RCxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztLQUNuRixDQUFDO1NBQ0QsTUFBTSxFQUFFO0lBQ1gsQ0FBQztTQUNFLE1BQU0sQ0FBQztRQUNOLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUN6QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDL0IsV0FBVyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUM7UUFDaEUsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztLQUNoRixDQUFDO1NBQ0QsTUFBTSxFQUFFO0NBQ1osQ0FBQyxDQUFDO0FBS0gsdUVBQXVFO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztJQUM5RCxXQUFXLEVBQUUsQ0FBQztTQUNYLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDakMsUUFBUSxDQUFDLDJDQUEyQyxDQUFDO0lBQ3hELE1BQU0sRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDJDQUEyQyxDQUFDO0NBQ3BGLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUtaLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDO0tBQ2pDLE1BQU0sQ0FBQztJQUNOLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLHFDQUFxQyxDQUFDO0lBQ2pFLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7SUFDaEYsT0FBTyxFQUFFLENBQUM7U0FDUCxLQUFLLENBQUMscUJBQXFCLENBQUM7U0FDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNOLEdBQUcsQ0FBQyxFQUFFLENBQUM7U0FDUCxRQUFRLENBQUMsd0NBQXdDLENBQUM7SUFDckQsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQztJQUMzRixLQUFLLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxzREFBc0QsQ0FBQztJQUN0RixlQUFlLEVBQUUsQ0FBQztTQUNmLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDTixHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ04sUUFBUSxDQUFDLDZDQUE2QyxDQUFDO0NBQzNELENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7SUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNoQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3RELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQixHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUNYLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDO2dCQUNoQyxPQUFPLEVBQUUsd0NBQXdDO2FBQ2xELENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDL0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDakUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDckUsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNYLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxnQ0FBZ0M7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUNyQixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDeEYsQ0FBQztJQUNGLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDdEQsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0RixHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUNYLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsNkRBQTZEO2FBQ3ZFLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0tBQ0QsUUFBUSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7QUFLckYsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLENBQUM7S0FDNUMsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLHNCQUFzQjtJQUMvQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLFdBQVcsRUFBRSx1QkFBdUI7Q0FDckMsQ0FBQztLQUNELE1BQU0sRUFBRTtLQUNSLFFBQVEsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0FBSzlELDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDO0tBQ25DLE1BQU0sQ0FBQztJQUNOLE9BQU8sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDO0lBQ3pELE1BQU0sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDO0lBQ3pELFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLDBDQUEwQyxDQUFDO0lBQzdFLFNBQVMsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFDO0NBQ3hFLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsNENBQTRDLENBQUMsQ0FBQztBQUsxRCw4Q0FBOEM7QUFDOUMsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsQ0FBQztLQUNuRCxNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7Q0FDdkUsQ0FBQztLQUNELE1BQU0sRUFBRTtLQUNSLFFBQVEsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO0FBS3hFLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxDQUFDO0tBQ25ELE1BQU0sQ0FBQztJQUNOLFFBQVEsRUFBRSxxQkFBcUI7SUFDL0IsSUFBSSxFQUFFLG1CQUFtQjtDQUMxQixDQUFDO0tBQ0QsTUFBTSxFQUFFO0tBQ1IsUUFBUSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7QUFLekUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUM7S0FDN0MsTUFBTSxDQUFDO0lBQ04sTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUMsQ0FBQztJQUN4RixvQkFBb0IsRUFBRSxDQUFDO1NBQ3BCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDO1NBQ2xDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQztDQUMxRCxDQUFDO0tBQ0QsTUFBTSxFQUFFO0tBQ1IsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFLMUQscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQUM7S0FDdEQsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQztRQUNuQyxPQUFPLEVBQUUsSUFBSTtRQUNiLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQztJQUNGLFFBQVEsRUFBRSxxQkFBcUI7SUFDL0IsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixLQUFLLEVBQUUsa0JBQWtCO0NBQzFCLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsNkRBQTZELENBQUMsQ0FBQztBQU8zRSxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQztLQUN0QyxNQUFNLENBQUM7SUFDTixXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUN0RSxJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUMxRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsMkNBQTJDLENBQUM7Q0FDeEYsQ0FBQztLQUNELE1BQU0sRUFBRSxDQUFDO0FBS1osd0VBQXdFO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUM7S0FDdkMsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsb0NBQW9DLENBQUM7SUFDdEUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7Q0FDckQsQ0FBQztLQUNELE1BQU0sRUFBRSxDQUFDO0FBS1osZ0NBQWdDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUM7S0FDbkMsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLHNCQUFzQjtJQUMvQixNQUFNLEVBQUUscUJBQXFCO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsdUNBQXVDLENBQUM7SUFDeEYsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixXQUFXLEVBQUUsdUJBQXVCO0lBQ3BDLElBQUksRUFBRSxtQkFBbUI7SUFDekIsU0FBUyxFQUFFLHdCQUF3QixDQUFDLFFBQVEsRUFBRTtJQUM5QyxLQUFLLEVBQUUseUJBQXlCLENBQUMsUUFBUSxFQUFFO0NBQzVDLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7SUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDcEUsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNYLElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFLDhEQUE4RDtTQUN4RSxDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0tBQ0QsUUFBUSxDQUFDLG9EQUFvRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJyb3dzZXItc2FmZSBjb250cmFjdHMgZm9yIGdlbmVyYXRlZCBEYXRhYnJpY2tzIGRlbW8gYXNzZXRzLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgQnJhbmRQYWNrYWdlU2NoZW1hIH0gZnJvbSBcIi4vYnJhbmQudHNcIjtcbmltcG9ydCB7IEtwaVJlc2VhcmNoUmVxdWVzdFNjaGVtYSwgS3BpUmVzZWFyY2hSZXN1bHRTY2hlbWEsIFJlc2VhcmNoZWRLcGlTY2hlbWEgfSBmcm9tIFwiLi9rcGkudHNcIjtcblxuY29uc3Qgbm9uQmxhbmtTdHJpbmcgPSB6LnN0cmluZygpLnRyaW0oKS5taW4oMSk7XG5jb25zdCBpZGVudGlmaWVyID0gei5zdHJpbmcoKS5yZWdleCgvXlthLXpdW2EtejAtOV9dKiQvLCBcIkV4cGVjdGVkIGEgbG93ZXJjYXNlIFNRTCBpZGVudGlmaWVyLlwiKTtcblxuLyoqIFByZXNlbnRhdGlvbiBjcmVhdGVkIGFmdGVyIGdlbmVyYXRlZCBkYXRhIGlzIHZhbGlkYXRlZC4gKi9cbmV4cG9ydCBjb25zdCBQcmVzZW50YXRpb25Nb2RlU2NoZW1hID0gei5lbnVtKFtcImRhc2hib2FyZFwiLCBcImdlbmllXCJdKTtcblxuLyoqIFByZXNlbnRhdGlvbiBtb2RlLiAqL1xuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uTW9kZSA9IHouaW5mZXI8dHlwZW9mIFByZXNlbnRhdGlvbk1vZGVTY2hlbWE+O1xuXG4vKiogQ29tcGxldGUgaW5wdXQgZm9yIHRoZSBnb3Zlcm5lZCBnZW5lcmF0b3Igd29ya2Zsb3cuICovXG5leHBvcnQgY29uc3QgR2VuZXJhdG9yUmVxdWVzdFNjaGVtYSA9IEtwaVJlc2VhcmNoUmVxdWVzdFNjaGVtYS5leHRlbmQoe1xuICB3ZWJzaXRlOiB6LnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJLbm93biBjb21wYW55IHdlYnNpdGUgZm9yIGJyYW5kIGRpc2FtYmlndWF0aW9uLlwiKSxcbiAgcHJlc2VudGF0aW9uOiBQcmVzZW50YXRpb25Nb2RlU2NoZW1hLmRlZmF1bHQoXCJkYXNoYm9hcmRcIikuZGVzY3JpYmUoXG4gICAgXCJEYXNoYm9hcmQgd2l0aCBhdXRvbWF0aWMgY29tcGFuaW9uIEdlbmllLCBvciBzdGFuZGFsb25lIEdlbmllIHdpdGhvdXQgYSBkYXNoYm9hcmQuXCIsXG4gICksXG4gIHJvd0NvdW50OiB6XG4gICAgLm51bWJlcigpXG4gICAgLmludCgpXG4gICAgLm1pbigxXzAwMClcbiAgICAubWF4KDEwMF8wMDApXG4gICAgLmRlZmF1bHQoNTBfMDAwKVxuICAgIC5kZXNjcmliZShcIlJvd3MgZ2VuZXJhdGVkIGluIHRoZSBwcmltYXJ5IGZhY3QgdGFibGUuXCIpLFxufSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlJlcXVlc3QgZm9yIGEgcGVyLXVzZXIgRGF0YWJyaWNrcyBkZW1vIGRhdGEgZW52aXJvbm1lbnQuXCIpO1xuXG4vKiogR2VuZXJhdG9yIHdvcmtmbG93IGlucHV0IGFmdGVyIGRlZmF1bHRzLiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJhdG9yUmVxdWVzdCA9IHoub3V0cHV0PHR5cGVvZiBHZW5lcmF0b3JSZXF1ZXN0U2NoZW1hPjtcblxuLyoqIFN1cHBvcnRlZCBkZXRlcm1pbmlzdGljIGNvbHVtbiBnZW5lcmF0b3JzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZENvbHVtblNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwiZ2VuZXJhdG9yXCIsIFtcbiAgelxuICAgIC5vYmplY3Qoe1xuICAgICAgbmFtZTogaWRlbnRpZmllci5kZXNjcmliZShcIkNvbHVtbiBuYW1lLlwiKSxcbiAgICAgIGdlbmVyYXRvcjogei5saXRlcmFsKFwiaWRcIiksXG4gICAgICBkZXNjcmlwdGlvbjogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJDb2x1bW4gYnVzaW5lc3MgbWVhbmluZy5cIiksXG4gICAgfSlcbiAgICAuc3RyaWN0KCksXG4gIHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG5hbWU6IGlkZW50aWZpZXIuZGVzY3JpYmUoXCJDb2x1bW4gbmFtZS5cIiksXG4gICAgICBnZW5lcmF0b3I6IHoubGl0ZXJhbChcImRhdGVcIiksXG4gICAgICBkZXNjcmlwdGlvbjogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJDb2x1bW4gYnVzaW5lc3MgbWVhbmluZy5cIiksXG4gICAgICBkYXlzOiB6Lm51bWJlcigpLmludCgpLm1pbigzMCkubWF4KDFfMDk1KS5kZXNjcmliZShcIkdlbmVyYXRlZCBoaXN0b3J5IHdpbmRvdyBpbiBkYXlzLlwiKSxcbiAgICB9KVxuICAgIC5zdHJpY3QoKSxcbiAgelxuICAgIC5vYmplY3Qoe1xuICAgICAgbmFtZTogaWRlbnRpZmllci5kZXNjcmliZShcIkNvbHVtbiBuYW1lLlwiKSxcbiAgICAgIGdlbmVyYXRvcjogei5saXRlcmFsKFwiY2F0ZWdvcnlcIiksXG4gICAgICBkZXNjcmlwdGlvbjogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJDb2x1bW4gYnVzaW5lc3MgbWVhbmluZy5cIiksXG4gICAgICB2YWx1ZXM6IHouYXJyYXkobm9uQmxhbmtTdHJpbmcubWF4KDgwKSkubWluKDIpLm1heCgxMikuZGVzY3JpYmUoXCJTa2V3ZWQgY2F0ZWdvcnkgdmFsdWVzLlwiKSxcbiAgICB9KVxuICAgIC5zdHJpY3QoKSxcbiAgelxuICAgIC5vYmplY3Qoe1xuICAgICAgbmFtZTogaWRlbnRpZmllci5kZXNjcmliZShcIkNvbHVtbiBuYW1lLlwiKSxcbiAgICAgIGdlbmVyYXRvcjogei5saXRlcmFsKFwibnVtYmVyXCIpLFxuICAgICAgZGVzY3JpcHRpb246IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiQ29sdW1uIGJ1c2luZXNzIG1lYW5pbmcuXCIpLFxuICAgICAgbWluaW11bTogei5udW1iZXIoKS5kZXNjcmliZShcIk1pbmltdW0gZ2VuZXJhdGVkIHZhbHVlLlwiKSxcbiAgICAgIG1heGltdW06IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJNYXhpbXVtIGdlbmVyYXRlZCB2YWx1ZS5cIiksXG4gICAgICBkZWNpbWFsczogei5udW1iZXIoKS5pbnQoKS5taW4oMCkubWF4KDQpLmRlZmF1bHQoMikuZGVzY3JpYmUoXCJEZWNpbWFsIHByZWNpc2lvbi5cIiksXG4gICAgfSlcbiAgICAuc3RyaWN0KCksXG4gIHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG5hbWU6IGlkZW50aWZpZXIuZGVzY3JpYmUoXCJDb2x1bW4gbmFtZS5cIiksXG4gICAgICBnZW5lcmF0b3I6IHoubGl0ZXJhbChcImJvb2xlYW5cIiksXG4gICAgICBkZXNjcmlwdGlvbjogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJDb2x1bW4gYnVzaW5lc3MgbWVhbmluZy5cIiksXG4gICAgICB0cnVlUHJvYmFiaWxpdHk6IHoubnVtYmVyKCkubWluKDAuMDEpLm1heCgwLjk5KS5kZXNjcmliZShcIlNoYXJlIG9mIHRydWUgcm93cy5cIiksXG4gICAgfSlcbiAgICAuc3RyaWN0KCksXG5dKTtcblxuLyoqIERldGVybWluaXN0aWMgZ2VuZXJhdGVkIGNvbHVtbiBzcGVjaWZpY2F0aW9uLiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJhdGVkQ29sdW1uID0gei5pbmZlcjx0eXBlb2YgR2VuZXJhdGVkQ29sdW1uU2NoZW1hPjtcblxuLyoqIEtQSSBiaW5kaW5nIGNvbXBpbGVkIGludG8gdmFsaWRhdGlvbiBTUUwgYW5kIGRhc2hib2FyZCBtZWFzdXJlcy4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmF0ZWRNZXRyaWNTY2hlbWEgPSBSZXNlYXJjaGVkS3BpU2NoZW1hLmV4dGVuZCh7XG4gIGFnZ3JlZ2F0aW9uOiB6XG4gICAgLmVudW0oW1wiY291bnRcIiwgXCJzdW1cIiwgXCJhdmVyYWdlXCJdKVxuICAgIC5kZXNjcmliZShcIlNhZmUgYWdncmVnYXRlIGNvbXBpbGVkIGJ5IHRoZSBnZW5lcmF0b3IuXCIpLFxuICBjb2x1bW46IGlkZW50aWZpZXIub3B0aW9uYWwoKS5kZXNjcmliZShcIk51bWVyaWMgc291cmNlIGNvbHVtbjsgb21pdHRlZCBmb3IgY291bnQuXCIpLFxufSkuc3RyaWN0KCk7XG5cbi8qKiBLUEkgYmluZGluZy4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyYXRlZE1ldHJpYyA9IHouaW5mZXI8dHlwZW9mIEdlbmVyYXRlZE1ldHJpY1NjaGVtYT47XG5cbi8qKiBTdHJ1Y3R1cmVkIHBsYW4gY29tcGlsZWQgaW50byBTUUwgYW5kIHByZXNlbnRhdGlvbiBhc3NldHMuICovXG5leHBvcnQgY29uc3QgR2VuZXJhdG9yUGxhblNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdGFibGU6IGlkZW50aWZpZXIuZGVzY3JpYmUoXCJQcmltYXJ5IGdlbmVyYXRlZCBEZWx0YSB0YWJsZSBuYW1lLlwiKSxcbiAgICByb3dDb3VudDogei5udW1iZXIoKS5pbnQoKS5taW4oMV8wMDApLm1heCgxMDBfMDAwKS5kZXNjcmliZShcIlJvd3MgdG8gZ2VuZXJhdGUuXCIpLFxuICAgIGNvbHVtbnM6IHpcbiAgICAgIC5hcnJheShHZW5lcmF0ZWRDb2x1bW5TY2hlbWEpXG4gICAgICAubWluKDQpXG4gICAgICAubWF4KDE2KVxuICAgICAgLmRlc2NyaWJlKFwiVHlwZWQgZGV0ZXJtaW5pc3RpYyBjb2x1bW4gZ2VuZXJhdG9ycy5cIiksXG4gICAgbWV0cmljczogei5hcnJheShHZW5lcmF0ZWRNZXRyaWNTY2hlbWEpLm1pbigxKS5tYXgoNikuZGVzY3JpYmUoXCJEYXNoYm9hcmQgYW5kIEdlbmllIEtQSXMuXCIpLFxuICAgIHN0b3J5OiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIkJ1c2luZXNzIGFub21hbHkgYW5kIGltcGFjdCByZXByZXNlbnRlZCBpbiB0aGUgZGF0YS5cIiksXG4gICAgc2FtcGxlUXVlc3Rpb25zOiB6XG4gICAgICAuYXJyYXkobm9uQmxhbmtTdHJpbmcubWF4KDMwMCkpXG4gICAgICAubWluKDMpXG4gICAgICAubWF4KDgpXG4gICAgICAuZGVzY3JpYmUoXCJRdWVzdGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBnZW5lcmF0ZWQgdGFibGUuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLnN1cGVyUmVmaW5lKCh2YWx1ZSwgY3R4KSA9PiB7XG4gICAgY29uc3QgbmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgY29sdW1uXSBvZiB2YWx1ZS5jb2x1bW5zLmVudHJpZXMoKSkge1xuICAgICAgaWYgKG5hbWVzLmhhcyhjb2x1bW4ubmFtZSkpIHtcbiAgICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgICBjb2RlOiBcImN1c3RvbVwiLFxuICAgICAgICAgIHBhdGg6IFtcImNvbHVtbnNcIiwgaW5kZXgsIFwibmFtZVwiXSxcbiAgICAgICAgICBtZXNzYWdlOiBcIkdlbmVyYXRlZCBjb2x1bW4gbmFtZXMgbXVzdCBiZSB1bmlxdWUuXCIsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbmFtZXMuYWRkKGNvbHVtbi5uYW1lKTtcbiAgICB9XG4gICAgaWYgKCF2YWx1ZS5jb2x1bW5zLnNvbWUoKHsgZ2VuZXJhdG9yIH0pID0+IGdlbmVyYXRvciA9PT0gXCJpZFwiKSkge1xuICAgICAgY3R4LmFkZElzc3VlKHsgY29kZTogXCJjdXN0b21cIiwgcGF0aDogW1wiY29sdW1uc1wiXSwgbWVzc2FnZTogXCJBbiBpZCBjb2x1bW4gaXMgcmVxdWlyZWQuXCIgfSk7XG4gICAgfVxuICAgIGlmICghdmFsdWUuY29sdW1ucy5zb21lKCh7IGdlbmVyYXRvciB9KSA9PiBnZW5lcmF0b3IgPT09IFwiZGF0ZVwiKSkge1xuICAgICAgY3R4LmFkZElzc3VlKHsgY29kZTogXCJjdXN0b21cIiwgcGF0aDogW1wiY29sdW1uc1wiXSwgbWVzc2FnZTogXCJBIGRhdGUgY29sdW1uIGlzIHJlcXVpcmVkLlwiIH0pO1xuICAgIH1cbiAgICBpZiAoIXZhbHVlLmNvbHVtbnMuc29tZSgoeyBnZW5lcmF0b3IgfSkgPT4gZ2VuZXJhdG9yID09PSBcImNhdGVnb3J5XCIpKSB7XG4gICAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgICBjb2RlOiBcImN1c3RvbVwiLFxuICAgICAgICBwYXRoOiBbXCJjb2x1bW5zXCJdLFxuICAgICAgICBtZXNzYWdlOiBcIkEgY2F0ZWdvcnkgY29sdW1uIGlzIHJlcXVpcmVkLlwiLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG51bWVyaWMgPSBuZXcgU2V0KFxuICAgICAgdmFsdWUuY29sdW1ucy5maWx0ZXIoKHsgZ2VuZXJhdG9yIH0pID0+IGdlbmVyYXRvciA9PT0gXCJudW1iZXJcIikubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSksXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgbWV0cmljXSBvZiB2YWx1ZS5tZXRyaWNzLmVudHJpZXMoKSkge1xuICAgICAgaWYgKG1ldHJpYy5hZ2dyZWdhdGlvbiAhPT0gXCJjb3VudFwiICYmICghbWV0cmljLmNvbHVtbiB8fCAhbnVtZXJpYy5oYXMobWV0cmljLmNvbHVtbikpKSB7XG4gICAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgICBwYXRoOiBbXCJtZXRyaWNzXCIsIGluZGV4LCBcImNvbHVtblwiXSxcbiAgICAgICAgICBtZXNzYWdlOiBcIlN1bSBhbmQgYXZlcmFnZSBtZXRyaWNzIHJlcXVpcmUgYSBnZW5lcmF0ZWQgbnVtZXJpYyBjb2x1bW4uXCIsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgLmRlc2NyaWJlKFwiVmFsaWRhdGVkIHBsYW4gZm9yIGRldGVybWluaXN0aWMgc3ludGhldGljIGRhdGEgYW5kIGFuYWx5dGljcyBhc3NldHMuXCIpO1xuXG4vKiogU3RydWN0dXJlZCBnZW5lcmF0b3IgcGxhbi4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyYXRvclBsYW4gPSB6LmluZmVyPHR5cGVvZiBHZW5lcmF0b3JQbGFuU2NoZW1hPjtcblxuLyoqIElucHV0IGZvciB0aGUgc3RhbmRhbG9uZSBzdHJ1Y3R1cmVkIGRhdGEtcGxhbm5pbmcgdG9vbC4gKi9cbmV4cG9ydCBjb25zdCBQbGFuR2VuZXJhdG9yRGF0YVJlcXVlc3RTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHJlcXVlc3Q6IEdlbmVyYXRvclJlcXVlc3RTY2hlbWEsXG4gICAgYnJhbmQ6IEJyYW5kUGFja2FnZVNjaGVtYSxcbiAgICBrcGlSZXNlYXJjaDogS3BpUmVzZWFyY2hSZXN1bHRTY2hlbWEsXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJJbnB1dHMgbmVlZGVkIHRvIGJ1aWxkIGEgdHlwZWQgZ2VuZXJhdG9yIHBsYW4uXCIpO1xuXG4vKiogSW5wdXQgZm9yIHRoZSBzdGFuZGFsb25lIHN0cnVjdHVyZWQgZGF0YS1wbGFubmluZyB0b29sLiAqL1xuZXhwb3J0IHR5cGUgUGxhbkdlbmVyYXRvckRhdGFSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgUGxhbkdlbmVyYXRvckRhdGFSZXF1ZXN0U2NoZW1hPjtcblxuLyoqIExvY2F0aW9uIGFuZCB0cnVzdGVkIGlkZW50aXR5IGZvciBvbmUgZ2VuZXJhdGVkIHNjaGVtYS4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmF0ZWRTY2hlbWFTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGNhdGFsb2c6IGlkZW50aWZpZXIuZGVzY3JpYmUoXCJDb25maWd1cmVkIFVuaXR5IENhdGFsb2cuXCIpLFxuICAgIHNjaGVtYTogaWRlbnRpZmllci5kZXNjcmliZShcIlBlci11c2VyIGdlbmVyYXRlZCBzY2hlbWEuXCIpLFxuICAgIGZ1bGxOYW1lOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIlF1b3RlZC1zYWZlIGNhdGFsb2cuc2NoZW1hIGRpc3BsYXkgbmFtZS5cIiksXG4gICAgcHJpbmNpcGFsOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIlRydXN0ZWQgT0JPIERhdGFicmlja3MgdXNlciBuYW1lLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlByb3Zpc2lvbmVkIHBlci11c2VyIFVuaXR5IENhdGFsb2cgc2NoZW1hLlwiKTtcblxuLyoqIFByb3Zpc2lvbmVkIGdlbmVyYXRlZCBzY2hlbWEuICovXG5leHBvcnQgdHlwZSBHZW5lcmF0ZWRTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBHZW5lcmF0ZWRTY2hlbWFTY2hlbWE+O1xuXG4vKiogSW5wdXQgZm9yIHBlci11c2VyIHNjaGVtYSBwcm92aXNpb25pbmcuICovXG5leHBvcnQgY29uc3QgUHJvdmlzaW9uR2VuZXJhdG9yU2NoZW1hUmVxdWVzdFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcmVxdWVzdDogR2VuZXJhdG9yUmVxdWVzdFNjaGVtYS5waWNrKHsgY29tcGFueTogdHJ1ZSwgcHVycG9zZTogdHJ1ZSB9KSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlJlcXVlc3QgdG8gcHJvdmlzaW9uIHRoZSBhY3RpdmUgdXNlcidzIGdlbmVyYXRlZCBzY2hlbWEuXCIpO1xuXG4vKiogSW5wdXQgZm9yIHBlci11c2VyIHNjaGVtYSBwcm92aXNpb25pbmcuICovXG5leHBvcnQgdHlwZSBQcm92aXNpb25HZW5lcmF0b3JTY2hlbWFSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgUHJvdmlzaW9uR2VuZXJhdG9yU2NoZW1hUmVxdWVzdFNjaGVtYT47XG5cbi8qKiBJbnB1dCBmb3IgZ2VuZXJhdGVkIGRhdGEgbWF0ZXJpYWxpemF0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IE1hdGVyaWFsaXplR2VuZXJhdG9yRGF0YVJlcXVlc3RTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGxvY2F0aW9uOiBHZW5lcmF0ZWRTY2hlbWFTY2hlbWEsXG4gICAgcGxhbjogR2VuZXJhdG9yUGxhblNjaGVtYSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlJlcXVlc3QgdG8gbWF0ZXJpYWxpemUgYW5kIHZhbGlkYXRlIGdlbmVyYXRlZCBEZWx0YSBkYXRhLlwiKTtcblxuLyoqIElucHV0IGZvciBnZW5lcmF0ZWQgZGF0YSBtYXRlcmlhbGl6YXRpb24uICovXG5leHBvcnQgdHlwZSBNYXRlcmlhbGl6ZUdlbmVyYXRvckRhdGFSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgTWF0ZXJpYWxpemVHZW5lcmF0b3JEYXRhUmVxdWVzdFNjaGVtYT47XG5cbi8qKiBDcmVhdGVkIHRhYmxlcyBhbmQgS1BJIHZhbGlkYXRpb24gc3RhdGVtZW50cy4gKi9cbmV4cG9ydCBjb25zdCBNYXRlcmlhbGl6ZWRHZW5lcmF0b3JEYXRhU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0YWJsZXM6IHouYXJyYXkobm9uQmxhbmtTdHJpbmcpLm1pbigxKS5kZXNjcmliZShcIkNyZWF0ZWQgZnVsbHkgcXVhbGlmaWVkIERlbHRhIHRhYmxlcy5cIiksXG4gICAgdmFsaWRhdGlvblN0YXRlbWVudHM6IHpcbiAgICAgIC5yZWNvcmQoaWRlbnRpZmllciwgbm9uQmxhbmtTdHJpbmcpXG4gICAgICAuZGVzY3JpYmUoXCJTdGF0ZW1lbnQgSURzIGtleWVkIGJ5IHZhbGlkYXRlZCBLUEkgbmFtZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJNYXRlcmlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBnZW5lcmF0ZWQgZGF0YS5cIik7XG5cbi8qKiBDcmVhdGVkIHRhYmxlcyBhbmQgS1BJIHZhbGlkYXRpb24gc3RhdGVtZW50cy4gKi9cbmV4cG9ydCB0eXBlIE1hdGVyaWFsaXplZEdlbmVyYXRvckRhdGEgPSB6LmluZmVyPHR5cGVvZiBNYXRlcmlhbGl6ZWRHZW5lcmF0b3JEYXRhU2NoZW1hPjtcblxuLyoqIElucHV0IHNoYXJlZCBieSBkYXNoYm9hcmQgYW5kIHN0YW5kYWxvbmUgR2VuaWUgY3JlYXRpb24gdG9vbHMuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlR2VuZXJhdG9yUHJlc2VudGF0aW9uUmVxdWVzdFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcmVxdWVzdDogR2VuZXJhdG9yUmVxdWVzdFNjaGVtYS5waWNrKHtcbiAgICAgIGNvbXBhbnk6IHRydWUsXG4gICAgICBwdXJwb3NlOiB0cnVlLFxuICAgIH0pLFxuICAgIGxvY2F0aW9uOiBHZW5lcmF0ZWRTY2hlbWFTY2hlbWEsXG4gICAgcGxhbjogR2VuZXJhdG9yUGxhblNjaGVtYSxcbiAgICBicmFuZDogQnJhbmRQYWNrYWdlU2NoZW1hLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiUmVxdWVzdCB0byBjcmVhdGUgYSBwcmVzZW50YXRpb24gYXNzZXQgb3ZlciBnZW5lcmF0ZWQgZGF0YS5cIik7XG5cbi8qKiBJbnB1dCBzaGFyZWQgYnkgZGFzaGJvYXJkIGFuZCBzdGFuZGFsb25lIEdlbmllIGNyZWF0aW9uIHRvb2xzLiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlR2VuZXJhdG9yUHJlc2VudGF0aW9uUmVxdWVzdCA9IHouaW5mZXI8XG4gIHR5cGVvZiBDcmVhdGVHZW5lcmF0b3JQcmVzZW50YXRpb25SZXF1ZXN0U2NoZW1hXG4+O1xuXG4vKiogRGFzaGJvYXJkIG91dHB1dCB3aXRoIGl0cyBhdXRvbWF0aWMgY29tcGFuaW9uIEdlbmllIEFnZW50LiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZERhc2hib2FyZFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZGFzaGJvYXJkSWQ6IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiQ3JlYXRlZCBMYWtldmlldyBkYXNoYm9hcmQgSUQuXCIpLFxuICAgIHBhdGg6IG5vbkJsYW5rU3RyaW5nLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXb3Jrc3BhY2UgcGF0aCwgd2hlbiByZXR1cm5lZC5cIiksXG4gICAgY29tcGFuaW9uR2VuaWU6IHoubGl0ZXJhbChcIkFVVE9cIikuZGVzY3JpYmUoXCJEYXNoYm9hcmQtcHVibGlzaGVkIGNvbXBhbmlvbiBHZW5pZSBtb2RlLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG4vKiogUHVibGlzaGVkIGRhc2hib2FyZCB3aXRoIGF1dG9tYXRpYyBjb21wYW5pb24gR2VuaWUuICovXG5leHBvcnQgdHlwZSBHZW5lcmF0ZWREYXNoYm9hcmQgPSB6LmluZmVyPHR5cGVvZiBHZW5lcmF0ZWREYXNoYm9hcmRTY2hlbWE+O1xuXG4vKiogU3RhbmRhbG9uZSBHZW5pZSBvdXRwdXQgdXNlZCBvbmx5IHdoZW4gbm8gZGFzaGJvYXJkIGlzIHJlcXVlc3RlZC4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmF0ZWRHZW5pZVNwYWNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBzcGFjZUlkOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIkNyZWF0ZWQgc3RhbmRhbG9uZSBHZW5pZSBzcGFjZSBJRC5cIiksXG4gICAgdGl0bGU6IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgdGl0bGUuXCIpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbi8qKiBDcmVhdGVkIHN0YW5kYWxvbmUgR2VuaWUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBHZW5lcmF0ZWRHZW5pZVNwYWNlID0gei5pbmZlcjx0eXBlb2YgR2VuZXJhdGVkR2VuaWVTcGFjZVNjaGVtYT47XG5cbi8qKiBUZXJtaW5hbCB3b3JrZmxvdyBvdXRwdXQuICovXG5leHBvcnQgY29uc3QgR2VuZXJhdGVkQXNzZXRzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICByZXF1ZXN0OiBHZW5lcmF0b3JSZXF1ZXN0U2NoZW1hLFxuICAgIHNjaGVtYTogR2VuZXJhdGVkU2NoZW1hU2NoZW1hLFxuICAgIHRhYmxlczogei5hcnJheShub25CbGFua1N0cmluZykubWluKDEpLmRlc2NyaWJlKFwiQ3JlYXRlZCBmdWxseSBxdWFsaWZpZWQgRGVsdGEgdGFibGVzLlwiKSxcbiAgICBicmFuZDogQnJhbmRQYWNrYWdlU2NoZW1hLFxuICAgIGtwaVJlc2VhcmNoOiBLcGlSZXNlYXJjaFJlc3VsdFNjaGVtYSxcbiAgICBwbGFuOiBHZW5lcmF0b3JQbGFuU2NoZW1hLFxuICAgIGRhc2hib2FyZDogR2VuZXJhdGVkRGFzaGJvYXJkU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgZ2VuaWU6IEdlbmVyYXRlZEdlbmllU3BhY2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5zdXBlclJlZmluZSgodmFsdWUsIGN0eCkgPT4ge1xuICAgIGlmICgodmFsdWUuZGFzaGJvYXJkID09PSB1bmRlZmluZWQpID09PSAodmFsdWUuZ2VuaWUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiRXhhY3RseSBvbmUgZGFzaGJvYXJkIG9yIHN0YW5kYWxvbmUgR2VuaWUgc3BhY2UgaXMgcmVxdWlyZWQuXCIsXG4gICAgICB9KTtcbiAgICB9XG4gIH0pXG4gIC5kZXNjcmliZShcIkdlbmVyYXRlZCBEYXRhYnJpY2tzIGRhdGEgYW5kIHByZXNlbnRhdGlvbiBhc3NldHMuXCIpO1xuXG4vKiogVGVybWluYWwgZ2VuZXJhdG9yIHdvcmtmbG93IG91dHB1dC4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyYXRlZEFzc2V0cyA9IHouaW5mZXI8dHlwZW9mIEdlbmVyYXRlZEFzc2V0c1NjaGVtYT47XG4iXX0=
|
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"typescript": "^5.9.3"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@dbx-tools/shared-core": "0.9.
|
|
25
|
+
"@dbx-tools/shared-core": "0.9.205",
|
|
26
26
|
"zod": "4.3.6"
|
|
27
27
|
},
|
|
28
28
|
"main": "./lib/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"./package.json": "./package.json"
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
|
-
"version": "0.9.
|
|
42
|
+
"version": "0.9.205",
|
|
43
43
|
"types": "./lib/index.d.ts",
|
|
44
44
|
"dbxToolsConfig": {
|
|
45
45
|
"tags": [
|
package/src/workflow.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
import { BrandPackageSchema } from "./brand.ts";
|
|
9
|
-
import { KpiResearchResultSchema, ResearchedKpiSchema } from "./kpi.ts";
|
|
9
|
+
import { KpiResearchRequestSchema, KpiResearchResultSchema, ResearchedKpiSchema } from "./kpi.ts";
|
|
10
10
|
|
|
11
11
|
const nonBlankString = z.string().trim().min(1);
|
|
12
12
|
const identifier = z.string().regex(/^[a-z][a-z0-9_]*$/, "Expected a lowercase SQL identifier.");
|
|
@@ -18,31 +18,19 @@ export const PresentationModeSchema = z.enum(["dashboard", "genie"]);
|
|
|
18
18
|
export type PresentationMode = z.infer<typeof PresentationModeSchema>;
|
|
19
19
|
|
|
20
20
|
/** Complete input for the governed generator workflow. */
|
|
21
|
-
export const GeneratorRequestSchema =
|
|
22
|
-
.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
.describe("Known company website for brand disambiguation."),
|
|
35
|
-
presentation: PresentationModeSchema.default("dashboard").describe(
|
|
36
|
-
"Dashboard with automatic companion Genie, or standalone Genie without a dashboard.",
|
|
37
|
-
),
|
|
38
|
-
rowCount: z
|
|
39
|
-
.number()
|
|
40
|
-
.int()
|
|
41
|
-
.min(1_000)
|
|
42
|
-
.max(100_000)
|
|
43
|
-
.default(50_000)
|
|
44
|
-
.describe("Rows generated in the primary fact table."),
|
|
45
|
-
})
|
|
21
|
+
export const GeneratorRequestSchema = KpiResearchRequestSchema.extend({
|
|
22
|
+
website: z.string().url().optional().describe("Known company website for brand disambiguation."),
|
|
23
|
+
presentation: PresentationModeSchema.default("dashboard").describe(
|
|
24
|
+
"Dashboard with automatic companion Genie, or standalone Genie without a dashboard.",
|
|
25
|
+
),
|
|
26
|
+
rowCount: z
|
|
27
|
+
.number()
|
|
28
|
+
.int()
|
|
29
|
+
.min(1_000)
|
|
30
|
+
.max(100_000)
|
|
31
|
+
.default(50_000)
|
|
32
|
+
.describe("Rows generated in the primary fact table."),
|
|
33
|
+
})
|
|
46
34
|
.strict()
|
|
47
35
|
.describe("Request for a per-user Databricks demo data environment.");
|
|
48
36
|
|