barsa-sap-ui 1.0.296 → 1.0.298

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.
@@ -19,6 +19,7 @@ export class ReportViewRendererDirective extends BaseDirective {
19
19
  this.deselectAll = new EventEmitter();
20
20
  this.rowCheck = new EventEmitter();
21
21
  this.rowClick = new EventEmitter();
22
+ this.executeToolbarButton = new EventEmitter();
22
23
  this.expandClick = new EventEmitter();
23
24
  this.trackBySelectedFn = new EventEmitter();
24
25
  this.cartableFormClosed = new EventEmitter();
@@ -102,6 +103,7 @@ export class ReportViewRendererDirective extends BaseDirective {
102
103
  instance.formSetting = this.formSetting;
103
104
  instance.navigationArrow = this.navigationArrow;
104
105
  instance.selectedMo = this.selectedMo;
106
+ instance.hasSelected = this.hasSelected;
105
107
  instance.editFormPanelValueChange?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
106
108
  this.editFormPanelValueChange.emit(mo);
107
109
  });
@@ -156,6 +158,9 @@ export class ReportViewRendererDirective extends BaseDirective {
156
158
  instance.mandatory?.pipe(takeUntil(this._onDestroy$)).subscribe((isValid) => {
157
159
  this.mandatory.emit(isValid);
158
160
  });
161
+ instance.executeToolbarButton?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
162
+ this.executeToolbarButton.emit(e);
163
+ });
159
164
  instance.workflowShareButtons
160
165
  ?.pipe(takeUntil(this._onDestroy$))
161
166
  .subscribe((e) => {
@@ -167,7 +172,7 @@ export class ReportViewRendererDirective extends BaseDirective {
167
172
  }
168
173
  }
169
174
  ReportViewRendererDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportViewRendererDirective, deps: [{ token: i1.PortalService }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
170
- ReportViewRendererDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: ReportViewRendererDirective, selector: "[reportViewRenderer]", inputs: { view: "view", moDataList: "moDataList", allChecked: "allChecked", groupby: "groupby", isCheckList: "isCheckList", selectedCount: "selectedCount", hasSummary: "hasSummary", relationList: "relationList", columns: "columns", columnsCount: "columnsCount", secondaryColumns: "secondaryColumns", contextMenuItems: "contextMenuItems", conditionalFormats: "conditionalFormats", deviceName: "deviceName", deviceSize: "deviceSize", mobileOrTablet: "mobileOrTablet", access: "access", title: "title", customFieldInfo: "customFieldInfo", selectedMo: "selectedMo", allColumns: "allColumns", viewSetting: "viewSetting", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", allowInlineEdit: "allowInlineEdit", popin: "popin", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", navigationArrow: "navigationArrow", typeDefId: "typeDefId", containerWidth: "containerWidth", extraRelation: "extraRelation", contextView: "contextView", contentDensity: "contentDensity", hideOpenIcon: "hideOpenIcon", openOnClick: "openOnClick", inDialog: "inDialog", isMultiSelect: "isMultiSelect", disableResponsive: "disableResponsive", cartableTemplates: "cartableTemplates", cartableChildsMo: "cartableChildsMo" }, outputs: { editFormPanelCancel: "editFormPanelCancel", editFormPanelValueChange: "editFormPanelValueChange", ulvCommandClick: "ulvCommandClick", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter", deselectAll: "deselectAll", rowCheck: "rowCheck", rowClick: "rowClick", expandClick: "expandClick", trackBySelectedFn: "trackBySelectedFn", cartableFormClosed: "cartableFormClosed", createNewMo: "createNewMo", updateMo: "updateMo", allCheckbox: "allCheckbox", mandatory: "mandatory", editFormPanelSave: "editFormPanelSave", columnResized: "columnResized", selectNextInlineRecord: "selectNextInlineRecord", workflowShareButtons: "workflowShareButtons" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
175
+ ReportViewRendererDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: ReportViewRendererDirective, selector: "[reportViewRenderer]", inputs: { view: "view", moDataList: "moDataList", allChecked: "allChecked", groupby: "groupby", isCheckList: "isCheckList", selectedCount: "selectedCount", hasSummary: "hasSummary", relationList: "relationList", columns: "columns", columnsCount: "columnsCount", secondaryColumns: "secondaryColumns", contextMenuItems: "contextMenuItems", conditionalFormats: "conditionalFormats", deviceName: "deviceName", deviceSize: "deviceSize", mobileOrTablet: "mobileOrTablet", access: "access", title: "title", customFieldInfo: "customFieldInfo", selectedMo: "selectedMo", allColumns: "allColumns", viewSetting: "viewSetting", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", allowInlineEdit: "allowInlineEdit", popin: "popin", hasSelected: "hasSelected", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", navigationArrow: "navigationArrow", typeDefId: "typeDefId", containerWidth: "containerWidth", extraRelation: "extraRelation", contextView: "contextView", contentDensity: "contentDensity", hideOpenIcon: "hideOpenIcon", openOnClick: "openOnClick", inDialog: "inDialog", isMultiSelect: "isMultiSelect", disableResponsive: "disableResponsive", cartableTemplates: "cartableTemplates", cartableChildsMo: "cartableChildsMo" }, outputs: { editFormPanelCancel: "editFormPanelCancel", editFormPanelValueChange: "editFormPanelValueChange", ulvCommandClick: "ulvCommandClick", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter", deselectAll: "deselectAll", rowCheck: "rowCheck", rowClick: "rowClick", executeToolbarButton: "executeToolbarButton", expandClick: "expandClick", trackBySelectedFn: "trackBySelectedFn", cartableFormClosed: "cartableFormClosed", createNewMo: "createNewMo", updateMo: "updateMo", allCheckbox: "allCheckbox", mandatory: "mandatory", editFormPanelSave: "editFormPanelSave", columnResized: "columnResized", selectNextInlineRecord: "selectNextInlineRecord", workflowShareButtons: "workflowShareButtons" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
171
176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportViewRendererDirective, decorators: [{
172
177
  type: Directive,
173
178
  args: [{
@@ -225,6 +230,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
225
230
  type: Input
226
231
  }], popin: [{
227
232
  type: Input
233
+ }], hasSelected: [{
234
+ type: Input
228
235
  }], formSetting: [{
229
236
  type: Input
230
237
  }], disableOverflowContextMenu: [{
@@ -273,6 +280,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
273
280
  type: Output
274
281
  }], rowClick: [{
275
282
  type: Output
283
+ }], executeToolbarButton: [{
284
+ type: Output
276
285
  }], expandClick: [{
277
286
  type: Output
278
287
  }], trackBySelectedFn: [{
@@ -296,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
296
305
  }], workflowShareButtons: [{
297
306
  type: Output
298
307
  }] } });
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXctcmVuZGVyZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvcmVwb3J0LXZpZXctcmVuZGVyZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFJTCxNQUFNLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVILGFBQWEsRUFlaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUszQyxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsYUFBYTtJQWtFMUQsWUFDWSxjQUE2QixFQUM3QixJQUFzQixFQUN0QixTQUFtQixFQUNqQixHQUFlO1FBRXpCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUxILG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQTNCbkIsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDOUQsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFFbkUsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUNyRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENB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QkFBcEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQge1xuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBCYXNlRGlyZWN0aXZlLFxuICAgIGNvbHVtbnNSZXNpemVkRXZlbnRBcmdzLFxuICAgIERlZmF1bHRDb21tYW5kc0FjY2VzcyxcbiAgICBEZXZpY2VTaXplLFxuICAgIEZvcm1TZXR0aW5nLFxuICAgIE1lbnVJdGVtLFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgUG9ydGFsU2VydmljZSxcbiAgICBSZWxhdGlvbkl0ZW1UeXBlLFxuICAgIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgU29ydFNldHRpbmcsXG4gICAgVWlSZXBvcnRWaWV3QmFzZSxcbiAgICBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZyxcbiAgICBTaGFyZUJ1dHRvbnNDaG9pY2VEZWZcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZXBvcnRWaWV3UmVuZGVyZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRWaWV3UmVuZGVyZXJEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdmlldzogVWlSZXBvcnRWaWV3QmFzZTtcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgQElucHV0KCkgYWxsQ2hlY2tlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBncm91cGJ5OiBTb3J0U2V0dGluZ1tdO1xuICAgIEBJbnB1dCgpIGlzQ2hlY2tMaXN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ291bnQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBoYXNTdW1tYXJ5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJlbGF0aW9uTGlzdDogQXJyYXk8UmVsYXRpb25JdGVtVHlwZT47XG4gICAgQElucHV0KCkgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdO1xuICAgIEBJbnB1dCgpIGNvbHVtbnNDb3VudDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHNlY29uZGFyeUNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTtcbiAgICBASW5wdXQoKSBjb250ZXh0TWVudUl0ZW1zOiBNZW51SXRlbVtdO1xuICAgIEBJbnB1dCgpIGNvbmRpdGlvbmFsRm9ybWF0czogYW55W107XG4gICAgQElucHV0KCkgZGV2aWNlTmFtZTogRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiBBYmJyZXZhdGlvbkRldmljZVNpemU7XG4gICAgQElucHV0KCkgbW9iaWxlT3JUYWJsZXQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYWNjZXNzOiBEZWZhdWx0Q29tbWFuZHNBY2Nlc3M7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXN0b21GaWVsZEluZm86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBhbnk7XG4gICAgQElucHV0KCkgc2VsZWN0ZWRNbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSBhbGxDb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XG4gICAgQElucHV0KCkgdmlld1NldHRpbmc6IFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nO1xuICAgIEBJbnB1dCgpIGlubGluZUVkaXRNb2RlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG9ubHlJbmxpbmVFZGl0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGFsbG93SW5saW5lRWRpdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwb3BpbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBmb3JtU2V0dGluZzogRm9ybVNldHRpbmc7XG4gICAgQElucHV0KCkgZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbmF2aWdhdGlvbkFycm93OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdHlwZURlZklkOiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29udGFpbmVyV2lkdGg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBleHRyYVJlbGF0aW9uOiBhbnk7XG4gICAgQElucHV0KCkgY29udGV4dFZpZXc6IGFueTtcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XG4gICAgQElucHV0KCkgaGlkZU9wZW5JY29uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG9wZW5PbkNsaWNrOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGlzYWJsZVJlc3BvbnNpdmU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY2FydGFibGVUZW1wbGF0ZXM6IHsgW2tleTogc3RyaW5nXTogRm9ybVNldHRpbmcgfTtcbiAgICBASW5wdXQoKSBjYXJ0YWJsZUNoaWxkc01vOiB7IFtrZXk6IHN0cmluZ106IE1ldGFvYmplY3REYXRhTW9kZWwgfTtcblxuICAgIEBPdXRwdXQoKSBlZGl0Rm9ybVBhbmVsQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG5cbiAgICBAT3V0cHV0KCkgdWx2Q29tbWFuZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHNvcnRBc2NlbmRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydERlc2NlbmRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIGRlc2VsZWN0QWxsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSByb3dDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtbzsgaW5kZXg7IGNhdXNlPyB9PigpO1xuICAgIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtbzsgaW5kZXggfT4oKTtcbiAgICBAT3V0cHV0KCkgZXhwYW5kQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHRyYWNrQnlTZWxlY3RlZEZuID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OyByZWNvcmQgfT4oKTtcbiAgICBAT3V0cHV0KCkgY2FydGFibGVGb3JtQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OyBtbyB9PigpO1xuICAgIEBPdXRwdXQoKSBjcmVhdGVOZXdNbyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgdXBkYXRlTW8gPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIGFsbENoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBtYW5kYXRvcnkgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGVkaXRGb3JtUGFuZWxTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBjb2x1bW5SZXNpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxjb2x1bW5zUmVzaXplZEV2ZW50QXJncz4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0TmV4dElubGluZVJlY29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgd29ya2Zsb3dTaGFyZUJ1dHRvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPFNoYXJlQnV0dG9uc0Nob2ljZURlZj4oKTtcblxuICAgIF9yZXBvcnRWaWV3UmVmOiBDb21wb25lbnRSZWY8UmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8VWlSZXBvcnRWaWV3QmFzZVNldHRpbmc+PjtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfdmNyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2VsKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHZpZXcgfSA9IGNoYW5nZXM7XG5cbiAgICAgICAgaWYgKHZpZXcgJiYgIXZpZXcuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydFZpZXdSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fdmNyLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLl9pbnNlcnRWaWV3KHZpZXcuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvcnRWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZi5pbnN0YW5jZS5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5faW5zZXJ0Vmlldyh0aGlzLnZpZXcpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZj8uZGVzdHJveSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pbnNlcnRWaWV3KHZpZXcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF2aWV3KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBNb2R1bGUsIE1vZHVsZUZpbGVOYW1lLCBOYW1lLCBTZWxlY3RvciB9ID0gdmlldy5VaUNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZVxuICAgICAgICAgICAgLmdldENvbXBvbmVudChNb2R1bGUsIE1vZHVsZUZpbGVOYW1lLCBOYW1lLCBTZWxlY3RvciwgdGhpcy5faW5qZWN0b3IpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxVaVJlcG9ydFZpZXdCYXNlU2V0dGluZz4+KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FydGFibGVUZW1wbGF0ZXMgPSB0aGlzLmNhcnRhYmxlVGVtcGxhdGVzO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhcnRhYmxlQ2hpbGRzTW8gPSB0aGlzLmNhcnRhYmxlQ2hpbGRzTW87XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubW9EYXRhTGlzdCA9IHRoaXMubW9EYXRhTGlzdDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5ncm91cGJ5ID0gdGhpcy5ncm91cGJ5O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmN1c3RvbUZpZWxkSW5mbyA9IHRoaXMuY3VzdG9tRmllbGRJbmZvO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRpc2FibGVSZXNwb25zaXZlID0gdGhpcy5kaXNhYmxlUmVzcG9uc2l2ZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wb3BpbiA9IHRoaXMucG9waW47XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29udGV4dFZpZXcgPSB0aGlzLmNvbnRleHRWaWV3O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzQ2hlY2tMaXN0ID0gdGhpcy5pc0NoZWNrTGlzdDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmluRGlhbG9nID0gdGhpcy5pbkRpYWxvZztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc011bHRpU2VsZWN0ID0gdGhpcy5pc011bHRpU2VsZWN0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbHVtbnNDb3VudCA9IHRoaXMuY29sdW1uc0NvdW50O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4dHJhUmVsYXRpb24gPSB0aGlzLmV4dHJhUmVsYXRpb247XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2Vjb25kYXJ5Q29sdW1ucyA9IHRoaXMuc2Vjb25kYXJ5Q29sdW1ucztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250ZXh0TWVudUl0ZW1zID0gdGhpcy5jb250ZXh0TWVudUl0ZW1zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsRm9ybWF0cyA9IHRoaXMuY29uZGl0aW9uYWxGb3JtYXRzO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51ID0gdGhpcy5kaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS50eXBlRGVmSWQgPSB0aGlzLnR5cGVEZWZJZDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5kZXZpY2VOYW1lID0gdGhpcy5kZXZpY2VOYW1lO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRldmljZVNpemUgPSB0aGlzLmRldmljZVNpemU7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubW9iaWxlT3JUYWJsZXQgPSB0aGlzLm1vYmlsZU9yVGFibGV0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbnRhaW5lcldpZHRoID0gdGhpcy5jb250YWluZXJXaWR0aDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb2x1bW5zQ291bnQgPSB0aGlzLmNvbHVtbnNDb3VudDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZWxlY3RlZENvdW50ID0gdGhpcy5zZWxlY3RlZENvdW50O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGVPcGVuSWNvbiA9IHRoaXMuaGlkZU9wZW5JY29uO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLm9wZW5PbkNsaWNrID0gdGhpcy5vcGVuT25DbGljaztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5hY2Nlc3MgPSB0aGlzLmFjY2VzcztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS50aXRsZSA9IHRoaXMudGl0bGU7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaGFzU3VtbWFyeSA9IHRoaXMuaGFzU3VtbWFyeTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250ZW50RGVuc2l0eSA9IHRoaXMuY29udGVudERlbnNpdHk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucmVsYXRpb25MaXN0ID0gdGhpcy5yZWxhdGlvbkxpc3Q7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYWxsQ29sdW1ucyA9IHRoaXMuYWxsQ29sdW1ucyA/PyB0aGlzLmNvbHVtbnM7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uudmlld1NldHRpbmcgPSB2aWV3LlVpQ29tcG9uZW50LlNldHRpbmdzO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlubGluZUVkaXRNb2RlID0gdGhpcy5pbmxpbmVFZGl0TW9kZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5vbmx5SW5saW5lRWRpdCA9IHRoaXMub25seUlubGluZUVkaXQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYWxsb3dJbmxpbmVFZGl0ID0gdGhpcy5hbGxvd0lubGluZUVkaXQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZm9ybVNldHRpbmcgPSB0aGlzLmZvcm1TZXR0aW5nO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLm5hdmlnYXRpb25BcnJvdyA9IHRoaXMubmF2aWdhdGlvbkFycm93O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnNlbGVjdGVkTW8gPSB0aGlzLnNlbGVjdGVkTW87XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChtbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZS5lbWl0KG1vKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZWxlY3ROZXh0SW5saW5lUmVjb3JkPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChtbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE5leHRJbmxpbmVSZWNvcmQuZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZWRpdEZvcm1QYW5lbENhbmNlbD8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsQ2FuY2VsLmVtaXQobW8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnVsdkNvbW1hbmRDbGljaz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVsdkNvbW1hbmRDbGljay5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnNvcnRBc2NlbmRpbmc/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0QXNjZW5kaW5nLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc29ydERlc2NlbmRpbmc/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0RGVzY2VuZGluZy5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmZpbHRlcj8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29sdW1uUmVzaXplZD8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtblJlc2l6ZWQuZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnJvd0NoZWNrPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlOiB7IG1vOyBpbmRleDsgY2F1c2U/IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dDaGVjay5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRlc2VsZWN0QWxsPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXNlbGVjdEFsbC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uucm93Q2xpY2s/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGU6IHsgbW87IGluZGV4IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4cGFuZENsaWNrPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kQ2xpY2suZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5hbGxDaGVja2JveD8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbENoZWNrYm94LmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZWRpdEZvcm1QYW5lbFNhdmU/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFNhdmUuZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FydGFibGVGb3JtQ2xvc2VkPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlOiB7IG1vOyBpbmRleCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FydGFibGVGb3JtQ2xvc2VkLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY3JlYXRlTmV3TW8/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU5ld01vLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS51cGRhdGVNbz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNby5lbWl0KG1vKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5tYW5kYXRvcnk/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzVmFsaWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW5kYXRvcnkuZW1pdChpc1ZhbGlkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS53b3JrZmxvd1NoYXJlQnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChlOiBTaGFyZUJ1dHRvbnNDaG9pY2VEZWYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTaGFyZUJ1dHRvbnMuZW1pdChlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmNyLmluc2VydChjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlcG9ydFZpZXdSZWYgPSBjb21wb25lbnRSZWY7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXctcmVuZGVyZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvcmVwb3J0LXZpZXctcmVuZGVyZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFJTCxNQUFNLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVILGFBQWEsRUFlaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUszQyxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsYUFBYTtJQW9FMUQsWUFDWSxjQUE2QixFQUM3QixJQUFzQixFQUN0QixTQUFtQixFQUNqQixHQUFlO1FBRXpCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUxILG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQTVCbkIsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDOUQsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFFbkUsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUNyRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENB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LG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQge1xuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBCYXNlRGlyZWN0aXZlLFxuICAgIGNvbHVtbnNSZXNpemVkRXZlbnRBcmdzLFxuICAgIERlZmF1bHRDb21tYW5kc0FjY2VzcyxcbiAgICBEZXZpY2VTaXplLFxuICAgIEZvcm1TZXR0aW5nLFxuICAgIE1lbnVJdGVtLFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgUG9ydGFsU2VydmljZSxcbiAgICBSZWxhdGlvbkl0ZW1UeXBlLFxuICAgIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgU29ydFNldHRpbmcsXG4gICAgVWlSZXBvcnRWaWV3QmFzZSxcbiAgICBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZyxcbiAgICBTaGFyZUJ1dHRvbnNDaG9pY2VEZWZcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZXBvcnRWaWV3UmVuZGVyZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRWaWV3UmVuZGVyZXJEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdmlldzogVWlSZXBvcnRWaWV3QmFzZTtcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgQElucHV0KCkgYWxsQ2hlY2tlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBncm91cGJ5OiBTb3J0U2V0dGluZ1tdO1xuICAgIEBJbnB1dCgpIGlzQ2hlY2tMaXN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ291bnQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBoYXNTdW1tYXJ5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJlbGF0aW9uTGlzdDogQXJyYXk8UmVsYXRpb25JdGVtVHlwZT47XG4gICAgQElucHV0KCkgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdO1xuICAgIEBJbnB1dCgpIGNvbHVtbnNDb3VudDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHNlY29uZGFyeUNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTtcbiAgICBASW5wdXQoKSBjb250ZXh0TWVudUl0ZW1zOiBNZW51SXRlbVtdO1xuICAgIEBJbnB1dCgpIGNvbmRpdGlvbmFsRm9ybWF0czogYW55W107XG4gICAgQElucHV0KCkgZGV2aWNlTmFtZTogRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiBBYmJyZXZhdGlvbkRldmljZVNpemU7XG4gICAgQElucHV0KCkgbW9iaWxlT3JUYWJsZXQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYWNjZXNzOiBEZWZhdWx0Q29tbWFuZHNBY2Nlc3M7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXN0b21GaWVsZEluZm86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBhbnk7XG4gICAgQElucHV0KCkgc2VsZWN0ZWRNbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSBhbGxDb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XG4gICAgQElucHV0KCkgdmlld1NldHRpbmc6IFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nO1xuICAgIEBJbnB1dCgpIGlubGluZUVkaXRNb2RlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG9ubHlJbmxpbmVFZGl0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGFsbG93SW5saW5lRWRpdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwb3BpbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoYXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBmb3JtU2V0dGluZzogRm9ybVNldHRpbmc7XG4gICAgQElucHV0KCkgZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbmF2aWdhdGlvbkFycm93OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdHlwZURlZklkOiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29udGFpbmVyV2lkdGg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBleHRyYVJlbGF0aW9uOiBhbnk7XG4gICAgQElucHV0KCkgY29udGV4dFZpZXc6IGFueTtcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XG4gICAgQElucHV0KCkgaGlkZU9wZW5JY29uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG9wZW5PbkNsaWNrOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGlzYWJsZVJlc3BvbnNpdmU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY2FydGFibGVUZW1wbGF0ZXM6IHsgW2tleTogc3RyaW5nXTogRm9ybVNldHRpbmcgfTtcbiAgICBASW5wdXQoKSBjYXJ0YWJsZUNoaWxkc01vOiB7IFtrZXk6IHN0cmluZ106IE1ldGFvYmplY3REYXRhTW9kZWwgfTtcblxuICAgIEBPdXRwdXQoKSBlZGl0Rm9ybVBhbmVsQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG5cbiAgICBAT3V0cHV0KCkgdWx2Q29tbWFuZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHNvcnRBc2NlbmRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydERlc2NlbmRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIGRlc2VsZWN0QWxsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSByb3dDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtbzsgaW5kZXg7IGNhdXNlPyB9PigpO1xuICAgIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtbzsgaW5kZXggfT4oKTtcbiAgICBAT3V0cHV0KCkgZXhlY3V0ZVRvb2xiYXJCdXR0b24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbUlkOiBzdHJpbmc7IG9wdGlvbnM/OiBhbnkgfT4oKTtcbiAgICBAT3V0cHV0KCkgZXhwYW5kQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHRyYWNrQnlTZWxlY3RlZEZuID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OyByZWNvcmQgfT4oKTtcbiAgICBAT3V0cHV0KCkgY2FydGFibGVGb3JtQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OyBtbyB9PigpO1xuICAgIEBPdXRwdXQoKSBjcmVhdGVOZXdNbyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgdXBkYXRlTW8gPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIGFsbENoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBtYW5kYXRvcnkgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGVkaXRGb3JtUGFuZWxTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBjb2x1bW5SZXNpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxjb2x1bW5zUmVzaXplZEV2ZW50QXJncz4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0TmV4dElubGluZVJlY29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgd29ya2Zsb3dTaGFyZUJ1dHRvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPFNoYXJlQnV0dG9uc0Nob2ljZURlZj4oKTtcblxuICAgIF9yZXBvcnRWaWV3UmVmOiBDb21wb25lbnRSZWY8UmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8VWlSZXBvcnRWaWV3QmFzZVNldHRpbmc+PjtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfdmNyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2VsKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHZpZXcgfSA9IGNoYW5nZXM7XG5cbiAgICAgICAgaWYgKHZpZXcgJiYgIXZpZXcuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydFZpZXdSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fdmNyLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLl9pbnNlcnRWaWV3KHZpZXcuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvcnRWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZi5pbnN0YW5jZS5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5faW5zZXJ0Vmlldyh0aGlzLnZpZXcpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZj8uZGVzdHJveSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pbnNlcnRWaWV3KHZpZXcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF2aWV3KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBNb2R1bGUsIE1vZHVsZUZpbGVOYW1lLCBOYW1lLCBTZWxlY3RvciB9ID0gdmlldy5VaUNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZVxuICAgICAgICAgICAgLmdldENvbXBvbmVudChNb2R1bGUsIE1vZHVsZUZpbGVOYW1lLCBOYW1lLCBTZWxlY3RvciwgdGhpcy5faW5qZWN0b3IpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxVaVJlcG9ydFZpZXdCYXNlU2V0dGluZz4+KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FydGFibGVUZW1wbGF0ZXMgPSB0aGlzLmNhcnRhYmxlVGVtcGxhdGVzO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhcnRhYmxlQ2hpbGRzTW8gPSB0aGlzLmNhcnRhYmxlQ2hpbGRzTW87XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubW9EYXRhTGlzdCA9IHRoaXMubW9EYXRhTGlzdDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5ncm91cGJ5ID0gdGhpcy5ncm91cGJ5O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmN1c3RvbUZpZWxkSW5mbyA9IHRoaXMuY3VzdG9tRmllbGRJbmZvO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRpc2FibGVSZXNwb25zaXZlID0gdGhpcy5kaXNhYmxlUmVzcG9uc2l2ZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wb3BpbiA9IHRoaXMucG9waW47XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29udGV4dFZpZXcgPSB0aGlzLmNvbnRleHRWaWV3O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzQ2hlY2tMaXN0ID0gdGhpcy5pc0NoZWNrTGlzdDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmluRGlhbG9nID0gdGhpcy5pbkRpYWxvZztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc011bHRpU2VsZWN0ID0gdGhpcy5pc011bHRpU2VsZWN0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbHVtbnNDb3VudCA9IHRoaXMuY29sdW1uc0NvdW50O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4dHJhUmVsYXRpb24gPSB0aGlzLmV4dHJhUmVsYXRpb247XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2Vjb25kYXJ5Q29sdW1ucyA9IHRoaXMuc2Vjb25kYXJ5Q29sdW1ucztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250ZXh0TWVudUl0ZW1zID0gdGhpcy5jb250ZXh0TWVudUl0ZW1zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsRm9ybWF0cyA9IHRoaXMuY29uZGl0aW9uYWxGb3JtYXRzO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51ID0gdGhpcy5kaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS50eXBlRGVmSWQgPSB0aGlzLnR5cGVEZWZJZDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5kZXZpY2VOYW1lID0gdGhpcy5kZXZpY2VOYW1lO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRldmljZVNpemUgPSB0aGlzLmRldmljZVNpemU7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubW9iaWxlT3JUYWJsZXQgPSB0aGlzLm1vYmlsZU9yVGFibGV0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbnRhaW5lcldpZHRoID0gdGhpcy5jb250YWluZXJXaWR0aDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb2x1bW5zQ291bnQgPSB0aGlzLmNvbHVtbnNDb3VudDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZWxlY3RlZENvdW50ID0gdGhpcy5zZWxlY3RlZENvdW50O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGVPcGVuSWNvbiA9IHRoaXMuaGlkZU9wZW5JY29uO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLm9wZW5PbkNsaWNrID0gdGhpcy5vcGVuT25DbGljaztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5hY2Nlc3MgPSB0aGlzLmFjY2VzcztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS50aXRsZSA9IHRoaXMudGl0bGU7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaGFzU3VtbWFyeSA9IHRoaXMuaGFzU3VtbWFyeTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250ZW50RGVuc2l0eSA9IHRoaXMuY29udGVudERlbnNpdHk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucmVsYXRpb25MaXN0ID0gdGhpcy5yZWxhdGlvbkxpc3Q7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYWxsQ29sdW1ucyA9IHRoaXMuYWxsQ29sdW1ucyA/PyB0aGlzLmNvbHVtbnM7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uudmlld1NldHRpbmcgPSB2aWV3LlVpQ29tcG9uZW50LlNldHRpbmdzO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlubGluZUVkaXRNb2RlID0gdGhpcy5pbmxpbmVFZGl0TW9kZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5vbmx5SW5saW5lRWRpdCA9IHRoaXMub25seUlubGluZUVkaXQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYWxsb3dJbmxpbmVFZGl0ID0gdGhpcy5hbGxvd0lubGluZUVkaXQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZm9ybVNldHRpbmcgPSB0aGlzLmZvcm1TZXR0aW5nO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLm5hdmlnYXRpb25BcnJvdyA9IHRoaXMubmF2aWdhdGlvbkFycm93O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnNlbGVjdGVkTW8gPSB0aGlzLnNlbGVjdGVkTW87XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaGFzU2VsZWN0ZWQgPSB0aGlzLmhhc1NlbGVjdGVkO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZT8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0TmV4dElubGluZVJlY29yZD8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3ROZXh0SW5saW5lUmVjb3JkLmVtaXQobW8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmVkaXRGb3JtUGFuZWxDYW5jZWw/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbENhbmNlbC5lbWl0KG1vKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS51bHZDb21tYW5kQ2xpY2s/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bHZDb21tYW5kQ2xpY2suZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zb3J0QXNjZW5kaW5nPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydEFzY2VuZGluZy5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnNvcnREZXNjZW5kaW5nPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydERlc2NlbmRpbmcuZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5maWx0ZXI/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIuZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbHVtblJlc2l6ZWQ/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5SZXNpemVkLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5yb3dDaGVjaz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZTogeyBtbzsgaW5kZXg7IGNhdXNlPyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93Q2hlY2suZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5kZXNlbGVjdEFsbD8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RBbGwuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnJvd0NsaWNrPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlOiB7IG1vOyBpbmRleCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93Q2xpY2suZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5leHBhbmRDbGljaz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZTogTWV0YW9iamVjdERhdGFNb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZENsaWNrLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYWxsQ2hlY2tib3g/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxDaGVja2JveC5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmVkaXRGb3JtUGFuZWxTYXZlPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChtbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxTYXZlLmVtaXQobW8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhcnRhYmxlRm9ybUNsb3NlZD8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZTogeyBtbzsgaW5kZXggfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcnRhYmxlRm9ybUNsb3NlZC5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNyZWF0ZU5ld01vPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVOZXdNby5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlTW8/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTW8uZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubWFuZGF0b3J5Py5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1ZhbGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFuZGF0b3J5LmVtaXQoaXNWYWxpZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZXhlY3V0ZVRvb2xiYXJCdXR0b24/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlVG9vbGJhckJ1dHRvbi5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLndvcmtmbG93U2hhcmVCdXR0b25zXG4gICAgICAgICAgICAgICAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGU6IFNoYXJlQnV0dG9uc0Nob2ljZURlZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl92Y3IuaW5zZXJ0KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZiA9IGNvbXBvbmVudFJlZjtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -167,6 +167,10 @@ export class SapUiReportBaseComponent extends ReportBaseComponent {
167
167
  this._formpanelService.destroy();
168
168
  }
169
169
  }
170
+ onExecuteToolbarButton(e) {
171
+ const { itemId, options } = e;
172
+ this._ulvMainService.executeToolbarButton(itemId, options);
173
+ }
170
174
  onEditMode() {
171
175
  this._setInlineEdit(!this._inlineEditMode);
172
176
  }
@@ -719,4 +723,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
719
723
  }], RefreshFormPanelControl: [{
720
724
  type: Input
721
725
  }] } });
