tnx-shared 5.1.233 → 5.1.237
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/bundles/tnx-shared.umd.js +154 -23
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/components/autocomplete-picker/autocomplete-picker.component.d.ts +7 -1
- package/components/autocomplete-picker/autocomplete-picker.component.d.ts.map +1 -1
- package/components/cocautochuc/cocautochuc-picker-list/cocautochuc-picker-list.component.d.ts +1 -0
- package/components/cocautochuc/cocautochuc-picker-list/cocautochuc-picker-list.component.d.ts.map +1 -1
- package/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.d.ts +10 -5
- package/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.d.ts.map +1 -1
- package/components/user-picker/user-picker-box/user-picker-box.component.d.ts +1 -0
- package/components/user-picker/user-picker-box/user-picker-box.component.d.ts.map +1 -1
- package/components/user-picker/user-picker.component.d.ts +8 -1
- package/components/user-picker/user-picker.component.d.ts.map +1 -1
- package/components/workflow/models/models.d.ts +3 -0
- package/components/workflow/models/models.d.ts.map +1 -1
- package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts.map +1 -1
- package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts +2 -2
- package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts.map +1 -1
- package/esm2015/components/autocomplete-picker/autocomplete-picker.component.js +36 -3
- package/esm2015/components/cocautochuc/cocautochuc-picker-list/cocautochuc-picker-list.component.js +3 -2
- package/esm2015/components/crud/crud-form/crud-form.component.js +2 -2
- package/esm2015/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.js +41 -15
- package/esm2015/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.js +2 -2
- package/esm2015/components/user-picker/user-picker-box/user-picker-box.component.js +3 -2
- package/esm2015/components/user-picker/user-picker.component.js +39 -4
- package/esm2015/components/workflow/models/models.js +1 -1
- package/esm2015/components/workflow/process-workflow-form/process-workflow-form.component.js +5 -2
- package/esm2015/components/workflow/process-workflow-target/process-workflow-target.component.js +13 -2
- package/fesm2015/tnx-shared.js +133 -23
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.metadata.json +1 -1
|
@@ -6,10 +6,10 @@ import { ComponentContextService } from '../../app-context/component-context.ser
|
|
|
6
6
|
import { ComponentBase } from '../../classes/base/component-base';
|
|
7
7
|
import { CrudListSetting, DropdownControlSchema, DropdownOptions, EntityPickerColumn, EntityPickerControlSchema, HeightType, Operator, PopupSize, UserPickerControlSchema } from '../../classes/form-schema';
|
|
8
8
|
import { Filter } from '../../models/grid-info';
|
|
9
|
+
import { DmChucVuService } from '../../services/dm-chucvu.service';
|
|
9
10
|
import { UserV5Service } from '../../services/user-v5.service';
|
|
10
11
|
import { appendDefaultFilter } from '../../utils/common';
|
|
11
12
|
import { AdvanceDataEntityPicker } from '../entity-picker/model/advance-data';
|
|
12
|
-
import { DmChucVuService } from '../../services/dm-chucvu.service';
|
|
13
13
|
export class UserPickerComponent extends ComponentBase {
|
|
14
14
|
constructor(_injector, _userV5Service, _translateService, _dm_ChucVuService) {
|
|
15
15
|
super(_injector);
|
|
@@ -42,6 +42,14 @@ export class UserPickerComponent extends ComponentBase {
|
|
|
42
42
|
this.searchSchema = {};
|
|
43
43
|
this.searchData = {};
|
|
44
44
|
}
|
|
45
|
+
set readOnlyValues(value) {
|
|
46
|
+
this._readOnlyValues = value;
|
|
47
|
+
this.updateFuncCheckReadOnlyItem();
|
|
48
|
+
this.updateReadOnlyItem();
|
|
49
|
+
}
|
|
50
|
+
get readOnlyValues() {
|
|
51
|
+
return this._readOnlyValues;
|
|
52
|
+
}
|
|
45
53
|
ngOnInit() {
|
|
46
54
|
this.control._component = this;
|
|
47
55
|
this.controlPicker = new EntityPickerControlSchema(Object.assign(Object.assign({}, this.control), { field: 'arrIdNguoiDung', label: 'Người dùng', title: 'Chọn người dùng', baseService: this._userV5Service, required: true, displayField: this.control.getDisplayName ? 'displayName' : 'fullNameNew', fieldPlus: this.control.fieldPlus ? `${this.control.fieldPlus},maChucVu` : 'maChucVu', valueField: this.control.valueField, defaultFilters: this.control.defaultFilters, multiple: this.control.multiple, funcGetLabel: (item) => {
|
|
@@ -118,8 +126,17 @@ export class UserPickerComponent extends ComponentBase {
|
|
|
118
126
|
this.buildFilterKeyword();
|
|
119
127
|
this.buildSettingEntityPicker();
|
|
120
128
|
this.createSchemaSearch();
|
|
129
|
+
this.updateFuncCheckReadOnlyItem();
|
|
121
130
|
this.onReady.emit();
|
|
122
131
|
}
|
|
132
|
+
updateFuncCheckReadOnlyItem() {
|
|
133
|
+
if (this.readOnlyValues && this.readOnlyValues.length) {
|
|
134
|
+
this.funcCheckReadOnlyItem = this._funcCheckReadOnlyItem;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
this.funcCheckReadOnlyItem = (item) => { };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
123
140
|
createSchemaSearch() {
|
|
124
141
|
return __awaiter(this, void 0, void 0, function* () {
|
|
125
142
|
this.searchSchema.idChucVus = new DropdownControlSchema({
|
|
@@ -329,9 +346,26 @@ export class UserPickerComponent extends ComponentBase {
|
|
|
329
346
|
this.dirty = true;
|
|
330
347
|
this.fireChangeEvent();
|
|
331
348
|
}
|
|
349
|
+
_funcCheckReadOnlyItem(item) {
|
|
350
|
+
if (this.readOnlyValues.some(q => q == item.value[this.control.valueField])) {
|
|
351
|
+
item._disabled = true;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
updateReadOnlyItem() {
|
|
355
|
+
if (this.control.multiple && this.selectedValueObject) {
|
|
356
|
+
this.selectedValueObject.forEach(item => {
|
|
357
|
+
this.funcCheckReadOnlyItem(item);
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
}
|
|
332
361
|
updateSelectedValue() {
|
|
333
362
|
if (this.controlPicker.multiple) {
|
|
334
|
-
|
|
363
|
+
const selectedValue = [];
|
|
364
|
+
this.selectedValueObject.forEach(item => {
|
|
365
|
+
selectedValue.push(item.value);
|
|
366
|
+
this.funcCheckReadOnlyItem(item);
|
|
367
|
+
});
|
|
368
|
+
this.selectedValue = selectedValue;
|
|
335
369
|
}
|
|
336
370
|
else {
|
|
337
371
|
if (this.selectedValueObject == null) {
|
|
@@ -500,7 +534,7 @@ export class UserPickerComponent extends ComponentBase {
|
|
|
500
534
|
UserPickerComponent.decorators = [
|
|
501
535
|
{ type: Component, args: [{
|
|
502
536
|
selector: 'user-picker',
|
|
503
|
-
template: "<div class=\"p-inputgroup user-picker\" [class.multiple]=\"multiple\" [class.hasValue]=\"hasValue\">\r\n <div style=\"width: calc(100% - 28px)\" [pTooltip]=\"tooltip\" tooltipPosition=\"top\">\r\n <p-autoComplete emptyMessage=\"Kh\u00F4ng c\u00F3 k\u1EBFt qu\u1EA3 n\u00E0o\" [ngClass]=\"'custom-autocomplete'\" [disabled]=\"disabled\"\r\n [placeholder]=\"control.placeholder\" [appendTo]=\"control.appendTo\" [suggestions]=\"results\" field=\"label\"\r\n [styleClass]=\"control.validators && control.required ? 'rq' : ''\" [multiple]=\"control.multiple\"\r\n [minLength]=\"2\" [(ngModel)]=\"selectedValueObject\" (onFocus)=\"handleFocus($event)\"\r\n (onBlur)=\"handleBlur($event)\" (completeMethod)=\"search($event)\" (onKeyUp)=\"handleKeyUp($event)\"\r\n (onSelect)=\"handleSelect($event)\" (onUnselect)=\"handleUnSelect($event)\">\r\n </p-autoComplete>\r\n </div>\r\n <span *ngIf=\"!control.multiple && !disabled && hasValue\" class=\"icon-clear\" (click)=\"clearValue()\"><i\r\n class=\"fas fa-times\"></i></span>\r\n <button class=\"custom-autocomplete-button\" [disabled]=\"disabled\" tabindex=\"-1\" (click)=\"showPickForm()\" pButton\r\n [pTooltip]=\"control.title\" icon=\"fas fa-external-link-alt\" type=\"button\"></button>\r\n</div>\r\n<tn-dialog #dialog *ngIf=\"showFormPicker\" styleClass=\"user-picker-box-dialog no-padding\" [useDefaultScrollBar]=\"true\"\r\n [header]=\"control.title | translate\" [popupSize]=\"popupSize\" (onHide)=\"handleHide($event)\">\r\n <user-picker-box #userPickerBox [controlSetting]=\"control\" [control]=\"controlPicker\" [parentSetting]=\"settingPicker\"\r\n [advanceData]=\"advanceDataPicker\" [selectedValue]=\"selectedValue\"
|
|
537
|
+
template: "<div class=\"p-inputgroup user-picker\" [class.multiple]=\"multiple\" [class.hasValue]=\"hasValue\">\r\n <div style=\"width: calc(100% - 28px)\" [pTooltip]=\"tooltip\" tooltipPosition=\"top\">\r\n <p-autoComplete emptyMessage=\"Kh\u00F4ng c\u00F3 k\u1EBFt qu\u1EA3 n\u00E0o\" [ngClass]=\"'custom-autocomplete'\" [disabled]=\"disabled\"\r\n [placeholder]=\"control.placeholder\" [appendTo]=\"control.appendTo\" [suggestions]=\"results\" field=\"label\"\r\n [styleClass]=\"control.validators && control.required ? 'rq' : ''\" [multiple]=\"control.multiple\"\r\n [minLength]=\"2\" [(ngModel)]=\"selectedValueObject\" (onFocus)=\"handleFocus($event)\"\r\n (onBlur)=\"handleBlur($event)\" (completeMethod)=\"search($event)\" (onKeyUp)=\"handleKeyUp($event)\"\r\n (onSelect)=\"handleSelect($event)\" (onUnselect)=\"handleUnSelect($event)\">\r\n </p-autoComplete>\r\n </div>\r\n <span *ngIf=\"!control.multiple && !disabled && hasValue\" class=\"icon-clear\" (click)=\"clearValue()\"><i\r\n class=\"fas fa-times\"></i></span>\r\n <button class=\"custom-autocomplete-button\" [disabled]=\"disabled\" tabindex=\"-1\" (click)=\"showPickForm()\" pButton\r\n [pTooltip]=\"control.title\" icon=\"fas fa-external-link-alt\" type=\"button\"></button>\r\n</div>\r\n<tn-dialog #dialog *ngIf=\"showFormPicker\" styleClass=\"user-picker-box-dialog no-padding\" [useDefaultScrollBar]=\"true\"\r\n [header]=\"control.title | translate\" [popupSize]=\"popupSize\" (onHide)=\"handleHide($event)\">\r\n <user-picker-box #userPickerBox [controlSetting]=\"control\" [control]=\"controlPicker\" [parentSetting]=\"settingPicker\"\r\n [advanceData]=\"advanceDataPicker\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onChanged)=\"handleChangeEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleHide($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </user-picker-box>\r\n <ng-template #footer>\r\n <button type=\" button\" pButton class=\"p-button-text\" (click)=\"onClickSubmitButton($event, userPickerBox)\"\r\n [label]=\"'Ho\u00E0n th\u00E0nh'\" icon=\"pi pi-check\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n<ng-template #filterChucVuRef let-col=\"col\" let-filterData=\"filterData\" let-onSearch=\"onSearch\"\r\n let-onShowFilterDropdownPanel=\"onShowFilterDropdownPanel\" let-onHideFilterDropdownPanel=\"onHideFilterDropdownPanel\">\r\n <dropdown [control]=\"searchSchema.idChucVus\" [(value)]=\"filterData[col.field]\" (onHideSmartEvent)=\"onSearch()\"\r\n (onShow)=\"onShowFilterDropdownPanel($event)\" (onHideSmartEvent)=\"onHideFilterDropdownPanel($event)\">\r\n </dropdown>\r\n</ng-template>",
|
|
504
538
|
providers: [
|
|
505
539
|
{
|
|
506
540
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -524,6 +558,7 @@ UserPickerComponent.propDecorators = {
|
|
|
524
558
|
popupSize: [{ type: Input }],
|
|
525
559
|
multiple: [{ type: Input }],
|
|
526
560
|
disabled: [{ type: Input }],
|
|
561
|
+
readOnlyValues: [{ type: Input }],
|
|
527
562
|
onSelect: [{ type: Output, args: ['onSelect',] }],
|
|
528
563
|
onUnSelect: [{ type: Output, args: ['onUnSelect',] }],
|
|
529
564
|
onChanged: [{ type: Output, args: ['onChanged',] }],
|
|
@@ -531,4 +566,4 @@ UserPickerComponent.propDecorators = {
|
|
|
531
566
|
onBlur: [{ type: Output, args: ['onBlur',] }],
|
|
532
567
|
onReady: [{ type: Output, args: ['onReady',] }]
|
|
533
568
|
};
|
|
534
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdXNlci1waWNrZXIvdXNlci1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFFSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULHVCQUF1QixFQUMxQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBZW5FLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxhQUFhO0lBOENsRCxZQUNJLFNBQW1CLEVBQ1osY0FBNkIsRUFDNUIs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Q29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQge1xyXG4gICAgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSxcclxuICAgIENydWRMaXN0U2V0dGluZyxcclxuICAgIERyb3Bkb3duQ29udHJvbFNjaGVtYSxcclxuICAgIERyb3Bkb3duT3B0aW9ucyxcclxuICAgIEVudGl0eVBpY2tlckNvbHVtbixcclxuICAgIEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEsXHJcbiAgICBIZWlnaHRUeXBlLFxyXG4gICAgT3BlcmF0b3IsXHJcbiAgICBQb3B1cFNpemUsXHJcbiAgICBVc2VyUGlja2VyQ29udHJvbFNjaGVtYVxyXG59IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgVXNlclY1U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXItdjUuc2VydmljZSc7XHJcbmltcG9ydCB7IGFwcGVuZERlZmF1bHRGaWx0ZXIgfSBmcm9tICcuLi8uLi91dGlscy9jb21tb24nO1xyXG5pbXBvcnQgeyBBZHZhbmNlRGF0YUVudGl0eVBpY2tlciB9IGZyb20gJy4uL2VudGl0eS1waWNrZXIvbW9kZWwvYWR2YW5jZS1kYXRhJztcclxuaW1wb3J0IHsgVXNlclBpY2tlckJveENvbXBvbmVudCB9IGZyb20gJy4vdXNlci1waWNrZXItYm94L3VzZXItcGlja2VyLWJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEbUNodWNWdVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kbS1jaHVjdnUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndXNlci1waWNrZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VzZXItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VzZXItcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBVc2VyUGlja2VyQ29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIENvbXBvbmVudENvbnRleHRTZXJ2aWNlXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VyUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyQ2h1Y1Z1UmVmJywgeyBzdGF0aWM6IHRydWUgfSkgZmlsdGVyQ2h1Y1Z1UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgb25DaGFuZ2VCYXNlOiBGdW5jdGlvbjtcclxuICAgIG9uVG91Y2hlZDogRnVuY3Rpb247XHJcblxyXG4gICAgQElucHV0KCkgY29udHJvbDogVXNlclBpY2tlckNvbnRyb2xTY2hlbWE7XHJcbiAgICBASW5wdXQoKSBwb3B1cFNpemU6IFBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoe1xyXG4gICAgICAgIHdpZHRoOiAxMTAwLFxyXG4gICAgICAgIGhlaWdodDogOTAwLFxyXG4gICAgICAgIG1heGltaXplOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgIEBPdXRwdXQoJ29uU2VsZWN0Jykgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCdvblVuU2VsZWN0Jykgb25VblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoJ29uQ2hhbmdlZCcpIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoJ29uRm9jdXMnKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgnb25CbHVyJykgb25CbHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgnb25SZWFkeScpIG9uUmVhZHk6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgY29udHJvbFBpY2tlcjogQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYTtcclxuICAgIHNldHRpbmdQaWNrZXI6IENydWRMaXN0U2V0dGluZyA9IG5ldyBDcnVkTGlzdFNldHRpbmcoKTtcclxuICAgIGFkdmFuY2VEYXRhUGlja2VyOiBBZHZhbmNlRGF0YUVudGl0eVBpY2tlciA9IG5ldyBBZHZhbmNlRGF0YUVudGl0eVBpY2tlcigpO1xyXG5cclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgICBmdW5jUmV0dXJuVmFsdWU6ICh2YWx1ZSkgPT4ge30gPSB2YWx1ZSA9PiB2YWx1ZTtcclxuICAgIHNlbGVjdGVkUm93RGF0YTogYW55O1xyXG4gICAgc2VsZWN0ZWRWYWx1ZTogYW55O1xyXG4gICAgc2VsZWN0ZWRWYWx1ZU9iamVjdDogYW55O1xyXG4gICAgZGF0YVNvdXJjZTogYW55W10gPSBbXTtcclxuXHJcbiAgICBmaWVsZFNlYXJjaFRleHQ6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgcmVzdWx0czogYW55W10gPSBbXTtcclxuXHJcbiAgICBzaG93Rm9ybVBpY2tlciA9IGZhbHNlO1xyXG4gICAgZGlydHkgPSBmYWxzZTtcclxuXHJcbiAgICB0b29sdGlwID0gJyc7XHJcbiAgICBoYXNWYWx1ZSA9IGZhbHNlO1xyXG4gICAgc2VhcmNoU2NoZW1hOiBhbnkgPSB7fTtcclxuICAgIHNlYXJjaERhdGE6IGFueSA9IHt9O1xyXG5cclxuICAgIHByaXZhdGUgZ2V0RmlsdGVyT25TZWFyY2g/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHB1YmxpYyBfdXNlclY1U2VydmljZTogVXNlclY1U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RtX0NodWNWdVNlcnZpY2U6IERtQ2h1Y1Z1U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5jb250cm9sUGlja2VyID0gbmV3IEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmNvbnRyb2wsXHJcbiAgICAgICAgICAgIGZpZWxkOiAnYXJySWROZ3VvaUR1bmcnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIGTDuW5nJyxcclxuICAgICAgICAgICAgdGl0bGU6ICdDaOG7jW4gbmfGsOG7nWkgZMO5bmcnLFxyXG4gICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclY1U2VydmljZSxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5jb250cm9sLmdldERpc3BsYXlOYW1lID8gJ2Rpc3BsYXlOYW1lJyA6ICdmdWxsTmFtZU5ldycsXHJcbiAgICAgICAgICAgIGZpZWxkUGx1czogdGhpcy5jb250cm9sLmZpZWxkUGx1cyA/IGAke3RoaXMuY29udHJvbC5maWVsZFBsdXN9LG1hQ2h1Y1Z1YCA6ICdtYUNodWNWdScsXHJcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6IHRoaXMuY29udHJvbC52YWx1ZUZpZWxkLFxyXG4gICAgICAgICAgICBkZWZhdWx0RmlsdGVyczogdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzLFxyXG4gICAgICAgICAgICBtdWx0aXBsZTogdGhpcy5jb250cm9sLm11bHRpcGxlLFxyXG4gICAgICAgICAgICBmdW5jR2V0TGFiZWw6IChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkgcmV0dXJuIHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5kaXNwbGF5TmFtZSA/PyB0aGlzLl91c2VyVjVTZXJ2aWNlLmdldFVzZXJOYW1lKGl0ZW0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBwYWdlU2l6ZTogdGhpcy5jb250cm9sLnBhZ2VTaXplLFxyXG4gICAgICAgICAgICAvLyBmaWVsZFBsdXM6ICdobyx0ZW4nLFxyXG4gICAgICAgICAgICAvLyBmaWVsZFNlYXJjaFRleHQ6IFsnaG8nLCAndGVuJ10sXHJcbiAgICAgICAgICAgIC8vIGFmdGVyR2V0RGF0YTogdGhpcy5nZW5lcmF0ZUhvVGVuLFxyXG4gICAgICAgICAgICAvLyBhZnRlckdldERhdGFVblBpY2tlZDogdGhpcy5nZW5lcmF0ZUhvVGVuLFxyXG4gICAgICAgICAgICAvLyBhZnRlckdldERhdGFQaWNrZWQ6IHRoaXMuZ2VuZXJhdGVIb1RlbixcclxuICAgICAgICAgICAgY29sdW1uczogW1xyXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdUw6BpIGtob+G6o24nLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICd1c2VyTmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7jSB2w6AgdMOqbicsXHJcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2Z1bGxOYW1lTmV3JyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxNjBweCdcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdIw7JtIHRoxrAnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdlbWFpbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTYwcHgnXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2jhu6ljIHbhu6UnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdsc3RUZW5DaHVjVnUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlRmlsdGVyOiB0aGlzLmZpbHRlckNodWNWdVJlZixcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2MHB4J1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0dp4bqjbmcgdmnDqm4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdpc0dpYW5nVmllbicsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzkwcHgnXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2h1ecOqbiB2acOqbicsXHJcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2lzQ2h1eWVuVmllbicsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzkwcHgnXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBtZFdpZHRoOiAxMlxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZmllbGRTZWFyY2hUZXh0ID0gWy4uLnRoaXMuY29udHJvbFBpY2tlci5maWVsZFNlYXJjaFRleHRdO1xyXG4gICAgICAgIGlmICghdGhpcy5maWVsZFNlYXJjaFRleHQuc29tZShpdGVtID0+IGl0ZW0gPT0gdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZFNlYXJjaFRleHQucHVzaCh0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5yZXR1cm5UeXBlID09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgdGhpcy5mdW5jUmV0dXJuVmFsdWUgPSAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSA9IHZhbHVlID0+IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJLZXl3b3JkKCk7XHJcbiAgICAgICAgdGhpcy5idWlsZFNldHRpbmdFbnRpdHlQaWNrZXIoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVNjaGVtYVNlYXJjaCgpO1xyXG5cclxuICAgICAgICB0aGlzLm9uUmVhZHkuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZVNjaGVtYVNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFNjaGVtYS5pZENodWNWdXMgPSBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgZmllbGQ6ICdpZENodWNWdXMnLFxyXG4gICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gY2jhu6ljIHbhu6UnLFxyXG4gICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1fQ2h1Y1Z1U2VydmljZSxcclxuICAgICAgICAgICAgc29ydEZpZWxkOiAnc29UaHVUdScsXHJcbiAgICAgICAgICAgIGxvYWRPbkluaXQ6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZEZpbHRlcktleXdvcmQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGRTZWFyY2hUZXh0Lmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmlsdGVyT25TZWFyY2ggPSB2YWx1ZSA9PiB0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkLCBPcGVyYXRvci5jb250YWluLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlck9uU2VhcmNoID0gdmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW11cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZFNlYXJjaCBvZiB0aGlzLmZpZWxkU2VhcmNoVGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoZmllbGRTZWFyY2gsIE9wZXJhdG9yLmNvbnRhaW4sIHZhbHVlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBidWlsZFNldHRpbmdFbnRpdHlQaWNrZXIoKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmNvbHMgPSBbXTtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIudGl0bGUgPSAnJztcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLnBhZ2VTaXplKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5wYWdlU2V0dGluZy5wYWdlU2l6ZSA9IHRoaXMuY29udHJvbFBpY2tlci5wYWdlU2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmJhc2VTZXJ2aWNlID0gdGhpcy5jb250cm9sUGlja2VyLmJhc2VTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5oaWRkZW5DaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLnNldHRpbmdLZXkgPSAndXNlclBpY2tlcic7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhpZGRlblNldHRpbmdXb3JrZmxvdyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhpZGRlblNldHRpbmdQZXJtaXNzaW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuZmllbGRTZWFyY2hUZXh0ID0gdGhpcy5jb250cm9sUGlja2VyLmZpZWxkU2VhcmNoVGV4dDtcclxuICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNEaXNwbGF5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmNvbHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IGNvbHVtbi5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGNvbHVtbi5sYWJlbCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiBjb2x1bW4uYmFzZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6IGNvbHVtbi52YWx1ZUZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6IGNvbHVtbi5kaXNwbGF5RmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkUGx1czogY29sdW1uLmZpZWxkUGx1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydEZpZWxkOiBjb2x1bW4uc29ydEZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0RGlyOiBjb2x1bW4uc29ydERpcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY0dldExhYmVsOiBjb2x1bW4uZnVuY0dldExhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBjb2x1bW4uZGF0YVNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBDb2RlOiBjb2x1bW4uZ3JvdXBDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuY29scy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29sdW1uLmxhYmVsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hZHZhbmNlRGF0YVBpY2tlci5maWVsZHMgPSB0aGlzLmdldEZpZWxkcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEzhuqV5IHVuaW9uIGPhu6dhOiBzZWxlY3RlZEZpZWxkLCBmaWVsZFBsdXMsIGRpc3BsYXkgZmllbGRzIGPDsyB0cm9uZyB0YWJsZS5cclxuICAgIGdldEZpZWxkcygpIHtcclxuICAgICAgICBjb25zdCBhcnJGaWVsZDogc3RyaW5nW10gPSBbdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCwgJ2lkJ107XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkICYmIHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkICE9ICdpZCcpIHtcclxuICAgICAgICAgICAgYXJyRmllbGQucHVzaCh0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLmZpZWxkUGx1cykge1xyXG4gICAgICAgICAgICBhcnJGaWVsZC5wdXNoKC4uLnRoaXMuY29udHJvbFBpY2tlci5maWVsZFBsdXMuc3BsaXQoJywnKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBhcnJEaXNwbGF5RmllbGQgPSB0aGlzLmNvbnRyb2xQaWNrZXIuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmlzRGlzcGxheSA9PSB0cnVlICYmICF4Lm5vdEluRmllbGRzICYmIHguZGF0YVR5cGUgIT0gJ2N1c3RvbScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoeCA9PiB4LmNvZGUpO1xyXG5cclxuICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLmFkZERpc3RpbmN0KGFyckRpc3BsYXlGaWVsZCwgYXJyRmllbGQpO1xyXG4gICAgICAgIHJldHVybiBhcnJGaWVsZC50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERyb3Bkb3duT3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gbmV3IERyb3Bkb3duT3B0aW9ucyh7XHJcbiAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCxcclxuICAgICAgICAgICAgdmFsdWVGaWVsZDogdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgIGZpZWxkUGx1czogdGhpcy5jb250cm9sUGlja2VyLmZpZWxkUGx1cyxcclxuICAgICAgICAgICAgZnVuY0dldExhYmVsOiB0aGlzLmNvbnRyb2xQaWNrZXIuZnVuY0dldExhYmVsLFxyXG4gICAgICAgICAgICBwbHVzVXJsOiB0aGlzLmNvbnRyb2xQaWNrZXIucGx1c1VybFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNob3dQaWNrRm9ybSgpIHtcclxuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybVBpY2tlciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGF0YShrZXlXb3JkKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLm5vdEluLCB0aGlzLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLm5vdEVxdWFsLCB0aGlzLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGF3YWl0IGFwcGVuZERlZmF1bHRGaWx0ZXIoZmlsdGVycywgdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzKTtcclxuICAgICAgICBpZiAoa2V5V29yZCAmJiBrZXlXb3JkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMuZ2V0RmlsdGVyT25TZWFyY2goa2V5V29yZCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sUGlja2VyLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxyXG4gICAgICAgICAgICBmaWx0ZXJzLCB0aGlzLmdldERyb3Bkb3duT3B0aW9ucygpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlU3RydWN0dXJlRGF0YVNvdXJjZShkYXRhU291cmNlKTtcclxuICAgICAgICB0aGlzLnJlc3VsdHMgPSB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgLy8gUmV0dXJuIMSR4buDIG3hu5l0IHPhu5EgbsahaSBraMOhYyBkw7luZywgayByZW1vdmVcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRzO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaChldmVudCkge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YShldmVudC5xdWVyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJWYWx1ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XHJcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5oYXNWYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25VblNlbGVjdC5lbWl0KHtcclxuICAgICAgICAgICAgaXRlbTogdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZFZhbHVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVSb3dTZWxlY3QoaXRlbSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0RhdGEgPSBpdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNlbGVjdCBpdGVtIGPhu6dhIGF1dG9jb21wbGV0ZVxyXG4gICAgaGFuZGxlU2VsZWN0KGl0ZW0pIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICBjb25zdCBldnQgPSB7XHJcbiAgICAgICAgICAgIGl0ZW0sXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVmFsdWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMub25TZWxlY3QuZW1pdChldnQpO1xyXG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZUV2ZW50KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjayAmJiB0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2suc2VsZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjay5zZWxlY3QoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIELhu48gc2VsZWN0IGl0ZW0gY+G7p2EgYXV0b2NvbXBsZXRlXHJcbiAgICBoYW5kbGVVblNlbGVjdCgkZXZlbnQpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICBjb25zdCBldnQgPSB7XHJcbiAgICAgICAgICAgIGl0ZW06ICRldmVudCxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRWYWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5vblVuU2VsZWN0LmVtaXQoZXZ0KTtcclxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2VFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUZvY3VzKGV2dCkge1xyXG4gICAgICAgIGlmIChldnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGV2dC50YXJnZXQuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQmx1cigkZXZlbnQpIHtcclxuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlS2V5VXAoZXZ0KSB7XHJcbiAgICAgICAgbGV0IGhpZGVTdWdnZXNzaW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaGlkZVN1Z2dlc3Npb25zID0gZXZ0LnRhcmdldC5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5jaGlsZEVsZW1lbnRDb3VudCA9PSAxO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAmJiBldnQua2V5Q29kZSA9PSA0MCAmJiBoaWRlU3VnZ2Vzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoaWRlU3VnZ2Vzc2lvbnMgPSBldnQudGFyZ2V0LnBhcmVudE5vZGUuY2hpbGRFbGVtZW50Q291bnQgPT0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChldnQudGFyZ2V0LnZhbHVlID09ICcnICYmIGhpZGVTdWdnZXNzaW9ucyAmJiBldnQua2V5Q29kZSAhPSA0MCAmJiBldnQua2V5Q29kZSAhPSAzOCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIHNlbGVjdCBpdGVtIHRyb25nIGVudGl0eSBwaWNrZXIgYm94IChLaMO0bmcgY+G6p24gZW1pdCBjaGFuZ2UpXHJcbiAgICBoYW5kbGVTZWxlY3RFbnRpdHkoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIHVuc2VsZWN0IGl0ZW0gdHJvbmcgZW50aXR5IHBpY2tlciBib3ggKEtow7RuZyBj4bqnbiBlbWl0IGNoYW5nZSlcclxuICAgIGhhbmRsZVVuU2VsZWN0RW50aXR5KGV2dCkge1xyXG4gICAgICAgIHRoaXMub25VblNlbGVjdC5lbWl0KGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIGNoYW5nZSBpdGVtIHRyb25nIGVudGl0eSBwaWNrZXIgYm94XHJcbiAgICBoYW5kbGVDaGFuZ2VFbnRpdHkoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gZXZ0LnZhbHVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHVyZVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTZWxlY3RlZFZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0Lm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LnZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlUHVyZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHVyZVZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkXSk7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlW3RoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFZhbHVlUmV0dXJuKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpcmVDaGFuZ2VFdmVudCgpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZVJldHVybiA9IHRoaXMuZ2V0VmFsdWVSZXR1cm4oKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlQmFzZSh2YWx1ZVJldHVybik7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVJldHVyblxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGhhbmRsZUhpZGUoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybVBpY2tlciA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmRpcnR5KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gW107XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sUGlja2VyLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCwgT3BlcmF0b3IuaW4sIHRoaXMudmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gW107XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5lcXVhbCwgdGhpcy52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgdGhpcy5nZXREcm9wZG93bk9wdGlvbnMoKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlU3RydWN0dXJlRGF0YVNvdXJjZShkYXRhU291cmNlKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IHRoaXMuZGF0YVNvdXJjZVswXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QubGFiZWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2tTdWJtaXRCdXR0b24oZXZ0LCB1c2VyUGlja2VyQm94OiBVc2VyUGlja2VyQm94Q29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUhpZGUoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJvd0RhdGEpIHtcclxuICAgICAgICAgICAgdXNlclBpY2tlckJveFxyXG4gICAgICAgICAgICAmJiB1c2VyUGlja2VyQm94LmVudGl0eVBpY2tlckJveFxyXG4gICAgICAgICAgICAmJiB1c2VyUGlja2VyQm94LmVudGl0eVBpY2tlckJveC5oYW5kbGVQaWNrKHRoaXMuc2VsZWN0ZWRSb3dEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm1QaWNrZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyByZVN0cnVjdHVyZURhdGFTb3VyY2Uoc291cmNlczogYW55W10pIHtcclxuICAgICAgICBpZiAoc291cmNlcyAhPSBudWxsICYmIHNvdXJjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyBM4bqleSB0aMOqbSB0aMO0bmcgdGluIGNo4bupYyB24bulIMSR4buDIGhp4buDbiB0aOG7i1xyXG4gICAgICAgICAgICBjb25zdCBhcnIgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5yZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gYXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlU3RydWN0dXJlSXRlbU9iamVjdChpdGVtKTogU2VsZWN0SXRlbSB7XHJcbiAgICAgICAgY29uc3QgdGVtcDogU2VsZWN0SXRlbSA9IHsgdmFsdWU6IGl0ZW0gfTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkge1xyXG4gICAgICAgICAgICB0ZW1wLmxhYmVsID0gdGhpcy5jb250cm9sUGlja2VyLmZ1bmNHZXRMYWJlbChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRlbXAubGFiZWwgPSBpdGVtLm1hQ2h1Y1Z1ID8gYCR7aXRlbS5tYUNodWNWdX0uICR7aXRlbVt0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkXX1gIDogaXRlbVt0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcC52YWx1ZS5fZHJvcGRvd252YWx1ZSA9IHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkO1xyXG4gICAgICAgIHJldHVybiB0ZW1wO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHdyaXRlVmFsdWUob2JqOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAob2JqICE9IG51bGwgJiYgb2JqLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnM6IEZpbHRlcltdID0gW107XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmluLCBvYmopKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGFwcGVuZERlZmF1bHRGaWx0ZXIoZmlsdGVycywgdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcclxuICAgICAgICAgICAgICAgICkudGhlbihhc3luYyByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAob2JqICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICBbdGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmVxdWFsLCBvYmopXSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERyb3Bkb3duT3B0aW9ucygpXHJcbiAgICAgICAgICAgICAgICApLnRoZW4oYXN5bmMgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UocmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2VbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QubGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2sgJiYgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlQmFzZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
569
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdXNlci1waWNrZXIvdXNlci1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFFSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULHVCQUF1QixFQUMxQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBZ0I5RSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQXdEbEQsWUFDSSxTQUFtQixFQUNaLGNBQTZCLEVBQzVC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Q2xCLE1BQU0sU0FBQyxTQUFTO3FCQUNoQixNQUFNLFNBQUMsUUFBUTtzQkFDZixNQUFNLFNBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBTZWxlY3RJdGVtIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XHJcbmltcG9ydCB7XHJcbiAgICBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hLFxyXG4gICAgQ3J1ZExpc3RTZXR0aW5nLFxyXG4gICAgRHJvcGRvd25Db250cm9sU2NoZW1hLFxyXG4gICAgRHJvcGRvd25PcHRpb25zLFxyXG4gICAgRW50aXR5UGlja2VyQ29sdW1uLFxyXG4gICAgRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSxcclxuICAgIEhlaWdodFR5cGUsXHJcbiAgICBPcGVyYXRvcixcclxuICAgIFBvcHVwU2l6ZSxcclxuICAgIFVzZXJQaWNrZXJDb250cm9sU2NoZW1hXHJcbn0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBEbUNodWNWdVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kbS1jaHVjdnUuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJWNVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLXY1LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhcHBlbmREZWZhdWx0RmlsdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29tbW9uJztcclxuaW1wb3J0IHsgQWR2YW5jZURhdGFFbnRpdHlQaWNrZXIgfSBmcm9tICcuLi9lbnRpdHktcGlja2VyL21vZGVsL2FkdmFuY2UtZGF0YSc7XHJcbmltcG9ydCB7IFVzZXJQaWNrZXJCb3hDb21wb25lbnQgfSBmcm9tICcuL3VzZXItcGlja2VyLWJveC91c2VyLXBpY2tlci1ib3guY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd1c2VyLXBpY2tlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXNlci1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdXNlci1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFVzZXJQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ29tcG9uZW50Q29udGV4dFNlcnZpY2VcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJDaHVjVnVSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWx0ZXJDaHVjVnVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBvbkNoYW5nZUJhc2U6IEZ1bmN0aW9uO1xyXG4gICAgb25Ub3VjaGVkOiBGdW5jdGlvbjtcclxuXHJcbiAgICBASW5wdXQoKSBjb250cm9sOiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYTtcclxuICAgIEBJbnB1dCgpIHBvcHVwU2l6ZTogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSh7XHJcbiAgICAgICAgd2lkdGg6IDExMDAsXHJcbiAgICAgICAgaGVpZ2h0OiA5MDAsXHJcbiAgICAgICAgbWF4aW1pemU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBfcmVhZE9ubHlWYWx1ZXM6IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KCkgc2V0IHJlYWRPbmx5VmFsdWVzKHZhbHVlOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHRoaXMuX3JlYWRPbmx5VmFsdWVzID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGdW5jQ2hlY2tSZWFkT25seUl0ZW0oKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVJlYWRPbmx5SXRlbSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHJlYWRPbmx5VmFsdWVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkT25seVZhbHVlcztcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCdvblNlbGVjdCcpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgnb25VblNlbGVjdCcpIG9uVW5TZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCdvbkNoYW5nZWQnKSBvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCdvbkZvY3VzJykgb25Gb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoJ29uQmx1cicpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoJ29uUmVhZHknKSBvblJlYWR5OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIGNvbnRyb2xQaWNrZXI6IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWE7XHJcbiAgICBzZXR0aW5nUGlja2VyOiBDcnVkTGlzdFNldHRpbmcgPSBuZXcgQ3J1ZExpc3RTZXR0aW5nKCk7XHJcbiAgICBhZHZhbmNlRGF0YVBpY2tlcjogQWR2YW5jZURhdGFFbnRpdHlQaWNrZXIgPSBuZXcgQWR2YW5jZURhdGFFbnRpdHlQaWNrZXIoKTtcclxuXHJcbiAgICB2YWx1ZTogYW55O1xyXG4gICAgZnVuY1JldHVyblZhbHVlOiAodmFsdWUpID0+IHt9ID0gdmFsdWUgPT4gdmFsdWU7XHJcbiAgICBzZWxlY3RlZFJvd0RhdGE6IGFueTtcclxuICAgIHNlbGVjdGVkVmFsdWU6IGFueTtcclxuICAgIHNlbGVjdGVkVmFsdWVPYmplY3Q6IGFueTtcclxuICAgIGRhdGFTb3VyY2U6IGFueVtdID0gW107XHJcbiAgICBmdW5jQ2hlY2tSZWFkT25seUl0ZW06IChpdGVtOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4gICAgZmllbGRTZWFyY2hUZXh0OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIHJlc3VsdHM6IGFueVtdID0gW107XHJcblxyXG4gICAgc2hvd0Zvcm1QaWNrZXIgPSBmYWxzZTtcclxuICAgIGRpcnR5ID0gZmFsc2U7XHJcblxyXG4gICAgdG9vbHRpcCA9ICcnO1xyXG4gICAgaGFzVmFsdWUgPSBmYWxzZTtcclxuICAgIHNlYXJjaFNjaGVtYTogYW55ID0ge307XHJcbiAgICBzZWFyY2hEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgICBwcml2YXRlIGdldEZpbHRlck9uU2VhcmNoPzogRnVuY3Rpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwdWJsaWMgX3VzZXJWNVNlcnZpY2U6IFVzZXJWNVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbV9DaHVjVnVTZXJ2aWNlOiBEbUNodWNWdVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLl9jb21wb25lbnQgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuY29udHJvbFBpY2tlciA9IG5ldyBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgLi4udGhpcy5jb250cm9sLFxyXG4gICAgICAgICAgICBmaWVsZDogJ2FycklkTmd1b2lEdW5nJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSBkw7luZycsXHJcbiAgICAgICAgICAgIHRpdGxlOiAnQ2jhu41uIG5nxrDhu51pIGTDuW5nJyxcclxuICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJWNVNlcnZpY2UsXHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICBkaXNwbGF5RmllbGQ6IHRoaXMuY29udHJvbC5nZXREaXNwbGF5TmFtZSA/ICdkaXNwbGF5TmFtZScgOiAnZnVsbE5hbWVOZXcnLFxyXG4gICAgICAgICAgICBmaWVsZFBsdXM6IHRoaXMuY29udHJvbC5maWVsZFBsdXMgPyBgJHt0aGlzLmNvbnRyb2wuZmllbGRQbHVzfSxtYUNodWNWdWAgOiAnbWFDaHVjVnUnLFxyXG4gICAgICAgICAgICB2YWx1ZUZpZWxkOiB0aGlzLmNvbnRyb2wudmFsdWVGaWVsZCxcclxuICAgICAgICAgICAgZGVmYXVsdEZpbHRlcnM6IHRoaXMuY29udHJvbC5kZWZhdWx0RmlsdGVycyxcclxuICAgICAgICAgICAgbXVsdGlwbGU6IHRoaXMuY29udHJvbC5tdWx0aXBsZSxcclxuICAgICAgICAgICAgZnVuY0dldExhYmVsOiAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwpIHJldHVybiB0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZGlzcGxheU5hbWUgPz8gdGhpcy5fdXNlclY1U2VydmljZS5nZXRVc2VyTmFtZShpdGVtKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gcGFnZVNpemU6IHRoaXMuY29udHJvbC5wYWdlU2l6ZSxcclxuICAgICAgICAgICAgLy8gZmllbGRQbHVzOiAnaG8sdGVuJyxcclxuICAgICAgICAgICAgLy8gZmllbGRTZWFyY2hUZXh0OiBbJ2hvJywgJ3RlbiddLFxyXG4gICAgICAgICAgICAvLyBhZnRlckdldERhdGE6IHRoaXMuZ2VuZXJhdGVIb1RlbixcclxuICAgICAgICAgICAgLy8gYWZ0ZXJHZXREYXRhVW5QaWNrZWQ6IHRoaXMuZ2VuZXJhdGVIb1RlbixcclxuICAgICAgICAgICAgLy8gYWZ0ZXJHZXREYXRhUGlja2VkOiB0aGlzLmdlbmVyYXRlSG9UZW4sXHJcbiAgICAgICAgICAgIGNvbHVtbnM6IFtcclxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVMOgaSBraG/huqNuJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAndXNlck5hbWUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMHB4J1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu40gdsOgIHTDqm4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdmdWxsTmFtZU5ldycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTYwcHgnXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSMOybSB0aMawJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnZW1haWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2MHB4J1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyB24bulJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnbHN0VGVuQ2h1Y1Z1JyxcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUZpbHRlcjogdGhpcy5maWx0ZXJDaHVjVnVSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxNjBweCdcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdHaeG6o25nIHZpw6puJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnaXNHaWFuZ1ZpZW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICc5MHB4J1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NodXnDqm4gdmnDqm4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdpc0NodXllblZpZW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICc5MHB4J1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgbWRXaWR0aDogMTJcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpZWxkU2VhcmNoVGV4dCA9IFsuLi50aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRTZWFyY2hUZXh0XTtcclxuICAgICAgICBpZiAoIXRoaXMuZmllbGRTZWFyY2hUZXh0LnNvbWUoaXRlbSA9PiBpdGVtID09IHRoaXMuY29udHJvbFBpY2tlci5kaXNwbGF5RmllbGQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRTZWFyY2hUZXh0LnB1c2godGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wucmV0dXJuVHlwZSA9PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnVuY1JldHVyblZhbHVlID0gKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgdGhpcy5mdW5jUmV0dXJuVmFsdWUgPSB2YWx1ZSA9PiB2YWx1ZTtcclxuICAgICAgICB0aGlzLmJ1aWxkRmlsdGVyS2V5d29yZCgpO1xyXG4gICAgICAgIHRoaXMuYnVpbGRTZXR0aW5nRW50aXR5UGlja2VyKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTY2hlbWFTZWFyY2goKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZ1bmNDaGVja1JlYWRPbmx5SXRlbSgpO1xyXG4gICAgICAgIHRoaXMub25SZWFkeS5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRnVuY0NoZWNrUmVhZE9ubHlJdGVtKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5VmFsdWVzICYmIHRoaXMucmVhZE9ubHlWYWx1ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnVuY0NoZWNrUmVhZE9ubHlJdGVtID0gdGhpcy5fZnVuY0NoZWNrUmVhZE9ubHlJdGVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mdW5jQ2hlY2tSZWFkT25seUl0ZW0gPSAoaXRlbTogYW55KSA9PiB7IH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZVNjaGVtYVNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFNjaGVtYS5pZENodWNWdXMgPSBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgZmllbGQ6ICdpZENodWNWdXMnLFxyXG4gICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gY2jhu6ljIHbhu6UnLFxyXG4gICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1fQ2h1Y1Z1U2VydmljZSxcclxuICAgICAgICAgICAgc29ydEZpZWxkOiAnc29UaHVUdScsXHJcbiAgICAgICAgICAgIGxvYWRPbkluaXQ6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZEZpbHRlcktleXdvcmQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGRTZWFyY2hUZXh0Lmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmlsdGVyT25TZWFyY2ggPSB2YWx1ZSA9PiB0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkLCBPcGVyYXRvci5jb250YWluLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlck9uU2VhcmNoID0gdmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW11cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZFNlYXJjaCBvZiB0aGlzLmZpZWxkU2VhcmNoVGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoZmllbGRTZWFyY2gsIE9wZXJhdG9yLmNvbnRhaW4sIHZhbHVlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBidWlsZFNldHRpbmdFbnRpdHlQaWNrZXIoKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmNvbHMgPSBbXTtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIudGl0bGUgPSAnJztcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLnBhZ2VTaXplKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5wYWdlU2V0dGluZy5wYWdlU2l6ZSA9IHRoaXMuY29udHJvbFBpY2tlci5wYWdlU2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmJhc2VTZXJ2aWNlID0gdGhpcy5jb250cm9sUGlja2VyLmJhc2VTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5oaWRkZW5DaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLnNldHRpbmdLZXkgPSAndXNlclBpY2tlcic7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhpZGRlblNldHRpbmdXb3JrZmxvdyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhpZGRlblNldHRpbmdQZXJtaXNzaW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuZmllbGRTZWFyY2hUZXh0ID0gdGhpcy5jb250cm9sUGlja2VyLmZpZWxkU2VhcmNoVGV4dDtcclxuICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNEaXNwbGF5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmNvbHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IGNvbHVtbi5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGNvbHVtbi5sYWJlbCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiBjb2x1bW4uYmFzZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6IGNvbHVtbi52YWx1ZUZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6IGNvbHVtbi5kaXNwbGF5RmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkUGx1czogY29sdW1uLmZpZWxkUGx1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydEZpZWxkOiBjb2x1bW4uc29ydEZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0RGlyOiBjb2x1bW4uc29ydERpcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY0dldExhYmVsOiBjb2x1bW4uZnVuY0dldExhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBjb2x1bW4uZGF0YVNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBDb2RlOiBjb2x1bW4uZ3JvdXBDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuY29scy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29sdW1uLmxhYmVsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hZHZhbmNlRGF0YVBpY2tlci5maWVsZHMgPSB0aGlzLmdldEZpZWxkcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEzhuqV5IHVuaW9uIGPhu6dhOiBzZWxlY3RlZEZpZWxkLCBmaWVsZFBsdXMsIGRpc3BsYXkgZmllbGRzIGPDsyB0cm9uZyB0YWJsZS5cclxuICAgIGdldEZpZWxkcygpIHtcclxuICAgICAgICBjb25zdCBhcnJGaWVsZDogc3RyaW5nW10gPSBbdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCwgJ2lkJ107XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkICYmIHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkICE9ICdpZCcpIHtcclxuICAgICAgICAgICAgYXJyRmllbGQucHVzaCh0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLmZpZWxkUGx1cykge1xyXG4gICAgICAgICAgICBhcnJGaWVsZC5wdXNoKC4uLnRoaXMuY29udHJvbFBpY2tlci5maWVsZFBsdXMuc3BsaXQoJywnKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBhcnJEaXNwbGF5RmllbGQgPSB0aGlzLmNvbnRyb2xQaWNrZXIuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmlzRGlzcGxheSA9PSB0cnVlICYmICF4Lm5vdEluRmllbGRzICYmIHguZGF0YVR5cGUgIT0gJ2N1c3RvbScpXHJcbiAgICAgICAgICAgIC5tYXAoeCA9PiB4LmNvZGUpO1xyXG5cclxuICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLmFkZERpc3RpbmN0KGFyckRpc3BsYXlGaWVsZCwgYXJyRmllbGQpO1xyXG4gICAgICAgIHJldHVybiBhcnJGaWVsZC50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERyb3Bkb3duT3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gbmV3IERyb3Bkb3duT3B0aW9ucyh7XHJcbiAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCxcclxuICAgICAgICAgICAgdmFsdWVGaWVsZDogdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgIGZpZWxkUGx1czogdGhpcy5jb250cm9sUGlja2VyLmZpZWxkUGx1cyxcclxuICAgICAgICAgICAgZnVuY0dldExhYmVsOiB0aGlzLmNvbnRyb2xQaWNrZXIuZnVuY0dldExhYmVsLFxyXG4gICAgICAgICAgICBwbHVzVXJsOiB0aGlzLmNvbnRyb2xQaWNrZXIucGx1c1VybFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNob3dQaWNrRm9ybSgpIHtcclxuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybVBpY2tlciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGF0YShrZXlXb3JkKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLm5vdEluLCB0aGlzLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLm5vdEVxdWFsLCB0aGlzLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGF3YWl0IGFwcGVuZERlZmF1bHRGaWx0ZXIoZmlsdGVycywgdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzKTtcclxuICAgICAgICBpZiAoa2V5V29yZCAmJiBrZXlXb3JkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMuZ2V0RmlsdGVyT25TZWFyY2goa2V5V29yZCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sUGlja2VyLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxyXG4gICAgICAgICAgICBmaWx0ZXJzLCB0aGlzLmdldERyb3Bkb3duT3B0aW9ucygpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlU3RydWN0dXJlRGF0YVNvdXJjZShkYXRhU291cmNlKTtcclxuICAgICAgICB0aGlzLnJlc3VsdHMgPSB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgLy8gUmV0dXJuIMSR4buDIG3hu5l0IHPhu5EgbsahaSBraMOhYyBkw7luZywgayByZW1vdmVcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRzO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaChldmVudCkge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YShldmVudC5xdWVyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJWYWx1ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XHJcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5oYXNWYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25VblNlbGVjdC5lbWl0KHtcclxuICAgICAgICAgICAgaXRlbTogdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZFZhbHVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVSb3dTZWxlY3QoaXRlbSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0RhdGEgPSBpdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNlbGVjdCBpdGVtIGPhu6dhIGF1dG9jb21wbGV0ZVxyXG4gICAgaGFuZGxlU2VsZWN0KGl0ZW0pIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICBjb25zdCBldnQgPSB7XHJcbiAgICAgICAgICAgIGl0ZW0sXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVmFsdWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMub25TZWxlY3QuZW1pdChldnQpO1xyXG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZUV2ZW50KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjayAmJiB0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2suc2VsZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjay5zZWxlY3QoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIELhu48gc2VsZWN0IGl0ZW0gY+G7p2EgYXV0b2NvbXBsZXRlXHJcbiAgICBoYW5kbGVVblNlbGVjdCgkZXZlbnQpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICBjb25zdCBldnQgPSB7XHJcbiAgICAgICAgICAgIGl0ZW06ICRldmVudCxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRWYWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5vblVuU2VsZWN0LmVtaXQoZXZ0KTtcclxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2VFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUZvY3VzKGV2dCkge1xyXG4gICAgICAgIGlmIChldnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGV2dC50YXJnZXQuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQmx1cigkZXZlbnQpIHtcclxuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlS2V5VXAoZXZ0KSB7XHJcbiAgICAgICAgbGV0IGhpZGVTdWdnZXNzaW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaGlkZVN1Z2dlc3Npb25zID0gZXZ0LnRhcmdldC5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5jaGlsZEVsZW1lbnRDb3VudCA9PSAxO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAmJiBldnQua2V5Q29kZSA9PSA0MCAmJiBoaWRlU3VnZ2Vzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoaWRlU3VnZ2Vzc2lvbnMgPSBldnQudGFyZ2V0LnBhcmVudE5vZGUuY2hpbGRFbGVtZW50Q291bnQgPT0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChldnQudGFyZ2V0LnZhbHVlID09ICcnICYmIGhpZGVTdWdnZXNzaW9ucyAmJiBldnQua2V5Q29kZSAhPSA0MCAmJiBldnQua2V5Q29kZSAhPSAzOCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIHNlbGVjdCBpdGVtIHRyb25nIGVudGl0eSBwaWNrZXIgYm94IChLaMO0bmcgY+G6p24gZW1pdCBjaGFuZ2UpXHJcbiAgICBoYW5kbGVTZWxlY3RFbnRpdHkoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIHVuc2VsZWN0IGl0ZW0gdHJvbmcgZW50aXR5IHBpY2tlciBib3ggKEtow7RuZyBj4bqnbiBlbWl0IGNoYW5nZSlcclxuICAgIGhhbmRsZVVuU2VsZWN0RW50aXR5KGV2dCkge1xyXG4gICAgICAgIHRoaXMub25VblNlbGVjdC5lbWl0KGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIGNoYW5nZSBpdGVtIHRyb25nIGVudGl0eSBwaWNrZXIgYm94XHJcbiAgICBoYW5kbGVDaGFuZ2VFbnRpdHkoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gZXZ0LnZhbHVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHVyZVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBfZnVuY0NoZWNrUmVhZE9ubHlJdGVtKGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5VmFsdWVzLnNvbWUocSA9PiBxID09IGl0ZW0udmFsdWVbdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKSkge1xyXG4gICAgICAgICAgICBpdGVtLl9kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVJlYWRPbmx5SXRlbSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnVuY0NoZWNrUmVhZE9ubHlJdGVtKGl0ZW0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlU2VsZWN0ZWRWYWx1ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2goaXRlbS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZ1bmNDaGVja1JlYWRPbmx5SXRlbShpdGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QudmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVQdXJlVmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQdXJlVmFsdWUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgICAgdGhpcy5oYXNWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggPiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGRdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VmFsdWVSZXR1cm4oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZnVuY1JldHVyblZhbHVlKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlyZUNoYW5nZUV2ZW50KCkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUmV0dXJuID0gdGhpcy5nZXRWYWx1ZVJldHVybigpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VCYXNlKHZhbHVlUmV0dXJuKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlUmV0dXJuXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaGFuZGxlSGlkZShldnQpIHtcclxuICAgICAgICB0aGlzLnNob3dGb3JtUGlja2VyID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlydHkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5pbiwgdGhpcy52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgdGhpcy5nZXREcm9wZG93bk9wdGlvbnMoKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UoZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gdGhpcy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IGF3YWl0IHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCB0aGlzLmdldERyb3Bkb3duT3B0aW9ucygpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gdGhpcy5kYXRhU291cmNlWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC5sYWJlbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGlja1N1Ym1pdEJ1dHRvbihldnQsIHVzZXJQaWNrZXJCb3g6IFVzZXJQaWNrZXJCb3hDb21wb25lbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSGlkZShldnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGVkUm93RGF0YSkge1xyXG4gICAgICAgICAgICB1c2VyUGlja2VyQm94XHJcbiAgICAgICAgICAgICAgICAmJiB1c2VyUGlja2VyQm94LmVudGl0eVBpY2tlckJveFxyXG4gICAgICAgICAgICAgICAgJiYgdXNlclBpY2tlckJveC5lbnRpdHlQaWNrZXJCb3guaGFuZGxlUGljayh0aGlzLnNlbGVjdGVkUm93RGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3JtUGlja2VyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgcmVTdHJ1Y3R1cmVEYXRhU291cmNlKHNvdXJjZXM6IGFueVtdKSB7XHJcbiAgICAgICAgaWYgKHNvdXJjZXMgIT0gbnVsbCAmJiBzb3VyY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgLy8gTOG6pXkgdGjDqm0gdGjDtG5nIHRpbiBjaOG7qWMgduG7pSDEkeG7gyBoaeG7g24gdGjhu4tcclxuICAgICAgICAgICAgY29uc3QgYXJyID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2Ygc291cmNlcykge1xyXG4gICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMucmVTdHJ1Y3R1cmVJdGVtT2JqZWN0KGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgYXJyLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IGFycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk6IFNlbGVjdEl0ZW0ge1xyXG4gICAgICAgIGNvbnN0IHRlbXA6IFNlbGVjdEl0ZW0gPSB7IHZhbHVlOiBpdGVtIH07XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAgICAgdGVtcC5sYWJlbCA9IHRoaXMuY29udHJvbFBpY2tlci5mdW5jR2V0TGFiZWwoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0ZW1wLmxhYmVsID0gaXRlbS5tYUNodWNWdSA/IGAke2l0ZW0ubWFDaHVjVnV9LiAke2l0ZW1bdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZF19YCA6IGl0ZW1bdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRlbXAudmFsdWUuX2Ryb3Bkb3dudmFsdWUgPSB0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZDtcclxuICAgICAgICByZXR1cm4gdGVtcDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB3cml0ZVZhbHVlKG9iajogYW55KSB7XHJcbiAgICAgICAgdGhpcy5oYXNWYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKG9iaiAhPSBudWxsICYmIG9iai5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5pbiwgb2JqKSk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBhcHBlbmREZWZhdWx0RmlsdGVyKGZpbHRlcnMsIHRoaXMuY29udHJvbC5kZWZhdWx0RmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERyb3Bkb3duT3B0aW9ucygpXHJcbiAgICAgICAgICAgICAgICApLnRoZW4oYXN5bmMgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlU3RydWN0dXJlRGF0YVNvdXJjZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG9iaiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5lcXVhbCwgb2JqKV0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREcm9wZG93bk9wdGlvbnMoKVxyXG4gICAgICAgICAgICAgICAgKS50aGVuKGFzeW5jIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gdGhpcy5kYXRhU291cmNlWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrICYmIHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjay5zZWxlY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjay5zZWxlY3QodGhpcy5zZWxlY3RlZFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUJhc2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -11,4 +11,4 @@ export class WfAction {
|
|
|
11
11
|
}
|
|
12
12
|
export class WorkflowTargetDefaultValue {
|
|
13
13
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvbW9kZWxzL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLE9BQU8sTUFBTTtDQUlsQjtBQUVELE1BQU0sT0FBTyxRQUFRO0NBSXBCO0FBRUQsTUFBTSxPQUFPLFNBQVM7Q0FTckI7QUFDRCxNQUFNLE9BQU8sUUFBUTtJQUFyQjtRQUlJLFlBQU8sR0FBWSxLQUFLLENBQUM7SUFTN0IsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLDBCQUEwQjtDQVl0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudW1TdGF0ZVR5cGUgfSBmcm9tICcuLi8uLi9zdGF0ZW1hY2hpbmVzL21vZGVscy9lbnVtcyc7XHJcbmV4cG9ydCBjbGFzcyBXZkl0ZW0ge1xyXG4gICAgY29kZTogc3RyaW5nO1xyXG4gICAgZGF0YTogV2ZTY2hlbWE7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV2ZTY2hlbWEge1xyXG4gICAgbWFjaGluZXM6IFdmTWFjaGluZVtdO1xyXG4gICAgY29ubmVjdGlvbnM6IFdmQWN0aW9uW107XHJcbiAgICBhY3Rpb25zPzogeyBba2V5OiBzdHJpbmddOiBXZkFjdGlvbltdIH07XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBXZk1hY2hpbmUge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGNvZGU6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHR5cGU6IEVudW1TdGF0ZVR5cGU7XHJcbiAgICBsb2NhdGlvbjogbnVtYmVyW107XHJcbiAgICBlZGl0aW5nOiBib29sZWFuO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIGRhdGE6IGFueTtcclxufVxyXG5leHBvcnQgY2xhc3MgV2ZBY3Rpb24ge1xyXG4gICAgc29UaHVUdTogbnVtYmVyO1xyXG4gICAgY29kZTogc3RyaW5nO1xyXG4gICAgZGF0YTogYW55O1xyXG4gICAgZWRpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWNvbjogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgb3BlblBvcHVwOiBib29sZWFuO1xyXG4gICAgc291cmNlOiBzdHJpbmc7XHJcbiAgICBzb3VyY2VBbmNob3I6IHN0cmluZztcclxuICAgIHRhcmdldDogc3RyaW5nO1xyXG4gICAgdGFyZ2V0QW5jaG9yOiBzdHJpbmc7XHJcbiAgICB0YXJnZXRzQWxsb3dNb2RpZnk6IG51bWJlcltdO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dUYXJnZXREZWZhdWx0VmFsdWUge1xyXG4gICAgbHN0VXNlcklkOiBzdHJpbmdbXTtcclxuICAgIGxzdFVzZXJWaWV3SWQ6IHN0cmluZ1tdO1xyXG4gICAgbHN0RG9uVmlJZDogc3RyaW5nW107XHJcbiAgICBsc3REb25WaVZpZXdJZDogc3RyaW5nW107XHJcbiAgICBsc3RHcm91cElkOiBzdHJpbmdbXTtcclxuICAgIGxzdEdyb3VwVmlld0lkOiBzdHJpbmdbXTtcclxuICAgIGxzdFJvbGVJZDogc3RyaW5nW107XHJcbiAgICBsc3RSb2xlVmlld0lkOiBzdHJpbmdbXTtcclxuICAgIGxzdFVzZXJJZEluV29ya2Zsb3c6IHN0cmluZ1tdO1xyXG4gICAgbHN0RG9uVmlJZEluV29ya2Zsb3c6IHN0cmluZ1tdO1xyXG4gICAgbHN0R3JvdXBJZEluV29ya2Zsb3c6IHN0cmluZ1tdO1xyXG59XHJcbiJdfQ==
|
package/esm2015/components/workflow/process-workflow-form/process-workflow-form.component.js
CHANGED
|
@@ -108,6 +108,9 @@ export class ProcessWorkflowFormComponent extends DataFormBase {
|
|
|
108
108
|
this.initValueForTargetForm.lstGroupViewId = dataUserInProcessForm.lstGroupViewId;
|
|
109
109
|
this.initValueForTargetForm.lstRoleId = dataUserInProcessForm.lstRoleId;
|
|
110
110
|
this.initValueForTargetForm.lstRoleViewId = dataUserInProcessForm.lstRoleViewId;
|
|
111
|
+
this.initValueForTargetForm.lstUserIdInWorkflow = dataUserInProcessForm.lstUserIdInWorkflow;
|
|
112
|
+
this.initValueForTargetForm.lstDonViIdInWorkflow = dataUserInProcessForm.lstDonViIdInWorkflow;
|
|
113
|
+
this.initValueForTargetForm.lstGroupIdInWorkflow = dataUserInProcessForm.lstGroupIdInWorkflow;
|
|
111
114
|
return true;
|
|
112
115
|
});
|
|
113
116
|
}
|
|
@@ -236,7 +239,7 @@ export class ProcessWorkflowFormComponent extends DataFormBase {
|
|
|
236
239
|
ProcessWorkflowFormComponent.decorators = [
|
|
237
240
|
{ type: Component, args: [{
|
|
238
241
|
selector: 'process-workflow-form',
|
|
239
|
-
template: "<crud-form *ngIf=\"formReady\" #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\"\r\n [disableCaching]=\"true\" (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #separator>\r\n <div style=\"height: 3px; width: 100%; background: #2196f3;\"></div>\r\n </ng-template>\r\n</crud-form>\r\n<tn-tabview *ngIf=\"formReady\" [data]=\"mainTabData\" [allowViewAll]=\"true\" [isDynamicHeight]=\"true\">\r\n <ng-template #allowEdit>\r\n <process-workflow-target #targetAllowEdit [data]=\"dataAllowEdit\" [initValue]=\"initValueForTargetForm\"
|
|
242
|
+
template: "<crud-form *ngIf=\"formReady\" #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\"\r\n [disableCaching]=\"true\" (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #separator>\r\n <div style=\"height: 3px; width: 100%; background: #2196f3;\"></div>\r\n </ng-template>\r\n</crud-form>\r\n<tn-tabview *ngIf=\"formReady\" [data]=\"mainTabData\" [allowViewAll]=\"true\" [isDynamicHeight]=\"true\">\r\n <ng-template #allowEdit>\r\n <process-workflow-target #targetAllowEdit [data]=\"dataAllowEdit\" [initValue]=\"initValueForTargetForm\">\r\n </process-workflow-target>\r\n </ng-template>\r\n <ng-template #onlyView>\r\n <process-workflow-target #targetOnlyView [data]=\"dataOnlyView\" [initValue]=\"initValueForTargetForm\"\r\n [action]=\"action\">\r\n </process-workflow-target>\r\n </ng-template>\r\n</tn-tabview>\r\n<ng-template #buttonTemplate>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" [disabled]=\"model.submitting\" type=\"button\" pButton\r\n icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>",
|
|
240
243
|
styles: [""]
|
|
241
244
|
},] }
|
|
242
245
|
];
|
|
@@ -254,4 +257,4 @@ ProcessWorkflowFormComponent.propDecorators = {
|
|
|
254
257
|
action: [{ type: Input }],
|
|
255
258
|
onInvalidWorkflow: [{ type: Output }]
|
|
256
259
|
};
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy13b3JrZmxvdy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dvcmtmbG93L3Byb2Nlc3Mtd29ya2Zsb3ctZm9ybS9wcm9jZXNzLXdvcmtmbG93LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFDSCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsRUFFZCx3QkFBd0IsR0FFM0IsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQU85RSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsWUFBWTtJQStCMUQsWUFDYyxTQUFtQixFQUNyQixxQkFBMkMsRUFDM0MsdUJBQStDO1FBRXZELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUpQLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDckIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQUMzQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBekJqRCxz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QVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7U0FDL0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBbFFKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxnOUNBQXFEOzthQUV4RDs7O1lBckJpQyxRQUFRO1lBWWpDLG9CQUFvQjtZQUdwQixzQkFBc0I7OztrQ0FRMUIsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtpQ0FDOUMsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs4QkFFN0MsS0FBSzttQkFDTCxLQUFLO3VCQUNMLEtBQUs7cUJBQ0wsS0FBSztnQ0FFTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcclxuaW1wb3J0IHtcclxuICAgIENydWRMaXN0U2V0dGluZyxcclxuICAgIEVkaXRvckNvbnRyb2xTY2hlbWEsXHJcbiAgICBFbnVtRmlsZUxheW91dCxcclxuICAgIEV2ZW50RGF0YSxcclxuICAgIEZpbGVNYW5hZ2VyQ29udHJvbFNjaGVtYSxcclxuICAgIEZvcm1TY2hlbWFCYXNlLFxyXG59IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBFbnVtUHJvY2Vzc1dvcmtmbG93VHlwZSwgRW51bVN0YXRlVHlwZSB9IGZyb20gJy4uLy4uL3N0YXRlbWFjaGluZXMvbW9kZWxzL2VudW1zJztcclxuaW1wb3J0IHsgU3RhdGVNYWNoaW5lc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zdGF0ZW1hY2hpbmVzL3NlcnZpY2VzL3N0YXRlbWFjaGluZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFdmQWN0aW9uLCBXZkl0ZW0sIFdvcmtmbG93VGFyZ2V0RGVmYXVsdFZhbHVlIH0gZnJvbSAnLi4vbW9kZWxzL21vZGVscyc7XHJcbmltcG9ydCB7IFByb2Nlc3NXb3JrZmxvd1RhcmdldENvbXBvbmVudCB9IGZyb20gJy4uL3Byb2Nlc3Mtd29ya2Zsb3ctdGFyZ2V0L3Byb2Nlc3Mtd29ya2Zsb3ctdGFyZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFdvcmtmbG93SGlzdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93b3JrZmxvdy1oaXN0b3J5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Byb2Nlc3Mtd29ya2Zsb3ctZm9ybScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzcy13b3JrZmxvdy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3Mtd29ya2Zsb3ctZm9ybS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2Nlc3NXb3JrZmxvd0Zvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgndGFyZ2V0QWxsb3dFZGl0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1UYXJnZXRBbGxvd0VkaXQ6IFByb2Nlc3NXb3JrZmxvd1RhcmdldENvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ3RhcmdldE9ubHlWaWV3JywgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1UYXJnZXRPbmx5VmlldzogUHJvY2Vzc1dvcmtmbG93VGFyZ2V0Q29tcG9uZW50O1xyXG5cclxuICAgIEBJbnB1dCgpIGJ1c2luZXNzU2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xyXG4gICAgQElucHV0KCkgaXRlbTogYW55O1xyXG4gICAgQElucHV0KCkgd29ya2Zsb3c6IFdmSXRlbTtcclxuICAgIEBJbnB1dCgpIGFjdGlvbjogV2ZBY3Rpb247XHJcblxyXG4gICAgQE91dHB1dCgpIG9uSW52YWxpZFdvcmtmbG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIGZvcm1SZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbWFpblRhYkRhdGE6IGFueVtdID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29kZTogJ2FsbG93RWRpdCcsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIG5o4bqtbidcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29kZTogJ29ubHlWaWV3JyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWxpc3QnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIHRoZW8gZMO1aSdcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgaXNBY3Rpb25LZXRUaHVjOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBkYXRhQWxsb3dFZGl0OiBhbnkgPSB7fTtcclxuICAgIGRhdGFPbmx5VmlldzogYW55ID0ge307XHJcbiAgICBydWxlVXNlcnMgPSBbXTtcclxuICAgIGluaXRWYWx1ZUZvclRhcmdldEZvcm06IFdvcmtmbG93VGFyZ2V0RGVmYXVsdFZhbHVlID0gbmV3IFdvcmtmbG93VGFyZ2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICB1c2VySWRzRGFUaHVjSGllbjogc3RyaW5nW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfc3RhdGVNYWNoaW5lc1NlcnZpY2U6IFN0YXRlTWFjaGluZXNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3dvcmtmbG93SGlzdG9yeVNlcnZpY2U6IFdvcmtmbG93SGlzdG9yeVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX3N0YXRlTWFjaGluZXNTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSA8Rm9ybVNjaGVtYUJhc2VbXT5bXHJcbiAgICAgICAgICAgIG5ldyBFZGl0b3JDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbm90ZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCfDnSBraeG6v24nKSxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDEyXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZmlsZURpbmhLZW0nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRmlsZSDEkcOtbmgga8OobScpLFxyXG4gICAgICAgICAgICAgICAgbGF5b3V0OiBFbnVtRmlsZUxheW91dC5TSU1QTEUsXHJcbiAgICAgICAgICAgICAgICBzZXJ2aWNlQ29kZTogdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5zZXJ2aWNlQ29kZSxcclxuICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5lbnRpdHlOYW1lLFxyXG4gICAgICAgICAgICAgICAgZW50aXR5S2V5OiB0aGlzLm1vZGVsLmRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAxMixcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5pbml0UnVsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXRSdWxlKCkge1xyXG4gICAgICAgIC8vIEtp4buDbSB0cmEgxJHDonkgbMOgIGFjdGlvbiBr4bq/dCB0aMO6Y1xyXG4gICAgICAgIGNvbnN0IG5leHRNYWNoaW5lID0gdGhpcy53b3JrZmxvdy5kYXRhLm1hY2hpbmVzLmZpbmQocSA9PiBxLmlkID09IHRoaXMuYWN0aW9uLnRhcmdldCk7XHJcbiAgICAgICAgdGhpcy5pc0FjdGlvbktldFRodWMgPSBuZXh0TWFjaGluZS50eXBlID09IEVudW1TdGF0ZVR5cGUuU1RPUDtcclxuICAgICAgICBpZiAodGhpcy5pc0FjdGlvbktldFRodWMpIHtcclxuICAgICAgICAgICAgdGhpcy5tYWluVGFiRGF0YVsxXS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiAodGhpcy5jaGVja05lZWRHZXRVc2VyKCkpIHtcclxuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuZ2V0VXNlckZvclByb2Nlc3NXb3JrZmxvdygpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIHRoaXMuc2V0RGF0YUFuZFRyaWdnZXJSZWFkeSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrTmVlZEdldFVzZXIoKSB7XHJcbiAgICAgICAgdGhpcy5ydWxlVXNlcnMgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMuYWN0aW9uLmRhdGEuaW5mb1JlY2VpdmVyIHx8ICF0aGlzLmFjdGlvbi5kYXRhLmluZm9SZWNlaXZlci5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uLmRhdGEuaW5mb1JlY2VpdmVyLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uLmRhdGEuaW5mb1JlY2VpdmVyWzBdLmxhblRodSA9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgaW5mb1JlY2VpdmVyIG9mIHRoaXMuYWN0aW9uLmRhdGEuaW5mb1JlY2VpdmVyKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrTmVlZEdldFVzZXJCeVVzZXJEYXRhKGluZm9SZWNlaXZlci51c2VyKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tOZWVkR2V0VXNlckJ5VXNlckRhdGEoaW5mb1JlY2VpdmVyLnVzZXJWaWV3KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFVzZXJGb3JQcm9jZXNzV29ya2Zsb3coKSB7XHJcbiAgICAgICAgY29uc3Qgc291cmNlTWFjaGluZSA9IHRoaXMud29ya2Zsb3cuZGF0YS5tYWNoaW5lcy5maW5kKHEgPT4gcS5pZCA9PSB0aGlzLmFjdGlvbi5zb3VyY2UpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdEdldFVzZXJJblByb2Nlc3NGb3JtID0gYXdhaXQgdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuZ2V0VXNlckluUHJvY2Vzc0Zvcm0oXHJcbiAgICAgICAgICAgIHRoaXMud29ya2Zsb3cuY29kZSwgc291cmNlTWFjaGluZS5jb2RlLCB0aGlzLmFjdGlvbi5jb2RlLCB0aGlzLml0ZW0uaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICghcmVzdWx0R2V0VXNlckluUHJvY2Vzc0Zvcm0uc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlc3VsdEdldFVzZXJJblByb2Nlc3NGb3JtKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhVXNlckluUHJvY2Vzc0Zvcm0gPSByZXN1bHRHZXRVc2VySW5Qcm9jZXNzRm9ybS5kYXRhO1xyXG4gICAgICAgIHRoaXMuaW5pdFZhbHVlRm9yVGFyZ2V0Rm9ybS5sc3RVc2VySWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0VXNlcklkO1xyXG4gICAgICAgIHRoaXMuaW5pdFZhbHVlRm9yVGFyZ2V0Rm9ybS5sc3RVc2VyVmlld0lkID0gZGF0YVVzZXJJblByb2Nlc3NGb3JtLmxzdFVzZXJWaWV3SWQ7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdERvblZpSWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0RG9uVmlJZDtcclxuICAgICAgICB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0RG9uVmlWaWV3SWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0RG9uVmlWaWV3SWQ7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdEdyb3VwSWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0R3JvdXBJZDtcclxuICAgICAgICB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0R3JvdXBWaWV3SWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0R3JvdXBWaWV3SWQ7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdFJvbGVJZCA9IGRhdGFVc2VySW5Qcm9jZXNzRm9ybS5sc3RSb2xlSWQ7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdFJvbGVWaWV3SWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0Um9sZVZpZXdJZDtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrTmVlZEdldFVzZXJCeVVzZXJEYXRhKHVzZXJEYXRhOiBhbnkpIHtcclxuICAgICAgICBpZiAodXNlckRhdGFcclxuICAgICAgICAgICAgJiYgKCh1c2VyRGF0YS5ydWxlcyAmJiB1c2VyRGF0YS5ydWxlcy5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgICB8fCAodXNlckRhdGEucnVsZUluV29ya2Zsb3dzICYmIHVzZXJEYXRhLnJ1bGVJbldvcmtmbG93cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREYXRhQW5kVHJpZ2dlclJlYWR5KCkge1xyXG4gICAgICAgIHRoaXMuZGF0YUFsbG93RWRpdCA9IHtcclxuICAgICAgICAgICAgcnVsZXM6IFtdLFxyXG4gICAgICAgICAgICB1c2VySWRzOiBbXSxcclxuICAgICAgICAgICAgcnVsZUluV29ya2Zsb3dzOiBbXSxcclxuICAgICAgICAgICAgZGVwYXJ0bWVudElkczogdGhpcy5hY3Rpb24uZGF0YS5kZXBhcnRtZW50SWRzID8/IFtdLFxyXG4gICAgICAgICAgICBncm91cElkczogdGhpcy5hY3Rpb24uZGF0YS5ncm91cElkcyA/PyBbXSxcclxuICAgICAgICAgICAgcm9sZUlkczogdGhpcy5hY3Rpb24uZGF0YS5yb2xlSWRzID8/IFtdLFxyXG4gICAgICAgICAgICB0eXBlOiBFbnVtUHJvY2Vzc1dvcmtmbG93VHlwZS5FRElUXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmRhdGFPbmx5VmlldyA9IHtcclxuICAgICAgICAgICAgcnVsZXM6IFtdLFxyXG4gICAgICAgICAgICB1c2VySWRzOiBbXSxcclxuICAgICAgICAgICAgcnVsZUluV29ya2Zsb3dzOiBbXSxcclxuICAgICAgICAgICAgZGVwYXJ0bWVudElkczogdGhpcy5hY3Rpb24uZGF0YS5kZXBhcnRtZW50Vmlld0lkcyA/PyBbXSxcclxuICAgICAgICAgICAgZ3JvdXBJZHM6IHRoaXMuYWN0aW9uLmRhdGEuZ3JvdXBWaWV3SWRzID8/IFtdLFxyXG4gICAgICAgICAgICByb2xlSWRzOiB0aGlzLmFjdGlvbi5kYXRhLnJvbGVWaWV3SWRzID8/IFtdLFxyXG4gICAgICAgICAgICB0eXBlOiBFbnVtUHJvY2Vzc1dvcmtmbG93VHlwZS5WSUVXXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmFkZERpc3RpbmN0KHRoaXMuZGF0YUFsbG93RWRpdC51c2VySWRzLCB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0VXNlcklkKTtcclxuICAgICAgICB0aGlzLmFkZERpc3RpbmN0KHRoaXMuZGF0YUFsbG93RWRpdC5kZXBhcnRtZW50SWRzLCB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0RG9uVmlJZCk7XHJcbiAgICAgICAgdGhpcy5hZGREaXN0aW5jdCh0aGlzLmRhdGFBbGxvd0VkaXQuZ3JvdXBJZHMsIHRoaXMuaW5pdFZhbHVlRm9yVGFyZ2V0Rm9ybS5sc3RHcm91cElkKTtcclxuICAgICAgICB0aGlzLmFkZERpc3RpbmN0KHRoaXMuZGF0YUFsbG93RWRpdC5yb2xlSWRzLCB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0Um9sZUlkKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGREaXN0aW5jdCh0aGlzLmRhdGFPbmx5Vmlldy51c2VySWRzLCB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0VXNlclZpZXdJZCk7XHJcbiAgICAgICAgdGhpcy5hZGREaXN0aW5jdCh0aGlzLmRhdGFPbmx5Vmlldy5kZXBhcnRtZW50SWRzLCB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0RG9uVmlWaWV3SWQpO1xyXG4gICAgICAgIHRoaXMuYWRkRGlzdGluY3QodGhpcy5kYXRhT25seVZpZXcuZ3JvdXBJZHMsIHRoaXMuaW5pdFZhbHVlRm9yVGFyZ2V0Rm9ybS5sc3RHcm91cFZpZXdJZCk7XHJcbiAgICAgICAgdGhpcy5hZGREaXN0aW5jdCh0aGlzLmRhdGFPbmx5Vmlldy5yb2xlSWRzLCB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0Um9sZVZpZXdJZCk7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybVJlYWR5ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZERpc3RpbmN0KGRlc3Q6IHN0cmluZ1tdLCBzb3VyY2U6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgaWYgKCFzb3VyY2UgfHwgIXNvdXJjZS5sZW5ndGgpIHJldHVybjtcclxuICAgICAgICBzb3VyY2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaWYgKGRlc3QuaW5kZXhPZihpdGVtKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgZGVzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZXZ0OiBFdmVudERhdGEpIHtcclxuICAgICAgICBldnQubW9kZWwuaWQgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB2YWxpZGF0ZUZvcm0oKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhLnVzZXJJZHMgPSB0aGlzLmZvcm1UYXJnZXRBbGxvd0VkaXQubW9kZWwuZGF0YS51c2VySWRzO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZGF0YS5kZXBhcnRtZW50SWRzID0gdGhpcy5mb3JtVGFyZ2V0QWxsb3dFZGl0Lm1vZGVsLmRhdGEuZGVwYXJ0bWVudElkcztcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEuZ3JvdXBJZHMgPSB0aGlzLmZvcm1UYXJnZXRBbGxvd0VkaXQubW9kZWwuZGF0YS5ncm91cElkcztcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEucm9sZUlkcyA9IHRoaXMuZm9ybVRhcmdldEFsbG93RWRpdC5tb2RlbC5kYXRhLnJvbGVJZHM7XHJcblxyXG4gICAgICAgIHRoaXMubW9kZWwuZGF0YS51c2VyVmlld0lkcyA9IHRoaXMuZm9ybVRhcmdldE9ubHlWaWV3Lm1vZGVsLmRhdGEudXNlcklkcztcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEuZGVwYXJ0bWVudFZpZXdJZHMgPSB0aGlzLmZvcm1UYXJnZXRPbmx5Vmlldy5tb2RlbC5kYXRhLmRlcGFydG1lbnRJZHM7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmdyb3VwVmlld0lkcyA9IHRoaXMuZm9ybVRhcmdldE9ubHlWaWV3Lm1vZGVsLmRhdGEuZ3JvdXBJZHM7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhLnJvbGVWaWV3SWRzID0gdGhpcy5mb3JtVGFyZ2V0T25seVZpZXcubW9kZWwuZGF0YS5yb2xlSWRzO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNBY3Rpb25LZXRUaHVjKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHlBcnJheSh0aGlzLm1vZGVsLmRhdGEudXNlcklkcylcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuaXNFbXB0eUFycmF5KHRoaXMubW9kZWwuZGF0YS5kZXBhcnRtZW50SWRzKVxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5pc0VtcHR5QXJyYXkodGhpcy5tb2RlbC5kYXRhLmdyb3VwSWRzKVxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5pc0VtcHR5QXJyYXkodGhpcy5tb2RlbC5kYXRhLnJvbGVJZHMpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdQaOG6o2kgY2jhu41uIMOtdCBuaOG6pXQgMSBuaMOzbSDEkeG7kWkgdMaw4bujbmcgbmjhuq1uIChOZ8aw4budaSBuaOG6rW4geOG7rSBsw70gfCDEkMahbiB24buLIHwgTmjDs20gbmfGsOG7nWkgZMO5bmcpJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0VtcHR5QXJyYXkodmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gIXZhbHVlIHx8ICF2YWx1ZS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9kZWxQcm9jZXNzV29ya2Zsb3coKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlSW5zZXJ0U3VjY2VzcyA9IGAke3RoaXMuYWN0aW9uLm5hbWV9IHRow6BuaCBjw7RuZ2A7XHJcbiAgICAgICAgY29uc3QgZGF0YVBvc3QgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmNsb25lT2JqZWN0KHRoaXMubW9kZWwuZGF0YSk7XHJcbiAgICAgICAgZGF0YVBvc3QudGFibGVOYW1lID0gdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuZW50aXR5TmFtZTtcclxuICAgICAgICBsZXQgbmFtZSA9ICcnO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc1NldHRpbmcuZGlzcGxheUZpZWxkID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSB0aGlzLml0ZW1bPHN0cmluZz4odGhpcy5idXNpbmVzc1NldHRpbmcuZGlzcGxheUZpZWxkKV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBuYW1lID0gKDxGdW5jdGlvbj4odGhpcy5idXNpbmVzc1NldHRpbmcuZGlzcGxheUZpZWxkKSkodGhpcy5pdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbmFtZSA9IGAke3RoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLm9iamVjdE5hbWV9ICR7bmFtZX1gO1xyXG4gICAgICAgIGRhdGFQb3N0Lm9iamVjdEZ1bGxOYW1lID0gbmFtZTtcclxuICAgICAgICBkYXRhUG9zdC5vYmplY3ROYW1lID0gdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2Uub2JqZWN0TmFtZTtcclxuICAgICAgICBkYXRhUG9zdC53b3JrZmxvd0NvZGUgPSB0aGlzLml0ZW0uX193b3JrZmxvd0NvZGU7XHJcbiAgICAgICAgZGF0YVBvc3QuaXRlbUlkID0gdGhpcy5pdGVtLmlkO1xyXG4gICAgICAgIGRhdGFQb3N0LnNvdXJjZVN0YXR1c0NvZGUgPSB0aGlzLml0ZW0uX190cmFuZ1RoYWk7XHJcbiAgICAgICAgZGF0YVBvc3QuYWN0aW9uQ29kZSA9IHRoaXMuYWN0aW9uLmNvZGU7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRMaXN0VG9TdHJpbmcoZGF0YVBvc3QsICd1c2VySWRzJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZExpc3RUb1N0cmluZyhkYXRhUG9zdCwgJ3VzZXJWaWV3SWRzJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZExpc3RUb1N0cmluZyhkYXRhUG9zdCwgJ2RlcGFydG1lbnRJZHMnKTtcclxuICAgICAgICB0aGlzLmZpZWxkTGlzdFRvU3RyaW5nKGRhdGFQb3N0LCAnZGVwYXJ0bWVudFZpZXdJZHMnKTtcclxuICAgICAgICB0aGlzLmZpZWxkTGlzdFRvU3RyaW5nKGRhdGFQb3N0LCAnZ3JvdXBJZHMnKTtcclxuICAgICAgICB0aGlzLmZpZWxkTGlzdFRvU3RyaW5nKGRhdGFQb3N0LCAnZ3JvdXBWaWV3SWRzJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZExpc3RUb1N0cmluZyhkYXRhUG9zdCwgJ3JvbGVJZHMnKTtcclxuICAgICAgICB0aGlzLmZpZWxkTGlzdFRvU3RyaW5nKGRhdGFQb3N0LCAncm9sZVZpZXdJZHMnKTtcclxuICAgICAgICByZXR1cm4gZGF0YVBvc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvbWlzZUFjdGlvbkluc2VydCgpIHtcclxuICAgICAgICBjb25zdCBkYXRhUG9zdCA9IHRoaXMuZ2V0TW9kZWxQcm9jZXNzV29ya2Zsb3coKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuY2hhbmdlU3RhdGUoXHJcbiAgICAgICAgICAgIGRhdGFQb3N0XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBmaWVsZExpc3RUb1N0cmluZyhkYXRhUG9zdDogYW55LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKGRhdGFQb3N0W2ZpZWxkXSkge1xyXG4gICAgICAgICAgICBkYXRhUG9zdFtmaWVsZF0gPSBkYXRhUG9zdFtmaWVsZF0udG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlSW5zZXJ0RXJyb3IoKSB7XHJcbiAgICAgICAgdGhpcy5vbkludmFsaWRXb3JrZmxvdy5lbWl0KHtcclxuICAgICAgICAgICAgaXRlbTogdGhpcy5pdGVtLFxyXG4gICAgICAgICAgICBhY3Rpb246IHRoaXMuYWN0aW9uLFxyXG4gICAgICAgICAgICBhY3Rpb25Db2RlOiB0aGlzLmFjdGlvbi5jb2RlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy13b3JrZmxvdy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dvcmtmbG93L3Byb2Nlc3Mtd29ya2Zsb3ctZm9ybS9wcm9jZXNzLXdvcmtmbG93LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFDSCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsRUFFZCx3QkFBd0IsR0FFM0IsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQU85RSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsWUFBWTtJQStCMUQsWUFDYyxTQUFtQixFQUNyQixxQkFBMkMsRUFDM0MsdUJBQStDO1FBRXZELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUpQLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDckIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQUMzQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBekJqRCxz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QUNwQixDQUFDO0lBRUQsc0JBQXNCO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUMvQyxRQUFRLENBQ1gsQ0FBQztJQUNOLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFhLEVBQUUsS0FBYTtRQUMxQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7U0FDL0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBclFKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyw2NkNBQXFEOzthQUV4RDs7O1lBckJpQyxRQUFRO1lBWWpDLG9CQUFvQjtZQUdwQixzQkFBc0I7OztrQ0FRMUIsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtpQ0FDOUMsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs4QkFFN0MsS0FBSzttQkFDTCxLQUFLO3VCQUNMLEtBQUs7cUJBQ0wsS0FBSztnQ0FFTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcclxuaW1wb3J0IHtcclxuICAgIENydWRMaXN0U2V0dGluZyxcclxuICAgIEVkaXRvckNvbnRyb2xTY2hlbWEsXHJcbiAgICBFbnVtRmlsZUxheW91dCxcclxuICAgIEV2ZW50RGF0YSxcclxuICAgIEZpbGVNYW5hZ2VyQ29udHJvbFNjaGVtYSxcclxuICAgIEZvcm1TY2hlbWFCYXNlLFxyXG59IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBFbnVtUHJvY2Vzc1dvcmtmbG93VHlwZSwgRW51bVN0YXRlVHlwZSB9IGZyb20gJy4uLy4uL3N0YXRlbWFjaGluZXMvbW9kZWxzL2VudW1zJztcclxuaW1wb3J0IHsgU3RhdGVNYWNoaW5lc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zdGF0ZW1hY2hpbmVzL3NlcnZpY2VzL3N0YXRlbWFjaGluZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFdmQWN0aW9uLCBXZkl0ZW0sIFdvcmtmbG93VGFyZ2V0RGVmYXVsdFZhbHVlIH0gZnJvbSAnLi4vbW9kZWxzL21vZGVscyc7XHJcbmltcG9ydCB7IFByb2Nlc3NXb3JrZmxvd1RhcmdldENvbXBvbmVudCB9IGZyb20gJy4uL3Byb2Nlc3Mtd29ya2Zsb3ctdGFyZ2V0L3Byb2Nlc3Mtd29ya2Zsb3ctdGFyZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFdvcmtmbG93SGlzdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93b3JrZmxvdy1oaXN0b3J5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Byb2Nlc3Mtd29ya2Zsb3ctZm9ybScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzcy13b3JrZmxvdy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3Mtd29ya2Zsb3ctZm9ybS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2Nlc3NXb3JrZmxvd0Zvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgndGFyZ2V0QWxsb3dFZGl0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1UYXJnZXRBbGxvd0VkaXQ6IFByb2Nlc3NXb3JrZmxvd1RhcmdldENvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ3RhcmdldE9ubHlWaWV3JywgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1UYXJnZXRPbmx5VmlldzogUHJvY2Vzc1dvcmtmbG93VGFyZ2V0Q29tcG9uZW50O1xyXG5cclxuICAgIEBJbnB1dCgpIGJ1c2luZXNzU2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xyXG4gICAgQElucHV0KCkgaXRlbTogYW55O1xyXG4gICAgQElucHV0KCkgd29ya2Zsb3c6IFdmSXRlbTtcclxuICAgIEBJbnB1dCgpIGFjdGlvbjogV2ZBY3Rpb247XHJcblxyXG4gICAgQE91dHB1dCgpIG9uSW52YWxpZFdvcmtmbG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIGZvcm1SZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbWFpblRhYkRhdGE6IGFueVtdID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29kZTogJ2FsbG93RWRpdCcsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIG5o4bqtbidcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29kZTogJ29ubHlWaWV3JyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWxpc3QnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIHRoZW8gZMO1aSdcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgaXNBY3Rpb25LZXRUaHVjOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBkYXRhQWxsb3dFZGl0OiBhbnkgPSB7fTtcclxuICAgIGRhdGFPbmx5VmlldzogYW55ID0ge307XHJcbiAgICBydWxlVXNlcnMgPSBbXTtcclxuICAgIGluaXRWYWx1ZUZvclRhcmdldEZvcm06IFdvcmtmbG93VGFyZ2V0RGVmYXVsdFZhbHVlID0gbmV3IFdvcmtmbG93VGFyZ2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICB1c2VySWRzRGFUaHVjSGllbjogc3RyaW5nW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfc3RhdGVNYWNoaW5lc1NlcnZpY2U6IFN0YXRlTWFjaGluZXNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3dvcmtmbG93SGlzdG9yeVNlcnZpY2U6IFdvcmtmbG93SGlzdG9yeVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX3N0YXRlTWFjaGluZXNTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSA8Rm9ybVNjaGVtYUJhc2VbXT5bXHJcbiAgICAgICAgICAgIG5ldyBFZGl0b3JDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbm90ZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCfDnSBraeG6v24nKSxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDEyXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZmlsZURpbmhLZW0nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRmlsZSDEkcOtbmgga8OobScpLFxyXG4gICAgICAgICAgICAgICAgbGF5b3V0OiBFbnVtRmlsZUxheW91dC5TSU1QTEUsXHJcbiAgICAgICAgICAgICAgICBzZXJ2aWNlQ29kZTogdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5zZXJ2aWNlQ29kZSxcclxuICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5lbnRpdHlOYW1lLFxyXG4gICAgICAgICAgICAgICAgZW50aXR5S2V5OiB0aGlzLm1vZGVsLmRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAxMixcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5pbml0UnVsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXRSdWxlKCkge1xyXG4gICAgICAgIC8vIEtp4buDbSB0cmEgxJHDonkgbMOgIGFjdGlvbiBr4bq/dCB0aMO6Y1xyXG4gICAgICAgIGNvbnN0IG5leHRNYWNoaW5lID0gdGhpcy53b3JrZmxvdy5kYXRhLm1hY2hpbmVzLmZpbmQocSA9PiBxLmlkID09IHRoaXMuYWN0aW9uLnRhcmdldCk7XHJcbiAgICAgICAgdGhpcy5pc0FjdGlvbktldFRodWMgPSBuZXh0TWFjaGluZS50eXBlID09IEVudW1TdGF0ZVR5cGUuU1RPUDtcclxuICAgICAgICBpZiAodGhpcy5pc0FjdGlvbktldFRodWMpIHtcclxuICAgICAgICAgICAgdGhpcy5tYWluVGFiRGF0YVsxXS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiAodGhpcy5jaGVja05lZWRHZXRVc2VyKCkpIHtcclxuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuZ2V0VXNlckZvclByb2Nlc3NXb3JrZmxvdygpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIHRoaXMuc2V0RGF0YUFuZFRyaWdnZXJSZWFkeSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrTmVlZEdldFVzZXIoKSB7XHJcbiAgICAgICAgdGhpcy5ydWxlVXNlcnMgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMuYWN0aW9uLmRhdGEuaW5mb1JlY2VpdmVyIHx8ICF0aGlzLmFjdGlvbi5kYXRhLmluZm9SZWNlaXZlci5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uLmRhdGEuaW5mb1JlY2VpdmVyLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uLmRhdGEuaW5mb1JlY2VpdmVyWzBdLmxhblRodSA9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgaW5mb1JlY2VpdmVyIG9mIHRoaXMuYWN0aW9uLmRhdGEuaW5mb1JlY2VpdmVyKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrTmVlZEdldFVzZXJCeVVzZXJEYXRhKGluZm9SZWNlaXZlci51c2VyKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tOZWVkR2V0VXNlckJ5VXNlckRhdGEoaW5mb1JlY2VpdmVyLnVzZXJWaWV3KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFVzZXJGb3JQcm9jZXNzV29ya2Zsb3coKSB7XHJcbiAgICAgICAgY29uc3Qgc291cmNlTWFjaGluZSA9IHRoaXMud29ya2Zsb3cuZGF0YS5tYWNoaW5lcy5maW5kKHEgPT4gcS5pZCA9PSB0aGlzLmFjdGlvbi5zb3VyY2UpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdEdldFVzZXJJblByb2Nlc3NGb3JtID0gYXdhaXQgdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuZ2V0VXNlckluUHJvY2Vzc0Zvcm0oXHJcbiAgICAgICAgICAgIHRoaXMud29ya2Zsb3cuY29kZSwgc291cmNlTWFjaGluZS5jb2RlLCB0aGlzLmFjdGlvbi5jb2RlLCB0aGlzLml0ZW0uaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICghcmVzdWx0R2V0VXNlckluUHJvY2Vzc0Zvcm0uc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlc3VsdEdldFVzZXJJblByb2Nlc3NGb3JtKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhVXNlckluUHJvY2Vzc0Zvcm0gPSByZXN1bHRHZXRVc2VySW5Qcm9jZXNzRm9ybS5kYXRhO1xyXG4gICAgICAgIHRoaXMuaW5pdFZhbHVlRm9yVGFyZ2V0Rm9ybS5sc3RVc2VySWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0VXNlcklkO1xyXG4gICAgICAgIHRoaXMuaW5pdFZhbHVlRm9yVGFyZ2V0Rm9ybS5sc3RVc2VyVmlld0lkID0gZGF0YVVzZXJJblByb2Nlc3NGb3JtLmxzdFVzZXJWaWV3SWQ7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdERvblZpSWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0RG9uVmlJZDtcclxuICAgICAgICB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0RG9uVmlWaWV3SWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0RG9uVmlWaWV3SWQ7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdEdyb3VwSWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0R3JvdXBJZDtcclxuICAgICAgICB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0R3JvdXBWaWV3SWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0R3JvdXBWaWV3SWQ7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdFJvbGVJZCA9IGRhdGFVc2VySW5Qcm9jZXNzRm9ybS5sc3RSb2xlSWQ7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdFJvbGVWaWV3SWQgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0Um9sZVZpZXdJZDtcclxuICAgICAgICB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0VXNlcklkSW5Xb3JrZmxvdyA9IGRhdGFVc2VySW5Qcm9jZXNzRm9ybS5sc3RVc2VySWRJbldvcmtmbG93O1xyXG4gICAgICAgIHRoaXMuaW5pdFZhbHVlRm9yVGFyZ2V0Rm9ybS5sc3REb25WaUlkSW5Xb3JrZmxvdyA9IGRhdGFVc2VySW5Qcm9jZXNzRm9ybS5sc3REb25WaUlkSW5Xb3JrZmxvdztcclxuICAgICAgICB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0R3JvdXBJZEluV29ya2Zsb3cgPSBkYXRhVXNlckluUHJvY2Vzc0Zvcm0ubHN0R3JvdXBJZEluV29ya2Zsb3c7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja05lZWRHZXRVc2VyQnlVc2VyRGF0YSh1c2VyRGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHVzZXJEYXRhXHJcbiAgICAgICAgICAgICYmICgodXNlckRhdGEucnVsZXMgJiYgdXNlckRhdGEucnVsZXMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgfHwgKHVzZXJEYXRhLnJ1bGVJbldvcmtmbG93cyAmJiB1c2VyRGF0YS5ydWxlSW5Xb3JrZmxvd3MubGVuZ3RoKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGF0YUFuZFRyaWdnZXJSZWFkeSgpIHtcclxuICAgICAgICB0aGlzLmRhdGFBbGxvd0VkaXQgPSB7XHJcbiAgICAgICAgICAgIHJ1bGVzOiBbXSxcclxuICAgICAgICAgICAgdXNlcklkczogW10sXHJcbiAgICAgICAgICAgIHJ1bGVJbldvcmtmbG93czogW10sXHJcbiAgICAgICAgICAgIGRlcGFydG1lbnRJZHM6IHRoaXMuYWN0aW9uLmRhdGEuZGVwYXJ0bWVudElkcyA/PyBbXSxcclxuICAgICAgICAgICAgZ3JvdXBJZHM6IHRoaXMuYWN0aW9uLmRhdGEuZ3JvdXBJZHMgPz8gW10sXHJcbiAgICAgICAgICAgIHJvbGVJZHM6IHRoaXMuYWN0aW9uLmRhdGEucm9sZUlkcyA/PyBbXSxcclxuICAgICAgICAgICAgdHlwZTogRW51bVByb2Nlc3NXb3JrZmxvd1R5cGUuRURJVFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kYXRhT25seVZpZXcgPSB7XHJcbiAgICAgICAgICAgIHJ1bGVzOiBbXSxcclxuICAgICAgICAgICAgdXNlcklkczogW10sXHJcbiAgICAgICAgICAgIHJ1bGVJbldvcmtmbG93czogW10sXHJcbiAgICAgICAgICAgIGRlcGFydG1lbnRJZHM6IHRoaXMuYWN0aW9uLmRhdGEuZGVwYXJ0bWVudFZpZXdJZHMgPz8gW10sXHJcbiAgICAgICAgICAgIGdyb3VwSWRzOiB0aGlzLmFjdGlvbi5kYXRhLmdyb3VwVmlld0lkcyA/PyBbXSxcclxuICAgICAgICAgICAgcm9sZUlkczogdGhpcy5hY3Rpb24uZGF0YS5yb2xlVmlld0lkcyA/PyBbXSxcclxuICAgICAgICAgICAgdHlwZTogRW51bVByb2Nlc3NXb3JrZmxvd1R5cGUuVklFV1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5hZGREaXN0aW5jdCh0aGlzLmRhdGFBbGxvd0VkaXQudXNlcklkcywgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdFVzZXJJZCk7XHJcbiAgICAgICAgdGhpcy5hZGREaXN0aW5jdCh0aGlzLmRhdGFBbGxvd0VkaXQuZGVwYXJ0bWVudElkcywgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdERvblZpSWQpO1xyXG4gICAgICAgIHRoaXMuYWRkRGlzdGluY3QodGhpcy5kYXRhQWxsb3dFZGl0Lmdyb3VwSWRzLCB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0R3JvdXBJZCk7XHJcbiAgICAgICAgdGhpcy5hZGREaXN0aW5jdCh0aGlzLmRhdGFBbGxvd0VkaXQucm9sZUlkcywgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdFJvbGVJZCk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkRGlzdGluY3QodGhpcy5kYXRhT25seVZpZXcudXNlcklkcywgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdFVzZXJWaWV3SWQpO1xyXG4gICAgICAgIHRoaXMuYWRkRGlzdGluY3QodGhpcy5kYXRhT25seVZpZXcuZGVwYXJ0bWVudElkcywgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdERvblZpVmlld0lkKTtcclxuICAgICAgICB0aGlzLmFkZERpc3RpbmN0KHRoaXMuZGF0YU9ubHlWaWV3Lmdyb3VwSWRzLCB0aGlzLmluaXRWYWx1ZUZvclRhcmdldEZvcm0ubHN0R3JvdXBWaWV3SWQpO1xyXG4gICAgICAgIHRoaXMuYWRkRGlzdGluY3QodGhpcy5kYXRhT25seVZpZXcucm9sZUlkcywgdGhpcy5pbml0VmFsdWVGb3JUYXJnZXRGb3JtLmxzdFJvbGVWaWV3SWQpO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm1SZWFkeSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGREaXN0aW5jdChkZXN0OiBzdHJpbmdbXSwgc291cmNlOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIGlmICghc291cmNlIHx8ICFzb3VyY2UubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgc291cmNlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChkZXN0LmluZGV4T2YoaXRlbSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIGRlc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uRm9ybUluaXRpYWxpemVkKGV2dDogRXZlbnREYXRhKSB7XHJcbiAgICAgICAgZXZ0Lm1vZGVsLmlkID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdmFsaWRhdGVGb3JtKCkge1xyXG4gICAgICAgIHRoaXMubW9kZWwuZGF0YS51c2VySWRzID0gdGhpcy5mb3JtVGFyZ2V0QWxsb3dFZGl0Lm1vZGVsLmRhdGEudXNlcklkcztcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEuZGVwYXJ0bWVudElkcyA9IHRoaXMuZm9ybVRhcmdldEFsbG93RWRpdC5tb2RlbC5kYXRhLmRlcGFydG1lbnRJZHM7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmdyb3VwSWRzID0gdGhpcy5mb3JtVGFyZ2V0QWxsb3dFZGl0Lm1vZGVsLmRhdGEuZ3JvdXBJZHM7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhLnJvbGVJZHMgPSB0aGlzLmZvcm1UYXJnZXRBbGxvd0VkaXQubW9kZWwuZGF0YS5yb2xlSWRzO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEudXNlclZpZXdJZHMgPSB0aGlzLmZvcm1UYXJnZXRPbmx5Vmlldy5tb2RlbC5kYXRhLnVzZXJJZHM7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmRlcGFydG1lbnRWaWV3SWRzID0gdGhpcy5mb3JtVGFyZ2V0T25seVZpZXcubW9kZWwuZGF0YS5kZXBhcnRtZW50SWRzO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZGF0YS5ncm91cFZpZXdJZHMgPSB0aGlzLmZvcm1UYXJnZXRPbmx5Vmlldy5tb2RlbC5kYXRhLmdyb3VwSWRzO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZGF0YS5yb2xlVmlld0lkcyA9IHRoaXMuZm9ybVRhcmdldE9ubHlWaWV3Lm1vZGVsLmRhdGEucm9sZUlkcztcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQWN0aW9uS2V0VGh1Yykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0VtcHR5QXJyYXkodGhpcy5tb2RlbC5kYXRhLnVzZXJJZHMpXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLmlzRW1wdHlBcnJheSh0aGlzLm1vZGVsLmRhdGEuZGVwYXJ0bWVudElkcylcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuaXNFbXB0eUFycmF5KHRoaXMubW9kZWwuZGF0YS5ncm91cElkcylcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuaXNFbXB0eUFycmF5KHRoaXMubW9kZWwuZGF0YS5yb2xlSWRzKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnUGjhuqNpIGNo4buNbiDDrXQgbmjhuqV0IDEgbmjDs20gxJHhu5FpIHTGsOG7o25nIG5o4bqtbiAoTmfGsOG7nWkgbmjhuq1uIHjhu60gbMO9IHwgxJDGoW4gduG7iyB8IE5ow7NtIG5nxrDhu51pIGTDuW5nKScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNFbXB0eUFycmF5KHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuICF2YWx1ZSB8fCAhdmFsdWUubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE1vZGVsUHJvY2Vzc1dvcmtmbG93KCkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZUluc2VydFN1Y2Nlc3MgPSBgJHt0aGlzLmFjdGlvbi5uYW1lfSB0aMOgbmggY8O0bmdgO1xyXG4gICAgICAgIGNvbnN0IGRhdGFQb3N0ID0gdGhpcy5fY29tbW9uU2VydmljZS5jbG9uZU9iamVjdCh0aGlzLm1vZGVsLmRhdGEpO1xyXG4gICAgICAgIGRhdGFQb3N0LnRhYmxlTmFtZSA9IHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLmVudGl0eU5hbWU7XHJcbiAgICAgICAgbGV0IG5hbWUgPSAnJztcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBuYW1lID0gdGhpcy5pdGVtWzxzdHJpbmc+KHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbmFtZSA9ICg8RnVuY3Rpb24+KHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCkpKHRoaXMuaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5hbWUgPSBgJHt0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5vYmplY3ROYW1lfSAke25hbWV9YDtcclxuICAgICAgICBkYXRhUG9zdC5vYmplY3RGdWxsTmFtZSA9IG5hbWU7XHJcbiAgICAgICAgZGF0YVBvc3Qub2JqZWN0TmFtZSA9IHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLm9iamVjdE5hbWU7XHJcbiAgICAgICAgZGF0YVBvc3Qud29ya2Zsb3dDb2RlID0gdGhpcy5pdGVtLl9fd29ya2Zsb3dDb2RlO1xyXG4gICAgICAgIGRhdGFQb3N0Lml0ZW1JZCA9IHRoaXMuaXRlbS5pZDtcclxuICAgICAgICBkYXRhUG9zdC5zb3VyY2VTdGF0dXNDb2RlID0gdGhpcy5pdGVtLl9fdHJhbmdUaGFpO1xyXG4gICAgICAgIGRhdGFQb3N0LmFjdGlvbkNvZGUgPSB0aGlzLmFjdGlvbi5jb2RlO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkTGlzdFRvU3RyaW5nKGRhdGFQb3N0LCAndXNlcklkcycpO1xyXG4gICAgICAgIHRoaXMuZmllbGRMaXN0VG9TdHJpbmcoZGF0YVBvc3QsICd1c2VyVmlld0lkcycpO1xyXG4gICAgICAgIHRoaXMuZmllbGRMaXN0VG9TdHJpbmcoZGF0YVBvc3QsICdkZXBhcnRtZW50SWRzJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZExpc3RUb1N0cmluZyhkYXRhUG9zdCwgJ2RlcGFydG1lbnRWaWV3SWRzJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZExpc3RUb1N0cmluZyhkYXRhUG9zdCwgJ2dyb3VwSWRzJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZExpc3RUb1N0cmluZyhkYXRhUG9zdCwgJ2dyb3VwVmlld0lkcycpO1xyXG4gICAgICAgIHRoaXMuZmllbGRMaXN0VG9TdHJpbmcoZGF0YVBvc3QsICdyb2xlSWRzJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZExpc3RUb1N0cmluZyhkYXRhUG9zdCwgJ3JvbGVWaWV3SWRzJyk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGFQb3N0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb21pc2VBY3Rpb25JbnNlcnQoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YVBvc3QgPSB0aGlzLmdldE1vZGVsUHJvY2Vzc1dvcmtmbG93KCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLmNoYW5nZVN0YXRlKFxyXG4gICAgICAgICAgICBkYXRhUG9zdFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZmllbGRMaXN0VG9TdHJpbmcoZGF0YVBvc3Q6IGFueSwgZmllbGQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmIChkYXRhUG9zdFtmaWVsZF0pIHtcclxuICAgICAgICAgICAgZGF0YVBvc3RbZmllbGRdID0gZGF0YVBvc3RbZmllbGRdLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUluc2VydEVycm9yKCkge1xyXG4gICAgICAgIHRoaXMub25JbnZhbGlkV29ya2Zsb3cuZW1pdCh7XHJcbiAgICAgICAgICAgIGl0ZW06IHRoaXMuaXRlbSxcclxuICAgICAgICAgICAgYWN0aW9uOiB0aGlzLmFjdGlvbixcclxuICAgICAgICAgICAgYWN0aW9uQ29kZTogdGhpcy5hY3Rpb24uY29kZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|