@pipeline-builder/pipeline-core 3.4.68 → 3.4.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +62 -33
  2. package/lib/config/app-config.d.ts +1 -1
  3. package/lib/config/app-config.js +20 -25
  4. package/lib/config/billing-config.d.ts +1 -1
  5. package/lib/config/billing-config.js +2 -5
  6. package/lib/config/config-types.d.ts +1 -1
  7. package/lib/config/config-types.js +2 -3
  8. package/lib/config/infrastructure-config.d.ts +1 -1
  9. package/lib/config/infrastructure-config.js +25 -38
  10. package/lib/config/server-config.d.ts +1 -1
  11. package/lib/config/server-config.js +12 -19
  12. package/lib/core/artifact-manager.js +3 -6
  13. package/lib/core/id-generator.js +4 -8
  14. package/lib/core/metadata-builder.d.ts +4 -4
  15. package/lib/core/metadata-builder.js +32 -44
  16. package/lib/core/network-types.d.ts +2 -2
  17. package/lib/core/network-types.js +2 -3
  18. package/lib/core/network.d.ts +3 -3
  19. package/lib/core/network.js +18 -20
  20. package/lib/core/pipeline-helpers.d.ts +3 -3
  21. package/lib/core/pipeline-helpers.js +73 -79
  22. package/lib/core/pipeline-types.d.ts +2 -2
  23. package/lib/core/pipeline-types.js +5 -11
  24. package/lib/core/role-types.js +2 -3
  25. package/lib/core/role.d.ts +3 -3
  26. package/lib/core/role.js +24 -25
  27. package/lib/core/security-group-types.js +2 -3
  28. package/lib/core/security-group.d.ts +3 -3
  29. package/lib/core/security-group.js +8 -9
  30. package/lib/handlers/plugin-lookup-handler.d.ts +1 -1
  31. package/lib/handlers/plugin-lookup-handler.js +18 -56
  32. package/lib/index.d.ts +17 -17
  33. package/lib/index.js +28 -71
  34. package/lib/pipeline/pipeline-builder.d.ts +5 -5
  35. package/lib/pipeline/pipeline-builder.js +73 -110
  36. package/lib/pipeline/pipeline-configuration.d.ts +5 -5
  37. package/lib/pipeline/pipeline-configuration.js +15 -19
  38. package/lib/pipeline/plugin-lookup.d.ts +3 -3
  39. package/lib/pipeline/plugin-lookup.js +32 -31
  40. package/lib/pipeline/source-builder.d.ts +2 -2
  41. package/lib/pipeline/source-builder.js +27 -29
  42. package/lib/pipeline/source-types.d.ts +1 -1
  43. package/lib/pipeline/source-types.js +2 -3
  44. package/lib/pipeline/stage-builder.d.ts +5 -5
  45. package/lib/pipeline/stage-builder.js +9 -9
  46. package/lib/pipeline/step-types.d.ts +4 -4
  47. package/lib/pipeline/step-types.js +2 -3
  48. package/lib/template/cache.d.ts +1 -1
  49. package/lib/template/cache.js +5 -9
  50. package/lib/template/evaluator.d.ts +1 -1
  51. package/lib/template/evaluator.js +11 -16
  52. package/lib/template/index.d.ts +9 -9
  53. package/lib/template/index.js +31 -56
  54. package/lib/template/metrics.js +6 -10
  55. package/lib/template/plugin-resolver.js +5 -9
  56. package/lib/template/tokenizer.js +13 -19
  57. package/lib/template/topo-sort.js +2 -5
  58. package/lib/template/validate.d.ts +1 -1
  59. package/lib/template/validate.js +20 -25
  60. package/lib/template/walker.d.ts +1 -1
  61. package/lib/template/walker.js +6 -10
  62. package/package.json +20 -14
@@ -1,18 +1,6 @@
1
- "use strict";
2
1
  // Copyright 2026 Pipeline Builder Contributors
3
2
  // SPDX-License-Identifier: Apache-2.0
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.buildConfigFromMetadata = buildConfigFromMetadata;
6
- exports.metadataForCodePipeline = metadataForCodePipeline;
7
- exports.metadataForCodeBuildStep = metadataForCodeBuildStep;
8
- exports.metadataForShellStep = metadataForShellStep;
9
- exports.metadataForBuildEnvironment = metadataForBuildEnvironment;
10
- exports.asInt = asInt;
11
- exports.networkConfigFromMetadata = networkConfigFromMetadata;
12
- exports.roleConfigFromMetadata = roleConfigFromMetadata;
13
- exports.securityGroupConfigFromMetadata = securityGroupConfigFromMetadata;
14
- exports.parsePipelineVariables = parsePipelineVariables;
15
- const pipeline_types_1 = require("./pipeline-types");
3
+ import { CDK_METADATA_PREFIX, MetadataKeys } from './pipeline-types.js';
16
4
  /**
17
5
  * Type-safe namespace constants for metadata configuration.
18
6
  */
@@ -42,7 +30,7 @@ const NAMESPACE_KEY_MAP = {
42
30
  };
43
31
  const EMPTY_KEY_CONFIG = { booleanKeys: [], passthroughKeys: [] };
44
32
  function getCustomKey(prefix, key) {
45
- return `${pipeline_types_1.CDK_METADATA_PREFIX}${prefix}:${key}`.toLowerCase();
33
+ return `${CDK_METADATA_PREFIX}${prefix}:${key}`.toLowerCase();
46
34
  }
