@aws-cdk/aws-iot-alpha 2.219.0-alpha.0 → 2.221.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,38 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
7
35
  };
8
- var _a, _b;
9
36
  Object.defineProperty(exports, "__esModule", { value: true });
10
37
  exports.ScheduledAudit = exports.Frequency = exports.DayOfMonth = exports.DayOfWeek = exports.AuditCheck = void 0;
11
38
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
@@ -134,6 +161,12 @@ var DayOfWeek;
134
161
  * The day of the month on which the scheduled audit takes place.
135
162
  */
136
163
  class DayOfMonth {
164
+ day;
165
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-iot-alpha.DayOfMonth", version: "2.221.0-alpha.0" };
166
+ /**
167
+ * The last day of the month
168
+ */
169
+ static LAST_DAY = new DayOfMonth('LAST');
137
170
  /**
138
171
  * Custom day of the month
139
172
  * @param day the day of the month
@@ -156,12 +189,6 @@ class DayOfMonth {
156
189
  }
157
190
  }
158
191
  exports.DayOfMonth = DayOfMonth;
159
- _a = JSII_RTTI_SYMBOL_1;
160
- DayOfMonth[_a] = { fqn: "@aws-cdk/aws-iot-alpha.DayOfMonth", version: "2.219.0-alpha.0" };
161
- /**
162
- * The last day of the month
163
- */
164
- DayOfMonth.LAST_DAY = new DayOfMonth('LAST');
165
192
  /**
166
193
  * The frequency at which the scheduled audit takes place.
167
194
  */
@@ -187,118 +214,139 @@ var Frequency;
187
214
  /**
188
215
  * Defines AWS IoT Scheduled Audit
189
216
  */
190
- let ScheduledAudit = class ScheduledAudit extends core_1.Resource {
191
- /**
192
- * Import an existing AWS IoT Scheduled Audit from its ARN.
193
- *
194
- * @param scope The parent creating construct (usually `this`)
195
- * @param id The construct's name
196
- * @param scheduledAuditArn The ARN of the scheduled audit
197
- */
198
- static fromScheduledAuditArn(scope, id, scheduledAuditArn) {
199
- const name = core_1.Stack.of(scope).splitArn(scheduledAuditArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
200
- if (!name) {
201
- throw new Error(`No scheduled audit name found in ARN: '${scheduledAuditArn}'`);
217
+ let ScheduledAudit = (() => {
218
+ let _classDecorators = [prop_injectable_1.propertyInjectable];
219
+ let _classDescriptor;
220
+ let _classExtraInitializers = [];
221
+ let _classThis;
222
+ let _classSuper = core_1.Resource;
223
+ var ScheduledAudit = class extends _classSuper {
224
+ static { _classThis = this; }
225
+ static {
226
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
227
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
228
+ ScheduledAudit = _classThis = _classDescriptor.value;
229
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
202
230
  }
203
- return this.fromScheduledAuditAttributes(scope, id, { scheduledAuditArn: scheduledAuditArn, scheduledAuditName: name });
204
- }
205
- /**
206
- * Import an existing AWS IoT Scheduled Audit from its attributes.
207
- *
208
- * @param scope The parent creating construct (usually `this`)
209
- * @param id The construct's name
210
- * @param attrs The scheduled audit attributes
211
- */
212
- static fromScheduledAuditAttributes(scope, id, attrs) {
213
- try {
214
- jsiiDeprecationWarnings._aws_cdk_aws_iot_alpha_ScheduledAuditAttributes(attrs);
215
- }
216
- catch (error) {
217
- if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
218
- Error.captureStackTrace(error, this.fromScheduledAuditAttributes);
231
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-iot-alpha.ScheduledAudit", version: "2.221.0-alpha.0" };
232
+ /** Uniquely identifies this class. */
233
+ static PROPERTY_INJECTION_ID = '@aws-cdk.aws-iot-alpha.ScheduledAudit';
234
+ /**
235
+ * Import an existing AWS IoT Scheduled Audit from its ARN.
236
+ *
237
+ * @param scope The parent creating construct (usually `this`)
238
+ * @param id The construct's name
239
+ * @param scheduledAuditArn The ARN of the scheduled audit
240
+ */
241
+ static fromScheduledAuditArn(scope, id, scheduledAuditArn) {
242
+ const name = core_1.Stack.of(scope).splitArn(scheduledAuditArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
243
+ if (!name) {
244
+ throw new Error(`No scheduled audit name found in ARN: '${scheduledAuditArn}'`);
219
245
  }
220
- throw error;
246
+ return this.fromScheduledAuditAttributes(scope, id, { scheduledAuditArn: scheduledAuditArn, scheduledAuditName: name });
221
247
  }
222
- class Import extends core_1.Resource {
223
- constructor() {
224
- super(...arguments);
225
- this.scheduledAuditArn = attrs.scheduledAuditArn;
226
- this.scheduledAuditName = attrs.scheduledAuditName;
248
+ /**
249
+ * Import an existing AWS IoT Scheduled Audit from its attributes.
250
+ *
251
+ * @param scope The parent creating construct (usually `this`)
252
+ * @param id The construct's name
253
+ * @param attrs The scheduled audit attributes
254
+ */
255
+ static fromScheduledAuditAttributes(scope, id, attrs) {
256
+ try {
257
+ jsiiDeprecationWarnings._aws_cdk_aws_iot_alpha_ScheduledAuditAttributes(attrs);
227
258
  }
228
- }
229
- return new Import(scope, id);
230
- }
231
- constructor(scope, id, props) {
232
- super(scope, id);
233
- try {
234
- jsiiDeprecationWarnings._aws_cdk_aws_iot_alpha_ScheduledAuditProps(props);
235
- }
236
- catch (error) {
237
- if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
238
- Error.captureStackTrace(error, ScheduledAudit);
259
+ catch (error) {
260
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
261
+ Error.captureStackTrace(error, this.fromScheduledAuditAttributes);
262
+ }
263
+ throw error;
239
264
  }
240
- throw error;
241
- }
242
- // Enhanced CDK Analytics Telemetry
243
- (0, metadata_resource_1.addConstructMetadata)(this, props);
244
- if (props.auditChecks.length === 0) {
245
- throw new Error('At least one \'auditChecks\' must be specified.');
265
+ class Import extends core_1.Resource {
266
+ scheduledAuditArn = attrs.scheduledAuditArn;
267
+ scheduledAuditName = attrs.scheduledAuditName;
268
+ }
269
+ return new Import(scope, id);
246
270
  }
247
- switch (props.frequency) {
248
- case Frequency.DAILY:
249
- if (props.dayOfWeek) {
250
- throw new Error('Day of the week must not be specified for daily audits.');
251
- }
252
- if (props.dayOfMonth) {
253
- throw new Error('Day of the month must not be specified for daily audits.');
254
- }
255
- break;
256
- case Frequency.WEEKLY:
257
- case Frequency.BI_WEEKLY:
258
- if (!props.dayOfWeek) {
259
- throw new Error('Day of the week must be specified for weekly or bi-weekly audits.');
260
- }
261
- if (props.dayOfMonth) {
262
- throw new Error('Day of the month must not be specified for weekly or bi-weekly audits.');
271
+ /**
272
+ * The scheduled audit name
273
+ * @attribute
274
+ */
275
+ scheduledAuditName;
276
+ /**
277
+ * The ARN of the scheduled audit
278
+ * @attribute
279
+ */
280
+ scheduledAuditArn;
281
+ constructor(scope, id, props) {
282
+ super(scope, id);
283
+ try {
284
+ jsiiDeprecationWarnings._aws_cdk_aws_iot_alpha_ScheduledAuditProps(props);
285
+ }
286
+ catch (error) {
287
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
288
+ Error.captureStackTrace(error, ScheduledAudit);
263
289
  }
264
- break;
265
- case Frequency.MONTHLY:
266
- if (!props.dayOfMonth) {
267
- throw new Error('Day of the month must be specified for monthly audits.');
290
+ throw error;
291
+ }
292
+ // Enhanced CDK Analytics Telemetry
293
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
294
+ if (props.auditChecks.length === 0) {
295
+ throw new Error('At least one \'auditChecks\' must be specified.');
296
+ }
297
+ switch (props.frequency) {
298
+ case Frequency.DAILY:
299
+ if (props.dayOfWeek) {
300
+ throw new Error('Day of the week must not be specified for daily audits.');
301
+ }
302
+ if (props.dayOfMonth) {
303
+ throw new Error('Day of the month must not be specified for daily audits.');
304
+ }
305
+ break;
306
+ case Frequency.WEEKLY:
307
+ case Frequency.BI_WEEKLY:
308
+ if (!props.dayOfWeek) {
309
+ throw new Error('Day of the week must be specified for weekly or bi-weekly audits.');
310
+ }
311
+ if (props.dayOfMonth) {
312
+ throw new Error('Day of the month must not be specified for weekly or bi-weekly audits.');
313
+ }
314
+ break;
315
+ case Frequency.MONTHLY:
316
+ if (!props.dayOfMonth) {
317
+ throw new Error('Day of the month must be specified for monthly audits.');
318
+ }
319
+ if (props.dayOfWeek) {
320
+ throw new Error('Day of the week must not be specified for monthly audits.');
321
+ }
322
+ break;
323
+ default:
324
+ throw new Error('Invalid frequency specified.');
325
+ }
326
+ if (props.scheduledAuditName !== undefined && !core_1.Token.isUnresolved(props.scheduledAuditName)) {
327
+ if (props.scheduledAuditName.length < 1 || props.scheduledAuditName.length > 128) {
328
+ throw new Error(`Scheduled audit name must be between 1 and 128 characters, got: ${props.scheduledAuditName.length}`);
268
329
  }
269
- if (props.dayOfWeek) {
270
- throw new Error('Day of the week must not be specified for monthly audits.');
330
+ if (!/^[a-zA-Z0-9:_-]+$/.test(props.scheduledAuditName)) {
331
+ throw new Error(`Scheduled audit name must be alphanumeric and may include colons, underscores, and hyphens, got: ${props.scheduledAuditName}`);
271
332
  }
272
- break;
273
- default:
274
- throw new Error('Invalid frequency specified.');
275
- }
276
- if (props.scheduledAuditName !== undefined && !core_1.Token.isUnresolved(props.scheduledAuditName)) {
277
- if (props.scheduledAuditName.length < 1 || props.scheduledAuditName.length > 128) {
278
- throw new Error(`Scheduled audit name must be between 1 and 128 characters, got: ${props.scheduledAuditName.length}`);
279
- }
280
- if (!/^[a-zA-Z0-9:_-]+$/.test(props.scheduledAuditName)) {
281
- throw new Error(`Scheduled audit name must be alphanumeric and may include colons, underscores, and hyphens, got: ${props.scheduledAuditName}`);
282
333
  }
334
+ const resource = new iot.CfnScheduledAudit(this, 'Resource', {
335
+ scheduledAuditName: props.scheduledAuditName,
336
+ targetCheckNames: props.auditChecks,
337
+ dayOfWeek: props.dayOfWeek,
338
+ dayOfMonth: props.dayOfMonth?.day,
339
+ frequency: props.frequency,
340
+ });
341
+ this.scheduledAuditName = resource.ref;
342
+ this.scheduledAuditArn = resource.attrScheduledAuditArn;
343
+ resource.node.addDependency(props.accountAuditConfiguration);
283
344
  }
284
- const resource = new iot.CfnScheduledAudit(this, 'Resource', {
285
- scheduledAuditName: props.scheduledAuditName,
286
- targetCheckNames: props.auditChecks,
287
- dayOfWeek: props.dayOfWeek,
288
- dayOfMonth: props.dayOfMonth?.day,
289
- frequency: props.frequency,
290
- });
291
- this.scheduledAuditName = resource.ref;
292
- this.scheduledAuditArn = resource.attrScheduledAuditArn;
293
- resource.node.addDependency(props.accountAuditConfiguration);
294
- }
295
- };
345
+ static {
346
+ __runInitializers(_classThis, _classExtraInitializers);
347
+ }
348
+ };
349
+ return ScheduledAudit = _classThis;
350
+ })();
296
351
  exports.ScheduledAudit = ScheduledAudit;
297
- _b = JSII_RTTI_SYMBOL_1;
298
- ScheduledAudit[_b] = { fqn: "@aws-cdk/aws-iot-alpha.ScheduledAudit", version: "2.219.0-alpha.0" };
299
- /** Uniquely identifies this class. */
300
- ScheduledAudit.PROPERTY_INJECTION_ID = '@aws-cdk.aws-iot-alpha.ScheduledAudit';
301
- exports.ScheduledAudit = ScheduledAudit = __decorate([
302
- prop_injectable_1.propertyInjectable
303
- ], ScheduledAudit);
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVkLWF1ZGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZWR1bGVkLWF1ZGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDJDQUFnRjtBQUVoRiwyQ0FBMkM7QUFFM0MsOEVBQThFO0FBQzlFLDBFQUEwRTtBQWtDMUU7Ozs7R0FJRztBQUNILElBQVksVUFvRlg7QUFwRkQsV0FBWSxVQUFVO0lBQ3BCOzs7OztPQUtHO0lBQ0gsdUhBQXlHLENBQUE7SUFFekc7Ozs7T0FJRztJQUNILDZFQUErRCxDQUFBO0lBRS9EOzs7Ozs7T0FNRztJQUNILG1GQUFxRSxDQUFBO0lBRXJFOztPQUVHO0lBQ0gsMkVBQTZELENBQUE7SUFFN0Q7Ozs7T0FJRztJQUNILHFGQUF1RSxDQUFBO0lBRXZFOzs7OztPQUtHO0lBQ0gsMkZBQTZFLENBQUE7SUFFN0U7O09BRUc7SUFDSCxpRkFBbUUsQ0FBQTtJQUVuRTs7T0FFRztJQUNILHVGQUF5RSxDQUFBO0lBRXpFOztPQUVHO0lBQ0gsNkhBQStHLENBQUE7SUFFL0c7O09BRUc7SUFDSCwrRkFBaUYsQ0FBQTtJQUVqRjs7T0FFRztJQUNILCtEQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gscUdBQXVGLENBQUE7SUFFdkY7O09BRUc7SUFDSCw2R0FBK0YsQ0FBQTtJQUUvRjs7T0FFRztJQUNILDJIQUE2RyxDQUFBO0FBQy9HLENBQUMsRUFwRlcsVUFBVSwwQkFBVixVQUFVLFFBb0ZyQjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxTQXdDWDtBQXhDRCxXQUFZLFNBQVM7SUFDbkI7O09BRUc7SUFDSCwyQkFBYyxDQUFBO0lBRWQ7O09BRUc7SUFDSCwyQkFBYyxDQUFBO0lBRWQ7O09BRUc7SUFDSCw0QkFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCw4QkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDZCQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsMkJBQWMsQ0FBQTtJQUVkOztPQUVHO0lBQ0gsNkJBQWdCLENBQUE7SUFFaEI7O09BRUc7SUFDSCx3Q0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBeENXLFNBQVMseUJBQVQsU0FBUyxRQXdDcEI7QUFFRDs7R0FFRztBQUNILE1BQWEsVUFBVTtJQU1yQjs7O09BR0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDcEM7SUFFRDs7O09BR0c7SUFDSCxZQUFvQyxHQUFXO1FBQVgsUUFBRyxHQUFILEdBQUcsQ0FBUTtLQUFJOztBQXhCckQsZ0NBeUJDOzs7QUF4QkM7O0dBRUc7QUFDb0IsbUJBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQXVCM0Q7O0dBRUc7QUFDSCxJQUFZLFNBb0JYO0FBcEJELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILDRCQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILDhCQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsbUNBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCxnQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBcEJXLFNBQVMseUJBQVQsU0FBUyxRQW9CcEI7QUFpREQ7O0dBRUc7QUFFSSxJQUFNLGNBQWMsR0FBcEIsTUFBTSxjQUFlLFNBQVEsZUFBUTtJQUkxQzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsaUJBQXlCO1FBQ3pGLE1BQU0sSUFBSSxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLGdCQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDckcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUN6SDtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjs7Ozs7Ozs7OztRQUN0RyxNQUFNLE1BQU8sU0FBUSxlQUFRO1lBQTdCOztnQkFDa0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO2dCQUM1Qyx1QkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7WUFDaEUsQ0FBQztTQUFBO1FBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDOUI7SUFjRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzsrQ0FoRFIsY0FBYzs7OztRQWlEdkIsbUNBQW1DO1FBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxRQUFRLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN4QixLQUFLLFNBQVMsQ0FBQyxLQUFLO2dCQUNsQixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO2dCQUM3RSxDQUFDO2dCQUNELElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7Z0JBQzlFLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN0QixLQUFLLFNBQVMsQ0FBQyxTQUFTO2dCQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7Z0JBQ3ZGLENBQUM7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0VBQXdFLENBQUMsQ0FBQztnQkFDNUYsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxTQUFTLENBQUMsT0FBTztnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO2dCQUM1RSxDQUFDO2dCQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7Z0JBQy9FLENBQUM7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEtBQUssU0FBUyxJQUFJLENBQUMsWUFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQzVGLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDakYsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDeEgsQ0FBQztZQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvR0FBb0csS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUNsSixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDM0Qsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUM1QyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsV0FBVztZQUNuQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRztZQUNqQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztRQUV4RCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztLQUM5RDs7QUEzR1Usd0NBQWM7OztBQUN6QixzQ0FBc0M7QUFDZixvQ0FBcUIsR0FBVyx1Q0FBdUMsQUFBbEQsQ0FBbUQ7eUJBRnBGLGNBQWM7SUFEMUIsb0NBQWtCO0dBQ04sY0FBYyxDQTRHMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZSwgU3RhY2ssIElSZXNvdXJjZSwgVG9rZW4sIEFybkZvcm1hdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBpb3QgZnJvbSAnYXdzLWNkay1saWIvYXdzLWlvdCc7XG5pbXBvcnQgeyBJQWNjb3VudEF1ZGl0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vYXVkaXQtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBBV1MgSW9UIFNjaGVkdWxlZCBBdWRpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTY2hlZHVsZWRBdWRpdCBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGVkIGF1ZGl0IG5hbWVcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGVkQXVkaXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHNjaGVkdWxlZCBhdWRpdFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZWRBdWRpdEFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIFNjaGVkdWxlZCBBdWRpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlZEF1ZGl0QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGVkIGF1ZGl0IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlZEF1ZGl0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzY2hlZHVsZWQgYXVkaXRcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlZEF1ZGl0QXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIEFXUyBJb1QgRGV2aWNlIERlZmVuZGVyIGF1ZGl0IGNoZWNrc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdC1kZXZpY2UtZGVmZW5kZXIvbGF0ZXN0L2Rldmd1aWRlL2RldmljZS1kZWZlbmRlci1hdWRpdC1jaGVja3MuaHRtbFxuICovXG5leHBvcnQgZW51bSBBdWRpdENoZWNrIHtcbiAgLyoqXG4gICAqIENoZWNrcyB0aGUgcGVybWlzc2l2ZW5lc3Mgb2YgYW4gYXV0aGVudGljYXRlZCBBbWF6b24gQ29nbml0byBpZGVudGl0eSBwb29sIHJvbGUuXG4gICAqXG4gICAqIEZvciB0aGlzIGNoZWNrLCBBV1MgSW9UIERldmljZSBEZWZlbmRlciBhdWRpdHMgYWxsIEFtYXpvbiBDb2duaXRvIGlkZW50aXR5IHBvb2xzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgdG8gY29ubmVjdCB0byB0aGUgQVdTIElvVCBtZXNzYWdlIGJyb2tlclxuICAgKiBkdXJpbmcgdGhlIDMxIGRheXMgYmVmb3JlIHRoZSBhdWRpdCBpcyBwZXJmb3JtZWQuXG4gICAqL1xuICBBVVRIRU5USUNBVEVEX0NPR05JVE9fUk9MRV9PVkVSTFlfUEVSTUlTU0lWRV9DSEVDSyA9ICdBVVRIRU5USUNBVEVEX0NPR05JVE9fUk9MRV9PVkVSTFlfUEVSTUlTU0lWRV9DSEVDSycsXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIENBIGNlcnRpZmljYXRlIGlzIGV4cGlyaW5nLlxuICAgKlxuICAgKiBUaGlzIGNoZWNrIGFwcGxpZXMgdG8gQ0EgY2VydGlmaWNhdGVzIGV4cGlyaW5nIHdpdGhpbiAzMCBkYXlzIG9yIHRoYXQgaGF2ZSBleHBpcmVkLlxuICAgKi9cbiAgQ0FfQ0VSVElGSUNBVEVfRVhQSVJJTkdfQ0hFQ0sgPSAnQ0FfQ0VSVElGSUNBVEVfRVhQSVJJTkdfQ0hFQ0snLFxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHF1YWxpdHkgb2YgdGhlIENBIGNlcnRpZmljYXRlIGtleS5cbiAgICpcbiAgICogVGhlIHF1YWxpdHkgY2hlY2tzIGlmIHRoZSBrZXkgaXMgaW4gYSB2YWxpZCBmb3JtYXQsIG5vdCBleHBpcmVkLCBhbmQgaWYgdGhlIGtleSBtZWV0cyBhIG1pbmltdW0gcmVxdWlyZWQgc2l6ZS5cbiAgICpcbiAgICogVGhpcyBjaGVjayBhcHBsaWVzIHRvIENBIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBBQ1RJVkUgb3IgUEVORElOR19UUkFOU0ZFUi5cbiAgICovXG4gIENBX0NFUlRJRklDQVRFX0tFWV9RVUFMSVRZX0NIRUNLID0gJ0NBX0NFUlRJRklDQVRFX0tFWV9RVUFMSVRZX0NIRUNLJyxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG11bHRpcGxlIGRldmljZXMgY29ubmVjdCB1c2luZyB0aGUgc2FtZSBjbGllbnQgSUQuXG4gICAqL1xuICBDT05GTElDVElOR19DTElFTlRfSURTX0NIRUNLID0gJ0NPTkZMSUNUSU5HX0NMSUVOVF9JRFNfQ0hFQ0snLFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBkZXZpY2UgY2VydGlmaWNhdGUgaXMgZXhwaXJpbmcuXG4gICAqXG4gICAqIFRoaXMgY2hlY2sgYXBwbGllcyB0byBkZXZpY2UgY2VydGlmaWNhdGVzIGV4cGlyaW5nIHdpdGhpbiAzMCBkYXlzIG9yIHRoYXQgaGF2ZSBleHBpcmVkLlxuICAgKi9cbiAgREVWSUNFX0NFUlRJRklDQVRFX0VYUElSSU5HX0NIRUNLID0gJ0RFVklDRV9DRVJUSUZJQ0FURV9FWFBJUklOR19DSEVDSycsXG5cbiAgLyoqXG4gICAqIENoZWNrcyB0aGUgcXVhbGl0eSBvZiB0aGUgZGV2aWNlIGNlcnRpZmljYXRlIGtleS5cbiAgICpcbiAgICogVGhlIHF1YWxpdHkgY2hlY2tzIGlmIHRoZSBrZXkgaXMgaW4gYSB2YWxpZCBmb3JtYXQsIG5vdCBleHBpcmVkLCBzaWduZWQgYnkgYSByZWdpc3RlcmVkIGNlcnRpZmljYXRlIGF1dGhvcml0eSxcbiAgICogYW5kIGlmIHRoZSBrZXkgbWVldHMgYSBtaW5pbXVtIHJlcXVpcmVkIHNpemUuXG4gICAqL1xuICBERVZJQ0VfQ0VSVElGSUNBVEVfS0VZX1FVQUxJVFlfQ0hFQ0sgPSAnREVWSUNFX0NFUlRJRklDQVRFX0tFWV9RVUFMSVRZX0NIRUNLJyxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG11bHRpcGxlIGNvbmN1cnJlbnQgY29ubmVjdGlvbnMgdXNlIHRoZSBzYW1lIFguNTA5IGNlcnRpZmljYXRlIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIEFXUyBJb1QuXG4gICAqL1xuICBERVZJQ0VfQ0VSVElGSUNBVEVfU0hBUkVEX0NIRUNLID0gJ0RFVklDRV9DRVJUSUZJQ0FURV9TSEFSRURfQ0hFQ0snLFxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHBlcm1pc3NpdmVuZXNzIG9mIGEgcG9saWN5IGF0dGFjaGVkIHRvIGFuIGF1dGhlbnRpY2F0ZWQgQW1hem9uIENvZ25pdG8gaWRlbnRpdHkgcG9vbCByb2xlLlxuICAgKi9cbiAgSU9UX1BPTElDWV9PVkVSTFlfUEVSTUlTU0lWRV9DSEVDSyA9ICdJT1RfUE9MSUNZX09WRVJMWV9QRVJNSVNTSVZFX0NIRUNLJyxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgcm9sZSBhbGlhcyBoYXMgYWNjZXNzIHRvIHNlcnZpY2VzIHRoYXQgaGF2ZW4ndCBiZWVuIHVzZWQgZm9yIHRoZSBBV1MgSW9UIGRldmljZSBpbiB0aGUgbGFzdCB5ZWFyLlxuICAgKi9cbiAgSU9UX1JPTEVfQUxJQVNfQUxMT1dTX0FDQ0VTU19UT19VTlVTRURfU0VSVklDRVNfQ0hFQ0sgPSAnSU9UX1JPTEVfQUxJQVNfQUxMT1dTX0FDQ0VTU19UT19VTlVTRURfU0VSVklDRVNfQ0hFQ0snLFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHRlbXBvcmFyeSBjcmVkZW50aWFscyBwcm92aWRlZCBieSBBV1MgSW9UIHJvbGUgYWxpYXNlcyBhcmUgb3Zlcmx5IHBlcm1pc3NpdmUuXG4gICAqL1xuICBJT1RfUk9MRV9BTElBU19PVkVSTFlfUEVSTUlTU0lWRV9DSEVDSyA9ICdJT1RfUk9MRV9BTElBU19PVkVSTFlfUEVSTUlTU0lWRV9DSEVDSycsXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBBV1MgSW9UIGxvZ3MgYXJlIGRpc2FibGVkLlxuICAgKi9cbiAgTE9HR0lOR19ESVNBQkxFRF9DSEVDSyA9ICdMT0dHSU5HX0RJU0FCTEVEX0NIRUNLJyxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgcmV2b2tlZCBDQSBjZXJ0aWZpY2F0ZSBpcyBzdGlsbCBhY3RpdmUuXG4gICAqL1xuICBSRVZPS0VEX0NBX0NFUlRJRklDQVRFX1NUSUxMX0FDVElWRV9DSEVDSyA9ICdSRVZPS0VEX0NBX0NFUlRJRklDQVRFX1NUSUxMX0FDVElWRV9DSEVDSycsXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHJldm9rZWQgZGV2aWNlIGNlcnRpZmljYXRlIGlzIHN0aWxsIGFjdGl2ZS5cbiAgICovXG4gIFJFVk9LRURfREVWSUNFX0NFUlRJRklDQVRFX1NUSUxMX0FDVElWRV9DSEVDSyA9ICdSRVZPS0VEX0RFVklDRV9DRVJUSUZJQ0FURV9TVElMTF9BQ1RJVkVfQ0hFQ0snLFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcG9saWN5IGF0dGFjaGVkIHRvIGFuIHVuYXV0aGVudGljYXRlZCBBbWF6b24gQ29nbml0byBpZGVudGl0eSBwb29sIHJvbGUgaXMgdG9vIHBlcm1pc3NpdmUuXG4gICAqL1xuICBVTkFVVEhFTlRJQ0FURURfQ09HTklUT19ST0xFX09WRVJMWV9QRVJNSVNTSVZFX0NIRUNLID0gJ1VOQVVUSEVOVElDQVRFRF9DT0dOSVRPX1JPTEVfT1ZFUkxZX1BFUk1JU1NJVkVfQ0hFQ0snLFxufVxuXG4vKipcbiAqIFRoZSBkYXkgb2YgdGhlIHdlZWsgb24gd2hpY2ggdGhlIHNjaGVkdWxlZCBhdWRpdCB0YWtlcyBwbGFjZS5cbiAqL1xuZXhwb3J0IGVudW0gRGF5T2ZXZWVrIHtcbiAgLyoqXG4gICAqIFN1bmRheVxuICAgKi9cbiAgU1VOREFZID0gJ1NVTicsXG5cbiAgLyoqXG4gICAqIE1vbmRheVxuICAgKi9cbiAgTU9OREFZID0gJ01PTicsXG5cbiAgLyoqXG4gICAqIFR1ZXNkYXlcbiAgICovXG4gIFRVRVNEQVkgPSAnVFVFJyxcblxuICAvKipcbiAgICogV2VkbmVzZGF5XG4gICAqL1xuICBXRURORVNEQVkgPSAnV0VEJyxcblxuICAvKipcbiAgICogVGh1cnNkYXlcbiAgICovXG4gIFRIVVJTREFZID0gJ1RIVScsXG5cbiAgLyoqXG4gICAqIEZyaWRheVxuICAgKi9cbiAgRlJJREFZID0gJ0ZSSScsXG5cbiAgLyoqXG4gICAqIFNhdHVyZGF5XG4gICAqL1xuICBTQVRVUkRBWSA9ICdTQVQnLFxuXG4gIC8qKlxuICAgKiBVTlNFVF9WQUxVRVxuICAgKi9cbiAgVU5TRVRfVkFMVUUgPSAnVU5TRVRfVkFMVUUnLFxufVxuXG4vKipcbiAqIFRoZSBkYXkgb2YgdGhlIG1vbnRoIG9uIHdoaWNoIHRoZSBzY2hlZHVsZWQgYXVkaXQgdGFrZXMgcGxhY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXlPZk1vbnRoIHtcbiAgLyoqXG4gICAqIFRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTEFTVF9EQVkgPSBuZXcgRGF5T2ZNb250aCgnTEFTVCcpO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZGF5IG9mIHRoZSBtb250aFxuICAgKiBAcGFyYW0gZGF5IHRoZSBkYXkgb2YgdGhlIG1vbnRoXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKGRheTogbnVtYmVyKTogRGF5T2ZNb250aCB7XG4gICAgaWYgKGRheSA8IDEgfHwgZGF5ID4gMzEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGF5IG9mIG1vbnRoIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAzMSwgZ290OiAke2RheX1gKTtcbiAgICB9XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGRheSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGF5IG9mIG1vbnRoIG11c3QgYmUgYW4gaW50ZWdlciwgZ290OiAke2RheX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXlPZk1vbnRoKFN0cmluZyhkYXkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGF5IFRoZSBkYXkgb2YgdGhlIG1vbnRoXG4gICAqL1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBkYXk6IHN0cmluZykge31cbn1cblxuLyoqXG4gKiBUaGUgZnJlcXVlbmN5IGF0IHdoaWNoIHRoZSBzY2hlZHVsZWQgYXVkaXQgdGFrZXMgcGxhY2UuXG4gKi9cbmV4cG9ydCBlbnVtIEZyZXF1ZW5jeSB7XG4gIC8qKlxuICAgKiBEYWlseVxuICAgKi9cbiAgREFJTFkgPSAnREFJTFknLFxuXG4gIC8qKlxuICAgKiBXZWVrbHlcbiAgICovXG4gIFdFRUtMWSA9ICdXRUVLTFknLFxuXG4gIC8qKlxuICAgKiBCaS13ZWVrbHlcbiAgICovXG4gIEJJX1dFRUtMWSA9ICdCSVdFRUtMWScsXG5cbiAgLyoqXG4gICAqIE1vbnRobHlcbiAgICovXG4gIE1PTlRITFkgPSAnTU9OVEhMWScsXG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgQVdTIElvVCBTY2hlZHVsZWQgQXVkaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZWRBdWRpdFByb3BzIHtcbiAgLyoqXG4gICAqIFdoaWNoIGNoZWNrcyBhcmUgcGVyZm9ybWVkIGR1cmluZyB0aGUgc2NoZWR1bGVkIGF1ZGl0LlxuICAgKlxuICAgKiBDaGVja3MgbXVzdCBiZSBlbmFibGVkIGZvciB5b3VyIGFjY291bnQuXG4gICAqL1xuICByZWFkb25seSBhdWRpdENoZWNrczogQXVkaXRDaGVja1tdO1xuXG4gIC8qKlxuICAgKiBBY2NvdW50IGF1ZGl0IGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIFRoZSBhdWRpdCBjaGVja3Mgc3BlY2lmaWVkIGluIGBhdWRpdENoZWNrc2AgbXVzdCBiZSBlbmFibGVkIGluIHRoaXMgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnRBdWRpdENvbmZpZ3VyYXRpb246IElBY2NvdW50QXVkaXRDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF5IG9mIHRoZSB3ZWVrIG9uIHdoaWNoIHRoZSBzY2hlZHVsZWQgYXVkaXQgaXMgcnVuIChpZiB0aGUgZnJlcXVlbmN5IGlzIFwiV0VFS0xZXCIgb3IgXCJCSVdFRUtMWVwiKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSByZXF1aXJlZCBpZiBmcmVxdWVuY3kgaXMgXCJXRUVLTFlcIiBvciBcIkJJV0VFS0xZXCIsIG5vdCBhbGxvd2VkIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF5T2ZXZWVrPzogRGF5T2ZXZWVrO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF5IG9mIHRoZSBtb250aCBvbiB3aGljaCB0aGUgc2NoZWR1bGVkIGF1ZGl0IGlzIHJ1biAoaWYgdGhlIGZyZXF1ZW5jeSBpcyBcIk1PTlRITFlcIikuXG4gICAqXG4gICAqIElmIGRheXMgMjktMzEgYXJlIHNwZWNpZmllZCwgYW5kIHRoZSBtb250aCBkb2VzIG5vdCBoYXZlIHRoYXQgbWFueSBkYXlzLCB0aGUgYXVkaXQgdGFrZXMgcGxhY2Ugb24gdGhlIFwiTEFTVFwiIGRheSBvZiB0aGUgbW9udGguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVxdWlyZWQgaWYgZnJlcXVlbmN5IGlzIFwiTU9OVEhMWVwiLCBub3QgYWxsb3dlZCBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGRheU9mTW9udGg/OiBEYXlPZk1vbnRoO1xuXG4gIC8qKlxuICAgKiBIb3cgb2Z0ZW4gdGhlIHNjaGVkdWxlZCBhdWRpdCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSBmcmVxdWVuY3k6IEZyZXF1ZW5jeTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHNjaGVkdWxlZCBhdWRpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZWRBdWRpdE5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lcyBBV1MgSW9UIFNjaGVkdWxlZCBBdWRpdFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVkQXVkaXQgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElTY2hlZHVsZWRBdWRpdCB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWlvdC1hbHBoYS5TY2hlZHVsZWRBdWRpdCc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBBV1MgSW9UIFNjaGVkdWxlZCBBdWRpdCBmcm9tIGl0cyBBUk4uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gc2NoZWR1bGVkQXVkaXRBcm4gVGhlIEFSTiBvZiB0aGUgc2NoZWR1bGVkIGF1ZGl0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TY2hlZHVsZWRBdWRpdEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBzY2hlZHVsZWRBdWRpdEFybjogc3RyaW5nKTogSVNjaGVkdWxlZEF1ZGl0IHtcbiAgICBjb25zdCBuYW1lID0gU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKHNjaGVkdWxlZEF1ZGl0QXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lO1xuICAgIGlmICghbmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzY2hlZHVsZWQgYXVkaXQgbmFtZSBmb3VuZCBpbiBBUk46ICcke3NjaGVkdWxlZEF1ZGl0QXJufSdgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mcm9tU2NoZWR1bGVkQXVkaXRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBzY2hlZHVsZWRBdWRpdEFybjogc2NoZWR1bGVkQXVkaXRBcm4sIHNjaGVkdWxlZEF1ZGl0TmFtZTogbmFtZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgQVdTIElvVCBTY2hlZHVsZWQgQXVkaXQgZnJvbSBpdHMgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSBhdHRycyBUaGUgc2NoZWR1bGVkIGF1ZGl0IGF0dHJpYnV0ZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNjaGVkdWxlZEF1ZGl0QXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogU2NoZWR1bGVkQXVkaXRBdHRyaWJ1dGVzKTogSVNjaGVkdWxlZEF1ZGl0IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElTY2hlZHVsZWRBdWRpdCB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2NoZWR1bGVkQXVkaXRBcm4gPSBhdHRycy5zY2hlZHVsZWRBdWRpdEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzY2hlZHVsZWRBdWRpdE5hbWUgPSBhdHRycy5zY2hlZHVsZWRBdWRpdE5hbWU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlZCBhdWRpdCBuYW1lXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzY2hlZHVsZWRBdWRpdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgc2NoZWR1bGVkIGF1ZGl0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzY2hlZHVsZWRBdWRpdEFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTY2hlZHVsZWRBdWRpdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy5hdWRpdENoZWNrcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIFxcJ2F1ZGl0Q2hlY2tzXFwnIG11c3QgYmUgc3BlY2lmaWVkLicpO1xuICAgIH1cblxuICAgIHN3aXRjaCAocHJvcHMuZnJlcXVlbmN5KSB7XG4gICAgICBjYXNlIEZyZXF1ZW5jeS5EQUlMWTpcbiAgICAgICAgaWYgKHByb3BzLmRheU9mV2Vlaykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGF5IG9mIHRoZSB3ZWVrIG11c3Qgbm90IGJlIHNwZWNpZmllZCBmb3IgZGFpbHkgYXVkaXRzLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wcy5kYXlPZk1vbnRoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXkgb2YgdGhlIG1vbnRoIG11c3Qgbm90IGJlIHNwZWNpZmllZCBmb3IgZGFpbHkgYXVkaXRzLicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGcmVxdWVuY3kuV0VFS0xZOlxuICAgICAgY2FzZSBGcmVxdWVuY3kuQklfV0VFS0xZOlxuICAgICAgICBpZiAoIXByb3BzLmRheU9mV2Vlaykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGF5IG9mIHRoZSB3ZWVrIG11c3QgYmUgc3BlY2lmaWVkIGZvciB3ZWVrbHkgb3IgYmktd2Vla2x5IGF1ZGl0cy4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHMuZGF5T2ZNb250aCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGF5IG9mIHRoZSBtb250aCBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgZm9yIHdlZWtseSBvciBiaS13ZWVrbHkgYXVkaXRzLicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGcmVxdWVuY3kuTU9OVEhMWTpcbiAgICAgICAgaWYgKCFwcm9wcy5kYXlPZk1vbnRoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXkgb2YgdGhlIG1vbnRoIG11c3QgYmUgc3BlY2lmaWVkIGZvciBtb250aGx5IGF1ZGl0cy4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHMuZGF5T2ZXZWVrKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXkgb2YgdGhlIHdlZWsgbXVzdCBub3QgYmUgc3BlY2lmaWVkIGZvciBtb250aGx5IGF1ZGl0cy4nKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmcmVxdWVuY3kgc3BlY2lmaWVkLicpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zY2hlZHVsZWRBdWRpdE5hbWUgIT09IHVuZGVmaW5lZCAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLnNjaGVkdWxlZEF1ZGl0TmFtZSkpIHtcbiAgICAgIGlmIChwcm9wcy5zY2hlZHVsZWRBdWRpdE5hbWUubGVuZ3RoIDwgMSB8fCBwcm9wcy5zY2hlZHVsZWRBdWRpdE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2NoZWR1bGVkIGF1ZGl0IG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEyOCBjaGFyYWN0ZXJzLCBnb3Q6ICR7cHJvcHMuc2NoZWR1bGVkQXVkaXROYW1lLmxlbmd0aH1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghL15bYS16QS1aMC05Ol8tXSskLy50ZXN0KHByb3BzLnNjaGVkdWxlZEF1ZGl0TmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTY2hlZHVsZWQgYXVkaXQgbmFtZSBtdXN0IGJlIGFscGhhbnVtZXJpYyBhbmQgbWF5IGluY2x1ZGUgY29sb25zLCB1bmRlcnNjb3JlcywgYW5kIGh5cGhlbnMsIGdvdDogJHtwcm9wcy5zY2hlZHVsZWRBdWRpdE5hbWV9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgaW90LkNmblNjaGVkdWxlZEF1ZGl0KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHNjaGVkdWxlZEF1ZGl0TmFtZTogcHJvcHMuc2NoZWR1bGVkQXVkaXROYW1lLFxuICAgICAgdGFyZ2V0Q2hlY2tOYW1lczogcHJvcHMuYXVkaXRDaGVja3MsXG4gICAgICBkYXlPZldlZWs6IHByb3BzLmRheU9mV2VlayxcbiAgICAgIGRheU9mTW9udGg6IHByb3BzLmRheU9mTW9udGg/LmRheSxcbiAgICAgIGZyZXF1ZW5jeTogcHJvcHMuZnJlcXVlbmN5LFxuICAgIH0pO1xuXG4gICAgdGhpcy5zY2hlZHVsZWRBdWRpdE5hbWUgPSByZXNvdXJjZS5yZWY7XG4gICAgdGhpcy5zY2hlZHVsZWRBdWRpdEFybiA9IHJlc291cmNlLmF0dHJTY2hlZHVsZWRBdWRpdEFybjtcblxuICAgIHJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5hY2NvdW50QXVkaXRDb25maWd1cmF0aW9uKTtcbiAgfVxufVxuXG4iXX0=
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVkLWF1ZGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZWR1bGVkLWF1ZGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUFnRjtBQUVoRiwyQ0FBMkM7QUFFM0MsOEVBQThFO0FBQzlFLDBFQUEwRTtBQWtDMUU7Ozs7R0FJRztBQUNILElBQVksVUFvRlg7QUFwRkQsV0FBWSxVQUFVO0lBQ3BCOzs7OztPQUtHO0lBQ0gsdUhBQXlHLENBQUE7SUFFekc7Ozs7T0FJRztJQUNILDZFQUErRCxDQUFBO0lBRS9EOzs7Ozs7T0FNRztJQUNILG1GQUFxRSxDQUFBO0lBRXJFOztPQUVHO0lBQ0gsMkVBQTZELENBQUE7SUFFN0Q7Ozs7T0FJRztJQUNILHFGQUF1RSxDQUFBO0lBRXZFOzs7OztPQUtHO0lBQ0gsMkZBQTZFLENBQUE7SUFFN0U7O09BRUc7SUFDSCxpRkFBbUUsQ0FBQTtJQUVuRTs7T0FFRztJQUNILHVGQUF5RSxDQUFBO0lBRXpFOztPQUVHO0lBQ0gsNkhBQStHLENBQUE7SUFFL0c7O09BRUc7SUFDSCwrRkFBaUYsQ0FBQTtJQUVqRjs7T0FFRztJQUNILCtEQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gscUdBQXVGLENBQUE7SUFFdkY7O09BRUc7SUFDSCw2R0FBK0YsQ0FBQTtJQUUvRjs7T0FFRztJQUNILDJIQUE2RyxDQUFBO0FBQy9HLENBQUMsRUFwRlcsVUFBVSwwQkFBVixVQUFVLFFBb0ZyQjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxTQXdDWDtBQXhDRCxXQUFZLFNBQVM7SUFDbkI7O09BRUc7SUFDSCwyQkFBYyxDQUFBO0lBRWQ7O09BRUc7SUFDSCwyQkFBYyxDQUFBO0lBRWQ7O09BRUc7SUFDSCw0QkFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCw4QkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDZCQUFnQixDQUFBO0lBRWhCOztP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Q0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzlEOztZQTNHVSx1REFBYzs7Ozs7QUFBZCx3Q0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlLCBTdGFjaywgSVJlc291cmNlLCBUb2tlbiwgQXJuRm9ybWF0IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGlvdCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW90JztcbmltcG9ydCB7IElBY2NvdW50QXVkaXRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9hdWRpdC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIEFXUyBJb1QgU2NoZWR1bGVkIEF1ZGl0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNjaGVkdWxlZEF1ZGl0IGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZWQgYXVkaXQgbmFtZVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZWRBdWRpdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgc2NoZWR1bGVkIGF1ZGl0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlZEF1ZGl0QXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgU2NoZWR1bGVkIEF1ZGl0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVkQXVkaXRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZWQgYXVkaXQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGVkQXVkaXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHNjaGVkdWxlZCBhdWRpdFxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGVkQXVkaXRBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgQVdTIElvVCBEZXZpY2UgRGVmZW5kZXIgYXVkaXQgY2hlY2tzXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW90LWRldmljZS1kZWZlbmRlci9sYXRlc3QvZGV2Z3VpZGUvZGV2aWNlLWRlZmVuZGVyLWF1ZGl0LWNoZWNrcy5odG1sXG4gKi9cbmV4cG9ydCBlbnVtIEF1ZGl0Q2hlY2sge1xuICAvKipcbiAgICogQ2hlY2tzIHRoZSBwZXJtaXNzaXZlbmVzcyBvZiBhbiBhdXRoZW50aWNhdGVkIEFtYXpvbiBDb2duaXRvIGlkZW50aXR5IHBvb2wgcm9sZS5cbiAgICpcbiAgICogRm9yIHRoaXMgY2hlY2ssIEFXUyBJb1QgRGV2aWNlIERlZmVuZGVyIGF1ZGl0cyBhbGwgQW1hem9uIENvZ25pdG8gaWRlbnRpdHkgcG9vbHMgdGhhdCBoYXZlIGJlZW4gdXNlZCB0byBjb25uZWN0IHRvIHRoZSBBV1MgSW9UIG1lc3NhZ2UgYnJva2VyXG4gICAqIGR1cmluZyB0aGUgMzEgZGF5cyBiZWZvcmUgdGhlIGF1ZGl0IGlzIHBlcmZvcm1lZC5cbiAgICovXG4gIEFVVEhFTlRJQ0FURURfQ09HTklUT19ST0xFX09WRVJMWV9QRVJNSVNTSVZFX0NIRUNLID0gJ0FVVEhFTlRJQ0FURURfQ09HTklUT19ST0xFX09WRVJMWV9QRVJNSVNTSVZFX0NIRUNLJyxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgQ0EgY2VydGlmaWNhdGUgaXMgZXhwaXJpbmcuXG4gICAqXG4gICAqIFRoaXMgY2hlY2sgYXBwbGllcyB0byBDQSBjZXJ0aWZpY2F0ZXMgZXhwaXJpbmcgd2l0aGluIDMwIGRheXMgb3IgdGhhdCBoYXZlIGV4cGlyZWQuXG4gICAqL1xuICBDQV9DRVJUSUZJQ0FURV9FWFBJUklOR19DSEVDSyA9ICdDQV9DRVJUSUZJQ0FURV9FWFBJUklOR19DSEVDSycsXG5cbiAgLyoqXG4gICAqIENoZWNrcyB0aGUgcXVhbGl0eSBvZiB0aGUgQ0EgY2VydGlmaWNhdGUga2V5LlxuICAgKlxuICAgKiBUaGUgcXVhbGl0eSBjaGVja3MgaWYgdGhlIGtleSBpcyBpbiBhIHZhbGlkIGZvcm1hdCwgbm90IGV4cGlyZWQsIGFuZCBpZiB0aGUga2V5IG1lZXRzIGEgbWluaW11bSByZXF1aXJlZCBzaXplLlxuICAgKlxuICAgKiBUaGlzIGNoZWNrIGFwcGxpZXMgdG8gQ0EgY2VydGlmaWNhdGVzIHRoYXQgYXJlIEFDVElWRSBvciBQRU5ESU5HX1RSQU5TRkVSLlxuICAgKi9cbiAgQ0FfQ0VSVElGSUNBVEVfS0VZX1FVQUxJVFlfQ0hFQ0sgPSAnQ0FfQ0VSVElGSUNBVEVfS0VZX1FVQUxJVFlfQ0hFQ0snLFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgbXVsdGlwbGUgZGV2aWNlcyBjb25uZWN0IHVzaW5nIHRoZSBzYW1lIGNsaWVudCBJRC5cbiAgICovXG4gIENPTkZMSUNUSU5HX0NMSUVOVF9JRFNfQ0hFQ0sgPSAnQ09ORkxJQ1RJTkdfQ0xJRU5UX0lEU19DSEVDSycsXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGRldmljZSBjZXJ0aWZpY2F0ZSBpcyBleHBpcmluZy5cbiAgICpcbiAgICogVGhpcyBjaGVjayBhcHBsaWVzIHRvIGRldmljZSBjZXJ0aWZpY2F0ZXMgZXhwaXJpbmcgd2l0aGluIDMwIGRheXMgb3IgdGhhdCBoYXZlIGV4cGlyZWQuXG4gICAqL1xuICBERVZJQ0VfQ0VSVElGSUNBVEVfRVhQSVJJTkdfQ0hFQ0sgPSAnREVWSUNFX0NFUlRJRklDQVRFX0VYUElSSU5HX0NIRUNLJyxcblxuICAvKipcbiAgICogQ2hlY2tzIHRoZSBxdWFsaXR5IG9mIHRoZSBkZXZpY2UgY2VydGlmaWNhdGUga2V5LlxuICAgKlxuICAgKiBUaGUgcXVhbGl0eSBjaGVja3MgaWYgdGhlIGtleSBpcyBpbiBhIHZhbGlkIGZvcm1hdCwgbm90IGV4cGlyZWQsIHNpZ25lZCBieSBhIHJlZ2lzdGVyZWQgY2VydGlmaWNhdGUgYXV0aG9yaXR5LFxuICAgKiBhbmQgaWYgdGhlIGtleSBtZWV0cyBhIG1pbmltdW0gcmVxdWlyZWQgc2l6ZS5cbiAgICovXG4gIERFVklDRV9DRVJUSUZJQ0FURV9LRVlfUVVBTElUWV9DSEVDSyA9ICdERVZJQ0VfQ0VSVElGSUNBVEVfS0VZX1FVQUxJVFlfQ0hFQ0snLFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgbXVsdGlwbGUgY29uY3VycmVudCBjb25uZWN0aW9ucyB1c2UgdGhlIHNhbWUgWC41MDkgY2VydGlmaWNhdGUgdG8gYXV0aGVudGljYXRlIHdpdGggQVdTIElvVC5cbiAgICovXG4gIERFVklDRV9DRVJUSUZJQ0FURV9TSEFSRURfQ0hFQ0sgPSAnREVWSUNFX0NFUlRJRklDQVRFX1NIQVJFRF9DSEVDSycsXG5cbiAgLyoqXG4gICAqIENoZWNrcyB0aGUgcGVybWlzc2l2ZW5lc3Mgb2YgYSBwb2xpY3kgYXR0YWNoZWQgdG8gYW4gYXV0aGVudGljYXRlZCBBbWF6b24gQ29nbml0byBpZGVudGl0eSBwb29sIHJvbGUuXG4gICAqL1xuICBJT1RfUE9MSUNZX09WRVJMWV9QRVJNSVNTSVZFX0NIRUNLID0gJ0lPVF9QT0xJQ1lfT1ZFUkxZX1BFUk1JU1NJVkVfQ0hFQ0snLFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSByb2xlIGFsaWFzIGhhcyBhY2Nlc3MgdG8gc2VydmljZXMgdGhhdCBoYXZlbid0IGJlZW4gdXNlZCBmb3IgdGhlIEFXUyBJb1QgZGV2aWNlIGluIHRoZSBsYXN0IHllYXIuXG4gICAqL1xuICBJT1RfUk9MRV9BTElBU19BTExPV1NfQUNDRVNTX1RPX1VOVVNFRF9TRVJWSUNFU19DSEVDSyA9ICdJT1RfUk9MRV9BTElBU19BTExPV1NfQUNDRVNTX1RPX1VOVVNFRF9TRVJWSUNFU19DSEVDSycsXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgdGVtcG9yYXJ5IGNyZWRlbnRpYWxzIHByb3ZpZGVkIGJ5IEFXUyBJb1Qgcm9sZSBhbGlhc2VzIGFyZSBvdmVybHkgcGVybWlzc2l2ZS5cbiAgICovXG4gIElPVF9ST0xFX0FMSUFTX09WRVJMWV9QRVJNSVNTSVZFX0NIRUNLID0gJ0lPVF9ST0xFX0FMSUFTX09WRVJMWV9QRVJNSVNTSVZFX0NIRUNLJyxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIEFXUyBJb1QgbG9ncyBhcmUgZGlzYWJsZWQuXG4gICAqL1xuICBMT0dHSU5HX0RJU0FCTEVEX0NIRUNLID0gJ0xPR0dJTkdfRElTQUJMRURfQ0hFQ0snLFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSByZXZva2VkIENBIGNlcnRpZmljYXRlIGlzIHN0aWxsIGFjdGl2ZS5cbiAgICovXG4gIFJFVk9LRURfQ0FfQ0VSVElGSUNBVEVfU1RJTExfQUNUSVZFX0NIRUNLID0gJ1JFVk9LRURfQ0FfQ0VSVElGSUNBVEVfU1RJTExfQUNUSVZFX0NIRUNLJyxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgcmV2b2tlZCBkZXZpY2UgY2VydGlmaWNhdGUgaXMgc3RpbGwgYWN0aXZlLlxuICAgKi9cbiAgUkVWT0tFRF9ERVZJQ0VfQ0VSVElGSUNBVEVfU1RJTExfQUNUSVZFX0NIRUNLID0gJ1JFVk9LRURfREVWSUNFX0NFUlRJRklDQVRFX1NUSUxMX0FDVElWRV9DSEVDSycsXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBwb2xpY3kgYXR0YWNoZWQgdG8gYW4gdW5hdXRoZW50aWNhdGVkIEFtYXpvbiBDb2duaXRvIGlkZW50aXR5IHBvb2wgcm9sZSBpcyB0b28gcGVybWlzc2l2ZS5cbiAgICovXG4gIFVOQVVUSEVOVElDQVRFRF9DT0dOSVRPX1JPTEVfT1ZFUkxZX1BFUk1JU1NJVkVfQ0hFQ0sgPSAnVU5BVVRIRU5USUNBVEVEX0NPR05JVE9fUk9MRV9PVkVSTFlfUEVSTUlTU0lWRV9DSEVDSycsXG59XG5cbi8qKlxuICogVGhlIGRheSBvZiB0aGUgd2VlayBvbiB3aGljaCB0aGUgc2NoZWR1bGVkIGF1ZGl0IHRha2VzIHBsYWNlLlxuICovXG5leHBvcnQgZW51bSBEYXlPZldlZWsge1xuICAvKipcbiAgICogU3VuZGF5XG4gICAqL1xuICBTVU5EQVkgPSAnU1VOJyxcblxuICAvKipcbiAgICogTW9uZGF5XG4gICAqL1xuICBNT05EQVkgPSAnTU9OJyxcblxuICAvKipcbiAgICogVHVlc2RheVxuICAgKi9cbiAgVFVFU0RBWSA9ICdUVUUnLFxuXG4gIC8qKlxuICAgKiBXZWRuZXNkYXlcbiAgICovXG4gIFdFRE5FU0RBWSA9ICdXRUQnLFxuXG4gIC8qKlxuICAgKiBUaHVyc2RheVxuICAgKi9cbiAgVEhVUlNEQVkgPSAnVEhVJyxcblxuICAvKipcbiAgICogRnJpZGF5XG4gICAqL1xuICBGUklEQVkgPSAnRlJJJyxcblxuICAvKipcbiAgICogU2F0dXJkYXlcbiAgICovXG4gIFNBVFVSREFZID0gJ1NBVCcsXG5cbiAgLyoqXG4gICAqIFVOU0VUX1ZBTFVFXG4gICAqL1xuICBVTlNFVF9WQUxVRSA9ICdVTlNFVF9WQUxVRScsXG59XG5cbi8qKlxuICogVGhlIGRheSBvZiB0aGUgbW9udGggb24gd2hpY2ggdGhlIHNjaGVkdWxlZCBhdWRpdCB0YWtlcyBwbGFjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERheU9mTW9udGgge1xuICAvKipcbiAgICogVGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMQVNUX0RBWSA9IG5ldyBEYXlPZk1vbnRoKCdMQVNUJyk7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBkYXkgb2YgdGhlIG1vbnRoXG4gICAqIEBwYXJhbSBkYXkgdGhlIGRheSBvZiB0aGUgbW9udGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YoZGF5OiBudW1iZXIpOiBEYXlPZk1vbnRoIHtcbiAgICBpZiAoZGF5IDwgMSB8fCBkYXkgPiAzMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEYXkgb2YgbW9udGggbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDMxLCBnb3Q6ICR7ZGF5fWApO1xuICAgIH1cbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoZGF5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEYXkgb2YgbW9udGggbXVzdCBiZSBhbiBpbnRlZ2VyLCBnb3Q6ICR7ZGF5fWApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERheU9mTW9udGgoU3RyaW5nKGRheSkpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBkYXkgVGhlIGRheSBvZiB0aGUgbW9udGhcbiAgICovXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGRheTogc3RyaW5nKSB7fVxufVxuXG4vKipcbiAqIFRoZSBmcmVxdWVuY3kgYXQgd2hpY2ggdGhlIHNjaGVkdWxlZCBhdWRpdCB0YWtlcyBwbGFjZS5cbiAqL1xuZXhwb3J0IGVudW0gRnJlcXVlbmN5IHtcbiAgLyoqXG4gICAqIERhaWx5XG4gICAqL1xuICBEQUlMWSA9ICdEQUlMWScsXG5cbiAgLyoqXG4gICAqIFdlZWtseVxuICAgKi9cbiAgV0VFS0xZID0gJ1dFRUtMWScsXG5cbiAgLyoqXG4gICAqIEJpLXdlZWtseVxuICAgKi9cbiAgQklfV0VFS0xZID0gJ0JJV0VFS0xZJyxcblxuICAvKipcbiAgICogTW9udGhseVxuICAgKi9cbiAgTU9OVEhMWSA9ICdNT05USExZJyxcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBBV1MgSW9UIFNjaGVkdWxlZCBBdWRpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlZEF1ZGl0UHJvcHMge1xuICAvKipcbiAgICogV2hpY2ggY2hlY2tzIGFyZSBwZXJmb3JtZWQgZHVyaW5nIHRoZSBzY2hlZHVsZWQgYXVkaXQuXG4gICAqXG4gICAqIENoZWNrcyBtdXN0IGJlIGVuYWJsZWQgZm9yIHlvdXIgYWNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0Q2hlY2tzOiBBdWRpdENoZWNrW107XG5cbiAgLyoqXG4gICAqIEFjY291bnQgYXVkaXQgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogVGhlIGF1ZGl0IGNoZWNrcyBzcGVjaWZpZWQgaW4gYGF1ZGl0Q2hlY2tzYCBtdXN0IGJlIGVuYWJsZWQgaW4gdGhpcyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudEF1ZGl0Q29uZmlndXJhdGlvbjogSUFjY291bnRBdWRpdENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkYXkgb2YgdGhlIHdlZWsgb24gd2hpY2ggdGhlIHNjaGVkdWxlZCBhdWRpdCBpcyBydW4gKGlmIHRoZSBmcmVxdWVuY3kgaXMgXCJXRUVLTFlcIiBvciBcIkJJV0VFS0xZXCIpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlcXVpcmVkIGlmIGZyZXF1ZW5jeSBpcyBcIldFRUtMWVwiIG9yIFwiQklXRUVLTFlcIiwgbm90IGFsbG93ZWQgb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBkYXlPZldlZWs/OiBEYXlPZldlZWs7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXkgb2YgdGhlIG1vbnRoIG9uIHdoaWNoIHRoZSBzY2hlZHVsZWQgYXVkaXQgaXMgcnVuIChpZiB0aGUgZnJlcXVlbmN5IGlzIFwiTU9OVEhMWVwiKS5cbiAgICpcbiAgICogSWYgZGF5cyAyOS0zMSBhcmUgc3BlY2lmaWVkLCBhbmQgdGhlIG1vbnRoIGRvZXMgbm90IGhhdmUgdGhhdCBtYW55IGRheXMsIHRoZSBhdWRpdCB0YWtlcyBwbGFjZSBvbiB0aGUgXCJMQVNUXCIgZGF5IG9mIHRoZSBtb250aC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSByZXF1aXJlZCBpZiBmcmVxdWVuY3kgaXMgXCJNT05USExZXCIsIG5vdCBhbGxvd2VkIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF5T2ZNb250aD86IERheU9mTW9udGg7XG5cbiAgLyoqXG4gICAqIEhvdyBvZnRlbiB0aGUgc2NoZWR1bGVkIGF1ZGl0IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IGZyZXF1ZW5jeTogRnJlcXVlbmN5O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2NoZWR1bGVkIGF1ZGl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVkIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlZEF1ZGl0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZpbmVzIEFXUyBJb1QgU2NoZWR1bGVkIEF1ZGl0XG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBTY2hlZHVsZWRBdWRpdCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVNjaGVkdWxlZEF1ZGl0IHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW90LWFscGhhLlNjaGVkdWxlZEF1ZGl0JztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEFXUyBJb1QgU2NoZWR1bGVkIEF1ZGl0IGZyb20gaXRzIEFSTi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSBzY2hlZHVsZWRBdWRpdEFybiBUaGUgQVJOIG9mIHRoZSBzY2hlZHVsZWQgYXVkaXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNjaGVkdWxlZEF1ZGl0QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHNjaGVkdWxlZEF1ZGl0QXJuOiBzdHJpbmcpOiBJU2NoZWR1bGVkQXVkaXQge1xuICAgIGNvbnN0IG5hbWUgPSBTdGFjay5vZihzY29wZSkuc3BsaXRBcm4oc2NoZWR1bGVkQXVkaXRBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWU7XG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHNjaGVkdWxlZCBhdWRpdCBuYW1lIGZvdW5kIGluIEFSTjogJyR7c2NoZWR1bGVkQXVkaXRBcm59J2ApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZyb21TY2hlZHVsZWRBdWRpdEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHNjaGVkdWxlZEF1ZGl0QXJuOiBzY2hlZHVsZWRBdWRpdEFybiwgc2NoZWR1bGVkQXVkaXROYW1lOiBuYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBBV1MgSW9UIFNjaGVkdWxlZCBBdWRpdCBmcm9tIGl0cyBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBzY2hlZHVsZWQgYXVkaXQgYXR0cmlidXRlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2NoZWR1bGVkQXVkaXRBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBTY2hlZHVsZWRBdWRpdEF0dHJpYnV0ZXMpOiBJU2NoZWR1bGVkQXVkaXQge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVNjaGVkdWxlZEF1ZGl0IHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzY2hlZHVsZWRBdWRpdEFybiA9IGF0dHJzLnNjaGVkdWxlZEF1ZGl0QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNjaGVkdWxlZEF1ZGl0TmFtZSA9IGF0dHJzLnNjaGVkdWxlZEF1ZGl0TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGVkIGF1ZGl0IG5hbWVcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNjaGVkdWxlZEF1ZGl0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzY2hlZHVsZWQgYXVkaXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNjaGVkdWxlZEF1ZGl0QXJuOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNjaGVkdWxlZEF1ZGl0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgaWYgKHByb3BzLmF1ZGl0Q2hlY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdCBsZWFzdCBvbmUgXFwnYXVkaXRDaGVja3NcXCcgbXVzdCBiZSBzcGVjaWZpZWQuJyk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcm9wcy5mcmVxdWVuY3kpIHtcbiAgICAgIGNhc2UgRnJlcXVlbmN5LkRBSUxZOlxuICAgICAgICBpZiAocHJvcHMuZGF5T2ZXZWVrKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXkgb2YgdGhlIHdlZWsgbXVzdCBub3QgYmUgc3BlY2lmaWVkIGZvciBkYWlseSBhdWRpdHMuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzLmRheU9mTW9udGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RheSBvZiB0aGUgbW9udGggbXVzdCBub3QgYmUgc3BlY2lmaWVkIGZvciBkYWlseSBhdWRpdHMuJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEZyZXF1ZW5jeS5XRUVLTFk6XG4gICAgICBjYXNlIEZyZXF1ZW5jeS5CSV9XRUVLTFk6XG4gICAgICAgIGlmICghcHJvcHMuZGF5T2ZXZWVrKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXkgb2YgdGhlIHdlZWsgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIHdlZWtseSBvciBiaS13ZWVrbHkgYXVkaXRzLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wcy5kYXlPZk1vbnRoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXkgb2YgdGhlIG1vbnRoIG11c3Qgbm90IGJlIHNwZWNpZmllZCBmb3Igd2Vla2x5IG9yIGJpLXdlZWtseSBhdWRpdHMuJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEZyZXF1ZW5jeS5NT05USExZOlxuICAgICAgICBpZiAoIXByb3BzLmRheU9mTW9udGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RheSBvZiB0aGUgbW9udGggbXVzdCBiZSBzcGVjaWZpZWQgZm9yIG1vbnRobHkgYXVkaXRzLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wcy5kYXlPZldlZWspIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RheSBvZiB0aGUgd2VlayBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgZm9yIG1vbnRobHkgYXVkaXRzLicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZyZXF1ZW5jeSBzcGVjaWZpZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNjaGVkdWxlZEF1ZGl0TmFtZSAhPT0gdW5kZWZpbmVkICYmICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuc2NoZWR1bGVkQXVkaXROYW1lKSkge1xuICAgICAgaWYgKHByb3BzLnNjaGVkdWxlZEF1ZGl0TmFtZS5sZW5ndGggPCAxIHx8IHByb3BzLnNjaGVkdWxlZEF1ZGl0TmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTY2hlZHVsZWQgYXVkaXQgbmFtZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTI4IGNoYXJhY3RlcnMsIGdvdDogJHtwcm9wcy5zY2hlZHVsZWRBdWRpdE5hbWUubGVuZ3RofWApO1xuICAgICAgfVxuICAgICAgaWYgKCEvXlthLXpBLVowLTk6Xy1dKyQvLnRlc3QocHJvcHMuc2NoZWR1bGVkQXVkaXROYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjaGVkdWxlZCBhdWRpdCBuYW1lIG11c3QgYmUgYWxwaGFudW1lcmljIGFuZCBtYXkgaW5jbHVkZSBjb2xvbnMsIHVuZGVyc2NvcmVzLCBhbmQgaHlwaGVucywgZ290OiAke3Byb3BzLnNjaGVkdWxlZEF1ZGl0TmFtZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBpb3QuQ2ZuU2NoZWR1bGVkQXVkaXQodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgc2NoZWR1bGVkQXVkaXROYW1lOiBwcm9wcy5zY2hlZHVsZWRBdWRpdE5hbWUsXG4gICAgICB0YXJnZXRDaGVja05hbWVzOiBwcm9wcy5hdWRpdENoZWNrcyxcbiAgICAgIGRheU9mV2VlazogcHJvcHMuZGF5T2ZXZWVrLFxuICAgICAgZGF5T2ZNb250aDogcHJvcHMuZGF5T2ZNb250aD8uZGF5LFxuICAgICAgZnJlcXVlbmN5OiBwcm9wcy5mcmVxdWVuY3ksXG4gICAgfSk7XG5cbiAgICB0aGlzLnNjaGVkdWxlZEF1ZGl0TmFtZSA9IHJlc291cmNlLnJlZjtcbiAgICB0aGlzLnNjaGVkdWxlZEF1ZGl0QXJuID0gcmVzb3VyY2UuYXR0clNjaGVkdWxlZEF1ZGl0QXJuO1xuXG4gICAgcmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLmFjY291bnRBdWRpdENvbmZpZ3VyYXRpb24pO1xuICB9XG59XG5cbiJdfQ==