@pipeline-builder/pipeline-core 4.1.4 → 4.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cdk.d.ts CHANGED
@@ -24,7 +24,7 @@
24
24
  * - NetworkTypes — VPC/subnet/security-group configuration
25
25
  *
26
26
  * **Config adapters**
27
- * - lambdaRuntime, lambdaTimeout, logRetention, ... — `AWSConfig` → CDK values
27
+ * - lambdaRuntime, lambdaTimeout, lambdaArchitecture — `AWSConfig` → CDK values
28
28
  */
29
29
  export * from './config/aws-config-cdk.js';
30
30
  export * from './core/network-types.js';
package/lib/cdk.js CHANGED
@@ -26,7 +26,7 @@
26
26
  * - NetworkTypes — VPC/subnet/security-group configuration
27
27
  *
28
28
  * **Config adapters**
29
- * - lambdaRuntime, lambdaTimeout, logRetention, ... — `AWSConfig` → CDK values
29
+ * - lambdaRuntime, lambdaTimeout, lambdaArchitecture — `AWSConfig` → CDK values
30
30
  */
31
31
  // Config adapters (plain AWSConfig data → CDK value objects)
32
32
  export * from './config/aws-config-cdk.js';
@@ -41,4 +41,4 @@ export * from './pipeline/stage-builder.js';
41
41
  export * from './pipeline/pipeline-builder.js';
42
42
  export * from './pipeline/plugin-lookup.js';
43
43
  export { PipelineConfiguration } from './pipeline/pipeline-configuration.js';
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCw2REFBNkQ7QUFDN0QsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxpREFBaUQ7QUFDakQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsMkJBQTJCLEdBQzVCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsOENBQThDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEBtb2R1bGUgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZS9jZGtcbiAqXG4gKiBUaGUgQVdTIENESyBzdXJmYWNlOiB0aGUgY29uc3RydWN0cyB0aGF0IGFzc2VtYmxlIGEgcGlwZWxpbmUgaW50byBhXG4gKiBDb2RlUGlwZWxpbmUgc3RhY2ssIHRoZSBzeW50aC10aW1lIGF1dGhvcmluZyB0eXBlcyB0aGV5IHRha2UsIGFuZCB0aGUgYWRhcHRlcnNcbiAqIHRoYXQgdHVybiBwbGFpbiBgQVdTQ29uZmlnYCBkYXRhIGludG8gQ0RLIHZhbHVlIG9iamVjdHMuXG4gKlxuICogRXZlcnl0aGluZyByZWFjaGFibGUgZnJvbSBoZXJlIHB1bGxzIGluIGBhd3MtY2RrLWxpYmAsIHdoaWNoIGlzIHdoeSBpdCBpcyBhXG4gKiBzZXBhcmF0ZSBlbnRyeSBwb2ludCBmcm9tIHRoZSBwYWNrYWdlIHJvb3QuIEltcG9ydCBmcm9tIGhlcmUgb25seSBpbiBjb2RlIHRoYXRcbiAqIGFjdHVhbGx5IHN5bnRoZXNpemVzIHN0YWNrcyDigJQgdGhlIENMSSdzIENESyBhcHAuIFNlcnZpY2VzIHRoYXQganVzdCBuZWVkIGNvbmZpZ1xuICogb3IgZG9tYWluIHR5cGVzIGltcG9ydCBgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZWAgaW5zdGVhZCBhbmQgbmV2ZXIgbG9hZFxuICogdGhlIENESy4gYGF3cy1jZGstbGliYCBhbmQgYGNvbnN0cnVjdHNgIGFyZSBwZWVyIGRlcGVuZGVuY2llczsgdGhlIGNvbnN1bWluZyBhcHBcbiAqIHN1cHBsaWVzIHRoZW0sIHNvIHRoZXJlIGlzIGV4YWN0bHkgb25lIGNvcHkgb2YgZWFjaCBvbiB0aGUgcmVzb2x1dGlvbiBncmFwaC5cbiAqXG4gKiAqKkNvbnN0cnVjdHMqKlxuICogLSBQaXBlbGluZUJ1aWxkZXIg4oCUIHRvcC1sZXZlbCBDREsgcGlwZWxpbmUgY29uc3RydWN0XG4gKiAtIFN0YWdlQnVpbGRlciDigJQgcGlwZWxpbmUgc3RhZ2UgY29tcG9zaXRpb25cbiAqIC0gUGx1Z2luTG9va3VwIOKAlCBwbHVnaW4gcmVzb2x1dGlvbiBjdXN0b20gcmVzb3VyY2VcbiAqIC0gQXJ0aWZhY3RNYW5hZ2VyIOKAlCBidWlsZCBhcnRpZmFjdCBtYW5hZ2VtZW50XG4gKiAtIFBpcGVsaW5lQ29uZmlndXJhdGlvbiDigJQgcGlwZWxpbmUgY29uZmlnIHJlc29sdXRpb25cbiAqXG4gKiAqKkF1dGhvcmluZyB0eXBlcyoqXG4gKiAtIFNvdXJjZVR5cGVzLCBTdGVwVHlwZXMg4oCUIHBpcGVsaW5lIHNvdXJjZSBhbmQgc3RlcCBjb25maWd1cmF0aW9uXG4gKiAtIE5ldHdvcmtUeXBlcyDigJQgVlBDL3N1Ym5ldC9zZWN1cml0eS1ncm91cCBjb25maWd1cmF0aW9uXG4gKlxuICogKipDb25maWcgYWRhcHRlcnMqKlxuICogLSBsYW1iZGFSdW50aW1lLCBsYW1iZGFUaW1lb3V0LCBsb2dSZXRlbnRpb24sIC4uLiDigJQgYEFXU0NvbmZpZ2Ag4oaSIENESyB2YWx1ZXNcbiAqL1xuXG4vLyBDb25maWcgYWRhcHRlcnMgKHBsYWluIEFXU0NvbmZpZyBkYXRhIOKGkiBDREsgdmFsdWUgb2JqZWN0cylcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnL2F3cy1jb25maWctY2RrLmpzJztcblxuLy8gSW5mcmFzdHJ1Y3R1cmUgdHlwZXMgdGhhdCByZWZlcmVuY2UgQ0RLIHZhbHVlc1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL25ldHdvcmstdHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2FydGlmYWN0LW1hbmFnZXIuanMnO1xuZXhwb3J0IHtcbiAgYnVpbGRDb25maWdGcm9tTWV0YWRhdGEsXG4gIG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lLFxuICBtZXRhZGF0YUZvckNvZGVCdWlsZFN0ZXAsXG4gIG1ldGFkYXRhRm9yU2hlbGxTdGVwLFxuICBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQsXG59IGZyb20gJy4vY29yZS9tZXRhZGF0YS1idWlsZGVyLmpzJztcblxuLy8gUGlwZWxpbmUgYXV0aG9yaW5nIHR5cGVzIGFuZCBDREsgY29uc3RydWN0c1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9zb3VyY2UtdHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9zdGVwLXR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvc3RhZ2UtYnVpbGRlci5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3BpcGVsaW5lLWJ1aWxkZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9wbHVnaW4tbG9va3VwLmpzJztcbmV4cG9ydCB7IFBpcGVsaW5lQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcGlwZWxpbmUvcGlwZWxpbmUtY29uZmlndXJhdGlvbi5qcyc7XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCw2REFBNkQ7QUFDN0QsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxpREFBaUQ7QUFDakQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsMkJBQTJCLEdBQzVCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsOENBQThDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEBtb2R1bGUgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZS9jZGtcbiAqXG4gKiBUaGUgQVdTIENESyBzdXJmYWNlOiB0aGUgY29uc3RydWN0cyB0aGF0IGFzc2VtYmxlIGEgcGlwZWxpbmUgaW50byBhXG4gKiBDb2RlUGlwZWxpbmUgc3RhY2ssIHRoZSBzeW50aC10aW1lIGF1dGhvcmluZyB0eXBlcyB0aGV5IHRha2UsIGFuZCB0aGUgYWRhcHRlcnNcbiAqIHRoYXQgdHVybiBwbGFpbiBgQVdTQ29uZmlnYCBkYXRhIGludG8gQ0RLIHZhbHVlIG9iamVjdHMuXG4gKlxuICogRXZlcnl0aGluZyByZWFjaGFibGUgZnJvbSBoZXJlIHB1bGxzIGluIGBhd3MtY2RrLWxpYmAsIHdoaWNoIGlzIHdoeSBpdCBpcyBhXG4gKiBzZXBhcmF0ZSBlbnRyeSBwb2ludCBmcm9tIHRoZSBwYWNrYWdlIHJvb3QuIEltcG9ydCBmcm9tIGhlcmUgb25seSBpbiBjb2RlIHRoYXRcbiAqIGFjdHVhbGx5IHN5bnRoZXNpemVzIHN0YWNrcyDigJQgdGhlIENMSSdzIENESyBhcHAuIFNlcnZpY2VzIHRoYXQganVzdCBuZWVkIGNvbmZpZ1xuICogb3IgZG9tYWluIHR5cGVzIGltcG9ydCBgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZWAgaW5zdGVhZCBhbmQgbmV2ZXIgbG9hZFxuICogdGhlIENESy4gYGF3cy1jZGstbGliYCBhbmQgYGNvbnN0cnVjdHNgIGFyZSBwZWVyIGRlcGVuZGVuY2llczsgdGhlIGNvbnN1bWluZyBhcHBcbiAqIHN1cHBsaWVzIHRoZW0sIHNvIHRoZXJlIGlzIGV4YWN0bHkgb25lIGNvcHkgb2YgZWFjaCBvbiB0aGUgcmVzb2x1dGlvbiBncmFwaC5cbiAqXG4gKiAqKkNvbnN0cnVjdHMqKlxuICogLSBQaXBlbGluZUJ1aWxkZXIg4oCUIHRvcC1sZXZlbCBDREsgcGlwZWxpbmUgY29uc3RydWN0XG4gKiAtIFN0YWdlQnVpbGRlciDigJQgcGlwZWxpbmUgc3RhZ2UgY29tcG9zaXRpb25cbiAqIC0gUGx1Z2luTG9va3VwIOKAlCBwbHVnaW4gcmVzb2x1dGlvbiBjdXN0b20gcmVzb3VyY2VcbiAqIC0gQXJ0aWZhY3RNYW5hZ2VyIOKAlCBidWlsZCBhcnRpZmFjdCBtYW5hZ2VtZW50XG4gKiAtIFBpcGVsaW5lQ29uZmlndXJhdGlvbiDigJQgcGlwZWxpbmUgY29uZmlnIHJlc29sdXRpb25cbiAqXG4gKiAqKkF1dGhvcmluZyB0eXBlcyoqXG4gKiAtIFNvdXJjZVR5cGVzLCBTdGVwVHlwZXMg4oCUIHBpcGVsaW5lIHNvdXJjZSBhbmQgc3RlcCBjb25maWd1cmF0aW9uXG4gKiAtIE5ldHdvcmtUeXBlcyDigJQgVlBDL3N1Ym5ldC9zZWN1cml0eS1ncm91cCBjb25maWd1cmF0aW9uXG4gKlxuICogKipDb25maWcgYWRhcHRlcnMqKlxuICogLSBsYW1iZGFSdW50aW1lLCBsYW1iZGFUaW1lb3V0LCBsYW1iZGFBcmNoaXRlY3R1cmUg4oCUIGBBV1NDb25maWdgIOKGkiBDREsgdmFsdWVzXG4gKi9cblxuLy8gQ29uZmlnIGFkYXB0ZXJzIChwbGFpbiBBV1NDb25maWcgZGF0YSDihpIgQ0RLIHZhbHVlIG9iamVjdHMpXG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy9hd3MtY29uZmlnLWNkay5qcyc7XG5cbi8vIEluZnJhc3RydWN0dXJlIHR5cGVzIHRoYXQgcmVmZXJlbmNlIENESyB2YWx1ZXNcbmV4cG9ydCAqIGZyb20gJy4vY29yZS9uZXR3b3JrLXR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS9hcnRpZmFjdC1tYW5hZ2VyLmpzJztcbmV4cG9ydCB7XG4gIGJ1aWxkQ29uZmlnRnJvbU1ldGFkYXRhLFxuICBtZXRhZGF0YUZvckNvZGVQaXBlbGluZSxcbiAgbWV0YWRhdGFGb3JDb2RlQnVpbGRTdGVwLFxuICBtZXRhZGF0YUZvclNoZWxsU3RlcCxcbiAgbWV0YWRhdGFGb3JCdWlsZEVudmlyb25tZW50LFxufSBmcm9tICcuL2NvcmUvbWV0YWRhdGEtYnVpbGRlci5qcyc7XG5cbi8vIFBpcGVsaW5lIGF1dGhvcmluZyB0eXBlcyBhbmQgQ0RLIGNvbnN0cnVjdHNcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvc291cmNlLXR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvc3RlcC10eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3N0YWdlLWJ1aWxkZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9waXBlbGluZS1idWlsZGVyLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvcGx1Z2luLWxvb2t1cC5qcyc7XG5leHBvcnQgeyBQaXBlbGluZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3BpcGVsaW5lL3BpcGVsaW5lLWNvbmZpZ3VyYXRpb24uanMnO1xuIl19
@@ -1,11 +1,9 @@
1
- import type { Algorithm } from 'jsonwebtoken';
2
1
  import type { AppConfig } from './config-types.js';
3
2
  /**
4
3
  * Core constants — configurable via environment variables with sensible defaults.
5
4
  */
