@aws-mdaa/datawarehouse 1.4.0 → 1.6.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.
@@ -39,10 +39,15 @@ class DataWarehouseConfigParser extends app_1.MdaaAppConfigParser {
39
39
  this.eventNotifications = this.configContents.eventNotifications;
40
40
  this.dbName = this.configContents.dbName;
41
41
  this.snapshotIdentifier = this.configContents.snapshotIdentifier;
42
- this.snapshotOwnerAccount = this.configContents.snapshotOwnerAccount;
42
+ this.snapshotOwnerAccount = this.configContents.snapshotOwnerAccount
43
+ ? String(this.configContents.snapshotOwnerAccount)
44
+ : undefined;
43
45
  this.redshiftManageMasterPassword = this.configContents.redshiftManageMasterPassword;
46
+ this.multiAz = this.configContents.multiAz;
47
+ this.backupRegion = this.configContents.backupRegion;
48
+ this.publicAccessBlockManagedExternally = this.configContents.publicAccessBlockManagedExternally;
44
49
  }
45
50
  }
46
51
  exports.DataWarehouseConfigParser = DataWarehouseConfigParser;
47
52
  DataWarehouseConfigParser.defaultClusterPort = 5440;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXdhcmVob3VzZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhd2FyZWhvdXNlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCx1Q0FBc0c7QUFVdEcscURBQXFEO0FBZ1NyRCxNQUFhLHlCQUEwQixTQUFRLHlCQUFnRDtJQThCN0YsWUFBWSxLQUFZLEVBQUUsS0FBK0I7UUFDdkQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBc0IsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUM7UUFDL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUM7UUFDNUQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUM7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVc7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVztZQUNqQyxDQUFDLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQztRQUNqRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7WUFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9HLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQztRQUN2RSxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQztRQUN6RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDO1FBQ2pFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDO1FBQ3JFLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFDO0lBQ3ZGLENBQUM7O0FBaEVILDhEQWlFQztBQTdDd0IsNENBQWtCLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgTWRhYUFwcENvbmZpZ1BhcnNlciwgTWRhYUFwcENvbmZpZ1BhcnNlclByb3BzLCBNZGFhQmFzZUNvbmZpZ0NvbnRlbnRzIH0gZnJvbSAnQGF3cy1tZGFhL2FwcCc7XG5pbXBvcnQge1xuICBGZWRlcmF0aW9uUHJvcHMsXG4gIFNjaGVkdWxlZEFjdGlvblByb3BzLFxuICBEYXRhYmFzZVVzZXJzUHJvcHMsXG4gIEV2ZW50Tm90aWZpY2F0aW9uc1Byb3BzLFxufSBmcm9tICdAYXdzLW1kYWEvZGF0YXdhcmVob3VzZS1sMy1jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgTWRhYVJvbGVSZWYgfSBmcm9tICdAYXdzLW1kYWEvaWFtLXJvbGUtaGVscGVyJztcbmltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ2Fqdic7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvbmZpZ1NjaGVtYSBmcm9tICcuL2NvbmZpZy1zY2hlbWEuanNvbic7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uRWxlbWVudCB9IGZyb20gJ0Bhd3MtbWRhYS9jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFXYXJlaG91c2VDb25maWdDb250ZW50cyBleHRlbmRzIE1kYWFCYXNlQ29uZmlnQ29udGVudHMge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBhZG1pbiB1c2VybmFtZSBmb3IgdGhlIFJlZHNoaWZ0IGNsdXN0ZXIgcHJvdmlkaW5nIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byB0aGUgZGF0YSB3YXJlaG91c2UuIERlZmluZXMgdGhlIG1hc3RlciB1c2VyIGFjY291bnQgZm9yIGNsdXN0ZXIgYWRtaW5pc3RyYXRpb24sIGRhdGFiYXNlIG1hbmFnZW1lbnQsIGFuZCBpbml0aWFsIHVzZXIgcHJvdmlzaW9uaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgYWRtaW5pc3RyYXRpb247IERhdGFiYXNlIG1hbmFnZW1lbnQ7IEluaXRpYWwgdXNlciBwcm92aXNpb25pbmdcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgY2x1c3RlciBtYXN0ZXIgdXNlcm5hbWUgZm9yIGFkbWluaXN0cmF0aXZlIGFjY2VzcyBhbmQgZGF0YWJhc2UgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFJlZHNoaWZ0IHVzZXJuYW1lOyByZXF1aXJlZDsgdXNlZCBmb3IgY2x1c3RlciBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3NcbiAgICoqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIG51bWJlciBvZiBkYXlzIGJldHdlZW4gYXV0b21hdGljIGFkbWluIHBhc3N3b3JkIHJvdGF0aW9ucyBmb3IgZW5oYW5jZWQgc2VjdXJpdHkgY29tcGxpYW5jZS4gRW5hYmxlcyBhdXRvbWF0ZWQgY3JlZGVudGlhbCBtYW5hZ2VtZW50IGFuZCBjb21wbGlhbmNlIHdpdGggcGFzc3dvcmQgcm90YXRpb24gcG9saWNpZXMgZm9yIGltcHJvdmVkIGNsdXN0ZXIgc2VjdXJpdHkgcG9zdHVyZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBBdXRvbWF0ZWQgY3JlZGVudGlhbCByb3RhdGlvbjsgU2VjdXJpdHkgcG9saWN5IGNvbXBsaWFuY2U7IFBhc3N3b3JkIG1hbmFnZW1lbnQgYXV0b21hdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBhdXRvbWF0aWMgcGFzc3dvcmQgcm90YXRpb24gY29uZmlndXJhdGlvbiBmb3Igc2VjdXJpdHkgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXI7IHJlcXVpcmVkOyBkZWZpbmVzIHBhc3N3b3JkIHJvdGF0aW9uIGZyZXF1ZW5jeSBmb3Igc2VjdXJpdHkgY29tcGxpYW5jZVxuICAgKiovXG4gIHJlYWRvbmx5IGFkbWluUGFzc3dvcmRSb3RhdGlvbkRheXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgZmVkZXJhdGlvbiBjb25maWd1cmF0aW9ucyBmb3IgU0FNTCBvciBPSURDIGlkZW50aXR5IHByb3ZpZGVyIGludGVncmF0aW9uIHdpdGggdGhlIGRhdGEgd2FyZWhvdXNlLiBFbmFibGVzIGZlZGVyYXRlZCBhY2Nlc3MgdG8gUmVkc2hpZnQgdGhyb3VnaCBleHRlcm5hbCBpZGVudGl0eSBwcm92aWRlcnMgZm9yIGNlbnRyYWxpemVkIGlkZW50aXR5IG1hbmFnZW1lbnQgYW5kIFNTTyBjYXBhYmlsaXRpZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU0FNTCBmZWRlcmF0aW9uIHNldHVwOyBPSURDIHByb3ZpZGVyIGludGVncmF0aW9uOyBDZW50cmFsaXplZCBpZGVudGl0eSBtYW5hZ2VtZW50IGZvciBkYXRhIHdhcmVob3VzZSBhY2Nlc3NcbiAgICpcbiAgICogQVdTOiBBV1MgSUFNIGlkZW50aXR5IHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gZm9yIGZlZGVyYXRlZCBSZWRzaGlmdCBhY2Nlc3MgYW5kIFNTTyBpbnRlZ3JhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIEZlZGVyYXRpb25Qcm9wcyBpZiBwcm92aWRlZDsgZW5hYmxlcyBmZWRlcmF0ZWQgYXV0aGVudGljYXRpb24gd2hlbiBzcGVjaWZpZWRcbiAgICoqL1xuICByZWFkb25seSBmZWRlcmF0aW9ucz86IEZlZGVyYXRpb25Qcm9wc1tdO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBhcnJheSBvZiBhZG1pbiByb2xlIHJlZmVyZW5jZXMgd2l0aCBmdWxsIGFjY2VzcyB0byBjbHVzdGVyIHJlc291cmNlcyBpbmNsdWRpbmcgS01TIGtleXMgYW5kIFMzIGJ1Y2tldHMuIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zIGZvciBkYXRhIHdhcmVob3VzZSBtYW5hZ2VtZW50LCBzZWN1cml0eSBhZG1pbmlzdHJhdGlvbiwgYW5kIHJlc291cmNlIGFjY2VzcyBjb250cm9sLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEFkbWluaXN0cmF0aXZlIGFjY2VzcyBjb250cm9sOyBTZWN1cml0eSBtYW5hZ2VtZW50OyBSZXNvdXJjZSBhZG1pbmlzdHJhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBJQU0gcm9sZXMgd2l0aCBmdWxsIFJlZHNoaWZ0IGNsdXN0ZXIgYW5kIHJlc291cmNlIGFjY2VzcyBwZXJtaXNzaW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIE1kYWFSb2xlUmVmIG9iamVjdHM7IHJlcXVpcmVkOyByb2xlcyByZWNlaXZlIGZ1bGwgY2x1c3RlciBhY2Nlc3NcbiAgICoqL1xuICByZWFkb25seSBkYXRhQWRtaW5Sb2xlczogTWRhYVJvbGVSZWZbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgdXNlciByb2xlIHJlZmVyZW5jZXMgd2l0aCBhY2Nlc3MgdG8gZGF0YSB3YXJlaG91c2UgUzMgYnVja2V0cyBmb3IgZGF0YSBsb2FkaW5nIGFuZCB1bmxvYWRpbmcgb3BlcmF0aW9ucy4gRW5hYmxlcyBjb250cm9sbGVkIGFjY2VzcyB0byB3YXJlaG91c2Ugc3RvcmFnZSByZXNvdXJjZXMgZm9yIEVUTCBvcGVyYXRpb25zIGFuZCBkYXRhIG1hbmFnZW1lbnQgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGEgbG9hZGluZyBvcGVyYXRpb25zOyBFVEwgd29ya2Zsb3cgYWNjZXNzOyBDb250cm9sbGVkIHN0b3JhZ2UgYWNjZXNzXG4gICAqXG4gICAqIEFXUzogQVdTIElBTSByb2xlcyB3aXRoIFMzIGJ1Y2tldCBhY2Nlc3MgZm9yIFJlZHNoaWZ0IGRhdGEgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIE1kYWFSb2xlUmVmIG9iamVjdHMgaWYgcHJvdmlkZWQ7IHJvbGVzIHJlY2VpdmUgYnVja2V0IGFjY2VzcyBwZXJtaXNzaW9uc1xuICAgKiovXG4gIHJlYWRvbmx5IHdhcmVob3VzZUJ1Y2tldFVzZXJSb2xlcz86IE1kYWFSb2xlUmVmW107XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGFycmF5IG9mIGV4dGVybmFsIGV4ZWN1dGlvbiByb2xlIHJlZmVyZW5jZXMgZm9yIFJlZHNoaWZ0IGNsdXN0ZXIgb3BlcmF0aW9ucyBhbmQgaW50ZWdyYXRpb25zLiBFbmFibGVzIGNsdXN0ZXIgdG8gYXNzdW1lIGV4dGVybmFsIHJvbGVzIGZvciBjcm9zcy1zZXJ2aWNlIG9wZXJhdGlvbnMsIGRhdGEgYWNjZXNzLCBhbmQgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBBV1Mgc2VydmljZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3Jvc3Mtc2VydmljZSBvcGVyYXRpb25zOyBFeHRlcm5hbCBkYXRhIGFjY2VzczsgU2VydmljZSBpbnRlZ3JhdGlvbiB3b3JrZmxvd3NcbiAgICpcbiAgICogQVdTOiBBV1MgSUFNIHJvbGVzIGZvciBSZWRzaGlmdCBjbHVzdGVyIGNyb3NzLXNlcnZpY2Ugb3BlcmF0aW9ucyBhbmQgaW50ZWdyYXRpb25zXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgTWRhYVJvbGVSZWYgb2JqZWN0cyBpZiBwcm92aWRlZDsgcm9sZXMgbXVzdCBiZSBhc3N1bWFibGUgYnkgUmVkc2hpZnQgc2VydmljZVxuICAgKiovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGVzPzogTWRhYVJvbGVSZWZbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgVlBDIElEIGZvciBSZWRzaGlmdCBjbHVzdGVyIGRlcGxveW1lbnQgcHJvdmlkaW5nIG5ldHdvcmsgaXNvbGF0aW9uIGFuZCBzZWN1cml0eSBjb250cm9scy4gRW5zdXJlcyBjbHVzdGVyIG9wZXJhdGVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIFZQQyBmb3Igc2VjdXJlIG5ldHdvcmtpbmcgYW5kIGludGVncmF0aW9uIHdpdGggb3RoZXIgVlBDIHJlc291cmNlcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBWUEMgbmV0d29yayBpc29sYXRpb247IFNlY3VyZSBuZXR3b3JraW5nOyBWUEMgcmVzb3VyY2UgaW50ZWdyYXRpb25cbiAgICpcbiAgICogQVdTOiBBbWF6b24gVlBDIGZvciBSZWRzaGlmdCBjbHVzdGVyIG5ldHdvcmsgaXNvbGF0aW9uIGFuZCBzZWN1cml0eSBjb250cm9sc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFZQQyBJRDsgcmVxdWlyZWQ7IFZQQyBtdXN0IGV4aXN0IGFuZCBiZSBhY2Nlc3NpYmxlXG4gICAqKi9cbiAgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgYXJyYXkgb2Ygc3VibmV0IElEcyBmb3IgUmVkc2hpZnQgY2x1c3RlciBub2RlIHBsYWNlbWVudCB3aXRoaW4gdGhlIFZQQy4gRGVmaW5lcyB0aGUgbmV0d29yayBzdWJuZXRzIHdoZXJlIGNsdXN0ZXIgbm9kZXMgd2lsbCBiZSBkZXBsb3llZCBmb3Igc2VjdXJlIFZQQyBjb25uZWN0aXZpdHkgYW5kIGF2YWlsYWJpbGl0eSB6b25lIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBWUEMgbmV0d29yayBwbGFjZW1lbnQ7IFN1Ym5ldC1zcGVjaWZpYyBkZXBsb3ltZW50OyBNdWx0aS1BWiBjbHVzdGVyIGRpc3RyaWJ1dGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBWUEMgc3VibmV0cyBmb3IgUmVkc2hpZnQgY2x1c3RlciBub2RlIHBsYWNlbWVudCBhbmQgbmV0d29yayBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc3VibmV0IElEczsgcmVxdWlyZWQ7IHN1Ym5ldHMgbXVzdCBleGlzdCBpbiBzcGVjaWZpZWQgVlBDXG4gICAqKi9cbiAgcmVhZG9ubHkgc3VibmV0SWRzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgc2VjdXJpdHkgZ3JvdXAgaW5ncmVzcyBjb25maWd1cmF0aW9uIGRlZmluaW5nIGFsbG93ZWQgaW5ib3VuZCBjb25uZWN0aW9ucyB0byB0aGUgY2x1c3Rlci4gU3BlY2lmaWVzIElQdjQgQ0lEUiBibG9ja3MgYW5kIHNlY3VyaXR5IGdyb3VwIElEcyB0aGF0IGNhbiBjb25uZWN0IHRvIHRoZSBjbHVzdGVyIHBvcnQgZm9yIGNvbnRyb2xsZWQgbmV0d29yayBhY2Nlc3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTmV0d29yayBhY2Nlc3MgY29udHJvbDsgQ2xpZW50IGNvbm5lY3Rpdml0eTsgU2VjdXJpdHkgZ3JvdXAgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBWUEMgc2VjdXJpdHkgZ3JvdXAgaW5ncmVzcyBydWxlcyBmb3IgUmVkc2hpZnQgY2x1c3RlciBhY2Nlc3MgY29udHJvbFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIG9iamVjdCB3aXRoIGlwdjQgYW5kL29yIHNnIGFycmF5czsgcmVxdWlyZWQ7IGRlZmluZXMgYWxsb3dlZCBpbmJvdW5kIGNvbm5lY3Rpb25zXG4gICAqICAgKiovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJbmdyZXNzOiB7IGlwdjQ/OiBzdHJpbmdbXTsgc2c/OiBzdHJpbmdbXSB9O1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBub2RlIHR5cGUgc3BlY2lmaWNhdGlvbiBkZXRlcm1pbmluZyBjb21wdXRlIGFuZCBzdG9yYWdlIGNhcGFjaXR5IGZvciBjbHVzdGVyIG5vZGVzLiBDb250cm9scyB0aGUgdW5kZXJseWluZyBFQzIgaW5zdGFuY2UgdHlwZSBhbmQgYWZmZWN0cyBwZXJmb3JtYW5jZSwgc3RvcmFnZSwgYW5kIGNvc3QgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBkYXRhIHdhcmVob3VzZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IENvc3QgbWFuYWdlbWVudDsgV29ya2xvYWQtc3BlY2lmaWMgc2l6aW5nXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IG5vZGUgdHlwZSBmb3IgY29tcHV0ZSBhbmQgc3RvcmFnZSBjYXBhY2l0eSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgUmVkc2hpZnQgbm9kZSB0eXBlOyByZXF1aXJlZDsgZGV0ZXJtaW5lcyBjbHVzdGVyIGNvbXB1dGUgYW5kIHN0b3JhZ2UgY2FwYWNpdHlcbiAgICoqL1xuICByZWFkb25seSBub2RlVHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBudW1iZXIgb2Ygbm9kZXMgZm9yIHRoZSBSZWRzaGlmdCBjbHVzdGVyIGRldGVybWluaW5nIHRvdGFsIGNvbXB1dGUgY2FwYWNpdHkgYW5kIHBhcmFsbGVsIHByb2Nlc3NpbmcgY2FwYWJpbGl0eS4gQ29udHJvbHMgY2x1c3RlciBzaXplIGFuZCBhZmZlY3RzIHBlcmZvcm1hbmNlLCBjb3N0LCBhbmQgZGF0YSBkaXN0cmlidXRpb24gY2hhcmFjdGVyaXN0aWNzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgc2l6aW5nOyBQZXJmb3JtYW5jZSBzY2FsaW5nOyBDb3N0IG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIG5vZGUgY291bnQgZm9yIGNvbXB1dGUgY2FwYWNpdHkgYW5kIHBhcmFsbGVsIHByb2Nlc3NpbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyOyByZXF1aXJlZDsgZGV0ZXJtaW5lcyBjbHVzdGVyIHNpemUgYW5kIHByb2Nlc3NpbmcgY2FwYWNpdHlcbiAgICoqL1xuICByZWFkb25seSBudW1iZXJPZk5vZGVzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIGZsYWcgZW5hYmxpbmcgYXVkaXQgbG9nZ2luZyB0byBTMyBmb3IgY29tcGxpYW5jZSBhbmQgc2VjdXJpdHkgbW9uaXRvcmluZy4gV2hlbiBlbmFibGVkLCBjcmVhdGVzIGRlZGljYXRlZCBTMyBidWNrZXQgZm9yIFJlZHNoaWZ0IGF1ZGl0IGxvZ3Mgd2l0aCBTU0UtUzMgZW5jcnlwdGlvbiBhcyByZXF1aXJlZCBieSBSZWRzaGlmdCBhdWRpdCBsb2dnaW5nIGNvbnN0cmFpbnRzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvbXBsaWFuY2UgYXVkaXRpbmc7IFNlY3VyaXR5IG1vbml0b3Jpbmc7IEF1ZGl0IHRyYWlsIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgYXVkaXQgbG9nZ2luZyB0byBTMyBmb3IgY29tcGxpYW5jZSBhbmQgc2VjdXJpdHkgbW9uaXRvcmluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBCb29sZWFuIHZhbHVlOyByZXF1aXJlZDsgY3JlYXRlcyBTU0UtUzMgZW5jcnlwdGVkIGF1ZGl0IGJ1Y2tldCB3aGVuIGVuYWJsZWRcbiAgICoqL1xuICByZWFkb25seSBlbmFibGVBdWRpdExvZ2dpbmdUb1MzOiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBjbHVzdGVyIHBvcnQgbnVtYmVyIGZvciBjbGllbnQgY29ubmVjdGlvbnMgZW5hYmxpbmcgY3VzdG9tIHBvcnQgY29uZmlndXJhdGlvbiBhbmQgbmV0d29yayBzZWN1cml0eS4gRGVmaW5lcyB0aGUgVENQIHBvcnQgb24gd2hpY2ggdGhlIFJlZHNoaWZ0IGNsdXN0ZXIgYWNjZXB0cyBjbGllbnQgY29ubmVjdGlvbnMsIHN1cHBvcnRpbmcgY3VzdG9tIG5ldHdvcmtpbmcgcmVxdWlyZW1lbnRzIGFuZCBzZWN1cml0eSBjb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDdXN0b20gcG9ydCBjb25maWd1cmF0aW9uOyBOZXR3b3JrIHNlY3VyaXR5OyBDbGllbnQgY29ubmVjdGlvbiBtYW5hZ2VtZW50OyBQb3J0IHN0YW5kYXJkaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIHBvcnQgY29uZmlndXJhdGlvbiBmb3IgY2xpZW50IGNvbm5lY3Rpb24gbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIHBvcnQgbnVtYmVyIGlmIHNwZWNpZmllZDsgZGVmYXVsdHMgdG8gNTQ0MDsgbXVzdCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggc2VjdXJpdHkgZ3JvdXBzXG4gICAqKi9cbiAgcmVhZG9ubHkgY2x1c3RlclBvcnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgY29udHJvbGxpbmcgY2x1c3RlciBub2RlIGNvbmZpZ3VyYXRpb24gZm9yIHNpbmdsZS1ub2RlIG9yIG11bHRpLW5vZGUgZGVwbG95bWVudC4gV2hlbiB0cnVlLCBjcmVhdGVzIG11bHRpLW5vZGUgY2x1c3RlciBmb3IgZGlzdHJpYnV0ZWQgcHJvY2Vzc2luZzsgd2hlbiBmYWxzZSwgY3JlYXRlcyBzaW5nbGUtbm9kZSBjbHVzdGVyIGZvciBkZXZlbG9wbWVudCBvciBzbWFsbCB3b3JrbG9hZHMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ2x1c3RlciBhcmNoaXRlY3R1cmUgc2VsZWN0aW9uOyBEZXZlbG9wbWVudCB2cyBwcm9kdWN0aW9uIGRlcGxveW1lbnQ7IENvc3Qgb3B0aW1pemF0aW9uOyBQZXJmb3JtYW5jZSBzY2FsaW5nXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IGNsdXN0ZXIgdHlwZSBjb25maWd1cmF0aW9uIGZvciBzaW5nbGUtbm9kZSBvciBtdWx0aS1ub2RlIGRlcGxveW1lbnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogQm9vbGVhbiB2YWx1ZTsgZGV0ZXJtaW5lcyBjbHVzdGVyIGFyY2hpdGVjdHVyZSBhbmQgbm9kZSBkaXN0cmlidXRpb247IGFmZmVjdHMgcGVyZm9ybWFuY2UgYW5kIGNvc3RcbiAgICoqL1xuICByZWFkb25seSBtdWx0aU5vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBwcmVmZXJyZWQgbWFpbnRlbmFuY2Ugd2luZG93IGZvciBhdXRvbWF0ZWQgY2x1c3RlciBtYWludGVuYW5jZSBvcGVyYXRpb25zLiBTcGVjaWZpZXMgdGhlIHdlZWtseSB0aW1lIHJhbmdlIGR1cmluZyB3aGljaCBzeXN0ZW0gbWFpbnRlbmFuY2UgY2FuIG9jY3VyLCBtaW5pbWl6aW5nIGltcGFjdCBvbiBidXNpbmVzcyBvcGVyYXRpb25zIGFuZCBlbnN1cmluZyBwcmVkaWN0YWJsZSBtYWludGVuYW5jZSBzY2hlZHVsaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE1haW50ZW5hbmNlIHNjaGVkdWxpbmc7IEJ1c2luZXNzIGNvbnRpbnVpdHk7IE9wZXJhdGlvbmFsIHBsYW5uaW5nOyBEb3dudGltZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IHByZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cgZm9yIGF1dG9tYXRlZCBzeXN0ZW0gbWFpbnRlbmFuY2VcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCB0aW1lIHdpbmRvdyBmb3JtYXQgKGUuZy4sICdTdW46MjM6NDUtTW9uOjAwOjE1Jyk7IHJlcXVpcmVkOyBkZWZpbmVzIG1haW50ZW5hbmNlIHNjaGVkdWxpbmdcbiAgICoqL1xuICByZWFkb25seSBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBwYXJhbWV0ZXIgZ3JvdXAgcGFyYW1ldGVycyBmb3IgY2x1c3RlciBjb25maWd1cmF0aW9uIGN1c3RvbWl6YXRpb24gZW5hYmxpbmcgcGVyZm9ybWFuY2UgdHVuaW5nIGFuZCBvcGVyYXRpb25hbCBvcHRpbWl6YXRpb24uIFByb3ZpZGVzIGFkZGl0aW9uYWwgY2x1c3RlciBwYXJhbWV0ZXJzIHdoaWxlIHNlY3VyaXR5LXNlbnNpdGl2ZSB2YWx1ZXMgYXJlIGF1dG9tYXRpY2FsbHkgb3ZlcnJpZGRlbiBmb3IgY29tcGxpYW5jZSBhbmQgc2VjdXJpdHkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogUGVyZm9ybWFuY2UgdHVuaW5nOyBPcGVyYXRpb25hbCBvcHRpbWl6YXRpb247IEN1c3RvbSBjbHVzdGVyIGNvbmZpZ3VyYXRpb247IFdvcmtsb2FkLXNwZWNpZmljIHNldHRpbmdzXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IHBhcmFtZXRlciBncm91cCBjb25maWd1cmF0aW9uIGZvciBjbHVzdGVyIGN1c3RvbWl6YXRpb24gYW5kIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIG9iamVjdCB3aXRoIHN0cmluZyBrZXktdmFsdWUgcGFpcnMgaWYgcHJvdmlkZWQ7IHNlY3VyaXR5LXNlbnNpdGl2ZSB2YWx1ZXMgd2lsbCBiZSBvdmVycmlkZGVuXG4gICAqICAgKiovXG4gIHJlYWRvbmx5IHBhcmFtZXRlckdyb3VwUGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgd29ya2xvYWQgbWFuYWdlbWVudCBjb25maWd1cmF0aW9uIGZvciBxdWVyeSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gYW5kIHJlc291cmNlIGFsbG9jYXRpb24uIERlZmluZXMgV0xNIGNvbmZpZ3VyYXRpb24gZWxlbWVudHMgZm9yIG1hbmFnaW5nIHF1ZXJ5IHF1ZXVlcywgbWVtb3J5IGFsbG9jYXRpb24sIGFuZCBjb25jdXJyZW5jeSBmb3Igb3B0aW1hbCBjbHVzdGVyIHBlcmZvcm1hbmNlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFF1ZXJ5IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjsgUmVzb3VyY2UgYWxsb2NhdGlvbjsgV29ya2xvYWQgbWFuYWdlbWVudDsgQ29uY3VycmVuY3kgY29udHJvbFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCB3b3JrbG9hZCBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gZm9yIHF1ZXJ5IG9wdGltaXphdGlvbiBhbmQgcmVzb3VyY2UgY29udHJvbFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIENvbmZpZ3VyYXRpb25FbGVtZW50IG9iamVjdHMgaWYgcHJvdmlkZWQ7IGRlZmluZXMgV0xNIGNvbmZpZ3VyYXRpb25cbiAgICoqL1xuICByZWFkb25seSB3b3JrbG9hZE1hbmFnZW1lbnQ/OiBDb25maWd1cmF0aW9uRWxlbWVudFtdO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhZGRpdGlvbmFsIEtNUyBrZXkgQVJOcyBmb3IgY2x1c3RlciBidWNrZXQgZW5jcnlwdGlvbiBlbmFibGluZyBtdWx0aS1rZXkgZW5jcnlwdGlvbiBzY2VuYXJpb3MgYW5kIGNyb3NzLWFjY291bnQgYWNjZXNzLiBQcm92aWRlcyBhZGRpdGlvbmFsIEtNUyBrZXlzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHdyaXRpbmcgdG8gdGhlIGNsdXN0ZXIgYnVja2V0IGJleW9uZCB0aGUgZGVmYXVsdCBjbHVzdGVyIGVuY3J5cHRpb24ga2V5LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE11bHRpLWtleSBlbmNyeXB0aW9uOyBDcm9zcy1hY2NvdW50IGFjY2VzczsgQWRkaXRpb25hbCBlbmNyeXB0aW9uIGtleXM7IEZsZXhpYmxlIGtleSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQVdTIEtNUyBrZXkgQVJOcyBmb3IgYWRkaXRpb25hbCBjbHVzdGVyIGJ1Y2tldCBlbmNyeXB0aW9uIGFuZCBhY2Nlc3MgY29udHJvbFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIEtNUyBrZXkgQVJOcyBpZiBwcm92aWRlZDsga2V5cyBtdXN0IGJlIGFjY2Vzc2libGUgZm9yIGJ1Y2tldCBvcGVyYXRpb25zXG4gICAqKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgc2NoZWR1bGVkIGFjdGlvbnMgZm9yIGF1dG9tYXRlZCBjbHVzdGVyIHBhdXNlIGFuZCByZXN1bWUgb3BlcmF0aW9ucyBlbmFibGluZyBjb3N0IG9wdGltaXphdGlvbiBhbmQgb3BlcmF0aW9uYWwgYXV0b21hdGlvbi4gRGVmaW5lcyBzY2hlZHVsZWQgcGF1c2UgYW5kIHJlc3VtZSBhY3Rpb25zIGZvciB0aGUgY2x1c3RlciB0byBvcHRpbWl6ZSBjb3N0cyBkdXJpbmcgbm9uLWJ1c2luZXNzIGhvdXJzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvc3Qgb3B0aW1pemF0aW9uOyBBdXRvbWF0ZWQgb3BlcmF0aW9uczsgU2NoZWR1bGVkIG1haW50ZW5hbmNlOyBSZXNvdXJjZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IHNjaGVkdWxlZCBhY3Rpb25zIGZvciBhdXRvbWF0ZWQgY2x1c3RlciBwYXVzZSBhbmQgcmVzdW1lIG9wZXJhdGlvbnNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBhcnJheSBvZiB2YWxpZCBTY2hlZHVsZWRBY3Rpb25Qcm9wcyBpZiBwcm92aWRlZDsgZGVmaW5lcyBhdXRvbWF0ZWQgY2x1c3RlciBvcGVyYXRpb25zXG4gICAqKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGVkQWN0aW9ucz86IFNjaGVkdWxlZEFjdGlvblByb3BzW107XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGRhdGFiYXNlIHVzZXJzIGZvciBhdXRvbWF0ZWQgdXNlciBjcmVhdGlvbiBhbmQgY3JlZGVudGlhbCBtYW5hZ2VtZW50IGVuYWJsaW5nIHNlY3VyZSB1c2VyIHByb3Zpc2lvbmluZyBhbmQgcm90YXRpb24uIENyZWF0ZXMgZGF0YWJhc2UgdXNlcnMgaW4gUmVkc2hpZnQgd2l0aCBhdXRvbWF0ZWQgY3JlZGVudGlhbCBzdG9yYWdlIGFuZCByb3RhdGlvbiB0aHJvdWdoIFNlY3JldHMgTWFuYWdlciBhbmQgU1NNLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEF1dG9tYXRlZCB1c2VyIHByb3Zpc2lvbmluZzsgQ3JlZGVudGlhbCBtYW5hZ2VtZW50OyBTZWN1cml0eSBhdXRvbWF0aW9uOyBVc2VyIGxpZmVjeWNsZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IGRhdGFiYXNlIHVzZXJzIHdpdGggU2VjcmV0cyBNYW5hZ2VyIGFuZCBTU00gaW50ZWdyYXRpb24gZm9yIGNyZWRlbnRpYWwgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIERhdGFiYXNlVXNlcnNQcm9wcyBpZiBwcm92aWRlZDsgZW5hYmxlcyBhdXRvbWF0ZWQgdXNlciBhbmQgY3JlZGVudGlhbCBtYW5hZ2VtZW50XG4gICAqICAgKiovXG4gIHJlYWRvbmx5IGRhdGFiYXNlVXNlcnM/OiBEYXRhYmFzZVVzZXJzUHJvcHNbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyBjb250cm9sbGluZyBkYXRhIHdhcmVob3VzZSBidWNrZXQgY3JlYXRpb24gZm9yIGNsdXN0ZXIgc3RvcmFnZSBvcGVyYXRpb25zLiBXaGVuIGVuYWJsZWQgKGRlZmF1bHQpLCBjcmVhdGVzIGRlZGljYXRlZCBTMyBidWNrZXQgZm9yIGRhdGEgd2FyZWhvdXNlIG9wZXJhdGlvbnMgaW5jbHVkaW5nIGRhdGEgbG9hZGluZywgdW5sb2FkaW5nLCBhbmQgYmFja3VwIHN0b3JhZ2UuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU3RvcmFnZSByZXNvdXJjZSBtYW5hZ2VtZW50OyBEYXRhIG9wZXJhdGlvbnM7IEJhY2t1cCBzdG9yYWdlOyBFVEwgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBTMyBidWNrZXQgY3JlYXRpb24gZm9yIFJlZHNoaWZ0IGRhdGEgd2FyZWhvdXNlIHN0b3JhZ2Ugb3BlcmF0aW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBCb29sZWFuIHZhbHVlOyBkZWZhdWx0cyB0byB0cnVlOyBjcmVhdGVzIGRlZGljYXRlZCB3YXJlaG91c2UgYnVja2V0IHdoZW4gZW5hYmxlZFxuICAgKiovXG4gIHJlYWRvbmx5IGNyZWF0ZVdhcmVob3VzZUJ1Y2tldD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHJldGVudGlvbiBwZXJpb2QgZm9yIGF1dG9tYXRlZCBzbmFwc2hvdHMgZW5hYmxpbmcgYmFja3VwIG1hbmFnZW1lbnQgYW5kIGRhdGEgcHJvdGVjdGlvbi4gU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF5cyBhdXRvbWF0ZWQgc25hcHNob3RzIGFyZSByZXRhaW5lZCBmb3IgcG9pbnQtaW4tdGltZSByZWNvdmVyeSBhbmQgZGF0YSBwcm90ZWN0aW9uIHJlcXVpcmVtZW50cy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBCYWNrdXAgbWFuYWdlbWVudDsgRGF0YSBwcm90ZWN0aW9uOyBQb2ludC1pbi10aW1lIHJlY292ZXJ5OyBDb21wbGlhbmNlIHJlcXVpcmVtZW50c1xuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBhdXRvbWF0ZWQgc25hcHNob3QgcmV0ZW50aW9uIGZvciBiYWNrdXAgbWFuYWdlbWVudCBhbmQgZGF0YSBwcm90ZWN0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgcG9zaXRpdmUgaW50ZWdlciBpZiBzcGVjaWZpZWQ7IGRlZmluZXMgc25hcHNob3QgcmV0ZW50aW9uIHBlcmlvZCBmb3IgYmFja3VwIG1hbmFnZW1lbnRcbiAgICoqL1xuICByZWFkb25seSBhdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvbkRheXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGV2ZW50IG5vdGlmaWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciBjbHVzdGVyIGFuZCBzY2hlZHVsZWQgYWN0aW9uIG1vbml0b3JpbmcgZW5hYmxpbmcgb3BlcmF0aW9uYWwgYXdhcmVuZXNzIGFuZCBhbGVydGluZy4gQ29uZmlndXJlcyBTTlMgbm90aWZpY2F0aW9ucyBmb3IgY2x1c3RlciBldmVudHMgYW5kIHNjaGVkdWxlZCBhY3Rpb24gc3RhdHVzIGZvciBvcGVyYXRpb25hbCBtb25pdG9yaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE9wZXJhdGlvbmFsIG1vbml0b3Jpbmc7IEV2ZW50IGFsZXJ0aW5nOyBDbHVzdGVyIHN0YXR1cyB0cmFja2luZzsgQXV0b21hdGVkIG5vdGlmaWNhdGlvbnNcbiAgICpcbiAgICogQVdTOiBBbWF6b24gU05TIG5vdGlmaWNhdGlvbnMgZm9yIFJlZHNoaWZ0IGNsdXN0ZXIgZXZlbnRzIGFuZCBvcGVyYXRpb25hbCBtb25pdG9yaW5nXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgRXZlbnROb3RpZmljYXRpb25zUHJvcHMgaWYgcHJvdmlkZWQ7IGVuYWJsZXMgY2x1c3RlciBldmVudCBtb25pdG9yaW5nIGFuZCBhbGVydGluZ1xuICAgKiovXG4gIHJlYWRvbmx5IGV2ZW50Tm90aWZpY2F0aW9ucz86IEV2ZW50Tm90aWZpY2F0aW9uc1Byb3BzO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBkYXRhYmFzZSBuYW1lIGZvciBpbml0aWFsIGRhdGFiYXNlIGNyZWF0aW9uIGVuYWJsaW5nIGN1c3RvbSBkYXRhYmFzZSBuYW1pbmcgYW5kIG9yZ2FuaXphdGlvbi4gU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBpbml0aWFsIGRhdGFiYXNlIGNyZWF0ZWQgaW4gdGhlIGNsdXN0ZXIsIHN1cHBvcnRpbmcgY3VzdG9tIG5hbWluZyBjb252ZW50aW9ucyBhbmQgZGF0YWJhc2Ugb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEN1c3RvbSBkYXRhYmFzZSBuYW1pbmc7IERhdGFiYXNlIG9yZ2FuaXphdGlvbjsgSW5pdGlhbCBkYXRhYmFzZSBzZXR1cDsgTmFtaW5nIGNvbnZlbnRpb25zXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IGluaXRpYWwgZGF0YWJhc2UgbmFtZSBmb3IgY2x1c3RlciBkYXRhYmFzZSBjcmVhdGlvbiBhbmQgb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgZGF0YWJhc2UgbmFtZSBpZiBzcGVjaWZpZWQ7IGRlZmF1bHRzIHRvIFwiZGVmYXVsdF9kYlwiOyB1c2VkIGZvciBpbml0aWFsIGRhdGFiYXNlIGNyZWF0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgZGJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBzbmFwc2hvdCBpZGVudGlmaWVyIGZvciBjbHVzdGVyIHJlc3RvcmF0aW9uIGZyb20gZXhpc3Rpbmcgc25hcHNob3QgZW5hYmxpbmcgZGlzYXN0ZXIgcmVjb3ZlcnkgYW5kIGRhdGEgbWlncmF0aW9uLiBTcGVjaWZpZXMgdGhlIHNuYXBzaG90IElEIHRvIHJlc3RvcmUgdGhlIGNsdXN0ZXIgZnJvbSwgc3VwcG9ydGluZyBkaXNhc3RlciByZWNvdmVyeSBzY2VuYXJpb3MgYW5kIGRhdGEgbWlncmF0aW9uIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGlzYXN0ZXIgcmVjb3Zlcnk7IERhdGEgbWlncmF0aW9uOyBDbHVzdGVyIHJlc3RvcmF0aW9uOyBCYWNrdXAgcmVjb3ZlcnlcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgc25hcHNob3QgaWRlbnRpZmllciBmb3IgY2x1c3RlciByZXN0b3JhdGlvbiBhbmQgZGlzYXN0ZXIgcmVjb3ZlcnlcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBzbmFwc2hvdCBpZGVudGlmaWVyIGlmIHNwZWNpZmllZDsgb25seSBwcm92aWRlIHdoZW4gcmVzdG9yaW5nIGZyb20gc25hcHNob3RcbiAgICoqL1xuICByZWFkb25seSBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBvd25lckFjY291bnQgUmVmZXJzIHRvIHNuYXBzaG90IG93bmVyIGFjY291bnQuIEFwcGxpY2FibGUgaWYgcmVzdG9yaW5nIHRoZSBjbHVzdGVyIGZyb20gc25hcHNob3QgYW5kIHNuYXBzaG90IGJlbG9uZ3MgdG8gYW5vdGhlciBhY2NvdW50XG4gICAqIE9wdGlvbmFsIC0gQnkgZGVmYXVsdCwgc25hcHNob3RzIGFyZSBzZWFyY2hlZCB3aXRoaW4gY3VycmVudCBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdE93bmVyQWNjb3VudD86IG51bWJlcjtcblxuICByZWFkb25seSByZWRzaGlmdE1hbmFnZU1hc3RlclBhc3N3b3JkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFXYXJlaG91c2VDb25maWdQYXJzZXIgZXh0ZW5kcyBNZGFhQXBwQ29uZmlnUGFyc2VyPERhdGFXYXJlaG91c2VDb25maWdDb250ZW50cz4ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWRtaW5Vc2VybmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRtaW5QYXNzd29yZFJvdGF0aW9uRGF5czogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgZmVkZXJhdGlvbnM6IEZlZGVyYXRpb25Qcm9wc1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0YWJhc2VVc2VyczogRGF0YWJhc2VVc2Vyc1Byb3BzW107XG4gIHB1YmxpYyByZWFkb25seSBkYXRhQWRtaW5Sb2xlUmVmczogTWRhYVJvbGVSZWZbXTtcbiAgcHVibGljIHJlYWRvbmx5IHdhcmVob3VzZUJ1Y2tldFVzZXJSb2xlUmVmcz86IE1kYWFSb2xlUmVmW107XG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlUmVmcz86IE1kYWFSb2xlUmVmW107XG4gIHB1YmxpYyByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2x1c3RlclBvcnQ6IG51bWJlcjtcbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldElkczogc3RyaW5nW107XG4gIHB1YmxpYyByZWFkb25seSBub2RlVHlwZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZW5hYmxlQXVkaXRMb2dnaW5nVG9TMzogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IG51bWJlck9mTm9kZXM6IG51bWJlcjtcbiAgcHVibGljIHJlYWRvbmx5IG11bHRpTm9kZT86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cEluZ3Jlc3M6IHsgaXB2ND86IHN0cmluZ1tdOyBzZz86IHN0cmluZ1tdIH07XG4gIHB1YmxpYyByZWFkb25seSBwYXJhbWV0ZXJHcm91cFBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcHVibGljIHJlYWRvbmx5IHdvcmtsb2FkTWFuYWdlbWVudDogQ29uZmlndXJhdGlvbkVsZW1lbnRbXTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZGl0aW9uYWxCdWNrZXRLbXNLZXlBcm5zPzogc3RyaW5nW107XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdENsdXN0ZXJQb3J0ID0gNTQ0MDtcbiAgcHVibGljIHJlYWRvbmx5IHNjaGVkdWxlZEFjdGlvbnM6IFNjaGVkdWxlZEFjdGlvblByb3BzW107XG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGVXYXJlaG91c2VCdWNrZXQ/OiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0b21hdGVkU25hcHNob3RSZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnROb3RpZmljYXRpb25zPzogRXZlbnROb3RpZmljYXRpb25zUHJvcHM7XG4gIHB1YmxpYyByZWFkb25seSBkYk5hbWU/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzbmFwc2hvdE93bmVyQWNjb3VudD86IG51bWJlcjtcbiAgcHVibGljIHJlYWRvbmx5IHJlZHNoaWZ0TWFuYWdlTWFzdGVyUGFzc3dvcmQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHN0YWNrOiBTdGFjaywgcHJvcHM6IE1kYWFBcHBDb25maWdQYXJzZXJQcm9wcykge1xuICAgIHN1cGVyKHN0YWNrLCBwcm9wcywgY29uZmlnU2NoZW1hIGFzIFNjaGVtYSk7XG5cbiAgICB0aGlzLmFkbWluVXNlcm5hbWUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmFkbWluVXNlcm5hbWU7XG4gICAgdGhpcy5hZG1pblBhc3N3b3JkUm90YXRpb25EYXlzID0gdGhpcy5jb25maWdDb250ZW50cy5hZG1pblBhc3N3b3JkUm90YXRpb25EYXlzO1xuICAgIHRoaXMuZmVkZXJhdGlvbnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmZlZGVyYXRpb25zID8gdGhpcy5jb25maWdDb250ZW50cy5mZWRlcmF0aW9ucyA6IFtdO1xuICAgIHRoaXMuZGF0YUFkbWluUm9sZVJlZnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmRhdGFBZG1pblJvbGVzO1xuICAgIHRoaXMud2FyZWhvdXNlQnVja2V0VXNlclJvbGVSZWZzID0gdGhpcy5jb25maWdDb250ZW50cy53YXJlaG91c2VCdWNrZXRVc2VyUm9sZXM7XG4gICAgdGhpcy5leGVjdXRpb25Sb2xlUmVmcyA9IHRoaXMuY29uZmlnQ29udGVudHMuZXhlY3V0aW9uUm9sZXM7XG4gICAgdGhpcy52cGNJZCA9IHRoaXMuY29uZmlnQ29udGVudHMudnBjSWQ7XG4gICAgdGhpcy5zdWJuZXRJZHMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnN1Ym5ldElkcztcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXBJbmdyZXNzID0gdGhpcy5jb25maWdDb250ZW50cy5zZWN1cml0eUdyb3VwSW5ncmVzcztcbiAgICB0aGlzLm5vZGVUeXBlID0gdGhpcy5jb25maWdDb250ZW50cy5ub2RlVHlwZTtcbiAgICB0aGlzLm51bWJlck9mTm9kZXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm51bWJlck9mTm9kZXM7XG4gICAgdGhpcy5lbmFibGVBdWRpdExvZ2dpbmdUb1MzID0gdGhpcy5jb25maWdDb250ZW50cy5lbmFibGVBdWRpdExvZ2dpbmdUb1MzO1xuICAgIHRoaXMuY2x1c3RlclBvcnQgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmNsdXN0ZXJQb3J0XG4gICAgICA/IHRoaXMuY29uZmlnQ29udGVudHMuY2x1c3RlclBvcnRcbiAgICAgIDogRGF0YVdhcmVob3VzZUNvbmZpZ1BhcnNlci5kZWZhdWx0Q2x1c3RlclBvcnQ7XG4gICAgdGhpcy5tdWx0aU5vZGUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm11bHRpTm9kZTtcbiAgICB0aGlzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93ID0gdGhpcy5jb25maWdDb250ZW50cy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdztcbiAgICB0aGlzLnBhcmFtZXRlckdyb3VwUGFyYW1zID0gdGhpcy5jb25maWdDb250ZW50cy5wYXJhbWV0ZXJHcm91cFBhcmFtc1xuICAgICAgPyB0aGlzLmNvbmZpZ0NvbnRlbnRzLnBhcmFtZXRlckdyb3VwUGFyYW1zXG4gICAgICA6IHt9O1xuICAgIHRoaXMud29ya2xvYWRNYW5hZ2VtZW50ID0gdGhpcy5jb25maWdDb250ZW50cy53b3JrbG9hZE1hbmFnZW1lbnQgPyB0aGlzLmNvbmZpZ0NvbnRlbnRzLndvcmtsb2FkTWFuYWdlbWVudCA6IFtdO1xuICAgIHRoaXMuYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmFkZGl0aW9uYWxCdWNrZXRLbXNLZXlBcm5zO1xuICAgIHRoaXMuc2NoZWR1bGVkQWN0aW9ucyA9IHRoaXMuY29uZmlnQ29udGVudHMuc2NoZWR1bGVkQWN0aW9ucyA/IHRoaXMuY29uZmlnQ29udGVudHMuc2NoZWR1bGVkQWN0aW9ucyA6IFtdO1xuICAgIHRoaXMuZGF0YWJhc2VVc2VycyA9IHRoaXMuY29uZmlnQ29udGVudHMuZGF0YWJhc2VVc2VycyA/IHRoaXMuY29uZmlnQ29udGVudHMuZGF0YWJhc2VVc2VycyA6IFtdO1xuICAgIHRoaXMuY3JlYXRlV2FyZWhvdXNlQnVja2V0ID0gdGhpcy5jb25maWdDb250ZW50cy5jcmVhdGVXYXJlaG91c2VCdWNrZXQ7XG4gICAgdGhpcy5hdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvbkRheXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmF1dG9tYXRlZFNuYXBzaG90UmV0ZW50aW9uRGF5cztcbiAgICB0aGlzLmV2ZW50Tm90aWZpY2F0aW9ucyA9IHRoaXMuY29uZmlnQ29udGVudHMuZXZlbnROb3RpZmljYXRpb25zO1xuICAgIHRoaXMuZGJOYW1lID0gdGhpcy5jb25maWdDb250ZW50cy5kYk5hbWU7XG4gICAgdGhpcy5zbmFwc2hvdElkZW50aWZpZXIgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnNuYXBzaG90SWRlbnRpZmllcjtcbiAgICB0aGlzLnNuYXBzaG90T3duZXJBY2NvdW50ID0gdGhpcy5jb25maWdDb250ZW50cy5zbmFwc2hvdE93bmVyQWNjb3VudDtcbiAgICB0aGlzLnJlZHNoaWZ0TWFuYWdlTWFzdGVyUGFzc3dvcmQgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnJlZHNoaWZ0TWFuYWdlTWFzdGVyUGFzc3dvcmQ7XG4gIH1cbn1cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXdhcmVob3VzZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhd2FyZWhvdXNlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCx1Q0FBc0c7QUFVdEcscURBQXFEO0FBOFRyRCxNQUFhLHlCQUEwQixTQUFRLHlCQUFnRDtJQWlDN0YsWUFBWSxLQUFZLEVBQUUsS0FBK0I7UUFDdkQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBc0IsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUM7UUFDL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUM7UUFDNUQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUM7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVc7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVztZQUNqQyxDQUFDLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQztRQUNqRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7WUFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9HLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQztRQUN2RSxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQztRQUN6RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDO1FBQ2pFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQjtZQUNsRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUM7WUFDbEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFDO1FBQ3JGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQztRQUNyRCxJQUFJLENBQUMsa0NBQWtDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQztJQUNuRyxDQUFDOztBQXhFSCw4REF5RUM7QUFyRHdCLDRDQUFrQixHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IE1kYWFBcHBDb25maWdQYXJzZXIsIE1kYWFBcHBDb25maWdQYXJzZXJQcm9wcywgTWRhYUJhc2VDb25maWdDb250ZW50cyB9IGZyb20gJ0Bhd3MtbWRhYS9hcHAnO1xuaW1wb3J0IHtcbiAgRmVkZXJhdGlvblByb3BzLFxuICBTY2hlZHVsZWRBY3Rpb25Qcm9wcyxcbiAgRGF0YWJhc2VVc2Vyc1Byb3BzLFxuICBFdmVudE5vdGlmaWNhdGlvbnNQcm9wcyxcbn0gZnJvbSAnQGF3cy1tZGFhL2RhdGF3YXJlaG91c2UtbDMtY29uc3RydWN0JztcbmltcG9ydCB7IE1kYWFSb2xlUmVmIH0gZnJvbSAnQGF3cy1tZGFhL2lhbS1yb2xlLWhlbHBlcic7XG5pbXBvcnQgeyBTY2hlbWEgfSBmcm9tICdhanYnO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjb25maWdTY2hlbWEgZnJvbSAnLi9jb25maWctc2NoZW1hLmpzb24nO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkVsZW1lbnQgfSBmcm9tICdAYXdzLW1kYWEvY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhV2FyZWhvdXNlQ29uZmlnQ29udGVudHMgZXh0ZW5kcyBNZGFhQmFzZUNvbmZpZ0NvbnRlbnRzIHtcbiAgLyoqXG4gICAqIEFkbWluIHVzZXJuYW1lIGZvciB0aGUgUmVkc2hpZnQgY2x1c3Rlci4gQSBzZWNyZXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZm9yIHRoZSBwYXNzd29yZC5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDbHVzdGVyIGFkbWluaXN0cmF0aW9uOyBEYXRhYmFzZSBtYW5hZ2VtZW50OyBJbml0aWFsIHVzZXIgcHJvdmlzaW9uaW5nXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgY2x1c3RlciBtYXN0ZXIgdXNlcm5hbWVcbiAgICpcbiAgICogVmFsaWRhdGlvbjogUmVxdWlyZWQ7IHZhbGlkIFJlZHNoaWZ0IHVzZXJuYW1lXG4gICAqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXlzIGJldHdlZW4gYXV0b21hdGljIGFkbWluIHBhc3N3b3JkIHJvdGF0aW9ucyB2aWEgU2VjcmV0cyBNYW5hZ2VyLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEF1dG9tYXRlZCBjcmVkZW50aWFsIHJvdGF0aW9uOyBTZWN1cml0eSBjb21wbGlhbmNlOyBQYXNzd29yZCBwb2xpY3kgZW5mb3JjZW1lbnRcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBhZG1pbiBwYXNzd29yZCByb3RhdGlvbiB2aWEgU2VjcmV0cyBNYW5hZ2VyXG4gICAqXG4gICAqIFZhbGlkYXRpb246IFJlcXVpcmVkOyBwb3NpdGl2ZSBpbnRlZ2VyXG4gICAqL1xuICByZWFkb25seSBhZG1pblBhc3N3b3JkUm90YXRpb25EYXlzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBTQU1MIG9yIE9JREMgZmVkZXJhdGlvbiBjb25maWd1cmF0aW9ucyBmb3IgZmVkZXJhdGVkIFJlZHNoaWZ0IGFjY2Vzcy5cbiAgICogRWFjaCBmZWRlcmF0aW9uIGNyZWF0ZXMgYW4gSUFNIHJvbGUgd2l0aCBTQU1MIHRydXN0IGZvciBkeW5hbWljIGNyZWRlbnRpYWwgZ2VuZXJhdGlvblxuICAgKiBhbmQgZ3JvdXAtYmFzZWQgY2x1c3RlciBhY2Nlc3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU0FNTCBmZWRlcmF0aW9uIHNldHVwOyBTU08gaW50ZWdyYXRpb247IEZlZGVyYXRlZCBjbHVzdGVyIGFjY2Vzc1xuICAgKlxuICAgKiBBV1M6IElBTSBTQU1MIGlkZW50aXR5IHByb3ZpZGVyIHJvbGVzIGZvciBSZWRzaGlmdCBmZWRlcmF0ZWQgYWNjZXNzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBhcnJheSBvZiB2YWxpZCBGZWRlcmF0aW9uUHJvcHNcbiAgICovXG4gIHJlYWRvbmx5IGZlZGVyYXRpb25zPzogRmVkZXJhdGlvblByb3BzW107XG4gIC8qKlxuICAgKiBBZG1pbiByb2xlcyBncmFudGVkIGZ1bGwgYWNjZXNzIHRvIGNsdXN0ZXIgcmVzb3VyY2VzIGluY2x1ZGluZyBLTVMga2V5cyBhbmQgUzMgYnVja2V0cy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBBZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgY29udHJvbDsgU2VjdXJpdHkgbWFuYWdlbWVudDsgUmVzb3VyY2UgYWRtaW5pc3RyYXRpb25cbiAgICpcbiAgICogQVdTOiBJQU0gcm9sZXMgd2l0aCBmdWxsIFJlZHNoaWZ0IGNsdXN0ZXIgYW5kIHJlc291cmNlIGFjY2Vzc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBSZXF1aXJlZDsgYXJyYXkgb2YgdmFsaWQgTWRhYVJvbGVSZWZcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFBZG1pblJvbGVzOiBNZGFhUm9sZVJlZltdO1xuICAvKipcbiAgICogUm9sZXMgZ3JhbnRlZCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgZGF0YSB3YXJlaG91c2UgUzMgYnVja2V0IGZvciBkYXRhIGxvYWRpbmcvdW5sb2FkaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEVUTCBkYXRhIGxvYWRpbmc7IERhdGEgdW5sb2FkaW5nIG9wZXJhdGlvbnM7IEJ1Y2tldCBhY2Nlc3MgZm9yIGFuYWx5dGljc1xuICAgKlxuICAgKiBBV1M6IElBTSByb2xlcyB3aXRoIFMzIGJ1Y2tldCBhY2Nlc3MgZm9yIFJlZHNoaWZ0IGRhdGEgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBPcHRpb25hbDsgYXJyYXkgb2YgdmFsaWQgTWRhYVJvbGVSZWZcbiAgICovXG4gIHJlYWRvbmx5IHdhcmVob3VzZUJ1Y2tldFVzZXJSb2xlcz86IE1kYWFSb2xlUmVmW107XG4gIC8qKlxuICAgKiBFeHRlcm5hbCBleGVjdXRpb24gcm9sZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBSZWRzaGlmdCBjbHVzdGVyIGZvciBjcm9zcy1zZXJ2aWNlIG9wZXJhdGlvbnMuXG4gICAqIElmIGEgcm9sZSBhbHNvIG5lZWRzIHdhcmVob3VzZSBidWNrZXQgYWNjZXNzLCBhZGQgaXQgdG8gd2FyZWhvdXNlQnVja2V0VXNlclJvbGVzIGV4cGxpY2l0bHkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3Jvc3Mtc2VydmljZSBpbnRlZ3JhdGlvbnM7IEV4dGVybmFsIGRhdGEgYWNjZXNzOyBHbHVlL0xhbWJkYSBpbnRlZ3JhdGlvblxuICAgKlxuICAgKiBBV1M6IElBTSBleGVjdXRpb24gcm9sZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBSZWRzaGlmdCBjbHVzdGVyXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBhcnJheSBvZiB2YWxpZCBNZGFhUm9sZVJlZjsgcm9sZXMgbXVzdCBiZSBhc3N1bWFibGUgYnkgUmVkc2hpZnRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGVzPzogTWRhYVJvbGVSZWZbXTtcbiAgLyoqXG4gICAqIFZQQyBJRCBmb3IgUmVkc2hpZnQgY2x1c3RlciBkZXBsb3ltZW50LiBUaGUgY2x1c3RlciBpcyBkZXBsb3llZCB3aXRoaW4gdGhpcyBWUENcbiAgICogd2l0aCBuZXR3b3JrIGFjY2VzcyBjb250cm9sbGVkIGJ5IHNlY3VyaXR5IGdyb3Vwcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBOZXR3b3JrIGlzb2xhdGlvbjsgVlBDLWJhc2VkIGRlcGxveW1lbnQ7IFNlY3VyZSBuZXR3b3JraW5nXG4gICAqXG4gICAqIEFXUzogVlBDIGZvciBSZWRzaGlmdCBjbHVzdGVyIG5ldHdvcmsgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBSZXF1aXJlZDsgdmFsaWQgVlBDIElEXG4gICAqL1xuICByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuICAvKipcbiAgICogU3VibmV0IElEcyBmb3IgUmVkc2hpZnQgY2x1c3RlciBub2RlIHBsYWNlbWVudC4gRm9yIGF1dG9tYXRpYyBjbHVzdGVyIHJlbG9jYXRpb24sXG4gICAqIHNwZWNpZnkgYXQgbGVhc3Qgb25lIHN1Ym5ldCBwZXIgQVouXG4gICAqXG4gICAqIFVzZSBjYXNlczogTXVsdGktQVogcGxhY2VtZW50OyBTdWJuZXQtc3BlY2lmaWMgZGVwbG95bWVudDsgQ2x1c3RlciByZWxvY2F0aW9uIHN1cHBvcnRcbiAgICpcbiAgICogQVdTOiBWUEMgc3VibmV0cyBmb3IgUmVkc2hpZnQgc3VibmV0IGdyb3VwXG4gICAqXG4gICAqIFZhbGlkYXRpb246IFJlcXVpcmVkOyBhcnJheSBvZiB2YWxpZCBzdWJuZXQgSURzIGluIHRoZSBzcGVjaWZpZWQgVlBDOyBtdXN0IGNvbnRhaW4gPj0gMyBzdWJuZXRzIGluIGRpZmZlcmVudCBBWnMgd2hlbiBtdWx0aUF6IGlzIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElkczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBpbmdyZXNzIHJ1bGVzIGRlZmluaW5nIGFsbG93ZWQgaW5ib3VuZCBjb25uZWN0aW9ucyB0byB0aGUgY2x1c3RlciBwb3J0LlxuICAgKiBTdXBwb3J0cyBJUHY0IENJRFIgYmxvY2tzIGFuZCBzZWN1cml0eSBncm91cCByZWZlcmVuY2VzLiBBbGwgb3RoZXIgdHJhZmZpYyBpcyBibG9ja2VkLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE5ldHdvcmsgYWNjZXNzIGNvbnRyb2w7IENsaWVudCBjb25uZWN0aXZpdHk7IFNlY3VyaXR5IGdyb3VwIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBWUEMgc2VjdXJpdHkgZ3JvdXAgaW5ncmVzcyBydWxlcyBmb3IgUmVkc2hpZnQgY2x1c3RlclxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBSZXF1aXJlZDsgb2JqZWN0IHdpdGggb3B0aW9uYWwgaXB2NCBhbmQvb3Igc2cgYXJyYXlzXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSW5ncmVzczogeyBpcHY0Pzogc3RyaW5nW107IHNnPzogc3RyaW5nW10gfTtcbiAgLyoqXG4gICAqIFJlZHNoaWZ0IG5vZGUgdHlwZSBkZXRlcm1pbmluZyBjb21wdXRlIGFuZCBzdG9yYWdlIGNhcGFjaXR5IChlLmcuLCBSQTNfNFhMQVJHRSkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogUGVyZm9ybWFuY2Ugc2l6aW5nOyBDb3N0IG9wdGltaXphdGlvbjsgV29ya2xvYWQtc3BlY2lmaWMgY2FwYWNpdHlcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBub2RlIHR5cGUgKGluc3RhbmNlIHR5cGUpXG4gICAqXG4gICAqIFZhbGlkYXRpb246IFJlcXVpcmVkOyB2YWxpZCBSZWRzaGlmdCBub2RlIHR5cGUgc3RyaW5nXG4gICAqL1xuICByZWFkb25seSBub2RlVHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogTnVtYmVyIG9mIG5vZGVzIGluIHRoZSBSZWRzaGlmdCBjbHVzdGVyLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgc2l6aW5nOyBQZXJmb3JtYW5jZSBzY2FsaW5nOyBDb3N0IG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBjbHVzdGVyIG5vZGUgY291bnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogUmVxdWlyZWQ7IHBvc2l0aXZlIGludGVnZXI7IG11c3QgYmUgPj0gMiB3aGVuIG11bHRpQXogaXMgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbnVtYmVyT2ZOb2RlczogbnVtYmVyO1xuICAvKipcbiAgICogRW5hYmxlIGF1ZGl0IGxvZ2dpbmcgdG8gYSBkZWRpY2F0ZWQgUzMgYnVja2V0LiBUaGUgYXVkaXQgYnVja2V0IHVzZXMgU1NFLVMzIGVuY3J5cHRpb25cbiAgICogKG5vdCBLTVMpIGR1ZSB0byBSZWRzaGlmdCBhdWRpdCBsb2dnaW5nIHJlcXVpcmVtZW50cy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDb21wbGlhbmNlIGF1ZGl0aW5nOyBTZWN1cml0eSBtb25pdG9yaW5nOyBVc2VyIGFjdGl2aXR5IHRyYWNraW5nXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgYXVkaXQgbG9nZ2luZyB0byBTMyB3aXRoIFNTRS1TMyBlbmNyeXB0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IFJlcXVpcmVkOyBib29sZWFuXG4gICAqL1xuICByZWFkb25seSBlbmFibGVBdWRpdExvZ2dpbmdUb1MzOiBib29sZWFuO1xuICAvKipcbiAgICogVENQIHBvcnQgZm9yIGNsaWVudCBjb25uZWN0aW9ucyB0byB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDdXN0b20gcG9ydCBjb25maWd1cmF0aW9uOyBOZXR3b3JrIHNlY3VyaXR5OyBQb3J0IHN0YW5kYXJkaXphdGlvblxuICAgKlxuICAgKiBBV1M6IFJlZHNoaWZ0IGNsdXN0ZXIgbGlzdGVuaW5nIHBvcnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IHZhbGlkIHBvcnQgbnVtYmVyOyBtdXN0IGJlIGluIHJhbmdlIDU0MzEtNTQ1NSBvciA4MTkxLTgyMTUgd2hlbiBtdWx0aUF6IGlzIHRydWVcbiAgICogQGRlZmF1bHQgNTQ0MFxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlclBvcnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNdWx0aS1ub2RlIGNsdXN0ZXIgZmxhZy4gV2hlbiB0cnVlLCBjcmVhdGVzIGEgbXVsdGktbm9kZSBjbHVzdGVyIGZvciBkaXN0cmlidXRlZCBwcm9jZXNzaW5nO1xuICAgKiB3aGVuIGZhbHNlLCBjcmVhdGVzIGEgc2luZ2xlLW5vZGUgY2x1c3RlciBmb3IgZGV2ZWxvcG1lbnQgb3Igc21hbGwgd29ya2xvYWRzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgYXJjaGl0ZWN0dXJlIHNlbGVjdGlvbjsgRGV2IHZzIHByb2R1Y3Rpb24gZGVwbG95bWVudDsgQ29zdCBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBjbHVzdGVyIHR5cGUgKHNpbmdsZS1ub2RlIG9yIG11bHRpLW5vZGUpXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBib29sZWFuXG4gICAqL1xuICByZWFkb25seSBtdWx0aU5vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2Vla2x5IG1haW50ZW5hbmNlIHdpbmRvdyBpbiBkZGQ6aGgyNDptaS1kZGQ6aGgyNDptaSBmb3JtYXQgKFVUQykuXG4gICAqIEV4YW1wbGU6ICdTdW46MjM6NDUtTW9uOjAwOjE1Jy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBNYWludGVuYW5jZSBzY2hlZHVsaW5nOyBCdXNpbmVzcyBjb250aW51aXR5OyBEb3dudGltZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgcHJlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvd1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBSZXF1aXJlZDsgdmFsaWQgdGltZSB3aW5kb3cgZm9ybWF0XG4gICAqL1xuICByZWFkb25seSBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogc3RyaW5nO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjbHVzdGVyIHBhcmFtZXRlciBncm91cCBwYXJhbWV0ZXJzIGZvciBwZXJmb3JtYW5jZSB0dW5pbmcuXG4gICAqIFNlY3VyaXR5LXNlbnNpdGl2ZSB2YWx1ZXMgYXJlIGF1dG9tYXRpY2FsbHkgb3ZlcnJpZGRlbiBmb3IgY29tcGxpYW5jZSAoZS5nLiwgU1NMIGVuZm9yY2VtZW50KS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQZXJmb3JtYW5jZSB0dW5pbmc7IEN1c3RvbSBjbHVzdGVyIGNvbmZpZ3VyYXRpb247IFdvcmtsb2FkIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IFJlZHNoaWZ0IHBhcmFtZXRlciBncm91cCBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBzdHJpbmcga2V5LXZhbHVlIHBhaXJzXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJHcm91cFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBXb3JrbG9hZCBtYW5hZ2VtZW50IChXTE0pIGNvbmZpZ3VyYXRpb24gZm9yIHF1ZXJ5IHF1ZXVlIG1hbmFnZW1lbnQgYW5kIHJlc291cmNlIGFsbG9jYXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogUXVlcnkgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uOyBDb25jdXJyZW5jeSBjb250cm9sOyBSZXNvdXJjZSBhbGxvY2F0aW9uXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgV0xNIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGFycmF5IG9mIHZhbGlkIENvbmZpZ3VyYXRpb25FbGVtZW50XG4gICAqL1xuICByZWFkb25seSB3b3JrbG9hZE1hbmFnZW1lbnQ/OiBDb25maWd1cmF0aW9uRWxlbWVudFtdO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBLTVMga2V5IEFSTnMgYWxsb3dlZCB0byB3cml0ZSB0byB0aGUgY2x1c3RlciBidWNrZXQuXG4gICAqIFVzZWZ1bCBmb3IgYWxsb3dpbmcgR2x1ZSBqb2JzIG9yIG90aGVyIHNlcnZpY2VzIHRvIHdyaXRlIGVuY3J5cHRlZCBkYXRhIHRvIHRoZSB3YXJlaG91c2UgYnVja2V0LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENyb3NzLXNlcnZpY2UgZW5jcnlwdGlvbjsgR2x1ZSBqb2IgaW50ZWdyYXRpb247IE11bHRpLWtleSBidWNrZXQgYWNjZXNzXG4gICAqXG4gICAqIEFXUzogS01TIGtleSBBUk5zIGZvciB3YXJlaG91c2UgYnVja2V0IGVuY3J5cHRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGFycmF5IG9mIHZhbGlkIEtNUyBrZXkgQVJOc1xuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFNjaGVkdWxlZCBhY3Rpb25zIGZvciBhdXRvbWF0ZWQgY2x1c3RlciBwYXVzZS9yZXN1bWUgb3BlcmF0aW9ucy5cbiAgICogRWFjaCBhY3Rpb24gc3BlY2lmaWVzIGEgdGFyZ2V0IGFjdGlvbiAocGF1c2VDbHVzdGVyL3Jlc3VtZUNsdXN0ZXIpLCBjcm9uIHNjaGVkdWxlLFxuICAgKiBhbmQgYWN0aXZlIHRpbWUgd2luZG93LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvc3Qgb3B0aW1pemF0aW9uIHZpYSBzY2hlZHVsZWQgcGF1c2U7IEF1dG9tYXRlZCBvcGVyYXRpb25zOyBCdXNpbmVzcy1ob3VycyBzY2hlZHVsaW5nXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgc2NoZWR1bGVkIGFjdGlvbnMgZm9yIGNsdXN0ZXIgbGlmZWN5Y2xlIG1hbmFnZW1lbnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGFycmF5IG9mIHZhbGlkIFNjaGVkdWxlZEFjdGlvblByb3BzXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZWRBY3Rpb25zPzogU2NoZWR1bGVkQWN0aW9uUHJvcHNbXTtcbiAgLyoqXG4gICAqIERhdGFiYXNlIHVzZXJzIGNyZWF0ZWQgaW4gUmVkc2hpZnQgd2l0aCBjcmVkZW50aWFscyBzdG9yZWQgaW4gU2VjcmV0cyBNYW5hZ2VyLlxuICAgKiBTdXBwb3J0cyBhdXRvbWF0ZWQgc2VjcmV0IHJvdGF0aW9uIG9uIGEgY29uZmlndXJhYmxlIGN5Y2xlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEF1dG9tYXRlZCB1c2VyIHByb3Zpc2lvbmluZzsgQ3JlZGVudGlhbCBtYW5hZ2VtZW50OyBTZWNyZXQgcm90YXRpb25cbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBkYXRhYmFzZSB1c2VycyB3aXRoIFNlY3JldHMgTWFuYWdlciBjcmVkZW50aWFsIHN0b3JhZ2UgYW5kIHJvdGF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBhcnJheSBvZiB2YWxpZCBEYXRhYmFzZVVzZXJzUHJvcHNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlVXNlcnM/OiBEYXRhYmFzZVVzZXJzUHJvcHNbXTtcbiAgLyoqXG4gICAqIENvbnRyb2wgd2hldGhlciBhIGRlZGljYXRlZCBTMyBidWNrZXQgaXMgY3JlYXRlZCBmb3Igd2FyZWhvdXNlIGRhdGEgb3BlcmF0aW9uc1xuICAgKiAobG9hZGluZywgdW5sb2FkaW5nLCBiYWNrdXApLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFN0b3JhZ2UgcmVzb3VyY2UgbWFuYWdlbWVudDsgRGF0YSBvcGVyYXRpb25zOyBCdWNrZXQgbGlmZWN5Y2xlIGNvbnRyb2xcbiAgICpcbiAgICogQVdTOiBTMyBidWNrZXQgZm9yIFJlZHNoaWZ0IGRhdGEgd2FyZWhvdXNlIG9wZXJhdGlvbnNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlV2FyZWhvdXNlQnVja2V0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBkYXlzIGF1dG9tYXRlZCBzbmFwc2hvdHMgYXJlIHJldGFpbmVkICgxLTM1KS4gU2V0IHRvIDAgdG8gZGlzYWJsZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBCYWNrdXAgbWFuYWdlbWVudDsgUG9pbnQtaW4tdGltZSByZWNvdmVyeTsgRGF0YSBwcm90ZWN0aW9uIGNvbXBsaWFuY2VcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBhdXRvbWF0ZWQgc25hcHNob3QgcmV0ZW50aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBpbnRlZ2VyIDAtMzVcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b21hdGVkU25hcHNob3RSZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICAvKipcbiAgICogRXZlbnQgbm90aWZpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIGNsdXN0ZXIgYW5kIHNjaGVkdWxlZCBhY3Rpb24gbW9uaXRvcmluZy5cbiAgICogQ29uZmlndXJlcyBTTlMgbm90aWZpY2F0aW9ucyB3aXRoIGVtYWlsIGRlbGl2ZXJ5LCBzZXZlcml0eSBmaWx0ZXJpbmcsIGFuZCBldmVudCBjYXRlZ29yeSBzZWxlY3Rpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogT3BlcmF0aW9uYWwgbW9uaXRvcmluZzsgRXZlbnQgYWxlcnRpbmc7IENsdXN0ZXIgc3RhdHVzIHRyYWNraW5nXG4gICAqXG4gICAqIEFXUzogU05TIG5vdGlmaWNhdGlvbnMgZm9yIFJlZHNoaWZ0IGNsdXN0ZXIgZXZlbnRzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyB2YWxpZCBFdmVudE5vdGlmaWNhdGlvbnNQcm9wc1xuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnROb3RpZmljYXRpb25zPzogRXZlbnROb3RpZmljYXRpb25zUHJvcHM7XG4gIC8qKlxuICAgKiBJbml0aWFsIGRhdGFiYXNlIG5hbWUgY3JlYXRlZCBpbiB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDdXN0b20gZGF0YWJhc2UgbmFtaW5nOyBJbml0aWFsIGRhdGFiYXNlIHNldHVwXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgaW5pdGlhbCBkYXRhYmFzZVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBPcHRpb25hbDsgdmFsaWQgZGF0YWJhc2UgbmFtZVxuICAgKiBAZGVmYXVsdCBcImRlZmF1bHRfZGJcIlxuICAgKi9cbiAgcmVhZG9ubHkgZGJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogU25hcHNob3QgaWRlbnRpZmllciBmb3IgY2x1c3RlciByZXN0b3JhdGlvbi4gT25seSBwcm92aWRlIHdoZW4gcmVzdG9yaW5nIGZyb20gYW4gZXhpc3Rpbmcgc25hcHNob3QuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGlzYXN0ZXIgcmVjb3Zlcnk7IERhdGEgbWlncmF0aW9uOyBDbHVzdGVyIHJlc3RvcmF0aW9uXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgc25hcHNob3QgZm9yIGNsdXN0ZXIgcmVzdG9yYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IHZhbGlkIHNuYXBzaG90IGlkZW50aWZpZXJcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbiAgLyoqXG4gICAqIG93bmVyQWNjb3VudCBSZWZlcnMgdG8gc25hcHNob3Qgb3duZXIgYWNjb3VudC4gQXBwbGljYWJsZSBpZiByZXN0b3JpbmcgdGhlIGNsdXN0ZXIgZnJvbSBzbmFwc2hvdCBhbmQgc25hcHNob3QgYmVsb25ncyB0byBhbm90aGVyIGFjY291bnRcbiAgICogT3B0aW9uYWwgLSBCeSBkZWZhdWx0LCBzbmFwc2hvdHMgYXJlIHNlYXJjaGVkIHdpdGhpbiBjdXJyZW50IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90T3duZXJBY2NvdW50Pzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIHJlYWRvbmx5IHJlZHNoaWZ0TWFuYWdlTWFzdGVyUGFzc3dvcmQ/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIG11bHRpLUFaIGRlcGxveW1lbnQgZm9yIGhpZ2ggYXZhaWxhYmlsaXR5LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEhpZ2ggYXZhaWxhYmlsaXR5OyBGYXVsdCB0b2xlcmFuY2U7IFByb2R1Y3Rpb24gZGVwbG95bWVudHNcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBtdWx0aS1BWiBkZXBsb3ltZW50XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBib29sZWFuLiBXaGVuIHRydWUsIHJlcXVpcmVzOiBudW1iZXJPZk5vZGVzID49IDIsIHN1Ym5ldElkcyBpbiA+PSAzIEFacyxcbiAgICogY2x1c3RlclBvcnQgaW4gcmFuZ2UgNTQzMS01NDU1IG9yIDgxOTEtODIxNSwgYW5kIHBhdXNlL3Jlc3VtZSBzY2hlZHVsZWQgYWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpQXo/OiBib29sZWFuO1xuICAvKipcbiAgICogVGFyZ2V0IHJlZ2lvbiBmb3IgY3Jvc3MtcmVnaW9uIHNuYXBzaG90IGNvcGllcy4gV2hlbiBzZXQsIGVuYWJsZXMgY3Jvc3MtcmVnaW9uIHNuYXBzaG90IGNvcHkgdG8gdGhpcyByZWdpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGlzYXN0ZXIgcmVjb3Zlcnk7IENyb3NzLXJlZ2lvbiBiYWNrdXA7IEJ1c2luZXNzIGNvbnRpbnVpdHlcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBzbmFwc2hvdCBjb3B5IGRlc3RpbmF0aW9uIHJlZ2lvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBPcHRpb25hbDsgdmFsaWQgQVdTIHJlZ2lvbiBzdHJpbmcsIG11c3QgZGlmZmVyIGZyb20gdGhlIGRlcGxveW1lbnQgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSBiYWNrdXBSZWdpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIG9taXRzIHRoZSBleHBsaWNpdCBibG9ja1B1YmxpY0FjY2VzcyBzZXR0aW5nIG9uIFMzIGJ1Y2tldHMgc28gQ0RLIGRvZXMgbm90IGVtaXRcbiAgICogYSBQdXRCdWNrZXRQdWJsaWNBY2Nlc3NCbG9jayBBUEkgY2FsbC4gVXNlIHdoZW4gcHVibGljIGFjY2VzcyBibG9jayBpcyBtYW5hZ2VkIGV4dGVybmFsbHlcbiAgICogKGUuZy4sIGJ5IEFXUyBhY2NvdW50LWxldmVsIHNldHRpbmdzIGFuZC9vciBTQ1BzIHRoYXQgZGVueSBzMzpQdXRCdWNrZXRQdWJsaWNBY2Nlc3NCbG9jaykuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU0NQLXJlc3RyaWN0ZWQgZW52aXJvbm1lbnRzOyBFeHRlcm5hbGx5IG1hbmFnZWQgcHVibGljIGFjY2VzcyBibG9jaztcbiAgICogT3JnYW5pemF0aW9ucyBlbmZvcmNpbmcgYWNjb3VudC1sZXZlbCBTMyBCbG9jayBQdWJsaWMgQWNjZXNzXG4gICAqXG4gICAqIEFXUzogUzMgUHV0QnVja2V0UHVibGljQWNjZXNzQmxvY2tcbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGJvb2xlYW47IGRlZmF1bHQgZmFsc2VcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0FjY2Vzc0Jsb2NrTWFuYWdlZEV4dGVybmFsbHk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YVdhcmVob3VzZUNvbmZpZ1BhcnNlciBleHRlbmRzIE1kYWFBcHBDb25maWdQYXJzZXI8RGF0YVdhcmVob3VzZUNvbmZpZ0NvbnRlbnRzPiB7XG4gIHB1YmxpYyByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBhZG1pblBhc3N3b3JkUm90YXRpb25EYXlzOiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBmZWRlcmF0aW9uczogRmVkZXJhdGlvblByb3BzW107XG4gIHB1YmxpYyByZWFkb25seSBkYXRhYmFzZVVzZXJzOiBEYXRhYmFzZVVzZXJzUHJvcHNbXTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGFBZG1pblJvbGVSZWZzOiBNZGFhUm9sZVJlZltdO1xuICBwdWJsaWMgcmVhZG9ubHkgd2FyZWhvdXNlQnVja2V0VXNlclJvbGVSZWZzPzogTWRhYVJvbGVSZWZbXTtcbiAgcHVibGljIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGVSZWZzPzogTWRhYVJvbGVSZWZbXTtcbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBjbHVzdGVyUG9ydDogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0SWRzOiBzdHJpbmdbXTtcbiAgcHVibGljIHJlYWRvbmx5IG5vZGVUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBlbmFibGVBdWRpdExvZ2dpbmdUb1MzOiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgbnVtYmVyT2ZOb2RlczogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgbXVsdGlOb2RlPzogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3VwSW5ncmVzczogeyBpcHY0Pzogc3RyaW5nW107IHNnPzogc3RyaW5nW10gfTtcbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtZXRlckdyb3VwUGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwdWJsaWMgcmVhZG9ubHkgd29ya2xvYWRNYW5hZ2VtZW50OiBDb25maWd1cmF0aW9uRWxlbWVudFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnM/OiBzdHJpbmdbXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBkZWZhdWx0Q2x1c3RlclBvcnQgPSA1NDQwO1xuICBwdWJsaWMgcmVhZG9ubHkgc2NoZWR1bGVkQWN0aW9uczogU2NoZWR1bGVkQWN0aW9uUHJvcHNbXTtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZVdhcmVob3VzZUJ1Y2tldD86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBhdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvbkRheXM/OiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBldmVudE5vdGlmaWNhdGlvbnM/OiBFdmVudE5vdGlmaWNhdGlvbnNQcm9wcztcbiAgcHVibGljIHJlYWRvbmx5IGRiTmFtZT86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90T3duZXJBY2NvdW50Pzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZD86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBtdWx0aUF6PzogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IGJhY2t1cFJlZ2lvbj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY0FjY2Vzc0Jsb2NrTWFuYWdlZEV4dGVybmFsbHk/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHN0YWNrOiBTdGFjaywgcHJvcHM6IE1kYWFBcHBDb25maWdQYXJzZXJQcm9wcykge1xuICAgIHN1cGVyKHN0YWNrLCBwcm9wcywgY29uZmlnU2NoZW1hIGFzIFNjaGVtYSk7XG5cbiAgICB0aGlzLmFkbWluVXNlcm5hbWUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmFkbWluVXNlcm5hbWU7XG4gICAgdGhpcy5hZG1pblBhc3N3b3JkUm90YXRpb25EYXlzID0gdGhpcy5jb25maWdDb250ZW50cy5hZG1pblBhc3N3b3JkUm90YXRpb25EYXlzO1xuICAgIHRoaXMuZmVkZXJhdGlvbnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmZlZGVyYXRpb25zID8gdGhpcy5jb25maWdDb250ZW50cy5mZWRlcmF0aW9ucyA6IFtdO1xuICAgIHRoaXMuZGF0YUFkbWluUm9sZVJlZnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmRhdGFBZG1pblJvbGVzO1xuICAgIHRoaXMud2FyZWhvdXNlQnVja2V0VXNlclJvbGVSZWZzID0gdGhpcy5jb25maWdDb250ZW50cy53YXJlaG91c2VCdWNrZXRVc2VyUm9sZXM7XG4gICAgdGhpcy5leGVjdXRpb25Sb2xlUmVmcyA9IHRoaXMuY29uZmlnQ29udGVudHMuZXhlY3V0aW9uUm9sZXM7XG4gICAgdGhpcy52cGNJZCA9IHRoaXMuY29uZmlnQ29udGVudHMudnBjSWQ7XG4gICAgdGhpcy5zdWJuZXRJZHMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnN1Ym5ldElkcztcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXBJbmdyZXNzID0gdGhpcy5jb25maWdDb250ZW50cy5zZWN1cml0eUdyb3VwSW5ncmVzcztcbiAgICB0aGlzLm5vZGVUeXBlID0gdGhpcy5jb25maWdDb250ZW50cy5ub2RlVHlwZTtcbiAgICB0aGlzLm51bWJlck9mTm9kZXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm51bWJlck9mTm9kZXM7XG4gICAgdGhpcy5lbmFibGVBdWRpdExvZ2dpbmdUb1MzID0gdGhpcy5jb25maWdDb250ZW50cy5lbmFibGVBdWRpdExvZ2dpbmdUb1MzO1xuICAgIHRoaXMuY2x1c3RlclBvcnQgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmNsdXN0ZXJQb3J0XG4gICAgICA/IHRoaXMuY29uZmlnQ29udGVudHMuY2x1c3RlclBvcnRcbiAgICAgIDogRGF0YVdhcmVob3VzZUNvbmZpZ1BhcnNlci5kZWZhdWx0Q2x1c3RlclBvcnQ7XG4gICAgdGhpcy5tdWx0aU5vZGUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm11bHRpTm9kZTtcbiAgICB0aGlzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93ID0gdGhpcy5jb25maWdDb250ZW50cy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdztcbiAgICB0aGlzLnBhcmFtZXRlckdyb3VwUGFyYW1zID0gdGhpcy5jb25maWdDb250ZW50cy5wYXJhbWV0ZXJHcm91cFBhcmFtc1xuICAgICAgPyB0aGlzLmNvbmZpZ0NvbnRlbnRzLnBhcmFtZXRlckdyb3VwUGFyYW1zXG4gICAgICA6IHt9O1xuICAgIHRoaXMud29ya2xvYWRNYW5hZ2VtZW50ID0gdGhpcy5jb25maWdDb250ZW50cy53b3JrbG9hZE1hbmFnZW1lbnQgPyB0aGlzLmNvbmZpZ0NvbnRlbnRzLndvcmtsb2FkTWFuYWdlbWVudCA6IFtdO1xuICAgIHRoaXMuYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmFkZGl0aW9uYWxCdWNrZXRLbXNLZXlBcm5zO1xuICAgIHRoaXMuc2NoZWR1bGVkQWN0aW9ucyA9IHRoaXMuY29uZmlnQ29udGVudHMuc2NoZWR1bGVkQWN0aW9ucyA/IHRoaXMuY29uZmlnQ29udGVudHMuc2NoZWR1bGVkQWN0aW9ucyA6IFtdO1xuICAgIHRoaXMuZGF0YWJhc2VVc2VycyA9IHRoaXMuY29uZmlnQ29udGVudHMuZGF0YWJhc2VVc2VycyA/IHRoaXMuY29uZmlnQ29udGVudHMuZGF0YWJhc2VVc2VycyA6IFtdO1xuICAgIHRoaXMuY3JlYXRlV2FyZWhvdXNlQnVja2V0ID0gdGhpcy5jb25maWdDb250ZW50cy5jcmVhdGVXYXJlaG91c2VCdWNrZXQ7XG4gICAgdGhpcy5hdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvbkRheXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmF1dG9tYXRlZFNuYXBzaG90UmV0ZW50aW9uRGF5cztcbiAgICB0aGlzLmV2ZW50Tm90aWZpY2F0aW9ucyA9IHRoaXMuY29uZmlnQ29udGVudHMuZXZlbnROb3RpZmljYXRpb25zO1xuICAgIHRoaXMuZGJOYW1lID0gdGhpcy5jb25maWdDb250ZW50cy5kYk5hbWU7XG4gICAgdGhpcy5zbmFwc2hvdElkZW50aWZpZXIgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnNuYXBzaG90SWRlbnRpZmllcjtcbiAgICB0aGlzLnNuYXBzaG90T3duZXJBY2NvdW50ID0gdGhpcy5jb25maWdDb250ZW50cy5zbmFwc2hvdE93bmVyQWNjb3VudFxuICAgICAgPyBTdHJpbmcodGhpcy5jb25maWdDb250ZW50cy5zbmFwc2hvdE93bmVyQWNjb3VudClcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMucmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZCA9IHRoaXMuY29uZmlnQ29udGVudHMucmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZDtcbiAgICB0aGlzLm11bHRpQXogPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm11bHRpQXo7XG4gICAgdGhpcy5iYWNrdXBSZWdpb24gPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmJhY2t1cFJlZ2lvbjtcbiAgICB0aGlzLnB1YmxpY0FjY2Vzc0Jsb2NrTWFuYWdlZEV4dGVybmFsbHkgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnB1YmxpY0FjY2Vzc0Jsb2NrTWFuYWdlZEV4dGVybmFsbHk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -8,35 +8,37 @@
