ontimize-web-ngx 15.0.0-beta.3 → 15.0.0-beta.4

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.
@@ -187,12 +187,12 @@ export class OTableQuickfilterComponent {
187
187
  }
188
188
  }
189
189
  OTableQuickfilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableQuickfilterComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: forwardRef(() => OTableBase) }], target: i0.ɵɵFactoryTarget.Component });
190
- OTableQuickfilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTableQuickfilterComponent, selector: "o-table-quickfilter", inputs: { placeholder: "placeholder" }, outputs: { onChange: "onChange" }, host: { properties: { "class.o-table-quickfilter": "true" } }, viewQueries: [{ propertyName: "filter", first: true, predicate: ["filter"], descendants: true }, { propertyName: "matMenu", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"quickFilter\" fxLayout=\"row\">\n\n <mat-form-field appearance=\"outline\">\n <input matInput #filter [formControl]=\"formControl\" (click)=\"$event.stopPropagation()\" placeholder=\"{{ placeholder | oTranslate }}\">\n <div matPrefix>\n <mat-icon svgIcon=\"ontimize:search\" [matBadge]=\"areAllColumnsChecked()?'':getCountColumnsChecked()\" matBadgeSize=\"small\"></mat-icon>\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (click)=\"$event.stopPropagation()\">\n <mat-icon class=\"search-icon\">expand_more</mat-icon>\n </button>\n </div>\n\n <mat-menu #menu=\"matMenu\" class=\"o-table-quickfilter-menu\">\n <div fxLayout=\"column\" class=\"checkbox-container\">\n\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"areAllColumnsChecked()\" (change)=\"onSelectAllChange($event)\">\n {{ 'SELECT_ALL' | oTranslate}}\n </mat-checkbox>\n <mat-divider></mat-divider>\n\n <ng-container *ngFor=\"let column of quickFilterColumns\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"isChecked(column)\" (change)=\"onCheckboxChange(column, $event)\">\n {{ column.title | oTranslate }}\n </mat-checkbox>\n </ng-container>\n\n <ng-container *ngIf=\"showCaseSensitiveCheckbox()\">\n <mat-divider></mat-divider>\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"oTableOptions.filterCaseSensitive\"\n (change)=\"oTableOptions.filterCaseSensitive = $event.checked\">\n {{ 'TABLE.FILTER.CASE_SENSITIVE' | oTranslate}}\n </mat-checkbox>\n </ng-container>\n </div>\n </mat-menu>\n </mat-form-field>\n</div>\n", styles: [".o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-infix{align-self:center;padding:0;min-height:30px;display:flex}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix{padding-left:10px;padding-right:10px}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div{align-items:center;display:flex}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div .mat-icon,.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div button{margin-right:6px}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div .mat-badge-content{background-color:#3c8500;width:14px;height:14px;line-height:14px;top:-4px;right:-4px}.o-table-quickfilter-menu .checkbox-container{padding:6px 12px}.o-table-quickfilter-menu .checkbox-container .mat-divider{margin:8px 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i11.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "pipe", type: i12.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
190
+ OTableQuickfilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTableQuickfilterComponent, selector: "o-table-quickfilter", inputs: { placeholder: "placeholder" }, outputs: { onChange: "onChange" }, host: { properties: { "class.o-table-quickfilter": "true" } }, viewQueries: [{ propertyName: "filter", first: true, predicate: ["filter"], descendants: true }, { propertyName: "matMenu", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"quickFilter\" fxLayout=\"row\">\n\n <mat-form-field appearance=\"outline\">\n <input matInput #filter [formControl]=\"formControl\" (click)=\"$event.stopPropagation()\" placeholder=\"{{ placeholder | oTranslate }}\">\n <div matPrefix>\n <mat-icon svgIcon=\"ontimize:search\" [matBadge]=\"areAllColumnsChecked()?'':getCountColumnsChecked()\" matBadgeSize=\"small\"></mat-icon>\n <button type=\"button\" mat-icon-button [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (click)=\"$event.stopPropagation()\">\n <mat-icon class=\"search-icon\">expand_more</mat-icon>\n </button>\n </div>\n\n <mat-menu #menu=\"matMenu\" class=\"o-table-quickfilter-menu\">\n <div fxLayout=\"column\" class=\"checkbox-container\">\n\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"areAllColumnsChecked()\" (change)=\"onSelectAllChange($event)\">\n {{ 'SELECT_ALL' | oTranslate}}\n </mat-checkbox>\n <mat-divider></mat-divider>\n\n <ng-container *ngFor=\"let column of quickFilterColumns\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"isChecked(column)\" (change)=\"onCheckboxChange(column, $event)\">\n {{ column.title | oTranslate }}\n </mat-checkbox>\n </ng-container>\n\n <ng-container *ngIf=\"showCaseSensitiveCheckbox()\">\n <mat-divider></mat-divider>\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"oTableOptions.filterCaseSensitive\"\n (change)=\"oTableOptions.filterCaseSensitive = $event.checked\">\n {{ 'TABLE.FILTER.CASE_SENSITIVE' | oTranslate}}\n </mat-checkbox>\n </ng-container>\n </div>\n </mat-menu>\n </mat-form-field>\n</div>\n", styles: [".o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-infix{align-self:center;padding:0;min-height:30px;display:flex}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix{padding-left:10px;padding-right:10px}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div{align-items:center;display:flex}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div .mat-icon,.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div button{margin-right:6px}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div .mat-badge-content{background-color:#3c8500;width:14px;height:14px;line-height:14px;top:-4px;right:-4px}.o-table-quickfilter-menu .checkbox-container{padding:6px 12px}.o-table-quickfilter-menu .checkbox-container .mat-divider{margin:8px 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i11.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "pipe", type: i12.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
191
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableQuickfilterComponent, decorators: [{
192
192
  type: Component,
193
193
  args: [{ selector: 'o-table-quickfilter', inputs: DEFAULT_INPUTS_O_TABLE_QUICKFILTER, outputs: DEFAULT_OUTPUTS_O_TABLE_QUICKFILTER, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
194
194
  '[class.o-table-quickfilter]': 'true',
195
- }, template: "<div class=\"quickFilter\" fxLayout=\"row\">\n\n <mat-form-field appearance=\"outline\">\n <input matInput #filter [formControl]=\"formControl\" (click)=\"$event.stopPropagation()\" placeholder=\"{{ placeholder | oTranslate }}\">\n <div matPrefix>\n <mat-icon svgIcon=\"ontimize:search\" [matBadge]=\"areAllColumnsChecked()?'':getCountColumnsChecked()\" matBadgeSize=\"small\"></mat-icon>\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (click)=\"$event.stopPropagation()\">\n <mat-icon class=\"search-icon\">expand_more</mat-icon>\n </button>\n </div>\n\n <mat-menu #menu=\"matMenu\" class=\"o-table-quickfilter-menu\">\n <div fxLayout=\"column\" class=\"checkbox-container\">\n\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"areAllColumnsChecked()\" (change)=\"onSelectAllChange($event)\">\n {{ 'SELECT_ALL' | oTranslate}}\n </mat-checkbox>\n <mat-divider></mat-divider>\n\n <ng-container *ngFor=\"let column of quickFilterColumns\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"isChecked(column)\" (change)=\"onCheckboxChange(column, $event)\">\n {{ column.title | oTranslate }}\n </mat-checkbox>\n </ng-container>\n\n <ng-container *ngIf=\"showCaseSensitiveCheckbox()\">\n <mat-divider></mat-divider>\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"oTableOptions.filterCaseSensitive\"\n (change)=\"oTableOptions.filterCaseSensitive = $event.checked\">\n {{ 'TABLE.FILTER.CASE_SENSITIVE' | oTranslate}}\n </mat-checkbox>\n </ng-container>\n </div>\n </mat-menu>\n </mat-form-field>\n</div>\n", styles: [".o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-infix{align-self:center;padding:0;min-height:30px;display:flex}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix{padding-left:10px;padding-right:10px}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div{align-items:center;display:flex}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div .mat-icon,.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div button{margin-right:6px}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div .mat-badge-content{background-color:#3c8500;width:14px;height:14px;line-height:14px;top:-4px;right:-4px}.o-table-quickfilter-menu .checkbox-container{padding:6px 12px}.o-table-quickfilter-menu .checkbox-container .mat-divider{margin:8px 0}\n"] }]
195
+ }, template: "<div class=\"quickFilter\" fxLayout=\"row\">\n\n <mat-form-field appearance=\"outline\">\n <input matInput #filter [formControl]=\"formControl\" (click)=\"$event.stopPropagation()\" placeholder=\"{{ placeholder | oTranslate }}\">\n <div matPrefix>\n <mat-icon svgIcon=\"ontimize:search\" [matBadge]=\"areAllColumnsChecked()?'':getCountColumnsChecked()\" matBadgeSize=\"small\"></mat-icon>\n <button type=\"button\" mat-icon-button [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (click)=\"$event.stopPropagation()\">\n <mat-icon class=\"search-icon\">expand_more</mat-icon>\n </button>\n </div>\n\n <mat-menu #menu=\"matMenu\" class=\"o-table-quickfilter-menu\">\n <div fxLayout=\"column\" class=\"checkbox-container\">\n\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"areAllColumnsChecked()\" (change)=\"onSelectAllChange($event)\">\n {{ 'SELECT_ALL' | oTranslate}}\n </mat-checkbox>\n <mat-divider></mat-divider>\n\n <ng-container *ngFor=\"let column of quickFilterColumns\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"isChecked(column)\" (change)=\"onCheckboxChange(column, $event)\">\n {{ column.title | oTranslate }}\n </mat-checkbox>\n </ng-container>\n\n <ng-container *ngIf=\"showCaseSensitiveCheckbox()\">\n <mat-divider></mat-divider>\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"oTableOptions.filterCaseSensitive\"\n (change)=\"oTableOptions.filterCaseSensitive = $event.checked\">\n {{ 'TABLE.FILTER.CASE_SENSITIVE' | oTranslate}}\n </mat-checkbox>\n </ng-container>\n </div>\n </mat-menu>\n </mat-form-field>\n</div>\n", styles: [".o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-infix{align-self:center;padding:0;min-height:30px;display:flex}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix{padding-left:10px;padding-right:10px}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div{align-items:center;display:flex}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div .mat-icon,.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div button{margin-right:6px}.o-table-quickfilter .quickFilter .mat-mdc-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix div .mat-badge-content{background-color:#3c8500;width:14px;height:14px;line-height:14px;top:-4px;right:-4px}.o-table-quickfilter-menu .checkbox-container{padding:6px 12px}.o-table-quickfilter-menu .checkbox-container .mat-divider{margin:8px 0}\n"] }]
196
196
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i13.OTableBase, decorators: [{
197
197
  type: Inject,
198
198
  args: [forwardRef(() => OTableBase)]
@@ -203,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
203
203
  type: ViewChild,
204
204
  args: ['menu', { static: true }]
205
205
  }] } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1xdWlja2ZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1xdWlja2ZpbHRlci9vLXRhYmxlLXF1aWNrZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLXF1aWNrZmlsdGVyL28tdGFibGUtcXVpY2tmaWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFHUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFLcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7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QUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQy9GLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7Z0JBQ3JELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEQ7WUFFRCxPQUFPLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUhBaE5VLDBCQUEwQixvRUE4QjNCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7MkdBOUIzQiwwQkFBMEIsdVlDbER2QywrdURBb0NBOzJGRGNhLDBCQUEwQjtrQkFadEMsU0FBUzsrQkFDRSxxQkFBcUIsVUFHdkIsa0NBQWtDLFdBQ2pDLG1DQUFtQyxpQkFDN0IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSiw2QkFBNkIsRUFBRSxNQUFNO3FCQUN0Qzs7MEJBZ0NFLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQzs0Q0FmL0IsTUFBTTtzQkFEWixTQUFTO3VCQUFDLFFBQVE7Z0JBSVosT0FBTztzQkFEYixTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRNZW51IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgT19JTlBVVFNfT1BUSU9OUyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbmZpZy9hcHAtY29uZmlnJztcbmltcG9ydCB0eXBlIHsgT1RhYmxlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IE9UYWJsZVF1aWNrZmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLXF1aWNrZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IEV4cHJlc3Npb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9leHByZXNzaW9uLnR5cGUnO1xuaW1wb3J0IHR5cGUgeyBPSW5wdXRzT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL28taW5wdXRzLW9wdGlvbnMudHlwZSc7XG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2ZpbHRlci1leHByZXNzaW9uLnV0aWxzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vY29sdW1uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9vLXRhYmxlLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9RVUlDS0ZJTFRFUiA9IFtcbiAgJ3BsYWNlaG9sZGVyJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX1FVSUNLRklMVEVSID0gW1xuICAnb25DaGFuZ2UnXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLXF1aWNrZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtcXVpY2tmaWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLXF1aWNrZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9RVUlDS0ZJTFRFUixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfUVVJQ0tGSUxURVIsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRhYmxlLXF1aWNrZmlsdGVyXSc6ICd0cnVlJyxcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVRdWlja2ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9UYWJsZVF1aWNrZmlsdGVyLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdmaWx0ZXInKVxuICBwdWJsaWMgZmlsdGVyOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgbWF0TWVudTogTWF0TWVudTtcblxuICBwdWJsaWMgdmFsdWU6IHN0cmluZztcbiAgcHVibGljIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBmb3JtQ29udHJvbDtcblxuICBwcm90ZWN0ZWQgb0lucHV0c09wdGlvbnM6IE9JbnB1dHNPcHRpb25zO1xuICBwcm90ZWN0ZWQgcXVpY2tGaWx0ZXJPYnNlcnZhYmxlOiBTdWJzY3JpcHRpb247XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVCYXNlKSkgcHJvdGVjdGVkIHRhYmxlOiBPVGFibGVCYXNlXG4gICkge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZS5yZWdpc3RlclF1aWNrRmlsdGVyKHRoaXMpO1xuICAgIC8vIHdvcmthcm91bmQgYmVjYXVzZSAneC1wb3NpdGlvbj1cImJlZm9yZVwiJyB3YXMgbm90IHdvcmtpbmcgaW4gdGhlIHRlbXBsYXRlXG4gICAgdGhpcy5tYXRNZW51LnhQb3NpdGlvbiA9ICdiZWZvcmUnO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVFdmVudEZpbHRlcigpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub0lucHV0c09wdGlvbnMgPSB0aGlzLmluamVjdG9yLmdldChPX0lOUFVUU19PUFRJT05TKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLm9JbnB1dHNPcHRpb25zID0ge307XG4gICAgfVxuICAgIFV0aWwucGFyc2VPSW5wdXRzT3B0aW9ucyh0aGlzLmVsUmVmLCB0aGlzLm9JbnB1dHNPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5xdWlja0ZpbHRlck9ic2VydmFibGUpIHtcbiAgICAgIHRoaXMucXVpY2tGaWx0ZXJPYnNlcnZhYmxlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9UYWJsZU9wdGlvbnMoKTogT1RhYmxlT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUub1RhYmxlT3B0aW9ucztcbiAgfVxuXG4gIGdldCBxdWlja0ZpbHRlckNvbHVtbnMoKTogT0NvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKG9Db2wgPT4ge1xuICAgICAgLy8gQ0hFQ0s6IFdoeSBjb2x1bW5zIHdpdGggcmVuZGVyZXJzIGFyZSBub3QgZmlsdGVyZWQ/XG4gICAgICAvLyByZXR1cm4gb0NvbC5zZWFyY2hhYmxlICYmIG9Db2wudmlzaWJsZSAmJiAhVXRpbC5pc0RlZmluZWQob0NvbC5yZW5kZXJlcik7XG4gICAgICByZXR1cm4gb0NvbC5zZWFyY2hhYmxlICYmIG9Db2wudmlzaWJsZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJFeHByZXNzaW9uKCk6IEV4cHJlc3Npb24ge1xuICAgIGxldCByZXN1bHQ6IEV4cHJlc3Npb24gPSB0aGlzLmdldFVzZXJGaWx0ZXIoKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHJlc3VsdCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBleHByZXNzaW9uczogRXhwcmVzc2lvbltdID0gW107XG5cbiAgICAgIGNvbnN0IHNlYXJjaGluZ0NvbHMgPSB0aGlzLm9UYWJsZU9wdGlvbnMuY29sdW1ucy5maWx0ZXIob0NvbCA9PiBvQ29sLnNlYXJjaGluZyAmJiBvQ29sLnZpc2libGUgJiYgb0NvbC5zZWFyY2hhYmxlICYmIHRoaXMuaXNGaWx0ZXJhYmxlQ29sdW1uKG9Db2wpKTtcbiAgICAgIGV4cHJlc3Npb25zLnB1c2goLi4udGhpcy5nZXRDb2x1bW5zV2l0aG91dFJlbmRlcmVyRXhwcmVzc2lvbnMoc2VhcmNoaW5nQ29scykpO1xuXG4gICAgICBjb25zdCByZW5kZXJlcnNFeHByID0gdGhpcy5nZXRDb2x1bW5zUmVuZGVyZXJFeHByZXNzaW9ucyhzZWFyY2hpbmdDb2xzKTtcblxuICAgICAgY29uc3Qgbm90TnVsbEV4cHJlc3Npb25zID0gcmVuZGVyZXJzRXhwci5maWx0ZXIoZXhwciA9PiBVdGlsLmlzRGVmaW5lZChleHByKSk7XG4gICAgICBpZiAoZXhwcmVzc2lvbnMubGVuZ3RoID09PSAwICYmIG5vdE51bGxFeHByZXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gQWxsIGZpbHRlcnMgaW4gdGhlIHJlbmRlcmVyIGFyZSBlbXB0eSBhbmQgdGhlcmUgYXJlIG5vIG90aGVyIGZpbHRlcnMgY29uZmlndXJlZCxcbiAgICAgICAgLy8gc28gd2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIHRhYmxlIHNob3VsZCBub3QgaGF2ZSBhbnkgaW5mb3JtYXRpb24gYnV0XG4gICAgICAgIC8vIGl0IHdvdWxkIG1ha2UgYSBxdWVyeSB3aXRoIGVtcHR5IGZpbHRlcnMgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIGNvbmZpZ3VyZWQgcXVpY2tmaWx0ZXIgdmFsdWUsXG4gICAgICAgIC8vIHNvIHdlIGZvcmNlIHRvIHN0b3AgdGhlIHF1ZXJ5IGFuZCBzZXQgYW4gZW1wdHkgYXJyYXkgb24gdGhlIHRhYmxlXG4gICAgICAgIHRoaXMudGFibGUuYWJvcnRRdWVyeS5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgICAgZXhwcmVzc2lvbnMucHVzaCguLi5ub3ROdWxsRXhwcmVzc2lvbnMpO1xuXG4gICAgICBpZiAoZXhwcmVzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHQgPSBleHByZXNzaW9ucy5yZWR1Y2UoKGEsIGIpID0+IEZpbHRlckV4cHJlc3Npb25VdGlscy5idWlsZENvbXBsZXhFeHByZXNzaW9uKGEsIGIsIEZpbHRlckV4cHJlc3Npb25VdGlscy5PUF9PUikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJGaWx0ZXIoKTogRXhwcmVzc2lvbiB7XG4gICAgbGV0IHJlc3VsdDogRXhwcmVzc2lvbjtcbiAgICBpZiAodGhpcy50YWJsZS5xdWlja0ZpbHRlckNhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIGNvbnN0IHVzZXJGaWx0ZXIgPSB0aGlzLnRhYmxlLnF1aWNrRmlsdGVyQ2FsbGJhY2sodGhpcy52YWx1ZSk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQodXNlckZpbHRlcikgJiYgRmlsdGVyRXhwcmVzc2lvblV0aWxzLmluc3RhbmNlb2ZFeHByZXNzaW9uKHVzZXJGaWx0ZXIpKSB7XG4gICAgICAgIHJlc3VsdCA9ICh1c2VyRmlsdGVyIGFzIEV4cHJlc3Npb24pO1xuICAgICAgfSBlbHNlIGlmIChVdGlsLmlzRGVmaW5lZCh1c2VyRmlsdGVyKSkge1xuICAgICAgICByZXN1bHQgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uRnJvbU9iamVjdCh1c2VyRmlsdGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplRXZlbnRGaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsdGVyICYmICF0aGlzLnF1aWNrRmlsdGVyT2JzZXJ2YWJsZSkge1xuICAgICAgdGhpcy5xdWlja0ZpbHRlck9ic2VydmFibGUgPSBmcm9tRXZlbnQodGhpcy5maWx0ZXIubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDE1MCkpXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbHRlclZhbCA9IHRoaXMuZmlsdGVyLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgaWYgKCF0aGlzLnRhYmxlLmRhdGFTb3VyY2UgfHwgdGhpcy52YWx1ZSA9PT0gZmlsdGVyVmFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoZmlsdGVyVmFsKTtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBpZiBleGlzdHMgZmlsdGVyIHZhbHVlIGluIHN0b3JhZ2UgdGhlbiBmaWx0ZXIgcmVzdWx0IHRhYmxlXG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMudmFsdWUgfHwgdGhpcy5maWx0ZXIubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZmlsdGVyVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogYW55LCB0cmlnZ2VyOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIGlmICh0cmlnZ2VyICYmIHRoaXMudGFibGUgJiYgIXRoaXMudGFibGUucGFnZWFibGUgJiYgdGhpcy50YWJsZS5kYXRhU291cmNlKSB7XG4gICAgICB0aGlzLnRhYmxlLmRhdGFTb3VyY2UucXVpY2tGaWx0ZXIgPSB0aGlzLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk1lbnVDbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGVja2VkKGNvbHVtbjogT0NvbHVtbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2x1bW4uc2VhcmNoaW5nO1xuICB9XG5cbiAgcHVibGljIG9uQ2hlY2tib3hDaGFuZ2UoY29sdW1uOiBPQ29sdW1uLCBldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICBjb2x1bW4uc2VhcmNoaW5nID0gZXZlbnQuY2hlY2tlZDtcbiAgfVxuXG4gIHB1YmxpYyBzaG93Q2FzZVNlbnNpdGl2ZUNoZWNrYm94KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLnNob3dDYXNlU2Vuc2l0aXZlQ2hlY2tib3goKTtcbiAgfVxuXG4gIHB1YmxpYyBhcmVBbGxDb2x1bW5zQ2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMuZXZlcnkoKGNvbDogT0NvbHVtbikgPT4gY29sLnNlYXJjaGluZyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRDb2x1bW5zQ2hlY2tlZCgpOiBudW1iZXIge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMuZm9yRWFjaCgoY29sOiBPQ29sdW1uKSA9PiB7XG4gICAgICBpZiAoY29sLnNlYXJjaGluZykge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdEFsbENoYW5nZShldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucy5mb3JFYWNoKChjb2w6IE9Db2x1bW4pID0+IGNvbC5zZWFyY2hpbmcgPSBldmVudC5jaGVja2VkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0ZpbHRlcmFibGVDb2x1bW4oY29sdW1uOiBPQ29sdW1uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFjb2x1bW4ucmVuZGVyZXIgfHwgKFxuICAgICAgY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ3RyYW5zbGF0ZScgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAnaW50ZWdlcicgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAncmVhbCcgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAncGVyY2VudGFnZScgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ3NlcnZpY2UnXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5zV2l0aG91dFJlbmRlcmVyRXhwcmVzc2lvbnMoY29sdW1uczogT0NvbHVtbltdKTogRXhwcmVzc2lvbltdIHtcbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcihvQ29sID0+ICFVdGlsLmlzRGVmaW5lZChvQ29sLnJlbmRlcmVyKSlcbiAgICAgIC5tYXAob0NvbCA9PiB7XG4gICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChvQ29sLmZpbHRlckV4cHJlc3Npb25GdW5jdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gb0NvbC5maWx0ZXJFeHByZXNzaW9uRnVuY3Rpb24ob0NvbC5hdHRyLCB0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBEZWZhdWx0IGJlaGF2aW91clxuICAgICAgICAgIHJldHVybiBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uTGlrZShvQ29sLmF0dHIsIHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5zUmVuZGVyZXJFeHByZXNzaW9ucyhjb2x1bW5zOiBPQ29sdW1uW10pIHtcbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcihvQ29sID0+IFV0aWwuaXNEZWZpbmVkKG9Db2wucmVuZGVyZXIpICYmICFVdGlsLmlzRGVmaW5lZChvQ29sLmZpbHRlckV4cHJlc3Npb25GdW5jdGlvbikpXG4gICAgICAubWFwKG9Db2wgPT4ge1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQob0NvbC5yZW5kZXJlci5nZXRGaWx0ZXJFeHByZXNzaW9uKSkge1xuICAgICAgICAgIHJldHVybiBvQ29sLnJlbmRlcmVyLmdldEZpbHRlckV4cHJlc3Npb24odGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXJcbiAgICAgICAgcmV0dXJuIEZpbHRlckV4cHJlc3Npb25VdGlscy5idWlsZEV4cHJlc3Npb25MaWtlKG9Db2wuYXR0ciwgdGhpcy52YWx1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicXVpY2tGaWx0ZXJcIiBmeExheW91dD1cInJvd1wiPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgIDxpbnB1dCBtYXRJbnB1dCAjZmlsdGVyIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpzZWFyY2hcIiBbbWF0QmFkZ2VdPVwiYXJlQWxsQ29sdW1uc0NoZWNrZWQoKT8nJzpnZXRDb3VudENvbHVtbnNDaGVja2VkKClcIiBtYXRCYWRnZVNpemU9XCJzbWFsbFwiPjwvbWF0LWljb24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIChtZW51Q2xvc2VkKT1cIm9uTWVudUNsb3NlZCgpXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzZWFyY2gtaWNvblwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwiby10YWJsZS1xdWlja2ZpbHRlci1tZW51XCI+XG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJjaGVja2JveC1jb250YWluZXJcIj5cblxuICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBbY2hlY2tlZF09XCJhcmVBbGxDb2x1bW5zQ2hlY2tlZCgpXCIgKGNoYW5nZSk9XCJvblNlbGVjdEFsbENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAge3sgJ1NFTEVDVF9BTEwnIHwgb1RyYW5zbGF0ZX19XG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgcXVpY2tGaWx0ZXJDb2x1bW5zXCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2NoZWNrZWRdPVwiaXNDaGVja2VkKGNvbHVtbilcIiAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoY29sdW1uLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICB7eyBjb2x1bW4udGl0bGUgfCBvVHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Q2FzZVNlbnNpdGl2ZUNoZWNrYm94KClcIj5cbiAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBbY2hlY2tlZF09XCJvVGFibGVPcHRpb25zLmZpbHRlckNhc2VTZW5zaXRpdmVcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvVGFibGVPcHRpb25zLmZpbHRlckNhc2VTZW5zaXRpdmUgPSAkZXZlbnQuY2hlY2tlZFwiPlxuICAgICAgICAgICAge3sgJ1RBQkxFLkZJTFRFUi5DQVNFX1NFTlNJVElWRScgfCBvVHJhbnNsYXRlfX1cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1tZW51PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1xdWlja2ZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1xdWlja2ZpbHRlci9vLXRhYmxlLXF1aWNrZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLXF1aWNrZmlsdGVyL28tdGFibGUtcXVpY2tmaWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFHUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFLcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7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QUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQy9GLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7Z0JBQ3JELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEQ7WUFFRCxPQUFPLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUhBaE5VLDBCQUEwQixvRUE4QjNCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7MkdBOUIzQiwwQkFBMEIsdVlDbER2QywrdkRBb0NBOzJGRGNhLDBCQUEwQjtrQkFadEMsU0FBUzsrQkFDRSxxQkFBcUIsVUFHdkIsa0NBQWtDLFdBQ2pDLG1DQUFtQyxpQkFDN0IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSiw2QkFBNkIsRUFBRSxNQUFNO3FCQUN0Qzs7MEJBZ0NFLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQzs0Q0FmL0IsTUFBTTtzQkFEWixTQUFTO3VCQUFDLFFBQVE7Z0JBSVosT0FBTztzQkFEYixTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRNZW51IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgT19JTlBVVFNfT1BUSU9OUyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbmZpZy9hcHAtY29uZmlnJztcbmltcG9ydCB0eXBlIHsgT1RhYmxlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IE9UYWJsZVF1aWNrZmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLXF1aWNrZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IEV4cHJlc3Npb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9leHByZXNzaW9uLnR5cGUnO1xuaW1wb3J0IHR5cGUgeyBPSW5wdXRzT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL28taW5wdXRzLW9wdGlvbnMudHlwZSc7XG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2ZpbHRlci1leHByZXNzaW9uLnV0aWxzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vY29sdW1uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9vLXRhYmxlLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9RVUlDS0ZJTFRFUiA9IFtcbiAgJ3BsYWNlaG9sZGVyJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX1FVSUNLRklMVEVSID0gW1xuICAnb25DaGFuZ2UnXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLXF1aWNrZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtcXVpY2tmaWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLXF1aWNrZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9RVUlDS0ZJTFRFUixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfUVVJQ0tGSUxURVIsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRhYmxlLXF1aWNrZmlsdGVyXSc6ICd0cnVlJyxcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVRdWlja2ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9UYWJsZVF1aWNrZmlsdGVyLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdmaWx0ZXInKVxuICBwdWJsaWMgZmlsdGVyOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgbWF0TWVudTogTWF0TWVudTtcblxuICBwdWJsaWMgdmFsdWU6IHN0cmluZztcbiAgcHVibGljIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBmb3JtQ29udHJvbDtcblxuICBwcm90ZWN0ZWQgb0lucHV0c09wdGlvbnM6IE9JbnB1dHNPcHRpb25zO1xuICBwcm90ZWN0ZWQgcXVpY2tGaWx0ZXJPYnNlcnZhYmxlOiBTdWJzY3JpcHRpb247XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVCYXNlKSkgcHJvdGVjdGVkIHRhYmxlOiBPVGFibGVCYXNlXG4gICkge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZS5yZWdpc3RlclF1aWNrRmlsdGVyKHRoaXMpO1xuICAgIC8vIHdvcmthcm91bmQgYmVjYXVzZSAneC1wb3NpdGlvbj1cImJlZm9yZVwiJyB3YXMgbm90IHdvcmtpbmcgaW4gdGhlIHRlbXBsYXRlXG4gICAgdGhpcy5tYXRNZW51LnhQb3NpdGlvbiA9ICdiZWZvcmUnO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVFdmVudEZpbHRlcigpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub0lucHV0c09wdGlvbnMgPSB0aGlzLmluamVjdG9yLmdldChPX0lOUFVUU19PUFRJT05TKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLm9JbnB1dHNPcHRpb25zID0ge307XG4gICAgfVxuICAgIFV0aWwucGFyc2VPSW5wdXRzT3B0aW9ucyh0aGlzLmVsUmVmLCB0aGlzLm9JbnB1dHNPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5xdWlja0ZpbHRlck9ic2VydmFibGUpIHtcbiAgICAgIHRoaXMucXVpY2tGaWx0ZXJPYnNlcnZhYmxlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9UYWJsZU9wdGlvbnMoKTogT1RhYmxlT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUub1RhYmxlT3B0aW9ucztcbiAgfVxuXG4gIGdldCBxdWlja0ZpbHRlckNvbHVtbnMoKTogT0NvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKG9Db2wgPT4ge1xuICAgICAgLy8gQ0hFQ0s6IFdoeSBjb2x1bW5zIHdpdGggcmVuZGVyZXJzIGFyZSBub3QgZmlsdGVyZWQ/XG4gICAgICAvLyByZXR1cm4gb0NvbC5zZWFyY2hhYmxlICYmIG9Db2wudmlzaWJsZSAmJiAhVXRpbC5pc0RlZmluZWQob0NvbC5yZW5kZXJlcik7XG4gICAgICByZXR1cm4gb0NvbC5zZWFyY2hhYmxlICYmIG9Db2wudmlzaWJsZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJFeHByZXNzaW9uKCk6IEV4cHJlc3Npb24ge1xuICAgIGxldCByZXN1bHQ6IEV4cHJlc3Npb24gPSB0aGlzLmdldFVzZXJGaWx0ZXIoKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHJlc3VsdCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBleHByZXNzaW9uczogRXhwcmVzc2lvbltdID0gW107XG5cbiAgICAgIGNvbnN0IHNlYXJjaGluZ0NvbHMgPSB0aGlzLm9UYWJsZU9wdGlvbnMuY29sdW1ucy5maWx0ZXIob0NvbCA9PiBvQ29sLnNlYXJjaGluZyAmJiBvQ29sLnZpc2libGUgJiYgb0NvbC5zZWFyY2hhYmxlICYmIHRoaXMuaXNGaWx0ZXJhYmxlQ29sdW1uKG9Db2wpKTtcbiAgICAgIGV4cHJlc3Npb25zLnB1c2goLi4udGhpcy5nZXRDb2x1bW5zV2l0aG91dFJlbmRlcmVyRXhwcmVzc2lvbnMoc2VhcmNoaW5nQ29scykpO1xuXG4gICAgICBjb25zdCByZW5kZXJlcnNFeHByID0gdGhpcy5nZXRDb2x1bW5zUmVuZGVyZXJFeHByZXNzaW9ucyhzZWFyY2hpbmdDb2xzKTtcblxuICAgICAgY29uc3Qgbm90TnVsbEV4cHJlc3Npb25zID0gcmVuZGVyZXJzRXhwci5maWx0ZXIoZXhwciA9PiBVdGlsLmlzRGVmaW5lZChleHByKSk7XG4gICAgICBpZiAoZXhwcmVzc2lvbnMubGVuZ3RoID09PSAwICYmIG5vdE51bGxFeHByZXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gQWxsIGZpbHRlcnMgaW4gdGhlIHJlbmRlcmVyIGFyZSBlbXB0eSBhbmQgdGhlcmUgYXJlIG5vIG90aGVyIGZpbHRlcnMgY29uZmlndXJlZCxcbiAgICAgICAgLy8gc28gd2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIHRhYmxlIHNob3VsZCBub3QgaGF2ZSBhbnkgaW5mb3JtYXRpb24gYnV0XG4gICAgICAgIC8vIGl0IHdvdWxkIG1ha2UgYSBxdWVyeSB3aXRoIGVtcHR5IGZpbHRlcnMgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIGNvbmZpZ3VyZWQgcXVpY2tmaWx0ZXIgdmFsdWUsXG4gICAgICAgIC8vIHNvIHdlIGZvcmNlIHRvIHN0b3AgdGhlIHF1ZXJ5IGFuZCBzZXQgYW4gZW1wdHkgYXJyYXkgb24gdGhlIHRhYmxlXG4gICAgICAgIHRoaXMudGFibGUuYWJvcnRRdWVyeS5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgICAgZXhwcmVzc2lvbnMucHVzaCguLi5ub3ROdWxsRXhwcmVzc2lvbnMpO1xuXG4gICAgICBpZiAoZXhwcmVzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHQgPSBleHByZXNzaW9ucy5yZWR1Y2UoKGEsIGIpID0+IEZpbHRlckV4cHJlc3Npb25VdGlscy5idWlsZENvbXBsZXhFeHByZXNzaW9uKGEsIGIsIEZpbHRlckV4cHJlc3Npb25VdGlscy5PUF9PUikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJGaWx0ZXIoKTogRXhwcmVzc2lvbiB7XG4gICAgbGV0IHJlc3VsdDogRXhwcmVzc2lvbjtcbiAgICBpZiAodGhpcy50YWJsZS5xdWlja0ZpbHRlckNhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIGNvbnN0IHVzZXJGaWx0ZXIgPSB0aGlzLnRhYmxlLnF1aWNrRmlsdGVyQ2FsbGJhY2sodGhpcy52YWx1ZSk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQodXNlckZpbHRlcikgJiYgRmlsdGVyRXhwcmVzc2lvblV0aWxzLmluc3RhbmNlb2ZFeHByZXNzaW9uKHVzZXJGaWx0ZXIpKSB7XG4gICAgICAgIHJlc3VsdCA9ICh1c2VyRmlsdGVyIGFzIEV4cHJlc3Npb24pO1xuICAgICAgfSBlbHNlIGlmIChVdGlsLmlzRGVmaW5lZCh1c2VyRmlsdGVyKSkge1xuICAgICAgICByZXN1bHQgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uRnJvbU9iamVjdCh1c2VyRmlsdGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplRXZlbnRGaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsdGVyICYmICF0aGlzLnF1aWNrRmlsdGVyT2JzZXJ2YWJsZSkge1xuICAgICAgdGhpcy5xdWlja0ZpbHRlck9ic2VydmFibGUgPSBmcm9tRXZlbnQodGhpcy5maWx0ZXIubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDE1MCkpXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbHRlclZhbCA9IHRoaXMuZmlsdGVyLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgaWYgKCF0aGlzLnRhYmxlLmRhdGFTb3VyY2UgfHwgdGhpcy52YWx1ZSA9PT0gZmlsdGVyVmFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoZmlsdGVyVmFsKTtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBpZiBleGlzdHMgZmlsdGVyIHZhbHVlIGluIHN0b3JhZ2UgdGhlbiBmaWx0ZXIgcmVzdWx0IHRhYmxlXG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMudmFsdWUgfHwgdGhpcy5maWx0ZXIubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZmlsdGVyVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogYW55LCB0cmlnZ2VyOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIGlmICh0cmlnZ2VyICYmIHRoaXMudGFibGUgJiYgIXRoaXMudGFibGUucGFnZWFibGUgJiYgdGhpcy50YWJsZS5kYXRhU291cmNlKSB7XG4gICAgICB0aGlzLnRhYmxlLmRhdGFTb3VyY2UucXVpY2tGaWx0ZXIgPSB0aGlzLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk1lbnVDbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGVja2VkKGNvbHVtbjogT0NvbHVtbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2x1bW4uc2VhcmNoaW5nO1xuICB9XG5cbiAgcHVibGljIG9uQ2hlY2tib3hDaGFuZ2UoY29sdW1uOiBPQ29sdW1uLCBldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICBjb2x1bW4uc2VhcmNoaW5nID0gZXZlbnQuY2hlY2tlZDtcbiAgfVxuXG4gIHB1YmxpYyBzaG93Q2FzZVNlbnNpdGl2ZUNoZWNrYm94KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLnNob3dDYXNlU2Vuc2l0aXZlQ2hlY2tib3goKTtcbiAgfVxuXG4gIHB1YmxpYyBhcmVBbGxDb2x1bW5zQ2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMuZXZlcnkoKGNvbDogT0NvbHVtbikgPT4gY29sLnNlYXJjaGluZyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRDb2x1bW5zQ2hlY2tlZCgpOiBudW1iZXIge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMuZm9yRWFjaCgoY29sOiBPQ29sdW1uKSA9PiB7XG4gICAgICBpZiAoY29sLnNlYXJjaGluZykge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdEFsbENoYW5nZShldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucy5mb3JFYWNoKChjb2w6IE9Db2x1bW4pID0+IGNvbC5zZWFyY2hpbmcgPSBldmVudC5jaGVja2VkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0ZpbHRlcmFibGVDb2x1bW4oY29sdW1uOiBPQ29sdW1uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFjb2x1bW4ucmVuZGVyZXIgfHwgKFxuICAgICAgY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ3RyYW5zbGF0ZScgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAnaW50ZWdlcicgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAncmVhbCcgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAncGVyY2VudGFnZScgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ3NlcnZpY2UnXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5zV2l0aG91dFJlbmRlcmVyRXhwcmVzc2lvbnMoY29sdW1uczogT0NvbHVtbltdKTogRXhwcmVzc2lvbltdIHtcbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcihvQ29sID0+ICFVdGlsLmlzRGVmaW5lZChvQ29sLnJlbmRlcmVyKSlcbiAgICAgIC5tYXAob0NvbCA9PiB7XG4gICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChvQ29sLmZpbHRlckV4cHJlc3Npb25GdW5jdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gb0NvbC5maWx0ZXJFeHByZXNzaW9uRnVuY3Rpb24ob0NvbC5hdHRyLCB0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBEZWZhdWx0IGJlaGF2aW91clxuICAgICAgICAgIHJldHVybiBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uTGlrZShvQ29sLmF0dHIsIHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5zUmVuZGVyZXJFeHByZXNzaW9ucyhjb2x1bW5zOiBPQ29sdW1uW10pIHtcbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcihvQ29sID0+IFV0aWwuaXNEZWZpbmVkKG9Db2wucmVuZGVyZXIpICYmICFVdGlsLmlzRGVmaW5lZChvQ29sLmZpbHRlckV4cHJlc3Npb25GdW5jdGlvbikpXG4gICAgICAubWFwKG9Db2wgPT4ge1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQob0NvbC5yZW5kZXJlci5nZXRGaWx0ZXJFeHByZXNzaW9uKSkge1xuICAgICAgICAgIHJldHVybiBvQ29sLnJlbmRlcmVyLmdldEZpbHRlckV4cHJlc3Npb24odGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXJcbiAgICAgICAgcmV0dXJuIEZpbHRlckV4cHJlc3Npb25VdGlscy5idWlsZEV4cHJlc3Npb25MaWtlKG9Db2wuYXR0ciwgdGhpcy52YWx1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicXVpY2tGaWx0ZXJcIiBmeExheW91dD1cInJvd1wiPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgIDxpbnB1dCBtYXRJbnB1dCAjZmlsdGVyIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpzZWFyY2hcIiBbbWF0QmFkZ2VdPVwiYXJlQWxsQ29sdW1uc0NoZWNrZWQoKT8nJzpnZXRDb3VudENvbHVtbnNDaGVja2VkKClcIiBtYXRCYWRnZVNpemU9XCJzbWFsbFwiPjwvbWF0LWljb24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiAobWVudUNsb3NlZCk9XCJvbk1lbnVDbG9zZWQoKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2VhcmNoLWljb25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm8tdGFibGUtcXVpY2tmaWx0ZXItbWVudVwiPlxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG5cbiAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2NoZWNrZWRdPVwiYXJlQWxsQ29sdW1uc0NoZWNrZWQoKVwiIChjaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgIHt7ICdTRUxFQ1RfQUxMJyB8IG9UcmFuc2xhdGV9fVxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHF1aWNrRmlsdGVyQ29sdW1uc1wiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFtjaGVja2VkXT1cImlzQ2hlY2tlZChjb2x1bW4pXCIgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKGNvbHVtbiwgJGV2ZW50KVwiPlxuICAgICAgICAgICAge3sgY29sdW1uLnRpdGxlIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Nhc2VTZW5zaXRpdmVDaGVja2JveCgpXCI+XG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2NoZWNrZWRdPVwib1RhYmxlT3B0aW9ucy5maWx0ZXJDYXNlU2Vuc2l0aXZlXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib1RhYmxlT3B0aW9ucy5maWx0ZXJDYXNlU2Vuc2l0aXZlID0gJGV2ZW50LmNoZWNrZWRcIj5cbiAgICAgICAgICAgIHt7ICdUQUJMRS5GSUxURVIuQ0FTRV9TRU5TSVRJVkUnIHwgb1RyYW5zbGF0ZX19XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtbWVudT5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuIl19