cdk-comprehend-s3olap 2.0.401 → 2.0.403

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/.jsii CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "https://fantasticsie.medium.com/"
8
8
  },
9
9
  "bundled": {
10
- "aws-sdk": "^2.1545.0",
10
+ "aws-sdk": "^2.1546.0",
11
11
  "esbuild": "^0.20.0"
12
12
  },
13
13
  "dependencies": {
@@ -5767,6 +5767,6 @@
5767
5767
  "symbolId": "src/cdk-comprehend-s3olap:S3AccessPointNames"
5768
5768
  }
5769
5769
  },
5770
- "version": "2.0.401",
5771
- "fingerprint": "U/D1zVZgbIKWVBxCwttgD9Muu5rrpMaDdhW8qSgZ0rM="
5770
+ "version": "2.0.403",
5771
+ "fingerprint": "Gk2cQJIVEkPkQApveAmFY+NqAQPB/S8wCNLo6DpRAic="
5772
5772
  }
@@ -417,7 +417,7 @@ class ComprehendS3olab extends constructs_1.Construct {
417
417
  }
418
418
  exports.ComprehendS3olab = ComprehendS3olab;
419
419
  _a = JSII_RTTI_SYMBOL_1;
420
- ComprehendS3olab[_a] = { fqn: "cdk-comprehend-s3olap.ComprehendS3olab", version: "2.0.401" };
420
+ ComprehendS3olab[_a] = { fqn: "cdk-comprehend-s3olap.ComprehendS3olab", version: "2.0.403" };
421
421
  class LambdaArnCaptorCustomResource extends constructs_1.Construct {
422
422
  constructor(scope, id, props) {
423
423
  super(scope, id);
@@ -478,5 +478,5 @@ class LambdaArnCaptorCustomResource extends constructs_1.Construct {
478
478
  }
479
479
  exports.LambdaArnCaptorCustomResource = LambdaArnCaptorCustomResource;
480
480
  _b = JSII_RTTI_SYMBOL_1;
481
- LambdaArnCaptorCustomResource[_b] = { fqn: "cdk-comprehend-s3olap.LambdaArnCaptorCustomResource", version: "2.0.401" };
481
+ LambdaArnCaptorCustomResource[_b] = { fqn: "cdk-comprehend-s3olap.LambdaArnCaptorCustomResource", version: "2.0.403" };
482
482
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNvbXByZWhlbmQtczNvbGFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nkay1jb21wcmVoZW5kLXMzb2xhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyx1REFBaUQ7QUFDakQsd0RBQXdEO0FBQ3hELDZDQUE2QztBQUM3Qyx5Q0FBeUM7QUFDekMsMERBQTBEO0FBQzFELGlFQUFpRTtBQUNqRSxtREFBbUQ7QUFDbkQsMkNBQXVDO0FBQ3ZDLDZEQUE0SDtBQUM1SCwyQ0FLcUI7QUFFckIsSUFBWSxXQUtYO0FBTEQsV0FBWSxXQUFXO0lBQ3JCLGtDQUFtQixDQUFBO0lBQ25CLDhCQUFlLENBQUE7SUFDZixrQ0FBbUIsQ0FBQTtJQUNuQiwyQ0FBNEIsQ0FBQTtBQUM5QixDQUFDLEVBTFcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUFLdEI7QUErRkQ7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBaUM3QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUEwU25COzs7OztXQUtHO1FBQ0ssMkJBQXNCLEdBQUcsQ0FBQyxRQUFnQixFQUFFLHNCQUE2QyxFQUFtQixFQUFFO1lBQ3BILE1BQU0sZUFBZSxHQUFHLHNCQUFzQixFQUFFLGVBQWUsSUFBSSxPQUFPLENBQUM7WUFDM0UsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLEVBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQztZQUM1RCxNQUFNLHVCQUF1QixHQUFHLHNCQUFzQixFQUFFLHVCQUF1QixJQUFJLE1BQU0sQ0FBQztZQUMxRixNQUFNLHdCQUF3QixHQUFHLHNCQUFzQixFQUFFLHdCQUF3QixJQUFJLE9BQU8sQ0FBQztZQUM3RixNQUFNLGtDQUFrQyxHQUFHLHNC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bUIsRUFBRTtZQUM3RixZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7WUFDbkMsVUFBVSxFQUFFO2dCQUNWLGVBQWUsRUFBRSxLQUFLLENBQUMsaUJBQWlCO2dCQUN4QyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVE7YUFDdEI7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7O0FBaEVILHNFQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzZGVscG95IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1kZXBsb3ltZW50JztcbmltcG9ydCAqIGFzIHMzb2JqZWN0bGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zM29iamVjdGxhbWJkYSc7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQWNjZXNzQ29ucnRvbExhbWJkYSwgQWNjZXNzQ29ucnRvbExhbWJkYVByb3BzLCBSZWRhY3Rpb25MYW1iZGEsIFJlZGFjdGlvbkxhbWJkYVByb3BzIH0gZnJvbSAnLi9jb21wcmVoZW5kLWxhbWJkYXMnO1xuaW1wb3J0IHtcbiAgR2VuZXJhbFJvbGUsIEdlbmVyYWxSb2xlUHJvcHMsXG4gIEFkbWluUm9sZSwgQWRtaW5Sb2xlUHJvcHMsXG4gIEJpbGxpbmdSb2xlLCBCaWxsaW5nUm9sZVByb3BzLFxuICBDdXN0U3VwcG9ydFJvbGUsIEN1c3RTdXBwb3J0Um9sZVByb3BzLFxufSBmcm9tICcuL2lhbS1yb2xlcyc7XG5cbmV4cG9ydCBlbnVtIElhbVJvbGVOYW1lIHtcbiAgR0VORVJBTCA9ICdHZW5lcmFsJyxcbiAgQURNSU4gPSAnQWRtaW4nLFxuICBCSUxMSU5HID0gJ0JpbGxpbmcnLFxuICBDVVNUX1NVUFBPUlQgPSAnQ3VzdFN1cHBvcnQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUzNBY2Nlc3NQb2ludE5hbWVzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBTMyBhY2Vlc3MgcG9pbnQgZm9yIHRoZSBnZW5lcmFsIHJvbGUgaW4gdGhlIGFjY2VzcyBjb250cm9sIGNhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhY2Nlc3NjdGwtczMtYXAtc3VydmV5LXJlc3VsdHMtdW5rbm93bi1waWknXG4gICAqL1xuICByZWFkb25seSBnZW5lcmFsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgUzMgYWNlZXNzIHBvaW50IGZvciB0aGUgYWRtaW4gcm9sZSBpbiB0aGUgcmVkYWN0aW9uIGNhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhZG1pbi1zMy1hY2Nlc3MtcG9pbnQtY2FsbC10cmFuc2NyaXB0cy1rbm93bi1waWknXG4gICAqL1xuICByZWFkb25seSBhZG1pbjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIFMzIGFjZWVzcyBwb2ludCBmb3IgdGhlIGJpbGxpbmcgcm9sZSBpbiB0aGUgcmVkYWN0aW9uIGNhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdiaWxsLXMzLWFjY2Vzcy1wb2ludC1jYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaSdcbiAgICovXG4gIHJlYWRvbmx5IGJpbGxpbmc6IHN0cmluZztcbiAgLyoqXG4gICogVGhlIG5hbWUgb2YgdGhlIFMzIGFjZWVzcyBwb2ludCBmb3IgdGhlIGN1c3RvbWVyIHN1cHBvcnQgcm9sZSBpbiB0aGUgcmVkYWN0aW9uIGNhc2UuXG4gICpcbiAgKiBAZGVmYXVsdCAnY3MtczMtYWNjZXNzLXBvaW50LWNhbGwtdHJhbnNjcmlwdHMta25vd24tcGlpJ1xuICAqL1xuICByZWFkb25seSBjdXN0b21lclN1cHBvcnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wcmVoZW5kUzNvbGFiUHJvcHMge1xuICAvKipcbiAgICogVGhlIHByZWZpeCBhdHRhY2hlZCB0byB0aGUgbmFtZSBvZiB0aGUgUzMgYnVja2V0IHdoZXJlIHlvdSBhcmUgZ29pbmcgdG8gZXhwbG9yZSB0aGUgUzMgT2JqZWN0IExhbWJkYSBwZXJ0YWluaW5nIHRvIHRoZSBhY2Nlc3MgY29udHJvbCBjYXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCA2IHJhbmRvbSB3b3Jkc1xuICAgKi9cbiAgcmVhZG9ubHkgc3VydmV5QnVja2V0UHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHByZWZpeCBhdHRhY2hlZCB0byB0aGUgbmFtZSBvZiB0aGUgUzMgYnVja2V0IHdoZXJlIHlvdSBhcmUgZ29pbmcgdG8gZXhwbG9yZSB0aGUgUzMgT2JqZWN0IExhbWJkYSBwZXJ0YWluaW5nIHRvIHRoZSByZWRhY3Rpb24gY2FzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgNiByYW5kb20gd29yZHNcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zY3JpcHRzQnVja2V0UHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWVzIG9mIHRoZSBTMyBhY2Nlc3MgcG9pbnRzIGZvciB0aGUgYWNjZXNzIGNvbnRyb2wgY2FzZSBhbmQgcmVkYWN0aW9uIGNhc2UuXG4gICAqL1xuICByZWFkb25seSBzM0FjY2Vzc1BvaW50TmFtZXM/OiBTM0FjY2Vzc1BvaW50TmFtZXM7XG4gIC8qKlxuICAgKiBUaGUgcGFyYW1ldGVycyBuZWVkZWQgZm9yIHRoZSBgQ29tcHJlaGVuZFBpaUFjY2Vzc0NvbnRyb2xTM09iamVjdExhbWJkYWAgZnVuY3Rpb24uXG4gICAqXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NDb250cm9sTGFtYmRhQ29uZmlnPzogQWNjZXNzQ29ucnRvbExhbWJkYVByb3BzO1xuICAvKipcbiAgICogVGhlIHBhcmFtZXRlcnMgb2YgdGhlIGBDb21wcmVoZW5kUGlpUmVkYWN0aW9uUzNPYmplY3RMYW1iZGFgIGZ1bmN0aW9uIGZvciB0aGUgYEFkbWluUm9sZWAuXG4gICAqL1xuICByZWFkb25seSBhZG1pblJlZGFjdGlvbkxhbWJkYUNvbmZpZz86IFJlZGFjdGlvbkxhbWJkYVByb3BzO1xuICAvKipcbiAgICogVGhlIHBhcmFtZXRlcnMgb2YgdGhlIGBDb21wcmVoZW5kUGlpUmVkYWN0aW9uUzNPYmplY3RMYW1iZGFgIGZ1bmN0aW9uIGZvciB0aGUgYEJpbGxpbmdSb2xlYC5cbiAgICovXG4gIHJlYWRvbmx5IGJpbGxpbmdSZWRhY3Rpb25MYW1iZGFDb25maWc/OiBSZWRhY3Rpb25MYW1iZGFQcm9wcztcbiAgLyoqXG4gICogVGhlIHBhcmFtZXRlcnMgb2YgdGhlIGBDb21wcmVoZW5kUGlpUmVkYWN0aW9uUzNPYmplY3RMYW1iZGFgIGZ1bmN0aW9uIGZvciB0aGUgYEN1c3RTdXBwb3J0Um9sZWAuXG4gICovXG4gIHJlYWRvbmx5IGN1c3J0U3VwcG9ydFJlZGFjdGlvbkxhbWJkYUNvbmZpZz86IFJlZGFjdGlvbkxhbWJkYVByb3BzO1xuICAvKipcbiAgICogVGhlIG1hbmFnZWFibGUgcHJvcGVydGllcyBmb3IgdGhlIElBTSByb2xlIHVzZWQgdG8gYWNjZXNzIHRoZSBgc3VydmV5LXJlc3VsdHMudHh0YCBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2VuZXJhbFJvbGVDb25maWc/OiBHZW5lcmFsUm9sZVByb3BzO1xuICAvKipcbiAgICogVGhlIG1hbmFnZWFibGUgcHJvcGVydGllcyBmb3IgdGhlIGFkbWluaXN0cmF0b3IgSUFNIHJvbGUgaW4gdGhlIHJlZGFjdGlvbiBjYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRtaW5Sb2xlQ29uZmlnPzogQWRtaW5Sb2xlUHJvcHM7XG4gIC8qKlxuICAgKiBUaGUgbWFuYWdlYWJsZSBwcm9wZXJ0aWVzIGZvciB0aGUgYmlsbGluZyBJQU0gcm9sZSBpbiB0aGUgcmVkYWN0aW9uIGNhc2UuXG4gICAqL1xuICByZWFkb25seSBiaWxsaW5nUm9sZUNvbmZpZz86IEJpbGxpbmdSb2xlUHJvcHM7XG4gIC8qKlxuICAgKiBUaGUgbWFuYWdlYWJsZSBwcm9wZXJ0aWVzIGZvciB0aGUgY3VzdG9tZXIgc3VwcG9ydCBJQU0gcm9sZSBpbiB0aGUgcmVkYWN0aW9uIGNhc2UuXG4gICAqL1xuICByZWFkb25seSBjdXN0U3VwcG9ydFJvbGVDb25maWc/OiBDdXN0U3VwcG9ydFJvbGVQcm9wcztcbiAgLyoqXG4gICAqIEZvciBkaXN0aW5ndWlzaCB0ZXN0IGFuZCBub3JtYWwgZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2VuZXJhdGVSYW5kb21DaGFyYWN0ZXJzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgcGF0aCB3aGVyZSBgZmlsZXMvYWNjZXNzX2NvbnRyb2wvKi50eHRgIGFuZCBgZmlsZXMvcmVkYWN0aW9uLyoudHh0YCB3aWxsIGJlIHB1dC5cbiAgICpcbiAgICogRE8gTk9UIElOQ0xVREUgYC9gIGluIHRoZSBlbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IF9fZGlybmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhhbXBsZUZpbGVEaXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgZm91bmRhdGlvbiBuZWNlc3NhcnkgdG8gZGVwbG95IHRoZSBTMyBPYmplY3QgTGFtYmRhIEFjY2Vlc3MgQ29udHJvbCBVc2UgQ2FzZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXByZWhlbmRTM29sYWIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgUzMgT2JqZWN0IExhbWJkYSBmb3IgYWNjZXNzIGNvbnRyb2wuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNvYmplY3RMYW1iZGFBY2Nlc3NDb250cm9sQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBTMyBPYmplY3QgTGFtYmRhIGZvciB0aGUgYWRtaW4gcm9sZSBpbiB0aGUgcmVkYWN0aW9uIGNhc2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNvYmplY3RMYW1iZGFBZG1pbkFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgUzMgT2JqZWN0IExhbWJkYSBmb3IgdGhlIGJpbGxpbmcgcm9sZSBpbiB0aGUgcmVkYWN0aW9uIGNhc2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNvYmplY3RMYW1iZGFCaWxsaW5nQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBTMyBPYmplY3QgTGFtYmRhIGZvciB0aGUgY3VzdG9tZXIgc3VwcG9ydCByb2xlIGluIHRoZSByZWRhY3Rpb24gY2FzZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzM29iamVjdExhbWJkYUN1c3RvbWVyU3VwcG9ydEFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgTGFtYmRhIGZ1bmN0aW9uIGNvbWJpbmVkIHdpdGggQW1hem9uIENvbXByZWhlbmQgZm9yIHRoZSBnZW5lcmFsIGNhc2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGlpQWNjZXNzQ29ucnRvbExhbWJkYUFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgTGFtYmRhIGZ1bmN0aW9uIGNvbWJpbmVkIHdpdGggQW1hem9uIENvbXByZWhlbmQgZm9yIHRoaWUgYWRtaW5pc3RyYXRvciByb2xlIGluIHRoZSByZWRhY3Rpb24gY2FzZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhZG1pbkxhbWJkYUFybjogc3RyaW5nO1xuICAvKipcbiAgKiBUaGUgQVJOIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24gY29tYmluZWQgd2l0aCBBbWF6b24gQ29tcHJlaGVuZCBmb3IgdGhpZSBiaWxsaW5nIHJvbGUgaW4gdGhlIHJlZGFjdGlvbiBjYXNlLlxuICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYmlsbGluZ0xhbWJkYUFybjogc3RyaW5nO1xuICAvKipcbiAqIFRoZSBBUk4gb2YgdGhlIExhbWJkYSBmdW5jdGlvbiBjb21iaW5lZCB3aXRoIEFtYXpvbiBDb21wcmVoZW5kIGZvciB0aGllIGN1c3RvbWVyIHN1cHBvcnQgcm9sZSBpbiB0aGUgcmVkYWN0aW9uIGNhc2UuXG4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGN1c3RvbWVyU3VwcG9ydExhbWJkYUFybjogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29tcHJlaGVuZFMzb2xhYlByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBleGFtcGxlRmlsZURpciA9IHByb3BzPy5leGFtcGxlRmlsZURpciA/PyBfX2Rpcm5hbWU7XG4gICAgY29uc3QgZ2VuZXJhdGVSYW5kb21DaGFyYWN0ZXJzID0gcHJvcHM/LmdlbmVyYXRlUmFuZG9tQ2hhcmFjdGVycyA/PyB0cnVlO1xuICAgIC8vIHByZXJlcXVpc2l0ZXMgZm9yIElBTSByb2xlc1xuICAgIGNvbnN0IGdlbmVyYWxSb2xlQ29uZmlnID0gdGhpcy5nZXRJYW1Sb2xlQ29uZmlnKElhbVJvbGVOYW1lLkdFTkVSQUwsIHByb3BzPy5nZW5lcmFsUm9sZUNvbmZpZyk7XG4gICAgY29uc3QgYWRtaW5Sb2xlQ29uZmlnID0gdGhpcy5nZXRJYW1Sb2xlQ29uZmlnKElhbVJvbGVOYW1lLkFETUlOLCBwcm9wcz8uYWRtaW5Sb2xlQ29uZmlnKTtcbiAgICBjb25zdCBiaWxsaW5nUm9sZUNvbmZpZyA9IHRoaXMuZ2V0SWFtUm9sZUNvbmZpZyhJYW1Sb2xlTmFtZS5CSUxMSU5HLCBwcm9wcz8uYmlsbGluZ1JvbGVDb25maWcpO1xuICAgIGNvbnN0IGN1c3RTdXBwb3J0Um9sZUNvbmZpZyA9IHRoaXMuZ2V0SWFtUm9sZUNvbmZpZyhJYW1Sb2xlTmFtZS5DVVNUX1NVUFBPUlQsIHByb3BzPy5jdXN0U3VwcG9ydFJvbGVDb25maWcpO1xuICAgIC8vIHMzIGJ1Y2VrdCBhbmQgaXRzIGFjY2VzcyBwb2ludHNcbiAgICBjb25zdCBzdXJ2ZXlCdWNrZXRQcmVmaXggPSBwcm9wcy5zdXJ2ZXlCdWNrZXRQcmVmaXggPz8gdGhpcy5nZW5lcmF0ZVMzUHJlZml4KDYpO1xuICAgIGNvbnN0IHRyYW5zY3JpcHRzQnVja2V0UHJlZml4ID0gcHJvcHMudHJhbnNjcmlwdHNCdWNrZXRQcmVmaXggPz8gdGhpcy5nZW5lcmF0ZVMzUHJlZml4KDYpO1xuICAgIGNvbnN0IHMzQWNjZXNzUG9pbnROYW1lczogUzNBY2Nlc3NQb2ludE5hbWVzID0ge1xuICAgICAgZ2VuZXJhbDogcHJvcHM/LnMzQWNjZXNzUG9pbnROYW1lcz8uZ2VuZXJhbCA/PyAoKGdlbmVyYXRlUmFuZG9tQ2hhcmFjdGVycykgPyBgYWNjZXNzY3RsLXMzLWFwLXN1cnZleS1yZXN1bHRzLXVua25vd24tcGlpLSR7dGhpcy5nZW5lcmF0ZVMzUHJlZml4KDYpfWAgOiAnYWNjZXNzY3RsLXMzLWFwLXN1cnZleS1yZXN1bHRzLXVua25vd24tcGlpJyksXG4gICAgICBhZG1pbjogcHJvcHM/LnMzQWNjZXNzUG9pbnROYW1lcz8uYWRtaW4gPz8gKChnZW5lcmF0ZVJhbmRvbUNoYXJhY3RlcnMpID8gYGFkbWluLXMzLWFjY2Vzcy1wb2ludC1jYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaS0ke3RoaXMuZ2VuZXJhdGVTM1ByZWZpeCg2KX1gIDogJ2FkbWluLXMzLWFjY2Vzcy1wb2ludC1jYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaScpLFxuICAgICAgYmlsbGluZzogcHJvcHM/LnMzQWNjZXNzUG9pbnROYW1lcz8uYmlsbGluZyA/PyAoKGdlbmVyYXRlUmFuZG9tQ2hhcmFjdGVycykgPyBgYmlsbC1zMy1hY2Nlc3MtcG9pbnQtY2FsbC10cmFuc2NyaXB0cy1rbm93bi1waWktJHt0aGlzLmdlbmVyYXRlUzNQcmVmaXgoNil9YCA6ICdiaWxsLXMzLWFjY2Vzcy1wb2ludC1jYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaScpLFxuICAgICAgY3VzdG9tZXJTdXBwb3J0OiBwcm9wcz8uczNBY2Nlc3NQb2ludE5hbWVzPy5jdXN0b21lclN1cHBvcnQgPz8gKChnZW5lcmF0ZVJhbmRvbUNoYXJhY3RlcnMpID8gYGNzLXMzLWFjY2Vzcy1wb2ludC1jYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaS0ke3RoaXMuZ2VuZXJhdGVTM1ByZWZpeCg2KX1gIDogJ2NzLXMzLWFjY2Vzcy1wb2ludC1jYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaScpLFxuICAgIH07XG4gICAgLy8gb2JqZWN0IExhbWJkYVxuICAgIGNvbnN0IGFjc2VtYW50aWNWZXJzaW9uID0gcHJvcHM/LmFjY2Vzc0NvbnRyb2xMYW1iZGFDb25maWc/LnNlbWFudGljVmVyc2lvbiA/PyAnMS4wLjInO1xuICAgIGNvbnN0IGFjY29uZmlkZW5jZVRocmVzaG9sZCA9IHByb3BzPy5hY2Nlc3NDb250cm9sTGFtYmRhQ29uZmlnPy5jb25maWRlbmNlVGhyZXNob2xkID8/ICcwLjUnO1xuICAgIGNvbnN0IGFjY29udGFpbnNQaWlFbnRpdGllc1RocmVhZENvdW50ID0gcHJvcHM/LmFjY2Vzc0NvbnRyb2xMYW1iZGFDb25maWc/LmNvbnRhaW5zUGlpRW50aXRpZXNUaHJlYWRDb3VudCA/PyAnMjAnO1xuICAgIGNvbnN0IGFjZGVmYXVsdExhbmd1YWdlQ29kZSA9IHByb3BzPy5hY2Nlc3NDb250cm9sTGFtYmRhQ29uZmlnPy5kZWZhdWx0TGFuZ3VhZ2VDb2RlID8/ICdlbic7XG4gICAgY29uc3QgYWNkb2N1bWVudE1heFNpemUgPSBwcm9wcz8uYWNjZXNzQ29udHJvbExhbWJkYUNvbmZpZz8uZG9jdW1lbnRNYXhTaXplID8/ICcxMDI0MDAnO1xuICAgIGNvbnN0IGFjZG9jdW1lbnRNYXhTaXplQ29udGFpbnNQaWlFbnRpdGllcyA9IHByb3BzPy5hY2Nlc3NDb250cm9sTGFtYmRhQ29uZmlnPy5kb2N1bWVudE1heFNpemVDb250YWluc1BpaUVudGl0aWVzID8/ICc1MDAwMCc7XG4gICAgY29uc3QgYWNpc1BhcnRpYWxPYmplY3RTdXBwb3J0ZWQgPSBwcm9wcz8uYWNjZXNzQ29udHJvbExhbWJkYUNvbmZpZz8uaXNQYXJ0aWFsT2JqZWN0U3VwcG9ydGVkID8/ICdmYWxzZSc7XG4gICAgY29uc3QgYWNsb2dMZXZlbCA9IHByb3BzPy5hY2Nlc3NDb250cm9sTGFtYmRhQ29uZmlnPy5sb2dMZXZlbCA/PyAnSU5GTyc7XG4gICAgY29uc3QgYWNtYXhDaGFyc092ZXJsYXAgPSBwcm9wcz8uYWNjZXNzQ29udHJvbExhbWJkYUNvbmZpZz8ubWF4Q2hhcnNPdmVybGFwID8/ICcyMDAnO1xuICAgIGNvbnN0IGFjcGlpRW50aXR5VHlwZXMgPSBwcm9wcz8uYWNjZXNzQ29udHJvbExhbWJkYUNvbmZpZz8ucGlpRW50aXR5VHlwZXMgPz8gJ0FMTCc7XG4gICAgY29uc3QgYWNwdWJsaXNoQ2xvdWRXYXRjaE1ldHJpY3MgPSBwcm9wcz8uYWNjZXNzQ29udHJvbExhbWJkYUNvbmZpZz8ucHVibGlzaENsb3VkV2F0Y2hNZXRyaWNzID8/ICd0cnVlJztcbiAgICBjb25zdCBhY3N1YnNlZ21lbnRPdmVybGFwcGluZ1Rva2VucyA9IHByb3BzPy5hY2Nlc3NDb250cm9sTGFtYmRhQ29uZmlnPy5zdWJzZWdtZW50T3ZlcmxhcHBpbmdUb2tlbnMgPz8gJzIwJztcbiAgICBjb25zdCBhY3Vuc3VwcG9ydGVkRmlsZUhhbmRsaW5nID0gcHJvcHM/LmFjY2Vzc0NvbnRyb2xMYW1iZGFDb25maWc/LnVuc3VwcG9ydGVkRmlsZUhhbmRsaW5nID8/ICdGQUlMJztcbiAgICBjb25zdCBhY2Nlc3NDb250cm9sTGFtYmRhID0gbmV3IEFjY2Vzc0NvbnJ0b2xMYW1iZGEodGhpcywgJ1NlcnZlcmxlc3NMYW1iZGEnLCB7XG4gICAgICBzZW1hbnRpY1ZlcnNpb246IGFjc2VtYW50aWNWZXJzaW9uLFxuICAgICAgY29uZmlkZW5jZVRocmVzaG9sZDogYWNjb25maWRlbmNlVGhyZXNob2xkLFxuICAgICAgY29udGFpbnNQaWlFbnRpdGllc1RocmVhZENvdW50OiBhY2NvbnRhaW5zUGlpRW50aXRpZXNUaHJlYWRDb3VudCxcbiAgICAgIGRlZmF1bHRMYW5ndWFnZUNvZGU6IGFjZGVmYXVsdExhbmd1YWdlQ29kZSxcbiAgICAgIGRvY3VtZW50TWF4U2l6ZTogYWNkb2N1bWVudE1heFNpemUsXG4gICAgICBkb2N1bWVudE1heFNpemVDb250YWluc1BpaUVudGl0aWVzOiBhY2RvY3VtZW50TWF4U2l6ZUNvbnRhaW5zUGlpRW50aXRpZXMsXG4gICAgICBpc1BhcnRpYWxPYmplY3RTdXBwb3J0ZWQ6IGFjaXNQYXJ0aWFsT2JqZWN0U3VwcG9ydGVkLFxuICAgICAgbG9nTGV2ZWw6IGFjbG9nTGV2ZWwsXG4gICAgICBtYXhDaGFyc092ZXJsYXA6IGFjbWF4Q2hhcnNPdmVybGFwLFxuICAgICAgcGlpRW50aXR5VHlwZXM6IGFjcGlpRW50aXR5VHlwZXMsXG4gICAgICBwdWJsaXNoQ2xvdWRXYXRjaE1ldHJpY3M6IGFjcHVibGlzaENsb3VkV2F0Y2hNZXRyaWNzLFxuICAgICAgc3Vic2VnbWVudE92ZXJsYXBwaW5nVG9rZW5zOiBhY3N1YnNlZ21lbnRPdmVybGFwcGluZ1Rva2VucyxcbiAgICAgIHVuc3VwcG9ydGVkRmlsZUhhbmRsaW5nOiBhY3Vuc3VwcG9ydGVkRmlsZUhhbmRsaW5nLFxuICAgIH0pO1xuICAgIC8vIENvbXByZWhlbmRQaWlSZWRhY3Rpb25TM09iamVjdExhbWJkYVxuICAgIGNvbnN0IGFkbWluUmVkYWN0TGFtYmRhID0gdGhpcy5pbml0aWFsaXplUmVkYWN0TGFtYmRhKElhbVJvbGVOYW1lLkFETUlOLCBwcm9wcz8uYWRtaW5SZWRhY3Rpb25MYW1iZGFDb25maWcpO1xuICAgIGNvbnN0IGJpbGxpbmdSZWRhY3RMYW1iZGEgPSB0aGlzLmluaXRpYWxpemVSZWRhY3RMYW1iZGEoSWFtUm9sZU5hbWUuQklMTElORywgcHJvcHM/LmJpbGxpbmdSZWRhY3Rpb25MYW1iZGFDb25maWcpO1xuICAgIGNvbnN0IGN1c3RTdXBwb3J0UmVkYWN0TGFtYmRhID0gdGhpcy5pbml0aWFsaXplUmVkYWN0TGFtYmRhKElhbVJvbGVOYW1lLkNVU1RfU1VQUE9SVCwgcHJvcHM/LmN1c3J0U3VwcG9ydFJlZGFjdGlvbkxhbWJkYUNvbmZpZyk7XG4gICAgYmlsbGluZ1JlZGFjdExhbWJkYS5ub2RlLmFkZERlcGVuZGVuY3koYWRtaW5SZWRhY3RMYW1iZGEpO1xuICAgIGN1c3RTdXBwb3J0UmVkYWN0TGFtYmRhLm5vZGUuYWRkRGVwZW5kZW5jeShiaWxsaW5nUmVkYWN0TGFtYmRhKTtcblxuICAgIC8vIElBTSByb2xlc1xuICAgIGNvbnN0IGdlbmVyYWxSb2xlID0gbmV3IEdlbmVyYWxSb2xlKHRoaXMsICdHZW5lcmFsJywge1xuICAgICAgb2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lOiBnZW5lcmFsUm9sZUNvbmZpZy5vYmplY3RMYW1iZGFBY2Nlc3NQb2ludE5hbWUsXG4gICAgICBwb2xpY3lOYW1lOiBnZW5lcmFsUm9sZUNvbmZpZy5wb2xpY3lOYW1lLFxuICAgICAgaWFtUm9sZU5hbWU6IGdlbmVyYWxSb2xlQ29uZmlnLmlhbVJvbGVOYW1lLFxuICAgIH0pO1xuICAgIGNvbnN0IGFkbWluUm9sZSA9IG5ldyBBZG1pblJvbGUodGhpcywgJ0FkbWluJywge1xuICAgICAgb2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lOiBhZG1pblJvbGVDb25maWcub2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lLFxuICAgICAgcG9saWN5TmFtZTogYWRtaW5Sb2xlQ29uZmlnLnBvbGljeU5hbWUsXG4gICAgICBpYW1Sb2xlTmFtZTogYWRtaW5Sb2xlQ29uZmlnLmlhbVJvbGVOYW1lLFxuICAgIH0pO1xuICAgIGNvbnN0IGJpbGxpbmdSb2xlID0gbmV3IEJpbGxpbmdSb2xlKHRoaXMsICdCaWxsaW5nJywge1xuICAgICAgb2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lOiBiaWxsaW5nUm9sZUNvbmZpZy5vYmplY3RMYW1iZGFBY2Nlc3NQb2ludE5hbWUsXG4gICAgICBwb2xpY3lOYW1lOiBiaWxsaW5nUm9sZUNvbmZpZy5wb2xpY3lOYW1lLFxuICAgICAgaWFtUm9sZU5hbWU6IGJpbGxpbmdSb2xlQ29uZmlnLmlhbVJvbGVOYW1lLFxuICAgIH0pO1xuICAgIGNvbnN0IGN1c3RTdXBwb3J0Um9sZSA9IG5ldyBDdXN0U3VwcG9ydFJvbGUodGhpcywgJ0N1c3RTdXBwb3J0Jywge1xuICAgICAgb2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lOiBjdXN0U3VwcG9ydFJvbGVDb25maWcub2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lLFxuICAgICAgcG9saWN5TmFtZTogY3VzdFN1cHBvcnRSb2xlQ29uZmlnLnBvbGljeU5hbWUsXG4gICAgICBpYW1Sb2xlTmFtZTogY3VzdFN1cHBvcnRSb2xlQ29uZmlnLmlhbVJvbGVOYW1lLFxuICAgIH0pO1xuXG4gICAgLy8gUzMgYnVja2V0c1xuICAgIGNvbnN0IHN1cnZleUJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ1N1cnZleVJlc3VsdEJ1Y2tldCcsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IChnZW5lcmF0ZVJhbmRvbUNoYXJhY3RlcnMpID8gYHN1cnZleS1yZXN1bHRzLXVua25vd24tcGlpLSR7c3VydmV5QnVja2V0UHJlZml4fWAgOiAnc3VydmV5LXJlc3VsdHMtdW5rbm93bi1waWktMTIzNDU2JyxcbiAgICAgIHJlbW92YWxQb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZSxcbiAgICB9KTtcbiAgICBzdXJ2ZXlCdWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudChcbiAgICAgIHtcbiAgICAgICAgc2lkOiAnQVdTQnVja2V0R2V0UG9saWN5JyxcbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQWNjb3VudFJvb3RQcmluY2lwYWwoKV0sXG4gICAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0J10sXG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgcmVzb3VyY2VzOiBbYCR7c3VydmV5QnVja2V0LmJ1Y2tldEFybn0vKmBdLFxuICAgICAgICBjb25kaXRpb25zOiB7IFsnU3RyaW5nRXF1YWxzJ106IHsgJ3MzOkRhdGFBY2Nlc3NQb2ludEFjY291bnQnOiBjZGsuQXdzLkFDQ09VTlRfSUQgfSB9LFxuICAgICAgfSxcbiAgICApKTtcbiAgICBzdXJ2ZXlCdWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudChcbiAgICAgIHtcbiAgICAgICAgc2lkOiAnQVdTQnVja2V0UHV0UG9saWN5JyxcbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQWNjb3VudFJvb3RQcmluY2lwYWwoKV0sXG4gICAgICAgIGFjdGlvbnM6IFsnczM6UHV0T2JqZWN0J10sXG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgcmVzb3VyY2VzOiBbYCR7c3VydmV5QnVja2V0LmJ1Y2tldEFybn0vKmBdLFxuICAgICAgfSxcbiAgICApKTtcbiAgICBjb25zdCB0cmFuc2NyaXB0QnVja2V0ID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCAnVHJhbnNjcmlwdEJ1Y2tldCcsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IChnZW5lcmF0ZVJhbmRvbUNoYXJhY3RlcnMpID8gYGNhbGwtdHJhbnNjcmlwdHMta25vd24tcGlpLSR7dHJhbnNjcmlwdHNCdWNrZXRQcmVmaXh9YCA6ICdjYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaS0xMjM0NDU2JyxcbiAgICAgIHJlbW92YWxQb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZSxcbiAgICB9KTtcbiAgICB0cmFuc2NyaXB0QnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoXG4gICAgICB7XG4gICAgICAgIHNpZDogJ0FXU0J1Y2tldEdldFBvbGljeScsXG4gICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkFjY291bnRSb290UHJpbmNpcGFsKCldLFxuICAgICAgICBhY3Rpb25zOiBbJ3MzOkdldE9iamVjdCddLFxuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHJlc291cmNlczogW2Ake3RyYW5zY3JpcHRCdWNrZXQuYnVja2V0QXJufS8qYF0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHsgWydTdHJpbmdFcXVhbHMnXTogeyAnczM6RGF0YUFjY2Vzc1BvaW50QWNjb3VudCc6IGNkay5Bd3MuQUNDT1VOVF9JRCB9IH0sXG4gICAgICB9LFxuICAgICkpO1xuICAgIHRyYW5zY3JpcHRCdWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudChcbiAgICAgIHtcbiAgICAgICAgc2lkOiAnQVdTQnVja2V0UHV0UG9saWN5JyxcbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQWNjb3VudFJvb3RQcmluY2lwYWwoKV0sXG4gICAgICAgIGFjdGlvbnM6IFsnczM6UHV0T2JqZWN0J10sXG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgcmVzb3VyY2VzOiBbYCR7dHJhbnNjcmlwdEJ1Y2tldC5idWNrZXRBcm59LypgXSxcbiAgICAgIH0sXG4gICAgKSk7XG4gICAgc3VydmV5QnVja2V0Lm5vZGUuYWRkRGVwZW5kZW5jeShhY2Nlc3NDb250cm9sTGFtYmRhKTtcbiAgICBzdXJ2ZXlCdWNrZXQubm9kZS5hZGREZXBlbmRlbmN5KGdlbmVyYWxSb2xlKTtcbiAgICB0cmFuc2NyaXB0QnVja2V0Lm5vZGUuYWRkRGVwZW5kZW5jeShhZG1pblJlZGFjdExhbWJkYSk7XG4gICAgdHJhbnNjcmlwdEJ1Y2tldC5ub2RlLmFkZERlcGVuZGVuY3koYmlsbGluZ1JlZGFjdExhbWJkYSk7XG4gICAgdHJhbnNjcmlwdEJ1Y2tldC5ub2RlLmFkZERlcGVuZGVuY3koY3VzdFN1cHBvcnRSZWRhY3RMYW1iZGEpO1xuICAgIHRyYW5zY3JpcHRCdWNrZXQubm9kZS5hZGREZXBlbmRlbmN5KGFkbWluUm9sZSk7XG4gICAgdHJhbnNjcmlwdEJ1Y2tldC5ub2RlLmFkZERlcGVuZGVuY3koYmlsbGluZ1JvbGUpO1xuICAgIHRyYW5zY3JpcHRCdWNrZXQubm9kZS5hZGREZXBlbmRlbmN5KGN1c3RTdXBwb3J0Um9sZSk7XG5cbiAgICAvLyBjdXN0b20gcmVzb3VyY2VzXG4gICAgY29uc3QgZ2VuZXJhbExhbWJkYUFybkNhcHRvciA9IG5ldyBMYW1iZGFBcm5DYXB0b3JDdXN0b21SZXNvdXJjZSh0aGlzLCAnR2VuZXJhbENhcHRvcicsIHtcbiAgICAgIHJvbGVOYW1lOiBJYW1Sb2xlTmFtZS5HRU5FUkFMLFxuICAgICAgcGFydGlhbExhbWJkYU5hbWU6ICdQaWlBY2Nlc3NDb250cm9sRnVuY3Rpb24nLFxuICAgIH0pO1xuICAgIGNvbnN0IGFkbWluTGFtYmRhQXJuQ2FwdG9yID0gbmV3IExhbWJkYUFybkNhcHRvckN1c3RvbVJlc291cmNlKHRoaXMsICdBZG1pbkxhbWJkYUNhcHRvcicsIHtcbiAgICAgIHJvbGVOYW1lOiBJYW1Sb2xlTmFtZS5BRE1JTixcbiAgICAgIHBhcnRpYWxMYW1iZGFOYW1lOiAnUGlpUmVkYWN0aW9uRnVuY3Rpb24nLFxuICAgIH0pO1xuICAgIGNvbnN0IGJpbGxpbmdMYW1iZGFBcm5DYXB0b3IgPSBuZXcgTGFtYmRhQXJuQ2FwdG9yQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0JpbGxpbmdDYXB0b3InLCB7XG4gICAgICByb2xlTmFtZTogSWFtUm9sZU5hbWUuQklMTElORyxcbiAgICAgIHBhcnRpYWxMYW1iZGFOYW1lOiAnUGlpUmVkYWN0aW9uRnVuY3Rpb24nLFxuICAgIH0pO1xuICAgIGNvbnN0IGN1c3RvbVN1cHBvcnRMYW1iZGFBcm5DYXB0b3IgPSBuZXcgTGFtYmRhQXJuQ2FwdG9yQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0N1c3RvbVN1cHBvcnRDYXB0b3InLCB7XG4gICAgICByb2xlTmFtZTogSWFtUm9sZU5hbWUuQ1VTVF9TVVBQT1JULFxuICAgICAgcGFydGlhbExhbWJkYU5hbWU6ICdQaWlSZWRhY3Rpb25GdW5jdGlvbicsXG4gICAgfSk7XG4gICAgZ2VuZXJhbExhbWJkYUFybkNhcHRvci5ub2RlLmFkZERlcGVuZGVuY3koYWNjZXNzQ29udHJvbExhbWJkYSk7XG4gICAgYWRtaW5MYW1iZGFBcm5DYXB0b3Iubm9kZS5hZGREZXBlbmRlbmN5KGFkbWluUmVkYWN0TGFtYmRhKTtcbiAgICBiaWxsaW5nTGFtYmRhQXJuQ2FwdG9yLm5vZGUuYWRkRGVwZW5kZW5jeShiaWxsaW5nUmVkYWN0TGFtYmRhKTtcbiAgICBjdXN0b21TdXBwb3J0TGFtYmRhQXJuQ2FwdG9yLm5vZGUuYWRkRGVwZW5kZW5jeShjdXN0U3VwcG9ydFJlZGFjdExhbWJkYSk7XG4gICAgdGhpcy5waWlBY2Nlc3NDb25ydG9sTGFtYmRhQXJuID0gZ2VuZXJhbExhbWJkYUFybkNhcHRvci5sYW1iZGFBcm47XG4gICAgdGhpcy5hZG1pbkxhbWJkYUFybiA9IGFkbWluTGFtYmRhQXJuQ2FwdG9yLmxhbWJkYUFybjtcbiAgICB0aGlzLmJpbGxpbmdMYW1iZGFBcm4gPSBiaWxsaW5nTGFtYmRhQXJuQ2FwdG9yLmxhbWJkYUFybjtcbiAgICB0aGlzLmN1c3RvbWVyU3VwcG9ydExhbWJkYUFybiA9IGN1c3RvbVN1cHBvcnRMYW1iZGFBcm5DYXB0b3IubGFtYmRhQXJuO1xuXG4gICAgLy8gUzMgYWNjZXNzIHBvaW50c1xuICAgIGNvbnN0IGdlbmVyYWxBY2Nlc3NQb2ludCA9IG5ldyBzMy5DZm5BY2Nlc3NQb2ludCh0aGlzLCAnQWNjZXNzQ29udHJvbFMzQWNjZXNzUG9pbnQnLCB7XG4gICAgICBidWNrZXQ6IHN1cnZleUJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgLy8gbmFtZTogczNBY2Nlc3NQb2ludE5hbWVzLmdlbmVyYWwuc3Vic3RyaW5nKDAsIDUwKSxcbiAgICB9KTtcbiAgICBnZW5lcmFsQWNjZXNzUG9pbnQuYWRkUHJvcGVydHlPdmVycmlkZSgnTmFtZScsIHMzQWNjZXNzUG9pbnROYW1lcy5nZW5lcmFsLnN1YnN0cmluZygwLCA1MCkpO1xuICAgIGdlbmVyYWxBY2Nlc3NQb2ludC5hZGRPdmVycmlkZTtcbiAgICBjb25zdCBhZG1pbkFjY2Vzc1BvaW50ID0gbmV3IHMzLkNmbkFjY2Vzc1BvaW50KHRoaXMsICdBZG1pblMzQWNjZXNzUG9pbnQnLCB7XG4gICAgICBidWNrZXQ6IHRyYW5zY3JpcHRCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIC8vIG5hbWU6IHMzQWNjZXNzUG9pbnROYW1lcy5hZG1pbi5zdWJzdHJpbmcoMCwgNTApLFxuICAgIH0pO1xuICAgIGFkbWluQWNjZXNzUG9pbnQuYWRkUHJvcGVydHlPdmVycmlkZSgnTmFtZScsIHMzQWNjZXNzUG9pbnROYW1lcy5hZG1pbi5zdWJzdHJpbmcoMCwgNTApKTtcbiAgICBjb25zdCBiaWxsaW5nQWNjZXNzUG9pbnQgPSBuZXcgczMuQ2ZuQWNjZXNzUG9pbnQodGhpcywgJ0JpbGxpbmdTM0FjY2Vzc1BvaW50Jywge1xuICAgICAgYnVja2V0OiB0cmFuc2NyaXB0QnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAvLyBuYW1lOiBzM0FjY2Vzc1BvaW50TmFtZXMuYmlsbGluZy5zdWJzdHJpbmcoMCwgNTApLFxuICAgIH0pO1xuICAgIGFkbWluQWNjZXNzUG9pbnQuYWRkUHJvcGVydHlPdmVycmlkZSgnTmFtZScsIHMzQWNjZXNzUG9pbnROYW1lcy5iaWxsaW5nLnN1YnN0cmluZygwLCA1MCkpO1xuICAgIGNvbnN0IGN1c3RvbWVyU3VwcG9ydEFjY2Vzc1BvaW50ID0gbmV3IHMzLkNmbkFjY2Vzc1BvaW50KHRoaXMsICdDdXN0b21lclN1cHBvcnRTM0FjY2Vzc1BvaW50Jywge1xuICAgICAgYnVja2V0OiB0cmFuc2NyaXB0QnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAvLyBuYW1lOiBzM0FjY2Vzc1BvaW50TmFtZXMuY3VzdG9tZXJTdXBwb3J0LnN1YnN0cmluZygwLCA1MCksXG4gICAgfSk7XG4gICAgY3VzdG9tZXJTdXBwb3J0QWNjZXNzUG9pbnQuYWRkUHJvcGVydHlPdmVycmlkZSgnTmFtZScsIHMzQWNjZXNzUG9pbnROYW1lcy5jdXN0b21lclN1cHBvcnQuc3Vic3RyaW5nKDAsIDUwKSk7XG5cbiAgICAvLyBTM09iamVjdExhbWJkYSByZXNvdXJjZXNcbiAgICBjb25zdCBhY2Nlc3NDb250cm9sT2JqZWN0TGFtYmRhID0gbmV3IHMzb2JqZWN0bGFtYmRhLkNmbkFjY2Vzc1BvaW50KHRoaXMsICdHZW5lcmFsTGFtYmRhQWNjZXNzUG9pbnQnLCB7XG4gICAgICBuYW1lOiBnZW5lcmFsUm9sZUNvbmZpZy5vYmplY3RMYW1iZGFBY2Nlc3NQb2ludE5hbWUsXG4gICAgICBvYmplY3RMYW1iZGFDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIHN1cHBvcnRpbmdBY2Nlc3NQb2ludDogYGFybjoke2Nkay5Bd3MuUEFSVElUSU9OfTpzMzoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06YWNjZXNzcG9pbnQvJHtnZW5lcmFsQWNjZXNzUG9pbnQuYXR0ck5hbWV9YCxcbiAgICAgICAgdHJhbnNmb3JtYXRpb25Db25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFsnR2V0T2JqZWN0J10sXG4gICAgICAgICAgICBjb250ZW50VHJhbnNmb3JtYXRpb246IG5ldyBjZGsuQ2ZuSnNvbih0aGlzLCAnR2VuZXJhbE9iamVjdExhbWJkYUNvbmZpZycsIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICBBd3NMYW1iZGE6IHtcbiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uQXJuOiB0aGlzLnBpaUFjY2Vzc0NvbnJ0b2xMYW1iZGFBcm4sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGFkbWluT2JqZWN0TGFtYmRhID0gbmV3IHMzb2JqZWN0bGFtYmRhLkNmbkFjY2Vzc1BvaW50KHRoaXMsICdBZG1pbkxhbWJkYUFjY2Vzc1BvaW50Jywge1xuICAgICAgbmFtZTogYWRtaW5Sb2xlQ29uZmlnLm9iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZSxcbiAgICAgIG9iamVjdExhbWJkYUNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgc3VwcG9ydGluZ0FjY2Vzc1BvaW50OiBgYXJuOiR7Y2RrLkF3cy5QQVJUSVRJT059OnMzOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTphY2Nlc3Nwb2ludC8ke2FkbWluQWNjZXNzUG9pbnQuYXR0ck5hbWV9YCxcbiAgICAgICAgdHJhbnNmb3JtYXRpb25Db25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFsnR2V0T2JqZWN0J10sXG4gICAgICAgICAgICBjb250ZW50VHJhbnNmb3JtYXRpb246IG5ldyBjZGsuQ2ZuSnNvbih0aGlzLCAnQWRtaW5PYmplY3RMYW1iZGFDb25maWcnLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgQXdzTGFtYmRhOiB7XG4gICAgICAgICAgICAgICAgICBGdW5jdGlvbkFybjogdGhpcy5hZG1pbkxhbWJkYUFybixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgY29uc3QgYmlsbGluZ09iamVjdExhbWJkYSA9IG5ldyBzM29iamVjdGxhbWJkYS5DZm5BY2Nlc3NQb2ludCh0aGlzLCAnQmlsbGluZ0xhbWJkYUFjY2Vzc1BvaW50Jywge1xuICAgICAgbmFtZTogYmlsbGluZ1JvbGVDb25maWcub2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lLFxuICAgICAgb2JqZWN0TGFtYmRhQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBzdXBwb3J0aW5nQWNjZXNzUG9pbnQ6IGBhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06czM6JHtjZGsuQXdzLlJFR0lPTn06JHtjZGsuQXdzLkFDQ09VTlRfSUR9OmFjY2Vzc3BvaW50LyR7YmlsbGluZ0FjY2Vzc1BvaW50LmF0dHJOYW1lfWAsXG4gICAgICAgIHRyYW5zZm9ybWF0aW9uQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbJ0dldE9iamVjdCddLFxuICAgICAgICAgICAgY29udGVudFRyYW5zZm9ybWF0aW9uOiBuZXcgY2RrLkNmbkpzb24odGhpcywgJ0JpbGxpbmdPYmplY3RMYW1iZGFDb25maWcnLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgQXdzTGFtYmRhOiB7XG4gICAgICAgICAgICAgICAgICBGdW5jdGlvbkFybjogdGhpcy5iaWxsaW5nTGFtYmRhQXJuLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCBjdXN0b21lclN1cHBvcnRPYmplY3RMYW1iZGEgPSBuZXcgczNvYmplY3RsYW1iZGEuQ2ZuQWNjZXNzUG9pbnQodGhpcywgJ0N1c3RvbWVyU3VwcG9ydExhbWJkYUFjY2Vzc1BvaW50Jywge1xuICAgICAgbmFtZTogY3VzdFN1cHBvcnRSb2xlQ29uZmlnLm9iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZSxcbiAgICAgIG9iamVjdExhbWJkYUNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgc3VwcG9ydGluZ0FjY2Vzc1BvaW50OiBgYXJuOiR7Y2RrLkF3cy5QQVJUSVRJT059OnMzOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTphY2Nlc3Nwb2ludC8ke2N1c3RvbWVyU3VwcG9ydEFjY2Vzc1BvaW50LmF0dHJOYW1lfWAsXG4gICAgICAgIHRyYW5zZm9ybWF0aW9uQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbJ0dldE9iamVjdCddLFxuICAgICAgICAgICAgY29udGVudFRyYW5zZm9ybWF0aW9uOiBuZXcgY2RrLkNmbkpzb24odGhpcywgJ0N1c3RvbWVyU3VwcG9ydE9iamVjdExhbWJkYUNvbmZpZycsIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICBBd3NMYW1iZGE6IHtcbiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uQXJuOiB0aGlzLmN1c3RvbWVyU3VwcG9ydExhbWJkYUFybixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBBdXRvbWF0aWMgdXBsb2FkaW5nXG4gICAgY29uc3Qgc3VydmV5RmlsZVBhdGggPSBwYXRoLmpvaW4oZXhhbXBsZUZpbGVEaXIsICdmaWxlcy9hY2Nlc3NfY29udHJvbCcpO1xuICAgIGNvbnN0IHJlZGFjdGlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGV4YW1wbGVGaWxlRGlyLCAnZmlsZXMvcmVkYWN0aW9uJyk7XG4gICAgY29uc29sZS5sb2coYHN1cnZleUZpbGVQYXRoOiAke3N1cnZleUZpbGVQYXRofWApO1xuICAgIGNvbnNvbGUubG9nKGByZWRhY3Rpb25GaWxlUGF0aDogJHtyZWRhY3Rpb25GaWxlUGF0aH1gKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzdXJ2ZXlGaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRlcGxveUZpbGVzID0gbmV3IHMzZGVscG95LkJ1Y2tldERlcGxveW1lbnQodGhpcywgJ0RlcGxveVN1cnZleVJlc3VsdEZpbGVzJywge1xuICAgICAgICBzb3VyY2VzOiBbczNkZWxwb3kuU291cmNlLmFzc2V0KHN1cnZleUZpbGVQYXRoKV0sXG4gICAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiBzdXJ2ZXlCdWNrZXQsXG4gICAgICB9KTtcbiAgICAgIGRlcGxveUZpbGVzLm5vZGUuYWRkRGVwZW5kZW5jeShhY2Nlc3NDb250cm9sT2JqZWN0TGFtYmRhKTtcbiAgICB9O1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHJlZGFjdGlvbkZpbGVQYXRoKSkge1xuICAgICAgY29uc3QgZGVwbG95VHJhbnNjcmlwdEZpbGVzID0gbmV3IHMzZGVscG95LkJ1Y2tldERlcGxveW1lbnQodGhpcywgJ0RlcGxveVRyYW5zY3JpcHRGaWxlcycsIHtcbiAgICAgICAgc291cmNlczogW3MzZGVscG95LlNvdXJjZS5hc3NldChyZWRhY3Rpb25GaWxlUGF0aCldLFxuICAgICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogdHJhbnNjcmlwdEJ1Y2tldCxcbiAgICAgIH0pO1xuICAgICAgZGVwbG95VHJhbnNjcmlwdEZpbGVzLm5vZGUuYWRkRGVwZW5kZW5jeShhZG1pbk9iamVjdExhbWJkYSk7XG4gICAgICBkZXBsb3lUcmFuc2NyaXB0RmlsZXMubm9kZS5hZGREZXBlbmRlbmN5KGJpbGxpbmdPYmplY3RMYW1iZGEpO1xuICAgICAgZGVwbG95VHJhbnNjcmlwdEZpbGVzLm5vZGUuYWRkRGVwZW5kZW5jeShjdXN0b21lclN1cHBvcnRPYmplY3RMYW1iZGEpO1xuICAgIH07XG5cbiAgICB0aGlzLnMzb2JqZWN0TGFtYmRhQWNjZXNzQ29udHJvbEFybiA9IGNkay5Ub2tlbi5hc1N0cmluZyhjZGsuRm4uZ2V0QXR0KGFjY2Vzc0NvbnRyb2xPYmplY3RMYW1iZGEubG9naWNhbElkLCAnQXJuJykpO1xuICAgIHRoaXMuczNvYmplY3RMYW1iZGFBZG1pbkFybiA9IGNkay5Ub2tlbi5hc1N0cmluZyhjZGsuRm4uZ2V0QXR0KGFkbWluT2JqZWN0TGFtYmRhLmxvZ2ljYWxJZCwgJ0FybicpKTtcbiAgICB0aGlzLnMzb2JqZWN0TGFtYmRhQmlsbGluZ0FybiA9IGNkay5Ub2tlbi5hc1N0cmluZyhjZGsuRm4uZ2V0QXR0KGJpbGxpbmdPYmplY3RMYW1iZGEubG9naWNhbElkLCAnQXJuJykpO1xuICAgIHRoaXMuczNvYmplY3RMYW1iZGFDdXN0b21lclN1cHBvcnRBcm4gPSBjZGsuVG9rZW4uYXNTdHJpbmcoY2RrLkZuLmdldEF0dChjdXN0b21lclN1cHBvcnRPYmplY3RMYW1iZGEubG9naWNhbElkLCAnQXJuJykpO1xuICAgIGFjY2Vzc0NvbnRyb2xPYmplY3RMYW1iZGEubm9kZS5hZGREZXBlbmRlbmN5KGdlbmVyYWxMYW1iZGFBcm5DYXB0b3IpO1xuICAgIGFkbWluT2JqZWN0TGFtYmRhLm5vZGUuYWRkRGVwZW5kZW5jeShhZG1pbkxhbWJkYUFybkNhcHRvcik7XG4gICAgYmlsbGluZ09iamVjdExhbWJkYS5ub2RlLmFkZERlcGVuZGVuY3koYmlsbGluZ0xhbWJkYUFybkNhcHRvcik7XG4gICAgY3VzdG9tZXJTdXBwb3J0T2JqZWN0TGFtYmRhLm5vZGUuYWRkRGVwZW5kZW5jeShjdXN0b21TdXBwb3J0TGFtYmRhQXJuQ2FwdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZVMzUHJlZml4KGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgY29uc3QgY2hhcmFjdGVycyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICAgIGNvbnN0IGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVyc0xlbmd0aCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByZWRhY3Rpb24gTGFtYmRhIGZ1bmN0aW9uIGZvciBhIHNwZWljZmljIElBTSByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gcm9sZU5hbWUgdGhlIG5hbWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgSUFNIHJvbGVcbiAgICogQHBhcmFtIHNlcnZlcmxlc3NMYW1iZGFDb25maWcgdGhlIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVyIHNldHRpbmcgZm9yIHRoZSBBbWF6b24gQ29tcHJlaGVuZC5cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVJlZGFjdExhbWJkYSA9IChyb2xlTmFtZTogc3RyaW5nLCBzZXJ2ZXJsZXNzTGFtYmRhQ29uZmlnPzogUmVkYWN0aW9uTGFtYmRhUHJvcHMpOiBSZWRhY3Rpb25MYW1iZGEgPT4ge1xuICAgIGNvbnN0IHNlbWFudGljVmVyc2lvbiA9IHNlcnZlcmxlc3NMYW1iZGFDb25maWc/LnNlbWFudGljVmVyc2lvbiA/PyAnMS4wLjInO1xuICAgIGNvbnN0IGxvZ0xldmVsID0gc2VydmVybGVzc0xhbWJkYUNvbmZpZz8ubG9nTGV2ZWwgPz8gJ0lORk8nO1xuICAgIGNvbnN0IHVuc3VwcG9ydGVkRmlsZUhhbmRsaW5nID0gc2VydmVybGVzc0xhbWJkYUNvbmZpZz8udW5zdXBwb3J0ZWRGaWxlSGFuZGxpbmcgPz8gJ0ZBSUwnO1xuICAgIGNvbnN0IGlzUGFydGlhbE9iamVjdFN1cHBvcnRlZCA9IHNlcnZlcmxlc3NMYW1iZGFDb25maWc/LmlzUGFydGlhbE9iamVjdFN1cHBvcnRlZCA/PyAnZmFsc2UnO1xuICAgIGNvbnN0IGRvY3VtZW50TWF4U2l6ZUNvbnRhaW5zUGlpRW50aXRpZXMgPSBzZXJ2ZXJsZXNzTGFtYmRhQ29uZmlnPy5kb2N1bWVudE1heFNpemVDb250YWluc1BpaUVudGl0aWVzID8/ICc1MDAwMCc7XG4gICAgY29uc3QgZG9jdW1lbnRNYXhTaXplRGV0ZWN0UGlpRW50aXRpZXMgPSBzZXJ2ZXJsZXNzTGFtYmRhQ29uZmlnPy5kb2N1bWVudE1heFNpemVEZXRlY3RQaWlFbnRpdGllcyA/PyAnNTAwMCc7XG4gICAgY29uc3QgcGlpRW50aXR5VHlwZXMgPSBzZXJ2ZXJsZXNzTGFtYmRhQ29uZmlnPy5waWlFbnRpdHlUeXBlcyA/PyAnQUxMJztcbiAgICBjb25zdCBtYXNrQ2hhcmFjdGVyID0gc2VydmVybGVzc0xhbWJkYUNvbmZpZz8ubWFza0NoYXJhY3RlciA/PyAnKic7XG4gICAgY29uc3QgbWFza01vZGUgPSBzZXJ2ZXJsZXNzTGFtYmRhQ29uZmlnPy5tYXNrTW9kZSA/PyAnTUFTSyc7XG4gICAgY29uc3Qgc3Vic2VnbWVudE92ZXJsYXBwaW5nVG9rZW5zID0gc2VydmVybGVzc0xhbWJkYUNvbmZpZz8uc3Vic2VnbWVudE92ZXJsYXBwaW5nVG9rZW5zID8/ICcyMCc7XG4gICAgY29uc3QgZG9jdW1lbnRNYXhTaXplID0gc2VydmVybGVzc0xhbWJkYUNvbmZpZz8uZG9jdW1lbnRNYXhTaXplID8/ICcxMDI0MDAnO1xuICAgIGNvbnN0IGNvbmZpZGVuY2VUaHJlc2hvbGQgPSBzZXJ2ZXJsZXNzTGFtYmRhQ29uZmlnPy5jb25maWRlbmNlVGhyZXNob2xkID8/ICcwLjUnO1xuICAgIGNvbnN0IG1heENoYXJzT3ZlcmxhcCA9IHNlcnZlcmxlc3NMYW1iZGFDb25maWc/Lm1heENoYXJzT3ZlcmxhcCA/PyAnMjAwJztcbiAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2VDb2RlID0gc2VydmVybGVzc0xhbWJkYUNvbmZpZz8uZGVmYXVsdExhbmd1YWdlQ29kZSA/PyAnZW4nO1xuICAgIGNvbnN0IGRldGVjdFBpaUVudGl0aWVzVGhyZWFkQ291bnQgPSBzZXJ2ZXJsZXNzTGFtYmRhQ29uZmlnPy5kZXRlY3RQaWlFbnRpdGllc1RocmVhZENvdW50ID8/ICc4JztcbiAgICBjb25zdCBjb250YWluc1BpaUVudGl0aWVzVGhyZWFkQ291bnQgPSBzZXJ2ZXJsZXNzTGFtYmRhQ29uZmlnPy5jb250YWluc1BpaUVudGl0aWVzVGhyZWFkQ291bnQgPz8gJzIwJztcbiAgICBjb25zdCBwdWJsaXNoQ2xvdWRXYXRjaE1ldHJpY3MgPSBzZXJ2ZXJsZXNzTGFtYmRhQ29uZmlnPy5wdWJsaXNoQ2xvdWRXYXRjaE1ldHJpY3MgPz8gJ3RydWUnO1xuXG4gICAgcmV0dXJuIG5ldyBSZWRhY3Rpb25MYW1iZGEodGhpcywgYFNlcnZlcmxlc3NSZWRhY3RMYW1iZGEtJHtyb2xlTmFtZX1gLCB7XG4gICAgICBzZW1hbnRpY1ZlcnNpb246IHNlbWFudGljVmVyc2lvbixcbiAgICAgIGxvZ0xldmVsOiBsb2dMZXZlbCxcbiAgICAgIHVuc3VwcG9ydGVkRmlsZUhhbmRsaW5nOiB1bnN1cHBvcnRlZEZpbGVIYW5kbGluZyxcbiAgICAgIGlzUGFydGlhbE9iamVjdFN1cHBvcnRlZDogaXNQYXJ0aWFsT2JqZWN0U3VwcG9ydGVkLFxuICAgICAgZG9jdW1lbnRNYXhTaXplQ29udGFpbnNQaWlFbnRpdGllczogZG9jdW1lbnRNYXhTaXplQ29udGFpbnNQaWlFbnRpdGllcyxcbiAgICAgIGRvY3VtZW50TWF4U2l6ZURldGVjdFBpaUVudGl0aWVzOiBkb2N1bWVudE1heFNpemVEZXRlY3RQaWlFbnRpdGllcyxcbiAgICAgIHBpaUVudGl0eVR5cGVzOiBwaWlFbnRpdHlUeXBlcyxcbiAgICAgIG1hc2tDaGFyYWN0ZXI6IG1hc2tDaGFyYWN0ZXIsXG4gICAgICBtYXNrTW9kZTogbWFza01vZGUsXG4gICAgICBzdWJzZWdtZW50T3ZlcmxhcHBpbmdUb2tlbnM6IHN1YnNlZ21lbnRPdmVybGFwcGluZ1Rva2VucyxcbiAgICAgIGRvY3VtZW50TWF4U2l6ZTogZG9jdW1lbnRNYXhTaXplLFxuICAgICAgY29uZmlkZW5jZVRocmVzaG9sZDogY29uZmlkZW5jZVRocmVzaG9sZCxcbiAgICAgIG1heENoYXJzT3ZlcmxhcDogbWF4Q2hhcnNPdmVybGFwLFxuICAgICAgZGVmYXVsdExhbmd1YWdlQ29kZTogZGVmYXVsdExhbmd1YWdlQ29kZSxcbiAgICAgIGRldGVjdFBpaUVudGl0aWVzVGhyZWFkQ291bnQ6IGRldGVjdFBpaUVudGl0aWVzVGhyZWFkQ291bnQsXG4gICAgICBjb250YWluc1BpaUVudGl0aWVzVGhyZWFkQ291bnQ6IGNvbnRhaW5zUGlpRW50aXRpZXNUaHJlYWRDb3VudCxcbiAgICAgIHB1Ymxpc2hDbG91ZFdhdGNoTWV0cmljczogcHVibGlzaENsb3VkV2F0Y2hNZXRyaWNzLFxuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIHByb3BlcnRpZXMgcmVsYXRlZCB0byB0aGUgSUFNIHJvbGVzLlxuICAgKlxuICAgKiBAcGFyYW0gcm9sZU5hbWUgdGhlIG5hbWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgSUFNIHJvbGUuXG4gICAqIEBwYXJhbSByb2xlQ29uZmlnIHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlciBzZXR0aW5nIGZvciBvbmUgb2YgdGhlIElBTSByb2xlLlxuICAgKiBAcmV0dXJucyB0aGUgcHJvcGVydHkgZ3JvdXAuXG4gICAqL1xuICBwcml2YXRlIGdldElhbVJvbGVDb25maWcgPSAocm9sZU5hbWU6IHN0cmluZywgcm9sZUNvbmZpZz86IEdlbmVyYWxSb2xlUHJvcHMgfCBBZG1pblJvbGVQcm9wcyB8IEJpbGxpbmdSb2xlUHJvcHMgfCBDdXN0U3VwcG9ydFJvbGVQcm9wcykgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBwb2xpY3lOYW1lOiByb2xlQ29uZmlnPy5wb2xpY3lOYW1lID8/IHRoaXMuX2dldERlZmF1bHRQb2xpY3lOYW1lKHJvbGVOYW1lKSxcbiAgICAgIG9iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZTogcm9sZUNvbmZpZz8ub2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lID8/IHRoaXMuX2dldE9iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZShyb2xlTmFtZSksXG4gICAgICBpYW1Sb2xlTmFtZTogcm9sZUNvbmZpZz8ucG9saWN5TmFtZSA/PyB0aGlzLl9nZXRSb2xlTmFtZShyb2xlTmFtZSksXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcG9saWN5IG5hbWUgYWNjb3JkaW5nIHRvIHRoZSBJQU0gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIHJvbGVOYW1lIHRoZSBuYW1lIG9mIHRoZSBjb3JyZXNwb25kaW5nIElBTSByb2xlLlxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0RGVmYXVsdFBvbGljeU5hbWUocm9sZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChyb2xlTmFtZSkge1xuICAgICAgY2FzZSBJYW1Sb2xlTmFtZS5HRU5FUkFMOiByZXR1cm4gJ2dlbmVyYWwtcm9sZS1zM29sYXAtcG9saWN5JztcbiAgICAgIGNhc2UgSWFtUm9sZU5hbWUuQURNSU46IHJldHVybiAnYWRtaW4tcm9sZS1zM29sYXAtcG9saWN5JztcbiAgICAgIGNhc2UgSWFtUm9sZU5hbWUuQklMTElORzogcmV0dXJuICdiaWxsaW5nLXJvbGUtczNvbGFwLXBvbGljeSc7XG4gICAgICBjYXNlIElhbVJvbGVOYW1lLkNVU1RfU1VQUE9SVDogcmV0dXJuICdjdXN0b21lcnN1cHBvcnQtcm9sZS1zM29sYXAtcG9saWN5JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKCdDaGVjayB0aGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUsIHRoZXJlIG1pZ2h0IGJlIGEgcHJvYmxlbWF0Y2kgc3BlbGxpbmcuJyk7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBuYW1lIGZvciB0aGUgYWNjZXNzIHBvaW50IG9mIHRoZSBTMyBPYmplY3QgTGFtYmRhIGFjY29yZGluZyB0byB0aGUgSUFNIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSByb2xlTmFtZSB0aGUgbmFtZSBvZiB0aGUgY29ycmVzcG9uZGluZyBJQU0gcm9sZS5cbiAgICovXG4gIHByaXZhdGUgX2dldE9iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZShyb2xlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHJvbGVOYW1lKSB7XG4gICAgICBjYXNlIElhbVJvbGVOYW1lLkdFTkVSQUw6IHJldHVybiAnYWNjZXNzY3RsLXMzb2xhcC1zdXJ2ZXktcmVzdWx0cy11bmtub3duLXBpaSc7XG4gICAgICBjYXNlIElhbVJvbGVOYW1lLkFETUlOOiByZXR1cm4gJ2FkbWluLXMzb2xhcC1jYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaSc7XG4gICAgICBjYXNlIElhbVJvbGVOYW1lLkJJTExJTkc6IHJldHVybiAnYmlsbGluZy1zM29sYXAtY2FsbC10cmFuc2NyaXB0cy1rbm93bi1waWknO1xuICAgICAgY2FzZSBJYW1Sb2xlTmFtZS5DVVNUX1NVUFBPUlQ6IHJldHVybiAnY3VzdHN1cHBvcnQtczNvbGFwLWNhbGwtdHJhbnNjcmlwdHMta25vd24tcGlpJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKCdDaGVjayB0aGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUsIHRoZXJlIG1pZ2h0IGJlIGEgcHJvYmxlbWF0Y2kgc3BlbGxpbmcuJyk7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBuYW1lIGZvciB0aGUgSUFNIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSByb2xlTmFtZSB0aGUgbmFtZSBvZiB0aGUgY29ycmVzcG9uZGluZyBJQU0gcm9sZS5cbiAgICovXG4gIHByaXZhdGUgX2dldFJvbGVOYW1lKHJvbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAocm9sZU5hbWUpIHtcbiAgICAgIGNhc2UgSWFtUm9sZU5hbWUuR0VORVJBTDogcmV0dXJuICdHZW5lcmFsUm9sZSc7XG4gICAgICBjYXNlIElhbVJvbGVOYW1lLkFETUlOOiByZXR1cm4gJ1JlZGFjdGlvbkFkbWluUm9sZSc7XG4gICAgICBjYXNlIElhbVJvbGVOYW1lLkJJTExJTkc6IHJldHVybiAnUmVkYWN0aW9uQmlsbGluZ1JvbGUnO1xuICAgICAgY2FzZSBJYW1Sb2xlTmFtZS5DVVNUX1NVUFBPUlQ6IHJldHVybiAnUmVkYWN0aW9uQ3VzdFN1cHBvcnRSb2xlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKCdDaGVjayB0aGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUsIHRoZXJlIG1pZ2h0IGJlIGEgcHJvYmxlbWF0Y2kgc3BlbGxpbmcuJyk7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gIH1cbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUFybkNhcHRvclJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogdGhlIG5hbWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgSUFNIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcGFydGlhbCBmaXhlZCBuYW1lIG9mIHRoZSBnZW1lcmFsIExhbWJkYSBmdW5jdGlvbiBjcmVhdGVkIGZyb20gdGhlIHNlcnZlcmxlc3MgYXBwbGljYXRpb24uXG4gICAqL1xuICByZWFkb25seSBwYXJ0aWFsTGFtYmRhTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTGFtYmRhQXJuQ2FwdG9yQ3VzdG9tUmVzb3VyY2UgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2VuZXJhbCBMYW1iZGEgZnVuY3Rpb24gY3JlYXRlZCBmcm9tIHRoZSBzZXJ2ZXJsZXNzIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvODc2MFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYUFybjogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTGFtYmRhQXJuQ2FwdG9yUmVzb3VyY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2VSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdDUlJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQW4gZXhlY3V0aW9uIHJvbGUgdG8gZmluZCBvdXQgdGhlIEFSTiBvZiB0aGUgYWNjZXNzIGNvbnRyb2wgTGFtYmRhLicsXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFxuICAgICAgICAgICdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlJyxcbiAgICAgICAgKSxcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdBV1NYUmF5RGFlbW9uV3JpdGVBY2Nlc3MnKSxcbiAgICAgIF0sXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBDb21wcmVoZW5kUzNPYmplY3RMYW1iZGFDdXN0b21SZXNvdXJjZVBvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgYXNzaWduU2lkczogdHJ1ZSxcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0xpc3RMYW1iZGFQZXJtaXNzaW9ucycsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydsYW1iZGE6TGlzdEZ1bmN0aW9ucyddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0dldExhbWJkYUZ1bmN0aW9uc1Blcm1pc3Npb25zJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ2xhbWJkYTpHZXRGdW5jdGlvbicsICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjoke2Nkay5Bd3MuUEFSVElUSU9OfTpsYW1iZGE6JHtjZGsuQXdzLlJFR0lPTn06JHtjZGsuQXdzLkFDQ09VTlRfSUR9OmZ1bmN0aW9uOipgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCBvbkV2ZW50ID0gbmV3IGxhbWJkYS5Ob2RlanNGdW5jdGlvbih0aGlzLCAnQXJuRXhwZXJ0Jywge1xuICAgICAgZGVzY3JpcHRpb246IGBBIExhbWJkYSBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIEFSTiBvZiBcXGAke3Byb3BzLnBhcnRpYWxMYW1iZGFOYW1lfVxcYGAsXG4gICAgICBlbnRyeTogZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAncmVzb3VyY2VzL2xhbWJkYS1hcm4taGVscGVyLnRzJykpID8gcGF0aC5qb2luKF9fZGlybmFtZSwgJ3Jlc291cmNlcy9sYW1iZGEtYXJuLWhlbHBlci50cycpIDogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3Jlc291cmNlcy9sYW1iZGEtYXJuLWhlbHBlci5qcycpLFxuICAgICAgaGFuZGxlcjogJ2xhbWJkYUhhbmRsZXInLFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMiksXG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xNF9YLFxuICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgbWluaWZ5OiBmYWxzZSxcbiAgICAgICAgc291cmNlTWFwOiB0cnVlLFxuICAgICAgICBleHRlcm5hbE1vZHVsZXM6IFsnYXdzLXNkayddLFxuICAgICAgfSxcbiAgICAgIHJvbGU6IGN1c3RvbVJlc291cmNlUm9sZSxcbiAgICB9KTtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnUHJvdmlkZXInLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogb25FdmVudCxcbiAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgIHJvbGU6IGN1c3RvbVJlc291cmNlUm9sZS53aXRob3V0UG9saWN5VXBkYXRlcygpLFxuICAgIH0pO1xuICAgIGNvbnN0IGxhbWJkYUFyblNlYXJjaFVuaXQgPSBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsIGAke3Byb3BzLnJvbGVOYW1lfUdlbmVyYWxTZWFyY2hVbml0YCwge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIExhbWJkYUZpeGVkTmFtZTogcHJvcHMucGFydGlhbExhbWJkYU5hbWUsXG4gICAgICAgIEdlbnJlOiBwcm9wcy5yb2xlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5sYW1iZGFBcm4gPSBjZGsuVG9rZW4uYXNTdHJpbmcobGFtYmRhQXJuU2VhcmNoVW5pdC5nZXRBdHQoJ0xhbWJkYUFybicpKTtcbiAgfVxufSJdfQ==
@@ -47,7 +47,7 @@ class AccessConrtolLambda extends constructs_1.Construct {
47
47
  }
48
48
  exports.AccessConrtolLambda = AccessConrtolLambda;
49
49
  _a = JSII_RTTI_SYMBOL_1;
50
- AccessConrtolLambda[_a] = { fqn: "cdk-comprehend-s3olap.AccessConrtolLambda", version: "2.0.401" };
50
+ AccessConrtolLambda[_a] = { fqn: "cdk-comprehend-s3olap.AccessConrtolLambda", version: "2.0.403" };
51
51
  class RedactionLambda extends constructs_1.Construct {
52
52
  constructor(scope, id, props) {
53
53
  super(scope, id);
@@ -97,5 +97,5 @@ class RedactionLambda extends constructs_1.Construct {
97
97
  }
98
98
  exports.RedactionLambda = RedactionLambda;
99
99
  _b = JSII_RTTI_SYMBOL_1;
100
- RedactionLambda[_b] = { fqn: "cdk-comprehend-s3olap.RedactionLambda", version: "2.0.401" };
100
+ RedactionLambda[_b] = { fqn: "cdk-comprehend-s3olap.RedactionLambda", version: "2.0.403" };
101
101
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlaGVuZC1sYW1iZGFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXByZWhlbmQtbGFtYmRhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFDeEMsMkNBQXVDO0FBbUZ2QyxNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBV2hELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQztRQUN6RCxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxLQUFLLENBQUM7UUFDL0QsTUFBTSw4QkFBOEIsR0FBRyxLQUFLLENBQUMsOEJBQThCLElBQUksSUFBSSxDQUFDO1FBQ3BGLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQztRQUM5RCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxJQUFJLFFBQVEsQ0FBQztRQUMxRCxNQUFNLGtDQUFrQyxHQUFHLEtBQUssQ0FBQyxrQ0FBa0MsSUFBSSxPQUFPLENBQUM7UUFDL0YsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLENBQUMsd0JBQXdCLElBQUksT0FBTyxDQUFDO1FBQzNFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDO1FBQzFDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO1FBQ3ZELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDO1FBQ3JELE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixJQUFJLE1BQU0sQ0FBQztRQUMxRSxNQUFNLDJCQUEyQixHQUFHLEtBQUssQ0FBQywyQkFB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aWIvYXdzLXNhbSc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NDb25ydG9sTGFtYmRhUHJvcHMge1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNlcnZlcmxlc3MgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0ICcxLjAuMidcbiAgICovXG4gIHJlYWRvbmx5IHNlbWFudGljVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHByZWRpY3Rpb24gY29uZmlkZW5jZSBzY29yZSBhYm92ZSB3aGljaCBQSUkgY2xhc3NpZmljYXRpb24gYW5kIGRldGVjdGlvbiB3b3VsZCBiZSBjb25zaWRlcmVkIGFzIGZpbmFsIGFuc3dlci4gVmFsaWQgcmFuZ2UgKDAuNSB0byAxLjApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnMC41J1xuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlkZW5jZVRocmVzaG9sZD86IHN0cmluZztcbiAgLyoqXG4gICAqIE51bWJlciBvZiB0aHJlYWRzIHRvIHVzZSBmb3IgY2FsbGluZyBDb21wcmVoZW5kJ3MgQ29udGFpbnNQaWlFbnRpdGllcyBBUEkuIFRoaXMgY29udHJvbHMgdGhlIG51bWJlciBvZiBzaW11bHRhbmVvdXMgY2FsbHMgdGhhdCB3aWxsIGJlIG1hZGUgZnJvbSB0aGlzIExhbWJkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgJzIwJ1xuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbnNQaWlFbnRpdGllc1RocmVhZENvdW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogRGVmYXVsdCBsYW5ndWFnZSBvZiB0aGUgdGV4dCB0byBiZSBwcm9jZXNzZWQuIFRoaXMgY29kZSB3aWxsIGJlIHVzZWQgZm9yIGludGVyYWN0aW5nIHdpdGggQ29tcHJlaGVuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2VuJ1xuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlQ29kZT86IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgbWF4aW11bSBkb2N1bWVudCBzaXplIChpbiBieXRlcykgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbiBwcm9jZXNzIG90aGVyd2lzZSB3aWxsIHRocm93IGV4Y2VwdGlvbiBmb3IgdG9vIGxhcmdlIGRvY3VtZW50IHNpemUuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcxMDI0MDAnXG4gICAqL1xuICByZWFkb25seSBkb2N1bWVudE1heFNpemU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNYXhpbXVtIGRvY3VtZW50IHNpemUgKGluIGJ5dGVzKSB0byBiZSB1c2VkIGZvciBtYWtpbmcgY2FsbHMgdG8gQ29tcHJlaGVuZCdzIENvbnRhaW5zUGlpRW50aXRpZXMgQVBJLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnNTAwMDAnXG4gICAqL1xuICByZWFkb25seSBkb2N1bWVudE1heFNpemVDb250YWluc1BpaUVudGl0aWVzPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0byBzdXBwb3J0IHBhcnRpYWwgb2JqZWN0cyBvciBub3QuIEFjY2Vzc2luZyBwYXJ0aWFsIG9iamVjdCB0aHJvdWdoIGh0dHAgaGVhZGVycyBzdWNoIGJ5dGUtcmFuZ2UgY2FuIGNvcnJ1cHQgdGhlIG9iamVjdCBhbmQvb3IgYWZmZWN0IFBJSSBkZXRlY3Rpb24gYWNjdXJhY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdmYWxzZSdcbiAgICovXG4gIHJlYWRvbmx5IGlzUGFydGlhbE9iamVjdFN1cHBvcnRlZD86IHN0cmluZztcbiAgLyoqXG4gICAqIExvZyBsZXZlbCBmb3IgTGFtYmRhIGZ1bmN0aW9uIGxvZ2dpbmcsIGUuZy4sIEVSUk9SLCBJTkZPLCBERUJVRywgZXRjLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnSU5GTydcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0xldmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogTWF4aW11bSBjaGFyYWN0ZXJzIHRvIG92ZXJsYXAgYW1vbmcgc2VnbWVudHMgb2YgYSBkb2N1bWVudCBpbiBjYXNlIGNodW5raW5nIGlzIG5lZWRlZCBiZWNhdXNlIG9mIG1heGltdW0gZG9jdW1lbnQgc2l6ZSBsaW1pdC5cbiAgICpcbiAgICogQGRlZmF1bHQgJzIwMCdcbiAgICovXG4gIHJlYWRvbmx5IG1heENoYXJzT3ZlcmxhcD86IHN0cmluZztcbiAgLyoqXG4gICAqIExpc3Qgb2YgY29tbWEgc2VwYXJhdGVkIFBJSSBlbnRpdHkgdHlwZXMgdG8gYmUgY29uc2lkZXJlZCBmb3IgYWNjZXNzIGNvbnRyb2wuIFJlZmVyIENvbXByZWhlbmQncyBkb2N1bWVudGF0aW9uIHBhZ2UgZm9yIGxpc3Qgb2Ygc3VwcG9ydGVkIFBJSSBlbnRpdHkgdHlwZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdBTEwnXG4gICAqL1xuICByZWFkb25seSBwaWlFbnRpdHlUeXBlcz86IHN0cmluZztcbiAgLyoqXG4gICAqIFRydWUgaWYgcHVibGlzaCBtZXRyaWNzIHRvIENsb3Vkd2F0Y2gsIGZhbHNlIG90aGVyd2lzZS4gU2VlIFJFQURNRS5tZCBmb3IgZGV0YWlscyBvbiBDbG91ZFdhdGNoIG1ldHJpY3MuXG4gICAqXG4gICAqIEBkZWZhdWx0ICd0cnVlJ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaENsb3VkV2F0Y2hNZXRyaWNzPzogc3RyaW5nO1xuICAvKipcbiAgICogTnVtYmVyIG9mIHRva2Vucy93b3JkcyB0byBvdmVybGFwIGFtb25nIHNlZ21lbnRzIG9mIGEgZG9jdW1lbnQgaW4gY2FzZSBjaHVua2luZyBpcyBuZWVkZWQgYmVjYXVzZSBvZiBtYXhpbXVtIGRvY3VtZW50IHNpemUgbGltaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcyMCdcbiAgICovXG4gIHJlYWRvbmx5IHN1YnNlZ21lbnRPdmVybGFwcGluZ1Rva2Vucz86IHN0cmluZztcbiAgLyoqXG4gICAqIEhhbmRsaW5nIGxvZ2ljIGZvciBVbnN1cHBvcnRlZCBmaWxlcy4gVmFsaWQgdmFsdWVzIGFyZSBQQVNTIGFuZCBGQUlMLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnRkFJTCdcbiAgICovXG4gIHJlYWRvbmx5IHVuc3VwcG9ydGVkRmlsZUhhbmRsaW5nPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQWNjZXNzQ29ucnRvbExhbWJkYSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdW5kZXJseWluZyByZXNvdXJlIGluIHRoZSBzZXJ2ZXJsZXNzIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW50aXR5IG9mIHRoZSBzZXJ2ZXJsZXNzIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzYW1BcHBsaWNhdGlvbjogc2FtLkNmbkFwcGxpY2F0aW9uO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQWNjZXNzQ29ucnRvbExhbWJkYVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBzZW1hbnRpY1ZlcnNpb24gPSBwcm9wcy5zZW1hbnRpY1ZlcnNpb24gPz8gJzEuMC4yJztcbiAgICBjb25zdCBjb25maWRlbmNlVGhyZXNob2xkID0gcHJvcHMuY29uZmlkZW5jZVRocmVzaG9sZCA/PyAnMC41JztcbiAgICBjb25zdCBjb250YWluc1BpaUVudGl0aWVzVGhyZWFkQ291bnQgPSBwcm9wcy5jb250YWluc1BpaUVudGl0aWVzVGhyZWFkQ291bnQgPz8gJzIwJztcbiAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2VDb2RlID0gcHJvcHMuZGVmYXVsdExhbmd1YWdlQ29kZSA/PyAnZW4nO1xuICAgIGNvbnN0IGRvY3VtZW50TWF4U2l6ZSA9IHByb3BzLmRvY3VtZW50TWF4U2l6ZSA/PyAnMTAyNDAwJztcbiAgICBjb25zdCBkb2N1bWVudE1heFNpemVDb250YWluc1BpaUVudGl0aWVzID0gcHJvcHMuZG9jdW1lbnRNYXhTaXplQ29udGFpbnNQaWlFbnRpdGllcyA/PyAnNTAwMDAnO1xuICAgIGNvbnN0IGlzUGFydGlhbE9iamVjdFN1cHBvcnRlZCA9IHByb3BzLmlzUGFydGlhbE9iamVjdFN1cHBvcnRlZCA/PyAnZmFsc2UnO1xuICAgIGNvbnN0IGxvZ0xldmVsID0gcHJvcHMubG9nTGV2ZWwgPz8gJ0lORk8nO1xuICAgIGNvbnN0IG1heENoYXJzT3ZlcmxhcCA9IHByb3BzLm1heENoYXJzT3ZlcmxhcCA/PyAnMjAwJztcbiAgICBjb25zdCBwaWlFbnRpdHlUeXBlcyA9IHByb3BzLnBpaUVudGl0eVR5cGVzID8/ICdBTEwnO1xuICAgIGNvbnN0IHB1Ymxpc2hDbG91ZFdhdGNoTWV0cmljcyA9IHByb3BzLnB1Ymxpc2hDbG91ZFdhdGNoTWV0cmljcyA/PyAndHJ1ZSc7XG4gICAgY29uc3Qgc3Vic2VnbWVudE92ZXJsYXBwaW5nVG9rZW5zID0gcHJvcHMuc3Vic2VnbWVudE92ZXJsYXBwaW5nVG9rZW5zID8/ICcyMCc7XG4gICAgY29uc3QgdW5zdXBwb3J0ZWRGaWxlSGFuZGxpbmcgPSBwcm9wcy51bnN1cHBvcnRlZEZpbGVIYW5kbGluZyA/PyAnRkFJTCc7XG4gICAgdGhpcy5zYW1BcHBsaWNhdGlvbiA9IG5ldyBzYW0uQ2ZuQXBwbGljYXRpb24odGhpcywgJ0NvbXByZWhlbmRQaWlBY2Nlc3NDb250cm9sUzNPYmplY3RMYW1iZGEnLCB7XG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBhcHBsaWNhdGlvbklkOiAnYXJuOmF3czpzZXJ2ZXJsZXNzcmVwbzp1cy1lYXN0LTE6ODM5NzgyODU1MjIzOmFwcGxpY2F0aW9ucy9Db21wcmVoZW5kUGlpQWNjZXNzQ29udHJvbFMzT2JqZWN0TGFtYmRhJyxcbiAgICAgICAgc2VtYW50aWNWZXJzaW9uOiBzZW1hbnRpY1ZlcnNpb24sXG4gICAgICB9LFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBbJ0NvbmZpZGVuY2VUaHJlc2hvbGQnXTogY29uZmlkZW5jZVRocmVzaG9sZCxcbiAgICAgICAgWydDb250YWluc1BpaUVudGl0aWVzVGhyZWFkQ291bnQnXTogY29udGFpbnNQaWlFbnRpdGllc1RocmVhZENvdW50LFxuICAgICAgICBbJ0RlZmF1bHRMYW5ndWFnZUNvZGUnXTogZGVmYXVsdExhbmd1YWdlQ29kZSxcbiAgICAgICAgWydEb2N1bWVudE1heFNpemUnXTogZG9jdW1lbnRNYXhTaXplLFxuICAgICAgICBbJ0RvY3VtZW50TWF4U2l6ZUNvbnRhaW5zUGlpRW50aXRpZXMnXTogZG9jdW1lbnRNYXhTaXplQ29udGFpbnNQaWlFbnRpdGllcyxcbiAgICAgICAgWydJc1BhcnRpYWxPYmplY3RTdXBwb3J0ZWQnXTogaXNQYXJ0aWFsT2JqZWN0U3VwcG9ydGVkLFxuICAgICAgICBbJ0xvZ0xldmVsJ106IGxvZ0xldmVsLFxuICAgICAgICBbJ01heENoYXJzT3ZlcmxhcCddOiBtYXhDaGFyc092ZXJsYXAsXG4gICAgICAgIFsnUGlpRW50aXR5VHlwZXMnXTogcGlpRW50aXR5VHlwZXMsXG4gICAgICAgIFsnUHVibGlzaENsb3VkV2F0Y2hNZXRyaWNzJ106IHB1Ymxpc2hDbG91ZFdhdGNoTWV0cmljcyxcbiAgICAgICAgWydTdWJzZWdtZW50T3ZlcmxhcHBpbmdUb2tlbnMnXTogc3Vic2VnbWVudE92ZXJsYXBwaW5nVG9rZW5zLFxuICAgICAgICBbJ1Vuc3VwcG9ydGVkRmlsZUhhbmRsaW5nJ106IHVuc3VwcG9ydGVkRmlsZUhhbmRsaW5nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLnN0YWNrTmFtZSA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLnNhbUFwcGxpY2F0aW9uLnJlZik7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWRhY3Rpb25MYW1iZGFQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgc2VydmVybGVzcyBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJzEuMC4yJ1xuICAgKi9cbiAgcmVhZG9ubHkgc2VtYW50aWNWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogTG9nIGxldmVsIGZvciBMYW1iZGEgZnVuY3Rpb24gbG9nZ2luZywgZS5nLiwgRVJST1IsIElORk8sIERFQlVHLCBldGMuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdJTkZPJ1xuICAgKi9cbiAgcmVhZG9ubHkgbG9nTGV2ZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIYW5kbGluZyBsb2dpYyBmb3IgVW5zdXBwb3J0ZWQgZmlsZXMuIFZhbGlkIHZhbHVlcyBhcmUgUEFTUyBhbmQgRkFJTC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ0ZBSUwnXG4gICAqL1xuICByZWFkb25seSB1bnN1cHBvcnRlZEZpbGVIYW5kbGluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcG9ydCBwYXJ0aWFsIG9iamVjdHMgb3Igbm90LiBBY2Nlc3NpbmcgcGFydGlhbCBvYmplY3QgdGhyb3VnaCBodHRwIGhlYWRlcnMgc3VjaCBieXRlLXJhbmdlIGNhbiBjb3JydXB0IHRoZSBvYmplY3QgYW5kL29yIGFmZmVjdCBQSUkgZGV0ZWN0aW9uIGFjY3VyYWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnZmFsc2UnXG4gICAqL1xuICByZWFkb25seSBpc1BhcnRpYWxPYmplY3RTdXBwb3J0ZWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNYXhpbXVtIGRvY3VtZW50IHNpemUgKGluIGJ5dGVzKSB0byBiZSB1c2VkIGZvciBtYWtpbmcgY2FsbHMgdG8gQ29tcHJlaGVuZCdzIENvbnRhaW5zUGlpRW50aXRpZXMgQVBJLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnNTAwMDAnXG4gICAqL1xuICByZWFkb25seSBkb2N1bWVudE1heFNpemVDb250YWluc1BpaUVudGl0aWVzPzogc3RyaW5nO1xuICAvKipcbiAgICogTWF4aW11bSBkb2N1bWVudCBzaXplIChpbiBieXRlcykgdG8gYmUgdXNlZCBmb3IgbWFraW5nIGNhbGxzIHRvIENvbXByZWhlbmQncyBEZXRlY3RQaWlFbnRpdGllcyBBUEkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICc1MDAwJ1xuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRNYXhTaXplRGV0ZWN0UGlpRW50aXRpZXM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGNvbW1hIHNlcGFyYXRlZCBQSUkgZW50aXR5IHR5cGVzIHRvIGJlIGNvbnNpZGVyZWQgZm9yIHJlZGFjdGlvbi4gUmVmZXIgQ29tcHJlaGVuZCdzIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgbGlzdCBvZiBzdXBwb3J0ZWQgUElJIGVudGl0eSB0eXBlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ0FMTCdcbiAgICovXG4gIHJlYWRvbmx5IHBpaUVudGl0eVR5cGVzPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBjaGFyYWN0ZXIgdGhhdCByZXBsYWNlcyBlYWNoIGNoYXJhY3RlciBpbiB0aGUgcmVkYWN0ZWQgUElJIGVudGl0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgJyonXG4gICAqL1xuICByZWFkb25seSBtYXNrQ2hhcmFjdGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFBJSSBlbnRpdHkgaXMgcmVkYWN0ZWQgd2l0aCB0aGUgbWFzayBjaGFyYWN0ZXIgb3IgdGhlIGVudGl0eSB0eXBlLiBWYWxpZCB2YWx1ZXMgLSBSRVBMQUNFX1dJVEhfUElJX0VOVElUWV9UWVBFIGFuZCBNQVNLLlxuICAgKlxuICAgKiBAZmVmYXVsdCAnTUFTSydcbiAgICovXG4gIHJlYWRvbmx5IG1hc2tNb2RlPzogc3RyaW5nO1xuICAvKipcbiAgICogTnVtYmVyIG9mIHRva2Vucy93b3JkcyB0byBvdmVybGFwIGFtb25nIHNlZ21lbnRzIG9mIGEgZG9jdW1lbnQgaW4gY2FzZSBjaHVua2luZyBpcyBuZWVkZWQgYmVjYXVzZSBvZiBtYXhpbXVtIGRvY3VtZW50IHNpemUgbGltaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcyMCdcbiAgICovXG4gIHJlYWRvbmx5IHN1YnNlZ21lbnRPdmVybGFwcGluZ1Rva2Vucz86IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgbWF4aW11bSBkb2N1bWVudCBzaXplIChpbiBieXRlcykgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbiBwcm9jZXNzIG90aGVyd2lzZSB3aWxsIHRocm93IGV4Y2VwdGlvbiBmb3IgdG9vIGxhcmdlIGRvY3VtZW50IHNpemUuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcxMDI0MDAnXG4gICAqL1xuICByZWFkb25seSBkb2N1bWVudE1heFNpemU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBwcmVkaWN0aW9uIGNvbmZpZGVuY2Ugc2NvcmUgYWJvdmUgd2hpY2ggUElJIGNsYXNzaWZpY2F0aW9uIGFuZCBkZXRlY3Rpb24gd291bGQgYmUgY29uc2lkZXJlZCBhcyBmaW5hbCBhbnN3ZXIuIFZhbGlkIHJhbmdlICgwLjUgdG8gMS4wKS5cbiAgICpcbiAgICogQGRlZmF1bHQgJzAuNSdcbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZGVuY2VUaHJlc2hvbGQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNYXhpbXVtIGNoYXJhY3RlcnMgdG8gb3ZlcmxhcCBhbW9uZyBzZWdtZW50cyBvZiBhIGRvY3VtZW50IGluIGNhc2UgY2h1bmtpbmcgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgbWF4aW11bSBkb2N1bWVudCBzaXplIGxpbWl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnMjAwJ1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q2hhcnNPdmVybGFwPzogc3RyaW5nO1xuICAvKipcbiAgICogRGVmYXVsdCBsYW5ndWFnZSBvZiB0aGUgdGV4dCB0byBiZSBwcm9jZXNzZWQuIFRoaXMgY29kZSB3aWxsIGJlIHVzZWQgZm9yIGludGVyYWN0aW5nIHdpdGggQ29tcHJlaGVuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2VuJ1xuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlQ29kZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE51bWJlciBvZiB0aHJlYWRzIHRvIHVzZSBmb3IgY2FsbGluZyBDb21wcmVoZW5kJ3MgRGV0ZWN0UGlpRW50aXRpZXMgQVBJLiBUaGlzIGNvbnRyb2xzIHRoZSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGNhbGxzIHRoYXQgd2lsbCBiZSBtYWRlIGZyb20gdGhpcyBMYW1iZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0ICc4J1xuICAgKi9cbiAgcmVhZG9ubHkgZGV0ZWN0UGlpRW50aXRpZXNUaHJlYWRDb3VudD86IHN0cmluZztcbiAgLyoqXG4gICAqIE51bWJlciBvZiB0aHJlYWRzIHRvIHVzZSBmb3IgY2FsbGluZyBDb21wcmVoZW5kJ3MgQ29udGFpbnNQaWlFbnRpdGllcyBBUEkuIFRoaXMgY29udHJvbHMgdGhlIG51bWJlciBvZiBzaW11bHRhbmVvdXMgY2FsbHMgdGhhdCB3aWxsIGJlIG1hZGUgZnJvbSB0aGlzIExhbWJkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgJzIwJ1xuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbnNQaWlFbnRpdGllc1RocmVhZENvdW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogVHJ1ZSBpZiBwdWJsaXNoIG1ldHJpY3MgdG8gQ2xvdWR3YXRjaCwgZmFsc2Ugb3RoZXJ3aXNlLiBTZWUgUkVBRE1FLm1kIGZvciBkZXRhaWxzIG9uIENsb3VkV2F0Y2ggbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ3RydWUnXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoQ2xvdWRXYXRjaE1ldHJpY3M/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBSZWRhY3Rpb25MYW1iZGEgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcgcmVzb3VyZSBpbiB0aGUgc2VydmVybGVzcyBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVudGl0eSBvZiB0aGUgc2VydmVybGVzcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc2FtQXBwbGljYXRpb246IHNhbS5DZm5BcHBsaWNhdGlvbjtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBSZWRhY3Rpb25MYW1iZGFQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3Qgc2VtYW50aWNWZXJzaW9uID0gcHJvcHM/LnNlbWFudGljVmVyc2lvbiA/PyAnMS4wLjInO1xuICAgIGNvbnN0IGxvZ0xldmVsID0gcHJvcHM/LmxvZ0xldmVsID8/ICdJTkZPJztcbiAgICBjb25zdCB1bnN1cHBvcnRlZEZpbGVIYW5kbGluZyA9IHByb3BzPy51bnN1cHBvcnRlZEZpbGVIYW5kbGluZyA/PyAnRkFJTCc7XG4gICAgY29uc3QgaXNQYXJ0aWFsT2JqZWN0U3VwcG9ydGVkID0gcHJvcHM/LmlzUGFydGlhbE9iamVjdFN1cHBvcnRlZCA/PyAnZmFsc2UnO1xuICAgIGNvbnN0IGRvY3VtZW50TWF4U2l6ZUNvbnRhaW5zUGlpRW50aXRpZXMgPSBwcm9wcz8uZG9jdW1lbnRNYXhTaXplQ29udGFpbnNQaWlFbnRpdGllcyA/PyAnNTAwMDAnO1xuICAgIGNvbnN0IGRvY3VtZW50TWF4U2l6ZURldGVjdFBpaUVudGl0aWVzID0gcHJvcHM/LmRvY3VtZW50TWF4U2l6ZURldGVjdFBpaUVudGl0aWVzID8/ICc1MDAwJztcbiAgICBjb25zdCBwaWlFbnRpdHlUeXBlcyA9IHByb3BzPy5waWlFbnRpdHlUeXBlcyA/PyAnQUxMJztcbiAgICBjb25zdCBtYXNrQ2hhcmFjdGVyID0gcHJvcHM/Lm1hc2tDaGFyYWN0ZXIgPz8gJyonO1xuICAgIGNvbnN0IG1hc2tNb2RlID0gcHJvcHM/Lm1hc2tNb2RlID8/ICdNQVNLJztcbiAgICBjb25zdCBzdWJzZWdtZW50T3ZlcmxhcHBpbmdUb2tlbnMgPSBwcm9wcz8uc3Vic2VnbWVudE92ZXJsYXBwaW5nVG9rZW5zID8/ICcyMCc7XG4gICAgY29uc3QgZG9jdW1lbnRNYXhTaXplID0gcHJvcHM/LmRvY3VtZW50TWF4U2l6ZSA/PyAnMTAyNDAwJztcbiAgICBjb25zdCBjb25maWRlbmNlVGhyZXNob2xkID0gcHJvcHM/LmNvbmZpZGVuY2VUaHJlc2hvbGQgPz8gJzAuNSc7XG4gICAgY29uc3QgbWF4Q2hhcnNPdmVybGFwID0gcHJvcHM/Lm1heENoYXJzT3ZlcmxhcCA/PyAnMjAwJztcbiAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2VDb2RlID0gcHJvcHM/LmRlZmF1bHRMYW5ndWFnZUNvZGUgPz8gJ2VuJztcbiAgICBjb25zdCBkZXRlY3RQaWlFbnRpdGllc1RocmVhZENvdW50ID0gcHJvcHM/LmRldGVjdFBpaUVudGl0aWVzVGhyZWFkQ291bnQgPz8gJzgnO1xuICAgIGNvbnN0IGNvbnRhaW5zUGlpRW50aXRpZXNUaHJlYWRDb3VudCA9IHByb3BzPy5jb250YWluc1BpaUVudGl0aWVzVGhyZWFkQ291bnQgPz8gJzIwJztcbiAgICBjb25zdCBwdWJsaXNoQ2xvdWRXYXRjaE1ldHJpY3MgPSBwcm9wcz8ucHVibGlzaENsb3VkV2F0Y2hNZXRyaWNzID8/ICd0cnVlJztcblxuICAgIHRoaXMuc2FtQXBwbGljYXRpb24gPSBuZXcgc2FtLkNmbkFwcGxpY2F0aW9uKHRoaXMsICdDb21wcmVoZW5kUGlpQWNjZXNzQ29udHJvbFMzT2JqZWN0TGFtYmRhJywge1xuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgYXBwbGljYXRpb25JZDogJ2Fybjphd3M6c2VydmVybGVzc3JlcG86dXMtZWFzdC0xOjgzOTc4Mjg1NTIyMzphcHBsaWNhdGlvbnMvQ29tcHJlaGVuZFBpaVJlZGFjdGlvblMzT2JqZWN0TGFtYmRhJyxcbiAgICAgICAgc2VtYW50aWNWZXJzaW9uOiBzZW1hbnRpY1ZlcnNpb24sXG4gICAgICB9LFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBbJ0xvZ0xldmVsJ106IGxvZ0xldmVsLFxuICAgICAgICBbJ1Vuc3VwcG9ydGVkRmlsZUhhbmRsaW5nJ106IHVuc3VwcG9ydGVkRmlsZUhhbmRsaW5nLFxuICAgICAgICBbJ0lzUGFydGlhbE9iamVjdFN1cHBvcnRlZCddOiBpc1BhcnRpYWxPYmplY3RTdXBwb3J0ZWQsXG4gICAgICAgIFsnRG9jdW1lbnRNYXhTaXplQ29udGFpbnNQaWlFbnRpdGllcyddOiBkb2N1bWVudE1heFNpemVDb250YWluc1BpaUVudGl0aWVzLFxuICAgICAgICBbJ0RvY3VtZW50TWF4U2l6ZURldGVjdFBpaUVudGl0aWVzJ106IGRvY3VtZW50TWF4U2l6ZURldGVjdFBpaUVudGl0aWVzLFxuICAgICAgICBbJ1BpaUVudGl0eVR5cGVzJ106IHBpaUVudGl0eVR5cGVzLFxuICAgICAgICBbJ01hc2tDaGFyYWN0ZXInXTogbWFza0NoYXJhY3RlcixcbiAgICAgICAgWydNYXNrTW9kZSddOiBtYXNrTW9kZSxcbiAgICAgICAgWydTdWJzZWdtZW50T3ZlcmxhcHBpbmdUb2tlbnMnXTogc3Vic2VnbWVudE92ZXJsYXBwaW5nVG9rZW5zLFxuICAgICAgICBbJ0RvY3VtZW50TWF4U2l6ZSddOiBkb2N1bWVudE1heFNpemUsXG4gICAgICAgIFsnQ29uZmlkZW5jZVRocmVzaG9sZCddOiBjb25maWRlbmNlVGhyZXNob2xkLFxuICAgICAgICBbJ01heENoYXJzT3ZlcmxhcCddOiBtYXhDaGFyc092ZXJsYXAsXG4gICAgICAgIFsnRGVmYXVsdExhbmd1YWdlQ29kZSddOiBkZWZhdWx0TGFuZ3VhZ2VDb2RlLFxuICAgICAgICBbJ0RldGVjdFBpaUVudGl0aWVzVGhyZWFkQ291bnQnXTogZGV0ZWN0UGlpRW50aXRpZXNUaHJlYWRDb3VudCxcbiAgICAgICAgWydDb250YWluc1BpaUVudGl0aWVzVGhyZWFkQ291bnQnXTogY29udGFpbnNQaWlFbnRpdGllc1RocmVhZENvdW50LFxuICAgICAgICBbJ1B1Ymxpc2hDbG91ZFdhdGNoTWV0cmljcyddOiBwdWJsaXNoQ2xvdWRXYXRjaE1ldHJpY3MsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuc3RhY2tOYW1lID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuc2FtQXBwbGljYXRpb24ucmVmKTtcbiAgfVxufSJdfQ==
package/lib/iam-roles.js CHANGED
@@ -95,7 +95,7 @@ class GeneralRole extends constructs_1.Construct {
95
95
  }
96
96
  exports.GeneralRole = GeneralRole;
97
97
  _a = JSII_RTTI_SYMBOL_1;
98
- GeneralRole[_a] = { fqn: "cdk-comprehend-s3olap.GeneralRole", version: "2.0.401" };
98
+ GeneralRole[_a] = { fqn: "cdk-comprehend-s3olap.GeneralRole", version: "2.0.403" };
99
99
  class AdminRole extends constructs_1.Construct {
100
100
  constructor(scope, id, props) {
101
101
  super(scope, id);
@@ -180,7 +180,7 @@ class AdminRole extends constructs_1.Construct {
180
180
  }
181
181
  exports.AdminRole = AdminRole;
182
182
  _b = JSII_RTTI_SYMBOL_1;
183
- AdminRole[_b] = { fqn: "cdk-comprehend-s3olap.AdminRole", version: "2.0.401" };
183
+ AdminRole[_b] = { fqn: "cdk-comprehend-s3olap.AdminRole", version: "2.0.403" };
184
184
  class BillingRole extends constructs_1.Construct {
185
185
  constructor(scope, id, props) {
186
186
  super(scope, id);
@@ -265,7 +265,7 @@ class BillingRole extends constructs_1.Construct {
265
265
  }
266
266
  exports.BillingRole = BillingRole;
267
267
  _c = JSII_RTTI_SYMBOL_1;
268
- BillingRole[_c] = { fqn: "cdk-comprehend-s3olap.BillingRole", version: "2.0.401" };
268
+ BillingRole[_c] = { fqn: "cdk-comprehend-s3olap.BillingRole", version: "2.0.403" };
269
269
  class CustSupportRole extends constructs_1.Construct {
270
270
  constructor(scope, id, props) {
271
271
  super(scope, id);
@@ -350,5 +350,5 @@ class CustSupportRole extends constructs_1.Construct {
350
350
  }
351
351
  exports.CustSupportRole = CustSupportRole;
352
352
  _d = JSII_RTTI_SYMBOL_1;
353
- CustSupportRole[_d] = { fqn: "cdk-comprehend-s3olap.CustSupportRole", version: "2.0.401" };
353
+ CustSupportRole[_d] = { fqn: "cdk-comprehend-s3olap.CustSupportRole", version: "2.0.403" };
354
354
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLXJvbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2lhbS1yb2xlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFtQztBQUNuQywyQ0FBMkM7QUFDM0MsMkNBQXVDO0FBdUJ2Qzs7OztHQUlHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFnQnhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLDRCQUE0QixDQUFDO1FBQ3BFLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxDQUFDLDJCQUEyQixJQUFJLDZDQUE2QyxDQUFDO1FBQ3ZILE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksYUFBYSxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ2hELFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtZQUN6QyxjQUFjLEVBQUU7Z0JBQ2QsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixVQUFVLEVBQUU7d0JBQ1YsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDOzRCQUN0QixHQUFHLEVBQUUscUJBQXFCOzRCQUMxQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLOzRCQUN4QixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7NEJBQzFCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQzt5QkFDakIsQ0FBQzt3QkFDRixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLEdBQUcsRUFBRSxvQ0FBb0M7NEJB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OzZCQUNGO3lCQUNGLENBQUM7cUJBQ0g7aUJBQ0YsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7SUFDdkMsQ0FBQzs7QUE1RkgsMENBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYWxSb2xlUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIElBTSBwb2xpY3kgZm9yIHRoZSBJQU0gcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2dlbmVyYWwtcm9sZS1zM29sYXAtcG9saWN5J1xuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIG9iamVjdCBMYW1iZGEgYWNjZXNzIHBvaW50LCB3aGljaCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBTMyBhY2NlZXNzIHBvaW50IGZvciB0aGUgUzMgYnVja2V0IGluIHRoZSBkZW1vc3RyYXRpb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnYWNjZXNzY3RsLXMzb2xhcC1zdXJ2ZXktcmVzdWx0cy11bmtub3duLXBpaSdcbiAgICAgKi9cbiAgcmVhZG9ubHkgb2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnR2VuZXJhbFJvbGUnXG4gICAgICovXG4gIHJlYWRvbmx5IGlhbVJvbGVOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSByb2xlIHRoYXQgeW91IGFyZSBnb2luZyB0byBhc3N1bWUgKHN3aXRjaCByb2xlKVxuICpcbiAqIEV4cGxvcmVzIGhvdyB0aGUgUzMgT2JqZWN0IExhbWJkYSB3b3Jrcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdlbmVyYWxSb2xlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAgICogVGhlIEFSTiBvZiB0aGUgSUFNIHJvbGUuXG4gICAgICpcbiAgICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIElBTSByb2xlLlxuICAgICAqXG4gICAgICovXG4gIHB1YmxpYyByZWFkb25seSByb2xlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICAgKiBUaGUgdW5pcXVlIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcm9sZS5cbiAgICAgKlxuICAgICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZUlkOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBHZW5lcmFsUm9sZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBwb2xpY3lOYW1lID0gcHJvcHMucG9saWN5TmFtZSA/PyAnZ2VuZXJhbC1yb2xlLXMzb2xhcC1wb2xpY3knO1xuICAgIGNvbnN0IG9iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZSA9IHByb3BzLm9iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZSA/PyAnYWNjZXNzY3RsLXMzb2xhcC1zdXJ2ZXktcmVzdWx0cy11bmtub3duLXBpaSc7XG4gICAgY29uc3QgaWFtUm9sZU5hbWUgPSBwcm9wcy5pYW1Sb2xlTmFtZSA/PyAnR2VuZXJhbFJvbGUnO1xuICAgIGNvbnN0IGdlbmVyYWxSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdJYW1Sb2xlJywge1xuICAgICAgcm9sZU5hbWU6IGlhbVJvbGVOYW1lLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFjY291bnRSb290UHJpbmNpcGFsKCksXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBbcG9saWN5TmFtZV06IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIGFzc2lnblNpZHM6IHRydWUsXG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0xpc3RpbmdPYmplY3RzJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ3MzOkxpc3RCdWNrZXQnXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0xpc3RpbmdCdWNrZXRzQW5kQWNjZXNzUG9pbnRzJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3MzOkdldEFjY2Vzc1BvaW50Rm9yT2JqZWN0TGFtYmRhJyxcbiAgICAgICAgICAgICAgICAnczM6R2V0QWNjZXNzUG9pbnRDb25maWd1cmF0aW9uRm9yT2JqZWN0TGFtYmRhJyxcbiAgICAgICAgICAgICAgICAnczM6TGlzdEFjY2Vzc1BvaW50c0Zvck9iamVjdExhbWJkYScsXG4gICAgICAgICAgICAgICAgJ3MzOkxpc3RBbGxNeUJ1Y2tldHMnLFxuICAgICAgICAgICAgICAgICdzMzpMaXN0QWNjZXNzUG9pbnRzJyxcbiAgICAgICAgICAgICAgICAnczM6R2V0QWNjZXNzUG9pbnQnLFxuICAgICAgICAgICAgICAgICdzMzpHZXRBY2NvdW50UHVibGljQWNjZXNzQmxvY2snLFxuICAgICAgICAgICAgICAgICdzMzpHZXRCdWNrZXRQdWJsaWNBY2Nlc3NCbG9jaycsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEJ1Y2tldFBvbGljeVN0YXR1cycsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEJ1Y2tldEFjbCcsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEFjY2Vzc1BvaW50UG9saWN5U3RhdHVzJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd09iamVjdExhbWJkYUFjY2VzcycsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdzMy1vYmplY3QtbGFtYmRhOkdldConLFxuICAgICAgICAgICAgICAgICdzMy1vYmplY3QtbGFtYmRhOkxpc3QqJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjoke2Nkay5Bd3MuUEFSVElUSU9OfTpzMy1vYmplY3QtbGFtYmRhOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTphY2Nlc3Nwb2ludC8ke29iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZX1gXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd1N0YW5kYXJkQWNjZXNzUG9pbnRBY2Nlc3MnLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnczM6R2V0KicsXG4gICAgICAgICAgICAgICAgJ3MzOkxpc3QqJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgICAgICAgIFsnRm9yQW55VmFsdWU6U3RyaW5nRXF1YWxzJ106IHtcbiAgICAgICAgICAgICAgICAgICdhd3M6Q2FsbGVkVmlhJzogWydzMy1vYmplY3QtbGFtYmRhLmFtYXpvbmF3cy5jb20nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0FsbG93TGFtYmRhSW52b2NhdGlvbicsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgWydGb3JBbnlWYWx1ZTpTdHJpbmdFcXVhbHMnXToge1xuICAgICAgICAgICAgICAgICAgJ2F3czpDYWxsZWRWaWEnOiBbJ3MzLW9iamVjdC1sYW1iZGEuYW1hem9uYXdzLmNvbSddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5yb2xlQXJuID0gZ2VuZXJhbFJvbGUucm9sZUFybjtcbiAgICB0aGlzLnJvbGVOYW1lID0gZ2VuZXJhbFJvbGUucm9sZU5hbWU7XG4gICAgdGhpcy5yb2xlSWQgPSBnZW5lcmFsUm9sZS5yb2xlSWQ7XG4gIH1cbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIEFkbWluUm9sZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBJQU0gcG9saWN5IGZvciB0aGUgSUFNIHJvbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhZG1pbi1yb2xlLXMzb2xhcC1wb2xpY3knXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9iamVjdCBMYW1iZGEgYWNjZXNzIHBvaW50LCB3aGljaCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBTMyBhY2NlZXNzIHBvaW50IGZvciB0aGUgUzMgYnVja2V0IGluIHRoZSBkZW1vc3RyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhZG1pbi1zM29sYXAtY2FsbC10cmFuc2NyaXB0cy1rbm93bi1waWknXG4gICAqL1xuICByZWFkb25seSBvYmplY3RMYW1iZGFBY2Nlc3NQb2ludE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdSZWRhY3Rpb25BZG1pblJvbGUnXG4gICAqL1xuICByZWFkb25seSBpYW1Sb2xlTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEFkbWluUm9sZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBJQU0gcm9sZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb2xlQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByb2xlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGVJZDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEFkbWluUm9sZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBwb2xpY3lOYW1lID0gcHJvcHM/LnBvbGljeU5hbWUgPz8gJ2FkbWluLXJvbGUtczNvbGFwLXBvbGljeSc7XG4gICAgY29uc3Qgb2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lID0gcHJvcHM/Lm9iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZSA/PyAnYWRtaW4tczNvbGFwLWNhbGwtdHJhbnNjcmlwdHMta25vd24tcGlpJztcbiAgICBjb25zdCBpYW1Sb2xlTmFtZSA9IHByb3BzPy5pYW1Sb2xlTmFtZSA/PyAnUmVkYWN0aW9uQWRtaW5Sb2xlJztcbiAgICBjb25zdCBhZG1pblJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ1JlZGFjdGlvbkFkbWluUm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiBpYW1Sb2xlTmFtZSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5BY2NvdW50Um9vdFByaW5jaXBhbCgpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW3BvbGljeU5hbWVdOiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBhc3NpZ25TaWRzOiB0cnVlLFxuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgc2lkOiAnQWxsb3dMaXN0aW5nT2JqZWN0cycsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydzMzpMaXN0QnVja2V0J10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgc2lkOiAnQWxsb3dMaXN0aW5nQnVja2V0c0FuZEFjY2Vzc1BvaW50cycsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdzMzpHZXRBY2Nlc3NQb2ludEZvck9iamVjdExhbWJkYScsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEFjY2Vzc1BvaW50Q29uZmlndXJhdGlvbkZvck9iamVjdExhbWJkYScsXG4gICAgICAgICAgICAgICAgJ3MzOkxpc3RBY2Nlc3NQb2ludHNGb3JPYmplY3RMYW1iZGEnLFxuICAgICAgICAgICAgICAgICdzMzpMaXN0QWxsTXlCdWNrZXRzJyxcbiAgICAgICAgICAgICAgICAnczM6TGlzdEFjY2Vzc1BvaW50cycsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEFjY2Vzc1BvaW50JyxcbiAgICAgICAgICAgICAgICAnczM6R2V0QWNjb3VudFB1YmxpY0FjY2Vzc0Jsb2NrJyxcbiAgICAgICAgICAgICAgICAnczM6R2V0QnVja2V0UHVibGljQWNjZXNzQmxvY2snLFxuICAgICAgICAgICAgICAgICdzMzpHZXRCdWNrZXRQb2xpY3lTdGF0dXMnLFxuICAgICAgICAgICAgICAgICdzMzpHZXRCdWNrZXRBY2wnLFxuICAgICAgICAgICAgICAgICdzMzpHZXRBY2Nlc3NQb2ludFBvbGljeVN0YXR1cycsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgc2lkOiAnQWxsb3dPYmplY3RMYW1iZGFBY2Nlc3MnLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnczMtb2JqZWN0LWxhbWJkYTpHZXQqJyxcbiAgICAgICAgICAgICAgICAnczMtb2JqZWN0LWxhbWJkYTpMaXN0KicsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06czMtb2JqZWN0LWxhbWJkYToke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06YWNjZXNzcG9pbnQvJHtvYmplY3RMYW1iZGFBY2Nlc3NQb2ludE5hbWV9YF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgc2lkOiAnQWxsb3dTdGFuZGFyZEFjY2Vzc1BvaW50QWNjZXNzJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3MzOkdldConLFxuICAgICAgICAgICAgICAgICdzMzpMaXN0KicsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBbJ0ZvckFueVZhbHVlOlN0cmluZ0VxdWFscyddOiB7XG4gICAgICAgICAgICAgICAgICAnYXdzOkNhbGxlZFZpYSc6IFsnczMtb2JqZWN0LWxhbWJkYS5hbWF6b25hd3MuY29tJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0xhbWJkYUludm9jYXRpb24nLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnbGFtYmRhOkludm9rZUZ1bmN0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgICAgICAgIFsnRm9yQW55VmFsdWU6U3RyaW5nRXF1YWxzJ106IHtcbiAgICAgICAgICAgICAgICAgICdhd3M6Q2FsbGVkVmlhJzogWydzMy1vYmplY3QtbGFtYmRhLmFtYXpvbmF3cy5jb20nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMucm9sZUFybiA9IGFkbWluUm9sZS5yb2xlQXJuO1xuICAgIHRoaXMucm9sZU5hbWUgPSBhZG1pblJvbGUucm9sZU5hbWU7XG4gICAgdGhpcy5yb2xlSWQgPSBhZG1pblJvbGUucm9sZUlkO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ1JvbGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgSUFNIHBvbGljeSBmb3IgdGhlIElBTSByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYmlsbGluZy1yb2xlLXMzb2xhcC1wb2xpY3knXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9iamVjdCBMYW1iZGEgYWNjZXNzIHBvaW50LCB3aGljaCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBTMyBhY2NlZXNzIHBvaW50IGZvciB0aGUgUzMgYnVja2V0IGluIHRoZSBkZW1vc3RyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdiaWxsaW5nLXMzb2xhcC1jYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaSdcbiAgICovXG4gIHJlYWRvbmx5IG9iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBJQU0gcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1JlZGFjdGlvbkJpbGxpbmdSb2xlJ1xuICAgKi9cbiAgcmVhZG9ubHkgaWFtUm9sZU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBCaWxsaW5nUm9sZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBJQU0gcm9sZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb2xlQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByb2xlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGVJZDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEFkbWluUm9sZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBwb2xpY3lOYW1lID0gcHJvcHM/LnBvbGljeU5hbWUgPz8gJ2JpbGxpbmctcm9sZS1zM29sYXAtcG9saWN5JztcbiAgICBjb25zdCBvYmplY3RMYW1iZGFBY2Nlc3NQb2ludE5hbWUgPSBwcm9wcz8ub2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lID8/ICdiaWxsaW5nLXMzb2xhcC1jYWxsLXRyYW5zY3JpcHRzLWtub3duLXBpaSc7XG4gICAgY29uc3QgaWFtUm9sZU5hbWUgPSBwcm9wcz8uaWFtUm9sZU5hbWUgPz8gJ1JlZGFjdGlvbkJpbGxpbmdSb2xlJztcbiAgICBjb25zdCBiaWxsaW5nUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnUmVkYWN0aW9uQmlsbGluZ1JvbGUnLCB7XG4gICAgICByb2xlTmFtZTogaWFtUm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQWNjb3VudFJvb3RQcmluY2lwYWwoKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFtwb2xpY3lOYW1lXTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgYXNzaWduU2lkczogdHJ1ZSxcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0FsbG93TGlzdGluZ09iamVjdHMnLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFsnczM6TGlzdEJ1Y2tldCddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0FsbG93TGlzdGluZ0J1Y2tldHNBbmRBY2Nlc3NQb2ludHMnLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnczM6R2V0QWNjZXNzUG9pbnRGb3JPYmplY3RMYW1iZGEnLFxuICAgICAgICAgICAgICAgICdzMzpHZXRBY2Nlc3NQb2ludENvbmZpZ3VyYXRpb25Gb3JPYmplY3RMYW1iZGEnLFxuICAgICAgICAgICAgICAgICdzMzpMaXN0QWNjZXNzUG9pbnRzRm9yT2JqZWN0TGFtYmRhJyxcbiAgICAgICAgICAgICAgICAnczM6TGlzdEFsbE15QnVja2V0cycsXG4gICAgICAgICAgICAgICAgJ3MzOkxpc3RBY2Nlc3NQb2ludHMnLFxuICAgICAgICAgICAgICAgICdzMzpHZXRBY2Nlc3NQb2ludCcsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEFjY291bnRQdWJsaWNBY2Nlc3NCbG9jaycsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEJ1Y2tldFB1YmxpY0FjY2Vzc0Jsb2NrJyxcbiAgICAgICAgICAgICAgICAnczM6R2V0QnVja2V0UG9saWN5U3RhdHVzJyxcbiAgICAgICAgICAgICAgICAnczM6R2V0QnVja2V0QWNsJyxcbiAgICAgICAgICAgICAgICAnczM6R2V0QWNjZXNzUG9pbnRQb2xpY3lTdGF0dXMnLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0FsbG93T2JqZWN0TGFtYmRhQWNjZXNzJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3MzLW9iamVjdC1sYW1iZGE6R2V0KicsXG4gICAgICAgICAgICAgICAgJ3MzLW9iamVjdC1sYW1iZGE6TGlzdConLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOiR7Y2RrLkF3cy5QQVJUSVRJT059OnMzLW9iamVjdC1sYW1iZGE6JHtjZGsuQXdzLlJFR0lPTn06JHtjZGsuQXdzLkFDQ09VTlRfSUR9OmFjY2Vzc3BvaW50LyR7b2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lfWBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0FsbG93U3RhbmRhcmRBY2Nlc3NQb2ludEFjY2VzcycsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdzMzpHZXQqJyxcbiAgICAgICAgICAgICAgICAnczM6TGlzdConLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgWydGb3JBbnlWYWx1ZTpTdHJpbmdFcXVhbHMnXToge1xuICAgICAgICAgICAgICAgICAgJ2F3czpDYWxsZWRWaWEnOiBbJ3MzLW9iamVjdC1sYW1iZGEuYW1hem9uYXdzLmNvbSddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgc2lkOiAnQWxsb3dMYW1iZGFJbnZvY2F0aW9uJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ2xhbWJkYTpJbnZva2VGdW5jdGlvbicsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBbJ0ZvckFueVZhbHVlOlN0cmluZ0VxdWFscyddOiB7XG4gICAgICAgICAgICAgICAgICAnYXdzOkNhbGxlZFZpYSc6IFsnczMtb2JqZWN0LWxhbWJkYS5hbWF6b25hd3MuY29tJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLnJvbGVBcm4gPSBiaWxsaW5nUm9sZS5yb2xlQXJuO1xuICAgIHRoaXMucm9sZU5hbWUgPSBiaWxsaW5nUm9sZS5yb2xlTmFtZTtcbiAgICB0aGlzLnJvbGVJZCA9IGJpbGxpbmdSb2xlLnJvbGVJZDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RTdXBwb3J0Um9sZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBJQU0gcG9saWN5IGZvciB0aGUgSUFNIHJvbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjdXN0b21lcnN1cHBvcnQtcm9sZS1zM29sYXAtcG9saWN5J1xuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgTGFtYmRhIGFjY2VzcyBwb2ludCwgd2hpY2ggd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgUzMgYWNjZWVzcyBwb2ludCBmb3IgdGhlIFMzIGJ1Y2tldCBpbiB0aGUgZGVtb3N0cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnY3VzdHN1cHBvcnQtczNvbGFwLWNhbGwtdHJhbnNjcmlwdHMta25vd24tcGlpJ1xuICAgKi9cbiAgcmVhZG9ubHkgb2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIElBTSByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnUmVkYWN0aW9uQ3VzdFN1cHBvcnRSb2xlJ1xuICAgKi9cbiAgcmVhZG9ubHkgaWFtUm9sZU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDdXN0U3VwcG9ydFJvbGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgSUFNIHJvbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZUFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIElBTSByb2xlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcm9sZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb2xlSWQ6IHN0cmluZztcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBBZG1pblJvbGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgcG9saWN5TmFtZSA9IHByb3BzPy5wb2xpY3lOYW1lID8/ICdjdXN0b21lcnN1cHBvcnQtcm9sZS1zM29sYXAtcG9saWN5JztcbiAgICBjb25zdCBvYmplY3RMYW1iZGFBY2Nlc3NQb2ludE5hbWUgPSBwcm9wcz8ub2JqZWN0TGFtYmRhQWNjZXNzUG9pbnROYW1lID8/ICdjdXN0c3VwcG9ydC1zM29sYXAtY2FsbC10cmFuc2NyaXB0cy1rbm93bi1waWknO1xuICAgIGNvbnN0IGlhbVJvbGVOYW1lID0gcHJvcHM/LmlhbVJvbGVOYW1lID8/ICdSZWRhY3Rpb25DdXN0U3VwcG9ydFJvbGUnO1xuICAgIGNvbnN0IGN1c3RTdXBwb3J0Um9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnUmVkYWN0aW9uQ3VzdFN1cHBvcnRSb2xlJywge1xuICAgICAgcm9sZU5hbWU6IGlhbVJvbGVOYW1lLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFjY291bnRSb290UHJpbmNpcGFsKCksXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBbcG9saWN5TmFtZV06IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIGFzc2lnblNpZHM6IHRydWUsXG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0xpc3RpbmdPYmplY3RzJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ3MzOkxpc3RCdWNrZXQnXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0xpc3RpbmdCdWNrZXRzQW5kQWNjZXNzUG9pbnRzJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3MzOkdldEFjY2Vzc1BvaW50Rm9yT2JqZWN0TGFtYmRhJyxcbiAgICAgICAgICAgICAgICAnczM6R2V0QWNjZXNzUG9pbnRDb25maWd1cmF0aW9uRm9yT2JqZWN0TGFtYmRhJyxcbiAgICAgICAgICAgICAgICAnczM6TGlzdEFjY2Vzc1BvaW50c0Zvck9iamVjdExhbWJkYScsXG4gICAgICAgICAgICAgICAgJ3MzOkxpc3RBbGxNeUJ1Y2tldHMnLFxuICAgICAgICAgICAgICAgICdzMzpMaXN0QWNjZXNzUG9pbnRzJyxcbiAgICAgICAgICAgICAgICAnczM6R2V0QWNjZXNzUG9pbnQnLFxuICAgICAgICAgICAgICAgICdzMzpHZXRBY2NvdW50UHVibGljQWNjZXNzQmxvY2snLFxuICAgICAgICAgICAgICAgICdzMzpHZXRCdWNrZXRQdWJsaWNBY2Nlc3NCbG9jaycsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEJ1Y2tldFBvbGljeVN0YXR1cycsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEJ1Y2tldEFjbCcsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEFjY2Vzc1BvaW50UG9saWN5U3RhdHVzJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd09iamVjdExhbWJkYUFjY2VzcycsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdzMy1vYmplY3QtbGFtYmRhOkdldConLFxuICAgICAgICAgICAgICAgICdzMy1vYmplY3QtbGFtYmRhOkxpc3QqJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjoke2Nkay5Bd3MuUEFSVElUSU9OfTpzMy1vYmplY3QtbGFtYmRhOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTphY2Nlc3Nwb2ludC8ke29iamVjdExhbWJkYUFjY2Vzc1BvaW50TmFtZX1gXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd1N0YW5kYXJkQWNjZXNzUG9pbnRBY2Nlc3MnLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnczM6R2V0KicsXG4gICAgICAgICAgICAgICAgJ3MzOkxpc3QqJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgICAgICAgIFsnRm9yQW55VmFsdWU6U3RyaW5nRXF1YWxzJ106IHtcbiAgICAgICAgICAgICAgICAgICdhd3M6Q2FsbGVkVmlhJzogWydzMy1vYmplY3QtbGFtYmRhLmFtYXpvbmF3cy5jb20nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0FsbG93TGFtYmRhSW52b2NhdGlvbicsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgWydGb3JBbnlWYWx1ZTpTdHJpbmdFcXVhbHMnXToge1xuICAgICAgICAgICAgICAgICAgJ2F3czpDYWxsZWRWaWEnOiBbJ3MzLW9iamVjdC1sYW1iZGEuYW1hem9uYXdzLmNvbSddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5yb2xlQXJuID0gY3VzdFN1cHBvcnRSb2xlLnJvbGVBcm47XG4gICAgdGhpcy5yb2xlTmFtZSA9IGN1c3RTdXBwb3J0Um9sZS5yb2xlTmFtZTtcbiAgICB0aGlzLnJvbGVJZCA9IGN1c3RTdXBwb3J0Um9sZS5yb2xlSWQ7XG4gIH1cbn0iXX0=
@@ -69,7 +69,7 @@ require('aws-sdk/lib/maintenance_mode_message').suppress = true;
69
69
  To use the SDK in the browser, simply add the following script tag to your
70
70
  HTML pages:
71
71
 
72
- <script src="https://sdk.amazonaws.com/js/aws-sdk-2.1545.0.min.js"></script>
72
+ <script src="https://sdk.amazonaws.com/js/aws-sdk-2.1546.0.min.js"></script>
73
73
 
74
74
  You can also build a custom browser SDK with your specified set of AWS services.
75
75
  This can allow you to reduce the SDK's size, specify different API versions of
@@ -2083,6 +2083,9 @@
2083
2083
  "SpotMaxPricePercentageOverLowestPrice": {
2084
2084
  "type": "integer"
2085
2085
  },
2086
+ "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": {
2087
+ "type": "integer"
2088
+ },
2086
2089
  "OnDemandMaxPricePercentageOverLowestPrice": {
2087
2090
  "type": "integer"
2088
2091
  },
@@ -27750,6 +27750,9 @@
27750
27750
  "AllowedInstanceTypes": {
27751
27751
  "shape": "Sdl",
27752
27752
  "locationName": "AllowedInstanceType"
27753
+ },
27754
+ "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": {
27755
+ "type": "integer"
27753
27756
  }
27754
27757
  }
27755
27758
  },
@@ -28069,6 +28072,10 @@
28069
28072
  "AllowedInstanceTypes": {
28070
28073
  "shape": "Sdl",
28071
28074
  "locationName": "allowedInstanceTypeSet"
28075
+ },
28076
+ "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": {
28077
+ "locationName": "maxSpotPriceAsPercentageOfOptimalOnDemandPrice",
28078
+ "type": "integer"
28072
28079
  }
28073
28080
  }
28074
28081
  },
@@ -192,11 +192,11 @@ declare class AutoScaling extends Service {
192
192
  */
193
193
  describeAutoScalingNotificationTypes(callback?: (err: AWSError, data: AutoScaling.Types.DescribeAutoScalingNotificationTypesAnswer) => void): Request<AutoScaling.Types.DescribeAutoScalingNotificationTypesAnswer, AWSError>;
194
194
  /**
195
- * Gets information about the instance refreshes for the specified Auto Scaling group. This operation is part of the instance refresh feature in Amazon EC2 Auto Scaling, which helps you update instances in your Auto Scaling group after you make configuration changes. To help you determine the status of an instance refresh, Amazon EC2 Auto Scaling returns information about the instance refreshes you previously initiated, including their status, start time, end time, the percentage of the instance refresh that is complete, and the number of instances remaining to update before the instance refresh is complete. If a rollback is initiated while an instance refresh is in progress, Amazon EC2 Auto Scaling also returns information about the rollback of the instance refresh.
195
+ * Gets information about the instance refreshes for the specified Auto Scaling group from the previous six weeks. This operation is part of the instance refresh feature in Amazon EC2 Auto Scaling, which helps you update instances in your Auto Scaling group after you make configuration changes. To help you determine the status of an instance refresh, Amazon EC2 Auto Scaling returns information about the instance refreshes you previously initiated, including their status, start time, end time, the percentage of the instance refresh that is complete, and the number of instances remaining to update before the instance refresh is complete. If a rollback is initiated while an instance refresh is in progress, Amazon EC2 Auto Scaling also returns information about the rollback of the instance refresh.
196
196
  */
197
197
  describeInstanceRefreshes(params: AutoScaling.Types.DescribeInstanceRefreshesType, callback?: (err: AWSError, data: AutoScaling.Types.DescribeInstanceRefreshesAnswer) => void): Request<AutoScaling.Types.DescribeInstanceRefreshesAnswer, AWSError>;
198
198
  /**
199
- * Gets information about the instance refreshes for the specified Auto Scaling group. This operation is part of the instance refresh feature in Amazon EC2 Auto Scaling, which helps you update instances in your Auto Scaling group after you make configuration changes. To help you determine the status of an instance refresh, Amazon EC2 Auto Scaling returns information about the instance refreshes you previously initiated, including their status, start time, end time, the percentage of the instance refresh that is complete, and the number of instances remaining to update before the instance refresh is complete. If a rollback is initiated while an instance refresh is in progress, Amazon EC2 Auto Scaling also returns information about the rollback of the instance refresh.
199
+ * Gets information about the instance refreshes for the specified Auto Scaling group from the previous six weeks. This operation is part of the instance refresh feature in Amazon EC2 Auto Scaling, which helps you update instances in your Auto Scaling group after you make configuration changes. To help you determine the status of an instance refresh, Amazon EC2 Auto Scaling returns information about the instance refreshes you previously initiated, including their status, start time, end time, the percentage of the instance refresh that is complete, and the number of instances remaining to update before the instance refresh is complete. If a rollback is initiated while an instance refresh is in progress, Amazon EC2 Auto Scaling also returns information about the rollback of the instance refresh.
200
200
  */
201
201
  describeInstanceRefreshes(callback?: (err: AWSError, data: AutoScaling.Types.DescribeInstanceRefreshesAnswer) => void): Request<AutoScaling.Types.DescribeInstanceRefreshesAnswer, AWSError>;
202
202
  /**
@@ -1949,11 +1949,11 @@ declare namespace AutoScaling {
1949
1949
  export type InstanceIds = XmlStringMaxLen19[];
1950
1950
  export interface InstanceMaintenancePolicy {
1951
1951
  /**
1952
- * Specifies the lower threshold as a percentage of the desired capacity of the Auto Scaling group. It represents the minimum percentage of the group to keep in service, healthy, and ready to use to support your workload when replacing instances. Value range is 0 to 100. After it's set, a value of -1 will clear the previously set value.
1952
+ * Specifies the lower threshold as a percentage of the desired capacity of the Auto Scaling group. It represents the minimum percentage of the group to keep in service, healthy, and ready to use to support your workload when replacing instances. Value range is 0 to 100. To clear a previously set value, specify a value of -1.
1953
1953
  */
1954
1954
  MinHealthyPercentage?: IntPercentResettable;
1955
1955
  /**
1956
- * Specifies the upper threshold as a percentage of the desired capacity of the Auto Scaling group. It represents the maximum percentage of the group that can be in service and healthy, or pending, to support your workload when replacing instances. Value range is 100 to 200. After it's set, a value of -1 will clear the previously set value. Both MinHealthyPercentage and MaxHealthyPercentage must be specified, and the difference between them cannot be greater than 100. A large range increases the number of instances that can be replaced at the same time.
1956
+ * Specifies the upper threshold as a percentage of the desired capacity of the Auto Scaling group. It represents the maximum percentage of the group that can be in service and healthy, or pending, to support your workload when replacing instances. Value range is 100 to 200. To clear a previously set value, specify a value of -1. Both MinHealthyPercentage and MaxHealthyPercentage must be specified, and the difference between them cannot be greater than 100. A large range increases the number of instances that can be replaced at the same time.
1957
1957
  */
1958
1958
  MaxHealthyPercentage?: IntPercent100To200Resettable;
1959
1959
  }
@@ -2090,11 +2090,15 @@ declare namespace AutoScaling {
2090
2090
  */
2091
2091
  InstanceGenerations?: InstanceGenerations;
2092
2092
  /**
2093
- * The price protection threshold for Spot Instances. This is the maximum you’ll pay for a Spot Instance, expressed as a percentage higher than the least expensive current generation M, C, or R instance type with your specified attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price is higher than your threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage. To turn off price protection, specify a high value, such as 999999. If you set DesiredCapacityType to vcpu or memory-mib, the price protection threshold is applied based on the per vCPU or per memory price instead of the per instance price. Default: 100
2093
+ * [Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price. The identified Spot price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage. To turn off price protection, specify a high value, such as 999999. If you set DesiredCapacityType to vcpu or memory-mib, the price protection threshold is based on the per-vCPU or per-memory price instead of the per instance price. Only one of SpotMaxPricePercentageOverLowestPrice or MaxSpotPriceAsPercentageOfOptimalOnDemandPrice can be specified. Default: 100
2094
2094
  */
2095
2095
  SpotMaxPricePercentageOverLowestPrice?: NullablePositiveInteger;
2096
2096
  /**
2097
- * The price protection threshold for On-Demand Instances. This is the maximum you’ll pay for an On-Demand Instance, expressed as a percentage higher than the least expensive current generation M, C, or R instance type with your specified attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price is higher than your threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage. To turn off price protection, specify a high value, such as 999999. If you set DesiredCapacityType to vcpu or memory-mib, the price protection threshold is applied based on the per vCPU or per memory price instead of the per instance price. Default: 20
2097
+ * [Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage. To indicate no price protection threshold, specify a high value, such as 999999. If you set DesiredCapacityType to vcpu or memory-mib, the price protection threshold is based on the per-vCPU or per-memory price instead of the per instance price. Only one of SpotMaxPricePercentageOverLowestPrice or MaxSpotPriceAsPercentageOfOptimalOnDemandPrice can be specified. If you don't specify either, then SpotMaxPricePercentageOverLowestPrice is used and the value for that parameter defaults to 100.
2098
+ */
2099
+ MaxSpotPriceAsPercentageOfOptimalOnDemandPrice?: NullablePositiveInteger;
2100
+ /**
2101
+ * [Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage. To turn off price protection, specify a high value, such as 999999. If you set DesiredCapacityType to vcpu or memory-mib, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per instance price. Default: 20
2098
2102
  */
2099
2103
  OnDemandMaxPricePercentageOverLowestPrice?: NullablePositiveInteger;
2100
2104
  /**
@@ -1105,7 +1105,7 @@ declare namespace Comprehend {
1105
1105
  */
1106
1106
  Text: String;
1107
1107
  /**
1108
- * The language of the input documents. Currently, English is the only valid language.
1108
+ * The language of the input documents.
1109
1109
  */
1110
1110
  LanguageCode: LanguageCode;
1111
1111
  }
@@ -1847,7 +1847,7 @@ declare namespace Comprehend {
1847
1847
  */
1848
1848
  Text: String;
1849
1849
  /**
1850
- * The language of the input documents. Currently, English is the only valid language.
1850
+ * The language of the input text. Enter the language code for English (en) or Spanish (es).
1851
1851
  */
1852
1852
  LanguageCode: LanguageCode;
1853
1853
  }
@@ -3767,7 +3767,7 @@ declare namespace Comprehend {
3767
3767
  */
3768
3768
  RedactionConfig?: RedactionConfig;
3769
3769
  /**
3770
- * The language code of the input documents
3770
+ * The language code of the input documents.
3771
3771
  */
3772
3772
  LanguageCode?: LanguageCode;
3773
3773
  /**
@@ -4284,7 +4284,7 @@ declare namespace Comprehend {
4284
4284
  */
4285
4285
  JobName?: JobName;
4286
4286
  /**
4287
- * The language of the input documents. Currently, English is the only valid language.
4287
+ * The language of the input documents. Enter the language code for English (en) or Spanish (es).
4288
4288
  */
4289
4289
  LanguageCode: LanguageCode;
4290
4290
  /**
@@ -24766,11 +24766,11 @@ declare namespace EC2 {
24766
24766
  */
24767
24767
  InstanceGenerations?: InstanceGenerationSet;
24768
24768
  /**
24769
- * The price protection threshold for Spot Instances. This is the maximum you’ll pay for a Spot Instance, expressed as a percentage above the least expensive current generation M, C, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it excludes instance types priced above your threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To turn off price protection, specify a high value, such as 999999. This parameter is not supported for GetSpotPlacementScores and GetInstanceTypesFromInstanceRequirements. If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price. Default: 100
24769
+ * [Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price. The identified Spot price is the Spot price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified Spot price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose Spot price exceeds your specified threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To indicate no price protection threshold, specify a high value, such as 999999. If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price. This parameter is not supported for GetSpotPlacementScores and GetInstanceTypesFromInstanceRequirements. Only one of SpotMaxPricePercentageOverLowestPrice or MaxSpotPriceAsPercentageOfOptimalOnDemandPrice can be specified. If you don't specify either, then SpotMaxPricePercentageOverLowestPrice is used and the value for that parameter defaults to 100. Default: 100
24770
24770
  */
24771
24771
  SpotMaxPricePercentageOverLowestPrice?: Integer;
24772
24772
  /**
24773
- * The price protection threshold for On-Demand Instances. This is the maximum you’ll pay for an On-Demand Instance, expressed as a percentage above the least expensive current generation M, C, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it excludes instance types priced above your threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To turn off price protection, specify a high value, such as 999999. This parameter is not supported for GetSpotPlacementScores and GetInstanceTypesFromInstanceRequirements. If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price. Default: 20
24773
+ * [Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To turn off price protection, specify a high value, such as 999999. This parameter is not supported for GetSpotPlacementScores and GetInstanceTypesFromInstanceRequirements. If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price. Default: 20
24774
24774
  */
24775
24775
  OnDemandMaxPricePercentageOverLowestPrice?: Integer;
24776
24776
  /**
@@ -24833,6 +24833,10 @@ declare namespace EC2 {
24833
24833
  * The instance types to apply your specified attributes against. All other instance types are ignored, even if they match your specified attributes. You can use strings with one or more wild cards, represented by an asterisk (*), to allow an instance type, size, or generation. The following are examples: m5.8xlarge, c5*.*, m5a.*, r*, *3*. For example, if you specify c5*,Amazon EC2 will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify m5a.*, Amazon EC2 will allow all the M5a instance types, but not the M5n instance types. If you specify AllowedInstanceTypes, you can't specify ExcludedInstanceTypes. Default: All instance types
24834
24834
  */
24835
24835
  AllowedInstanceTypes?: AllowedInstanceTypeSet;
24836
+ /**
24837
+ * [Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To indicate no price protection threshold, specify a high value, such as 999999. If you set DesiredCapacityType to vcpu or memory-mib, the price protection threshold is based on the per vCPU or per memory price instead of the per instance price. Only one of SpotMaxPricePercentageOverLowestPrice or MaxSpotPriceAsPercentageOfOptimalOnDemandPrice can be specified. If you don't specify either, then SpotMaxPricePercentageOverLowestPrice is used and the value for that parameter defaults to 100.
24838
+ */
24839
+ MaxSpotPriceAsPercentageOfOptimalOnDemandPrice?: Integer;
24836
24840
  }
24837
24841
  export interface InstanceRequirementsRequest {
24838
24842
  /**
@@ -24860,11 +24864,11 @@ declare namespace EC2 {
24860
24864
  */
24861
24865
  InstanceGenerations?: InstanceGenerationSet;
24862
24866
  /**
24863
- * The price protection threshold for Spot Instance. This is the maximum you’ll pay for an Spot Instance, expressed as a percentage above the least expensive current generation M, C, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it excludes instance types priced above your threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To turn off price protection, specify a high value, such as 999999. This parameter is not supported for GetSpotPlacementScores and GetInstanceTypesFromInstanceRequirements. If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price. Default: 100
24867
+ * [Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price. The identified Spot price is the Spot price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified Spot price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose Spot price exceeds your specified threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To indicate no price protection threshold, specify a high value, such as 999999. If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price. This parameter is not supported for GetSpotPlacementScores and GetInstanceTypesFromInstanceRequirements. Only one of SpotMaxPricePercentageOverLowestPrice or MaxSpotPriceAsPercentageOfOptimalOnDemandPrice can be specified. If you don't specify either, then SpotMaxPricePercentageOverLowestPrice is used and the value for that parameter defaults to 100. Default: 100
24864
24868
  */
24865
24869
  SpotMaxPricePercentageOverLowestPrice?: Integer;
24866
24870
  /**
24867
- * The price protection threshold for On-Demand Instances. This is the maximum you’ll pay for an On-Demand Instance, expressed as a percentage above the least expensive current generation M, C, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it excludes instance types priced above your threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To turn off price protection, specify a high value, such as 999999. This parameter is not supported for GetSpotPlacementScores and GetInstanceTypesFromInstanceRequirements. If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price. Default: 20
24871
+ * [Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To indicate no price protection threshold, specify a high value, such as 999999. This parameter is not supported for GetSpotPlacementScores and GetInstanceTypesFromInstanceRequirements. If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price. Default: 20
24868
24872
  */
24869
24873
  OnDemandMaxPricePercentageOverLowestPrice?: Integer;
24870
24874
  /**
@@ -24927,6 +24931,10 @@ declare namespace EC2 {
24927
24931
  * The instance types to apply your specified attributes against. All other instance types are ignored, even if they match your specified attributes. You can use strings with one or more wild cards, represented by an asterisk (*), to allow an instance type, size, or generation. The following are examples: m5.8xlarge, c5*.*, m5a.*, r*, *3*. For example, if you specify c5*,Amazon EC2 will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify m5a.*, Amazon EC2 will allow all the M5a instance types, but not the M5n instance types. If you specify AllowedInstanceTypes, you can't specify ExcludedInstanceTypes. Default: All instance types
24928
24932
  */
24929
24933
  AllowedInstanceTypes?: AllowedInstanceTypeSet;
24934
+ /**
24935
+ * [Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold. The parameter accepts an integer, which Amazon EC2 interprets as a percentage. To indicate no price protection threshold, specify a high value, such as 999999. If you set DesiredCapacityType to vcpu or memory-mib, the price protection threshold is based on the per vCPU or per memory price instead of the per instance price. Only one of SpotMaxPricePercentageOverLowestPrice or MaxSpotPriceAsPercentageOfOptimalOnDemandPrice can be specified. If you don't specify either, then SpotMaxPricePercentageOverLowestPrice is used and the value for that parameter defaults to 100.
24936
+ */
24937
+ MaxSpotPriceAsPercentageOfOptimalOnDemandPrice?: Integer;
24930
24938
  }
24931
24939
  export interface InstanceRequirementsWithMetadataRequest {
24932
24940
  /**