@aws-cdk/aws-glue-alpha 2.269.0-alpha.0 → 2.271.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/table-base.js CHANGED
@@ -48,8 +48,17 @@ const partition_index_provider_generated_1 = require("../custom-resource-handler
48
48
  * A Glue table.
49
49
  */
50
50
  class TableBase extends core_1.Resource {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.TableBase", version: "2.269.0-alpha.0" };
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.TableBase", version: "2.271.0-alpha.0" };
52
52
  static fromTableArn(scope, id, tableArn) {
53
+ try {
54
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TableBase#fromTableArn", "");
55
+ }
56
+ catch (error) {
57
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
58
+ Error.captureStackTrace(error, this.fromTableArn);
59
+ }
60
+ throw error;
61
+ }
53
62
  const tableName = core_1.Fn.select(1, core_1.Fn.split('/', core_1.Stack.of(scope).splitArn(tableArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName));
54
63
  return TableBase.fromTableAttributes(scope, id, {
55
64
  tableArn,
@@ -65,6 +74,7 @@ class TableBase extends core_1.Resource {
65
74
  */
66
75
  static fromTableAttributes(scope, id, attrs) {
67
76
  try {
77
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TableBase#fromTableAttributes", "");
68
78
  jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_TableAttributes(attrs);
69
79
  }
70
80
  catch (error) {
@@ -131,6 +141,7 @@ class TableBase extends core_1.Resource {
131
141
  }),
132
142
  });
133
143
  try {
144
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TableBase", "");
134
145
  jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_TableBaseProps(props);
135
146
  }
136
147
  catch (error) {
@@ -161,6 +172,7 @@ class TableBase extends core_1.Resource {
161
172
  */
162
173
  addPartitionIndex(index) {
163
174
  try {
175
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TableBase#addPartitionIndex", "");
164
176
  jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_PartitionIndex(index);
165
177
  }
166
178
  catch (error) {
@@ -340,6 +352,15 @@ class TableBase extends core_1.Resource {
340
352
  * @param actions the set of Glue actions to allow (for example `glue:GetTable`)
341
353
  */
342
354
  grant(grantee, actions) {
355
+ try {
356
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TableBase#grant", "");
357
+ }
358
+ catch (error) {
359
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
360
+ Error.captureStackTrace(error, this.grant);
361
+ }
362
+ throw error;
363
+ }
343
364
  return iam.Grant.addToPrincipal({
344
365
  grantee,
345
366
  resourceArns: [this.tableArn],
@@ -363,6 +384,15 @@ class TableBase extends core_1.Resource {
363
384
  * @param actions the set of Glue actions to allow (for example `glue:GetTable`)
364
385
  */
365
386
  grantToUnderlyingResources(grantee, actions) {
387
+ try {
388
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TableBase#grantToUnderlyingResources", "");
389
+ }
390
+ catch (error) {
391
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
392
+ Error.captureStackTrace(error, this.grantToUnderlyingResources);
393
+ }
394
+ throw error;
395
+ }
366
396
  return iam.Grant.addToPrincipal({
367
397
  grantee,
368
398
  resourceArns: [
@@ -437,4 +467,4 @@ function validateSchema(columns, partitionKeys) {
437
467
  names.add(column.name);
438
468
  });
439
469
  }
440
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRhYmxlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx5REFBMkM7QUFDM0MsaURBQWdEO0FBR2hELDJDQUEwSjtBQUMxSiw0RUFBcUU7QUFDckUsaUVBQW1EO0FBQ25ELDJDQUF1QztBQUd2QyxpRUFBeUc7QUFHekcsMklBQXFLO0FBcUxySzs7R0FFRztBQUNILE1BQXNCLFNBQVUsU0FBUSxlQUFROztJQUN2QyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQWdCO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLFNBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxnQkFBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsWUFBYSxDQUFDLENBQUMsQ0FBQztRQUUvSCxPQUFPLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzlDLFFBQVE7WUFDUixTQUFTO1NBQ1YsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7Ozs7Ozs7Ozs7UUFDcEYsTUFBTSxNQUFPLFNBQVEsZUFBUTtZQUNYLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQzFCLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQzdDO1FBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDOUI7SUFPRDs7T0FFRztJQUNhLFFBQVEsQ0FBWTtJQUVwQzs7T0FFRztJQUNhLFVBQVUs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RSxDQUFDO1lBQzNCLE1BQU0sSUFBSSw4QkFBdUIsQ0FBQyxJQUFBLHNCQUFHLEVBQUEscUJBQXFCLEVBQUUseURBQXlELE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLENBQUM7UUFDdEosQ0FBQztRQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2ZuVGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBLZXlHcmFudHMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB0eXBlICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHR5cGUgeyBJUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEFybkZvcm1hdCwgQ3VzdG9tUmVzb3VyY2UsIER1cmF0aW9uLCBGbiwgTGF6eSwgTmFtZXMsIFJlc291cmNlLCBTdGFjaywgVG9rZW4sIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGxpdCwgbWQ1aGFzaCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgRGF0YUZvcm1hdCB9IGZyb20gJy4vZGF0YS1mb3JtYXQnO1xuaW1wb3J0IHR5cGUgeyBJRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IGdlbmVyYXRlUGFydGl0aW9uUHJvamVjdGlvblBhcmFtZXRlcnMsIHR5cGUgUGFydGl0aW9uUHJvamVjdGlvbiB9IGZyb20gJy4vcGFydGl0aW9uLXByb2plY3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IFN0b3JhZ2VQYXJhbWV0ZXIgfSBmcm9tICcuL3N0b3JhZ2UtcGFyYW1ldGVyJztcbmltcG9ydCB7IFBhcnRpdGlvbkluZGV4SXNDb21wbGV0ZUZ1bmN0aW9uLCBQYXJ0aXRpb25JbmRleE9uRXZlbnRGdW5jdGlvbiB9IGZyb20gJy4uL2N1c3RvbS1yZXNvdXJjZS1oYW5kbGVycy9kaXN0L2F3cy1nbHVlLWFscGhhL3BhcnRpdGlvbi1pbmRleC1wcm92aWRlci5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgYSBQYXJ0aXRpb24gSW5kZXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFydGl0aW9uSW5kZXgge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhcnRpdGlvbiBpbmRleC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHlvdS5cbiAgICovXG4gIHJlYWRvbmx5IGluZGV4TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnRpdGlvbiBrZXkgbmFtZXMgdGhhdCBjb21wcmlzZSB0aGUgcGFydGl0aW9uXG4gICAqIGluZGV4LiBUaGUgbmFtZXMgbXVzdCBjb3JyZXNwb25kIHRvIGEgbmFtZSBpbiB0aGVcbiAgICogdGFibGUncyBwYXJ0aXRpb24ga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IGtleU5hbWVzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQXR0cmlidXRlcyB7XG4gIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGdlbmVyYXRlZCBieSBDREsuXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGF0YWJhc2UgaW4gd2hpY2ggdG8gc3RvcmUgdGhlIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2U6IElEYXRhYmFzZTtcblxuICAvKipcbiAgICogQ29sdW1ucyBvZiB0aGUgdGFibGUuXG4gICAqL1xuICByZWFkb25seSBjb2x1bW5zOiBDb2x1bW5bXTtcblxuICAvKipcbiAgICogUGFydGl0aW9uIGNvbHVtbnMgb2YgdGhlIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0YWJsZSBpcyBub3QgcGFydGl0aW9uZWRcbiAgICovXG4gIHJlYWRvbmx5IHBhcnRpdGlvbktleXM/OiBDb2x1bW5bXTtcblxuICAvKipcbiAgICogUGFydGl0aW9uIGluZGV4ZXMgb24gdGhlIHRhYmxlLiBBIG1heGltdW0gb2YgMyBpbmRleGVzXG4gICAqIGFyZSBhbGxvd2VkIG9uIGEgdGFibGUuIEtleXMgaW4gdGhlIGluZGV4IG11c3QgYmUgcGFydFxuICAgKiBvZiB0aGUgdGFibGUncyBwYXJ0aXRpb24ga2V5cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdGFibGUgaGFzIG5vIHBhcnRpdGlvbiBpbmRleGVzXG4gICAqL1xuICByZWFkb25seSBwYXJ0aXRpb25JbmRleGVzPzogUGFydGl0aW9uSW5kZXhbXTtcblxuICAvKipcbiAgICogU3RvcmFnZSB0eXBlIG9mIHRoZSB0YWJsZSdzIGRhdGEuXG4gICAqL1xuICByZWFkb25seSBkYXRhRm9ybWF0OiBEYXRhRm9ybWF0O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdGFibGUncyBkYXRhIGlzIGNvbXByZXNzZWQgb3Igbm90LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcHJlc3NlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSB0YWJsZSBkYXRhIGlzIHN0b3JlZCBpbiBzdWJkaXJlY3Rvcmllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JlZEFzU3ViRGlyZWN0b3JpZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIHBhcnRpdGlvbiBmaWx0ZXJpbmcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvZ2x1ZS1iZXN0LXByYWN0aWNlcy5odG1sI2dsdWUtYmVzdC1wcmFjdGljZXMtcGFydGl0aW9uLWluZGV4XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIHBhcmFtZXRlciBpcyBub3QgZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUGFydGl0aW9uRmlsdGVyaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHVzZXItc3VwcGxpZWQgcHJvcGVydGllcyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBwaHlzaWNhbCBzdG9yYWdlIG9mIHRoaXMgdGFibGUuIFRoZXNlIHByb3BlcnRpZXMgaGVscCBkZXNjcmliZSB0aGUgZm9ybWF0IG9mIHRoZSBkYXRhIHRoYXQgaXMgc3RvcmVkIHdpdGhpbiB0aGUgY3Jhd2xlZCBkYXRhIHNvdXJjZXMuXG4gICAqXG4gICAqIFRoZSBrZXkvdmFsdWUgcGFpcnMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBzdWJtaXR0ZWQgYXJlIG5vdCBsaW1pdGVkLCBob3dldmVyIHRoZWlyIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGd1YXJhbnRlZWQuXG4gICAqXG4gICAqIFNvbWUga2V5cyB3aWxsIGJlIGF1dG8tcG9wdWxhdGVkIGJ5IGdsdWUgY3Jhd2xlcnMsIGhvd2V2ZXIsIHlvdSBjYW4gb3ZlcnJpZGUgdGhlbSBieSBzcGVjaWZ5aW5nIHRoZSBrZXkgYW5kIHZhbHVlIGluIHRoaXMgcHJvcGVydHkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL3RhYmxlLXByb3BlcnRpZXMtY3Jhd2xlci5odG1sXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqICAgIGRlY2xhcmUgY29uc3QgZ2x1ZURhdGFiYXNlOiBnbHVlLklEYXRhYmFzZTtcbiAgICogICAgY29uc3QgdGFibGUgPSBuZXcgZ2x1ZS5TM1RhYmxlKHRoaXMsICdUYWJsZScsIHtcbiAgICogICAgICBzdG9yYWdlUGFyYW1ldGVyczogW1xuICAgKiAgICAgICAgICBnbHVlLlN0b3JhZ2VQYXJhbWV0ZXIuc2tpcEhlYWRlckxpbmVDb3VudCgxKSxcbiAgICogICAgICAgICAgZ2x1ZS5TdG9yYWdlUGFyYW1ldGVyLmNvbXByZXNzaW9uVHlwZShnbHVlLkNvbXByZXNzaW9uVHlwZS5HWklQKSxcbiAgICogICAgICAgICAgZ2x1ZS5TdG9yYWdlUGFyYW1ldGVyLmN1c3RvbSgnZm9vJywgJ2JhcicpLCAvLyBXaWxsIGhhdmUgbm8gZWZmZWN0XG4gICAqICAgICAgICAgIGdsdWUuU3RvcmFnZVBhcmFtZXRlci5jdXN0b20oJ3NlcGFyYXRvckNoYXInLCAnLCcpLCAvLyBXaWxsIGRlc2NyaWJlIHRoZSBzZXBhcmF0b3IgY2hhciB1c2VkIGluIHRoZSBkYXRhXG4gICAqICAgICAgICAgIGdsdWUuU3RvcmFnZVBhcmFtZXRlci5jdXN0b20oZ2x1ZS5TdG9yYWdlUGFyYW1ldGVycy5XUklURV9QQVJBTExFTCwgJ29mZicpLFxuICAgKiAgICAgIF0sXG4gICAqICAgICAgLy8gLi4uXG4gICAqICAgICAgZGF0YWJhc2U6IGdsdWVEYXRhYmFzZSxcbiAgICogICAgICBjb2x1bW5zOiBbe1xuICAgKiAgICAgICAgICBuYW1lOiAnY29sMScsXG4gICAqICAgICAgICAgIHR5cGU6IGdsdWUuU2NoZW1hLlNUUklORyxcbiAgICogICAgICB9XSxcbiAgICogICAgICBkYXRhRm9ybWF0OiBnbHVlLkRhdGFGb3JtYXQuQ1NWLFxuICAgKiAgICB9KTtcbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgcGFyYW1ldGVyIGlzIG5vdCBkZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlUGFyYW1ldGVycz86IFN0b3JhZ2VQYXJhbWV0ZXJbXTtcblxuICAvKipcbiAgICogVGhlIGtleS92YWx1ZSBwYWlycyBkZWZpbmUgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlLlxuICAgKiBUaGUga2V5L3ZhbHVlIHBhaXJzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgc3VibWl0dGVkIGFyZSBub3QgbGltaXRlZCwgaG93ZXZlciB0aGVpciBmdW5jdGlvbmFsaXR5IGlzIG5vdCBndWFyYW50ZWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWdsdWUtdGFibGUtdGFibGVpbnB1dC5odG1sI2Nmbi1nbHVlLXRhYmxlLXRhYmxlaW5wdXQtcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBwYXJhbWV0ZXIgaXMgbm90IGRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRhIHN0b3JlZCBpbiB0aGUgdGFibGUgaXMgZW5jcnlwdGVkLlxuICAgKlxuICAgKiBUaGlzIHNldHMgdGhlIGBoYXNfZW5jcnlwdGVkX2RhdGFgIHRhYmxlIHBhcmFtZXRlci4gQXRoZW5hIHJlYWRzIGl0IHdoZW5cbiAgICogcXVlcnlpbmcgY2xpZW50LXNpZGUgKENTRS1LTVMpIGVuY3J5cHRlZCBkYXRhc2V0czsgZm9yIHNlcnZlci1zaWRlXG4gICAqIGVuY3J5cHRlZCAoU1NFLVMzIC8gU1NFLUtNUykgb3IgdW5lbmNyeXB0ZWQgZGF0YSBpdCBoYXMgbm8gZWZmZWN0LCBzaW5jZVxuICAgKiBBbWF6b24gUzMgZGVjcnlwdHMgc2VydmVyLXNpZGUgZW5jcnlwdGVkIG9iamVjdHMgdHJhbnNwYXJlbnRseS5cbiAgICpcbiAgICogRG8gbm90IGFsc28gc2V0IGBoYXNfZW5jcnlwdGVkX2RhdGFgIHRocm91Z2ggYHBhcmFtZXRlcnNgIC0gdXNlIHRoaXNcbiAgICogcHJvcGVydHkgaW5zdGVhZC4gQSBjb25mbGljdGluZyB2YWx1ZSBpbiBgcGFyYW1ldGVyc2AgaXMgcmVqZWN0ZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvY3JlYXRpbmctdGFibGVzLWJhc2VkLW9uLWVuY3J5cHRlZC1kYXRhc2V0cy1pbi1zMy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGhhc0VuY3J5cHRlZERhdGE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGlzIHRhYmxlLlxuICAgKlxuICAgKiBQYXJ0aXRpb24gcHJvamVjdGlvbiBhbGxvd3MgQXRoZW5hIHRvIGF1dG9tYXRpY2FsbHkgYWRkIG5ldyBwYXJ0aXRpb25zXG4gICAqIHdpdGhvdXQgcmVxdWlyaW5nIGBBTFRFUiBUQUJMRSBBREQgUEFSVElUSU9OYCBzdGF0ZW1lbnRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL3BhcnRpdGlvbi1wcm9qZWN0aW9uLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwYXJ0aXRpb24gcHJvamVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcGFydGl0aW9uUHJvamVjdGlvbj86IFBhcnRpdGlvblByb2plY3Rpb247XG59XG5cbi8qKlxuICogQSBHbHVlIHRhYmxlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVGFibGUge1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB0YWJsZUFybjogc3RyaW5nKTogSVRhYmxlIHtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBGbi5zZWxlY3QoMSwgRm4uc3BsaXQoJy8nLCBTdGFjay5vZihzY29wZSkuc3BsaXRBcm4odGFibGVBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWUhKSk7XG5cbiAgICByZXR1cm4gVGFibGVCYXNlLmZyb21UYWJsZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7XG4gICAgICB0YWJsZUFybixcbiAgICAgIHRhYmxlTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgVGFibGUgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBpZC5cbiAgICogQHBhcmFtIGF0dHJzIEltcG9ydCBhdHRyaWJ1dGVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFRhYmxlQXR0cmlidXRlcyk6IElUYWJsZSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVGFibGUge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlQXJuID0gYXR0cnMudGFibGVBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVOYW1lID0gYXR0cnMudGFibGVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVSZXNvdXJjZTogQ2ZuVGFibGU7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBwYXJ0aXRpb25JbmRleGVzPzogUGFydGl0aW9uSW5kZXhbXTtcblxuICAvKipcbiAgICogRGF0YWJhc2UgdGhpcyB0YWJsZSBiZWxvbmdzIHRvLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFiYXNlOiBJRGF0YWJhc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSB0YWJsZSdzIGRhdGEgaXMgY29tcHJlc3NlZCBvciBub3QuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcHJlc3NlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogRm9ybWF0IG9mIHRoaXMgdGFibGUncyBkYXRhIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFGb3JtYXQ6IERhdGFGb3JtYXQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgdGFibGUncyBjb2x1bW5zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbHVtbnM6IENvbHVtbltdO1xuXG4gIC8qKlxuICAgKiBUaGlzIHRhYmxlJ3MgcGFydGl0aW9uIGtleXMgaWYgdGhlIHRhYmxlIGlzIHBhcnRpdGlvbmVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhcnRpdGlvbktleXM/OiBDb2x1bW5bXTtcblxuICAvKipcbiAgICogVGhlIHRhYmxlcycgc3RvcmFnZSBkZXNjcmlwdG9yIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RvcmFnZVBhcmFtZXRlcnM/OiBTdG9yYWdlUGFyYW1ldGVyW107XG5cbiAgLyoqXG4gICAqIFRoaXMgdGFibGUncyBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uIGlmIGVuYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFydGl0aW9uUHJvamVjdGlvbj86IFBhcnRpdGlvblByb2plY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZXMnIHByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1nbHVlLXRhYmxlLXRhYmxlaW5wdXQuaHRtbCNjZm4tZ2x1ZS10YWJsZS10YWJsZWlucHV0LXBhcmFtZXRlcnNcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRhIHN0b3JlZCBpbiB0aGUgdGFibGUgaXMgZW5jcnlwdGVkLiBFbWl0dGVkIGFzIHRoZVxuICAgKiBgaGFzX2VuY3J5cHRlZF9kYXRhYCB0YWJsZSBwYXJhbWV0ZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzRW5jcnlwdGVkRGF0YTogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGFydGl0aW9uIGluZGV4ZXMgbXVzdCBiZSBjcmVhdGVkIG9uZSBhdCBhIHRpbWUuIFRvIGF2b2lkXG4gICAqIHJhY2UgY29uZGl0aW9ucywgd2Ugc3RvcmUgdGhlIHJlc291cmNlIGFuZCBhZGQgZGVwZW5kZW5jaWVzXG4gICAqIGVhY2ggdGltZSBhIG5ldyBwYXJ0aXRpb24gaW5kZXggaXMgY3JlYXRlZC5cbiAgICovXG4gIHByaXZhdGUgcGFydGl0aW9uSW5kZXhDdXN0b21SZXNvdXJjZXM6IEN1c3RvbVJlc291cmNlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGFibGVCYXNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMudGFibGVOYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge30pLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhYmFzZSA9IHByb3BzLmRhdGFiYXNlO1xuICAgIHRoaXMuZGF0YUZvcm1hdCA9IHByb3BzLmRhdGFGb3JtYXQ7XG5cbiAgICB2YWxpZGF0ZVNjaGVtYShwcm9wcy5jb2x1bW5zLCBwcm9wcy5wYXJ0aXRpb25LZXlzKTtcbiAgICB0aGlzLmNvbHVtbnMgPSBwcm9wcy5jb2x1bW5zO1xuICAgIHRoaXMucGFydGl0aW9uS2V5cyA9IHByb3BzLnBhcnRpdGlvbktleXM7XG4gICAgdGhpcy5zdG9yYWdlUGFyYW1ldGVycyA9IHByb3BzLnN0b3JhZ2VQYXJhbWV0ZXJzO1xuICAgIHRoaXMucGFydGl0aW9uUHJvamVjdGlvbiA9IHByb3BzLnBhcnRpdGlvblByb2plY3Rpb247XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gcHJvcHMucGFyYW1ldGVycyA/PyB7fTtcblxuICAgIHRoaXMuaGFzRW5jcnlwdGVkRGF0YSA9IHByb3BzLmhhc0VuY3J5cHRlZERhdGEgPz8gdHJ1ZTtcbiAgICB0aGlzLnJlY29uY2lsZUhhc0VuY3J5cHRlZERhdGEoKTtcblxuICAgIHRoaXMuY29tcHJlc3NlZCA9IHByb3BzLmNvbXByZXNzZWQgPz8gZmFsc2U7XG5cbiAgICB0aGlzLnZhbGlkYXRlQW5kR2VuZXJhdGVQYXJ0aXRpb25Qcm9qZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuICBwdWJsaWMgYWJzdHJhY3QgZ3JhbnRXcml0ZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbiAgcHVibGljIGFic3RyYWN0IGdyYW50UmVhZFdyaXRlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBBZGQgYSBwYXJ0aXRpb24gaW5kZXggdG8gdGhlIHRhYmxlLiBZb3UgY2FuIGhhdmUgYSBtYXhpbXVtIG9mIDMgcGFydGl0aW9uXG4gICAqIGluZGV4ZXMgdG8gYSB0YWJsZS4gUGFydGl0aW9uIGluZGV4IGtleXMgbXVzdCBiZSBhIHN1YnNldCBvZiB0aGUgdGFibGUnc1xuICAgKiBwYXJ0aXRpb24ga2V5cy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvcGFydGl0aW9uLWluZGV4ZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIGFkZFBhcnRpdGlvbkluZGV4KGluZGV4OiBQYXJ0aXRpb25JbmRleCkge1xuICAgIGNvbnN0IG51bVBhcnRpdGlvbnMgPSB0aGlzLnBhcnRpdGlvbkluZGV4Q3VzdG9tUmVzb3VyY2VzLmxlbmd0aDtcbiAgICBpZiAobnVtUGFydGl0aW9ucyA+PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBNYXhQYXJ0aXRpb25JbmRleGVzRXhjZWVkZWRgLCAnTWF4aW11bSBudW1iZXIgb2YgcGFydGl0aW9uIGluZGV4ZXMgYWxsb3dlZCBpcyAzJywgdGhpcyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVQYXJ0aXRpb25JbmRleChpbmRleCk7XG5cbiAgICBjb25zdCBpbmRleE5hbWUgPSBpbmRleC5pbmRleE5hbWUgPz8gdGhpcy5nZW5lcmF0ZUluZGV4TmFtZShpbmRleC5rZXlOYW1lcyk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBQYXJ0aXRpb25JbmRleFByb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMpO1xuXG4gICAgLy8gVGhlIGdyYW50cyBhcmUgaWRlbnRpY2FsIGZvciBldmVyeSBpbmRleCBvbiB0aGlzIHRhYmxlLCBzbyBvbmx5IGFkZCB0aGVtXG4gICAgLy8gb25jZS5cbiAgICBpZiAobnVtUGFydGl0aW9ucyA9PT0gMCkge1xuICAgICAgLy8gQWRkIHNjb3BlZCBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSdzIEdsdWUgcmVzb3VyY2VzXG4gICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hd3NnbHVlLmh0bWxcbiAgICAgIGNvbnN0IHJlc291cmNlcyA9IFt0aGlzLnRhYmxlQXJuLCB0aGlzLmRhdGFiYXNlLmRhdGFiYXNlQXJuLCB0aGlzLmRhdGFiYXNlLmNhdGFsb2cuY2F0YWxvZ0Fybl07XG5cbiAgICAgIC8vIFRoZSBjYXRhbG9nJ3MgZW5jcnlwdGlvbiBpcyBmaXhlZCBhdCBjb25zdHJ1Y3Rpb24sIHNvIHRoZSBlbmNyeXB0aW9uIGtleVxuICAgICAgLy8gKGlmIGFueSkgaXMga25vd24gaGVyZS4gR3JhbnQgdGhlIGhhbmRsZXJzIGFjY2VzcyB0byBpdC4gTm8tb3Agd2hlbiB0aGVcbiAgICAgIC8vIGNhdGFsb2cgdXNlcyBhbiBBV1MtbWFuYWdlZCBrZXkgb3Igbm8gZW5jcnlwdGlvbi5cbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZGF0YWJhc2UuY2F0YWxvZy5lbmNyeXB0aW9uS2V5O1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCBncmFudHMgPSBLZXlHcmFudHMuZnJvbUtleShrZXkpO1xuICAgICAgICBncmFudHMuZGVjcnlwdChwcm92aWRlci5vbkV2ZW50SGFuZGxlcik7XG4gICAgICAgIGdyYW50cy5kZWNyeXB0KHByb3ZpZGVyLmlzQ29tcGxldGVIYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgLy8gQm90aCBoYW5kbGVycyBjcmVhdGUsIGRlbGV0ZSwgYW5kIGluc3BlY3QgaW5kZXhlczogb25FdmVudCBjcmVhdGVzL2RlbGV0ZXMgb25cbiAgICAgIC8vIENyZWF0ZS9EZWxldGUvVXBkYXRlLCBhbmQgaXNDb21wbGV0ZSByZWNyZWF0ZXMgdGhlIGluZGV4IHdoaWxlIGRyaXZpbmcgYVxuICAgICAgLy8ga2V5LWNoYW5nZSB1cGRhdGUgKGRlbGV0ZSAtPiByZWNyZWF0ZSAtPiBBQ1RJVkUpLiBVcGRhdGVUYWJsZS9HZXRUYWJsZSBhcmVcbiAgICAgIC8vIHJlcXVpcmVkIGJ5IHRoZSBDcmVhdGVQYXJ0aXRpb25JbmRleC9EZWxldGVQYXJ0aXRpb25JbmRleCBBUElzLlxuICAgICAgY29uc3QgYWN0aW9ucyA9IFtcbiAgICAgICAgJ2dsdWU6R2V0UGFydGl0aW9uSW5kZXhlcycsXG4gICAgICAgICdnbHVlOkNyZWF0ZVBhcnRpdGlvbkluZGV4JyxcbiAgICAgICAgJ2dsdWU6RGVsZXRlUGFydGl0aW9uSW5kZXgnLFxuICAgICAgICAnZ2x1ZTpHZXRUYWJsZScsXG4gICAgICAgICdnbHVlOlVwZGF0ZVRhYmxlJyxcbiAgICAgIF07XG4gICAgICBwcm92aWRlci5vbkV2ZW50SGFuZGxlci5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoeyBhY3Rpb25zLCByZXNvdXJjZXMgfSkpO1xuICAgICAgcHJvdmlkZXIuaXNDb21wbGV0ZUhhbmRsZXIuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHsgYWN0aW9ucywgcmVzb3VyY2VzIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0aXRpb25JbmRleEN1c3RvbVJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsIGBwYXJ0aXRpb24taW5kZXgtJHtpbmRleE5hbWV9YCwge1xuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpHbHVlUGFydGl0aW9uSW5kZXgnLFxuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIERhdGFiYXNlTmFtZTogdGhpcy5kYXRhYmFzZS5kYXRhYmFzZU5hbWUsXG4gICAgICAgIFRhYmxlTmFtZTogdGhpcy50YWJsZU5hbWUsXG4gICAgICAgIEluZGV4TmFtZTogaW5kZXhOYW1lLFxuICAgICAgICBLZXlzOiBpbmRleC5rZXlOYW1lcyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFbnN1cmUgSUFNIHBvbGljaWVzIGFyZSBjcmVhdGVkIGJlZm9yZSB0aGUgY3VzdG9tIHJlc291cmNlIGludm9rZXMgdGhlIGhhbmRsZXJzXG4gICAgcGFydGl0aW9uSW5kZXhDdXN0b21SZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kocHJvdmlkZXIub25FdmVudEhhbmRsZXIucm9sZSEpO1xuICAgIHBhcnRpdGlvbkluZGV4Q3VzdG9tUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHByb3ZpZGVyLmlzQ29tcGxldGVIYW5kbGVyLnJvbGUhKTtcblxuICAgIC8vIERlcGVuZCBvbiBwcmV2aW91cyBwYXJ0aXRpb24gaW5kZXggdG8gYXZvaWQgcmFjZSBjb25kaXRpb25cbiAgICBpZiAobnVtUGFydGl0aW9ucyA+IDApIHtcbiAgICAgIHBhcnRpdGlvbkluZGV4Q3VzdG9tUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMucGFydGl0aW9uSW5kZXhDdXN0b21SZXNvdXJjZXNbbnVtUGFydGl0aW9ucy0xXSk7XG4gICAgfVxuICAgIHRoaXMucGFydGl0aW9uSW5kZXhDdXN0b21SZXNvdXJjZXMucHVzaChwYXJ0aXRpb25JbmRleEN1c3RvbVJlc291cmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVJbmRleE5hbWUoa2V5czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IG1heEluZGV4TGVuZ3RoID0gODA7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChrZXlzKSB8fCBrZXlzLnNvbWUoayA9PiBUb2tlbi5pc1VucmVzb2x2ZWQoaykpKSB7XG4gICAgICAvLyBUaGUgaW5kZXggbmFtZSBpcyBkZXJpdmVkIGZyb20gdGhlIGtleSBuYW1lcywgc28gdG9rZW5pemVkIGtleXMgbGVhdmVcbiAgICAgIC8vIG5vdGhpbmcgc3RhYmxlIHRvIGdlbmVyYXRlIGZyb206IGFueSBhdXRvLWdlbmVyYXRlZCBuYW1lIHdvdWxkIGhhdmUgdG9cbiAgICAgIC8vIGZhbGwgYmFjayB0byB0aGUgaW5kZXgncyBwb3NpdGlvbiBvbiB0aGUgdGFibGUsIHdoaWNoIHNoaWZ0cyBpZiBpbmRleGVzXG4gICAgICAvLyBhcmUgYWRkZWQsIHJlbW92ZWQsIG9yIHJlb3JkZXJlZCAtIHNpbGVudGx5IHJlcGxhY2luZyBpbmRleGVzIHRoYXQgZGlkXG4gICAgICAvLyBub3QgYWN0dWFsbHkgY2hhbmdlLiBSZXF1aXJlIGFuIGV4cGxpY2l0LCBzdGFibGUgbmFtZSBpbnN0ZWFkLlxuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YFRva2VuaXplZEluZGV4S2V5c1JlcXVpcmVOYW1lYCxcbiAgICAgICAgJ2Nhbm5vdCBhdXRvLWdlbmVyYXRlIGEgc3RhYmxlIHBhcnRpdGlvbiBpbmRleCBuYW1lIGZyb20gdG9rZW5pemVkIGtleSBuYW1lczsgJyArXG4gICAgICAgICAgJ3NwZWNpZnkgYGluZGV4TmFtZWAgZXhwbGljaXRseSB3aGVuIGluZGV4IGtleXMgYXJlIG5vdCBrbm93biBhdCBzeW50aGVzaXMgdGltZScsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBwcmVmaXggPSBrZXlzLmpvaW4oJy0nKSArICctJztcbiAgICBjb25zdCB1bmlxdWVJZCA9IE5hbWVzLnVuaXF1ZUlkKHRoaXMpO1xuICAgIGlmIChwcmVmaXgubGVuZ3RoIDwgbWF4SW5kZXhMZW5ndGgpIHtcbiAgICAgIC8vIENvbW1vbiBjYXNlOiB0cmltIHRoZSB1bmlxdWVJZCB0YWlsIHNvIHRoZSB3aG9sZSBuYW1lIGZpdHMgdW5kZXIgdGhlIGNhcC5cbiAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBNYXRoLm1heCgwLCB1bmlxdWVJZC5sZW5ndGggLSAobWF4SW5kZXhMZW5ndGggLSBwcmVmaXgubGVuZ3RoKSk7XG4gICAgICByZXR1cm4gcHJlZml4ICsgdW5pcXVlSWQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgpO1xuICAgIH1cbiAgICAvLyBUaGUgam9pbmVkIGtleSBuYW1lcyBhbG9uZSBleGNlZWQgdGhlIGJ1ZGdldCAobG9uZyBrZXkgbmFtZXMpLCBzbyB0cmltbWluZ1xuICAgIC8vIHRoZSB1bmlxdWVJZCBpcyBub3QgZW5vdWdoLiBUcnVuY2F0ZSB0aGUgcHJlZml4IGFuZCBhcHBlbmQgYSBoYXNoIG9mIHRoZVxuICAgIC8vIHRhYmxlIHBhdGggcGx1cyB0aGUgZnVsbCBrZXkgbGlzdCwgc28gdHdvIGRpZmZlcmVudCAobG9uZykga2V5IHNldHMgY2Fubm90XG4gICAgLy8gY29sbGlkZSBhZnRlciB0cnVuY2F0aW9uLlxuICAgIGNvbnN0IGhhc2ggPSBtZDVoYXNoKHVuaXF1ZUlkICsgJy0nICsga2V5cy5qb2luKCctJykpLnNsaWNlKDAsIDgpO1xuICAgIHJldHVybiBwcmVmaXguc3Vic3RyaW5nKDAsIG1heEluZGV4TGVuZ3RoIC0gaGFzaC5sZW5ndGggLSAxKSArICctJyArIGhhc2g7XG4gIH1cblxuICAvKipcbiAgICogUmVjb25jaWxlIGEgYGhhc19lbmNyeXB0ZWRfZGF0YWAgdmFsdWUgc3VwcGxpZWQgdGhyb3VnaCB0aGUgZnJlZS1mb3JtXG4gICAqIGBwYXJhbWV0ZXJzYCBtYXAgd2l0aCB0aGUgdHlwZWQgYGhhc0VuY3J5cHRlZERhdGFgIHByb3BlcnR5LlxuICAgKlxuICAgKiBgaGFzX2VuY3J5cHRlZF9kYXRhYCBpcyBtYW5hZ2VkIGJ5IHRoaXMgY29uc3RydWN0IGFuZCBlbWl0dGVkIGF1dGhvcml0YXRpdmVseVxuICAgKiBmcm9tIGBoYXNFbmNyeXB0ZWREYXRhYC4gU3VwcGx5aW5nIGl0IHRocm91Z2ggYHBhcmFtZXRlcnNgIGFzIHdlbGwgaXMgb25seVxuICAgKiB0b2xlcmF0ZWQgd2hlbiB0aGUgdmFsdWUgaXMgaWRlbnRpY2FsOyBhIGRpZmZlcmluZyAob3IgdW5yZXNvbHZlZCkgdmFsdWUgaXNcbiAgICogcmVqZWN0ZWQgc28gdGhlIHR3byBpbnB1dHMgY2FuIG5ldmVyIHNpbGVudGx5IGRpc2FncmVlLiBPbiBzdWNjZXNzIHRoZSBrZXkgaXNcbiAgICogcmVtb3ZlZCBmcm9tIHRoZSBmcmVlLWZvcm0gbWFwIHNvIHRoZSBtYW5hZ2VkIHZhbHVlIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mXG4gICAqIHRydXRoLlxuICAgKi9cbiAgcHJpdmF0ZSByZWNvbmNpbGVIYXNFbmNyeXB0ZWREYXRhKCk6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9ICdoYXNfZW5jcnlwdGVkX2RhdGEnO1xuICAgIGlmICghKGtleSBpbiB0aGlzLnBhcmFtZXRlcnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN1cHBsaWVkID0gdGhpcy5wYXJhbWV0ZXJzW2tleV07XG4gICAgY29uc3QgbWFuYWdlZCA9IFN0cmluZyh0aGlzLmhhc0VuY3J5cHRlZERhdGEpO1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoc3VwcGxpZWQpIHx8IHN1cHBsaWVkICE9PSBtYW5hZ2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgSGFzRW5jcnlwdGVkRGF0YUNvbmZsaWN0YCxcbiAgICAgICAgYHRoZSBcXGAke2tleX1cXGAgdGFibGUgcGFyYW1ldGVyIGlzIG1hbmFnZWQgYnkgdGhlIFxcYGhhc0VuY3J5cHRlZERhdGFcXGAgcHJvcGVydHk7IGAgK1xuICAgICAgICAgIGByZW1vdmUgaXQgZnJvbSBcXGBwYXJhbWV0ZXJzXFxgIGFuZCB1c2UgdGhlIGJvb2xlYW4gXFxgaGFzRW5jcnlwdGVkRGF0YVxcYCBwcm9wZXJ0eSBpbnN0ZWFkIChnb3QgJHtKU09OLnN0cmluZ2lmeShzdXBwbGllZCl9LCBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KG1hbmFnZWQpfSlgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG4gICAgZGVsZXRlIHRoaXMucGFyYW1ldGVyc1trZXldO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBhcnRpdGlvbkluZGV4KGluZGV4OiBQYXJ0aXRpb25JbmRleCkge1xuICAgIGlmIChpbmRleC5pbmRleE5hbWUgIT09IHVuZGVmaW5lZCAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKGluZGV4LmluZGV4TmFtZSkgJiYgKGluZGV4LmluZGV4TmFtZS5sZW5ndGggPCAxIHx8IGluZGV4LmluZGV4TmFtZS5sZW5ndGggPiAyNTUpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBJbmRleE5hbWVMZW5ndGhJbnZhbGlkYCwgYEluZGV4IG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NSBjaGFyYWN0ZXJzLCBidXQgZ290ICR7aW5kZXguaW5kZXhOYW1lLmxlbmd0aH1gLCB0aGlzKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnBhcnRpdGlvbktleXMgfHwgdGhpcy5wYXJ0aXRpb25LZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgTm9QYXJ0aXRpb25LZXlzRm9ySW5kZXhgLCAnVGhlIHRhYmxlIG11c3QgaGF2ZSBwYXJ0aXRpb24ga2V5cyB0byBjcmVhdGUgYSBwYXJ0aXRpb24gaW5kZXgnLCB0aGlzKTtcbiAgICB9XG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoaW5kZXgua2V5TmFtZXMpKSB7XG4gICAgICBjb25zdCBrZXlOYW1lcyA9IHRoaXMucGFydGl0aW9uS2V5cy5tYXAocGsgPT4gcGsubmFtZSk7XG4gICAgICBjb25zdCBjb25jcmV0ZUtleXMgPSBpbmRleC5rZXlOYW1lcy5maWx0ZXIoayA9PiAhVG9rZW4uaXNVbnJlc29sdmVkKGspKTtcbiAgICAgIGlmIChjb25jcmV0ZUtleXMubGVuZ3RoID4gMCAmJiAhY29uY3JldGVLZXlzLmV2ZXJ5KGsgPT4ga2V5TmFtZXMuaW5jbHVkZXMoaykpKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YEluZGV4S2V5c05vdFBhcnRpdGlvbktleXNgLCBgQWxsIGluZGV4IGtleXMgbXVzdCBhbHNvIGJlIHBhcnRpdGlvbiBrZXlzLiBHb3QgJHtpbmRleC5rZXlOYW1lc30gYnV0IHBhcnRpdGlvbiBrZXkgbmFtZXMgYXJlICR7a2V5TmFtZXN9YCwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb24gYW5kIG1lcmdlIGdlbmVyYXRlZCBwYXJhbWV0ZXJzIGludG8gdGhpcy5wYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFuZEdlbmVyYXRlUGFydGl0aW9uUHJvamVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGFydGl0aW9uUHJvamVjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgcGFydGl0aW9uIGtleXMgZXhpc3RcbiAgICBpZiAoIXRoaXMucGFydGl0aW9uS2V5cyB8fCB0aGlzLnBhcnRpdGlvbktleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgTm9QYXJ0aXRpb25LZXlzRm9yUHJvamVjdGlvbmAsXG4gICAgICAgICdUaGUgdGFibGUgbXVzdCBoYXZlIHBhcnRpdGlvbiBrZXlzIHRvIHVzZSBwYXJ0aXRpb24gcHJvamVjdGlvbicsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRpdGlvbktleU5hbWVzID0gdGhpcy5wYXJ0aXRpb25LZXlzLm1hcChwayA9PiBway5uYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIGVhY2ggcGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvblxuICAgIGZvciAoY29uc3QgW2NvbHVtbk5hbWUsIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wYXJ0aXRpb25Qcm9qZWN0aW9uKSkge1xuICAgICAgLy8gVmFsaWRhdGUgdGhhdCBjb2x1bW4gaXMgYSBwYXJ0aXRpb24ga2V5XG4gICAgICBpZiAoIXBhcnRpdGlvbktleU5hbWVzLmluY2x1ZGVzKGNvbHVtbk5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgbGl0YFByb2plY3Rpb25Db2x1bW5Ob3RQYXJ0aXRpb25LZXlgLFxuICAgICAgICAgIGBQYXJ0aXRpb24gcHJvamVjdGlvbiBjb2x1bW4gXCIke2NvbHVtbk5hbWV9XCIgbXVzdCBiZSBhIHBhcnRpdGlvbiBrZXkuIGAgK1xuICAgICAgICAgIGBQYXJ0aXRpb24ga2V5cyBhcmU6ICR7cGFydGl0aW9uS2V5TmFtZXMuam9pbignLCAnKX1gLFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEdlbmVyYXRlIENsb3VkRm9ybWF0aW9uIHBhcmFtZXRlcnNcbiAgICAgIGNvbnN0IGdlbmVyYXRlZFBhcmFtcyA9IGdlbmVyYXRlUGFydGl0aW9uUHJvamVjdGlvblBhcmFtZXRlcnMoY29sdW1uTmFtZSwgY29uZmlnKTtcblxuICAgICAgLy8gQ2hlY2sgZm9yIGNvbmZsaWN0cyB3aXRoIG1hbnVhbGx5IHNwZWNpZmllZCBwYXJhbWV0ZXJzXG4gICAgICBjb25zdCBjb25mbGljdGluZ0tleXMgPSBPYmplY3Qua2V5cyhnZW5lcmF0ZWRQYXJhbXMpLmZpbHRlcihrZXkgPT4ga2V5IGluIHRoaXMucGFyYW1ldGVycyk7XG4gICAgICBpZiAoY29uZmxpY3RpbmdLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBsaXRgUHJvamVjdGlvblBhcmFtZXRlcnNDb25mbGljdGAsXG4gICAgICAgICAgYFBhcnRpdGlvbiBwcm9qZWN0aW9uIHBhcmFtZXRlcnMgY29uZmxpY3Qgd2l0aCBtYW51YWxseSBzcGVjaWZpZWQgcGFyYW1ldGVyczogJHtjb25mbGljdGluZ0tleXMuam9pbignLCAnKX0uIGAgK1xuICAgICAgICAgICdVc2UgdGhlIHBhcnRpdGlvblByb2plY3Rpb24gcHJvcGVydHkgaW5zdGVhZCBvZiBtYW51YWxseSBzcGVjaWZ5aW5nIHByb2plY3Rpb24gcGFyYW1ldGVycy4nLFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIE1lcmdlIGludG8gdGhpcy5wYXJhbWV0ZXJzXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMucGFyYW1ldGVycywgZ2VuZXJhdGVkUGFyYW1zKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgY29uZmxpY3Qgd2l0aCBwcm9qZWN0aW9uLmVuYWJsZWRcbiAgICBpZiAoJ3Byb2plY3Rpb24uZW5hYmxlZCcgaW4gdGhpcy5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgUHJvamVjdGlvbkVuYWJsZWRDb25mbGljdGAsXG4gICAgICAgICdQYXJhbWV0ZXIgXCJwcm9qZWN0aW9uLmVuYWJsZWRcIiBjb25mbGljdHMgd2l0aCBwYXJ0aXRpb25Qcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb24uICcgK1xuICAgICAgICAnVXNlIHRoZSBwYXJ0aXRpb25Qcm9qZWN0aW9uIHByb3BlcnR5IGluc3RlYWQgb2YgbWFudWFsbHkgc3BlY2lmeWluZyBwcm9qZWN0aW9uLmVuYWJsZWQuJyxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRW5hYmxlIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGdsb2JhbGx5XG4gICAgdGhpcy5wYXJhbWV0ZXJzWydwcm9qZWN0aW9uLmVuYWJsZWQnXSA9ICd0cnVlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gaWRlbnRpdHkgY3VzdG9tIHBlcm1pc3Npb25zIG9uIHRoaXMgdGFibGUuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBsb3ctbGV2ZWwgZXNjYXBlIGhhdGNoOiB0aGUgYGFjdGlvbnNgIGFyZSBhcHBsaWVkIHZlcmJhdGltLFxuICAgKiBzY29wZWQgdG8gdGhpcyB0YWJsZSdzIEFSTi4gUHJlZmVyIHRoZSBpbnRlbnQtYmFzZWQgYGdyYW50UmVhZGAgL1xuICAgKiBgZ3JhbnRXcml0ZWAgLyBgZ3JhbnRSZWFkV3JpdGVgIG1ldGhvZHMsIHdoaWNoIGdyYW50IGEgY3VyYXRlZCBzZXQgb2ZcbiAgICogYWN0aW9ucyBhbmQgYWxzbyBjb3ZlciB0aGUgdW5kZXJseWluZyBTMyBkYXRhLiBPbmx5IHBhc3MgdGhlIHNwZWNpZmljXG4gICAqIGFjdGlvbnMgdGhlIGdyYW50ZWUgbmVlZHMgLSBhdm9pZCBzZXJ2aWNlIHdpbGRjYXJkcyBzdWNoIGFzIGBnbHVlOipgLlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgdGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyB0aGUgc2V0IG9mIEdsdWUgYWN0aW9ucyB0byBhbGxvdyAoZm9yIGV4YW1wbGUgYGdsdWU6R2V0VGFibGVgKVxuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCBhY3Rpb25zOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMudGFibGVBcm5dLFxuICAgICAgYWN0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gaWRlbnRpdHkgY3VzdG9tIHBlcm1pc3Npb25zIG9uIHRoaXMgdGFibGUgQU5EIGl0cyBwYXJlbnRcbiAgICogY2F0YWxvZyBhbmQgZGF0YWJhc2UuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBsb3ctbGV2ZWwgZXNjYXBlIGhhdGNoIGZvciBhY3Rpb25zIChzdWNoIGFzIGNlcnRhaW4gTGFrZVxuICAgKiBGb3JtYXRpb24gb3IgY3Jhd2xlciBvcGVyYXRpb25zKSB0aGF0IG11c3QgYmUgYXV0aG9yaXplZCBhZ2FpbnN0IHRoZVxuICAgKiBjYXRhbG9nIGFuZCBkYXRhYmFzZSBpbiBhZGRpdGlvbiB0byB0aGUgdGFibGUuIFRoZSBgYWN0aW9uc2AgYXJlIGFwcGxpZWRcbiAgICogdmVyYmF0aW0gdG8gYWxsIHRocmVlIEFSTnMgKHRhYmxlLCBjYXRhbG9nLCBkYXRhYmFzZSksIHNvIHNjb3BlIHRoZW1cbiAgICogdGlnaHRseTogcGFzcyBvbmx5IHRoZSBzcGVjaWZpYyBhY3Rpb25zIHRoZSBncmFudGVlIG5lZWRzIGFuZCBhdm9pZFxuICAgKiBzZXJ2aWNlIHdpbGRjYXJkcyBzdWNoIGFzIGBnbHVlOipgLCB3aGljaCB3b3VsZCBncmFudCBicm9hZCBhY2Nlc3MgYWNyb3NzXG4gICAqIGV2ZXJ5IHJlc291cmNlIGluIHRoZSBjYXRhbG9nIGFuZCBkYXRhYmFzZS5cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIHRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgdGhlIHNldCBvZiBHbHVlIGFjdGlvbnMgdG8gYWxsb3cgKGZvciBleGFtcGxlIGBnbHVlOkdldFRhYmxlYClcbiAgICovXG4gIHB1YmxpYyBncmFudFRvVW5kZXJseWluZ1Jlc291cmNlcyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgYWN0aW9uczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICByZXNvdXJjZUFybnM6IFtcbiAgICAgICAgdGhpcy50YWJsZUFybixcbiAgICAgICAgdGhpcy5kYXRhYmFzZS5jYXRhbG9nLmNhdGFsb2dBcm4sXG4gICAgICAgIHRoaXMuZGF0YWJhc2UuZGF0YWJhc2VBcm4sXG4gICAgICBdLFxuICAgICAgYWN0aW9ucyxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgc3RhY2stc2luZ2xldG9uIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlciB0aGF0IG1hbmFnZXMgR2x1ZSBwYXJ0aXRpb24gaW5kZXhlcy5cbiAqXG4gKiBBbGwgcGFydGl0aW9uLWluZGV4ZWQgdGFibGVzIGluIGEgc3RhY2sgc2hhcmUgYSBzaW5nbGUgcHJvdmlkZXIgKGFuZCBpdHMgdHdvXG4gKiBMYW1iZGEgaGFuZGxlcnMpIHRvIGF2b2lkIHByb3Zpc2lvbmluZyBhIHByb3ZpZGVyIGZyYW1ld29yayBwZXIgdGFibGUuIFRoZVxuICogcHJvdmlkZXIgYW5kIGhhbmRsZXJzIGFyZSBncm91cGVkIHVuZGVyIHRoaXMgc2luZ2xlIGNvbnN0cnVjdCBzbyBvbmx5IG9uZVxuICogaWQgaXMgcGxhY2VkIGF0IHN0YWNrIHNjb3BlLlxuICovXG5jbGFzcyBQYXJ0aXRpb25JbmRleFByb3ZpZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0YWNrLXNpbmdsZXRvbiBwcm92aWRlciwgY3JlYXRpbmcgaXQgaWYgaXQgZG9lcyBub3QgeWV0IGV4aXN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogQ29uc3RydWN0KTogUGFydGl0aW9uSW5kZXhQcm92aWRlciB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gICAgLy8gQSBmaXhlZCwgbmFtZXNwYWNlZCBpZCBtYWtlcyB0aGlzIGEgc3RhY2sgc2luZ2xldG9uOiBldmVyeSBjYWxsIHdpdGhpbiB0aGVcbiAgICAvLyBzYW1lIHN0YWNrIHJlc29sdmVzIHRvIHRoZSBzYW1lIGNoaWxkIHZpYSBgdHJ5RmluZENoaWxkYC5cbiAgICBjb25zdCBpZCA9ICdAYXdzLWNkay9hd3MtZ2x1ZS1hbHBoYS5QYXJ0aXRpb25JbmRleFByb3ZpZGVyJztcbiAgICByZXR1cm4gKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBQYXJ0aXRpb25JbmRleFByb3ZpZGVyKSA/PyBuZXcgUGFydGl0aW9uSW5kZXhQcm92aWRlcihzdGFjaywgaWQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uRXZlbnRIYW5kbGVyOiBsYW1iZGEuRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBpc0NvbXBsZXRlSGFuZGxlcjogbGFtYmRhLkZ1bmN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBjci5Qcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIFRoZSBoYW5kbGVyIHNvdXJjZSBsaXZlcyBpbiBgQGF3cy1jZGsvY3VzdG9tLXJlc291cmNlLWhhbmRsZXJzYCBhbmQgaXMgY29kZVxuICAgIC8vIGdlbmVyYXRlZCArIGFpcmxpZnRlZCBpbnRvIHRoaXMgcGFja2FnZSBhdCBidWlsZCB0aW1lIChzZWVcbiAgICAvLyBzY3JpcHRzL2FpcmxpZnQtY3VzdG9tLXJlc291cmNlLWhhbmRsZXJzLnNoKSwgZm9sbG93aW5nIHRoZSBwYXR0ZXJuIHVzZWQgYnkgdGhlXG4gICAgLy8gb3RoZXIgYWxwaGEgbW9kdWxlcyAoYXdzLWFtcGxpZnktYWxwaGEsIGF3cy1yZWRzaGlmdC1hbHBoYSkuIFRoZSBAYXdzLXNkay9jbGllbnQtZ2x1ZVxuICAgIC8vIG1vZHVsZSBpcyBwcm92aWRlZCBieSB0aGUgTGFtYmRhIHJ1bnRpbWUgcmF0aGVyIHRoYW4gYnVuZGxlZCBpbnRvIHRoZSBhc3NldC5cbiAgICB0aGlzLm9uRXZlbnRIYW5kbGVyID0gbmV3IFBhcnRpdGlvbkluZGV4T25FdmVudEZ1bmN0aW9uKHRoaXMsICdIYW5kbGVyJywge1xuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICB9KTtcbiAgICB0aGlzLmlzQ29tcGxldGVIYW5kbGVyID0gbmV3IFBhcnRpdGlvbkluZGV4SXNDb21wbGV0ZUZ1bmN0aW9uKHRoaXMsICdJc0NvbXBsZXRlJywge1xuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgJ1Byb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IHRoaXMub25FdmVudEhhbmRsZXIsXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogdGhpcy5pc0NvbXBsZXRlSGFuZGxlcixcbiAgICAgIHF1ZXJ5SW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMTApLFxuICAgICAgdG90YWxUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSB0b2tlbiB0byB3aXJlIGludG8gcGFydGl0aW9uIGluZGV4IGN1c3RvbSByZXNvdXJjZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNlcnZpY2VUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLnNlcnZpY2VUb2tlbjtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVNjaGVtYShjb2x1bW5zOiBDb2x1bW5bXSwgcGFydGl0aW9uS2V5cz86IENvbHVtbltdKTogdm9pZCB7XG4gIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgTm9Db2x1bW5zU3BlY2lmaWVkYCwgJ3lvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIGNvbHVtbiBmb3IgdGhlIHRhYmxlJyk7XG4gIH1cbiAgLy8gQ2hlY2sgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVtbiBhbmQgbm8gZHVwbGljYXRlZCBjb2x1bW4gbmFtZXMgb3IgcGFydGl0aW9uIGtleXMuXG4gIGNvbnN0IG5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIChjb2x1bW5zLmNvbmNhdChwYXJ0aXRpb25LZXlzIHx8IFtdKSkuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgIGlmIChuYW1lcy5oYXMoY29sdW1uLm5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YER1cGxpY2F0ZUNvbHVtbk5hbWVgLCBgY29sdW1uIG5hbWVzIGFuZCBwYXJ0aXRpb24ga2V5cyBtdXN0IGJlIHVuaXF1ZSwgYnV0IFxcJyR7Y29sdW1uLm5hbWV9XFwnIGlzIGR1cGxpY2F0ZWRgKTtcbiAgICB9XG4gICAgbmFtZXMuYWRkKGNvbHVtbi5uYW1lKTtcbiAgfSk7XG59XG4iXX0=
470
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRhYmxlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx5REFBMkM7QUFDM0MsaURBQWdEO0FBR2hELDJDQUEwSjtBQUMxSiw0RUFBcUU7QUFDckUsaUVBQW1EO0FBQ25ELDJDQUF1QztBQUd2QyxpRUFBeUc7QUFHekcsMklBQXFLO0FBcUxySzs7R0FFRztBQUNILE1BQXNCLFNBQVUsU0FBUSxlQUFROztJQUN2QyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQWdCOzs7Ozs7Ozs7O1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLFNBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxnQkFBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsWUFBYSxDQUFDLENBQUMsQ0FBQztRQUUvSCxPQUFPLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzlDLFFBQVE7WUFDUixTQUFTO1NBQ1YsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7Ozs7Ozs7Ozs7O1FBQ3BGLE1BQU0sTUFBTyxTQUFRLGVBQVE7WUFDWCxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUMxQixTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUM3QztRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzlCO0lBT0Q7O09BRUc7SUFDYSxRQUFRLENBQVk7SUFFcEM7O09BRUc7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RyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSw4QkFBdUIsQ0FBQyxJQUFBLHNCQUFHLEVBQUEscUJBQXFCLEVBQUUseURBQXlELE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLENBQUM7UUFDdEosQ0FBQztRQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2ZuVGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBLZXlHcmFudHMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB0eXBlICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHR5cGUgeyBJUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEFybkZvcm1hdCwgQ3VzdG9tUmVzb3VyY2UsIER1cmF0aW9uLCBGbiwgTGF6eSwgTmFtZXMsIFJlc291cmNlLCBTdGFjaywgVG9rZW4sIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGxpdCwgbWQ1aGFzaCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgRGF0YUZvcm1hdCB9IGZyb20gJy4vZGF0YS1mb3JtYXQnO1xuaW1wb3J0IHR5cGUgeyBJRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IGdlbmVyYXRlUGFydGl0aW9uUHJvamVjdGlvblBhcmFtZXRlcnMsIHR5cGUgUGFydGl0aW9uUHJvamVjdGlvbiB9IGZyb20gJy4vcGFydGl0aW9uLXByb2plY3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IFN0b3JhZ2VQYXJhbWV0ZXIgfSBmcm9tICcuL3N0b3JhZ2UtcGFyYW1ldGVyJztcbmltcG9ydCB7IFBhcnRpdGlvbkluZGV4SXNDb21wbGV0ZUZ1bmN0aW9uLCBQYXJ0aXRpb25JbmRleE9uRXZlbnRGdW5jdGlvbiB9IGZyb20gJy4uL2N1c3RvbS1yZXNvdXJjZS1oYW5kbGVycy9kaXN0L2F3cy1nbHVlLWFscGhhL3BhcnRpdGlvbi1pbmRleC1wcm92aWRlci5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgYSBQYXJ0aXRpb24gSW5kZXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFydGl0aW9uSW5kZXgge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhcnRpdGlvbiBpbmRleC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHlvdS5cbiAgICovXG4gIHJlYWRvbmx5IGluZGV4TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnRpdGlvbiBrZXkgbmFtZXMgdGhhdCBjb21wcmlzZSB0aGUgcGFydGl0aW9uXG4gICAqIGluZGV4LiBUaGUgbmFtZXMgbXVzdCBjb3JyZXNwb25kIHRvIGEgbmFtZSBpbiB0aGVcbiAgICogdGFibGUncyBwYXJ0aXRpb24ga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IGtleU5hbWVzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQXR0cmlidXRlcyB7XG4gIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGdlbmVyYXRlZCBieSBDREsuXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGF0YWJhc2UgaW4gd2hpY2ggdG8gc3RvcmUgdGhlIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2U6IElEYXRhYmFzZTtcblxuICAvKipcbiAgICogQ29sdW1ucyBvZiB0aGUgdGFibGUuXG4gICAqL1xuICByZWFkb25seSBjb2x1bW5zOiBDb2x1bW5bXTtcblxuICAvKipcbiAgICogUGFydGl0aW9uIGNvbHVtbnMgb2YgdGhlIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0YWJsZSBpcyBub3QgcGFydGl0aW9uZWRcbiAgICovXG4gIHJlYWRvbmx5IHBhcnRpdGlvbktleXM/OiBDb2x1bW5bXTtcblxuICAvKipcbiAgICogUGFydGl0aW9uIGluZGV4ZXMgb24gdGhlIHRhYmxlLiBBIG1heGltdW0gb2YgMyBpbmRleGVzXG4gICAqIGFyZSBhbGxvd2VkIG9uIGEgdGFibGUuIEtleXMgaW4gdGhlIGluZGV4IG11c3QgYmUgcGFydFxuICAgKiBvZiB0aGUgdGFibGUncyBwYXJ0aXRpb24ga2V5cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdGFibGUgaGFzIG5vIHBhcnRpdGlvbiBpbmRleGVzXG4gICAqL1xuICByZWFkb25seSBwYXJ0aXRpb25JbmRleGVzPzogUGFydGl0aW9uSW5kZXhbXTtcblxuICAvKipcbiAgICogU3RvcmFnZSB0eXBlIG9mIHRoZSB0YWJsZSdzIGRhdGEuXG4gICAqL1xuICByZWFkb25seSBkYXRhRm9ybWF0OiBEYXRhRm9ybWF0O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdGFibGUncyBkYXRhIGlzIGNvbXByZXNzZWQgb3Igbm90LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcHJlc3NlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSB0YWJsZSBkYXRhIGlzIHN0b3JlZCBpbiBzdWJkaXJlY3Rvcmllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JlZEFzU3ViRGlyZWN0b3JpZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIHBhcnRpdGlvbiBmaWx0ZXJpbmcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvZ2x1ZS1iZXN0LXByYWN0aWNlcy5odG1sI2dsdWUtYmVzdC1wcmFjdGljZXMtcGFydGl0aW9uLWluZGV4XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIHBhcmFtZXRlciBpcyBub3QgZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUGFydGl0aW9uRmlsdGVyaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHVzZXItc3VwcGxpZWQgcHJvcGVydGllcyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBwaHlzaWNhbCBzdG9yYWdlIG9mIHRoaXMgdGFibGUuIFRoZXNlIHByb3BlcnRpZXMgaGVscCBkZXNjcmliZSB0aGUgZm9ybWF0IG9mIHRoZSBkYXRhIHRoYXQgaXMgc3RvcmVkIHdpdGhpbiB0aGUgY3Jhd2xlZCBkYXRhIHNvdXJjZXMuXG4gICAqXG4gICAqIFRoZSBrZXkvdmFsdWUgcGFpcnMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBzdWJtaXR0ZWQgYXJlIG5vdCBsaW1pdGVkLCBob3dldmVyIHRoZWlyIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGd1YXJhbnRlZWQuXG4gICAqXG4gICAqIFNvbWUga2V5cyB3aWxsIGJlIGF1dG8tcG9wdWxhdGVkIGJ5IGdsdWUgY3Jhd2xlcnMsIGhvd2V2ZXIsIHlvdSBjYW4gb3ZlcnJpZGUgdGhlbSBieSBzcGVjaWZ5aW5nIHRoZSBrZXkgYW5kIHZhbHVlIGluIHRoaXMgcHJvcGVydHkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL3RhYmxlLXByb3BlcnRpZXMtY3Jhd2xlci5odG1sXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqICAgIGRlY2xhcmUgY29uc3QgZ2x1ZURhdGFiYXNlOiBnbHVlLklEYXRhYmFzZTtcbiAgICogICAgY29uc3QgdGFibGUgPSBuZXcgZ2x1ZS5TM1RhYmxlKHRoaXMsICdUYWJsZScsIHtcbiAgICogICAgICBzdG9yYWdlUGFyYW1ldGVyczogW1xuICAgKiAgICAgICAgICBnbHVlLlN0b3JhZ2VQYXJhbWV0ZXIuc2tpcEhlYWRlckxpbmVDb3VudCgxKSxcbiAgICogICAgICAgICAgZ2x1ZS5TdG9yYWdlUGFyYW1ldGVyLmNvbXByZXNzaW9uVHlwZShnbHVlLkNvbXByZXNzaW9uVHlwZS5HWklQKSxcbiAgICogICAgICAgICAgZ2x1ZS5TdG9yYWdlUGFyYW1ldGVyLmN1c3RvbSgnZm9vJywgJ2JhcicpLCAvLyBXaWxsIGhhdmUgbm8gZWZmZWN0XG4gICAqICAgICAgICAgIGdsdWUuU3RvcmFnZVBhcmFtZXRlci5jdXN0b20oJ3NlcGFyYXRvckNoYXInLCAnLCcpLCAvLyBXaWxsIGRlc2NyaWJlIHRoZSBzZXBhcmF0b3IgY2hhciB1c2VkIGluIHRoZSBkYXRhXG4gICAqICAgICAgICAgIGdsdWUuU3RvcmFnZVBhcmFtZXRlci5jdXN0b20oZ2x1ZS5TdG9yYWdlUGFyYW1ldGVycy5XUklURV9QQVJBTExFTCwgJ29mZicpLFxuICAgKiAgICAgIF0sXG4gICAqICAgICAgLy8gLi4uXG4gICAqICAgICAgZGF0YWJhc2U6IGdsdWVEYXRhYmFzZSxcbiAgICogICAgICBjb2x1bW5zOiBbe1xuICAgKiAgICAgICAgICBuYW1lOiAnY29sMScsXG4gICAqICAgICAgICAgIHR5cGU6IGdsdWUuU2NoZW1hLlNUUklORyxcbiAgICogICAgICB9XSxcbiAgICogICAgICBkYXRhRm9ybWF0OiBnbHVlLkRhdGFGb3JtYXQuQ1NWLFxuICAgKiAgICB9KTtcbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgcGFyYW1ldGVyIGlzIG5vdCBkZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlUGFyYW1ldGVycz86IFN0b3JhZ2VQYXJhbWV0ZXJbXTtcblxuICAvKipcbiAgICogVGhlIGtleS92YWx1ZSBwYWlycyBkZWZpbmUgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlLlxuICAgKiBUaGUga2V5L3ZhbHVlIHBhaXJzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgc3VibWl0dGVkIGFyZSBub3QgbGltaXRlZCwgaG93ZXZlciB0aGVpciBmdW5jdGlvbmFsaXR5IGlzIG5vdCBndWFyYW50ZWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWdsdWUtdGFibGUtdGFibGVpbnB1dC5odG1sI2Nmbi1nbHVlLXRhYmxlLXRhYmxlaW5wdXQtcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBwYXJhbWV0ZXIgaXMgbm90IGRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRhIHN0b3JlZCBpbiB0aGUgdGFibGUgaXMgZW5jcnlwdGVkLlxuICAgKlxuICAgKiBUaGlzIHNldHMgdGhlIGBoYXNfZW5jcnlwdGVkX2RhdGFgIHRhYmxlIHBhcmFtZXRlci4gQXRoZW5hIHJlYWRzIGl0IHdoZW5cbiAgICogcXVlcnlpbmcgY2xpZW50LXNpZGUgKENTRS1LTVMpIGVuY3J5cHRlZCBkYXRhc2V0czsgZm9yIHNlcnZlci1zaWRlXG4gICAqIGVuY3J5cHRlZCAoU1NFLVMzIC8gU1NFLUtNUykgb3IgdW5lbmNyeXB0ZWQgZGF0YSBpdCBoYXMgbm8gZWZmZWN0LCBzaW5jZVxuICAgKiBBbWF6b24gUzMgZGVjcnlwdHMgc2VydmVyLXNpZGUgZW5jcnlwdGVkIG9iamVjdHMgdHJhbnNwYXJlbnRseS5cbiAgICpcbiAgICogRG8gbm90IGFsc28gc2V0IGBoYXNfZW5jcnlwdGVkX2RhdGFgIHRocm91Z2ggYHBhcmFtZXRlcnNgIC0gdXNlIHRoaXNcbiAgICogcHJvcGVydHkgaW5zdGVhZC4gQSBjb25mbGljdGluZyB2YWx1ZSBpbiBgcGFyYW1ldGVyc2AgaXMgcmVqZWN0ZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvY3JlYXRpbmctdGFibGVzLWJhc2VkLW9uLWVuY3J5cHRlZC1kYXRhc2V0cy1pbi1zMy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGhhc0VuY3J5cHRlZERhdGE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGlzIHRhYmxlLlxuICAgKlxuICAgKiBQYXJ0aXRpb24gcHJvamVjdGlvbiBhbGxvd3MgQXRoZW5hIHRvIGF1dG9tYXRpY2FsbHkgYWRkIG5ldyBwYXJ0aXRpb25zXG4gICAqIHdpdGhvdXQgcmVxdWlyaW5nIGBBTFRFUiBUQUJMRSBBREQgUEFSVElUSU9OYCBzdGF0ZW1lbnRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL3BhcnRpdGlvbi1wcm9qZWN0aW9uLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwYXJ0aXRpb24gcHJvamVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcGFydGl0aW9uUHJvamVjdGlvbj86IFBhcnRpdGlvblByb2plY3Rpb247XG59XG5cbi8qKlxuICogQSBHbHVlIHRhYmxlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVGFibGUge1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB0YWJsZUFybjogc3RyaW5nKTogSVRhYmxlIHtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBGbi5zZWxlY3QoMSwgRm4uc3BsaXQoJy8nLCBTdGFjay5vZihzY29wZSkuc3BsaXRBcm4odGFibGVBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWUhKSk7XG5cbiAgICByZXR1cm4gVGFibGVCYXNlLmZyb21UYWJsZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7XG4gICAgICB0YWJsZUFybixcbiAgICAgIHRhYmxlTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgVGFibGUgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBpZC5cbiAgICogQHBhcmFtIGF0dHJzIEltcG9ydCBhdHRyaWJ1dGVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFRhYmxlQXR0cmlidXRlcyk6IElUYWJsZSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVGFibGUge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlQXJuID0gYXR0cnMudGFibGVBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVOYW1lID0gYXR0cnMudGFibGVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVSZXNvdXJjZTogQ2ZuVGFibGU7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBwYXJ0aXRpb25JbmRleGVzPzogUGFydGl0aW9uSW5kZXhbXTtcblxuICAvKipcbiAgICogRGF0YWJhc2UgdGhpcyB0YWJsZSBiZWxvbmdzIHRvLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFiYXNlOiBJRGF0YWJhc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSB0YWJsZSdzIGRhdGEgaXMgY29tcHJlc3NlZCBvciBub3QuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcHJlc3NlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogRm9ybWF0IG9mIHRoaXMgdGFibGUncyBkYXRhIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFGb3JtYXQ6IERhdGFGb3JtYXQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgdGFibGUncyBjb2x1bW5zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbHVtbnM6IENvbHVtbltdO1xuXG4gIC8qKlxuICAgKiBUaGlzIHRhYmxlJ3MgcGFydGl0aW9uIGtleXMgaWYgdGhlIHRhYmxlIGlzIHBhcnRpdGlvbmVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhcnRpdGlvbktleXM/OiBDb2x1bW5bXTtcblxuICAvKipcbiAgICogVGhlIHRhYmxlcycgc3RvcmFnZSBkZXNjcmlwdG9yIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RvcmFnZVBhcmFtZXRlcnM/OiBTdG9yYWdlUGFyYW1ldGVyW107XG5cbiAgLyoqXG4gICAqIFRoaXMgdGFibGUncyBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uIGlmIGVuYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFydGl0aW9uUHJvamVjdGlvbj86IFBhcnRpdGlvblByb2plY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZXMnIHByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1nbHVlLXRhYmxlLXRhYmxlaW5wdXQuaHRtbCNjZm4tZ2x1ZS10YWJsZS10YWJsZWlucHV0LXBhcmFtZXRlcnNcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRhIHN0b3JlZCBpbiB0aGUgdGFibGUgaXMgZW5jcnlwdGVkLiBFbWl0dGVkIGFzIHRoZVxuICAgKiBgaGFzX2VuY3J5cHRlZF9kYXRhYCB0YWJsZSBwYXJhbWV0ZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzRW5jcnlwdGVkRGF0YTogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGFydGl0aW9uIGluZGV4ZXMgbXVzdCBiZSBjcmVhdGVkIG9uZSBhdCBhIHRpbWUuIFRvIGF2b2lkXG4gICAqIHJhY2UgY29uZGl0aW9ucywgd2Ugc3RvcmUgdGhlIHJlc291cmNlIGFuZCBhZGQgZGVwZW5kZW5jaWVzXG4gICAqIGVhY2ggdGltZSBhIG5ldyBwYXJ0aXRpb24gaW5kZXggaXMgY3JlYXRlZC5cbiAgICovXG4gIHByaXZhdGUgcGFydGl0aW9uSW5kZXhDdXN0b21SZXNvdXJjZXM6IEN1c3RvbVJlc291cmNlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGFibGVCYXNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMudGFibGVOYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge30pLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhYmFzZSA9IHByb3BzLmRhdGFiYXNlO1xuICAgIHRoaXMuZGF0YUZvcm1hdCA9IHByb3BzLmRhdGFGb3JtYXQ7XG5cbiAgICB2YWxpZGF0ZVNjaGVtYShwcm9wcy5jb2x1bW5zLCBwcm9wcy5wYXJ0aXRpb25LZXlzKTtcbiAgICB0aGlzLmNvbHVtbnMgPSBwcm9wcy5jb2x1bW5zO1xuICAgIHRoaXMucGFydGl0aW9uS2V5cyA9IHByb3BzLnBhcnRpdGlvbktleXM7XG4gICAgdGhpcy5zdG9yYWdlUGFyYW1ldGVycyA9IHByb3BzLnN0b3JhZ2VQYXJhbWV0ZXJzO1xuICAgIHRoaXMucGFydGl0aW9uUHJvamVjdGlvbiA9IHByb3BzLnBhcnRpdGlvblByb2plY3Rpb247XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gcHJvcHMucGFyYW1ldGVycyA/PyB7fTtcblxuICAgIHRoaXMuaGFzRW5jcnlwdGVkRGF0YSA9IHByb3BzLmhhc0VuY3J5cHRlZERhdGEgPz8gdHJ1ZTtcbiAgICB0aGlzLnJlY29uY2lsZUhhc0VuY3J5cHRlZERhdGEoKTtcblxuICAgIHRoaXMuY29tcHJlc3NlZCA9IHByb3BzLmNvbXByZXNzZWQgPz8gZmFsc2U7XG5cbiAgICB0aGlzLnZhbGlkYXRlQW5kR2VuZXJhdGVQYXJ0aXRpb25Qcm9qZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuICBwdWJsaWMgYWJzdHJhY3QgZ3JhbnRXcml0ZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbiAgcHVibGljIGFic3RyYWN0IGdyYW50UmVhZFdyaXRlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBBZGQgYSBwYXJ0aXRpb24gaW5kZXggdG8gdGhlIHRhYmxlLiBZb3UgY2FuIGhhdmUgYSBtYXhpbXVtIG9mIDMgcGFydGl0aW9uXG4gICAqIGluZGV4ZXMgdG8gYSB0YWJsZS4gUGFydGl0aW9uIGluZGV4IGtleXMgbXVzdCBiZSBhIHN1YnNldCBvZiB0aGUgdGFibGUnc1xuICAgKiBwYXJ0aXRpb24ga2V5cy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvcGFydGl0aW9uLWluZGV4ZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIGFkZFBhcnRpdGlvbkluZGV4KGluZGV4OiBQYXJ0aXRpb25JbmRleCkge1xuICAgIGNvbnN0IG51bVBhcnRpdGlvbnMgPSB0aGlzLnBhcnRpdGlvbkluZGV4Q3VzdG9tUmVzb3VyY2VzLmxlbmd0aDtcbiAgICBpZiAobnVtUGFydGl0aW9ucyA+PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBNYXhQYXJ0aXRpb25JbmRleGVzRXhjZWVkZWRgLCAnTWF4aW11bSBudW1iZXIgb2YgcGFydGl0aW9uIGluZGV4ZXMgYWxsb3dlZCBpcyAzJywgdGhpcyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVQYXJ0aXRpb25JbmRleChpbmRleCk7XG5cbiAgICBjb25zdCBpbmRleE5hbWUgPSBpbmRleC5pbmRleE5hbWUgPz8gdGhpcy5nZW5lcmF0ZUluZGV4TmFtZShpbmRleC5rZXlOYW1lcyk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBQYXJ0aXRpb25JbmRleFByb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMpO1xuXG4gICAgLy8gVGhlIGdyYW50cyBhcmUgaWRlbnRpY2FsIGZvciBldmVyeSBpbmRleCBvbiB0aGlzIHRhYmxlLCBzbyBvbmx5IGFkZCB0aGVtXG4gICAgLy8gb25jZS5cbiAgICBpZiAobnVtUGFydGl0aW9ucyA9PT0gMCkge1xuICAgICAgLy8gQWRkIHNjb3BlZCBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSdzIEdsdWUgcmVzb3VyY2VzXG4gICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hd3NnbHVlLmh0bWxcbiAgICAgIGNvbnN0IHJlc291cmNlcyA9IFt0aGlzLnRhYmxlQXJuLCB0aGlzLmRhdGFiYXNlLmRhdGFiYXNlQXJuLCB0aGlzLmRhdGFiYXNlLmNhdGFsb2cuY2F0YWxvZ0Fybl07XG5cbiAgICAgIC8vIFRoZSBjYXRhbG9nJ3MgZW5jcnlwdGlvbiBpcyBmaXhlZCBhdCBjb25zdHJ1Y3Rpb24sIHNvIHRoZSBlbmNyeXB0aW9uIGtleVxuICAgICAgLy8gKGlmIGFueSkgaXMga25vd24gaGVyZS4gR3JhbnQgdGhlIGhhbmRsZXJzIGFjY2VzcyB0byBpdC4gTm8tb3Agd2hlbiB0aGVcbiAgICAgIC8vIGNhdGFsb2cgdXNlcyBhbiBBV1MtbWFuYWdlZCBrZXkgb3Igbm8gZW5jcnlwdGlvbi5cbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZGF0YWJhc2UuY2F0YWxvZy5lbmNyeXB0aW9uS2V5O1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCBncmFudHMgPSBLZXlHcmFudHMuZnJvbUtleShrZXkpO1xuICAgICAgICBncmFudHMuZGVjcnlwdChwcm92aWRlci5vbkV2ZW50SGFuZGxlcik7XG4gICAgICAgIGdyYW50cy5kZWNyeXB0KHByb3ZpZGVyLmlzQ29tcGxldGVIYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgLy8gQm90aCBoYW5kbGVycyBjcmVhdGUsIGRlbGV0ZSwgYW5kIGluc3BlY3QgaW5kZXhlczogb25FdmVudCBjcmVhdGVzL2RlbGV0ZXMgb25cbiAgICAgIC8vIENyZWF0ZS9EZWxldGUvVXBkYXRlLCBhbmQgaXNDb21wbGV0ZSByZWNyZWF0ZXMgdGhlIGluZGV4IHdoaWxlIGRyaXZpbmcgYVxuICAgICAgLy8ga2V5LWNoYW5nZSB1cGRhdGUgKGRlbGV0ZSAtPiByZWNyZWF0ZSAtPiBBQ1RJVkUpLiBVcGRhdGVUYWJsZS9HZXRUYWJsZSBhcmVcbiAgICAgIC8vIHJlcXVpcmVkIGJ5IHRoZSBDcmVhdGVQYXJ0aXRpb25JbmRleC9EZWxldGVQYXJ0aXRpb25JbmRleCBBUElzLlxuICAgICAgY29uc3QgYWN0aW9ucyA9IFtcbiAgICAgICAgJ2dsdWU6R2V0UGFydGl0aW9uSW5kZXhlcycsXG4gICAgICAgICdnbHVlOkNyZWF0ZVBhcnRpdGlvbkluZGV4JyxcbiAgICAgICAgJ2dsdWU6RGVsZXRlUGFydGl0aW9uSW5kZXgnLFxuICAgICAgICAnZ2x1ZTpHZXRUYWJsZScsXG4gICAgICAgICdnbHVlOlVwZGF0ZVRhYmxlJyxcbiAgICAgIF07XG4gICAgICBwcm92aWRlci5vbkV2ZW50SGFuZGxlci5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoeyBhY3Rpb25zLCByZXNvdXJjZXMgfSkpO1xuICAgICAgcHJvdmlkZXIuaXNDb21wbGV0ZUhhbmRsZXIuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHsgYWN0aW9ucywgcmVzb3VyY2VzIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0aXRpb25JbmRleEN1c3RvbVJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsIGBwYXJ0aXRpb24taW5kZXgtJHtpbmRleE5hbWV9YCwge1xuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpHbHVlUGFydGl0aW9uSW5kZXgnLFxuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIERhdGFiYXNlTmFtZTogdGhpcy5kYXRhYmFzZS5kYXRhYmFzZU5hbWUsXG4gICAgICAgIFRhYmxlTmFtZTogdGhpcy50YWJsZU5hbWUsXG4gICAgICAgIEluZGV4TmFtZTogaW5kZXhOYW1lLFxuICAgICAgICBLZXlzOiBpbmRleC5rZXlOYW1lcyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFbnN1cmUgSUFNIHBvbGljaWVzIGFyZSBjcmVhdGVkIGJlZm9yZSB0aGUgY3VzdG9tIHJlc291cmNlIGludm9rZXMgdGhlIGhhbmRsZXJzXG4gICAgcGFydGl0aW9uSW5kZXhDdXN0b21SZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kocHJvdmlkZXIub25FdmVudEhhbmRsZXIucm9sZSEpO1xuICAgIHBhcnRpdGlvbkluZGV4Q3VzdG9tUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHByb3ZpZGVyLmlzQ29tcGxldGVIYW5kbGVyLnJvbGUhKTtcblxuICAgIC8vIERlcGVuZCBvbiBwcmV2aW91cyBwYXJ0aXRpb24gaW5kZXggdG8gYXZvaWQgcmFjZSBjb25kaXRpb25cbiAgICBpZiAobnVtUGFydGl0aW9ucyA+IDApIHtcbiAgICAgIHBhcnRpdGlvbkluZGV4Q3VzdG9tUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMucGFydGl0aW9uSW5kZXhDdXN0b21SZXNvdXJjZXNbbnVtUGFydGl0aW9ucy0xXSk7XG4gICAgfVxuICAgIHRoaXMucGFydGl0aW9uSW5kZXhDdXN0b21SZXNvdXJjZXMucHVzaChwYXJ0aXRpb25JbmRleEN1c3RvbVJlc291cmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVJbmRleE5hbWUoa2V5czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IG1heEluZGV4TGVuZ3RoID0gODA7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChrZXlzKSB8fCBrZXlzLnNvbWUoayA9PiBUb2tlbi5pc1VucmVzb2x2ZWQoaykpKSB7XG4gICAgICAvLyBUaGUgaW5kZXggbmFtZSBpcyBkZXJpdmVkIGZyb20gdGhlIGtleSBuYW1lcywgc28gdG9rZW5pemVkIGtleXMgbGVhdmVcbiAgICAgIC8vIG5vdGhpbmcgc3RhYmxlIHRvIGdlbmVyYXRlIGZyb206IGFueSBhdXRvLWdlbmVyYXRlZCBuYW1lIHdvdWxkIGhhdmUgdG9cbiAgICAgIC8vIGZhbGwgYmFjayB0byB0aGUgaW5kZXgncyBwb3NpdGlvbiBvbiB0aGUgdGFibGUsIHdoaWNoIHNoaWZ0cyBpZiBpbmRleGVzXG4gICAgICAvLyBhcmUgYWRkZWQsIHJlbW92ZWQsIG9yIHJlb3JkZXJlZCAtIHNpbGVudGx5IHJlcGxhY2luZyBpbmRleGVzIHRoYXQgZGlkXG4gICAgICAvLyBub3QgYWN0dWFsbHkgY2hhbmdlLiBSZXF1aXJlIGFuIGV4cGxpY2l0LCBzdGFibGUgbmFtZSBpbnN0ZWFkLlxuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YFRva2VuaXplZEluZGV4S2V5c1JlcXVpcmVOYW1lYCxcbiAgICAgICAgJ2Nhbm5vdCBhdXRvLWdlbmVyYXRlIGEgc3RhYmxlIHBhcnRpdGlvbiBpbmRleCBuYW1lIGZyb20gdG9rZW5pemVkIGtleSBuYW1lczsgJyArXG4gICAgICAgICAgJ3NwZWNpZnkgYGluZGV4TmFtZWAgZXhwbGljaXRseSB3aGVuIGluZGV4IGtleXMgYXJlIG5vdCBrbm93biBhdCBzeW50aGVzaXMgdGltZScsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBwcmVmaXggPSBrZXlzLmpvaW4oJy0nKSArICctJztcbiAgICBjb25zdCB1bmlxdWVJZCA9IE5hbWVzLnVuaXF1ZUlkKHRoaXMpO1xuICAgIGlmIChwcmVmaXgubGVuZ3RoIDwgbWF4SW5kZXhMZW5ndGgpIHtcbiAgICAgIC8vIENvbW1vbiBjYXNlOiB0cmltIHRoZSB1bmlxdWVJZCB0YWlsIHNvIHRoZSB3aG9sZSBuYW1lIGZpdHMgdW5kZXIgdGhlIGNhcC5cbiAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBNYXRoLm1heCgwLCB1bmlxdWVJZC5sZW5ndGggLSAobWF4SW5kZXhMZW5ndGggLSBwcmVmaXgubGVuZ3RoKSk7XG4gICAgICByZXR1cm4gcHJlZml4ICsgdW5pcXVlSWQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgpO1xuICAgIH1cbiAgICAvLyBUaGUgam9pbmVkIGtleSBuYW1lcyBhbG9uZSBleGNlZWQgdGhlIGJ1ZGdldCAobG9uZyBrZXkgbmFtZXMpLCBzbyB0cmltbWluZ1xuICAgIC8vIHRoZSB1bmlxdWVJZCBpcyBub3QgZW5vdWdoLiBUcnVuY2F0ZSB0aGUgcHJlZml4IGFuZCBhcHBlbmQgYSBoYXNoIG9mIHRoZVxuICAgIC8vIHRhYmxlIHBhdGggcGx1cyB0aGUgZnVsbCBrZXkgbGlzdCwgc28gdHdvIGRpZmZlcmVudCAobG9uZykga2V5IHNldHMgY2Fubm90XG4gICAgLy8gY29sbGlkZSBhZnRlciB0cnVuY2F0aW9uLlxuICAgIGNvbnN0IGhhc2ggPSBtZDVoYXNoKHVuaXF1ZUlkICsgJy0nICsga2V5cy5qb2luKCctJykpLnNsaWNlKDAsIDgpO1xuICAgIHJldHVybiBwcmVmaXguc3Vic3RyaW5nKDAsIG1heEluZGV4TGVuZ3RoIC0gaGFzaC5sZW5ndGggLSAxKSArICctJyArIGhhc2g7XG4gIH1cblxuICAvKipcbiAgICogUmVjb25jaWxlIGEgYGhhc19lbmNyeXB0ZWRfZGF0YWAgdmFsdWUgc3VwcGxpZWQgdGhyb3VnaCB0aGUgZnJlZS1mb3JtXG4gICAqIGBwYXJhbWV0ZXJzYCBtYXAgd2l0aCB0aGUgdHlwZWQgYGhhc0VuY3J5cHRlZERhdGFgIHByb3BlcnR5LlxuICAgKlxuICAgKiBgaGFzX2VuY3J5cHRlZF9kYXRhYCBpcyBtYW5hZ2VkIGJ5IHRoaXMgY29uc3RydWN0IGFuZCBlbWl0dGVkIGF1dGhvcml0YXRpdmVseVxuICAgKiBmcm9tIGBoYXNFbmNyeXB0ZWREYXRhYC4gU3VwcGx5aW5nIGl0IHRocm91Z2ggYHBhcmFtZXRlcnNgIGFzIHdlbGwgaXMgb25seVxuICAgKiB0b2xlcmF0ZWQgd2hlbiB0aGUgdmFsdWUgaXMgaWRlbnRpY2FsOyBhIGRpZmZlcmluZyAob3IgdW5yZXNvbHZlZCkgdmFsdWUgaXNcbiAgICogcmVqZWN0ZWQgc28gdGhlIHR3byBpbnB1dHMgY2FuIG5ldmVyIHNpbGVudGx5IGRpc2FncmVlLiBPbiBzdWNjZXNzIHRoZSBrZXkgaXNcbiAgICogcmVtb3ZlZCBmcm9tIHRoZSBmcmVlLWZvcm0gbWFwIHNvIHRoZSBtYW5hZ2VkIHZhbHVlIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mXG4gICAqIHRydXRoLlxuICAgKi9cbiAgcHJpdmF0ZSByZWNvbmNpbGVIYXNFbmNyeXB0ZWREYXRhKCk6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9ICdoYXNfZW5jcnlwdGVkX2RhdGEnO1xuICAgIGlmICghKGtleSBpbiB0aGlzLnBhcmFtZXRlcnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN1cHBsaWVkID0gdGhpcy5wYXJhbWV0ZXJzW2tleV07XG4gICAgY29uc3QgbWFuYWdlZCA9IFN0cmluZyh0aGlzLmhhc0VuY3J5cHRlZERhdGEpO1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoc3VwcGxpZWQpIHx8IHN1cHBsaWVkICE9PSBtYW5hZ2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgSGFzRW5jcnlwdGVkRGF0YUNvbmZsaWN0YCxcbiAgICAgICAgYHRoZSBcXGAke2tleX1cXGAgdGFibGUgcGFyYW1ldGVyIGlzIG1hbmFnZWQgYnkgdGhlIFxcYGhhc0VuY3J5cHRlZERhdGFcXGAgcHJvcGVydHk7IGAgK1xuICAgICAgICAgIGByZW1vdmUgaXQgZnJvbSBcXGBwYXJhbWV0ZXJzXFxgIGFuZCB1c2UgdGhlIGJvb2xlYW4gXFxgaGFzRW5jcnlwdGVkRGF0YVxcYCBwcm9wZXJ0eSBpbnN0ZWFkIChnb3QgJHtKU09OLnN0cmluZ2lmeShzdXBwbGllZCl9LCBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KG1hbmFnZWQpfSlgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG4gICAgZGVsZXRlIHRoaXMucGFyYW1ldGVyc1trZXldO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBhcnRpdGlvbkluZGV4KGluZGV4OiBQYXJ0aXRpb25JbmRleCkge1xuICAgIGlmIChpbmRleC5pbmRleE5hbWUgIT09IHVuZGVmaW5lZCAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKGluZGV4LmluZGV4TmFtZSkgJiYgKGluZGV4LmluZGV4TmFtZS5sZW5ndGggPCAxIHx8IGluZGV4LmluZGV4TmFtZS5sZW5ndGggPiAyNTUpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBJbmRleE5hbWVMZW5ndGhJbnZhbGlkYCwgYEluZGV4IG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NSBjaGFyYWN0ZXJzLCBidXQgZ290ICR7aW5kZXguaW5kZXhOYW1lLmxlbmd0aH1gLCB0aGlzKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnBhcnRpdGlvbktleXMgfHwgdGhpcy5wYXJ0aXRpb25LZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgTm9QYXJ0aXRpb25LZXlzRm9ySW5kZXhgLCAnVGhlIHRhYmxlIG11c3QgaGF2ZSBwYXJ0aXRpb24ga2V5cyB0byBjcmVhdGUgYSBwYXJ0aXRpb24gaW5kZXgnLCB0aGlzKTtcbiAgICB9XG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoaW5kZXgua2V5TmFtZXMpKSB7XG4gICAgICBjb25zdCBrZXlOYW1lcyA9IHRoaXMucGFydGl0aW9uS2V5cy5tYXAocGsgPT4gcGsubmFtZSk7XG4gICAgICBjb25zdCBjb25jcmV0ZUtleXMgPSBpbmRleC5rZXlOYW1lcy5maWx0ZXIoayA9PiAhVG9rZW4uaXNVbnJlc29sdmVkKGspKTtcbiAgICAgIGlmIChjb25jcmV0ZUtleXMubGVuZ3RoID4gMCAmJiAhY29uY3JldGVLZXlzLmV2ZXJ5KGsgPT4ga2V5TmFtZXMuaW5jbHVkZXMoaykpKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YEluZGV4S2V5c05vdFBhcnRpdGlvbktleXNgLCBgQWxsIGluZGV4IGtleXMgbXVzdCBhbHNvIGJlIHBhcnRpdGlvbiBrZXlzLiBHb3QgJHtpbmRleC5rZXlOYW1lc30gYnV0IHBhcnRpdGlvbiBrZXkgbmFtZXMgYXJlICR7a2V5TmFtZXN9YCwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb24gYW5kIG1lcmdlIGdlbmVyYXRlZCBwYXJhbWV0ZXJzIGludG8gdGhpcy5wYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFuZEdlbmVyYXRlUGFydGl0aW9uUHJvamVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGFydGl0aW9uUHJvamVjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgcGFydGl0aW9uIGtleXMgZXhpc3RcbiAgICBpZiAoIXRoaXMucGFydGl0aW9uS2V5cyB8fCB0aGlzLnBhcnRpdGlvbktleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgTm9QYXJ0aXRpb25LZXlzRm9yUHJvamVjdGlvbmAsXG4gICAgICAgICdUaGUgdGFibGUgbXVzdCBoYXZlIHBhcnRpdGlvbiBrZXlzIHRvIHVzZSBwYXJ0aXRpb24gcHJvamVjdGlvbicsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRpdGlvbktleU5hbWVzID0gdGhpcy5wYXJ0aXRpb25LZXlzLm1hcChwayA9PiBway5uYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIGVhY2ggcGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvblxuICAgIGZvciAoY29uc3QgW2NvbHVtbk5hbWUsIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wYXJ0aXRpb25Qcm9qZWN0aW9uKSkge1xuICAgICAgLy8gVmFsaWRhdGUgdGhhdCBjb2x1bW4gaXMgYSBwYXJ0aXRpb24ga2V5XG4gICAgICBpZiAoIXBhcnRpdGlvbktleU5hbWVzLmluY2x1ZGVzKGNvbHVtbk5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgbGl0YFByb2plY3Rpb25Db2x1bW5Ob3RQYXJ0aXRpb25LZXlgLFxuICAgICAgICAgIGBQYXJ0aXRpb24gcHJvamVjdGlvbiBjb2x1bW4gXCIke2NvbHVtbk5hbWV9XCIgbXVzdCBiZSBhIHBhcnRpdGlvbiBrZXkuIGAgK1xuICAgICAgICAgIGBQYXJ0aXRpb24ga2V5cyBhcmU6ICR7cGFydGl0aW9uS2V5TmFtZXMuam9pbignLCAnKX1gLFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEdlbmVyYXRlIENsb3VkRm9ybWF0aW9uIHBhcmFtZXRlcnNcbiAgICAgIGNvbnN0IGdlbmVyYXRlZFBhcmFtcyA9IGdlbmVyYXRlUGFydGl0aW9uUHJvamVjdGlvblBhcmFtZXRlcnMoY29sdW1uTmFtZSwgY29uZmlnKTtcblxuICAgICAgLy8gQ2hlY2sgZm9yIGNvbmZsaWN0cyB3aXRoIG1hbnVhbGx5IHNwZWNpZmllZCBwYXJhbWV0ZXJzXG4gICAgICBjb25zdCBjb25mbGljdGluZ0tleXMgPSBPYmplY3Qua2V5cyhnZW5lcmF0ZWRQYXJhbXMpLmZpbHRlcihrZXkgPT4ga2V5IGluIHRoaXMucGFyYW1ldGVycyk7XG4gICAgICBpZiAoY29uZmxpY3RpbmdLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBsaXRgUHJvamVjdGlvblBhcmFtZXRlcnNDb25mbGljdGAsXG4gICAgICAgICAgYFBhcnRpdGlvbiBwcm9qZWN0aW9uIHBhcmFtZXRlcnMgY29uZmxpY3Qgd2l0aCBtYW51YWxseSBzcGVjaWZpZWQgcGFyYW1ldGVyczogJHtjb25mbGljdGluZ0tleXMuam9pbignLCAnKX0uIGAgK1xuICAgICAgICAgICdVc2UgdGhlIHBhcnRpdGlvblByb2plY3Rpb24gcHJvcGVydHkgaW5zdGVhZCBvZiBtYW51YWxseSBzcGVjaWZ5aW5nIHByb2plY3Rpb24gcGFyYW1ldGVycy4nLFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIE1lcmdlIGludG8gdGhpcy5wYXJhbWV0ZXJzXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMucGFyYW1ldGVycywgZ2VuZXJhdGVkUGFyYW1zKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgY29uZmxpY3Qgd2l0aCBwcm9qZWN0aW9uLmVuYWJsZWRcbiAgICBpZiAoJ3Byb2plY3Rpb24uZW5hYmxlZCcgaW4gdGhpcy5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgUHJvamVjdGlvbkVuYWJsZWRDb25mbGljdGAsXG4gICAgICAgICdQYXJhbWV0ZXIgXCJwcm9qZWN0aW9uLmVuYWJsZWRcIiBjb25mbGljdHMgd2l0aCBwYXJ0aXRpb25Qcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb24uICcgK1xuICAgICAgICAnVXNlIHRoZSBwYXJ0aXRpb25Qcm9qZWN0aW9uIHByb3BlcnR5IGluc3RlYWQgb2YgbWFudWFsbHkgc3BlY2lmeWluZyBwcm9qZWN0aW9uLmVuYWJsZWQuJyxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRW5hYmxlIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGdsb2JhbGx5XG4gICAgdGhpcy5wYXJhbWV0ZXJzWydwcm9qZWN0aW9uLmVuYWJsZWQnXSA9ICd0cnVlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gaWRlbnRpdHkgY3VzdG9tIHBlcm1pc3Npb25zIG9uIHRoaXMgdGFibGUuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBsb3ctbGV2ZWwgZXNjYXBlIGhhdGNoOiB0aGUgYGFjdGlvbnNgIGFyZSBhcHBsaWVkIHZlcmJhdGltLFxuICAgKiBzY29wZWQgdG8gdGhpcyB0YWJsZSdzIEFSTi4gUHJlZmVyIHRoZSBpbnRlbnQtYmFzZWQgYGdyYW50UmVhZGAgL1xuICAgKiBgZ3JhbnRXcml0ZWAgLyBgZ3JhbnRSZWFkV3JpdGVgIG1ldGhvZHMsIHdoaWNoIGdyYW50IGEgY3VyYXRlZCBzZXQgb2ZcbiAgICogYWN0aW9ucyBhbmQgYWxzbyBjb3ZlciB0aGUgdW5kZXJseWluZyBTMyBkYXRhLiBPbmx5IHBhc3MgdGhlIHNwZWNpZmljXG4gICAqIGFjdGlvbnMgdGhlIGdyYW50ZWUgbmVlZHMgLSBhdm9pZCBzZXJ2aWNlIHdpbGRjYXJkcyBzdWNoIGFzIGBnbHVlOipgLlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgdGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyB0aGUgc2V0IG9mIEdsdWUgYWN0aW9ucyB0byBhbGxvdyAoZm9yIGV4YW1wbGUgYGdsdWU6R2V0VGFibGVgKVxuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCBhY3Rpb25zOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMudGFibGVBcm5dLFxuICAgICAgYWN0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gaWRlbnRpdHkgY3VzdG9tIHBlcm1pc3Npb25zIG9uIHRoaXMgdGFibGUgQU5EIGl0cyBwYXJlbnRcbiAgICogY2F0YWxvZyBhbmQgZGF0YWJhc2UuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBsb3ctbGV2ZWwgZXNjYXBlIGhhdGNoIGZvciBhY3Rpb25zIChzdWNoIGFzIGNlcnRhaW4gTGFrZVxuICAgKiBGb3JtYXRpb24gb3IgY3Jhd2xlciBvcGVyYXRpb25zKSB0aGF0IG11c3QgYmUgYXV0aG9yaXplZCBhZ2FpbnN0IHRoZVxuICAgKiBjYXRhbG9nIGFuZCBkYXRhYmFzZSBpbiBhZGRpdGlvbiB0byB0aGUgdGFibGUuIFRoZSBgYWN0aW9uc2AgYXJlIGFwcGxpZWRcbiAgICogdmVyYmF0aW0gdG8gYWxsIHRocmVlIEFSTnMgKHRhYmxlLCBjYXRhbG9nLCBkYXRhYmFzZSksIHNvIHNjb3BlIHRoZW1cbiAgICogdGlnaHRseTogcGFzcyBvbmx5IHRoZSBzcGVjaWZpYyBhY3Rpb25zIHRoZSBncmFudGVlIG5lZWRzIGFuZCBhdm9pZFxuICAgKiBzZXJ2aWNlIHdpbGRjYXJkcyBzdWNoIGFzIGBnbHVlOipgLCB3aGljaCB3b3VsZCBncmFudCBicm9hZCBhY2Nlc3MgYWNyb3NzXG4gICAqIGV2ZXJ5IHJlc291cmNlIGluIHRoZSBjYXRhbG9nIGFuZCBkYXRhYmFzZS5cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIHRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgdGhlIHNldCBvZiBHbHVlIGFjdGlvbnMgdG8gYWxsb3cgKGZvciBleGFtcGxlIGBnbHVlOkdldFRhYmxlYClcbiAgICovXG4gIHB1YmxpYyBncmFudFRvVW5kZXJseWluZ1Jlc291cmNlcyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgYWN0aW9uczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICByZXNvdXJjZUFybnM6IFtcbiAgICAgICAgdGhpcy50YWJsZUFybixcbiAgICAgICAgdGhpcy5kYXRhYmFzZS5jYXRhbG9nLmNhdGFsb2dBcm4sXG4gICAgICAgIHRoaXMuZGF0YWJhc2UuZGF0YWJhc2VBcm4sXG4gICAgICBdLFxuICAgICAgYWN0aW9ucyxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgc3RhY2stc2luZ2xldG9uIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlciB0aGF0IG1hbmFnZXMgR2x1ZSBwYXJ0aXRpb24gaW5kZXhlcy5cbiAqXG4gKiBBbGwgcGFydGl0aW9uLWluZGV4ZWQgdGFibGVzIGluIGEgc3RhY2sgc2hhcmUgYSBzaW5nbGUgcHJvdmlkZXIgKGFuZCBpdHMgdHdvXG4gKiBMYW1iZGEgaGFuZGxlcnMpIHRvIGF2b2lkIHByb3Zpc2lvbmluZyBhIHByb3ZpZGVyIGZyYW1ld29yayBwZXIgdGFibGUuIFRoZVxuICogcHJvdmlkZXIgYW5kIGhhbmRsZXJzIGFyZSBncm91cGVkIHVuZGVyIHRoaXMgc2luZ2xlIGNvbnN0cnVjdCBzbyBvbmx5IG9uZVxuICogaWQgaXMgcGxhY2VkIGF0IHN0YWNrIHNjb3BlLlxuICovXG5jbGFzcyBQYXJ0aXRpb25JbmRleFByb3ZpZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0YWNrLXNpbmdsZXRvbiBwcm92aWRlciwgY3JlYXRpbmcgaXQgaWYgaXQgZG9lcyBub3QgeWV0IGV4aXN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogQ29uc3RydWN0KTogUGFydGl0aW9uSW5kZXhQcm92aWRlciB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gICAgLy8gQSBmaXhlZCwgbmFtZXNwYWNlZCBpZCBtYWtlcyB0aGlzIGEgc3RhY2sgc2luZ2xldG9uOiBldmVyeSBjYWxsIHdpdGhpbiB0aGVcbiAgICAvLyBzYW1lIHN0YWNrIHJlc29sdmVzIHRvIHRoZSBzYW1lIGNoaWxkIHZpYSBgdHJ5RmluZENoaWxkYC5cbiAgICBjb25zdCBpZCA9ICdAYXdzLWNkay9hd3MtZ2x1ZS1hbHBoYS5QYXJ0aXRpb25JbmRleFByb3ZpZGVyJztcbiAgICByZXR1cm4gKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBQYXJ0aXRpb25JbmRleFByb3ZpZGVyKSA/PyBuZXcgUGFydGl0aW9uSW5kZXhQcm92aWRlcihzdGFjaywgaWQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uRXZlbnRIYW5kbGVyOiBsYW1iZGEuRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBpc0NvbXBsZXRlSGFuZGxlcjogbGFtYmRhLkZ1bmN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBjci5Qcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIFRoZSBoYW5kbGVyIHNvdXJjZSBsaXZlcyBpbiBgQGF3cy1jZGsvY3VzdG9tLXJlc291cmNlLWhhbmRsZXJzYCBhbmQgaXMgY29kZVxuICAgIC8vIGdlbmVyYXRlZCArIGFpcmxpZnRlZCBpbnRvIHRoaXMgcGFja2FnZSBhdCBidWlsZCB0aW1lIChzZWVcbiAgICAvLyBzY3JpcHRzL2FpcmxpZnQtY3VzdG9tLXJlc291cmNlLWhhbmRsZXJzLnNoKSwgZm9sbG93aW5nIHRoZSBwYXR0ZXJuIHVzZWQgYnkgdGhlXG4gICAgLy8gb3RoZXIgYWxwaGEgbW9kdWxlcyAoYXdzLWFtcGxpZnktYWxwaGEsIGF3cy1yZWRzaGlmdC1hbHBoYSkuIFRoZSBAYXdzLXNkay9jbGllbnQtZ2x1ZVxuICAgIC8vIG1vZHVsZSBpcyBwcm92aWRlZCBieSB0aGUgTGFtYmRhIHJ1bnRpbWUgcmF0aGVyIHRoYW4gYnVuZGxlZCBpbnRvIHRoZSBhc3NldC5cbiAgICB0aGlzLm9uRXZlbnRIYW5kbGVyID0gbmV3IFBhcnRpdGlvbkluZGV4T25FdmVudEZ1bmN0aW9uKHRoaXMsICdIYW5kbGVyJywge1xuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICB9KTtcbiAgICB0aGlzLmlzQ29tcGxldGVIYW5kbGVyID0gbmV3IFBhcnRpdGlvbkluZGV4SXNDb21wbGV0ZUZ1bmN0aW9uKHRoaXMsICdJc0NvbXBsZXRlJywge1xuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgJ1Byb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IHRoaXMub25FdmVudEhhbmRsZXIsXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogdGhpcy5pc0NvbXBsZXRlSGFuZGxlcixcbiAgICAgIHF1ZXJ5SW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMTApLFxuICAgICAgdG90YWxUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSB0b2tlbiB0byB3aXJlIGludG8gcGFydGl0aW9uIGluZGV4IGN1c3RvbSByZXNvdXJjZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNlcnZpY2VUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLnNlcnZpY2VUb2tlbjtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVNjaGVtYShjb2x1bW5zOiBDb2x1bW5bXSwgcGFydGl0aW9uS2V5cz86IENvbHVtbltdKTogdm9pZCB7XG4gIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgTm9Db2x1bW5zU3BlY2lmaWVkYCwgJ3lvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIGNvbHVtbiBmb3IgdGhlIHRhYmxlJyk7XG4gIH1cbiAgLy8gQ2hlY2sgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVtbiBhbmQgbm8gZHVwbGljYXRlZCBjb2x1bW4gbmFtZXMgb3IgcGFydGl0aW9uIGtleXMuXG4gIGNvbnN0IG5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIChjb2x1bW5zLmNvbmNhdChwYXJ0aXRpb25LZXlzIHx8IFtdKSkuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgIGlmIChuYW1lcy5oYXMoY29sdW1uLm5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YER1cGxpY2F0ZUNvbHVtbk5hbWVgLCBgY29sdW1uIG5hbWVzIGFuZCBwYXJ0aXRpb24ga2V5cyBtdXN0IGJlIHVuaXF1ZSwgYnV0IFxcJyR7Y29sdW1uLm5hbWV9XFwnIGlzIGR1cGxpY2F0ZWRgKTtcbiAgICB9XG4gICAgbmFtZXMuYWRkKGNvbHVtbi5uYW1lKTtcbiAgfSk7XG59XG4iXX0=
@@ -46,7 +46,7 @@ const constants_1 = require("../constants");
46
46
  * methods, an action can never target both or neither.
47
47
  */
48
48
  class Action {
49
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Action", version: "2.269.0-alpha.0" };
49
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Action", version: "2.271.0-alpha.0" };
50
50
  /**
51
51
  * Create an action that runs a job.
52
52
  *
@@ -55,6 +55,7 @@ class Action {
55
55
  */
56
56
  static job(job, options = {}) {
57
57
  try {
58
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Action#job", "");
58
59
  jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_JobActionOptions(options);
59
60
  }
60
61
  catch (error) {
@@ -73,6 +74,7 @@ class Action {
73
74
  */
74
75
  static crawler(crawler, options = {}) {
75
76
  try {
77
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Action#crawler", "");
76
78
  jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_CrawlerActionOptions(options);
77
79
  }
78
80
  catch (error) {
@@ -130,7 +132,7 @@ class CrawlerAction extends Action {
130
132
  */
131
133
  class TriggerSchedule {
132
134
  expressionString;
133
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.TriggerSchedule", version: "2.269.0-alpha.0" };
135
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.TriggerSchedule", version: "2.271.0-alpha.0" };
134
136
  /**
135
137
  * Creates a new TriggerSchedule instance with a cron expression.
136
138
  *
@@ -138,6 +140,15 @@ class TriggerSchedule {
138
140
  * @returns A new TriggerSchedule instance.
139
141
  */
140
142
  static cron(options) {
143
+ try {
144
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TriggerSchedule#cron", "");
145
+ }
146
+ catch (error) {
147
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
148
+ Error.captureStackTrace(error, this.cron);
149
+ }
150
+ throw error;
151
+ }
141
152
  return new TriggerSchedule(events.Schedule.cron(options).expressionString);
142
153
  }
143
154
  /**
@@ -147,6 +158,15 @@ class TriggerSchedule {
147
158
  * @returns A new TriggerSchedule instance.
148
159
  */
149
160
  static expression(expression) {
161
+ try {
162
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TriggerSchedule#expression", "");
163
+ }
164
+ catch (error) {
165
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
166
+ Error.captureStackTrace(error, this.expression);
167
+ }
168
+ throw error;
169
+ }
150
170
  return new TriggerSchedule(expression);
151
171
  }
152
172
  /**
@@ -155,6 +175,15 @@ class TriggerSchedule {
155
175
  * @returns A new TriggerSchedule instance.
156
176
  */
157
177
  static daily() {
178
+ try {
179
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TriggerSchedule#daily", "");
180
+ }
181
+ catch (error) {
182
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
183
+ Error.captureStackTrace(error, this.daily);
184
+ }
185
+ throw error;
186
+ }
158
187
  return TriggerSchedule.cron({ minute: '0', hour: '0' });
159
188
  }
160
189
  /**
@@ -163,6 +192,15 @@ class TriggerSchedule {
163
192
  * @returns A new TriggerSchedule instance.
164
193
  */
165
194
  static weekly() {
195
+ try {
196
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TriggerSchedule#weekly", "");
197
+ }
198
+ catch (error) {
199
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
200
+ Error.captureStackTrace(error, this.weekly);
201
+ }
202
+ throw error;
203
+ }
166
204
  return TriggerSchedule.cron({ minute: '0', hour: '0', weekDay: 'SUN' });
167
205
  }
168
206
  /**
@@ -182,7 +220,7 @@ exports.TriggerSchedule = TriggerSchedule;
182
220
  * can never reference a target without its state, or both a job and a crawler.
183
221
  */
184
222
  class Condition {
185
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Condition", version: "2.269.0-alpha.0" };
223
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Condition", version: "2.271.0-alpha.0" };
186
224
  /**
187
225
  * Create a condition on the state of a job.
188
226
  *
@@ -192,6 +230,7 @@ class Condition {
192
230
  */
193
231
  static job(job, state, options = {}) {
194
232
  try {
233
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Condition#job", "");
195
234
  jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_JobState(state);
196
235
  jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_ConditionOptions(options);
197
236
  }
@@ -212,6 +251,7 @@ class Condition {
212
251
  */
213
252
  static crawler(crawler, crawlState, options = {}) {
214
253
  try {
254
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Condition#crawler", "");
215
255
  jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_CrawlerState(crawlState);
216
256
  jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_ConditionOptions(options);
217
257
  }
@@ -267,4 +307,4 @@ class CrawlerCondition extends Condition {
267
307
  };
268
308
  }
269
309
  }
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJpZ2dlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0RBQWlEO0FBR2pELDRDQUF3RDtBQXdEeEQ7Ozs7OztHQU1HO0FBQ0gsTUFBc0IsTUFBTTs7SUFDMUI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVksRUFBRSxVQUE0QixFQUFFOzs7Ozs7Ozs7O1FBQzVELE9BQU8sSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3BDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQW9CLEVBQUUsVUFBZ0MsRUFBRTs7Ozs7Ozs7OztRQUM1RSxPQUFPLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUM1Qzs7QUFuQkgsd0JBMkJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFNBQVUsU0FBUSxNQUFNO0lBQ0M7SUFBK0I7SUFBNUQsWUFBNkIsR0FBWSxFQUFtQixPQUF5QjtRQUNuRixLQUFLLEVBQUUsQ0FBQztRQURtQixRQUFHLEdBQUgsR0FBRyxDQUFTO1FBQW1CLFlBQU8sR0FBUCxPQUFPLENBQWtCO0tBRXBGO0lBRU0sT0FBTztRQUNaLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTztZQUNoQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDMUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSx5QkFBeUI7U0FDckYsQ0FBQztLQUNIO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0s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LFVBQXdCLEVBQ3hCLE9BQXlCO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBSlMsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQWtCO0tBRzNDO0lBRU0sT0FBTztRQUNaLE9BQU87WUFDTCxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksb0NBQXdCLENBQUMsTUFBTTtZQUNoRixXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVztZQUNoRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQztLQUNIO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSB7IENmblRyaWdnZXIsIElDcmF3bGVyUmVmLCBJSm9iUmVmIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0IHR5cGUgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBDb25kaXRpb25Mb2dpY2FsT3BlcmF0b3IgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBKb2JTdGF0ZSwgQ3Jhd2xlclN0YXRlLCBQcmVkaWNhdGVMb2dpY2FsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHsgSVNlY3VyaXR5Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uL3NlY3VyaXR5LWNvbmZpZ3VyYXRpb24nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24gb2YgYSBjcmF3bGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyYXdsZXJBY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBhcmd1bWVudHMgdXNlZCB3aGVuIHRoaXMgdHJpZ2dlciBmaXJlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgam9iXG4gICAqL1xuICByZWFkb25seSBhcmd1bWVudHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcnVuIHRpbWVvdXQuIFRoaXMgaXMgdGhlIG1heGltdW0gdGltZSB0aGF0IGEgcnVuIGNhbiBjb25zdW1lIHJlc291cmNlcyBiZWZvcmUgaXQgaXMgdGVybWluYXRlZCBhbmQgZW50ZXJzIFRJTUVPVVQgc3RhdHVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBkZWZhdWx0IHRpbWVvdXQgdmFsdWUgc2V0IGluIHRoZSBqb2IgZGVmaW5pdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IGNkay5EdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGBTZWN1cml0eUNvbmZpZ3VyYXRpb25gIHRvIGJlIHVzZWQgd2l0aCB0aGlzIGFjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWN1cml0eSBjb25maWd1cmF0aW9uIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5Q29uZmlndXJhdGlvbj86IElTZWN1cml0eUNvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbiBvZiBhIGpvYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2JBY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBhcmd1bWVudHMgdXNlZCB3aGVuIHRoaXMgdHJpZ2dlciBmaXJlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgam9iXG4gICAqL1xuICByZWFkb25seSBhcmd1bWVudHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcnVuIHRpbWVvdXQuIFRoaXMgaXMgdGhlIG1heGltdW0gdGltZSB0aGF0IGEgcnVuIGNhbiBjb25zdW1lIHJlc291cmNlcyBiZWZvcmUgaXQgaXMgdGVybWluYXRlZCBhbmQgZW50ZXJzIFRJTUVPVVQgc3RhdHVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBkZWZhdWx0IHRpbWVvdXQgdmFsdWUgc2V0IGluIHRoZSBqb2IgZGVmaW5pdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IGNkay5EdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGBTZWN1cml0eUNvbmZpZ3VyYXRpb25gIHRvIGJlIHVzZWQgd2l0aCB0aGlzIGFjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWN1cml0eSBjb25maWd1cmF0aW9uIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5Q29uZmlndXJhdGlvbj86IElTZWN1cml0eUNvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogQW4gYWN0aW9uIGluaXRpYXRlZCBieSBhIHRyaWdnZXIuXG4gKlxuICogQW4gYWN0aW9uIHJ1bnMgZXhhY3RseSBvbmUgdGFyZ2V0OiB1c2Uge0BsaW5rIEFjdGlvbi5qb2J9IHRvIHJ1biBhIGpvYiBvclxuICoge0BsaW5rIEFjdGlvbi5jcmF3bGVyfSB0byBydW4gYSBjcmF3bGVyLiBCZWNhdXNlIHRoZXNlIGFyZSBzZXBhcmF0ZSBmYWN0b3J5XG4gKiBtZXRob2RzLCBhbiBhY3Rpb24gY2FuIG5ldmVyIHRhcmdldCBib3RoIG9yIG5laXRoZXIuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY3Rpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGFuIGFjdGlvbiB0aGF0IHJ1bnMgYSBqb2IuXG4gICAqXG4gICAqIEBwYXJhbSBqb2IgdGhlIGpvYiB0byBydW4gd2hlbiB0aGUgdHJpZ2dlciBmaXJlcy5cbiAgICogQHBhcmFtIG9wdGlvbnMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBqb2Ioam9iOiBJSm9iUmVmLCBvcHRpb25zOiBKb2JBY3Rpb25PcHRpb25zID0ge30pOiBBY3Rpb24ge1xuICAgIHJldHVybiBuZXcgSm9iQWN0aW9uKGpvYiwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGFjdGlvbiB0aGF0IHJ1bnMgYSBjcmF3bGVyLlxuICAgKlxuICAgKiBAcGFyYW0gY3Jhd2xlciB0aGUgY3Jhd2xlciB0byBydW4gd2hlbiB0aGUgdHJpZ2dlciBmaXJlcy5cbiAgICogQHBhcmFtIG9wdGlvbnMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmF3bGVyKGNyYXdsZXI6IElDcmF3bGVyUmVmLCBvcHRpb25zOiBDcmF3bGVyQWN0aW9uT3B0aW9ucyA9IHt9KTogQWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IENyYXdsZXJBY3Rpb24oY3Jhd2xlciwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoaXMgYWN0aW9uIHRvIGl0cyBDbG91ZEZvcm1hdGlvbiByZXByZXNlbnRhdGlvbi5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgX3JlbmRlcigpOiBDZm5UcmlnZ2VyLkFjdGlvblByb3BlcnR5O1xufVxuXG4vKipcbiAqIEFuIGFjdGlvbiB0aGF0IHJ1bnMgYSBqb2IuXG4gKi9cbmNsYXNzIEpvYkFjdGlvbiBleHRlbmRzIEFjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgam9iOiBJSm9iUmVmLCBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEpvYkFjdGlvbk9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIF9yZW5kZXIoKTogQ2ZuVHJpZ2dlci5BY3Rpb25Qcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGpvYk5hbWU6IHRoaXMuam9iLmpvYlJlZi5qb2JOYW1lLFxuICAgICAgYXJndW1lbnRzOiB0aGlzLm9wdGlvbnMuYXJndW1lbnRzLFxuICAgICAgdGltZW91dDogdGhpcy5vcHRpb25zLnRpbWVvdXQ/LnRvTWludXRlcygpLFxuICAgICAgc2VjdXJpdHlDb25maWd1cmF0aW9uOiB0aGlzLm9wdGlvbnMuc2VjdXJpdHlDb25maWd1cmF0aW9uPy5zZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBhY3Rpb24gdGhhdCBydW5zIGEgY3Jhd2xlci5cbiAqL1xuY2xhc3MgQ3Jhd2xlckFjdGlvbiBleHRlbmRzIEFjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY3Jhd2xlcjogSUNyYXdsZXJSZWYsIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ3Jhd2xlckFjdGlvbk9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIF9yZW5kZXIoKTogQ2ZuVHJpZ2dlci5BY3Rpb25Qcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyYXdsZXJOYW1lOiB0aGlzLmNyYXdsZXIuY3Jhd2xlclJlZi5jcmF3bGVyTmFtZSxcbiAgICAgIGFyZ3VtZW50czogdGhpcy5vcHRpb25zLmFyZ3VtZW50cyxcbiAgICAgIHRpbWVvdXQ6IHRoaXMub3B0aW9ucy50aW1lb3V0Py50b01pbnV0ZXMoKSxcbiAgICAgIHNlY3VyaXR5Q29uZmlndXJhdGlvbjogdGhpcy5vcHRpb25zLnNlY3VyaXR5Q29uZmlndXJhdGlvbj8uc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHRyaWdnZXIgc2NoZWR1bGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmlnZ2VyU2NoZWR1bGUge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBUcmlnZ2VyU2NoZWR1bGUgaW5zdGFuY2Ugd2l0aCBhIGNyb24gZXhwcmVzc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGNyb24gb3B0aW9ucyBmb3IgdGhlIHNjaGVkdWxlLlxuICAgKiBAcmV0dXJucyBBIG5ldyBUcmlnZ2VyU2NoZWR1bGUgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyb24ob3B0aW9uczogZXZlbnRzLkNyb25PcHRpb25zKTogVHJpZ2dlclNjaGVkdWxlIHtcbiAgICByZXR1cm4gbmV3IFRyaWdnZXJTY2hlZHVsZShldmVudHMuU2NoZWR1bGUuY3JvbihvcHRpb25zKS5leHByZXNzaW9uU3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRyaWdnZXJTY2hlZHVsZSBpbnN0YW5jZSB3aXRoIGEgY3VzdG9tIGV4cHJlc3Npb24uXG4gICAqXG4gICAqIEBwYXJhbSBleHByZXNzaW9uIFRoZSBjdXN0b20gZXhwcmVzc2lvbiBmb3IgdGhlIHNjaGVkdWxlLlxuICAgKiBAcmV0dXJucyBBIG5ldyBUcmlnZ2VyU2NoZWR1bGUgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nKTogVHJpZ2dlclNjaGVkdWxlIHtcbiAgICByZXR1cm4gbmV3IFRyaWdnZXJTY2hlZHVsZShleHByZXNzaW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2NoZWR1bGUgdGhhdCBmaXJlcyBvbmNlIGEgZGF5LCBhdCBtaWRuaWdodCBVVEMuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgbmV3IFRyaWdnZXJTY2hlZHVsZSBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGFpbHkoKTogVHJpZ2dlclNjaGVkdWxlIHtcbiAgICByZXR1cm4gVHJpZ2dlclNjaGVkdWxlLmNyb24oeyBtaW51dGU6ICcwJywgaG91cjogJzAnIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzY2hlZHVsZSB0aGF0IGZpcmVzIG9uY2UgYSB3ZWVrLCBhdCBtaWRuaWdodCBVVEMgb24gU3VuZGF5LlxuICAgKlxuICAgKiBAcmV0dXJucyBBIG5ldyBUcmlnZ2VyU2NoZWR1bGUgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdlZWtseSgpOiBUcmlnZ2VyU2NoZWR1bGUge1xuICAgIHJldHVybiBUcmlnZ2VyU2NoZWR1bGUuY3Jvbih7IG1pbnV0ZTogJzAnLCBob3VyOiAnMCcsIHdlZWtEYXk6ICdTVU4nIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBleHByZXNzaW9uU3RyaW5nIFRoZSBleHByZXNzaW9uIHN0cmluZyBmb3IgdGhlIHNjaGVkdWxlLlxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZXhwcmVzc2lvblN0cmluZzogc3RyaW5nKSB7fVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB0cmlnZ2VyIHByZWRpY2F0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVkaWNhdGUge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWwgb3BlcmF0b3IgdG8gYmUgYXBwbGllZCB0byB0aGUgY29uZGl0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBQcmVkaWNhdGVMb2dpY2FsLkFORCBpZiBtdWx0aXBsZSBjb25kaXRpb25zIGFyZSBwcm92aWRlZCwgbm8gbG9naWNhbCBvcGVyYXRvciBpZiBvbmx5IG9uZSBjb25kaXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2ljYWw/OiBQcmVkaWNhdGVMb2dpY2FsO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgdGhlIGNvbmRpdGlvbnMgdGhhdCBkZXRlcm1pbmUgd2hlbiB0aGUgdHJpZ2dlciB3aWxsIGZpcmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29uZGl0aW9ucyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbmRpdGlvbnM/OiBDb25kaXRpb25bXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHNoYXJlZCBieSBhbGwgdHJpZ2dlciBjb25kaXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmRpdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWwgb3BlcmF0b3IgZm9yIHRoZSBjb25kaXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IENvbmRpdGlvbkxvZ2ljYWxPcGVyYXRvci5FUVVBTFNcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2ljYWxPcGVyYXRvcj86IENvbmRpdGlvbkxvZ2ljYWxPcGVyYXRvcjtcbn1cblxuLyoqXG4gKiBBIGNvbmRpdGlvbiB0aGF0IGRldGVybWluZXMgd2hlbiBhIGNvbmRpdGlvbmFsIHRyaWdnZXIgZmlyZXMuXG4gKlxuICogQSBjb25kaXRpb24gd2F0Y2hlcyBleGFjdGx5IG9uZSB0YXJnZXQgaW4gZXhhY3RseSBvbmUgc3RhdGU6IHVzZVxuICoge0BsaW5rIENvbmRpdGlvbi5qb2J9IHRvIHdhdGNoIGEgam9iIG9yIHtAbGluayBDb25kaXRpb24uY3Jhd2xlcn0gdG8gd2F0Y2ggYVxuICogY3Jhd2xlci4gQmVjYXVzZSB0aGUgc3RhdGUgaXMgYSByZXF1aXJlZCBhcmd1bWVudCBvZiBlYWNoIGZhY3RvcnksIGEgY29uZGl0aW9uXG4gKiBjYW4gbmV2ZXIgcmVmZXJlbmNlIGEgdGFyZ2V0IHdpdGhvdXQgaXRzIHN0YXRlLCBvciBib3RoIGEgam9iIGFuZCBhIGNyYXdsZXIuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb25kaXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgY29uZGl0aW9uIG9uIHRoZSBzdGF0ZSBvZiBhIGpvYi5cbiAgICpcbiAgICogQHBhcmFtIGpvYiB0aGUgam9iIHRvIHdhdGNoLlxuICAgKiBAcGFyYW0gc3RhdGUgdGhlIGpvYiBzdGF0ZSB0aGF0IHNhdGlzZmllcyB0aGUgY29uZGl0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBjb25kaXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGpvYihqb2I6IElKb2JSZWYsIHN0YXRlOiBKb2JTdGF0ZSwgb3B0aW9uczogQ29uZGl0aW9uT3B0aW9ucyA9IHt9KTogQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IEpvYkNvbmRpdGlvbihqb2IsIHN0YXRlLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjb25kaXRpb24gb24gdGhlIHN0YXRlIG9mIGEgY3Jhd2xlci5cbiAgICpcbiAgICogQHBhcmFtIGNyYXdsZXIgdGhlIGNyYXdsZXIgdG8gd2F0Y2guXG4gICAqIEBwYXJhbSBjcmF3bFN0YXRlIHRoZSBjcmF3bGVyIHN0YXRlIHRoYXQgc2F0aXNmaWVzIHRoZSBjb25kaXRpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGNvbmRpdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3Jhd2xlcihjcmF3bGVyOiBJQ3Jhd2xlclJlZiwgY3Jhd2xTdGF0ZTogQ3Jhd2xlclN0YXRlLCBvcHRpb25zOiBDb25kaXRpb25PcHRpb25zID0ge30pOiBDb25kaXRpb24ge1xuICAgIHJldHVybiBuZXcgQ3Jhd2xlckNvbmRpdGlvbihjcmF3bGVyLCBjcmF3bFN0YXRlLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhpcyBjb25kaXRpb24gdG8gaXRzIENsb3VkRm9ybWF0aW9uIHJlcHJlc2VudGF0aW9uLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfcmVuZGVyKCk6IENmblRyaWdnZXIuQ29uZGl0aW9uUHJvcGVydHk7XG59XG5cbi8qKlxuICogQSBjb25kaXRpb24gb24gdGhlIHN0YXRlIG9mIGEgam9iLlxuICovXG5jbGFzcyBKb2JDb25kaXRpb24gZXh0ZW5kcyBDb25kaXRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGpvYjogSUpvYlJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlOiBKb2JTdGF0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENvbmRpdGlvbk9wdGlvbnMsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5UcmlnZ2VyLkNvbmRpdGlvblByb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naWNhbE9wZXJhdG9yOiB0aGlzLm9wdGlvbnMubG9naWNhbE9wZXJhdG9yID8/IENvbmRpdGlvbkxvZ2ljYWxPcGVyYXRvci5FUVVBTFMsXG4gICAgICBqb2JOYW1lOiB0aGlzLmpvYi5qb2JSZWYuam9iTmFtZSxcbiAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNvbmRpdGlvbiBvbiB0aGUgc3RhdGUgb2YgYSBjcmF3bGVyLlxuICovXG5jbGFzcyBDcmF3bGVyQ29uZGl0aW9uIGV4dGVuZHMgQ29uZGl0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmF3bGVyOiBJQ3Jhd2xlclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyYXdsU3RhdGU6IENyYXdsZXJTdGF0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENvbmRpdGlvbk9wdGlvbnMsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5UcmlnZ2VyLkNvbmRpdGlvblByb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naWNhbE9wZXJhdG9yOiB0aGlzLm9wdGlvbnMubG9naWNhbE9wZXJhdG9yID8/IENvbmRpdGlvbkxvZ2ljYWxPcGVyYXRvci5FUVVBTFMsXG4gICAgICBjcmF3bGVyTmFtZTogdGhpcy5jcmF3bGVyLmNyYXdsZXJSZWYuY3Jhd2xlck5hbWUsXG4gICAgICBjcmF3bFN0YXRlOiB0aGlzLmNyYXdsU3RhdGUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgZXZlbnQgdHJpZ2dlciBiYXRjaCBjb25kaXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRCYXRjaGluZ0NvbmRpdGlvbiB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXZlbnRzIHRoYXQgbXVzdCBiZSByZWNlaXZlZCBmcm9tIEFtYXpvbiBFdmVudEJyaWRnZSBiZWZvcmUgRXZlbnRCcmlkZ2UgZXZlbnQgdHJpZ2dlciBmaXJlcy5cbiAgICovXG4gIHJlYWRvbmx5IGJhdGNoU2l6ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaW5kb3cgb2YgdGltZSBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIEV2ZW50QnJpZGdlIGV2ZW50IHRyaWdnZXIgZmlyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gOTAwIHNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IGJhdGNoV2luZG93PzogY2RrLkR1cmF0aW9uO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNvbmZpZ3VyaW5nIGEgR2x1ZSBUcmlnZ2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJpZ2dlck9wdGlvbnMge1xuICAvKipcbiAgICogQSBuYW1lIGZvciB0aGUgdHJpZ2dlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBuYW1lIGlzIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIGZvciB0aGUgdHJpZ2dlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb25zIGluaXRpYXRlZCBieSB0aGlzIHRyaWdnZXIuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25zOiBBY3Rpb25bXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyBhbiBvbi1kZW1hbmQgR2x1ZSBUcmlnZ2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9uRGVtYW5kVHJpZ2dlck9wdGlvbnMgZXh0ZW5kcyBUcmlnZ2VyT3B0aW9ucyB7fVxuXG4vKipcbiAqIEJhc2Ugb3B0aW9ucyBmb3IgdHJpZ2dlcnMgdGhhdCBjYW4gYmUgc3RhcnRlZCB3aGVuIHRoZXkgYXJlIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRhYmxlVHJpZ2dlck9wdGlvbnMgZXh0ZW5kcyBUcmlnZ2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHN0YXJ0IHRoZSB0cmlnZ2VyIG9uIGNyZWF0aW9uIG9yIG5vdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRPbkNyZWF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyBhIHNjaGVkdWxlZCBHbHVlIFRyaWdnZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVkVHJpZ2dlck9wdGlvbnMgZXh0ZW5kcyBTdGFydGFibGVUcmlnZ2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGUgb24gd2hpY2ggdGhpcyB0cmlnZ2VyIGZpcmVzLlxuICAgKlxuICAgKiBCdWlsZCBvbmUgd2l0aCB7QGxpbmsgVHJpZ2dlclNjaGVkdWxlLmRhaWx5fSwge0BsaW5rIFRyaWdnZXJTY2hlZHVsZS53ZWVrbHl9LFxuICAgKiB7QGxpbmsgVHJpZ2dlclNjaGVkdWxlLmNyb259LCBvciB7QGxpbmsgVHJpZ2dlclNjaGVkdWxlLmV4cHJlc3Npb259LlxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU6IFRyaWdnZXJTY2hlZHVsZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyBhbiBFdmVudCBCcmlkZ2UgYmFzZWQgR2x1ZSBUcmlnZ2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50VHJpZ2dlck9wdGlvbnMgZXh0ZW5kcyBUcmlnZ2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBCYXRjaCBjb25kaXRpb24gZm9yIHRoZSB0cmlnZ2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGJhdGNoIGNvbmRpdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCYXRjaGluZ0NvbmRpdGlvbj86IEV2ZW50QmF0Y2hpbmdDb25kaXRpb247XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgYSBDb25kaXRpb24gKFByZWRpY2F0ZSkgYmFzZWQgR2x1ZSBUcmlnZ2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmRpdGlvbmFsVHJpZ2dlck9wdGlvbnMgZXh0ZW5kcyBTdGFydGFibGVUcmlnZ2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcHJlZGljYXRlIGZvciB0aGUgdHJpZ2dlci5cbiAgICovXG4gIHJlYWRvbmx5IHByZWRpY2F0ZTogUHJlZGljYXRlO1xufVxuIl19
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJpZ2dlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0RBQWlEO0FBR2pELDRDQUF3RDtBQXdEeEQ7Ozs7OztHQU1HO0FBQ0gsTUFBc0IsTUFBTTs7SUFDMUI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVksRUFBRSxVQUE0QixFQUFFOzs7Ozs7Ozs7OztRQUM1RCxPQUFPLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNwQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFvQixFQUFFLFVBQWdDLEVBQUU7Ozs7Ozs7Ozs7O1FBQzVFLE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzVDOztBQW5CSCx3QkEyQkM7QUFFRDs7R0FFRztBQUNILE1BQU0sU0FBVSxTQUFRLE1BQU07SUFDQztJQUErQjtJQUE1RCxZQUE2QixHQUFZLEVBQW1CLE9BQXlCO1FBQ25GLEtBQUssRUFBRSxDQUFDO1FBRG1CLFFBQUcsR0FBSCxHQUFHLENBQVM7UUFBbUIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7S0FFcEY7SUFFTSxPQUFPO1FBQ1osT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQ2hDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUMxQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLHlCQUF5QjtTQUNyRixDQUFDO0tBQ0g7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFB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O0lBRW5CO0lBQ0E7SUFDQTtJQUhuQixZQUNtQixPQUFvQixFQUNwQixVQUF3QixFQUN4QixPQUF5QjtRQUUxQyxLQUFLLEVBQUUsQ0FBQztRQUpTLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFrQjtLQUczQztJQUVNLE9BQU87UUFDWixPQUFPO1lBQ0wsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLG9DQUF3QixDQUFDLE1BQU07WUFDaEYsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVc7WUFDaEQsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUM7S0FDSDtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHR5cGUgeyBDZm5UcmlnZ2VyLCBJQ3Jhd2xlclJlZiwgSUpvYlJlZiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1nbHVlJztcbmltcG9ydCB0eXBlICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uZGl0aW9uTG9naWNhbE9wZXJhdG9yIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHsgSm9iU3RhdGUsIENyYXdsZXJTdGF0ZSwgUHJlZGljYXRlTG9naWNhbCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IElTZWN1cml0eUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9zZWN1cml0eS1jb25maWd1cmF0aW9uJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uIG9mIGEgY3Jhd2xlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmF3bGVyQWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHVzZWQgd2hlbiB0aGlzIHRyaWdnZXIgZmlyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIGpvYlxuICAgKi9cbiAgcmVhZG9ubHkgYXJndW1lbnRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIHJ1biB0aW1lb3V0LiBUaGlzIGlzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCBhIHJ1biBjYW4gY29uc3VtZSByZXNvdXJjZXMgYmVmb3JlIGl0IGlzIHRlcm1pbmF0ZWQgYW5kIGVudGVycyBUSU1FT1VUIHN0YXR1cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCB0aW1lb3V0IHZhbHVlIHNldCBpbiB0aGUgam9iIGRlZmluaXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBgU2VjdXJpdHlDb25maWd1cmF0aW9uYCB0byBiZSB1c2VkIHdpdGggdGhpcyBhY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2VjdXJpdHkgY29uZmlndXJhdGlvbiBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbmZpZ3VyYXRpb24/OiBJU2VjdXJpdHlDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24gb2YgYSBqb2IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iQWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHVzZWQgd2hlbiB0aGlzIHRyaWdnZXIgZmlyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIGpvYlxuICAgKi9cbiAgcmVhZG9ubHkgYXJndW1lbnRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIHJ1biB0aW1lb3V0LiBUaGlzIGlzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCBhIHJ1biBjYW4gY29uc3VtZSByZXNvdXJjZXMgYmVmb3JlIGl0IGlzIHRlcm1pbmF0ZWQgYW5kIGVudGVycyBUSU1FT1VUIHN0YXR1cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCB0aW1lb3V0IHZhbHVlIHNldCBpbiB0aGUgam9iIGRlZmluaXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBgU2VjdXJpdHlDb25maWd1cmF0aW9uYCB0byBiZSB1c2VkIHdpdGggdGhpcyBhY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2VjdXJpdHkgY29uZmlndXJhdGlvbiBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbmZpZ3VyYXRpb24/OiBJU2VjdXJpdHlDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIEFuIGFjdGlvbiBpbml0aWF0ZWQgYnkgYSB0cmlnZ2VyLlxuICpcbiAqIEFuIGFjdGlvbiBydW5zIGV4YWN0bHkgb25lIHRhcmdldDogdXNlIHtAbGluayBBY3Rpb24uam9ifSB0byBydW4gYSBqb2Igb3JcbiAqIHtAbGluayBBY3Rpb24uY3Jhd2xlcn0gdG8gcnVuIGEgY3Jhd2xlci4gQmVjYXVzZSB0aGVzZSBhcmUgc2VwYXJhdGUgZmFjdG9yeVxuICogbWV0aG9kcywgYW4gYWN0aW9uIGNhbiBuZXZlciB0YXJnZXQgYm90aCBvciBuZWl0aGVyLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWN0aW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBhY3Rpb24gdGhhdCBydW5zIGEgam9iLlxuICAgKlxuICAgKiBAcGFyYW0gam9iIHRoZSBqb2IgdG8gcnVuIHdoZW4gdGhlIHRyaWdnZXIgZmlyZXMuXG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGFjdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgam9iKGpvYjogSUpvYlJlZiwgb3B0aW9uczogSm9iQWN0aW9uT3B0aW9ucyA9IHt9KTogQWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IEpvYkFjdGlvbihqb2IsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBhY3Rpb24gdGhhdCBydW5zIGEgY3Jhd2xlci5cbiAgICpcbiAgICogQHBhcmFtIGNyYXdsZXIgdGhlIGNyYXdsZXIgdG8gcnVuIHdoZW4gdGhlIHRyaWdnZXIgZmlyZXMuXG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGFjdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3Jhd2xlcihjcmF3bGVyOiBJQ3Jhd2xlclJlZiwgb3B0aW9uczogQ3Jhd2xlckFjdGlvbk9wdGlvbnMgPSB7fSk6IEFjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDcmF3bGVyQWN0aW9uKGNyYXdsZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGlzIGFjdGlvbiB0byBpdHMgQ2xvdWRGb3JtYXRpb24gcmVwcmVzZW50YXRpb24uXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IF9yZW5kZXIoKTogQ2ZuVHJpZ2dlci5BY3Rpb25Qcm9wZXJ0eTtcbn1cblxuLyoqXG4gKiBBbiBhY3Rpb24gdGhhdCBydW5zIGEgam9iLlxuICovXG5jbGFzcyBKb2JBY3Rpb24gZXh0ZW5kcyBBY3Rpb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGpvYjogSUpvYlJlZiwgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBKb2JBY3Rpb25PcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblRyaWdnZXIuQWN0aW9uUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBqb2JOYW1lOiB0aGlzLmpvYi5qb2JSZWYuam9iTmFtZSxcbiAgICAgIGFyZ3VtZW50czogdGhpcy5vcHRpb25zLmFyZ3VtZW50cyxcbiAgICAgIHRpbWVvdXQ6IHRoaXMub3B0aW9ucy50aW1lb3V0Py50b01pbnV0ZXMoKSxcbiAgICAgIHNlY3VyaXR5Q29uZmlndXJhdGlvbjogdGhpcy5vcHRpb25zLnNlY3VyaXR5Q29uZmlndXJhdGlvbj8uc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQW4gYWN0aW9uIHRoYXQgcnVucyBhIGNyYXdsZXIuXG4gKi9cbmNsYXNzIENyYXdsZXJBY3Rpb24gZXh0ZW5kcyBBY3Rpb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNyYXdsZXI6IElDcmF3bGVyUmVmLCBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENyYXdsZXJBY3Rpb25PcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblRyaWdnZXIuQWN0aW9uUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBjcmF3bGVyTmFtZTogdGhpcy5jcmF3bGVyLmNyYXdsZXJSZWYuY3Jhd2xlck5hbWUsXG4gICAgICBhcmd1bWVudHM6IHRoaXMub3B0aW9ucy5hcmd1bWVudHMsXG4gICAgICB0aW1lb3V0OiB0aGlzLm9wdGlvbnMudGltZW91dD8udG9NaW51dGVzKCksXG4gICAgICBzZWN1cml0eUNvbmZpZ3VyYXRpb246IHRoaXMub3B0aW9ucy5zZWN1cml0eUNvbmZpZ3VyYXRpb24/LnNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB0cmlnZ2VyIHNjaGVkdWxlLlxuICovXG5leHBvcnQgY2xhc3MgVHJpZ2dlclNjaGVkdWxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgVHJpZ2dlclNjaGVkdWxlIGluc3RhbmNlIHdpdGggYSBjcm9uIGV4cHJlc3Npb24uXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBjcm9uIG9wdGlvbnMgZm9yIHRoZSBzY2hlZHVsZS5cbiAgICogQHJldHVybnMgQSBuZXcgVHJpZ2dlclNjaGVkdWxlIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcm9uKG9wdGlvbnM6IGV2ZW50cy5Dcm9uT3B0aW9ucyk6IFRyaWdnZXJTY2hlZHVsZSB7XG4gICAgcmV0dXJuIG5ldyBUcmlnZ2VyU2NoZWR1bGUoZXZlbnRzLlNjaGVkdWxlLmNyb24ob3B0aW9ucykuZXhwcmVzc2lvblN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBUcmlnZ2VyU2NoZWR1bGUgaW5zdGFuY2Ugd2l0aCBhIGN1c3RvbSBleHByZXNzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgY3VzdG9tIGV4cHJlc3Npb24gZm9yIHRoZSBzY2hlZHVsZS5cbiAgICogQHJldHVybnMgQSBuZXcgVHJpZ2dlclNjaGVkdWxlIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBleHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZyk6IFRyaWdnZXJTY2hlZHVsZSB7XG4gICAgcmV0dXJuIG5ldyBUcmlnZ2VyU2NoZWR1bGUoZXhwcmVzc2lvbik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHNjaGVkdWxlIHRoYXQgZmlyZXMgb25jZSBhIGRheSwgYXQgbWlkbmlnaHQgVVRDLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIG5ldyBUcmlnZ2VyU2NoZWR1bGUgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRhaWx5KCk6IFRyaWdnZXJTY2hlZHVsZSB7XG4gICAgcmV0dXJuIFRyaWdnZXJTY2hlZHVsZS5jcm9uKHsgbWludXRlOiAnMCcsIGhvdXI6ICcwJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2NoZWR1bGUgdGhhdCBmaXJlcyBvbmNlIGEgd2VlaywgYXQgbWlkbmlnaHQgVVRDIG9uIFN1bmRheS5cbiAgICpcbiAgICogQHJldHVybnMgQSBuZXcgVHJpZ2dlclNjaGVkdWxlIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3ZWVrbHkoKTogVHJpZ2dlclNjaGVkdWxlIHtcbiAgICByZXR1cm4gVHJpZ2dlclNjaGVkdWxlLmNyb24oeyBtaW51dGU6ICcwJywgaG91cjogJzAnLCB3ZWVrRGF5OiAnU1VOJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZXhwcmVzc2lvblN0cmluZyBUaGUgZXhwcmVzc2lvbiBzdHJpbmcgZm9yIHRoZSBzY2hlZHVsZS5cbiAgICovXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGV4cHJlc3Npb25TdHJpbmc6IHN0cmluZykge31cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHJpZ2dlciBwcmVkaWNhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZGljYXRlIHtcbiAgLyoqXG4gICAqIFRoZSBsb2dpY2FsIG9wZXJhdG9yIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGNvbmRpdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gUHJlZGljYXRlTG9naWNhbC5BTkQgaWYgbXVsdGlwbGUgY29uZGl0aW9ucyBhcmUgcHJvdmlkZWQsIG5vIGxvZ2ljYWwgb3BlcmF0b3IgaWYgb25seSBvbmUgY29uZGl0aW9uXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsPzogUHJlZGljYXRlTG9naWNhbDtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHRoZSBjb25kaXRpb25zIHRoYXQgZGV0ZXJtaW5lIHdoZW4gdGhlIHRyaWdnZXIgd2lsbCBmaXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbmRpdGlvbnMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBjb25kaXRpb25zPzogQ29uZGl0aW9uW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBzaGFyZWQgYnkgYWxsIHRyaWdnZXIgY29uZGl0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBsb2dpY2FsIG9wZXJhdG9yIGZvciB0aGUgY29uZGl0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDb25kaXRpb25Mb2dpY2FsT3BlcmF0b3IuRVFVQUxTXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsT3BlcmF0b3I/OiBDb25kaXRpb25Mb2dpY2FsT3BlcmF0b3I7XG59XG5cbi8qKlxuICogQSBjb25kaXRpb24gdGhhdCBkZXRlcm1pbmVzIHdoZW4gYSBjb25kaXRpb25hbCB0cmlnZ2VyIGZpcmVzLlxuICpcbiAqIEEgY29uZGl0aW9uIHdhdGNoZXMgZXhhY3RseSBvbmUgdGFyZ2V0IGluIGV4YWN0bHkgb25lIHN0YXRlOiB1c2VcbiAqIHtAbGluayBDb25kaXRpb24uam9ifSB0byB3YXRjaCBhIGpvYiBvciB7QGxpbmsgQ29uZGl0aW9uLmNyYXdsZXJ9IHRvIHdhdGNoIGFcbiAqIGNyYXdsZXIuIEJlY2F1c2UgdGhlIHN0YXRlIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQgb2YgZWFjaCBmYWN0b3J5LCBhIGNvbmRpdGlvblxuICogY2FuIG5ldmVyIHJlZmVyZW5jZSBhIHRhcmdldCB3aXRob3V0IGl0cyBzdGF0ZSwgb3IgYm90aCBhIGpvYiBhbmQgYSBjcmF3bGVyLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29uZGl0aW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNvbmRpdGlvbiBvbiB0aGUgc3RhdGUgb2YgYSBqb2IuXG4gICAqXG4gICAqIEBwYXJhbSBqb2IgdGhlIGpvYiB0byB3YXRjaC5cbiAgICogQHBhcmFtIHN0YXRlIHRoZSBqb2Igc3RhdGUgdGhhdCBzYXRpc2ZpZXMgdGhlIGNvbmRpdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgY29uZGl0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBqb2Ioam9iOiBJSm9iUmVmLCBzdGF0ZTogSm9iU3RhdGUsIG9wdGlvbnM6IENvbmRpdGlvbk9wdGlvbnMgPSB7fSk6IENvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBKb2JDb25kaXRpb24oam9iLCBzdGF0ZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29uZGl0aW9uIG9uIHRoZSBzdGF0ZSBvZiBhIGNyYXdsZXIuXG4gICAqXG4gICAqIEBwYXJhbSBjcmF3bGVyIHRoZSBjcmF3bGVyIHRvIHdhdGNoLlxuICAgKiBAcGFyYW0gY3Jhd2xTdGF0ZSB0aGUgY3Jhd2xlciBzdGF0ZSB0aGF0IHNhdGlzZmllcyB0aGUgY29uZGl0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBjb25kaXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyYXdsZXIoY3Jhd2xlcjogSUNyYXdsZXJSZWYsIGNyYXdsU3RhdGU6IENyYXdsZXJTdGF0ZSwgb3B0aW9uczogQ29uZGl0aW9uT3B0aW9ucyA9IHt9KTogQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IENyYXdsZXJDb25kaXRpb24oY3Jhd2xlciwgY3Jhd2xTdGF0ZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoaXMgY29uZGl0aW9uIHRvIGl0cyBDbG91ZEZvcm1hdGlvbiByZXByZXNlbnRhdGlvbi5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgX3JlbmRlcigpOiBDZm5UcmlnZ2VyLkNvbmRpdGlvblByb3BlcnR5O1xufVxuXG4vKipcbiAqIEEgY29uZGl0aW9uIG9uIHRoZSBzdGF0ZSBvZiBhIGpvYi5cbiAqL1xuY2xhc3MgSm9iQ29uZGl0aW9uIGV4dGVuZHMgQ29uZGl0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBqb2I6IElKb2JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZTogSm9iU3RhdGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDb25kaXRpb25PcHRpb25zLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIF9yZW5kZXIoKTogQ2ZuVHJpZ2dlci5Db25kaXRpb25Qcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2ljYWxPcGVyYXRvcjogdGhpcy5vcHRpb25zLmxvZ2ljYWxPcGVyYXRvciA/PyBDb25kaXRpb25Mb2dpY2FsT3BlcmF0b3IuRVFVQUxTLFxuICAgICAgam9iTmFtZTogdGhpcy5qb2Iuam9iUmVmLmpvYk5hbWUsXG4gICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSBjb25kaXRpb24gb24gdGhlIHN0YXRlIG9mIGEgY3Jhd2xlci5cbiAqL1xuY2xhc3MgQ3Jhd2xlckNvbmRpdGlvbiBleHRlbmRzIENvbmRpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3Jhd2xlcjogSUNyYXdsZXJSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmF3bFN0YXRlOiBDcmF3bGVyU3RhdGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDb25kaXRpb25PcHRpb25zLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIF9yZW5kZXIoKTogQ2ZuVHJpZ2dlci5Db25kaXRpb25Qcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2ljYWxPcGVyYXRvcjogdGhpcy5vcHRpb25zLmxvZ2ljYWxPcGVyYXRvciA/PyBDb25kaXRpb25Mb2dpY2FsT3BlcmF0b3IuRVFVQUxTLFxuICAgICAgY3Jhd2xlck5hbWU6IHRoaXMuY3Jhd2xlci5jcmF3bGVyUmVmLmNyYXdsZXJOYW1lLFxuICAgICAgY3Jhd2xTdGF0ZTogdGhpcy5jcmF3bFN0YXRlLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGV2ZW50IHRyaWdnZXIgYmF0Y2ggY29uZGl0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QmF0Y2hpbmdDb25kaXRpb24ge1xuICAvKipcbiAgICogTnVtYmVyIG9mIGV2ZW50cyB0aGF0IG11c3QgYmUgcmVjZWl2ZWQgZnJvbSBBbWF6b24gRXZlbnRCcmlkZ2UgYmVmb3JlIEV2ZW50QnJpZGdlIGV2ZW50IHRyaWdnZXIgZmlyZXMuXG4gICAqL1xuICByZWFkb25seSBiYXRjaFNpemU6IG51bWJlcjtcblxuICAvKipcbiAgICogV2luZG93IG9mIHRpbWUgaW4gc2Vjb25kcyBhZnRlciB3aGljaCBFdmVudEJyaWRnZSBldmVudCB0cmlnZ2VyIGZpcmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDkwMCBzZWNvbmRzXG4gICAqL1xuICByZWFkb25seSBiYXRjaFdpbmRvdz86IGNkay5EdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyBhIEdsdWUgVHJpZ2dlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgbmFtZSBmb3IgdGhlIHRyaWdnZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZSBpcyBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIHRyaWdnZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9ucyBpbml0aWF0ZWQgYnkgdGhpcyB0cmlnZ2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uczogQWN0aW9uW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgYW4gb24tZGVtYW5kIEdsdWUgVHJpZ2dlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbkRlbWFuZFRyaWdnZXJPcHRpb25zIGV4dGVuZHMgVHJpZ2dlck9wdGlvbnMge31cblxuLyoqXG4gKiBCYXNlIG9wdGlvbnMgZm9yIHRyaWdnZXJzIHRoYXQgY2FuIGJlIHN0YXJ0ZWQgd2hlbiB0aGV5IGFyZSBjcmVhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0YWJsZVRyaWdnZXJPcHRpb25zIGV4dGVuZHMgVHJpZ2dlck9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBzdGFydCB0aGUgdHJpZ2dlciBvbiBjcmVhdGlvbiBvciBub3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0T25DcmVhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgYSBzY2hlZHVsZWQgR2x1ZSBUcmlnZ2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlZFRyaWdnZXJPcHRpb25zIGV4dGVuZHMgU3RhcnRhYmxlVHJpZ2dlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIG9uIHdoaWNoIHRoaXMgdHJpZ2dlciBmaXJlcy5cbiAgICpcbiAgICogQnVpbGQgb25lIHdpdGgge0BsaW5rIFRyaWdnZXJTY2hlZHVsZS5kYWlseX0sIHtAbGluayBUcmlnZ2VyU2NoZWR1bGUud2Vla2x5fSxcbiAgICoge0BsaW5rIFRyaWdnZXJTY2hlZHVsZS5jcm9ufSwgb3Ige0BsaW5rIFRyaWdnZXJTY2hlZHVsZS5leHByZXNzaW9ufS5cbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlOiBUcmlnZ2VyU2NoZWR1bGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgYW4gRXZlbnQgQnJpZGdlIGJhc2VkIEdsdWUgVHJpZ2dlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudFRyaWdnZXJPcHRpb25zIGV4dGVuZHMgVHJpZ2dlck9wdGlvbnMge1xuICAvKipcbiAgICogQmF0Y2ggY29uZGl0aW9uIGZvciB0aGUgdHJpZ2dlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBiYXRjaCBjb25kaXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50QmF0Y2hpbmdDb25kaXRpb24/OiBFdmVudEJhdGNoaW5nQ29uZGl0aW9uO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNvbmZpZ3VyaW5nIGEgQ29uZGl0aW9uIChQcmVkaWNhdGUpIGJhc2VkIEdsdWUgVHJpZ2dlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25hbFRyaWdnZXJPcHRpb25zIGV4dGVuZHMgU3RhcnRhYmxlVHJpZ2dlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHByZWRpY2F0ZSBmb3IgdGhlIHRyaWdnZXIuXG4gICAqL1xuICByZWFkb25seSBwcmVkaWNhdGU6IFByZWRpY2F0ZTtcbn1cbiJdfQ==