47
35
  function isTrue(value) {
48
36
  if (typeof value === 'boolean')
@@ -52,7 +40,7 @@ function isTrue(value) {
52
40
  return false;
53
41
  }
54
42
  /** Extract CDK construct config from metadata for a given namespace. */
55
- function buildConfigFromMetadata(metadata, namespace) {
43
+ export function buildConfigFromMetadata(metadata, namespace) {
56
44
  const { booleanKeys, passthroughKeys } = NAMESPACE_KEY_MAP[namespace] ?? EMPTY_KEY_CONFIG;
57
45
  const result = {};
58
46
  for (const key of booleanKeys) {
@@ -68,19 +56,19 @@ function buildConfigFromMetadata(metadata, namespace) {
68
56
  return result;
69
57
  }
70
58
  /** Extract CodePipeline config from metadata. */
71
- function metadataForCodePipeline(metadata) {
59
+ export function metadataForCodePipeline(metadata) {
72
60
  return buildConfigFromMetadata(metadata, NAMESPACE.CODE_PIPELINE);
73
61
  }
74
62
  /** Extract CodeBuildStep config from metadata. */
75
- function metadataForCodeBuildStep(metadata) {
63
+ export function metadataForCodeBuildStep(metadata) {
76
64
  return buildConfigFromMetadata(metadata, NAMESPACE.CODE_BUILD_STEP);
77
65
  }
78
66
  /** Extract ShellStep config from metadata. */
79
- function metadataForShellStep(metadata) {
67
+ export function metadataForShellStep(metadata) {
80
68
  return buildConfigFromMetadata(metadata, NAMESPACE.SHELL_STEP);
81
69
  }
82
70
  /** Extract BuildEnvironment config from metadata. */
83
- function metadataForBuildEnvironment(metadata) {
71
+ export function metadataForBuildEnvironment(metadata) {
84
72
  return buildConfigFromMetadata(metadata, NAMESPACE.BUILD_ENVIRONMENT);
85
73
  }
86
74
  // ---------------------------------------------------------------------------
@@ -125,7 +113,7 @@ function asBool(v) {
125
113
  return v === undefined ? undefined : isTrue(v);
126
114
  }
127
115
  /** Coerce a metadata value to a positive integer; undefined if absent/invalid. */
128
- function asInt(v) {
116
+ export function asInt(v) {
129
117
  if (v === undefined || v === null || v === '')
130
118
  return undefined;
131
119
  const n = typeof v === 'number' ? v : Number(String(v).trim());
@@ -136,17 +124,17 @@ function asInt(v) {
136
124
  * from NETWORK_TYPE, or is inferred (subnetIds -> subnetIds, tags -> vpcLookup,
137
125
  * vpcId -> vpcId). Returns undefined when no usable network metadata is present.
138
126
  */
139
- function networkConfigFromMetadata(metadata) {
140
- const type = asStr(metadata[pipeline_types_1.MetadataKeys.NETWORK_TYPE]);
141
- const vpcId = asStr(metadata[pipeline_types_1.MetadataKeys.NETWORK_VPC_ID]);
142
- const subnetIds = asList(metadata[pipeline_types_1.MetadataKeys.NETWORK_SUBNET_IDS]);
143
- const subnetType = asStr(metadata[pipeline_types_1.MetadataKeys.NETWORK_SUBNET_TYPE]);
144
- const availabilityZones = asList(metadata[pipeline_types_1.MetadataKeys.NETWORK_AVAILABILITY_ZONES]);
145
- const subnetGroupName = asStr(metadata[pipeline_types_1.MetadataKeys.NETWORK_SUBNET_GROUP_NAME]);
146
- const securityGroupIds = asList(metadata[pipeline_types_1.MetadataKeys.NETWORK_SECURITY_GROUP_IDS]);
147
- const tags = asTags(metadata[pipeline_types_1.MetadataKeys.NETWORK_TAGS]);
148
- const vpcName = asStr(metadata[pipeline_types_1.MetadataKeys.NETWORK_VPC_NAME]);
149
- const region = asStr(metadata[pipeline_types_1.MetadataKeys.NETWORK_REGION]);
127
+ export function networkConfigFromMetadata(metadata) {
128
+ const type = asStr(metadata[MetadataKeys.NETWORK_TYPE]);
129
+ const vpcId = asStr(metadata[MetadataKeys.NETWORK_VPC_ID]);
130
+ const subnetIds = asList(metadata[MetadataKeys.NETWORK_SUBNET_IDS]);
131
+ const subnetType = asStr(metadata[MetadataKeys.NETWORK_SUBNET_TYPE]);
132
+ const availabilityZones = asList(metadata[MetadataKeys.NETWORK_AVAILABILITY_ZONES]);
133
+ const subnetGroupName = asStr(metadata[MetadataKeys.NETWORK_SUBNET_GROUP_NAME]);
134
+ const securityGroupIds = asList(metadata[MetadataKeys.NETWORK_SECURITY_GROUP_IDS]);
135
+ const tags = asTags(metadata[MetadataKeys.NETWORK_TAGS]);
136
+ const vpcName = asStr(metadata[MetadataKeys.NETWORK_VPC_NAME]);
137
+ const region = asStr(metadata[MetadataKeys.NETWORK_REGION]);
150
138
  const variant = type ?? (subnetIds ? 'subnetIds' : tags ? 'vpcLookup' : vpcId ? 'vpcId' : undefined);
151
139
  switch (variant) {
152
140
  case 'subnetIds':
@@ -190,11 +178,11 @@ function networkConfigFromMetadata(metadata) {
190
178
  * codeBuildDefault). The 4 keys can't express the full `oidc` option set, so an
191
179
  * `oidc` type from metadata is ignored. Returns undefined when no keys are set.
192
180
  */
193
- function roleConfigFromMetadata(metadata) {
194
- const type = asStr(metadata[pipeline_types_1.MetadataKeys.ROLE_TYPE]);
195
- const roleArn = asStr(metadata[pipeline_types_1.MetadataKeys.ROLE_ARN]);
196
- const roleName = asStr(metadata[pipeline_types_1.MetadataKeys.ROLE_NAME]);
197
- const mutable = asBool(metadata[pipeline_types_1.MetadataKeys.ROLE_MUTABLE]);
181
+ export function roleConfigFromMetadata(metadata) {
182
+ const type = asStr(metadata[MetadataKeys.ROLE_TYPE]);
183
+ const roleArn = asStr(metadata[MetadataKeys.ROLE_ARN]);
184
+ const roleName = asStr(metadata[MetadataKeys.ROLE_NAME]);
185
+ const mutable = asBool(metadata[MetadataKeys.ROLE_MUTABLE]);
198
186
  const variant = type ?? (roleArn ? 'roleArn' : roleName ? 'roleName' : undefined);
199
187
  switch (variant) {
200
188
  case 'roleArn':
@@ -215,12 +203,12 @@ function roleConfigFromMetadata(metadata) {
215
203
  * Build a SecurityGroupConfig from `ec2:securitygroup` metadata keys
216
204
  * (securityGroupIds / securityGroupLookup). Returns undefined when no keys set.
217
205
  */
218
- function securityGroupConfigFromMetadata(metadata) {
219
- const type = asStr(metadata[pipeline_types_1.MetadataKeys.SECURITY_GROUP_TYPE]);
220
- const ids = asList(metadata[pipeline_types_1.MetadataKeys.SECURITY_GROUP_IDS]);
221
- const mutable = asBool(metadata[pipeline_types_1.MetadataKeys.SECURITY_GROUP_MUTABLE]);
222
- const name = asStr(metadata[pipeline_types_1.MetadataKeys.SECURITY_GROUP_NAME]);
223
- const vpcId = asStr(metadata[pipeline_types_1.MetadataKeys.SECURITY_GROUP_VPC_ID]);
206
+ export function securityGroupConfigFromMetadata(metadata) {
207
+ const type = asStr(metadata[MetadataKeys.SECURITY_GROUP_TYPE]);
208
+ const ids = asList(metadata[MetadataKeys.SECURITY_GROUP_IDS]);
209
+ const mutable = asBool(metadata[MetadataKeys.SECURITY_GROUP_MUTABLE]);
210
+ const name = asStr(metadata[MetadataKeys.SECURITY_GROUP_NAME]);
211
+ const vpcId = asStr(metadata[MetadataKeys.SECURITY_GROUP_VPC_ID]);
224
212
  const variant = type ?? (ids ? 'securityGroupIds' : name ? 'securityGroupLookup' : undefined);
225
213
  switch (variant) {
226
214
  case 'securityGroupIds':
@@ -241,7 +229,7 @@ function securityGroupConfigFromMetadata(metadata) {
241
229
  * or a compact comma-separated `name=default` list (`ENV=prod,REGION=us-east-1`).
242
230
  * Entries without a usable name are skipped; returns [] when nothing valid.
243
231
  */
244
- function parsePipelineVariables(value) {
232
+ export function parsePipelineVariables(value) {
245
233
  if (value === undefined || value === null || value === '')
246
234
  return [];
247
235
  // Already an array (JSON-typed metadata) or a JSON-encoded string.
@@ -287,4 +275,4 @@ function parsePipelineVariables(value) {
287
275
  }
288
276
  return [];
289
277
  }
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL21ldGFkYXRhLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBMER0QywwREFvQkM7QUFHRCwwREFFQztBQUdELDREQUVDO0FBR0Qsb0RBRUM7QUFHRCxrRUFFQztBQTRDRCxzQkFJQztBQU9ELDhEQStDQztBQU9ELHdEQW9CQztBQU1ELDBFQW1CQztBQWVELHdEQXdDQztBQTlTRCxxREFBcUU7QUFLckU7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRztJQUNoQixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLGVBQWUsRUFBRSx5QkFBeUI7SUFDMUMsaUJBQWlCLEVBQUUsNEJBQTRCO0lBQy9DLGFBQWEsRUFBRSx3QkFBd0I7Q0FDL0IsQ0FBQztBQVFYLE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3RCLFdBQVcsRUFBRSxFQUFFO1FBQ2YsZUFBZSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLENBQUM7S0FDcEk7SUFDRCxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUMzQixXQUFXLEVBQUUsRUFBRTtRQUNmLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxDQUFDO0tBQy9SO0lBQ0QsQ0FBQyxTQUFTLENBQUMsaUJB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ZixDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQTJCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLElBQUk7Z0JBQUUsU0FBUztZQUNwQixNQUFNLFlBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IEJ1aWxkRW52aXJvbm1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB0eXBlIHsgQ29kZUJ1aWxkU3RlcFByb3BzLCBDb2RlUGlwZWxpbmVQcm9wcywgU2hlbGxTdGVwUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHR5cGUgeyBOZXR3b3JrQ29uZmlnLCBTdWJuZXRUeXBlTmFtZSB9IGZyb20gJy4vbmV0d29yay10eXBlcyc7XG5pbXBvcnQgeyBDREtfTUVUQURBVEFfUFJFRklYLCBNZXRhZGF0YUtleXMgfSBmcm9tICcuL3BpcGVsaW5lLXR5cGVzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFJvbGVDb25maWcgfSBmcm9tICcuL3JvbGUtdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBTZWN1cml0eUdyb3VwQ29uZmlnIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC10eXBlcyc7XG5cbi8qKlxuICogVHlwZS1zYWZlIG5hbWVzcGFjZSBjb25zdGFudHMgZm9yIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmNvbnN0IE5BTUVTUEFDRSA9IHtcbiAgU0hFTExfU1RFUDogJ3BpcGVsaW5lczpzaGVsbHN0ZXAnLFxuICBDT0RFX0JVSUxEX1NURVA6ICdwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcCcsXG4gIEJVSUxEX0VOVklST05NRU5UOiAnY29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQnLFxuICBDT0RFX1BJUEVMSU5FOiAncGlwZWxpbmVzOmNvZGVwaXBlbGluZScsXG59IGFzIGNvbnN0O1xudHlwZSBOYW1lc3BhY2UgPSAodHlwZW9mIE5BTUVTUEFDRSlba2V5b2YgdHlwZW9mIE5BTUVTUEFDRV07XG5cbmludGVyZmFjZSBOYW1lc3BhY2VLZXlDb25maWcge1xuICBib29sZWFuS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG4gIHBhc3N0aHJvdWdoS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbmNvbnN0IE5BTUVTUEFDRV9LRVlfTUFQOiBSZWNvcmQ8TmFtZXNwYWNlLCBOYW1lc3BhY2VLZXlDb25maWc+ID0ge1xuICBbTkFNRVNQQUNFLlNIRUxMX1NURVBdOiB7XG4gICAgYm9vbGVhbktleXM6IFtdLFxuICAgIHBhc3N0aHJvdWdoS2V5czogWydhZGRpdGlvbmFsSW5wdXRzJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdpbnB1dCcsICdpbnN0YWxsQ29tbWFuZHMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeSddLFxuICB9LFxuICBbTkFNRVNQQUNFLkNPREVfQlVJTERfU1RFUF06IHtcbiAgICBib29sZWFuS2V5czogW10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2FjdGlvblJvbGUnLCAnYWRkaXRpb25hbElucHV0cycsICdidWlsZEVudmlyb25tZW50JywgJ2NhY2hlJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdmaWxlU3lzdGVtTG9jYXRpb25zJywgJ2lucHV0JywgJ2luc3RhbGxDb21tYW5kcycsICdsb2dnaW5nJywgJ3BhcnRpYWxCdWlsZFNwZWMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeScsICdwcm9qZWN0TmFtZScsICdyb2xlJywgJ3JvbGVQb2xpY3lTdGF0ZW1lbnRzJywgJ3RpbWVvdXQnXSxcbiAgfSxcbiAgW05BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVF06IHtcbiAgICBib29sZWFuS2V5czogWydwcml2aWxlZ2VkJ10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2J1aWxkSW1hZ2UnLCAnY2VydGlmaWNhdGUnLCAnY29tcHV0ZVR5cGUnLCAnZG9ja2VyU2VydmVyJywgJ2Vudmlyb25tZW50VmFyaWFibGVzJywgJ2ZsZWV0J10sXG4gIH0sXG4gIFtOQU1FU1BBQ0UuQ09ERV9QSVBFTElORV06IHtcbiAgICBib29sZWFuS2V5czogWydjcm9zc0FjY291bnRLZXlzJywgJ2RvY2tlckVuYWJsZWRGb3JTZWxmTXV0YXRpb24nLCAnZG9ja2VyRW5hYmxlZEZvclN5bnRoJywgJ2VuYWJsZUtleVJvdGF0aW9uJywgJ3B1Ymxpc2hBc3NldHNJblBhcmFsbGVsJywgJ3JldXNlQ3Jvc3NSZWdpb25TdXBwb3J0U3RhY2tzJywgJ3NlbGZNdXRhdGlvbicsICd1c2VDaGFuZ2VTZXRzJywgJ3VzZVBpcGVsaW5lUm9sZUZvckFjdGlvbnMnXSxcbiAgICBwYXNzdGhyb3VnaEtleXM6IFsnYXJ0aWZhY3RCdWNrZXQnLCAnYXNzZXRQdWJsaXNoaW5nQ29kZUJ1aWxkRGVmYXVsdHMnLCAnY2RrQXNzZXRzQ2xpVmVyc2lvbicsICdjbGlWZXJzaW9uJywgJ2NvZGVCdWlsZERlZmF1bHRzJywgJ2NvZGVQaXBlbGluZScsICdjcm9zc1JlZ2lvblJlcGxpY2F0aW9uQnVja2V0cycsICdkb2NrZXJDcmVkZW50aWFscycsICdwaXBlbGluZU5hbWUnLCAncGlwZWxpbmVUeXBlJywgJ3JvbGUnLCAnc2VsZk11dGF0aW9uQ29kZUJ1aWxkRGVmYXVsdHMnLCAnc3ludGgnLCAnc3ludGhDb2RlQnVpbGREZWZhdWx0cyddLFxuICB9LFxufTtcblxuY29uc3QgRU1QVFlfS0VZX0NPTkZJRzogTmFtZXNwYWNlS2V5Q29uZmlnID0geyBib29sZWFuS2V5czogW10sIHBhc3N0aHJvdWdoS2V5czogW10gfTtcblxuZnVuY3Rpb24gZ2V0Q3VzdG9tS2V5KHByZWZpeDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDREtfTUVUQURBVEFfUFJFRklYfSR7cHJlZml4fToke2tleX1gLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIEV4dHJhY3QgQ0RLIGNvbnN0cnVjdCBjb25maWcgZnJvbSBtZXRhZGF0YSBmb3IgYSBnaXZlbiBuYW1lc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEoXG4gIG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUsXG4gIG5hbWVzcGFjZTogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCB7IGJvb2xlYW5LZXlzLCBwYXNzdGhyb3VnaEtleXMgfSA9XG4gICAgTkFNRVNQQUNFX0tFWV9NQVBbbmFtZXNwYWNlIGFzIE5hbWVzcGFjZV0gPz8gRU1QVFlfS0VZX0NPTkZJRztcblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgYm9vbGVhbktleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gaXNUcnVlKHJhdyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBwYXNzdGhyb3VnaEtleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gcmF3O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEV4dHJhY3QgQ29kZVBpcGVsaW5lIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lKG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUpOiBQYXJ0aWFsPENvZGVQaXBlbGluZVByb3BzPiB7XG4gIHJldHVybiBidWlsZENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YSwgTkFNRVNQQUNFLkNPREVfUElQRUxJTkUpIGFzIFBhcnRpYWw8Q29kZVBpcGVsaW5lUHJvcHM+O1xufVxuXG4vKiogRXh0cmFjdCBDb2RlQnVpbGRTdGVwIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZUJ1aWxkU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxDb2RlQnVpbGRTdGVwUHJvcHM+IHtcbiAgcmV0dXJuIGJ1aWxkQ29uZmlnRnJvbU1ldGFkYXRhKG1ldGFkYXRhLCBOQU1FU1BBQ0UuQ09ERV9CVUlMRF9TVEVQKSBhcyBQYXJ0aWFsPENvZGVCdWlsZFN0ZXBQcm9wcz47XG59XG5cbi8qKiBFeHRyYWN0IFNoZWxsU3RlcCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvclNoZWxsU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxTaGVsbFN0ZXBQcm9wcz4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5TSEVMTF9TVEVQKSBhcyBQYXJ0aWFsPFNoZWxsU3RlcFByb3BzPjtcbn1cblxuLyoqIEV4dHJhY3QgQnVpbGRFbnZpcm9ubWVudCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFBhcnRpYWw8QnVpbGRFbnZpcm9ubWVudD4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVCkgYXMgUGFydGlhbDxCdWlsZEVudmlyb25tZW50Pjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlZC1jb25maWcgZXh0cmFjdG9yczogZWMyOm5ldHdvcmsgLyBpYW06cm9sZSAvIGVjMjpzZWN1cml0eWdyb3VwIG1ldGFkYXRhXG4vLyAtPiB0aGUgZGlzY3JpbWluYXRlZC11bmlvbiBjb25maWcgb2JqZWN0cyB0aGUgYnVpbGRlciBhbHJlYWR5IGNvbnN1bWVzXG4vLyAoTmV0d29ya0NvbmZpZyAvIFJvbGVDb25maWcgLyBTZWN1cml0eUdyb3VwQ29uZmlnKS4gVW5saWtlIHRoZSBuYW1lc3BhY2VzXG4vLyBhYm92ZSAod2hpY2ggbWFwIDE6MSB0byBDREsgY29uc3RydWN0IHByb3BzKSwgdGhlc2UgZmVlZCByZXNvbHZlTmV0d29yayAvXG4vLyByZXNvbHZlUm9sZSAvIHJlc29sdmVTZWN1cml0eUdyb3VwLiBFYWNoIHJldHVybnMgdW5kZWZpbmVkIHdoZW4gaXRzIGtleXMgYXJlXG4vLyBhYnNlbnQsIHNvIGNhbGxlcnMgZmFsbCB0aHJvdWdoIHdpdGggYHByb3AgPz8gbWV0YWRhdGEgPz8gZW52YCBwcmVjZWRlbmNlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGFzU3RyKHY6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJyA/IHYgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBBY2NlcHQgYSBKU09OIGFycmF5IG9yIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyAtPiBzdHJpbmdbXSAodW5kZWZpbmVkIGlmIGVtcHR5KS4gKi9cbmZ1bmN0aW9uIGFzTGlzdCh2OiB1bmtub3duKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkodilcbiAgICA/IHYubWFwKFN0cmluZykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgIDogdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJ1xuICAgICAgPyB2LnNwbGl0KCcsJykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgICAgOiBbXTtcbiAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtcyA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIEFjY2VwdCBhIEpTT04gb2JqZWN0IG9yIGEgSlNPTiBzdHJpbmcgLT4gUmVjb3JkPHN0cmluZyxzdHJpbmc+ICh1bmRlZmluZWQgaWYgZW1wdHkpLiAqL1xuZnVuY3Rpb24gYXNUYWdzKHY6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgbGV0IG9iajogdW5rbm93biA9IHY7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi50cmltKCkgIT09ICcnKSB7XG4gICAgdHJ5IHsgb2JqID0gSlNPTi5wYXJzZSh2KTsgfSBjYXRjaCB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgfVxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob2JqIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5tYXAoKFtrLCB2YWxdKSA9PiBbaywgU3RyaW5nKHZhbCldIGFzIGNvbnN0KTtcbiAgICByZXR1cm4gZW50cmllcy5sZW5ndGggPiAwID8gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpIDogdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiB1bmRlZmluZWQgd2hlbiB0aGUga2V5IGlzIGFic2VudDsgb3RoZXJ3aXNlIGEgY29lcmNlZCBib29sZWFuLiAqL1xuZnVuY3Rpb24gYXNCb29sKHY6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGlzVHJ1ZSh2KTtcbn1cblxuLyoqIENvZXJjZSBhIG1ldGFkYXRhIHZhbHVlIHRvIGEgcG9zaXRpdmUgaW50ZWdlcjsgdW5kZWZpbmVkIGlmIGFic2VudC9pbnZhbGlkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzSW50KHY6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgfHwgdiA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IG4gPSB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogTnVtYmVyKFN0cmluZyh2KS50cmltKCkpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihuKSAmJiBuID4gMCA/IG4gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGQgYSBOZXR3b3JrQ29uZmlnIGZyb20gYGVjMjpuZXR3b3JrYCBtZXRhZGF0YSBrZXlzLiBUaGUgdmFyaWFudCBjb21lc1xuICogZnJvbSBORVRXT1JLX1RZUEUsIG9yIGlzIGluZmVycmVkIChzdWJuZXRJZHMgLT4gc3VibmV0SWRzLCB0YWdzIC0+IHZwY0xvb2t1cCxcbiAqIHZwY0lkIC0+IHZwY0lkKS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiBubyB1c2FibGUgbmV0d29yayBtZXRhZGF0YSBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UWVBFXSk7XG4gIGNvbnN0IHZwY0lkID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfVlBDX0lEXSk7XG4gIGNvbnN0IHN1Ym5ldElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfSURTXSk7XG4gIGNvbnN0IHN1Ym5ldFR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfVFlQRV0pIGFzIFN1Ym5ldFR5cGVOYW1lIHwgdW5kZWZpbmVkO1xuICBjb25zdCBhdmFpbGFiaWxpdHlab25lcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19BVkFJTEFCSUxJVFlfWk9ORVNdKTtcbiAgY29uc3Qgc3VibmV0R3JvdXBOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfU1VCTkVUX0dST1VQX05BTUVdKTtcbiAgY29uc3Qgc2VjdXJpdHlHcm91cElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TRUNVUklUWV9HUk9VUF9JRFNdKTtcbiAgY29uc3QgdGFncyA9IGFzVGFncyhtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UQUdTXSk7XG4gIGNvbnN0IHZwY05hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19WUENfTkFNRV0pO1xuICBjb25zdCByZWdpb24gPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19SRUdJT05dKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoc3VibmV0SWRzID8gJ3N1Ym5ldElkcycgOiB0YWdzID8gJ3ZwY0xvb2t1cCcgOiB2cGNJZCA/ICd2cGNJZCcgOiB1bmRlZmluZWQpO1xuXG4gIHN3aXRjaCAodmFyaWFudCkge1xuICAgIGNhc2UgJ3N1Ym5ldElkcyc6XG4gICAgICBpZiAoIXZwY0lkIHx8ICFzdWJuZXRJZHMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc3VibmV0SWRzJywgb3B0aW9uczogeyB2cGNJZCwgc3VibmV0SWRzLCAuLi4oc2VjdXJpdHlHcm91cElkcyAmJiB7IHNlY3VyaXR5R3JvdXBJZHMgfSkgfSB9O1xuICAgIGNhc2UgJ3ZwY0lkJzpcbiAgICAgIGlmICghdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndnBjSWQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdnBjSWQsXG4gICAgICAgICAgLi4uKHN1Ym5ldFR5cGUgJiYgeyBzdWJuZXRUeXBlIH0pLFxuICAgICAgICAgIC4uLihhdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgICAgICAgIC4uLihzdWJuZXRHcm91cE5hbWUgJiYgeyBzdWJuZXRHcm91cE5hbWUgfSksXG4gICAgICAgICAgLi4uKHNlY3VyaXR5R3JvdXBJZHMgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlICd2cGNMb29rdXAnOlxuICAgICAgaWYgKCF0YWdzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZwY0xvb2t1cCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0YWdzLFxuICAgICAgICAgIC4uLihzdWJuZXRUeXBlICYmIHsgc3VibmV0VHlwZSB9KSxcbiAgICAgICAgICAuLi4oYXZhaWxhYmlsaXR5Wm9uZXMgJiYgeyBhdmFpbGFiaWxpdHlab25lcyB9KSxcbiAgICAgICAgICAuLi4oc3VibmV0R3JvdXBOYW1lICYmIHsgc3VibmV0R3JvdXBOYW1lIH0pLFxuICAgICAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzICYmIHsgc2VjdXJpdHlHcm91cElkcyB9KSxcbiAgICAgICAgICAuLi4odnBjTmFtZSAmJiB7IHZwY05hbWUgfSksXG4gICAgICAgICAgLi4uKHJlZ2lvbiAmJiB7IHJlZ2lvbiB9KSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIFJvbGVDb25maWcgZnJvbSBgaWFtOnJvbGVgIG1ldGFkYXRhIGtleXMgKHJvbGVBcm4gLyByb2xlTmFtZSAvXG4gKiBjb2RlQnVpbGREZWZhdWx0KS4gVGhlIDQga2V5cyBjYW4ndCBleHByZXNzIHRoZSBmdWxsIGBvaWRjYCBvcHRpb24gc2V0LCBzbyBhblxuICogYG9pZGNgIHR5cGUgZnJvbSBtZXRhZGF0YSBpcyBpZ25vcmVkLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgYXJlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFJvbGVDb25maWcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0eXBlID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfVFlQRV0pO1xuICBjb25zdCByb2xlQXJuID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfQVJOXSk7XG4gIGNvbnN0IHJvbGVOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfTkFNRV0pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5ST0xFX01VVEFCTEVdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAocm9sZUFybiA/ICdyb2xlQXJuJyA6IHJvbGVOYW1lID8gJ3JvbGVOYW1lJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAncm9sZUFybic6XG4gICAgICBpZiAoIXJvbGVBcm4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZUFybicsIG9wdGlvbnM6IHsgcm9sZUFybiwgLi4uKG11dGFibGUgIT09IHVuZGVmaW5lZCAmJiB7IG11dGFibGUgfSkgfSB9O1xuICAgIGNhc2UgJ3JvbGVOYW1lJzpcbiAgICAgIGlmICghcm9sZU5hbWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZU5hbWUnLCBvcHRpb25zOiB7IHJvbGVOYW1lLCAuLi4obXV0YWJsZSAhPT0gdW5kZWZpbmVkICYmIHsgbXV0YWJsZSB9KSB9IH07XG4gICAgY2FzZSAnY29kZUJ1aWxkRGVmYXVsdCc6XG4gICAgICByZXR1cm4geyB0eXBlOiAnY29kZUJ1aWxkRGVmYXVsdCcsIG9wdGlvbnM6IHsgLi4uKHJvbGVOYW1lICYmIHsgcm9sZU5hbWUgfSkgfSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBTZWN1cml0eUdyb3VwQ29uZmlnIGZyb20gYGVjMjpzZWN1cml0eWdyb3VwYCBtZXRhZGF0YSBrZXlzXG4gKiAoc2VjdXJpdHlHcm91cElkcyAvIHNlY3VyaXR5R3JvdXBMb29rdXApLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlHcm91cENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogU2VjdXJpdHlHcm91cENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfVFlQRV0pO1xuICBjb25zdCBpZHMgPSBhc0xpc3QobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlNFQ1VSSVRZX0dST1VQX0lEU10pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9NVVRBQkxFXSk7XG4gIGNvbnN0IG5hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfTkFNRV0pO1xuICBjb25zdCB2cGNJZCA9IGFzU3RyKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9WUENfSURdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoaWRzID8gJ3NlY3VyaXR5R3JvdXBJZHMnIDogbmFtZSA/ICdzZWN1cml0eUdyb3VwTG9va3VwJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAnc2VjdXJpdHlHcm91cElkcyc6XG4gICAgICBpZiAoIWlkcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzZWN1cml0eUdyb3VwSWRzJywgb3B0aW9uczogeyBzZWN1cml0eUdyb3VwSWRzOiBpZHMsIC4uLihtdXRhYmxlICE9PSB1bmRlZmluZWQgJiYgeyBtdXRhYmxlIH0pIH0gfTtcbiAgICBjYXNlICdzZWN1cml0eUdyb3VwTG9va3VwJzpcbiAgICAgIGlmICghbmFtZSB8fCAhdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc2VjdXJpdHlHcm91cExvb2t1cCcsIG9wdGlvbnM6IHsgc2VjdXJpdHlHcm91cE5hbWU6IG5hbWUsIHZwY0lkIH0gfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogQSBDb2RlUGlwZWxpbmUgVjIgcGlwZWxpbmUtbGV2ZWwgdmFyaWFibGUgcGFyc2VkIGZyb20gYG9wZXJhdGlvbnMudmFyaWFibGVzYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVWYXJpYWJsZVNwZWMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2UgYG9wZXJhdGlvbnMudmFyaWFibGVzYCBtZXRhZGF0YSBpbnRvIENvZGVQaXBlbGluZSBWMiB2YXJpYWJsZSBzcGVjcy5cbiAqIEFjY2VwdHMgYSBKU09OIGFycmF5IChgW3tcIm5hbWVcIjpcIkVOVlwiLFwiZGVmYXVsdFwiOlwicHJvZFwiLFwiZGVzY3JpcHRpb25cIjpcIi4uLlwifV1gKVxuICogb3IgYSBjb21wYWN0IGNvbW1hLXNlcGFyYXRlZCBgbmFtZT1kZWZhdWx0YCBsaXN0IChgRU5WPXByb2QsUkVHSU9OPXVzLWVhc3QtMWApLlxuICogRW50cmllcyB3aXRob3V0IGEgdXNhYmxlIG5hbWUgYXJlIHNraXBwZWQ7IHJldHVybnMgW10gd2hlbiBub3RoaW5nIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQaXBlbGluZVZhcmlhYmxlcyh2YWx1ZTogdW5rbm93bik6IFBpcGVsaW5lVmFyaWFibGVTcGVjW10ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcblxuICAvLyBBbHJlYWR5IGFuIGFycmF5IChKU09OLXR5cGVkIG1ldGFkYXRhKSBvciBhIEpTT04tZW5jb2RlZCBzdHJpbmcuXG4gIGxldCBwYXJzZWQ6IHVua25vd24gPSB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xuICAgICAgdHJ5IHsgcGFyc2VkID0gSlNPTi5wYXJzZSh0cmltbWVkKTsgfSBjYXRjaCB7IHBhcnNlZCA9IHZhbHVlOyB9XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBwYXJzZWQpIHtcbiAgICAgIGlmICghZW50cnkgfHwgdHlwZW9mIGVudHJ5ICE9PSAnb2JqZWN0JykgY29udGludWU7XG4gICAgICBjb25zdCBlID0gZW50cnkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBuYW1lID0gYXNTdHIoZS5uYW1lKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBhc1N0cihlLmRlZmF1bHQpID8/IGFzU3RyKGUuZGVmYXVsdFZhbHVlKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYXNTdHIoZS5kZXNjcmlwdGlvbik7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHsgZGVmYXVsdFZhbHVlIH0pLCAuLi4oZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGRlc2NyaXB0aW9uIH0pIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3BlY3M7XG4gIH1cblxuICAvLyBDb21wYWN0IGBuYW1lPWRlZmF1bHRgIGNvbW1hIGxpc3QuXG4gIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhcnNlZC5zcGxpdCgnLCcpKSB7XG4gICAgICBjb25zdCBpZHggPSBwYWlyLmluZGV4T2YoJz0nKTtcbiAgICAgIGNvbnN0IG5hbWUgPSAoaWR4ID09PSAtMSA/IHBhaXIgOiBwYWlyLnNsaWNlKDAsIGlkeCkpLnRyaW0oKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBpZHggPT09IC0xID8gdW5kZWZpbmVkIDogcGFpci5zbGljZShpZHggKyAxKS50cmltKCk7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSA/IHsgZGVmYXVsdFZhbHVlIH0gOiB7fSkgfSk7XG4gICAgfVxuICAgIHJldHVybiBzcGVjcztcbiAgfVxuXG4gIHJldHVybiBbXTtcbn1cbiJdfQ==
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL21ldGFkYXRhLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUt0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLeEU7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRztJQUNoQixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLGVBQWUsRUFBRSx5QkFBeUI7SUFDMUMsaUJBQWlCLEVBQUUsNEJBQTRCO0lBQy9DLGFBQWEsRUFBRSx3QkFBd0I7Q0FDL0IsQ0FBQztBQVFYLE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3RCLFdBQVcsRUFBRSxFQUFFO1FBQ2YsZUFBZSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLENBQUM7S0FDcEk7SUFDRCxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUMzQixXQUFXLEVBQUUsRUFBRTtRQUNmLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxDQUFDO0tBQy9SO0lBQ0QsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUM3QixXQUFXLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDM0IsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLGFB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QUM7UUFDL0IsTUFBTSxLQUFLLEdBQTJCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLElBQUk7Z0JBQUUsU0FBUztZQUNwQixNQUFNLFlBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IEJ1aWxkRW52aXJvbm1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB0eXBlIHsgQ29kZUJ1aWxkU3RlcFByb3BzLCBDb2RlUGlwZWxpbmVQcm9wcywgU2hlbGxTdGVwUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHR5cGUgeyBOZXR3b3JrQ29uZmlnLCBTdWJuZXRUeXBlTmFtZSB9IGZyb20gJy4vbmV0d29yay10eXBlcy5qcyc7XG5pbXBvcnQgeyBDREtfTUVUQURBVEFfUFJFRklYLCBNZXRhZGF0YUtleXMgfSBmcm9tICcuL3BpcGVsaW5lLXR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJvbGVDb25maWcgfSBmcm9tICcuL3JvbGUtdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTZWN1cml0eUdyb3VwQ29uZmlnIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC10eXBlcy5qcyc7XG5cbi8qKlxuICogVHlwZS1zYWZlIG5hbWVzcGFjZSBjb25zdGFudHMgZm9yIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmNvbnN0IE5BTUVTUEFDRSA9IHtcbiAgU0hFTExfU1RFUDogJ3BpcGVsaW5lczpzaGVsbHN0ZXAnLFxuICBDT0RFX0JVSUxEX1NURVA6ICdwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcCcsXG4gIEJVSUxEX0VOVklST05NRU5UOiAnY29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQnLFxuICBDT0RFX1BJUEVMSU5FOiAncGlwZWxpbmVzOmNvZGVwaXBlbGluZScsXG59IGFzIGNvbnN0O1xudHlwZSBOYW1lc3BhY2UgPSAodHlwZW9mIE5BTUVTUEFDRSlba2V5b2YgdHlwZW9mIE5BTUVTUEFDRV07XG5cbmludGVyZmFjZSBOYW1lc3BhY2VLZXlDb25maWcge1xuICBib29sZWFuS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG4gIHBhc3N0aHJvdWdoS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbmNvbnN0IE5BTUVTUEFDRV9LRVlfTUFQOiBSZWNvcmQ8TmFtZXNwYWNlLCBOYW1lc3BhY2VLZXlDb25maWc+ID0ge1xuICBbTkFNRVNQQUNFLlNIRUxMX1NURVBdOiB7XG4gICAgYm9vbGVhbktleXM6IFtdLFxuICAgIHBhc3N0aHJvdWdoS2V5czogWydhZGRpdGlvbmFsSW5wdXRzJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdpbnB1dCcsICdpbnN0YWxsQ29tbWFuZHMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeSddLFxuICB9LFxuICBbTkFNRVNQQUNFLkNPREVfQlVJTERfU1RFUF06IHtcbiAgICBib29sZWFuS2V5czogW10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2FjdGlvblJvbGUnLCAnYWRkaXRpb25hbElucHV0cycsICdidWlsZEVudmlyb25tZW50JywgJ2NhY2hlJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdmaWxlU3lzdGVtTG9jYXRpb25zJywgJ2lucHV0JywgJ2luc3RhbGxDb21tYW5kcycsICdsb2dnaW5nJywgJ3BhcnRpYWxCdWlsZFNwZWMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeScsICdwcm9qZWN0TmFtZScsICdyb2xlJywgJ3JvbGVQb2xpY3lTdGF0ZW1lbnRzJywgJ3RpbWVvdXQnXSxcbiAgfSxcbiAgW05BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVF06IHtcbiAgICBib29sZWFuS2V5czogWydwcml2aWxlZ2VkJ10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2J1aWxkSW1hZ2UnLCAnY2VydGlmaWNhdGUnLCAnY29tcHV0ZVR5cGUnLCAnZG9ja2VyU2VydmVyJywgJ2Vudmlyb25tZW50VmFyaWFibGVzJywgJ2ZsZWV0J10sXG4gIH0sXG4gIFtOQU1FU1BBQ0UuQ09ERV9QSVBFTElORV06IHtcbiAgICBib29sZWFuS2V5czogWydjcm9zc0FjY291bnRLZXlzJywgJ2RvY2tlckVuYWJsZWRGb3JTZWxmTXV0YXRpb24nLCAnZG9ja2VyRW5hYmxlZEZvclN5bnRoJywgJ2VuYWJsZUtleVJvdGF0aW9uJywgJ3B1Ymxpc2hBc3NldHNJblBhcmFsbGVsJywgJ3JldXNlQ3Jvc3NSZWdpb25TdXBwb3J0U3RhY2tzJywgJ3NlbGZNdXRhdGlvbicsICd1c2VDaGFuZ2VTZXRzJywgJ3VzZVBpcGVsaW5lUm9sZUZvckFjdGlvbnMnXSxcbiAgICBwYXNzdGhyb3VnaEtleXM6IFsnYXJ0aWZhY3RCdWNrZXQnLCAnYXNzZXRQdWJsaXNoaW5nQ29kZUJ1aWxkRGVmYXVsdHMnLCAnY2RrQXNzZXRzQ2xpVmVyc2lvbicsICdjbGlWZXJzaW9uJywgJ2NvZGVCdWlsZERlZmF1bHRzJywgJ2NvZGVQaXBlbGluZScsICdjcm9zc1JlZ2lvblJlcGxpY2F0aW9uQnVja2V0cycsICdkb2NrZXJDcmVkZW50aWFscycsICdwaXBlbGluZU5hbWUnLCAncGlwZWxpbmVUeXBlJywgJ3JvbGUnLCAnc2VsZk11dGF0aW9uQ29kZUJ1aWxkRGVmYXVsdHMnLCAnc3ludGgnLCAnc3ludGhDb2RlQnVpbGREZWZhdWx0cyddLFxuICB9LFxufTtcblxuY29uc3QgRU1QVFlfS0VZX0NPTkZJRzogTmFtZXNwYWNlS2V5Q29uZmlnID0geyBib29sZWFuS2V5czogW10sIHBhc3N0aHJvdWdoS2V5czogW10gfTtcblxuZnVuY3Rpb24gZ2V0Q3VzdG9tS2V5KHByZWZpeDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDREtfTUVUQURBVEFfUFJFRklYfSR7cHJlZml4fToke2tleX1gLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIEV4dHJhY3QgQ0RLIGNvbnN0cnVjdCBjb25maWcgZnJvbSBtZXRhZGF0YSBmb3IgYSBnaXZlbiBuYW1lc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEoXG4gIG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUsXG4gIG5hbWVzcGFjZTogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCB7IGJvb2xlYW5LZXlzLCBwYXNzdGhyb3VnaEtleXMgfSA9XG4gICAgTkFNRVNQQUNFX0tFWV9NQVBbbmFtZXNwYWNlIGFzIE5hbWVzcGFjZV0gPz8gRU1QVFlfS0VZX0NPTkZJRztcblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgYm9vbGVhbktleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gaXNUcnVlKHJhdyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBwYXNzdGhyb3VnaEtleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gcmF3O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEV4dHJhY3QgQ29kZVBpcGVsaW5lIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lKG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUpOiBQYXJ0aWFsPENvZGVQaXBlbGluZVByb3BzPiB7XG4gIHJldHVybiBidWlsZENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YSwgTkFNRVNQQUNFLkNPREVfUElQRUxJTkUpIGFzIFBhcnRpYWw8Q29kZVBpcGVsaW5lUHJvcHM+O1xufVxuXG4vKiogRXh0cmFjdCBDb2RlQnVpbGRTdGVwIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZUJ1aWxkU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxDb2RlQnVpbGRTdGVwUHJvcHM+IHtcbiAgcmV0dXJuIGJ1aWxkQ29uZmlnRnJvbU1ldGFkYXRhKG1ldGFkYXRhLCBOQU1FU1BBQ0UuQ09ERV9CVUlMRF9TVEVQKSBhcyBQYXJ0aWFsPENvZGVCdWlsZFN0ZXBQcm9wcz47XG59XG5cbi8qKiBFeHRyYWN0IFNoZWxsU3RlcCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvclNoZWxsU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxTaGVsbFN0ZXBQcm9wcz4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5TSEVMTF9TVEVQKSBhcyBQYXJ0aWFsPFNoZWxsU3RlcFByb3BzPjtcbn1cblxuLyoqIEV4dHJhY3QgQnVpbGRFbnZpcm9ubWVudCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFBhcnRpYWw8QnVpbGRFbnZpcm9ubWVudD4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVCkgYXMgUGFydGlhbDxCdWlsZEVudmlyb25tZW50Pjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlZC1jb25maWcgZXh0cmFjdG9yczogZWMyOm5ldHdvcmsgLyBpYW06cm9sZSAvIGVjMjpzZWN1cml0eWdyb3VwIG1ldGFkYXRhXG4vLyAtPiB0aGUgZGlzY3JpbWluYXRlZC11bmlvbiBjb25maWcgb2JqZWN0cyB0aGUgYnVpbGRlciBhbHJlYWR5IGNvbnN1bWVzXG4vLyAoTmV0d29ya0NvbmZpZyAvIFJvbGVDb25maWcgLyBTZWN1cml0eUdyb3VwQ29uZmlnKS4gVW5saWtlIHRoZSBuYW1lc3BhY2VzXG4vLyBhYm92ZSAod2hpY2ggbWFwIDE6MSB0byBDREsgY29uc3RydWN0IHByb3BzKSwgdGhlc2UgZmVlZCByZXNvbHZlTmV0d29yayAvXG4vLyByZXNvbHZlUm9sZSAvIHJlc29sdmVTZWN1cml0eUdyb3VwLiBFYWNoIHJldHVybnMgdW5kZWZpbmVkIHdoZW4gaXRzIGtleXMgYXJlXG4vLyBhYnNlbnQsIHNvIGNhbGxlcnMgZmFsbCB0aHJvdWdoIHdpdGggYHByb3AgPz8gbWV0YWRhdGEgPz8gZW52YCBwcmVjZWRlbmNlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGFzU3RyKHY6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJyA/IHYgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBBY2NlcHQgYSBKU09OIGFycmF5IG9yIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyAtPiBzdHJpbmdbXSAodW5kZWZpbmVkIGlmIGVtcHR5KS4gKi9cbmZ1bmN0aW9uIGFzTGlzdCh2OiB1bmtub3duKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkodilcbiAgICA/IHYubWFwKFN0cmluZykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgIDogdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJ1xuICAgICAgPyB2LnNwbGl0KCcsJykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgICAgOiBbXTtcbiAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtcyA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIEFjY2VwdCBhIEpTT04gb2JqZWN0IG9yIGEgSlNPTiBzdHJpbmcgLT4gUmVjb3JkPHN0cmluZyxzdHJpbmc+ICh1bmRlZmluZWQgaWYgZW1wdHkpLiAqL1xuZnVuY3Rpb24gYXNUYWdzKHY6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgbGV0IG9iajogdW5rbm93biA9IHY7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi50cmltKCkgIT09ICcnKSB7XG4gICAgdHJ5IHsgb2JqID0gSlNPTi5wYXJzZSh2KTsgfSBjYXRjaCB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgfVxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob2JqIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5tYXAoKFtrLCB2YWxdKSA9PiBbaywgU3RyaW5nKHZhbCldIGFzIGNvbnN0KTtcbiAgICByZXR1cm4gZW50cmllcy5sZW5ndGggPiAwID8gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpIDogdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiB1bmRlZmluZWQgd2hlbiB0aGUga2V5IGlzIGFic2VudDsgb3RoZXJ3aXNlIGEgY29lcmNlZCBib29sZWFuLiAqL1xuZnVuY3Rpb24gYXNCb29sKHY6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGlzVHJ1ZSh2KTtcbn1cblxuLyoqIENvZXJjZSBhIG1ldGFkYXRhIHZhbHVlIHRvIGEgcG9zaXRpdmUgaW50ZWdlcjsgdW5kZWZpbmVkIGlmIGFic2VudC9pbnZhbGlkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzSW50KHY6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgfHwgdiA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IG4gPSB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogTnVtYmVyKFN0cmluZyh2KS50cmltKCkpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihuKSAmJiBuID4gMCA/IG4gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGQgYSBOZXR3b3JrQ29uZmlnIGZyb20gYGVjMjpuZXR3b3JrYCBtZXRhZGF0YSBrZXlzLiBUaGUgdmFyaWFudCBjb21lc1xuICogZnJvbSBORVRXT1JLX1RZUEUsIG9yIGlzIGluZmVycmVkIChzdWJuZXRJZHMgLT4gc3VibmV0SWRzLCB0YWdzIC0+IHZwY0xvb2t1cCxcbiAqIHZwY0lkIC0+IHZwY0lkKS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiBubyB1c2FibGUgbmV0d29yayBtZXRhZGF0YSBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UWVBFXSk7XG4gIGNvbnN0IHZwY0lkID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfVlBDX0lEXSk7XG4gIGNvbnN0IHN1Ym5ldElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfSURTXSk7XG4gIGNvbnN0IHN1Ym5ldFR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfVFlQRV0pIGFzIFN1Ym5ldFR5cGVOYW1lIHwgdW5kZWZpbmVkO1xuICBjb25zdCBhdmFpbGFiaWxpdHlab25lcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19BVkFJTEFCSUxJVFlfWk9ORVNdKTtcbiAgY29uc3Qgc3VibmV0R3JvdXBOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfU1VCTkVUX0dST1VQX05BTUVdKTtcbiAgY29uc3Qgc2VjdXJpdHlHcm91cElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TRUNVUklUWV9HUk9VUF9JRFNdKTtcbiAgY29uc3QgdGFncyA9IGFzVGFncyhtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UQUdTXSk7XG4gIGNvbnN0IHZwY05hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19WUENfTkFNRV0pO1xuICBjb25zdCByZWdpb24gPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19SRUdJT05dKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoc3VibmV0SWRzID8gJ3N1Ym5ldElkcycgOiB0YWdzID8gJ3ZwY0xvb2t1cCcgOiB2cGNJZCA/ICd2cGNJZCcgOiB1bmRlZmluZWQpO1xuXG4gIHN3aXRjaCAodmFyaWFudCkge1xuICAgIGNhc2UgJ3N1Ym5ldElkcyc6XG4gICAgICBpZiAoIXZwY0lkIHx8ICFzdWJuZXRJZHMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc3VibmV0SWRzJywgb3B0aW9uczogeyB2cGNJZCwgc3VibmV0SWRzLCAuLi4oc2VjdXJpdHlHcm91cElkcyAmJiB7IHNlY3VyaXR5R3JvdXBJZHMgfSkgfSB9O1xuICAgIGNhc2UgJ3ZwY0lkJzpcbiAgICAgIGlmICghdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndnBjSWQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdnBjSWQsXG4gICAgICAgICAgLi4uKHN1Ym5ldFR5cGUgJiYgeyBzdWJuZXRUeXBlIH0pLFxuICAgICAgICAgIC4uLihhdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgICAgICAgIC4uLihzdWJuZXRHcm91cE5hbWUgJiYgeyBzdWJuZXRHcm91cE5hbWUgfSksXG4gICAgICAgICAgLi4uKHNlY3VyaXR5R3JvdXBJZHMgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlICd2cGNMb29rdXAnOlxuICAgICAgaWYgKCF0YWdzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZwY0xvb2t1cCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0YWdzLFxuICAgICAgICAgIC4uLihzdWJuZXRUeXBlICYmIHsgc3VibmV0VHlwZSB9KSxcbiAgICAgICAgICAuLi4oYXZhaWxhYmlsaXR5Wm9uZXMgJiYgeyBhdmFpbGFiaWxpdHlab25lcyB9KSxcbiAgICAgICAgICAuLi4oc3VibmV0R3JvdXBOYW1lICYmIHsgc3VibmV0R3JvdXBOYW1lIH0pLFxuICAgICAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzICYmIHsgc2VjdXJpdHlHcm91cElkcyB9KSxcbiAgICAgICAgICAuLi4odnBjTmFtZSAmJiB7IHZwY05hbWUgfSksXG4gICAgICAgICAgLi4uKHJlZ2lvbiAmJiB7IHJlZ2lvbiB9KSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIFJvbGVDb25maWcgZnJvbSBgaWFtOnJvbGVgIG1ldGFkYXRhIGtleXMgKHJvbGVBcm4gLyByb2xlTmFtZSAvXG4gKiBjb2RlQnVpbGREZWZhdWx0KS4gVGhlIDQga2V5cyBjYW4ndCBleHByZXNzIHRoZSBmdWxsIGBvaWRjYCBvcHRpb24gc2V0LCBzbyBhblxuICogYG9pZGNgIHR5cGUgZnJvbSBtZXRhZGF0YSBpcyBpZ25vcmVkLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgYXJlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFJvbGVDb25maWcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0eXBlID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfVFlQRV0pO1xuICBjb25zdCByb2xlQXJuID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfQVJOXSk7XG4gIGNvbnN0IHJvbGVOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfTkFNRV0pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5ST0xFX01VVEFCTEVdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAocm9sZUFybiA/ICdyb2xlQXJuJyA6IHJvbGVOYW1lID8gJ3JvbGVOYW1lJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAncm9sZUFybic6XG4gICAgICBpZiAoIXJvbGVBcm4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZUFybicsIG9wdGlvbnM6IHsgcm9sZUFybiwgLi4uKG11dGFibGUgIT09IHVuZGVmaW5lZCAmJiB7IG11dGFibGUgfSkgfSB9O1xuICAgIGNhc2UgJ3JvbGVOYW1lJzpcbiAgICAgIGlmICghcm9sZU5hbWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZU5hbWUnLCBvcHRpb25zOiB7IHJvbGVOYW1lLCAuLi4obXV0YWJsZSAhPT0gdW5kZWZpbmVkICYmIHsgbXV0YWJsZSB9KSB9IH07XG4gICAgY2FzZSAnY29kZUJ1aWxkRGVmYXVsdCc6XG4gICAgICByZXR1cm4geyB0eXBlOiAnY29kZUJ1aWxkRGVmYXVsdCcsIG9wdGlvbnM6IHsgLi4uKHJvbGVOYW1lICYmIHsgcm9sZU5hbWUgfSkgfSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBTZWN1cml0eUdyb3VwQ29uZmlnIGZyb20gYGVjMjpzZWN1cml0eWdyb3VwYCBtZXRhZGF0YSBrZXlzXG4gKiAoc2VjdXJpdHlHcm91cElkcyAvIHNlY3VyaXR5R3JvdXBMb29rdXApLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlHcm91cENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogU2VjdXJpdHlHcm91cENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfVFlQRV0pO1xuICBjb25zdCBpZHMgPSBhc0xpc3QobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlNFQ1VSSVRZX0dST1VQX0lEU10pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9NVVRBQkxFXSk7XG4gIGNvbnN0IG5hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfTkFNRV0pO1xuICBjb25zdCB2cGNJZCA9IGFzU3RyKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9WUENfSURdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoaWRzID8gJ3NlY3VyaXR5R3JvdXBJZHMnIDogbmFtZSA/ICdzZWN1cml0eUdyb3VwTG9va3VwJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAnc2VjdXJpdHlHcm91cElkcyc6XG4gICAgICBpZiAoIWlkcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzZWN1cml0eUdyb3VwSWRzJywgb3B0aW9uczogeyBzZWN1cml0eUdyb3VwSWRzOiBpZHMsIC4uLihtdXRhYmxlICE9PSB1bmRlZmluZWQgJiYgeyBtdXRhYmxlIH0pIH0gfTtcbiAgICBjYXNlICdzZWN1cml0eUdyb3VwTG9va3VwJzpcbiAgICAgIGlmICghbmFtZSB8fCAhdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc2VjdXJpdHlHcm91cExvb2t1cCcsIG9wdGlvbnM6IHsgc2VjdXJpdHlHcm91cE5hbWU6IG5hbWUsIHZwY0lkIH0gfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogQSBDb2RlUGlwZWxpbmUgVjIgcGlwZWxpbmUtbGV2ZWwgdmFyaWFibGUgcGFyc2VkIGZyb20gYG9wZXJhdGlvbnMudmFyaWFibGVzYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVWYXJpYWJsZVNwZWMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2UgYG9wZXJhdGlvbnMudmFyaWFibGVzYCBtZXRhZGF0YSBpbnRvIENvZGVQaXBlbGluZSBWMiB2YXJpYWJsZSBzcGVjcy5cbiAqIEFjY2VwdHMgYSBKU09OIGFycmF5IChgW3tcIm5hbWVcIjpcIkVOVlwiLFwiZGVmYXVsdFwiOlwicHJvZFwiLFwiZGVzY3JpcHRpb25cIjpcIi4uLlwifV1gKVxuICogb3IgYSBjb21wYWN0IGNvbW1hLXNlcGFyYXRlZCBgbmFtZT1kZWZhdWx0YCBsaXN0IChgRU5WPXByb2QsUkVHSU9OPXVzLWVhc3QtMWApLlxuICogRW50cmllcyB3aXRob3V0IGEgdXNhYmxlIG5hbWUgYXJlIHNraXBwZWQ7IHJldHVybnMgW10gd2hlbiBub3RoaW5nIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQaXBlbGluZVZhcmlhYmxlcyh2YWx1ZTogdW5rbm93bik6IFBpcGVsaW5lVmFyaWFibGVTcGVjW10ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcblxuICAvLyBBbHJlYWR5IGFuIGFycmF5IChKU09OLXR5cGVkIG1ldGFkYXRhKSBvciBhIEpTT04tZW5jb2RlZCBzdHJpbmcuXG4gIGxldCBwYXJzZWQ6IHVua25vd24gPSB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xuICAgICAgdHJ5IHsgcGFyc2VkID0gSlNPTi5wYXJzZSh0cmltbWVkKTsgfSBjYXRjaCB7IHBhcnNlZCA9IHZhbHVlOyB9XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBwYXJzZWQpIHtcbiAgICAgIGlmICghZW50cnkgfHwgdHlwZW9mIGVudHJ5ICE9PSAnb2JqZWN0JykgY29udGludWU7XG4gICAgICBjb25zdCBlID0gZW50cnkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBuYW1lID0gYXNTdHIoZS5uYW1lKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBhc1N0cihlLmRlZmF1bHQpID8/IGFzU3RyKGUuZGVmYXVsdFZhbHVlKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYXNTdHIoZS5kZXNjcmlwdGlvbik7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHsgZGVmYXVsdFZhbHVlIH0pLCAuLi4oZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGRlc2NyaXB0aW9uIH0pIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3BlY3M7XG4gIH1cblxuICAvLyBDb21wYWN0IGBuYW1lPWRlZmF1bHRgIGNvbW1hIGxpc3QuXG4gIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhcnNlZC5zcGxpdCgnLCcpKSB7XG4gICAgICBjb25zdCBpZHggPSBwYWlyLmluZGV4T2YoJz0nKTtcbiAgICAgIGNvbnN0IG5hbWUgPSAoaWR4ID09PSAtMSA/IHBhaXIgOiBwYWlyLnNsaWNlKDAsIGlkeCkpLnRyaW0oKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBpZHggPT09IC0xID8gdW5kZWZpbmVkIDogcGFpci5zbGljZShpZHggKyAxKS50cmltKCk7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSA/IHsgZGVmYXVsdFZhbHVlIH0gOiB7fSkgfSk7XG4gICAgfVxuICAgIHJldHVybiBzcGVjcztcbiAgfVxuXG4gIHJldHVybiBbXTtcbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import type { SecretValue } from 'aws-cdk-lib';
2
- import type { MetaDataType } from './pipeline-types';
3
- import type { SecurityGroupConfig } from './security-group-types';
2
+ import type { MetaDataType } from './pipeline-types.js';
3
+ import type { SecurityGroupConfig } from './security-group-types.js';
4
4
  /**
5
5
  * Network configuration using explicit subnet IDs
6
6
  *
@@ -1,5 +1,4 @@
1
- "use strict";
2
1
  // Copyright 2026 Pipeline Builder Contributors
3
2
  // SPDX-License-Identifier: Apache-2.0
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL25ldHdvcmstdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBTZWNyZXRWYWx1ZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFNlY3VyaXR5R3JvdXBDb25maWcgfSBmcm9tICcuL3NlY3VyaXR5LWdyb3VwLXR5cGVzJztcblxuLyoqXG4gKiBOZXR3b3JrIGNvbmZpZ3VyYXRpb24gdXNpbmcgZXhwbGljaXQgc3VibmV0IElEc1xuICpcbiAqIFVzZSB3aGVuIHlvdSBrbm93IHRoZSBleGFjdCBzdWJuZXQgSURzIHdoZXJlIENvZGVCdWlsZCBzaG91bGQgcnVuLlxuICogU3VibmV0cyBhcmUgc2VsZWN0ZWQgZGlyZWN0bHkgYnkgSUQ7IFZQQyBpcyBsb29rZWQgdXAgZnJvbSB0aGUgcHJvdmlkZWQgdnBjSWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5ldHdvcms6IFN1Ym5ldElkc05ldHdvcmsgPSB7XG4gKiAgIHR5cGU6ICdzdWJuZXRJZHMnLFxuICogICBvcHRpb25zOiB7XG4gKiAgICAgdnBjSWQ6ICd2cGMtMGExYjJjM2Q0ZTVmNmE3YjgnLFxuICogICAgIHN1Ym5ldElkczogWydzdWJuZXQtMGExYjJjM2QnLCAnc3VibmV0LTRlNWY2YTdiJ10sXG4gKiAgICAgc2VjdXJpdHlHcm91cElkczogWydzZy0xMjM0NTY3OCddXG4gKiAgIH1cbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRJZHNOZXR3b3JrIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N1Ym5ldElkcyc7XG4gIHJlYWRvbmx5IG9wdGlvbnM6IFN1Ym5ldElkc05ldHdvcmtPcHRpb25zO1xufVxuXG4vKipcbiAqIE5ldHdvcmsgY29uZmlndXJhdGlvbiB1c2luZyBWUEMgbG9va3VwIGJ5IElEXG4gKlxuICogTG9va3MgdXAgYW4gZXhpc3RpbmcgVlBDIGJ5IGl0cyBJRCBhbmQgcmVzb2x2ZXMgc3VibmV0cyB2aWEgc3VibmV0U2VsZWN0aW9uIGZpbHRlcnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5ldHdvcms6IFZwY0lkTmV0d29yayA9IHtcbiAqICAgdHlwZTogJ3ZwY0lkJyxcbiAqICAgb3B0aW9uczoge1xuICogICAgIHZwY0lkOiAndnBjLTBhMWIyYzNkNGU1ZjZhN2I4JyxcbiAqICAgICBzdWJuZXRUeXBlOiAnUFJJVkFURV9XSVRIX0VHUkVTUycsXG4gKiAgICAgc2VjdXJpdHlHcm91cElkczogWydzZy0xMjM0NTY3OCddXG4gKiAgIH1cbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNJZE5ldHdvcmsge1xuICByZWFkb25seSB0eXBlOiAndnBjSWQnO1xuICByZWFkb25seSBvcHRpb25zOiBWcGNJZE5ldHdvcmtPcHRpb25zO1xufVxuXG4vKipcbiAqIE5ldHdvcmsgY29uZmlndXJhdGlvbiB1c2luZyBWUEMgbG9va3VwIGJ5IHRhZ3NcbiAqXG4gKiBMb29rcyB1cCBhbiBleGlzdGluZyBWUEMgYnkgdGFnIGZpbHRlcnMgYW5kIHJlc29sdmVzIHN1Ym5ldHMgdmlhIHN1Ym5ldFNlbGVjdGlvbiBmaWx0ZXJzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuZXR3b3JrOiBWcGNMb29rdXBOZXR3b3JrID0ge1xuICogICB0eXBlOiAndnBjTG9va3VwJyxcbiAqICAgb3B0aW9uczoge1xuICogICAgIHRhZ3M6IHsgJ2F3czpjbG91ZGZvcm1hdGlvbjpzdGFjay1uYW1lJzogJ05ldHdvcmtTdGFjaycgfSxcbiAqICAgICBzdWJuZXRUeXBlOiAnUFJJVkFURV9XSVRIX0VHUkVTUycsXG4gKiAgICAgYXZhaWxhYmlsaXR5Wm9uZXM6IFsndXMtZWFzdC0xYScsICd1cy1lYXN0LTFiJ11cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0xvb2t1cE5ldHdvcmsge1xuICByZWFkb25seSB0eXBlOiAndnBjTG9va3VwJztcbiAgcmVhZG9ubHkgb3B0aW9uczogVnBjTG9va3VwTmV0d29ya09wdGlvbnM7XG59XG5cbi8qKlxuICogQ29tbW9uIHN1Ym5ldCBzZWxlY3Rpb24gZmlsdGVycyBzaGFyZWQgYnkgVlBDLWJhc2VkIG5ldHdvcmsgb3B0aW9uc1xuICovXG5pbnRlcmZhY2UgU3VibmV0U2VsZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTdWJuZXQgdHlwZSBmaWx0ZXIgZm9yIHN1Ym5ldCBzZWxlY3Rpb25cbiAgICogTWFwcyB0byBDREsgU3VibmV0VHlwZSB2YWx1ZXNcbiAgICogQGRlZmF1bHQgJ1BSSVZBVEVfV0lUSF9FR1JFU1MnXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRUeXBlPzogU3VibmV0VHlwZU5hbWU7XG5cbiAgLyoqXG4gICAqIEZpbHRlciBzdWJuZXRzIHRvIHNwZWNpZmljIGF2YWlsYWJpbGl0eSB6b25lc1xuICAgKiBAZXhhbXBsZSBbJ3VzLWVhc3QtMWEnLCAndXMtZWFzdC0xYiddXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgc3VibmV0cyBieSBDREsgc3VibmV0IGdyb3VwIG5hbWVcbiAgICogTWF0Y2hlcyB0aGUgZ3JvdXBOYW1lIGFzc2lnbmVkIGR1cmluZyBWUEMgY3JlYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldEdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAgSURzIHRvIGF0dGFjaCB0byBDb2RlQnVpbGQgcHJvamVjdHNcbiAgICogQGV4YW1wbGUgWydzZy0xMjM0NTY3OCddXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWRzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBleHBsaWNpdCBzdWJuZXQgSUQgbmV0d29ya1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldElkc05ldHdvcmtPcHRpb25zIHtcbiAgLyoqXG4gICAqIFZQQyBJRCB0aGF0IGNvbnRhaW5zIHRoZSBzdWJuZXRzLlxuICAgKiBSZXF1aXJlZCBiZWNhdXNlIENESyBDb2RlQnVpbGRTdGVwIG5lZWRzIGEgdnBjIHJlZmVyZW5jZS5cbiAgICogQ2FuIGJlIGEgcGxhaW4gc3RyaW5nIG9yIGEgU2VjcmV0VmFsdWUgKGUuZy4gZnJvbSBTZWNyZXRzIE1hbmFnZXIpLlxuICAgKiBAZXhhbXBsZSAndnBjLTBhMWIyYzNkNGU1ZjZhN2I4J1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjSWQ6IFNlY3JldFZhbHVlIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHBsaWNpdCBsaXN0IG9mIHN1Ym5ldCBJRHMgd2hlcmUgQ29kZUJ1aWxkIHByb2plY3RzIHdpbGwgcnVuXG4gICAqIEBleGFtcGxlIFsnc3VibmV0LTBhMWIyYzNkJywgJ3N1Ym5ldC00ZTVmNmE3YiddXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRJZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBJRHMgdG8gYXR0YWNoIHRvIENvZGVCdWlsZCBwcm9qZWN0c1xuICAgKiBAZXhhbXBsZSBbJ3NnLTEyMzQ1Njc4J11cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFZQQyBsb29rdXAgYnkgSURcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNJZE5ldHdvcmtPcHRpb25zIGV4dGVuZHMgU3VibmV0U2VsZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWUEMgSUQgdG8gbG9vayB1cFxuICAgKiBDYW4gYmUgYSBwbGFpbiBzdHJpbmcgb3IgYSBTZWNyZXRWYWx1ZSAoZS5nLiBmcm9tIFNlY3JldHMgTWFuYWdlcikuXG4gICAqIEBleGFtcGxlICd2cGMtMGExYjJjM2Q0ZTVmNmE3YjgnXG4gICAqL1xuICByZWFkb25seSB2cGNJZDogU2VjcmV0VmFsdWUgfCBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBWUEMgbG9va3VwIGJ5IHRhZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNMb29rdXBOZXR3b3JrT3B0aW9ucyBleHRlbmRzIFN1Ym5ldFNlbGVjdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGFnIGtleS12YWx1ZSBwYWlycyB0byBpZGVudGlmeSB0aGUgVlBDXG4gICAqIEFsbCB0YWdzIG11c3QgbWF0Y2ggZm9yIGxvb2t1cCB0byBzdWNjZWVkXG4gICAqIEBleGFtcGxlIHsgRW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJywgVGVhbTogJ3BsYXRmb3JtJyB9XG4gICAqL1xuICByZWFkb25seSB0YWdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBWUEMgbmFtZSAodmFsdWUgb2YgdGhlICdOYW1lJyB0YWcpIGZvciBhZGRpdGlvbmFsIGZpbHRlcmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgQVdTIHJlZ2lvbiBvdmVycmlkZSBmb3IgY3Jvc3MtcmVnaW9uIFZQQyBsb29rdXBcbiAgICogQGV4YW1wbGUgJ3VzLXdlc3QtMidcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdWJuZXQgdHlwZSBuYW1lcyBjb3JyZXNwb25kaW5nIHRvIENESyBTdWJuZXRUeXBlIGVudW0gdmFsdWVzXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi9kb2NzL2F3cy1jZGstbGliLmF3c19lYzIuU3VibmV0VHlwZS5odG1sXG4gKi9cbmV4cG9ydCB0eXBlIFN1Ym5ldFR5cGVOYW1lID1cbiAgfCAnUFJJVkFURV9XSVRIX0VHUkVTUydcbiAgfCAnUFJJVkFURV9XSVRIX05BVCdcbiAgfCAnUFJJVkFURV9JU09MQVRFRCdcbiAgfCAnUFVCTElDJztcblxuLyoqXG4gKiBVbmlvbiB0eXBlIG9mIGFsbCBzdXBwb3J0ZWQgbmV0d29yayBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBVc2VkIGF0IHR3byBpbmRlcGVuZGVudCBsZXZlbHM6XG4gKiAtIFBpcGVsaW5lLWxldmVsIChgZGVmYXVsdHMubmV0d29ya2ApIOKAlCBhcHBsaWVzIHRvIGFsbCBDb2RlQnVpbGQgYWN0aW9uc1xuICogLSBTdGVwLWxldmVsIChgc3ludGgubmV0d29ya2AsIGBDb2RlQnVpbGRTdGVwT3B0aW9ucy5uZXR3b3JrYCkg4oCUIGFwcGxpZXMgdG8gYW4gaW5kaXZpZHVhbCBidWlsZCBzdGVwXG4gKlxuICogRWFjaCB2YXJpYW50IHJlc29sdmVzIHRvIHZwYywgc3VibmV0U2VsZWN0aW9uLCBhbmQgb3B0aW9uYWwgc2VjdXJpdHlHcm91cHM6XG4gKiAtIFN1Ym5ldElkc05ldHdvcms6IFZQQyBsb29rZWQgdXAgYnkgSUQsIHN1Ym5ldHMgc2VsZWN0ZWQgZXhwbGljaXRseSBieSBJRFxuICogLSBWcGNJZE5ldHdvcms6IFZQQyBsb29rZWQgdXAgYnkgSUQsIHN1Ym5ldHMgcmVzb2x2ZWQgdmlhIHN1Ym5ldFNlbGVjdGlvbiBmaWx0ZXJzXG4gKiAtIFZwY0xvb2t1cE5ldHdvcms6IFZQQyBsb29rZWQgdXAgYnkgdGFncywgc3VibmV0cyByZXNvbHZlZCB2aWEgc3VibmV0U2VsZWN0aW9uIGZpbHRlcnNcbiAqL1xuZXhwb3J0IHR5cGUgTmV0d29ya0NvbmZpZyA9IFN1Ym5ldElkc05ldHdvcmsgfCBWcGNJZE5ldHdvcmsgfCBWcGNMb29rdXBOZXR3b3JrO1xuXG4vKipcbiAqIFBpcGVsaW5lLWxldmVsIENvZGVCdWlsZCBkZWZhdWx0cyBhcHBsaWVkIHRvIGV2ZXJ5IENvZGVCdWlsZCBhY3Rpb25cbiAqIChzeW50aCwgc2VsZi1tdXRhdGlvbiwgYXNzZXQgcHVibGlzaGluZykgdmlhIGBjb2RlQnVpbGREZWZhdWx0c2AuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGRlZmF1bHRzOiBDb2RlQnVpbGREZWZhdWx0cyA9IHtcbiAqICAgbmV0d29yazoge1xuICogICAgIHR5cGU6ICd2cGNJZCcsXG4gKiAgICAgb3B0aW9uczogeyB2cGNJZDogJ3ZwYy1hYmMxMjMnLCBzdWJuZXRUeXBlOiAnUFJJVkFURV9XSVRIX0VHUkVTUycgfVxuICogICB9LFxuICogICBtZXRhZGF0YToge1xuICogICAgIFtNZXRhZGF0YUtleXMuUFJJVklMRUdFRF06IHRydWUsXG4gKiAgIH0sXG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUJ1aWxkRGVmYXVsdHMge1xuICAvKipcbiAgICogTmV0d29yayBjb25maWd1cmF0aW9uIGZvciBhbGwgQ29kZUJ1aWxkIGFjdGlvbnMuXG4gICAqIFJlc29sdmVzIHRvIHZwYywgc3VibmV0U2VsZWN0aW9uLCBhbmQgb3B0aW9uYWwgc2VjdXJpdHlHcm91cHMuXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrPzogTmV0d29ya0NvbmZpZztcblxuICAvKipcbiAgICogU3RhbmRhbG9uZSBzZWN1cml0eSBncm91cHMgZm9yIGFsbCBDb2RlQnVpbGQgYWN0aW9ucy5cbiAgICogTWVyZ2VkIHdpdGggYW55IHNlY3VyaXR5IGdyb3VwcyByZXNvbHZlZCBmcm9tIG5ldHdvcmsgY29uZmlnLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBTZWN1cml0eUdyb3VwQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBhcHBsaWVkIHRvIGFsbCBDb2RlQnVpbGQgYWN0aW9ucy5cbiAgICogTWVyZ2VkIHdpdGggc3RlcC1sZXZlbCBtZXRhZGF0YTsgc3RlcC1sZXZlbCBrZXlzIHRha2UgcHJlY2VkZW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogTWV0YURhdGFUeXBlO1xufVxuIl19
3
+ export {};
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL25ldHdvcmstdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFNlY3JldFZhbHVlIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBNZXRhRGF0YVR5cGUgfSBmcm9tICcuL3BpcGVsaW5lLXR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2VjdXJpdHlHcm91cENvbmZpZyB9IGZyb20gJy4vc2VjdXJpdHktZ3JvdXAtdHlwZXMuanMnO1xuXG4vKipcbiAqIE5ldHdvcmsgY29uZmlndXJhdGlvbiB1c2luZyBleHBsaWNpdCBzdWJuZXQgSURzXG4gKlxuICogVXNlIHdoZW4geW91IGtub3cgdGhlIGV4YWN0IHN1Ym5ldCBJRHMgd2hlcmUgQ29kZUJ1aWxkIHNob3VsZCBydW4uXG4gKiBTdWJuZXRzIGFyZSBzZWxlY3RlZCBkaXJlY3RseSBieSBJRDsgVlBDIGlzIGxvb2tlZCB1cCBmcm9tIHRoZSBwcm92aWRlZCB2cGNJZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbmV0d29yazogU3VibmV0SWRzTmV0d29yayA9IHtcbiAqICAgdHlwZTogJ3N1Ym5ldElkcycsXG4gKiAgIG9wdGlvbnM6IHtcbiAqICAgICB2cGNJZDogJ3ZwYy0wYTFiMmMzZDRlNWY2YTdiOCcsXG4gKiAgICAgc3VibmV0SWRzOiBbJ3N1Ym5ldC0wYTFiMmMzZCcsICdzdWJuZXQtNGU1ZjZhN2InXSxcbiAqICAgICBzZWN1cml0eUdyb3VwSWRzOiBbJ3NnLTEyMzQ1Njc4J11cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldElkc05ldHdvcmsge1xuICByZWFkb25seSB0eXBlOiAnc3VibmV0SWRzJztcbiAgcmVhZG9ubHkgb3B0aW9uczogU3VibmV0SWRzTmV0d29ya09wdGlvbnM7XG59XG5cbi8qKlxuICogTmV0d29yayBjb25maWd1cmF0aW9uIHVzaW5nIFZQQyBsb29rdXAgYnkgSURcbiAqXG4gKiBMb29rcyB1cCBhbiBleGlzdGluZyBWUEMgYnkgaXRzIElEIGFuZCByZXNvbHZlcyBzdWJuZXRzIHZpYSBzdWJuZXRTZWxlY3Rpb24gZmlsdGVycy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbmV0d29yazogVnBjSWROZXR3b3JrID0ge1xuICogICB0eXBlOiAndnBjSWQnLFxuICogICBvcHRpb25zOiB7XG4gKiAgICAgdnBjSWQ6ICd2cGMtMGExYjJjM2Q0ZTVmNmE3YjgnLFxuICogICAgIHN1Ym5ldFR5cGU6ICdQUklWQVRFX1dJVEhfRUdSRVNTJyxcbiAqICAgICBzZWN1cml0eUdyb3VwSWRzOiBbJ3NnLTEyMzQ1Njc4J11cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0lkTmV0d29yayB7XG4gIHJlYWRvbmx5IHR5cGU6ICd2cGNJZCc7XG4gIHJlYWRvbmx5IG9wdGlvbnM6IFZwY0lkTmV0d29ya09wdGlvbnM7XG59XG5cbi8qKlxuICogTmV0d29yayBjb25maWd1cmF0aW9uIHVzaW5nIFZQQyBsb29rdXAgYnkgdGFnc1xuICpcbiAqIExvb2tzIHVwIGFuIGV4aXN0aW5nIFZQQyBieSB0YWcgZmlsdGVycyBhbmQgcmVzb2x2ZXMgc3VibmV0cyB2aWEgc3VibmV0U2VsZWN0aW9uIGZpbHRlcnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5ldHdvcms6IFZwY0xvb2t1cE5ldHdvcmsgPSB7XG4gKiAgIHR5cGU6ICd2cGNMb29rdXAnLFxuICogICBvcHRpb25zOiB7XG4gKiAgICAgdGFnczogeyAnYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrLW5hbWUnOiAnTmV0d29ya1N0YWNrJyB9LFxuICogICAgIHN1Ym5ldFR5cGU6ICdQUklWQVRFX1dJVEhfRUdSRVNTJyxcbiAqICAgICBhdmFpbGFiaWxpdHlab25lczogWyd1cy1lYXN0LTFhJywgJ3VzLWVhc3QtMWInXVxuICogICB9XG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjTG9va3VwTmV0d29yayB7XG4gIHJlYWRvbmx5IHR5cGU6ICd2cGNMb29rdXAnO1xuICByZWFkb25seSBvcHRpb25zOiBWcGNMb29rdXBOZXR3b3JrT3B0aW9ucztcbn1cblxuLyoqXG4gKiBDb21tb24gc3VibmV0IHNlbGVjdGlvbiBmaWx0ZXJzIHNoYXJlZCBieSBWUEMtYmFzZWQgbmV0d29yayBvcHRpb25zXG4gKi9cbmludGVyZmFjZSBTdWJuZXRTZWxlY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFN1Ym5ldCB0eXBlIGZpbHRlciBmb3Igc3VibmV0IHNlbGVjdGlvblxuICAgKiBNYXBzIHRvIENESyBTdWJuZXRUeXBlIHZhbHVlc1xuICAgKiBAZGVmYXVsdCAnUFJJVkFURV9XSVRIX0VHUkVTUydcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlTmFtZTtcblxuICAvKipcbiAgICogRmlsdGVyIHN1Ym5ldHMgdG8gc3BlY2lmaWMgYXZhaWxhYmlsaXR5IHpvbmVzXG4gICAqIEBleGFtcGxlIFsndXMtZWFzdC0xYScsICd1cy1lYXN0LTFiJ11cbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEZpbHRlciBzdWJuZXRzIGJ5IENESyBzdWJuZXQgZ3JvdXAgbmFtZVxuICAgKiBNYXRjaGVzIHRoZSBncm91cE5hbWUgYXNzaWduZWQgZHVyaW5nIFZQQyBjcmVhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0R3JvdXBOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBJRHMgdG8gYXR0YWNoIHRvIENvZGVCdWlsZCBwcm9qZWN0c1xuICAgKiBAZXhhbXBsZSBbJ3NnLTEyMzQ1Njc4J11cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGV4cGxpY2l0IHN1Ym5ldCBJRCBuZXR3b3JrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0SWRzTmV0d29ya09wdGlvbnMge1xuICAvKipcbiAgICogVlBDIElEIHRoYXQgY29udGFpbnMgdGhlIHN1Ym5ldHMuXG4gICAqIFJlcXVpcmVkIGJlY2F1c2UgQ0RLIENvZGVCdWlsZFN0ZXAgbmVlZHMgYSB2cGMgcmVmZXJlbmNlLlxuICAgKiBDYW4gYmUgYSBwbGFpbiBzdHJpbmcgb3IgYSBTZWNyZXRWYWx1ZSAoZS5nLiBmcm9tIFNlY3JldHMgTWFuYWdlcikuXG4gICAqIEBleGFtcGxlICd2cGMtMGExYjJjM2Q0ZTVmNmE3YjgnXG4gICAqL1xuICByZWFkb25seSB2cGNJZDogU2VjcmV0VmFsdWUgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cGxpY2l0IGxpc3Qgb2Ygc3VibmV0IElEcyB3aGVyZSBDb2RlQnVpbGQgcHJvamVjdHMgd2lsbCBydW5cbiAgICogQGV4YW1wbGUgWydzdWJuZXQtMGExYjJjM2QnLCAnc3VibmV0LTRlNWY2YTdiJ11cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElkczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIElEcyB0byBhdHRhY2ggdG8gQ29kZUJ1aWxkIHByb2plY3RzXG4gICAqIEBleGFtcGxlIFsnc2ctMTIzNDU2NzgnXVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVlBDIGxvb2t1cCBieSBJRFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0lkTmV0d29ya09wdGlvbnMgZXh0ZW5kcyBTdWJuZXRTZWxlY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFZQQyBJRCB0byBsb29rIHVwXG4gICAqIENhbiBiZSBhIHBsYWluIHN0cmluZyBvciBhIFNlY3JldFZhbHVlIChlLmcuIGZyb20gU2VjcmV0cyBNYW5hZ2VyKS5cbiAgICogQGV4YW1wbGUgJ3ZwYy0wYTFiMmMzZDRlNWY2YTdiOCdcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBTZWNyZXRWYWx1ZSB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFZQQyBsb29rdXAgYnkgdGFnc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0xvb2t1cE5ldHdvcmtPcHRpb25zIGV4dGVuZHMgU3VibmV0U2VsZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUYWcga2V5LXZhbHVlIHBhaXJzIHRvIGlkZW50aWZ5IHRoZSBWUENcbiAgICogQWxsIHRhZ3MgbXVzdCBtYXRjaCBmb3IgbG9va3VwIHRvIHN1Y2NlZWRcbiAgICogQGV4YW1wbGUgeyBFbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLCBUZWFtOiAncGxhdGZvcm0nIH1cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIFZQQyBuYW1lICh2YWx1ZSBvZiB0aGUgJ05hbWUnIHRhZykgZm9yIGFkZGl0aW9uYWwgZmlsdGVyaW5nXG4gICAqL1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBBV1MgcmVnaW9uIG92ZXJyaWRlIGZvciBjcm9zcy1yZWdpb24gVlBDIGxvb2t1cFxuICAgKiBAZXhhbXBsZSAndXMtd2VzdC0yJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN1Ym5ldCB0eXBlIG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gQ0RLIFN1Ym5ldFR5cGUgZW51bSB2YWx1ZXNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5TdWJuZXRUeXBlLmh0bWxcbiAqL1xuZXhwb3J0IHR5cGUgU3VibmV0VHlwZU5hbWUgPVxuICB8ICdQUklWQVRFX1dJVEhfRUdSRVNTJ1xuICB8ICdQUklWQVRFX1dJVEhfTkFUJ1xuICB8ICdQUklWQVRFX0lTT0xBVEVEJ1xuICB8ICdQVUJMSUMnO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgb2YgYWxsIHN1cHBvcnRlZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIFVzZWQgYXQgdHdvIGluZGVwZW5kZW50IGxldmVsczpcbiAqIC0gUGlwZWxpbmUtbGV2ZWwgKGBkZWZhdWx0cy5uZXR3b3JrYCkg4oCUIGFwcGxpZXMgdG8gYWxsIENvZGVCdWlsZCBhY3Rpb25zXG4gKiAtIFN0ZXAtbGV2ZWwgKGBzeW50aC5uZXR3b3JrYCwgYENvZGVCdWlsZFN0ZXBPcHRpb25zLm5ldHdvcmtgKSDigJQgYXBwbGllcyB0byBhbiBpbmRpdmlkdWFsIGJ1aWxkIHN0ZXBcbiAqXG4gKiBFYWNoIHZhcmlhbnQgcmVzb2x2ZXMgdG8gdnBjLCBzdWJuZXRTZWxlY3Rpb24sIGFuZCBvcHRpb25hbCBzZWN1cml0eUdyb3VwczpcbiAqIC0gU3VibmV0SWRzTmV0d29yazogVlBDIGxvb2tlZCB1cCBieSBJRCwgc3VibmV0cyBzZWxlY3RlZCBleHBsaWNpdGx5IGJ5IElEXG4gKiAtIFZwY0lkTmV0d29yazogVlBDIGxvb2tlZCB1cCBieSBJRCwgc3VibmV0cyByZXNvbHZlZCB2aWEgc3VibmV0U2VsZWN0aW9uIGZpbHRlcnNcbiAqIC0gVnBjTG9va3VwTmV0d29yazogVlBDIGxvb2tlZCB1cCBieSB0YWdzLCBzdWJuZXRzIHJlc29sdmVkIHZpYSBzdWJuZXRTZWxlY3Rpb24gZmlsdGVyc1xuICovXG5leHBvcnQgdHlwZSBOZXR3b3JrQ29uZmlnID0gU3VibmV0SWRzTmV0d29yayB8IFZwY0lkTmV0d29yayB8IFZwY0xvb2t1cE5ldHdvcms7XG5cbi8qKlxuICogUGlwZWxpbmUtbGV2ZWwgQ29kZUJ1aWxkIGRlZmF1bHRzIGFwcGxpZWQgdG8gZXZlcnkgQ29kZUJ1aWxkIGFjdGlvblxuICogKHN5bnRoLCBzZWxmLW11dGF0aW9uLCBhc3NldCBwdWJsaXNoaW5nKSB2aWEgYGNvZGVCdWlsZERlZmF1bHRzYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGVmYXVsdHM6IENvZGVCdWlsZERlZmF1bHRzID0ge1xuICogICBuZXR3b3JrOiB7XG4gKiAgICAgdHlwZTogJ3ZwY0lkJyxcbiAqICAgICBvcHRpb25zOiB7IHZwY0lkOiAndnBjLWFiYzEyMycsIHN1Ym5ldFR5cGU6ICdQUklWQVRFX1dJVEhfRUdSRVNTJyB9XG4gKiAgIH0sXG4gKiAgIG1ldGFkYXRhOiB7XG4gKiAgICAgW01ldGFkYXRhS2V5cy5QUklWSUxFR0VEXTogdHJ1ZSxcbiAqICAgfSxcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGREZWZhdWx0cyB7XG4gIC8qKlxuICAgKiBOZXR3b3JrIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBDb2RlQnVpbGQgYWN0aW9ucy5cbiAgICogUmVzb2x2ZXMgdG8gdnBjLCBzdWJuZXRTZWxlY3Rpb24sIGFuZCBvcHRpb25hbCBzZWN1cml0eUdyb3Vwcy5cbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcms/OiBOZXR3b3JrQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBTdGFuZGFsb25lIHNlY3VyaXR5IGdyb3VwcyBmb3IgYWxsIENvZGVCdWlsZCBhY3Rpb25zLlxuICAgKiBNZXJnZWQgd2l0aCBhbnkgc2VjdXJpdHkgZ3JvdXBzIHJlc29sdmVkIGZyb20gbmV0d29yayBjb25maWcuXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IFNlY3VyaXR5R3JvdXBDb25maWc7XG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGFwcGxpZWQgdG8gYWxsIENvZGVCdWlsZCBhY3Rpb25zLlxuICAgKiBNZXJnZWQgd2l0aCBzdGVwLWxldmVsIG1ldGFkYXRhOyBzdGVwLWxldmVsIGtleXMgdGFrZSBwcmVjZWRlbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBNZXRhRGF0YVR5cGU7XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
- import { ISecurityGroup, IVpc, SubnetSelection } from 'aws-cdk-lib/aws-ec2';
1
+ import { type ISecurityGroup, type IVpc, type SubnetSelection } from 'aws-cdk-lib/aws-ec2';
2
2
  import { Construct } from 'constructs';
3
- import { UniqueId } from './id-generator';
4
- import type { NetworkConfig } from './network-types';
3
+ import { UniqueId } from './id-generator.js';
4
+ import type { NetworkConfig } from './network-types.js';
5
5
  /** Resolved CDK network props ready to spread into CodeBuildStep or codeBuildDefaults */
6
6
  export interface ResolvedNetwork {
7
7
  vpc: IVpc;
@@ -1,19 +1,17 @@
1
- "use strict";
2
1
  // Copyright 2026 Pipeline Builder Contributors
3
2
  // SPDX-License-Identifier: Apache-2.0
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.networkConfigFromEnv = networkConfigFromEnv;
6
- exports.resolveNetwork = resolveNetwork;
7
- const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
8
- const pipeline_helpers_1 = require("./pipeline-helpers");
3
+ import { SecurityGroup, Subnet, SubnetType, Vpc } from 'aws-cdk-lib/aws-ec2';
4
+ import { Construct } from 'constructs';
5
+ import { UniqueId } from './id-generator.js';
6
+ import { unwrapSecret } from './pipeline-helpers.js';
9
7
  /**
10
8
  * Mapping from string subnet type names to CDK SubnetType enum values
11
9
  */
12
10
  const SUBNET_TYPE_MAP = {
13
- PRIVATE_WITH_EGRESS: aws_ec2_1.SubnetType.PRIVATE_WITH_EGRESS,
14
- PRIVATE_WITH_NAT: aws_ec2_1.SubnetType.PRIVATE_WITH_NAT,
15
- PRIVATE_ISOLATED: aws_ec2_1.SubnetType.PRIVATE_ISOLATED,
16
- PUBLIC: aws_ec2_1.SubnetType.PUBLIC,
11
+ PRIVATE_WITH_EGRESS: SubnetType.PRIVATE_WITH_EGRESS,
12
+ PRIVATE_WITH_NAT: SubnetType.PRIVATE_WITH_NAT,
13
+ PRIVATE_ISOLATED: SubnetType.PRIVATE_ISOLATED,
14
+ PUBLIC: SubnetType.PUBLIC,
17
15
  };
18
16
  const DEFAULT_SUBNET_TYPE = 'PRIVATE_WITH_EGRESS';
19
17
  /**
@@ -28,7 +26,7 @@ const DEFAULT_SUBNET_TYPE = 'PRIVATE_WITH_EGRESS';
28
26
  * PIPELINE_SUBNET_IDS comma-separated private subnet IDs (required)
29
27
  * PIPELINE_SECURITY_GROUP_IDS comma-separated SG IDs (optional)
30
28
  */
31
- function networkConfigFromEnv() {
29
+ export function networkConfigFromEnv() {
32
30
  const vpcId = (process.env.PIPELINE_VPC_ID || '').trim();
33
31
  const subnetIds = (process.env.PIPELINE_SUBNET_IDS || '')
34
32
  .split(',').map((s) => s.trim()).filter(Boolean);
@@ -54,23 +52,23 @@ function networkConfigFromEnv() {
54
52
  * @param network - Network configuration to resolve
55
53
  * @returns Resolved network props ready to spread into CDK constructs
56
54
  */
57
- function resolveNetwork(scope, id, network) {
55
+ export function resolveNetwork(scope, id, network) {
58
56
  switch (network.type) {
59
57
  case 'subnetIds': {
60
- const vpc = aws_ec2_1.Vpc.fromLookup(scope, id.generate('network:vpc'), {
61
- vpcId: (0, pipeline_helpers_1.unwrapSecret)(network.options.vpcId),
58
+ const vpc = Vpc.fromLookup(scope, id.generate('network:vpc'), {
59
+ vpcId: unwrapSecret(network.options.vpcId),
62
60
  });
63
- const subnets = network.options.subnetIds.map((subnetId) => aws_ec2_1.Subnet.fromSubnetId(scope, id.generate('network:subnet'), subnetId));
61
+ const subnets = network.options.subnetIds.map((subnetId) => Subnet.fromSubnetId(scope, id.generate('network:subnet'), subnetId));
64
62
  return withSecurityGroups({ vpc, subnetSelection: { subnets } }, scope, id, network.options.securityGroupIds);
65
63
  }
66
64
  case 'vpcId': {
67
- const vpc = aws_ec2_1.Vpc.fromLookup(scope, id.generate('network:vpc'), {
68
- vpcId: (0, pipeline_helpers_1.unwrapSecret)(network.options.vpcId),
65
+ const vpc = Vpc.fromLookup(scope, id.generate('network:vpc'), {
66
+ vpcId: unwrapSecret(network.options.vpcId),
69
67
  });
70
68
  return withSecurityGroups({ vpc, subnetSelection: resolveSubnetSelection(network.options) }, scope, id, network.options.securityGroupIds);
71
69
  }
72
70
  case 'vpcLookup': {
73
- const vpc = aws_ec2_1.Vpc.fromLookup(scope, id.generate('network:vpc'), {
71
+ const vpc = Vpc.fromLookup(scope, id.generate('network:vpc'), {
74
72
  tags: network.options.tags,
75
73
  ...(network.options.vpcName && { vpcName: network.options.vpcName }),
76
74
  ...(network.options.region && { region: network.options.region }),
@@ -109,6 +107,6 @@ function resolveSecurityGroups(scope, id, securityGroupIds) {
109
107
  if (!securityGroupIds?.length) {
110
108
  return undefined;
111
109
  }
112
- return securityGroupIds.map((sgId) => aws_ec2_1.SecurityGroup.fromSecurityGroupId(scope, id.generate('network:sg'), sgId));
110
+ return securityGroupIds.map((sgId) => SecurityGroup.fromSecurityGroupId(scope, id.generate('network:sg'), sgId));
113
111
  }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL25ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBMEN0QyxvREFpQkM7QUFXRCx3Q0FxREM7QUF6SEQsaURBQW9IO0FBT3BILHlEQUFrRDtBQUVsRDs7R0FFRztBQUNILE1BQU0sZUFBZSxHQUF1QztJQUMxRCxtQkFBbUIsRUFBRSxvQkFBVSxDQUFDLG1CQUFtQjtJQUNuRCxnQkFBZ0IsRUFBRSxvQkFBVSxDQUFDLGdCQUFnQjtJQUM3QyxnQkFBZ0IsRUFBRSxvQkFBVSxDQUFDLGdCQUFnQjtJQUM3QyxNQUFNLEVBQUUsb0JBQVUsQ0FBQyxNQUFNO0NBQzFCLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFtQixxQkFBcUIsQ0FBQztBQVNsRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLG9CQUFvQjtJQUNsQyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pELE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7U0FDdEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFdkQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLElBQUksRUFBRSxDQUFDO1NBQ3JFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFH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QUNwRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBJU2VjdXJpdHlHcm91cCwgSVZwYywgU2VjdXJpdHlHcm91cCwgU3VibmV0LCBTdWJuZXRTZWxlY3Rpb24sIFN1Ym5ldFR5cGUsIFZwYyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVbmlxdWVJZCB9IGZyb20gJy4vaWQtZ2VuZXJhdG9yJztcbmltcG9ydCB0eXBlIHtcbiAgTmV0d29ya0NvbmZpZyxcbiAgU3VibmV0VHlwZU5hbWUsXG59IGZyb20gJy4vbmV0d29yay10eXBlcyc7XG5pbXBvcnQgeyB1bndyYXBTZWNyZXQgfSBmcm9tICcuL3BpcGVsaW5lLWhlbHBlcnMnO1xuXG4vKipcbiAqIE1hcHBpbmcgZnJvbSBzdHJpbmcgc3VibmV0IHR5cGUgbmFtZXMgdG8gQ0RLIFN1Ym5ldFR5cGUgZW51bSB2YWx1ZXNcbiAqL1xuY29uc3QgU1VCTkVUX1RZUEVfTUFQOiBSZWNvcmQ8U3VibmV0VHlwZU5hbWUsIFN1Ym5ldFR5cGU+ID0ge1xuICBQUklWQVRFX1dJVEhfRUdSRVNTOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gIFBSSVZBVEVfV0lUSF9OQVQ6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVCxcbiAgUFJJVkFURV9JU09MQVRFRDogU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICBQVUJMSUM6IFN1Ym5ldFR5cGUuUFVCTElDLFxufTtcblxuY29uc3QgREVGQVVMVF9TVUJORVRfVFlQRTogU3VibmV0VHlwZU5hbWUgPSAnUFJJVkFURV9XSVRIX0VHUkVTUyc7XG5cbi8qKiBSZXNvbHZlZCBDREsgbmV0d29yayBwcm9wcyByZWFkeSB0byBzcHJlYWQgaW50byBDb2RlQnVpbGRTdGVwIG9yIGNvZGVCdWlsZERlZmF1bHRzICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkTmV0d29yayB7XG4gIHZwYzogSVZwYztcbiAgc3VibmV0U2VsZWN0aW9uOiBTdWJuZXRTZWxlY3Rpb247XG4gIHNlY3VyaXR5R3JvdXBzPzogSVNlY3VyaXR5R3JvdXBbXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIE5ldHdvcmtDb25maWcgZnJvbSBlbnZpcm9ubWVudCwgZm9yIGRlcGxveW1lbnRzIHRoYXQgd2FudCBFVkVSWVxuICogc3ludGhlc2l6ZWQgcGlwZWxpbmUncyBDb2RlQnVpbGQgdG8gcnVuIGluc2lkZSBhIFZQQyAodGhlIEVDMiBcImludGVybmFsXCIgL1xuICogaW5zaWRlLUFXUy1vbmx5IG1vZGUpIHdpdGhvdXQgcGVyLXBpcGVsaW5lIG5ldHdvcmsgY29uZmlnLiBSZXR1cm5zIHVuZGVmaW5lZFxuICogd2hlbiB0aGUgZW52IGlzbid0IHNldCDigJQgcHVibGljL2RlZmF1bHQgZGVwbG95bWVudHMgcnVuIENvZGVCdWlsZCBpbiB0aGVcbiAqIEFXUy1tYW5hZ2VkIG5ldHdvcmsgYXMgYmVmb3JlLlxuICpcbiAqIEVudiAoc2V0IG9uIHRoZSBwaXBlbGluZSBzZXJ2aWNlIGluIGludGVybmFsIG1vZGUpOlxuICogICBQSVBFTElORV9WUENfSUQgICAgICAgICAgICAgIFZQQyB0aGUgQ29kZUJ1aWxkIHByb2plY3RzIGpvaW4gKHJlcXVpcmVkKVxuICogICBQSVBFTElORV9TVUJORVRfSURTICAgICAgICAgIGNvbW1hLXNlcGFyYXRlZCBwcml2YXRlIHN1Ym5ldCBJRHMgKHJlcXVpcmVkKVxuICogICBQSVBFTElORV9TRUNVUklUWV9HUk9VUF9JRFMgIGNvbW1hLXNlcGFyYXRlZCBTRyBJRHMgKG9wdGlvbmFsKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21FbnYoKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHZwY0lkID0gKHByb2Nlc3MuZW52LlBJUEVMSU5FX1ZQQ19JRCB8fCAnJykudHJpbSgpO1xuICBjb25zdCBzdWJuZXRJZHMgPSAocHJvY2Vzcy5lbnYuUElQRUxJTkVfU1VCTkVUX0lEUyB8fCAnJylcbiAgICAuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmICghdnBjSWQgfHwgc3VibmV0SWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBzZWN1cml0eUdyb3VwSWRzID0gKHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFQ1VSSVRZX0dST1VQX0lEUyB8fCAnJylcbiAgICAuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc3VibmV0SWRzJyxcbiAgICBvcHRpb25zOiB7XG4gICAgICB2cGNJZCxcbiAgICAgIHN1Ym5ldElkcyxcbiAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzLmxlbmd0aCA+IDAgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIE5ldHdvcmtDb25maWcgaW50byBDREsgcHJvcHMgZm9yIENvZGVCdWlsZFN0ZXAgb3IgY29kZUJ1aWxkRGVmYXVsdHMuXG4gKiBVc2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24gbmFycm93aW5nIHRvIGRlbGVnYXRlIHRvIHRoZSBhcHByb3ByaWF0ZSBDREsgbG9va3Vwcy5cbiAqXG4gKiBAcGFyYW0gc2NvcGUgLSBDREsgY29uc3RydWN0IHNjb3BlXG4gKiBAcGFyYW0gaWQgLSBVbmlxdWVJZCBpbnN0YW5jZSBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgY29uc3RydWN0IElEc1xuICogQHBhcmFtIG5ldHdvcmsgLSBOZXR3b3JrIGNvbmZpZ3VyYXRpb24gdG8gcmVzb2x2ZVxuICogQHJldHVybnMgUmVzb2x2ZWQgbmV0d29yayBwcm9wcyByZWFkeSB0byBzcHJlYWQgaW50byBDREsgY29uc3RydWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU5ldHdvcmsoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBVbmlxdWVJZCxcbiAgbmV0d29yazogTmV0d29ya0NvbmZpZyxcbik6IFJlc29sdmVkTmV0d29yayB7XG4gIHN3aXRjaCAobmV0d29yay50eXBlKSB7XG4gICAgY2FzZSAnc3VibmV0SWRzJzoge1xuICAgICAgY29uc3QgdnBjID0gVnBjLmZyb21Mb29rdXAoc2NvcGUsIGlkLmdlbmVyYXRlKCduZXR3b3JrOnZwYycpLCB7XG4gICAgICAgIHZwY0lkOiB1bndyYXBTZWNyZXQobmV0d29yay5vcHRpb25zLnZwY0lkKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzdWJuZXRzID0gbmV0d29yay5vcHRpb25zLnN1Ym5ldElkcy5tYXAoXG4gICAgICAgIChzdWJuZXRJZCkgPT4gU3VibmV0LmZyb21TdWJuZXRJZChzY29wZSwgaWQuZ2VuZXJhdGUoJ25ldHdvcms6c3VibmV0JyksIHN1Ym5ldElkKSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB3aXRoU2VjdXJpdHlHcm91cHMoXG4gICAgICAgIHsgdnBjLCBzdWJuZXRTZWxlY3Rpb246IHsgc3VibmV0cyB9IH0sXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBpZCxcbiAgICAgICAgbmV0d29yay5vcHRpb25zLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICd2cGNJZCc6IHtcbiAgICAgIGNvbnN0IHZwYyA9IFZwYy5mcm9tTG9va3VwKHNjb3BlLCBpZC5nZW5lcmF0ZSgnbmV0d29yazp2cGMnKSwge1xuICAgICAgICB2cGNJZDogdW53cmFwU2VjcmV0KG5ldHdvcmsub3B0aW9ucy52cGNJZCksXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHdpdGhTZWN1cml0eUdyb3VwcyhcbiAgICAgICAgeyB2cGMsIHN1Ym5ldFNlbGVjdGlvbjogcmVzb2x2ZVN1Ym5ldFNlbGVjdGlvbihuZXR3b3JrLm9wdGlvbnMpIH0sXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBpZCxcbiAgICAgICAgbmV0d29yay5vcHRpb25zLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICd2cGNMb29rdXAnOiB7XG4gICAgICBjb25zdCB2cGMgPSBWcGMuZnJvbUxvb2t1cChzY29wZSwgaWQuZ2VuZXJhdGUoJ25ldHdvcms6dnBjJyksIHtcbiAgICAgICAgdGFnczogbmV0d29yay5vcHRpb25zLnRhZ3MsXG4gICAgICAgIC4uLihuZXR3b3JrLm9wdGlvbnMudnBjTmFtZSAmJiB7IHZwY05hbWU6IG5ldHdvcmsub3B0aW9ucy52cGNOYW1lIH0pLFxuICAgICAgICAuLi4obmV0d29yay5vcHRpb25zLnJlZ2lvbiAmJiB7IHJlZ2lvbjogbmV0d29yay5vcHRpb25zLnJlZ2lvbiB9KSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gd2l0aFNlY3VyaXR5R3JvdXBzKFxuICAgICAgICB7IHZwYywgc3VibmV0U2VsZWN0aW9uOiByZXNvbHZlU3VibmV0U2VsZWN0aW9uKG5ldHdvcmsub3B0aW9ucykgfSxcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGlkLFxuICAgICAgICBuZXR3b3JrLm9wdGlvbnMuc2VjdXJpdHlHcm91cElkcyxcbiAgICAgICk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IG5ldHdvcms7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbmV0d29yayBjb25maWcgdHlwZTogJHsoX2V4aGF1c3RpdmUgYXMgTmV0d29ya0NvbmZpZykudHlwZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRhY2ggcmVzb2x2ZWQgc2VjdXJpdHkgZ3JvdXBzIHRvIGEgbmV0d29yayByZXN1bHQgd2hlbiBwcmVzZW50LlxuICovXG5mdW5jdGlvbiB3aXRoU2VjdXJpdHlHcm91cHMoXG4gIHJlc3VsdDogT21pdDxSZXNvbHZlZE5ldHdvcmssICdzZWN1cml0eUdyb3Vwcyc+LFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXSxcbik6IFJlc29sdmVkTmV0d29yayB7XG4gIGNvbnN0IHNlY3VyaXR5R3JvdXBzID0gcmVzb2x2ZVNlY3VyaXR5R3JvdXBzKHNjb3BlLCBpZCwgc2VjdXJpdHlHcm91cElkcyk7XG4gIHJldHVybiBzZWN1cml0eUdyb3VwcyA/IHsgLi4ucmVzdWx0LCBzZWN1cml0eUdyb3VwcyB9IDogcmVzdWx0O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgU3VibmV0U2VsZWN0aW9uIGZyb20gb3B0aW9ucyB0aGF0IGNhcnJ5IHN1Ym5ldFR5cGUsIGF2YWlsYWJpbGl0eVpvbmVzLFxuICogYW5kIHN1Ym5ldEdyb3VwTmFtZS4gU2hhcmVkIGJ5IHZwY0lkIGFuZCB2cGNMb29rdXAgYnJhbmNoZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTdWJuZXRTZWxlY3Rpb24oXG4gIG9wdGlvbnM6IHsgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGVOYW1lOyBhdmFpbGFiaWxpdHlab25lcz86IHN0cmluZ1tdOyBzdWJuZXRHcm91cE5hbWU/OiBzdHJpbmcgfSxcbik6IFN1Ym5ldFNlbGVjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgc3VibmV0VHlwZTogU1VCTkVUX1RZUEVfTUFQW29wdGlvbnMuc3VibmV0VHlwZSA/PyBERUZBVUxUX1NVQk5FVF9UWVBFXSxcbiAgICAuLi4ob3B0aW9ucy5hdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzOiBvcHRpb25zLmF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgIC4uLihvcHRpb25zLnN1Ym5ldEdyb3VwTmFtZSAmJiB7IHN1Ym5ldEdyb3VwTmFtZTogb3B0aW9ucy5zdWJuZXRHcm91cE5hbWUgfSksXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBzZWN1cml0eSBncm91cCBJRHMgaW50byBDREsgc2VjdXJpdHkgZ3JvdXAgcmVmZXJlbmNlcy5cbiAqIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gbm8gSURzIGFyZSBwcm92aWRlZC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNlY3VyaXR5R3JvdXBzKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXSxcbik6IElTZWN1cml0eUdyb3VwW10gfCB1bmRlZmluZWQge1xuICBpZiAoIXNlY3VyaXR5R3JvdXBJZHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHNlY3VyaXR5R3JvdXBJZHMubWFwKFxuICAgIChzZ0lkKSA9PiBTZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQoc2NvcGUsIGlkLmdlbmVyYXRlKCduZXR3b3JrOnNnJyksIHNnSWQpLFxuICApO1xufVxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL25ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQWtDLGFBQWEsRUFBRSxNQUFNLEVBQXdCLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuSSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUs3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLGVBQWUsR0FBdUM7SUFDMUQsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLG1CQUFtQjtJQUNuRCxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCO0lBQzdDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxnQkFBZ0I7SUFDN0MsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO0NBQzFCLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFtQixxQkFBcUIsQ0FBQztBQVNsRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDO1NBQ3RELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRXZELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixJQUFJLEVBQUUsQ0FBQztTQUNyRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbkQsT0FBTztRQUNMLElBQUksRUFBRSxXQUFXO1FBQ2pCLE9BQU8sRUFBRTtZQUNQLEtBQUs7WUFDTCxTQUFTO1lBQ1QsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pEO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzVCLEtBQWdCLEVBQ2hCLEVBQVksRUFDWixPQUFzQjtJQUV0QixRQUFRLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDNUQsS0FBSyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQzthQUMzQyxDQUFDLENBQUM7WUFFSCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQzNDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQ2xGLENBQUM7WUFFRixPQUFPLGtCQUFrQixDQUN2QixFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUNyQyxLQUFLLEVBQ0wsRUFBRSxFQUNGLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQ2pDLENBQUM7UUFDSixDQUFDO1FBQ0QsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2IsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDNUQsS0FBSyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQzthQUMzQyxDQUFDLENBQUM7WUFFSCxPQUFPLGtCQUFrQixDQUN2QixFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQ2pFLEtBQUssRUFDTCxFQUFFLEVBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDakMsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDNUQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDMUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BFLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2xFLENBQUMsQ0FBQztZQUVILE9BQU8sa0JBQWtCLENBQ3ZCLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFDakUsS0FBSyxFQUNMLEVBQUUsRUFDRixPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUNqQyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUixNQUFNLFdBQVcsR0FBVSxPQUFPLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBaUMsV0FBNkIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FDekIsTUFBK0MsRUFDL0MsS0FBZ0IsRUFDaEIsRUFBWSxFQUNaLGdCQUEyQjtJQUUzQixNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDMUUsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNqRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FDN0IsT0FBZ0c7SUFFaEcsT0FBTztRQUNMLFVBQVUsRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxtQkFBbUIsQ0FBQztRQUN0RSxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbEYsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO0tBQzdFLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsS0FBZ0IsRUFDaEIsRUFBWSxFQUNaLGdCQUEyQjtJQUUzQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDOUIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUN6QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUNwRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyB0eXBlIElTZWN1cml0eUdyb3VwLCB0eXBlIElWcGMsIFNlY3VyaXR5R3JvdXAsIFN1Ym5ldCwgdHlwZSBTdWJuZXRTZWxlY3Rpb24sIFN1Ym5ldFR5cGUsIFZwYyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVbmlxdWVJZCB9IGZyb20gJy4vaWQtZ2VuZXJhdG9yLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgTmV0d29ya0NvbmZpZyxcbiAgU3VibmV0VHlwZU5hbWUsXG59IGZyb20gJy4vbmV0d29yay10eXBlcy5qcyc7XG5pbXBvcnQgeyB1bndyYXBTZWNyZXQgfSBmcm9tICcuL3BpcGVsaW5lLWhlbHBlcnMuanMnO1xuXG4vKipcbiAqIE1hcHBpbmcgZnJvbSBzdHJpbmcgc3VibmV0IHR5cGUgbmFtZXMgdG8gQ0RLIFN1Ym5ldFR5cGUgZW51bSB2YWx1ZXNcbiAqL1xuY29uc3QgU1VCTkVUX1RZUEVfTUFQOiBSZWNvcmQ8U3VibmV0VHlwZU5hbWUsIFN1Ym5ldFR5cGU+ID0ge1xuICBQUklWQVRFX1dJVEhfRUdSRVNTOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gIFBSSVZBVEVfV0lUSF9OQVQ6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVCxcbiAgUFJJVkFURV9JU09MQVRFRDogU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICBQVUJMSUM6IFN1Ym5ldFR5cGUuUFVCTElDLFxufTtcblxuY29uc3QgREVGQVVMVF9TVUJORVRfVFlQRTogU3VibmV0VHlwZU5hbWUgPSAnUFJJVkFURV9XSVRIX0VHUkVTUyc7XG5cbi8qKiBSZXNvbHZlZCBDREsgbmV0d29yayBwcm9wcyByZWFkeSB0byBzcHJlYWQgaW50byBDb2RlQnVpbGRTdGVwIG9yIGNvZGVCdWlsZERlZmF1bHRzICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkTmV0d29yayB7XG4gIHZwYzogSVZwYztcbiAgc3VibmV0U2VsZWN0aW9uOiBTdWJuZXRTZWxlY3Rpb247XG4gIHNlY3VyaXR5R3JvdXBzPzogSVNlY3VyaXR5R3JvdXBbXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIE5ldHdvcmtDb25maWcgZnJvbSBlbnZpcm9ubWVudCwgZm9yIGRlcGxveW1lbnRzIHRoYXQgd2FudCBFVkVSWVxuICogc3ludGhlc2l6ZWQgcGlwZWxpbmUncyBDb2RlQnVpbGQgdG8gcnVuIGluc2lkZSBhIFZQQyAodGhlIEVDMiBcImludGVybmFsXCIgL1xuICogaW5zaWRlLUFXUy1vbmx5IG1vZGUpIHdpdGhvdXQgcGVyLXBpcGVsaW5lIG5ldHdvcmsgY29uZmlnLiBSZXR1cm5zIHVuZGVmaW5lZFxuICogd2hlbiB0aGUgZW52IGlzbid0IHNldCDigJQgcHVibGljL2RlZmF1bHQgZGVwbG95bWVudHMgcnVuIENvZGVCdWlsZCBpbiB0aGVcbiAqIEFXUy1tYW5hZ2VkIG5ldHdvcmsgYXMgYmVmb3JlLlxuICpcbiAqIEVudiAoc2V0IG9uIHRoZSBwaXBlbGluZSBzZXJ2aWNlIGluIGludGVybmFsIG1vZGUpOlxuICogICBQSVBFTElORV9WUENfSUQgICAgICAgICAgICAgIFZQQyB0aGUgQ29kZUJ1aWxkIHByb2plY3RzIGpvaW4gKHJlcXVpcmVkKVxuICogICBQSVBFTElORV9TVUJORVRfSURTICAgICAgICAgIGNvbW1hLXNlcGFyYXRlZCBwcml2YXRlIHN1Ym5ldCBJRHMgKHJlcXVpcmVkKVxuICogICBQSVBFTElORV9TRUNVUklUWV9HUk9VUF9JRFMgIGNvbW1hLXNlcGFyYXRlZCBTRyBJRHMgKG9wdGlvbmFsKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21FbnYoKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHZwY0lkID0gKHByb2Nlc3MuZW52LlBJUEVMSU5FX1ZQQ19JRCB8fCAnJykudHJpbSgpO1xuICBjb25zdCBzdWJuZXRJZHMgPSAocHJvY2Vzcy5lbnYuUElQRUxJTkVfU1VCTkVUX0lEUyB8fCAnJylcbiAgICAuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmICghdnBjSWQgfHwgc3VibmV0SWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBzZWN1cml0eUdyb3VwSWRzID0gKHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFQ1VSSVRZX0dST1VQX0lEUyB8fCAnJylcbiAgICAuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc3VibmV0SWRzJyxcbiAgICBvcHRpb25zOiB7XG4gICAgICB2cGNJZCxcbiAgICAgIHN1Ym5ldElkcyxcbiAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzLmxlbmd0aCA+IDAgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIE5ldHdvcmtDb25maWcgaW50byBDREsgcHJvcHMgZm9yIENvZGVCdWlsZFN0ZXAgb3IgY29kZUJ1aWxkRGVmYXVsdHMuXG4gKiBVc2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24gbmFycm93aW5nIHRvIGRlbGVnYXRlIHRvIHRoZSBhcHByb3ByaWF0ZSBDREsgbG9va3Vwcy5cbiAqXG4gKiBAcGFyYW0gc2NvcGUgLSBDREsgY29uc3RydWN0IHNjb3BlXG4gKiBAcGFyYW0gaWQgLSBVbmlxdWVJZCBpbnN0YW5jZSBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgY29uc3RydWN0IElEc1xuICogQHBhcmFtIG5ldHdvcmsgLSBOZXR3b3JrIGNvbmZpZ3VyYXRpb24gdG8gcmVzb2x2ZVxuICogQHJldHVybnMgUmVzb2x2ZWQgbmV0d29yayBwcm9wcyByZWFkeSB0byBzcHJlYWQgaW50byBDREsgY29uc3RydWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU5ldHdvcmsoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBVbmlxdWVJZCxcbiAgbmV0d29yazogTmV0d29ya0NvbmZpZyxcbik6IFJlc29sdmVkTmV0d29yayB7XG4gIHN3aXRjaCAobmV0d29yay50eXBlKSB7XG4gICAgY2FzZSAnc3VibmV0SWRzJzoge1xuICAgICAgY29uc3QgdnBjID0gVnBjLmZyb21Mb29rdXAoc2NvcGUsIGlkLmdlbmVyYXRlKCduZXR3b3JrOnZwYycpLCB7XG4gICAgICAgIHZwY0lkOiB1bndyYXBTZWNyZXQobmV0d29yay5vcHRpb25zLnZwY0lkKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzdWJuZXRzID0gbmV0d29yay5vcHRpb25zLnN1Ym5ldElkcy5tYXAoXG4gICAgICAgIChzdWJuZXRJZCkgPT4gU3VibmV0LmZyb21TdWJuZXRJZChzY29wZSwgaWQuZ2VuZXJhdGUoJ25ldHdvcms6c3VibmV0JyksIHN1Ym5ldElkKSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB3aXRoU2VjdXJpdHlHcm91cHMoXG4gICAgICAgIHsgdnBjLCBzdWJuZXRTZWxlY3Rpb246IHsgc3VibmV0cyB9IH0sXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBpZCxcbiAgICAgICAgbmV0d29yay5vcHRpb25zLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICd2cGNJZCc6IHtcbiAgICAgIGNvbnN0IHZwYyA9IFZwYy5mcm9tTG9va3VwKHNjb3BlLCBpZC5nZW5lcmF0ZSgnbmV0d29yazp2cGMnKSwge1xuICAgICAgICB2cGNJZDogdW53cmFwU2VjcmV0KG5ldHdvcmsub3B0aW9ucy52cGNJZCksXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHdpdGhTZWN1cml0eUdyb3VwcyhcbiAgICAgICAgeyB2cGMsIHN1Ym5ldFNlbGVjdGlvbjogcmVzb2x2ZVN1Ym5ldFNlbGVjdGlvbihuZXR3b3JrLm9wdGlvbnMpIH0sXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBpZCxcbiAgICAgICAgbmV0d29yay5vcHRpb25zLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICd2cGNMb29rdXAnOiB7XG4gICAgICBjb25zdCB2cGMgPSBWcGMuZnJvbUxvb2t1cChzY29wZSwgaWQuZ2VuZXJhdGUoJ25ldHdvcms6dnBjJyksIHtcbiAgICAgICAgdGFnczogbmV0d29yay5vcHRpb25zLnRhZ3MsXG4gICAgICAgIC4uLihuZXR3b3JrLm9wdGlvbnMudnBjTmFtZSAmJiB7IHZwY05hbWU6IG5ldHdvcmsub3B0aW9ucy52cGNOYW1lIH0pLFxuICAgICAgICAuLi4obmV0d29yay5vcHRpb25zLnJlZ2lvbiAmJiB7IHJlZ2lvbjogbmV0d29yay5vcHRpb25zLnJlZ2lvbiB9KSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gd2l0aFNlY3VyaXR5R3JvdXBzKFxuICAgICAgICB7IHZwYywgc3VibmV0U2VsZWN0aW9uOiByZXNvbHZlU3VibmV0U2VsZWN0aW9uKG5ldHdvcmsub3B0aW9ucykgfSxcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGlkLFxuICAgICAgICBuZXR3b3JrLm9wdGlvbnMuc2VjdXJpdHlHcm91cElkcyxcbiAgICAgICk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IG5ldHdvcms7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbmV0d29yayBjb25maWcgdHlwZTogJHsoX2V4aGF1c3RpdmUgYXMgTmV0d29ya0NvbmZpZykudHlwZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRhY2ggcmVzb2x2ZWQgc2VjdXJpdHkgZ3JvdXBzIHRvIGEgbmV0d29yayByZXN1bHQgd2hlbiBwcmVzZW50LlxuICovXG5mdW5jdGlvbiB3aXRoU2VjdXJpdHlHcm91cHMoXG4gIHJlc3VsdDogT21pdDxSZXNvbHZlZE5ldHdvcmssICdzZWN1cml0eUdyb3Vwcyc+LFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXSxcbik6IFJlc29sdmVkTmV0d29yayB7XG4gIGNvbnN0IHNlY3VyaXR5R3JvdXBzID0gcmVzb2x2ZVNlY3VyaXR5R3JvdXBzKHNjb3BlLCBpZCwgc2VjdXJpdHlHcm91cElkcyk7XG4gIHJldHVybiBzZWN1cml0eUdyb3VwcyA/IHsgLi4ucmVzdWx0LCBzZWN1cml0eUdyb3VwcyB9IDogcmVzdWx0O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgU3VibmV0U2VsZWN0aW9uIGZyb20gb3B0aW9ucyB0aGF0IGNhcnJ5IHN1Ym5ldFR5cGUsIGF2YWlsYWJpbGl0eVpvbmVzLFxuICogYW5kIHN1Ym5ldEdyb3VwTmFtZS4gU2hhcmVkIGJ5IHZwY0lkIGFuZCB2cGNMb29rdXAgYnJhbmNoZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTdWJuZXRTZWxlY3Rpb24oXG4gIG9wdGlvbnM6IHsgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGVOYW1lOyBhdmFpbGFiaWxpdHlab25lcz86IHN0cmluZ1tdOyBzdWJuZXRHcm91cE5hbWU/OiBzdHJpbmcgfSxcbik6IFN1Ym5ldFNlbGVjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgc3VibmV0VHlwZTogU1VCTkVUX1RZUEVfTUFQW29wdGlvbnMuc3VibmV0VHlwZSA/PyBERUZBVUxUX1NVQk5FVF9UWVBFXSxcbiAgICAuLi4ob3B0aW9ucy5hdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzOiBvcHRpb25zLmF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgIC4uLihvcHRpb25zLnN1Ym5ldEdyb3VwTmFtZSAmJiB7IHN1Ym5ldEdyb3VwTmFtZTogb3B0aW9ucy5zdWJuZXRHcm91cE5hbWUgfSksXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBzZWN1cml0eSBncm91cCBJRHMgaW50byBDREsgc2VjdXJpdHkgZ3JvdXAgcmVmZXJlbmNlcy5cbiAqIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gbm8gSURzIGFyZSBwcm92aWRlZC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNlY3VyaXR5R3JvdXBzKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXSxcbik6IElTZWN1cml0eUdyb3VwW10gfCB1bmRlZmluZWQge1xuICBpZiAoIXNlY3VyaXR5R3JvdXBJZHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHNlY3VyaXR5R3JvdXBJZHMubWFwKFxuICAgIChzZ0lkKSA9PiBTZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQoc2NvcGUsIGlkLmdlbmVyYXRlKCduZXR3b3JrOnNnJyksIHNnSWQpLFxuICApO1xufVxuIl19
@@ -1,10 +1,10 @@
1
1
  import type { Plugin } from '@pipeline-builder/pipeline-data';
2
2
  import { SecretValue } from 'aws-cdk-lib';
3
- import { ComputeType as CDKComputeType, IBuildImage } from 'aws-cdk-lib/aws-codebuild';
3
+ import { ComputeType as CDKComputeType, type IBuildImage } from 'aws-cdk-lib/aws-codebuild';
4
4
  import { CodeBuildStep, ManualApprovalStep, ShellStep } from 'aws-cdk-lib/pipelines';
5
5
  import type { Construct } from 'constructs';
6
- import { MetaDataType } from './pipeline-types';
7
- import type { CodeBuildStepOptions } from '../pipeline/step-types';
6
+ import { type MetaDataType } from './pipeline-types.js';
7
+ import type { CodeBuildStepOptions } from '../pipeline/step-types.js';
8
8
  /**
9
9
  * Merge multiple metadata objects into one. Later sources override earlier ones.
10
10
  */