cdk8s-aws-cdk 0.0.7 → 0.0.9

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.
Files changed (91) hide show
  1. package/.gitattributes +11 -0
  2. package/.jsii +363 -9
  3. package/API.md +120 -13
  4. package/CODE_OF_CONDUCT.md +3 -0
  5. package/DCO +34 -0
  6. package/SECURITY.md +5 -0
  7. package/git-hooks/README.md +9 -0
  8. package/git-hooks/prepare-commit-msg +18 -0
  9. package/git-hooks/setup.sh +10 -0
  10. package/lib/adapter.d.ts +0 -1
  11. package/lib/adapter.js +6 -8
  12. package/lib/chart.d.ts +0 -1
  13. package/lib/chart.js +1 -1
  14. package/lib/imports/cloudcontrol.services.k8s.aws.d.ts +0 -1
  15. package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts +0 -1
  16. package/lib/imports/dynamotables-dynamodb.services.k8s.aws.js +10 -15
  17. package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts +0 -1
  18. package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.js +3 -5
  19. package/lib/imports/fieldexports-services.k8s.aws.d.ts +0 -1
  20. package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts +0 -1
  21. package/lib/imports/iampolicies-iam.services.k8s.aws.js +2 -3
  22. package/lib/imports/iamroles-iam.services.k8s.aws.d.ts +0 -1
  23. package/lib/imports/iamroles-iam.services.k8s.aws.js +3 -4
  24. package/lib/imports/k8s.d.ts +0 -1
  25. package/lib/imports/k8s.js +316 -515
  26. package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts +0 -1
  27. package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.js +7 -8
  28. package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts +0 -1
  29. package/lib/imports/lambdafunctions-lambda.services.k8s.aws.js +8 -11
  30. package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts +0 -1
  31. package/lib/imports/rdsdbinstances-rds.services.k8s.aws.js +6 -7
  32. package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts +0 -1
  33. package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.js +3 -4
  34. package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts +0 -1
  35. package/lib/imports/s3buckets-s3.services.k8s.aws.js +37 -64
  36. package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts +0 -1
  37. package/lib/imports/sfnmachines-sfn.services.k8s.aws.js +3 -5
  38. package/lib/imports/snstopics-sns.services.k8s.aws.d.ts +0 -1
  39. package/lib/imports/snstopics-sns.services.k8s.aws.js +2 -3
  40. package/lib/index.d.ts +0 -1
  41. package/lib/mappers/base.d.ts +0 -1
  42. package/lib/mappers/base.js +1 -1
  43. package/lib/mappers/ec2-security-group.d.ts +0 -1
  44. package/lib/mappers/ec2-security-group.js +3 -3
  45. package/lib/mappers/iam-policy.d.ts +0 -1
  46. package/lib/mappers/iam-policy.js +3 -3
  47. package/lib/mappers/iam-role.d.ts +0 -1
  48. package/lib/mappers/iam-role.js +3 -3
  49. package/lib/mappers/index.d.ts +0 -1
  50. package/lib/mappers/lambda-function.d.ts +0 -1
  51. package/lib/mappers/lambda-function.js +3 -3
  52. package/lib/mappers/rds-db-instance.d.ts +0 -1
  53. package/lib/mappers/rds-db-instance.js +3 -3
  54. package/lib/mappers/rds-db-subnet-group.d.ts +0 -1
  55. package/lib/mappers/rds-db-subnet-group.js +3 -3
  56. package/lib/mappers/s3-bucket.d.ts +0 -1
  57. package/lib/mappers/s3-bucket.js +4 -5
  58. package/package.json +24 -25
  59. package/changelog.md +0 -2
  60. package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.assets.json +0 -19
  61. package/examples/rds-db-instance/cdk.out/cdk.out +0 -1
  62. package/examples/rds-db-instance/cdk.out/manifest.json +0 -230
  63. package/examples/rds-db-instance/cdk.out/tree.json +0 -171
  64. package/lib/adapter.d.ts.map +0 -1
  65. package/lib/chart.d.ts.map +0 -1
  66. package/lib/imports/cloudcontrol.services.k8s.aws.d.ts.map +0 -1
  67. package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts.map +0 -1
  68. package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts.map +0 -1
  69. package/lib/imports/fieldexports-services.k8s.aws.d.ts.map +0 -1
  70. package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts.map +0 -1
  71. package/lib/imports/iamroles-iam.services.k8s.aws.d.ts.map +0 -1
  72. package/lib/imports/k8s.d.ts.map +0 -1
  73. package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts.map +0 -1
  74. package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts.map +0 -1
  75. package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts.map +0 -1
  76. package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts.map +0 -1
  77. package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts.map +0 -1
  78. package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts.map +0 -1
  79. package/lib/imports/snstopics-sns.services.k8s.aws.d.ts.map +0 -1
  80. package/lib/index.d.ts.map +0 -1
  81. package/lib/mappers/base.d.ts.map +0 -1
  82. package/lib/mappers/ec2-security-group.d.ts.map +0 -1
  83. package/lib/mappers/iam-policy.d.ts.map +0 -1
  84. package/lib/mappers/iam-role.d.ts.map +0 -1
  85. package/lib/mappers/index.d.ts.map +0 -1
  86. package/lib/mappers/lambda-function.d.ts.map +0 -1
  87. package/lib/mappers/rds-db-instance.d.ts.map +0 -1
  88. package/lib/mappers/rds-db-subnet-group.d.ts.map +0 -1
  89. package/lib/mappers/s3-bucket.d.ts.map +0 -1
  90. package/releasetag.txt +0 -1
  91. package/version.txt +0 -1
@@ -74,21 +74,20 @@ exports.toJson_TableProps = toJson_TableProps;
74
74
  */
75
75
  /* eslint-disable max-len, quote-props */
