@aws-mdaa/datawarehouse 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +191 -0
- package/SCHEMA.md +1263 -0
- package/bin/datawarehouse.d.ts +6 -0
- package/bin/datawarehouse.js +10 -0
- package/cdk.json +7 -0
- package/lib/config-schema.json +584 -0
- package/lib/datawarehouse-config.d.ts +329 -0
- package/lib/datawarehouse-config.js +50 -0
- package/lib/datawarehouse.d.ts +11 -0
- package/lib/datawarehouse.js +28 -0
- package/mdaa.config.json +3 -0
- package/package.json +55 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { MdaaAppConfigParser, MdaaAppConfigParserProps, MdaaBaseConfigContents } from '@aws-mdaa/app';
|
|
6
|
+
import { FederationProps, ScheduledActionProps, DatabaseUsersProps, EventNotificationsProps } from '@aws-mdaa/datawarehouse-l3-construct';
|
|
7
|
+
import { MdaaRoleRef } from '@aws-mdaa/iam-role-helper';
|
|
8
|
+
import { Stack } from 'aws-cdk-lib';
|
|
9
|
+
import { ConfigurationElement } from '@aws-mdaa/config';
|
|
10
|
+
export interface DataWarehouseConfigContents extends MdaaBaseConfigContents {
|
|
11
|
+
/**
|
|
12
|
+
* Q-ENHANCED-PROPERTY
|
|
13
|
+
* Required admin username for the Redshift cluster providing administrative access to the data warehouse. Defines the master user account for cluster administration, database management, and initial user provisioning.
|
|
14
|
+
*
|
|
15
|
+
* Use cases: Cluster administration; Database management; Initial user provisioning
|
|
16
|
+
*
|
|
17
|
+
* AWS: Amazon Redshift cluster master username for administrative access and database management
|
|
18
|
+
*
|
|
19
|
+
* Validation: Must be valid Redshift username; required; used for cluster administrative access
|
|
20
|
+
**/
|
|
21
|
+
readonly adminUsername: string;
|
|
22
|
+
/**
|
|
23
|
+
* Q-ENHANCED-PROPERTY
|
|
24
|
+
* Required number of days between automatic admin password rotations for enhanced security compliance. Enables automated credential management and compliance with password rotation policies for improved cluster security posture.
|
|
25
|
+
*
|
|
26
|
+
* Use cases: Automated credential rotation; Security policy compliance; Password management automation
|
|
27
|
+
*
|
|
28
|
+
* AWS: Amazon Redshift automatic password rotation configuration for security management
|
|
29
|
+
*
|
|
30
|
+
* Validation: Must be positive integer; required; defines password rotation frequency for security compliance
|
|
31
|
+
**/
|
|
32
|
+
readonly adminPasswordRotationDays: number;
|
|
33
|
+
/**
|
|
34
|
+
* Q-ENHANCED-PROPERTY
|
|
35
|
+
* Optional array of federation configurations for SAML or OIDC identity provider integration with the data warehouse. Enables federated access to Redshift through external identity providers for centralized identity management and SSO capabilities.
|
|
36
|
+
*
|
|
37
|
+
* Use cases: SAML federation setup; OIDC provider integration; Centralized identity management for data warehouse access
|
|
38
|
+
*
|
|
39
|
+
* AWS: AWS IAM identity provider configuration for federated Redshift access and SSO integration
|
|
40
|
+
*
|
|
41
|
+
* Validation: Must be array of valid FederationProps if provided; enables federated authentication when specified
|
|
42
|
+
**/
|
|
43
|
+
readonly federations?: FederationProps[];
|
|
44
|
+
/**
|
|
45
|
+
* Q-ENHANCED-PROPERTY
|
|
46
|
+
* Required array of admin role references with full access to cluster resources including KMS keys and S3 buckets. Provides administrative permissions for data warehouse management, security administration, and resource access control.
|
|
47
|
+
*
|
|
48
|
+
* Use cases: Administrative access control; Security management; Resource administration
|
|
49
|
+
*
|
|
50
|
+
* AWS: AWS IAM roles with full Redshift cluster and resource access permissions
|
|
51
|
+
*
|
|
52
|
+
* Validation: Must be array of valid MdaaRoleRef objects; required; roles receive full cluster access
|
|
53
|
+
**/
|
|
54
|
+
readonly dataAdminRoles: MdaaRoleRef[];
|
|
55
|
+
/**
|
|
56
|
+
* Q-ENHANCED-PROPERTY
|
|
57
|
+
* Optional array of user role references with access to data warehouse S3 buckets for data loading and unloading operations. Enables controlled access to warehouse storage resources for ETL operations and data management workflows.
|
|
58
|
+
*
|
|
59
|
+
* Use cases: Data loading operations; ETL workflow access; Controlled storage access
|
|
60
|
+
*
|
|
61
|
+
* AWS: AWS IAM roles with S3 bucket access for Redshift data operations
|
|
62
|
+
*
|
|
63
|
+
* Validation: Must be array of valid MdaaRoleRef objects if provided; roles receive bucket access permissions
|
|
64
|
+
**/
|
|
65
|
+
readonly warehouseBucketUserRoles?: MdaaRoleRef[];
|
|
66
|
+
/**
|
|
67
|
+
* Q-ENHANCED-PROPERTY
|
|
68
|
+
* Optional array of external execution role references for Redshift cluster operations and integrations. Enables cluster to assume external roles for cross-service operations, data access, and integration with other AWS services.
|
|
69
|
+
*
|
|
70
|
+
* Use cases: Cross-service operations; External data access; Service integration workflows
|
|
71
|
+
*
|
|
72
|
+
* AWS: AWS IAM roles for Redshift cluster cross-service operations and integrations
|
|
73
|
+
*
|
|
74
|
+
* Validation: Must be array of valid MdaaRoleRef objects if provided; roles must be assumable by Redshift service
|
|
75
|
+
**/
|
|
76
|
+
readonly executionRoles?: MdaaRoleRef[];
|
|
77
|
+
/**
|
|
78
|
+
* Q-ENHANCED-PROPERTY
|
|
79
|
+
* Required VPC ID for Redshift cluster deployment providing network isolation and security controls. Ensures cluster operates within the specified VPC for secure networking and integration with other VPC resources.
|
|
80
|
+
*
|
|
81
|
+
* Use cases: VPC network isolation; Secure networking; VPC resource integration
|
|
82
|
+
*
|
|
83
|
+
* AWS: Amazon VPC for Redshift cluster network isolation and security controls
|
|
84
|
+
*
|
|
85
|
+
* Validation: Must be valid VPC ID; required; VPC must exist and be accessible
|
|
86
|
+
**/
|
|
87
|
+
readonly vpcId: string;
|
|
88
|
+
/**
|
|
89
|
+
* Q-ENHANCED-PROPERTY
|
|
90
|
+
* Required array of subnet IDs for Redshift cluster node placement within the VPC. Defines the network subnets where cluster nodes will be deployed for secure VPC connectivity and availability zone distribution.
|
|
91
|
+
*
|
|
92
|
+
* Use cases: VPC network placement; Subnet-specific deployment; Multi-AZ cluster distribution
|
|
93
|
+
*
|
|
94
|
+
* AWS: Amazon VPC subnets for Redshift cluster node placement and network configuration
|
|
95
|
+
*
|
|
96
|
+
* Validation: Must be array of valid subnet IDs; required; subnets must exist in specified VPC
|
|
97
|
+
**/
|
|
98
|
+
readonly subnetIds: string[];
|
|
99
|
+
/**
|
|
100
|
+
* Q-ENHANCED-PROPERTY
|
|
101
|
+
* Required security group ingress configuration defining allowed inbound connections to the cluster. Specifies IPv4 CIDR blocks and security group IDs that can connect to the cluster port for controlled network access.
|
|
102
|
+
*
|
|
103
|
+
* Use cases: Network access control; Client connectivity; Security group management
|
|
104
|
+
*
|
|
105
|
+
* AWS: Amazon VPC security group ingress rules for Redshift cluster access control
|
|
106
|
+
*
|
|
107
|
+
* Validation: Must be object with ipv4 and/or sg arrays; required; defines allowed inbound connections
|
|
108
|
+
* **/
|
|
109
|
+
readonly securityGroupIngress: {
|
|
110
|
+
ipv4?: string[];
|
|
111
|
+
sg?: string[];
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Q-ENHANCED-PROPERTY
|
|
115
|
+
* Required node type specification determining compute and storage capacity for cluster nodes. Controls the underlying EC2 instance type and affects performance, storage, and cost characteristics of the data warehouse.
|
|
116
|
+
*
|
|
117
|
+
* Use cases: Performance optimization; Cost management; Workload-specific sizing
|
|
118
|
+
*
|
|
119
|
+
* AWS: Amazon Redshift node type for compute and storage capacity configuration
|
|
120
|
+
*
|
|
121
|
+
* Validation: Must be valid Redshift node type; required; determines cluster compute and storage capacity
|
|
122
|
+
**/
|
|
123
|
+
readonly nodeType: string;
|
|
124
|
+
/**
|
|
125
|
+
* Q-ENHANCED-PROPERTY
|
|
126
|
+
* Required number of nodes for the Redshift cluster determining total compute capacity and parallel processing capability. Controls cluster size and affects performance, cost, and data distribution characteristics.
|
|
127
|
+
*
|
|
128
|
+
* Use cases: Cluster sizing; Performance scaling; Cost optimization
|
|
129
|
+
*
|
|
130
|
+
* AWS: Amazon Redshift cluster node count for compute capacity and parallel processing
|
|
131
|
+
*
|
|
132
|
+
* Validation: Must be positive integer; required; determines cluster size and processing capacity
|
|
133
|
+
**/
|
|
134
|
+
readonly numberOfNodes: number;
|
|
135
|
+
/**
|
|
136
|
+
* Q-ENHANCED-PROPERTY
|
|
137
|
+
* Required flag enabling audit logging to S3 for compliance and security monitoring. When enabled, creates dedicated S3 bucket for Redshift audit logs with SSE-S3 encryption as required by Redshift audit logging constraints.
|
|
138
|
+
*
|
|
139
|
+
* Use cases: Compliance auditing; Security monitoring; Audit trail management
|
|
140
|
+
*
|
|
141
|
+
* AWS: Amazon Redshift audit logging to S3 for compliance and security monitoring
|
|
142
|
+
*
|
|
143
|
+
* Validation: Boolean value; required; creates SSE-S3 encrypted audit bucket when enabled
|
|
144
|
+
**/
|
|
145
|
+
readonly enableAuditLoggingToS3: boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Q-ENHANCED-PROPERTY
|
|
148
|
+
* Optional cluster port number for client connections enabling custom port configuration and network security. Defines the TCP port on which the Redshift cluster accepts client connections, supporting custom networking requirements and security configurations.
|
|
149
|
+
*
|
|
150
|
+
* Use cases: Custom port configuration; Network security; Client connection management; Port standardization
|
|
151
|
+
*
|
|
152
|
+
* AWS: Amazon Redshift cluster port configuration for client connection management
|
|
153
|
+
*
|
|
154
|
+
* Validation: Must be valid port number if specified; defaults to 54390; must be accessible through security groups
|
|
155
|
+
**/
|
|
156
|
+
readonly clusterPort?: number;
|
|
157
|
+
/**
|
|
158
|
+
* Q-ENHANCED-PROPERTY
|
|
159
|
+
* Optional flag controlling cluster node configuration for single-node or multi-node deployment. When true, creates multi-node cluster for distributed processing; when false, creates single-node cluster for development or small workloads.
|
|
160
|
+
*
|
|
161
|
+
* Use cases: Cluster architecture selection; Development vs production deployment; Cost optimization; Performance scaling
|
|
162
|
+
*
|
|
163
|
+
* AWS: Amazon Redshift cluster type configuration for single-node or multi-node deployment
|
|
164
|
+
*
|
|
165
|
+
* Validation: Boolean value; determines cluster architecture and node distribution; affects performance and cost
|
|
166
|
+
**/
|
|
167
|
+
readonly multiNode?: boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Q-ENHANCED-PROPERTY
|
|
170
|
+
* Required preferred maintenance window for automated cluster maintenance operations. Specifies the weekly time range during which system maintenance can occur, minimizing impact on business operations and ensuring predictable maintenance scheduling.
|
|
171
|
+
*
|
|
172
|
+
* Use cases: Maintenance scheduling; Business continuity; Operational planning; Downtime management
|
|
173
|
+
*
|
|
174
|
+
* AWS: Amazon Redshift preferred maintenance window for automated system maintenance
|
|
175
|
+
*
|
|
176
|
+
* Validation: Must be valid time window format (e.g., 'Sun:23:45-Mon:00:15'); required; defines maintenance scheduling
|
|
177
|
+
**/
|
|
178
|
+
readonly preferredMaintenanceWindow: string;
|
|
179
|
+
/**
|
|
180
|
+
* Q-ENHANCED-PROPERTY
|
|
181
|
+
* Optional parameter group parameters for cluster configuration customization enabling performance tuning and operational optimization. Provides additional cluster parameters while security-sensitive values are automatically overridden for compliance and security.
|
|
182
|
+
*
|
|
183
|
+
* Use cases: Performance tuning; Operational optimization; Custom cluster configuration; Workload-specific settings
|
|
184
|
+
*
|
|
185
|
+
* AWS: Amazon Redshift parameter group configuration for cluster customization and optimization
|
|
186
|
+
*
|
|
187
|
+
* Validation: Must be object with string key-value pairs if provided; security-sensitive values will be overridden
|
|
188
|
+
* **/
|
|
189
|
+
readonly parameterGroupParams?: Record<string, string>;
|
|
190
|
+
/**
|
|
191
|
+
* Q-ENHANCED-PROPERTY
|
|
192
|
+
* Optional workload management configuration for query performance optimization and resource allocation. Defines WLM configuration elements for managing query queues, memory allocation, and concurrency for optimal cluster performance.
|
|
193
|
+
*
|
|
194
|
+
* Use cases: Query performance optimization; Resource allocation; Workload management; Concurrency control
|
|
195
|
+
*
|
|
196
|
+
* AWS: Amazon Redshift workload management configuration for query optimization and resource control
|
|
197
|
+
*
|
|
198
|
+
* Validation: Must be array of valid ConfigurationElement objects if provided; defines WLM configuration
|
|
199
|
+
**/
|
|
200
|
+
readonly workloadManagement?: ConfigurationElement[];
|
|
201
|
+
/**
|
|
202
|
+
* Q-ENHANCED-PROPERTY
|
|
203
|
+
* Optional additional KMS key ARNs for cluster bucket encryption enabling multi-key encryption scenarios and cross-account access. Provides additional KMS keys that can be used for writing to the cluster bucket beyond the default cluster encryption key.
|
|
204
|
+
*
|
|
205
|
+
* Use cases: Multi-key encryption; Cross-account access; Additional encryption keys; Flexible key management
|
|
206
|
+
*
|
|
207
|
+
* AWS: AWS KMS key ARNs for additional cluster bucket encryption and access control
|
|
208
|
+
*
|
|
209
|
+
* Validation: Must be array of valid KMS key ARNs if provided; keys must be accessible for bucket operations
|
|
210
|
+
**/
|
|
211
|
+
readonly additionalBucketKmsKeyArns?: string[];
|
|
212
|
+
/**
|
|
213
|
+
* Q-ENHANCED-PROPERTY
|
|
214
|
+
* Optional scheduled actions for automated cluster pause and resume operations enabling cost optimization and operational automation. Defines scheduled pause and resume actions for the cluster to optimize costs during non-business hours.
|
|
215
|
+
*
|
|
216
|
+
* Use cases: Cost optimization; Automated operations; Scheduled maintenance; Resource management
|
|
217
|
+
*
|
|
218
|
+
* AWS: Amazon Redshift scheduled actions for automated cluster pause and resume operations
|
|
219
|
+
*
|
|
220
|
+
* Validation: Must be array of valid ScheduledActionProps if provided; defines automated cluster operations
|
|
221
|
+
**/
|
|
222
|
+
readonly scheduledActions?: ScheduledActionProps[];
|
|
223
|
+
/**
|
|
224
|
+
* Q-ENHANCED-PROPERTY
|
|
225
|
+
* Optional database users for automated user creation and credential management enabling secure user provisioning and rotation. Creates database users in Redshift with automated credential storage and rotation through Secrets Manager and SSM.
|
|
226
|
+
*
|
|
227
|
+
* Use cases: Automated user provisioning; Credential management; Security automation; User lifecycle management
|
|
228
|
+
*
|
|
229
|
+
* AWS: Amazon Redshift database users with Secrets Manager and SSM integration for credential management
|
|
230
|
+
*
|
|
231
|
+
* Validation: Must be array of valid DatabaseUsersProps if provided; enables automated user and credential management
|
|
232
|
+
* **/
|
|
233
|
+
readonly databaseUsers?: DatabaseUsersProps[];
|
|
234
|
+
/**
|
|
235
|
+
* Q-ENHANCED-PROPERTY
|
|
236
|
+
* Optional flag controlling data warehouse bucket creation for cluster storage operations. When enabled (default), creates dedicated S3 bucket for data warehouse operations including data loading, unloading, and backup storage.
|
|
237
|
+
*
|
|
238
|
+
* Use cases: Storage resource management; Data operations; Backup storage; ETL operations
|
|
239
|
+
*
|
|
240
|
+
* AWS: Amazon S3 bucket creation for Redshift data warehouse storage operations
|
|
241
|
+
*
|
|
242
|
+
* Validation: Boolean value; defaults to true; creates dedicated warehouse bucket when enabled
|
|
243
|
+
**/
|
|
244
|
+
readonly createWarehouseBucket?: boolean;
|
|
245
|
+
/**
|
|
246
|
+
* Q-ENHANCED-PROPERTY
|
|
247
|
+
* Optional retention period for automated snapshots enabling backup management and data protection. Specifies the number of days automated snapshots are retained for point-in-time recovery and data protection requirements.
|
|
248
|
+
*
|
|
249
|
+
* Use cases: Backup management; Data protection; Point-in-time recovery; Compliance requirements
|
|
250
|
+
*
|
|
251
|
+
* AWS: Amazon Redshift automated snapshot retention for backup management and data protection
|
|
252
|
+
*
|
|
253
|
+
* Validation: Must be positive integer if specified; defines snapshot retention period for backup management
|
|
254
|
+
**/
|
|
255
|
+
readonly automatedSnapshotRetentionDays?: number;
|
|
256
|
+
/**
|
|
257
|
+
* Q-ENHANCED-PROPERTY
|
|
258
|
+
* Optional event notification configuration for cluster and scheduled action monitoring enabling operational awareness and alerting. Configures SNS notifications for cluster events and scheduled action status for operational monitoring.
|
|
259
|
+
*
|
|
260
|
+
* Use cases: Operational monitoring; Event alerting; Cluster status tracking; Automated notifications
|
|
261
|
+
*
|
|
262
|
+
* AWS: Amazon SNS notifications for Redshift cluster events and operational monitoring
|
|
263
|
+
*
|
|
264
|
+
* Validation: Must be valid EventNotificationsProps if provided; enables cluster event monitoring and alerting
|
|
265
|
+
**/
|
|
266
|
+
readonly eventNotifications?: EventNotificationsProps;
|
|
267
|
+
/**
|
|
268
|
+
* Q-ENHANCED-PROPERTY
|
|
269
|
+
* Optional database name for initial database creation enabling custom database naming and organization. Specifies the name of the initial database created in the cluster, supporting custom naming conventions and database organization.
|
|
270
|
+
*
|
|
271
|
+
* Use cases: Custom database naming; Database organization; Initial database setup; Naming conventions
|
|
272
|
+
*
|
|
273
|
+
* AWS: Amazon Redshift initial database name for cluster database creation and organization
|
|
274
|
+
*
|
|
275
|
+
* Validation: Must be valid database name if specified; defaults to "default_db"; used for initial database creation
|
|
276
|
+
**/
|
|
277
|
+
readonly dbName?: string;
|
|
278
|
+
/**
|
|
279
|
+
* Q-ENHANCED-PROPERTY
|
|
280
|
+
* Optional snapshot identifier for cluster restoration from existing snapshot enabling disaster recovery and data migration. Specifies the snapshot ID to restore the cluster from, supporting disaster recovery scenarios and data migration operations.
|
|
281
|
+
*
|
|
282
|
+
* Use cases: Disaster recovery; Data migration; Cluster restoration; Backup recovery
|
|
283
|
+
*
|
|
284
|
+
* AWS: Amazon Redshift snapshot identifier for cluster restoration and disaster recovery
|
|
285
|
+
*
|
|
286
|
+
* Validation: Must be valid snapshot identifier if specified; only provide when restoring from snapshot
|
|
287
|
+
**/
|
|
288
|
+
readonly snapshotIdentifier?: string;
|
|
289
|
+
/**
|
|
290
|
+
* ownerAccount Refers to snapshot owner account. Applicable if restoring the cluster from snapshot and snapshot belongs to another account
|
|
291
|
+
* Optional - By default, snapshots are searched within current account
|
|
292
|
+
*/
|
|
293
|
+
readonly snapshotOwnerAccount?: number;
|
|
294
|
+
readonly redshiftManageMasterPassword?: boolean;
|
|
295
|
+
}
|
|
296
|
+
export declare class DataWarehouseConfigParser extends MdaaAppConfigParser<DataWarehouseConfigContents> {
|
|
297
|
+
readonly adminUsername: string;
|
|
298
|
+
readonly adminPasswordRotationDays: number;
|
|
299
|
+
readonly federations: FederationProps[];
|
|
300
|
+
readonly databaseUsers: DatabaseUsersProps[];
|
|
301
|
+
readonly dataAdminRoleRefs: MdaaRoleRef[];
|
|
302
|
+
readonly warehouseBucketUserRoleRefs?: MdaaRoleRef[];
|
|
303
|
+
readonly executionRoleRefs?: MdaaRoleRef[];
|
|
304
|
+
readonly vpcId: string;
|
|
305
|
+
readonly clusterPort: number;
|
|
306
|
+
readonly subnetIds: string[];
|
|
307
|
+
readonly nodeType: string;
|
|
308
|
+
readonly enableAuditLoggingToS3: boolean;
|
|
309
|
+
readonly numberOfNodes: number;
|
|
310
|
+
readonly multiNode?: boolean;
|
|
311
|
+
readonly preferredMaintenanceWindow: string;
|
|
312
|
+
readonly securityGroupIngress: {
|
|
313
|
+
ipv4?: string[];
|
|
314
|
+
sg?: string[];
|
|
315
|
+
};
|
|
316
|
+
readonly parameterGroupParams: Record<string, string>;
|
|
317
|
+
readonly workloadManagement: ConfigurationElement[];
|
|
318
|
+
readonly additionalBucketKmsKeyArns?: string[];
|
|
319
|
+
static readonly defaultClusterPort = 54390;
|
|
320
|
+
readonly scheduledActions: ScheduledActionProps[];
|
|
321
|
+
readonly createWarehouseBucket?: boolean;
|
|
322
|
+
readonly automatedSnapshotRetentionDays?: number;
|
|
323
|
+
readonly eventNotifications?: EventNotificationsProps;
|
|
324
|
+
readonly dbName?: string;
|
|
325
|
+
readonly snapshotIdentifier?: string;
|
|
326
|
+
readonly snapshotOwnerAccount?: number;
|
|
327
|
+
readonly redshiftManageMasterPassword?: boolean;
|
|
328
|
+
constructor(stack: Stack, props: MdaaAppConfigParserProps);
|
|
329
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DataWarehouseConfigParser = void 0;
|
|
10
|
+
const app_1 = require("@aws-mdaa/app");
|
|
11
|
+
const configSchema = require("./config-schema.json");
|
|
12
|
+
class DataWarehouseConfigParser extends app_1.MdaaAppConfigParser {
|
|
13
|
+
constructor(stack, props) {
|
|
14
|
+
super(stack, props, configSchema);
|
|
15
|
+
this.adminUsername = this.configContents.adminUsername;
|
|
16
|
+
this.adminPasswordRotationDays = this.configContents.adminPasswordRotationDays;
|
|
17
|
+
this.federations = this.configContents.federations ? this.configContents.federations : [];
|
|
18
|
+
this.dataAdminRoleRefs = this.configContents.dataAdminRoles;
|
|
19
|
+
this.warehouseBucketUserRoleRefs = this.configContents.warehouseBucketUserRoles;
|
|
20
|
+
this.executionRoleRefs = this.configContents.executionRoles;
|
|
21
|
+
this.vpcId = this.configContents.vpcId;
|
|
22
|
+
this.subnetIds = this.configContents.subnetIds;
|
|
23
|
+
this.securityGroupIngress = this.configContents.securityGroupIngress;
|
|
24
|
+
this.nodeType = this.configContents.nodeType;
|
|
25
|
+
this.numberOfNodes = this.configContents.numberOfNodes;
|
|
26
|
+
this.enableAuditLoggingToS3 = this.configContents.enableAuditLoggingToS3;
|
|
27
|
+
this.clusterPort = this.configContents.clusterPort
|
|
28
|
+
? this.configContents.clusterPort
|
|
29
|
+
: DataWarehouseConfigParser.defaultClusterPort;
|
|
30
|
+
this.multiNode = this.configContents.multiNode;
|
|
31
|
+
this.preferredMaintenanceWindow = this.configContents.preferredMaintenanceWindow;
|
|
32
|
+
this.parameterGroupParams = this.configContents.parameterGroupParams
|
|
33
|
+
? this.configContents.parameterGroupParams
|
|
34
|
+
: {};
|
|
35
|
+
this.workloadManagement = this.configContents.workloadManagement ? this.configContents.workloadManagement : [];
|
|
36
|
+
this.additionalBucketKmsKeyArns = this.configContents.additionalBucketKmsKeyArns;
|
|
37
|
+
this.scheduledActions = this.configContents.scheduledActions ? this.configContents.scheduledActions : [];
|
|
38
|
+
this.databaseUsers = this.configContents.databaseUsers ? this.configContents.databaseUsers : [];
|
|
39
|
+
this.createWarehouseBucket = this.configContents.createWarehouseBucket;
|
|
40
|
+
this.automatedSnapshotRetentionDays = this.configContents.automatedSnapshotRetentionDays;
|
|
41
|
+
this.eventNotifications = this.configContents.eventNotifications;
|
|
42
|
+
this.dbName = this.configContents.dbName;
|
|
43
|
+
this.snapshotIdentifier = this.configContents.snapshotIdentifier;
|
|
44
|
+
this.snapshotOwnerAccount = this.configContents.snapshotOwnerAccount;
|
|
45
|
+
this.redshiftManageMasterPassword = this.configContents.redshiftManageMasterPassword;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.DataWarehouseConfigParser = DataWarehouseConfigParser;
|
|
49
|
+
DataWarehouseConfigParser.defaultClusterPort = 54390;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXdhcmVob3VzZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhd2FyZWhvdXNlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCx1Q0FBc0c7QUFVdEcscURBQXFEO0FBZ1NyRCxNQUFhLHlCQUEwQixTQUFRLHlCQUFnRDtJQThCN0YsWUFBWSxLQUFZLEVBQUUsS0FBK0I7UUFDdkQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBc0IsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUM7UUFDL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUM7UUFDNUQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUM7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVc7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVztZQUNqQyxDQUFDLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQztRQUNqRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7WUFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9HLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQztRQUN2RSxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQztRQUN6RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDO1FBQ2pFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDO1FBQ3JFLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFDO0lBQ3ZGLENBQUM7O0FBaEVILDhEQWlFQztBQTdDd0IsNENBQWtCLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgTWRhYUFwcENvbmZpZ1BhcnNlciwgTWRhYUFwcENvbmZpZ1BhcnNlclByb3BzLCBNZGFhQmFzZUNvbmZpZ0NvbnRlbnRzIH0gZnJvbSAnQGF3cy1tZGFhL2FwcCc7XG5pbXBvcnQge1xuICBGZWRlcmF0aW9uUHJvcHMsXG4gIFNjaGVkdWxlZEFjdGlvblByb3BzLFxuICBEYXRhYmFzZVVzZXJzUHJvcHMsXG4gIEV2ZW50Tm90aWZpY2F0aW9uc1Byb3BzLFxufSBmcm9tICdAYXdzLW1kYWEvZGF0YXdhcmVob3VzZS1sMy1jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgTWRhYVJvbGVSZWYgfSBmcm9tICdAYXdzLW1kYWEvaWFtLXJvbGUtaGVscGVyJztcbmltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ2Fqdic7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvbmZpZ1NjaGVtYSBmcm9tICcuL2NvbmZpZy1zY2hlbWEuanNvbic7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uRWxlbWVudCB9IGZyb20gJ0Bhd3MtbWRhYS9jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFXYXJlaG91c2VDb25maWdDb250ZW50cyBleHRlbmRzIE1kYWFCYXNlQ29uZmlnQ29udGVudHMge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBhZG1pbiB1c2VybmFtZSBmb3IgdGhlIFJlZHNoaWZ0IGNsdXN0ZXIgcHJvdmlkaW5nIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byB0aGUgZGF0YSB3YXJlaG91c2UuIERlZmluZXMgdGhlIG1hc3RlciB1c2VyIGFjY291bnQgZm9yIGNsdXN0ZXIgYWRtaW5pc3RyYXRpb24sIGRhdGFiYXNlIG1hbmFnZW1lbnQsIGFuZCBpbml0aWFsIHVzZXIgcHJvdmlzaW9uaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgYWRtaW5pc3RyYXRpb247IERhdGFiYXNlIG1hbmFnZW1lbnQ7IEluaXRpYWwgdXNlciBwcm92aXNpb25pbmdcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgY2x1c3RlciBtYXN0ZXIgdXNlcm5hbWUgZm9yIGFkbWluaXN0cmF0aXZlIGFjY2VzcyBhbmQgZGF0YWJhc2UgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFJlZHNoaWZ0IHVzZXJuYW1lOyByZXF1aXJlZDsgdXNlZCBmb3IgY2x1c3RlciBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3NcbiAgICoqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIG51bWJlciBvZiBkYXlzIGJldHdlZW4gYXV0b21hdGljIGFkbWluIHBhc3N3b3JkIHJvdGF0aW9ucyBmb3IgZW5oYW5jZWQgc2VjdXJpdHkgY29tcGxpYW5jZS4gRW5hYmxlcyBhdXRvbWF0ZWQgY3JlZGVudGlhbCBtYW5hZ2VtZW50IGFuZCBjb21wbGlhbmNlIHdpdGggcGFzc3dvcmQgcm90YXRpb24gcG9saWNpZXMgZm9yIGltcHJvdmVkIGNsdXN0ZXIgc2VjdXJpdHkgcG9zdHVyZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBBdXRvbWF0ZWQgY3JlZGVudGlhbCByb3RhdGlvbjsgU2VjdXJpdHkgcG9saWN5IGNvbXBsaWFuY2U7IFBhc3N3b3JkIG1hbmFnZW1lbnQgYXV0b21hdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBhdXRvbWF0aWMgcGFzc3dvcmQgcm90YXRpb24gY29uZmlndXJhdGlvbiBmb3Igc2VjdXJpdHkgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXI7IHJlcXVpcmVkOyBkZWZpbmVzIHBhc3N3b3JkIHJvdGF0aW9uIGZyZXF1ZW5jeSBmb3Igc2VjdXJpdHkgY29tcGxpYW5jZVxuICAgKiovXG4gIHJlYWRvbmx5IGFkbWluUGFzc3dvcmRSb3RhdGlvbkRheXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgZmVkZXJhdGlvbiBjb25maWd1cmF0aW9ucyBmb3IgU0FNTCBvciBPSURDIGlkZW50aXR5IHByb3ZpZGVyIGludGVncmF0aW9uIHdpdGggdGhlIGRhdGEgd2FyZWhvdXNlLiBFbmFibGVzIGZlZGVyYXRlZCBhY2Nlc3MgdG8gUmVkc2hpZnQgdGhyb3VnaCBleHRlcm5hbCBpZGVudGl0eSBwcm92aWRlcnMgZm9yIGNlbnRyYWxpemVkIGlkZW50aXR5IG1hbmFnZW1lbnQgYW5kIFNTTyBjYXBhYmlsaXRpZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU0FNTCBmZWRlcmF0aW9uIHNldHVwOyBPSURDIHByb3ZpZGVyIGludGVncmF0aW9uOyBDZW50cmFsaXplZCBpZGVudGl0eSBtYW5hZ2VtZW50IGZvciBkYXRhIHdhcmVob3VzZSBhY2Nlc3NcbiAgICpcbiAgICogQVdTOiBBV1MgSUFNIGlkZW50aXR5IHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gZm9yIGZlZGVyYXRlZCBSZWRzaGlmdCBhY2Nlc3MgYW5kIFNTTyBpbnRlZ3JhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIEZlZGVyYXRpb25Qcm9wcyBpZiBwcm92aWRlZDsgZW5hYmxlcyBmZWRlcmF0ZWQgYXV0aGVudGljYXRpb24gd2hlbiBzcGVjaWZpZWRcbiAgICoqL1xuICByZWFkb25seSBmZWRlcmF0aW9ucz86IEZlZGVyYXRpb25Qcm9wc1tdO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBhcnJheSBvZiBhZG1pbiByb2xlIHJlZmVyZW5jZXMgd2l0aCBmdWxsIGFjY2VzcyB0byBjbHVzdGVyIHJlc291cmNlcyBpbmNsdWRpbmcgS01TIGtleXMgYW5kIFMzIGJ1Y2tldHMuIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zIGZvciBkYXRhIHdhcmVob3VzZSBtYW5hZ2VtZW50LCBzZWN1cml0eSBhZG1pbmlzdHJhdGlvbiwgYW5kIHJlc291cmNlIGFjY2VzcyBjb250cm9sLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEFkbWluaXN0cmF0aXZlIGFjY2VzcyBjb250cm9sOyBTZWN1cml0eSBtYW5hZ2VtZW50OyBSZXNvdXJjZSBhZG1pbmlzdHJhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBJQU0gcm9sZXMgd2l0aCBmdWxsIFJlZHNoaWZ0IGNsdXN0ZXIgYW5kIHJlc291cmNlIGFjY2VzcyBwZXJtaXNzaW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIE1kYWFSb2xlUmVmIG9iamVjdHM7IHJlcXVpcmVkOyByb2xlcyByZWNlaXZlIGZ1bGwgY2x1c3RlciBhY2Nlc3NcbiAgICoqL1xuICByZWFkb25seSBkYXRhQWRtaW5Sb2xlczogTWRhYVJvbGVSZWZbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgdXNlciByb2xlIHJlZmVyZW5jZXMgd2l0aCBhY2Nlc3MgdG8gZGF0YSB3YXJlaG91c2UgUzMgYnVja2V0cyBmb3IgZGF0YSBsb2FkaW5nIGFuZCB1bmxvYWRpbmcgb3BlcmF0aW9ucy4gRW5hYmxlcyBjb250cm9sbGVkIGFjY2VzcyB0byB3YXJlaG91c2Ugc3RvcmFnZSByZXNvdXJjZXMgZm9yIEVUTCBvcGVyYXRpb25zIGFuZCBkYXRhIG1hbmFnZW1lbnQgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGEgbG9hZGluZyBvcGVyYXRpb25zOyBFVEwgd29ya2Zsb3cgYWNjZXNzOyBDb250cm9sbGVkIHN0b3JhZ2UgYWNjZXNzXG4gICAqXG4gICAqIEFXUzogQVdTIElBTSByb2xlcyB3aXRoIFMzIGJ1Y2tldCBhY2Nlc3MgZm9yIFJlZHNoaWZ0IGRhdGEgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIE1kYWFSb2xlUmVmIG9iamVjdHMgaWYgcHJvdmlkZWQ7IHJvbGVzIHJlY2VpdmUgYnVja2V0IGFjY2VzcyBwZXJtaXNzaW9uc1xuICAgKiovXG4gIHJlYWRvbmx5IHdhcmVob3VzZUJ1Y2tldFVzZXJSb2xlcz86IE1kYWFSb2xlUmVmW107XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGFycmF5IG9mIGV4dGVybmFsIGV4ZWN1dGlvbiByb2xlIHJlZmVyZW5jZXMgZm9yIFJlZHNoaWZ0IGNsdXN0ZXIgb3BlcmF0aW9ucyBhbmQgaW50ZWdyYXRpb25zLiBFbmFibGVzIGNsdXN0ZXIgdG8gYXNzdW1lIGV4dGVybmFsIHJvbGVzIGZvciBjcm9zcy1zZXJ2aWNlIG9wZXJhdGlvbnMsIGRhdGEgYWNjZXNzLCBhbmQgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBBV1Mgc2VydmljZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3Jvc3Mtc2VydmljZSBvcGVyYXRpb25zOyBFeHRlcm5hbCBkYXRhIGFjY2VzczsgU2VydmljZSBpbnRlZ3JhdGlvbiB3b3JrZmxvd3NcbiAgICpcbiAgICogQVdTOiBBV1MgSUFNIHJvbGVzIGZvciBSZWRzaGlmdCBjbHVzdGVyIGNyb3NzLXNlcnZpY2Ugb3BlcmF0aW9ucyBhbmQgaW50ZWdyYXRpb25zXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgTWRhYVJvbGVSZWYgb2JqZWN0cyBpZiBwcm92aWRlZDsgcm9sZXMgbXVzdCBiZSBhc3N1bWFibGUgYnkgUmVkc2hpZnQgc2VydmljZVxuICAgKiovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGVzPzogTWRhYVJvbGVSZWZbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgVlBDIElEIGZvciBSZWRzaGlmdCBjbHVzdGVyIGRlcGxveW1lbnQgcHJvdmlkaW5nIG5ldHdvcmsgaXNvbGF0aW9uIGFuZCBzZWN1cml0eSBjb250cm9scy4gRW5zdXJlcyBjbHVzdGVyIG9wZXJhdGVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIFZQQyBmb3Igc2VjdXJlIG5ldHdvcmtpbmcgYW5kIGludGVncmF0aW9uIHdpdGggb3RoZXIgVlBDIHJlc291cmNlcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBWUEMgbmV0d29yayBpc29sYXRpb247IFNlY3VyZSBuZXR3b3JraW5nOyBWUEMgcmVzb3VyY2UgaW50ZWdyYXRpb25cbiAgICpcbiAgICogQVdTOiBBbWF6b24gVlBDIGZvciBSZWRzaGlmdCBjbHVzdGVyIG5ldHdvcmsgaXNvbGF0aW9uIGFuZCBzZWN1cml0eSBjb250cm9sc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFZQQyBJRDsgcmVxdWlyZWQ7IFZQQyBtdXN0IGV4aXN0IGFuZCBiZSBhY2Nlc3NpYmxlXG4gICAqKi9cbiAgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgYXJyYXkgb2Ygc3VibmV0IElEcyBmb3IgUmVkc2hpZnQgY2x1c3RlciBub2RlIHBsYWNlbWVudCB3aXRoaW4gdGhlIFZQQy4gRGVmaW5lcyB0aGUgbmV0d29yayBzdWJuZXRzIHdoZXJlIGNsdXN0ZXIgbm9kZXMgd2lsbCBiZSBkZXBsb3llZCBmb3Igc2VjdXJlIFZQQyBjb25uZWN0aXZpdHkgYW5kIGF2YWlsYWJpbGl0eSB6b25lIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBWUEMgbmV0d29yayBwbGFjZW1lbnQ7IFN1Ym5ldC1zcGVjaWZpYyBkZXBsb3ltZW50OyBNdWx0aS1BWiBjbHVzdGVyIGRpc3RyaWJ1dGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBWUEMgc3VibmV0cyBmb3IgUmVkc2hpZnQgY2x1c3RlciBub2RlIHBsYWNlbWVudCBhbmQgbmV0d29yayBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc3VibmV0IElEczsgcmVxdWlyZWQ7IHN1Ym5ldHMgbXVzdCBleGlzdCBpbiBzcGVjaWZpZWQgVlBDXG4gICAqKi9cbiAgcmVhZG9ubHkgc3VibmV0SWRzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgc2VjdXJpdHkgZ3JvdXAgaW5ncmVzcyBjb25maWd1cmF0aW9uIGRlZmluaW5nIGFsbG93ZWQgaW5ib3VuZCBjb25uZWN0aW9ucyB0byB0aGUgY2x1c3Rlci4gU3BlY2lmaWVzIElQdjQgQ0lEUiBibG9ja3MgYW5kIHNlY3VyaXR5IGdyb3VwIElEcyB0aGF0IGNhbiBjb25uZWN0IHRvIHRoZSBjbHVzdGVyIHBvcnQgZm9yIGNvbnRyb2xsZWQgbmV0d29yayBhY2Nlc3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTmV0d29yayBhY2Nlc3MgY29udHJvbDsgQ2xpZW50IGNvbm5lY3Rpdml0eTsgU2VjdXJpdHkgZ3JvdXAgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBWUEMgc2VjdXJpdHkgZ3JvdXAgaW5ncmVzcyBydWxlcyBmb3IgUmVkc2hpZnQgY2x1c3RlciBhY2Nlc3MgY29udHJvbFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIG9iamVjdCB3aXRoIGlwdjQgYW5kL29yIHNnIGFycmF5czsgcmVxdWlyZWQ7IGRlZmluZXMgYWxsb3dlZCBpbmJvdW5kIGNvbm5lY3Rpb25zXG4gICAqICAgKiovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJbmdyZXNzOiB7IGlwdjQ/OiBzdHJpbmdbXTsgc2c/OiBzdHJpbmdbXSB9O1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBub2RlIHR5cGUgc3BlY2lmaWNhdGlvbiBkZXRlcm1pbmluZyBjb21wdXRlIGFuZCBzdG9yYWdlIGNhcGFjaXR5IGZvciBjbHVzdGVyIG5vZGVzLiBDb250cm9scyB0aGUgdW5kZXJseWluZyBFQzIgaW5zdGFuY2UgdHlwZSBhbmQgYWZmZWN0cyBwZXJmb3JtYW5jZSwgc3RvcmFnZSwgYW5kIGNvc3QgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBkYXRhIHdhcmVob3VzZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IENvc3QgbWFuYWdlbWVudDsgV29ya2xvYWQtc3BlY2lmaWMgc2l6aW5nXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IG5vZGUgdHlwZSBmb3IgY29tcHV0ZSBhbmQgc3RvcmFnZSBjYXBhY2l0eSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgUmVkc2hpZnQgbm9kZSB0eXBlOyByZXF1aXJlZDsgZGV0ZXJtaW5lcyBjbHVzdGVyIGNvbXB1dGUgYW5kIHN0b3JhZ2UgY2FwYWNpdHlcbiAgICoqL1xuICByZWFkb25seSBub2RlVHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBudW1iZXIgb2Ygbm9kZXMgZm9yIHRoZSBSZWRzaGlmdCBjbHVzdGVyIGRldGVybWluaW5nIHRvdGFsIGNvbXB1dGUgY2FwYWNpdHkgYW5kIHBhcmFsbGVsIHByb2Nlc3NpbmcgY2FwYWJpbGl0eS4gQ29udHJvbHMgY2x1c3RlciBzaXplIGFuZCBhZmZlY3RzIHBlcmZvcm1hbmNlLCBjb3N0LCBhbmQgZGF0YSBkaXN0cmlidXRpb24gY2hhcmFjdGVyaXN0aWNzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgc2l6aW5nOyBQZXJmb3JtYW5jZSBzY2FsaW5nOyBDb3N0IG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIG5vZGUgY291bnQgZm9yIGNvbXB1dGUgY2FwYWNpdHkgYW5kIHBhcmFsbGVsIHByb2Nlc3NpbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyOyByZXF1aXJlZDsgZGV0ZXJtaW5lcyBjbHVzdGVyIHNpemUgYW5kIHByb2Nlc3NpbmcgY2FwYWNpdHlcbiAgICoqL1xuICByZWFkb25seSBudW1iZXJPZk5vZGVzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIGZsYWcgZW5hYmxpbmcgYXVkaXQgbG9nZ2luZyB0byBTMyBmb3IgY29tcGxpYW5jZSBhbmQgc2VjdXJpdHkgbW9uaXRvcmluZy4gV2hlbiBlbmFibGVkLCBjcmVhdGVzIGRlZGljYXRlZCBTMyBidWNrZXQgZm9yIFJlZHNoaWZ0IGF1ZGl0IGxvZ3Mgd2l0aCBTU0UtUzMgZW5jcnlwdGlvbiBhcyByZXF1aXJlZCBieSBSZWRzaGlmdCBhdWRpdCBsb2dnaW5nIGNvbnN0cmFpbnRzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvbXBsaWFuY2UgYXVkaXRpbmc7IFNlY3VyaXR5IG1vbml0b3Jpbmc7IEF1ZGl0IHRyYWlsIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgYXVkaXQgbG9nZ2luZyB0byBTMyBmb3IgY29tcGxpYW5jZSBhbmQgc2VjdXJpdHkgbW9uaXRvcmluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBCb29sZWFuIHZhbHVlOyByZXF1aXJlZDsgY3JlYXRlcyBTU0UtUzMgZW5jcnlwdGVkIGF1ZGl0IGJ1Y2tldCB3aGVuIGVuYWJsZWRcbiAgICoqL1xuICByZWFkb25seSBlbmFibGVBdWRpdExvZ2dpbmdUb1MzOiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBjbHVzdGVyIHBvcnQgbnVtYmVyIGZvciBjbGllbnQgY29ubmVjdGlvbnMgZW5hYmxpbmcgY3VzdG9tIHBvcnQgY29uZmlndXJhdGlvbiBhbmQgbmV0d29yayBzZWN1cml0eS4gRGVmaW5lcyB0aGUgVENQIHBvcnQgb24gd2hpY2ggdGhlIFJlZHNoaWZ0IGNsdXN0ZXIgYWNjZXB0cyBjbGllbnQgY29ubmVjdGlvbnMsIHN1cHBvcnRpbmcgY3VzdG9tIG5ldHdvcmtpbmcgcmVxdWlyZW1lbnRzIGFuZCBzZWN1cml0eSBjb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDdXN0b20gcG9ydCBjb25maWd1cmF0aW9uOyBOZXR3b3JrIHNlY3VyaXR5OyBDbGllbnQgY29ubmVjdGlvbiBtYW5hZ2VtZW50OyBQb3J0IHN0YW5kYXJkaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIHBvcnQgY29uZmlndXJhdGlvbiBmb3IgY2xpZW50IGNvbm5lY3Rpb24gbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIHBvcnQgbnVtYmVyIGlmIHNwZWNpZmllZDsgZGVmYXVsdHMgdG8gNTQzOTA7IG11c3QgYmUgYWNjZXNzaWJsZSB0aHJvdWdoIHNlY3VyaXR5IGdyb3Vwc1xuICAgKiovXG4gIHJlYWRvbmx5IGNsdXN0ZXJQb3J0PzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIGNvbnRyb2xsaW5nIGNsdXN0ZXIgbm9kZSBjb25maWd1cmF0aW9uIGZvciBzaW5nbGUtbm9kZSBvciBtdWx0aS1ub2RlIGRlcGxveW1lbnQuIFdoZW4gdHJ1ZSwgY3JlYXRlcyBtdWx0aS1ub2RlIGNsdXN0ZXIgZm9yIGRpc3RyaWJ1dGVkIHByb2Nlc3Npbmc7IHdoZW4gZmFsc2UsIGNyZWF0ZXMgc2luZ2xlLW5vZGUgY2x1c3RlciBmb3IgZGV2ZWxvcG1lbnQgb3Igc21hbGwgd29ya2xvYWRzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgYXJjaGl0ZWN0dXJlIHNlbGVjdGlvbjsgRGV2ZWxvcG1lbnQgdnMgcHJvZHVjdGlvbiBkZXBsb3ltZW50OyBDb3N0IG9wdGltaXphdGlvbjsgUGVyZm9ybWFuY2Ugc2NhbGluZ1xuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIHR5cGUgY29uZmlndXJhdGlvbiBmb3Igc2luZ2xlLW5vZGUgb3IgbXVsdGktbm9kZSBkZXBsb3ltZW50XG4gICAqXG4gICAqIFZhbGlkYXRpb246IEJvb2xlYW4gdmFsdWU7IGRldGVybWluZXMgY2x1c3RlciBhcmNoaXRlY3R1cmUgYW5kIG5vZGUgZGlzdHJpYnV0aW9uOyBhZmZlY3RzIHBlcmZvcm1hbmNlIGFuZCBjb3N0XG4gICAqKi9cbiAgcmVhZG9ubHkgbXVsdGlOb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgcHJlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvdyBmb3IgYXV0b21hdGVkIGNsdXN0ZXIgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucy4gU3BlY2lmaWVzIHRoZSB3ZWVrbHkgdGltZSByYW5nZSBkdXJpbmcgd2hpY2ggc3lzdGVtIG1haW50ZW5hbmNlIGNhbiBvY2N1ciwgbWluaW1pemluZyBpbXBhY3Qgb24gYnVzaW5lc3Mgb3BlcmF0aW9ucyBhbmQgZW5zdXJpbmcgcHJlZGljdGFibGUgbWFpbnRlbmFuY2Ugc2NoZWR1bGluZy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBNYWludGVuYW5jZSBzY2hlZHVsaW5nOyBCdXNpbmVzcyBjb250aW51aXR5OyBPcGVyYXRpb25hbCBwbGFubmluZzsgRG93bnRpbWUgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBwcmVmZXJyZWQgbWFpbnRlbmFuY2Ugd2luZG93IGZvciBhdXRvbWF0ZWQgc3lzdGVtIG1haW50ZW5hbmNlXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgdGltZSB3aW5kb3cgZm9ybWF0IChlLmcuLCAnU3VuOjIzOjQ1LU1vbjowMDoxNScpOyByZXF1aXJlZDsgZGVmaW5lcyBtYWludGVuYW5jZSBzY2hlZHVsaW5nXG4gICAqKi9cbiAgcmVhZG9ubHkgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgcGFyYW1ldGVyIGdyb3VwIHBhcmFtZXRlcnMgZm9yIGNsdXN0ZXIgY29uZmlndXJhdGlvbiBjdXN0b21pemF0aW9uIGVuYWJsaW5nIHBlcmZvcm1hbmNlIHR1bmluZyBhbmQgb3BlcmF0aW9uYWwgb3B0aW1pemF0aW9uLiBQcm92aWRlcyBhZGRpdGlvbmFsIGNsdXN0ZXIgcGFyYW1ldGVycyB3aGlsZSBzZWN1cml0eS1zZW5zaXRpdmUgdmFsdWVzIGFyZSBhdXRvbWF0aWNhbGx5IG92ZXJyaWRkZW4gZm9yIGNvbXBsaWFuY2UgYW5kIHNlY3VyaXR5LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFBlcmZvcm1hbmNlIHR1bmluZzsgT3BlcmF0aW9uYWwgb3B0aW1pemF0aW9uOyBDdXN0b20gY2x1c3RlciBjb25maWd1cmF0aW9uOyBXb3JrbG9hZC1zcGVjaWZpYyBzZXR0aW5nc1xuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBwYXJhbWV0ZXIgZ3JvdXAgY29uZmlndXJhdGlvbiBmb3IgY2x1c3RlciBjdXN0b21pemF0aW9uIGFuZCBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBvYmplY3Qgd2l0aCBzdHJpbmcga2V5LXZhbHVlIHBhaXJzIGlmIHByb3ZpZGVkOyBzZWN1cml0eS1zZW5zaXRpdmUgdmFsdWVzIHdpbGwgYmUgb3ZlcnJpZGRlblxuICAgKiAgICoqL1xuICByZWFkb25seSBwYXJhbWV0ZXJHcm91cFBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHdvcmtsb2FkIG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbiBmb3IgcXVlcnkgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLiBEZWZpbmVzIFdMTSBjb25maWd1cmF0aW9uIGVsZW1lbnRzIGZvciBtYW5hZ2luZyBxdWVyeSBxdWV1ZXMsIG1lbW9yeSBhbGxvY2F0aW9uLCBhbmQgY29uY3VycmVuY3kgZm9yIG9wdGltYWwgY2x1c3RlciBwZXJmb3JtYW5jZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBRdWVyeSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IFJlc291cmNlIGFsbG9jYXRpb247IFdvcmtsb2FkIG1hbmFnZW1lbnQ7IENvbmN1cnJlbmN5IGNvbnRyb2xcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgd29ya2xvYWQgbWFuYWdlbWVudCBjb25maWd1cmF0aW9uIGZvciBxdWVyeSBvcHRpbWl6YXRpb24gYW5kIHJlc291cmNlIGNvbnRyb2xcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBhcnJheSBvZiB2YWxpZCBDb25maWd1cmF0aW9uRWxlbWVudCBvYmplY3RzIGlmIHByb3ZpZGVkOyBkZWZpbmVzIFdMTSBjb25maWd1cmF0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgd29ya2xvYWRNYW5hZ2VtZW50PzogQ29uZmlndXJhdGlvbkVsZW1lbnRbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYWRkaXRpb25hbCBLTVMga2V5IEFSTnMgZm9yIGNsdXN0ZXIgYnVja2V0IGVuY3J5cHRpb24gZW5hYmxpbmcgbXVsdGkta2V5IGVuY3J5cHRpb24gc2NlbmFyaW9zIGFuZCBjcm9zcy1hY2NvdW50IGFjY2Vzcy4gUHJvdmlkZXMgYWRkaXRpb25hbCBLTVMga2V5cyB0aGF0IGNhbiBiZSB1c2VkIGZvciB3cml0aW5nIHRvIHRoZSBjbHVzdGVyIGJ1Y2tldCBiZXlvbmQgdGhlIGRlZmF1bHQgY2x1c3RlciBlbmNyeXB0aW9uIGtleS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBNdWx0aS1rZXkgZW5jcnlwdGlvbjsgQ3Jvc3MtYWNjb3VudCBhY2Nlc3M7IEFkZGl0aW9uYWwgZW5jcnlwdGlvbiBrZXlzOyBGbGV4aWJsZSBrZXkgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFXUyBLTVMga2V5IEFSTnMgZm9yIGFkZGl0aW9uYWwgY2x1c3RlciBidWNrZXQgZW5jcnlwdGlvbiBhbmQgYWNjZXNzIGNvbnRyb2xcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBhcnJheSBvZiB2YWxpZCBLTVMga2V5IEFSTnMgaWYgcHJvdmlkZWQ7IGtleXMgbXVzdCBiZSBhY2Nlc3NpYmxlIGZvciBidWNrZXQgb3BlcmF0aW9uc1xuICAgKiovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxCdWNrZXRLbXNLZXlBcm5zPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHNjaGVkdWxlZCBhY3Rpb25zIGZvciBhdXRvbWF0ZWQgY2x1c3RlciBwYXVzZSBhbmQgcmVzdW1lIG9wZXJhdGlvbnMgZW5hYmxpbmcgY29zdCBvcHRpbWl6YXRpb24gYW5kIG9wZXJhdGlvbmFsIGF1dG9tYXRpb24uIERlZmluZXMgc2NoZWR1bGVkIHBhdXNlIGFuZCByZXN1bWUgYWN0aW9ucyBmb3IgdGhlIGNsdXN0ZXIgdG8gb3B0aW1pemUgY29zdHMgZHVyaW5nIG5vbi1idXNpbmVzcyBob3Vycy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDb3N0IG9wdGltaXphdGlvbjsgQXV0b21hdGVkIG9wZXJhdGlvbnM7IFNjaGVkdWxlZCBtYWludGVuYW5jZTsgUmVzb3VyY2UgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBzY2hlZHVsZWQgYWN0aW9ucyBmb3IgYXV0b21hdGVkIGNsdXN0ZXIgcGF1c2UgYW5kIHJlc3VtZSBvcGVyYXRpb25zXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgU2NoZWR1bGVkQWN0aW9uUHJvcHMgaWYgcHJvdmlkZWQ7IGRlZmluZXMgYXV0b21hdGVkIGNsdXN0ZXIgb3BlcmF0aW9uc1xuICAgKiovXG4gIHJlYWRvbmx5IHNjaGVkdWxlZEFjdGlvbnM/OiBTY2hlZHVsZWRBY3Rpb25Qcm9wc1tdO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBkYXRhYmFzZSB1c2VycyBmb3IgYXV0b21hdGVkIHVzZXIgY3JlYXRpb24gYW5kIGNyZWRlbnRpYWwgbWFuYWdlbWVudCBlbmFibGluZyBzZWN1cmUgdXNlciBwcm92aXNpb25pbmcgYW5kIHJvdGF0aW9uLiBDcmVhdGVzIGRhdGFiYXNlIHVzZXJzIGluIFJlZHNoaWZ0IHdpdGggYXV0b21hdGVkIGNyZWRlbnRpYWwgc3RvcmFnZSBhbmQgcm90YXRpb24gdGhyb3VnaCBTZWNyZXRzIE1hbmFnZXIgYW5kIFNTTS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBBdXRvbWF0ZWQgdXNlciBwcm92aXNpb25pbmc7IENyZWRlbnRpYWwgbWFuYWdlbWVudDsgU2VjdXJpdHkgYXV0b21hdGlvbjsgVXNlciBsaWZlY3ljbGUgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBkYXRhYmFzZSB1c2VycyB3aXRoIFNlY3JldHMgTWFuYWdlciBhbmQgU1NNIGludGVncmF0aW9uIGZvciBjcmVkZW50aWFsIG1hbmFnZW1lbnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBhcnJheSBvZiB2YWxpZCBEYXRhYmFzZVVzZXJzUHJvcHMgaWYgcHJvdmlkZWQ7IGVuYWJsZXMgYXV0b21hdGVkIHVzZXIgYW5kIGNyZWRlbnRpYWwgbWFuYWdlbWVudFxuICAgKiAgICoqL1xuICByZWFkb25seSBkYXRhYmFzZVVzZXJzPzogRGF0YWJhc2VVc2Vyc1Byb3BzW107XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgY29udHJvbGxpbmcgZGF0YSB3YXJlaG91c2UgYnVja2V0IGNyZWF0aW9uIGZvciBjbHVzdGVyIHN0b3JhZ2Ugb3BlcmF0aW9ucy4gV2hlbiBlbmFibGVkIChkZWZhdWx0KSwgY3JlYXRlcyBkZWRpY2F0ZWQgUzMgYnVja2V0IGZvciBkYXRhIHdhcmVob3VzZSBvcGVyYXRpb25zIGluY2x1ZGluZyBkYXRhIGxvYWRpbmcsIHVubG9hZGluZywgYW5kIGJhY2t1cCBzdG9yYWdlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFN0b3JhZ2UgcmVzb3VyY2UgbWFuYWdlbWVudDsgRGF0YSBvcGVyYXRpb25zOyBCYWNrdXAgc3RvcmFnZTsgRVRMIG9wZXJhdGlvbnNcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUzMgYnVja2V0IGNyZWF0aW9uIGZvciBSZWRzaGlmdCBkYXRhIHdhcmVob3VzZSBzdG9yYWdlIG9wZXJhdGlvbnNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogQm9vbGVhbiB2YWx1ZTsgZGVmYXVsdHMgdG8gdHJ1ZTsgY3JlYXRlcyBkZWRpY2F0ZWQgd2FyZWhvdXNlIGJ1Y2tldCB3aGVuIGVuYWJsZWRcbiAgICoqL1xuICByZWFkb25seSBjcmVhdGVXYXJlaG91c2VCdWNrZXQ/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCByZXRlbnRpb24gcGVyaW9kIGZvciBhdXRvbWF0ZWQgc25hcHNob3RzIGVuYWJsaW5nIGJhY2t1cCBtYW5hZ2VtZW50IGFuZCBkYXRhIHByb3RlY3Rpb24uIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYXV0b21hdGVkIHNuYXBzaG90cyBhcmUgcmV0YWluZWQgZm9yIHBvaW50LWluLXRpbWUgcmVjb3ZlcnkgYW5kIGRhdGEgcHJvdGVjdGlvbiByZXF1aXJlbWVudHMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQmFja3VwIG1hbmFnZW1lbnQ7IERhdGEgcHJvdGVjdGlvbjsgUG9pbnQtaW4tdGltZSByZWNvdmVyeTsgQ29tcGxpYW5jZSByZXF1aXJlbWVudHNcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgYXV0b21hdGVkIHNuYXBzaG90IHJldGVudGlvbiBmb3IgYmFja3VwIG1hbmFnZW1lbnQgYW5kIGRhdGEgcHJvdGVjdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgaWYgc3BlY2lmaWVkOyBkZWZpbmVzIHNuYXBzaG90IHJldGVudGlvbiBwZXJpb2QgZm9yIGJhY2t1cCBtYW5hZ2VtZW50XG4gICAqKi9cbiAgcmVhZG9ubHkgYXV0b21hdGVkU25hcHNob3RSZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBldmVudCBub3RpZmljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgY2x1c3RlciBhbmQgc2NoZWR1bGVkIGFjdGlvbiBtb25pdG9yaW5nIGVuYWJsaW5nIG9wZXJhdGlvbmFsIGF3YXJlbmVzcyBhbmQgYWxlcnRpbmcuIENvbmZpZ3VyZXMgU05TIG5vdGlmaWNhdGlvbnMgZm9yIGNsdXN0ZXIgZXZlbnRzIGFuZCBzY2hlZHVsZWQgYWN0aW9uIHN0YXR1cyBmb3Igb3BlcmF0aW9uYWwgbW9uaXRvcmluZy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBPcGVyYXRpb25hbCBtb25pdG9yaW5nOyBFdmVudCBhbGVydGluZzsgQ2x1c3RlciBzdGF0dXMgdHJhY2tpbmc7IEF1dG9tYXRlZCBub3RpZmljYXRpb25zXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFNOUyBub3RpZmljYXRpb25zIGZvciBSZWRzaGlmdCBjbHVzdGVyIGV2ZW50cyBhbmQgb3BlcmF0aW9uYWwgbW9uaXRvcmluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIEV2ZW50Tm90aWZpY2F0aW9uc1Byb3BzIGlmIHByb3ZpZGVkOyBlbmFibGVzIGNsdXN0ZXIgZXZlbnQgbW9uaXRvcmluZyBhbmQgYWxlcnRpbmdcbiAgICoqL1xuICByZWFkb25seSBldmVudE5vdGlmaWNhdGlvbnM/OiBFdmVudE5vdGlmaWNhdGlvbnNQcm9wcztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZGF0YWJhc2UgbmFtZSBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjcmVhdGlvbiBlbmFibGluZyBjdXN0b20gZGF0YWJhc2UgbmFtaW5nIGFuZCBvcmdhbml6YXRpb24uIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgaW5pdGlhbCBkYXRhYmFzZSBjcmVhdGVkIGluIHRoZSBjbHVzdGVyLCBzdXBwb3J0aW5nIGN1c3RvbSBuYW1pbmcgY29udmVudGlvbnMgYW5kIGRhdGFiYXNlIG9yZ2FuaXphdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDdXN0b20gZGF0YWJhc2UgbmFtaW5nOyBEYXRhYmFzZSBvcmdhbml6YXRpb247IEluaXRpYWwgZGF0YWJhc2Ugc2V0dXA7IE5hbWluZyBjb252ZW50aW9uc1xuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBpbml0aWFsIGRhdGFiYXNlIG5hbWUgZm9yIGNsdXN0ZXIgZGF0YWJhc2UgY3JlYXRpb24gYW5kIG9yZ2FuaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGRhdGFiYXNlIG5hbWUgaWYgc3BlY2lmaWVkOyBkZWZhdWx0cyB0byBcImRlZmF1bHRfZGJcIjsgdXNlZCBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjcmVhdGlvblxuICAgKiovXG4gIHJlYWRvbmx5IGRiTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgc25hcHNob3QgaWRlbnRpZmllciBmb3IgY2x1c3RlciByZXN0b3JhdGlvbiBmcm9tIGV4aXN0aW5nIHNuYXBzaG90IGVuYWJsaW5nIGRpc2FzdGVyIHJlY292ZXJ5IGFuZCBkYXRhIG1pZ3JhdGlvbi4gU3BlY2lmaWVzIHRoZSBzbmFwc2hvdCBJRCB0byByZXN0b3JlIHRoZSBjbHVzdGVyIGZyb20sIHN1cHBvcnRpbmcgZGlzYXN0ZXIgcmVjb3Zlcnkgc2NlbmFyaW9zIGFuZCBkYXRhIG1pZ3JhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERpc2FzdGVyIHJlY292ZXJ5OyBEYXRhIG1pZ3JhdGlvbjsgQ2x1c3RlciByZXN0b3JhdGlvbjsgQmFja3VwIHJlY292ZXJ5XG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IHNuYXBzaG90IGlkZW50aWZpZXIgZm9yIGNsdXN0ZXIgcmVzdG9yYXRpb24gYW5kIGRpc2FzdGVyIHJlY292ZXJ5XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgc25hcHNob3QgaWRlbnRpZmllciBpZiBzcGVjaWZpZWQ7IG9ubHkgcHJvdmlkZSB3aGVuIHJlc3RvcmluZyBmcm9tIHNuYXBzaG90XG4gICAqKi9cbiAgcmVhZG9ubHkgc25hcHNob3RJZGVudGlmaWVyPzogc3RyaW5nO1xuICAvKipcbiAgICogb3duZXJBY2NvdW50IFJlZmVycyB0byBzbmFwc2hvdCBvd25lciBhY2NvdW50LiBBcHBsaWNhYmxlIGlmIHJlc3RvcmluZyB0aGUgY2x1c3RlciBmcm9tIHNuYXBzaG90IGFuZCBzbmFwc2hvdCBiZWxvbmdzIHRvIGFub3RoZXIgYWNjb3VudFxuICAgKiBPcHRpb25hbCAtIEJ5IGRlZmF1bHQsIHNuYXBzaG90cyBhcmUgc2VhcmNoZWQgd2l0aGluIGN1cnJlbnQgYWNjb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RPd25lckFjY291bnQ/OiBudW1iZXI7XG5cbiAgcmVhZG9ubHkgcmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhV2FyZWhvdXNlQ29uZmlnUGFyc2VyIGV4dGVuZHMgTWRhYUFwcENvbmZpZ1BhcnNlcjxEYXRhV2FyZWhvdXNlQ29uZmlnQ29udGVudHM+IHtcbiAgcHVibGljIHJlYWRvbmx5IGFkbWluVXNlcm5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGFkbWluUGFzc3dvcmRSb3RhdGlvbkRheXM6IG51bWJlcjtcbiAgcHVibGljIHJlYWRvbmx5IGZlZGVyYXRpb25zOiBGZWRlcmF0aW9uUHJvcHNbXTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGFiYXNlVXNlcnM6IERhdGFiYXNlVXNlcnNQcm9wc1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0YUFkbWluUm9sZVJlZnM6IE1kYWFSb2xlUmVmW107XG4gIHB1YmxpYyByZWFkb25seSB3YXJlaG91c2VCdWNrZXRVc2VyUm9sZVJlZnM/OiBNZGFhUm9sZVJlZltdO1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZVJlZnM/OiBNZGFhUm9sZVJlZltdO1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGNsdXN0ZXJQb3J0OiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZHM6IHN0cmluZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgbm9kZVR5cGU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGVuYWJsZUF1ZGl0TG9nZ2luZ1RvUzM6IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBudW1iZXJPZk5vZGVzOiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBtdWx0aU5vZGU/OiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJbmdyZXNzOiB7IGlwdjQ/OiBzdHJpbmdbXTsgc2c/OiBzdHJpbmdbXSB9O1xuICBwdWJsaWMgcmVhZG9ubHkgcGFyYW1ldGVyR3JvdXBQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHB1YmxpYyByZWFkb25seSB3b3JrbG9hZE1hbmFnZW1lbnQ6IENvbmZpZ3VyYXRpb25FbGVtZW50W107XG4gIHB1YmxpYyByZWFkb25seSBhZGRpdGlvbmFsQnVja2V0S21zS2V5QXJucz86IHN0cmluZ1tdO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRDbHVzdGVyUG9ydCA9IDU0MzkwO1xuICBwdWJsaWMgcmVhZG9ubHkgc2NoZWR1bGVkQWN0aW9uczogU2NoZWR1bGVkQWN0aW9uUHJvcHNbXTtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZVdhcmVob3VzZUJ1Y2tldD86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBhdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvbkRheXM/OiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBldmVudE5vdGlmaWNhdGlvbnM/OiBFdmVudE5vdGlmaWNhdGlvbnNQcm9wcztcbiAgcHVibGljIHJlYWRvbmx5IGRiTmFtZT86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90T3duZXJBY2NvdW50PzogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZD86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc3RhY2s6IFN0YWNrLCBwcm9wczogTWRhYUFwcENvbmZpZ1BhcnNlclByb3BzKSB7XG4gICAgc3VwZXIoc3RhY2ssIHByb3BzLCBjb25maWdTY2hlbWEgYXMgU2NoZW1hKTtcblxuICAgIHRoaXMuYWRtaW5Vc2VybmFtZSA9IHRoaXMuY29uZmlnQ29udGVudHMuYWRtaW5Vc2VybmFtZTtcbiAgICB0aGlzLmFkbWluUGFzc3dvcmRSb3RhdGlvbkRheXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmFkbWluUGFzc3dvcmRSb3RhdGlvbkRheXM7XG4gICAgdGhpcy5mZWRlcmF0aW9ucyA9IHRoaXMuY29uZmlnQ29udGVudHMuZmVkZXJhdGlvbnMgPyB0aGlzLmNvbmZpZ0NvbnRlbnRzLmZlZGVyYXRpb25zIDogW107XG4gICAgdGhpcy5kYXRhQWRtaW5Sb2xlUmVmcyA9IHRoaXMuY29uZmlnQ29udGVudHMuZGF0YUFkbWluUm9sZXM7XG4gICAgdGhpcy53YXJlaG91c2VCdWNrZXRVc2VyUm9sZVJlZnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLndhcmVob3VzZUJ1Y2tldFVzZXJSb2xlcztcbiAgICB0aGlzLmV4ZWN1dGlvblJvbGVSZWZzID0gdGhpcy5jb25maWdDb250ZW50cy5leGVjdXRpb25Sb2xlcztcbiAgICB0aGlzLnZwY0lkID0gdGhpcy5jb25maWdDb250ZW50cy52cGNJZDtcbiAgICB0aGlzLnN1Ym5ldElkcyA9IHRoaXMuY29uZmlnQ29udGVudHMuc3VibmV0SWRzO1xuICAgIHRoaXMuc2VjdXJpdHlHcm91cEluZ3Jlc3MgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnNlY3VyaXR5R3JvdXBJbmdyZXNzO1xuICAgIHRoaXMubm9kZVR5cGUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm5vZGVUeXBlO1xuICAgIHRoaXMubnVtYmVyT2ZOb2RlcyA9IHRoaXMuY29uZmlnQ29udGVudHMubnVtYmVyT2ZOb2RlcztcbiAgICB0aGlzLmVuYWJsZUF1ZGl0TG9nZ2luZ1RvUzMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmVuYWJsZUF1ZGl0TG9nZ2luZ1RvUzM7XG4gICAgdGhpcy5jbHVzdGVyUG9ydCA9IHRoaXMuY29uZmlnQ29udGVudHMuY2x1c3RlclBvcnRcbiAgICAgID8gdGhpcy5jb25maWdDb250ZW50cy5jbHVzdGVyUG9ydFxuICAgICAgOiBEYXRhV2FyZWhvdXNlQ29uZmlnUGFyc2VyLmRlZmF1bHRDbHVzdGVyUG9ydDtcbiAgICB0aGlzLm11bHRpTm9kZSA9IHRoaXMuY29uZmlnQ29udGVudHMubXVsdGlOb2RlO1xuICAgIHRoaXMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3cgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93O1xuICAgIHRoaXMucGFyYW1ldGVyR3JvdXBQYXJhbXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnBhcmFtZXRlckdyb3VwUGFyYW1zXG4gICAgICA/IHRoaXMuY29uZmlnQ29udGVudHMucGFyYW1ldGVyR3JvdXBQYXJhbXNcbiAgICAgIDoge307XG4gICAgdGhpcy53b3JrbG9hZE1hbmFnZW1lbnQgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLndvcmtsb2FkTWFuYWdlbWVudCA/IHRoaXMuY29uZmlnQ29udGVudHMud29ya2xvYWRNYW5hZ2VtZW50IDogW107XG4gICAgdGhpcy5hZGRpdGlvbmFsQnVja2V0S21zS2V5QXJucyA9IHRoaXMuY29uZmlnQ29udGVudHMuYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnM7XG4gICAgdGhpcy5zY2hlZHVsZWRBY3Rpb25zID0gdGhpcy5jb25maWdDb250ZW50cy5zY2hlZHVsZWRBY3Rpb25zID8gdGhpcy5jb25maWdDb250ZW50cy5zY2hlZHVsZWRBY3Rpb25zIDogW107XG4gICAgdGhpcy5kYXRhYmFzZVVzZXJzID0gdGhpcy5jb25maWdDb250ZW50cy5kYXRhYmFzZVVzZXJzID8gdGhpcy5jb25maWdDb250ZW50cy5kYXRhYmFzZVVzZXJzIDogW107XG4gICAgdGhpcy5jcmVhdGVXYXJlaG91c2VCdWNrZXQgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmNyZWF0ZVdhcmVob3VzZUJ1Y2tldDtcbiAgICB0aGlzLmF1dG9tYXRlZFNuYXBzaG90UmV0ZW50aW9uRGF5cyA9IHRoaXMuY29uZmlnQ29udGVudHMuYXV0b21hdGVkU25hcHNob3RSZXRlbnRpb25EYXlzO1xuICAgIHRoaXMuZXZlbnROb3RpZmljYXRpb25zID0gdGhpcy5jb25maWdDb250ZW50cy5ldmVudE5vdGlmaWNhdGlvbnM7XG4gICAgdGhpcy5kYk5hbWUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmRiTmFtZTtcbiAgICB0aGlzLnNuYXBzaG90SWRlbnRpZmllciA9IHRoaXMuY29uZmlnQ29udGVudHMuc25hcHNob3RJZGVudGlmaWVyO1xuICAgIHRoaXMuc25hcHNob3RPd25lckFjY291bnQgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnNuYXBzaG90T3duZXJBY2NvdW50O1xuICAgIHRoaXMucmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZCA9IHRoaXMuY29uZmlnQ29udGVudHMucmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { MdaaAppConfigParserProps, MdaaCdkApp } from '@aws-mdaa/app';
|
|
6
|
+
import { MdaaL3ConstructProps } from '@aws-mdaa/l3-construct';
|
|
7
|
+
import { AppProps, Stack } from 'aws-cdk-lib';
|
|
8
|
+
export declare class DataWarehouseCDKApp extends MdaaCdkApp {
|
|
9
|
+
constructor(props?: AppProps);
|
|
10
|
+
protected subGenerateResources(stack: Stack, l3ConstructProps: MdaaL3ConstructProps, parserProps: MdaaAppConfigParserProps): Stack[];
|
|
11
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DataWarehouseCDKApp = void 0;
|
|
10
|
+
const app_1 = require("@aws-mdaa/app");
|
|
11
|
+
const datawarehouse_l3_construct_1 = require("@aws-mdaa/datawarehouse-l3-construct");
|
|
12
|
+
const datawarehouse_config_1 = require("./datawarehouse-config");
|
|
13
|
+
class DataWarehouseCDKApp extends app_1.MdaaCdkApp {
|
|
14
|
+
constructor(props = {}) {
|
|
15
|
+
super(props, app_1.MdaaCdkApp.parsePackageJson(`${__dirname}/../package.json`));
|
|
16
|
+
}
|
|
17
|
+
subGenerateResources(stack, l3ConstructProps, parserProps) {
|
|
18
|
+
const appConfig = new datawarehouse_config_1.DataWarehouseConfigParser(stack, parserProps);
|
|
19
|
+
const constructProps = {
|
|
20
|
+
...appConfig,
|
|
21
|
+
...l3ConstructProps,
|
|
22
|
+
};
|
|
23
|
+
new datawarehouse_l3_construct_1.DataWarehouseL3Construct(stack, 'construct', constructProps);
|
|
24
|
+
return [stack];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.DataWarehouseCDKApp = DataWarehouseCDKApp;
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXdhcmVob3VzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRhdGF3YXJlaG91c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBRUgsdUNBQXFFO0FBQ3JFLHFGQUErRztBQUcvRyxpRUFBbUU7QUFFbkUsTUFBYSxtQkFBb0IsU0FBUSxnQkFBVTtJQUNqRCxZQUFZLFFBQWtCLEVBQUU7UUFDOUIsS0FBSyxDQUFDLEtBQUssRUFBRSxnQkFBVSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsU0FBUyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNTLG9CQUFvQixDQUM1QixLQUFZLEVBQ1osZ0JBQXNDLEVBQ3RDLFdBQXFDO1FBRXJDLE1BQU0sU0FBUyxHQUFHLElBQUksZ0RBQXlCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sY0FBYyxHQUFrQztZQUNwRCxHQUFHLFNBQVM7WUFDWixHQUFHLGdCQUFnQjtTQUNwQixDQUFDO1FBQ0YsSUFBSSxxREFBd0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRWpFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFsQkQsa0RBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgTWRhYUFwcENvbmZpZ1BhcnNlclByb3BzLCBNZGFhQ2RrQXBwIH0gZnJvbSAnQGF3cy1tZGFhL2FwcCc7XG5pbXBvcnQgeyBEYXRhV2FyZWhvdXNlTDNDb25zdHJ1Y3QsIERhdGFXYXJlaG91c2VMM0NvbnN0cnVjdFByb3BzIH0gZnJvbSAnQGF3cy1tZGFhL2RhdGF3YXJlaG91c2UtbDMtY29uc3RydWN0JztcbmltcG9ydCB7IE1kYWFMM0NvbnN0cnVjdFByb3BzIH0gZnJvbSAnQGF3cy1tZGFhL2wzLWNvbnN0cnVjdCc7XG5pbXBvcnQgeyBBcHBQcm9wcywgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEYXRhV2FyZWhvdXNlQ29uZmlnUGFyc2VyIH0gZnJvbSAnLi9kYXRhd2FyZWhvdXNlLWNvbmZpZyc7XG5cbmV4cG9ydCBjbGFzcyBEYXRhV2FyZWhvdXNlQ0RLQXBwIGV4dGVuZHMgTWRhYUNka0FwcCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBBcHBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIocHJvcHMsIE1kYWFDZGtBcHAucGFyc2VQYWNrYWdlSnNvbihgJHtfX2Rpcm5hbWV9Ly4uL3BhY2thZ2UuanNvbmApKTtcbiAgfVxuICBwcm90ZWN0ZWQgc3ViR2VuZXJhdGVSZXNvdXJjZXMoXG4gICAgc3RhY2s6IFN0YWNrLFxuICAgIGwzQ29uc3RydWN0UHJvcHM6IE1kYWFMM0NvbnN0cnVjdFByb3BzLFxuICAgIHBhcnNlclByb3BzOiBNZGFhQXBwQ29uZmlnUGFyc2VyUHJvcHMsXG4gICkge1xuICAgIGNvbnN0IGFwcENvbmZpZyA9IG5ldyBEYXRhV2FyZWhvdXNlQ29uZmlnUGFyc2VyKHN0YWNrLCBwYXJzZXJQcm9wcyk7XG4gICAgY29uc3QgY29uc3RydWN0UHJvcHM6IERhdGFXYXJlaG91c2VMM0NvbnN0cnVjdFByb3BzID0ge1xuICAgICAgLi4uYXBwQ29uZmlnLFxuICAgICAgLi4ubDNDb25zdHJ1Y3RQcm9wcyxcbiAgICB9O1xuICAgIG5ldyBEYXRhV2FyZWhvdXNlTDNDb25zdHJ1Y3Qoc3RhY2ssICdjb25zdHJ1Y3QnLCBjb25zdHJ1Y3RQcm9wcyk7XG5cbiAgICByZXR1cm4gW3N0YWNrXTtcbiAgfVxufVxuIl19
|
package/mdaa.config.json
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aws-mdaa/datawarehouse",
|
|
3
|
+
"description": "MDAA datawarehouse module",
|
|
4
|
+
"author": {
|
|
5
|
+
"name": "Amazon Web Services",
|
|
6
|
+
"url": "https://aws.amazon.com/solutions"
|
|
7
|
+
},
|
|
8
|
+
"bin": {
|
|
9
|
+
"datawarehouse-cdk": "bin/datawarehouse.js"
|
|
10
|
+
},
|
|
11
|
+
"version": "1.2.0",
|
|
12
|
+
"license": "Apache-2.0",
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc && typescript-json-schema --required --noExtraProps tsconfig.json DataWarehouseConfigContents --include 'lib/*.ts' --include '../../../../node_modules/@types/**/*.ts' --include 'lib/config-schema.json' > lib/config-schema.json && cp lib/config-schema.json ../../../../schemas/${npm_package_name}.json",
|
|
15
|
+
"watch": "tsc -w",
|
|
16
|
+
"test": "jest --passWithNoTests --coverage",
|
|
17
|
+
"cdk": "cdk",
|
|
18
|
+
"lint": "eslint --max-warnings 0 -c ../../../../.eslintrc.json '**/*.{ts,tsx}' --ignore-pattern 'dist/*' --ignore-pattern 'node_modules/*' --ignore-pattern \"*.d.ts\" "
|
|
19
|
+
},
|
|
20
|
+
"main": "lib/index.js",
|
|
21
|
+
"types": "lib/index.d.ts",
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@aws-mdaa/testing": "1.2.0",
|
|
24
|
+
"@types/jest": "29.5.0",
|
|
25
|
+
"@types/node": "17.0.23",
|
|
26
|
+
"@types/prettier": "2.6.0",
|
|
27
|
+
"jest": "29.5.0",
|
|
28
|
+
"ts-jest": "29.1.0",
|
|
29
|
+
"ts-node": "10.9.1",
|
|
30
|
+
"typescript": "4.6.3",
|
|
31
|
+
"typescript-json-schema": "0.63.0"
|
|
32
|
+
},
|
|
33
|
+
"overrides": {
|
|
34
|
+
"aws-cdk-lib": "2.201.0",
|
|
35
|
+
"@types/babel__traverse": "7.18.2"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@aws-mdaa/app": "1.2.0",
|
|
39
|
+
"@aws-mdaa/config": "1.2.0",
|
|
40
|
+
"@aws-mdaa/datawarehouse-l3-construct": "1.2.0",
|
|
41
|
+
"@aws-mdaa/iam-role-helper": "1.2.0",
|
|
42
|
+
"@aws-mdaa/l3-construct": "1.2.0",
|
|
43
|
+
"ajv": "8.17.1",
|
|
44
|
+
"aws-cdk-lib": "2.201.0",
|
|
45
|
+
"cdk-nag": "2.37.1",
|
|
46
|
+
"constructs": "10.0.96",
|
|
47
|
+
"source-map-support": "0.5.21",
|
|
48
|
+
"yaml": "1.10.2"
|
|
49
|
+
},
|
|
50
|
+
"gitHead": "8b49a2b371014baec046605ffdbfe38951099c31",
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "https://github.com/aws/modern-data-architecture-accelerator"
|
|
54
|
+
}
|
|
55
|
+
}
|