6
5
  export declare class CoreConstants {
7
6
  static readonly NAME_PATTERN: RegExp;
8
- static readonly ALLOWED_JWT_ALGORITHMS: Algorithm[];
9
7
  static readonly HANDLER_TIMEOUT_MS: number;
10
8
  /** Default platform URL fallback when PLATFORM_BASE_URL is not set. */
11
9
  static readonly DEFAULT_PLATFORM_URL = "https://localhost:8443";
@@ -10,8 +10,6 @@ import { loadServerConfig, loadAuthConfig, loadRateLimitConfig, validateServerCo
10
10
  */
11
11
  export class CoreConstants {
12
12
  static NAME_PATTERN = /^[a-z0-9-]+$/;
13
- // Supported JWT algorithms
14
- static ALLOWED_JWT_ALGORITHMS = ['HS256', 'RS256', 'ES256'];
15
13
  // Custom Resource Handler configuration (must be less than Lambda timeout of 30s to allow response handling).
16
14
  // Sourced from the dependency-free `handler-constants.ts` leaf — the Lambda handler imports that module
17
15
  // directly (not this one) so its esbuild bundle never pulls in aws-cdk-lib via infrastructure-config.
@@ -193,4 +191,4 @@ export class Config {
193
191
  return this.get(section);
194
192
  }
195
193
  }
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvYXBwLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxjQUFjLElBQUkscUJBQXFCLEVBQUUsa0JBQWtCLElBQUkseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0SSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLGFBQWEsR0FDZCxNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsa0JBQWtCLEdBQ25CLE1BQU0sb0JBQW9CLENBQUM7QUFFNUI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQVUsWUFBWSxHQUFHLGNBQWMsQ0FBQztJQUU5QywyQkFBMkI7SUFDM0IsTUFBTSxDQUFVLHNCQUFzQixHQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFbEYsOEdBQThHO0lBQzlHLHdHQUF3RztJQUN4RyxzR0FBc0c7SUFDdEcsTUFBTSxDQUFVLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDO0lBQ3pFLHVFQUF1RTtJQUN2RSxNQUFNLENBQVUsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7SUFFN0UsTUFBTSxDQUFVLHdCQUF3QixHQUFHLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDO0lBQ3JGLE1BQU0sQ0FBVSxt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QztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFlBQVk7UUFDakIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQWU7UUFDM0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgTUFYX1BBR0VfTElNSVQgYXMgU0hBUkVEX01BWF9QQUdFX0xJTUlULCBERUZBVUxUX1BBR0VfTElNSVQgYXMgU0hBUkVEX0RFRkFVTFRfUEFHRV9MSU1JVCB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgQWxnb3JpdGhtIH0gZnJvbSAnanNvbndlYnRva2VuJztcbmltcG9ydCB7IGxvYWRCaWxsaW5nQ29uZmlnIH0gZnJvbSAnLi9iaWxsaW5nLWNvbmZpZy5qcyc7XG5pbXBvcnQgdHlwZSB7IEFwcENvbmZpZyB9IGZyb20gJy4vY29uZmlnLXR5cGVzLmpzJztcbmltcG9ydCAqIGFzIEhhbmRsZXJDb25zdGFudHMgZnJvbSAnLi9oYW5kbGVyLWNvbnN0YW50cy5qcyc7XG5pbXBvcnQge1xuICBsb2FkUmVnaXN0cnlDb25maWcsXG4gIGxvYWRQbHVnaW5CdWlsZENvbmZpZyxcbiAgbG9hZERvY2tlckNvbmZpZyxcbiAgbG9hZERhdGFiYXNlQ29uZmlnLFxuICBsb2FkT2JzZXJ2YWJpbGl0eUNvbmZpZyxcbiAgbG9hZENvbXBsaWFuY2VDb25maWcsXG4gIGxvYWRBV1NDb25maWcsXG59IGZyb20gJy4vaW5mcmFzdHJ1Y3R1cmUtY29uZmlnLmpzJztcbmltcG9ydCB7XG4gIGxvYWRTZXJ2ZXJDb25maWcsXG4gIGxvYWRBdXRoQ29uZmlnLFxuICBsb2FkUmF0ZUxpbWl0Q29uZmlnLFxuICB2YWxpZGF0ZVNlcnZlckNvbmZpZyxcbiAgdmFsaWRhdGVBdXRoQ29uZmlnLFxufSBmcm9tICcuL3NlcnZlci1jb25maWcuanMnO1xuXG4vKipcbiAqIENvcmUgY29uc3RhbnRzIOKAlCBjb25maWd1cmFibGUgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLlxuICovXG5leHBvcnQgY2xhc3MgQ29yZUNvbnN0YW50cyB7XG4gIHN0YXRpYyByZWFkb25seSBOQU1FX1BBVFRFUk4gPSAvXlthLXowLTktXSskLztcblxuICAvLyBTdXBwb3J0ZWQgSldUIGFsZ29yaXRobXNcbiAgc3RhdGljIHJlYWRvbmx5IEFMTE9XRURfSldUX0FMR09SSVRITVM6IEFsZ29yaXRobVtdID0gWydIUzI1NicsICdSUzI1NicsICdFUzI1NiddO1xuXG4gIC8vIEN1c3RvbSBSZXNvdXJjZSBIYW5kbGVyIGNvbmZpZ3VyYXRpb24gKG11c3QgYmUgbGVzcyB0aGFuIExhbWJkYSB0aW1lb3V0IG9mIDMwcyB0byBhbGxvdyByZXNwb25zZSBoYW5kbGluZykuXG4gIC8vIFNvdXJjZWQgZnJvbSB0aGUgZGVwZW5kZW5jeS1mcmVlIGBoYW5kbGVyLWNvbnN0YW50cy50c2AgbGVhZiDigJQgdGhlIExhbWJkYSBoYW5kbGVyIGltcG9ydHMgdGhhdCBtb2R1bGVcbiAgLy8gZGlyZWN0bHkgKG5vdCB0aGlzIG9uZSkgc28gaXRzIGVzYnVpbGQgYnVuZGxlIG5ldmVyIHB1bGxzIGluIGF3cy1jZGstbGliIHZpYSBpbmZyYXN0cnVjdHVyZS1jb25maWcuXG4gIHN0YXRpYyByZWFkb25seSBIQU5ETEVSX1RJTUVPVVRfTVMgPSBIYW5kbGVyQ29uc3RhbnRzLkhBTkRMRVJfVElNRU9VVF9NUztcbiAgLyoqIERlZmF1bHQgcGxhdGZvcm0gVVJMIGZhbGxiYWNrIHdoZW4gUExBVEZPUk1fQkFTRV9VUkwgaXMgbm90IHNldC4gKi9cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUExBVEZPUk1fVVJMID0gSGFuZGxlckNvbnN0YW50cy5ERUZBVUxUX1BMQVRGT1JNX1VSTDtcblxuICBzdGF0aWMgcmVhZG9ubHkgSEFORExFUl9ERUZBVUxUX0JBU0VfVVJMID0gSGFuZGxlckNvbnN0YW50cy5IQU5ETEVSX0RFRkFVTFRfQkFTRV9VUkw7XG4gIHN0YXRpYyByZWFkb25seSBIQU5ETEVSX01BWF9SRVRSSUVTID0gSGFuZGxlckNvbnN0YW50cy5IQU5ETEVSX01BWF9SRVRSSUVTO1xuICBzdGF0aWMgcmVhZG9ubHkgSEFORExFUl9SRVRSWV9ERUxBWV9NUyA9IEhhbmRsZXJDb25zdGFudHMuSEFORExFUl9SRVRSWV9ERUxBWV9NUztcblxuICAvLyBQbHVnaW4gYnVpbGQgcXVldWUgY29uZmlndXJhdGlvbi5cbiAgLy8gTk9URTogbWF4QXR0ZW1wdHMgLyBiYWNrb2ZmRGVsYXlNcyAvIHdvcmtlclRpbWVvdXRNcyBhcmUgTk9UIGR1cGxpY2F0ZWQgaGVyZSDigJRcbiAgLy8gYGxvYWRQbHVnaW5CdWlsZENvbmZpZ2AgKGluZnJhc3RydWN0dXJlLWNvbmZpZy50cykgaXMgdGhlaXIgc2luZ2xlIHNvdXJjZSBvZlxuICAvLyB0cnV0aCwgcmVhZCB2aWEgYENvbmZpZy5nZXQoJ3BsdWdpbkJ1aWxkJylgLlxuICBzdGF0aWMgcmVhZG9ubHkgUExVR0lOX0JVSUxEX1FVRVVFX05BTUUgPSBwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfUVVFVUVfTkFNRSB8fCAncGx1Z2luLWJ1aWxkJztcbiAgc3RhdGljIHJlYWRvbmx5IFBMVUdJTl9CVUlMRF9DT01QTEVURURfUkVURU5USU9OX1NFQ1MgPSBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfQ09NUExFVEVEX1JFVEVOVElPTl9TRUNTIHx8ICczNjAwJywgMTApOyAvLyAxIGhyXG4gIHN0YXRpYyByZWFkb25seSBQTFVHSU5fQlVJTERfRkFJTEVEX1JFVEVOVElPTl9TRUNTID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX0ZBSUxFRF9SRVRFTlRJT05fU0VDUyB8fCAnODY0MDAnLCAxMCk7IC8vIDI0IGhyXG5cbiAgLy8gUGFnaW5hdGlvbiBhbmQgbGltaXRzIOKAlCBzaW5nbGUgc291cmNlIGluIGFwaS1jb3JlICh2YWxpZGF0aW9uL2NvbW1vbi1zY2hlbWFzKVxuICAvLyBzbyB0aGUgdmFsaWRhdGlvbiBsYXllciwgdGhpcyBjb25maWcsIGFuZCBwaXBlbGluZS1kYXRhJ3MgQ3J1ZFNlcnZpY2UgbmV2ZXIgZHJpZnQuXG4gIHN0YXRpYyByZWFkb25seSBNQVhfUEFHRV9MSU1JVCA9IFNIQVJFRF9NQVhfUEFHRV9MSU1JVDtcbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUEFHRV9MSU1JVCA9IFNIQVJFRF9ERUZBVUxUX1BBR0VfTElNSVQ7XG4gIHN0YXRpYyByZWFkb25seSBNQVhfUFJPTVBUX0xFTkdUSCA9IHBhcnNlSW50KHByb2Nlc3MuZW52Lk1BWF9QUk9NUFRfTEVOR1RIIHx8ICc1MDAwJywgMTApO1xuICBzdGF0aWMgcmVhZG9ubHkgUExVR0lOX01BWF9VUExPQURfTUIgPSBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fTUFYX1VQTE9BRF9NQiB8fCAnNDA5NicsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IFBJUEVMSU5FX05BTUVfTUFYX0xFTkdUSCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LlBJUEVMSU5FX05BTUVfTUFYX0xFTkdUSCB8fCAnMTAwJywgMTApO1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9QTFVHSU5fVkVSU0lPTiA9IHByb2Nlc3MuZW52LkRFRkFVTFRfUExVR0lOX1ZFUlNJT04gfHwgJzEuMC4wJztcblxuICAvLyBTU0Ugc3RyZWFtIHRpbWVvdXQgZm9yIEFJIGdlbmVyYXRpb24gZW5kcG9pbnRzXG4gIHN0YXRpYyByZWFkb25seSBTU0VfU1RSRUFNX1RJTUVPVVRfTVMgPSBwYXJzZUludChwcm9jZXNzLmVudi5TU0VfU1RSRUFNX1RJTUVPVVRfTVMgfHwgJzMwMDAwMCcsIDEwKTsgLy8gNSBtaW5cblxuICAvLyBHaXQgcHJvdmlkZXIgQVBJIGJhc2UgVVJMcyAoY29uZmlndXJhYmxlIGZvciBlbnRlcnByaXNlIGluc3RhbmNlcylcbiAgc3RhdGljIHJlYWRvbmx5IEdJVEhVQl9BUElfQkFTRV9VUkwgPSBwcm9jZXNzLmVudi5HSVRIVUJfQVBJX0JBU0VfVVJMIHx8ICdodHRwczovL2FwaS5naXRodWIuY29tJztcbiAgc3RhdGljIHJlYWRvbmx5IEJJVEJVQ0tFVF9BUElfQkFTRV9VUkwgPSBwcm9jZXNzLmVudi5CSVRCVUNLRVRfQVBJX0JBU0VfVVJMIHx8ICdodHRwczovL2FwaS5iaXRidWNrZXQub3JnLzIuMCc7XG5cbiAgLy8gQnVsayBvcGVyYXRpb25zIGFuZCBldmVudCBpbmdlc3Rpb25cbiAgc3RhdGljIHJlYWRvbmx5IE1BWF9CVUxLX0lURU1TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuTUFYX0JVTEtfSVRFTVMgfHwgJzEwMCcsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IE1BWF9FVkVOVFNfUEVSX0JBVENIID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuTUFYX0VWRU5UU19QRVJfQkFUQ0ggfHwgJzEwMCcsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUkVQT1JUX1JBTkdFX0RBWVMgPSBwYXJzZUludChwcm9jZXNzLmVudi5ERUZBVUxUX1JFUE9SVF9SQU5HRV9EQVlTIHx8ICczMCcsIDEwKTtcblxuICAvLyBTZWNyZXRzIE1hbmFnZXIgcGF0aCBwcmVmaXggZm9yIG9yZy1zY29wZWQgc2VjcmV0c1xuICBzdGF0aWMgcmVhZG9ubHkgU0VDUkVUU19QQVRIX1BSRUZJWCA9IHByb2Nlc3MuZW52LlNFQ1JFVFNfUEFUSF9QUkVGSVggfHwgJ3BpcGVsaW5lLWJ1aWxkZXInO1xuXG4gIC8qKiBCdWlsZCBhIFNlY3JldHMgTWFuYWdlciBwYXRoOiB7cHJlZml4fS97b3JnSWR9L3tuYW1lfSAqL1xuICBzdGF0aWMgc2VjcmV0UGF0aChvcmdJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtDb3JlQ29uc3RhbnRzLlNFQ1JFVFNfUEFUSF9QUkVGSVh9LyR7b3JnSWR9LyR7bmFtZX1gO1xuICB9XG5cbiAgLy8gRGF0YWJhc2UgY29ubmVjdGlvblxuICBzdGF0aWMgcmVhZG9ubHkgREJfTUFYX1JFVFJJRVMgPSBwYXJzZUludChwcm9jZXNzLmVudi5EQl9NQVhfUkVUUklFUyB8fCAnMycsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IERCX1JFVFJZX0RFTEFZX01TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuREJfUkVUUllfREVMQVlfTVMgfHwgJzEwMDAnLCAxMCk7IC8vIDFzXG4gIHN0YXRpYyByZWFkb25seSBEQl9UUkFOU0FDVElPTl9USU1FT1VUX01TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuREJfVFJBTlNBQ1RJT05fVElNRU9VVF9NUyB8fCAnMzAwMDAnLCAxMCk7IC8vIDMwc1xuICBzdGF0aWMgcmVhZG9ubHkgREJfQ0xPU0VfVElNRU9VVF9NUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkRCX0NMT1NFX1RJTUVPVVRfTVMgfHwgJzUwMDAnLCAxMCk7IC8vIDVzXG5cbiAgLy8gUmVzcG9uc2UgY29tcHJlc3Npb25cbiAgc3RhdGljIHJlYWRvbmx5IENPTVBSRVNTSU9OX1RIUkVTSE9MRF9CWVRFUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNPTVBSRVNTSU9OX1RIUkVTSE9MRF9CWVRFUyB8fCAnMTAyNCcsIDEwKTtcblxuICAvLyBJZGVtcG90ZW5jeVxuICBzdGF0aWMgcmVhZG9ubHkgSURFTVBPVEVOQ1lfVFRMX01TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuSURFTVBPVEVOQ1lfVFRMX01TIHx8ICczMDAwMDAnLCAxMCk7IC8vIDUgbWluXG4gIHN0YXRpYyByZWFkb25seSBJREVNUE9URU5DWV9NQVhfU1RPUkVfU0laRSA9IHBhcnNlSW50KHByb2Nlc3MuZW52LklERU1QT1RFTkNZX01BWF9TVE9SRV9TSVpFIHx8ICcxMDAwMCcsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IElERU1QT1RFTkNZX0NMRUFOVVBfSU5URVJWQUxfTVMgPSBwYXJzZUludChwcm9jZXNzLmVudi5JREVNUE9URU5DWV9DTEVBTlVQX0lOVEVSVkFMX01TIHx8ICc2MDAwMCcsIDEwKTsgLy8gMSBtaW5cblxuICAvLyBDYWNoZVxuICBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfQ0xFQU5VUF9JTlRFUlZBTF9NUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNBQ0hFX0NMRUFOVVBfSU5URVJWQUxfTVMgfHwgJzMwMDAwJywgMTApOyAvLyAzMHNcblxuICAvLyBTZXJ2ZXItc2lkZSBjYWNoZSBUVExzIChzZWNvbmRzKVxuICBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfVFRMX0VOVElUWSA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNBQ0hFX1RUTF9FTlRJVFkgfHwgJzYwJywgMTApOyAvLyBwbHVnaW4vcGlwZWxpbmUgZmluZEJ5SWRcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFX1RUTF9NRVNTQUdFID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuQ0FDSEVfVFRMX01FU1NBR0UgfHwgJzMwMCcsIDEwKTsgLy8gYW5ub3VuY2VtZW50cy9jb252ZXJzYXRpb25zICg1IG1pbilcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFX1RUTF9SRVBPUlRfSU5WRU5UT1JZID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuQ0FDSEVfVFRMX1JFUE9SVF9JTlZFTlRPUlkgfHwgJzMwMCcsIDEwKTsgLy8gcGx1Z2luIHN1bW1hcnkvZGlzdHJpYnV0aW9uICg1IG1pbilcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFX1RUTF9SRVBPUlRfVElNRVNFUklFUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNBQ0hFX1RUTF9SRVBPUlRfVElNRVNFUklFUyB8fCAnMTIwJywgMTApOyAvLyBleGVjdXRpb24vYnVpbGQgbWV0cmljcyAoMiBtaW4pXG4gIHN0YXRpYyByZWFkb25seSBDQUNIRV9UVExfQ09NUExJQU5DRV9SVUxFUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNBQ0hFX1RUTF9DT01QTElBTkNFX1JVTEVTIHx8ICc2MCcsIDEwKTsgLy8gYWN0aXZlIGNvbXBsaWFuY2UgcnVsZXNcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFX1RUTF9CSUxMSU5HX1BMQU5TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuQ0FDSEVfVFRMX0JJTExJTkdfUExBTlMgfHwgJzE0NDAwJywgMTApOyAvLyBiaWxsaW5nIHBsYW5zICg0IGhvdXJzKVxuXG4gIC8vIFNTRSBiYWNrcHJlc3N1cmVcbiAgc3RhdGljIHJlYWRvbmx5IFNTRV9CQUNLUFJFU1NVUkVfVEhSRVNIT0xEID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX0JBQ0tQUkVTU1VSRV9USFJFU0hPTEQgfHwgJzEwJywgMTApO1xuXG4gIC8vIEhUVFAgQ2FjaGUtQ29udHJvbCBoZWFkZXJzXG4gIHN0YXRpYyByZWFkb25seSBDQUNIRV9DT05UUk9MX0xJU1QgPSBwcm9jZXNzLmVudi5DQUNIRV9DT05UUk9MX0xJU1QgfHwgJ3ByaXZhdGUsIG1heC1hZ2U9MzAsIHN0YWxlLXdoaWxlLXJldmFsaWRhdGU9NjAnO1xuICBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfQ09OVFJPTF9ERVRBSUwgPSBwcm9jZXNzLmVudi5DQUNIRV9DT05UUk9MX0RFVEFJTCB8fCAncHJpdmF0ZSwgbWF4LWFnZT02MCwgc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZT0xMjAnO1xufVxuXG4vKipcbiAqIFBlci1zZWN0aW9uIGxvYWRlciBtYXAg4oCUIGVhY2ggc2VjdGlvbiBpcyBsb2FkZWQgbGF6aWx5IG9uIGZpcnN0IGFjY2Vzcy5cbiAqIFRoaXMgYXZvaWRzIGxvYWRpbmcgYWxsIGNvbmZpZyBzZWN0aW9ucyAoYW5kIHRoZWlyIHJlcXVpcmVkIGVudiB2YXJzKVxuICogd2hlbiBvbmx5IG9uZSBzZWN0aW9uIGlzIG5lZWRlZCAoZS5nLiBDREsgc3ludGhlc2lzIG9ubHkgbmVlZHMgJ2F3cycpLlxuICovXG5jb25zdCBzZWN0aW9uTG9hZGVyczogeyBbSyBpbiBrZXlvZiBBcHBDb25maWddOiAoKSA9PiBBcHBDb25maWdbS10gfSA9IHtcbiAgc2VydmVyOiBsb2FkU2VydmVyQ29uZmlnLFxuICBhdXRoOiBsb2FkQXV0aENvbmZpZyxcbiAgZGF0YWJhc2U6IGxvYWREYXRhYmFzZUNvbmZpZyxcbiAgcmVnaXN0cnk6IGxvYWRSZWdpc3RyeUNvbmZpZyxcbiAgcGx1Z2luQnVpbGQ6IGxvYWRQbHVnaW5CdWlsZENvbmZpZyxcbiAgZG9ja2VyQ29uZmlnOiBsb2FkRG9ja2VyQ29uZmlnLFxuICBvYnNlcnZhYmlsaXR5OiBsb2FkT2JzZXJ2YWJpbGl0eUNvbmZpZyxcbiAgY29tcGxpYW5jZTogbG9hZENvbXBsaWFuY2VDb25maWcsXG4gIGF3czogbG9hZEFXU0NvbmZpZyxcbiAgcmF0ZUxpbWl0OiBsb2FkUmF0ZUxpbWl0Q29uZmlnLFxuICBiaWxsaW5nOiBsb2FkQmlsbGluZ0NvbmZpZyxcbn07XG5cbi8qKiBQZXItc2VjdGlvbiB2YWxpZGF0b3JzIOKAlCBvbmx5IHJ1biBmb3Igc2VjdGlvbnMgdGhhdCBoYXZlIHZhbGlkYXRpb24gbG9naWMuICovXG5jb25zdCBzZWN0aW9uVmFsaWRhdG9yczogUGFydGlhbDx7IFtLIGluIGtleW9mIEFwcENvbmZpZ106IChjb25maWc6IEFwcENvbmZpZ1tLXSkgPT4gdm9pZCB9PiA9IHtcbiAgc2VydmVyOiB2YWxpZGF0ZVNlcnZlckNvbmZpZyxcbn07XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmYWNhZGUgd2l0aCBsYXp5IHBlci1zZWN0aW9uIGxvYWRpbmcuXG4gKlxuICogRWFjaCBzZWN0aW9uIGlzIGxvYWRlZCBhbmQgdmFsaWRhdGVkIGluZGVwZW5kZW50bHkgb24gZmlyc3QgYWNjZXNzLFxuICogc28gcmVxdWVzdGluZyBgQ29uZmlnLmdldCgnYXdzJylgIGRvZXMgbm90IHRyaWdnZXIgbG9hZGluZyBvZlxuICogc2VydmVyLCBhdXRoLCBvciBiaWxsaW5nIGNvbmZpZyAoYW5kIHRoZWlyIGVudiB2YXIgcmVxdWlyZW1lbnRzKS5cbiAqXG4gKiBVc2FnZTogYENvbmZpZy5nZXQoJ3NlcnZlcicpYCwgYENvbmZpZy5nZXQoJ2F1dGgnKWAsIGV0Yy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZpZyB7XG4gIHByaXZhdGUgc3RhdGljIGNhY2hlID0gbmV3IE1hcDxrZXlvZiBBcHBDb25maWcsIHVua25vd24+KCk7XG5cbiAgLyoqXG4gICAqIEdldCBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiAobG9hZGVkIGxhemlseSBvbiBmaXJzdCBhY2Nlc3MpLlxuICAgKi9cbiAgc3RhdGljIGdldDxLIGV4dGVuZHMga2V5b2YgQXBwQ29uZmlnPihzZWN0aW9uOiBLKTogQXBwQ29uZmlnW0tdIHtcbiAgICBpZiAoIXRoaXMuY2FjaGUuaGFzKHNlY3Rpb24pKSB7XG4gICAgICBjb25zdCBsb2FkZXIgPSBzZWN0aW9uTG9hZGVyc1tzZWN0aW9uXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gbG9hZGVyKCk7XG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSBzZWN0aW9uVmFsaWRhdG9yc1tzZWN0aW9uXTtcbiAgICAgIGlmICh2YWxpZGF0b3IpICh2YWxpZGF0b3IgYXMgKHY6IEFwcENvbmZpZ1tLXSkgPT4gdm9pZCkodmFsdWUpO1xuICAgICAgdGhpcy5jYWNoZS5zZXQoc2VjdGlvbiwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXQoc2VjdGlvbikgYXMgQXBwQ29uZmlnW0tdO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGEgcGFydGlhbCBvdmVycmlkZSBpbnRvIGEgY29uZmlnIHNlY3Rpb24sIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgdGhlXG4gICAqIGVudi1sb2FkZWQgdmFsdWVzIGZvciBhbGwgc3Vic2VxdWVudCBgQ29uZmlnLmdldChzZWN0aW9uKWAgY2FsbHMuXG4gICAqXG4gICAqIFVzZWQgYXQgQ0RLIHN5bnRoIHN0YXJ0IHRvIGluamVjdCBwbGF0Zm9ybS1zb3VyY2VkIGluZnJhc3RydWN0dXJlIGNvbmZpZ1xuICAgKiAoZS5nLiB0aGUgcmVnaXN0cnkgcHVsbCBob3N0IGRlcml2ZWQgZnJvbSB0aGUgcGxhdGZvcm0ncyBwdWJsaWMgVVJMKSBzbyB0aGVcbiAgICogc3ludGggZG9lcyBub3Qgc2lsZW50bHkgZGVwZW5kIG9uIHRoZSBvcGVyYXRvcidzIGxvY2FsIGBwcm9jZXNzLmVudmAuXG4gICAqIGB1bmRlZmluZWRgIGZpZWxkcyBpbiBgcGFydGlhbGAgYXJlIGlnbm9yZWQgc28gdGhleSBuZXZlciBjbG9iYmVyIGEgbG9hZGVkXG4gICAqIHZhbHVlLiBMb2FkcyAoYW5kIHZhbGlkYXRlcykgdGhlIHNlY3Rpb24gZmlyc3Qgc28gdGhlIG92ZXJyaWRlIG1lcmdlcyBvbnRvXG4gICAqIHRoZSByZWFsIGRlZmF1bHRzLlxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlPEsgZXh0ZW5kcyBrZXlvZiBBcHBDb25maWc+KHNlY3Rpb246IEssIHBhcnRpYWw6IFBhcnRpYWw8QXBwQ29uZmlnW0tdPik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChzZWN0aW9uKTtcbiAgICBjb25zdCBkZWZpbmVkID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGFydGlhbCkuZmlsdGVyKChbLCB2XSkgPT4gdiAhPT0gdW5kZWZpbmVkKSxcbiAgICApIGFzIFBhcnRpYWw8QXBwQ29uZmlnW0tdPjtcbiAgICB0aGlzLmNhY2hlLnNldChzZWN0aW9uLCB7IC4uLmN1cnJlbnQsIC4uLmRlZmluZWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogTGlrZSB7QGxpbmsgb3ZlcnJpZGV9LCBidXQgc2NvcGVkOiBzbmFwc2hvdHMgdGhlIGN1cnJlbnQgY2FjaGUgc3RhdGUgZm9yXG4gICAqIGBzZWN0aW9uYCBhbmQgcmV0dXJucyBhIHJlc3RvcmUgZnVuY3Rpb24gdGhhdCByZXZlcnRzIGl0LiBVc2UgYXJvdW5kIGFcbiAgICogc2luZ2xlIHVuaXQgb2Ygd29yayAoZS5nLiBvbmUgQ0RLIFBpcGVsaW5lQnVpbGRlcidzIHN5bnRoKSBzbyBhIHBlci1idWlsZGVyXG4gICAqIG92ZXJyaWRlIGRvZXMgTk9UIGxlYWsgaW50byB0aGUgcHJvY2Vzcy13aWRlIGNhY2hlIGFuZCBibGVlZCBpbnRvIHNpYmxpbmdcbiAgICogYnVpbGRlcnMgaW4gYSBtdWx0aS1waXBlbGluZSBDREsgYXBwLiBDYWxsaW5nIHRoZSByZXR1cm5lZCBmdW5jdGlvbiByZXN0b3Jlc1xuICAgKiB0aGUgZXhhY3QgcHJpb3Igc3RhdGUg4oCUIHRoZSBwcmV2aW91c2x5IGNhY2hlZCB2YWx1ZSwgb3IgYW4gdW5sb2FkZWQgc2VjdGlvblxuICAgKiBpZiBpdCBoYWQgbm90IGJlZW4gY2FjaGVkIHlldCAoc28gdGhlIG5leHQgYGdldCgpYCByZS1sb2FkcyBmcm9tIGVudikuXG4gICAqL1xuICBzdGF0aWMgb3ZlcnJpZGVTY29wZWQ8SyBleHRlbmRzIGtleW9mIEFwcENvbmZpZz4oXG4gICAgc2VjdGlvbjogSyxcbiAgICBwYXJ0aWFsOiBQYXJ0aWFsPEFwcENvbmZpZ1tLXT4sXG4gICk6ICgpID0+IHZvaWQge1xuICAgIGNvbnN0IGhhZENhY2hlZCA9IHRoaXMuY2FjaGUuaGFzKHNlY3Rpb24pO1xuICAgIGNvbnN0IHByZXZpb3VzID0gaGFkQ2FjaGVkID8gdGhpcy5jYWNoZS5nZXQoc2VjdGlvbikgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5vdmVycmlkZShzZWN0aW9uLCBwYXJ0aWFsKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGhhZENhY2hlZCkgdGhpcy5jYWNoZS5zZXQoc2VjdGlvbiwgcHJldmlvdXMpO1xuICAgICAgZWxzZSB0aGlzLmNhY2hlLmRlbGV0ZShzZWN0aW9uKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBjYWNoZWQgY29uZmlnIHNlY3Rpb25zIHNvIHRoZSBuZXh0IGBDb25maWcuZ2V0KClgIHJlLXJlYWRzIHRoZW1cbiAgICogZnJvbSB0aGUgY3VycmVudCBgcHJvY2Vzcy5lbnZgIChyZS1ydW5uaW5nIGVhY2ggc2VjdGlvbidzIGxvYWRlciArIHZhbGlkYXRvcikuXG4gICAqXG4gICAqIFVzZSB3aGVuIGVudiBoYXMgYmVlbiBtdXRhdGVkIGluLXByb2Nlc3MgYW5kIHRoZSBjYWNoZSBpcyBub3cgc3RhbGUg4oCUIGUuZy4gYVxuICAgKiBsb25nLXJ1bm5pbmcgQ0xJIHRoYXQgcmVjb25maWd1cmVzIGJldHdlZW4gb3BlcmF0aW9ucy4gQ0RLIHN5bnRoIHJ1bnMgaW4gYVxuICAgKiBmcmVzaCBzdWJwcm9jZXNzIHRoYXQgYWxyZWFkeSByZWFkcyBlbnYgb24gZmlyc3QgYWNjZXNzLCBzbyBpdCBkb2VzIG5vdCBuZWVkXG4gICAqIHRoaXMuIE5vdGU6IHRoaXMgYWxzbyBkcm9wcyBhbnkgdmFsdWVzIHNldCB2aWEge0BsaW5rIG92ZXJyaWRlfS5cbiAgICovXG4gIHN0YXRpYyByZWxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBSZXNldCBjb25maWd1cmF0aW9uIChmb3IgdGVzdGluZyBvbmx5KS4gQWxpYXMgZm9yIHtAbGluayByZWxvYWR9LlxuICAgKi9cbiAgc3RhdGljIF9yZXNldEZvclRlc3RpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5yZWxvYWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhdXRoIGNvbmZpZ3VyYXRpb24gKEpXVCBzZWNyZXRzLCBhbGdvcml0aG1zLCBleHBpcmF0aW9uKS5cbiAgICogQ2FsbCB0aGlzIGF0IHNlcnZlciBzdGFydHVwLCBub3QgZHVyaW5nIENESyBzeW50aGVzaXMuXG4gICAqL1xuICBzdGF0aWMgdmFsaWRhdGVBdXRoKCk6IHZvaWQge1xuICAgIHZhbGlkYXRlQXV0aENvbmZpZyh0aGlzLmdldCgnYXV0aCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnR5cGVkIGNvbmZpZyBhY2Nlc3Mg4oCUIHVzZSB3aGVuIHRoZSBwdWJsaXNoZWQgcGFja2FnZSB0eXBlcyBkb24ndCBpbmNsdWRlIGEgbmV3IHNlY3Rpb24geWV0LlxuICAgKiBBdm9pZHMgdGhlIGAoQ29uZmlnIGFzIHVua25vd24gYXMgLi4uKS5nZXQoLi4uKWAgY2FzdCBwYXR0ZXJuIGluIGNvbnN1bWVycy5cbiAgICovXG4gIHN0YXRpYyBnZXRBbnkoc2VjdGlvbjogc3RyaW5nKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KHNlY3Rpb24gYXMga2V5b2YgQXBwQ29uZmlnKTtcbiAgfVxufVxuIl19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvYXBwLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxjQUFjLElBQUkscUJBQXFCLEVBQUUsa0JBQWtCLElBQUkseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0SSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLGFBQWEsR0FDZCxNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsa0JBQWtCLEdBQ25CLE1BQU0sb0JBQW9CLENBQUM7QUFFNUI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQVUsWUFBWSxHQUFHLGNBQWMsQ0FBQztJQUU5Qyw4R0FBOEc7SUFDOUcsd0dBQXdHO0lBQ3hHLHNHQUFzRztJQUN0RyxNQUFNLENBQVUsa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUM7SUFDekUsdUVBQXVFO0lBQ3ZFLE1BQU0sQ0FBVSxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQztJQUU3RSxNQUFNLENBQVUsd0JBQXdCLEdBQUcsZ0JBQWdCLENBQUMsd0JBQXdCLENBQUM7SUFDckYsTUFBTSxDQUFVLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDO0lBQzNFLE1BQU0sQ0FBVSxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0Is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LE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBZTtRQUMzQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBMEIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBNQVhfUEFHRV9MSU1JVCBhcyBTSEFSRURfTUFYX1BBR0VfTElNSVQsIERFRkFVTFRfUEFHRV9MSU1JVCBhcyBTSEFSRURfREVGQVVMVF9QQUdFX0xJTUlUIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgbG9hZEJpbGxpbmdDb25maWcgfSBmcm9tICcuL2JpbGxpbmctY29uZmlnLmpzJztcbmltcG9ydCB0eXBlIHsgQXBwQ29uZmlnIH0gZnJvbSAnLi9jb25maWctdHlwZXMuanMnO1xuaW1wb3J0ICogYXMgSGFuZGxlckNvbnN0YW50cyBmcm9tICcuL2hhbmRsZXItY29uc3RhbnRzLmpzJztcbmltcG9ydCB7XG4gIGxvYWRSZWdpc3RyeUNvbmZpZyxcbiAgbG9hZFBsdWdpbkJ1aWxkQ29uZmlnLFxuICBsb2FkRG9ja2VyQ29uZmlnLFxuICBsb2FkRGF0YWJhc2VDb25maWcsXG4gIGxvYWRPYnNlcnZhYmlsaXR5Q29uZmlnLFxuICBsb2FkQ29tcGxpYW5jZUNvbmZpZyxcbiAgbG9hZEFXU0NvbmZpZyxcbn0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWcuanMnO1xuaW1wb3J0IHtcbiAgbG9hZFNlcnZlckNvbmZpZyxcbiAgbG9hZEF1dGhDb25maWcsXG4gIGxvYWRSYXRlTGltaXRDb25maWcsXG4gIHZhbGlkYXRlU2VydmVyQ29uZmlnLFxuICB2YWxpZGF0ZUF1dGhDb25maWcsXG59IGZyb20gJy4vc2VydmVyLWNvbmZpZy5qcyc7XG5cbi8qKlxuICogQ29yZSBjb25zdGFudHMg4oCUIGNvbmZpZ3VyYWJsZSB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb3JlQ29uc3RhbnRzIHtcbiAgc3RhdGljIHJlYWRvbmx5IE5BTUVfUEFUVEVSTiA9IC9eW2EtejAtOS1dKyQvO1xuXG4gIC8vIEN1c3RvbSBSZXNvdXJjZSBIYW5kbGVyIGNvbmZpZ3VyYXRpb24gKG11c3QgYmUgbGVzcyB0aGFuIExhbWJkYSB0aW1lb3V0IG9mIDMwcyB0byBhbGxvdyByZXNwb25zZSBoYW5kbGluZykuXG4gIC8vIFNvdXJjZWQgZnJvbSB0aGUgZGVwZW5kZW5jeS1mcmVlIGBoYW5kbGVyLWNvbnN0YW50cy50c2AgbGVhZiDigJQgdGhlIExhbWJkYSBoYW5kbGVyIGltcG9ydHMgdGhhdCBtb2R1bGVcbiAgLy8gZGlyZWN0bHkgKG5vdCB0aGlzIG9uZSkgc28gaXRzIGVzYnVpbGQgYnVuZGxlIG5ldmVyIHB1bGxzIGluIGF3cy1jZGstbGliIHZpYSBpbmZyYXN0cnVjdHVyZS1jb25maWcuXG4gIHN0YXRpYyByZWFkb25seSBIQU5ETEVSX1RJTUVPVVRfTVMgPSBIYW5kbGVyQ29uc3RhbnRzLkhBTkRMRVJfVElNRU9VVF9NUztcbiAgLyoqIERlZmF1bHQgcGxhdGZvcm0gVVJMIGZhbGxiYWNrIHdoZW4gUExBVEZPUk1fQkFTRV9VUkwgaXMgbm90IHNldC4gKi9cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUExBVEZPUk1fVVJMID0gSGFuZGxlckNvbnN0YW50cy5ERUZBVUxUX1BMQVRGT1JNX1VSTDtcblxuICBzdGF0aWMgcmVhZG9ubHkgSEFORExFUl9ERUZBVUxUX0JBU0VfVVJMID0gSGFuZGxlckNvbnN0YW50cy5IQU5ETEVSX0RFRkFVTFRfQkFTRV9VUkw7XG4gIHN0YXRpYyByZWFkb25seSBIQU5ETEVSX01BWF9SRVRSSUVTID0gSGFuZGxlckNvbnN0YW50cy5IQU5ETEVSX01BWF9SRVRSSUVTO1xuICBzdGF0aWMgcmVhZG9ubHkgSEFORExFUl9SRVRSWV9ERUxBWV9NUyA9IEhhbmRsZXJDb25zdGFudHMuSEFORExFUl9SRVRSWV9ERUxBWV9NUztcblxuICAvLyBQbHVnaW4gYnVpbGQgcXVldWUgY29uZmlndXJhdGlvbi5cbiAgLy8gTk9URTogbWF4QXR0ZW1wdHMgLyBiYWNrb2ZmRGVsYXlNcyAvIHdvcmtlclRpbWVvdXRNcyBhcmUgTk9UIGR1cGxpY2F0ZWQgaGVyZSDigJRcbiAgLy8gYGxvYWRQbHVnaW5CdWlsZENvbmZpZ2AgKGluZnJhc3RydWN0dXJlLWNvbmZpZy50cykgaXMgdGhlaXIgc2luZ2xlIHNvdXJjZSBvZlxuICAvLyB0cnV0aCwgcmVhZCB2aWEgYENvbmZpZy5nZXQoJ3BsdWdpbkJ1aWxkJylgLlxuICBzdGF0aWMgcmVhZG9ubHkgUExVR0lOX0JVSUxEX1FVRVVFX05BTUUgPSBwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfUVVFVUVfTkFNRSB8fCAncGx1Z2luLWJ1aWxkJztcbiAgc3RhdGljIHJlYWRvbmx5IFBMVUdJTl9CVUlMRF9DT01QTEVURURfUkVURU5USU9OX1NFQ1MgPSBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfQ09NUExFVEVEX1JFVEVOVElPTl9TRUNTIHx8ICczNjAwJywgMTApOyAvLyAxIGhyXG4gIHN0YXRpYyByZWFkb25seSBQTFVHSU5fQlVJTERfRkFJTEVEX1JFVEVOVElPTl9TRUNTID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX0ZBSUxFRF9SRVRFTlRJT05fU0VDUyB8fCAnODY0MDAnLCAxMCk7IC8vIDI0IGhyXG5cbiAgLy8gUGFnaW5hdGlvbiBhbmQgbGltaXRzIOKAlCBzaW5nbGUgc291cmNlIGluIGFwaS1jb3JlICh2YWxpZGF0aW9uL2NvbW1vbi1zY2hlbWFzKVxuICAvLyBzbyB0aGUgdmFsaWRhdGlvbiBsYXllciwgdGhpcyBjb25maWcsIGFuZCBwaXBlbGluZS1kYXRhJ3MgQ3J1ZFNlcnZpY2UgbmV2ZXIgZHJpZnQuXG4gIHN0YXRpYyByZWFkb25seSBNQVhfUEFHRV9MSU1JVCA9IFNIQVJFRF9NQVhfUEFHRV9MSU1JVDtcbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUEFHRV9MSU1JVCA9IFNIQVJFRF9ERUZBVUxUX1BBR0VfTElNSVQ7XG4gIHN0YXRpYyByZWFkb25seSBNQVhfUFJPTVBUX0xFTkdUSCA9IHBhcnNlSW50KHByb2Nlc3MuZW52Lk1BWF9QUk9NUFRfTEVOR1RIIHx8ICc1MDAwJywgMTApO1xuICBzdGF0aWMgcmVhZG9ubHkgUExVR0lOX01BWF9VUExPQURfTUIgPSBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fTUFYX1VQTE9BRF9NQiB8fCAnNDA5NicsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IFBJUEVMSU5FX05BTUVfTUFYX0xFTkdUSCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LlBJUEVMSU5FX05BTUVfTUFYX0xFTkdUSCB8fCAnMTAwJywgMTApO1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9QTFVHSU5fVkVSU0lPTiA9IHByb2Nlc3MuZW52LkRFRkFVTFRfUExVR0lOX1ZFUlNJT04gfHwgJzEuMC4wJztcblxuICAvLyBTU0Ugc3RyZWFtIHRpbWVvdXQgZm9yIEFJIGdlbmVyYXRpb24gZW5kcG9pbnRzXG4gIHN0YXRpYyByZWFkb25seSBTU0VfU1RSRUFNX1RJTUVPVVRfTVMgPSBwYXJzZUludChwcm9jZXNzLmVudi5TU0VfU1RSRUFNX1RJTUVPVVRfTVMgfHwgJzMwMDAwMCcsIDEwKTsgLy8gNSBtaW5cblxuICAvLyBHaXQgcHJvdmlkZXIgQVBJIGJhc2UgVVJMcyAoY29uZmlndXJhYmxlIGZvciBlbnRlcnByaXNlIGluc3RhbmNlcylcbiAgc3RhdGljIHJlYWRvbmx5IEdJVEhVQl9BUElfQkFTRV9VUkwgPSBwcm9jZXNzLmVudi5HSVRIVUJfQVBJX0JBU0VfVVJMIHx8ICdodHRwczovL2FwaS5naXRodWIuY29tJztcbiAgc3RhdGljIHJlYWRvbmx5IEJJVEJVQ0tFVF9BUElfQkFTRV9VUkwgPSBwcm9jZXNzLmVudi5CSVRCVUNLRVRfQVBJX0JBU0VfVVJMIHx8ICdodHRwczovL2FwaS5iaXRidWNrZXQub3JnLzIuMCc7XG5cbiAgLy8gQnVsayBvcGVyYXRpb25zIGFuZCBldmVudCBpbmdlc3Rpb25cbiAgc3RhdGljIHJlYWRvbmx5IE1BWF9CVUxLX0lURU1TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuTUFYX0JVTEtfSVRFTVMgfHwgJzEwMCcsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IE1BWF9FVkVOVFNfUEVSX0JBVENIID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuTUFYX0VWRU5UU19QRVJfQkFUQ0ggfHwgJzEwMCcsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUkVQT1JUX1JBTkdFX0RBWVMgPSBwYXJzZUludChwcm9jZXNzLmVudi5ERUZBVUxUX1JFUE9SVF9SQU5HRV9EQVlTIHx8ICczMCcsIDEwKTtcblxuICAvLyBTZWNyZXRzIE1hbmFnZXIgcGF0aCBwcmVmaXggZm9yIG9yZy1zY29wZWQgc2VjcmV0c1xuICBzdGF0aWMgcmVhZG9ubHkgU0VDUkVUU19QQVRIX1BSRUZJWCA9IHByb2Nlc3MuZW52LlNFQ1JFVFNfUEFUSF9QUkVGSVggfHwgJ3BpcGVsaW5lLWJ1aWxkZXInO1xuXG4gIC8qKiBCdWlsZCBhIFNlY3JldHMgTWFuYWdlciBwYXRoOiB7cHJlZml4fS97b3JnSWR9L3tuYW1lfSAqL1xuICBzdGF0aWMgc2VjcmV0UGF0aChvcmdJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtDb3JlQ29uc3RhbnRzLlNFQ1JFVFNfUEFUSF9QUkVGSVh9LyR7b3JnSWR9LyR7bmFtZX1gO1xuICB9XG5cbiAgLy8gRGF0YWJhc2UgY29ubmVjdGlvblxuICBzdGF0aWMgcmVhZG9ubHkgREJfTUFYX1JFVFJJRVMgPSBwYXJzZUludChwcm9jZXNzLmVudi5EQl9NQVhfUkVUUklFUyB8fCAnMycsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IERCX1JFVFJZX0RFTEFZX01TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuREJfUkVUUllfREVMQVlfTVMgfHwgJzEwMDAnLCAxMCk7IC8vIDFzXG4gIHN0YXRpYyByZWFkb25seSBEQl9UUkFOU0FDVElPTl9USU1FT1VUX01TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuREJfVFJBTlNBQ1RJT05fVElNRU9VVF9NUyB8fCAnMzAwMDAnLCAxMCk7IC8vIDMwc1xuICBzdGF0aWMgcmVhZG9ubHkgREJfQ0xPU0VfVElNRU9VVF9NUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkRCX0NMT1NFX1RJTUVPVVRfTVMgfHwgJzUwMDAnLCAxMCk7IC8vIDVzXG5cbiAgLy8gUmVzcG9uc2UgY29tcHJlc3Npb25cbiAgc3RhdGljIHJlYWRvbmx5IENPTVBSRVNTSU9OX1RIUkVTSE9MRF9CWVRFUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNPTVBSRVNTSU9OX1RIUkVTSE9MRF9CWVRFUyB8fCAnMTAyNCcsIDEwKTtcblxuICAvLyBJZGVtcG90ZW5jeVxuICBzdGF0aWMgcmVhZG9ubHkgSURFTVBPVEVOQ1lfVFRMX01TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuSURFTVBPVEVOQ1lfVFRMX01TIHx8ICczMDAwMDAnLCAxMCk7IC8vIDUgbWluXG4gIHN0YXRpYyByZWFkb25seSBJREVNUE9URU5DWV9NQVhfU1RPUkVfU0laRSA9IHBhcnNlSW50KHByb2Nlc3MuZW52LklERU1QT1RFTkNZX01BWF9TVE9SRV9TSVpFIHx8ICcxMDAwMCcsIDEwKTtcbiAgc3RhdGljIHJlYWRvbmx5IElERU1QT1RFTkNZX0NMRUFOVVBfSU5URVJWQUxfTVMgPSBwYXJzZUludChwcm9jZXNzLmVudi5JREVNUE9URU5DWV9DTEVBTlVQX0lOVEVSVkFMX01TIHx8ICc2MDAwMCcsIDEwKTsgLy8gMSBtaW5cblxuICAvLyBDYWNoZVxuICBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfQ0xFQU5VUF9JTlRFUlZBTF9NUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNBQ0hFX0NMRUFOVVBfSU5URVJWQUxfTVMgfHwgJzMwMDAwJywgMTApOyAvLyAzMHNcblxuICAvLyBTZXJ2ZXItc2lkZSBjYWNoZSBUVExzIChzZWNvbmRzKVxuICBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfVFRMX0VOVElUWSA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNBQ0hFX1RUTF9FTlRJVFkgfHwgJzYwJywgMTApOyAvLyBwbHVnaW4vcGlwZWxpbmUgZmluZEJ5SWRcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFX1RUTF9NRVNTQUdFID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuQ0FDSEVfVFRMX01FU1NBR0UgfHwgJzMwMCcsIDEwKTsgLy8gYW5ub3VuY2VtZW50cy9jb252ZXJzYXRpb25zICg1IG1pbilcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFX1RUTF9SRVBPUlRfSU5WRU5UT1JZID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuQ0FDSEVfVFRMX1JFUE9SVF9JTlZFTlRPUlkgfHwgJzMwMCcsIDEwKTsgLy8gcGx1Z2luIHN1bW1hcnkvZGlzdHJpYnV0aW9uICg1IG1pbilcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFX1RUTF9SRVBPUlRfVElNRVNFUklFUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNBQ0hFX1RUTF9SRVBPUlRfVElNRVNFUklFUyB8fCAnMTIwJywgMTApOyAvLyBleGVjdXRpb24vYnVpbGQgbWV0cmljcyAoMiBtaW4pXG4gIHN0YXRpYyByZWFkb25seSBDQUNIRV9UVExfQ09NUExJQU5DRV9SVUxFUyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkNBQ0hFX1RUTF9DT01QTElBTkNFX1JVTEVTIHx8ICc2MCcsIDEwKTsgLy8gYWN0aXZlIGNvbXBsaWFuY2UgcnVsZXNcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFX1RUTF9CSUxMSU5HX1BMQU5TID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuQ0FDSEVfVFRMX0JJTExJTkdfUExBTlMgfHwgJzE0NDAwJywgMTApOyAvLyBiaWxsaW5nIHBsYW5zICg0IGhvdXJzKVxuXG4gIC8vIFNTRSBiYWNrcHJlc3N1cmVcbiAgc3RhdGljIHJlYWRvbmx5IFNTRV9CQUNLUFJFU1NVUkVfVEhSRVNIT0xEID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX0JBQ0tQUkVTU1VSRV9USFJFU0hPTEQgfHwgJzEwJywgMTApO1xuXG4gIC8vIEhUVFAgQ2FjaGUtQ29udHJvbCBoZWFkZXJzXG4gIHN0YXRpYyByZWFkb25seSBDQUNIRV9DT05UUk9MX0xJU1QgPSBwcm9jZXNzLmVudi5DQUNIRV9DT05UUk9MX0xJU1QgfHwgJ3ByaXZhdGUsIG1heC1hZ2U9MzAsIHN0YWxlLXdoaWxlLXJldmFsaWRhdGU9NjAnO1xuICBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfQ09OVFJPTF9ERVRBSUwgPSBwcm9jZXNzLmVudi5DQUNIRV9DT05UUk9MX0RFVEFJTCB8fCAncHJpdmF0ZSwgbWF4LWFnZT02MCwgc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZT0xMjAnO1xufVxuXG4vKipcbiAqIFBlci1zZWN0aW9uIGxvYWRlciBtYXAg4oCUIGVhY2ggc2VjdGlvbiBpcyBsb2FkZWQgbGF6aWx5IG9uIGZpcnN0IGFjY2Vzcy5cbiAqIFRoaXMgYXZvaWRzIGxvYWRpbmcgYWxsIGNvbmZpZyBzZWN0aW9ucyAoYW5kIHRoZWlyIHJlcXVpcmVkIGVudiB2YXJzKVxuICogd2hlbiBvbmx5IG9uZSBzZWN0aW9uIGlzIG5lZWRlZCAoZS5nLiBDREsgc3ludGhlc2lzIG9ubHkgbmVlZHMgJ2F3cycpLlxuICovXG5jb25zdCBzZWN0aW9uTG9hZGVyczogeyBbSyBpbiBrZXlvZiBBcHBDb25maWddOiAoKSA9PiBBcHBDb25maWdbS10gfSA9IHtcbiAgc2VydmVyOiBsb2FkU2VydmVyQ29uZmlnLFxuICBhdXRoOiBsb2FkQXV0aENvbmZpZyxcbiAgZGF0YWJhc2U6IGxvYWREYXRhYmFzZUNvbmZpZyxcbiAgcmVnaXN0cnk6IGxvYWRSZWdpc3RyeUNvbmZpZyxcbiAgcGx1Z2luQnVpbGQ6IGxvYWRQbHVnaW5CdWlsZENvbmZpZyxcbiAgZG9ja2VyQ29uZmlnOiBsb2FkRG9ja2VyQ29uZmlnLFxuICBvYnNlcnZhYmlsaXR5OiBsb2FkT2JzZXJ2YWJpbGl0eUNvbmZpZyxcbiAgY29tcGxpYW5jZTogbG9hZENvbXBsaWFuY2VDb25maWcsXG4gIGF3czogbG9hZEFXU0NvbmZpZyxcbiAgcmF0ZUxpbWl0OiBsb2FkUmF0ZUxpbWl0Q29uZmlnLFxuICBiaWxsaW5nOiBsb2FkQmlsbGluZ0NvbmZpZyxcbn07XG5cbi8qKiBQZXItc2VjdGlvbiB2YWxpZGF0b3JzIOKAlCBvbmx5IHJ1biBmb3Igc2VjdGlvbnMgdGhhdCBoYXZlIHZhbGlkYXRpb24gbG9naWMuICovXG5jb25zdCBzZWN0aW9uVmFsaWRhdG9yczogUGFydGlhbDx7IFtLIGluIGtleW9mIEFwcENvbmZpZ106IChjb25maWc6IEFwcENvbmZpZ1tLXSkgPT4gdm9pZCB9PiA9IHtcbiAgc2VydmVyOiB2YWxpZGF0ZVNlcnZlckNvbmZpZyxcbn07XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmYWNhZGUgd2l0aCBsYXp5IHBlci1zZWN0aW9uIGxvYWRpbmcuXG4gKlxuICogRWFjaCBzZWN0aW9uIGlzIGxvYWRlZCBhbmQgdmFsaWRhdGVkIGluZGVwZW5kZW50bHkgb24gZmlyc3QgYWNjZXNzLFxuICogc28gcmVxdWVzdGluZyBgQ29uZmlnLmdldCgnYXdzJylgIGRvZXMgbm90IHRyaWdnZXIgbG9hZGluZyBvZlxuICogc2VydmVyLCBhdXRoLCBvciBiaWxsaW5nIGNvbmZpZyAoYW5kIHRoZWlyIGVudiB2YXIgcmVxdWlyZW1lbnRzKS5cbiAqXG4gKiBVc2FnZTogYENvbmZpZy5nZXQoJ3NlcnZlcicpYCwgYENvbmZpZy5nZXQoJ2F1dGgnKWAsIGV0Yy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZpZyB7XG4gIHByaXZhdGUgc3RhdGljIGNhY2hlID0gbmV3IE1hcDxrZXlvZiBBcHBDb25maWcsIHVua25vd24+KCk7XG5cbiAgLyoqXG4gICAqIEdldCBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiAobG9hZGVkIGxhemlseSBvbiBmaXJzdCBhY2Nlc3MpLlxuICAgKi9cbiAgc3RhdGljIGdldDxLIGV4dGVuZHMga2V5b2YgQXBwQ29uZmlnPihzZWN0aW9uOiBLKTogQXBwQ29uZmlnW0tdIHtcbiAgICBpZiAoIXRoaXMuY2FjaGUuaGFzKHNlY3Rpb24pKSB7XG4gICAgICBjb25zdCBsb2FkZXIgPSBzZWN0aW9uTG9hZGVyc1tzZWN0aW9uXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gbG9hZGVyKCk7XG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSBzZWN0aW9uVmFsaWRhdG9yc1tzZWN0aW9uXTtcbiAgICAgIGlmICh2YWxpZGF0b3IpICh2YWxpZGF0b3IgYXMgKHY6IEFwcENvbmZpZ1tLXSkgPT4gdm9pZCkodmFsdWUpO1xuICAgICAgdGhpcy5jYWNoZS5zZXQoc2VjdGlvbiwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXQoc2VjdGlvbikgYXMgQXBwQ29uZmlnW0tdO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGEgcGFydGlhbCBvdmVycmlkZSBpbnRvIGEgY29uZmlnIHNlY3Rpb24sIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgdGhlXG4gICAqIGVudi1sb2FkZWQgdmFsdWVzIGZvciBhbGwgc3Vic2VxdWVudCBgQ29uZmlnLmdldChzZWN0aW9uKWAgY2FsbHMuXG4gICAqXG4gICAqIFVzZWQgYXQgQ0RLIHN5bnRoIHN0YXJ0IHRvIGluamVjdCBwbGF0Zm9ybS1zb3VyY2VkIGluZnJhc3RydWN0dXJlIGNvbmZpZ1xuICAgKiAoZS5nLiB0aGUgcmVnaXN0cnkgcHVsbCBob3N0IGRlcml2ZWQgZnJvbSB0aGUgcGxhdGZvcm0ncyBwdWJsaWMgVVJMKSBzbyB0aGVcbiAgICogc3ludGggZG9lcyBub3Qgc2lsZW50bHkgZGVwZW5kIG9uIHRoZSBvcGVyYXRvcidzIGxvY2FsIGBwcm9jZXNzLmVudmAuXG4gICAqIGB1bmRlZmluZWRgIGZpZWxkcyBpbiBgcGFydGlhbGAgYXJlIGlnbm9yZWQgc28gdGhleSBuZXZlciBjbG9iYmVyIGEgbG9hZGVkXG4gICAqIHZhbHVlLiBMb2FkcyAoYW5kIHZhbGlkYXRlcykgdGhlIHNlY3Rpb24gZmlyc3Qgc28gdGhlIG92ZXJyaWRlIG1lcmdlcyBvbnRvXG4gICAqIHRoZSByZWFsIGRlZmF1bHRzLlxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlPEsgZXh0ZW5kcyBrZXlvZiBBcHBDb25maWc+KHNlY3Rpb246IEssIHBhcnRpYWw6IFBhcnRpYWw8QXBwQ29uZmlnW0tdPik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChzZWN0aW9uKTtcbiAgICBjb25zdCBkZWZpbmVkID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGFydGlhbCkuZmlsdGVyKChbLCB2XSkgPT4gdiAhPT0gdW5kZWZpbmVkKSxcbiAgICApIGFzIFBhcnRpYWw8QXBwQ29uZmlnW0tdPjtcbiAgICB0aGlzLmNhY2hlLnNldChzZWN0aW9uLCB7IC4uLmN1cnJlbnQsIC4uLmRlZmluZWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogTGlrZSB7QGxpbmsgb3ZlcnJpZGV9LCBidXQgc2NvcGVkOiBzbmFwc2hvdHMgdGhlIGN1cnJlbnQgY2FjaGUgc3RhdGUgZm9yXG4gICAqIGBzZWN0aW9uYCBhbmQgcmV0dXJucyBhIHJlc3RvcmUgZnVuY3Rpb24gdGhhdCByZXZlcnRzIGl0LiBVc2UgYXJvdW5kIGFcbiAgICogc2luZ2xlIHVuaXQgb2Ygd29yayAoZS5nLiBvbmUgQ0RLIFBpcGVsaW5lQnVpbGRlcidzIHN5bnRoKSBzbyBhIHBlci1idWlsZGVyXG4gICAqIG92ZXJyaWRlIGRvZXMgTk9UIGxlYWsgaW50byB0aGUgcHJvY2Vzcy13aWRlIGNhY2hlIGFuZCBibGVlZCBpbnRvIHNpYmxpbmdcbiAgICogYnVpbGRlcnMgaW4gYSBtdWx0aS1waXBlbGluZSBDREsgYXBwLiBDYWxsaW5nIHRoZSByZXR1cm5lZCBmdW5jdGlvbiByZXN0b3Jlc1xuICAgKiB0aGUgZXhhY3QgcHJpb3Igc3RhdGUg4oCUIHRoZSBwcmV2aW91c2x5IGNhY2hlZCB2YWx1ZSwgb3IgYW4gdW5sb2FkZWQgc2VjdGlvblxuICAgKiBpZiBpdCBoYWQgbm90IGJlZW4gY2FjaGVkIHlldCAoc28gdGhlIG5leHQgYGdldCgpYCByZS1sb2FkcyBmcm9tIGVudikuXG4gICAqL1xuICBzdGF0aWMgb3ZlcnJpZGVTY29wZWQ8SyBleHRlbmRzIGtleW9mIEFwcENvbmZpZz4oXG4gICAgc2VjdGlvbjogSyxcbiAgICBwYXJ0aWFsOiBQYXJ0aWFsPEFwcENvbmZpZ1tLXT4sXG4gICk6ICgpID0+IHZvaWQge1xuICAgIGNvbnN0IGhhZENhY2hlZCA9IHRoaXMuY2FjaGUuaGFzKHNlY3Rpb24pO1xuICAgIGNvbnN0IHByZXZpb3VzID0gaGFkQ2FjaGVkID8gdGhpcy5jYWNoZS5nZXQoc2VjdGlvbikgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5vdmVycmlkZShzZWN0aW9uLCBwYXJ0aWFsKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGhhZENhY2hlZCkgdGhpcy5jYWNoZS5zZXQoc2VjdGlvbiwgcHJldmlvdXMpO1xuICAgICAgZWxzZSB0aGlzLmNhY2hlLmRlbGV0ZShzZWN0aW9uKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBjYWNoZWQgY29uZmlnIHNlY3Rpb25zIHNvIHRoZSBuZXh0IGBDb25maWcuZ2V0KClgIHJlLXJlYWRzIHRoZW1cbiAgICogZnJvbSB0aGUgY3VycmVudCBgcHJvY2Vzcy5lbnZgIChyZS1ydW5uaW5nIGVhY2ggc2VjdGlvbidzIGxvYWRlciArIHZhbGlkYXRvcikuXG4gICAqXG4gICAqIFVzZSB3aGVuIGVudiBoYXMgYmVlbiBtdXRhdGVkIGluLXByb2Nlc3MgYW5kIHRoZSBjYWNoZSBpcyBub3cgc3RhbGUg4oCUIGUuZy4gYVxuICAgKiBsb25nLXJ1bm5pbmcgQ0xJIHRoYXQgcmVjb25maWd1cmVzIGJldHdlZW4gb3BlcmF0aW9ucy4gQ0RLIHN5bnRoIHJ1bnMgaW4gYVxuICAgKiBmcmVzaCBzdWJwcm9jZXNzIHRoYXQgYWxyZWFkeSByZWFkcyBlbnYgb24gZmlyc3QgYWNjZXNzLCBzbyBpdCBkb2VzIG5vdCBuZWVkXG4gICAqIHRoaXMuIE5vdGU6IHRoaXMgYWxzbyBkcm9wcyBhbnkgdmFsdWVzIHNldCB2aWEge0BsaW5rIG92ZXJyaWRlfS5cbiAgICovXG4gIHN0YXRpYyByZWxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBSZXNldCBjb25maWd1cmF0aW9uIChmb3IgdGVzdGluZyBvbmx5KS4gQWxpYXMgZm9yIHtAbGluayByZWxvYWR9LlxuICAgKi9cbiAgc3RhdGljIF9yZXNldEZvclRlc3RpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5yZWxvYWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhdXRoIGNvbmZpZ3VyYXRpb24gKEpXVCBzZWNyZXRzLCBhbGdvcml0aG1zLCBleHBpcmF0aW9uKS5cbiAgICogQ2FsbCB0aGlzIGF0IHNlcnZlciBzdGFydHVwLCBub3QgZHVyaW5nIENESyBzeW50aGVzaXMuXG4gICAqL1xuICBzdGF0aWMgdmFsaWRhdGVBdXRoKCk6IHZvaWQge1xuICAgIHZhbGlkYXRlQXV0aENvbmZpZyh0aGlzLmdldCgnYXV0aCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnR5cGVkIGNvbmZpZyBhY2Nlc3Mg4oCUIHVzZSB3aGVuIHRoZSBwdWJsaXNoZWQgcGFja2FnZSB0eXBlcyBkb24ndCBpbmNsdWRlIGEgbmV3IHNlY3Rpb24geWV0LlxuICAgKiBBdm9pZHMgdGhlIGAoQ29uZmlnIGFzIHVua25vd24gYXMgLi4uKS5nZXQoLi4uKWAgY2FzdCBwYXR0ZXJuIGluIGNvbnN1bWVycy5cbiAgICovXG4gIHN0YXRpYyBnZXRBbnkoc2VjdGlvbjogc3RyaW5nKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KHNlY3Rpb24gYXMga2V5b2YgQXBwQ29uZmlnKTtcbiAgfVxufVxuIl19
@@ -8,9 +8,8 @@
8
8
  * behind the `@pipeline-builder/pipeline-core/cdk` entry point, so only code that
9
9
  * actually synthesizes stacks pays for `aws-cdk-lib`.
10
10
  */
11
- import { Duration, RemovalPolicy } from 'aws-cdk-lib';
11
+ import { Duration } from 'aws-cdk-lib';
12
12
  import { Architecture, Runtime } from 'aws-cdk-lib/aws-lambda';
13
- import { RetentionDays } from 'aws-cdk-lib/aws-logs';
14
13
  import type { AWSConfig } from './config-types.js';
15
14
  /**
16
15
  * Resolve a Lambda runtime identifier (e.g. `'nodejs24.x'`) to a CDK `Runtime`.
@@ -26,24 +25,8 @@ export declare function lambdaRuntime(runtime: AWSConfig['lambda']['runtime']):
26
25
  */
27
26
  export declare function lambdaTimeout(seconds: AWSConfig['lambda']['timeoutSeconds']): Duration;
28
27
  /**
29
- * Resolve a Lambda architecture name to a CDK `Architecture`.
28
+ * Resolve the configured Lambda architecture to a CDK `Architecture`.
30
29
  *
31
30
  * @param architecture - value from `Config.get('aws').lambda.architecture`
32
31
  */
33
32
  export declare function lambdaArchitecture(architecture: AWSConfig['lambda']['architecture']): Architecture;
34
- /**
35
- * Convert a retention day count to CDK's `RetentionDays`.
36
- *
37
- * `RetentionDays` members are the day counts themselves, so the cast is exact —
38
- * `infrastructure-config.ts` has already validated the value against the same
39
- * set of allowed periods.
40
- *
41
- * @param days - value from `Config.get('aws').logging.retentionDays`
42
- */
43
- export declare function logRetention(days: AWSConfig['logging']['retentionDays']): RetentionDays;
44
- /**
45
- * Resolve a log-group removal policy name to a CDK `RemovalPolicy`.
46
- *
47
- * @param policy - value from `Config.get('aws').logging.removalPolicy`
48
- */
49
- export declare function logRemovalPolicy(policy: AWSConfig['logging']['removalPolicy']): RemovalPolicy;
@@ -10,9 +10,8 @@
10
10
  * behind the `@pipeline-builder/pipeline-core/cdk` entry point, so only code that
11
11
  * actually synthesizes stacks pays for `aws-cdk-lib`.
12
12
  */
13
- import { Duration, RemovalPolicy } from 'aws-cdk-lib';
13
+ import { Duration } from 'aws-cdk-lib';
14
14
  import { Architecture, Runtime } from 'aws-cdk-lib/aws-lambda';
15
- import { RetentionDays } from 'aws-cdk-lib/aws-logs';
16
15
  /** Runtime identifiers this platform supports, mapped to their CDK enum member. */
17
16
  const RUNTIMES = {
18
17
  'nodejs24.x': Runtime.NODEJS_24_X,
@@ -35,31 +34,11 @@ export function lambdaTimeout(seconds) {
35
34
  return Duration.seconds(seconds);
36
35
  }
37
36
  /**
38
- * Resolve a Lambda architecture name to a CDK `Architecture`.
37
+ * Resolve the configured Lambda architecture to a CDK `Architecture`.
39
38
  *
40
39
  * @param architecture - value from `Config.get('aws').lambda.architecture`
41
40
  */
42
41
  export function lambdaArchitecture(architecture) {
43
42
  return architecture === 'x86_64' ? Architecture.X86_64 : Architecture.ARM_64;
44
43
  }
45
- /**
46
- * Convert a retention day count to CDK's `RetentionDays`.
47
- *
48
- * `RetentionDays` members are the day counts themselves, so the cast is exact —
49
- * `infrastructure-config.ts` has already validated the value against the same
50
- * set of allowed periods.
51
- *
52
- * @param days - value from `Config.get('aws').logging.retentionDays`
53
- */
54
- export function logRetention(days) {
55
- return days;
56
- }
57
- /**
58
- * Resolve a log-group removal policy name to a CDK `RemovalPolicy`.
59
- *
60
- * @param policy - value from `Config.get('aws').logging.removalPolicy`
61
- */
62
- export function logRemovalPolicy(policy) {
63
- return policy === 'retain' ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY;
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNvbmZpZy1jZGsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2F3cy1jb25maWctY2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHckQsbUZBQW1GO0FBQ25GLE1BQU0sUUFBUSxHQUE0QjtJQUN4QyxZQUFZLEVBQUUsT0FBTyxDQUFDLFdBQVc7Q0FDbEMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUF1QztJQUNuRSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ2xELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE4QztJQUMxRSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsWUFBaUQ7SUFDbEYsT0FBTyxZQUFZLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0FBQy9FLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBMkM7SUFDdEUsT0FBTyxJQUFxQixDQUFDO0FBQy9CLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQTZDO0lBQzVFLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQ0RLIGFkYXB0ZXJzIGZvciB7QGxpbmsgQVdTQ29uZmlnfS5cbiAqXG4gKiBgQVdTQ29uZmlnYCBpcyBkZWxpYmVyYXRlbHkgcGxhaW4gZGF0YSAoc2VlIGl0cyBkb2MgY29tbWVudCk6IGVudi1sb2FkZWRcbiAqIG51bWJlcnMgYW5kIHN0cmluZ3MsIG5vIGBhd3MtY2RrLWxpYmAgb24gdGhlIGltcG9ydCBncmFwaC4gVGhhdCBrZWVwcyBgQ29uZmlnYFxuICog4oCUIHdoaWNoIGV2ZXJ5IEFQSSBzZXJ2aWNlIHJlYWRzIOKAlCBmcmVlIG9mIENESy4gVGhlc2UgZnVuY3Rpb25zIGFyZSB0aGUgc2luZ2xlXG4gKiBjb252ZXJzaW9uIHBvaW50IGZyb20gdGhhdCBwbGFpbiBkYXRhIGludG8gQ0RLIHZhbHVlIG9iamVjdHMsIGFuZCB0aGV5IGxpdmVcbiAqIGJlaGluZCB0aGUgYEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUvY2RrYCBlbnRyeSBwb2ludCwgc28gb25seSBjb2RlIHRoYXRcbiAqIGFjdHVhbGx5IHN5bnRoZXNpemVzIHN0YWNrcyBwYXlzIGZvciBgYXdzLWNkay1saWJgLlxuICovXG5cbmltcG9ydCB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlLCBSdW50aW1lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHR5cGUgeyBBV1NDb25maWcgfSBmcm9tICcuL2NvbmZpZy10eXBlcy5qcyc7XG5cbi8qKiBSdW50aW1lIGlkZW50aWZpZXJzIHRoaXMgcGxhdGZvcm0gc3VwcG9ydHMsIG1hcHBlZCB0byB0aGVpciBDREsgZW51bSBtZW1iZXIuICovXG5jb25zdCBSVU5USU1FUzogUmVjb3JkPHN0cmluZywgUnVudGltZT4gPSB7XG4gICdub2RlanMyNC54JzogUnVudGltZS5OT0RFSlNfMjRfWCxcbn07XG5cbi8qKlxuICogUmVzb2x2ZSBhIExhbWJkYSBydW50aW1lIGlkZW50aWZpZXIgKGUuZy4gYCdub2RlanMyNC54J2ApIHRvIGEgQ0RLIGBSdW50aW1lYC5cbiAqXG4gKiBAcGFyYW0gcnVudGltZSAtIHJ1bnRpbWUgaWRlbnRpZmllciBmcm9tIGBDb25maWcuZ2V0KCdhd3MnKS5sYW1iZGEucnVudGltZWBcbiAqIEByZXR1cm5zIHRoZSBDREsgZW51bSBtZW1iZXI7IGZhbGxzIGJhY2sgdG8gTm9kZS5qcyAyNCBmb3IgdW5rbm93biB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhbWJkYVJ1bnRpbWUocnVudGltZTogQVdTQ29uZmlnWydsYW1iZGEnXVsncnVudGltZSddKTogUnVudGltZSB7XG4gIHJldHVybiBSVU5USU1FU1tydW50aW1lXSB8fCBSdW50aW1lLk5PREVKU18yNF9YO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBMYW1iZGEgdGltZW91dCBpbiBzZWNvbmRzIHRvIGEgQ0RLIGBEdXJhdGlvbmAuXG4gKlxuICogQHBhcmFtIHNlY29uZHMgLSB0aW1lb3V0IGZyb20gYENvbmZpZy5nZXQoJ2F3cycpLmxhbWJkYS50aW1lb3V0U2Vjb25kc2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhbWJkYVRpbWVvdXQoc2Vjb25kczogQVdTQ29uZmlnWydsYW1iZGEnXVsndGltZW91dFNlY29uZHMnXSk6IER1cmF0aW9uIHtcbiAgcmV0dXJuIER1cmF0aW9uLnNlY29uZHMoc2Vjb25kcyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIExhbWJkYSBhcmNoaXRlY3R1cmUgbmFtZSB0byBhIENESyBgQXJjaGl0ZWN0dXJlYC5cbiAqXG4gKiBAcGFyYW0gYXJjaGl0ZWN0dXJlIC0gdmFsdWUgZnJvbSBgQ29uZmlnLmdldCgnYXdzJykubGFtYmRhLmFyY2hpdGVjdHVyZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhbWJkYUFyY2hpdGVjdHVyZShhcmNoaXRlY3R1cmU6IEFXU0NvbmZpZ1snbGFtYmRhJ11bJ2FyY2hpdGVjdHVyZSddKTogQXJjaGl0ZWN0dXJlIHtcbiAgcmV0dXJuIGFyY2hpdGVjdHVyZSA9PT0gJ3g4Nl82NCcgPyBBcmNoaXRlY3R1cmUuWDg2XzY0IDogQXJjaGl0ZWN0dXJlLkFSTV82NDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcmV0ZW50aW9uIGRheSBjb3VudCB0byBDREsncyBgUmV0ZW50aW9uRGF5c2AuXG4gKlxuICogYFJldGVudGlvbkRheXNgIG1lbWJlcnMgYXJlIHRoZSBkYXkgY291bnRzIHRoZW1zZWx2ZXMsIHNvIHRoZSBjYXN0IGlzIGV4YWN0IOKAlFxuICogYGluZnJhc3RydWN0dXJlLWNvbmZpZy50c2AgaGFzIGFscmVhZHkgdmFsaWRhdGVkIHRoZSB2YWx1ZSBhZ2FpbnN0IHRoZSBzYW1lXG4gKiBzZXQgb2YgYWxsb3dlZCBwZXJpb2RzLlxuICpcbiAqIEBwYXJhbSBkYXlzIC0gdmFsdWUgZnJvbSBgQ29uZmlnLmdldCgnYXdzJykubG9nZ2luZy5yZXRlbnRpb25EYXlzYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nUmV0ZW50aW9uKGRheXM6IEFXU0NvbmZpZ1snbG9nZ2luZyddWydyZXRlbnRpb25EYXlzJ10pOiBSZXRlbnRpb25EYXlzIHtcbiAgcmV0dXJuIGRheXMgYXMgUmV0ZW50aW9uRGF5cztcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgbG9nLWdyb3VwIHJlbW92YWwgcG9saWN5IG5hbWUgdG8gYSBDREsgYFJlbW92YWxQb2xpY3lgLlxuICpcbiAqIEBwYXJhbSBwb2xpY3kgLSB2YWx1ZSBmcm9tIGBDb25maWcuZ2V0KCdhd3MnKS5sb2dnaW5nLnJlbW92YWxQb2xpY3lgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2dSZW1vdmFsUG9saWN5KHBvbGljeTogQVdTQ29uZmlnWydsb2dnaW5nJ11bJ3JlbW92YWxQb2xpY3knXSk6IFJlbW92YWxQb2xpY3kge1xuICByZXR1cm4gcG9saWN5ID09PSAncmV0YWluJyA/IFJlbW92YWxQb2xpY3kuUkVUQUlOIDogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZO1xufVxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNvbmZpZy1jZGsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2F3cy1jb25maWctY2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRy9ELG1GQUFtRjtBQUNuRixNQUFNLFFBQVEsR0FBNEI7SUFDeEMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxXQUFXO0NBQ2xDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBdUM7SUFDbkUsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBOEM7SUFDMUUsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFlBQWlEO0lBQ2xGLE9BQU8sWUFBWSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztBQUMvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQ0RLIGFkYXB0ZXJzIGZvciB7QGxpbmsgQVdTQ29uZmlnfS5cbiAqXG4gKiBgQVdTQ29uZmlnYCBpcyBkZWxpYmVyYXRlbHkgcGxhaW4gZGF0YSAoc2VlIGl0cyBkb2MgY29tbWVudCk6IGVudi1sb2FkZWRcbiAqIG51bWJlcnMgYW5kIHN0cmluZ3MsIG5vIGBhd3MtY2RrLWxpYmAgb24gdGhlIGltcG9ydCBncmFwaC4gVGhhdCBrZWVwcyBgQ29uZmlnYFxuICog4oCUIHdoaWNoIGV2ZXJ5IEFQSSBzZXJ2aWNlIHJlYWRzIOKAlCBmcmVlIG9mIENESy4gVGhlc2UgZnVuY3Rpb25zIGFyZSB0aGUgc2luZ2xlXG4gKiBjb252ZXJzaW9uIHBvaW50IGZyb20gdGhhdCBwbGFpbiBkYXRhIGludG8gQ0RLIHZhbHVlIG9iamVjdHMsIGFuZCB0aGV5IGxpdmVcbiAqIGJlaGluZCB0aGUgYEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUvY2RrYCBlbnRyeSBwb2ludCwgc28gb25seSBjb2RlIHRoYXRcbiAqIGFjdHVhbGx5IHN5bnRoZXNpemVzIHN0YWNrcyBwYXlzIGZvciBgYXdzLWNkay1saWJgLlxuICovXG5cbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlLCBSdW50aW1lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgdHlwZSB7IEFXU0NvbmZpZyB9IGZyb20gJy4vY29uZmlnLXR5cGVzLmpzJztcblxuLyoqIFJ1bnRpbWUgaWRlbnRpZmllcnMgdGhpcyBwbGF0Zm9ybSBzdXBwb3J0cywgbWFwcGVkIHRvIHRoZWlyIENESyBlbnVtIG1lbWJlci4gKi9cbmNvbnN0IFJVTlRJTUVTOiBSZWNvcmQ8c3RyaW5nLCBSdW50aW1lPiA9IHtcbiAgJ25vZGVqczI0LngnOiBSdW50aW1lLk5PREVKU18yNF9YLFxufTtcblxuLyoqXG4gKiBSZXNvbHZlIGEgTGFtYmRhIHJ1bnRpbWUgaWRlbnRpZmllciAoZS5nLiBgJ25vZGVqczI0LngnYCkgdG8gYSBDREsgYFJ1bnRpbWVgLlxuICpcbiAqIEBwYXJhbSBydW50aW1lIC0gcnVudGltZSBpZGVudGlmaWVyIGZyb20gYENvbmZpZy5nZXQoJ2F3cycpLmxhbWJkYS5ydW50aW1lYFxuICogQHJldHVybnMgdGhlIENESyBlbnVtIG1lbWJlcjsgZmFsbHMgYmFjayB0byBOb2RlLmpzIDI0IGZvciB1bmtub3duIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGFtYmRhUnVudGltZShydW50aW1lOiBBV1NDb25maWdbJ2xhbWJkYSddWydydW50aW1lJ10pOiBSdW50aW1lIHtcbiAgcmV0dXJuIFJVTlRJTUVTW3J1bnRpbWVdIHx8IFJ1bnRpbWUuTk9ERUpTXzI0X1g7XG59XG5cbi8qKlxuICogQ29udmVydCBhIExhbWJkYSB0aW1lb3V0IGluIHNlY29uZHMgdG8gYSBDREsgYER1cmF0aW9uYC5cbiAqXG4gKiBAcGFyYW0gc2Vjb25kcyAtIHRpbWVvdXQgZnJvbSBgQ29uZmlnLmdldCgnYXdzJykubGFtYmRhLnRpbWVvdXRTZWNvbmRzYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGFtYmRhVGltZW91dChzZWNvbmRzOiBBV1NDb25maWdbJ2xhbWJkYSddWyd0aW1lb3V0U2Vjb25kcyddKTogRHVyYXRpb24ge1xuICByZXR1cm4gRHVyYXRpb24uc2Vjb25kcyhzZWNvbmRzKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBjb25maWd1cmVkIExhbWJkYSBhcmNoaXRlY3R1cmUgdG8gYSBDREsgYEFyY2hpdGVjdHVyZWAuXG4gKlxuICogQHBhcmFtIGFyY2hpdGVjdHVyZSAtIHZhbHVlIGZyb20gYENvbmZpZy5nZXQoJ2F3cycpLmxhbWJkYS5hcmNoaXRlY3R1cmVgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYW1iZGFBcmNoaXRlY3R1cmUoYXJjaGl0ZWN0dXJlOiBBV1NDb25maWdbJ2xhbWJkYSddWydhcmNoaXRlY3R1cmUnXSk6IEFyY2hpdGVjdHVyZSB7XG4gIHJldHVybiBhcmNoaXRlY3R1cmUgPT09ICd4ODZfNjQnID8gQXJjaGl0ZWN0dXJlLlg4Nl82NCA6IEFyY2hpdGVjdHVyZS5BUk1fNjQ7XG59XG4iXX0=
@@ -1,5 +1,4 @@
1
1
  import type { QuotaTier, QuotaTierLimits } from '@pipeline-builder/api-core';
2
- import type { Algorithm } from 'jsonwebtoken';
3
2
  /**
4
3
  * Type-safe configuration interface
5
4
  */
@@ -62,22 +61,27 @@ export interface ServerConfig {
62
61
  readonly billingTimeout: number;
63
62
  };
64
63
  }
65
- /** JWT and refresh token authentication configuration. */
64
+ /** Authentication configuration for the generic service scaffold. */
66
65
  export interface AuthConfig {
67
66
  readonly jwt: {
68
- /** Signing secret for access tokens (env: `JWT_SECRET`). */
69
- readonly secret: string;
70
- /** Token lifetime in seconds (env: `JWT_EXPIRES_IN`). */
67
+ /**
68
+ * Token lifetime in seconds (env: `JWT_EXPIRES_IN`).
69
+ *
70
+ * There is no JWT SECRET here any more. Every token is asymmetric: a user
71
+ * token is ES256 signed by platform alone (`services/token-signing`), and an
72
+ * internal service token is ES256 signed by the CALLING service with its own
73
+ * key (#14, `SERVICE_SIGNING_KEY_FILE` / `SERVICE_KEY_BUNDLE_FILE`).
74
+ */
71
75
  readonly expiresIn: number;
72
- /** Signing algorithm, e.g. `'HS256'` (env: `JWT_ALGORITHM`). */
73
- readonly algorithm: Algorithm;
74
76
  /** bcrypt salt rounds for password hashing (env: `BCRYPT_SALT_ROUNDS`). */
75
77
  readonly saltRounds: number;
76
78
  };
77
79
  readonly refreshToken: {
78
- /** Signing secret for refresh tokens (env: `REFRESH_TOKEN_SECRET`). */
79
- readonly secret: string;
80
- /** Token lifetime in seconds (env: `REFRESH_TOKEN_EXPIRES_IN`). */
80
+ /**
81
+ * Token lifetime in seconds (env: `REFRESH_TOKEN_EXPIRES_IN`). There is no
82
+ * refresh-token SECRET any more: a refresh token is a user token, signed
83
+ * with platform's ES256 key like every other credential a person holds.
84
+ */
81
85
  readonly expiresIn: number;
82
86
  };
83
87
  }
@@ -189,14 +193,12 @@ export interface AWSConfig {
189
193
  /** Function timeout in seconds (env: `LAMBDA_TIMEOUT`). */
190
194
  readonly timeoutSeconds: number;
191
195
  readonly memorySize: number;
196
+ /** Lambda CPU architecture (env: `LAMBDA_ARCHITECTURE`, `ARM_64` or `x86_64`). */
192
197
  readonly architecture: 'arm64' | 'x86_64';
193
198
  readonly reservedConcurrentExecutions?: number;
194
199
  };
195
200
  readonly logging: {
196
201
  readonly groupName: string;
197
- /** CloudWatch retention in days; `0` means never expire (env: `LOG_RETENTION`). */
198
- readonly retentionDays: number;
199
- readonly removalPolicy: 'retain' | 'destroy';
200
202
  };
201
203
  readonly codeBuild: {
202
204
  /** CodeBuild compute type name, e.g. `'SMALL'` (env: `CODEBUILD_COMPUTE_TYPE`). */
@@ -1,4 +1,4 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFF1b3RhVGllciwgUXVvdGFUaWVyTGltaXRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBBbGdvcml0aG0gfSBmcm9tICdqc29ud2VidG9rZW4nO1xuXG4vKipcbiAqIFR5cGUtc2FmZSBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZyB7XG4gIHJlYWRvbmx5IHNlcnZlcjogU2VydmVyQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBBdXRoQ29uZmlnO1xuICByZWFkb25seSBkYXRhYmFzZTogRGF0YWJhc2VDb25maWc7XG4gIHJlYWRvbmx5IHJlZ2lzdHJ5OiBSZWdpc3RyeUNvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Ib3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Qb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogSldUIGFuZCByZWZyZXNoIHRva2VuIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICByZWFkb25seSBqd3Q6IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIGFjY2VzcyB0b2tlbnMgKGVudjogYEpXVF9TRUNSRVRgKS4gKi9cbiAgICByZWFkb25seSBzZWNyZXQ6IHN0cmluZztcbiAgICAvKiogVG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZW52OiBgSldUX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogU2lnbmluZyBhbGdvcml0aG0sIGUuZy4gYCdIUzI1NidgIChlbnY6IGBKV1RfQUxHT1JJVEhNYCkuICovXG4gICAgcmVhZG9ubHkgYWxnb3JpdGhtOiBBbGdvcml0aG07XG4gICAgLyoqIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZW52OiBgQkNSWVBUX1NBTFRfUk9VTkRTYCkuICovXG4gICAgcmVhZG9ubHkgc2FsdFJvdW5kczogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSByZWZyZXNoVG9rZW46IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIHJlZnJlc2ggdG9rZW5zIChlbnY6IGBSRUZSRVNIX1RPS0VOX1NFQ1JFVGApLiAqL1xuICAgIHJlYWRvbmx5IHNlY3JldDogc3RyaW5nO1xuICAgIC8qKiBUb2tlbiBsaWZldGltZSBpbiBzZWNvbmRzIChlbnY6IGBSRUZSRVNIX1RPS0VOX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogSG9zdC9wb3J0IGFuIE9VVC1PRi1DTFVTVEVSIGNsaWVudCAobm90YWJseSBBV1MgQ29kZUJ1aWxkKSB1c2VzIHRvIHB1bGxcbiAgICogcGx1Z2luIGltYWdlcywgd2hlbiBpdCBkaWZmZXJzIGZyb20gdGhlIGluLWNsdXN0ZXIgYGhvc3RgL2Bwb3J0YC4gVGhlXG4gICAqIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUCBpc24ndCByZXNvbHZhYmxlIGZyb20gdGhlIFZQQywgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENvZGVCdWlsZCBpbWFnZSBVUkkgbXVzdCBwb2ludCBhdCB0aGUgcHVibGljIGdhdGV3YXkgaW5zdGVhZC5cbiAgICogRW52OiBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCAvIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgLiBPcHRpb25hbDtcbiAgICogY29uc3VtZXJzIGZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIHdoZW4gdW5zZXQgKHNpbmdsZS1ob3N0IC9cbiAgICogaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMpLiBgbG9hZFJlZ2lzdHJ5Q29uZmlnYCBhbHdheXMgcG9wdWxhdGVzIHRoZW0uXG4gICAqL1xuICByZWFkb25seSBwdWxsSG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVsbFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkS2l0IHRhbGtzIHRvIHRoZSByZWdpc3RyeSBvdmVyIHBsYWluIEhUVFAgd2hlbiB0cnVlOyBIVFRQUyB3aXRoIHRoZVxuICAgKiBzeXN0ZW0gQ0EgYnVuZGxlIG90aGVyd2lzZS4gRW52OiBgSU1BR0VfUkVHSVNUUllfSFRUUGAgKGRlZmF1bHRzIHRydWUg4oCUXG4gICAqIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5CdWlsZENvbmZpZyB7XG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIHJlYWRvbmx5IGJhY2tvZmZEZWxheU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHdvcmtlclRpbWVvdXRNczogbnVtYmVyO1xuICByZWFkb25seSB0ZW1wRGlyTWF4QWdlTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxTWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxQmFja29mZkJhc2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRDb25maWcge1xuICAvKiogUm9vdCBkaXJlY3RvcnkgZm9yIGJ1aWxkIHRlbXAgZmlsZXMuICovXG4gIHJlYWRvbmx5IHRlbXBSb290OiBzdHJpbmc7XG4gIC8qKiBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgcmVhZG9ubHkgdGltZW91dE1zOiBudW1iZXI7XG4gIC8qKiBQdXNoIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSBwdXNoVGltZW91dE1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBidWlsZGtpdGQgc29ja2V0IHRoZSBwbHVnaW4ncyBgYnVpbGRjdGxgIGNvbm5lY3RzIHRvLiBJbiBrOHNcbiAgICogYW5kIGNvbXBvc2UgdGhpcyBpcyBhIHNoYXJlZCBlbXB0eURpci90bXBmcyB2b2x1bWUgbW91bnRlZCBmcm9tIHRoZVxuICAgKiBidWlsZGtpdGQgc2lkZWNhci5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxka2l0QWRkcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlDb25maWcge1xuICByZWFkb25seSBsb2dMZXZlbDogc3RyaW5nO1xuICByZWFkb25seSBsb2dGb3JtYXQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHJhY2luZzoge1xuICAgIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGlhbmNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgc2NhblNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIFdoZW4gZmFsc2UsIHRoZSBzY2hlZHVsZXIgc2tpcHMgc2NhbnMvc2NoZWR1bGVzIGZvciB0aGUgc3lzdGVtIG9yZy4gRGVmYXVsdDogZmFsc2UuICovXG4gIHJlYWRvbmx5IHN5c3RlbU9yZ1NjYW5zRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBzY2FuIHNjaGVkdWxlciAobXMpLiBEZWZhdWx0OiAzMDAwMDAuICovXG4gIHJlYWRvbmx5IHNjYW5Mb2NrVHRsTXM6IG51bWJlcjtcbiAgLyoqIEhvdyBvZnRlbiB0aGUgZGlnZXN0IHNjaGVkdWxlciBjaGVja3MgZm9yIGR1ZSBkaWdlc3RzIChtcykuIERlZmF1bHQ6IDM2MDAwMDAuICovXG4gIHJlYWRvbmx5IGRpZ2VzdFNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBkaWdlc3Qgc2NoZWR1bGVyIChtcykuIERlZmF1bHQ6IDMwMDAwMC4gKi9cbiAgcmVhZG9ubHkgZGlnZXN0TG9ja1R0bE1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRGVsaWJlcmF0ZWx5IGV4cHJlc3NlZCBpbiBQTEFJTiBEQVRBIChudW1iZXJzLCBzdHJpbmdzLCBzdHJpbmcgdW5pb25zKSByYXRoZXJcbiAqIHRoYW4gQ0RLIHZhbHVlIG9iamVjdHMgKGBEdXJhdGlvbmAsIGBSdW50aW1lYCwgYFJldGVudGlvbkRheXNgLCAuLi4pLiBDb25maWcgaXNcbiAqIGxvYWRlZCBieSBldmVyeSBzZXJ2aWNlLCBidXQgb25seSB0aGUgQ0RLIGVudHJ5IHBvaW50IChgQHBpcGVsaW5lLWJ1aWxkZXIvXG4gKiBwaXBlbGluZS1jb3JlL2Nka2ApIGJ1aWxkcyBzdGFja3MgIHR5cGluZyB0aGlzIGJsb2NrIHdpdGggQ0RLIGNsYXNzZXMgcHV0XG4gKiBgYXdzLWNkay1saWJgIG9uIHRoZSBpbXBvcnQgZ3JhcGggb2YgYENvbmZpZ2AsIGFuZCB0aGVyZWZvcmUgb2YgZXZlcnkgQVBJXG4gKiBzZXJ2aWNlIHRoYXQgcmVhZHMgc28gbXVjaCBhcyBhIHBvcnQgbnVtYmVyLiBDb252ZXJzaW9uIHRvIENESyBvYmplY3RzIGhhcHBlbnNcbiAqIGF0IHRoZSBjb25zdHJ1Y3QgYm91bmRhcnkgaW4gYGNvbmZpZy9hd3MtY29uZmlnLWNkay50c2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVdTQ29uZmlnIHtcbiAgcmVhZG9ubHkgbGFtYmRhOiB7XG4gICAgLyoqIExhbWJkYSBydW50aW1lIGlkZW50aWZpZXIsIGUuZy4gYCdub2RlanMyNC54J2AgKGVudjogYExBTUJEQV9SVU5USU1FYCkuICovXG4gICAgcmVhZG9ubHkgcnVudGltZTogc3RyaW5nO1xuICAgIC8qKiBGdW5jdGlvbiB0aW1lb3V0IGluIHNlY29uZHMgKGVudjogYExBTUJEQV9USU1FT1VUYCkuICovXG4gICAgcmVhZG9ubHkgdGltZW91dFNlY29uZHM6IG51bWJlcjtcbiAgICByZWFkb25seSBtZW1vcnlTaXplOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgYXJjaGl0ZWN0dXJlOiAnYXJtNjQnIHwgJ3g4Nl82NCc7XG4gICAgcmVhZG9ubHkgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucz86IG51bWJlcjtcbiAgfTtcbiAgcmVhZG9ubHkgbG9nZ2luZzoge1xuICAgIHJlYWRvbmx5IGdyb3VwTmFtZTogc3RyaW5nO1xuICAgIC8qKiBDbG91ZFdhdGNoIHJldGVudGlvbiBpbiBkYXlzOyBgMGAgbWVhbnMgbmV2ZXIgZXhwaXJlIChlbnY6IGBMT0dfUkVURU5USU9OYCkuICovXG4gICAgcmVhZG9ubHkgcmV0ZW50aW9uRGF5czogbnVtYmVyO1xuICAgIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k6ICdyZXRhaW4nIHwgJ2Rlc3Ryb3knO1xuICB9O1xuICByZWFkb25seSBjb2RlQnVpbGQ6IHtcbiAgICAvKiogQ29kZUJ1aWxkIGNvbXB1dGUgdHlwZSBuYW1lLCBlLmcuIGAnU01BTEwnYCAoZW52OiBgQ09ERUJVSUxEX0NPTVBVVEVfVFlQRWApLiAqL1xuICAgIHJlYWRvbmx5IGNvbXB1dGVUeXBlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSW1hZ2UgdXNlZCBmb3IgQ29kZUJ1aWxkIHN0ZXBzIHRoYXQgZG9uJ3QgaGF2ZSBhIHBsdWdpbi1iYWtlZCBpbWFnZVxuICAgICAqIChjb2xkLXN0YXJ0IHN5bnRoIGJvb3RzdHJhcCwgU2hlbGxTdGVwcyB3aXRoIG5vIHJlZ2lzdHJ5LCBhbmRcbiAgICAgKiBgbWV0YWRhdGFfb25seWAgcGx1Z2lucykuIGVudjogYENPREVCVUlMRF9ERUZBVUxUX0lNQUdFYC4gRGVmYXVsdFxuICAgICAqIGBwaXBlbGluZS1ib290c3RyYXA6MS4wYCDigJQgdGhlIGxvY2FsIHRhZyBidWlsdCBieVxuICAgICAqIGBkZXBsb3kvY29kZWJ1aWxkL2Jvb3RzdHJhcC9Eb2NrZXJmaWxlYCwgd2l0aCBgcGlwZWxpbmUtbWFuYWdlcmBcbiAgICAgKiBiYWtlZCBpbi5cbiAgICAgKlxuICAgICAqIENvbnRyYWN0OiB0aGUgaW1hZ2UgTVVTVCBoYXZlIGBwaXBlbGluZS1tYW5hZ2VyYCBvbiBQQVRILiBUaGVcbiAgICAgKiBib290c3RyYXAgc3ludGggcGF0aCBubyBsb25nZXIgc2VsZi1oZWFscyB2aWEgYG5wbSBpbnN0YWxsIC1nYDtcbiAgICAgKiBwb2ludGluZyB0aGlzIGF0IGFuIGltYWdlIHdpdGhvdXQgdGhlIHRvb2wgZ2V0cyBleGl0IDEyNyBvbiB0aGVcbiAgICAgKiBmaXJzdCBjb2xkLXN0YXJ0IGJ1aWxkLlxuICAgICAqXG4gICAgICogUmVzb2x1dGlvbjpcbiAgICAgKiAtIEJhcmUgdGFnIChubyBgL2ApIOKGkiBhdXRvLXByZWZpeGVkIHRvXG4gICAgICogICBgPHJlZ2lzdHJ5LWhvc3Q+Ojxwb3J0Pi9saWJyYXJ5Lzx0YWc+YCB1c2luZyB0aGUgcmVnaXN0cnkgY29uZmlnLFxuICAgICAqICAgd2l0aCB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBTZWNyZXQgYXMgQmFzaWMgYXV0aCAoc2FtZSBmbG93IGFzXG4gICAgICogICBwbHVnaW4gaW1hZ2VzKS5cbiAgICAgKiAtIEZ1bGx5LXF1YWxpZmllZCByZWdpc3RyeSBVUkkgKGNvbnRhaW5zIGAvYCkg4oaSIHVzZWQgYXMtaXMsIG5vXG4gICAgICogICBhdXRoIHdpcmVkIChvcGVyYXRvciBvd25zIG1ha2luZyBpdCBwdWxsYWJsZSkuXG4gICAgICogLSBXaGVuIHRoZSByZWdpc3RyeSBpc24ndCBjb25maWd1cmVkIG9yIHBlci1vcmcgYXV0aCBpc24ndFxuICAgICAqICAgYXZhaWxhYmxlIGF0IHRoZSBjYWxsIHNpdGUsIGZhbGxzIGJhY2sgdG9cbiAgICAgKiAgIGBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjguMGAgd2l0aCBhIHdhcm5pbmcg4oCUIGNvbGQtc3RhcnQgc3ludGhcbiAgICAgKiAgIHdpbGwgdGhlbiBmYWlsIG9uIGBwaXBlbGluZS1tYW5hZ2VyOiBub3QgZm91bmRgLCBzdXJmYWNpbmcgdGhlXG4gICAgICogICBtaXNjb25maWd1cmF0aW9uIGxvdWRseSBpbnN0ZWFkIG9mIHNpbGVudGx5IHN3YXBwaW5nIGltYWdlcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBkZWZhdWx0SW1hZ2U6IHN0cmluZztcbiAgfTtcbn1cblxuLyoqIEV4cHJlc3MgcmF0ZSBsaW1pdGluZyBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXRlTGltaXRDb25maWcge1xuICAvKiogTWF4aW11bSByZXF1ZXN0cyBwZXIgd2luZG93IChlbnY6IGBMSU1JVEVSX01BWGApLiAqL1xuICByZWFkb25seSBtYXg6IG51bWJlcjtcbiAgLyoqIFJhdGUgbGltaXQgd2luZG93IGluIG1pbGxpc2Vjb25kcyAoZW52OiBgTElNSVRFUl9XSU5ET1dNU2ApLiAqL1xuICByZWFkb25seSB3aW5kb3dNczogbnVtYmVyO1xuICAvKiogSW5jbHVkZSBsZWdhY3kgYFgtUmF0ZUxpbWl0LSpgIGhlYWRlcnMuICovXG4gIHJlYWRvbmx5IGxlZ2FjeUhlYWRlcnM6IGJvb2xlYW47XG4gIC8qKiBJbmNsdWRlIHN0YW5kYXJkIGBSYXRlTGltaXQtKmAgaGVhZGVycyAoUkZDIDY1ODUpLiAqL1xuICByZWFkb25seSBzdGFuZGFyZEhlYWRlcnM6IGJvb2xlYW47XG59XG5cbi8qKiBQcmljZSBjb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSBiaWxsaW5nIHBsYW4gKGluIGNlbnRzKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ1BsYW5QcmljZXMge1xuICByZWFkb25seSBtb250aGx5OiBudW1iZXI7XG4gIHJlYWRvbmx5IGFubnVhbDogbnVtYmVyO1xufVxuXG4vKiogRnVsbCBiaWxsaW5nIHBsYW4gZGVmaW5pdGlvbiB1c2VkIGZvciBzZWVkaW5nIGFuZCBydW50aW1lIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdQbGFuQ29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICByZWFkb25seSB0aWVyOiBRdW90YVRpZXI7XG4gIHJlYWRvbmx5IHByaWNlczogQmlsbGluZ1BsYW5QcmljZXM7XG4gIHJlYWRvbmx5IGZlYXR1cmVzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzRGVmYXVsdDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc29ydE9yZGVyOiBudW1iZXI7XG59XG5cbi8qKlxuICogQSBwdXJjaGFzYWJsZSBhZGQtb24gYnVuZGxlOiBhIHF1YW50aXR5LXN0YWNrYWJsZSBwYWNrIHRoYXQgQUREUyB0byB0aGVcbiAqIGFjY291bnQncyBiYXNlICh0aWVyKSBsaW1pdHMgYW5kIGFkZHMgYSByZWN1cnJpbmcgbGluZSBpdGVtLiBTZWVcbiAqIGRvY3MvYmlsbGluZy1idW5kbGVzLm1kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZUNvbmZpZyB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqIFBlci11bml0IGRlbHRhcyBvbiBgUXVvdGFUaWVyTGltaXRzYCBmaWVsZHMsIGUuZy4gYHsgc2VhdHM6IDUgfWAuIEtleXMgYXJlXG4gICAqICBjb25zdHJhaW5lZCB0byByZWFsIHF1b3RhIGZpZWxkcyBzbyBhIHR5cG8gaXMgYSBjb21waWxlIGVycm9yICh3YXNcbiAgICogIGBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+YCwgd2hlcmUgYSBtaXNzcGVsbGVkIGtleSB3YXMgc2lsZW50bHkgdW5lbmZvcmNlYWJsZSkuICovXG4gIHJlYWRvbmx5IGdyYW50czogUmVhZG9ubHk8UGFydGlhbDxSZWNvcmQ8a2V5b2YgUXVvdGFUaWVyTGltaXRzLCBudW1iZXI+Pj47XG4gIC8qKiBGZWF0dXJlIGZsYWdzIGdyYW50ZWQgYnkgYSBmZWF0dXJlIGJ1bmRsZSAoZS5nLiBgYXVkaXRfbG9nYCkuICovXG4gIHJlYWRvbmx5IGZlYXR1cmVzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQZXItdW5pdCBwcmljZSAoY2VudHMpLiBTdHJpcGUgbXVsdGlwbGllcyBieSBxdWFudGl0eS4gKi9cbiAgcmVhZG9ubHkgcHJpY2VzOiBCaWxsaW5nUGxhblByaWNlcztcbiAgLyoqIFRydWUgZm9yIHN0YWNrYWJsZSByZXNvdXJjZSBwYWNrczsgZmFsc2UgZm9yIGEgYm9vbGVhbiBmZWF0dXJlIGJ1bmRsZS4gKi9cbiAgcmVhZG9ubHkgc3RhY2thYmxlOiBib29sZWFuO1xuICAvKipcbiAgICogTWF4aW11bSBwdXJjaGFzYWJsZSBxdWFudGl0eSBmb3IgYSBzdGFja2FibGUgcGFjay4gRW5mb3JjZWQgYnkgdGhlIGFkZG9uXG4gICAqIHB1cmNoYXNlL3ByZXZpZXcgcm91dGUgKGBxdWFudGl0eSDiiaQgbWF4UXVhbnRpdHlgLCByZWplY3Qgb3Zlci1jYXApLiBVc2VkIHRvXG4gICAqIGtlZXAgcmV0ZW50aW9uIHBhY2tzIHVuZGVyIHRoZSA3MzAtZGF5IHJldGVudGlvbiBjZWlsaW5nIChlLmcuIHRoZSBTdGFuZGFyZFxuICAgKiBSZXRlbnRpb24gUGFjayBjYXBzIGF0IDcgc28gMzAgKyA3w5c5MCA9IDY2MCDiiaQgNzMwKS4gQWJzZW50IOKHkiB1bmJvdW5kZWQuXG4gICAqL1xuICByZWFkb25seSBtYXhRdWFudGl0eT86IG51bWJlcjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHBlci11bml0IHZvbHVtZSBkaXNjb3VudCB0aWVycyBmb3IgYSBzdGFja2FibGUgcGFjazogYXQg4omlIGBtaW5RdWFudGl0eWBcbiAgICogcHVyY2hhc2VkIHVuaXRzLCBgZGlzY291bnRQZXJjZW50YCBjb21lcyBvZmYgdGhlIGxpbmUgc3VidG90YWwgKHVuaXQgw5cgcXVhbnRpdHkpLlxuICAgKiBUaGUgaGlnaGVzdCBtYXRjaGluZyB0aWVyIHdpbnMuIFJlYWxpemVkIGFzIGEgcmVjdXJyaW5nIHVzYWdlIGNyZWRpdCAobGlrZSBhXG4gICAqIGNvbWJvKSwgc28gdGhlIHByb3ZpZGVyIHN0aWxsIGNoYXJnZXMgdW5pdMOXcXR5IGFuZCB0aGUgY3JlZGl0IG9mZnNldHMgdGhlXG4gICAqIGJhbGFuY2UuIEVudi1vdmVycmlkYWJsZSB2aWEgYEJJTExJTkdfQlVORExFXzxJRD5fVk9MVU1FX1RJRVJTYCAoSlNPTikuIFVzZWQgYnlcbiAgICogdGhlIHBlci1zZWF0IGBzZWF0YCBidW5kbGUuIEFic2VudCDih5Igbm8gdm9sdW1lIGRpc2NvdW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdm9sdW1lVGllcnM/OiByZWFkb25seSB7IHJlYWRvbmx5IG1pblF1YW50aXR5OiBudW1iZXI7IHJlYWRvbmx5IGRpc2NvdW50UGVyY2VudDogbnVtYmVyIH1bXTtcbiAgLyoqIEJhc2UgdGllcnMgdGhpcyBidW5kbGUgaXMgb2ZmZXJlZCB0by4gKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmxlRm9yVGllcnM6IHJlYWRvbmx5IFF1b3RhVGllcltdO1xuICAvKipcbiAgICogUHJlcmVxdWlzaXRlIGJ1bmRsZSBpZHMgdGhhdCBtdXN0IGJlIGhlbGQgKG9yIHB1cmNoYXNlZCBpbiB0aGUgc2FtZSBhY3Rpb24pXG4gICAqIGJlZm9yZSB0aGlzIGJ1bmRsZSBjYW4gYmUgYWRkZWQuIEVuZm9yY2VkIGJ5IHRoZSBhZGRvbiBwdXJjaGFzZS9wcmV2aWV3IHJvdXRlXG4gICAqIChyZWplY3Qgd2l0aCA0MDAgd2hlbiB1bm1ldCk7IGEgY29tYm8gdGhhdCBpbmNsdWRlcyB0aGUgcHJlcmVxdWlzaXRlIHNhdGlzZmllc1xuICAgKiBpdC4gVXNlZCBieSBgY29tcGxpYW5jZV9hZHZhbmNlZGAgKGByZXF1aXJlczogWydjb21wbGlhbmNlX3N0YW5kYXJkJ11gKS5cbiAgICogQWJzZW50IOKHkiBubyBwcmVyZXF1aXNpdGUuXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICByZWFkb25seSBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc29ydE9yZGVyOiBudW1iZXI7XG59XG5cbi8qKlxuICogQSBjb21ibyBkaXNjb3VudDogd2hlbiBhbiBhY2NvdW50IGhvbGRzIEVWRVJZIGJ1bmRsZSBpbiBgYnVuZGxlSWRzYCwgdGhlIHBhaXJcbiAqIGlzIGJpbGxlZCBhdCBgcHJpY2VzYCAodGhlIGNvbWJpbmVkIHByaWNlKSBpbnN0ZWFkIG9mIHRoZSBzdW0gb2YgdGhlIG1lbWJlcnMnXG4gKiBpbmRpdmlkdWFsIHByaWNlcy4gUmVhbGl6ZWQgYXMgYSByZWN1cnJpbmcgdXNhZ2UgY3JlZGl0IGZvciB0aGUgZGlmZmVyZW5jZSDigJRcbiAqIG5ldmVyIGEgcHJvdmlkZXIgY291cG9uIOKAlCBjb25zaXN0ZW50IHdpdGggdGhlIHVzYWdlLWNyZWRpdCBkaXNjb3VudCBtb2RlbC4gU2VlXG4gKiBkb2NzL2JpbGxpbmctYnVuZGxlcy5tZCDCp0NvbWJvIHByaWNpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tYm9EaXNjb3VudENvbmZpZyB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBtZW1iZXIgYnVuZGxlIGlkcyB0aGF0IG11c3QgQUxMIGJlIHByZXNlbnQgZm9yIHRoZSBjb21ibyB0byBhcHBseS4gKi9cbiAgcmVhZG9ubHkgYnVuZGxlSWRzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIFBlci1tZW1iZXIgbWluaW11bSBxdWFudGl0eSAoYnVuZGxlSWQg4oaSIGNvdW50OyBhYnNlbnQg4oeSIDEpLiBMZXRzIGEgc3RhY2thYmxlXG4gICAqICBjYXBhY2l0eSBwYWNrIGFuY2hvciBhIGNvbWJvIOKAlCBlLmcuIGB7IHNlYXQ6IDUgfWAgPSBcIuKJpSA1IHNlYXRzXCIuIFRoZSBjcmVkaXRcbiAgICogIGJhc2lzIHVzZXMgdGhpcyBtaW5pbXVtLCBzbyBleHRyYSB1bml0cyBuZXZlciBpbmZsYXRlIHRoZSBkaXNjb3VudC4gKi9cbiAgcmVhZG9ubHkgbWluUXVhbnRpdGllcz86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIG51bWJlcj4+O1xuICAvKiogVGhlIGNvbWJpbmVkIHByaWNlIGZvciB0aGUgbWluaW11bSBzZXQgKGNlbnRzKS4gVGhlIGNyZWRpdCBpc1xuICAgKiAgYM6jIG1lbWJlciB1bml0IHByaWNlIMOXIG1pblF0eSDiiJIgcHJpY2VzYCwgY2xhbXBlZCDiiaUgMC4gKi9cbiAgcmVhZG9ubHkgcHJpY2VzOiBCaWxsaW5nUGxhblByaWNlcztcbiAgLyoqIERldGVybWluaXN0aWMgdGllLWJyZWFrIGFtb25nIGVxdWFsLXRvdGFsIG9wdGltYWwgcGFja2luZ3Mgd2hlbiBjb21ib3Mgb3ZlcmxhcFxuICAgKiAgKGxvd2VyIHdpbnMpLiAqL1xuICByZWFkb25seSBzb3J0T3JkZXI6IG51bWJlcjtcbiAgcmVhZG9ubHkgaXNBY3RpdmU6IGJvb2xlYW47XG59XG5cbi8qKiBCaWxsaW5nIHBsYW5zICsgYWRkLW9uIGJ1bmRsZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nQ29uZmlnIHtcbiAgcmVhZG9ubHkgcGxhbnM6IHJlYWRvbmx5IEJpbGxpbmdQbGFuQ29uZmlnW107XG4gIHJlYWRvbmx5IGJ1bmRsZXM6IHJlYWRvbmx5IEJ1bmRsZUNvbmZpZ1tdO1xuICByZWFkb25seSBjb21ib0Rpc2NvdW50czogcmVhZG9ubHkgQ29tYm9EaXNjb3VudENvbmZpZ1tdO1xufVxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFF1b3RhVGllciwgUXVvdGFUaWVyTGltaXRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIFR5cGUtc2FmZSBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZyB7XG4gIHJlYWRvbmx5IHNlcnZlcjogU2VydmVyQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBBdXRoQ29uZmlnO1xuICByZWFkb25seSBkYXRhYmFzZTogRGF0YWJhc2VDb25maWc7XG4gIHJlYWRvbmx5IHJlZ2lzdHJ5OiBSZWdpc3RyeUNvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Ib3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Qb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogQXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIGdlbmVyaWMgc2VydmljZSBzY2FmZm9sZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIHJlYWRvbmx5IGp3dDoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGVudjogYEpXVF9FWFBJUkVTX0lOYCkuXG4gICAgICpcbiAgICAgKiBUaGVyZSBpcyBubyBKV1QgU0VDUkVUIGhlcmUgYW55IG1vcmUuIEV2ZXJ5IHRva2VuIGlzIGFzeW1tZXRyaWM6IGEgdXNlclxuICAgICAqIHRva2VuIGlzIEVTMjU2IHNpZ25lZCBieSBwbGF0Zm9ybSBhbG9uZSAoYHNlcnZpY2VzL3Rva2VuLXNpZ25pbmdgKSwgYW5kIGFuXG4gICAgICogaW50ZXJuYWwgc2VydmljZSB0b2tlbiBpcyBFUzI1NiBzaWduZWQgYnkgdGhlIENBTExJTkcgc2VydmljZSB3aXRoIGl0cyBvd25cbiAgICAgKiBrZXkgKCMxNCwgYFNFUlZJQ0VfU0lHTklOR19LRVlfRklMRWAgLyBgU0VSVklDRV9LRVlfQlVORExFX0ZJTEVgKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogYmNyeXB0IHNhbHQgcm91bmRzIGZvciBwYXNzd29yZCBoYXNoaW5nIChlbnY6IGBCQ1JZUFRfU0FMVF9ST1VORFNgKS4gKi9cbiAgICByZWFkb25seSBzYWx0Um91bmRzOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHJlZnJlc2hUb2tlbjoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGVudjogYFJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTmApLiBUaGVyZSBpcyBub1xuICAgICAqIHJlZnJlc2gtdG9rZW4gU0VDUkVUIGFueSBtb3JlOiBhIHJlZnJlc2ggdG9rZW4gaXMgYSB1c2VyIHRva2VuLCBzaWduZWRcbiAgICAgKiB3aXRoIHBsYXRmb3JtJ3MgRVMyNTYga2V5IGxpa2UgZXZlcnkgb3RoZXIgY3JlZGVudGlhbCBhIHBlcnNvbiBob2xkcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogSG9zdC9wb3J0IGFuIE9VVC1PRi1DTFVTVEVSIGNsaWVudCAobm90YWJseSBBV1MgQ29kZUJ1aWxkKSB1c2VzIHRvIHB1bGxcbiAgICogcGx1Z2luIGltYWdlcywgd2hlbiBpdCBkaWZmZXJzIGZyb20gdGhlIGluLWNsdXN0ZXIgYGhvc3RgL2Bwb3J0YC4gVGhlXG4gICAqIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUCBpc24ndCByZXNvbHZhYmxlIGZyb20gdGhlIFZQQywgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENvZGVCdWlsZCBpbWFnZSBVUkkgbXVzdCBwb2ludCBhdCB0aGUgcHVibGljIGdhdGV3YXkgaW5zdGVhZC5cbiAgICogRW52OiBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCAvIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgLiBPcHRpb25hbDtcbiAgICogY29uc3VtZXJzIGZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIHdoZW4gdW5zZXQgKHNpbmdsZS1ob3N0IC9cbiAgICogaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMpLiBgbG9hZFJlZ2lzdHJ5Q29uZmlnYCBhbHdheXMgcG9wdWxhdGVzIHRoZW0uXG4gICAqL1xuICByZWFkb25seSBwdWxsSG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVsbFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkS2l0IHRhbGtzIHRvIHRoZSByZWdpc3RyeSBvdmVyIHBsYWluIEhUVFAgd2hlbiB0cnVlOyBIVFRQUyB3aXRoIHRoZVxuICAgKiBzeXN0ZW0gQ0EgYnVuZGxlIG90aGVyd2lzZS4gRW52OiBgSU1BR0VfUkVHSVNUUllfSFRUUGAgKGRlZmF1bHRzIHRydWUg4oCUXG4gICAqIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5CdWlsZENvbmZpZyB7XG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIHJlYWRvbmx5IGJhY2tvZmZEZWxheU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHdvcmtlclRpbWVvdXRNczogbnVtYmVyO1xuICByZWFkb25seSB0ZW1wRGlyTWF4QWdlTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxTWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxQmFja29mZkJhc2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRDb25maWcge1xuICAvKiogUm9vdCBkaXJlY3RvcnkgZm9yIGJ1aWxkIHRlbXAgZmlsZXMuICovXG4gIHJlYWRvbmx5IHRlbXBSb290OiBzdHJpbmc7XG4gIC8qKiBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgcmVhZG9ubHkgdGltZW91dE1zOiBudW1iZXI7XG4gIC8qKiBQdXNoIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSBwdXNoVGltZW91dE1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBidWlsZGtpdGQgc29ja2V0IHRoZSBwbHVnaW4ncyBgYnVpbGRjdGxgIGNvbm5lY3RzIHRvLiBJbiBrOHNcbiAgICogYW5kIGNvbXBvc2UgdGhpcyBpcyBhIHNoYXJlZCBlbXB0eURpci90bXBmcyB2b2x1bWUgbW91bnRlZCBmcm9tIHRoZVxuICAgKiBidWlsZGtpdGQgc2lkZWNhci5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxka2l0QWRkcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlDb25maWcge1xuICByZWFkb25seSBsb2dMZXZlbDogc3RyaW5nO1xuICByZWFkb25seSBsb2dGb3JtYXQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHJhY2luZzoge1xuICAgIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGlhbmNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgc2NhblNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIFdoZW4gZmFsc2UsIHRoZSBzY2hlZHVsZXIgc2tpcHMgc2NhbnMvc2NoZWR1bGVzIGZvciB0aGUgc3lzdGVtIG9yZy4gRGVmYXVsdDogZmFsc2UuICovXG4gIHJlYWRvbmx5IHN5c3RlbU9yZ1NjYW5zRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBzY2FuIHNjaGVkdWxlciAobXMpLiBEZWZhdWx0OiAzMDAwMDAuICovXG4gIHJlYWRvbmx5IHNjYW5Mb2NrVHRsTXM6IG51bWJlcjtcbiAgLyoqIEhvdyBvZnRlbiB0aGUgZGlnZXN0IHNjaGVkdWxlciBjaGVja3MgZm9yIGR1ZSBkaWdlc3RzIChtcykuIERlZmF1bHQ6IDM2MDAwMDAuICovXG4gIHJlYWRvbmx5IGRpZ2VzdFNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBkaWdlc3Qgc2NoZWR1bGVyIChtcykuIERlZmF1bHQ6IDMwMDAwMC4gKi9cbiAgcmVhZG9ubHkgZGlnZXN0TG9ja1R0bE1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRGVsaWJlcmF0ZWx5IGV4cHJlc3NlZCBpbiBQTEFJTiBEQVRBIChudW1iZXJzLCBzdHJpbmdzLCBzdHJpbmcgdW5pb25zKSByYXRoZXJcbiAqIHRoYW4gQ0RLIHZhbHVlIG9iamVjdHMgKGBEdXJhdGlvbmAsIGBSdW50aW1lYCwgYFJldGVudGlvbkRheXNgLCAuLi4pLiBDb25maWcgaXNcbiAqIGxvYWRlZCBieSBldmVyeSBzZXJ2aWNlLCBidXQgb25seSB0aGUgQ0RLIGVudHJ5IHBvaW50IChgQHBpcGVsaW5lLWJ1aWxkZXIvXG4gKiBwaXBlbGluZS1jb3JlL2Nka2ApIGJ1aWxkcyBzdGFja3MgIHR5cGluZyB0aGlzIGJsb2NrIHdpdGggQ0RLIGNsYXNzZXMgcHV0XG4gKiBgYXdzLWNkay1saWJgIG9uIHRoZSBpbXBvcnQgZ3JhcGggb2YgYENvbmZpZ2AsIGFuZCB0aGVyZWZvcmUgb2YgZXZlcnkgQVBJXG4gKiBzZXJ2aWNlIHRoYXQgcmVhZHMgc28gbXVjaCBhcyBhIHBvcnQgbnVtYmVyLiBDb252ZXJzaW9uIHRvIENESyBvYmplY3RzIGhhcHBlbnNcbiAqIGF0IHRoZSBjb25zdHJ1Y3QgYm91bmRhcnkgaW4gYGNvbmZpZy9hd3MtY29uZmlnLWNkay50c2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVdTQ29uZmlnIHtcbiAgcmVhZG9ubHkgbGFtYmRhOiB7XG4gICAgLyoqIExhbWJkYSBydW50aW1lIGlkZW50aWZpZXIsIGUuZy4gYCdub2RlanMyNC54J2AgKGVudjogYExBTUJEQV9SVU5USU1FYCkuICovXG4gICAgcmVhZG9ubHkgcnVudGltZTogc3RyaW5nO1xuICAgIC8qKiBGdW5jdGlvbiB0aW1lb3V0IGluIHNlY29uZHMgKGVudjogYExBTUJEQV9USU1FT1VUYCkuICovXG4gICAgcmVhZG9ubHkgdGltZW91dFNlY29uZHM6IG51bWJlcjtcbiAgICByZWFkb25seSBtZW1vcnlTaXplOiBudW1iZXI7XG4gICAgLyoqIExhbWJkYSBDUFUgYXJjaGl0ZWN0dXJlIChlbnY6IGBMQU1CREFfQVJDSElURUNUVVJFYCwgYEFSTV82NGAgb3IgYHg4Nl82NGApLiAqL1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogJ2FybTY0JyB8ICd4ODZfNjQnO1xuICAgIHJlYWRvbmx5IHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IGxvZ2dpbmc6IHtcbiAgICByZWFkb25seSBncm91cE5hbWU6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgY29kZUJ1aWxkOiB7XG4gICAgLyoqIENvZGVCdWlsZCBjb21wdXRlIHR5cGUgbmFtZSwgZS5nLiBgJ1NNQUxMJ2AgKGVudjogYENPREVCVUlMRF9DT01QVVRFX1RZUEVgKS4gKi9cbiAgICByZWFkb25seSBjb21wdXRlVHlwZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEltYWdlIHVzZWQgZm9yIENvZGVCdWlsZCBzdGVwcyB0aGF0IGRvbid0IGhhdmUgYSBwbHVnaW4tYmFrZWQgaW1hZ2VcbiAgICAgKiAoY29sZC1zdGFydCBzeW50aCBib290c3RyYXAsIFNoZWxsU3RlcHMgd2l0aCBubyByZWdpc3RyeSwgYW5kXG4gICAgICogYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMpLiBlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWAuIERlZmF1bHRcbiAgICAgKiBgcGlwZWxpbmUtYm9vdHN0cmFwOjEuMGAg4oCUIHRoZSBsb2NhbCB0YWcgYnVpbHQgYnlcbiAgICAgKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAsIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJgXG4gICAgICogYmFrZWQgaW4uXG4gICAgICpcbiAgICAgKiBDb250cmFjdDogdGhlIGltYWdlIE1VU1QgaGF2ZSBgcGlwZWxpbmUtbWFuYWdlcmAgb24gUEFUSC4gVGhlXG4gICAgICogYm9vdHN0cmFwIHN5bnRoIHBhdGggbm8gbG9uZ2VyIHNlbGYtaGVhbHMgdmlhIGBucG0gaW5zdGFsbCAtZ2A7XG4gICAgICogcG9pbnRpbmcgdGhpcyBhdCBhbiBpbWFnZSB3aXRob3V0IHRoZSB0b29sIGdldHMgZXhpdCAxMjcgb24gdGhlXG4gICAgICogZmlyc3QgY29sZC1zdGFydCBidWlsZC5cbiAgICAgKlxuICAgICAqIFJlc29sdXRpb246XG4gICAgICogLSBCYXJlIHRhZyAobm8gYC9gKSDihpIgYXV0by1wcmVmaXhlZCB0b1xuICAgICAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAgICAgKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGggKHNhbWUgZmxvdyBhc1xuICAgICAqICAgcGx1Z2luIGltYWdlcykuXG4gICAgICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApIOKGkiB1c2VkIGFzLWlzLCBub1xuICAgICAqICAgYXV0aCB3aXJlZCAob3BlcmF0b3Igb3ducyBtYWtpbmcgaXQgcHVsbGFibGUpLlxuICAgICAqIC0gV2hlbiB0aGUgcmVnaXN0cnkgaXNuJ3QgY29uZmlndXJlZCBvciBwZXItb3JnIGF1dGggaXNuJ3RcbiAgICAgKiAgIGF2YWlsYWJsZSBhdCB0aGUgY2FsbCBzaXRlLCBmYWxscyBiYWNrIHRvXG4gICAgICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjBgIHdpdGggYSB3YXJuaW5nIOKAlCBjb2xkLXN0YXJ0IHN5bnRoXG4gICAgICogICB3aWxsIHRoZW4gZmFpbCBvbiBgcGlwZWxpbmUtbWFuYWdlcjogbm90IGZvdW5kYCwgc3VyZmFjaW5nIHRoZVxuICAgICAqICAgbWlzY29uZmlndXJhdGlvbiBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSBzd2FwcGluZyBpbWFnZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdEltYWdlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKiBFeHByZXNzIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0Q29uZmlnIHtcbiAgLyoqIE1heGltdW0gcmVxdWVzdHMgcGVyIHdpbmRvdyAoZW52OiBgTElNSVRFUl9NQVhgKS4gKi9cbiAgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gIC8qKiBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtaWxsaXNlY29uZHMgKGVudjogYExJTUlURVJfV0lORE9XTVNgKS4gKi9cbiAgcmVhZG9ubHkgd2luZG93TXM6IG51bWJlcjtcbiAgLyoqIEluY2x1ZGUgbGVnYWN5IGBYLVJhdGVMaW1pdC0qYCBoZWFkZXJzLiAqL1xuICByZWFkb25seSBsZWdhY3lIZWFkZXJzOiBib29sZWFuO1xuICAvKiogSW5jbHVkZSBzdGFuZGFyZCBgUmF0ZUxpbWl0LSpgIGhlYWRlcnMgKFJGQyA2NTg1KS4gKi9cbiAgcmVhZG9ubHkgc3RhbmRhcmRIZWFkZXJzOiBib29sZWFuO1xufVxuXG4vKiogUHJpY2UgY29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgYmlsbGluZyBwbGFuIChpbiBjZW50cykuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdQbGFuUHJpY2VzIHtcbiAgcmVhZG9ubHkgbW9udGhseTogbnVtYmVyO1xuICByZWFkb25seSBhbm51YWw6IG51bWJlcjtcbn1cblxuLyoqIEZ1bGwgYmlsbGluZyBwbGFuIGRlZmluaXRpb24gdXNlZCBmb3Igc2VlZGluZyBhbmQgcnVudGltZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhbkNvbmZpZyB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGllcjogUXVvdGFUaWVyO1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICByZWFkb25seSBmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgcHVyY2hhc2FibGUgYWRkLW9uIGJ1bmRsZTogYSBxdWFudGl0eS1zdGFja2FibGUgcGFjayB0aGF0IEFERFMgdG8gdGhlXG4gKiBhY2NvdW50J3MgYmFzZSAodGllcikgbGltaXRzIGFuZCBhZGRzIGEgcmVjdXJyaW5nIGxpbmUgaXRlbS4gU2VlXG4gKiBkb2NzL2JpbGxpbmctYnVuZGxlcy5tZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVDb25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBQZXItdW5pdCBkZWx0YXMgb24gYFF1b3RhVGllckxpbWl0c2AgZmllbGRzLCBlLmcuIGB7IHNlYXRzOiA1IH1gLiBLZXlzIGFyZVxuICAgKiAgY29uc3RyYWluZWQgdG8gcmVhbCBxdW90YSBmaWVsZHMgc28gYSB0eXBvIGlzIGEgY29tcGlsZSBlcnJvciAod2FzXG4gICAqICBgUmVjb3JkPHN0cmluZywgbnVtYmVyPmAsIHdoZXJlIGEgbWlzc3BlbGxlZCBrZXkgd2FzIHNpbGVudGx5IHVuZW5mb3JjZWFibGUpLiAqL1xuICByZWFkb25seSBncmFudHM6IFJlYWRvbmx5PFBhcnRpYWw8UmVjb3JkPGtleW9mIFF1b3RhVGllckxpbWl0cywgbnVtYmVyPj4+O1xuICAvKiogRmVhdHVyZSBmbGFncyBncmFudGVkIGJ5IGEgZmVhdHVyZSBidW5kbGUgKGUuZy4gYGF1ZGl0X2xvZ2ApLiAqL1xuICByZWFkb25seSBmZWF0dXJlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogUGVyLXVuaXQgcHJpY2UgKGNlbnRzKS4gU3RyaXBlIG11bHRpcGxpZXMgYnkgcXVhbnRpdHkuICovXG4gIHJlYWRvbmx5IHByaWNlczogQmlsbGluZ1BsYW5QcmljZXM7XG4gIC8qKiBUcnVlIGZvciBzdGFja2FibGUgcmVzb3VyY2UgcGFja3M7IGZhbHNlIGZvciBhIGJvb2xlYW4gZmVhdHVyZSBidW5kbGUuICovXG4gIHJlYWRvbmx5IHN0YWNrYWJsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE1heGltdW0gcHVyY2hhc2FibGUgcXVhbnRpdHkgZm9yIGEgc3RhY2thYmxlIHBhY2suIEVuZm9yY2VkIGJ5IHRoZSBhZGRvblxuICAgKiBwdXJjaGFzZS9wcmV2aWV3IHJvdXRlIChgcXVhbnRpdHkg4omkIG1heFF1YW50aXR5YCwgcmVqZWN0IG92ZXItY2FwKS4gVXNlZCB0b1xuICAgKiBrZWVwIHJldGVudGlvbiBwYWNrcyB1bmRlciB0aGUgNzMwLWRheSByZXRlbnRpb24gY2VpbGluZyAoZS5nLiB0aGUgU3RhbmRhcmRcbiAgICogUmV0ZW50aW9uIFBhY2sgY2FwcyBhdCA3IHNvIDMwICsgN8OXOTAgPSA2NjAg4omkIDczMCkuIEFic2VudCDih5IgdW5ib3VuZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UXVhbnRpdHk/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBwZXItdW5pdCB2b2x1bWUgZGlzY291bnQgdGllcnMgZm9yIGEgc3RhY2thYmxlIHBhY2s6IGF0IOKJpSBgbWluUXVhbnRpdHlgXG4gICAqIHB1cmNoYXNlZCB1bml0cywgYGRpc2NvdW50UGVyY2VudGAgY29tZXMgb2ZmIHRoZSBsaW5lIHN1YnRvdGFsICh1bml0IMOXIHF1YW50aXR5KS5cbiAgICogVGhlIGhpZ2hlc3QgbWF0Y2hpbmcgdGllciB3aW5zLiBSZWFsaXplZCBhcyBhIHJlY3VycmluZyB1c2FnZSBjcmVkaXQgKGxpa2UgYVxuICAgKiBjb21ibyksIHNvIHRoZSBwcm92aWRlciBzdGlsbCBjaGFyZ2VzIHVuaXTDl3F0eSBhbmQgdGhlIGNyZWRpdCBvZmZzZXRzIHRoZVxuICAgKiBiYWxhbmNlLiBFbnYtb3ZlcnJpZGFibGUgdmlhIGBCSUxMSU5HX0JVTkRMRV88SUQ+X1ZPTFVNRV9USUVSU2AgKEpTT04pLiBVc2VkIGJ5XG4gICAqIHRoZSBwZXItc2VhdCBgc2VhdGAgYnVuZGxlLiBBYnNlbnQg4oeSIG5vIHZvbHVtZSBkaXNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZVRpZXJzPzogcmVhZG9ubHkgeyByZWFkb25seSBtaW5RdWFudGl0eTogbnVtYmVyOyByZWFkb25seSBkaXNjb3VudFBlcmNlbnQ6IG51bWJlciB9W107XG4gIC8qKiBCYXNlIHRpZXJzIHRoaXMgYnVuZGxlIGlzIG9mZmVyZWQgdG8uICovXG4gIHJlYWRvbmx5IGF2YWlsYWJsZUZvclRpZXJzOiByZWFkb25seSBRdW90YVRpZXJbXTtcbiAgLyoqXG4gICAqIFByZXJlcXVpc2l0ZSBidW5kbGUgaWRzIHRoYXQgbXVzdCBiZSBoZWxkIChvciBwdXJjaGFzZWQgaW4gdGhlIHNhbWUgYWN0aW9uKVxuICAgKiBiZWZvcmUgdGhpcyBidW5kbGUgY2FuIGJlIGFkZGVkLiBFbmZvcmNlZCBieSB0aGUgYWRkb24gcHVyY2hhc2UvcHJldmlldyByb3V0ZVxuICAgKiAocmVqZWN0IHdpdGggNDAwIHdoZW4gdW5tZXQpOyBhIGNvbWJvIHRoYXQgaW5jbHVkZXMgdGhlIHByZXJlcXVpc2l0ZSBzYXRpc2ZpZXNcbiAgICogaXQuIFVzZWQgYnkgYGNvbXBsaWFuY2VfYWR2YW5jZWRgIChgcmVxdWlyZXM6IFsnY29tcGxpYW5jZV9zdGFuZGFyZCddYCkuXG4gICAqIEFic2VudCDih5Igbm8gcHJlcmVxdWlzaXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXM/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgY29tYm8gZGlzY291bnQ6IHdoZW4gYW4gYWNjb3VudCBob2xkcyBFVkVSWSBidW5kbGUgaW4gYGJ1bmRsZUlkc2AsIHRoZSBwYWlyXG4gKiBpcyBiaWxsZWQgYXQgYHByaWNlc2AgKHRoZSBjb21iaW5lZCBwcmljZSkgaW5zdGVhZCBvZiB0aGUgc3VtIG9mIHRoZSBtZW1iZXJzJ1xuICogaW5kaXZpZHVhbCBwcmljZXMuIFJlYWxpemVkIGFzIGEgcmVjdXJyaW5nIHVzYWdlIGNyZWRpdCBmb3IgdGhlIGRpZmZlcmVuY2Ug4oCUXG4gKiBuZXZlciBhIHByb3ZpZGVyIGNvdXBvbiDigJQgY29uc2lzdGVudCB3aXRoIHRoZSB1c2FnZS1jcmVkaXQgZGlzY291bnQgbW9kZWwuIFNlZVxuICogZG9jcy9iaWxsaW5nLWJ1bmRsZXMubWQgwqdDb21ibyBwcmljaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbWJvRGlzY291bnRDb25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgbWVtYmVyIGJ1bmRsZSBpZHMgdGhhdCBtdXN0IEFMTCBiZSBwcmVzZW50IGZvciB0aGUgY29tYm8gdG8gYXBwbHkuICovXG4gIHJlYWRvbmx5IGJ1bmRsZUlkczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQZXItbWVtYmVyIG1pbmltdW0gcXVhbnRpdHkgKGJ1bmRsZUlkIOKGkiBjb3VudDsgYWJzZW50IOKHkiAxKS4gTGV0cyBhIHN0YWNrYWJsZVxuICAgKiAgY2FwYWNpdHkgcGFjayBhbmNob3IgYSBjb21ibyDigJQgZS5nLiBgeyBzZWF0OiA1IH1gID0gXCLiiaUgNSBzZWF0c1wiLiBUaGUgY3JlZGl0XG4gICAqICBiYXNpcyB1c2VzIHRoaXMgbWluaW11bSwgc28gZXh0cmEgdW5pdHMgbmV2ZXIgaW5mbGF0ZSB0aGUgZGlzY291bnQuICovXG4gIHJlYWRvbmx5IG1pblF1YW50aXRpZXM/OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PjtcbiAgLyoqIFRoZSBjb21iaW5lZCBwcmljZSBmb3IgdGhlIG1pbmltdW0gc2V0IChjZW50cykuIFRoZSBjcmVkaXQgaXNcbiAgICogIGDOoyBtZW1iZXIgdW5pdCBwcmljZSDDlyBtaW5RdHkg4oiSIHByaWNlc2AsIGNsYW1wZWQg4omlIDAuICovXG4gIHJlYWRvbmx5IHByaWNlczogQmlsbGluZ1BsYW5QcmljZXM7XG4gIC8qKiBEZXRlcm1pbmlzdGljIHRpZS1icmVhayBhbW9uZyBlcXVhbC10b3RhbCBvcHRpbWFsIHBhY2tpbmdzIHdoZW4gY29tYm9zIG92ZXJsYXBcbiAgICogIChsb3dlciB3aW5zKS4gKi9cbiAgcmVhZG9ubHkgc29ydE9yZGVyOiBudW1iZXI7XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xufVxuXG4vKiogQmlsbGluZyBwbGFucyArIGFkZC1vbiBidW5kbGUgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ0NvbmZpZyB7XG4gIHJlYWRvbmx5IHBsYW5zOiByZWFkb25seSBCaWxsaW5nUGxhbkNvbmZpZ1tdO1xuICByZWFkb25seSBidW5kbGVzOiByZWFkb25seSBCdW5kbGVDb25maWdbXTtcbiAgcmVhZG9ubHkgY29tYm9EaXNjb3VudHM6IHJlYWRvbmx5IENvbWJvRGlzY291bnRDb25maWdbXTtcbn1cbiJdfQ==
@@ -56,8 +56,6 @@ export declare function loadDockerConfig(): BuildConfig;
56
56
  * - `LAMBDA_MEMORY_SIZE` — Lambda memory in MB (default: `512`)
57
57
  * - `LAMBDA_ARCHITECTURE` — `'x86_64'` or ARM (default: ARM_64)
58
58
  * - `LOG_GROUP_NAME` — CloudWatch log group (default: `'/pipeline-builder/logs'`)
59
- * - `LOG_RETENTION` — Log retention in days (default: `7`)
60
- * - `LOG_REMOVAL_POLICY` — `'RETAIN'` or destroy (default: DESTROY)
61
59
  * - `CODEBUILD_COMPUTE_TYPE` — CodeBuild compute type (default: `'SMALL'`)
62
60
  *
63
61
  * @returns AWS infrastructure configuration
@@ -140,8 +140,6 @@ export function loadDockerConfig() {
140
140
  * - `LAMBDA_MEMORY_SIZE` — Lambda memory in MB (default: `512`)
141
141
  * - `LAMBDA_ARCHITECTURE` — `'x86_64'` or ARM (default: ARM_64)
142
142
  * - `LOG_GROUP_NAME` — CloudWatch log group (default: `'/pipeline-builder/logs'`)
143
- * - `LOG_RETENTION` — Log retention in days (default: `7`)
144
- * - `LOG_REMOVAL_POLICY` — `'RETAIN'` or destroy (default: DESTROY)
145
143
  * - `CODEBUILD_COMPUTE_TYPE` — CodeBuild compute type (default: `'SMALL'`)
146
144
  *
147
145
  * @returns AWS infrastructure configuration
@@ -159,8 +157,6 @@ export function loadAWSConfig() {
159
157
  },
160
158
  logging: {
161
159
  groupName: process.env.LOG_GROUP_NAME || '/pipeline-builder/logs',
162
- retentionDays: parseRetentionDays(process.env.LOG_RETENTION || '7'),
163
- removalPolicy: process.env.LOG_REMOVAL_POLICY === 'RETAIN' ? 'retain' : 'destroy',
164
160
  },
165
161
  codeBuild: {
166
162
  computeType: (process.env.CODEBUILD_COMPUTE_TYPE || 'SMALL').toUpperCase(),
@@ -168,24 +164,4 @@ export function loadAWSConfig() {
168
164
  },
169
165
  };
170
166
  }
171
- /**
172
- * Valid CloudWatch Logs retention periods, in days. Mirrors the day counts of
173
- * CDK's `RetentionDays` enum (whose members ARE the day counts), but written out
174
- * so this module stays free of `aws-cdk-lib` see the note on {@link AWSConfig}.
175
- * `0` is CDK's `INFINITE` (never expire).
176
- */
177
- const VALID_RETENTION_DAYS = new Set([
178
- 0, 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731,
179
- 1096, 1827, 2192, 2557, 2922, 3288, 3653,
180
- ]);
181
- /**
182
- * Parse a log-retention string into a valid CloudWatch retention day count.
183
- *
184
- * @param days - Retention period in days as a string (e.g. `'30'`)
185
- * @returns the day count; falls back to 1 day for unknown/invalid values
186
- */
187
- function parseRetentionDays(days) {
188
- const parsed = parseInt(days, 10);
189
- return VALID_RETENTION_DAYS.has(parsed) ? parsed : 1;
190
- }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9pbmZyYXN0cnVjdHVyZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFHeEI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksVUFBVSxDQUFDO0lBQzNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLDhFQUE4RTtJQUM5RSw0RUFBNEU7SUFDNUUsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLE9BQU87UUFDTCxJQUFJO1FBQ0osSUFBSTtRQUNKLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixJQUFJLFFBQVEsRUFBRSxJQUFJLElBQUksSUFBSTtRQUN4RSxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0I7WUFDNUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztRQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRTtRQUN6QyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsS0FBSyxPQUFPO0tBQ2xELENBQUM7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RUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUM7WUFDbkUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDbEY7UUFFRCxTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUMxRSxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSx3QkFBd0I7U0FDOUU7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ2hFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDekMsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxTQUFTLGtCQUFrQixDQUFDLElBQVk7SUFDdEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxPQUFPLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB0eXBlIHsgQVdTQ29uZmlnLCBCdWlsZENvbmZpZywgQ29tcGxpYW5jZUNvbmZpZywgRGF0YWJhc2VDb25maWcsIE9ic2VydmFiaWxpdHlDb25maWcsIFBsdWdpbkJ1aWxkQ29uZmlnLCBSZWdpc3RyeUNvbmZpZyB9IGZyb20gJy4vY29uZmlnLXR5cGVzLmpzJztcblxuLyoqXG4gKiBMb2FkIERvY2tlciByZWdpc3RyeSBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYElNQUdFX1JFR0lTVFJZX0hPU1RgIOKAlCBSZWdpc3RyeSBob3N0bmFtZSAoZGVmYXVsdDogYCdyZWdpc3RyeSdgKVxuICogLSBgSU1BR0VfUkVHSVNUUllfUE9SVGAg4oCUIFJlZ2lzdHJ5IHBvcnQgKGRlZmF1bHQ6IGA1MDAwYClcbiAqIC0gYElNQUdFX1JFR0lTVFJZX1BVTExfSE9TVGAg4oCUIEhvc3QgYW4gb3V0LW9mLWNsdXN0ZXIgY2xpZW50IChDb2RlQnVpbGQpXG4gKiAgIHVzZXMgdG8gcHVsbCBwbHVnaW4gaW1hZ2VzLiBXaGVuIHVuc2V0LCBkZXJpdmVkIGZyb20gYFBMQVRGT1JNX0JBU0VfVVJMYCdzXG4gKiAgIGhvc3QgKHRoZSBwdWJsaWMgZW5kcG9pbnQgQ29kZUJ1aWxkIGNhbiByZXNvbHZlKSwgdGhlbiBgSU1BR0VfUkVHSVNUUllfSE9TVGAuXG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgIOKAlCBQb3J0IGZvciB0aGUgYWJvdmUuIFdoZW4gdW5zZXQsIGRlcml2ZWQgZnJvbVxuICogICBgUExBVEZPUk1fQkFTRV9VUkxgJ3MgcG9ydCwgdGhlbiBgSU1BR0VfUkVHSVNUUllfUE9SVGAuXG4gKiAtIGBET0NLRVJfTkVUV09SS2Ag4oCUIERvY2tlciBuZXR3b3JrIGZvciBidWlsZC9wdXNoIChkZWZhdWx0OiBgJydgKVxuICogLSBgSU1BR0VfUkVHSVNUUllfSFRUUGAg4oCUIFVzZSBwbGFpbiBIVFRQIGluc3RlYWQgb2YgSFRUUFMgKGRlZmF1bHQ6IGB0cnVlYCxcbiAqICAgdGhlIGluLWNsdXN0ZXIgcmVnaXN0cnkgaGFzIG5vIFRMUykuXG4gKlxuICogQHJldHVybnMgUmVnaXN0cnkgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlZ2lzdHJ5Q29uZmlnKCk6IFJlZ2lzdHJ5Q29uZmlnIHtcbiAgY29uc3QgaG9zdCA9IHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX0hPU1QgfHwgJ3JlZ2lzdHJ5JztcbiAgY29uc3QgcG9ydCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX1BPUlQgfHwgJzUwMDAnLCAxMCk7XG4gIC8vIFdoZW4gbm8gZXhwbGljaXQgcHVsbCBob3N0IGlzIHNldCwgZGVyaXZlIGl0IGZyb20gUExBVEZPUk1fQkFTRV9VUkwg4oCUIHRoZVxuICAvLyBwdWJsaWMgcGxhdGZvcm0gZW5kcG9pbnQgYW4gb3V0LW9mLWNsdXN0ZXIgY2xpZW50IChBV1MgQ29kZUJ1aWxkKSBjYW5cbiAgLy8gcmVzb2x2ZSwgdW5saWtlIHRoZSBpbi1jbHVzdGVyIGByZWdpc3RyeWAgQ2x1c3RlcklQLiBPbmx5IGZhbGxzIGJhY2sgdG8gdGhlXG4gIC8vIGluLWNsdXN0ZXIgaG9zdCB3aGVuIFBMQVRGT1JNX0JBU0VfVVJMIGlzIHVuc2V0L3VucGFyc2VhYmxlIChlLmcuIGxvY2FsKS5cbiAgY29uc3QgcGxhdGZvcm0gPSBwYXJzZVBsYXRmb3JtQmFzZVVybChwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCk7XG4gIHJldHVybiB7XG4gICAgaG9zdCxcbiAgICBwb3J0LFxuICAgIHB1bGxIb3N0OiBwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9QVUxMX0hPU1QgfHwgcGxhdGZvcm0/Lmhvc3QgfHwgaG9zdCxcbiAgICBwdWxsUG9ydDogcHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfUFVMTF9QT1JUXG4gICAgICA/IHBhcnNlSW50KHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX1BVTExfUE9SVCwgMTApXG4gICAgICA6IChwbGF0Zm9ybT8ucG9ydCA/PyBwb3J0KSxcbiAgICBuZXR3b3JrOiBwcm9jZXNzLmVudi5ET0NLRVJfTkVUV09SSyB8fCAnJyxcbiAgICBodHRwOiBwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9IVFRQICE9PSAnZmFsc2UnLFxuICB9O1xufVxuXG4vKiogRXh0cmFjdCBob3N0ICsgcG9ydCBmcm9tIFBMQVRGT1JNX0JBU0VfVVJMIChlLmcuIGBodHRwczovL3BpcGVsaW5lLWJ1aWxkZXIuY29tYFxuICogIOKGkiBgeyBob3N0OiAncGlwZWxpbmUtYnVpbGRlci5jb20nLCBwb3J0OiA0NDMgfWApLiBSZXR1cm5zIG51bGwgd2hlbiB0aGUgdmFsdWVcbiAqICBpcyB1bnNldCBvciBub3QgYSB2YWxpZCBVUkwuIEV4cG9ydGVkIHNvIHRoZSBDTEkgKHBpcGVsaW5lLW1hbmFnZXIpIGRlcml2ZXNcbiAqICB0aGUgcmVnaXN0cnkgcHVsbCB0YXJnZXQgd2l0aCB0aGUgU0FNRSBwYXJzaW5nLCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGxhdGZvcm1CYXNlVXJsKHJhdz86IHN0cmluZyk6IHsgaG9zdDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfSB8IG51bGwge1xuICBpZiAoIXJhdykgcmV0dXJuIG51bGw7XG4gIHRyeSB7XG4gICAgY29uc3QgdSA9IG5ldyBVUkwocmF3KTtcbiAgICAvLyBBIHNjaGVtZS1sZXNzIHZhbHVlIGxpa2UgYGhvc3Q6ODQ0M2AgcGFyc2VzIHdpdGggYSBjdXN0b20gcHJvdG9jb2wgYW5kIGFuXG4gICAgLy8gRU1QVFkgaG9zdG5hbWUg4oCUIHJlamVjdCBpdCBzbyBjYWxsZXJzIGZhbGwgYmFjayByYXRoZXIgdGhhbiBkZXJpdmUgYVxuICAgIC8vIGhvc3QtbGVzcyBlbmRwb2ludC5cbiAgICBpZiAoIXUuaG9zdG5hbWUpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHBvcnQgPSB1LnBvcnQgPyBwYXJzZUludCh1LnBvcnQsIDEwKSA6ICh1LnByb3RvY29sID09PSAnaHR0cHM6JyA/IDQ0MyA6IDgwKTtcbiAgICByZXR1cm4geyBob3N0OiB1Lmhvc3RuYW1lLCBwb3J0IH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogTG9hZCBwbHVnaW4gYnVpbGQgcXVldWUgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBQTFVHSU5fQlVJTERfQ09OQ1VSUkVOQ1lgIOKAlCBNYXggY29uY3VycmVudCBwbHVnaW4gYnVpbGRzIChkZWZhdWx0OiBgMWApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUGx1Z2luQnVpbGRDb25maWcoKTogUGx1Z2luQnVpbGRDb25maWcge1xuICByZXR1cm4ge1xuICAgIGNvbmN1cnJlbmN5OiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfQ09OQ1VSUkVOQ1kgfHwgJzEnLCAxMCksXG4gICAgbWF4QXR0ZW1wdHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9CVUlMRF9NQVhfQVRURU1QVFMgfHwgJzInLCAxMCksXG4gICAgYmFja29mZkRlbGF5TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9CVUlMRF9CQUNLT0ZGX0RFTEFZX01TIHx8ICc1MDAwJywgMTApLFxuICAgIHdvcmtlclRpbWVvdXRNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX1dPUktFUl9USU1FT1VUX01TIHx8ICcxMDAwMCcsIDEwKSxcbiAgICB0ZW1wRGlyTWF4QWdlTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlRFTVBfRElSX01BWF9BR0VfTVMgfHwgJzE0NDAwMDAwJywgMTApLFxuICAgIGRscU1heEF0dGVtcHRzOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fRExRX01BWF9BVFRFTVBUUyB8fCAnMycsIDEwKSxcbiAgICBkbHFCYWNrb2ZmQmFzZU1zOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fRExRX0JBQ0tPRkZfQkFTRV9NUyB8fCAnMzAwMDAwJywgMTApLFxuICAgIGRscU1heFNpemU6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9ETFFfTUFYX1NJWkUgfHwgJzIwJywgMTApLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZERhdGFiYXNlQ29uZmlnKCk6IERhdGFiYXNlQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBwb3N0Z3Jlczoge1xuICAgICAgaG9zdDogcHJvY2Vzcy5lbnYuREJfSE9TVCB8fCAncG9zdGdyZXMnLFxuICAgICAgcG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuREJfUE9SVCB8fCAnNTQzMicsIDEwKSxcbiAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5EQVRBQkFTRSB8fCAncGlwZWxpbmVfYnVpbGRlcicsXG4gICAgICB1c2VyOiBwcm9jZXNzLmVudi5EQl9VU0VSIHx8ICdwb3N0Z3JlcycsXG4gICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuREJfUEFTU1dPUkQgfHwgJycsXG4gICAgfSxcbiAgICBkcml6emxlOiB7XG4gICAgICBtYXhQb29sU2l6ZTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRFJJWlpMRV9NQVhfUE9PTF9TSVpFIHx8ICcyMCcsIDEwKSxcbiAgICAgIGlkbGVUaW1lb3V0TWlsbGlzOiBwYXJzZUludChwcm9jZXNzLmVudi5EUklaWkxFX0lETEVfVElNRU9VVF9NSUxMSVMgfHwgJzMwMDAwJywgMTApLFxuICAgICAgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRSSVpaTEVfQ09OTkVDVElPTl9USU1FT1VUX01JTExJUyB8fCAnMTAwMDAnLCAxMCksXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRPYnNlcnZhYmlsaXR5Q29uZmlnKCk6IE9ic2VydmFiaWxpdHlDb25maWcge1xuICByZXR1cm4ge1xuICAgIGxvZ0xldmVsOiBwcm9jZXNzLmVudi5MT0dfTEVWRUwgfHwgJ2luZm8nLFxuICAgIGxvZ0Zvcm1hdDogcHJvY2Vzcy5lbnYuTE9HX0ZPUk1BVCB8fCAnanNvbicsXG4gICAgc2VydmljZU5hbWU6IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAnYXBpJyxcbiAgICB0cmFjaW5nOiB7XG4gICAgICBlbmFibGVkOiBwcm9jZXNzLmVudi5PVEVMX1RSQUNJTkdfRU5BQkxFRCA9PT0gJ3RydWUnLFxuICAgICAgZW5kcG9pbnQ6IHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVCB8fCAnaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL3RyYWNlcycsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRDb21wbGlhbmNlQ29uZmlnKCk6IENvbXBsaWFuY2VDb25maWcge1xuICByZXR1cm4ge1xuICAgIHNjYW5TY2hlZHVsZXJJbnRlcnZhbE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5TQ0FOX1NDSEVEVUxFUl9JTlRFUlZBTF9NUyB8fCAnNjAwMDAnLCAxMCksXG4gICAgc3lzdGVtT3JnU2NhbnNFbmFibGVkOiBwcm9jZXNzLmVudi5TWVNURU1fT1JHX1NDQU5TX0VOQUJMRUQgPT09ICd0cnVlJyxcbiAgICBzY2FuTG9ja1R0bE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5TQ0FOX0xPQ0tfVFRMX01TIHx8ICczMDAwMDAnLCAxMCksXG4gICAgZGlnZXN0U2NoZWR1bGVySW50ZXJ2YWxNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRElHRVNUX1NDSEVEVUxFUl9JTlRFUlZBTF9NUyB8fCAnMzYwMDAwMCcsIDEwKSxcbiAgICBkaWdlc3RMb2NrVHRsTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRJR0VTVF9MT0NLX1RUTF9NUyB8fCAnMzAwMDAwJywgMTApLFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgcGx1Z2luIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIEJ1aWxkcyBydW4gYWdhaW5zdCBhIHJvb3RsZXNzIGBtb2J5L2J1aWxka2l0YFxuICogc2lkZWNhciDigJQgc2VlIGBCVUlMREtJVF9IT1NUYC5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBET0NLRVJfQlVJTERfVEVNUF9ST09UYCDigJQgVGVtcCBkaXJlY3RvcnkgZm9yIGJ1aWxkIGNvbnRleHRzIChkZWZhdWx0OiBgPGN3ZD4vdG1wYClcbiAqIC0gYERPQ0tFUl9CVUlMRF9USU1FT1VUX01TYCDigJQgQnVpbGQgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKGRlZmF1bHQ6IGA5MDAwMDBgIC8gMTUgbWluKVxuICogLSBgRE9DS0VSX1BVU0hfVElNRU9VVF9NU2Ag4oCUIFB1c2ggdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKGRlZmF1bHQ6IGAzMDAwMDBgIC8gNSBtaW4pXG4gKiAtIGBCVUlMREtJVF9IT1NUYCDigJQgYnVpbGRjdGwgYC0tYWRkcmAgdmFsdWUgZm9yIHRoZSBidWlsZGtpdGQgc2lkZWNhclxuICogICAoZGVmYXVsdDogYHVuaXg6Ly8vcnVuL2J1aWxka2l0L2J1aWxka2l0ZC5zb2NrYClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWREb2NrZXJDb25maWcoKTogQnVpbGRDb25maWcge1xuICByZXR1cm4ge1xuICAgIHRlbXBSb290OiBwcm9jZXNzLmVudi5ET0NLRVJfQlVJTERfVEVNUF9ST09UIHx8IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAndG1wJyksXG4gICAgdGltZW91dE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5ET0NLRVJfQlVJTERfVElNRU9VVF9NUyB8fCAnOTAwMDAwJywgMTApLFxuICAgIHB1c2hUaW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRPQ0tFUl9QVVNIX1RJTUVPVVRfTVMgfHwgJzMwMDAwMCcsIDEwKSxcbiAgICBidWlsZGtpdEFkZHI6IHByb2Nlc3MuZW52LkJVSUxES0lUX0hPU1QgfHwgJ3VuaXg6Ly8vcnVuL2J1aWxka2l0L2J1aWxka2l0ZC5zb2NrJyxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIEFXUyBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYExBTUJEQV9SVU5USU1FYCDigJQgTGFtYmRhIHJ1bnRpbWUgKGRlZmF1bHQ6IGAnbm9kZWpzMjQueCdgOyB1bmtub3duIHZhbHVlcyBmYWxsIGJhY2sgdG8gaXQpXG4gKiAtIGBMQU1CREFfVElNRU9VVGAg4oCUIExhbWJkYSB0aW1lb3V0IGluIHNlY29uZHMgKGRlZmF1bHQ6IGA5MDBgKVxuICogLSBgTEFNQkRBX01FTU9SWV9TSVpFYCDigJQgTGFtYmRhIG1lbW9yeSBpbiBNQiAoZGVmYXVsdDogYDUxMmApXG4gKiAtIGBMQU1CREFfQVJDSElURUNUVVJFYCDigJQgYCd4ODZfNjQnYCBvciBBUk0gKGRlZmF1bHQ6IEFSTV82NClcbiAqIC0gYExPR19HUk9VUF9OQU1FYCDigJQgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgKGRlZmF1bHQ6IGAnL3BpcGVsaW5lLWJ1aWxkZXIvbG9ncydgKVxuICogLSBgTE9HX1JFVEVOVElPTmAg4oCUIExvZyByZXRlbnRpb24gaW4gZGF5cyAoZGVmYXVsdDogYDdgKVxuICogLSBgTE9HX1JFTU9WQUxfUE9MSUNZYCDigJQgYCdSRVRBSU4nYCBvciBkZXN0cm95IChkZWZhdWx0OiBERVNUUk9ZKVxuICogLSBgQ09ERUJVSUxEX0NPTVBVVEVfVFlQRWAg4oCUIENvZGVCdWlsZCBjb21wdXRlIHR5cGUgKGRlZmF1bHQ6IGAnU01BTEwnYClcbiAqXG4gKiBAcmV0dXJucyBBV1MgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFXU0NvbmZpZygpOiBBV1NDb25maWcge1xuICByZXR1cm4ge1xuICAgIGxhbWJkYToge1xuICAgICAgcnVudGltZTogcHJvY2Vzcy5lbnYuTEFNQkRBX1JVTlRJTUUgfHwgJ25vZGVqczI0LngnLFxuICAgICAgdGltZW91dFNlY29uZHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxBTUJEQV9USU1FT1VUIHx8ICc5MDAnLCAxMCksXG4gICAgICBtZW1vcnlTaXplOiBwYXJzZUludChwcm9jZXNzLmVudi5MQU1CREFfTUVNT1JZX1NJWkUgfHwgJzUxMicsIDEwKSxcbiAgICAgIGFyY2hpdGVjdHVyZTogcHJvY2Vzcy5lbnYuTEFNQkRBX0FSQ0hJVEVDVFVSRSA9PT0gJ3g4Nl82NCcgPyAneDg2XzY0JyA6ICdhcm02NCcsXG4gICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiBwcm9jZXNzLmVudi5MQU1CREFfUkVTRVJWRURfQ09OQ1VSUkVOQ1lcbiAgICAgICAgPyBwYXJzZUludChwcm9jZXNzLmVudi5MQU1CREFfUkVTRVJWRURfQ09OQ1VSUkVOQ1ksIDEwKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9LFxuXG4gICAgbG9nZ2luZzoge1xuICAgICAgZ3JvdXBOYW1lOiBwcm9jZXNzLmVudi5MT0dfR1JPVVBfTkFNRSB8fCAnL3BpcGVsaW5lLWJ1aWxkZXIvbG9ncycsXG4gICAgICByZXRlbnRpb25EYXlzOiBwYXJzZVJldGVudGlvbkRheXMocHJvY2Vzcy5lbnYuTE9HX1JFVEVOVElPTiB8fCAnNycpLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvY2Vzcy5lbnYuTE9HX1JFTU9WQUxfUE9MSUNZID09PSAnUkVUQUlOJyA/ICdyZXRhaW4nIDogJ2Rlc3Ryb3knLFxuICAgIH0sXG5cbiAgICBjb2RlQnVpbGQ6IHtcbiAgICAgIGNvbXB1dGVUeXBlOiAocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0NPTVBVVEVfVFlQRSB8fCAnU01BTEwnKS50b1VwcGVyQ2FzZSgpLFxuICAgICAgZGVmYXVsdEltYWdlOiBwcm9jZXNzLmVudi5DT0RFQlVJTERfREVGQVVMVF9JTUFHRSB8fCAncGlwZWxpbmUtYm9vdHN0cmFwOjEuMCcsXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZCBDbG91ZFdhdGNoIExvZ3MgcmV0ZW50aW9uIHBlcmlvZHMsIGluIGRheXMuIE1pcnJvcnMgdGhlIGRheSBjb3VudHMgb2ZcbiAqIENESydzIGBSZXRlbnRpb25EYXlzYCBlbnVtICh3aG9zZSBtZW1iZXJzIEFSRSB0aGUgZGF5IGNvdW50cyksIGJ1dCB3cml0dGVuIG91dFxuICogc28gdGhpcyBtb2R1bGUgc3RheXMgZnJlZSBvZiBgYXdzLWNkay1saWJgICBzZWUgdGhlIG5vdGUgb24ge0BsaW5rIEFXU0NvbmZpZ30uXG4gKiBgMGAgaXMgQ0RLJ3MgYElORklOSVRFYCAobmV2ZXIgZXhwaXJlKS5cbiAqL1xuY29uc3QgVkFMSURfUkVURU5USU9OX0RBWVMgPSBuZXcgU2V0KFtcbiAgMCwgMSwgMywgNSwgNywgMTQsIDMwLCA2MCwgOTAsIDEyMCwgMTUwLCAxODAsIDM2NSwgNDAwLCA1NDUsIDczMSxcbiAgMTA5NiwgMTgyNywgMjE5MiwgMjU1NywgMjkyMiwgMzI4OCwgMzY1Myxcbl0pO1xuXG4vKipcbiAqIFBhcnNlIGEgbG9nLXJldGVudGlvbiBzdHJpbmcgaW50byBhIHZhbGlkIENsb3VkV2F0Y2ggcmV0ZW50aW9uIGRheSBjb3VudC5cbiAqXG4gKiBAcGFyYW0gZGF5cyAtIFJldGVudGlvbiBwZXJpb2QgaW4gZGF5cyBhcyBhIHN0cmluZyAoZS5nLiBgJzMwJ2ApXG4gKiBAcmV0dXJucyB0aGUgZGF5IGNvdW50OyBmYWxscyBiYWNrIHRvIDEgZGF5IGZvciB1bmtub3duL2ludmFsaWQgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUmV0ZW50aW9uRGF5cyhkYXlzOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChkYXlzLCAxMCk7XG4gIHJldHVybiBWQUxJRF9SRVRFTlRJT05fREFZUy5oYXMocGFyc2VkKSA/IHBhcnNlZCA6IDE7XG59XG4iXX0=
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9pbmZyYXN0cnVjdHVyZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFHeEI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksVUFBVSxDQUFDO0lBQzNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLDhFQUE4RTtJQUM5RSw0RUFBNEU7SUFDNUUsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLE9BQU87UUFDTCxJQUFJO1FBQ0osSUFBSTtRQUNKLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixJQUFJLFFBQVEsRUFBRSxJQUFJLElBQUksSUFBSTtRQUN4RSxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0I7WUFDNUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztRQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRTtRQUN6QyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsS0FBSyxPQUFPO0tBQ2xELENBQUM7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QVMsRUFBRTtZQUNULFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLElBQUksT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQzFFLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLHdCQUF3QjtTQUM5RTtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHR5cGUgeyBBV1NDb25maWcsIEJ1aWxkQ29uZmlnLCBDb21wbGlhbmNlQ29uZmlnLCBEYXRhYmFzZUNvbmZpZywgT2JzZXJ2YWJpbGl0eUNvbmZpZywgUGx1Z2luQnVpbGRDb25maWcsIFJlZ2lzdHJ5Q29uZmlnIH0gZnJvbSAnLi9jb25maWctdHlwZXMuanMnO1xuXG4vKipcbiAqIExvYWQgRG9ja2VyIHJlZ2lzdHJ5IGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgSU1BR0VfUkVHSVNUUllfSE9TVGAg4oCUIFJlZ2lzdHJ5IGhvc3RuYW1lIChkZWZhdWx0OiBgJ3JlZ2lzdHJ5J2ApXG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9QT1JUYCDigJQgUmVnaXN0cnkgcG9ydCAoZGVmYXVsdDogYDUwMDBgKVxuICogLSBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCDigJQgSG9zdCBhbiBvdXQtb2YtY2x1c3RlciBjbGllbnQgKENvZGVCdWlsZClcbiAqICAgdXNlcyB0byBwdWxsIHBsdWdpbiBpbWFnZXMuIFdoZW4gdW5zZXQsIGRlcml2ZWQgZnJvbSBgUExBVEZPUk1fQkFTRV9VUkxgJ3NcbiAqICAgaG9zdCAodGhlIHB1YmxpYyBlbmRwb2ludCBDb2RlQnVpbGQgY2FuIHJlc29sdmUpLCB0aGVuIGBJTUFHRV9SRUdJU1RSWV9IT1NUYC5cbiAqIC0gYElNQUdFX1JFR0lTVFJZX1BVTExfUE9SVGAg4oCUIFBvcnQgZm9yIHRoZSBhYm92ZS4gV2hlbiB1bnNldCwgZGVyaXZlZCBmcm9tXG4gKiAgIGBQTEFURk9STV9CQVNFX1VSTGAncyBwb3J0LCB0aGVuIGBJTUFHRV9SRUdJU1RSWV9QT1JUYC5cbiAqIC0gYERPQ0tFUl9ORVRXT1JLYCDigJQgRG9ja2VyIG5ldHdvcmsgZm9yIGJ1aWxkL3B1c2ggKGRlZmF1bHQ6IGAnJ2ApXG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9IVFRQYCDigJQgVXNlIHBsYWluIEhUVFAgaW5zdGVhZCBvZiBIVFRQUyAoZGVmYXVsdDogYHRydWVgLFxuICogICB0aGUgaW4tY2x1c3RlciByZWdpc3RyeSBoYXMgbm8gVExTKS5cbiAqXG4gKiBAcmV0dXJucyBSZWdpc3RyeSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUmVnaXN0cnlDb25maWcoKTogUmVnaXN0cnlDb25maWcge1xuICBjb25zdCBob3N0ID0gcHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfSE9TVCB8fCAncmVnaXN0cnknO1xuICBjb25zdCBwb3J0ID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfUE9SVCB8fCAnNTAwMCcsIDEwKTtcbiAgLy8gV2hlbiBubyBleHBsaWNpdCBwdWxsIGhvc3QgaXMgc2V0LCBkZXJpdmUgaXQgZnJvbSBQTEFURk9STV9CQVNFX1VSTCDigJQgdGhlXG4gIC8vIHB1YmxpYyBwbGF0Zm9ybSBlbmRwb2ludCBhbiBvdXQtb2YtY2x1c3RlciBjbGllbnQgKEFXUyBDb2RlQnVpbGQpIGNhblxuICAvLyByZXNvbHZlLCB1bmxpa2UgdGhlIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5YCBDbHVzdGVySVAuIE9ubHkgZmFsbHMgYmFjayB0byB0aGVcbiAgLy8gaW4tY2x1c3RlciBob3N0IHdoZW4gUExBVEZPUk1fQkFTRV9VUkwgaXMgdW5zZXQvdW5wYXJzZWFibGUgKGUuZy4gbG9jYWwpLlxuICBjb25zdCBwbGF0Zm9ybSA9IHBhcnNlUGxhdGZvcm1CYXNlVXJsKHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMKTtcbiAgcmV0dXJuIHtcbiAgICBob3N0LFxuICAgIHBvcnQsXG4gICAgcHVsbEhvc3Q6IHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX1BVTExfSE9TVCB8fCBwbGF0Zm9ybT8uaG9zdCB8fCBob3N0LFxuICAgIHB1bGxQb3J0OiBwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRcbiAgICAgID8gcGFyc2VJbnQocHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfUFVMTF9QT1JULCAxMClcbiAgICAgIDogKHBsYXRmb3JtPy5wb3J0ID8/IHBvcnQpLFxuICAgIG5ldHdvcms6IHByb2Nlc3MuZW52LkRPQ0tFUl9ORVRXT1JLIHx8ICcnLFxuICAgIGh0dHA6IHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX0hUVFAgIT09ICdmYWxzZScsXG4gIH07XG59XG5cbi8qKiBFeHRyYWN0IGhvc3QgKyBwb3J0IGZyb20gUExBVEZPUk1fQkFTRV9VUkwgKGUuZy4gYGh0dHBzOi8vcGlwZWxpbmUtYnVpbGRlci5jb21gXG4gKiAg4oaSIGB7IGhvc3Q6ICdwaXBlbGluZS1idWlsZGVyLmNvbScsIHBvcnQ6IDQ0MyB9YCkuIFJldHVybnMgbnVsbCB3aGVuIHRoZSB2YWx1ZVxuICogIGlzIHVuc2V0IG9yIG5vdCBhIHZhbGlkIFVSTC4gRXhwb3J0ZWQgc28gdGhlIENMSSAocGlwZWxpbmUtbWFuYWdlcikgZGVyaXZlc1xuICogIHRoZSByZWdpc3RyeSBwdWxsIHRhcmdldCB3aXRoIHRoZSBTQU1FIHBhcnNpbmcsIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQbGF0Zm9ybUJhc2VVcmwocmF3Pzogc3RyaW5nKTogeyBob3N0OiBzdHJpbmc7IHBvcnQ6IG51bWJlciB9IHwgbnVsbCB7XG4gIGlmICghcmF3KSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICBjb25zdCB1ID0gbmV3IFVSTChyYXcpO1xuICAgIC8vIEEgc2NoZW1lLWxlc3MgdmFsdWUgbGlrZSBgaG9zdDo4NDQzYCBwYXJzZXMgd2l0aCBhIGN1c3RvbSBwcm90b2NvbCBhbmQgYW5cbiAgICAvLyBFTVBUWSBob3N0bmFtZSDigJQgcmVqZWN0IGl0IHNvIGNhbGxlcnMgZmFsbCBiYWNrIHJhdGhlciB0aGFuIGRlcml2ZSBhXG4gICAgLy8gaG9zdC1sZXNzIGVuZHBvaW50LlxuICAgIGlmICghdS5ob3N0bmFtZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcG9ydCA9IHUucG9ydCA/IHBhcnNlSW50KHUucG9ydCwgMTApIDogKHUucHJvdG9jb2wgPT09ICdodHRwczonID8gNDQzIDogODApO1xuICAgIHJldHVybiB7IGhvc3Q6IHUuaG9zdG5hbWUsIHBvcnQgfTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIHBsdWdpbiBidWlsZCBxdWV1ZSBjb25maWd1cmF0aW9uLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYFBMVUdJTl9CVUlMRF9DT05DVVJSRU5DWWAg4oCUIE1heCBjb25jdXJyZW50IHBsdWdpbiBidWlsZHMgKGRlZmF1bHQ6IGAxYClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQbHVnaW5CdWlsZENvbmZpZygpOiBQbHVnaW5CdWlsZENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgY29uY3VycmVuY3k6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9CVUlMRF9DT05DVVJSRU5DWSB8fCAnMScsIDEwKSxcbiAgICBtYXhBdHRlbXB0czogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX01BWF9BVFRFTVBUUyB8fCAnMicsIDEwKSxcbiAgICBiYWNrb2ZmRGVsYXlNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX0JBQ0tPRkZfREVMQVlfTVMgfHwgJzUwMDAnLCAxMCksXG4gICAgd29ya2VyVGltZW91dE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfV09SS0VSX1RJTUVPVVRfTVMgfHwgJzEwMDAwJywgMTApLFxuICAgIHRlbXBEaXJNYXhBZ2VNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuVEVNUF9ESVJfTUFYX0FHRV9NUyB8fCAnMTQ0MDAwMDAnLCAxMCksXG4gICAgZGxxTWF4QXR0ZW1wdHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9ETFFfTUFYX0FUVEVNUFRTIHx8ICczJywgMTApLFxuICAgIGRscUJhY2tvZmZCYXNlTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9ETFFfQkFDS09GRl9CQVNFX01TIHx8ICczMDAwMDAnLCAxMCksXG4gICAgZGxxTWF4U2l6ZTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0RMUV9NQVhfU0laRSB8fCAnMjAnLCAxMCksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGF0YWJhc2VDb25maWcoKTogRGF0YWJhc2VDb25maWcge1xuICByZXR1cm4ge1xuICAgIHBvc3RncmVzOiB7XG4gICAgICBob3N0OiBwcm9jZXNzLmVudi5EQl9IT1NUIHx8ICdwb3N0Z3JlcycsXG4gICAgICBwb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5EQl9QT1JUIHx8ICc1NDMyJywgMTApLFxuICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LkRBVEFCQVNFIHx8ICdwaXBlbGluZV9idWlsZGVyJyxcbiAgICAgIHVzZXI6IHByb2Nlc3MuZW52LkRCX1VTRVIgfHwgJ3Bvc3RncmVzJyxcbiAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5EQl9QQVNTV09SRCB8fCAnJyxcbiAgICB9LFxuICAgIGRyaXp6bGU6IHtcbiAgICAgIG1heFBvb2xTaXplOiBwYXJzZUludChwcm9jZXNzLmVudi5EUklaWkxFX01BWF9QT09MX1NJWkUgfHwgJzIwJywgMTApLFxuICAgICAgaWRsZVRpbWVvdXRNaWxsaXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRSSVpaTEVfSURMRV9USU1FT1VUX01JTExJUyB8fCAnMzAwMDAnLCAxMCksXG4gICAgICBjb25uZWN0aW9uVGltZW91dE1pbGxpczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTIHx8ICcxMDAwMCcsIDEwKSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZE9ic2VydmFiaWxpdHlDb25maWcoKTogT2JzZXJ2YWJpbGl0eUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgbG9nTGV2ZWw6IHByb2Nlc3MuZW52LkxPR19MRVZFTCB8fCAnaW5mbycsXG4gICAgbG9nRm9ybWF0OiBwcm9jZXNzLmVudi5MT0dfRk9STUFUIHx8ICdqc29uJyxcbiAgICBzZXJ2aWNlTmFtZTogcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknLFxuICAgIHRyYWNpbmc6IHtcbiAgICAgIGVuYWJsZWQ6IHByb2Nlc3MuZW52Lk9URUxfVFJBQ0lOR19FTkFCTEVEID09PSAndHJ1ZScsXG4gICAgICBlbmRwb2ludDogcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UIHx8ICdodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvdHJhY2VzJyxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZENvbXBsaWFuY2VDb25maWcoKTogQ29tcGxpYW5jZUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgc2NhblNjaGVkdWxlckludGVydmFsTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNDQU5fU0NIRURVTEVSX0lOVEVSVkFMX01TIHx8ICc2MDAwMCcsIDEwKSxcbiAgICBzeXN0ZW1PcmdTY2Fuc0VuYWJsZWQ6IHByb2Nlc3MuZW52LlNZU1RFTV9PUkdfU0NBTlNfRU5BQkxFRCA9PT0gJ3RydWUnLFxuICAgIHNjYW5Mb2NrVHRsTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNDQU5fTE9DS19UVExfTVMgfHwgJzMwMDAwMCcsIDEwKSxcbiAgICBkaWdlc3RTY2hlZHVsZXJJbnRlcnZhbE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5ESUdFU1RfU0NIRURVTEVSX0lOVEVSVkFMX01TIHx8ICczNjAwMDAwJywgMTApLFxuICAgIGRpZ2VzdExvY2tUdGxNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRElHRVNUX0xPQ0tfVFRMX01TIHx8ICczMDAwMDAnLCAxMCksXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBwbHVnaW4gYnVpbGQgY29uZmlndXJhdGlvbi4gQnVpbGRzIHJ1biBhZ2FpbnN0IGEgcm9vdGxlc3MgYG1vYnkvYnVpbGRraXRgXG4gKiBzaWRlY2FyIOKAlCBzZWUgYEJVSUxES0lUX0hPU1RgLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYERPQ0tFUl9CVUlMRF9URU1QX1JPT1RgIOKAlCBUZW1wIGRpcmVjdG9yeSBmb3IgYnVpbGQgY29udGV4dHMgKGRlZmF1bHQ6IGA8Y3dkPi90bXBgKVxuICogLSBgRE9DS0VSX0JVSUxEX1RJTUVPVVRfTVNgIOKAlCBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogYDkwMDAwMGAgLyAxNSBtaW4pXG4gKiAtIGBET0NLRVJfUFVTSF9USU1FT1VUX01TYCDigJQgUHVzaCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogYDMwMDAwMGAgLyA1IG1pbilcbiAqIC0gYEJVSUxES0lUX0hPU1RgIOKAlCBidWlsZGN0bCBgLS1hZGRyYCB2YWx1ZSBmb3IgdGhlIGJ1aWxka2l0ZCBzaWRlY2FyXG4gKiAgIChkZWZhdWx0OiBgdW5peDovLy9ydW4vYnVpbGRraXQvYnVpbGRraXRkLnNvY2tgKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZERvY2tlckNvbmZpZygpOiBCdWlsZENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdGVtcFJvb3Q6IHByb2Nlc3MuZW52LkRPQ0tFUl9CVUlMRF9URU1QX1JPT1QgfHwgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd0bXAnKSxcbiAgICB0aW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRPQ0tFUl9CVUlMRF9USU1FT1VUX01TIHx8ICc5MDAwMDAnLCAxMCksXG4gICAgcHVzaFRpbWVvdXRNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRE9DS0VSX1BVU0hfVElNRU9VVF9NUyB8fCAnMzAwMDAwJywgMTApLFxuICAgIGJ1aWxka2l0QWRkcjogcHJvY2Vzcy5lbnYuQlVJTERLSVRfSE9TVCB8fCAndW5peDovLy9ydW4vYnVpbGRraXQvYnVpbGRraXRkLnNvY2snLFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgTEFNQkRBX1JVTlRJTUVgIOKAlCBMYW1iZGEgcnVudGltZSAoZGVmYXVsdDogYCdub2RlanMyNC54J2A7IHVua25vd24gdmFsdWVzIGZhbGwgYmFjayB0byBpdClcbiAqIC0gYExBTUJEQV9USU1FT1VUYCDigJQgTGFtYmRhIHRpbWVvdXQgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDkwMGApXG4gKiAtIGBMQU1CREFfTUVNT1JZX1NJWkVgIOKAlCBMYW1iZGEgbWVtb3J5IGluIE1CIChkZWZhdWx0OiBgNTEyYClcbiAqIC0gYExBTUJEQV9BUkNISVRFQ1RVUkVgIOKAlCBgJ3g4Nl82NCdgIG9yIEFSTSAoZGVmYXVsdDogQVJNXzY0KVxuICogLSBgTE9HX0dST1VQX05BTUVgIOKAlCBDbG91ZFdhdGNoIGxvZyBncm91cCAoZGVmYXVsdDogYCcvcGlwZWxpbmUtYnVpbGRlci9sb2dzJ2ApXG4gKiAtIGBDT0RFQlVJTERfQ09NUFVURV9UWVBFYCDigJQgQ29kZUJ1aWxkIGNvbXB1dGUgdHlwZSAoZGVmYXVsdDogYCdTTUFMTCdgKVxuICpcbiAqIEByZXR1cm5zIEFXUyBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQVdTQ29uZmlnKCk6IEFXU0NvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgbGFtYmRhOiB7XG4gICAgICBydW50aW1lOiBwcm9jZXNzLmVudi5MQU1CREFfUlVOVElNRSB8fCAnbm9kZWpzMjQueCcsXG4gICAgICB0aW1lb3V0U2Vjb25kczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTEFNQkRBX1RJTUVPVVQgfHwgJzkwMCcsIDEwKSxcbiAgICAgIG1lbW9yeVNpemU6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxBTUJEQV9NRU1PUllfU0laRSB8fCAnNTEyJywgMTApLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBwcm9jZXNzLmVudi5MQU1CREFfQVJDSElURUNUVVJFID09PSAneDg2XzY0JyA/ICd4ODZfNjQnIDogJ2FybTY0JyxcbiAgICAgIHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IHByb2Nlc3MuZW52LkxBTUJEQV9SRVNFUlZFRF9DT05DVVJSRU5DWVxuICAgICAgICA/IHBhcnNlSW50KHByb2Nlc3MuZW52LkxBTUJEQV9SRVNFUlZFRF9DT05DVVJSRU5DWSwgMTApXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0sXG5cbiAgICBsb2dnaW5nOiB7XG4gICAgICBncm91cE5hbWU6IHByb2Nlc3MuZW52LkxPR19HUk9VUF9OQU1FIHx8ICcvcGlwZWxpbmUtYnVpbGRlci9sb2dzJyxcbiAgICB9LFxuXG4gICAgY29kZUJ1aWxkOiB7XG4gICAgICBjb21wdXRlVHlwZTogKHByb2Nlc3MuZW52LkNPREVCVUlMRF9DT01QVVRFX1RZUEUgfHwgJ1NNQUxMJykudG9VcHBlckNhc2UoKSxcbiAgICAgIGRlZmF1bHRJbWFnZTogcHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0UgfHwgJ3BpcGVsaW5lLWJvb3RzdHJhcDoxLjAnLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -16,10 +16,7 @@ export declare function loadServerConfig(): ServerConfig;
16
16
  * Load authentication configuration from environment variables.
17
17
  *
18
18
  * Environment variables:
19
- * - `JWT_SECRET` — **Required.** Secret key for signing JWTs
20
- * - `REFRESH_TOKEN_SECRET` — **Required.** Secret key for signing refresh tokens
21
19
  * - `JWT_EXPIRES_IN` — JWT lifetime in seconds (default: `7200` = 2 hours)
22
- * - `JWT_ALGORITHM` — JWT signing algorithm (default: `'HS256'`)
23
20
  * - `BCRYPT_SALT_ROUNDS` — bcrypt salt rounds for password hashing (default: `12`)
24
21
  * - `REFRESH_TOKEN_EXPIRES_IN` — Refresh token lifetime in seconds (default: `2592000` = 30 days)
25
22
  *
@@ -44,10 +41,15 @@ export declare function loadRateLimitConfig(): RateLimitConfig;
44
41
  */
45
42
  export declare function validateServerConfig(config: ServerConfig): void;
46
43
  /**
47
- * Validate authentication configuration (JWT secrets, algorithms, expiration).
44
+ * Validate authentication configuration (token lifetimes).
48
45
  * Call this at server startup, not during CDK synthesis.
49
46
  *
47
+ * No SECRET is validated any more: there is none left. User tokens are ES256
48
+ * signed by platform (whose signing key is validated at platform's boot, where
49
+ * it is loaded) and internal service tokens are ES256 signed per service (#14),
50
+ * whose key and bundle `createApp` requires at startup.
51
+ *
50
52
  * @param config - Auth configuration to validate
51
- * @throws {Error} If secrets are insecure, too short (<32 chars), or use disallowed algorithms
53
+ * @throws {Error} If token lifetimes are out of range
52
54
  */
53
55
  export declare function validateAuthConfig(config: AuthConfig): void;