76
76
  function toJson_TableSpec(obj) {
77
- var _a, _b, _c, _d, _e;
78
77
  if (obj === undefined) {
79
78
  return undefined;
80
79
  }
81
80
  const result = {
82
- 'attributeDefinitions': (_a = obj.attributeDefinitions) === null || _a === void 0 ? void 0 : _a.map(y => toJson_TableSpecAttributeDefinitions(y)),
81
+ 'attributeDefinitions': obj.attributeDefinitions?.map(y => toJson_TableSpecAttributeDefinitions(y)),
83
82
  'billingMode': obj.billingMode,
84
- 'globalSecondaryIndexes': (_b = obj.globalSecondaryIndexes) === null || _b === void 0 ? void 0 : _b.map(y => toJson_TableSpecGlobalSecondaryIndexes(y)),
85
- 'keySchema': (_c = obj.keySchema) === null || _c === void 0 ? void 0 : _c.map(y => toJson_TableSpecKeySchema(y)),
86
- 'localSecondaryIndexes': (_d = obj.localSecondaryIndexes) === null || _d === void 0 ? void 0 : _d.map(y => toJson_TableSpecLocalSecondaryIndexes(y)),
83
+ 'globalSecondaryIndexes': obj.globalSecondaryIndexes?.map(y => toJson_TableSpecGlobalSecondaryIndexes(y)),
84
+ 'keySchema': obj.keySchema?.map(y => toJson_TableSpecKeySchema(y)),
85
+ 'localSecondaryIndexes': obj.localSecondaryIndexes?.map(y => toJson_TableSpecLocalSecondaryIndexes(y)),
87
86
  'provisionedThroughput': toJson_TableSpecProvisionedThroughput(obj.provisionedThroughput),
88
87
  'sseSpecification': toJson_TableSpecSseSpecification(obj.sseSpecification),
89
88
  'streamSpecification': toJson_TableSpecStreamSpecification(obj.streamSpecification),
90
89
  'tableName': obj.tableName,
91
- 'tags': (_e = obj.tags) === null || _e === void 0 ? void 0 : _e.map(y => toJson_TableSpecTags(y)),
90
+ 'tags': obj.tags?.map(y => toJson_TableSpecTags(y)),
92
91
  };
93
92
  // filter undefined values
94
93
  return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
@@ -115,13 +114,12 @@ exports.toJson_TableSpecAttributeDefinitions = toJson_TableSpecAttributeDefiniti
115
114
  */
116
115
  /* eslint-disable max-len, quote-props */
117
116
  function toJson_TableSpecGlobalSecondaryIndexes(obj) {
118
- var _a;
119
117
  if (obj === undefined) {
120
118
  return undefined;
121
119
  }
122
120
  const result = {
123
121
  'indexName': obj.indexName,
124
- 'keySchema': (_a = obj.keySchema) === null || _a === void 0 ? void 0 : _a.map(y => toJson_TableSpecGlobalSecondaryIndexesKeySchema(y)),
122
+ 'keySchema': obj.keySchema?.map(y => toJson_TableSpecGlobalSecondaryIndexesKeySchema(y)),
125
123
  'projection': toJson_TableSpecGlobalSecondaryIndexesProjection(obj.projection),
126
124
  'provisionedThroughput': toJson_TableSpecGlobalSecondaryIndexesProvisionedThroughput(obj.provisionedThroughput),
127
125
  };
@@ -150,13 +148,12 @@ exports.toJson_TableSpecKeySchema = toJson_TableSpecKeySchema;
150
148
  */
151
149
  /* eslint-disable max-len, quote-props */
152
150
  function toJson_TableSpecLocalSecondaryIndexes(obj) {
153
- var _a;
154
151
  if (obj === undefined) {
155
152
  return undefined;
156
153
  }
157
154
  const result = {
158
155
  'indexName': obj.indexName,
159
- 'keySchema': (_a = obj.keySchema) === null || _a === void 0 ? void 0 : _a.map(y => toJson_TableSpecLocalSecondaryIndexesKeySchema(y)),
156
+ 'keySchema': obj.keySchema?.map(y => toJson_TableSpecLocalSecondaryIndexesKeySchema(y)),
160
157
  'projection': toJson_TableSpecLocalSecondaryIndexesProjection(obj.projection),
161
158
  };
162
159
  // filter undefined values
@@ -249,12 +246,11 @@ exports.toJson_TableSpecGlobalSecondaryIndexesKeySchema = toJson_TableSpecGlobal
249
246
  */
250
247
  /* eslint-disable max-len, quote-props */
251
248
  function toJson_TableSpecGlobalSecondaryIndexesProjection(obj) {
252
- var _a;
253
249
  if (obj === undefined) {
254
250
  return undefined;
255
251
  }
256
252
  const result = {
257
- 'nonKeyAttributes': (_a = obj.nonKeyAttributes) === null || _a === void 0 ? void 0 : _a.map(y => y),
253
+ 'nonKeyAttributes': obj.nonKeyAttributes?.map(y => y),
258
254
  'projectionType': obj.projectionType,
259
255
  };
260
256
  // filter undefined values
@@ -298,12 +294,11 @@ exports.toJson_TableSpecLocalSecondaryIndexesKeySchema = toJson_TableSpecLocalSe
298
294
  */
299
295
  /* eslint-disable max-len, quote-props */
300
296
  function toJson_TableSpecLocalSecondaryIndexesProjection(obj) {
301
- var _a;
302
297
  if (obj === undefined) {
303
298
  return undefined;
304
299
  }
305
300
  const result = {
306
- 'nonKeyAttributes': (_a = obj.nonKeyAttributes) === null || _a === void 0 ? void 0 : _a.map(y => y),
301
+ 'nonKeyAttributes': obj.nonKeyAttributes?.map(y => y),
307
302
  'projectionType': obj.projectionType,
308
303
  };
309
304
  // filter undefined values
@@ -311,4 +306,4 @@ function toJson_TableSpecLocalSecondaryIndexesProjection(obj) {
311
306
  }
312
307
  exports.toJson_TableSpecLocalSecondaryIndexesProjection = toJson_TableSpecLocalSecondaryIndexesProjection;
313
308
  /* eslint-enable max-len, quote-props */
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1vdGFibGVzLWR5bmFtb2RiLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9keW5hbW90YWJsZXMtZHluYW1vZGIuc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLEtBQU0sU0FBUSxpQkFBUztJQXVCbEM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQixFQUFFO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLLENBQUMsR0FBRztZQUNaLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUF6QkQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFvQixFQUFFO1FBQzNDLE9BQU87WUFDTCxHQUFHLEtBQUssQ0FBQyxHQUFHO1lBQ1osR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFlRDs7T0FFRztJQUNJLE1BQU07UUFDWCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEMsT0FBTztZQUNMLEdBQUcsS0FBSyxDQUFDLEdBQUc7WUFDWixHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztTQUMvQixDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsc0JBK0NDO0FBOUNDOztHQUVHO0FBQ29CLFNBQUcsR0FBcUI7SUFDN0MsVUFBVSxFQUFFLG9DQUFvQztJQUNoRCxJQUFJLEVBQUUsT0FBTztDQUNkLENBQUM7QUE4REo7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IsaUJBQWlCLENBQUMsR0FBMkI7SUFDM0QsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENB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LENBQUM7QUFSRCx3R0FRQztBQXFCRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQiwrQ0FBK0MsQ0FBQyxHQUF5RDs7SUFDdkgsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLGtCQUFrQixRQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsMENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxjQUFjO0tBQ3JDLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVJELDBHQVFDO0FBQ0Qsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGJ5IGNkazhzXG5pbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLyoqXG4gKiBUYWJsZSBpcyB0aGUgU2NoZW1hIGZvciB0aGUgVGFibGVzIEFQSVxuICpcbiAqIEBzY2hlbWEgVGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiVGFibGVcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2R5bmFtb2RiLnNlcnZpY2VzLms4cy5hd3MvdjFhbHBoYTEnLFxuICAgIGtpbmQ6ICdUYWJsZScsXG4gIH07XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIlRhYmxlXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IFRhYmxlUHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLlRhYmxlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9UYWJsZVByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIlRhYmxlXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUYWJsZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLlRhYmxlLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5UYWJsZS5HVkssXG4gICAgICAuLi50b0pzb25fVGFibGVQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRhYmxlIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBUYWJsZXMgQVBJXG4gKlxuICogQHNjaGVtYSBUYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZSNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogVGFibGVTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgVGFibGUuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGUjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IFRhYmxlU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVByb3BzKG9iajogVGFibGVQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX1RhYmxlU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVGFibGVTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgVGFibGUuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWMge1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYXR0cmlidXRlcyB0aGF0IGRlc2NyaWJlIHRoZSBrZXkgc2NoZW1hIGZvciB0aGUgdGFibGUgYW5kIGluZGV4ZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI2F0dHJpYnV0ZURlZmluaXRpb25zXG4gICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGVEZWZpbml0aW9uczogVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnNbXTtcblxuICAvKipcbiAgICogQ29udHJvbHMgaG93IHlvdSBhcmUgY2hhcmdlZCBmb3IgcmVhZCBhbmQgd3JpdGUgdGhyb3VnaHB1dCBhbmQgaG93IHlvdSBtYW5hZ2UgY2FwYWNpdHkuIFRoaXMgc2V0dGluZyBjYW4gYmUgY2hhbmdlZCBsYXRlci5cbiAgICogKiBQUk9WSVNJT05FRCAtIFdlIHJlY29tbWVuZCB1c2luZyBQUk9WSVNJT05FRCBmb3IgcHJlZGljdGFibGUgd29ya2xvYWRzLiAgICBQUk9WSVNJT05FRCBzZXRzIHRoZSBiaWxsaW5nIG1vZGUgdG8gUHJvdmlzaW9uZWQgTW9kZSAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Ib3dJdFdvcmtzLlJlYWRXcml0ZUNhcGFjaXR5TW9kZS5odG1sI0hvd0l0V29ya3MuUHJvdmlzaW9uZWRUaHJvdWdocHV0Lk1hbnVhbCkuXG4gICAqICogUEFZX1BFUl9SRVFVRVNUIC0gV2UgcmVjb21tZW5kIHVzaW5nIFBBWV9QRVJfUkVRVUVTVCBmb3IgdW5wcmVkaWN0YWJsZSAgICB3b3JrbG9hZHMuIFBBWV9QRVJfUkVRVUVTVCBzZXRzIHRoZSBiaWxsaW5nIG1vZGUgdG8gT24tRGVtYW5kIE1vZGUgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvSG93SXRXb3Jrcy5SZWFkV3JpdGVDYXBhY2l0eU1vZGUuaHRtbCNIb3dJdFdvcmtzLk9uRGVtYW5kKS5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWMjYmlsbGluZ01vZGVcbiAgICovXG4gIHJlYWRvbmx5IGJpbGxpbmdNb2RlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4ZXMgKHRoZSBtYXhpbXVtIGlzIDIwKSB0byBiZSBjcmVhdGVkIG9uIHRoZSB0YWJsZS4gRWFjaCBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4IGluIHRoZSBhcnJheSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEluZGV4TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LiBNdXN0IGJlIHVuaXF1ZSBvbmx5ICAgIGZvciB0aGlzIHRhYmxlLlxuICAgKiAqIEtleVNjaGVtYSAtIFNwZWNpZmllcyB0aGUga2V5IHNjaGVtYSBmb3IgdGhlIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguXG4gICAqICogUHJvamVjdGlvbiAtIFNwZWNpZmllcyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSAgICB0YWJsZSBpbnRvIHRoZSBpbmRleC4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVzICAgIGFuZCBpbmRleCBrZXkgYXR0cmlidXRlcywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgcHJvamVjdGVkLiBFYWNoIGF0dHJpYnV0ZSAgICBzcGVjaWZpY2F0aW9uIGlzIGNvbXBvc2VkIG9mOiBQcm9qZWN0aW9uVHlwZSAtIE9uZSBvZiB0aGUgZm9sbG93aW5nOiBLRVlTX09OTFkgICAgLSBPbmx5IHRoZSBpbmRleCBhbmQgcHJpbWFyeSBrZXlzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguIElOQ0xVREUgICAgLSBPbmx5IHRoZSBzcGVjaWZpZWQgdGFibGUgYXR0cmlidXRlcyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LiBUaGUgICAgbGlzdCBvZiBwcm9qZWN0ZWQgYXR0cmlidXRlcyBpcyBpbiBOb25LZXlBdHRyaWJ1dGVzLiBBTEwgLSBBbGwgb2YgdGhlICAgIHRhYmxlIGF0dHJpYnV0ZXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC4gTm9uS2V5QXR0cmlidXRlcyAtIEEgbGlzdCAgICBvZiBvbmUgb3IgbW9yZSBub24ta2V5IGF0dHJpYnV0ZSBuYW1lcyB0aGF0IGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgc2Vjb25kYXJ5ICAgIGluZGV4LiBUaGUgdG90YWwgY291bnQgb2YgYXR0cmlidXRlcyBwcm92aWRlZCBpbiBOb25LZXlBdHRyaWJ1dGVzLCBzdW1tZWQgICAgYWNyb3NzIGFsbCBvZiB0aGUgc2Vjb25kYXJ5IGluZGV4ZXMsIG11c3Qgbm90IGV4Y2VlZCAxMDAuIElmIHlvdSBwcm9qZWN0ICAgIHRoZSBzYW1lIGF0dHJpYnV0ZSBpbnRvIHR3byBkaWZmZXJlbnQgaW5kZXhlcywgdGhpcyBjb3VudHMgYXMgdHdvIGRpc3RpbmN0ICAgIGF0dHJpYnV0ZXMgd2hlbiBkZXRlcm1pbmluZyB0aGUgdG90YWwuXG4gICAqICogUHJvdmlzaW9uZWRUaHJvdWdocHV0IC0gVGhlIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgc2V0dGluZ3MgZm9yIHRoZSAgICBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LCBjb25zaXN0aW5nIG9mIHJlYWQgYW5kIHdyaXRlIGNhcGFjaXR5IHVuaXRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyNnbG9iYWxTZWNvbmRhcnlJbmRleGVzXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxTZWNvbmRhcnlJbmRleGVzPzogVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBtYWtlIHVwIHRoZSBwcmltYXJ5IGtleSBmb3IgYSB0YWJsZSBvciBhbiBpbmRleC4gVGhlIGF0dHJpYnV0ZXMgaW4gS2V5U2NoZW1hIG11c3QgYWxzbyBiZSBkZWZpbmVkIGluIHRoZSBBdHRyaWJ1dGVEZWZpbml0aW9ucyBhcnJheS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEYXRhIE1vZGVsIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0RhdGFNb2RlbC5odG1sKSBpbiB0aGUgQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZS5cbiAgICogRWFjaCBLZXlTY2hlbWFFbGVtZW50IGluIHRoZSBhcnJheSBpcyBjb21wb3NlZCBvZjpcbiAgICogKiBBdHRyaWJ1dGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhpcyBrZXkgYXR0cmlidXRlLlxuICAgKiAqIEtleVR5cGUgLSBUaGUgcm9sZSB0aGF0IHRoZSBrZXkgYXR0cmlidXRlIHdpbGwgYXNzdW1lOiBIQVNIIC0gcGFydGl0aW9uICAgIGtleSBSQU5HRSAtIHNvcnQga2V5XG4gICAqIFRoZSBwYXJ0aXRpb24ga2V5IG9mIGFuIGl0ZW0gaXMgYWxzbyBrbm93biBhcyBpdHMgaGFzaCBhdHRyaWJ1dGUuIFRoZSB0ZXJtIFwiaGFzaCBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gdGhlIER5bmFtb0RCIHVzYWdlIG9mIGFuIGludGVybmFsIGhhc2ggZnVuY3Rpb24gdG8gZXZlbmx5IGRpc3RyaWJ1dGUgZGF0YSBpdGVtcyBhY3Jvc3MgcGFydGl0aW9ucywgYmFzZWQgb24gdGhlaXIgcGFydGl0aW9uIGtleSB2YWx1ZXMuXG4gICAqIFRoZSBzb3J0IGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzIHJhbmdlIGF0dHJpYnV0ZS4gVGhlIHRlcm0gXCJyYW5nZSBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gdGhlIHdheSBEeW5hbW9EQiBzdG9yZXMgaXRlbXMgd2l0aCB0aGUgc2FtZSBwYXJ0aXRpb24ga2V5IHBoeXNpY2FsbHkgY2xvc2UgdG9nZXRoZXIsIGluIHNvcnRlZCBvcmRlciBieSB0aGUgc29ydCBrZXkgdmFsdWUuXG4gICAqIEZvciBhIHNpbXBsZSBwcmltYXJ5IGtleSAocGFydGl0aW9uIGtleSksIHlvdSBtdXN0IHByb3ZpZGUgZXhhY3RseSBvbmUgZWxlbWVudCB3aXRoIGEgS2V5VHlwZSBvZiBIQVNILlxuICAgKiBGb3IgYSBjb21wb3NpdGUgcHJpbWFyeSBrZXkgKHBhcnRpdGlvbiBrZXkgYW5kIHNvcnQga2V5KSwgeW91IG11c3QgcHJvdmlkZSBleGFjdGx5IHR3byBlbGVtZW50cywgaW4gdGhpcyBvcmRlcjogVGhlIGZpcnN0IGVsZW1lbnQgbXVzdCBoYXZlIGEgS2V5VHlwZSBvZiBIQVNILCBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG11c3QgaGF2ZSBhIEtleVR5cGUgb2YgUkFOR0UuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgV29ya2luZyB3aXRoIFRhYmxlcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Xb3JraW5nV2l0aFRhYmxlcy5odG1sI1dvcmtpbmdXaXRoVGFibGVzLnByaW1hcnkua2V5KSBpbiB0aGUgQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZS5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWMja2V5U2NoZW1hXG4gICAqL1xuICByZWFkb25seSBrZXlTY2hlbWE6IFRhYmxlU3BlY0tleVNjaGVtYVtdO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXhlcyAodGhlIG1heGltdW0gaXMgNSkgdG8gYmUgY3JlYXRlZCBvbiB0aGUgdGFibGUuIEVhY2ggaW5kZXggaXMgc2NvcGVkIHRvIGEgZ2l2ZW4gcGFydGl0aW9uIGtleSB2YWx1ZS4gVGhlcmUgaXMgYSAxMCBHQiBzaXplIGxpbWl0IHBlciBwYXJ0aXRpb24ga2V5IHZhbHVlOyBvdGhlcndpc2UsIHRoZSBzaXplIG9mIGEgbG9jYWwgc2Vjb25kYXJ5IGluZGV4IGlzIHVuY29uc3RyYWluZWQuXG4gICAqIEVhY2ggbG9jYWwgc2Vjb25kYXJ5IGluZGV4IGluIHRoZSBhcnJheSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEluZGV4TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXguIE11c3QgYmUgdW5pcXVlIG9ubHkgICAgZm9yIHRoaXMgdGFibGUuXG4gICAqICogS2V5U2NoZW1hIC0gU3BlY2lmaWVzIHRoZSBrZXkgc2NoZW1hIGZvciB0aGUgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LiAgICBUaGUga2V5IHNjaGVtYSBtdXN0IGJlZ2luIHdpdGggdGhlIHNhbWUgcGFydGl0aW9uIGtleSBhcyB0aGUgdGFibGUuXG4gICAqICogUHJvamVjdGlvbiAtIFNwZWNpZmllcyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSAgICB0YWJsZSBpbnRvIHRoZSBpbmRleC4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVzICAgIGFuZCBpbmRleCBrZXkgYXR0cmlidXRlcywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgcHJvamVjdGVkLiBFYWNoIGF0dHJpYnV0ZSAgICBzcGVjaWZpY2F0aW9uIGlzIGNvbXBvc2VkIG9mOiBQcm9qZWN0aW9uVHlwZSAtIE9uZSBvZiB0aGUgZm9sbG93aW5nOiBLRVlTX09OTFkgICAgLSBPbmx5IHRoZSBpbmRleCBhbmQgcHJpbWFyeSBrZXlzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguIElOQ0xVREUgICAgLSBPbmx5IHRoZSBzcGVjaWZpZWQgdGFibGUgYXR0cmlidXRlcyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LiBUaGUgICAgbGlzdCBvZiBwcm9qZWN0ZWQgYXR0cmlidXRlcyBpcyBpbiBOb25LZXlBdHRyaWJ1dGVzLiBBTEwgLSBBbGwgb2YgdGhlICAgIHRhYmxlIGF0dHJpYnV0ZXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC4gTm9uS2V5QXR0cmlidXRlcyAtIEEgbGlzdCAgICBvZiBvbmUgb3IgbW9yZSBub24ta2V5IGF0dHJpYnV0ZSBuYW1lcyB0aGF0IGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgc2Vjb25kYXJ5ICAgIGluZGV4LiBUaGUgdG90YWwgY291bnQgb2YgYXR0cmlidXRlcyBwcm92aWRlZCBpbiBOb25LZXlBdHRyaWJ1dGVzLCBzdW1tZWQgICAgYWNyb3NzIGFsbCBvZiB0aGUgc2Vjb25kYXJ5IGluZGV4ZXMsIG11c3Qgbm90IGV4Y2VlZCAxMDAuIElmIHlvdSBwcm9qZWN0ICAgIHRoZSBzYW1lIGF0dHJpYnV0ZSBpbnRvIHR3byBkaWZmZXJlbnQgaW5kZXhlcywgdGhpcyBjb3VudHMgYXMgdHdvIGRpc3RpbmN0ICAgIGF0dHJpYnV0ZXMgd2hlbiBkZXRlcm1pbmluZyB0aGUgdG90YWwuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI2xvY2FsU2Vjb25kYXJ5SW5kZXhlc1xuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWxTZWNvbmRhcnlJbmRleGVzPzogVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzW107XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgc2V0dGluZ3MgZm9yIGEgc3BlY2lmaWVkIHRhYmxlIG9yIGluZGV4LiBUaGUgc2V0dGluZ3MgY2FuIGJlIG1vZGlmaWVkIHVzaW5nIHRoZSBVcGRhdGVUYWJsZSBvcGVyYXRpb24uXG4gICAqIElmIHlvdSBzZXQgQmlsbGluZ01vZGUgYXMgUFJPVklTSU9ORUQsIHlvdSBtdXN0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gSWYgeW91IHNldCBCaWxsaW5nTW9kZSBhcyBQQVlfUEVSX1JFUVVFU1QsIHlvdSBjYW5ub3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LlxuICAgKiBGb3IgY3VycmVudCBtaW5pbXVtIGFuZCBtYXhpbXVtIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgdmFsdWVzLCBzZWUgU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3RhcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI3Byb3Zpc2lvbmVkVGhyb3VnaHB1dFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlzaW9uZWRUaHJvdWdocHV0PzogVGFibGVTcGVjUHJvdmlzaW9uZWRUaHJvdWdocHV0O1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBzZXR0aW5ncyB1c2VkIHRvIGVuYWJsZSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyNzc2VTcGVjaWZpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBzc2VTcGVjaWZpY2F0aW9uPzogVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIGZvciBEeW5hbW9EQiBTdHJlYW1zIG9uIHRoZSB0YWJsZS4gVGhlc2Ugc2V0dGluZ3MgY29uc2lzdCBvZjpcbiAgICogKiBTdHJlYW1FbmFibGVkIC0gSW5kaWNhdGVzIHdoZXRoZXIgRHluYW1vREIgU3RyZWFtcyBpcyB0byBiZSBlbmFibGVkICAgICh0cnVlKSBvciBkaXNhYmxlZCAoZmFsc2UpLlxuICAgKiAqIFN0cmVhbVZpZXdUeXBlIC0gV2hlbiBhbiBpdGVtIGluIHRoZSB0YWJsZSBpcyBtb2RpZmllZCwgU3RyZWFtVmlld1R5cGUgICAgZGV0ZXJtaW5lcyB3aGF0IGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gdG8gdGhlIHRhYmxlJ3Mgc3RyZWFtLiBWYWxpZCB2YWx1ZXMgICAgZm9yIFN0cmVhbVZpZXdUeXBlIGFyZTogS0VZU19PTkxZIC0gT25seSB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgdGhlIG1vZGlmaWVkICAgIGl0ZW0gYXJlIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gTkVXX0lNQUdFIC0gVGhlIGVudGlyZSBpdGVtLCBhcyBpdCBhcHBlYXJzICAgIGFmdGVyIGl0IHdhcyBtb2RpZmllZCwgaXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtLiBPTERfSU1BR0UgLSBUaGUgZW50aXJlICAgIGl0ZW0sIGFzIGl0IGFwcGVhcmVkIGJlZm9yZSBpdCB3YXMgbW9kaWZpZWQsIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gICAgTkVXX0FORF9PTERfSU1BR0VTIC0gQm90aCB0aGUgbmV3IGFuZCB0aGUgb2xkIGl0ZW0gaW1hZ2VzIG9mIHRoZSBpdGVtICAgIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI3N0cmVhbVNwZWNpZmljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN0cmVhbVNwZWNpZmljYXRpb24/OiBUYWJsZVNwZWNTdHJlYW1TcGVjaWZpY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gY3JlYXRlLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyN0YWJsZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGxhYmVsIHRoZSB0YWJsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBUYWdnaW5nIGZvciBEeW5hbW9EQiAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9UYWdnaW5nLmh0bWwpLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyN0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogVGFibGVTcGVjVGFnc1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjKG9iajogVGFibGVTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXR0cmlidXRlRGVmaW5pdGlvbnMnOiBvYmouYXR0cmlidXRlRGVmaW5pdGlvbnM/Lm1hcCh5ID0+IHRvSnNvbl9UYWJsZVNwZWNBdHRyaWJ1dGVEZWZpbml0aW9ucyh5KSksXG4gICAgJ2JpbGxpbmdNb2RlJzogb2JqLmJpbGxpbmdNb2RlLFxuICAgICdnbG9iYWxTZWNvbmRhcnlJbmRleGVzJzogb2JqLmdsb2JhbFNlY29uZGFyeUluZGV4ZXM/Lm1hcCh5ID0+IHRvSnNvbl9UYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzKHkpKSxcbiAgICAna2V5U2NoZW1hJzogb2JqLmtleVNjaGVtYT8ubWFwKHkgPT4gdG9Kc29uX1RhYmxlU3BlY0tleVNjaGVtYSh5KSksXG4gICAgJ2xvY2FsU2Vjb25kYXJ5SW5kZXhlcyc6IG9iai5sb2NhbFNlY29uZGFyeUluZGV4ZXM/Lm1hcCh5ID0+IHRvSnNvbl9UYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXMoeSkpLFxuICAgICdwcm92aXNpb25lZFRocm91Z2hwdXQnOiB0b0pzb25fVGFibGVTcGVjUHJvdmlzaW9uZWRUaHJvdWdocHV0KG9iai5wcm92aXNpb25lZFRocm91Z2hwdXQpLFxuICAgICdzc2VTcGVjaWZpY2F0aW9uJzogdG9Kc29uX1RhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24ob2JqLnNzZVNwZWNpZmljYXRpb24pLFxuICAgICdzdHJlYW1TcGVjaWZpY2F0aW9uJzogdG9Kc29uX1RhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24ob2JqLnN0cmVhbVNwZWNpZmljYXRpb24pLFxuICAgICd0YWJsZU5hbWUnOiBvYmoudGFibGVOYW1lLFxuICAgICd0YWdzJzogb2JqLnRhZ3M/Lm1hcCh5ID0+IHRvSnNvbl9UYWJsZVNwZWNUYWdzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGF0dHJpYnV0ZSBmb3IgZGVzY3JpYmluZyB0aGUga2V5IHNjaGVtYSBmb3IgdGhlIHRhYmxlIGFuZCBpbmRleGVzLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWNBdHRyaWJ1dGVEZWZpbml0aW9ucyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0F0dHJpYnV0ZURlZmluaXRpb25zI2F0dHJpYnV0ZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnMjYXR0cmlidXRlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgYXR0cmlidXRlVHlwZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVNwZWNBdHRyaWJ1dGVEZWZpbml0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnMob2JqOiBUYWJsZVNwZWNBdHRyaWJ1dGVEZWZpbml0aW9ucyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2F0dHJpYnV0ZU5hbWUnOiBvYmouYXR0cmlidXRlTmFtZSxcbiAgICAnYXR0cmlidXRlVHlwZSc6IG9iai5hdHRyaWJ1dGVUeXBlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHByb3BlcnRpZXMgb2YgYSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzI2luZGV4TmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZXhOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMja2V5U2NoZW1hXG4gICAqL1xuICByZWFkb25seSBrZXlTY2hlbWE/OiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hW107XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYXR0cmlidXRlcyB0aGF0IGFyZSBjb3BpZWQgKHByb2plY3RlZCkgZnJvbSB0aGUgdGFibGUgaW50byBhbiBpbmRleC4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVzIGFuZCBpbmRleCBrZXkgYXR0cmlidXRlcywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgcHJvamVjdGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMjcHJvamVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdGlvbj86IFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHNldHRpbmdzIGZvciBhIHNwZWNpZmllZCB0YWJsZSBvciBpbmRleC4gVGhlIHNldHRpbmdzIGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgVXBkYXRlVGFibGUgb3BlcmF0aW9uLlxuICAgKiBGb3IgY3VycmVudCBtaW5pbXVtIGFuZCBtYXhpbXVtIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgdmFsdWVzLCBzZWUgU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3RhcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcyNwcm92aXNpb25lZFRocm91Z2hwdXRcbiAgICovXG4gIHJlYWRvbmx5IHByb3Zpc2lvbmVkVGhyb3VnaHB1dD86IFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQ7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcyhvYmo6IFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpbmRleE5hbWUnOiBvYmouaW5kZXhOYW1lLFxuICAgICdrZXlTY2hlbWEnOiBvYmoua2V5U2NoZW1hPy5tYXAoeSA9PiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSh5KSksXG4gICAgJ3Byb2plY3Rpb24nOiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24ob2JqLnByb2plY3Rpb24pLFxuICAgICdwcm92aXNpb25lZFRocm91Z2hwdXQnOiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb3Zpc2lvbmVkVGhyb3VnaHB1dChvYmoucHJvdmlzaW9uZWRUaHJvdWdocHV0KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGVsZW1lbnQgb2YgYSBrZXkgc2NoZW1hLiBBIGtleSBzY2hlbWEgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgbWFrZSB1cCB0aGUgcHJpbWFyeSBrZXkgb2YgYSB0YWJsZSwgb3IgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIGFuIGluZGV4LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IHJlcHJlc2VudHMgZXhhY3RseSBvbmUgYXR0cmlidXRlIG9mIHRoZSBwcmltYXJ5IGtleS4gRm9yIGV4YW1wbGUsIGEgc2ltcGxlIHByaW1hcnkga2V5IHdvdWxkIGJlIHJlcHJlc2VudGVkIGJ5IG9uZSBLZXlTY2hlbWFFbGVtZW50IChmb3IgdGhlIHBhcnRpdGlvbiBrZXkpLiBBIGNvbXBvc2l0ZSBwcmltYXJ5IGtleSB3b3VsZCByZXF1aXJlIG9uZSBLZXlTY2hlbWFFbGVtZW50IGZvciB0aGUgcGFydGl0aW9uIGtleSwgYW5kIGFub3RoZXIgS2V5U2NoZW1hRWxlbWVudCBmb3IgdGhlIHNvcnQga2V5LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IG11c3QgYmUgYSBzY2FsYXIsIHRvcC1sZXZlbCBhdHRyaWJ1dGUgKG5vdCBhIG5lc3RlZCBhdHRyaWJ1dGUpLiBUaGUgZGF0YSB0eXBlIG11c3QgYmUgb25lIG9mIFN0cmluZywgTnVtYmVyLCBvciBCaW5hcnkuIFRoZSBhdHRyaWJ1dGUgY2Fubm90IGJlIG5lc3RlZCB3aXRoaW4gYSBMaXN0IG9yIGEgTWFwLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjS2V5U2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjS2V5U2NoZW1hIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjS2V5U2NoZW1hI2F0dHJpYnV0ZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjS2V5U2NoZW1hI2tleVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGtleVR5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjS2V5U2NoZW1hJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVNwZWNLZXlTY2hlbWEob2JqOiBUYWJsZVNwZWNLZXlTY2hlbWEgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhdHRyaWJ1dGVOYW1lJzogb2JqLmF0dHJpYnV0ZU5hbWUsXG4gICAgJ2tleVR5cGUnOiBvYmoua2V5VHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm9wZXJ0aWVzIG9mIGEgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzI2luZGV4TmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZXhOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlcyNrZXlTY2hlbWFcbiAgICovXG4gIHJlYWRvbmx5IGtleVNjaGVtYT86IFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYVtdO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGF0dHJpYnV0ZXMgdGhhdCBhcmUgY29waWVkIChwcm9qZWN0ZWQpIGZyb20gdGhlIHRhYmxlIGludG8gYW4gaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXMjcHJvamVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdGlvbj86IFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb247XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXMob2JqOiBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpbmRleE5hbWUnOiBvYmouaW5kZXhOYW1lLFxuICAgICdrZXlTY2hlbWEnOiBvYmoua2V5U2NoZW1hPy5tYXAoeSA9PiB0b0pzb25fVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hKHkpKSxcbiAgICAncHJvamVjdGlvbic6IHRvSnNvbl9UYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uKG9iai5wcm9qZWN0aW9uKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHNldHRpbmdzIGZvciBhIHNwZWNpZmllZCB0YWJsZSBvciBpbmRleC4gVGhlIHNldHRpbmdzIGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgVXBkYXRlVGFibGUgb3BlcmF0aW9uLlxuICogSWYgeW91IHNldCBCaWxsaW5nTW9kZSBhcyBQUk9WSVNJT05FRCwgeW91IG11c3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBJZiB5b3Ugc2V0IEJpbGxpbmdNb2RlIGFzIFBBWV9QRVJfUkVRVUVTVCwgeW91IGNhbm5vdCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuXG4gKiBGb3IgY3VycmVudCBtaW5pbXVtIGFuZCBtYXhpbXVtIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgdmFsdWVzLCBzZWUgU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3RhcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXQge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXQjcmVhZENhcGFjaXR5VW5pdHNcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRDYXBhY2l0eVVuaXRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1Byb3Zpc2lvbmVkVGhyb3VnaHB1dCN3cml0ZUNhcGFjaXR5VW5pdHNcbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlQ2FwYWNpdHlVbml0cz86IG51bWJlcjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY1Byb3Zpc2lvbmVkVGhyb3VnaHB1dChvYmo6IFRhYmxlU3BlY1Byb3Zpc2lvbmVkVGhyb3VnaHB1dCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlYWRDYXBhY2l0eVVuaXRzJzogb2JqLnJlYWRDYXBhY2l0eVVuaXRzLFxuICAgICd3cml0ZUNhcGFjaXR5VW5pdHMnOiBvYmoud3JpdGVDYXBhY2l0eVVuaXRzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHNldHRpbmdzIHVzZWQgdG8gZW5hYmxlIHNlcnZlci1zaWRlIGVuY3J5cHRpb24uXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNTc2VTcGVjaWZpY2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24jZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvbiNrbXNNYXN0ZXJLZXlJRFxuICAgKi9cbiAgcmVhZG9ubHkga21zTWFzdGVyS2V5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvbiNzc2VUeXBlXG4gICAqL1xuICByZWFkb25seSBzc2VUeXBlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24ob2JqOiBUYWJsZVNwZWNTc2VTcGVjaWZpY2F0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICAgICdrbXNNYXN0ZXJLZXlJRCc6IG9iai5rbXNNYXN0ZXJLZXlJZCxcbiAgICAnc3NlVHlwZSc6IG9iai5zc2VUeXBlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgRHluYW1vREIgU3RyZWFtcyBvbiB0aGUgdGFibGUuIFRoZXNlIHNldHRpbmdzIGNvbnNpc3Qgb2Y6XG4gKiAqIFN0cmVhbUVuYWJsZWQgLSBJbmRpY2F0ZXMgd2hldGhlciBEeW5hbW9EQiBTdHJlYW1zIGlzIHRvIGJlIGVuYWJsZWQgICAgKHRydWUpIG9yIGRpc2FibGVkIChmYWxzZSkuXG4gKiAqIFN0cmVhbVZpZXdUeXBlIC0gV2hlbiBhbiBpdGVtIGluIHRoZSB0YWJsZSBpcyBtb2RpZmllZCwgU3RyZWFtVmlld1R5cGUgICAgZGV0ZXJtaW5lcyB3aGF0IGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gdG8gdGhlIHRhYmxlJ3Mgc3RyZWFtLiBWYWxpZCB2YWx1ZXMgICAgZm9yIFN0cmVhbVZpZXdUeXBlIGFyZTogS0VZU19PTkxZIC0gT25seSB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgdGhlIG1vZGlmaWVkICAgIGl0ZW0gYXJlIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gTkVXX0lNQUdFIC0gVGhlIGVudGlyZSBpdGVtLCBhcyBpdCBhcHBlYXJzICAgIGFmdGVyIGl0IHdhcyBtb2RpZmllZCwgaXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtLiBPTERfSU1BR0UgLSBUaGUgZW50aXJlICAgIGl0ZW0sIGFzIGl0IGFwcGVhcmVkIGJlZm9yZSBpdCB3YXMgbW9kaWZpZWQsIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gICAgTkVXX0FORF9PTERfSU1BR0VTIC0gQm90aCB0aGUgbmV3IGFuZCB0aGUgb2xkIGl0ZW0gaW1hZ2VzIG9mIHRoZSBpdGVtICAgIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNTdHJlYW1TcGVjaWZpY2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24jc3RyZWFtRW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RyZWFtRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvbiNzdHJlYW1WaWV3VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyZWFtVmlld1R5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvbihvYmo6IFRhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdzdHJlYW1FbmFibGVkJzogb2JqLnN0cmVhbUVuYWJsZWQsXG4gICAgJ3N0cmVhbVZpZXdUeXBlJzogb2JqLnN0cmVhbVZpZXdUeXBlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIERlc2NyaWJlcyBhIHRhZy4gQSB0YWcgaXMgYSBrZXktdmFsdWUgcGFpci4gWW91IGNhbiBhZGQgdXAgdG8gNTAgdGFncyB0byBhIHNpbmdsZSBEeW5hbW9EQiB0YWJsZS5cbiAqIEFXUy1hc3NpZ25lZCB0YWcgbmFtZXMgYW5kIHZhbHVlcyBhcmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0aGUgYXdzOiBwcmVmaXgsIHdoaWNoIHRoZSB1c2VyIGNhbm5vdCBhc3NpZ24uIEFXUy1hc3NpZ25lZCB0YWcgbmFtZXMgZG8gbm90IGNvdW50IHRvd2FyZHMgdGhlIHRhZyBsaW1pdCBvZiA1MC4gVXNlci1hc3NpZ25lZCB0YWcgbmFtZXMgaGF2ZSB0aGUgcHJlZml4IHVzZXI6IGluIHRoZSBDb3N0IEFsbG9jYXRpb24gUmVwb3J0LiBZb3UgY2Fubm90IGJhY2tkYXRlIHRoZSBhcHBsaWNhdGlvbiBvZiBhIHRhZy5cbiAqIEZvciBhbiBvdmVydmlldyBvbiB0YWdnaW5nIER5bmFtb0RCIHJlc291cmNlcywgc2VlIFRhZ2dpbmcgZm9yIER5bmFtb0RCIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1RhZ2dpbmcuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNUYWdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjVGFncyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1RhZ3Mja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjVGFncyN2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjVGFncycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjVGFncyhvYmo6IFRhYmxlU3BlY1RhZ3MgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICAgICd2YWx1ZSc6IG9iai52YWx1ZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGVsZW1lbnQgb2YgYSBrZXkgc2NoZW1hLiBBIGtleSBzY2hlbWEgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgbWFrZSB1cCB0aGUgcHJpbWFyeSBrZXkgb2YgYSB0YWJsZSwgb3IgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIGFuIGluZGV4LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IHJlcHJlc2VudHMgZXhhY3RseSBvbmUgYXR0cmlidXRlIG9mIHRoZSBwcmltYXJ5IGtleS4gRm9yIGV4YW1wbGUsIGEgc2ltcGxlIHByaW1hcnkga2V5IHdvdWxkIGJlIHJlcHJlc2VudGVkIGJ5IG9uZSBLZXlTY2hlbWFFbGVtZW50IChmb3IgdGhlIHBhcnRpdGlvbiBrZXkpLiBBIGNvbXBvc2l0ZSBwcmltYXJ5IGtleSB3b3VsZCByZXF1aXJlIG9uZSBLZXlTY2hlbWFFbGVtZW50IGZvciB0aGUgcGFydGl0aW9uIGtleSwgYW5kIGFub3RoZXIgS2V5U2NoZW1hRWxlbWVudCBmb3IgdGhlIHNvcnQga2V5LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IG11c3QgYmUgYSBzY2FsYXIsIHRvcC1sZXZlbCBhdHRyaWJ1dGUgKG5vdCBhIG5lc3RlZCBhdHRyaWJ1dGUpLiBUaGUgZGF0YSB0eXBlIG11c3QgYmUgb25lIG9mIFN0cmluZywgTnVtYmVyLCBvciBCaW5hcnkuIFRoZSBhdHRyaWJ1dGUgY2Fubm90IGJlIG5lc3RlZCB3aXRoaW4gYSBMaXN0IG9yIGEgTWFwLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hI2F0dHJpYnV0ZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSNrZXlUeXBlXG4gICAqL1xuICByZWFkb25seSBrZXlUeXBlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEob2JqOiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXR0cmlidXRlTmFtZSc6IG9iai5hdHRyaWJ1dGVOYW1lLFxuICAgICdrZXlUeXBlJzogb2JqLmtleVR5cGUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVwcmVzZW50cyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSB0YWJsZSBpbnRvIGFuIGluZGV4LiBUaGVzZSBhcmUgaW4gYWRkaXRpb24gdG8gdGhlIHByaW1hcnkga2V5IGF0dHJpYnV0ZXMgYW5kIGluZGV4IGtleSBhdHRyaWJ1dGVzLCB3aGljaCBhcmUgYXV0b21hdGljYWxseSBwcm9qZWN0ZWQuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24jbm9uS2V5QXR0cmlidXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9uS2V5QXR0cmlidXRlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uI3Byb2plY3Rpb25UeXBlXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0aW9uVHlwZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24ob2JqOiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25vbktleUF0dHJpYnV0ZXMnOiBvYmoubm9uS2V5QXR0cmlidXRlcz8ubWFwKHkgPT4geSksXG4gICAgJ3Byb2plY3Rpb25UeXBlJzogb2JqLnByb2plY3Rpb25UeXBlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgc2V0dGluZ3MgZm9yIGEgc3BlY2lmaWVkIHRhYmxlIG9yIGluZGV4LiBUaGUgc2V0dGluZ3MgY2FuIGJlIG1vZGlmaWVkIHVzaW5nIHRoZSBVcGRhdGVUYWJsZSBvcGVyYXRpb24uXG4gKiBGb3IgY3VycmVudCBtaW5pbXVtIGFuZCBtYXhpbXVtIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgdmFsdWVzLCBzZWUgU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3RhcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvdmlzaW9uZWRUaHJvdWdocHV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb3Zpc2lvbmVkVGhyb3VnaHB1dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQjcmVhZENhcGFjaXR5VW5pdHNcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRDYXBhY2l0eVVuaXRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQjd3JpdGVDYXBhY2l0eVVuaXRzXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNhcGFjaXR5VW5pdHM/OiBudW1iZXI7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb3Zpc2lvbmVkVGhyb3VnaHB1dCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb3Zpc2lvbmVkVGhyb3VnaHB1dChvYmo6IFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWFkQ2FwYWNpdHlVbml0cyc6IG9iai5yZWFkQ2FwYWNpdHlVbml0cyxcbiAgICAnd3JpdGVDYXBhY2l0eVVuaXRzJzogb2JqLndyaXRlQ2FwYWNpdHlVbml0cyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGVsZW1lbnQgb2YgYSBrZXkgc2NoZW1hLiBBIGtleSBzY2hlbWEgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgbWFrZSB1cCB0aGUgcHJpbWFyeSBrZXkgb2YgYSB0YWJsZSwgb3IgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIGFuIGluZGV4LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IHJlcHJlc2VudHMgZXhhY3RseSBvbmUgYXR0cmlidXRlIG9mIHRoZSBwcmltYXJ5IGtleS4gRm9yIGV4YW1wbGUsIGEgc2ltcGxlIHByaW1hcnkga2V5IHdvdWxkIGJlIHJlcHJlc2VudGVkIGJ5IG9uZSBLZXlTY2hlbWFFbGVtZW50IChmb3IgdGhlIHBhcnRpdGlvbiBrZXkpLiBBIGNvbXBvc2l0ZSBwcmltYXJ5IGtleSB3b3VsZCByZXF1aXJlIG9uZSBLZXlTY2hlbWFFbGVtZW50IGZvciB0aGUgcGFydGl0aW9uIGtleSwgYW5kIGFub3RoZXIgS2V5U2NoZW1hRWxlbWVudCBmb3IgdGhlIHNvcnQga2V5LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IG11c3QgYmUgYSBzY2FsYXIsIHRvcC1sZXZlbCBhdHRyaWJ1dGUgKG5vdCBhIG5lc3RlZCBhdHRyaWJ1dGUpLiBUaGUgZGF0YSB0eXBlIG11c3QgYmUgb25lIG9mIFN0cmluZywgTnVtYmVyLCBvciBCaW5hcnkuIFRoZSBhdHRyaWJ1dGUgY2Fubm90IGJlIG5lc3RlZCB3aXRoaW4gYSBMaXN0IG9yIGEgTWFwLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hI2F0dHJpYnV0ZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hI2tleVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGtleVR5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEob2JqOiBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhdHRyaWJ1dGVOYW1lJzogb2JqLmF0dHJpYnV0ZU5hbWUsXG4gICAgJ2tleVR5cGUnOiBvYmoua2V5VHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGF0dHJpYnV0ZXMgdGhhdCBhcmUgY29waWVkIChwcm9qZWN0ZWQpIGZyb20gdGhlIHRhYmxlIGludG8gYW4gaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC5cbiAqXG4gKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbiNub25LZXlBdHRyaWJ1dGVzXG4gICAqL1xuICByZWFkb25seSBub25LZXlBdHRyaWJ1dGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbiNwcm9qZWN0aW9uVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdGlvblR5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbihvYmo6IFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdub25LZXlBdHRyaWJ1dGVzJzogb2JqLm5vbktleUF0dHJpYnV0ZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdwcm9qZWN0aW9uVHlwZSc6IG9iai5wcm9qZWN0aW9uVHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuIl19
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1vdGFibGVzLWR5bmFtb2RiLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9keW5hbW90YWJsZXMtZHluYW1vZGIuc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLEtBQU0sU0FBUSxpQkFBUztJQXVCbEM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQixFQUFFO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLLENBQUMsR0FBRztZQUNaLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUF6QkQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFvQixFQUFFO1FBQzNDLE9BQU87WUFDTCxHQUFHLEtBQUssQ0FBQyxHQUFHO1lBQ1osR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFlRDs7T0FFRztJQUNJLE1BQU07UUFDWCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEMsT0FBTztZQUNMLEdBQUcsS0FBSyxDQUFDLEdBQUc7WUFDWixHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztTQUMvQixDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsc0JBK0NDO0FBOUNDOztHQUVHO0FBQ29CLFNBQUcsR0FBcUI7SUFDN0MsVUFBVSxFQUFFLG9DQUFvQztJQUNoRCxJQUFJLEVBQUUsT0FBTztDQUNkLENBQUM7QUE4REo7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IsaUJBQWlCLENBQUMsR0FBMkI7SUFDM0QsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENB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R0FRQztBQXFCRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQiwrQ0FBK0MsQ0FBQyxHQUF5RDtJQUN2SCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2Isa0JBQWtCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsY0FBYztLQUNyQyxDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFSRCwwR0FRQztBQUNELHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGdlbmVyYXRlZCBieSBjZGs4c1xuaW1wb3J0IHsgQXBpT2JqZWN0LCBBcGlPYmplY3RNZXRhZGF0YSwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbi8qKlxuICogVGFibGUgaXMgdGhlIFNjaGVtYSBmb3IgdGhlIFRhYmxlcyBBUElcbiAqXG4gKiBAc2NoZW1hIFRhYmxlXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZSBleHRlbmRzIEFwaU9iamVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIlRhYmxlXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdkeW5hbW9kYi5zZXJ2aWNlcy5rOHMuYXdzL3YxYWxwaGExJyxcbiAgICBraW5kOiAnVGFibGUnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJUYWJsZVwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBUYWJsZVByb3BzID0ge30pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5UYWJsZS5HVkssXG4gICAgICAuLi50b0pzb25fVGFibGVQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJUYWJsZVwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGFibGVQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5UYWJsZS5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uVGFibGUuR1ZLLFxuICAgICAgLi4udG9Kc29uX1RhYmxlUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBUYWJsZSBpcyB0aGUgU2NoZW1hIGZvciB0aGUgVGFibGVzIEFQSVxuICpcbiAqIEBzY2hlbWEgVGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGUjbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIFRhYmxlU3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIFRhYmxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM/OiBUYWJsZVNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVQcm9wcyhvYmo6IFRhYmxlUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9UYWJsZVNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRhYmxlU3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIFRhYmxlLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjIHtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGF0dHJpYnV0ZXMgdGhhdCBkZXNjcmliZSB0aGUga2V5IHNjaGVtYSBmb3IgdGhlIHRhYmxlIGFuZCBpbmRleGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyNhdHRyaWJ1dGVEZWZpbml0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYXR0cmlidXRlRGVmaW5pdGlvbnM6IFRhYmxlU3BlY0F0dHJpYnV0ZURlZmluaXRpb25zW107XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGhvdyB5b3UgYXJlIGNoYXJnZWQgZm9yIHJlYWQgYW5kIHdyaXRlIHRocm91Z2hwdXQgYW5kIGhvdyB5b3UgbWFuYWdlIGNhcGFjaXR5LiBUaGlzIHNldHRpbmcgY2FuIGJlIGNoYW5nZWQgbGF0ZXIuXG4gICAqICogUFJPVklTSU9ORUQgLSBXZSByZWNvbW1lbmQgdXNpbmcgUFJPVklTSU9ORUQgZm9yIHByZWRpY3RhYmxlIHdvcmtsb2Fkcy4gICAgUFJPVklTSU9ORUQgc2V0cyB0aGUgYmlsbGluZyBtb2RlIHRvIFByb3Zpc2lvbmVkIE1vZGUgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvSG93SXRXb3Jrcy5SZWFkV3JpdGVDYXBhY2l0eU1vZGUuaHRtbCNIb3dJdFdvcmtzLlByb3Zpc2lvbmVkVGhyb3VnaHB1dC5NYW51YWwpLlxuICAgKiAqIFBBWV9QRVJfUkVRVUVTVCAtIFdlIHJlY29tbWVuZCB1c2luZyBQQVlfUEVSX1JFUVVFU1QgZm9yIHVucHJlZGljdGFibGUgICAgd29ya2xvYWRzLiBQQVlfUEVSX1JFUVVFU1Qgc2V0cyB0aGUgYmlsbGluZyBtb2RlIHRvIE9uLURlbWFuZCBNb2RlIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0hvd0l0V29ya3MuUmVhZFdyaXRlQ2FwYWNpdHlNb2RlLmh0bWwjSG93SXRXb3Jrcy5PbkRlbWFuZCkuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI2JpbGxpbmdNb2RlXG4gICAqL1xuICByZWFkb25seSBiaWxsaW5nTW9kZT86IHN0cmluZztcblxuICAvKipcbiAgICogT25lIG9yIG1vcmUgZ2xvYmFsIHNlY29uZGFyeSBpbmRleGVzICh0aGUgbWF4aW11bSBpcyAyMCkgdG8gYmUgY3JlYXRlZCBvbiB0aGUgdGFibGUuIEVhY2ggZ2xvYmFsIHNlY29uZGFyeSBpbmRleCBpbiB0aGUgYXJyYXkgaW5jbHVkZXMgdGhlIGZvbGxvd2luZzpcbiAgICogKiBJbmRleE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZ2xvYmFsIHNlY29uZGFyeSBpbmRleC4gTXVzdCBiZSB1bmlxdWUgb25seSAgICBmb3IgdGhpcyB0YWJsZS5cbiAgICogKiBLZXlTY2hlbWEgLSBTcGVjaWZpZXMgdGhlIGtleSBzY2hlbWEgZm9yIHRoZSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICAgKiAqIFByb2plY3Rpb24gLSBTcGVjaWZpZXMgYXR0cmlidXRlcyB0aGF0IGFyZSBjb3BpZWQgKHByb2plY3RlZCkgZnJvbSB0aGUgICAgdGFibGUgaW50byB0aGUgaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyAgICBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC4gRWFjaCBhdHRyaWJ1dGUgICAgc3BlY2lmaWNhdGlvbiBpcyBjb21wb3NlZCBvZjogUHJvamVjdGlvblR5cGUgLSBPbmUgb2YgdGhlIGZvbGxvd2luZzogS0VZU19PTkxZICAgIC0gT25seSB0aGUgaW5kZXggYW5kIHByaW1hcnkga2V5cyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LiBJTkNMVURFICAgIC0gT25seSB0aGUgc3BlY2lmaWVkIHRhYmxlIGF0dHJpYnV0ZXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC4gVGhlICAgIGxpc3Qgb2YgcHJvamVjdGVkIGF0dHJpYnV0ZXMgaXMgaW4gTm9uS2V5QXR0cmlidXRlcy4gQUxMIC0gQWxsIG9mIHRoZSAgICB0YWJsZSBhdHRyaWJ1dGVzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguIE5vbktleUF0dHJpYnV0ZXMgLSBBIGxpc3QgICAgb2Ygb25lIG9yIG1vcmUgbm9uLWtleSBhdHRyaWJ1dGUgbmFtZXMgdGhhdCBhcmUgcHJvamVjdGVkIGludG8gdGhlIHNlY29uZGFyeSAgICBpbmRleC4gVGhlIHRvdGFsIGNvdW50IG9mIGF0dHJpYnV0ZXMgcHJvdmlkZWQgaW4gTm9uS2V5QXR0cmlidXRlcywgc3VtbWVkICAgIGFjcm9zcyBhbGwgb2YgdGhlIHNlY29uZGFyeSBpbmRleGVzLCBtdXN0IG5vdCBleGNlZWQgMTAwLiBJZiB5b3UgcHJvamVjdCAgICB0aGUgc2FtZSBhdHRyaWJ1dGUgaW50byB0d28gZGlmZmVyZW50IGluZGV4ZXMsIHRoaXMgY291bnRzIGFzIHR3byBkaXN0aW5jdCAgICBhdHRyaWJ1dGVzIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHRvdGFsLlxuICAgKiAqIFByb3Zpc2lvbmVkVGhyb3VnaHB1dCAtIFRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHNldHRpbmdzIGZvciB0aGUgICAgZ2xvYmFsIHNlY29uZGFyeSBpbmRleCwgY29uc2lzdGluZyBvZiByZWFkIGFuZCB3cml0ZSBjYXBhY2l0eSB1bml0cy5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWMjZ2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsU2Vjb25kYXJ5SW5kZXhlcz86IFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNbXTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgbWFrZSB1cCB0aGUgcHJpbWFyeSBrZXkgZm9yIGEgdGFibGUgb3IgYW4gaW5kZXguIFRoZSBhdHRyaWJ1dGVzIGluIEtleVNjaGVtYSBtdXN0IGFsc28gYmUgZGVmaW5lZCBpbiB0aGUgQXR0cmlidXRlRGVmaW5pdGlvbnMgYXJyYXkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRGF0YSBNb2RlbCAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9EYXRhTW9kZWwuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gICAqIEVhY2ggS2V5U2NoZW1hRWxlbWVudCBpbiB0aGUgYXJyYXkgaXMgY29tcG9zZWQgb2Y6XG4gICAqICogQXR0cmlidXRlTmFtZSAtIFRoZSBuYW1lIG9mIHRoaXMga2V5IGF0dHJpYnV0ZS5cbiAgICogKiBLZXlUeXBlIC0gVGhlIHJvbGUgdGhhdCB0aGUga2V5IGF0dHJpYnV0ZSB3aWxsIGFzc3VtZTogSEFTSCAtIHBhcnRpdGlvbiAgICBrZXkgUkFOR0UgLSBzb3J0IGtleVxuICAgKiBUaGUgcGFydGl0aW9uIGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzIGhhc2ggYXR0cmlidXRlLiBUaGUgdGVybSBcImhhc2ggYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIHRoZSBEeW5hbW9EQiB1c2FnZSBvZiBhbiBpbnRlcm5hbCBoYXNoIGZ1bmN0aW9uIHRvIGV2ZW5seSBkaXN0cmlidXRlIGRhdGEgaXRlbXMgYWNyb3NzIHBhcnRpdGlvbnMsIGJhc2VkIG9uIHRoZWlyIHBhcnRpdGlvbiBrZXkgdmFsdWVzLlxuICAgKiBUaGUgc29ydCBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyByYW5nZSBhdHRyaWJ1dGUuIFRoZSB0ZXJtIFwicmFuZ2UgYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIHRoZSB3YXkgRHluYW1vREIgc3RvcmVzIGl0ZW1zIHdpdGggdGhlIHNhbWUgcGFydGl0aW9uIGtleSBwaHlzaWNhbGx5IGNsb3NlIHRvZ2V0aGVyLCBpbiBzb3J0ZWQgb3JkZXIgYnkgdGhlIHNvcnQga2V5IHZhbHVlLlxuICAgKiBGb3IgYSBzaW1wbGUgcHJpbWFyeSBrZXkgKHBhcnRpdGlvbiBrZXkpLCB5b3UgbXVzdCBwcm92aWRlIGV4YWN0bHkgb25lIGVsZW1lbnQgd2l0aCBhIEtleVR5cGUgb2YgSEFTSC5cbiAgICogRm9yIGEgY29tcG9zaXRlIHByaW1hcnkga2V5IChwYXJ0aXRpb24ga2V5IGFuZCBzb3J0IGtleSksIHlvdSBtdXN0IHByb3ZpZGUgZXhhY3RseSB0d28gZWxlbWVudHMsIGluIHRoaXMgb3JkZXI6IFRoZSBmaXJzdCBlbGVtZW50IG11c3QgaGF2ZSBhIEtleVR5cGUgb2YgSEFTSCwgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBtdXN0IGhhdmUgYSBLZXlUeXBlIG9mIFJBTkdFLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFdvcmtpbmcgd2l0aCBUYWJsZXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvV29ya2luZ1dpdGhUYWJsZXMuaHRtbCNXb3JraW5nV2l0aFRhYmxlcy5wcmltYXJ5LmtleSkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI2tleVNjaGVtYVxuICAgKi9cbiAgcmVhZG9ubHkga2V5U2NoZW1hOiBUYWJsZVNwZWNLZXlTY2hlbWFbXTtcblxuICAvKipcbiAgICogT25lIG9yIG1vcmUgbG9jYWwgc2Vjb25kYXJ5IGluZGV4ZXMgKHRoZSBtYXhpbXVtIGlzIDUpIHRvIGJlIGNyZWF0ZWQgb24gdGhlIHRhYmxlLiBFYWNoIGluZGV4IGlzIHNjb3BlZCB0byBhIGdpdmVuIHBhcnRpdGlvbiBrZXkgdmFsdWUuIFRoZXJlIGlzIGEgMTAgR0Igc2l6ZSBsaW1pdCBwZXIgcGFydGl0aW9uIGtleSB2YWx1ZTsgb3RoZXJ3aXNlLCB0aGUgc2l6ZSBvZiBhIGxvY2FsIHNlY29uZGFyeSBpbmRleCBpcyB1bmNvbnN0cmFpbmVkLlxuICAgKiBFYWNoIGxvY2FsIHNlY29uZGFyeSBpbmRleCBpbiB0aGUgYXJyYXkgaW5jbHVkZXMgdGhlIGZvbGxvd2luZzpcbiAgICogKiBJbmRleE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LiBNdXN0IGJlIHVuaXF1ZSBvbmx5ICAgIGZvciB0aGlzIHRhYmxlLlxuICAgKiAqIEtleVNjaGVtYSAtIFNwZWNpZmllcyB0aGUga2V5IHNjaGVtYSBmb3IgdGhlIGxvY2FsIHNlY29uZGFyeSBpbmRleC4gICAgVGhlIGtleSBzY2hlbWEgbXVzdCBiZWdpbiB3aXRoIHRoZSBzYW1lIHBhcnRpdGlvbiBrZXkgYXMgdGhlIHRhYmxlLlxuICAgKiAqIFByb2plY3Rpb24gLSBTcGVjaWZpZXMgYXR0cmlidXRlcyB0aGF0IGFyZSBjb3BpZWQgKHByb2plY3RlZCkgZnJvbSB0aGUgICAgdGFibGUgaW50byB0aGUgaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyAgICBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC4gRWFjaCBhdHRyaWJ1dGUgICAgc3BlY2lmaWNhdGlvbiBpcyBjb21wb3NlZCBvZjogUHJvamVjdGlvblR5cGUgLSBPbmUgb2YgdGhlIGZvbGxvd2luZzogS0VZU19PTkxZICAgIC0gT25seSB0aGUgaW5kZXggYW5kIHByaW1hcnkga2V5cyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LiBJTkNMVURFICAgIC0gT25seSB0aGUgc3BlY2lmaWVkIHRhYmxlIGF0dHJpYnV0ZXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC4gVGhlICAgIGxpc3Qgb2YgcHJvamVjdGVkIGF0dHJpYnV0ZXMgaXMgaW4gTm9uS2V5QXR0cmlidXRlcy4gQUxMIC0gQWxsIG9mIHRoZSAgICB0YWJsZSBhdHRyaWJ1dGVzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguIE5vbktleUF0dHJpYnV0ZXMgLSBBIGxpc3QgICAgb2Ygb25lIG9yIG1vcmUgbm9uLWtleSBhdHRyaWJ1dGUgbmFtZXMgdGhhdCBhcmUgcHJvamVjdGVkIGludG8gdGhlIHNlY29uZGFyeSAgICBpbmRleC4gVGhlIHRvdGFsIGNvdW50IG9mIGF0dHJpYnV0ZXMgcHJvdmlkZWQgaW4gTm9uS2V5QXR0cmlidXRlcywgc3VtbWVkICAgIGFjcm9zcyBhbGwgb2YgdGhlIHNlY29uZGFyeSBpbmRleGVzLCBtdXN0IG5vdCBleGNlZWQgMTAwLiBJZiB5b3UgcHJvamVjdCAgICB0aGUgc2FtZSBhdHRyaWJ1dGUgaW50byB0d28gZGlmZmVyZW50IGluZGV4ZXMsIHRoaXMgY291bnRzIGFzIHR3byBkaXN0aW5jdCAgICBhdHRyaWJ1dGVzIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHRvdGFsLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyNsb2NhbFNlY29uZGFyeUluZGV4ZXNcbiAgICovXG4gIHJlYWRvbmx5IGxvY2FsU2Vjb25kYXJ5SW5kZXhlcz86IFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1tdO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHNldHRpbmdzIGZvciBhIHNwZWNpZmllZCB0YWJsZSBvciBpbmRleC4gVGhlIHNldHRpbmdzIGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgVXBkYXRlVGFibGUgb3BlcmF0aW9uLlxuICAgKiBJZiB5b3Ugc2V0IEJpbGxpbmdNb2RlIGFzIFBST1ZJU0lPTkVELCB5b3UgbXVzdCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuIElmIHlvdSBzZXQgQmlsbGluZ01vZGUgYXMgUEFZX1BFUl9SRVFVRVNULCB5b3UgY2Fubm90IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS5cbiAgICogRm9yIGN1cnJlbnQgbWluaW11bSBhbmQgbWF4aW11bSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHZhbHVlcywgc2VlIFNlcnZpY2UsIEFjY291bnQsIGFuZCBUYWJsZSBRdW90YXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvTGltaXRzLmh0bWwpIGluIHRoZSBBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyNwcm92aXNpb25lZFRocm91Z2hwdXRcbiAgICovXG4gIHJlYWRvbmx5IHByb3Zpc2lvbmVkVGhyb3VnaHB1dD86IFRhYmxlU3BlY1Byb3Zpc2lvbmVkVGhyb3VnaHB1dDtcblxuICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgc2V0dGluZ3MgdXNlZCB0byBlbmFibGUgc2VydmVyLXNpZGUgZW5jcnlwdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWMjc3NlU3BlY2lmaWNhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3NlU3BlY2lmaWNhdGlvbj86IFRhYmxlU3BlY1NzZVNwZWNpZmljYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBmb3IgRHluYW1vREIgU3RyZWFtcyBvbiB0aGUgdGFibGUuIFRoZXNlIHNldHRpbmdzIGNvbnNpc3Qgb2Y6XG4gICAqICogU3RyZWFtRW5hYmxlZCAtIEluZGljYXRlcyB3aGV0aGVyIER5bmFtb0RCIFN0cmVhbXMgaXMgdG8gYmUgZW5hYmxlZCAgICAodHJ1ZSkgb3IgZGlzYWJsZWQgKGZhbHNlKS5cbiAgICogKiBTdHJlYW1WaWV3VHlwZSAtIFdoZW4gYW4gaXRlbSBpbiB0aGUgdGFibGUgaXMgbW9kaWZpZWQsIFN0cmVhbVZpZXdUeXBlICAgIGRldGVybWluZXMgd2hhdCBpbmZvcm1hdGlvbiBpcyB3cml0dGVuIHRvIHRoZSB0YWJsZSdzIHN0cmVhbS4gVmFsaWQgdmFsdWVzICAgIGZvciBTdHJlYW1WaWV3VHlwZSBhcmU6IEtFWVNfT05MWSAtIE9ubHkgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIHRoZSBtb2RpZmllZCAgICBpdGVtIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uIE5FV19JTUFHRSAtIFRoZSBlbnRpcmUgaXRlbSwgYXMgaXQgYXBwZWFycyAgICBhZnRlciBpdCB3YXMgbW9kaWZpZWQsIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gT0xEX0lNQUdFIC0gVGhlIGVudGlyZSAgICBpdGVtLCBhcyBpdCBhcHBlYXJlZCBiZWZvcmUgaXQgd2FzIG1vZGlmaWVkLCBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uICAgIE5FV19BTkRfT0xEX0lNQUdFUyAtIEJvdGggdGhlIG5ldyBhbmQgdGhlIG9sZCBpdGVtIGltYWdlcyBvZiB0aGUgaXRlbSAgICBhcmUgd3JpdHRlbiB0byB0aGUgc3RyZWFtLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyNzdHJlYW1TcGVjaWZpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBzdHJlYW1TcGVjaWZpY2F0aW9uPzogVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGNyZWF0ZS5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWMjdGFibGVOYW1lXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyB0byBsYWJlbCB0aGUgdGFibGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgVGFnZ2luZyBmb3IgRHluYW1vREIgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvVGFnZ2luZy5odG1sKS5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWMjdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IFRhYmxlU3BlY1RhZ3NbXTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlYyhvYmo6IFRhYmxlU3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2F0dHJpYnV0ZURlZmluaXRpb25zJzogb2JqLmF0dHJpYnV0ZURlZmluaXRpb25zPy5tYXAoeSA9PiB0b0pzb25fVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnMoeSkpLFxuICAgICdiaWxsaW5nTW9kZSc6IG9iai5iaWxsaW5nTW9kZSxcbiAgICAnZ2xvYmFsU2Vjb25kYXJ5SW5kZXhlcyc6IG9iai5nbG9iYWxTZWNvbmRhcnlJbmRleGVzPy5tYXAoeSA9PiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcyh5KSksXG4gICAgJ2tleVNjaGVtYSc6IG9iai5rZXlTY2hlbWE/Lm1hcCh5ID0+IHRvSnNvbl9UYWJsZVNwZWNLZXlTY2hlbWEoeSkpLFxuICAgICdsb2NhbFNlY29uZGFyeUluZGV4ZXMnOiBvYmoubG9jYWxTZWNvbmRhcnlJbmRleGVzPy5tYXAoeSA9PiB0b0pzb25fVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzKHkpKSxcbiAgICAncHJvdmlzaW9uZWRUaHJvdWdocHV0JzogdG9Kc29uX1RhYmxlU3BlY1Byb3Zpc2lvbmVkVGhyb3VnaHB1dChvYmoucHJvdmlzaW9uZWRUaHJvdWdocHV0KSxcbiAgICAnc3NlU3BlY2lmaWNhdGlvbic6IHRvSnNvbl9UYWJsZVNwZWNTc2VTcGVjaWZpY2F0aW9uKG9iai5zc2VTcGVjaWZpY2F0aW9uKSxcbiAgICAnc3RyZWFtU3BlY2lmaWNhdGlvbic6IHRvSnNvbl9UYWJsZVNwZWNTdHJlYW1TcGVjaWZpY2F0aW9uKG9iai5zdHJlYW1TcGVjaWZpY2F0aW9uKSxcbiAgICAndGFibGVOYW1lJzogb2JqLnRhYmxlTmFtZSxcbiAgICAndGFncyc6IG9iai50YWdzPy5tYXAoeSA9PiB0b0pzb25fVGFibGVTcGVjVGFncyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBhdHRyaWJ1dGUgZm9yIGRlc2NyaWJpbmcgdGhlIGtleSBzY2hlbWEgZm9yIHRoZSB0YWJsZSBhbmQgaW5kZXhlcy5cbiAqXG4gKiBAc2NoZW1hIFRhYmxlU3BlY0F0dHJpYnV0ZURlZmluaXRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnMge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNBdHRyaWJ1dGVEZWZpbml0aW9ucyNhdHRyaWJ1dGVOYW1lXG4gICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0F0dHJpYnV0ZURlZmluaXRpb25zI2F0dHJpYnV0ZVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZVR5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY0F0dHJpYnV0ZURlZmluaXRpb25zKG9iajogVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhdHRyaWJ1dGVOYW1lJzogb2JqLmF0dHJpYnV0ZU5hbWUsXG4gICAgJ2F0dHJpYnV0ZVR5cGUnOiBvYmouYXR0cmlidXRlVHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm9wZXJ0aWVzIG9mIGEgZ2xvYmFsIHNlY29uZGFyeSBpbmRleC5cbiAqXG4gKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcyNpbmRleE5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGluZGV4TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzI2tleVNjaGVtYVxuICAgKi9cbiAgcmVhZG9ubHkga2V5U2NoZW1hPzogVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYVtdO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGF0dHJpYnV0ZXMgdGhhdCBhcmUgY29waWVkIChwcm9qZWN0ZWQpIGZyb20gdGhlIHRhYmxlIGludG8gYW4gaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzI3Byb2plY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3Rpb24/OiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbjtcblxuICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgcHJvdmlzaW9uZWQgdGhyb3VnaHB1dCBzZXR0aW5ncyBmb3IgYSBzcGVjaWZpZWQgdGFibGUgb3IgaW5kZXguIFRoZSBzZXR0aW5ncyBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhlIFVwZGF0ZVRhYmxlIG9wZXJhdGlvbi5cbiAgICogRm9yIGN1cnJlbnQgbWluaW11bSBhbmQgbWF4aW11bSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHZhbHVlcywgc2VlIFNlcnZpY2UsIEFjY291bnQsIGFuZCBUYWJsZSBRdW90YXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvTGltaXRzLmh0bWwpIGluIHRoZSBBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMjcHJvdmlzaW9uZWRUaHJvdWdocHV0XG4gICAqL1xuICByZWFkb25seSBwcm92aXNpb25lZFRocm91Z2hwdXQ/OiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvdmlzaW9uZWRUaHJvdWdocHV0O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMob2JqOiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaW5kZXhOYW1lJzogb2JqLmluZGV4TmFtZSxcbiAgICAna2V5U2NoZW1hJzogb2JqLmtleVNjaGVtYT8ubWFwKHkgPT4gdG9Kc29uX1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEoeSkpLFxuICAgICdwcm9qZWN0aW9uJzogdG9Kc29uX1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uKG9iai5wcm9qZWN0aW9uKSxcbiAgICAncHJvdmlzaW9uZWRUaHJvdWdocHV0JzogdG9Kc29uX1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQob2JqLnByb3Zpc2lvbmVkVGhyb3VnaHB1dCksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBlbGVtZW50IG9mIGEga2V5IHNjaGVtYS4gQSBrZXkgc2NoZW1hIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0aGF0IG1ha2UgdXAgdGhlIHByaW1hcnkga2V5IG9mIGEgdGFibGUsIG9yIHRoZSBrZXkgYXR0cmlidXRlcyBvZiBhbiBpbmRleC5cbiAqIEEgS2V5U2NoZW1hRWxlbWVudCByZXByZXNlbnRzIGV4YWN0bHkgb25lIGF0dHJpYnV0ZSBvZiB0aGUgcHJpbWFyeSBrZXkuIEZvciBleGFtcGxlLCBhIHNpbXBsZSBwcmltYXJ5IGtleSB3b3VsZCBiZSByZXByZXNlbnRlZCBieSBvbmUgS2V5U2NoZW1hRWxlbWVudCAoZm9yIHRoZSBwYXJ0aXRpb24ga2V5KS4gQSBjb21wb3NpdGUgcHJpbWFyeSBrZXkgd291bGQgcmVxdWlyZSBvbmUgS2V5U2NoZW1hRWxlbWVudCBmb3IgdGhlIHBhcnRpdGlvbiBrZXksIGFuZCBhbm90aGVyIEtleVNjaGVtYUVsZW1lbnQgZm9yIHRoZSBzb3J0IGtleS5cbiAqIEEgS2V5U2NoZW1hRWxlbWVudCBtdXN0IGJlIGEgc2NhbGFyLCB0b3AtbGV2ZWwgYXR0cmlidXRlIChub3QgYSBuZXN0ZWQgYXR0cmlidXRlKS4gVGhlIGRhdGEgdHlwZSBtdXN0IGJlIG9uZSBvZiBTdHJpbmcsIE51bWJlciwgb3IgQmluYXJ5LiBUaGUgYXR0cmlidXRlIGNhbm5vdCBiZSBuZXN0ZWQgd2l0aGluIGEgTGlzdCBvciBhIE1hcC5cbiAqXG4gKiBAc2NoZW1hIFRhYmxlU3BlY0tleVNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0tleVNjaGVtYSB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0tleVNjaGVtYSNhdHRyaWJ1dGVOYW1lXG4gICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0tleVNjaGVtYSNrZXlUeXBlXG4gICAqL1xuICByZWFkb25seSBrZXlUeXBlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY0tleVNjaGVtYScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjS2V5U2NoZW1hKG9iajogVGFibGVTcGVjS2V5U2NoZW1hIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXR0cmlidXRlTmFtZSc6IG9iai5hdHRyaWJ1dGVOYW1lLFxuICAgICdrZXlUeXBlJzogb2JqLmtleVR5cGUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcHJvcGVydGllcyBvZiBhIGxvY2FsIHNlY29uZGFyeSBpbmRleC5cbiAqXG4gKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlcyNpbmRleE5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGluZGV4TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXMja2V5U2NoZW1hXG4gICAqL1xuICByZWFkb25seSBrZXlTY2hlbWE/OiBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWFbXTtcblxuICAvKipcbiAgICogUmVwcmVzZW50cyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSB0YWJsZSBpbnRvIGFuIGluZGV4LiBUaGVzZSBhcmUgaW4gYWRkaXRpb24gdG8gdGhlIHByaW1hcnkga2V5IGF0dHJpYnV0ZXMgYW5kIGluZGV4IGtleSBhdHRyaWJ1dGVzLCB3aGljaCBhcmUgYXV0b21hdGljYWxseSBwcm9qZWN0ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzI3Byb2plY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3Rpb24/OiBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzKG9iajogVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaW5kZXhOYW1lJzogb2JqLmluZGV4TmFtZSxcbiAgICAna2V5U2NoZW1hJzogb2JqLmtleVNjaGVtYT8ubWFwKHkgPT4gdG9Kc29uX1RhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSh5KSksXG4gICAgJ3Byb2plY3Rpb24nOiB0b0pzb25fVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbihvYmoucHJvamVjdGlvbiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcHJvdmlzaW9uZWQgdGhyb3VnaHB1dCBzZXR0aW5ncyBmb3IgYSBzcGVjaWZpZWQgdGFibGUgb3IgaW5kZXguIFRoZSBzZXR0aW5ncyBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhlIFVwZGF0ZVRhYmxlIG9wZXJhdGlvbi5cbiAqIElmIHlvdSBzZXQgQmlsbGluZ01vZGUgYXMgUFJPVklTSU9ORUQsIHlvdSBtdXN0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gSWYgeW91IHNldCBCaWxsaW5nTW9kZSBhcyBQQVlfUEVSX1JFUVVFU1QsIHlvdSBjYW5ub3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LlxuICogRm9yIGN1cnJlbnQgbWluaW11bSBhbmQgbWF4aW11bSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHZhbHVlcywgc2VlIFNlcnZpY2UsIEFjY291bnQsIGFuZCBUYWJsZSBRdW90YXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvTGltaXRzLmh0bWwpIGluIHRoZSBBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjUHJvdmlzaW9uZWRUaHJvdWdocHV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjUHJvdmlzaW9uZWRUaHJvdWdocHV0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjUHJvdmlzaW9uZWRUaHJvdWdocHV0I3JlYWRDYXBhY2l0eVVuaXRzXG4gICAqL1xuICByZWFkb25seSByZWFkQ2FwYWNpdHlVbml0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXQjd3JpdGVDYXBhY2l0eVVuaXRzXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNhcGFjaXR5VW5pdHM/OiBudW1iZXI7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjUHJvdmlzaW9uZWRUaHJvdWdocHV0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXQob2JqOiBUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWFkQ2FwYWNpdHlVbml0cyc6IG9iai5yZWFkQ2FwYWNpdHlVbml0cyxcbiAgICAnd3JpdGVDYXBhY2l0eVVuaXRzJzogb2JqLndyaXRlQ2FwYWNpdHlVbml0cyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBzZXR0aW5ncyB1c2VkIHRvIGVuYWJsZSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24ge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNTc2VTcGVjaWZpY2F0aW9uI2VuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24ja21zTWFzdGVyS2V5SURcbiAgICovXG4gIHJlYWRvbmx5IGttc01hc3RlcktleUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24jc3NlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgc3NlVHlwZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVNwZWNTc2VTcGVjaWZpY2F0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVNwZWNTc2VTcGVjaWZpY2F0aW9uKG9iajogVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2VuYWJsZWQnOiBvYmouZW5hYmxlZCxcbiAgICAna21zTWFzdGVyS2V5SUQnOiBvYmoua21zTWFzdGVyS2V5SWQsXG4gICAgJ3NzZVR5cGUnOiBvYmouc3NlVHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgZm9yIER5bmFtb0RCIFN0cmVhbXMgb24gdGhlIHRhYmxlLiBUaGVzZSBzZXR0aW5ncyBjb25zaXN0IG9mOlxuICogKiBTdHJlYW1FbmFibGVkIC0gSW5kaWNhdGVzIHdoZXRoZXIgRHluYW1vREIgU3RyZWFtcyBpcyB0byBiZSBlbmFibGVkICAgICh0cnVlKSBvciBkaXNhYmxlZCAoZmFsc2UpLlxuICogKiBTdHJlYW1WaWV3VHlwZSAtIFdoZW4gYW4gaXRlbSBpbiB0aGUgdGFibGUgaXMgbW9kaWZpZWQsIFN0cmVhbVZpZXdUeXBlICAgIGRldGVybWluZXMgd2hhdCBpbmZvcm1hdGlvbiBpcyB3cml0dGVuIHRvIHRoZSB0YWJsZSdzIHN0cmVhbS4gVmFsaWQgdmFsdWVzICAgIGZvciBTdHJlYW1WaWV3VHlwZSBhcmU6IEtFWVNfT05MWSAtIE9ubHkgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIHRoZSBtb2RpZmllZCAgICBpdGVtIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uIE5FV19JTUFHRSAtIFRoZSBlbnRpcmUgaXRlbSwgYXMgaXQgYXBwZWFycyAgICBhZnRlciBpdCB3YXMgbW9kaWZpZWQsIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gT0xEX0lNQUdFIC0gVGhlIGVudGlyZSAgICBpdGVtLCBhcyBpdCBhcHBlYXJlZCBiZWZvcmUgaXQgd2FzIG1vZGlmaWVkLCBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uICAgIE5FV19BTkRfT0xEX0lNQUdFUyAtIEJvdGggdGhlIG5ldyBhbmQgdGhlIG9sZCBpdGVtIGltYWdlcyBvZiB0aGUgaXRlbSAgICBhcmUgd3JpdHRlbiB0byB0aGUgc3RyZWFtLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24ge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNTdHJlYW1TcGVjaWZpY2F0aW9uI3N0cmVhbUVuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0cmVhbUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24jc3RyZWFtVmlld1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmVhbVZpZXdUeXBlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24ob2JqOiBUYWJsZVNwZWNTdHJlYW1TcGVjaWZpY2F0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnc3RyZWFtRW5hYmxlZCc6IG9iai5zdHJlYW1FbmFibGVkLFxuICAgICdzdHJlYW1WaWV3VHlwZSc6IG9iai5zdHJlYW1WaWV3VHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBEZXNjcmliZXMgYSB0YWcuIEEgdGFnIGlzIGEga2V5LXZhbHVlIHBhaXIuIFlvdSBjYW4gYWRkIHVwIHRvIDUwIHRhZ3MgdG8gYSBzaW5nbGUgRHluYW1vREIgdGFibGUuXG4gKiBBV1MtYXNzaWduZWQgdGFnIG5hbWVzIGFuZCB2YWx1ZXMgYXJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdGhlIGF3czogcHJlZml4LCB3aGljaCB0aGUgdXNlciBjYW5ub3QgYXNzaWduLiBBV1MtYXNzaWduZWQgdGFnIG5hbWVzIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSB0YWcgbGltaXQgb2YgNTAuIFVzZXItYXNzaWduZWQgdGFnIG5hbWVzIGhhdmUgdGhlIHByZWZpeCB1c2VyOiBpbiB0aGUgQ29zdCBBbGxvY2F0aW9uIFJlcG9ydC4gWW91IGNhbm5vdCBiYWNrZGF0ZSB0aGUgYXBwbGljYXRpb24gb2YgYSB0YWcuXG4gKiBGb3IgYW4gb3ZlcnZpZXcgb24gdGFnZ2luZyBEeW5hbW9EQiByZXNvdXJjZXMsIHNlZSBUYWdnaW5nIGZvciBEeW5hbW9EQiAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9UYWdnaW5nLmh0bWwpIGluIHRoZSBBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjVGFnc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY1RhZ3Mge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNUYWdzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1RhZ3MjdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY1RhZ3MnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY1RhZ3Mob2JqOiBUYWJsZVNwZWNUYWdzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgICAndmFsdWUnOiBvYmoudmFsdWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBlbGVtZW50IG9mIGEga2V5IHNjaGVtYS4gQSBrZXkgc2NoZW1hIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0aGF0IG1ha2UgdXAgdGhlIHByaW1hcnkga2V5IG9mIGEgdGFibGUsIG9yIHRoZSBrZXkgYXR0cmlidXRlcyBvZiBhbiBpbmRleC5cbiAqIEEgS2V5U2NoZW1hRWxlbWVudCByZXByZXNlbnRzIGV4YWN0bHkgb25lIGF0dHJpYnV0ZSBvZiB0aGUgcHJpbWFyeSBrZXkuIEZvciBleGFtcGxlLCBhIHNpbXBsZSBwcmltYXJ5IGtleSB3b3VsZCBiZSByZXByZXNlbnRlZCBieSBvbmUgS2V5U2NoZW1hRWxlbWVudCAoZm9yIHRoZSBwYXJ0aXRpb24ga2V5KS4gQSBjb21wb3NpdGUgcHJpbWFyeSBrZXkgd291bGQgcmVxdWlyZSBvbmUgS2V5U2NoZW1hRWxlbWVudCBmb3IgdGhlIHBhcnRpdGlvbiBrZXksIGFuZCBhbm90aGVyIEtleVNjaGVtYUVsZW1lbnQgZm9yIHRoZSBzb3J0IGtleS5cbiAqIEEgS2V5U2NoZW1hRWxlbWVudCBtdXN0IGJlIGEgc2NhbGFyLCB0b3AtbGV2ZWwgYXR0cmlidXRlIChub3QgYSBuZXN0ZWQgYXR0cmlidXRlKS4gVGhlIGRhdGEgdHlwZSBtdXN0IGJlIG9uZSBvZiBTdHJpbmcsIE51bWJlciwgb3IgQmluYXJ5LiBUaGUgYXR0cmlidXRlIGNhbm5vdCBiZSBuZXN0ZWQgd2l0aGluIGEgTGlzdCBvciBhIE1hcC5cbiAqXG4gKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSNhdHRyaWJ1dGVOYW1lXG4gICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEja2V5VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkga2V5VHlwZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hKG9iajogVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2F0dHJpYnV0ZU5hbWUnOiBvYmouYXR0cmlidXRlTmFtZSxcbiAgICAna2V5VHlwZSc6IG9iai5rZXlUeXBlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYXR0cmlidXRlcyB0aGF0IGFyZSBjb3BpZWQgKHByb2plY3RlZCkgZnJvbSB0aGUgdGFibGUgaW50byBhbiBpbmRleC4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVzIGFuZCBpbmRleCBrZXkgYXR0cmlidXRlcywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgcHJvamVjdGVkLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uI25vbktleUF0dHJpYnV0ZXNcbiAgICovXG4gIHJlYWRvbmx5IG5vbktleUF0dHJpYnV0ZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbiNwcm9qZWN0aW9uVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdGlvblR5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uKG9iajogVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdub25LZXlBdHRyaWJ1dGVzJzogb2JqLm5vbktleUF0dHJpYnV0ZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdwcm9qZWN0aW9uVHlwZSc6IG9iai5wcm9qZWN0aW9uVHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHNldHRpbmdzIGZvciBhIHNwZWNpZmllZCB0YWJsZSBvciBpbmRleC4gVGhlIHNldHRpbmdzIGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgVXBkYXRlVGFibGUgb3BlcmF0aW9uLlxuICogRm9yIGN1cnJlbnQgbWluaW11bSBhbmQgbWF4aW11bSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHZhbHVlcywgc2VlIFNlcnZpY2UsIEFjY291bnQsIGFuZCBUYWJsZSBRdW90YXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvTGltaXRzLmh0bWwpIGluIHRoZSBBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb3Zpc2lvbmVkVGhyb3VnaHB1dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvdmlzaW9uZWRUaHJvdWdocHV0I3JlYWRDYXBhY2l0eVVuaXRzXG4gICAqL1xuICByZWFkb25seSByZWFkQ2FwYWNpdHlVbml0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvdmlzaW9uZWRUaHJvdWdocHV0I3dyaXRlQ2FwYWNpdHlVbml0c1xuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVDYXBhY2l0eVVuaXRzPzogbnVtYmVyO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQob2JqOiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvdmlzaW9uZWRUaHJvdWdocHV0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVhZENhcGFjaXR5VW5pdHMnOiBvYmoucmVhZENhcGFjaXR5VW5pdHMsXG4gICAgJ3dyaXRlQ2FwYWNpdHlVbml0cyc6IG9iai53cml0ZUNhcGFjaXR5VW5pdHMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBlbGVtZW50IG9mIGEga2V5IHNjaGVtYS4gQSBrZXkgc2NoZW1hIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0aGF0IG1ha2UgdXAgdGhlIHByaW1hcnkga2V5IG9mIGEgdGFibGUsIG9yIHRoZSBrZXkgYXR0cmlidXRlcyBvZiBhbiBpbmRleC5cbiAqIEEgS2V5U2NoZW1hRWxlbWVudCByZXByZXNlbnRzIGV4YWN0bHkgb25lIGF0dHJpYnV0ZSBvZiB0aGUgcHJpbWFyeSBrZXkuIEZvciBleGFtcGxlLCBhIHNpbXBsZSBwcmltYXJ5IGtleSB3b3VsZCBiZSByZXByZXNlbnRlZCBieSBvbmUgS2V5U2NoZW1hRWxlbWVudCAoZm9yIHRoZSBwYXJ0aXRpb24ga2V5KS4gQSBjb21wb3NpdGUgcHJpbWFyeSBrZXkgd291bGQgcmVxdWlyZSBvbmUgS2V5U2NoZW1hRWxlbWVudCBmb3IgdGhlIHBhcnRpdGlvbiBrZXksIGFuZCBhbm90aGVyIEtleVNjaGVtYUVsZW1lbnQgZm9yIHRoZSBzb3J0IGtleS5cbiAqIEEgS2V5U2NoZW1hRWxlbWVudCBtdXN0IGJlIGEgc2NhbGFyLCB0b3AtbGV2ZWwgYXR0cmlidXRlIChub3QgYSBuZXN0ZWQgYXR0cmlidXRlKS4gVGhlIGRhdGEgdHlwZSBtdXN0IGJlIG9uZSBvZiBTdHJpbmcsIE51bWJlciwgb3IgQmluYXJ5LiBUaGUgYXR0cmlidXRlIGNhbm5vdCBiZSBuZXN0ZWQgd2l0aGluIGEgTGlzdCBvciBhIE1hcC5cbiAqXG4gKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSNhdHRyaWJ1dGVOYW1lXG4gICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSNrZXlUeXBlXG4gICAqL1xuICByZWFkb25seSBrZXlUeXBlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hKG9iajogVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXR0cmlidXRlTmFtZSc6IG9iai5hdHRyaWJ1dGVOYW1lLFxuICAgICdrZXlUeXBlJzogb2JqLmtleVR5cGUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVwcmVzZW50cyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSB0YWJsZSBpbnRvIGFuIGluZGV4LiBUaGVzZSBhcmUgaW4gYWRkaXRpb24gdG8gdGhlIHByaW1hcnkga2V5IGF0dHJpYnV0ZXMgYW5kIGluZGV4IGtleSBhdHRyaWJ1dGVzLCB3aGljaCBhcmUgYXV0b21hdGljYWxseSBwcm9qZWN0ZWQuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24jbm9uS2V5QXR0cmlidXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9uS2V5QXR0cmlidXRlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24jcHJvamVjdGlvblR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3Rpb25UeXBlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24ob2JqOiBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbm9uS2V5QXR0cmlidXRlcyc6IG9iai5ub25LZXlBdHRyaWJ1dGVzPy5tYXAoeSA9PiB5KSxcbiAgICAncHJvamVjdGlvblR5cGUnOiBvYmoucHJvamVjdGlvblR5cGUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbiJdfQ==
@@ -170,4 +170,3 @@ export interface SecurityGroupSpecVpcRefFrom {
170
170
  * Converts an object of type 'SecurityGroupSpecVpcRefFrom' to JSON representation.
171
171
  */
172
172
  export declare function toJson_SecurityGroupSpecVpcRefFrom(obj: SecurityGroupSpecVpcRefFrom | undefined): Record<string, any> | undefined;
173
- //# sourceMappingURL=ec2securitygroups-ec2.services.k8s.aws.d.ts.map
@@ -74,14 +74,13 @@ exports.toJson_SecurityGroupProps = toJson_SecurityGroupProps;
74
74
  */
75
75
  /* eslint-disable max-len, quote-props */
76
76
  function toJson_SecurityGroupSpec(obj) {
77
- var _a;
78
77
  if (obj === undefined) {
79
78
  return undefined;
80
79
  }
81
80
  const result = {
82
81
  'description': obj.description,
83
82
  'name': obj.name,
84
- 'tagSpecifications': (_a = obj.tagSpecifications) === null || _a === void 0 ? void 0 : _a.map(y => toJson_SecurityGroupSpecTagSpecifications(y)),
83
+ 'tagSpecifications': obj.tagSpecifications?.map(y => toJson_SecurityGroupSpecTagSpecifications(y)),
85
84
  'vpcID': obj.vpcId,
86
85
  'vpcRef': toJson_SecurityGroupSpecVpcRef(obj.vpcRef),
87
86
  };
@@ -94,13 +93,12 @@ exports.toJson_SecurityGroupSpec = toJson_SecurityGroupSpec;
94
93
  */
95
94
  /* eslint-disable max-len, quote-props */
96
95
  function toJson_SecurityGroupSpecTagSpecifications(obj) {
97
- var _a;
98
96
  if (obj === undefined) {
99
97
  return undefined;
100
98
  }
101
99
  const result = {
102
100
  'resourceType': obj.resourceType,
103
- 'tags': (_a = obj.tags) === null || _a === void 0 ? void 0 : _a.map(y => toJson_SecurityGroupSpecTagSpecificationsTags(y)),
101
+ 'tags': obj.tags?.map(y => toJson_SecurityGroupSpecTagSpecificationsTags(y)),
104
102
  };
105
103
  // filter undefined values
106
104
  return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
@@ -153,4 +151,4 @@ function toJson_SecurityGroupSpecVpcRefFrom(obj) {
153
151
  }
154
152
  exports.toJson_SecurityGroupSpecVpcRefFrom = toJson_SecurityGroupSpecVpcRefFrom;
155
153
  /* eslint-enable max-len, quote-props */
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWMyc2VjdXJpdHlncm91cHMtZWMyLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9lYzJzZWN1cml0eWdyb3Vwcy1lYzIuc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxpQkFBUztJQXVCMUM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUE0QixFQUFFO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxhQUFhLENBQUMsR0FBRztZQUNwQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBekJEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBNEIsRUFBRTtRQUNuRCxPQUFPO1lBQ0wsR0FBRyxhQUFhLENBQUMsR0FBRztZQUNwQixHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQztJQWVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsR0FBRyxhQUFhLENBQUMsR0FBRztZQUNwQixHQUFHLHlCQUF5QixDQUFDLFFBQVEsQ0FBQztTQUN2QyxDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsc0NBK0NDO0FBOUNDOztHQUVHO0FBQ29CLGlCQUFHLEdBQXFCO0lBQzdDLFVBQVUsRUFBRSwrQkFBK0I7SUFDM0MsSUFBSSxFQUFFLGVBQWU7Q0FDdEIsQ0FBQztBQStESjs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQix5QkFBeUIsQ0FBQyxHQUFtQztJQUMzRSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNB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O0FBUkQsc0dBUUM7QUFnQkQ7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0Isa0NBQWtDLENBQUMsR0FBNEM7SUFDN0YsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSTtLQUNqQixDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFQRCxnRkFPQztBQUNELHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGdlbmVyYXRlZCBieSBjZGs4c1xuaW1wb3J0IHsgQXBpT2JqZWN0LCBBcGlPYmplY3RNZXRhZGF0YSwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbi8qKlxuICogU2VjdXJpdHlHcm91cCBpcyB0aGUgU2NoZW1hIGZvciB0aGUgU2VjdXJpdHlHcm91cHMgQVBJXG4gKlxuICogQHNjaGVtYSBTZWN1cml0eUdyb3VwXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWN1cml0eUdyb3VwIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiU2VjdXJpdHlHcm91cFwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnZWMyLnNlcnZpY2VzLms4cy5hd3MvdjFhbHBoYTEnLFxuICAgIGtpbmQ6ICdTZWN1cml0eUdyb3VwJyxcbiAgfTtcblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiU2VjdXJpdHlHcm91cFwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBTZWN1cml0eUdyb3VwUHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLlNlY3VyaXR5R3JvdXAuR1ZLLFxuICAgICAgLi4udG9Kc29uX1NlY3VyaXR5R3JvdXBQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJTZWN1cml0eUdyb3VwXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZWN1cml0eUdyb3VwUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uU2VjdXJpdHlHcm91cC5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uU2VjdXJpdHlHcm91cC5HVkssXG4gICAgICAuLi50b0pzb25fU2VjdXJpdHlHcm91cFByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogU2VjdXJpdHlHcm91cCBpcyB0aGUgU2NoZW1hIGZvciB0aGUgU2VjdXJpdHlHcm91cHMgQVBJXG4gKlxuICogQHNjaGVtYSBTZWN1cml0eUdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cFByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cCNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogU2VjdXJpdHlHcm91cFNwZWMgZGVmaW5lcyB0aGUgZGVzaXJlZCBzdGF0ZSBvZiBTZWN1cml0eUdyb3VwLlxuICAgKiBEZXNjcmliZXMgYSBzZWN1cml0eSBncm91cC5cbiAgICpcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM/OiBTZWN1cml0eUdyb3VwU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdTZWN1cml0eUdyb3VwUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1NlY3VyaXR5R3JvdXBQcm9wcyhvYmo6IFNlY3VyaXR5R3JvdXBQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX1NlY3VyaXR5R3JvdXBTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBTZWN1cml0eUdyb3VwU3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIFNlY3VyaXR5R3JvdXAuXG4gKiBEZXNjcmliZXMgYSBzZWN1cml0eSBncm91cC5cbiAqXG4gKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cFNwZWMge1xuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNlY3VyaXR5IGdyb3VwLiBUaGlzIGlzIGluZm9ybWF0aW9uYWwgb25seS5cbiAgICogQ29uc3RyYWludHM6IFVwIHRvIDI1NSBjaGFyYWN0ZXJzIGluIGxlbmd0aFxuICAgKiBDb25zdHJhaW50cyBmb3IgRUMyLUNsYXNzaWM6IEFTQ0lJIGNoYXJhY3RlcnNcbiAgICogQ29uc3RyYWludHMgZm9yIEVDMi1WUEM6IGEteiwgQS1aLCAwLTksIHNwYWNlcywgYW5kIC5fLTovKCkjLEBbXSs9Jjt7fSEkKlxuICAgKlxuICAgKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjI2Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VjdXJpdHkgZ3JvdXAuXG4gICAqIENvbnN0cmFpbnRzOiBVcCB0byAyNTUgY2hhcmFjdGVycyBpbiBsZW5ndGguIENhbm5vdCBzdGFydCB3aXRoIHNnLS5cbiAgICogQ29uc3RyYWludHMgZm9yIEVDMi1DbGFzc2ljOiBBU0NJSSBjaGFyYWN0ZXJzXG4gICAqIENvbnN0cmFpbnRzIGZvciBFQzItVlBDOiBhLXosIEEtWiwgMC05LCBzcGFjZXMsIGFuZCAuXy06LygpIyxAW10rPSY7e30hJCpcbiAgICpcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwU3BlYyNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFzc2lnbiB0byB0aGUgc2VjdXJpdHkgZ3JvdXAuXG4gICAqXG4gICAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWMjdGFnU3BlY2lmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHRhZ1NwZWNpZmljYXRpb25zPzogU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9uc1tdO1xuXG4gIC8qKlxuICAgKiBbRUMyLVZQQ10gVGhlIElEIG9mIHRoZSBWUEMuIFJlcXVpcmVkIGZvciBFQzItVlBDLlxuICAgKlxuICAgKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjI3ZwY0lEXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcblxuICAvKipcbiAgICogQVdTUmVzb3VyY2VSZWZlcmVuY2VXcmFwcGVyIHByb3ZpZGVzIGEgd3JhcHBlciBhcm91bmQgKkFXU1Jlc291cmNlUmVmZXJlbmNlIHR5cGUgdG8gcHJvdmlkZSBtb3JlIHVzZXIgZnJpZW5kbHkgc3ludGF4IGZvciByZWZlcmVuY2VzIHVzaW5nICdmcm9tJyBmaWVsZCBFeDogQVBJSURSZWY6ICAgZnJvbTogICAgIG5hbWU6IG15LWFwaVxuICAgKlxuICAgKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjI3ZwY1JlZlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjUmVmPzogU2VjdXJpdHlHcm91cFNwZWNWcGNSZWY7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnU2VjdXJpdHlHcm91cFNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1NlY3VyaXR5R3JvdXBTcGVjKG9iajogU2VjdXJpdHlHcm91cFNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdkZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICd0YWdTcGVjaWZpY2F0aW9ucyc6IG9iai50YWdTcGVjaWZpY2F0aW9ucz8ubWFwKHkgPT4gdG9Kc29uX1NlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnMoeSkpLFxuICAgICd2cGNJRCc6IG9iai52cGNJZCxcbiAgICAndnBjUmVmJzogdG9Kc29uX1NlY3VyaXR5R3JvdXBTcGVjVnBjUmVmKG9iai52cGNSZWYpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRoZSB0YWdzIHRvIGFwcGx5IHRvIGEgcmVzb3VyY2Ugd2hlbiB0aGUgcmVzb3VyY2UgaXMgYmVpbmcgY3JlYXRlZC5cbiAqXG4gKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9ucyNyZXNvdXJjZVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlVHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zI3RhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zVGFnc1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1NlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1NlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnMob2JqOiBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncmVzb3VyY2VUeXBlJzogb2JqLnJlc291cmNlVHlwZSxcbiAgICAndGFncyc6IG9iai50YWdzPy5tYXAoeSA9PiB0b0pzb25fU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9uc1RhZ3MoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEFXU1Jlc291cmNlUmVmZXJlbmNlV3JhcHBlciBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kICpBV1NSZXNvdXJjZVJlZmVyZW5jZSB0eXBlIHRvIHByb3ZpZGUgbW9yZSB1c2VyIGZyaWVuZGx5IHN5bnRheCBmb3IgcmVmZXJlbmNlcyB1c2luZyAnZnJvbScgZmllbGQgRXg6IEFQSUlEUmVmOiAgIGZyb206ICAgICBuYW1lOiBteS1hcGlcbiAqXG4gKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjVnBjUmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cFNwZWNWcGNSZWYge1xuICAvKipcbiAgICogQVdTUmVzb3VyY2VSZWZlcmVuY2UgcHJvdmlkZXMgYWxsIHRoZSB2YWx1ZXMgbmVjZXNzYXJ5IHRvIHJlZmVyZW5jZSBhbm90aGVyIGs4cyByZXNvdXJjZSBmb3IgZmluZGluZyB0aGUgaWRlbnRpZmllcihJZC9BUk4vTmFtZSlcbiAgICpcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwU3BlY1ZwY1JlZiNmcm9tXG4gICAqL1xuICByZWFkb25seSBmcm9tPzogU2VjdXJpdHlHcm91cFNwZWNWcGNSZWZGcm9tO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1NlY3VyaXR5R3JvdXBTcGVjVnBjUmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9TZWN1cml0eUdyb3VwU3BlY1ZwY1JlZihvYmo6IFNlY3VyaXR5R3JvdXBTcGVjVnBjUmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZnJvbSc6IHRvSnNvbl9TZWN1cml0eUdyb3VwU3BlY1ZwY1JlZkZyb20ob2JqLmZyb20pLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIERlc2NyaWJlcyBhIHRhZy5cbiAqXG4gKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnNUYWdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9uc1RhZ3Mge1xuICAvKipcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zVGFncyNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zVGFncyN2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9uc1RhZ3MnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1NlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnNUYWdzKG9iajogU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9uc1RhZ3MgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICAgICd2YWx1ZSc6IG9iai52YWx1ZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBBV1NSZXNvdXJjZVJlZmVyZW5jZSBwcm92aWRlcyBhbGwgdGhlIHZhbHVlcyBuZWNlc3NhcnkgdG8gcmVmZXJlbmNlIGFub3RoZXIgazhzIHJlc291cmNlIGZvciBmaW5kaW5nIHRoZSBpZGVudGlmaWVyKElkL0FSTi9OYW1lKVxuICpcbiAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWNWcGNSZWZGcm9tXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cFNwZWNWcGNSZWZGcm9tIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWNWcGNSZWZGcm9tI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnU2VjdXJpdHlHcm91cFNwZWNWcGNSZWZGcm9tJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9TZWN1cml0eUdyb3VwU3BlY1ZwY1JlZkZyb20ob2JqOiBTZWN1cml0eUdyb3VwU3BlY1ZwY1JlZkZyb20gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWMyc2VjdXJpdHlncm91cHMtZWMyLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9lYzJzZWN1cml0eWdyb3Vwcy1lYzIuc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxpQkFBUztJQXVCMUM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUE0QixFQUFFO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxhQUFhLENBQUMsR0FBRztZQUNwQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBekJEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBNEIsRUFBRTtRQUNuRCxPQUFPO1lBQ0wsR0FBRyxhQUFhLENBQUMsR0FBRztZQUNwQixHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQztJQWVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsR0FBRyxhQUFhLENBQUMsR0FBRztZQUNwQixHQUFHLHlCQUF5QixDQUFDLFFBQVEsQ0FBQztTQUN2QyxDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsc0NBK0NDO0FBOUNDOztHQUVHO0FBQ29CLGlCQUFHLEdBQXFCO0lBQzdDLFVBQVUsRUFBRSwrQkFBK0I7SUFDM0MsSUFBSSxFQUFFLGVBQWU7Q0FDdEIsQ0FBQztBQStESjs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQix5QkFBeUIsQ0FBQyxHQUFtQztJQUMzRSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNB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RCxzR0FRQztBQWdCRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixrQ0FBa0MsQ0FBQyxHQUE0QztJQUM3RixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJO0tBQ2pCLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVBELGdGQU9DO0FBQ0Qsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGJ5IGNkazhzXG5pbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLyoqXG4gKiBTZWN1cml0eUdyb3VwIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBTZWN1cml0eUdyb3VwcyBBUElcbiAqXG4gKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBcbiAqL1xuZXhwb3J0IGNsYXNzIFNlY3VyaXR5R3JvdXAgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJTZWN1cml0eUdyb3VwXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdlYzIuc2VydmljZXMuazhzLmF3cy92MWFscGhhMScsXG4gICAga2luZDogJ1NlY3VyaXR5R3JvdXAnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJTZWN1cml0eUdyb3VwXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IFNlY3VyaXR5R3JvdXBQcm9wcyA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uU2VjdXJpdHlHcm91cC5HVkssXG4gICAgICAuLi50b0pzb25fU2VjdXJpdHlHcm91cFByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIlNlY3VyaXR5R3JvdXBcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyaXR5R3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5TZWN1cml0eUdyb3VwLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5TZWN1cml0eUdyb3VwLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9TZWN1cml0eUdyb3VwUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBTZWN1cml0eUdyb3VwIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBTZWN1cml0eUdyb3VwcyBBUElcbiAqXG4gKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUdyb3VwUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eUdyb3VwU3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIFNlY3VyaXR5R3JvdXAuXG4gICAqIERlc2NyaWJlcyBhIHNlY3VyaXR5IGdyb3VwLlxuICAgKlxuICAgKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXAjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IFNlY3VyaXR5R3JvdXBTcGVjO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1NlY3VyaXR5R3JvdXBQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2VjdXJpdHlHcm91cFByb3BzKG9iajogU2VjdXJpdHlHcm91cFByb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbWV0YWRhdGEnOiBvYmoubWV0YWRhdGEsXG4gICAgJ3NwZWMnOiB0b0pzb25fU2VjdXJpdHlHcm91cFNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFNlY3VyaXR5R3JvdXBTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgU2VjdXJpdHlHcm91cC5cbiAqIERlc2NyaWJlcyBhIHNlY3VyaXR5IGdyb3VwLlxuICpcbiAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUdyb3VwU3BlYyB7XG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIGZvciB0aGUgc2VjdXJpdHkgZ3JvdXAuIFRoaXMgaXMgaW5mb3JtYXRpb25hbCBvbmx5LlxuICAgKiBDb25zdHJhaW50czogVXAgdG8gMjU1IGNoYXJhY3RlcnMgaW4gbGVuZ3RoXG4gICAqIENvbnN0cmFpbnRzIGZvciBFQzItQ2xhc3NpYzogQVNDSUkgY2hhcmFjdGVyc1xuICAgKiBDb25zdHJhaW50cyBmb3IgRUMyLVZQQzogYS16LCBBLVosIDAtOSwgc3BhY2VzLCBhbmQgLl8tOi8oKSMsQFtdKz0mO3t9ISQqXG4gICAqXG4gICAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWMjZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWN1cml0eSBncm91cC5cbiAgICogQ29uc3RyYWludHM6IFVwIHRvIDI1NSBjaGFyYWN0ZXJzIGluIGxlbmd0aC4gQ2Fubm90IHN0YXJ0IHdpdGggc2ctLlxuICAgKiBDb25zdHJhaW50cyBmb3IgRUMyLUNsYXNzaWM6IEFTQ0lJIGNoYXJhY3RlcnNcbiAgICogQ29uc3RyYWludHMgZm9yIEVDMi1WUEM6IGEteiwgQS1aLCAwLTksIHNwYWNlcywgYW5kIC5fLTovKCkjLEBbXSs9Jjt7fSEkKlxuICAgKlxuICAgKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXNzaWduIHRvIHRoZSBzZWN1cml0eSBncm91cC5cbiAgICpcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwU3BlYyN0YWdTcGVjaWZpY2F0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFnU3BlY2lmaWNhdGlvbnM/OiBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zW107XG5cbiAgLyoqXG4gICAqIFtFQzItVlBDXSBUaGUgSUQgb2YgdGhlIFZQQy4gUmVxdWlyZWQgZm9yIEVDMi1WUEMuXG4gICAqXG4gICAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWMjdnBjSURcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1NSZXNvdXJjZVJlZmVyZW5jZVdyYXBwZXIgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCAqQVdTUmVzb3VyY2VSZWZlcmVuY2UgdHlwZSB0byBwcm92aWRlIG1vcmUgdXNlciBmcmllbmRseSBzeW50YXggZm9yIHJlZmVyZW5jZXMgdXNpbmcgJ2Zyb20nIGZpZWxkIEV4OiBBUElJRFJlZjogICBmcm9tOiAgICAgbmFtZTogbXktYXBpXG4gICAqXG4gICAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWMjdnBjUmVmXG4gICAqL1xuICByZWFkb25seSB2cGNSZWY/OiBTZWN1cml0eUdyb3VwU3BlY1ZwY1JlZjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdTZWN1cml0eUdyb3VwU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2VjdXJpdHlHcm91cFNwZWMob2JqOiBTZWN1cml0eUdyb3VwU3BlYyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ3RhZ1NwZWNpZmljYXRpb25zJzogb2JqLnRhZ1NwZWNpZmljYXRpb25zPy5tYXAoeSA9PiB0b0pzb25fU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9ucyh5KSksXG4gICAgJ3ZwY0lEJzogb2JqLnZwY0lkLFxuICAgICd2cGNSZWYnOiB0b0pzb25fU2VjdXJpdHlHcm91cFNwZWNWcGNSZWYob2JqLnZwY1JlZiksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gYSByZXNvdXJjZSB3aGVuIHRoZSByZXNvdXJjZSBpcyBiZWluZyBjcmVhdGVkLlxuICpcbiAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnMge1xuICAvKipcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zI3Jlc291cmNlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnMjdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IFNlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnNUYWdzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9ucyhvYmo6IFNlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZXNvdXJjZVR5cGUnOiBvYmoucmVzb3VyY2VUeXBlLFxuICAgICd0YWdzJzogb2JqLnRhZ3M/Lm1hcCh5ID0+IHRvSnNvbl9TZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zVGFncyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQVdTUmVzb3VyY2VSZWZlcmVuY2VXcmFwcGVyIHByb3ZpZGVzIGEgd3JhcHBlciBhcm91bmQgKkFXU1Jlc291cmNlUmVmZXJlbmNlIHR5cGUgdG8gcHJvdmlkZSBtb3JlIHVzZXIgZnJpZW5kbHkgc3ludGF4IGZvciByZWZlcmVuY2VzIHVzaW5nICdmcm9tJyBmaWVsZCBFeDogQVBJSURSZWY6ICAgZnJvbTogICAgIG5hbWU6IG15LWFwaVxuICpcbiAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWNWcGNSZWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUdyb3VwU3BlY1ZwY1JlZiB7XG4gIC8qKlxuICAgKiBBV1NSZXNvdXJjZVJlZmVyZW5jZSBwcm92aWRlcyBhbGwgdGhlIHZhbHVlcyBuZWNlc3NhcnkgdG8gcmVmZXJlbmNlIGFub3RoZXIgazhzIHJlc291cmNlIGZvciBmaW5kaW5nIHRoZSBpZGVudGlmaWVyKElkL0FSTi9OYW1lKVxuICAgKlxuICAgKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjVnBjUmVmI2Zyb21cbiAgICovXG4gIHJlYWRvbmx5IGZyb20/OiBTZWN1cml0eUdyb3VwU3BlY1ZwY1JlZkZyb207XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnU2VjdXJpdHlHcm91cFNwZWNWcGNSZWYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1NlY3VyaXR5R3JvdXBTcGVjVnBjUmVmKG9iajogU2VjdXJpdHlHcm91cFNwZWNWcGNSZWYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdmcm9tJzogdG9Kc29uX1NlY3VyaXR5R3JvdXBTcGVjVnBjUmVmRnJvbShvYmouZnJvbSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogRGVzY3JpYmVzIGEgdGFnLlxuICpcbiAqIEBzY2hlbWEgU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9uc1RhZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zVGFncyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnNUYWdzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFNlY3VyaXR5R3JvdXBTcGVjVGFnU3BlY2lmaWNhdGlvbnNUYWdzI3ZhbHVlXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zVGFncycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2VjdXJpdHlHcm91cFNwZWNUYWdTcGVjaWZpY2F0aW9uc1RhZ3Mob2JqOiBTZWN1cml0eUdyb3VwU3BlY1RhZ1NwZWNpZmljYXRpb25zVGFncyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gICAgJ3ZhbHVlJzogb2JqLnZhbHVlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEFXU1Jlc291cmNlUmVmZXJlbmNlIHByb3ZpZGVzIGFsbCB0aGUgdmFsdWVzIG5lY2Vzc2FyeSB0byByZWZlcmVuY2UgYW5vdGhlciBrOHMgcmVzb3VyY2UgZm9yIGZpbmRpbmcgdGhlIGlkZW50aWZpZXIoSWQvQVJOL05hbWUpXG4gKlxuICogQHNjaGVtYSBTZWN1cml0eUdyb3VwU3BlY1ZwY1JlZkZyb21cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUdyb3VwU3BlY1ZwY1JlZkZyb20ge1xuICAvKipcbiAgICogQHNjaGVtYSBTZWN1cml0eUdyb3VwU3BlY1ZwY1JlZkZyb20jbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdTZWN1cml0eUdyb3VwU3BlY1ZwY1JlZkZyb20nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1NlY3VyaXR5R3JvdXBTcGVjVnBjUmVmRnJvbShvYmo6IFNlY3VyaXR5R3JvdXBTcGVjVnBjUmVmRnJvbSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuIl19
@@ -156,4 +156,3 @@ export declare enum FieldExportSpecToKind {
156
156
  /** secret */
157
157
  SECRET = "secret"
158
158
  }
159
- //# sourceMappingURL=fieldexports-services.k8s.aws.d.ts.map
@@ -132,4 +132,3 @@ export interface PolicySpecTags {
132
132
  * Converts an object of type 'PolicySpecTags' to JSON representation.
133
133
  */
134
134
  export declare function toJson_PolicySpecTags(obj: PolicySpecTags | undefined): Record<string, any> | undefined;
135
- //# sourceMappingURL=iampolicies-iam.services.k8s.aws.d.ts.map
@@ -74,7 +74,6 @@ exports.toJson_PolicyProps = toJson_PolicyProps;
74
74
  */
75
75
  /* eslint-disable max-len, quote-props */
76
76
  function toJson_PolicySpec(obj) {
77
- var _a;
78
77
  if (obj === undefined) {
79
78
  return undefined;
80
79
  }
@@ -83,7 +82,7 @@ function toJson_PolicySpec(obj) {
83
82
  'name': obj.name,
84
83
  'path': obj.path,
85
84
  'policyDocument': obj.policyDocument,
86
- 'tags': (_a = obj.tags) === null || _a === void 0 ? void 0 : _a.map(y => toJson_PolicySpecTags(y)),
85
+ 'tags': obj.tags?.map(y => toJson_PolicySpecTags(y)),
87
86
  };
88
87
  // filter undefined values
89
88
  return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
@@ -106,4 +105,4 @@ function toJson_PolicySpecTags(obj) {
106
105
  }
107
106
  exports.toJson_PolicySpecTags = toJson_PolicySpecTags;
108
107
  /* eslint-enable max-len, quote-props */
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtcG9saWNpZXMtaWFtLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9pYW1wb2xpY2llcy1pYW0uc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLE1BQU8sU0FBUSxpQkFBUztJQXVCbkM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFxQixFQUFFO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxNQUFNLENBQUMsR0FBRztZQUNiLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUF6QkQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFxQixFQUFFO1FBQzVDLE9BQU87WUFDTCxHQUFHLE1BQU0sQ0FBQyxHQUFHO1lBQ2IsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7U0FDN0IsQ0FBQztJQUNKLENBQUM7SUFlRDs7T0FFRztJQUNJLE1BQU07UUFDWCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEMsT0FBTztZQUNMLEdBQUcsTUFBTSxDQUFDLEdBQUc7WUFDYixHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztTQUNoQyxDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsd0JBK0NDO0FBOUNDOztHQUVHO0FBQ29CLFVBQUcsR0FBcUI7SUFDN0MsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7QUFpRUo7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0Isa0JBQWtCLENBQUMsR0FBNEI7SUFDN0QsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLFVBQVUsRUFBRSxHQUFHLENBQUMsUUFBUTtRQUN4QixNQUFNLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztLQUNwQyxDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFSRCxnREFRQztBQWdFRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixpQkFBaUIsQ0FBQyxHQUEyQjs7SUFDM0QsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLGFBQWEsRUFBRSxHQUFHLENBQUMsV0FBVztRQUM5QixNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDaEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1FBQ2hCLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxjQUFjO1FBQ3BDLE1BQU0sUUFBRSxHQUFHLENBQUMsSUFBSSwwQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyRCxDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFYRCw4Q0FXQztBQXFCRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixxQkFBcUIsQ0FBQyxHQUErQjtJQUNuRSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1FBQ2QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLO0tBQ25CLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVJELHNEQVFDO0FBQ0Qsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGJ5IGNkazhzXG5pbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLyoqXG4gKiBQb2xpY3kgaXMgdGhlIFNjaGVtYSBmb3IgdGhlIFBvbGljaWVzIEFQSVxuICpcbiAqIEBzY2hlbWEgUG9saWN5XG4gKi9cbmV4cG9ydCBjbGFzcyBQb2xpY3kgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJQb2xpY3lcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2lhbS5zZXJ2aWNlcy5rOHMuYXdzL3YxYWxwaGExJyxcbiAgICBraW5kOiAnUG9saWN5JyxcbiAgfTtcblxuICAvKipcbiAgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiUG9saWN5XCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IFBvbGljeVByb3BzID0ge30pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5Qb2xpY3kuR1ZLLFxuICAgICAgLi4udG9Kc29uX1BvbGljeVByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIlBvbGljeVwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUG9saWN5UHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uUG9saWN5LkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5Qb2xpY3kuR1ZLLFxuICAgICAgLi4udG9Kc29uX1BvbGljeVByb3BzKHJlc29sdmVkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUG9saWN5IGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBQb2xpY2llcyBBUElcbiAqXG4gKiBAc2NoZW1hIFBvbGljeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvbGljeVByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgUG9saWN5I21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBQb2xpY3lTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgUG9saWN5LlxuICAgKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIG1hbmFnZWQgcG9saWN5LlxuICAgKiBUaGlzIGRhdGEgdHlwZSBpcyB1c2VkIGFzIGEgcmVzcG9uc2UgZWxlbWVudCBpbiB0aGUgQ3JlYXRlUG9saWN5LCBHZXRQb2xpY3ksIGFuZCBMaXN0UG9saWNpZXMgb3BlcmF0aW9ucy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgbWFuYWdlZCBwb2xpY2llcywgcmVmZXIgdG8gTWFuYWdlZCBwb2xpY2llcyBhbmQgaW5saW5lIHBvbGljaWVzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcG9saWNpZXMtbWFuYWdlZC12cy1pbmxpbmUuaHRtbCkgaW4gdGhlIElBTSBVc2VyIEd1aWRlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBvbGljeSNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjPzogUG9saWN5U3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQb2xpY3lQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG9saWN5UHJvcHMob2JqOiBQb2xpY3lQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX1BvbGljeVNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFBvbGljeVNwZWMgZGVmaW5lcyB0aGUgZGVzaXJlZCBzdGF0ZSBvZiBQb2xpY3kuXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIG1hbmFnZWQgcG9saWN5LlxuICogVGhpcyBkYXRhIHR5cGUgaXMgdXNlZCBhcyBhIHJlc3BvbnNlIGVsZW1lbnQgaW4gdGhlIENyZWF0ZVBvbGljeSwgR2V0UG9saWN5LCBhbmQgTGlzdFBvbGljaWVzIG9wZXJhdGlvbnMuXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBtYW5hZ2VkIHBvbGljaWVzLCByZWZlciB0byBNYW5hZ2VkIHBvbGljaWVzIGFuZCBpbmxpbmUgcG9saWNpZXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9wb2xpY2llcy1tYW5hZ2VkLXZzLWlubGluZS5odG1sKSBpbiB0aGUgSUFNIFVzZXIgR3VpZGUuXG4gKlxuICogQHNjaGVtYSBQb2xpY3lTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9saWN5U3BlYyB7XG4gIC8qKlxuICAgKiBBIGZyaWVuZGx5IGRlc2NyaXB0aW9uIG9mIHRoZSBwb2xpY3kuXG4gICAqIFR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwZXJtaXNzaW9ucyBkZWZpbmVkIGluIHRoZSBwb2xpY3kuIEZvciBleGFtcGxlLCBcIkdyYW50cyBhY2Nlc3MgdG8gcHJvZHVjdGlvbiBEeW5hbW9EQiB0YWJsZXMuXCJcbiAgICogVGhlIHBvbGljeSBkZXNjcmlwdGlvbiBpcyBpbW11dGFibGUuIEFmdGVyIGEgdmFsdWUgaXMgYXNzaWduZWQsIGl0IGNhbm5vdCBiZSBjaGFuZ2VkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBvbGljeVNwZWMjZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZnJpZW5kbHkgbmFtZSBvZiB0aGUgcG9saWN5LlxuICAgKiBJQU0gdXNlciwgZ3JvdXAsIHJvbGUsIGFuZCBwb2xpY3kgbmFtZXMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBhY2NvdW50LiBOYW1lcyBhcmUgbm90IGRpc3Rpbmd1aXNoZWQgYnkgY2FzZS4gRm9yIGV4YW1wbGUsIHlvdSBjYW5ub3QgY3JlYXRlIHJlc291cmNlcyBuYW1lZCBib3RoIFwiTXlSZXNvdXJjZVwiIGFuZCBcIm15cmVzb3VyY2VcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQb2xpY3lTcGVjI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggZm9yIHRoZSBwb2xpY3kuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHBhdGhzLCBzZWUgSUFNIGlkZW50aWZpZXJzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvVXNpbmdfSWRlbnRpZmllcnMuaHRtbCkgaW4gdGhlIElBTSBVc2VyIEd1aWRlLlxuICAgKiBUaGlzIHBhcmFtZXRlciBpcyBvcHRpb25hbC4gSWYgaXQgaXMgbm90IGluY2x1ZGVkLCBpdCBkZWZhdWx0cyB0byBhIHNsYXNoICgvKS5cbiAgICogVGhpcyBwYXJhbWV0ZXIgYWxsb3dzICh0aHJvdWdoIGl0cyByZWdleCBwYXR0ZXJuIChodHRwOi8vd2lraXBlZGlhLm9yZy93aWtpL3JlZ2V4KSkgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyBjb25zaXN0aW5nIG9mIGVpdGhlciBhIGZvcndhcmQgc2xhc2ggKC8pIGJ5IGl0c2VsZiBvciBhIHN0cmluZyB0aGF0IG11c3QgYmVnaW4gYW5kIGVuZCB3aXRoIGZvcndhcmQgc2xhc2hlcy4gSW4gYWRkaXRpb24sIGl0IGNhbiBjb250YWluIGFueSBBU0NJSSBjaGFyYWN0ZXIgZnJvbSB0aGUgISAoXFx1MDAyMSkgdGhyb3VnaCB0aGUgREVMIGNoYXJhY3RlciAoXFx1MDA3RiksIGluY2x1ZGluZyBtb3N0IHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMsIGRpZ2l0cywgYW5kIHVwcGVyIGFuZCBsb3dlcmNhc2VkIGxldHRlcnMuXG4gICAqIFlvdSBjYW5ub3QgdXNlIGFuIGFzdGVyaXNrICgqKSBpbiB0aGUgcGF0aCBuYW1lLlxuICAgKlxuICAgKiBAc2NoZW1hIFBvbGljeVNwZWMjcGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEpTT04gcG9saWN5IGRvY3VtZW50IHRoYXQgeW91IHdhbnQgdG8gdXNlIGFzIHRoZSBjb250ZW50IGZvciB0aGUgbmV3IHBvbGljeS5cbiAgICogWW91IG11c3QgcHJvdmlkZSBwb2xpY2llcyBpbiBKU09OIGZvcm1hdCBpbiBJQU0uIEhvd2V2ZXIsIGZvciBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMgZm9ybWF0dGVkIGluIFlBTUwsIHlvdSBjYW4gcHJvdmlkZSB0aGUgcG9saWN5IGluIEpTT04gb3IgWUFNTCBmb3JtYXQuIENsb3VkRm9ybWF0aW9uIGFsd2F5cyBjb252ZXJ0cyBhIFlBTUwgcG9saWN5IHRvIEpTT04gZm9ybWF0IGJlZm9yZSBzdWJtaXR0aW5nIGl0IHRvIElBTS5cbiAgICogVGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBwb2xpY3kgZG9jdW1lbnQgdGhhdCB5b3UgY2FuIHBhc3MgaW4gdGhpcyBvcGVyYXRpb24sIGluY2x1ZGluZyB3aGl0ZXNwYWNlLCBpcyBsaXN0ZWQgYmVsb3cuIFRvIHZpZXcgdGhlIG1heGltdW0gY2hhcmFjdGVyIGNvdW50cyBvZiBhIG1hbmFnZWQgcG9saWN5IHdpdGggbm8gd2hpdGVzcGFjZXMsIHNlZSBJQU0gYW5kIFNUUyBjaGFyYWN0ZXIgcXVvdGFzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX2lhbS1xdW90YXMuaHRtbCNyZWZlcmVuY2VfaWFtLXF1b3Rhcy1lbnRpdHktbGVuZ3RoKS5cbiAgICogVG8gbGVhcm4gbW9yZSBhYm91dCBKU09OIHBvbGljeSBncmFtbWFyLCBzZWUgR3JhbW1hciBvZiB0aGUgSUFNIEpTT04gcG9saWN5IGxhbmd1YWdlIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2dyYW1tYXIuaHRtbCkgaW4gdGhlIElBTSBVc2VyIEd1aWRlLlxuICAgKiBUaGUgcmVnZXggcGF0dGVybiAoaHR0cDovL3dpa2lwZWRpYS5vcmcvd2lraS9yZWdleCkgdXNlZCB0byB2YWxpZGF0ZSB0aGlzIHBhcmFtZXRlciBpcyBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGNvbnNpc3Rpbmcgb2YgdGhlIGZvbGxvd2luZzpcbiAgICogKiBBbnkgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlciByYW5naW5nIGZyb20gdGhlIHNwYWNlIGNoYXJhY3RlciAoXFx1MDAyMCkgICAgdGhyb3VnaCB0aGUgZW5kIG9mIHRoZSBBU0NJSSBjaGFyYWN0ZXIgcmFuZ2VcbiAgICogKiBUaGUgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhlIEJhc2ljIExhdGluIGFuZCBMYXRpbi0xIFN1cHBsZW1lbnQgY2hhcmFjdGVyICAgIHNldCAodGhyb3VnaCBcXHUwMEZGKVxuICAgKiAqIFRoZSBzcGVjaWFsIGNoYXJhY3RlcnMgdGFiIChcXHUwMDA5KSwgbGluZSBmZWVkIChcXHUwMDBBKSwgYW5kIGNhcnJpYWdlICAgIHJldHVybiAoXFx1MDAwRClcbiAgICpcbiAgICogQHNjaGVtYSBQb2xpY3lTcGVjI3BvbGljeURvY3VtZW50XG4gICAqL1xuICByZWFkb25seSBwb2xpY3lEb2N1bWVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgdGFncyB0aGF0IHlvdSB3YW50IHRvIGF0dGFjaCB0byB0aGUgbmV3IElBTSBjdXN0b21lciBtYW5hZ2VkIHBvbGljeS4gRWFjaCB0YWcgY29uc2lzdHMgb2YgYSBrZXkgbmFtZSBhbmQgYW4gYXNzb2NpYXRlZCB2YWx1ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGFnZ2luZywgc2VlIFRhZ2dpbmcgSUFNIHJlc291cmNlcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL2lkX3RhZ3MuaHRtbCkgaW4gdGhlIElBTSBVc2VyIEd1aWRlLlxuICAgKiBJZiBhbnkgb25lIG9mIHRoZSB0YWdzIGlzIGludmFsaWQgb3IgaWYgeW91IGV4Y2VlZCB0aGUgYWxsb3dlZCBtYXhpbXVtIG51bWJlciBvZiB0YWdzLCB0aGVuIHRoZSBlbnRpcmUgcmVxdWVzdCBmYWlscyBhbmQgdGhlIHJlc291cmNlIGlzIG5vdCBjcmVhdGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBvbGljeVNwZWMjdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IFBvbGljeVNwZWNUYWdzW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG9saWN5U3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG9saWN5U3BlYyhvYmo6IFBvbGljeVNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdkZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICdwYXRoJzogb2JqLnBhdGgsXG4gICAgJ3BvbGljeURvY3VtZW50Jzogb2JqLnBvbGljeURvY3VtZW50LFxuICAgICd0YWdzJzogb2JqLnRhZ3M/Lm1hcCh5ID0+IHRvSnNvbl9Qb2xpY3lTcGVjVGFncyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQSBzdHJ1Y3R1cmUgdGhhdCByZXByZXNlbnRzIHVzZXItcHJvdmlkZWQgbWV0YWRhdGEgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIElBTSByZXNvdXJjZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGFnZ2luZywgc2VlIFRhZ2dpbmcgSUFNIHJlc291cmNlcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL2lkX3RhZ3MuaHRtbCkgaW4gdGhlIElBTSBVc2VyIEd1aWRlLlxuICpcbiAqIEBzY2hlbWEgUG9saWN5U3BlY1RhZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb2xpY3lTcGVjVGFncyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFBvbGljeVNwZWNUYWdzI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBvbGljeVNwZWNUYWdzI3ZhbHVlXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQb2xpY3lTcGVjVGFncycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG9saWN5U3BlY1RhZ3Mob2JqOiBQb2xpY3lTcGVjVGFncyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gICAgJ3ZhbHVlJzogb2JqLnZhbHVlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtcG9saWNpZXMtaWFtLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9pYW1wb2xpY2llcy1pYW0uc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLE1BQU8sU0FBUSxpQkFBUztJQXVCbkM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFxQixFQUFFO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxNQUFNLENBQUMsR0FBRztZQUNiLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUF6QkQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFxQixFQUFFO1FBQzVDLE9BQU87WUFDTCxHQUFHLE1BQU0sQ0FBQyxHQUFHO1lBQ2IsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7U0FDN0IsQ0FBQztJQUNKLENBQUM7SUFlRDs7T0FFRztJQUNJLE1BQU07UUFDWCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEMsT0FBTztZQUNMLEdBQUcsTUFBTSxDQUFDLEdBQUc7WUFDYixHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztTQUNoQyxDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsd0JBK0NDO0FBOUNDOztHQUVHO0FBQ29CLFVBQUcsR0FBcUI7SUFDN0MsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7QUFpRUo7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0Isa0JBQWtCLENBQUMsR0FBNEI7SUFDN0QsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLFVBQVUsRUFBRSxHQUFHLENBQUMsUUFBUTtRQUN4QixNQUFNLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztLQUNwQyxDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFSRCxnREFRQztBQWdFRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixpQkFBaUIsQ0FBQyxHQUEyQjtJQUMzRCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsYUFBYSxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzlCLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDaEIsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDcEMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDckQsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBWEQsOENBV0M7QUFxQkQ7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IscUJBQXFCLENBQUMsR0FBK0I7SUFDbkUsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRztRQUNkLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSztLQUNuQixDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFSRCxzREFRQztBQUNELHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGdlbmVyYXRlZCBieSBjZGs4c1xuaW1wb3J0IHsgQXBpT2JqZWN0LCBBcGlPYmplY3RNZXRhZGF0YSwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbi8qKlxuICogUG9saWN5IGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBQb2xpY2llcyBBUElcbiAqXG4gKiBAc2NoZW1hIFBvbGljeVxuICovXG5leHBvcnQgY2xhc3MgUG9saWN5IGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiUG9saWN5XCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdpYW0uc2VydmljZXMuazhzLmF3cy92MWFscGhhMScsXG4gICAga2luZDogJ1BvbGljeScsXG4gIH07XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIlBvbGljeVwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBQb2xpY3lQcm9wcyA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uUG9saWN5LkdWSyxcbiAgICAgIC4uLnRvSnNvbl9Qb2xpY3lQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJQb2xpY3lcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBvbGljeVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLlBvbGljeS5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uUG9saWN5LkdWSyxcbiAgICAgIC4uLnRvSnNvbl9Qb2xpY3lQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFBvbGljeSBpcyB0aGUgU2NoZW1hIGZvciB0aGUgUG9saWNpZXMgQVBJXG4gKlxuICogQHNjaGVtYSBQb2xpY3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb2xpY3lQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFBvbGljeSNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogUG9saWN5U3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIFBvbGljeS5cbiAgICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBtYW5hZ2VkIHBvbGljeS5cbiAgICogVGhpcyBkYXRhIHR5cGUgaXMgdXNlZCBhcyBhIHJlc3BvbnNlIGVsZW1lbnQgaW4gdGhlIENyZWF0ZVBvbGljeSwgR2V0UG9saWN5LCBhbmQgTGlzdFBvbGljaWVzIG9wZXJhdGlvbnMuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG1hbmFnZWQgcG9saWNpZXMsIHJlZmVyIHRvIE1hbmFnZWQgcG9saWNpZXMgYW5kIGlubGluZSBwb2xpY2llcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3BvbGljaWVzLW1hbmFnZWQtdnMtaW5saW5lLmh0bWwpIGluIHRoZSBJQU0gVXNlciBHdWlkZS5cbiAgICpcbiAgICogQHNjaGVtYSBQb2xpY3kjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IFBvbGljeVNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG9saWN5UHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BvbGljeVByb3BzKG9iajogUG9saWN5UHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9Qb2xpY3lTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBQb2xpY3lTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgUG9saWN5LlxuICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBtYW5hZ2VkIHBvbGljeS5cbiAqIFRoaXMgZGF0YSB0eXBlIGlzIHVzZWQgYXMgYSByZXNwb25zZSBlbGVtZW50IGluIHRoZSBDcmVhdGVQb2xpY3ksIEdldFBvbGljeSwgYW5kIExpc3RQb2xpY2llcyBvcGVyYXRpb25zLlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgbWFuYWdlZCBwb2xpY2llcywgcmVmZXIgdG8gTWFuYWdlZCBwb2xpY2llcyBhbmQgaW5saW5lIHBvbGljaWVzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcG9saWNpZXMtbWFuYWdlZC12cy1pbmxpbmUuaHRtbCkgaW4gdGhlIElBTSBVc2VyIEd1aWRlLlxuICpcbiAqIEBzY2hlbWEgUG9saWN5U3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvbGljeVNwZWMge1xuICAvKipcbiAgICogQSBmcmllbmRseSBkZXNjcmlwdGlvbiBvZiB0aGUgcG9saWN5LlxuICAgKiBUeXBpY2FsbHkgdXNlZCB0byBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVybWlzc2lvbnMgZGVmaW5lZCBpbiB0aGUgcG9saWN5LiBGb3IgZXhhbXBsZSwgXCJHcmFudHMgYWNjZXNzIHRvIHByb2R1Y3Rpb24gRHluYW1vREIgdGFibGVzLlwiXG4gICAqIFRoZSBwb2xpY3kgZGVzY3JpcHRpb24gaXMgaW1tdXRhYmxlLiBBZnRlciBhIHZhbHVlIGlzIGFzc2lnbmVkLCBpdCBjYW5ub3QgYmUgY2hhbmdlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQb2xpY3lTcGVjI2Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyaWVuZGx5IG5hbWUgb2YgdGhlIHBvbGljeS5cbiAgICogSUFNIHVzZXIsIGdyb3VwLCByb2xlLCBhbmQgcG9saWN5IG5hbWVzIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgYWNjb3VudC4gTmFtZXMgYXJlIG5vdCBkaXN0aW5ndWlzaGVkIGJ5IGNhc2UuIEZvciBleGFtcGxlLCB5b3UgY2Fubm90IGNyZWF0ZSByZXNvdXJjZXMgbmFtZWQgYm90aCBcIk15UmVzb3VyY2VcIiBhbmQgXCJteXJlc291cmNlXCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG9saWN5U3BlYyNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIGZvciB0aGUgcG9saWN5LlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBwYXRocywgc2VlIElBTSBpZGVudGlmaWVycyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL1VzaW5nX0lkZW50aWZpZXJzLmh0bWwpIGluIHRoZSBJQU0gVXNlciBHdWlkZS5cbiAgICogVGhpcyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuIElmIGl0IGlzIG5vdCBpbmNsdWRlZCwgaXQgZGVmYXVsdHMgdG8gYSBzbGFzaCAoLykuXG4gICAqIFRoaXMgcGFyYW1ldGVyIGFsbG93cyAodGhyb3VnaCBpdHMgcmVnZXggcGF0dGVybiAoaHR0cDovL3dpa2lwZWRpYS5vcmcvd2lraS9yZWdleCkpIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgY29uc2lzdGluZyBvZiBlaXRoZXIgYSBmb3J3YXJkIHNsYXNoICgvKSBieSBpdHNlbGYgb3IgYSBzdHJpbmcgdGhhdCBtdXN0IGJlZ2luIGFuZCBlbmQgd2l0aCBmb3J3YXJkIHNsYXNoZXMuIEluIGFkZGl0aW9uLCBpdCBjYW4gY29udGFpbiBhbnkgQVNDSUkgY2hhcmFjdGVyIGZyb20gdGhlICEgKFxcdTAwMjEpIHRocm91Z2ggdGhlIERFTCBjaGFyYWN0ZXIgKFxcdTAwN0YpLCBpbmNsdWRpbmcgbW9zdCBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLCBkaWdpdHMsIGFuZCB1cHBlciBhbmQgbG93ZXJjYXNlZCBsZXR0ZXJzLlxuICAgKiBZb3UgY2Fubm90IHVzZSBhbiBhc3RlcmlzayAoKikgaW4gdGhlIHBhdGggbmFtZS5cbiAgICpcbiAgICogQHNjaGVtYSBQb2xpY3lTcGVjI3BhdGhcbiAgICovXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBKU09OIHBvbGljeSBkb2N1bWVudCB0aGF0IHlvdSB3YW50IHRvIHVzZSBhcyB0aGUgY29udGVudCBmb3IgdGhlIG5ldyBwb2xpY3kuXG4gICAqIFlvdSBtdXN0IHByb3ZpZGUgcG9saWNpZXMgaW4gSlNPTiBmb3JtYXQgaW4gSUFNLiBIb3dldmVyLCBmb3IgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzIGZvcm1hdHRlZCBpbiBZQU1MLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHBvbGljeSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0LiBDbG91ZEZvcm1hdGlvbiBhbHdheXMgY29udmVydHMgYSBZQU1MIHBvbGljeSB0byBKU09OIGZvcm1hdCBiZWZvcmUgc3VibWl0dGluZyBpdCB0byBJQU0uXG4gICAqIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgcG9saWN5IGRvY3VtZW50IHRoYXQgeW91IGNhbiBwYXNzIGluIHRoaXMgb3BlcmF0aW9uLCBpbmNsdWRpbmcgd2hpdGVzcGFjZSwgaXMgbGlzdGVkIGJlbG93LiBUbyB2aWV3IHRoZSBtYXhpbXVtIGNoYXJhY3RlciBjb3VudHMgb2YgYSBtYW5hZ2VkIHBvbGljeSB3aXRoIG5vIHdoaXRlc3BhY2VzLCBzZWUgSUFNIGFuZCBTVFMgY2hhcmFjdGVyIHF1b3RhcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9pYW0tcXVvdGFzLmh0bWwjcmVmZXJlbmNlX2lhbS1xdW90YXMtZW50aXR5LWxlbmd0aCkuXG4gICAqIFRvIGxlYXJuIG1vcmUgYWJvdXQgSlNPTiBwb2xpY3kgZ3JhbW1hciwgc2VlIEdyYW1tYXIgb2YgdGhlIElBTSBKU09OIHBvbGljeSBsYW5ndWFnZSAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19ncmFtbWFyLmh0bWwpIGluIHRoZSBJQU0gVXNlciBHdWlkZS5cbiAgICogVGhlIHJlZ2V4IHBhdHRlcm4gKGh0dHA6Ly93aWtpcGVkaWEub3JnL3dpa2kvcmVnZXgpIHVzZWQgdG8gdmFsaWRhdGUgdGhpcyBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyBjb25zaXN0aW5nIG9mIHRoZSBmb2xsb3dpbmc6XG4gICAqICogQW55IHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXIgcmFuZ2luZyBmcm9tIHRoZSBzcGFjZSBjaGFyYWN0ZXIgKFxcdTAwMjApICAgIHRocm91Z2ggdGhlIGVuZCBvZiB0aGUgQVNDSUkgY2hhcmFjdGVyIHJhbmdlXG4gICAqICogVGhlIHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoZSBCYXNpYyBMYXRpbiBhbmQgTGF0aW4tMSBTdXBwbGVtZW50IGNoYXJhY3RlciAgICBzZXQgKHRocm91Z2ggXFx1MDBGRilcbiAgICogKiBUaGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHRhYiAoXFx1MDAwOSksIGxpbmUgZmVlZCAoXFx1MDAwQSksIGFuZCBjYXJyaWFnZSAgICByZXR1cm4gKFxcdTAwMEQpXG4gICAqXG4gICAqIEBzY2hlbWEgUG9saWN5U3BlYyNwb2xpY3lEb2N1bWVudFxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5RG9jdW1lbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHRhZ3MgdGhhdCB5b3Ugd2FudCB0byBhdHRhY2ggdG8gdGhlIG5ldyBJQU0gY3VzdG9tZXIgbWFuYWdlZCBwb2xpY3kuIEVhY2ggdGFnIGNvbnNpc3RzIG9mIGEga2V5IG5hbWUgYW5kIGFuIGFzc29jaWF0ZWQgdmFsdWUuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRhZ2dpbmcsIHNlZSBUYWdnaW5nIElBTSByZXNvdXJjZXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9pZF90YWdzLmh0bWwpIGluIHRoZSBJQU0gVXNlciBHdWlkZS5cbiAgICogSWYgYW55IG9uZSBvZiB0aGUgdGFncyBpcyBpbnZhbGlkIG9yIGlmIHlvdSBleGNlZWQgdGhlIGFsbG93ZWQgbWF4aW11bSBudW1iZXIgb2YgdGFncywgdGhlbiB0aGUgZW50aXJlIHJlcXVlc3QgZmFpbHMgYW5kIHRoZSByZXNvdXJjZSBpcyBub3QgY3JlYXRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQb2xpY3lTcGVjI3RhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiBQb2xpY3lTcGVjVGFnc1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BvbGljeVNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BvbGljeVNwZWMob2JqOiBQb2xpY3lTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZGVzY3JpcHRpb24nOiBvYmouZGVzY3JpcHRpb24sXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAncGF0aCc6IG9iai5wYXRoLFxuICAgICdwb2xpY3lEb2N1bWVudCc6IG9iai5wb2xpY3lEb2N1bWVudCxcbiAgICAndGFncyc6IG9iai50YWdzPy5tYXAoeSA9PiB0b0pzb25fUG9saWN5U3BlY1RhZ3MoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEEgc3RydWN0dXJlIHRoYXQgcmVwcmVzZW50cyB1c2VyLXByb3ZpZGVkIG1ldGFkYXRhIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBJQU0gcmVzb3VyY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRhZ2dpbmcsIHNlZSBUYWdnaW5nIElBTSByZXNvdXJjZXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9pZF90YWdzLmh0bWwpIGluIHRoZSBJQU0gVXNlciBHdWlkZS5cbiAqXG4gKiBAc2NoZW1hIFBvbGljeVNwZWNUYWdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9saWN5U3BlY1RhZ3Mge1xuICAvKipcbiAgICogQHNjaGVtYSBQb2xpY3lTcGVjVGFncyNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBQb2xpY3lTcGVjVGFncyN2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG9saWN5U3BlY1RhZ3MnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BvbGljeVNwZWNUYWdzKG9iajogUG9saWN5U3BlY1RhZ3MgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICAgICd2YWx1ZSc6IG9iai52YWx1ZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuIl19
@@ -140,4 +140,3 @@ export interface RoleSpecTags {
140
140
  * Converts an object of type 'RoleSpecTags' to JSON representation.
141
141
  */
142
142
  export declare function toJson_RoleSpecTags(obj: RoleSpecTags | undefined): Record<string, any> | undefined;
143
- //# sourceMappingURL=iamroles-iam.services.k8s.aws.d.ts.map