8
8
  "bin": {
9
9
  "datawarehouse-cdk": "bin/datawarehouse.js"
10
10
  },
11
- "version": "1.4.0",
11
+ "version": "1.6.0",
12
12
  "license": "Apache-2.0",
13
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",
14
+ "build": "../../../../scripts/build/build_package.sh DataWarehouseConfigContents",
15
15
  "watch": "tsc -w",
16
16
  "test": "jest --passWithNoTests --coverage",
17
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\" "
18
+ "lint": "eslint --max-warnings 0 -c ../../../../eslint.config.mjs",
19
+ "test:update-baselines": "UPDATE_BASELINES=true jest --passWithNoTests --testPathPattern='.*\\.diff\\.test\\.ts'",
20
+ "test:package-docs": "../../../../scripts/generate_docs/test_package_docs.sh"
19
21
  },
20
22
  "main": "lib/index.js",
21
23
  "types": "lib/index.d.ts",
22
24
  "devDependencies": {
23
- "@aws-mdaa/testing": "1.4.0",
25
+ "@aws-mdaa/testing": "1.6.0",
24
26
  "@types/jest": "29.5.14",
25
27
  "@types/node": "22.9.0",
26
28
  "@types/prettier": "2.6.0",
27
29
  "jest": "29.7.0",
28
- "ts-jest": "29.4.6",
30
+ "ts-jest": "29.4.9",
29
31
  "ts-node": "10.9.2",
30
32
  "typescript": "5.9.3",
31
- "typescript-json-schema": "0.67.1"
33
+ "typescript-json-schema": "0.67.4"
32
34
  },
