@pagopa/dx-cli 0.26.4 → 0.27.0
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/dist/adapters/azure/cloud-account-service.d.ts +1 -0
- package/dist/adapters/azure/cloud-account-service.js +59 -6
- package/dist/adapters/commander/commands/add.d.ts +2 -2
- package/dist/adapters/commander/commands/add.js +4 -8
- package/dist/adapters/plop/actions/configure-github-environments.d.ts +6 -0
- package/dist/adapters/plop/actions/configure-github-environments.js +13 -0
- package/dist/adapters/plop/actions/sync-repository-environments.js +3 -1
- package/dist/adapters/plop/generators/environment/actions.js +7 -1
- package/dist/adapters/plop/generators/environment/prompts.d.ts +4 -4
- package/dist/adapters/plop/generators/environment/prompts.js +5 -8
- package/dist/adapters/plop/helpers/env-short.js +3 -3
- package/dist/adapters/plop/helpers/resource-prefix.js +3 -3
- package/dist/adapters/plop/helpers/terraform-state-key.d.ts +2 -2
- package/dist/adapters/plop/index.js +3 -1
- package/dist/domain/cloud-account.d.ts +1 -0
- package/dist/domain/cloud-account.js +1 -1
- package/dist/domain/environment.d.ts +6 -2
- package/dist/domain/environment.js +24 -2
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ import { okAsync, ResultAsync } from "neverthrow";
|
|
|
13
13
|
import { readFile } from "node:fs/promises";
|
|
14
14
|
import { z } from "zod/v4";
|
|
15
15
|
import { requestAuthorizationInputSchema, } from "../../../domain/authorization.js";
|
|
16
|
-
import { environmentSchema,
|
|
16
|
+
import { environmentSchema, getEnvironmentShort, } from "../../../domain/environment.js";
|
|
17
17
|
import { isAzureLocation, locationShort, } from "../../azure/locations.js";
|
|
18
18
|
import { workspaceSchema } from "../../plop/generators/environment/prompts.js";
|
|
19
19
|
import { collectDeploymentEnvironmentPayload, getPlopInstance, runDeploymentEnvironmentActions, } from "../../plop/index.js";
|
|
@@ -185,7 +185,7 @@ export const authorizeCloudAccounts = (authorizationService) => (envPayload) =>
|
|
|
185
185
|
}
|
|
186
186
|
const logger = getLogger(["dx-cli", "add-environment"]);
|
|
187
187
|
const { name, prefix } = envPayload.env;
|
|
188
|
-
const envShort =
|
|
188
|
+
const envShort = getEnvironmentShort(name);
|
|
189
189
|
const requestAll = async () => {
|
|
190
190
|
const results = [];
|
|
191
191
|
for (const account of accountsToInitialize) {
|
|
@@ -261,11 +261,7 @@ export const makeAddCommand = (requireGitHubAuth, env) => new Command()
|
|
|
261
261
|
.description("Add a new component to your workspace")
|
|
262
262
|
.addCommand(new Command("environment")
|
|
263
263
|
.description("Add a new deployment environment")
|
|
264
|
-
.addOption(new Option("--name <name>", "Environment name")
|
|
265
|
-
"dev",
|
|
266
|
-
"uat",
|
|
267
|
-
"prod",
|
|
268
|
-
]))
|
|
264
|
+
.addOption(new Option("--name <name>", "Environment name (dev, uat, prod, or tenant-qualified like cgn-prod)"))
|
|
269
265
|
.addOption(new Option("--account <subscription-id>", "Cloud account subscription id").argParser(appendOptionValue))
|
|
270
266
|
.addOption(new Option("--location <subscription-id=region>", "Default Azure location for a selected account").argParser(appendOptionValue))
|
|
271
267
|
.addOption(new Option("--prefix <prefix>", "Environment prefix"))
|
|
@@ -293,4 +289,4 @@ export const makeAddCommand = (requireGitHubAuth, env) => new Command()
|
|
|
293
289
|
})).andThen((initialAnswers) => requireGitHubAuth().andThen(({ authorizationService, gitHubService }) => addEnvironmentAction(authorizationService, gitHubService, presenter, initialAnswers))))
|
|
294
290
|
.match(reportSummary(presenter, outputMode), reportCommandError(this, presenter, outputMode));
|
|
295
291
|
}));
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbW1hbmRlci9jb21tYW5kcy9hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQjs7Ozs7OztHQU9HO0FBQ0gsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFVM0IsT0FBTyxFQUdMLCtCQUErQixHQUNoQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUVMLGVBQWUsRUFDZixhQUFhLEdBQ2QsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDL0UsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxlQUFlLEVBQ2YsK0JBQStCLEdBQ2hDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsaUJBQWlCLEdBQ2xCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTNELE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsS0FBYSxFQUNiLFdBQXFCLEVBQUUsRUFDYixFQUFFLENBQUMs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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuLyoqXG4gKiBBZGQgY29tbWFuZCAtIFNjYWZmb2xkIG5ldyBjb21wb25lbnRzIGludG8gZXhpc3Rpbmcgd29ya3NwYWNlcy5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBgZHggYWRkYCBjb21tYW5kIGFuZCBrZWVwcyB0aGUgQ0xJLXNwZWNpZmljIGZsYWdcbiAqIHBhcnNpbmcvdmFsaWRhdGlvbiBjbG9zZSB0byB0aGUgQ29tbWFuZGVyIGFkYXB0ZXIuIEl0IHR1cm5zIHN1cHBvcnRlZCBmbGFnc1xuICogaW50byBwcmVmaWxsZWQgYW5zd2VycyBmb3IgdGhlIHBsb3AgZ2VuZXJhdG9yIHNvIHRoZSBjb21tYW5kIGNhbiBydW4gd2l0aCBhXG4gKiBtaXggb2Ygbm9uLWludGVyYWN0aXZlIGlucHV0cyBhbmQgZ3VpZGVkIHByb21wdHMuXG4gKi9cbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IG9rQXN5bmMsIFJlc3VsdEFzeW5jIH0gZnJvbSBcIm5ldmVydGhyb3dcIjtcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kL3Y0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWFuZFByZXNlbnRlciB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vY29tbWFuZC1wcmVzZW50ZXIuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgSW5pdGlhbEFuc3dlcnMgYXMgRGVwbG95bWVudEVudmlyb25tZW50SW5pdGlhbEFuc3dlcnMsXG4gIFBheWxvYWQgYXMgRW52aXJvbm1lbnRQYXlsb2FkLFxufSBmcm9tIFwiLi4vLi4vcGxvcC9nZW5lcmF0b3JzL2Vudmlyb25tZW50L2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IENsaUVudiB9IGZyb20gXCIuLi9lbnYuanNcIjtcbmltcG9ydCB0eXBlIHsgR2xvYmFsT3B0aW9ucyB9IGZyb20gXCIuLi9nbG9iYWwtb3B0aW9ucy5qc1wiO1xuXG5pbXBvcnQge1xuICBBdXRob3JpemF0aW9uUmVzdWx0LFxuICBBdXRob3JpemF0aW9uU2VydmljZSxcbiAgcmVxdWVzdEF1dGhvcml6YXRpb25JbnB1dFNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9hdXRob3JpemF0aW9uLmpzXCI7XG5pbXBvcnQgeyBHaXRIdWJBdXRoRmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vZGVwZW5kZW5jaWVzLmpzXCI7XG5pbXBvcnQge1xuICBlbnZpcm9ubWVudFNjaGVtYSxcbiAgZW52aXJvbm1lbnRTaG9ydCxcbn0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBHaXRIdWJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9naXRodWIuanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgQXp1cmVMb2NhdGlvbixcbiAgaXNBenVyZUxvY2F0aW9uLFxuICBsb2NhdGlvblNob3J0LFxufSBmcm9tIFwiLi4vLi4vYXp1cmUvbG9jYXRpb25zLmpzXCI7XG5pbXBvcnQgeyB3b3Jrc3BhY2VTY2hlbWEgfSBmcm9tIFwiLi4vLi4vcGxvcC9nZW5lcmF0b3JzL2Vudmlyb25tZW50L3Byb21wdHMuanNcIjtcbmltcG9ydCB7XG4gIGNvbGxlY3REZXBsb3ltZW50RW52aXJvbm1lbnRQYXlsb2FkLFxuICBnZXRQbG9wSW5zdGFuY2UsXG4gIHJ1bkRlcGxveW1lbnRFbnZpcm9ubWVudEFjdGlvbnMsXG59IGZyb20gXCIuLi8uLi9wbG9wL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBhc0Vycm9yLCByZXBvcnRDb21tYW5kRXJyb3IgfSBmcm9tIFwiLi4vY29tbWFuZC1lcnJvcnMuanNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIsXG4gIHJlc29sdmVPdXRwdXRNb2RlLFxufSBmcm9tIFwiLi4vcHJlc2VudGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcnVuQWRkRW52aXJvbm1lbnRQcmVjb25kaXRpb25zIH0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5jb25zdCBhcHBlbmRPcHRpb25WYWx1ZSA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgcHJldmlvdXM6IHN0cmluZ1tdID0gW10sXG4pOiBzdHJpbmdbXSA9PiBbLi4ucHJldmlvdXMsIHZhbHVlXTtcblxuY29uc3QgbG9jYXRpb25PcHRpb25TY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAudHJpbSgpXG4gIC50cmFuc2Zvcm0oKHZhbHVlLCBjdHgpID0+IHtcbiAgICBjb25zdCBbcmF3QWNjb3VudElkLCAuLi5yYXdMb2NhdGlvblBhcnRzXSA9IHZhbHVlLnNwbGl0KFwiPVwiKTtcbiAgICBjb25zdCBhY2NvdW50SWQgPSByYXdBY2NvdW50SWQ/LnRyaW0oKTtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHJhd0xvY2F0aW9uUGFydHMuam9pbihcIj1cIikudHJpbSgpO1xuXG4gICAgaWYgKCFhY2NvdW50SWQgfHwgcmF3TG9jYXRpb25QYXJ0cy5sZW5ndGggPT09IDAgfHwgbG9jYXRpb24ubGVuZ3RoID09PSAwKSB7XG4gICAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgICBjb2RlOiB6LlpvZElzc3VlQ29kZS5jdXN0b20sXG4gICAgICAgIG1lc3NhZ2U6IFwiTG9jYXRpb24gbXVzdCB1c2UgdGhlIGZvcm1hdCA8c3Vic2NyaXB0aW9uLWlkPXJlZ2lvbj4uXCIsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB6Lk5FVkVSO1xuICAgIH1cblxuICAgIGlmICghaXNBenVyZUxvY2F0aW9uKGxvY2F0aW9uKSkge1xuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogei5ab2RJc3N1ZUNvZGUuY3VzdG9tLFxuICAgICAgICBtZXNzYWdlOiBgVW5zdXBwb3J0ZWQgQXp1cmUgbG9jYXRpb24gXCIke2xvY2F0aW9ufVwiLmAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB6Lk5FVkVSO1xuICAgIH1cblxuICAgIHJldHVybiB7IGFjY291bnRJZCwgbG9jYXRpb24gfTtcbiAgfSk7XG5cbmNvbnN0IGFkZEVudmlyb25tZW50Q29tbWFuZE9wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGFjY291bnQ6IHpcbiAgICAgIC5hcnJheSh6LnN0cmluZygpLnRyaW0oKS5taW4oMSwgXCJDbG91ZCBhY2NvdW50IGlkIGNhbm5vdCBiZSBlbXB0eVwiKSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICAgIGJ1c2luZXNzVW5pdDogelxuICAgICAgLnN0cmluZygpXG4gICAgICAudHJpbSgpXG4gICAgICAubWluKDEsIFwiQnVzaW5lc3MgdW5pdCBjYW5ub3QgYmUgZW1wdHlcIilcbiAgICAgIC5vcHRpb25hbCgpLFxuICAgIGNsaWVudElkOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSwgXCJDbGllbnQgaWQgY2Fubm90IGJlIGVtcHR5XCIpLm9wdGlvbmFsKCksXG4gICAgZG9tYWluOiB3b3Jrc3BhY2VTY2hlbWEuc2hhcGUuZG9tYWluLm9wdGlvbmFsKCksXG4gICAgaW5zdGFsbGF0aW9uSWQ6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLm1pbigxLCBcIkluc3RhbGxhdGlvbiBpZCBjYW5ub3QgYmUgZW1wdHlcIilcbiAgICAgIC5vcHRpb25hbCgpLFxuICAgIGxvY2F0aW9uOiB6LmFycmF5KGxvY2F0aW9uT3B0aW9uU2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIG1hbmFnZW1lbnRUZWFtOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICAgIC5taW4oMSwgXCJNYW5hZ2VtZW50IHRlYW0gY2Fubm90IGJlIGVtcHR5XCIpXG4gICAgICAub3B0aW9uYWwoKSxcbiAgICBuYW1lOiBlbnZpcm9ubWVudFNjaGVtYS5zaGFwZS5uYW1lLm9wdGlvbmFsKCksXG4gICAgcHJlZml4OiBlbnZpcm9ubWVudFNjaGVtYS5zaGFwZS5wcmVmaXgub3B0aW9uYWwoKSxcbiAgICBwcml2YXRlS2V5UGF0aDogelxuICAgICAgLnN0cmluZygpXG4gICAgICAudHJpbSgpXG4gICAgICAubWluKDEsIFwiUHJpdmF0ZSBrZXkgcGF0aCBjYW5ub3QgYmUgZW1wdHlcIilcbiAgICAgIC5vcHRpb25hbCgpLFxuICAgIHJ1bm5lckFwcElkOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICAgIC5taW4oMSwgXCJSdW5uZXIgYXBwIGlkIGNhbm5vdCBiZSBlbXB0eVwiKVxuICAgICAgLm9wdGlvbmFsKCksXG4gICAgeWVzOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3VwZXJSZWZpbmUoKHZhbHVlLCBjdHgpID0+IHtcbiAgICBpZiAodmFsdWUubG9jYXRpb24gJiYgIXZhbHVlLmFjY291bnQ/Lmxlbmd0aCkge1xuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogei5ab2RJc3N1ZUNvZGUuY3VzdG9tLFxuICAgICAgICBtZXNzYWdlOiBcIkxvY2F0aW9uIG1hcHBpbmdzIHJlcXVpcmUgYXQgbGVhc3Qgb25lIC0tYWNjb3VudCBmbGFnLlwiLFxuICAgICAgICBwYXRoOiBbXCJsb2NhdGlvblwiXSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5hY2NvdW50ICYmIHZhbHVlLmxvY2F0aW9uKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEFjY291bnRzID0gbmV3IFNldCh2YWx1ZS5hY2NvdW50KTtcbiAgICAgIGZvciAoY29uc3QgbWFwcGluZyBvZiB2YWx1ZS5sb2NhdGlvbikge1xuICAgICAgICBpZiAoIXNlbGVjdGVkQWNjb3VudHMuaGFzKG1hcHBpbmcuYWNjb3VudElkKSkge1xuICAgICAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgICBjb2RlOiB6LlpvZElzc3VlQ29kZS5jdXN0b20sXG4gICAgICAgICAgICBtZXNzYWdlOiBgTG9jYXRpb24gbWFwcGluZyByZWZlcmVuY2VzIHVua25vd24gYWNjb3VudCBcIiR7bWFwcGluZy5hY2NvdW50SWR9XCIuYCxcbiAgICAgICAgICAgIHBhdGg6IFtcImxvY2F0aW9uXCJdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IHR5cGUgQWRkRW52aXJvbm1lbnRDb21tYW5kT3B0aW9ucyA9IHouaW5mZXI8XG4gIHR5cGVvZiBhZGRFbnZpcm9ubWVudENvbW1hbmRPcHRpb25zU2NoZW1hXG4+O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBZGRFbnZpcm9ubWVudENvbW1hbmRPcHRpb25zID0gKFxuICBpbnB1dDogdW5rbm93bixcbik6IEFkZEVudmlyb25tZW50Q29tbWFuZE9wdGlvbnMgPT4ge1xuICBjb25zdCByZXN1bHQgPSBhZGRFbnZpcm9ubWVudENvbW1hbmRPcHRpb25zU2NoZW1hLnNhZmVQYXJzZShpbnB1dCk7XG4gIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBhZGQgZW52aXJvbm1lbnQgY29tbWFuZCBvcHRpb25zOlxcbiR7ei5wcmV0dGlmeUVycm9yKHJlc3VsdC5lcnJvcil9YCxcbiAgICAgIHtcbiAgICAgICAgY2F1c2U6IHJlc3VsdC5lcnJvcixcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuZGF0YTtcbn07XG5cbmNvbnN0IGJ1aWxkQmFzZUVudmlyb25tZW50SW5pdGlhbEFuc3dlcnMgPSAoXG4gIG9wdGlvbnM6IEFkZEVudmlyb25tZW50Q29tbWFuZE9wdGlvbnMsXG4pOiBEZXBsb3ltZW50RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyA9PiB7XG4gIGNvbnN0IGVudiA9IHtcbiAgICAuLi4ob3B0aW9ucy5uYW1lICYmIHsgbmFtZTogb3B0aW9ucy5uYW1lIH0pLFxuICAgIC4uLihvcHRpb25zLnByZWZpeCAmJiB7IHByZWZpeDogb3B0aW9ucy5wcmVmaXggfSksXG4gICAgLi4uKG9wdGlvbnMuYWNjb3VudD8ubGVuZ3RoICYmIHtcbiAgICAgIGNsb3VkQWNjb3VudElkczogQXJyYXkuZnJvbShuZXcgU2V0KG9wdGlvbnMuYWNjb3VudCkpLFxuICAgIH0pLFxuICAgIC4uLihvcHRpb25zLmxvY2F0aW9uPy5sZW5ndGggJiYge1xuICAgICAgbG9jYXRpb25zOiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIG9wdGlvbnMubG9jYXRpb24ubWFwKCh7IGFjY291bnRJZCwgbG9jYXRpb24gfSkgPT4gW1xuICAgICAgICAgIGFjY291bnRJZCxcbiAgICAgICAgICBsb2NhdGlvbiBhcyBBenVyZUxvY2F0aW9uLFxuICAgICAgICBdKSxcbiAgICAgICksXG4gICAgfSksXG4gIH07XG5cbiAgY29uc3QgdGFncyA9IHtcbiAgICAuLi4ob3B0aW9ucy5idXNpbmVzc1VuaXQgJiYgeyBCdXNpbmVzc1VuaXQ6IG9wdGlvbnMuYnVzaW5lc3NVbml0IH0pLFxuICAgIC4uLihvcHRpb25zLm1hbmFnZW1lbnRUZWFtICYmIHsgTWFuYWdlbWVudFRlYW06IG9wdGlvbnMubWFuYWdlbWVudFRlYW0gfSksXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oT2JqZWN0LmtleXMoZW52KS5sZW5ndGggPiAwICYmIHsgZW52IH0pLFxuICAgIC4uLihPYmplY3Qua2V5cyh0YWdzKS5sZW5ndGggPiAwICYmIHsgdGFncyB9KSxcbiAgICAuLi4ob3B0aW9ucy5kb21haW4gJiYgeyB3b3Jrc3BhY2U6IHsgZG9tYWluOiBvcHRpb25zLmRvbWFpbiB9IH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVudmlyb25tZW50SW5pdGlhbEFuc3dlcnMgPSBhc3luYyAoXG4gIG9wdGlvbnM6IEFkZEVudmlyb25tZW50Q29tbWFuZE9wdGlvbnMsXG4pOiBQcm9taXNlPERlcGxveW1lbnRFbnZpcm9ubWVudEluaXRpYWxBbnN3ZXJzPiA9PiB7XG4gIGNvbnN0IGluaXRpYWxBbnN3ZXJzID0gYnVpbGRCYXNlRW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyhvcHRpb25zKTtcbiAgY29uc3QgcHJpdmF0ZUtleSA9XG4gICAgb3B0aW9ucy5wcml2YXRlS2V5UGF0aCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiBhd2FpdCByZWFkRmlsZShvcHRpb25zLnByaXZhdGVLZXlQYXRoLCBcInV0ZjhcIikuY2F0Y2goKGNhdXNlKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB0byByZWFkIHByaXZhdGUga2V5IGZpbGUgYXQgXCIke29wdGlvbnMucHJpdmF0ZUtleVBhdGh9XCIuYCxcbiAgICAgICAgICAgIHsgY2F1c2UgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAvLyBGYWlsIGZhc3Qgb24gYW4gZW1wdHkgKG9yIHdoaXRlc3BhY2Utb25seSkga2V5IGZpbGU6IHRoZSBmaWxlIGNvbnRlbnRzIGFyZVxuICAvLyBuZXZlciB0cmltbWVkLCBzbyBhbiBlbXB0eSB2YWx1ZSB3b3VsZCBvdGhlcndpc2Ugc2tpcCB0aGUgcmVjb3ZlcnkgcHJvbXB0XG4gIC8vIGFuZCBzdXJmYWNlIGFzIGFuIG9wYXF1ZSBzY2hlbWEgZXJyb3IgKG9yIGEgc2lsZW50bHkgaW52YWxpZCBrZXkpIGxhdGVyLlxuICBpZiAocHJpdmF0ZUtleSAhPT0gdW5kZWZpbmVkICYmIHByaXZhdGVLZXkudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBQcml2YXRlIGtleSBmaWxlIGF0IFwiJHtvcHRpb25zLnByaXZhdGVLZXlQYXRofVwiIGlzIGVtcHR5LmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFByZWZpbGwgcnVubmVyLWFwcCBjcmVkZW50aWFscyBvbmx5IHdoZW4gYXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgZmxhZyB3YXNcbiAgLy8gcHJvdmlkZWQuIFVuc3BlY2lmaWVkIGZpZWxkcyBzdGF5IGB1bmRlZmluZWRgIG9uIHB1cnBvc2Ugc28gdGhlIGdlbmVyYXRvclxuICAvLyBwcm9tcHRzIGZvciB0aGUgbWlzc2luZyBwaWVjZXMgYW5kIHZhbGlkYXRlcyB0aGUgY29tcGxldGUgc2V0IGxhdGVyLiBXaXRoXG4gIC8vIG5vIGNyZWRlbnRpYWwgZmxhZyBhdCBhbGwsIGxlYXZlIHRoaXMgYHVuZGVmaW5lZGAgdG8ga2VlcCBpbml0aWFsaXphdGlvblxuICAvLyBmdWxseSBpbnRlcmFjdGl2ZS5cbiAgY29uc3QgcnVubmVyQXBwQ3JlZGVudGlhbHMgPVxuICAgIG9wdGlvbnMucnVubmVyQXBwSWQgPT09IHVuZGVmaW5lZCAmJlxuICAgIG9wdGlvbnMuY2xpZW50SWQgPT09IHVuZGVmaW5lZCAmJlxuICAgIG9wdGlvbnMuaW5zdGFsbGF0aW9uSWQgPT09IHVuZGVmaW5lZCAmJlxuICAgIHByaXZhdGVLZXkgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDoge1xuICAgICAgICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkLFxuICAgICAgICAgIGlkOiBvcHRpb25zLnJ1bm5lckFwcElkLFxuICAgICAgICAgIGluc3RhbGxhdGlvbklkOiBvcHRpb25zLmluc3RhbGxhdGlvbklkLFxuICAgICAgICAgIGtleTogcHJpdmF0ZUtleSxcbiAgICAgICAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLmluaXRpYWxBbnN3ZXJzLFxuICAgIC4uLigob3B0aW9ucy55ZXMgfHwgcnVubmVyQXBwQ3JlZGVudGlhbHMpICYmIHtcbiAgICAgIGluaXQ6IHtcbiAgICAgICAgLi4uKG9wdGlvbnMueWVzICYmIHsgY29uZmlybTogdHJ1ZSB9KSxcbiAgICAgICAgLi4uKHJ1bm5lckFwcENyZWRlbnRpYWxzICYmIHsgcnVubmVyQXBwQ3JlZGVudGlhbHMgfSksXG4gICAgICB9LFxuICAgIH0pLFxuICB9O1xufTtcblxuLyoqXG4gKiBBdXRob3JpemUgYSBDbG91ZCBBY2NvdW50IChBenVyZSBTdWJzY3JpcHRpb24sIEFXUyBBY2NvdW50LCAuLi4pLCBjcmVhdGluZyBhIFB1bGwgUmVxdWVzdCBmb3IgZWFjaCBhY2NvdW50IHRoYXQgcmVxdWlyZXMgYXV0aG9yaXphdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGF1dGhvcml6ZUNsb3VkQWNjb3VudHMgPVxuICAoYXV0aG9yaXphdGlvblNlcnZpY2U6IEF1dGhvcml6YXRpb25TZXJ2aWNlKSA9PlxuICAoXG4gICAgZW52UGF5bG9hZDogRW52aXJvbm1lbnRQYXlsb2FkLFxuICApOiBSZXN1bHRBc3luYzxBdXRob3JpemF0aW9uUmVzdWx0W10sIG5ldmVyPiA9PiB7XG4gICAgY29uc3QgYWNjb3VudHNUb0luaXRpYWxpemUgPVxuICAgICAgZW52UGF5bG9hZC5pbml0Py5jbG91ZEFjY291bnRzVG9Jbml0aWFsaXplID8/IFtdO1xuXG4gICAgaWYgKGFjY291bnRzVG9Jbml0aWFsaXplLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9rQXN5bmMoW10pO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJkeC1jbGlcIiwgXCJhZGQtZW52aXJvbm1lbnRcIl0pO1xuICAgIGNvbnN0IHsgbmFtZSwgcHJlZml4IH0gPSBlbnZQYXlsb2FkLmVudjtcbiAgICBjb25zdCBlbnZTaG9ydCA9IGVudmlyb25tZW50U2hvcnRbbmFtZV07XG5cbiAgICBjb25zdCByZXF1ZXN0QWxsID0gYXN5bmMgKCk6IFByb21pc2U8QXV0aG9yaXphdGlvblJlc3VsdFtdPiA9PiB7XG4gICAgICBjb25zdCByZXN1bHRzOiBBdXRob3JpemF0aW9uUmVzdWx0W10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBhY2NvdW50IG9mIGFjY291bnRzVG9Jbml0aWFsaXplKSB7XG4gICAgICAgIGlmICghaXNBenVyZUxvY2F0aW9uKGFjY291bnQuZGVmYXVsdExvY2F0aW9uKSkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICAgICAgXCJTa2lwcGluZyBhdXRob3JpemF0aW9uIGZvciB7YWNjb3VudH06IHVuc3VwcG9ydGVkIGxvY2F0aW9uXCIsXG4gICAgICAgICAgICB7IGFjY291bnQ6IGFjY291bnQuZGlzcGxheU5hbWUgfSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9jU2hvcnQgPSBsb2NhdGlvblNob3J0W2FjY291bnQuZGVmYXVsdExvY2F0aW9uXTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSByZXF1ZXN0QXV0aG9yaXphdGlvbklucHV0U2NoZW1hLnNhZmVQYXJzZSh7XG4gICAgICAgICAgYm9vdHN0cmFwSWRlbnRpdHlJZDogYCR7cHJlZml4fS0ke2VudlNob3J0fS0ke2xvY1Nob3J0fS1ib290c3RyYXAtaWQtMDFgLFxuICAgICAgICAgIGVudlNob3J0LFxuICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICByZXBvTmFtZTogZW52UGF5bG9hZC5naXRodWIucmVwbyxcbiAgICAgICAgICByZXBvT3duZXI6IGVudlBheWxvYWQuZ2l0aHViLm93bmVyLFxuICAgICAgICAgIHN1YnNjcmlwdGlvbk5hbWU6IGFjY291bnQuZGlzcGxheU5hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghaW5wdXQuc3VjY2Vzcykge1xuICAgICAgICAgIGxvZ2dlci53YXJuKFwiU2tpcHBpbmcgYXV0aG9yaXphdGlvbiBmb3Ige2FjY291bnR9OiBpbnZhbGlkIGlucHV0XCIsIHtcbiAgICAgICAgICAgIGFjY291bnQ6IGFjY291bnQuZGlzcGxheU5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhdXRob3JpemF0aW9uU2VydmljZS5yZXF1ZXN0QXV0aG9yaXphdGlvbihcbiAgICAgICAgICBpbnB1dC5kYXRhLFxuICAgICAgICApO1xuXG4gICAgICAgIHJlc3VsdC5tYXRjaChcbiAgICAgICAgICAoYXV0aFJlc3VsdCkgPT4gcmVzdWx0cy5wdXNoKGF1dGhSZXN1bHQpLFxuICAgICAgICAgIChlcnJvcikgPT5cbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiQXV0aG9yaXphdGlvbiByZXF1ZXN0IGZhaWxlZCBmb3Ige2FjY291bnR9OiB7ZXJyb3J9XCIsIHtcbiAgICAgICAgICAgICAgYWNjb3VudDogYWNjb3VudC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfTtcblxuICAgIHJldHVybiBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShyZXF1ZXN0QWxsKCksICgpID0+IFtdKS5vckVsc2UoKCkgPT5cbiAgICAgIG9rQXN5bmMoW10pLFxuICAgICk7XG4gIH07XG5cbnR5cGUgQWRkUmVzdWx0ID0ge1xuICBhdXRob3JpemF0aW9uUHJzOiBBdXRob3JpemF0aW9uUmVzdWx0W107XG4gIHBheWxvYWQ6IEVudmlyb25tZW50UGF5bG9hZDtcbn07XG5cbmNvbnN0IGRpc3BsYXlTdW1tYXJ5ID0gKHJlc3VsdDogQWRkUmVzdWx0KSA9PiB7XG4gIGNvbnN0IHsgYXV0aG9yaXphdGlvblBycyB9ID0gcmVzdWx0O1xuICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbi5ib2xkKFwiXFxuQ2xvdWQgZW52aXJvbm1lbnQgY3JlYXRlZCBzdWNjZXNzZnVsbHkhXCIpKTtcblxuICBsZXQgc3RlcCA9IDE7XG4gIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuLmJvbGQoXCJcXG5OZXh0IFN0ZXBzOlwiKSk7XG4gIGNvbnN0IHByc1dpdGhVcmwgPSBhdXRob3JpemF0aW9uUHJzLmZpbHRlcihcbiAgICAocHIpOiBwciBpcyBBdXRob3JpemF0aW9uUmVzdWx0ICYgeyB1cmw6IHN0cmluZyB9ID0+IHByLnVybCAhPSBudWxsLFxuICApO1xuICBpZiAocHJzV2l0aFVybC5sZW5ndGggPiAwKSB7XG4gICAgY29uc29sZS5sb2coYCR7c3RlcCsrfS4gUmV2aWV3IHRoZSBBenVyZSBhdXRob3JpemF0aW9uIFB1bGwgUmVxdWVzdChzKTpgKTtcbiAgICBmb3IgKGNvbnN0IGF1dGhQciBvZiBwcnNXaXRoVXJsKSB7XG4gICAgICBjb25zb2xlLmxvZyhgICAgLSAke2NoYWxrLnVuZGVybGluZShhdXRoUHIudXJsKX1gKTtcbiAgICB9XG4gIH1cbiAgY29uc29sZS5sb2coXG4gICAgYCR7c3RlcH0uIFZpc2l0ICR7Y2hhbGsudW5kZXJsaW5lKFwiaHR0cHM6Ly9keC5wYWdvcGEuaXQvZ2V0dGluZy1zdGFydGVkXCIpfSB0byBkZXBsb3kgeW91ciBmaXJzdCBwcm9qZWN0XFxuYCxcbiAgKTtcbn07XG5cbi8qKlxuICogUm91dGVzIHRoZSBzdWNjZXNzZnVsIG91dGNvbWUgdGhyb3VnaCB0aGUgcHJlc2VudGVyOiBKU09OIG1vZGUgZW1pdHMgdGhlXG4gKiBzdHJ1Y3R1cmVkIGVudmVsb3BlIHdoaWxlIHRleHQgbW9kZSByZW5kZXJzIHRoZSBodW1hbi1yZWFkYWJsZSBzdW1tYXJ5LlxuICovXG5jb25zdCByZXBvcnRTdW1tYXJ5ID1cbiAgKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlciwgb3V0cHV0TW9kZTogXCJqc29uXCIgfCBcInRleHRcIikgPT5cbiAgKHJlc3VsdDogQWRkUmVzdWx0KTogdm9pZCA9PiB7XG4gICAgaWYgKG91dHB1dE1vZGUgPT09IFwianNvblwiKSB7XG4gICAgICBwcmVzZW50ZXIucmVwb3J0UmVzdWx0KHJlc3VsdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlTdW1tYXJ5KHJlc3VsdCk7XG4gICAgfVxuICB9O1xuXG5jb25zdCB0cmFja1N0ZXAgPSA8VCwgRT4oXG4gIHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcixcbiAgbmFtZTogc3RyaW5nLFxuICB0YXNrOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBtYXBFcnJvcjogKGNhdXNlOiB1bmtub3duKSA9PiBFLFxuKTogUmVzdWx0QXN5bmM8VCwgRT4gPT5cbiAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UocHJlc2VudGVyLnRyYWNrU3RlcChuYW1lLCB0YXNrKSwgbWFwRXJyb3IpO1xuXG5jb25zdCBhZGRFbnZpcm9ubWVudEFjdGlvbiA9IChcbiAgYXV0aG9yaXphdGlvblNlcnZpY2U6IEF1dGhvcml6YXRpb25TZXJ2aWNlLFxuICBnaXRIdWJTZXJ2aWNlOiBHaXRIdWJTZXJ2aWNlLFxuICBwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIsXG4gIGluaXRpYWxBbnN3ZXJzOiBEZXBsb3ltZW50RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyA9IHt9LFxuKTogUmVzdWx0QXN5bmM8QWRkUmVzdWx0LCBFcnJvcj4gPT5cbiAgcnVuQWRkRW52aXJvbm1lbnRQcmVjb25kaXRpb25zKHByZXNlbnRlcilcbiAgICAuYW5kVGhlbigoKSA9PlxuICAgICAgdHJhY2tTdGVwKFxuICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgIFwiSW5pdGlhbGl6aW5nIGVudmlyb25tZW50IGdlbmVyYXRvci4uLlwiLFxuICAgICAgICBnZXRQbG9wSW5zdGFuY2UsXG4gICAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwbG9wXCIpLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRoZW4oKHBsb3ApID0+XG4gICAgICAvLyBUaGUgcHJvbXB0IHBoYXNlIG11c3QgcnVuIG91dHNpZGUgdHJhY2tTdGVwOiBpbiB0ZXh0IG1vZGUgdHJhY2tTdGVwXG4gICAgICAvLyByZW5kZXJzIGEgc3Bpbm5lciB0aGF0IG9jY3VwaWVzIHRoZSBUVFkgYW5kIGhpZGVzIHRoZSBwcm9tcHRzLlxuICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgIGNvbGxlY3REZXBsb3ltZW50RW52aXJvbm1lbnRQYXlsb2FkKFxuICAgICAgICAgIHBsb3AsXG4gICAgICAgICAgZ2l0SHViU2VydmljZSxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgaW5pdGlhbEFuc3dlcnMsXG4gICAgICAgICksXG4gICAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gcnVuIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50IGdlbmVyYXRvclwiKSxcbiAgICAgICksXG4gICAgKVxuICAgIC5hbmRUaGVuKCh7IGdlbmVyYXRvciwgcGF5bG9hZCB9KSA9PlxuICAgICAgdHJhY2tTdGVwKFxuICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgIFwiQ3JlYXRpbmcgZW52aXJvbm1lbnQuLi5cIixcbiAgICAgICAgKCkgPT4gcnVuRGVwbG95bWVudEVudmlyb25tZW50QWN0aW9ucyhnZW5lcmF0b3IsIHBheWxvYWQpLFxuICAgICAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudFwiKSxcbiAgICAgICksXG4gICAgKVxuICAgIC5hbmRUaGVuKChwYXlsb2FkKSA9PlxuICAgICAgYXV0aG9yaXplQ2xvdWRBY2NvdW50cyhhdXRob3JpemF0aW9uU2VydmljZSkocGF5bG9hZCkubWFwKFxuICAgICAgICAoYXV0aG9yaXphdGlvblBycykgPT4gKHtcbiAgICAgICAgICBhdXRob3JpemF0aW9uUHJzLFxuICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuXG5leHBvcnQgY29uc3QgbWFrZUFkZENvbW1hbmQgPSAoXG4gIHJlcXVpcmVHaXRIdWJBdXRoOiBHaXRIdWJBdXRoRmFjdG9yeSxcbiAgZW52OiBDbGlFbnYsXG4pOiBDb21tYW5kID0+XG4gIG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImFkZFwiKVxuICAgIC5kZXNjcmlwdGlvbihcIkFkZCBhIG5ldyBjb21wb25lbnQgdG8geW91ciB3b3Jrc3BhY2VcIilcbiAgICAuYWRkQ29tbWFuZChcbiAgICAgIG5ldyBDb21tYW5kKFwiZW52aXJvbm1lbnRcIilcbiAgICAgICAgLmRlc2NyaXB0aW9uKFwiQWRkIGEgbmV3IGRlcGxveW1lbnQgZW52aXJvbm1lbnRcIilcbiAgICAgICAgLmFkZE9wdGlvbihcbiAgICAgICAgICBuZXcgT3B0aW9uKFwiLS1uYW1lIDxuYW1lPlwiLCBcIkVudmlyb25tZW50IG5hbWVcIikuY2hvaWNlcyhbXG4gICAgICAgICAgICBcImRldlwiLFxuICAgICAgICAgICAgXCJ1YXRcIixcbiAgICAgICAgICAgIFwicHJvZFwiLFxuICAgICAgICAgIF0pLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcbiAgICAgICAgICAgIFwiLS1hY2NvdW50IDxzdWJzY3JpcHRpb24taWQ+XCIsXG4gICAgICAgICAgICBcIkNsb3VkIGFjY291bnQgc3Vic2NyaXB0aW9uIGlkXCIsXG4gICAgICAgICAgKS5hcmdQYXJzZXIoYXBwZW5kT3B0aW9uVmFsdWUpLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcbiAgICAgICAgICAgIFwiLS1sb2NhdGlvbiA8c3Vic2NyaXB0aW9uLWlkPXJlZ2lvbj5cIixcbiAgICAgICAgICAgIFwiRGVmYXVsdCBBenVyZSBsb2NhdGlvbiBmb3IgYSBzZWxlY3RlZCBhY2NvdW50XCIsXG4gICAgICAgICAgKS5hcmdQYXJzZXIoYXBwZW5kT3B0aW9uVmFsdWUpLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbihcIi0tcHJlZml4IDxwcmVmaXg+XCIsIFwiRW52aXJvbm1lbnQgcHJlZml4XCIpKVxuICAgICAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oXCItLWRvbWFpbiA8ZG9tYWluPlwiLCBcIldvcmtzcGFjZSBkb21haW5cIikpXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcIi0tYnVzaW5lc3MtdW5pdCA8YnVzaW5lc3MtdW5pdD5cIiwgXCJCdXNpbmVzcyB1bml0IHRhZ1wiKSxcbiAgICAgICAgKVxuICAgICAgICAuYWRkT3B0aW9uKFxuICAgICAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgICAgICBcIi0tbWFuYWdlbWVudC10ZWFtIDxtYW5hZ2VtZW50LXRlYW0+XCIsXG4gICAgICAgICAgICBcIk1hbmFnZW1lbnQgdGVhbSB0YWdcIixcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcbiAgICAgICAgICAgIFwiLXksIC0teWVzXCIsXG4gICAgICAgICAgICBcIkNvbmZpcm0gZW52aXJvbm1lbnQgaW5pdGlhbGl6YXRpb24gd2l0aG91dCBwcm9tcHRpbmdcIixcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcIi0tcnVubmVyLWFwcC1pZCA8cnVubmVyLWFwcC1pZD5cIiwgXCJHaXRIdWIgUnVubmVyIEFwcCBJRFwiKSxcbiAgICAgICAgKVxuICAgICAgICAuYWRkT3B0aW9uKFxuICAgICAgICAgIG5ldyBPcHRpb24oXCItLWNsaWVudC1pZCA8Y2xpZW50LWlkPlwiLCBcIkdpdEh1YiBSdW5uZXIgQXBwIENsaWVudCBJRFwiKSxcbiAgICAgICAgKVxuICAgICAgICAuYWRkT3B0aW9uKFxuICAgICAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgICAgICBcIi0taW5zdGFsbGF0aW9uLWlkIDxpbnN0YWxsYXRpb24taWQ+XCIsXG4gICAgICAgICAgICBcIkdpdEh1YiBSdW5uZXIgQXBwIEluc3RhbGxhdGlvbiBJRFwiLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgLmFkZE9wdGlvbihcbiAgICAgICAgICBuZXcgT3B0aW9uKFxuICAgICAgICAgICAgXCItLXByaXZhdGUta2V5LXBhdGggPHByaXZhdGUta2V5LXBhdGg+XCIsXG4gICAgICAgICAgICBcIlBhdGggdG8gYSBsb2NhbCBHaXRIdWIgUnVubmVyIEFwcCBwcml2YXRlIGtleSBmaWxlXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICAuYWN0aW9uKGFzeW5jIGZ1bmN0aW9uIChvcHRpb25zOiB1bmtub3duKSB7XG4gICAgICAgICAgY29uc3QgeyBvdXRwdXQgfSA9IHRoaXMub3B0c1dpdGhHbG9iYWxzPEdsb2JhbE9wdGlvbnM+KCk7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0TW9kZSA9IHJlc29sdmVPdXRwdXRNb2RlKGVudiwgb3V0cHV0KTtcbiAgICAgICAgICBjb25zdCBwcmVzZW50ZXIgPSBjcmVhdGVDb21tYW5kUHJlc2VudGVyKG91dHB1dE1vZGUpO1xuXG4gICAgICAgICAgYXdhaXQgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+XG4gICAgICAgICAgICAgIHBhcnNlQWRkRW52aXJvbm1lbnRDb21tYW5kT3B0aW9ucyhvcHRpb25zKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoY2F1c2UpID0+XG4gICAgICAgICAgICAgIGNhdXNlIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICA/IGNhdXNlXG4gICAgICAgICAgICAgICAgOiBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gcGFyc2UgYWRkIGVudmlyb25tZW50IGNvbW1hbmQgb3B0aW9uc1wiLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhdXNlLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmFuZFRoZW4oKGFkZEVudmlyb25tZW50T3B0aW9ucykgPT5cbiAgICAgICAgICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgICAgICAgICAgZ2V0RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyhhZGRFbnZpcm9ubWVudE9wdGlvbnMpLFxuICAgICAgICAgICAgICAgIChjYXVzZSkgPT5cbiAgICAgICAgICAgICAgICAgIGNhdXNlIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgPyBjYXVzZVxuICAgICAgICAgICAgICAgICAgICA6IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiRmFpbGVkIHRvIGxvYWQgYWRkIGVudmlyb25tZW50IGluaXRpYWwgYW5zd2Vyc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKS5hbmRUaGVuKChpbml0aWFsQW5zd2VycykgPT5cbiAgICAgICAgICAgICAgICByZXF1aXJlR2l0SHViQXV0aCgpLmFuZFRoZW4oXG4gICAgICAgICAgICAgICAgICAoeyBhdXRob3JpemF0aW9uU2VydmljZSwgZ2l0SHViU2VydmljZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICBhZGRFbnZpcm9ubWVudEFjdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpemF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICBnaXRIdWJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsQW5zd2VycyxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLm1hdGNoKFxuICAgICAgICAgICAgICByZXBvcnRTdW1tYXJ5KHByZXNlbnRlciwgb3V0cHV0TW9kZSksXG4gICAgICAgICAgICAgIHJlcG9ydENvbW1hbmRFcnJvcih0aGlzLCBwcmVzZW50ZXIsIG91dHB1dE1vZGUpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgKTtcbiJdfQ==
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbW1hbmRlci9jb21tYW5kcy9hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQjs7Ozs7OztHQU9HO0FBQ0gsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFVM0IsT0FBTyxFQUdMLCtCQUErQixHQUNoQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUVMLGVBQWUsRUFDZixhQUFhLEdBQ2QsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDL0UsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxlQUFlLEVBQ2YsK0JBQStCLEdBQ2hDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsaUJBQWlCLEdBQ2xCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTNELE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsS0FBYSxFQUNiLFdBQXFCLEVBQUUsRUFDYixFQUFFLENBQUMs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ZS9sb2d0YXBlXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG4vKipcbiAqIEFkZCBjb21tYW5kIC0gU2NhZmZvbGQgbmV3IGNvbXBvbmVudHMgaW50byBleGlzdGluZyB3b3Jrc3BhY2VzLlxuICpcbiAqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgdGhlIGBkeCBhZGRgIGNvbW1hbmQgYW5kIGtlZXBzIHRoZSBDTEktc3BlY2lmaWMgZmxhZ1xuICogcGFyc2luZy92YWxpZGF0aW9uIGNsb3NlIHRvIHRoZSBDb21tYW5kZXIgYWRhcHRlci4gSXQgdHVybnMgc3VwcG9ydGVkIGZsYWdzXG4gKiBpbnRvIHByZWZpbGxlZCBhbnN3ZXJzIGZvciB0aGUgcGxvcCBnZW5lcmF0b3Igc28gdGhlIGNvbW1hbmQgY2FuIHJ1biB3aXRoIGFcbiAqIG1peCBvZiBub24taW50ZXJhY3RpdmUgaW5wdXRzIGFuZCBndWlkZWQgcHJvbXB0cy5cbiAqL1xuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgb2tBc3luYywgUmVzdWx0QXN5bmMgfSBmcm9tIFwibmV2ZXJ0aHJvd1wiO1xuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2QvdjRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9jb21tYW5kLXByZXNlbnRlci5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBJbml0aWFsQW5zd2VycyBhcyBEZXBsb3ltZW50RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyxcbiAgUGF5bG9hZCBhcyBFbnZpcm9ubWVudFBheWxvYWQsXG59IGZyb20gXCIuLi8uLi9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgQ2xpRW52IH0gZnJvbSBcIi4uL2Vudi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxPcHRpb25zIH0gZnJvbSBcIi4uL2dsb2JhbC1vcHRpb25zLmpzXCI7XG5cbmltcG9ydCB7XG4gIEF1dGhvcml6YXRpb25SZXN1bHQsXG4gIEF1dGhvcml6YXRpb25TZXJ2aWNlLFxuICByZXF1ZXN0QXV0aG9yaXphdGlvbklucHV0U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2F1dGhvcml6YXRpb24uanNcIjtcbmltcG9ydCB7IEdpdEh1YkF1dGhGYWN0b3J5IH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9kZXBlbmRlbmNpZXMuanNcIjtcbmltcG9ydCB7XG4gIGVudmlyb25tZW50U2NoZW1hLFxuICBnZXRFbnZpcm9ubWVudFNob3J0LFxufSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2Vudmlyb25tZW50LmpzXCI7XG5pbXBvcnQgeyB0eXBlIEdpdEh1YlNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2dpdGh1Yi5qc1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBBenVyZUxvY2F0aW9uLFxuICBpc0F6dXJlTG9jYXRpb24sXG4gIGxvY2F0aW9uU2hvcnQsXG59IGZyb20gXCIuLi8uLi9henVyZS9sb2NhdGlvbnMuanNcIjtcbmltcG9ydCB7IHdvcmtzcGFjZVNjaGVtYSB9IGZyb20gXCIuLi8uLi9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvcHJvbXB0cy5qc1wiO1xuaW1wb3J0IHtcbiAgY29sbGVjdERlcGxveW1lbnRFbnZpcm9ubWVudFBheWxvYWQsXG4gIGdldFBsb3BJbnN0YW5jZSxcbiAgcnVuRGVwbG95bWVudEVudmlyb25tZW50QWN0aW9ucyxcbn0gZnJvbSBcIi4uLy4uL3Bsb3AvaW5kZXguanNcIjtcbmltcG9ydCB7IGFzRXJyb3IsIHJlcG9ydENvbW1hbmRFcnJvciB9IGZyb20gXCIuLi9jb21tYW5kLWVycm9ycy5qc1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlQ29tbWFuZFByZXNlbnRlcixcbiAgcmVzb2x2ZU91dHB1dE1vZGUsXG59IGZyb20gXCIuLi9wcmVzZW50ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBydW5BZGRFbnZpcm9ubWVudFByZWNvbmRpdGlvbnMgfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmNvbnN0IGFwcGVuZE9wdGlvblZhbHVlID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICBwcmV2aW91czogc3RyaW5nW10gPSBbXSxcbik6IHN0cmluZ1tdID0+IFsuLi5wcmV2aW91cywgdmFsdWVdO1xuXG5jb25zdCBsb2NhdGlvbk9wdGlvblNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC50cmltKClcbiAgLnRyYW5zZm9ybSgodmFsdWUsIGN0eCkgPT4ge1xuICAgIGNvbnN0IFtyYXdBY2NvdW50SWQsIC4uLnJhd0xvY2F0aW9uUGFydHNdID0gdmFsdWUuc3BsaXQoXCI9XCIpO1xuICAgIGNvbnN0IGFjY291bnRJZCA9IHJhd0FjY291bnRJZD8udHJpbSgpO1xuICAgIGNvbnN0IGxvY2F0aW9uID0gcmF3TG9jYXRpb25QYXJ0cy5qb2luKFwiPVwiKS50cmltKCk7XG5cbiAgICBpZiAoIWFjY291bnRJZCB8fCByYXdMb2NhdGlvblBhcnRzLmxlbmd0aCA9PT0gMCB8fCBsb2NhdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgIGNvZGU6IHouWm9kSXNzdWVDb2RlLmN1c3RvbSxcbiAgICAgICAgbWVzc2FnZTogXCJMb2NhdGlvbiBtdXN0IHVzZSB0aGUgZm9ybWF0IDxzdWJzY3JpcHRpb24taWQ9cmVnaW9uPi5cIixcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHouTkVWRVI7XG4gICAgfVxuXG4gICAgaWYgKCFpc0F6dXJlTG9jYXRpb24obG9jYXRpb24pKSB7XG4gICAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgICBjb2RlOiB6LlpvZElzc3VlQ29kZS5jdXN0b20sXG4gICAgICAgIG1lc3NhZ2U6IGBVbnN1cHBvcnRlZCBBenVyZSBsb2NhdGlvbiBcIiR7bG9jYXRpb259XCIuYCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHouTkVWRVI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYWNjb3VudElkLCBsb2NhdGlvbiB9O1xuICB9KTtcblxuY29uc3QgYWRkRW52aXJvbm1lbnRDb21tYW5kT3B0aW9uc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgYWNjb3VudDogelxuICAgICAgLmFycmF5KHouc3RyaW5nKCkudHJpbSgpLm1pbigxLCBcIkNsb3VkIGFjY291bnQgaWQgY2Fubm90IGJlIGVtcHR5XCIpKVxuICAgICAgLm9wdGlvbmFsKCksXG4gICAgYnVzaW5lc3NVbml0OiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICAgIC5taW4oMSwgXCJCdXNpbmVzcyB1bml0IGNhbm5vdCBiZSBlbXB0eVwiKVxuICAgICAgLm9wdGlvbmFsKCksXG4gICAgY2xpZW50SWQ6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxLCBcIkNsaWVudCBpZCBjYW5ub3QgYmUgZW1wdHlcIikub3B0aW9uYWwoKSxcbiAgICBkb21haW46IHdvcmtzcGFjZVNjaGVtYS5zaGFwZS5kb21haW4ub3B0aW9uYWwoKSxcbiAgICBpbnN0YWxsYXRpb25JZDogelxuICAgICAgLnN0cmluZygpXG4gICAgICAudHJpbSgpXG4gICAgICAubWluKDEsIFwiSW5zdGFsbGF0aW9uIGlkIGNhbm5vdCBiZSBlbXB0eVwiKVxuICAgICAgLm9wdGlvbmFsKCksXG4gICAgbG9jYXRpb246IHouYXJyYXkobG9jYXRpb25PcHRpb25TY2hlbWEpLm9wdGlvbmFsKCksXG4gICAgbWFuYWdlbWVudFRlYW06IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLm1pbigxLCBcIk1hbmFnZW1lbnQgdGVhbSBjYW5ub3QgYmUgZW1wdHlcIilcbiAgICAgIC5vcHRpb25hbCgpLFxuICAgIG5hbWU6IGVudmlyb25tZW50U2NoZW1hLnNoYXBlLm5hbWUub3B0aW9uYWwoKSxcbiAgICBwcmVmaXg6IGVudmlyb25tZW50U2NoZW1hLnNoYXBlLnByZWZpeC5vcHRpb25hbCgpLFxuICAgIHByaXZhdGVLZXlQYXRoOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICAgIC5taW4oMSwgXCJQcml2YXRlIGtleSBwYXRoIGNhbm5vdCBiZSBlbXB0eVwiKVxuICAgICAgLm9wdGlvbmFsKCksXG4gICAgcnVubmVyQXBwSWQ6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLm1pbigxLCBcIlJ1bm5lciBhcHAgaWQgY2Fubm90IGJlIGVtcHR5XCIpXG4gICAgICAub3B0aW9uYWwoKSxcbiAgICB5ZXM6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdXBlclJlZmluZSgodmFsdWUsIGN0eCkgPT4ge1xuICAgIGlmICh2YWx1ZS5sb2NhdGlvbiAmJiAhdmFsdWUuYWNjb3VudD8ubGVuZ3RoKSB7XG4gICAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgICBjb2RlOiB6LlpvZElzc3VlQ29kZS5jdXN0b20sXG4gICAgICAgIG1lc3NhZ2U6IFwiTG9jYXRpb24gbWFwcGluZ3MgcmVxdWlyZSBhdCBsZWFzdCBvbmUgLS1hY2NvdW50IGZsYWcuXCIsXG4gICAgICAgIHBhdGg6IFtcImxvY2F0aW9uXCJdLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmFjY291bnQgJiYgdmFsdWUubG9jYXRpb24pIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQWNjb3VudHMgPSBuZXcgU2V0KHZhbHVlLmFjY291bnQpO1xuICAgICAgZm9yIChjb25zdCBtYXBwaW5nIG9mIHZhbHVlLmxvY2F0aW9uKSB7XG4gICAgICAgIGlmICghc2VsZWN0ZWRBY2NvdW50cy5oYXMobWFwcGluZy5hY2NvdW50SWQpKSB7XG4gICAgICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgICAgIGNvZGU6IHouWm9kSXNzdWVDb2RlLmN1c3RvbSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBMb2NhdGlvbiBtYXBwaW5nIHJlZmVyZW5jZXMgdW5rbm93biBhY2NvdW50IFwiJHttYXBwaW5nLmFjY291bnRJZH1cIi5gLFxuICAgICAgICAgICAgcGF0aDogW1wibG9jYXRpb25cIl0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgdHlwZSBBZGRFbnZpcm9ubWVudENvbW1hbmRPcHRpb25zID0gei5pbmZlcjxcbiAgdHlwZW9mIGFkZEVudmlyb25tZW50Q29tbWFuZE9wdGlvbnNTY2hlbWFcbj47XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFkZEVudmlyb25tZW50Q29tbWFuZE9wdGlvbnMgPSAoXG4gIGlucHV0OiB1bmtub3duLFxuKTogQWRkRW52aXJvbm1lbnRDb21tYW5kT3B0aW9ucyA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGFkZEVudmlyb25tZW50Q29tbWFuZE9wdGlvbnNTY2hlbWEuc2FmZVBhcnNlKGlucHV0KTtcbiAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIGFkZCBlbnZpcm9ubWVudCBjb21tYW5kIG9wdGlvbnM6XFxuJHt6LnByZXR0aWZ5RXJyb3IocmVzdWx0LmVycm9yKX1gLFxuICAgICAge1xuICAgICAgICBjYXVzZTogcmVzdWx0LmVycm9yLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5kYXRhO1xufTtcblxuY29uc3QgYnVpbGRCYXNlRW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyA9IChcbiAgb3B0aW9uczogQWRkRW52aXJvbm1lbnRDb21tYW5kT3B0aW9ucyxcbik6IERlcGxveW1lbnRFbnZpcm9ubWVudEluaXRpYWxBbnN3ZXJzID0+IHtcbiAgY29uc3QgZW52ID0ge1xuICAgIC4uLihvcHRpb25zLm5hbWUgJiYgeyBuYW1lOiBvcHRpb25zLm5hbWUgfSksXG4gICAgLi4uKG9wdGlvbnMucHJlZml4ICYmIHsgcHJlZml4OiBvcHRpb25zLnByZWZpeCB9KSxcbiAgICAuLi4ob3B0aW9ucy5hY2NvdW50Py5sZW5ndGggJiYge1xuICAgICAgY2xvdWRBY2NvdW50SWRzOiBBcnJheS5mcm9tKG5ldyBTZXQob3B0aW9ucy5hY2NvdW50KSksXG4gICAgfSksXG4gICAgLi4uKG9wdGlvbnMubG9jYXRpb24/Lmxlbmd0aCAmJiB7XG4gICAgICBsb2NhdGlvbnM6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgb3B0aW9ucy5sb2NhdGlvbi5tYXAoKHsgYWNjb3VudElkLCBsb2NhdGlvbiB9KSA9PiBbXG4gICAgICAgICAgYWNjb3VudElkLFxuICAgICAgICAgIGxvY2F0aW9uIGFzIEF6dXJlTG9jYXRpb24sXG4gICAgICAgIF0pLFxuICAgICAgKSxcbiAgICB9KSxcbiAgfTtcblxuICBjb25zdCB0YWdzID0ge1xuICAgIC4uLihvcHRpb25zLmJ1c2luZXNzVW5pdCAmJiB7IEJ1c2luZXNzVW5pdDogb3B0aW9ucy5idXNpbmVzc1VuaXQgfSksXG4gICAgLi4uKG9wdGlvbnMubWFuYWdlbWVudFRlYW0gJiYgeyBNYW5hZ2VtZW50VGVhbTogb3B0aW9ucy5tYW5hZ2VtZW50VGVhbSB9KSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLihPYmplY3Qua2V5cyhlbnYpLmxlbmd0aCA+IDAgJiYgeyBlbnYgfSksXG4gICAgLi4uKE9iamVjdC5rZXlzKHRhZ3MpLmxlbmd0aCA+IDAgJiYgeyB0YWdzIH0pLFxuICAgIC4uLihvcHRpb25zLmRvbWFpbiAmJiB7IHdvcmtzcGFjZTogeyBkb21haW46IG9wdGlvbnMuZG9tYWluIH0gfSksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyA9IGFzeW5jIChcbiAgb3B0aW9uczogQWRkRW52aXJvbm1lbnRDb21tYW5kT3B0aW9ucyxcbik6IFByb21pc2U8RGVwbG95bWVudEVudmlyb25tZW50SW5pdGlhbEFuc3dlcnM+ID0+IHtcbiAgY29uc3QgaW5pdGlhbEFuc3dlcnMgPSBidWlsZEJhc2VFbnZpcm9ubWVudEluaXRpYWxBbnN3ZXJzKG9wdGlvbnMpO1xuICBjb25zdCBwcml2YXRlS2V5ID1cbiAgICBvcHRpb25zLnByaXZhdGVLZXlQYXRoID09PSB1bmRlZmluZWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IGF3YWl0IHJlYWRGaWxlKG9wdGlvbnMucHJpdmF0ZUtleVBhdGgsIFwidXRmOFwiKS5jYXRjaCgoY2F1c2UpID0+IHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIHJlYWQgcHJpdmF0ZSBrZXkgZmlsZSBhdCBcIiR7b3B0aW9ucy5wcml2YXRlS2V5UGF0aH1cIi5gLFxuICAgICAgICAgICAgeyBjYXVzZSB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gIC8vIEZhaWwgZmFzdCBvbiBhbiBlbXB0eSAob3Igd2hpdGVzcGFjZS1vbmx5KSBrZXkgZmlsZTogdGhlIGZpbGUgY29udGVudHMgYXJlXG4gIC8vIG5ldmVyIHRyaW1tZWQsIHNvIGFuIGVtcHR5IHZhbHVlIHdvdWxkIG90aGVyd2lzZSBza2lwIHRoZSByZWNvdmVyeSBwcm9tcHRcbiAgLy8gYW5kIHN1cmZhY2UgYXMgYW4gb3BhcXVlIHNjaGVtYSBlcnJvciAob3IgYSBzaWxlbnRseSBpbnZhbGlkIGtleSkgbGF0ZXIuXG4gIGlmIChwcml2YXRlS2V5ICE9PSB1bmRlZmluZWQgJiYgcHJpdmF0ZUtleS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFByaXZhdGUga2V5IGZpbGUgYXQgXCIke29wdGlvbnMucHJpdmF0ZUtleVBhdGh9XCIgaXMgZW1wdHkuYCxcbiAgICApO1xuICB9XG5cbiAgLy8gUHJlZmlsbCBydW5uZXItYXBwIGNyZWRlbnRpYWxzIG9ubHkgd2hlbiBhdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBmbGFnIHdhc1xuICAvLyBwcm92aWRlZC4gVW5zcGVjaWZpZWQgZmllbGRzIHN0YXkgYHVuZGVmaW5lZGAgb24gcHVycG9zZSBzbyB0aGUgZ2VuZXJhdG9yXG4gIC8vIHByb21wdHMgZm9yIHRoZSBtaXNzaW5nIHBpZWNlcyBhbmQgdmFsaWRhdGVzIHRoZSBjb21wbGV0ZSBzZXQgbGF0ZXIuIFdpdGhcbiAgLy8gbm8gY3JlZGVudGlhbCBmbGFnIGF0IGFsbCwgbGVhdmUgdGhpcyBgdW5kZWZpbmVkYCB0byBrZWVwIGluaXRpYWxpemF0aW9uXG4gIC8vIGZ1bGx5IGludGVyYWN0aXZlLlxuICBjb25zdCBydW5uZXJBcHBDcmVkZW50aWFscyA9XG4gICAgb3B0aW9ucy5ydW5uZXJBcHBJZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgb3B0aW9ucy5jbGllbnRJZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgb3B0aW9ucy5pbnN0YWxsYXRpb25JZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgcHJpdmF0ZUtleSA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiB7XG4gICAgICAgICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICAgICAgaWQ6IG9wdGlvbnMucnVubmVyQXBwSWQsXG4gICAgICAgICAgaW5zdGFsbGF0aW9uSWQ6IG9wdGlvbnMuaW5zdGFsbGF0aW9uSWQsXG4gICAgICAgICAga2V5OiBwcml2YXRlS2V5LFxuICAgICAgICB9O1xuXG4gIHJldHVybiB7XG4gICAgLi4uaW5pdGlhbEFuc3dlcnMsXG4gICAgLi4uKChvcHRpb25zLnllcyB8fCBydW5uZXJBcHBDcmVkZW50aWFscykgJiYge1xuICAgICAgaW5pdDoge1xuICAgICAgICAuLi4ob3B0aW9ucy55ZXMgJiYgeyBjb25maXJtOiB0cnVlIH0pLFxuICAgICAgICAuLi4ocnVubmVyQXBwQ3JlZGVudGlhbHMgJiYgeyBydW5uZXJBcHBDcmVkZW50aWFscyB9KSxcbiAgICAgIH0sXG4gICAgfSksXG4gIH07XG59O1xuXG4vKipcbiAqIEF1dGhvcml6ZSBhIENsb3VkIEFjY291bnQgKEF6dXJlIFN1YnNjcmlwdGlvbiwgQVdTIEFjY291bnQsIC4uLiksIGNyZWF0aW5nIGEgUHVsbCBSZXF1ZXN0IGZvciBlYWNoIGFjY291bnQgdGhhdCByZXF1aXJlcyBhdXRob3JpemF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgYXV0aG9yaXplQ2xvdWRBY2NvdW50cyA9XG4gIChhdXRob3JpemF0aW9uU2VydmljZTogQXV0aG9yaXphdGlvblNlcnZpY2UpID0+XG4gIChcbiAgICBlbnZQYXlsb2FkOiBFbnZpcm9ubWVudFBheWxvYWQsXG4gICk6IFJlc3VsdEFzeW5jPEF1dGhvcml6YXRpb25SZXN1bHRbXSwgbmV2ZXI+ID0+IHtcbiAgICBjb25zdCBhY2NvdW50c1RvSW5pdGlhbGl6ZSA9XG4gICAgICBlbnZQYXlsb2FkLmluaXQ/LmNsb3VkQWNjb3VudHNUb0luaXRpYWxpemUgPz8gW107XG5cbiAgICBpZiAoYWNjb3VudHNUb0luaXRpYWxpemUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2tBc3luYyhbXSk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImFkZC1lbnZpcm9ubWVudFwiXSk7XG4gICAgY29uc3QgeyBuYW1lLCBwcmVmaXggfSA9IGVudlBheWxvYWQuZW52O1xuICAgIGNvbnN0IGVudlNob3J0ID0gZ2V0RW52aXJvbm1lbnRTaG9ydChuYW1lKTtcblxuICAgIGNvbnN0IHJlcXVlc3RBbGwgPSBhc3luYyAoKTogUHJvbWlzZTxBdXRob3JpemF0aW9uUmVzdWx0W10+ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IEF1dGhvcml6YXRpb25SZXN1bHRbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY291bnQgb2YgYWNjb3VudHNUb0luaXRpYWxpemUpIHtcbiAgICAgICAgaWYgKCFpc0F6dXJlTG9jYXRpb24oYWNjb3VudC5kZWZhdWx0TG9jYXRpb24pKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgICBcIlNraXBwaW5nIGF1dGhvcml6YXRpb24gZm9yIHthY2NvdW50fTogdW5zdXBwb3J0ZWQgbG9jYXRpb25cIixcbiAgICAgICAgICAgIHsgYWNjb3VudDogYWNjb3VudC5kaXNwbGF5TmFtZSB9LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2NTaG9ydCA9IGxvY2F0aW9uU2hvcnRbYWNjb3VudC5kZWZhdWx0TG9jYXRpb25dO1xuICAgICAgICBjb25zdCBpbnB1dCA9IHJlcXVlc3RBdXRob3JpemF0aW9uSW5wdXRTY2hlbWEuc2FmZVBhcnNlKHtcbiAgICAgICAgICBib290c3RyYXBJZGVudGl0eUlkOiBgJHtwcmVmaXh9LSR7ZW52U2hvcnR9LSR7bG9jU2hvcnR9LWJvb3RzdHJhcC1pZC0wMWAsXG4gICAgICAgICAgZW52U2hvcnQsXG4gICAgICAgICAgcHJlZml4LFxuICAgICAgICAgIHJlcG9OYW1lOiBlbnZQYXlsb2FkLmdpdGh1Yi5yZXBvLFxuICAgICAgICAgIHJlcG9Pd25lcjogZW52UGF5bG9hZC5naXRodWIub3duZXIsXG4gICAgICAgICAgc3Vic2NyaXB0aW9uTmFtZTogYWNjb3VudC5kaXNwbGF5TmFtZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFpbnB1dC5zdWNjZXNzKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oXCJTa2lwcGluZyBhdXRob3JpemF0aW9uIGZvciB7YWNjb3VudH06IGludmFsaWQgaW5wdXRcIiwge1xuICAgICAgICAgICAgYWNjb3VudDogYWNjb3VudC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF1dGhvcml6YXRpb25TZXJ2aWNlLnJlcXVlc3RBdXRob3JpemF0aW9uKFxuICAgICAgICAgIGlucHV0LmRhdGEsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmVzdWx0Lm1hdGNoKFxuICAgICAgICAgIChhdXRoUmVzdWx0KSA9PiByZXN1bHRzLnB1c2goYXV0aFJlc3VsdCksXG4gICAgICAgICAgKGVycm9yKSA9PlxuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJBdXRob3JpemF0aW9uIHJlcXVlc3QgZmFpbGVkIGZvciB7YWNjb3VudH06IHtlcnJvcn1cIiwge1xuICAgICAgICAgICAgICBhY2NvdW50OiBhY2NvdW50LmRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9O1xuXG4gICAgcmV0dXJuIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKHJlcXVlc3RBbGwoKSwgKCkgPT4gW10pLm9yRWxzZSgoKSA9PlxuICAgICAgb2tBc3luYyhbXSksXG4gICAgKTtcbiAgfTtcblxudHlwZSBBZGRSZXN1bHQgPSB7XG4gIGF1dGhvcml6YXRpb25QcnM6IEF1dGhvcml6YXRpb25SZXN1bHRbXTtcbiAgcGF5bG9hZDogRW52aXJvbm1lbnRQYXlsb2FkO1xufTtcblxuY29uc3QgZGlzcGxheVN1bW1hcnkgPSAocmVzdWx0OiBBZGRSZXN1bHQpID0+IHtcbiAgY29uc3QgeyBhdXRob3JpemF0aW9uUHJzIH0gPSByZXN1bHQ7XG4gIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuLmJvbGQoXCJcXG5DbG91ZCBlbnZpcm9ubWVudCBjcmVhdGVkIHN1Y2Nlc3NmdWxseSFcIikpO1xuXG4gIGxldCBzdGVwID0gMTtcbiAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4uYm9sZChcIlxcbk5leHQgU3RlcHM6XCIpKTtcbiAgY29uc3QgcHJzV2l0aFVybCA9IGF1dGhvcml6YXRpb25QcnMuZmlsdGVyKFxuICAgIChwcik6IHByIGlzIEF1dGhvcml6YXRpb25SZXN1bHQgJiB7IHVybDogc3RyaW5nIH0gPT4gcHIudXJsICE9IG51bGwsXG4gICk7XG4gIGlmIChwcnNXaXRoVXJsLmxlbmd0aCA+IDApIHtcbiAgICBjb25zb2xlLmxvZyhgJHtzdGVwKyt9LiBSZXZpZXcgdGhlIEF6dXJlIGF1dGhvcml6YXRpb24gUHVsbCBSZXF1ZXN0KHMpOmApO1xuICAgIGZvciAoY29uc3QgYXV0aFByIG9mIHByc1dpdGhVcmwpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAgICAtICR7Y2hhbGsudW5kZXJsaW5lKGF1dGhQci51cmwpfWApO1xuICAgIH1cbiAgfVxuICBjb25zb2xlLmxvZyhcbiAgICBgJHtzdGVwfS4gVmlzaXQgJHtjaGFsay51bmRlcmxpbmUoXCJodHRwczovL2R4LnBhZ29wYS5pdC9nZXR0aW5nLXN0YXJ0ZWRcIil9IHRvIGRlcGxveSB5b3VyIGZpcnN0IHByb2plY3RcXG5gLFxuICApO1xufTtcblxuLyoqXG4gKiBSb3V0ZXMgdGhlIHN1Y2Nlc3NmdWwgb3V0Y29tZSB0aHJvdWdoIHRoZSBwcmVzZW50ZXI6IEpTT04gbW9kZSBlbWl0cyB0aGVcbiAqIHN0cnVjdHVyZWQgZW52ZWxvcGUgd2hpbGUgdGV4dCBtb2RlIHJlbmRlcnMgdGhlIGh1bWFuLXJlYWRhYmxlIHN1bW1hcnkuXG4gKi9cbmNvbnN0IHJlcG9ydFN1bW1hcnkgPVxuICAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLCBvdXRwdXRNb2RlOiBcImpzb25cIiB8IFwidGV4dFwiKSA9PlxuICAocmVzdWx0OiBBZGRSZXN1bHQpOiB2b2lkID0+IHtcbiAgICBpZiAob3V0cHV0TW9kZSA9PT0gXCJqc29uXCIpIHtcbiAgICAgIHByZXNlbnRlci5yZXBvcnRSZXN1bHQocmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGxheVN1bW1hcnkocmVzdWx0KTtcbiAgICB9XG4gIH07XG5cbmNvbnN0IHRyYWNrU3RlcCA9IDxULCBFPihcbiAgcHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLFxuICBuYW1lOiBzdHJpbmcsXG4gIHRhc2s6ICgpID0+IFByb21pc2U8VD4sXG4gIG1hcEVycm9yOiAoY2F1c2U6IHVua25vd24pID0+IEUsXG4pOiBSZXN1bHRBc3luYzxULCBFPiA9PlxuICBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShwcmVzZW50ZXIudHJhY2tTdGVwKG5hbWUsIHRhc2spLCBtYXBFcnJvcik7XG5cbmNvbnN0IGFkZEVudmlyb25tZW50QWN0aW9uID0gKFxuICBhdXRob3JpemF0aW9uU2VydmljZTogQXV0aG9yaXphdGlvblNlcnZpY2UsXG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2UsXG4gIHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcixcbiAgaW5pdGlhbEFuc3dlcnM6IERlcGxveW1lbnRFbnZpcm9ubWVudEluaXRpYWxBbnN3ZXJzID0ge30sXG4pOiBSZXN1bHRBc3luYzxBZGRSZXN1bHQsIEVycm9yPiA9PlxuICBydW5BZGRFbnZpcm9ubWVudFByZWNvbmRpdGlvbnMocHJlc2VudGVyKVxuICAgIC5hbmRUaGVuKCgpID0+XG4gICAgICB0cmFja1N0ZXAoXG4gICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgXCJJbml0aWFsaXppbmcgZW52aXJvbm1lbnQgZ2VuZXJhdG9yLi4uXCIsXG4gICAgICAgIGdldFBsb3BJbnN0YW5jZSxcbiAgICAgICAgYXNFcnJvcihcIkZhaWxlZCB0byBpbml0aWFsaXplIHBsb3BcIiksXG4gICAgICApLFxuICAgIClcbiAgICAuYW5kVGhlbigocGxvcCkgPT5cbiAgICAgIC8vIFRoZSBwcm9tcHQgcGhhc2UgbXVzdCBydW4gb3V0c2lkZSB0cmFja1N0ZXA6IGluIHRleHQgbW9kZSB0cmFja1N0ZXBcbiAgICAgIC8vIHJlbmRlcnMgYSBzcGlubmVyIHRoYXQgb2NjdXBpZXMgdGhlIFRUWSBhbmQgaGlkZXMgdGhlIHByb21wdHMuXG4gICAgICBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShcbiAgICAgICAgY29sbGVjdERlcGxveW1lbnRFbnZpcm9ubWVudFBheWxvYWQoXG4gICAgICAgICAgcGxvcCxcbiAgICAgICAgICBnaXRIdWJTZXJ2aWNlLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBpbml0aWFsQW5zd2VycyxcbiAgICAgICAgKSxcbiAgICAgICAgYXNFcnJvcihcIkZhaWxlZCB0byBydW4gdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgZ2VuZXJhdG9yXCIpLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRoZW4oKHsgZ2VuZXJhdG9yLCBwYXlsb2FkIH0pID0+XG4gICAgICB0cmFja1N0ZXAoXG4gICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgXCJDcmVhdGluZyBlbnZpcm9ubWVudC4uLlwiLFxuICAgICAgICAoKSA9PiBydW5EZXBsb3ltZW50RW52aXJvbm1lbnRBY3Rpb25zKGdlbmVyYXRvciwgcGF5bG9hZCksXG4gICAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50XCIpLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRoZW4oKHBheWxvYWQpID0+XG4gICAgICBhdXRob3JpemVDbG91ZEFjY291bnRzKGF1dGhvcml6YXRpb25TZXJ2aWNlKShwYXlsb2FkKS5tYXAoXG4gICAgICAgIChhdXRob3JpemF0aW9uUHJzKSA9PiAoe1xuICAgICAgICAgIGF1dGhvcml6YXRpb25QcnMsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG5cbmV4cG9ydCBjb25zdCBtYWtlQWRkQ29tbWFuZCA9IChcbiAgcmVxdWlyZUdpdEh1YkF1dGg6IEdpdEh1YkF1dGhGYWN0b3J5LFxuICBlbnY6IENsaUVudixcbik6IENvbW1hbmQgPT5cbiAgbmV3IENvbW1hbmQoKVxuICAgIC5uYW1lKFwiYWRkXCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiQWRkIGEgbmV3IGNvbXBvbmVudCB0byB5b3VyIHdvcmtzcGFjZVwiKVxuICAgIC5hZGRDb21tYW5kKFxuICAgICAgbmV3IENvbW1hbmQoXCJlbnZpcm9ubWVudFwiKVxuICAgICAgICAuZGVzY3JpcHRpb24oXCJBZGQgYSBuZXcgZGVwbG95bWVudCBlbnZpcm9ubWVudFwiKVxuICAgICAgICAuYWRkT3B0aW9uKFxuICAgICAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgICAgICBcIi0tbmFtZSA8bmFtZT5cIixcbiAgICAgICAgICAgIFwiRW52aXJvbm1lbnQgbmFtZSAoZGV2LCB1YXQsIHByb2QsIG9yIHRlbmFudC1xdWFsaWZpZWQgbGlrZSBjZ24tcHJvZClcIixcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcbiAgICAgICAgICAgIFwiLS1hY2NvdW50IDxzdWJzY3JpcHRpb24taWQ+XCIsXG4gICAgICAgICAgICBcIkNsb3VkIGFjY291bnQgc3Vic2NyaXB0aW9uIGlkXCIsXG4gICAgICAgICAgKS5hcmdQYXJzZXIoYXBwZW5kT3B0aW9uVmFsdWUpLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcbiAgICAgICAgICAgIFwiLS1sb2NhdGlvbiA8c3Vic2NyaXB0aW9uLWlkPXJlZ2lvbj5cIixcbiAgICAgICAgICAgIFwiRGVmYXVsdCBBenVyZSBsb2NhdGlvbiBmb3IgYSBzZWxlY3RlZCBhY2NvdW50XCIsXG4gICAgICAgICAgKS5hcmdQYXJzZXIoYXBwZW5kT3B0aW9uVmFsdWUpLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbihcIi0tcHJlZml4IDxwcmVmaXg+XCIsIFwiRW52aXJvbm1lbnQgcHJlZml4XCIpKVxuICAgICAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oXCItLWRvbWFpbiA8ZG9tYWluPlwiLCBcIldvcmtzcGFjZSBkb21haW5cIikpXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcIi0tYnVzaW5lc3MtdW5pdCA8YnVzaW5lc3MtdW5pdD5cIiwgXCJCdXNpbmVzcyB1bml0IHRhZ1wiKSxcbiAgICAgICAgKVxuICAgICAgICAuYWRkT3B0aW9uKFxuICAgICAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgICAgICBcIi0tbWFuYWdlbWVudC10ZWFtIDxtYW5hZ2VtZW50LXRlYW0+XCIsXG4gICAgICAgICAgICBcIk1hbmFnZW1lbnQgdGVhbSB0YWdcIixcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcbiAgICAgICAgICAgIFwiLXksIC0teWVzXCIsXG4gICAgICAgICAgICBcIkNvbmZpcm0gZW52aXJvbm1lbnQgaW5pdGlhbGl6YXRpb24gd2l0aG91dCBwcm9tcHRpbmdcIixcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgbmV3IE9wdGlvbihcIi0tcnVubmVyLWFwcC1pZCA8cnVubmVyLWFwcC1pZD5cIiwgXCJHaXRIdWIgUnVubmVyIEFwcCBJRFwiKSxcbiAgICAgICAgKVxuICAgICAgICAuYWRkT3B0aW9uKFxuICAgICAgICAgIG5ldyBPcHRpb24oXCItLWNsaWVudC1pZCA8Y2xpZW50LWlkPlwiLCBcIkdpdEh1YiBSdW5uZXIgQXBwIENsaWVudCBJRFwiKSxcbiAgICAgICAgKVxuICAgICAgICAuYWRkT3B0aW9uKFxuICAgICAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgICAgICBcIi0taW5zdGFsbGF0aW9uLWlkIDxpbnN0YWxsYXRpb24taWQ+XCIsXG4gICAgICAgICAgICBcIkdpdEh1YiBSdW5uZXIgQXBwIEluc3RhbGxhdGlvbiBJRFwiLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgLmFkZE9wdGlvbihcbiAgICAgICAgICBuZXcgT3B0aW9uKFxuICAgICAgICAgICAgXCItLXByaXZhdGUta2V5LXBhdGggPHByaXZhdGUta2V5LXBhdGg+XCIsXG4gICAgICAgICAgICBcIlBhdGggdG8gYSBsb2NhbCBHaXRIdWIgUnVubmVyIEFwcCBwcml2YXRlIGtleSBmaWxlXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICAuYWN0aW9uKGFzeW5jIGZ1bmN0aW9uIChvcHRpb25zOiB1bmtub3duKSB7XG4gICAgICAgICAgY29uc3QgeyBvdXRwdXQgfSA9IHRoaXMub3B0c1dpdGhHbG9iYWxzPEdsb2JhbE9wdGlvbnM+KCk7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0TW9kZSA9IHJlc29sdmVPdXRwdXRNb2RlKGVudiwgb3V0cHV0KTtcbiAgICAgICAgICBjb25zdCBwcmVzZW50ZXIgPSBjcmVhdGVDb21tYW5kUHJlc2VudGVyKG91dHB1dE1vZGUpO1xuXG4gICAgICAgICAgYXdhaXQgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+XG4gICAgICAgICAgICAgIHBhcnNlQWRkRW52aXJvbm1lbnRDb21tYW5kT3B0aW9ucyhvcHRpb25zKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoY2F1c2UpID0+XG4gICAgICAgICAgICAgIGNhdXNlIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICA/IGNhdXNlXG4gICAgICAgICAgICAgICAgOiBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gcGFyc2UgYWRkIGVudmlyb25tZW50IGNvbW1hbmQgb3B0aW9uc1wiLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhdXNlLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmFuZFRoZW4oKGFkZEVudmlyb25tZW50T3B0aW9ucykgPT5cbiAgICAgICAgICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgICAgICAgICAgZ2V0RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyhhZGRFbnZpcm9ubWVudE9wdGlvbnMpLFxuICAgICAgICAgICAgICAgIChjYXVzZSkgPT5cbiAgICAgICAgICAgICAgICAgIGNhdXNlIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgPyBjYXVzZVxuICAgICAgICAgICAgICAgICAgICA6IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiRmFpbGVkIHRvIGxvYWQgYWRkIGVudmlyb25tZW50IGluaXRpYWwgYW5zd2Vyc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKS5hbmRUaGVuKChpbml0aWFsQW5zd2VycykgPT5cbiAgICAgICAgICAgICAgICByZXF1aXJlR2l0SHViQXV0aCgpLmFuZFRoZW4oXG4gICAgICAgICAgICAgICAgICAoeyBhdXRob3JpemF0aW9uU2VydmljZSwgZ2l0SHViU2VydmljZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICBhZGRFbnZpcm9ubWVudEFjdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpemF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICBnaXRIdWJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsQW5zd2VycyxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLm1hdGNoKFxuICAgICAgICAgICAgICByZXBvcnRTdW1tYXJ5KHByZXNlbnRlciwgb3V0cHV0TW9kZSksXG4gICAgICAgICAgICAgIHJlcG9ydENvbW1hbmRFcnJvcih0aGlzLCBwcmVzZW50ZXIsIG91dHB1dE1vZGUpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgKTtcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type NodePlopAPI } from "node-plop";
|
|
2
|
+
import { CloudAccountService } from "../../../domain/cloud-account.js";
|
|
3
|
+
import { type GitHubService } from "../../../domain/github.js";
|
|
4
|
+
import { type Payload } from "../generators/environment/prompts.js";
|
|
5
|
+
export declare const configureGitHubEnvironments: (payload: Payload, cloudAccountService: CloudAccountService, gitHubService: GitHubService) => Promise<void>;
|
|
6
|
+
export default function (plop: NodePlopAPI, cloudAccountService: CloudAccountService, gitHubService: GitHubService): void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { payloadSchema, } from "../generators/environment/prompts.js";
|
|
2
|
+
export const configureGitHubEnvironments = async (payload, cloudAccountService, gitHubService) => {
|
|
3
|
+
const runnerAppCredentials = payload.init?.runnerAppCredentials;
|
|
4
|
+
await Promise.all(payload.env.cloudAccounts.map((cloudAccount) => cloudAccountService.configureGitHubEnvironment(cloudAccount, payload.env, payload.github, gitHubService, runnerAppCredentials)));
|
|
5
|
+
};
|
|
6
|
+
export default function (plop, cloudAccountService, gitHubService) {
|
|
7
|
+
plop.setActionType("configureGitHubEnvironments", async (data) => {
|
|
8
|
+
const payload = payloadSchema.parse(data);
|
|
9
|
+
await configureGitHubEnvironments(payload, cloudAccountService, gitHubService);
|
|
10
|
+
return "GitHub environments configured";
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLWdpdGh1Yi1lbnZpcm9ubWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRhcHRlcnMvcGxvcC9hY3Rpb25zL2NvbmZpZ3VyZS1naXRodWItZW52aXJvbm1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFFTCxhQUFhLEdBQ2QsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxLQUFLLEVBQzlDLE9BQWdCLEVBQ2hCLG1CQUF3QyxFQUN4QyxhQUE0QixFQUM1QixFQUFFO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDO0lBRWhFLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUM3QyxtQkFBbUIsQ0FBQywwQkFBMEIsQ0FDNUMsWUFBWSxFQUNaLE9BQU8sQ0FBQyxHQUFHLEVBQ1gsT0FBTyxDQUFDLE1BQU0sRUFDZCxhQUFhLEVBQ2Isb0JBQW9CLENBQ3JCLENBQ0YsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE9BQU8sV0FDWixJQUFpQixFQUNqQixtQkFBd0MsRUFDeEMsYUFBNEI7SUFFNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDL0QsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxNQUFNLDJCQUEyQixDQUMvQixPQUFPLEVBQ1AsbUJBQW1CLEVBQ25CLGFBQWEsQ0FDZCxDQUFDO1FBQ0YsT0FBTyxnQ0FBZ0MsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIE5vZGVQbG9wQVBJIH0gZnJvbSBcIm5vZGUtcGxvcFwiO1xuXG5pbXBvcnQgeyBDbG91ZEFjY291bnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9jbG91ZC1hY2NvdW50LmpzXCI7XG5pbXBvcnQgeyB0eXBlIEdpdEh1YlNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2dpdGh1Yi5qc1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBQYXlsb2FkLFxuICBwYXlsb2FkU2NoZW1hLFxufSBmcm9tIFwiLi4vZ2VuZXJhdG9ycy9lbnZpcm9ubWVudC9wcm9tcHRzLmpzXCI7XG5cbmV4cG9ydCBjb25zdCBjb25maWd1cmVHaXRIdWJFbnZpcm9ubWVudHMgPSBhc3luYyAoXG4gIHBheWxvYWQ6IFBheWxvYWQsXG4gIGNsb3VkQWNjb3VudFNlcnZpY2U6IENsb3VkQWNjb3VudFNlcnZpY2UsXG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2UsXG4pID0+IHtcbiAgY29uc3QgcnVubmVyQXBwQ3JlZGVudGlhbHMgPSBwYXlsb2FkLmluaXQ/LnJ1bm5lckFwcENyZWRlbnRpYWxzO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHBheWxvYWQuZW52LmNsb3VkQWNjb3VudHMubWFwKChjbG91ZEFjY291bnQpID0+XG4gICAgICBjbG91ZEFjY291bnRTZXJ2aWNlLmNvbmZpZ3VyZUdpdEh1YkVudmlyb25tZW50KFxuICAgICAgICBjbG91ZEFjY291bnQsXG4gICAgICAgIHBheWxvYWQuZW52LFxuICAgICAgICBwYXlsb2FkLmdpdGh1YixcbiAgICAgICAgZ2l0SHViU2VydmljZSxcbiAgICAgICAgcnVubmVyQXBwQ3JlZGVudGlhbHMsXG4gICAgICApLFxuICAgICksXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoXG4gIHBsb3A6IE5vZGVQbG9wQVBJLFxuICBjbG91ZEFjY291bnRTZXJ2aWNlOiBDbG91ZEFjY291bnRTZXJ2aWNlLFxuICBnaXRIdWJTZXJ2aWNlOiBHaXRIdWJTZXJ2aWNlLFxuKSB7XG4gIHBsb3Auc2V0QWN0aW9uVHlwZShcImNvbmZpZ3VyZUdpdEh1YkVudmlyb25tZW50c1wiLCBhc3luYyAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBwYXlsb2FkU2NoZW1hLnBhcnNlKGRhdGEpO1xuICAgIGF3YWl0IGNvbmZpZ3VyZUdpdEh1YkVudmlyb25tZW50cyhcbiAgICAgIHBheWxvYWQsXG4gICAgICBjbG91ZEFjY291bnRTZXJ2aWNlLFxuICAgICAgZ2l0SHViU2VydmljZSxcbiAgICApO1xuICAgIHJldHVybiBcIkdpdEh1YiBlbnZpcm9ubWVudHMgY29uZmlndXJlZFwiO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -5,6 +5,8 @@ import { payloadSchema, } from "../generators/environment/prompts.js";
|
|
|
5
5
|
const KNOWN_ENVIRONMENTS = ["dev", "uat", "prod"];
|
|
6
6
|
const KNOWN_ENVIRONMENT_NAMES = KNOWN_ENVIRONMENTS;
|
|
7
7
|
const environmentList = (environments) => `[${[
|
|
8
|
+
// Keep the historical lifecycle environments first for stable diffs, then
|
|
9
|
+
// append tenant-qualified names in their existing insertion order.
|
|
8
10
|
...KNOWN_ENVIRONMENTS.filter((environment) => environments.has(environment)),
|
|
9
11
|
...Array.from(environments).filter((environment) => !KNOWN_ENVIRONMENT_NAMES.includes(environment)),
|
|
10
12
|
]
|
|
@@ -95,4 +97,4 @@ export default function (plop) {
|
|
|
95
97
|
return "GitHub repository environments updated from Terraform";
|
|
96
98
|
});
|
|
97
99
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1yZXBvc2l0b3J5LWVudmlyb25tZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2FjdGlvbnMvc3luYy1yZXBvc2l0b3J5LWVudmlyb25tZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFJN0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxhQUFhLEdBQ2QsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5QyxNQUFNLGtCQUFrQixHQUEwQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekUsTUFBTSx1QkFBdUIsR0FBc0Isa0JBQWtCLENBQUM7QUFFdEUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxZQUF5QixFQUFVLEVBQUUsQ0FDNUQsSUFBSTtJQUNGLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDM0MsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FDOUI7SUFDRCxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUNoQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQ2hFO0NBQ0Y7S0FDRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksV0FBVyxHQUFHLENBQUM7S0FDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFFbkI7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsT0FBZSxFQUNnQyxFQUFFO0lBQ2pELE1BQU0sS0FBSyxHQUNULGtFQUFrRSxDQUFDLElBQUks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UUFDMUMsT0FBTyx1REFBdUQsQ0FBQztJQUNqRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVwZGF0ZXMgaW5mcmEvcmVwb3NpdG9yeS9tYWluLnRmIGFuZCBhcHBsaWVzIGl0IHNvIEdpdEh1Yi5jb20gcmVwb3NpdG9yeVxuICogZW52aXJvbm1lbnRzIGV4aXN0IGJlZm9yZSBkZXBsb3ltZW50IHNjYWZmb2xkaW5nIGNvbnRpbnVlcy5cbiAqXG4gKiBUaGUgcmVwb3NpdG9yeSBUZXJyYWZvcm0gbW9kdWxlIHJlbWFpbnMgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgR2l0SHViXG4gKiBlbnZpcm9ubWVudHMsIGluY2x1ZGluZyBwcm90ZWN0aW9uIHJ1bGVzIGFuZCByZXZpZXdlcnMuIFRoaXMgYWN0aW9uIG9ubHlcbiAqIGNoYW5nZXMgdGhlIG1vZHVsZSdzIGByZXBvc2l0b3J5LmVudmlyb25tZW50c2AgaW5wdXQsIHRoZW4gcnVucyBUZXJyYWZvcm0gZnJvbVxuICogaW5mcmEvcmVwb3NpdG9yeSB0byBjcmVhdGUgb3IgdXBkYXRlIHRoZSBlbnZpcm9ubWVudHMgb24gR2l0SHViLlxuICovXG5pbXBvcnQgeyB0eXBlIE5vZGVQbG9wQVBJIH0gZnJvbSBcIm5vZGUtcGxvcFwiO1xuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2Vudmlyb25tZW50LmpzXCI7XG5cbmltcG9ydCB7IHRmJCB9IGZyb20gXCIuLi8uLi9leGVjYS90ZXJyYWZvcm0uanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgUGF5bG9hZCxcbiAgcGF5bG9hZFNjaGVtYSxcbn0gZnJvbSBcIi4uL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvcHJvbXB0cy5qc1wiO1xuXG5jb25zdCBLTk9XTl9FTlZJUk9OTUVOVFM6IEVudmlyb25tZW50W1wibmFtZVwiXVtdID0gW1wiZGV2XCIsIFwidWF0XCIsIFwicHJvZFwiXTtcbmNvbnN0IEtOT1dOX0VOVklST05NRU5UX05BTUVTOiByZWFkb25seSBzdHJpbmdbXSA9IEtOT1dOX0VOVklST05NRU5UUztcblxuY29uc3QgZW52aXJvbm1lbnRMaXN0ID0gKGVudmlyb25tZW50czogU2V0PHN0cmluZz4pOiBzdHJpbmcgPT5cbiAgYFske1tcbiAgICAuLi5LTk9XTl9FTlZJUk9OTUVOVFMuZmlsdGVyKChlbnZpcm9ubWVudCkgPT5cbiAgICAgIGVudmlyb25tZW50cy5oYXMoZW52aXJvbm1lbnQpLFxuICAgICksXG4gICAgLi4uQXJyYXkuZnJvbShlbnZpcm9ubWVudHMpLmZpbHRlcihcbiAgICAgIChlbnZpcm9ubWVudCkgPT4gIUtOT1dOX0VOVklST05NRU5UX05BTUVTLmluY2x1ZGVzKGVudmlyb25tZW50KSxcbiAgICApLFxuICBdXG4gICAgLm1hcCgoZW52aXJvbm1lbnQpID0+IGBcIiR7ZW52aXJvbm1lbnR9XCJgKVxuICAgIC5qb2luKFwiLCBcIil9XWA7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW5uZXIgYm9keSBvZiB0aGUgYHJlcG9zaXRvcnkgPSB7IC4uLiB9YCBvYmplY3QuXG4gKlxuICogRXhhbXBsZSBpbnB1dDpcbiAqIHJlcG9zaXRvcnkgPSB7XG4gKiAgIG5hbWUgPSBcInJlcG9cIlxuICogfVxuICpcbiAqIEV4YW1wbGUgb3V0cHV0OlxuICogICBuYW1lID0gXCJyZXBvXCJcbiAqL1xuY29uc3QgZmluZFJlcG9zaXRvcnlCbG9jayA9IChcbiAgY29udGVudDogc3RyaW5nLFxuKTogeyBibG9jazogc3RyaW5nOyBlbmQ6IG51bWJlcjsgc3RhcnQ6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgbWF0Y2ggPVxuICAgIC8oPzpefFxcbikoPzxpbmRlbnQ+W15cXFNcXHJcXG5dKilyZXBvc2l0b3J5W15cXFNcXHJcXG5dKj1bXlxcU1xcclxcbl0qXFx7XFxuLy5leGVjKFxuICAgICAgY29udGVudCxcbiAgICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJDYW5ub3QgZmluZCB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGluIGluZnJhL3JlcG9zaXRvcnkvbWFpbi50ZlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBibG9ja1N0YXJ0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gIGNvbnN0IGNsb3NpbmdNYXRjaCA9IG5ldyBSZWdFeHAoYFxcXFxuJHttYXRjaC5ncm91cHM/LmluZGVudCA/PyBcIlwifVxcXFx9YCkuZXhlYyhcbiAgICBjb250ZW50LnNsaWNlKGJsb2NrU3RhcnQpLFxuICApO1xuICBpZiAoIWNsb3NpbmdNYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQ2Fubm90IGZpbmQgdGhlIGVuZCBvZiB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGluIGluZnJhL3JlcG9zaXRvcnkvbWFpbi50ZlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBlbmQgPSBibG9ja1N0YXJ0ICsgY2xvc2luZ01hdGNoLmluZGV4O1xuICByZXR1cm4geyBibG9jazogY29udGVudC5zbGljZShibG9ja1N0YXJ0LCBlbmQpLCBlbmQsIHN0YXJ0OiBibG9ja1N0YXJ0IH07XG59O1xuXG5jb25zdCByZXBvc2l0b3J5UHJvcGVydHlJbmRlbnQgPSAoYmxvY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHByb3BlcnR5TWF0Y2ggPSAvXig/PGluZGVudD5cXHMqKVxcdytcXHMqPS9tLmV4ZWMoYmxvY2spO1xuICByZXR1cm4gcHJvcGVydHlNYXRjaD8uZ3JvdXBzPy5pbmRlbnQgPz8gXCIgICAgXCI7XG59O1xuXG5jb25zdCByZWFkUmVwb3NpdG9yeUNvbmZpZyA9IGFzeW5jIChyZXBvc2l0b3J5TWFpblBhdGg6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy5yZWFkRmlsZShyZXBvc2l0b3J5TWFpblBhdGgsIFwidXRmOFwiKTtcbiAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IHN5bmNocm9uaXplIEdpdEh1YiByZXBvc2l0b3J5IGVudmlyb25tZW50cyBiZWNhdXNlICR7cGF0aC5yZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCByZXBvc2l0b3J5TWFpblBhdGgpfSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGUuYCxcbiAgICAgIHsgY2F1c2UgfSxcbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3luY1JlcG9zaXRvcnlUZXJyYWZvcm1FbnZpcm9ubWVudHMgPSAoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgZW52aXJvbm1lbnROYW1lOiBFbnZpcm9ubWVudFtcIm5hbWVcIl0sXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCByZXBvc2l0b3J5QmxvY2sgPSBmaW5kUmVwb3NpdG9yeUJsb2NrKGNvbnRlbnQpO1xuICBjb25zdCBlbnZpcm9ubWVudHNNYXRjaCA9XG4gICAgL14oPzxpbmRlbnQ+XFxzKillbnZpcm9ubWVudHNcXHMqPVxccypcXFsoPzx2YWx1ZXM+W1xcc1xcU10qPylcXF1cXHMqJC9tLmV4ZWMoXG4gICAgICByZXBvc2l0b3J5QmxvY2suYmxvY2ssXG4gICAgKTtcblxuICBpZiAoIWVudmlyb25tZW50c01hdGNoKSB7XG4gICAgaWYgKGVudmlyb25tZW50TmFtZSA9PT0gXCJwcm9kXCIpIHtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIC8vIFdpdGhvdXQgYW4gZXhwbGljaXQgbGlzdCwgdGhlIFRlcnJhZm9ybSBtb2R1bGUgbWFuYWdlcyBwcm9kIGJ5IGRlZmF1bHQuXG4gICAgLy8gQWRkaW5nIGEgbm9uLXByb2QgZW52aXJvbm1lbnQgbXVzdCBhbHNvIGtlZXAgcHJvZCBleHBsaWNpdC5cbiAgICBjb25zdCBlbnZpcm9ubWVudHMgPSBuZXcgU2V0PHN0cmluZz4oW2Vudmlyb25tZW50TmFtZSwgXCJwcm9kXCJdKTtcbiAgICBjb25zdCBwcm9wZXJ0eUluZGVudCA9IHJlcG9zaXRvcnlQcm9wZXJ0eUluZGVudChyZXBvc2l0b3J5QmxvY2suYmxvY2spO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHJlcG9zaXRvcnlCbG9jay5ibG9jay5lbmRzV2l0aChcIlxcblwiKSA/IFwiXCIgOiBcIlxcblwiO1xuICAgIGNvbnN0IHVwZGF0ZWRCbG9jayA9IGAke3JlcG9zaXRvcnlCbG9jay5ibG9ja30ke3NlcGFyYXRvcn0ke3Byb3BlcnR5SW5kZW50fWVudmlyb25tZW50cyAgICAgICAgICAgPSAke2Vudmlyb25tZW50TGlzdChlbnZpcm9ubWVudHMpfWA7XG4gICAgcmV0dXJuIGAke2NvbnRlbnQuc2xpY2UoMCwgcmVwb3NpdG9yeUJsb2NrLnN0YXJ0KX0ke3VwZGF0ZWRCbG9ja30ke2NvbnRlbnQuc2xpY2UocmVwb3NpdG9yeUJsb2NrLmVuZCl9YDtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nRW52aXJvbm1lbnRzID0gbmV3IFNldChcbiAgICBBcnJheS5mcm9tKChlbnZpcm9ubWVudHNNYXRjaC5ncm91cHM/LnZhbHVlcyA/PyBcIlwiKS5tYXRjaEFsbCgvXCIoW15cIl0rKVwiL2cpKVxuICAgICAgLm1hcCgobWF0Y2gpID0+IG1hdGNoWzFdKVxuICAgICAgLmZpbHRlcigoZW52aXJvbm1lbnQpID0+IGVudmlyb25tZW50Lmxlbmd0aCA+IDApLFxuICApO1xuICBjb25zdCBoYXNTZWxlY3RlZEVudmlyb25tZW50ID0gZXhpc3RpbmdFbnZpcm9ubWVudHMuaGFzKGVudmlyb25tZW50TmFtZSk7XG4gIGNvbnN0IGhhc1Byb2RFbnZpcm9ubWVudCA9IGV4aXN0aW5nRW52aXJvbm1lbnRzLmhhcyhcInByb2RcIik7XG4gIGlmIChoYXNTZWxlY3RlZEVudmlyb25tZW50ICYmIGhhc1Byb2RFbnZpcm9ubWVudCkge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgZXhpc3RpbmdFbnZpcm9ubWVudHMuYWRkKGVudmlyb25tZW50TmFtZSk7XG4gIGV4aXN0aW5nRW52aXJvbm1lbnRzLmFkZChcInByb2RcIik7XG4gIGNvbnN0IGluZGVudCA9IGVudmlyb25tZW50c01hdGNoLmdyb3Vwcz8uaW5kZW50ID8/IFwiICAgIFwiO1xuICBjb25zdCB1cGRhdGVkTGluZSA9IGAke2luZGVudH1lbnZpcm9ubWVudHMgICAgICAgICAgID0gJHtlbnZpcm9ubWVudExpc3QoZXhpc3RpbmdFbnZpcm9ubWVudHMpfWA7XG4gIGNvbnN0IHVwZGF0ZWRCbG9jayA9IHJlcG9zaXRvcnlCbG9jay5ibG9jay5yZXBsYWNlKFxuICAgIGVudmlyb25tZW50c01hdGNoWzBdLFxuICAgIHVwZGF0ZWRMaW5lLFxuICApO1xuXG4gIHJldHVybiBgJHtjb250ZW50LnNsaWNlKDAsIHJlcG9zaXRvcnlCbG9jay5zdGFydCl9JHt1cGRhdGVkQmxvY2t9JHtjb250ZW50LnNsaWNlKHJlcG9zaXRvcnlCbG9jay5lbmQpfWA7XG59O1xuXG5leHBvcnQgY29uc3Qgc3luY1JlcG9zaXRvcnlFbnZpcm9ubWVudHMgPSBhc3luYyAoXG4gIHBheWxvYWQ6IFBheWxvYWQsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVwb3NpdG9yeVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJpbmZyYVwiLCBcInJlcG9zaXRvcnlcIik7XG4gIGNvbnN0IHJlcG9zaXRvcnlNYWluUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5UGF0aCwgXCJtYWluLnRmXCIpO1xuXG4gIGNvbnN0IGN1cnJlbnRSZXBvc2l0b3J5Q29uZmlnID1cbiAgICBhd2FpdCByZWFkUmVwb3NpdG9yeUNvbmZpZyhyZXBvc2l0b3J5TWFpblBhdGgpO1xuICBjb25zdCB1cGRhdGVkUmVwb3NpdG9yeUNvbmZpZyA9IHN5bmNSZXBvc2l0b3J5VGVycmFmb3JtRW52aXJvbm1lbnRzKFxuICAgIGN1cnJlbnRSZXBvc2l0b3J5Q29uZmlnLFxuICAgIHBheWxvYWQuZW52Lm5hbWUsXG4gICk7XG5cbiAgaWYgKHVwZGF0ZWRSZXBvc2l0b3J5Q29uZmlnICE9PSBjdXJyZW50UmVwb3NpdG9yeUNvbmZpZykge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShyZXBvc2l0b3J5TWFpblBhdGgsIHVwZGF0ZWRSZXBvc2l0b3J5Q29uZmlnLCBcInV0ZjhcIik7XG4gIH1cblxuICBjb25zdCByZXBvc2l0b3J5VGVycmFmb3JtID0gdGYkKHsgY3dkOiByZXBvc2l0b3J5UGF0aCB9KTtcbiAgYXdhaXQgcmVwb3NpdG9yeVRlcnJhZm9ybWB0ZXJyYWZvcm0gaW5pdGA7XG4gIGF3YWl0IHJlcG9zaXRvcnlUZXJyYWZvcm1gdGVycmFmb3JtIGFwcGx5IC1hdXRvLWFwcHJvdmVgO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHBsb3A6IE5vZGVQbG9wQVBJKTogdm9pZCB7XG4gIHBsb3Auc2V0QWN0aW9uVHlwZShcInN5bmNSZXBvc2l0b3J5RW52aXJvbm1lbnRzXCIsIGFzeW5jIChkYXRhKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHBheWxvYWRTY2hlbWEucGFyc2UoZGF0YSk7XG4gICAgYXdhaXQgc3luY1JlcG9zaXRvcnlFbnZpcm9ubWVudHMocGF5bG9hZCk7XG4gICAgcmV0dXJuIFwiR2l0SHViIHJlcG9zaXRvcnkgZW52aXJvbm1lbnRzIHVwZGF0ZWQgZnJvbSBUZXJyYWZvcm1cIjtcbiAgfSk7XG59XG4iXX0=
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1yZXBvc2l0b3J5LWVudmlyb25tZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2FjdGlvbnMvc3luYy1yZXBvc2l0b3J5LWVudmlyb25tZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFJN0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxhQUFhLEdBQ2QsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5QyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQVUsQ0FBQztBQUMzRCxNQUFNLHVCQUF1QixHQUFzQixrQkFBa0IsQ0FBQztBQUV0RSxNQUFNLGVBQWUsR0FBRyxDQUFDLFlBQXlCLEVBQVUsRUFBRSxDQUM1RCxJQUFJO0lBQ0YsMEVBQTBFO0lBQzFFLG1FQUFtRTtJQUNuRSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQzNDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQzlCO0lBQ0QsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FDaEMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUNoRTtDQUNGO0tBQ0UsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsR0FBRyxDQUFDO0tBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBRW5COzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQzFCLE9BQWUsRUFDZ0MsRUFBRTtJQUNqRCxNQUFNLEtB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QUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sdURBQXVELENBQUM7SUFDakUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVcGRhdGVzIGluZnJhL3JlcG9zaXRvcnkvbWFpbi50ZiBhbmQgYXBwbGllcyBpdCBzbyBHaXRIdWIuY29tIHJlcG9zaXRvcnlcbiAqIGVudmlyb25tZW50cyBleGlzdCBiZWZvcmUgZGVwbG95bWVudCBzY2FmZm9sZGluZyBjb250aW51ZXMuXG4gKlxuICogVGhlIHJlcG9zaXRvcnkgVGVycmFmb3JtIG1vZHVsZSByZW1haW5zIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIEdpdEh1YlxuICogZW52aXJvbm1lbnRzLCBpbmNsdWRpbmcgcHJvdGVjdGlvbiBydWxlcyBhbmQgcmV2aWV3ZXJzLiBUaGlzIGFjdGlvbiBvbmx5XG4gKiBjaGFuZ2VzIHRoZSBtb2R1bGUncyBgcmVwb3NpdG9yeS5lbnZpcm9ubWVudHNgIGlucHV0LCB0aGVuIHJ1bnMgVGVycmFmb3JtIGZyb21cbiAqIGluZnJhL3JlcG9zaXRvcnkgdG8gY3JlYXRlIG9yIHVwZGF0ZSB0aGUgZW52aXJvbm1lbnRzIG9uIEdpdEh1Yi5cbiAqL1xuaW1wb3J0IHsgdHlwZSBOb2RlUGxvcEFQSSB9IGZyb20gXCJub2RlLXBsb3BcIjtcbmltcG9ydCBmcyBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50IH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pbXBvcnQgeyB0ZiQgfSBmcm9tIFwiLi4vLi4vZXhlY2EvdGVycmFmb3JtLmpzXCI7XG5pbXBvcnQge1xuICB0eXBlIFBheWxvYWQsXG4gIHBheWxvYWRTY2hlbWEsXG59IGZyb20gXCIuLi9nZW5lcmF0b3JzL2Vudmlyb25tZW50L3Byb21wdHMuanNcIjtcblxuY29uc3QgS05PV05fRU5WSVJPTk1FTlRTID0gW1wiZGV2XCIsIFwidWF0XCIsIFwicHJvZFwiXSBhcyBjb25zdDtcbmNvbnN0IEtOT1dOX0VOVklST05NRU5UX05BTUVTOiByZWFkb25seSBzdHJpbmdbXSA9IEtOT1dOX0VOVklST05NRU5UUztcblxuY29uc3QgZW52aXJvbm1lbnRMaXN0ID0gKGVudmlyb25tZW50czogU2V0PHN0cmluZz4pOiBzdHJpbmcgPT5cbiAgYFske1tcbiAgICAvLyBLZWVwIHRoZSBoaXN0b3JpY2FsIGxpZmVjeWNsZSBlbnZpcm9ubWVudHMgZmlyc3QgZm9yIHN0YWJsZSBkaWZmcywgdGhlblxuICAgIC8vIGFwcGVuZCB0ZW5hbnQtcXVhbGlmaWVkIG5hbWVzIGluIHRoZWlyIGV4aXN0aW5nIGluc2VydGlvbiBvcmRlci5cbiAgICAuLi5LTk9XTl9FTlZJUk9OTUVOVFMuZmlsdGVyKChlbnZpcm9ubWVudCkgPT5cbiAgICAgIGVudmlyb25tZW50cy5oYXMoZW52aXJvbm1lbnQpLFxuICAgICksXG4gICAgLi4uQXJyYXkuZnJvbShlbnZpcm9ubWVudHMpLmZpbHRlcihcbiAgICAgIChlbnZpcm9ubWVudCkgPT4gIUtOT1dOX0VOVklST05NRU5UX05BTUVTLmluY2x1ZGVzKGVudmlyb25tZW50KSxcbiAgICApLFxuICBdXG4gICAgLm1hcCgoZW52aXJvbm1lbnQpID0+IGBcIiR7ZW52aXJvbm1lbnR9XCJgKVxuICAgIC5qb2luKFwiLCBcIil9XWA7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW5uZXIgYm9keSBvZiB0aGUgYHJlcG9zaXRvcnkgPSB7IC4uLiB9YCBvYmplY3QuXG4gKlxuICogRXhhbXBsZSBpbnB1dDpcbiAqIHJlcG9zaXRvcnkgPSB7XG4gKiAgIG5hbWUgPSBcInJlcG9cIlxuICogfVxuICpcbiAqIEV4YW1wbGUgb3V0cHV0OlxuICogICBuYW1lID0gXCJyZXBvXCJcbiAqL1xuY29uc3QgZmluZFJlcG9zaXRvcnlCbG9jayA9IChcbiAgY29udGVudDogc3RyaW5nLFxuKTogeyBibG9jazogc3RyaW5nOyBlbmQ6IG51bWJlcjsgc3RhcnQ6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgbWF0Y2ggPVxuICAgIC8oPzpefFxcbikoPzxpbmRlbnQ+W15cXFNcXHJcXG5dKilyZXBvc2l0b3J5W15cXFNcXHJcXG5dKj1bXlxcU1xcclxcbl0qXFx7XFxuLy5leGVjKFxuICAgICAgY29udGVudCxcbiAgICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJDYW5ub3QgZmluZCB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGluIGluZnJhL3JlcG9zaXRvcnkvbWFpbi50ZlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBibG9ja1N0YXJ0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gIGNvbnN0IGNsb3NpbmdNYXRjaCA9IG5ldyBSZWdFeHAoYFxcXFxuJHttYXRjaC5ncm91cHM/LmluZGVudCA/PyBcIlwifVxcXFx9YCkuZXhlYyhcbiAgICBjb250ZW50LnNsaWNlKGJsb2NrU3RhcnQpLFxuICApO1xuICBpZiAoIWNsb3NpbmdNYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQ2Fubm90IGZpbmQgdGhlIGVuZCBvZiB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGluIGluZnJhL3JlcG9zaXRvcnkvbWFpbi50ZlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBlbmQgPSBibG9ja1N0YXJ0ICsgY2xvc2luZ01hdGNoLmluZGV4O1xuICByZXR1cm4geyBibG9jazogY29udGVudC5zbGljZShibG9ja1N0YXJ0LCBlbmQpLCBlbmQsIHN0YXJ0OiBibG9ja1N0YXJ0IH07XG59O1xuXG5jb25zdCByZXBvc2l0b3J5UHJvcGVydHlJbmRlbnQgPSAoYmxvY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHByb3BlcnR5TWF0Y2ggPSAvXig/PGluZGVudD5cXHMqKVxcdytcXHMqPS9tLmV4ZWMoYmxvY2spO1xuICByZXR1cm4gcHJvcGVydHlNYXRjaD8uZ3JvdXBzPy5pbmRlbnQgPz8gXCIgICAgXCI7XG59O1xuXG5jb25zdCByZWFkUmVwb3NpdG9yeUNvbmZpZyA9IGFzeW5jIChyZXBvc2l0b3J5TWFpblBhdGg6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy5yZWFkRmlsZShyZXBvc2l0b3J5TWFpblBhdGgsIFwidXRmOFwiKTtcbiAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IHN5bmNocm9uaXplIEdpdEh1YiByZXBvc2l0b3J5IGVudmlyb25tZW50cyBiZWNhdXNlICR7cGF0aC5yZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCByZXBvc2l0b3J5TWFpblBhdGgpfSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGUuYCxcbiAgICAgIHsgY2F1c2UgfSxcbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3luY1JlcG9zaXRvcnlUZXJyYWZvcm1FbnZpcm9ubWVudHMgPSAoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgZW52aXJvbm1lbnROYW1lOiBFbnZpcm9ubWVudFtcIm5hbWVcIl0sXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCByZXBvc2l0b3J5QmxvY2sgPSBmaW5kUmVwb3NpdG9yeUJsb2NrKGNvbnRlbnQpO1xuICBjb25zdCBlbnZpcm9ubWVudHNNYXRjaCA9XG4gICAgL14oPzxpbmRlbnQ+XFxzKillbnZpcm9ubWVudHNcXHMqPVxccypcXFsoPzx2YWx1ZXM+W1xcc1xcU10qPylcXF1cXHMqJC9tLmV4ZWMoXG4gICAgICByZXBvc2l0b3J5QmxvY2suYmxvY2ssXG4gICAgKTtcblxuICBpZiAoIWVudmlyb25tZW50c01hdGNoKSB7XG4gICAgaWYgKGVudmlyb25tZW50TmFtZSA9PT0gXCJwcm9kXCIpIHtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIC8vIFdpdGhvdXQgYW4gZXhwbGljaXQgbGlzdCwgdGhlIFRlcnJhZm9ybSBtb2R1bGUgbWFuYWdlcyBwcm9kIGJ5IGRlZmF1bHQuXG4gICAgLy8gQWRkaW5nIGEgbm9uLXByb2QgZW52aXJvbm1lbnQgbXVzdCBhbHNvIGtlZXAgcHJvZCBleHBsaWNpdC5cbiAgICBjb25zdCBlbnZpcm9ubWVudHMgPSBuZXcgU2V0PHN0cmluZz4oW2Vudmlyb25tZW50TmFtZSwgXCJwcm9kXCJdKTtcbiAgICBjb25zdCBwcm9wZXJ0eUluZGVudCA9IHJlcG9zaXRvcnlQcm9wZXJ0eUluZGVudChyZXBvc2l0b3J5QmxvY2suYmxvY2spO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHJlcG9zaXRvcnlCbG9jay5ibG9jay5lbmRzV2l0aChcIlxcblwiKSA/IFwiXCIgOiBcIlxcblwiO1xuICAgIGNvbnN0IHVwZGF0ZWRCbG9jayA9IGAke3JlcG9zaXRvcnlCbG9jay5ibG9ja30ke3NlcGFyYXRvcn0ke3Byb3BlcnR5SW5kZW50fWVudmlyb25tZW50cyAgICAgICAgICAgPSAke2Vudmlyb25tZW50TGlzdChlbnZpcm9ubWVudHMpfWA7XG4gICAgcmV0dXJuIGAke2NvbnRlbnQuc2xpY2UoMCwgcmVwb3NpdG9yeUJsb2NrLnN0YXJ0KX0ke3VwZGF0ZWRCbG9ja30ke2NvbnRlbnQuc2xpY2UocmVwb3NpdG9yeUJsb2NrLmVuZCl9YDtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nRW52aXJvbm1lbnRzID0gbmV3IFNldChcbiAgICBBcnJheS5mcm9tKChlbnZpcm9ubWVudHNNYXRjaC5ncm91cHM/LnZhbHVlcyA/PyBcIlwiKS5tYXRjaEFsbCgvXCIoW15cIl0rKVwiL2cpKVxuICAgICAgLm1hcCgobWF0Y2gpID0+IG1hdGNoWzFdKVxuICAgICAgLmZpbHRlcigoZW52aXJvbm1lbnQpID0+IGVudmlyb25tZW50Lmxlbmd0aCA+IDApLFxuICApO1xuICBjb25zdCBoYXNTZWxlY3RlZEVudmlyb25tZW50ID0gZXhpc3RpbmdFbnZpcm9ubWVudHMuaGFzKGVudmlyb25tZW50TmFtZSk7XG4gIGNvbnN0IGhhc1Byb2RFbnZpcm9ubWVudCA9IGV4aXN0aW5nRW52aXJvbm1lbnRzLmhhcyhcInByb2RcIik7XG4gIGlmIChoYXNTZWxlY3RlZEVudmlyb25tZW50ICYmIGhhc1Byb2RFbnZpcm9ubWVudCkge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgZXhpc3RpbmdFbnZpcm9ubWVudHMuYWRkKGVudmlyb25tZW50TmFtZSk7XG4gIGV4aXN0aW5nRW52aXJvbm1lbnRzLmFkZChcInByb2RcIik7XG4gIGNvbnN0IGluZGVudCA9IGVudmlyb25tZW50c01hdGNoLmdyb3Vwcz8uaW5kZW50ID8/IFwiICAgIFwiO1xuICBjb25zdCB1cGRhdGVkTGluZSA9IGAke2luZGVudH1lbnZpcm9ubWVudHMgICAgICAgICAgID0gJHtlbnZpcm9ubWVudExpc3QoZXhpc3RpbmdFbnZpcm9ubWVudHMpfWA7XG4gIGNvbnN0IHVwZGF0ZWRCbG9jayA9IHJlcG9zaXRvcnlCbG9jay5ibG9jay5yZXBsYWNlKFxuICAgIGVudmlyb25tZW50c01hdGNoWzBdLFxuICAgIHVwZGF0ZWRMaW5lLFxuICApO1xuXG4gIHJldHVybiBgJHtjb250ZW50LnNsaWNlKDAsIHJlcG9zaXRvcnlCbG9jay5zdGFydCl9JHt1cGRhdGVkQmxvY2t9JHtjb250ZW50LnNsaWNlKHJlcG9zaXRvcnlCbG9jay5lbmQpfWA7XG59O1xuXG5leHBvcnQgY29uc3Qgc3luY1JlcG9zaXRvcnlFbnZpcm9ubWVudHMgPSBhc3luYyAoXG4gIHBheWxvYWQ6IFBheWxvYWQsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVwb3NpdG9yeVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJpbmZyYVwiLCBcInJlcG9zaXRvcnlcIik7XG4gIGNvbnN0IHJlcG9zaXRvcnlNYWluUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5UGF0aCwgXCJtYWluLnRmXCIpO1xuXG4gIGNvbnN0IGN1cnJlbnRSZXBvc2l0b3J5Q29uZmlnID1cbiAgICBhd2FpdCByZWFkUmVwb3NpdG9yeUNvbmZpZyhyZXBvc2l0b3J5TWFpblBhdGgpO1xuICBjb25zdCB1cGRhdGVkUmVwb3NpdG9yeUNvbmZpZyA9IHN5bmNSZXBvc2l0b3J5VGVycmFmb3JtRW52aXJvbm1lbnRzKFxuICAgIGN1cnJlbnRSZXBvc2l0b3J5Q29uZmlnLFxuICAgIHBheWxvYWQuZW52Lm5hbWUsXG4gICk7XG5cbiAgaWYgKHVwZGF0ZWRSZXBvc2l0b3J5Q29uZmlnICE9PSBjdXJyZW50UmVwb3NpdG9yeUNvbmZpZykge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShyZXBvc2l0b3J5TWFpblBhdGgsIHVwZGF0ZWRSZXBvc2l0b3J5Q29uZmlnLCBcInV0ZjhcIik7XG4gIH1cblxuICBjb25zdCByZXBvc2l0b3J5VGVycmFmb3JtID0gdGYkKHsgY3dkOiByZXBvc2l0b3J5UGF0aCB9KTtcbiAgYXdhaXQgcmVwb3NpdG9yeVRlcnJhZm9ybWB0ZXJyYWZvcm0gaW5pdGA7XG4gIGF3YWl0IHJlcG9zaXRvcnlUZXJyYWZvcm1gdGVycmFmb3JtIGFwcGx5IC1hdXRvLWFwcHJvdmVgO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHBsb3A6IE5vZGVQbG9wQVBJKTogdm9pZCB7XG4gIHBsb3Auc2V0QWN0aW9uVHlwZShcInN5bmNSZXBvc2l0b3J5RW52aXJvbm1lbnRzXCIsIGFzeW5jIChkYXRhKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHBheWxvYWRTY2hlbWEucGFyc2UoZGF0YSk7XG4gICAgYXdhaXQgc3luY1JlcG9zaXRvcnlFbnZpcm9ubWVudHMocGF5bG9hZCk7XG4gICAgcmV0dXJuIFwiR2l0SHViIHJlcG9zaXRvcnkgZW52aXJvbm1lbnRzIHVwZGF0ZWQgZnJvbSBUZXJyYWZvcm1cIjtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -59,6 +59,12 @@ export default function getActions(templatesPath) {
|
|
|
59
59
|
{
|
|
60
60
|
type: "syncRepositoryEnvironments",
|
|
61
61
|
},
|
|
62
|
+
// Bootstrap Azure resources can pre-exist, but OIDC credentials and
|
|
63
|
+
// GitHub environment secrets are repository-specific and must be ensured
|
|
64
|
+
// on every add-environment run.
|
|
65
|
+
{
|
|
66
|
+
type: "configureGitHubEnvironments",
|
|
67
|
+
},
|
|
62
68
|
addWorkflowModule(templatesPath),
|
|
63
69
|
...addEnvironmentModule("bootstrapper"),
|
|
64
70
|
];
|
|
@@ -75,4 +81,4 @@ export default function getActions(templatesPath) {
|
|
|
75
81
|
return actions;
|
|
76
82
|
};
|
|
77
83
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxTQUFTLEdBQUcsQ0FDaEIsT0FBMkMsRUFDM0MsYUFBcUIsRUFDckIsSUFBSSxHQUFHLEtBQUssRUFDWixFQUFFO0lBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN4QixNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3ZDLEdBQUcsQ0FBQyxhQUFhLEVBQ2pCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUN6QixDQUFDO0lBQ0YsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQzNDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FDL0MsQ0FBQztJQUNGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQixPQUFPLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQztRQUN2QjtZQUNFLElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUNyRSxXQUFXLEVBQUUsSUFB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LG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvblR5cGUsIER5bmFtaWNBY3Rpb25zRnVuY3Rpb24gfSBmcm9tIFwibm9kZS1wbG9wXCI7XG5cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7IGZvcm1hdFRlcnJhZm9ybUNvZGUgfSBmcm9tIFwiLi4vLi4vLi4vdGVycmFmb3JtL2ZtdC5qc1wiO1xuaW1wb3J0IHsgdGVycmFmb3JtU3RhdGVLZXkgfSBmcm9tIFwiLi4vLi4vaGVscGVycy90ZXJyYWZvcm0tc3RhdGUta2V5LmpzXCI7XG5pbXBvcnQgeyBQYXlsb2FkIH0gZnJvbSBcIi4vcHJvbXB0cy5qc1wiO1xuaW1wb3J0IHsgcGF5bG9hZFNjaGVtYSB9IGZyb20gXCIuL3Byb21wdHMuanNcIjtcblxuY29uc3QgYWRkTW9kdWxlID0gKFxuICBjb250ZXh0OiBQaWNrPFBheWxvYWQsIFwiZW52XCIgfCBcIndvcmtzcGFjZVwiPixcbiAgdGVtcGxhdGVzUGF0aDogc3RyaW5nLFxuICBpbml0ID0gZmFsc2UsXG4pID0+IHtcbiAgY29uc3QgeyBlbnYgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGNsb3VkQWNjb3VudHNCeUNzcCA9IE9iamVjdC5ncm91cEJ5KFxuICAgIGVudi5jbG91ZEFjY291bnRzLFxuICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmNzcCxcbiAgKTtcbiAgY29uc3QgaW5jbHVkZXNQcm9kSU8gPSBlbnYuY2xvdWRBY2NvdW50cy5zb21lKFxuICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmRpc3BsYXlOYW1lID09PSBcIlBST0QtSU9cIixcbiAgKTtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgcmV0dXJuIChuYW1lOiBzdHJpbmcpID0+IFtcbiAgICB7XG4gICAgICBiYXNlOiB0ZW1wbGF0ZXNQYXRoLFxuICAgICAgZGF0YTogeyBjbG91ZEFjY291bnRzQnlDc3AsIGluY2x1ZGVzUHJvZElPLCBpbml0OiBpbml0IHx8IHVuZGVmaW5lZCB9LFxuICAgICAgZGVzdGluYXRpb246IHBhdGguam9pbihjd2QsIFwiaW5mcmFcIiksXG4gICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgIHRlbXBsYXRlRmlsZXM6IHBhdGguam9pbih0ZW1wbGF0ZXNQYXRoLCBuYW1lKSxcbiAgICAgIHRyYW5zZm9ybTogZm9ybWF0VGVycmFmb3JtQ29kZSxcbiAgICAgIHR5cGU6IFwiYWRkTWFueVwiLFxuICAgICAgdmVyYm9zZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGJhc2U6IHBhdGguam9pbih0ZW1wbGF0ZXNQYXRoLCBcInNoYXJlZFwiKSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY2xvdWRBY2NvdW50c0J5Q3NwLFxuICAgICAgICBpbml0OiBpbml0IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgdGVycmFmb3JtQmFja2VuZEtleTogdGVycmFmb3JtU3RhdGVLZXkoY29udGV4dCwgbmFtZSksXG4gICAgICB9LFxuICAgICAgZGVzdGluYXRpb246IHBhdGguam9pbihjd2QsIFwiaW5mcmFcIiwgbmFtZSwgXCJ7e2Vudi5uYW1lfX1cIiksXG4gICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgIHRlbXBsYXRlRmlsZXM6IHBhdGguam9pbih0ZW1wbGF0ZXNQYXRoLCBcInNoYXJlZFwiKSxcbiAgICAgIHRyYW5zZm9ybTogZm9ybWF0VGVycmFmb3JtQ29kZSxcbiAgICAgIHR5cGU6IFwiYWRkTWFueVwiLFxuICAgICAgdmVyYm9zZTogdHJ1ZSxcbiAgICB9LFxuICBdO1xufTtcblxuY29uc3QgYWRkV29ya2Zsb3dNb2R1bGUgPSAodGVtcGxhdGVzUGF0aDogc3RyaW5nKTogQWN0aW9uVHlwZSA9PiB7XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG4gIHJldHVybiB7XG4gICAgYmFzZTogcGF0aC5qb2luKHRlbXBsYXRlc1BhdGgsIFwid29ya2Zsb3dcIiksXG4gICAgZGVzdGluYXRpb246IHBhdGguam9pbihjd2QsIFwiLmdpdGh1YlwiLCBcIndvcmtmbG93c1wiKSxcbiAgICBmb3JjZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZUZpbGVzOiBwYXRoLmpvaW4odGVtcGxhdGVzUGF0aCwgXCJ3b3JrZmxvd1wiKSxcbiAgICB0eXBlOiBcImFkZE1hbnlcIixcbiAgICB2ZXJib3NlOiB0cnVlLFxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QWN0aW9ucyhcbiAgdGVtcGxhdGVzUGF0aDogc3RyaW5nLFxuKTogRHluYW1pY0FjdGlvbnNGdW5jdGlvbiB7XG4gIHJldHVybiAoaW5wdXQ6IHVua25vd24pID0+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZ2VuXCIsIFwiZW52XCJdKTtcblxuICAgIGxvZ2dlci5kZWJ1ZyhcImVudmlyb25tZW50IGdlbmVyYXRvciBpbnB1dCB7aW5wdXR9XCIsIHsgaW5wdXQgfSk7XG5cbiAgICBjb25zdCB7IGVudiwgaW5pdCwgd29ya3NwYWNlIH0gPSBwYXlsb2FkU2NoZW1hLnBhcnNlKGlucHV0KTtcblxuICAgIGNvbnN0IGFkZEVudmlyb25tZW50TW9kdWxlID0gYWRkTW9kdWxlKFxuICAgICAgeyBlbnYsIHdvcmtzcGFjZSB9LFxuICAgICAgdGVtcGxhdGVzUGF0aCxcbiAgICAgICEhaW5pdCxcbiAgICApO1xuXG4gICAgY29uc3QgYWN0aW9uczogQWN0aW9uVHlwZVtdID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcImdldFRlcnJhZm9ybUJhY2tlbmRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic3luY1JlcG9zaXRvcnlFbnZpcm9ubWVudHNcIixcbiAgICAgIH0sXG4gICAgICAvLyBCb290c3RyYXAgQXp1cmUgcmVzb3VyY2VzIGNhbiBwcmUtZXhpc3QsIGJ1dCBPSURDIGNyZWRlbnRpYWxzIGFuZFxuICAgICAgLy8gR2l0SHViIGVudmlyb25tZW50IHNlY3JldHMgYXJlIHJlcG9zaXRvcnktc3BlY2lmaWMgYW5kIG11c3QgYmUgZW5zdXJlZFxuICAgICAgLy8gb24gZXZlcnkgYWRkLWVudmlyb25tZW50IHJ1bi5cbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjb25maWd1cmVHaXRIdWJFbnZpcm9ubWVudHNcIixcbiAgICAgIH0sXG4gICAgICBhZGRXb3JrZmxvd01vZHVsZSh0ZW1wbGF0ZXNQYXRoKSxcbiAgICAgIC4uLmFkZEVudmlyb25tZW50TW9kdWxlKFwiYm9vdHN0cmFwcGVyXCIpLFxuICAgIF07XG5cbiAgICBpZiAoaW5pdCkge1xuICAgICAgYWN0aW9ucy51bnNoaWZ0KFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJpbml0Q2xvdWRBY2NvdW50c1wiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogaW5pdC50ZXJyYWZvcm1CYWNrZW5kXG4gICAgICAgICAgICA/IFwicHJvdmlzaW9uVGVycmFmb3JtQmFja2VuZFwiXG4gICAgICAgICAgICA6IFwiZ2V0VGVycmFmb3JtQmFja2VuZFwiLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIGFjdGlvbnMucHVzaCguLi5hZGRFbnZpcm9ubWVudE1vZHVsZShcImNvcmVcIikpO1xuICAgIH1cblxuICAgIHJldHVybiBhY3Rpb25zO1xuICB9O1xufVxuIl19
|
|
@@ -21,11 +21,11 @@ export declare const payloadSchema: z.ZodObject<{
|
|
|
21
21
|
displayName: z.ZodString;
|
|
22
22
|
id: z.ZodString;
|
|
23
23
|
}, z.core.$strip>>;
|
|
24
|
-
name: z.ZodEnum<{
|
|
24
|
+
name: z.ZodPipe<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
|
|
25
25
|
dev: "dev";
|
|
26
26
|
prod: "prod";
|
|
27
27
|
uat: "uat";
|
|
28
|
-
}
|
|
28
|
+
}>, z.ZodTemplateLiteral<`${string}-dev` | `${string}-prod` | `${string}-uat`>]>>;
|
|
29
29
|
prefix: z.ZodString;
|
|
30
30
|
}, z.core.$strip>;
|
|
31
31
|
github: z.ZodObject<{
|
|
@@ -76,11 +76,11 @@ export declare const initialAnswersSchema: z.ZodObject<{
|
|
|
76
76
|
italynorth: "italynorth";
|
|
77
77
|
westeurope: "westeurope";
|
|
78
78
|
}>>>;
|
|
79
|
-
name: z.ZodOptional<z.ZodEnum<{
|
|
79
|
+
name: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
|
|
80
80
|
dev: "dev";
|
|
81
81
|
prod: "prod";
|
|
82
82
|
uat: "uat";
|
|
83
|
-
}
|
|
83
|
+
}>, z.ZodTemplateLiteral<`${string}-dev` | `${string}-prod` | `${string}-uat`>]>>>;
|
|
84
84
|
prefix: z.ZodOptional<z.ZodString>;
|
|
85
85
|
}, z.core.$strip>>;
|
|
86
86
|
init: z.ZodOptional<z.ZodObject<{
|