722
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwLXVpLXJlcG9ydC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3NhcC11aS1yZXBvcnQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBR1IsSUFBSSxFQUNKLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pILE9BQU8sRUFLSCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ25CLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRSxPQUFPLEVBQ0gsUUFBUSxFQUtSLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsZUFBZSxFQUlmLG1CQUFtQixFQUtuQixlQUFlLEVBQ2xCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUs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QUFJOzRDQTdFTSxjQUFjO3NCQUF4QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0ksZ0JBQWdCO3NCQUE1QyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDQSxZQUFZO3NCQUF0QyxZQUFZO3VCQUFDLFdBQVc7Z0JBQ2MsU0FBUztzQkFBL0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVyQyxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQXNWM0Isb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsdUJBQXVCO3NCQUEvQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUsIE92ZXJsYXksIFNjcm9sbFN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eSxcbiAgICBDb250ZW50RGVuc2l0eVNlcnZpY2UsXG4gICAgRGlhbG9nQ29uZmlnLFxuICAgIERpYWxvZ1NlcnZpY2UsXG4gICAgVGFibGVDb21wb25lbnQsXG4gICAgVG9vbGJhckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZSwgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybSc7XG5cbmltcG9ydCB7XG4gICAgQmFyc2FBcGksXG4gICAgY29sdW1uc1Jlc2l6ZWRFdmVudEFyZ3MsXG4gICAgRGVmYXVsdENvbW1hbmRzQWNjZXNzLFxuICAgIERldmljZVNpemUsXG4gICAgRm9ybVBhbmVsU2VydmljZSxcbiAgICBHZXRBbGxDb2x1bW5zU29ydGVkLFxuICAgIGdldENvbnRyb2xTaXplTW9kZSxcbiAgICBnZXRHcmlkU2V0dGluZ3MsXG4gICAgTGF5b3V0U2VydmljZSxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFBvcnRhbFNlcnZpY2UsXG4gICAgUmVwb3J0QmFzZUNvbXBvbmVudCxcbiAgICBSZXBvcnRWaWV3Q29sdW1uLFxuICAgIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nLFxuICAgIFVsdk1haW5TZXJ2aWNlLFxuICAgIFNoYXJlQnV0dG9uc0Nob2ljZURlZixcbiAgICBnZXRQYXJlbnRIZWlnaHRcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgTGF5b3V0Q29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0LWNvbnRyb2wvbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRNb0RhdGFMaXN0IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgVWx2Q29sdW1uU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3Vsdi1jb2x1bW4tc2V0dGluZ3MvdWx2LWNvbHVtbi1zZXR0aW5ncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVWx2U29ydFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91bHYtc29ydC1zZXR0aW5ncy91bHYtc29ydC1zZXR0aW5ncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVWx2R3JvdXBieVNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91bHYtZ3JvdXBieS1zZXR0aW5ncy91bHYtZ3JvdXBieS1zZXR0aW5ncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVWx2RmlsdGVyU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3Vsdi1maWx0ZXItc2V0dGluZ3MvdWx2LWZpbHRlci1zZXR0aW5ncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1zYXAtdWktcmVwb3J0LWJhc2UnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTYXBVaVJlcG9ydEJhc2VDb21wb25lbnQ8VCBleHRlbmRzIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPlxuICAgIGV4dGVuZHMgUmVwb3J0QmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgICBAVmlld0NoaWxkKFRhYmxlQ29tcG9uZW50KSB0YWJsZUNvbXBvbmVudDogVGFibGVDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZChUb29sYmFyQ29tcG9uZW50KSB0b29sYmFyQ29tcG9uZW50OiBUb29sYmFyQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RhYmxlUm93cycpIHRhYmxlUm93c1JlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICAgIEBWaWV3Q2hpbGQoJ2NhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIGNhbnZhc1JlZjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkcmVuKExheW91dENvbnRyb2xDb21wb25lbnQpXG4gICAgbGF5b3V0Q29udHJvbHNSZWY6IFF1ZXJ5TGlzdDxMYXlvdXRDb250cm9sQ29tcG9uZW50PjtcbiAgICB1c2VMYXlvdXRJdGVtVGV4dEZvckNvbnRyb2wgPSBmYWxzZTtcbiAgICBoYXNTZWxlY3RlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgc2hvd09rQ2FuY2VsQnV0dG9uczogYW55O1xuICAgIHBhcmVudEhlaWdodCA9IDA7XG4gICAgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcgPSB7XG4gICAgICAgIHJlc3BvbnNpdmVQYWRkaW5nOiB0cnVlLFxuICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IHRydWUsXG4gICAgICAgIG1pbldpZHRoOiAnNDByZW0nLFxuICAgICAgICBtaW5IZWlnaHQ6ICc5MHZoJyxcbiAgICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXG4gICAgICAgIG1heEhlaWdodDogJzEwMHZoJyxcbiAgICAgICAgcmVzaXphYmxlOiB0cnVlXG4gICAgfTtcblxuICAgIHNlbGVjdGVkUm93c051bWJlciA9IHt9O1xuICAgIHNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIHNlbGVjdGlvbkFkYXB0ZXJIYW5kbGVyOiB7XG4gICAgICAgIHNjb3BlOiBhbnk7XG4gICAgICAgIHJvd3NlbGVjdDogYW55O1xuICAgICAgICByb3dkZXNlbGVjdDogYW55O1xuICAgICAgICBiZWZvcmVyb3dzZWxlY3Q6IGFueTtcbiAgICB9O1xuICAgIG5hdmlnYXRpb25BcnJvdyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBjdXN0b21Sb3dIZWlnaHQ6IGFueTtcbiAgICByb3dDbGljayA9IHRydWU7XG4gICAgY2VsbENsaWNrID0gZmFsc2U7XG4gICAgZGV2aWNlTmFtZSQ6IE9ic2VydmFibGU8RGV2aWNlU2l6ZT47XG4gICAgbW9iaWxlT3JUYWJsZXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgc2Vjb25kYXJ5Q29sdW1uc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVwb3J0Vmlld0NvbHVtbltdPihbXSk7XG4gICAgc2Vjb25kYXJ5Q29sdW1ucyQgPSB0aGlzLnNlY29uZGFyeUNvbHVtbnNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgcG9waW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNvbnRlbnREZW5zaXR5JDogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eT47XG5cbiAgICByb3dBY3RpdmFibGUgPSB0cnVlO1xuICAgIG9wZW5PdmVyZmxvd0NvbW1hbmRzOiBib29sZWFuW10gPSBbXTtcbiAgICBjb250YWluZXJXaWR0aFNvdXJjZSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgY2xvc2VTY3JvbGxTdHJhdGVneTogU2Nyb2xsU3RyYXRlZ3k7XG4gICAgcm93SG92ZXJhYmxlOiBib29sZWFuO1xuICAgIHNvdXJjZTogVGFibGVEYXRhU291cmNlPE1ldGFvYmplY3REYXRhTW9kZWw+O1xuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvbk1vZGU7XG4gICAgY29sdW1uc0NvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAgIHNlY29uZGFyeUNvbHVtbnNDb3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICBjb250YWluZXJXaWR0aCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICBjb2x1bW5zJDogT2JzZXJ2YWJsZTxSZXBvcnRWaWV3Q29sdW1uW10+O1xuICAgIGdyaWREYXRhU291cmNlOiBHcmlkTW9EYXRhTGlzdDtcbiAgICBzaW5nbGVTZWxlY3Rpb24gPSBTZWxlY3Rpb25Nb2RlLlNJTkdMRTtcbiAgICBtdWx0aXBsZVNlbGVjdGlvbiA9IFNlbGVjdGlvbk1vZGUuTVVMVElQTEU7XG4gICAgYWxsb3dJbmxpbmVFZGl0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBpbmxpbmVFZGl0TW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgb25seUlubGluZUVkaXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XG4gICAgbGF5b3V0JDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHJ0bCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcmVwb3J0SWQ6IHN0cmluZztcbiAgICB2aWV3U2V0dGluZzogVDtcbiAgICBkaXNhYmxlUmVzcG9uc2l2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9kZXZpY2VOYW1lU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEZXZpY2VTaXplPignZGVza3RvcCcpO1xuICAgIHByaXZhdGUgX29sZENvbnRhaW5lcjogYW55O1xuICAgIHByaXZhdGUgX29wZW5PbkNsaWNrOiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9vdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwcm90ZWN0ZWQgX2NvbnRlbnREZW5zaXR5U2VydmljZTogQ29udGVudERlbnNpdHlTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF91bHZNYWluU2VydmljZTogVWx2TWFpblNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcm90ZWN0ZWQgZG9jdW1lbnQsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJvdGVjdGVkIF9mb3JtcGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9wb3J0YWxTZXJ2aWNlLCBfdWx2TWFpblNlcnZpY2UpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoJCA9IHRoaXMuY29udGFpbmVyV2lkdGhTb3VyY2UkXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgdGhpcy5kZXZpY2VOYW1lJCA9IHRoaXMuX2RldmljZU5hbWVTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZVJlc3BvbnNpdmUkID0gdGhpcy5kZXZpY2VOYW1lJC5waXBlKG1hcCgoYykgPT4gYyA9PT0gJ2Rlc2t0b3AnKSk7XG4gICAgICAgIHRoaXMubW9iaWxlT3JUYWJsZXQkID0gdGhpcy5kZXZpY2VOYW1lJC5waXBlKG1hcCgoZGV2aWNlKSA9PiBkZXZpY2UgPT09ICdtb2JpbGUnIHx8IGRldmljZSA9PT0gJ3RhYmxldCcpKTtcbiAgICAgICAgdGhpcy5fb2xkQ29udGFpbmVyID0gQmFyc2FBcGkuVWwuQXBwbGljYXRpb25DdHJsci5DdXJyZW50U3lzdGVtQWRhcHRlcjtcbiAgICAgICAgdGhpcy5jbG9zZVNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuY29udGVudERlbnNpdHkkID0gdGhpcy5fY29udGVudERlbnNpdHlTZXJ2aWNlLmNvbnRlbnREZW5zaXR5O1xuICAgICAgICB0aGlzLnNlY29uZGFyeUNvbHVtbnNDb3VudCQgPSB0aGlzLnNlY29uZGFyeUNvbHVtbnMkLnBpcGUobWFwKChjb2x1bW5zKSA9PiBjb2x1bW5zLmxlbmd0aCkpO1xuICAgICAgICB0aGlzLmNvbHVtbnNDb3VudCQgPSB0aGlzLnZpc2libGVDb2x1bW5zJC5waXBlKFxuICAgICAgICAgICAgbWFwKChjb2x1bW5zKSA9PiBjb2x1bW5zLmxlbmd0aCksXG4gICAgICAgICAgICBtYXAoKGNvdW50OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY2Nlc3MgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLmNvbnRleHQsICdTZXR0aW5nLkV4dHJhLkRlZmF1bHRDb21tYW5kc0FjY2VzcycpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Nlc3M/LlZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKGNvdW50OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgX3R5cGVEZWZJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LlNldHRpbmcuRXh0cmEuUmVwb3J0LlR5cGVEZWZJZDtcbiAgICB9XG4gICAgZ2V0IF9pbmxpbmVFZGl0TW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLmdldFZhbHVlSW5saW5lRWRpdCgpO1xuICAgIH1cbiAgICBnZXQgX2FsbG93SW5saW5lRWRpdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLmdldEFsbG93SW5saW5lRWRpdCgpO1xuICAgIH1cbiAgICBnZXQgX2FjY2VzcygpOiBEZWZhdWx0Q29tbWFuZHNBY2Nlc3Mge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LlNldHRpbmc/LkV4dHJhPy5EZWZhdWx0Q29tbWFuZHNBY2Nlc3M7XG4gICAgfVxuICAgIHNldCBfYWNjZXNzKHZhbDogRGVmYXVsdENvbW1hbmRzQWNjZXNzKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRleHQuU2V0dGluZy5FeHRyYSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0LlNldHRpbmcuRXh0cmEuRGVmYXVsdENvbW1hbmRzQWNjZXNzID0gdmFsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0LlNldHRpbmcuRXh0cmEgPSB7IERlZmF1bHRDb21tYW5kc0FjY2VzczogdmFsIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFBhcmVudEhlaWdodCgpO1xuICAgICAgICB0aGlzLl9yZWFkVmlld1NldHRpbmcoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9hY2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldERlZmF1bHRBY2Nlc3MoKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnNob3dPa0NhbmNlbEJ1dHRvbnMgPSB0aGlzLmNvbnRleHQuU2hvd09rQ2FuY2VsQnV0dG9ucztcbiAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2UubGF5b3V0SW5mbyQuc3Vic2NyaWJlKChsYXlvdXRJbmZvKSA9PiB7XG4gICAgICAgICAgICBpZiAobGF5b3V0SW5mbyAmJiBsYXlvdXRJbmZvLlVzZUxheW91dEl0ZW1UZXh0Rm9yQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlTGF5b3V0SXRlbVRleHRGb3JDb250cm9sID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy52aWV3U2V0dGluZz8uVGl0bGU7XG4gICAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2Uuc2V0VGl0bGUodGl0bGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLnJlcG9ydElkJC5zdWJzY3JpYmUoKHJlcG9ydElkKSA9PiAodGhpcy5yZXBvcnRJZCA9IHJlcG9ydElkKSk7XG4gICAgICAgIHRoaXMuX2xheW91dFNlcnZpY2Uuc2V0UmVuZGVyZWQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9IHRoaXMuY29udGV4dC5WaWV3U2V0dGluZz8uSXNDaGVja0xpc3QgPyB0aGlzLm11bHRpcGxlU2VsZWN0aW9uIDogdGhpcy5zaW5nbGVTZWxlY3Rpb247XG4gICAgICAgIHRoaXMuX29wZW5PbkNsaWNrID0gdGhpcy52aWV3U2V0dGluZz8uT3Blbk9uQ2xpY2s7XG4gICAgICAgIHRoaXMuY3VzdG9tUm93SGVpZ2h0ID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuU2V0dGluZyxcbiAgICAgICAgICAgICdFeHRyYS5FeHRyYUpzb25Qcm9wUmVwb3J0LkdyaWRSb3dIZWlnaHQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucnRsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UucnRsJDtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uQXJyb3ckID0gdGhpcy5fcG9ydGFsU2VydmljZS5ydGwkLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGlzUnRsKSA9PiAoaXNSdGwgPyAnbmF2aWdhdGlvbi1sZWZ0LWFycm93JyA6ICduYXZpZ2F0aW9uLXJpZ2h0LWFycm93JykpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWxsb3dJbmxpbmVFZGl0JCA9IHRoaXMuX3Vsdk1haW5TZXJ2aWNlLmFsbG93SW5saW5lRWRpdCQ7XG4gICAgICAgIHRoaXMuaW5saW5lRWRpdE1vZGUkID0gdGhpcy5fdWx2TWFpblNlcnZpY2UuaW5saW5lRWRpdE1vZGUkO1xuICAgICAgICB0aGlzLm9ubHlJbmxpbmVFZGl0JCA9IHRoaXMuX3Vsdk1haW5TZXJ2aWNlLm9ubHlJbmxpbmVFZGl0JDtcbiAgICAgICAgdGhpcy5oYXNTZWxlY3RlZCQgPSB0aGlzLm1vRGF0YUxpc3QkLnBpcGUobWFwKChtb0xpc3QpID0+IG1vTGlzdC5zb21lKChjKSA9PiBjLiRJc0NoZWNrZWQpKSk7XG4gICAgICAgIHRoaXMubW9EYXRhTGlzdCQgPSB0aGlzLm1vRGF0YUxpc3QkLnBpcGUobWFwKChpdGVtcykgPT4gdGhpcy5fbWFwQ2FydGFibGVNbyhpdGVtcykpKTtcbiAgICAgICAgY29uc3QgZ3JpZERhdGFTb3VyY2UgPSBuZXcgR3JpZE1vRGF0YUxpc3QoXG4gICAgICAgICAgICB0aGlzLm1vRGF0YUxpc3QkLFxuICAgICAgICAgICAgdGhpcy5ncmlkU2V0dGluZyQsXG4gICAgICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zJCxcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybSRcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmdyaWREYXRhU291cmNlID0gZ3JpZERhdGFTb3VyY2U7XG4gICAgICAgIHRoaXMuY29sdW1ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmdyaWRTZXR0aW5nJCwgdGhpcy5zZWNvbmRhcnlDb2x1bW5zJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtfLCBzZWNvbmRhcnlDb2x1bW5zXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZGFyaWVzID0gc2Vjb25kYXJ5Q29sdW1ucy5tYXAoKGMpID0+IGMuTmFtZSk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbHVtbnMgPSBHZXRBbGxDb2x1bW5zU29ydGVkKHRoaXMuY29udGV4dCkuZmlsdGVyKChjKSA9PiAhYy5IaWRkZW4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gXz8uU29ydFNldHRpbmdMaXN0Py5maWx0ZXIoKGMpID0+IGMuSXNHcm91cGVkKS5tYXAoKGMpID0+IGMuTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjKSA9PiBncm91cGVkQ29sdW1ucy5pbmRleE9mKGMuTmFtZSkgPT09IC0xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKChjKSA9PiBzZWNvbmRhcmllcy5pbmRleE9mKGMuTmFtZSkgPT09IC0xKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKChjb2x1bW5zKSA9PiB7XG4gICAgICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjOiBSZXBvcnRWaWV3Q29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGMuJENTU0NsYXNzTmFtZSA9ICdjb2x1bW5fX0ZpZWxkVHlwZScgKyBjLkZpZWxkVHlwZUlkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYy5GaWVsZFR5cGVJZCA9PT0gMzgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuJFdpZHRoID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjLkV4dHJhPy5JY29uRGlzcGxheVR5cGVFbnVtID09PSAnSW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLiRXaWR0aCA9ICczOHB4JztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuJFdpZHRoID0gIUJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNVc2VyTG9nZ2VkSW4gLy8gaWYgdXNlciBpcyBhbm9ueW1vdXMgYWxsIGNvbHVtbiB3aWR0aCBlcXVhbHMgdG8gMTAwJVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjLldpZHRoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYy5XaWR0aCArICdweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcxMDAlJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2UuaW5saW5lRWRpdE1vZGUkLnBpcGUoXG4gICAgICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmhhc1NlbGVjdGVkJCksXG4gICAgICAgICAgICBmaWx0ZXIoKFtfLCBfX10pID0+IHRoaXMuX2FjY2Vzcy5BZGQgIT09IGZhbHNlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9zZXRDb250YWluZXJXaWR0aCgpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMuX2Zvcm1wYW5lbFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1wYW5lbFNlcnZpY2UuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25FZGl0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0SW5saW5lRWRpdCghdGhpcy5faW5saW5lRWRpdE1vZGUpO1xuICAgIH1cbiAgICBvblNlbGVjdE5leHRJbmxpbmVSZWNvcmQobW8pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0TmV4dElubGluZVJlY29yZChtbyk7XG4gICAgfVxuXG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChtbyk7XG4gICAgfVxuXG4gICAgb25FZGl0Rm9ybVBhbmVsQ2FuY2VsKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1vRGF0YUxpc3QgPSB0aGlzLm1vRGF0YUxpc3Q7XG4gICAgICAgIGNvbnN0IGhhc1NlbGVjdGVkID0gbW9EYXRhTGlzdC5zb21lKChjKSA9PiBjLiRJc0NoZWNrZWQpO1xuICAgICAgICBpZiAoaGFzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKG1vKTtcbiAgICAgICAgICAgIHRoaXMuX3NldElubGluZUVkaXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uRWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lubGluZUZvcm1QYW5lbFZhbHVlQ2hhbmdlKG1vKTtcbiAgICB9XG4gICAgb25Db2x1bW5SZXNpemVkKGNvbHVtbnM6IGNvbHVtbnNSZXNpemVkRXZlbnRBcmdzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUNvbHVtbnNSZXNpemVkKGNvbHVtbnMpO1xuICAgIH1cbiAgICBvbldvcmtmbG93U2hhcmVCdXR0b25zKGU6IFNoYXJlQnV0dG9uc0Nob2ljZURlZik6IHZvaWQge1xuICAgICAgICB0aGlzLl91bHZNYWluU2VydmljZS5hZGRXb3JrZmxvd0J1dHRvbnNJblRvb2xiYXIoZSk7XG4gICAgfVxuICAgIG9uUm93Q2xpY2soJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgbW8gfSA9ICRldmVudDtcbiAgICAgICAgaWYgKG1vLmdyb3VwIHx8IHRoaXMuX2lubGluZUVkaXRNb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9JbmRleCA9IHRoaXMuX2dldEluZGV4KG1vKTtcbiAgICAgICAgaWYgKCFtby4kSXNDaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dDaGVjayhtbywgbW9JbmRleCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3Blbk1vKG1vLCBtb0luZGV4KTtcbiAgICB9XG5cbiAgICBvblVsdkNvbW1hbmQoJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgbW8gfSA9ICRldmVudDtcbiAgICAgICAgY29uc3QgbW9JbmRleCA9IHRoaXMuX2dldEluZGV4KG1vKTtcbiAgICAgICAgdGhpcy5fdWx2Q29tbWFuZENsaWNrZWQobW8sIG1vSW5kZXgpO1xuICAgIH1cbiAgICBvbkRlc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kb0NoZWNrZWRBbGwoZmFsc2UpO1xuICAgICAgICAvLyB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdyb3dzZWxlY3QnLCB0aGlzLmNvbnRleHQpOyAvLyDYqNin2LnYqyDZhduM2LTZiNivINiv2YjYqNin2LEgc2VsZWN0aW9uY2hhbmdlINqv2LLYp9ix2LQg2YHYsdin2K7ZiNin2YbbjCDYtNmI2K9cbiAgICB9XG4gICAgb25Sb3dDaGVjaygkZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBtbyB9ID0gJGV2ZW50O1xuICAgICAgICBjb25zdCBtb0luZGV4ID0gdGhpcy5fZ2V0SW5kZXgobW8pO1xuICAgICAgICBpZiAodGhpcy5fb3Blbk9uQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDbGljaygkZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm93Q2hlY2sobW8sIG1vSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uQ2FydGFibGVGb3JtQ2xvc2VkKHsgbW8gfSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdNb0RhdGFMaXN0ID0gdGhpcy5tb0RhdGFMaXN0O1xuICAgICAgICBjb25zdCBuZXdNb0RhdGFMaXN0MiA9IG5ld01vRGF0YUxpc3QuZmlsdGVyKChjKSA9PiBjLklkICE9PSBtby5JZCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0TW9EYXRhTGlzdChuZXdNb0RhdGFMaXN0Mik7XG4gICAgICAgIHRoaXMucmVmcmVzaENvbnRleHRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3QyKTtcbiAgICB9XG4gICAgb25FeHBhbmRDbGljayhtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBtby4kRXhwYW5kZWQgPSAhbW8uJEV4cGFuZGVkO1xuICAgICAgICB0aGlzLl9zZXRWaXNpYmlsaXR5KG1vLiRFeHBhbmRlZCwgbW8pO1xuICAgICAgICB0aGlzLl9yZXNldE1vRGF0YUxpc3QoKTtcbiAgICB9XG5cbiAgICBvbkFsbENoZWNrYm94KGNoZWNrZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZG9DaGVja2VkQWxsKGNoZWNrZWQpO1xuICAgICAgICAvLyBpZiAoY2hlY2tlZCkge1xuICAgICAgICAvLyAgIHRoaXMuZ3JpZERhdGFTb3VyY2UucmVzdWx0SXRlbXMuZm9yRWFjaCgobW8sIGluZGV4KSA9PiB7XG4gICAgICAgIC8vICAgICB0aGlzLl9zZWxlY3QobW8sIGluZGV4KTtcbiAgICAgICAgLy8gICB9KTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICB0aGlzLmdyaWREYXRhU291cmNlLnJlc3VsdEl0ZW1zLmZvckVhY2goKG1vLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyAgICAgdGhpcy5fZGVzZWxlY3QobW8sIGluZGV4KTtcbiAgICAgICAgLy8gICB9KTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG9uU29ydEFzY2VuZGluZyhjb2x1bW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWRkU29ydENvbHVtbihjb2x1bW4uTmFtZSwgJ0FTQycpO1xuICAgIH1cblxuICAgIG9uU29ydERlc2NlbmRpbmcoY29sdW1uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FkZFNvcnRDb2x1bW4oY29sdW1uLk5hbWUsICdERVNDJyk7XG4gICAgfVxuICAgIG9uRmlsdGVyKHNlbGVjdGVkQ29sdW1uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Nob3dGaWx0ZXJTZXR0aW5nKHNlbGVjdGVkQ29sdW1uKTtcbiAgICB9XG5cbiAgICBvbkNvbHVtblNldHRpbmdzKGRldmljZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vcGVuU2V0dGluZ3MoJ2NvbHVtbnMnLCBkZXZpY2UpO1xuICAgIH1cblxuICAgIG9uU29ydFNldHRpbmdzKGRldmljZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vcGVuU2V0dGluZ3MoJ3NvcnQnLCBkZXZpY2UpO1xuICAgIH1cblxuICAgIG9uR3JvdXBieVNldHRpbmdzKGRldmljZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vcGVuU2V0dGluZ3MoJ2dyb3VwYnknLCBkZXZpY2UpO1xuICAgIH1cblxuICAgIG9uTGlzdENoZWNrYm94Q2xpY2soJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgbW8sIGluZGV4LCBlIH0gPSAkZXZlbnQ7XG4gICAgICAgIHRoaXMub25Sb3dDaGVjayh7IG1vLCBpbmRleCwgY2F1c2U6ICdzaW5nbGVTZWxlY3QnIH0pO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25MaXN0TmF2aWdhdGlvbkNsaWNrKCRldmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IG1vLCBpbmRleCwgZSB9ID0gJGV2ZW50O1xuICAgICAgICB0aGlzLm9uUm93Q2xpY2soeyBtbywgaW5kZXggfSk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgb25TYXZlVG9wRm9ybShtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdNb0RhdGFMaXN0ID0gdGhpcy5tb0RhdGFMaXN0O1xuICAgICAgICBjb25zdCBleGlzdHNJbmRleCA9IG5ld01vRGF0YUxpc3QuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBtby5JZCk7XG4gICAgICAgIGlmIChleGlzdHNJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBuZXdNb0RhdGFMaXN0W2V4aXN0c0luZGV4XSA9IG1vO1xuICAgICAgICB9XG4gICAgICAgIG5ld01vRGF0YUxpc3QubWFwKChjKSA9PiB7XG4gICAgICAgICAgICBjLiROZXdJbmxpbmVNbyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGMuJElzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcmVzZXRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3QpO1xuICAgICAgICB0aGlzLnJlZnJlc2hDb250ZXh0TW9EYXRhTGlzdChuZXdNb0RhdGFMaXN0KTtcbiAgICB9XG4gICAgb25OZXdUb3BGb3JtQWRkKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FkZElubGluZU1vVG9Nb2RhdGFMaXN0KG1vKTtcbiAgICB9XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBASW5wdXQoKSBTaG93Rm9ybVBhbmVsQ29udHJvbCA9IChmb3JtcGFuZWxDdHJscikgPT4ge307XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBASW5wdXQoKSBGb3JjZUNsb3NlQ2hpbGQgPSAoKSA9PiB7fTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBJbnB1dCgpIFJlZnJlc2hGb3JtUGFuZWxDb250cm9sID0gKGZvcm1wYW5lbEN0cmxyKSA9PiB7fTtcblxuICAgIC8vIHByb3RlY3RlZCBfaW5saW5lRWRpdE1vZGVDaGFuZ2VkKGVkaXRNb2RlKTogdm9pZCB7XG4gICAgLy8gICAgIGlmIChlZGl0TW9kZSkge1xuICAgIC8vICAgICAgICAgY29uc3QgY2FuQWRkOiBib29sZWFuID0gdGhpcy5fYWNjZXNzPy5BZGQgIT09IGZhbHNlO1xuXG4gICAgLy8gICAgICAgICBsZXQgc2VsZWN0ZWRNbyA9IHRoaXMuX2dldFNlbGVjdGVkKCk7XG4gICAgLy8gICAgICAgICBsZXQgbmV3TW87XG4gICAgLy8gICAgICAgICBpZiAoY2FuQWRkICE9PSBmYWxzZSAmJiAhc2VsZWN0ZWRNbykge1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZU5ld0lubGluZVJlY29yZCgpO1xuICAgIC8vICAgICAgICAgICAgIHJldHVybjtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICAgIC8vIGlmICghc2VsZWN0ZWRNbyAmJiAhbmV3TW8gJiYgdGhpcy5tb0RhdGFMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAvLyAgICAgICAgIC8vICAgICBzZWxlY3RlZE1vID0gdGhpcy5tb0RhdGFMaXN0WzBdO1xuICAgIC8vICAgICAgICAgLy8gfVxuICAgIC8vICAgICAgICAgLy8gaWYgKHNlbGVjdGVkTW8pIHtcbiAgICAvLyAgICAgICAgIC8vICAgICBjb25zdCBpZE9mU2VsZWN0ZWRNbyA9IHRoaXMuX2luZGV4T2ZNbyhzZWxlY3RlZE1vKTtcbiAgICAvLyAgICAgICAgIC8vICAgICBzZWxlY3RlZE1vLiRJc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAvLyAgICAgICAgIC8vICAgICB0aGlzLl9jcmVhdGVOZXdJbmxpbmVSZWNvcmQoc2VsZWN0ZWRNbyk7XG4gICAgLy8gICAgICAgICAvLyAgICAgdGhpcy5fcm93Q2hlY2soc2VsZWN0ZWRNbywgaWRPZlNlbGVjdGVkTW8pO1xuICAgIC8vICAgICAgICAgLy8gfVxuICAgIC8vICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgQmFyc2FBcGkuVWwuQXBwbGljYXRpb25DdHJsci5DdXJyZW50U3lzdGVtQWRhcHRlciA9IHRoaXMuX29sZENvbnRhaW5lcjtcbiAgICAvLyAgICAgICAgIHRoaXMuX3NldE5ld0lubGluZU1vKG51bGwpO1xuICAgIC8vICAgICB9XG4gICAgLy8gfVxuICAgIC8vIHByb3RlY3RlZCBfY3JlYXRlTmV3SW5saW5lUmVjb3JkKHNlbGVjdGVkTW8/OiBNZXRhb2JqZWN0RGF0YU1vZGVsKSB7XG4gICAgLy8gICAgIGNvbnN0IG1vID0gdGhpcy5faW5saW5lRWRpdFByZXBhcmVOZXdNbygpO1xuICAgIC8vICAgICBjb25zdCBmb3JtTW8gPSBCYXJzYUFwaS5Db21tb24uTWVyZ2VyLkZhc3RNZXJnZShtbywgc2VsZWN0ZWRNbywgeyBleHRlbmRlZEZpZWxkczogWydJZCwkQ2FwdGlvbiddIH0pO1xuICAgIC8vICAgICB0aGlzLl9zZXROZXdJbmxpbmVNbyhmb3JtTW8pO1xuICAgIC8vICAgICB0aGlzLl9zZWxlY3QoZm9ybU1vLCAtMSk7XG4gICAgLy8gfVxuICAgIHByb3RlY3RlZCBfcmVzZXRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3Q/OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pIHtcbiAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2UucmVTZXRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3QpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2dldFdpZHRoKGxhYmVsOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuY2FudmFzUmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdHggPSB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGN0eC5mb250ID0gJ25vcm1hbCAwLjg4NXJlbSBJUkFOWWVrYW5EaWdpdHMnO1xuICAgICAgICBjb25zdCBsYWJlbFdpdGhQYWRkaW5nID0gY3R4Lm1lYXN1cmVUZXh0KGxhYmVsKS53aWR0aDtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChsYWJlbFdpdGhQYWRkaW5nKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZXRQYXJlbnRIZWlnaHQoKSB7XG4gICAgICAgIHRoaXMucGFyZW50SGVpZ2h0ID0gZ2V0UGFyZW50SGVpZ2h0KHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfbWFwQ2FydGFibGVNbyhpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdKSB7XG4gICAgICAgIGlmICghdGhpcy52aWV3U2V0dGluZykge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgTmFtZVNlcmlhbGl6ZU1vLCBDYXJ0YWJsZU9iamVjdE5hbWUgfSA9IHRoaXMudmlld1NldHRpbmc7XG4gICAgICAgIGlmICghTmFtZVNlcmlhbGl6ZU1vIHx8ICFDYXJ0YWJsZU9iamVjdE5hbWUgfHwgIWl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuICAgICAgICBpdGVtcy5mb3JFYWNoKChjKSA9PiAoY1tDYXJ0YWJsZU9iamVjdE5hbWVdID0gQmFyc2FBcGkuRXh0LmRlY29kZSgneycgKyBjW05hbWVTZXJpYWxpemVNb10gKyAnfScpKSk7XG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICBvblRvb2xiYXJDcmVhdGVOZXdJbmxpbmVNbygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlTmV3SW5saW5lTW8oKTtcbiAgICB9XG4gICAgb25DcmVhdGVOZXdNbygpIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlTmV3SW5saW5lTW8odHJ1ZSk7XG4gICAgfVxuICAgIG9uTWFuZGF0b3J5KGlzTWFuZGF0b3I6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnTWFuZGF0b3J5JywgaXNNYW5kYXRvcik7XG4gICAgfVxuICAgIG9uVXBkYXRlTW8obW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IHRoaXMubW9EYXRhTGlzdDtcbiAgICAgICAgY29uc3QgbW9JbmRleCA9IG1vRGF0YUxpc3QuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBtby5JZCk7XG4gICAgICAgIGlmIChtb0luZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIG1vRGF0YUxpc3RbbW9JbmRleF0gPSBtbztcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0TW9EYXRhTGlzdChtb0RhdGFMaXN0KTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENvbnRleHRNb0RhdGFMaXN0KG1vRGF0YUxpc3QpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX2NyZWF0ZU5ld0lubGluZU1vKHNldENoYW5nZWQgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBtb0RhdGFMaXN0ID0gdGhpcy5tb0RhdGFMaXN0O1xuICAgICAgICBjb25zdCBleGlzdElubGluZU1vID0gbW9EYXRhTGlzdC5maW5kKChjKSA9PiBjLiROZXdJbmxpbmVNbyk7XG4gICAgICAgIGlmIChleGlzdElubGluZU1vKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChleGlzdElubGluZU1vKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtbyA9IHRoaXMuX2lubGluZVJlcG9ydENyZWF0ZU5ld01vKHRydWUpO1xuICAgICAgICBpZiAoc2V0Q2hhbmdlZCkge1xuICAgICAgICAgICAgbW8uJElubGluZU1vQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IChjLiRJc0NoZWNrZWQgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLl9hZGRJbmxpbmVNb1RvTW9kYXRhTGlzdChtbywgdHJ1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lubGluZVJlcG9ydENyZWF0ZU5ld01vKGlzQ2hlY2tlZDogYm9vbGVhbik6IE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdWx2TWFpblNlcnZpY2UuY3JlYXRlTmV3SW5saW5lTW8oaXNDaGVja2VkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2lubGluZUZvcm1QYW5lbFZhbHVlQ2hhbmdlKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01vRGF0YUxpc3QgPSB0aGlzLm1vRGF0YUxpc3Q7XG4gICAgICAgIGNvbnN0IGV4aXN0TW9JbmRleCA9IG5ld01vRGF0YUxpc3QuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBtby5JZCk7XG4gICAgICAgIGlmIChleGlzdE1vSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgbmV3TW9EYXRhTGlzdFtleGlzdE1vSW5kZXhdID0gQmFyc2FBcGkuQ29tbW9uLk1ldGFPYmplY3RXZWIuQ3JlYXRlTW8obW8pO1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3QpO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQ29udGV4dE1vRGF0YUxpc3QobmV3TW9EYXRhTGlzdCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZWxlY3ROZXh0SW5saW5lUmVjb3JkKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01vRGF0YUxpc3QgPSB0aGlzLm1vRGF0YUxpc3Q7XG4gICAgICAgIGlmICghbW8uJE5ld0lubGluZU1vKSB7XG4gICAgICAgICAgICAvLyBzZWxlY3QgbmV4dCByZWNvcmRcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0c0luZGV4ID0gbmV3TW9EYXRhTGlzdC5maW5kSW5kZXgoKGMpID0+IGMuSWQgPT09IG1vLklkKTtcbiAgICAgICAgICAgIGlmIChleGlzdHNJbmRleCA+IC0xICYmIGV4aXN0c0luZGV4ICsgMSA8IG5ld01vRGF0YUxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbmV3TW9EYXRhTGlzdFtleGlzdHNJbmRleCArIDFdLiRJc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3dDaGVjayhuZXdNb0RhdGFMaXN0W2V4aXN0c0luZGV4ICsgMV0sIGV4aXN0c0luZGV4ICsgMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld01vRGF0YUxpc3QubWFwKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGMuJE5ld0lubGluZU1vID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBjLiRJc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRJbmxpbmVNb1RvTW9kYXRhTGlzdCh0aGlzLl9pbmxpbmVSZXBvcnRDcmVhdGVOZXdNbyh0cnVlKSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVOZXdJbmxpbmVNbygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5saW5lRWRpdFNhdmVGb3JtUGFuZWwobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3TW9EYXRhTGlzdCA9IHRoaXMubW9EYXRhTGlzdDtcbiAgICAgICAgaWYgKCFtby4kTmV3SW5saW5lTW8pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGlzdHNJbmRleCA9IG5ld01vRGF0YUxpc3QuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBtby5JZCk7XG4gICAgICAgIGlmIChleGlzdHNJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBuZXdNb0RhdGFMaXN0W2V4aXN0c0luZGV4XSA9IG1vO1xuICAgICAgICB9XG4gICAgICAgIG5ld01vRGF0YUxpc3QubWFwKChjKSA9PiB7XG4gICAgICAgICAgICBjLiROZXdJbmxpbmVNbyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGMuJElzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyB0aGlzLl91bHZNYWluU2VydmljZS5jcmVhdGVOZXdJbmxpbmVNbygpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldERlZmF1bHRBY2Nlc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjY2VzcyA9IHtcbiAgICAgICAgICAgIEFkZDogZmFsc2UsXG4gICAgICAgICAgICBBZGRUb0xpc3Q6IGZhbHNlLFxuICAgICAgICAgICAgRGVsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgIEVkaXQ6IGZhbHNlLFxuICAgICAgICAgICAgRXhwb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIFByaW50OiBmYWxzZSxcbiAgICAgICAgICAgIFJlZnJlc2g6IGZhbHNlLFxuICAgICAgICAgICAgUmVtb3ZlRnJvbUxpc3Q6IGZhbHNlLFxuICAgICAgICAgICAgVmlldzogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9leHBhbmRNbyhzZWxlY3RlZE1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBleHBhbmQpOiB2b2lkIHtcbiAgICAgICAgc2VsZWN0ZWRNby4kRXhwYW5kZWQgPSBleHBhbmQ7XG4gICAgICAgIHNlbGVjdGVkTW8uJENoaWxkcmVuPy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZXhwYW5kTW8oY2hpbGQsIGV4cGFuZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2luZGV4T2ZJZChpZCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWREYXRhU291cmNlLnJlc3VsdEl0ZW1zLmZpbmRJbmRleCgoYykgPT4gYy5JZCA9PT0gaWQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2luZGV4T2ZNbyhtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWREYXRhU291cmNlLnJlc3VsdEl0ZW1zLmZpbmRJbmRleCgoYykgPT4gYy5JZCA9PT0gbW8uSWQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2luZGV4T2ZTZWxlY3RlZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkRGF0YVNvdXJjZS5yZXN1bHRJdGVtcy5maW5kSW5kZXgoKGMpID0+IGMuJElzQ2hlY2tlZCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZ2V0SW5kZXgobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tb0RhdGFMaXN0LmZpbmRJbmRleCgoYykgPT4gYy5JZCA9PT0gbW8uSWQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldElubGluZUVkaXQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2Uuc2V0SW5saW5lRWRpdCh2YWx1ZSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVhZFZpZXdTZXR0aW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXR0aW5nID0gdGhpcy5jb250ZXh0LlNldHRpbmcuQ2xhc3NOYW1lcy5DdXN0b21VaT8uUGFyYW1ldGVycztcbiAgICB9XG4gICAgLy8gcHJvdGVjdGVkIF9tb0RhdGFMaXN0Q2hhbmdlZChtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAvLyAgICAgc3VwZXIuX21vRGF0YUxpc3RDaGFuZ2VkKG1vRGF0YUxpc3QpO1xuICAgIC8vICAgICBpZiAodGhpcy5faW5saW5lRWRpdE1vZGUpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IGNoZWNrZWRNb0luZGV4ID0gbW9EYXRhTGlzdC5maW5kSW5kZXgoKGMpID0+IGMuJElzQ2hlY2tlZCk7XG5cbiAgICAvLyAgICAgICAgIGlmIChjaGVja2VkTW9JbmRleCA+IC0xKSB7XG4gICAgLy8gICAgICAgICAgICAgY29uc3QgY2hlY2tlZE1vID0gbW9EYXRhTGlzdFtjaGVja2VkTW9JbmRleF07XG4gICAgLy8gICAgICAgICAgICAgaWYgKGNoZWNrZWRNby5JZCAhPT0gdGhpcy5mb3JtUGFuZWxDdHJsci5Nby5JZCkge1xuICAgIC8vICAgICAgICAgICAgICAgICB0aGlzLl9pbmxpbmVFZGl0b3JEZXN0cm95Rm9ybVBhbmVsQ3RybHIoKTtcbiAgICAvLyAgICAgICAgICAgICAgICAgdGhpcy5faW5saW5lRWRpdENyZWF0ZUZvcm1QYW5lbEN0cmxyKGNoZWNrZWRNbywgY2hlY2tlZE1vSW5kZXgpO1xuICAgIC8vICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIHByb3RlY3RlZCBfc2V0VmlzaWJpbGl0eShcbiAgICAgICAgZXhwYW5kOiBib29sZWFuLFxuICAgICAgICBtbzogYW55IC8vTWV0YW9iamVjdERhdGFNb2RlbFxuICAgICk6IHZvaWQge1xuICAgICAgICBtby4kQ2hpbGRyZW4/LmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICBjaGlsZC4kVmlzaWJpbGl0eSA9IGV4cGFuZDtcbiAgICAgICAgICAgIGlmIChjaGlsZC4kQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRWaXNpYmlsaXR5KGV4cGFuZCwgY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBwcm90ZWN0ZWQgX3NldE5ld0lubGluZU1vKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbCk6IHZvaWQge1xuICAgIC8vICAgICB0aGlzLl91bHZNYWluU2VydmljZS5zZXROZXdJbmxpbmVNbyhtbyk7XG4gICAgLy8gfVxuICAgIC8vIHByb3RlY3RlZCBfaW5saW5lRWRpdFByZXBhcmVOZXdNbygpOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICAvLyBjb25zdCBuZXdNbyA9IGdldE5ld01vR3JpZEVkaXRvcih0aGlzLmZvcm1TZXR0aW5nLCB0aGlzLl90eXBlRGVmSWQpO1xuICAgIC8vIG5ld01vLklkID0gZ2V0VW5pcXVlSWQoMyk7XG4gICAgLy8gaWYgKHRoaXMuX2lzQ29tcG9zaXRlKCkpIHtcbiAgICAvLyAgICAgY29uc3QgcmVsYXRpb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLmNvbnRleHQuU2V0dGluZywgJ0V4dHJhLlJlbGF0aW9uJyk7XG4gICAgLy8gICAgIG5ld01vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0gPSByZWxhdGlvbi5QYXJlbnRNb0lkO1xuICAgIC8vIH1cbiAgICAvLyAgICAgICAgY29uc3QgbmV3TW9EYXRhTGlzdCA9IFsuLi50aGlzLm1vRGF0YUxpc3QsIG5ld01vIGFzIE1ldGFvYmplY3REYXRhTW9kZWxdO1xuICAgIC8vICAgICAgIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLnJlU2V0TW9EYXRhTGlzdChuZXdNb0RhdGFMaXN0KTtcbiAgICAvLyBCYXJzYUFwaS5VbC5BcHBsaWNhdGlvbkN0cmxyLmZpcmVFdmVudChcbiAgICAvLyAgIEJhcnNhQXBpLlVsLkFwcGxpY2F0aW9uQ3RybHIuRXZlbnRFbnVtLkdsb2JhbFJlcG9ydE1vQWRkLFxuICAgIC8vICAgdGhpcy5jb250ZXh0LFxuICAgIC8vICAgcmVwb3J0RXZlbnRNb0FkZFxuICAgIC8vICk7XG4gICAgLy8gICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnUmVmcmVzaENvbnRleHRNb0RhdGFMaXN0JywgbmV3TW9EYXRhTGlzdCk7XG4gICAgLy8gICAgcmV0dXJuIG5ld01vIGFzIE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgLy8gfVxuICAgIHByb3RlY3RlZCBfYWRkSW5saW5lTW9Ub01vZGF0YUxpc3QobmV3SW5saW5lTW86IE1ldGFvYmplY3REYXRhTW9kZWwsIHNlbGVjdDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01vRGF0YUxpc3QgPSBbLi4udGhpcy5tb0RhdGFMaXN0LCB7IC4uLm5ld0lubGluZU1vLCAkSXNDaGVja2VkOiBzZWxlY3QgfV07XG4gICAgICAgIHRoaXMuX3Jlc2V0TW9EYXRhTGlzdChuZXdNb0RhdGFMaXN0KTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQ29udGV4dE1vRGF0YUxpc3QobmV3TW9EYXRhTGlzdCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yb3dDaGVjayhtbzogTWV0YW9iamVjdERhdGFNb2RlbCwgaW5kZXg6IG51bWJlciwgc2VsZWN0ZWQgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlZGl0TW9kZSA9IHRoaXMuX2lubGluZUVkaXRNb2RlICYmIHRoaXMuX2FsbG93SW5saW5lRWRpdDtcbiAgICAgICAgaWYgKG1vLiRJc0NoZWNrZWQgJiYgZWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2VsZWN0aW9uTW9kZSA9IHRoaXMuc2VsZWN0aW9uTW9kZTtcbiAgICAgICAgaWYgKGVkaXRNb2RlKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlID0gU2VsZWN0aW9uTW9kZS5TSU5HTEU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hlY2tlZCA9ICFtby4kSXNDaGVja2VkIHx8IHNlbGVjdGVkO1xuICAgICAgICB0aGlzLnJvd0hvdmVyYWJsZSA9IGZhbHNlO1xuICAgICAgICBpZiAoc2VsZWN0aW9uTW9kZSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJyAmJiBjaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZG9DaGVja2VkQWxsKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlZGl0TW9kZSkge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fc2V0TmV3SW5saW5lTW8obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdChtbywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5fc2V0VmFsdWVJbmxpbmVNbyhtbyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdChtbywgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgdGhpcy5fZGVzZWxlY3QobW8sIGluZGV4KTtcbiAgICB9XG4gICAgLy8gcHJvdGVjdGVkIF9zZXRWYWx1ZUlubGluZU1vKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgLy8gICAgIC8vIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0VmFsdWUoeyAuLi5tbywgJFR5cGVEZWZJZDogdGhpcy5fdHlwZURlZklkIH0pO1xuICAgIC8vIH1cblxuICAgIHByb3RlY3RlZCBfaW5saW5lRWRpdG9yRGVzdHJveUZvcm1QYW5lbEN0cmxyKCk6IHZvaWQge1xuICAgICAgICAvLyBpZiAodGhpcy5mb3JtUGFuZWxDdHJscikge1xuICAgICAgICAvLyAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS5kZXN0cm95KCk7XG4gICAgICAgIC8vICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLkRlc3Ryb3koKTtcbiAgICAgICAgLy8gICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIgPSBudWxsO1xuICAgICAgICAvLyB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfd2luZG93UmVzaXplZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fc2V0UGFyZW50SGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0Q29udGFpbmVyV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoU291cmNlJC5uZXh0KGVsLm9mZnNldFdpZHRoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2RldmljZVNpemVDaGFuZ2VkKGRldmljZVNpemUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxOYXRpdmVFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5faW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5Q29sdW1uc1NvdXJjZS5uZXh0KFtdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyaWRTaXplID0gZ2V0Q29udHJvbFNpemVNb2RlKGVsTmF0aXZlRWxlbWVudCwgZGV2aWNlU2l6ZSk7XG4gICAgICAgIGxldCBkZXZpY2VOYW1lOiBEZXZpY2VTaXplID0gJ2Rlc2t0b3AnO1xuICAgICAgICBjb25zdCBhbGxDb2x1bW5zV2lkdGggPSB0aGlzLmFsbENvbHVtbnMubWFwKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uV2lkdGggPT0gMCA/IHRoaXMuX2dldFdpZHRoKGNvbHVtbi5BbGlhcykgOiBjb2x1bW4uV2lkdGhcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLl92aXNpYmxlQ29sdW1uc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICBsZXQgY29sdW1uc0NvdW50ID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoO1xuICAgICAgICBzd2l0Y2ggKGdyaWRTaXplKSB7XG4gICAgICAgICAgICBjYXNlICdsJzpcbiAgICAgICAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgICAgICAgICBkZXZpY2VOYW1lID0gJ2Rlc2t0b3AnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgZGV2aWNlTmFtZSA9ICdtb2JpbGUnO1xuICAgICAgICAgICAgICAgIGNvbHVtbnNDb3VudCA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICBkZXZpY2VOYW1lID0gJ3RhYmxldCc7XG4gICAgICAgICAgICAgICAgY29sdW1uc0NvdW50ID0gNDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kZXZpY2VOYW1lU291cmNlLm5leHQoZGV2aWNlTmFtZSk7XG4gICAgICAgIGNvbnN0IGNvbFdpZHRoU2V0dGluZ3MgPSB0aGlzLmdyaWRTZXR0aW5nU291cmNlLmdldFZhbHVlKCk/LkNvbFNldHRpbmdMaXN0Py5tYXAoKGMpID0+IGMuV2lkdGgpO1xuICAgICAgICBjb25zdCBjb2x1bW5zV2lkdGggPSBjb2xXaWR0aFNldHRpbmdzLmxlbmd0aCA/IGNvbFdpZHRoU2V0dGluZ3MgOiBhbGxDb2x1bW5zV2lkdGg7XG4gICAgICAgIGxldCBzdW1Db2xXaWR0aCA9IDA7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gZWxOYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICBpZiAoY29sdW1uc1dpZHRoLmxlbmd0aCA+IDAgJiYgY29udGFpbmVyV2lkdGggPiAwKSB7XG4gICAgICAgICAgICBjb2x1bW5zQ291bnQgPSB2aXNpYmxlQ29sdW1ucy5sZW5ndGg7XG4gICAgICAgICAgICBjb2x1bW5zV2lkdGguZm9yRWFjaCgod2lkdGgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1bUNvbFdpZHRoICsgd2lkdGggPiBjb250YWluZXJXaWR0aCAmJiBjb2x1bW5zQ291bnQgPT09IHZpc2libGVDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zQ291bnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3VtQ29sV2lkdGggKz0gd2lkdGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2aXNpYmxlQ29sdW1ucy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U2V0dGluZz8uRGlzYWJsZVJlc3BvbnNpdmUgfHxcbiAgICAgICAgICAgICAgICAoIXRoaXMudmlld1NldHRpbmcgJiYgdGhpcy5fZGV2aWNlTmFtZVNvdXJjZS5nZXRWYWx1ZSgpID09PSAnZGVza3RvcCcpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNDb2x1bW5zID0gdGhpcy5zZWNvbmRhcnlDb2x1bW5zU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlY0NvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5Q29sdW1uc1NvdXJjZS5uZXh0KFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWNvbmRhcnlDb2x1bW5zU291cmNlLm5leHQodmlzaWJsZUNvbHVtbnMuc2xpY2UoY29sdW1uc0NvdW50LCB2aXNpYmxlQ29sdW1ucy5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfb3BlblNldHRpbmdzKG5hbWUsIGRldmljZTogRGV2aWNlU2l6ZSk6IHZvaWQge1xuICAgICAgICBsZXQgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdjb2x1bW5zJzpcbiAgICAgICAgICAgICAgICBjb21wb25lbnQgPSBVbHZDb2x1bW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NvcnQnOlxuICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IFVsdlNvcnRTZXR0aW5nc0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyb3VwYnknOlxuICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IFVsdkdyb3VwYnlTZXR0aW5nc0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb25maWc6IERpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgZGF0YTogeyBjb250ZXh0OiB0aGlzLmNvbnRleHQgfSxcbiAgICAgICAgICAgIGZ1bGxTY3JlZW46IGRldmljZSA9PT0gJ21vYmlsZScsXG4gICAgICAgICAgICBtaW5XaWR0aDogZGV2aWNlID09PSAnbW9iaWxlJyA/ICdhdXRvJyA6IHRoaXMuZGlhbG9nQ29uZmlnLm1pbldpZHRoLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBkZXZpY2UgPT09ICdtb2JpbGUnID8gJ2F1dG8nIDogdGhpcy5kaWFsb2dDb25maWcubWluSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICAgIGlmIChjb21wb25lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbihjb21wb25lbnQsIGNvbmZpZyk7XG4gICAgICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoc2V0dGluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU29ydENoYW5nZWQgPSBuYW1lID09PSAnc29ydCcgfHwgbmFtZSA9PT0gJ2dyb3VwYnknO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdyaWRTZXR0aW5nKHNldHRpbmcsIGlzU29ydENoYW5nZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQubW9EYXRhTGlzdCA9IHRoaXMuZ3JpZERhdGFTb3VyY2UucmVzdWx0SXRlbXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFZpc2libGVDb2x1bW5zKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zaG93RmlsdGVyU2V0dGluZyhzZWxlY3RlZENvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHZvaWQge1xuICAgICAgICBjb25zdCB0eXBlRGVmSWQgPSB0aGlzLl90eXBlRGVmSWQ7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xzSW5mbyQgPSB0aGlzLl91bHZNYWluU2VydmljZS5sb2FkTWV0YUNvbmRpdGlvbnNDb250cm9sSW5mb3MoXG4gICAgICAgICAgICB0eXBlRGVmSWQsXG4gICAgICAgICAgICB0aGlzLmFsbENvbHVtbnMubWFwKChjKSA9PiBjLk5hbWUpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xzSW5mbyQsXG4gICAgICAgICAgICAgICAgdHlwZURlZklkLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uTmFtZTogc2VsZWN0ZWRDb2x1bW4uTmFtZSxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKFVsdkZpbHRlclNldHRpbmdzQ29tcG9uZW50LCBjb25maWcpO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoc2V0dGluZykgPT4ge1xuICAgICAgICAgICAgaWYgKHNldHRpbmcpIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfYWRkU29ydENvbHVtbihuYW1lOiBhbnksIHNvcnREaXJlY3Rpb246IHN0cmluZywgaXNHcm91cGVkID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc29ydEl0ZW0gPSB7XG4gICAgICAgICAgICBOYW1lOiBuYW1lLFxuICAgICAgICAgICAgU29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbixcbiAgICAgICAgICAgIElzR3JvdXBlZDogaXNHcm91cGVkXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0R3JpZFNldHRpbmdzKHRoaXMuY29udGV4dCk7XG4gICAgICAgIGNvbnN0IGV4aXN0U29ydEl0ZW1JbmRleCA9IHNldHRpbmdzLlNvcnRTZXR0aW5nTGlzdC5maW5kSW5kZXgoKGMpID0+IGMuTmFtZSA9PT0gbmFtZSk7XG4gICAgICAgIGlmIChleGlzdFNvcnRJdGVtSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgc2V0dGluZ3MuU29ydFNldHRpbmdMaXN0W2V4aXN0U29ydEl0ZW1JbmRleF0gPSBzb3J0SXRlbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldHRpbmdzLlNvcnRTZXR0aW5nTGlzdC5wdXNoKHNvcnRJdGVtKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUdyaWRTZXR0aW5nKHNldHRpbmdzLCB0cnVlKTtcbiAgICB9XG59XG4iXX0=
726
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwLXVpLXJlcG9ydC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3NhcC11aS1yZXBvcnQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBR1IsSUFBSSxFQUNKLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pILE9BQU8sRUFLSCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ25CLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRSxPQUFPLEVBQ0gsUUFBUSxFQUtSLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsZUFBZSxFQUlmLG1CQUFtQixFQUtuQixlQUFlLEVBQ2xCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUs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O2tCQUxwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDs7MEJBaUZRLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTs7MEJBQUksSUFBSTs0Q0E3RU0sY0FBYztzQkFBeEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNJLGdCQUFnQjtzQkFBNUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ0EsWUFBWTtzQkFBdEMsWUFBWTt1QkFBQyxXQUFXO2dCQUNjLFNBQVM7c0JBQS9DLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFckMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLHNCQUFzQjtnQkF5VjNCLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLHVCQUF1QjtzQkFBL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCBPdmVybGF5LCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQ29udGVudERlbnNpdHksXG4gICAgQ29udGVudERlbnNpdHlTZXJ2aWNlLFxuICAgIERpYWxvZ0NvbmZpZyxcbiAgICBEaWFsb2dTZXJ2aWNlLFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGUsIFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0nO1xuXG5pbXBvcnQge1xuICAgIEJhcnNhQXBpLFxuICAgIGNvbHVtbnNSZXNpemVkRXZlbnRBcmdzLFxuICAgIERlZmF1bHRDb21tYW5kc0FjY2VzcyxcbiAgICBEZXZpY2VTaXplLFxuICAgIEZvcm1QYW5lbFNlcnZpY2UsXG4gICAgR2V0QWxsQ29sdW1uc1NvcnRlZCxcbiAgICBnZXRDb250cm9sU2l6ZU1vZGUsXG4gICAgZ2V0R3JpZFNldHRpbmdzLFxuICAgIExheW91dFNlcnZpY2UsXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBQb3J0YWxTZXJ2aWNlLFxuICAgIFJlcG9ydEJhc2VDb21wb25lbnQsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZyxcbiAgICBVbHZNYWluU2VydmljZSxcbiAgICBTaGFyZUJ1dHRvbnNDaG9pY2VEZWYsXG4gICAgZ2V0UGFyZW50SGVpZ2h0XG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IExheW91dENvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1jb250cm9sL2xheW91dC1jb250cm9sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmlkTW9EYXRhTGlzdCB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFVsdkNvbHVtblNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91bHYtY29sdW1uLXNldHRpbmdzL3Vsdi1jb2x1bW4tc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IFVsdlNvcnRTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vdWx2LXNvcnQtc2V0dGluZ3MvdWx2LXNvcnQtc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IFVsdkdyb3VwYnlTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vdWx2LWdyb3VwYnktc2V0dGluZ3MvdWx2LWdyb3VwYnktc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IFVsdkZpbHRlclNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91bHYtZmlsdGVyLXNldHRpbmdzL3Vsdi1maWx0ZXItc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3Utc2FwLXVpLXJlcG9ydC1iYXNlJyxcbiAgICB0ZW1wbGF0ZTogJycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50PFQgZXh0ZW5kcyBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZz5cbiAgICBleHRlbmRzIFJlcG9ydEJhc2VDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gICAgQFZpZXdDaGlsZChUYWJsZUNvbXBvbmVudCkgdGFibGVDb21wb25lbnQ6IFRhYmxlQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoVG9vbGJhckNvbXBvbmVudCkgdG9vbGJhckNvbXBvbmVudDogVG9vbGJhckNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkcmVuKCd0YWJsZVJvd3MnKSB0YWJsZVJvd3NSZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgICBAVmlld0NoaWxkKCdjYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjYW52YXNSZWY6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZHJlbihMYXlvdXRDb250cm9sQ29tcG9uZW50KVxuICAgIGxheW91dENvbnRyb2xzUmVmOiBRdWVyeUxpc3Q8TGF5b3V0Q29udHJvbENvbXBvbmVudD47XG4gICAgdXNlTGF5b3V0SXRlbVRleHRGb3JDb250cm9sID0gZmFsc2U7XG4gICAgaGFzU2VsZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHNob3dPa0NhbmNlbEJ1dHRvbnM6IGFueTtcbiAgICBwYXJlbnRIZWlnaHQgPSAwO1xuICAgIGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnID0ge1xuICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgdmVydGljYWxQYWRkaW5nOiB0cnVlLFxuICAgICAgICBtaW5XaWR0aDogJzQwcmVtJyxcbiAgICAgICAgbWluSGVpZ2h0OiAnOTB2aCcsXG4gICAgICAgIG1heFdpZHRoOiAnMTAwdncnLFxuICAgICAgICBtYXhIZWlnaHQ6ICcxMDB2aCcsXG4gICAgICAgIHJlc2l6YWJsZTogdHJ1ZVxuICAgIH07XG5cbiAgICBzZWxlY3RlZFJvd3NOdW1iZXIgPSB7fTtcbiAgICBzZWxlY3RBbGwgPSBmYWxzZTtcbiAgICBzZWxlY3Rpb25BZGFwdGVySGFuZGxlcjoge1xuICAgICAgICBzY29wZTogYW55O1xuICAgICAgICByb3dzZWxlY3Q6IGFueTtcbiAgICAgICAgcm93ZGVzZWxlY3Q6IGFueTtcbiAgICAgICAgYmVmb3Jlcm93c2VsZWN0OiBhbnk7XG4gICAgfTtcbiAgICBuYXZpZ2F0aW9uQXJyb3ckOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgY3VzdG9tUm93SGVpZ2h0OiBhbnk7XG4gICAgcm93Q2xpY2sgPSB0cnVlO1xuICAgIGNlbGxDbGljayA9IGZhbHNlO1xuICAgIGRldmljZU5hbWUkOiBPYnNlcnZhYmxlPERldmljZVNpemU+O1xuICAgIG1vYmlsZU9yVGFibGV0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIHNlY29uZGFyeUNvbHVtbnNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlcG9ydFZpZXdDb2x1bW5bXT4oW10pO1xuICAgIHNlY29uZGFyeUNvbHVtbnMkID0gdGhpcy5zZWNvbmRhcnlDb2x1bW5zU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHBvcGluJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBjb250ZW50RGVuc2l0eSQ6IE9ic2VydmFibGU8Q29udGVudERlbnNpdHk+O1xuXG4gICAgcm93QWN0aXZhYmxlID0gdHJ1ZTtcbiAgICBvcGVuT3ZlcmZsb3dDb21tYW5kczogYm9vbGVhbltdID0gW107XG4gICAgY29udGFpbmVyV2lkdGhTb3VyY2UkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgIGNsb3NlU2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5O1xuICAgIHJvd0hvdmVyYWJsZTogYm9vbGVhbjtcbiAgICBzb3VyY2U6IFRhYmxlRGF0YVNvdXJjZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlO1xuICAgIGNvbHVtbnNDb3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICBzZWNvbmRhcnlDb2x1bW5zQ291bnQkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gICAgY29udGFpbmVyV2lkdGgkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gICAgY29sdW1ucyQ6IE9ic2VydmFibGU8UmVwb3J0Vmlld0NvbHVtbltdPjtcbiAgICBncmlkRGF0YVNvdXJjZTogR3JpZE1vRGF0YUxpc3Q7XG4gICAgc2luZ2xlU2VsZWN0aW9uID0gU2VsZWN0aW9uTW9kZS5TSU5HTEU7XG4gICAgbXVsdGlwbGVTZWxlY3Rpb24gPSBTZWxlY3Rpb25Nb2RlLk1VTFRJUExFO1xuICAgIGFsbG93SW5saW5lRWRpdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgaW5saW5lRWRpdE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG9ubHlJbmxpbmVFZGl0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBmb3JtUGFuZWxDdHJscjogYW55O1xuICAgIGxheW91dCQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBydGwkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgdmlld1NldHRpbmc6IFQ7XG4gICAgZGlzYWJsZVJlc3BvbnNpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHByb3RlY3RlZCBfZGV2aWNlTmFtZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGV2aWNlU2l6ZT4oJ2Rlc2t0b3AnKTtcbiAgICBwcml2YXRlIF9vbGRDb250YWluZXI6IGFueTtcbiAgICBwcml2YXRlIF9vcGVuT25DbGljazogYm9vbGVhbjtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJvdGVjdGVkIF9jb250ZW50RGVuc2l0eVNlcnZpY2U6IENvbnRlbnREZW5zaXR5U2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfdWx2TWFpblNlcnZpY2U6IFVsdk1haW5TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX2xheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJvdGVjdGVkIGRvY3VtZW50LFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByb3RlY3RlZCBfZm9ybXBhbmVsU2VydmljZTogRm9ybVBhbmVsU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihfcG9ydGFsU2VydmljZSwgX3Vsdk1haW5TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCQgPSB0aGlzLmNvbnRhaW5lcldpZHRoU291cmNlJFxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgICAgIHRoaXMuZGV2aWNlTmFtZSQgPSB0aGlzLl9kZXZpY2VOYW1lU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLmRpc2FibGVSZXNwb25zaXZlJCA9IHRoaXMuZGV2aWNlTmFtZSQucGlwZShtYXAoKGMpID0+IGMgPT09ICdkZXNrdG9wJykpO1xuICAgICAgICB0aGlzLm1vYmlsZU9yVGFibGV0JCA9IHRoaXMuZGV2aWNlTmFtZSQucGlwZShtYXAoKGRldmljZSkgPT4gZGV2aWNlID09PSAnbW9iaWxlJyB8fCBkZXZpY2UgPT09ICd0YWJsZXQnKSk7XG4gICAgICAgIHRoaXMuX29sZENvbnRhaW5lciA9IEJhcnNhQXBpLlVsLkFwcGxpY2F0aW9uQ3RybHIuQ3VycmVudFN5c3RlbUFkYXB0ZXI7XG4gICAgICAgIHRoaXMuY2xvc2VTY3JvbGxTdHJhdGVneSA9IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmNvbnRlbnREZW5zaXR5JCA9IHRoaXMuX2NvbnRlbnREZW5zaXR5U2VydmljZS5jb250ZW50RGVuc2l0eTtcbiAgICAgICAgdGhpcy5zZWNvbmRhcnlDb2x1bW5zQ291bnQkID0gdGhpcy5zZWNvbmRhcnlDb2x1bW5zJC5waXBlKG1hcCgoY29sdW1ucykgPT4gY29sdW1ucy5sZW5ndGgpKTtcbiAgICAgICAgdGhpcy5jb2x1bW5zQ291bnQkID0gdGhpcy52aXNpYmxlQ29sdW1ucyQucGlwZShcbiAgICAgICAgICAgIG1hcCgoY29sdW1ucykgPT4gY29sdW1ucy5sZW5ndGgpLFxuICAgICAgICAgICAgbWFwKChjb3VudDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWNjZXNzID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5jb250ZXh0LCAnU2V0dGluZy5FeHRyYS5EZWZhdWx0Q29tbWFuZHNBY2Nlc3MnKTtcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXNzPy5WaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChjb3VudDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IF90eXBlRGVmSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5TZXR0aW5nLkV4dHJhLlJlcG9ydC5UeXBlRGVmSWQ7XG4gICAgfVxuICAgIGdldCBfaW5saW5lRWRpdE1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91bHZNYWluU2VydmljZS5nZXRWYWx1ZUlubGluZUVkaXQoKTtcbiAgICB9XG4gICAgZ2V0IF9hbGxvd0lubGluZUVkaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91bHZNYWluU2VydmljZS5nZXRBbGxvd0lubGluZUVkaXQoKTtcbiAgICB9XG4gICAgZ2V0IF9hY2Nlc3MoKTogRGVmYXVsdENvbW1hbmRzQWNjZXNzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5TZXR0aW5nPy5FeHRyYT8uRGVmYXVsdENvbW1hbmRzQWNjZXNzO1xuICAgIH1cbiAgICBzZXQgX2FjY2Vzcyh2YWw6IERlZmF1bHRDb21tYW5kc0FjY2Vzcykge1xuICAgICAgICBpZiAodGhpcy5jb250ZXh0LlNldHRpbmcuRXh0cmEpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5TZXR0aW5nLkV4dHJhLkRlZmF1bHRDb21tYW5kc0FjY2VzcyA9IHZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5TZXR0aW5nLkV4dHJhID0geyBEZWZhdWx0Q29tbWFuZHNBY2Nlc3M6IHZhbCB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRQYXJlbnRIZWlnaHQoKTtcbiAgICAgICAgdGhpcy5fcmVhZFZpZXdTZXR0aW5nKCk7XG4gICAgICAgIGlmICghdGhpcy5fYWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXREZWZhdWx0QWNjZXNzKCk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5zaG93T2tDYW5jZWxCdXR0b25zID0gdGhpcy5jb250ZXh0LlNob3dPa0NhbmNlbEJ1dHRvbnM7XG4gICAgICAgIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLmxheW91dEluZm8kLnN1YnNjcmliZSgobGF5b3V0SW5mbykgPT4ge1xuICAgICAgICAgICAgaWYgKGxheW91dEluZm8gJiYgbGF5b3V0SW5mby5Vc2VMYXlvdXRJdGVtVGV4dEZvckNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUxheW91dEl0ZW1UZXh0Rm9yQ29udHJvbCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0aXRsZSA9IHRoaXMudmlld1NldHRpbmc/LlRpdGxlO1xuICAgICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLnNldFRpdGxlKHRpdGxlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91bHZNYWluU2VydmljZS5yZXBvcnRJZCQuc3Vic2NyaWJlKChyZXBvcnRJZCkgPT4gKHRoaXMucmVwb3J0SWQgPSByZXBvcnRJZCkpO1xuICAgICAgICB0aGlzLl9sYXlvdXRTZXJ2aWNlLnNldFJlbmRlcmVkKHRydWUpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGUgPSB0aGlzLmNvbnRleHQuVmlld1NldHRpbmc/LklzQ2hlY2tMaXN0ID8gdGhpcy5tdWx0aXBsZVNlbGVjdGlvbiA6IHRoaXMuc2luZ2xlU2VsZWN0aW9uO1xuICAgICAgICB0aGlzLl9vcGVuT25DbGljayA9IHRoaXMudmlld1NldHRpbmc/Lk9wZW5PbkNsaWNrO1xuICAgICAgICB0aGlzLmN1c3RvbVJvd0hlaWdodCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LlNldHRpbmcsXG4gICAgICAgICAgICAnRXh0cmEuRXh0cmFKc29uUHJvcFJlcG9ydC5HcmlkUm93SGVpZ2h0J1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJ0bCQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLnJ0bCQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkFycm93JCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UucnRsJC5waXBlKFxuICAgICAgICAgICAgbWFwKChpc1J0bCkgPT4gKGlzUnRsID8gJ25hdmlnYXRpb24tbGVmdC1hcnJvdycgOiAnbmF2aWdhdGlvbi1yaWdodC1hcnJvdycpKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmFsbG93SW5saW5lRWRpdCQgPSB0aGlzLl91bHZNYWluU2VydmljZS5hbGxvd0lubGluZUVkaXQkO1xuICAgICAgICB0aGlzLmlubGluZUVkaXRNb2RlJCA9IHRoaXMuX3Vsdk1haW5TZXJ2aWNlLmlubGluZUVkaXRNb2RlJDtcbiAgICAgICAgdGhpcy5vbmx5SW5saW5lRWRpdCQgPSB0aGlzLl91bHZNYWluU2VydmljZS5vbmx5SW5saW5lRWRpdCQ7XG4gICAgICAgIHRoaXMuaGFzU2VsZWN0ZWQkID0gdGhpcy5tb0RhdGFMaXN0JC5waXBlKG1hcCgobW9MaXN0KSA9PiBtb0xpc3Quc29tZSgoYykgPT4gYy4kSXNDaGVja2VkKSkpO1xuICAgICAgICB0aGlzLm1vRGF0YUxpc3QkID0gdGhpcy5tb0RhdGFMaXN0JC5waXBlKG1hcCgoaXRlbXMpID0+IHRoaXMuX21hcENhcnRhYmxlTW8oaXRlbXMpKSk7XG4gICAgICAgIGNvbnN0IGdyaWREYXRhU291cmNlID0gbmV3IEdyaWRNb0RhdGFMaXN0KFxuICAgICAgICAgICAgdGhpcy5tb0RhdGFMaXN0JCxcbiAgICAgICAgICAgIHRoaXMuZ3JpZFNldHRpbmckLFxuICAgICAgICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucyQsXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRlcm0kXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ncmlkRGF0YVNvdXJjZSA9IGdyaWREYXRhU291cmNlO1xuICAgICAgICB0aGlzLmNvbHVtbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5ncmlkU2V0dGluZyQsIHRoaXMuc2Vjb25kYXJ5Q29sdW1ucyRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbXywgc2Vjb25kYXJ5Q29sdW1uc10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRhcmllcyA9IHNlY29uZGFyeUNvbHVtbnMubWFwKChjKSA9PiBjLk5hbWUpO1xuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gR2V0QWxsQ29sdW1uc1NvcnRlZCh0aGlzLmNvbnRleHQpLmZpbHRlcigoYykgPT4gIWMuSGlkZGVuKTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkQ29sdW1ucyA9IF8/LlNvcnRTZXR0aW5nTGlzdD8uZmlsdGVyKChjKSA9PiBjLklzR3JvdXBlZCkubWFwKChjKSA9PiBjLk5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoYykgPT4gZ3JvdXBlZENvbHVtbnMuaW5kZXhPZihjLk5hbWUpID09PSAtMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcigoYykgPT4gc2Vjb25kYXJpZXMuaW5kZXhPZihjLk5hbWUpID09PSAtMSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgoY29sdW1ucykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoYzogUmVwb3J0Vmlld0NvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjLiRDU1NDbGFzc05hbWUgPSAnY29sdW1uX19GaWVsZFR5cGUnICsgYy5GaWVsZFR5cGVJZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMuRmllbGRUeXBlSWQgPT09IDM4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLiRXaWR0aCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYy5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSA9PT0gJ0ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYy4kV2lkdGggPSAnMzhweCc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLiRXaWR0aCA9ICFCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzVXNlckxvZ2dlZEluIC8vIGlmIHVzZXIgaXMgYW5vbnltb3VzIGFsbCBjb2x1bW4gd2lkdGggZXF1YWxzIHRvIDEwMCVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYy5XaWR0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGMuV2lkdGggKyAncHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMTAwJSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLmlubGluZUVkaXRNb2RlJC5waXBlKFxuICAgICAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5oYXNTZWxlY3RlZCQpLFxuICAgICAgICAgICAgZmlsdGVyKChbXywgX19dKSA9PiB0aGlzLl9hY2Nlc3MuQWRkICE9PSBmYWxzZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyV2lkdGgoKTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLl9mb3JtcGFuZWxTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtcGFuZWxTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkV4ZWN1dGVUb29sYmFyQnV0dG9uKGU6IHsgaXRlbUlkOiBzdHJpbmc7IG9wdGlvbnM/OiBhbnkgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGl0ZW1JZCwgb3B0aW9ucyB9ID0gZTtcbiAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2UuZXhlY3V0ZVRvb2xiYXJCdXR0b24oaXRlbUlkLCBvcHRpb25zKTtcbiAgICB9XG4gICAgb25FZGl0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0SW5saW5lRWRpdCghdGhpcy5faW5saW5lRWRpdE1vZGUpO1xuICAgIH1cbiAgICBvblNlbGVjdE5leHRJbmxpbmVSZWNvcmQobW8pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0TmV4dElubGluZVJlY29yZChtbyk7XG4gICAgfVxuXG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChtbyk7XG4gICAgfVxuXG4gICAgb25FZGl0Rm9ybVBhbmVsQ2FuY2VsKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1vRGF0YUxpc3QgPSB0aGlzLm1vRGF0YUxpc3Q7XG4gICAgICAgIGNvbnN0IGhhc1NlbGVjdGVkID0gbW9EYXRhTGlzdC5zb21lKChjKSA9PiBjLiRJc0NoZWNrZWQpO1xuICAgICAgICBpZiAoaGFzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKG1vKTtcbiAgICAgICAgICAgIHRoaXMuX3NldElubGluZUVkaXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uRWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lubGluZUZvcm1QYW5lbFZhbHVlQ2hhbmdlKG1vKTtcbiAgICB9XG4gICAgb25Db2x1bW5SZXNpemVkKGNvbHVtbnM6IGNvbHVtbnNSZXNpemVkRXZlbnRBcmdzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUNvbHVtbnNSZXNpemVkKGNvbHVtbnMpO1xuICAgIH1cbiAgICBvbldvcmtmbG93U2hhcmVCdXR0b25zKGU6IFNoYXJlQnV0dG9uc0Nob2ljZURlZik6IHZvaWQge1xuICAgICAgICB0aGlzLl91bHZNYWluU2VydmljZS5hZGRXb3JrZmxvd0J1dHRvbnNJblRvb2xiYXIoZSk7XG4gICAgfVxuICAgIG9uUm93Q2xpY2soJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgbW8gfSA9ICRldmVudDtcbiAgICAgICAgaWYgKG1vLmdyb3VwIHx8IHRoaXMuX2lubGluZUVkaXRNb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9JbmRleCA9IHRoaXMuX2dldEluZGV4KG1vKTtcbiAgICAgICAgaWYgKCFtby4kSXNDaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dDaGVjayhtbywgbW9JbmRleCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3Blbk1vKG1vLCBtb0luZGV4KTtcbiAgICB9XG5cbiAgICBvblVsdkNvbW1hbmQoJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgbW8gfSA9ICRldmVudDtcbiAgICAgICAgY29uc3QgbW9JbmRleCA9IHRoaXMuX2dldEluZGV4KG1vKTtcbiAgICAgICAgdGhpcy5fdWx2Q29tbWFuZENsaWNrZWQobW8sIG1vSW5kZXgpO1xuICAgIH1cbiAgICBvbkRlc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kb0NoZWNrZWRBbGwoZmFsc2UpO1xuICAgICAgICAvLyB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdyb3dzZWxlY3QnLCB0aGlzLmNvbnRleHQpOyAvLyDYqNin2LnYqyDZhduM2LTZiNivINiv2YjYqNin2LEgc2VsZWN0aW9uY2hhbmdlINqv2LLYp9ix2LQg2YHYsdin2K7ZiNin2YbbjCDYtNmI2K9cbiAgICB9XG4gICAgb25Sb3dDaGVjaygkZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBtbyB9ID0gJGV2ZW50O1xuICAgICAgICBjb25zdCBtb0luZGV4ID0gdGhpcy5fZ2V0SW5kZXgobW8pO1xuICAgICAgICBpZiAodGhpcy5fb3Blbk9uQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDbGljaygkZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm93Q2hlY2sobW8sIG1vSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uQ2FydGFibGVGb3JtQ2xvc2VkKHsgbW8gfSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdNb0RhdGFMaXN0ID0gdGhpcy5tb0RhdGFMaXN0O1xuICAgICAgICBjb25zdCBuZXdNb0RhdGFMaXN0MiA9IG5ld01vRGF0YUxpc3QuZmlsdGVyKChjKSA9PiBjLklkICE9PSBtby5JZCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0TW9EYXRhTGlzdChuZXdNb0RhdGFMaXN0Mik7XG4gICAgICAgIHRoaXMucmVmcmVzaENvbnRleHRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3QyKTtcbiAgICB9XG4gICAgb25FeHBhbmRDbGljayhtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBtby4kRXhwYW5kZWQgPSAhbW8uJEV4cGFuZGVkO1xuICAgICAgICB0aGlzLl9zZXRWaXNpYmlsaXR5KG1vLiRFeHBhbmRlZCwgbW8pO1xuICAgICAgICB0aGlzLl9yZXNldE1vRGF0YUxpc3QoKTtcbiAgICB9XG5cbiAgICBvbkFsbENoZWNrYm94KGNoZWNrZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZG9DaGVja2VkQWxsKGNoZWNrZWQpO1xuICAgICAgICAvLyBpZiAoY2hlY2tlZCkge1xuICAgICAgICAvLyAgIHRoaXMuZ3JpZERhdGFTb3VyY2UucmVzdWx0SXRlbXMuZm9yRWFjaCgobW8sIGluZGV4KSA9PiB7XG4gICAgICAgIC8vICAgICB0aGlzLl9zZWxlY3QobW8sIGluZGV4KTtcbiAgICAgICAgLy8gICB9KTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICB0aGlzLmdyaWREYXRhU291cmNlLnJlc3VsdEl0ZW1zLmZvckVhY2goKG1vLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyAgICAgdGhpcy5fZGVzZWxlY3QobW8sIGluZGV4KTtcbiAgICAgICAgLy8gICB9KTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG9uU29ydEFzY2VuZGluZyhjb2x1bW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWRkU29ydENvbHVtbihjb2x1bW4uTmFtZSwgJ0FTQycpO1xuICAgIH1cblxuICAgIG9uU29ydERlc2NlbmRpbmcoY29sdW1uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FkZFNvcnRDb2x1bW4oY29sdW1uLk5hbWUsICdERVNDJyk7XG4gICAgfVxuICAgIG9uRmlsdGVyKHNlbGVjdGVkQ29sdW1uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Nob3dGaWx0ZXJTZXR0aW5nKHNlbGVjdGVkQ29sdW1uKTtcbiAgICB9XG5cbiAgICBvbkNvbHVtblNldHRpbmdzKGRldmljZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vcGVuU2V0dGluZ3MoJ2NvbHVtbnMnLCBkZXZpY2UpO1xuICAgIH1cblxuICAgIG9uU29ydFNldHRpbmdzKGRldmljZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vcGVuU2V0dGluZ3MoJ3NvcnQnLCBkZXZpY2UpO1xuICAgIH1cblxuICAgIG9uR3JvdXBieVNldHRpbmdzKGRldmljZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vcGVuU2V0dGluZ3MoJ2dyb3VwYnknLCBkZXZpY2UpO1xuICAgIH1cblxuICAgIG9uTGlzdENoZWNrYm94Q2xpY2soJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgbW8sIGluZGV4LCBlIH0gPSAkZXZlbnQ7XG4gICAgICAgIHRoaXMub25Sb3dDaGVjayh7IG1vLCBpbmRleCwgY2F1c2U6ICdzaW5nbGVTZWxlY3QnIH0pO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25MaXN0TmF2aWdhdGlvbkNsaWNrKCRldmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IG1vLCBpbmRleCwgZSB9ID0gJGV2ZW50O1xuICAgICAgICB0aGlzLm9uUm93Q2xpY2soeyBtbywgaW5kZXggfSk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgb25TYXZlVG9wRm9ybShtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdNb0RhdGFMaXN0ID0gdGhpcy5tb0RhdGFMaXN0O1xuICAgICAgICBjb25zdCBleGlzdHNJbmRleCA9IG5ld01vRGF0YUxpc3QuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBtby5JZCk7XG4gICAgICAgIGlmIChleGlzdHNJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBuZXdNb0RhdGFMaXN0W2V4aXN0c0luZGV4XSA9IG1vO1xuICAgICAgICB9XG4gICAgICAgIG5ld01vRGF0YUxpc3QubWFwKChjKSA9PiB7XG4gICAgICAgICAgICBjLiROZXdJbmxpbmVNbyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGMuJElzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcmVzZXRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3QpO1xuICAgICAgICB0aGlzLnJlZnJlc2hDb250ZXh0TW9EYXRhTGlzdChuZXdNb0RhdGFMaXN0KTtcbiAgICB9XG4gICAgb25OZXdUb3BGb3JtQWRkKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FkZElubGluZU1vVG9Nb2RhdGFMaXN0KG1vKTtcbiAgICB9XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBASW5wdXQoKSBTaG93Rm9ybVBhbmVsQ29udHJvbCA9IChmb3JtcGFuZWxDdHJscikgPT4ge307XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBASW5wdXQoKSBGb3JjZUNsb3NlQ2hpbGQgPSAoKSA9PiB7fTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBJbnB1dCgpIFJlZnJlc2hGb3JtUGFuZWxDb250cm9sID0gKGZvcm1wYW5lbEN0cmxyKSA9PiB7fTtcblxuICAgIC8vIHByb3RlY3RlZCBfaW5saW5lRWRpdE1vZGVDaGFuZ2VkKGVkaXRNb2RlKTogdm9pZCB7XG4gICAgLy8gICAgIGlmIChlZGl0TW9kZSkge1xuICAgIC8vICAgICAgICAgY29uc3QgY2FuQWRkOiBib29sZWFuID0gdGhpcy5fYWNjZXNzPy5BZGQgIT09IGZhbHNlO1xuXG4gICAgLy8gICAgICAgICBsZXQgc2VsZWN0ZWRNbyA9IHRoaXMuX2dldFNlbGVjdGVkKCk7XG4gICAgLy8gICAgICAgICBsZXQgbmV3TW87XG4gICAgLy8gICAgICAgICBpZiAoY2FuQWRkICE9PSBmYWxzZSAmJiAhc2VsZWN0ZWRNbykge1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZU5ld0lubGluZVJlY29yZCgpO1xuICAgIC8vICAgICAgICAgICAgIHJldHVybjtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICAgIC8vIGlmICghc2VsZWN0ZWRNbyAmJiAhbmV3TW8gJiYgdGhpcy5tb0RhdGFMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAvLyAgICAgICAgIC8vICAgICBzZWxlY3RlZE1vID0gdGhpcy5tb0RhdGFMaXN0WzBdO1xuICAgIC8vICAgICAgICAgLy8gfVxuICAgIC8vICAgICAgICAgLy8gaWYgKHNlbGVjdGVkTW8pIHtcbiAgICAvLyAgICAgICAgIC8vICAgICBjb25zdCBpZE9mU2VsZWN0ZWRNbyA9IHRoaXMuX2luZGV4T2ZNbyhzZWxlY3RlZE1vKTtcbiAgICAvLyAgICAgICAgIC8vICAgICBzZWxlY3RlZE1vLiRJc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAvLyAgICAgICAgIC8vICAgICB0aGlzLl9jcmVhdGVOZXdJbmxpbmVSZWNvcmQoc2VsZWN0ZWRNbyk7XG4gICAgLy8gICAgICAgICAvLyAgICAgdGhpcy5fcm93Q2hlY2soc2VsZWN0ZWRNbywgaWRPZlNlbGVjdGVkTW8pO1xuICAgIC8vICAgICAgICAgLy8gfVxuICAgIC8vICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgQmFyc2FBcGkuVWwuQXBwbGljYXRpb25DdHJsci5DdXJyZW50U3lzdGVtQWRhcHRlciA9IHRoaXMuX29sZENvbnRhaW5lcjtcbiAgICAvLyAgICAgICAgIHRoaXMuX3NldE5ld0lubGluZU1vKG51bGwpO1xuICAgIC8vICAgICB9XG4gICAgLy8gfVxuICAgIC8vIHByb3RlY3RlZCBfY3JlYXRlTmV3SW5saW5lUmVjb3JkKHNlbGVjdGVkTW8/OiBNZXRhb2JqZWN0RGF0YU1vZGVsKSB7XG4gICAgLy8gICAgIGNvbnN0IG1vID0gdGhpcy5faW5saW5lRWRpdFByZXBhcmVOZXdNbygpO1xuICAgIC8vICAgICBjb25zdCBmb3JtTW8gPSBCYXJzYUFwaS5Db21tb24uTWVyZ2VyLkZhc3RNZXJnZShtbywgc2VsZWN0ZWRNbywgeyBleHRlbmRlZEZpZWxkczogWydJZCwkQ2FwdGlvbiddIH0pO1xuICAgIC8vICAgICB0aGlzLl9zZXROZXdJbmxpbmVNbyhmb3JtTW8pO1xuICAgIC8vICAgICB0aGlzLl9zZWxlY3QoZm9ybU1vLCAtMSk7XG4gICAgLy8gfVxuICAgIHByb3RlY3RlZCBfcmVzZXRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3Q/OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pIHtcbiAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2UucmVTZXRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3QpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2dldFdpZHRoKGxhYmVsOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuY2FudmFzUmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdHggPSB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGN0eC5mb250ID0gJ25vcm1hbCAwLjg4NXJlbSBJUkFOWWVrYW5EaWdpdHMnO1xuICAgICAgICBjb25zdCBsYWJlbFdpdGhQYWRkaW5nID0gY3R4Lm1lYXN1cmVUZXh0KGxhYmVsKS53aWR0aDtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChsYWJlbFdpdGhQYWRkaW5nKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZXRQYXJlbnRIZWlnaHQoKSB7XG4gICAgICAgIHRoaXMucGFyZW50SGVpZ2h0ID0gZ2V0UGFyZW50SGVpZ2h0KHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfbWFwQ2FydGFibGVNbyhpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdKSB7XG4gICAgICAgIGlmICghdGhpcy52aWV3U2V0dGluZykge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgTmFtZVNlcmlhbGl6ZU1vLCBDYXJ0YWJsZU9iamVjdE5hbWUgfSA9IHRoaXMudmlld1NldHRpbmc7XG4gICAgICAgIGlmICghTmFtZVNlcmlhbGl6ZU1vIHx8ICFDYXJ0YWJsZU9iamVjdE5hbWUgfHwgIWl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuICAgICAgICBpdGVtcy5mb3JFYWNoKChjKSA9PiAoY1tDYXJ0YWJsZU9iamVjdE5hbWVdID0gQmFyc2FBcGkuRXh0LmRlY29kZSgneycgKyBjW05hbWVTZXJpYWxpemVNb10gKyAnfScpKSk7XG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICBvblRvb2xiYXJDcmVhdGVOZXdJbmxpbmVNbygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlTmV3SW5saW5lTW8oKTtcbiAgICB9XG4gICAgb25DcmVhdGVOZXdNbygpIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlTmV3SW5saW5lTW8odHJ1ZSk7XG4gICAgfVxuICAgIG9uTWFuZGF0b3J5KGlzTWFuZGF0b3I6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnTWFuZGF0b3J5JywgaXNNYW5kYXRvcik7XG4gICAgfVxuICAgIG9uVXBkYXRlTW8obW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IHRoaXMubW9EYXRhTGlzdDtcbiAgICAgICAgY29uc3QgbW9JbmRleCA9IG1vRGF0YUxpc3QuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBtby5JZCk7XG4gICAgICAgIGlmIChtb0luZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIG1vRGF0YUxpc3RbbW9JbmRleF0gPSBtbztcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0TW9EYXRhTGlzdChtb0RhdGFMaXN0KTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENvbnRleHRNb0RhdGFMaXN0KG1vRGF0YUxpc3QpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX2NyZWF0ZU5ld0lubGluZU1vKHNldENoYW5nZWQgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBtb0RhdGFMaXN0ID0gdGhpcy5tb0RhdGFMaXN0O1xuICAgICAgICBjb25zdCBleGlzdElubGluZU1vID0gbW9EYXRhTGlzdC5maW5kKChjKSA9PiBjLiROZXdJbmxpbmVNbyk7XG4gICAgICAgIGlmIChleGlzdElubGluZU1vKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChleGlzdElubGluZU1vKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtbyA9IHRoaXMuX2lubGluZVJlcG9ydENyZWF0ZU5ld01vKHRydWUpO1xuICAgICAgICBpZiAoc2V0Q2hhbmdlZCkge1xuICAgICAgICAgICAgbW8uJElubGluZU1vQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IChjLiRJc0NoZWNrZWQgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLl9hZGRJbmxpbmVNb1RvTW9kYXRhTGlzdChtbywgdHJ1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lubGluZVJlcG9ydENyZWF0ZU5ld01vKGlzQ2hlY2tlZDogYm9vbGVhbik6IE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdWx2TWFpblNlcnZpY2UuY3JlYXRlTmV3SW5saW5lTW8oaXNDaGVja2VkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2lubGluZUZvcm1QYW5lbFZhbHVlQ2hhbmdlKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01vRGF0YUxpc3QgPSB0aGlzLm1vRGF0YUxpc3Q7XG4gICAgICAgIGNvbnN0IGV4aXN0TW9JbmRleCA9IG5ld01vRGF0YUxpc3QuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBtby5JZCk7XG4gICAgICAgIGlmIChleGlzdE1vSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgbmV3TW9EYXRhTGlzdFtleGlzdE1vSW5kZXhdID0gQmFyc2FBcGkuQ29tbW9uLk1ldGFPYmplY3RXZWIuQ3JlYXRlTW8obW8pO1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRNb0RhdGFMaXN0KG5ld01vRGF0YUxpc3QpO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQ29udGV4dE1vRGF0YUxpc3QobmV3TW9EYXRhTGlzdCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZWxlY3ROZXh0SW5saW5lUmVjb3JkKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01vRGF0YUxpc3QgPSB0aGlzLm1vRGF0YUxpc3Q7XG4gICAgICAgIGlmICghbW8uJE5ld0lubGluZU1vKSB7XG4gICAgICAgICAgICAvLyBzZWxlY3QgbmV4dCByZWNvcmRcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0c0luZGV4ID0gbmV3TW9EYXRhTGlzdC5maW5kSW5kZXgoKGMpID0+IGMuSWQgPT09IG1vLklkKTtcbiAgICAgICAgICAgIGlmIChleGlzdHNJbmRleCA+IC0xICYmIGV4aXN0c0luZGV4ICsgMSA8IG5ld01vRGF0YUxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbmV3TW9EYXRhTGlzdFtleGlzdHNJbmRleCArIDFdLiRJc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3dDaGVjayhuZXdNb0RhdGFMaXN0W2V4aXN0c0luZGV4ICsgMV0sIGV4aXN0c0luZGV4ICsgMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld01vRGF0YUxpc3QubWFwKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGMuJE5ld0lubGluZU1vID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBjLiRJc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRJbmxpbmVNb1RvTW9kYXRhTGlzdCh0aGlzLl9pbmxpbmVSZXBvcnRDcmVhdGVOZXdNbyh0cnVlKSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVOZXdJbmxpbmVNbygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5saW5lRWRpdFNhdmVGb3JtUGFuZWwobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3TW9EYXRhTGlzdCA9IHRoaXMubW9EYXRhTGlzdDtcbiAgICAgICAgaWYgKCFtby4kTmV3SW5saW5lTW8pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGlzdHNJbmRleCA9IG5ld01vRGF0YUxpc3QuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBtby5JZCk7XG4gICAgICAgIGlmIChleGlzdHNJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBuZXdNb0RhdGFMaXN0W2V4aXN0c0luZGV4XSA9IG1vO1xuICAgICAgICB9XG4gICAgICAgIG5ld01vRGF0YUxpc3QubWFwKChjKSA9PiB7XG4gICAgICAgICAgICBjLiROZXdJbmxpbmVNbyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGMuJElzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyB0aGlzLl91bHZNYWluU2VydmljZS5jcmVhdGVOZXdJbmxpbmVNbygpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldERlZmF1bHRBY2Nlc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjY2VzcyA9IHtcbiAgICAgICAgICAgIEFkZDogZmFsc2UsXG4gICAgICAgICAgICBBZGRUb0xpc3Q6IGZhbHNlLFxuICAgICAgICAgICAgRGVsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgIEVkaXQ6IGZhbHNlLFxuICAgICAgICAgICAgRXhwb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIFByaW50OiBmYWxzZSxcbiAgICAgICAgICAgIFJlZnJlc2g6IGZhbHNlLFxuICAgICAgICAgICAgUmVtb3ZlRnJvbUxpc3Q6IGZhbHNlLFxuICAgICAgICAgICAgVmlldzogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9leHBhbmRNbyhzZWxlY3RlZE1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBleHBhbmQpOiB2b2lkIHtcbiAgICAgICAgc2VsZWN0ZWRNby4kRXhwYW5kZWQgPSBleHBhbmQ7XG4gICAgICAgIHNlbGVjdGVkTW8uJENoaWxkcmVuPy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZXhwYW5kTW8oY2hpbGQsIGV4cGFuZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2luZGV4T2ZJZChpZCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWREYXRhU291cmNlLnJlc3VsdEl0ZW1zLmZpbmRJbmRleCgoYykgPT4gYy5JZCA9PT0gaWQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2luZGV4T2ZNbyhtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWREYXRhU291cmNlLnJlc3VsdEl0ZW1zLmZpbmRJbmRleCgoYykgPT4gYy5JZCA9PT0gbW8uSWQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2luZGV4T2ZTZWxlY3RlZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkRGF0YVNvdXJjZS5yZXN1bHRJdGVtcy5maW5kSW5kZXgoKGMpID0+IGMuJElzQ2hlY2tlZCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZ2V0SW5kZXgobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tb0RhdGFMaXN0LmZpbmRJbmRleCgoYykgPT4gYy5JZCA9PT0gbW8uSWQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldElubGluZUVkaXQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2Uuc2V0SW5saW5lRWRpdCh2YWx1ZSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVhZFZpZXdTZXR0aW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXR0aW5nID0gdGhpcy5jb250ZXh0LlNldHRpbmcuQ2xhc3NOYW1lcy5DdXN0b21VaT8uUGFyYW1ldGVycztcbiAgICB9XG4gICAgLy8gcHJvdGVjdGVkIF9tb0RhdGFMaXN0Q2hhbmdlZChtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAvLyAgICAgc3VwZXIuX21vRGF0YUxpc3RDaGFuZ2VkKG1vRGF0YUxpc3QpO1xuICAgIC8vICAgICBpZiAodGhpcy5faW5saW5lRWRpdE1vZGUpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IGNoZWNrZWRNb0luZGV4ID0gbW9EYXRhTGlzdC5maW5kSW5kZXgoKGMpID0+IGMuJElzQ2hlY2tlZCk7XG5cbiAgICAvLyAgICAgICAgIGlmIChjaGVja2VkTW9JbmRleCA+IC0xKSB7XG4gICAgLy8gICAgICAgICAgICAgY29uc3QgY2hlY2tlZE1vID0gbW9EYXRhTGlzdFtjaGVja2VkTW9JbmRleF07XG4gICAgLy8gICAgICAgICAgICAgaWYgKGNoZWNrZWRNby5JZCAhPT0gdGhpcy5mb3JtUGFuZWxDdHJsci5Nby5JZCkge1xuICAgIC8vICAgICAgICAgICAgICAgICB0aGlzLl9pbmxpbmVFZGl0b3JEZXN0cm95Rm9ybVBhbmVsQ3RybHIoKTtcbiAgICAvLyAgICAgICAgICAgICAgICAgdGhpcy5faW5saW5lRWRpdENyZWF0ZUZvcm1QYW5lbEN0cmxyKGNoZWNrZWRNbywgY2hlY2tlZE1vSW5kZXgpO1xuICAgIC8vICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIHByb3RlY3RlZCBfc2V0VmlzaWJpbGl0eShcbiAgICAgICAgZXhwYW5kOiBib29sZWFuLFxuICAgICAgICBtbzogYW55IC8vTWV0YW9iamVjdERhdGFNb2RlbFxuICAgICk6IHZvaWQge1xuICAgICAgICBtby4kQ2hpbGRyZW4/LmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICBjaGlsZC4kVmlzaWJpbGl0eSA9IGV4cGFuZDtcbiAgICAgICAgICAgIGlmIChjaGlsZC4kQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRWaXNpYmlsaXR5KGV4cGFuZCwgY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBwcm90ZWN0ZWQgX3NldE5ld0lubGluZU1vKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbCk6IHZvaWQge1xuICAgIC8vICAgICB0aGlzLl91bHZNYWluU2VydmljZS5zZXROZXdJbmxpbmVNbyhtbyk7XG4gICAgLy8gfVxuICAgIC8vIHByb3RlY3RlZCBfaW5saW5lRWRpdFByZXBhcmVOZXdNbygpOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICAvLyBjb25zdCBuZXdNbyA9IGdldE5ld01vR3JpZEVkaXRvcih0aGlzLmZvcm1TZXR0aW5nLCB0aGlzLl90eXBlRGVmSWQpO1xuICAgIC8vIG5ld01vLklkID0gZ2V0VW5pcXVlSWQoMyk7XG4gICAgLy8gaWYgKHRoaXMuX2lzQ29tcG9zaXRlKCkpIHtcbiAgICAvLyAgICAgY29uc3QgcmVsYXRpb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLmNvbnRleHQuU2V0dGluZywgJ0V4dHJhLlJlbGF0aW9uJyk7XG4gICAgLy8gICAgIG5ld01vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0gPSByZWxhdGlvbi5QYXJlbnRNb0lkO1xuICAgIC8vIH1cbiAgICAvLyAgICAgICAgY29uc3QgbmV3TW9EYXRhTGlzdCA9IFsuLi50aGlzLm1vRGF0YUxpc3QsIG5ld01vIGFzIE1ldGFvYmplY3REYXRhTW9kZWxdO1xuICAgIC8vICAgICAgIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLnJlU2V0TW9EYXRhTGlzdChuZXdNb0RhdGFMaXN0KTtcbiAgICAvLyBCYXJzYUFwaS5VbC5BcHBsaWNhdGlvbkN0cmxyLmZpcmVFdmVudChcbiAgICAvLyAgIEJhcnNhQXBpLlVsLkFwcGxpY2F0aW9uQ3RybHIuRXZlbnRFbnVtLkdsb2JhbFJlcG9ydE1vQWRkLFxuICAgIC8vICAgdGhpcy5jb250ZXh0LFxuICAgIC8vICAgcmVwb3J0RXZlbnRNb0FkZFxuICAgIC8vICk7XG4gICAgLy8gICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnUmVmcmVzaENvbnRleHRNb0RhdGFMaXN0JywgbmV3TW9EYXRhTGlzdCk7XG4gICAgLy8gICAgcmV0dXJuIG5ld01vIGFzIE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgLy8gfVxuICAgIHByb3RlY3RlZCBfYWRkSW5saW5lTW9Ub01vZGF0YUxpc3QobmV3SW5saW5lTW86IE1ldGFvYmplY3REYXRhTW9kZWwsIHNlbGVjdDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01vRGF0YUxpc3QgPSBbLi4udGhpcy5tb0RhdGFMaXN0LCB7IC4uLm5ld0lubGluZU1vLCAkSXNDaGVja2VkOiBzZWxlY3QgfV07XG4gICAgICAgIHRoaXMuX3Jlc2V0TW9EYXRhTGlzdChuZXdNb0RhdGFMaXN0KTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQ29udGV4dE1vRGF0YUxpc3QobmV3TW9EYXRhTGlzdCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yb3dDaGVjayhtbzogTWV0YW9iamVjdERhdGFNb2RlbCwgaW5kZXg6IG51bWJlciwgc2VsZWN0ZWQgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlZGl0TW9kZSA9IHRoaXMuX2lubGluZUVkaXRNb2RlICYmIHRoaXMuX2FsbG93SW5saW5lRWRpdDtcbiAgICAgICAgaWYgKG1vLiRJc0NoZWNrZWQgJiYgZWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2VsZWN0aW9uTW9kZSA9IHRoaXMuc2VsZWN0aW9uTW9kZTtcbiAgICAgICAgaWYgKGVkaXRNb2RlKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlID0gU2VsZWN0aW9uTW9kZS5TSU5HTEU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hlY2tlZCA9ICFtby4kSXNDaGVja2VkIHx8IHNlbGVjdGVkO1xuICAgICAgICB0aGlzLnJvd0hvdmVyYWJsZSA9IGZhbHNlO1xuICAgICAgICBpZiAoc2VsZWN0aW9uTW9kZSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJyAmJiBjaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZG9DaGVja2VkQWxsKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlZGl0TW9kZSkge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fc2V0TmV3SW5saW5lTW8obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdChtbywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5fc2V0VmFsdWVJbmxpbmVNbyhtbyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdChtbywgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgdGhpcy5fZGVzZWxlY3QobW8sIGluZGV4KTtcbiAgICB9XG4gICAgLy8gcHJvdGVjdGVkIF9zZXRWYWx1ZUlubGluZU1vKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgLy8gICAgIC8vIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0VmFsdWUoeyAuLi5tbywgJFR5cGVEZWZJZDogdGhpcy5fdHlwZURlZklkIH0pO1xuICAgIC8vIH1cblxuICAgIHByb3RlY3RlZCBfaW5saW5lRWRpdG9yRGVzdHJveUZvcm1QYW5lbEN0cmxyKCk6IHZvaWQge1xuICAgICAgICAvLyBpZiAodGhpcy5mb3JtUGFuZWxDdHJscikge1xuICAgICAgICAvLyAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS5kZXN0cm95KCk7XG4gICAgICAgIC8vICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLkRlc3Ryb3koKTtcbiAgICAgICAgLy8gICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIgPSBudWxsO1xuICAgICAgICAvLyB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfd2luZG93UmVzaXplZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fc2V0UGFyZW50SGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0Q29udGFpbmVyV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoU291cmNlJC5uZXh0KGVsLm9mZnNldFdpZHRoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2RldmljZVNpemVDaGFuZ2VkKGRldmljZVNpemUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxOYXRpdmVFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5faW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5Q29sdW1uc1NvdXJjZS5uZXh0KFtdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyaWRTaXplID0gZ2V0Q29udHJvbFNpemVNb2RlKGVsTmF0aXZlRWxlbWVudCwgZGV2aWNlU2l6ZSk7XG4gICAgICAgIGxldCBkZXZpY2VOYW1lOiBEZXZpY2VTaXplID0gJ2Rlc2t0b3AnO1xuICAgICAgICBjb25zdCBhbGxDb2x1bW5zV2lkdGggPSB0aGlzLmFsbENvbHVtbnMubWFwKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uV2lkdGggPT0gMCA/IHRoaXMuX2dldFdpZHRoKGNvbHVtbi5BbGlhcykgOiBjb2x1bW4uV2lkdGhcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLl92aXNpYmxlQ29sdW1uc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICBsZXQgY29sdW1uc0NvdW50ID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoO1xuICAgICAgICBzd2l0Y2ggKGdyaWRTaXplKSB7XG4gICAgICAgICAgICBjYXNlICdsJzpcbiAgICAgICAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgICAgICAgICBkZXZpY2VOYW1lID0gJ2Rlc2t0b3AnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgZGV2aWNlTmFtZSA9ICdtb2JpbGUnO1xuICAgICAgICAgICAgICAgIGNvbHVtbnNDb3VudCA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICBkZXZpY2VOYW1lID0gJ3RhYmxldCc7XG4gICAgICAgICAgICAgICAgY29sdW1uc0NvdW50ID0gNDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kZXZpY2VOYW1lU291cmNlLm5leHQoZGV2aWNlTmFtZSk7XG4gICAgICAgIGNvbnN0IGNvbFdpZHRoU2V0dGluZ3MgPSB0aGlzLmdyaWRTZXR0aW5nU291cmNlLmdldFZhbHVlKCk/LkNvbFNldHRpbmdMaXN0Py5tYXAoKGMpID0+IGMuV2lkdGgpO1xuICAgICAgICBjb25zdCBjb2x1bW5zV2lkdGggPSBjb2xXaWR0aFNldHRpbmdzLmxlbmd0aCA/IGNvbFdpZHRoU2V0dGluZ3MgOiBhbGxDb2x1bW5zV2lkdGg7XG4gICAgICAgIGxldCBzdW1Db2xXaWR0aCA9IDA7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gZWxOYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICBpZiAoY29sdW1uc1dpZHRoLmxlbmd0aCA+IDAgJiYgY29udGFpbmVyV2lkdGggPiAwKSB7XG4gICAgICAgICAgICBjb2x1bW5zQ291bnQgPSB2aXNpYmxlQ29sdW1ucy5sZW5ndGg7XG4gICAgICAgICAgICBjb2x1bW5zV2lkdGguZm9yRWFjaCgod2lkdGgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1bUNvbFdpZHRoICsgd2lkdGggPiBjb250YWluZXJXaWR0aCAmJiBjb2x1bW5zQ291bnQgPT09IHZpc2libGVDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zQ291bnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3VtQ29sV2lkdGggKz0gd2lkdGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2aXNpYmxlQ29sdW1ucy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U2V0dGluZz8uRGlzYWJsZVJlc3BvbnNpdmUgfHxcbiAgICAgICAgICAgICAgICAoIXRoaXMudmlld1NldHRpbmcgJiYgdGhpcy5fZGV2aWNlTmFtZVNvdXJjZS5nZXRWYWx1ZSgpID09PSAnZGVza3RvcCcpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNDb2x1bW5zID0gdGhpcy5zZWNvbmRhcnlDb2x1bW5zU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlY0NvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5Q29sdW1uc1NvdXJjZS5uZXh0KFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWNvbmRhcnlDb2x1bW5zU291cmNlLm5leHQodmlzaWJsZUNvbHVtbnMuc2xpY2UoY29sdW1uc0NvdW50LCB2aXNpYmxlQ29sdW1ucy5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfb3BlblNldHRpbmdzKG5hbWUsIGRldmljZTogRGV2aWNlU2l6ZSk6IHZvaWQge1xuICAgICAgICBsZXQgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdjb2x1bW5zJzpcbiAgICAgICAgICAgICAgICBjb21wb25lbnQgPSBVbHZDb2x1bW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NvcnQnOlxuICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IFVsdlNvcnRTZXR0aW5nc0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyb3VwYnknOlxuICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IFVsdkdyb3VwYnlTZXR0aW5nc0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb25maWc6IERpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgZGF0YTogeyBjb250ZXh0OiB0aGlzLmNvbnRleHQgfSxcbiAgICAgICAgICAgIGZ1bGxTY3JlZW46IGRldmljZSA9PT0gJ21vYmlsZScsXG4gICAgICAgICAgICBtaW5XaWR0aDogZGV2aWNlID09PSAnbW9iaWxlJyA/ICdhdXRvJyA6IHRoaXMuZGlhbG9nQ29uZmlnLm1pbldpZHRoLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBkZXZpY2UgPT09ICdtb2JpbGUnID8gJ2F1dG8nIDogdGhpcy5kaWFsb2dDb25maWcubWluSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICAgIGlmIChjb21wb25lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbihjb21wb25lbnQsIGNvbmZpZyk7XG4gICAgICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoc2V0dGluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU29ydENoYW5nZWQgPSBuYW1lID09PSAnc29ydCcgfHwgbmFtZSA9PT0gJ2dyb3VwYnknO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdyaWRTZXR0aW5nKHNldHRpbmcsIGlzU29ydENoYW5nZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQubW9EYXRhTGlzdCA9IHRoaXMuZ3JpZERhdGFTb3VyY2UucmVzdWx0SXRlbXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFZpc2libGVDb2x1bW5zKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zaG93RmlsdGVyU2V0dGluZyhzZWxlY3RlZENvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHZvaWQge1xuICAgICAgICBjb25zdCB0eXBlRGVmSWQgPSB0aGlzLl90eXBlRGVmSWQ7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xzSW5mbyQgPSB0aGlzLl91bHZNYWluU2VydmljZS5sb2FkTWV0YUNvbmRpdGlvbnNDb250cm9sSW5mb3MoXG4gICAgICAgICAgICB0eXBlRGVmSWQsXG4gICAgICAgICAgICB0aGlzLmFsbENvbHVtbnMubWFwKChjKSA9PiBjLk5hbWUpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xzSW5mbyQsXG4gICAgICAgICAgICAgICAgdHlwZURlZklkLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uTmFtZTogc2VsZWN0ZWRDb2x1bW4uTmFtZSxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKFVsdkZpbHRlclNldHRpbmdzQ29tcG9uZW50LCBjb25maWcpO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoc2V0dGluZykgPT4ge1xuICAgICAgICAgICAgaWYgKHNldHRpbmcpIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfYWRkU29ydENvbHVtbihuYW1lOiBhbnksIHNvcnREaXJlY3Rpb246IHN0cmluZywgaXNHcm91cGVkID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc29ydEl0ZW0gPSB7XG4gICAgICAgICAgICBOYW1lOiBuYW1lLFxuICAgICAgICAgICAgU29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbixcbiAgICAgICAgICAgIElzR3JvdXBlZDogaXNHcm91cGVkXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0R3JpZFNldHRpbmdzKHRoaXMuY29udGV4dCk7XG4gICAgICAgIGNvbnN0IGV4aXN0U29ydEl0ZW1JbmRleCA9IHNldHRpbmdzLlNvcnRTZXR0aW5nTGlzdC5maW5kSW5kZXgoKGMpID0+IGMuTmFtZSA9PT0gbmFtZSk7XG4gICAgICAgIGlmIChleGlzdFNvcnRJdGVtSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgc2V0dGluZ3MuU29ydFNldHRpbmdMaXN0W2V4aXN0U29ydEl0ZW1JbmRleF0gPSBzb3J0SXRlbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldHRpbmdzLlNvcnRTZXR0aW5nTGlzdC5wdXNoKHNvcnRJdGVtKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUdyaWRTZXR0aW5nKHNldHRpbmdzLCB0cnVlKTtcbiAgICB9XG59XG4iXX0=