33
35
  "dependencies": {
34
- "@aws-mdaa/app": "1.4.0",
35
- "@aws-mdaa/config": "1.4.0",
36
- "@aws-mdaa/datawarehouse-l3-construct": "1.4.0",
37
- "@aws-mdaa/iam-role-helper": "1.4.0",
38
- "@aws-mdaa/l3-construct": "1.4.0",
39
- "ajv": "8.17.1",
36
+ "@aws-mdaa/app": "1.6.0",
37
+ "@aws-mdaa/config": "1.6.0",
38
+ "@aws-mdaa/datawarehouse-l3-construct": "1.6.0",
39
+ "@aws-mdaa/iam-role-helper": "1.6.0",
40
+ "@aws-mdaa/l3-construct": "1.6.0",
41
+ "ajv": "8.18.0",
40
42
  "aws-cdk-lib": "2.220.0",
41
43
  "cdk-nag": "2.37.55",
42
44
  "constructs": "10.0.96",
@@ -47,5 +49,8 @@
47
49
  "repository": {
48
50
  "type": "git",
49
51
  "url": "https://github.com/aws/modern-data-architecture-accelerator"
52
+ },
53
+ "mdaa": {
54
+ "deployStage": "2"
50
55
  }
51
56
  }
@@ -0,0 +1,212 @@
1
+ # Sample config for the Redshift Data Warehouse module.
2
+ # Deploys a multi-node Redshift cluster with SAML federation,
3
+ # scheduled pause/resume, audit logging, database users with
4
+ # secret rotation, event notifications, workload management,
5
+ # parameter group tuning, and VPC networking.
6
+ # This comprehensive config exercises every compatible non-excluded
7
+ # property at full depth.
8
+
9
+ # Admin username for the Redshift cluster. A secret is
10
+ # automatically generated for the password.
11
+ adminUsername: admin
12
+
13
+ # Number of days between admin password rotation
14
+ adminPasswordRotationDays: 30
15
+
16
+ # (Optional) Number of days automated snapshots are retained
17
+ # (1-35). Set to 0 to disable. (default: 1)
18
+ automatedSnapshotRetentionDays: 3
19
+
20
+ # (Optional) Additional KMS key ARNs allowed to write to the
21
+ # cluster bucket. Useful for allowing Glue jobs or other services
22
+ # to write encrypted data to the warehouse bucket.
23
+ additionalBucketKmsKeyArns:
24
+ - arn:{{partition}}:kms:{{region}}:{{account}}:key/abcd-123123-abcd-12312421
25
+
26
+ # (Optional) SAML or OIDC federation configurations for federated
27
+ # Redshift access. Each federation creates an IAM role with SAML
28
+ # trust for dynamic credential generation and group-based cluster
29
+ # access.
30
+ federations:
31
+ # Name of the federation for reference
32
+ - federationName: 'test'
33
+ # ARN of the IAM Identity Provider
34
+ providerArn: arn:{{partition}}:iam::{{account}}:saml-provider/sample-saml-identity-provider
35
+
36
+ # See CONFIGURATION.md for role reference options (name, arn, id).
37
+ # Admin roles granted full access to cluster resources including
38
+ # KMS keys and S3 buckets. Roles can be referenced by name, arn,
39
+ # or id.
40
+ dataAdminRoles:
41
+ - arn: arn:{{partition}}:iam::{{account}}:role/Admin
42
+
43
+ # (Optional) Roles granted read/write access to the data warehouse
44
+ # S3 bucket for data loading/unloading
45
+ warehouseBucketUserRoles:
46
+ - name: User
47
+ - name: team2-ex-role
48
+
49
+ # (Optional) External execution roles associated with the Redshift
50
+ # cluster for cross-service operations. If a role also needs
51
+ # warehouse bucket access, add it to warehouseBucketUserRoles.
52
+ executionRoles:
53
+ - arn: arn:{{partition}}:iam::{{account}}:role/team1-ex-role
54
+ - arn: arn:{{partition}}:iam::{{account}}:role/RedshiftExecRole
55
+
56
+ # VPC ID for Redshift cluster deployment
57
+ # Often created by your VPC/networking stack.
58
+ # Example SSM: ssm:/path/to/vpc/id
59
+ vpcId: vpc-12321421412
60
+
61
+ # Subnet IDs for Redshift cluster node placement. For automatic
62
+ # cluster relocation, specify at least one subnet per AZ.
63
+ # Often created by your VPC/networking stack.
64
+ # Example SSM: ssm:/path/to/subnet/id
65
+ subnetIds:
66
+ - subnet-12312312421
67
+ - subnet-12312321412
68
+ - subnet-12312321413
69
+
70
+ # Weekly maintenance window in ddd:hh24:mi-ddd:hh24:mi format
71
+ # (UTC). Example: 'Sun:23:45-Mon:00:15'.
72
+ preferredMaintenanceWindow: Sun:23:45-Mon:00:15
73
+
74
+ # (Optional) TCP port for client connections to the cluster
75
+ # (default: 5440)
76
+ clusterPort: 5440
77
+
78
+ # Security group ingress rules defining allowed inbound
79
+ # connections to the cluster port. Supports IPv4 CIDR blocks and
80
+ # security group references. All other traffic is blocked.
81
+ securityGroupIngress:
82
+ # (Optional) IPv4 CIDR blocks to allow traffic from
83
+ ipv4:
84
+ - 172.31.0.0/16
85
+ # (Optional) Security group IDs to allow traffic from
86
+ sg:
87
+ - ssm:/path/to/ssm
88
+
89
+ # Redshift node type determining compute and storage capacity
90
+ nodeType: RA3_4XLARGE
91
+ # Number of nodes in the Redshift cluster
92
+ numberOfNodes: 2
93
+
94
+ # Enable audit logging to a dedicated S3 bucket. The audit bucket
95
+ # uses SSE-S3 encryption (not KMS) due to Redshift requirements.
96
+ enableAuditLoggingToS3: true
97
+
98
+ # (Optional) Control whether a dedicated S3 bucket is created for
99
+ # warehouse data operations (default: true)
100
+ createWarehouseBucket: true
101
+ # (Optional) Initial database name created in the cluster
102
+ # (default: default_db)
103
+ dbName: 'test_db'
104
+ # (Optional) Multi-node cluster flag. When true, creates a
105
+ # multi-node cluster for distributed processing.
106
+ multiNode: true
107
+ # (Optional) Let Redshift manage the master password
108
+ redshiftManageMasterPassword: false
109
+
110
+ # (Optional) Additional cluster parameter group parameters for
111
+ # performance tuning. Security-sensitive values are automatically
112
+ # overridden for compliance (e.g., SSL enforcement).
113
+ parameterGroupParams:
114
+ max_concurrency_scaling_clusters: "1"
115
+ auto_analyze: "true"
116
+
117
+ # (Optional) Snapshot identifier for cluster restoration. Only
118
+ # provide when restoring from an existing snapshot.
119
+ snapshotIdentifier: test-snapshot-id
120
+
121
+ # (Optional) Snapshot owner account. Applicable if restoring the
122
+ # cluster from a snapshot that belongs to another account.
123
+ # By default, snapshots are searched within the current account.
124
+ snapshotOwnerAccount: '{{context:account-2}}'
125
+
126
+ # (Optional) Database users created in Redshift with credentials
127
+ # stored in Secrets Manager. Supports automated secret rotation.
128
+ databaseUsers:
129
+ # Name of the database user
130
+ - userName: 'serviceuserGlue'
131
+ # The DB to which the user will be added
132
+ dbName: 'default_db'
133
+ # Number of days between secret rotation
134
+ secretRotationDays: 90
135
+ # (Optional) Characters to exclude in the password
136
+ excludeCharacters: '"@/\\'
137
+ # (Optional) List of roles that need Redshift secret access
138
+ secretAccessRoles:
139
+ - name: 'test-arn'
140
+ - userName: 'serviceuserQuicksight'
141
+ dbName: 'default_db'
142
+ secretRotationDays: 90
143
+
144
+ # (Optional) Scheduled actions for automated cluster pause/resume.
145
+ # Each action specifies a target action, cron schedule, and active
146
+ # time window.
147
+ scheduledActions:
148
+ # Pause cluster every Friday at 6pm ET
149
+ - name: pause-cluster
150
+ # Scheduled action is enabled if true
151
+ enable: true
152
+ # Target operation: 'pauseCluster' or 'resumeCluster'
153
+ targetAction: pauseCluster
154
+ # Cron expression: cron(Minutes Hours Day-of-month Month
155
+ # Day-of-week Year)
156
+ schedule: cron(0 22 ? * FRI *)
157
+ # (Optional) UTC start date/time when the schedule becomes
158
+ # active (ISO 8601 format)
159
+ startTime: '2023-12-31T00:00:00Z'
160
+ # (Optional) UTC end date/time after which the schedule is no
161
+ # longer active
162
+ endTime: '2099-12-31T00:00:00Z'
163
+
164
+ # Resume cluster every Monday at 7am ET
165
+ - name: resume-cluster
166
+ enable: true
167
+ targetAction: resumeCluster
168
+ schedule: cron(0 12 ? * MON *)
169
+ startTime: '2023-12-31T00:00:00Z'
170
+ endTime: '2099-12-31T00:00:00Z'
171
+
172
+ # (Optional) Event notification configuration for cluster and
173
+ # scheduled action monitoring. Configures SNS notifications with
174
+ # email delivery, severity filtering, and event category selection.
175
+ eventNotifications:
176
+ # (Optional) Email addresses for SNS notification delivery
177
+ email:
178
+ - example@example.com
179
+ # (Optional) Minimum event severity level (enum: ERROR, INFO)
180
+ severity: INFO
181
+ # (Optional) Event categories to monitor
182
+ # (enum: configuration, management, monitoring, security,
183
+ # pending)
184
+ eventCategories:
185
+ - configuration
186
+ - management
187
+ - monitoring
188
+ - security
189
+ - pending
190
+
191
+ # (Optional) Workload management (WLM) configuration for query
192
+ # queue management and resource allocation.
193
+ workloadManagement:
194
+ - query_group: 'test-group'
195
+ memory_percent_to_use: 50
196
+ query_concurrency: 5
197
+
198
+ # (Optional) Enable multi-AZ deployment for high availability.
199
+ # Requires: numberOfNodes >= 2, subnetIds in >= 3 AZs,
200
+ # clusterPort in range 5431-5455 or 8191-8215.
201
+ multiAz: true
202
+
203
+ # (Optional) Target region for cross-region snapshot copies.
204
+ # When set, enables automatic cross-region snapshot copy to this region.
205
+ # Must differ from the cluster's deployment region.
206
+ backupRegion: us-west-2
207
+
208
+ # (Optional) When true, omits the explicit blockPublicAccess setting on S3
209
+ # buckets so CDK does not emit a PutBucketPublicAccessBlock API call. Use in
210
+ # SCP-restricted environments where public access block is managed externally
211
+ # via AWS account-level settings.
212
+ publicAccessBlockManagedExternally: false
@@ -0,0 +1,45 @@
1
+ # Minimal Redshift Data Warehouse module configuration.
2
+ # Contains only the required properties for a basic Redshift cluster
3
+ # deployment with VPC networking, security group, and audit logging.
4
+
5
+ # Admin username for the Redshift cluster. A secret is
6
+ # automatically generated for the password.
7
+ adminUsername: admin
8
+
9
+ # Number of days between admin password rotation
10
+ adminPasswordRotationDays: 30
11
+
12
+ # See CONFIGURATION.md for role reference options (name, arn, id).
13
+ # Admin roles granted full access to cluster resources including
14
+ # KMS keys and S3 buckets
15
+ dataAdminRoles:
16
+ - arn: arn:{{partition}}:iam::{{account}}:role/Admin
17
+
18
+ # Enable audit logging to a dedicated S3 bucket
19
+ enableAuditLoggingToS3: true
20
+
21
+ # Redshift node type determining compute and storage capacity
22
+ nodeType: RA3_4XLARGE
23
+ # Number of nodes in the Redshift cluster
24
+ numberOfNodes: 2
25
+
26
+ # Weekly maintenance window in ddd:hh24:mi-ddd:hh24:mi format (UTC)
27
+ preferredMaintenanceWindow: Sun:23:45-Mon:00:15
28
+
29
+ # Security group ingress rules defining allowed inbound
30
+ # connections to the cluster port
31
+ securityGroupIngress:
32
+ ipv4:
33
+ - 172.31.0.0/16
34
+
35
+ # Subnet IDs for Redshift cluster node placement
36
+ # Often created by your VPC/networking stack.
37
+ # Example SSM: ssm:/path/to/subnet/id
38
+ subnetIds:
39
+ - subnet-12312312421
40
+ - subnet-12312321412
41
+
42
+ # VPC ID for Redshift cluster deployment
43
+ # Often created by your VPC/networking stack.
44
+ # Example SSM: ssm:/path/to/vpc/id
45
+ vpcId: vpc-12321421412
@@ -0,0 +1,31 @@
1
+ # Redshift Data Warehouse module configuration exercising
2
+ # publicAccessBlockManagedExternally: true.
3
+ # This omits the explicit blockPublicAccess setting on S3 buckets
4
+ # so CDK does not emit a PutBucketPublicAccessBlock API call.
5
+
6
+ adminUsername: admin
7
+ adminPasswordRotationDays: 30
8
+
9
+ dataAdminRoles:
10
+ - arn: arn:{{partition}}:iam::{{account}}:role/Admin
11
+
12
+ enableAuditLoggingToS3: true
13
+
14
+ nodeType: RA3_4XLARGE
15
+ numberOfNodes: 2
16
+
17
+ preferredMaintenanceWindow: Sun:23:45-Mon:00:15
18
+
19
+ securityGroupIngress:
20
+ ipv4:
21
+ - 172.31.0.0/16
22
+
23
+ subnetIds:
24
+ - subnet-12312312421
25
+ - subnet-12312321412
26
+
27
+ vpcId: vpc-12321421412
28
+
29
+ # Omit explicit blockPublicAccess on S3 buckets; managed externally via
30
+ # AWS account-level settings and/or SCPs.
31
+ publicAccessBlockManagedExternally: true
package/mdaa.config.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "DEPLOY_STAGE": "2"
3
- }