@sumaris-net/ngx-components 2.5.0-beta1 → 2.5.0-beta3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/src/app/core/account/account.page.mjs +11 -7
- package/esm2020/src/app/core/form/properties/properties.table.mjs +131 -62
- package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +3 -3
- package/fesm2015/sumaris-net.ngx-components.mjs +136 -72
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +129 -61
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/account/account.page.d.ts +5 -1
- package/src/app/core/form/properties/properties.table.d.ts +21 -10
- package/src/assets/i18n/en-US.json +5 -0
- package/src/assets/i18n/en.json +5 -0
- package/src/assets/i18n/fr.json +5 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, Inject, ViewChild } from '@angular/core';
|
|
2
|
+
import { combineLatest } from 'rxjs';
|
|
2
3
|
import { Account } from '../services/model/account.model';
|
|
3
4
|
import { Validators } from '@angular/forms';
|
|
4
5
|
import { AppForm } from '../form/form.class';
|
|
@@ -109,11 +110,14 @@ export class AccountPage extends AppForm {
|
|
|
109
110
|
this.email.confirmed = account && account.email && (account.statusId !== StatusIds.TEMPORARY);
|
|
110
111
|
this.email.notConfirmed = account && account.email && (!account.statusId || account.statusId === StatusIds.TEMPORARY);
|
|
111
112
|
this.networkSubscription?.unsubscribe();
|
|
112
|
-
this.networkSubscription =
|
|
113
|
-
.
|
|
114
|
-
.
|
|
113
|
+
this.networkSubscription = combineLatest([
|
|
114
|
+
this.configService.config,
|
|
115
|
+
this.network.onNetworkStatusChanges
|
|
116
|
+
.pipe(map(connectionType => connectionType !== 'none'))
|
|
117
|
+
]).subscribe(([config, online]) => {
|
|
115
118
|
if (online) {
|
|
116
|
-
|
|
119
|
+
const accountReadOnly = config.getPropertyAsBoolean(CORE_CONFIG_OPTIONS.ACCOUNT_READONLY);
|
|
120
|
+
this.enable({ accountReadOnly });
|
|
117
121
|
this.markAsPristine();
|
|
118
122
|
this.startListenChanges();
|
|
119
123
|
}
|
|
@@ -230,14 +234,14 @@ export class AccountPage extends AppForm {
|
|
|
230
234
|
this.enable();
|
|
231
235
|
}
|
|
232
236
|
}
|
|
233
|
-
enable() {
|
|
237
|
+
enable(opts) {
|
|
234
238
|
super.enable();
|
|
235
239
|
// Some fields are always disable
|
|
236
240
|
this.form.controls.email.disable();
|
|
237
241
|
this.form.controls.mainProfile.disable();
|
|
238
242
|
this.form.controls.pubkey.disable();
|
|
239
243
|
// Disable account fields if readonly by configuration
|
|
240
|
-
if (
|
|
244
|
+
if (opts?.accountReadOnly) {
|
|
241
245
|
this.form.controls.lastName.disable();
|
|
242
246
|
this.form.controls.firstName.disable();
|
|
243
247
|
}
|
|
@@ -288,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
288
292
|
type: ViewChild,
|
|
289
293
|
args: ['propertiesTable', { static: true }]
|
|
290
294
|
}] } });
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2FjY291bnQvYWNjb3VudC5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2FjY291bnQvYWNjb3VudC5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUErQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHcEksT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hELE9BQU8sRUFBdUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFdBQVcsRUFBOEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUkxRixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFxQixjQUFjLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWhELE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBZ0I7SUFpQy9DLFlBQ0UsUUFBa0IsRUFDWCxXQUErQixFQUMvQixjQUE4QixFQUM5QixPQUF1QixFQUNwQixNQUFjLEVBQ2QsZ0JBQXlDO0lBQ25ELG9FQUFv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LE1BQU07UUFDVixNQUFNLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFhO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXhCLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZTtJQUM1RSxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7O3lHQWhUVSxXQUFXLG1RQTJDWixXQUFXOzZGQTNDVixXQUFXLHNUQzdCeEIsNGhUQXlOQTs0RkQ1TGEsV0FBVztrQkFOdkIsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs7MEJBNkM1QyxNQUFNOzJCQUFDLFdBQVc7NENBMUNrQixRQUFRO3NCQUE5QyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ1MsZUFBZTtzQkFBNUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWNjb3VudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge0FjY291bnR9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2FjY291bnQubW9kZWwnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QWNjb3VudFZhbGlkYXRvclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL3ZhbGlkYXRvci9hY2NvdW50LnZhbGlkYXRvcic7XG5pbXBvcnQge0FwcEZvcm19IGZyb20gJy4uL2Zvcm0vZm9ybS5jbGFzcyc7XG5pbXBvcnQge0FwcEZvcm1VdGlsc30gZnJvbSAnLi4vZm9ybS9mb3JtLnV0aWxzJztcbmltcG9ydCB7Rm9ybUZpZWxkRGVmaW5pdGlvbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtMQVRfTE9OR19QQVRURVJOU30gZnJvbSAnLi4vLi4vc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbGF0bG9uZy51dGlscyc7XG5pbXBvcnQge1N0YXR1c0lkc30gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvbW9kZWwuZW51bSc7XG5pbXBvcnQge0FQUF9MT0NBTEVTLCBMb2NhbGVDb25maWcsIExvY2FsU2V0dGluZ3N9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL3NldHRpbmdzLm1vZGVsJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtDYW5MZWF2ZX0gZnJvbSAnLi4vLi4vc2hhcmVkL2d1YXJkL2NvbXBvbmVudC1kaXJ0eS5ndWFyZCc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TWF0VGFiR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0NPUkVfQ09ORklHX09QVElPTlN9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy9jb3JlLmNvbmZpZyc7XG5pbXBvcnQge0FwcFByb3BlcnRpZXNUYWJsZSwgUHJvcGVydHlFbnRpdHl9IGZyb20gJy4uL2Zvcm0vcHJvcGVydGllcy9wcm9wZXJ0aWVzLnRhYmxlJztcbmltcG9ydCB7UHJvcGVydGllc01hcH0gZnJvbSAnLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7aXNOb3ROaWx9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWNjb3VudC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICdhY2NvdW50LnBhZ2UuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FjY291bnQucGFnZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFjY291bnRQYWdlIGV4dGVuZHMgQXBwRm9ybTxBY2NvdW50PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDYW5MZWF2ZSB7XG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJywge3N0YXRpYzogdHJ1ZX0pIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcbiAgQFZpZXdDaGlsZCgncHJvcGVydGllc1RhYmxlJywge3N0YXRpYzogdHJ1ZX0pIHByb3BlcnRpZXNUYWJsZTogQXBwUHJvcGVydGllc1RhYmxlO1xuXG4gIHNlbGVjdGVkVGFiSW5kZXggPSAwO1xuICBpc0xvZ2luOiBib29sZWFuO1xuICBjaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIG5ldHdvcmtTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgZW1haWw6IGFueSA9IHtcbiAgICBjb25maXJtZWQ6IGZhbHNlLFxuICAgIG5vdENvbmZpcm1lZDogZmFsc2UsXG4gICAgc2VuZGluZzogZmFsc2UsXG4gICAgZXJyb3I6IHVuZGVmaW5lZFxuICB9O1xuICBhZGRpdGlvbmFsRmllbGRzOiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIG9wdGlvbkRlZmluaXRpb25zOiBGb3JtRmllbGREZWZpbml0aW9uW107XG5cbiAgZ2V0IHNldHRpbmdzRm9ybSgpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnc2V0dGluZ3MnKSBhcyBVbnR5cGVkRm9ybUdyb3VwO1xuICB9XG5cbiAgLy8gc2V0dGluZ3NDb250ZW50Rm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgbG9jYWxlczogTG9jYWxlQ29uZmlnW107XG4gIGxhdExvbmdGb3JtYXRzID0gTEFUX0xPTkdfUEFUVEVSTlM7XG4gIHNhdmluZyA9IGZhbHNlO1xuICBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgYWNjb3VudFJlYWRPbmx5ID0gZmFsc2U7XG4gIHJlYWRvbmx5IG1vYmlsZTogYm9vbGVhbjtcblxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLnZhbGlkICYmIHRoaXMucHJvcGVydGllc1RhYmxlPy52YWxpZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBuZXR3b3JrOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvclNlcnZpY2U6IEFjY291bnRWYWxpZGF0b3JTZXJ2aWNlLFxuICAgIC8vIHByb3RlY3RlZCBzZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2U6IFVzZXJTZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KEFQUF9MT0NBTEVTKSBsb2NhbGVzXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLCB2YWxpZGF0b3JTZXJ2aWNlLmdldEZvcm1Hcm91cChhY2NvdW50U2VydmljZS5hY2NvdW50KSk7XG5cbiAgICB0aGlzLmxvY2FsZXMgPSBsb2NhbGVzO1xuXG4gICAgLy8gQWRkIHNldHRpbmdzIGZvIGZvcm1cbiAgICAvLyB0aGlzLnNldHRpbmdzRm9ybSA9IHNldHRpbmdzVmFsaWRhdG9yU2VydmljZS5nZXRGb3JtR3JvdXAoYWNjb3VudFNlcnZpY2UuYWNjb3VudCAmJiBhY2NvdW50U2VydmljZS5hY2NvdW50LnNldHRpbmdzKTtcbiAgICAvLyB0aGlzLnNldHRpbmdzQ29udGVudEZvcm0gPSAodGhpcy5zZXR0aW5nc0Zvcm0uY29udHJvbHNbJ2NvbnRlbnQnXSBhcyBVbnR5cGVkRm9ybUdyb3VwKTtcbiAgICAvLyB0aGlzLmZvcm0uYWRkQ29udHJvbCgnc2V0dGluZ3MnLCB0aGlzLnNldHRpbmdzRm9ybSk7XG5cbiAgICB0aGlzLm1vYmlsZSA9IHRoaXMuc2V0dGluZ3MubW9iaWxlO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgZGlzYWJsZSB0aGUgZm9ybVxuICAgIHRoaXMuZGlzYWJsZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIEdldCB1c2VyIG9wdGlvbnNcbiAgICB0aGlzLm9wdGlvbkRlZmluaXRpb25zID0gdGhpcy5hY2NvdW50U2VydmljZS5vcHRpb25EZWZzLnNsaWNlKCk7XG5cbiAgICAvLyBPYnNlcnZlZCBzb21lIGV2ZW50c1xuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ2luLnN1YnNjcmliZShhY2NvdW50ID0+IHRoaXMub25Mb2dpbihhY2NvdW50KSkpO1xuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ291dC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkxvZ291dCgpKSk7XG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLm9uQ2FuY2VsLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMuYWNjb3VudFNlcnZpY2UuYWNjb3VudCk7XG4gICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLmFjY291bnRTZXJ2aWNlLiRhZGRpdGlvbmFsRmllbGRzXG4gICAgICAuc3Vic2NyaWJlKChhZGRpdGlvbmFsRmllbGRzKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbEZpZWxkcyA9IGFkZGl0aW9uYWxGaWVsZHMuc2xpY2UoKTsgLy8gQ29weVxuICAgICAgICBpZiAodGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCkpIHtcbiAgICAgICAgICB0aGlzLm9uTG9naW4odGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLmFjY291bnRSZWFkT25seSA9IHZhbHVlLmdldFByb3BlcnR5QXNCb29sZWFuKENPUkVfQ09ORklHX09QVElPTlMuQUNDT1VOVF9SRUFET05MWSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBSZWFsaWduIHRhYiwgYWZ0ZXIgYSBkZWxheSBiZWNhdXNlIHRoZSB0YWIgY2FuIGJlIGRpc2FibGVkIHdoZW4gY29tcG9uZW50IGlzIGNyZWF0ZWRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGFiR3JvdXAucmVhbGlnbklua0JhcigpLCA1MDApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLnN0b3BMaXN0ZW5DaGFuZ2VzKCk7XG4gICAgdGhpcy5uZXR3b3JrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25Mb2dpbihhY2NvdW50OiBBY2NvdW50KSB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2FjY291bnRdIExvZ2dlZCBhY2NvdW50OiAnLCBhY2NvdW50KTtcbiAgICB0aGlzLmlzTG9naW4gPSB0cnVlO1xuXG4gICAgdGhpcy5zZXRWYWx1ZShhY2NvdW50KTtcblxuICAgIHRoaXMuZW1haWwuY29uZmlybWVkID0gYWNjb3VudCAmJiBhY2NvdW50LmVtYWlsICYmIChhY2NvdW50LnN0YXR1c0lkICE9PSBTdGF0dXNJZHMuVEVNUE9SQVJZKTtcbiAgICB0aGlzLmVtYWlsLm5vdENvbmZpcm1lZCA9IGFjY291bnQgJiYgYWNjb3VudC5lbWFpbCAmJiAoIWFjY291bnQuc3RhdHVzSWQgfHwgYWNjb3VudC5zdGF0dXNJZCA9PT0gU3RhdHVzSWRzLlRFTVBPUkFSWSk7XG5cbiAgICB0aGlzLm5ldHdvcmtTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5uZXR3b3JrU3Vic2NyaXB0aW9uID0gdGhpcy5uZXR3b3JrLm9uTmV0d29ya1N0YXR1c0NoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoY29ubmVjdGlvblR5cGUgPT4gY29ubmVjdGlvblR5cGUgIT09ICdub25lJyksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKG9ubGluZSA9PiB7XG4gICAgICAgIGlmIChvbmxpbmUpIHtcbiAgICAgICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICB0aGlzLnN0YXJ0TGlzdGVuQ2hhbmdlcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICB0aGlzLnN0b3BMaXN0ZW5DaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uTG9nb3V0KCkge1xuICAgIHRoaXMuaXNMb2dpbiA9IGZhbHNlO1xuICAgIHRoaXMuZW1haWwuY29uZmlybWVkID0gZmFsc2U7XG4gICAgdGhpcy5lbWFpbC5ub3RDb25maXJtZWQgPSBmYWxzZTtcbiAgICB0aGlzLmVtYWlsLnNlbmRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVtYWlsLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgdGhpcy5uZXR3b3JrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5zdG9wTGlzdGVuQ2hhbmdlcygpO1xuXG4gICAgLy8gQmFjayB0byBob21lXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpO1xuXG4gIH1cblxuICBhc3luYyBzZXRWYWx1ZShkYXRhOiBBY2NvdW50LCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuOyBvbmx5U2VsZj86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLnNldFZhbHVlKGRhdGEsIG9wdHMpO1xuXG4gICAgLy8gU2V0IG9wdGlvbnNcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gZGF0YT8uc2V0dGluZ3M/LmFzTG9jYWxTZXR0aW5ncygpPy5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGNvbnN0IHByb3BlcnRpZXNFbnRpdGllczogUHJvcGVydHlFbnRpdHlbXSA9IFtdO1xuICAgIHRoaXMub3B0aW9uRGVmaW5pdGlvbnMubWFwKHZhbHVlID0+IHZhbHVlLmtleSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGlzTm90TmlsKHByb3BlcnRpZXNba2V5XSkpIHtcbiAgICAgICAgcHJvcGVydGllc0VudGl0aWVzLnB1c2goUHJvcGVydHlFbnRpdHkuZnJvbU9iamVjdCh7aWQ6IGtleSwgdmFsdWU6IHByb3BlcnRpZXNba2V5XX0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBhd2FpdCB0aGlzLnByb3BlcnRpZXNUYWJsZS5yZWFkeSgpO1xuICAgIHRoaXMucHJvcGVydGllc1RhYmxlLnZhbHVlID0gcHJvcGVydGllc0VudGl0aWVzO1xuXG4gIH1cblxuICBhc3luYyByZWZyZXNoKGV2ZW50PzogRXZlbnQpIHtcblxuICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudFNlcnZpY2UucmVsb2FkKCk7XG4gIH1cblxuICBzdGFydExpc3RlbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuY2hhbmdlc1N1YnNjcmlwdGlvbikgcmV0dXJuOyAvLyBhbHJlYWR5IHN0YXJ0ZWRcbiAgICB0aGlzLmNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLmFjY291bnRTZXJ2aWNlLmxpc3RlbkNoYW5nZXMoKTtcbiAgfVxuXG4gIHN0b3BMaXN0ZW5DaGFuZ2VzKCkge1xuICAgIGlmICghdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uKSByZXR1cm47XG4gICAgdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgc2VuZENvbmZpcm1hdGlvbkVtYWlsKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QganNvbiA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICBqc29uLmVtYWlsID0gdGhpcy5mb3JtLmNvbnRyb2xzWydlbWFpbCddLnZhbHVlO1xuICAgIGlmICghanNvbi5lbWFpbCB8fCAhdGhpcy5lbWFpbC5ub3RDb25maXJtZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5lbWFpbC5zZW5kaW5nID0gdHJ1ZTtcbiAgICBjb25zb2xlLmRlYnVnKCdbYWNjb3VudF0gU2VuZGluZyBjb25maXJtYXRpb24gZW1haWwuLi4nKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5hY2NvdW50U2VydmljZS5zZW5kQ29uZmlybWF0aW9uRW1haWwoXG4gICAgICAgIGpzb24uZW1haWwsXG4gICAgICAgIGpzb24uc2V0dGluZ3MgJiYganNvbi5zZXR0aW5ncy5sb2NhbGUgfHwgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmdcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbYWNjb3VudF0gQ29uZmlybWF0aW9uIGVtYWlsIHNlbnQuJyk7XG4gICAgICB0aGlzLmVtYWlsLnNlbmRpbmcgPSBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZW1haWwuc2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5lbWFpbC5lcnJvciA9IGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnI7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZShldmVudCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnNhdmluZykgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIGF3YWl0IEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMuZm9ybSk7XG5cbiAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICBBcHBGb3JtVXRpbHMubG9nRm9ybUVycm9ycyh0aGlzLmZvcm0pO1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yID0gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgbmV3QWNjb3VudCA9IEFjY291bnQuZnJvbU9iamVjdCh7XG4gICAgICAuLi4odGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50LmFzT2JqZWN0KCkpLFxuICAgICAgLi4uKHRoaXMuZm9ybS52YWx1ZSlcbiAgICB9KTtcblxuICAgIC8vIG1lcmdlIHByb3BlcnRpZXNcbiAgICBhd2FpdCB0aGlzLnByb3BlcnRpZXNUYWJsZS5zYXZlKCk7XG4gICAgY29uc3QgcHJvcGVydHlFbnRpdGllcyA9IHRoaXMucHJvcGVydGllc1RhYmxlLnZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IHByb3BlcnRpZXM6IFByb3BlcnRpZXNNYXAgPSBwcm9wZXJ0eUVudGl0aWVzLnJlZHVjZSgocmVzLCBpdGVtKSA9PiB7XG4gICAgICByZXNbaXRlbS5pZF0gPSBpdGVtLnZhbHVlO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB7fSk7XG5cbiAgICBuZXdBY2NvdW50LnNldHRpbmdzLm1lcmdlKDxMb2NhbFNldHRpbmdzPntwcm9wZXJ0aWVzfSwgWydwcm9wZXJ0aWVzJ10pO1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW2FjY291bnRdIFNhdmluZyBhY2NvdW50Li4uJywgbmV3QWNjb3VudCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgICBhd2FpdCB0aGlzLmFjY291bnRTZXJ2aWNlLnNhdmUobmV3QWNjb3VudCk7XG5cbiAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgdGhpcy5lcnJvciA9IGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnI7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIGVuYWJsZSgpIHtcbiAgICBzdXBlci5lbmFibGUoKTtcblxuICAgIC8vIFNvbWUgZmllbGRzIGFyZSBhbHdheXMgZGlzYWJsZVxuICAgIHRoaXMuZm9ybS5jb250cm9scy5lbWFpbC5kaXNhYmxlKCk7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLm1haW5Qcm9maWxlLmRpc2FibGUoKTtcbiAgICB0aGlzLmZvcm0uY29udHJvbHMucHVia2V5LmRpc2FibGUoKTtcblxuICAgIC8vIERpc2FibGUgYWNjb3VudCBmaWVsZHMgaWYgcmVhZG9ubHkgYnkgY29uZmlndXJhdGlvblxuICAgIGlmICh0aGlzLmFjY291bnRSZWFkT25seSkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmxhc3ROYW1lLmRpc2FibGUoKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5maXJzdE5hbWUuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIC8vIEFsd2F5cyBkaXNhYmxlIHNvbWUgYWRkaXRpb25hbCBmaWVsZHNcbiAgICB0aGlzLmFkZGl0aW9uYWxGaWVsZHNcbiAgICAgIC5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1tmaWVsZC5rZXldO1xuICAgICAgICBpZiAoIWNvbnRyb2wpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gZmllbGQuZXh0cmE/LmFjY291bnQgJiYgZmllbGQuZXh0cmEuYWNjb3VudC5kaXNhYmxlZCB8fCBmYWxzZTtcbiAgICAgICAgaWYgKGRpc2FibGVkICYmIGNvbnRyb2wuZW5hYmxlZCkge1xuICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkID0gZmllbGQuZXh0cmE/LmFjY291bnQgJiYgZmllbGQuZXh0cmEuYWNjb3VudC5yZXF1aXJlZCB8fCBmYWxzZTtcbiAgICAgICAgaWYgKCFmaWVsZC5yZXF1aXJlZCAmJiByZXF1aXJlZCkge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhjb250cm9sLnZhbGlkYXRvclxuICAgICAgICAgICAgPyBWYWxpZGF0b3JzLmNvbXBvc2UoW2NvbnRyb2wudmFsaWRhdG9yLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIDogVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIH1cblxuICAgICAgfSk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbCgpIHtcbiAgICBhd2FpdCBzdXBlci5jYW5jZWwoKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGV2ZW50PzogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybjtcblxuICAgIC8vIEJhY2sgdG8gaG9tZVxuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywge3JlcGxhY2VVcmw6IHRydWV9KTsgLy8gYmFjayB0byBob21lXG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxufVxuIiwiPGFwcC10b29sYmFyIFt0aXRsZV09XCInQUNDT1VOVC5USVRMRSd8dHJhbnNsYXRlXCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICBbaGFzVmFsaWRhdGVdPVwiZGlydHkgJiYgIXNhdmluZ1wiXG4gICAgICAgICAgICAgW2hhc0Nsb3NlXT1cIiFkaXJ0eSAmJiAhc2F2aW5nXCJcbiAgICAgICAgICAgICAob25WYWxpZGF0ZSk9XCJzYXZlKCRldmVudClcIlxuICAgICAgICAgICAgIFtjYW5Hb0JhY2tdPVwiZmFsc2VcIlxuICAgICAgICAgICAgIChvbkNsb3NlKT1cImNsb3NlKCRldmVudClcIj5cblxuICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgIDwhLS0gbG9hZGVyIC0tPlxuICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cImxvYWRpbmcgfHwgc2F2aW5nOyBlbHNlIGVuZEJ1dHRvbnNcIj48L2lvbi1zcGlubmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNlbmRCdXR0b25zPlxuICAgICAgPCEtLSByZWZyZXNoIGJ1dHRvbiAoaWYgb25saW5lKSAtLT5cbiAgICAgIDxpb24tYnV0dG9uIFttYXRUb29sdGlwXT1cIidDT01NT04uQlROX1JFRlJFU0gnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIm5ldHdvcmsub25saW5lXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZyZXNoKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2lvbi1idXR0b25zPlxuPC9hcHAtdG9vbGJhcj5cblxuPGlvbi1jb250ZW50PlxuXG4gIDwhLS0gZXJyb3IgLS0+XG4gIDxpb24taXRlbSAqbmdJZj1cImVycm9yICYmIG1vYmlsZVwiIGxpbmVzPVwibm9uZVwiPlxuICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbT5cblxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIj5cblxuICAgIDxtYXQtdGFiLWdyb3VwICN0YWJHcm91cCBbKHNlbGVjdGVkSW5kZXgpXT1cInNlbGVjdGVkVGFiSW5kZXhcIiBkeW5hbWljSGVpZ2h0PlxuXG4gICAgICA8IS0tIFRBQjogdXNlciBkZXRhaWxzIC0tPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eydBQ0NPVU5ULlVTRVJfREVUQUlMUy5USVRMRSd8dHJhbnNsYXRlfX1cIiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgIDxpb24taWNvbiBtYXRQcmVmaXggc2xvdD1cInN0YXJ0XCIgbmFtZT1cInBlcnNvbi1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPGlvbi1sYWJlbD57eydBQ0NPVU5ULlVTRVJfREVUQUlMUy5USVRMRSd8dHJhbnNsYXRlfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIiBjb2xvcj1cImRhbmdlclwiICpuZ0lmPVwic3VibWl0dGVkICYmIGZvcm0uaW52YWxpZFwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG5cbiAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cIidBQ0NPVU5ULlVTRVJfREVUQUlMUy5ERVNDUklQVElPTid8dHJhbnNsYXRlXCI+PC9wPlxuXG4gICAgICAgICAgPCEtLWgxPklkZW50aXTDqTwvaDEtLT5cblxuICAgICAgICAgIDwhLS0gRW1haWwgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInVVNFUi5FTUFJTCd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIGF1dG9jb21wbGV0ZT1cInNlY3Rpb24tcmVkIGVtYWlsXCI+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5lbWFpbC5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBmb3JtLmNvbnRyb2xzLmVtYWlsLmRpcnR5XCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5lbWFpbC5oYXNFcnJvcignZW1haWwnKSAmJiBmb3JtLmNvbnRyb2xzLmVtYWlsLmRpcnR5XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7J0VSUk9SLkZJRUxEX05PVF9WQUxJRF9FTUFJTCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPGlvbi1ncmlkICpuZ0lmPVwiZW1haWwubm90Q29uZmlybWVkXCIgY2xhc3M9XCJpb24tbm8tcGFkZGluZyBpb24tcGFkZGluZy1ib3R0b21cIj5cbiAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICA8aW9uLWNvbCBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBjb2xvcj1cImRhbmdlclwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIiBjb2xvcj1cImRhbmdlclwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IFtpbm5lckhUTUxdPVwiJ0FDQ09VTlQuRU1BSUxfTk9UX0NPTkZJUk1FRF9MQUJFTCd8dHJhbnNsYXRlXCI+PC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPC9pb24tcm93PlxuXG4gICAgICAgICAgICA8aW9uLXJvdyBzdHlsZT1cImhlaWdodDogNTFweDtcIj5cbiAgICAgICAgICAgICAgPGlvbi1jb2wgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICA8c21hbGwgW2lubmVySFRNTF09XCInQUNDT1VOVC5FTUFJTF9OT1RfUkVDRUlWRURfUVVFU1RJT04nfHRyYW5zbGF0ZVwiPjwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgKm5nSWY9XCIhZW1haWwuc2VuZGluZ1wiIChjbGljayk9XCJzZW5kQ29uZmlybWF0aW9uRW1haWwoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAge3snQUNDT1VOVC5CVE5fUkVTRU5EJ3x0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8aW9uLXNwaW5uZXIgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiICpuZ0lmPVwiZW1haWwuc2VuZGluZ1wiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgIDwvaW9uLXJvdz5cblxuICAgICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbWFpbC5lcnJvciAmJiAhZW1haWwuc2VuZGluZ1wiPlxuICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVtYWlsLmVycm9yICYmICFlbWFpbC5zZW5kaW5nXCIgW2lubmVySFRNTF09XCJlbWFpbC5lcnJvcnx0cmFuc2xhdGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICA8L2lvbi1ncmlkPlxuXG4gICAgICAgICAgPCEtLSBMYXN0IG5hbWUgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFthcHBBdXRvZm9jdXNdPVwidHJ1ZVwiIFthdXRvZm9jdXNEZWxheV09XCI1MDBcIiBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuTEFTVF9OQU1FJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCJcbiAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJzZWN0aW9uLWJsdWUgZmFtaWx5LW5hbWVcIlxuICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMubGFzdE5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgZm9ybS5jb250cm9scy5sYXN0TmFtZS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5sYXN0TmFtZS5oYXNFcnJvcignbWlubGVuZ3RoJykgJiYgZm9ybS5jb250cm9scy5sYXN0TmFtZS5kaXJ0eVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eydFUlJPUi5GSUVMRF9NSU5fTEVOR1RIJyB8IHRyYW5zbGF0ZToge21pbkxlbmd0aDogMn0gfX08L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBGaXJzdCBuYW1lIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuRklSU1RfTkFNRSd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3ROYW1lXCIgYXV0b2NvbXBsZXRlPVwic2VjdGlvbi1ibHVlIGdpdmVuLW5hbWVcIlxuICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIGZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5oYXNFcnJvcignbWlubGVuZ3RoJykgJiYgZm9ybS5jb250cm9scy5maXJzdE5hbWUuZGlydHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3snRVJST1IuRklFTERfTUlOX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHttaW5MZW5ndGg6IDJ9IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuXG4gICAgICAgICAgPCEtLSBBZGRpdGlvbmFsIGZpZWxkcyAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkZWZpbml0aW9uIG9mIGFkZGl0aW9uYWxGaWVsZHNcIj5cbiAgICAgICAgICAgIDxhcHAtZm9ybS1maWVsZCBbZGVmaW5pdGlvbl09XCJkZWZpbml0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRlZmluaXRpb24ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZGVmaW5pdGlvbi5leHRyYSAmJiBkZWZpbml0aW9uLmV4dHJhLmFjY291bnQgJiYgZGVmaW5pdGlvbi5leHRyYS5hY2NvdW50LnJlcXVpcmVkIHx8IGZhbHNlXCI+XG4gICAgICAgICAgICA8L2FwcC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPGgzIHRyYW5zbGF0ZT5BQ0NPVU5ULlVTRVJfREVUQUlMUy5URUNITklDQUxfRElWSURFUjwvaDM+XG5cbiAgICAgICAgICA8IS0tIHByb2ZpbGUgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGhpZGRlbiByZWFkb25seT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwiJ0FDQ09VTlQuVVNFUl9ERVRBSUxTLlBST0ZJTEUnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWFpblByb2ZpbGVcIiByZXF1aXJlZD5cbiAgICAgICAgICAgIDxzcGFuPnt7J1VTRVIuUFJPRklMRV9FTlVNLicgKyBmb3JtLmNvbnRyb2xzLm1haW5Qcm9maWxlLnZhbHVlIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5maXJzdE5hbWUuaGFzRXJyb3IoJ21haW5Qcm9maWxlJykgJiYgZm9ybS5jb250cm9scy5tYWluUHJvZmlsZS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDwhLS0gcHVia2V5IC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCByZWFkb25seT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwiJ0FDQ09VTlQuVVNFUl9ERVRBSUxTLlBVQktFWSd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwicHVia2V5XCJcbiAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5oYXNFcnJvcigncHVia2V5JykgJiYgZm9ybS5jb250cm9scy5maXJzdE5hbWUuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmhhc0Vycm9yKCdwdWJrZXknKSAmJiBmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5kaXJ0eVwiPlxuICAgICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+RVJST1IuRklFTERfTk9UX1ZBTElEX1BVQktFWTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG5cbiAgICAgIDwhLS0gVEFCOiBzZXR0aW5ncyAtLT5cbiAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3snQUNDT1VOVC5TRVRUSU5HUy5USVRMRSd8dHJhbnNsYXRlfX1cIiBmb3JtR3JvdXBOYW1lPVwic2V0dGluZ3NcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgPGlvbi1pY29uIG1hdFByZWZpeCBzbG90PVwic3RhcnRcIiBuYW1lPVwic2V0dGluZ3NcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+QUNDT1VOVC5TRVRUSU5HUy5USVRMRTwvaW9uLWxhYmVsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuXG4gICAgICAgICAgPHAgW2lubmVySFRNTF09XCInQUNDT1VOVC5TRVRUSU5HUy5ERVNDUklQVElPTid8dHJhbnNsYXRlXCI+PC9wPlxuXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidBQ0NPVU5ULlNFVFRJTkdTLkxPQ0FMRSd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwibG9jYWxlXCIgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxvY2FsZXNcIiBbdmFsdWVdPVwiaXRlbS5rZXlcIj5cbiAgICAgICAgICAgICAgICB7e2l0ZW0udmFsdWV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2V0dGluZ3NGb3JtPy5jb250cm9scy5sb2NhbGUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgc2V0dGluZ3NGb3JtPy5jb250cm9scy5sb2NhbGUuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIGxhdC9sb25nIGZvcm1hdC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInQUNDT1VOVC5TRVRUSU5HUy5MQVRfTE9OR19GT1JNQVQnfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImxhdExvbmdGb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxhdExvbmdGb3JtYXRzXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICB7eydDT01NT04uTEFUX0xPTkcuJyArIGl0ZW0gKyAnX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2V0dGluZ3NGb3JtPy5jb250cm9scy5sYXRMb25nRm9ybWF0Lmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIHNldHRpbmdzRm9ybT8uY29udHJvbHMubGF0TG9uZ0Zvcm1hdC5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIE9wdGlvbnMgdGFibGUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25zLXRhYmxlXCI+XG4gICAgICAgICAgPGFwcC1wcm9wZXJ0aWVzLXRhYmxlXG4gICAgICAgICAgICAjcHJvcGVydGllc1RhYmxlXG4gICAgICAgICAgICBpMThuQ29sdW1uUHJlZml4PVwiQUNDT1VOVC5TRVRUSU5HUy5PUFRJT05TLlwiXG4gICAgICAgICAgICBbZGVmaW5pdGlvbnNdPVwib3B0aW9uRGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgW2NhbkVkaXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAob25EaXJ0eSk9XCIkZXZlbnQgPyBtYXJrQXNEaXJ0eSgpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICA+PC9hcHAtcHJvcGVydGllcy10YWJsZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICA8L21hdC10YWItZ3JvdXA+XG5cblxuICA8L2Zvcm0+XG48L2lvbi1jb250ZW50PlxuXG48aW9uLWZvb3RlciBoaWRkZW4teHMgaGlkZGVuLXNtIGhpZGRlbi1tb2JpbGU+XG4gIDxhcHAtZm9ybS1idXR0b25zLWJhciAob25DYW5jZWwpPVwiY2FuY2VsKClcIiAob25TYXZlKT1cInNhdmUoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCIhZm9ybS5kaXJ0eSB8fCAhdmFsaWQgfHwgc2F2aW5nXCI+XG4gICAgPCEtLSBlcnJvciAtLT5cbiAgICA8aW9uLWl0ZW0gKm5nSWY9XCJlcnJvciAmJiAhbW9iaWxlXCIgbGluZXM9XCJub25lXCI+XG4gICAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1pdGVtPlxuICA8L2FwcC1mb3JtLWJ1dHRvbnMtYmFyPlxuPC9pb24tZm9vdGVyPlxuIl19
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2FjY291bnQvYWNjb3VudC5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2FjY291bnQvYWNjb3VudC5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUErQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFDLGFBQWEsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsT0FBTyxFQUF1QyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsV0FBVyxFQUE4QixNQUFNLGtDQUFrQyxDQUFDO0FBSTFGLE9BQU8sRUFBQyxHQUFHLEVBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQXFCLGNBQWMsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRaEQsTUFBTSxPQUFPLFdBQVksU0FBUSxPQUFnQjtJQWlDL0MsWUFDRSxRQUFrQixFQUNYLFdBQStCLEVBQy9CLGNBQThCLEVBQzlCLE9BQXVCLEVBQ3BCLE1BQWMsRUFDZCxnQkFBeUM7SUFDbkQsb0VBQW9FO0lBQzFELGFBQTRCLEVBQzVCLEVBQXFCLEVBQ1YsT0FBTztRQUU1QixLQUFLLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQVZoRSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBRXpDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBdENqQyxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFJckIsVUFBSyxHQUFRO1lBQ1gsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsT0FBTyxFQUFFLEtBQUs7WUFDZCxLQUFLLEVBQUUsU0FBUztTQUNqQixDQUFDO1FBVUYsbUJBQWMsR0FBRyxpQkFBaUIsQ0FBQztRQUNuQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQXFCdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsdUJBQXVCO1FBQ3ZCLHdIQUF3SDtRQUN4SCwwRkFBMEY7UUFDMUYsdURBQXVEO1FBRXZELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFFbkMsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBekNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFxQixDQUFDO0lBQ3ZELENBQUM7SUFVRCxJQUFJLEtBQUs7UUFDUCxPQUFPLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUM7SUFDcEQsQ0FBQztJQTZCRCxRQUFRO1FBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLG1CQUFtQjtRQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFaEUsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUI7YUFDNUQsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPO1lBQ3pELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNyQjtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsb0JBQW9CLENBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFGLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRix1RkFBdUY7UUFDdkYsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFdBQVc7UUFDVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZ0I7UUFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEgsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxtQkFBbUIsR0FBRSxhQUFhLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCO2lCQUNoQyxJQUFJLENBQ0gsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsY0FBYyxLQUFLLE1BQU0sQ0FBQyxDQUNqRDtTQUNKLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ2hDLElBQUksTUFBTSxFQUFFO2dCQUNWLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMzQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUV4QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV6QixlQUFlO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFakMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBYSxFQUFFLElBQWtEO1FBQzlFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTNCLGNBQWM7UUFDZCxNQUFNLFVBQVUsR0FBRyxJQUFJLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDdkUsTUFBTSxrQkFBa0IsR0FBcUIsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNELElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUM3QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQzthQUN2RjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDO0lBRWxELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQWE7UUFFekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLG1CQUFtQjtZQUFFLE9BQU8sQ0FBQyxrQkFBa0I7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1lBQUUsT0FBTztRQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEtBQWlCO1FBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDM0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ3pELElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQzdDLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FDcEUsQ0FBQztZQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDNUI7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLO1FBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTlCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNwQixNQUFNLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFL0MsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDckIsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFFdkIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNwQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0MsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3JCLENBQUMsQ0FBQztRQUVILG1CQUFtQjtRQUNuQixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDMUQsTUFBTSxVQUFVLEdBQWtCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDMUIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBZ0IsRUFBQyxVQUFVLEVBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFdkUsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6RCxJQUFJO1lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWYsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUUzQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQztZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO2dCQUFTO1lBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBSU47UUFDQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFZixpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFcEMsc0RBQXNEO1FBQ3RELElBQUksSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3hDO1FBRUQsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU8sQ0FBQyxPQUFPO1lBRTdCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7WUFDL0UsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDL0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ25CO1lBQ0QsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztZQUMvRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLEVBQUU7Z0JBQy9CLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVM7b0JBQ3JDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzlELENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUI7UUFFSCxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixNQUFNLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFhO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXhCLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZTtJQUM1RSxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7O3lHQXZUVSxXQUFXLG1RQTJDWixXQUFXOzZGQTNDVixXQUFXLHNUQzdCeEIsNGhUQXlOQTs0RkQ1TGEsV0FBVztrQkFOdkIsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs7MEJBNkM1QyxNQUFNOzJCQUFDLFdBQVc7NENBMUNrQixRQUFRO3NCQUE5QyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ1MsZUFBZTtzQkFBNUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWNjb3VudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge0FjY291bnR9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2FjY291bnQubW9kZWwnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QWNjb3VudFZhbGlkYXRvclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL3ZhbGlkYXRvci9hY2NvdW50LnZhbGlkYXRvcic7XG5pbXBvcnQge0FwcEZvcm19IGZyb20gJy4uL2Zvcm0vZm9ybS5jbGFzcyc7XG5pbXBvcnQge0FwcEZvcm1VdGlsc30gZnJvbSAnLi4vZm9ybS9mb3JtLnV0aWxzJztcbmltcG9ydCB7Rm9ybUZpZWxkRGVmaW5pdGlvbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtMQVRfTE9OR19QQVRURVJOU30gZnJvbSAnLi4vLi4vc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbGF0bG9uZy51dGlscyc7XG5pbXBvcnQge1N0YXR1c0lkc30gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvbW9kZWwuZW51bSc7XG5pbXBvcnQge0FQUF9MT0NBTEVTLCBMb2NhbGVDb25maWcsIExvY2FsU2V0dGluZ3N9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL3NldHRpbmdzLm1vZGVsJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtDYW5MZWF2ZX0gZnJvbSAnLi4vLi4vc2hhcmVkL2d1YXJkL2NvbXBvbmVudC1kaXJ0eS5ndWFyZCc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHttYXAsIG1lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01hdFRhYkdyb3VwfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtDT1JFX0NPTkZJR19PUFRJT05TfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHtBcHBQcm9wZXJ0aWVzVGFibGUsIFByb3BlcnR5RW50aXR5fSBmcm9tICcuLi9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy50YWJsZSc7XG5pbXBvcnQge1Byb3BlcnRpZXNNYXB9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge2lzTm90TmlsfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFjY291bnQtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnYWNjb3VudC5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hY2NvdW50LnBhZ2Uuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvdW50UGFnZSBleHRlbmRzIEFwcEZvcm08QWNjb3VudD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ2FuTGVhdmUge1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcsIHtzdGF0aWM6IHRydWV9KSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG4gIEBWaWV3Q2hpbGQoJ3Byb3BlcnRpZXNUYWJsZScsIHtzdGF0aWM6IHRydWV9KSBwcm9wZXJ0aWVzVGFibGU6IEFwcFByb3BlcnRpZXNUYWJsZTtcblxuICBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgaXNMb2dpbjogYm9vbGVhbjtcbiAgY2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBuZXR3b3JrU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGVtYWlsOiBhbnkgPSB7XG4gICAgY29uZmlybWVkOiBmYWxzZSxcbiAgICBub3RDb25maXJtZWQ6IGZhbHNlLFxuICAgIHNlbmRpbmc6IGZhbHNlLFxuICAgIGVycm9yOiB1bmRlZmluZWRcbiAgfTtcbiAgYWRkaXRpb25hbEZpZWxkczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuICBvcHRpb25EZWZpbml0aW9uczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuXG4gIGdldCBzZXR0aW5nc0Zvcm0oKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3NldHRpbmdzJykgYXMgVW50eXBlZEZvcm1Hcm91cDtcbiAgfVxuXG4gIC8vIHNldHRpbmdzQ29udGVudEZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIGxvY2FsZXM6IExvY2FsZUNvbmZpZ1tdO1xuICBsYXRMb25nRm9ybWF0cyA9IExBVF9MT05HX1BBVFRFUk5TO1xuICBzYXZpbmcgPSBmYWxzZTtcbiAgc3VibWl0dGVkID0gZmFsc2U7XG4gIGFjY291bnRSZWFkT25seSA9IGZhbHNlO1xuICByZWFkb25seSBtb2JpbGU6IGJvb2xlYW47XG5cbiAgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci52YWxpZCAmJiB0aGlzLnByb3BlcnRpZXNUYWJsZT8udmFsaWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHVibGljIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwdWJsaWMgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCB2YWxpZGF0b3JTZXJ2aWNlOiBBY2NvdW50VmFsaWRhdG9yU2VydmljZSxcbiAgICAvLyBwcm90ZWN0ZWQgc2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlOiBVc2VyU2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChBUFBfTE9DQUxFUykgbG9jYWxlc1xuICApIHtcbiAgICBzdXBlcihpbmplY3RvciwgdmFsaWRhdG9yU2VydmljZS5nZXRGb3JtR3JvdXAoYWNjb3VudFNlcnZpY2UuYWNjb3VudCkpO1xuXG4gICAgdGhpcy5sb2NhbGVzID0gbG9jYWxlcztcblxuICAgIC8vIEFkZCBzZXR0aW5ncyBmbyBmb3JtXG4gICAgLy8gdGhpcy5zZXR0aW5nc0Zvcm0gPSBzZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2UuZ2V0Rm9ybUdyb3VwKGFjY291bnRTZXJ2aWNlLmFjY291bnQgJiYgYWNjb3VudFNlcnZpY2UuYWNjb3VudC5zZXR0aW5ncyk7XG4gICAgLy8gdGhpcy5zZXR0aW5nc0NvbnRlbnRGb3JtID0gKHRoaXMuc2V0dGluZ3NGb3JtLmNvbnRyb2xzWydjb250ZW50J10gYXMgVW50eXBlZEZvcm1Hcm91cCk7XG4gICAgLy8gdGhpcy5mb3JtLmFkZENvbnRyb2woJ3NldHRpbmdzJywgdGhpcy5zZXR0aW5nc0Zvcm0pO1xuXG4gICAgdGhpcy5tb2JpbGUgPSB0aGlzLnNldHRpbmdzLm1vYmlsZTtcblxuICAgIC8vIEJ5IGRlZmF1bHQsIGRpc2FibGUgdGhlIGZvcm1cbiAgICB0aGlzLmRpc2FibGUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBHZXQgdXNlciBvcHRpb25zXG4gICAgdGhpcy5vcHRpb25EZWZpbml0aW9ucyA9IHRoaXMuYWNjb3VudFNlcnZpY2Uub3B0aW9uRGVmcy5zbGljZSgpO1xuXG4gICAgLy8gT2JzZXJ2ZWQgc29tZSBldmVudHNcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpbi5zdWJzY3JpYmUoYWNjb3VudCA9PiB0aGlzLm9uTG9naW4oYWNjb3VudCkpKTtcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dvdXQuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Mb2dvdXQoKSkpO1xuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5vbkNhbmNlbC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmFjY291bnRTZXJ2aWNlLmFjY291bnQpO1xuICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgIH0pKTtcblxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5hY2NvdW50U2VydmljZS4kYWRkaXRpb25hbEZpZWxkc1xuICAgICAgLnN1YnNjcmliZSgoYWRkaXRpb25hbEZpZWxkcykgPT4ge1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxGaWVsZHMgPSBhZGRpdGlvbmFsRmllbGRzLnNsaWNlKCk7IC8vIENvcHlcbiAgICAgICAgaWYgKHRoaXMuYWNjb3VudFNlcnZpY2UuaXNMb2dpbigpKSB7XG4gICAgICAgICAgdGhpcy5vbkxvZ2luKHRoaXMuYWNjb3VudFNlcnZpY2UuYWNjb3VudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy5hY2NvdW50UmVhZE9ubHkgPSB2YWx1ZS5nZXRQcm9wZXJ0eUFzQm9vbGVhbihDT1JFX0NPTkZJR19PUFRJT05TLkFDQ09VTlRfUkVBRE9OTFkpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gUmVhbGlnbiB0YWIsIGFmdGVyIGEgZGVsYXkgYmVjYXVzZSB0aGUgdGFiIGNhbiBiZSBkaXNhYmxlZCB3aGVuIGNvbXBvbmVudCBpcyBjcmVhdGVkXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRhYkdyb3VwLnJlYWxpZ25JbmtCYXIoKSwgNTAwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5zdG9wTGlzdGVuQ2hhbmdlcygpO1xuICAgIHRoaXMubmV0d29ya1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG9uTG9naW4oYWNjb3VudDogQWNjb3VudCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1thY2NvdW50XSBMb2dnZWQgYWNjb3VudDogJywgYWNjb3VudCk7XG4gICAgdGhpcy5pc0xvZ2luID0gdHJ1ZTtcblxuICAgIHRoaXMuc2V0VmFsdWUoYWNjb3VudCk7XG5cbiAgICB0aGlzLmVtYWlsLmNvbmZpcm1lZCA9IGFjY291bnQgJiYgYWNjb3VudC5lbWFpbCAmJiAoYWNjb3VudC5zdGF0dXNJZCAhPT0gU3RhdHVzSWRzLlRFTVBPUkFSWSk7XG4gICAgdGhpcy5lbWFpbC5ub3RDb25maXJtZWQgPSBhY2NvdW50ICYmIGFjY291bnQuZW1haWwgJiYgKCFhY2NvdW50LnN0YXR1c0lkIHx8IGFjY291bnQuc3RhdHVzSWQgPT09IFN0YXR1c0lkcy5URU1QT1JBUlkpO1xuXG4gICAgdGhpcy5uZXR3b3JrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubmV0d29ya1N1YnNjcmlwdGlvbiA9Y29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLFxuICAgICAgdGhpcy5uZXR3b3JrLm9uTmV0d29ya1N0YXR1c0NoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKGNvbm5lY3Rpb25UeXBlID0+IGNvbm5lY3Rpb25UeXBlICE9PSAnbm9uZScpLFxuICAgICAgICApXG4gICAgXSkuc3Vic2NyaWJlKChbY29uZmlnLCBvbmxpbmVdKSA9PiB7XG4gICAgICBpZiAob25saW5lKSB7XG4gICAgICAgIGNvbnN0IGFjY291bnRSZWFkT25seSA9IGNvbmZpZy5nZXRQcm9wZXJ0eUFzQm9vbGVhbihDT1JFX0NPTkZJR19PUFRJT05TLkFDQ09VTlRfUkVBRE9OTFkpO1xuICAgICAgICB0aGlzLmVuYWJsZSh7IGFjY291bnRSZWFkT25seSB9KTtcbiAgICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICB0aGlzLnN0YXJ0TGlzdGVuQ2hhbmdlcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgdGhpcy5zdG9wTGlzdGVuQ2hhbmdlcygpO1xuICAgICAgfVxuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkxvZ291dCgpIHtcbiAgICB0aGlzLmlzTG9naW4gPSBmYWxzZTtcbiAgICB0aGlzLmVtYWlsLmNvbmZpcm1lZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1haWwubm90Q29uZmlybWVkID0gZmFsc2U7XG4gICAgdGhpcy5lbWFpbC5zZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5lbWFpbC5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgIHRoaXMubmV0d29ya1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuc3RvcExpc3RlbkNoYW5nZXMoKTtcblxuICAgIC8vIEJhY2sgdG8gaG9tZVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nKTtcblxuICB9XG5cbiAgYXN5bmMgc2V0VmFsdWUoZGF0YTogQWNjb3VudCwgb3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbjsgb25seVNlbGY/OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzdXBlci5zZXRWYWx1ZShkYXRhLCBvcHRzKTtcblxuICAgIC8vIFNldCBvcHRpb25zXG4gICAgY29uc3QgcHJvcGVydGllcyA9IGRhdGE/LnNldHRpbmdzPy5hc0xvY2FsU2V0dGluZ3MoKT8ucHJvcGVydGllcyB8fCB7fTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzRW50aXRpZXM6IFByb3BlcnR5RW50aXR5W10gPSBbXTtcbiAgICB0aGlzLm9wdGlvbkRlZmluaXRpb25zLm1hcCh2YWx1ZSA9PiB2YWx1ZS5rZXkpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChpc05vdE5pbChwcm9wZXJ0aWVzW2tleV0pKSB7XG4gICAgICAgIHByb3BlcnRpZXNFbnRpdGllcy5wdXNoKFByb3BlcnR5RW50aXR5LmZyb21PYmplY3Qoe2lkOiBrZXksIHZhbHVlOiBwcm9wZXJ0aWVzW2tleV19KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5wcm9wZXJ0aWVzVGFibGUucmVhZHkoKTtcbiAgICB0aGlzLnByb3BlcnRpZXNUYWJsZS52YWx1ZSA9IHByb3BlcnRpZXNFbnRpdGllcztcblxuICB9XG5cbiAgYXN5bmMgcmVmcmVzaChldmVudD86IEV2ZW50KSB7XG5cbiAgICB0aGlzLmRpc2FibGUoKTtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLmFjY291bnRTZXJ2aWNlLnJlbG9hZCgpO1xuICB9XG5cbiAgc3RhcnRMaXN0ZW5DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmNoYW5nZXNTdWJzY3JpcHRpb24pIHJldHVybjsgLy8gYWxyZWFkeSBzdGFydGVkXG4gICAgdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5hY2NvdW50U2VydmljZS5saXN0ZW5DaGFuZ2VzKCk7XG4gIH1cblxuICBzdG9wTGlzdGVuQ2hhbmdlcygpIHtcbiAgICBpZiAoIXRoaXMuY2hhbmdlc1N1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuY2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbmdlc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIHNlbmRDb25maXJtYXRpb25FbWFpbChldmVudDogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAganNvbi5lbWFpbCA9IHRoaXMuZm9ybS5jb250cm9sc1snZW1haWwnXS52YWx1ZTtcbiAgICBpZiAoIWpzb24uZW1haWwgfHwgIXRoaXMuZW1haWwubm90Q29uZmlybWVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuZW1haWwuc2VuZGluZyA9IHRydWU7XG4gICAgY29uc29sZS5kZWJ1ZygnW2FjY291bnRdIFNlbmRpbmcgY29uZmlybWF0aW9uIGVtYWlsLi4uJyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuYWNjb3VudFNlcnZpY2Uuc2VuZENvbmZpcm1hdGlvbkVtYWlsKFxuICAgICAgICBqc29uLmVtYWlsLFxuICAgICAgICBqc29uLnNldHRpbmdzICYmIGpzb24uc2V0dGluZ3MubG9jYWxlIHx8IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nXG4gICAgICApO1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2FjY291bnRdIENvbmZpcm1hdGlvbiBlbWFpbCBzZW50LicpO1xuICAgICAgdGhpcy5lbWFpbC5zZW5kaW5nID0gZmFsc2U7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVtYWlsLnNlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZW1haWwuZXJyb3IgPSBlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmUoZXZlbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybiBmYWxzZTtcblxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICBhd2FpdCBBcHBGb3JtVXRpbHMud2FpdFdoaWxlUGVuZGluZyh0aGlzLmZvcm0pO1xuXG4gICAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgICAgQXBwRm9ybVV0aWxzLmxvZ0Zvcm1FcnJvcnModGhpcy5mb3JtKTtcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IG5ld0FjY291bnQgPSBBY2NvdW50LmZyb21PYmplY3Qoe1xuICAgICAgLi4uKHRoaXMuYWNjb3VudFNlcnZpY2UuYWNjb3VudC5hc09iamVjdCgpKSxcbiAgICAgIC4uLih0aGlzLmZvcm0udmFsdWUpXG4gICAgfSk7XG5cbiAgICAvLyBtZXJnZSBwcm9wZXJ0aWVzXG4gICAgYXdhaXQgdGhpcy5wcm9wZXJ0aWVzVGFibGUuc2F2ZSgpO1xuICAgIGNvbnN0IHByb3BlcnR5RW50aXRpZXMgPSB0aGlzLnByb3BlcnRpZXNUYWJsZS52YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTWFwID0gcHJvcGVydHlFbnRpdGllcy5yZWR1Y2UoKHJlcywgaXRlbSkgPT4ge1xuICAgICAgcmVzW2l0ZW0uaWRdID0gaXRlbS52YWx1ZTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwge30pO1xuXG4gICAgbmV3QWNjb3VudC5zZXR0aW5ncy5tZXJnZSg8TG9jYWxTZXR0aW5ncz57cHJvcGVydGllc30sIFsncHJvcGVydGllcyddKTtcblxuICAgIGNvbnNvbGUuZGVidWcoJ1thY2NvdW50XSBTYXZpbmcgYWNjb3VudC4uLicsIG5ld0FjY291bnQpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgICAgYXdhaXQgdGhpcy5hY2NvdW50U2VydmljZS5zYXZlKG5ld0FjY291bnQpO1xuXG4gICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIHRoaXMuZXJyb3IgPSBlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBlbmFibGUob3B0cz86IHtcbiAgICBhY2NvdW50UmVhZE9ubHk/OiBib29sZWFuO1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgc3VwZXIuZW5hYmxlKCk7XG5cbiAgICAvLyBTb21lIGZpZWxkcyBhcmUgYWx3YXlzIGRpc2FibGVcbiAgICB0aGlzLmZvcm0uY29udHJvbHMuZW1haWwuZGlzYWJsZSgpO1xuICAgIHRoaXMuZm9ybS5jb250cm9scy5tYWluUHJvZmlsZS5kaXNhYmxlKCk7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLnB1YmtleS5kaXNhYmxlKCk7XG5cbiAgICAvLyBEaXNhYmxlIGFjY291bnQgZmllbGRzIGlmIHJlYWRvbmx5IGJ5IGNvbmZpZ3VyYXRpb25cbiAgICBpZiAob3B0cz8uYWNjb3VudFJlYWRPbmx5KSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubGFzdE5hbWUuZGlzYWJsZSgpO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIGRpc2FibGUgc29tZSBhZGRpdGlvbmFsIGZpZWxkc1xuICAgIHRoaXMuYWRkaXRpb25hbEZpZWxkc1xuICAgICAgLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkLmtleV07XG4gICAgICAgIGlmICghY29udHJvbCkgcmV0dXJuOyAvLyBTa2lwXG5cbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBmaWVsZC5leHRyYT8uYWNjb3VudCAmJiBmaWVsZC5leHRyYS5hY2NvdW50LmRpc2FibGVkIHx8IGZhbHNlO1xuICAgICAgICBpZiAoZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGVkKSB7XG4gICAgICAgICAgY29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBmaWVsZC5leHRyYT8uYWNjb3VudCAmJiBmaWVsZC5leHRyYS5hY2NvdW50LnJlcXVpcmVkIHx8IGZhbHNlO1xuICAgICAgICBpZiAoIWZpZWxkLnJlcXVpcmVkICYmIHJlcXVpcmVkKSB7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKGNvbnRyb2wudmFsaWRhdG9yXG4gICAgICAgICAgICA/IFZhbGlkYXRvcnMuY29tcG9zZShbY29udHJvbC52YWxpZGF0b3IsIFZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICAgICAgOiBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICB9KTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsKCkge1xuICAgIGF3YWl0IHN1cGVyLmNhbmNlbCgpO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmICh0aGlzLnNhdmluZykgcmV0dXJuO1xuXG4gICAgLy8gQmFjayB0byBob21lXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7cmVwbGFjZVVybDogdHJ1ZX0pOyAvLyBiYWNrIHRvIGhvbWVcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG59XG4iLCI8YXBwLXRvb2xiYXIgW3RpdGxlXT1cIidBQ0NPVU5ULlRJVExFJ3x0cmFuc2xhdGVcIiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgIFtoYXNWYWxpZGF0ZV09XCJkaXJ0eSAmJiAhc2F2aW5nXCJcbiAgICAgICAgICAgICBbaGFzQ2xvc2VdPVwiIWRpcnR5ICYmICFzYXZpbmdcIlxuICAgICAgICAgICAgIChvblZhbGlkYXRlKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgW2NhbkdvQmFja109XCJmYWxzZVwiXG4gICAgICAgICAgICAgKG9uQ2xvc2UpPVwiY2xvc2UoJGV2ZW50KVwiPlxuXG4gIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgPCEtLSBsb2FkZXIgLS0+XG4gICAgPGlvbi1zcGlubmVyICpuZ0lmPVwibG9hZGluZyB8fCBzYXZpbmc7IGVsc2UgZW5kQnV0dG9uc1wiPjwvaW9uLXNwaW5uZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2VuZEJ1dHRvbnM+XG4gICAgICA8IS0tIHJlZnJlc2ggYnV0dG9uIChpZiBvbmxpbmUpIC0tPlxuICAgICAgPGlvbi1idXR0b24gW21hdFRvb2x0aXBdPVwiJ0NPTU1PTi5CVE5fUkVGUkVTSCd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibmV0d29yay5vbmxpbmVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZnJlc2goJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWljb24gc2xvdD1cImljb24tb25seVwiPnJlZnJlc2g8L21hdC1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvaW9uLWJ1dHRvbnM+XG48L2FwcC10b29sYmFyPlxuXG48aW9uLWNvbnRlbnQ+XG5cbiAgPCEtLSBlcnJvciAtLT5cbiAgPGlvbi1pdGVtICpuZ0lmPVwiZXJyb3IgJiYgbW9iaWxlXCIgbGluZXM9XCJub25lXCI+XG4gICAgPGlvbi1pY29uIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cInN0YXJ0XCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiPjwvaW9uLWljb24+XG4gICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIVE1MXT1cImVycm9yfHRyYW5zbGF0ZVwiPjwvaW9uLWxhYmVsPlxuICA8L2lvbi1pdGVtPlxuXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIG5vdmFsaWRhdGUgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxuXG4gICAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwIFsoc2VsZWN0ZWRJbmRleCldPVwic2VsZWN0ZWRUYWJJbmRleFwiIGR5bmFtaWNIZWlnaHQ+XG5cbiAgICAgIDwhLS0gVEFCOiB1c2VyIGRldGFpbHMgLS0+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cInt7J0FDQ09VTlQuVVNFUl9ERVRBSUxTLlRJVExFJ3x0cmFuc2xhdGV9fVwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgPGlvbi1pY29uIG1hdFByZWZpeCBzbG90PVwic3RhcnRcIiBuYW1lPVwicGVyc29uLWNpcmNsZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8aW9uLWxhYmVsPnt7J0FDQ09VTlQuVVNFUl9ERVRBSUxTLlRJVExFJ3x0cmFuc2xhdGV9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiIGNvbG9yPVwiZGFuZ2VyXCIgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZm9ybS5pbnZhbGlkXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cblxuICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiJ0FDQ09VTlQuVVNFUl9ERVRBSUxTLkRFU0NSSVBUSU9OJ3x0cmFuc2xhdGVcIj48L3A+XG5cbiAgICAgICAgICA8IS0taDE+SWRlbnRpdMOpPC9oMS0tPlxuXG4gICAgICAgICAgPCEtLSBFbWFpbCAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidVU0VSLkVNQUlMJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgYXV0b2NvbXBsZXRlPVwic2VjdGlvbi1yZWQgZW1haWxcIj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmVtYWlsLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIGZvcm0uY29udHJvbHMuZW1haWwuZGlydHlcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmVtYWlsLmhhc0Vycm9yKCdlbWFpbCcpICYmIGZvcm0uY29udHJvbHMuZW1haWwuZGlydHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3snRVJST1IuRklFTERfTk9UX1ZBTElEX0VNQUlMJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8aW9uLWdyaWQgKm5nSWY9XCJlbWFpbC5ub3RDb25maXJtZWRcIiBjbGFzcz1cImlvbi1uby1wYWRkaW5nIGlvbi1wYWRkaW5nLWJvdHRvbVwiPlxuICAgICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICAgIDxpb24tY29sIGNvbG9yPVwiZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIGNvbG9yPVwiZGFuZ2VyXCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiIGNvbG9yPVwiZGFuZ2VyXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgW2lubmVySFRNTF09XCInQUNDT1VOVC5FTUFJTF9OT1RfQ09ORklSTUVEX0xBQkVMJ3x0cmFuc2xhdGVcIj48L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICA8L2lvbi1yb3c+XG5cbiAgICAgICAgICAgIDxpb24tcm93IHN0eWxlPVwiaGVpZ2h0OiA1MXB4O1wiPlxuICAgICAgICAgICAgICA8aW9uLWNvbCBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0O1wiPlxuICAgICAgICAgICAgICAgIDxpb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbCBbaW5uZXJIVE1MXT1cIidBQ0NPVU5ULkVNQUlMX05PVF9SRUNFSVZFRF9RVUVTVElPTid8dHJhbnNsYXRlXCI+PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cInNvbGlkXCIgY29sb3I9XCJzZWNvbmRhcnlcIiAqbmdJZj1cIiFlbWFpbC5zZW5kaW5nXCIgKGNsaWNrKT1cInNlbmRDb25maXJtYXRpb25FbWFpbCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICB7eydBQ0NPVU5ULkJUTl9SRVNFTkQnfHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCIgKm5nSWY9XCJlbWFpbC5zZW5kaW5nXCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPC9pb24tcm93PlxuXG4gICAgICAgICAgICA8aW9uLXJvdyAqbmdJZj1cImVtYWlsLmVycm9yICYmICFlbWFpbC5zZW5kaW5nXCI+XG4gICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW1haWwuZXJyb3IgJiYgIWVtYWlsLnNlbmRpbmdcIiBbaW5uZXJIVE1MXT1cImVtYWlsLmVycm9yfHRyYW5zbGF0ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgIDwvaW9uLWdyaWQ+XG5cbiAgICAgICAgICA8IS0tIExhc3QgbmFtZSAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2FwcEF1dG9mb2N1c109XCJ0cnVlXCIgW2F1dG9mb2N1c0RlbGF5XT1cIjUwMFwiIFtwbGFjZWhvbGRlcl09XCInVVNFUi5MQVNUX05BTUUnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cInNlY3Rpb24tYmx1ZSBmYW1pbHktbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5sYXN0TmFtZS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBmb3JtLmNvbnRyb2xzLmxhc3ROYW1lLmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmxhc3ROYW1lLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSAmJiBmb3JtLmNvbnRyb2xzLmxhc3ROYW1lLmRpcnR5XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7J0VSUk9SLkZJRUxEX01JTl9MRU5HVEgnIHwgdHJhbnNsYXRlOiB7bWluTGVuZ3RoOiAyfSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIEZpcnN0IG5hbWUgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInVVNFUi5GSVJTVF9OQU1FJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIiBhdXRvY29tcGxldGU9XCJzZWN0aW9uLWJsdWUgZ2l2ZW4tbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5maXJzdE5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgZm9ybS5jb250cm9scy5maXJzdE5hbWUuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSAmJiBmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5kaXJ0eVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eydFUlJPUi5GSUVMRF9NSU5fTEVOR1RIJyB8IHRyYW5zbGF0ZToge21pbkxlbmd0aDogMn0gfX08L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG5cbiAgICAgICAgICA8IS0tIEFkZGl0aW9uYWwgZmllbGRzIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRlZmluaXRpb24gb2YgYWRkaXRpb25hbEZpZWxkc1wiPlxuICAgICAgICAgICAgPGFwcC1mb3JtLWZpZWxkIFtkZWZpbml0aW9uXT1cImRlZmluaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGVmaW5pdGlvbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJkZWZpbml0aW9uLmV4dHJhICYmIGRlZmluaXRpb24uZXh0cmEuYWNjb3VudCAmJiBkZWZpbml0aW9uLmV4dHJhLmFjY291bnQucmVxdWlyZWQgfHwgZmFsc2VcIj5cbiAgICAgICAgICAgIDwvYXBwLWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8aDMgdHJhbnNsYXRlPkFDQ09VTlQuVVNFUl9ERVRBSUxTLlRFQ0hOSUNBTF9ESVZJREVSPC9oMz5cblxuICAgICAgICAgIDwhLS0gcHJvZmlsZSAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIHJlYWRvbmx5PVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCInQUNDT1VOVC5VU0VSX0RFVEFJTFMuUFJPRklMRSd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYWluUHJvZmlsZVwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgPHNwYW4+e3snVVNFUi5QUk9GSUxFX0VOVU0uJyArIGZvcm0uY29udHJvbHMubWFpblByb2ZpbGUudmFsdWUgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5oYXNFcnJvcignbWFpblByb2ZpbGUnKSAmJiBmb3JtLmNvbnRyb2xzLm1haW5Qcm9maWxlLmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBwdWJrZXkgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHJlYWRvbmx5PVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCInQUNDT1VOVC5VU0VSX0RFVEFJTFMuUFVCS0VZJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJwdWJrZXlcIlxuICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmhhc0Vycm9yKCdwdWJrZXknKSAmJiBmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5maXJzdE5hbWUuaGFzRXJyb3IoJ3B1YmtleScpICYmIGZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmRpcnR5XCI+XG4gICAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9OT1RfVkFMSURfUFVCS0VZPC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cblxuICAgICAgPCEtLSBUQUI6IHNldHRpbmdzIC0tPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eydBQ0NPVU5ULlNFVFRJTkdTLlRJVExFJ3x0cmFuc2xhdGV9fVwiIGZvcm1Hcm91cE5hbWU9XCJzZXR0aW5nc1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICA8aW9uLWljb24gbWF0UHJlZml4IHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJzZXR0aW5nc1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5BQ0NPVU5ULlNFVFRJTkdTLlRJVExFPC9pb24tbGFiZWw+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG5cbiAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cIidBQ0NPVU5ULlNFVFRJTkdTLkRFU0NSSVBUSU9OJ3x0cmFuc2xhdGVcIj48L3A+XG5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ0FDQ09VTlQuU0VUVElOR1MuTE9DQUxFJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJsb2NhbGVcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9jYWxlc1wiIFt2YWx1ZV09XCJpdGVtLmtleVwiPlxuICAgICAgICAgICAgICAgIHt7aXRlbS52YWx1ZX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZXR0aW5nc0Zvcm0/LmNvbnRyb2xzLmxvY2FsZS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBzZXR0aW5nc0Zvcm0/LmNvbnRyb2xzLmxvY2FsZS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDwhLS0gbGF0L2xvbmcgZm9ybWF0LS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidBQ0NPVU5ULlNFVFRJTkdTLkxBVF9MT05HX0ZPUk1BVCd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwibGF0TG9uZ0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGF0TG9uZ0Zvcm1hdHNcIiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgIHt7J0NPTU1PTi5MQVRfTE9ORy4nICsgaXRlbSArICdfUExBQ0VIT0xERVInfHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZXR0aW5nc0Zvcm0/LmNvbnRyb2xzLmxhdExvbmdGb3JtYXQuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgc2V0dGluZ3NGb3JtPy5jb250cm9scy5sYXRMb25nRm9ybWF0LmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gT3B0aW9ucyB0YWJsZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbnMtdGFibGVcIj5cbiAgICAgICAgICA8YXBwLXByb3BlcnRpZXMtdGFibGVcbiAgICAgICAgICAgICNwcm9wZXJ0aWVzVGFibGVcbiAgICAgICAgICAgIGkxOG5Db2x1bW5QcmVmaXg9XCJBQ0NPVU5ULlNFVFRJTkdTLk9QVElPTlMuXCJcbiAgICAgICAgICAgIFtkZWZpbml0aW9uc109XCJvcHRpb25EZWZpbml0aW9uc1wiXG4gICAgICAgICAgICBbY2FuRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIChvbkRpcnR5KT1cIiRldmVudCA/IG1hcmtBc0RpcnR5KCkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgID48L2FwcC1wcm9wZXJ0aWVzLXRhYmxlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9tYXQtdGFiPlxuICAgIDwvbWF0LXRhYi1ncm91cD5cblxuXG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGFwcC1mb3JtLWJ1dHRvbnMtYmFyIChvbkNhbmNlbCk9XCJjYW5jZWwoKVwiIChvblNhdmUpPVwic2F2ZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIiFmb3JtLmRpcnR5IHx8ICF2YWxpZCB8fCBzYXZpbmdcIj5cbiAgICA8IS0tIGVycm9yIC0tPlxuICAgIDxpb24taXRlbSAqbmdJZj1cImVycm9yICYmICFtb2JpbGVcIiBsaW5lcz1cIm5vbmVcIj5cbiAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIVE1MXT1cImVycm9yfHRyYW5zbGF0ZVwiPjwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG4gIDwvYXBwLWZvcm0tYnV0dG9ucy1iYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
|